summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Build/source/texk/README4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/AUTHORS6
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog1163
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/LGPL-2.1.txt504
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/Makefile.am6
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in821
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/NEWS37
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/README19
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/config.h.in6
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/configure.ac43
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.am31
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.in567
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-man.xsl28
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-pdf.xsl88
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.158
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in93
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/doc/tweak-dblatex-pdf.xsl46
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/Makefile.am10
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/Makefile.in615
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/License.txt24
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/Makefile.am (renamed from Build/source/texk/dvisvgm/dvisvgm-src/clipper/Makefile.am)2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/Makefile.in586
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/clipper.cpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/clipper/clipper.cpp)0
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/clipper.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/clipper/clipper.hpp)38
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/LICENSE281
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/Makefile.am88
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/Makefile.in830
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/PfEd.h218
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/alphabet.c3348
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/asmfpst.c1007
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/autohint.c2708
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/char.c72
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/cjk.c15591
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/configure-fontforge.h109
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/cvundoes.c46
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/dumppfa.c131
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/edgelist.h144
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/edgelist2.h87
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/encoding.c791
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/encoding.h5
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fontforge-config.h22
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fontforge.h97
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fontforgevw.h32
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fvfonts.c253
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/gwwiconv.c797
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/libffstamp.h8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/lookups.c679
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/macbinary.c227
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/macenc.c1805
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/mathconstants.c99
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/memory.c51
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/mm.c307
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/namehash.h61
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/namelist.c19965
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/nouiutil.c161
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/nowakowskittfinstr.c5268
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/parsepfa.c583
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/parsettf.c505
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/parsettfatt.c42
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/psfont.h188
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/psread.c73
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/pua.c1612
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sd.h168
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sfd.c4669
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sfd1.c164
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sfd1.h122
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinechar.c328
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinefont.c504
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinefont.h2604
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineorder2.c1523
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineoverlap.c442
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinerefigure.c107
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinesave.c2065
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinesaveafm.c322
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineutil.c3579
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineutil2.c1518
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/start.c53
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/stemdb.c6068
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/stemdb.h214
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tables.h4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottf.c6757
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottfaat.c2526
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottfgpos.c4613
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottfvar.c820
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttf.h871
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.c473
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.h57
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfspecial.c2095
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/uiinterface.h159
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/unialt.c8937
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ustring.c225
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/utils.c85
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/utype.c24592
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/woff.c318
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/basics.h125
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/chardata.h78
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/charset.h71
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/dlist.h151
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/gimage.h204
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/gnetwork.h87
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/gwwiconv.h48
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/intl.h74
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/ustring.h212
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/utype.h155
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/LICENSE202
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/Makefile.am36
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/Makefile.in764
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/LICENSE19
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/Makefile.am57
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/Makefile.in694
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/backward_references.cc858
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/backward_references.h116
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/bit_cost.h161
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/block_splitter.cc505
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/block_splitter.h61
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/brotli_bit_stream.cc1181
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/brotli_bit_stream.h179
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/cluster.h330
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/command.h156
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment.cc701
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment.h47
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment_two_pass.cc524
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment_two_pass.h40
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compressor.h15
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/context.h178
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/dictionary.cc9466
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/dictionary.h41
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/dictionary_hash.h4117
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode.cc1175
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode.h207
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode_parallel.cc279
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode_parallel.h28
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/entropy_encode.cc480
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/entropy_encode.h104
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/entropy_encode_static.h572
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/fast_log.h139
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/find_match_length.h77
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/hash.h974
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/histogram.cc67
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/histogram.h94
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/literal_cost.cc165
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/literal_cost.h24
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/metablock.cc539
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/metablock.h80
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/port.h142
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/prefix.h79
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/ringbuffer.h145
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/static_dict.cc455
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/static_dict.h32
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/static_dict_lut.h12055
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/streams.cc114
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/streams.h121
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/transform.h248
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/types.h29
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/utf8_util.cc83
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/utf8_util.h25
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/write_bits.h84
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/buffer.h172
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/file.h42
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/font.cc396
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/font.h113
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/glyph.cc380
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/glyph.h71
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/normalize.cc322
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/normalize.h47
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/port.h63
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/round.h35
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/store_bytes.h77
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/table_tags.cc90
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/table_tags.h38
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/transform.cc420
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/transform.h34
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/variable_length.cc137
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/variable_length.h38
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_common.cc64
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_common.h72
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_dec.h42
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_enc.cc471
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_enc.h54
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_out.cc73
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_out.h114
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/Makefile.am (renamed from Build/source/texk/dvisvgm/dvisvgm-src/xxHash/Makefile.am)0
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/Makefile.in572
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.c (renamed from Build/source/texk/dvisvgm/dvisvgm-src/xxHash/xxhash.c)532
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.h (renamed from Build/source/texk/dvisvgm/dvisvgm-src/xxHash/xxhash.h)150
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/AGLTable.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/AGLTable.h)403
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.cpp62
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.h)16
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Bezier.cpp4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Bezier.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Bezier.h)12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.cpp10
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.h)24
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Bitmap.cpp23
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Bitmap.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Bitmap.h)15
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.cpp29
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.h)21
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp233
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.hpp67
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CLOption.hpp198
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CMap.cpp14
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CMap.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/CMap.h)77
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CMapManager.cpp28
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CMapManager.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/CMapManager.h)14
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CMapReader.cpp84
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CMapReader.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/CMapReader.h)12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CRC32.cpp28
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CRC32.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/CRC32.h)25
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.h)10
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.cpp4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.h)16
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Character.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Character.h)17
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CmdLineParserBase.cpp381
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CmdLineParserBase.h99
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Color.cpp126
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Color.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Color.h)30
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.cpp6
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.h)20
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.cpp410
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.h225
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.hpp145
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DLLoader.cpp4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DLLoader.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/DLLoader.h)8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DVIActions.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/DVIActions.h)13
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.cpp279
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.h)152
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.cpp152
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.h)65
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.cpp52
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.h101
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.hpp100
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DependencyGraph.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/DependencyGraph.h)10
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.cpp52
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.h)16
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp40
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.h)24
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.cpp12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.h)20
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.cpp43
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.h73
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.hpp73
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.cpp28
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.h)22
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/EncFile.cpp18
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/EncFile.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/EncFile.h)23
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp155
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.h36
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.hpp56
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.cpp61
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.h)29
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp120
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.h48
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.hpp59
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FixWord.hpp38
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Font.cpp169
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Font.h385
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Font.hpp383
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontCache.cpp99
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontCache.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/FontCache.h)25
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontEncoding.cpp20
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontEncoding.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/FontEncoding.h)21
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontEngine.cpp28
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontEngine.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/FontEngine.h)17
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp120
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.h)36
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontMap.cpp98
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontMap.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/FontMap.h)27
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontMetrics.cpp12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontMetrics.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/FontMetrics.h)50
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontStyle.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/FontStyle.h)4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontWriter.cpp258
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontWriter.hpp66
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.cpp8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.h)32
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp101
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.h)73
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.cpp12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.h)16
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.cpp14
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.h)12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Glyph.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Glyph.h)12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/GlyphTracerMessages.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/GlyphTracerMessages.h)29
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/GraphicsPath.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/GraphicsPath.h)114
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.cpp50
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.h)32
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/InputBuffer.cpp10
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/InputBuffer.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/InputBuffer.h)67
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/InputReader.cpp4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/InputReader.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/InputReader.h)28
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/JFM.cpp48
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/JFM.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/JFM.h)24
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Length.cpp98
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Length.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Length.h)30
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am274
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in942
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/MapLine.cpp10
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/MapLine.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/MapLine.h)10
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.h)12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Message.cpp27
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Message.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Message.h)22
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/MessageException.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/MessageException.h)12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.cpp58
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.h)15
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp9
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.h)8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp6
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.h)20
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/NumericRanges.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/NumericRanges.h)17
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PSFilter.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/PSFilter.h)12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp20
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.h)19
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PSPattern.cpp18
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PSPattern.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/PSPattern.h)26
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.cpp12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.h)16
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.cpp12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.h)12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PageSize.cpp15
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PageSize.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/PageSize.h)12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Pair.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Pair.h)22
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.cpp42
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.h28
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.hpp48
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.cpp57
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.h)14
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.cpp12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.h)18
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.cpp8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.h)16
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp24
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Process.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Process.h)11
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp52
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.h)112
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp32
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.h)47
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.cpp6
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.h)19
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandlerFactory.cpp12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandlerFactory.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandlerFactory.h)10
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharPathHandler.cpp16
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharPathHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharPathHandler.h)20
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharTspanTextHandler.cpp8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharTspanTextHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharTspanTextHandler.h)20
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp84
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.h)29
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGSingleCharTextHandler.cpp8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGSingleCharTextHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/SVGSingleCharTextHandler.h)12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGTree.cpp181
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SVGTree.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/SVGTree.h)43
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/ShadingPatch.cpp16
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/ShadingPatch.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/ShadingPatch.h)18
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.cpp4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.h)8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialActions.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialActions.h)62
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialHandler.h)20
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp61
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.h)12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.cpp35
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.h)25
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/StreamWriter.cpp20
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/StreamWriter.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/StreamWriter.h)19
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Subfont.cpp36
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Subfont.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Subfont.h)23
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/System.cpp5
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/System.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/System.h)8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.cpp68
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.h)49
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/TensorProductPatch.cpp4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/TensorProductPatch.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/TensorProductPatch.h)50
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Terminal.cpp4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Terminal.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Terminal.h)8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/ToUnicodeMap.cpp30
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/ToUnicodeMap.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/ToUnicodeMap.h)16
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.cpp66
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.h)22
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/TriangularPatch.cpp4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/TriangularPatch.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/TriangularPatch.h)34
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Unicode.cpp56
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Unicode.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/Unicode.h)17
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/VFActions.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/VFActions.h)19
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp76
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.h)15
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/VectorIterator.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/VectorIterator.h)10
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.h)18
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.cpp35
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.h)18
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp86
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.h)55
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/XMLString.cpp14
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/XMLString.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/XMLString.h)8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/ZLibOutputStream.hpp120
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp284
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/ffwrapper.c101
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/ffwrapper.h38
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/gzstream.cpp172
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/gzstream.h121
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/macros.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/src/macros.h)11
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/options.dtd8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml25
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/types.h84
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/utility.cpp74
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/utility.hpp66
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp28
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp.in28
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/BezierTest.cpp164
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/BitmapTest.cpp78
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/BoundingBoxTest.cpp200
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapManagerTest.cpp85
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapReaderTest.cpp121
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapTest.cpp147
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/CRC32Test.cpp79
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/CalculatorTest.cpp60
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorSpecialTest.cpp106
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorTest.cpp158
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/CommandLineTest.cpp245
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/DependencyGraphTest.cpp56
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/DirectoryTest.cpp65
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp226
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/EmSpecialTest.cpp202
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/FileFinderTest.cpp89
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/FilePathTest.cpp89
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/FileSystemTest.cpp121
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/FontManagerTest.cpp76
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/FontMapTest.cpp70
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/GFGlyphTracerTest.cpp123
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/GFReaderTest.cpp296
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/GhostscriptTest.cpp31
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/GraphicsPathTest.cpp134
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/JFMReaderTest.cpp116
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/LengthTest.cpp182
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am278
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in2102
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/MapLineTest.cpp127
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp151
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/MessageExceptionTest.cpp77
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp182
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/PageRagesTest.cpp163
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/PageSizeTest.cpp73
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/PairTest.cpp125
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/RangeMapTest.cpp165
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/SVGOutputTest.cpp120
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/ShadingPatchTest.cpp87
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/SplittedCharInputBufferTest.cpp181
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp230
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamReaderTest.cpp128
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamWriterTest.cpp106
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/SubfontTest.cpp92
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/TFMReaderTest.cpp104
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/TensorProductPatchTest.cpp334
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/ToUnicodeMapTest.cpp60
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/TriangularPatchTest.cpp199
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/UnicodeTest.cpp104
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/UtilityTest.cpp80
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorIteratorTest.cpp141
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorStreamTest.cpp63
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLNodeTest.cpp300
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLStringTest.cpp65
-rwxr-xr-xBuild/source/texk/dvisvgm/dvisvgm-src/tests/check-conv50
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am20
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in448
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cidjmgr0-h.tfmbin0 -> 2508 bytes
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.600gfbin0 -> 24244 bytes
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.tfmbin0 -> 1296 bytes
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvipdfm_test.map1010
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvips_test.map363
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-nf-cmp.svg1223
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-wf-cmp.svg348
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/ot1.cmap78
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-nf-cmp.svg204
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-wf-cmp.svg201
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample.sfd293
-rwxr-xr-xBuild/source/texk/dvisvgm/dvisvgm-src/tests/genhashcheck.py71
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/normalize.xsl135
475 files changed, 203966 insertions, 7049 deletions
diff --git a/Build/source/texk/README b/Build/source/texk/README
index 8800c85b66a..8a9b34f49fa 100644
--- a/Build/source/texk/README
+++ b/Build/source/texk/README
@@ -1,5 +1,5 @@
$Id$
-Copyright 2006-2016 TeX Users Group.
+Copyright 2006-2017 TeX Users Group.
You may freely use, modify and/or distribute this file.
This TeX Live directory contains the programs that use the kpathsea
@@ -58,7 +58,7 @@ dvipos - ?
dvipsk - maintained here, by us
-dvisvgm 1.16 - checked 04jul16
+dvisvgm 2.1 - checked 31jan17
http://dvisvgm.bplaced.net/Downloads
gregorio 4.2.0 - checked 25sep16
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/AUTHORS b/Build/source/texk/dvisvgm/dvisvgm-src/AUTHORS
index d9b6468421e..28871240af7 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/AUTHORS
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/AUTHORS
@@ -1,7 +1,3 @@
Martin Gieseking <martin.gieseking@uos.de>
- author of dvisvgm
-
-Deepak Bandyopadhyay, Lutz Kettner
- authors of gzstream library
- dvisvgm uses a slightly modified version
+ author of dvisvgm
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog b/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog
index a166d825993..45dd6abec24 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog
@@ -1,9 +1,1027 @@
+2017-01-18 Martin Gieseking <martin.gieseking@uos.de>
+
+ * NEWS:
+ updated NEWS
+
+ * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp:
+ set version to 2.1
+
+ * src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/EPSToSVG.cpp:
+ get program name and version from version.hpp, avoid using macros from
+ config.h
+
+ * src/BoundingBox.cpp, src/Color.cpp, src/DVIToSVGActions.cpp,
+ src/FilePath.cpp, src/FileSystem.cpp, src/FontWriter.cpp,
+ src/Makefile.am, src/PageSize.cpp, src/SVGOutput.cpp, src/utility.cpp,
+ src/utility.hpp, tests/Makefile.am, tests/UtilityTest.cpp:
+ moved common utility functions to separate compilation unit and
+ namespace
+
+2017-01-17 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/FontWriter.cpp, src/FontWriter.hpp:
+ print error message if FontWriter can't write temporary files
+
+ * doc/dvisvgm.txt.in, src/CommandLine.hpp, src/dvisvgm.cpp,
+ src/options.xml:
+ added option --tmpdir to select a different temp folder
+
+ * libs/ff-woff/fontforge/utils.c, src/FileSystem.cpp, src/FileSystem.hpp,
+ src/Font.cpp, src/FontWriter.cpp, src/GlyphTracerMessages.hpp,
+ src/MetafontWrapper.cpp, src/MetafontWrapper.hpp, src/Process.cpp,
+ src/Process.hpp, src/SVGOutput.cpp, src/SVGOutput.hpp:
+ create temp files in the system's temp folder rather than in cwd (closes
+ #63)
+
+2017-01-12 Martin Gieseking <martin.gieseking@uos.de>
+
+ * tests/GhostscriptTest.cpp:
+ disable GS banner in GhostscriptTest
+
+ * src/DVIToSVG.cpp, src/EPSToSVG.cpp, src/SVGTree.hpp:
+ print warning message if output file could not be written
+
+ * src/FilePath.cpp, src/FilePath.hpp, tests/FilePathTest.cpp,
+ tests/SVGOutputTest.cpp:
+ retain letter case of filenames (Windows)
+
+2017-01-10 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/PsSpecialHandler.cpp, src/dvisvgm.cpp:
+ added missing newlines in messages; fixed typo
+
+2017-01-05 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/AGLTable.hpp, src/genhashmap.cpp, src/glyphlist.txt,
+ src/glyphlist/Makefile, src/glyphlist/glyphlist-tex.txt,
+ src/glyphlist/glyphlist.dtd, src/glyphlist/glyphlist.txt,
+ src/glyphlist/glyphlist.xsl, src/glyphlist/xmlify.py:
+ updated AGL table and removed colliding codepoints (closes #64)
+
+2017-01-03 Martin Gieseking <martin.gieseking@uos.de>
+
+ * Makefile.am, README, README.md, configure.ac, doc/Makefile.am,
+ doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, doc/db2html.xsl,
+ doc/dvisvgm.txt.in, doc/tweak-db-article.xsl, doc/tweak-dblatex-pdf.xsl,
+ libs/Makefile.am, src/AGLTable.hpp, src/BasicDVIReader.cpp,
+ src/BasicDVIReader.hpp, src/Bezier.cpp, src/Bezier.hpp,
+ src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.hpp,
+ src/Bitmap.cpp, src/Bitmap.hpp, src/BoundingBox.cpp, src/BoundingBox.hpp,
+ src/CLCommandLine.cpp, src/CLCommandLine.hpp, src/CLOption.hpp,
+ src/CMap.cpp, src/CMap.hpp, src/CMapManager.cpp, src/CMapManager.hpp,
+ src/CMapReader.cpp, src/CMapReader.hpp, src/CRC32.cpp, src/CRC32.hpp,
+ src/Calculator.cpp, src/Calculator.hpp, src/CharMapID.cpp,
+ src/CharMapID.hpp, src/Character.hpp, src/Color.cpp, src/Color.hpp,
+ src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.hpp,
+ src/CommandLine.hpp, src/DLLoader.cpp, src/DLLoader.hpp,
+ src/DVIActions.hpp, src/DVIReader.cpp, src/DVIReader.hpp,
+ src/DVIToSVG.cpp, src/DVIToSVG.hpp, src/DVIToSVGActions.cpp,
+ src/DVIToSVGActions.hpp, src/DependencyGraph.hpp, src/Directory.cpp,
+ src/Directory.hpp, src/DvisvgmSpecialHandler.cpp,
+ src/DvisvgmSpecialHandler.hpp, src/EPSFile.cpp, src/EPSFile.hpp,
+ src/EPSToSVG.cpp, src/EPSToSVG.hpp, src/EmSpecialHandler.cpp,
+ src/EmSpecialHandler.hpp, src/EncFile.cpp, src/EncFile.hpp,
+ src/FileFinder.cpp, src/FileFinder.hpp, src/FilePath.cpp,
+ src/FilePath.hpp, src/FileSystem.cpp, src/FileSystem.hpp,
+ src/FixWord.hpp, src/Font.cpp, src/Font.hpp, src/FontCache.cpp,
+ src/FontCache.hpp, src/FontEncoding.cpp, src/FontEncoding.hpp,
+ src/FontEngine.cpp, src/FontEngine.hpp, src/FontManager.cpp,
+ src/FontManager.hpp, src/FontMap.cpp, src/FontMap.hpp,
+ src/FontMetrics.cpp, src/FontMetrics.hpp, src/FontStyle.hpp,
+ src/FontWriter.cpp, src/FontWriter.hpp, src/GFGlyphTracer.cpp,
+ src/GFGlyphTracer.hpp, src/GFReader.cpp, src/GFReader.hpp,
+ src/GFTracer.cpp, src/GFTracer.hpp, src/Ghostscript.cpp,
+ src/Ghostscript.hpp, src/Glyph.hpp, src/GlyphTracerMessages.hpp,
+ src/GraphicsPath.hpp, src/HtmlSpecialHandler.cpp,
+ src/HtmlSpecialHandler.hpp, src/InputBuffer.cpp, src/InputBuffer.hpp,
+ src/InputReader.cpp, src/InputReader.hpp, src/JFM.cpp, src/JFM.hpp,
+ src/Length.cpp, src/Length.hpp, src/Makefile.am, src/Makefile.old,
+ src/MapLine.cpp, src/MapLine.hpp, src/Matrix.cpp, src/Matrix.hpp,
+ src/Message.cpp, src/Message.hpp, src/MessageException.hpp,
+ src/MetafontWrapper.cpp, src/MetafontWrapper.hpp, src/MiKTeXCom.cpp,
+ src/MiKTeXCom.hpp, src/NoPsSpecialHandler.cpp,
+ src/NoPsSpecialHandler.hpp, src/NumericRanges.hpp, src/PSFilter.hpp,
+ src/PSInterpreter.cpp, src/PSInterpreter.hpp, src/PSPattern.cpp,
+ src/PSPattern.hpp, src/PSPreviewFilter.cpp, src/PSPreviewFilter.hpp,
+ src/PageRanges.cpp, src/PageRanges.hpp, src/PageSize.cpp,
+ src/PageSize.hpp, src/Pair.hpp, src/PapersizeSpecialHandler.cpp,
+ src/PapersizeSpecialHandler.hpp, src/PathClipper.cpp,
+ src/PathClipper.hpp, src/PdfSpecialHandler.cpp,
+ src/PdfSpecialHandler.hpp, src/PreScanDVIReader.cpp,
+ src/PreScanDVIReader.hpp, src/Process.cpp, src/Process.hpp,
+ src/PsSpecialHandler.cpp, src/PsSpecialHandler.hpp, src/RangeMap.cpp,
+ src/RangeMap.hpp, src/SVGCharHandler.cpp, src/SVGCharHandler.hpp,
+ src/SVGCharHandlerFactory.cpp, src/SVGCharHandlerFactory.hpp,
+ src/SVGCharPathHandler.cpp, src/SVGCharPathHandler.hpp,
+ src/SVGCharTspanTextHandler.cpp, src/SVGCharTspanTextHandler.hpp,
+ src/SVGOutput.cpp, src/SVGOutput.hpp, src/SVGSingleCharTextHandler.cpp,
+ src/SVGSingleCharTextHandler.hpp, src/SVGTree.cpp, src/SVGTree.hpp,
+ src/SWFWriter.cpp, src/SWFWriter.hpp, src/ShadingPatch.cpp,
+ src/ShadingPatch.hpp, src/SignalHandler.cpp, src/SignalHandler.hpp,
+ src/SpecialActions.hpp, src/SpecialHandler.hpp, src/SpecialManager.cpp,
+ src/SpecialManager.hpp, src/StreamReader.cpp, src/StreamReader.hpp,
+ src/StreamWriter.cpp, src/StreamWriter.hpp, src/Subfont.cpp,
+ src/Subfont.hpp, src/System.cpp, src/System.hpp, src/TFM.cpp,
+ src/TFM.hpp, src/TensorProductPatch.cpp, src/TensorProductPatch.hpp,
+ src/Terminal.cpp, src/Terminal.hpp, src/ToUnicodeMap.cpp,
+ src/ToUnicodeMap.hpp, src/TpicSpecialHandler.cpp,
+ src/TpicSpecialHandler.hpp, src/TriangularPatch.cpp,
+ src/TriangularPatch.hpp, src/Unicode.cpp, src/Unicode.hpp,
+ src/VFActions.hpp, src/VFReader.cpp, src/VFReader.hpp,
+ src/VectorIterator.hpp, src/VectorStream.hpp, src/XMLDocument.cpp,
+ src/XMLDocument.hpp, src/XMLNode.cpp, src/XMLNode.hpp, src/XMLString.cpp,
+ src/XMLString.hpp, src/ZLibOutputStream.hpp, src/dvisvgm.cpp,
+ src/ffwrapper.c, src/ffwrapper.h, src/macros.hpp, src/options.dtd,
+ src/options.xml, src/psdefs.cpp, src/psdefs.ps, src/version.hpp,
+ src/version.hpp.in, tests/BezierTest.cpp, tests/BitmapTest.cpp,
+ tests/BoundingBoxTest.cpp, tests/CMapManagerTest.cpp,
+ tests/CMapReaderTest.cpp, tests/CMapTest.cpp, tests/CRC32Test.cpp,
+ tests/CalculatorTest.cpp, tests/ColorSpecialTest.cpp,
+ tests/ColorTest.cpp, tests/CommandLineTest.cpp,
+ tests/DependencyGraphTest.cpp, tests/DirectoryTest.cpp,
+ tests/DvisvgmSpecialTest.cpp, tests/EmSpecialTest.cpp,
+ tests/FileFinderTest.cpp, tests/FilePathTest.cpp,
+ tests/FileSystemTest.cpp, tests/FontManagerTest.cpp,
+ tests/FontMapTest.cpp, tests/GFGlyphTracerTest.cpp,
+ tests/GFReaderTest.cpp, tests/GraphicsPathTest.cpp,
+ tests/JFMReaderTest.cpp, tests/LengthTest.cpp, tests/Makefile.am,
+ tests/MapLineTest.cpp, tests/MatrixTest.cpp,
+ tests/MessageExceptionTest.cpp, tests/PSInterpreterTest.cpp,
+ tests/PageRagesTest.cpp, tests/PageSizeTest.cpp, tests/PairTest.cpp,
+ tests/RangeMapTest.cpp, tests/SVGOutputTest.cpp,
+ tests/ShadingPatchTest.cpp, tests/SplittedCharInputBufferTest.cpp,
+ tests/StreamInputBufferTest.cpp, tests/StreamReaderTest.cpp,
+ tests/StreamWriterTest.cpp, tests/SubfontTest.cpp,
+ tests/TFMReaderTest.cpp, tests/TensorProductPatchTest.cpp,
+ tests/ToUnicodeMapTest.cpp, tests/TriangularPatchTest.cpp,
+ tests/UnicodeTest.cpp, tests/VectorIteratorTest.cpp,
+ tests/VectorStreamTest.cpp, tests/XMLNodeTest.cpp,
+ tests/XMLStringTest.cpp, tests/check-conv, tests/create-makefile,
+ tests/data/Makefile.am, tests/genhashcheck.py, tests/normalize.xsl:
+ updated year in copyright statements to 2017
+
+2016-12-20 Martin Gieseking <martin.gieseking@uos.de>
+
+ * doc/Makefile.am, doc/conf-dblatex-pdf.xsl, doc/db2html.xsl,
+ doc/dvisvgm.txt.in, doc/dvisvgm.xpr, doc/tweak-db-article.xsl:
+ manpage: minor refactorings of the XSLT scripts; added generation of
+ epub
+
+2016-12-16 Martin Gieseking <martin.gieseking@uos.de>
+
+ * doc/conf-dblatex-pdf.xsl, doc/tweak-dblatex-pdf.xsl:
+ manpage: use mixed case titles in pdf output
+
+ * doc/db2html.xsl:
+ manpage: replace icon of Author section
+
+ * doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl,
+ doc/tweak-dblatex-pdf.xsl:
+ indent with tabs rather than spaces
+
+ * doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, doc/db2html.xsl,
+ doc/tweak-dblatex-pdf.xsl:
+ added missing email address to copyright headers
+
+2016-12-15 Martin Gieseking <martin.gieseking@uos.de>
+
+ * doc/db2html.xsl, doc/dvisvgm.xpr:
+ manpage: preserve whitespace in list of supported specials
+
+2016-11-16 Martin Gieseking <martin.gieseking@uos.de>
+
+ * configure.ac:
+ ensure compiling C files with --std=c99
+
+2016-11-14 Martin Gieseking <martin.gieseking@uos.de>
+
+ * NEWS:
+ updated NEWS
+
+2016-11-12 Martin Gieseking <martin.gieseking@uos.de>
+
+ * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp:
+ set version to 2.0.4
+
+ * configure.ac, libs/Makefile.am, libs/clipper/Makefile.am,
+ libs/ff-woff/Makefile.am, libs/woff2/Makefile.am,
+ libs/woff2/brotli/Makefile.am, libs/woff2/brotli/enc/Makefile.am,
+ libs/woff2/src/Makefile.am, src/Makefile.am:
+ added license files of bundled libraries; relocated Makefiles
+
+ * README, README.md, configure.ac, libs/Makefile.am, libs/ff-woff/LICENSE,
+ libs/ff-woff/Makefile.am, libs/ff-woff/README.md,
+ libs/ff-woff/fontforge/PfEd.h, libs/ff-woff/fontforge/alphabet.c,
+ libs/ff-woff/fontforge/asmfpst.c, libs/ff-woff/fontforge/autohint.c,
+ libs/ff-woff/fontforge/char.c, libs/ff-woff/fontforge/cjk.c,
+ libs/ff-woff/fontforge/configure-fontforge.h,
+ libs/ff-woff/fontforge/cvundoes.c, libs/ff-woff/fontforge/dumppfa.c,
+ libs/ff-woff/fontforge/edgelist.h, libs/ff-woff/fontforge/edgelist2.h,
+ libs/ff-woff/fontforge/encoding.c, libs/ff-woff/fontforge/encoding.h,
+ libs/ff-woff/fontforge/fontforge-config.h,
+ libs/ff-woff/fontforge/fontforge.h, libs/ff-woff/fontforge/fontforgevw.h,
+ libs/ff-woff/fontforge/fvfonts.c, libs/ff-woff/fontforge/gwwiconv.c,
+ libs/ff-woff/fontforge/libffstamp.h, libs/ff-woff/fontforge/lookups.c,
+ libs/ff-woff/fontforge/macbinary.c, libs/ff-woff/fontforge/macenc.c,
+ libs/ff-woff/fontforge/mathconstants.c, libs/ff-woff/fontforge/memory.c,
+ libs/ff-woff/fontforge/mm.c, libs/ff-woff/fontforge/namehash.h,
+ libs/ff-woff/fontforge/namelist.c, libs/ff-woff/fontforge/nouiutil.c,
+ libs/ff-woff/fontforge/nowakowskittfinstr.c,
+ libs/ff-woff/fontforge/parsepfa.c, libs/ff-woff/fontforge/parsettf.c,
+ libs/ff-woff/fontforge/parsettfatt.c, libs/ff-woff/fontforge/psfont.h,
+ libs/ff-woff/fontforge/psread.c, libs/ff-woff/fontforge/pua.c,
+ libs/ff-woff/fontforge/sd.h, libs/ff-woff/fontforge/sfd.c,
+ libs/ff-woff/fontforge/sfd1.c, libs/ff-woff/fontforge/sfd1.h,
+ libs/ff-woff/fontforge/splinechar.c, libs/ff-woff/fontforge/splinefont.c,
+ libs/ff-woff/fontforge/splinefont.h,
+ libs/ff-woff/fontforge/splineorder2.c,
+ libs/ff-woff/fontforge/splineoverlap.c,
+ libs/ff-woff/fontforge/splinerefigure.c,
+ libs/ff-woff/fontforge/splinesave.c,
+ libs/ff-woff/fontforge/splinesaveafm.c,
+ libs/ff-woff/fontforge/splineutil.c,
+ libs/ff-woff/fontforge/splineutil2.c, libs/ff-woff/fontforge/start.c,
+ libs/ff-woff/fontforge/stemdb.c, libs/ff-woff/fontforge/stemdb.h,
+ libs/ff-woff/fontforge/tables.h, libs/ff-woff/fontforge/tottf.c,
+ libs/ff-woff/fontforge/tottfaat.c, libs/ff-woff/fontforge/tottfgpos.c,
+ libs/ff-woff/fontforge/tottfvar.c, libs/ff-woff/fontforge/ttf.h,
+ libs/ff-woff/fontforge/ttfinstrs.c, libs/ff-woff/fontforge/ttfinstrs.h,
+ libs/ff-woff/fontforge/ttfspecial.c,
+ libs/ff-woff/fontforge/uiinterface.h, libs/ff-woff/fontforge/unialt.c,
+ libs/ff-woff/fontforge/ustring.c, libs/ff-woff/fontforge/utils.c,
+ libs/ff-woff/fontforge/utype.c, libs/ff-woff/fontforge/woff.c,
+ libs/ff-woff/inc/basics.h, libs/ff-woff/inc/chardata.h,
+ libs/ff-woff/inc/charset.h, libs/ff-woff/inc/dlist.h,
+ libs/ff-woff/inc/gimage.h, libs/ff-woff/inc/gnetwork.h,
+ libs/ff-woff/inc/gwwiconv.h, libs/ff-woff/inc/intl.h,
+ libs/ff-woff/inc/ustring.h, libs/ff-woff/inc/utype.h, src/Makefile.am:
+ bundle reduced fontforge library (ff-woff)
+
+ * doc/dvisvgm.txt.in:
+ minor changes in manpage
+
+2016-11-07 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/BasicDVIReader.cpp, src/BasicDVIReader.hpp, src/DVIReader.cpp,
+ src/DVIReader.hpp:
+ use const variables for DVI opcodes rather than the values directly
+
+ * src/CommandLine.hpp, src/options.xml:
+ fixed a typo in the --help output
+
+2016-11-01 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/FontWriter.cpp:
+ few cosmetic changes; added comments
+
+2016-09-27 Martin Gieseking <martin.gieseking@uos.de>
+
+ * NEWS, README, README.md:
+ updated NEWS and README
+
+ * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp:
+ set version to 2.0.3
+
+2016-09-23 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/DVIReader.cpp:
+ fixed positioning of rules
+
+ * src/DVIReader.cpp, src/DVIReader.hpp, src/DVIToSVG.cpp,
+ src/DVIToSVG.hpp:
+ dropped tracking of previous DVI state from DVIReader
+
+2016-09-22 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/DVIReader.cpp, src/DVIReader.hpp, src/DVIToSVG.cpp:
+ fixed regression in character positioning of of virtual fonts
+
+2016-09-18 Martin Gieseking <martin.gieseking@uos.de>
+
+ * NEWS, README.md:
+ updated NEWS and README
+
+ * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp:
+ set version to 2.0.2
+
+ * src/RangeMap.cpp:
+ don't decrement iterator if it points to begin()
+
+ * src/DVIReader.cpp:
+ fixed type regression in computation of DVI positions (closes #61)
+
+2016-09-16 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/Font.cpp:
+ fixed sign of character depth computed for native fonts
+
+2016-09-03 Martin Gieseking <martin.gieseking@uos.de>
+
+ * NEWS, README, README.md:
+ updated NEWS and README
+
+ * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp:
+ set version to 2.0.1
+
+2016-08-31 Martin Gieseking <martin.gieseking@uos.de>
+
+ * doc/dvisvgm.txt.in, src/FontWriter.cpp, src/FontWriter.hpp,
+ src/SVGTree.cpp, src/SVGTree.hpp, src/ffwrapper.c:
+ added option to autohint fonts created by the FontForge library
+
+ * README, README.md:
+ added link to reduced FF library to README
+
+2016-08-30 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/DVIToSVGActions.hpp, src/FontManager.hpp, src/MetafontWrapper.hpp:
+ adapted struct/class forward declarations
+
+2016-08-28 Martin Gieseking <martin.gieseking@uos.de>
+
+ * NEWS:
+ updated NEWS
+
+ * README, README.md:
+ updated README files
+
+ * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp:
+ set version to 2.0
+
+ * src/CLCommandLine.cpp:
+ added missing cast to avoid compiler warning
+
+ * src/FileFinder.cpp, src/FileFinder.hpp:
+ removed unused variable
+
+2016-08-27 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/FontWriter.cpp, src/FontWriter.hpp, src/ffwrapper.c,
+ src/ffwrapper.h:
+ added missing copyright headers
+
+2016-08-25 Martin Gieseking <martin.gieseking@uos.de>
+
+ * configure.ac, doc/dvisvgm.txt.in, libs/Makefile.am, libs/woff2/LICENSE,
+ libs/woff2/brotli/LICENSE, libs/woff2/brotli/enc/Makefile.am,
+ libs/woff2/brotli/enc/backward_references.cc,
+ libs/woff2/brotli/enc/backward_references.h,
+ libs/woff2/brotli/enc/bit_cost.h,
+ libs/woff2/brotli/enc/block_splitter.cc,
+ libs/woff2/brotli/enc/block_splitter.h,
+ libs/woff2/brotli/enc/brotli_bit_stream.cc,
+ libs/woff2/brotli/enc/brotli_bit_stream.h,
+ libs/woff2/brotli/enc/cluster.h, libs/woff2/brotli/enc/command.h,
+ libs/woff2/brotli/enc/compress_fragment.cc,
+ libs/woff2/brotli/enc/compress_fragment.h,
+ libs/woff2/brotli/enc/compress_fragment_two_pass.cc,
+ libs/woff2/brotli/enc/compress_fragment_two_pass.h,
+ libs/woff2/brotli/enc/compressor.h, libs/woff2/brotli/enc/context.h,
+ libs/woff2/brotli/enc/dictionary.cc, libs/woff2/brotli/enc/dictionary.h,
+ libs/woff2/brotli/enc/dictionary_hash.h, libs/woff2/brotli/enc/encode.cc,
+ libs/woff2/brotli/enc/encode.h, libs/woff2/brotli/enc/encode_parallel.cc,
+ libs/woff2/brotli/enc/encode_parallel.h,
+ libs/woff2/brotli/enc/entropy_encode.cc,
+ libs/woff2/brotli/enc/entropy_encode.h,
+ libs/woff2/brotli/enc/entropy_encode_static.h,
+ libs/woff2/brotli/enc/fast_log.h,
+ libs/woff2/brotli/enc/find_match_length.h, libs/woff2/brotli/enc/hash.h,
+ libs/woff2/brotli/enc/histogram.cc, libs/woff2/brotli/enc/histogram.h,
+ libs/woff2/brotli/enc/literal_cost.cc,
+ libs/woff2/brotli/enc/literal_cost.h, libs/woff2/brotli/enc/metablock.cc,
+ libs/woff2/brotli/enc/metablock.h, libs/woff2/brotli/enc/port.h,
+ libs/woff2/brotli/enc/prefix.h, libs/woff2/brotli/enc/ringbuffer.h,
+ libs/woff2/brotli/enc/static_dict.cc,
+ libs/woff2/brotli/enc/static_dict.h,
+ libs/woff2/brotli/enc/static_dict_lut.h,
+ libs/woff2/brotli/enc/streams.cc, libs/woff2/brotli/enc/streams.h,
+ libs/woff2/brotli/enc/transform.h, libs/woff2/brotli/enc/types.h,
+ libs/woff2/brotli/enc/utf8_util.cc, libs/woff2/brotli/enc/utf8_util.h,
+ libs/woff2/brotli/enc/write_bits.h, libs/woff2/brotli/tools/bro.cc,
+ libs/woff2/brotli/tools/rfc-format.py, libs/woff2/brotli/tools/version.h,
+ libs/woff2/src/Makefile.am, libs/woff2/src/buffer.h,
+ libs/woff2/src/file.h, libs/woff2/src/font.cc, libs/woff2/src/font.h,
+ libs/woff2/src/glyph.cc, libs/woff2/src/glyph.h,
+ libs/woff2/src/normalize.cc, libs/woff2/src/normalize.h,
+ libs/woff2/src/port.h, libs/woff2/src/round.h,
+ libs/woff2/src/store_bytes.h, libs/woff2/src/table_tags.cc,
+ libs/woff2/src/table_tags.h, libs/woff2/src/transform.cc,
+ libs/woff2/src/transform.h, libs/woff2/src/variable_length.cc,
+ libs/woff2/src/variable_length.h, libs/woff2/src/woff2_common.cc,
+ libs/woff2/src/woff2_common.h, libs/woff2/src/woff2_dec.h,
+ libs/woff2/src/woff2_enc.cc, libs/woff2/src/woff2_enc.h,
+ libs/woff2/src/woff2_out.cc, libs/woff2/src/woff2_out.h,
+ src/FontWriter.cpp, src/FontWriter.hpp, src/Makefile.am:
+ added support for embedding WOFF2 fonts
+
+ * Makefile.am, clipper/License.txt, clipper/Makefile.am,
+ clipper/clipper.cpp, clipper/clipper.hpp, configure.ac, libs/Makefile.am,
+ libs/clipper/License.txt, libs/clipper/Makefile.am,
+ libs/clipper/clipper.cpp, libs/clipper/clipper.hpp, libs/xxHash/LICENSE,
+ libs/xxHash/Makefile.am, libs/xxHash/xxhash-fileno.patch,
+ libs/xxHash/xxhash.c, libs/xxHash/xxhash.h, libs/xxHash/xxhsum.c,
+ src/Makefile.am, tests/Makefile.am, tests/create-makefile,
+ xxHash/LICENSE, xxHash/Makefile.am, xxHash/xxhash-fileno.patch,
+ xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c:
+ moved bundled libraries (clipper, xxHash) to subfolder 'libs'
+
+2016-08-24 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/XMLNode.hpp:
+ added move constructors to XMLNode classes
+
+2016-08-23 Martin Gieseking <martin.gieseking@uos.de>
+
+ * configure.ac, doc/dvisvgm.txt.in, src/CommandLine.hpp,
+ src/FontWriter.cpp, src/FontWriter.hpp, src/GraphicsPath.hpp,
+ src/Makefile.am, src/SVGTree.cpp, src/SVGTree.hpp, src/XMLNode.cpp,
+ src/XMLNode.hpp, src/dvisvgm.cpp, src/ffwrapper.c, src/ffwrapper.h,
+ src/options.xml:
+ added option --font-format to select the file format used to embed fonts
+
+ * src/FontEngine.cpp:
+ fixed sign of the font descender
+
+2016-08-22 Martin Gieseking <martin.gieseking@uos.de>
+
+ * xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c:
+ updated xxHash to version 0.6.2
+
+2016-08-17 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/FixWord.hpp, src/Font.cpp, src/FontMetrics.hpp, src/SVGTree.cpp,
+ src/TFM.cpp, src/TFM.hpp:
+ added getters for ascent and descent to TFM-based fonts
+
+2016-08-14 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/PathClipper.cpp:
+ added missing initializers
+
+ * src/Ghostscript.hpp:
+ removed copy constructor of class Ghostscript
+
+2016-08-13 Martin Gieseking <martin.gieseking@uos.de>
+
+ * CMakeLists.txt, configure.ac, src/CLCommandLine.cpp,
+ src/CLCommandLine.hpp, src/CommandLine.hpp, src/Makefile.am,
+ src/dvisvgm.cpp, src/options.dtd, src/options.xml, src/version.hpp,
+ src/version.hpp.in:
+ added version.hpp to provide the current version number
+
+2016-08-10 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/MiKTeX209-session_i.c:
+ added Makefile rule to invocate midl automatically if MiKTeX's COM
+ interface changes
+
+2016-08-08 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/Ghostscript.cpp, src/MiKTeXCom.cpp:
+ replaced __WIN64__ with pre-defined _WIN64
+
+ * src/System.cpp, src/dvisvgm.cpp:
+ minor refactorings of dvisvgm.cpp
+
+ * src/DVIReader.cpp, src/DVIReader.hpp, src/Directory.cpp,
+ src/Directory.hpp, src/FilePath.cpp, src/FilePath.hpp, src/Font.cpp,
+ src/Font.hpp, src/FontManager.cpp, src/FontManager.hpp, src/GFReader.hpp,
+ src/PageRanges.cpp, src/PageRanges.hpp, src/PageSize.cpp,
+ src/PageSize.hpp, src/SVGOutput.cpp, src/SVGOutput.hpp,
+ src/VFActions.hpp, src/VFReader.cpp:
+ pass string parameters by reference if possible
+
+2016-08-02 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/CMap.cpp, src/CMapManager.cpp, src/CMapReader.cpp, src/EncFile.cpp,
+ src/FileFinder.cpp, src/FileFinder.hpp, src/Font.cpp,
+ src/FontEncoding.cpp, src/FontManager.cpp, src/FontMap.cpp,
+ src/FontMetrics.cpp, src/Ghostscript.cpp, src/MetafontWrapper.cpp,
+ src/PsSpecialHandler.cpp, src/Subfont.cpp, src/dvisvgm.cpp,
+ tests/CMapManagerTest.cpp, tests/FileFinderTest.cpp,
+ tests/MapLineTest.cpp, tests/SubfontTest.cpp:
+ made FileFinder a singleton again
+
+ * CMakeLists.txt, src/CLCommandLine.cpp, src/CLCommandLine.hpp,
+ src/CLOption.hpp, src/CmdLineParserBase.cpp, src/CmdLineParserBase.hpp,
+ src/CommandLine.cpp, src/CommandLine.hpp, src/Makefile.am,
+ src/dvisvgm.cpp, src/options.dtd, src/options.xml,
+ tests/CommandLineTest.cpp:
+ reimplemented the CommandLine parser class
+
+2016-07-27 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/BgColorSpecialHandler.cpp, src/BoundingBox.cpp,
+ src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp,
+ src/FileSystem.cpp, src/FontCache.cpp, src/FontEngine.cpp,
+ src/FontManager.cpp, src/GraphicsPath.hpp, src/PSInterpreter.cpp,
+ src/PapersizeSpecialHandler.cpp, src/PathClipper.cpp, src/RangeMap.cpp,
+ src/Subfont.cpp, src/TpicSpecialHandler.cpp, src/XMLDocument.cpp,
+ src/XMLNode.cpp, src/genhashmap.cpp:
+ replaced insert/push_back with emplace/emplace_back where useful
+
+2016-07-23 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/CMapReader.cpp:
+ minor refactoring of class CMapReader
+
+ * src/PathClipper.cpp:
+ some minor refactorings of class PathClipper
+
+2016-07-22 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/FontManager.cpp, src/FontManager.hpp:
+ use unique_ptr to automatically release Font objects in class
+ FontManager
+
+ * src/FontMap.cpp, src/FontMap.hpp:
+ some syntactic refactorings of class FontMap
+
+2016-07-21 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/AGLTable.h, src/AGLTable.hpp, src/BasicDVIReader.cpp,
+ src/BasicDVIReader.h, src/BasicDVIReader.hpp, src/Bezier.cpp,
+ src/Bezier.h, src/Bezier.hpp, src/BgColorSpecialHandler.cpp,
+ src/BgColorSpecialHandler.h, src/BgColorSpecialHandler.hpp,
+ src/Bitmap.cpp, src/Bitmap.h, src/Bitmap.hpp, src/BoundingBox.cpp,
+ src/BoundingBox.h, src/BoundingBox.hpp, src/CMap.cpp, src/CMap.h,
+ src/CMap.hpp, src/CMapManager.cpp, src/CMapManager.h,
+ src/CMapManager.hpp, src/CMapReader.cpp, src/CMapReader.h,
+ src/CMapReader.hpp, src/CRC32.cpp, src/CRC32.h, src/CRC32.hpp,
+ src/Calculator.cpp, src/Calculator.h, src/Calculator.hpp,
+ src/CharMapID.cpp, src/CharMapID.h, src/CharMapID.hpp, src/Character.h,
+ src/Character.hpp, src/CmdLineParserBase.cpp, src/CmdLineParserBase.h,
+ src/CmdLineParserBase.hpp, src/Color.cpp, src/Color.h, src/Color.hpp,
+ src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h,
+ src/ColorSpecialHandler.hpp, src/CommandLine.cpp, src/CommandLine.h,
+ src/CommandLine.hpp, src/DLLoader.cpp, src/DLLoader.h, src/DLLoader.hpp,
+ src/DVIActions.h, src/DVIActions.hpp, src/DVIReader.cpp, src/DVIReader.h,
+ src/DVIReader.hpp, src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVG.hpp,
+ src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/DVIToSVGActions.hpp,
+ src/DependencyGraph.h, src/DependencyGraph.hpp, src/Directory.cpp,
+ src/Directory.h, src/Directory.hpp, src/DvisvgmSpecialHandler.cpp,
+ src/DvisvgmSpecialHandler.h, src/DvisvgmSpecialHandler.hpp,
+ src/EPSFile.cpp, src/EPSFile.h, src/EPSFile.hpp, src/EPSToSVG.cpp,
+ src/EPSToSVG.h, src/EPSToSVG.hpp, src/EmSpecialHandler.cpp,
+ src/EmSpecialHandler.h, src/EmSpecialHandler.hpp, src/EncFile.cpp,
+ src/EncFile.h, src/EncFile.hpp, src/FileFinder.cpp, src/FileFinder.h,
+ src/FileFinder.hpp, src/FilePath.cpp, src/FilePath.h, src/FilePath.hpp,
+ src/FileSystem.cpp, src/FileSystem.h, src/FileSystem.hpp, src/FixWord.h,
+ src/FixWord.hpp, src/Font.cpp, src/Font.h, src/Font.hpp,
+ src/FontCache.cpp, src/FontCache.h, src/FontCache.hpp,
+ src/FontEncoding.cpp, src/FontEncoding.h, src/FontEncoding.hpp,
+ src/FontEngine.cpp, src/FontEngine.h, src/FontEngine.hpp,
+ src/FontManager.cpp, src/FontManager.h, src/FontManager.hpp,
+ src/FontMap.cpp, src/FontMap.h, src/FontMap.hpp, src/FontMetrics.cpp,
+ src/FontMetrics.h, src/FontMetrics.hpp, src/FontStyle.h,
+ src/FontStyle.hpp, src/GFGlyphTracer.cpp, src/GFGlyphTracer.h,
+ src/GFGlyphTracer.hpp, src/GFReader.cpp, src/GFReader.h,
+ src/GFReader.hpp, src/GFTracer.cpp, src/GFTracer.h, src/GFTracer.hpp,
+ src/Ghostscript.cpp, src/Ghostscript.h, src/Ghostscript.hpp, src/Glyph.h,
+ src/Glyph.hpp, src/GlyphTracerMessages.h, src/GlyphTracerMessages.hpp,
+ src/GraphicsPath.h, src/GraphicsPath.hpp, src/HtmlSpecialHandler.cpp,
+ src/HtmlSpecialHandler.h, src/HtmlSpecialHandler.hpp,
+ src/InputBuffer.cpp, src/InputBuffer.h, src/InputBuffer.hpp,
+ src/InputReader.cpp, src/InputReader.h, src/InputReader.hpp, src/JFM.cpp,
+ src/JFM.h, src/JFM.hpp, src/Length.cpp, src/Length.h, src/Length.hpp,
+ src/Makefile.am, src/MapLine.cpp, src/MapLine.h, src/MapLine.hpp,
+ src/Matrix.cpp, src/Matrix.h, src/Matrix.hpp, src/Message.cpp,
+ src/Message.h, src/Message.hpp, src/MessageException.h,
+ src/MessageException.hpp, src/MetafontWrapper.cpp, src/MetafontWrapper.h,
+ src/MetafontWrapper.hpp, src/MiKTeXCom.cpp, src/MiKTeXCom.h,
+ src/MiKTeXCom.hpp, src/NoPsSpecialHandler.cpp, src/NoPsSpecialHandler.h,
+ src/NoPsSpecialHandler.hpp, src/NumericRanges.h, src/NumericRanges.hpp,
+ src/PSFilter.h, src/PSFilter.hpp, src/PSInterpreter.cpp,
+ src/PSInterpreter.h, src/PSInterpreter.hpp, src/PSPattern.cpp,
+ src/PSPattern.h, src/PSPattern.hpp, src/PSPreviewFilter.cpp,
+ src/PSPreviewFilter.h, src/PSPreviewFilter.hpp, src/PageRanges.cpp,
+ src/PageRanges.h, src/PageRanges.hpp, src/PageSize.cpp, src/PageSize.h,
+ src/PageSize.hpp, src/Pair.h, src/Pair.hpp,
+ src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.h,
+ src/PapersizeSpecialHandler.hpp, src/PathClipper.cpp, src/PathClipper.h,
+ src/PathClipper.hpp, src/PdfSpecialHandler.cpp, src/PdfSpecialHandler.h,
+ src/PdfSpecialHandler.hpp, src/PreScanDVIReader.cpp,
+ src/PreScanDVIReader.h, src/PreScanDVIReader.hpp, src/Process.cpp,
+ src/Process.h, src/Process.hpp, src/PsSpecialHandler.cpp,
+ src/PsSpecialHandler.h, src/PsSpecialHandler.hpp, src/RangeMap.cpp,
+ src/RangeMap.h, src/RangeMap.hpp, src/SVGCharHandler.cpp,
+ src/SVGCharHandler.h, src/SVGCharHandler.hpp,
+ src/SVGCharHandlerFactory.cpp, src/SVGCharHandlerFactory.h,
+ src/SVGCharHandlerFactory.hpp, src/SVGCharPathHandler.cpp,
+ src/SVGCharPathHandler.h, src/SVGCharPathHandler.hpp,
+ src/SVGCharTspanTextHandler.cpp, src/SVGCharTspanTextHandler.h,
+ src/SVGCharTspanTextHandler.hpp, src/SVGOutput.cpp, src/SVGOutput.h,
+ src/SVGOutput.hpp, src/SVGSingleCharTextHandler.cpp,
+ src/SVGSingleCharTextHandler.h, src/SVGSingleCharTextHandler.hpp,
+ src/SVGTree.cpp, src/SVGTree.h, src/SVGTree.hpp, src/SWFWriter.cpp,
+ src/SWFWriter.h, src/SWFWriter.hpp, src/ShadingPatch.cpp,
+ src/ShadingPatch.h, src/ShadingPatch.hpp, src/SignalHandler.cpp,
+ src/SignalHandler.h, src/SignalHandler.hpp, src/SpecialActions.h,
+ src/SpecialActions.hpp, src/SpecialHandler.h, src/SpecialHandler.hpp,
+ src/SpecialManager.cpp, src/SpecialManager.h, src/SpecialManager.hpp,
+ src/StreamReader.cpp, src/StreamReader.h, src/StreamReader.hpp,
+ src/StreamWriter.cpp, src/StreamWriter.h, src/StreamWriter.hpp,
+ src/Subfont.cpp, src/Subfont.h, src/Subfont.hpp, src/System.cpp,
+ src/System.h, src/System.hpp, src/TFM.cpp, src/TFM.h, src/TFM.hpp,
+ src/TensorProductPatch.cpp, src/TensorProductPatch.h,
+ src/TensorProductPatch.hpp, src/Terminal.cpp, src/Terminal.h,
+ src/Terminal.hpp, src/ToUnicodeMap.cpp, src/ToUnicodeMap.h,
+ src/ToUnicodeMap.hpp, src/TpicSpecialHandler.cpp,
+ src/TpicSpecialHandler.h, src/TpicSpecialHandler.hpp,
+ src/TriangularPatch.cpp, src/TriangularPatch.h, src/TriangularPatch.hpp,
+ src/Unicode.cpp, src/Unicode.h, src/Unicode.hpp, src/VFActions.h,
+ src/VFActions.hpp, src/VFReader.cpp, src/VFReader.h, src/VFReader.hpp,
+ src/VectorIterator.h, src/VectorIterator.hpp, src/VectorStream.h,
+ src/VectorStream.hpp, src/XMLDocument.cpp, src/XMLDocument.h,
+ src/XMLDocument.hpp, src/XMLNode.cpp, src/XMLNode.h, src/XMLNode.hpp,
+ src/XMLString.cpp, src/XMLString.h, src/XMLString.hpp,
+ src/ZLibOutputStream.h, src/ZLibOutputStream.hpp, src/dvisvgm.cpp,
+ src/macros.h, src/macros.hpp, src/psdefs.cpp, tests/BezierTest.cpp,
+ tests/BitmapTest.cpp, tests/BoundingBoxTest.cpp,
+ tests/CMapManagerTest.cpp, tests/CMapReaderTest.cpp, tests/CMapTest.cpp,
+ tests/CRC32Test.cpp, tests/CalculatorTest.cpp,
+ tests/ColorSpecialTest.cpp, tests/ColorTest.cpp,
+ tests/CommandLineTest.cpp, tests/DependencyGraphTest.cpp,
+ tests/DirectoryTest.cpp, tests/DvisvgmSpecialTest.cpp,
+ tests/EmSpecialTest.cpp, tests/FileFinderTest.cpp,
+ tests/FilePathTest.cpp, tests/FileSystemTest.cpp,
+ tests/FontManagerTest.cpp, tests/FontMapTest.cpp,
+ tests/GFGlyphTracerTest.cpp, tests/GFReaderTest.cpp,
+ tests/GhostscriptTest.cpp, tests/GraphicsPathTest.cpp,
+ tests/JFMReaderTest.cpp, tests/LengthTest.cpp, tests/Makefile.am,
+ tests/MapLineTest.cpp, tests/MatrixTest.cpp,
+ tests/MessageExceptionTest.cpp, tests/PSInterpreterTest.cpp,
+ tests/PageRagesTest.cpp, tests/PageSizeTest.cpp, tests/PairTest.cpp,
+ tests/RangeMapTest.cpp, tests/SVGOutputTest.cpp,
+ tests/ShadingPatchTest.cpp, tests/SplittedCharInputBufferTest.cpp,
+ tests/StreamInputBufferTest.cpp, tests/StreamReaderTest.cpp,
+ tests/StreamWriterTest.cpp, tests/SubfontTest.cpp,
+ tests/TFMReaderTest.cpp, tests/TensorProductPatchTest.cpp,
+ tests/ToUnicodeMapTest.cpp, tests/TriangularPatchTest.cpp,
+ tests/UnicodeTest.cpp, tests/VectorIteratorTest.cpp,
+ tests/VectorStreamTest.cpp, tests/XMLNodeTest.cpp,
+ tests/XMLStringTest.cpp, tests/create-makefile:
+ renamed filename extension of C++ headers to .hpp
+
+2016-07-20 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h:
+ create BoxMap object directly, avoid new/delete
+
+ * src/CMapManager.cpp, src/CMapManager.h, src/FileFinder.cpp,
+ src/Font.cpp, src/Font.h, src/XMLDocument.cpp, src/XMLDocument.h,
+ src/XMLNode.cpp, src/XMLNode.h, tests/XMLNodeTest.cpp:
+ use smart pointers to release heap memory
+
+ * src/genhashmap.cpp, src/glyphlist.txt:
+ added genhashmap (generates AGLTable.h from glyphlist.txt)
+
+2016-07-19 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/AGLTable.h, src/Color.cpp, src/Unicode.cpp, tests/genhashcheck.py:
+ replaced repeated binary search implementations with calls of
+ lower_bound()
+
+2016-07-13 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/FileFinder.cpp, src/Message.cpp:
+ initialize maps with initializer-lists
+
+2016-07-05 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/Length.cpp, src/TpicSpecialHandler.cpp:
+ replaced 'id macros' with constexpr functions
+
+2016-07-04 Martin Gieseking <martin.gieseking@uos.de>
+
+ * NEWS, README.md:
+ updated NEWS and README
+
+ * .travis.yml, configure.ac, src/Doxyfile:
+ set version to 1.16
+
+ * src/dvisvgm.cpp:
+ catch exception in set_cache_dir()
+
+ * src/TFM.cpp:
+ added missing initializers
+
+2016-07-03 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/DVIReader.cpp, src/DVIReader.h, src/Font.cpp, src/Font.h,
+ src/FontManager.cpp, src/FontManager.h, src/VFActions.h,
+ src/VFReader.cpp:
+ transfer DVI snippet of a VF char by move semantics rather than by heap
+ pointer
+
+ * AUTHORS, LGPL-2.1.txt, Makefile.am, gzstream/COPYING.LIB,
+ gzstream/Makefile, gzstream/README, gzstream/gzstream.cpp,
+ gzstream/gzstream.h, gzstream/index.html, gzstream/logo.gif,
+ gzstream/test_gunzip.C, gzstream/test_gzip.C, gzstream/version,
+ src/Makefile.am, src/SVGOutput.cpp, src/SVGOutput.h,
+ src/ZLibOutputStream.h, src/dvisvgm.cpp, src/gzstream.cpp,
+ src/gzstream.h, tests/Makefile.am, tests/SVGOutputTest.cpp,
+ tests/create-makefile:
+ replaced old gzstream classes
+
+ * clipper/clipper.hpp, src/AGLTable.h, src/BasicDVIReader.cpp,
+ src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.h, src/CMap.cpp,
+ src/CMap.h, src/CMapReader.cpp, src/CRC32.cpp, src/CRC32.h,
+ src/CharMapID.h, src/Character.h, src/Color.cpp, src/Color.h,
+ src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp,
+ src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h,
+ src/EPSFile.cpp, src/EPSFile.h, src/EncFile.cpp, src/EncFile.h,
+ src/FileSystem.cpp, src/FileSystem.h, src/FixWord.h, src/Font.cpp,
+ src/Font.h, src/FontCache.cpp, src/FontCache.h, src/FontEncoding.cpp,
+ src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h,
+ src/FontManager.cpp, src/FontManager.h, src/FontMetrics.cpp,
+ src/FontMetrics.h, src/GFGlyphTracer.cpp, src/GFGlyphTracer.h,
+ src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h,
+ src/Glyph.h, src/GlyphTracerMessages.h, src/InputBuffer.cpp,
+ src/InputBuffer.h, src/JFM.cpp, src/JFM.h, src/Makefile.am,
+ src/Message.h, src/Pair.h, src/PathClipper.cpp, src/PreScanDVIReader.cpp,
+ src/PsSpecialHandler.h, src/RangeMap.cpp, src/RangeMap.h,
+ src/SVGCharHandler.h, src/SVGCharPathHandler.cpp,
+ src/SVGCharPathHandler.h, src/SVGCharTspanTextHandler.cpp,
+ src/SVGCharTspanTextHandler.h, src/SVGSingleCharTextHandler.cpp,
+ src/SVGSingleCharTextHandler.h, src/SWFWriter.cpp, src/SWFWriter.h,
+ src/StreamReader.cpp, src/StreamReader.h, src/StreamWriter.cpp,
+ src/StreamWriter.h, src/Subfont.cpp, src/Subfont.h, src/TFM.cpp,
+ src/TFM.h, src/ToUnicodeMap.cpp, src/ToUnicodeMap.h, src/Unicode.cpp,
+ src/Unicode.h, src/VFActions.h, src/VFReader.cpp, src/VFReader.h,
+ src/XMLString.cpp, src/types.h, tests/BitmapTest.cpp,
+ tests/CRC32Test.cpp, tests/ColorSpecialTest.cpp, tests/ColorTest.cpp,
+ tests/GFGlyphTracerTest.cpp, tests/GFReaderTest.cpp,
+ tests/JFMReaderTest.cpp, tests/Makefile.am, tests/StreamReaderTest.cpp,
+ tests/TriangularPatchTest.cpp, tests/TypesTest.cpp,
+ tests/UnicodeTest.cpp:
+ replaced own fixed-sized integer types with types from cstdint
+
+ * src/CMapReader.cpp, src/CMapReader.h, src/CmdLineParserBase.cpp,
+ src/CmdLineParserBase.h, src/Color.cpp, src/Color.h, src/CommandLine.cpp,
+ src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp,
+ src/EmSpecialHandler.cpp, src/Font.cpp, src/Font.h, src/FontManager.cpp,
+ src/GraphicsPath.h, src/HtmlSpecialHandler.cpp, src/HtmlSpecialHandler.h,
+ src/Length.cpp, src/Length.h, src/PathClipper.cpp,
+ src/PsSpecialHandler.cpp, src/SVGTree.cpp, src/ShadingPatch.cpp,
+ src/TensorProductPatch.h, tests/BoundingBoxTest.cpp,
+ tests/LengthTest.cpp, tests/ShadingPatchTest.cpp,
+ tests/TensorProductPatchTest.cpp, tests/TriangularPatchTest.cpp:
+ replaced some enums with enum classes
+
+ * src/NumericRanges.h, src/PapersizeSpecialHandler.cpp, src/Unicode.cpp,
+ src/VFReader.cpp:
+ replaced static callback functions with lambdas
+
+ * configure.ac, m4/ax_cxx_compile_stdcxx.m4:
+ switch from C++03 to C++11
+
+2016-07-02 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/BasicDVIReader.h, src/Bitmap.h, src/CMap.h, src/CmdLineParserBase.h,
+ src/DVIActions.h, src/Font.h, src/FontEncoding.h, src/FontMetrics.h,
+ src/GFGlyphTracer.h, src/GFReader.h, src/GFTracer.h, src/GraphicsPath.h,
+ src/InputBuffer.h, src/InputReader.h, src/MessageException.h,
+ src/PSFilter.h, src/PSInterpreter.h, src/PSPattern.h,
+ src/SVGCharHandler.h, src/SVGOutput.h, src/ShadingPatch.h,
+ src/SpecialActions.h, src/SpecialHandler.h, src/StreamReader.h,
+ src/StreamWriter.h, src/Subfont.h, src/VFActions.h, src/XMLNode.h:
+ replaced empty virtual destructors with default ones
+
+ * src/PsSpecialHandler.cpp:
+ use unique_ptr rather than deprecated auto_ptr
+
+ * clipper/clipper.hpp, src/BgColorSpecialHandler.h, src/Bitmap.cpp,
+ src/CMap.h, src/CmdLineParserBase.h, src/ColorSpecialHandler.h,
+ src/CommandLine.h, src/DVIReader.h, src/DVIToSVG.h,
+ src/DVIToSVGActions.h, src/DvisvgmSpecialHandler.h, src/EPSToSVG.h,
+ src/EmSpecialHandler.h, src/EncFile.h, src/Font.h, src/FontCache.cpp,
+ src/FontEncoding.h, src/FontMetrics.h, src/GFGlyphTracer.h,
+ src/GFReader.h, src/GFTracer.h, src/GlyphTracerMessages.h,
+ src/GraphicsPath.h, src/HtmlSpecialHandler.h, src/InputBuffer.h,
+ src/InputReader.h, src/JFM.h, src/MessageException.h,
+ src/NoPsSpecialHandler.h, src/PSPattern.h, src/PSPreviewFilter.h,
+ src/PapersizeSpecialHandler.h, src/PathClipper.cpp,
+ src/PdfSpecialHandler.h, src/PreScanDVIReader.h,
+ src/PsSpecialHandler.cpp, src/PsSpecialHandler.h,
+ src/SVGCharPathHandler.h, src/SVGCharTspanTextHandler.h, src/SVGOutput.h,
+ src/SVGSingleCharTextHandler.h, src/SpecialActions.h, src/TFM.h,
+ src/TensorProductPatch.h, src/TpicSpecialHandler.h,
+ src/TriangularPatch.h, src/VectorStream.h, src/XMLNode.h:
+ mark overridden methods with 'override' keyword
+
+ * src/Bitmap.cpp, src/BoundingBox.h, src/CMapManager.cpp,
+ src/CmdLineParserBase.cpp, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp,
+ src/DVIToSVGActions.h, src/DependencyGraph.h,
+ src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp,
+ src/FileFinder.cpp, src/FilePath.cpp, src/FilePath.h, src/Font.cpp,
+ src/FontCache.cpp, src/FontEncoding.cpp, src/FontManager.cpp,
+ src/FontMap.cpp, src/FontMap.h, src/GFReader.cpp, src/GFReader.h,
+ src/GraphicsPath.h, src/HtmlSpecialHandler.cpp, src/NumericRanges.h,
+ src/PSPattern.cpp, src/PsSpecialHandler.cpp, src/SVGTree.cpp,
+ src/SVGTree.h, src/SpecialManager.cpp, src/SpecialManager.h,
+ src/Subfont.cpp, src/Subfont.h, src/TpicSpecialHandler.cpp,
+ src/XMLDocument.cpp, src/XMLNode.cpp, src/XMLString.cpp, src/macros.h:
+ use range-based 'for' loop to iterate over containers; drop FORALL macro
+
+2016-07-01 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/BasicDVIReader.h, src/DVIActions.h, src/DVIReader.cpp,
+ src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h,
+ src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/FontManager.cpp,
+ src/FontManager.h, src/PreScanDVIReader.h, src/dvisvgm.cpp:
+ refactored the DVI reader classes
+- added higher-level template methods
+ to process the DVI commands more safely
+- moved triggering of DVIActions
+ from DVIReader to DVIToSVG
+
+2016-06-29 Martin Gieseking <martin.gieseking@uos.de>
+
+ * xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c:
+ updated xxHash to version 0.6.1
+
+ * src/BoundingBox.cpp, src/BoundingBox.h, src/DVIToSVG.cpp,
+ src/dvisvgm.cpp:
+ fixed computation of bounding boxes modified by relative --bbox argument
+
+2016-06-17 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/TFM.cpp, tests/JFMReaderTest.cpp, tests/TFMReaderTest.cpp:
+ minor improvements to TFM/JFM tests
+
+2016-06-16 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/GFReader.cpp:
+ ensure validity of postpost command in GFReader::executePostamble()
+
+ * src/DVIReader.cpp, src/VectorStream.h, tests/VectorStreamTest.cpp:
+ refactored VectorStreamBuffer to keep constness of assigned vector
+
+2016-06-14 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/BoundingBox.cpp, src/BoundingBox.h, tests/BoundingBoxTest.cpp:
+ fixed unit conversion in BoundingBox class
+
+ * src/EmSpecialHandler.cpp, src/EmSpecialHandler.h,
+ tests/EmSpecialTest.cpp, tests/Makefile.am:
+ improved the emTeX special handler; added EmSpecialTest
+
+ * src/XMLNode.h:
+ added ouput operators for the XML node objects
+
+ * src/DvisvgmSpecialHandler.cpp, src/TFM.cpp, src/VFReader.cpp:
+ replaced local definitions of pt2bp with Length::pt2bp
+
+2016-06-13 Martin Gieseking <martin.gieseking@uos.de>
+
+ * doc/dvisvgm.txt.in, src/Length.cpp, src/Length.h, tests/LengthTest.cpp:
+ added dd, cc, and sp units to class Length; fixed factor pt2pc
+
+2016-06-12 Martin Gieseking <martin.gieseking@uos.de>
+
+ * xxHash/xxhash-fileno.patch, xxHash/xxhsum.c:
+ added xxHash test utility 'xxhsum'
+
+ * src/DLLoader.cpp, src/DLLoader.h, src/Directory.cpp, src/Directory.h,
+ src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp, src/GFTracer.cpp,
+ src/Ghostscript.cpp, src/Ghostscript.h, src/Message.cpp,
+ src/MetafontWrapper.cpp, src/Process.cpp, src/Terminal.cpp,
+ src/Terminal.h, src/dvisvgm.cpp:
+ cleaned up Windows-related #defines
+
+ * xxHash/xxhash.c, xxHash/xxhash.h:
+ updated xxHash to version 0.6.0
+
+2016-06-10 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/Length.cpp, src/Length.h, tests/LengthTest.cpp:
+ added functions to convert between Length::Unit and std::string
+
+ * src/CommandLine.cpp:
+ removed redundant #includes
+
+2016-06-07 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/SVGCharHandler.h:
+ added missing initializer to class SVGCharHandler
+
+ * src/CMapManager.cpp, src/CMapManager.h, src/DVIActions.h,
+ src/DVIToSVGActions.h, src/DvisvgmSpecialHandler.h, src/Font.h,
+ src/FontEngine.h, src/FontManager.h, src/HtmlSpecialHandler.cpp,
+ src/HtmlSpecialHandler.h, src/PSPattern.h, src/PSPreviewFilter.h,
+ src/SVGCharHandler.cpp, src/SVGCharHandler.h, src/SVGCharPathHandler.cpp,
+ src/SVGCharTspanTextHandler.cpp, src/SVGSingleCharTextHandler.cpp,
+ src/SVGTree.h, src/SpecialActions.h, src/SpecialHandler.h,
+ src/SpecialManager.h, src/XMLDocument.cpp, src/XMLNode.h,
+ tests/XMLNodeTest.cpp:
+ changed some structs to classes and replaced #includes with forward
+ declarations
+
+2016-06-03 Martin Gieseking <martin.gieseking@uos.de>
+
+ * CMakeLists.txt:
+ updated CMakeLists.txt
+
+ * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/Makefile.am,
+ src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.h,
+ src/PsSpecialHandler.cpp, src/dvisvgm.cpp:
+ added evaluation of PS special 'papersize='
+
+ * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h,
+ src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/SVGTree.cpp,
+ src/SVGTree.h:
+ refactored processing of end-of-page (eop) commands
+
+ * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h,
+ src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DVIToSVG.cpp,
+ src/DVIToSVGActions.cpp, src/DvisvgmSpecialHandler.cpp,
+ src/DvisvgmSpecialHandler.h, src/EPSToSVG.cpp, src/EmSpecialHandler.cpp,
+ src/EmSpecialHandler.h, src/HtmlSpecialHandler.cpp,
+ src/HtmlSpecialHandler.h, src/NoPsSpecialHandler.cpp,
+ src/NoPsSpecialHandler.h, src/PSPattern.cpp, src/PSPattern.h,
+ src/PdfSpecialHandler.cpp, src/PdfSpecialHandler.h,
+ src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SpecialHandler.h,
+ src/SpecialManager.cpp, src/SpecialManager.h, src/TpicSpecialHandler.cpp,
+ src/TpicSpecialHandler.h, tests/ColorSpecialTest.cpp,
+ tests/DvisvgmSpecialTest.cpp:
+ refactored handling of SpecialAction objects
+
+2016-06-02 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/DVIToSVG.cpp:
+ fixed transformation of background color rectange
+
+2016-05-31 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/DVIToSVG.cpp, src/EPSToSVG.cpp:
+ reworded messages printed after finishing a conversion
+
+2016-05-30 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/BasicDVIReader.cpp, src/BasicDVIReader.h, src/Bezier.h,
+ src/TensorProductPatch.h, src/TriangularPatch.h:
+ replaced leading spaces with tabs
+
+ * src/DVIToSVGActions.cpp, src/Font.cpp, src/Makefile.am,
+ src/SVGCharHandler.cpp, src/SVGCharHandler.h,
+ src/SVGCharHandlerFactory.cpp, src/SVGCharHandlerFactory.h,
+ src/SVGCharPathHandler.cpp, src/SVGCharPathHandler.h,
+ src/SVGCharTspanTextHandler.cpp, src/SVGCharTspanTextHandler.h,
+ src/SVGSingleCharTextHandler.cpp, src/SVGSingleCharTextHandler.h,
+ src/SVGTree.cpp, src/SVGTree.h, src/dvisvgm.cpp:
+ replaced static SVG text backend by specialized handler classes
+
+2016-05-29 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/BasicDVIReader.cpp, src/DVIReader.cpp:
+ fixed handling of subfont index in native font definition of XDV 7
+
+2016-05-27 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/XMLDocument.cpp, src/XMLNode.cpp, src/XMLNode.h,
+ tests/DvisvgmSpecialTest.cpp:
+ prevent line wrapping inside text nodes
+
+2016-05-26 Martin Gieseking <martin.gieseking@uos.de>
+
+ * README.md, doc/dvisvgm.txt.in, src/BasicDVIReader.cpp,
+ src/BasicDVIReader.h, src/DVIReader.cpp:
+ added support for XDV version 7 introduced by XeTeX 0.99995
+
+2016-05-25 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/TFM.cpp:
+ prevent reading more than 7 TFM param values (fixes #58)
+
+2016-05-24 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/TFM.cpp, tests/JFMReaderTest.cpp, tests/TFMReaderTest.cpp:
+ fixed calculation of character dimensions in TFM class
+
+ * src/FontMetrics.h, src/JFM.cpp, src/TFM.cpp, src/TFM.h:
+ added methods to query space-related parameters from TFM/JFM files
+
+ * src/JFM.cpp, src/JFM.h, src/TFM.cpp, src/TFM.h:
+ TFM: store design size in bp units rather than as fixword
+
+2016-04-22 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/Process.cpp:
+ fixed collecting stdout/stderr output when executing a process
+
+2016-04-20 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/CMap.h, src/CMapReader.cpp, tests/CMapManagerTest.cpp,
+ tests/Makefile.am, tests/data/Makefile.am, tests/data/ot1.cmap:
+ added CMapManagerTest
+
2016-04-19 Martin Gieseking <martin.gieseking@uos.de>
* NEWS, README, README.md:
updated NEWS and README
- * .travis.yml, configure.ac, src/CommandLine.cpp, src/Doxyfile:
+ * .travis.yml, configure.ac, src/Doxyfile:
set version to 1.15.1
2016-04-18 Martin Gieseking <martin.gieseking@uos.de>
@@ -701,9 +1719,9 @@
* doc/dvisvgm.txt.in:
minor additions and formatting changes of the manpage
- * doc/dvisvgm.txt.in, src/SVGOutput.cpp, src/SVGOutput.h,
- tests/Makefile.am, tests/SVGOutputTest.cpp, tests/create-makefile:
- added width specifiers and exression evaluation to --output patterns
+ * src/DVIToSVG.cpp, src/EPSToSVG.cpp, src/Makefile.am, src/SVGOutput.cpp,
+ src/SVGOutput.h, src/SVGOutputBase.h, src/dvisvgm.cpp:
+ moved class SVGOutput to separate compilation unit
2015-02-19 Martin Gieseking <martin.gieseking@uos.de>
@@ -729,11 +1747,6 @@
* src/TpicSpecialHandler.cpp:
use constant M_PI rather than computing PI locally
-2015-02-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * README, README.md:
- updated README and README.md
-
2015-01-21 Martin Gieseking <martin.gieseking@uos.de>
* src/TensorProductPatch.cpp, src/TriangularPatch.cpp:
@@ -1049,10 +2062,8 @@ Breaks standard things
* src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h:
removed unused emit() methods from XML classes
-2014-08-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * README.md:
- minor fixes to README.md
+ * src/dvisvgm.cpp:
+ removed old code that moved cache files to new location
2014-07-31 Martin Gieseking <martin.gieseking@uos.de>
@@ -1694,10 +2705,10 @@ Breaks standard things
replaced local std::map tables used in Font classes with new class
CharMap
-2013-08-22 Martin Gieseking <martin.gieseking@uos.de>
+2013-08-23 Martin Gieseking <martin.gieseking@uos.de>
- * src/XMLString.cpp:
- replace very small floating point numbers by 0
+ * src/SVGTree.cpp:
+ appended px unit to font-size attributes in style section
2013-08-20 Martin Gieseking <martin.gieseking@uos.de>
@@ -2000,8 +3011,9 @@ Breaks standard things
src/VFReader.cpp:
added missing member initializations to some classes
- * src/DVIToSVG.cpp, src/EPSToSVG.cpp, src/dvisvgm.cpp:
- avoid output of empty parentheses if TARGET_SYSTEM is not set
+ * doc/dvisvgm.txt.in, src/CmdLineParserBase.cpp, src/CommandLine.cpp,
+ src/options.dtd, src/options.xml:
+ added information about 'dvisvgm -E' to usage line
2013-04-20 Martin Gieseking <martin.gieseking@uos.de>
@@ -2094,11 +3106,21 @@ Breaks standard things
added methods to lookup attribute values and selected descendant XML
nodes
+ * src/XMLNode.cpp, src/XMLNode.h:
+ added virtual constructor XMLNode::clone()
+
2013-02-19 Martin Gieseking <martin.gieseking@uos.de>
* src/FilePath.cpp:
adapt path separators on Windows systems to get the correct output path
+ * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h,
+ src/DVIToSVG.cpp, src/DVIToSVG.h, src/EPSFile.cpp, src/EPSFile.h,
+ src/EPSToSVG.cpp, src/EPSToSVG.h, src/Makefile.am,
+ src/PsSpecialHandler.cpp, src/SVGOutputBase.h, src/dvisvgm.cpp,
+ src/options.xml:
+ add option to directly convert EPS files to SVG
+
* src/PSInterpreter.cpp, src/PSInterpreter.h:
added PSInterpreter::limit() to limit the number of bytes to be
processed
@@ -2115,15 +3137,6 @@ Breaks standard things
src/CommandLine.cpp, src/CommandLine.h, src/dvisvgm.cpp, src/options.xml:
added optional parameter to option --help to specify output format
-2013-02-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/CommandLine.cpp,
- src/CommandLine.h, src/EmSpecialHandler.cpp, src/GraphicPath.h,
- src/Matrix.cpp, src/PsSpecialHandler.cpp, src/TpicSpecialHandler.cpp,
- src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/options.xml:
- added option --precision to set the number of decimal places applied to
- attribute values
-
2013-01-30 Martin Gieseking <martin.gieseking@uos.de>
* src/CommandLine.cpp:
@@ -2360,11 +3373,6 @@ Breaks standard things
tests/StreamInputBufferTest.cpp:
some refactorings of class InputReader; added InputReader::find()
-2012-10-24 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVG.cpp, src/DVIToSVG.h, src/dvisvgm.cpp:
- don't show warning about disabled PS support in list of special handlers
-
2012-09-27 Martin Gieseking <martin.gieseking@uos.de>
* doc/Makefile.am:
@@ -2381,19 +3389,21 @@ Breaks standard things
* src/PsSpecialHandler.cpp, src/PsSpecialHandler.h:
removed Ghostscript info from ps entry in list of special handlers
- * src/DVIToSVG.cpp:
- show warning if processing of PS specials is disabled
+2012-09-19 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/psdefs.ps, src/psdefs.psc:
+ ignore dvips bop operators that might be present in PS specials
+
+2012-09-17 Martin Gieseking <martin.gieseking@uos.de>
+
+ * src/StreamReader.cpp:
+ fixed reading invalid number of string characters
2012-06-06 Martin Gieseking <martin.gieseking@uos.de>
* src/gfprint.mak:
fixed bugs in gfprint, and added gfprint.mak for easier builds
-2012-04-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/Makefile.am:
- keep manpage when calling 'make clean' or 'make distclean'
-
2012-04-04 Martin Gieseking <martin.gieseking@uos.de>
* src/DVIToSVGActions.cpp, src/SVGTree.cpp, src/SVGTree.h,
@@ -2448,15 +3458,6 @@ Breaks standard things
* README:
updated information about bug reporting
-2012-01-26 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CmdLineParserBase.h, src/DVIActions.h, src/DVIReader.h,
- src/DVIToSVGActions.h, src/FontEngine.h, src/FontManager.h,
- src/MetafontWrapper.h, src/SVGTree.h, src/SpecialActions.h,
- src/SpecialHandler.h, src/SpecialManager.h, src/TFM.h, src/VFReader.h:
- adapt forward declarations of classes and structs to their corresponding
- definition (SF bug #3480013)
-
2012-01-09 Martin Gieseking <martin.gieseking@uos.de>
* src/TpicSpecialHandler.cpp:
@@ -3306,6 +4307,10 @@ Breaks standard things
src/SVGFontEmitter.cpp, src/SVGFontEmitter.h:
removed class Glyph and incorporated its functionality into Font class
+ * src/Font.h, src/FontEncoding.cpp, src/FontEncoding.h,
+ src/FontManager.cpp, src/FontManager.h, src/SVGFontEmitter.cpp:
+ moved method encoding() from class FontManager to class FontEncoding
+
2010-02-05 Martin Gieseking <martin.gieseking@uos.de>
* src/DVIToSVG.cpp:
@@ -3533,10 +4538,10 @@ Breaks standard things
* src/GraphicPath.h, src/PsSpecialHandler.cpp:
PS handler: replace zero-length paths by dots
-2009-10-29 Martin Gieseking <martin.gieseking@uos.de>
+2009-10-25 Martin Gieseking <martin.gieseking@uos.de>
- * src/DVIToSVGActions.cpp, src/Font.cpp, src/Font.h:
- fixed positioning of italic characters
+ * src/DvisvgmSpecialHandler.cpp:
+ added macro {?nl} to dvisvgm:raw evaluator
2009-10-18 Martin Gieseking <martin.gieseking@uos.de>
@@ -3701,25 +4706,25 @@ Breaks standard things
* NEWS, src/PsSpecialHandler.cpp:
fixed another positioning bug reported by John Bowman
- * src/PsSpecialHandler.cpp:
- convert PS path coordinated to TeX point units
-
2009-10-04 Martin Gieseking <martin.gieseking@uos.de>
+ * src/Makefile.old, src/Makefile.orig:
+ renamed the old original Makefile
+
* src/GraphicPath.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h:
corrected positioning bug introduced with previous PS positioning fix
+ * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVGActions.cpp,
+ src/DVIToSVGActions.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h,
+ src/SpecialActions.h, src/psdefs.ps, src/psdefs.psc:
+ fixed positioning bug reported by John Bowman
+
2009-10-02 Martin Gieseking <martin.gieseking@uos.de>
* doc/Makefile.am, doc/dvisvgm.txt.in:
generate pdf manpage directly with groff; adapted manpage source to work
with latest asciidoc
-2009-10-01 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/Makefile.am, doc/dvisvgm.txt.in:
- replaced backticks in manpage by apostrophes; updated date on homepage
-
2009-09-30 Martin Gieseking <martin.gieseking@uos.de>
* Makefile.am, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
@@ -3731,13 +4736,17 @@ Breaks standard things
* doc/dvisvgm.txt.in:
added dvisvgm:raw example to man page
+ * src/DvisvgmSpecialHandler.cpp:
+ added optional depth parameter to special dvisvgm:raw
+
2009-09-17 Martin Gieseking <martin.gieseking@uos.de>
* doc/dvisvgm.txt.in:
minor changes of the documentation
- * fedora/dvisvgm.spec:
- updated spec file and fixed typo on website
+ * doc/dvisvgm.txt.in:
+ corrected info about --verbosity in manual page (reported by John
+ Bowman)
* src/PsSpecialHandler.h:
increased the default linewidth to 0.5
@@ -3834,14 +4843,21 @@ Breaks standard things
src/SpecialManager.cpp, src/SpecialManager.h:
PS prologue files referenced in first page are now always loaded
+ * fedora/dvisvgm-0.8.1-potrace.patch, fedora/dvisvgm-gs.patch,
+ fedora/dvisvgm-potrace.patch, fedora/dvisvgm.spec:
+ updated Fedora files
+
* configure.ac, fedora/dvisvgm.spec, src/Ghostscript.cpp,
src/Ghostscript.h, src/Makefile.am:
improved Ghostscript and potrace linking checks to simplify usage of
external devel files
- * fedora/dvisvgm-0.8.1-potrace.patch, fedora/dvisvgm-gs.patch,
- fedora/dvisvgm-potrace.patch, fedora/dvisvgm.spec:
- updated Fedora files
+2009-08-25 Martin Gieseking <martin.gieseking@uos.de>
+
+ * configure.ac, src/DVIToSVGActions.cpp, src/Ghostscript.cpp,
+ src/Ghostscript.h:
+ added configuration method to directly bind the Ghostscript shared
+ library
2009-08-24 Martin Gieseking <martin.gieseking@uos.de>
@@ -4226,10 +5242,10 @@ Breaks standard things
2009-02-25 Martin Gieseking <martin.gieseking@uos.de>
- * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h,
- src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp,
- src/SpecialActions.h, src/TpicSpecialHandler.cpp:
- renamed appendInPage() to appendToPage
+ * configure.ac, doc/Makefile.am, doc/caution.png, doc/dvisvgm.1.in,
+ doc/dvisvgm.txt, doc/note.png:
+ replaced manually written dvisvgm.1.in by an asciidoc file
+ (dvisvgm.txt.in)
2009-02-24 Martin Gieseking <martin.gieseking@uos.de>
@@ -4289,9 +5305,14 @@ Breaks standard things
2009-02-17 Martin Gieseking <martin.gieseking@uos.de>
- * src/DVIReader.cpp:
- made DVICommand local to executeCommand, removed unnecessary if
- statement
+ * src/BoundingBox.cpp, src/ColorSpecialHandler.cpp,
+ src/ColorSpecialHandler.h, src/DVIToSVGActions.cpp, src/FontGlyph.cpp,
+ src/InputBuffer.cpp, src/InputBuffer.h, src/Makefile.am, src/Pair.h,
+ src/SpecialActions.h, src/SpecialColorHandler.cpp,
+ src/SpecialColorHandler.h, src/SpecialEmHandler.cpp,
+ src/SpecialEmHandler.h, src/TransformationMatrix.cpp,
+ src/tests/ColorSpecialTest.h:
+ added skeleton of em special handler; doesn't work yet
2009-02-15 Martin Gieseking <martin.gieseking@uos.de>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/LGPL-2.1.txt b/Build/source/texk/dvisvgm/dvisvgm-src/LGPL-2.1.txt
deleted file mode 100644
index 602bfc94635..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/LGPL-2.1.txt
+++ /dev/null
@@ -1,504 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.am
index aa6cfb00cab..4eb60d5e7ab 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.am
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.am
@@ -1,11 +1,11 @@
## This file is part of dvisvgm
-## Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de>
+## Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de>
##
## Process this file with automake.
AUTOMAKE_OPTIONS = foreign
-EXTRA_DIST = COPYING LGPL-2.1.txt
-SUBDIRS = clipper xxHash src tests doc
+EXTRA_DIST = COPYING
+SUBDIRS = libs src tests doc
if CODE_COVERAGE_ENABLED
lcov_dir=$(top_builddir)/lcov
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in
new file mode 100644
index 00000000000..21c9c526608
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in
@@ -0,0 +1,821 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+ $(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \
+ COPYING ChangeLog INSTALL NEWS README compile config.guess \
+ config.sub depcomp install-sh missing
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GCOV = @GCOV@
+GENHTML = @GENHTML@
+GREP = @GREP@
+HAVE_CXX11 = @HAVE_CXX11@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCOV = @LCOV@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ZLIB_CFLAGS = @ZLIB_CFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign
+EXTRA_DIST = COPYING
+SUBDIRS = libs src tests doc
+@CODE_COVERAGE_ENABLED_TRUE@lcov_dir = $(top_builddir)/lcov
+@CODE_COVERAGE_ENABLED_TRUE@lcov_file = $(lcov_dir)/lcov.info
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+ @test -f $@ || rm -f stamp-h1
+ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
+ $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__post_remove_distdir)
+
+dist-shar: distdir
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
+ $(am__post_remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__post_remove_distdir)
+
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build/sub \
+ && ../../configure \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=../.. --prefix="$$dc_install_base" \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__post_remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile config.h
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) all install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--refresh check check-am clean clean-cscope clean-generic \
+ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
+ distcheck distclean distclean-generic distclean-hdr \
+ distclean-tags distcleancheck distdir distuninstallcheck dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am
+
+.PRECIOUS: Makefile
+
+
+@CODE_COVERAGE_ENABLED_TRUE@lcov-report:
+@CODE_COVERAGE_ENABLED_TRUE@ @mkdir -p $(lcov_dir)
+@CODE_COVERAGE_ENABLED_TRUE@ lcov --capture --directory . --no-external -o $(lcov_file)
+@CODE_COVERAGE_ENABLED_TRUE@ lcov --remove $(lcov_file) "gzstream.*" -o $(lcov_file)
+@CODE_COVERAGE_ENABLED_TRUE@ genhtml --title "dvisvgm" --num-spaces 2 --legend -o $(lcov_dir) $(lcov_file)
+
+@CODE_COVERAGE_ENABLED_TRUE@lcov-clean:
+@CODE_COVERAGE_ENABLED_TRUE@ @rm -rf $(lcov_dir)
+@CODE_COVERAGE_ENABLED_TRUE@ @find . -name "*.gcda" -exec rm {} \;
+@CODE_COVERAGE_ENABLED_TRUE@ lcov --zerocounters --directory .
+
+@CODE_COVERAGE_ENABLED_TRUE@coverage: lcov-clean check lcov-report
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/NEWS b/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
index 297dae9de84..c1ec3a0579d 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
@@ -1,7 +1,40 @@
+dvisvgm-2.1 (2017-01-19)
+- added option --tmpdir to explicitly set temp folder
+- temporary files are no longer created in the current working directory by
+ default but in the system's temp folder (GH bug #63)
+- added warning/error messages if temporary files could not be written
+- fixed collision of Unicode points in AGL table (GH bug #64)
+- retain letter case of filenames even if not significant (Windows only)
+- code refactorings and cleanup
+
+dvisvgm-2.0.4 (2016-11-16)
+- bundled reduced FontForge library (ff-woff) with the sources
+- minor fixes in manpage and --help texts
+- few code improvements
+
+dvisvgm-2.0.3 (2016-09-27)
+- fixed a regression in the character positioning of virtual fonts
+- fixed positioning of rules
+
+dvisvgm-2.0.2 (2016-09-19)
+- fixed computation of the character depths of native fonts
+- fixed a regression in the computation of DVI positions (GH bug #61)
+
+dvisvgm-2.0.1 (2016-09-03)
+- added optional argument parameter "autohint" to option --font-format in order
+ to create autohinted TTF, WOFF, or WOFF2 fonts
+
+dvisvgm-2.0 (2016-08-29)
+- added option --font-format to select the data format of embedded fonts
+ (currently supported formats: SVG, TTF, WOFF, WOFF2)
+- switched the code base from C++03 to C++11
+- reimplemented the command-line parser and the CommandLine class generator
+- major refactorings of several parts of the code
+
dvisvgm-1.16 (2016-07-04)
-- added support of XDV version 7 introduced by XeTeX 0.99995
+- added support for XDV version 7 introduced by XeTeX 0.99995
- added optional processing of papersize specials
-- added support of length units cc, dd, and sp
+- added support for length units cc, dd, and sp
- fixed unit conversion in computation of bounding boxes
- fixed propagation of resolution value to the glyph vectorizer
- fixed transformation of background rectangle
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/README b/Build/source/texk/dvisvgm/dvisvgm-src/README
index 7bc0084a7e7..1f75bfa5cd5 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/README
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/README
@@ -14,6 +14,13 @@ DEPENDENCIES
to polygons, intersects them using Clipper, and reconstructs the curves
afterwards.
+ * FontForge library (http://www.fontforge.org)
+ dvisvgm can be built with optional WOFF support that allows to embed the
+ font data in WOFF or TrueType format rather than as SVG. The FontForge
+ library provides the required functions to create font files in these
+ formats. A reduced version of the library is bundled with the dvisvgm
+ sources. It's also available at https://github.com/mgieseki/ff-woff.
+
* FreeType 2 (http://www.freetype.org)
This library is used to extract the glyph outlines from vector fonts
(PFB, OTF, TTF).
@@ -24,9 +31,9 @@ DEPENDENCIES
If the configure script finds the corresponding Ghostscript development
files on the system, it directly links against libgs.so.N, where N is the
library's ABI version. Otherwise, the library is looked up at runtime,
- and PostScript support is enabled only if libgs.so can be found. Due to
- incompatible changes of the Ghostscript API, dvisvgm requires Ghostscript 8.31
- or later.
+ and PostScript support is enabled only if libgs.so can be found.
+ Due to incompatible changes of the Ghostscript API, dvisvgm requires
+ Ghostscript 8.31 or later.
* kpathsea (https://tug.org/kpathsea)
This library is part of the Web2C package and is usually installed in
@@ -38,6 +45,10 @@ DEPENDENCIES
Peter Selinger's bitmap tracing library is utilized to vectorize Metafont's
bitmap output.
+ * woff2 and brotli (https://github.com/google/woff2)
+ These Google libraries are bundled with the dvisvgm sources. They are used
+ to create WOFF2 from TrueType fonts.
+
* xxHash (https://github.com/Cyan4973/xxHash)
The xxHash library provides a fast hash algorithm. dvisvgm uses it to
create unique integer values from PostScript character names in order to
@@ -98,7 +109,7 @@ ADDITIONAL INFORMATION
COPYRIGHT
- Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de>
+ Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/config.h.in b/Build/source/texk/dvisvgm/dvisvgm-src/config.h.in
index fcd8cf41872..894544f71ab 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/config.h.in
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/config.h.in
@@ -6,9 +6,15 @@
/* Set to 1 if PostScript support should be disabled */
#undef DISABLE_GS
+/* Define if WOFF support is disabled */
+#undef DISABLE_WOFF
+
/* Define to 1 if `TIOCGWINSZ' requires <sys/ioctl.h>. */
#undef GWINSZ_IN_SYS_IOCTL
+/* define if the compiler supports basic C++11 syntax */
+#undef HAVE_CXX11
+
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
*/
#undef HAVE_DIRENT_H
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac b/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
index ecd3830be4e..2fbf783a071 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
@@ -1,24 +1,26 @@
# This file is part of dvisvgm
-# Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de>
+# Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de>
#
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
-AC_INIT([dvisvgm],[1.16],[martin.gieseking@uos.de])
-DATE="July 2016"
+AC_INIT([dvisvgm],[2.1],[martin.gieseking@uos.de])
+DATE="January 2017"
AC_CONFIG_SRCDIR(src)
AC_CONFIG_HEADER(config.h)
AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_HOST
AC_CANONICAL_TARGET
-AM_INIT_AUTOMAKE
+AM_INIT_AUTOMAKE([subdir-objects])
AH_TEMPLATE([TARGET_SYSTEM], [The machine triplet of the target system])
AC_DEFINE_UNQUOTED([TARGET_SYSTEM], ["$target"])
# Checks for programs.
-AC_PROG_CXX
AC_PROG_CC
+AC_PROG_CC_C99
+AC_PROG_CXX
+AX_CXX_COMPILE_STDCXX([11], [noext])
AC_PROG_RANLIB
AC_LANG(C)
@@ -27,9 +29,9 @@ AC_CHECK_FUNCS([ftime gettimeofday])
AC_CHECK_HEADERS([sys/time.h sys/timeb.h])
AC_HEADER_TIOCGWINSZ
-AC_CHECK_HEADER([kpathsea/kpathsea.h], ,
+AC_CHECK_HEADER([kpathsea/kpathsea.h], ,
[AC_MSG_ERROR([please install the kpathsea development package])])
-AC_CHECK_LIB(kpathsea, kpse_find_file, ,
+AC_CHECK_LIB(kpathsea, kpse_find_file, ,
[AC_MSG_ERROR([libkpathsea not found, please install the corresponding package first])])
AC_MSG_CHECKING([kpathsea version])
@@ -42,7 +44,7 @@ AC_RUN_IFELSE([AC_LANG_SOURCE([#include <stdio.h>
fprintf(f, "%s\n", KPSEVERSION);
fclose(f);
exit(0);
- }])],
+ }])],
[kpseversion=`cat kpseversion|sed 's/kpathsea version //'`], [kpseversion=], [kpseversion=unknown])
AC_MSG_RESULT("$kpseversion")
rm -f kpseversion
@@ -53,7 +55,7 @@ fi
# Check how to link potracelib
HAVE_LIBPOTRACE=1
-AC_CHECK_HEADER([potracelib.h],
+AC_CHECK_HEADER([potracelib.h],
[AC_CHECK_LIB(m, sqrt) # required to pass potrace check
AC_CHECK_LIB(potrace, potrace_trace, , HAVE_LIBPOTRACE=0)], HAVE_LIBPOTRACE=0)
@@ -64,7 +66,7 @@ fi
# Check how to link Ghostscript
HAVE_LIBGS=1
-AC_CHECK_HEADER([ghostscript/iapi.h],
+AC_CHECK_HEADER([ghostscript/iapi.h],
AC_CHECK_LIB(gs, gsapi_new_instance, , HAVE_LIBGS=0), HAVE_LIBGS=0)
if test "$HAVE_LIBGS" -eq 0; then
@@ -79,7 +81,7 @@ else
int main () {
gsapi_revision_t r;
if (gsapi_revision(&r, sizeof(gsapi_revision_t)) == 0) {
- FILE *f;
+ FILE *f;
f = fopen("gsversion", "w");
if (!f) exit(1);
fprintf(f, "%ld\n", r.revision);
@@ -105,6 +107,16 @@ PKG_PROG_PKG_CONFIG
# Check for libraries.
PKG_CHECK_MODULES([FREETYPE], [freetype2])
+AC_ARG_ENABLE([woff],
+ [AS_HELP_STRING([--disable-woff], [Disable WOFF support @<:@no@:>@])],
+ [],
+ [enable_woff=yes])
+
+AM_CONDITIONAL([ENABLE_WOFF], [test "x$enable_woff" = "xyes"])
+if test "x$enable_woff" != "xyes" ; then
+ AC_DEFINE([DISABLE_WOFF], 1, [Define if WOFF support is disabled])
+fi
+
AC_CHECK_LIB(z, gzopen)
# Check for header files.
@@ -173,9 +185,14 @@ AC_SUBST(AM_CPPFLAGS)
AC_SUBST(AM_LDFLAGS)
AC_CONFIG_FILES([
Makefile
- clipper/Makefile
- xxHash/Makefile
+ libs/Makefile
+ libs/clipper/Makefile
+ libs/ff-woff/Makefile
+ libs/woff2/Makefile
+ libs/woff2/brotli/Makefile
+ libs/xxHash/Makefile
src/Makefile
+ src/version.hpp
tests/Makefile
tests/data/Makefile
doc/dvisvgm.txt
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.am
index 8dd10a7758c..7a9fc6dbfef 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.am
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.am
@@ -1,5 +1,5 @@
## This file is part of dvisvgm
-## Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de>
+## Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de>
##
## Process this file with automake.
@@ -9,19 +9,21 @@ EXTRA_DIST = $(man_MANS) conf-dblatex-man.xsl conf-dblatex-pdf.xsl tweak-dblatex
CONF_DBLATEX_MAN = $(top_srcdir)/doc/conf-dblatex-man.xsl
CONF_DBLATEX_PDF = $(top_srcdir)/doc/conf-dblatex-pdf.xsl
TWEAK_DBLATEX_PDF = $(top_srcdir)/doc/tweak-dblatex-pdf.xsl
+TWEAK_DB_ARTICLE = $(top_srcdir)/doc/tweak-db-article.xsl
DB_VARS = man.endnotes.list.enabled=0 man.endnotes.are.numbered=0 man.authors.section.enabled=0
-dvisvgm.1: dvisvgm.xml $(CONF_DBLATEX_MAN)
+dvisvgm.1: dvisvgm-man.xml $(CONF_DBLATEX_MAN)
if [ `type -p xmlto` ]; then \
xmlto -m $(CONF_DBLATEX_MAN) $(addprefix --stringparam , $(DB_VARS)) man $<; \
fi
-dvisvgm.pdf: dvisvgm.xml $(CONF_DBLATEX_PDF) $(TWEAK_DBLATEX_PDF)
+dvisvgm.pdf: dvisvgm-man.xml $(CONF_DBLATEX_PDF) $(TWEAK_DBLATEX_PDF)
mv $< $<.tmp
xsltproc -o $< $(TWEAK_DBLATEX_PDF) $<.tmp
dblatex -bxetex --texstyle=./dvisvgm.sty -p $(CONF_DBLATEX_PDF) $<
mv $<.tmp $<
+ mv $(basename $<).pdf $@
dvi-pdf: dvisvgm.dvi
dvipdfm $<
@@ -30,25 +32,34 @@ dvi-pdf: dvisvgm.dvi
dvisvgm.dvi: dvisvgm.1
groff -Tdvi -mandoc ./$< >$@
-dvisvgm.html: dvisvgm.xml
+dvisvgm.html: dvisvgm-man.xml
xsltproc -o $@ db2html.xsl $<
-dvisvgm.epub: dvisvgm.xml
- a2x -dmanpage -fmanpage -L -a icons $<;
+dvisvgm.epub: dvisvgm-article.xml
+ a2x -darticle -fepub -L --icons --icons-dir=. $<
+ mv $(basename $<).epub $@
-dvisvgm.xml: dvisvgm.txt
+dvisvgm-man.xml: dvisvgm.txt
if [ `type -p asciidoc` ]; then \
- asciidoc -a icons -a 'iconsdir=.' -a badges -a 'revnumber=@VERSION@' --unsafe -bdocbook -dmanpage $<; \
+ asciidoc -a icons -a 'iconsdir=.' -a badges -a 'revnumber=@VERSION@' --unsafe -bdocbook -dmanpage -o $@ $<; \
sed -i "s#\(</refmeta>\)#<refmiscinfo class='date'>$(shell stat -c %y $<)</refmiscinfo>\n\1#" $@; \
fi
+dvisvgm-article.xml: dvisvgm.txt
+ if [ `type -p asciidoc` ]; then \
+ asciidoc -a icons -a 'iconsdir=.' -a badges -a 'revnumber=@VERSION@' --unsafe -bdocbook -darticle -o $@.tmp $<; \
+ xsltproc -o $@ $(TWEAK_DB_ARTICLE) $@.tmp; \
+ rm $@.tmp; \
+ sed -i "s/{VERSION}/@VERSION@/" $@; \
+ fi
+
epub: dvisvgm.epub
html: dvisvgm.html
man: dvisvgm.1
pdf: dvisvgm.pdf
clean:
- rm -f dvisvgm.pdf dvisvgm.html dvisvgm.xml dvisvgm.txt dvisvgm.dvi dvisvgm.epub
+ rm -f dvisvgm.pdf dvisvgm.html dvisvgm-man.xml dvisvgm-article.xml dvisvgm.txt dvisvgm.dvi dvisvgm.epub
distclean-local:
- rm -f dvisvgm.pdf dvisvgm.html dvisvgm.xml dvisvgm.txt dvisvgm.dvi dvisvgm.epub dvisvgm.1
+ rm -f dvisvgm.pdf dvisvgm.html dvisvgm-man.xml dvisvgm-article.xml dvisvgm.txt dvisvgm.dvi dvisvgm.epub dvisvgm.1
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.in
new file mode 100644
index 00000000000..2e3baa9f497
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.in
@@ -0,0 +1,567 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = doc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = dvisvgm.txt
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)"
+NROFF = nroff
+MANS = $(man_MANS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/dvisvgm.txt.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GCOV = @GCOV@
+GENHTML = @GENHTML@
+GREP = @GREP@
+HAVE_CXX11 = @HAVE_CXX11@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCOV = @LCOV@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ZLIB_CFLAGS = @ZLIB_CFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+man_MANS = dvisvgm.1
+EXTRA_DIST = $(man_MANS) conf-dblatex-man.xsl conf-dblatex-pdf.xsl tweak-dblatex-pdf.xsl
+CONF_DBLATEX_MAN = $(top_srcdir)/doc/conf-dblatex-man.xsl
+CONF_DBLATEX_PDF = $(top_srcdir)/doc/conf-dblatex-pdf.xsl
+TWEAK_DBLATEX_PDF = $(top_srcdir)/doc/tweak-dblatex-pdf.xsl
+TWEAK_DB_ARTICLE = $(top_srcdir)/doc/tweak-db-article.xsl
+DB_VARS = man.endnotes.list.enabled=0 man.endnotes.are.numbered=0 man.authors.section.enabled=0
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+dvisvgm.txt: $(top_builddir)/config.status $(srcdir)/dvisvgm.txt.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(MANS)
+installdirs:
+ for dir in "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-local
+
+dvi: dvi-am
+
+dvi-am:
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distclean-local distdir \
+ dvi dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-man1 \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am uninstall-man uninstall-man1
+
+.PRECIOUS: Makefile
+
+
+dvisvgm.1: dvisvgm-man.xml $(CONF_DBLATEX_MAN)
+ if [ `type -p xmlto` ]; then \
+ xmlto -m $(CONF_DBLATEX_MAN) $(addprefix --stringparam , $(DB_VARS)) man $<; \
+ fi
+
+dvisvgm.pdf: dvisvgm-man.xml $(CONF_DBLATEX_PDF) $(TWEAK_DBLATEX_PDF)
+ mv $< $<.tmp
+ xsltproc -o $< $(TWEAK_DBLATEX_PDF) $<.tmp
+ dblatex -bxetex --texstyle=./dvisvgm.sty -p $(CONF_DBLATEX_PDF) $<
+ mv $<.tmp $<
+ mv $(basename $<).pdf $@
+
+dvi-pdf: dvisvgm.dvi
+ dvipdfm $<
+ rm -f $<
+
+dvisvgm.dvi: dvisvgm.1
+ groff -Tdvi -mandoc ./$< >$@
+
+dvisvgm.html: dvisvgm-man.xml
+ xsltproc -o $@ db2html.xsl $<
+
+dvisvgm.epub: dvisvgm-article.xml
+ a2x -darticle -fepub -L --icons --icons-dir=. $<
+ mv $(basename $<).epub $@
+
+dvisvgm-man.xml: dvisvgm.txt
+ if [ `type -p asciidoc` ]; then \
+ asciidoc -a icons -a 'iconsdir=.' -a badges -a 'revnumber=@VERSION@' --unsafe -bdocbook -dmanpage -o $@ $<; \
+ sed -i "s#\(</refmeta>\)#<refmiscinfo class='date'>$(shell stat -c %y $<)</refmiscinfo>\n\1#" $@; \
+ fi
+
+dvisvgm-article.xml: dvisvgm.txt
+ if [ `type -p asciidoc` ]; then \
+ asciidoc -a icons -a 'iconsdir=.' -a badges -a 'revnumber=@VERSION@' --unsafe -bdocbook -darticle -o $@.tmp $<; \
+ xsltproc -o $@ $(TWEAK_DB_ARTICLE) $@.tmp; \
+ rm $@.tmp; \
+ sed -i "s/{VERSION}/@VERSION@/" $@; \
+ fi
+
+epub: dvisvgm.epub
+html: dvisvgm.html
+man: dvisvgm.1
+pdf: dvisvgm.pdf
+
+clean:
+ rm -f dvisvgm.pdf dvisvgm.html dvisvgm-man.xml dvisvgm-article.xml dvisvgm.txt dvisvgm.dvi dvisvgm.epub
+
+distclean-local:
+ rm -f dvisvgm.pdf dvisvgm.html dvisvgm-man.xml dvisvgm-article.xml dvisvgm.txt dvisvgm.dvi dvisvgm.epub dvisvgm.1
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-man.xsl b/Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-man.xsl
index b7004b389f7..bddaf5eee2d 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-man.xsl
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-man.xsl
@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file is part of dvisvgm -->
-<!-- Copyright (C) 2015-2016 Martin Gieseking -->
+<!-- Copyright (C) 2015-2017 Martin Gieseking <martin.gieseking@uos.de> -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <!-- output monospaced text in bold -->
- <xsl:template match="literal">
- <xsl:text>\fB</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>\fR</xsl:text>
- </xsl:template>
+ <!-- output monospaced text in bold -->
+ <xsl:template match="literal">
+ <xsl:text>\fB</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>\fR</xsl:text>
+ </xsl:template>
- <!-- append URL to hyperlinked text pointing to external targets -->
- <xsl:template match="ulink[not(contains(., '://')) and not(contains(@url, 'mailto:'))]">
- <xsl:apply-templates/>
- <xsl:text> (\m[blue]</xsl:text>
- <xsl:value-of select="@url"/>
- <xsl:text>\m[])</xsl:text>
- </xsl:template>
+ <!-- append URL to hyperlinked text pointing to external targets -->
+ <xsl:template match="ulink[not(contains(., '://')) and not(contains(@url, 'mailto:'))]">
+ <xsl:apply-templates/>
+ <xsl:text> (\m[blue]</xsl:text>
+ <xsl:value-of select="@url"/>
+ <xsl:text>\m[])</xsl:text>
+ </xsl:template>
</xsl:stylesheet>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-pdf.xsl b/Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-pdf.xsl
index 39d28a9eecb..d8d881e1150 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-pdf.xsl
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-pdf.xsl
@@ -1,52 +1,52 @@
<?xml version='1.0' encoding="iso-8859-1"?>
<!-- This file is part of dvisvgm -->
-<!-- Copyright (C) 2015-2016 Martin Gieseking -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
- <xsl:param name="xetex.font">
- <xsl:text>\setmainfont{Source Sans Pro}&#10;</xsl:text>
- <xsl:text>\setsansfont{Source Sans Pro}&#10;</xsl:text>
- <xsl:text>\setmonofont{Source Code Pro}&#10;</xsl:text>
- </xsl:param>
+<!-- Copyright (C) 2015-2017 Martin Gieseking <martin.gieseking@uos.de> -->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:param name="xetex.font">
+ <xsl:text>\setmainfont{Source Sans Pro}&#10;</xsl:text>
+ <xsl:text>\setsansfont{Source Sans Pro}&#10;</xsl:text>
+ <xsl:text>\setmonofont{Source Code Pro}&#10;</xsl:text>
+ </xsl:param>
- <xsl:param name="doc.toc.show">0</xsl:param>
- <xsl:param name="refentry.numbered">0</xsl:param>
- <xsl:param name="figure.caution">caution</xsl:param>
- <xsl:param name="figure.note">note</xsl:param>
- <xsl:param name="table.default.tabstyle">tabular</xsl:param>
- <xsl:param name="table.in.float">0</xsl:param>
- <xsl:param name="term.breakline">1</xsl:param>
-
- <xsl:param name="literal.layout.options">
- <xsl:text>basicstyle=\ttfamily\small,backgroundcolor=\color[gray]{0.9},columns=fullflexible,frame=single</xsl:text>
- </xsl:param>
+ <xsl:param name="doc.toc.show">0</xsl:param>
+ <xsl:param name="refentry.numbered">0</xsl:param>
+ <xsl:param name="figure.caution">caution</xsl:param>
+ <xsl:param name="figure.note">note</xsl:param>
+ <xsl:param name="table.default.tabstyle">tabular</xsl:param>
+ <xsl:param name="table.in.float">0</xsl:param>
+ <xsl:param name="term.breakline">1</xsl:param>
- <!-- ensure processing of refmiscinfo elements -->
- <xsl:template match="refentry">
- <xsl:apply-templates select="refmeta/refmiscinfo"/>
- <xsl:apply-imports/>
- </xsl:template>
+ <xsl:param name="literal.layout.options">
+ <xsl:text>basicstyle=\ttfamily\small,backgroundcolor=\color[gray]{0.9},columns=fullflexible,frame=single</xsl:text>
+ </xsl:param>
- <!-- put refmiscinfo data into the TeX file -->
- <xsl:template match="refmiscinfo[@class]">
- <xsl:value-of select="concat('\def\refmiscinfo', @class, '{', ., '}&#10;')"/>
- </xsl:template>
+ <!-- ensure processing of refmiscinfo elements -->
+ <xsl:template match="refentry">
+ <xsl:apply-templates select="refmeta/refmiscinfo"/>
+ <xsl:apply-imports/>
+ </xsl:template>
- <!-- output TOC before synopsis section -->
- <xsl:template match="refsynopsisdiv">
- <xsl:text>\tableofcontents&#10;</xsl:text>
- <xsl:call-template name="makeheading">
- <xsl:with-param name="level">2</xsl:with-param>
- <xsl:with-param name="num">1</xsl:with-param>
- </xsl:call-template>
- <xsl:apply-templates/>
- </xsl:template>
+ <!-- put refmiscinfo data into the TeX file -->
+ <xsl:template match="refmiscinfo[@class]">
+ <xsl:value-of select="concat('\def\refmiscinfo', @class, '{', ., '}&#10;')"/>
+ </xsl:template>
- <!-- force non-star \subsection commands -->
- <xsl:template match="refsect1">
- <xsl:call-template name="makeheading">
- <xsl:with-param name="level">2</xsl:with-param>
- <xsl:with-param name="num">1</xsl:with-param>
- </xsl:call-template>
- <xsl:apply-templates/>
- </xsl:template>
+ <!-- output TOC before synopsis section -->
+ <xsl:template match="refsynopsisdiv">
+ <xsl:text>\tableofcontents&#10;</xsl:text>
+ <xsl:call-template name="makeheading">
+ <xsl:with-param name="level">2</xsl:with-param>
+ <xsl:with-param name="num">1</xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- force non-star \subsection commands -->
+ <xsl:template match="refsect1">
+ <xsl:call-template name="makeheading">
+ <xsl:with-param name="level">2</xsl:with-param>
+ <xsl:with-param name="num">1</xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:template>
</xsl:stylesheet>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
index 3fa4e8a683f..4a3fd1ae003 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
@@ -1,13 +1,13 @@
'\" t
.\" Title: dvisvgm
.\" Author: Martin Gieseking <martin.gieseking@uos.de>
-.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\" Date: 07/04/2016
+.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
+.\" Date: 01/19/2017
.\" Manual: dvisvgm Manual
-.\" Source: dvisvgm 1.16
+.\" Source: dvisvgm 2.1
.\" Language: English
.\"
-.TH "DVISVGM" "1" "07/04/2016" "dvisvgm 1\&.16" "dvisvgm Manual"
+.TH "DVISVGM" "1" "01/19/2017" "dvisvgm 2\&.1" "dvisvgm Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -250,6 +250,29 @@ This option tells dvisvgm to compute the precise bounding box of each character\
given, dvisvgm analyzes the actual shape of each character and derives a usually tight bounding box\&.
.RE
.PP
+\fB\-f, \-\-font\-format\fR=\fIformat\fR
+.RS 4
+Selects the file format used to embed the font data into the SVG files\&. Following formats are supported:
+\fBSVG\fR
+(that\(cqs the default),
+\fBTTF\fR
+(TrueType),
+\fBWOFF\fR, and
+\fBWOFF2\fR
+(Web Open Font Format version 1 and 2)\&. By default, dvisvgm creates unhinted fonts that might look bad on low\-resolution devices\&. In order to improve the display quality, the generated TrueType, WOFF, or WOFF2 fonts can be autohinted\&. The autohinter is enabled by appending
+\fB,autohint\fR
+or
+\fB,ah\fR
+to the font format, e\&.g\&.
+\fB\-\-font\-format=woff,autohint\fR
+or
+\fB\-\-font\-format=woff,ah\fR\&.
+.sp
+Option
+\fB\-\-font\-format\fR
+is only available if dvisvgm was built with WOFF support enabled\&.
+.RE
+.PP
\fB\-m, \-\-fontmap\fR=\fIfilenames\fR
.RS 4
Loads and evaluates a single font map file or a sequence of font map files\&. These files are required to resolve font file names and encodings\&. dvisvgm does not provide its own map files but tries to read available ones coming with dvips or dvipdfm\&. If option
@@ -334,7 +357,7 @@ parameter is an integer value between 0 and 2\&. It selects the display variant
.PP
\fB\-\-keep\fR
.RS 4
-Disables the removal of temporary files as created by Metafont (usually \&.gf, \&.tfm, and \&.log files)\&.
+Disables the removal of temporary files as created by Metafont (usually \&.gf, \&.tfm, and \&.log files) or the TrueType/WOFF module\&.
.RE
.PP
\fB\-\-libgs\fR=\fIfilename\fR
@@ -564,6 +587,19 @@ Don\(cqt write the SVG output to a file but redirect it to
\fBstdout\fR\&.
.RE
.PP
+\fB\-\-tmpdir\fR[=\fIpath\fR]
+.RS 4
+In some cases, dvisvgm needs to create temporary files to work properly\&. These files go to the system\(cqs temporary folder by default, e\&.g\&.
+\fB/tmp\fR
+on Linux systems\&. Option
+\fB\-\-tmpdir\fR
+allows to specify a different location if necessary for some reason\&. Please note that dvisvgm does not create this folder, so you must ensure that it actually exists before running dvisvgm\&.
+.sp
+If the optional parameter
+\fIpath\fR
+is omitted, dvisvgm prints the location of the system\(cqs temp folder and exits\&.
+.RE
+.PP
\fB\-T, \-\-transform\fR=\fIcommands\fR
.RS 4
Applies a sequence of transformations to the SVG content\&. Each transformation is described by a
@@ -993,7 +1029,9 @@ The following TeX snippet adds two raw SVG elements to the output and updates th
.PP
\fBem\fR
.RS 4
-These specials were introduced with the emTeX distribution by Eberhard Mattes\&. They provide line drawing statements, instructions for embedding MSP, PCX, and BMP image files, as well as two PCL commands\&. dvisvgm supports only the line drawing statements and ignores all other em specials silently\&. A description of the command syntax can be found in the DVI driver documentation coming with
+These specials were introduced with the
+\fIemTeX\fR
+distribution by Eberhard Mattes\&. They provide line drawing statements, instructions for embedding MSP, PCX, and BMP image files, as well as two PCL commands\&. dvisvgm supports only the line drawing statements and ignores all other em specials silently\&. A description of the command syntax can be found in the DVI driver documentation coming with
emTeX (\m[blue]http://www.ctan.org/pkg/emtex\m[])\&.
.RE
.PP
@@ -1029,9 +1067,11 @@ pdfTeX user manual (\m[blue]http://www.ctan.org/pkg/pdftex\m[])\&.
.PP
\fBps\fR
.RS 4
-The famous DVI driver dvips introduced its own set of specials in order to embed PostScript code into DVI files, which greatly improves the capabilities of DVI documents\&. One aim of dvisvgm is to completely evaluate all PostScript snippets and to convert as many of them as possible to SVG\&. In contrast to dvips, dvisvgm uses floating point arithmetics to compute the precise position of each graphic element, i\&.e\&. it doesn\(cqt round the coordinates\&. Therefore, the relative locations of the graphic elements may slightly differ from those computed by dvips\&.
+The famous DVI driver
+\fIdvips\fR
+introduced its own set of specials in order to embed PostScript code into DVI files, which greatly improves the capabilities of DVI documents\&. One aim of dvisvgm is to completely evaluate all PostScript snippets and to convert as many of them as possible to SVG\&. In contrast to dvips, dvisvgm uses floating point arithmetics to compute the precise position of each graphic element, i\&.e\&. it doesn\(cqt round the coordinates\&. Therefore, the relative locations of the graphic elements may slightly differ from those computed by dvips\&.
.sp
-Since PostScript is a rather complex language, dvisvgm does not try to implement its own PostScript interpreter but relies on
+Since PostScript is a rather complex language, dvisvgm does not implement its own PostScript interpreter but relies on
Ghostscript (\m[blue]http://ghostscript.com\m[])
instead\&. If the Ghostscript library was not linked to the dvisvgm binary, it is looked up and loaded dynamically during runtime\&. In this case, dvisvgm looks for
\fIlibgs\&.so\&.X\fR
@@ -1292,4 +1332,4 @@ Please report bugs using the bug tracker at GitHub (\m[blue]https://github.com/m
Written by Martin Gieseking <\m[blue]\fBmartin\&.gieseking@uos\&.de\fR\m[]>
.SH "COPYING"
.sp
-Copyright \(co 2005\-2016 Martin Gieseking\&. Free use of this software is granted under the terms of the GNU General Public License (GPL) version 3 or, (at your option) any later version\&.
+Copyright \(co 2005\-2017 Martin Gieseking\&. Free use of this software is granted under the terms of the GNU General Public License (GPL) version 3 or, (at your option) any later version\&.
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in
index acd8f169642..b0e3cb6d8b8 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in
@@ -1,6 +1,6 @@
//////////////////////////////////////////////////////////////////////////
// This file is part of dvisvgm -- a fast DVI to SVG converter //
-// Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> //
+// Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> //
// //
// This program is free software; you can redistribute it and/or //
// modify it under the terms of the GNU General Public License as //
@@ -23,19 +23,19 @@ Martin Gieseking <@PACKAGE_BUGREPORT@>
:man version: @VERSION@
:man manual: dvisvgm Manual
-NAME
+Name
----
dvisvgm - converts DVI and EPS files to the XML-based SVG format
-SYNOPSIS
+Synopsis
--------
*dvisvgm* [ 'options' ] 'file' [.dvi]
*dvisvgm* -E [ 'options' ] 'file' [.eps]
-DESCRIPTION
+Description
-----------
The command-line utility *dvisvgm* converts DVI files, as generated by TeX/LaTeX, to the
XML-based scalable vector graphics format SVG. It supports the classic DVI version 2 as
@@ -69,7 +69,7 @@ compatible SVG files, command-line option *--no-fonts* can be given to replace t
by plain graphics paths.
-OPTIONS
+Options
-------
dvisvgm provides a POSIX-compliant command-line interface with short and long option names.
They may be given before and/or after the name of the file to be converted. Also, the order of
@@ -148,20 +148,17 @@ If argument 'dir' is omitted, dvisvgm prints the path of the default cache direc
with further information about the stored fonts. Additionally, outdated and corrupted cache files
are removed.
-
*-j, --clipjoin*::
This option tells dvisvgm to compute all intersections of clipping paths itself rather than
delegating this task to the SVG renderer. The resulting SVG files are more portable because
some SVG viewers don't support intersecting clipping paths which are defined by 'clipPath'
elements containing a 'clip-path' attribute.
-
*--color*::
Enables colorization of messages printed during the conversion process. The colors can be
customized via the environment variable *DVISVGM_COLORS*. See the <<environment, Environment section>>
below for further information.
-
*--colornames*::
By default, dvisvgm exclusively uses RGB values of the form '#RRGGBB' to represent colors in
the SVG file. According to the SVG standard, it's also possible to use color names (like +black+
@@ -173,6 +170,7 @@ SVG color name will still be represented by RGB values.
Adds comments with further information about selected data to the SVG file. Currently, only
font elements and font CSS rules related to native fonts are annotated.
+
*-E, --eps*::
If this option is given, dvisvgm does not expect a DVI but an EPS input file, and tries to convert
it to SVG. In order to do so, a single 'psfile' special command is created and forwarded to the
@@ -180,7 +178,6 @@ PostScript special handler.
This option is only available if dvisvgm was built with PostScript support enabled, and requires
Ghostscript to be available. See option *--libgs* for further information.
-
*-e, --exact*::
This option tells dvisvgm to compute the precise bounding box of each character. By default,
the values stored in a font's TFM file are used to determine a glyph's extent. As these values are
@@ -190,6 +187,16 @@ and/or height of some glyphs may be larger (or smaller) than the respective TFM
this can lead to clipped characters at the bounds of the SVG graphics. With option *--exact* given,
dvisvgm analyzes the actual shape of each character and derives a usually tight bounding box.
+*-f, --font-format*='format'::
+Selects the file format used to embed the font data into the SVG files. Following formats are
+supported: +SVG+ (that's the default), +TTF+ (TrueType), +WOFF+, and +WOFF2+ (Web Open Font Format
+version 1 and 2).
+By default, dvisvgm creates unhinted fonts that might look bad on low-resolution devices. In order to
+improve the display quality, the generated TrueType, WOFF, or WOFF2 fonts can be autohinted. The
+autohinter is enabled by appending +,autohint+ or +,ah+ to the font format,
+e.g. +--font-format=woff,autohint+ or +--font-format=woff,ah+.
++
+Option *--font-format* is only available if dvisvgm was built with WOFF support enabled.
*-m, --fontmap*='filenames'::
Loads and evaluates a single font map file or a sequence of font map files. These files are required
@@ -226,7 +233,6 @@ given in 'myfile2.map' are removed from the font map tree.
For further information about the map file formats and the mode specifiers, see the manuals of
dvips and dvipdfm.
-
*--grad-overlap*::
Tells dvisvgm to create overlapping grid segments when approximating color gradient fills (also see
option *--grad-segments* below). By default, adjacent segments don't overlap but only touch each other
@@ -241,7 +247,6 @@ Currently, dvisvgm computes the overlapping segments separately for each patch o
may consist of multiple patches of the same type). Therefore, there still might be visible gaps
at the seam of two adjacent patches.
-
*--grad-segments*='number'::
Determines the maximal number of segments per column and row used to approximate gradient color fills.
Since SVG 1.1 only supports a small subset of the shading algorithms available in PostScript,
@@ -256,14 +261,12 @@ tensor-product patch meshes. They are approximated by subdividing the area of ea
__n__&#215;__n__ grid of smaller segments. The maximal number of segments per column and row can be
changed with option *--grad-segments*.
-
*--grad-simplify*='delta'::
If the size of the segments created to approximate gradient color fills falls below the given delta
value, dvisvgm reduces their level of detail. For example, Bézier curves are replaced by straight
lines, and triangular segments are combined to tetragons. For a small 'delta', these simplifications
are usually not noticeable but reduce the size of the generated SVG files significantly.
-
*-h, --help*[='mode']::
Prints a short summary of all available command-line options. The optional 'mode' parameter is
an integer value between 0 and 2. It selects the display variant of the help text. Mode 0
@@ -271,10 +274,9 @@ lists all options divided into categories with section headers. This is also the
dvisvgm is called without parameters. Mode 1 lists all options ordered by the short option names,
while mode 2 sorts the lines by the long option names.
-
*--keep*::
-Disables the removal of temporary files as created by Metafont (usually .gf, .tfm, and .log files).
-
+Disables the removal of temporary files as created by Metafont (usually .gf, .tfm, and .log files) or
+the TrueType/WOFF module.
*--libgs*='filename'::
This option is only available if the Ghostscript library is not directly linked to dvisvgm and if
@@ -286,7 +288,6 @@ Alternatively, it's also possible to set the GS library name by the environment
The latter has less precedence than the command-line option, i.e. dvisvgm ignores variable *LIBGS*
if *--libgs* is given.
-
*-L, --linkmark*='style'::
Selects the method how to mark hyperlinked areas. The 'style' argument can take one of the values
'none', 'box', and 'line', where 'box' is the default, i.e. a rectangle is drawn around
@@ -304,33 +305,28 @@ selects the frame color.
Examples: +box:red+ or +box:#ff0000+ draws red boxes around the linked areas. +yellow:blue+ creates
yellow filled rectangles with blue frames.
-
*-l, --list-specials*::
Prints a list of registered special handlers and exits. Each handler processes a set of special
statements belonging to the same category. In most cases, the categories are identified by the
prefix of the special statements. It's usually a leading word separated from the rest of the
statement by a colon or a blank, e.g. 'color' or 'ps'.
-
*-M, --mag*='factor'::
Sets the magnification factor applied in conjunction with Metafont calls prior tracing the glyphs.
The larger this value, the better the tracing results. Nevertheless, large magnification values
can cause Metafont arithmetic errors due to number overflows. So, use this option with care.
The default setting usually produces nice results.
-
*--no-merge*::
Puts every single character in a separate 'text' element with corresponding 'x' and 'y' attributes.
By default, new 'text' or 'tspan' elements are only created if a string starts at a location that
differs from the regular position defined by the characters' advance values.
-
*--no-mktexmf*::
Suppresses the generation of missing font files. If dvisvgm can't find a font file
through the kpathsea lookup mechanism, it calls the external tools 'mktextfm' or 'mktexmf'.
This option disables these calls.
-
*-n, --no-fonts*[='variant']::
If this option is given, dvisvgm doesn't create SVG 'font' elements but uses 'paths' instead. The
resulting SVG files tend to be larger but they are concurrently more compatible with most applications that
@@ -339,12 +335,10 @@ by paths. Variant 0 creates 'path' and 'use' elements in order to avoid lengthy
Variant 1 creates 'path' elements only.
Option *--no-fonts* implies *--no-styles*.
-
*-c, --scale*='sx'[,'sy']::
Scales the page content horizontally by 'sx' and vertically by 'sy'. This option is equivalent
to *-TS*'sx','sy'.
-
*-S, --no-specials*[='names']::
Disable processing of special commands embedded in the DVI file. If no further
parameter is given, all specials are ignored. To disable a selected set of specials,
@@ -353,14 +347,12 @@ identifier referencing the intended special handler. Option *--list-specials* li
currently available together with their names.
All unsupported special statements are silently ignored.
-
*--no-styles*::
By default, dvisvgm creates CSS styles and class attributes to reference fonts. This variant is
more compact than adding the complete font information to each text element over and over again.
However, if you prefer direct font references, the default behavior can be disabled with
option *--no-styles*.
-
*-o, --output*='pattern'::
Sets the pattern specifying the names of the generated SVG files. Parameter 'pattern' is
a string that may contain static character sequences as well as the variables *%f*, *%p*,
@@ -385,7 +377,6 @@ is a single-page document. Otherwise, multiple SVG files 'foo-01.svg', 'foo-02.s
produced. In Windows environments, the percent sign indicates dereferenced environment
variables, and must therefore be protected by a second percent sign, e.g. +--output=%%f-%%p+.
-
*-p, --page*='ranges'::
This option selects the pages to be processed. Parameter 'ranges' consists of a comma-separated
list of single page numbers and/or page ranges. A page range is a pair of numbers separated by
@@ -402,7 +393,6 @@ Please consider that the page values don't refer to the page numbers printed on
corresponding page. Instead, the physical page count is expected, where the first page always
gets number 1.
-
*-d, --precision*='digits'::
Specifies the maximal number of decimal places applied to floating-point attribute values.
All attribute values written to the generated SVG file(s) are rounded accordingly. The
@@ -410,18 +400,15 @@ parameter 'digits' allows integer values from 0 to 6, where 0 enables the automa
of significant decimal places. This is also the default value if dvisvgm is called without
option *--precision*.
-
*-P, --progress*[='delay']::
Enables a simple progress indicator shown when time-consuming operations like
PostScript specials are processed. The indicator doesn't appear before the given
delay (in seconds) has elapsed. The default delay value is 0.5 seconds.
-
*-r, --rotate*='angle'::
Rotates the page content clockwise by 'angle' degrees around the page center.
This option is equivalent to *-TR*'angle'.
-
*-R, --relative*::
SVG allows to define graphics paths by a sequence of absolute and/or relative path commands,
i.e. each command expects either absolute coordinates or coordinates relative to the
@@ -429,10 +416,17 @@ current drawing position. By default, dvisvgm creates paths made up of absolute
If option *--relative* is given, relative commands are created instead. This slightly reduces
the size of the SVG files in most cases.
-
*-s, --stdout*::
Don't write the SVG output to a file but redirect it to *stdout*.
+*--tmpdir*[='path']::
+In some cases, dvisvgm needs to create temporary files to work properly. These files go to
+the system's temporary folder by default, e.g. +/tmp+ on Linux systems. Option *--tmpdir*
+allows to specify a different location if necessary for some reason. Please note that dvisvgm
+does not create this folder, so you must ensure that it actually exists before running dvisvgm.
++
+If the optional parameter 'path' is omitted, dvisvgm prints the location of the system's
+temp folder and exits.
*-T, --transform*='commands'::
Applies a sequence of transformations to the SVG content. Each transformation is described
@@ -525,12 +519,10 @@ By adding these values you can combine the categories. The default level is 7, i
messages are printed.
+
-
*-V, --version*[='extended']::
Prints the version of dvisvgm and exits. If the optional argument is set to 'yes', the
version numbers of the linked libraries are printed as well.
-
*-z, --zip*[='level']::
Creates a compressed SVG file with suffix .svgz. The optional argument specifies the compression
level. Valid values are in the range of 1 to 9 (default value is 9). Larger values cause better
@@ -538,15 +530,13 @@ compression results but may take slightly more computation time.
+
CAUTION: This option cannot be combined with *-s, --stdout*.
-
*-Z, --zoom*[='factor']::
Multiplies the 'width' and 'height' attributes of the SVG root element by argument 'factor' while
the coordinate system of the graphic content is retained. As a result, most SVG viewers zoom the
graphics accordingly. If a negative zoom factor is given, the 'width' and 'height' attributes are omitted.
-
[[specials]]
-SUPPORTED SPECIALS
+Supported Specials
------------------
dvisvgm supports several sets of 'special commands' that can be used to enrich DVI files with additional
features, like color, graphics, and hyperlinks. The evaluation of special commands is delegated to dedicated
@@ -642,7 +632,7 @@ The following TeX snippet adds two raw SVG elements to the output and updates th
+
*em*::
-These specials were introduced with the emTeX distribution by Eberhard Mattes. They provide line drawing
+These specials were introduced with the 'emTeX' distribution by Eberhard Mattes. They provide line drawing
statements, instructions for embedding MSP, PCX, and BMP image files, as well as two PCL commands.
dvisvgm supports only the line drawing statements and ignores all other em specials silently.
A description of the command syntax can be found in the DVI driver documentation coming with
@@ -671,14 +661,14 @@ dvipdfm font map format. For further information on the command syntax and seman
+\pdfmapfile+ in the http://www.ctan.org/pkg/pdftex[pdfTeX user manual].
*ps*::
-The famous DVI driver dvips introduced its own set of specials in order to embed PostScript code into DVI files,
+The famous DVI driver 'dvips' introduced its own set of specials in order to embed PostScript code into DVI files,
which greatly improves the capabilities of DVI documents. One aim of dvisvgm is to completely evaluate all
PostScript snippets and to convert as many of them as possible to SVG. In contrast to dvips, dvisvgm uses
floating point arithmetics to compute the precise position of each graphic element, i.e. it doesn't round the
coordinates. Therefore, the relative locations of the graphic elements may slightly differ from those computed
by dvips.
+
-Since PostScript is a rather complex language, dvisvgm does not try to implement its own PostScript interpreter
+Since PostScript is a rather complex language, dvisvgm does not implement its own PostScript interpreter
but relies on http://ghostscript.com[Ghostscript] instead. If the Ghostscript library was not linked to the
dvisvgm binary, it is looked up and loaded dynamically during runtime. In this case, dvisvgm looks for
'libgs.so.X' on Unix-like systems (supported ABI versions: 7,8,9), and for 'gsdll32.dll' or 'gsdll64.dll' on
@@ -702,7 +692,7 @@ The TPIC special set defines instructions for drawing simple geometric objects.
eepic and tplot, use these specials to describe graphics.
-EXAMPLES
+Examples
--------
--------------
dvisvgm file
@@ -725,9 +715,8 @@ dvisvgm --transform="R20,w/3,2h/5 T1cm,1cm S2,3" file
-----------------------------------------------------
Converts the first page of 'file.dvi' to 'file.svg' where three transformations are applied.
-
[[environment]]
-ENVIRONMENT
+Environment
-----------
dvisvgm uses the *kpathsea* library for locating the files that it opens.
Hence, the environment variables described in the library's documentation influence the converter.
@@ -768,7 +757,7 @@ All malformed entries in the list are silently ignored.
*Example:* +er=01:pi=\*5+ sets the colors of error messages (+er+) to red (+1+) on black (+0+), and those
of progress indicators (+pi+) to cyan (+5+) on default background (+*+).
-FILES
+Files
-----
The location of the following files is determined by the kpathsea library.
To check the actual kpathsea configuration you can use the *kpsewhich* utility.
@@ -784,30 +773,26 @@ To check the actual kpathsea configuration you can use the *kpsewhich* utility.
**.ttf*:: TrueType font files
**.vf*:: Virtual font files
-SEE ALSO
+See also
--------
*tex(1), mf(1), mktexmf(1), grodvi(1), potrace(1)*, and the *kpathsea library* info documentation.
-
-RESOURCES
+Resources
---------
Project home page::: http://dvisvgm.bplaced.net
Code repository::: https://github.com/mgieseki/dvisvgm
-
-BUGS
+Bugs
----
Please report bugs using the bug tracker at https://github.com/mgieseki/dvisvgm/issues[GitHub].
-
-AUTHOR
+Author
------
Written by {author} <{email}>
-
-COPYING
+Copying
-------
-Copyright (C) 2005-2016 Martin Gieseking. Free use of this software is
+Copyright (C) 2005-2017 Martin Gieseking. Free use of this software is
granted under the terms of the GNU General Public License (GPL) version 3
or, (at your option) any later version.
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/tweak-dblatex-pdf.xsl b/Build/source/texk/dvisvgm/dvisvgm-src/doc/tweak-dblatex-pdf.xsl
index a28bbb97e30..33010feae6c 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/doc/tweak-dblatex-pdf.xsl
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/tweak-dblatex-pdf.xsl
@@ -1,29 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file is part of dvisvgm -->
-<!-- Copyright (C) 2015 Martin Gieseking -->
+<!-- Copyright (C) 2015-2017 Martin Gieseking <martin.gieseking@uos.de> -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:output doctype-public="-//OASIS//DTD DocBook XML V4.5//EN" doctype-system="http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"/>
+ <xsl:output doctype-public="-//OASIS//DTD DocBook XML V4.5//EN" doctype-system="http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"/>
- <!-- replace default document title -->
- <xsl:template match="refentrytitle[. != ../refmiscinfo[@class='manual']]">
- <xsl:copy>
- <xsl:value-of select="../refmiscinfo[@class='manual']"/>
- </xsl:copy>
- </xsl:template>
+ <!-- replace default document title -->
+ <xsl:template match="refentrytitle[. != ../refmiscinfo[@class='manual']]">
+ <xsl:copy>
+ <xsl:value-of select="../refmiscinfo[@class='manual']"/>
+ </xsl:copy>
+ </xsl:template>
- <!-- add static title to the synopsis section to prevent creating a dynamic one -->
- <xsl:template match="refsynopsisdiv[not(title)]">
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <title>SYNOPSIS</title>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
+ <!-- add static title to the synopsis section to prevent creating a dynamic one -->
+ <xsl:template match="refsynopsisdiv[not(title)]">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <title>Synopsis</title>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
- <!-- copy everything else unchanged -->
- <xsl:template match="@*|node()">
- <xsl:copy>
- <xsl:apply-templates select="@*|node()"/>
- </xsl:copy>
- </xsl:template>
-</xsl:stylesheet> \ No newline at end of file
+ <!-- copy everything else unchanged -->
+ <xsl:template match="@*|node()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/libs/Makefile.am
new file mode 100644
index 00000000000..52d81d8b1cc
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/Makefile.am
@@ -0,0 +1,10 @@
+## This file is part of dvisvgm
+## Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de>
+##
+## Process this file with automake.
+
+SUBDIRS = clipper xxHash
+
+if ENABLE_WOFF
+SUBDIRS += ff-woff woff2
+endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/libs/Makefile.in
new file mode 100644
index 00000000000..74ab430e9cf
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/Makefile.in
@@ -0,0 +1,615 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+@ENABLE_WOFF_TRUE@am__append_1 = ff-woff woff2
+subdir = libs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = clipper xxHash ff-woff woff2
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GCOV = @GCOV@
+GENHTML = @GENHTML@
+GREP = @GREP@
+HAVE_CXX11 = @HAVE_CXX11@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCOV = @LCOV@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ZLIB_CFLAGS = @ZLIB_CFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = clipper xxHash $(am__append_1)
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu libs/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic cscopelist-am ctags ctags-am \
+ distclean distclean-generic distclean-tags distdir dvi dvi-am \
+ html html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/License.txt b/Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/License.txt
new file mode 100644
index 00000000000..3e3af47ba31
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/License.txt
@@ -0,0 +1,24 @@
+Boost Software License - Version 1.0 - August 17th, 2003
+http://www.boost.org/LICENSE_1_0.txt
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/clipper/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/Makefile.am
index 2da73955400..ad880e74b77 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/clipper/Makefile.am
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/Makefile.am
@@ -1,5 +1,7 @@
noinst_LIBRARIES = libclipper.a
libclipper_a_SOURCES = clipper.cpp clipper.hpp
+EXTRA_DIST = License.txt
+
AM_CXXFLAGS = -Wall
clipper.cpp: clipper.hpp
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/Makefile.in
new file mode 100644
index 00000000000..f18f720f093
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/Makefile.in
@@ -0,0 +1,586 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = libs/clipper
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libclipper_a_AR = $(AR) $(ARFLAGS)
+libclipper_a_LIBADD =
+am_libclipper_a_OBJECTS = clipper.$(OBJEXT)
+libclipper_a_OBJECTS = $(am_libclipper_a_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo " CXX " $@;
+am__v_CXX_1 =
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo " CXXLD " $@;
+am__v_CXXLD_1 =
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libclipper_a_SOURCES)
+DIST_SOURCES = $(libclipper_a_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GCOV = @GCOV@
+GENHTML = @GENHTML@
+GREP = @GREP@
+HAVE_CXX11 = @HAVE_CXX11@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCOV = @LCOV@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ZLIB_CFLAGS = @ZLIB_CFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_LIBRARIES = libclipper.a
+libclipper_a_SOURCES = clipper.cpp clipper.hpp
+EXTRA_DIST = License.txt
+AM_CXXFLAGS = -Wall
+CLEANFILES = *.gcda *.gcno
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/clipper/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu libs/clipper/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+libclipper.a: $(libclipper_a_OBJECTS) $(libclipper_a_DEPENDENCIES) $(EXTRA_libclipper_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libclipper.a
+ $(AM_V_AR)$(libclipper_a_AR) libclipper.a $(libclipper_a_OBJECTS) $(libclipper_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libclipper.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clipper.Po@am__quote@
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am
+
+.PRECIOUS: Makefile
+
+
+clipper.cpp: clipper.hpp
+
+@CODE_COVERAGE_RULES@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/clipper/clipper.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/clipper.cpp
index 89b7e8e683d..89b7e8e683d 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/clipper/clipper.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/clipper.cpp
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/clipper/clipper.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/clipper.hpp
index 566289f82b1..fd4fe142a81 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/clipper/clipper.hpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/clipper/clipper.hpp
@@ -45,19 +45,19 @@
//use_lines: Enables line clipping. Adds a very minor cost to performance.
#define use_lines
-
+
//use_deprecated: Enables temporary support for the obsolete functions
-//#define use_deprecated
+//#define use_deprecated
#include <vector>
#include <set>
#include <stdexcept>
+#include <cstdint>
#include <cstring>
#include <cstdlib>
#include <ostream>
#include <functional>
#include <queue>
-#include "../src/types.h"
namespace ClipperLib {
@@ -71,10 +71,10 @@ enum PolyFillType { pftEvenOdd, pftNonZero, pftPositive, pftNegative };
struct ZLabel {
ZLabel () : id(0), t(0) {}
- ZLabel (Int32 ii) : id(ii), t(0) {}
- ZLabel (Int32 ii, double tt) : id(ii), t(tt) {}
+ ZLabel (int32_t ii) : id(ii), t(0) {}
+ ZLabel (int32_t ii, double tt) : id(ii), t(tt) {}
bool operator == (const ZLabel &l) const {return id == l.id;}
- Int32 id;
+ int32_t id;
double t;
};
@@ -83,8 +83,8 @@ inline std::ostream& operator << (std::ostream &os, const ZLabel &l) {
}
struct ZType {
- ZType (UInt64 v) : label1(v >> 32), label2(v & 0xffffffff) {}
- ZType (Int32 id1, Int32 id2) : label1(id1), label2(id2) {}
+ ZType (uint64_t v) : label1(v >> 32), label2(v & 0xffffffff) {}
+ ZType (int32_t id1, int32_t id2) : label1(id1), label2(id2) {}
ZType (const ZLabel &l1, const ZLabel &l2) : label1(l1), label2(l2) {}
const ZLabel& minLabel () const {return (label1.id < label2.id) ? label1 : label2;}
const ZLabel& maxLabel () const {return (label1.id > label2.id) ? label1 : label2;}
@@ -94,7 +94,7 @@ struct ZType {
}
bool operator == (const ZType &p) const {return minLabel() == p.minLabel() && maxLabel() == p.maxLabel();}
- operator UInt64 () const {return (UInt64(label1.id) << 32) & label2.id;}
+ operator uint64_t () const {return (uint64_t(label1.id) << 32) & label2.id;}
ZLabel label1, label2;
};
@@ -131,7 +131,7 @@ struct IntPoint {
}
friend inline bool operator!= (const IntPoint& a, const IntPoint& b)
{
- return a.X != b.X || a.Y != b.Y;
+ return a.X != b.X || a.Y != b.Y;
}
};
//------------------------------------------------------------------------------
@@ -166,8 +166,8 @@ enum EndType {etClosedPolygon, etClosedLine, etOpenButt, etOpenSquare, etOpenRou
class PolyNode;
typedef std::vector< PolyNode* > PolyNodes;
-class PolyNode
-{
+class PolyNode
+{
public:
PolyNode();
virtual ~PolyNode(){};
@@ -186,11 +186,11 @@ private:
PolyNode* GetNextSiblingUp() const;
void AddChild(PolyNode& child);
friend class Clipper; //to access Index
- friend class ClipperOffset;
+ friend class ClipperOffset;
};
class PolyTree: public PolyNode
-{
+{
public:
~PolyTree(){Clear();};
PolyNode* GetFirst() const;
@@ -303,7 +303,7 @@ public:
void ZFillFunction(ZFillCallback zFillFunc);
#endif
protected:
- void Reset();
+ void Reset() override;
virtual bool ExecuteInternal();
private:
PolyOutList m_PolyOuts;
@@ -319,10 +319,10 @@ private:
PolyFillType m_ClipFillType;
PolyFillType m_SubjFillType;
bool m_ReverseOutput;
- bool m_UsingPolyTree;
+ bool m_UsingPolyTree;
bool m_StrictSimple;
#ifdef use_xyz
- ZFillCallback m_ZFill; //custom callback
+ ZFillCallback m_ZFill; //custom callback
#endif
void SetWindingCount(TEdge& edge);
bool IsEvenOddFillType(const TEdge& edge) const;
@@ -380,7 +380,7 @@ private:
};
//------------------------------------------------------------------------------
-class ClipperOffset
+class ClipperOffset
{
public:
ClipperOffset(double miterLimit = 2.0, double roundPrecision = 0.25);
@@ -416,7 +416,7 @@ class clipperException : public std::exception
public:
clipperException(const char* description): m_descr(description) {}
virtual ~clipperException() throw() {}
- virtual const char* what() const throw() {return m_descr.c_str();}
+ virtual const char* what() const throw() override {return m_descr.c_str();}
private:
std::string m_descr;
};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/LICENSE b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/LICENSE
new file mode 100644
index 00000000000..57be819b4dd
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/LICENSE
@@ -0,0 +1,281 @@
+# FontForge Licensing
+
+FontForge is available as a whole under the terms of the [GNU GPL](http://www.gnu.org/copyleft/gpl.html), version
+3 or any later version.
+However, almost all of its parts are available under the "revised BSD license" ([pdf](http://www.law.yi.org/~sfllaw/talks/bsd.pdf)) because FontForge was mostly written by George Williams, using that license.
+
+The Revised BSD License is very permissive, and allows for code to be combined with other code under other licenses.
+There are many useful libraries available under copyleft libre licenses, such as the LGPL and GPL, which FontForge started to use in 2012.
+For example, Pango and Cairo are available under the LGPL, and gnulib is available under the GPL.
+Advanced features added since 2012 are licensed by their individual developers under the GPLv3.
+
+## How To License Contributions
+
+- Contributions to existing files must be made under the existing license for that file
+- Contributions in new files should be made under the original Revised BSD License, but any license compatible with the GPLv3 is fine
+
+The majority of FontForge was written by George Williams and published under the revised BSD license.
+This license is permitted to be compiled with added GNU GPL source code to build a FontForge executable program.
+
+FontForge was known from 2000 to 2004 as PfaEdit, and was written and developed primarily by George Williams from 2000 until 2012.
+It is published as free/libre software and distributed under the 3-clause BSD license.
+Later, when development slowed down and then stopped in 2012, the FontForge community began to take an interest in improving FontForge further with fixes, modifications, libraries, patches, and other additions which have been introduced under the same, or different, yet, compatible licenses.
+
+## Copyright Notices, Contributors, Translators
+
+See [`AUTHORS`](https://github.com/fontforge/fontforge/blob/master/AUTHORS)
+
+## The Revised BSD License used by FontForge
+
+```
+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 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.
+
+The name of the author may not be used to endorse or promote
+products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+```
+
+## LGPL and GPL
+
+FontForge includes the GPLv3 in the source tree as [COPYING.gplv3](https://github.com/fontforge/fontforge/blob/master/COPYING.gplv3)
+
+You can read the [LGPL](http://www.gnu.org/licenses/lgpl.html) and [GPL](http://www.gnu.org/copyleft/gpl.html) on the GNU website.
+
+## Source Files
+
+### FontForge Files Using The Revised BSD License
+
+These files were created under the Revised BSD License:
+```
+fontforge-20120731-b/
+install-sh
+
+fontforge-20120731-b/fontforge:
+alignment.c fontinfo.c savefont.h
+anchorsaway.c fontview.c savefontdlg.c
+asmfpst.c fontviewbase.c scriptfuncs.h
+autohint.c freetype.c scripting.c
+autosave.c freetypeui.c scripting.h
+autotrace.c ftdelta.c scriptingdlg.c
+autowidth.c fvcomposite.c scstyles.c
+autowidth2.c fvfonts.c scstylesui.c
+autowidth2.h fvfontsdlg.c sd.h
+autowidth2dlg.c fvmetrics.c search.c
+basedlg.c fvmetrics.h search.h
+baseviews.h fvmetricsdlg.c searchview.c
+bdfinfo.c glyphcomp.c sfd.c
+bitmapchar.c gotodlg.c sfd1.c
+bitmapcontrol.c groups.c sfd1.h
+bitmapcontrol.h groups.h sfddiff.c
+bitmapdlg.c groupsdlg.c sflayout.c
+bitmapview.c histograms.c sflayoutP.h
+bvedit.c http.c sftextfield.c
+charinfo.c ikarus.c sftextfieldP.h
+charview.c images.c showatt.c
+clipnoui.c justifydlg.c simplifydlg.c
+clipui.c kernclass.c spiro.c
+combinations.c layer2layer.c splashimage.c
+configure-fontforge.h lookups.c splinechar.c
+contextchain.c lookupui.c splinefill.c
+cursors.c macbinary.c splinefont.c
+cvaddpoints.c macenc.c splinefont.h
+cvdebug.c macencui.c splineorder2.c
+cvdgloss.c math.c splineoverlap.c
+cvexport.c mathconstants.c splinerefigure.c
+cvexportdlg.c metricsview.c splinesaveafm.c
+cvfreehand.c mm.c splinesave.c
+cvgetinfo.c mm.h splinestroke.c
+cvgridfit.c mmdlg.c splineutil.c
+cvhand.c namehash.h splineutil2.c
+cvhints.c namelist.c start.c
+cvimages.c nonlineartrans.c startnoui.c
+cvimportdlg.c nonlineartrans.h startui.c
+cvknife.c nonlineartransui.c statemachine.c
+cvpalettes.c noprefs.c stemdb.c
+cvpointer.c nouiutil.c stemdb.h
+cvruler.c nowakowskittfinstr.c svg.c
+cvshapes.c tilepath.c
+cvstroke.c openfontdlg.c tottf.c
+cvtranstools.c palmfonts.c tottfaat.c
+cvundoes.c parsepdf.c tottfgpos.c
+delta.h parsepfa.c tottfvar.c
+deltaui.c parsettf.c transform.c
+displayfonts.c parsettfatt.c ttf.h
+dumpbdf.c parsettfbmf.c ttfinstrs.c
+dumppfa.c parsettfvar.c ttfinstrs.h
+edgelist.h PfEd.h ttfinstrsui.c
+edgelist2.h plugins.c ttfspecial.c
+effects.c plugins.h ufo.c
+effectsui.c prefs.c uiinterface.h
+encoding.c print.c uiutil.c
+encodingui.c print.h unicoderange.c
+featurefile.c problems.c unicoderange.h
+fffreetype.h psfont.h utils.c
+ffpython.h psread.c views.h
+fontforge.h python.c windowmenu.c
+fontforgeui.h pythonui.c winfonts.c
+fontforgevw.h savefont.c woff.c
+
+fontforge-20120731-b/gdraw:
+choosericons.c gfiledlg.c gradio.c
+colorP.h ggadgetP.h gresedit.c
+ctlvalues.c ggadgets.c gresource.c
+drawboxborder.c ggroupbox.c gresourceimage.c
+gaskdlg.c ghvbox.c gresourceP.h
+gbuttons.c gimagebmpP.h growcol.c
+gchardlg.c gimageclut.c gsavefiledlg.c
+gcolor.c gimagecvt.c gscrollbar.c
+gcontainer.c gimagepsdraw.c gspacer.c
+gdraw.c gimagewriteeps.c gtabset.c
+gdrawable.c gimagexdraw.c gtextfield.c
+gdrawbuildchars.c gkeysym.c gtextinfo.c
+gdrawerror.c glist.c gwidgetP.h
+gdrawgimage.c gmatrixedit.c gwidgets.c
+gdrawP.h gmenu.c gxcdraw.c
+gdrawtxt.c gprogress.c gxcdrawP.h
+gdrawtxtinit.c gpsdraw.c gxdrawP.h
+gdrawwacomdriver.c gpsdrawP.h hotkeys.c
+gfilechooser.c gpstxtinit.c hotkeys.h
+
+fontforge-20120731-b/gutils:
+dynamic.c gimagereadrgb.c giofile.c
+fsys.c gimagereadtiff.c gioftp.c
+gcol.c gimagereadxbm.c gioftpP.h
+gimage.c gimagereadxpm.c giofuncP.h
+gimagebmpP.h gimagewritebmp.c giohosts.c
+gimageread.c gimagewritegimage.c giomime.c
+gimagereadbmp.c gimagewritejpeg.c gioP.h
+gimagereadgif.c gimagewritepng.c giothread.c
+gimagereadjpeg.c gimagewritexbm.c giotrans.c
+gimagereadpng.c gimagewritexpm.c gwwintl.c
+gimagereadras.c gio.c
+
+fontforge-20120731-b/inc:
+basics.h gfile.h gio.h gwidget.h
+charset.h ggadget.h gprogress.h gwwiconv.h
+fileutil.h gicons.h gresedit.h intl.h
+gdraw.h gimage.h gresource.h ustring.h
+
+fontforge-20120731-b/Packaging:
+fontforge.desktop FontForge.spec fontforge.xml
+FontForge-doc.spec FontForge.static.spec
+
+fontforge-20120731-b/pycontrib:
+excepthook.py
+
+fontforge-20120731-b/Unicode:
+char.c makebuildtables.c ucharmap.c
+dump.c makeutype.c usprintf.c
+gwwiconv.c memory.c ustring.c
+```
+
+### FontForge Files Using The GPL Licenses
+
+These files were created under the GPL License:
+```
+fontforge-20120731-b/
+aclocal.m4 configure.dynamic configure.static.in
+config.guess configure.dynamic.in ltmain.sh
+config.sub configure.in Makefile.dynamic.in
+configure configure.static Makefile.static.in
+
+fontforge-20120731-b/fontforge:
+Makefile.dynamic.in Makefile.static.in
+
+fontforge-20120731-b/gdraw:
+Makefile.dynamic.in Makefile.static.in
+
+fontforge-20120731-b/gutils:
+giomime.c Makefile.dynamic.in Makefile.static.in
+
+fontforge-20120731-b/inc:
+fontforge-config.h.in
+
+fontforge-20120731-b/plugins:
+ANALYZE_MAP.COM Makefile.in
+
+fontforge-20120731-b/Unicode:
+Makefile.dynamic.in Makefile.static.in
+```
+
+### FontForge Files Using The Open Group License
+
+```
+fontforge-20120731-b/fontforge:
+fvimportbdf.c
+
+fontforge-20120731-b/gdraw:
+fontP.h
+
+fontforge-20120731-b/inc:
+gkeysym.h
+
+### Other Files
+
+These are generated files, or do not have a license specified:
+
+```
+fontforge-20120731-b/
+LICENSE README-Unix.html
+fontforge.pc.in README-Mac.html systemspecific.in
+INSTALL README-unix VERSION
+
+fontforge-20120731-b/fontforge:
+acorn2sfd.c fontimage.pe pottitle.patch
+autowidth.h fontlint.1 pua.c
+bezctx_ff.c fontlint.pe sfddiff.1
+bezctx_ff.h langfreq.c sfddiff.pe
+crctab.c libffstamp.h stamp.c
+libstamp.pre stamper.c
+diffstubs.c threaddummy.c
+encoding.h lookups.h utf8.pot
+exelibstamp.pre MacFontForgeApp.zip
+fontforge.1 othersubrs.c zapfnomen.c
+fontimage.1 potmstitle.patch
+
+fontforge-20120731-b/gdraw:
+genkeysym.c gxdraw.c xkeysyms_unicode.c
+
+fontforge-20120731-b/inc:
+chardata.h dynamic.h utype.h
+
+fontforge-20120731-b/gutils:
+divisors.c
+
+fontforge-20120731-b/plugins:
+gb12345.c
+
+fontforge-20120731-b/po:
+ca.po el.po es.po it.po ml.po ru.po uk.po zh_CN.po
+de.po en_GB.po fr.po ja.po pl.po toengb.c vi.po zh_TW.po
+
+fontforge-20120731-b/pyhook:
+fontforgepyhook.c psMatpyhook.c setup.py.in
+loadfontforge.h README
+
+fontforge-20120731-b/Unicode:
+alphabet.c cjk.c README.TXT
+ArabicForms.c combiners.h unialt.c
+backtrns.c utype.c
+```
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/Makefile.am
new file mode 100644
index 00000000000..a5e247c645d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/Makefile.am
@@ -0,0 +1,88 @@
+noinst_LIBRARIES = libfontforge.a
+
+libfontforge_a_SOURCES = \
+ fontforge/PfEd.h \
+ fontforge/alphabet.c \
+ fontforge/asmfpst.c \
+ fontforge/autohint.c \
+ fontforge/char.c \
+ fontforge/cjk.c \
+ fontforge/configure-fontforge.h \
+ fontforge/cvundoes.c \
+ fontforge/dumppfa.c \
+ fontforge/edgelist.h \
+ fontforge/edgelist2.h \
+ fontforge/encoding.c \
+ fontforge/encoding.h \
+ fontforge/fontforge-config.h \
+ fontforge/fontforge.h \
+ fontforge/fontforgevw.h \
+ fontforge/fvfonts.c \
+ fontforge/gwwiconv.c \
+ fontforge/libffstamp.h \
+ fontforge/lookups.c \
+ fontforge/macbinary.c \
+ fontforge/macenc.c \
+ fontforge/mathconstants.c \
+ fontforge/memory.c \
+ fontforge/mm.c \
+ fontforge/namehash.h \
+ fontforge/namelist.c \
+ fontforge/nouiutil.c \
+ fontforge/nowakowskittfinstr.c \
+ fontforge/parsepfa.c \
+ fontforge/parsettf.c \
+ fontforge/parsettfatt.c \
+ fontforge/psfont.h \
+ fontforge/psread.c \
+ fontforge/pua.c \
+ fontforge/sd.h \
+ fontforge/sfd.c \
+ fontforge/sfd1.c \
+ fontforge/sfd1.h \
+ fontforge/splinechar.c \
+ fontforge/splinefont.c \
+ fontforge/splinefont.h \
+ fontforge/splineorder2.c \
+ fontforge/splineoverlap.c \
+ fontforge/splinerefigure.c \
+ fontforge/splinesave.c \
+ fontforge/splinesaveafm.c \
+ fontforge/splineutil.c \
+ fontforge/splineutil2.c \
+ fontforge/start.c \
+ fontforge/stemdb.c \
+ fontforge/stemdb.h \
+ fontforge/tables.h \
+ fontforge/tottf.c \
+ fontforge/tottfaat.c \
+ fontforge/tottfgpos.c \
+ fontforge/tottfvar.c \
+ fontforge/ttf.h \
+ fontforge/ttfinstrs.c \
+ fontforge/ttfinstrs.h \
+ fontforge/ttfspecial.c \
+ fontforge/uiinterface.h \
+ fontforge/unialt.c \
+ fontforge/ustring.c \
+ fontforge/utils.c \
+ fontforge/utype.c \
+ fontforge/woff.c \
+ inc/basics.h \
+ inc/chardata.h \
+ inc/charset.h \
+ inc/dlist.h \
+ inc/gimage.h \
+ inc/gnetwork.h \
+ inc/gwwiconv.h \
+ inc/intl.h \
+ inc/ustring.h \
+ inc/utype.h
+
+EXTRA_DIST = LICENSE
+
+AM_CFLAGS = -I$(srcdir)/inc -I$(srcdir)/fontforge
+
+@CODE_COVERAGE_RULES@
+
+CLEANFILES = *.gcda *.gcno
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/Makefile.in
new file mode 100644
index 00000000000..651fbf52fd6
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/Makefile.in
@@ -0,0 +1,830 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = libs/ff-woff
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libfontforge_a_AR = $(AR) $(ARFLAGS)
+libfontforge_a_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libfontforge_a_OBJECTS = fontforge/alphabet.$(OBJEXT) \
+ fontforge/asmfpst.$(OBJEXT) fontforge/autohint.$(OBJEXT) \
+ fontforge/char.$(OBJEXT) fontforge/cjk.$(OBJEXT) \
+ fontforge/cvundoes.$(OBJEXT) fontforge/dumppfa.$(OBJEXT) \
+ fontforge/encoding.$(OBJEXT) fontforge/fvfonts.$(OBJEXT) \
+ fontforge/gwwiconv.$(OBJEXT) fontforge/lookups.$(OBJEXT) \
+ fontforge/macbinary.$(OBJEXT) fontforge/macenc.$(OBJEXT) \
+ fontforge/mathconstants.$(OBJEXT) fontforge/memory.$(OBJEXT) \
+ fontforge/mm.$(OBJEXT) fontforge/namelist.$(OBJEXT) \
+ fontforge/nouiutil.$(OBJEXT) \
+ fontforge/nowakowskittfinstr.$(OBJEXT) \
+ fontforge/parsepfa.$(OBJEXT) fontforge/parsettf.$(OBJEXT) \
+ fontforge/parsettfatt.$(OBJEXT) fontforge/psread.$(OBJEXT) \
+ fontforge/pua.$(OBJEXT) fontforge/sfd.$(OBJEXT) \
+ fontforge/sfd1.$(OBJEXT) fontforge/splinechar.$(OBJEXT) \
+ fontforge/splinefont.$(OBJEXT) \
+ fontforge/splineorder2.$(OBJEXT) \
+ fontforge/splineoverlap.$(OBJEXT) \
+ fontforge/splinerefigure.$(OBJEXT) \
+ fontforge/splinesave.$(OBJEXT) \
+ fontforge/splinesaveafm.$(OBJEXT) \
+ fontforge/splineutil.$(OBJEXT) fontforge/splineutil2.$(OBJEXT) \
+ fontforge/start.$(OBJEXT) fontforge/stemdb.$(OBJEXT) \
+ fontforge/tottf.$(OBJEXT) fontforge/tottfaat.$(OBJEXT) \
+ fontforge/tottfgpos.$(OBJEXT) fontforge/tottfvar.$(OBJEXT) \
+ fontforge/ttfinstrs.$(OBJEXT) fontforge/ttfspecial.$(OBJEXT) \
+ fontforge/unialt.$(OBJEXT) fontforge/ustring.$(OBJEXT) \
+ fontforge/utils.$(OBJEXT) fontforge/utype.$(OBJEXT) \
+ fontforge/woff.$(OBJEXT)
+libfontforge_a_OBJECTS = $(am_libfontforge_a_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libfontforge_a_SOURCES)
+DIST_SOURCES = $(libfontforge_a_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GCOV = @GCOV@
+GENHTML = @GENHTML@
+GREP = @GREP@
+HAVE_CXX11 = @HAVE_CXX11@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCOV = @LCOV@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ZLIB_CFLAGS = @ZLIB_CFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_LIBRARIES = libfontforge.a
+libfontforge_a_SOURCES = \
+ fontforge/PfEd.h \
+ fontforge/alphabet.c \
+ fontforge/asmfpst.c \
+ fontforge/autohint.c \
+ fontforge/char.c \
+ fontforge/cjk.c \
+ fontforge/configure-fontforge.h \
+ fontforge/cvundoes.c \
+ fontforge/dumppfa.c \
+ fontforge/edgelist.h \
+ fontforge/edgelist2.h \
+ fontforge/encoding.c \
+ fontforge/encoding.h \
+ fontforge/fontforge-config.h \
+ fontforge/fontforge.h \
+ fontforge/fontforgevw.h \
+ fontforge/fvfonts.c \
+ fontforge/gwwiconv.c \
+ fontforge/libffstamp.h \
+ fontforge/lookups.c \
+ fontforge/macbinary.c \
+ fontforge/macenc.c \
+ fontforge/mathconstants.c \
+ fontforge/memory.c \
+ fontforge/mm.c \
+ fontforge/namehash.h \
+ fontforge/namelist.c \
+ fontforge/nouiutil.c \
+ fontforge/nowakowskittfinstr.c \
+ fontforge/parsepfa.c \
+ fontforge/parsettf.c \
+ fontforge/parsettfatt.c \
+ fontforge/psfont.h \
+ fontforge/psread.c \
+ fontforge/pua.c \
+ fontforge/sd.h \
+ fontforge/sfd.c \
+ fontforge/sfd1.c \
+ fontforge/sfd1.h \
+ fontforge/splinechar.c \
+ fontforge/splinefont.c \
+ fontforge/splinefont.h \
+ fontforge/splineorder2.c \
+ fontforge/splineoverlap.c \
+ fontforge/splinerefigure.c \
+ fontforge/splinesave.c \
+ fontforge/splinesaveafm.c \
+ fontforge/splineutil.c \
+ fontforge/splineutil2.c \
+ fontforge/start.c \
+ fontforge/stemdb.c \
+ fontforge/stemdb.h \
+ fontforge/tables.h \
+ fontforge/tottf.c \
+ fontforge/tottfaat.c \
+ fontforge/tottfgpos.c \
+ fontforge/tottfvar.c \
+ fontforge/ttf.h \
+ fontforge/ttfinstrs.c \
+ fontforge/ttfinstrs.h \
+ fontforge/ttfspecial.c \
+ fontforge/uiinterface.h \
+ fontforge/unialt.c \
+ fontforge/ustring.c \
+ fontforge/utils.c \
+ fontforge/utype.c \
+ fontforge/woff.c \
+ inc/basics.h \
+ inc/chardata.h \
+ inc/charset.h \
+ inc/dlist.h \
+ inc/gimage.h \
+ inc/gnetwork.h \
+ inc/gwwiconv.h \
+ inc/intl.h \
+ inc/ustring.h \
+ inc/utype.h
+
+EXTRA_DIST = LICENSE
+AM_CFLAGS = -I$(srcdir)/inc -I$(srcdir)/fontforge
+CLEANFILES = *.gcda *.gcno
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/ff-woff/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu libs/ff-woff/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+fontforge/$(am__dirstamp):
+ @$(MKDIR_P) fontforge
+ @: > fontforge/$(am__dirstamp)
+fontforge/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) fontforge/$(DEPDIR)
+ @: > fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/alphabet.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/asmfpst.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/autohint.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/char.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/cjk.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/cvundoes.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/dumppfa.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/encoding.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/fvfonts.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/gwwiconv.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/lookups.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/macbinary.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/macenc.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/mathconstants.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/memory.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/mm.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/namelist.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/nouiutil.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/nowakowskittfinstr.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/parsepfa.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/parsettf.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/parsettfatt.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/psread.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/pua.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/sfd.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/sfd1.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/splinechar.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/splinefont.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/splineorder2.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/splineoverlap.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/splinerefigure.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/splinesave.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/splinesaveafm.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/splineutil.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/splineutil2.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/start.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/stemdb.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/tottf.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/tottfaat.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/tottfgpos.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/tottfvar.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/ttfinstrs.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/ttfspecial.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/unialt.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/ustring.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/utils.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/utype.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+fontforge/woff.$(OBJEXT): fontforge/$(am__dirstamp) \
+ fontforge/$(DEPDIR)/$(am__dirstamp)
+
+libfontforge.a: $(libfontforge_a_OBJECTS) $(libfontforge_a_DEPENDENCIES) $(EXTRA_libfontforge_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libfontforge.a
+ $(AM_V_AR)$(libfontforge_a_AR) libfontforge.a $(libfontforge_a_OBJECTS) $(libfontforge_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libfontforge.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f fontforge/*.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/alphabet.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/asmfpst.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/autohint.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/char.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/cjk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/cvundoes.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/dumppfa.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/encoding.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/fvfonts.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/gwwiconv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/lookups.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/macbinary.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/macenc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/mathconstants.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/memory.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/mm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/namelist.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/nouiutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/nowakowskittfinstr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/parsepfa.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/parsettf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/parsettfatt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/psread.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/pua.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/sfd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/sfd1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/splinechar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/splinefont.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/splineorder2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/splineoverlap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/splinerefigure.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/splinesave.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/splinesaveafm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/splineutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/splineutil2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/start.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/stemdb.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/tottf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/tottfaat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/tottfgpos.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/tottfvar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/ttfinstrs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/ttfspecial.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/unialt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/ustring.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/utils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/utype.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@fontforge/$(DEPDIR)/woff.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f fontforge/$(DEPDIR)/$(am__dirstamp)
+ -rm -f fontforge/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf fontforge/$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf fontforge/$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am
+
+.PRECIOUS: Makefile
+
+
+@CODE_COVERAGE_RULES@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/PfEd.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/PfEd.h
new file mode 100644
index 00000000000..2130e38f035
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/PfEd.h
@@ -0,0 +1,218 @@
+/* Copyright (C) 2008-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#ifndef _PFED_H
+# define _PFED_H
+/* The PfEd table (from PfaEdit, former name of FontForge) is designed to */
+/* store information useful for editing the font. This includes stuff like */
+/* guidelines, background layers, spiro layers, comments, lookup names, etc*/
+/* The idea is that much useful information can be retrieved even after the */
+/* font has been generated into its final form: ttf/otf */
+/* It is something of a catch all table composed of many subtables, each of */
+/* which preserves one particular item. I expect more subtables will be */
+/* added as I, or others, think of more things worth preserving. */
+
+
+# ifndef CHR
+# define CHR(ch1,ch2,ch3,ch4) (((ch1)<<24)|((ch2)<<16)|((ch3)<<8)|(ch4))
+# endif
+
+/* 'PfEd' table format is as follows... */
+/* uint32 version number 0x00010000 */
+/* uint32 subtable count */
+/* struct { uint32 tab, offset } tag/offset for first subtable */
+/* struct { uint32 tab, offset } tag/offset for second subtable */
+/* ... */
+
+/* 'PfEd' 'fcmt' font comment subtable format */
+/* short version number 0/1 */
+/* short string length */
+/* version 0=>String in latin1 (should be ASCII), version 1=>utf8*/
+
+ /* 'PfEd' 'cmnt' glyph comment subtable format */
+ /* THIS VERSION IS DEPRECATED IN FAVOR OF VERSION 1 DESCRIBED BELOW */
+ /* short version number 0 */
+ /* short count-of-ranges */
+ /* struct { short start-glyph, end-glyph, short offset } */
+ /* ... */
+ /* foreach glyph >=start-glyph, <=end-glyph(+1) */
+ /* uint32 offset to glyph comment string (in UCS2)*/
+ /* ... */
+ /* And one last offset pointing beyong the end of the last string to enable length calculations */
+ /* String table in UCS2 (NUL terminated). All offsets from start*/
+ /* of subtable */
+
+/* 'PfEd' 'cmnt' glyph comment subtable format */
+/* New version of 'cmnt' which uses utf8 rather than UCS2 */
+/* short version number 1 */
+/* short count-of-ranges */
+/* struct { short start-glyph, end-glyph, short offset } */
+/* ... */
+/* foreach glyph >=start-glyph, <=end-glyph(+1) */
+/* uint32 offset to glyph comment string (in utf8)*/
+/* ... */
+/* And one last offset pointing beyong the end of the last string to enable length calculations */
+/* String table in utf8 (NUL terminated). All offsets from start*/
+/* of subtable */
+
+/* 'PfEd' 'cvt ' cvt comment subtable format */
+/* short version number 0 */
+/* short size of cvt comment array (might be less that cvt) */
+/* ushort offset[size] to utf8 strings describing cvt entries */
+/* (strings are NUL terminated) */
+/* String table in utf8 (NUL terminated). All offsets from start*/
+/* of subtable */
+
+/* 'PfEd' 'colr' glyph colour subtable */
+/* short version number 0 */
+/* short count-of-ranges */
+/* struct { short start-glyph, end-glyph, uint32 colour (rgb) } */
+
+/* 'PfEd' 'GPOS' GPOS lookup/subtable/anchor names */
+/* short version number 0 */
+/* short count-of-lookups */
+/* struct { short offset name, offset subtables; } */
+/* A subtable: */
+/* short count-of-subtables */
+/* struct { short offset name, offset anchors; } */
+/* An anchor */
+/* short count-of-anchors */
+/* struct { short offset name; } */
+/* string data (utf8, nul terminated) */
+/* (all offsets from start of subtable) */
+
+/* 'PfEd' 'GSUB' GSUB lookup/subtable names */
+/* Same as GPOS (anchors will always be NULL) */
+
+/* The next two tables 'guid' and 'layr' will make use of the */
+/* following data type. The glyph_layer. */
+/* short contour-count */
+/* short image-count (always 0 for now) */
+/* struct { ushort offset; ushort name-off}[contour-count] */
+/* struct { ??? }[image-count] */
+/* Each contour consists of one byte of command and a random */
+/* amount of data dependant on the command. */
+/* See below for a description of the command verbs */
+/* string data in utf8 */
+/* (offsets relative to start of glyph_layer structure ) */
+
+/* 'PfEd' 'guid' Horizontal/Vertical guideline data */
+/* short version number 0 */
+/* short # vertical guidelines */
+/* short # horizontal guidelines */
+/* short mbz */
+/* offset guide spline data -- specifies all guides as splines */
+/* May be NULL */
+/* struct[# vert guidelines] { short x; short offset name} */
+/* struct[# h guidelines] { short y; short offset name} */
+/* a glyph_layer (includes all guides, even those listed above) */
+/* (all offsets, except those in the glyph_layer, relative to start of subtable) */
+
+/* 'PfEd' 'layr' layer data */
+/* short version number 0 */
+/* short layer-count */
+/* struct { short typeflags; short offset-name; uint32 offset-to-layer-data; } */
+/* the layer type is 2=>quadratic, 3=>PostScript, 1=>spiro */
+/* 0x102=>quadratic fore, 0x103=>PS fore */
+/* A layer: */
+/* short count-of-ranges */
+/* struct { short start-glyph, end-glyph, uint32 offset } */
+/* ... */
+/* foreach glyph >=start-glyph, <=end-glyph */
+/* uint32 offset to per-glyph outline data */
+/* many glyph_layers */
+/* (all offsets, except those in the glyph_layers, relative to start of subtable) */
+
+ /* Main table tag */
+# define PfEd_TAG CHR('P','f','E','d')
+
+ /* Subtable tags */
+# define fcmt_TAG CHR('f','c','m','t') /* Font Comment */
+# define flog_TAG CHR('f','l','o','g') /* FONTLOG */
+# define cmnt_TAG CHR('c','m','n','t') /* Glyph Comments */
+# define cvtc_TAG CHR('c','v','t','c') /* Comments for each cvt entry */
+# define colr_TAG CHR('c','o','l','r') /* Glyph color flags */
+# ifndef GPOS_TAG
+# define GPOS_TAG CHR('G','P','O','S') /* Names for GPOS lookups */
+# define GSUB_TAG CHR('G','S','U','B') /* Names for GSUB lookups */
+# endif
+# define guid_TAG CHR('g','u','i','d') /* Guideline data */
+# define layr_TAG CHR('l','a','y','r') /* Any layers which aren't part of the font */
+ /* Backgrounds, spiros, etc. */
+
+
+/* The layer commands used to draw quadratic and cubic layers have two */
+/* componants: A verb, which says what to do, and a modifier which says */
+/* how the data are stored. So a command looks like (verb)|(modifier) */
+/* A moveto command with byte data looks like (V_MoveTo|V_B) */
+/* The two commands to end a contour (V_Close and V_End) take no data */
+/* and use no modifier */
+
+/* layr subtable contour construction verb modifiers specifying data types */
+# define V_B 0 /* data are signed bytes */
+# define V_S 1 /* data are signed shorts */
+# define V_F 2 /* data are fixed longs, divide by 256.0 */
+
+/* layr subtable contour construction verbs */
+# define V_MoveTo 0 /* Start contour, absolute data (2 coords) */
+# define V_LineTo 4 /* Straight line, relative data (2 coords) */
+# define V_HLineTo 8 /* Horizontal line, relative (1 coord, x-off) */
+# define V_VLineTo 12 /* Vertical line, relative (1 coord, y-off) */
+
+# define V_QCurveTo 16 /* Quadratic spline, rel, rel (4 coords, cp, p) */
+# define V_QImplicit 20 /* Quadratic spline, rel (2 coords, cp) */
+ /* May only occur after a V_QCurveTo or V_QImplicit (may not start contour) */
+ /* Must be followed by a V_QCurveTo or V_QImplicit (this may end contour) */
+ /* The on-curve point is implicit by averaging the given cp with the cp in the next verb */
+# define V_QHImplicit 24 /* Quadratic spline, rel (1 coord, cp.x) */
+# define V_QVImplicit 28 /* Quadratic spline, rel (1 coord, cp.y) */
+
+# define V_CurveTo 32 /* Cubic spline, rel, rel (6 coords, cp1, cp2, p) */
+# define V_VHCurveTo 36 /* Cubic spline, rel, rel (4 coords, cp1.y cp2.* p.x) */
+ /* cp1.x == current.y, p.y == cp2.y */
+# define V_HVCurveTo 40 /* Cubic spline, rel, rel (4 coords, cp1.x cp2.* p.y) */
+
+# define V_Close 44 /* Close path (optionally adding a line) no data */
+# define V_End 45 /* End path (leave open) no data */
+
+#define COM_MOD(com) ((com)&3)
+#define COM_VERB(com) ((com)&~3)
+
+/* the layer commands used to draw spiro layers are the standard spiro verbs */
+/* these will always take fixed long data (V_L) as described above */
+# ifndef SPIRO_OPEN_CONTOUR
+# define SPIRO_OPEN_CONTOUR '{'
+# define SPIRO_CORNER 'v'
+# define SPIRO_G4 'o'
+# define SPIRO_G2 'c'
+# define SPIRO_LEFT '['
+# define SPIRO_RIGHT ']'
+# define SPIRO_END 'z'
+# endif
+# define SPIRO_CLOSE_CONTOUR '}'
+
+#endif /* _PFED_H */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/alphabet.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/alphabet.c
new file mode 100644
index 00000000000..166a33208a7
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/alphabet.c
@@ -0,0 +1,3348 @@
+#include <chardata.h>
+
+const unsigned char c_allzeros[256] = { 0 };
+
+const unichar_t unicode_from_i8859_1[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+
+static const unsigned char i8859_1_from_unicode_0[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
+};
+
+static const unsigned char * const i8859_1_from_unicode_[] = {
+ i8859_1_from_unicode_0
+};
+
+struct charmap i8859_1_from_unicode = { 0, 0, (unsigned char **) i8859_1_from_unicode_, (unichar_t *) unicode_from_i8859_1 };
+
+const unichar_t unicode_from_i8859_2[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
+ 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
+ 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
+ 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
+ 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
+ 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
+ 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
+ 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
+ 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
+ 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9
+};
+
+static const unsigned char i8859_2_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00,
+ 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00,
+ 0x00, 0x00, 0x00, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, 0x00, 0x00, 0xda, 0x00, 0xdc, 0xdd, 0x00, 0xdf,
+ 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00,
+ 0x00, 0x00, 0x00, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, 0x00, 0x00, 0xfa, 0x00, 0xfc, 0xfd, 0x00, 0x00
+};
+
+static const unsigned char i8859_2_from_unicode_1[] = {
+ 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xb1, 0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0xcf, 0xef,
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xea, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0xe5, 0x00, 0x00, 0xa5, 0xb5, 0x00,
+ 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0xd2, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xd5, 0xf5, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, 0xd8, 0xf8, 0xa6, 0xb6, 0x00, 0x00, 0xaa, 0xba,
+ 0xa9, 0xb9, 0xde, 0xfe, 0xab, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf9,
+ 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0xaf, 0xbf, 0xae, 0xbe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_2_from_unicode_2[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_2_from_unicode_[] = {
+ i8859_2_from_unicode_0,
+ i8859_2_from_unicode_1,
+ i8859_2_from_unicode_2
+};
+
+struct charmap i8859_2_from_unicode = { 0, 2, (unsigned char **) i8859_2_from_unicode_, (unichar_t *) unicode_from_i8859_2 };
+
+const unichar_t unicode_from_i8859_3[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7,
+ 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b,
+ 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7,
+ 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c,
+ 0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7,
+ 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7,
+ 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9
+};
+
+static const unsigned char i8859_3_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0x00, 0xa3, 0xa4, 0x00, 0x00, 0xa7, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00,
+ 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, 0xb8, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00,
+ 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_3_from_unicode_1[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xe6, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xf8, 0xab, 0xbb,
+ 0xd5, 0xf5, 0x00, 0x00, 0xa6, 0xb6, 0xa1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa9, 0xb9, 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, 0xaa, 0xba,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0xfd, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_3_from_unicode_2[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_3_from_unicode_[] = {
+ i8859_3_from_unicode_0,
+ i8859_3_from_unicode_1,
+ i8859_3_from_unicode_2
+};
+
+struct charmap i8859_3_from_unicode = { 0, 2, (unsigned char **) i8859_3_from_unicode_, (unichar_t *) unicode_from_i8859_3 };
+
+const unichar_t unicode_from_i8859_4[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,
+ 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,
+ 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,
+ 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,
+ 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,
+ 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,
+ 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,
+ 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9
+};
+
+static const unsigned char i8859_4_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0xaf,
+ 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf,
+ 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_4_from_unicode_1[] = {
+ 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00,
+ 0xd0, 0xf0, 0xaa, 0xba, 0x00, 0x00, 0xcc, 0xec, 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xab, 0xbb, 0x00, 0x00, 0x00, 0x00, 0xa5, 0xb5, 0xcf, 0xef, 0x00, 0x00, 0xc7, 0xe7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf3, 0xa2, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, 0x00, 0x00, 0xbd, 0xbf, 0xd2, 0xf2, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa9, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0xdd, 0xfd, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xbe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_4_from_unicode_2[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_4_from_unicode_[] = {
+ i8859_4_from_unicode_0,
+ i8859_4_from_unicode_1,
+ i8859_4_from_unicode_2
+};
+
+struct charmap i8859_4_from_unicode = { 0, 2, (unsigned char **) i8859_4_from_unicode_, (unichar_t *) unicode_from_i8859_4 };
+
+const unichar_t unicode_from_i8859_5[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
+ 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+ 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f
+};
+
+static const unsigned char i8859_5_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_5_from_unicode_4[] = {
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_5_from_unicode_21[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_5_from_unicode_[] = {
+ i8859_5_from_unicode_0,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ i8859_5_from_unicode_4,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ i8859_5_from_unicode_21
+};
+
+struct charmap i8859_5_from_unicode = { 0, 33, (unsigned char **) i8859_5_from_unicode_, (unichar_t *) unicode_from_i8859_5 };
+
+const unichar_t unicode_from_i8859_6[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667,
+ 0x0668, 0x0669, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0000, 0x0000, 0x0000, 0x00a4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x060c, 0x00ad, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f,
+ 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
+ 0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
+ 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
+ 0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const unsigned char i8859_6_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_6_from_unicode_6[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf,
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_6_from_unicode_[] = {
+ i8859_6_from_unicode_0,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ i8859_6_from_unicode_6
+};
+
+struct charmap i8859_6_from_unicode = { 0, 6, (unsigned char **) i8859_6_from_unicode_, (unichar_t *) unicode_from_i8859_6 };
+
+const unichar_t unicode_from_i8859_7[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x02bd, 0x02bc, 0x00a3, 0x0000, 0x0000, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x0000, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
+ 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
+ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+ 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+ 0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
+ 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
+ 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+ 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
+ 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000
+};
+
+static const unsigned char i8859_7_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0xa6, 0xa7, 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0x00, 0x00,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_7_from_unicode_2[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xa1, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_7_from_unicode_3[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0x00, 0xb8, 0xb9, 0xba, 0x00, 0xbc, 0x00, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_7_from_unicode_20[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_7_from_unicode_[] = {
+ i8859_7_from_unicode_0,
+ c_allzeros,
+ i8859_7_from_unicode_2,
+ i8859_7_from_unicode_3,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ i8859_7_from_unicode_20
+};
+
+struct charmap i8859_7_from_unicode = { 0, 32, (unsigned char **) i8859_7_from_unicode_, (unichar_t *) unicode_from_i8859_7 };
+
+const unichar_t unicode_from_i8859_8[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0000, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x203e,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017,
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+ 0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const unsigned char i8859_8_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_8_from_unicode_5[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_8_from_unicode_20[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_8_from_unicode_[] = {
+ i8859_8_from_unicode_0,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ i8859_8_from_unicode_5,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ i8859_8_from_unicode_20
+};
+
+struct charmap i8859_8_from_unicode = { 0, 32, (unsigned char **) i8859_8_from_unicode_, (unichar_t *) unicode_from_i8859_8 };
+
+const unichar_t unicode_from_i8859_9[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff
+};
+
+static const unsigned char i8859_9_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff
+};
+
+static const unsigned char i8859_9_from_unicode_1[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_9_from_unicode_[] = {
+ i8859_9_from_unicode_0,
+ i8859_9_from_unicode_1
+};
+
+struct charmap i8859_9_from_unicode = { 0, 1, (unsigned char **) i8859_9_from_unicode_, (unichar_t *) unicode_from_i8859_9 };
+
+const unichar_t unicode_from_i8859_10[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7,
+ 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a,
+ 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x0000,
+ 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x00af, 0x016b, 0x014b,
+ 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0112, 0x00cd, 0x00ce, 0x00cf,
+ 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168,
+ 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0113, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169,
+ 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138
+};
+
+static const unsigned char i8859_10_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0xbd,
+ 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0xcf,
+ 0xd0, 0x00, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0xef,
+ 0xf0, 0x00, 0x00, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00
+};
+
+static const unsigned char i8859_10_from_unicode_1[] = {
+ 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00,
+ 0xa9, 0xb9, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, 0xa5, 0xb5, 0xa4, 0xb4, 0x00, 0x00, 0xc7, 0xe7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, 0xff, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, 0x00, 0x00, 0xaf, 0xbf, 0xd2, 0xf2, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xaa, 0xba, 0x00, 0x00, 0x00, 0x00, 0xab, 0xbb, 0xd7, 0xf7, 0xae, 0xbe, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_10_from_unicode_[] = {
+ i8859_10_from_unicode_0,
+ i8859_10_from_unicode_1
+};
+
+struct charmap i8859_10_from_unicode = { 0, 1, (unsigned char **) i8859_10_from_unicode_, (unichar_t *) unicode_from_i8859_10 };
+
+const unichar_t unicode_from_i8859_11[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0020, 0x0000, 0x0000, 0x0e3f,
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+ 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const unsigned char i8859_11_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xdc, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_11_from_unicode_e[] = {
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_11_from_unicode_[] = {
+ i8859_11_from_unicode_0,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ i8859_11_from_unicode_e
+};
+
+struct charmap i8859_11_from_unicode = { 0, 14, (unsigned char **) i8859_11_from_unicode_, (unichar_t *) unicode_from_i8859_11 };
+
+const unichar_t unicode_from_i8859_13[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7,
+ 0x00d8, 0x00a9, 0x0157, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7,
+ 0x00f8, 0x00b9, 0x0000, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
+ 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
+ 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
+ 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
+ 0x0172, 0x0141, 0x00da, 0x00db, 0x00dc, 0x017b, 0x017d, 0x00df,
+ 0x0105, 0x012e, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
+ 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
+ 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
+ 0x0173, 0x0142, 0x00fa, 0x00fb, 0x00fc, 0x017c, 0x017e, 0x2019
+};
+
+static const unsigned char i8859_13_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0x00, 0xa6, 0xa7, 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, 0x00, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xc4, 0xc5, 0xaf, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xd3, 0x00, 0xd5, 0xd6, 0xd7, 0xa8, 0x00, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf,
+ 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe5, 0xbf, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xf3, 0x00, 0xf5, 0xf6, 0xf7, 0xb8, 0x00, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_13_from_unicode_1[] = {
+ 0xc2, 0xe2, 0x00, 0x00, 0xc0, 0xe0, 0xc3, 0xe3, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00,
+ 0x00, 0x00, 0xc7, 0xe7, 0x00, 0x00, 0xcb, 0xeb, 0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0xee, 0x00, 0x00, 0xe1, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xed, 0x00, 0x00, 0x00, 0xcf, 0xef, 0x00, 0x00, 0x00,
+ 0x00, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf4, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_13_from_unicode_20[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xb4, 0xa1, 0xa5, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_13_from_unicode_[] = {
+ i8859_13_from_unicode_0,
+ i8859_13_from_unicode_1,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ i8859_13_from_unicode_20
+};
+
+struct charmap i8859_13_from_unicode = { 0, 32, (unsigned char **) i8859_13_from_unicode_, (unichar_t *) unicode_from_i8859_13 };
+
+const unichar_t unicode_from_i8859_14[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7,
+ 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178,
+ 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56,
+ 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff
+};
+
+static const unsigned char i8859_14_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa7, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xad, 0xae, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x00, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x00, 0xff
+};
+
+static const unsigned char i8859_14_from_unicode_1[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xa5, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xb2, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, 0xde, 0xfe, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_14_from_unicode_1e[] = {
+ 0x00, 0x00, 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xab, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xb1,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xb4, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xbb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa8, 0xb8, 0xaa, 0xba, 0xbd, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_14_from_unicode_[] = {
+ i8859_14_from_unicode_0,
+ i8859_14_from_unicode_1,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ i8859_14_from_unicode_1e
+};
+
+struct charmap i8859_14_from_unicode = { 0, 30, (unsigned char **) i8859_14_from_unicode_, (unichar_t *) unicode_from_i8859_14 };
+
+const unichar_t unicode_from_i8859_15[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
+ 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
+ 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+
+static const unsigned char i8859_15_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, 0x00, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, 0x00, 0xb9, 0xba, 0xbb, 0x00, 0x00, 0x00, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
+};
+
+static const unsigned char i8859_15_from_unicode_1[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb8, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char i8859_15_from_unicode_20[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const i8859_15_from_unicode_[] = {
+ i8859_15_from_unicode_0,
+ i8859_15_from_unicode_1,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ i8859_15_from_unicode_20
+};
+
+struct charmap i8859_15_from_unicode = { 0, 32, (unsigned char **) i8859_15_from_unicode_, (unichar_t *) unicode_from_i8859_15 };
+
+const unichar_t unicode_from_koi8_r[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x0000,
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+ 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+ 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
+ 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
+ 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9,
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+};
+
+static const unsigned char koi8_r_from_unicode_0[] = {
+ 0x7f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char koi8_r_from_unicode_4[] = {
+ 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0,
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1,
+ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
+ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1,
+ 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char koi8_r_from_unicode_22[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char koi8_r_from_unicode_23[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char koi8_r_from_unicode_25[] = {
+ 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00,
+ 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
+ 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00,
+ 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const koi8_r_from_unicode_[] = {
+ koi8_r_from_unicode_0,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ koi8_r_from_unicode_4,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ koi8_r_from_unicode_22,
+ koi8_r_from_unicode_23,
+ c_allzeros,
+ koi8_r_from_unicode_25
+};
+
+struct charmap koi8_r_from_unicode = { 0, 37, (unsigned char **) koi8_r_from_unicode_, (unichar_t *) unicode_from_koi8_r };
+
+const unichar_t unicode_from_jis201[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x00a5, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x0000, 0xff61, 0xff62, 0xff63, 0xff64, 0xff65, 0xff66, 0xff67,
+ 0xff68, 0xff69, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f,
+ 0xff70, 0xff71, 0xff72, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77,
+ 0xff78, 0xff79, 0xff7a, 0xff7b, 0xff7c, 0xff7d, 0xff7e, 0xff7f,
+ 0xff80, 0xff81, 0xff82, 0xff83, 0xff84, 0xff85, 0xff86, 0xff87,
+ 0xff88, 0xff89, 0xff8a, 0xff8b, 0xff8c, 0xff8d, 0xff8e, 0xff8f,
+ 0xff90, 0xff91, 0xff92, 0xff93, 0xff94, 0xff95, 0xff96, 0xff97,
+ 0xff98, 0xff99, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0xff9e, 0xff9f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const unsigned char jis201_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x00, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char jis201_from_unicode_20[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char jis201_from_unicode_ff[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const jis201_from_unicode_[] = {
+ jis201_from_unicode_0,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ jis201_from_unicode_20,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ jis201_from_unicode_ff
+};
+
+struct charmap jis201_from_unicode = { 0, 255, (unsigned char **) jis201_from_unicode_, (unichar_t *) unicode_from_jis201 };
+
+const unichar_t unicode_from_win[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+
+static const unsigned char win_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
+};
+
+static const unsigned char win_from_unicode_1[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char win_from_unicode_2[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char win_from_unicode_20[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00,
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char win_from_unicode_21[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const win_from_unicode_[] = {
+ win_from_unicode_0,
+ win_from_unicode_1,
+ win_from_unicode_2,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ win_from_unicode_20,
+ win_from_unicode_21
+};
+
+struct charmap win_from_unicode = { 0, 33, (unsigned char **) win_from_unicode_, (unichar_t *) unicode_from_win };
+
+const unichar_t unicode_from_mac[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01, 0xfb02,
+ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+};
+
+static const unsigned char mac_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xca, 0xc1, 0xa2, 0xa3, 0x00, 0xb4, 0x00, 0xa4, 0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0x00, 0xa8, 0xf8,
+ 0xa1, 0xb1, 0x00, 0x00, 0xab, 0xb5, 0xa6, 0xe1, 0xfc, 0x00, 0xbc, 0xc8, 0x00, 0x00, 0x00, 0xc0,
+ 0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82, 0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec,
+ 0x00, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0x00, 0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0x00, 0x00, 0xa7,
+ 0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d, 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95,
+ 0x00, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0x00, 0x00, 0xd8
+};
+
+static const unsigned char mac_from_unicode_1[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xce, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char mac_from_unicode_2[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char mac_from_unicode_3[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char mac_from_unicode_20[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0xe2, 0x00, 0xd2, 0xd3, 0xe3, 0x00,
+ 0xa0, 0xe0, 0xa5, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char mac_from_unicode_21[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char mac_from_unicode_22[] = {
+ 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8,
+ 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xb0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char mac_from_unicode_25[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char mac_from_unicode_f8[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0
+};
+
+static const unsigned char mac_from_unicode_fb[] = {
+ 0x00, 0xde, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const mac_from_unicode_[] = {
+ mac_from_unicode_0,
+ mac_from_unicode_1,
+ mac_from_unicode_2,
+ mac_from_unicode_3,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ mac_from_unicode_20,
+ mac_from_unicode_21,
+ mac_from_unicode_22,
+ c_allzeros,
+ c_allzeros,
+ mac_from_unicode_25,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ mac_from_unicode_f8,
+ c_allzeros,
+ c_allzeros,
+ mac_from_unicode_fb
+};
+
+struct charmap mac_from_unicode = { 0, 251, (unsigned char **) mac_from_unicode_, (unichar_t *) unicode_from_mac };
+
+const unichar_t unicode_from_MacSymbol[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x2200, 0x0023, 0x2203, 0x0025, 0x0026, 0x220d,
+ 0x0028, 0x0029, 0x2217, 0x002b, 0x002c, 0x2212, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x2245, 0x0391, 0x0392, 0x03a7, 0x0394, 0x0395, 0x03a6, 0x0393,
+ 0x0397, 0x0399, 0x03d1, 0x039a, 0x039b, 0x039c, 0x039d, 0x039f,
+ 0x03a0, 0x0398, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03c2, 0x03a9,
+ 0x039e, 0x03a8, 0x0396, 0x005b, 0x2234, 0x005d, 0x22a5, 0x005f,
+ 0xf8e5, 0x03b1, 0x03b2, 0x03c7, 0x03b4, 0x03b5, 0x03c6, 0x03b3,
+ 0x03b7, 0x03b9, 0x03d5, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf,
+ 0x03c0, 0x03b8, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03d6, 0x03c9,
+ 0x03be, 0x03c8, 0x03b6, 0x007b, 0x007c, 0x007d, 0x223c, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x0000, 0x03d2, 0x2032, 0x2264, 0x2044, 0x221e, 0x0192, 0x2663,
+ 0x2666, 0x2665, 0x2660, 0x2194, 0x2190, 0x2191, 0x2192, 0x2193,
+ 0x00b0, 0x00b1, 0x2033, 0x2265, 0x00d7, 0x221d, 0x2202, 0x2022,
+ 0x00f7, 0x2260, 0x2261, 0x2248, 0x2026, 0xf8e6, 0xf8e7, 0x21b5,
+ 0x2135, 0x2111, 0x211c, 0x2118, 0x2297, 0x2295, 0x2205, 0x2229,
+ 0x222a, 0x2283, 0x2287, 0x2284, 0x2282, 0x2286, 0x2208, 0x2209,
+ 0x2220, 0x2207, 0x00ae, 0x00a9, 0x2122, 0x220f, 0x221a, 0x22c5,
+ 0x00ac, 0x2227, 0x2228, 0x21d4, 0x21d0, 0x21d1, 0x21d2, 0x21d3,
+ 0x22c4, 0x2329, 0xf8e8, 0xf8e9, 0xf8ea, 0x2211, 0xf8eb, 0xf8ec,
+ 0xf8ed, 0xf8ee, 0xf8ef, 0xf8f0, 0xf8f1, 0xf8f2, 0xf8f3, 0xf8f4,
+ 0xf8ff, 0x232a, 0x222b, 0x2320, 0xf8f5, 0x2321, 0xf8f6, 0xf8f7,
+ 0xf8f8, 0xf8f9, 0xf8fa, 0xf8fb, 0xf8fc, 0xf8fd, 0xf8fe, 0x02c7
+};
+
+static const unsigned char MacSymbol_from_unicode_0[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x00, 0x23, 0x00, 0x25, 0x26, 0x00, 0x28, 0x29, 0x00, 0x2b, 0x2c, 0x00, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x5f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x7c, 0x7d, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0xd8, 0x00, 0xd2, 0x00,
+ 0xb0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char MacSymbol_from_unicode_1[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char MacSymbol_from_unicode_2[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char MacSymbol_from_unicode_3[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x42, 0x47, 0x44, 0x45, 0x5a, 0x48, 0x51, 0x49, 0x4b, 0x4c, 0x4d, 0x4e, 0x58, 0x4f,
+ 0x50, 0x52, 0x00, 0x53, 0x54, 0x55, 0x46, 0x43, 0x59, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x61, 0x62, 0x67, 0x64, 0x65, 0x7a, 0x68, 0x71, 0x69, 0x6b, 0x6c, 0x6d, 0x6e, 0x78, 0x6f,
+ 0x70, 0x72, 0x56, 0x73, 0x74, 0x75, 0x66, 0x63, 0x79, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x4a, 0xa1, 0x00, 0x00, 0x6a, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char MacSymbol_from_unicode_20[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xa2, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char MacSymbol_from_unicode_21[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xac, 0xad, 0xae, 0xaf, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xdc, 0xdd, 0xde, 0xdf, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char MacSymbol_from_unicode_22[] = {
+ 0x22, 0x00, 0xb6, 0x24, 0x00, 0xc6, 0x00, 0xd1, 0xce, 0xcf, 0x00, 0x00, 0x00, 0x27, 0x00, 0xd5,
+ 0x00, 0xe5, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0xd6, 0x00, 0x00, 0xb5, 0xa5, 0x00,
+ 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xda, 0xc7, 0xc8, 0xf2, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xb9, 0xba, 0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xcc, 0xc9, 0xcb, 0x00, 0xcd, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char MacSymbol_from_unicode_23[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xf3, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char MacSymbol_from_unicode_26[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xaa, 0x00, 0x00, 0xa7, 0x00, 0xa9, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char MacSymbol_from_unicode_f8[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xbd, 0xbe, 0xe2, 0xe3, 0xe4, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
+ 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf4, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xf0
+};
+
+static const unsigned char * const MacSymbol_from_unicode_[] = {
+ MacSymbol_from_unicode_0,
+ MacSymbol_from_unicode_1,
+ MacSymbol_from_unicode_2,
+ MacSymbol_from_unicode_3,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ MacSymbol_from_unicode_20,
+ MacSymbol_from_unicode_21,
+ MacSymbol_from_unicode_22,
+ MacSymbol_from_unicode_23,
+ c_allzeros,
+ c_allzeros,
+ MacSymbol_from_unicode_26,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ c_allzeros,
+ MacSymbol_from_unicode_f8
+};
+
+struct charmap MacSymbol_from_unicode = { 0, 248, (unsigned char **) MacSymbol_from_unicode_, (unichar_t *) unicode_from_MacSymbol };
+
+const unichar_t unicode_from_ZapfDingbats[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x2701, 0x2702, 0x2703, 0x2704, 0x260e, 0x2706, 0x2707,
+ 0x2708, 0x2709, 0x261b, 0x261e, 0x270c, 0x270d, 0x270e, 0x270f,
+ 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717,
+ 0x2718, 0x2719, 0x271a, 0x271b, 0x271c, 0x271d, 0x271e, 0x271f,
+ 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727,
+ 0x2605, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f,
+ 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737,
+ 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f,
+ 0x2740, 0x2741, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747,
+ 0x2748, 0x2749, 0x274a, 0x274b, 0x25cf, 0x274d, 0x25a0, 0x274f,
+ 0x2750, 0x2751, 0x2752, 0x25b2, 0x25bc, 0x25c6, 0x2756, 0x25d7,
+ 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x0000, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767,
+ 0x2663, 0x2666, 0x2665, 0x2660, 0x2460, 0x2461, 0x2462, 0x2463,
+ 0x2464, 0x2465, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2777,
+ 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e, 0x277f,
+ 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787,
+ 0x2788, 0x2789, 0x278a, 0x278b, 0x278c, 0x278d, 0x278e, 0x278f,
+ 0x2790, 0x2791, 0x2792, 0x2793, 0x2794, 0x2192, 0x2194, 0x2195,
+ 0x2798, 0x2799, 0x279a, 0x279b, 0x279c, 0x279d, 0x279e, 0x279f,
+ 0x27a0, 0x27a1, 0x27a2, 0x27a3, 0x27a4, 0x27a5, 0x27a6, 0x27a7,
+ 0x27a8, 0x27a9, 0x27aa, 0x27ab, 0x27ac, 0x27ad, 0x27ae, 0x27af,
+ 0x0000, 0x27b1, 0x27b2, 0x27b3, 0x27b4, 0x27b5, 0x27b6, 0x27b7,
+ 0x27b8, 0x27b9, 0x27ba, 0x27bb, 0x27bc, 0x27bd, 0x27be, 0x27bf
+};
+
+static const unsigned char ZapfDingbats_from_unicode_21[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xd5, 0x00, 0xd6, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char ZapfDingbats_from_unicode_24[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char ZapfDingbats_from_unicode_25[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char ZapfDingbats_from_unicode_26[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x2b, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xab, 0x00, 0x00, 0xa8, 0x00, 0xaa, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char ZapfDingbats_from_unicode_27[] = {
+ 0x00, 0x21, 0x22, 0x23, 0x24, 0x00, 0x26, 0x27, 0x28, 0x29, 0x00, 0x00, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x00, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x00, 0x6d, 0x00, 0x6f,
+ 0x70, 0x71, 0x72, 0x00, 0x00, 0x00, 0x76, 0x00, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0x00, 0x00, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const unsigned char * const ZapfDingbats_from_unicode_[] = {
+ ZapfDingbats_from_unicode_21,
+ c_allzeros,
+ c_allzeros,
+ ZapfDingbats_from_unicode_24,
+ ZapfDingbats_from_unicode_25,
+ ZapfDingbats_from_unicode_26,
+ ZapfDingbats_from_unicode_27
+};
+
+struct charmap ZapfDingbats_from_unicode = { 33, 39, (unsigned char **) ZapfDingbats_from_unicode_, (unichar_t *) unicode_from_ZapfDingbats };
+
+unichar_t *unicode_from_alphabets[]={
+ (unichar_t *) unicode_from_win, 0,0,
+ (unichar_t *) unicode_from_i8859_1,
+ (unichar_t *) unicode_from_i8859_2,
+ (unichar_t *) unicode_from_i8859_3,
+ (unichar_t *) unicode_from_i8859_4,
+ (unichar_t *) unicode_from_i8859_5,
+ (unichar_t *) unicode_from_i8859_6,
+ (unichar_t *) unicode_from_i8859_7,
+ (unichar_t *) unicode_from_i8859_8,
+ (unichar_t *) unicode_from_i8859_9,
+ (unichar_t *) unicode_from_i8859_10,
+ (unichar_t *) unicode_from_i8859_11,
+ (unichar_t *) unicode_from_i8859_13,
+ (unichar_t *) unicode_from_i8859_14,
+ (unichar_t *) unicode_from_i8859_15,
+ (unichar_t *) unicode_from_koi8_r,
+ (unichar_t *) unicode_from_jis201,
+ (unichar_t *) unicode_from_win,
+ (unichar_t *) unicode_from_mac,
+ (unichar_t *) unicode_from_MacSymbol,
+ (unichar_t *) unicode_from_ZapfDingbats,
+ (unichar_t *) unicode_from_i8859_1, /* Place holder for user-defined map */
+ 0
+};
+
+struct charmap *alphabets_from_unicode[]={ 0,0,0,
+ &i8859_1_from_unicode,
+ &i8859_2_from_unicode,
+ &i8859_3_from_unicode,
+ &i8859_4_from_unicode,
+ &i8859_5_from_unicode,
+ &i8859_6_from_unicode,
+ &i8859_7_from_unicode,
+ &i8859_8_from_unicode,
+ &i8859_9_from_unicode,
+ &i8859_10_from_unicode,
+ &i8859_11_from_unicode,
+ &i8859_13_from_unicode,
+ &i8859_14_from_unicode,
+ &i8859_15_from_unicode,
+ &koi8_r_from_unicode,
+ &jis201_from_unicode,
+ &win_from_unicode,
+ &mac_from_unicode,
+ &MacSymbol_from_unicode,
+ &ZapfDingbats_from_unicode,
+ &i8859_1_from_unicode, /* Place holder for user-defined map*/
+ 0
+};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/asmfpst.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/asmfpst.c
new file mode 100644
index 00000000000..9276f9aeced
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/asmfpst.c
@@ -0,0 +1,1007 @@
+/* Copyright (C) 2003-2007 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h"
+#include "ttf.h"
+
+/* ************************************************************************** */
+/* *************** Routines to test conversion from OpenType **************** */
+/* ************************************************************************** */
+
+int ClassesMatch(int cnt1,char **classes1,int cnt2,char **classes2) {
+ int i;
+
+ if ( cnt1!=cnt2 )
+return( false );
+ for ( i=1; i<cnt2; ++i )
+ if ( strcmp(classes1[i],classes2[i])!=0 )
+return( false );
+
+return( true );
+}
+
+static char **classcopy(char **names,int nextclass) {
+ char **ret;
+ int i;
+
+ if ( nextclass <= 1 )
+return( NULL );
+
+ ret = malloc(nextclass*sizeof(char *));
+ ret[0] = NULL;
+ for ( i=1; i<nextclass; ++i )
+ ret[i] = copy(names[i]);
+return( ret );
+}
+
+FPST *FPSTGlyphToClass(FPST *fpst) {
+ FPST *new;
+ int nextclass=0, i,j,k, max, cnt, ch;
+ char *pt, *end;
+ char **names;
+
+ if ( fpst->format!=pst_glyphs )
+return( NULL );
+
+ new = chunkalloc(sizeof(FPST));
+ new->type = fpst->type;
+ new->format = pst_class;
+ new->subtable = fpst->subtable;
+ new->rule_cnt = fpst->rule_cnt;
+ new->rules = calloc(fpst->rule_cnt,sizeof(struct fpst_rule));
+
+ max = 100; nextclass=1;
+ names = malloc(max*sizeof(char *));
+ names[0] = NULL;
+ for ( i=0; i<fpst->rule_cnt; ++i ) {
+ for ( j=0; j<3; ++j ) {
+ cnt = 0;
+ if ( (&fpst->rules[i].u.glyph.names)[j]!=NULL && *(&fpst->rules[i].u.glyph.names)[j]!='\0' ) {
+ for ( pt=(&fpst->rules[i].u.glyph.names)[j]; *pt; ) {
+ while ( *pt==' ' ) ++pt;
+ if ( *pt=='\0' )
+ break;
+ while ( *pt!=' ' && *pt!='\0' ) ++pt;
+ ++cnt;
+ }
+ }
+ (&new->rules[i].u.class.ncnt)[j] = cnt;
+ if ( cnt!=0 ) {
+ (&new->rules[i].u.class.nclasses)[j] = malloc(cnt*sizeof(uint16));
+ cnt = 0;
+ for ( pt=(&fpst->rules[i].u.glyph.names)[j]; *pt; pt=end ) {
+ while ( *pt==' ' ) ++pt;
+ if ( *pt=='\0' )
+ break;
+ for ( end=pt ; *end!=' ' && *end!='\0'; ++end );
+ ch = *end; *end='\0';
+ for ( k=1; k<nextclass; ++k )
+ if ( strcmp(pt,names[k])==0 )
+ break;
+ if ( k==nextclass ) {
+ if ( nextclass>=max )
+ names = realloc(names,(max+=100)*sizeof(char *));
+ names[nextclass++] = copy(pt);
+ }
+ *end = ch;
+ (&new->rules[i].u.class.nclasses)[j][cnt++] = k;
+ }
+ }
+ }
+ new->rules[i].lookup_cnt = fpst->rules[i].lookup_cnt;
+ new->rules[i].lookups = malloc(fpst->rules[i].lookup_cnt*sizeof(struct seqlookup));
+ memcpy(new->rules[i].lookups,fpst->rules[i].lookups,
+ fpst->rules[i].lookup_cnt*sizeof(struct seqlookup));
+ }
+ new->nccnt = nextclass;
+ new->nclass = names;
+ new->nclassnames = calloc(nextclass,sizeof(char *)); /* Leave as NULL */
+ if ( fpst->type==pst_chainpos || fpst->type==pst_chainsub ) {
+ /* our class set has one "class" for each glyph used anywhere */
+ /* all three class sets are the same */
+ new->bccnt = new->fccnt = nextclass;
+ new->bclass = classcopy(names,nextclass);
+ new->fclass = classcopy(names,nextclass);
+ new->bclassnames = calloc(nextclass,sizeof(char *)); /* Leave as NULL */
+ new->fclassnames = calloc(nextclass,sizeof(char *)); /* Leave as NULL */
+ }
+return( new );
+}
+
+static int ValidSubs(OTLookup *otl ) {
+return( otl->lookup_type == gsub_single );
+}
+
+static void TreeFree(struct contexttree *tree) {
+ int i;
+
+ if ( tree==NULL )
+return;
+
+ for ( i=0; i<tree->branch_cnt; ++i )
+ TreeFree(tree->branches[i].branch);
+
+ free( tree->branches );
+ free( tree->rules );
+ chunkfree( tree,sizeof(*tree) );
+}
+
+static int TreeLabelState(struct contexttree *tree, int snum) {
+ int i;
+
+ if ( tree->branch_cnt==0 && tree->ends_here!=NULL ) {
+ tree->state = 0;
+return( snum );
+ }
+
+ tree->state = snum++;
+ for ( i=0; i<tree->branch_cnt; ++i )
+ snum = TreeLabelState(tree->branches[i].branch,snum);
+ tree->next_state = snum;
+
+return( snum );
+}
+
+static OTLookup *RuleHasSubsHere(struct fpst_rule *rule,int depth) {
+ int i,j;
+
+ if ( depth<rule->u.class.bcnt )
+return( NULL );
+ depth -= rule->u.class.bcnt;
+ if ( depth>=rule->u.class.ncnt )
+return( NULL );
+ for ( i=0; i<rule->lookup_cnt; ++i ) {
+ if ( rule->lookups[i].seq==depth ) {
+ /* It is possible to have two substitutions applied at the same */
+ /* location. I can't deal with that here */
+ for ( j=i+1; j<rule->lookup_cnt; ++j ) {
+ if ( rule->lookups[j].seq==depth )
+return( (OTLookup *) 0xffffffff );
+ }
+return( rule->lookups[i].lookup );
+ }
+ }
+
+return( 0 );
+}
+
+static OTLookup *RulesAllSameSubsAt(struct contexttree *me,int pos) {
+ int i;
+ OTLookup *tag=(OTLookup *) 0x01, *newtag; /* Can't use 0 as an "unused" flag because it is perfectly valid for there to be no substititution. But then all rules must have no subs */
+
+ for ( i=0; i<me->rule_cnt; ++i ) {
+ newtag = RuleHasSubsHere(me->rules[i].rule,pos);
+ if ( tag==(OTLookup *) 0x01 )
+ tag=newtag;
+ else if ( newtag!=tag )
+return( (OTLookup *) 0xffffffff );
+ }
+ if ( tag==(OTLookup *) 0x01 )
+return( NULL ); /* Should never happen */
+
+return( tag );
+}
+
+static int TreeFollowBranches(SplineFont *sf,struct contexttree *me,int pending_pos) {
+ int i, j;
+
+ me->pending_pos = pending_pos;
+ if ( me->ends_here!=NULL ) {
+ /* If any rule ends here then we have to be able to apply all current */
+ /* and pending substitutions */
+ if ( pending_pos!=-1 ) {
+ me->applymarkedsubs = RulesAllSameSubsAt(me,pending_pos);
+ if ( me->applymarkedsubs==(OTLookup *) 0xffffffff )
+return( false );
+ if ( !ValidSubs(me->applymarkedsubs))
+return( false );
+ }
+ me->applycursubs = RulesAllSameSubsAt(me,me->depth);
+ if ( me->applycursubs==(OTLookup *) 0xffffffff )
+return( false );
+ if ( me->applycursubs!=NULL && !ValidSubs(me->applycursubs))
+return( false );
+ for ( i=0; i<me->branch_cnt; ++i ) {
+ if ( !TreeFollowBranches(sf,me->branches[i].branch,-1))
+return( false );
+ }
+ } else {
+ for ( i=0; i<me->branch_cnt; ++i ) {
+ for ( j=0; j<me->rule_cnt; ++j )
+ if ( me->rules[j].branch==me->branches[i].branch &&
+ RuleHasSubsHere(me->rules[j].rule,me->depth)!=NULL )
+ break;
+ if ( j<me->rule_cnt ) {
+ if ( pending_pos==-1 ) {
+ pending_pos = me->pending_pos = me->depth;
+ me->markme = true;
+ } else
+return( false );
+ }
+ if ( !TreeFollowBranches(sf,me->branches[i].branch,pending_pos))
+return( false );
+ }
+ }
+
+return( true );
+}
+
+static struct contexttree *_FPST2Tree(FPST *fpst,struct contexttree *parent,int class) {
+ struct contexttree *me = chunkalloc(sizeof(struct contexttree));
+ int i, rcnt, ccnt, k, thisclass;
+ uint16 *classes;
+
+ if ( fpst!=NULL ) {
+ me->depth = -1;
+ me->rule_cnt = fpst->rule_cnt;
+ me->rules = calloc(me->rule_cnt,sizeof(struct ct_subs));
+ for ( i=0; i<me->rule_cnt; ++i )
+ me->rules[i].rule = &fpst->rules[i];
+ me->parent = NULL;
+ } else {
+ me->depth = parent->depth+1;
+ for ( i=rcnt=0; i<parent->rule_cnt; ++i )
+ if ( parent->rules[i].rule->u.class.allclasses[me->depth] == class )
+ ++rcnt;
+ me->rule_cnt = rcnt;
+ me->rules = calloc(me->rule_cnt,sizeof(struct ct_subs));
+ for ( i=rcnt=0; i<parent->rule_cnt; ++i )
+ if ( parent->rules[i].rule->u.class.allclasses[me->depth] == class )
+ me->rules[rcnt++].rule = parent->rules[i].rule;
+ me->parent = parent;
+ }
+ classes = malloc(me->rule_cnt*sizeof(uint16));
+ for ( i=ccnt=0; i<me->rule_cnt; ++i ) {
+ thisclass = me->rules[i].thisclassnum = me->rules[i].rule->u.class.allclasses[me->depth+1];
+ if ( thisclass==0xffff ) {
+ if ( me->ends_here==NULL )
+ me->ends_here = me->rules[i].rule;
+ } else {
+ for ( k=0; k<ccnt; ++k )
+ if ( classes[k] == thisclass )
+ break;
+ if ( k==ccnt )
+ classes[ccnt++] = thisclass;
+ }
+ }
+ me->branch_cnt = ccnt;
+ me->branches = calloc(ccnt,sizeof(struct ct_branch));
+ for ( i=0; i<ccnt; ++i )
+ me->branches[i].classnum = classes[i];
+ for ( i=0; i<ccnt; ++i ) {
+ me->branches[i].branch = _FPST2Tree(NULL,me,classes[i]);
+ for ( k=0; k<me->rule_cnt; ++k )
+ if ( classes[i]==me->rules[k].thisclassnum )
+ me->rules[k].branch = me->branches[i].branch;
+ }
+ free(classes );
+return( me );
+}
+
+static void FPSTBuildAllClasses(FPST *fpst) {
+ int i, off,j;
+
+ for ( i=0; i<fpst->rule_cnt; ++i ) {
+ fpst->rules[i].u.class.allclasses = malloc((fpst->rules[i].u.class.bcnt+
+ fpst->rules[i].u.class.ncnt+
+ fpst->rules[i].u.class.fcnt+
+ 1)*sizeof(uint16));
+ off = fpst->rules[i].u.class.bcnt;
+ for ( j=0; j<off; ++j )
+ fpst->rules[i].u.class.allclasses[j] = fpst->rules[i].u.class.bclasses[off-1-j];
+ for ( j=0; j<fpst->rules[i].u.class.ncnt; ++j )
+ fpst->rules[i].u.class.allclasses[off+j] = fpst->rules[i].u.class.nclasses[j];
+ off += j;
+ for ( j=0; j<fpst->rules[i].u.class.fcnt; ++j )
+ fpst->rules[i].u.class.allclasses[off+j] = fpst->rules[i].u.class.fclasses[j];
+ fpst->rules[i].u.class.allclasses[off+j] = 0xffff; /* End of rule marker */
+ }
+}
+
+static void FPSTFreeAllClasses(FPST *fpst) {
+ int i;
+
+ for ( i=0; i<fpst->rule_cnt; ++i ) {
+ free( fpst->rules[i].u.class.allclasses );
+ fpst->rules[i].u.class.allclasses = NULL;
+ }
+}
+
+static struct contexttree *FPST2Tree(SplineFont *sf,FPST *fpst) {
+ struct contexttree *ret;
+
+ if ( fpst->format != pst_class )
+return( NULL );
+
+ /* I could check for subclasses rather than ClassesMatch, but then I'd have */
+ /* to make sure that class 0 was used (if at all) consistently */
+ if ( (fpst->bccnt!=0 && !ClassesMatch(fpst->bccnt,fpst->bclass,fpst->nccnt,fpst->nclass)) ||
+ (fpst->fccnt!=0 && !ClassesMatch(fpst->fccnt,fpst->fclass,fpst->nccnt,fpst->nclass)))
+return( NULL );
+
+ FPSTBuildAllClasses(fpst);
+
+ ret = _FPST2Tree(fpst,NULL,0);
+
+ if ( !TreeFollowBranches(sf,ret,-1) ) {
+ TreeFree(ret);
+ ret = NULL;
+ }
+
+ FPSTFreeAllClasses(fpst);
+
+ if ( ret!=NULL )
+ TreeLabelState(ret,1); /* actually, it's states 0&1, but this will do */
+
+return( ret );
+}
+
+static struct contexttree *TreeNext(struct contexttree *cur) {
+ struct contexttree *p;
+ int i;
+
+ if ( cur->branch_cnt!=0 )
+return( cur->branches[0].branch );
+ else {
+ for (;;) {
+ p = cur->parent;
+ if ( p==NULL )
+return( NULL );
+ for ( i=0; i<p->branch_cnt; ++i ) {
+ if ( p->branches[i].branch==cur ) {
+ ++i;
+ break;
+ }
+ }
+ if ( i<p->branch_cnt )
+return( p->branches[i].branch );
+ cur = p;
+ }
+ }
+}
+
+int FPSTisMacable(SplineFont *sf, FPST *fpst) {
+ int i;
+ int featureType, featureSetting;
+ struct contexttree *ret;
+ FeatureScriptLangList *fl;
+
+ if ( fpst->type!=pst_contextsub && fpst->type!=pst_chainsub )
+return( false );
+ for ( fl = fpst->subtable->lookup->features; fl!=NULL; fl=fl->next ) {
+ if ( OTTagToMacFeature(fl->featuretag,&featureType,&featureSetting) &&
+ scriptsHaveDefault(fl->scripts) )
+ break;
+ }
+ if ( fl==NULL )
+return( false );
+
+ if ( fpst->format == pst_glyphs ) {
+ FPST *tempfpst = FPSTGlyphToClass(fpst);
+ ret = FPST2Tree(sf, tempfpst);
+ FPSTFree(tempfpst);
+ TreeFree(ret);
+return( ret!=NULL );
+ } else if ( fpst->format == pst_class ) {
+ ret = FPST2Tree(sf, fpst);
+ TreeFree(ret);
+return( ret!=NULL );
+ } else if ( fpst->format != pst_coverage )
+return( false );
+
+ for ( i=0; i<fpst->rule_cnt; ++i ) {
+ if ( fpst->rules[i].u.coverage.ncnt+
+ fpst->rules[i].u.coverage.bcnt+
+ fpst->rules[i].u.coverage.fcnt>=10 )
+return( false ); /* Let's not make a state machine this complicated */
+
+ if ( fpst->rules[i].lookup_cnt==2 ) {
+ switch ( fpst->format ) {
+ case pst_coverage:
+ /* Second substitution must be on the final glyph */
+ if ( fpst->rules[i].u.coverage.fcnt!=0 ||
+ fpst->rules[i].lookups[0].seq==fpst->rules[i].lookups[1].seq ||
+ (fpst->rules[i].lookups[0].seq!=fpst->rules[i].u.coverage.ncnt-1 &&
+ fpst->rules[i].lookups[1].seq!=fpst->rules[i].u.coverage.ncnt-1) )
+return( false );
+ break;
+ default:
+return( false );
+ }
+ if ( !ValidSubs(fpst->rules[i].lookups[1].lookup) )
+return( false );
+
+ } else if ( fpst->rules[i].lookup_cnt!=1 )
+return( false );
+ if ( !ValidSubs(fpst->rules[i].lookups[0].lookup) )
+return( false );
+ }
+
+return( fpst->rule_cnt>0 );
+}
+
+/* ************************************************************************** */
+/* *************** Conversion from OpenType Context/Chaining **************** */
+/* ************************************************************************** */
+
+ /* ********************** From Forms ********************** */
+static int IsMarkChar( SplineChar *sc ) {
+ AnchorPoint *ap;
+
+ ap=sc->anchor;
+ while ( ap!=NULL && (ap->type==at_centry || ap->type==at_cexit) )
+ ap = ap->next;
+ if ( ap!=NULL && (ap->type==at_mark || ap->type==at_basemark) )
+return( true );
+
+return( false );
+}
+
+static char *GlyphListToNames(SplineChar **classglyphs) {
+ int i, len;
+ char *ret, *pt;
+
+ for ( i=len=0; classglyphs[i]!=NULL; ++i )
+ len += strlen(classglyphs[i]->name)+1;
+ ret = pt = malloc(len+1);
+ for ( i=0; classglyphs[i]!=NULL; ++i ) {
+ strcpy(pt,classglyphs[i]->name);
+ pt += strlen(pt);
+ *pt++ = ' ';
+ }
+ if ( pt>ret )
+ pt[-1] = '\0';
+ else
+ *ret = '\0';
+return( ret );
+}
+
+static char *BuildMarkClass(SplineFont *sf) {
+ SplineChar *sc, **markglyphs;
+ int i, mg;
+ char *ret;
+
+ mg = 0;
+ markglyphs = malloc(sf->glyphcnt*sizeof(SplineChar *));
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( (sc=sf->glyphs[i])!=NULL ) {
+ if ( IsMarkChar(sc)) {
+ markglyphs[mg++] = sc;
+ }
+ }
+ markglyphs[mg] = NULL;
+ ret = GlyphListToNames(markglyphs);
+ free(markglyphs);
+return(ret);
+}
+
+static char *BuildClassNames(SplineChar **glyphs,uint16 *map, int classnum) {
+ int i, len;
+ char *ret, *pt;
+
+ for ( i=len=0; glyphs[i]!=NULL; ++i ) {
+ if ( map[i]==classnum )
+ len += strlen(glyphs[i]->name)+1;
+ }
+ ret = pt = malloc(len+1);
+ for ( i=len=0; glyphs[i]!=NULL; ++i ) {
+ if ( map[i]==classnum ) {
+ strcpy(pt,glyphs[i]->name);
+ pt += strlen(pt);
+ *pt++ = ' ';
+ }
+ }
+ if ( pt>ret )
+ pt[-1] = '\0';
+ else
+ *ret = '\0';
+return( ret );
+}
+
+static int FindFormLookupsForScript(SplineFont *sf,uint32 script,OTLookup *lookups[4]) {
+ OTLookup *otl;
+ FeatureScriptLangList *fl;
+ struct scriptlanglist *sl;
+ int which;
+
+ memset(lookups,0,4*sizeof(OTLookup *));
+ for ( otl=sf->gsub_lookups; otl!=NULL; otl=otl->next ) if ( !otl->unused && otl->lookup_type == gsub_single ) {
+ for ( fl=otl->features; fl!=NULL; fl=fl->next ) {
+ if ( fl->featuretag== CHR('i','n','i','t') ) which = 0;
+ else if ( fl->featuretag== CHR('m','e','d','i') ) which = 1;
+ else if ( fl->featuretag== CHR('f','i','n','a') ) which = 2;
+ else if ( fl->featuretag== CHR('i','s','o','l') ) which = 3;
+ else
+ continue;
+ if ( lookups[which]!=NULL )
+ continue;
+ for ( sl=fl->scripts; sl!=NULL && sl->script!=script; sl=sl->next );
+ if ( sl==NULL )
+ continue;
+ lookups[which] = otl;
+ break;
+ }
+ }
+ if ( lookups[0]!=NULL || lookups[1]!=NULL || lookups[2]!=NULL || lookups[3]!=NULL )
+return( true );
+
+return( false );
+}
+
+ASM *ASMFromOpenTypeForms(SplineFont *sf,uint32 script) {
+ int i, which, cg, mg;
+ SplineChar *sc, *rsc, **classglyphs, **markglyphs;
+ PST *pst;
+ OTLookup *lookups[4];
+ ASM *sm;
+ int flags;
+
+ if ( !FindFormLookupsForScript(sf,script,lookups))
+return( NULL );
+ flags = (lookups[0]!=NULL ? lookups[0]->lookup_flags
+ :lookups[1]!=NULL ? lookups[1]->lookup_flags
+ :lookups[2]!=NULL ? lookups[2]->lookup_flags
+ : lookups[3]->lookup_flags);
+ classglyphs = calloc((sf->glyphcnt+1),sizeof(SplineChar *));
+ markglyphs = malloc((sf->glyphcnt+1)*sizeof(SplineChar *));
+
+ mg = 0;
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( (sc=sf->glyphs[i])!=NULL ) {
+ if ( (flags&pst_ignorecombiningmarks) && IsMarkChar(sc)) {
+ markglyphs[mg++] = sc;
+ } else if ( SCScriptFromUnicode(sc)==script ) {
+ classglyphs[sc->orig_pos] = sc;
+ for ( pst = sc->possub; pst!=NULL; pst=pst->next ) if ( pst->subtable!=NULL ) {
+ OTLookup *otl = pst->subtable->lookup;
+ for ( which=3; which>=0; --which ) {
+ if ( otl==lookups[which])
+ break;
+ }
+ if ( which==-1 )
+ continue;
+ rsc = SFGetChar(sf,-1,pst->u.subs.variant);
+ if ( rsc!=NULL )
+ classglyphs[rsc->orig_pos] = rsc;
+ }
+ }
+ }
+ markglyphs[mg] = NULL;
+
+ cg = 0;
+ for ( i=0; i<sf->glyphcnt; ++i )
+ if ( classglyphs[i]!=NULL )
+ classglyphs[cg++] = classglyphs[i];
+ classglyphs[cg] = NULL;
+
+ sm = chunkalloc(sizeof(ASM));
+ sm->type = asm_context;
+ sm->flags = (flags&pst_r2l) ? asm_descending : 0;
+ /* This is a temporary value. It should be replaced if we will retain */
+ /* this state machine */
+ sm->subtable = (lookups[3]!=NULL ? lookups[3] : lookups[0]!=NULL ? lookups[0] : lookups[1]!=NULL ? lookups[1] : lookups[2])->subtables;
+ /* Only one (or two) classes of any importance: Letter in this script */
+ /* might already be formed. Might be a lig. Might be normal */
+ /* Oh, if ignoremarks is true, then combining marks merit a class of their own */
+ sm->class_cnt = (flags&pst_ignorecombiningmarks) ? 6 : 5;
+ sm->classes = calloc(sm->class_cnt,sizeof(char *));
+
+ sm->classes[4] = GlyphListToNames(classglyphs);
+ if ( flags&pst_ignorecombiningmarks )
+ sm->classes[5] = GlyphListToNames(markglyphs);
+ free(classglyphs); free(markglyphs);
+
+
+ /* State 0,1 are start states */
+ /* State 2 means we have found one interesting letter, transformed current to 'init' and marked it (in case we need to make it isolated) */
+ /* State 3 means we have found two interesting letters, transformed current to 'medi' and marked (in case we need to make it final) */
+ sm->state_cnt = 4;
+ sm->state = calloc(sm->state_cnt*sm->class_cnt,sizeof(struct asm_state));
+
+ /* State 0,1 (start), Class 4 (char in script) takes us to state 2 */
+ sm->state[4].next_state = 2;
+ sm->state[4].flags = 0x8000;
+
+ sm->state[sm->class_cnt+4] = sm->state[4];
+
+ for ( i=0; i<4; ++i ) {
+ sm->state[2*sm->class_cnt+i].next_state = 0;
+ sm->state[2*sm->class_cnt+i].u.context.mark_lookup = lookups[3];/* Isolated */
+ }
+
+ sm->state[2*sm->class_cnt+4].next_state = 3;
+ sm->state[2*sm->class_cnt+4].flags = 0x8000;
+ sm->state[2*sm->class_cnt+4].u.context.mark_lookup = lookups[0]; /* Initial */
+
+ for ( i=0; i<4; ++i ) {
+ sm->state[3*sm->class_cnt+i].next_state = 0;
+ sm->state[3*sm->class_cnt+i].u.context.mark_lookup = lookups[2];/* Final */
+ }
+
+ sm->state[3*sm->class_cnt+4].next_state = 3;
+ sm->state[3*sm->class_cnt+4].flags = 0x8000;
+ sm->state[3*sm->class_cnt+4].u.context.mark_lookup = lookups[1]; /* Medial */
+
+ /* Deleted glyph retains same state, just eats the glyph */
+ for ( i=0; i<sm->state_cnt; ++i ) {
+ int pos = i*sm->class_cnt+2, mpos = i*sm->class_cnt+5;
+ sm->state[pos].next_state = i;
+ sm->state[pos].flags = 0;
+ sm->state[pos].u.context.cur_lookup = NULL;
+ sm->state[pos].u.context.mark_lookup = NULL;
+ /* same for ignored marks */
+ if ( flags&pst_ignorecombiningmarks )
+ sm->state[mpos].next_state = i;
+ }
+
+return( sm );
+}
+
+ /* ********************** From Coverage FPST ********************** */
+static SplineChar **morx_cg_FigureClasses(SplineChar ***tables,int match_len,
+ int ***classes, int *cc, uint16 **mp, int *gc,
+ FPST *fpst,SplineFont *sf,int ordered) {
+ int i,j,k, mask, max, class_cnt, gcnt, gtot;
+ SplineChar ***temp, *sc, **glyphs, **gall;
+ uint16 *map;
+ int *nc;
+ int *next;
+ /* For each glyph used, figure out what coverage tables it gets used in */
+ /* then all the glyphs which get used in the same set of coverage tables */
+ /* can form one class */
+
+ if ( match_len>10 ) /* would need too much space to figure out */
+return( NULL );
+
+ gtot = 0;
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ sf->glyphs[i]->lsidebearing = 1;
+ if ( !ordered )
+ sf->glyphs[i]->ttf_glyph = gtot++;
+ else if ( sf->glyphs[i]->ttf_glyph+1>gtot )
+ gtot = sf->glyphs[i]->ttf_glyph+1;
+ }
+
+ max=0;
+ for ( i=0; i<match_len; ++i ) {
+ for ( k=0; tables[i][k]!=NULL; ++k );
+ if ( k>max ) max=k;
+ }
+ next = calloc(1<<match_len,sizeof(int));
+ temp = malloc((1<<match_len)*sizeof(SplineChar **));
+
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ sf->glyphs[i]->lsidebearing = 0;
+ sf->glyphs[i]->ticked = false;
+ }
+ for ( i=0; i<match_len; ++i ) {
+ for ( j=0; tables[i][j]!=NULL ; ++j )
+ tables[i][j]->lsidebearing |= 1<<i;
+ }
+
+ for ( i=0; i<match_len; ++i ) {
+ for ( j=0; (sc=tables[i][j])!=NULL ; ++j ) if ( !sc->ticked ) {
+ mask = sc->lsidebearing;
+ if ( next[mask]==0 )
+ temp[mask] = malloc(max*sizeof(SplineChar *));
+ temp[mask][next[mask]++] = sc;
+ sc->ticked = true;
+ }
+ }
+
+ gall = calloc(gtot+1,sizeof(SplineChar *));
+ class_cnt = gcnt = 0;
+ for ( i=0; i<(1<<match_len); ++i ) {
+ if ( next[i]!=0 ) {
+ for ( k=0; k<next[i]; ++k ) {
+ gall[temp[i][k]->ttf_glyph] = temp[i][k];
+ temp[i][k]->lsidebearing = class_cnt;
+ }
+ ++class_cnt;
+ gcnt += next[i];
+ free(temp[i]);
+ }
+ }
+ if ( fpst->subtable->lookup->lookup_flags & pst_ignorecombiningmarks ) {
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL && sf->glyphs[i]->ttf_glyph!=-1 ) {
+ if ( sf->glyphs[i]->lsidebearing==0 && IsMarkChar(sf->glyphs[i])) {
+ sf->glyphs[i]->lsidebearing = class_cnt;
+ ++gcnt;
+ }
+ }
+ ++class_cnt; /* Add a class for the marks so we can ignore them */
+ }
+ *cc = class_cnt+4;
+ glyphs = malloc((gcnt+1)*sizeof(SplineChar *));
+ map = malloc((gcnt+1)*sizeof(uint16));
+ gcnt = 0;
+ for ( i=0; i<gtot; ++i ) if ( gall[i]!=NULL ) {
+ glyphs[gcnt] = gall[i];
+ map[gcnt++] = gall[i]->lsidebearing+4; /* there are 4 standard classes, so our first class starts at 4 */
+ }
+ glyphs[gcnt] = NULL;
+ free(gall);
+ free(temp);
+ *gc = gcnt;
+ *mp = map;
+
+ nc = calloc(match_len,sizeof(int));
+ *classes = malloc((match_len+1)*sizeof(int *));
+ for ( i=0; i<match_len; ++i )
+ (*classes)[i] = malloc((class_cnt+1)*sizeof(int));
+ (*classes)[i] = NULL;
+
+ class_cnt = 0;
+ for ( i=0; i<(1<<match_len); ++i ) {
+ if ( next[i]!=0 ) {
+ for ( j=0; j<match_len; ++j ) if ( i&(1<<j)) {
+ (*classes)[j][nc[j]++] = class_cnt+4; /* there are 4 standard classes, so our first class starts at 4 */
+ }
+ ++class_cnt;
+ }
+ }
+ for ( j=0; j<match_len; ++j )
+ (*classes)[j][nc[j]] = 0xffff; /* End marker */
+
+ free(next);
+ free(nc);
+return( glyphs );
+}
+
+static ASM *ASMFromCoverageFPST(SplineFont *sf,FPST *fpst,int ordered) {
+ SplineChar ***tables, **glyphs;
+ int **classes, class_cnt, gcnt;
+ int i, j, k, match_len;
+ struct fpst_rule *r = &fpst->rules[0];
+ int subspos = r->u.coverage.bcnt+r->lookups[0].seq;
+ OTLookup *substag = r->lookups[0].lookup, *finaltag=NULL;
+ uint16 *map;
+ ASM *sm;
+
+ /* In one very specific case we can support two substitutions */
+ if ( r->lookup_cnt==2 ) {
+ if ( r->lookups[0].seq==r->u.coverage.ncnt-1 ) {
+ finaltag = substag;
+ subspos = r->u.coverage.bcnt+r->lookups[1].seq;
+ substag = r->lookups[1].lookup;
+ } else
+ finaltag = r->lookups[1].lookup;
+ }
+
+ tables = malloc((r->u.coverage.ncnt+r->u.coverage.bcnt+r->u.coverage.fcnt+1)*sizeof(SplineChar **));
+ for ( j=0, i=r->u.coverage.bcnt-1; i>=0; --i, ++j )
+ tables[j] = SFGlyphsFromNames(sf,r->u.coverage.bcovers[i]);
+ for ( i=0; i<r->u.coverage.ncnt; ++i, ++j )
+ tables[j] = SFGlyphsFromNames(sf,r->u.coverage.ncovers[i]);
+ for ( i=0; i<r->u.coverage.fcnt; ++i, ++j )
+ tables[j] = SFGlyphsFromNames(sf,r->u.coverage.fcovers[i]);
+ tables[j] = NULL;
+ match_len = j;
+
+ for ( i=0; i<match_len; ++i )
+ if ( tables[i]==NULL || tables[i][0]==NULL )
+return( NULL );
+
+ glyphs = morx_cg_FigureClasses(tables,match_len,
+ &classes,&class_cnt,&map,&gcnt,fpst,sf,ordered);
+ if ( glyphs==NULL )
+return( NULL );
+
+ for ( i=0; i<match_len; ++i )
+ free(tables[i]);
+ free(tables);
+
+ sm = chunkalloc(sizeof(ASM));
+ sm->type = asm_context;
+ sm->flags = (fpst->subtable->lookup->lookup_flags&pst_r2l) ? asm_descending : 0;
+ sm->class_cnt = class_cnt;
+ sm->classes = malloc(class_cnt*sizeof(char *));
+ sm->classes[0] = sm->classes[1] = sm->classes[2] = sm->classes[3] = NULL;
+ for ( i=4; i<class_cnt; ++i )
+ sm->classes[i] = BuildClassNames(glyphs,map,i);
+ free(glyphs); free(map);
+
+ /* Now build the state machine */
+ /* we have match_len+1 states (there are 2 initial states) */
+ /* we transition from the initial state to our first state when we get */
+ /* any class which makes up the first coverage table. From the first */
+ /* to the second on any class which makes up the second ... */
+ sm->state_cnt = match_len+1;
+ sm->state = calloc(sm->state_cnt*sm->class_cnt,sizeof(struct asm_state));
+ for ( j=0; j<match_len; ++j ) {
+ int off = (j+1)*sm->class_cnt;
+ for ( i=0; i<class_cnt; ++i ) {
+ for ( k=0; classes[j][k]!=0xffff && classes[j][k]!=i; ++k );
+ if ( classes[j][k]==i ) {
+ sm->state[off+i].next_state = j+2;
+ if ( j==match_len-1 ) {
+ sm->state[off+i].next_state = 0;
+ sm->state[off+i].flags = 0x4000;
+ if ( subspos==j )
+ sm->state[off+i].u.context.cur_lookup = substag;
+ else {
+ sm->state[off+i].u.context.mark_lookup = substag;
+ sm->state[off+i].u.context.cur_lookup = finaltag;
+ }
+ } else if ( subspos==j )
+ sm->state[off+i].flags = 0x8000;
+ } else if ( i==2 || ((fpst->subtable->lookup->lookup_flags&pst_ignorecombiningmarks) && i==class_cnt-1 ) )
+ sm->state[off+i].next_state = j+1; /* Deleted glyph is a noop */
+ else if ( j!=0 )
+ sm->state[off+i].flags = 0x4000; /* Don't eat the current glyph, go back to state 0 and see if it will start the sequence over again */
+ }
+ }
+ /* Class 0 and class 1 should be the same. We only filled in class 1 above*/
+ memcpy(sm->state,sm->state+sm->class_cnt,sm->class_cnt*sizeof(struct asm_state));
+ for ( j=0; j<match_len; ++j )
+ free(classes[j]);
+ free(classes);
+return( sm );
+}
+
+ /* ********************** From Class FPST ********************** */
+static void SMSetState(struct asm_state *trans,struct contexttree *cur,int class) {
+ int i;
+
+ for ( i=0; i<cur->branch_cnt; ++i ) {
+ if ( cur->branches[i].classnum==class ) {
+ trans->next_state = cur->branches[i].branch->state;
+ /* If we go back to state 0, it means we want to start from */
+ /* the begining again, and we should check against the */
+ /* current glyph (which failed for us, but might be useful */
+ /* to start a new operation). Even if we did not fail we */
+ /* should still do this (so don't advance the glyph) */
+ trans->flags = cur->branches[i].branch->state!=0
+ ? cur->branches[i].branch->markme?0x8000:0x0000
+ : cur->branches[i].branch->markme?0xc000:0x4000;
+ trans->u.context.mark_lookup = cur->branches[i].branch->applymarkedsubs;
+ trans->u.context.cur_lookup = cur->branches[i].branch->applycursubs;
+return;
+ }
+ }
+
+ if ( cur->ends_here!=NULL ) {
+ trans->next_state = 0;
+ trans->flags = 0x4000;
+ trans->u.context.mark_lookup = cur->applymarkedsubs;
+ trans->u.context.cur_lookup = cur->applycursubs;
+ } else
+ trans->next_state = 0;
+}
+
+static struct asm_state *AnyActiveSubstrings(struct contexttree *tree,
+ struct contexttree *cur,int class, struct asm_state *trans, int classcnt) {
+ struct fpc *any = &cur->rules[0].rule->u.class;
+ int i,rc,j, b;
+
+ for ( i=1; i<=cur->depth; ++i ) {
+ for ( rc=0; rc<tree->rule_cnt; ++rc ) {
+ struct fpc *r = &tree->rules[rc].rule->u.class;
+ int ok = true;
+ for ( j=0; j<=cur->depth-i; ++j ) {
+ if ( any->allclasses[j+i]!=r->allclasses[j] ) {
+ ok = false;
+ break;
+ }
+ }
+ if ( ok && r->allclasses[j]==class ) {
+ struct contexttree *sub = tree;
+ for ( j=0; j<=cur->depth-i; ++j ) {
+ for ( b=0; b<sub->branch_cnt; ++b ) {
+ if ( sub->branches[b].classnum==r->allclasses[j] ) {
+ sub = sub->branches[b].branch;
+ break;
+ }
+ }
+ }
+ if ( trans[sub->state*classcnt+class+3].next_state!=0 &&
+ (sub->pending_pos+i == cur->pending_pos ||
+ sub->pending_pos == -1 ))
+return( &trans[sub->state*classcnt+class+3] );
+ }
+ }
+ }
+return( NULL );
+}
+
+static int FailureTrans( struct asm_state *trans ) {
+return( trans->next_state==0 &&
+ trans->u.context.mark_lookup==NULL &&
+ trans->u.context.cur_lookup==NULL );
+}
+
+static ASM *ASMFromClassFPST(SplineFont *sf,FPST *fpst, struct contexttree *tree) {
+ ASM *sm;
+ struct contexttree *cur;
+ int i;
+
+ sm = chunkalloc(sizeof(ASM));
+ sm->type = asm_context;
+ sm->flags = (fpst->subtable->lookup->lookup_flags&pst_r2l) ? asm_descending : 0;
+ /* mac class sets have four magic classes, opentype sets only have one */
+ sm->class_cnt = (fpst->subtable->lookup->lookup_flags&pst_ignorecombiningmarks) ? fpst->nccnt+4 : fpst->nccnt+3;
+ sm->classes = malloc(sm->class_cnt*sizeof(char *));
+ sm->classes[0] = sm->classes[1] = sm->classes[2] = sm->classes[3] = NULL;
+ for ( i=1; i<fpst->nccnt; ++i )
+ sm->classes[i+3] = copy(fpst->nclass[i]);
+ if ( fpst->subtable->lookup->lookup_flags&pst_ignorecombiningmarks )
+ sm->classes[sm->class_cnt-1] = BuildMarkClass(sf);
+
+ /* Now build the state machine */
+ sm->state_cnt = tree->next_state;
+ sm->state = calloc(sm->state_cnt*sm->class_cnt,sizeof(struct asm_state));
+ for ( cur=tree; cur!=NULL; cur = TreeNext(cur)) if ( cur->state!=0 ) {
+ int off = cur->state*sm->class_cnt;
+
+ SMSetState(&sm->state[off+1],cur,0); /* Out of bounds state */
+ sm->state[off+2].next_state = cur->state; /* Deleted glyph gets eaten and ignored */
+ if ( fpst->subtable->lookup->lookup_flags&pst_ignorecombiningmarks )
+ sm->state[off+sm->class_cnt-1].next_state = cur->state; /* As do ignored marks */
+ for ( i=1; i<fpst->nccnt; ++i )
+ SMSetState(&sm->state[off+i+3],cur,i);
+ }
+ /* Class 0 and class 1 should be the same. We only filled in class 1 above*/
+ memcpy(sm->state,sm->state+sm->class_cnt,sm->class_cnt*sizeof(struct asm_state));
+ /* Do a sort of transitive closure on states, so if we are looking for */
+ /* either "abcd" or "bce", don't lose the "bce" inside "abce" */
+ FPSTBuildAllClasses(fpst);
+ for ( cur = tree; cur!=NULL; cur = TreeNext(cur)) if ( cur->state>1 ) {
+ int off = cur->state*sm->class_cnt;
+ for ( i=1; i<fpst->nccnt; ++i ) if ( FailureTrans(&sm->state[off+3+i]) ) {
+ struct asm_state *trans =
+ AnyActiveSubstrings(tree,cur,i, sm->state,sm->class_cnt);
+ if ( trans!=NULL )
+ sm->state[off+3+i] = *trans;
+ }
+ }
+ FPSTFreeAllClasses(fpst);
+return( sm );
+}
+
+ASM *ASMFromFPST(SplineFont *sf,FPST *fpst,int ordered) {
+ FPST *tempfpst=fpst;
+ struct contexttree *tree=NULL;
+ ASM *sm;
+
+ if ( fpst->format==pst_glyphs )
+ tempfpst = FPSTGlyphToClass( fpst );
+ if ( tempfpst->format==pst_coverage )
+ sm = ASMFromCoverageFPST(sf,fpst,ordered);
+ else {
+ tree = FPST2Tree(sf, tempfpst);
+ if ( tree!=NULL ) {
+ sm = ASMFromClassFPST(sf,tempfpst,tree);
+ TreeFree(tree);
+ } else
+ sm = NULL;
+ }
+
+ if ( tempfpst!=fpst )
+ FPSTFree(tempfpst);
+ /* This is a temporary value. It should be replaced if we plan to */
+ /* retain this state machine */
+ if ( sm!=NULL )
+ sm->subtable = fpst->subtable;
+return( sm );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/autohint.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/autohint.c
new file mode 100644
index 00000000000..034978b9193
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/autohint.c
@@ -0,0 +1,2708 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include <math.h>
+#include "stemdb.h"
+#include <utype.h>
+#include <chardata.h>
+#include "edgelist.h"
+
+float OpenTypeLoadHintEqualityTolerance = 0.0;
+
+/* to create a type 1 font we must come up with the following entries for the
+ private dictionary:
+ BlueValues -- an array of 2n entries where Blue[2i]<Blue[2i+1] max n=7, Blue[i]>0
+ OtherBlues -- (optional) OtherBlue[i]<0
+ (blue zones should be at least 3 units appart)
+ StdHW -- (o) array with one entry, standard hstem height
+ StdVW -- (o) ditto vstem width
+ StemSnapH -- (o) up to 12 numbers containing various hstem heights (includes StdHW), small widths first
+ StemSnapV -- (o) ditto, vstem
+This file has routines to figure out at least some of these
+
+Also other routines to guess at good per-character hints
+*/
+
+static void AddBlue(real val, real array[5], int force) {
+ val = rint(val);
+ if ( !force && (val<array[0]-array[1] || val >array[0]+array[1] ))
+return; /* Outside of one sd */
+ if ( array[3]==0 && array[4]==0 )
+ array[3] = array[4] = val;
+ else if ( val>array[4] )
+ array[4] = val;
+ else if ( val<array[3] )
+ array[3] = val;
+}
+
+static void MergeZones(real zone1[5], real zone2[5]) {
+ if ( zone1[2]!=0 && zone2[2]!=0 &&
+ ((zone1[4]+3>zone2[3] && zone1[3]<=zone2[3]) ||
+ (zone2[4]+3>zone1[3] && zone2[3]<=zone1[3]) )) {
+ if (( zone2[0]<zone1[0]-zone1[1] || zone2[0] >zone1[0]+zone1[1] ) &&
+ ( zone1[0]<zone2[0]-zone2[1] || zone1[0] >zone2[0]+zone2[1] ))
+ /* the means of the zones are too far appart, don't merge em */;
+ else {
+ if ( zone1[0]<zone2[0] ) zone2[0] = zone1[0];
+ if ( zone1[1]>zone2[1] ) zone2[1] = zone1[1];
+ }
+ zone1[2] = 0;
+ }
+}
+
+/* I can deal with latin, greek and cyrillic because the they all come from */
+/* the same set of letter shapes and have all evolved together and have */
+/* various common features (ascenders, descenders, lower case, etc.). Other */
+/* scripts don't fit */
+void FindBlues( SplineFont *sf, int layer, real blues[14], real otherblues[10]) {
+ real caph[5], xh[5], ascenth[5], digith[5], descenth[5], base[5];
+ real otherdigits[5];
+ int i, j, k;
+ DBounds b;
+
+ /* Go through once to get some idea of the average value so we can weed */
+ /* out undesirables */
+ caph[0] = caph[1] = caph[2] = xh[0] = xh[1] = xh[2] = 0;
+ ascenth[0] = ascenth[1] = ascenth[2] = digith[0] = digith[1] = digith[2] = 0;
+ descenth[0] = descenth[1] = descenth[2] = base[0] = base[1] = base[2] = 0;
+ otherdigits[0] = otherdigits[1] = otherdigits[2] = 0;
+ for ( i=0; i<sf->glyphcnt; ++i ) {
+ if ( sf->glyphs[i]!=NULL && sf->glyphs[i]->layers[layer].splines!=NULL ) {
+ int enc = sf->glyphs[i]->unicodeenc;
+ const unichar_t *upt;
+ if ( enc<0x10000 && isalnum(enc) &&
+ ((enc>=32 && enc<128 ) || enc == 0xfe || enc==0xf0 || enc==0xdf ||
+ enc==0x131 ||
+ (enc>=0x391 && enc<=0x3f3 ) ||
+ (enc>=0x400 && enc<=0x4e9 ) )) {
+ /* no accented characters (or ligatures) */
+ if ( unicode_alternates[enc>>8]!=NULL &&
+ (upt =unicode_alternates[enc>>8][enc&0xff])!=NULL &&
+ upt[1]!='\0' )
+ continue;
+ SplineCharFindBounds(sf->glyphs[i],&b);
+ if ( b.miny==0 && b.maxy==0 )
+ continue;
+ if ( enc=='g' || enc=='j' || enc=='p' || enc=='q' || enc=='y' ||
+ enc==0xfe ||
+ enc==0x3c1 /* rho */ ||
+ enc==0x3c6 /* phi */ ||
+ enc==0x3c7 /* chi */ ||
+ enc==0x3c8 /* psi */ ||
+ enc==0x440 /* cyr er */ ||
+ enc==0x443 /* cyr u */ ||
+ enc==0x444 /* cyr ef */) {
+ descenth[0] += b.miny;
+ descenth[1] += b.miny*b.miny;
+ ++descenth[2];
+ } else if ( enc=='x' || enc=='r' || enc=='o' || enc=='e' ||
+ enc=='s' || enc=='c' || enc=='h' || enc=='k' ||
+ enc=='l' || enc=='m' || enc=='n' ||
+ enc==0x3b5 /* epsilon */ ||
+ enc==0x3b9 /* iota */ ||
+ enc==0x3ba /* kappa */ ||
+ enc==0x3bf /* omicron */ ||
+ enc==0x3c3 /* sigma */ ||
+ enc==0x3c5 /* upsilon */ ||
+ enc==0x430 /* cyr a */ ||
+ enc==0x432 /* cyr ve */ ||
+ enc==0x433 /* cyr ge */ ||
+ enc==0x435 /* cyr e */ ||
+ enc==0x436 /* cyr zhe */ ||
+ enc==0x438 /* cyr i */ ||
+ enc==0x43a /* cyr ka */ ||
+ enc==0x43d /* cyr en */ ||
+ enc==0x43e /* cyr o */ ||
+ enc==0x441 /* cyr es */ ||
+ enc==0x445 /* cyr ha */ ||
+ enc==0x447 /* cyr che */ ||
+ enc==0x448 /* cyr sha */ ||
+ enc==0x44f /* cyr ya */ ){
+ base[0] += b.miny;
+ base[1] += b.miny*b.miny;
+ ++base[2];
+ }
+ /* careful of lowercase digits, 6 and 8 should be ascenders */
+ if ( enc=='6' || enc=='8' ) {
+ digith[0] += b.maxy;
+ digith[1] += b.maxy*b.maxy;
+ ++digith[2];
+ } else if ( enc<0x10000 && isdigit(enc) ) {
+ otherdigits[0] += b.maxy;
+ otherdigits[1] += b.maxy*b.maxy;
+ ++otherdigits[2];
+ } else if ( enc<0x10000 && isupper(enc) && enc!=0x462 && enc!=0x490 ) {
+ caph[0] += b.maxy;
+ caph[1] += b.maxy*b.maxy;
+ ++caph[2];
+ } else if ( enc=='b' || enc=='d' || enc=='f' || enc=='h' || enc=='k' ||
+ enc == 'l' || enc==0xf0 || enc==0xfe || enc == 0xdf ||
+ enc == 0x3b2 || enc==0x3b6 || enc==0x3b8 || enc==0x3bb ||
+ enc == 0x3be ||
+ enc == 0x431 /* cyr be */ /* || enc == 0x444 - ef may have varible height */) {
+ ascenth[0] += b.maxy;
+ ascenth[1] += b.maxy*b.maxy;
+ ++ascenth[2];
+ } else if ( enc=='c' || enc=='e' || enc=='o' || enc=='s' || enc=='u' ||
+ enc=='v' || enc=='w' || enc=='x' || enc=='y' || enc=='z' ||
+ enc==0x3b5 /* epsilon */ ||
+ enc==0x3b9 /* iota */ ||
+ enc==0x3ba /* kappa */ ||
+ enc==0x3bc /* mu */ ||
+ enc==0x3bd /* nu */ ||
+ enc==0x3bf /* omicron */ ||
+ enc==0x3c0 /* pi */ ||
+ enc==0x3c1 /* rho */ ||
+ enc==0x3c5 /* upsilon */ ||
+ enc==0x433 /* cyr ge */ ||
+ enc==0x435 /* cyr e */ ||
+ enc==0x436 /* cyr zhe */ ||
+ enc==0x438 /* cyr i */ ||
+ enc==0x43b /* cyr el */ ||
+ enc==0x43d /* cyr en */ ||
+ enc==0x43e /* cyr o */ ||
+ enc==0x43f /* cyr pe */ ||
+ enc==0x440 /* cyr er */ ||
+ enc==0x441 /* cyr es */ ||
+ enc==0x442 /* cyr te */ ||
+ enc==0x443 /* cyr u */ ||
+ enc==0x445 /* cyr ha */ ||
+ enc==0x446 /* cyr tse */ ||
+ enc==0x447 /* cyr che */ ||
+ enc==0x448 /* cyr sha */ ||
+ enc==0x449 /* cyr shcha */ ||
+ enc==0x44a /* cyr hard sign */ ||
+ enc==0x44b /* cyr yery */ ||
+ enc==0x44c /* cyr soft sign */ ||
+ enc==0x44d /* cyr reversed e */ ||
+ enc==0x44f /* cyr ya */ ) {
+ xh[0] += b.maxy;
+ xh[1] += b.maxy*b.maxy;
+ ++xh[2];
+ }
+ }
+ }
+ if ( !ff_progress_next())
+ break;
+ }
+ if ( otherdigits[2]>0 && digith[2]>0 ) {
+ if ( otherdigits[0]/otherdigits[2] >= .95*digith[0]/digith[2] ) {
+ /* all digits are about the same height, not lowercase */
+ digith[0] += otherdigits[0];
+ digith[1] += otherdigits[1];
+ digith[2] += otherdigits[2];
+ }
+ }
+
+ if ( xh[2]>1 ) {
+ xh[1] = sqrt((xh[1]-xh[0]*xh[0]/xh[2])/(xh[2]-1));
+ xh[0] /= xh[2];
+ }
+ if ( ascenth[2]>1 ) {
+ ascenth[1] = sqrt((ascenth[1]-ascenth[0]*ascenth[0]/ascenth[2])/(ascenth[2]-1));
+ ascenth[0] /= ascenth[2];
+ }
+ if ( caph[2]>1 ) {
+ caph[1] = sqrt((caph[1]-caph[0]*caph[0]/caph[2])/(caph[2]-1));
+ caph[0] /= caph[2];
+ }
+ if ( digith[2]>1 ) {
+ digith[1] = sqrt((digith[1]-digith[0]*digith[0]/digith[2])/(digith[2]-1));
+ digith[0] /= digith[2];
+ }
+ if ( base[2]>1 ) {
+ base[1] = sqrt((base[1]-base[0]*base[0]/base[2])/(base[2]-1));
+ base[0] /= base[2];
+ }
+ if ( descenth[2]>1 ) {
+ descenth[1] = sqrt((descenth[1]-descenth[0]*descenth[0]/descenth[2])/(descenth[2]-1));
+ descenth[0] /= descenth[2];
+ }
+
+ /* we'll accept values between +/- 1sd of the mean */
+ /* array[0] == mean, array[1] == sd, array[2] == cnt, array[3]=min, array[4]==max */
+ if ( base[0]+base[1]<0 ) base[1] = -base[0]; /* Make sure 0 is within the base bluezone */
+ caph[3] = caph[4] = 0;
+ xh[3] = xh[4] = 0;
+ ascenth[3] = ascenth[4] = 0;
+ digith[3] = digith[4] = 0;
+ descenth[3] = descenth[4] = 0;
+ base[3] = base[4] = 0;
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ int enc = sf->glyphs[i]->unicodeenc;
+ const unichar_t *upt;
+ if ( enc<0x10000 && isalnum(enc) &&
+ ((enc>=32 && enc<128 ) || enc == 0xfe || enc==0xf0 || enc==0xdf ||
+ (enc>=0x391 && enc<=0x3f3 ) ||
+ (enc>=0x400 && enc<=0x4e9 ) )) {
+ /* no accented characters (or ligatures) */
+ if ( unicode_alternates[enc>>8]!=NULL &&
+ (upt =unicode_alternates[enc>>8][enc&0xff])!=NULL &&
+ upt[1]!='\0' )
+ continue;
+ SplineCharFindBounds(sf->glyphs[i],&b);
+ if ( b.miny==0 && b.maxy==0 )
+ continue;
+ if ( enc=='g' || enc=='j' || enc=='p' || enc=='q' || enc=='y' ||
+ enc==0xfe || enc == 0x3c6 || enc==0x3c8 ||
+ enc==0x440 || enc==0x443 || enc==0x444) {
+ AddBlue(b.miny,descenth,false);
+ } else {
+ /* O and o get forced into the baseline blue value even if they*/
+ /* are beyond 1 sd */
+ AddBlue(b.miny,base,enc=='O' || enc=='o');
+ }
+ if ( enc<0x10000 && isdigit(enc)) {
+ AddBlue(b.maxy,digith,false);
+ } else if ( enc<0x10000 && isupper(enc)) {
+ AddBlue(b.maxy,caph,enc=='O');
+ } else if ( enc=='b' || enc=='d' || enc=='f' || enc=='h' || enc=='k' ||
+ enc == 'l' || enc=='t' || enc==0xf0 || enc==0xfe || enc == 0xdf ||
+ enc == 0x3b2 || enc==0x3b6 || enc==0x3b8 || enc==0x3bb ||
+ enc == 0x3be ||
+ enc == 0x431 ) {
+ AddBlue(b.maxy,ascenth,false);
+ } else if ( enc=='c' || enc=='e' || enc=='o' || enc=='s' || enc=='u' ||
+ enc=='v' || enc=='w' || enc=='x' || enc=='y' || enc=='z' ||
+ enc==0x3b5 /* epsilon */ ||
+ enc==0x3b9 /* iota */ ||
+ enc==0x3ba /* kappa */ ||
+ enc==0x3bc /* mu */ ||
+ enc==0x3bd /* nu */ ||
+ enc==0x3bf /* omicron */ ||
+ enc==0x3c0 /* pi */ ||
+ enc==0x3c1 /* rho */ ||
+ enc==0x3c5 /* upsilon */ ||
+ enc==0x433 /* cyr ge */ ||
+ enc==0x435 /* cyr e */ ||
+ enc==0x436 /* cyr zhe */ ||
+ enc==0x438 /* cyr i */ ||
+ enc==0x43b /* cyr el */ ||
+ enc==0x43d /* cyr en */ ||
+ enc==0x43e /* cyr o */ ||
+ enc==0x43f /* cyr pe */ ||
+ enc==0x440 /* cyr er */ ||
+ enc==0x441 /* cyr es */ ||
+ enc==0x442 /* cyr te */ ||
+ enc==0x443 /* cyr u */ ||
+ enc==0x445 /* cyr ha */ ||
+ enc==0x446 /* cyr tse */ ||
+ enc==0x447 /* cyr che */ ||
+ enc==0x448 /* cyr sha */ ||
+ enc==0x449 /* cyr shcha */ ||
+ enc==0x44a /* cyr hard sign */ ||
+ enc==0x44b /* cyr yery */ ||
+ enc==0x44c /* cyr soft sign */ ||
+ enc==0x44d /* cyr reversed e */ ||
+ enc==0x44f /* cyr ya */ ) {
+ AddBlue(b.maxy,xh,enc=='o' || enc=='x');
+ }
+ }
+ }
+
+ /* the descent blue zone merges into the base zone */
+ MergeZones(descenth,base);
+ MergeZones(xh,base);
+ MergeZones(ascenth,caph);
+ MergeZones(digith,caph);
+ MergeZones(xh,caph);
+ MergeZones(ascenth,digith);
+ MergeZones(xh,digith);
+
+ if ( otherblues!=NULL )
+ for ( i=0; i<10; ++i )
+ otherblues[i] = 0;
+ for ( i=0; i<14; ++i )
+ blues[i] = 0;
+
+ if ( otherblues!=NULL && descenth[2]!=0 ) {
+ otherblues[0] = descenth[3];
+ otherblues[1] = descenth[4];
+ }
+ i = 0;
+ if ( base[2]==0 && (xh[2]!=0 || ascenth[2]!=0 || caph[2]!=0 || digith[2]!=0 )) {
+ /* base line blue value must be present if any other value is */
+ /* make one up if we don't have one */
+ blues[0] = -20;
+ blues[1] = 0;
+ i = 2;
+ } else if ( base[2]!=0 ) {
+ blues[0] = base[3];
+ blues[1] = base[4];
+ i = 2;
+ }
+ if ( xh[2]!=0 ) {
+ blues[i++] = xh[3];
+ blues[i++] = xh[4];
+ }
+ if ( caph[2]!=0 ) {
+ blues[i++] = caph[3];
+ blues[i++] = caph[4];
+ }
+ if ( digith[2]!=0 ) {
+ blues[i++] = digith[3];
+ blues[i++] = digith[4];
+ }
+ if ( ascenth[2]!=0 ) {
+ blues[i++] = ascenth[3];
+ blues[i++] = ascenth[4];
+ }
+
+ for ( j=0; j<i; j+=2 ) for ( k=j+2; k<i; k+=2 ) {
+ if ( blues[j]>blues[k] ) {
+ real temp = blues[j];
+ blues[j]=blues[k];
+ blues[k] = temp;
+ temp = blues[j+1];
+ blues[j+1] = blues[k+1];
+ blues[k+1] = temp;
+ }
+ }
+}
+
+static int PVAddBlues(BlueData *bd,unsigned bcnt,char *pt) {
+ char *end;
+ real val1, val2;
+ unsigned i,j;
+
+ if ( pt==NULL )
+return( bcnt );
+
+ while ( isspace(*pt) || *pt=='[' ) ++pt;
+ while ( *pt!=']' && *pt!='\0' ) {
+ val1 = strtod(pt,&end);
+ if ( *end=='\0' || end==pt )
+ break;
+ for ( pt=end; isspace(*pt) ; ++pt );
+ val2 = strtod(pt,&end);
+ if ( end==pt )
+ break;
+ if ( bcnt==0 || val1>bd->blues[bcnt-1][0] )
+ i = bcnt;
+ else {
+ for ( i=0; i<bcnt && val1>bd->blues[i][0]; ++i );
+ for ( j=bcnt; j>i; --j ) {
+ bd->blues[j][0] = bd->blues[j-1][0];
+ bd->blues[j][1] = bd->blues[j-1][1];
+ }
+ }
+ bd->blues[i][0] = val1;
+ bd->blues[i][1] = val2;
+ ++bcnt;
+ if ( bcnt>=sizeof(bd->blues)/sizeof(bd->blues[0]))
+ break;
+ for ( pt=end; isspace(*pt) ; ++pt );
+ }
+return( bcnt );
+}
+
+/* Quick and dirty (and sometimes wrong) approach to figure out the common */
+/* alignment zones in latin (greek, cyrillic) alphabets */
+void QuickBlues(SplineFont *_sf, int layer, BlueData *bd) {
+ real xheight = -1e10, caph = -1e10, ascent = -1e10, descent = 1e10, max, min;
+ real xheighttop = -1e10, caphtop = -1e10;
+ real numh = -1e10, numhtop = -1e10;
+ real base = -1e10, basebelow = 1e10;
+ SplineFont *sf;
+ SplinePoint *sp;
+ SplineSet *spl;
+ int i,j, bcnt;
+ SplineChar *t;
+ char *pt;
+
+ /* Get the alignment zones we care most about */
+
+ /* be careful of cid fonts */
+ if ( _sf->cidmaster!=NULL )
+ _sf = _sf->cidmaster;
+
+ j=0;
+ do {
+ sf = ( _sf->subfontcnt==0 )? _sf : _sf->subfonts[j];
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ int enc = sf->glyphs[i]->unicodeenc;
+ if ( enc=='I' || enc=='O' || enc=='x' || enc=='o' || enc=='p' || enc=='l' ||
+/* Jean-Christophe Dubacq points out that x-height should be calculated from */
+/* various characters and not just x and o. Italic "x"s often have strange */
+/* shapes */
+ enc=='A' || enc==0x391 || enc==0x410 ||
+ enc=='V' ||
+ enc=='u' || enc=='v' || enc=='w' || enc=='y' || enc=='z' ||
+ enc=='7' || enc=='8' || /* numbers with ascenders */
+ enc==0x399 || enc==0x39f || enc==0x3ba || enc==0x3bf || enc==0x3c1 || enc==0x3be || enc==0x3c7 ||
+ enc==0x41f || enc==0x41e || enc==0x43e || enc==0x43f || enc==0x440 || enc==0x452 || enc==0x445 ) {
+ t = sf->glyphs[i];
+ while ( t->layers[layer].splines==NULL && t->layers[layer].refs!=NULL )
+ t = t->layers[layer].refs->sc;
+ max = -1e10; min = 1e10;
+ if ( t->layers[layer].splines!=NULL ) {
+ for ( spl=t->layers[layer].splines; spl!=NULL; spl=spl->next ) {
+ for ( sp=spl->first; ; ) {
+ if ( sp->me.y > max ) max = sp->me.y;
+ if ( sp->me.y < min ) min = sp->me.y;
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==spl->first )
+ break;
+ }
+ }
+ if ( enc>0x400 ) {
+ /* Only use ascent and descent here if we don't have anything better */
+ if ( enc==0x41f ) { caph = max; base = min; }
+ else if ( enc==0x41e ) { if ( max>caphtop ) caphtop = max; basebelow = min; }
+ else if ( enc==0x410 ) { if ( max>caphtop ) caphtop = max; }
+ else if ( enc==0x43f && xheight<0 ) xheight = max;
+ else if ( enc==0x445 && xheight<0 ) xheight = max;
+ else if ( enc==0x43e ) xheighttop = max;
+ else if ( enc==0x452 && ascent<0 ) ascent = max;
+ else if ( enc==0x440 && descent>0 ) descent = min;
+ } else if ( enc>0x300 ) {
+ if ( enc==0x399 ) { caph = max; base = min; }
+ else if ( enc==0x391 ) { if ( max>caphtop ) caphtop = max; }
+ else if ( enc==0x39f ) { if ( max>caphtop ) caphtop = max; basebelow = min; }
+ else if ( enc==0x3ba && xheight<0 ) xheight = max;
+ else if ( enc==0x3c7 && xheight<0 ) xheight = max;
+ else if ( enc==0x3bf ) xheighttop = max;
+ else if ( enc==0x3be && ascent<0 ) ascent = max;
+ else if ( enc==0x3c1 && descent>0 ) descent = min;
+ } else {
+ if ( enc=='I' ) { caph = max; base = min; }
+ else if ( enc=='O' ) { if ( max>caphtop ) caphtop = max; if ( basebelow<min ) basebelow = min; }
+ else if ( enc=='V' ) { if ( basebelow<min ) basebelow = min; }
+ else if ( enc=='A' ) { if ( max>caphtop ) caphtop = max; }
+ else if ( enc=='7' ) numh = max;
+ else if ( enc=='0' ) numhtop = max;
+ else if ( enc=='x' || enc=='o' || enc=='u' || enc=='v' ||
+ enc =='w' || enc=='y' || enc=='z' ) {
+ if ( xheighttop==-1e10 ) xheighttop = max;
+ if ( xheight==-1e10 ) xheight = max;
+ if ( max > xheighttop ) xheighttop = max;
+ else if ( max<xheight && max>20 ) xheight = max;
+ if ( enc=='y' && descent==1e10 ) descent = min;
+ } else if ( enc=='l' ) ascent = max;
+ else descent = min;
+ }
+ }
+ }
+ }
+ ++j;
+ } while ( j<_sf->subfontcnt );
+
+ if ( basebelow==1e10 ) basebelow=-1e10;
+
+ if ( caphtop<caph ) caphtop = caph; else if ( caph==-1e10 ) caph=caphtop;
+ if ( basebelow>base ) basebelow = base; else if ( base==-1e10 ) base=basebelow;
+ if ( base==-1e10 ) { base=basebelow = 0; }
+ if ( xheighttop<xheight ) xheighttop = xheight; else if ( xheight==-1e10 ) xheight=xheighttop;
+ bd->xheight = xheight; bd->xheighttop = xheighttop;
+ bd->caph = caph; bd->caphtop = caphtop;
+ bd->numh = numh; bd->numhtop = numhtop;
+ bd->ascent = ascent; bd->descent = descent;
+ bd->base = base; bd->basebelow = basebelow;
+
+ bcnt = 0;
+ if ( (pt=PSDictHasEntry(sf->private,"BlueValues"))!=NULL )
+ bcnt = PVAddBlues(bd,bcnt,pt);
+ if ( (pt=PSDictHasEntry(sf->private,"OtherBlues"))!=NULL )
+ bcnt = PVAddBlues(bd,bcnt,pt);
+ if ( bcnt==0 ) {
+ if ( basebelow==-1e10 ) basebelow = base;
+ if ( base==-1e10 ) base = basebelow;
+ if ( xheight==-1e10 ) xheight = xheighttop;
+ if ( xheighttop==-1e10 ) xheighttop = xheight;
+ if ( caph==-1e10 ) caph = caphtop;
+ if ( caphtop==-1e10 ) caphtop = caph;
+ if ( numh==-1e10 ) numh = numhtop;
+ if ( numhtop==-1e10 ) numhtop = numh;
+ if ( numh!=-1e10 && (numhtop>caph-2 && numh<caphtop+2)) {
+ if ( numh<caph ) caph=numh;
+ if ( numhtop>caphtop ) caphtop = numhtop;
+ numh = numhtop = -1e10;
+ }
+ if ( ascent!=-1e10 && (ascent>caph-2 && ascent<caphtop+2)) {
+ if ( ascent<caph ) caph=ascent;
+ if ( ascent>caphtop ) caphtop = ascent;
+ ascent = -1e10;
+ }
+ if ( ascent!=-1e10 && (ascent>numh-2 && ascent<numhtop+2)) {
+ if ( ascent<numh ) numh=ascent;
+ if ( ascent>numhtop ) numhtop = ascent;
+ ascent = -1e10;
+ if ( numhtop>caph-2 && numh<caphtop+2 ) {
+ if ( numh<caph ) caph=numh;
+ if ( numhtop>caphtop ) caphtop = numhtop;
+ numh = numhtop = -1e10;
+ }
+ }
+
+ if ( descent!=1e10 ) {
+ bd->blues[0][0] = bd->blues[0][1] = descent;
+ ++bcnt;
+ }
+ if ( basebelow!=-1e10 ) {
+ bd->blues[bcnt][0] = basebelow;
+ bd->blues[bcnt][1] = base;
+ ++bcnt;
+ }
+ if ( xheight!=-1e10 ) {
+ bd->blues[bcnt][0] = xheight;
+ bd->blues[bcnt][1] = xheighttop;
+ ++bcnt;
+ }
+ if ( numh!=-1e10 ) {
+ bd->blues[bcnt][0] = numh;
+ bd->blues[bcnt][1] = numhtop;
+ ++bcnt;
+ }
+ if ( caph!=-1e10 ) {
+ bd->blues[bcnt][0] = caph;
+ bd->blues[bcnt][1] = caphtop;
+ ++bcnt;
+ }
+ if ( ascent!=-1e10 ) {
+ bd->blues[bcnt][0] = bd->blues[bcnt][1] = ascent;
+ ++bcnt;
+ }
+ }
+ bd->bluecnt = bcnt;
+}
+
+void ElFreeEI(EIList *el) {
+ EI *e, *next;
+
+ for ( e = el->edges; e!=NULL; e = next ) {
+ next = e->next;
+ free(e);
+ }
+}
+
+static int EIAddEdge(Spline *spline, real tmin, real tmax, EIList *el) {
+ EI *new = calloc(1,sizeof(EI));
+ real min, max, temp;
+ Spline1D *s;
+ real dxdtmin, dxdtmax, dydtmin, dydtmax;
+
+ new->spline = spline;
+ new->tmin = tmin;
+ new->tmax = tmax;
+
+ s = &spline->splines[1];
+ if (( dydtmin = (3*s->a*tmin + 2*s->b)*tmin + s->c )<0 ) dydtmin = -dydtmin;
+ if (( dydtmax = (3*s->a*tmax + 2*s->b)*tmax + s->c )<0 ) dydtmax = -dydtmax;
+ s = &spline->splines[0];
+ if (( dxdtmin = (3*s->a*tmin + 2*s->b)*tmin + s->c )<0 ) dxdtmin = -dxdtmin;
+ if (( dxdtmax = (3*s->a*tmax + 2*s->b)*tmax + s->c )<0 ) dxdtmax = -dxdtmax;
+
+ /*s = &spline->splines[0];*/
+ min = ((s->a * tmin + s->b)* tmin + s->c)* tmin + s->d;
+ max = ((s->a * tmax + s->b)* tmax + s->c)* tmax + s->d;
+ if ( tmax==1 ) max = spline->to->me.x; /* beware rounding errors */
+ if ( !el->leavetiny && floor(min)==floor(max) ) { /* If it doesn't cross a pixel boundary then it might as well be vertical */
+ if ( tmin==0 ) max = min;
+ else if ( tmax==1 ) min = max;
+ else max = min;
+ }
+ if ( min==max )
+ new->vert = true;
+ else if ( min<max )
+ new->hup = true;
+ else {
+ temp = min; min = max; max=temp;
+ }
+ if ( !el->leavetiny && min+1>max ) new->almostvert = true;
+ if ( 40*dxdtmin<dydtmin ) new->vertattmin = true;
+ if ( 40*dxdtmax<dydtmax ) new->vertattmax = true;
+ /*if ( new->vertattmin && new->vertattmax && s->a==0 && s->b==0 ) new->almostvert = true;*/
+ new->coordmin[0] = min; new->coordmax[0] = max;
+ if ( el->coordmin[0]>min )
+ el->coordmin[0] = min;
+ if ( el->coordmax[0]<max )
+ el->coordmax[0] = max;
+
+ s = &spline->splines[1];
+ min = ((s->a * tmin + s->b)* tmin + s->c)* tmin + s->d;
+ max = ((s->a * tmax + s->b)* tmax + s->c)* tmax + s->d;
+ if ( tmax==1 ) max = spline->to->me.y;
+ if ( !el->leavetiny && floor(min)==floor(max) ) { /* If it doesn't cross a pixel boundary then it might as well be horizontal */
+ if ( tmin==0 ) max = min;
+ else if ( tmax==1 ) min = max;
+ else max = min;
+ }
+ if ( min==max )
+ new->hor = true;
+ else if ( min<max )
+ new->vup = true;
+ else {
+ temp = min; min = max; max=temp;
+ }
+ if ( !el->leavetiny && min+1>max ) new->almosthor = true;
+ if ( 40*dydtmin<dxdtmin ) new->horattmin = true;
+ if ( 40*dydtmax<dxdtmax ) new->horattmax = true;
+ /*if ( new->horattmin && new->horattmax && s->a==0 && s->b==0 ) new->almosthor = true;*/
+ new->coordmin[1] = min; new->coordmax[1] = max;
+ if ( el->coordmin[1]>min )
+ el->coordmin[1] = min;
+ if ( el->coordmax[1]<max )
+ el->coordmax[1] = max;
+
+ if ( new->hor && new->vert ) {
+ /* This spline is too small for us to notice */
+ free(new);
+return( false );
+ } else {
+ new->next = el->edges;
+ el->edges = new;
+
+ if ( el->splinelast!=NULL )
+ el->splinelast->splinenext = new;
+ el->splinelast = new;
+ if ( el->splinefirst==NULL )
+ el->splinefirst = new;
+
+return( true );
+ }
+}
+
+static void EIAddSpline(Spline *spline, EIList *el) {
+ extended ts[6], temp;
+ int i, j, base, last;
+
+ ts[0] = 0; ts[5] = 1.0;
+ SplineFindExtrema(&spline->splines[0],&ts[1],&ts[2]);
+ SplineFindExtrema(&spline->splines[1],&ts[3],&ts[4]);
+ /* avoid teeny tiny segments, they just confuse us */
+ SplineRemoveExtremaTooClose(&spline->splines[0],&ts[1],&ts[2]);
+ SplineRemoveExtremaTooClose(&spline->splines[1],&ts[3],&ts[4]);
+ for ( i=0; i<4; ++i ) for ( j=i+1; j<5; ++j ) {
+ if ( ts[i]>ts[j] ) {
+ temp = ts[i];
+ ts[i] = ts[j];
+ ts[j] = temp;
+ }
+ }
+ for ( base=0; ts[base]==-1; ++base);
+ for ( i=5; i>base ; --i ) {
+ if ( ts[i]==ts[i-1] ) {
+ for ( j=i-1; j>base; --j )
+ ts[j] = ts[j-1];
+ ts[j] = -1;
+ ++base;
+ }
+ }
+ last = base;
+ for ( i=base; i<5 ; ++i )
+ if ( EIAddEdge(spline,ts[last],ts[i+1],el) )
+ last = i+1;
+}
+
+void ELFindEdges(SplineChar *sc, EIList *el) {
+ Spline *spline, *first;
+ SplineSet *spl;
+
+ el->sc = sc;
+ if ( sc->layers[el->layer].splines==NULL )
+return;
+
+ el->coordmin[0] = el->coordmax[0] = sc->layers[el->layer].splines->first->me.x;
+ el->coordmin[1] = el->coordmax[1] = sc->layers[el->layer].splines->first->me.y;
+
+ for ( spl = sc->layers[el->layer].splines; spl!=NULL; spl = spl->next ) if ( spl->first->prev!=NULL && spl->first->prev->from!=spl->first ) {
+ first = NULL;
+ for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) {
+ EIAddSpline(spline,el);
+ if ( first==NULL ) first = spline;
+ }
+ if ( el->splinefirst!=NULL && spl->first->prev!=NULL )
+ el->splinelast->splinenext = el->splinefirst;
+ el->splinelast = NULL; el->splinefirst = NULL;
+ }
+}
+
+static int IsBiggerSlope(EI *test, EI *base, int major) {
+ int other = !major;
+ real tdo, tdm, bdo, bdm, t;
+
+ if (( major && test->vup ) || (!major && test->hup))
+ t = test->tmin;
+ else
+ t = test->tmax;
+ tdm = (3*test->spline->splines[major].a*t + 2*test->spline->splines[major].b)*t + test->spline->splines[major].c;
+ tdo = (3*test->spline->splines[other].a*t + 2*test->spline->splines[other].b)*t + test->spline->splines[other].c;
+
+ if (( major && base->vup ) || (!major && base->hup))
+ t = base->tmin;
+ else
+ t = base->tmax;
+ bdm = (3*base->spline->splines[major].a*t + 2*base->spline->splines[major].b)*t + base->spline->splines[major].c;
+ bdo = (3*base->spline->splines[other].a*t + 2*base->spline->splines[other].b)*t + base->spline->splines[other].c;
+
+ if ( tdm==0 && bdm==0 )
+return( tdo > bdo );
+ if ( tdo==0 )
+return( tdo>0 );
+ else if ( bdo==0 )
+return( bdo>0 );
+
+return( tdo/tdm > bdo/bdm );
+}
+
+void ELOrder(EIList *el, int major ) {
+ int other = !major;
+ int pos;
+ EI *ei, *prev, *test;
+
+ el->low = floor(el->coordmin[major]); el->high = ceil(el->coordmax[major]);
+ el->cnt = el->high-el->low+1;
+ el->ordered = calloc(el->cnt,sizeof(EI *));
+ el->ends = calloc(el->cnt,1);
+
+ for ( ei = el->edges; ei!=NULL ; ei=ei->next ) {
+ pos = ceil(ei->coordmax[major])-el->low;
+ el->ends[pos] = true;
+ pos = floor(ei->coordmin[major])-el->low;
+ ei->ocur = (ei->hup == ei->vup)?ei->coordmin[other]:ei->coordmax[other];
+ ei->tcur = ((major && ei->vup) || (!major && ei->hup)) ?
+ ei->tmin: ei->tmax;
+ if ( major ) {
+ ei->up = ei->vup;
+ ei->hv = (ei->vert || ei->almostvert);
+ ei->hvbottom = ei->vup ? ei->vertattmin : ei->vertattmax;
+ ei->hvtop =!ei->vup ? ei->vertattmin : ei->vertattmax;
+ if ( ei->hor || ei->almosthor)
+ continue;
+ } else {
+ ei->up = ei->hup;
+ ei->hv = (ei->hor || ei->almosthor);
+ ei->hvbottom = ei->hup ? ei->horattmin : ei->horattmax;
+ ei->hvtop =!ei->hup ? ei->horattmin : ei->horattmax;
+ if ( ei->vert || ei->almostvert)
+ continue;
+ }
+ if ( el->ordered[pos]==NULL || ei->ocur<el->ordered[pos]->ocur ) {
+ ei->ordered = el->ordered[pos];
+ el->ordered[pos] = ei;
+ } else {
+ for ( prev=el->ordered[pos], test = prev->ordered; test!=NULL;
+ prev = test, test = test->ordered ) {
+ if ( test->ocur>ei->ocur ||
+ (test->ocur==ei->ocur && IsBiggerSlope(test,ei,major)))
+ break;
+ }
+ ei->ordered = test;
+ prev->ordered = ei;
+ }
+ }
+}
+
+static HintInstance *HIMerge(HintInstance *into, HintInstance *hi) {
+ HintInstance *n, *first = NULL, *last = NULL;
+
+ while ( into!=NULL && hi!=NULL ) {
+ if ( into->begin<hi->begin ) {
+ n = into;
+ into = into->next;
+ } else {
+ n = hi;
+ hi = hi->next;
+ }
+ if ( first==NULL )
+ first = n;
+ else
+ last->next = n;
+ last = n;
+ }
+ if ( into!=NULL ) {
+ if ( first==NULL )
+ first = into;
+ else
+ last->next = into;
+ } else if ( hi!=NULL ) {
+ if ( first==NULL )
+ first = hi;
+ else
+ last->next = hi;
+ }
+return( first );
+}
+
+real EITOfNextMajor(EI *e, EIList *el, real sought_m ) {
+ /* We want to find t so that Mspline(t) = sought_m */
+ /* the curve is monotonic */
+ Spline1D *msp = &e->spline->splines[el->major];
+ real new_t;
+ real found_m;
+ real t_mmax, t_mmin;
+
+ if ( msp->a==0 && msp->b==0 ) {
+ if ( msp->c == 0 ) {
+ IError("Hor/Vert line when not expected");
+return( 0 );
+ }
+ new_t = (sought_m-msp->d)/(msp->c);
+return( new_t );
+ }
+
+ t_mmax = e->up?e->tmax:e->tmin;
+ t_mmin = e->up?e->tmin:e->tmax;
+ /* sought_m += el->low; */
+
+ while ( 1 ) {
+ new_t = (t_mmin+t_mmax)/2;
+ found_m = ( ((msp->a*new_t+msp->b)*new_t+msp->c)*new_t + msp->d );
+ if ( found_m>sought_m-.001 && found_m<sought_m+.001 )
+return( new_t );
+ if ( found_m > sought_m ) {
+ t_mmax = new_t;
+ } else {
+ t_mmin = new_t;
+ }
+ if ( t_mmax==t_mmin ) {
+ IError("EITOfNextMajor failed! on %s", el->sc!=NULL?el->sc->name:"Unknown" );
+return( new_t );
+ }
+ }
+}
+
+EI *EIActiveListReorder(EI *active,int *change) {
+ int any;
+ EI *pr, *apt;
+
+ *change = false;
+ if ( active!=NULL ) {
+ any = true;
+ while ( any ) {
+ any = false;
+ for ( pr=NULL, apt=active; apt->aenext!=NULL; ) {
+ if ( apt->ocur <= apt->aenext->ocur ) {
+ /* still ordered */;
+ pr = apt;
+ apt = apt->aenext;
+ } else if ( pr==NULL ) {
+ active = apt->aenext;
+ apt->aenext = apt->aenext->aenext;
+ active->aenext = apt;
+ *change = true;
+ /* don't need to set any, since this reorder can't disorder the list */
+ pr = active;
+ } else {
+ pr->aenext = apt->aenext;
+ apt->aenext = apt->aenext->aenext;
+ pr->aenext->aenext = apt;
+ any = *change = true;
+ pr = pr->aenext;
+ }
+ }
+ }
+ }
+return( active );
+}
+
+EI *EIActiveEdgesRefigure(EIList *el, EI *active,real i,int major, int *_change) {
+ EI *apt, *pr, *npt;
+ int change = false, subchange;
+ int other = !major;
+
+ /* first remove any entry which doesn't intersect the new scan line */
+ /* (ie. stopped on last line) */
+ for ( pr=NULL, apt=active; apt!=NULL; apt = apt->aenext ) {
+ if ( apt->coordmax[major]<i+el->low ) {
+ if ( pr==NULL )
+ active = apt->aenext;
+ else
+ pr->aenext = apt->aenext;
+ change = true;
+ } else
+ pr = apt;
+ }
+ /* then move the active list to the next line */
+ for ( apt=active; apt!=NULL; apt = apt->aenext ) {
+ Spline1D *osp = &apt->spline->splines[other];
+ apt->tcur = EITOfNextMajor(apt,el,i+el->low);
+ apt->ocur = ( ((osp->a*apt->tcur+osp->b)*apt->tcur+osp->c)*apt->tcur + osp->d );
+ }
+ /* reorder list */
+ active = EIActiveListReorder(active,&subchange);
+ if ( subchange ) change = true;
+
+ /* Insert new nodes */
+ if ( el->ordered[(int) i]!=NULL ) change = true;
+ for ( pr=NULL, apt=active, npt=el->ordered[(int) i]; apt!=NULL && npt!=NULL; ) {
+ if ( npt->ocur<apt->ocur ) {
+ npt->aenext = apt;
+ if ( pr==NULL )
+ active = npt;
+ else
+ pr->aenext = npt;
+ pr = npt;
+ npt = npt->ordered;
+ } else {
+ pr = apt;
+ apt = apt->aenext;
+ }
+ }
+ while ( npt!=NULL ) {
+ npt->aenext = NULL;
+ if ( pr==NULL )
+ active = npt;
+ else
+ pr->aenext = npt;
+ pr = npt;
+ npt = npt->ordered;
+ }
+ *_change = change;
+return( active );
+}
+
+/* Should I consider e and n to be a continuation of the same spline? */
+/* If we are at an intersection (and it's the same intersection on both) */
+/* and they go in vaguely the same direction then we should */
+/* Ah, but also if they are at different intersections and are connected */
+/* by a series of horizontal/vertical lines (whichever are invisible to major)*/
+/* then we still should. */
+int EISameLine(EI *e, EI *n, real i, int major) {
+ EI *t;
+
+ if ( n!=NULL && /*n->up==e->up &&*/
+ (ceil(e->coordmin[major])==i || floor(e->coordmin[major])==i || floor(e->coordmax[major])==i || ceil(e->coordmax[major])==i) &&
+ (ceil(n->coordmin[major])==i || floor(n->coordmin[major])==i || floor(n->coordmax[major])==i || ceil(n->coordmax[major])==i) ) {
+ if (
+ (n==e->splinenext && n->tmin==e->tmax &&
+ n->tcur<n->tmin+.2 && e->tcur>e->tmax-.2 ) ||
+ (n->splinenext==e && n->tmax==e->tmin &&
+ n->tcur>n->tmax-.2 && e->tcur<e->tmin+.2 ) )
+return( true );
+ /* can be separated by a horizontal/vertical line in the other direction */
+ if ( n->tmax==1 && e->tmin==0 && n->tcur>.8 && e->tcur<.2) {
+ t = n;
+ while ( (t = t->splinenext)!=e ) {
+ if ( t==NULL || t==n ||
+ (major && !t->hor) || ( !major && !t->vert ))
+return( false );
+ }
+return( n->up==e->up );
+ } else if ( n->tmin==0 && e->tmax==1 && n->tcur<.2 && e->tcur>.8) {
+ t = e;
+ while ( (t = t->splinenext)!=n ) {
+ if ( t==NULL || t==e ||
+ (major && !t->hor) || ( !major && !t->vert ))
+return( false );
+ }
+return( n->up==e->up );
+ }
+ }
+return( false );
+}
+
+int EISkipExtremum(EI *e, real i, int major) {
+ EI *n = e->aenext, *t;
+
+ if ( n==NULL )
+return( false );
+ if (
+ (ceil(e->coordmin[major])==i || floor(e->coordmin[major])==i || floor(e->coordmax[major])==i || ceil(e->coordmax[major])==i) &&
+ (ceil(n->coordmin[major])==i || floor(n->coordmin[major])==i || floor(n->coordmax[major])==i || ceil(n->coordmax[major])==i) ) {
+ if (
+ (n==e->splinenext && n->tmin==e->tmax &&
+ n->tcur<n->tmin+.2 && e->tcur>e->tmax-.2 ) ||
+ (n->splinenext==e && n->tmax==e->tmin &&
+ n->tcur>n->tmax-.2 && e->tcur<e->tmin+.2 ) )
+return( n->up!=e->up );
+ /* can be separated by a horizontal/vertical line in the other direction */
+ if ( n->tmax==1 && e->tmin==0 && n->tcur>.8 && e->tcur<.2) {
+ t = n;
+ while ( (t = t->splinenext)!=e ) {
+ if ( t==NULL || t==n ||
+ (major && !t->hor) || ( !major && !t->vert ))
+return( false );
+ }
+return( n->up!=e->up );
+ } else if ( n->tmin==0 && e->tmax==1 && n->tcur<.2 && e->tcur>.8) {
+ t = e;
+ while ( (t = t->splinenext)!=n ) {
+ if ( t==NULL || t==e ||
+ (major && !t->hor) || ( !major && !t->vert ))
+return( false );
+ }
+return( n->up!=e->up );
+ }
+ }
+return( false );
+}
+
+static StemInfo *StemRemoveFlexCandidates(StemInfo *stems) {
+ StemInfo *s, *t, *sn;
+ const real BlueShift = 7;
+ /* Suppose we have something that is a flex candidate */
+ /* We might get two hints from it... one from the two end points */
+ /* and one from the internal point */
+
+ if ( stems==NULL )
+return( NULL );
+
+ for ( s=stems; (sn = s->next)!=NULL; s = sn ) {
+ if ( s->start+BlueShift > sn->start && s->width>0 && sn->width>0 &&
+ s->start+s->width-BlueShift < sn->start+sn->width &&
+ s->start+s->width+BlueShift > sn->start+sn->width &&
+ s->where != NULL && sn->where != NULL &&
+ s->where->next!=NULL && sn->where->next==NULL ) {
+ t = sn->next;
+ sn->next = NULL;
+ StemInfoFree(sn);
+ s->next = t;
+ sn = t;
+ if ( t==NULL )
+ break;
+ }
+ }
+return( stems );
+}
+
+real HIlen( StemInfo *stems) {
+ HintInstance *hi;
+ real len = 0;
+
+ for ( hi=stems->where; hi!=NULL; hi = hi->next )
+ len += hi->end-hi->begin;
+return( len );
+}
+
+real HIoverlap( HintInstance *mhi, HintInstance *thi) {
+ HintInstance *hi;
+ real len = 0;
+ real s, e;
+
+ for ( ; mhi!=NULL; mhi = mhi->next ) {
+ for ( hi = thi; hi!=NULL && hi->begin<=mhi->end; hi = hi->next ) {
+ if ( hi->end<mhi->begin ) {
+ thi = hi;
+ continue;
+ }
+ s = hi->begin<mhi->begin?mhi->begin:hi->begin;
+ e = hi->end>mhi->end?mhi->end:hi->end;
+ if ( e<s )
+ continue; /* Shouldn't happen */
+ len += e-s;
+ }
+ }
+return( len );
+}
+
+int StemListAnyConflicts(StemInfo *stems) {
+ StemInfo *s;
+ int any= false;
+ double end;
+
+ for ( s=stems; s!=NULL ; s=s->next )
+ s->hasconflicts = false;
+ while ( stems!=NULL ) {
+ end = stems->width<0 ? stems->start : stems->start+stems->width;
+ for ( s=stems->next; s!=NULL && (s->width>0 ? s->start : s->start+s->width)<=end; s=s->next ) {
+ stems->hasconflicts = true;
+ s->hasconflicts = true;
+ any = true;
+ }
+ stems = stems->next;
+ }
+return( any );
+}
+
+HintInstance *HICopyTrans(HintInstance *hi, real mul, real offset) {
+ HintInstance *first=NULL, *last, *cur, *p;
+
+ while ( hi!=NULL ) {
+ cur = chunkalloc(sizeof(HintInstance));
+ if ( mul>0 ) {
+ cur->begin = hi->begin*mul+offset;
+ cur->end = hi->end*mul+offset;
+ if ( first==NULL )
+ first = cur;
+ else
+ last->next = cur;
+ last = cur;
+ } else {
+ cur->begin = hi->end*mul+offset;
+ cur->end = hi->begin*mul+offset;
+ if ( first==NULL || cur->begin<first->begin ) {
+ cur->next = first;
+ first = cur;
+ } else {
+ for ( p=first, last=p->next; last!=NULL && cur->begin>last->begin; last=last->next );
+ p->next = cur;
+ cur->next = last;
+ }
+ }
+ hi = hi->next;
+ }
+return( first );
+}
+
+static HintInstance *StemAddHIFromActive(struct stemdata *stem,int major) {
+ int i;
+ HintInstance *head = NULL, *cur, *t;
+ double mino, maxo;
+ double dir = ((real *) &stem->unit.x)[major]<0 ? -1 : 1;
+
+ for ( i=0; i<stem->activecnt; ++i ) {
+ mino = dir*stem->active[i].start + ((real *) &stem->left.x)[major];
+ maxo = dir*stem->active[i].end + ((real *) &stem->left.x)[major];
+ cur = chunkalloc(sizeof(HintInstance));
+ if ( dir>0 ) {
+ cur->begin = mino;
+ cur->end = maxo;
+ if ( head==NULL )
+ head = cur;
+ else
+ t->next = cur;
+ t = cur;
+ } else {
+ cur->begin = maxo;
+ cur->end = mino;
+ cur->next = head;
+ head = cur;
+ }
+ }
+return( head );
+}
+
+static HintInstance *DStemAddHIFromActive( struct stemdata *stem ) {
+ int i;
+ HintInstance *head = NULL, *cur, *t;
+
+ for ( i=0; i<stem->activecnt; ++i ) {
+ cur = chunkalloc( sizeof( HintInstance ));
+ cur->begin = stem->active[i].start;
+ cur->end = stem->active[i].end;
+ if ( head == NULL )
+ head = cur;
+ else
+ t->next = cur;
+ t = cur;
+ }
+return( head );
+}
+
+void SCGuessHintInstancesList( SplineChar *sc,int layer,StemInfo *hstem,StemInfo *vstem,DStemInfo *dstem,
+ int hvforce,int dforce ) {
+
+ struct glyphdata *gd;
+ struct stemdata *sd;
+ int i, cnt=0, hneeds_gd=false, vneeds_gd=false, dneeds_gd=false;
+ StemInfo *test;
+ DStemInfo *dtest;
+ double em_size = ( sc->parent != NULL ) ?
+ sc->parent->ascent + sc->parent->descent : 1000;
+
+ if ( hstem == NULL && vstem == NULL && dstem == NULL )
+return;
+ /* If all stems already have active zones assigned (actual for .sfd */
+ /* files), then there is no need to wast time generating glyph data for */
+ /* this glyph */
+ test = hstem;
+ while ( !hneeds_gd && test != NULL ) {
+ if ( test->where == NULL || hvforce ) hneeds_gd = true;
+ test = test->next;
+ }
+ test = vstem;
+ while ( !vneeds_gd && test != NULL ) {
+ if ( test->where == NULL || hvforce ) vneeds_gd = true;
+ test = test->next;
+ }
+ dtest = dstem;
+ while ( !dneeds_gd && dtest != NULL ) {
+ if ( dtest->where == NULL || dforce ) dneeds_gd = true;
+ dtest = dtest->next;
+ }
+ if ( !hneeds_gd && !vneeds_gd && !dneeds_gd )
+return;
+
+ gd = GlyphDataInit( sc,layer,em_size,!dneeds_gd );
+ if ( gd == NULL )
+return;
+
+ cnt = 0;
+ if ( hstem != NULL && hneeds_gd ) {
+ gd = StemInfoToStemData( gd,hstem,false );
+ for ( i=cnt; i<gd->stemcnt; i++ ) {
+ sd = &gd->stems[i];
+ if ( hstem == NULL )
+ break;
+ if ( hstem->where == NULL || hvforce )
+ hstem->where = StemAddHIFromActive( sd,false );
+ hstem = hstem->next;
+ }
+ }
+ cnt = gd->stemcnt;
+ if ( vstem != NULL && vneeds_gd ) {
+ gd = StemInfoToStemData( gd,vstem,true );
+ for ( i=cnt; i<gd->stemcnt; i++ ) {
+ sd = &gd->stems[i];
+ if ( vstem == NULL )
+ break;
+ if ( vstem->where == NULL || hvforce )
+ vstem->where = StemAddHIFromActive( sd,true );
+ vstem = vstem->next;
+ }
+ }
+ cnt = gd->stemcnt;
+ if ( dstem != NULL && dneeds_gd ) {
+ gd = DStemInfoToStemData( gd,dstem );
+ for ( i=cnt; i<gd->stemcnt; i++ ) {
+ sd = &gd->stems[i];
+ if ( dstem == NULL )
+ break;
+ dstem->left = sd->left; dstem->right = sd->right;
+ if ( dstem->where == NULL || dforce )
+ dstem->where = DStemAddHIFromActive( sd );
+ dstem = dstem->next;
+ }
+ }
+ GlyphDataFree( gd );
+return;
+}
+
+/* We have got (either from a file or user specified) a diagonal stem,
+ described by 4 base points (pairs of x and y coordinates). Some additional
+ tests are required before we can add this stem to the given glyph. */
+int MergeDStemInfo( SplineFont *sf,DStemInfo **ds,DStemInfo *test ) {
+ DStemInfo *dn, *cur, *prev, *next, *temp;
+ double dot, loff, roff, soff, dist_error_diag ;
+ double ibegin, iend;
+ int overlap;
+ BasePoint *base, *nbase, *pbase;
+ HintInstance *hi;
+
+ if ( *ds == NULL ) {
+ *ds = test;
+return( true );
+ }
+ dist_error_diag = ( sf->ascent + sf->descent ) * 0.0065;
+
+ cur = prev = NULL;
+ for ( dn=*ds ; dn!=NULL ; dn=dn->next ) {
+ prev = cur; cur = dn;
+
+ /* Compare the given stem with each of the existing diagonal stem
+ * hints. First ensure that it is not an exact duplicate of an already
+ * added stem. Then test if unit vectors are parallel and edges colinear.
+ * In this case we should either preserve the existing stem or replace
+ * it with the new one, but not keep them both */
+ if (test->unit.x == dn->unit.x && test->unit.y == dn->unit.y &&
+ test->left.x == dn->left.x && test->left.y == dn->left.y &&
+ test->right.x == dn->right.x && test->right.y == dn->right.y ) {
+ DStemInfoFree( test );
+return( false );
+ }
+ dot = ( test->unit.x * dn->unit.y ) -
+ ( test->unit.y * dn->unit.x );
+ if ( dot <= -0.5 || dot >= 0.5 )
+ continue;
+
+ loff = ( test->left.x - dn->left.x ) * dn->unit.y -
+ ( test->left.y - dn->left.y ) * dn->unit.x;
+ roff = ( test->right.x - dn->right.x ) * dn->unit.y -
+ ( test->right.y - dn->right.y ) * dn->unit.x;
+ if (loff <= -dist_error_diag || loff >= dist_error_diag ||
+ roff <= -dist_error_diag || roff >= dist_error_diag )
+ continue;
+ soff = ( test->left.x - dn->left.x ) * dn->unit.x +
+ ( test->left.y - dn->left.y ) * dn->unit.y;
+ overlap = false;
+ if ( dn->where != NULL && test->where != NULL && test->where->next == NULL ) {
+ ibegin = test->where->begin + soff;
+ iend = test->where->end + soff;
+ for ( hi = dn->where; hi != NULL; hi = hi->next ) {
+ if (( hi->begin <= ibegin && ibegin <= hi->end ) ||
+ ( hi->begin <= iend && iend <= hi->end ) ||
+ ( ibegin <= hi->begin && hi->end <= iend )) {
+ overlap = true;
+ break;
+ }
+ }
+ } else
+ overlap = true;
+ /* It's probably a colinear dstem, as in older SFD files. Treat */
+ /* it as one more instance for the already added stem */
+ if ( !overlap ) {
+ for ( hi=dn->where; hi->next != NULL; hi = hi->next ) ;
+ hi->next = chunkalloc( sizeof( HintInstance ));
+ hi->next->begin = ibegin; hi->next->end = iend;
+ DStemInfoFree( test );
+return( false );
+ /* The found stem is close but not identical to the stem we */
+ /* are going to add. So just replace the older stem with the */
+ /* new one */
+ } else {
+ test->next = dn->next;
+ if ( prev == NULL )
+ *ds = test;
+ else
+ prev->next = test;
+ DStemInfoFree( dn );
+return( true );
+ }
+ }
+
+ /* Insert the given stem to the list by such a way that diagonal
+ * stems are ordered by the X coordinate of the left edge key point, and
+ * by Y if X is the same. The order is arbitrary, but may be essential for
+ * things like "W". So we should be sure that the autoinstructor will
+ * process diagonals from left to right. */
+ base = ( test->unit.y < 0 ) ? &test->right : &test->left;
+ nbase = ( (*ds)->unit.y < 0 ) ? &(*ds)->right : &(*ds)->left;
+
+ if ( base->x < nbase->x || ( base->x == nbase->x && base->y >= nbase->y )) {
+ temp = *ds; *ds = test;
+ (*ds)->next = temp;
+ } else {
+ for ( dn=*ds ; dn!=NULL && dn!=test ; dn=dn->next ) {
+ next = dn->next;
+ pbase = ( dn->unit.y < 0 ) ? &dn->right : &dn->left;
+ if ( next != NULL )
+ nbase = ( next->unit.y < 0 ) ? &next->right : &next->left;
+
+ if (( pbase->x < base->x ||
+ ( pbase->x == base->x && pbase->y >= base->y )) &&
+ ( next == NULL || base->x < nbase->x ||
+ ( base->x == nbase->x && base->y >= nbase->y ))) {
+
+ test->next = next; dn->next = test;
+ break;
+ }
+
+ }
+ }
+return( true );
+}
+
+static StemInfo *RefHintsMerge(StemInfo *into, StemInfo *rh, real mul, real offset,
+ real omul, real oofset) {
+ StemInfo *prev, *h, *n;
+ real start, width;
+
+ for ( ; rh!=NULL; rh=rh->next ) {
+ start = rh->start*mul + offset;
+ width = rh->width *mul;
+ if ( width<0 ) {
+ start += width; width = -width;
+ }
+ for ( h=into, prev=NULL; h!=NULL && (start>h->start || (start==h->start && width>h->width)); prev=h, h=h->next );
+ if ( h==NULL || start!=h->start || width!=h->width ) {
+ n = chunkalloc(sizeof(StemInfo));
+ n->start = start; n->width = width;
+ n->ghost = rh->ghost;
+ n->next = h;
+ if ( prev==NULL )
+ into = n;
+ else
+ prev->next = n;
+ n->where = HICopyTrans(rh->where,omul,oofset);
+ } else
+ h->where = HIMerge(h->where,HICopyTrans(rh->where,omul,oofset));
+ }
+return( into );
+}
+
+static DStemInfo *RefDHintsMerge( SplineFont *sf,DStemInfo *into,DStemInfo *rh,
+ real xmul,real xoffset,real ymul,real yoffset ) {
+ DStemInfo *new;
+ double dmul;
+
+ for ( ; rh!=NULL; rh=rh->next ) {
+ new = chunkalloc( sizeof( DStemInfo ));
+ *new = *rh;
+ new->left.x = xmul*new->left.x + xoffset;
+ new->right.x = xmul*new->right.x + xoffset;
+ new->left.y = ymul*new->left.y + yoffset;
+ new->right.y = ymul*new->right.y + yoffset;
+ new->next = NULL;
+ if (( xmul < 0 && ymul > 0 ) || ( xmul > 0 && ymul < 0 ))
+ new->unit.y = -new->unit.y;
+ new->unit.x *= fabs( xmul ); new->unit.y *= fabs( ymul );
+ dmul = sqrt( pow( new->unit.x,2 ) + pow( new->unit.y,2 ));
+ new->unit.x /= dmul; new->unit.y /= dmul;
+ if ( xmul < 0 ) dmul = -dmul;
+ new->where = HICopyTrans( rh->where,dmul,0 );
+
+ MergeDStemInfo( sf,&into,new );
+ }
+return( into );
+}
+
+static void __SplineCharAutoHint( SplineChar *sc, int layer, BlueData *bd, int gen_undoes );
+
+static void AutoHintRefs(SplineChar *sc,int layer, BlueData *bd, int picky, int gen_undoes) {
+ RefChar *ref;
+
+ /* Add hints for base characters before accent hints => if there are any */
+ /* conflicts, the base characters win */
+ for ( ref=sc->layers[layer].refs; ref!=NULL; ref=ref->next ) {
+ if ( ref->transform[1]==0 && ref->transform[2]==0 ) {
+ if ( picky ) {
+ if ( !ref->sc->manualhints && ref->sc->changedsincelasthinted &&
+ (ref->sc->layers[layer].refs!=NULL &&
+ ref->sc->layers[layer].splines==NULL))
+ AutoHintRefs(ref->sc,layer,bd,true,gen_undoes);
+ } else if ( !ref->sc->manualhints && ref->sc->changedsincelasthinted )
+ __SplineCharAutoHint(ref->sc,layer,bd,gen_undoes);
+ if ( ref->sc->unicodeenc!=-1 && ref->sc->unicodeenc<0x10000 &&
+ isalnum(ref->sc->unicodeenc) ) {
+ sc->hstem = RefHintsMerge(sc->hstem,ref->sc->hstem,ref->transform[3], ref->transform[5], ref->transform[0], ref->transform[4]);
+ sc->vstem = RefHintsMerge(sc->vstem,ref->sc->vstem,ref->transform[0], ref->transform[4], ref->transform[3], ref->transform[5]);
+ sc->dstem = RefDHintsMerge(sc->parent,sc->dstem,ref->sc->dstem,ref->transform[0], ref->transform[4], ref->transform[3], ref->transform[5]);
+ }
+ }
+ }
+
+ for ( ref=sc->layers[layer].refs; ref!=NULL; ref=ref->next ) {
+ if ( ref->transform[1]==0 && ref->transform[2]==0 &&
+ (ref->sc->unicodeenc==-1 || ref->sc->unicodeenc>=0x10000 ||
+ !isalnum(ref->sc->unicodeenc)) ) {
+ sc->hstem = RefHintsMerge(sc->hstem,ref->sc->hstem,ref->transform[3], ref->transform[5], ref->transform[0], ref->transform[4]);
+ sc->vstem = RefHintsMerge(sc->vstem,ref->sc->vstem,ref->transform[0], ref->transform[4], ref->transform[3], ref->transform[5]);
+ sc->dstem = RefDHintsMerge(sc->parent,sc->dstem,ref->sc->dstem,ref->transform[0], ref->transform[4], ref->transform[3], ref->transform[5]);
+ }
+ }
+
+ sc->vconflicts = StemListAnyConflicts(sc->vstem);
+ sc->hconflicts = StemListAnyConflicts(sc->hstem);
+}
+
+static void _SCClearHintMasks(SplineChar *sc,int layer, int counterstoo) {
+ SplineSet *spl;
+ SplinePoint *sp;
+ RefChar *ref;
+
+ if ( layer<0 || layer>=sc->layer_cnt )
+ return;
+
+ if ( counterstoo ) {
+ free(sc->countermasks);
+ sc->countermasks = NULL; sc->countermask_cnt = 0;
+ }
+
+ for ( spl = sc->layers[layer].splines; spl!=NULL; spl=spl->next ) {
+ for ( sp = spl->first ; ; ) {
+ chunkfree(sp->hintmask,sizeof(HintMask));
+ sp->hintmask = NULL;
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==spl->first )
+ break;
+ }
+ }
+
+ for ( ref = sc->layers[layer].refs; ref!=NULL; ref=ref->next ) {
+ for ( spl = ref->layers[0].splines; spl!=NULL; spl=spl->next ) {
+ for ( sp = spl->first ; ; ) {
+ chunkfree(sp->hintmask,sizeof(HintMask));
+ sp->hintmask = NULL;
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==spl->first )
+ break;
+ }
+ }
+ }
+}
+
+static void SCFigureSimpleCounterMasks(SplineChar *sc) {
+ SplineChar *scs[MmMax];
+ int hadh3, hadv3, i, vbase;
+ HintMask mask;
+ StemInfo *h;
+
+ if ( sc->countermask_cnt!=0 )
+return;
+
+ scs[0] = sc;
+ hadh3 = CvtPsStem3(NULL,scs,1,true,false);
+ hadv3 = CvtPsStem3(NULL,scs,1,false,false);
+ if ( hadh3 || hadv3 ) {
+ memset(mask,0,sizeof(mask));
+ if ( hadh3 ) mask[0] = 0x80|0x40|0x20;
+ if ( hadv3 ) {
+ for ( h=sc->hstem, vbase=0; h!=NULL; h=h->next, ++vbase );
+ for ( i=0; i<3 ; ++i ) {
+ int j = i+vbase;
+ mask[j>>3] |= (0x80>>(j&7));
+ }
+ }
+ sc->countermask_cnt = 1;
+ sc->countermasks = malloc(sizeof(HintMask));
+ memcpy(sc->countermasks[0],mask,sizeof(HintMask));
+return;
+ }
+}
+
+void SCClearHintMasks(SplineChar *sc,int layer,int counterstoo) {
+ MMSet *mm = sc->parent->mm;
+ int i;
+
+ if ( mm==NULL )
+ _SCClearHintMasks(sc,layer,counterstoo);
+ else {
+ for ( i=0; i<mm->instance_count; ++i ) {
+ if ( sc->orig_pos<mm->instances[i]->glyphcnt )
+ _SCClearHintMasks(mm->instances[i]->glyphs[sc->orig_pos],layer,counterstoo);
+ }
+ if ( sc->orig_pos<mm->normal->glyphcnt )
+ _SCClearHintMasks(mm->normal->glyphs[sc->orig_pos],layer,counterstoo);
+ }
+}
+
+static StemInfo *OnHHint(SplinePoint *sp, StemInfo *s) {
+ StemInfo *possible=NULL;
+ HintInstance *hi;
+
+ if ( sp==NULL )
+return( NULL );
+
+ for ( ; s!=NULL; s=s->next ) {
+ if ( sp->me.y<s->start )
+return( possible );
+ if ( s->start==sp->me.y || s->start+s->width==sp->me.y ) {
+ if ( !s->hasconflicts )
+return( s );
+ for ( hi=s->where; hi!=NULL; hi=hi->next ) {
+ if ( hi->begin<=sp->me.x && hi->end>=sp->me.x )
+return( s );
+ }
+ if ( !s->used )
+ possible = s;
+ }
+ }
+return( possible );
+}
+
+static StemInfo *OnVHint(SplinePoint *sp, StemInfo *s) {
+ StemInfo *possible=NULL;
+ HintInstance *hi;
+
+ if ( sp==NULL )
+return( NULL );
+
+ for ( ; s!=NULL; s=s->next ) {
+ if ( sp->me.x<s->start )
+return( possible );
+ if ( s->start==sp->me.x || s->start+s->width==sp->me.x ) {
+ if ( !s->hasconflicts )
+return( s );
+ for ( hi=s->where; hi!=NULL; hi=hi->next ) {
+ if ( hi->begin<=sp->me.y && hi->end>=sp->me.y )
+return( s );
+ }
+ if ( !s->used )
+ possible = s;
+ }
+ }
+return( possible );
+}
+
+/* Does h have a conflict with any of the stems in the list which have bits */
+/* set in the mask */
+static int ConflictsWithMask(StemInfo *stems, HintMask mask,StemInfo *h) {
+ while ( stems!=NULL && stems->start<=h->start+h->width ) {
+ if ( stems->start+stems->width>=h->start && stems!=h ) {
+ if ( stems->hintnumber!=-1 &&
+ (mask[stems->hintnumber>>3]&(0x80>>(stems->hintnumber&7))) )
+return( true );
+ }
+ stems = stems->next;
+ }
+return( false );
+}
+
+/* All instances of a MM set must have the same hint mask at all points */
+static void FigureHintMask(SplineChar *scs[MmMax], SplinePoint *to[MmMax], int instance_count,
+ HintMask mask) {
+ StemInfo *s;
+ int i;
+ SplinePoint *sp;
+
+ memset(mask,'\0',sizeof(HintMask));
+
+ /* Install all hints that are always active */
+ i=0; {
+ SplineChar *sc = scs[i];
+
+ if ( sc==NULL )
+return;
+
+ for ( s=sc->hstem; s!=NULL; s=s->next )
+ if ( s->hintnumber!=-1 && !s->hasconflicts )
+ mask[s->hintnumber>>3] |= (0x80>>(s->hintnumber&7));
+ for ( s=sc->vstem; s!=NULL; s=s->next )
+ if ( s->hintnumber!=-1 && !s->hasconflicts )
+ mask[s->hintnumber>>3] |= (0x80>>(s->hintnumber&7));
+
+ if ( sc->hconflicts ) {
+ for ( sp=to[i]; sp!=NULL; ) {
+ s = OnHHint(sp,sc->hstem);
+ if ( s!=NULL && s->hintnumber!=-1 ) {
+ if ( ConflictsWithMask(scs[i]->hstem,mask,s))
+ break;
+ mask[s->hintnumber>>3] |= (0x80>>(s->hintnumber&7));
+ }
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( to[i]==sp )
+ break;
+ }
+ }
+ if ( sc->vconflicts ) {
+ for ( sp=to[i]; sp!=NULL; ) {
+ s = OnVHint(sp,sc->vstem);
+ if ( s!=NULL && s->hintnumber!=-1 ) {
+ if ( ConflictsWithMask(scs[i]->vstem,mask,s))
+ break;
+ mask[s->hintnumber>>3] |= (0x80>>(s->hintnumber&7));
+ }
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( to[i]==sp )
+ break;
+ }
+ }
+ }
+ for ( i=0; i<instance_count; ++i ) if ( to[i]!=NULL ) {
+ chunkfree(to[i]->hintmask,sizeof(HintMask));
+ to[i]->hintmask = chunkalloc(sizeof(HintMask));
+ memcpy(to[i]->hintmask,mask,sizeof(HintMask));
+ }
+}
+
+static int TestHintMask(SplineChar *scs[MmMax], SplinePoint *to[MmMax], int instance_count,
+ HintMask mask) {
+ StemInfo *h=NULL, *v=NULL;
+ int i;
+
+ for ( i=0; i<instance_count; ++i ) {
+ SplineChar *sc = scs[i];
+
+ if ( sc==NULL || (!sc->hconflicts && !sc->vconflicts ))
+ continue;
+
+ /* Does this point lie on any hints? */
+ if ( scs[i]->hconflicts )
+ h = OnHHint(to[i],sc->hstem);
+ if ( scs[i]->vconflicts )
+ v = OnVHint(to[i],sc->vstem);
+
+ /* Need to set this hint */
+ if ( (h!=NULL && h->hintnumber!=-1 && (mask[h->hintnumber>>3]&(0x80>>(h->hintnumber&7)))==0 ) ||
+ (v!=NULL && v->hintnumber!=-1 && (mask[v->hintnumber>>3]&(0x80>>(v->hintnumber&7)))==0 ))
+ break;
+ }
+ if ( i==instance_count ) /* All hint masks were ok */
+return( false );
+
+ FigureHintMask(scs,to,instance_count,mask);
+return( true );
+}
+
+static void UnnumberHints(SplineChar *sc) {
+ StemInfo *h;
+
+ for ( h=sc->hstem; h!=NULL; h=h->next )
+ h->hintnumber = -1;
+ for ( h=sc->vstem; h!=NULL; h=h->next )
+ h->hintnumber = -1;
+}
+
+static int NumberHints(SplineChar *sc) {
+ StemInfo *h;
+ int hcnt=0;
+
+ for ( h=sc->hstem; h!=NULL; h=h->next )
+ h->hintnumber = hcnt>=HntMax ? -1 : hcnt++;
+ for ( h=sc->vstem; h!=NULL; h=h->next )
+ h->hintnumber = hcnt>=HntMax ? -1 : hcnt++;
+return( hcnt );
+}
+
+static void UntickHints(SplineChar *sc) {
+ StemInfo *h;
+
+ for ( h=sc->hstem; h!=NULL; h=h->next )
+ h->used = false;
+ for ( h=sc->vstem; h!=NULL; h=h->next )
+ h->used = false;
+}
+
+struct coords {
+ real coords[MmMax];
+ struct coords *next;
+};
+
+typedef struct mmh {
+ StemInfo *hints[MmMax], *map[MmMax];
+ struct coords *where;
+ struct mmh *next;
+} MMH;
+
+static void AddCoord(MMH *mmh,SplinePoint *sps[MmMax],int instance_count, int ish) {
+ struct coords *coords;
+ int i;
+
+ coords = chunkalloc(sizeof(struct coords));
+ coords->next = mmh->where;
+ mmh->where = coords;
+ if ( ish )
+ for ( i=0; i<instance_count; ++i )
+ coords->coords[i] = sps[i]->me.x;
+ else
+ for ( i=0; i<instance_count; ++i )
+ coords->coords[i] = sps[i]->me.y;
+}
+
+static MMH *AddHintSet(MMH *hints,StemInfo *h[MmMax], int instance_count,
+ SplinePoint *sps[MmMax], int ish) {
+ int i, cnt, bestc;
+ MMH *test, *best;
+
+ for ( i=0; i<instance_count; ++i )
+ if ( h[i]==NULL )
+return( hints );
+
+ best = NULL; bestc = 0;
+ for ( test=hints; test!=NULL; test=test->next ) {
+ cnt = 0;
+ for ( i=0; i<instance_count; ++i )
+ if ( test->hints[i]==h[i] )
+ ++cnt;
+ if ( cnt==instance_count ) {
+ AddCoord(test,sps,instance_count,ish);
+return( hints );
+ }
+ if ( cnt>bestc ) {
+ bestc = cnt;
+ best = test;
+ }
+ }
+ test = chunkalloc(sizeof(MMH));
+ test->next = hints;
+ AddCoord(test,sps,instance_count,ish);
+ for ( i=0; i<instance_count; ++i )
+ test->hints[i]=h[i];
+ if ( bestc!=0 ) {
+ for ( i=0; i<instance_count; ++i ) {
+ if ( best->hints[i]==h[i] ) {
+ h[i]->hasconflicts = true;
+ test->map[i] = chunkalloc(sizeof(StemInfo));
+ *test->map[i] = *h[i];
+ test->map[i]->where = NULL;
+ test->map[i]->used = true;
+ h[i]->next = test->map[i];
+ } else
+ test->map[i] = h[i];
+ }
+ } else {
+ for ( i=0; i<instance_count; ++i )
+ test->map[i]=h[i];
+ }
+return( test );
+}
+
+static int CompareMMH(MMH *mmh1,MMH *mmh2, int instance_count) {
+ int i;
+
+ if ( mmh1->map[0]==NULL )
+return( 1 );
+ if ( mmh2->map[0]==NULL )
+return( -1 );
+
+ for ( i=0; i<instance_count; ++i ) {
+ if ( mmh1->map[i]->start!=mmh2->map[i]->start ) {
+ if ( mmh1->map[i]->start > mmh2->map[i]->start )
+return( 1 );
+ else
+return( -1 );
+ }
+ }
+ for ( i=0; i<instance_count; ++i ) {
+ if ( mmh1->map[i]->width!=mmh2->map[i]->width ) {
+ if ( mmh1->map[i]->width > mmh2->map[i]->width )
+return( 1 );
+ else
+return( -1 );
+ }
+ }
+return( 0 );
+}
+
+static MMH *SortMMH(MMH *head,int instance_count) {
+ MMH *mmh, *p, *smallest, *psmallest, *test, *ptest;
+
+ for ( mmh = head, p=NULL; mmh!=NULL ; ) {
+ smallest = mmh; psmallest = p;
+ ptest = mmh; test = mmh->next;
+ while ( test!=NULL ) {
+ if ( CompareMMH(test,smallest,instance_count)<0 ) {
+ smallest = test;
+ psmallest = ptest;
+ }
+ ptest = test;
+ test = test->next;
+ }
+ if ( smallest!=mmh ) {
+ if ( p==NULL )
+ head = smallest;
+ else
+ p->next = smallest;
+ if ( mmh->next==smallest ) {
+ mmh->next = smallest->next;
+ smallest->next = mmh;
+ } else {
+ test = mmh->next;
+ mmh->next = smallest->next;
+ smallest->next = test;
+ psmallest->next = mmh;
+ }
+ }
+ p = smallest;
+ mmh = smallest->next;
+ }
+return( head );
+}
+
+static int NumberMMH(MMH *mmh,int hstart,int instance_count) {
+ int i;
+ HintInstance *hi, *n;
+ struct coords *coords;
+
+ while ( mmh!=NULL ) {
+ for ( i=0; i<instance_count; ++i ) {
+ StemInfo *h = mmh->map[i];
+ if ( h==NULL )
+ continue;
+
+ h->hintnumber = hstart;
+
+ for ( hi=h->where; hi!=NULL; hi=n ) {
+ n = hi->next;
+ chunkfree(hi,sizeof(HintInstance));
+ }
+ h->where = NULL;
+ for ( coords=mmh->where; coords!=NULL; coords = coords->next ) {
+ hi = chunkalloc(sizeof(HintInstance));
+ hi->next = h->where;
+ h->where = hi;
+ hi->begin = coords->coords[i]-1;
+ hi->end = coords->coords[i]+1;
+ }
+ }
+ if ( mmh->map[0]!=NULL ) ++hstart;
+ mmh = mmh->next;
+ }
+return( hstart );
+}
+
+static void SortMMH2(SplineChar *scs[MmMax],MMH *mmh,int instance_count,int ish) {
+ int i;
+ StemInfo *h, *n;
+ MMH *m;
+
+ for ( i=0; i<instance_count; ++i ) {
+ for ( h= ish ? scs[i]->hstem : scs[i]->vstem; h!=NULL; h=n ) {
+ n = h->next;
+ if ( h->hintnumber==-1 )
+ StemInfoFree(h);
+ }
+ n = NULL;
+ for ( m = mmh ; m!=NULL; m=m->next ) {
+ h = m->map[i];
+ if ( n!=NULL )
+ n->next = h;
+ else if ( ish )
+ scs[i]->hstem = h;
+ else
+ scs[i]->vstem = h;
+ n = h;
+ }
+ if ( n!=NULL )
+ n->next = NULL;
+ else if ( ish )
+ scs[i]->hstem = NULL;
+ else
+ scs[i]->vstem = NULL;
+ }
+}
+
+static void MMHFreeList(MMH *mmh) {
+ MMH *mn;
+ struct coords *c, *n;
+
+ for ( ; mmh!=NULL; mmh = mn ) {
+ mn = mmh->next;
+ for ( c=mmh->where; c!=NULL; c=n ) {
+ n = c->next;
+ chunkfree(c,sizeof(struct coords));
+ }
+ chunkfree(mmh,sizeof(struct coords));
+ }
+}
+
+static void SplResolveSplitHints(SplineChar *scs[MmMax], SplineSet *spl[MmMax],
+ int instance_count, MMH **hs, MMH **vs) {
+ SplinePoint *to[MmMax];
+ StemInfo *h[MmMax], *v[MmMax];
+ int i, anymore;
+
+ for (;;) {
+ for ( i=0; i<instance_count; ++i ) {
+ if ( spl[i]!=NULL )
+ to[i] = spl[i]->first;
+ else
+ to[i] = NULL;
+ }
+ for (;;) {
+ for ( i=0; i<instance_count; ++i ) {
+ h[i] = OnHHint(to[i],scs[i]->hstem);
+ v[i] = OnVHint(to[i],scs[i]->vstem);
+ }
+ *hs = AddHintSet(*hs,h,instance_count,to,true);
+ *vs = AddHintSet(*vs,v,instance_count,to,false);
+ anymore = false;
+ for ( i=0; i<instance_count; ++i ) if ( to[i]!=NULL ) {
+ if ( to[i]->next==NULL ) to[i] = NULL;
+ else {
+ to[i] = to[i]->next->to;
+ if ( to[i]==spl[i]->first ) to[i] = NULL;
+ }
+ if ( to[i]!=NULL ) anymore = true;
+ }
+ if ( !anymore )
+ break;
+ }
+ anymore = false;
+ for ( i=0; i<instance_count; ++i ) {
+ if ( spl[i]!=NULL )
+ spl[i] = spl[i]->next;
+ if ( spl[i]!=NULL ) anymore = true;
+ }
+ if ( !anymore )
+ break;
+ }
+}
+
+static void ResolveSplitHints(SplineChar *scs[16],int layer,int instance_count) {
+ /* It is possible for a single hint in one mm instance to split into two */
+ /* in a different MM set. For example, we have two stems which happen */
+ /* to line up in one instance but which do not in another instance. */
+ /* It is even possible that there could be no instance with any conflicts */
+ /* but some of the intermediate forms might conflict. */
+ /* We can't deal (nor can postscript) with the case where hints change order*/
+ SplinePointList *spl[MmMax];
+ RefChar *ref[MmMax];
+ int i, hcnt, hmax=0, anymore;
+ MMH *hs=NULL, *vs=NULL;
+
+ for ( i=0; i<instance_count; ++i ) {
+ hcnt = NumberHints(scs[i]);
+ UntickHints(scs[i]);
+ if ( hcnt>hmax ) hmax = hcnt;
+ spl[i] = scs[i]->layers[layer].splines;
+ }
+ if ( hmax==0 )
+return;
+
+ SplResolveSplitHints(scs,spl,instance_count,&hs,&vs);
+ anymore = false;
+ for ( i=0; i<instance_count; ++i ) {
+ ref[i] = scs[i]->layers[layer].refs;
+ if ( ref[i]!=NULL ) anymore = true;
+ }
+ while ( anymore ) {
+ for ( i=0; i<instance_count; ++i )
+ spl[i] = ( ref[i]!=NULL ) ? ref[i]->layers[0].splines : NULL;
+ SplResolveSplitHints(scs,spl,instance_count,&hs,&vs);
+ anymore = false;
+ for ( i=0; i<instance_count; ++i ) {
+ if ( ref[i]!=NULL ) {
+ ref[i] = ref[i]->next;
+ if ( ref[i]!=NULL ) anymore = true;
+ }
+ }
+ }
+
+ for ( i=0; i<instance_count; ++i )
+ UnnumberHints(scs[i]);
+ hs = SortMMH(hs,instance_count);
+ vs = SortMMH(vs,instance_count);
+ hcnt = NumberMMH(hs,0,instance_count);
+ hcnt = NumberMMH(vs,hcnt,instance_count);
+ SortMMH2(scs,hs,instance_count,true);
+ SortMMH2(scs,vs,instance_count,false);
+ MMHFreeList(hs);
+ MMHFreeList(vs);
+}
+
+static int SplFigureHintMasks(SplineChar *scs[MmMax], SplineSet *spl[MmMax],
+ int instance_count, HintMask mask, int inited) {
+ SplinePoint *to[MmMax];
+ int i, anymore;
+
+ anymore = false;
+ for ( i=0; i<instance_count; ++i ) {
+ if ( spl[i]!=NULL ) {
+ SplineSetReverse(spl[i]);
+ to[i] = spl[i]->first;
+ anymore = true;
+ } else
+ to[i] = NULL;
+ }
+
+ /* Assign the initial hint mask */
+ if ( anymore && !inited ) {
+ FigureHintMask(scs,to,instance_count,mask);
+ inited = true;
+ }
+
+ for (;;) {
+ for ( i=0; i<instance_count; ++i ) {
+ if ( spl[i]!=NULL )
+ to[i] = spl[i]->first;
+ else
+ to[i] = NULL;
+ }
+ for (;;) {
+ TestHintMask(scs,to,instance_count,mask);
+ anymore = false;
+ for ( i=0; i<instance_count; ++i ) if ( to[i]!=NULL ) {
+ if ( to[i]->next==NULL ) to[i] = NULL;
+ else {
+ to[i] = to[i]->next->to;
+ if ( to[i]==spl[i]->first ) to[i] = NULL;
+ }
+ if ( to[i]!=NULL ) anymore = true;
+ }
+ if ( !anymore )
+ break;
+ }
+ anymore = false;
+ for ( i=0; i<instance_count; ++i ) {
+ if ( spl[i]!=NULL ) {
+ SplineSetReverse(spl[i]);
+ spl[i] = spl[i]->next;
+ }
+ if ( spl[i]!=NULL ) {
+ anymore = true;
+ SplineSetReverse(spl[i]);
+ }
+ }
+ if ( !anymore )
+ break;
+ }
+return( inited );
+}
+
+void SCFigureHintMasks(SplineChar *sc,int layer) {
+ SplineChar *scs[MmMax];
+ SplinePointList *spl[MmMax];
+ RefChar *ref[MmMax];
+ MMSet *mm = sc->parent->mm;
+ int i, instance_count, conflicts, anymore, inited;
+ HintMask mask;
+
+ if ( mm==NULL ) {
+ scs[0] = sc;
+ instance_count = 1;
+ SCClearHintMasks(sc,layer,false);
+ } else {
+ if ( mm->apple )
+return;
+ instance_count = mm->instance_count;
+ for ( i=0; i<instance_count; ++i )
+ if ( sc->orig_pos < mm->instances[i]->glyphcnt ) {
+ scs[i] = mm->instances[i]->glyphs[sc->orig_pos];
+ SCClearHintMasks(scs[i],layer,false);
+ }
+ ResolveSplitHints(scs,layer,instance_count);
+ }
+ conflicts = false;
+ for ( i=0; i<instance_count; ++i ) {
+ NumberHints(scs[i]);
+ if ( scs[i]->hconflicts || scs[i]->vconflicts )
+ conflicts = true;
+ }
+ if ( !conflicts && instance_count==1 ) { /* All hints always active */
+ SCFigureSimpleCounterMasks(sc);
+return; /* In an MM font we may still need to resolve things like different numbers of hints */
+ }
+
+ for ( i=0; i<instance_count; ++i ) {
+ spl[i] = scs[i]->layers[layer].splines;
+ ref[i] = scs[i]->layers[layer].refs;
+ }
+ inited = SplFigureHintMasks(scs,spl,instance_count,mask,false);
+ for (;;) {
+ for ( i=0; i<instance_count; ++i ) {
+ if ( ref[i]!=NULL )
+ spl[i] = ref[i]->layers[0].splines;
+ }
+ inited = SplFigureHintMasks(scs,spl,instance_count,mask,inited);
+ anymore = false;
+ for ( i=0; i<instance_count; ++i ) {
+ if ( ref[i]!=NULL ) {
+ ref[i] = ref[i]->next;
+ if ( ref[i]!=NULL ) anymore = true;
+ }
+ }
+ if ( !anymore )
+ break;
+ }
+ if ( instance_count==1 )
+ SCFigureSimpleCounterMasks(sc);
+}
+
+static StemInfo *GDFindStems(struct glyphdata *gd, int major) {
+ int i;
+ StemInfo *head = NULL, *cur, *p, *t;
+ StemBundle *bundle = major ? gd->vbundle : gd->hbundle;
+ StemData *stem;
+ int other = !major;
+ double l, r;
+
+ for ( i=0; i<bundle->cnt; ++i ) {
+ stem = bundle->stemlist[i];
+ l = (&stem->left.x)[other];
+ r = (&stem->right.x)[other];
+ cur = chunkalloc( sizeof( StemInfo ));
+ if ( l<r ) {
+ cur->start = l;
+ cur->width = r - l;
+ cur->haspointleft = stem->lpcnt > 0;
+ cur->haspointright = stem->rpcnt > 0;
+ } else {
+ cur->start = r;
+ cur->width = l - r;
+ cur->haspointleft = stem->rpcnt > 0;
+ cur->haspointright = stem->lpcnt > 0;
+ }
+ cur->ghost = stem->ghost;
+ for ( p=NULL, t=head; t!=NULL ; p=t, t=t->next ) {
+ if ( cur->start<=t->start )
+ break;
+ }
+ cur->next = t;
+ if ( p==NULL )
+ head = cur;
+ else
+ p->next = cur;
+ cur->where = StemAddHIFromActive(stem,major);
+ }
+ head = StemRemoveFlexCandidates(head);
+return( head );
+}
+
+static DStemInfo *GDFindDStems(struct glyphdata *gd) {
+ int i;
+ DStemInfo *head = NULL, *cur ;
+ struct stemdata *stem;
+
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ /* A real diagonal stem should consist of one or more continuous
+ * ranges. Thus the number of active zones should be less then the
+ * number of stem chunks (i. e. pairs of the opposite points). If
+ * each chunk has its own active zone, then we probably have got
+ * not a real stem, but rather two (or more) separate point pairs,
+ * which occasionally happened to have nearly the same vectors and
+ * to be positioned on the same lines */
+ if ( stem->toobig )
+ continue;
+
+ if (( stem->unit.y > -.05 && stem->unit.y < .05 ) ||
+ ( stem->unit.x > -.05 && stem->unit.x < .05 ))
+ continue;
+
+ if ( stem->lpcnt < 2 || stem->rpcnt < 2 )
+ continue;
+ cur = chunkalloc( sizeof(DStemInfo) );
+ cur->left = stem->left;
+ cur->right = stem->right;
+ cur->unit = stem->unit;
+ cur->where = DStemAddHIFromActive( stem );
+ MergeDStemInfo(gd->sf, &head, cur);
+ }
+return( head );
+}
+
+
+static bool inorder( real a, real b, real c )
+{
+ return a < b && b < c;
+}
+
+/**
+ * If fluffy is near enough to exact then clamp to exact.
+ * If fluffy is more than Tolerance away from exact then
+ * just return fluffy (no change).
+ */
+static real clampToIfNear( real exact, real fluffy, real Tolerance )
+{
+ if( inorder( exact - Tolerance, fluffy, exact + Tolerance ))
+ return exact;
+
+ return fluffy;
+}
+
+
+void _SplineCharAutoHint( SplineChar *sc, int layer, BlueData *bd, struct glyphdata *gd2,
+ int gen_undoes ) {
+ struct glyphdata *gd;
+
+ StemInfosFree(sc->vstem); sc->vstem=NULL;
+ StemInfosFree(sc->hstem); sc->hstem=NULL;
+ DStemInfosFree(sc->dstem); sc->dstem=NULL;
+ MinimumDistancesFree(sc->md); sc->md=NULL;
+
+ free(sc->countermasks);
+ sc->countermasks = NULL; sc->countermask_cnt = 0;
+ /* We'll free the hintmasks when we call SCFigureHintMasks */
+
+ sc->changedsincelasthinted = false;
+ sc->manualhints = false;
+
+ if ( (gd=gd2)==NULL )
+ gd = GlyphDataBuild( sc,layer,bd,false );
+ if ( gd!=NULL ) {
+
+ sc->vstem = GDFindStems(gd,1);
+ sc->hstem = GDFindStems(gd,0);
+
+ if ( !gd->only_hv )
+ sc->dstem = GDFindDStems(gd);
+ if ( gd2==NULL ) GlyphDataFree(gd);
+ }
+
+ real AutohintRoundingTolerance = 0.005;
+ StemInfo* s = sc->hstem;
+ for( ; s; s = s->next )
+ {
+ s->width = clampToIfNear( 20.0, s->width, AutohintRoundingTolerance );
+ s->width = clampToIfNear( 21.0, s->width, AutohintRoundingTolerance );
+ }
+
+ AutoHintRefs(sc,layer,bd,false,gen_undoes);
+}
+
+static void __SplineCharAutoHint( SplineChar *sc, int layer, BlueData *bd, int gen_undoes ) {
+ MMSet *mm = sc->parent->mm;
+ int i;
+
+ if ( mm==NULL )
+ _SplineCharAutoHint(sc,layer,bd,NULL,gen_undoes);
+ else {
+ for ( i=0; i<mm->instance_count; ++i )
+ if ( sc->orig_pos < mm->instances[i]->glyphcnt )
+ _SplineCharAutoHint(mm->instances[i]->glyphs[sc->orig_pos],layer,NULL,NULL,gen_undoes);
+ if ( sc->orig_pos < mm->normal->glyphcnt )
+ _SplineCharAutoHint(mm->normal->glyphs[sc->orig_pos],layer,NULL,NULL,gen_undoes);
+ }
+ SCFigureHintMasks(sc,layer);
+}
+
+void SplineCharAutoHint( SplineChar *sc, int layer, BlueData *bd ) {
+ __SplineCharAutoHint(sc,layer,bd,true);
+}
+
+void SFSCAutoHint( SplineChar *sc, int layer, BlueData *bd ) {
+ RefChar *ref;
+
+ if ( sc->ticked )
+return;
+ for ( ref=sc->layers[ly_fore].refs; ref!=NULL; ref=ref->next ) {
+ if ( !ref->sc->ticked )
+ SFSCAutoHint(ref->sc,layer,bd);
+ }
+ sc->ticked = true;
+ SplineCharAutoHint(sc,layer,bd);
+}
+
+void SplineFontAutoHint( SplineFont *_sf,int layer) {
+ int i,k;
+ SplineFont *sf;
+ BlueData *bd = NULL, _bd;
+ SplineChar *sc;
+
+ if ( _sf->mm==NULL ) {
+ QuickBlues(_sf,layer,&_bd);
+ bd = &_bd;
+ }
+
+ /* Tick the ones we don't want to AH, untick the ones that need AH */
+ k=0;
+ do {
+ sf = _sf->subfontcnt==0 ? _sf : _sf->subfonts[k];
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( (sc = sf->glyphs[i])!=NULL )
+ sc->ticked = ( !sc->changedsincelasthinted || sc->manualhints );
+ ++k;
+ } while ( k<_sf->subfontcnt );
+
+ k=0;
+ do {
+ sf = _sf->subfontcnt==0 ? _sf : _sf->subfonts[k];
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ if ( sf->glyphs[i]->changedsincelasthinted &&
+ !sf->glyphs[i]->manualhints )
+ SFSCAutoHint(sf->glyphs[i],layer,bd);
+ if ( !ff_progress_next()) {
+ k = _sf->subfontcnt+1;
+ break;
+ }
+ }
+ ++k;
+ } while ( k<_sf->subfontcnt );
+}
+
+void SplineFontAutoHintRefs( SplineFont *_sf,int layer) {
+ int i,k;
+ SplineFont *sf;
+ BlueData *bd = NULL, _bd;
+ SplineChar *sc;
+
+ if ( _sf->mm==NULL ) {
+ QuickBlues(_sf,layer,&_bd);
+ bd = &_bd;
+ }
+
+ k=0;
+ do {
+ sf = _sf->subfontcnt==0 ? _sf : _sf->subfonts[k];
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( (sc = sf->glyphs[i])!=NULL ) {
+ if ( sc->changedsincelasthinted &&
+ !sc->manualhints &&
+ (sc->layers[layer].refs!=NULL && sc->layers[layer].splines==NULL)) {
+ StemInfosFree(sc->vstem); sc->vstem=NULL;
+ StemInfosFree(sc->hstem); sc->hstem=NULL;
+ AutoHintRefs(sc,layer,bd,true,true);
+ }
+ }
+ ++k;
+ } while ( k<_sf->subfontcnt );
+}
+
+static void FigureStems( SplineFont *sf, real snaps[12], real cnts[12],
+ int which ) {
+ int i, j, k, cnt, smax=0, smin=2000;
+ real stemwidths[2000];
+ StemInfo *stems, *test;
+ int len;
+ HintInstance *hi;
+
+ memset(stemwidths,'\0',sizeof(stemwidths));
+
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ stems = which?sf->glyphs[i]->hstem:sf->glyphs[i]->vstem;
+ for ( test=stems; test!=NULL; test = test->next ) if ( !test->ghost ) {
+ if ( (j=test->width)<0 ) j= -j;
+ if ( j<2000 ) {
+ len = 0;
+ for ( hi=test->where; hi!=NULL; hi=hi->next )
+ len += hi->end-hi->begin;
+ if ( len==0 ) len = 100;
+ stemwidths[j] += len;
+ if ( smax<j ) smax=j;
+ if ( smin>j ) smin=j;
+ }
+ }
+ }
+
+ for ( i=smin, cnt=0; i<=smax; ++i ) {
+ if ( stemwidths[i]!=0 )
+ ++cnt;
+ }
+
+ if ( cnt>12 ) {
+ /* Merge width windows */
+ int windsize=3, j;
+ for ( i=smin; i<=smax; ++i ) if ( stemwidths[i]!=0 ) {
+ if ( (j = i-windsize)<0 ) j=0;
+ for ( ; j<smax && j<=i+windsize; ++j )
+ if ( stemwidths[i]<stemwidths[j] )
+ break;
+ if ( j==smax || j>i+windsize ) {
+ if ( (j = i-windsize)<0 ) j=0;
+ for ( ; j<smax && j<=i+windsize; ++j ) if ( j!=i ) {
+ stemwidths[i] += stemwidths[j];
+ stemwidths[j] = 0;
+ }
+ }
+ }
+ /* Merge adjacent widths */
+ for ( i=smin; i<=smax; ++i ) {
+ if ( i<=smax-1 && stemwidths[i]!=0 && stemwidths[i+1]!=0 ) {
+ if ( stemwidths[i]>stemwidths[i+1] ) {
+ stemwidths[i] += stemwidths[i+1];
+ stemwidths[i+1] = 0;
+ } else {
+ if ( i<=smax-2 && stemwidths[i+2] && stemwidths[i+2]<stemwidths[i+1] ) {
+ stemwidths[i+1] += stemwidths[i+2];
+ stemwidths[i+2] = 0;
+ }
+ stemwidths[i+1] += stemwidths[i];
+ stemwidths[i] = 0;
+ ++i;
+ }
+ }
+ }
+ for ( i=smin, cnt=0; i<=smax; ++i ) {
+ if ( stemwidths[i]!=0 )
+ ++cnt;
+ }
+ }
+ if ( cnt<=12 ) {
+ for ( i=smin, cnt=0; i<=smax; ++i ) {
+ if ( stemwidths[i]!=0 ) {
+ snaps[cnt] = i;
+ cnts[cnt++] = stemwidths[i];
+ }
+ }
+ } else { real firstbiggest=0;
+ for ( cnt = 0; cnt<12; ++cnt ) {
+ int biggesti=0;
+ real biggest=0;
+ for ( i=smin; i<=smax; ++i ) {
+ if ( stemwidths[i]>biggest ) { biggest = stemwidths[i]; biggesti=i; }
+ }
+ /* array must be sorted */
+ if ( biggest<firstbiggest/6 )
+ break;
+ for ( j=0; j<cnt; ++j )
+ if ( snaps[j]>biggesti )
+ break;
+ for ( k=cnt-1; k>=j; --k ) {
+ snaps[k+1] = snaps[k];
+ cnts[k+1]=cnts[k];
+ }
+ snaps[j] = biggesti;
+ cnts[j] = biggest;
+ stemwidths[biggesti] = 0;
+ if ( firstbiggest==0 ) firstbiggest = biggest;
+ }
+ }
+ for ( ; cnt<12; ++cnt ) {
+ snaps[cnt] = 0;
+ cnts[cnt] = 0;
+ }
+}
+
+void FindHStems( SplineFont *sf, real snaps[12], real cnt[12]) {
+ FigureStems(sf,snaps,cnt,1);
+}
+
+void FindVStems( SplineFont *sf, real snaps[12], real cnt[12]) {
+ FigureStems(sf,snaps,cnt,0);
+}
+
+static int IsFlexSmooth(SplinePoint *sp) {
+ BasePoint nvec, pvec;
+ double proj_same, proj_normal;
+
+ if ( sp->nonextcp || sp->noprevcp )
+return( false ); /* No continuity of slopes */
+
+ nvec.x = sp->nextcp.x - sp->me.x; nvec.y = sp->nextcp.y - sp->me.y;
+ pvec.x = sp->me.x - sp->prevcp.x; pvec.y = sp->me.y - sp->prevcp.y;
+
+ /* Avoid cases where the slopes are 180 out of phase */
+ if ( (proj_same = nvec.x*pvec.x + nvec.y*pvec.y)<=0 )
+return( false );
+ if ( (proj_normal = nvec.x*pvec.y - nvec.y*pvec.x)<0 )
+ proj_normal = -proj_normal;
+
+ /* Something is smooth if the normal projection is 0. Let's allow for */
+ /* some rounding errors */
+ if ( proj_same >= 16*proj_normal )
+return( true );
+
+return( false );
+}
+
+static int _SplineCharIsFlexible(SplineChar *sc, int layer, int blueshift) {
+ /* Need two splines
+ outer endpoints have same x (or y) values
+ inner point must be less than 20 horizontal (v) units from the outer points
+ inner point must also be less than BlueShift units (defaults to 7=>6)
+ (can increase BlueShift up to 21)
+ the inner point must be a local extremum
+ the inner point's cps must be at the x (or y) value as the extremum
+ (I think)
+ */
+ /* We want long, nearly straight stems. If the end-points should not have
+ continuous slopes, or if they do, they must be horizontal/vertical.
+ This is an heuristic requirement, not part of Adobe's spec.
+ */
+ SplineSet *spl;
+ SplinePoint *sp, *np, *pp;
+ int max=0, val;
+ RefChar *r;
+
+ if ( sc==NULL )
+return(false);
+
+ for ( spl = sc->layers[layer].splines; spl!=NULL; spl=spl->next ) {
+ if ( spl->first->prev==NULL ) {
+ /* Mark everything on the open path as inflexible */
+ sp=spl->first;
+ while ( 1 ) {
+ sp->flexx = sp->flexy = false;
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ }
+ continue; /* Ignore open paths */
+ }
+ sp=spl->first;
+ do {
+ if ( sp->next==NULL || sp->prev==NULL )
+ break;
+ np = sp->next->to;
+ pp = sp->prev->from;
+ if ( !pp->flexx && !pp->flexy ) {
+ sp->flexy = sp->flexx = 0;
+ val = 0;
+ if ( RealNear(sp->nextcp.x,sp->me.x) &&
+ RealNear(sp->prevcp.x,sp->me.x) &&
+ RealNear(np->me.x,pp->me.x) &&
+ !RealNear(np->me.x,sp->me.x) &&
+ (!IsFlexSmooth(pp) || RealNear(pp->nextcp.x,pp->me.x)) &&
+ (!IsFlexSmooth(np) || RealNear(np->prevcp.x,np->me.x)) &&
+ np->me.x-sp->me.x < blueshift &&
+ np->me.x-sp->me.x > -blueshift ) {
+ if ( (np->me.x>sp->me.x &&
+ np->prevcp.x<=np->me.x && np->prevcp.x>=sp->me.x &&
+ pp->nextcp.x<=pp->me.x && pp->prevcp.x>=sp->me.x ) ||
+ (np->me.x<sp->me.x &&
+ np->prevcp.x>=np->me.x && np->prevcp.x<=sp->me.x &&
+ pp->nextcp.x>=pp->me.x && pp->prevcp.x<=sp->me.x )) {
+ sp->flexx = true;
+ val = np->me.x-sp->me.x;
+ }
+ }
+ if ( RealNear(sp->nextcp.y,sp->me.y) &&
+ RealNear(sp->prevcp.y,sp->me.y) &&
+ RealNear(np->me.y,pp->me.y) &&
+ !RealNear(np->me.y,sp->me.y) &&
+ (!IsFlexSmooth(pp) || RealNear(pp->nextcp.y,pp->me.y)) &&
+ (!IsFlexSmooth(np) || RealNear(np->prevcp.y,np->me.y)) &&
+ np->me.y-sp->me.y < blueshift &&
+ np->me.y-sp->me.y > -blueshift ) {
+ if ( (np->me.y>sp->me.y &&
+ np->prevcp.y<=np->me.y && np->prevcp.y>=sp->me.y &&
+ pp->nextcp.y<=pp->me.y && pp->nextcp.y>=sp->me.y ) ||
+ (np->me.y<sp->me.y &&
+ np->prevcp.y>=np->me.y && np->prevcp.y<=sp->me.y &&
+ pp->nextcp.y>=pp->me.y && pp->nextcp.y<=sp->me.y )) {
+ sp->flexy = true;
+ val = np->me.y-sp->me.y;
+ }
+ }
+ if ( val<0 ) val = -val;
+ if ( val>max ) max = val;
+ }
+ sp = np;
+ } while ( sp!=spl->first );
+ }
+ sc->layers[layer].anyflexes = max>0;
+ if ( max==0 )
+ for ( r = sc->layers[layer].refs; r!=NULL ; r=r->next )
+ if ( r->sc->layers[layer].anyflexes ) {
+ sc->layers[layer].anyflexes = true;
+ break;
+ }
+return( max );
+}
+
+static void SCUnflex(SplineChar *sc, int layer) {
+ SplineSet *spl;
+ SplinePoint *sp;
+
+ for ( spl = sc->layers[layer].splines; spl!=NULL; spl=spl->next ) {
+ /* Mark everything on the path as inflexible */
+ sp=spl->first;
+ while ( 1 ) {
+ sp->flexx = sp->flexy = false;
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==spl->first )
+ break;
+ }
+ }
+ sc->layers[layer].anyflexes = false;
+}
+
+static void FlexDependents(SplineChar *sc,int layer) {
+ struct splinecharlist *scl;
+
+ sc->layers[layer].anyflexes = true;
+ for ( scl = sc->dependents; scl!=NULL; scl=scl->next )
+ FlexDependents(scl->sc,layer);
+}
+
+int SplineFontIsFlexible(SplineFont *sf,int layer, int flags) {
+ int i;
+ int max=0, val;
+ char *pt;
+ int blueshift;
+ /* if the return value is bigger than 6 and we don't have a BlueShift */
+ /* then we must set BlueShift to ret+1 before saving private dictionary */
+ /* If the first point in a spline set is flexible, then we must rotate */
+ /* the splineset */
+
+ if ( flags&(ps_flag_nohints|ps_flag_noflex)) {
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL )
+ SCUnflex(sf->glyphs[i],layer);
+return( 0 );
+ }
+
+ pt = PSDictHasEntry(sf->private,"BlueShift");
+ blueshift = 21; /* maximum posible flex, not default */
+ if ( pt!=NULL ) {
+ blueshift = strtol(pt,NULL,10);
+ if ( blueshift>21 ) blueshift = 21;
+ } else if ( PSDictHasEntry(sf->private,"BlueValues")!=NULL )
+ blueshift = 7; /* The BlueValues array may depend on BlueShift having its default value */
+
+ for ( i=0; i<sf->glyphcnt; ++i )
+ if ( sf->glyphs[i]!=NULL ) if ( sf->glyphs[i]!=NULL ) {
+ val = _SplineCharIsFlexible(sf->glyphs[i],layer,blueshift);
+ if ( val>max ) max = val;
+ if ( sf->glyphs[i]->layers[layer].anyflexes )
+ FlexDependents(sf->glyphs[i],layer);
+ }
+return( max );
+}
+
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/char.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/char.c
new file mode 100644
index 00000000000..fdaaa17500b
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/char.c
@@ -0,0 +1,72 @@
+/* Copyright (C) 2000-2002 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include <fontforge-config.h>
+
+#include <utype.h>
+#include "ustring.h"
+
+int strmatch(const char *str1, const char *str2) {
+ int ch1, ch2;
+ for (;;) {
+ ch1 = *str1++; ch2 = *str2++ ;
+ ch1 = tolower(ch1);
+ ch2 = tolower(ch2);
+ if ( ch1!=ch2 || ch1=='\0' )
+return(ch1-ch2);
+ }
+}
+
+int strnmatch(const char *str1, const char *str2, int n) {
+ int ch1, ch2;
+ for (;n-->0;) {
+ ch1 = *str1++; ch2 = *str2++ ;
+ ch1 = tolower(ch1);
+ ch2 = tolower(ch2);
+ if ( ch1!=ch2 || ch1=='\0' )
+return(ch1-ch2);
+ }
+return(0);
+}
+
+char *strstrmatch(const char *longer, const char *substr) {
+ int ch1, ch2;
+ const char *lpt, *str1, *str2;
+
+ for ( lpt=longer; *lpt!='\0'; ++lpt ) {
+ str1 = lpt; str2 = substr;
+ for (;;) {
+ ch1 = *str1++; ch2 = *str2++ ;
+ ch1 = tolower(ch1);
+ ch2 = tolower(ch2);
+ if ( ch2=='\0' )
+return((char *) lpt);
+ if ( ch1!=ch2 )
+ break;
+ }
+ }
+return( NULL );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/cjk.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/cjk.c
new file mode 100644
index 00000000000..bd029ecf624
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/cjk.c
@@ -0,0 +1,15591 @@
+#include <chardata.h>
+
+const unichar_t unicode_from_jis208[] = {
+ 0x2003, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b,
+ 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8, 0xff3e,
+ 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd,
+ 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0xff3c,
+ 0x301c, 0x2016, 0xff5c, 0x2026, 0x2025, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b,
+ 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e,
+ 0x300f, 0x3010, 0x3011, 0xff0b, 0x2212, 0x00b1, 0x00d7, 0x00f7,
+ 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e, 0x2234,
+ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5, 0xff04,
+ 0xffe0, 0xffe1, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20, 0x00a7,
+ 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1,
+ 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b, 0x3012, 0x2192,
+ 0x2190, 0x2191, 0x2193, 0x3013, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2208,
+ 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a, 0x2229, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2227,
+ 0x2228, 0xffe2, 0x21d2, 0x21d4, 0x2200, 0x2203, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252,
+ 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235, 0x222b, 0x222c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x212b,
+ 0x2030, 0x266f, 0x266d, 0x266a, 0x2020, 0x2021, 0x00b6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x25ef, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14,
+ 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xff21, 0xff22, 0xff23, 0xff24,
+ 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c,
+ 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34,
+ 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xff41, 0xff42, 0xff43, 0xff44,
+ 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c,
+ 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54,
+ 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
+ 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e,
+ 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
+ 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e,
+ 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066,
+ 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e,
+ 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+ 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
+ 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086,
+ 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e,
+ 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
+ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
+ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
+ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
+ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
+ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
+ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
+ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
+ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
+ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
+ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0391, 0x0392,
+ 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a,
+ 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3,
+ 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03b1, 0x03b2,
+ 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba,
+ 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3,
+ 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0410, 0x0411, 0x0412, 0x0413,
+ 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a,
+ 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422,
+ 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a,
+ 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433,
+ 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a,
+ 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442,
+ 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a,
+ 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514,
+ 0x251c, 0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f,
+ 0x2513, 0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b,
+ 0x2520, 0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525,
+ 0x2538, 0x2542, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4e9c, 0x5516, 0x5a03, 0x963f, 0x54c0, 0x611b,
+ 0x6328, 0x59f6, 0x9022, 0x8475, 0x831c, 0x7a50, 0x60aa, 0x63e1,
+ 0x6e25, 0x65ed, 0x8466, 0x82a6, 0x9bf5, 0x6893, 0x5727, 0x65a1,
+ 0x6271, 0x5b9b, 0x59d0, 0x867b, 0x98f4, 0x7d62, 0x7dbe, 0x9b8e,
+ 0x6216, 0x7c9f, 0x88b7, 0x5b89, 0x5eb5, 0x6309, 0x6697, 0x6848,
+ 0x95c7, 0x978d, 0x674f, 0x4ee5, 0x4f0a, 0x4f4d, 0x4f9d, 0x5049,
+ 0x56f2, 0x5937, 0x59d4, 0x5a01, 0x5c09, 0x60df, 0x610f, 0x6170,
+ 0x6613, 0x6905, 0x70ba, 0x754f, 0x7570, 0x79fb, 0x7dad, 0x7def,
+ 0x80c3, 0x840e, 0x8863, 0x8b02, 0x9055, 0x907a, 0x533b, 0x4e95,
+ 0x4ea5, 0x57df, 0x80b2, 0x90c1, 0x78ef, 0x4e00, 0x58f1, 0x6ea2,
+ 0x9038, 0x7a32, 0x8328, 0x828b, 0x9c2f, 0x5141, 0x5370, 0x54bd,
+ 0x54e1, 0x56e0, 0x59fb, 0x5f15, 0x98f2, 0x6deb, 0x80e4, 0x852d,
+ 0x9662, 0x9670, 0x96a0, 0x97fb, 0x540b, 0x53f3, 0x5b87, 0x70cf,
+ 0x7fbd, 0x8fc2, 0x96e8, 0x536f, 0x9d5c, 0x7aba, 0x4e11, 0x7893,
+ 0x81fc, 0x6e26, 0x5618, 0x5504, 0x6b1d, 0x851a, 0x9c3b, 0x59e5,
+ 0x53a9, 0x6d66, 0x74dc, 0x958f, 0x5642, 0x4e91, 0x904b, 0x96f2,
+ 0x834f, 0x990c, 0x53e1, 0x55b6, 0x5b30, 0x5f71, 0x6620, 0x66f3,
+ 0x6804, 0x6c38, 0x6cf3, 0x6d29, 0x745b, 0x76c8, 0x7a4e, 0x9834,
+ 0x82f1, 0x885b, 0x8a60, 0x92ed, 0x6db2, 0x75ab, 0x76ca, 0x99c5,
+ 0x60a6, 0x8b01, 0x8d8a, 0x95b2, 0x698e, 0x53ad, 0x5186, 0x5712,
+ 0x5830, 0x5944, 0x5bb4, 0x5ef6, 0x6028, 0x63a9, 0x63f4, 0x6cbf,
+ 0x6f14, 0x708e, 0x7114, 0x7159, 0x71d5, 0x733f, 0x7e01, 0x8276,
+ 0x82d1, 0x8597, 0x9060, 0x925b, 0x9d1b, 0x5869, 0x65bc, 0x6c5a,
+ 0x7525, 0x51f9, 0x592e, 0x5965, 0x5f80, 0x5fdc, 0x62bc, 0x65fa,
+ 0x6a2a, 0x6b27, 0x6bb4, 0x738b, 0x7fc1, 0x8956, 0x9d2c, 0x9d0e,
+ 0x9ec4, 0x5ca1, 0x6c96, 0x837b, 0x5104, 0x5c4b, 0x61b6, 0x81c6,
+ 0x6876, 0x7261, 0x4e59, 0x4ffa, 0x5378, 0x6069, 0x6e29, 0x7a4f,
+ 0x97f3, 0x4e0b, 0x5316, 0x4eee, 0x4f55, 0x4f3d, 0x4fa1, 0x4f73,
+ 0x52a0, 0x53ef, 0x5609, 0x590f, 0x5ac1, 0x5bb6, 0x5be1, 0x79d1,
+ 0x6687, 0x679c, 0x67b6, 0x6b4c, 0x6cb3, 0x706b, 0x73c2, 0x798d,
+ 0x79be, 0x7a3c, 0x7b87, 0x82b1, 0x82db, 0x8304, 0x8377, 0x83ef,
+ 0x83d3, 0x8766, 0x8ab2, 0x5629, 0x8ca8, 0x8fe6, 0x904e, 0x971e,
+ 0x868a, 0x4fc4, 0x5ce8, 0x6211, 0x7259, 0x753b, 0x81e5, 0x82bd,
+ 0x86fe, 0x8cc0, 0x96c5, 0x9913, 0x99d5, 0x4ecb, 0x4f1a, 0x89e3,
+ 0x56de, 0x584a, 0x58ca, 0x5efb, 0x5feb, 0x602a, 0x6094, 0x6062,
+ 0x61d0, 0x6212, 0x62d0, 0x6539, 0x9b41, 0x6666, 0x68b0, 0x6d77,
+ 0x7070, 0x754c, 0x7686, 0x7d75, 0x82a5, 0x87f9, 0x958b, 0x968e,
+ 0x8c9d, 0x51f1, 0x52be, 0x5916, 0x54b3, 0x5bb3, 0x5d16, 0x6168,
+ 0x6982, 0x6daf, 0x788d, 0x84cb, 0x8857, 0x8a72, 0x93a7, 0x9ab8,
+ 0x6d6c, 0x99a8, 0x86d9, 0x57a3, 0x67ff, 0x86ce, 0x920e, 0x5283,
+ 0x5687, 0x5404, 0x5ed3, 0x62e1, 0x64b9, 0x683c, 0x6838, 0x6bbb,
+ 0x7372, 0x78ba, 0x7a6b, 0x899a, 0x89d2, 0x8d6b, 0x8f03, 0x90ed,
+ 0x95a3, 0x9694, 0x9769, 0x5b66, 0x5cb3, 0x697d, 0x984d, 0x984e,
+ 0x639b, 0x7b20, 0x6a2b, 0x6a7f, 0x68b6, 0x9c0d, 0x6f5f, 0x5272,
+ 0x559d, 0x6070, 0x62ec, 0x6d3b, 0x6e07, 0x6ed1, 0x845b, 0x8910,
+ 0x8f44, 0x4e14, 0x9c39, 0x53f6, 0x691b, 0x6a3a, 0x9784, 0x682a,
+ 0x515c, 0x7ac3, 0x84b2, 0x91dc, 0x938c, 0x565b, 0x9d28, 0x6822,
+ 0x8305, 0x8431, 0x7ca5, 0x5208, 0x82c5, 0x74e6, 0x4e7e, 0x4f83,
+ 0x51a0, 0x5bd2, 0x520a, 0x52d8, 0x52e7, 0x5dfb, 0x559a, 0x582a,
+ 0x59e6, 0x5b8c, 0x5b98, 0x5bdb, 0x5e72, 0x5e79, 0x60a3, 0x611f,
+ 0x6163, 0x61be, 0x63db, 0x6562, 0x67d1, 0x6853, 0x68fa, 0x6b3e,
+ 0x6b53, 0x6c57, 0x6f22, 0x6f97, 0x6f45, 0x74b0, 0x7518, 0x76e3,
+ 0x770b, 0x7aff, 0x7ba1, 0x7c21, 0x7de9, 0x7f36, 0x7ff0, 0x809d,
+ 0x8266, 0x839e, 0x89b3, 0x8acc, 0x8cab, 0x9084, 0x9451, 0x9593,
+ 0x9591, 0x95a2, 0x9665, 0x97d3, 0x9928, 0x8218, 0x4e38, 0x542b,
+ 0x5cb8, 0x5dcc, 0x73a9, 0x764c, 0x773c, 0x5ca9, 0x7feb, 0x8d0b,
+ 0x96c1, 0x9811, 0x9854, 0x9858, 0x4f01, 0x4f0e, 0x5371, 0x559c,
+ 0x5668, 0x57fa, 0x5947, 0x5b09, 0x5bc4, 0x5c90, 0x5e0c, 0x5e7e,
+ 0x5fcc, 0x63ee, 0x673a, 0x65d7, 0x65e2, 0x671f, 0x68cb, 0x68c4,
+ 0x6a5f, 0x5e30, 0x6bc5, 0x6c17, 0x6c7d, 0x757f, 0x7948, 0x5b63,
+ 0x7a00, 0x7d00, 0x5fbd, 0x898f, 0x8a18, 0x8cb4, 0x8d77, 0x8ecc,
+ 0x8f1d, 0x98e2, 0x9a0e, 0x9b3c, 0x4e80, 0x507d, 0x5100, 0x5993,
+ 0x5b9c, 0x622f, 0x6280, 0x64ec, 0x6b3a, 0x72a0, 0x7591, 0x7947,
+ 0x7fa9, 0x87fb, 0x8abc, 0x8b70, 0x63ac, 0x83ca, 0x97a0, 0x5409,
+ 0x5403, 0x55ab, 0x6854, 0x6a58, 0x8a70, 0x7827, 0x6775, 0x9ecd,
+ 0x5374, 0x5ba2, 0x811a, 0x8650, 0x9006, 0x4e18, 0x4e45, 0x4ec7,
+ 0x4f11, 0x53ca, 0x5438, 0x5bae, 0x5f13, 0x6025, 0x6551, 0x673d,
+ 0x6c42, 0x6c72, 0x6ce3, 0x7078, 0x7403, 0x7a76, 0x7aae, 0x7b08,
+ 0x7d1a, 0x7cfe, 0x7d66, 0x65e7, 0x725b, 0x53bb, 0x5c45, 0x5de8,
+ 0x62d2, 0x62e0, 0x6319, 0x6e20, 0x865a, 0x8a31, 0x8ddd, 0x92f8,
+ 0x6f01, 0x79a6, 0x9b5a, 0x4ea8, 0x4eab, 0x4eac, 0x4f9b, 0x4fa0,
+ 0x50d1, 0x5147, 0x7af6, 0x5171, 0x51f6, 0x5354, 0x5321, 0x537f,
+ 0x53eb, 0x55ac, 0x5883, 0x5ce1, 0x5f37, 0x5f4a, 0x602f, 0x6050,
+ 0x606d, 0x631f, 0x6559, 0x6a4b, 0x6cc1, 0x72c2, 0x72ed, 0x77ef,
+ 0x80f8, 0x8105, 0x8208, 0x854e, 0x90f7, 0x93e1, 0x97ff, 0x9957,
+ 0x9a5a, 0x4ef0, 0x51dd, 0x5c2d, 0x6681, 0x696d, 0x5c40, 0x66f2,
+ 0x6975, 0x7389, 0x6850, 0x7c81, 0x50c5, 0x52e4, 0x5747, 0x5dfe,
+ 0x9326, 0x65a4, 0x6b23, 0x6b3d, 0x7434, 0x7981, 0x79bd, 0x7b4b,
+ 0x7dca, 0x82b9, 0x83cc, 0x887f, 0x895f, 0x8b39, 0x8fd1, 0x91d1,
+ 0x541f, 0x9280, 0x4e5d, 0x5036, 0x53e5, 0x533a, 0x72d7, 0x7396,
+ 0x77e9, 0x82e6, 0x8eaf, 0x99c6, 0x99c8, 0x99d2, 0x5177, 0x611a,
+ 0x865e, 0x55b0, 0x7a7a, 0x5076, 0x5bd3, 0x9047, 0x9685, 0x4e32,
+ 0x6adb, 0x91e7, 0x5c51, 0x5c48, 0x6398, 0x7a9f, 0x6c93, 0x9774,
+ 0x8f61, 0x7aaa, 0x718a, 0x9688, 0x7c82, 0x6817, 0x7e70, 0x6851,
+ 0x936c, 0x52f2, 0x541b, 0x85ab, 0x8a13, 0x7fa4, 0x8ecd, 0x90e1,
+ 0x5366, 0x8888, 0x7941, 0x4fc2, 0x50be, 0x5211, 0x5144, 0x5553,
+ 0x572d, 0x73ea, 0x578b, 0x5951, 0x5f62, 0x5f84, 0x6075, 0x6176,
+ 0x6167, 0x61a9, 0x63b2, 0x643a, 0x656c, 0x666f, 0x6842, 0x6e13,
+ 0x7566, 0x7a3d, 0x7cfb, 0x7d4c, 0x7d99, 0x7e4b, 0x7f6b, 0x830e,
+ 0x834a, 0x86cd, 0x8a08, 0x8a63, 0x8b66, 0x8efd, 0x981a, 0x9d8f,
+ 0x82b8, 0x8fce, 0x9be8, 0x5287, 0x621f, 0x6483, 0x6fc0, 0x9699,
+ 0x6841, 0x5091, 0x6b20, 0x6c7a, 0x6f54, 0x7a74, 0x7d50, 0x8840,
+ 0x8a23, 0x6708, 0x4ef6, 0x5039, 0x5026, 0x5065, 0x517c, 0x5238,
+ 0x5263, 0x55a7, 0x570f, 0x5805, 0x5acc, 0x5efa, 0x61b2, 0x61f8,
+ 0x62f3, 0x6372, 0x691c, 0x6a29, 0x727d, 0x72ac, 0x732e, 0x7814,
+ 0x786f, 0x7d79, 0x770c, 0x80a9, 0x898b, 0x8b19, 0x8ce2, 0x8ed2,
+ 0x9063, 0x9375, 0x967a, 0x9855, 0x9a13, 0x9e78, 0x5143, 0x539f,
+ 0x53b3, 0x5e7b, 0x5f26, 0x6e1b, 0x6e90, 0x7384, 0x73fe, 0x7d43,
+ 0x8237, 0x8a00, 0x8afa, 0x9650, 0x4e4e, 0x500b, 0x53e4, 0x547c,
+ 0x56fa, 0x59d1, 0x5b64, 0x5df1, 0x5eab, 0x5f27, 0x6238, 0x6545,
+ 0x67af, 0x6e56, 0x72d0, 0x7cca, 0x88b4, 0x80a1, 0x80e1, 0x83f0,
+ 0x864e, 0x8a87, 0x8de8, 0x9237, 0x96c7, 0x9867, 0x9f13, 0x4e94,
+ 0x4e92, 0x4f0d, 0x5348, 0x5449, 0x543e, 0x5a2f, 0x5f8c, 0x5fa1,
+ 0x609f, 0x68a7, 0x6a8e, 0x745a, 0x7881, 0x8a9e, 0x8aa4, 0x8b77,
+ 0x9190, 0x4e5e, 0x9bc9, 0x4ea4, 0x4f7c, 0x4faf, 0x5019, 0x5016,
+ 0x5149, 0x516c, 0x529f, 0x52b9, 0x52fe, 0x539a, 0x53e3, 0x5411,
+ 0x540e, 0x5589, 0x5751, 0x57a2, 0x597d, 0x5b54, 0x5b5d, 0x5b8f,
+ 0x5de5, 0x5de7, 0x5df7, 0x5e78, 0x5e83, 0x5e9a, 0x5eb7, 0x5f18,
+ 0x6052, 0x614c, 0x6297, 0x62d8, 0x63a7, 0x653b, 0x6602, 0x6643,
+ 0x66f4, 0x676d, 0x6821, 0x6897, 0x69cb, 0x6c5f, 0x6d2a, 0x6d69,
+ 0x6e2f, 0x6e9d, 0x7532, 0x7687, 0x786c, 0x7a3f, 0x7ce0, 0x7d05,
+ 0x7d18, 0x7d5e, 0x7db1, 0x8015, 0x8003, 0x80af, 0x80b1, 0x8154,
+ 0x818f, 0x822a, 0x8352, 0x884c, 0x8861, 0x8b1b, 0x8ca2, 0x8cfc,
+ 0x90ca, 0x9175, 0x9271, 0x783f, 0x92fc, 0x95a4, 0x964d, 0x9805,
+ 0x9999, 0x9ad8, 0x9d3b, 0x525b, 0x52ab, 0x53f7, 0x5408, 0x58d5,
+ 0x62f7, 0x6fe0, 0x8c6a, 0x8f5f, 0x9eb9, 0x514b, 0x523b, 0x544a,
+ 0x56fd, 0x7a40, 0x9177, 0x9d60, 0x9ed2, 0x7344, 0x6f09, 0x8170,
+ 0x7511, 0x5ffd, 0x60da, 0x9aa8, 0x72db, 0x8fbc, 0x6b64, 0x9803,
+ 0x4eca, 0x56f0, 0x5764, 0x58be, 0x5a5a, 0x6068, 0x61c7, 0x660f,
+ 0x6606, 0x6839, 0x68b1, 0x6df7, 0x75d5, 0x7d3a, 0x826e, 0x9b42,
+ 0x4e9b, 0x4f50, 0x53c9, 0x5506, 0x5d6f, 0x5de6, 0x5dee, 0x67fb,
+ 0x6c99, 0x7473, 0x7802, 0x8a50, 0x9396, 0x88df, 0x5750, 0x5ea7,
+ 0x632b, 0x50b5, 0x50ac, 0x518d, 0x6700, 0x54c9, 0x585e, 0x59bb,
+ 0x5bb0, 0x5f69, 0x624d, 0x63a1, 0x683d, 0x6b73, 0x6e08, 0x707d,
+ 0x91c7, 0x7280, 0x7815, 0x7826, 0x796d, 0x658e, 0x7d30, 0x83dc,
+ 0x88c1, 0x8f09, 0x969b, 0x5264, 0x5728, 0x6750, 0x7f6a, 0x8ca1,
+ 0x51b4, 0x5742, 0x962a, 0x583a, 0x698a, 0x80b4, 0x54b2, 0x5d0e,
+ 0x57fc, 0x7895, 0x9dfa, 0x4f5c, 0x524a, 0x548b, 0x643e, 0x6628,
+ 0x6714, 0x67f5, 0x7a84, 0x7b56, 0x7d22, 0x932f, 0x685c, 0x9bad,
+ 0x7b39, 0x5319, 0x518a, 0x5237, 0x5bdf, 0x62f6, 0x64ae, 0x64e6,
+ 0x672d, 0x6bba, 0x85a9, 0x96d1, 0x7690, 0x9bd6, 0x634c, 0x9306,
+ 0x9bab, 0x76bf, 0x6652, 0x4e09, 0x5098, 0x53c2, 0x5c71, 0x60e8,
+ 0x6492, 0x6563, 0x685f, 0x71e6, 0x73ca, 0x7523, 0x7b97, 0x7e82,
+ 0x8695, 0x8b83, 0x8cdb, 0x9178, 0x9910, 0x65ac, 0x66ab, 0x6b8b,
+ 0x4ed5, 0x4ed4, 0x4f3a, 0x4f7f, 0x523a, 0x53f8, 0x53f2, 0x55e3,
+ 0x56db, 0x58eb, 0x59cb, 0x59c9, 0x59ff, 0x5b50, 0x5c4d, 0x5e02,
+ 0x5e2b, 0x5fd7, 0x601d, 0x6307, 0x652f, 0x5b5c, 0x65af, 0x65bd,
+ 0x65e8, 0x679d, 0x6b62, 0x6b7b, 0x6c0f, 0x7345, 0x7949, 0x79c1,
+ 0x7cf8, 0x7d19, 0x7d2b, 0x80a2, 0x8102, 0x81f3, 0x8996, 0x8a5e,
+ 0x8a69, 0x8a66, 0x8a8c, 0x8aee, 0x8cc7, 0x8cdc, 0x96cc, 0x98fc,
+ 0x6b6f, 0x4e8b, 0x4f3c, 0x4f8d, 0x5150, 0x5b57, 0x5bfa, 0x6148,
+ 0x6301, 0x6642, 0x6b21, 0x6ecb, 0x6cbb, 0x723e, 0x74bd, 0x75d4,
+ 0x78c1, 0x793a, 0x800c, 0x8033, 0x81ea, 0x8494, 0x8f9e, 0x6c50,
+ 0x9e7f, 0x5f0f, 0x8b58, 0x9d2b, 0x7afa, 0x8ef8, 0x5b8d, 0x96eb,
+ 0x4e03, 0x53f1, 0x57f7, 0x5931, 0x5ac9, 0x5ba4, 0x6089, 0x6e7f,
+ 0x6f06, 0x75be, 0x8cea, 0x5b9f, 0x8500, 0x7be0, 0x5072, 0x67f4,
+ 0x829d, 0x5c61, 0x854a, 0x7e1e, 0x820e, 0x5199, 0x5c04, 0x6368,
+ 0x8d66, 0x659c, 0x716e, 0x793e, 0x7d17, 0x8005, 0x8b1d, 0x8eca,
+ 0x906e, 0x86c7, 0x90aa, 0x501f, 0x52fa, 0x5c3a, 0x6753, 0x707c,
+ 0x7235, 0x914c, 0x91c8, 0x932b, 0x82e5, 0x5bc2, 0x5f31, 0x60f9,
+ 0x4e3b, 0x53d6, 0x5b88, 0x624b, 0x6731, 0x6b8a, 0x72e9, 0x73e0,
+ 0x7a2e, 0x816b, 0x8da3, 0x9152, 0x9996, 0x5112, 0x53d7, 0x546a,
+ 0x5bff, 0x6388, 0x6a39, 0x7dac, 0x9700, 0x56da, 0x53ce, 0x5468,
+ 0x5b97, 0x5c31, 0x5dde, 0x4fee, 0x6101, 0x62fe, 0x6d32, 0x79c0,
+ 0x79cb, 0x7d42, 0x7e4d, 0x7fd2, 0x81ed, 0x821f, 0x8490, 0x8846,
+ 0x8972, 0x8b90, 0x8e74, 0x8f2f, 0x9031, 0x914b, 0x916c, 0x96c6,
+ 0x919c, 0x4ec0, 0x4f4f, 0x5145, 0x5341, 0x5f93, 0x620e, 0x67d4,
+ 0x6c41, 0x6e0b, 0x7363, 0x7e26, 0x91cd, 0x9283, 0x53d4, 0x5919,
+ 0x5bbf, 0x6dd1, 0x795d, 0x7e2e, 0x7c9b, 0x587e, 0x719f, 0x51fa,
+ 0x8853, 0x8ff0, 0x4fca, 0x5cfb, 0x6625, 0x77ac, 0x7ae3, 0x821c,
+ 0x99ff, 0x51c6, 0x5faa, 0x65ec, 0x696f, 0x6b89, 0x6df3, 0x6e96,
+ 0x6f64, 0x76fe, 0x7d14, 0x5de1, 0x9075, 0x9187, 0x9806, 0x51e6,
+ 0x521d, 0x6240, 0x6691, 0x66d9, 0x6e1a, 0x5eb6, 0x7dd2, 0x7f72,
+ 0x66f8, 0x85af, 0x85f7, 0x8af8, 0x52a9, 0x53d9, 0x5973, 0x5e8f,
+ 0x5f90, 0x6055, 0x92e4, 0x9664, 0x50b7, 0x511f, 0x52dd, 0x5320,
+ 0x5347, 0x53ec, 0x54e8, 0x5546, 0x5531, 0x5617, 0x5968, 0x59be,
+ 0x5a3c, 0x5bb5, 0x5c06, 0x5c0f, 0x5c11, 0x5c1a, 0x5e84, 0x5e8a,
+ 0x5ee0, 0x5f70, 0x627f, 0x6284, 0x62db, 0x638c, 0x6377, 0x6607,
+ 0x660c, 0x662d, 0x6676, 0x677e, 0x68a2, 0x6a1f, 0x6a35, 0x6cbc,
+ 0x6d88, 0x6e09, 0x6e58, 0x713c, 0x7126, 0x7167, 0x75c7, 0x7701,
+ 0x785d, 0x7901, 0x7965, 0x79f0, 0x7ae0, 0x7b11, 0x7ca7, 0x7d39,
+ 0x8096, 0x83d6, 0x848b, 0x8549, 0x885d, 0x88f3, 0x8a1f, 0x8a3c,
+ 0x8a54, 0x8a73, 0x8c61, 0x8cde, 0x91a4, 0x9266, 0x937e, 0x9418,
+ 0x969c, 0x9798, 0x4e0a, 0x4e08, 0x4e1e, 0x4e57, 0x5197, 0x5270,
+ 0x57ce, 0x5834, 0x58cc, 0x5b22, 0x5e38, 0x60c5, 0x64fe, 0x6761,
+ 0x6756, 0x6d44, 0x72b6, 0x7573, 0x7a63, 0x84b8, 0x8b72, 0x91b8,
+ 0x9320, 0x5631, 0x57f4, 0x98fe, 0x62ed, 0x690d, 0x6b96, 0x71ed,
+ 0x7e54, 0x8077, 0x8272, 0x89e6, 0x98df, 0x8755, 0x8fb1, 0x5c3b,
+ 0x4f38, 0x4fe1, 0x4fb5, 0x5507, 0x5a20, 0x5bdd, 0x5be9, 0x5fc3,
+ 0x614e, 0x632f, 0x65b0, 0x664b, 0x68ee, 0x699b, 0x6d78, 0x6df1,
+ 0x7533, 0x75b9, 0x771f, 0x795e, 0x79e6, 0x7d33, 0x81e3, 0x82af,
+ 0x85aa, 0x89aa, 0x8a3a, 0x8eab, 0x8f9b, 0x9032, 0x91dd, 0x9707,
+ 0x4eba, 0x4ec1, 0x5203, 0x5875, 0x58ec, 0x5c0b, 0x751a, 0x5c3d,
+ 0x814e, 0x8a0a, 0x8fc5, 0x9663, 0x976d, 0x7b25, 0x8acf, 0x9808,
+ 0x9162, 0x56f3, 0x53a8, 0x9017, 0x5439, 0x5782, 0x5e25, 0x63a8,
+ 0x6c34, 0x708a, 0x7761, 0x7c8b, 0x7fe0, 0x8870, 0x9042, 0x9154,
+ 0x9310, 0x9318, 0x968f, 0x745e, 0x9ac4, 0x5d07, 0x5d69, 0x6570,
+ 0x67a2, 0x8da8, 0x96db, 0x636e, 0x6749, 0x6919, 0x83c5, 0x9817,
+ 0x96c0, 0x88fe, 0x6f84, 0x647a, 0x5bf8, 0x4e16, 0x702c, 0x755d,
+ 0x662f, 0x51c4, 0x5236, 0x52e2, 0x59d3, 0x5f81, 0x6027, 0x6210,
+ 0x653f, 0x6574, 0x661f, 0x6674, 0x68f2, 0x6816, 0x6b63, 0x6e05,
+ 0x7272, 0x751f, 0x76db, 0x7cbe, 0x8056, 0x58f0, 0x88fd, 0x897f,
+ 0x8aa0, 0x8a93, 0x8acb, 0x901d, 0x9192, 0x9752, 0x9759, 0x6589,
+ 0x7a0e, 0x8106, 0x96bb, 0x5e2d, 0x60dc, 0x621a, 0x65a5, 0x6614,
+ 0x6790, 0x77f3, 0x7a4d, 0x7c4d, 0x7e3e, 0x810a, 0x8cac, 0x8d64,
+ 0x8de1, 0x8e5f, 0x78a9, 0x5207, 0x62d9, 0x63a5, 0x6442, 0x6298,
+ 0x8a2d, 0x7a83, 0x7bc0, 0x8aac, 0x96ea, 0x7d76, 0x820c, 0x8749,
+ 0x4ed9, 0x5148, 0x5343, 0x5360, 0x5ba3, 0x5c02, 0x5c16, 0x5ddd,
+ 0x6226, 0x6247, 0x64b0, 0x6813, 0x6834, 0x6cc9, 0x6d45, 0x6d17,
+ 0x67d3, 0x6f5c, 0x714e, 0x717d, 0x65cb, 0x7a7f, 0x7bad, 0x7dda,
+ 0x7e4a, 0x7fa8, 0x817a, 0x821b, 0x8239, 0x85a6, 0x8a6e, 0x8cce,
+ 0x8df5, 0x9078, 0x9077, 0x92ad, 0x9291, 0x9583, 0x9bae, 0x524d,
+ 0x5584, 0x6f38, 0x7136, 0x5168, 0x7985, 0x7e55, 0x81b3, 0x7cce,
+ 0x564c, 0x5851, 0x5ca8, 0x63aa, 0x66fe, 0x66fd, 0x695a, 0x72d9,
+ 0x758f, 0x758e, 0x790e, 0x7956, 0x79df, 0x7c97, 0x7d20, 0x7d44,
+ 0x8607, 0x8a34, 0x963b, 0x9061, 0x9f20, 0x50e7, 0x5275, 0x53cc,
+ 0x53e2, 0x5009, 0x55aa, 0x58ee, 0x594f, 0x723d, 0x5b8b, 0x5c64,
+ 0x531d, 0x60e3, 0x60f3, 0x635c, 0x6383, 0x633f, 0x63bb, 0x64cd,
+ 0x65e9, 0x66f9, 0x5de3, 0x69cd, 0x69fd, 0x6f15, 0x71e5, 0x4e89,
+ 0x75e9, 0x76f8, 0x7a93, 0x7cdf, 0x7dcf, 0x7d9c, 0x8061, 0x8349,
+ 0x8358, 0x846c, 0x84bc, 0x85fb, 0x88c5, 0x8d70, 0x9001, 0x906d,
+ 0x9397, 0x971c, 0x9a12, 0x50cf, 0x5897, 0x618e, 0x81d3, 0x8535,
+ 0x8d08, 0x9020, 0x4fc3, 0x5074, 0x5247, 0x5373, 0x606f, 0x6349,
+ 0x675f, 0x6e2c, 0x8db3, 0x901f, 0x4fd7, 0x5c5e, 0x8cca, 0x65cf,
+ 0x7d9a, 0x5352, 0x8896, 0x5176, 0x63c3, 0x5b58, 0x5b6b, 0x5c0a,
+ 0x640d, 0x6751, 0x905c, 0x4ed6, 0x591a, 0x592a, 0x6c70, 0x8a51,
+ 0x553e, 0x5815, 0x59a5, 0x60f0, 0x6253, 0x67c1, 0x8235, 0x6955,
+ 0x9640, 0x99c4, 0x9a28, 0x4f53, 0x5806, 0x5bfe, 0x8010, 0x5cb1,
+ 0x5e2f, 0x5f85, 0x6020, 0x614b, 0x6234, 0x66ff, 0x6cf0, 0x6ede,
+ 0x80ce, 0x817f, 0x82d4, 0x888b, 0x8cb8, 0x9000, 0x902e, 0x968a,
+ 0x9edb, 0x9bdb, 0x4ee3, 0x53f0, 0x5927, 0x7b2c, 0x918d, 0x984c,
+ 0x9df9, 0x6edd, 0x7027, 0x5353, 0x5544, 0x5b85, 0x6258, 0x629e,
+ 0x62d3, 0x6ca2, 0x6fef, 0x7422, 0x8a17, 0x9438, 0x6fc1, 0x8afe,
+ 0x8338, 0x51e7, 0x86f8, 0x53ea, 0x53e9, 0x4f46, 0x9054, 0x8fb0,
+ 0x596a, 0x8131, 0x5dfd, 0x7aea, 0x8fbf, 0x68da, 0x8c37, 0x72f8,
+ 0x9c48, 0x6a3d, 0x8ab0, 0x4e39, 0x5358, 0x5606, 0x5766, 0x62c5,
+ 0x63a2, 0x65e6, 0x6b4e, 0x6de1, 0x6e5b, 0x70ad, 0x77ed, 0x7aef,
+ 0x7baa, 0x7dbb, 0x803d, 0x80c6, 0x86cb, 0x8a95, 0x935b, 0x56e3,
+ 0x58c7, 0x5f3e, 0x65ad, 0x6696, 0x6a80, 0x6bb5, 0x7537, 0x8ac7,
+ 0x5024, 0x77e5, 0x5730, 0x5f1b, 0x6065, 0x667a, 0x6c60, 0x75f4,
+ 0x7a1a, 0x7f6e, 0x81f4, 0x8718, 0x9045, 0x99b3, 0x7bc9, 0x755c,
+ 0x7af9, 0x7b51, 0x84c4, 0x9010, 0x79e9, 0x7a92, 0x8336, 0x5ae1,
+ 0x7740, 0x4e2d, 0x4ef2, 0x5b99, 0x5fe0, 0x62bd, 0x663c, 0x67f1,
+ 0x6ce8, 0x866b, 0x8877, 0x8a3b, 0x914e, 0x92f3, 0x99d0, 0x6a17,
+ 0x7026, 0x732a, 0x82e7, 0x8457, 0x8caf, 0x4e01, 0x5146, 0x51cb,
+ 0x558b, 0x5bf5, 0x5e16, 0x5e33, 0x5e81, 0x5f14, 0x5f35, 0x5f6b,
+ 0x5fb4, 0x61f2, 0x6311, 0x66a2, 0x671d, 0x6f6e, 0x7252, 0x753a,
+ 0x773a, 0x8074, 0x8139, 0x8178, 0x8776, 0x8abf, 0x8adc, 0x8d85,
+ 0x8df3, 0x929a, 0x9577, 0x9802, 0x9ce5, 0x52c5, 0x6357, 0x76f4,
+ 0x6715, 0x6c88, 0x73cd, 0x8cc3, 0x93ae, 0x9673, 0x6d25, 0x589c,
+ 0x690e, 0x69cc, 0x8ffd, 0x939a, 0x75db, 0x901a, 0x585a, 0x6802,
+ 0x63b4, 0x69fb, 0x4f43, 0x6f2c, 0x67d8, 0x8fbb, 0x8526, 0x7db4,
+ 0x9354, 0x693f, 0x6f70, 0x576a, 0x58f7, 0x5b2c, 0x7d2c, 0x722a,
+ 0x540a, 0x91e3, 0x9db4, 0x4ead, 0x4f4e, 0x505c, 0x5075, 0x5243,
+ 0x8c9e, 0x5448, 0x5824, 0x5b9a, 0x5e1d, 0x5e95, 0x5ead, 0x5ef7,
+ 0x5f1f, 0x608c, 0x62b5, 0x633a, 0x63d0, 0x68af, 0x6c40, 0x7887,
+ 0x798e, 0x7a0b, 0x7de0, 0x8247, 0x8a02, 0x8ae6, 0x8e44, 0x9013,
+ 0x90b8, 0x912d, 0x91d8, 0x9f0e, 0x6ce5, 0x6458, 0x64e2, 0x6575,
+ 0x6ef4, 0x7684, 0x7b1b, 0x9069, 0x93d1, 0x6eba, 0x54f2, 0x5fb9,
+ 0x64a4, 0x8f4d, 0x8fed, 0x9244, 0x5178, 0x586b, 0x5929, 0x5c55,
+ 0x5e97, 0x6dfb, 0x7e8f, 0x751c, 0x8cbc, 0x8ee2, 0x985b, 0x70b9,
+ 0x4f1d, 0x6bbf, 0x6fb1, 0x7530, 0x96fb, 0x514e, 0x5410, 0x5835,
+ 0x5857, 0x59ac, 0x5c60, 0x5f92, 0x6597, 0x675c, 0x6e21, 0x767b,
+ 0x83df, 0x8ced, 0x9014, 0x90fd, 0x934d, 0x7825, 0x783a, 0x52aa,
+ 0x5ea6, 0x571f, 0x5974, 0x6012, 0x5012, 0x515a, 0x51ac, 0x51cd,
+ 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5b95, 0x5cf6, 0x5d8b,
+ 0x60bc, 0x6295, 0x642d, 0x6771, 0x6843, 0x68bc, 0x68df, 0x76d7,
+ 0x6dd8, 0x6e6f, 0x6d9b, 0x706f, 0x71c8, 0x5f53, 0x75d8, 0x7977,
+ 0x7b49, 0x7b54, 0x7b52, 0x7cd6, 0x7d71, 0x5230, 0x8463, 0x8569,
+ 0x85e4, 0x8a0e, 0x8b04, 0x8c46, 0x8e0f, 0x9003, 0x900f, 0x9419,
+ 0x9676, 0x982d, 0x9a30, 0x95d8, 0x50cd, 0x52d5, 0x540c, 0x5802,
+ 0x5c0e, 0x61a7, 0x649e, 0x6d1e, 0x77b3, 0x7ae5, 0x80f4, 0x8404,
+ 0x9053, 0x9285, 0x5ce0, 0x9d07, 0x533f, 0x5f97, 0x5fb3, 0x6d9c,
+ 0x7279, 0x7763, 0x79bf, 0x7be4, 0x6bd2, 0x72ec, 0x8aad, 0x6803,
+ 0x6a61, 0x51f8, 0x7a81, 0x6934, 0x5c4a, 0x9cf6, 0x82eb, 0x5bc5,
+ 0x9149, 0x701e, 0x5678, 0x5c6f, 0x60c7, 0x6566, 0x6c8c, 0x8c5a,
+ 0x9041, 0x9813, 0x5451, 0x66c7, 0x920d, 0x5948, 0x90a3, 0x5185,
+ 0x4e4d, 0x51ea, 0x8599, 0x8b0e, 0x7058, 0x637a, 0x934b, 0x6962,
+ 0x99b4, 0x7e04, 0x7577, 0x5357, 0x6960, 0x8edf, 0x96e3, 0x6c5d,
+ 0x4e8c, 0x5c3c, 0x5f10, 0x8fe9, 0x5302, 0x8cd1, 0x8089, 0x8679,
+ 0x5eff, 0x65e5, 0x4e73, 0x5165, 0x5982, 0x5c3f, 0x97ee, 0x4efb,
+ 0x598a, 0x5fcd, 0x8a8d, 0x6fe1, 0x79b0, 0x7962, 0x5be7, 0x8471,
+ 0x732b, 0x71b1, 0x5e74, 0x5ff5, 0x637b, 0x649a, 0x71c3, 0x7c98,
+ 0x4e43, 0x5efc, 0x4e4b, 0x57dc, 0x56a2, 0x60a9, 0x6fc3, 0x7d0d,
+ 0x80fd, 0x8133, 0x81bf, 0x8fb2, 0x8997, 0x86a4, 0x5df4, 0x628a,
+ 0x64ad, 0x8987, 0x6777, 0x6ce2, 0x6d3e, 0x7436, 0x7834, 0x5a46,
+ 0x7f75, 0x82ad, 0x99ac, 0x4ff3, 0x5ec3, 0x62dd, 0x6392, 0x6557,
+ 0x676f, 0x76c3, 0x724c, 0x80cc, 0x80ba, 0x8f29, 0x914d, 0x500d,
+ 0x57f9, 0x5a92, 0x6885, 0x6973, 0x7164, 0x72fd, 0x8cb7, 0x58f2,
+ 0x8ce0, 0x966a, 0x9019, 0x877f, 0x79e4, 0x77e7, 0x8429, 0x4f2f,
+ 0x5265, 0x535a, 0x62cd, 0x67cf, 0x6cca, 0x767d, 0x7b94, 0x7c95,
+ 0x8236, 0x8584, 0x8feb, 0x66dd, 0x6f20, 0x7206, 0x7e1b, 0x83ab,
+ 0x99c1, 0x9ea6, 0x51fd, 0x7bb1, 0x7872, 0x7bb8, 0x8087, 0x7b48,
+ 0x6ae8, 0x5e61, 0x808c, 0x7551, 0x7560, 0x516b, 0x9262, 0x6e8c,
+ 0x767a, 0x9197, 0x9aea, 0x4f10, 0x7f70, 0x629c, 0x7b4f, 0x95a5,
+ 0x9ce9, 0x567a, 0x5859, 0x86e4, 0x96bc, 0x4f34, 0x5224, 0x534a,
+ 0x53cd, 0x53db, 0x5e06, 0x642c, 0x6591, 0x677f, 0x6c3e, 0x6c4e,
+ 0x7248, 0x72af, 0x73ed, 0x7554, 0x7e41, 0x822c, 0x85e9, 0x8ca9,
+ 0x7bc4, 0x91c6, 0x7169, 0x9812, 0x98ef, 0x633d, 0x6669, 0x756a,
+ 0x76e4, 0x78d0, 0x8543, 0x86ee, 0x532a, 0x5351, 0x5426, 0x5983,
+ 0x5e87, 0x5f7c, 0x60b2, 0x6249, 0x6279, 0x62ab, 0x6590, 0x6bd4,
+ 0x6ccc, 0x75b2, 0x76ae, 0x7891, 0x79d8, 0x7dcb, 0x7f77, 0x80a5,
+ 0x88ab, 0x8ab9, 0x8cbb, 0x907f, 0x975e, 0x98db, 0x6a0b, 0x7c38,
+ 0x5099, 0x5c3e, 0x5fae, 0x6787, 0x6bd8, 0x7435, 0x7709, 0x7f8e,
+ 0x9f3b, 0x67ca, 0x7a17, 0x5339, 0x758b, 0x9aed, 0x5f66, 0x819d,
+ 0x83f1, 0x8098, 0x5f3c, 0x5fc5, 0x7562, 0x7b46, 0x903c, 0x6867,
+ 0x59eb, 0x5a9b, 0x7d10, 0x767e, 0x8b2c, 0x4ff5, 0x5f6a, 0x6a19,
+ 0x6c37, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8a55, 0x8c79, 0x5edf,
+ 0x63cf, 0x75c5, 0x79d2, 0x82d7, 0x9328, 0x92f2, 0x849c, 0x86ed,
+ 0x9c2d, 0x54c1, 0x5f6c, 0x658c, 0x6d5c, 0x7015, 0x8ca7, 0x8cd3,
+ 0x983b, 0x654f, 0x74f6, 0x4e0d, 0x4ed8, 0x57e0, 0x592b, 0x5a66,
+ 0x5bcc, 0x51a8, 0x5e03, 0x5e9c, 0x6016, 0x6276, 0x6577, 0x65a7,
+ 0x666e, 0x6d6e, 0x7236, 0x7b26, 0x8150, 0x819a, 0x8299, 0x8b5c,
+ 0x8ca0, 0x8ce6, 0x8d74, 0x961c, 0x9644, 0x4fae, 0x64ab, 0x6b66,
+ 0x821e, 0x8461, 0x856a, 0x90e8, 0x5c01, 0x6953, 0x98a8, 0x847a,
+ 0x8557, 0x4f0f, 0x526f, 0x5fa9, 0x5e45, 0x670d, 0x798f, 0x8179,
+ 0x8907, 0x8986, 0x6df5, 0x5f17, 0x6255, 0x6cb8, 0x4ecf, 0x7269,
+ 0x9b92, 0x5206, 0x543b, 0x5674, 0x58b3, 0x61a4, 0x626e, 0x711a,
+ 0x596e, 0x7c89, 0x7cde, 0x7d1b, 0x96f0, 0x6587, 0x805e, 0x4e19,
+ 0x4f75, 0x5175, 0x5840, 0x5e63, 0x5e73, 0x5f0a, 0x67c4, 0x4e26,
+ 0x853d, 0x9589, 0x965b, 0x7c73, 0x9801, 0x50fb, 0x58c1, 0x7656,
+ 0x78a7, 0x5225, 0x77a5, 0x8511, 0x7b86, 0x504f, 0x5909, 0x7247,
+ 0x7bc7, 0x7de8, 0x8fba, 0x8fd4, 0x904d, 0x4fbf, 0x52c9, 0x5a29,
+ 0x5f01, 0x97ad, 0x4fdd, 0x8217, 0x92ea, 0x5703, 0x6355, 0x6b69,
+ 0x752b, 0x88dc, 0x8f14, 0x7a42, 0x52df, 0x5893, 0x6155, 0x620a,
+ 0x66ae, 0x6bcd, 0x7c3f, 0x83e9, 0x5023, 0x4ff8, 0x5305, 0x5446,
+ 0x5831, 0x5949, 0x5b9d, 0x5cf0, 0x5cef, 0x5d29, 0x5e96, 0x62b1,
+ 0x6367, 0x653e, 0x65b9, 0x670b, 0x6cd5, 0x6ce1, 0x70f9, 0x7832,
+ 0x7e2b, 0x80de, 0x82b3, 0x840c, 0x84ec, 0x8702, 0x8912, 0x8a2a,
+ 0x8c4a, 0x90a6, 0x92d2, 0x98fd, 0x9cf3, 0x9d6c, 0x4e4f, 0x4ea1,
+ 0x508d, 0x5256, 0x574a, 0x59a8, 0x5e3d, 0x5fd8, 0x5fd9, 0x623f,
+ 0x66b4, 0x671b, 0x67d0, 0x68d2, 0x5192, 0x7d21, 0x80aa, 0x81a8,
+ 0x8b00, 0x8c8c, 0x8cbf, 0x927e, 0x9632, 0x5420, 0x982c, 0x5317,
+ 0x50d5, 0x535c, 0x58a8, 0x64b2, 0x6734, 0x7267, 0x7766, 0x7a46,
+ 0x91e6, 0x52c3, 0x6ca1, 0x6b86, 0x5800, 0x5e4c, 0x5954, 0x672c,
+ 0x7ffb, 0x51e1, 0x76c6, 0x6469, 0x78e8, 0x9b54, 0x9ebb, 0x57cb,
+ 0x59b9, 0x6627, 0x679a, 0x6bce, 0x54e9, 0x69d9, 0x5e55, 0x819c,
+ 0x6795, 0x9baa, 0x67fe, 0x9c52, 0x685d, 0x4ea6, 0x4fe3, 0x53c8,
+ 0x62b9, 0x672b, 0x6cab, 0x8fc4, 0x4fad, 0x7e6d, 0x9ebf, 0x4e07,
+ 0x6162, 0x6e80, 0x6f2b, 0x8513, 0x5473, 0x672a, 0x9b45, 0x5df3,
+ 0x7b95, 0x5cac, 0x5bc6, 0x871c, 0x6e4a, 0x84d1, 0x7a14, 0x8108,
+ 0x5999, 0x7c8d, 0x6c11, 0x7720, 0x52d9, 0x5922, 0x7121, 0x725f,
+ 0x77db, 0x9727, 0x9d61, 0x690b, 0x5a7f, 0x5a18, 0x51a5, 0x540d,
+ 0x547d, 0x660e, 0x76df, 0x8ff7, 0x9298, 0x9cf4, 0x59ea, 0x725d,
+ 0x6ec5, 0x514d, 0x68c9, 0x7dbf, 0x7dec, 0x9762, 0x9eba, 0x6478,
+ 0x6a21, 0x8302, 0x5984, 0x5b5f, 0x6bdb, 0x731b, 0x76f2, 0x7db2,
+ 0x8017, 0x8499, 0x5132, 0x6728, 0x9ed9, 0x76ee, 0x6762, 0x52ff,
+ 0x9905, 0x5c24, 0x623b, 0x7c7e, 0x8cb0, 0x554f, 0x60b6, 0x7d0b,
+ 0x9580, 0x5301, 0x4e5f, 0x51b6, 0x591c, 0x723a, 0x8036, 0x91ce,
+ 0x5f25, 0x77e2, 0x5384, 0x5f79, 0x7d04, 0x85ac, 0x8a33, 0x8e8d,
+ 0x9756, 0x67f3, 0x85ae, 0x9453, 0x6109, 0x6108, 0x6cb9, 0x7652,
+ 0x8aed, 0x8f38, 0x552f, 0x4f51, 0x512a, 0x52c7, 0x53cb, 0x5ba5,
+ 0x5e7d, 0x60a0, 0x6182, 0x63d6, 0x6709, 0x67da, 0x6e67, 0x6d8c,
+ 0x7336, 0x7337, 0x7531, 0x7950, 0x88d5, 0x8a98, 0x904a, 0x9091,
+ 0x90f5, 0x96c4, 0x878d, 0x5915, 0x4e88, 0x4f59, 0x4e0e, 0x8a89,
+ 0x8f3f, 0x9810, 0x50ad, 0x5e7c, 0x5996, 0x5bb9, 0x5eb8, 0x63da,
+ 0x63fa, 0x64c1, 0x66dc, 0x694a, 0x69d8, 0x6d0b, 0x6eb6, 0x7194,
+ 0x7528, 0x7aaf, 0x7f8a, 0x8000, 0x8449, 0x84c9, 0x8981, 0x8b21,
+ 0x8e0a, 0x9065, 0x967d, 0x990a, 0x617e, 0x6291, 0x6b32, 0x6c83,
+ 0x6d74, 0x7fcc, 0x7ffc, 0x6dc0, 0x7f85, 0x87ba, 0x88f8, 0x6765,
+ 0x83b1, 0x983c, 0x96f7, 0x6d1b, 0x7d61, 0x843d, 0x916a, 0x4e71,
+ 0x5375, 0x5d50, 0x6b04, 0x6feb, 0x85cd, 0x862d, 0x89a7, 0x5229,
+ 0x540f, 0x5c65, 0x674e, 0x68a8, 0x7406, 0x7483, 0x75e2, 0x88cf,
+ 0x88e1, 0x91cc, 0x96e2, 0x9678, 0x5f8b, 0x7387, 0x7acb, 0x844e,
+ 0x63a0, 0x7565, 0x5289, 0x6d41, 0x6e9c, 0x7409, 0x7559, 0x786b,
+ 0x7c92, 0x9686, 0x7adc, 0x9f8d, 0x4fb6, 0x616e, 0x65c5, 0x865c,
+ 0x4e86, 0x4eae, 0x50da, 0x4e21, 0x51cc, 0x5bee, 0x6599, 0x6881,
+ 0x6dbc, 0x731f, 0x7642, 0x77ad, 0x7a1c, 0x7ce7, 0x826f, 0x8ad2,
+ 0x907c, 0x91cf, 0x9675, 0x9818, 0x529b, 0x7dd1, 0x502b, 0x5398,
+ 0x6797, 0x6dcb, 0x71d0, 0x7433, 0x81e8, 0x8f2a, 0x96a3, 0x9c57,
+ 0x9e9f, 0x7460, 0x5841, 0x6d99, 0x7d2f, 0x985e, 0x4ee4, 0x4f36,
+ 0x4f8b, 0x51b7, 0x52b1, 0x5dba, 0x601c, 0x73b2, 0x793c, 0x82d3,
+ 0x9234, 0x96b7, 0x96f6, 0x970a, 0x9e97, 0x9f62, 0x66a6, 0x6b74,
+ 0x5217, 0x52a3, 0x70c8, 0x88c2, 0x5ec9, 0x604b, 0x6190, 0x6f23,
+ 0x7149, 0x7c3e, 0x7df4, 0x806f, 0x84ee, 0x9023, 0x932c, 0x5442,
+ 0x9b6f, 0x6ad3, 0x7089, 0x8cc2, 0x8def, 0x9732, 0x52b4, 0x5a41,
+ 0x5eca, 0x5f04, 0x6717, 0x697c, 0x6994, 0x6d6a, 0x6f0f, 0x7262,
+ 0x72fc, 0x7bed, 0x8001, 0x807e, 0x874b, 0x90ce, 0x516d, 0x9e93,
+ 0x7984, 0x808b, 0x9332, 0x8ad6, 0x502d, 0x548c, 0x8a71, 0x6b6a,
+ 0x8cc4, 0x8107, 0x60d1, 0x67a0, 0x9df2, 0x4e99, 0x4e98, 0x9c10,
+ 0x8a6b, 0x85c1, 0x8568, 0x6900, 0x6e7e, 0x7897, 0x8155, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5f0c, 0x4e10, 0x4e15, 0x4e2a, 0x4e31, 0x4e36,
+ 0x4e3c, 0x4e3f, 0x4e42, 0x4e56, 0x4e58, 0x4e82, 0x4e85, 0x8c6b,
+ 0x4e8a, 0x8212, 0x5f0d, 0x4e8e, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea2,
+ 0x4eb0, 0x4eb3, 0x4eb6, 0x4ece, 0x4ecd, 0x4ec4, 0x4ec6, 0x4ec2,
+ 0x4ed7, 0x4ede, 0x4eed, 0x4edf, 0x4ef7, 0x4f09, 0x4f5a, 0x4f30,
+ 0x4f5b, 0x4f5d, 0x4f57, 0x4f47, 0x4f76, 0x4f88, 0x4f8f, 0x4f98,
+ 0x4f7b, 0x4f69, 0x4f70, 0x4f91, 0x4f6f, 0x4f86, 0x4f96, 0x5118,
+ 0x4fd4, 0x4fdf, 0x4fce, 0x4fd8, 0x4fdb, 0x4fd1, 0x4fda, 0x4fd0,
+ 0x4fe4, 0x4fe5, 0x501a, 0x5028, 0x5014, 0x502a, 0x5025, 0x5005,
+ 0x4f1c, 0x4ff6, 0x5021, 0x5029, 0x502c, 0x4ffe, 0x4fef, 0x5011,
+ 0x5006, 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505a,
+ 0x5056, 0x506c, 0x5078, 0x5080, 0x509a, 0x5085, 0x50b4, 0x50b2,
+ 0x50c9, 0x50ca, 0x50b3, 0x50c2, 0x50d6, 0x50de, 0x50e5, 0x50ed,
+ 0x50e3, 0x50ee, 0x50f9, 0x50f5, 0x5109, 0x5101, 0x5102, 0x5116,
+ 0x5115, 0x5114, 0x511a, 0x5121, 0x513a, 0x5137, 0x513c, 0x513b,
+ 0x513f, 0x5140, 0x5152, 0x514c, 0x5154, 0x5162, 0x7af8, 0x5169,
+ 0x516a, 0x516e, 0x5180, 0x5182, 0x56d8, 0x518c, 0x5189, 0x518f,
+ 0x5191, 0x5193, 0x5195, 0x5196, 0x51a4, 0x51a6, 0x51a2, 0x51a9,
+ 0x51aa, 0x51ab, 0x51b3, 0x51b1, 0x51b2, 0x51b0, 0x51b5, 0x51bd,
+ 0x51c5, 0x51c9, 0x51db, 0x51e0, 0x8655, 0x51e9, 0x51ed, 0x51f0,
+ 0x51f5, 0x51fe, 0x5204, 0x520b, 0x5214, 0x520e, 0x5227, 0x522a,
+ 0x522e, 0x5233, 0x5239, 0x524f, 0x5244, 0x524b, 0x524c, 0x525e,
+ 0x5254, 0x526a, 0x5274, 0x5269, 0x5273, 0x527f, 0x527d, 0x528d,
+ 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8fa8, 0x8fa7, 0x52ac,
+ 0x52ad, 0x52bc, 0x52b5, 0x52c1, 0x52cd, 0x52d7, 0x52de, 0x52e3,
+ 0x52e6, 0x98ed, 0x52e0, 0x52f3, 0x52f5, 0x52f8, 0x52f9, 0x5306,
+ 0x5308, 0x7538, 0x530d, 0x5310, 0x530f, 0x5315, 0x531a, 0x5323,
+ 0x532f, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345, 0x4e17,
+ 0x5349, 0x534d, 0x51d6, 0x535e, 0x5369, 0x536e, 0x5918, 0x537b,
+ 0x5377, 0x5382, 0x5396, 0x53a0, 0x53a6, 0x53a5, 0x53ae, 0x53b0,
+ 0x53b6, 0x53c3, 0x7c12, 0x96d9, 0x53df, 0x66fc, 0x71ee, 0x53ee,
+ 0x53e8, 0x53ed, 0x53fa, 0x5401, 0x543d, 0x5440, 0x542c, 0x542d,
+ 0x543c, 0x542e, 0x5436, 0x5429, 0x541d, 0x544e, 0x548f, 0x5475,
+ 0x548e, 0x545f, 0x5471, 0x5477, 0x5470, 0x5492, 0x547b, 0x5480,
+ 0x5476, 0x5484, 0x5490, 0x5486, 0x54c7, 0x54a2, 0x54b8, 0x54a5,
+ 0x54ac, 0x54c4, 0x54c8, 0x54a8, 0x54ab, 0x54c2, 0x54a4, 0x54be,
+ 0x54bc, 0x54d8, 0x54e5, 0x54e6, 0x550f, 0x5514, 0x54fd, 0x54ee,
+ 0x54ed, 0x54fa, 0x54e2, 0x5539, 0x5540, 0x5563, 0x554c, 0x552e,
+ 0x555c, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555d, 0x5599,
+ 0x5580, 0x54af, 0x558a, 0x559f, 0x557b, 0x557e, 0x5598, 0x559e,
+ 0x55ae, 0x557c, 0x5583, 0x55a9, 0x5587, 0x55a8, 0x55da, 0x55c5,
+ 0x55df, 0x55c4, 0x55dc, 0x55e4, 0x55d4, 0x5614, 0x55f7, 0x5616,
+ 0x55fe, 0x55fd, 0x561b, 0x55f9, 0x564e, 0x5650, 0x71df, 0x5634,
+ 0x5636, 0x5632, 0x5638, 0x566b, 0x5664, 0x562f, 0x566c, 0x566a,
+ 0x5686, 0x5680, 0x568a, 0x56a0, 0x5694, 0x568f, 0x56a5, 0x56ae,
+ 0x56b6, 0x56b4, 0x56c2, 0x56bc, 0x56c1, 0x56c3, 0x56c0, 0x56c8,
+ 0x56ce, 0x56d1, 0x56d3, 0x56d7, 0x56ee, 0x56f9, 0x5700, 0x56ff,
+ 0x5704, 0x5709, 0x5708, 0x570b, 0x570d, 0x5713, 0x5718, 0x5716,
+ 0x55c7, 0x571c, 0x5726, 0x5737, 0x5738, 0x574e, 0x573b, 0x5740,
+ 0x574f, 0x5769, 0x57c0, 0x5788, 0x5761, 0x577f, 0x5789, 0x5793,
+ 0x57a0, 0x57b3, 0x57a4, 0x57aa, 0x57b0, 0x57c3, 0x57c6, 0x57d4,
+ 0x57d2, 0x57d3, 0x580a, 0x57d6, 0x57e3, 0x580b, 0x5819, 0x581d,
+ 0x5872, 0x5821, 0x5862, 0x584b, 0x5870, 0x6bc0, 0x5852, 0x583d,
+ 0x5879, 0x5885, 0x58b9, 0x589f, 0x58ab, 0x58ba, 0x58de, 0x58bb,
+ 0x58b8, 0x58ae, 0x58c5, 0x58d3, 0x58d1, 0x58d7, 0x58d9, 0x58d8,
+ 0x58e5, 0x58dc, 0x58e4, 0x58df, 0x58ef, 0x58fa, 0x58f9, 0x58fb,
+ 0x58fc, 0x58fd, 0x5902, 0x590a, 0x5910, 0x591b, 0x68a6, 0x5925,
+ 0x592c, 0x592d, 0x5932, 0x5938, 0x593e, 0x7ad2, 0x5955, 0x5950,
+ 0x594e, 0x595a, 0x5958, 0x5962, 0x5960, 0x5967, 0x596c, 0x5969,
+ 0x5978, 0x5981, 0x599d, 0x4f5e, 0x4fab, 0x59a3, 0x59b2, 0x59c6,
+ 0x59e8, 0x59dc, 0x598d, 0x59d9, 0x59da, 0x5a25, 0x5a1f, 0x5a11,
+ 0x5a1c, 0x5a09, 0x5a1a, 0x5a40, 0x5a6c, 0x5a49, 0x5a35, 0x5a36,
+ 0x5a62, 0x5a6a, 0x5a9a, 0x5abc, 0x5abe, 0x5acb, 0x5ac2, 0x5abd,
+ 0x5ae3, 0x5ad7, 0x5ae6, 0x5ae9, 0x5ad6, 0x5afa, 0x5afb, 0x5b0c,
+ 0x5b0b, 0x5b16, 0x5b32, 0x5ad0, 0x5b2a, 0x5b36, 0x5b3e, 0x5b43,
+ 0x5b45, 0x5b40, 0x5b51, 0x5b55, 0x5b5a, 0x5b5b, 0x5b65, 0x5b69,
+ 0x5b70, 0x5b73, 0x5b75, 0x5b78, 0x6588, 0x5b7a, 0x5b80, 0x5b83,
+ 0x5ba6, 0x5bb8, 0x5bc3, 0x5bc7, 0x5bc9, 0x5bd4, 0x5bd0, 0x5be4,
+ 0x5be6, 0x5be2, 0x5bde, 0x5be5, 0x5beb, 0x5bf0, 0x5bf6, 0x5bf3,
+ 0x5c05, 0x5c07, 0x5c08, 0x5c0d, 0x5c13, 0x5c20, 0x5c22, 0x5c28,
+ 0x5c38, 0x5c39, 0x5c41, 0x5c46, 0x5c4e, 0x5c53, 0x5c50, 0x5c4f,
+ 0x5b71, 0x5c6c, 0x5c6e, 0x4e62, 0x5c76, 0x5c79, 0x5c8c, 0x5c91,
+ 0x5c94, 0x599b, 0x5cab, 0x5cbb, 0x5cb6, 0x5cbc, 0x5cb7, 0x5cc5,
+ 0x5cbe, 0x5cc7, 0x5cd9, 0x5ce9, 0x5cfd, 0x5cfa, 0x5ced, 0x5d8c,
+ 0x5cea, 0x5d0b, 0x5d15, 0x5d17, 0x5d5c, 0x5d1f, 0x5d1b, 0x5d11,
+ 0x5d14, 0x5d22, 0x5d1a, 0x5d19, 0x5d18, 0x5d4c, 0x5d52, 0x5d4e,
+ 0x5d4b, 0x5d6c, 0x5d73, 0x5d76, 0x5d87, 0x5d84, 0x5d82, 0x5da2,
+ 0x5d9d, 0x5dac, 0x5dae, 0x5dbd, 0x5d90, 0x5db7, 0x5dbc, 0x5dc9,
+ 0x5dcd, 0x5dd3, 0x5dd2, 0x5dd6, 0x5ddb, 0x5deb, 0x5df2, 0x5df5,
+ 0x5e0b, 0x5e1a, 0x5e19, 0x5e11, 0x5e1b, 0x5e36, 0x5e37, 0x5e44,
+ 0x5e43, 0x5e40, 0x5e4e, 0x5e57, 0x5e54, 0x5e5f, 0x5e62, 0x5e64,
+ 0x5e47, 0x5e75, 0x5e76, 0x5e7a, 0x9ebc, 0x5e7f, 0x5ea0, 0x5ec1,
+ 0x5ec2, 0x5ec8, 0x5ed0, 0x5ecf, 0x5ed6, 0x5ee3, 0x5edd, 0x5eda,
+ 0x5edb, 0x5ee2, 0x5ee1, 0x5ee8, 0x5ee9, 0x5eec, 0x5ef1, 0x5ef3,
+ 0x5ef0, 0x5ef4, 0x5ef8, 0x5efe, 0x5f03, 0x5f09, 0x5f5d, 0x5f5c,
+ 0x5f0b, 0x5f11, 0x5f16, 0x5f29, 0x5f2d, 0x5f38, 0x5f41, 0x5f48,
+ 0x5f4c, 0x5f4e, 0x5f2f, 0x5f51, 0x5f56, 0x5f57, 0x5f59, 0x5f61,
+ 0x5f6d, 0x5f73, 0x5f77, 0x5f83, 0x5f82, 0x5f7f, 0x5f8a, 0x5f88,
+ 0x5f91, 0x5f87, 0x5f9e, 0x5f99, 0x5f98, 0x5fa0, 0x5fa8, 0x5fad,
+ 0x5fbc, 0x5fd6, 0x5ffb, 0x5fe4, 0x5ff8, 0x5ff1, 0x5fdd, 0x60b3,
+ 0x5fff, 0x6021, 0x6060, 0x6019, 0x6010, 0x6029, 0x600e, 0x6031,
+ 0x601b, 0x6015, 0x602b, 0x6026, 0x600f, 0x603a, 0x605a, 0x6041,
+ 0x606a, 0x6077, 0x605f, 0x604a, 0x6046, 0x604d, 0x6063, 0x6043,
+ 0x6064, 0x6042, 0x606c, 0x606b, 0x6059, 0x6081, 0x608d, 0x60e7,
+ 0x6083, 0x609a, 0x6084, 0x609b, 0x6096, 0x6097, 0x6092, 0x60a7,
+ 0x608b, 0x60e1, 0x60b8, 0x60e0, 0x60d3, 0x60b4, 0x5ff0, 0x60bd,
+ 0x60c6, 0x60b5, 0x60d8, 0x614d, 0x6115, 0x6106, 0x60f6, 0x60f7,
+ 0x6100, 0x60f4, 0x60fa, 0x6103, 0x6121, 0x60fb, 0x60f1, 0x610d,
+ 0x610e, 0x6147, 0x613e, 0x6128, 0x6127, 0x614a, 0x613f, 0x613c,
+ 0x612c, 0x6134, 0x613d, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158,
+ 0x6159, 0x615a, 0x616b, 0x6174, 0x616f, 0x6165, 0x6171, 0x615f,
+ 0x615d, 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61ac, 0x6194,
+ 0x619a, 0x618a, 0x6191, 0x61ab, 0x61ae, 0x61cc, 0x61ca, 0x61c9,
+ 0x61f7, 0x61c8, 0x61c3, 0x61c6, 0x61ba, 0x61cb, 0x7f79, 0x61cd,
+ 0x61e6, 0x61e3, 0x61f6, 0x61fa, 0x61f4, 0x61ff, 0x61fd, 0x61fc,
+ 0x61fe, 0x6200, 0x6208, 0x6209, 0x620d, 0x620c, 0x6214, 0x621b,
+ 0x621e, 0x6221, 0x622a, 0x622e, 0x6230, 0x6232, 0x6233, 0x6241,
+ 0x624e, 0x625e, 0x6263, 0x625b, 0x6260, 0x6268, 0x627c, 0x6282,
+ 0x6289, 0x627e, 0x6292, 0x6293, 0x6296, 0x62d4, 0x6283, 0x6294,
+ 0x62d7, 0x62d1, 0x62bb, 0x62cf, 0x62ff, 0x62c6, 0x64d4, 0x62c8,
+ 0x62dc, 0x62cc, 0x62ca, 0x62c2, 0x62c7, 0x629b, 0x62c9, 0x630c,
+ 0x62ee, 0x62f1, 0x6327, 0x6302, 0x6308, 0x62ef, 0x62f5, 0x6350,
+ 0x633e, 0x634d, 0x641c, 0x634f, 0x6396, 0x638e, 0x6380, 0x63ab,
+ 0x6376, 0x63a3, 0x638f, 0x6389, 0x639f, 0x63b5, 0x636b, 0x6369,
+ 0x63be, 0x63e9, 0x63c0, 0x63c6, 0x63e3, 0x63c9, 0x63d2, 0x63f6,
+ 0x63c4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651d,
+ 0x6417, 0x6428, 0x640f, 0x6467, 0x646f, 0x6476, 0x644e, 0x652a,
+ 0x6495, 0x6493, 0x64a5, 0x64a9, 0x6488, 0x64bc, 0x64da, 0x64d2,
+ 0x64c5, 0x64c7, 0x64bb, 0x64d8, 0x64c2, 0x64f1, 0x64e7, 0x8209,
+ 0x64e0, 0x64e1, 0x62ac, 0x64e3, 0x64ef, 0x652c, 0x64f6, 0x64f4,
+ 0x64f2, 0x64fa, 0x6500, 0x64fd, 0x6518, 0x651c, 0x6505, 0x6524,
+ 0x6523, 0x652b, 0x6534, 0x6535, 0x6537, 0x6536, 0x6538, 0x754b,
+ 0x6548, 0x6556, 0x6555, 0x654d, 0x6558, 0x655e, 0x655d, 0x6572,
+ 0x6578, 0x6582, 0x6583, 0x8b8a, 0x659b, 0x659f, 0x65ab, 0x65b7,
+ 0x65c3, 0x65c6, 0x65c1, 0x65c4, 0x65cc, 0x65d2, 0x65db, 0x65d9,
+ 0x65e0, 0x65e1, 0x65f1, 0x6772, 0x660a, 0x6603, 0x65fb, 0x6773,
+ 0x6635, 0x6636, 0x6634, 0x661c, 0x664f, 0x6644, 0x6649, 0x6641,
+ 0x665e, 0x665d, 0x6664, 0x6667, 0x6668, 0x665f, 0x6662, 0x6670,
+ 0x6683, 0x6688, 0x668e, 0x6689, 0x6684, 0x6698, 0x669d, 0x66c1,
+ 0x66b9, 0x66c9, 0x66be, 0x66bc, 0x66c4, 0x66b8, 0x66d6, 0x66da,
+ 0x66e0, 0x663f, 0x66e6, 0x66e9, 0x66f0, 0x66f5, 0x66f7, 0x670f,
+ 0x6716, 0x671e, 0x6726, 0x6727, 0x9738, 0x672e, 0x673f, 0x6736,
+ 0x6741, 0x6738, 0x6737, 0x6746, 0x675e, 0x6760, 0x6759, 0x6763,
+ 0x6764, 0x6789, 0x6770, 0x67a9, 0x677c, 0x676a, 0x678c, 0x678b,
+ 0x67a6, 0x67a1, 0x6785, 0x67b7, 0x67ef, 0x67b4, 0x67ec, 0x67b3,
+ 0x67e9, 0x67b8, 0x67e4, 0x67de, 0x67dd, 0x67e2, 0x67ee, 0x67b9,
+ 0x67ce, 0x67c6, 0x67e7, 0x6a9c, 0x681e, 0x6846, 0x6829, 0x6840,
+ 0x684d, 0x6832, 0x684e, 0x68b3, 0x682b, 0x6859, 0x6863, 0x6877,
+ 0x687f, 0x689f, 0x688f, 0x68ad, 0x6894, 0x689d, 0x689b, 0x6883,
+ 0x6aae, 0x68b9, 0x6874, 0x68b5, 0x68a0, 0x68ba, 0x690f, 0x688d,
+ 0x687e, 0x6901, 0x68ca, 0x6908, 0x68d8, 0x6922, 0x6926, 0x68e1,
+ 0x690c, 0x68cd, 0x68d4, 0x68e7, 0x68d5, 0x6936, 0x6912, 0x6904,
+ 0x68d7, 0x68e3, 0x6925, 0x68f9, 0x68e0, 0x68ef, 0x6928, 0x692a,
+ 0x691a, 0x6923, 0x6921, 0x68c6, 0x6979, 0x6977, 0x695c, 0x6978,
+ 0x696b, 0x6954, 0x697e, 0x696e, 0x6939, 0x6974, 0x693d, 0x6959,
+ 0x6930, 0x6961, 0x695e, 0x695d, 0x6981, 0x696a, 0x69b2, 0x69ae,
+ 0x69d0, 0x69bf, 0x69c1, 0x69d3, 0x69be, 0x69ce, 0x5be8, 0x69ca,
+ 0x69dd, 0x69bb, 0x69c3, 0x69a7, 0x6a2e, 0x6991, 0x69a0, 0x699c,
+ 0x6995, 0x69b4, 0x69de, 0x69e8, 0x6a02, 0x6a1b, 0x69ff, 0x6b0a,
+ 0x69f9, 0x69f2, 0x69e7, 0x6a05, 0x69b1, 0x6a1e, 0x69ed, 0x6a14,
+ 0x69eb, 0x6a0a, 0x6a12, 0x6ac1, 0x6a23, 0x6a13, 0x6a44, 0x6a0c,
+ 0x6a72, 0x6a36, 0x6a78, 0x6a47, 0x6a62, 0x6a59, 0x6a66, 0x6a48,
+ 0x6a38, 0x6a22, 0x6a90, 0x6a8d, 0x6aa0, 0x6a84, 0x6aa2, 0x6aa3,
+ 0x6a97, 0x8617, 0x6abb, 0x6ac3, 0x6ac2, 0x6ab8, 0x6ab3, 0x6aac,
+ 0x6ade, 0x6ad1, 0x6adf, 0x6aaa, 0x6ada, 0x6aea, 0x6afb, 0x6b05,
+ 0x8616, 0x6afa, 0x6b12, 0x6b16, 0x9b31, 0x6b1f, 0x6b38, 0x6b37,
+ 0x76dc, 0x6b39, 0x98ee, 0x6b47, 0x6b43, 0x6b49, 0x6b50, 0x6b59,
+ 0x6b54, 0x6b5b, 0x6b5f, 0x6b61, 0x6b78, 0x6b79, 0x6b7f, 0x6b80,
+ 0x6b84, 0x6b83, 0x6b8d, 0x6b98, 0x6b95, 0x6b9e, 0x6ba4, 0x6baa,
+ 0x6bab, 0x6baf, 0x6bb2, 0x6bb1, 0x6bb3, 0x6bb7, 0x6bbc, 0x6bc6,
+ 0x6bcb, 0x6bd3, 0x6bdf, 0x6bec, 0x6beb, 0x6bf3, 0x6bef, 0x9ebe,
+ 0x6c08, 0x6c13, 0x6c14, 0x6c1b, 0x6c24, 0x6c23, 0x6c5e, 0x6c55,
+ 0x6c62, 0x6c6a, 0x6c82, 0x6c8d, 0x6c9a, 0x6c81, 0x6c9b, 0x6c7e,
+ 0x6c68, 0x6c73, 0x6c92, 0x6c90, 0x6cc4, 0x6cf1, 0x6cd3, 0x6cbd,
+ 0x6cd7, 0x6cc5, 0x6cdd, 0x6cae, 0x6cb1, 0x6cbe, 0x6cba, 0x6cdb,
+ 0x6cef, 0x6cd9, 0x6cea, 0x6d1f, 0x884d, 0x6d36, 0x6d2b, 0x6d3d,
+ 0x6d38, 0x6d19, 0x6d35, 0x6d33, 0x6d12, 0x6d0c, 0x6d63, 0x6d93,
+ 0x6d64, 0x6d5a, 0x6d79, 0x6d59, 0x6d8e, 0x6d95, 0x6fe4, 0x6d85,
+ 0x6df9, 0x6e15, 0x6e0a, 0x6db5, 0x6dc7, 0x6de6, 0x6db8, 0x6dc6,
+ 0x6dec, 0x6dde, 0x6dcc, 0x6de8, 0x6dd2, 0x6dc5, 0x6dfa, 0x6dd9,
+ 0x6de4, 0x6dd5, 0x6dea, 0x6dee, 0x6e2d, 0x6e6e, 0x6e2e, 0x6e19,
+ 0x6e72, 0x6e5f, 0x6e3e, 0x6e23, 0x6e6b, 0x6e2b, 0x6e76, 0x6e4d,
+ 0x6e1f, 0x6e43, 0x6e3a, 0x6e4e, 0x6e24, 0x6eff, 0x6e1d, 0x6e38,
+ 0x6e82, 0x6eaa, 0x6e98, 0x6ec9, 0x6eb7, 0x6ed3, 0x6ebd, 0x6eaf,
+ 0x6ec4, 0x6eb2, 0x6ed4, 0x6ed5, 0x6e8f, 0x6ea5, 0x6ec2, 0x6e9f,
+ 0x6f41, 0x6f11, 0x704c, 0x6eec, 0x6ef8, 0x6efe, 0x6f3f, 0x6ef2,
+ 0x6f31, 0x6eef, 0x6f32, 0x6ecc, 0x6f3e, 0x6f13, 0x6ef7, 0x6f86,
+ 0x6f7a, 0x6f78, 0x6f81, 0x6f80, 0x6f6f, 0x6f5b, 0x6ff3, 0x6f6d,
+ 0x6f82, 0x6f7c, 0x6f58, 0x6f8e, 0x6f91, 0x6fc2, 0x6f66, 0x6fb3,
+ 0x6fa3, 0x6fa1, 0x6fa4, 0x6fb9, 0x6fc6, 0x6faa, 0x6fdf, 0x6fd5,
+ 0x6fec, 0x6fd4, 0x6fd8, 0x6ff1, 0x6fee, 0x6fdb, 0x7009, 0x700b,
+ 0x6ffa, 0x7011, 0x7001, 0x700f, 0x6ffe, 0x701b, 0x701a, 0x6f74,
+ 0x701d, 0x7018, 0x701f, 0x7030, 0x703e, 0x7032, 0x7051, 0x7063,
+ 0x7099, 0x7092, 0x70af, 0x70f1, 0x70ac, 0x70b8, 0x70b3, 0x70ae,
+ 0x70df, 0x70cb, 0x70dd, 0x70d9, 0x7109, 0x70fd, 0x711c, 0x7119,
+ 0x7165, 0x7155, 0x7188, 0x7166, 0x7162, 0x714c, 0x7156, 0x716c,
+ 0x718f, 0x71fb, 0x7184, 0x7195, 0x71a8, 0x71ac, 0x71d7, 0x71b9,
+ 0x71be, 0x71d2, 0x71c9, 0x71d4, 0x71ce, 0x71e0, 0x71ec, 0x71e7,
+ 0x71f5, 0x71fc, 0x71f9, 0x71ff, 0x720d, 0x7210, 0x721b, 0x7228,
+ 0x722d, 0x722c, 0x7230, 0x7232, 0x723b, 0x723c, 0x723f, 0x7240,
+ 0x7246, 0x724b, 0x7258, 0x7274, 0x727e, 0x7282, 0x7281, 0x7287,
+ 0x7292, 0x7296, 0x72a2, 0x72a7, 0x72b9, 0x72b2, 0x72c3, 0x72c6,
+ 0x72c4, 0x72ce, 0x72d2, 0x72e2, 0x72e0, 0x72e1, 0x72f9, 0x72f7,
+ 0x500f, 0x7317, 0x730a, 0x731c, 0x7316, 0x731d, 0x7334, 0x732f,
+ 0x7329, 0x7325, 0x733e, 0x734e, 0x734f, 0x9ed8, 0x7357, 0x736a,
+ 0x7368, 0x7370, 0x7378, 0x7375, 0x737b, 0x737a, 0x73c8, 0x73b3,
+ 0x73ce, 0x73bb, 0x73c0, 0x73e5, 0x73ee, 0x73de, 0x74a2, 0x7405,
+ 0x746f, 0x7425, 0x73f8, 0x7432, 0x743a, 0x7455, 0x743f, 0x745f,
+ 0x7459, 0x7441, 0x745c, 0x7469, 0x7470, 0x7463, 0x746a, 0x7476,
+ 0x747e, 0x748b, 0x749e, 0x74a7, 0x74ca, 0x74cf, 0x74d4, 0x73f1,
+ 0x74e0, 0x74e3, 0x74e7, 0x74e9, 0x74ee, 0x74f2, 0x74f0, 0x74f1,
+ 0x74f8, 0x74f7, 0x7504, 0x7503, 0x7505, 0x750c, 0x750e, 0x750d,
+ 0x7515, 0x7513, 0x751e, 0x7526, 0x752c, 0x753c, 0x7544, 0x754d,
+ 0x754a, 0x7549, 0x755b, 0x7546, 0x755a, 0x7569, 0x7564, 0x7567,
+ 0x756b, 0x756d, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758a,
+ 0x7589, 0x7582, 0x7594, 0x759a, 0x759d, 0x75a5, 0x75a3, 0x75c2,
+ 0x75b3, 0x75c3, 0x75b5, 0x75bd, 0x75b8, 0x75bc, 0x75b1, 0x75cd,
+ 0x75ca, 0x75d2, 0x75d9, 0x75e3, 0x75de, 0x75fe, 0x75ff, 0x75fc,
+ 0x7601, 0x75f0, 0x75fa, 0x75f2, 0x75f3, 0x760b, 0x760d, 0x7609,
+ 0x761f, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630,
+ 0x763b, 0x7647, 0x7648, 0x7646, 0x765c, 0x7658, 0x7661, 0x7662,
+ 0x7668, 0x7669, 0x766a, 0x7667, 0x766c, 0x7670, 0x7672, 0x7676,
+ 0x7678, 0x767c, 0x7680, 0x7683, 0x7688, 0x768b, 0x768e, 0x7696,
+ 0x7693, 0x7699, 0x769a, 0x76b0, 0x76b4, 0x76b8, 0x76b9, 0x76ba,
+ 0x76c2, 0x76cd, 0x76d6, 0x76d2, 0x76de, 0x76e1, 0x76e5, 0x76e7,
+ 0x76ea, 0x862f, 0x76fb, 0x7708, 0x7707, 0x7704, 0x7729, 0x7724,
+ 0x771e, 0x7725, 0x7726, 0x771b, 0x7737, 0x7738, 0x7747, 0x775a,
+ 0x7768, 0x776b, 0x775b, 0x7765, 0x777f, 0x777e, 0x7779, 0x778e,
+ 0x778b, 0x7791, 0x77a0, 0x779e, 0x77b0, 0x77b6, 0x77b9, 0x77bf,
+ 0x77bc, 0x77bd, 0x77bb, 0x77c7, 0x77cd, 0x77d7, 0x77da, 0x77dc,
+ 0x77e3, 0x77ee, 0x77fc, 0x780c, 0x7812, 0x7926, 0x7820, 0x792a,
+ 0x7845, 0x788e, 0x7874, 0x7886, 0x787c, 0x789a, 0x788c, 0x78a3,
+ 0x78b5, 0x78aa, 0x78af, 0x78d1, 0x78c6, 0x78cb, 0x78d4, 0x78be,
+ 0x78bc, 0x78c5, 0x78ca, 0x78ec, 0x78e7, 0x78da, 0x78fd, 0x78f4,
+ 0x7907, 0x7912, 0x7911, 0x7919, 0x792c, 0x792b, 0x7940, 0x7960,
+ 0x7957, 0x795f, 0x795a, 0x7955, 0x7953, 0x797a, 0x797f, 0x798a,
+ 0x799d, 0x79a7, 0x9f4b, 0x79aa, 0x79ae, 0x79b3, 0x79b9, 0x79ba,
+ 0x79c9, 0x79d5, 0x79e7, 0x79ec, 0x79e1, 0x79e3, 0x7a08, 0x7a0d,
+ 0x7a18, 0x7a19, 0x7a20, 0x7a1f, 0x7980, 0x7a31, 0x7a3b, 0x7a3e,
+ 0x7a37, 0x7a43, 0x7a57, 0x7a49, 0x7a61, 0x7a62, 0x7a69, 0x9f9d,
+ 0x7a70, 0x7a79, 0x7a7d, 0x7a88, 0x7a97, 0x7a95, 0x7a98, 0x7a96,
+ 0x7aa9, 0x7ac8, 0x7ab0, 0x7ab6, 0x7ac5, 0x7ac4, 0x7abf, 0x9083,
+ 0x7ac7, 0x7aca, 0x7acd, 0x7acf, 0x7ad5, 0x7ad3, 0x7ad9, 0x7ada,
+ 0x7add, 0x7ae1, 0x7ae2, 0x7ae6, 0x7aed, 0x7af0, 0x7b02, 0x7b0f,
+ 0x7b0a, 0x7b06, 0x7b33, 0x7b18, 0x7b19, 0x7b1e, 0x7b35, 0x7b28,
+ 0x7b36, 0x7b50, 0x7b7a, 0x7b04, 0x7b4d, 0x7b0b, 0x7b4c, 0x7b45,
+ 0x7b75, 0x7b65, 0x7b74, 0x7b67, 0x7b70, 0x7b71, 0x7b6c, 0x7b6e,
+ 0x7b9d, 0x7b98, 0x7b9f, 0x7b8d, 0x7b9c, 0x7b9a, 0x7b8b, 0x7b92,
+ 0x7b8f, 0x7b5d, 0x7b99, 0x7bcb, 0x7bc1, 0x7bcc, 0x7bcf, 0x7bb4,
+ 0x7bc6, 0x7bdd, 0x7be9, 0x7c11, 0x7c14, 0x7be6, 0x7be5, 0x7c60,
+ 0x7c00, 0x7c07, 0x7c13, 0x7bf3, 0x7bf7, 0x7c17, 0x7c0d, 0x7bf6,
+ 0x7c23, 0x7c27, 0x7c2a, 0x7c1f, 0x7c37, 0x7c2b, 0x7c3d, 0x7c4c,
+ 0x7c43, 0x7c54, 0x7c4f, 0x7c40, 0x7c50, 0x7c58, 0x7c5f, 0x7c64,
+ 0x7c56, 0x7c65, 0x7c6c, 0x7c75, 0x7c83, 0x7c90, 0x7ca4, 0x7cad,
+ 0x7ca2, 0x7cab, 0x7ca1, 0x7ca8, 0x7cb3, 0x7cb2, 0x7cb1, 0x7cae,
+ 0x7cb9, 0x7cbd, 0x7cc0, 0x7cc5, 0x7cc2, 0x7cd8, 0x7cd2, 0x7cdc,
+ 0x7ce2, 0x9b3b, 0x7cef, 0x7cf2, 0x7cf4, 0x7cf6, 0x7cfa, 0x7d06,
+ 0x7d02, 0x7d1c, 0x7d15, 0x7d0a, 0x7d45, 0x7d4b, 0x7d2e, 0x7d32,
+ 0x7d3f, 0x7d35, 0x7d46, 0x7d73, 0x7d56, 0x7d4e, 0x7d72, 0x7d68,
+ 0x7d6e, 0x7d4f, 0x7d63, 0x7d93, 0x7d89, 0x7d5b, 0x7d8f, 0x7d7d,
+ 0x7d9b, 0x7dba, 0x7dae, 0x7da3, 0x7db5, 0x7dc7, 0x7dbd, 0x7dab,
+ 0x7e3d, 0x7da2, 0x7daf, 0x7ddc, 0x7db8, 0x7d9f, 0x7db0, 0x7dd8,
+ 0x7ddd, 0x7de4, 0x7dde, 0x7dfb, 0x7df2, 0x7de1, 0x7e05, 0x7e0a,
+ 0x7e23, 0x7e21, 0x7e12, 0x7e31, 0x7e1f, 0x7e09, 0x7e0b, 0x7e22,
+ 0x7e46, 0x7e66, 0x7e3b, 0x7e35, 0x7e39, 0x7e43, 0x7e37, 0x7e32,
+ 0x7e3a, 0x7e67, 0x7e5d, 0x7e56, 0x7e5e, 0x7e59, 0x7e5a, 0x7e79,
+ 0x7e6a, 0x7e69, 0x7e7c, 0x7e7b, 0x7e83, 0x7dd5, 0x7e7d, 0x8fae,
+ 0x7e7f, 0x7e88, 0x7e89, 0x7e8c, 0x7e92, 0x7e90, 0x7e93, 0x7e94,
+ 0x7e96, 0x7e8e, 0x7e9b, 0x7e9c, 0x7f38, 0x7f3a, 0x7f45, 0x7f4c,
+ 0x7f4d, 0x7f4e, 0x7f50, 0x7f51, 0x7f55, 0x7f54, 0x7f58, 0x7f5f,
+ 0x7f60, 0x7f68, 0x7f69, 0x7f67, 0x7f78, 0x7f82, 0x7f86, 0x7f83,
+ 0x7f88, 0x7f87, 0x7f8c, 0x7f94, 0x7f9e, 0x7f9d, 0x7f9a, 0x7fa3,
+ 0x7faf, 0x7fb2, 0x7fb9, 0x7fae, 0x7fb6, 0x7fb8, 0x8b71, 0x7fc5,
+ 0x7fc6, 0x7fca, 0x7fd5, 0x7fd4, 0x7fe1, 0x7fe6, 0x7fe9, 0x7ff3,
+ 0x7ff9, 0x98dc, 0x8006, 0x8004, 0x800b, 0x8012, 0x8018, 0x8019,
+ 0x801c, 0x8021, 0x8028, 0x803f, 0x803b, 0x804a, 0x8046, 0x8052,
+ 0x8058, 0x805a, 0x805f, 0x8062, 0x8068, 0x8073, 0x8072, 0x8070,
+ 0x8076, 0x8079, 0x807d, 0x807f, 0x8084, 0x8086, 0x8085, 0x809b,
+ 0x8093, 0x809a, 0x80ad, 0x5190, 0x80ac, 0x80db, 0x80e5, 0x80d9,
+ 0x80dd, 0x80c4, 0x80da, 0x80d6, 0x8109, 0x80ef, 0x80f1, 0x811b,
+ 0x8129, 0x8123, 0x812f, 0x814b, 0x968b, 0x8146, 0x813e, 0x8153,
+ 0x8151, 0x80fc, 0x8171, 0x816e, 0x8165, 0x8166, 0x8174, 0x8183,
+ 0x8188, 0x818a, 0x8180, 0x8182, 0x81a0, 0x8195, 0x81a4, 0x81a3,
+ 0x815f, 0x8193, 0x81a9, 0x81b0, 0x81b5, 0x81be, 0x81b8, 0x81bd,
+ 0x81c0, 0x81c2, 0x81ba, 0x81c9, 0x81cd, 0x81d1, 0x81d9, 0x81d8,
+ 0x81c8, 0x81da, 0x81df, 0x81e0, 0x81e7, 0x81fa, 0x81fb, 0x81fe,
+ 0x8201, 0x8202, 0x8205, 0x8207, 0x820a, 0x820d, 0x8210, 0x8216,
+ 0x8229, 0x822b, 0x8238, 0x8233, 0x8240, 0x8259, 0x8258, 0x825d,
+ 0x825a, 0x825f, 0x8264, 0x8262, 0x8268, 0x826a, 0x826b, 0x822e,
+ 0x8271, 0x8277, 0x8278, 0x827e, 0x828d, 0x8292, 0x82ab, 0x829f,
+ 0x82bb, 0x82ac, 0x82e1, 0x82e3, 0x82df, 0x82d2, 0x82f4, 0x82f3,
+ 0x82fa, 0x8393, 0x8303, 0x82fb, 0x82f9, 0x82de, 0x8306, 0x82dc,
+ 0x8309, 0x82d9, 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340,
+ 0x8339, 0x8350, 0x8345, 0x832f, 0x832b, 0x8317, 0x8318, 0x8385,
+ 0x839a, 0x83aa, 0x839f, 0x83a2, 0x8396, 0x8323, 0x838e, 0x8387,
+ 0x838a, 0x837c, 0x83b5, 0x8373, 0x8375, 0x83a0, 0x8389, 0x83a8,
+ 0x83f4, 0x8413, 0x83eb, 0x83ce, 0x83fd, 0x8403, 0x83d8, 0x840b,
+ 0x83c1, 0x83f7, 0x8407, 0x83e0, 0x83f2, 0x840d, 0x8422, 0x8420,
+ 0x83bd, 0x8438, 0x8506, 0x83fb, 0x846d, 0x842a, 0x843c, 0x855a,
+ 0x8484, 0x8477, 0x846b, 0x84ad, 0x846e, 0x8482, 0x8469, 0x8446,
+ 0x842c, 0x846f, 0x8479, 0x8435, 0x84ca, 0x8462, 0x84b9, 0x84bf,
+ 0x849f, 0x84d9, 0x84cd, 0x84bb, 0x84da, 0x84d0, 0x84c1, 0x84c6,
+ 0x84d6, 0x84a1, 0x8521, 0x84ff, 0x84f4, 0x8517, 0x8518, 0x852c,
+ 0x851f, 0x8515, 0x8514, 0x84fc, 0x8540, 0x8563, 0x8558, 0x8548,
+ 0x8541, 0x8602, 0x854b, 0x8555, 0x8580, 0x85a4, 0x8588, 0x8591,
+ 0x858a, 0x85a8, 0x856d, 0x8594, 0x859b, 0x85ea, 0x8587, 0x859c,
+ 0x8577, 0x857e, 0x8590, 0x85c9, 0x85ba, 0x85cf, 0x85b9, 0x85d0,
+ 0x85d5, 0x85dd, 0x85e5, 0x85dc, 0x85f9, 0x860a, 0x8613, 0x860b,
+ 0x85fe, 0x85fa, 0x8606, 0x8622, 0x861a, 0x8630, 0x863f, 0x864d,
+ 0x4e55, 0x8654, 0x865f, 0x8667, 0x8671, 0x8693, 0x86a3, 0x86a9,
+ 0x86aa, 0x868b, 0x868c, 0x86b6, 0x86af, 0x86c4, 0x86c6, 0x86b0,
+ 0x86c9, 0x8823, 0x86ab, 0x86d4, 0x86de, 0x86e9, 0x86ec, 0x86df,
+ 0x86db, 0x86ef, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86fb,
+ 0x8711, 0x8709, 0x870d, 0x86f9, 0x870a, 0x8734, 0x873f, 0x8737,
+ 0x873b, 0x8725, 0x8729, 0x871a, 0x8760, 0x875f, 0x8778, 0x874c,
+ 0x874e, 0x8774, 0x8757, 0x8768, 0x876e, 0x8759, 0x8753, 0x8763,
+ 0x876a, 0x8805, 0x87a2, 0x879f, 0x8782, 0x87af, 0x87cb, 0x87bd,
+ 0x87c0, 0x87d0, 0x96d6, 0x87ab, 0x87c4, 0x87b3, 0x87c7, 0x87c6,
+ 0x87bb, 0x87ef, 0x87f2, 0x87e0, 0x880f, 0x880d, 0x87fe, 0x87f6,
+ 0x87f7, 0x880e, 0x87d2, 0x8811, 0x8816, 0x8815, 0x8822, 0x8821,
+ 0x8831, 0x8836, 0x8839, 0x8827, 0x883b, 0x8844, 0x8842, 0x8852,
+ 0x8859, 0x885e, 0x8862, 0x886b, 0x8881, 0x887e, 0x889e, 0x8875,
+ 0x887d, 0x88b5, 0x8872, 0x8882, 0x8897, 0x8892, 0x88ae, 0x8899,
+ 0x88a2, 0x888d, 0x88a4, 0x88b0, 0x88bf, 0x88b1, 0x88c3, 0x88c4,
+ 0x88d4, 0x88d8, 0x88d9, 0x88dd, 0x88f9, 0x8902, 0x88fc, 0x88f4,
+ 0x88e8, 0x88f2, 0x8904, 0x890c, 0x890a, 0x8913, 0x8943, 0x891e,
+ 0x8925, 0x892a, 0x892b, 0x8941, 0x8944, 0x893b, 0x8936, 0x8938,
+ 0x894c, 0x891d, 0x8960, 0x895e, 0x8966, 0x8964, 0x896d, 0x896a,
+ 0x896f, 0x8974, 0x8977, 0x897e, 0x8983, 0x8988, 0x898a, 0x8993,
+ 0x8998, 0x89a1, 0x89a9, 0x89a6, 0x89ac, 0x89af, 0x89b2, 0x89ba,
+ 0x89bd, 0x89bf, 0x89c0, 0x89da, 0x89dc, 0x89dd, 0x89e7, 0x89f4,
+ 0x89f8, 0x8a03, 0x8a16, 0x8a10, 0x8a0c, 0x8a1b, 0x8a1d, 0x8a25,
+ 0x8a36, 0x8a41, 0x8a5b, 0x8a52, 0x8a46, 0x8a48, 0x8a7c, 0x8a6d,
+ 0x8a6c, 0x8a62, 0x8a85, 0x8a82, 0x8a84, 0x8aa8, 0x8aa1, 0x8a91,
+ 0x8aa5, 0x8aa6, 0x8a9a, 0x8aa3, 0x8ac4, 0x8acd, 0x8ac2, 0x8ada,
+ 0x8aeb, 0x8af3, 0x8ae7, 0x8ae4, 0x8af1, 0x8b14, 0x8ae0, 0x8ae2,
+ 0x8af7, 0x8ade, 0x8adb, 0x8b0c, 0x8b07, 0x8b1a, 0x8ae1, 0x8b16,
+ 0x8b10, 0x8b17, 0x8b20, 0x8b33, 0x97ab, 0x8b26, 0x8b2b, 0x8b3e,
+ 0x8b28, 0x8b41, 0x8b4c, 0x8b4f, 0x8b4e, 0x8b49, 0x8b56, 0x8b5b,
+ 0x8b5a, 0x8b6b, 0x8b5f, 0x8b6c, 0x8b6f, 0x8b74, 0x8b7d, 0x8b80,
+ 0x8b8c, 0x8b8e, 0x8b92, 0x8b93, 0x8b96, 0x8b99, 0x8b9a, 0x8c3a,
+ 0x8c41, 0x8c3f, 0x8c48, 0x8c4c, 0x8c4e, 0x8c50, 0x8c55, 0x8c62,
+ 0x8c6c, 0x8c78, 0x8c7a, 0x8c82, 0x8c89, 0x8c85, 0x8c8a, 0x8c8d,
+ 0x8c8e, 0x8c94, 0x8c7c, 0x8c98, 0x621d, 0x8cad, 0x8caa, 0x8cbd,
+ 0x8cb2, 0x8cb3, 0x8cae, 0x8cb6, 0x8cc8, 0x8cc1, 0x8ce4, 0x8ce3,
+ 0x8cda, 0x8cfd, 0x8cfa, 0x8cfb, 0x8d04, 0x8d05, 0x8d0a, 0x8d07,
+ 0x8d0f, 0x8d0d, 0x8d10, 0x9f4e, 0x8d13, 0x8ccd, 0x8d14, 0x8d16,
+ 0x8d67, 0x8d6d, 0x8d71, 0x8d73, 0x8d81, 0x8d99, 0x8dc2, 0x8dbe,
+ 0x8dba, 0x8dcf, 0x8dda, 0x8dd6, 0x8dcc, 0x8ddb, 0x8dcb, 0x8dea,
+ 0x8deb, 0x8ddf, 0x8de3, 0x8dfc, 0x8e08, 0x8e09, 0x8dff, 0x8e1d,
+ 0x8e1e, 0x8e10, 0x8e1f, 0x8e42, 0x8e35, 0x8e30, 0x8e34, 0x8e4a,
+ 0x8e47, 0x8e49, 0x8e4c, 0x8e50, 0x8e48, 0x8e59, 0x8e64, 0x8e60,
+ 0x8e2a, 0x8e63, 0x8e55, 0x8e76, 0x8e72, 0x8e7c, 0x8e81, 0x8e87,
+ 0x8e85, 0x8e84, 0x8e8b, 0x8e8a, 0x8e93, 0x8e91, 0x8e94, 0x8e99,
+ 0x8eaa, 0x8ea1, 0x8eac, 0x8eb0, 0x8ec6, 0x8eb1, 0x8ebe, 0x8ec5,
+ 0x8ec8, 0x8ecb, 0x8edb, 0x8ee3, 0x8efc, 0x8efb, 0x8eeb, 0x8efe,
+ 0x8f0a, 0x8f05, 0x8f15, 0x8f12, 0x8f19, 0x8f13, 0x8f1c, 0x8f1f,
+ 0x8f1b, 0x8f0c, 0x8f26, 0x8f33, 0x8f3b, 0x8f39, 0x8f45, 0x8f42,
+ 0x8f3e, 0x8f4c, 0x8f49, 0x8f46, 0x8f4e, 0x8f57, 0x8f5c, 0x8f62,
+ 0x8f63, 0x8f64, 0x8f9c, 0x8f9f, 0x8fa3, 0x8fad, 0x8faf, 0x8fb7,
+ 0x8fda, 0x8fe5, 0x8fe2, 0x8fea, 0x8fef, 0x9087, 0x8ff4, 0x9005,
+ 0x8ff9, 0x8ffa, 0x9011, 0x9015, 0x9021, 0x900d, 0x901e, 0x9016,
+ 0x900b, 0x9027, 0x9036, 0x9035, 0x9039, 0x8ff8, 0x904f, 0x9050,
+ 0x9051, 0x9052, 0x900e, 0x9049, 0x903e, 0x9056, 0x9058, 0x905e,
+ 0x9068, 0x906f, 0x9076, 0x96a8, 0x9072, 0x9082, 0x907d, 0x9081,
+ 0x9080, 0x908a, 0x9089, 0x908f, 0x90a8, 0x90af, 0x90b1, 0x90b5,
+ 0x90e2, 0x90e4, 0x6248, 0x90db, 0x9102, 0x9112, 0x9119, 0x9132,
+ 0x9130, 0x914a, 0x9156, 0x9158, 0x9163, 0x9165, 0x9169, 0x9173,
+ 0x9172, 0x918b, 0x9189, 0x9182, 0x91a2, 0x91ab, 0x91af, 0x91aa,
+ 0x91b5, 0x91b4, 0x91ba, 0x91c0, 0x91c1, 0x91c9, 0x91cb, 0x91d0,
+ 0x91d6, 0x91df, 0x91e1, 0x91db, 0x91fc, 0x91f5, 0x91f6, 0x921e,
+ 0x91ff, 0x9214, 0x922c, 0x9215, 0x9211, 0x925e, 0x9257, 0x9245,
+ 0x9249, 0x9264, 0x9248, 0x9295, 0x923f, 0x924b, 0x9250, 0x929c,
+ 0x9296, 0x9293, 0x929b, 0x925a, 0x92cf, 0x92b9, 0x92b7, 0x92e9,
+ 0x930f, 0x92fa, 0x9344, 0x932e, 0x9319, 0x9322, 0x931a, 0x9323,
+ 0x933a, 0x9335, 0x933b, 0x935c, 0x9360, 0x937c, 0x936e, 0x9356,
+ 0x93b0, 0x93ac, 0x93ad, 0x9394, 0x93b9, 0x93d6, 0x93d7, 0x93e8,
+ 0x93e5, 0x93d8, 0x93c3, 0x93dd, 0x93d0, 0x93c8, 0x93e4, 0x941a,
+ 0x9414, 0x9413, 0x9403, 0x9407, 0x9410, 0x9436, 0x942b, 0x9435,
+ 0x9421, 0x943a, 0x9441, 0x9452, 0x9444, 0x945b, 0x9460, 0x9462,
+ 0x945e, 0x946a, 0x9229, 0x9470, 0x9475, 0x9477, 0x947d, 0x945a,
+ 0x947c, 0x947e, 0x9481, 0x947f, 0x9582, 0x9587, 0x958a, 0x9594,
+ 0x9596, 0x9598, 0x9599, 0x95a0, 0x95a8, 0x95a7, 0x95ad, 0x95bc,
+ 0x95bb, 0x95b9, 0x95be, 0x95ca, 0x6ff6, 0x95c3, 0x95cd, 0x95cc,
+ 0x95d5, 0x95d4, 0x95d6, 0x95dc, 0x95e1, 0x95e5, 0x95e2, 0x9621,
+ 0x9628, 0x962e, 0x962f, 0x9642, 0x964c, 0x964f, 0x964b, 0x9677,
+ 0x965c, 0x965e, 0x965d, 0x965f, 0x9666, 0x9672, 0x966c, 0x968d,
+ 0x9698, 0x9695, 0x9697, 0x96aa, 0x96a7, 0x96b1, 0x96b2, 0x96b0,
+ 0x96b4, 0x96b6, 0x96b8, 0x96b9, 0x96ce, 0x96cb, 0x96c9, 0x96cd,
+ 0x894d, 0x96dc, 0x970d, 0x96d5, 0x96f9, 0x9704, 0x9706, 0x9708,
+ 0x9713, 0x970e, 0x9711, 0x970f, 0x9716, 0x9719, 0x9724, 0x972a,
+ 0x9730, 0x9739, 0x973d, 0x973e, 0x9744, 0x9746, 0x9748, 0x9742,
+ 0x9749, 0x975c, 0x9760, 0x9764, 0x9766, 0x9768, 0x52d2, 0x976b,
+ 0x9771, 0x9779, 0x9785, 0x977c, 0x9781, 0x977a, 0x9786, 0x978b,
+ 0x978f, 0x9790, 0x979c, 0x97a8, 0x97a6, 0x97a3, 0x97b3, 0x97b4,
+ 0x97c3, 0x97c6, 0x97c8, 0x97cb, 0x97dc, 0x97ed, 0x9f4f, 0x97f2,
+ 0x7adf, 0x97f6, 0x97f5, 0x980f, 0x980c, 0x9838, 0x9824, 0x9821,
+ 0x9837, 0x983d, 0x9846, 0x984f, 0x984b, 0x986b, 0x986f, 0x9870,
+ 0x9871, 0x9874, 0x9873, 0x98aa, 0x98af, 0x98b1, 0x98b6, 0x98c4,
+ 0x98c3, 0x98c6, 0x98e9, 0x98eb, 0x9903, 0x9909, 0x9912, 0x9914,
+ 0x9918, 0x9921, 0x991d, 0x991e, 0x9924, 0x9920, 0x992c, 0x992e,
+ 0x993d, 0x993e, 0x9942, 0x9949, 0x9945, 0x9950, 0x994b, 0x9951,
+ 0x9952, 0x994c, 0x9955, 0x9997, 0x9998, 0x99a5, 0x99ad, 0x99ae,
+ 0x99bc, 0x99df, 0x99db, 0x99dd, 0x99d8, 0x99d1, 0x99ed, 0x99ee,
+ 0x99f1, 0x99f2, 0x99fb, 0x99f8, 0x9a01, 0x9a0f, 0x9a05, 0x99e2,
+ 0x9a19, 0x9a2b, 0x9a37, 0x9a45, 0x9a42, 0x9a40, 0x9a43, 0x9a3e,
+ 0x9a55, 0x9a4d, 0x9a5b, 0x9a57, 0x9a5f, 0x9a62, 0x9a65, 0x9a64,
+ 0x9a69, 0x9a6b, 0x9a6a, 0x9aad, 0x9ab0, 0x9abc, 0x9ac0, 0x9acf,
+ 0x9ad1, 0x9ad3, 0x9ad4, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3, 0x9ae6,
+ 0x9aef, 0x9aeb, 0x9aee, 0x9af4, 0x9af1, 0x9af7, 0x9afb, 0x9b06,
+ 0x9b18, 0x9b1a, 0x9b1f, 0x9b22, 0x9b23, 0x9b25, 0x9b27, 0x9b28,
+ 0x9b29, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b32, 0x9b44, 0x9b43, 0x9b4f,
+ 0x9b4d, 0x9b4e, 0x9b51, 0x9b58, 0x9b74, 0x9b93, 0x9b83, 0x9b91,
+ 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8, 0x9bb4, 0x9bc0, 0x9bca,
+ 0x9bb9, 0x9bc6, 0x9bcf, 0x9bd1, 0x9bd2, 0x9be3, 0x9be2, 0x9be4,
+ 0x9bd4, 0x9be1, 0x9c3a, 0x9bf2, 0x9bf1, 0x9bf0, 0x9c15, 0x9c14,
+ 0x9c09, 0x9c13, 0x9c0c, 0x9c06, 0x9c08, 0x9c12, 0x9c0a, 0x9c04,
+ 0x9c2e, 0x9c1b, 0x9c25, 0x9c24, 0x9c21, 0x9c30, 0x9c47, 0x9c32,
+ 0x9c46, 0x9c3e, 0x9c5a, 0x9c60, 0x9c67, 0x9c76, 0x9c78, 0x9ce7,
+ 0x9cec, 0x9cf0, 0x9d09, 0x9d08, 0x9ceb, 0x9d03, 0x9d06, 0x9d2a,
+ 0x9d26, 0x9daf, 0x9d23, 0x9d1f, 0x9d44, 0x9d15, 0x9d12, 0x9d41,
+ 0x9d3f, 0x9d3e, 0x9d46, 0x9d48, 0x9d5d, 0x9d5e, 0x9d64, 0x9d51,
+ 0x9d50, 0x9d59, 0x9d72, 0x9d89, 0x9d87, 0x9dab, 0x9d6f, 0x9d7a,
+ 0x9d9a, 0x9da4, 0x9da9, 0x9db2, 0x9dc4, 0x9dc1, 0x9dbb, 0x9db8,
+ 0x9dba, 0x9dc6, 0x9dcf, 0x9dc2, 0x9dd9, 0x9dd3, 0x9df8, 0x9de6,
+ 0x9ded, 0x9def, 0x9dfd, 0x9e1a, 0x9e1b, 0x9e1e, 0x9e75, 0x9e79,
+ 0x9e7d, 0x9e81, 0x9e88, 0x9e8b, 0x9e8c, 0x9e92, 0x9e95, 0x9e91,
+ 0x9e9d, 0x9ea5, 0x9ea9, 0x9eb8, 0x9eaa, 0x9ead, 0x9761, 0x9ecc,
+ 0x9ece, 0x9ecf, 0x9ed0, 0x9ed4, 0x9edc, 0x9ede, 0x9edd, 0x9ee0,
+ 0x9ee5, 0x9ee8, 0x9eef, 0x9ef4, 0x9ef6, 0x9ef7, 0x9ef9, 0x9efb,
+ 0x9efc, 0x9efd, 0x9f07, 0x9f08, 0x76b7, 0x9f15, 0x9f21, 0x9f2c,
+ 0x9f3e, 0x9f4a, 0x9f52, 0x9f54, 0x9f63, 0x9f5f, 0x9f60, 0x9f61,
+ 0x9f66, 0x9f67, 0x9f6c, 0x9f6a, 0x9f77, 0x9f72, 0x9f76, 0x9f95,
+ 0x9f9c, 0x9fa0, 0x582f, 0x69c7, 0x9059, 0x7464, 0x51dc, 0x7199,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x9fa5, 0x1c2a, 0xbfffdb88, 0x4204f04f,
+ 0x804ef70, 0x0000, 0x2288, 0x804f240, 0x42130a14, 0x40015360, 0xbfffdba8, 0x804bcc9
+};
+
+const unichar_t unicode_from_jis212[] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x02d8, 0x02c7, 0x00b8, 0x02d9,
+ 0x02dd, 0x00af, 0x02db, 0x02da, 0x007e, 0x0384, 0x0385, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a1,
+ 0x00a6, 0x00bf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00ba, 0x00aa, 0x00a9, 0x00ae, 0x2122, 0x00a4, 0x2116, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0386, 0x0388,
+ 0x0389, 0x038a, 0x03aa, 0x0000, 0x038c, 0x0000, 0x038e, 0x03ab,
+ 0x0000, 0x038f, 0x0000, 0x0000, 0x0000, 0x0000, 0x03ac, 0x03ad,
+ 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, 0x03c2, 0x03cd, 0x03cb,
+ 0x03b0, 0x03ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0402, 0x0403, 0x0404,
+ 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c,
+ 0x040e, 0x040f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0452, 0x0453, 0x0454,
+ 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045a, 0x045b, 0x045c,
+ 0x045e, 0x045f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00c6, 0x0110, 0x0000, 0x0126, 0x0000, 0x0132, 0x0000, 0x0141,
+ 0x013f, 0x0000, 0x014a, 0x00d8, 0x0152, 0x0000, 0x0166, 0x00de,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0142,
+ 0x0140, 0x0149, 0x014b, 0x00f8, 0x0153, 0x00df, 0x0167, 0x00fe,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00c1, 0x00c0,
+ 0x00c4, 0x00c2, 0x0102, 0x01cd, 0x0100, 0x0104, 0x00c5, 0x00c3,
+ 0x0106, 0x0108, 0x010c, 0x00c7, 0x010a, 0x010e, 0x00c9, 0x00c8,
+ 0x00cb, 0x00ca, 0x011a, 0x0116, 0x0112, 0x0118, 0x0000, 0x011c,
+ 0x011e, 0x0122, 0x0120, 0x0124, 0x00cd, 0x00cc, 0x00cf, 0x00ce,
+ 0x01cf, 0x0130, 0x012a, 0x012e, 0x0128, 0x0134, 0x0136, 0x0139,
+ 0x013d, 0x013b, 0x0143, 0x0147, 0x0145, 0x00d1, 0x00d3, 0x00d2,
+ 0x00d6, 0x00d4, 0x01d1, 0x0150, 0x014c, 0x00d5, 0x0154, 0x0158,
+ 0x0156, 0x015a, 0x015c, 0x0160, 0x015e, 0x0164, 0x0162, 0x00da,
+ 0x00d9, 0x00dc, 0x00db, 0x016c, 0x01d3, 0x0170, 0x016a, 0x0172,
+ 0x016e, 0x0168, 0x01d7, 0x01db, 0x01d9, 0x01d5, 0x0174, 0x00dd,
+ 0x0178, 0x0176, 0x0179, 0x017d, 0x017b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x00e1, 0x00e0, 0x00e4, 0x00e2,
+ 0x0103, 0x01ce, 0x0101, 0x0105, 0x00e5, 0x00e3, 0x0107, 0x0109,
+ 0x010d, 0x00e7, 0x010b, 0x010f, 0x00e9, 0x00e8, 0x00eb, 0x00ea,
+ 0x011b, 0x0117, 0x0113, 0x0119, 0x01f5, 0x011d, 0x011f, 0x0000,
+ 0x0121, 0x0125, 0x00ed, 0x00ec, 0x00ef, 0x00ee, 0x01d0, 0x0000,
+ 0x012b, 0x012f, 0x0129, 0x0135, 0x0137, 0x013a, 0x013e, 0x013c,
+ 0x0144, 0x0148, 0x0146, 0x00f1, 0x00f3, 0x00f2, 0x00f6, 0x00f4,
+ 0x01d2, 0x0151, 0x014d, 0x00f5, 0x0155, 0x0159, 0x0157, 0x015b,
+ 0x015d, 0x0161, 0x015f, 0x0165, 0x0163, 0x00fa, 0x00f9, 0x00fc,
+ 0x00fb, 0x016d, 0x01d4, 0x0171, 0x016b, 0x0173, 0x016f, 0x0169,
+ 0x01d8, 0x01dc, 0x01da, 0x01d6, 0x0175, 0x00fd, 0x00ff, 0x0177,
+ 0x017a, 0x017e, 0x017c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4e02, 0x4e04, 0x4e05, 0x4e0c, 0x4e12, 0x4e1f,
+ 0x4e23, 0x4e24, 0x4e28, 0x4e2b, 0x4e2e, 0x4e2f, 0x4e30, 0x4e35,
+ 0x4e40, 0x4e41, 0x4e44, 0x4e47, 0x4e51, 0x4e5a, 0x4e5c, 0x4e63,
+ 0x4e68, 0x4e69, 0x4e74, 0x4e75, 0x4e79, 0x4e7f, 0x4e8d, 0x4e96,
+ 0x4e97, 0x4e9d, 0x4eaf, 0x4eb9, 0x4ec3, 0x4ed0, 0x4eda, 0x4edb,
+ 0x4ee0, 0x4ee1, 0x4ee2, 0x4ee8, 0x4eef, 0x4ef1, 0x4ef3, 0x4ef5,
+ 0x4efd, 0x4efe, 0x4eff, 0x4f00, 0x4f02, 0x4f03, 0x4f08, 0x4f0b,
+ 0x4f0c, 0x4f12, 0x4f15, 0x4f16, 0x4f17, 0x4f19, 0x4f2e, 0x4f31,
+ 0x4f60, 0x4f33, 0x4f35, 0x4f37, 0x4f39, 0x4f3b, 0x4f3e, 0x4f40,
+ 0x4f42, 0x4f48, 0x4f49, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56,
+ 0x4f58, 0x4f5f, 0x4f63, 0x4f6a, 0x4f6c, 0x4f6e, 0x4f71, 0x4f77,
+ 0x4f78, 0x4f79, 0x4f7a, 0x4f7d, 0x4f7e, 0x4f81, 0x4f82, 0x4f84,
+ 0x4f85, 0x4f89, 0x4f8a, 0x4f8c, 0x4f8e, 0x4f90, 0x4f92, 0x4f93,
+ 0x4f94, 0x4f97, 0x4f99, 0x4f9a, 0x4f9e, 0x4f9f, 0x4fb2, 0x4fb7,
+ 0x4fb9, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc5,
+ 0x4fc6, 0x4fc8, 0x4fc9, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fcf, 0x4fd2,
+ 0x4fdc, 0x4fe0, 0x4fe2, 0x4ff0, 0x4ff2, 0x4ffc, 0x4ffd, 0x4fff,
+ 0x5000, 0x5001, 0x5004, 0x5007, 0x500a, 0x500c, 0x500e, 0x5010,
+ 0x5013, 0x5017, 0x5018, 0x501b, 0x501c, 0x501d, 0x501e, 0x5022,
+ 0x5027, 0x502e, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040, 0x5041,
+ 0x5042, 0x5045, 0x5046, 0x504a, 0x504c, 0x504e, 0x5051, 0x5052,
+ 0x5053, 0x5057, 0x5059, 0x505f, 0x5060, 0x5062, 0x5063, 0x5066,
+ 0x5067, 0x506a, 0x506d, 0x5070, 0x5071, 0x503b, 0x5081, 0x5083,
+ 0x5084, 0x5086, 0x508a, 0x508e, 0x508f, 0x5090, 0x5092, 0x5093,
+ 0x5094, 0x5096, 0x509b, 0x509c, 0x509e, 0x509f, 0x50a0, 0x50a1,
+ 0x50a2, 0x50aa, 0x50af, 0x50b0, 0x50b9, 0x50ba, 0x50bd, 0x50c0,
+ 0x50c3, 0x50c4, 0x50c7, 0x50cc, 0x50ce, 0x50d0, 0x50d3, 0x50d4,
+ 0x50d8, 0x50dc, 0x50dd, 0x50df, 0x50e2, 0x50e4, 0x50e6, 0x50e8,
+ 0x50e9, 0x50ef, 0x50f1, 0x50f6, 0x50fa, 0x50fe, 0x5103, 0x5106,
+ 0x5107, 0x5108, 0x510b, 0x510c, 0x510d, 0x510e, 0x50f2, 0x5110,
+ 0x5117, 0x5119, 0x511b, 0x511c, 0x511d, 0x511e, 0x5123, 0x5127,
+ 0x5128, 0x512c, 0x512d, 0x512f, 0x5131, 0x5133, 0x5134, 0x5135,
+ 0x5138, 0x5139, 0x5142, 0x514a, 0x514f, 0x5153, 0x5155, 0x5157,
+ 0x5158, 0x515f, 0x5164, 0x5166, 0x517e, 0x5183, 0x5184, 0x518b,
+ 0x518e, 0x5198, 0x519d, 0x51a1, 0x51a3, 0x51ad, 0x51b8, 0x51ba,
+ 0x51bc, 0x51be, 0x51bf, 0x51c2, 0x51c8, 0x51cf, 0x51d1, 0x51d2,
+ 0x51d3, 0x51d5, 0x51d8, 0x51de, 0x51e2, 0x51e5, 0x51ee, 0x51f2,
+ 0x51f3, 0x51f4, 0x51f7, 0x5201, 0x5202, 0x5205, 0x5212, 0x5213,
+ 0x5215, 0x5216, 0x5218, 0x5222, 0x5228, 0x5231, 0x5232, 0x5235,
+ 0x523c, 0x5245, 0x5249, 0x5255, 0x5257, 0x5258, 0x525a, 0x525c,
+ 0x525f, 0x5260, 0x5261, 0x5266, 0x526e, 0x5277, 0x5278, 0x5279,
+ 0x5280, 0x5282, 0x5285, 0x528a, 0x528c, 0x5293, 0x5295, 0x5296,
+ 0x5297, 0x5298, 0x529a, 0x529c, 0x52a4, 0x52a5, 0x52a6, 0x52a7,
+ 0x52af, 0x52b0, 0x52b6, 0x52b7, 0x52b8, 0x52ba, 0x52bb, 0x52bd,
+ 0x52c0, 0x52c4, 0x52c6, 0x52c8, 0x52cc, 0x52cf, 0x52d1, 0x52d4,
+ 0x52d6, 0x52db, 0x52dc, 0x52e1, 0x52e5, 0x52e8, 0x52e9, 0x52ea,
+ 0x52ec, 0x52f0, 0x52f1, 0x52f4, 0x52f6, 0x52f7, 0x5300, 0x5303,
+ 0x530a, 0x530b, 0x530c, 0x5311, 0x5313, 0x5318, 0x531b, 0x531c,
+ 0x531e, 0x531f, 0x5325, 0x5327, 0x5328, 0x5329, 0x532b, 0x532c,
+ 0x532d, 0x5330, 0x5332, 0x5335, 0x533c, 0x533d, 0x533e, 0x5342,
+ 0x534c, 0x534b, 0x5359, 0x535b, 0x5361, 0x5363, 0x5365, 0x536c,
+ 0x536d, 0x5372, 0x5379, 0x537e, 0x5383, 0x5387, 0x5388, 0x538e,
+ 0x5393, 0x5394, 0x5399, 0x539d, 0x53a1, 0x53a4, 0x53aa, 0x53ab,
+ 0x53af, 0x53b2, 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53ba, 0x53bd,
+ 0x53c0, 0x53c5, 0x53cf, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dd,
+ 0x53de, 0x53e0, 0x53e6, 0x53e7, 0x53f5, 0x5402, 0x5413, 0x541a,
+ 0x5421, 0x5427, 0x5428, 0x542a, 0x542f, 0x5431, 0x5434, 0x5435,
+ 0x5443, 0x5444, 0x5447, 0x544d, 0x544f, 0x545e, 0x5462, 0x5464,
+ 0x5466, 0x5467, 0x5469, 0x546b, 0x546d, 0x546e, 0x5474, 0x547f,
+ 0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548d, 0x5491, 0x5495,
+ 0x5496, 0x549c, 0x549f, 0x54a1, 0x54a6, 0x54a7, 0x54a9, 0x54aa,
+ 0x54ad, 0x54ae, 0x54b1, 0x54b7, 0x54b9, 0x54ba, 0x54bb, 0x54bf,
+ 0x54c6, 0x54ca, 0x54cd, 0x54ce, 0x54e0, 0x54ea, 0x54ec, 0x54ef,
+ 0x54f6, 0x54fc, 0x54fe, 0x54ff, 0x5500, 0x5501, 0x5505, 0x5508,
+ 0x5509, 0x550c, 0x550d, 0x550e, 0x5515, 0x552a, 0x552b, 0x5532,
+ 0x5535, 0x5536, 0x553b, 0x553c, 0x553d, 0x5541, 0x5547, 0x5549,
+ 0x554a, 0x554d, 0x5550, 0x5551, 0x5558, 0x555a, 0x555b, 0x555e,
+ 0x5560, 0x5561, 0x5564, 0x5566, 0x557f, 0x5581, 0x5582, 0x5586,
+ 0x5588, 0x558e, 0x558f, 0x5591, 0x5592, 0x5593, 0x5594, 0x5597,
+ 0x55a3, 0x55a4, 0x55ad, 0x55b2, 0x55bf, 0x55c1, 0x55c3, 0x55c6,
+ 0x55c9, 0x55cb, 0x55cc, 0x55ce, 0x55d1, 0x55d2, 0x55d3, 0x55d7,
+ 0x55d8, 0x55db, 0x55de, 0x55e2, 0x55e9, 0x55f6, 0x55ff, 0x5605,
+ 0x5608, 0x560a, 0x560d, 0x560e, 0x560f, 0x5610, 0x5611, 0x5612,
+ 0x5619, 0x562c, 0x5630, 0x5633, 0x5635, 0x5637, 0x5639, 0x563b,
+ 0x563c, 0x563d, 0x563f, 0x5640, 0x5641, 0x5643, 0x5644, 0x5646,
+ 0x5649, 0x564b, 0x564d, 0x564f, 0x5654, 0x565e, 0x5660, 0x5661,
+ 0x5662, 0x5663, 0x5666, 0x5669, 0x566d, 0x566f, 0x5671, 0x5672,
+ 0x5675, 0x5684, 0x5685, 0x5688, 0x568b, 0x568c, 0x5695, 0x5699,
+ 0x569a, 0x569d, 0x569e, 0x569f, 0x56a6, 0x56a7, 0x56a8, 0x56a9,
+ 0x56ab, 0x56ac, 0x56ad, 0x56b1, 0x56b3, 0x56b7, 0x56be, 0x56c5,
+ 0x56c9, 0x56ca, 0x56cb, 0x56cf, 0x56d0, 0x56cc, 0x56cd, 0x56d9,
+ 0x56dc, 0x56dd, 0x56df, 0x56e1, 0x56e4, 0x56e5, 0x56e6, 0x56e7,
+ 0x56e8, 0x56f1, 0x56eb, 0x56ed, 0x56f6, 0x56f7, 0x5701, 0x5702,
+ 0x5707, 0x570a, 0x570c, 0x5711, 0x5715, 0x571a, 0x571b, 0x571d,
+ 0x5720, 0x5722, 0x5723, 0x5724, 0x5725, 0x5729, 0x572a, 0x572c,
+ 0x572e, 0x572f, 0x5733, 0x5734, 0x573d, 0x573e, 0x573f, 0x5745,
+ 0x5746, 0x574c, 0x574d, 0x5752, 0x5762, 0x5765, 0x5767, 0x5768,
+ 0x576b, 0x576d, 0x576e, 0x576f, 0x5770, 0x5771, 0x5773, 0x5774,
+ 0x5775, 0x5777, 0x5779, 0x577a, 0x577b, 0x577c, 0x577e, 0x5781,
+ 0x5783, 0x578c, 0x5794, 0x5797, 0x5799, 0x579a, 0x579c, 0x579d,
+ 0x579e, 0x579f, 0x57a1, 0x5795, 0x57a7, 0x57a8, 0x57a9, 0x57ac,
+ 0x57b8, 0x57bd, 0x57c7, 0x57c8, 0x57cc, 0x57cf, 0x57d5, 0x57dd,
+ 0x57de, 0x57e4, 0x57e6, 0x57e7, 0x57e9, 0x57ed, 0x57f0, 0x57f5,
+ 0x57f6, 0x57f8, 0x57fd, 0x57fe, 0x57ff, 0x5803, 0x5804, 0x5808,
+ 0x5809, 0x57e1, 0x580c, 0x580d, 0x581b, 0x581e, 0x581f, 0x5820,
+ 0x5826, 0x5827, 0x582d, 0x5832, 0x5839, 0x583f, 0x5849, 0x584c,
+ 0x584d, 0x584f, 0x5850, 0x5855, 0x585f, 0x5861, 0x5864, 0x5867,
+ 0x5868, 0x5878, 0x587c, 0x587f, 0x5880, 0x5881, 0x5887, 0x5888,
+ 0x5889, 0x588a, 0x588c, 0x588d, 0x588f, 0x5890, 0x5894, 0x5896,
+ 0x589d, 0x58a0, 0x58a1, 0x58a2, 0x58a6, 0x58a9, 0x58b1, 0x58b2,
+ 0x58c4, 0x58bc, 0x58c2, 0x58c8, 0x58cd, 0x58ce, 0x58d0, 0x58d2,
+ 0x58d4, 0x58d6, 0x58da, 0x58dd, 0x58e1, 0x58e2, 0x58e9, 0x58f3,
+ 0x5905, 0x5906, 0x590b, 0x590c, 0x5912, 0x5913, 0x5914, 0x8641,
+ 0x591d, 0x5921, 0x5923, 0x5924, 0x5928, 0x592f, 0x5930, 0x5933,
+ 0x5935, 0x5936, 0x593f, 0x5943, 0x5946, 0x5952, 0x5953, 0x5959,
+ 0x595b, 0x595d, 0x595e, 0x595f, 0x5961, 0x5963, 0x596b, 0x596d,
+ 0x596f, 0x5972, 0x5975, 0x5976, 0x5979, 0x597b, 0x597c, 0x598b,
+ 0x598c, 0x598e, 0x5992, 0x5995, 0x5997, 0x599f, 0x59a4, 0x59a7,
+ 0x59ad, 0x59ae, 0x59af, 0x59b0, 0x59b3, 0x59b7, 0x59ba, 0x59bc,
+ 0x59c1, 0x59c3, 0x59c4, 0x59c8, 0x59ca, 0x59cd, 0x59d2, 0x59dd,
+ 0x59de, 0x59df, 0x59e3, 0x59e4, 0x59e7, 0x59ee, 0x59ef, 0x59f1,
+ 0x59f2, 0x59f4, 0x59f7, 0x5a00, 0x5a04, 0x5a0c, 0x5a0d, 0x5a0e,
+ 0x5a12, 0x5a13, 0x5a1e, 0x5a23, 0x5a24, 0x5a27, 0x5a28, 0x5a2a,
+ 0x5a2d, 0x5a30, 0x5a44, 0x5a45, 0x5a47, 0x5a48, 0x5a4c, 0x5a50,
+ 0x5a55, 0x5a5e, 0x5a63, 0x5a65, 0x5a67, 0x5a6d, 0x5a77, 0x5a7a,
+ 0x5a7b, 0x5a7e, 0x5a8b, 0x5a90, 0x5a93, 0x5a96, 0x5a99, 0x5a9c,
+ 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa2, 0x5aa7, 0x5aac, 0x5ab1, 0x5ab2,
+ 0x5ab3, 0x5ab5, 0x5ab8, 0x5aba, 0x5abb, 0x5abf, 0x5ac4, 0x5ac6,
+ 0x5ac8, 0x5acf, 0x5ada, 0x5adc, 0x5ae0, 0x5ae5, 0x5aea, 0x5aee,
+ 0x5af5, 0x5af6, 0x5afd, 0x5b00, 0x5b01, 0x5b08, 0x5b17, 0x5b34,
+ 0x5b19, 0x5b1b, 0x5b1d, 0x5b21, 0x5b25, 0x5b2d, 0x5b38, 0x5b41,
+ 0x5b4b, 0x5b4c, 0x5b52, 0x5b56, 0x5b5e, 0x5b68, 0x5b6e, 0x5b6f,
+ 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f, 0x5b81, 0x5b84, 0x5b86, 0x5b8a,
+ 0x5b8e, 0x5b90, 0x5b91, 0x5b93, 0x5b94, 0x5b96, 0x5ba8, 0x5ba9,
+ 0x5bac, 0x5bad, 0x5baf, 0x5bb1, 0x5bb2, 0x5bb7, 0x5bba, 0x5bbc,
+ 0x5bc0, 0x5bc1, 0x5bcd, 0x5bcf, 0x5bd6, 0x5bd7, 0x5bd8, 0x5bd9,
+ 0x5bda, 0x5be0, 0x5bef, 0x5bf1, 0x5bf4, 0x5bfd, 0x5c0c, 0x5c17,
+ 0x5c1e, 0x5c1f, 0x5c23, 0x5c26, 0x5c29, 0x5c2b, 0x5c2c, 0x5c2e,
+ 0x5c30, 0x5c32, 0x5c35, 0x5c36, 0x5c59, 0x5c5a, 0x5c5c, 0x5c62,
+ 0x5c63, 0x5c67, 0x5c68, 0x5c69, 0x5c6d, 0x5c70, 0x5c74, 0x5c75,
+ 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c87, 0x5c88, 0x5c8a, 0x5c8f,
+ 0x5c92, 0x5c9d, 0x5c9f, 0x5ca0, 0x5ca2, 0x5ca3, 0x5ca6, 0x5caa,
+ 0x5cb2, 0x5cb4, 0x5cb5, 0x5cba, 0x5cc9, 0x5ccb, 0x5cd2, 0x5cdd,
+ 0x5cd7, 0x5cee, 0x5cf1, 0x5cf2, 0x5cf4, 0x5d01, 0x5d06, 0x5d0d,
+ 0x5d12, 0x5d2b, 0x5d23, 0x5d24, 0x5d26, 0x5d27, 0x5d31, 0x5d34,
+ 0x5d39, 0x5d3d, 0x5d3f, 0x5d42, 0x5d43, 0x5d46, 0x5d48, 0x5d55,
+ 0x5d51, 0x5d59, 0x5d4a, 0x5d5f, 0x5d60, 0x5d61, 0x5d62, 0x5d64,
+ 0x5d6a, 0x5d6d, 0x5d70, 0x5d79, 0x5d7a, 0x5d7e, 0x5d7f, 0x5d81,
+ 0x5d83, 0x5d88, 0x5d8a, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d99,
+ 0x5d9b, 0x5d9f, 0x5da0, 0x5da7, 0x5dab, 0x5db0, 0x5db4, 0x5db8,
+ 0x5db9, 0x5dc3, 0x5dc7, 0x5dcb, 0x5dd0, 0x5dce, 0x5dd8, 0x5dd9,
+ 0x5de0, 0x5de4, 0x5de9, 0x5df8, 0x5df9, 0x5e00, 0x5e07, 0x5e0d,
+ 0x5e12, 0x5e14, 0x5e15, 0x5e18, 0x5e1f, 0x5e20, 0x5e2e, 0x5e28,
+ 0x5e32, 0x5e35, 0x5e3e, 0x5e4b, 0x5e50, 0x5e49, 0x5e51, 0x5e56,
+ 0x5e58, 0x5e5b, 0x5e5c, 0x5e5e, 0x5e68, 0x5e6a, 0x5e6b, 0x5e6c,
+ 0x5e6d, 0x5e6e, 0x5e70, 0x5e80, 0x5e8b, 0x5e8e, 0x5ea2, 0x5ea4,
+ 0x5ea5, 0x5ea8, 0x5eaa, 0x5eac, 0x5eb1, 0x5eb3, 0x5ebd, 0x5ebe,
+ 0x5ebf, 0x5ec6, 0x5ecc, 0x5ecb, 0x5ece, 0x5ed1, 0x5ed2, 0x5ed4,
+ 0x5ed5, 0x5edc, 0x5ede, 0x5ee5, 0x5eeb, 0x5f02, 0x5f06, 0x5f07,
+ 0x5f08, 0x5f0e, 0x5f19, 0x5f1c, 0x5f1d, 0x5f21, 0x5f22, 0x5f23,
+ 0x5f24, 0x5f28, 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f34, 0x5f36,
+ 0x5f3b, 0x5f3d, 0x5f3f, 0x5f40, 0x5f44, 0x5f45, 0x5f47, 0x5f4d,
+ 0x5f50, 0x5f54, 0x5f58, 0x5f5b, 0x5f60, 0x5f63, 0x5f64, 0x5f67,
+ 0x5f6f, 0x5f72, 0x5f74, 0x5f75, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e,
+ 0x5f89, 0x5f8d, 0x5f8f, 0x5f96, 0x5f9c, 0x5f9d, 0x5fa2, 0x5fa7,
+ 0x5fab, 0x5fa4, 0x5fac, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb8, 0x5fc4,
+ 0x5fc7, 0x5fc8, 0x5fc9, 0x5fcb, 0x5fd0, 0x5fd1, 0x5fd2, 0x5fd3,
+ 0x5fd4, 0x5fde, 0x5fe1, 0x5fe2, 0x5fe8, 0x5fe9, 0x5fea, 0x5fec,
+ 0x5fed, 0x5fee, 0x5fef, 0x5ff2, 0x5ff3, 0x5ff6, 0x5ffa, 0x5ffc,
+ 0x6007, 0x600a, 0x600d, 0x6013, 0x6014, 0x6017, 0x6018, 0x601a,
+ 0x601f, 0x6024, 0x602d, 0x6033, 0x6035, 0x6040, 0x6047, 0x6048,
+ 0x6049, 0x604c, 0x6051, 0x6054, 0x6056, 0x6057, 0x605d, 0x6061,
+ 0x6067, 0x6071, 0x607e, 0x607f, 0x6082, 0x6086, 0x6088, 0x608a,
+ 0x608e, 0x6091, 0x6093, 0x6095, 0x6098, 0x609d, 0x609e, 0x60a2,
+ 0x60a4, 0x60a5, 0x60a8, 0x60b0, 0x60b1, 0x60b7, 0x60bb, 0x60be,
+ 0x60c2, 0x60c4, 0x60c8, 0x60c9, 0x60ca, 0x60cb, 0x60ce, 0x60cf,
+ 0x60d4, 0x60d5, 0x60d9, 0x60db, 0x60dd, 0x60de, 0x60e2, 0x60e5,
+ 0x60f2, 0x60f5, 0x60f8, 0x60fc, 0x60fd, 0x6102, 0x6107, 0x610a,
+ 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, 0x6117,
+ 0x6119, 0x611c, 0x611e, 0x6122, 0x612a, 0x612b, 0x6130, 0x6131,
+ 0x6135, 0x6136, 0x6137, 0x6139, 0x6141, 0x6145, 0x6146, 0x6149,
+ 0x615e, 0x6160, 0x616c, 0x6172, 0x6178, 0x617b, 0x617c, 0x617f,
+ 0x6180, 0x6181, 0x6183, 0x6184, 0x618b, 0x618d, 0x6192, 0x6193,
+ 0x6197, 0x6198, 0x619c, 0x619d, 0x619f, 0x61a0, 0x61a5, 0x61a8,
+ 0x61aa, 0x61ad, 0x61b8, 0x61b9, 0x61bc, 0x61c0, 0x61c1, 0x61c2,
+ 0x61ce, 0x61cf, 0x61d5, 0x61dc, 0x61dd, 0x61de, 0x61df, 0x61e1,
+ 0x61e2, 0x61e7, 0x61e9, 0x61e5, 0x61ec, 0x61ed, 0x61ef, 0x6201,
+ 0x6203, 0x6204, 0x6207, 0x6213, 0x6215, 0x621c, 0x6220, 0x6222,
+ 0x6223, 0x6227, 0x6229, 0x622b, 0x6239, 0x623d, 0x6242, 0x6243,
+ 0x6244, 0x6246, 0x624c, 0x6250, 0x6251, 0x6252, 0x6254, 0x6256,
+ 0x625a, 0x625c, 0x6264, 0x626d, 0x626f, 0x6273, 0x627a, 0x627d,
+ 0x628d, 0x628e, 0x628f, 0x6290, 0x62a6, 0x62a8, 0x62b3, 0x62b6,
+ 0x62b7, 0x62ba, 0x62be, 0x62bf, 0x62c4, 0x62ce, 0x62d5, 0x62d6,
+ 0x62da, 0x62ea, 0x62f2, 0x62f4, 0x62fc, 0x62fd, 0x6303, 0x6304,
+ 0x630a, 0x630b, 0x630d, 0x6310, 0x6313, 0x6316, 0x6318, 0x6329,
+ 0x632a, 0x632d, 0x6335, 0x6336, 0x6339, 0x633c, 0x6341, 0x6342,
+ 0x6343, 0x6344, 0x6346, 0x634a, 0x634b, 0x634e, 0x6352, 0x6353,
+ 0x6354, 0x6358, 0x635b, 0x6365, 0x6366, 0x636c, 0x636d, 0x6371,
+ 0x6374, 0x6375, 0x6378, 0x637c, 0x637d, 0x637f, 0x6382, 0x6384,
+ 0x6387, 0x638a, 0x6390, 0x6394, 0x6395, 0x6399, 0x639a, 0x639e,
+ 0x63a4, 0x63a6, 0x63ad, 0x63ae, 0x63af, 0x63bd, 0x63c1, 0x63c5,
+ 0x63c8, 0x63ce, 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63dc, 0x63e0,
+ 0x63e5, 0x63ea, 0x63ec, 0x63f2, 0x63f3, 0x63f5, 0x63f8, 0x63f9,
+ 0x6409, 0x640a, 0x6410, 0x6412, 0x6414, 0x6418, 0x641e, 0x6420,
+ 0x6422, 0x6424, 0x6425, 0x6429, 0x642a, 0x642f, 0x6430, 0x6435,
+ 0x643d, 0x643f, 0x644b, 0x644f, 0x6451, 0x6452, 0x6453, 0x6454,
+ 0x645a, 0x645b, 0x645c, 0x645d, 0x645f, 0x6460, 0x6461, 0x6463,
+ 0x646d, 0x6473, 0x6474, 0x647b, 0x647d, 0x6485, 0x6487, 0x648f,
+ 0x6490, 0x6491, 0x6498, 0x6499, 0x649b, 0x649d, 0x649f, 0x64a1,
+ 0x64a3, 0x64a6, 0x64a8, 0x64ac, 0x64b3, 0x64bd, 0x64be, 0x64bf,
+ 0x64c4, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64ce, 0x64d0, 0x64d1,
+ 0x64d5, 0x64d7, 0x64e4, 0x64e5, 0x64e9, 0x64ea, 0x64ed, 0x64f0,
+ 0x64f5, 0x64f7, 0x64fb, 0x64ff, 0x6501, 0x6504, 0x6508, 0x6509,
+ 0x650a, 0x650f, 0x6513, 0x6514, 0x6516, 0x6519, 0x651b, 0x651e,
+ 0x651f, 0x6522, 0x6526, 0x6529, 0x652e, 0x6531, 0x653a, 0x653c,
+ 0x653d, 0x6543, 0x6547, 0x6549, 0x6550, 0x6552, 0x6554, 0x655f,
+ 0x6560, 0x6567, 0x656b, 0x657a, 0x657d, 0x6581, 0x6585, 0x658a,
+ 0x6592, 0x6595, 0x6598, 0x659d, 0x65a0, 0x65a3, 0x65a6, 0x65ae,
+ 0x65b2, 0x65b3, 0x65b4, 0x65bf, 0x65c2, 0x65c8, 0x65c9, 0x65ce,
+ 0x65d0, 0x65d4, 0x65d6, 0x65d8, 0x65df, 0x65f0, 0x65f2, 0x65f4,
+ 0x65f5, 0x65f9, 0x65fe, 0x65ff, 0x6600, 0x6604, 0x6608, 0x6609,
+ 0x660d, 0x6611, 0x6612, 0x6615, 0x6616, 0x661d, 0x661e, 0x6621,
+ 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662a, 0x662b, 0x662c,
+ 0x662e, 0x6630, 0x6631, 0x6633, 0x6639, 0x6637, 0x6640, 0x6645,
+ 0x6646, 0x664a, 0x664c, 0x6651, 0x664e, 0x6657, 0x6658, 0x6659,
+ 0x665b, 0x665c, 0x6660, 0x6661, 0x66fb, 0x666a, 0x666b, 0x666c,
+ 0x667e, 0x6673, 0x6675, 0x667f, 0x6677, 0x6678, 0x6679, 0x667b,
+ 0x6680, 0x667c, 0x668b, 0x668c, 0x668d, 0x6690, 0x6692, 0x6699,
+ 0x669a, 0x669b, 0x669c, 0x669f, 0x66a0, 0x66a4, 0x66ad, 0x66b1,
+ 0x66b2, 0x66b5, 0x66bb, 0x66bf, 0x66c0, 0x66c2, 0x66c3, 0x66c8,
+ 0x66cc, 0x66ce, 0x66cf, 0x66d4, 0x66db, 0x66df, 0x66e8, 0x66eb,
+ 0x66ec, 0x66ee, 0x66fa, 0x6705, 0x6707, 0x670e, 0x6713, 0x6719,
+ 0x671c, 0x6720, 0x6722, 0x6733, 0x673e, 0x6745, 0x6747, 0x6748,
+ 0x674c, 0x6754, 0x6755, 0x675d, 0x6766, 0x676c, 0x676e, 0x6774,
+ 0x6776, 0x677b, 0x6781, 0x6784, 0x678e, 0x678f, 0x6791, 0x6793,
+ 0x6796, 0x6798, 0x6799, 0x679b, 0x67b0, 0x67b1, 0x67b2, 0x67b5,
+ 0x67bb, 0x67bc, 0x67bd, 0x67f9, 0x67c0, 0x67c2, 0x67c3, 0x67c5,
+ 0x67c8, 0x67c9, 0x67d2, 0x67d7, 0x67d9, 0x67dc, 0x67e1, 0x67e6,
+ 0x67f0, 0x67f2, 0x67f6, 0x67f7, 0x6852, 0x6814, 0x6819, 0x681d,
+ 0x681f, 0x6828, 0x6827, 0x682c, 0x682d, 0x682f, 0x6830, 0x6831,
+ 0x6833, 0x683b, 0x683f, 0x6844, 0x6845, 0x684a, 0x684c, 0x6855,
+ 0x6857, 0x6858, 0x685b, 0x686b, 0x686e, 0x686f, 0x6870, 0x6871,
+ 0x6872, 0x6875, 0x6879, 0x687a, 0x687b, 0x687c, 0x6882, 0x6884,
+ 0x6886, 0x6888, 0x6896, 0x6898, 0x689a, 0x689c, 0x68a1, 0x68a3,
+ 0x68a5, 0x68a9, 0x68aa, 0x68ae, 0x68b2, 0x68bb, 0x68c5, 0x68c8,
+ 0x68cc, 0x68cf, 0x68d0, 0x68d1, 0x68d3, 0x68d6, 0x68d9, 0x68dc,
+ 0x68dd, 0x68e5, 0x68e8, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68f0,
+ 0x68f1, 0x68f5, 0x68f6, 0x68fb, 0x68fc, 0x68fd, 0x6906, 0x6909,
+ 0x690a, 0x6910, 0x6911, 0x6913, 0x6916, 0x6917, 0x6931, 0x6933,
+ 0x6935, 0x6938, 0x693b, 0x6942, 0x6945, 0x6949, 0x694e, 0x6957,
+ 0x695b, 0x6963, 0x6964, 0x6965, 0x6966, 0x6968, 0x6969, 0x696c,
+ 0x6970, 0x6971, 0x6972, 0x697a, 0x697b, 0x697f, 0x6980, 0x698d,
+ 0x6992, 0x6996, 0x6998, 0x69a1, 0x69a5, 0x69a6, 0x69a8, 0x69ab,
+ 0x69ad, 0x69af, 0x69b7, 0x69b8, 0x69ba, 0x69bc, 0x69c5, 0x69c8,
+ 0x69d1, 0x69d6, 0x69d7, 0x69e2, 0x69e5, 0x69ee, 0x69ef, 0x69f1,
+ 0x69f3, 0x69f5, 0x69fe, 0x6a00, 0x6a01, 0x6a03, 0x6a0f, 0x6a11,
+ 0x6a15, 0x6a1a, 0x6a1d, 0x6a20, 0x6a24, 0x6a28, 0x6a30, 0x6a32,
+ 0x6a34, 0x6a37, 0x6a3b, 0x6a3e, 0x6a3f, 0x6a45, 0x6a46, 0x6a49,
+ 0x6a4a, 0x6a4e, 0x6a50, 0x6a51, 0x6a52, 0x6a55, 0x6a56, 0x6a5b,
+ 0x6a64, 0x6a67, 0x6a6a, 0x6a71, 0x6a73, 0x6a7e, 0x6a81, 0x6a83,
+ 0x6a86, 0x6a87, 0x6a89, 0x6a8b, 0x6a91, 0x6a9b, 0x6a9d, 0x6a9e,
+ 0x6a9f, 0x6aa5, 0x6aab, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab4, 0x6abd,
+ 0x6abe, 0x6abf, 0x6ac6, 0x6ac9, 0x6ac8, 0x6acc, 0x6ad0, 0x6ad4,
+ 0x6ad5, 0x6ad6, 0x6adc, 0x6add, 0x6ae4, 0x6ae7, 0x6aec, 0x6af0,
+ 0x6af1, 0x6af2, 0x6afc, 0x6afd, 0x6b02, 0x6b03, 0x6b06, 0x6b07,
+ 0x6b09, 0x6b0f, 0x6b10, 0x6b11, 0x6b17, 0x6b1b, 0x6b1e, 0x6b24,
+ 0x6b28, 0x6b2b, 0x6b2c, 0x6b2f, 0x6b35, 0x6b36, 0x6b3b, 0x6b3f,
+ 0x6b46, 0x6b4a, 0x6b4d, 0x6b52, 0x6b56, 0x6b58, 0x6b5d, 0x6b60,
+ 0x6b67, 0x6b6b, 0x6b6e, 0x6b70, 0x6b75, 0x6b7d, 0x6b7e, 0x6b82,
+ 0x6b85, 0x6b97, 0x6b9b, 0x6b9f, 0x6ba0, 0x6ba2, 0x6ba3, 0x6ba8,
+ 0x6ba9, 0x6bac, 0x6bad, 0x6bae, 0x6bb0, 0x6bb8, 0x6bb9, 0x6bbd,
+ 0x6bbe, 0x6bc3, 0x6bc4, 0x6bc9, 0x6bcc, 0x6bd6, 0x6bda, 0x6be1,
+ 0x6be3, 0x6be6, 0x6be7, 0x6bee, 0x6bf1, 0x6bf7, 0x6bf9, 0x6bff,
+ 0x6c02, 0x6c04, 0x6c05, 0x6c09, 0x6c0d, 0x6c0e, 0x6c10, 0x6c12,
+ 0x6c19, 0x6c1f, 0x6c26, 0x6c27, 0x6c28, 0x6c2c, 0x6c2e, 0x6c33,
+ 0x6c35, 0x6c36, 0x6c3a, 0x6c3b, 0x6c3f, 0x6c4a, 0x6c4b, 0x6c4d,
+ 0x6c4f, 0x6c52, 0x6c54, 0x6c59, 0x6c5b, 0x6c5c, 0x6c6b, 0x6c6d,
+ 0x6c6f, 0x6c74, 0x6c76, 0x6c78, 0x6c79, 0x6c7b, 0x6c85, 0x6c86,
+ 0x6c87, 0x6c89, 0x6c94, 0x6c95, 0x6c97, 0x6c98, 0x6c9c, 0x6c9f,
+ 0x6cb0, 0x6cb2, 0x6cb4, 0x6cc2, 0x6cc6, 0x6ccd, 0x6ccf, 0x6cd0,
+ 0x6cd1, 0x6cd2, 0x6cd4, 0x6cd6, 0x6cda, 0x6cdc, 0x6ce0, 0x6ce7,
+ 0x6ce9, 0x6ceb, 0x6cec, 0x6cee, 0x6cf2, 0x6cf4, 0x6d04, 0x6d07,
+ 0x6d0a, 0x6d0e, 0x6d0f, 0x6d11, 0x6d13, 0x6d1a, 0x6d26, 0x6d27,
+ 0x6d28, 0x6c67, 0x6d2e, 0x6d2f, 0x6d31, 0x6d39, 0x6d3c, 0x6d3f,
+ 0x6d57, 0x6d5e, 0x6d5f, 0x6d61, 0x6d65, 0x6d67, 0x6d6f, 0x6d70,
+ 0x6d7c, 0x6d82, 0x6d87, 0x6d91, 0x6d92, 0x6d94, 0x6d96, 0x6d97,
+ 0x6d98, 0x6daa, 0x6dac, 0x6db4, 0x6db7, 0x6db9, 0x6dbd, 0x6dbf,
+ 0x6dc4, 0x6dc8, 0x6dca, 0x6dce, 0x6dcf, 0x6dd6, 0x6ddb, 0x6ddd,
+ 0x6ddf, 0x6de0, 0x6de2, 0x6de5, 0x6de9, 0x6def, 0x6df0, 0x6df4,
+ 0x6df6, 0x6dfc, 0x6e00, 0x6e04, 0x6e1e, 0x6e22, 0x6e27, 0x6e32,
+ 0x6e36, 0x6e39, 0x6e3b, 0x6e3c, 0x6e44, 0x6e45, 0x6e48, 0x6e49,
+ 0x6e4b, 0x6e4f, 0x6e51, 0x6e52, 0x6e53, 0x6e54, 0x6e57, 0x6e5c,
+ 0x6e5d, 0x6e5e, 0x6e62, 0x6e63, 0x6e68, 0x6e73, 0x6e7b, 0x6e7d,
+ 0x6e8d, 0x6e93, 0x6e99, 0x6ea0, 0x6ea7, 0x6ead, 0x6eae, 0x6eb1,
+ 0x6eb3, 0x6ebb, 0x6ebf, 0x6ec0, 0x6ec1, 0x6ec3, 0x6ec7, 0x6ec8,
+ 0x6eca, 0x6ecd, 0x6ece, 0x6ecf, 0x6eeb, 0x6eed, 0x6eee, 0x6ef9,
+ 0x6efb, 0x6efd, 0x6f04, 0x6f08, 0x6f0a, 0x6f0c, 0x6f0d, 0x6f16,
+ 0x6f18, 0x6f1a, 0x6f1b, 0x6f26, 0x6f29, 0x6f2a, 0x6f2f, 0x6f30,
+ 0x6f33, 0x6f36, 0x6f3b, 0x6f3c, 0x6f2d, 0x6f4f, 0x6f51, 0x6f52,
+ 0x6f53, 0x6f57, 0x6f59, 0x6f5a, 0x6f5d, 0x6f5e, 0x6f61, 0x6f62,
+ 0x6f68, 0x6f6c, 0x6f7d, 0x6f7e, 0x6f83, 0x6f87, 0x6f88, 0x6f8b,
+ 0x6f8c, 0x6f8d, 0x6f90, 0x6f92, 0x6f93, 0x6f94, 0x6f96, 0x6f9a,
+ 0x6f9f, 0x6fa0, 0x6fa5, 0x6fa6, 0x6fa7, 0x6fa8, 0x6fae, 0x6faf,
+ 0x6fb0, 0x6fb5, 0x6fb6, 0x6fbc, 0x6fc5, 0x6fc7, 0x6fc8, 0x6fca,
+ 0x6fda, 0x6fde, 0x6fe8, 0x6fe9, 0x6ff0, 0x6ff5, 0x6ff9, 0x6ffc,
+ 0x6ffd, 0x7000, 0x7005, 0x7006, 0x7007, 0x700d, 0x7017, 0x7020,
+ 0x7023, 0x702f, 0x7034, 0x7037, 0x7039, 0x703c, 0x7043, 0x7044,
+ 0x7048, 0x7049, 0x704a, 0x704b, 0x7054, 0x7055, 0x705d, 0x705e,
+ 0x704e, 0x7064, 0x7065, 0x706c, 0x706e, 0x7075, 0x7076, 0x707e,
+ 0x7081, 0x7085, 0x7086, 0x7094, 0x7095, 0x7096, 0x7097, 0x7098,
+ 0x709b, 0x70a4, 0x70ab, 0x70b0, 0x70b1, 0x70b4, 0x70b7, 0x70ca,
+ 0x70d1, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d8, 0x70dc, 0x70e4,
+ 0x70fa, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710b, 0x710c,
+ 0x710f, 0x711e, 0x7120, 0x712b, 0x712d, 0x712f, 0x7130, 0x7131,
+ 0x7138, 0x7141, 0x7145, 0x7146, 0x7147, 0x714a, 0x714b, 0x7150,
+ 0x7152, 0x7157, 0x715a, 0x715c, 0x715e, 0x7160, 0x7168, 0x7179,
+ 0x7180, 0x7185, 0x7187, 0x718c, 0x7192, 0x719a, 0x719b, 0x71a0,
+ 0x71a2, 0x71af, 0x71b0, 0x71b2, 0x71b3, 0x71ba, 0x71bf, 0x71c0,
+ 0x71c1, 0x71c4, 0x71cb, 0x71cc, 0x71d3, 0x71d6, 0x71d9, 0x71da,
+ 0x71dc, 0x71f8, 0x71fe, 0x7200, 0x7207, 0x7208, 0x7209, 0x7213,
+ 0x7217, 0x721a, 0x721d, 0x721f, 0x7224, 0x722b, 0x722f, 0x7234,
+ 0x7238, 0x7239, 0x7241, 0x7242, 0x7243, 0x7245, 0x724e, 0x724f,
+ 0x7250, 0x7253, 0x7255, 0x7256, 0x725a, 0x725c, 0x725e, 0x7260,
+ 0x7263, 0x7268, 0x726b, 0x726e, 0x726f, 0x7271, 0x7277, 0x7278,
+ 0x727b, 0x727c, 0x727f, 0x7284, 0x7289, 0x728d, 0x728e, 0x7293,
+ 0x729b, 0x72a8, 0x72ad, 0x72ae, 0x72b1, 0x72b4, 0x72be, 0x72c1,
+ 0x72c7, 0x72c9, 0x72cc, 0x72d5, 0x72d6, 0x72d8, 0x72df, 0x72e5,
+ 0x72f3, 0x72f4, 0x72fa, 0x72fb, 0x72fe, 0x7302, 0x7304, 0x7305,
+ 0x7307, 0x730b, 0x730d, 0x7312, 0x7313, 0x7318, 0x7319, 0x731e,
+ 0x7322, 0x7324, 0x7327, 0x7328, 0x732c, 0x7331, 0x7332, 0x7335,
+ 0x733a, 0x733b, 0x733d, 0x7343, 0x734d, 0x7350, 0x7352, 0x7356,
+ 0x7358, 0x735d, 0x735e, 0x735f, 0x7360, 0x7366, 0x7367, 0x7369,
+ 0x736b, 0x736c, 0x736e, 0x736f, 0x7371, 0x7377, 0x7379, 0x737c,
+ 0x7380, 0x7381, 0x7383, 0x7385, 0x7386, 0x738e, 0x7390, 0x7393,
+ 0x7395, 0x7397, 0x7398, 0x739c, 0x739e, 0x739f, 0x73a0, 0x73a2,
+ 0x73a5, 0x73a6, 0x73aa, 0x73ab, 0x73ad, 0x73b5, 0x73b7, 0x73b9,
+ 0x73bc, 0x73bd, 0x73bf, 0x73c5, 0x73c6, 0x73c9, 0x73cb, 0x73cc,
+ 0x73cf, 0x73d2, 0x73d3, 0x73d6, 0x73d9, 0x73dd, 0x73e1, 0x73e3,
+ 0x73e6, 0x73e7, 0x73e9, 0x73f4, 0x73f5, 0x73f7, 0x73f9, 0x73fa,
+ 0x73fb, 0x73fd, 0x73ff, 0x7400, 0x7401, 0x7404, 0x7407, 0x740a,
+ 0x7411, 0x741a, 0x741b, 0x7424, 0x7426, 0x7428, 0x7429, 0x742a,
+ 0x742b, 0x742c, 0x742d, 0x742e, 0x742f, 0x7430, 0x7431, 0x7439,
+ 0x7440, 0x7443, 0x7444, 0x7446, 0x7447, 0x744b, 0x744d, 0x7451,
+ 0x7452, 0x7457, 0x745d, 0x7462, 0x7466, 0x7467, 0x7468, 0x746b,
+ 0x746d, 0x746e, 0x7471, 0x7472, 0x7480, 0x7481, 0x7485, 0x7486,
+ 0x7487, 0x7489, 0x748f, 0x7490, 0x7491, 0x7492, 0x7498, 0x7499,
+ 0x749a, 0x749c, 0x749f, 0x74a0, 0x74a1, 0x74a3, 0x74a6, 0x74a8,
+ 0x74a9, 0x74aa, 0x74ab, 0x74ae, 0x74af, 0x74b1, 0x74b2, 0x74b5,
+ 0x74b9, 0x74bb, 0x74bf, 0x74c8, 0x74c9, 0x74cc, 0x74d0, 0x74d3,
+ 0x74d8, 0x74da, 0x74db, 0x74de, 0x74df, 0x74e4, 0x74e8, 0x74ea,
+ 0x74eb, 0x74ef, 0x74f4, 0x74fa, 0x74fb, 0x74fc, 0x74ff, 0x7506,
+ 0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527, 0x7529,
+ 0x752a, 0x752f, 0x7536, 0x7539, 0x753d, 0x753e, 0x753f, 0x7540,
+ 0x7543, 0x7547, 0x7548, 0x754e, 0x7550, 0x7552, 0x7557, 0x755e,
+ 0x755f, 0x7561, 0x756f, 0x7571, 0x7579, 0x757a, 0x757b, 0x757c,
+ 0x757d, 0x757e, 0x7581, 0x7585, 0x7590, 0x7592, 0x7593, 0x7595,
+ 0x7599, 0x759c, 0x75a2, 0x75a4, 0x75b4, 0x75ba, 0x75bf, 0x75c0,
+ 0x75c1, 0x75c4, 0x75c6, 0x75cc, 0x75ce, 0x75cf, 0x75d7, 0x75dc,
+ 0x75df, 0x75e0, 0x75e1, 0x75e4, 0x75e7, 0x75ec, 0x75ee, 0x75ef,
+ 0x75f1, 0x75f9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607, 0x7608,
+ 0x760a, 0x760c, 0x760f, 0x7612, 0x7613, 0x7615, 0x7616, 0x7619,
+ 0x761b, 0x761c, 0x761d, 0x761e, 0x7623, 0x7625, 0x7626, 0x7629,
+ 0x762d, 0x7632, 0x7633, 0x7635, 0x7638, 0x7639, 0x763a, 0x763c,
+ 0x764a, 0x7640, 0x7641, 0x7643, 0x7644, 0x7645, 0x7649, 0x764b,
+ 0x7655, 0x7659, 0x765f, 0x7664, 0x7665, 0x766d, 0x766e, 0x766f,
+ 0x7671, 0x7674, 0x7681, 0x7685, 0x768c, 0x768d, 0x7695, 0x769b,
+ 0x769c, 0x769d, 0x769f, 0x76a0, 0x76a2, 0x76a3, 0x76a4, 0x76a5,
+ 0x76a6, 0x76a7, 0x76a8, 0x76aa, 0x76ad, 0x76bd, 0x76c1, 0x76c5,
+ 0x76c9, 0x76cb, 0x76cc, 0x76ce, 0x76d4, 0x76d9, 0x76e0, 0x76e6,
+ 0x76e8, 0x76ec, 0x76f0, 0x76f1, 0x76f6, 0x76f9, 0x76fc, 0x7700,
+ 0x7706, 0x770a, 0x770e, 0x7712, 0x7714, 0x7715, 0x7717, 0x7719,
+ 0x771a, 0x771c, 0x7722, 0x7728, 0x772d, 0x772e, 0x772f, 0x7734,
+ 0x7735, 0x7736, 0x7739, 0x773d, 0x773e, 0x7742, 0x7745, 0x7746,
+ 0x774a, 0x774d, 0x774e, 0x774f, 0x7752, 0x7756, 0x7757, 0x775c,
+ 0x775e, 0x775f, 0x7760, 0x7762, 0x7764, 0x7767, 0x776a, 0x776c,
+ 0x7770, 0x7772, 0x7773, 0x7774, 0x777a, 0x777d, 0x7780, 0x7784,
+ 0x778c, 0x778d, 0x7794, 0x7795, 0x7796, 0x779a, 0x779f, 0x77a2,
+ 0x77a7, 0x77aa, 0x77ae, 0x77af, 0x77b1, 0x77b5, 0x77be, 0x77c3,
+ 0x77c9, 0x77d1, 0x77d2, 0x77d5, 0x77d9, 0x77de, 0x77df, 0x77e0,
+ 0x77e4, 0x77e6, 0x77ea, 0x77ec, 0x77f0, 0x77f1, 0x77f4, 0x77f8,
+ 0x77fb, 0x7805, 0x7806, 0x7809, 0x780d, 0x780e, 0x7811, 0x781d,
+ 0x7821, 0x7822, 0x7823, 0x782d, 0x782e, 0x7830, 0x7835, 0x7837,
+ 0x7843, 0x7844, 0x7847, 0x7848, 0x784c, 0x784e, 0x7852, 0x785c,
+ 0x785e, 0x7860, 0x7861, 0x7863, 0x7864, 0x7868, 0x786a, 0x786e,
+ 0x787a, 0x787e, 0x788a, 0x788f, 0x7894, 0x7898, 0x78a1, 0x789d,
+ 0x789e, 0x789f, 0x78a4, 0x78a8, 0x78ac, 0x78ad, 0x78b0, 0x78b1,
+ 0x78b2, 0x78b3, 0x78bb, 0x78bd, 0x78bf, 0x78c7, 0x78c8, 0x78c9,
+ 0x78cc, 0x78ce, 0x78d2, 0x78d3, 0x78d5, 0x78d6, 0x78e4, 0x78db,
+ 0x78df, 0x78e0, 0x78e1, 0x78e6, 0x78ea, 0x78f2, 0x78f3, 0x7900,
+ 0x78f6, 0x78f7, 0x78fa, 0x78fb, 0x78ff, 0x7906, 0x790c, 0x7910,
+ 0x791a, 0x791c, 0x791e, 0x791f, 0x7920, 0x7925, 0x7927, 0x7929,
+ 0x792d, 0x7931, 0x7934, 0x7935, 0x793b, 0x793d, 0x793f, 0x7944,
+ 0x7945, 0x7946, 0x794a, 0x794b, 0x794f, 0x7951, 0x7954, 0x7958,
+ 0x795b, 0x795c, 0x7967, 0x7969, 0x796b, 0x7972, 0x7979, 0x797b,
+ 0x797c, 0x797e, 0x798b, 0x798c, 0x7991, 0x7993, 0x7994, 0x7995,
+ 0x7996, 0x7998, 0x799b, 0x799c, 0x79a1, 0x79a8, 0x79a9, 0x79ab,
+ 0x79af, 0x79b1, 0x79b4, 0x79b8, 0x79bb, 0x79c2, 0x79c4, 0x79c7,
+ 0x79c8, 0x79ca, 0x79cf, 0x79d4, 0x79d6, 0x79da, 0x79dd, 0x79de,
+ 0x79e0, 0x79e2, 0x79e5, 0x79ea, 0x79eb, 0x79ed, 0x79f1, 0x79f8,
+ 0x79fc, 0x7a02, 0x7a03, 0x7a07, 0x7a09, 0x7a0a, 0x7a0c, 0x7a11,
+ 0x7a15, 0x7a1b, 0x7a1e, 0x7a21, 0x7a27, 0x7a2b, 0x7a2d, 0x7a2f,
+ 0x7a30, 0x7a34, 0x7a35, 0x7a38, 0x7a39, 0x7a3a, 0x7a44, 0x7a45,
+ 0x7a47, 0x7a48, 0x7a4c, 0x7a55, 0x7a56, 0x7a59, 0x7a5c, 0x7a5d,
+ 0x7a5f, 0x7a60, 0x7a65, 0x7a67, 0x7a6a, 0x7a6d, 0x7a75, 0x7a78,
+ 0x7a7e, 0x7a80, 0x7a82, 0x7a85, 0x7a86, 0x7a8a, 0x7a8b, 0x7a90,
+ 0x7a91, 0x7a94, 0x7a9e, 0x7aa0, 0x7aa3, 0x7aac, 0x7ab3, 0x7ab5,
+ 0x7ab9, 0x7abb, 0x7abc, 0x7ac6, 0x7ac9, 0x7acc, 0x7ace, 0x7ad1,
+ 0x7adb, 0x7ae8, 0x7ae9, 0x7aeb, 0x7aec, 0x7af1, 0x7af4, 0x7afb,
+ 0x7afd, 0x7afe, 0x7b07, 0x7b14, 0x7b1f, 0x7b23, 0x7b27, 0x7b29,
+ 0x7b2a, 0x7b2b, 0x7b2d, 0x7b2e, 0x7b2f, 0x7b30, 0x7b31, 0x7b34,
+ 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b47, 0x7b4e, 0x7b55, 0x7b60,
+ 0x7b64, 0x7b66, 0x7b69, 0x7b6a, 0x7b6d, 0x7b6f, 0x7b72, 0x7b73,
+ 0x7b77, 0x7b84, 0x7b89, 0x7b8e, 0x7b90, 0x7b91, 0x7b96, 0x7b9b,
+ 0x7b9e, 0x7ba0, 0x7ba5, 0x7bac, 0x7baf, 0x7bb0, 0x7bb2, 0x7bb5,
+ 0x7bb6, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bc2, 0x7bc5, 0x7bc8,
+ 0x7bca, 0x7bd4, 0x7bd6, 0x7bd7, 0x7bd9, 0x7bda, 0x7bdb, 0x7be8,
+ 0x7bea, 0x7bf2, 0x7bf4, 0x7bf5, 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfc,
+ 0x7bfe, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c06, 0x7c09, 0x7c0b,
+ 0x7c0c, 0x7c0e, 0x7c0f, 0x7c19, 0x7c1b, 0x7c20, 0x7c25, 0x7c26,
+ 0x7c28, 0x7c2c, 0x7c31, 0x7c33, 0x7c34, 0x7c36, 0x7c39, 0x7c3a,
+ 0x7c46, 0x7c4a, 0x7c55, 0x7c51, 0x7c52, 0x7c53, 0x7c59, 0x7c5a,
+ 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e, 0x7c61, 0x7c63, 0x7c67, 0x7c69,
+ 0x7c6d, 0x7c6e, 0x7c70, 0x7c72, 0x7c79, 0x7c7c, 0x7c7d, 0x7c86,
+ 0x7c87, 0x7c8f, 0x7c94, 0x7c9e, 0x7ca0, 0x7ca6, 0x7cb0, 0x7cb6,
+ 0x7cb7, 0x7cba, 0x7cbb, 0x7cbc, 0x7cbf, 0x7cc4, 0x7cc7, 0x7cc8,
+ 0x7cc9, 0x7ccd, 0x7ccf, 0x7cd3, 0x7cd4, 0x7cd5, 0x7cd7, 0x7cd9,
+ 0x7cda, 0x7cdd, 0x7ce6, 0x7ce9, 0x7ceb, 0x7cf5, 0x7d03, 0x7d07,
+ 0x7d08, 0x7d09, 0x7d0f, 0x7d11, 0x7d12, 0x7d13, 0x7d16, 0x7d1d,
+ 0x7d1e, 0x7d23, 0x7d26, 0x7d2a, 0x7d2d, 0x7d31, 0x7d3c, 0x7d3d,
+ 0x7d3e, 0x7d40, 0x7d41, 0x7d47, 0x7d48, 0x7d4d, 0x7d51, 0x7d53,
+ 0x7d57, 0x7d59, 0x7d5a, 0x7d5c, 0x7d5d, 0x7d65, 0x7d67, 0x7d6a,
+ 0x7d70, 0x7d78, 0x7d7a, 0x7d7b, 0x7d7f, 0x7d81, 0x7d82, 0x7d83,
+ 0x7d85, 0x7d86, 0x7d88, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d91, 0x7d96,
+ 0x7d97, 0x7d9d, 0x7d9e, 0x7da6, 0x7da7, 0x7daa, 0x7db3, 0x7db6,
+ 0x7db7, 0x7db9, 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dcc,
+ 0x7dcd, 0x7dce, 0x7dd7, 0x7dd9, 0x7e00, 0x7de2, 0x7de5, 0x7de6,
+ 0x7dea, 0x7deb, 0x7ded, 0x7df1, 0x7df5, 0x7df6, 0x7df9, 0x7dfa,
+ 0x7e08, 0x7e10, 0x7e11, 0x7e15, 0x7e17, 0x7e1c, 0x7e1d, 0x7e20,
+ 0x7e27, 0x7e28, 0x7e2c, 0x7e2d, 0x7e2f, 0x7e33, 0x7e36, 0x7e3f,
+ 0x7e44, 0x7e45, 0x7e47, 0x7e4e, 0x7e50, 0x7e52, 0x7e58, 0x7e5f,
+ 0x7e61, 0x7e62, 0x7e65, 0x7e6b, 0x7e6e, 0x7e6f, 0x7e73, 0x7e78,
+ 0x7e7e, 0x7e81, 0x7e86, 0x7e87, 0x7e8a, 0x7e8d, 0x7e91, 0x7e95,
+ 0x7e98, 0x7e9a, 0x7e9d, 0x7e9e, 0x7f3c, 0x7f3b, 0x7f3d, 0x7f3e,
+ 0x7f3f, 0x7f43, 0x7f44, 0x7f47, 0x7f4f, 0x7f52, 0x7f53, 0x7f5b,
+ 0x7f5c, 0x7f5d, 0x7f61, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f6d,
+ 0x7f71, 0x7f7d, 0x7f7e, 0x7f7f, 0x7f80, 0x7f8b, 0x7f8d, 0x7f8f,
+ 0x7f90, 0x7f91, 0x7f96, 0x7f97, 0x7f9c, 0x7fa1, 0x7fa2, 0x7fa6,
+ 0x7faa, 0x7fad, 0x7fb4, 0x7fbc, 0x7fbf, 0x7fc0, 0x7fc3, 0x7fc8,
+ 0x7fce, 0x7fcf, 0x7fdb, 0x7fdf, 0x7fe3, 0x7fe5, 0x7fe8, 0x7fec,
+ 0x7fee, 0x7fef, 0x7ff2, 0x7ffa, 0x7ffd, 0x7ffe, 0x7fff, 0x8007,
+ 0x8008, 0x800a, 0x800d, 0x800e, 0x800f, 0x8011, 0x8013, 0x8014,
+ 0x8016, 0x801d, 0x801e, 0x801f, 0x8020, 0x8024, 0x8026, 0x802c,
+ 0x802e, 0x8030, 0x8034, 0x8035, 0x8037, 0x8039, 0x803a, 0x803c,
+ 0x803e, 0x8040, 0x8044, 0x8060, 0x8064, 0x8066, 0x806d, 0x8071,
+ 0x8075, 0x8081, 0x8088, 0x808e, 0x809c, 0x809e, 0x80a6, 0x80a7,
+ 0x80ab, 0x80b8, 0x80b9, 0x80c8, 0x80cd, 0x80cf, 0x80d2, 0x80d4,
+ 0x80d5, 0x80d7, 0x80d8, 0x80e0, 0x80ed, 0x80ee, 0x80f0, 0x80f2,
+ 0x80f3, 0x80f6, 0x80f9, 0x80fa, 0x80fe, 0x8103, 0x810b, 0x8116,
+ 0x8117, 0x8118, 0x811c, 0x811e, 0x8120, 0x8124, 0x8127, 0x812c,
+ 0x8130, 0x8135, 0x813a, 0x813c, 0x8145, 0x8147, 0x814a, 0x814c,
+ 0x8152, 0x8157, 0x8160, 0x8161, 0x8167, 0x8168, 0x8169, 0x816d,
+ 0x816f, 0x8177, 0x8181, 0x8190, 0x8184, 0x8185, 0x8186, 0x818b,
+ 0x818e, 0x8196, 0x8198, 0x819b, 0x819e, 0x81a2, 0x81ae, 0x81b2,
+ 0x81b4, 0x81bb, 0x81cb, 0x81c3, 0x81c5, 0x81ca, 0x81ce, 0x81cf,
+ 0x81d5, 0x81d7, 0x81db, 0x81dd, 0x81de, 0x81e1, 0x81e4, 0x81eb,
+ 0x81ec, 0x81f0, 0x81f1, 0x81f2, 0x81f5, 0x81f6, 0x81f8, 0x81f9,
+ 0x81fd, 0x81ff, 0x8200, 0x8203, 0x820f, 0x8213, 0x8214, 0x8219,
+ 0x821a, 0x821d, 0x8221, 0x8222, 0x8228, 0x8232, 0x8234, 0x823a,
+ 0x8243, 0x8244, 0x8245, 0x8246, 0x824b, 0x824e, 0x824f, 0x8251,
+ 0x8256, 0x825c, 0x8260, 0x8263, 0x8267, 0x826d, 0x8274, 0x827b,
+ 0x827d, 0x827f, 0x8280, 0x8281, 0x8283, 0x8284, 0x8287, 0x8289,
+ 0x828a, 0x828e, 0x8291, 0x8294, 0x8296, 0x8298, 0x829a, 0x829b,
+ 0x82a0, 0x82a1, 0x82a3, 0x82a4, 0x82a7, 0x82a8, 0x82a9, 0x82aa,
+ 0x82ae, 0x82b0, 0x82b2, 0x82b4, 0x82b7, 0x82ba, 0x82bc, 0x82be,
+ 0x82bf, 0x82c6, 0x82d0, 0x82d5, 0x82da, 0x82e0, 0x82e2, 0x82e4,
+ 0x82e8, 0x82ea, 0x82ed, 0x82ef, 0x82f6, 0x82f7, 0x82fd, 0x82fe,
+ 0x8300, 0x8301, 0x8307, 0x8308, 0x830a, 0x830b, 0x8354, 0x831b,
+ 0x831d, 0x831e, 0x831f, 0x8321, 0x8322, 0x832c, 0x832d, 0x832e,
+ 0x8330, 0x8333, 0x8337, 0x833a, 0x833c, 0x833d, 0x8342, 0x8343,
+ 0x8344, 0x8347, 0x834d, 0x834e, 0x8351, 0x8355, 0x8356, 0x8357,
+ 0x8370, 0x8378, 0x837d, 0x837f, 0x8380, 0x8382, 0x8384, 0x8386,
+ 0x838d, 0x8392, 0x8394, 0x8395, 0x8398, 0x8399, 0x839b, 0x839c,
+ 0x839d, 0x83a6, 0x83a7, 0x83a9, 0x83ac, 0x83be, 0x83bf, 0x83c0,
+ 0x83c7, 0x83c9, 0x83cf, 0x83d0, 0x83d1, 0x83d4, 0x83dd, 0x8353,
+ 0x83e8, 0x83ea, 0x83f6, 0x83f8, 0x83f9, 0x83fc, 0x8401, 0x8406,
+ 0x840a, 0x840f, 0x8411, 0x8415, 0x8419, 0x83ad, 0x842f, 0x8439,
+ 0x8445, 0x8447, 0x8448, 0x844a, 0x844d, 0x844f, 0x8451, 0x8452,
+ 0x8456, 0x8458, 0x8459, 0x845a, 0x845c, 0x8460, 0x8464, 0x8465,
+ 0x8467, 0x846a, 0x8470, 0x8473, 0x8474, 0x8476, 0x8478, 0x847c,
+ 0x847d, 0x8481, 0x8485, 0x8492, 0x8493, 0x8495, 0x849e, 0x84a6,
+ 0x84a8, 0x84a9, 0x84aa, 0x84af, 0x84b1, 0x84b4, 0x84ba, 0x84bd,
+ 0x84be, 0x84c0, 0x84c2, 0x84c7, 0x84c8, 0x84cc, 0x84cf, 0x84d3,
+ 0x84dc, 0x84e7, 0x84ea, 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f7,
+ 0x8532, 0x84fa, 0x84fb, 0x84fd, 0x8502, 0x8503, 0x8507, 0x850c,
+ 0x850e, 0x8510, 0x851c, 0x851e, 0x8522, 0x8523, 0x8524, 0x8525,
+ 0x8527, 0x852a, 0x852b, 0x852f, 0x8533, 0x8534, 0x8536, 0x853f,
+ 0x8546, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8556, 0x8559,
+ 0x855c, 0x855d, 0x855e, 0x855f, 0x8560, 0x8561, 0x8562, 0x8564,
+ 0x856b, 0x856f, 0x8579, 0x857a, 0x857b, 0x857d, 0x857f, 0x8581,
+ 0x8585, 0x8586, 0x8589, 0x858b, 0x858c, 0x858f, 0x8593, 0x8598,
+ 0x859d, 0x859f, 0x85a0, 0x85a2, 0x85a5, 0x85a7, 0x85b4, 0x85b6,
+ 0x85b7, 0x85b8, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c2, 0x85c7,
+ 0x85ca, 0x85cb, 0x85ce, 0x85ad, 0x85d8, 0x85da, 0x85df, 0x85e0,
+ 0x85e6, 0x85e8, 0x85ed, 0x85f3, 0x85f6, 0x85fc, 0x85ff, 0x8600,
+ 0x8604, 0x8605, 0x860d, 0x860e, 0x8610, 0x8611, 0x8612, 0x8618,
+ 0x8619, 0x861b, 0x861e, 0x8621, 0x8627, 0x8629, 0x8636, 0x8638,
+ 0x863a, 0x863c, 0x863d, 0x8640, 0x8642, 0x8646, 0x8652, 0x8653,
+ 0x8656, 0x8657, 0x8658, 0x8659, 0x865d, 0x8660, 0x8661, 0x8662,
+ 0x8663, 0x8664, 0x8669, 0x866c, 0x866f, 0x8675, 0x8676, 0x8677,
+ 0x867a, 0x868d, 0x8691, 0x8696, 0x8698, 0x869a, 0x869c, 0x86a1,
+ 0x86a6, 0x86a7, 0x86a8, 0x86ad, 0x86b1, 0x86b3, 0x86b4, 0x86b5,
+ 0x86b7, 0x86b8, 0x86b9, 0x86bf, 0x86c0, 0x86c1, 0x86c3, 0x86c5,
+ 0x86d1, 0x86d2, 0x86d5, 0x86d7, 0x86da, 0x86dc, 0x86e0, 0x86e3,
+ 0x86e5, 0x86e7, 0x8688, 0x86fa, 0x86fc, 0x86fd, 0x8704, 0x8705,
+ 0x8707, 0x870b, 0x870e, 0x870f, 0x8710, 0x8713, 0x8714, 0x8719,
+ 0x871e, 0x871f, 0x8721, 0x8723, 0x8728, 0x872e, 0x872f, 0x8731,
+ 0x8732, 0x8739, 0x873a, 0x873c, 0x873d, 0x873e, 0x8740, 0x8743,
+ 0x8745, 0x874d, 0x8758, 0x875d, 0x8761, 0x8764, 0x8765, 0x876f,
+ 0x8771, 0x8772, 0x877b, 0x8783, 0x8784, 0x8785, 0x8786, 0x8787,
+ 0x8788, 0x8789, 0x878b, 0x878c, 0x8790, 0x8793, 0x8795, 0x8797,
+ 0x8798, 0x8799, 0x879e, 0x87a0, 0x87a3, 0x87a7, 0x87ac, 0x87ad,
+ 0x87ae, 0x87b1, 0x87b5, 0x87be, 0x87bf, 0x87c1, 0x87c8, 0x87c9,
+ 0x87ca, 0x87ce, 0x87d5, 0x87d6, 0x87d9, 0x87da, 0x87dc, 0x87df,
+ 0x87e2, 0x87e3, 0x87e4, 0x87ea, 0x87eb, 0x87ed, 0x87f1, 0x87f3,
+ 0x87f8, 0x87fa, 0x87ff, 0x8801, 0x8803, 0x8806, 0x8809, 0x880a,
+ 0x880b, 0x8810, 0x8819, 0x8812, 0x8813, 0x8814, 0x8818, 0x881a,
+ 0x881b, 0x881c, 0x881e, 0x881f, 0x8828, 0x882d, 0x882e, 0x8830,
+ 0x8832, 0x8835, 0x883a, 0x883c, 0x8841, 0x8843, 0x8845, 0x8848,
+ 0x8849, 0x884a, 0x884b, 0x884e, 0x8851, 0x8855, 0x8856, 0x8858,
+ 0x885a, 0x885c, 0x885f, 0x8860, 0x8864, 0x8869, 0x8871, 0x8879,
+ 0x887b, 0x8880, 0x8898, 0x889a, 0x889b, 0x889c, 0x889f, 0x88a0,
+ 0x88a8, 0x88aa, 0x88ba, 0x88bd, 0x88be, 0x88c0, 0x88ca, 0x88cb,
+ 0x88cc, 0x88cd, 0x88ce, 0x88d1, 0x88d2, 0x88d3, 0x88db, 0x88de,
+ 0x88e7, 0x88ef, 0x88f0, 0x88f1, 0x88f5, 0x88f7, 0x8901, 0x8906,
+ 0x890d, 0x890e, 0x890f, 0x8915, 0x8916, 0x8918, 0x8919, 0x891a,
+ 0x891c, 0x8920, 0x8926, 0x8927, 0x8928, 0x8930, 0x8931, 0x8932,
+ 0x8935, 0x8939, 0x893a, 0x893e, 0x8940, 0x8942, 0x8945, 0x8946,
+ 0x8949, 0x894f, 0x8952, 0x8957, 0x895a, 0x895b, 0x895c, 0x8961,
+ 0x8962, 0x8963, 0x896b, 0x896e, 0x8970, 0x8973, 0x8975, 0x897a,
+ 0x897b, 0x897c, 0x897d, 0x8989, 0x898d, 0x8990, 0x8994, 0x8995,
+ 0x899b, 0x899c, 0x899f, 0x89a0, 0x89a5, 0x89b0, 0x89b4, 0x89b5,
+ 0x89b6, 0x89b7, 0x89bc, 0x89d4, 0x89d5, 0x89d6, 0x89d7, 0x89d8,
+ 0x89e5, 0x89e9, 0x89eb, 0x89ed, 0x89f1, 0x89f3, 0x89f6, 0x89f9,
+ 0x89fd, 0x89ff, 0x8a04, 0x8a05, 0x8a07, 0x8a0f, 0x8a11, 0x8a12,
+ 0x8a14, 0x8a15, 0x8a1e, 0x8a20, 0x8a22, 0x8a24, 0x8a26, 0x8a2b,
+ 0x8a2c, 0x8a2f, 0x8a35, 0x8a37, 0x8a3d, 0x8a3e, 0x8a40, 0x8a43,
+ 0x8a45, 0x8a47, 0x8a49, 0x8a4d, 0x8a4e, 0x8a53, 0x8a56, 0x8a57,
+ 0x8a58, 0x8a5c, 0x8a5d, 0x8a61, 0x8a65, 0x8a67, 0x8a75, 0x8a76,
+ 0x8a77, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7e, 0x8a7f, 0x8a80, 0x8a83,
+ 0x8a86, 0x8a8b, 0x8a8f, 0x8a90, 0x8a92, 0x8a96, 0x8a97, 0x8a99,
+ 0x8a9f, 0x8aa7, 0x8aa9, 0x8aae, 0x8aaf, 0x8ab3, 0x8ab6, 0x8ab7,
+ 0x8abb, 0x8abe, 0x8ac3, 0x8ac6, 0x8ac8, 0x8ac9, 0x8aca, 0x8ad1,
+ 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad7, 0x8add, 0x8adf, 0x8aec, 0x8af0,
+ 0x8af4, 0x8af5, 0x8af6, 0x8afc, 0x8aff, 0x8b05, 0x8b06, 0x8b0b,
+ 0x8b11, 0x8b1c, 0x8b1e, 0x8b1f, 0x8b0a, 0x8b2d, 0x8b30, 0x8b37,
+ 0x8b3c, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46, 0x8b48, 0x8b52,
+ 0x8b53, 0x8b54, 0x8b59, 0x8b4d, 0x8b5e, 0x8b63, 0x8b6d, 0x8b76,
+ 0x8b78, 0x8b79, 0x8b7c, 0x8b7e, 0x8b81, 0x8b84, 0x8b85, 0x8b8b,
+ 0x8b8d, 0x8b8f, 0x8b94, 0x8b95, 0x8b9c, 0x8b9e, 0x8b9f, 0x8c38,
+ 0x8c39, 0x8c3d, 0x8c3e, 0x8c45, 0x8c47, 0x8c49, 0x8c4b, 0x8c4f,
+ 0x8c51, 0x8c53, 0x8c54, 0x8c57, 0x8c58, 0x8c5b, 0x8c5d, 0x8c59,
+ 0x8c63, 0x8c64, 0x8c66, 0x8c68, 0x8c69, 0x8c6d, 0x8c73, 0x8c75,
+ 0x8c76, 0x8c7b, 0x8c7e, 0x8c86, 0x8c87, 0x8c8b, 0x8c90, 0x8c92,
+ 0x8c93, 0x8c99, 0x8c9b, 0x8c9c, 0x8ca4, 0x8cb9, 0x8cba, 0x8cc5,
+ 0x8cc6, 0x8cc9, 0x8ccb, 0x8ccf, 0x8cd6, 0x8cd5, 0x8cd9, 0x8cdd,
+ 0x8ce1, 0x8ce8, 0x8cec, 0x8cef, 0x8cf0, 0x8cf2, 0x8cf5, 0x8cf7,
+ 0x8cf8, 0x8cfe, 0x8cff, 0x8d01, 0x8d03, 0x8d09, 0x8d12, 0x8d17,
+ 0x8d1b, 0x8d65, 0x8d69, 0x8d6c, 0x8d6e, 0x8d7f, 0x8d82, 0x8d84,
+ 0x8d88, 0x8d8d, 0x8d90, 0x8d91, 0x8d95, 0x8d9e, 0x8d9f, 0x8da0,
+ 0x8da6, 0x8dab, 0x8dac, 0x8daf, 0x8db2, 0x8db5, 0x8db7, 0x8db9,
+ 0x8dbb, 0x8dc0, 0x8dc5, 0x8dc6, 0x8dc7, 0x8dc8, 0x8dca, 0x8dce,
+ 0x8dd1, 0x8dd4, 0x8dd5, 0x8dd7, 0x8dd9, 0x8de4, 0x8de5, 0x8de7,
+ 0x8dec, 0x8df0, 0x8dbc, 0x8df1, 0x8df2, 0x8df4, 0x8dfd, 0x8e01,
+ 0x8e04, 0x8e05, 0x8e06, 0x8e0b, 0x8e11, 0x8e14, 0x8e16, 0x8e20,
+ 0x8e21, 0x8e22, 0x8e23, 0x8e26, 0x8e27, 0x8e31, 0x8e33, 0x8e36,
+ 0x8e37, 0x8e38, 0x8e39, 0x8e3d, 0x8e40, 0x8e41, 0x8e4b, 0x8e4d,
+ 0x8e4e, 0x8e4f, 0x8e54, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e61,
+ 0x8e62, 0x8e69, 0x8e6c, 0x8e6d, 0x8e6f, 0x8e70, 0x8e71, 0x8e79,
+ 0x8e7a, 0x8e7b, 0x8e82, 0x8e83, 0x8e89, 0x8e90, 0x8e92, 0x8e95,
+ 0x8e9a, 0x8e9b, 0x8e9d, 0x8e9e, 0x8ea2, 0x8ea7, 0x8ea9, 0x8ead,
+ 0x8eae, 0x8eb3, 0x8eb5, 0x8eba, 0x8ebb, 0x8ec0, 0x8ec1, 0x8ec3,
+ 0x8ec4, 0x8ec7, 0x8ecf, 0x8ed1, 0x8ed4, 0x8edc, 0x8ee8, 0x8eee,
+ 0x8ef0, 0x8ef1, 0x8ef7, 0x8ef9, 0x8efa, 0x8eed, 0x8f00, 0x8f02,
+ 0x8f07, 0x8f08, 0x8f0f, 0x8f10, 0x8f16, 0x8f17, 0x8f18, 0x8f1e,
+ 0x8f20, 0x8f21, 0x8f23, 0x8f25, 0x8f27, 0x8f28, 0x8f2c, 0x8f2d,
+ 0x8f2e, 0x8f34, 0x8f35, 0x8f36, 0x8f37, 0x8f3a, 0x8f40, 0x8f41,
+ 0x8f43, 0x8f47, 0x8f4f, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55,
+ 0x8f58, 0x8f5d, 0x8f5e, 0x8f65, 0x8f9d, 0x8fa0, 0x8fa1, 0x8fa4,
+ 0x8fa5, 0x8fa6, 0x8fb5, 0x8fb6, 0x8fb8, 0x8fbe, 0x8fc0, 0x8fc1,
+ 0x8fc6, 0x8fca, 0x8fcb, 0x8fcd, 0x8fd0, 0x8fd2, 0x8fd3, 0x8fd5,
+ 0x8fe0, 0x8fe3, 0x8fe4, 0x8fe8, 0x8fee, 0x8ff1, 0x8ff5, 0x8ff6,
+ 0x8ffb, 0x8ffe, 0x9002, 0x9004, 0x9008, 0x900c, 0x9018, 0x901b,
+ 0x9028, 0x9029, 0x902f, 0x902a, 0x902c, 0x902d, 0x9033, 0x9034,
+ 0x9037, 0x903f, 0x9043, 0x9044, 0x904c, 0x905b, 0x905d, 0x9062,
+ 0x9066, 0x9067, 0x906c, 0x9070, 0x9074, 0x9079, 0x9085, 0x9088,
+ 0x908b, 0x908c, 0x908e, 0x9090, 0x9095, 0x9097, 0x9098, 0x9099,
+ 0x909b, 0x90a0, 0x90a1, 0x90a2, 0x90a5, 0x90b0, 0x90b2, 0x90b3,
+ 0x90b4, 0x90b6, 0x90bd, 0x90cc, 0x90be, 0x90c3, 0x90c4, 0x90c5,
+ 0x90c7, 0x90c8, 0x90d5, 0x90d7, 0x90d8, 0x90d9, 0x90dc, 0x90dd,
+ 0x90df, 0x90e5, 0x90d2, 0x90f6, 0x90eb, 0x90ef, 0x90f0, 0x90f4,
+ 0x90fe, 0x90ff, 0x9100, 0x9104, 0x9105, 0x9106, 0x9108, 0x910d,
+ 0x9110, 0x9114, 0x9116, 0x9117, 0x9118, 0x911a, 0x911c, 0x911e,
+ 0x9120, 0x9125, 0x9122, 0x9123, 0x9127, 0x9129, 0x912e, 0x912f,
+ 0x9131, 0x9134, 0x9136, 0x9137, 0x9139, 0x913a, 0x913c, 0x913d,
+ 0x9143, 0x9147, 0x9148, 0x914f, 0x9153, 0x9157, 0x9159, 0x915a,
+ 0x915b, 0x9161, 0x9164, 0x9167, 0x916d, 0x9174, 0x9179, 0x917a,
+ 0x917b, 0x9181, 0x9183, 0x9185, 0x9186, 0x918a, 0x918e, 0x9191,
+ 0x9193, 0x9194, 0x9195, 0x9198, 0x919e, 0x91a1, 0x91a6, 0x91a8,
+ 0x91ac, 0x91ad, 0x91ae, 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b6,
+ 0x91bb, 0x91bc, 0x91bd, 0x91bf, 0x91c2, 0x91c3, 0x91c5, 0x91d3,
+ 0x91d4, 0x91d7, 0x91d9, 0x91da, 0x91de, 0x91e4, 0x91e5, 0x91e9,
+ 0x91ea, 0x91ec, 0x91ed, 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f7,
+ 0x91f9, 0x91fb, 0x91fd, 0x9200, 0x9201, 0x9204, 0x9205, 0x9206,
+ 0x9207, 0x9209, 0x920a, 0x920c, 0x9210, 0x9212, 0x9213, 0x9216,
+ 0x9218, 0x921c, 0x921d, 0x9223, 0x9224, 0x9225, 0x9226, 0x9228,
+ 0x922e, 0x922f, 0x9230, 0x9233, 0x9235, 0x9236, 0x9238, 0x9239,
+ 0x923a, 0x923c, 0x923e, 0x9240, 0x9242, 0x9243, 0x9246, 0x9247,
+ 0x924a, 0x924d, 0x924e, 0x924f, 0x9251, 0x9258, 0x9259, 0x925c,
+ 0x925d, 0x9260, 0x9261, 0x9265, 0x9267, 0x9268, 0x9269, 0x926e,
+ 0x926f, 0x9270, 0x9275, 0x9276, 0x9277, 0x9278, 0x9279, 0x927b,
+ 0x927c, 0x927d, 0x927f, 0x9288, 0x9289, 0x928a, 0x928d, 0x928e,
+ 0x9292, 0x9297, 0x9299, 0x929f, 0x92a0, 0x92a4, 0x92a5, 0x92a7,
+ 0x92a8, 0x92ab, 0x92af, 0x92b2, 0x92b6, 0x92b8, 0x92ba, 0x92bb,
+ 0x92bc, 0x92bd, 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c5,
+ 0x92c6, 0x92c7, 0x92c8, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92d0,
+ 0x92d3, 0x92d5, 0x92d7, 0x92d8, 0x92d9, 0x92dc, 0x92dd, 0x92df,
+ 0x92e0, 0x92e1, 0x92e3, 0x92e5, 0x92e7, 0x92e8, 0x92ec, 0x92ee,
+ 0x92f0, 0x92f9, 0x92fb, 0x92ff, 0x9300, 0x9302, 0x9308, 0x930d,
+ 0x9311, 0x9314, 0x9315, 0x931c, 0x931d, 0x931e, 0x931f, 0x9321,
+ 0x9324, 0x9325, 0x9327, 0x9329, 0x932a, 0x9333, 0x9334, 0x9336,
+ 0x9337, 0x9347, 0x9348, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355,
+ 0x9357, 0x9358, 0x935a, 0x935e, 0x9364, 0x9365, 0x9367, 0x9369,
+ 0x936a, 0x936d, 0x936f, 0x9370, 0x9371, 0x9373, 0x9374, 0x9376,
+ 0x937a, 0x937d, 0x937f, 0x9380, 0x9381, 0x9382, 0x9388, 0x938a,
+ 0x938b, 0x938d, 0x938f, 0x9392, 0x9395, 0x9398, 0x939b, 0x939e,
+ 0x93a1, 0x93a3, 0x93a4, 0x93a6, 0x93a8, 0x93ab, 0x93b4, 0x93b5,
+ 0x93b6, 0x93ba, 0x93a9, 0x93c1, 0x93c4, 0x93c5, 0x93c6, 0x93c7,
+ 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93d3, 0x93d9, 0x93dc,
+ 0x93de, 0x93df, 0x93e2, 0x93e6, 0x93e7, 0x93f9, 0x93f7, 0x93f8,
+ 0x93fa, 0x93fb, 0x93fd, 0x9401, 0x9402, 0x9404, 0x9408, 0x9409,
+ 0x940d, 0x940e, 0x940f, 0x9415, 0x9416, 0x9417, 0x941f, 0x942e,
+ 0x942f, 0x9431, 0x9432, 0x9433, 0x9434, 0x943b, 0x943f, 0x943d,
+ 0x9443, 0x9445, 0x9448, 0x944a, 0x944c, 0x9455, 0x9459, 0x945c,
+ 0x945f, 0x9461, 0x9463, 0x9468, 0x946b, 0x946d, 0x946e, 0x946f,
+ 0x9471, 0x9472, 0x9484, 0x9483, 0x9578, 0x9579, 0x957e, 0x9584,
+ 0x9588, 0x958c, 0x958d, 0x958e, 0x959d, 0x959e, 0x959f, 0x95a1,
+ 0x95a6, 0x95a9, 0x95ab, 0x95ac, 0x95b4, 0x95b6, 0x95ba, 0x95bd,
+ 0x95bf, 0x95c6, 0x95c8, 0x95c9, 0x95cb, 0x95d0, 0x95d1, 0x95d2,
+ 0x95d3, 0x95d9, 0x95da, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e4,
+ 0x95e6, 0x961d, 0x961e, 0x9622, 0x9624, 0x9625, 0x9626, 0x962c,
+ 0x9631, 0x9633, 0x9637, 0x9638, 0x9639, 0x963a, 0x963c, 0x963d,
+ 0x9641, 0x9652, 0x9654, 0x9656, 0x9657, 0x9658, 0x9661, 0x966e,
+ 0x9674, 0x967b, 0x967c, 0x967e, 0x967f, 0x9681, 0x9682, 0x9683,
+ 0x9684, 0x9689, 0x9691, 0x9696, 0x969a, 0x969d, 0x969f, 0x96a4,
+ 0x96a5, 0x96a6, 0x96a9, 0x96ae, 0x96af, 0x96b3, 0x96ba, 0x96ca,
+ 0x96d2, 0x5db2, 0x96d8, 0x96da, 0x96dd, 0x96de, 0x96df, 0x96e9,
+ 0x96ef, 0x96f1, 0x96fa, 0x9702, 0x9703, 0x9705, 0x9709, 0x971a,
+ 0x971b, 0x971d, 0x9721, 0x9722, 0x9723, 0x9728, 0x9731, 0x9733,
+ 0x9741, 0x9743, 0x974a, 0x974e, 0x974f, 0x9755, 0x9757, 0x9758,
+ 0x975a, 0x975b, 0x9763, 0x9767, 0x976a, 0x976e, 0x9773, 0x9776,
+ 0x9777, 0x9778, 0x977b, 0x977d, 0x977f, 0x9780, 0x9789, 0x9795,
+ 0x9796, 0x9797, 0x9799, 0x979a, 0x979e, 0x979f, 0x97a2, 0x97ac,
+ 0x97ae, 0x97b1, 0x97b2, 0x97b5, 0x97b6, 0x97b8, 0x97b9, 0x97ba,
+ 0x97bc, 0x97be, 0x97bf, 0x97c1, 0x97c4, 0x97c5, 0x97c7, 0x97c9,
+ 0x97ca, 0x97cc, 0x97cd, 0x97ce, 0x97d0, 0x97d1, 0x97d4, 0x97d7,
+ 0x97d8, 0x97d9, 0x97dd, 0x97de, 0x97e0, 0x97db, 0x97e1, 0x97e4,
+ 0x97ef, 0x97f1, 0x97f4, 0x97f7, 0x97f8, 0x97fa, 0x9807, 0x980a,
+ 0x9819, 0x980d, 0x980e, 0x9814, 0x9816, 0x981c, 0x981e, 0x9820,
+ 0x9823, 0x9826, 0x982b, 0x982e, 0x982f, 0x9830, 0x9832, 0x9833,
+ 0x9835, 0x9825, 0x983e, 0x9844, 0x9847, 0x984a, 0x9851, 0x9852,
+ 0x9853, 0x9856, 0x9857, 0x9859, 0x985a, 0x9862, 0x9863, 0x9865,
+ 0x9866, 0x986a, 0x986c, 0x98ab, 0x98ad, 0x98ae, 0x98b0, 0x98b4,
+ 0x98b7, 0x98b8, 0x98ba, 0x98bb, 0x98bf, 0x98c2, 0x98c5, 0x98c8,
+ 0x98cc, 0x98e1, 0x98e3, 0x98e5, 0x98e6, 0x98e7, 0x98ea, 0x98f3,
+ 0x98f6, 0x9902, 0x9907, 0x9908, 0x9911, 0x9915, 0x9916, 0x9917,
+ 0x991a, 0x991b, 0x991c, 0x991f, 0x9922, 0x9926, 0x9927, 0x992b,
+ 0x9931, 0x9932, 0x9933, 0x9934, 0x9935, 0x9939, 0x993a, 0x993b,
+ 0x993c, 0x9940, 0x9941, 0x9946, 0x9947, 0x9948, 0x994d, 0x994e,
+ 0x9954, 0x9958, 0x9959, 0x995b, 0x995c, 0x995e, 0x995f, 0x9960,
+ 0x999b, 0x999d, 0x999f, 0x99a6, 0x99b0, 0x99b1, 0x99b2, 0x99b5,
+ 0x99b9, 0x99ba, 0x99bd, 0x99bf, 0x99c3, 0x99c9, 0x99d3, 0x99d4,
+ 0x99d9, 0x99da, 0x99dc, 0x99de, 0x99e7, 0x99ea, 0x99eb, 0x99ec,
+ 0x99f0, 0x99f4, 0x99f5, 0x99f9, 0x99fd, 0x99fe, 0x9a02, 0x9a03,
+ 0x9a04, 0x9a0b, 0x9a0c, 0x9a10, 0x9a11, 0x9a16, 0x9a1e, 0x9a20,
+ 0x9a22, 0x9a23, 0x9a24, 0x9a27, 0x9a2d, 0x9a2e, 0x9a33, 0x9a35,
+ 0x9a36, 0x9a38, 0x9a47, 0x9a41, 0x9a44, 0x9a4a, 0x9a4b, 0x9a4c,
+ 0x9a4e, 0x9a51, 0x9a54, 0x9a56, 0x9a5d, 0x9aaa, 0x9aac, 0x9aae,
+ 0x9aaf, 0x9ab2, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab9, 0x9abb, 0x9abe,
+ 0x9abf, 0x9ac1, 0x9ac3, 0x9ac6, 0x9ac8, 0x9ace, 0x9ad0, 0x9ad2,
+ 0x9ad5, 0x9ad6, 0x9ad7, 0x9adb, 0x9adc, 0x9ae0, 0x9ae4, 0x9ae5,
+ 0x9ae7, 0x9ae9, 0x9aec, 0x9af2, 0x9af3, 0x9af5, 0x9af9, 0x9afa,
+ 0x9afd, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b03, 0x9b04, 0x9b05,
+ 0x9b08, 0x9b09, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b10, 0x9b12,
+ 0x9b16, 0x9b19, 0x9b1b, 0x9b1c, 0x9b20, 0x9b26, 0x9b2b, 0x9b2d,
+ 0x9b33, 0x9b34, 0x9b35, 0x9b37, 0x9b39, 0x9b3a, 0x9b3d, 0x9b48,
+ 0x9b4b, 0x9b4c, 0x9b55, 0x9b56, 0x9b57, 0x9b5b, 0x9b5e, 0x9b61,
+ 0x9b63, 0x9b65, 0x9b66, 0x9b68, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d,
+ 0x9b6e, 0x9b73, 0x9b75, 0x9b77, 0x9b78, 0x9b79, 0x9b7f, 0x9b80,
+ 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b89, 0x9b8a, 0x9b8b, 0x9b8d,
+ 0x9b8f, 0x9b90, 0x9b94, 0x9b9a, 0x9b9d, 0x9b9e, 0x9ba6, 0x9ba7,
+ 0x9ba9, 0x9bac, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb7, 0x9bb8, 0x9bbb,
+ 0x9bbc, 0x9bbe, 0x9bbf, 0x9bc1, 0x9bc7, 0x9bc8, 0x9bce, 0x9bd0,
+ 0x9bd7, 0x9bd8, 0x9bdd, 0x9bdf, 0x9be5, 0x9be7, 0x9bea, 0x9beb,
+ 0x9bef, 0x9bf3, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfd, 0x9bff,
+ 0x9c00, 0x9c02, 0x9c0b, 0x9c0f, 0x9c11, 0x9c16, 0x9c18, 0x9c19,
+ 0x9c1a, 0x9c1c, 0x9c1e, 0x9c22, 0x9c23, 0x9c26, 0x9c27, 0x9c28,
+ 0x9c29, 0x9c2a, 0x9c31, 0x9c35, 0x9c36, 0x9c37, 0x9c3d, 0x9c41,
+ 0x9c43, 0x9c44, 0x9c45, 0x9c49, 0x9c4a, 0x9c4e, 0x9c4f, 0x9c50,
+ 0x9c53, 0x9c54, 0x9c56, 0x9c58, 0x9c5b, 0x9c5d, 0x9c5e, 0x9c5f,
+ 0x9c63, 0x9c69, 0x9c6a, 0x9c5c, 0x9c6b, 0x9c68, 0x9c6e, 0x9c70,
+ 0x9c72, 0x9c75, 0x9c77, 0x9c7b, 0x9ce6, 0x9cf2, 0x9cf7, 0x9cf9,
+ 0x9d0b, 0x9d02, 0x9d11, 0x9d17, 0x9d18, 0x9d1c, 0x9d1d, 0x9d1e,
+ 0x9d2f, 0x9d30, 0x9d32, 0x9d33, 0x9d34, 0x9d3a, 0x9d3c, 0x9d45,
+ 0x9d3d, 0x9d42, 0x9d43, 0x9d47, 0x9d4a, 0x9d53, 0x9d54, 0x9d5f,
+ 0x9d63, 0x9d62, 0x9d65, 0x9d69, 0x9d6a, 0x9d6b, 0x9d70, 0x9d76,
+ 0x9d77, 0x9d7b, 0x9d7c, 0x9d7e, 0x9d83, 0x9d84, 0x9d86, 0x9d8a,
+ 0x9d8d, 0x9d8e, 0x9d92, 0x9d93, 0x9d95, 0x9d96, 0x9d97, 0x9d98,
+ 0x9da1, 0x9daa, 0x9dac, 0x9dae, 0x9db1, 0x9db5, 0x9db9, 0x9dbc,
+ 0x9dbf, 0x9dc3, 0x9dc7, 0x9dc9, 0x9dca, 0x9dd4, 0x9dd5, 0x9dd6,
+ 0x9dd7, 0x9dda, 0x9dde, 0x9ddf, 0x9de0, 0x9de5, 0x9de7, 0x9de9,
+ 0x9deb, 0x9dee, 0x9df0, 0x9df3, 0x9df4, 0x9dfe, 0x9e0a, 0x9e02,
+ 0x9e07, 0x9e0e, 0x9e10, 0x9e11, 0x9e12, 0x9e15, 0x9e16, 0x9e19,
+ 0x9e1c, 0x9e1d, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e80, 0x9e82, 0x9e83,
+ 0x9e84, 0x9e85, 0x9e87, 0x9e8e, 0x9e8f, 0x9e96, 0x9e98, 0x9e9b,
+ 0x9e9e, 0x9ea4, 0x9ea8, 0x9eac, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb3,
+ 0x9eb4, 0x9eb5, 0x9ec6, 0x9ec8, 0x9ecb, 0x9ed5, 0x9edf, 0x9ee4,
+ 0x9ee7, 0x9eec, 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef5,
+ 0x9ef8, 0x9eff, 0x9f02, 0x9f03, 0x9f09, 0x9f0f, 0x9f10, 0x9f11,
+ 0x9f12, 0x9f14, 0x9f16, 0x9f17, 0x9f19, 0x9f1a, 0x9f1b, 0x9f1f,
+ 0x9f22, 0x9f26, 0x9f2a, 0x9f2b, 0x9f2f, 0x9f31, 0x9f32, 0x9f34,
+ 0x9f37, 0x9f39, 0x9f3a, 0x9f3c, 0x9f3d, 0x9f3f, 0x9f41, 0x9f43,
+ 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f53, 0x9f55, 0x9f56, 0x9f57,
+ 0x9f58, 0x9f5a, 0x9f5d, 0x9f5e, 0x9f68, 0x9f69, 0x9f6d, 0x9f6e,
+ 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f75, 0x9f7a, 0x9f7d, 0x9f8f,
+ 0x9f90, 0x9f91, 0x9f92, 0x9f94, 0x9f96, 0x9f97, 0x9f9e, 0x9fa1,
+ 0x9fa2, 0x9fa3, 0x9fa5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2003, 0x3001, 0x3002, 0xff0c,
+ 0xff0e, 0x30fb, 0xff1a, 0xff1b, 0xff1f, 0xff01, 0x309b, 0x309c
+};
+
+
+const unichar_t unicode_from_big5[] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2022, 0xff1b, 0xff1a,
+ 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xff64, 0xfe52,
+ 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
+ 0x2014, 0xfe33, 0x2574, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
+ 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
+ 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
+ 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
+ 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x301d, 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a,
+ 0x203b, 0x00a7, 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce,
+ 0x2606, 0x2605, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc,
+ 0x32a3, 0x2105, 0x00af, 0xffe3, 0xff3f, 0x02cd, 0xfe49, 0xfe4a,
+ 0xfe4d, 0xfe4e, 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b,
+ 0xff0d, 0x00d7, 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d,
+ 0x2266, 0x2267, 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63,
+ 0xfe64, 0xfe65, 0xfe66, 0x223c, 0x2229, 0x222a, 0x22a5, 0x2220,
+ 0x221f, 0x22bf, 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234,
+ 0x2640, 0x2642, 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192,
+ 0x2196, 0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0xff0f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xff3c, 0x2215, 0xfe68, 0xff04, 0x00a5, 0x3012, 0x00a2, 0x00a3,
+ 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
+ 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
+ 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
+ 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
+ 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
+ 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
+ 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x256e, 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561,
+ 0x25e2, 0x25e3, 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166,
+ 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025,
+ 0x3026, 0x3027, 0x3028, 0x3029, 0x3038, 0x5344, 0x303a, 0xff21,
+ 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29,
+ 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31,
+ 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39,
+ 0xff3a, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
+ 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
+ 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
+ 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
+ 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
+ 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
+ 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+ 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
+ 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116,
+ 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e,
+ 0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126,
+ 0x3127, 0x3128, 0x3129, 0x02d9, 0x0000, 0x02ca, 0x02c7, 0x02cb,
+ 0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407,
+ 0x2408, 0x2409, 0x240a, 0x240b, 0x240c, 0x240d, 0x240e, 0x240f,
+ 0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, 0x2417,
+ 0x2418, 0x2419, 0x241a, 0x241b, 0x241c, 0x241d, 0x241e, 0x241f,
+ 0x2421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
+ 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
+ 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
+ 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
+ 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
+ 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
+ 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
+ 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4e11, 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b,
+ 0x5c39, 0x4e88, 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1,
+ 0x4ec0, 0x4ec3, 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4,
+ 0x5143, 0x5141, 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6,
+ 0x5206, 0x5207, 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339,
+ 0x5348, 0x5347, 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd,
+ 0x58ec, 0x5929, 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24,
+ 0x5c3a, 0x5c6f, 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3,
+ 0x6208, 0x6236, 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4,
+ 0x65b9, 0x65e5, 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79,
+ 0x6bcb, 0x6bd4, 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236,
+ 0x723b, 0x7247, 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
+ 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
+ 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
+ 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0xe05b, 0x5306, 0x5317,
+ 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
+ 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
+ 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
+ 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x592e, 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c,
+ 0x5de8, 0x5de7, 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01,
+ 0x5f18, 0x5f17, 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251,
+ 0x65a5, 0x65e6, 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63,
+ 0x6bcd, 0x6c11, 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af,
+ 0x7384, 0x7389, 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529,
+ 0x7530, 0x7531, 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf,
+ 0x76ee, 0x77db, 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb,
+ 0x4e1e, 0x4e1f, 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6,
+ 0x4ea5, 0x4eff, 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10,
+ 0x4f11, 0x4f0f, 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd,
+ 0x4f01, 0x4f0b, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
+ 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
+ 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
+ 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
+ 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
+ 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
+ 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
+ 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f0f, 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d,
+ 0x6210, 0x6263, 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec,
+ 0x65ed, 0x66f2, 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735,
+ 0x6b21, 0x6b64, 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f,
+ 0x6c60, 0x6c50, 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070,
+ 0x725f, 0x725d, 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a,
+ 0x7fbd, 0x8001, 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089,
+ 0x808b, 0x808c, 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b,
+ 0x821f, 0x826e, 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863,
+ 0x897f, 0x9621, 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57,
+ 0x4f5e, 0x4f34, 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d,
+ 0x4f3a, 0x4f38, 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
+ 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
+ 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
+ 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
+ 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
+ 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
+ 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
+ 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5747, 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef,
+ 0x593e, 0x599d, 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996,
+ 0x598d, 0x59a4, 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a,
+ 0x5b5b, 0x5b8c, 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f,
+ 0x5c3e, 0x5c90, 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f,
+ 0x5e87, 0x5e8a, 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77,
+ 0x5f79, 0x5fd8, 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8,
+ 0x5fea, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276,
+ 0x6289, 0x626d, 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292,
+ 0x626f, 0x6298, 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539,
+ 0x653b, 0x6538, 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750,
+ 0x6751, 0x675c, 0x6756, 0x675e, 0x6749, 0x6746, 0x6760, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
+ 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
+ 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
+ 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
+ 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
+ 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
+ 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
+ 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x828b, 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46,
+ 0x8c55, 0x8c9d, 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b,
+ 0x8fb0, 0x8fc2, 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2,
+ 0x90aa, 0x90a6, 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e,
+ 0x9631, 0x962a, 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b,
+ 0x4e9e, 0x4eab, 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f,
+ 0x4f6c, 0x4f9b, 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88,
+ 0x4f69, 0x4f7b, 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154,
+ 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd,
+ 0x523b, 0x5238, 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241,
+ 0x52be, 0x52bb, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377,
+ 0x5378, 0x5379, 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
+ 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
+ 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
+ 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
+ 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
+ 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
+ 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
+ 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5c46, 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1,
+ 0x5cb3, 0x5e18, 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78,
+ 0x5e9a, 0x5e97, 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27,
+ 0x5f29, 0x5f80, 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd,
+ 0x5ff5, 0x5fff, 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a,
+ 0x6015, 0x6021, 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215,
+ 0x623f, 0x623e, 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf,
+ 0x62c2, 0x62b9, 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb,
+ 0x62c8, 0x62a8, 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd,
+ 0x62b5, 0x62da, 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac,
+ 0x62ce, 0x653e, 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c,
+ 0x6606, 0x6602, 0x660e, 0x6600, 0x660f, 0x6615, 0x660a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
+ 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
+ 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
+ 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
+ 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
+ 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
+ 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
+ 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7095, 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d,
+ 0x7238, 0x7248, 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7,
+ 0x72d0, 0x73a9, 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d,
+ 0x7599, 0x759a, 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd,
+ 0x793e, 0x7940, 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa,
+ 0x7cfe, 0x7f54, 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2,
+ 0x80b1, 0x80a1, 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5,
+ 0x81fe, 0x820d, 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f,
+ 0x82b9, 0x82b1, 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0,
+ 0x82be, 0x82b7, 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce,
+ 0x8fd4, 0x8fd1, 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1,
+ 0x9577, 0x9580, 0x961c, 0x9640, 0x963f, 0x963b, 0x9644, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
+ 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
+ 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
+ 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
+ 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
+ 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
+ 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
+ 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x54c4, 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9,
+ 0x54a7, 0x54bf, 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2,
+ 0x57ce, 0x57ae, 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950,
+ 0x59dc, 0x59d8, 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea,
+ 0x59da, 0x59e6, 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4,
+ 0x5ba2, 0x5ba5, 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9,
+ 0x5cd2, 0x5df7, 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6,
+ 0x5efa, 0x5f08, 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b,
+ 0x5f87, 0x5f8c, 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e,
+ 0x6028, 0x604d, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c,
+ 0x606b, 0x606a, 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc,
+ 0x62ed, 0x6301, 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
+ 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
+ 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
+ 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
+ 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
+ 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
+ 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
+ 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6d3b, 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39,
+ 0x6d27, 0x6d38, 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab,
+ 0x70ba, 0x70b3, 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4,
+ 0x7230, 0x7272, 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7,
+ 0x73ca, 0x73bb, 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d,
+ 0x754f, 0x754c, 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2,
+ 0x75a3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3,
+ 0x76c5, 0x7701, 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc,
+ 0x7707, 0x77dc, 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949,
+ 0x7948, 0x7947, 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f,
+ 0x7a81, 0x7aff, 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09,
+ 0x7d07, 0x7d04, 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
+ 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
+ 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
+ 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
+ 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
+ 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
+ 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
+ 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8fed, 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1,
+ 0x90c3, 0x914b, 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c,
+ 0x964d, 0x9762, 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8,
+ 0x98db, 0x98df, 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d,
+ 0x5023, 0x4fef, 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006,
+ 0x503c, 0x501f, 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014,
+ 0x5028, 0x4ff1, 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee,
+ 0x502d, 0x502a, 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5,
+ 0x51a2, 0x51cd, 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254,
+ 0x525b, 0x525d, 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8,
+ 0x5510, 0x5501, 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa,
+ 0x5514, 0x54e9, 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
+ 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
+ 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
+ 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
+ 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
+ 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
+ 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
+ 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6063, 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f,
+ 0x6084, 0x609f, 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096,
+ 0x6247, 0x62f3, 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355,
+ 0x6342, 0x6346, 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a,
+ 0x632b, 0x6328, 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1,
+ 0x65c5, 0x6642, 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645,
+ 0x6641, 0x66f8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848,
+ 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817,
+ 0x684c, 0x6851, 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843,
+ 0x682a, 0x6845, 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7,
+ 0x6c23, 0x6c27, 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95,
+ 0x6d88, 0x6d87, 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
+ 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
+ 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
+ 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
+ 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
+ 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
+ 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
+ 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7825, 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950,
+ 0x7960, 0x795f, 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4,
+ 0x79e3, 0x79e7, 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88,
+ 0x7ad9, 0x7b06, 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a,
+ 0x7d20, 0x7d22, 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d,
+ 0x7d19, 0x7d1b, 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006,
+ 0x8018, 0x8015, 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102,
+ 0x80f0, 0x8105, 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108,
+ 0x80fd, 0x810a, 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210,
+ 0x822a, 0x822b, 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354,
+ 0x834a, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332,
+ 0x8339, 0x8336, 0x8317, 0x8340, 0x8331, 0x8328, 0x8343, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
+ 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
+ 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
+ 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
+ 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
+ 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
+ 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
+ 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x965b, 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2,
+ 0x99ac, 0x9aa8, 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a,
+ 0x507d, 0x505c, 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065,
+ 0x5076, 0x504e, 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f,
+ 0x506f, 0x506d, 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2,
+ 0x52d9, 0x52d8, 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340,
+ 0x533e, 0x53c3, 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e,
+ 0x5561, 0x5543, 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f,
+ 0x5564, 0x5538, 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541,
+ 0x5557, 0x5708, 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806,
+ 0x57e0, 0x57e4, 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920,
+ 0x5962, 0x5a36, 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
+ 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
+ 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
+ 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
+ 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
+ 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
+ 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
+ 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x60c5, 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5,
+ 0x60c6, 0x60df, 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248,
+ 0x63a0, 0x63a7, 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367,
+ 0x6398, 0x63aa, 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b,
+ 0x63a8, 0x6384, 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f,
+ 0x6380, 0x637b, 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551,
+ 0x6559, 0x6557, 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c,
+ 0x659b, 0x65ac, 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a,
+ 0x6664, 0x6668, 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881,
+ 0x68af, 0x68a2, 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7,
+ 0x6897, 0x68b0, 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894,
+ 0x689d, 0x68a8, 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
+ 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
+ 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
+ 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
+ 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
+ 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
+ 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
+ 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x74f7, 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570,
+ 0x758f, 0x75d4, 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4,
+ 0x76d2, 0x76db, 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a,
+ 0x786b, 0x7843, 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92,
+ 0x7a95, 0x7b20, 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e,
+ 0x7b2e, 0x7c92, 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e,
+ 0x7d39, 0x7d3c, 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42,
+ 0x7d32, 0x7d31, 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2,
+ 0x801c, 0x804a, 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129,
+ 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e,
+ 0x839e, 0x8398, 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392,
+ 0x838a, 0x8393, 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
+ 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
+ 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
+ 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
+ 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
+ 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
+ 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
+ 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x90e8, 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6,
+ 0x91e3, 0x91e7, 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673,
+ 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea,
+ 0x96e9, 0x7ae0, 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75,
+ 0x9e7f, 0x9ea5, 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091,
+ 0x5080, 0x5096, 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274,
+ 0x5275, 0x5269, 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b,
+ 0x5580, 0x55a7, 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c,
+ 0x55aa, 0x5594, 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f,
+ 0x553e, 0x55b2, 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589,
+ 0x55ab, 0x5599, 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830,
+ 0x5831, 0x5821, 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
+ 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
+ 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
+ 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
+ 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
+ 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
+ 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
+ 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x63d2, 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee,
+ 0x6376, 0x63f4, 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e,
+ 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670,
+ 0x6674, 0x6676, 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe,
+ 0x66ff, 0x671f, 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7,
+ 0x6905, 0x68df, 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2,
+ 0x68e3, 0x68cb, 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da,
+ 0x696e, 0x68fb, 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc,
+ 0x6bef, 0x6c2e, 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21,
+ 0x6e32, 0x6e67, 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b,
+ 0x6e58, 0x6e24, 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34,
+ 0x6e4d, 0x6e3a, 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
+ 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
+ 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
+ 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
+ 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
+ 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
+ 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
+ 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7a97, 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46,
+ 0x7b50, 0x7b52, 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f,
+ 0x7ca5, 0x7d5e, 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72,
+ 0x7d61, 0x7d66, 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5,
+ 0x800b, 0x8052, 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e,
+ 0x8139, 0x8146, 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c,
+ 0x83e9, 0x8403, 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1,
+ 0x83ef, 0x83f1, 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc,
+ 0x83fd, 0x83f2, 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407,
+ 0x83d4, 0x83df, 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db,
+ 0x86e4, 0x86d0, 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983,
+ 0x8996, 0x8a3b, 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
+ 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
+ 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
+ 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
+ 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
+ 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
+ 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
+ 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9593, 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d,
+ 0x9685, 0x9686, 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4,
+ 0x96c6, 0x96c7, 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808,
+ 0x98e7, 0x98ea, 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad,
+ 0x9ec3, 0x9ecd, 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3,
+ 0x50c5, 0x50be, 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f,
+ 0x5277, 0x527d, 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f,
+ 0x55df, 0x55e8, 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1,
+ 0x55e3, 0x55e4, 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5,
+ 0x55c9, 0x5712, 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a,
+ 0x5854, 0x586b, 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b,
+ 0x5967, 0x5ac1, 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
+ 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
+ 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
+ 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
+ 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
+ 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
+ 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
+ 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x695a, 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982,
+ 0x694a, 0x6968, 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d,
+ 0x6963, 0x695b, 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd,
+ 0x6ea2, 0x6eaf, 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7,
+ 0x6ec5, 0x6ea5, 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96,
+ 0x6e9c, 0x6ec4, 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159,
+ 0x7169, 0x7164, 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c,
+ 0x7165, 0x715e, 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337,
+ 0x7345, 0x733f, 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e,
+ 0x7441, 0x743f, 0x7459, 0x745b, 0xe2a3, 0x7576, 0x7578, 0x7600,
+ 0x75f0, 0x7601, 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3,
+ 0x76de, 0x76df, 0x775b, 0x776b, 0x7766, 0x775e, 0x7763, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
+ 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
+ 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
+ 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
+ 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
+ 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
+ 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
+ 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8179, 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477,
+ 0x843d, 0x8431, 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b,
+ 0x843c, 0x8435, 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e,
+ 0x865c, 0x865f, 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe,
+ 0x86fb, 0x8702, 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4,
+ 0x88d9, 0x88dc, 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2,
+ 0x899c, 0x89e3, 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70,
+ 0x8a87, 0x8a7c, 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62,
+ 0x8a6e, 0x8a6c, 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a,
+ 0x8c89, 0x8cca, 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2,
+ 0x8cc5, 0x8de1, 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea,
+ 0x8de4, 0x8de6, 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
+ 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
+ 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
+ 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
+ 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
+ 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
+ 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
+ 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x98fd, 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9,
+ 0x9e82, 0x9f0e, 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6,
+ 0x50ed, 0x50da, 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9,
+ 0x5162, 0x51f3, 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600,
+ 0x561b, 0x5617, 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e,
+ 0x55f7, 0x5616, 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716,
+ 0x5875, 0x587e, 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d,
+ 0x58fd, 0x5925, 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6,
+ 0x5ae9, 0x5ad7, 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7,
+ 0x5be1, 0x5be5, 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d,
+ 0x5c62, 0x5d84, 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54,
+ 0x5ed3, 0x5ed6, 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
+ 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
+ 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
+ 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
+ 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
+ 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
+ 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
+ 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6eff, 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23,
+ 0x6f15, 0x6f2b, 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2,
+ 0x6ecc, 0x6ef7, 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192,
+ 0x723e, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a,
+ 0x7470, 0x746d, 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609,
+ 0x7613, 0x76e1, 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1,
+ 0x789f, 0x78a7, 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d,
+ 0x7a2e, 0x7a31, 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95,
+ 0x7b8b, 0x7b75, 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87,
+ 0x7b84, 0x7cb9, 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd,
+ 0x7dbe, 0x7da0, 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2,
+ 0x7dbf, 0x7db5, 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
+ 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
+ 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
+ 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
+ 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
+ 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
+ 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
+ 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8aaa, 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7,
+ 0x8c6a, 0x8c8d, 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99,
+ 0x8d95, 0x8dfc, 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060,
+ 0x9058, 0x905c, 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b,
+ 0x9119, 0x9118, 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278,
+ 0x9280, 0x9285, 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8,
+ 0x927c, 0x9291, 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4,
+ 0x9699, 0x969c, 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785,
+ 0x97f6, 0x9817, 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c,
+ 0x9909, 0x99c1, 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4,
+ 0x9cf6, 0x9cf3, 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb,
+ 0x50f5, 0x50f9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
+ 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
+ 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
+ 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
+ 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
+ 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
+ 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
+ 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x617c, 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab,
+ 0x618e, 0x61ac, 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469,
+ 0x646f, 0x6479, 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5,
+ 0x6493, 0x6495, 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a,
+ 0x64ac, 0x6499, 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae,
+ 0x66ab, 0x66b4, 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e,
+ 0x6a19, 0x69fd, 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05,
+ 0x69ed, 0x6a11, 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f,
+ 0x6f7c, 0x6f84, 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b,
+ 0x6f78, 0x6f6e, 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58,
+ 0x6ed5, 0x6f6f, 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8,
+ 0x7256, 0x729b, 0x734e, 0x7357, 0x7469, 0x748b, 0x7483, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
+ 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
+ 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
+ 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
+ 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
+ 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
+ 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
+ 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7fe9, 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a,
+ 0x8198, 0x8517, 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513,
+ 0x8511, 0x8523, 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506,
+ 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759,
+ 0x8757, 0x874c, 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912,
+ 0x8913, 0x8915, 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95,
+ 0x8acb, 0x8af8, 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6,
+ 0x8acd, 0x8ab6, 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0,
+ 0x8cde, 0x8ce6, 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc,
+ 0x8cea, 0x8ce1, 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d,
+ 0x8e22, 0x8e0f, 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d,
+ 0x8f1b, 0x8f1f, 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
+ 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
+ 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
+ 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
+ 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
+ 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
+ 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
+ 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9d03, 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112,
+ 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291,
+ 0x5293, 0x52f3, 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678,
+ 0x566a, 0x5668, 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676,
+ 0x58c1, 0x58be, 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78,
+ 0x5bf0, 0x5c0e, 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd,
+ 0x61b6, 0x61be, 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb,
+ 0x64bb, 0x64bc, 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf,
+ 0x64d2, 0x64d4, 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4,
+ 0x66c7, 0x66b8, 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58,
+ 0x6a39, 0x6a44, 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f,
+ 0x6a48, 0x6b59, 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
+ 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
+ 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
+ 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
+ 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
+ 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
+ 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
+ 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7e11, 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09,
+ 0x7e10, 0x7f79, 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3,
+ 0x81a9, 0x81a8, 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559,
+ 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e,
+ 0x8783, 0x879f, 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932,
+ 0x8925, 0x892b, 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb,
+ 0x8af1, 0x8b00, 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02,
+ 0x8af7, 0x8aed, 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93,
+ 0x8cf4, 0x8e44, 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b,
+ 0x8f2f, 0x8f38, 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078,
+ 0x9072, 0x907c, 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8,
+ 0x9333, 0x932f, 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
+ 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
+ 0x970f, 0x975b, 0xe4c5, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
+ 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
+ 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
+ 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
+ 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
+ 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x568f, 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a,
+ 0x5b24, 0x5b7a, 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8,
+ 0x5e6b, 0x5f4c, 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb,
+ 0x6232, 0x6234, 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6,
+ 0x64ec, 0x64f1, 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6,
+ 0x6a80, 0x6a94, 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e,
+ 0x6a97, 0x6a90, 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8,
+ 0x6ff1, 0x6fdf, 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80,
+ 0x6fec, 0x6fe1, 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df,
+ 0x71ee, 0x71e6, 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235,
+ 0x7246, 0x7370, 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646,
+ 0x7642, 0x764c, 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
+ 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
+ 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
+ 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
+ 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
+ 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
+ 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
+ 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8584, 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b,
+ 0x8587, 0x85a8, 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2,
+ 0x87c6, 0x87ab, 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936,
+ 0x8944, 0x8938, 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b,
+ 0x8b0a, 0x8b20, 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73,
+ 0x8cfa, 0x8cfd, 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b,
+ 0x8e48, 0x8e4a, 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f,
+ 0x907d, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e,
+ 0x919c, 0x934d, 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b,
+ 0x9318, 0x937e, 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca,
+ 0x95cb, 0x95cc, 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c,
+ 0x971e, 0x97a0, 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
+ 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
+ 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
+ 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
+ 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
+ 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
+ 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
+ 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7652, 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae,
+ 0x7a61, 0x7a62, 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a,
+ 0x7c1e, 0x7c23, 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a,
+ 0x7e61, 0x7e52, 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076,
+ 0x81cd, 0x81cf, 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9,
+ 0x85b0, 0x85ba, 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0,
+ 0x8986, 0x89b2, 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50,
+ 0x8d05, 0x8e59, 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0,
+ 0x8f49, 0x8f4d, 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0,
+ 0x9394, 0x938a, 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0,
+ 0x9398, 0x939a, 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2,
+ 0x96dc, 0x96d9, 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
+ 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
+ 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
+ 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
+ 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
+ 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
+ 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
+ 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x737a, 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f,
+ 0x7661, 0x77c7, 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f,
+ 0x7c38, 0x7c3d, 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69,
+ 0x7e6a, 0x7f85, 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9,
+ 0x85dd, 0x85ea, 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805,
+ 0x880d, 0x87f9, 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41,
+ 0x8b5c, 0x8b58, 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59,
+ 0x8d08, 0x8d0a, 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a,
+ 0x8e74, 0x8f54, 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae,
+ 0x93e1, 0x93d1, 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6,
+ 0x93e2, 0x93cd, 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4,
+ 0x96e3, 0x972a, 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
+ 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
+ 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
+ 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
+ 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
+ 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
+ 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
+ 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7e82, 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9,
+ 0x8611, 0x85fa, 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815,
+ 0x8964, 0x89ba, 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f,
+ 0x8b6b, 0x8d0f, 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4,
+ 0x91cb, 0x9418, 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952,
+ 0x9951, 0x99a8, 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d,
+ 0x9e79, 0x9eb5, 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137,
+ 0x5138, 0x56c1, 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc,
+ 0x61fe, 0x651d, 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa,
+ 0x6bb2, 0x704c, 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3,
+ 0x7c50, 0x7e8f, 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823,
+ 0x8822, 0x8821, 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
+ 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
+ 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
+ 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
+ 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
+ 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
+ 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
+ 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x79b3, 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972,
+ 0x896f, 0x89fc, 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61,
+ 0x9148, 0x9444, 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1,
+ 0x986b, 0x9955, 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31,
+ 0x9c3e, 0x9c3b, 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94,
+ 0x56cc, 0x5dd6, 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10,
+ 0x74da, 0x7aca, 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94,
+ 0x81e2, 0x8638, 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463,
+ 0x9460, 0x9464, 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57,
+ 0x9ad3, 0x9ad4, 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f,
+ 0x9ef4, 0x56d1, 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7,
+ 0x7f50, 0x7f88, 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
+ 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
+ 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
+ 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
+ 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
+ 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
+ 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
+ 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
+ 0x4e8d, 0x56d7, 0x0000, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
+ 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
+ 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
+ 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
+ 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
+ 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
+ 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6c36, 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a,
+ 0x79b8, 0x808a, 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14,
+ 0x4ef1, 0x4f00, 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22,
+ 0x4f13, 0x4f04, 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210,
+ 0x52a6, 0x5322, 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df,
+ 0x572e, 0x572a, 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b,
+ 0x597e, 0x5977, 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a,
+ 0x5c7b, 0x5c7e, 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74,
+ 0x5fd5, 0x5fd4, 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266,
+ 0x6262, 0x6259, 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e,
+ 0x6739, 0x6738, 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18,
+ 0x6c46, 0x6c52, 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
+ 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
+ 0x897e, 0x9099, 0xe7d3, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
+ 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
+ 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
+ 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
+ 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
+ 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x543d, 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee,
+ 0x56e7, 0x56e5, 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752,
+ 0x5906, 0x5940, 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2,
+ 0x5990, 0x598f, 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a,
+ 0x5c8d, 0x5c8f, 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86,
+ 0x5c93, 0x5c95, 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c,
+ 0x5e88, 0x5e8d, 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1,
+ 0x5fd0, 0x5fed, 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3,
+ 0x5ffa, 0x5fef, 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283,
+ 0x628c, 0x628e, 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a,
+ 0x6270, 0x6281, 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537,
+ 0x65f0, 0x65f4, 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
+ 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
+ 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
+ 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
+ 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
+ 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
+ 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
+ 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x828a, 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f,
+ 0x90a1, 0x90a5, 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f,
+ 0x962d, 0x4e33, 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87,
+ 0x4f76, 0x4f74, 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a,
+ 0x4f9a, 0x4f79, 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e,
+ 0x4f92, 0x4f82, 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be,
+ 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b,
+ 0x533c, 0x5392, 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482,
+ 0x5488, 0x546b, 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466,
+ 0x548d, 0x546f, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464,
+ 0x56f7, 0x56f9, 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770,
+ 0x5776, 0x5780, 0x5775, 0x577b, 0x5773, 0x5774, 0x5762, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
+ 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
+ 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
+ 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
+ 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
+ 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
+ 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
+ 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6034, 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c,
+ 0x6022, 0x600d, 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009,
+ 0x601c, 0x6214, 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa,
+ 0x62b6, 0x62ca, 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0,
+ 0x62b8, 0x653d, 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612,
+ 0x6608, 0x65fb, 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611,
+ 0x6610, 0x66f6, 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776,
+ 0x677b, 0x6798, 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a,
+ 0x679f, 0x6791, 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779,
+ 0x6794, 0x6b25, 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec,
+ 0x6ceb, 0x6cee, 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7,
+ 0x6cd0, 0x6cc2, 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
+ 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
+ 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
+ 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
+ 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
+ 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
+ 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
+ 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x77f7, 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb,
+ 0x7c75, 0x7cfd, 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5,
+ 0x80ad, 0x8220, 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b,
+ 0x82b5, 0x82a7, 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8,
+ 0x82a1, 0x82a9, 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670,
+ 0x866f, 0x866d, 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd,
+ 0x8fd6, 0x8fd5, 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0,
+ 0x9639, 0x963d, 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3,
+ 0x4fb2, 0x4fc9, 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb,
+ 0x4fb3, 0x4fdb, 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec,
+ 0x5244, 0x5249, 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396,
+ 0x5399, 0x5398, 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
+ 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
+ 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
+ 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
+ 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
+ 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
+ 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
+ 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5cde, 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3,
+ 0x5cd4, 0x5ccf, 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9,
+ 0x5e21, 0x5e22, 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2,
+ 0x5e9b, 0x5ea3, 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037,
+ 0x6039, 0x6054, 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049,
+ 0x605b, 0x604c, 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058,
+ 0x6066, 0x606e, 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5,
+ 0x630e, 0x6303, 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6,
+ 0x6300, 0x6313, 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541,
+ 0x6543, 0x65aa, 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c,
+ 0x6626, 0x6622, 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639,
+ 0x662e, 0x670f, 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
+ 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
+ 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
+ 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
+ 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
+ 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
+ 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
+ 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6d01, 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07,
+ 0x6d20, 0x6d2c, 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f,
+ 0x70be, 0x70b1, 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241,
+ 0x7249, 0x724a, 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4,
+ 0x72e8, 0x72eb, 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc,
+ 0x73c2, 0x73c8, 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb,
+ 0x73bf, 0x73c7, 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec,
+ 0x74ee, 0x752e, 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4,
+ 0x7708, 0x7703, 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa,
+ 0x77e7, 0x77e8, 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f,
+ 0x780e, 0x7809, 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945,
+ 0x7944, 0x79d5, 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
+ 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
+ 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
+ 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
+ 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
+ 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
+ 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
+ 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x82e4, 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674,
+ 0x867c, 0x8673, 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3,
+ 0x8a04, 0x8a07, 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1,
+ 0x90bd, 0x90bf, 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8,
+ 0x91d4, 0x91d3, 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e,
+ 0x501e, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5,
+ 0x4ff4, 0x5033, 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c,
+ 0x5020, 0x5027, 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194,
+ 0x5193, 0x51ca, 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a,
+ 0x5252, 0x525e, 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e,
+ 0x5526, 0x54e2, 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a,
+ 0x54ff, 0x5504, 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
+ 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
+ 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
+ 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
+ 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
+ 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
+ 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
+ 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6041, 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d,
+ 0x6083, 0x6095, 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219,
+ 0x6246, 0x62f2, 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336,
+ 0x6343, 0x63e4, 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341,
+ 0x6334, 0x6358, 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a,
+ 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6,
+ 0x65c3, 0x65c4, 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712,
+ 0x6713, 0x681f, 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b,
+ 0x684f, 0x6816, 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f,
+ 0x684e, 0x6844, 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828,
+ 0x682e, 0x684d, 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d,
+ 0x6b31, 0x6b34, 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
+ 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
+ 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
+ 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
+ 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
+ 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
+ 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
+ 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7277, 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6,
+ 0x72f3, 0x72fb, 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc,
+ 0x73e7, 0x73e3, 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd,
+ 0x73da, 0x73d7, 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5,
+ 0x7521, 0x755b, 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0,
+ 0x75bf, 0x75b6, 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710,
+ 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722,
+ 0x7727, 0x7823, 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e,
+ 0x782b, 0x7821, 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b,
+ 0x794f, 0x795c, 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0,
+ 0x79ee, 0x79ed, 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89,
+ 0x7a85, 0x7a8b, 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
+ 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
+ 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
+ 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
+ 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
+ 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
+ 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
+ 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8342, 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d,
+ 0x8316, 0x8324, 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345,
+ 0x834c, 0x8353, 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653,
+ 0x8652, 0x86a2, 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687,
+ 0x8697, 0x8686, 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1,
+ 0x86a7, 0x8695, 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843,
+ 0x8844, 0x886d, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f,
+ 0x886f, 0x8883, 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57,
+ 0x8c7b, 0x8ca4, 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6,
+ 0x8ed1, 0x8ed3, 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004,
+ 0x8ffc, 0x8ff6, 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df,
+ 0x90e5, 0x90d8, 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
+ 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
+ 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
+ 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
+ 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
+ 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
+ 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
+ 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x550c, 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d,
+ 0x553b, 0x5540, 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2,
+ 0x57f6, 0x57dc, 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8,
+ 0x580b, 0x57f3, 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5,
+ 0x57ec, 0x57e1, 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c,
+ 0x57f1, 0x57e9, 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58,
+ 0x5a55, 0x5a67, 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f,
+ 0x5a65, 0x5a6c, 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52,
+ 0x5a44, 0x5a5b, 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c,
+ 0x5a70, 0x5a69, 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72,
+ 0x5b6e, 0x5bc1, 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a,
+ 0x5d20, 0x5d0c, 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
+ 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
+ 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
+ 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
+ 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
+ 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
+ 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
+ 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6378, 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553,
+ 0x65cd, 0x6665, 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718,
+ 0x6879, 0x6887, 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab,
+ 0x6956, 0x686f, 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2,
+ 0x688f, 0x6877, 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880,
+ 0x6871, 0x687e, 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4,
+ 0x6878, 0x687b, 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33,
+ 0x6b37, 0x6b38, 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a,
+ 0x6dc0, 0x6dab, 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2,
+ 0x6db7, 0x6df6, 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6,
+ 0x6dbe, 0x6de5, 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd,
+ 0x6ded, 0x6df0, 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
+ 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
+ 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
+ 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
+ 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
+ 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
+ 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
+ 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x75cb, 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3,
+ 0x7739, 0x772f, 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d,
+ 0x7725, 0x773b, 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a,
+ 0x784c, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a,
+ 0x7963, 0x796b, 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7,
+ 0x7a8f, 0x7a94, 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30,
+ 0x7b22, 0x7b24, 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b,
+ 0x7b2d, 0x7b2f, 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98,
+ 0x7c96, 0x7ca3, 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45,
+ 0x7d2c, 0x7d29, 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b,
+ 0x7d28, 0x7f63, 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb,
+ 0x7fcd, 0x7fd0, 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
+ 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
+ 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
+ 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
+ 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
+ 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
+ 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
+ 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x86c2, 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9,
+ 0x86b3, 0x86b8, 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd,
+ 0x86be, 0x8852, 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a,
+ 0x8891, 0x88a1, 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897,
+ 0x88a4, 0x88ac, 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9,
+ 0x89d5, 0x8a30, 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c,
+ 0x8c5d, 0x8c7d, 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2,
+ 0x8db9, 0x8dbf, 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7,
+ 0x8ee0, 0x8ee1, 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021,
+ 0x90ef, 0x90ea, 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb,
+ 0x90ec, 0x90e9, 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec,
+ 0x91f4, 0x91f1, 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
+ 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
+ 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
+ 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
+ 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
+ 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
+ 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
+ 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5819, 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848,
+ 0x5825, 0x581c, 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839,
+ 0x5838, 0x582d, 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f,
+ 0x5a7a, 0x5aa2, 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac,
+ 0x5a95, 0x5aae, 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b,
+ 0x5aa9, 0x5a7b, 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d,
+ 0x5bea, 0x5bcd, 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c,
+ 0x5c30, 0x5d37, 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35,
+ 0x5d51, 0x5d4e, 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31,
+ 0x5d59, 0x5d42, 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36,
+ 0x5d40, 0x5d45, 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab,
+ 0x60c9, 0x60b9, 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
+ 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
+ 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
+ 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
+ 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
+ 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
+ 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
+ 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x667c, 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a,
+ 0x6672, 0x6701, 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec,
+ 0x68ea, 0x68f1, 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6,
+ 0x6913, 0x6910, 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970,
+ 0x68b4, 0x6911, 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd,
+ 0x68fc, 0x68e8, 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd,
+ 0x68de, 0x68e6, 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915,
+ 0x6925, 0x68c7, 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97,
+ 0x6b99, 0x6b95, 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc,
+ 0x6e46, 0x6e47, 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45,
+ 0x6e62, 0x6e2b, 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33,
+ 0x6e4b, 0x6e40, 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
+ 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
+ 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
+ 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
+ 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
+ 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
+ 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
+ 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x741a, 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d,
+ 0x7429, 0x7420, 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7,
+ 0x75da, 0x75e1, 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695,
+ 0x7692, 0x76da, 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a,
+ 0x774e, 0x774b, 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865,
+ 0x785c, 0x786d, 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868,
+ 0x785e, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a,
+ 0x7a03, 0x7a0c, 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b,
+ 0x7b44, 0x7b48, 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2,
+ 0x7c9e, 0x7ca8, 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56,
+ 0x7d67, 0x7d6a, 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54,
+ 0x7d69, 0x7d51, 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
+ 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
+ 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
+ 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
+ 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
+ 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
+ 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
+ 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x83d5, 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3,
+ 0x83ec, 0x83ee, 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db,
+ 0x83fe, 0x86d8, 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea,
+ 0x86dd, 0x86eb, 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1,
+ 0x8848, 0x8856, 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0,
+ 0x88be, 0x88b6, 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9,
+ 0x8995, 0x8998, 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d,
+ 0x8a39, 0x8a59, 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52,
+ 0x8a48, 0x8a51, 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80,
+ 0x8cba, 0x8cbe, 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89,
+ 0x8dd8, 0x8dd3, 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5,
+ 0x8dd9, 0x8dc8, 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
+ 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
+ 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
+ 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
+ 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
+ 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
+ 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
+ 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9689, 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1,
+ 0x96f0, 0x976c, 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6,
+ 0x9ef9, 0x4e83, 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae,
+ 0x50c4, 0x50ca, 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba,
+ 0x50b1, 0x50cb, 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278,
+ 0x527b, 0x527c, 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca,
+ 0x55dd, 0x55c0, 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d,
+ 0x55cf, 0x55d5, 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9,
+ 0x55c2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849,
+ 0x586f, 0x5855, 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d,
+ 0x5863, 0x5871, 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8,
+ 0x5ab1, 0x5ab5, 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
+ 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
+ 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
+ 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
+ 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
+ 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
+ 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
+ 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6433, 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437,
+ 0x6422, 0x6423, 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435,
+ 0x642f, 0x640a, 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7,
+ 0x641b, 0x642e, 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686,
+ 0x668c, 0x6695, 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678,
+ 0x6720, 0x6966, 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f,
+ 0x6945, 0x696a, 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948,
+ 0x6949, 0x6935, 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978,
+ 0x6934, 0x6969, 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941,
+ 0x6974, 0x694c, 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951,
+ 0x6932, 0x6952, 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43,
+ 0x6b42, 0x6b48, 0x6b41, 0x6b9b, 0x0000, 0x6bfb, 0x6bfc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
+ 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
+ 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
+ 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
+ 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
+ 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
+ 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
+ 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7144, 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291,
+ 0x7290, 0x728e, 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a,
+ 0x7349, 0x7444, 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440,
+ 0x744f, 0x7450, 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1,
+ 0x74ff, 0x74fe, 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef,
+ 0x760f, 0x7603, 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610,
+ 0x75fb, 0x75f6, 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd,
+ 0x7755, 0x775f, 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767,
+ 0x7754, 0x7759, 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f,
+ 0x7884, 0x7895, 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899,
+ 0x7880, 0x7896, 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11,
+ 0x7a18, 0x7a19, 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
+ 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
+ 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
+ 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
+ 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
+ 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
+ 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
+ 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8144, 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242,
+ 0x8245, 0x84f1, 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d,
+ 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d,
+ 0x845a, 0x8459, 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437,
+ 0x843a, 0x8434, 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429,
+ 0x83d9, 0x844b, 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439,
+ 0x844e, 0x844c, 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447,
+ 0x8436, 0x8433, 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454,
+ 0x846e, 0x8450, 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6,
+ 0x86f5, 0x874d, 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d,
+ 0x8705, 0x88d6, 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da,
+ 0x88cc, 0x88d0, 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
+ 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
+ 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
+ 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
+ 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
+ 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
+ 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
+ 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9044, 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111,
+ 0x9116, 0x9114, 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252,
+ 0x9230, 0x923a, 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e,
+ 0x924a, 0x9246, 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f,
+ 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272,
+ 0x924e, 0x9253, 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e,
+ 0x959b, 0x9692, 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd,
+ 0x96f8, 0x96f5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d,
+ 0x980e, 0x98ac, 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5,
+ 0x9aad, 0x9aab, 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd,
+ 0x50e6, 0x50d4, 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd,
+ 0x50e4, 0x50d3, 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
+ 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
+ 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
+ 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
+ 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
+ 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
+ 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
+ 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5be3, 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a,
+ 0x5d81, 0x5d77, 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d,
+ 0x5d79, 0x5d7f, 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7,
+ 0x5ece, 0x5edc, 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43,
+ 0x5f6f, 0x5fb6, 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173,
+ 0x6152, 0x6153, 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a,
+ 0x615b, 0x6165, 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227,
+ 0x622b, 0x642b, 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472,
+ 0x6473, 0x647d, 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e,
+ 0x645c, 0x644b, 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c,
+ 0x646b, 0x6459, 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0,
+ 0x669f, 0x6705, 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
+ 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
+ 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
+ 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
+ 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
+ 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
+ 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
+ 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6f36, 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30,
+ 0x6f3c, 0x6f35, 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd,
+ 0x6ef6, 0x6f39, 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e,
+ 0x6f08, 0x6f21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182,
+ 0x718f, 0x717b, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297,
+ 0x7295, 0x7293, 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473,
+ 0x7471, 0x7475, 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503,
+ 0x757d, 0x7590, 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a,
+ 0x7614, 0x76b8, 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780,
+ 0x776f, 0x777e, 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8,
+ 0x787e, 0x78ab, 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4,
+ 0x7998, 0x798a, 0x798b, 0x7996, 0x7995, 0x7994, 0x7993, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
+ 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
+ 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
+ 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
+ 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
+ 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
+ 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
+ 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8024, 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187,
+ 0x818d, 0x818c, 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f,
+ 0x84ba, 0x84ce, 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4,
+ 0x84c1, 0x84cd, 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7,
+ 0x84bb, 0x84a2, 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af,
+ 0x84a8, 0x84d6, 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4,
+ 0x84d2, 0x84db, 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728,
+ 0x876b, 0x8740, 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743,
+ 0x872c, 0x8741, 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d,
+ 0x873c, 0x8712, 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727,
+ 0x8738, 0x8724, 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1,
+ 0x88f2, 0x88fa, 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
+ 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
+ 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
+ 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
+ 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
+ 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
+ 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
+ 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x92a6, 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3,
+ 0x92ee, 0x928e, 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1,
+ 0x928a, 0x9286, 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9,
+ 0x929d, 0x928b, 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d,
+ 0x977a, 0x977e, 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781,
+ 0x977f, 0x97ce, 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900,
+ 0x9907, 0x999d, 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2,
+ 0x99bd, 0x99c7, 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60,
+ 0x9b61, 0x9b5f, 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103,
+ 0x5130, 0x50f8, 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c,
+ 0x50fd, 0x510a, 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642,
+ 0x564c, 0x5635, 0x5641, 0x564a, 0x5649, 0x5646, 0x5658, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
+ 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
+ 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
+ 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
+ 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
+ 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
+ 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
+ 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x619b, 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa,
+ 0x61a1, 0x618d, 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496,
+ 0x64a0, 0x6485, 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c,
+ 0x64a3, 0x649f, 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579,
+ 0x657b, 0x65b2, 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7,
+ 0x66aa, 0x66af, 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15,
+ 0x69f1, 0x69e4, 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d,
+ 0x69fe, 0x6a27, 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40,
+ 0x6a08, 0x69e6, 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04,
+ 0x6a18, 0x6a25, 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16,
+ 0x6b51, 0x6ba5, 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff,
+ 0x6c02, 0x6f41, 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
+ 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
+ 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
+ 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
+ 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
+ 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
+ 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
+ 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7362, 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d,
+ 0x7485, 0x7488, 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625,
+ 0x761e, 0x7619, 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b,
+ 0x769c, 0x769d, 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788,
+ 0x78cd, 0x78bb, 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8,
+ 0x78c3, 0x78c4, 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2,
+ 0x799b, 0x6b76, 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb,
+ 0x7bbe, 0x7bac, 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5,
+ 0x7cc8, 0x7ccc, 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7,
+ 0x7de1, 0x7e03, 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee,
+ 0x7ddf, 0x7f76, 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea,
+ 0x7fec, 0x7fe6, 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
+ 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
+ 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
+ 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
+ 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
+ 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
+ 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
+ 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8756, 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758,
+ 0x8754, 0x875b, 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d,
+ 0x876a, 0x8750, 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a,
+ 0x876e, 0x875c, 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767,
+ 0x8769, 0x885a, 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918,
+ 0x8919, 0x8906, 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4,
+ 0x89a3, 0x89ed, 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3,
+ 0x8ad1, 0x8ad4, 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5,
+ 0x8ad8, 0x8ac3, 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f,
+ 0x8ce5, 0x8cdf, 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0,
+ 0x8d9c, 0x8da1, 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e,
+ 0x8e15, 0x8e1b, 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
+ 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
+ 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
+ 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
+ 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
+ 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
+ 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
+ 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x92b5, 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab,
+ 0x95ae, 0x95b0, 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702,
+ 0x975a, 0x978a, 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d,
+ 0x9826, 0x9829, 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908,
+ 0x98fa, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd,
+ 0x99cf, 0x99d3, 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb,
+ 0x99d7, 0x99cc, 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1,
+ 0x9b46, 0x9b43, 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75,
+ 0x9b70, 0x9b68, 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff,
+ 0x9cf7, 0x9d07, 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04,
+ 0x9e83, 0x9ed3, 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a,
+ 0x5111, 0x51de, 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
+ 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
+ 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
+ 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
+ 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
+ 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
+ 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
+ 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x61bf, 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf,
+ 0x64c9, 0x64bd, 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533,
+ 0x657f, 0x657c, 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb,
+ 0x66cf, 0x66bd, 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66,
+ 0x6a49, 0x6a67, 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76,
+ 0x6a5b, 0x6a51, 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a,
+ 0x6a64, 0x6a50, 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c,
+ 0x6a5e, 0x6a56, 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54,
+ 0x6b56, 0x6ba7, 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03,
+ 0x6c06, 0x6fad, 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8,
+ 0x6f5e, 0x6fc4, 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5,
+ 0x6fae, 0x6fba, 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
+ 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
+ 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
+ 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
+ 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
+ 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
+ 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
+ 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7797, 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3,
+ 0x78db, 0x78e1, 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44,
+ 0x7a48, 0x7a47, 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde,
+ 0x7be3, 0x7be7, 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9,
+ 0x7bd4, 0x7bea, 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2,
+ 0x7cd4, 0x7cd7, 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c,
+ 0x7e1f, 0x7e20, 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22,
+ 0x7e0b, 0x7e0f, 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43,
+ 0x7f7b, 0x7f7c, 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c,
+ 0x81b1, 0x81a6, 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac,
+ 0x81b4, 0x81b2, 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257,
+ 0x8556, 0x8545, 0x856b, 0x854d, 0x8553, 0x8561, 0x8558, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
+ 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
+ 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
+ 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
+ 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
+ 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
+ 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
+ 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8ae2, 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4,
+ 0x8adf, 0x8af0, 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef,
+ 0x8afb, 0x8c91, 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0,
+ 0x8cf3, 0x8d6c, 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38,
+ 0x8e40, 0x8e45, 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f,
+ 0x8ebd, 0x8f36, 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34,
+ 0x9076, 0x9079, 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136,
+ 0x9193, 0x9190, 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308,
+ 0x931f, 0x9306, 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323,
+ 0x9312, 0x9301, 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d,
+ 0x92fa, 0x9325, 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324,
+ 0x92ff, 0x9329, 0x9339, 0x9335, 0x932a, 0x9314, 0x930c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
+ 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
+ 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
+ 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
+ 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
+ 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
+ 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
+ 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9b7d, 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14,
+ 0x9d29, 0x9d1d, 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88,
+ 0x9e86, 0x9e87, 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12,
+ 0x9f3d, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4,
+ 0x5693, 0x568c, 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682,
+ 0x567f, 0x5681, 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25,
+ 0x5b32, 0x5b23, 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b,
+ 0x5bf1, 0x5bf2, 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3,
+ 0x61b5, 0x61bc, 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de,
+ 0x64ef, 0x64e9, 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580,
+ 0x65b6, 0x65da, 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89,
+ 0x6a9f, 0x6a9b, 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
+ 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
+ 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
+ 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
+ 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
+ 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
+ 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
+ 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x77b4, 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902,
+ 0x78fb, 0x78fc, 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab,
+ 0x79a8, 0x7a5c, 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe,
+ 0x7ac0, 0x7ac1, 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb,
+ 0x7c0e, 0x7bf4, 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01,
+ 0x7bf8, 0x7bfd, 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8,
+ 0x7e2d, 0x7e3c, 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49,
+ 0x7e40, 0x7e47, 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44,
+ 0x7e3a, 0x7f45, 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c,
+ 0x81bb, 0x81c4, 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9,
+ 0x825b, 0x825a, 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595,
+ 0x85a0, 0x858b, 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
+ 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
+ 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
+ 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
+ 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
+ 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
+ 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
+ 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8b18, 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f,
+ 0x8b12, 0x8b15, 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13,
+ 0x8b1a, 0x8c4f, 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94,
+ 0x8cf9, 0x8d6f, 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47,
+ 0x8f43, 0x8f40, 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b,
+ 0x9199, 0x919f, 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af,
+ 0x9364, 0x9356, 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349,
+ 0x9350, 0x9351, 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379,
+ 0x9357, 0x9355, 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361,
+ 0x935e, 0x9363, 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0,
+ 0x95c9, 0x95c3, 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720,
+ 0x971f, 0x9718, 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
+ 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
+ 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
+ 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
+ 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
+ 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
+ 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
+ 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9d45, 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d,
+ 0x7ff5, 0x9d2d, 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda,
+ 0x9efb, 0x9eff, 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131,
+ 0x512d, 0x512e, 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699,
+ 0x5970, 0x5b3c, 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8,
+ 0x61df, 0x61ed, 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6,
+ 0x61e9, 0x64ff, 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc,
+ 0x6594, 0x65db, 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd,
+ 0x6ae1, 0x6ac6, 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad,
+ 0x6b5e, 0x6bc9, 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005,
+ 0x7014, 0x700e, 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7,
+ 0x700a, 0x7201, 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
+ 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
+ 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
+ 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
+ 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
+ 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
+ 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
+ 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x81d0, 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3,
+ 0x85c2, 0x85b3, 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb,
+ 0x85ce, 0x85c8, 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8,
+ 0x85b7, 0x85be, 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb,
+ 0x87ea, 0x87e5, 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3,
+ 0x87ed, 0x87d8, 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4,
+ 0x87e8, 0x87dd, 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950,
+ 0x8951, 0x8949, 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35,
+ 0x8b47, 0x8b2f, 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26,
+ 0x8b36, 0x8b2e, 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75,
+ 0x8c99, 0x8c98, 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c,
+ 0x8e62, 0x8e60, 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
+ 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
+ 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
+ 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
+ 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
+ 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
+ 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
+ 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x97a2, 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa,
+ 0x9850, 0x9851, 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f,
+ 0x9a0b, 0x9a09, 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07,
+ 0x9a06, 0x9ac0, 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35,
+ 0x9b4a, 0x9b4c, 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1,
+ 0x9bb5, 0x9bb8, 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c,
+ 0x9d53, 0x9d4f, 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c,
+ 0x9d57, 0x9d52, 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c,
+ 0x9edf, 0x9f01, 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29,
+ 0x9f28, 0x9f4c, 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4,
+ 0x56ab, 0x56ad, 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd,
+ 0x58db, 0x5912, 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
+ 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
+ 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
+ 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
+ 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
+ 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
+ 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
+ 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7921, 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68,
+ 0x7c33, 0x7c3c, 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76,
+ 0x7e75, 0x7e78, 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74,
+ 0x7e68, 0x7f4b, 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe,
+ 0x8078, 0x81d7, 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1,
+ 0x85ed, 0x85d9, 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2,
+ 0x85f8, 0x85d8, 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6,
+ 0x85ef, 0x85de, 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7,
+ 0x8809, 0x880c, 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a,
+ 0x8802, 0x8962, 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958,
+ 0x895d, 0x8959, 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48,
+ 0x8b4a, 0x8b40, 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
+ 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
+ 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
+ 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
+ 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
+ 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
+ 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
+ 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x97b3, 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c,
+ 0x9859, 0x985d, 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948,
+ 0x9947, 0x9943, 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d,
+ 0x9a24, 0x9a1b, 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c,
+ 0x9a14, 0x9ac2, 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea,
+ 0x9beb, 0x9be0, 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4,
+ 0x9bd7, 0x9bec, 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda,
+ 0x9d77, 0x9d81, 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78,
+ 0x9d86, 0x9d8b, 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70,
+ 0x9d69, 0x9d85, 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f,
+ 0x9d87, 0x9d68, 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40,
+ 0x9f41, 0x9f4d, 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
+ 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
+ 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
+ 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
+ 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
+ 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
+ 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
+ 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x79b2, 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48,
+ 0x7c4a, 0x7c47, 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80,
+ 0x7fba, 0x7fff, 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269,
+ 0x8622, 0x85ff, 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604,
+ 0x8609, 0x8605, 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817,
+ 0x8813, 0x8816, 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a,
+ 0x8b5d, 0x8b68, 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86,
+ 0x8e88, 0x8e84, 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a,
+ 0x908d, 0x9143, 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b,
+ 0x9413, 0x93fb, 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410,
+ 0x9428, 0x9419, 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e,
+ 0x9416, 0x9412, 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
+ 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
+ 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
+ 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
+ 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
+ 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
+ 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
+ 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9da0, 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a,
+ 0x9da2, 0x9da8, 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6,
+ 0x9da7, 0x9e99, 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6,
+ 0x9f30, 0x9f2e, 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91,
+ 0x513a, 0x5139, 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48,
+ 0x5b47, 0x5dcb, 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc,
+ 0x6b03, 0x6af8, 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049,
+ 0x7045, 0x7046, 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a,
+ 0x77d0, 0x792d, 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a,
+ 0xeb45, 0x7e88, 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030,
+ 0x81dd, 0x8618, 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619,
+ 0x8627, 0x862e, 0x8621, 0x8620, 0x8629, 0x861e, 0x8625, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
+ 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
+ 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
+ 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
+ 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
+ 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
+ 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
+ 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9a3f, 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a,
+ 0x9b52, 0x9c2b, 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29,
+ 0x9c24, 0x9c21, 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca,
+ 0x9dcf, 0x9dbe, 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9,
+ 0x9dba, 0x9dac, 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd,
+ 0x9db2, 0x9e7a, 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18,
+ 0x9f1a, 0x9f31, 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6,
+ 0x56c5, 0x56cb, 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2,
+ 0x6521, 0x6520, 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d,
+ 0x7055, 0x7056, 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f,
+ 0x74d8, 0x74d5, 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4,
+ 0x7a70, 0x7a71, 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
+ 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
+ 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
+ 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
+ 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
+ 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
+ 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
+ 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9a49, 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b,
+ 0x9b56, 0x9b55, 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33,
+ 0x9c41, 0x9c3c, 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb,
+ 0x9dd2, 0x9dde, 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf,
+ 0x9de9, 0x9dd9, 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6,
+ 0x9ef0, 0x9f35, 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2,
+ 0x513d, 0x5299, 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f,
+ 0x5f4f, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb,
+ 0x6b11, 0x6b12, 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382,
+ 0x7381, 0x7383, 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c,
+ 0x863a, 0x8640, 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830,
+ 0x8832, 0x882e, 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
+ 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
+ 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
+ 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
+ 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
+ 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
+ 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
+ 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9f71, 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e,
+ 0x5c6d, 0x652d, 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d,
+ 0x7060, 0x7223, 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6,
+ 0x7c6a, 0x7e97, 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835,
+ 0x884b, 0x8b94, 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be,
+ 0x91bd, 0x91c2, 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743,
+ 0x9747, 0x97c7, 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67,
+ 0x9c66, 0x9c62, 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03,
+ 0x9e06, 0x9e05, 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04,
+ 0x9ea0, 0x9f1e, 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e,
+ 0x65b8, 0x6b18, 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa,
+ 0x77d8, 0x77d9, 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
+ 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
+ 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
+ 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
+ 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
+ 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
+ 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
+ 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9fa4, 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d,
+ 0x883f, 0x8b9e, 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874,
+ 0x98cc, 0x9961, 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15,
+ 0x9e17, 0x9f48, 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482,
+ 0x9480, 0x9481, 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b,
+ 0x8b9f, 0x9483, 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d,
+ 0x7069, 0x706a, 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xfe4f, 0xffffffff, 0x00ff, 0x0000, 0x0100, 0x0002, 0x6000, 0x804f240
+};
+
+
+const unichar_t unicode_from_big5hkscs[] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xeeb8, 0xeeb9, 0xeeba, 0xeebb, 0xeebc, 0xeebd, 0xeebe, 0xeebf,
+ 0xeec0, 0xeec1, 0xeec2, 0xeec3, 0xeec4, 0xeec5, 0xeec6, 0xeec7,
+ 0xeec8, 0xeec9, 0xeeca, 0xeecb, 0xeecc, 0xeecd, 0xeece, 0xeecf,
+ 0xeed0, 0xeed1, 0xeed2, 0xeed3, 0xeed4, 0xeed5, 0xeed6, 0xeed7,
+ 0xeed8, 0xeed9, 0xeeda, 0xeedb, 0xeedc, 0xeedd, 0xeede, 0xeedf,
+ 0xeee0, 0xeee1, 0xeee2, 0xeee3, 0xeee4, 0xeee5, 0xeee6, 0xeee7,
+ 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xeeed, 0xeeee, 0xeeef,
+ 0xeef0, 0xeef1, 0xeef2, 0xeef3, 0xeef4, 0xeef5, 0xeef6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xeef7, 0xeef8, 0xeef9, 0xeefa, 0xeefb, 0xeefc, 0xeefd,
+ 0xeefe, 0xeeff, 0xef00, 0xef01, 0xef02, 0xef03, 0xef04, 0xef05,
+ 0xef06, 0xef07, 0xef08, 0xef09, 0xef0a, 0xef0b, 0xef0c, 0xef0d,
+ 0xef0e, 0xef0f, 0xef10, 0xef11, 0xef12, 0xef13, 0xef14, 0xef15,
+ 0xef16, 0xef17, 0xef18, 0xef19, 0xef1a, 0xef1b, 0xef1c, 0xef1d,
+ 0xef1e, 0xef1f, 0xef20, 0xef21, 0xef22, 0xef23, 0xef24, 0xef25,
+ 0xef26, 0xef27, 0xef28, 0xef29, 0xef2a, 0xef2b, 0xef2c, 0xef2d,
+ 0xef2e, 0xef2f, 0xef30, 0xef31, 0xef32, 0xef33, 0xef34, 0xef35,
+ 0xef36, 0xef37, 0xef38, 0xef39, 0xef3a, 0xef3b, 0xef3c, 0xef3d,
+ 0xef3e, 0xef3f, 0xef40, 0xef41, 0xef42, 0xef43, 0xef44, 0xef45,
+ 0xef46, 0xef47, 0xef48, 0xef49, 0xef4a, 0xef4b, 0xef4c, 0xef4d,
+ 0xef4e, 0xef4f, 0xef50, 0xef51, 0xef52, 0xef53, 0xef54, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xef55, 0xef56, 0xef57, 0xef58, 0xef59, 0xef5a, 0xef5b, 0xef5c,
+ 0xef5d, 0xef5e, 0xef5f, 0xef60, 0xef61, 0xef62, 0xef63, 0xef64,
+ 0xef65, 0xef66, 0xef67, 0xef68, 0xef69, 0xef6a, 0xef6b, 0xef6c,
+ 0xef6d, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xef72, 0xef73, 0xef74,
+ 0xef75, 0xef76, 0xef77, 0xef78, 0xef79, 0xef7a, 0xef7b, 0xef7c,
+ 0xef7d, 0xef7e, 0xef7f, 0xef80, 0xef81, 0xef82, 0xef83, 0xef84,
+ 0xef85, 0xef86, 0xef87, 0xef88, 0xef89, 0xef8a, 0xef8b, 0xef8c,
+ 0xef8d, 0xef8e, 0xef8f, 0xef90, 0xef91, 0xef92, 0xef93, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xef94, 0xef95, 0xef96, 0xef97, 0xef98, 0xef99, 0xef9a,
+ 0xef9b, 0xef9c, 0xef9d, 0xef9e, 0xef9f, 0xefa0, 0xefa1, 0xefa2,
+ 0xefa3, 0xefa4, 0xefa5, 0xefa6, 0xefa7, 0xefa8, 0xefa9, 0xefaa,
+ 0xefab, 0xefac, 0xefad, 0xefae, 0xefaf, 0xefb0, 0xefb1, 0xefb2,
+ 0xefb3, 0xefb4, 0xefb5, 0xefb6, 0xefb7, 0xefb8, 0xefb9, 0xefba,
+ 0xefbb, 0xefbc, 0xefbd, 0xefbe, 0xefbf, 0xefc0, 0xefc1, 0xefc2,
+ 0xefc3, 0xefc4, 0xefc5, 0xefc6, 0xefc7, 0xefc8, 0xefc9, 0xefca,
+ 0xefcb, 0xefcc, 0xefcd, 0xefce, 0xefcf, 0xefd0, 0xefd1, 0xefd2,
+ 0xefd3, 0xefd4, 0xefd5, 0xefd6, 0xefd7, 0xefd8, 0xefd9, 0xefda,
+ 0xefdb, 0xefdc, 0xefdd, 0xefde, 0xefdf, 0xefe0, 0xefe1, 0xefe2,
+ 0xefe3, 0xefe4, 0xefe5, 0xefe6, 0xefe7, 0xefe8, 0xefe9, 0xefea,
+ 0xefeb, 0xefec, 0xefed, 0xefee, 0xefef, 0xeff0, 0xeff1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xeff2, 0xeff3, 0xeff4, 0xeff5, 0xeff6, 0xeff7, 0xeff8, 0xeff9,
+ 0xeffa, 0xeffb, 0xeffc, 0xeffd, 0xeffe, 0xefff, 0xf000, 0xf001,
+ 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, 0xf008, 0xf009,
+ 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, 0xf010, 0xf011,
+ 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, 0xf018, 0xf019,
+ 0xf01a, 0xf01b, 0xf01c, 0xf01d, 0xf01e, 0xf01f, 0xf020, 0xf021,
+ 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027, 0xf028, 0xf029,
+ 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f, 0xf030, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
+ 0xf038, 0xf039, 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f,
+ 0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047,
+ 0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f,
+ 0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057,
+ 0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f,
+ 0xf060, 0xf061, 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067,
+ 0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f,
+ 0xf070, 0xf071, 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077,
+ 0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f,
+ 0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087,
+ 0xf088, 0xf089, 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xf08f, 0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096,
+ 0xf097, 0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e,
+ 0xf09f, 0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6,
+ 0xf0a7, 0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae,
+ 0xf0af, 0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6,
+ 0xf0b7, 0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be,
+ 0xf0bf, 0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6,
+ 0xf0c7, 0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xf0ce, 0xf0cf, 0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4,
+ 0xf0d5, 0xf0d6, 0xf0d7, 0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc,
+ 0xf0dd, 0xf0de, 0xf0df, 0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4,
+ 0xf0e5, 0xf0e6, 0xf0e7, 0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec,
+ 0xf0ed, 0xf0ee, 0xf0ef, 0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4,
+ 0xf0f5, 0xf0f6, 0xf0f7, 0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc,
+ 0xf0fd, 0xf0fe, 0xf0ff, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104,
+ 0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c,
+ 0xf10d, 0xf10e, 0xf10f, 0xf110, 0xf111, 0xf112, 0xf113, 0xf114,
+ 0xf115, 0xf116, 0xf117, 0xf118, 0xf119, 0xf11a, 0xf11b, 0xf11c,
+ 0xf11d, 0xf11e, 0xf11f, 0xf120, 0xf121, 0xf122, 0xf123, 0xf124,
+ 0xf125, 0xf126, 0xf127, 0xf128, 0xf129, 0xf12a, 0xf12b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xf12c, 0xf12d, 0xf12e, 0xf12f, 0xf130, 0xf131, 0xf132, 0xf133,
+ 0xf134, 0xf135, 0xf136, 0xf137, 0xf138, 0xf139, 0xf13a, 0xf13b,
+ 0xf13c, 0xf13d, 0xf13e, 0xf13f, 0xf140, 0xf141, 0xf142, 0xf143,
+ 0xf144, 0xf145, 0xf146, 0xf147, 0xf148, 0xf149, 0xf14a, 0xf14b,
+ 0xf14c, 0xf14d, 0xf14e, 0xf14f, 0xf150, 0xf151, 0xf152, 0xf153,
+ 0xf154, 0xf155, 0xf156, 0xf157, 0xf158, 0xf159, 0xf15a, 0xf15b,
+ 0xf15c, 0xf15d, 0xf15e, 0xf15f, 0xf160, 0xf161, 0xf162, 0xf163,
+ 0xf164, 0xf165, 0xf166, 0xf167, 0xf168, 0xf169, 0xf16a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xf16b, 0xf16c, 0xf16d, 0xf16e, 0xf16f, 0xf170, 0xf171,
+ 0xf172, 0xf173, 0xf174, 0xf175, 0xf176, 0xf177, 0xf178, 0xf179,
+ 0xf17a, 0xf17b, 0xf17c, 0xf17d, 0xf17e, 0xf17f, 0xf180, 0xf181,
+ 0xf182, 0xf183, 0xf184, 0xf185, 0xf186, 0xf187, 0xf188, 0xf189,
+ 0xf18a, 0xf18b, 0xf18c, 0xf18d, 0xf18e, 0xf18f, 0xf190, 0xf191,
+ 0xf192, 0xf193, 0xf194, 0xf195, 0xf196, 0xf197, 0xf198, 0xf199,
+ 0xf19a, 0xf19b, 0xf19c, 0xf19d, 0xf19e, 0xf19f, 0xf1a0, 0xf1a1,
+ 0xf1a2, 0xf1a3, 0xf1a4, 0xf1a5, 0xf1a6, 0xf1a7, 0xf1a8, 0xf1a9,
+ 0xf1aa, 0xf1ab, 0xf1ac, 0xf1ad, 0xf1ae, 0xf1af, 0xf1b0, 0xf1b1,
+ 0xf1b2, 0xf1b3, 0xf1b4, 0xf1b5, 0xf1b6, 0xf1b7, 0xf1b8, 0xf1b9,
+ 0xf1ba, 0xf1bb, 0xf1bc, 0xf1bd, 0xf1be, 0xf1bf, 0xf1c0, 0xf1c1,
+ 0xf1c2, 0xf1c3, 0xf1c4, 0xf1c5, 0xf1c6, 0xf1c7, 0xf1c8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xf1c9, 0xf1ca, 0xf1cb, 0xf1cc, 0xf1cd, 0xf1ce, 0xf1cf, 0xf1d0,
+ 0xf1d1, 0xf1d2, 0xf1d3, 0xf1d4, 0xf1d5, 0xf1d6, 0xf1d7, 0xf1d8,
+ 0xf1d9, 0xf1da, 0xf1db, 0xf1dc, 0xf1dd, 0xf1de, 0xf1df, 0xf1e0,
+ 0xf1e1, 0xf1e2, 0xf1e3, 0xf1e4, 0xf1e5, 0xf1e6, 0xf1e7, 0xf1e8,
+ 0xf1e9, 0xf1ea, 0xf1eb, 0xf1ec, 0xf1ed, 0xf1ee, 0xf1ef, 0xf1f0,
+ 0xf1f1, 0xf1f2, 0xf1f3, 0xf1f4, 0xf1f5, 0xf1f6, 0xf1f7, 0xf1f8,
+ 0xf1f9, 0xf1fa, 0xf1fb, 0xf1fc, 0xf1fd, 0xf1fe, 0xf1ff, 0xf200,
+ 0xf201, 0xf202, 0xf203, 0xf204, 0xf205, 0xf206, 0xf207, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xf208, 0xf209, 0xf20a, 0xf20b, 0xf20c, 0xf20d, 0xf20e,
+ 0xf20f, 0xf210, 0xf211, 0xf212, 0xf213, 0xf214, 0xf215, 0xf216,
+ 0xf217, 0xf218, 0xf219, 0xf21a, 0xf21b, 0xf21c, 0xf21d, 0xf21e,
+ 0xf21f, 0xf220, 0xf221, 0xf222, 0xf223, 0xf224, 0xf225, 0xf226,
+ 0xf227, 0xf228, 0xf229, 0xf22a, 0xf22b, 0xf22c, 0xf22d, 0xf22e,
+ 0xf22f, 0xf230, 0xf231, 0xf232, 0xf233, 0xf234, 0xf235, 0xf236,
+ 0xf237, 0xf238, 0xf239, 0xf23a, 0xf23b, 0xf23c, 0xf23d, 0xf23e,
+ 0xf23f, 0xf240, 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, 0xf246,
+ 0xf247, 0xf248, 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, 0xf24e,
+ 0xf24f, 0xf250, 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, 0xf256,
+ 0xf257, 0xf258, 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, 0xf25e,
+ 0xf25f, 0xf260, 0xf261, 0xf262, 0xf263, 0xf264, 0xf265, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xf266, 0xf267, 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d,
+ 0xf26e, 0xf26f, 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275,
+ 0xf276, 0xf277, 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d,
+ 0xf27e, 0xf27f, 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285,
+ 0xf286, 0xf287, 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d,
+ 0xf28e, 0xf28f, 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295,
+ 0xf296, 0xf297, 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d,
+ 0xf29e, 0xf29f, 0xf2a0, 0xf2a1, 0xf2a2, 0xf2a3, 0xf2a4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xf2a5, 0xf2a6, 0xf2a7, 0xf2a8, 0xf2a9, 0xf2aa, 0xf2ab,
+ 0xf2ac, 0xf2ad, 0xf2ae, 0xf2af, 0xf2b0, 0xf2b1, 0xf2b2, 0xf2b3,
+ 0xf2b4, 0xf2b5, 0xf2b6, 0xf2b7, 0xf2b8, 0xf2b9, 0xf2ba, 0xf2bb,
+ 0xf2bc, 0xf2bd, 0xf2be, 0xf2bf, 0xf2c0, 0xf2c1, 0xf2c2, 0xf2c3,
+ 0xf2c4, 0xf2c5, 0xf2c6, 0xf2c7, 0xf2c8, 0xf2c9, 0xf2ca, 0xf2cb,
+ 0xf2cc, 0xf2cd, 0xf2ce, 0xf2cf, 0xf2d0, 0xf2d1, 0xf2d2, 0xf2d3,
+ 0xf2d4, 0xf2d5, 0xf2d6, 0xf2d7, 0xf2d8, 0xf2d9, 0xf2da, 0xf2db,
+ 0xf2dc, 0xf2dd, 0xf2de, 0xf2df, 0xf2e0, 0xf2e1, 0xf2e2, 0xf2e3,
+ 0xf2e4, 0xf2e5, 0xf2e6, 0xf2e7, 0xf2e8, 0xf2e9, 0xf2ea, 0xf2eb,
+ 0xf2ec, 0xf2ed, 0xf2ee, 0xf2ef, 0xf2f0, 0xf2f1, 0xf2f2, 0xf2f3,
+ 0xf2f4, 0xf2f5, 0xf2f6, 0xf2f7, 0xf2f8, 0xf2f9, 0xf2fa, 0xf2fb,
+ 0xf2fc, 0xf2fd, 0xf2fe, 0xf2ff, 0xf300, 0xf301, 0xf302, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, 0xf30a,
+ 0xf30b, 0xf30c, 0xf30d, 0xf30e, 0xf30f, 0xf310, 0xf311, 0xf312,
+ 0xf313, 0xf314, 0xf315, 0xf316, 0xf317, 0xf318, 0x0100, 0x00c1,
+ 0x01cd, 0x00c0, 0x0112, 0x00c9, 0x011a, 0x00c8, 0x014c, 0x00d3,
+ 0x01d1, 0x00d2, 0xf325, 0x1ebe, 0xf327, 0x1ec0, 0x00ca, 0x0101,
+ 0x00e1, 0x01ce, 0x00e0, 0x0251, 0x0113, 0x00e9, 0x011b, 0x00e8,
+ 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
+ 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x01dc, 0x00fc, 0xf344, 0x1ebf, 0xf346, 0x1ec1, 0x00ea,
+ 0x0261, 0xf34a, 0xf34b, 0xf34c, 0xf34d, 0xf34e, 0xf34f, 0xf350,
+ 0xf351, 0xf352, 0xf353, 0xf354, 0xf355, 0xf356, 0xf357, 0xf358,
+ 0xf359, 0xf35a, 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, 0xf360,
+ 0xf361, 0xf362, 0xf363, 0xf364, 0xf365, 0xf366, 0xf367, 0xf368,
+ 0xf369, 0xf36a, 0xf36b, 0xf36c, 0xf36d, 0xf36e, 0xf36f, 0xf370,
+ 0xf371, 0xf372, 0xf373, 0xf374, 0xf375, 0xf376, 0xf377, 0xf378,
+ 0xf379, 0xf37a, 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf37f, 0xf380,
+ 0xf381, 0xf382, 0xf383, 0xf384, 0xf385, 0xf386, 0xf387, 0xf388,
+ 0xf389, 0xf38a, 0xf38b, 0xf38c, 0xf38d, 0xf38e, 0xf38f, 0xf390,
+ 0xf391, 0xf392, 0xf393, 0xf394, 0xf395, 0xf396, 0xf397, 0xf398,
+ 0xf399, 0xf39a, 0xf39b, 0xf39c, 0xf39d, 0xf39e, 0xf39f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xf3a0, 0xf3a1, 0xf3a2, 0x650a, 0xf3a4, 0xf3a5, 0x4e3d, 0x6edd,
+ 0x9d4e, 0x91df, 0xf3aa, 0xf3ab, 0xf3ac, 0x6491, 0x4f1a, 0x4f28,
+ 0x4fa8, 0x5156, 0x5174, 0x519c, 0x51e4, 0x52a1, 0x52a8, 0x533b,
+ 0x534e, 0x53d1, 0x53d8, 0x56e2, 0x58f0, 0x5904, 0x5907, 0x5932,
+ 0x5934, 0x5b66, 0x5b9e, 0x5b9f, 0x5c9a, 0x5e86, 0x603b, 0x6589,
+ 0x67fe, 0x6804, 0x6865, 0x6d4e, 0x70bc, 0x7535, 0x7ea4, 0x7eac,
+ 0x7eba, 0x7ec7, 0x7ecf, 0x7edf, 0x7f06, 0x7f37, 0x827a, 0x82cf,
+ 0x836f, 0x89c6, 0x8bbe, 0x8be2, 0x8f66, 0x8f67, 0x8f6e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7411, 0x7cfc, 0x7dcd, 0x6946, 0x7ac9, 0x5227, 0xf3e5,
+ 0xf3e6, 0xf3e7, 0xf3e8, 0x918c, 0x78b8, 0x915e, 0x80bc, 0xf3ed,
+ 0x8d0b, 0x80f6, 0xf3f0, 0xf3f1, 0xf3f2, 0x809f, 0x9ec7, 0x4ccd,
+ 0x9dc9, 0x9e0c, 0x4c3e, 0xf3f9, 0xf3fa, 0x9e0a, 0xf3fc, 0x35c1,
+ 0xf3fe, 0x6e9a, 0x823e, 0x7519, 0xf402, 0x4911, 0x9a6c, 0x9a8f,
+ 0x9f99, 0x7987, 0xf408, 0xf409, 0xf40a, 0xf40b, 0x4e24, 0x4e81,
+ 0x4e80, 0x4e87, 0x4ebf, 0x4eeb, 0x4f37, 0x344c, 0x4fbd, 0x3e48,
+ 0x5003, 0x5088, 0x347d, 0x3493, 0x34a5, 0x5186, 0x5905, 0x51db,
+ 0x51fc, 0x5205, 0x4e89, 0x5279, 0x5290, 0x5327, 0x35c7, 0x53a9,
+ 0x3551, 0x53b0, 0x3553, 0x53c2, 0x5423, 0x356d, 0x3572, 0x3681,
+ 0x5493, 0x54a3, 0x54b4, 0x54b9, 0x54d0, 0x54ef, 0x5518, 0x5523,
+ 0x5528, 0x3598, 0x553f, 0x35a5, 0x35bf, 0x55d7, 0x35c5, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xf43d, 0x5525, 0xf43f, 0xf440, 0xf441, 0xf442, 0x5590, 0xf444,
+ 0x39ec, 0xf446, 0x8e46, 0xf448, 0xf449, 0x4053, 0xf44b, 0x777a,
+ 0xf44d, 0x3a34, 0x47d5, 0xf450, 0xf451, 0xf452, 0x64dd, 0xf454,
+ 0xf455, 0xf456, 0xf457, 0x648d, 0x8e7e, 0xf45a, 0xf45b, 0xf45c,
+ 0xf45d, 0xf45e, 0xf45f, 0xf460, 0xf461, 0xf462, 0xf463, 0x47f4,
+ 0xf465, 0xf466, 0x9ab2, 0x3a67, 0xf469, 0x3fed, 0x3506, 0xf46c,
+ 0xf46d, 0xf46e, 0xf46f, 0x9d6e, 0x9815, 0xf472, 0x43d9, 0xf474,
+ 0x64b4, 0x54e3, 0xf477, 0xf478, 0xf479, 0x39fb, 0xf47b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xf47c, 0xf47d, 0xf47e, 0x64ea, 0xf480, 0xf481, 0x8e68,
+ 0xf483, 0xf484, 0xf485, 0xf486, 0x480b, 0xf488, 0x3ffa, 0x5873,
+ 0xf48b, 0xf48c, 0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0x5579,
+ 0x40bb, 0x43ba, 0xf495, 0x4ab4, 0xf497, 0xf498, 0x81aa, 0x98f5,
+ 0xf49b, 0x6379, 0x39fe, 0xf49e, 0x8dc0, 0x56a1, 0x647c, 0x3e43,
+ 0xf4a3, 0xf4a4, 0xf4a5, 0xf4a6, 0xf4a7, 0xf4a8, 0xf4a9, 0xf4aa,
+ 0x3992, 0x3a06, 0xf4ad, 0x3578, 0xf4af, 0xf4b0, 0x5652, 0xf4b2,
+ 0xf4b3, 0xf4b4, 0x34bc, 0x6c3d, 0xf4b7, 0xf4b8, 0xf4b9, 0xf4ba,
+ 0xf4bb, 0xf4bc, 0xf4bd, 0xf4be, 0xf4bf, 0xf4c0, 0xf4c1, 0x7f93,
+ 0xf4c3, 0xf4c4, 0xf4c5, 0x35fb, 0xf4c7, 0xf4c8, 0xf4c9, 0xf4ca,
+ 0x3f93, 0xf4cc, 0xf4cd, 0xf4ce, 0xf4cf, 0xf4d0, 0xf4d1, 0xf4d2,
+ 0xf4d3, 0xf4d4, 0xf4d5, 0x3ff9, 0xf4d7, 0x6432, 0xf4d9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xf4da, 0xf4db, 0xf4dc, 0xf4dd, 0xf4de, 0xf4df, 0xf4e0, 0x3a18,
+ 0xf4e2, 0xf4e3, 0xf4e4, 0xf4e5, 0xf4e6, 0xf4e7, 0xf4e8, 0xf4e9,
+ 0x95aa, 0x54cc, 0x82c4, 0x55b9, 0xf4ee, 0xf4ef, 0x9c26, 0x9ab6,
+ 0xf4f2, 0xf4f3, 0x7140, 0x816d, 0x80ec, 0x5c1c, 0xf4f8, 0x8134,
+ 0x3797, 0x535f, 0xf4fc, 0x91b6, 0xf4fe, 0xf4ff, 0xf500, 0xf501,
+ 0x35dd, 0xf503, 0x3609, 0xf505, 0x56af, 0xf507, 0xf508, 0xf509,
+ 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510, 0xf511,
+ 0x5a54, 0xf513, 0xf514, 0xf515, 0xf516, 0x579c, 0xf518, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xf519, 0xf51a, 0xf51b, 0xf51c, 0xf51d, 0x3703, 0xf51f,
+ 0xf520, 0xf521, 0xf522, 0xf523, 0xf524, 0xf525, 0xf526, 0x5899,
+ 0x5268, 0x361a, 0xf52a, 0x7bb2, 0x5b68, 0x4800, 0x4b2c, 0x9f27,
+ 0x49e7, 0x9c1f, 0x9b8d, 0xf533, 0xf534, 0x55fb, 0x35f2, 0x5689,
+ 0x4e28, 0x5902, 0xf53a, 0xf53b, 0x9751, 0xf53d, 0x4e5b, 0x4ebb,
+ 0x353e, 0x5c23, 0x5f51, 0x5fc4, 0x38fa, 0x624c, 0x6535, 0x6b7a,
+ 0x6c35, 0x6c3a, 0x706c, 0x722b, 0x4e2c, 0x72ad, 0xf54e, 0x7f52,
+ 0x793b, 0x7cf9, 0x7f53, 0xf553, 0x34c1, 0xf555, 0xf556, 0x8002,
+ 0x8080, 0xf559, 0xf55a, 0x535d, 0x8864, 0x89c1, 0xf55e, 0x8ba0,
+ 0x8d1d, 0x9485, 0x9578, 0x957f, 0x95e8, 0xf565, 0x97e6, 0x9875,
+ 0x98ce, 0x98de, 0x9963, 0xf56b, 0x9c7c, 0x9e1f, 0x9ec4, 0x6b6f,
+ 0xf907, 0x4e37, 0xf572, 0x961d, 0x6237, 0x94a2, 0xf576, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x503b, 0x6dfe, 0xf579, 0xf57a, 0x3dc9, 0x888f, 0xf57d, 0x7077,
+ 0x5cf5, 0x4b20, 0xf581, 0x3559, 0xf583, 0x6122, 0xf585, 0x8fa7,
+ 0x91f6, 0x7191, 0x6719, 0x73ba, 0xf58b, 0xf58c, 0x3c8b, 0xf58e,
+ 0x4b10, 0x78e4, 0x7402, 0x51ae, 0xf593, 0x4009, 0x6a63, 0xf596,
+ 0x4223, 0x860f, 0xf599, 0x7a2a, 0xf59b, 0xf59c, 0x9755, 0x704d,
+ 0x5324, 0xf5a0, 0x93f4, 0x76d9, 0xf5a3, 0xf5a4, 0x77dd, 0x4ea3,
+ 0x4ff0, 0x50bc, 0x4e2f, 0x4f17, 0xf5ab, 0x5434, 0x7d8b, 0x5892,
+ 0x58d0, 0xf5b0, 0x5e92, 0x5e99, 0x5fc2, 0xf5b4, 0x658b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xf5b6, 0x6919, 0x6a43, 0xf5b9, 0x6cff, 0xf5bb, 0x7200,
+ 0xf5bd, 0x738c, 0x3edb, 0xf5c0, 0x5b15, 0x74b9, 0x8b83, 0xf5c4,
+ 0xf5c5, 0x7a93, 0x7bec, 0x7cc3, 0x7e6c, 0x82f8, 0x8597, 0xf5cc,
+ 0x8890, 0xf5ce, 0x8eb9, 0xf5d0, 0x8fcf, 0x855f, 0x99e0, 0x9221,
+ 0xf5d5, 0xf5d6, 0xf5d7, 0x4071, 0x42a2, 0x5a1a, 0xf5db, 0xf5dc,
+ 0xf5dd, 0x9868, 0x676b, 0x4276, 0x573d, 0xf5e2, 0x85d6, 0xf5e4,
+ 0x82bf, 0xf5e6, 0x4c81, 0xf5e8, 0x5d7b, 0xf5ea, 0xf5eb, 0xf5ec,
+ 0xf5ed, 0x5b96, 0xf5ef, 0xf5f0, 0x7e5b, 0xf5f2, 0xf5f3, 0xf5f4,
+ 0xf5f5, 0xf5f6, 0xf5f7, 0xf5f8, 0xf5f9, 0xf5fa, 0xf5fb, 0xf5fc,
+ 0xf5fd, 0xf5fe, 0xf5ff, 0xf600, 0xf601, 0xf602, 0xf603, 0xf604,
+ 0xf605, 0xf606, 0xf607, 0xf608, 0xf609, 0xf60a, 0xf60b, 0xf60c,
+ 0xf60d, 0xf60e, 0xf60f, 0xf610, 0xf611, 0xf612, 0xf613, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xf614, 0xf615, 0xf616, 0xf617, 0xf618, 0xf619, 0xf61a, 0xf61b,
+ 0xf61c, 0xf61d, 0xf61e, 0xf61f, 0xf620, 0xf621, 0xf622, 0xf623,
+ 0xf624, 0xf625, 0xf626, 0xf627, 0xf628, 0xf629, 0xf62a, 0xf62b,
+ 0xf62c, 0xf62d, 0xf62e, 0xf62f, 0xf630, 0xf631, 0xf632, 0xf633,
+ 0x5d3e, 0x5d48, 0x5d56, 0x3dfc, 0x380f, 0x5da4, 0x5db9, 0x3820,
+ 0x3838, 0x5e42, 0x5ebd, 0x5f25, 0x5f83, 0x3908, 0x3914, 0x393f,
+ 0x394d, 0x60d7, 0x613d, 0x5ce5, 0x3989, 0x61b7, 0x61b9, 0x61cf,
+ 0x39b8, 0x622c, 0x6290, 0x62e5, 0x6318, 0x39f8, 0x56b1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3a03, 0x63e2, 0x63fb, 0x6407, 0x645a, 0x3a4b, 0x64c0,
+ 0x5d15, 0x5621, 0x9f9f, 0x3a97, 0x6586, 0x3abd, 0x65ff, 0x6653,
+ 0x3af2, 0x6692, 0x3b22, 0x6716, 0x3b42, 0x67a4, 0x6800, 0x3b58,
+ 0x684a, 0x6884, 0x3b72, 0x3b71, 0x3b7b, 0x6909, 0x6943, 0x725c,
+ 0x6964, 0x699f, 0x6985, 0x3bbc, 0x69d6, 0x3bdd, 0x6a65, 0x6a74,
+ 0x6a71, 0x6a82, 0x3bec, 0x6a99, 0x3bf2, 0x6aab, 0x6ab5, 0x6ad4,
+ 0x6af6, 0x6b81, 0x6bc1, 0x6bea, 0x6c75, 0x6caa, 0x3ccb, 0x6d02,
+ 0x6d06, 0x6d26, 0x6d81, 0x3cef, 0x6da4, 0x6db1, 0x6e15, 0x6e18,
+ 0x6e29, 0x6e86, 0xf694, 0x6ebb, 0x6ee2, 0x6eda, 0x9f7f, 0x6ee8,
+ 0x6ee9, 0x6f24, 0x6f34, 0x3d46, 0xf69e, 0x6f81, 0x6fbe, 0x3d6a,
+ 0x3d75, 0x71b7, 0x5c99, 0x3d8a, 0x702c, 0x3d91, 0x7050, 0x7054,
+ 0x706f, 0x707f, 0x7089, 0xf6ad, 0x43c1, 0x35f1, 0xf6b0, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xe311, 0x57be, 0xe313, 0x713e, 0xe315, 0x364e, 0x69a2, 0xe318,
+ 0x5b74, 0x7a49, 0xe31b, 0xe31c, 0x7a65, 0x7a7d, 0xe31f, 0x7abb,
+ 0x7ab0, 0x7ac2, 0x7ac3, 0x71d1, 0xe325, 0x41ca, 0x7ada, 0x7add,
+ 0x7aea, 0x41ef, 0x54b2, 0xe32c, 0x7b0b, 0x7b55, 0x7b29, 0xe330,
+ 0xe331, 0x7ba2, 0x7b6f, 0x839c, 0xe335, 0xe336, 0x7bd0, 0x8421,
+ 0x7b92, 0x7bb8, 0xe33b, 0x3dad, 0xe33d, 0x8492, 0x7bfa, 0x7c06,
+ 0x7c35, 0xe342, 0x7c44, 0x7c83, 0xe345, 0x7ca6, 0x667d, 0xe348,
+ 0x7cc9, 0x7cc7, 0x7ce6, 0x7c74, 0x7cf3, 0x7cf5, 0x7cce, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7e67, 0x451d, 0xe352, 0x7d5d, 0xe354, 0x748d, 0x7d89,
+ 0x7dab, 0x7135, 0x7db3, 0x7dd2, 0xe35b, 0xe35c, 0x7de4, 0x3d13,
+ 0x7df5, 0xe360, 0x7de5, 0xe362, 0x7e1d, 0xe364, 0xe365, 0x7e6e,
+ 0x7e92, 0x432b, 0x946c, 0x7e27, 0x7f40, 0x7f41, 0x7f47, 0x7936,
+ 0xe36f, 0x99e1, 0x7f97, 0xe372, 0x7fa3, 0xe374, 0xe375, 0x455c,
+ 0xe377, 0x4503, 0xe379, 0x7ffa, 0xe37b, 0x8005, 0x8008, 0x801d,
+ 0x8028, 0x802f, 0xe381, 0xe382, 0x803b, 0x803c, 0x8061, 0xe386,
+ 0x4989, 0xe388, 0xe389, 0xe38a, 0x6725, 0x80a7, 0xe38d, 0x8107,
+ 0x811a, 0x58b0, 0xe391, 0x6c7f, 0xe393, 0xe394, 0x64e7, 0xe396,
+ 0x8218, 0xe398, 0x6a53, 0xe39a, 0xe39b, 0x447a, 0x8229, 0xe39e,
+ 0xe39f, 0xe3a0, 0x4ff9, 0xe3a2, 0x84e2, 0x8362, 0xe3a5, 0xe3a6,
+ 0xe3a7, 0xe3a8, 0xe3a9, 0x82aa, 0x691b, 0xe3ac, 0x41db, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x854b, 0x82d0, 0x831a, 0xe3b1, 0xe3b2, 0x36c1, 0xe3b4, 0xe3b5,
+ 0x827b, 0x82e2, 0x8318, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd,
+ 0x3dbf, 0x831d, 0x55ec, 0x8385, 0x450b, 0xe3c3, 0x83ac, 0x83c1,
+ 0x83d3, 0x347e, 0xe3c8, 0x6a57, 0x855a, 0x3496, 0xe3cc, 0xe3cd,
+ 0x8458, 0xe3cf, 0x8471, 0x3dd3, 0x44e4, 0x6aa7, 0x844a, 0xe3d5,
+ 0x7958, 0x84a8, 0xe3d8, 0xe3d9, 0xe3da, 0x84de, 0x840f, 0x8391,
+ 0x44a0, 0x8493, 0x84e4, 0xe3e1, 0x4240, 0xe3e3, 0x4543, 0x8534,
+ 0x5af2, 0xe3e7, 0x4527, 0x8573, 0x4516, 0x67bf, 0x8616, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe3ed, 0xe3ee, 0x85c1, 0xe3f0, 0x8602, 0xe3f2, 0xe3f3,
+ 0xe3f4, 0x456a, 0x8628, 0x3648, 0xe3f8, 0x53f7, 0xe3fa, 0x867e,
+ 0x8771, 0xe3fd, 0x87ee, 0xe3ff, 0x87b1, 0x87da, 0x880f, 0x5661,
+ 0x866c, 0x6856, 0x460f, 0x8845, 0x8846, 0xe409, 0xe40a, 0xe40b,
+ 0x885e, 0x889c, 0x465b, 0x88b4, 0x88b5, 0x63c1, 0x88c5, 0x7777,
+ 0xe414, 0x8987, 0x898a, 0x89a6, 0x89a9, 0x89a7, 0x89bc, 0xe41b,
+ 0x89e7, 0xe41d, 0xe41e, 0x8a9c, 0x7793, 0x91fe, 0x8a90, 0xe423,
+ 0x7ae9, 0xe425, 0xe426, 0x4713, 0xe428, 0x717c, 0x8b0c, 0x8b1f,
+ 0xe42c, 0xe42d, 0x8b3f, 0x8b4c, 0x8b4d, 0x8aa9, 0xe432, 0x8b90,
+ 0x8b9b, 0x8aaf, 0xe436, 0x4615, 0x884f, 0x8c9b, 0xe43a, 0xe43b,
+ 0xe43c, 0x3725, 0xe43e, 0x8cd6, 0xe440, 0xe441, 0x8d12, 0x8d03,
+ 0xe444, 0x8cdb, 0x705c, 0x8d11, 0xe448, 0x3ed0, 0x8d77, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8da9, 0xe44c, 0xe44d, 0xe44e, 0x3b7c, 0xe450, 0xe451, 0x7ae7,
+ 0x8ead, 0x8eb6, 0x8ec3, 0x92d4, 0x8f19, 0x8f2d, 0xe459, 0xe45a,
+ 0x8fa5, 0x9303, 0xe45d, 0xe45e, 0x8fb3, 0x492a, 0xe461, 0xe462,
+ 0xe463, 0x5ef8, 0xe465, 0x8ff9, 0xe467, 0xe468, 0xe469, 0xe46a,
+ 0x3980, 0xe46c, 0x9037, 0xe46e, 0xe46f, 0x9061, 0xe471, 0xe472,
+ 0x90a8, 0xe474, 0x90c4, 0xe476, 0x90ae, 0x90fd, 0x9167, 0x3af0,
+ 0x91a9, 0x91c4, 0x7cac, 0xe47e, 0xe47f, 0x920e, 0x6c9f, 0x9241,
+ 0x9262, 0xe484, 0x92b9, 0xe486, 0xe487, 0xe488, 0xe489, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe48a, 0x932c, 0x936b, 0xe48d, 0xe48e, 0x708f, 0x5ac3,
+ 0xe491, 0xe492, 0x4965, 0x9244, 0xe495, 0xe496, 0xe497, 0x9373,
+ 0x945b, 0x8ebc, 0x9585, 0x95a6, 0x9426, 0x95a0, 0x6ff6, 0x42b9,
+ 0xe4a1, 0xe4a2, 0xe4a3, 0xe4a4, 0x49df, 0x6c1c, 0x967b, 0x9696,
+ 0x416c, 0x96a3, 0xe4ab, 0x61da, 0x96b6, 0x78f5, 0xe4af, 0x96bd,
+ 0x53cc, 0x49a1, 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7, 0xe4b8,
+ 0xe4b9, 0xe4ba, 0x9731, 0x8642, 0x9736, 0x4a0f, 0x453d, 0x4585,
+ 0xe4c1, 0x7075, 0x5b41, 0x971b, 0x975c, 0xe4c6, 0x9757, 0x5b4a,
+ 0xe4c9, 0x975f, 0x9425, 0x50d0, 0xe4cd, 0xe4ce, 0x9789, 0x979f,
+ 0x97b1, 0x97be, 0x97c0, 0x97d2, 0x97e0, 0xe4d6, 0x97ee, 0x741c,
+ 0xe4d9, 0x97ff, 0x97f5, 0xe4dc, 0xe4dd, 0x4ad1, 0x9834, 0x9833,
+ 0x984b, 0x9866, 0x3b0e, 0xe4e4, 0x3d51, 0xe4e6, 0xe4e7, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xe4e8, 0x98ca, 0x98b7, 0x98c8, 0x98c7, 0x4aff, 0xe4ee, 0xe4ef,
+ 0x55b0, 0x98e1, 0x98e6, 0x98ec, 0x9378, 0x9939, 0xe4f6, 0x4b72,
+ 0xe4f8, 0xe4f9, 0x99f5, 0x9a0c, 0x9a3b, 0x9a10, 0x9a58, 0xe4ff,
+ 0x36c4, 0xe501, 0xe502, 0x9ae0, 0x9ae2, 0xe505, 0x9af4, 0x4c0e,
+ 0x9b14, 0x9b2d, 0xe50a, 0x5034, 0x9b34, 0xe50d, 0x38c3, 0xe50f,
+ 0x9b50, 0x9b40, 0xe512, 0x5a45, 0xe514, 0x9b8e, 0xe516, 0x9c02,
+ 0x9bff, 0x9c0c, 0xe51a, 0x9dd4, 0xe51c, 0xe51d, 0xe51e, 0xe51f,
+ 0xe520, 0xe521, 0x9d7e, 0x9d83, 0xe524, 0x9e0e, 0x6888, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9dc4, 0xe528, 0xe529, 0xe52a, 0xe52b, 0xe52c, 0x9d39,
+ 0xe52e, 0xe52f, 0x9e90, 0x9e95, 0x9e9e, 0x9ea2, 0x4d34, 0x9eaa,
+ 0x9eaf, 0xe537, 0x9ec1, 0x3b60, 0x39e5, 0x3d1d, 0x4f32, 0x37be,
+ 0xe53e, 0x9f02, 0x9f08, 0x4b96, 0x9424, 0xe543, 0x9f17, 0x9f16,
+ 0x9f39, 0x569f, 0x568a, 0x9f45, 0x99b8, 0xe54b, 0x97f2, 0x847f,
+ 0x9f62, 0x9f69, 0x7adc, 0x9f8e, 0x7216, 0x4bbe, 0xe554, 0xe555,
+ 0x7177, 0xe557, 0xe558, 0xe559, 0x739e, 0xe55b, 0xe55c, 0x799f,
+ 0xe55e, 0xe55f, 0x9369, 0x93f3, 0xe562, 0x92ec, 0x9381, 0x93cb,
+ 0xe566, 0xe567, 0x7217, 0x3eeb, 0x7772, 0x7a43, 0x70d0, 0xe56d,
+ 0xe56e, 0x717e, 0xe570, 0x70a3, 0xe572, 0xe573, 0x3ec7, 0xe575,
+ 0xe576, 0xe577, 0x3722, 0xe579, 0xe57a, 0x36e1, 0xe57c, 0xe57d,
+ 0xe57e, 0x3723, 0xe580, 0x575b, 0xe582, 0xe583, 0xe584, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xe585, 0xe586, 0x8503, 0xe588, 0x8503, 0x8455, 0xe58b, 0xe58c,
+ 0xe58d, 0xe58e, 0xe58f, 0xe590, 0x44f4, 0xe592, 0xe593, 0xe594,
+ 0x67f9, 0x3733, 0x3c15, 0x3de7, 0x586c, 0xe59a, 0x6810, 0x4057,
+ 0xe59d, 0xe59e, 0xe59f, 0xe5a0, 0xe5a1, 0x54cb, 0x569e, 0xe5a4,
+ 0x5692, 0xe5a6, 0xe5a7, 0xe5a8, 0x93c6, 0xe5aa, 0x939c, 0x4ef8,
+ 0x512b, 0x3819, 0xe5af, 0x4ebc, 0xe5b1, 0xe5b2, 0x4f4b, 0x4f8a,
+ 0xe5b5, 0x5a68, 0xe5b7, 0xe5b8, 0x3999, 0xe5ba, 0xe5bb, 0x3435,
+ 0x4f29, 0xe5be, 0xe5bf, 0xe5c0, 0x8ada, 0xe5c2, 0x4e98, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x50cd, 0x510d, 0x4fa2, 0x4f03, 0xe5c8, 0xe5c9, 0x4f42,
+ 0x502e, 0x506c, 0x5081, 0x4fcc, 0x4fe5, 0x5058, 0x50fc, 0x5159,
+ 0x515b, 0x515d, 0x515e, 0x6e76, 0xe5d7, 0xe5d8, 0xe5d9, 0x6d72,
+ 0xe5db, 0xe5dc, 0x51a8, 0x51c3, 0xe5df, 0x44dd, 0xe5e1, 0xe5e2,
+ 0xe5e3, 0x8d7a, 0xe5e5, 0xe5e6, 0x5259, 0x52a4, 0xe5e9, 0x52e1,
+ 0x936e, 0x467a, 0x718c, 0xe5ee, 0xe5ef, 0xe5f0, 0xe5f1, 0x69d1,
+ 0xe5f3, 0x7479, 0x3ede, 0x7499, 0x7414, 0x7456, 0x7398, 0x4b8e,
+ 0xe5fb, 0xe5fc, 0x53d0, 0x3584, 0x720f, 0xe600, 0x55b4, 0xe602,
+ 0x54cd, 0xe604, 0x571d, 0x925d, 0x96f4, 0x9366, 0x57dd, 0x578d,
+ 0x577f, 0x363e, 0x58cb, 0x5a99, 0xe60f, 0xe610, 0xe611, 0xe612,
+ 0x5a2c, 0x59b8, 0x928f, 0x5a7e, 0x5acf, 0x5a12, 0xe619, 0xe61a,
+ 0xe61b, 0xe61c, 0x36f5, 0x6d05, 0x7443, 0x5a21, 0xe621, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5a81, 0xe623, 0xe624, 0x93e0, 0x748c, 0xe627, 0x7105, 0x4972,
+ 0x9408, 0xe62b, 0x93bd, 0x37a0, 0x5c1e, 0x5c9e, 0x5e5e, 0x5e48,
+ 0xe632, 0xe633, 0xe634, 0x5ecd, 0x5b4f, 0xe637, 0xe638, 0x3701,
+ 0xe63a, 0x36dd, 0xe63c, 0x36d3, 0x812a, 0xe63f, 0xe640, 0xe641,
+ 0xe642, 0x5f0c, 0x5f0e, 0xe645, 0xe646, 0x5a6b, 0xe648, 0x5b44,
+ 0x8614, 0xe64b, 0x8860, 0x607e, 0xe64e, 0xe64f, 0x5fdb, 0x3eb8,
+ 0xe652, 0xe653, 0xe654, 0xe655, 0x61c0, 0xe657, 0xe658, 0xe659,
+ 0x6199, 0x6198, 0x6075, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6471, 0xe662, 0xe663, 0x3a29, 0xe665, 0xe666, 0xe667,
+ 0xe668, 0x6337, 0xe66a, 0x64b6, 0x6331, 0x63d1, 0xe66e, 0xe66f,
+ 0x62a4, 0xe671, 0x643b, 0x656b, 0x6972, 0x3bf4, 0xe676, 0xe677,
+ 0xe678, 0xe679, 0x550d, 0xe67b, 0xe67c, 0xe67d, 0x66ce, 0xe67f,
+ 0xe680, 0x3ae0, 0x4190, 0xe683, 0xe684, 0xe685, 0xe686, 0xe687,
+ 0xe688, 0x78ee, 0xe68a, 0xe68b, 0xe68c, 0x3464, 0xe68e, 0xe68f,
+ 0xe690, 0x668e, 0xe692, 0x666b, 0x4b93, 0x6630, 0xe696, 0xe697,
+ 0x6663, 0xe699, 0xe69a, 0x661e, 0xe69c, 0x38d1, 0xe69e, 0xe69f,
+ 0x3b99, 0xe6a1, 0xe6a2, 0x74d0, 0x3b96, 0x678f, 0xe6a6, 0x68b6,
+ 0x681e, 0x3bc4, 0x6abe, 0x3863, 0xe6ac, 0xe6ad, 0x6a33, 0x6a52,
+ 0x6ac9, 0x6b05, 0xe6b2, 0x6511, 0x6898, 0x6a4c, 0x3bd7, 0x6a7a,
+ 0x6b57, 0xe6b9, 0xe6ba, 0x93a0, 0x92f2, 0xe6bd, 0xe6be, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x9289, 0xe6c0, 0xe6c1, 0x9467, 0x6da5, 0x6f0b, 0xe6c5, 0x6d67,
+ 0xe6c7, 0x3d8f, 0x6e04, 0xe6ca, 0x5a3d, 0x6e0a, 0x5847, 0x6d24,
+ 0x7842, 0x713b, 0xe6d1, 0xe6d2, 0x70f1, 0x7250, 0x7287, 0x7294,
+ 0xe6d7, 0xe6d8, 0x5179, 0xe6da, 0xe6db, 0x747a, 0xe6dd, 0xe6de,
+ 0xe6df, 0xe6e0, 0xe6e1, 0x3f06, 0x3eb1, 0xe6e4, 0xe6e5, 0xe6e6,
+ 0x60a7, 0x3ef3, 0x74cc, 0x743c, 0x9387, 0x7437, 0x449f, 0xe6ee,
+ 0x4551, 0x7583, 0x3f63, 0xe6f2, 0xe6f3, 0x3f58, 0x7555, 0x7673,
+ 0xe6f7, 0x3b19, 0x7468, 0xe6fa, 0xe6fb, 0xe6fc, 0x3afb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3dcd, 0xe6ff, 0x3eff, 0xe701, 0xe702, 0x91fa, 0x5732,
+ 0x9342, 0xe706, 0xe707, 0x50df, 0xe709, 0xe70a, 0x7778, 0xe70c,
+ 0x770e, 0x770f, 0x777b, 0xe710, 0xe711, 0x3a5e, 0xe713, 0x7438,
+ 0x749b, 0x3ebf, 0xe717, 0xe718, 0x40c8, 0xe71a, 0xe71b, 0x9307,
+ 0xe71d, 0x781e, 0x788d, 0x7888, 0x78d2, 0x73d0, 0x7959, 0xe724,
+ 0xe725, 0x410e, 0x799b, 0x8496, 0x79a5, 0x6a2d, 0xe72b, 0x7a3a,
+ 0x79f4, 0x416e, 0xe72f, 0x4132, 0x9235, 0x79f1, 0xe733, 0xe734,
+ 0xe735, 0xe736, 0xe737, 0x3597, 0x556b, 0x3570, 0x36aa, 0xe73c,
+ 0xe73d, 0x7ae2, 0x5a59, 0xe740, 0xe741, 0xe742, 0x5a0d, 0xe744,
+ 0x78f0, 0x5a2a, 0xe747, 0x7afe, 0x41f9, 0x7c5d, 0x7c6d, 0x4211,
+ 0xe74d, 0xe74e, 0xe74f, 0x7ccd, 0xe751, 0xe752, 0x7c8e, 0x7c7c,
+ 0x7cae, 0x6ab2, 0x7ddc, 0x7e07, 0x7dd3, 0x7f4e, 0xe75b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xe75c, 0xe75d, 0x7d97, 0xe75f, 0x426a, 0xe761, 0xe762, 0x67d6,
+ 0xe764, 0xe765, 0x57c4, 0xe767, 0xe768, 0xe769, 0x7fdd, 0x7b27,
+ 0xe76c, 0xe76d, 0xe76e, 0x7b0c, 0xe770, 0x99e6, 0x8645, 0x9a63,
+ 0x6a1c, 0xe775, 0x39e2, 0xe777, 0xe778, 0x9a1f, 0xe77a, 0x8480,
+ 0xe77c, 0xe77d, 0x44ea, 0x8137, 0x4402, 0x80c6, 0x8109, 0x8142,
+ 0xe784, 0x98c3, 0xe786, 0x8262, 0x8265, 0xe789, 0x8453, 0xe78b,
+ 0x8610, 0xe78d, 0x5a86, 0x417f, 0xe790, 0x5b2b, 0xe792, 0x5ae4,
+ 0xe794, 0x86a0, 0xe796, 0xe797, 0x882d, 0xe799, 0x5a02, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x886e, 0x4f45, 0x8887, 0x88bf, 0x88e6, 0x8965, 0x894d,
+ 0xe7a2, 0x8954, 0xe7a4, 0xe7a5, 0xe7a6, 0xe7a7, 0xe7a8, 0xe7a9,
+ 0x3ead, 0x84a3, 0x46f5, 0x46cf, 0x37f2, 0x8a3d, 0x8a1c, 0xe7b1,
+ 0x5f4d, 0x922b, 0xe7b4, 0x65d4, 0x7129, 0x70c4, 0xe7b8, 0x9d6d,
+ 0x8c9f, 0x8ce9, 0xe7bc, 0x599a, 0x77c3, 0x59f0, 0x436e, 0x36d4,
+ 0x8e2a, 0x8ea7, 0xe7c4, 0x8f30, 0x8f4a, 0x42f4, 0x6c58, 0x6fbb,
+ 0xe7ca, 0x489b, 0x6f79, 0x6e8b, 0xe7ce, 0x9be9, 0x36b5, 0xe7d1,
+ 0x90bb, 0x9097, 0x5571, 0x4906, 0x91bb, 0x9404, 0xe7d8, 0x4062,
+ 0xe7da, 0x9427, 0xe7dc, 0xe7dd, 0x84e5, 0x8a2b, 0x9599, 0x95a7,
+ 0x9597, 0x9596, 0xe7e4, 0x7445, 0x3ec2, 0xe7e7, 0xe7e8, 0xe7e9,
+ 0x3ee7, 0xe7eb, 0x968f, 0xe7ed, 0xe7ee, 0xe7ef, 0x3ecc, 0xe7f1,
+ 0xe7f2, 0xe7f3, 0x7412, 0x746b, 0x3efc, 0x9741, 0xe7f8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6847, 0x4a1d, 0xe7fb, 0xe7fc, 0x975d, 0x9368, 0xe7ff, 0xe800,
+ 0xe801, 0xe802, 0x92ba, 0x5b11, 0x8b69, 0x493c, 0x73f9, 0xe808,
+ 0x979b, 0x9771, 0x9938, 0xe80c, 0x5dc1, 0xe80e, 0xe80f, 0x981f,
+ 0xe811, 0x92f6, 0xe813, 0x91e5, 0x44c0, 0xe816, 0xe817, 0xe818,
+ 0x98dc, 0xe81a, 0x3f00, 0x922a, 0x4925, 0x8414, 0x993b, 0x994d,
+ 0xe821, 0x3dfd, 0x999b, 0x4b6f, 0x99aa, 0x9a5c, 0xe827, 0xe828,
+ 0x6a8f, 0x9a21, 0x5afe, 0x9a2f, 0xe82d, 0x4b90, 0xe82f, 0x99bc,
+ 0x4bbd, 0x4b97, 0x937d, 0x5872, 0xe835, 0x5822, 0xe837, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe838, 0x7844, 0xe83a, 0xe83b, 0x68c5, 0x3d7d, 0x9458,
+ 0x3927, 0x6150, 0xe841, 0xe842, 0x6107, 0x9c4f, 0x9c53, 0x9c7b,
+ 0x9c35, 0x9c10, 0x9b7f, 0x9bcf, 0xe84b, 0x9b9f, 0xe84d, 0xe84e,
+ 0x9d21, 0x4cae, 0xe851, 0x9e18, 0x4cb0, 0x9d0c, 0xe855, 0xe856,
+ 0xe857, 0xe858, 0x9da5, 0x84bd, 0xe85b, 0xe85c, 0xe85d, 0x85fc,
+ 0x4533, 0xe860, 0xe861, 0xe862, 0x8420, 0x85ee, 0xe865, 0xe866,
+ 0xe867, 0x79e2, 0xe869, 0xe86a, 0x492d, 0xe86c, 0x3d62, 0x93db,
+ 0x92be, 0x9348, 0xe871, 0x78b9, 0x9277, 0x944d, 0x4fe4, 0x3440,
+ 0x9064, 0xe878, 0x783d, 0x7854, 0x78b6, 0x784b, 0xe87d, 0xe87e,
+ 0xe87f, 0x369a, 0x4f72, 0x6fda, 0x6fd9, 0x701e, 0x701e, 0x5414,
+ 0xe887, 0x57bb, 0x58f3, 0x578a, 0x9d16, 0x57d7, 0x7134, 0x34af,
+ 0xe88f, 0x71eb, 0xe891, 0xe892, 0x5b28, 0xe894, 0xe895, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x610c, 0x5ace, 0x5a0b, 0x42bc, 0xe89a, 0x372c, 0x4b7b, 0xe89d,
+ 0x93bb, 0x93b8, 0xe8a0, 0xe8a1, 0x8472, 0xe8a3, 0xe8a4, 0xe8a5,
+ 0xe8a6, 0xe8a7, 0x5994, 0xe8a9, 0xe8aa, 0x7da8, 0xe8ac, 0xe8ad,
+ 0xe8ae, 0xe8af, 0xe8b0, 0x92e5, 0x73e2, 0x3ee9, 0x74b4, 0xe8b5,
+ 0xe8b6, 0x3ee1, 0xe8b8, 0x6ad8, 0x73f3, 0x73fb, 0x3ed6, 0xe8bd,
+ 0xe8be, 0xe8bf, 0xe8c0, 0xe8c1, 0xe8c2, 0xe8c3, 0x7448, 0xe8c5,
+ 0x70a5, 0xe8c7, 0x9284, 0x73e6, 0x935f, 0xe8cb, 0x9331, 0xe8cd,
+ 0xe8ce, 0x9386, 0xe8d0, 0xe8d1, 0x4935, 0xe8d3, 0x716b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe8d5, 0xe8d6, 0x56a4, 0xe8d8, 0xe8d9, 0xe8da, 0x5502,
+ 0x79c4, 0xe8dd, 0x7dfe, 0xe8df, 0xe8e0, 0xe8e1, 0x452e, 0x9401,
+ 0x370a, 0xe8e5, 0xe8e6, 0x59b0, 0xe8e8, 0xe8e9, 0xe8ea, 0x5aa1,
+ 0x36e2, 0xe8ed, 0x36b0, 0x925f, 0x5a79, 0xe8f1, 0xe8f2, 0x9374,
+ 0x3ccd, 0xe8f5, 0x4a96, 0x398a, 0x50f4, 0x3d69, 0x3d4c, 0xe8fb,
+ 0x7175, 0x42fb, 0xe8fe, 0x6e0f, 0xe900, 0x44eb, 0x6d57, 0xe903,
+ 0x7067, 0x6caf, 0x3cd6, 0xe907, 0xe908, 0x6e02, 0x6f0c, 0x3d6f,
+ 0xe90c, 0x7551, 0x36bc, 0x34c8, 0x4680, 0x3eda, 0x4871, 0x59c4,
+ 0x926e, 0x493e, 0x8f41, 0xe917, 0xe918, 0x5812, 0x57c8, 0x36d6,
+ 0xe91c, 0x70fe, 0xe91e, 0xe91f, 0xe920, 0xe921, 0xe922, 0x68b9,
+ 0x6967, 0xe925, 0xe926, 0xe927, 0xe928, 0xe929, 0xe92a, 0xe92b,
+ 0xe92c, 0x6a1a, 0xe92e, 0xe92f, 0x843e, 0x44df, 0x44ce, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xe933, 0xe934, 0xe935, 0xe936, 0x6f17, 0xe938, 0x833d, 0xe93a,
+ 0x83ed, 0xe93c, 0xe93d, 0xe93e, 0x5989, 0x5a82, 0xe941, 0x5a61,
+ 0x5a71, 0xe944, 0xe945, 0x372d, 0x59ef, 0xe948, 0x36c7, 0x718e,
+ 0x9390, 0x669a, 0xe94d, 0x5a6e, 0x5a2b, 0xe950, 0x6a2b, 0xe952,
+ 0xe953, 0xe954, 0xe955, 0x711d, 0xe957, 0xe958, 0x4fb0, 0xe95a,
+ 0x5cc2, 0xe95c, 0xe95d, 0xe95e, 0x6a0c, 0xe960, 0xe961, 0x70a6,
+ 0x7133, 0xe964, 0x3da5, 0x6cdf, 0xe967, 0xe968, 0x7e65, 0x59eb,
+ 0x5d2f, 0x3df3, 0x5f5c, 0xe96e, 0xe96f, 0x7da4, 0x8426, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5485, 0xe973, 0xe974, 0xe975, 0x577e, 0xe977, 0xe978,
+ 0x3fe5, 0xe97a, 0xe97b, 0x7003, 0xe97d, 0x5d70, 0x738f, 0x7cd3,
+ 0xe981, 0xe982, 0x4fc8, 0x7fe7, 0x72cd, 0x7310, 0xe987, 0x7338,
+ 0x7339, 0xe98a, 0x7341, 0x7348, 0x3ea9, 0xe98e, 0x906c, 0x71f5,
+ 0xe991, 0x73e1, 0x81f6, 0x3eca, 0x770c, 0x3ed1, 0x6ca2, 0x56fd,
+ 0x7419, 0x741e, 0x741f, 0x3ee2, 0x3ef0, 0x3ef4, 0x3efa, 0x74d3,
+ 0x3f0e, 0x3f53, 0x7542, 0x756d, 0x7572, 0x758d, 0x3f7c, 0x75c8,
+ 0x75dc, 0x3fc0, 0x764d, 0x3fd7, 0x7674, 0x3fdc, 0x767a, 0xe9b0,
+ 0x7188, 0x5623, 0x8980, 0x5869, 0x401d, 0x7743, 0x4039, 0x6761,
+ 0x4045, 0x35db, 0x7798, 0x406a, 0x406f, 0x5c5e, 0x77be, 0x77cb,
+ 0x58f2, 0x7818, 0x70b9, 0x781c, 0x40a8, 0x7839, 0x7847, 0x7851,
+ 0x7866, 0x8448, 0xe9cb, 0x7933, 0x6803, 0x7932, 0x4103, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4109, 0x7991, 0x7999, 0x8fbb, 0x7a06, 0x8fbc, 0x4167, 0x7a91,
+ 0x41b2, 0x7abc, 0x8279, 0x41c4, 0x7acf, 0x7adb, 0x41cf, 0x4e21,
+ 0x7b62, 0x7b6c, 0x7b7b, 0x7c12, 0x7c1b, 0x4260, 0x427a, 0x7c7b,
+ 0x7c9c, 0x428c, 0x7cb8, 0x4294, 0x7ced, 0x8f93, 0x70c0, 0xe9ef,
+ 0x7dcf, 0x7dd4, 0x7dd0, 0x7dfd, 0x7fae, 0x7fb4, 0x729f, 0x4397,
+ 0x8020, 0x8025, 0x7b39, 0x802e, 0x8031, 0x8054, 0x3dcc, 0x57b4,
+ 0x70a0, 0x80b7, 0x80e9, 0x43ed, 0x810c, 0x732a, 0x810e, 0x8112,
+ 0x7560, 0x8114, 0x4401, 0x3b39, 0x8156, 0x8159, 0x815a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4413, 0x583a, 0x817c, 0x8184, 0x4425, 0x8193, 0x442d,
+ 0x81a5, 0x57ef, 0x81c1, 0x81e4, 0x8254, 0x448f, 0x82a6, 0x8276,
+ 0x82ca, 0x82d8, 0x82ff, 0x44b0, 0x8357, 0x9669, 0x698a, 0x8405,
+ 0x70f5, 0x8464, 0x60e3, 0x8488, 0x4504, 0x84be, 0x84e1, 0x84f8,
+ 0x8510, 0x8538, 0x8552, 0x453b, 0x856f, 0x8570, 0x85e0, 0x4577,
+ 0x8672, 0x8692, 0x86b2, 0x86ef, 0x9645, 0x878b, 0x4606, 0x4617,
+ 0x88ae, 0x88ff, 0x8924, 0x8947, 0x8991, 0xea43, 0x8a29, 0x8a38,
+ 0x8a94, 0x8ab4, 0x8c51, 0x8cd4, 0x8cf2, 0x8d1c, 0x4798, 0x585f,
+ 0x8dc3, 0x47ed, 0x4eee, 0x8e3a, 0x55d8, 0x5754, 0x8e71, 0x55f5,
+ 0x8eb0, 0x4837, 0x8ece, 0x8ee2, 0x8ee4, 0x8eed, 0x8ef2, 0x8fb7,
+ 0x8fc1, 0x8fca, 0x8fcc, 0x9033, 0x99c4, 0x48ad, 0x98e0, 0x9213,
+ 0x491e, 0x9228, 0x9258, 0x926b, 0x92b1, 0x92ae, 0x92bf, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x92e3, 0x92eb, 0x92f3, 0x92f4, 0x92fd, 0x9343, 0x9384, 0x93ad,
+ 0x4945, 0x4951, 0x9ebf, 0x9417, 0x5301, 0x941d, 0x942d, 0x943e,
+ 0x496a, 0x9454, 0x9479, 0x952d, 0x95a2, 0x49a7, 0x95f4, 0x9633,
+ 0x49e5, 0x67a0, 0x4a24, 0x9740, 0x4a35, 0x97b2, 0x97c2, 0x5654,
+ 0x4ae4, 0x60e8, 0x98b9, 0x4b19, 0x98f1, 0x5844, 0x990e, 0x9919,
+ 0x51b4, 0x991c, 0x9937, 0x9942, 0x995d, 0x9962, 0x4b70, 0x99c5,
+ 0x4b9d, 0x9a3c, 0x9b0f, 0x7a83, 0x9b69, 0x9b81, 0x9bdd, 0x9bf1,
+ 0x9bf4, 0x4c6d, 0x9c20, 0x376f, 0xeaa9, 0x9d49, 0x9c3a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9efe, 0x5650, 0x9d93, 0x9dbd, 0x9dc0, 0x9dfc, 0x94f6,
+ 0x8fb6, 0x9e7b, 0x9eac, 0x9eb1, 0x9ebd, 0x9ec6, 0x94dc, 0x9ee2,
+ 0x9ef1, 0x9ef8, 0x7ac8, 0x9f44, 0xeabf, 0xeac0, 0xeac1, 0x691a,
+ 0x94c3, 0x59ac, 0xeac5, 0x5840, 0x94c1, 0x37b9, 0xeac9, 0xeaca,
+ 0xeacb, 0xeacc, 0x5757, 0x7173, 0xeacf, 0xead0, 0xead1, 0x546a,
+ 0xead3, 0xead4, 0x549e, 0xead6, 0xead7, 0xead8, 0xead9, 0xeada,
+ 0x60e7, 0xeadc, 0x567a, 0xeade, 0xeadf, 0xeae0, 0xeae1, 0xeae2,
+ 0xeae3, 0x6955, 0x9c2f, 0x87a5, 0xeae7, 0xeae8, 0xeae9, 0xeaea,
+ 0xeaeb, 0xeaec, 0x5c20, 0xeaee, 0x5e0b, 0xeaf0, 0xeaf1, 0xeaf2,
+ 0x671e, 0xeaf4, 0xeaf5, 0xeaf6, 0x3647, 0xeaf8, 0xeaf9, 0xeafa,
+ 0xeafb, 0x5364, 0x84ad, 0xeafe, 0xeaff, 0xeb00, 0x8b81, 0xeb02,
+ 0xeb03, 0xeb04, 0xeb05, 0x4e78, 0x70bb, 0xeb08, 0xeb09, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xeb0a, 0xeb0b, 0xeb0c, 0xeb0d, 0xeb0e, 0xeb0f, 0x62c3, 0xeb11,
+ 0xeb12, 0x7198, 0x6855, 0xeb15, 0x69e9, 0x36c8, 0xeb18, 0xeb19,
+ 0xeb1a, 0xeb1b, 0xeb1c, 0xeb1d, 0x82fd, 0xeb1f, 0xeb20, 0xeb21,
+ 0x89a5, 0xeb23, 0x8fa0, 0xeb25, 0x97b8, 0xeb27, 0x9847, 0x9abd,
+ 0xeb2a, 0xeb2b, 0xeb2c, 0xeb2d, 0xeb2e, 0xeb2f, 0xeb30, 0xeb31,
+ 0xeb32, 0xeb33, 0xeb34, 0xeb35, 0xeb36, 0xeb37, 0xeb38, 0xeb39,
+ 0x5fb1, 0x6648, 0x66bf, 0xeb3d, 0xeb3e, 0xeb3f, 0x7201, 0xeb41,
+ 0x77d7, 0xeb43, 0xeb44, 0x7e87, 0xeb46, 0x58b5, 0x670e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6918, 0xeb4a, 0xeb4b, 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f,
+ 0xeb50, 0x48d0, 0x4ab8, 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57,
+ 0xeb58, 0xeb59, 0xeb5a, 0xeb5b, 0x51d2, 0xeb5d, 0x599f, 0xeb5f,
+ 0x3bbe, 0xeb61, 0xeb62, 0xeb63, 0x5788, 0xeb65, 0x399b, 0xeb67,
+ 0xeb68, 0xeb69, 0x3762, 0xeb6b, 0x8b5e, 0xeb6d, 0x99d6, 0xeb6f,
+ 0xeb70, 0xeb71, 0x7209, 0xeb73, 0xeb74, 0x5965, 0xeb76, 0xeb77,
+ 0xeb78, 0x8eda, 0xeb7a, 0x528f, 0x573f, 0x7171, 0xeb7e, 0xeb7f,
+ 0xeb80, 0xeb81, 0x55bc, 0xeb83, 0xeb84, 0xeb85, 0x91d4, 0x3473,
+ 0xeb88, 0xeb89, 0xeb8a, 0x4718, 0xeb8c, 0xeb8d, 0xeb8e, 0xeb8f,
+ 0xeb90, 0x5066, 0x34fb, 0xeb93, 0x60de, 0xeb95, 0x477c, 0xeb97,
+ 0xeb98, 0xeb99, 0xeb9a, 0xeb9b, 0x57a1, 0x7151, 0x6fb6, 0xeb9f,
+ 0xeba0, 0x9056, 0xeba2, 0xeba3, 0x8b62, 0xeba5, 0xeba6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5d5b, 0xeba8, 0x8f36, 0xebaa, 0xebab, 0x8aea, 0xebad, 0xebae,
+ 0xebaf, 0xebb0, 0x4bc0, 0xebb2, 0xebb3, 0xebb4, 0x9465, 0xebb6,
+ 0x6195, 0x5a27, 0xebb9, 0x4fbb, 0x56b9, 0xebbc, 0xebbd, 0x4e6a,
+ 0xebbf, 0x9656, 0x6d8f, 0xebc2, 0x3618, 0x8977, 0xebc5, 0xebc6,
+ 0xebc7, 0xebc8, 0x71df, 0xebca, 0x7b42, 0xebcc, 0xebcd, 0xebce,
+ 0x9104, 0xebd0, 0x7a45, 0x9df0, 0xebd3, 0x9a26, 0xebd5, 0x365f,
+ 0xebd7, 0xebd8, 0x7983, 0xebda, 0xebdb, 0x5d2c, 0xebdd, 0x83cf,
+ 0xebdf, 0x46d0, 0xebe1, 0x753b, 0x8865, 0xebe4, 0x58b6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x371c, 0xebe7, 0xebe8, 0xebe9, 0x3c54, 0xebeb, 0xebec,
+ 0x9281, 0xebee, 0xebef, 0x9330, 0xebf1, 0xebf2, 0x6c39, 0x949f,
+ 0xebf5, 0xebf6, 0x8827, 0x88f5, 0xebf9, 0xebfa, 0xebfb, 0x6eb8,
+ 0xebfd, 0xebfe, 0x39a4, 0x36b9, 0x5c10, 0x79e3, 0x453f, 0x66b6,
+ 0xec05, 0xec06, 0x8943, 0xec08, 0xec09, 0x56d6, 0x40df, 0xec0c,
+ 0x39a1, 0xec0e, 0xec0f, 0xec10, 0x71ad, 0x8366, 0xec13, 0xec14,
+ 0x5a67, 0x4cb7, 0xec17, 0xec18, 0xec19, 0xec1a, 0xec1b, 0xec1c,
+ 0xec1d, 0x7b43, 0x797e, 0xec20, 0x6fb5, 0xec22, 0x6a03, 0xec24,
+ 0x53a2, 0xec26, 0x93bf, 0x6836, 0x975d, 0xec2a, 0xec2b, 0xec2c,
+ 0xec2d, 0xec2e, 0xec2f, 0x5d85, 0xec31, 0xec32, 0x5715, 0x9823,
+ 0xec35, 0x5dab, 0xec37, 0x65be, 0x69d5, 0x53d2, 0xec3b, 0xec3c,
+ 0x3c11, 0x6736, 0xec3f, 0xec40, 0xec41, 0xec42, 0xec43, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xec44, 0xec45, 0xec46, 0xec47, 0xec48, 0xec49, 0x35ca, 0xec4b,
+ 0xec4c, 0x48fa, 0x63e6, 0xec4f, 0x7808, 0x9255, 0xec52, 0x43f2,
+ 0xec54, 0x43df, 0xec56, 0xec57, 0xec58, 0x59f8, 0xec5a, 0x8f0b,
+ 0xec5c, 0xec5d, 0x7b51, 0xec5f, 0xec60, 0x3df7, 0xec62, 0xec63,
+ 0x8fd0, 0x728f, 0x568b, 0xec67, 0xec68, 0xec69, 0xec6a, 0xec6b,
+ 0xec6c, 0xec6d, 0xec6e, 0xec6f, 0xec70, 0xec71, 0xec72, 0xec73,
+ 0x7e9f, 0xec75, 0xec76, 0x4ca4, 0x9547, 0xec79, 0x71a2, 0xec7b,
+ 0x4d91, 0x9012, 0xec7e, 0x4d9c, 0xec80, 0x8fbe, 0x55c1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8fba, 0xec84, 0x8fb9, 0xec86, 0x4509, 0x7e7f, 0x6f56,
+ 0x6ab1, 0x4eea, 0x34e4, 0xec8d, 0xec8e, 0x373a, 0x8e80, 0xec91,
+ 0xec92, 0xec93, 0xec94, 0xec95, 0xec96, 0x3deb, 0xec98, 0xec99,
+ 0xec9a, 0xec9b, 0x4e9a, 0xec9d, 0xec9e, 0x56bf, 0xeca0, 0x8e0e,
+ 0x5b6d, 0xeca3, 0xeca4, 0x63de, 0x62d0, 0xeca7, 0xeca8, 0x6530,
+ 0x562d, 0xecab, 0x541a, 0xecad, 0x3dc6, 0xecaf, 0x4c7d, 0x5622,
+ 0x561e, 0x7f49, 0xecb4, 0x5975, 0xecb6, 0x8770, 0x4e1c, 0xecb9,
+ 0xecba, 0xecbb, 0x8117, 0x9d5e, 0x8d18, 0x763b, 0x9c45, 0x764e,
+ 0x77b9, 0x9345, 0x5432, 0x8148, 0x82f7, 0x5625, 0x8132, 0x8418,
+ 0x80bd, 0x55ea, 0x7962, 0x5643, 0x5416, 0xeccf, 0x35ce, 0x5605,
+ 0x55f1, 0x66f1, 0xecd4, 0x362d, 0x7534, 0x55f0, 0x55ba, 0x5497,
+ 0x5572, 0xecdb, 0xecdc, 0x5ed0, 0xecde, 0xecdf, 0xece0, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xece1, 0x9eab, 0x7d5a, 0x55de, 0xece5, 0x629d, 0x976d, 0x5494,
+ 0x8ccd, 0x71f6, 0x9176, 0x63fc, 0x63b9, 0x63fe, 0x5569, 0xecf0,
+ 0x9c72, 0xecf2, 0x519a, 0x34df, 0xecf5, 0x51a7, 0x544d, 0x551e,
+ 0x5513, 0x7666, 0x8e2d, 0xecfc, 0x75b1, 0x80b6, 0x8804, 0x8786,
+ 0x88c7, 0x81b6, 0x841c, 0xed04, 0x44ec, 0x7304, 0xed07, 0x5b90,
+ 0x830b, 0xed0a, 0x567b, 0xed0c, 0xed0d, 0xed0e, 0xed0f, 0xed10,
+ 0xed11, 0x9170, 0xed13, 0x9208, 0xed15, 0xed16, 0xed17, 0xed18,
+ 0x7266, 0xed1a, 0x474e, 0xed1c, 0xed1d, 0xed1e, 0x40fa, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9c5d, 0x651f, 0xed22, 0x48f3, 0xed24, 0xed25, 0xed26,
+ 0xed27, 0x6062, 0xed29, 0xed2a, 0xed2b, 0xed2c, 0xed2d, 0x71a3,
+ 0x7e8e, 0x9d50, 0x4e1a, 0x4e04, 0x3577, 0x5b0d, 0x6cb2, 0x5367,
+ 0x36ac, 0x39dc, 0x537d, 0x36a5, 0xed3b, 0x589a, 0xed3d, 0x822d,
+ 0x544b, 0x57aa, 0xed41, 0xed42, 0xed43, 0x3a52, 0xed45, 0x7374,
+ 0xed47, 0x4d09, 0x9bed, 0xed4a, 0xed4b, 0x4c5b, 0xed4d, 0xed4e,
+ 0xed4f, 0x845c, 0xed51, 0xed52, 0xed53, 0xed54, 0x632e, 0x7d25,
+ 0xed57, 0xed58, 0x3a2a, 0x9008, 0x52cc, 0x3e74, 0x367a, 0x45e9,
+ 0xed5f, 0x7640, 0x5af0, 0xed62, 0x787a, 0x47b6, 0x58a7, 0x40bf,
+ 0x567c, 0x9b8b, 0x5d74, 0x7654, 0xed6b, 0x9e85, 0x4ce1, 0x75f9,
+ 0x37fb, 0x6119, 0xed71, 0xed72, 0xed73, 0x565d, 0xed75, 0x57a7,
+ 0xed77, 0xed78, 0x5234, 0xed7a, 0x35ad, 0x6c4a, 0x9d7c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7c56, 0x9b39, 0x57de, 0xed81, 0x5c53, 0x64d3, 0xed84, 0xed85,
+ 0xed86, 0x86ad, 0xed88, 0xed89, 0xed8a, 0xed8b, 0xed8c, 0x51fe,
+ 0xed8e, 0x5d8e, 0x9703, 0xed91, 0x9e81, 0x904c, 0x7b1f, 0x9b02,
+ 0x5cd1, 0x7ba3, 0x6268, 0x6335, 0x9aff, 0x7bcf, 0x9b2a, 0x7c7e,
+ 0x9b2e, 0x7c42, 0x7c86, 0x9c15, 0x7bfc, 0x9b09, 0x9f17, 0x9c1b,
+ 0xeda6, 0x9f5a, 0x5573, 0x5bc3, 0x4ffd, 0x9e98, 0x4ff2, 0x5260,
+ 0x3e06, 0x52d1, 0x5767, 0x5056, 0x59b7, 0x5e12, 0x97c8, 0x9dab,
+ 0x8f5c, 0x5469, 0x97b4, 0x9940, 0x97ba, 0x532c, 0x6130, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x692c, 0x53da, 0x9c0a, 0x9d02, 0x4c3b, 0x9641, 0x6980,
+ 0x50a6, 0x7546, 0xedc6, 0x99da, 0x5273, 0xedc9, 0x9159, 0x9681,
+ 0x915c, 0xedcd, 0x9151, 0xedcf, 0x637f, 0xedd1, 0x6aca, 0x5611,
+ 0x918e, 0x757a, 0x6285, 0xedd7, 0x734f, 0x7c70, 0xedda, 0xeddb,
+ 0xeddc, 0xeddd, 0x76d6, 0x9b9d, 0x4e2a, 0xede1, 0x83be, 0x8842,
+ 0xede4, 0x5c4a, 0x69c0, 0x50ed, 0x577a, 0x521f, 0x5df5, 0x4ece,
+ 0x6c31, 0xeded, 0x4f39, 0x549c, 0x54da, 0x529a, 0x8d82, 0x35fe,
+ 0x5f0c, 0x35f3, 0xedf6, 0x6b52, 0x917c, 0x9fa5, 0x9b97, 0x982e,
+ 0x98b4, 0x9aba, 0x9ea8, 0x9e84, 0x717a, 0x7b14, 0xee02, 0x6bfa,
+ 0x8818, 0x7f78, 0xee06, 0x5620, 0xee08, 0x8e77, 0x9f53, 0xee0b,
+ 0x8dd4, 0x8e4f, 0x9e1c, 0x8e01, 0x6282, 0xee11, 0x8e28, 0x8e75,
+ 0x7ad3, 0xee15, 0x7a3e, 0x78d8, 0x6cea, 0x8a67, 0x7607, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xee1b, 0x9f26, 0x6cce, 0x87d6, 0x75c3, 0xee20, 0x7853, 0xee22,
+ 0x8d0c, 0x72e2, 0x7371, 0x8b2d, 0x7302, 0x74f1, 0x8ceb, 0xee2a,
+ 0x862f, 0x5fba, 0x88a0, 0x44b7, 0xee2f, 0xee30, 0xee31, 0xee32,
+ 0x8a7e, 0xee34, 0xee35, 0x60fd, 0x7667, 0x9ad7, 0x9d44, 0x936e,
+ 0x9b8f, 0x87f5, 0xee3d, 0x880f, 0x8cf7, 0x732c, 0x9721, 0x9bb0,
+ 0x35d6, 0x72b2, 0x4c07, 0x7c51, 0x994a, 0xee48, 0x6159, 0x4c04,
+ 0x9e96, 0x617d, 0xee4d, 0x575f, 0x616f, 0x62a6, 0x6239, 0x62ce,
+ 0x3a5c, 0x61e2, 0x53aa, 0xee56, 0x6364, 0x6802, 0x35d2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5d57, 0xee5b, 0x8fda, 0xee5d, 0xee5e, 0x50d9, 0xee60,
+ 0x7906, 0x5332, 0x9638, 0xee64, 0x4065, 0xee66, 0x77fe, 0xee68,
+ 0x7cc2, 0xee6a, 0x7cda, 0x7a2d, 0x8066, 0x8063, 0x7d4d, 0x7505,
+ 0x74f2, 0x8994, 0x821a, 0x670c, 0x8062, 0xee76, 0x805b, 0x74f0,
+ 0x8103, 0x7724, 0x8989, 0xee7c, 0x7553, 0xee7e, 0x87a9, 0x87ce,
+ 0x81c8, 0x878c, 0x8a49, 0x8cad, 0x8b43, 0x772b, 0x74f8, 0x84da,
+ 0x3635, 0x69b2, 0x8da6, 0xee8c, 0x89a9, 0x7468, 0x6db9, 0x87c1,
+ 0xee91, 0x74e7, 0x3ddb, 0x7176, 0x60a4, 0x619c, 0x3cd1, 0x7162,
+ 0x6077, 0xee9a, 0x7f71, 0xee9c, 0x7250, 0x60e9, 0x4b7e, 0x5220,
+ 0x3c18, 0xeea2, 0xeea3, 0xeea4, 0xeea5, 0xeea6, 0xeea7, 0xeea8,
+ 0xeea9, 0xeeaa, 0x5cc1, 0xeeac, 0xeead, 0xeeae, 0xeeaf, 0xeeb0,
+ 0xeeb1, 0x4562, 0x5b1f, 0xeeb4, 0x9f50, 0x9ea6, 0xeeb7, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2027, 0xff1b, 0xff1a,
+ 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xfe51, 0xfe52,
+ 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
+ 0x2014, 0xfe33, 0x2574, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
+ 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
+ 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
+ 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
+ 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x301d, 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a,
+ 0x203b, 0x00a7, 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce,
+ 0x2606, 0x2605, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc,
+ 0x32a3, 0x2105, 0x00af, 0xffe3, 0xff3f, 0x02cd, 0xfe49, 0xfe4a,
+ 0xfe4d, 0xfe4e, 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b,
+ 0xff0d, 0x00d7, 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d,
+ 0x2266, 0x2267, 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63,
+ 0xfe64, 0xfe65, 0xfe66, 0xff5e, 0x2229, 0x222a, 0x22a5, 0x2220,
+ 0x221f, 0x22bf, 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234,
+ 0x2640, 0x2642, 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192,
+ 0x2196, 0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0xff0f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xff3c, 0x2215, 0xfe68, 0xff04, 0xffe5, 0x3012, 0xffe0, 0xffe1,
+ 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
+ 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
+ 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
+ 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
+ 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
+ 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
+ 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x256e, 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561,
+ 0x25e2, 0x25e3, 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166,
+ 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025,
+ 0x3026, 0x3027, 0x3028, 0x3029, 0x5341, 0x5344, 0x5345, 0xff21,
+ 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29,
+ 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31,
+ 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39,
+ 0xff3a, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
+ 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
+ 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
+ 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
+ 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
+ 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
+ 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+ 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
+ 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116,
+ 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e,
+ 0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126,
+ 0x3127, 0x3128, 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
+ 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
+ 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
+ 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
+ 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
+ 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
+ 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
+ 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4e11, 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b,
+ 0x5c39, 0x4e88, 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1,
+ 0x4ec0, 0x4ec3, 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4,
+ 0x5143, 0x5141, 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6,
+ 0x5206, 0x5207, 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339,
+ 0x5348, 0x5347, 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd,
+ 0x58ec, 0x5929, 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24,
+ 0x5c3a, 0x5c6f, 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3,
+ 0x6208, 0x6236, 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4,
+ 0x65b9, 0x65e5, 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79,
+ 0x6bcb, 0x6bd4, 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236,
+ 0x723b, 0x7247, 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
+ 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
+ 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
+ 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317,
+ 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
+ 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
+ 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
+ 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x592e, 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c,
+ 0x5de8, 0x5de7, 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01,
+ 0x5f18, 0x5f17, 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251,
+ 0x65a5, 0x65e6, 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63,
+ 0x6bcd, 0x6c11, 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af,
+ 0x7384, 0x7389, 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529,
+ 0x7530, 0x7531, 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf,
+ 0x76ee, 0x77db, 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb,
+ 0x4e1e, 0x4e1f, 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6,
+ 0x4ea5, 0x4eff, 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10,
+ 0x4f11, 0x4f0f, 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd,
+ 0x4f01, 0x4f0b, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
+ 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
+ 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
+ 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
+ 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
+ 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
+ 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
+ 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f0f, 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d,
+ 0x6210, 0x6263, 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec,
+ 0x65ed, 0x66f2, 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735,
+ 0x6b21, 0x6b64, 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f,
+ 0x6c60, 0x6c50, 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070,
+ 0x725f, 0x725d, 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a,
+ 0x7fbd, 0x8001, 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089,
+ 0x808b, 0x808c, 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b,
+ 0x821f, 0x826e, 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863,
+ 0x897f, 0x9621, 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57,
+ 0x4f5e, 0x4f34, 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d,
+ 0x4f3a, 0x4f38, 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
+ 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
+ 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
+ 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
+ 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
+ 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
+ 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
+ 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5747, 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef,
+ 0x593e, 0x599d, 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996,
+ 0x598d, 0x59a4, 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a,
+ 0x5b5b, 0x5b8c, 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f,
+ 0x5c3e, 0x5c90, 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f,
+ 0x5e87, 0x5e8a, 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77,
+ 0x5f79, 0x5fd8, 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8,
+ 0x5fea, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276,
+ 0x6289, 0x626d, 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292,
+ 0x626f, 0x6298, 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539,
+ 0x653b, 0x6538, 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750,
+ 0x6751, 0x675c, 0x6756, 0x675e, 0x6749, 0x6746, 0x6760, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
+ 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
+ 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
+ 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
+ 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
+ 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
+ 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
+ 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x828b, 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46,
+ 0x8c55, 0x8c9d, 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b,
+ 0x8fb0, 0x8fc2, 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2,
+ 0x90aa, 0x90a6, 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e,
+ 0x9631, 0x962a, 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b,
+ 0x4e9e, 0x4eab, 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f,
+ 0x4f6c, 0x4f9b, 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88,
+ 0x4f69, 0x4f7b, 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154,
+ 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd,
+ 0x523b, 0x5238, 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241,
+ 0x52be, 0x52bb, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377,
+ 0x5378, 0x5379, 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
+ 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
+ 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
+ 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
+ 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
+ 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
+ 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
+ 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5c46, 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1,
+ 0x5cb3, 0x5e18, 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78,
+ 0x5e9a, 0x5e97, 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27,
+ 0x5f29, 0x5f80, 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd,
+ 0x5ff5, 0x5fff, 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a,
+ 0x6015, 0x6021, 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215,
+ 0x623f, 0x623e, 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf,
+ 0x62c2, 0x62b9, 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb,
+ 0x62c8, 0x62a8, 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd,
+ 0x62b5, 0x62da, 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac,
+ 0x62ce, 0x653e, 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c,
+ 0x6606, 0x6602, 0x660e, 0x6600, 0x660f, 0x6615, 0x660a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
+ 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
+ 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
+ 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
+ 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
+ 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
+ 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
+ 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7095, 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d,
+ 0x7238, 0x7248, 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7,
+ 0x72d0, 0x73a9, 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d,
+ 0x7599, 0x759a, 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd,
+ 0x793e, 0x7940, 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa,
+ 0x7cfe, 0x7f54, 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2,
+ 0x80b1, 0x80a1, 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5,
+ 0x81fe, 0x820d, 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f,
+ 0x82b9, 0x82b1, 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0,
+ 0x82be, 0x82b7, 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce,
+ 0x8fd4, 0x8fd1, 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1,
+ 0x9577, 0x9580, 0x961c, 0x9640, 0x963f, 0x963b, 0x9644, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
+ 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
+ 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
+ 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
+ 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
+ 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
+ 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
+ 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x54c4, 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9,
+ 0x54a7, 0x54bf, 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2,
+ 0x57ce, 0x57ae, 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950,
+ 0x59dc, 0x59d8, 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea,
+ 0x59da, 0x59e6, 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4,
+ 0x5ba2, 0x5ba5, 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9,
+ 0x5cd2, 0x5df7, 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6,
+ 0x5efa, 0x5f08, 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b,
+ 0x5f87, 0x5f8c, 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e,
+ 0x6028, 0x604d, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c,
+ 0x606b, 0x606a, 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc,
+ 0x62ed, 0x6301, 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
+ 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
+ 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
+ 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
+ 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
+ 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
+ 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
+ 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6d3b, 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39,
+ 0x6d27, 0x6d38, 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab,
+ 0x70ba, 0x70b3, 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4,
+ 0x7230, 0x7272, 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7,
+ 0x73ca, 0x73bb, 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d,
+ 0x754f, 0x754c, 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2,
+ 0x75a3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3,
+ 0x76c5, 0x7701, 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc,
+ 0x7707, 0x77dc, 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949,
+ 0x7948, 0x7947, 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f,
+ 0x7a81, 0x7aff, 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09,
+ 0x7d07, 0x7d04, 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
+ 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
+ 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
+ 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
+ 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
+ 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
+ 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
+ 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8fed, 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1,
+ 0x90c3, 0x914b, 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c,
+ 0x964d, 0x9762, 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8,
+ 0x98db, 0x98df, 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d,
+ 0x5023, 0x4fef, 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006,
+ 0x503c, 0x501f, 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014,
+ 0x5028, 0x4ff1, 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee,
+ 0x502d, 0x502a, 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5,
+ 0x51a2, 0x51cd, 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254,
+ 0x525b, 0x525d, 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8,
+ 0x5510, 0x5501, 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa,
+ 0x5514, 0x54e9, 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
+ 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
+ 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
+ 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
+ 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
+ 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
+ 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
+ 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6063, 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f,
+ 0x6084, 0x609f, 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096,
+ 0x6247, 0x62f3, 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355,
+ 0x6342, 0x6346, 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a,
+ 0x632b, 0x6328, 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1,
+ 0x65c5, 0x6642, 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645,
+ 0x6641, 0x66f8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848,
+ 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817,
+ 0x684c, 0x6851, 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843,
+ 0x682a, 0x6845, 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7,
+ 0x6c23, 0x6c27, 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95,
+ 0x6d88, 0x6d87, 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
+ 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
+ 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
+ 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
+ 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
+ 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
+ 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
+ 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7825, 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950,
+ 0x7960, 0x795f, 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4,
+ 0x79e3, 0x79e7, 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88,
+ 0x7ad9, 0x7b06, 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a,
+ 0x7d20, 0x7d22, 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d,
+ 0x7d19, 0x7d1b, 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006,
+ 0x8018, 0x8015, 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102,
+ 0x80f0, 0x8105, 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108,
+ 0x80fd, 0x810a, 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210,
+ 0x822a, 0x822b, 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354,
+ 0x834a, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332,
+ 0x8339, 0x8336, 0x8317, 0x8340, 0x8331, 0x8328, 0x8343, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
+ 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
+ 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
+ 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
+ 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
+ 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
+ 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
+ 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x965b, 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2,
+ 0x99ac, 0x9aa8, 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a,
+ 0x507d, 0x505c, 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065,
+ 0x5076, 0x504e, 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f,
+ 0x506f, 0x506d, 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2,
+ 0x52d9, 0x52d8, 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340,
+ 0x533e, 0x53c3, 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e,
+ 0x5561, 0x5543, 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f,
+ 0x5564, 0x5538, 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541,
+ 0x5557, 0x5708, 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806,
+ 0x57e0, 0x57e4, 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920,
+ 0x5962, 0x5a36, 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
+ 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
+ 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
+ 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
+ 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
+ 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
+ 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
+ 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x60c5, 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5,
+ 0x60c6, 0x60df, 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248,
+ 0x63a0, 0x63a7, 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367,
+ 0x6398, 0x63aa, 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b,
+ 0x63a8, 0x6384, 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f,
+ 0x6380, 0x637b, 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551,
+ 0x6559, 0x6557, 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c,
+ 0x659b, 0x65ac, 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a,
+ 0x6664, 0x6668, 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881,
+ 0x68af, 0x68a2, 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7,
+ 0x6897, 0x68b0, 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894,
+ 0x689d, 0x68a8, 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
+ 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
+ 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
+ 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
+ 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
+ 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
+ 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
+ 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x74f7, 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570,
+ 0x758f, 0x75d4, 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4,
+ 0x76d2, 0x76db, 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a,
+ 0x786b, 0x7843, 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92,
+ 0x7a95, 0x7b20, 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e,
+ 0x7b2e, 0x7c92, 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e,
+ 0x7d39, 0x7d3c, 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42,
+ 0x7d32, 0x7d31, 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2,
+ 0x801c, 0x804a, 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129,
+ 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e,
+ 0x839e, 0x8398, 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392,
+ 0x838a, 0x8393, 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
+ 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
+ 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
+ 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
+ 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
+ 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
+ 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
+ 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x90e8, 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6,
+ 0x91e3, 0x91e7, 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673,
+ 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea,
+ 0x96e9, 0x7ae0, 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75,
+ 0x9e7f, 0x9ea5, 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091,
+ 0x5080, 0x5096, 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274,
+ 0x5275, 0x5269, 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b,
+ 0x5580, 0x55a7, 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c,
+ 0x55aa, 0x5594, 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f,
+ 0x553e, 0x55b2, 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589,
+ 0x55ab, 0x5599, 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830,
+ 0x5831, 0x5821, 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
+ 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
+ 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
+ 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
+ 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
+ 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
+ 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
+ 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x63d2, 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee,
+ 0x6376, 0x63f4, 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e,
+ 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670,
+ 0x6674, 0x6676, 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe,
+ 0x66ff, 0x671f, 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7,
+ 0x6905, 0x68df, 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2,
+ 0x68e3, 0x68cb, 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da,
+ 0x696e, 0x68fb, 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc,
+ 0x6bef, 0x6c2e, 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21,
+ 0x6e32, 0x6e67, 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b,
+ 0x6e58, 0x6e24, 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34,
+ 0x6e4d, 0x6e3a, 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
+ 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
+ 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
+ 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
+ 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
+ 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
+ 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
+ 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7a97, 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46,
+ 0x7b50, 0x7b52, 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f,
+ 0x7ca5, 0x7d5e, 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72,
+ 0x7d61, 0x7d66, 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5,
+ 0x800b, 0x8052, 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e,
+ 0x8139, 0x8146, 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c,
+ 0x83e9, 0x8403, 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1,
+ 0x83ef, 0x83f1, 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc,
+ 0x83fd, 0x83f2, 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407,
+ 0x83d4, 0x83df, 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db,
+ 0x86e4, 0x86d0, 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983,
+ 0x8996, 0x8a3b, 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
+ 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
+ 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
+ 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
+ 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
+ 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
+ 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
+ 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9593, 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d,
+ 0x9685, 0x9686, 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4,
+ 0x96c6, 0x96c7, 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808,
+ 0x98e7, 0x98ea, 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad,
+ 0x9ec3, 0x9ecd, 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3,
+ 0x50c5, 0x50be, 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f,
+ 0x5277, 0x527d, 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f,
+ 0x55df, 0x55e8, 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1,
+ 0x55e3, 0x55e4, 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5,
+ 0x55c9, 0x5712, 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a,
+ 0x5854, 0x586b, 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b,
+ 0x5967, 0x5ac1, 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
+ 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
+ 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
+ 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
+ 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
+ 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
+ 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
+ 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x695a, 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982,
+ 0x694a, 0x6968, 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d,
+ 0x6963, 0x695b, 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd,
+ 0x6ea2, 0x6eaf, 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7,
+ 0x6ec5, 0x6ea5, 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96,
+ 0x6e9c, 0x6ec4, 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159,
+ 0x7169, 0x7164, 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c,
+ 0x7165, 0x715e, 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337,
+ 0x7345, 0x733f, 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e,
+ 0x7441, 0x743f, 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600,
+ 0x75f0, 0x7601, 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3,
+ 0x76de, 0x76df, 0x775b, 0x776b, 0x7766, 0x775e, 0x7763, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
+ 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
+ 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
+ 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
+ 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
+ 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
+ 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
+ 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8179, 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477,
+ 0x843d, 0x8431, 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b,
+ 0x843c, 0x8435, 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e,
+ 0x865c, 0x865f, 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe,
+ 0x86fb, 0x8702, 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4,
+ 0x88d9, 0x88dc, 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2,
+ 0x899c, 0x89e3, 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70,
+ 0x8a87, 0x8a7c, 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62,
+ 0x8a6e, 0x8a6c, 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a,
+ 0x8c89, 0x8cca, 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2,
+ 0x8cc5, 0x8de1, 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea,
+ 0x8de4, 0x8de6, 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
+ 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
+ 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
+ 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
+ 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
+ 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
+ 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
+ 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x98fd, 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9,
+ 0x9e82, 0x9f0e, 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6,
+ 0x50ed, 0x50da, 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9,
+ 0x5162, 0x51f3, 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600,
+ 0x561b, 0x5617, 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e,
+ 0x55f7, 0x5616, 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716,
+ 0x5875, 0x587e, 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d,
+ 0x58fd, 0x5925, 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6,
+ 0x5ae9, 0x5ad7, 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7,
+ 0x5be1, 0x5be5, 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d,
+ 0x5c62, 0x5d84, 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54,
+ 0x5ed3, 0x5ed6, 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
+ 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
+ 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
+ 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
+ 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
+ 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
+ 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
+ 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6eff, 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23,
+ 0x6f15, 0x6f2b, 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2,
+ 0x6ecc, 0x6ef7, 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192,
+ 0x723e, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a,
+ 0x7470, 0x746d, 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609,
+ 0x7613, 0x76e1, 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1,
+ 0x789f, 0x78a7, 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d,
+ 0x7a2e, 0x7a31, 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95,
+ 0x7b8b, 0x7b75, 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87,
+ 0x7b84, 0x7cb9, 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd,
+ 0x7dbe, 0x7da0, 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2,
+ 0x7dbf, 0x7db5, 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
+ 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
+ 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
+ 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
+ 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
+ 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
+ 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
+ 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8aaa, 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7,
+ 0x8c6a, 0x8c8d, 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99,
+ 0x8d95, 0x8dfc, 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060,
+ 0x9058, 0x905c, 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b,
+ 0x9119, 0x9118, 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278,
+ 0x9280, 0x9285, 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8,
+ 0x927c, 0x9291, 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4,
+ 0x9699, 0x969c, 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785,
+ 0x97f6, 0x9817, 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c,
+ 0x9909, 0x99c1, 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4,
+ 0x9cf6, 0x9cf3, 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb,
+ 0x50f5, 0x50f9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
+ 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
+ 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
+ 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
+ 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
+ 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
+ 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
+ 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x617c, 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab,
+ 0x618e, 0x61ac, 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469,
+ 0x646f, 0x6479, 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5,
+ 0x6493, 0x6495, 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a,
+ 0x64ac, 0x6499, 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae,
+ 0x66ab, 0x66b4, 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e,
+ 0x6a19, 0x69fd, 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05,
+ 0x69ed, 0x6a11, 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f,
+ 0x6f7c, 0x6f84, 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b,
+ 0x6f78, 0x6f6e, 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58,
+ 0x6ed5, 0x6f6f, 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8,
+ 0x7256, 0x729b, 0x734e, 0x7357, 0x7469, 0x748b, 0x7483, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
+ 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
+ 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
+ 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
+ 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
+ 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
+ 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
+ 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7fe9, 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a,
+ 0x8198, 0x8517, 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513,
+ 0x8511, 0x8523, 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506,
+ 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759,
+ 0x8757, 0x874c, 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912,
+ 0x8913, 0x8915, 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95,
+ 0x8acb, 0x8af8, 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6,
+ 0x8acd, 0x8ab6, 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0,
+ 0x8cde, 0x8ce6, 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc,
+ 0x8cea, 0x8ce1, 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d,
+ 0x8e22, 0x8e0f, 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d,
+ 0x8f1b, 0x8f1f, 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
+ 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
+ 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
+ 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
+ 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
+ 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
+ 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
+ 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9d03, 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112,
+ 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291,
+ 0x5293, 0x52f3, 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678,
+ 0x566a, 0x5668, 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676,
+ 0x58c1, 0x58be, 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78,
+ 0x5bf0, 0x5c0e, 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd,
+ 0x61b6, 0x61be, 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb,
+ 0x64bb, 0x64bc, 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf,
+ 0x64d2, 0x64d4, 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4,
+ 0x66c7, 0x66b8, 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58,
+ 0x6a39, 0x6a44, 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f,
+ 0x6a48, 0x6b59, 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
+ 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
+ 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
+ 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
+ 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
+ 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
+ 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
+ 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7e11, 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09,
+ 0x7e10, 0x7f79, 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3,
+ 0x81a9, 0x81a8, 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559,
+ 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e,
+ 0x8783, 0x879f, 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932,
+ 0x8925, 0x892b, 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb,
+ 0x8af1, 0x8b00, 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02,
+ 0x8af7, 0x8aed, 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93,
+ 0x8cf4, 0x8e44, 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b,
+ 0x8f2f, 0x8f38, 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078,
+ 0x9072, 0x907c, 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8,
+ 0x9333, 0x932f, 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
+ 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
+ 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
+ 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
+ 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
+ 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
+ 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
+ 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x568f, 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a,
+ 0x5b24, 0x5b7a, 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8,
+ 0x5e6b, 0x5f4c, 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb,
+ 0x6232, 0x6234, 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6,
+ 0x64ec, 0x64f1, 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6,
+ 0x6a80, 0x6a94, 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e,
+ 0x6a97, 0x6a90, 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8,
+ 0x6ff1, 0x6fdf, 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80,
+ 0x6fec, 0x6fe1, 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df,
+ 0x71ee, 0x71e6, 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235,
+ 0x7246, 0x7370, 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646,
+ 0x7642, 0x764c, 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
+ 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
+ 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
+ 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
+ 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
+ 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
+ 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
+ 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8584, 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b,
+ 0x8587, 0x85a8, 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2,
+ 0x87c6, 0x87ab, 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936,
+ 0x8944, 0x8938, 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b,
+ 0x8b0a, 0x8b20, 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73,
+ 0x8cfa, 0x8cfd, 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b,
+ 0x8e48, 0x8e4a, 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f,
+ 0x907d, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e,
+ 0x919c, 0x934d, 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b,
+ 0x9318, 0x937e, 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca,
+ 0x95cb, 0x95cc, 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c,
+ 0x971e, 0x97a0, 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
+ 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
+ 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
+ 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
+ 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
+ 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
+ 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
+ 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7652, 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae,
+ 0x7a61, 0x7a62, 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a,
+ 0x7c1e, 0x7c23, 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a,
+ 0x7e61, 0x7e52, 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076,
+ 0x81cd, 0x81cf, 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9,
+ 0x85b0, 0x85ba, 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0,
+ 0x8986, 0x89b2, 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50,
+ 0x8d05, 0x8e59, 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0,
+ 0x8f49, 0x8f4d, 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0,
+ 0x9394, 0x938a, 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0,
+ 0x9398, 0x939a, 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2,
+ 0x96dc, 0x96d9, 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
+ 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
+ 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
+ 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
+ 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
+ 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
+ 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
+ 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x737a, 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f,
+ 0x7661, 0x77c7, 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f,
+ 0x7c38, 0x7c3d, 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69,
+ 0x7e6a, 0x7f85, 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9,
+ 0x85dd, 0x85ea, 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805,
+ 0x880d, 0x87f9, 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41,
+ 0x8b5c, 0x8b58, 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59,
+ 0x8d08, 0x8d0a, 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a,
+ 0x8e74, 0x8f54, 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae,
+ 0x93e1, 0x93d1, 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6,
+ 0x93e2, 0x93cd, 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4,
+ 0x96e3, 0x972a, 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
+ 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
+ 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
+ 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
+ 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
+ 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
+ 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
+ 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7e82, 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9,
+ 0x8611, 0x85fa, 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815,
+ 0x8964, 0x89ba, 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f,
+ 0x8b6b, 0x8d0f, 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4,
+ 0x91cb, 0x9418, 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952,
+ 0x9951, 0x99a8, 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d,
+ 0x9e79, 0x9eb5, 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137,
+ 0x5138, 0x56c1, 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc,
+ 0x61fe, 0x651d, 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa,
+ 0x6bb2, 0x704c, 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3,
+ 0x7c50, 0x7e8f, 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823,
+ 0x8822, 0x8821, 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
+ 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
+ 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
+ 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
+ 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
+ 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
+ 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
+ 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x79b3, 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972,
+ 0x896f, 0x89fc, 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61,
+ 0x9148, 0x9444, 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1,
+ 0x986b, 0x9955, 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31,
+ 0x9c3e, 0x9c3b, 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94,
+ 0x56cc, 0x5dd6, 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10,
+ 0x74da, 0x7aca, 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94,
+ 0x81e2, 0x8638, 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463,
+ 0x9460, 0x9464, 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57,
+ 0x9ad3, 0x9ad4, 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f,
+ 0x9ef4, 0x56d1, 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7,
+ 0x7f50, 0x7f88, 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
+ 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
+ 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
+ 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
+ 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
+ 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
+ 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
+ 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
+ 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478,
+ 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x2170, 0x2171, 0x2172,
+ 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4e36,
+ 0x4e3f, 0x4e85, 0x4ea0, 0x5182, 0x5196, 0x51ab, 0x52f9, 0x5338,
+ 0x5369, 0x53b6, 0x590a, 0x5b80, 0x5ddb, 0x2f33, 0x5e7f, 0xf6df,
+ 0x5f50, 0x5f61, 0x6534, 0xf6e3, 0x7592, 0xf6e5, 0x8fb5, 0xf6e7,
+ 0x00a8, 0x02c6, 0x30fd, 0x30fe, 0x309d, 0x309e, 0xf6ee, 0xf6ef,
+ 0x3005, 0x3006, 0x3007, 0x30fc, 0xff3b, 0xff3d, 0x273d, 0x3041,
+ 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049,
+ 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051,
+ 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
+ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
+ 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
+ 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab,
+ 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3,
+ 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb,
+ 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3,
+ 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb,
+ 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3,
+ 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db,
+ 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3,
+ 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb,
+ 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3,
+ 0x30f4, 0x30f5, 0x30f6, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414,
+ 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422,
+ 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a,
+ 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432,
+ 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439,
+ 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441,
+ 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
+ 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x21e7, 0x21b8,
+ 0x21b9, 0xf7e5, 0xf7e6, 0x4e5a, 0xf7e8, 0x5202, 0xf7ea, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xf7eb, 0x5188, 0xf7ed, 0xf7ee, 0xf7ef, 0xf7f0, 0xf7f1,
+ 0xf7f2, 0xf7f3, 0xf7f4, 0xf7f5, 0xf7f6, 0xf7f7, 0xf7f8, 0xf7f9,
+ 0xf7fa, 0xf7fb, 0xf7fc, 0xf7fd, 0xf7fe, 0xf7ff, 0xf800, 0xf801,
+ 0xf802, 0xf803, 0xf804, 0xf805, 0xf806, 0xf807, 0xf808, 0xf809,
+ 0xf80a, 0xf80b, 0xf80c, 0xf80d, 0xf80e, 0xf80f, 0xf810, 0xf811,
+ 0xf812, 0xf813, 0xf814, 0xf815, 0xf816, 0xffe2, 0xffe4, 0xff07,
+ 0xff02, 0x3231, 0x2116, 0x2121, 0x309b, 0x309c, 0x2e80, 0x2e84,
+ 0x2e86, 0x2e87, 0x2e88, 0x2e8a, 0x2e8c, 0x2e8d, 0x2e95, 0x2e9c,
+ 0x2e9d, 0x2ea5, 0x2ea7, 0x2eaa, 0x2eac, 0x2eae, 0x2eb6, 0x2ebc,
+ 0x2ebe, 0x2ec6, 0x2eca, 0x2ecc, 0x2ecd, 0x2ecf, 0x2ed6, 0x2ed7,
+ 0x2ede, 0x2ee3, 0xf83c, 0xf83d, 0xf83e, 0x0283, 0x0250, 0x025b,
+ 0x0254, 0x0275, 0x0153, 0x00f8, 0x014b, 0x028a, 0x026a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
+ 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
+ 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
+ 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
+ 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
+ 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
+ 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
+ 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6c36, 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a,
+ 0x79b8, 0x808a, 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14,
+ 0x4ef1, 0x4f00, 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22,
+ 0x4f13, 0x4f04, 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210,
+ 0x52a6, 0x5322, 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df,
+ 0x572e, 0x572a, 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b,
+ 0x597e, 0x5977, 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a,
+ 0x5c7b, 0x5c7e, 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74,
+ 0x5fd5, 0x5fd4, 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266,
+ 0x6262, 0x6259, 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e,
+ 0x6739, 0x6738, 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18,
+ 0x6c46, 0x6c52, 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
+ 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
+ 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
+ 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
+ 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
+ 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
+ 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
+ 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x543d, 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee,
+ 0x56e7, 0x56e5, 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752,
+ 0x5906, 0x5940, 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2,
+ 0x5990, 0x598f, 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a,
+ 0x5c8d, 0x5c8f, 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86,
+ 0x5c93, 0x5c95, 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c,
+ 0x5e88, 0x5e8d, 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1,
+ 0x5fd0, 0x5fed, 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3,
+ 0x5ffa, 0x5fef, 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283,
+ 0x628c, 0x628e, 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a,
+ 0x6270, 0x6281, 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537,
+ 0x65f0, 0x65f4, 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
+ 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
+ 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
+ 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
+ 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
+ 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
+ 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
+ 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x828a, 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f,
+ 0x90a1, 0x90a5, 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f,
+ 0x962d, 0x4e33, 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87,
+ 0x4f76, 0x4f74, 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a,
+ 0x4f9a, 0x4f79, 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e,
+ 0x4f92, 0x4f82, 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be,
+ 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b,
+ 0x533c, 0x5392, 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482,
+ 0x5488, 0x546b, 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466,
+ 0x548d, 0x546f, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464,
+ 0x56f7, 0x56f9, 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770,
+ 0x5776, 0x5780, 0x5775, 0x577b, 0x5773, 0x5774, 0x5762, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
+ 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
+ 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
+ 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
+ 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
+ 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
+ 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
+ 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6034, 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c,
+ 0x6022, 0x600d, 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009,
+ 0x601c, 0x6214, 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa,
+ 0x62b6, 0x62ca, 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0,
+ 0x62b8, 0x653d, 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612,
+ 0x6608, 0x65fb, 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611,
+ 0x6610, 0x66f6, 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776,
+ 0x677b, 0x6798, 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a,
+ 0x679f, 0x6791, 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779,
+ 0x6794, 0x6b25, 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec,
+ 0x6ceb, 0x6cee, 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7,
+ 0x6cd0, 0x6cc2, 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
+ 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
+ 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
+ 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
+ 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
+ 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
+ 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
+ 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x77f7, 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb,
+ 0x7c75, 0x7cfd, 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5,
+ 0x80ad, 0x8220, 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b,
+ 0x82b5, 0x82a7, 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8,
+ 0x82a1, 0x82a9, 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670,
+ 0x866f, 0x866d, 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd,
+ 0x8fd6, 0x8fd5, 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0,
+ 0x9639, 0x963d, 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3,
+ 0x4fb2, 0x4fc9, 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb,
+ 0x4fb3, 0x4fdb, 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec,
+ 0x5244, 0x5249, 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396,
+ 0x5399, 0x5398, 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
+ 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
+ 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
+ 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
+ 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
+ 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
+ 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
+ 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5cde, 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3,
+ 0x5cd4, 0x5ccf, 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9,
+ 0x5e21, 0x5e22, 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2,
+ 0x5e9b, 0x5ea3, 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037,
+ 0x6039, 0x6054, 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049,
+ 0x605b, 0x604c, 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058,
+ 0x6066, 0x606e, 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5,
+ 0x630e, 0x6303, 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6,
+ 0x6300, 0x6313, 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541,
+ 0x6543, 0x65aa, 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c,
+ 0x6626, 0x6622, 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639,
+ 0x662e, 0x670f, 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
+ 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
+ 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
+ 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
+ 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
+ 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
+ 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
+ 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6d01, 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07,
+ 0x6d20, 0x6d2c, 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f,
+ 0x70be, 0x70b1, 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241,
+ 0x7249, 0x724a, 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4,
+ 0x72e8, 0x72eb, 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc,
+ 0x73c2, 0x73c8, 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb,
+ 0x73bf, 0x73c7, 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec,
+ 0x74ee, 0x752e, 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4,
+ 0x7708, 0x7703, 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa,
+ 0x77e7, 0x77e8, 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f,
+ 0x780e, 0x7809, 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945,
+ 0x7944, 0x79d5, 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
+ 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
+ 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
+ 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
+ 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
+ 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
+ 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
+ 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x82e4, 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674,
+ 0x867c, 0x8673, 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3,
+ 0x8a04, 0x8a07, 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1,
+ 0x90bd, 0x90bf, 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8,
+ 0x91d4, 0x91d3, 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e,
+ 0x501e, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5,
+ 0x4ff4, 0x5033, 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c,
+ 0x5020, 0x5027, 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194,
+ 0x5193, 0x51ca, 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a,
+ 0x5252, 0x525e, 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e,
+ 0x5526, 0x54e2, 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a,
+ 0x54ff, 0x5504, 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
+ 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
+ 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
+ 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
+ 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
+ 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
+ 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
+ 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6041, 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d,
+ 0x6083, 0x6095, 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219,
+ 0x6246, 0x62f2, 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336,
+ 0x6343, 0x63e4, 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341,
+ 0x6334, 0x6358, 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a,
+ 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6,
+ 0x65c3, 0x65c4, 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712,
+ 0x6713, 0x681f, 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b,
+ 0x684f, 0x6816, 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f,
+ 0x684e, 0x6844, 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828,
+ 0x682e, 0x684d, 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d,
+ 0x6b31, 0x6b34, 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
+ 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
+ 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
+ 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
+ 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
+ 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
+ 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
+ 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7277, 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6,
+ 0x72f3, 0x72fb, 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc,
+ 0x73e7, 0x73e3, 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd,
+ 0x73da, 0x73d7, 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5,
+ 0x7521, 0x755b, 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0,
+ 0x75bf, 0x75b6, 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710,
+ 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722,
+ 0x7727, 0x7823, 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e,
+ 0x782b, 0x7821, 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b,
+ 0x794f, 0x795c, 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0,
+ 0x79ee, 0x79ed, 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89,
+ 0x7a85, 0x7a8b, 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
+ 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
+ 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
+ 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
+ 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
+ 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
+ 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
+ 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8342, 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d,
+ 0x8316, 0x8324, 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345,
+ 0x834c, 0x8353, 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653,
+ 0x8652, 0x86a2, 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687,
+ 0x8697, 0x8686, 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1,
+ 0x86a7, 0x8695, 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843,
+ 0x8844, 0x886d, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f,
+ 0x886f, 0x8883, 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57,
+ 0x8c7b, 0x8ca4, 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6,
+ 0x8ed1, 0x8ed3, 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004,
+ 0x8ffc, 0x8ff6, 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df,
+ 0x90e5, 0x90d8, 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
+ 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
+ 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
+ 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
+ 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
+ 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
+ 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
+ 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x550c, 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d,
+ 0x553b, 0x5540, 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2,
+ 0x57f6, 0x57dc, 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8,
+ 0x580b, 0x57f3, 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5,
+ 0x57ec, 0x57e1, 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c,
+ 0x57f1, 0x57e9, 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58,
+ 0x5a55, 0x5a67, 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f,
+ 0x5a65, 0x5a6c, 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52,
+ 0x5a44, 0x5a5b, 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c,
+ 0x5a70, 0x5a69, 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72,
+ 0x5b6e, 0x5bc1, 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a,
+ 0x5d20, 0x5d0c, 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
+ 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
+ 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
+ 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
+ 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
+ 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
+ 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
+ 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6378, 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553,
+ 0x65cd, 0x6665, 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718,
+ 0x6879, 0x6887, 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab,
+ 0x6956, 0x686f, 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2,
+ 0x688f, 0x6877, 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880,
+ 0x6871, 0x687e, 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4,
+ 0x6878, 0x687b, 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33,
+ 0x6b37, 0x6b38, 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a,
+ 0x6dc0, 0x6dab, 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2,
+ 0x6db7, 0x6df6, 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6,
+ 0x6dbe, 0x6de5, 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd,
+ 0x6ded, 0x6df0, 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
+ 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
+ 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
+ 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
+ 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
+ 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
+ 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
+ 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x75cb, 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3,
+ 0x7739, 0x772f, 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d,
+ 0x7725, 0x773b, 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a,
+ 0x784c, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a,
+ 0x7963, 0x796b, 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7,
+ 0x7a8f, 0x7a94, 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30,
+ 0x7b22, 0x7b24, 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b,
+ 0x7b2d, 0x7b2f, 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98,
+ 0x7c96, 0x7ca3, 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45,
+ 0x7d2c, 0x7d29, 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b,
+ 0x7d28, 0x7f63, 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb,
+ 0x7fcd, 0x7fd0, 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
+ 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
+ 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
+ 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
+ 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
+ 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
+ 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
+ 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x86c2, 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9,
+ 0x86b3, 0x86b8, 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd,
+ 0x86be, 0x8852, 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a,
+ 0x8891, 0x88a1, 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897,
+ 0x88a4, 0x88ac, 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9,
+ 0x89d5, 0x8a30, 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c,
+ 0x8c5d, 0x8c7d, 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2,
+ 0x8db9, 0x8dbf, 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7,
+ 0x8ee0, 0x8ee1, 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021,
+ 0x90ef, 0x90ea, 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb,
+ 0x90ec, 0x90e9, 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec,
+ 0x91f4, 0x91f1, 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
+ 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
+ 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
+ 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
+ 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
+ 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
+ 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
+ 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5819, 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848,
+ 0x5825, 0x581c, 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839,
+ 0x5838, 0x582d, 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f,
+ 0x5a7a, 0x5aa2, 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac,
+ 0x5a95, 0x5aae, 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b,
+ 0x5aa9, 0x5a7b, 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d,
+ 0x5bea, 0x5bcd, 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c,
+ 0x5c30, 0x5d37, 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35,
+ 0x5d51, 0x5d4e, 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31,
+ 0x5d59, 0x5d42, 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36,
+ 0x5d40, 0x5d45, 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab,
+ 0x60c9, 0x60b9, 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
+ 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
+ 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
+ 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
+ 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
+ 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
+ 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
+ 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x667c, 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a,
+ 0x6672, 0x6701, 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec,
+ 0x68ea, 0x68f1, 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6,
+ 0x6913, 0x6910, 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970,
+ 0x68b4, 0x6911, 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd,
+ 0x68fc, 0x68e8, 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd,
+ 0x68de, 0x68e6, 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915,
+ 0x6925, 0x68c7, 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97,
+ 0x6b99, 0x6b95, 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc,
+ 0x6e46, 0x6e47, 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45,
+ 0x6e62, 0x6e2b, 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33,
+ 0x6e4b, 0x6e40, 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
+ 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
+ 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
+ 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
+ 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
+ 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
+ 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
+ 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x741a, 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d,
+ 0x7429, 0x7420, 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7,
+ 0x75da, 0x75e1, 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695,
+ 0x7692, 0x76da, 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a,
+ 0x774e, 0x774b, 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865,
+ 0x785c, 0x786d, 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868,
+ 0x785e, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a,
+ 0x7a03, 0x7a0c, 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b,
+ 0x7b44, 0x7b48, 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2,
+ 0x7c9e, 0x7ca8, 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56,
+ 0x7d67, 0x7d6a, 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54,
+ 0x7d69, 0x7d51, 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
+ 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
+ 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
+ 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
+ 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
+ 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
+ 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
+ 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x83d5, 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3,
+ 0x83ec, 0x83ee, 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db,
+ 0x83fe, 0x86d8, 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea,
+ 0x86dd, 0x86eb, 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1,
+ 0x8848, 0x8856, 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0,
+ 0x88be, 0x88b6, 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9,
+ 0x8995, 0x8998, 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d,
+ 0x8a39, 0x8a59, 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52,
+ 0x8a48, 0x8a51, 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80,
+ 0x8cba, 0x8cbe, 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89,
+ 0x8dd8, 0x8dd3, 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5,
+ 0x8dd9, 0x8dc8, 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
+ 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
+ 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
+ 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
+ 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
+ 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
+ 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
+ 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9689, 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1,
+ 0x96f0, 0x976c, 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6,
+ 0x9ef9, 0x4e83, 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae,
+ 0x50c4, 0x50ca, 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba,
+ 0x50b1, 0x50cb, 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278,
+ 0x527b, 0x527c, 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca,
+ 0x55dd, 0x55c0, 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d,
+ 0x55cf, 0x55d5, 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9,
+ 0x55c2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849,
+ 0x586f, 0x5855, 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d,
+ 0x5863, 0x5871, 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8,
+ 0x5ab1, 0x5ab5, 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
+ 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
+ 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
+ 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
+ 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
+ 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
+ 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
+ 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6433, 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437,
+ 0x6422, 0x6423, 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435,
+ 0x642f, 0x640a, 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7,
+ 0x641b, 0x642e, 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686,
+ 0x668c, 0x6695, 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678,
+ 0x6720, 0x6966, 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f,
+ 0x6945, 0x696a, 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948,
+ 0x6949, 0x6935, 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978,
+ 0x6934, 0x6969, 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941,
+ 0x6974, 0x694c, 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951,
+ 0x6932, 0x6952, 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43,
+ 0x6b42, 0x6b48, 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
+ 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
+ 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
+ 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
+ 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
+ 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
+ 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
+ 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7144, 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291,
+ 0x7290, 0x728e, 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a,
+ 0x7349, 0x7444, 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440,
+ 0x744f, 0x7450, 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1,
+ 0x74ff, 0x74fe, 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef,
+ 0x760f, 0x7603, 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610,
+ 0x75fb, 0x75f6, 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd,
+ 0x7755, 0x775f, 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767,
+ 0x7754, 0x7759, 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f,
+ 0x7884, 0x7895, 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899,
+ 0x7880, 0x7896, 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11,
+ 0x7a18, 0x7a19, 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
+ 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
+ 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
+ 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
+ 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
+ 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
+ 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
+ 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8144, 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242,
+ 0x8245, 0x84f1, 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d,
+ 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d,
+ 0x845a, 0x8459, 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437,
+ 0x843a, 0x8434, 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429,
+ 0x83d9, 0x844b, 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439,
+ 0x844e, 0x844c, 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447,
+ 0x8436, 0x8433, 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454,
+ 0x846e, 0x8450, 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6,
+ 0x86f5, 0x874d, 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d,
+ 0x8705, 0x88d6, 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da,
+ 0x88cc, 0x88d0, 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
+ 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
+ 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
+ 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
+ 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
+ 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
+ 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
+ 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9044, 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111,
+ 0x9116, 0x9114, 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252,
+ 0x9230, 0x923a, 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e,
+ 0x924a, 0x9246, 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f,
+ 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272,
+ 0x924e, 0x9253, 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e,
+ 0x959b, 0x9692, 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd,
+ 0x96f8, 0x96f5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d,
+ 0x980e, 0x98ac, 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5,
+ 0x9aad, 0x9aab, 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd,
+ 0x50e6, 0x50d4, 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd,
+ 0x50e4, 0x50d3, 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
+ 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
+ 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
+ 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
+ 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
+ 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
+ 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
+ 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5be3, 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a,
+ 0x5d81, 0x5d77, 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d,
+ 0x5d79, 0x5d7f, 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7,
+ 0x5ece, 0x5edc, 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43,
+ 0x5f6f, 0x5fb6, 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173,
+ 0x6152, 0x6153, 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a,
+ 0x615b, 0x6165, 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227,
+ 0x622b, 0x642b, 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472,
+ 0x6473, 0x647d, 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e,
+ 0x645c, 0x644b, 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c,
+ 0x646b, 0x6459, 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0,
+ 0x669f, 0x6705, 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
+ 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
+ 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
+ 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
+ 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
+ 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
+ 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
+ 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6f36, 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30,
+ 0x6f3c, 0x6f35, 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd,
+ 0x6ef6, 0x6f39, 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e,
+ 0x6f08, 0x6f21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182,
+ 0x718f, 0x717b, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297,
+ 0x7295, 0x7293, 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473,
+ 0x7471, 0x7475, 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503,
+ 0x757d, 0x7590, 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a,
+ 0x7614, 0x76b8, 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780,
+ 0x776f, 0x777e, 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8,
+ 0x787e, 0x78ab, 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4,
+ 0x7998, 0x798a, 0x798b, 0x7996, 0x7995, 0x7994, 0x7993, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
+ 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
+ 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
+ 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
+ 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
+ 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
+ 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
+ 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8024, 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187,
+ 0x818d, 0x818c, 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f,
+ 0x84ba, 0x84ce, 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4,
+ 0x84c1, 0x84cd, 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7,
+ 0x84bb, 0x84a2, 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af,
+ 0x84a8, 0x84d6, 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4,
+ 0x84d2, 0x84db, 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728,
+ 0x876b, 0x8740, 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743,
+ 0x872c, 0x8741, 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d,
+ 0x873c, 0x8712, 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727,
+ 0x8738, 0x8724, 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1,
+ 0x88f2, 0x88fa, 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
+ 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
+ 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
+ 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
+ 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
+ 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
+ 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
+ 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x92a6, 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3,
+ 0x92ee, 0x928e, 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1,
+ 0x928a, 0x9286, 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9,
+ 0x929d, 0x928b, 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d,
+ 0x977a, 0x977e, 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781,
+ 0x977f, 0x97ce, 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900,
+ 0x9907, 0x999d, 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2,
+ 0x99bd, 0x99c7, 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60,
+ 0x9b61, 0x9b5f, 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103,
+ 0x5130, 0x50f8, 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c,
+ 0x50fd, 0x510a, 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642,
+ 0x564c, 0x5635, 0x5641, 0x564a, 0x5649, 0x5646, 0x5658, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
+ 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
+ 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
+ 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
+ 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
+ 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
+ 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
+ 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x619b, 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa,
+ 0x61a1, 0x618d, 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496,
+ 0x64a0, 0x6485, 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c,
+ 0x64a3, 0x649f, 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579,
+ 0x657b, 0x65b2, 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7,
+ 0x66aa, 0x66af, 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15,
+ 0x69f1, 0x69e4, 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d,
+ 0x69fe, 0x6a27, 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40,
+ 0x6a08, 0x69e6, 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04,
+ 0x6a18, 0x6a25, 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16,
+ 0x6b51, 0x6ba5, 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff,
+ 0x6c02, 0x6f41, 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
+ 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
+ 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
+ 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
+ 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
+ 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
+ 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
+ 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7362, 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d,
+ 0x7485, 0x7488, 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625,
+ 0x761e, 0x7619, 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b,
+ 0x769c, 0x769d, 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788,
+ 0x78cd, 0x78bb, 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8,
+ 0x78c3, 0x78c4, 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2,
+ 0x799b, 0x6b76, 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb,
+ 0x7bbe, 0x7bac, 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5,
+ 0x7cc8, 0x7ccc, 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7,
+ 0x7de1, 0x7e03, 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee,
+ 0x7ddf, 0x7f76, 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea,
+ 0x7fec, 0x7fe6, 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
+ 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
+ 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
+ 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
+ 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
+ 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
+ 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
+ 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8756, 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758,
+ 0x8754, 0x875b, 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d,
+ 0x876a, 0x8750, 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a,
+ 0x876e, 0x875c, 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767,
+ 0x8769, 0x885a, 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918,
+ 0x8919, 0x8906, 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4,
+ 0x89a3, 0x89ed, 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3,
+ 0x8ad1, 0x8ad4, 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5,
+ 0x8ad8, 0x8ac3, 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f,
+ 0x8ce5, 0x8cdf, 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0,
+ 0x8d9c, 0x8da1, 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e,
+ 0x8e15, 0x8e1b, 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
+ 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
+ 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
+ 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
+ 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
+ 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
+ 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
+ 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x92b5, 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab,
+ 0x95ae, 0x95b0, 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702,
+ 0x975a, 0x978a, 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d,
+ 0x9826, 0x9829, 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908,
+ 0x98fa, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd,
+ 0x99cf, 0x99d3, 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb,
+ 0x99d7, 0x99cc, 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1,
+ 0x9b46, 0x9b43, 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75,
+ 0x9b70, 0x9b68, 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff,
+ 0x9cf7, 0x9d07, 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04,
+ 0x9e83, 0x9ed3, 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a,
+ 0x5111, 0x51de, 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
+ 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
+ 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
+ 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
+ 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
+ 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
+ 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
+ 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x61bf, 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf,
+ 0x64c9, 0x64bd, 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533,
+ 0x657f, 0x657c, 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb,
+ 0x66cf, 0x66bd, 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66,
+ 0x6a49, 0x6a67, 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76,
+ 0x6a5b, 0x6a51, 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a,
+ 0x6a64, 0x6a50, 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c,
+ 0x6a5e, 0x6a56, 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54,
+ 0x6b56, 0x6ba7, 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03,
+ 0x6c06, 0x6fad, 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8,
+ 0x6f5e, 0x6fc4, 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5,
+ 0x6fae, 0x6fba, 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
+ 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
+ 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
+ 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
+ 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
+ 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
+ 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
+ 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7797, 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3,
+ 0x78db, 0x78e1, 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44,
+ 0x7a48, 0x7a47, 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde,
+ 0x7be3, 0x7be7, 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9,
+ 0x7bd4, 0x7bea, 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2,
+ 0x7cd4, 0x7cd7, 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c,
+ 0x7e1f, 0x7e20, 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22,
+ 0x7e0b, 0x7e0f, 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43,
+ 0x7f7b, 0x7f7c, 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c,
+ 0x81b1, 0x81a6, 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac,
+ 0x81b4, 0x81b2, 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257,
+ 0x8556, 0x8545, 0x856b, 0x854d, 0x8553, 0x8561, 0x8558, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
+ 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
+ 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
+ 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
+ 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
+ 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
+ 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
+ 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8ae2, 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4,
+ 0x8adf, 0x8af0, 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef,
+ 0x8afb, 0x8c91, 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0,
+ 0x8cf3, 0x8d6c, 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38,
+ 0x8e40, 0x8e45, 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f,
+ 0x8ebd, 0x8f36, 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34,
+ 0x9076, 0x9079, 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136,
+ 0x9193, 0x9190, 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308,
+ 0x931f, 0x9306, 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323,
+ 0x9312, 0x9301, 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d,
+ 0x92fa, 0x9325, 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324,
+ 0x92ff, 0x9329, 0x9339, 0x9335, 0x932a, 0x9314, 0x930c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
+ 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
+ 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
+ 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
+ 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
+ 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
+ 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
+ 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9b7d, 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14,
+ 0x9d29, 0x9d1d, 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88,
+ 0x9e86, 0x9e87, 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12,
+ 0x9f3d, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4,
+ 0x5693, 0x568c, 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682,
+ 0x567f, 0x5681, 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25,
+ 0x5b32, 0x5b23, 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b,
+ 0x5bf1, 0x5bf2, 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3,
+ 0x61b5, 0x61bc, 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de,
+ 0x64ef, 0x64e9, 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580,
+ 0x65b6, 0x65da, 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89,
+ 0x6a9f, 0x6a9b, 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
+ 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
+ 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
+ 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
+ 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
+ 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
+ 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
+ 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x77b4, 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902,
+ 0x78fb, 0x78fc, 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab,
+ 0x79a8, 0x7a5c, 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe,
+ 0x7ac0, 0x7ac1, 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb,
+ 0x7c0e, 0x7bf4, 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01,
+ 0x7bf8, 0x7bfd, 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8,
+ 0x7e2d, 0x7e3c, 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49,
+ 0x7e40, 0x7e47, 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44,
+ 0x7e3a, 0x7f45, 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c,
+ 0x81bb, 0x81c4, 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9,
+ 0x825b, 0x825a, 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595,
+ 0x85a0, 0x858b, 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
+ 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
+ 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
+ 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
+ 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
+ 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
+ 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
+ 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8b18, 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f,
+ 0x8b12, 0x8b15, 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13,
+ 0x8b1a, 0x8c4f, 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94,
+ 0x8cf9, 0x8d6f, 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47,
+ 0x8f43, 0x8f40, 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b,
+ 0x9199, 0x919f, 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af,
+ 0x9364, 0x9356, 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349,
+ 0x9350, 0x9351, 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379,
+ 0x9357, 0x9355, 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361,
+ 0x935e, 0x9363, 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0,
+ 0x95c9, 0x95c3, 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720,
+ 0x971f, 0x9718, 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
+ 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
+ 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
+ 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
+ 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
+ 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
+ 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
+ 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9d45, 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d,
+ 0x7ff5, 0x9d2d, 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda,
+ 0x9efb, 0x9eff, 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131,
+ 0x512d, 0x512e, 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699,
+ 0x5970, 0x5b3c, 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8,
+ 0x61df, 0x61ed, 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6,
+ 0x61e9, 0x64ff, 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc,
+ 0x6594, 0x65db, 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd,
+ 0x6ae1, 0x6ac6, 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad,
+ 0x6b5e, 0x6bc9, 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005,
+ 0x7014, 0x700e, 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7,
+ 0x700a, 0x7201, 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
+ 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
+ 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
+ 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
+ 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
+ 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
+ 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
+ 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x81d0, 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3,
+ 0x85c2, 0x85b3, 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb,
+ 0x85ce, 0x85c8, 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8,
+ 0x85b7, 0x85be, 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb,
+ 0x87ea, 0x87e5, 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3,
+ 0x87ed, 0x87d8, 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4,
+ 0x87e8, 0x87dd, 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950,
+ 0x8951, 0x8949, 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35,
+ 0x8b47, 0x8b2f, 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26,
+ 0x8b36, 0x8b2e, 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75,
+ 0x8c99, 0x8c98, 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c,
+ 0x8e62, 0x8e60, 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
+ 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
+ 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
+ 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
+ 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
+ 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
+ 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
+ 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x97a2, 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa,
+ 0x9850, 0x9851, 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f,
+ 0x9a0b, 0x9a09, 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07,
+ 0x9a06, 0x9ac0, 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35,
+ 0x9b4a, 0x9b4c, 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1,
+ 0x9bb5, 0x9bb8, 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c,
+ 0x9d53, 0x9d4f, 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c,
+ 0x9d57, 0x9d52, 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c,
+ 0x9edf, 0x9f01, 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29,
+ 0x9f28, 0x9f4c, 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4,
+ 0x56ab, 0x56ad, 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd,
+ 0x58db, 0x5912, 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
+ 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
+ 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
+ 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
+ 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
+ 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
+ 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
+ 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7921, 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68,
+ 0x7c33, 0x7c3c, 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76,
+ 0x7e75, 0x7e78, 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74,
+ 0x7e68, 0x7f4b, 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe,
+ 0x8078, 0x81d7, 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1,
+ 0x85ed, 0x85d9, 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2,
+ 0x85f8, 0x85d8, 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6,
+ 0x85ef, 0x85de, 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7,
+ 0x8809, 0x880c, 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a,
+ 0x8802, 0x8962, 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958,
+ 0x895d, 0x8959, 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48,
+ 0x8b4a, 0x8b40, 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
+ 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
+ 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
+ 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
+ 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
+ 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
+ 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
+ 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x97b3, 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c,
+ 0x9859, 0x985d, 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948,
+ 0x9947, 0x9943, 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d,
+ 0x9a24, 0x9a1b, 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c,
+ 0x9a14, 0x9ac2, 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea,
+ 0x9beb, 0x9be0, 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4,
+ 0x9bd7, 0x9bec, 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda,
+ 0x9d77, 0x9d81, 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78,
+ 0x9d86, 0x9d8b, 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70,
+ 0x9d69, 0x9d85, 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f,
+ 0x9d87, 0x9d68, 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40,
+ 0x9f41, 0x9f4d, 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
+ 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
+ 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
+ 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
+ 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
+ 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
+ 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
+ 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x79b2, 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48,
+ 0x7c4a, 0x7c47, 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80,
+ 0x7fba, 0x7fff, 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269,
+ 0x8622, 0x85ff, 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604,
+ 0x8609, 0x8605, 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817,
+ 0x8813, 0x8816, 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a,
+ 0x8b5d, 0x8b68, 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86,
+ 0x8e88, 0x8e84, 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a,
+ 0x908d, 0x9143, 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b,
+ 0x9413, 0x93fb, 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410,
+ 0x9428, 0x9419, 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e,
+ 0x9416, 0x9412, 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
+ 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
+ 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
+ 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
+ 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
+ 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
+ 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
+ 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9da0, 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a,
+ 0x9da2, 0x9da8, 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6,
+ 0x9da7, 0x9e99, 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6,
+ 0x9f30, 0x9f2e, 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91,
+ 0x513a, 0x5139, 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48,
+ 0x5b47, 0x5dcb, 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc,
+ 0x6b03, 0x6af8, 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049,
+ 0x7045, 0x7046, 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a,
+ 0x77d0, 0x792d, 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a,
+ 0x7e87, 0x7e88, 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030,
+ 0x81dd, 0x8618, 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619,
+ 0x8627, 0x862e, 0x8621, 0x8620, 0x8629, 0x861e, 0x8625, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
+ 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
+ 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
+ 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
+ 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
+ 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
+ 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
+ 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9a3f, 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a,
+ 0x9b52, 0x9c2b, 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29,
+ 0x9c24, 0x9c21, 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca,
+ 0x9dcf, 0x9dbe, 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9,
+ 0x9dba, 0x9dac, 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd,
+ 0x9db2, 0x9e7a, 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18,
+ 0x9f1a, 0x9f31, 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6,
+ 0x56c5, 0x56cb, 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2,
+ 0x6521, 0x6520, 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d,
+ 0x7055, 0x7056, 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f,
+ 0x74d8, 0x74d5, 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4,
+ 0x7a70, 0x7a71, 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
+ 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
+ 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
+ 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
+ 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
+ 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
+ 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
+ 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9a49, 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b,
+ 0x9b56, 0x9b55, 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33,
+ 0x9c41, 0x9c3c, 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb,
+ 0x9dd2, 0x9dde, 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf,
+ 0x9de9, 0x9dd9, 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6,
+ 0x9ef0, 0x9f35, 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2,
+ 0x513d, 0x5299, 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f,
+ 0x5f4f, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb,
+ 0x6b11, 0x6b12, 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382,
+ 0x7381, 0x7383, 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c,
+ 0x863a, 0x8640, 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830,
+ 0x8832, 0x882e, 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
+ 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
+ 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
+ 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
+ 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
+ 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
+ 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
+ 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9f71, 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e,
+ 0x5c6d, 0x652d, 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d,
+ 0x7060, 0x7223, 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6,
+ 0x7c6a, 0x7e97, 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835,
+ 0x884b, 0x8b94, 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be,
+ 0x91bd, 0x91c2, 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743,
+ 0x9747, 0x97c7, 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67,
+ 0x9c66, 0x9c62, 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03,
+ 0x9e06, 0x9e05, 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04,
+ 0x9ea0, 0x9f1e, 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e,
+ 0x65b8, 0x6b18, 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa,
+ 0x77d8, 0x77d9, 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
+ 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
+ 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
+ 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
+ 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
+ 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
+ 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
+ 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9fa4, 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d,
+ 0x883f, 0x8b9e, 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874,
+ 0x98cc, 0x9961, 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15,
+ 0x9e17, 0x9f48, 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482,
+ 0x9480, 0x9481, 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b,
+ 0x8b9f, 0x9483, 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d,
+ 0x7069, 0x706a, 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, 0x7881, 0x92b9,
+ 0x88cf, 0x58bb, 0x6052, 0x7ca7, 0x5afa, 0x2554, 0x2566, 0x2557,
+ 0x2560, 0x256c, 0x2563, 0x255a, 0x2569, 0x255d, 0x2552, 0x2564,
+ 0x2555, 0x255e, 0x256a, 0x2561, 0x2558, 0x2567, 0x255b, 0x2553,
+ 0x2565, 0x2556, 0x255f, 0x256b, 0x2562, 0x2559, 0x2568, 0x255c,
+ 0x2551, 0x2550, 0x256d, 0x256e, 0x2570, 0x256f, 0xffed, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xe000, 0x92db, 0xe002, 0xe003, 0x854c, 0x42b5, 0x73ef, 0x51b5,
+ 0x3649, 0xe009, 0xe00a, 0x9344, 0xe00c, 0x82ee, 0xe00e, 0x783c,
+ 0x6744, 0x62df, 0xe012, 0xe013, 0xe014, 0xe015, 0xe016, 0x4fab,
+ 0xe018, 0x5008, 0xe01a, 0xe01b, 0xe01c, 0xe01d, 0xe01e, 0x5029,
+ 0xe020, 0x5fa4, 0xe022, 0xe023, 0x6edb, 0xe025, 0x507d, 0x5101,
+ 0x347a, 0x510e, 0x986c, 0x3743, 0x8416, 0xe02d, 0xe02e, 0x5160,
+ 0xe030, 0x516a, 0xe032, 0xe033, 0xe034, 0xe035, 0xe036, 0xe037,
+ 0xe038, 0x5b82, 0x877d, 0xe03b, 0xe03c, 0x51b2, 0x51b8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9d34, 0x51c9, 0x51cf, 0x51d1, 0x3cdc, 0x51d3, 0xe045,
+ 0x51b3, 0x51e2, 0x5342, 0x51ed, 0x83cd, 0x693e, 0xe04c, 0x5f7b,
+ 0x520b, 0x5226, 0x523c, 0x52b5, 0x5257, 0x5294, 0x52b9, 0x52c5,
+ 0x7c15, 0x8542, 0x52e0, 0x860d, 0xe05a, 0x5305, 0xe05c, 0x5549,
+ 0x6ed9, 0xe05f, 0xe060, 0xe061, 0x5333, 0x5344, 0xe064, 0x6ccb,
+ 0xe066, 0x681b, 0x73d5, 0x604a, 0x3eaa, 0x38cc, 0xe06c, 0x71dd,
+ 0x44a2, 0x536d, 0x5374, 0xe071, 0x537e, 0x537f, 0xe074, 0xe075,
+ 0x77e6, 0x5393, 0xe078, 0x53a0, 0x53ab, 0x53ae, 0x73a7, 0xe07d,
+ 0x3f59, 0x739c, 0x53c1, 0x53c5, 0x6c49, 0x4e49, 0x57fe, 0x53d9,
+ 0x3aab, 0xe087, 0x53e0, 0xe089, 0xe08a, 0x53f6, 0xe08c, 0x5413,
+ 0x7079, 0x552b, 0x6657, 0x6d5b, 0x546d, 0xe093, 0xe094, 0x555d,
+ 0x548f, 0x54a4, 0x47a6, 0xe099, 0xe09a, 0x3db4, 0xe09c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xe09d, 0xe09e, 0x5547, 0x4ced, 0x542f, 0x7417, 0x5586, 0x55a9,
+ 0x5605, 0xe0a6, 0xe0a7, 0x4552, 0xe0a9, 0x66b3, 0xe0ab, 0x5637,
+ 0x66cd, 0xe0ae, 0x66a4, 0x66ad, 0x564d, 0x564f, 0x78f1, 0x56f1,
+ 0x9787, 0x53fe, 0x5700, 0x56ef, 0x56ed, 0xe0ba, 0x3623, 0xe0bc,
+ 0x5746, 0xe0be, 0x6c6e, 0x708b, 0x5742, 0x36b1, 0xe0c3, 0x57e6,
+ 0xe0c5, 0x5803, 0xe0c7, 0xe0c8, 0x5826, 0xe0ca, 0x585c, 0x58aa,
+ 0x3561, 0x58e0, 0x58dc, 0xe0d0, 0x58fb, 0x5bff, 0x5743, 0xe0d4,
+ 0xe0d5, 0x93d3, 0x35a1, 0x591f, 0x68a6, 0x36c3, 0x6e59, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe0dc, 0x5a24, 0x5553, 0xe0df, 0x8505, 0x59c9, 0xe0e2,
+ 0xe0e3, 0xe0e4, 0xe0e5, 0x59d9, 0xe0e7, 0xe0e8, 0xe0e9, 0x6d71,
+ 0xe0eb, 0xe0ec, 0x59f9, 0xe0ee, 0x5aab, 0x5a63, 0x36e6, 0xe0f2,
+ 0x5a77, 0x3708, 0x5a96, 0x7465, 0x5ad3, 0xe0f8, 0xe0f9, 0x3d85,
+ 0xe0fb, 0x3732, 0xe0fd, 0x5e83, 0x52d0, 0x5b76, 0x6588, 0x5b7c,
+ 0xe103, 0x4004, 0x485d, 0xe106, 0x5bd5, 0x6160, 0xe109, 0xe10a,
+ 0xe10b, 0x5bf3, 0x5b9d, 0x4d10, 0x5c05, 0xe110, 0x5c13, 0x73ce,
+ 0x5c14, 0xe114, 0xe115, 0x5c49, 0x48dd, 0x5c85, 0x5ce9, 0x5cef,
+ 0x5d8b, 0xe11c, 0xe11d, 0x5d10, 0x5d18, 0x5d46, 0xe121, 0x5cba,
+ 0x5dd7, 0x82fc, 0x382d, 0xe126, 0xe127, 0xe128, 0x8287, 0x3836,
+ 0x3bc2, 0x5e2e, 0x6a8a, 0x5e75, 0x5e7a, 0xe130, 0xe131, 0x53a6,
+ 0x4eb7, 0x5ed0, 0x53a8, 0xe136, 0x5e09, 0x5ef4, 0xe139, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5ef9, 0x5efb, 0x38a0, 0x5efc, 0x683e, 0x941b, 0x5f0d, 0xe141,
+ 0xe142, 0x3ade, 0x48ae, 0xe145, 0x5f3a, 0xe147, 0xe148, 0x5f58,
+ 0xe14a, 0x5f63, 0x97bd, 0xe14d, 0x5f72, 0x9340, 0xe150, 0x5fa7,
+ 0x5db6, 0x3d5f, 0xe154, 0xe155, 0xe156, 0xe157, 0x91d6, 0xe159,
+ 0xe15a, 0x6031, 0x6685, 0xe15d, 0x3963, 0x3dc7, 0x3639, 0x5790,
+ 0xe162, 0x7971, 0x3e40, 0x609e, 0x60a4, 0x60b3, 0xe168, 0xe169,
+ 0xe16a, 0x74a4, 0x50e1, 0x5aa0, 0x6164, 0x8424, 0x6142, 0xe171,
+ 0xe172, 0x6181, 0x51f4, 0xe175, 0x6187, 0x5baa, 0xe178, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe179, 0x61d3, 0xe17b, 0xe17c, 0x61d0, 0x3932, 0xe17f,
+ 0xe180, 0x6023, 0x615c, 0x651e, 0x638b, 0xe185, 0x62c5, 0xe187,
+ 0x62d5, 0xe189, 0x636c, 0xe18b, 0x3a17, 0x6438, 0x63f8, 0xe18f,
+ 0xe190, 0x6490, 0x6f8a, 0xe193, 0x9814, 0xe195, 0xe196, 0x64e1,
+ 0x64e5, 0x947b, 0x3a66, 0x643a, 0x3a57, 0x654d, 0x6f16, 0xe19f,
+ 0xe1a0, 0x6585, 0x656d, 0x655f, 0xe1a4, 0x65b5, 0xe1a6, 0x4b37,
+ 0x65d1, 0x40d8, 0xe1aa, 0x65e0, 0x65e3, 0x5fdf, 0xe1ae, 0x6618,
+ 0xe1b0, 0xe1b1, 0x6644, 0xe1b3, 0xe1b4, 0x664b, 0xe1b6, 0x6667,
+ 0xe1b8, 0x6673, 0x6674, 0xe1bb, 0xe1bc, 0xe1bd, 0xe1be, 0xe1bf,
+ 0x77c5, 0xe1c1, 0x99a4, 0x6702, 0xe1c4, 0xe1c5, 0x3b2b, 0x69fa,
+ 0xe1c8, 0x675e, 0x6767, 0x6762, 0xe1cc, 0xe1cd, 0x67d7, 0x44e9,
+ 0x6822, 0x6e50, 0x923c, 0x6801, 0xe1d4, 0xe1d5, 0x685d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xe1d7, 0x69e1, 0x6a0b, 0xe1da, 0x6973, 0x68c3, 0xe1dd, 0x6901,
+ 0x6900, 0x3d32, 0x3a01, 0xe1e2, 0x3b80, 0x67ac, 0x6961, 0xe1e6,
+ 0x42fc, 0x6936, 0x6998, 0x3ba1, 0xe1eb, 0x8363, 0x5090, 0x69f9,
+ 0xe1ef, 0xe1f0, 0x6a45, 0xe1f2, 0x6a9d, 0x3bf3, 0x67b1, 0x6ac8,
+ 0xe1f7, 0x3c0d, 0x6b1d, 0xe1fa, 0x60de, 0x6b35, 0x6b74, 0xe1fe,
+ 0x6eb5, 0xe200, 0xe201, 0xe202, 0x3740, 0x5421, 0xe205, 0x6be1,
+ 0xe207, 0x6bdc, 0x6c37, 0xe20a, 0xe20b, 0xe20c, 0x6c5a, 0x8226,
+ 0x6c79, 0xe210, 0x44c5, 0xe212, 0xe213, 0xe214, 0xe215, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe216, 0x36e5, 0x3ceb, 0xe219, 0x9b83, 0xe21b, 0xe21c,
+ 0x7f8f, 0x6837, 0xe21f, 0xe220, 0xe221, 0x6d96, 0x6d5c, 0x6e7c,
+ 0x6f04, 0xe226, 0xe227, 0xe228, 0x8533, 0xe22a, 0x51c7, 0x6c9c,
+ 0x6e1d, 0x842e, 0xe22f, 0x6e2f, 0xe231, 0x7453, 0xe233, 0x79cc,
+ 0x6e4f, 0x5a91, 0xe237, 0x6ff8, 0x370d, 0x6f9d, 0xe23b, 0x6efa,
+ 0xe23d, 0xe23e, 0x4555, 0x93f0, 0x6f44, 0x6f5c, 0x3d4e, 0x6f74,
+ 0xe245, 0x3d3b, 0x6f9f, 0xe248, 0x6fd3, 0xe24a, 0xe24b, 0xe24c,
+ 0xe24d, 0xe24e, 0xe24f, 0x51df, 0xe251, 0xe252, 0xe253, 0xe254,
+ 0x704b, 0x707e, 0x70a7, 0x7081, 0x70cc, 0x70d5, 0x70d6, 0x70df,
+ 0x4104, 0x3de8, 0x71b4, 0x7196, 0xe261, 0x712b, 0x7145, 0x5a88,
+ 0x714a, 0x716e, 0x5c9c, 0xe268, 0x714f, 0x9362, 0xe26b, 0x712c,
+ 0xe26d, 0xe26e, 0xe26f, 0x71ba, 0xe271, 0x70bd, 0x720e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341, 0xe27a, 0x722e,
+ 0x7240, 0xe27d, 0x68bd, 0x7255, 0x7257, 0x3e55, 0xe282, 0x680d,
+ 0x6f3d, 0x7282, 0x732a, 0x732b, 0xe288, 0xe289, 0x48ed, 0xe28b,
+ 0x7328, 0x732e, 0x73cf, 0x73aa, 0xe290, 0xe291, 0x73c9, 0x7449,
+ 0xe294, 0xe295, 0xe296, 0x6623, 0x36c5, 0xe299, 0xe29a, 0xe29b,
+ 0x73f7, 0x7415, 0x6903, 0xe29f, 0x7439, 0xe2a1, 0x3ed7, 0x745c,
+ 0xe2a4, 0x7460, 0xe2a6, 0x7447, 0x73e4, 0x7476, 0x83b9, 0x746c,
+ 0x3730, 0x7474, 0x93f1, 0x6a2c, 0x7482, 0x4953, 0xe2b2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe2b3, 0xe2b4, 0xe2b5, 0x5b46, 0xe2b7, 0xe2b8, 0x74c8,
+ 0xe2ba, 0x750e, 0x74e9, 0x751e, 0xe2be, 0xe2bf, 0x5bd7, 0xe2c1,
+ 0x9385, 0x754d, 0x754a, 0x7567, 0x756e, 0xe2c7, 0x3f04, 0xe2c9,
+ 0x758e, 0x745d, 0x759e, 0x75b4, 0x7602, 0x762c, 0x7651, 0x764f,
+ 0x766f, 0x7676, 0xe2d4, 0x7690, 0x81ef, 0x37f8, 0xe2d8, 0xe2d9,
+ 0x76a1, 0x76a5, 0x76b7, 0x76cc, 0xe2de, 0x8462, 0xe2e0, 0xe2e1,
+ 0xe2e2, 0x771e, 0x7726, 0x7740, 0x64af, 0xe2e7, 0x7758, 0xe2e9,
+ 0x77af, 0xe2eb, 0xe2ec, 0xe2ed, 0x77f4, 0x7809, 0xe2f0, 0xe2f1,
+ 0x68ca, 0x78af, 0x78c7, 0x78d3, 0x96a5, 0x792e, 0xe2f8, 0x78d7,
+ 0x7934, 0x78b1, 0xe2fc, 0x8fb8, 0x8884, 0xe2ff, 0xe300, 0xe301,
+ 0x7986, 0x8900, 0x6902, 0x7980, 0xe306, 0x799d, 0xe308, 0x793c,
+ 0x79a9, 0x6e2a, 0xe30c, 0x3ea8, 0x79c6, 0xe30f, 0x79d4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x79d4, 0xfefe, 0x00ff, 0x0000, 0x0100, 0x0005, 0x8000, 0x804f240
+};
+
+
+const unichar_t unicode_from_ksc5601[] = {
+ 0x3164, 0x3001, 0x3002, 0x30fb, 0x2025, 0x22ef, 0x00a8, 0x3003,
+ 0x2013, 0x2014, 0x2016, 0xff3c, 0xff5e, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
+ 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7, 0x00f7,
+ 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032, 0x2033,
+ 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640, 0x2220,
+ 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7, 0x203b,
+ 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1,
+ 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190, 0x2191,
+ 0x2193, 0x2194, 0x3013, 0x00ab, 0x00bb, 0x221a, 0x223d, 0x221d,
+ 0x2235, 0x222b, 0x222c, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282,
+ 0x2283, 0x222a, 0x2229, 0x2227, 0x2228, 0xffe2, 0x21d2, 0x21d4,
+ 0x2200, 0x2203, 0x00b4, 0x02dc, 0x02c7, 0x02d8, 0x02dd, 0x02da,
+ 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf, 0x2236, 0x222e, 0x2211,
+ 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1, 0x25c0, 0x25b7, 0x25b6,
+ 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, 0x2663, 0x25c9, 0x25c8,
+ 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4, 0x25a5, 0x25a8, 0x25a7,
+ 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e, 0x261c, 0x261e, 0x00b6,
+ 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196, 0x2198, 0x266d,
+ 0x2669, 0x266a, 0x266c, 0x327f, 0x321c, 0x2116, 0x33c7, 0x2122,
+ 0x33c2, 0x33d8, 0x2121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xff01, 0xff02, 0xff03, 0xff04,
+ 0xff05, 0xff06, 0xff07, 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c,
+ 0xff0d, 0xff0e, 0xff0f, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14,
+ 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c,
+ 0xff1d, 0xff1e, 0xff1f, 0xff20, 0xff21, 0xff22, 0xff23, 0xff24,
+ 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c,
+ 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34,
+ 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff3b, 0xffe6,
+ 0xff3d, 0xff3e, 0xff3f, 0xff40, 0xff41, 0xff42, 0xff43, 0xff44,
+ 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c,
+ 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54,
+ 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c,
+ 0xff5d, 0xffe3, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136,
+ 0x3137, 0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e,
+ 0x313f, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146,
+ 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e,
+ 0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156,
+ 0x3157, 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e,
+ 0x315f, 0x3160, 0x3161, 0x3162, 0x3163, 0x0000, 0x3165, 0x3166,
+ 0x3167, 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e,
+ 0x316f, 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176,
+ 0x3177, 0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e,
+ 0x317f, 0x3180, 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186,
+ 0x3187, 0x3188, 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e,
+ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ 0x2178, 0x2179, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
+ 0x2169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2500, 0x2502,
+ 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c, 0x2524, 0x2534,
+ 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b, 0x2517, 0x2523,
+ 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f, 0x2528, 0x2537,
+ 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542, 0x2512, 0x2511,
+ 0x251a, 0x2519, 0x2516, 0x2515, 0x250e, 0x250d, 0x251e, 0x251f,
+ 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252a, 0x252d, 0x252e,
+ 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253a, 0x253d, 0x253e,
+ 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548,
+ 0x2549, 0x254a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3395, 0x3396, 0x3397, 0x2113,
+ 0x3398, 0x33c4, 0x33a3, 0x33a4, 0x33a5, 0x33a6, 0x3399, 0x339a,
+ 0x339b, 0x339c, 0x339d, 0x339e, 0x339f, 0x33a0, 0x33a1, 0x33a2,
+ 0x33ca, 0x338d, 0x338e, 0x338f, 0x33cf, 0x3388, 0x3389, 0x33c8,
+ 0x33a7, 0x33a8, 0x33b0, 0x33b1, 0x33b2, 0x33b3, 0x33b4, 0x33b5,
+ 0x33b6, 0x33b7, 0x33b8, 0x33b9, 0x3380, 0x3381, 0x3382, 0x3383,
+ 0x3384, 0x33ba, 0x33bb, 0x33bc, 0x33bd, 0x33be, 0x33bf, 0x3390,
+ 0x3391, 0x3392, 0x3393, 0x3394, 0x2126, 0x33c0, 0x33c1, 0x338a,
+ 0x338b, 0x338c, 0x33d6, 0x33c5, 0x33ad, 0x33ae, 0x33af, 0x33db,
+ 0x33a9, 0x33aa, 0x33ab, 0x33ac, 0x33dd, 0x33d0, 0x33d3, 0x33c3,
+ 0x33c9, 0x33dc, 0x33c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x00c6, 0x00d0, 0x00aa, 0x0126, 0x0000, 0x0132,
+ 0x0000, 0x013f, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166,
+ 0x014a, 0x0000, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265,
+ 0x3266, 0x3267, 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d,
+ 0x326e, 0x326f, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275,
+ 0x3276, 0x3277, 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1,
+ 0x24d2, 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9,
+ 0x24da, 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1,
+ 0x24e2, 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9,
+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
+ 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd,
+ 0x2153, 0x2154, 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e,
+ 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140,
+ 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x0149,
+ 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207,
+ 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f,
+ 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217,
+ 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e, 0x249f,
+ 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7,
+ 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af,
+ 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474, 0x2475,
+ 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d,
+ 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x00b9, 0x00b2, 0x00b3,
+ 0x2074, 0x207f, 0x2081, 0x2082, 0x2083, 0x2084, 0x3041, 0x3042,
+ 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a,
+ 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052,
+ 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a,
+ 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061, 0x3062,
+ 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a,
+ 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071, 0x3072,
+ 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a,
+ 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081, 0x3082,
+ 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a,
+ 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, 0x3091, 0x3092,
+ 0x3093, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x30a1, 0x30a2, 0x30a3, 0x30a4,
+ 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac,
+ 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4,
+ 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc,
+ 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4,
+ 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc,
+ 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4,
+ 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc,
+ 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4,
+ 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec,
+ 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4,
+ 0x30f5, 0x30f6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415,
+ 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c,
+ 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424,
+ 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c,
+ 0x042d, 0x042e, 0x042f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435,
+ 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c,
+ 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444,
+ 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c,
+ 0x044d, 0x044e, 0x044f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09,
+ 0xac0a, 0xac10, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16,
+ 0xac17, 0xac19, 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24,
+ 0xac2c, 0xac2d, 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c,
+ 0xac40, 0xac4b, 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71,
+ 0xac74, 0xac77, 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84,
+ 0xac85, 0xac86, 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94,
+ 0xac9c, 0xac9d, 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa,
+ 0xacac, 0xacaf, 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd,
+ 0xacc1, 0xacc4, 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1,
+ 0xace4, 0xace7, 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1,
+ 0xacf3, 0xacf5, 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06,
+ 0xad0c, 0xad0d, 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20, 0xad29,
+ 0xad2c, 0xad2d, 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44, 0xad45,
+ 0xad47, 0xad49, 0xad50, 0xad54, 0xad58, 0xad61, 0xad63, 0xad6c,
+ 0xad6d, 0xad70, 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b, 0xad7c,
+ 0xad7d, 0xad7f, 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c, 0xad90,
+ 0xad9c, 0xad9d, 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4, 0xadc8,
+ 0xadd0, 0xadd1, 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8, 0xadf9,
+ 0xadfc, 0xadff, 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b, 0xae0d,
+ 0xae14, 0xae30, 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a, 0xae40,
+ 0xae41, 0xae43, 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d, 0xae4e,
+ 0xae50, 0xae54, 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60, 0xae61,
+ 0xae65, 0xae68, 0xae69, 0xae6c, 0xae70, 0xae78, 0xae79, 0xae7b,
+ 0xae7c, 0xae7d, 0xae84, 0xae85, 0xae8c, 0xaebc, 0xaebd, 0xaebe,
+ 0xaec0, 0xaec4, 0xaecc, 0xaecd, 0xaecf, 0xaed0, 0xaed1, 0xaed8,
+ 0xaed9, 0xaedc, 0xaee8, 0xaeeb, 0xaeed, 0xaef4, 0xaef8, 0xaefc,
+ 0xaf07, 0xaf08, 0xaf0d, 0xaf10, 0xaf2c, 0xaf2d, 0xaf30, 0xaf32,
+ 0xaf34, 0xaf3c, 0xaf3d, 0xaf3f, 0xaf41, 0xaf42, 0xaf43, 0xaf48,
+ 0xaf49, 0xaf50, 0xaf5c, 0xaf5d, 0xaf64, 0xaf65, 0xaf79, 0xaf80,
+ 0xaf84, 0xaf88, 0xaf90, 0xaf91, 0xaf95, 0xaf9c, 0xafb8, 0xafb9,
+ 0xafbc, 0xafc0, 0xafc7, 0xafc8, 0xafc9, 0xafcb, 0xafcd, 0xafce,
+ 0xafd4, 0xafdc, 0xafe8, 0xafe9, 0xaff0, 0xaff1, 0xaff4, 0xaff8,
+ 0xb000, 0xb001, 0xb004, 0xb00c, 0xb010, 0xb014, 0xb01c, 0xb01d,
+ 0xb028, 0xb044, 0xb045, 0xb048, 0xb04a, 0xb04c, 0xb04e, 0xb053,
+ 0xb054, 0xb055, 0xb057, 0xb059, 0xb05d, 0xb07c, 0xb07d, 0xb080,
+ 0xb084, 0xb08c, 0xb08d, 0xb08f, 0xb091, 0xb098, 0xb099, 0xb09a,
+ 0xb09c, 0xb09f, 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab,
+ 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af, 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5,
+ 0xb0b8, 0xb0bc, 0xb0c4, 0xb0c5, 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0,
+ 0xb0d1, 0xb0d4, 0xb0d8, 0xb0e0, 0xb0e5, 0xb108, 0xb109, 0xb10b,
+ 0xb10c, 0xb110, 0xb112, 0xb113, 0xb118, 0xb119, 0xb11b, 0xb11c,
+ 0xb11d, 0xb123, 0xb124, 0xb125, 0xb128, 0xb12c, 0xb134, 0xb135,
+ 0xb137, 0xb138, 0xb139, 0xb140, 0xb141, 0xb144, 0xb148, 0xb150,
+ 0xb151, 0xb154, 0xb155, 0xb158, 0xb15c, 0xb160, 0xb178, 0xb179,
+ 0xb17c, 0xb180, 0xb182, 0xb188, 0xb189, 0xb18b, 0xb18d, 0xb192,
+ 0xb193, 0xb194, 0xb198, 0xb19c, 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4,
+ 0xb1dc, 0xb1dd, 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9,
+ 0xb1fb, 0xb1fd, 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214,
+ 0xb215, 0xb217, 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c,
+ 0xb260, 0xb268, 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285,
+ 0xb289, 0xb290, 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0,
+ 0xb2a1, 0xb2a3, 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4,
+ 0xb2c8, 0xb2c9, 0xb2cc, 0xb2d0, 0xb2d2, 0xb2d8, 0xb2d9, 0xb2db,
+ 0xb2dd, 0xb2e2, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec,
+ 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8,
+ 0xb2f9, 0xb2fa, 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308,
+ 0xb310, 0xb311, 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355,
+ 0xb356, 0xb358, 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365,
+ 0xb367, 0xb369, 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374, 0xb378,
+ 0xb380, 0xb381, 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390, 0xb394,
+ 0xb3a0, 0xb3a1, 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8, 0xb3cb,
+ 0xb3cc, 0xb3ce, 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9, 0xb3db,
+ 0xb3dd, 0xb3e0, 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418, 0xb41c,
+ 0xb420, 0xb428, 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451, 0xb454,
+ 0xb458, 0xb460, 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480, 0xb488,
+ 0xb49d, 0xb4a4, 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9, 0xb4c0,
+ 0xb4c4, 0xb4c8, 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0, 0xb4e3,
+ 0xb4e4, 0xb4e6, 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8, 0xb514,
+ 0xb515, 0xb518, 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527, 0xb528,
+ 0xb529, 0xb52a, 0xb530, 0xb531, 0xb534, 0xb538, 0xb540, 0xb541,
+ 0xb543, 0xb544, 0xb545, 0xb54b, 0xb54c, 0xb54d, 0xb550, 0xb554,
+ 0xb55c, 0xb55d, 0xb55f, 0xb560, 0xb561, 0xb5a0, 0xb5a1, 0xb5a4,
+ 0xb5a8, 0xb5aa, 0xb5ab, 0xb5b0, 0xb5b1, 0xb5b3, 0xb5b4, 0xb5b5,
+ 0xb5bb, 0xb5bc, 0xb5bd, 0xb5c0, 0xb5c4, 0xb5cc, 0xb5cd, 0xb5cf,
+ 0xb5d0, 0xb5d1, 0xb5d8, 0xb5ec, 0xb610, 0xb611, 0xb614, 0xb618,
+ 0xb625, 0xb62c, 0xb634, 0xb648, 0xb664, 0xb668, 0xb69c, 0xb69d,
+ 0xb6a0, 0xb6a4, 0xb6ab, 0xb6ac, 0xb6b1, 0xb6d4, 0xb6f0, 0xb6f4,
+ 0xb6f8, 0xb700, 0xb701, 0xb705, 0xb728, 0xb729, 0xb72c, 0xb72f,
+ 0xb730, 0xb738, 0xb739, 0xb73b, 0xb744, 0xb748, 0xb74c, 0xb754,
+ 0xb755, 0xb760, 0xb764, 0xb768, 0xb770, 0xb771, 0xb773, 0xb775,
+ 0xb77c, 0xb77d, 0xb780, 0xb784, 0xb78c, 0xb78d, 0xb78f, 0xb790,
+ 0xb791, 0xb792, 0xb796, 0xb797, 0xb798, 0xb799, 0xb79c, 0xb7a0,
+ 0xb7a8, 0xb7a9, 0xb7ab, 0xb7ac, 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8,
+ 0xb7c7, 0xb7c9, 0xb7ec, 0xb7ed, 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd,
+ 0xb7ff, 0xb800, 0xb801, 0xb807, 0xb808, 0xb809, 0xb80c, 0xb810,
+ 0xb818, 0xb819, 0xb81b, 0xb81d, 0xb824, 0xb825, 0xb828, 0xb82c,
+ 0xb834, 0xb835, 0xb837, 0xb838, 0xb839, 0xb840, 0xb844, 0xb851,
+ 0xb853, 0xb85c, 0xb85d, 0xb860, 0xb864, 0xb86c, 0xb86d, 0xb86f,
+ 0xb871, 0xb878, 0xb87c, 0xb88d, 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8,
+ 0xb8c0, 0xb8c1, 0xb8c3, 0xb8c5, 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd,
+ 0xb8df, 0xb8e1, 0xb8e8, 0xb8e9, 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9,
+ 0xb8fb, 0xb8fd, 0xb904, 0xb918, 0xb920, 0xb93c, 0xb93d, 0xb940,
+ 0xb944, 0xb94c, 0xb94f, 0xb951, 0xb958, 0xb959, 0xb95c, 0xb960,
+ 0xb968, 0xb969, 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c,
+ 0xb984, 0xb985, 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac,
+ 0xb9ad, 0xb9b0, 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8,
+ 0xb9c9, 0xb9cc, 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8,
+ 0xb9d9, 0xb9db, 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5,
+ 0xb9e8, 0xb9ec, 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa,
+ 0xba00, 0xba01, 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40,
+ 0xba42, 0xba48, 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54,
+ 0xba55, 0xba58, 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69,
+ 0xba70, 0xba71, 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87,
+ 0xba8c, 0xbaa8, 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8,
+ 0xbab9, 0xbabb, 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc,
+ 0xbb00, 0xbb04, 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c, 0xbb20,
+ 0xbb29, 0xbb2b, 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b, 0xbb3c,
+ 0xbb3d, 0xbb3e, 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d, 0xbb4f,
+ 0xbb50, 0xbb54, 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88, 0xbb8c,
+ 0xbb90, 0xbba4, 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0, 0xbbc4,
+ 0xbbc8, 0xbbd0, 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff, 0xbc00,
+ 0xbc02, 0xbc08, 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f, 0xbc11,
+ 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c, 0xbc1d,
+ 0xbc1e, 0xbc1f, 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d, 0xbc30,
+ 0xbc31, 0xbc34, 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44, 0xbc45,
+ 0xbc49, 0xbc4c, 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85, 0xbc88,
+ 0xbc8b, 0xbc8c, 0xbc8e, 0xbc94, 0xbc95, 0xbc97, 0xbc99, 0xbc9a,
+ 0xbca0, 0xbca1, 0xbca4, 0xbca7, 0xbca8, 0xbcb0, 0xbcb1, 0xbcb3,
+ 0xbcb4, 0xbcb5, 0xbcbc, 0xbcbd, 0xbcc0, 0xbcc4, 0xbccd, 0xbccf,
+ 0xbcd0, 0xbcd1, 0xbcd5, 0xbcd8, 0xbcdc, 0xbcf4, 0xbcf5, 0xbcf6,
+ 0xbcf8, 0xbcfc, 0xbd04, 0xbd05, 0xbd07, 0xbd09, 0xbd10, 0xbd14,
+ 0xbd24, 0xbd2c, 0xbd40, 0xbd48, 0xbd49, 0xbd4c, 0xbd50, 0xbd58,
+ 0xbd59, 0xbd64, 0xbd68, 0xbd80, 0xbd81, 0xbd84, 0xbd87, 0xbd88,
+ 0xbd89, 0xbd8a, 0xbd90, 0xbd91, 0xbd93, 0xbd95, 0xbd99, 0xbd9a,
+ 0xbd9c, 0xbda4, 0xbdb0, 0xbdb8, 0xbdd4, 0xbdd5, 0xbdd8, 0xbddc,
+ 0xbde9, 0xbdf0, 0xbdf4, 0xbdf8, 0xbe00, 0xbe03, 0xbe05, 0xbe0c,
+ 0xbe0d, 0xbe10, 0xbe14, 0xbe1c, 0xbe1d, 0xbe1f, 0xbe44, 0xbe45,
+ 0xbe48, 0xbe4c, 0xbe4e, 0xbe54, 0xbe55, 0xbe57, 0xbe59, 0xbe5a,
+ 0xbe5b, 0xbe60, 0xbe61, 0xbe64, 0xbe68, 0xbe6a, 0xbe70, 0xbe71,
+ 0xbe73, 0xbe74, 0xbe75, 0xbe7b, 0xbe7c, 0xbe7d, 0xbe80, 0xbe84,
+ 0xbe8c, 0xbe8d, 0xbe8f, 0xbe90, 0xbe91, 0xbe98, 0xbe99, 0xbea8,
+ 0xbed0, 0xbed1, 0xbed4, 0xbed7, 0xbed8, 0xbee0, 0xbee3, 0xbee4,
+ 0xbee5, 0xbeec, 0xbf01, 0xbf08, 0xbf09, 0xbf18, 0xbf19, 0xbf1b,
+ 0xbf1c, 0xbf1d, 0xbf40, 0xbf41, 0xbf44, 0xbf48, 0xbf50, 0xbf51,
+ 0xbf55, 0xbf94, 0xbfb0, 0xbfc5, 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4,
+ 0xbfdc, 0xbfdf, 0xbfe1, 0xc03c, 0xc051, 0xc058, 0xc05c, 0xc060,
+ 0xc068, 0xc069, 0xc090, 0xc091, 0xc094, 0xc098, 0xc0a0, 0xc0a1,
+ 0xc0a3, 0xc0a5, 0xc0ac, 0xc0ad, 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4,
+ 0xc0b5, 0xc0b6, 0xc0bc, 0xc0bd, 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5,
+ 0xc0c8, 0xc0c9, 0xc0cc, 0xc0d0, 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc,
+ 0xc0dd, 0xc0e4, 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7,
+ 0xc0f9, 0xc100, 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d,
+ 0xc11e, 0xc11f, 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c,
+ 0xc12d, 0xc12f, 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c,
+ 0xc140, 0xc148, 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155,
+ 0xc158, 0xc15c, 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170,
+ 0xc174, 0xc178, 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194,
+ 0xc196, 0xc19c, 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9,
+ 0xc1ac, 0xc1b0, 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7,
+ 0xc1d8, 0xc1e0, 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc,
+ 0xc1fd, 0xc200, 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218,
+ 0xc219, 0xc21c, 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d,
+ 0xc22f, 0xc231, 0xc232, 0xc234, 0xc248, 0xc250, 0xc251, 0xc254,
+ 0xc258, 0xc260, 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274, 0xc27c,
+ 0xc27d, 0xc27f, 0xc281, 0xc288, 0xc289, 0xc290, 0xc298, 0xc29b,
+ 0xc29d, 0xc2a4, 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4, 0xc2b5,
+ 0xc2b7, 0xc2b9, 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4, 0xc2eb,
+ 0xc2ec, 0xc2ed, 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9, 0xc2fb,
+ 0xc2fc, 0xc300, 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313, 0xc314,
+ 0xc315, 0xc318, 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329, 0xc345,
+ 0xc368, 0xc369, 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379, 0xc37c,
+ 0xc37d, 0xc384, 0xc388, 0xc38c, 0xc3c0, 0xc3d8, 0xc3d9, 0xc3dc,
+ 0xc3df, 0xc3e0, 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4, 0xc3f5,
+ 0xc3f8, 0xc408, 0xc410, 0xc424, 0xc42c, 0xc430, 0xc434, 0xc43c,
+ 0xc43d, 0xc448, 0xc464, 0xc465, 0xc468, 0xc46c, 0xc474, 0xc475,
+ 0xc479, 0xc480, 0xc494, 0xc49c, 0xc4b8, 0xc4bc, 0xc4e9, 0xc4f0,
+ 0xc4f1, 0xc4f4, 0xc4f8, 0xc4fa, 0xc4ff, 0xc500, 0xc501, 0xc50c,
+ 0xc510, 0xc514, 0xc51c, 0xc528, 0xc529, 0xc52c, 0xc530, 0xc538,
+ 0xc539, 0xc53b, 0xc53d, 0xc544, 0xc545, 0xc548, 0xc549, 0xc54a,
+ 0xc54c, 0xc54d, 0xc54e, 0xc553, 0xc554, 0xc555, 0xc557, 0xc558,
+ 0xc559, 0xc55d, 0xc55e, 0xc560, 0xc561, 0xc564, 0xc568, 0xc570,
+ 0xc571, 0xc573, 0xc574, 0xc575, 0xc57c, 0xc57d, 0xc580, 0xc584,
+ 0xc587, 0xc58c, 0xc58d, 0xc58f, 0xc591, 0xc595, 0xc597, 0xc598,
+ 0xc59c, 0xc5a0, 0xc5a9, 0xc5b4, 0xc5b5, 0xc5b8, 0xc5b9, 0xc5bb,
+ 0xc5bc, 0xc5bd, 0xc5be, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8,
+ 0xc5c9, 0xc5ca, 0xc5cc, 0xc5ce, 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8,
+ 0xc5e0, 0xc5e1, 0xc5e3, 0xc5e5, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0,
+ 0xc5f4, 0xc5f6, 0xc5f7, 0xc5fc, 0xc5fd, 0xc5fe, 0xc5ff, 0xc600,
+ 0xc601, 0xc605, 0xc606, 0xc607, 0xc608, 0xc60c, 0xc610, 0xc618,
+ 0xc619, 0xc61b, 0xc61c, 0xc624, 0xc625, 0xc628, 0xc62c, 0xc62d,
+ 0xc62e, 0xc630, 0xc633, 0xc634, 0xc635, 0xc637, 0xc639, 0xc63b,
+ 0xc640, 0xc641, 0xc644, 0xc648, 0xc650, 0xc651, 0xc653, 0xc654,
+ 0xc655, 0xc65c, 0xc65d, 0xc660, 0xc66c, 0xc66f, 0xc671, 0xc678,
+ 0xc679, 0xc67c, 0xc680, 0xc688, 0xc689, 0xc68b, 0xc68d, 0xc694,
+ 0xc695, 0xc698, 0xc69c, 0xc6a4, 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0,
+ 0xc6b1, 0xc6b4, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3,
+ 0xc6c5, 0xc6cc, 0xc6cd, 0xc6d0, 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0,
+ 0xc6e1, 0xc6e8, 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd,
+ 0xc704, 0xc705, 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719,
+ 0xc720, 0xc721, 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735,
+ 0xc737, 0xc73c, 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d,
+ 0xc74f, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757,
+ 0xc758, 0xc75c, 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778,
+ 0xc77c, 0xc77d, 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788,
+ 0xc789, 0xc78a, 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797,
+ 0xc798, 0xc79a, 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6,
+ 0xc7ac, 0xc7ad, 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0,
+ 0xc7c1, 0xc7c8, 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd,
+ 0xc7e4, 0xc7e8, 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a,
+ 0xc810, 0xc811, 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d, 0xc820,
+ 0xc824, 0xc82c, 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c, 0xc840,
+ 0xc848, 0xc849, 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871, 0xc874,
+ 0xc878, 0xc87a, 0xc880, 0xc881, 0xc883, 0xc885, 0xc886, 0xc887,
+ 0xc88b, 0xc88c, 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1, 0xc8a8,
+ 0xc8bc, 0xc8bd, 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5, 0xc8d7,
+ 0xc8d9, 0xc8e0, 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd, 0xc900,
+ 0xc904, 0xc905, 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911, 0xc918,
+ 0xc92c, 0xc934, 0xc950, 0xc951, 0xc954, 0xc958, 0xc960, 0xc961,
+ 0xc963, 0xc96c, 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989, 0xc98c,
+ 0xc990, 0xc998, 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1, 0xc9c4,
+ 0xc9c7, 0xc9c8, 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3, 0xc9d5, 0xc9d6,
+ 0xc9d9, 0xc9da, 0xc9dc, 0xc9dd, 0xc9e0, 0xc9e2, 0xc9e4, 0xc9e7,
+ 0xc9ec, 0xc9ed, 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f8, 0xc9f9, 0xc9fc,
+ 0xca00, 0xca08, 0xca09, 0xca0b, 0xca0c, 0xca0d, 0xca14, 0xca18,
+ 0xca29, 0xca4c, 0xca4d, 0xca50, 0xca54, 0xca5c, 0xca5d, 0xca5f,
+ 0xca60, 0xca61, 0xca68, 0xca7d, 0xca84, 0xca98, 0xcabc, 0xcabd,
+ 0xcac0, 0xcac4, 0xcacc, 0xcacd, 0xcacf, 0xcad1, 0xcad3, 0xcad8,
+ 0xcad9, 0xcae0, 0xcaec, 0xcaf4, 0xcb08, 0xcb10, 0xcb14, 0xcb18,
+ 0xcb20, 0xcb21, 0xcb41, 0xcb48, 0xcb49, 0xcb4c, 0xcb50, 0xcb58,
+ 0xcb59, 0xcb5d, 0xcb64, 0xcb78, 0xcb79, 0xcb9c, 0xcbb8, 0xcbd4,
+ 0xcbe4, 0xcbe7, 0xcbe9, 0xcc0c, 0xcc0d, 0xcc10, 0xcc14, 0xcc1c,
+ 0xcc1d, 0xcc21, 0xcc22, 0xcc27, 0xcc28, 0xcc29, 0xcc2c, 0xcc2e,
+ 0xcc30, 0xcc38, 0xcc39, 0xcc3b, 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44,
+ 0xcc45, 0xcc48, 0xcc4c, 0xcc54, 0xcc55, 0xcc57, 0xcc58, 0xcc59,
+ 0xcc60, 0xcc64, 0xcc66, 0xcc68, 0xcc70, 0xcc75, 0xcc98, 0xcc99,
+ 0xcc9c, 0xcca0, 0xcca8, 0xcca9, 0xccab, 0xccac, 0xccad, 0xccb4,
+ 0xccb5, 0xccb8, 0xccbc, 0xccc4, 0xccc5, 0xccc7, 0xccc9, 0xccd0,
+ 0xccd4, 0xcce4, 0xccec, 0xccf0, 0xcd01, 0xcd08, 0xcd09, 0xcd0c,
+ 0xcd10, 0xcd18, 0xcd19, 0xcd1b, 0xcd1d, 0xcd24, 0xcd28, 0xcd2c,
+ 0xcd39, 0xcd5c, 0xcd60, 0xcd64, 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71,
+ 0xcd78, 0xcd88, 0xcd94, 0xcd95, 0xcd98, 0xcd9c, 0xcda4, 0xcda5,
+ 0xcda7, 0xcda9, 0xcdb0, 0xcdc4, 0xcdcc, 0xcdd0, 0xcde8, 0xcdec,
+ 0xcdf0, 0xcdf8, 0xcdf9, 0xcdfb, 0xcdfd, 0xce04, 0xce08, 0xce0c,
+ 0xce14, 0xce19, 0xce20, 0xce21, 0xce24, 0xce28, 0xce30, 0xce31,
+ 0xce33, 0xce35, 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61,
+ 0xce68, 0xce69, 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c,
+ 0xce84, 0xce85, 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98,
+ 0xcea0, 0xcea1, 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1,
+ 0xcee4, 0xcee5, 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7,
+ 0xcef8, 0xcef9, 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11,
+ 0xcf13, 0xcf15, 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f,
+ 0xcf30, 0xcf31, 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64,
+ 0xcf65, 0xcf67, 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80,
+ 0xcf85, 0xcf8c, 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1,
+ 0xcfe4, 0xcfe8, 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000,
+ 0xd004, 0xd011, 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c,
+ 0xd044, 0xd045, 0xd047, 0xd049, 0xd050, 0xd054, 0xd058, 0xd060,
+ 0xd06c, 0xd06d, 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081, 0xd0a4,
+ 0xd0a5, 0xd0a8, 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9, 0xd0c0,
+ 0xd0c1, 0xd0c4, 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4,
+ 0xd0d5, 0xd0dc, 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed, 0xd0ef,
+ 0xd0f0, 0xd0f1, 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134, 0xd138,
+ 0xd13a, 0xd140, 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c, 0xd14d,
+ 0xd150, 0xd154, 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168, 0xd16c,
+ 0xd17c, 0xd184, 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8, 0xd1b0,
+ 0xd1b1, 0xd1b3, 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8, 0xd1f4,
+ 0xd1f8, 0xd207, 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230, 0xd234,
+ 0xd23c, 0xd23d, 0xd23f, 0xd241, 0xd248, 0xd25c, 0xd264, 0xd280,
+ 0xd281, 0xd284, 0xd288, 0xd290, 0xd291, 0xd295, 0xd29c, 0xd2a0,
+ 0xd2a4, 0xd2ac, 0xd2b1, 0xd2b8, 0xd2b9, 0xd2bc, 0xd2bf, 0xd2c0,
+ 0xd2c2, 0xd2c8, 0xd2c9, 0xd2cb, 0xd2d4, 0xd2d8, 0xd2dc, 0xd2e4,
+ 0xd2e5, 0xd2f0, 0xd2f1, 0xd2f4, 0xd2f8, 0xd300, 0xd301, 0xd303,
+ 0xd305, 0xd30c, 0xd30d, 0xd30e, 0xd310, 0xd314, 0xd316, 0xd31c,
+ 0xd31d, 0xd31f, 0xd320, 0xd321, 0xd325, 0xd328, 0xd329, 0xd32c,
+ 0xd330, 0xd338, 0xd339, 0xd33b, 0xd33c, 0xd33d, 0xd344, 0xd345,
+ 0xd37c, 0xd37d, 0xd380, 0xd384, 0xd38c, 0xd38d, 0xd38f, 0xd390,
+ 0xd391, 0xd398, 0xd399, 0xd39c, 0xd3a0, 0xd3a8, 0xd3a9, 0xd3ab,
+ 0xd3ad, 0xd3b4, 0xd3b8, 0xd3bc, 0xd3c4, 0xd3c5, 0xd3c8, 0xd3c9,
+ 0xd3d0, 0xd3d8, 0xd3e1, 0xd3e3, 0xd3ec, 0xd3ed, 0xd3f0, 0xd3f4,
+ 0xd3fc, 0xd3fd, 0xd3ff, 0xd401, 0xd408, 0xd41d, 0xd440, 0xd444,
+ 0xd45c, 0xd460, 0xd464, 0xd46d, 0xd46f, 0xd478, 0xd479, 0xd47c,
+ 0xd47f, 0xd480, 0xd482, 0xd488, 0xd489, 0xd48b, 0xd48d, 0xd494,
+ 0xd4a9, 0xd4cc, 0xd4d0, 0xd4d4, 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec,
+ 0xd4f0, 0xd4f8, 0xd4fb, 0xd4fd, 0xd504, 0xd508, 0xd50c, 0xd514,
+ 0xd515, 0xd517, 0xd53c, 0xd53d, 0xd540, 0xd544, 0xd54c, 0xd54d,
+ 0xd54f, 0xd551, 0xd558, 0xd559, 0xd55c, 0xd560, 0xd565, 0xd568,
+ 0xd569, 0xd56b, 0xd56d, 0xd574, 0xd575, 0xd578, 0xd57c, 0xd584,
+ 0xd585, 0xd587, 0xd588, 0xd589, 0xd590, 0xd5a5, 0xd5c8, 0xd5c9,
+ 0xd5cc, 0xd5d0, 0xd5d2, 0xd5d8, 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4,
+ 0xd5e5, 0xd5e8, 0xd5ec, 0xd5f4, 0xd5f5, 0xd5f7, 0xd5f9, 0xd600,
+ 0xd601, 0xd604, 0xd608, 0xd610, 0xd611, 0xd613, 0xd614, 0xd615,
+ 0xd61c, 0xd620, 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640,
+ 0xd645, 0xd648, 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655,
+ 0xd658, 0xd65c, 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683,
+ 0xd685, 0xd68c, 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1,
+ 0xd6a8, 0xd6ac, 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8,
+ 0xd6cc, 0xd6d1, 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8,
+ 0xd6f0, 0xd6f5, 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718,
+ 0xd719, 0xd71c, 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734,
+ 0xd735, 0xd738, 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751,
+ 0xd754, 0xd756, 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763,
+ 0xd765, 0xd769, 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781,
+ 0xd788, 0xd789, 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f3d, 0x4f73,
+ 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475, 0x54e5, 0x5609, 0x5ac1,
+ 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef, 0x6b4c, 0x73c2, 0x75c2,
+ 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888, 0x8a36, 0x8cc8, 0x8dcf,
+ 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374, 0x5404, 0x606a, 0x6164,
+ 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2, 0x95a3, 0x4f83, 0x520a,
+ 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79, 0x61c7, 0x63c0, 0x6746,
+ 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b, 0x78f5, 0x7a08, 0x7aff,
+ 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb, 0x9593, 0x4e6b, 0x559d,
+ 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b, 0x8910, 0x874e, 0x97a8,
+ 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x611f, 0x61be, 0x6221, 0x6562,
+ 0x67d1, 0x6a44, 0x6e1b, 0x7518, 0x75b3, 0x76e3, 0x77b0, 0x7d3a,
+ 0x90af, 0x9451, 0x9452, 0x9f95, 0x5323, 0x5cac, 0x7532, 0x80db,
+ 0x9240, 0x9598, 0x525b, 0x5808, 0x59dc, 0x5ca1, 0x5d17, 0x5eb7,
+ 0x5f3a, 0x5f4a, 0x6177, 0x6c5f, 0x757a, 0x7586, 0x7ce0, 0x7d73,
+ 0x7db1, 0x7f8c, 0x8154, 0x8221, 0x8591, 0x8941, 0x8b1b, 0x92fc,
+ 0x0000, 0x9c47, 0x4ecb, 0x4ef7, 0x500b, 0x51f1, 0x584f, 0x6137,
+ 0x613e, 0x6168, 0x6539, 0x69ea, 0x6f11, 0x75a5, 0x7686, 0x76d6,
+ 0x7b87, 0x82a5, 0x84cb, 0x0000, 0x93a7, 0x958b, 0x5580, 0x5ba2,
+ 0x5751, 0x66f4, 0x7cb3, 0x7fb9, 0x91b5, 0x5028, 0x53bb, 0x5c45,
+ 0x5de8, 0x62d2, 0x636e, 0x64da, 0x64e7, 0x6e20, 0x70ac, 0x795b,
+ 0x8ddd, 0x8e1e, 0x0000, 0x907d, 0x9245, 0x92f8, 0x4e7e, 0x4ef6,
+ 0x5065, 0x5dfe, 0x5efa, 0x6106, 0x6957, 0x8171, 0x8654, 0x8e47,
+ 0x9375, 0x9a2b, 0x4e5e, 0x5091, 0x6770, 0x6840, 0x5109, 0x528d,
+ 0x5292, 0x6aa2, 0x77bc, 0x9210, 0x9ed4, 0x52ab, 0x602f, 0x8ff2,
+ 0x5048, 0x61a9, 0x63ed, 0x64ca, 0x683c, 0x6a84, 0x6fc0, 0x8188,
+ 0x89a1, 0x9694, 0x5805, 0x727d, 0x72ac, 0x7504, 0x7d79, 0x7e6d,
+ 0x80a9, 0x0000, 0x8b74, 0x9063, 0x9d51, 0x6289, 0x6c7a, 0x6f54,
+ 0x7d50, 0x7f3a, 0x8a23, 0x517c, 0x614a, 0x7b9d, 0x8b19, 0x9257,
+ 0x938c, 0x4eac, 0x4fd3, 0x501e, 0x50be, 0x5106, 0x52c1, 0x52cd,
+ 0x537f, 0x5770, 0x5883, 0x5e9a, 0x5f91, 0x6176, 0x61ac, 0x64ce,
+ 0x656c, 0x666f, 0x66bb, 0x0000, 0x6897, 0x6d87, 0x7085, 0x70f1,
+ 0x749f, 0x74a5, 0x74ca, 0x75d9, 0x786c, 0x78ec, 0x7adf, 0x7af6,
+ 0x7d45, 0x7d93, 0x8015, 0x803f, 0x811b, 0x8396, 0x8b66, 0x8f15,
+ 0x9015, 0x93e1, 0x9803, 0x9838, 0x9a5a, 0x9be8, 0x4fc2, 0x5553,
+ 0x583a, 0x0000, 0x5b63, 0x5c46, 0x60b8, 0x6212, 0x6842, 0x68b0,
+ 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d, 0x7cfb, 0x7e6b,
+ 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4, 0x53e4, 0x53e9,
+ 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b, 0x5eab, 0x62f7,
+ 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1, 0x6cbd, 0x75fc,
+ 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1, 0x818f, 0x82e6,
+ 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5, 0x0000, 0x8f9c,
+ 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed, 0x659b, 0x66f2,
+ 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764, 0x5d11, 0x6606,
+ 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4, 0x6c68, 0x0000,
+ 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54, 0x5de5, 0x6050,
+ 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a, 0x86a3, 0x8ca2,
+ 0x978f, 0x0000, 0x5be1, 0x6208, 0x679c, 0x74dc, 0x79d1, 0x83d3,
+ 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b, 0x9846, 0x5ed3, 0x69e8,
+ 0x85ff, 0x90ed, 0x4e32, 0x51a0, 0x5b98, 0x5bec, 0x6163, 0x68fa,
+ 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1, 0x7f50, 0x83c5, 0x89c0,
+ 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d, 0x62ec, 0x9002, 0x4f8a,
+ 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0, 0x6d38, 0x709a, 0x72c2,
+ 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366, 0x639b, 0x7f6b, 0x4e56,
+ 0x5080, 0x584a, 0x58de, 0x602a, 0x6127, 0x62d0, 0x69d0, 0x9b41,
+ 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4, 0x50d1, 0x54ac, 0x55ac,
+ 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e, 0x6821, 0x6a4b, 0x72e1,
+ 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x81a0, 0x854e, 0x86df, 0x8f03,
+ 0x8f4e, 0x90ca, 0x9903, 0x9a55, 0x9bab, 0x4e18, 0x4e45, 0x4e5d,
+ 0x4ec7, 0x4ff1, 0x5177, 0x52fe, 0x5340, 0x53e3, 0x53e5, 0x548e,
+ 0x5614, 0x5775, 0x57a2, 0x5bc7, 0x5d87, 0x5ed0, 0x61fc, 0x62d8,
+ 0x6551, 0x67b8, 0x67e9, 0x69cb, 0x6b50, 0x6bc6, 0x6bec, 0x6c42,
+ 0x6e9d, 0x7078, 0x72d7, 0x7396, 0x7403, 0x77bf, 0x77e9, 0x7a76,
+ 0x7d7f, 0x8009, 0x81fc, 0x8205, 0x820a, 0x82df, 0x8862, 0x8b33,
+ 0x8cfc, 0x8ec0, 0x9011, 0x90b1, 0x9264, 0x92b6, 0x99d2, 0x9a45,
+ 0x9ce9, 0x9dd7, 0x9f9c, 0x570b, 0x5c40, 0x83ca, 0x97a0, 0x97ab,
+ 0x9eb4, 0x541b, 0x7a98, 0x7fa4, 0x88d9, 0x8ecd, 0x90e1, 0x5800,
+ 0x5c48, 0x6398, 0x7a9f, 0x5bae, 0x5f13, 0x7a79, 0x7aae, 0x828e,
+ 0x8eac, 0x5026, 0x5238, 0x52f8, 0x5377, 0x5708, 0x62f3, 0x6372,
+ 0x6b0a, 0x6dc3, 0x7737, 0x53a5, 0x7357, 0x8568, 0x8e76, 0x95d5,
+ 0x673a, 0x6ac3, 0x6f70, 0x8a6d, 0x8ecc, 0x994b, 0x0000, 0x6677,
+ 0x6b78, 0x8cb4, 0x9b3c, 0x0000, 0x53eb, 0x572d, 0x594e, 0x63c6,
+ 0x69fb, 0x73ea, 0x7845, 0x7aba, 0x7ac5, 0x7cfe, 0x8475, 0x898f,
+ 0x8d73, 0x9035, 0x95a8, 0x52fb, 0x5747, 0x7547, 0x7b60, 0x83cc,
+ 0x921e, 0x0000, 0x6a58, 0x514b, 0x524b, 0x5287, 0x621f, 0x68d8,
+ 0x6975, 0x9699, 0x50c5, 0x52a4, 0x52e4, 0x61c3, 0x65a4, 0x6839,
+ 0x69ff, 0x747e, 0x7b4b, 0x82b9, 0x83eb, 0x89b2, 0x8b39, 0x8fd1,
+ 0x9949, 0x5951, 0x4eca, 0x5997, 0x64d2, 0x6611, 0x6a8e, 0x7434,
+ 0x7981, 0x79bd, 0x82a9, 0x887e, 0x887f, 0x895f, 0x91d1, 0x9326,
+ 0x4f0b, 0x53ca, 0x6025, 0x6271, 0x6c72, 0x7d1a, 0x7d66, 0x4e98,
+ 0x5162, 0x77dc, 0x80af, 0x4f01, 0x4f0e, 0x5176, 0x5180, 0x55dc,
+ 0x5668, 0x573b, 0x57fa, 0x57fc, 0x5914, 0x5947, 0x5993, 0x5bc4,
+ 0x5c90, 0x5d0e, 0x5df1, 0x5e7e, 0x5fcc, 0x6280, 0x65d7, 0x65e3,
+ 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f, 0x6b3a, 0x6c23,
+ 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a, 0x7482, 0x74a3,
+ 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947, 0x7948, 0x797a,
+ 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d, 0x808c, 0x8a18,
+ 0x8b4f, 0x8c48, 0x8d77, 0x9321, 0x9324, 0x98e2, 0x9951, 0x9a0e,
+ 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409, 0x62ee, 0x6854,
+ 0x0000, 0x55ab, 0x513a, 0x5587, 0x5948, 0x5a1c, 0x61e6, 0x61f6,
+ 0x62cf, 0x62ff, 0x7669, 0x7f85, 0x863f, 0x87ba, 0x88f8, 0x908f,
+ 0x90a3, 0x6a02, 0x6d1b, 0x70d9, 0x73de, 0x843d, 0x8afe, 0x916a,
+ 0x99f1, 0x4e82, 0x5375, 0x6696, 0x6b04, 0x7156, 0x721b, 0x862d,
+ 0x96e3, 0x9e1e, 0x634f, 0x637a, 0x5357, 0x5d50, 0x678f, 0x6960,
+ 0x6e73, 0x6feb, 0x7537, 0x85cd, 0x8964, 0x62c9, 0x7d0d, 0x81d8,
+ 0x881f, 0x8872, 0x56ca, 0x5a18, 0x5eca, 0x6717, 0x6d6a, 0x72fc,
+ 0x90de, 0x4e43, 0x4f86, 0x5167, 0x0000, 0x67f0, 0x8010, 0x51b7,
+ 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5, 0x606c, 0x62c8, 0x637b,
+ 0x5be7, 0x5bd7, 0x52aa, 0x52de, 0x5974, 0x5f29, 0x6012, 0x64c4,
+ 0x6ad3, 0x7210, 0x7459, 0x76e7, 0x8001, 0x8606, 0x865c, 0x8def,
+ 0x9732, 0x99d1, 0x9b6f, 0x9dfa, 0x788c, 0x797f, 0x7da0, 0x83c9,
+ 0x9304, 0x9e7f, 0x8ad6, 0x58df, 0x5f04, 0x6fc3, 0x7c60, 0x807e,
+ 0x81bf, 0x8fb2, 0x60f1, 0x7262, 0x78ca, 0x8166, 0x8cc2, 0x96f7,
+ 0x5c3f, 0x58d8, 0x5c62, 0x6a13, 0x6dda, 0x6f0f, 0x7d2f, 0x7e37,
+ 0x964b, 0x5ae9, 0x8a25, 0x677b, 0x7d10, 0x52d2, 0x808b, 0x51dc,
+ 0x51cc, 0x7a1c, 0x7dbe, 0x80fd, 0x83f1, 0x9675, 0x5c3c, 0x6ce5,
+ 0x533f, 0x6eba, 0x591a, 0x8336, 0x4e39, 0x4eb6, 0x4f46, 0x55ae,
+ 0x5718, 0x58c7, 0x5f56, 0x65b7, 0x65e6, 0x6a80, 0x6bb5, 0x6e4d,
+ 0x77ed, 0x7aef, 0x7c1e, 0x7dde, 0x86cb, 0x8892, 0x9132, 0x935b,
+ 0x64bb, 0x6fbe, 0x737a, 0x75b8, 0x9054, 0x5556, 0x574d, 0x61ba,
+ 0x64d4, 0x66c7, 0x6de1, 0x6e5b, 0x6f6d, 0x6fb9, 0x75f0, 0x8043,
+ 0x81bd, 0x8541, 0x8983, 0x8ac7, 0x8b5a, 0x931f, 0x6c93, 0x7553,
+ 0x7b54, 0x8e0f, 0x905d, 0x5510, 0x5802, 0x5858, 0x5e62, 0x6207,
+ 0x649e, 0x68e0, 0x7576, 0x7cd6, 0x87b3, 0x9ee8, 0x4ee3, 0x5788,
+ 0x576e, 0x5927, 0x5c0d, 0x5cb1, 0x5e36, 0x5f85, 0x6234, 0x64e1,
+ 0x73b3, 0x81fa, 0x888b, 0x8cb8, 0x968a, 0x9edb, 0x5b85, 0x5fb7,
+ 0x60b3, 0x5012, 0x5200, 0x5230, 0x5716, 0x5835, 0x5857, 0x5c0e,
+ 0x5c60, 0x5cf6, 0x5d8b, 0x5ea6, 0x5f92, 0x60bc, 0x6311, 0x6389,
+ 0x6417, 0x6843, 0x68f9, 0x6ac2, 0x6dd8, 0x6e21, 0x6ed4, 0x6fe4,
+ 0x71fe, 0x76dc, 0x7779, 0x79b1, 0x7a3b, 0x8404, 0x89a9, 0x8ced,
+ 0x8df3, 0x8e48, 0x9003, 0x9014, 0x9053, 0x90fd, 0x934d, 0x9676,
+ 0x97dc, 0x6bd2, 0x7006, 0x7258, 0x72a2, 0x7368, 0x7763, 0x79bf,
+ 0x7be4, 0x7e9b, 0x8b80, 0x58a9, 0x60c7, 0x6566, 0x65fd, 0x66be,
+ 0x6c8c, 0x711e, 0x71c9, 0x8c5a, 0x9813, 0x4e6d, 0x7a81, 0x4edd,
+ 0x51ac, 0x51cd, 0x52d5, 0x540c, 0x61a7, 0x6771, 0x6850, 0x68df,
+ 0x6d1e, 0x6f7c, 0x75bc, 0x77b3, 0x7ae5, 0x80f4, 0x8463, 0x9285,
+ 0x515c, 0x6597, 0x675c, 0x6793, 0x75d8, 0x7ac7, 0x8373, 0x0000,
+ 0x8c46, 0x9017, 0x982d, 0x5c6f, 0x81c0, 0x829a, 0x9041, 0x906f,
+ 0x920d, 0x5f97, 0x5d9d, 0x6a59, 0x71c8, 0x767b, 0x7b49, 0x85e4,
+ 0x8b04, 0x9127, 0x9a30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7d61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6b12, 0x703e, 0x0000, 0x0000, 0x0000, 0x524c, 0x8fa3,
+ 0x0000, 0x64e5, 0x652c, 0x6b16, 0x0000, 0x7c43, 0x7e9c, 0x0000,
+ 0x0000, 0x89bd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7405, 0x746f, 0x8782, 0x0000, 0x0000, 0x5d0d, 0x5fa0,
+ 0x840a, 0x0000, 0x63a0, 0x7565, 0x4eae, 0x5006, 0x5169, 0x51c9,
+ 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f, 0x8ad2, 0x8f1b,
+ 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec, 0x616e, 0x623e,
+ 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823, 0x95ad, 0x9a62,
+ 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77, 0x701d, 0x792b,
+ 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23, 0x7149, 0x7489,
+ 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023, 0x934a, 0x51bd, 0x5217,
+ 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9, 0x6582, 0x6bae, 0x6fc2,
+ 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9, 0x0000, 0x5cba, 0x5dba,
+ 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce, 0x8046, 0x901e, 0x9234,
+ 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b, 0x6fa7, 0x79ae, 0x91b4,
+ 0x96b7, 0x0000, 0x0000, 0x6488, 0x0000, 0x0000, 0x6f5e, 0x7018,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8f05, 0x0000,
+ 0x0000, 0x0000, 0x9e75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9e93, 0x0000, 0x0000, 0x0000, 0x6727, 0x7027, 0x74cf,
+ 0x0000, 0x0000, 0x5121, 0x7028, 0x0000, 0x0000, 0x0000, 0x8cda,
+ 0x8cf4, 0x0000, 0x4e86, 0x50da, 0x5bee, 0x5ed6, 0x6599, 0x71ce,
+ 0x7642, 0x77ad, 0x804a, 0x84fc, 0x907c, 0x9b27, 0x9f8d, 0x0000,
+ 0x5a41, 0x0000, 0x0000, 0x0000, 0x0000, 0x763b, 0x0000, 0x0000,
+ 0x851e, 0x8938, 0x93e4, 0x0000, 0x5289, 0x65d2, 0x67f3, 0x69b4,
+ 0x6d41, 0x6e9c, 0x700f, 0x7409, 0x7460, 0x7559, 0x7624, 0x786b,
+ 0x8b2c, 0x985e, 0x516d, 0x622e, 0x9678, 0x4f96, 0x502b, 0x5d19,
+ 0x6dea, 0x7db8, 0x8f2a, 0x5f8b, 0x6144, 0x6817, 0x7387, 0x9686,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x695e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4fda, 0x5229, 0x5398, 0x540f, 0x550e, 0x5c65, 0x60a7,
+ 0x674e, 0x68a8, 0x6d6c, 0x7281, 0x72f8, 0x7406, 0x7483, 0x7570,
+ 0x75e2, 0x7c6c, 0x7f79, 0x7fb8, 0x8389, 0x88cf, 0x88e1, 0x91cc,
+ 0x91d0, 0x96e2, 0x9bc9, 0x541d, 0x6f7e, 0x71d0, 0x7498, 0x85fa,
+ 0x8eaa, 0x96a3, 0x9c57, 0x9e9f, 0x6797, 0x6dcb, 0x7433, 0x81e8,
+ 0x9716, 0x782c, 0x7acb, 0x7b20, 0x7c92, 0x6469, 0x746a, 0x75f2,
+ 0x78bc, 0x78e8, 0x99ac, 0x9b54, 0x9ebb, 0x5bde, 0x5e55, 0x6f20,
+ 0x819c, 0x83ab, 0x9088, 0x4e07, 0x534d, 0x5a29, 0x5dd2, 0x5f4e,
+ 0x6162, 0x633d, 0x6669, 0x66fc, 0x6eff, 0x6f2b, 0x7063, 0x779e,
+ 0x842c, 0x8513, 0x883b, 0x8f13, 0x9945, 0x9c3b, 0x551c, 0x62b9,
+ 0x672b, 0x6cab, 0x8309, 0x896a, 0x977a, 0x4ea1, 0x5984, 0x5fd8,
+ 0x5fd9, 0x671b, 0x7db2, 0x7f54, 0x8292, 0x832b, 0x83bd, 0x8f1e,
+ 0x9099, 0x57cb, 0x59b9, 0x5a92, 0x5bd0, 0x6627, 0x679a, 0x6885,
+ 0x6bcf, 0x7164, 0x7f75, 0x8cb7, 0x8ce3, 0x9081, 0x9b45, 0x8108,
+ 0x8c8a, 0x964c, 0x9a40, 0x9ea5, 0x5b5f, 0x6c13, 0x731b, 0x76f2,
+ 0x76df, 0x840c, 0x51aa, 0x8993, 0x514d, 0x5195, 0x52c9, 0x68c9,
+ 0x6c94, 0x7704, 0x7720, 0x7dbf, 0x7dec, 0x9762, 0x9eb5, 0x6ec5,
+ 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d, 0x6927, 0x6e9f,
+ 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169, 0x9298, 0x9cf4,
+ 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d, 0x6155, 0x6478,
+ 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb, 0x725f, 0x7261,
+ 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305, 0x8b00, 0x8b28,
+ 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766, 0x7a46, 0x9da9,
+ 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f, 0x5893, 0x5999,
+ 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b, 0x7ad7, 0x82d7,
+ 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a, 0x62c7, 0x64ab,
+ 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7, 0x755d, 0x7e46,
+ 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727, 0x9d61, 0x58a8,
+ 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587, 0x6c76, 0x7d0a,
+ 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef, 0x52ff, 0x6c95, 0x7269,
+ 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c, 0x5fae, 0x672a, 0x68b6,
+ 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73, 0x7f8e, 0x8587, 0x8b0e,
+ 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6, 0x610d, 0x61ab, 0x654f,
+ 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f, 0x73c9, 0x7de1, 0x9594,
+ 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a, 0x62cd, 0x640f, 0x64b2,
+ 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e, 0x7b94, 0x7c95, 0x7e1b,
+ 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9, 0x99c1, 0x4f34, 0x534a,
+ 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500, 0x6591, 0x69c3, 0x6cee,
+ 0x6f58, 0x73ed, 0x7554, 0x7622, 0x76e4, 0x76fc, 0x78d0, 0x78fb,
+ 0x792c, 0x7d46, 0x822c, 0x87e0, 0x8fd4, 0x9812, 0x98ef, 0x52c3,
+ 0x62d4, 0x64a5, 0x6e24, 0x6f51, 0x767c, 0x8dcb, 0x91b1, 0x9262,
+ 0x9aee, 0x9b43, 0x5023, 0x508d, 0x574a, 0x59a8, 0x5c28, 0x5e47,
+ 0x5f77, 0x623f, 0x653e, 0x65b9, 0x65c1, 0x6609, 0x678b, 0x699c,
+ 0x6ec2, 0x78c5, 0x7d21, 0x80aa, 0x8180, 0x822b, 0x82b3, 0x84a1,
+ 0x868c, 0x8a2a, 0x8b17, 0x90a6, 0x9632, 0x9f90, 0x500d, 0x4ff3,
+ 0x5317, 0x57f9, 0x5f98, 0x62dc, 0x6392, 0x676f, 0x6e43, 0x7119,
+ 0x76c3, 0x80cc, 0x80da, 0x88f4, 0x88f5, 0x8919, 0x8ce0, 0x8f29,
+ 0x914d, 0x966a, 0x4f2f, 0x4f70, 0x5e1b, 0x67cf, 0x6822, 0x767d,
+ 0x767e, 0x9b44, 0x5e61, 0x6a0a, 0x7169, 0x71d4, 0x756a, 0x0000,
+ 0x7e41, 0x8543, 0x85e9, 0x98dc, 0x4f10, 0x7b4f, 0x7f70, 0x95a5,
+ 0x51e1, 0x5e06, 0x68b5, 0x6c3e, 0x6c4e, 0x6cdb, 0x72af, 0x7bc4,
+ 0x8303, 0x6cd5, 0x743a, 0x50fb, 0x5288, 0x58c1, 0x64d8, 0x6a97,
+ 0x74a7, 0x7656, 0x78a7, 0x8617, 0x95e2, 0x9739, 0x4fbf, 0x535e,
+ 0x5f01, 0x8b8a, 0x8fa8, 0x8faf, 0x908a, 0x5225, 0x77a5, 0x9c49,
+ 0x9f08, 0x4e19, 0x5002, 0x5175, 0x5c5b, 0x5e77, 0x661e, 0x663a,
+ 0x67c4, 0x68c5, 0x70b3, 0x7501, 0x75c5, 0x79c9, 0x7add, 0x8f27,
+ 0x9920, 0x9a08, 0x4fdd, 0x5821, 0x5831, 0x5bf6, 0x666e, 0x6b65,
+ 0x6d11, 0x6e7a, 0x6f7d, 0x73e4, 0x752b, 0x83e9, 0x88dc, 0x8913,
+ 0x8b5c, 0x8f14, 0x4f0f, 0x50d5, 0x5310, 0x535c, 0x5b93, 0x5fa9,
+ 0x670d, 0x798f, 0x8179, 0x832f, 0x8514, 0x8907, 0x8986, 0x8f39,
+ 0x8f3b, 0x99a5, 0x9c12, 0x672c, 0x4e76, 0x4ff8, 0x5949, 0x5c01,
+ 0x5cef, 0x5cf0, 0x6367, 0x68d2, 0x70fd, 0x71a2, 0x742b, 0x7e2b,
+ 0x84ec, 0x8702, 0x9022, 0x92d2, 0x9cf3, 0x4e0d, 0x4ed8, 0x4fef,
+ 0x5085, 0x5256, 0x526f, 0x5426, 0x5490, 0x57e0, 0x592b, 0x5a66,
+ 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0x0000, 0x6276, 0x6577, 0x65a7,
+ 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36, 0x8150, 0x8151,
+ 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0, 0x8ce6, 0x8cfb,
+ 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644, 0x99d9, 0x9ce7,
+ 0x0000, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954, 0x596e, 0x5fff,
+ 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6, 0x7c89, 0x7cde,
+ 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0x0000, 0x4f5b, 0x5f17, 0x5f7f,
+ 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43, 0x9d6c, 0x4e15,
+ 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62, 0x5e87, 0x60b2,
+ 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7, 0x6bd4, 0x6bd6,
+ 0x6bd7, 0x6bd8, 0x6cb8, 0x6ccc, 0x7435, 0x75fa, 0x7812, 0x7891,
+ 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5, 0x813e, 0x81c2,
+ 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c, 0x8cbb, 0x9119, 0x975e,
+ 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c, 0x658c, 0x6ab3, 0x6baf,
+ 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad, 0x8ca7, 0x8cd3, 0x983b,
+ 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d, 0x4e8b, 0x4e9b, 0x4ed5,
+ 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff, 0x53f2, 0x53f8, 0x5506,
+ 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11, 0x5beb, 0x5bfa, 0x5c04,
+ 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368, 0x659c, 0x65af, 0x67f6,
+ 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7, 0x6e23, 0x7009, 0x7345,
+ 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1, 0x7be9, 0x7d17, 0x7d72,
+ 0x8086, 0x820d, 0x838e, 0x84d1, 0x86c7, 0x88df, 0x8a50, 0x8a5e,
+ 0x8b1d, 0x8cdc, 0x8d66, 0x8fad, 0x90aa, 0x98fc, 0x99df, 0x9e9d,
+ 0x524a, 0x6578, 0x6714, 0x7d22, 0x5098, 0x522a, 0x5c71, 0x6563,
+ 0x6c55, 0x73ca, 0x7523, 0x759d, 0x7b97, 0x849c, 0x9178, 0x9730,
+ 0x4e77, 0x6492, 0x6bba, 0x715e, 0x85a9, 0x4e09, 0x53c3, 0x6749,
+ 0x68ee, 0x6e17, 0x829f, 0x8518, 0x886b, 0x63f7, 0x6f81, 0x9212,
+ 0x98af, 0x4e0a, 0x50b7, 0x50cf, 0x511f, 0x5546, 0x55aa, 0x5617,
+ 0x5b40, 0x5c19, 0x5ce0, 0x5e38, 0x5e8a, 0x5ea0, 0x5ec2, 0x60f3,
+ 0x6851, 0x6a61, 0x6e58, 0x723d, 0x7240, 0x72c0, 0x76f8, 0x7965,
+ 0x7bb1, 0x7fd4, 0x88f3, 0x89f4, 0x8a73, 0x8c61, 0x8cde, 0x971c,
+ 0x585e, 0x74bd, 0x8cfd, 0x55c7, 0x0000, 0x7a61, 0x0000, 0x8272,
+ 0x7272, 0x751f, 0x7525, 0x7701, 0x7b19, 0x5885, 0x58fb, 0x5dbc,
+ 0x5e8f, 0x5eb6, 0x5f90, 0x6055, 0x6292, 0x637f, 0x654d, 0x6691,
+ 0x66d9, 0x66f8, 0x6816, 0x68f2, 0x7280, 0x745e, 0x7b6e, 0x7d6e,
+ 0x7dd6, 0x7f72, 0x80e5, 0x8212, 0x85af, 0x897f, 0x8a93, 0x901d,
+ 0x92e4, 0x9ecd, 0x9f20, 0x5915, 0x596d, 0x5e2d, 0x60dc, 0x6614,
+ 0x6673, 0x6790, 0x6c50, 0x6dc5, 0x6f5f, 0x77f3, 0x78a9, 0x84c6,
+ 0x91cb, 0x932b, 0x4ed9, 0x50ca, 0x5148, 0x5584, 0x5b0b, 0x5ba3,
+ 0x6247, 0x657e, 0x65cb, 0x6e32, 0x717d, 0x7401, 0x7444, 0x7487,
+ 0x74bf, 0x766c, 0x79aa, 0x7dda, 0x7e55, 0x7fa8, 0x817a, 0x81b3,
+ 0x8239, 0x861a, 0x87ec, 0x8a75, 0x8de3, 0x9078, 0x9291, 0x9425,
+ 0x994d, 0x9bae, 0x5368, 0x5c51, 0x6954, 0x6cc4, 0x6d29, 0x6e2b,
+ 0x820c, 0x859b, 0x893b, 0x8a2d, 0x8aaa, 0x96ea, 0x9f67, 0x5261,
+ 0x66b9, 0x6bb2, 0x7e96, 0x87fe, 0x8d0d, 0x9583, 0x965d, 0x651d,
+ 0x6d89, 0x71ee, 0x8449, 0x57ce, 0x59d3, 0x5bac, 0x6027, 0x60fa,
+ 0x6210, 0x661f, 0x665f, 0x7329, 0x73f9, 0x76db, 0x0000, 0x7b6c,
+ 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16, 0x52e2, 0x6b72,
+ 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0x0000, 0x8cb0, 0x53ec, 0x562f,
+ 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240, 0x6383, 0x6414,
+ 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f, 0x70a4, 0x71d2,
+ 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0, 0x7c2b, 0x7d20,
+ 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d, 0x9061, 0x90b5,
+ 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f, 0x6d91, 0x7c9f,
+ 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd, 0x640d, 0x84c0,
+ 0x905c, 0x98e1, 0x0000, 0x5b8b, 0x609a, 0x677e, 0x6dde, 0x8a1f,
+ 0x8aa6, 0x9001, 0x980c, 0x5237, 0x0000, 0x7051, 0x788e, 0x9396,
+ 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da, 0x5782, 0x58fd,
+ 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101, 0x620d, 0x624b,
+ 0x6388, 0x641c, 0x6536, 0x0000, 0x6a39, 0x6b8a, 0x6c34, 0x6d19,
+ 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407, 0x74b2, 0x7626, 0x7761,
+ 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f, 0x7dac, 0x7e61, 0x7f9e,
+ 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea, 0x8896, 0x8ab0, 0x8b90,
+ 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296, 0x92b9, 0x968b, 0x96a7,
+ 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996, 0x9ad3, 0x9b1a, 0x53d4,
+ 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1, 0x6f5a, 0x719f, 0x7421,
+ 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87, 0x5faa, 0x6042, 0x65ec,
+ 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35, 0x6df3, 0x73e3, 0x76fe,
+ 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x821c, 0x8340, 0x84f4, 0x8563,
+ 0x8a62, 0x8ac4, 0x9187, 0x931e, 0x9806, 0x99b4, 0x620c, 0x8853,
+ 0x8ff0, 0x9265, 0x5d07, 0x5d27, 0x5d69, 0x745f, 0x819d, 0x8768,
+ 0x6fd5, 0x62fe, 0x7fd2, 0x8936, 0x8972, 0x4e1e, 0x4e58, 0x50e7,
+ 0x52dd, 0x5347, 0x627f, 0x6607, 0x7e69, 0x8805, 0x965e, 0x4f8d,
+ 0x5319, 0x5636, 0x59cb, 0x5aa4, 0x5c38, 0x5c4e, 0x5c4d, 0x5e02,
+ 0x5f11, 0x6043, 0x65bd, 0x662f, 0x6642, 0x67be, 0x67f4, 0x731c,
+ 0x77e2, 0x793a, 0x7fc5, 0x8494, 0x84cd, 0x8996, 0x8a66, 0x8a69,
+ 0x8ae1, 0x8c55, 0x8c7a, 0x57f4, 0x5bd4, 0x5f0f, 0x606f, 0x62ed,
+ 0x690d, 0x6b96, 0x6e5c, 0x7184, 0x7bd2, 0x8755, 0x8b58, 0x8efe,
+ 0x98df, 0x98fe, 0x4f38, 0x4f81, 0x4fe1, 0x547b, 0x5a20, 0x5bb8,
+ 0x613c, 0x65b0, 0x6668, 0x71fc, 0x7533, 0x795e, 0x7d33, 0x814e,
+ 0x81e3, 0x8398, 0x85aa, 0x85ce, 0x8703, 0x8a0a, 0x8eab, 0x8f9b,
+ 0x8fb0, 0x8fc5, 0x5931, 0x5ba4, 0x5be6, 0x6089, 0x5be9, 0x5c0b,
+ 0x5fc3, 0x6c81, 0x6c88, 0x6df1, 0x700b, 0x751a, 0x82af, 0x8af6,
+ 0x4ec0, 0x5341, 0x0000, 0x96d9, 0x6c0f, 0x4e9e, 0x4fc4, 0x5152,
+ 0x555e, 0x5a25, 0x5ce8, 0x6211, 0x7259, 0x82bd, 0x83aa, 0x86fe,
+ 0x8859, 0x8a1d, 0x963f, 0x96c5, 0x9913, 0x9d09, 0x9d5d, 0x580a,
+ 0x5cb3, 0x5dbd, 0x5e44, 0x60e1, 0x6115, 0x63e1, 0x0000, 0x6e25,
+ 0x9102, 0x9354, 0x984e, 0x9c10, 0x9f77, 0x5b89, 0x5cb8, 0x6309,
+ 0x664f, 0x6848, 0x773c, 0x96c1, 0x978d, 0x9854, 0x9b9f, 0x65a1,
+ 0x8b01, 0x8ecb, 0x95bc, 0x5535, 0x5ca9, 0x5dd6, 0x5eb5, 0x6697,
+ 0x764c, 0x83f4, 0x95c7, 0x58d3, 0x62bc, 0x72ce, 0x9d28, 0x4ef0,
+ 0x592e, 0x600f, 0x663b, 0x6b83, 0x79e7, 0x9d26, 0x5393, 0x54c0,
+ 0x57c3, 0x5d16, 0x611b, 0x66d6, 0x6daf, 0x788d, 0x827e, 0x9698,
+ 0x9744, 0x5384, 0x627c, 0x6396, 0x6db2, 0x7e0a, 0x814b, 0x984d,
+ 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b, 0x51b6, 0x591c,
+ 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0x82e5, 0x91ce, 0x5f31,
+ 0x0000, 0x0000, 0x7d04, 0x0000, 0x846f, 0x84bb, 0x85e5, 0x8e8d,
+ 0x0000, 0x4f6f, 0x0000, 0x0000, 0x58e4, 0x5b43, 0x6059, 0x63da,
+ 0x6518, 0x656d, 0x6698, 0x0000, 0x694a, 0x6a23, 0x6d0b, 0x7001,
+ 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0x0000, 0x7f8a, 0x0000,
+ 0x8944, 0x0000, 0x8b93, 0x91c0, 0x967d, 0x0000, 0x990a, 0x5704,
+ 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e, 0x99ad, 0x9b5a,
+ 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6, 0x5043, 0x5830,
+ 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616, 0x4ffa, 0x513c,
+ 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d, 0x5186, 0x4e88,
+ 0x4f59, 0x0000, 0x0000, 0x0000, 0x5982, 0x0000, 0x0000, 0x6b5f,
+ 0x6c5d, 0x0000, 0x74b5, 0x7916, 0x0000, 0x8207, 0x8245, 0x8339,
+ 0x8f3f, 0x8f5d, 0x0000, 0x9918, 0x0000, 0x0000, 0x0000, 0x4ea6,
+ 0x0000, 0x57df, 0x5f79, 0x6613, 0x0000, 0x0000, 0x75ab, 0x7e79,
+ 0x8b6f, 0x0000, 0x9006, 0x9a5b, 0x56a5, 0x5827, 0x59f8, 0x5a1f,
+ 0x5bb4, 0x0000, 0x5ef6, 0x0000, 0x0000, 0x6350, 0x633b, 0x0000,
+ 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93, 0x6df5, 0x6f14, 0x0000,
+ 0x70df, 0x7136, 0x7159, 0x0000, 0x71c3, 0x71d5, 0x0000, 0x784f,
+ 0x786f, 0x0000, 0x7b75, 0x7de3, 0x0000, 0x7e2f, 0x0000, 0x884d,
+ 0x8edf, 0x0000, 0x0000, 0x0000, 0x925b, 0x0000, 0x9cf6, 0x0000,
+ 0x0000, 0x54bd, 0x6085, 0x6d85, 0x0000, 0x71b1, 0x0000, 0x0000,
+ 0x95b1, 0x53ad, 0x0000, 0x0000, 0x0000, 0x67d3, 0x0000, 0x708e,
+ 0x7130, 0x7430, 0x8276, 0x82d2, 0x0000, 0x95bb, 0x9ae5, 0x9e7d,
+ 0x66c4, 0x0000, 0x71c1, 0x0000, 0x0000, 0x0000, 0x584b, 0x0000,
+ 0x0000, 0x5db8, 0x5f71, 0x0000, 0x6620, 0x668e, 0x6979, 0x69ae,
+ 0x6c38, 0x6cf3, 0x6e36, 0x6f41, 0x6fda, 0x701b, 0x702f, 0x7150,
+ 0x71df, 0x7370, 0x0000, 0x745b, 0x7469, 0x74d4, 0x76c8, 0x7a4e,
+ 0x7e93, 0x0000, 0x0000, 0x82f1, 0x8a60, 0x8fce, 0x0000, 0x9348,
+ 0x0000, 0x9719, 0x0000, 0x0000, 0x4e42, 0x502a, 0x0000, 0x5208,
+ 0x53e1, 0x66f3, 0x6c6d, 0x6fca, 0x730a, 0x777f, 0x7a62, 0x82ae,
+ 0x85dd, 0x8602, 0x0000, 0x88d4, 0x8a63, 0x8b7d, 0x8c6b, 0x0000,
+ 0x92b3, 0x0000, 0x9713, 0x9810, 0x4e94, 0x4f0d, 0x4fc9, 0x50b2,
+ 0x5348, 0x543e, 0x5433, 0x55da, 0x5862, 0x58ba, 0x5967, 0x5a1b,
+ 0x5be4, 0x609f, 0x0000, 0x61ca, 0x6556, 0x65ff, 0x6664, 0x68a7,
+ 0x6c5a, 0x6fb3, 0x70cf, 0x71ac, 0x7352, 0x7b7d, 0x8708, 0x8aa4,
+ 0x9c32, 0x9f07, 0x5c4b, 0x6c83, 0x7344, 0x7389, 0x923a, 0x6eab,
+ 0x7465, 0x761f, 0x7a69, 0x7e15, 0x860a, 0x5140, 0x58c5, 0x64c1,
+ 0x74ee, 0x7515, 0x7670, 0x7fc1, 0x9095, 0x96cd, 0x9954, 0x6e26,
+ 0x74e6, 0x7aa9, 0x7aaa, 0x81e5, 0x86d9, 0x8778, 0x8a1b, 0x5a49,
+ 0x5b8c, 0x5b9b, 0x68a1, 0x6900, 0x6d63, 0x73a9, 0x7413, 0x742c,
+ 0x7897, 0x7de9, 0x7feb, 0x8118, 0x8155, 0x839e, 0x8c4c, 0x962e,
+ 0x9811, 0x66f0, 0x5f80, 0x65fa, 0x6789, 0x6c6a, 0x738b, 0x502d,
+ 0x5a03, 0x6b6a, 0x77ee, 0x5916, 0x5d6c, 0x5dcd, 0x7325, 0x754f,
+ 0x0000, 0x0000, 0x50e5, 0x51f9, 0x582f, 0x592d, 0x5996, 0x59da,
+ 0x5be5, 0x0000, 0x0000, 0x5da2, 0x62d7, 0x6416, 0x6493, 0x64fe,
+ 0x0000, 0x66dc, 0x0000, 0x6a48, 0x0000, 0x71ff, 0x7464, 0x0000,
+ 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170, 0x0000, 0x87ef,
+ 0x8981, 0x8b20, 0x9059, 0x0000, 0x9080, 0x9952, 0x617e, 0x6b32,
+ 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad, 0x5197, 0x52c7,
+ 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995, 0x6d8c, 0x6e67,
+ 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073, 0x8338, 0x84c9,
+ 0x8e0a, 0x9394, 0x93de, 0x0000, 0x4e8e, 0x4f51, 0x5076, 0x512a,
+ 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24, 0x611a, 0x6182,
+ 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950, 0x7991, 0x79b9,
+ 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2, 0x9047, 0x90f5,
+ 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67, 0x65ed, 0x6631,
+ 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91, 0x6688, 0x6a52,
+ 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553, 0x904b, 0x9695,
+ 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90, 0x718a, 0x96c4, 0x5143,
+ 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3, 0x5a9b, 0x5ac4, 0x5bc3,
+ 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39, 0x6e72, 0x6e90, 0x7230,
+ 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45, 0x9060, 0x0000, 0x9662,
+ 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e, 0x4f4d, 0x5049, 0x50de,
+ 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09, 0x6170, 0x6690, 0x6e2d,
+ 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e, 0x8466, 0x853f, 0x875f,
+ 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb, 0x9b4f, 0x4e73, 0x4f91,
+ 0x5112, 0x516a, 0x0000, 0x552f, 0x55a9, 0x5b7a, 0x5ba5, 0x5e7c,
+ 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x6108, 0x6109, 0x63c4, 0x6538,
+ 0x6709, 0x0000, 0x67d4, 0x67da, 0x0000, 0x6961, 0x6962, 0x6cb9,
+ 0x6d27, 0x0000, 0x6e38, 0x0000, 0x6fe1, 0x7336, 0x7337, 0x0000,
+ 0x745c, 0x7531, 0x0000, 0x7652, 0x0000, 0x0000, 0x7dad, 0x81fe,
+ 0x8438, 0x88d5, 0x8a98, 0x8adb, 0x8aed, 0x8e30, 0x8e42, 0x904a,
+ 0x903e, 0x907a, 0x9149, 0x91c9, 0x936e, 0x0000, 0x0000, 0x5809,
+ 0x0000, 0x6bd3, 0x8089, 0x80b2, 0x0000, 0x0000, 0x5141, 0x596b,
+ 0x5c39, 0x0000, 0x0000, 0x6f64, 0x73a7, 0x80e4, 0x8d07, 0x0000,
+ 0x9217, 0x958f, 0x0000, 0x0000, 0x0000, 0x0000, 0x807f, 0x620e,
+ 0x701c, 0x7d68, 0x878d, 0x0000, 0x57a0, 0x6069, 0x6147, 0x6bb7,
+ 0x8abe, 0x9280, 0x96b1, 0x4e59, 0x541f, 0x6deb, 0x852d, 0x9670,
+ 0x97f3, 0x98ee, 0x63d6, 0x6ce3, 0x9091, 0x51dd, 0x61c9, 0x81ba,
+ 0x9df9, 0x4f9d, 0x501a, 0x5100, 0x5b9c, 0x610f, 0x61ff, 0x64ec,
+ 0x6905, 0x6bc5, 0x7591, 0x77e3, 0x7fa9, 0x8264, 0x858f, 0x87fb,
+ 0x8863, 0x8abc, 0x8b70, 0x91ab, 0x4e8c, 0x4ee5, 0x4f0a, 0x0000,
+ 0x0000, 0x5937, 0x59e8, 0x0000, 0x5df2, 0x5f1b, 0x5f5b, 0x6021,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x723e, 0x73e5, 0x0000, 0x0000,
+ 0x75cd, 0x0000, 0x79fb, 0x0000, 0x800c, 0x8033, 0x8084, 0x82e1,
+ 0x8351, 0x0000, 0x0000, 0x8cbd, 0x8cb3, 0x9087, 0x0000, 0x0000,
+ 0x98f4, 0x990c, 0x0000, 0x0000, 0x7037, 0x76ca, 0x7fca, 0x7fcc,
+ 0x7ffc, 0x8b1a, 0x4eba, 0x4ec1, 0x5203, 0x5370, 0x0000, 0x0000,
+ 0x56e0, 0x59fb, 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e, 0x0000, 0x0000,
+ 0x7d6a, 0x8335, 0x0000, 0x8693, 0x8a8d, 0x0000, 0x976d, 0x9777,
+ 0x0000, 0x0000, 0x4e00, 0x4f5a, 0x4f7e, 0x58f9, 0x65e5, 0x6ea2,
+ 0x9038, 0x93b0, 0x99b9, 0x4efb, 0x58ec, 0x598a, 0x59d9, 0x6041,
+ 0x0000, 0x0000, 0x7a14, 0x0000, 0x834f, 0x8cc3, 0x5165, 0x5344,
+ 0x0000, 0x0000, 0x0000, 0x4ecd, 0x5269, 0x5b55, 0x82bf, 0x4ed4,
+ 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57, 0x5b5c, 0x6063,
+ 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7, 0x75b5, 0x78c1,
+ 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9, 0x8aee, 0x8cc7,
+ 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628, 0x707c, 0x70b8,
+ 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72, 0x5b71, 0x68e7,
+ 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b, 0x7bb4, 0x7c2a,
+ 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834, 0x58bb, 0x58ef,
+ 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c, 0x66b2, 0x6756,
+ 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0x0000, 0x7350, 0x748b,
+ 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a, 0x846c, 0x8523,
+ 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577, 0x969c, 0x518d,
+ 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750, 0x683d, 0x6893, 0x6e3d,
+ 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1, 0x8f09, 0x9f4b, 0x9f4e,
+ 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47, 0x4f4e, 0x5132, 0x5480,
+ 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e, 0x6a17, 0x6cae, 0x6e1a,
+ 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35, 0x82e7, 0x83f9, 0x8457,
+ 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019, 0x90b8, 0x96ce, 0x9f5f,
+ 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458, 0x6575, 0x6ef4, 0x72c4,
+ 0x0000, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d, 0x7e3e, 0x7fdf, 0x837b,
+ 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f, 0x8fea, 0x8ff9, 0x9069,
+ 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x5168, 0x5178, 0x524d, 0x526a,
+ 0x5861, 0x587c, 0x5960, 0x5c08, 0x5c55, 0x5edb, 0x609b, 0x6230,
+ 0x6813, 0x6bbf, 0x6c08, 0x6fb1, 0x714e, 0x7420, 0x7530, 0x7538,
+ 0x7551, 0x7672, 0x7b4c, 0x7b8b, 0x7bad, 0x7bc6, 0x7e8f, 0x8a6e,
+ 0x8f3e, 0x8f49, 0x923f, 0x9293, 0x9322, 0x942b, 0x96fb, 0x985a,
+ 0x986b, 0x991e, 0x5207, 0x622a, 0x6298, 0x6d59, 0x7664, 0x7aca,
+ 0x7bc0, 0x7d76, 0x5360, 0x5cbe, 0x5e97, 0x6f38, 0x70b9, 0x7c98,
+ 0x9711, 0x9b8e, 0x9ede, 0x63a5, 0x647a, 0x8776, 0x4e01, 0x4e95,
+ 0x4ead, 0x505c, 0x5075, 0x5448, 0x59c3, 0x5b9a, 0x5e40, 0x5ead,
+ 0x5ef7, 0x5f81, 0x60c5, 0x633a, 0x653f, 0x6574, 0x65cc, 0x6676,
+ 0x6678, 0x67fe, 0x6968, 0x6a89, 0x6b63, 0x6c40, 0x6dc0, 0x6de8,
+ 0x6e1f, 0x6e5e, 0x701e, 0x70a1, 0x738e, 0x73fd, 0x753a, 0x775b,
+ 0x7887, 0x798e, 0x7a0b, 0x7a7d, 0x7cbe, 0x7d8e, 0x8247, 0x8a02,
+ 0x8aea, 0x8c9e, 0x912d, 0x914a, 0x91d8, 0x9266, 0x92cc, 0x9320,
+ 0x9706, 0x9756, 0x975c, 0x9802, 0x9f0e, 0x5236, 0x5291, 0x557c,
+ 0x5824, 0x5e1d, 0x5f1f, 0x608c, 0x63d0, 0x68af, 0x6fdf, 0x796d,
+ 0x7b2c, 0x81cd, 0x85ba, 0x88fd, 0x8af8, 0x8e44, 0x918d, 0x9664,
+ 0x969b, 0x973d, 0x984c, 0x9f4a, 0x4fce, 0x5146, 0x51cb, 0x52a9,
+ 0x5632, 0x5f14, 0x5f6b, 0x63aa, 0x64cd, 0x65e9, 0x6641, 0x66fa,
+ 0x66f9, 0x671d, 0x689d, 0x68d7, 0x69fd, 0x6f15, 0x6f6e, 0x7167,
+ 0x71e5, 0x722a, 0x74aa, 0x773a, 0x7956, 0x795a, 0x79df, 0x7a20,
+ 0x7a95, 0x7c97, 0x7cdf, 0x7d44, 0x7e70, 0x8087, 0x85fb, 0x86a4,
+ 0x8a54, 0x8abf, 0x8d99, 0x8e81, 0x9020, 0x906d, 0x91e3, 0x963b,
+ 0x96d5, 0x9ce5, 0x65cf, 0x7c07, 0x8db3, 0x93c3, 0x5b58, 0x5c0a,
+ 0x5352, 0x62d9, 0x731d, 0x5027, 0x5b97, 0x5f9e, 0x60b0, 0x616b,
+ 0x68d5, 0x6dd9, 0x742e, 0x7a2e, 0x7d42, 0x7d9c, 0x7e31, 0x816b,
+ 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750, 0x5de6, 0x5ea7,
+ 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a, 0x59dd, 0x80c4,
+ 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde, 0x5eda, 0x665d,
+ 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a, 0x6f8d, 0x70b7,
+ 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2, 0x821f, 0x86db,
+ 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031, 0x914e, 0x9152,
+ 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101, 0x51c6, 0x57c8,
+ 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96, 0x6fec, 0x710c,
+ 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb, 0x99ff, 0x8301,
+ 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb, 0x696b, 0x6c41,
+ 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd, 0x7511, 0x75c7,
+ 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea, 0x54ab, 0x5730,
+ 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f, 0x652f, 0x65e8, 0x667a,
+ 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a, 0x6f2c, 0x77e5, 0x7825,
+ 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102, 0x81f3, 0x829d, 0x82b7,
+ 0x8718, 0x8a8c, 0x0000, 0x8d04, 0x8dbe, 0x9072, 0x76f4, 0x7a19,
+ 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4, 0x5875, 0x632f, 0x6422,
+ 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84, 0x6d25, 0x6eb1, 0x73cd,
+ 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1, 0x771e, 0x778b, 0x79e6,
+ 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897, 0x8a3a, 0x8cd1, 0x8eeb,
+ 0x0000, 0x9032, 0x93ad, 0x9663, 0x9673, 0x9707, 0x4f84, 0x53f1,
+ 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x74c6, 0x75be, 0x79e9, 0x7a92,
+ 0x81a3, 0x86ed, 0x8cea, 0x8dcc, 0x8fed, 0x659f, 0x6715, 0x0000,
+ 0x57f7, 0x6f57, 0x7ddd, 0x8f2f, 0x93f6, 0x96c6, 0x5fb5, 0x61f2,
+ 0x6f84, 0x4e14, 0x4f98, 0x501f, 0x53c9, 0x55df, 0x5d6f, 0x5dee,
+ 0x6b21, 0x6b64, 0x78cb, 0x7b9a, 0x0000, 0x8e49, 0x8eca, 0x906e,
+ 0x6349, 0x643e, 0x7740, 0x7a84, 0x932f, 0x947f, 0x9f6a, 0x64b0,
+ 0x6faf, 0x71e6, 0x74a8, 0x74da, 0x7ac4, 0x7c12, 0x7e82, 0x7cb2,
+ 0x7e98, 0x8b9a, 0x8d0a, 0x947d, 0x9910, 0x994c, 0x5239, 0x5bdf,
+ 0x64e6, 0x672d, 0x7d2e, 0x50ed, 0x0000, 0x5879, 0x6158, 0x6159,
+ 0x61fa, 0x65ac, 0x7ad9, 0x8b92, 0x8b96, 0x5009, 0x5021, 0x5275,
+ 0x5531, 0x5a3c, 0x5ee0, 0x5f70, 0x6134, 0x655e, 0x660c, 0x6636,
+ 0x66a2, 0x69cd, 0x6ec4, 0x6f32, 0x7316, 0x7621, 0x7a93, 0x8139,
+ 0x8259, 0x83d6, 0x84bc, 0x50b5, 0x57f0, 0x5bc0, 0x5be8, 0x5f69,
+ 0x63a1, 0x7826, 0x7db5, 0x83dc, 0x8521, 0x91c7, 0x91f5, 0x518a,
+ 0x67f5, 0x7b56, 0x8cac, 0x51c4, 0x59bb, 0x60bd, 0x8655, 0x501c,
+ 0x0000, 0x5254, 0x5c3a, 0x617d, 0x621a, 0x62d3, 0x64f2, 0x65a5,
+ 0x6ecc, 0x7620, 0x810a, 0x8e60, 0x965f, 0x96bb, 0x4edf, 0x5343,
+ 0x5598, 0x5929, 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa, 0x7394, 0x7a7f,
+ 0x821b, 0x85a6, 0x8ce4, 0x8e10, 0x9077, 0x91e7, 0x95e1, 0x9621,
+ 0x97c6, 0x51f8, 0x54f2, 0x5586, 0x5fb9, 0x64a4, 0x6f88, 0x7db4,
+ 0x8f1f, 0x8f4d, 0x9435, 0x50c9, 0x5c16, 0x6cbe, 0x6dfb, 0x751b,
+ 0x77bb, 0x7c3d, 0x7c64, 0x8a79, 0x8ac2, 0x581e, 0x59be, 0x5e16,
+ 0x6377, 0x7252, 0x758a, 0x776b, 0x8adc, 0x8cbc, 0x8f12, 0x5ef3,
+ 0x6674, 0x6df8, 0x807d, 0x83c1, 0x8acb, 0x9751, 0x9bd6, 0x0000,
+ 0x5243, 0x66ff, 0x6d95, 0x6eef, 0x7de0, 0x8ae6, 0x902e, 0x905e,
+ 0x9ad4, 0x521d, 0x527f, 0x54e8, 0x6194, 0x6284, 0x62db, 0x68a2,
+ 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d, 0x7901, 0x790e,
+ 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349, 0x8549, 0x8c82,
+ 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1, 0x71ed, 0x77d7,
+ 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8, 0x53e2, 0x585a,
+ 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070, 0x8525, 0x9283,
+ 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd, 0x63a8, 0x690e,
+ 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb, 0x8429, 0x8acf,
+ 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310, 0x9318, 0x939a,
+ 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d, 0x7afa, 0x7b51,
+ 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8, 0x9010, 0x6625,
+ 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145, 0x5fe0, 0x6c96,
+ 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403, 0x8d05, 0x53d6,
+ 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a, 0x7fe0, 0x805a, 0x8106,
+ 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2, 0x5074, 0x4ec4, 0x53a0,
+ 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024, 0x55e4, 0x5cd9, 0x5e5f,
+ 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be, 0x75d4, 0x75f4, 0x7661,
+ 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e, 0x81f4, 0x86a9, 0x8f1c,
+ 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5, 0x98ed, 0x89aa, 0x4e03,
+ 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795, 0x0000, 0x6d78, 0x741b,
+ 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4, 0x7a31, 0x5feb, 0x4ed6,
+ 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0, 0x6253, 0x62d6, 0x6736,
+ 0x6955, 0x8235, 0x9640, 0x99b1, 0x99dd, 0x502c, 0x5353, 0x5544,
+ 0x577c, 0x0000, 0x6258, 0x0000, 0x64e2, 0x666b, 0x67dd, 0x6fc1,
+ 0x6fef, 0x7422, 0x7438, 0x8a17, 0x9438, 0x5451, 0x5606, 0x5766,
+ 0x5f48, 0x619a, 0x6b4e, 0x7058, 0x70ad, 0x7dbb, 0x8a95, 0x596a,
+ 0x812b, 0x63a2, 0x7708, 0x803d, 0x8caa, 0x5854, 0x642d, 0x69bb,
+ 0x5b95, 0x5e11, 0x6e6f, 0x0000, 0x8569, 0x514c, 0x53f0, 0x592a,
+ 0x6020, 0x614b, 0x6b86, 0x6c70, 0x6cf0, 0x7b1e, 0x80ce, 0x82d4,
+ 0x8dc6, 0x90b0, 0x98b1, 0x0000, 0x64c7, 0x6fa4, 0x6491, 0x6504,
+ 0x514e, 0x5410, 0x571f, 0x8a0e, 0x615f, 0x6876, 0x0000, 0x75db,
+ 0x7b52, 0x7d71, 0x901a, 0x5806, 0x69cc, 0x817f, 0x892a, 0x9000,
+ 0x9839, 0x5078, 0x5957, 0x59ac, 0x6295, 0x900f, 0x9b2a, 0x615d,
+ 0x7279, 0x95d6, 0x5761, 0x5a46, 0x5df4, 0x628a, 0x64ad, 0x64fa,
+ 0x6777, 0x6ce2, 0x6d3e, 0x722c, 0x7436, 0x7834, 0x7f77, 0x82ad,
+ 0x8ddb, 0x9817, 0x5224, 0x5742, 0x677f, 0x7248, 0x74e3, 0x8ca9,
+ 0x8fa6, 0x9211, 0x962a, 0x516b, 0x53ed, 0x634c, 0x4f69, 0x5504,
+ 0x6096, 0x6557, 0x6c9b, 0x6d7f, 0x724c, 0x72fd, 0x7a17, 0x8987,
+ 0x8c9d, 0x5f6d, 0x6f8e, 0x70f9, 0x81a8, 0x610e, 0x0000, 0x504f,
+ 0x6241, 0x7247, 0x7bc7, 0x7de8, 0x7fe9, 0x904d, 0x97ad, 0x9a19,
+ 0x8cb6, 0x576a, 0x5e73, 0x67b0, 0x840d, 0x8a55, 0x5420, 0x5b16,
+ 0x5e63, 0x5ee2, 0x5f0a, 0x6583, 0x80ba, 0x853d, 0x9589, 0x965b,
+ 0x4f48, 0x5305, 0x530d, 0x530f, 0x5486, 0x54fa, 0x5703, 0x5e03,
+ 0x6016, 0x629b, 0x62b1, 0x6355, 0x66b4, 0x6ce1, 0x6d66, 0x75b1,
+ 0x7832, 0x80de, 0x812f, 0x82de, 0x8461, 0x84b2, 0x888d, 0x8912,
+ 0x900b, 0x92ea, 0x98fd, 0x9b91, 0x5e45, 0x0000, 0x66dd, 0x7011,
+ 0x7206, 0x0000, 0x4ff5, 0x527d, 0x5f6a, 0x6153, 0x6753, 0x6a19,
+ 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8c79, 0x98c7, 0x98c4, 0x9a43,
+ 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8, 0x99ae, 0x5f7c,
+ 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642, 0x5339, 0x5f3c,
+ 0x5fc5, 0x0000, 0x73cc, 0x7562, 0x758b, 0x7b46, 0x82fe, 0x999d,
+ 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f, 0x5ec8, 0x6630,
+ 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050, 0x971e, 0x9c15,
+ 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2, 0x6068, 0x608d,
+ 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55, 0x7ff0, 0x9591,
+ 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd, 0x542b, 0x54b8,
+ 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266, 0x929c, 0x9677,
+ 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4, 0x95d4, 0x965c,
+ 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052, 0x6297, 0x676d,
+ 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a, 0x884c, 0x964d,
+ 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793, 0x595a, 0x5b69, 0x5bb3,
+ 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9, 0x89e3, 0x8a72, 0x8ae7,
+ 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838, 0x5016, 0x5e78, 0x674f,
+ 0x8347, 0x0000, 0x4eab, 0x5411, 0x56ae, 0x73e6, 0x9115, 0x97ff,
+ 0x9909, 0x9957, 0x9999, 0x5653, 0x589f, 0x865b, 0x8a31, 0x61b2,
+ 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa, 0x9a57, 0x5955, 0x7200,
+ 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26, 0x61f8, 0x665b, 0x6ceb,
+ 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729, 0x774d, 0x7d43, 0x7d62,
+ 0x7e23, 0x8237, 0x8852, 0x898b, 0x8ce2, 0x9249, 0x986f, 0x5b51,
+ 0x7a74, 0x8840, 0x9801, 0x5acc, 0x4fe0, 0x5354, 0x593e, 0x5cfd,
+ 0x633e, 0x6d79, 0x72f9, 0x8105, 0x8107, 0x83a2, 0x92cf, 0x9830,
+ 0x4ea8, 0x5144, 0x5211, 0x578b, 0x5f62, 0x6cc2, 0x6ece, 0x7005,
+ 0x7050, 0x70af, 0x7192, 0x73e9, 0x0000, 0x834a, 0x87a2, 0x8861,
+ 0x9008, 0x90a2, 0x93a3, 0x99a8, 0x516e, 0x5f57, 0x60e0, 0x6167,
+ 0x66b3, 0x8559, 0x8e4a, 0x91af, 0x978b, 0x4e4e, 0x4e92, 0x547c,
+ 0x58d5, 0x58fa, 0x597d, 0x5cb5, 0x5f27, 0x6236, 0x6248, 0x660a,
+ 0x6667, 0x6beb, 0x6d69, 0x6dcf, 0x6e56, 0x6ef8, 0x6f94, 0x6fe0,
+ 0x6fe9, 0x705d, 0x72d0, 0x7425, 0x745a, 0x74e0, 0x7693, 0x795c,
+ 0x7cca, 0x7e1e, 0x80e1, 0x82a6, 0x846b, 0x84bf, 0x864e, 0x865f,
+ 0x8774, 0x8b77, 0x8c6a, 0x93ac, 0x9800, 0x9865, 0x60d1, 0x6216,
+ 0x9177, 0x5a5a, 0x660f, 0x6df7, 0x6e3e, 0x743f, 0x9b42, 0x5ffd,
+ 0x60da, 0x7b0f, 0x54c4, 0x5f18, 0x6c5e, 0x6cd3, 0x6d2a, 0x70d8,
+ 0x7d05, 0x8679, 0x8a0c, 0x9d3b, 0x5316, 0x548c, 0x5b05, 0x6a3a,
+ 0x706b, 0x7575, 0x798d, 0x79be, 0x82b1, 0x83ef, 0x8a71, 0x8b41,
+ 0x8ca8, 0x9774, 0x0000, 0x64f4, 0x652b, 0x78ba, 0x78bb, 0x7a6b,
+ 0x4e38, 0x559a, 0x5950, 0x5ba6, 0x5e7b, 0x60a3, 0x63db, 0x6b61,
+ 0x6665, 0x6853, 0x6e19, 0x7165, 0x74b0, 0x7d08, 0x9084, 0x9a69,
+ 0x9c25, 0x6d3b, 0x6ed1, 0x733e, 0x8c41, 0x95ca, 0x51f0, 0x5e4c,
+ 0x5fa8, 0x604d, 0x60f6, 0x6130, 0x614c, 0x6643, 0x6644, 0x69a5,
+ 0x6cc1, 0x6e5f, 0x6ec9, 0x6f62, 0x714c, 0x749c, 0x7687, 0x7bc1,
+ 0x7c27, 0x8352, 0x8757, 0x9051, 0x968d, 0x9ec3, 0x532f, 0x56de,
+ 0x5efb, 0x5f8a, 0x6062, 0x6094, 0x61f7, 0x6666, 0x6703, 0x6a9c,
+ 0x6dee, 0x6fae, 0x7070, 0x736a, 0x7e6a, 0x81be, 0x8334, 0x86d4,
+ 0x8aa8, 0x8cc4, 0x5283, 0x7372, 0x5b96, 0x6a6b, 0x9404, 0x54ee,
+ 0x5686, 0x5b5d, 0x6548, 0x6585, 0x66c9, 0x689f, 0x6d8d, 0x6dc6,
+ 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019, 0x539a, 0x540e,
+ 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d, 0x7166, 0x73dd,
+ 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104, 0x718f, 0x71fb,
+ 0x85b0, 0x8a13, 0x0000, 0x85a8, 0x55a7, 0x6684, 0x714a, 0x8431,
+ 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee, 0x6689, 0x7147,
+ 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb, 0x7566, 0x8667,
+ 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308, 0x6d36, 0x80f8,
+ 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403, 0x5c79, 0x7d07,
+ 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070, 0x6d3d, 0x7fd5,
+ 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd, 0x59ec, 0x5b09,
+ 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6, 0x7199, 0x71b9,
+ 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffffffff,
+ 0xffffffff, 0xffffffff, 0x0000, 0x0000, 0x79d4, 0x0004, 0x2288, 0x804f240
+};
+
+
+const unichar_t unicode_from_johab[] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136,
+ 0x3137, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f,
+ 0x3140, 0x3141, 0x0000, 0x3142, 0x3144, 0x3145, 0x3146, 0x3147,
+ 0x3148, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x0000, 0x0000,
+ 0x0000, 0x314f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3150, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3151, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3152, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3153, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3154, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3155, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3156, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3157, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3158, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3159, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x315a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x315b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x315c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x315d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x315e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x315f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3160, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3161, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3162, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3163, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xac00, 0xac01, 0xac02, 0xac03, 0xac04, 0xac05, 0xac06,
+ 0xac07, 0xac08, 0xac09, 0xac0a, 0xac0b, 0xac0c, 0xac0d, 0xac0e,
+ 0xac0f, 0xac10, 0x0000, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15,
+ 0xac16, 0xac17, 0xac18, 0xac19, 0xac1a, 0xac1b, 0x0000, 0x0000,
+ 0x0000, 0xac1c, 0xac1d, 0xac1e, 0xac1f, 0xac20, 0xac21, 0xac22,
+ 0xac23, 0xac24, 0xac25, 0xac26, 0xac27, 0xac28, 0xac29, 0xac2a,
+ 0xac2b, 0xac2c, 0x0000, 0xac2d, 0xac2e, 0xac2f, 0xac30, 0xac31,
+ 0xac32, 0xac33, 0xac34, 0xac35, 0xac36, 0xac37, 0x0000, 0x0000,
+ 0x0000, 0xac38, 0xac39, 0xac3a, 0xac3b, 0xac3c, 0xac3d, 0xac3e,
+ 0xac3f, 0xac40, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46,
+ 0xac47, 0xac48, 0x0000, 0xac49, 0xac4a, 0xac4b, 0xac4c, 0xac4d,
+ 0xac4e, 0xac4f, 0xac50, 0xac51, 0xac52, 0xac53, 0x0000, 0x0000,
+ 0x0000, 0xac54, 0xac55, 0xac56, 0xac57, 0xac58, 0xac59, 0xac5a,
+ 0xac5b, 0xac5c, 0xac5d, 0xac5e, 0xac5f, 0xac60, 0xac61, 0xac62,
+ 0xac63, 0xac64, 0x0000, 0xac65, 0xac66, 0xac67, 0xac68, 0xac69,
+ 0xac6a, 0xac6b, 0xac6c, 0xac6d, 0xac6e, 0xac6f, 0x0000, 0x0000,
+ 0x0000, 0xac70, 0xac71, 0xac72, 0xac73, 0xac74, 0xac75, 0xac76,
+ 0xac77, 0xac78, 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e,
+ 0xac7f, 0xac80, 0x0000, 0xac81, 0xac82, 0xac83, 0xac84, 0xac85,
+ 0xac86, 0xac87, 0xac88, 0xac89, 0xac8a, 0xac8b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, 0xac91, 0xac92,
+ 0xac93, 0xac94, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99, 0xac9a,
+ 0xac9b, 0xac9c, 0x0000, 0xac9d, 0xac9e, 0xac9f, 0xaca0, 0xaca1,
+ 0xaca2, 0xaca3, 0xaca4, 0xaca5, 0xaca6, 0xaca7, 0x0000, 0x0000,
+ 0x0000, 0xaca8, 0xaca9, 0xacaa, 0xacab, 0xacac, 0xacad, 0xacae,
+ 0xacaf, 0xacb0, 0xacb1, 0xacb2, 0xacb3, 0xacb4, 0xacb5, 0xacb6,
+ 0xacb7, 0xacb8, 0x0000, 0xacb9, 0xacba, 0xacbb, 0xacbc, 0xacbd,
+ 0xacbe, 0xacbf, 0xacc0, 0xacc1, 0xacc2, 0xacc3, 0x0000, 0x0000,
+ 0x0000, 0xacc4, 0xacc5, 0xacc6, 0xacc7, 0xacc8, 0xacc9, 0xacca,
+ 0xaccb, 0xaccc, 0xaccd, 0xacce, 0xaccf, 0xacd0, 0xacd1, 0xacd2,
+ 0xacd3, 0xacd4, 0x0000, 0xacd5, 0xacd6, 0xacd7, 0xacd8, 0xacd9,
+ 0xacda, 0xacdb, 0xacdc, 0xacdd, 0xacde, 0xacdf, 0x0000, 0x0000,
+ 0x0000, 0xace0, 0xace1, 0xace2, 0xace3, 0xace4, 0xace5, 0xace6,
+ 0xace7, 0xace8, 0xace9, 0xacea, 0xaceb, 0xacec, 0xaced, 0xacee,
+ 0xacef, 0xacf0, 0x0000, 0xacf1, 0xacf2, 0xacf3, 0xacf4, 0xacf5,
+ 0xacf6, 0xacf7, 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0x0000, 0x0000,
+ 0x0000, 0xacfc, 0xacfd, 0xacfe, 0xacff, 0xad00, 0xad01, 0xad02,
+ 0xad03, 0xad04, 0xad05, 0xad06, 0xad07, 0xad08, 0xad09, 0xad0a,
+ 0xad0b, 0xad0c, 0x0000, 0xad0d, 0xad0e, 0xad0f, 0xad10, 0xad11,
+ 0xad12, 0xad13, 0xad14, 0xad15, 0xad16, 0xad17, 0x0000, 0x0000,
+ 0x0000, 0xad18, 0xad19, 0xad1a, 0xad1b, 0xad1c, 0xad1d, 0xad1e,
+ 0xad1f, 0xad20, 0xad21, 0xad22, 0xad23, 0xad24, 0xad25, 0xad26,
+ 0xad27, 0xad28, 0x0000, 0xad29, 0xad2a, 0xad2b, 0xad2c, 0xad2d,
+ 0xad2e, 0xad2f, 0xad30, 0xad31, 0xad32, 0xad33, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xad34, 0xad35, 0xad36, 0xad37, 0xad38, 0xad39, 0xad3a,
+ 0xad3b, 0xad3c, 0xad3d, 0xad3e, 0xad3f, 0xad40, 0xad41, 0xad42,
+ 0xad43, 0xad44, 0x0000, 0xad45, 0xad46, 0xad47, 0xad48, 0xad49,
+ 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0x0000, 0x0000,
+ 0x0000, 0xad50, 0xad51, 0xad52, 0xad53, 0xad54, 0xad55, 0xad56,
+ 0xad57, 0xad58, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e,
+ 0xad5f, 0xad60, 0x0000, 0xad61, 0xad62, 0xad63, 0xad64, 0xad65,
+ 0xad66, 0xad67, 0xad68, 0xad69, 0xad6a, 0xad6b, 0x0000, 0x0000,
+ 0x0000, 0xad6c, 0xad6d, 0xad6e, 0xad6f, 0xad70, 0xad71, 0xad72,
+ 0xad73, 0xad74, 0xad75, 0xad76, 0xad77, 0xad78, 0xad79, 0xad7a,
+ 0xad7b, 0xad7c, 0x0000, 0xad7d, 0xad7e, 0xad7f, 0xad80, 0xad81,
+ 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, 0x0000, 0x0000,
+ 0x0000, 0xad88, 0xad89, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e,
+ 0xad8f, 0xad90, 0xad91, 0xad92, 0xad93, 0xad94, 0xad95, 0xad96,
+ 0xad97, 0xad98, 0x0000, 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d,
+ 0xad9e, 0xad9f, 0xada0, 0xada1, 0xada2, 0xada3, 0x0000, 0x0000,
+ 0x0000, 0xada4, 0xada5, 0xada6, 0xada7, 0xada8, 0xada9, 0xadaa,
+ 0xadab, 0xadac, 0xadad, 0xadae, 0xadaf, 0xadb0, 0xadb1, 0xadb2,
+ 0xadb3, 0xadb4, 0x0000, 0xadb5, 0xadb6, 0xadb7, 0xadb8, 0xadb9,
+ 0xadba, 0xadbb, 0xadbc, 0xadbd, 0xadbe, 0xadbf, 0x0000, 0x0000,
+ 0x0000, 0xadc0, 0xadc1, 0xadc2, 0xadc3, 0xadc4, 0xadc5, 0xadc6,
+ 0xadc7, 0xadc8, 0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce,
+ 0xadcf, 0xadd0, 0x0000, 0xadd1, 0xadd2, 0xadd3, 0xadd4, 0xadd5,
+ 0xadd6, 0xadd7, 0xadd8, 0xadd9, 0xadda, 0xaddb, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xaddc, 0xaddd, 0xadde, 0xaddf, 0xade0, 0xade1, 0xade2,
+ 0xade3, 0xade4, 0xade5, 0xade6, 0xade7, 0xade8, 0xade9, 0xadea,
+ 0xadeb, 0xadec, 0x0000, 0xaded, 0xadee, 0xadef, 0xadf0, 0xadf1,
+ 0xadf2, 0xadf3, 0xadf4, 0xadf5, 0xadf6, 0xadf7, 0x0000, 0x0000,
+ 0x0000, 0xadf8, 0xadf9, 0xadfa, 0xadfb, 0xadfc, 0xadfd, 0xadfe,
+ 0xadff, 0xae00, 0xae01, 0xae02, 0xae03, 0xae04, 0xae05, 0xae06,
+ 0xae07, 0xae08, 0x0000, 0xae09, 0xae0a, 0xae0b, 0xae0c, 0xae0d,
+ 0xae0e, 0xae0f, 0xae10, 0xae11, 0xae12, 0xae13, 0x0000, 0x0000,
+ 0x0000, 0xae14, 0xae15, 0xae16, 0xae17, 0xae18, 0xae19, 0xae1a,
+ 0xae1b, 0xae1c, 0xae1d, 0xae1e, 0xae1f, 0xae20, 0xae21, 0xae22,
+ 0xae23, 0xae24, 0x0000, 0xae25, 0xae26, 0xae27, 0xae28, 0xae29,
+ 0xae2a, 0xae2b, 0xae2c, 0xae2d, 0xae2e, 0xae2f, 0x0000, 0x0000,
+ 0x0000, 0xae30, 0xae31, 0xae32, 0xae33, 0xae34, 0xae35, 0xae36,
+ 0xae37, 0xae38, 0xae39, 0xae3a, 0xae3b, 0xae3c, 0xae3d, 0xae3e,
+ 0xae3f, 0xae40, 0x0000, 0xae41, 0xae42, 0xae43, 0xae44, 0xae45,
+ 0xae46, 0xae47, 0xae48, 0xae49, 0xae4a, 0xae4b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xae4c, 0xae4d, 0xae4e, 0xae4f, 0xae50, 0xae51, 0xae52,
+ 0xae53, 0xae54, 0xae55, 0xae56, 0xae57, 0xae58, 0xae59, 0xae5a,
+ 0xae5b, 0xae5c, 0x0000, 0xae5d, 0xae5e, 0xae5f, 0xae60, 0xae61,
+ 0xae62, 0xae63, 0xae64, 0xae65, 0xae66, 0xae67, 0x0000, 0x0000,
+ 0x0000, 0xae68, 0xae69, 0xae6a, 0xae6b, 0xae6c, 0xae6d, 0xae6e,
+ 0xae6f, 0xae70, 0xae71, 0xae72, 0xae73, 0xae74, 0xae75, 0xae76,
+ 0xae77, 0xae78, 0x0000, 0xae79, 0xae7a, 0xae7b, 0xae7c, 0xae7d,
+ 0xae7e, 0xae7f, 0xae80, 0xae81, 0xae82, 0xae83, 0x0000, 0x0000,
+ 0x0000, 0xae84, 0xae85, 0xae86, 0xae87, 0xae88, 0xae89, 0xae8a,
+ 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, 0xae90, 0xae91, 0xae92,
+ 0xae93, 0xae94, 0x0000, 0xae95, 0xae96, 0xae97, 0xae98, 0xae99,
+ 0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xae9e, 0xae9f, 0x0000, 0x0000,
+ 0x0000, 0xaea0, 0xaea1, 0xaea2, 0xaea3, 0xaea4, 0xaea5, 0xaea6,
+ 0xaea7, 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac, 0xaead, 0xaeae,
+ 0xaeaf, 0xaeb0, 0x0000, 0xaeb1, 0xaeb2, 0xaeb3, 0xaeb4, 0xaeb5,
+ 0xaeb6, 0xaeb7, 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0x0000, 0x0000,
+ 0x0000, 0xaebc, 0xaebd, 0xaebe, 0xaebf, 0xaec0, 0xaec1, 0xaec2,
+ 0xaec3, 0xaec4, 0xaec5, 0xaec6, 0xaec7, 0xaec8, 0xaec9, 0xaeca,
+ 0xaecb, 0xaecc, 0x0000, 0xaecd, 0xaece, 0xaecf, 0xaed0, 0xaed1,
+ 0xaed2, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xaed8, 0xaed9, 0xaeda, 0xaedb, 0xaedc, 0xaedd, 0xaede,
+ 0xaedf, 0xaee0, 0xaee1, 0xaee2, 0xaee3, 0xaee4, 0xaee5, 0xaee6,
+ 0xaee7, 0xaee8, 0x0000, 0xaee9, 0xaeea, 0xaeeb, 0xaeec, 0xaeed,
+ 0xaeee, 0xaeef, 0xaef0, 0xaef1, 0xaef2, 0xaef3, 0x0000, 0x0000,
+ 0x0000, 0xaef4, 0xaef5, 0xaef6, 0xaef7, 0xaef8, 0xaef9, 0xaefa,
+ 0xaefb, 0xaefc, 0xaefd, 0xaefe, 0xaeff, 0xaf00, 0xaf01, 0xaf02,
+ 0xaf03, 0xaf04, 0x0000, 0xaf05, 0xaf06, 0xaf07, 0xaf08, 0xaf09,
+ 0xaf0a, 0xaf0b, 0xaf0c, 0xaf0d, 0xaf0e, 0xaf0f, 0x0000, 0x0000,
+ 0x0000, 0xaf10, 0xaf11, 0xaf12, 0xaf13, 0xaf14, 0xaf15, 0xaf16,
+ 0xaf17, 0xaf18, 0xaf19, 0xaf1a, 0xaf1b, 0xaf1c, 0xaf1d, 0xaf1e,
+ 0xaf1f, 0xaf20, 0x0000, 0xaf21, 0xaf22, 0xaf23, 0xaf24, 0xaf25,
+ 0xaf26, 0xaf27, 0xaf28, 0xaf29, 0xaf2a, 0xaf2b, 0x0000, 0x0000,
+ 0x0000, 0xaf2c, 0xaf2d, 0xaf2e, 0xaf2f, 0xaf30, 0xaf31, 0xaf32,
+ 0xaf33, 0xaf34, 0xaf35, 0xaf36, 0xaf37, 0xaf38, 0xaf39, 0xaf3a,
+ 0xaf3b, 0xaf3c, 0x0000, 0xaf3d, 0xaf3e, 0xaf3f, 0xaf40, 0xaf41,
+ 0xaf42, 0xaf43, 0xaf44, 0xaf45, 0xaf46, 0xaf47, 0x0000, 0x0000,
+ 0x0000, 0xaf48, 0xaf49, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e,
+ 0xaf4f, 0xaf50, 0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56,
+ 0xaf57, 0xaf58, 0x0000, 0xaf59, 0xaf5a, 0xaf5b, 0xaf5c, 0xaf5d,
+ 0xaf5e, 0xaf5f, 0xaf60, 0xaf61, 0xaf62, 0xaf63, 0x0000, 0x0000,
+ 0x0000, 0xaf64, 0xaf65, 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a,
+ 0xaf6b, 0xaf6c, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, 0xaf71, 0xaf72,
+ 0xaf73, 0xaf74, 0x0000, 0xaf75, 0xaf76, 0xaf77, 0xaf78, 0xaf79,
+ 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, 0xaf7e, 0xaf7f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xaf80, 0xaf81, 0xaf82, 0xaf83, 0xaf84, 0xaf85, 0xaf86,
+ 0xaf87, 0xaf88, 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e,
+ 0xaf8f, 0xaf90, 0x0000, 0xaf91, 0xaf92, 0xaf93, 0xaf94, 0xaf95,
+ 0xaf96, 0xaf97, 0xaf98, 0xaf99, 0xaf9a, 0xaf9b, 0x0000, 0x0000,
+ 0x0000, 0xaf9c, 0xaf9d, 0xaf9e, 0xaf9f, 0xafa0, 0xafa1, 0xafa2,
+ 0xafa3, 0xafa4, 0xafa5, 0xafa6, 0xafa7, 0xafa8, 0xafa9, 0xafaa,
+ 0xafab, 0xafac, 0x0000, 0xafad, 0xafae, 0xafaf, 0xafb0, 0xafb1,
+ 0xafb2, 0xafb3, 0xafb4, 0xafb5, 0xafb6, 0xafb7, 0x0000, 0x0000,
+ 0x0000, 0xafb8, 0xafb9, 0xafba, 0xafbb, 0xafbc, 0xafbd, 0xafbe,
+ 0xafbf, 0xafc0, 0xafc1, 0xafc2, 0xafc3, 0xafc4, 0xafc5, 0xafc6,
+ 0xafc7, 0xafc8, 0x0000, 0xafc9, 0xafca, 0xafcb, 0xafcc, 0xafcd,
+ 0xafce, 0xafcf, 0xafd0, 0xafd1, 0xafd2, 0xafd3, 0x0000, 0x0000,
+ 0x0000, 0xafd4, 0xafd5, 0xafd6, 0xafd7, 0xafd8, 0xafd9, 0xafda,
+ 0xafdb, 0xafdc, 0xafdd, 0xafde, 0xafdf, 0xafe0, 0xafe1, 0xafe2,
+ 0xafe3, 0xafe4, 0x0000, 0xafe5, 0xafe6, 0xafe7, 0xafe8, 0xafe9,
+ 0xafea, 0xafeb, 0xafec, 0xafed, 0xafee, 0xafef, 0x0000, 0x0000,
+ 0x0000, 0xaff0, 0xaff1, 0xaff2, 0xaff3, 0xaff4, 0xaff5, 0xaff6,
+ 0xaff7, 0xaff8, 0xaff9, 0xaffa, 0xaffb, 0xaffc, 0xaffd, 0xaffe,
+ 0xafff, 0xb000, 0x0000, 0xb001, 0xb002, 0xb003, 0xb004, 0xb005,
+ 0xb006, 0xb007, 0xb008, 0xb009, 0xb00a, 0xb00b, 0x0000, 0x0000,
+ 0x0000, 0xb00c, 0xb00d, 0xb00e, 0xb00f, 0xb010, 0xb011, 0xb012,
+ 0xb013, 0xb014, 0xb015, 0xb016, 0xb017, 0xb018, 0xb019, 0xb01a,
+ 0xb01b, 0xb01c, 0x0000, 0xb01d, 0xb01e, 0xb01f, 0xb020, 0xb021,
+ 0xb022, 0xb023, 0xb024, 0xb025, 0xb026, 0xb027, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb028, 0xb029, 0xb02a, 0xb02b, 0xb02c, 0xb02d, 0xb02e,
+ 0xb02f, 0xb030, 0xb031, 0xb032, 0xb033, 0xb034, 0xb035, 0xb036,
+ 0xb037, 0xb038, 0x0000, 0xb039, 0xb03a, 0xb03b, 0xb03c, 0xb03d,
+ 0xb03e, 0xb03f, 0xb040, 0xb041, 0xb042, 0xb043, 0x0000, 0x0000,
+ 0x0000, 0xb044, 0xb045, 0xb046, 0xb047, 0xb048, 0xb049, 0xb04a,
+ 0xb04b, 0xb04c, 0xb04d, 0xb04e, 0xb04f, 0xb050, 0xb051, 0xb052,
+ 0xb053, 0xb054, 0x0000, 0xb055, 0xb056, 0xb057, 0xb058, 0xb059,
+ 0xb05a, 0xb05b, 0xb05c, 0xb05d, 0xb05e, 0xb05f, 0x0000, 0x0000,
+ 0x0000, 0xb060, 0xb061, 0xb062, 0xb063, 0xb064, 0xb065, 0xb066,
+ 0xb067, 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e,
+ 0xb06f, 0xb070, 0x0000, 0xb071, 0xb072, 0xb073, 0xb074, 0xb075,
+ 0xb076, 0xb077, 0xb078, 0xb079, 0xb07a, 0xb07b, 0x0000, 0x0000,
+ 0x0000, 0xb07c, 0xb07d, 0xb07e, 0xb07f, 0xb080, 0xb081, 0xb082,
+ 0xb083, 0xb084, 0xb085, 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a,
+ 0xb08b, 0xb08c, 0x0000, 0xb08d, 0xb08e, 0xb08f, 0xb090, 0xb091,
+ 0xb092, 0xb093, 0xb094, 0xb095, 0xb096, 0xb097, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xb09e,
+ 0xb09f, 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6,
+ 0xb0a7, 0xb0a8, 0x0000, 0xb0a9, 0xb0aa, 0xb0ab, 0xb0ac, 0xb0ad,
+ 0xb0ae, 0xb0af, 0xb0b0, 0xb0b1, 0xb0b2, 0xb0b3, 0x0000, 0x0000,
+ 0x0000, 0xb0b4, 0xb0b5, 0xb0b6, 0xb0b7, 0xb0b8, 0xb0b9, 0xb0ba,
+ 0xb0bb, 0xb0bc, 0xb0bd, 0xb0be, 0xb0bf, 0xb0c0, 0xb0c1, 0xb0c2,
+ 0xb0c3, 0xb0c4, 0x0000, 0xb0c5, 0xb0c6, 0xb0c7, 0xb0c8, 0xb0c9,
+ 0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd, 0xb0ce, 0xb0cf, 0x0000, 0x0000,
+ 0x0000, 0xb0d0, 0xb0d1, 0xb0d2, 0xb0d3, 0xb0d4, 0xb0d5, 0xb0d6,
+ 0xb0d7, 0xb0d8, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, 0xb0de,
+ 0xb0df, 0xb0e0, 0x0000, 0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4, 0xb0e5,
+ 0xb0e6, 0xb0e7, 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0x0000, 0x0000,
+ 0x0000, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, 0xb0f0, 0xb0f1, 0xb0f2,
+ 0xb0f3, 0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9, 0xb0fa,
+ 0xb0fb, 0xb0fc, 0x0000, 0xb0fd, 0xb0fe, 0xb0ff, 0xb100, 0xb101,
+ 0xb102, 0xb103, 0xb104, 0xb105, 0xb106, 0xb107, 0x0000, 0x0000,
+ 0x0000, 0xb108, 0xb109, 0xb10a, 0xb10b, 0xb10c, 0xb10d, 0xb10e,
+ 0xb10f, 0xb110, 0xb111, 0xb112, 0xb113, 0xb114, 0xb115, 0xb116,
+ 0xb117, 0xb118, 0x0000, 0xb119, 0xb11a, 0xb11b, 0xb11c, 0xb11d,
+ 0xb11e, 0xb11f, 0xb120, 0xb121, 0xb122, 0xb123, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb124, 0xb125, 0xb126, 0xb127, 0xb128, 0xb129, 0xb12a,
+ 0xb12b, 0xb12c, 0xb12d, 0xb12e, 0xb12f, 0xb130, 0xb131, 0xb132,
+ 0xb133, 0xb134, 0x0000, 0xb135, 0xb136, 0xb137, 0xb138, 0xb139,
+ 0xb13a, 0xb13b, 0xb13c, 0xb13d, 0xb13e, 0xb13f, 0x0000, 0x0000,
+ 0x0000, 0xb140, 0xb141, 0xb142, 0xb143, 0xb144, 0xb145, 0xb146,
+ 0xb147, 0xb148, 0xb149, 0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e,
+ 0xb14f, 0xb150, 0x0000, 0xb151, 0xb152, 0xb153, 0xb154, 0xb155,
+ 0xb156, 0xb157, 0xb158, 0xb159, 0xb15a, 0xb15b, 0x0000, 0x0000,
+ 0x0000, 0xb15c, 0xb15d, 0xb15e, 0xb15f, 0xb160, 0xb161, 0xb162,
+ 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, 0xb168, 0xb169, 0xb16a,
+ 0xb16b, 0xb16c, 0x0000, 0xb16d, 0xb16e, 0xb16f, 0xb170, 0xb171,
+ 0xb172, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, 0x0000, 0x0000,
+ 0x0000, 0xb178, 0xb179, 0xb17a, 0xb17b, 0xb17c, 0xb17d, 0xb17e,
+ 0xb17f, 0xb180, 0xb181, 0xb182, 0xb183, 0xb184, 0xb185, 0xb186,
+ 0xb187, 0xb188, 0x0000, 0xb189, 0xb18a, 0xb18b, 0xb18c, 0xb18d,
+ 0xb18e, 0xb18f, 0xb190, 0xb191, 0xb192, 0xb193, 0x0000, 0x0000,
+ 0x0000, 0xb194, 0xb195, 0xb196, 0xb197, 0xb198, 0xb199, 0xb19a,
+ 0xb19b, 0xb19c, 0xb19d, 0xb19e, 0xb19f, 0xb1a0, 0xb1a1, 0xb1a2,
+ 0xb1a3, 0xb1a4, 0x0000, 0xb1a5, 0xb1a6, 0xb1a7, 0xb1a8, 0xb1a9,
+ 0xb1aa, 0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, 0x0000, 0x0000,
+ 0x0000, 0xb1b0, 0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6,
+ 0xb1b7, 0xb1b8, 0xb1b9, 0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be,
+ 0xb1bf, 0xb1c0, 0x0000, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, 0xb1c5,
+ 0xb1c6, 0xb1c7, 0xb1c8, 0xb1c9, 0xb1ca, 0xb1cb, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb1cc, 0xb1cd, 0xb1ce, 0xb1cf, 0xb1d0, 0xb1d1, 0xb1d2,
+ 0xb1d3, 0xb1d4, 0xb1d5, 0xb1d6, 0xb1d7, 0xb1d8, 0xb1d9, 0xb1da,
+ 0xb1db, 0xb1dc, 0x0000, 0xb1dd, 0xb1de, 0xb1df, 0xb1e0, 0xb1e1,
+ 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0x0000, 0x0000,
+ 0x0000, 0xb1e8, 0xb1e9, 0xb1ea, 0xb1eb, 0xb1ec, 0xb1ed, 0xb1ee,
+ 0xb1ef, 0xb1f0, 0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6,
+ 0xb1f7, 0xb1f8, 0x0000, 0xb1f9, 0xb1fa, 0xb1fb, 0xb1fc, 0xb1fd,
+ 0xb1fe, 0xb1ff, 0xb200, 0xb201, 0xb202, 0xb203, 0x0000, 0x0000,
+ 0x0000, 0xb204, 0xb205, 0xb206, 0xb207, 0xb208, 0xb209, 0xb20a,
+ 0xb20b, 0xb20c, 0xb20d, 0xb20e, 0xb20f, 0xb210, 0xb211, 0xb212,
+ 0xb213, 0xb214, 0x0000, 0xb215, 0xb216, 0xb217, 0xb218, 0xb219,
+ 0xb21a, 0xb21b, 0xb21c, 0xb21d, 0xb21e, 0xb21f, 0x0000, 0x0000,
+ 0x0000, 0xb220, 0xb221, 0xb222, 0xb223, 0xb224, 0xb225, 0xb226,
+ 0xb227, 0xb228, 0xb229, 0xb22a, 0xb22b, 0xb22c, 0xb22d, 0xb22e,
+ 0xb22f, 0xb230, 0x0000, 0xb231, 0xb232, 0xb233, 0xb234, 0xb235,
+ 0xb236, 0xb237, 0xb238, 0xb239, 0xb23a, 0xb23b, 0x0000, 0x0000,
+ 0x0000, 0xb23c, 0xb23d, 0xb23e, 0xb23f, 0xb240, 0xb241, 0xb242,
+ 0xb243, 0xb244, 0xb245, 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a,
+ 0xb24b, 0xb24c, 0x0000, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251,
+ 0xb252, 0xb253, 0xb254, 0xb255, 0xb256, 0xb257, 0x0000, 0x0000,
+ 0x0000, 0xb258, 0xb259, 0xb25a, 0xb25b, 0xb25c, 0xb25d, 0xb25e,
+ 0xb25f, 0xb260, 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266,
+ 0xb267, 0xb268, 0x0000, 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d,
+ 0xb26e, 0xb26f, 0xb270, 0xb271, 0xb272, 0xb273, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb274, 0xb275, 0xb276, 0xb277, 0xb278, 0xb279, 0xb27a,
+ 0xb27b, 0xb27c, 0xb27d, 0xb27e, 0xb27f, 0xb280, 0xb281, 0xb282,
+ 0xb283, 0xb284, 0x0000, 0xb285, 0xb286, 0xb287, 0xb288, 0xb289,
+ 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xb28f, 0x0000, 0x0000,
+ 0x0000, 0xb290, 0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296,
+ 0xb297, 0xb298, 0xb299, 0xb29a, 0xb29b, 0xb29c, 0xb29d, 0xb29e,
+ 0xb29f, 0xb2a0, 0x0000, 0xb2a1, 0xb2a2, 0xb2a3, 0xb2a4, 0xb2a5,
+ 0xb2a6, 0xb2a7, 0xb2a8, 0xb2a9, 0xb2aa, 0xb2ab, 0x0000, 0x0000,
+ 0x0000, 0xb2ac, 0xb2ad, 0xb2ae, 0xb2af, 0xb2b0, 0xb2b1, 0xb2b2,
+ 0xb2b3, 0xb2b4, 0xb2b5, 0xb2b6, 0xb2b7, 0xb2b8, 0xb2b9, 0xb2ba,
+ 0xb2bb, 0xb2bc, 0x0000, 0xb2bd, 0xb2be, 0xb2bf, 0xb2c0, 0xb2c1,
+ 0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6, 0xb2c7, 0x0000, 0x0000,
+ 0x0000, 0xb2c8, 0xb2c9, 0xb2ca, 0xb2cb, 0xb2cc, 0xb2cd, 0xb2ce,
+ 0xb2cf, 0xb2d0, 0xb2d1, 0xb2d2, 0xb2d3, 0xb2d4, 0xb2d5, 0xb2d6,
+ 0xb2d7, 0xb2d8, 0x0000, 0xb2d9, 0xb2da, 0xb2db, 0xb2dc, 0xb2dd,
+ 0xb2de, 0xb2df, 0xb2e0, 0xb2e1, 0xb2e2, 0xb2e3, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e7, 0xb2e8, 0xb2e9, 0xb2ea,
+ 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f0, 0xb2f1, 0xb2f2,
+ 0xb2f3, 0xb2f4, 0x0000, 0xb2f5, 0xb2f6, 0xb2f7, 0xb2f8, 0xb2f9,
+ 0xb2fa, 0xb2fb, 0xb2fc, 0xb2fd, 0xb2fe, 0xb2ff, 0x0000, 0x0000,
+ 0x0000, 0xb300, 0xb301, 0xb302, 0xb303, 0xb304, 0xb305, 0xb306,
+ 0xb307, 0xb308, 0xb309, 0xb30a, 0xb30b, 0xb30c, 0xb30d, 0xb30e,
+ 0xb30f, 0xb310, 0x0000, 0xb311, 0xb312, 0xb313, 0xb314, 0xb315,
+ 0xb316, 0xb317, 0xb318, 0xb319, 0xb31a, 0xb31b, 0x0000, 0x0000,
+ 0x0000, 0xb31c, 0xb31d, 0xb31e, 0xb31f, 0xb320, 0xb321, 0xb322,
+ 0xb323, 0xb324, 0xb325, 0xb326, 0xb327, 0xb328, 0xb329, 0xb32a,
+ 0xb32b, 0xb32c, 0x0000, 0xb32d, 0xb32e, 0xb32f, 0xb330, 0xb331,
+ 0xb332, 0xb333, 0xb334, 0xb335, 0xb336, 0xb337, 0x0000, 0x0000,
+ 0x0000, 0xb338, 0xb339, 0xb33a, 0xb33b, 0xb33c, 0xb33d, 0xb33e,
+ 0xb33f, 0xb340, 0xb341, 0xb342, 0xb343, 0xb344, 0xb345, 0xb346,
+ 0xb347, 0xb348, 0x0000, 0xb349, 0xb34a, 0xb34b, 0xb34c, 0xb34d,
+ 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, 0xb353, 0x0000, 0x0000,
+ 0x0000, 0xb354, 0xb355, 0xb356, 0xb357, 0xb358, 0xb359, 0xb35a,
+ 0xb35b, 0xb35c, 0xb35d, 0xb35e, 0xb35f, 0xb360, 0xb361, 0xb362,
+ 0xb363, 0xb364, 0x0000, 0xb365, 0xb366, 0xb367, 0xb368, 0xb369,
+ 0xb36a, 0xb36b, 0xb36c, 0xb36d, 0xb36e, 0xb36f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb370, 0xb371, 0xb372, 0xb373, 0xb374, 0xb375, 0xb376,
+ 0xb377, 0xb378, 0xb379, 0xb37a, 0xb37b, 0xb37c, 0xb37d, 0xb37e,
+ 0xb37f, 0xb380, 0x0000, 0xb381, 0xb382, 0xb383, 0xb384, 0xb385,
+ 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0x0000, 0x0000,
+ 0x0000, 0xb38c, 0xb38d, 0xb38e, 0xb38f, 0xb390, 0xb391, 0xb392,
+ 0xb393, 0xb394, 0xb395, 0xb396, 0xb397, 0xb398, 0xb399, 0xb39a,
+ 0xb39b, 0xb39c, 0x0000, 0xb39d, 0xb39e, 0xb39f, 0xb3a0, 0xb3a1,
+ 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7, 0x0000, 0x0000,
+ 0x0000, 0xb3a8, 0xb3a9, 0xb3aa, 0xb3ab, 0xb3ac, 0xb3ad, 0xb3ae,
+ 0xb3af, 0xb3b0, 0xb3b1, 0xb3b2, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6,
+ 0xb3b7, 0xb3b8, 0x0000, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd,
+ 0xb3be, 0xb3bf, 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0x0000, 0x0000,
+ 0x0000, 0xb3c4, 0xb3c5, 0xb3c6, 0xb3c7, 0xb3c8, 0xb3c9, 0xb3ca,
+ 0xb3cb, 0xb3cc, 0xb3cd, 0xb3ce, 0xb3cf, 0xb3d0, 0xb3d1, 0xb3d2,
+ 0xb3d3, 0xb3d4, 0x0000, 0xb3d5, 0xb3d6, 0xb3d7, 0xb3d8, 0xb3d9,
+ 0xb3da, 0xb3db, 0xb3dc, 0xb3dd, 0xb3de, 0xb3df, 0x0000, 0x0000,
+ 0x0000, 0xb3e0, 0xb3e1, 0xb3e2, 0xb3e3, 0xb3e4, 0xb3e5, 0xb3e6,
+ 0xb3e7, 0xb3e8, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee,
+ 0xb3ef, 0xb3f0, 0x0000, 0xb3f1, 0xb3f2, 0xb3f3, 0xb3f4, 0xb3f5,
+ 0xb3f6, 0xb3f7, 0xb3f8, 0xb3f9, 0xb3fa, 0xb3fb, 0x0000, 0x0000,
+ 0x0000, 0xb3fc, 0xb3fd, 0xb3fe, 0xb3ff, 0xb400, 0xb401, 0xb402,
+ 0xb403, 0xb404, 0xb405, 0xb406, 0xb407, 0xb408, 0xb409, 0xb40a,
+ 0xb40b, 0xb40c, 0x0000, 0xb40d, 0xb40e, 0xb40f, 0xb410, 0xb411,
+ 0xb412, 0xb413, 0xb414, 0xb415, 0xb416, 0xb417, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb418, 0xb419, 0xb41a, 0xb41b, 0xb41c, 0xb41d, 0xb41e,
+ 0xb41f, 0xb420, 0xb421, 0xb422, 0xb423, 0xb424, 0xb425, 0xb426,
+ 0xb427, 0xb428, 0x0000, 0xb429, 0xb42a, 0xb42b, 0xb42c, 0xb42d,
+ 0xb42e, 0xb42f, 0xb430, 0xb431, 0xb432, 0xb433, 0x0000, 0x0000,
+ 0x0000, 0xb434, 0xb435, 0xb436, 0xb437, 0xb438, 0xb439, 0xb43a,
+ 0xb43b, 0xb43c, 0xb43d, 0xb43e, 0xb43f, 0xb440, 0xb441, 0xb442,
+ 0xb443, 0xb444, 0x0000, 0xb445, 0xb446, 0xb447, 0xb448, 0xb449,
+ 0xb44a, 0xb44b, 0xb44c, 0xb44d, 0xb44e, 0xb44f, 0x0000, 0x0000,
+ 0x0000, 0xb450, 0xb451, 0xb452, 0xb453, 0xb454, 0xb455, 0xb456,
+ 0xb457, 0xb458, 0xb459, 0xb45a, 0xb45b, 0xb45c, 0xb45d, 0xb45e,
+ 0xb45f, 0xb460, 0x0000, 0xb461, 0xb462, 0xb463, 0xb464, 0xb465,
+ 0xb466, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0x0000, 0x0000,
+ 0x0000, 0xb46c, 0xb46d, 0xb46e, 0xb46f, 0xb470, 0xb471, 0xb472,
+ 0xb473, 0xb474, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a,
+ 0xb47b, 0xb47c, 0x0000, 0xb47d, 0xb47e, 0xb47f, 0xb480, 0xb481,
+ 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, 0x0000, 0x0000,
+ 0x0000, 0xb488, 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e,
+ 0xb48f, 0xb490, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, 0xb496,
+ 0xb497, 0xb498, 0x0000, 0xb499, 0xb49a, 0xb49b, 0xb49c, 0xb49d,
+ 0xb49e, 0xb49f, 0xb4a0, 0xb4a1, 0xb4a2, 0xb4a3, 0x0000, 0x0000,
+ 0x0000, 0xb4a4, 0xb4a5, 0xb4a6, 0xb4a7, 0xb4a8, 0xb4a9, 0xb4aa,
+ 0xb4ab, 0xb4ac, 0xb4ad, 0xb4ae, 0xb4af, 0xb4b0, 0xb4b1, 0xb4b2,
+ 0xb4b3, 0xb4b4, 0x0000, 0xb4b5, 0xb4b6, 0xb4b7, 0xb4b8, 0xb4b9,
+ 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb4c0, 0xb4c1, 0xb4c2, 0xb4c3, 0xb4c4, 0xb4c5, 0xb4c6,
+ 0xb4c7, 0xb4c8, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce,
+ 0xb4cf, 0xb4d0, 0x0000, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d5,
+ 0xb4d6, 0xb4d7, 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0x0000, 0x0000,
+ 0x0000, 0xb4dc, 0xb4dd, 0xb4de, 0xb4df, 0xb4e0, 0xb4e1, 0xb4e2,
+ 0xb4e3, 0xb4e4, 0xb4e5, 0xb4e6, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea,
+ 0xb4eb, 0xb4ec, 0x0000, 0xb4ed, 0xb4ee, 0xb4ef, 0xb4f0, 0xb4f1,
+ 0xb4f2, 0xb4f3, 0xb4f4, 0xb4f5, 0xb4f6, 0xb4f7, 0x0000, 0x0000,
+ 0x0000, 0xb4f8, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe,
+ 0xb4ff, 0xb500, 0xb501, 0xb502, 0xb503, 0xb504, 0xb505, 0xb506,
+ 0xb507, 0xb508, 0x0000, 0xb509, 0xb50a, 0xb50b, 0xb50c, 0xb50d,
+ 0xb50e, 0xb50f, 0xb510, 0xb511, 0xb512, 0xb513, 0x0000, 0x0000,
+ 0x0000, 0xb514, 0xb515, 0xb516, 0xb517, 0xb518, 0xb519, 0xb51a,
+ 0xb51b, 0xb51c, 0xb51d, 0xb51e, 0xb51f, 0xb520, 0xb521, 0xb522,
+ 0xb523, 0xb524, 0x0000, 0xb525, 0xb526, 0xb527, 0xb528, 0xb529,
+ 0xb52a, 0xb52b, 0xb52c, 0xb52d, 0xb52e, 0xb52f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3138, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb530, 0xb531, 0xb532, 0xb533, 0xb534, 0xb535, 0xb536,
+ 0xb537, 0xb538, 0xb539, 0xb53a, 0xb53b, 0xb53c, 0xb53d, 0xb53e,
+ 0xb53f, 0xb540, 0x0000, 0xb541, 0xb542, 0xb543, 0xb544, 0xb545,
+ 0xb546, 0xb547, 0xb548, 0xb549, 0xb54a, 0xb54b, 0x0000, 0x0000,
+ 0x0000, 0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xb550, 0xb551, 0xb552,
+ 0xb553, 0xb554, 0xb555, 0xb556, 0xb557, 0xb558, 0xb559, 0xb55a,
+ 0xb55b, 0xb55c, 0x0000, 0xb55d, 0xb55e, 0xb55f, 0xb560, 0xb561,
+ 0xb562, 0xb563, 0xb564, 0xb565, 0xb566, 0xb567, 0x0000, 0x0000,
+ 0x0000, 0xb568, 0xb569, 0xb56a, 0xb56b, 0xb56c, 0xb56d, 0xb56e,
+ 0xb56f, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, 0xb576,
+ 0xb577, 0xb578, 0x0000, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d,
+ 0xb57e, 0xb57f, 0xb580, 0xb581, 0xb582, 0xb583, 0x0000, 0x0000,
+ 0x0000, 0xb584, 0xb585, 0xb586, 0xb587, 0xb588, 0xb589, 0xb58a,
+ 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, 0xb590, 0xb591, 0xb592,
+ 0xb593, 0xb594, 0x0000, 0xb595, 0xb596, 0xb597, 0xb598, 0xb599,
+ 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb59e, 0xb59f, 0x0000, 0x0000,
+ 0x0000, 0xb5a0, 0xb5a1, 0xb5a2, 0xb5a3, 0xb5a4, 0xb5a5, 0xb5a6,
+ 0xb5a7, 0xb5a8, 0xb5a9, 0xb5aa, 0xb5ab, 0xb5ac, 0xb5ad, 0xb5ae,
+ 0xb5af, 0xb5b0, 0x0000, 0xb5b1, 0xb5b2, 0xb5b3, 0xb5b4, 0xb5b5,
+ 0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5bb, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb5bc, 0xb5bd, 0xb5be, 0xb5bf, 0xb5c0, 0xb5c1, 0xb5c2,
+ 0xb5c3, 0xb5c4, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8, 0xb5c9, 0xb5ca,
+ 0xb5cb, 0xb5cc, 0x0000, 0xb5cd, 0xb5ce, 0xb5cf, 0xb5d0, 0xb5d1,
+ 0xb5d2, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7, 0x0000, 0x0000,
+ 0x0000, 0xb5d8, 0xb5d9, 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5de,
+ 0xb5df, 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6,
+ 0xb5e7, 0xb5e8, 0x0000, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ec, 0xb5ed,
+ 0xb5ee, 0xb5ef, 0xb5f0, 0xb5f1, 0xb5f2, 0xb5f3, 0x0000, 0x0000,
+ 0x0000, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7, 0xb5f8, 0xb5f9, 0xb5fa,
+ 0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb5ff, 0xb600, 0xb601, 0xb602,
+ 0xb603, 0xb604, 0x0000, 0xb605, 0xb606, 0xb607, 0xb608, 0xb609,
+ 0xb60a, 0xb60b, 0xb60c, 0xb60d, 0xb60e, 0xb60f, 0x0000, 0x0000,
+ 0x0000, 0xb610, 0xb611, 0xb612, 0xb613, 0xb614, 0xb615, 0xb616,
+ 0xb617, 0xb618, 0xb619, 0xb61a, 0xb61b, 0xb61c, 0xb61d, 0xb61e,
+ 0xb61f, 0xb620, 0x0000, 0xb621, 0xb622, 0xb623, 0xb624, 0xb625,
+ 0xb626, 0xb627, 0xb628, 0xb629, 0xb62a, 0xb62b, 0x0000, 0x0000,
+ 0x0000, 0xb62c, 0xb62d, 0xb62e, 0xb62f, 0xb630, 0xb631, 0xb632,
+ 0xb633, 0xb634, 0xb635, 0xb636, 0xb637, 0xb638, 0xb639, 0xb63a,
+ 0xb63b, 0xb63c, 0x0000, 0xb63d, 0xb63e, 0xb63f, 0xb640, 0xb641,
+ 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, 0x0000, 0x0000,
+ 0x0000, 0xb648, 0xb649, 0xb64a, 0xb64b, 0xb64c, 0xb64d, 0xb64e,
+ 0xb64f, 0xb650, 0xb651, 0xb652, 0xb653, 0xb654, 0xb655, 0xb656,
+ 0xb657, 0xb658, 0x0000, 0xb659, 0xb65a, 0xb65b, 0xb65c, 0xb65d,
+ 0xb65e, 0xb65f, 0xb660, 0xb661, 0xb662, 0xb663, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb664, 0xb665, 0xb666, 0xb667, 0xb668, 0xb669, 0xb66a,
+ 0xb66b, 0xb66c, 0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb672,
+ 0xb673, 0xb674, 0x0000, 0xb675, 0xb676, 0xb677, 0xb678, 0xb679,
+ 0xb67a, 0xb67b, 0xb67c, 0xb67d, 0xb67e, 0xb67f, 0x0000, 0x0000,
+ 0x0000, 0xb680, 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686,
+ 0xb687, 0xb688, 0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e,
+ 0xb68f, 0xb690, 0x0000, 0xb691, 0xb692, 0xb693, 0xb694, 0xb695,
+ 0xb696, 0xb697, 0xb698, 0xb699, 0xb69a, 0xb69b, 0x0000, 0x0000,
+ 0x0000, 0xb69c, 0xb69d, 0xb69e, 0xb69f, 0xb6a0, 0xb6a1, 0xb6a2,
+ 0xb6a3, 0xb6a4, 0xb6a5, 0xb6a6, 0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa,
+ 0xb6ab, 0xb6ac, 0x0000, 0xb6ad, 0xb6ae, 0xb6af, 0xb6b0, 0xb6b1,
+ 0xb6b2, 0xb6b3, 0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7, 0x0000, 0x0000,
+ 0x0000, 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc, 0xb6bd, 0xb6be,
+ 0xb6bf, 0xb6c0, 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6,
+ 0xb6c7, 0xb6c8, 0x0000, 0xb6c9, 0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd,
+ 0xb6ce, 0xb6cf, 0xb6d0, 0xb6d1, 0xb6d2, 0xb6d3, 0x0000, 0x0000,
+ 0x0000, 0xb6d4, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8, 0xb6d9, 0xb6da,
+ 0xb6db, 0xb6dc, 0xb6dd, 0xb6de, 0xb6df, 0xb6e0, 0xb6e1, 0xb6e2,
+ 0xb6e3, 0xb6e4, 0x0000, 0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9,
+ 0xb6ea, 0xb6eb, 0xb6ec, 0xb6ed, 0xb6ee, 0xb6ef, 0x0000, 0x0000,
+ 0x0000, 0xb6f0, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f4, 0xb6f5, 0xb6f6,
+ 0xb6f7, 0xb6f8, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc, 0xb6fd, 0xb6fe,
+ 0xb6ff, 0xb700, 0x0000, 0xb701, 0xb702, 0xb703, 0xb704, 0xb705,
+ 0xb706, 0xb707, 0xb708, 0xb709, 0xb70a, 0xb70b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb70c, 0xb70d, 0xb70e, 0xb70f, 0xb710, 0xb711, 0xb712,
+ 0xb713, 0xb714, 0xb715, 0xb716, 0xb717, 0xb718, 0xb719, 0xb71a,
+ 0xb71b, 0xb71c, 0x0000, 0xb71d, 0xb71e, 0xb71f, 0xb720, 0xb721,
+ 0xb722, 0xb723, 0xb724, 0xb725, 0xb726, 0xb727, 0x0000, 0x0000,
+ 0x0000, 0xb728, 0xb729, 0xb72a, 0xb72b, 0xb72c, 0xb72d, 0xb72e,
+ 0xb72f, 0xb730, 0xb731, 0xb732, 0xb733, 0xb734, 0xb735, 0xb736,
+ 0xb737, 0xb738, 0x0000, 0xb739, 0xb73a, 0xb73b, 0xb73c, 0xb73d,
+ 0xb73e, 0xb73f, 0xb740, 0xb741, 0xb742, 0xb743, 0x0000, 0x0000,
+ 0x0000, 0xb744, 0xb745, 0xb746, 0xb747, 0xb748, 0xb749, 0xb74a,
+ 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, 0xb750, 0xb751, 0xb752,
+ 0xb753, 0xb754, 0x0000, 0xb755, 0xb756, 0xb757, 0xb758, 0xb759,
+ 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xb75f, 0x0000, 0x0000,
+ 0x0000, 0xb760, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765, 0xb766,
+ 0xb767, 0xb768, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xb76e,
+ 0xb76f, 0xb770, 0x0000, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775,
+ 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb77c, 0xb77d, 0xb77e, 0xb77f, 0xb780, 0xb781, 0xb782,
+ 0xb783, 0xb784, 0xb785, 0xb786, 0xb787, 0xb788, 0xb789, 0xb78a,
+ 0xb78b, 0xb78c, 0x0000, 0xb78d, 0xb78e, 0xb78f, 0xb790, 0xb791,
+ 0xb792, 0xb793, 0xb794, 0xb795, 0xb796, 0xb797, 0x0000, 0x0000,
+ 0x0000, 0xb798, 0xb799, 0xb79a, 0xb79b, 0xb79c, 0xb79d, 0xb79e,
+ 0xb79f, 0xb7a0, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6,
+ 0xb7a7, 0xb7a8, 0x0000, 0xb7a9, 0xb7aa, 0xb7ab, 0xb7ac, 0xb7ad,
+ 0xb7ae, 0xb7af, 0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, 0x0000, 0x0000,
+ 0x0000, 0xb7b4, 0xb7b5, 0xb7b6, 0xb7b7, 0xb7b8, 0xb7b9, 0xb7ba,
+ 0xb7bb, 0xb7bc, 0xb7bd, 0xb7be, 0xb7bf, 0xb7c0, 0xb7c1, 0xb7c2,
+ 0xb7c3, 0xb7c4, 0x0000, 0xb7c5, 0xb7c6, 0xb7c7, 0xb7c8, 0xb7c9,
+ 0xb7ca, 0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf, 0x0000, 0x0000,
+ 0x0000, 0xb7d0, 0xb7d1, 0xb7d2, 0xb7d3, 0xb7d4, 0xb7d5, 0xb7d6,
+ 0xb7d7, 0xb7d8, 0xb7d9, 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de,
+ 0xb7df, 0xb7e0, 0x0000, 0xb7e1, 0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5,
+ 0xb7e6, 0xb7e7, 0xb7e8, 0xb7e9, 0xb7ea, 0xb7eb, 0x0000, 0x0000,
+ 0x0000, 0xb7ec, 0xb7ed, 0xb7ee, 0xb7ef, 0xb7f0, 0xb7f1, 0xb7f2,
+ 0xb7f3, 0xb7f4, 0xb7f5, 0xb7f6, 0xb7f7, 0xb7f8, 0xb7f9, 0xb7fa,
+ 0xb7fb, 0xb7fc, 0x0000, 0xb7fd, 0xb7fe, 0xb7ff, 0xb800, 0xb801,
+ 0xb802, 0xb803, 0xb804, 0xb805, 0xb806, 0xb807, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb808, 0xb809, 0xb80a, 0xb80b, 0xb80c, 0xb80d, 0xb80e,
+ 0xb80f, 0xb810, 0xb811, 0xb812, 0xb813, 0xb814, 0xb815, 0xb816,
+ 0xb817, 0xb818, 0x0000, 0xb819, 0xb81a, 0xb81b, 0xb81c, 0xb81d,
+ 0xb81e, 0xb81f, 0xb820, 0xb821, 0xb822, 0xb823, 0x0000, 0x0000,
+ 0x0000, 0xb824, 0xb825, 0xb826, 0xb827, 0xb828, 0xb829, 0xb82a,
+ 0xb82b, 0xb82c, 0xb82d, 0xb82e, 0xb82f, 0xb830, 0xb831, 0xb832,
+ 0xb833, 0xb834, 0x0000, 0xb835, 0xb836, 0xb837, 0xb838, 0xb839,
+ 0xb83a, 0xb83b, 0xb83c, 0xb83d, 0xb83e, 0xb83f, 0x0000, 0x0000,
+ 0x0000, 0xb840, 0xb841, 0xb842, 0xb843, 0xb844, 0xb845, 0xb846,
+ 0xb847, 0xb848, 0xb849, 0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e,
+ 0xb84f, 0xb850, 0x0000, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855,
+ 0xb856, 0xb857, 0xb858, 0xb859, 0xb85a, 0xb85b, 0x0000, 0x0000,
+ 0x0000, 0xb85c, 0xb85d, 0xb85e, 0xb85f, 0xb860, 0xb861, 0xb862,
+ 0xb863, 0xb864, 0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a,
+ 0xb86b, 0xb86c, 0x0000, 0xb86d, 0xb86e, 0xb86f, 0xb870, 0xb871,
+ 0xb872, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, 0x0000, 0x0000,
+ 0x0000, 0xb878, 0xb879, 0xb87a, 0xb87b, 0xb87c, 0xb87d, 0xb87e,
+ 0xb87f, 0xb880, 0xb881, 0xb882, 0xb883, 0xb884, 0xb885, 0xb886,
+ 0xb887, 0xb888, 0x0000, 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88d,
+ 0xb88e, 0xb88f, 0xb890, 0xb891, 0xb892, 0xb893, 0x0000, 0x0000,
+ 0x0000, 0xb894, 0xb895, 0xb896, 0xb897, 0xb898, 0xb899, 0xb89a,
+ 0xb89b, 0xb89c, 0xb89d, 0xb89e, 0xb89f, 0xb8a0, 0xb8a1, 0xb8a2,
+ 0xb8a3, 0xb8a4, 0x0000, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a8, 0xb8a9,
+ 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb8b0, 0xb8b1, 0xb8b2, 0xb8b3, 0xb8b4, 0xb8b5, 0xb8b6,
+ 0xb8b7, 0xb8b8, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8be,
+ 0xb8bf, 0xb8c0, 0x0000, 0xb8c1, 0xb8c2, 0xb8c3, 0xb8c4, 0xb8c5,
+ 0xb8c6, 0xb8c7, 0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0x0000, 0x0000,
+ 0x0000, 0xb8cc, 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d0, 0xb8d1, 0xb8d2,
+ 0xb8d3, 0xb8d4, 0xb8d5, 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9, 0xb8da,
+ 0xb8db, 0xb8dc, 0x0000, 0xb8dd, 0xb8de, 0xb8df, 0xb8e0, 0xb8e1,
+ 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, 0x0000, 0x0000,
+ 0x0000, 0xb8e8, 0xb8e9, 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ed, 0xb8ee,
+ 0xb8ef, 0xb8f0, 0xb8f1, 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6,
+ 0xb8f7, 0xb8f8, 0x0000, 0xb8f9, 0xb8fa, 0xb8fb, 0xb8fc, 0xb8fd,
+ 0xb8fe, 0xb8ff, 0xb900, 0xb901, 0xb902, 0xb903, 0x0000, 0x0000,
+ 0x0000, 0xb904, 0xb905, 0xb906, 0xb907, 0xb908, 0xb909, 0xb90a,
+ 0xb90b, 0xb90c, 0xb90d, 0xb90e, 0xb90f, 0xb910, 0xb911, 0xb912,
+ 0xb913, 0xb914, 0x0000, 0xb915, 0xb916, 0xb917, 0xb918, 0xb919,
+ 0xb91a, 0xb91b, 0xb91c, 0xb91d, 0xb91e, 0xb91f, 0x0000, 0x0000,
+ 0x0000, 0xb920, 0xb921, 0xb922, 0xb923, 0xb924, 0xb925, 0xb926,
+ 0xb927, 0xb928, 0xb929, 0xb92a, 0xb92b, 0xb92c, 0xb92d, 0xb92e,
+ 0xb92f, 0xb930, 0x0000, 0xb931, 0xb932, 0xb933, 0xb934, 0xb935,
+ 0xb936, 0xb937, 0xb938, 0xb939, 0xb93a, 0xb93b, 0x0000, 0x0000,
+ 0x0000, 0xb93c, 0xb93d, 0xb93e, 0xb93f, 0xb940, 0xb941, 0xb942,
+ 0xb943, 0xb944, 0xb945, 0xb946, 0xb947, 0xb948, 0xb949, 0xb94a,
+ 0xb94b, 0xb94c, 0x0000, 0xb94d, 0xb94e, 0xb94f, 0xb950, 0xb951,
+ 0xb952, 0xb953, 0xb954, 0xb955, 0xb956, 0xb957, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb958, 0xb959, 0xb95a, 0xb95b, 0xb95c, 0xb95d, 0xb95e,
+ 0xb95f, 0xb960, 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966,
+ 0xb967, 0xb968, 0x0000, 0xb969, 0xb96a, 0xb96b, 0xb96c, 0xb96d,
+ 0xb96e, 0xb96f, 0xb970, 0xb971, 0xb972, 0xb973, 0x0000, 0x0000,
+ 0x0000, 0xb974, 0xb975, 0xb976, 0xb977, 0xb978, 0xb979, 0xb97a,
+ 0xb97b, 0xb97c, 0xb97d, 0xb97e, 0xb97f, 0xb980, 0xb981, 0xb982,
+ 0xb983, 0xb984, 0x0000, 0xb985, 0xb986, 0xb987, 0xb988, 0xb989,
+ 0xb98a, 0xb98b, 0xb98c, 0xb98d, 0xb98e, 0xb98f, 0x0000, 0x0000,
+ 0x0000, 0xb990, 0xb991, 0xb992, 0xb993, 0xb994, 0xb995, 0xb996,
+ 0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, 0xb99e,
+ 0xb99f, 0xb9a0, 0x0000, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5,
+ 0xb9a6, 0xb9a7, 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0x0000, 0x0000,
+ 0x0000, 0xb9ac, 0xb9ad, 0xb9ae, 0xb9af, 0xb9b0, 0xb9b1, 0xb9b2,
+ 0xb9b3, 0xb9b4, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8, 0xb9b9, 0xb9ba,
+ 0xb9bb, 0xb9bc, 0x0000, 0xb9bd, 0xb9be, 0xb9bf, 0xb9c0, 0xb9c1,
+ 0xb9c2, 0xb9c3, 0xb9c4, 0xb9c5, 0xb9c6, 0xb9c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb9c8, 0xb9c9, 0xb9ca, 0xb9cb, 0xb9cc, 0xb9cd, 0xb9ce,
+ 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d3, 0xb9d4, 0xb9d5, 0xb9d6,
+ 0xb9d7, 0xb9d8, 0x0000, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc, 0xb9dd,
+ 0xb9de, 0xb9df, 0xb9e0, 0xb9e1, 0xb9e2, 0xb9e3, 0x0000, 0x0000,
+ 0x0000, 0xb9e4, 0xb9e5, 0xb9e6, 0xb9e7, 0xb9e8, 0xb9e9, 0xb9ea,
+ 0xb9eb, 0xb9ec, 0xb9ed, 0xb9ee, 0xb9ef, 0xb9f0, 0xb9f1, 0xb9f2,
+ 0xb9f3, 0xb9f4, 0x0000, 0xb9f5, 0xb9f6, 0xb9f7, 0xb9f8, 0xb9f9,
+ 0xb9fa, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe, 0xb9ff, 0x0000, 0x0000,
+ 0x0000, 0xba00, 0xba01, 0xba02, 0xba03, 0xba04, 0xba05, 0xba06,
+ 0xba07, 0xba08, 0xba09, 0xba0a, 0xba0b, 0xba0c, 0xba0d, 0xba0e,
+ 0xba0f, 0xba10, 0x0000, 0xba11, 0xba12, 0xba13, 0xba14, 0xba15,
+ 0xba16, 0xba17, 0xba18, 0xba19, 0xba1a, 0xba1b, 0x0000, 0x0000,
+ 0x0000, 0xba1c, 0xba1d, 0xba1e, 0xba1f, 0xba20, 0xba21, 0xba22,
+ 0xba23, 0xba24, 0xba25, 0xba26, 0xba27, 0xba28, 0xba29, 0xba2a,
+ 0xba2b, 0xba2c, 0x0000, 0xba2d, 0xba2e, 0xba2f, 0xba30, 0xba31,
+ 0xba32, 0xba33, 0xba34, 0xba35, 0xba36, 0xba37, 0x0000, 0x0000,
+ 0x0000, 0xba38, 0xba39, 0xba3a, 0xba3b, 0xba3c, 0xba3d, 0xba3e,
+ 0xba3f, 0xba40, 0xba41, 0xba42, 0xba43, 0xba44, 0xba45, 0xba46,
+ 0xba47, 0xba48, 0x0000, 0xba49, 0xba4a, 0xba4b, 0xba4c, 0xba4d,
+ 0xba4e, 0xba4f, 0xba50, 0xba51, 0xba52, 0xba53, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xba54, 0xba55, 0xba56, 0xba57, 0xba58, 0xba59, 0xba5a,
+ 0xba5b, 0xba5c, 0xba5d, 0xba5e, 0xba5f, 0xba60, 0xba61, 0xba62,
+ 0xba63, 0xba64, 0x0000, 0xba65, 0xba66, 0xba67, 0xba68, 0xba69,
+ 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0x0000, 0x0000,
+ 0x0000, 0xba70, 0xba71, 0xba72, 0xba73, 0xba74, 0xba75, 0xba76,
+ 0xba77, 0xba78, 0xba79, 0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba7e,
+ 0xba7f, 0xba80, 0x0000, 0xba81, 0xba82, 0xba83, 0xba84, 0xba85,
+ 0xba86, 0xba87, 0xba88, 0xba89, 0xba8a, 0xba8b, 0x0000, 0x0000,
+ 0x0000, 0xba8c, 0xba8d, 0xba8e, 0xba8f, 0xba90, 0xba91, 0xba92,
+ 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99, 0xba9a,
+ 0xba9b, 0xba9c, 0x0000, 0xba9d, 0xba9e, 0xba9f, 0xbaa0, 0xbaa1,
+ 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0x0000, 0x0000,
+ 0x0000, 0xbaa8, 0xbaa9, 0xbaaa, 0xbaab, 0xbaac, 0xbaad, 0xbaae,
+ 0xbaaf, 0xbab0, 0xbab1, 0xbab2, 0xbab3, 0xbab4, 0xbab5, 0xbab6,
+ 0xbab7, 0xbab8, 0x0000, 0xbab9, 0xbaba, 0xbabb, 0xbabc, 0xbabd,
+ 0xbabe, 0xbabf, 0xbac0, 0xbac1, 0xbac2, 0xbac3, 0x0000, 0x0000,
+ 0x0000, 0xbac4, 0xbac5, 0xbac6, 0xbac7, 0xbac8, 0xbac9, 0xbaca,
+ 0xbacb, 0xbacc, 0xbacd, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad2,
+ 0xbad3, 0xbad4, 0x0000, 0xbad5, 0xbad6, 0xbad7, 0xbad8, 0xbad9,
+ 0xbada, 0xbadb, 0xbadc, 0xbadd, 0xbade, 0xbadf, 0x0000, 0x0000,
+ 0x0000, 0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6,
+ 0xbae7, 0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee,
+ 0xbaef, 0xbaf0, 0x0000, 0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5,
+ 0xbaf6, 0xbaf7, 0xbaf8, 0xbaf9, 0xbafa, 0xbafb, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xbafc, 0xbafd, 0xbafe, 0xbaff, 0xbb00, 0xbb01, 0xbb02,
+ 0xbb03, 0xbb04, 0xbb05, 0xbb06, 0xbb07, 0xbb08, 0xbb09, 0xbb0a,
+ 0xbb0b, 0xbb0c, 0x0000, 0xbb0d, 0xbb0e, 0xbb0f, 0xbb10, 0xbb11,
+ 0xbb12, 0xbb13, 0xbb14, 0xbb15, 0xbb16, 0xbb17, 0x0000, 0x0000,
+ 0x0000, 0xbb18, 0xbb19, 0xbb1a, 0xbb1b, 0xbb1c, 0xbb1d, 0xbb1e,
+ 0xbb1f, 0xbb20, 0xbb21, 0xbb22, 0xbb23, 0xbb24, 0xbb25, 0xbb26,
+ 0xbb27, 0xbb28, 0x0000, 0xbb29, 0xbb2a, 0xbb2b, 0xbb2c, 0xbb2d,
+ 0xbb2e, 0xbb2f, 0xbb30, 0xbb31, 0xbb32, 0xbb33, 0x0000, 0x0000,
+ 0x0000, 0xbb34, 0xbb35, 0xbb36, 0xbb37, 0xbb38, 0xbb39, 0xbb3a,
+ 0xbb3b, 0xbb3c, 0xbb3d, 0xbb3e, 0xbb3f, 0xbb40, 0xbb41, 0xbb42,
+ 0xbb43, 0xbb44, 0x0000, 0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49,
+ 0xbb4a, 0xbb4b, 0xbb4c, 0xbb4d, 0xbb4e, 0xbb4f, 0x0000, 0x0000,
+ 0x0000, 0xbb50, 0xbb51, 0xbb52, 0xbb53, 0xbb54, 0xbb55, 0xbb56,
+ 0xbb57, 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c, 0xbb5d, 0xbb5e,
+ 0xbb5f, 0xbb60, 0x0000, 0xbb61, 0xbb62, 0xbb63, 0xbb64, 0xbb65,
+ 0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0x0000, 0x0000,
+ 0x0000, 0xbb6c, 0xbb6d, 0xbb6e, 0xbb6f, 0xbb70, 0xbb71, 0xbb72,
+ 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, 0xbb78, 0xbb79, 0xbb7a,
+ 0xbb7b, 0xbb7c, 0x0000, 0xbb7d, 0xbb7e, 0xbb7f, 0xbb80, 0xbb81,
+ 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, 0xbb87, 0x0000, 0x0000,
+ 0x0000, 0xbb88, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8c, 0xbb8d, 0xbb8e,
+ 0xbb8f, 0xbb90, 0xbb91, 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96,
+ 0xbb97, 0xbb98, 0x0000, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d,
+ 0xbb9e, 0xbb9f, 0xbba0, 0xbba1, 0xbba2, 0xbba3, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xbba4, 0xbba5, 0xbba6, 0xbba7, 0xbba8, 0xbba9, 0xbbaa,
+ 0xbbab, 0xbbac, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0, 0xbbb1, 0xbbb2,
+ 0xbbb3, 0xbbb4, 0x0000, 0xbbb5, 0xbbb6, 0xbbb7, 0xbbb8, 0xbbb9,
+ 0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, 0x0000, 0x0000,
+ 0x0000, 0xbbc0, 0xbbc1, 0xbbc2, 0xbbc3, 0xbbc4, 0xbbc5, 0xbbc6,
+ 0xbbc7, 0xbbc8, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce,
+ 0xbbcf, 0xbbd0, 0x0000, 0xbbd1, 0xbbd2, 0xbbd3, 0xbbd4, 0xbbd5,
+ 0xbbd6, 0xbbd7, 0xbbd8, 0xbbd9, 0xbbda, 0xbbdb, 0x0000, 0x0000,
+ 0x0000, 0xbbdc, 0xbbdd, 0xbbde, 0xbbdf, 0xbbe0, 0xbbe1, 0xbbe2,
+ 0xbbe3, 0xbbe4, 0xbbe5, 0xbbe6, 0xbbe7, 0xbbe8, 0xbbe9, 0xbbea,
+ 0xbbeb, 0xbbec, 0x0000, 0xbbed, 0xbbee, 0xbbef, 0xbbf0, 0xbbf1,
+ 0xbbf2, 0xbbf3, 0xbbf4, 0xbbf5, 0xbbf6, 0xbbf7, 0x0000, 0x0000,
+ 0x0000, 0xbbf8, 0xbbf9, 0xbbfa, 0xbbfb, 0xbbfc, 0xbbfd, 0xbbfe,
+ 0xbbff, 0xbc00, 0xbc01, 0xbc02, 0xbc03, 0xbc04, 0xbc05, 0xbc06,
+ 0xbc07, 0xbc08, 0x0000, 0xbc09, 0xbc0a, 0xbc0b, 0xbc0c, 0xbc0d,
+ 0xbc0e, 0xbc0f, 0xbc10, 0xbc11, 0xbc12, 0xbc13, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc19, 0xbc1a,
+ 0xbc1b, 0xbc1c, 0xbc1d, 0xbc1e, 0xbc1f, 0xbc20, 0xbc21, 0xbc22,
+ 0xbc23, 0xbc24, 0x0000, 0xbc25, 0xbc26, 0xbc27, 0xbc28, 0xbc29,
+ 0xbc2a, 0xbc2b, 0xbc2c, 0xbc2d, 0xbc2e, 0xbc2f, 0x0000, 0x0000,
+ 0x0000, 0xbc30, 0xbc31, 0xbc32, 0xbc33, 0xbc34, 0xbc35, 0xbc36,
+ 0xbc37, 0xbc38, 0xbc39, 0xbc3a, 0xbc3b, 0xbc3c, 0xbc3d, 0xbc3e,
+ 0xbc3f, 0xbc40, 0x0000, 0xbc41, 0xbc42, 0xbc43, 0xbc44, 0xbc45,
+ 0xbc46, 0xbc47, 0xbc48, 0xbc49, 0xbc4a, 0xbc4b, 0x0000, 0x0000,
+ 0x0000, 0xbc4c, 0xbc4d, 0xbc4e, 0xbc4f, 0xbc50, 0xbc51, 0xbc52,
+ 0xbc53, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58, 0xbc59, 0xbc5a,
+ 0xbc5b, 0xbc5c, 0x0000, 0xbc5d, 0xbc5e, 0xbc5f, 0xbc60, 0xbc61,
+ 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0x0000, 0x0000,
+ 0x0000, 0xbc68, 0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e,
+ 0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76,
+ 0xbc77, 0xbc78, 0x0000, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d,
+ 0xbc7e, 0xbc7f, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0x0000, 0x0000,
+ 0x0000, 0xbc84, 0xbc85, 0xbc86, 0xbc87, 0xbc88, 0xbc89, 0xbc8a,
+ 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, 0xbc8f, 0xbc90, 0xbc91, 0xbc92,
+ 0xbc93, 0xbc94, 0x0000, 0xbc95, 0xbc96, 0xbc97, 0xbc98, 0xbc99,
+ 0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xbca0, 0xbca1, 0xbca2, 0xbca3, 0xbca4, 0xbca5, 0xbca6,
+ 0xbca7, 0xbca8, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, 0xbcad, 0xbcae,
+ 0xbcaf, 0xbcb0, 0x0000, 0xbcb1, 0xbcb2, 0xbcb3, 0xbcb4, 0xbcb5,
+ 0xbcb6, 0xbcb7, 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0x0000, 0x0000,
+ 0x0000, 0xbcbc, 0xbcbd, 0xbcbe, 0xbcbf, 0xbcc0, 0xbcc1, 0xbcc2,
+ 0xbcc3, 0xbcc4, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, 0xbcc9, 0xbcca,
+ 0xbccb, 0xbccc, 0x0000, 0xbccd, 0xbcce, 0xbccf, 0xbcd0, 0xbcd1,
+ 0xbcd2, 0xbcd3, 0xbcd4, 0xbcd5, 0xbcd6, 0xbcd7, 0x0000, 0x0000,
+ 0x0000, 0xbcd8, 0xbcd9, 0xbcda, 0xbcdb, 0xbcdc, 0xbcdd, 0xbcde,
+ 0xbcdf, 0xbce0, 0xbce1, 0xbce2, 0xbce3, 0xbce4, 0xbce5, 0xbce6,
+ 0xbce7, 0xbce8, 0x0000, 0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced,
+ 0xbcee, 0xbcef, 0xbcf0, 0xbcf1, 0xbcf2, 0xbcf3, 0x0000, 0x0000,
+ 0x0000, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf7, 0xbcf8, 0xbcf9, 0xbcfa,
+ 0xbcfb, 0xbcfc, 0xbcfd, 0xbcfe, 0xbcff, 0xbd00, 0xbd01, 0xbd02,
+ 0xbd03, 0xbd04, 0x0000, 0xbd05, 0xbd06, 0xbd07, 0xbd08, 0xbd09,
+ 0xbd0a, 0xbd0b, 0xbd0c, 0xbd0d, 0xbd0e, 0xbd0f, 0x0000, 0x0000,
+ 0x0000, 0xbd10, 0xbd11, 0xbd12, 0xbd13, 0xbd14, 0xbd15, 0xbd16,
+ 0xbd17, 0xbd18, 0xbd19, 0xbd1a, 0xbd1b, 0xbd1c, 0xbd1d, 0xbd1e,
+ 0xbd1f, 0xbd20, 0x0000, 0xbd21, 0xbd22, 0xbd23, 0xbd24, 0xbd25,
+ 0xbd26, 0xbd27, 0xbd28, 0xbd29, 0xbd2a, 0xbd2b, 0x0000, 0x0000,
+ 0x0000, 0xbd2c, 0xbd2d, 0xbd2e, 0xbd2f, 0xbd30, 0xbd31, 0xbd32,
+ 0xbd33, 0xbd34, 0xbd35, 0xbd36, 0xbd37, 0xbd38, 0xbd39, 0xbd3a,
+ 0xbd3b, 0xbd3c, 0x0000, 0xbd3d, 0xbd3e, 0xbd3f, 0xbd40, 0xbd41,
+ 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xbd48, 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e,
+ 0xbd4f, 0xbd50, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56,
+ 0xbd57, 0xbd58, 0x0000, 0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d,
+ 0xbd5e, 0xbd5f, 0xbd60, 0xbd61, 0xbd62, 0xbd63, 0x0000, 0x0000,
+ 0x0000, 0xbd64, 0xbd65, 0xbd66, 0xbd67, 0xbd68, 0xbd69, 0xbd6a,
+ 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, 0xbd71, 0xbd72,
+ 0xbd73, 0xbd74, 0x0000, 0xbd75, 0xbd76, 0xbd77, 0xbd78, 0xbd79,
+ 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd7f, 0x0000, 0x0000,
+ 0x0000, 0xbd80, 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86,
+ 0xbd87, 0xbd88, 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e,
+ 0xbd8f, 0xbd90, 0x0000, 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95,
+ 0xbd96, 0xbd97, 0xbd98, 0xbd99, 0xbd9a, 0xbd9b, 0x0000, 0x0000,
+ 0x0000, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f, 0xbda0, 0xbda1, 0xbda2,
+ 0xbda3, 0xbda4, 0xbda5, 0xbda6, 0xbda7, 0xbda8, 0xbda9, 0xbdaa,
+ 0xbdab, 0xbdac, 0x0000, 0xbdad, 0xbdae, 0xbdaf, 0xbdb0, 0xbdb1,
+ 0xbdb2, 0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7, 0x0000, 0x0000,
+ 0x0000, 0xbdb8, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd, 0xbdbe,
+ 0xbdbf, 0xbdc0, 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6,
+ 0xbdc7, 0xbdc8, 0x0000, 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, 0xbdcd,
+ 0xbdce, 0xbdcf, 0xbdd0, 0xbdd1, 0xbdd2, 0xbdd3, 0x0000, 0x0000,
+ 0x0000, 0xbdd4, 0xbdd5, 0xbdd6, 0xbdd7, 0xbdd8, 0xbdd9, 0xbdda,
+ 0xbddb, 0xbddc, 0xbddd, 0xbdde, 0xbddf, 0xbde0, 0xbde1, 0xbde2,
+ 0xbde3, 0xbde4, 0x0000, 0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbde9,
+ 0xbdea, 0xbdeb, 0xbdec, 0xbded, 0xbdee, 0xbdef, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xbdf0, 0xbdf1, 0xbdf2, 0xbdf3, 0xbdf4, 0xbdf5, 0xbdf6,
+ 0xbdf7, 0xbdf8, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe,
+ 0xbdff, 0xbe00, 0x0000, 0xbe01, 0xbe02, 0xbe03, 0xbe04, 0xbe05,
+ 0xbe06, 0xbe07, 0xbe08, 0xbe09, 0xbe0a, 0xbe0b, 0x0000, 0x0000,
+ 0x0000, 0xbe0c, 0xbe0d, 0xbe0e, 0xbe0f, 0xbe10, 0xbe11, 0xbe12,
+ 0xbe13, 0xbe14, 0xbe15, 0xbe16, 0xbe17, 0xbe18, 0xbe19, 0xbe1a,
+ 0xbe1b, 0xbe1c, 0x0000, 0xbe1d, 0xbe1e, 0xbe1f, 0xbe20, 0xbe21,
+ 0xbe22, 0xbe23, 0xbe24, 0xbe25, 0xbe26, 0xbe27, 0x0000, 0x0000,
+ 0x0000, 0xbe28, 0xbe29, 0xbe2a, 0xbe2b, 0xbe2c, 0xbe2d, 0xbe2e,
+ 0xbe2f, 0xbe30, 0xbe31, 0xbe32, 0xbe33, 0xbe34, 0xbe35, 0xbe36,
+ 0xbe37, 0xbe38, 0x0000, 0xbe39, 0xbe3a, 0xbe3b, 0xbe3c, 0xbe3d,
+ 0xbe3e, 0xbe3f, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0x0000, 0x0000,
+ 0x0000, 0xbe44, 0xbe45, 0xbe46, 0xbe47, 0xbe48, 0xbe49, 0xbe4a,
+ 0xbe4b, 0xbe4c, 0xbe4d, 0xbe4e, 0xbe4f, 0xbe50, 0xbe51, 0xbe52,
+ 0xbe53, 0xbe54, 0x0000, 0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59,
+ 0xbe5a, 0xbe5b, 0xbe5c, 0xbe5d, 0xbe5e, 0xbe5f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3143, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64, 0xbe65, 0xbe66,
+ 0xbe67, 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e,
+ 0xbe6f, 0xbe70, 0x0000, 0xbe71, 0xbe72, 0xbe73, 0xbe74, 0xbe75,
+ 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0x0000, 0x0000,
+ 0x0000, 0xbe7c, 0xbe7d, 0xbe7e, 0xbe7f, 0xbe80, 0xbe81, 0xbe82,
+ 0xbe83, 0xbe84, 0xbe85, 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a,
+ 0xbe8b, 0xbe8c, 0x0000, 0xbe8d, 0xbe8e, 0xbe8f, 0xbe90, 0xbe91,
+ 0xbe92, 0xbe93, 0xbe94, 0xbe95, 0xbe96, 0xbe97, 0x0000, 0x0000,
+ 0x0000, 0xbe98, 0xbe99, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e,
+ 0xbe9f, 0xbea0, 0xbea1, 0xbea2, 0xbea3, 0xbea4, 0xbea5, 0xbea6,
+ 0xbea7, 0xbea8, 0x0000, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead,
+ 0xbeae, 0xbeaf, 0xbeb0, 0xbeb1, 0xbeb2, 0xbeb3, 0x0000, 0x0000,
+ 0x0000, 0xbeb4, 0xbeb5, 0xbeb6, 0xbeb7, 0xbeb8, 0xbeb9, 0xbeba,
+ 0xbebb, 0xbebc, 0xbebd, 0xbebe, 0xbebf, 0xbec0, 0xbec1, 0xbec2,
+ 0xbec3, 0xbec4, 0x0000, 0xbec5, 0xbec6, 0xbec7, 0xbec8, 0xbec9,
+ 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf, 0x0000, 0x0000,
+ 0x0000, 0xbed0, 0xbed1, 0xbed2, 0xbed3, 0xbed4, 0xbed5, 0xbed6,
+ 0xbed7, 0xbed8, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede,
+ 0xbedf, 0xbee0, 0x0000, 0xbee1, 0xbee2, 0xbee3, 0xbee4, 0xbee5,
+ 0xbee6, 0xbee7, 0xbee8, 0xbee9, 0xbeea, 0xbeeb, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xbeec, 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef2,
+ 0xbef3, 0xbef4, 0xbef5, 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa,
+ 0xbefb, 0xbefc, 0x0000, 0xbefd, 0xbefe, 0xbeff, 0xbf00, 0xbf01,
+ 0xbf02, 0xbf03, 0xbf04, 0xbf05, 0xbf06, 0xbf07, 0x0000, 0x0000,
+ 0x0000, 0xbf08, 0xbf09, 0xbf0a, 0xbf0b, 0xbf0c, 0xbf0d, 0xbf0e,
+ 0xbf0f, 0xbf10, 0xbf11, 0xbf12, 0xbf13, 0xbf14, 0xbf15, 0xbf16,
+ 0xbf17, 0xbf18, 0x0000, 0xbf19, 0xbf1a, 0xbf1b, 0xbf1c, 0xbf1d,
+ 0xbf1e, 0xbf1f, 0xbf20, 0xbf21, 0xbf22, 0xbf23, 0x0000, 0x0000,
+ 0x0000, 0xbf24, 0xbf25, 0xbf26, 0xbf27, 0xbf28, 0xbf29, 0xbf2a,
+ 0xbf2b, 0xbf2c, 0xbf2d, 0xbf2e, 0xbf2f, 0xbf30, 0xbf31, 0xbf32,
+ 0xbf33, 0xbf34, 0x0000, 0xbf35, 0xbf36, 0xbf37, 0xbf38, 0xbf39,
+ 0xbf3a, 0xbf3b, 0xbf3c, 0xbf3d, 0xbf3e, 0xbf3f, 0x0000, 0x0000,
+ 0x0000, 0xbf40, 0xbf41, 0xbf42, 0xbf43, 0xbf44, 0xbf45, 0xbf46,
+ 0xbf47, 0xbf48, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e,
+ 0xbf4f, 0xbf50, 0x0000, 0xbf51, 0xbf52, 0xbf53, 0xbf54, 0xbf55,
+ 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0x0000, 0x0000,
+ 0x0000, 0xbf5c, 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62,
+ 0xbf63, 0xbf64, 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a,
+ 0xbf6b, 0xbf6c, 0x0000, 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71,
+ 0xbf72, 0xbf73, 0xbf74, 0xbf75, 0xbf76, 0xbf77, 0x0000, 0x0000,
+ 0x0000, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, 0xbf7e,
+ 0xbf7f, 0xbf80, 0xbf81, 0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86,
+ 0xbf87, 0xbf88, 0x0000, 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d,
+ 0xbf8e, 0xbf8f, 0xbf90, 0xbf91, 0xbf92, 0xbf93, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a,
+ 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0, 0xbfa1, 0xbfa2,
+ 0xbfa3, 0xbfa4, 0x0000, 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9,
+ 0xbfaa, 0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf, 0x0000, 0x0000,
+ 0x0000, 0xbfb0, 0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4, 0xbfb5, 0xbfb6,
+ 0xbfb7, 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe,
+ 0xbfbf, 0xbfc0, 0x0000, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc5,
+ 0xbfc6, 0xbfc7, 0xbfc8, 0xbfc9, 0xbfca, 0xbfcb, 0x0000, 0x0000,
+ 0x0000, 0xbfcc, 0xbfcd, 0xbfce, 0xbfcf, 0xbfd0, 0xbfd1, 0xbfd2,
+ 0xbfd3, 0xbfd4, 0xbfd5, 0xbfd6, 0xbfd7, 0xbfd8, 0xbfd9, 0xbfda,
+ 0xbfdb, 0xbfdc, 0x0000, 0xbfdd, 0xbfde, 0xbfdf, 0xbfe0, 0xbfe1,
+ 0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5, 0xbfe6, 0xbfe7, 0x0000, 0x0000,
+ 0x0000, 0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee,
+ 0xbfef, 0xbff0, 0xbff1, 0xbff2, 0xbff3, 0xbff4, 0xbff5, 0xbff6,
+ 0xbff7, 0xbff8, 0x0000, 0xbff9, 0xbffa, 0xbffb, 0xbffc, 0xbffd,
+ 0xbffe, 0xbfff, 0xc000, 0xc001, 0xc002, 0xc003, 0x0000, 0x0000,
+ 0x0000, 0xc004, 0xc005, 0xc006, 0xc007, 0xc008, 0xc009, 0xc00a,
+ 0xc00b, 0xc00c, 0xc00d, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc012,
+ 0xc013, 0xc014, 0x0000, 0xc015, 0xc016, 0xc017, 0xc018, 0xc019,
+ 0xc01a, 0xc01b, 0xc01c, 0xc01d, 0xc01e, 0xc01f, 0x0000, 0x0000,
+ 0x0000, 0xc020, 0xc021, 0xc022, 0xc023, 0xc024, 0xc025, 0xc026,
+ 0xc027, 0xc028, 0xc029, 0xc02a, 0xc02b, 0xc02c, 0xc02d, 0xc02e,
+ 0xc02f, 0xc030, 0x0000, 0xc031, 0xc032, 0xc033, 0xc034, 0xc035,
+ 0xc036, 0xc037, 0xc038, 0xc039, 0xc03a, 0xc03b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc03c, 0xc03d, 0xc03e, 0xc03f, 0xc040, 0xc041, 0xc042,
+ 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, 0xc04a,
+ 0xc04b, 0xc04c, 0x0000, 0xc04d, 0xc04e, 0xc04f, 0xc050, 0xc051,
+ 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0x0000, 0x0000,
+ 0x0000, 0xc058, 0xc059, 0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e,
+ 0xc05f, 0xc060, 0xc061, 0xc062, 0xc063, 0xc064, 0xc065, 0xc066,
+ 0xc067, 0xc068, 0x0000, 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d,
+ 0xc06e, 0xc06f, 0xc070, 0xc071, 0xc072, 0xc073, 0x0000, 0x0000,
+ 0x0000, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078, 0xc079, 0xc07a,
+ 0xc07b, 0xc07c, 0xc07d, 0xc07e, 0xc07f, 0xc080, 0xc081, 0xc082,
+ 0xc083, 0xc084, 0x0000, 0xc085, 0xc086, 0xc087, 0xc088, 0xc089,
+ 0xc08a, 0xc08b, 0xc08c, 0xc08d, 0xc08e, 0xc08f, 0x0000, 0x0000,
+ 0x0000, 0xc090, 0xc091, 0xc092, 0xc093, 0xc094, 0xc095, 0xc096,
+ 0xc097, 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e,
+ 0xc09f, 0xc0a0, 0x0000, 0xc0a1, 0xc0a2, 0xc0a3, 0xc0a4, 0xc0a5,
+ 0xc0a6, 0xc0a7, 0xc0a8, 0xc0a9, 0xc0aa, 0xc0ab, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc0ac, 0xc0ad, 0xc0ae, 0xc0af, 0xc0b0, 0xc0b1, 0xc0b2,
+ 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0b7, 0xc0b8, 0xc0b9, 0xc0ba,
+ 0xc0bb, 0xc0bc, 0x0000, 0xc0bd, 0xc0be, 0xc0bf, 0xc0c0, 0xc0c1,
+ 0xc0c2, 0xc0c3, 0xc0c4, 0xc0c5, 0xc0c6, 0xc0c7, 0x0000, 0x0000,
+ 0x0000, 0xc0c8, 0xc0c9, 0xc0ca, 0xc0cb, 0xc0cc, 0xc0cd, 0xc0ce,
+ 0xc0cf, 0xc0d0, 0xc0d1, 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6,
+ 0xc0d7, 0xc0d8, 0x0000, 0xc0d9, 0xc0da, 0xc0db, 0xc0dc, 0xc0dd,
+ 0xc0de, 0xc0df, 0xc0e0, 0xc0e1, 0xc0e2, 0xc0e3, 0x0000, 0x0000,
+ 0x0000, 0xc0e4, 0xc0e5, 0xc0e6, 0xc0e7, 0xc0e8, 0xc0e9, 0xc0ea,
+ 0xc0eb, 0xc0ec, 0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0, 0xc0f1, 0xc0f2,
+ 0xc0f3, 0xc0f4, 0x0000, 0xc0f5, 0xc0f6, 0xc0f7, 0xc0f8, 0xc0f9,
+ 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc0ff, 0x0000, 0x0000,
+ 0x0000, 0xc100, 0xc101, 0xc102, 0xc103, 0xc104, 0xc105, 0xc106,
+ 0xc107, 0xc108, 0xc109, 0xc10a, 0xc10b, 0xc10c, 0xc10d, 0xc10e,
+ 0xc10f, 0xc110, 0x0000, 0xc111, 0xc112, 0xc113, 0xc114, 0xc115,
+ 0xc116, 0xc117, 0xc118, 0xc119, 0xc11a, 0xc11b, 0x0000, 0x0000,
+ 0x0000, 0xc11c, 0xc11d, 0xc11e, 0xc11f, 0xc120, 0xc121, 0xc122,
+ 0xc123, 0xc124, 0xc125, 0xc126, 0xc127, 0xc128, 0xc129, 0xc12a,
+ 0xc12b, 0xc12c, 0x0000, 0xc12d, 0xc12e, 0xc12f, 0xc130, 0xc131,
+ 0xc132, 0xc133, 0xc134, 0xc135, 0xc136, 0xc137, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc138, 0xc139, 0xc13a, 0xc13b, 0xc13c, 0xc13d, 0xc13e,
+ 0xc13f, 0xc140, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145, 0xc146,
+ 0xc147, 0xc148, 0x0000, 0xc149, 0xc14a, 0xc14b, 0xc14c, 0xc14d,
+ 0xc14e, 0xc14f, 0xc150, 0xc151, 0xc152, 0xc153, 0x0000, 0x0000,
+ 0x0000, 0xc154, 0xc155, 0xc156, 0xc157, 0xc158, 0xc159, 0xc15a,
+ 0xc15b, 0xc15c, 0xc15d, 0xc15e, 0xc15f, 0xc160, 0xc161, 0xc162,
+ 0xc163, 0xc164, 0x0000, 0xc165, 0xc166, 0xc167, 0xc168, 0xc169,
+ 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, 0x0000, 0x0000,
+ 0x0000, 0xc170, 0xc171, 0xc172, 0xc173, 0xc174, 0xc175, 0xc176,
+ 0xc177, 0xc178, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc17e,
+ 0xc17f, 0xc180, 0x0000, 0xc181, 0xc182, 0xc183, 0xc184, 0xc185,
+ 0xc186, 0xc187, 0xc188, 0xc189, 0xc18a, 0xc18b, 0x0000, 0x0000,
+ 0x0000, 0xc18c, 0xc18d, 0xc18e, 0xc18f, 0xc190, 0xc191, 0xc192,
+ 0xc193, 0xc194, 0xc195, 0xc196, 0xc197, 0xc198, 0xc199, 0xc19a,
+ 0xc19b, 0xc19c, 0x0000, 0xc19d, 0xc19e, 0xc19f, 0xc1a0, 0xc1a1,
+ 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a5, 0xc1a6, 0xc1a7, 0x0000, 0x0000,
+ 0x0000, 0xc1a8, 0xc1a9, 0xc1aa, 0xc1ab, 0xc1ac, 0xc1ad, 0xc1ae,
+ 0xc1af, 0xc1b0, 0xc1b1, 0xc1b2, 0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6,
+ 0xc1b7, 0xc1b8, 0x0000, 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1bd,
+ 0xc1be, 0xc1bf, 0xc1c0, 0xc1c1, 0xc1c2, 0xc1c3, 0x0000, 0x0000,
+ 0x0000, 0xc1c4, 0xc1c5, 0xc1c6, 0xc1c7, 0xc1c8, 0xc1c9, 0xc1ca,
+ 0xc1cb, 0xc1cc, 0xc1cd, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d2,
+ 0xc1d3, 0xc1d4, 0x0000, 0xc1d5, 0xc1d6, 0xc1d7, 0xc1d8, 0xc1d9,
+ 0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de, 0xc1df, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc1e0, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e6,
+ 0xc1e7, 0xc1e8, 0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ed, 0xc1ee,
+ 0xc1ef, 0xc1f0, 0x0000, 0xc1f1, 0xc1f2, 0xc1f3, 0xc1f4, 0xc1f5,
+ 0xc1f6, 0xc1f7, 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0x0000, 0x0000,
+ 0x0000, 0xc1fc, 0xc1fd, 0xc1fe, 0xc1ff, 0xc200, 0xc201, 0xc202,
+ 0xc203, 0xc204, 0xc205, 0xc206, 0xc207, 0xc208, 0xc209, 0xc20a,
+ 0xc20b, 0xc20c, 0x0000, 0xc20d, 0xc20e, 0xc20f, 0xc210, 0xc211,
+ 0xc212, 0xc213, 0xc214, 0xc215, 0xc216, 0xc217, 0x0000, 0x0000,
+ 0x0000, 0xc218, 0xc219, 0xc21a, 0xc21b, 0xc21c, 0xc21d, 0xc21e,
+ 0xc21f, 0xc220, 0xc221, 0xc222, 0xc223, 0xc224, 0xc225, 0xc226,
+ 0xc227, 0xc228, 0x0000, 0xc229, 0xc22a, 0xc22b, 0xc22c, 0xc22d,
+ 0xc22e, 0xc22f, 0xc230, 0xc231, 0xc232, 0xc233, 0x0000, 0x0000,
+ 0x0000, 0xc234, 0xc235, 0xc236, 0xc237, 0xc238, 0xc239, 0xc23a,
+ 0xc23b, 0xc23c, 0xc23d, 0xc23e, 0xc23f, 0xc240, 0xc241, 0xc242,
+ 0xc243, 0xc244, 0x0000, 0xc245, 0xc246, 0xc247, 0xc248, 0xc249,
+ 0xc24a, 0xc24b, 0xc24c, 0xc24d, 0xc24e, 0xc24f, 0x0000, 0x0000,
+ 0x0000, 0xc250, 0xc251, 0xc252, 0xc253, 0xc254, 0xc255, 0xc256,
+ 0xc257, 0xc258, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e,
+ 0xc25f, 0xc260, 0x0000, 0xc261, 0xc262, 0xc263, 0xc264, 0xc265,
+ 0xc266, 0xc267, 0xc268, 0xc269, 0xc26a, 0xc26b, 0x0000, 0x0000,
+ 0x0000, 0xc26c, 0xc26d, 0xc26e, 0xc26f, 0xc270, 0xc271, 0xc272,
+ 0xc273, 0xc274, 0xc275, 0xc276, 0xc277, 0xc278, 0xc279, 0xc27a,
+ 0xc27b, 0xc27c, 0x0000, 0xc27d, 0xc27e, 0xc27f, 0xc280, 0xc281,
+ 0xc282, 0xc283, 0xc284, 0xc285, 0xc286, 0xc287, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d, 0xc28e,
+ 0xc28f, 0xc290, 0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296,
+ 0xc297, 0xc298, 0x0000, 0xc299, 0xc29a, 0xc29b, 0xc29c, 0xc29d,
+ 0xc29e, 0xc29f, 0xc2a0, 0xc2a1, 0xc2a2, 0xc2a3, 0x0000, 0x0000,
+ 0x0000, 0xc2a4, 0xc2a5, 0xc2a6, 0xc2a7, 0xc2a8, 0xc2a9, 0xc2aa,
+ 0xc2ab, 0xc2ac, 0xc2ad, 0xc2ae, 0xc2af, 0xc2b0, 0xc2b1, 0xc2b2,
+ 0xc2b3, 0xc2b4, 0x0000, 0xc2b5, 0xc2b6, 0xc2b7, 0xc2b8, 0xc2b9,
+ 0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2be, 0xc2bf, 0x0000, 0x0000,
+ 0x0000, 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6,
+ 0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce,
+ 0xc2cf, 0xc2d0, 0x0000, 0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5,
+ 0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0x0000, 0x0000,
+ 0x0000, 0xc2dc, 0xc2dd, 0xc2de, 0xc2df, 0xc2e0, 0xc2e1, 0xc2e2,
+ 0xc2e3, 0xc2e4, 0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, 0xc2e9, 0xc2ea,
+ 0xc2eb, 0xc2ec, 0x0000, 0xc2ed, 0xc2ee, 0xc2ef, 0xc2f0, 0xc2f1,
+ 0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f6, 0xc2f7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc2f8, 0xc2f9, 0xc2fa, 0xc2fb, 0xc2fc, 0xc2fd, 0xc2fe,
+ 0xc2ff, 0xc300, 0xc301, 0xc302, 0xc303, 0xc304, 0xc305, 0xc306,
+ 0xc307, 0xc308, 0x0000, 0xc309, 0xc30a, 0xc30b, 0xc30c, 0xc30d,
+ 0xc30e, 0xc30f, 0xc310, 0xc311, 0xc312, 0xc313, 0x0000, 0x0000,
+ 0x0000, 0xc314, 0xc315, 0xc316, 0xc317, 0xc318, 0xc319, 0xc31a,
+ 0xc31b, 0xc31c, 0xc31d, 0xc31e, 0xc31f, 0xc320, 0xc321, 0xc322,
+ 0xc323, 0xc324, 0x0000, 0xc325, 0xc326, 0xc327, 0xc328, 0xc329,
+ 0xc32a, 0xc32b, 0xc32c, 0xc32d, 0xc32e, 0xc32f, 0x0000, 0x0000,
+ 0x0000, 0xc330, 0xc331, 0xc332, 0xc333, 0xc334, 0xc335, 0xc336,
+ 0xc337, 0xc338, 0xc339, 0xc33a, 0xc33b, 0xc33c, 0xc33d, 0xc33e,
+ 0xc33f, 0xc340, 0x0000, 0xc341, 0xc342, 0xc343, 0xc344, 0xc345,
+ 0xc346, 0xc347, 0xc348, 0xc349, 0xc34a, 0xc34b, 0x0000, 0x0000,
+ 0x0000, 0xc34c, 0xc34d, 0xc34e, 0xc34f, 0xc350, 0xc351, 0xc352,
+ 0xc353, 0xc354, 0xc355, 0xc356, 0xc357, 0xc358, 0xc359, 0xc35a,
+ 0xc35b, 0xc35c, 0x0000, 0xc35d, 0xc35e, 0xc35f, 0xc360, 0xc361,
+ 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, 0x0000, 0x0000,
+ 0x0000, 0xc368, 0xc369, 0xc36a, 0xc36b, 0xc36c, 0xc36d, 0xc36e,
+ 0xc36f, 0xc370, 0xc371, 0xc372, 0xc373, 0xc374, 0xc375, 0xc376,
+ 0xc377, 0xc378, 0x0000, 0xc379, 0xc37a, 0xc37b, 0xc37c, 0xc37d,
+ 0xc37e, 0xc37f, 0xc380, 0xc381, 0xc382, 0xc383, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc384, 0xc385, 0xc386, 0xc387, 0xc388, 0xc389, 0xc38a,
+ 0xc38b, 0xc38c, 0xc38d, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc392,
+ 0xc393, 0xc394, 0x0000, 0xc395, 0xc396, 0xc397, 0xc398, 0xc399,
+ 0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0x0000, 0x0000,
+ 0x0000, 0xc3a0, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4, 0xc3a5, 0xc3a6,
+ 0xc3a7, 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae,
+ 0xc3af, 0xc3b0, 0x0000, 0xc3b1, 0xc3b2, 0xc3b3, 0xc3b4, 0xc3b5,
+ 0xc3b6, 0xc3b7, 0xc3b8, 0xc3b9, 0xc3ba, 0xc3bb, 0x0000, 0x0000,
+ 0x0000, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf, 0xc3c0, 0xc3c1, 0xc3c2,
+ 0xc3c3, 0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, 0xc3c8, 0xc3c9, 0xc3ca,
+ 0xc3cb, 0xc3cc, 0x0000, 0xc3cd, 0xc3ce, 0xc3cf, 0xc3d0, 0xc3d1,
+ 0xc3d2, 0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6, 0xc3d7, 0x0000, 0x0000,
+ 0x0000, 0xc3d8, 0xc3d9, 0xc3da, 0xc3db, 0xc3dc, 0xc3dd, 0xc3de,
+ 0xc3df, 0xc3e0, 0xc3e1, 0xc3e2, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6,
+ 0xc3e7, 0xc3e8, 0x0000, 0xc3e9, 0xc3ea, 0xc3eb, 0xc3ec, 0xc3ed,
+ 0xc3ee, 0xc3ef, 0xc3f0, 0xc3f1, 0xc3f2, 0xc3f3, 0x0000, 0x0000,
+ 0x0000, 0xc3f4, 0xc3f5, 0xc3f6, 0xc3f7, 0xc3f8, 0xc3f9, 0xc3fa,
+ 0xc3fb, 0xc3fc, 0xc3fd, 0xc3fe, 0xc3ff, 0xc400, 0xc401, 0xc402,
+ 0xc403, 0xc404, 0x0000, 0xc405, 0xc406, 0xc407, 0xc408, 0xc409,
+ 0xc40a, 0xc40b, 0xc40c, 0xc40d, 0xc40e, 0xc40f, 0x0000, 0x0000,
+ 0x0000, 0xc410, 0xc411, 0xc412, 0xc413, 0xc414, 0xc415, 0xc416,
+ 0xc417, 0xc418, 0xc419, 0xc41a, 0xc41b, 0xc41c, 0xc41d, 0xc41e,
+ 0xc41f, 0xc420, 0x0000, 0xc421, 0xc422, 0xc423, 0xc424, 0xc425,
+ 0xc426, 0xc427, 0xc428, 0xc429, 0xc42a, 0xc42b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc42c, 0xc42d, 0xc42e, 0xc42f, 0xc430, 0xc431, 0xc432,
+ 0xc433, 0xc434, 0xc435, 0xc436, 0xc437, 0xc438, 0xc439, 0xc43a,
+ 0xc43b, 0xc43c, 0x0000, 0xc43d, 0xc43e, 0xc43f, 0xc440, 0xc441,
+ 0xc442, 0xc443, 0xc444, 0xc445, 0xc446, 0xc447, 0x0000, 0x0000,
+ 0x0000, 0xc448, 0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e,
+ 0xc44f, 0xc450, 0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456,
+ 0xc457, 0xc458, 0x0000, 0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d,
+ 0xc45e, 0xc45f, 0xc460, 0xc461, 0xc462, 0xc463, 0x0000, 0x0000,
+ 0x0000, 0xc464, 0xc465, 0xc466, 0xc467, 0xc468, 0xc469, 0xc46a,
+ 0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc472,
+ 0xc473, 0xc474, 0x0000, 0xc475, 0xc476, 0xc477, 0xc478, 0xc479,
+ 0xc47a, 0xc47b, 0xc47c, 0xc47d, 0xc47e, 0xc47f, 0x0000, 0x0000,
+ 0x0000, 0xc480, 0xc481, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486,
+ 0xc487, 0xc488, 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e,
+ 0xc48f, 0xc490, 0x0000, 0xc491, 0xc492, 0xc493, 0xc494, 0xc495,
+ 0xc496, 0xc497, 0xc498, 0xc499, 0xc49a, 0xc49b, 0x0000, 0x0000,
+ 0x0000, 0xc49c, 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc4a1, 0xc4a2,
+ 0xc4a3, 0xc4a4, 0xc4a5, 0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa,
+ 0xc4ab, 0xc4ac, 0x0000, 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1,
+ 0xc4b2, 0xc4b3, 0xc4b4, 0xc4b5, 0xc4b6, 0xc4b7, 0x0000, 0x0000,
+ 0x0000, 0xc4b8, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bc, 0xc4bd, 0xc4be,
+ 0xc4bf, 0xc4c0, 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c6,
+ 0xc4c7, 0xc4c8, 0x0000, 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd,
+ 0xc4ce, 0xc4cf, 0xc4d0, 0xc4d1, 0xc4d2, 0xc4d3, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc4d4, 0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, 0xc4da,
+ 0xc4db, 0xc4dc, 0xc4dd, 0xc4de, 0xc4df, 0xc4e0, 0xc4e1, 0xc4e2,
+ 0xc4e3, 0xc4e4, 0x0000, 0xc4e5, 0xc4e6, 0xc4e7, 0xc4e8, 0xc4e9,
+ 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef, 0x0000, 0x0000,
+ 0x0000, 0xc4f0, 0xc4f1, 0xc4f2, 0xc4f3, 0xc4f4, 0xc4f5, 0xc4f6,
+ 0xc4f7, 0xc4f8, 0xc4f9, 0xc4fa, 0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe,
+ 0xc4ff, 0xc500, 0x0000, 0xc501, 0xc502, 0xc503, 0xc504, 0xc505,
+ 0xc506, 0xc507, 0xc508, 0xc509, 0xc50a, 0xc50b, 0x0000, 0x0000,
+ 0x0000, 0xc50c, 0xc50d, 0xc50e, 0xc50f, 0xc510, 0xc511, 0xc512,
+ 0xc513, 0xc514, 0xc515, 0xc516, 0xc517, 0xc518, 0xc519, 0xc51a,
+ 0xc51b, 0xc51c, 0x0000, 0xc51d, 0xc51e, 0xc51f, 0xc520, 0xc521,
+ 0xc522, 0xc523, 0xc524, 0xc525, 0xc526, 0xc527, 0x0000, 0x0000,
+ 0x0000, 0xc528, 0xc529, 0xc52a, 0xc52b, 0xc52c, 0xc52d, 0xc52e,
+ 0xc52f, 0xc530, 0xc531, 0xc532, 0xc533, 0xc534, 0xc535, 0xc536,
+ 0xc537, 0xc538, 0x0000, 0xc539, 0xc53a, 0xc53b, 0xc53c, 0xc53d,
+ 0xc53e, 0xc53f, 0xc540, 0xc541, 0xc542, 0xc543, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc544, 0xc545, 0xc546, 0xc547, 0xc548, 0xc549, 0xc54a,
+ 0xc54b, 0xc54c, 0xc54d, 0xc54e, 0xc54f, 0xc550, 0xc551, 0xc552,
+ 0xc553, 0xc554, 0x0000, 0xc555, 0xc556, 0xc557, 0xc558, 0xc559,
+ 0xc55a, 0xc55b, 0xc55c, 0xc55d, 0xc55e, 0xc55f, 0x0000, 0x0000,
+ 0x0000, 0xc560, 0xc561, 0xc562, 0xc563, 0xc564, 0xc565, 0xc566,
+ 0xc567, 0xc568, 0xc569, 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e,
+ 0xc56f, 0xc570, 0x0000, 0xc571, 0xc572, 0xc573, 0xc574, 0xc575,
+ 0xc576, 0xc577, 0xc578, 0xc579, 0xc57a, 0xc57b, 0x0000, 0x0000,
+ 0x0000, 0xc57c, 0xc57d, 0xc57e, 0xc57f, 0xc580, 0xc581, 0xc582,
+ 0xc583, 0xc584, 0xc585, 0xc586, 0xc587, 0xc588, 0xc589, 0xc58a,
+ 0xc58b, 0xc58c, 0x0000, 0xc58d, 0xc58e, 0xc58f, 0xc590, 0xc591,
+ 0xc592, 0xc593, 0xc594, 0xc595, 0xc596, 0xc597, 0x0000, 0x0000,
+ 0x0000, 0xc598, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e,
+ 0xc59f, 0xc5a0, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6,
+ 0xc5a7, 0xc5a8, 0x0000, 0xc5a9, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad,
+ 0xc5ae, 0xc5af, 0xc5b0, 0xc5b1, 0xc5b2, 0xc5b3, 0x0000, 0x0000,
+ 0x0000, 0xc5b4, 0xc5b5, 0xc5b6, 0xc5b7, 0xc5b8, 0xc5b9, 0xc5ba,
+ 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5bf, 0xc5c0, 0xc5c1, 0xc5c2,
+ 0xc5c3, 0xc5c4, 0x0000, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9,
+ 0xc5ca, 0xc5cb, 0xc5cc, 0xc5cd, 0xc5ce, 0xc5cf, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc5d0, 0xc5d1, 0xc5d2, 0xc5d3, 0xc5d4, 0xc5d5, 0xc5d6,
+ 0xc5d7, 0xc5d8, 0xc5d9, 0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5de,
+ 0xc5df, 0xc5e0, 0x0000, 0xc5e1, 0xc5e2, 0xc5e3, 0xc5e4, 0xc5e5,
+ 0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0x0000, 0x0000,
+ 0x0000, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5ef, 0xc5f0, 0xc5f1, 0xc5f2,
+ 0xc5f3, 0xc5f4, 0xc5f5, 0xc5f6, 0xc5f7, 0xc5f8, 0xc5f9, 0xc5fa,
+ 0xc5fb, 0xc5fc, 0x0000, 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601,
+ 0xc602, 0xc603, 0xc604, 0xc605, 0xc606, 0xc607, 0x0000, 0x0000,
+ 0x0000, 0xc608, 0xc609, 0xc60a, 0xc60b, 0xc60c, 0xc60d, 0xc60e,
+ 0xc60f, 0xc610, 0xc611, 0xc612, 0xc613, 0xc614, 0xc615, 0xc616,
+ 0xc617, 0xc618, 0x0000, 0xc619, 0xc61a, 0xc61b, 0xc61c, 0xc61d,
+ 0xc61e, 0xc61f, 0xc620, 0xc621, 0xc622, 0xc623, 0x0000, 0x0000,
+ 0x0000, 0xc624, 0xc625, 0xc626, 0xc627, 0xc628, 0xc629, 0xc62a,
+ 0xc62b, 0xc62c, 0xc62d, 0xc62e, 0xc62f, 0xc630, 0xc631, 0xc632,
+ 0xc633, 0xc634, 0x0000, 0xc635, 0xc636, 0xc637, 0xc638, 0xc639,
+ 0xc63a, 0xc63b, 0xc63c, 0xc63d, 0xc63e, 0xc63f, 0x0000, 0x0000,
+ 0x0000, 0xc640, 0xc641, 0xc642, 0xc643, 0xc644, 0xc645, 0xc646,
+ 0xc647, 0xc648, 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e,
+ 0xc64f, 0xc650, 0x0000, 0xc651, 0xc652, 0xc653, 0xc654, 0xc655,
+ 0xc656, 0xc657, 0xc658, 0xc659, 0xc65a, 0xc65b, 0x0000, 0x0000,
+ 0x0000, 0xc65c, 0xc65d, 0xc65e, 0xc65f, 0xc660, 0xc661, 0xc662,
+ 0xc663, 0xc664, 0xc665, 0xc666, 0xc667, 0xc668, 0xc669, 0xc66a,
+ 0xc66b, 0xc66c, 0x0000, 0xc66d, 0xc66e, 0xc66f, 0xc670, 0xc671,
+ 0xc672, 0xc673, 0xc674, 0xc675, 0xc676, 0xc677, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc678, 0xc679, 0xc67a, 0xc67b, 0xc67c, 0xc67d, 0xc67e,
+ 0xc67f, 0xc680, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686,
+ 0xc687, 0xc688, 0x0000, 0xc689, 0xc68a, 0xc68b, 0xc68c, 0xc68d,
+ 0xc68e, 0xc68f, 0xc690, 0xc691, 0xc692, 0xc693, 0x0000, 0x0000,
+ 0x0000, 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xc699, 0xc69a,
+ 0xc69b, 0xc69c, 0xc69d, 0xc69e, 0xc69f, 0xc6a0, 0xc6a1, 0xc6a2,
+ 0xc6a3, 0xc6a4, 0x0000, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9,
+ 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0x0000, 0x0000,
+ 0x0000, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3, 0xc6b4, 0xc6b5, 0xc6b6,
+ 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, 0xc6be,
+ 0xc6bf, 0xc6c0, 0x0000, 0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5,
+ 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb, 0x0000, 0x0000,
+ 0x0000, 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2,
+ 0xc6d3, 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da,
+ 0xc6db, 0xc6dc, 0x0000, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1,
+ 0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0x0000, 0x0000,
+ 0x0000, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed, 0xc6ee,
+ 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6,
+ 0xc6f7, 0xc6f8, 0x0000, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd,
+ 0xc6fe, 0xc6ff, 0xc700, 0xc701, 0xc702, 0xc703, 0x0000, 0x0000,
+ 0x0000, 0xc704, 0xc705, 0xc706, 0xc707, 0xc708, 0xc709, 0xc70a,
+ 0xc70b, 0xc70c, 0xc70d, 0xc70e, 0xc70f, 0xc710, 0xc711, 0xc712,
+ 0xc713, 0xc714, 0x0000, 0xc715, 0xc716, 0xc717, 0xc718, 0xc719,
+ 0xc71a, 0xc71b, 0xc71c, 0xc71d, 0xc71e, 0xc71f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc720, 0xc721, 0xc722, 0xc723, 0xc724, 0xc725, 0xc726,
+ 0xc727, 0xc728, 0xc729, 0xc72a, 0xc72b, 0xc72c, 0xc72d, 0xc72e,
+ 0xc72f, 0xc730, 0x0000, 0xc731, 0xc732, 0xc733, 0xc734, 0xc735,
+ 0xc736, 0xc737, 0xc738, 0xc739, 0xc73a, 0xc73b, 0x0000, 0x0000,
+ 0x0000, 0xc73c, 0xc73d, 0xc73e, 0xc73f, 0xc740, 0xc741, 0xc742,
+ 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a,
+ 0xc74b, 0xc74c, 0x0000, 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751,
+ 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0x0000, 0x0000,
+ 0x0000, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e,
+ 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766,
+ 0xc767, 0xc768, 0x0000, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d,
+ 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0x0000, 0x0000,
+ 0x0000, 0xc774, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a,
+ 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc77f, 0xc780, 0xc781, 0xc782,
+ 0xc783, 0xc784, 0x0000, 0xc785, 0xc786, 0xc787, 0xc788, 0xc789,
+ 0xc78a, 0xc78b, 0xc78c, 0xc78d, 0xc78e, 0xc78f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc790, 0xc791, 0xc792, 0xc793, 0xc794, 0xc795, 0xc796,
+ 0xc797, 0xc798, 0xc799, 0xc79a, 0xc79b, 0xc79c, 0xc79d, 0xc79e,
+ 0xc79f, 0xc7a0, 0x0000, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5,
+ 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0x0000, 0x0000,
+ 0x0000, 0xc7ac, 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2,
+ 0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba,
+ 0xc7bb, 0xc7bc, 0x0000, 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1,
+ 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0x0000, 0x0000,
+ 0x0000, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce,
+ 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6,
+ 0xc7d7, 0xc7d8, 0x0000, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd,
+ 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0x0000, 0x0000,
+ 0x0000, 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea,
+ 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2,
+ 0xc7f3, 0xc7f4, 0x0000, 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9,
+ 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc7ff, 0x0000, 0x0000,
+ 0x0000, 0xc800, 0xc801, 0xc802, 0xc803, 0xc804, 0xc805, 0xc806,
+ 0xc807, 0xc808, 0xc809, 0xc80a, 0xc80b, 0xc80c, 0xc80d, 0xc80e,
+ 0xc80f, 0xc810, 0x0000, 0xc811, 0xc812, 0xc813, 0xc814, 0xc815,
+ 0xc816, 0xc817, 0xc818, 0xc819, 0xc81a, 0xc81b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc81c, 0xc81d, 0xc81e, 0xc81f, 0xc820, 0xc821, 0xc822,
+ 0xc823, 0xc824, 0xc825, 0xc826, 0xc827, 0xc828, 0xc829, 0xc82a,
+ 0xc82b, 0xc82c, 0x0000, 0xc82d, 0xc82e, 0xc82f, 0xc830, 0xc831,
+ 0xc832, 0xc833, 0xc834, 0xc835, 0xc836, 0xc837, 0x0000, 0x0000,
+ 0x0000, 0xc838, 0xc839, 0xc83a, 0xc83b, 0xc83c, 0xc83d, 0xc83e,
+ 0xc83f, 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846,
+ 0xc847, 0xc848, 0x0000, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d,
+ 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852, 0xc853, 0x0000, 0x0000,
+ 0x0000, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a,
+ 0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862,
+ 0xc863, 0xc864, 0x0000, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869,
+ 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0x0000, 0x0000,
+ 0x0000, 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, 0xc876,
+ 0xc877, 0xc878, 0xc879, 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc87e,
+ 0xc87f, 0xc880, 0x0000, 0xc881, 0xc882, 0xc883, 0xc884, 0xc885,
+ 0xc886, 0xc887, 0xc888, 0xc889, 0xc88a, 0xc88b, 0x0000, 0x0000,
+ 0x0000, 0xc88c, 0xc88d, 0xc88e, 0xc88f, 0xc890, 0xc891, 0xc892,
+ 0xc893, 0xc894, 0xc895, 0xc896, 0xc897, 0xc898, 0xc899, 0xc89a,
+ 0xc89b, 0xc89c, 0x0000, 0xc89d, 0xc89e, 0xc89f, 0xc8a0, 0xc8a1,
+ 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0x0000, 0x0000,
+ 0x0000, 0xc8a8, 0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae,
+ 0xc8af, 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6,
+ 0xc8b7, 0xc8b8, 0x0000, 0xc8b9, 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd,
+ 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1, 0xc8c2, 0xc8c3, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9, 0xc8ca,
+ 0xc8cb, 0xc8cc, 0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d2,
+ 0xc8d3, 0xc8d4, 0x0000, 0xc8d5, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9,
+ 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0x0000, 0x0000,
+ 0x0000, 0xc8e0, 0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6,
+ 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee,
+ 0xc8ef, 0xc8f0, 0x0000, 0xc8f1, 0xc8f2, 0xc8f3, 0xc8f4, 0xc8f5,
+ 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0x0000, 0x0000,
+ 0x0000, 0xc8fc, 0xc8fd, 0xc8fe, 0xc8ff, 0xc900, 0xc901, 0xc902,
+ 0xc903, 0xc904, 0xc905, 0xc906, 0xc907, 0xc908, 0xc909, 0xc90a,
+ 0xc90b, 0xc90c, 0x0000, 0xc90d, 0xc90e, 0xc90f, 0xc910, 0xc911,
+ 0xc912, 0xc913, 0xc914, 0xc915, 0xc916, 0xc917, 0x0000, 0x0000,
+ 0x0000, 0xc918, 0xc919, 0xc91a, 0xc91b, 0xc91c, 0xc91d, 0xc91e,
+ 0xc91f, 0xc920, 0xc921, 0xc922, 0xc923, 0xc924, 0xc925, 0xc926,
+ 0xc927, 0xc928, 0x0000, 0xc929, 0xc92a, 0xc92b, 0xc92c, 0xc92d,
+ 0xc92e, 0xc92f, 0xc930, 0xc931, 0xc932, 0xc933, 0x0000, 0x0000,
+ 0x0000, 0xc934, 0xc935, 0xc936, 0xc937, 0xc938, 0xc939, 0xc93a,
+ 0xc93b, 0xc93c, 0xc93d, 0xc93e, 0xc93f, 0xc940, 0xc941, 0xc942,
+ 0xc943, 0xc944, 0x0000, 0xc945, 0xc946, 0xc947, 0xc948, 0xc949,
+ 0xc94a, 0xc94b, 0xc94c, 0xc94d, 0xc94e, 0xc94f, 0x0000, 0x0000,
+ 0x0000, 0xc950, 0xc951, 0xc952, 0xc953, 0xc954, 0xc955, 0xc956,
+ 0xc957, 0xc958, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e,
+ 0xc95f, 0xc960, 0x0000, 0xc961, 0xc962, 0xc963, 0xc964, 0xc965,
+ 0xc966, 0xc967, 0xc968, 0xc969, 0xc96a, 0xc96b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc96c, 0xc96d, 0xc96e, 0xc96f, 0xc970, 0xc971, 0xc972,
+ 0xc973, 0xc974, 0xc975, 0xc976, 0xc977, 0xc978, 0xc979, 0xc97a,
+ 0xc97b, 0xc97c, 0x0000, 0xc97d, 0xc97e, 0xc97f, 0xc980, 0xc981,
+ 0xc982, 0xc983, 0xc984, 0xc985, 0xc986, 0xc987, 0x0000, 0x0000,
+ 0x0000, 0xc988, 0xc989, 0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc98e,
+ 0xc98f, 0xc990, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996,
+ 0xc997, 0xc998, 0x0000, 0xc999, 0xc99a, 0xc99b, 0xc99c, 0xc99d,
+ 0xc99e, 0xc99f, 0xc9a0, 0xc9a1, 0xc9a2, 0xc9a3, 0x0000, 0x0000,
+ 0x0000, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8, 0xc9a9, 0xc9aa,
+ 0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, 0xc9b0, 0xc9b1, 0xc9b2,
+ 0xc9b3, 0xc9b4, 0x0000, 0xc9b5, 0xc9b6, 0xc9b7, 0xc9b8, 0xc9b9,
+ 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9be, 0xc9bf, 0x0000, 0x0000,
+ 0x0000, 0xc9c0, 0xc9c1, 0xc9c2, 0xc9c3, 0xc9c4, 0xc9c5, 0xc9c6,
+ 0xc9c7, 0xc9c8, 0xc9c9, 0xc9ca, 0xc9cb, 0xc9cc, 0xc9cd, 0xc9ce,
+ 0xc9cf, 0xc9d0, 0x0000, 0xc9d1, 0xc9d2, 0xc9d3, 0xc9d4, 0xc9d5,
+ 0xc9d6, 0xc9d7, 0xc9d8, 0xc9d9, 0xc9da, 0xc9db, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc9dc, 0xc9dd, 0xc9de, 0xc9df, 0xc9e0, 0xc9e1, 0xc9e2,
+ 0xc9e3, 0xc9e4, 0xc9e5, 0xc9e6, 0xc9e7, 0xc9e8, 0xc9e9, 0xc9ea,
+ 0xc9eb, 0xc9ec, 0x0000, 0xc9ed, 0xc9ee, 0xc9ef, 0xc9f0, 0xc9f1,
+ 0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0x0000, 0x0000,
+ 0x0000, 0xc9f8, 0xc9f9, 0xc9fa, 0xc9fb, 0xc9fc, 0xc9fd, 0xc9fe,
+ 0xc9ff, 0xca00, 0xca01, 0xca02, 0xca03, 0xca04, 0xca05, 0xca06,
+ 0xca07, 0xca08, 0x0000, 0xca09, 0xca0a, 0xca0b, 0xca0c, 0xca0d,
+ 0xca0e, 0xca0f, 0xca10, 0xca11, 0xca12, 0xca13, 0x0000, 0x0000,
+ 0x0000, 0xca14, 0xca15, 0xca16, 0xca17, 0xca18, 0xca19, 0xca1a,
+ 0xca1b, 0xca1c, 0xca1d, 0xca1e, 0xca1f, 0xca20, 0xca21, 0xca22,
+ 0xca23, 0xca24, 0x0000, 0xca25, 0xca26, 0xca27, 0xca28, 0xca29,
+ 0xca2a, 0xca2b, 0xca2c, 0xca2d, 0xca2e, 0xca2f, 0x0000, 0x0000,
+ 0x0000, 0xca30, 0xca31, 0xca32, 0xca33, 0xca34, 0xca35, 0xca36,
+ 0xca37, 0xca38, 0xca39, 0xca3a, 0xca3b, 0xca3c, 0xca3d, 0xca3e,
+ 0xca3f, 0xca40, 0x0000, 0xca41, 0xca42, 0xca43, 0xca44, 0xca45,
+ 0xca46, 0xca47, 0xca48, 0xca49, 0xca4a, 0xca4b, 0x0000, 0x0000,
+ 0x0000, 0xca4c, 0xca4d, 0xca4e, 0xca4f, 0xca50, 0xca51, 0xca52,
+ 0xca53, 0xca54, 0xca55, 0xca56, 0xca57, 0xca58, 0xca59, 0xca5a,
+ 0xca5b, 0xca5c, 0x0000, 0xca5d, 0xca5e, 0xca5f, 0xca60, 0xca61,
+ 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xca68, 0xca69, 0xca6a, 0xca6b, 0xca6c, 0xca6d, 0xca6e,
+ 0xca6f, 0xca70, 0xca71, 0xca72, 0xca73, 0xca74, 0xca75, 0xca76,
+ 0xca77, 0xca78, 0x0000, 0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d,
+ 0xca7e, 0xca7f, 0xca80, 0xca81, 0xca82, 0xca83, 0x0000, 0x0000,
+ 0x0000, 0xca84, 0xca85, 0xca86, 0xca87, 0xca88, 0xca89, 0xca8a,
+ 0xca8b, 0xca8c, 0xca8d, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92,
+ 0xca93, 0xca94, 0x0000, 0xca95, 0xca96, 0xca97, 0xca98, 0xca99,
+ 0xca9a, 0xca9b, 0xca9c, 0xca9d, 0xca9e, 0xca9f, 0x0000, 0x0000,
+ 0x0000, 0xcaa0, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6,
+ 0xcaa7, 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae,
+ 0xcaaf, 0xcab0, 0x0000, 0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5,
+ 0xcab6, 0xcab7, 0xcab8, 0xcab9, 0xcaba, 0xcabb, 0x0000, 0x0000,
+ 0x0000, 0xcabc, 0xcabd, 0xcabe, 0xcabf, 0xcac0, 0xcac1, 0xcac2,
+ 0xcac3, 0xcac4, 0xcac5, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca,
+ 0xcacb, 0xcacc, 0x0000, 0xcacd, 0xcace, 0xcacf, 0xcad0, 0xcad1,
+ 0xcad2, 0xcad3, 0xcad4, 0xcad5, 0xcad6, 0xcad7, 0x0000, 0x0000,
+ 0x0000, 0xcad8, 0xcad9, 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade,
+ 0xcadf, 0xcae0, 0xcae1, 0xcae2, 0xcae3, 0xcae4, 0xcae5, 0xcae6,
+ 0xcae7, 0xcae8, 0x0000, 0xcae9, 0xcaea, 0xcaeb, 0xcaec, 0xcaed,
+ 0xcaee, 0xcaef, 0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0x0000, 0x0000,
+ 0x0000, 0xcaf4, 0xcaf5, 0xcaf6, 0xcaf7, 0xcaf8, 0xcaf9, 0xcafa,
+ 0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcaff, 0xcb00, 0xcb01, 0xcb02,
+ 0xcb03, 0xcb04, 0x0000, 0xcb05, 0xcb06, 0xcb07, 0xcb08, 0xcb09,
+ 0xcb0a, 0xcb0b, 0xcb0c, 0xcb0d, 0xcb0e, 0xcb0f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xcb10, 0xcb11, 0xcb12, 0xcb13, 0xcb14, 0xcb15, 0xcb16,
+ 0xcb17, 0xcb18, 0xcb19, 0xcb1a, 0xcb1b, 0xcb1c, 0xcb1d, 0xcb1e,
+ 0xcb1f, 0xcb20, 0x0000, 0xcb21, 0xcb22, 0xcb23, 0xcb24, 0xcb25,
+ 0xcb26, 0xcb27, 0xcb28, 0xcb29, 0xcb2a, 0xcb2b, 0x0000, 0x0000,
+ 0x0000, 0xcb2c, 0xcb2d, 0xcb2e, 0xcb2f, 0xcb30, 0xcb31, 0xcb32,
+ 0xcb33, 0xcb34, 0xcb35, 0xcb36, 0xcb37, 0xcb38, 0xcb39, 0xcb3a,
+ 0xcb3b, 0xcb3c, 0x0000, 0xcb3d, 0xcb3e, 0xcb3f, 0xcb40, 0xcb41,
+ 0xcb42, 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, 0x0000, 0x0000,
+ 0x0000, 0xcb48, 0xcb49, 0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e,
+ 0xcb4f, 0xcb50, 0xcb51, 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56,
+ 0xcb57, 0xcb58, 0x0000, 0xcb59, 0xcb5a, 0xcb5b, 0xcb5c, 0xcb5d,
+ 0xcb5e, 0xcb5f, 0xcb60, 0xcb61, 0xcb62, 0xcb63, 0x0000, 0x0000,
+ 0x0000, 0xcb64, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xcb69, 0xcb6a,
+ 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, 0xcb70, 0xcb71, 0xcb72,
+ 0xcb73, 0xcb74, 0x0000, 0xcb75, 0xcb76, 0xcb77, 0xcb78, 0xcb79,
+ 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb7e, 0xcb7f, 0x0000, 0x0000,
+ 0x0000, 0xcb80, 0xcb81, 0xcb82, 0xcb83, 0xcb84, 0xcb85, 0xcb86,
+ 0xcb87, 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xcb8e,
+ 0xcb8f, 0xcb90, 0x0000, 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95,
+ 0xcb96, 0xcb97, 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0x0000, 0x0000,
+ 0x0000, 0xcb9c, 0xcb9d, 0xcb9e, 0xcb9f, 0xcba0, 0xcba1, 0xcba2,
+ 0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8, 0xcba9, 0xcbaa,
+ 0xcbab, 0xcbac, 0x0000, 0xcbad, 0xcbae, 0xcbaf, 0xcbb0, 0xcbb1,
+ 0xcbb2, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xcbb8, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc, 0xcbbd, 0xcbbe,
+ 0xcbbf, 0xcbc0, 0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6,
+ 0xcbc7, 0xcbc8, 0x0000, 0xcbc9, 0xcbca, 0xcbcb, 0xcbcc, 0xcbcd,
+ 0xcbce, 0xcbcf, 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0x0000, 0x0000,
+ 0x0000, 0xcbd4, 0xcbd5, 0xcbd6, 0xcbd7, 0xcbd8, 0xcbd9, 0xcbda,
+ 0xcbdb, 0xcbdc, 0xcbdd, 0xcbde, 0xcbdf, 0xcbe0, 0xcbe1, 0xcbe2,
+ 0xcbe3, 0xcbe4, 0x0000, 0xcbe5, 0xcbe6, 0xcbe7, 0xcbe8, 0xcbe9,
+ 0xcbea, 0xcbeb, 0xcbec, 0xcbed, 0xcbee, 0xcbef, 0x0000, 0x0000,
+ 0x0000, 0xcbf0, 0xcbf1, 0xcbf2, 0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6,
+ 0xcbf7, 0xcbf8, 0xcbf9, 0xcbfa, 0xcbfb, 0xcbfc, 0xcbfd, 0xcbfe,
+ 0xcbff, 0xcc00, 0x0000, 0xcc01, 0xcc02, 0xcc03, 0xcc04, 0xcc05,
+ 0xcc06, 0xcc07, 0xcc08, 0xcc09, 0xcc0a, 0xcc0b, 0x0000, 0x0000,
+ 0x0000, 0xcc0c, 0xcc0d, 0xcc0e, 0xcc0f, 0xcc10, 0xcc11, 0xcc12,
+ 0xcc13, 0xcc14, 0xcc15, 0xcc16, 0xcc17, 0xcc18, 0xcc19, 0xcc1a,
+ 0xcc1b, 0xcc1c, 0x0000, 0xcc1d, 0xcc1e, 0xcc1f, 0xcc20, 0xcc21,
+ 0xcc22, 0xcc23, 0xcc24, 0xcc25, 0xcc26, 0xcc27, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xcc28, 0xcc29, 0xcc2a, 0xcc2b, 0xcc2c, 0xcc2d, 0xcc2e,
+ 0xcc2f, 0xcc30, 0xcc31, 0xcc32, 0xcc33, 0xcc34, 0xcc35, 0xcc36,
+ 0xcc37, 0xcc38, 0x0000, 0xcc39, 0xcc3a, 0xcc3b, 0xcc3c, 0xcc3d,
+ 0xcc3e, 0xcc3f, 0xcc40, 0xcc41, 0xcc42, 0xcc43, 0x0000, 0x0000,
+ 0x0000, 0xcc44, 0xcc45, 0xcc46, 0xcc47, 0xcc48, 0xcc49, 0xcc4a,
+ 0xcc4b, 0xcc4c, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50, 0xcc51, 0xcc52,
+ 0xcc53, 0xcc54, 0x0000, 0xcc55, 0xcc56, 0xcc57, 0xcc58, 0xcc59,
+ 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0x0000, 0x0000,
+ 0x0000, 0xcc60, 0xcc61, 0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66,
+ 0xcc67, 0xcc68, 0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e,
+ 0xcc6f, 0xcc70, 0x0000, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75,
+ 0xcc76, 0xcc77, 0xcc78, 0xcc79, 0xcc7a, 0xcc7b, 0x0000, 0x0000,
+ 0x0000, 0xcc7c, 0xcc7d, 0xcc7e, 0xcc7f, 0xcc80, 0xcc81, 0xcc82,
+ 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, 0xcc88, 0xcc89, 0xcc8a,
+ 0xcc8b, 0xcc8c, 0x0000, 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90, 0xcc91,
+ 0xcc92, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97, 0x0000, 0x0000,
+ 0x0000, 0xcc98, 0xcc99, 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, 0xcc9e,
+ 0xcc9f, 0xcca0, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6,
+ 0xcca7, 0xcca8, 0x0000, 0xcca9, 0xccaa, 0xccab, 0xccac, 0xccad,
+ 0xccae, 0xccaf, 0xccb0, 0xccb1, 0xccb2, 0xccb3, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xccb4, 0xccb5, 0xccb6, 0xccb7, 0xccb8, 0xccb9, 0xccba,
+ 0xccbb, 0xccbc, 0xccbd, 0xccbe, 0xccbf, 0xccc0, 0xccc1, 0xccc2,
+ 0xccc3, 0xccc4, 0x0000, 0xccc5, 0xccc6, 0xccc7, 0xccc8, 0xccc9,
+ 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0x0000, 0x0000,
+ 0x0000, 0xccd0, 0xccd1, 0xccd2, 0xccd3, 0xccd4, 0xccd5, 0xccd6,
+ 0xccd7, 0xccd8, 0xccd9, 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xccde,
+ 0xccdf, 0xcce0, 0x0000, 0xcce1, 0xcce2, 0xcce3, 0xcce4, 0xcce5,
+ 0xcce6, 0xcce7, 0xcce8, 0xcce9, 0xccea, 0xcceb, 0x0000, 0x0000,
+ 0x0000, 0xccec, 0xcced, 0xccee, 0xccef, 0xccf0, 0xccf1, 0xccf2,
+ 0xccf3, 0xccf4, 0xccf5, 0xccf6, 0xccf7, 0xccf8, 0xccf9, 0xccfa,
+ 0xccfb, 0xccfc, 0x0000, 0xccfd, 0xccfe, 0xccff, 0xcd00, 0xcd01,
+ 0xcd02, 0xcd03, 0xcd04, 0xcd05, 0xcd06, 0xcd07, 0x0000, 0x0000,
+ 0x0000, 0xcd08, 0xcd09, 0xcd0a, 0xcd0b, 0xcd0c, 0xcd0d, 0xcd0e,
+ 0xcd0f, 0xcd10, 0xcd11, 0xcd12, 0xcd13, 0xcd14, 0xcd15, 0xcd16,
+ 0xcd17, 0xcd18, 0x0000, 0xcd19, 0xcd1a, 0xcd1b, 0xcd1c, 0xcd1d,
+ 0xcd1e, 0xcd1f, 0xcd20, 0xcd21, 0xcd22, 0xcd23, 0x0000, 0x0000,
+ 0x0000, 0xcd24, 0xcd25, 0xcd26, 0xcd27, 0xcd28, 0xcd29, 0xcd2a,
+ 0xcd2b, 0xcd2c, 0xcd2d, 0xcd2e, 0xcd2f, 0xcd30, 0xcd31, 0xcd32,
+ 0xcd33, 0xcd34, 0x0000, 0xcd35, 0xcd36, 0xcd37, 0xcd38, 0xcd39,
+ 0xcd3a, 0xcd3b, 0xcd3c, 0xcd3d, 0xcd3e, 0xcd3f, 0x0000, 0x0000,
+ 0x0000, 0xcd40, 0xcd41, 0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46,
+ 0xcd47, 0xcd48, 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e,
+ 0xcd4f, 0xcd50, 0x0000, 0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55,
+ 0xcd56, 0xcd57, 0xcd58, 0xcd59, 0xcd5a, 0xcd5b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xcd5c, 0xcd5d, 0xcd5e, 0xcd5f, 0xcd60, 0xcd61, 0xcd62,
+ 0xcd63, 0xcd64, 0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, 0xcd6a,
+ 0xcd6b, 0xcd6c, 0x0000, 0xcd6d, 0xcd6e, 0xcd6f, 0xcd70, 0xcd71,
+ 0xcd72, 0xcd73, 0xcd74, 0xcd75, 0xcd76, 0xcd77, 0x0000, 0x0000,
+ 0x0000, 0xcd78, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e,
+ 0xcd7f, 0xcd80, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86,
+ 0xcd87, 0xcd88, 0x0000, 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d,
+ 0xcd8e, 0xcd8f, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0x0000, 0x0000,
+ 0x0000, 0xcd94, 0xcd95, 0xcd96, 0xcd97, 0xcd98, 0xcd99, 0xcd9a,
+ 0xcd9b, 0xcd9c, 0xcd9d, 0xcd9e, 0xcd9f, 0xcda0, 0xcda1, 0xcda2,
+ 0xcda3, 0xcda4, 0x0000, 0xcda5, 0xcda6, 0xcda7, 0xcda8, 0xcda9,
+ 0xcdaa, 0xcdab, 0xcdac, 0xcdad, 0xcdae, 0xcdaf, 0x0000, 0x0000,
+ 0x0000, 0xcdb0, 0xcdb1, 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6,
+ 0xcdb7, 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc, 0xcdbd, 0xcdbe,
+ 0xcdbf, 0xcdc0, 0x0000, 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc4, 0xcdc5,
+ 0xcdc6, 0xcdc7, 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0x0000, 0x0000,
+ 0x0000, 0xcdcc, 0xcdcd, 0xcdce, 0xcdcf, 0xcdd0, 0xcdd1, 0xcdd2,
+ 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, 0xcdd8, 0xcdd9, 0xcdda,
+ 0xcddb, 0xcddc, 0x0000, 0xcddd, 0xcdde, 0xcddf, 0xcde0, 0xcde1,
+ 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, 0x0000, 0x0000,
+ 0x0000, 0xcde8, 0xcde9, 0xcdea, 0xcdeb, 0xcdec, 0xcded, 0xcdee,
+ 0xcdef, 0xcdf0, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4, 0xcdf5, 0xcdf6,
+ 0xcdf7, 0xcdf8, 0x0000, 0xcdf9, 0xcdfa, 0xcdfb, 0xcdfc, 0xcdfd,
+ 0xcdfe, 0xcdff, 0xce00, 0xce01, 0xce02, 0xce03, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xce04, 0xce05, 0xce06, 0xce07, 0xce08, 0xce09, 0xce0a,
+ 0xce0b, 0xce0c, 0xce0d, 0xce0e, 0xce0f, 0xce10, 0xce11, 0xce12,
+ 0xce13, 0xce14, 0x0000, 0xce15, 0xce16, 0xce17, 0xce18, 0xce19,
+ 0xce1a, 0xce1b, 0xce1c, 0xce1d, 0xce1e, 0xce1f, 0x0000, 0x0000,
+ 0x0000, 0xce20, 0xce21, 0xce22, 0xce23, 0xce24, 0xce25, 0xce26,
+ 0xce27, 0xce28, 0xce29, 0xce2a, 0xce2b, 0xce2c, 0xce2d, 0xce2e,
+ 0xce2f, 0xce30, 0x0000, 0xce31, 0xce32, 0xce33, 0xce34, 0xce35,
+ 0xce36, 0xce37, 0xce38, 0xce39, 0xce3a, 0xce3b, 0x0000, 0x0000,
+ 0x0000, 0xce3c, 0xce3d, 0xce3e, 0xce3f, 0xce40, 0xce41, 0xce42,
+ 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, 0xce48, 0xce49, 0xce4a,
+ 0xce4b, 0xce4c, 0x0000, 0xce4d, 0xce4e, 0xce4f, 0xce50, 0xce51,
+ 0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0x0000, 0x0000,
+ 0x0000, 0xce58, 0xce59, 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e,
+ 0xce5f, 0xce60, 0xce61, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66,
+ 0xce67, 0xce68, 0x0000, 0xce69, 0xce6a, 0xce6b, 0xce6c, 0xce6d,
+ 0xce6e, 0xce6f, 0xce70, 0xce71, 0xce72, 0xce73, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xce74, 0xce75, 0xce76, 0xce77, 0xce78, 0xce79, 0xce7a,
+ 0xce7b, 0xce7c, 0xce7d, 0xce7e, 0xce7f, 0xce80, 0xce81, 0xce82,
+ 0xce83, 0xce84, 0x0000, 0xce85, 0xce86, 0xce87, 0xce88, 0xce89,
+ 0xce8a, 0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, 0x0000, 0x0000,
+ 0x0000, 0xce90, 0xce91, 0xce92, 0xce93, 0xce94, 0xce95, 0xce96,
+ 0xce97, 0xce98, 0xce99, 0xce9a, 0xce9b, 0xce9c, 0xce9d, 0xce9e,
+ 0xce9f, 0xcea0, 0x0000, 0xcea1, 0xcea2, 0xcea3, 0xcea4, 0xcea5,
+ 0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa, 0xceab, 0x0000, 0x0000,
+ 0x0000, 0xceac, 0xcead, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb2,
+ 0xceb3, 0xceb4, 0xceb5, 0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba,
+ 0xcebb, 0xcebc, 0x0000, 0xcebd, 0xcebe, 0xcebf, 0xcec0, 0xcec1,
+ 0xcec2, 0xcec3, 0xcec4, 0xcec5, 0xcec6, 0xcec7, 0x0000, 0x0000,
+ 0x0000, 0xcec8, 0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece,
+ 0xcecf, 0xced0, 0xced1, 0xced2, 0xced3, 0xced4, 0xced5, 0xced6,
+ 0xced7, 0xced8, 0x0000, 0xced9, 0xceda, 0xcedb, 0xcedc, 0xcedd,
+ 0xcede, 0xcedf, 0xcee0, 0xcee1, 0xcee2, 0xcee3, 0x0000, 0x0000,
+ 0x0000, 0xcee4, 0xcee5, 0xcee6, 0xcee7, 0xcee8, 0xcee9, 0xceea,
+ 0xceeb, 0xceec, 0xceed, 0xceee, 0xceef, 0xcef0, 0xcef1, 0xcef2,
+ 0xcef3, 0xcef4, 0x0000, 0xcef5, 0xcef6, 0xcef7, 0xcef8, 0xcef9,
+ 0xcefa, 0xcefb, 0xcefc, 0xcefd, 0xcefe, 0xceff, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xcf00, 0xcf01, 0xcf02, 0xcf03, 0xcf04, 0xcf05, 0xcf06,
+ 0xcf07, 0xcf08, 0xcf09, 0xcf0a, 0xcf0b, 0xcf0c, 0xcf0d, 0xcf0e,
+ 0xcf0f, 0xcf10, 0x0000, 0xcf11, 0xcf12, 0xcf13, 0xcf14, 0xcf15,
+ 0xcf16, 0xcf17, 0xcf18, 0xcf19, 0xcf1a, 0xcf1b, 0x0000, 0x0000,
+ 0x0000, 0xcf1c, 0xcf1d, 0xcf1e, 0xcf1f, 0xcf20, 0xcf21, 0xcf22,
+ 0xcf23, 0xcf24, 0xcf25, 0xcf26, 0xcf27, 0xcf28, 0xcf29, 0xcf2a,
+ 0xcf2b, 0xcf2c, 0x0000, 0xcf2d, 0xcf2e, 0xcf2f, 0xcf30, 0xcf31,
+ 0xcf32, 0xcf33, 0xcf34, 0xcf35, 0xcf36, 0xcf37, 0x0000, 0x0000,
+ 0x0000, 0xcf38, 0xcf39, 0xcf3a, 0xcf3b, 0xcf3c, 0xcf3d, 0xcf3e,
+ 0xcf3f, 0xcf40, 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46,
+ 0xcf47, 0xcf48, 0x0000, 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d,
+ 0xcf4e, 0xcf4f, 0xcf50, 0xcf51, 0xcf52, 0xcf53, 0x0000, 0x0000,
+ 0x0000, 0xcf54, 0xcf55, 0xcf56, 0xcf57, 0xcf58, 0xcf59, 0xcf5a,
+ 0xcf5b, 0xcf5c, 0xcf5d, 0xcf5e, 0xcf5f, 0xcf60, 0xcf61, 0xcf62,
+ 0xcf63, 0xcf64, 0x0000, 0xcf65, 0xcf66, 0xcf67, 0xcf68, 0xcf69,
+ 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, 0xcf6e, 0xcf6f, 0x0000, 0x0000,
+ 0x0000, 0xcf70, 0xcf71, 0xcf72, 0xcf73, 0xcf74, 0xcf75, 0xcf76,
+ 0xcf77, 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e,
+ 0xcf7f, 0xcf80, 0x0000, 0xcf81, 0xcf82, 0xcf83, 0xcf84, 0xcf85,
+ 0xcf86, 0xcf87, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, 0x0000, 0x0000,
+ 0x0000, 0xcf8c, 0xcf8d, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92,
+ 0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, 0xcf98, 0xcf99, 0xcf9a,
+ 0xcf9b, 0xcf9c, 0x0000, 0xcf9d, 0xcf9e, 0xcf9f, 0xcfa0, 0xcfa1,
+ 0xcfa2, 0xcfa3, 0xcfa4, 0xcfa5, 0xcfa6, 0xcfa7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xcfa8, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae,
+ 0xcfaf, 0xcfb0, 0xcfb1, 0xcfb2, 0xcfb3, 0xcfb4, 0xcfb5, 0xcfb6,
+ 0xcfb7, 0xcfb8, 0x0000, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd,
+ 0xcfbe, 0xcfbf, 0xcfc0, 0xcfc1, 0xcfc2, 0xcfc3, 0x0000, 0x0000,
+ 0x0000, 0xcfc4, 0xcfc5, 0xcfc6, 0xcfc7, 0xcfc8, 0xcfc9, 0xcfca,
+ 0xcfcb, 0xcfcc, 0xcfcd, 0xcfce, 0xcfcf, 0xcfd0, 0xcfd1, 0xcfd2,
+ 0xcfd3, 0xcfd4, 0x0000, 0xcfd5, 0xcfd6, 0xcfd7, 0xcfd8, 0xcfd9,
+ 0xcfda, 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, 0x0000, 0x0000,
+ 0x0000, 0xcfe0, 0xcfe1, 0xcfe2, 0xcfe3, 0xcfe4, 0xcfe5, 0xcfe6,
+ 0xcfe7, 0xcfe8, 0xcfe9, 0xcfea, 0xcfeb, 0xcfec, 0xcfed, 0xcfee,
+ 0xcfef, 0xcff0, 0x0000, 0xcff1, 0xcff2, 0xcff3, 0xcff4, 0xcff5,
+ 0xcff6, 0xcff7, 0xcff8, 0xcff9, 0xcffa, 0xcffb, 0x0000, 0x0000,
+ 0x0000, 0xcffc, 0xcffd, 0xcffe, 0xcfff, 0xd000, 0xd001, 0xd002,
+ 0xd003, 0xd004, 0xd005, 0xd006, 0xd007, 0xd008, 0xd009, 0xd00a,
+ 0xd00b, 0xd00c, 0x0000, 0xd00d, 0xd00e, 0xd00f, 0xd010, 0xd011,
+ 0xd012, 0xd013, 0xd014, 0xd015, 0xd016, 0xd017, 0x0000, 0x0000,
+ 0x0000, 0xd018, 0xd019, 0xd01a, 0xd01b, 0xd01c, 0xd01d, 0xd01e,
+ 0xd01f, 0xd020, 0xd021, 0xd022, 0xd023, 0xd024, 0xd025, 0xd026,
+ 0xd027, 0xd028, 0x0000, 0xd029, 0xd02a, 0xd02b, 0xd02c, 0xd02d,
+ 0xd02e, 0xd02f, 0xd030, 0xd031, 0xd032, 0xd033, 0x0000, 0x0000,
+ 0x0000, 0xd034, 0xd035, 0xd036, 0xd037, 0xd038, 0xd039, 0xd03a,
+ 0xd03b, 0xd03c, 0xd03d, 0xd03e, 0xd03f, 0xd040, 0xd041, 0xd042,
+ 0xd043, 0xd044, 0x0000, 0xd045, 0xd046, 0xd047, 0xd048, 0xd049,
+ 0xd04a, 0xd04b, 0xd04c, 0xd04d, 0xd04e, 0xd04f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd050, 0xd051, 0xd052, 0xd053, 0xd054, 0xd055, 0xd056,
+ 0xd057, 0xd058, 0xd059, 0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e,
+ 0xd05f, 0xd060, 0x0000, 0xd061, 0xd062, 0xd063, 0xd064, 0xd065,
+ 0xd066, 0xd067, 0xd068, 0xd069, 0xd06a, 0xd06b, 0x0000, 0x0000,
+ 0x0000, 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070, 0xd071, 0xd072,
+ 0xd073, 0xd074, 0xd075, 0xd076, 0xd077, 0xd078, 0xd079, 0xd07a,
+ 0xd07b, 0xd07c, 0x0000, 0xd07d, 0xd07e, 0xd07f, 0xd080, 0xd081,
+ 0xd082, 0xd083, 0xd084, 0xd085, 0xd086, 0xd087, 0x0000, 0x0000,
+ 0x0000, 0xd088, 0xd089, 0xd08a, 0xd08b, 0xd08c, 0xd08d, 0xd08e,
+ 0xd08f, 0xd090, 0xd091, 0xd092, 0xd093, 0xd094, 0xd095, 0xd096,
+ 0xd097, 0xd098, 0x0000, 0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d,
+ 0xd09e, 0xd09f, 0xd0a0, 0xd0a1, 0xd0a2, 0xd0a3, 0x0000, 0x0000,
+ 0x0000, 0xd0a4, 0xd0a5, 0xd0a6, 0xd0a7, 0xd0a8, 0xd0a9, 0xd0aa,
+ 0xd0ab, 0xd0ac, 0xd0ad, 0xd0ae, 0xd0af, 0xd0b0, 0xd0b1, 0xd0b2,
+ 0xd0b3, 0xd0b4, 0x0000, 0xd0b5, 0xd0b6, 0xd0b7, 0xd0b8, 0xd0b9,
+ 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0be, 0xd0bf, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd0c0, 0xd0c1, 0xd0c2, 0xd0c3, 0xd0c4, 0xd0c5, 0xd0c6,
+ 0xd0c7, 0xd0c8, 0xd0c9, 0xd0ca, 0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce,
+ 0xd0cf, 0xd0d0, 0x0000, 0xd0d1, 0xd0d2, 0xd0d3, 0xd0d4, 0xd0d5,
+ 0xd0d6, 0xd0d7, 0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0x0000, 0x0000,
+ 0x0000, 0xd0dc, 0xd0dd, 0xd0de, 0xd0df, 0xd0e0, 0xd0e1, 0xd0e2,
+ 0xd0e3, 0xd0e4, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8, 0xd0e9, 0xd0ea,
+ 0xd0eb, 0xd0ec, 0x0000, 0xd0ed, 0xd0ee, 0xd0ef, 0xd0f0, 0xd0f1,
+ 0xd0f2, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0x0000, 0x0000,
+ 0x0000, 0xd0f8, 0xd0f9, 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd0fe,
+ 0xd0ff, 0xd100, 0xd101, 0xd102, 0xd103, 0xd104, 0xd105, 0xd106,
+ 0xd107, 0xd108, 0x0000, 0xd109, 0xd10a, 0xd10b, 0xd10c, 0xd10d,
+ 0xd10e, 0xd10f, 0xd110, 0xd111, 0xd112, 0xd113, 0x0000, 0x0000,
+ 0x0000, 0xd114, 0xd115, 0xd116, 0xd117, 0xd118, 0xd119, 0xd11a,
+ 0xd11b, 0xd11c, 0xd11d, 0xd11e, 0xd11f, 0xd120, 0xd121, 0xd122,
+ 0xd123, 0xd124, 0x0000, 0xd125, 0xd126, 0xd127, 0xd128, 0xd129,
+ 0xd12a, 0xd12b, 0xd12c, 0xd12d, 0xd12e, 0xd12f, 0x0000, 0x0000,
+ 0x0000, 0xd130, 0xd131, 0xd132, 0xd133, 0xd134, 0xd135, 0xd136,
+ 0xd137, 0xd138, 0xd139, 0xd13a, 0xd13b, 0xd13c, 0xd13d, 0xd13e,
+ 0xd13f, 0xd140, 0x0000, 0xd141, 0xd142, 0xd143, 0xd144, 0xd145,
+ 0xd146, 0xd147, 0xd148, 0xd149, 0xd14a, 0xd14b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd14c, 0xd14d, 0xd14e, 0xd14f, 0xd150, 0xd151, 0xd152,
+ 0xd153, 0xd154, 0xd155, 0xd156, 0xd157, 0xd158, 0xd159, 0xd15a,
+ 0xd15b, 0xd15c, 0x0000, 0xd15d, 0xd15e, 0xd15f, 0xd160, 0xd161,
+ 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0x0000, 0x0000,
+ 0x0000, 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e,
+ 0xd16f, 0xd170, 0xd171, 0xd172, 0xd173, 0xd174, 0xd175, 0xd176,
+ 0xd177, 0xd178, 0x0000, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d,
+ 0xd17e, 0xd17f, 0xd180, 0xd181, 0xd182, 0xd183, 0x0000, 0x0000,
+ 0x0000, 0xd184, 0xd185, 0xd186, 0xd187, 0xd188, 0xd189, 0xd18a,
+ 0xd18b, 0xd18c, 0xd18d, 0xd18e, 0xd18f, 0xd190, 0xd191, 0xd192,
+ 0xd193, 0xd194, 0x0000, 0xd195, 0xd196, 0xd197, 0xd198, 0xd199,
+ 0xd19a, 0xd19b, 0xd19c, 0xd19d, 0xd19e, 0xd19f, 0x0000, 0x0000,
+ 0x0000, 0xd1a0, 0xd1a1, 0xd1a2, 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a6,
+ 0xd1a7, 0xd1a8, 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae,
+ 0xd1af, 0xd1b0, 0x0000, 0xd1b1, 0xd1b2, 0xd1b3, 0xd1b4, 0xd1b5,
+ 0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9, 0xd1ba, 0xd1bb, 0x0000, 0x0000,
+ 0x0000, 0xd1bc, 0xd1bd, 0xd1be, 0xd1bf, 0xd1c0, 0xd1c1, 0xd1c2,
+ 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6, 0xd1c7, 0xd1c8, 0xd1c9, 0xd1ca,
+ 0xd1cb, 0xd1cc, 0x0000, 0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0, 0xd1d1,
+ 0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6, 0xd1d7, 0x0000, 0x0000,
+ 0x0000, 0xd1d8, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, 0xd1de,
+ 0xd1df, 0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6,
+ 0xd1e7, 0xd1e8, 0x0000, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed,
+ 0xd1ee, 0xd1ef, 0xd1f0, 0xd1f1, 0xd1f2, 0xd1f3, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd1f4, 0xd1f5, 0xd1f6, 0xd1f7, 0xd1f8, 0xd1f9, 0xd1fa,
+ 0xd1fb, 0xd1fc, 0xd1fd, 0xd1fe, 0xd1ff, 0xd200, 0xd201, 0xd202,
+ 0xd203, 0xd204, 0x0000, 0xd205, 0xd206, 0xd207, 0xd208, 0xd209,
+ 0xd20a, 0xd20b, 0xd20c, 0xd20d, 0xd20e, 0xd20f, 0x0000, 0x0000,
+ 0x0000, 0xd210, 0xd211, 0xd212, 0xd213, 0xd214, 0xd215, 0xd216,
+ 0xd217, 0xd218, 0xd219, 0xd21a, 0xd21b, 0xd21c, 0xd21d, 0xd21e,
+ 0xd21f, 0xd220, 0x0000, 0xd221, 0xd222, 0xd223, 0xd224, 0xd225,
+ 0xd226, 0xd227, 0xd228, 0xd229, 0xd22a, 0xd22b, 0x0000, 0x0000,
+ 0x0000, 0xd22c, 0xd22d, 0xd22e, 0xd22f, 0xd230, 0xd231, 0xd232,
+ 0xd233, 0xd234, 0xd235, 0xd236, 0xd237, 0xd238, 0xd239, 0xd23a,
+ 0xd23b, 0xd23c, 0x0000, 0xd23d, 0xd23e, 0xd23f, 0xd240, 0xd241,
+ 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, 0x0000, 0x0000,
+ 0x0000, 0xd248, 0xd249, 0xd24a, 0xd24b, 0xd24c, 0xd24d, 0xd24e,
+ 0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, 0xd256,
+ 0xd257, 0xd258, 0x0000, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d,
+ 0xd25e, 0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0x0000, 0x0000,
+ 0x0000, 0xd264, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xd26a,
+ 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, 0xd270, 0xd271, 0xd272,
+ 0xd273, 0xd274, 0x0000, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279,
+ 0xd27a, 0xd27b, 0xd27c, 0xd27d, 0xd27e, 0xd27f, 0x0000, 0x0000,
+ 0x0000, 0xd280, 0xd281, 0xd282, 0xd283, 0xd284, 0xd285, 0xd286,
+ 0xd287, 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e,
+ 0xd28f, 0xd290, 0x0000, 0xd291, 0xd292, 0xd293, 0xd294, 0xd295,
+ 0xd296, 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd29c, 0xd29d, 0xd29e, 0xd29f, 0xd2a0, 0xd2a1, 0xd2a2,
+ 0xd2a3, 0xd2a4, 0xd2a5, 0xd2a6, 0xd2a7, 0xd2a8, 0xd2a9, 0xd2aa,
+ 0xd2ab, 0xd2ac, 0x0000, 0xd2ad, 0xd2ae, 0xd2af, 0xd2b0, 0xd2b1,
+ 0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, 0xd2b7, 0x0000, 0x0000,
+ 0x0000, 0xd2b8, 0xd2b9, 0xd2ba, 0xd2bb, 0xd2bc, 0xd2bd, 0xd2be,
+ 0xd2bf, 0xd2c0, 0xd2c1, 0xd2c2, 0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6,
+ 0xd2c7, 0xd2c8, 0x0000, 0xd2c9, 0xd2ca, 0xd2cb, 0xd2cc, 0xd2cd,
+ 0xd2ce, 0xd2cf, 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0x0000, 0x0000,
+ 0x0000, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2d7, 0xd2d8, 0xd2d9, 0xd2da,
+ 0xd2db, 0xd2dc, 0xd2dd, 0xd2de, 0xd2df, 0xd2e0, 0xd2e1, 0xd2e2,
+ 0xd2e3, 0xd2e4, 0x0000, 0xd2e5, 0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9,
+ 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, 0x0000, 0x0000,
+ 0x0000, 0xd2f0, 0xd2f1, 0xd2f2, 0xd2f3, 0xd2f4, 0xd2f5, 0xd2f6,
+ 0xd2f7, 0xd2f8, 0xd2f9, 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe,
+ 0xd2ff, 0xd300, 0x0000, 0xd301, 0xd302, 0xd303, 0xd304, 0xd305,
+ 0xd306, 0xd307, 0xd308, 0xd309, 0xd30a, 0xd30b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd30c, 0xd30d, 0xd30e, 0xd30f, 0xd310, 0xd311, 0xd312,
+ 0xd313, 0xd314, 0xd315, 0xd316, 0xd317, 0xd318, 0xd319, 0xd31a,
+ 0xd31b, 0xd31c, 0x0000, 0xd31d, 0xd31e, 0xd31f, 0xd320, 0xd321,
+ 0xd322, 0xd323, 0xd324, 0xd325, 0xd326, 0xd327, 0x0000, 0x0000,
+ 0x0000, 0xd328, 0xd329, 0xd32a, 0xd32b, 0xd32c, 0xd32d, 0xd32e,
+ 0xd32f, 0xd330, 0xd331, 0xd332, 0xd333, 0xd334, 0xd335, 0xd336,
+ 0xd337, 0xd338, 0x0000, 0xd339, 0xd33a, 0xd33b, 0xd33c, 0xd33d,
+ 0xd33e, 0xd33f, 0xd340, 0xd341, 0xd342, 0xd343, 0x0000, 0x0000,
+ 0x0000, 0xd344, 0xd345, 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a,
+ 0xd34b, 0xd34c, 0xd34d, 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352,
+ 0xd353, 0xd354, 0x0000, 0xd355, 0xd356, 0xd357, 0xd358, 0xd359,
+ 0xd35a, 0xd35b, 0xd35c, 0xd35d, 0xd35e, 0xd35f, 0x0000, 0x0000,
+ 0x0000, 0xd360, 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366,
+ 0xd367, 0xd368, 0xd369, 0xd36a, 0xd36b, 0xd36c, 0xd36d, 0xd36e,
+ 0xd36f, 0xd370, 0x0000, 0xd371, 0xd372, 0xd373, 0xd374, 0xd375,
+ 0xd376, 0xd377, 0xd378, 0xd379, 0xd37a, 0xd37b, 0x0000, 0x0000,
+ 0x0000, 0xd37c, 0xd37d, 0xd37e, 0xd37f, 0xd380, 0xd381, 0xd382,
+ 0xd383, 0xd384, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a,
+ 0xd38b, 0xd38c, 0x0000, 0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391,
+ 0xd392, 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd398, 0xd399, 0xd39a, 0xd39b, 0xd39c, 0xd39d, 0xd39e,
+ 0xd39f, 0xd3a0, 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6,
+ 0xd3a7, 0xd3a8, 0x0000, 0xd3a9, 0xd3aa, 0xd3ab, 0xd3ac, 0xd3ad,
+ 0xd3ae, 0xd3af, 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0x0000, 0x0000,
+ 0x0000, 0xd3b4, 0xd3b5, 0xd3b6, 0xd3b7, 0xd3b8, 0xd3b9, 0xd3ba,
+ 0xd3bb, 0xd3bc, 0xd3bd, 0xd3be, 0xd3bf, 0xd3c0, 0xd3c1, 0xd3c2,
+ 0xd3c3, 0xd3c4, 0x0000, 0xd3c5, 0xd3c6, 0xd3c7, 0xd3c8, 0xd3c9,
+ 0xd3ca, 0xd3cb, 0xd3cc, 0xd3cd, 0xd3ce, 0xd3cf, 0x0000, 0x0000,
+ 0x0000, 0xd3d0, 0xd3d1, 0xd3d2, 0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6,
+ 0xd3d7, 0xd3d8, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc, 0xd3dd, 0xd3de,
+ 0xd3df, 0xd3e0, 0x0000, 0xd3e1, 0xd3e2, 0xd3e3, 0xd3e4, 0xd3e5,
+ 0xd3e6, 0xd3e7, 0xd3e8, 0xd3e9, 0xd3ea, 0xd3eb, 0x0000, 0x0000,
+ 0x0000, 0xd3ec, 0xd3ed, 0xd3ee, 0xd3ef, 0xd3f0, 0xd3f1, 0xd3f2,
+ 0xd3f3, 0xd3f4, 0xd3f5, 0xd3f6, 0xd3f7, 0xd3f8, 0xd3f9, 0xd3fa,
+ 0xd3fb, 0xd3fc, 0x0000, 0xd3fd, 0xd3fe, 0xd3ff, 0xd400, 0xd401,
+ 0xd402, 0xd403, 0xd404, 0xd405, 0xd406, 0xd407, 0x0000, 0x0000,
+ 0x0000, 0xd408, 0xd409, 0xd40a, 0xd40b, 0xd40c, 0xd40d, 0xd40e,
+ 0xd40f, 0xd410, 0xd411, 0xd412, 0xd413, 0xd414, 0xd415, 0xd416,
+ 0xd417, 0xd418, 0x0000, 0xd419, 0xd41a, 0xd41b, 0xd41c, 0xd41d,
+ 0xd41e, 0xd41f, 0xd420, 0xd421, 0xd422, 0xd423, 0x0000, 0x0000,
+ 0x0000, 0xd424, 0xd425, 0xd426, 0xd427, 0xd428, 0xd429, 0xd42a,
+ 0xd42b, 0xd42c, 0xd42d, 0xd42e, 0xd42f, 0xd430, 0xd431, 0xd432,
+ 0xd433, 0xd434, 0x0000, 0xd435, 0xd436, 0xd437, 0xd438, 0xd439,
+ 0xd43a, 0xd43b, 0xd43c, 0xd43d, 0xd43e, 0xd43f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd440, 0xd441, 0xd442, 0xd443, 0xd444, 0xd445, 0xd446,
+ 0xd447, 0xd448, 0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e,
+ 0xd44f, 0xd450, 0x0000, 0xd451, 0xd452, 0xd453, 0xd454, 0xd455,
+ 0xd456, 0xd457, 0xd458, 0xd459, 0xd45a, 0xd45b, 0x0000, 0x0000,
+ 0x0000, 0xd45c, 0xd45d, 0xd45e, 0xd45f, 0xd460, 0xd461, 0xd462,
+ 0xd463, 0xd464, 0xd465, 0xd466, 0xd467, 0xd468, 0xd469, 0xd46a,
+ 0xd46b, 0xd46c, 0x0000, 0xd46d, 0xd46e, 0xd46f, 0xd470, 0xd471,
+ 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, 0x0000, 0x0000,
+ 0x0000, 0xd478, 0xd479, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e,
+ 0xd47f, 0xd480, 0xd481, 0xd482, 0xd483, 0xd484, 0xd485, 0xd486,
+ 0xd487, 0xd488, 0x0000, 0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d,
+ 0xd48e, 0xd48f, 0xd490, 0xd491, 0xd492, 0xd493, 0x0000, 0x0000,
+ 0x0000, 0xd494, 0xd495, 0xd496, 0xd497, 0xd498, 0xd499, 0xd49a,
+ 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, 0xd4a0, 0xd4a1, 0xd4a2,
+ 0xd4a3, 0xd4a4, 0x0000, 0xd4a5, 0xd4a6, 0xd4a7, 0xd4a8, 0xd4a9,
+ 0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad, 0xd4ae, 0xd4af, 0x0000, 0x0000,
+ 0x0000, 0xd4b0, 0xd4b1, 0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6,
+ 0xd4b7, 0xd4b8, 0xd4b9, 0xd4ba, 0xd4bb, 0xd4bc, 0xd4bd, 0xd4be,
+ 0xd4bf, 0xd4c0, 0x0000, 0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4, 0xd4c5,
+ 0xd4c6, 0xd4c7, 0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0x0000, 0x0000,
+ 0x0000, 0xd4cc, 0xd4cd, 0xd4ce, 0xd4cf, 0xd4d0, 0xd4d1, 0xd4d2,
+ 0xd4d3, 0xd4d4, 0xd4d5, 0xd4d6, 0xd4d7, 0xd4d8, 0xd4d9, 0xd4da,
+ 0xd4db, 0xd4dc, 0x0000, 0xd4dd, 0xd4de, 0xd4df, 0xd4e0, 0xd4e1,
+ 0xd4e2, 0xd4e3, 0xd4e4, 0xd4e5, 0xd4e6, 0xd4e7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd4e8, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ec, 0xd4ed, 0xd4ee,
+ 0xd4ef, 0xd4f0, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5, 0xd4f6,
+ 0xd4f7, 0xd4f8, 0x0000, 0xd4f9, 0xd4fa, 0xd4fb, 0xd4fc, 0xd4fd,
+ 0xd4fe, 0xd4ff, 0xd500, 0xd501, 0xd502, 0xd503, 0x0000, 0x0000,
+ 0x0000, 0xd504, 0xd505, 0xd506, 0xd507, 0xd508, 0xd509, 0xd50a,
+ 0xd50b, 0xd50c, 0xd50d, 0xd50e, 0xd50f, 0xd510, 0xd511, 0xd512,
+ 0xd513, 0xd514, 0x0000, 0xd515, 0xd516, 0xd517, 0xd518, 0xd519,
+ 0xd51a, 0xd51b, 0xd51c, 0xd51d, 0xd51e, 0xd51f, 0x0000, 0x0000,
+ 0x0000, 0xd520, 0xd521, 0xd522, 0xd523, 0xd524, 0xd525, 0xd526,
+ 0xd527, 0xd528, 0xd529, 0xd52a, 0xd52b, 0xd52c, 0xd52d, 0xd52e,
+ 0xd52f, 0xd530, 0x0000, 0xd531, 0xd532, 0xd533, 0xd534, 0xd535,
+ 0xd536, 0xd537, 0xd538, 0xd539, 0xd53a, 0xd53b, 0x0000, 0x0000,
+ 0x0000, 0xd53c, 0xd53d, 0xd53e, 0xd53f, 0xd540, 0xd541, 0xd542,
+ 0xd543, 0xd544, 0xd545, 0xd546, 0xd547, 0xd548, 0xd549, 0xd54a,
+ 0xd54b, 0xd54c, 0x0000, 0xd54d, 0xd54e, 0xd54f, 0xd550, 0xd551,
+ 0xd552, 0xd553, 0xd554, 0xd555, 0xd556, 0xd557, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd558, 0xd559, 0xd55a, 0xd55b, 0xd55c, 0xd55d, 0xd55e,
+ 0xd55f, 0xd560, 0xd561, 0xd562, 0xd563, 0xd564, 0xd565, 0xd566,
+ 0xd567, 0xd568, 0x0000, 0xd569, 0xd56a, 0xd56b, 0xd56c, 0xd56d,
+ 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, 0x0000, 0x0000,
+ 0x0000, 0xd574, 0xd575, 0xd576, 0xd577, 0xd578, 0xd579, 0xd57a,
+ 0xd57b, 0xd57c, 0xd57d, 0xd57e, 0xd57f, 0xd580, 0xd581, 0xd582,
+ 0xd583, 0xd584, 0x0000, 0xd585, 0xd586, 0xd587, 0xd588, 0xd589,
+ 0xd58a, 0xd58b, 0xd58c, 0xd58d, 0xd58e, 0xd58f, 0x0000, 0x0000,
+ 0x0000, 0xd590, 0xd591, 0xd592, 0xd593, 0xd594, 0xd595, 0xd596,
+ 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, 0xd59d, 0xd59e,
+ 0xd59f, 0xd5a0, 0x0000, 0xd5a1, 0xd5a2, 0xd5a3, 0xd5a4, 0xd5a5,
+ 0xd5a6, 0xd5a7, 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0x0000, 0x0000,
+ 0x0000, 0xd5ac, 0xd5ad, 0xd5ae, 0xd5af, 0xd5b0, 0xd5b1, 0xd5b2,
+ 0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6, 0xd5b7, 0xd5b8, 0xd5b9, 0xd5ba,
+ 0xd5bb, 0xd5bc, 0x0000, 0xd5bd, 0xd5be, 0xd5bf, 0xd5c0, 0xd5c1,
+ 0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6, 0xd5c7, 0x0000, 0x0000,
+ 0x0000, 0xd5c8, 0xd5c9, 0xd5ca, 0xd5cb, 0xd5cc, 0xd5cd, 0xd5ce,
+ 0xd5cf, 0xd5d0, 0xd5d1, 0xd5d2, 0xd5d3, 0xd5d4, 0xd5d5, 0xd5d6,
+ 0xd5d7, 0xd5d8, 0x0000, 0xd5d9, 0xd5da, 0xd5db, 0xd5dc, 0xd5dd,
+ 0xd5de, 0xd5df, 0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd5e4, 0xd5e5, 0xd5e6, 0xd5e7, 0xd5e8, 0xd5e9, 0xd5ea,
+ 0xd5eb, 0xd5ec, 0xd5ed, 0xd5ee, 0xd5ef, 0xd5f0, 0xd5f1, 0xd5f2,
+ 0xd5f3, 0xd5f4, 0x0000, 0xd5f5, 0xd5f6, 0xd5f7, 0xd5f8, 0xd5f9,
+ 0xd5fa, 0xd5fb, 0xd5fc, 0xd5fd, 0xd5fe, 0xd5ff, 0x0000, 0x0000,
+ 0x0000, 0xd600, 0xd601, 0xd602, 0xd603, 0xd604, 0xd605, 0xd606,
+ 0xd607, 0xd608, 0xd609, 0xd60a, 0xd60b, 0xd60c, 0xd60d, 0xd60e,
+ 0xd60f, 0xd610, 0x0000, 0xd611, 0xd612, 0xd613, 0xd614, 0xd615,
+ 0xd616, 0xd617, 0xd618, 0xd619, 0xd61a, 0xd61b, 0x0000, 0x0000,
+ 0x0000, 0xd61c, 0xd61d, 0xd61e, 0xd61f, 0xd620, 0xd621, 0xd622,
+ 0xd623, 0xd624, 0xd625, 0xd626, 0xd627, 0xd628, 0xd629, 0xd62a,
+ 0xd62b, 0xd62c, 0x0000, 0xd62d, 0xd62e, 0xd62f, 0xd630, 0xd631,
+ 0xd632, 0xd633, 0xd634, 0xd635, 0xd636, 0xd637, 0x0000, 0x0000,
+ 0x0000, 0xd638, 0xd639, 0xd63a, 0xd63b, 0xd63c, 0xd63d, 0xd63e,
+ 0xd63f, 0xd640, 0xd641, 0xd642, 0xd643, 0xd644, 0xd645, 0xd646,
+ 0xd647, 0xd648, 0x0000, 0xd649, 0xd64a, 0xd64b, 0xd64c, 0xd64d,
+ 0xd64e, 0xd64f, 0xd650, 0xd651, 0xd652, 0xd653, 0x0000, 0x0000,
+ 0x0000, 0xd654, 0xd655, 0xd656, 0xd657, 0xd658, 0xd659, 0xd65a,
+ 0xd65b, 0xd65c, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662,
+ 0xd663, 0xd664, 0x0000, 0xd665, 0xd666, 0xd667, 0xd668, 0xd669,
+ 0xd66a, 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0x0000, 0x0000,
+ 0x0000, 0xd670, 0xd671, 0xd672, 0xd673, 0xd674, 0xd675, 0xd676,
+ 0xd677, 0xd678, 0xd679, 0xd67a, 0xd67b, 0xd67c, 0xd67d, 0xd67e,
+ 0xd67f, 0xd680, 0x0000, 0xd681, 0xd682, 0xd683, 0xd684, 0xd685,
+ 0xd686, 0xd687, 0xd688, 0xd689, 0xd68a, 0xd68b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd68c, 0xd68d, 0xd68e, 0xd68f, 0xd690, 0xd691, 0xd692,
+ 0xd693, 0xd694, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a,
+ 0xd69b, 0xd69c, 0x0000, 0xd69d, 0xd69e, 0xd69f, 0xd6a0, 0xd6a1,
+ 0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, 0x0000, 0x0000,
+ 0x0000, 0xd6a8, 0xd6a9, 0xd6aa, 0xd6ab, 0xd6ac, 0xd6ad, 0xd6ae,
+ 0xd6af, 0xd6b0, 0xd6b1, 0xd6b2, 0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6,
+ 0xd6b7, 0xd6b8, 0x0000, 0xd6b9, 0xd6ba, 0xd6bb, 0xd6bc, 0xd6bd,
+ 0xd6be, 0xd6bf, 0xd6c0, 0xd6c1, 0xd6c2, 0xd6c3, 0x0000, 0x0000,
+ 0x0000, 0xd6c4, 0xd6c5, 0xd6c6, 0xd6c7, 0xd6c8, 0xd6c9, 0xd6ca,
+ 0xd6cb, 0xd6cc, 0xd6cd, 0xd6ce, 0xd6cf, 0xd6d0, 0xd6d1, 0xd6d2,
+ 0xd6d3, 0xd6d4, 0x0000, 0xd6d5, 0xd6d6, 0xd6d7, 0xd6d8, 0xd6d9,
+ 0xd6da, 0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df, 0x0000, 0x0000,
+ 0x0000, 0xd6e0, 0xd6e1, 0xd6e2, 0xd6e3, 0xd6e4, 0xd6e5, 0xd6e6,
+ 0xd6e7, 0xd6e8, 0xd6e9, 0xd6ea, 0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee,
+ 0xd6ef, 0xd6f0, 0x0000, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f5,
+ 0xd6f6, 0xd6f7, 0xd6f8, 0xd6f9, 0xd6fa, 0xd6fb, 0x0000, 0x0000,
+ 0x0000, 0xd6fc, 0xd6fd, 0xd6fe, 0xd6ff, 0xd700, 0xd701, 0xd702,
+ 0xd703, 0xd704, 0xd705, 0xd706, 0xd707, 0xd708, 0xd709, 0xd70a,
+ 0xd70b, 0xd70c, 0x0000, 0xd70d, 0xd70e, 0xd70f, 0xd710, 0xd711,
+ 0xd712, 0xd713, 0xd714, 0xd715, 0xd716, 0xd717, 0x0000, 0x0000,
+ 0x0000, 0xd718, 0xd719, 0xd71a, 0xd71b, 0xd71c, 0xd71d, 0xd71e,
+ 0xd71f, 0xd720, 0xd721, 0xd722, 0xd723, 0xd724, 0xd725, 0xd726,
+ 0xd727, 0xd728, 0x0000, 0xd729, 0xd72a, 0xd72b, 0xd72c, 0xd72d,
+ 0xd72e, 0xd72f, 0xd730, 0xd731, 0xd732, 0xd733, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd734, 0xd735, 0xd736, 0xd737, 0xd738, 0xd739, 0xd73a,
+ 0xd73b, 0xd73c, 0xd73d, 0xd73e, 0xd73f, 0xd740, 0xd741, 0xd742,
+ 0xd743, 0xd744, 0x0000, 0xd745, 0xd746, 0xd747, 0xd748, 0xd749,
+ 0xd74a, 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f, 0x0000, 0x0000,
+ 0x0000, 0xd750, 0xd751, 0xd752, 0xd753, 0xd754, 0xd755, 0xd756,
+ 0xd757, 0xd758, 0xd759, 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e,
+ 0xd75f, 0xd760, 0x0000, 0xd761, 0xd762, 0xd763, 0xd764, 0xd765,
+ 0xd766, 0xd767, 0xd768, 0xd769, 0xd76a, 0xd76b, 0x0000, 0x0000,
+ 0x0000, 0xd76c, 0xd76d, 0xd76e, 0xd76f, 0xd770, 0xd771, 0xd772,
+ 0xd773, 0xd774, 0xd775, 0xd776, 0xd777, 0xd778, 0xd779, 0xd77a,
+ 0xd77b, 0xd77c, 0x0000, 0xd77d, 0xd77e, 0xd77f, 0xd780, 0xd781,
+ 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0x0000, 0x0000,
+ 0x0000, 0xd788, 0xd789, 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e,
+ 0xd78f, 0xd790, 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796,
+ 0xd797, 0xd798, 0x0000, 0xd799, 0xd79a, 0xd79b, 0xd79c, 0xd79d,
+ 0xd79e, 0xd79f, 0xd7a0, 0xd7a1, 0xd7a2, 0xd7a3, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3164, 0x3001, 0x3002, 0x30fb, 0x2025, 0x22ef, 0x00a8,
+ 0x3003, 0x2013, 0x2014, 0x2016, 0xff3c, 0xff5e, 0x2018, 0x2019,
+ 0x201c, 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b,
+ 0x300c, 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7,
+ 0x00f7, 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032,
+ 0x2033, 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640,
+ 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7,
+ 0x203b, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6,
+ 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190,
+ 0x2191, 0x2193, 0x2194, 0x3013, 0x00ab, 0x00bb, 0x221a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x223d, 0x221d, 0x2235, 0x222b, 0x222c, 0x2208, 0x220b,
+ 0x2286, 0x2287, 0x2282, 0x2283, 0x222a, 0x2229, 0x2227, 0x2228,
+ 0xffe2, 0x21d2, 0x21d4, 0x2200, 0x2203, 0x00b4, 0x02dc, 0x02c7,
+ 0x02d8, 0x02dd, 0x02da, 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf,
+ 0x2236, 0x222e, 0x2211, 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1,
+ 0x25c0, 0x25b7, 0x25b6, 0x2664, 0x2660, 0x2661, 0x2665, 0x2667,
+ 0x2663, 0x25c9, 0x25c8, 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4,
+ 0x25a5, 0x25a8, 0x25a7, 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e,
+ 0x261c, 0x261e, 0x00b6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199,
+ 0x2196, 0x2198, 0x266d, 0x2669, 0x266a, 0x266c, 0x327f, 0x321c,
+ 0x2116, 0x33c7, 0x2122, 0x33c2, 0x33d8, 0x2121, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07,
+ 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f,
+ 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17,
+ 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f,
+ 0xff20, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
+ 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f,
+ 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37,
+ 0xff38, 0xff39, 0xff3a, 0xff3b, 0xffe6, 0xff3d, 0xff3e, 0xff3f,
+ 0xff40, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
+ 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55,
+ 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d,
+ 0xffe3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3165, 0x3166, 0x3167,
+ 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f,
+ 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177,
+ 0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x317f,
+ 0x3180, 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, 0x3187,
+ 0x3188, 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176,
+ 0x2177, 0x2178, 0x2179, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
+ 0x2168, 0x2169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+ 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+ 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8,
+ 0x03a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6,
+ 0x03c7, 0x03c8, 0x03c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c,
+ 0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513,
+ 0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520,
+ 0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538,
+ 0x2542, 0x2512, 0x2511, 0x251a, 0x2519, 0x2516, 0x2515, 0x250e,
+ 0x250d, 0x251e, 0x251f, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529,
+ 0x252a, 0x252d, 0x252e, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539,
+ 0x253a, 0x253d, 0x253e, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545,
+ 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33c4, 0x33a3,
+ 0x33a4, 0x33a5, 0x33a6, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d,
+ 0x339e, 0x339f, 0x33a0, 0x33a1, 0x33a2, 0x33ca, 0x338d, 0x338e,
+ 0x338f, 0x33cf, 0x3388, 0x3389, 0x33c8, 0x33a7, 0x33a8, 0x33b0,
+ 0x33b1, 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7, 0x33b8,
+ 0x33b9, 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x33ba, 0x33bb,
+ 0x33bc, 0x33bd, 0x33be, 0x33bf, 0x3390, 0x3391, 0x3392, 0x3393,
+ 0x3394, 0x2126, 0x33c0, 0x33c1, 0x338a, 0x338b, 0x338c, 0x33d6,
+ 0x33c5, 0x33ad, 0x33ae, 0x33af, 0x33db, 0x33a9, 0x33aa, 0x33ab,
+ 0x33ac, 0x33dd, 0x33d0, 0x33d3, 0x33c3, 0x33c9, 0x33dc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x33c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x00c6, 0x00d0, 0x00aa, 0x0126, 0x0000, 0x0132, 0x0000,
+ 0x013f, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a,
+ 0x0000, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266,
+ 0x3267, 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e,
+ 0x326f, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276,
+ 0x3277, 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1, 0x24d2,
+ 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, 0x24da,
+ 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, 0x24e2,
+ 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, 0x2460,
+ 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
+ 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd, 0x2153,
+ 0x2154, 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138,
+ 0x0140, 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b,
+ 0x0149, 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206,
+ 0x3207, 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e,
+ 0x320f, 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216,
+ 0x3217, 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e,
+ 0x249f, 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6,
+ 0x24a7, 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae,
+ 0x24af, 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474,
+ 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x247c, 0x247d, 0x247e, 0x247f, 0x2480, 0x2481, 0x2482,
+ 0x00b9, 0x00b2, 0x00b3, 0x2074, 0x207f, 0x2081, 0x2082, 0x2083,
+ 0x2084, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
+ 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f,
+ 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057,
+ 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f,
+ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
+ 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
+ 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077,
+ 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f,
+ 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087,
+ 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f,
+ 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
+ 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
+ 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
+ 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
+ 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7,
+ 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
+ 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
+ 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
+ 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
+ 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5,
+ 0x30f6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
+ 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d,
+ 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
+ 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d,
+ 0x042e, 0x042f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451,
+ 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d,
+ 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
+ 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d,
+ 0x044e, 0x044f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4f3d, 0x4f73, 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475,
+ 0x54e5, 0x5609, 0x5ac1, 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef,
+ 0x6b4c, 0x73c2, 0x75c2, 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888,
+ 0x8a36, 0x8cc8, 0x8dcf, 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374,
+ 0x5404, 0x606a, 0x6164, 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2,
+ 0x95a3, 0x4f83, 0x520a, 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79,
+ 0x61c7, 0x63c0, 0x6746, 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b,
+ 0x78f5, 0x7a08, 0x7aff, 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb,
+ 0x9593, 0x4e6b, 0x559d, 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b,
+ 0x8910, 0x874e, 0x97a8, 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x611f, 0x61be, 0x6221, 0x6562, 0x67d1, 0x6a44, 0x6e1b,
+ 0x7518, 0x75b3, 0x76e3, 0x77b0, 0x7d3a, 0x90af, 0x9451, 0x9452,
+ 0x9f95, 0x5323, 0x5cac, 0x7532, 0x80db, 0x9240, 0x9598, 0x525b,
+ 0x5808, 0x59dc, 0x5ca1, 0x5d17, 0x5eb7, 0x5f3a, 0x5f4a, 0x6177,
+ 0x6c5f, 0x757a, 0x7586, 0x7ce0, 0x7d73, 0x7db1, 0x7f8c, 0x8154,
+ 0x8221, 0x8591, 0x8941, 0x8b1b, 0x92fc, 0x964d, 0x9c47, 0x4ecb,
+ 0x4ef7, 0x500b, 0x51f1, 0x584f, 0x6137, 0x613e, 0x6168, 0x6539,
+ 0x69ea, 0x6f11, 0x75a5, 0x7686, 0x76d6, 0x7b87, 0x82a5, 0x84cb,
+ 0x8c48, 0x93a7, 0x958b, 0x5580, 0x5ba2, 0x5751, 0x66f4, 0x7cb3,
+ 0x7fb9, 0x91b5, 0x5028, 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x636e,
+ 0x64da, 0x64e7, 0x6e20, 0x70ac, 0x795b, 0x8ddd, 0x8e1e, 0x8eca,
+ 0x907d, 0x9245, 0x92f8, 0x4e7e, 0x4ef6, 0x5065, 0x5dfe, 0x5efa,
+ 0x6106, 0x6957, 0x8171, 0x8654, 0x8e47, 0x9375, 0x9a2b, 0x4e5e,
+ 0x5091, 0x6770, 0x6840, 0x5109, 0x528d, 0x5292, 0x6aa2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x77bc, 0x9210, 0x9ed4, 0x52ab, 0x602f, 0x8ff2, 0x5048,
+ 0x61a9, 0x63ed, 0x64ca, 0x683c, 0x6a84, 0x6fc0, 0x8188, 0x89a1,
+ 0x9694, 0x5805, 0x727d, 0x72ac, 0x7504, 0x7d79, 0x7e6d, 0x80a9,
+ 0x898b, 0x8b74, 0x9063, 0x9d51, 0x6289, 0x6c7a, 0x6f54, 0x7d50,
+ 0x7f3a, 0x8a23, 0x517c, 0x614a, 0x7b9d, 0x8b19, 0x9257, 0x938c,
+ 0x4eac, 0x4fd3, 0x501e, 0x50be, 0x5106, 0x52c1, 0x52cd, 0x537f,
+ 0x5770, 0x5883, 0x5e9a, 0x5f91, 0x6176, 0x61ac, 0x64ce, 0x656c,
+ 0x666f, 0x66bb, 0x0000, 0x6897, 0x6d87, 0x7085, 0x70f1, 0x749f,
+ 0x74a5, 0x74ca, 0x75d9, 0x786c, 0x78ec, 0x7adf, 0x7af6, 0x7d45,
+ 0x7d93, 0x8015, 0x803f, 0x811b, 0x8396, 0x8b66, 0x8f15, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9015, 0x93e1, 0x9803, 0x9838, 0x9a5a, 0x9be8, 0x4fc2,
+ 0x5553, 0x583a, 0x5951, 0x5b63, 0x5c46, 0x60b8, 0x6212, 0x6842,
+ 0x68b0, 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d, 0x7cfb,
+ 0x7e6b, 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4, 0x53e4,
+ 0x53e9, 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b, 0x5eab,
+ 0x62f7, 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1, 0x6cbd,
+ 0x75fc, 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1, 0x818f,
+ 0x82e6, 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5, 0x0000,
+ 0x8f9c, 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed, 0x659b,
+ 0x66f2, 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764, 0x5d11,
+ 0x6606, 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4, 0x6c68,
+ 0x6ed1, 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54, 0x5de5,
+ 0x6050, 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a, 0x86a3,
+ 0x8ca2, 0x978f, 0x4e32, 0x5be1, 0x6208, 0x679c, 0x74dc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x79d1, 0x83d3, 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b,
+ 0x9846, 0x5ed3, 0x69e8, 0x85ff, 0x90ed, 0x0000, 0x51a0, 0x5b98,
+ 0x5bec, 0x6163, 0x68fa, 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1,
+ 0x7f50, 0x83c5, 0x89c0, 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d,
+ 0x62ec, 0x9002, 0x4f8a, 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0,
+ 0x6d38, 0x709a, 0x72c2, 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366,
+ 0x639b, 0x7f6b, 0x4e56, 0x5080, 0x584a, 0x58de, 0x602a, 0x6127,
+ 0x62d0, 0x69d0, 0x9b41, 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4,
+ 0x50d1, 0x54ac, 0x55ac, 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e,
+ 0x6821, 0x6a4b, 0x72e1, 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x81a0, 0x854e, 0x86df, 0x8f03, 0x8f4e, 0x90ca, 0x9903,
+ 0x9a55, 0x9bab, 0x4e18, 0x4e45, 0x4e5d, 0x4ec7, 0x4ff1, 0x5177,
+ 0x52fe, 0x5340, 0x53e3, 0x53e5, 0x548e, 0x5614, 0x5775, 0x57a2,
+ 0x5bc7, 0x5d87, 0x5ed0, 0x61fc, 0x62d8, 0x6551, 0x67b8, 0x67e9,
+ 0x69cb, 0x6b50, 0x6bc6, 0x6bec, 0x6c42, 0x6e9d, 0x7078, 0x72d7,
+ 0x7396, 0x7403, 0x77bf, 0x77e9, 0x7a76, 0x7d7f, 0x8009, 0x81fc,
+ 0x8205, 0x820a, 0x82df, 0x8862, 0x8b33, 0x8cfc, 0x8ec0, 0x9011,
+ 0x90b1, 0x9264, 0x92b6, 0x99d2, 0x9a45, 0x9ce9, 0x9dd7, 0x9f9c,
+ 0x570b, 0x5c40, 0x83ca, 0x97a0, 0x97ab, 0x9eb4, 0x541b, 0x7a98,
+ 0x7fa4, 0x88d9, 0x8ecd, 0x90e1, 0x5800, 0x5c48, 0x6398, 0x7a9f,
+ 0x5bae, 0x5f13, 0x7a79, 0x7aae, 0x828e, 0x8eac, 0x5026, 0x5238,
+ 0x52f8, 0x5377, 0x5708, 0x62f3, 0x6372, 0x6b0a, 0x6dc3, 0x7737,
+ 0x53a5, 0x7357, 0x8568, 0x8e76, 0x95d5, 0x673a, 0x6ac3, 0x6f70,
+ 0x8a6d, 0x8ecc, 0x994b, 0x0000, 0x6677, 0x6b78, 0x8cb4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9b3c, 0x0000, 0x53eb, 0x572d, 0x594e, 0x63c6, 0x69fb,
+ 0x73ea, 0x7845, 0x7aba, 0x7ac5, 0x7cfe, 0x8475, 0x898f, 0x8d73,
+ 0x9035, 0x95a8, 0x52fb, 0x5747, 0x7547, 0x7b60, 0x83cc, 0x921e,
+ 0x0000, 0x6a58, 0x514b, 0x524b, 0x5287, 0x621f, 0x68d8, 0x6975,
+ 0x9699, 0x50c5, 0x52a4, 0x52e4, 0x61c3, 0x65a4, 0x6839, 0x69ff,
+ 0x747e, 0x7b4b, 0x82b9, 0x83eb, 0x89b2, 0x8b39, 0x8fd1, 0x9949,
+ 0x0000, 0x4eca, 0x5997, 0x64d2, 0x6611, 0x6a8e, 0x7434, 0x7981,
+ 0x79bd, 0x82a9, 0x887e, 0x887f, 0x895f, 0x91d1, 0x9326, 0x4f0b,
+ 0x53ca, 0x6025, 0x6271, 0x6c72, 0x7d1a, 0x7d66, 0x4e98, 0x5162,
+ 0x77dc, 0x80af, 0x4f01, 0x4f0e, 0x5176, 0x5180, 0x55dc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5668, 0x573b, 0x57fa, 0x57fc, 0x5914, 0x5947, 0x5993,
+ 0x5bc4, 0x5c90, 0x5d0e, 0x5df1, 0x5e7e, 0x5fcc, 0x6280, 0x65d7,
+ 0x65e3, 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f, 0x6b3a,
+ 0x6c23, 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a, 0x7482,
+ 0x74a3, 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947, 0x7948,
+ 0x797a, 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d, 0x808c,
+ 0x8a18, 0x8b4f, 0x0000, 0x8d77, 0x9321, 0x9324, 0x98e2, 0x9951,
+ 0x9a0e, 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409, 0x62ee,
+ 0x6854, 0x0000, 0x55ab, 0x513a, 0x5587, 0x5948, 0x5a1c, 0x61e6,
+ 0x61f6, 0x62cf, 0x62ff, 0x7669, 0x7f85, 0x863f, 0x87ba, 0x88f8,
+ 0x908f, 0x90a3, 0x6a02, 0x6d1b, 0x70d9, 0x73de, 0x843d, 0x8afe,
+ 0x916a, 0x99f1, 0x4e82, 0x5375, 0x6696, 0x6b04, 0x7156, 0x721b,
+ 0x862d, 0x96e3, 0x9e1e, 0x634f, 0x637a, 0x5357, 0x5d50, 0x678f,
+ 0x6960, 0x6e73, 0x6feb, 0x7537, 0x85cd, 0x8964, 0x62c9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7d0d, 0x81d8, 0x881f, 0x8872, 0x56ca, 0x5a18, 0x5eca,
+ 0x6717, 0x6d6a, 0x72fc, 0x90de, 0x4e43, 0x4f86, 0x5167, 0x0000,
+ 0x67f0, 0x8010, 0x51b7, 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5,
+ 0x606c, 0x62c8, 0x637b, 0x5be7, 0x5bd7, 0x52aa, 0x52de, 0x5974,
+ 0x5f29, 0x6012, 0x64c4, 0x6ad3, 0x7210, 0x7459, 0x76e7, 0x8001,
+ 0x8606, 0x865c, 0x8def, 0x9732, 0x99d1, 0x9b6f, 0x9dfa, 0x788c,
+ 0x797f, 0x7da0, 0x83c9, 0x9304, 0x9e7f, 0x8ad6, 0x58df, 0x5f04,
+ 0x6fc3, 0x7c60, 0x807e, 0x81bf, 0x8fb2, 0x60f1, 0x7262, 0x78ca,
+ 0x8166, 0x8cc2, 0x96f7, 0x5c3f, 0x58d8, 0x5c62, 0x6a13, 0x6dda,
+ 0x6f0f, 0x7d2f, 0x7e37, 0x964b, 0x5ae9, 0x8a25, 0x677b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7d10, 0x52d2, 0x808b, 0x51dc, 0x51cc, 0x7a1c, 0x7dbe,
+ 0x80fd, 0x83f1, 0x9675, 0x5c3c, 0x6ce5, 0x533f, 0x6eba, 0x591a,
+ 0x8336, 0x4e39, 0x4eb6, 0x4f46, 0x55ae, 0x5718, 0x58c7, 0x5f56,
+ 0x65b7, 0x65e6, 0x6a80, 0x6bb5, 0x6e4d, 0x77ed, 0x7aef, 0x7c1e,
+ 0x7dde, 0x86cb, 0x8892, 0x9132, 0x935b, 0x64bb, 0x6fbe, 0x737a,
+ 0x75b8, 0x9054, 0x5556, 0x574d, 0x61ba, 0x64d4, 0x66c7, 0x6de1,
+ 0x6e5b, 0x6f6d, 0x6fb9, 0x75f0, 0x8043, 0x81bd, 0x8541, 0x8983,
+ 0x8ac7, 0x8b5a, 0x931f, 0x6c93, 0x7553, 0x7b54, 0x8e0f, 0x905d,
+ 0x5510, 0x5802, 0x5858, 0x5e62, 0x6207, 0x649e, 0x68e0, 0x7576,
+ 0x7cd6, 0x87b3, 0x9ee8, 0x4ee3, 0x5788, 0x576e, 0x5927, 0x5c0d,
+ 0x5cb1, 0x5e36, 0x5f85, 0x6234, 0x64e1, 0x73b3, 0x81fa, 0x888b,
+ 0x8cb8, 0x968a, 0x9edb, 0x5b85, 0x5fb7, 0x60b3, 0x5012, 0x5200,
+ 0x5230, 0x5716, 0x5835, 0x5857, 0x5c0e, 0x5c60, 0x5cf6, 0x5d8b,
+ 0x5ea6, 0x5f92, 0x60bc, 0x6311, 0x6389, 0x6417, 0x6843, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x68f9, 0x6ac2, 0x6dd8, 0x6e21, 0x6ed4, 0x6fe4, 0x71fe,
+ 0x76dc, 0x7779, 0x79b1, 0x7a3b, 0x8404, 0x89a9, 0x8ced, 0x8df3,
+ 0x8e48, 0x9003, 0x9014, 0x9053, 0x90fd, 0x934d, 0x9676, 0x97dc,
+ 0x6bd2, 0x7006, 0x7258, 0x72a2, 0x7368, 0x7763, 0x79bf, 0x7be4,
+ 0x7e9b, 0x8b80, 0x58a9, 0x60c7, 0x6566, 0x65fd, 0x66be, 0x6c8c,
+ 0x711e, 0x71c9, 0x8c5a, 0x9813, 0x4e6d, 0x7a81, 0x4edd, 0x51ac,
+ 0x51cd, 0x52d5, 0x540c, 0x61a7, 0x6771, 0x6850, 0x68df, 0x6d1e,
+ 0x6f7c, 0x75bc, 0x77b3, 0x7ae5, 0x80f4, 0x8463, 0x9285, 0x515c,
+ 0x6597, 0x675c, 0x6793, 0x75d8, 0x7ac7, 0x8373, 0x0000, 0x8c46,
+ 0x9017, 0x982d, 0x5c6f, 0x81c0, 0x829a, 0x9041, 0x906f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x920d, 0x5f97, 0x5d9d, 0x6a59, 0x71c8, 0x767b, 0x7b49,
+ 0x85e4, 0x8b04, 0x9127, 0x9a30, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7d61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6b12, 0x703e, 0x0000, 0x0000, 0x0000, 0x524c,
+ 0x8fa3, 0x0000, 0x64e5, 0x652c, 0x6b16, 0x0000, 0x7c43, 0x7e9c,
+ 0x0000, 0x0000, 0x89bd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7405, 0x746f, 0x8782, 0x0000, 0x0000, 0x5d0d,
+ 0x5fa0, 0x840a, 0x0000, 0x63a0, 0x7565, 0x4eae, 0x5006, 0x5169,
+ 0x51c9, 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f, 0x8ad2,
+ 0x8f1b, 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec, 0x616e,
+ 0x623e, 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823, 0x95ad,
+ 0x9a62, 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77, 0x701d,
+ 0x792b, 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7149, 0x7489, 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023,
+ 0x934a, 0x51bd, 0x5217, 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9,
+ 0x6582, 0x6bae, 0x6fc2, 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9,
+ 0x0000, 0x5cba, 0x5dba, 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce,
+ 0x8046, 0x901e, 0x9234, 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b,
+ 0x6fa7, 0x79ae, 0x91b4, 0x96b7, 0x0000, 0x0000, 0x6488, 0x0000,
+ 0x0000, 0x6f5e, 0x7018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8f05, 0x0000, 0x0000, 0x0000, 0x9e75, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x9e93, 0x0000, 0x0000, 0x0000,
+ 0x6727, 0x7027, 0x74cf, 0x0000, 0x0000, 0x5121, 0x7028, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x8cda, 0x8cf4, 0x0000, 0x4e86,
+ 0x50da, 0x5bee, 0x5ed6, 0x6599, 0x71ce, 0x7642, 0x77ad, 0x804a,
+ 0x84fc, 0x907c, 0x9b27, 0x9f8d, 0x0000, 0x5a41, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x763b, 0x0000, 0x0000, 0x851e, 0x8938, 0x93e4,
+ 0x0000, 0x5289, 0x65d2, 0x67f3, 0x69b4, 0x6d41, 0x6e9c, 0x700f,
+ 0x7409, 0x7460, 0x7559, 0x7624, 0x786b, 0x8b2c, 0x985e, 0x516d,
+ 0x622e, 0x9678, 0x4f96, 0x502b, 0x5d19, 0x6dea, 0x7db8, 0x8f2a,
+ 0x5f8b, 0x6144, 0x6817, 0x7387, 0x9686, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x695e, 0x0000, 0x0000, 0x0000, 0x0000, 0x4fda, 0x5229,
+ 0x5398, 0x540f, 0x550e, 0x5c65, 0x60a7, 0x674e, 0x68a8, 0x6d6c,
+ 0x7281, 0x72f8, 0x7406, 0x7483, 0x7570, 0x75e2, 0x7c6c, 0x7f79,
+ 0x7fb8, 0x8389, 0x88cf, 0x88e1, 0x91cc, 0x91d0, 0x96e2, 0x9bc9,
+ 0x541d, 0x6f7e, 0x71d0, 0x7498, 0x85fa, 0x8eaa, 0x96a3, 0x9c57,
+ 0x9e9f, 0x6797, 0x6dcb, 0x7433, 0x81e8, 0x9716, 0x782c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7acb, 0x7b20, 0x7c92, 0x6469, 0x746a, 0x75f2, 0x78bc,
+ 0x78e8, 0x99ac, 0x9b54, 0x9ebb, 0x5bde, 0x5e55, 0x6f20, 0x819c,
+ 0x83ab, 0x9088, 0x4e07, 0x534d, 0x5a29, 0x5dd2, 0x5f4e, 0x6162,
+ 0x633d, 0x6669, 0x66fc, 0x6eff, 0x6f2b, 0x7063, 0x779e, 0x842c,
+ 0x8513, 0x883b, 0x8f13, 0x9945, 0x9c3b, 0x551c, 0x62b9, 0x672b,
+ 0x6cab, 0x8309, 0x896a, 0x977a, 0x4ea1, 0x5984, 0x5fd8, 0x5fd9,
+ 0x671b, 0x7db2, 0x7f54, 0x8292, 0x832b, 0x83bd, 0x8f1e, 0x9099,
+ 0x57cb, 0x59b9, 0x5a92, 0x5bd0, 0x6627, 0x679a, 0x6885, 0x6bcf,
+ 0x7164, 0x7f75, 0x8cb7, 0x8ce3, 0x9081, 0x9b45, 0x8108, 0x8c8a,
+ 0x964c, 0x9a40, 0x9ea5, 0x5b5f, 0x6c13, 0x731b, 0x76f2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x76df, 0x840c, 0x51aa, 0x8993, 0x514d, 0x5195, 0x52c9,
+ 0x68c9, 0x6c94, 0x7704, 0x7720, 0x7dbf, 0x7dec, 0x9762, 0x9eb5,
+ 0x6ec5, 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d, 0x6927,
+ 0x6e9f, 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169, 0x9298,
+ 0x9cf4, 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d, 0x6155,
+ 0x6478, 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb, 0x725f,
+ 0x7261, 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305, 0x8b00,
+ 0x8b28, 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766, 0x7a46,
+ 0x9da9, 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f, 0x5893,
+ 0x5999, 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b, 0x7ad7,
+ 0x82d7, 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a, 0x62c7,
+ 0x64ab, 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7, 0x755d,
+ 0x7e46, 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727, 0x9d61,
+ 0x58a8, 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6c76, 0x7d0a, 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef,
+ 0x52ff, 0x6c95, 0x7269, 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c,
+ 0x5fae, 0x672a, 0x68b6, 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73,
+ 0x7f8e, 0x8587, 0x8b0e, 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6,
+ 0x610d, 0x61ab, 0x654f, 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f,
+ 0x73c9, 0x7de1, 0x9594, 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a,
+ 0x62cd, 0x640f, 0x64b2, 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e,
+ 0x7b94, 0x7c95, 0x7e1b, 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9,
+ 0x99c1, 0x4f34, 0x534a, 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500,
+ 0x6591, 0x69c3, 0x6cee, 0x6f58, 0x73ed, 0x7554, 0x7622, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x76e4, 0x76fc, 0x78d0, 0x78fb, 0x792c, 0x7d46, 0x822c,
+ 0x87e0, 0x8fd4, 0x9812, 0x98ef, 0x52c3, 0x62d4, 0x64a5, 0x6e24,
+ 0x6f51, 0x767c, 0x8dcb, 0x91b1, 0x9262, 0x9aee, 0x9b43, 0x5023,
+ 0x508d, 0x574a, 0x59a8, 0x5c28, 0x5e47, 0x5f77, 0x623f, 0x653e,
+ 0x65b9, 0x65c1, 0x6609, 0x678b, 0x699c, 0x6ec2, 0x78c5, 0x7d21,
+ 0x80aa, 0x8180, 0x822b, 0x82b3, 0x84a1, 0x868c, 0x8a2a, 0x8b17,
+ 0x90a6, 0x9632, 0x9f90, 0x500d, 0x4ff3, 0x5317, 0x57f9, 0x5f98,
+ 0x62dc, 0x6392, 0x676f, 0x6e43, 0x7119, 0x76c3, 0x80cc, 0x80da,
+ 0x88f4, 0x88f5, 0x8919, 0x8ce0, 0x8f29, 0x914d, 0x966a, 0x4f2f,
+ 0x4f70, 0x5e1b, 0x67cf, 0x6822, 0x767d, 0x767e, 0x9b44, 0x5e61,
+ 0x6a0a, 0x7169, 0x71d4, 0x756a, 0x0000, 0x7e41, 0x8543, 0x85e9,
+ 0x98dc, 0x4f10, 0x7b4f, 0x7f70, 0x95a5, 0x51e1, 0x5e06, 0x68b5,
+ 0x6c3e, 0x6c4e, 0x6cdb, 0x72af, 0x7bc4, 0x8303, 0x6cd5, 0x743a,
+ 0x50fb, 0x5288, 0x58c1, 0x64d8, 0x6a97, 0x74a7, 0x7656, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x78a7, 0x8617, 0x95e2, 0x9739, 0x4fbf, 0x535e, 0x5f01,
+ 0x8b8a, 0x8fa8, 0x8faf, 0x908a, 0x5225, 0x77a5, 0x9c49, 0x9f08,
+ 0x4e19, 0x5002, 0x5175, 0x5c5b, 0x5e77, 0x661e, 0x663a, 0x67c4,
+ 0x68c5, 0x70b3, 0x7501, 0x75c5, 0x79c9, 0x7add, 0x8f27, 0x9920,
+ 0x9a08, 0x4fdd, 0x5821, 0x5831, 0x5bf6, 0x666e, 0x6b65, 0x6d11,
+ 0x6e7a, 0x6f7d, 0x73e4, 0x752b, 0x83e9, 0x88dc, 0x8913, 0x8b5c,
+ 0x8f14, 0x4f0f, 0x50d5, 0x5310, 0x535c, 0x5b93, 0x5fa9, 0x670d,
+ 0x798f, 0x8179, 0x832f, 0x8514, 0x8907, 0x8986, 0x8f39, 0x8f3b,
+ 0x99a5, 0x9c12, 0x672c, 0x4e76, 0x4ff8, 0x5949, 0x5c01, 0x5cef,
+ 0x5cf0, 0x6367, 0x68d2, 0x70fd, 0x71a2, 0x742b, 0x7e2b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x84ec, 0x8702, 0x9022, 0x92d2, 0x9cf3, 0x4e0d, 0x4ed8,
+ 0x4fef, 0x5085, 0x5256, 0x526f, 0x5426, 0x5490, 0x57e0, 0x592b,
+ 0x5a66, 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0x0000, 0x6276, 0x6577,
+ 0x65a7, 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36, 0x8150,
+ 0x8151, 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0, 0x8ce6,
+ 0x8cfb, 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644, 0x99d9,
+ 0x9ce7, 0x0000, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954, 0x596e,
+ 0x5fff, 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6, 0x7c89,
+ 0x7cde, 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0x0000, 0x4f5b, 0x5f17,
+ 0x5f7f, 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43, 0x9d6c,
+ 0x4e15, 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62, 0x5e87,
+ 0x60b2, 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7, 0x6bd4,
+ 0x6bd6, 0x6bd7, 0x6bd8, 0x6cb8, 0x6ccc, 0x7435, 0x75fa, 0x7812,
+ 0x7891, 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x813e, 0x81c2, 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c,
+ 0x8cbb, 0x9119, 0x975e, 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c,
+ 0x658c, 0x6ab3, 0x6baf, 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad,
+ 0x8ca7, 0x8cd3, 0x983b, 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d,
+ 0x4e8b, 0x4e9b, 0x4ed5, 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff,
+ 0x53f2, 0x53f8, 0x5506, 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11,
+ 0x5beb, 0x5bfa, 0x5c04, 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368,
+ 0x659c, 0x65af, 0x67f6, 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7,
+ 0x6e23, 0x7009, 0x7345, 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1,
+ 0x7be9, 0x7d17, 0x7d72, 0x8086, 0x820d, 0x838e, 0x84d1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x86c7, 0x88df, 0x8a50, 0x8a5e, 0x8b1d, 0x8cdc, 0x8d66,
+ 0x8fad, 0x90aa, 0x98fc, 0x99df, 0x9e9d, 0x524a, 0x6578, 0x6714,
+ 0x7d22, 0x5098, 0x522a, 0x5c71, 0x6563, 0x6c55, 0x73ca, 0x7523,
+ 0x759d, 0x7b97, 0x849c, 0x9178, 0x9730, 0x4e77, 0x6492, 0x6bba,
+ 0x715e, 0x85a9, 0x4e09, 0x53c3, 0x6749, 0x68ee, 0x6e17, 0x829f,
+ 0x8518, 0x886b, 0x63f7, 0x6f81, 0x9212, 0x98af, 0x4e0a, 0x50b7,
+ 0x50cf, 0x511f, 0x5546, 0x55aa, 0x5617, 0x5b40, 0x5c19, 0x5ce0,
+ 0x5e38, 0x5e8a, 0x5ea0, 0x5ec2, 0x60f3, 0x6851, 0x6a61, 0x6e58,
+ 0x723d, 0x7240, 0x72c0, 0x76f8, 0x7965, 0x7bb1, 0x7fd4, 0x88f3,
+ 0x89f4, 0x8a73, 0x8c61, 0x8cde, 0x971c, 0x585e, 0x74bd, 0x8cfd,
+ 0x55c7, 0x0000, 0x7a61, 0x0000, 0x8272, 0x7272, 0x751f, 0x7525,
+ 0x7701, 0x7b19, 0x5885, 0x58fb, 0x5dbc, 0x5e8f, 0x5eb6, 0x5f90,
+ 0x6055, 0x6292, 0x637f, 0x654d, 0x6691, 0x66d9, 0x66f8, 0x6816,
+ 0x68f2, 0x7280, 0x745e, 0x7b6e, 0x7d6e, 0x7dd6, 0x7f72, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x80e5, 0x8212, 0x85af, 0x897f, 0x8a93, 0x901d, 0x92e4,
+ 0x9ecd, 0x9f20, 0x5915, 0x596d, 0x5e2d, 0x60dc, 0x6614, 0x6673,
+ 0x6790, 0x6c50, 0x6dc5, 0x6f5f, 0x77f3, 0x78a9, 0x84c6, 0x91cb,
+ 0x932b, 0x4ed9, 0x50ca, 0x5148, 0x5584, 0x5b0b, 0x5ba3, 0x6247,
+ 0x657e, 0x65cb, 0x6e32, 0x717d, 0x7401, 0x7444, 0x7487, 0x74bf,
+ 0x766c, 0x79aa, 0x7dda, 0x7e55, 0x7fa8, 0x817a, 0x81b3, 0x8239,
+ 0x861a, 0x87ec, 0x8a75, 0x8de3, 0x9078, 0x9291, 0x9425, 0x994d,
+ 0x9bae, 0x5368, 0x5c51, 0x6954, 0x6cc4, 0x6d29, 0x6e2b, 0x820c,
+ 0x859b, 0x893b, 0x8a2d, 0x8aaa, 0x96ea, 0x9f67, 0x5261, 0x66b9,
+ 0x6bb2, 0x7e96, 0x87fe, 0x8d0d, 0x9583, 0x965d, 0x651d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6d89, 0x71ee, 0x8449, 0x57ce, 0x59d3, 0x5bac, 0x6027,
+ 0x60fa, 0x6210, 0x661f, 0x665f, 0x7329, 0x73f9, 0x76db, 0x0000,
+ 0x7b6c, 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16, 0x52e2,
+ 0x6b72, 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0x0000, 0x8cb0, 0x53ec,
+ 0x562f, 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240, 0x6383,
+ 0x6414, 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f, 0x70a4,
+ 0x71d2, 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0, 0x7c2b,
+ 0x7d20, 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d, 0x9061,
+ 0x90b5, 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f, 0x6d91,
+ 0x7c9f, 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd, 0x640d,
+ 0x84c0, 0x905c, 0x98e1, 0x0000, 0x5b8b, 0x609a, 0x677e, 0x6dde,
+ 0x8a1f, 0x8aa6, 0x9001, 0x980c, 0x5237, 0x0000, 0x7051, 0x788e,
+ 0x9396, 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da, 0x5782,
+ 0x58fd, 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x620d, 0x624b, 0x6388, 0x641c, 0x6536, 0x0000, 0x6a39,
+ 0x6b8a, 0x6c34, 0x6d19, 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407,
+ 0x74b2, 0x7626, 0x7761, 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f,
+ 0x7dac, 0x7e61, 0x7f9e, 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea,
+ 0x8896, 0x8ab0, 0x8b90, 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296,
+ 0x92b9, 0x968b, 0x96a7, 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996,
+ 0x9ad3, 0x9b1a, 0x53d4, 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1,
+ 0x6f5a, 0x719f, 0x7421, 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87,
+ 0x5faa, 0x6042, 0x65ec, 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35,
+ 0x6df3, 0x73e3, 0x76fe, 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x821c, 0x8340, 0x84f4, 0x8563, 0x8a62, 0x8ac4, 0x9187,
+ 0x931e, 0x9806, 0x99b4, 0x620c, 0x8853, 0x8ff0, 0x9265, 0x5d07,
+ 0x5d27, 0x5d69, 0x745f, 0x819d, 0x8768, 0x6fd5, 0x62fe, 0x7fd2,
+ 0x8936, 0x8972, 0x4e1e, 0x4e58, 0x50e7, 0x52dd, 0x5347, 0x627f,
+ 0x6607, 0x7e69, 0x8805, 0x965e, 0x4f8d, 0x5319, 0x5636, 0x59cb,
+ 0x5aa4, 0x5c38, 0x5c4e, 0x5c4d, 0x5e02, 0x5f11, 0x6043, 0x65bd,
+ 0x662f, 0x6642, 0x67be, 0x67f4, 0x731c, 0x77e2, 0x793a, 0x7fc5,
+ 0x8494, 0x84cd, 0x8996, 0x8a66, 0x8a69, 0x8ae1, 0x8c55, 0x8c7a,
+ 0x57f4, 0x5bd4, 0x5f0f, 0x606f, 0x62ed, 0x690d, 0x6b96, 0x6e5c,
+ 0x7184, 0x7bd2, 0x8755, 0x8b58, 0x8efe, 0x98df, 0x98fe, 0x4f38,
+ 0x4f81, 0x4fe1, 0x547b, 0x5a20, 0x5bb8, 0x613c, 0x65b0, 0x6668,
+ 0x71fc, 0x7533, 0x795e, 0x7d33, 0x814e, 0x81e3, 0x8398, 0x85aa,
+ 0x85ce, 0x8703, 0x8a0a, 0x8eab, 0x8f9b, 0x8fb0, 0x8fc5, 0x5931,
+ 0x5ba4, 0x5be6, 0x6089, 0x5be9, 0x5c0b, 0x5fc3, 0x6c81, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6c88, 0x6df1, 0x700b, 0x751a, 0x82af, 0x8af6, 0x4ec0,
+ 0x5341, 0x0000, 0x96d9, 0x6c0f, 0x4e9e, 0x4fc4, 0x5152, 0x555e,
+ 0x5a25, 0x5ce8, 0x6211, 0x7259, 0x82bd, 0x83aa, 0x86fe, 0x8859,
+ 0x8a1d, 0x963f, 0x96c5, 0x9913, 0x9d09, 0x9d5d, 0x580a, 0x5cb3,
+ 0x5dbd, 0x5e44, 0x60e1, 0x6115, 0x63e1, 0x0000, 0x6e25, 0x9102,
+ 0x9354, 0x984e, 0x9c10, 0x9f77, 0x5b89, 0x5cb8, 0x6309, 0x664f,
+ 0x6848, 0x773c, 0x96c1, 0x978d, 0x9854, 0x9b9f, 0x65a1, 0x8b01,
+ 0x8ecb, 0x95bc, 0x5535, 0x5ca9, 0x5dd6, 0x5eb5, 0x6697, 0x764c,
+ 0x83f4, 0x95c7, 0x58d3, 0x62bc, 0x72ce, 0x9d28, 0x4ef0, 0x592e,
+ 0x600f, 0x663b, 0x6b83, 0x79e7, 0x9d26, 0x5393, 0x54c0, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x57c3, 0x5d16, 0x611b, 0x66d6, 0x6daf, 0x788d, 0x827e,
+ 0x9698, 0x9744, 0x5384, 0x627c, 0x6396, 0x6db2, 0x7e0a, 0x814b,
+ 0x984d, 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b, 0x51b6,
+ 0x591c, 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0x82e5, 0x91ce,
+ 0x5f31, 0x0000, 0x0000, 0x7d04, 0x0000, 0x846f, 0x84bb, 0x85e5,
+ 0x8e8d, 0x0000, 0x4f6f, 0x0000, 0x0000, 0x58e4, 0x5b43, 0x6059,
+ 0x63da, 0x6518, 0x656d, 0x6698, 0x0000, 0x694a, 0x6a23, 0x6d0b,
+ 0x7001, 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0x0000, 0x7f8a,
+ 0x0000, 0x8944, 0x0000, 0x8b93, 0x91c0, 0x967d, 0x0000, 0x990a,
+ 0x5704, 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e, 0x99ad,
+ 0x9b5a, 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6, 0x5043,
+ 0x5830, 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616, 0x4ffa,
+ 0x513c, 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d, 0x5186,
+ 0x4e88, 0x4f59, 0x0000, 0x0000, 0x0000, 0x5982, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6b5f, 0x6c5d, 0x0000, 0x74b5, 0x7916, 0x0000,
+ 0x8207, 0x8245, 0x8339, 0x8f3f, 0x8f5d, 0x0000, 0x9918, 0x0000,
+ 0x0000, 0x0000, 0x4ea6, 0x0000, 0x57df, 0x5f79, 0x6613, 0x0000,
+ 0x0000, 0x75ab, 0x7e79, 0x8b6f, 0x0000, 0x9006, 0x9a5b, 0x56a5,
+ 0x5827, 0x59f8, 0x5a1f, 0x5bb4, 0x0000, 0x5ef6, 0x0000, 0x0000,
+ 0x6350, 0x633b, 0x0000, 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93,
+ 0x6df5, 0x6f14, 0x0000, 0x70df, 0x7136, 0x7159, 0x0000, 0x71c3,
+ 0x71d5, 0x0000, 0x784f, 0x786f, 0x0000, 0x7b75, 0x7de3, 0x0000,
+ 0x7e2f, 0x0000, 0x884d, 0x8edf, 0x0000, 0x0000, 0x0000, 0x925b,
+ 0x0000, 0x9cf6, 0x0000, 0x0000, 0x54bd, 0x6085, 0x6d85, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x71b1, 0x0000, 0x0000, 0x95b1, 0x53ad, 0x0000,
+ 0x0000, 0x0000, 0x67d3, 0x0000, 0x708e, 0x7130, 0x7430, 0x8276,
+ 0x82d2, 0x0000, 0x95bb, 0x9ae5, 0x9e7d, 0x66c4, 0x0000, 0x71c1,
+ 0x0000, 0x0000, 0x0000, 0x584b, 0x0000, 0x0000, 0x5db8, 0x5f71,
+ 0x0000, 0x6620, 0x668e, 0x6979, 0x69ae, 0x6c38, 0x6cf3, 0x6e36,
+ 0x6f41, 0x6fda, 0x701b, 0x702f, 0x7150, 0x71df, 0x7370, 0x0000,
+ 0x745b, 0x7469, 0x74d4, 0x76c8, 0x7a4e, 0x7e93, 0x0000, 0x0000,
+ 0x82f1, 0x8a60, 0x8fce, 0x0000, 0x9348, 0x0000, 0x9719, 0x0000,
+ 0x0000, 0x4e42, 0x502a, 0x0000, 0x5208, 0x53e1, 0x66f3, 0x6c6d,
+ 0x6fca, 0x730a, 0x777f, 0x7a62, 0x82ae, 0x85dd, 0x8602, 0x0000,
+ 0x88d4, 0x8a63, 0x8b7d, 0x8c6b, 0x0000, 0x92b3, 0x0000, 0x9713,
+ 0x9810, 0x4e94, 0x4f0d, 0x4fc9, 0x50b2, 0x5348, 0x543e, 0x5433,
+ 0x55da, 0x5862, 0x58ba, 0x5967, 0x5a1b, 0x5be4, 0x609f, 0x0000,
+ 0x61ca, 0x6556, 0x65ff, 0x6664, 0x68a7, 0x6c5a, 0x6fb3, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x70cf, 0x71ac, 0x7352, 0x7b7d, 0x8708, 0x8aa4, 0x9c32,
+ 0x9f07, 0x5c4b, 0x6c83, 0x7344, 0x7389, 0x923a, 0x6eab, 0x7465,
+ 0x761f, 0x7a69, 0x7e15, 0x860a, 0x5140, 0x58c5, 0x64c1, 0x74ee,
+ 0x7515, 0x7670, 0x7fc1, 0x9095, 0x96cd, 0x9954, 0x6e26, 0x74e6,
+ 0x7aa9, 0x7aaa, 0x81e5, 0x86d9, 0x8778, 0x8a1b, 0x5a49, 0x5b8c,
+ 0x5b9b, 0x68a1, 0x6900, 0x6d63, 0x73a9, 0x7413, 0x742c, 0x7897,
+ 0x7de9, 0x7feb, 0x8118, 0x8155, 0x839e, 0x8c4c, 0x962e, 0x9811,
+ 0x66f0, 0x5f80, 0x65fa, 0x6789, 0x6c6a, 0x738b, 0x502d, 0x5a03,
+ 0x6b6a, 0x77ee, 0x5916, 0x5d6c, 0x5dcd, 0x7325, 0x754f, 0x0000,
+ 0x0000, 0x50e5, 0x51f9, 0x582f, 0x592d, 0x5996, 0x59da, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5be5, 0x0000, 0x0000, 0x5da2, 0x62d7, 0x6416, 0x6493,
+ 0x64fe, 0x0000, 0x66dc, 0x0000, 0x6a48, 0x0000, 0x71ff, 0x7464,
+ 0x0000, 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170, 0x0000,
+ 0x87ef, 0x8981, 0x8b20, 0x9059, 0x0000, 0x9080, 0x9952, 0x617e,
+ 0x6b32, 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad, 0x5197,
+ 0x52c7, 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995, 0x6d8c,
+ 0x6e67, 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073, 0x8338,
+ 0x84c9, 0x8e0a, 0x9394, 0x93de, 0x0000, 0x4e8e, 0x4f51, 0x5076,
+ 0x512a, 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24, 0x611a,
+ 0x6182, 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950, 0x7991,
+ 0x79b9, 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2, 0x9047,
+ 0x90f5, 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67, 0x65ed,
+ 0x6631, 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91, 0x6688,
+ 0x6a52, 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x904b, 0x9695, 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90,
+ 0x718a, 0x96c4, 0x5143, 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3,
+ 0x5a9b, 0x5ac4, 0x5bc3, 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39,
+ 0x6e72, 0x6e90, 0x7230, 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45,
+ 0x9060, 0x0000, 0x9662, 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e,
+ 0x4f4d, 0x5049, 0x50de, 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09,
+ 0x6170, 0x6690, 0x6e2d, 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e,
+ 0x8466, 0x853f, 0x875f, 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb,
+ 0x9b4f, 0x4e73, 0x4f91, 0x5112, 0x516a, 0x0000, 0x552f, 0x55a9,
+ 0x5b7a, 0x5ba5, 0x5e7c, 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6108, 0x6109, 0x63c4, 0x6538, 0x6709, 0x0000, 0x67d4,
+ 0x67da, 0x0000, 0x6961, 0x6962, 0x6cb9, 0x6d27, 0x0000, 0x6e38,
+ 0x0000, 0x6fe1, 0x7336, 0x7337, 0x0000, 0x745c, 0x7531, 0x0000,
+ 0x7652, 0x0000, 0x0000, 0x7dad, 0x81fe, 0x8438, 0x88d5, 0x8a98,
+ 0x8adb, 0x8aed, 0x8e30, 0x8e42, 0x904a, 0x903e, 0x907a, 0x9149,
+ 0x91c9, 0x936e, 0x0000, 0x0000, 0x5809, 0x0000, 0x6bd3, 0x8089,
+ 0x80b2, 0x0000, 0x0000, 0x5141, 0x596b, 0x5c39, 0x0000, 0x0000,
+ 0x6f64, 0x73a7, 0x80e4, 0x8d07, 0x0000, 0x9217, 0x958f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x807f, 0x620e, 0x701c, 0x7d68, 0x878d,
+ 0x0000, 0x57a0, 0x6069, 0x6147, 0x6bb7, 0x8abe, 0x9280, 0x96b1,
+ 0x4e59, 0x541f, 0x6deb, 0x852d, 0x9670, 0x97f3, 0x98ee, 0x63d6,
+ 0x6ce3, 0x9091, 0x51dd, 0x61c9, 0x81ba, 0x9df9, 0x4f9d, 0x501a,
+ 0x5100, 0x5b9c, 0x610f, 0x61ff, 0x64ec, 0x6905, 0x6bc5, 0x7591,
+ 0x77e3, 0x7fa9, 0x8264, 0x858f, 0x87fb, 0x8863, 0x8abc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8b70, 0x91ab, 0x4e8c, 0x4ee5, 0x4f0a, 0x0000, 0x0000,
+ 0x5937, 0x59e8, 0x0000, 0x5df2, 0x5f1b, 0x5f5b, 0x6021, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x723e, 0x73e5, 0x0000, 0x0000, 0x75cd,
+ 0x0000, 0x79fb, 0x0000, 0x800c, 0x8033, 0x8084, 0x82e1, 0x8351,
+ 0x0000, 0x0000, 0x8cbd, 0x8cb3, 0x9087, 0x0000, 0x0000, 0x98f4,
+ 0x990c, 0x0000, 0x0000, 0x7037, 0x76ca, 0x7fca, 0x7fcc, 0x7ffc,
+ 0x8b1a, 0x4eba, 0x4ec1, 0x5203, 0x5370, 0x0000, 0x0000, 0x56e0,
+ 0x59fb, 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e, 0x0000, 0x0000, 0x7d6a,
+ 0x8335, 0x0000, 0x8693, 0x8a8d, 0x0000, 0x976d, 0x9777, 0x0000,
+ 0x0000, 0x4e00, 0x4f5a, 0x4f7e, 0x58f9, 0x65e5, 0x6ea2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9038, 0x93b0, 0x99b9, 0x4efb, 0x58ec, 0x598a, 0x59d9,
+ 0x6041, 0x0000, 0x0000, 0x7a14, 0x0000, 0x834f, 0x8cc3, 0x5165,
+ 0x5344, 0x0000, 0x0000, 0x0000, 0x4ecd, 0x5269, 0x5b55, 0x82bf,
+ 0x4ed4, 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57, 0x5b5c,
+ 0x6063, 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7, 0x75b5,
+ 0x78c1, 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9, 0x8aee,
+ 0x8cc7, 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628, 0x707c,
+ 0x70b8, 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72, 0x5b71,
+ 0x68e7, 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b, 0x7bb4,
+ 0x7c2a, 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834, 0x58bb,
+ 0x58ef, 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c, 0x66b2,
+ 0x6756, 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0x0000, 0x7350,
+ 0x748b, 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a, 0x846c,
+ 0x8523, 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x969c, 0x518d, 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750,
+ 0x683d, 0x6893, 0x6e3d, 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1,
+ 0x8f09, 0x9f4b, 0x9f4e, 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47,
+ 0x4f4e, 0x5132, 0x5480, 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e,
+ 0x6a17, 0x6cae, 0x6e1a, 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35,
+ 0x82e7, 0x83f9, 0x8457, 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019,
+ 0x90b8, 0x96ce, 0x9f5f, 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458,
+ 0x6575, 0x6ef4, 0x72c4, 0x0000, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d,
+ 0x7e3e, 0x7fdf, 0x837b, 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f,
+ 0x8fea, 0x8ff9, 0x9069, 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5168, 0x5178, 0x524d, 0x526a, 0x5861, 0x587c, 0x5960,
+ 0x5c08, 0x5c55, 0x5edb, 0x609b, 0x6230, 0x6813, 0x6bbf, 0x6c08,
+ 0x6fb1, 0x714e, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7b4c,
+ 0x7b8b, 0x7bad, 0x7bc6, 0x7e8f, 0x8a6e, 0x8f3e, 0x8f49, 0x923f,
+ 0x9293, 0x9322, 0x942b, 0x96fb, 0x985a, 0x986b, 0x991e, 0x5207,
+ 0x622a, 0x6298, 0x6d59, 0x7664, 0x7aca, 0x7bc0, 0x7d76, 0x5360,
+ 0x5cbe, 0x5e97, 0x6f38, 0x70b9, 0x7c98, 0x9711, 0x9b8e, 0x9ede,
+ 0x63a5, 0x647a, 0x8776, 0x4e01, 0x4e95, 0x4ead, 0x505c, 0x5075,
+ 0x5448, 0x59c3, 0x5b9a, 0x5e40, 0x5ead, 0x5ef7, 0x5f81, 0x60c5,
+ 0x633a, 0x653f, 0x6574, 0x65cc, 0x6676, 0x6678, 0x67fe, 0x6968,
+ 0x6a89, 0x6b63, 0x6c40, 0x6dc0, 0x6de8, 0x6e1f, 0x6e5e, 0x701e,
+ 0x70a1, 0x738e, 0x73fd, 0x753a, 0x775b, 0x7887, 0x798e, 0x7a0b,
+ 0x7a7d, 0x7cbe, 0x7d8e, 0x8247, 0x8a02, 0x8aea, 0x8c9e, 0x912d,
+ 0x914a, 0x91d8, 0x9266, 0x92cc, 0x9320, 0x9706, 0x9756, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x975c, 0x9802, 0x9f0e, 0x5236, 0x5291, 0x557c, 0x5824,
+ 0x5e1d, 0x5f1f, 0x608c, 0x63d0, 0x68af, 0x6fdf, 0x796d, 0x7b2c,
+ 0x81cd, 0x85ba, 0x88fd, 0x8af8, 0x8e44, 0x918d, 0x9664, 0x969b,
+ 0x973d, 0x984c, 0x9f4a, 0x4fce, 0x5146, 0x51cb, 0x52a9, 0x5632,
+ 0x5f14, 0x5f6b, 0x63aa, 0x64cd, 0x65e9, 0x6641, 0x66fa, 0x66f9,
+ 0x671d, 0x689d, 0x68d7, 0x69fd, 0x6f15, 0x6f6e, 0x7167, 0x71e5,
+ 0x722a, 0x74aa, 0x773a, 0x7956, 0x795a, 0x79df, 0x7a20, 0x7a95,
+ 0x7c97, 0x7cdf, 0x7d44, 0x7e70, 0x8087, 0x85fb, 0x86a4, 0x8a54,
+ 0x8abf, 0x8d99, 0x8e81, 0x9020, 0x906d, 0x91e3, 0x963b, 0x96d5,
+ 0x9ce5, 0x65cf, 0x7c07, 0x8db3, 0x93c3, 0x5b58, 0x5c0a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5352, 0x62d9, 0x731d, 0x5027, 0x5b97, 0x5f9e, 0x60b0,
+ 0x616b, 0x68d5, 0x6dd9, 0x742e, 0x7a2e, 0x7d42, 0x7d9c, 0x7e31,
+ 0x816b, 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750, 0x5de6,
+ 0x5ea7, 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a, 0x59dd,
+ 0x80c4, 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde, 0x5eda,
+ 0x665d, 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a, 0x6f8d,
+ 0x70b7, 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2, 0x821f,
+ 0x86db, 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031, 0x914e,
+ 0x9152, 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101, 0x51c6,
+ 0x57c8, 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96, 0x6fec,
+ 0x710c, 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb, 0x99ff,
+ 0x8301, 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb, 0x696b,
+ 0x6c41, 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd, 0x7511,
+ 0x75c7, 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x54ab, 0x5730, 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f,
+ 0x652f, 0x65e8, 0x667a, 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a,
+ 0x6f2c, 0x77e5, 0x7825, 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102,
+ 0x81f3, 0x829d, 0x82b7, 0x8718, 0x8a8c, 0x0000, 0x8d04, 0x8dbe,
+ 0x9072, 0x76f4, 0x7a19, 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4,
+ 0x5875, 0x632f, 0x6422, 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84,
+ 0x6d25, 0x6eb1, 0x73cd, 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1,
+ 0x771e, 0x778b, 0x79e6, 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897,
+ 0x8a3a, 0x8cd1, 0x8eeb, 0x0000, 0x9032, 0x93ad, 0x9663, 0x9673,
+ 0x9707, 0x4f84, 0x53f1, 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x74c6, 0x75be, 0x79e9, 0x7a92, 0x81a3, 0x86ed, 0x8cea,
+ 0x8dcc, 0x8fed, 0x659f, 0x6715, 0x0000, 0x57f7, 0x6f57, 0x7ddd,
+ 0x8f2f, 0x93f6, 0x96c6, 0x5fb5, 0x61f2, 0x6f84, 0x4e14, 0x4f98,
+ 0x501f, 0x53c9, 0x55df, 0x5d6f, 0x5dee, 0x6b21, 0x6b64, 0x78cb,
+ 0x7b9a, 0x0000, 0x8e49, 0x0000, 0x906e, 0x6349, 0x643e, 0x7740,
+ 0x7a84, 0x932f, 0x947f, 0x9f6a, 0x64b0, 0x6faf, 0x71e6, 0x74a8,
+ 0x74da, 0x7ac4, 0x7c12, 0x7e82, 0x7cb2, 0x7e98, 0x8b9a, 0x8d0a,
+ 0x947d, 0x9910, 0x994c, 0x5239, 0x5bdf, 0x64e6, 0x672d, 0x7d2e,
+ 0x50ed, 0x0000, 0x5879, 0x6158, 0x6159, 0x61fa, 0x65ac, 0x7ad9,
+ 0x8b92, 0x8b96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5a3c, 0x5ee0,
+ 0x5f70, 0x6134, 0x655e, 0x660c, 0x6636, 0x66a2, 0x69cd, 0x6ec4,
+ 0x6f32, 0x7316, 0x7621, 0x7a93, 0x8139, 0x8259, 0x83d6, 0x84bc,
+ 0x50b5, 0x57f0, 0x5bc0, 0x5be8, 0x5f69, 0x63a1, 0x7826, 0x7db5,
+ 0x83dc, 0x8521, 0x91c7, 0x91f5, 0x518a, 0x67f5, 0x7b56, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8cac, 0x51c4, 0x59bb, 0x60bd, 0x8655, 0x501c, 0x0000,
+ 0x5254, 0x5c3a, 0x617d, 0x621a, 0x62d3, 0x64f2, 0x65a5, 0x6ecc,
+ 0x7620, 0x810a, 0x8e60, 0x965f, 0x96bb, 0x4edf, 0x5343, 0x5598,
+ 0x5929, 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa, 0x7394, 0x7a7f, 0x821b,
+ 0x85a6, 0x8ce4, 0x8e10, 0x9077, 0x91e7, 0x95e1, 0x9621, 0x97c6,
+ 0x51f8, 0x54f2, 0x5586, 0x5fb9, 0x64a4, 0x6f88, 0x7db4, 0x8f1f,
+ 0x8f4d, 0x9435, 0x50c9, 0x5c16, 0x6cbe, 0x6dfb, 0x751b, 0x77bb,
+ 0x7c3d, 0x7c64, 0x8a79, 0x8ac2, 0x581e, 0x59be, 0x5e16, 0x6377,
+ 0x7252, 0x758a, 0x776b, 0x8adc, 0x8cbc, 0x8f12, 0x5ef3, 0x6674,
+ 0x6df8, 0x807d, 0x83c1, 0x8acb, 0x9751, 0x9bd6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5243, 0x66ff, 0x6d95, 0x6eef, 0x7de0, 0x8ae6, 0x902e,
+ 0x905e, 0x9ad4, 0x521d, 0x527f, 0x54e8, 0x6194, 0x6284, 0x62db,
+ 0x68a2, 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d, 0x7901,
+ 0x790e, 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349, 0x8549,
+ 0x8c82, 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1, 0x71ed,
+ 0x77d7, 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8, 0x53e2,
+ 0x585a, 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070, 0x8525,
+ 0x9283, 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd, 0x63a8,
+ 0x690e, 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb, 0x8429,
+ 0x8acf, 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310, 0x9318,
+ 0x939a, 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d, 0x7afa,
+ 0x7b51, 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8, 0x9010,
+ 0x6625, 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145, 0x5fe0,
+ 0x6c96, 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8d05, 0x53d6, 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a,
+ 0x7fe0, 0x805a, 0x8106, 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2,
+ 0x5074, 0x4ec4, 0x53a0, 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024,
+ 0x55e4, 0x5cd9, 0x5e5f, 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be,
+ 0x75d4, 0x75f4, 0x7661, 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e,
+ 0x81f4, 0x86a9, 0x8f1c, 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5,
+ 0x98ed, 0x89aa, 0x4e03, 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795,
+ 0x0000, 0x6d78, 0x741b, 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4,
+ 0x7a31, 0x5feb, 0x4ed6, 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0,
+ 0x6253, 0x62d6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99b1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x99dd, 0x502c, 0x5353, 0x5544, 0x577c, 0x0000, 0x6258,
+ 0x0000, 0x64e2, 0x666b, 0x67dd, 0x6fc1, 0x6fef, 0x7422, 0x7438,
+ 0x8a17, 0x9438, 0x5451, 0x5606, 0x5766, 0x5f48, 0x619a, 0x6b4e,
+ 0x7058, 0x70ad, 0x7dbb, 0x8a95, 0x596a, 0x812b, 0x63a2, 0x7708,
+ 0x803d, 0x8caa, 0x5854, 0x642d, 0x69bb, 0x5b95, 0x5e11, 0x6e6f,
+ 0x0000, 0x8569, 0x514c, 0x53f0, 0x592a, 0x6020, 0x614b, 0x6b86,
+ 0x6c70, 0x6cf0, 0x7b1e, 0x80ce, 0x82d4, 0x8dc6, 0x90b0, 0x98b1,
+ 0x0000, 0x64c7, 0x6fa4, 0x6491, 0x6504, 0x514e, 0x5410, 0x571f,
+ 0x8a0e, 0x615f, 0x6876, 0x0000, 0x75db, 0x7b52, 0x7d71, 0x901a,
+ 0x5806, 0x69cc, 0x817f, 0x892a, 0x9000, 0x9839, 0x5078, 0x5957,
+ 0x59ac, 0x6295, 0x900f, 0x9b2a, 0x615d, 0x7279, 0x95d6, 0x5761,
+ 0x5a46, 0x5df4, 0x628a, 0x64ad, 0x64fa, 0x6777, 0x6ce2, 0x6d3e,
+ 0x722c, 0x7436, 0x7834, 0x7f77, 0x82ad, 0x8ddb, 0x9817, 0x5224,
+ 0x5742, 0x677f, 0x7248, 0x74e3, 0x8ca9, 0x8fa6, 0x9211, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x962a, 0x516b, 0x53ed, 0x634c, 0x4f69, 0x5504, 0x6096,
+ 0x6557, 0x6c9b, 0x6d7f, 0x724c, 0x72fd, 0x7a17, 0x8987, 0x8c9d,
+ 0x5f6d, 0x6f8e, 0x70f9, 0x81a8, 0x610e, 0x0000, 0x504f, 0x6241,
+ 0x7247, 0x7bc7, 0x7de8, 0x7fe9, 0x904d, 0x97ad, 0x9a19, 0x8cb6,
+ 0x576a, 0x5e73, 0x67b0, 0x840d, 0x8a55, 0x5420, 0x5b16, 0x5e63,
+ 0x5ee2, 0x5f0a, 0x6583, 0x80ba, 0x853d, 0x9589, 0x965b, 0x4f48,
+ 0x5305, 0x530d, 0x530f, 0x5486, 0x54fa, 0x5703, 0x5e03, 0x6016,
+ 0x629b, 0x62b1, 0x6355, 0x66b4, 0x6ce1, 0x6d66, 0x75b1, 0x7832,
+ 0x80de, 0x812f, 0x82de, 0x8461, 0x84b2, 0x888d, 0x8912, 0x900b,
+ 0x92ea, 0x98fd, 0x9b91, 0x5e45, 0x0000, 0x66dd, 0x7011, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7206, 0x0000, 0x4ff5, 0x527d, 0x5f6a, 0x6153, 0x6753,
+ 0x6a19, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8c79, 0x98c7, 0x98c4,
+ 0x9a43, 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8, 0x99ae,
+ 0x5f7c, 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642, 0x5339,
+ 0x5f3c, 0x5fc5, 0x0000, 0x73cc, 0x7562, 0x758b, 0x7b46, 0x82fe,
+ 0x999d, 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f, 0x5ec8,
+ 0x6630, 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050, 0x971e,
+ 0x9c15, 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2, 0x6068,
+ 0x608d, 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55, 0x7ff0,
+ 0x9591, 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd, 0x542b,
+ 0x54b8, 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266, 0x929c,
+ 0x9677, 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4, 0x95d4,
+ 0x965c, 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052, 0x6297,
+ 0x676d, 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x884c, 0x0000, 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793,
+ 0x595a, 0x5b69, 0x5bb3, 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9,
+ 0x89e3, 0x8a72, 0x8ae7, 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838,
+ 0x5016, 0x5e78, 0x674f, 0x8347, 0x0000, 0x4eab, 0x5411, 0x56ae,
+ 0x73e6, 0x9115, 0x97ff, 0x9909, 0x9957, 0x9999, 0x5653, 0x589f,
+ 0x865b, 0x8a31, 0x61b2, 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa,
+ 0x9a57, 0x5955, 0x7200, 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26,
+ 0x61f8, 0x665b, 0x6ceb, 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729,
+ 0x774d, 0x7d43, 0x7d62, 0x7e23, 0x8237, 0x8852, 0x0000, 0x8ce2,
+ 0x9249, 0x986f, 0x5b51, 0x7a74, 0x8840, 0x9801, 0x5acc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4fe0, 0x5354, 0x593e, 0x5cfd, 0x633e, 0x6d79, 0x72f9,
+ 0x8105, 0x8107, 0x83a2, 0x92cf, 0x9830, 0x4ea8, 0x5144, 0x5211,
+ 0x578b, 0x5f62, 0x6cc2, 0x6ece, 0x7005, 0x7050, 0x70af, 0x7192,
+ 0x73e9, 0x0000, 0x834a, 0x87a2, 0x8861, 0x9008, 0x90a2, 0x93a3,
+ 0x99a8, 0x516e, 0x5f57, 0x60e0, 0x6167, 0x66b3, 0x8559, 0x8e4a,
+ 0x91af, 0x978b, 0x4e4e, 0x4e92, 0x547c, 0x58d5, 0x58fa, 0x597d,
+ 0x5cb5, 0x5f27, 0x6236, 0x6248, 0x660a, 0x6667, 0x6beb, 0x6d69,
+ 0x6dcf, 0x6e56, 0x6ef8, 0x6f94, 0x6fe0, 0x6fe9, 0x705d, 0x72d0,
+ 0x7425, 0x745a, 0x74e0, 0x7693, 0x795c, 0x7cca, 0x7e1e, 0x80e1,
+ 0x82a6, 0x846b, 0x84bf, 0x864e, 0x865f, 0x8774, 0x8b77, 0x8c6a,
+ 0x93ac, 0x9800, 0x9865, 0x60d1, 0x6216, 0x9177, 0x5a5a, 0x660f,
+ 0x6df7, 0x6e3e, 0x743f, 0x9b42, 0x5ffd, 0x60da, 0x7b0f, 0x54c4,
+ 0x5f18, 0x6c5e, 0x6cd3, 0x6d2a, 0x70d8, 0x7d05, 0x8679, 0x8a0c,
+ 0x9d3b, 0x5316, 0x548c, 0x5b05, 0x6a3a, 0x706b, 0x7575, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x798d, 0x79be, 0x82b1, 0x83ef, 0x8a71, 0x8b41, 0x8ca8,
+ 0x9774, 0x0000, 0x64f4, 0x652b, 0x78ba, 0x78bb, 0x7a6b, 0x4e38,
+ 0x559a, 0x5950, 0x5ba6, 0x5e7b, 0x60a3, 0x63db, 0x6b61, 0x6665,
+ 0x6853, 0x6e19, 0x7165, 0x74b0, 0x7d08, 0x9084, 0x9a69, 0x9c25,
+ 0x6d3b, 0x0000, 0x733e, 0x8c41, 0x95ca, 0x51f0, 0x5e4c, 0x5fa8,
+ 0x604d, 0x60f6, 0x6130, 0x614c, 0x6643, 0x6644, 0x69a5, 0x6cc1,
+ 0x6e5f, 0x6ec9, 0x6f62, 0x714c, 0x749c, 0x7687, 0x7bc1, 0x7c27,
+ 0x8352, 0x8757, 0x9051, 0x968d, 0x9ec3, 0x532f, 0x56de, 0x5efb,
+ 0x5f8a, 0x6062, 0x6094, 0x61f7, 0x6666, 0x6703, 0x6a9c, 0x6dee,
+ 0x6fae, 0x7070, 0x736a, 0x7e6a, 0x81be, 0x8334, 0x86d4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8aa8, 0x8cc4, 0x5283, 0x7372, 0x5b96, 0x6a6b, 0x9404,
+ 0x54ee, 0x5686, 0x5b5d, 0x6548, 0x6585, 0x66c9, 0x689f, 0x6d8d,
+ 0x6dc6, 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019, 0x539a,
+ 0x540e, 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d, 0x7166,
+ 0x73dd, 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104, 0x718f,
+ 0x71fb, 0x85b0, 0x8a13, 0x0000, 0x85a8, 0x55a7, 0x6684, 0x714a,
+ 0x8431, 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee, 0x6689,
+ 0x7147, 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb, 0x7566,
+ 0x8667, 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308, 0x6d36,
+ 0x80f8, 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403, 0x5c79,
+ 0x7d07, 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070, 0x6d3d,
+ 0x7fd5, 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd, 0x59ec,
+ 0x5b09, 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6, 0x7199,
+ 0x71b9, 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3164, 0x3001, 0x3002, 0x30fb, 0x2025, 0x22ef, 0x00a8, 0x3003
+};
+
+
+const unichar_t unicode_from_gb2312[] = {
+ 0x3000, 0x3001, 0x3002, 0x00b7, 0x02c9, 0x02c7, 0x00a8, 0x3003,
+ 0x3005, 0x2014, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
+ 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1,
+ 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a,
+ 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312,
+ 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d,
+ 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234,
+ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4,
+ 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb,
+ 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2,
+ 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2488, 0x2489,
+ 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f, 0x2490, 0x2491,
+ 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, 0x2499,
+ 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479,
+ 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f, 0x2480, 0x2481,
+ 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461,
+ 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+ 0x0000, 0x0000, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225,
+ 0x3226, 0x3227, 0x3228, 0x3229, 0x0000, 0x0000, 0x2160, 0x2161,
+ 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169,
+ 0x216a, 0x216b, 0x0000, 0x0000, 0xff01, 0xff02, 0xff03, 0xffe5,
+ 0xff05, 0xff06, 0xff07, 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c,
+ 0xff0d, 0xff0e, 0xff0f, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14,
+ 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c,
+ 0xff1d, 0xff1e, 0xff1f, 0xff20, 0xff21, 0xff22, 0xff23, 0xff24,
+ 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c,
+ 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34,
+ 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff3b, 0xff3c,
+ 0xff3d, 0xff3e, 0xff3f, 0xff40, 0xff41, 0xff42, 0xff43, 0xff44,
+ 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c,
+ 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54,
+ 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c,
+ 0xff5d, 0xffe3, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
+ 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e,
+ 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
+ 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e,
+ 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066,
+ 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e,
+ 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+ 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
+ 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086,
+ 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e,
+ 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
+ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
+ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
+ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
+ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
+ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
+ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
+ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
+ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
+ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
+ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0391, 0x0392,
+ 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a,
+ 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3,
+ 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03b1, 0x03b2,
+ 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba,
+ 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3,
+ 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0xe78d, 0xe78e,
+ 0xe78f, 0xe790, 0xe791, 0xe792, 0xe793, 0xfe35, 0xfe36, 0xfe39,
+ 0xfe3a, 0xfe3f, 0xfe40, 0xfe3d, 0xfe3e, 0xfe41, 0xfe42, 0xfe43,
+ 0xfe44, 0xe794, 0xe795, 0xfe3b, 0xfe3c, 0xfe37, 0xfe38, 0xfe31,
+ 0x205d, 0xfe33, 0xfe34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0410, 0x0411, 0x0412, 0x0413,
+ 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a,
+ 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422,
+ 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a,
+ 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433,
+ 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a,
+ 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442,
+ 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a,
+ 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9,
+ 0x011b, 0x00e8, 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3,
+ 0x01d2, 0x00f2, 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8,
+ 0x01da, 0x01dc, 0x00fc, 0x00ea, 0x0251, 0x1e3f, 0x0144, 0x0148,
+ 0x01f9, 0x0261, 0x0000, 0x0000, 0x0000, 0x0000, 0x3105, 0x3106,
+ 0x3107, 0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e,
+ 0x310f, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116,
+ 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e,
+ 0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126,
+ 0x3127, 0x3128, 0x3129, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504,
+ 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c,
+ 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514,
+ 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c,
+ 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524,
+ 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c,
+ 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
+ 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c,
+ 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544,
+ 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509,
+ 0x54c0, 0x7691, 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231,
+ 0x9698, 0x978d, 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8,
+ 0x80fa, 0x6848, 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac,
+ 0x7ff1, 0x8884, 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c,
+ 0x6252, 0x53ed, 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4,
+ 0x8dcb, 0x9776, 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238,
+ 0x767d, 0x67cf, 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17,
+ 0x6591, 0x73ed, 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248,
+ 0x626e, 0x62cc, 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6,
+ 0x5e2e, 0x6886, 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c,
+ 0x9551, 0x508d, 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265,
+ 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5,
+ 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351,
+ 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907,
+ 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29,
+ 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4,
+ 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9,
+ 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5,
+ 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16,
+ 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab,
+ 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b,
+ 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175,
+ 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3, 0x75c5, 0x5e76,
+ 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2, 0x535a, 0x52c3,
+ 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236, 0x8116, 0x818a,
+ 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa, 0x8865, 0x57e0,
+ 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016, 0x64e6, 0x731c,
+ 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29, 0x91c7, 0x5f69,
+ 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b, 0x60ed, 0x60e8,
+ 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf, 0x64cd, 0x7cd9,
+ 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7, 0x518c, 0x6d4b,
+ 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336, 0x67e5, 0x78b4,
+ 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6, 0x67f4, 0x8c7a,
+ 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20, 0x94f2, 0x4ea7,
+ 0x9610, 0x98a4, 0x660c, 0x7316, 0x573a, 0x5c1d, 0x5e38, 0x957f,
+ 0x507f, 0x80a0, 0x5382, 0x655e, 0x7545, 0x5531, 0x5021, 0x8d85,
+ 0x6284, 0x949e, 0x671d, 0x5632, 0x6f6e, 0x5de2, 0x5435, 0x7092,
+ 0x8f66, 0x626f, 0x64a4, 0x63a3, 0x5f7b, 0x6f88, 0x90f4, 0x81e3,
+ 0x8fb0, 0x5c18, 0x6668, 0x5ff1, 0x6c89, 0x9648, 0x8d81, 0x886c,
+ 0x6491, 0x79f0, 0x57ce, 0x6a59, 0x6210, 0x5448, 0x4e58, 0x7a0b,
+ 0x60e9, 0x6f84, 0x8bda, 0x627f, 0x901e, 0x9a8b, 0x79e4, 0x5403,
+ 0x75f4, 0x6301, 0x5319, 0x6c60, 0x8fdf, 0x5f1b, 0x9a70, 0x803b,
+ 0x9f7f, 0x4f88, 0x5c3a, 0x8d64, 0x7fc5, 0x65a5, 0x70bd, 0x5145,
+ 0x51b2, 0x866b, 0x5d07, 0x5ba0, 0x62bd, 0x916c, 0x7574, 0x8e0c,
+ 0x7a20, 0x6101, 0x7b79, 0x4ec7, 0x7ef8, 0x7785, 0x4e11, 0x81ed,
+ 0x521d, 0x51fa, 0x6a71, 0x53a8, 0x8e87, 0x9504, 0x96cf, 0x6ec1,
+ 0x9664, 0x695a, 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904,
+ 0x63e3, 0x5ddd, 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32,
+ 0x75ae, 0x7a97, 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a,
+ 0x6376, 0x9524, 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3,
+ 0x7eaf, 0x8822, 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc,
+ 0x8f9e, 0x6148, 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21,
+ 0x806a, 0x8471, 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97,
+ 0x918b, 0x7c07, 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14,
+ 0x50ac, 0x8106, 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58,
+ 0x5bf8, 0x78cb, 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d,
+ 0x8fbe, 0x7b54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3,
+ 0x6234, 0x5e26, 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e,
+ 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6,
+ 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb,
+ 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48,
+ 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053,
+ 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49,
+ 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c,
+ 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730,
+ 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382,
+ 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43,
+ 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc,
+ 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc,
+ 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0, 0x4e01, 0x76ef,
+ 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a, 0x8ba2, 0x4e22,
+ 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b, 0x4f97, 0x606b,
+ 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661, 0x8c46, 0x9017,
+ 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec, 0x8bfb, 0x5835,
+ 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6, 0x6e21, 0x5992,
+ 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e, 0x5806, 0x5151,
+ 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566, 0x987f, 0x56e4,
+ 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a, 0x593a, 0x579b,
+ 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0, 0x5815, 0x86fe,
+ 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25, 0x6076, 0x5384,
+ 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c, 0x513f, 0x8033,
+ 0x5c14, 0x9975, 0x6d31, 0x4e8c, 0x8d30, 0x53d1, 0x7f5a, 0x7b4f,
+ 0x4f10, 0x4e4f, 0x9600, 0x6cd5, 0x73d0, 0x85e9, 0x5e06, 0x756a,
+ 0x7ffb, 0x6a0a, 0x77fe, 0x9492, 0x7e41, 0x51e1, 0x70e6, 0x53cd,
+ 0x8fd4, 0x8303, 0x8d29, 0x72af, 0x996d, 0x6cdb, 0x574a, 0x82b3,
+ 0x65b9, 0x80aa, 0x623f, 0x9632, 0x59a8, 0x4eff, 0x8bbf, 0x7eba,
+ 0x653e, 0x83f2, 0x975e, 0x5561, 0x98de, 0x80a5, 0x532a, 0x8bfd,
+ 0x5420, 0x80ba, 0x5e9f, 0x6cb8, 0x8d39, 0x82ac, 0x915a, 0x5429,
+ 0x6c1b, 0x5206, 0x7eb7, 0x575f, 0x711a, 0x6c7e, 0x7c89, 0x594b,
+ 0x4efd, 0x5fff, 0x6124, 0x7caa, 0x4e30, 0x5c01, 0x67ab, 0x8702,
+ 0x5cf0, 0x950b, 0x98ce, 0x75af, 0x70fd, 0x9022, 0x51af, 0x7f1d,
+ 0x8bbd, 0x5949, 0x51e4, 0x4f5b, 0x5426, 0x592b, 0x6577, 0x80a4,
+ 0x5b75, 0x6276, 0x62c2, 0x8f90, 0x5e45, 0x6c1f, 0x7b26, 0x4f0f,
+ 0x4fd8, 0x670d, 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b,
+ 0x629a, 0x8f85, 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c,
+ 0x8150, 0x8d74, 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8,
+ 0x961c, 0x7236, 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987,
+ 0x7f1a, 0x5490, 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499,
+ 0x76d6, 0x6e89, 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d,
+ 0x8d76, 0x611f, 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2,
+ 0x7f38, 0x809b, 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b,
+ 0x9ad8, 0x818f, 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a,
+ 0x54e5, 0x6b4c, 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272,
+ 0x9769, 0x845b, 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a,
+ 0x5404, 0x7ed9, 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9,
+ 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a,
+ 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1,
+ 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2,
+ 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30,
+ 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37,
+ 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250,
+ 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173,
+ 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c,
+ 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845,
+ 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842,
+ 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505,
+ 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8, 0x9ab8, 0x5b69,
+ 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163, 0x61a8, 0x90af,
+ 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a, 0x7f55, 0x7ff0,
+ 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a, 0x6c57, 0x6c49,
+ 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a, 0x6beb, 0x90dd,
+ 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d, 0x8377, 0x83cf,
+ 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2, 0x8c89, 0x9602,
+ 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a, 0x563f, 0x9ed1,
+ 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8, 0x6a2a, 0x8861,
+ 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f, 0x6d2a, 0x5b8f,
+ 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c, 0x539a, 0x5019,
+ 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6, 0x846b, 0x80e1,
+ 0x8774, 0x72d0, 0x7cca, 0x6e56, 0x5f27, 0x864e, 0x552c, 0x62a4,
+ 0x4e92, 0x6caa, 0x6237, 0x82b1, 0x54d7, 0x534e, 0x733e, 0x6ed1,
+ 0x753b, 0x5212, 0x5316, 0x8bdd, 0x69d0, 0x5f8a, 0x6000, 0x6dee,
+ 0x574f, 0x6b22, 0x73af, 0x6853, 0x8fd8, 0x7f13, 0x6362, 0x60a3,
+ 0x5524, 0x75ea, 0x8c62, 0x7115, 0x6da3, 0x5ba6, 0x5e7b, 0x8352,
+ 0x614c, 0x9ec4, 0x78fa, 0x8757, 0x7c27, 0x7687, 0x51f0, 0x60f6,
+ 0x714c, 0x6643, 0x5e4c, 0x604d, 0x8c0e, 0x7070, 0x6325, 0x8f89,
+ 0x5fbd, 0x6062, 0x86d4, 0x56de, 0x6bc1, 0x6094, 0x6167, 0x5349,
+ 0x60e0, 0x6666, 0x8d3f, 0x79fd, 0x4f1a, 0x70e9, 0x6c47, 0x8bb3,
+ 0x8bf2, 0x7ed8, 0x8364, 0x660f, 0x5a5a, 0x9b42, 0x6d51, 0x6df7,
+ 0x8c41, 0x6d3b, 0x4f19, 0x706b, 0x83b7, 0x6216, 0x60d1, 0x970d,
+ 0x8d27, 0x7978, 0x51fb, 0x573e, 0x57fa, 0x673a, 0x7578, 0x7a3d,
+ 0x79ef, 0x7b95, 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21,
+ 0x59ec, 0x7ee9, 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d,
+ 0x96c6, 0x53ca, 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7,
+ 0x6324, 0x51e0, 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63,
+ 0x4f0e, 0x796d, 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1,
+ 0x8bb0, 0x65e2, 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609,
+ 0x67b7, 0x5939, 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e,
+ 0x7532, 0x94be, 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1,
+ 0x6b7c, 0x76d1, 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c,
+ 0x80a9, 0x8270, 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1,
+ 0x7877, 0x62e3, 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350,
+ 0x69db, 0x9274, 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6,
+ 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa,
+ 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868,
+ 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901,
+ 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc,
+ 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a,
+ 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb,
+ 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a,
+ 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01,
+ 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f,
+ 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1,
+ 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb,
+ 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78, 0x5c3d, 0x52b2,
+ 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8, 0x4eac, 0x60ca,
+ 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f, 0x9888, 0x9759,
+ 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756, 0x7adf, 0x7ade,
+ 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0, 0x7396, 0x97ed,
+ 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551, 0x65e7, 0x81fc,
+ 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8, 0x72d9, 0x75bd,
+ 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9, 0x4e3e, 0x6cae,
+ 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd, 0x8e1e, 0x952f,
+ 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350, 0x9e43, 0x5a1f,
+ 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b, 0x6289, 0x6398,
+ 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd, 0x5747, 0x83cc,
+ 0x94a7, 0x519b, 0x541b, 0x5cfb, 0x4fca, 0x7ae3, 0x6d5a, 0x90e1,
+ 0x9a8f, 0x5580, 0x5496, 0x5361, 0x54af, 0x5f00, 0x63e9, 0x6977,
+ 0x51ef, 0x6168, 0x520a, 0x582a, 0x52d8, 0x574e, 0x780d, 0x770b,
+ 0x5eb7, 0x6177, 0x7ce0, 0x625b, 0x6297, 0x4ea2, 0x7095, 0x8003,
+ 0x62f7, 0x70e4, 0x9760, 0x5777, 0x82db, 0x67ef, 0x68f5, 0x78d5,
+ 0x9897, 0x79d1, 0x58f3, 0x54b3, 0x53ef, 0x6e34, 0x514b, 0x523b,
+ 0x5ba2, 0x8bfe, 0x80af, 0x5543, 0x57a6, 0x6073, 0x5751, 0x542d,
+ 0x7a7a, 0x6050, 0x5b54, 0x63a7, 0x62a0, 0x53e3, 0x6263, 0x5bc7,
+ 0x67af, 0x54ed, 0x7a9f, 0x82e6, 0x9177, 0x5e93, 0x88e4, 0x5938,
+ 0x57ae, 0x630e, 0x8de8, 0x80ef, 0x5757, 0x7b77, 0x4fa9, 0x5feb,
+ 0x5bbd, 0x6b3e, 0x5321, 0x7b50, 0x72c2, 0x6846, 0x77ff, 0x7736,
+ 0x65f7, 0x51b5, 0x4e8f, 0x76d4, 0x5cbf, 0x7aa5, 0x8475, 0x594e,
+ 0x9b41, 0x5080, 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346,
+ 0x56f0, 0x62ec, 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587,
+ 0x8721, 0x814a, 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd,
+ 0x5a6a, 0x680f, 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30,
+ 0x63fd, 0x89c8, 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994,
+ 0x72fc, 0x5eca, 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262,
+ 0x8001, 0x4f6c, 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50,
+ 0x96f7, 0x956d, 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2,
+ 0x808b, 0x7c7b, 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8,
+ 0x7281, 0x9ece, 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e,
+ 0x91cc, 0x9ca4, 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d,
+ 0x5389, 0x52b1, 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0,
+ 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9,
+ 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f,
+ 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae,
+ 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e,
+ 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5,
+ 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217,
+ 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716,
+ 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce,
+ 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc,
+ 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409,
+ 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3,
+ 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf, 0x9686, 0x5784,
+ 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3, 0x6f0f, 0x964b,
+ 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3, 0x5364, 0x864f,
+ 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42, 0x9e7f, 0x6f5e,
+ 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415, 0x94dd, 0x4fa3,
+ 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f, 0x5f8b, 0x7387,
+ 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6, 0x5375, 0x4e71,
+ 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1, 0x6ca6, 0x7eb6,
+ 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523, 0x7ba9, 0x9aa1,
+ 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988, 0x9ebb, 0x739b,
+ 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417, 0x57cb, 0x4e70,
+ 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992, 0x86ee, 0x6ee1,
+ 0x8513, 0x66fc, 0x6162, 0x6f2b, 0x8c29, 0x8292, 0x832b, 0x76f2,
+ 0x6c13, 0x5fd9, 0x83bd, 0x732b, 0x8305, 0x951a, 0x6bdb, 0x77db,
+ 0x94c6, 0x536f, 0x8302, 0x5192, 0x5e3d, 0x8c8c, 0x8d38, 0x4e48,
+ 0x73ab, 0x679a, 0x6885, 0x9176, 0x9709, 0x7164, 0x6ca1, 0x7709,
+ 0x5a92, 0x9541, 0x6bcf, 0x7f8e, 0x6627, 0x5bd0, 0x59b9, 0x5a9a,
+ 0x95e8, 0x95f7, 0x4eec, 0x840c, 0x8499, 0x6aac, 0x76df, 0x9530,
+ 0x731b, 0x68a6, 0x5b5f, 0x772f, 0x919a, 0x9761, 0x7cdc, 0x8ff7,
+ 0x8c1c, 0x5f25, 0x7c73, 0x79d8, 0x89c5, 0x6ccc, 0x871c, 0x5bc6,
+ 0x5e42, 0x68c9, 0x7720, 0x7ef5, 0x5195, 0x514d, 0x52c9, 0x5a29,
+ 0x7f05, 0x9762, 0x82d7, 0x63cf, 0x7784, 0x85d0, 0x79d2, 0x6e3a,
+ 0x5e99, 0x5999, 0x8511, 0x706d, 0x6c11, 0x62bf, 0x76bf, 0x654f,
+ 0x60af, 0x95fd, 0x660e, 0x879f, 0x9e23, 0x94ed, 0x540d, 0x547d,
+ 0x8c2c, 0x6478, 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469,
+ 0x9b54, 0x62b9, 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20,
+ 0x5bde, 0x964c, 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9,
+ 0x59c6, 0x6bcd, 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728,
+ 0x76ee, 0x7766, 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0,
+ 0x90a3, 0x5a1c, 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948,
+ 0x5357, 0x7537, 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9,
+ 0x6dd6, 0x5462, 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713,
+ 0x502a, 0x6ce5, 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006,
+ 0x6eba, 0x852b, 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5,
+ 0x5a18, 0x917f, 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e,
+ 0x954a, 0x954d, 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81,
+ 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53,
+ 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650,
+ 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25,
+ 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c,
+ 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43,
+ 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224,
+ 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486,
+ 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9,
+ 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6,
+ 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c,
+ 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812,
+ 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7, 0x5564, 0x813e,
+ 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41, 0x8b6c, 0x7bc7,
+ 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2, 0x7968, 0x6487,
+ 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058, 0x4e52, 0x576a,
+ 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4, 0x5c4f, 0x5761,
+ 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb, 0x7c95, 0x5256,
+ 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9, 0x84b2, 0x57d4,
+ 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd, 0x7011, 0x671f,
+ 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4, 0x6f06, 0x67d2,
+ 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566, 0x5d0e, 0x8110,
+ 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77, 0x5c82, 0x4e5e,
+ 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14, 0x8fc4, 0x5f03,
+ 0x6c7d, 0x6ce3, 0x8bab, 0x6390, 0x6070, 0x6d3d, 0x7275, 0x6266,
+ 0x948e, 0x94c5, 0x5343, 0x8fc1, 0x7b7e, 0x4edf, 0x8c26, 0x4e7e,
+ 0x9ed4, 0x94b1, 0x94b3, 0x524d, 0x6f5c, 0x9063, 0x6d45, 0x8c34,
+ 0x5811, 0x5d4c, 0x6b20, 0x6b49, 0x67aa, 0x545b, 0x8154, 0x7f8c,
+ 0x5899, 0x8537, 0x5f3a, 0x62a2, 0x6a47, 0x9539, 0x6572, 0x6084,
+ 0x6865, 0x77a7, 0x4e54, 0x4fa8, 0x5de7, 0x9798, 0x64ac, 0x7fd8,
+ 0x5ced, 0x4fcf, 0x7a8d, 0x5207, 0x8304, 0x4e14, 0x602f, 0x7a83,
+ 0x94a6, 0x4fb5, 0x4eb2, 0x79e6, 0x7434, 0x52e4, 0x82b9, 0x64d2,
+ 0x79bd, 0x5bdd, 0x6c81, 0x9752, 0x8f7b, 0x6c22, 0x503e, 0x537f,
+ 0x6e05, 0x64ce, 0x6674, 0x6c30, 0x60c5, 0x9877, 0x8bf7, 0x5e86,
+ 0x743c, 0x7a77, 0x79cb, 0x4e18, 0x90b1, 0x7403, 0x6c42, 0x56da,
+ 0x914b, 0x6cc5, 0x8d8b, 0x533a, 0x86c6, 0x66f2, 0x8eaf, 0x5c48,
+ 0x9a71, 0x6e20, 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708,
+ 0x98a7, 0x6743, 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac,
+ 0x5238, 0x529d, 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7,
+ 0x786e, 0x96c0, 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3,
+ 0x74e4, 0x58e4, 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5,
+ 0x60f9, 0x70ed, 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb,
+ 0x8ba4, 0x5203, 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e,
+ 0x8338, 0x84c9, 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2,
+ 0x5197, 0x63c9, 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a,
+ 0x5982, 0x8fb1, 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e,
+ 0x854a, 0x745e, 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492,
+ 0x6d12, 0x8428, 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1,
+ 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b,
+ 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802,
+ 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b,
+ 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b,
+ 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247,
+ 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a,
+ 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6,
+ 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c,
+ 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe,
+ 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5,
+ 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17,
+ 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3, 0x7701, 0x76db,
+ 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee, 0x65bd, 0x6e7f,
+ 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe, 0x65f6, 0x4ec0,
+ 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2, 0x4f7f, 0x5c4e,
+ 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16, 0x67ff, 0x4e8b,
+ 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc, 0x566c, 0x9002,
+ 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02, 0x6043, 0x5ba4,
+ 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88, 0x5bff, 0x6388,
+ 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2, 0x68b3, 0x6b8a,
+ 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f, 0x4e66, 0x8d4e,
+ 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72, 0x8700, 0x9ecd,
+ 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f, 0x620d, 0x7ad6,
+ 0x5885, 0x5eb6, 0x6570, 0x6f31, 0x6055, 0x5237, 0x800d, 0x6454,
+ 0x8870, 0x7529, 0x5e05, 0x6813, 0x62f4, 0x971c, 0x53cc, 0x723d,
+ 0x8c01, 0x6c34, 0x7761, 0x7a0e, 0x542e, 0x77ac, 0x987a, 0x821c,
+ 0x8bf4, 0x7855, 0x6714, 0x70c1, 0x65af, 0x6495, 0x5636, 0x601d,
+ 0x79c1, 0x53f8, 0x4e1d, 0x6b7b, 0x8086, 0x5bfa, 0x55e3, 0x56db,
+ 0x4f3a, 0x4f3c, 0x9972, 0x5df3, 0x677e, 0x8038, 0x6002, 0x9882,
+ 0x9001, 0x5b8b, 0x8bbc, 0x8bf5, 0x641c, 0x8258, 0x64de, 0x55fd,
+ 0x82cf, 0x9165, 0x4fd7, 0x7d20, 0x901f, 0x7c9f, 0x50f3, 0x5851,
+ 0x6eaf, 0x5bbf, 0x8bc9, 0x8083, 0x9178, 0x849c, 0x7b97, 0x867d,
+ 0x968b, 0x968f, 0x7ee5, 0x9ad3, 0x788e, 0x5c81, 0x7a57, 0x9042,
+ 0x96a7, 0x795f, 0x5b59, 0x635f, 0x7b0b, 0x84d1, 0x68ad, 0x5506,
+ 0x7f29, 0x7410, 0x7d22, 0x9501, 0x6240, 0x584c, 0x4ed6, 0x5b83,
+ 0x5979, 0x5854, 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4,
+ 0x62ac, 0x53f0, 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d,
+ 0x644a, 0x8d2a, 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d,
+ 0x8c2d, 0x8c08, 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9,
+ 0x70ad, 0x6c64, 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510,
+ 0x7cd6, 0x5018, 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b,
+ 0x6ed4, 0x7ee6, 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8,
+ 0x5957, 0x7279, 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254,
+ 0x8e22, 0x9511, 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff,
+ 0x568f, 0x60d5, 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b,
+ 0x7530, 0x751c, 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2,
+ 0x773a, 0x8df3, 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3,
+ 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a,
+ 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876,
+ 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f,
+ 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60,
+ 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f,
+ 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258,
+ 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3,
+ 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c,
+ 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38,
+ 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b,
+ 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51,
+ 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01, 0x5dcd, 0x5fae,
+ 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f, 0x60df, 0x4e3a,
+ 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f, 0x4f2a, 0x5c3e,
+ 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3, 0x5582, 0x9b4f,
+ 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b, 0x761f, 0x6e29,
+ 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33, 0x7d0a, 0x95ee,
+ 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1, 0x7a9d, 0x6211,
+ 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c, 0x94a8, 0x4e4c,
+ 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7, 0x543e, 0x5434,
+ 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e, 0x4f0d, 0x4fae,
+ 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff, 0x52a1, 0x609f,
+ 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852, 0x77fd, 0x6670,
+ 0x563b, 0x5438, 0x9521, 0x727a, 0x7a00, 0x606f, 0x5e0c, 0x6089,
+ 0x819d, 0x5915, 0x60dc, 0x7184, 0x70ef, 0x6eaa, 0x6c50, 0x7280,
+ 0x6a84, 0x88ad, 0x5e2d, 0x4e60, 0x5ab3, 0x559c, 0x94e3, 0x6d17,
+ 0x7cfb, 0x9699, 0x620f, 0x7ec6, 0x778e, 0x867e, 0x5323, 0x971e,
+ 0x8f96, 0x6687, 0x5ce1, 0x4fa0, 0x72ed, 0x4e0b, 0x53a6, 0x590f,
+ 0x5413, 0x6380, 0x9528, 0x5148, 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8,
+ 0x8d24, 0x8854, 0x8237, 0x95f2, 0x6d8e, 0x5f26, 0x5acc, 0x663e,
+ 0x9669, 0x73b0, 0x732e, 0x53bf, 0x817a, 0x9985, 0x7fa1, 0x5baa,
+ 0x9677, 0x9650, 0x7ebf, 0x76f8, 0x53a2, 0x9576, 0x9999, 0x7bb1,
+ 0x8944, 0x6e58, 0x4e61, 0x7fd4, 0x7965, 0x8be6, 0x60f3, 0x54cd,
+ 0x4eab, 0x9879, 0x5df7, 0x6a61, 0x50cf, 0x5411, 0x8c61, 0x8427,
+ 0x785d, 0x9704, 0x524a, 0x54ee, 0x56a3, 0x9500, 0x6d88, 0x5bb5,
+ 0x6dc6, 0x6653, 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11,
+ 0x6548, 0x6954, 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f,
+ 0x643a, 0x90aa, 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378,
+ 0x87f9, 0x61c8, 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af,
+ 0x950c, 0x6b23, 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845,
+ 0x661f, 0x8165, 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62,
+ 0x90a2, 0x884c, 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144,
+ 0x51f6, 0x80f8, 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee,
+ 0x7f9e, 0x673d, 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f,
+ 0x620c, 0x9700, 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4,
+ 0x9157, 0x53d9, 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f,
+ 0x7eea, 0x7eed, 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384,
+ 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74,
+ 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb,
+ 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5,
+ 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259,
+ 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6,
+ 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814,
+ 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf,
+ 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5,
+ 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a,
+ 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f,
+ 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b,
+ 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476, 0x6447, 0x5c27,
+ 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200, 0x836f, 0x8981,
+ 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce, 0x51b6, 0x4e5f,
+ 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b, 0x591c, 0x6db2,
+ 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d, 0x4f0a, 0x8863,
+ 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0, 0x7591, 0x6c82,
+ 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a, 0x5df2, 0x4e59,
+ 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091, 0x5c79, 0x4ebf,
+ 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6, 0x88d4, 0x610f,
+ 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3, 0x8bae, 0x8c0a,
+ 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335, 0x836b, 0x56e0,
+ 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6, 0x6deb, 0x5bc5,
+ 0x996e, 0x5c39, 0x5f15, 0x9690, 0x5370, 0x82f1, 0x6a31, 0x5a74,
+ 0x9e70, 0x5e94, 0x7f28, 0x83b9, 0x8424, 0x8425, 0x8367, 0x8747,
+ 0x8fce, 0x8d62, 0x76c8, 0x5f71, 0x9896, 0x786c, 0x6620, 0x54df,
+ 0x62e5, 0x4f63, 0x81c3, 0x75c8, 0x5eb8, 0x96cd, 0x8e0a, 0x86f9,
+ 0x548f, 0x6cf3, 0x6d8c, 0x6c38, 0x607f, 0x52c7, 0x7528, 0x5e7d,
+ 0x4f18, 0x60a0, 0x5fe7, 0x5c24, 0x7531, 0x90ae, 0x94c0, 0x72b9,
+ 0x6cb9, 0x6e38, 0x9149, 0x6709, 0x53cb, 0x53f3, 0x4f51, 0x91c9,
+ 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2, 0x6de4, 0x4e8e, 0x76c2, 0x6986,
+ 0x865e, 0x611a, 0x8206, 0x4f59, 0x4fde, 0x903e, 0x9c7c, 0x6109,
+ 0x6e1d, 0x6e14, 0x9685, 0x4e88, 0x5a31, 0x96e8, 0x4e0e, 0x5c7f,
+ 0x79b9, 0x5b87, 0x8bed, 0x7fbd, 0x7389, 0x57df, 0x828b, 0x90c1,
+ 0x5401, 0x9047, 0x55bb, 0x5cea, 0x5fa1, 0x6108, 0x6b32, 0x72f1,
+ 0x80b2, 0x8a89, 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d,
+ 0x9e33, 0x6e0a, 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4,
+ 0x8f95, 0x56ed, 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc,
+ 0x82d1, 0x613f, 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3,
+ 0x94a5, 0x5cb3, 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91,
+ 0x90e7, 0x5300, 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655,
+ 0x97f5, 0x5b55, 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e,
+ 0x5bb0, 0x8f7d, 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e,
+ 0x8d43, 0x810f, 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3,
+ 0x65e9, 0x6fa1, 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076,
+ 0x71e5, 0x8d23, 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e,
+ 0x618e, 0x66fe, 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67,
+ 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8,
+ 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb,
+ 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d,
+ 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd,
+ 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756,
+ 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db,
+ 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087,
+ 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517,
+ 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827,
+ 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707,
+ 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0,
+ 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f, 0x5e27, 0x75c7,
+ 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431, 0x8718, 0x77e5,
+ 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c, 0x76f4, 0x690d,
+ 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307, 0x6b62, 0x8dbe,
+ 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7, 0x81f3, 0x81f4,
+ 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9, 0x7a1a, 0x8d28,
+ 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d, 0x76c5, 0x5fe0,
+ 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd, 0x4ef2, 0x4f17,
+ 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5, 0x8f74, 0x8098,
+ 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4, 0x73e0, 0x682a,
+ 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010, 0x7af9, 0x70db,
+ 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457, 0x67f1, 0x52a9,
+ 0x86c0, 0x8d2e, 0x94f8, 0x7b51, 0x4f4f, 0x6ce8, 0x795d, 0x9a7b,
+ 0x6293, 0x722a, 0x62fd, 0x4e13, 0x7816, 0x8f6c, 0x64b0, 0x8d5a,
+ 0x7bc6, 0x6869, 0x5e84, 0x88c5, 0x5986, 0x649e, 0x58ee, 0x72b6,
+ 0x690e, 0x9525, 0x8ffd, 0x8d58, 0x5760, 0x7f00, 0x8c06, 0x51c6,
+ 0x6349, 0x62d9, 0x5353, 0x684c, 0x7422, 0x8301, 0x914c, 0x5544,
+ 0x7740, 0x707c, 0x6d4a, 0x5179, 0x54a8, 0x8d44, 0x59ff, 0x6ecb,
+ 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4, 0x7c7d, 0x6ed3, 0x5b50, 0x81ea,
+ 0x6e0d, 0x5b57, 0x9b03, 0x68d5, 0x8e2a, 0x5b97, 0x7efc, 0x603b,
+ 0x7eb5, 0x90b9, 0x8d70, 0x594f, 0x63cd, 0x79df, 0x8db3, 0x5352,
+ 0x65cf, 0x7956, 0x8bc5, 0x963b, 0x7ec4, 0x94bb, 0x7e82, 0x5634,
+ 0x9189, 0x6700, 0x7f6a, 0x5c0a, 0x9075, 0x6628, 0x5de6, 0x4f50,
+ 0x67de, 0x505a, 0x4f5c, 0x5750, 0x5ea7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345,
+ 0x4e15, 0x4e98, 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba,
+ 0x4e3f, 0x5315, 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df,
+ 0x80e4, 0x9997, 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10,
+ 0x4e5c, 0x4e69, 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4,
+ 0x538d, 0x539d, 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a,
+ 0x53f5, 0x5326, 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202,
+ 0x5208, 0x520e, 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e,
+ 0x5261, 0x525c, 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293,
+ 0x5182, 0x7f54, 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1,
+ 0x4eeb, 0x4ede, 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25,
+ 0x4f27, 0x4f09, 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d,
+ 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89,
+ 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94,
+ 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1,
+ 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e,
+ 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043,
+ 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9,
+ 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107,
+ 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46,
+ 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9,
+ 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156,
+ 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34,
+ 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc, 0x51c7, 0x5196,
+ 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa, 0x8bb4, 0x8bb5,
+ 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce, 0x8bd2, 0x8bd3,
+ 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf, 0x8be0, 0x8be4,
+ 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6, 0x8bf9, 0x8bfc,
+ 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c, 0x8c0f, 0x8c11,
+ 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b, 0x8c18, 0x8c1d,
+ 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a, 0x8c2b, 0x8c2e,
+ 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369, 0x537a, 0x961d,
+ 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c, 0x9642, 0x9649,
+ 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674, 0x9688, 0x968d,
+ 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099, 0x90ac, 0x90a1,
+ 0x90b4, 0x90b3, 0x90b6, 0x90ba, 0x90b8, 0x90b0, 0x90cf, 0x90c5,
+ 0x90be, 0x90d0, 0x90c4, 0x90c7, 0x90d3, 0x90e6, 0x90e2, 0x90dc,
+ 0x90d7, 0x90db, 0x90eb, 0x90ef, 0x90fe, 0x9104, 0x9122, 0x911e,
+ 0x9123, 0x9131, 0x912f, 0x9139, 0x9143, 0x9146, 0x520d, 0x5942,
+ 0x52a2, 0x52ac, 0x52ad, 0x52be, 0x54ff, 0x52d0, 0x52d6, 0x52f0,
+ 0x53df, 0x71ee, 0x77cd, 0x5ef4, 0x51f5, 0x51fc, 0x9b2f, 0x53b6,
+ 0x5f01, 0x755a, 0x5def, 0x574c, 0x57a9, 0x57a1, 0x587e, 0x58bc,
+ 0x58c5, 0x58d1, 0x5729, 0x572c, 0x572a, 0x5733, 0x5739, 0x572e,
+ 0x572f, 0x575c, 0x573b, 0x5742, 0x5769, 0x5785, 0x576b, 0x5786,
+ 0x577c, 0x577b, 0x5768, 0x576d, 0x5776, 0x5773, 0x57ad, 0x57a4,
+ 0x578c, 0x57b2, 0x57cf, 0x57a7, 0x57b4, 0x5793, 0x57a0, 0x57d5,
+ 0x57d8, 0x57da, 0x57d9, 0x57d2, 0x57b8, 0x57f4, 0x57ef, 0x57f8,
+ 0x57e4, 0x57dd, 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e,
+ 0x5819, 0x5844, 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a,
+ 0x5880, 0x99a8, 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f,
+ 0x828a, 0x82a8, 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab,
+ 0x82b8, 0x82be, 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7,
+ 0x82ae, 0x82cb, 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa,
+ 0x829f, 0x82c4, 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4,
+ 0x830f, 0x8307, 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb,
+ 0x82d3, 0x8311, 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5,
+ 0x831c, 0x8351, 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334,
+ 0x8331, 0x839b, 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f,
+ 0x8340, 0x8317, 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365,
+ 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0,
+ 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385,
+ 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e,
+ 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807,
+ 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411,
+ 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea,
+ 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a,
+ 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c,
+ 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1,
+ 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba,
+ 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c,
+ 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a, 0x8556, 0x853b,
+ 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564, 0x855e, 0x857a,
+ 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8, 0x8587, 0x858f,
+ 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7, 0x85b0, 0x85d3,
+ 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629, 0x8616, 0x863c,
+ 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955, 0x595a, 0x5958,
+ 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c, 0x626a, 0x629f,
+ 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322, 0x62f6, 0x6339,
+ 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a, 0x638e, 0x63b4,
+ 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc, 0x63f2, 0x63f8,
+ 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452, 0x63c6, 0x63be,
+ 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c, 0x6426, 0x6421,
+ 0x645e, 0x6484, 0x646d, 0x6496, 0x647a, 0x64b7, 0x64b8, 0x6499,
+ 0x64ba, 0x64c0, 0x64d0, 0x64d7, 0x64e4, 0x64e2, 0x6509, 0x6525,
+ 0x652e, 0x5f0b, 0x5fd2, 0x7519, 0x5f11, 0x535f, 0x53f1, 0x53fd,
+ 0x53e9, 0x53e8, 0x53fb, 0x5412, 0x5416, 0x5406, 0x544b, 0x5452,
+ 0x5453, 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423,
+ 0x5432, 0x5482, 0x5494, 0x5477, 0x5471, 0x5464, 0x549a, 0x549b,
+ 0x5484, 0x5476, 0x5466, 0x549d, 0x54d0, 0x54ad, 0x54c2, 0x54b4,
+ 0x54d2, 0x54a7, 0x54a6, 0x54d3, 0x54d4, 0x5472, 0x54a3, 0x54d5,
+ 0x54bb, 0x54bf, 0x54cc, 0x54d9, 0x54da, 0x54dc, 0x54a9, 0x54aa,
+ 0x54a4, 0x54dd, 0x54cf, 0x54de, 0x551b, 0x54e7, 0x5520, 0x54fd,
+ 0x5514, 0x54f3, 0x5522, 0x5523, 0x550f, 0x5511, 0x5527, 0x552a,
+ 0x5567, 0x558f, 0x55b5, 0x5549, 0x556d, 0x5541, 0x5555, 0x553f,
+ 0x5550, 0x553c, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533,
+ 0x5530, 0x555c, 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588,
+ 0x5581, 0x559f, 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd,
+ 0x55be, 0x5594, 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1,
+ 0x55eb, 0x55ec, 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5,
+ 0x55f2, 0x55f3, 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94,
+ 0x561e, 0x5608, 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600,
+ 0x5627, 0x562d, 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662,
+ 0x5659, 0x565c, 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b,
+ 0x567b, 0x567c, 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd,
+ 0x56e1, 0x56f5, 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709,
+ 0x571c, 0x5e0f, 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c,
+ 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a,
+ 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a,
+ 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3,
+ 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02,
+ 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b,
+ 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d,
+ 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d,
+ 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89,
+ 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc,
+ 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3,
+ 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2,
+ 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa, 0x72fb, 0x7317,
+ 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315, 0x7322, 0x7339,
+ 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d, 0x7357, 0x7360,
+ 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7, 0x5924, 0x5902,
+ 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b, 0x996c, 0x9974,
+ 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a, 0x998d, 0x9990,
+ 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91, 0x5e8b, 0x5e96,
+ 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3, 0x8d53, 0x5ed2,
+ 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4, 0x5fc9, 0x5fd6,
+ 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4, 0x5ffe, 0x6005,
+ 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035, 0x6026, 0x601b,
+ 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f, 0x6021, 0x6078,
+ 0x6079, 0x607b, 0x607a, 0x6042, 0x606a, 0x607d, 0x6096, 0x609a,
+ 0x60ad, 0x609d, 0x6083, 0x6092, 0x608c, 0x609b, 0x60ec, 0x60bb,
+ 0x60b1, 0x60dd, 0x60d8, 0x60c6, 0x60da, 0x60b4, 0x6120, 0x6126,
+ 0x6115, 0x6123, 0x60f4, 0x6100, 0x610e, 0x612b, 0x614a, 0x6175,
+ 0x61ac, 0x6194, 0x61a7, 0x61b7, 0x61d4, 0x61f5, 0x5fdd, 0x96b3,
+ 0x95e9, 0x95eb, 0x95f1, 0x95f3, 0x95f5, 0x95f6, 0x95fc, 0x95fe,
+ 0x9603, 0x9604, 0x9606, 0x9608, 0x960a, 0x960b, 0x960c, 0x960d,
+ 0x960f, 0x9612, 0x9615, 0x9616, 0x9617, 0x9619, 0x961a, 0x4e2c,
+ 0x723f, 0x6215, 0x6c35, 0x6c54, 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85,
+ 0x6c90, 0x6c94, 0x6c8c, 0x6c68, 0x6c69, 0x6c74, 0x6c76, 0x6c86,
+ 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad, 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7,
+ 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa, 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3,
+ 0x6cef, 0x6cfe, 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07,
+ 0x6d04, 0x6d19, 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a,
+ 0x6d4f, 0x6d52, 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0,
+ 0x6d5e, 0x6d93, 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a,
+ 0x6dc7, 0x6dc5, 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6,
+ 0x6ddd, 0x6dd9, 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e,
+ 0x6e4e, 0x6e6b, 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32,
+ 0x6e25, 0x6e44, 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2,
+ 0x6ea5, 0x6ea7, 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf,
+ 0x6e8f, 0x6ec2, 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15,
+ 0x6ef9, 0x6f2f, 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29,
+ 0x6f89, 0x6f8d, 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1,
+ 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde,
+ 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f,
+ 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f,
+ 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07,
+ 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6,
+ 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d,
+ 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051,
+ 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074,
+ 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56,
+ 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66,
+ 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e,
+ 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3, 0x5997, 0x59ca,
+ 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af, 0x59d7, 0x59be,
+ 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8, 0x59f9, 0x5a0c,
+ 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13, 0x5a40, 0x5a67,
+ 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec, 0x5aaa, 0x5a9b,
+ 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2, 0x5ad4, 0x5ab8,
+ 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8, 0x5adc, 0x5b09,
+ 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15, 0x5c1c, 0x5b5a,
+ 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75, 0x9a77, 0x9a78,
+ 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85, 0x9a88, 0x9a8a,
+ 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b, 0x9a9c, 0x9a9d,
+ 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7, 0x7e9f, 0x7ea1,
+ 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9, 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0,
+ 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb, 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7,
+ 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8, 0x7eeb, 0x7eee, 0x7eef, 0x7ef1,
+ 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa, 0x7efb, 0x7efe, 0x7f01, 0x7f02,
+ 0x7f03, 0x7f07, 0x7f08, 0x7f0b, 0x7f0c, 0x7f0f, 0x7f11, 0x7f12,
+ 0x7f17, 0x7f19, 0x7f1c, 0x7f1b, 0x7f1f, 0x7f21, 0x7f22, 0x7f23,
+ 0x7f24, 0x7f25, 0x7f26, 0x7f27, 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d,
+ 0x7f2f, 0x7f30, 0x7f31, 0x7f32, 0x7f33, 0x7f35, 0x5e7a, 0x757f,
+ 0x5ddb, 0x753e, 0x9095, 0x738e, 0x7391, 0x73ae, 0x73a2, 0x739f,
+ 0x73cf, 0x73c2, 0x73d1, 0x73b7, 0x73b3, 0x73c0, 0x73c9, 0x73c8,
+ 0x73e5, 0x73d9, 0x987c, 0x740a, 0x73e9, 0x73e7, 0x73de, 0x73ba,
+ 0x73f2, 0x740f, 0x742a, 0x745b, 0x7426, 0x7425, 0x7428, 0x7430,
+ 0x742e, 0x742c, 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455,
+ 0x7459, 0x7477, 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481,
+ 0x7487, 0x748b, 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2,
+ 0x74ba, 0x97ea, 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748,
+ 0x6769, 0x67a5, 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775,
+ 0x67a8, 0x679e, 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809,
+ 0x67d8, 0x680a, 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da,
+ 0x67b3, 0x67dd, 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1,
+ 0x67fd, 0x6832, 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844,
+ 0x6864, 0x6883, 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840,
+ 0x683e, 0x684a, 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877,
+ 0x6893, 0x686b, 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9,
+ 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971,
+ 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998,
+ 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966,
+ 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4,
+ 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff,
+ 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e,
+ 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28,
+ 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337,
+ 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d,
+ 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72,
+ 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c,
+ 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b, 0x8f8d, 0x8f8e,
+ 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217, 0x621b, 0x621f,
+ 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7, 0x74ef, 0x74f4,
+ 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee, 0x65ef, 0x65f0,
+ 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600, 0x7085, 0x66f7,
+ 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006, 0x665f, 0x6654,
+ 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677, 0x6684, 0x668c,
+ 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6, 0x66e9, 0x8d32,
+ 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45, 0x8d46, 0x8d48,
+ 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7, 0x89ca, 0x89cb,
+ 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e, 0x729f, 0x725d,
+ 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b, 0x728d, 0x728f,
+ 0x7292, 0x6308, 0x6332, 0x63b0, 0x643f, 0x64d8, 0x8004, 0x6bea,
+ 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9, 0x6c05, 0x6c07, 0x6c06, 0x6c0d,
+ 0x6c15, 0x6c18, 0x6c19, 0x6c1a, 0x6c21, 0x6c29, 0x6c24, 0x6c2a,
+ 0x6c32, 0x6535, 0x6555, 0x656b, 0x724d, 0x7252, 0x7256, 0x7230,
+ 0x8662, 0x5216, 0x809f, 0x809c, 0x8093, 0x80bc, 0x670a, 0x80bd,
+ 0x80b1, 0x80ab, 0x80ad, 0x80b4, 0x80b7, 0x80e7, 0x80e8, 0x80e9,
+ 0x80ea, 0x80db, 0x80c2, 0x80c4, 0x80d9, 0x80cd, 0x80d7, 0x6710,
+ 0x80dd, 0x80eb, 0x80f1, 0x80f4, 0x80ed, 0x810d, 0x810e, 0x80f2,
+ 0x80fc, 0x6715, 0x8112, 0x8c5a, 0x8136, 0x811e, 0x812c, 0x8118,
+ 0x8132, 0x8148, 0x814c, 0x8153, 0x8174, 0x8159, 0x815a, 0x8171,
+ 0x8160, 0x8169, 0x817c, 0x817d, 0x816d, 0x8167, 0x584d, 0x5ab5,
+ 0x8188, 0x8182, 0x8191, 0x6ed5, 0x81a3, 0x81aa, 0x81cc, 0x6726,
+ 0x81ca, 0x81bb, 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43,
+ 0x6b46, 0x6b59, 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da,
+ 0x6bb3, 0x5f40, 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc,
+ 0x65c6, 0x65c4, 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080,
+ 0x709c, 0x7096, 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1,
+ 0x70e8, 0x70ca, 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173,
+ 0x715c, 0x7168, 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198,
+ 0x71b3, 0x71b5, 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9,
+ 0x721d, 0x7228, 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d,
+ 0x6243, 0x6248, 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b,
+ 0x795c, 0x7953, 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967,
+ 0x797a, 0x7985, 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0,
+ 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab,
+ 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206,
+ 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800,
+ 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d,
+ 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823,
+ 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847,
+ 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1,
+ 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec,
+ 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b,
+ 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707,
+ 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738,
+ 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768, 0x7762, 0x7765,
+ 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791, 0x779f, 0x77a0,
+ 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e, 0x754b, 0x7548,
+ 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61, 0x7f5f, 0x8a48,
+ 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e, 0x76cd, 0x76e5,
+ 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a, 0x948c, 0x948d,
+ 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a, 0x949b, 0x949c,
+ 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac, 0x94af, 0x94b0,
+ 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bc,
+ 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca, 0x94cb, 0x94cc,
+ 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5, 0x94d6, 0x94d7,
+ 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0, 0x94e2, 0x94e4,
+ 0x94e5, 0x94e7, 0x94e8, 0x94ea, 0x94e9, 0x94eb, 0x94ee, 0x94ef,
+ 0x94f3, 0x94f4, 0x94f5, 0x94f7, 0x94f9, 0x94fc, 0x94fd, 0x94ff,
+ 0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950a, 0x950d, 0x950e,
+ 0x950f, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951b,
+ 0x951d, 0x951e, 0x951f, 0x9522, 0x952a, 0x952b, 0x9529, 0x952c,
+ 0x9531, 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953c, 0x953e,
+ 0x953f, 0x9542, 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954c,
+ 0x954e, 0x954f, 0x9552, 0x9553, 0x9554, 0x9556, 0x9557, 0x9558,
+ 0x9559, 0x955b, 0x955e, 0x955f, 0x955d, 0x9561, 0x9562, 0x9564,
+ 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956a, 0x956b, 0x956c,
+ 0x956f, 0x9571, 0x9572, 0x9573, 0x953a, 0x77e7, 0x77ec, 0x96c9,
+ 0x79d5, 0x79ed, 0x79e3, 0x79eb, 0x7a06, 0x5d47, 0x7a03, 0x7a02,
+ 0x7a1e, 0x7a14, 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70,
+ 0x7688, 0x768e, 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c,
+ 0x9e20, 0x9e22, 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32,
+ 0x9e31, 0x9e36, 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41,
+ 0x9e42, 0x9e44, 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c,
+ 0x9e4e, 0x9e51, 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e,
+ 0x9e63, 0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c,
+ 0x9e71, 0x9e6d, 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d,
+ 0x75ac, 0x75a3, 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0,
+ 0x75c3, 0x75c2, 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4,
+ 0x75eb, 0x75e7, 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600,
+ 0x7605, 0x760c, 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619,
+ 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f,
+ 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c,
+ 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80,
+ 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad,
+ 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2,
+ 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5,
+ 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919,
+ 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966,
+ 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014,
+ 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029,
+ 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052,
+ 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883, 0x9889, 0x988c,
+ 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e, 0x989f, 0x98a1,
+ 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c, 0x866e, 0x867f,
+ 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b, 0x86ac, 0x869d,
+ 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6, 0x86c4, 0x86b5,
+ 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9, 0x86cf, 0x86b4,
+ 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0, 0x8713, 0x86de,
+ 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707, 0x86f8, 0x8708,
+ 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e, 0x8725, 0x872e,
+ 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729, 0x8737, 0x873f,
+ 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760, 0x8770, 0x874c,
+ 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764, 0x8759, 0x8765,
+ 0x8793, 0x87af, 0x87a8, 0x87d2, 0x87c6, 0x8788, 0x8785, 0x87ad,
+ 0x8797, 0x8783, 0x87ab, 0x87e5, 0x87ac, 0x87b5, 0x87b3, 0x87cb,
+ 0x87d3, 0x87bd, 0x87d1, 0x87c0, 0x87ca, 0x87db, 0x87ea, 0x87e0,
+ 0x87ee, 0x8816, 0x8813, 0x87fe, 0x880a, 0x881b, 0x8821, 0x8839,
+ 0x883c, 0x7f36, 0x7f42, 0x7f44, 0x7f45, 0x8210, 0x7afa, 0x7afd,
+ 0x7b08, 0x7b03, 0x7b04, 0x7b15, 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47,
+ 0x7b38, 0x7b2a, 0x7b19, 0x7b2e, 0x7b31, 0x7b20, 0x7b25, 0x7b24,
+ 0x7b33, 0x7b3e, 0x7b1e, 0x7b58, 0x7b5a, 0x7b45, 0x7b75, 0x7b4c,
+ 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b, 0x7b62, 0x7b72, 0x7b71, 0x7b90,
+ 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac, 0x7b9d, 0x7ba8, 0x7b85, 0x7baa,
+ 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4, 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd,
+ 0x7bda, 0x7be5, 0x7be6, 0x7bea, 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f,
+ 0x7c16, 0x7c0b, 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40,
+ 0x81fe, 0x8201, 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222,
+ 0x8223, 0x822d, 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233,
+ 0x8234, 0x823e, 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f,
+ 0x8268, 0x887e, 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d,
+ 0x7f9f, 0x7fa7, 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91,
+ 0x7c9d, 0x7c9c, 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1,
+ 0x7cc7, 0x7ccc, 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e,
+ 0x66a8, 0x7fbf, 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9,
+ 0x7fee, 0x7ff3, 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b,
+ 0x9eb8, 0x9eb4, 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67,
+ 0x8d6d, 0x8c47, 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164,
+ 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172,
+ 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2,
+ 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba,
+ 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5,
+ 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde,
+ 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3,
+ 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f,
+ 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35,
+ 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a,
+ 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94,
+ 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98,
+ 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc, 0x89e5, 0x89eb,
+ 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3, 0x96ef, 0x9706,
+ 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d, 0x9730, 0x973e,
+ 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88, 0x9f89, 0x9f8a,
+ 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc, 0x96bd, 0x96ce,
+ 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8, 0x933e, 0x936a,
+ 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82, 0x9c85, 0x9c86,
+ 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90, 0x9c91, 0x9c92,
+ 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f, 0x9ca0, 0x9ca1,
+ 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8, 0x9ca9, 0x9cab,
+ 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5,
+ 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd, 0x9cc4, 0x9cc5,
+ 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf,
+ 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc,
+ 0x9cdd, 0x9cdf, 0x9ce2, 0x977c, 0x9785, 0x9791, 0x9792, 0x9794,
+ 0x97af, 0x97ab, 0x97a3, 0x97b2, 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7,
+ 0x9e58, 0x9ab6, 0x9aba, 0x9abc, 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2,
+ 0x9acb, 0x9acc, 0x9ad1, 0x9b45, 0x9b43, 0x9b47, 0x9b49, 0x9b48,
+ 0x9b4d, 0x9b51, 0x98e8, 0x990d, 0x992e, 0x9955, 0x9954, 0x9adf,
+ 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb, 0x9afb, 0x9aed, 0x9af9, 0x9b08,
+ 0x9b0f, 0x9b13, 0x9b1f, 0x9b23, 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82,
+ 0x9e87, 0x9e88, 0x9e8b, 0x9e92, 0x93d6, 0x9e9d, 0x9e9f, 0x9edb,
+ 0x9edc, 0x9edd, 0x9ee0, 0x9edf, 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5,
+ 0x9eea, 0x9eef, 0x9f22, 0x9f2c, 0x9f2f, 0x9f39, 0x9f37, 0x9f3d,
+ 0x9f3e, 0x9f44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x9f44, 0xffffffff, 0x00ff, 0x0000,
+ 0x0100, 0x0003, 0x2288, 0x804f240, 0x0100, 0x0005, 0x00f8, 0x42130a14
+};
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/configure-fontforge.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/configure-fontforge.h
new file mode 100644
index 00000000000..d5511494c5d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/configure-fontforge.h
@@ -0,0 +1,109 @@
+/* Copyright (C) 2002-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _CONFIG_FONTFORGE_H_
+#define _CONFIG_FONTFORGE_H_
+
+
+/* Apple suggests using a sfnt version of 'true' for fonts designed for use */
+/* only on a mac (windows refuses such fonts). I generally prefer to have a */
+/* font work everywhere, so normally ff produces fonts with version 1.0 */
+/* Set this if you want Apple only fonts (produced when Apple mode is set and*/
+/* Opentype mode is unset in the Generate Fonts-Options dialog). */
+/* */
+/* #define FONTFORGE_CONFIG_APPLE_ONLY_TTF */
+/* */
+
+
+/* Nobody else puts apple unicode encodings into the name table. So I probably*/
+/* shouldn't either. But if someone wants them... */
+/* */
+/* #define FONTFORGE_CONFIG_APPLE_UNICODE_NAMES */
+/* */
+
+
+/* I used to use an approximation method when converting cubic to quadratic */
+/* splines which was non-symmetric. In some cases it produced better results */
+/* than the current approach. This flag restores the old algorithm. */
+/* */
+/* #define FONTFORGE_CONFIG_NON_SYMMETRIC_QUADRATIC_CONVERSION */
+/* */
+
+
+/* Harald Harders would like to be able to generate a PFM file without */
+/* creating a font along with it. I don't see the need for this, but he pro- */
+/* vided a patch. Setting this flag will enable his patch */
+/* */
+/* #define FONTFORGE_CONFIG_WRITE_PFM */
+/* */
+
+
+/* Prior to late Sept of 2003 FontForge converted certain mac feature/settings*/
+/* into opentype-like tags. Some features could be converted directly but for*/
+/* a few I made up tags. Now FontForge is capable of using the mac feature */
+/* settings directly. If you set this flag then when FontForge loads in an sfd*/
+/* file with these non-standard opentype tags, it will convert them into the */
+/* appropriate mac feature/setting combinations. */
+/* */
+/* #define FONTFORGE_CONFIG_CVT_OLD_MAC_FEATURES */
+/* */
+
+
+/* In addition to placing snippets of charstrings into subrs, I tried adding */
+/* whole glyphs (when that was possible). To my surprise, it made things */
+/* worse in one of my test cases, and barely registered an improvement in */
+/* another. So I think we're better off without it. But I don't understand */
+/* why things are worse so I'm leaving the code in to play with */
+/* */
+/* #define FONTFORGE_CONFIG_PS_REFS_GET_SUBRS */
+/* */
+
+
+/* Werner wants to be able to see the raw (unscaled) data for the location of */
+/* points (in the points window of the debugger). I'm not sure that is */
+/* generally a good idea (I think it makes the dlg look unsymetric). */
+/* */
+/* #define FONTFORGE_CONFIG_SHOW_RAW_POINTS */
+/* */
+
+
+/* ************************************************************************** */
+/* **************************** Numeric Settings **************************** */
+/* ************************************************************************** */
+
+
+/* The number of files displayed in the "File->Recent" menu */
+#define RECENT_MAX 10
+
+/* The number of tabs allowed in the outline glyph view of former glyphs */
+#define FORMER_MAX 10
+
+/* The maximum number of layers allowed in a normal font (this includes the */
+/* default foreground and background layers) -- this does not limit type3 */
+/* fonts */
+#define BACK_LAYER_MAX 256
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/cvundoes.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/cvundoes.c
new file mode 100644
index 00000000000..1f09c640a15
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/cvundoes.c
@@ -0,0 +1,46 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h"
+#include "psfont.h"
+
+#ifndef HAVE_EXECINFO_H
+// no backtrace available
+#else
+ #include <execinfo.h>
+#endif
+
+/* ********************************* Undoes ********************************* */
+
+int getAdobeEnc(const char *name) {
+ int i;
+
+ for ( i=0; i<256; ++i )
+ if ( strcmp(name,AdobeStandardEncoding[i])==0 )
+ break;
+ if ( i==256 ) i = -1;
+return( i );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/dumppfa.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/dumppfa.c
new file mode 100644
index 00000000000..4a58d1ea6df
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/dumppfa.c
@@ -0,0 +1,131 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include <math.h>
+
+#ifdef __CygWin
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
+#endif
+
+char *PSDictHasEntry(struct psdict *dict, const char *key) {
+ int i;
+
+ if ( dict==NULL )
+return( NULL );
+
+ for ( i=0; i<dict->next; ++i )
+ if ( strcmp(dict->keys[i],key)==0 )
+return( dict->values[i] );
+
+return( NULL );
+}
+
+int PSDictSame(struct psdict *dict1, struct psdict *dict2) {
+ int i;
+
+ if ( (dict1==NULL || dict1->cnt==0) && (dict2==NULL || dict2->cnt==0))
+return( true );
+ if ( dict1==NULL || dict2==NULL || dict1->cnt!=dict2->cnt )
+return( false );
+
+ for ( i=0; i<dict1->cnt; ++i ) {
+ char *val = PSDictHasEntry(dict2,dict1->keys[i]);
+ if ( val==NULL || strcmp(val,dict1->values[i])!=0 )
+return( false );
+ }
+return( true );
+}
+
+/* Inside a font, I can't use a <stdin> as a data source. Probably because */
+/* the parser doesn't know what to do with those data when building the char */
+/* proc (as opposed to executing) */
+/* So I can't use run length filters or other compression technique */
+
+static double FindMaxDiffOfBlues(char *pt, double max_diff) {
+ char *end;
+ double p1, p2;
+
+ while ( *pt==' ' || *pt=='[' ) ++pt;
+ for (;;) {
+ p1 = strtod(pt,&end);
+ if ( end==pt )
+ break;
+ pt = end;
+ p2 = strtod(pt,&end);
+ if ( end==pt )
+ break;
+ if ( p2-p1 >max_diff ) max_diff = p2-p1;
+ pt = end;
+ }
+return( max_diff );
+}
+
+double BlueScaleFigureForced(struct psdict *private_,real bluevalues[], real otherblues[]) {
+ double max_diff=0;
+ char *pt;
+ int i;
+
+ pt = PSDictHasEntry(private_,"BlueValues");
+ if ( pt!=NULL ) {
+ max_diff = FindMaxDiffOfBlues(pt,max_diff);
+ } else if ( bluevalues!=NULL ) {
+ for ( i=0; i<14 && (bluevalues[i]!=0 || bluevalues[i+1])!=0; i+=2 ) {
+ if ( bluevalues[i+1] - bluevalues[i]>=max_diff )
+ max_diff = bluevalues[i+1] - bluevalues[i];
+ }
+ }
+ pt = PSDictHasEntry(private_,"FamilyBlues");
+ if ( pt!=NULL )
+ max_diff = FindMaxDiffOfBlues(pt,max_diff);
+
+ pt = PSDictHasEntry(private_,"OtherBlues");
+ if ( pt!=NULL )
+ max_diff = FindMaxDiffOfBlues(pt,max_diff);
+ else if ( otherblues!=NULL ) {
+ for ( i=0; i<10 && (otherblues[i]!=0 || otherblues[i+1]!=0); i+=2 ) {
+ if ( otherblues[i+1] - otherblues[i]>=max_diff )
+ max_diff = otherblues[i+1] - otherblues[i];
+ }
+ }
+ pt = PSDictHasEntry(private_,"FamilyOtherBlues");
+ if ( pt!=NULL )
+ max_diff = FindMaxDiffOfBlues(pt,max_diff);
+ if ( max_diff<=0 )
+return( -1 );
+ if ( 1/max_diff > .039625 )
+return( -1 );
+
+ return rint(240.0*0.99/max_diff)/240.0;
+}
+
+double BlueScaleFigure(struct psdict *private_,real bluevalues[], real otherblues[]) {
+ if ( PSDictHasEntry(private_,"BlueScale")!=NULL )
+return( -1 );
+ return BlueScaleFigureForced(private_, bluevalues, otherblues);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/edgelist.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/edgelist.h
new file mode 100644
index 00000000000..99a1cc823b6
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/edgelist.h
@@ -0,0 +1,144 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _EDGELIST_H
+#define _EDGELIST_H
+#include "splinefont.h"
+
+typedef struct hints {
+ real base, width;
+ real b1, b2, e1, e2;
+ real ab, ae;
+ unsigned int adjustb: 1;
+ unsigned int adjuste: 1;
+ struct hints *next;
+} Hints;
+
+/* Instead of y and x coordinates these are based on major and other */
+/* major maybe either x or y depending on what we're interested in */
+/* at the moment, and other will be the other one. Of course it's */
+/* consistant accross the datastructure at any given time */
+typedef struct edge {
+ real mmin, mmax; /* relative to es->mmin */
+ real t_mmin, t_mmax;
+ real tmin, tmax;
+ real o_mmin, o_mmax;
+ real t_cur, o_cur, m_cur;
+ unsigned int up: 1; /* line is directed up in the spline list */
+ unsigned int max_adjusted: 1; /* by hstem hints */
+ unsigned int min_adjusted: 1;
+ Spline *spline; /* spline which generated this segment */
+ struct edge *esnext, *aenext;
+ struct edge *before, *after;
+ int last_opos, last_mpos;
+ real oldt; /* only used for FindIntersections of RemoveOverlap */
+} Edge;
+
+typedef struct edgelist {
+ Edge **edges;
+ int cnt;
+ real mmin, mmax;
+ real omin, omax;
+ real scale;
+ int bytes_per_line;
+ uint8 *bitmap;
+ Edge *last, *splinesetfirst;
+ SplineChar *sc;
+ int layer;
+ char *interesting;
+ int major, other;
+ unsigned int genmajoredges: 1; /* generate a list of edges parallel to the major axis */
+ Edge *majors; /* ordered so that lowest edge is first */
+ Edge *majorhold; /* to hold major edges as we pass them and they become useless */
+ Hints *hhints, *vhints;
+ int is_overlap;
+ DBounds bbox; /* Not always set. {m,o}{min,max} a provide scaled bbox, this is in glyph units */
+} EdgeList;
+
+extern void FreeEdges(EdgeList *es);
+
+/* Version which is better for everything other than rasterization */
+/* (I think) */
+typedef struct edgeinfo {
+ /* The spline is broken up at all extrema. So... */
+ /* The spline between tmin and tmax is monotonic in both coordinates */
+ /* If the spline becomes vert/horizontal that will be at one of the */
+ /* end points too */
+ Spline *spline;
+ real tmin, tmax;
+ real coordmin[2];
+ real coordmax[2];
+ unsigned int up: 1;
+ unsigned int hv: 1;
+ unsigned int hvbottom: 1;
+ unsigned int hvtop: 1;
+ unsigned int hor: 1;
+ unsigned int vert: 1;
+ unsigned int almosthor: 1;
+ unsigned int almostvert: 1;
+ unsigned int horattmin: 1;
+ unsigned int horattmax: 1;
+ unsigned int vertattmin: 1;
+ unsigned int vertattmax: 1;
+ unsigned hup: 1;
+ unsigned vup: 1;
+ real tcur; /* Value of t for current major coord */
+ real ocur; /* Value of the other coord for current major coord */
+ struct edgeinfo *next;
+ struct edgeinfo *ordered;
+ struct edgeinfo *aenext;
+ struct edgeinfo *splinenext;
+ SplineChar *sc;
+ int major;
+} EI;
+
+typedef struct eilist {
+ EI *edges;
+ real coordmin[2];
+ real coordmax[2];
+ int low, high, cnt;
+ EI **ordered;
+ char *ends; /* flag to say an edge ends on this line */
+ SplineChar *sc;
+ int layer;
+ int major;
+ EI *splinelast, *splinefirst;
+ EI **bottoms, **tops; /* Used only be FindNeeded in RemoveOverlap */
+ unsigned leavetiny: 1;
+ enum overlap_type ot;
+} EIList;
+
+extern void ElFreeEI(EIList *el);
+extern void ELFindEdges(SplineChar *sc, EIList *el);
+extern void ELOrder(EIList *el, int major );
+extern real EITOfNextMajor(EI *e, EIList *el, real sought_m );
+extern int EISameLine(EI *e, EI *n, real i, int major);
+extern int EISkipExtremum(EI *e, real i, int major);
+extern EI *EIActiveEdgesFindStem(EI *apt, real i, int major);
+extern EI *EIActiveListReorder(EI *active,int *change);
+extern EI *EIActiveEdgesRefigure(EIList *el, EI *active,real i,int major,
+ int *_change);
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/edgelist2.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/edgelist2.h
new file mode 100644
index 00000000000..c352288ef65
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/edgelist2.h
@@ -0,0 +1,87 @@
+/* Copyright (C) 2004-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _EDGELIST2_H
+#define _EDGELIST2_H
+#include "splinefont.h"
+
+struct monotonic;
+
+typedef struct mlist {
+ Spline *s;
+ struct monotonic *m; /* May get slightly munched but will */
+ /* always have right spline. we fix when we need it */
+ extended t;
+ int isend;
+ BasePoint unit;
+ struct mlist *next;
+} MList;
+
+typedef struct intersection {
+ MList *monos;
+ BasePoint inter;
+ struct intersection *next;
+} Intersection;
+
+typedef struct preintersection {
+ BasePoint inter;
+ struct monotonic *m1; bigreal t1;
+ struct monotonic *m2; bigreal t2;
+ unsigned int is_close: 1;
+ struct preintersection *next;
+} PreIntersection;
+
+#define FF_RELATIONAL_GEOM
+
+typedef struct monotonic {
+ Spline *s;
+ extended tstart, tend;
+#ifdef FF_RELATIONAL_GEOM
+ extended otstart, otend;
+#endif
+ struct monotonic *next, *prev; /* along original contour */
+ uint8 xup; /* increasing t => increasing x */
+ uint8 yup;
+ unsigned int isneeded : 1;
+ unsigned int isunneeded : 1;
+ unsigned int mutual_collapse : 1;
+ unsigned int exclude : 1;
+ struct intersection *start;
+ struct intersection *end;
+ DBounds b;
+ extended other, t;
+ struct monotonic *linked; /* singly linked list of all monotonic*/
+ /* segments, no contour indication */
+ double when_set; /* Debugging */
+ struct preintersection *pending;
+} Monotonic;
+
+extern void FreeMonotonics(Monotonic *m);
+extern Monotonic *SSsToMContours(SplineSet *spl, enum overlap_type ot);
+ /* overlap_type controls whether we look at selected splinesets or all splinesets */
+extern int MonotonicFindAt(Monotonic *ms,int which, extended test, Monotonic **space );
+
+#endif /* _EDGELIST2_H */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/encoding.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/encoding.c
new file mode 100644
index 00000000000..4fe2523715a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/encoding.c
@@ -0,0 +1,791 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#include "fontforgevw.h"
+
+#ifdef _MSC_VER
+#define strcasecmp _stricmp
+#define strncasecmp _strnicmp
+#else
+
+#endif
+
+#include "encoding.h"
+#include "psfont.h"
+
+Encoding *default_encoding = NULL;
+
+static int32 tex_base_encoding[] = {
+ 0x0000, 0x02d9, 0xfb01, 0xfb02, 0x2044, 0x02dd, 0x0141, 0x0142,
+ 0x02db, 0x02da, 0x000a, 0x02d8, 0x2212, 0x000d, 0x017d, 0x017e,
+ 0x02c7, 0x0131, 0xf6be, 0xfb00, 0xfb03, 0xfb04, 0x2260, 0x221e,
+ 0x2264, 0x2265, 0x2202, 0x2211, 0x220f, 0x03c0, 0x0060, 0x0027,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2019,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x2018, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x20ac, 0x222b, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x2126, 0x221a, 0x2248,
+ 0x0090, 0x0091, 0x0092, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x2206, 0x25ca, 0x0178,
+ 0x0000, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x002d, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+
+static int32 unicode_from_MacSymbol[] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x2200, 0x0023, 0x2203, 0x0025, 0x0026, 0x220d,
+ 0x0028, 0x0029, 0x2217, 0x002b, 0x002c, 0x2212, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x2245, 0x0391, 0x0392, 0x03a7, 0x0394, 0x0395, 0x03a6, 0x0393,
+ 0x0397, 0x0399, 0x03d1, 0x039a, 0x039b, 0x039c, 0x039d, 0x039f,
+ 0x03a0, 0x0398, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03c2, 0x03a9,
+ 0x039e, 0x03a8, 0x0396, 0x005b, 0x2234, 0x005d, 0x22a5, 0x005f,
+ 0xf8e5, 0x03b1, 0x03b2, 0x03c7, 0x03b4, 0x03b5, 0x03c6, 0x03b3,
+ 0x03b7, 0x03b9, 0x03d5, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf,
+ 0x03c0, 0x03b8, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03d6, 0x03c9,
+ 0x03be, 0x03c8, 0x03b6, 0x007b, 0x007c, 0x007d, 0x223c, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x0000, 0x03d2, 0x2032, 0x2264, 0x2044, 0x221e, 0x0192, 0x2663,
+ 0x2666, 0x2665, 0x2660, 0x2194, 0x2190, 0x2191, 0x2192, 0x2193,
+ 0x00b0, 0x00b1, 0x2033, 0x2265, 0x00d7, 0x221d, 0x2202, 0x2022,
+ 0x00f7, 0x2260, 0x2261, 0x2248, 0x2026, 0xf8e6, 0xf8e7, 0x21b5,
+ 0x2135, 0x2111, 0x211c, 0x2118, 0x2297, 0x2295, 0x2205, 0x2229,
+ 0x222a, 0x2283, 0x2287, 0x2284, 0x2282, 0x2286, 0x2208, 0x2209,
+ 0x2220, 0x2207, 0x00ae, 0x00a9, 0x2122, 0x220f, 0x221a, 0x22c5,
+ 0x00ac, 0x2227, 0x2228, 0x21d4, 0x21d0, 0x21d1, 0x21d2, 0x21d3,
+ 0x22c4, 0x2329, 0xf8e8, 0xf8e9, 0xf8ea, 0x2211, 0xf8eb, 0xf8ec,
+ 0xf8ed, 0xf8ee, 0xf8ef, 0xf8f0, 0xf8f1, 0xf8f2, 0xf8f3, 0xf8f4,
+ 0xf8ff, 0x232a, 0x222b, 0x2320, 0xf8f5, 0x2321, 0xf8f6, 0xf8f7,
+ 0xf8f8, 0xf8f9, 0xf8fa, 0xf8fb, 0xf8fc, 0xf8fd, 0xf8fe, 0x02c7
+};
+
+/* I don't think iconv provides encodings for zapfdingbats nor jis201 */
+/* Perhaps I should list them here for compatability, but I think I'll just */
+/* leave them out. I doubt they get used. */
+static Encoding texbase = { "TeX-Base-Encoding", 256, tex_base_encoding, NULL, NULL, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 };
+ Encoding custom = { "Custom", 0, NULL, NULL, &texbase, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, "", 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 };
+static Encoding original = { "Original", 0, NULL, NULL, &custom, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, "", 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 };
+static Encoding unicodebmp = { "UnicodeBmp", 65536, NULL, NULL, &original, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 };
+static Encoding unicodefull = { "UnicodeFull", 17*65536, NULL, NULL, &unicodebmp, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, "", 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 };
+static Encoding adobestd = { "AdobeStandard", 256, unicode_from_adobestd, (char**)AdobeStandardEncoding, &unicodefull,
+ 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 };
+static Encoding symbol = { "Symbol", 256, unicode_from_MacSymbol, NULL, &adobestd, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 };
+
+Encoding *enclist = &symbol;
+
+const char *FindUnicharName(void) {
+ /* Iconv and libiconv use different names for UCS2. Just great. Perhaps */
+ /* different versions of each use still different names? */
+ /* Even worse, both accept UCS-2, but under iconv it means native byte */
+ /* ordering and under libiconv it means big-endian */
+ iconv_t test;
+ static const char *goodname = NULL;
+ static const char *names[] = { "UCS-4-INTERNAL", "UCS-4", "UCS4", "ISO-10646-UCS-4", "UTF-32", NULL };
+ static const char *namesle[] = { "UCS-4LE", "UTF-32LE", NULL };
+ static const char *namesbe[] = { "UCS-4BE", "UTF-32BE", NULL };
+ const char **testnames;
+ int i;
+ union {
+ short s;
+ char c[2];
+ } u;
+
+ if ( goodname!=NULL )
+return( goodname );
+
+ u.c[0] = 0x1; u.c[1] = 0x2;
+ if ( u.s==0x201 ) { /* Little endian */
+ testnames = namesle;
+ } else {
+ testnames = namesbe;
+ }
+ for ( i=0; testnames[i]!=NULL; ++i ) {
+ test = iconv_open(testnames[i],"ISO-8859-1");
+ if ( test!=(iconv_t) -1 && test!=NULL ) {
+ iconv_close(test);
+ goodname = testnames[i];
+ break;
+ }
+ }
+
+ if ( goodname==NULL ) {
+ for ( i=0; names[i]!=NULL; ++i ) {
+ test = iconv_open(names[i],"ISO-8859-1");
+ if ( test!=(iconv_t) -1 && test!=NULL ) {
+ iconv_close(test);
+ goodname = names[i];
+ break;
+ }
+ }
+ }
+
+ if ( goodname==NULL ) {
+ IError( "I can't figure out your version of iconv(). I need a name for the UCS-4 encoding and I can't find one. Reconfigure --without-iconv. Bye.");
+ exit( 1 );
+ }
+
+ test = iconv_open(goodname,"Mac");
+ if ( test==(iconv_t) -1 || test==NULL ) {
+ IError( "Your version of iconv does not support the \"Mac Roman\" encoding.\nIf this causes problems, reconfigure --without-iconv." );
+ } else
+ iconv_close(test);
+
+ /* I really should check for ISO-2022-JP, KR, CN, and all the other encodings */
+ /* I might find in a ttf 'name' table. But those tables take too long to build */
+return( goodname );
+}
+
+static int TryEscape( Encoding *enc, const char *escape_sequence ) {
+ char from[20], ucs[20];
+ size_t fromlen, tolen;
+ ICONV_CONST char *fpt;
+ char *upt;
+ int i, j, low;
+ int esc_len = strlen(escape_sequence);
+
+ strcpy(from,escape_sequence);
+
+ enc->has_2byte = false;
+ low = -1;
+ for ( i=0; i<256; ++i ) if ( i!=escape_sequence[0] ) {
+ for ( j=0; j<256; ++j ) {
+ from[esc_len] = i; from[esc_len+1] = j; from[esc_len+2] = 0;
+ fromlen = esc_len+2;
+ fpt = from;
+ upt = ucs;
+ tolen = sizeof(ucs);
+ if ( iconv( enc->tounicode , &fpt, &fromlen, &upt, &tolen )!= (size_t) (-1) &&
+ upt-ucs==sizeof(unichar_t) /* Exactly one character */ ) {
+ if ( low==-1 ) {
+ enc->low_page = low = i;
+ enc->has_2byte = true;
+ }
+ enc->high_page = i;
+ break;
+ }
+ }
+ }
+ if ( enc->low_page==enc->high_page )
+ enc->has_2byte = false;
+ if ( enc->has_2byte ) {
+ strcpy(enc->iso_2022_escape, escape_sequence);
+ enc->iso_2022_escape_len = esc_len;
+ }
+return( enc->has_2byte );
+}
+
+Encoding *_FindOrMakeEncoding(const char *name,int make_it) {
+ Encoding *enc;
+ char buffer[20];
+ const char *iconv_name;
+ Encoding temp;
+ uint8 good[256];
+ int i, j, any, all;
+ char from[8], ucs[20];
+ size_t fromlen, tolen;
+ ICONV_CONST char *fpt;
+ char *upt;
+ /* iconv is not case sensitive */
+
+ if ( strncasecmp(name,"iso8859_",8)==0 || strncasecmp(name,"koi8_",5)==0 ) {
+ /* Fixup for old naming conventions */
+ strncpy(buffer,name,sizeof(buffer));
+ buffer[sizeof(buffer)-1] = '\0';
+ *strchr(buffer,'_') = '-';
+ name = buffer;
+ } else if ( strcasecmp(name,"iso-8859")==0 ) {
+ /* Fixup for old naming conventions */
+ strncpy(buffer,name,3);
+ strncpy(buffer+3,name+4,sizeof(buffer)-3);
+ buffer[sizeof(buffer)-1] = '\0';
+ name = buffer;
+ } else if ( strcasecmp(name,"isolatin1")==0 ) {
+ name = "iso8859-1";
+ } else if ( strcasecmp(name,"isocyrillic")==0 ) {
+ name = "iso8859-5";
+ } else if ( strcasecmp(name,"isoarabic")==0 ) {
+ name = "iso8859-6";
+ } else if ( strcasecmp(name,"isogreek")==0 ) {
+ name = "iso8859-7";
+ } else if ( strcasecmp(name,"isohebrew")==0 ) {
+ name = "iso8859-8";
+ } else if ( strcasecmp(name,"isothai")==0 ) {
+ name = "tis-620"; /* TIS doesn't define non-breaking space in 0xA0 */
+ } else if ( strcasecmp(name,"latin0")==0 || strcasecmp(name,"latin9")==0 ) {
+ name = "iso8859-15"; /* "latin-9" is supported (libiconv bug?) */
+ } else if ( strcasecmp(name,"koi8r")==0 ) {
+ name = "koi8-r";
+ } else if ( strncasecmp(name,"jis201",6)==0 || strncasecmp(name,"jisx0201",8)==0 ) {
+ name = "jis_x0201";
+ } else if ( strcasecmp(name,"AdobeStandardEncoding")==0 || strcasecmp(name,"Adobe")==0 )
+ name = "AdobeStandard";
+ for ( enc=enclist; enc!=NULL; enc=enc->next )
+ if ( strmatch(name,enc->enc_name)==0 ||
+ (enc->iconv_name!=NULL && strmatch(name,enc->iconv_name)==0))
+return( enc );
+ if ( strmatch(name,"unicode")==0 || strmatch(name,"iso10646")==0 || strmatch(name,"iso10646-1")==0 )
+return( &unicodebmp );
+ if ( strmatch(name,"unicode4")==0 || strmatch(name,"ucs4")==0 )
+return( &unicodefull );
+
+ iconv_name = name;
+ /* Mac seems to work ok */
+ if ( strcasecmp(name,"win")==0 || strcasecmp(name,"ansi")==0 )
+ iconv_name = "MS-ANSI"; /* "WINDOWS-1252";*/
+ else if ( strncasecmp(name,"jis208",6)==0 || strncasecmp(name,"jisx0208",8)==0 )
+ iconv_name = "ISO-2022-JP";
+ else if ( strncasecmp(name,"jis212",6)==0 || strncasecmp(name,"jisx0212",8)==0 )
+ iconv_name = "ISO-2022-JP-2";
+ else if ( strncasecmp(name,"ksc5601",7)==0 )
+ iconv_name = "ISO-2022-KR";
+ else if ( strcasecmp(name,"gb2312pk")==0 || strcasecmp(name,"gb2312packed")==0 )
+ iconv_name = "EUC-CN";
+ else if ( strncasecmp(name,"gb2312",6)==0 )
+ iconv_name = "ISO-2022-CN";
+ else if ( strcasecmp(name,"wansung")==0 )
+ iconv_name = "EUC-KR";
+ else if ( strcasecmp(name,"EUC-CN")==0 ) {
+ iconv_name = name;
+ name = "gb2312pk";
+ } else if ( strcasecmp(name,"EUC-KR")==0 ) {
+ iconv_name = name;
+ name = "wansung";
+ }
+
+/* Escape sequences: */
+/* ISO-2022-CN: \e $ ) A ^N */
+/* ISO-2022-KR: \e $ ) C ^N */
+/* ISO-2022-JP: \e $ B */
+/* ISO-2022-JP-2: \e $ ( D */
+/* ISO-2022-JP-3: \e $ ( O */ /* Capital "O", not zero */
+/* ISO-2022-CN-EXT: \e $ ) E ^N */ /* Not sure about this, also uses CN escape */
+
+ memset(&temp,0,sizeof(temp));
+ temp.builtin = true;
+ temp.tounicode = iconv_open(FindUnicharName(),iconv_name);
+ if ( temp.tounicode==(iconv_t) -1 || temp.tounicode==NULL )
+return( NULL ); /* Iconv doesn't recognize this name */
+ temp.fromunicode = iconv_open(iconv_name,FindUnicharName());
+ if ( temp.fromunicode==(iconv_t) -1 || temp.fromunicode==NULL ) {
+ /* This should never happen, but if it does... */
+ iconv_close(temp.tounicode);
+return( NULL );
+ }
+
+ memset(good,0,sizeof(good));
+ any = false; all = true;
+ for ( i=1; i<256; ++i ) {
+ from[0] = i; from[1] = 0;
+ fromlen = 1;
+ fpt = from;
+ upt = ucs;
+ tolen = sizeof(ucs);
+ if ( iconv( temp.tounicode , &fpt, &fromlen, &upt, &tolen )!= (size_t) (-1)) {
+ good[i] = true;
+ any = true;
+ } else
+ all = false;
+ }
+ if ( any )
+ temp.has_1byte = true;
+ if ( all )
+ temp.only_1byte = true;
+
+ if ( !all ) {
+ if ( strstr(iconv_name,"2022")==NULL ) {
+ for ( i=temp.has_1byte; i<256; ++i ) if ( !good[i] ) {
+ for ( j=0; j<256; ++j ) {
+ from[0] = i; from[1] = j; from[2] = 0;
+ fromlen = 2;
+ fpt = from;
+ upt = ucs;
+ tolen = sizeof(ucs);
+ if ( iconv( temp.tounicode , &fpt, &fromlen, &upt, &tolen )!= (size_t) (-1) &&
+ upt-ucs==sizeof(unichar_t) /* Exactly one character */ ) {
+ if ( temp.low_page==-1 )
+ temp.low_page = i;
+ temp.high_page = i;
+ temp.has_2byte = true;
+ break;
+ }
+ }
+ }
+ if ( temp.low_page==temp.high_page ) {
+ temp.has_2byte = false;
+ temp.low_page = temp.high_page = -1;
+ }
+ }
+ if ( !temp.has_2byte && !good[033]/* escape */ ) {
+ if ( strstr(iconv_name,"2022")!=NULL &&
+ strstr(iconv_name,"JP3")!=NULL &&
+ TryEscape( &temp,"\33$(O" )) {
+ ;
+ } else if ( strstr(iconv_name,"2022")!=NULL &&
+ strstr(iconv_name,"JP2")!=NULL &&
+ TryEscape( &temp,"\33$(D" )) {
+ ;
+ } else if ( strstr(iconv_name,"2022")!=NULL &&
+ strstr(iconv_name,"JP")!=NULL &&
+ TryEscape( &temp,"\33$B" )) {
+ ;
+ } else if ( strstr(iconv_name,"2022")!=NULL &&
+ strstr(iconv_name,"KR")!=NULL &&
+ TryEscape( &temp,"\33$)C\16" )) {
+ ;
+ } else if ( strstr(iconv_name,"2022")!=NULL &&
+ strstr(iconv_name,"CN")!=NULL &&
+ TryEscape( &temp,"\33$)A\16" )) {
+ ;
+ }
+ }
+ }
+ if ( !temp.has_1byte && !temp.has_2byte )
+return( NULL );
+ if ( !make_it )
+return( NULL );
+
+ enc = chunkalloc(sizeof(Encoding));
+ *enc = temp;
+ enc->enc_name = copy(name);
+ if ( iconv_name!=name )
+ enc->iconv_name = copy(iconv_name);
+ enc->next = enclist;
+ enc->builtin = true;
+ enclist = enc;
+ if ( enc->has_2byte )
+ enc->char_cnt = (enc->high_page<<8) + 256;
+ else {
+ enc->char_cnt = 256;
+ enc->only_1byte = true;
+ }
+ if ( strstrmatch(iconv_name,"JP")!=NULL ||
+ strstrmatch(iconv_name,"sjis")!=NULL ||
+ strstrmatch(iconv_name,"cp932")!=NULL )
+ enc->is_japanese = true;
+ else if ( strstrmatch(iconv_name,"KR")!=NULL )
+ enc->is_korean = true;
+ else if ( strstrmatch(iconv_name,"CN")!=NULL )
+ enc->is_simplechinese = true;
+ else if ( strstrmatch(iconv_name,"BIG")!=NULL && strstrmatch(iconv_name,"5")!=NULL )
+ enc->is_tradchinese = true;
+
+ if ( strstrmatch(name,"ISO8859")!=NULL &&
+ strtol(name+strlen(name)-2,NULL,10)>=16 )
+ /* Not in our menu, don't hide */;
+ else if ( iconv_name!=name || strmatch(name,"mac")==0 || strstrmatch(name,"ISO8859")!=NULL ||
+ strmatch(name,"koi8-r")==0 || strmatch(name,"sjis")==0 ||
+ strmatch(name,"big5")==0 || strmatch(name,"big5hkscs")==0 )
+ enc->hidden = true;
+
+return( enc );
+}
+
+Encoding *FindOrMakeEncoding(const char *name) {
+return( _FindOrMakeEncoding(name,true));
+}
+
+/* Plugin API */
+
+void EncodingFree(Encoding *item) {
+ int i;
+
+ if ( item==NULL )
+ return;
+
+ free(item->enc_name);
+ if ( item->psnames!=NULL ) {
+ for ( i=0; i<item->char_cnt; ++i )
+ free(item->psnames[i]);
+ free(item->psnames);
+ }
+ free(item->unicode);
+ free(item);
+}
+
+/* ************************************************************************** */
+/* ****************************** CID Encodings ***************************** */
+/* ************************************************************************** */
+
+int CIDFromName(char *name,SplineFont *cidmaster) {
+ /* We've had various conventions for encoding a cid inside a name */
+ /* I'm primarily interested in this when the name is something like */
+ /* Japan1.504.vert */
+ /* which tells me that the current glyph is the rotated version of */
+ /* cid 504 */
+ /* Other convention "cid-504.vert" */
+ int len = strlen( cidmaster->ordering );
+ int cid;
+ char *end;
+
+ if ( strncmp(name,cidmaster->ordering,len)==0 ) {
+ if ( name[len]=='.' ) ++len;
+ } else if ( strncmp(name,"cid-",4)==0 ) {
+ len = 4;
+ } else
+ len = 0;
+ cid = strtol(name+len,&end,10);
+ if ( end==name+len )
+return( -1 );
+ if ( *end!='.' && *end!='\0' )
+return( -1 );
+
+return ( cid );
+}
+
+enum cmaptype { cmt_out=-1, cmt_coderange, cmt_notdefs, cmt_cid, cmt_max };
+struct coderange { uint32 first, last, cid; };
+
+/* ************************** Reencoding routines ************************** */
+
+EncMap *EncMapFromEncoding(SplineFont *sf,Encoding *enc) {
+ int i,j, extras, found, base, unmax;
+ int32 *encoded, *unencoded;
+ EncMap *map;
+ struct altuni *altuni;
+ SplineChar *sc;
+
+ if ( enc==NULL )
+return( NULL );
+
+ base = enc->char_cnt;
+ if ( enc->is_original )
+ base = 0;
+ else if ( enc->char_cnt<=256 )
+ base = 256;
+ else if ( enc->char_cnt<=0x10000 )
+ base = 0x10000;
+ encoded = malloc(base*sizeof(int32));
+ memset(encoded,-1,base*sizeof(int32));
+ unencoded = malloc(sf->glyphcnt*sizeof(int32));
+ unmax = sf->glyphcnt;
+
+ for ( i=extras=0; i<sf->glyphcnt; ++i ) if ( (sc=sf->glyphs[i])!=NULL ) {
+ found = false;
+ if ( enc->psnames!=NULL ) {
+ for ( j=enc->char_cnt-1; j>=0; --j ) {
+ if ( enc->psnames[j]!=NULL &&
+ strcmp(enc->psnames[j],sc->name)==0 ) {
+ found = true;
+ encoded[j] = i;
+ }
+ }
+ }
+ if ( !found ) {
+ if ( sc->unicodeenc!=-1 &&
+ sc->unicodeenc < (int)unicode4_size &&
+ (j = EncFromUni(sc->unicodeenc,enc))!= -1 )
+ encoded[j] = i;
+ else {
+ /* I don't think extras can surpass unmax now, but it doesn't */
+ /* hurt to leave the code (it's from when we encoded duplicates see below) */
+ if ( extras>=unmax ) unencoded = realloc(unencoded,(unmax+=300)*sizeof(int32));
+ unencoded[extras++] = i;
+ }
+ for ( altuni=sc->altuni; altuni!=NULL; altuni=altuni->next ) {
+ if ( altuni->unienc!=-1 &&
+ (uint32)altuni->unienc<unicode4_size &&
+ altuni->vs==-1 &&
+ altuni->fid==0 &&
+ (j = EncFromUni(altuni->unienc,enc))!= -1 )
+ encoded[j] = i;
+ /* I used to have code here to add these unencoded duplicates */
+ /* but I don't really see any reason to do so. The main unicode */
+ /* will occur, and any encoded duplicates so the glyph won't */
+ /* vanish */
+ }
+ }
+ }
+
+ /* Some glyphs have both a pua encoding and an encoding in a non-bmp */
+ /* plane. Big5HK does and the AMS glyphs do */
+ if ( enc->is_unicodefull && (sf->uni_interp == ui_trad_chinese ||
+ sf->uni_interp == ui_ams )) {
+ extern const int cns14pua[], amspua[];
+ const int *pua = sf->uni_interp == ui_ams? amspua : cns14pua;
+ for ( i=0xe000; i<0xf8ff; ++i ) {
+ if ( pua[i-0xe000]!=0 )
+ encoded[pua[i-0xe000]] = encoded[i];
+ }
+ }
+
+ if ( enc->psnames != NULL ) {
+ /* Names are more important than unicode code points for some encodings */
+ /* AdobeStandard for instance which won't work if you have a glyph */
+ /* named "f_i" (must be "fi") even though the code point is correct */
+ /* The code above would match f_i where AS requires fi, so force the */
+ /* names to be correct. */
+ for ( j=0; j<enc->char_cnt; ++j ) {
+ if ( encoded[j]!=-1 && enc->psnames[j]!=NULL &&
+ strcmp(sf->glyphs[encoded[j]]->name,enc->psnames[j])!=0 ) {
+ free(sf->glyphs[encoded[j]]->name);
+ sf->glyphs[encoded[j]]->name = copy(enc->psnames[j]);
+ }
+ }
+ }
+
+ map = chunkalloc(sizeof(EncMap));
+ map->enccount = map->encmax = base + extras;
+ map->map = malloc(map->enccount*sizeof(int32));
+ memcpy(map->map,encoded,base*sizeof(int32));
+ memcpy(map->map+base,unencoded,extras*sizeof(int32));
+ map->backmax = sf->glyphcnt;
+ map->backmap = malloc(sf->glyphcnt*sizeof(int32));
+ memset(map->backmap,-1,sf->glyphcnt*sizeof(int32)); /* Just in case there are some unencoded glyphs (duplicates perhaps) */
+ for ( i = map->enccount-1; i>=0; --i ) if ( map->map[i]!=-1 )
+ map->backmap[map->map[i]] = i;
+ map->enc = enc;
+
+ free(encoded);
+ free(unencoded);
+
+return( map );
+}
+
+static SplineChar *SplineCharMatch(SplineFont *parent,SplineChar *sc) {
+ SplineChar *scnew = SFSplineCharCreate(parent);
+
+ scnew->parent = parent;
+ scnew->orig_pos = sc->orig_pos;
+ scnew->name = copy(sc->name);
+ scnew->unicodeenc = sc->unicodeenc;
+ scnew->width = sc->width;
+ scnew->vwidth = sc->vwidth;
+ scnew->widthset = true;
+return( scnew );
+}
+
+void SFMatchGlyphs(SplineFont *sf,SplineFont *target,int addempties) {
+ /* reorder sf so that its glyphs array is the same as that in target */
+ int i, j, cnt, cnt2;
+ SplineChar **glyphs;
+
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL )
+ sf->glyphs[i]->ticked = false;
+ if (( cnt = target->glyphcnt )<sf->glyphcnt ) cnt = sf->glyphcnt;
+ glyphs = calloc(cnt,sizeof(SplineChar *));
+ for ( i=0; i<target->glyphcnt; ++i ) if ( target->glyphs[i]!=NULL ) {
+ SplineChar *sc = SFGetChar(sf,target->glyphs[i]->unicodeenc,target->glyphs[i]->name );
+ if ( sc==NULL && addempties )
+ sc = SplineCharMatch(sf,target->glyphs[i]);
+ if ( sc!=NULL ) {
+ glyphs[i] = sc;
+ sc->ticked = true;
+ }
+ }
+ for ( i=cnt2=0; i<sf->glyphcnt; ++i )
+ if ( sf->glyphs[i]!=NULL && !sf->glyphs[i]->ticked )
+ ++cnt2;
+ if ( target->glyphcnt+cnt2>cnt ) {
+ glyphs = realloc(glyphs,(target->glyphcnt+cnt2)*sizeof(SplineChar *));
+ memset(glyphs+cnt,0,(target->glyphcnt+cnt2-cnt)*sizeof(SplineChar *));
+ cnt = target->glyphcnt+cnt2;
+ }
+ j = target->glyphcnt;
+ for ( i=0; i<sf->glyphcnt; ++i )
+ if ( sf->glyphs[i]!=NULL && !sf->glyphs[i]->ticked )
+ glyphs[j++] = sf->glyphs[i];
+ free(sf->glyphs);
+ sf->glyphs = glyphs;
+ sf->glyphcnt = sf->glyphmax = cnt;
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL )
+ sf->glyphs[i]->orig_pos = i;
+}
+
+void MMMatchGlyphs(MMSet *mm) {
+ /* reorder all instances so that they have the same orig_pos */
+ int i, j, index, lasthole;
+ SplineFont *sf, *base = NULL;
+ SplineChar *sc, *scnew, *sc2;
+
+ for ( i = 0; i<mm->instance_count; ++i ) if ( mm->instances[i]!=NULL ) {
+ base = mm->instances[i];
+ break;
+ }
+ if ( base==NULL )
+return;
+
+ /* First build up an ordering that uses all glyphs found in any of the */
+ /* sub-fonts, "base" will be the start of it. We will add glyphs to */
+ /* "base" as needed */
+ lasthole = -1;
+ for ( i = 0; i<mm->instance_count; ++i ) if ( (sf=mm->instances[i])!=NULL && sf!=NULL ) {
+ for ( j=0; j<sf->glyphcnt; ++j ) if ( (sc=sf->glyphs[j])!=NULL ) {
+ if ( j<base->glyphcnt && base->glyphs[j]!=NULL &&
+ base->glyphs[j]->unicodeenc==sc->unicodeenc &&
+ strcmp(base->glyphs[j]->name,sc->name)==0 )
+ continue; /* It's good, and in the same place */
+ else if ( (sc2=SFGetChar(base,sc->unicodeenc,sc->name))!=NULL &&
+ sc2->unicodeenc==sc->unicodeenc &&
+ strcmp(sc2->name,sc->name)==0 )
+ continue; /* Well, it's in there somewhere */
+ else {
+ /* We need to add it */
+ if ( j<base->glyphcnt && base->glyphs[j]==NULL )
+ index = j;
+ else {
+ for ( ++lasthole ; lasthole<base->glyphcnt && base->glyphs[lasthole]!=NULL; ++lasthole );
+ index = lasthole;
+ if ( lasthole>=base->glyphmax )
+ base->glyphs = realloc(base->glyphs,(base->glyphmax+=20)*sizeof(SplineChar *));
+ if ( lasthole>=base->glyphcnt )
+ base->glyphcnt = lasthole+1;
+ }
+ base->glyphs[index] = scnew = SplineCharMatch(base,sc);
+ scnew->orig_pos = index;
+ }
+ }
+ }
+
+ /* Now force all other instances to match */
+ for ( i = 0; i<mm->instance_count; ++i ) if ( (sf=mm->instances[i])!=NULL && sf!=base )
+ SFMatchGlyphs(sf,base,true);
+ if ( mm->normal!=NULL )
+ SFMatchGlyphs(mm->normal,base,true);
+}
+
+int32 UniFromEnc(int enc, Encoding *encname) {
+ char from[20];
+ unichar_t to[20];
+ ICONV_CONST char *fpt;
+ char *tpt;
+ size_t fromlen, tolen;
+
+ if ( encname->is_custom || encname->is_original )
+return( -1 );
+ if ( enc>=encname->char_cnt )
+return( -1 );
+ if ( encname->is_unicodebmp || encname->is_unicodefull )
+return( enc );
+ if ( encname->unicode!=NULL )
+return( encname->unicode[enc] );
+ else if ( encname->tounicode ) {
+ /* To my surprise, on RH9, doing a reset on conversion of CP1258->UCS2 */
+ /* causes subsequent calls to return garbage */
+ if ( encname->iso_2022_escape_len ) {
+ tolen = sizeof(to); fromlen = 0;
+ iconv(encname->tounicode,NULL,&fromlen,NULL,&tolen); /* Reset state */
+ }
+ fpt = from; tpt = (char *) to; tolen = sizeof(to);
+ if ( encname->has_1byte && enc<256 ) {
+ *(char *) fpt = enc;
+ fromlen = 1;
+ } else if ( encname->has_2byte ) {
+ if ( encname->iso_2022_escape_len )
+ strncpy(from,encname->iso_2022_escape,encname->iso_2022_escape_len );
+ fromlen = encname->iso_2022_escape_len;
+ from[fromlen++] = enc>>8;
+ from[fromlen++] = enc&0xff;
+ }
+ if ( iconv(encname->tounicode,&fpt,&fromlen,&tpt,&tolen)==(size_t) -1 )
+return( -1 );
+ if ( tpt-(char *) to == 0 ) {
+ /* This strange call appears to be what we need to make CP1258->UCS2 */
+ /* work. It's supposed to reset the state and give us the shift */
+ /* out. As there is no state, and no shift out I have no idea why*/
+ /* this works, but it does. */
+ if ( iconv(encname->tounicode,NULL,&fromlen,&tpt,&tolen)==(size_t) -1 )
+return( -1 );
+ }
+ if ( tpt-(char *) to == sizeof(unichar_t) )
+ {
+ return( to[0] );
+ }
+ } else if ( encname->tounicode_func!=NULL ) {
+return( (encname->tounicode_func)(enc) );
+ }
+return( -1 );
+}
+
+int32 EncFromUni(int32 uni, Encoding *enc) {
+ unichar_t from[20];
+ unsigned char to[20];
+ ICONV_CONST char *fpt;
+ char *tpt;
+ size_t fromlen, tolen;
+ int i;
+
+ if ( enc->is_custom || enc->is_original || enc->is_compact || uni==-1 )
+return( -1 );
+ if ( enc->is_unicodebmp || enc->is_unicodefull )
+return( uni<enc->char_cnt ? uni : -1 );
+
+ if ( enc->unicode!=NULL ) {
+ for ( i=0; i<enc->char_cnt; ++i ) {
+ if ( enc->unicode[i]==uni )
+return( i );
+ }
+return( -1 );
+ } else if ( enc->fromunicode!=NULL ) {
+ /* I don't see how there can be any state to reset in this direction */
+ /* So I don't reset it */
+ from[0] = uni;
+ fromlen = sizeof(unichar_t);
+ fpt = (char *) from; tpt = (char *) to; tolen = sizeof(to);
+ iconv(enc->fromunicode,NULL,NULL,NULL,NULL); /* reset shift in/out, etc. */
+ if ( iconv(enc->fromunicode,&fpt,&fromlen,&tpt,&tolen)==(size_t) -1 )
+return( -1 );
+ if ( tpt-(char *) to == 1 )
+return( to[0] );
+ if ( enc->iso_2022_escape_len!=0 ) {
+ if ( tpt-(char *) to == enc->iso_2022_escape_len+2 &&
+ strncmp((char *) to,enc->iso_2022_escape,enc->iso_2022_escape_len)==0 )
+return( (to[enc->iso_2022_escape_len]<<8) | to[enc->iso_2022_escape_len+1] );
+ } else {
+ if ( tpt-(char *) to == sizeof(unichar_t) )
+return( (to[0]<<8) | to[1] );
+ }
+ } else if ( enc->fromunicode_func!=NULL ) {
+return( (enc->fromunicode_func)(uni) );
+ }
+return( -1 );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/encoding.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/encoding.h
new file mode 100644
index 00000000000..53e61a252be
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/encoding.h
@@ -0,0 +1,5 @@
+#ifndef _ENCODING_H
+#define _ENCODING_H
+
+extern void EncodingFree(Encoding *item);
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fontforge-config.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fontforge-config.h
new file mode 100644
index 00000000000..ac81d5a4171
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fontforge-config.h
@@ -0,0 +1,22 @@
+#ifndef FF_CONFIG_H
+#define FF_CONFIG_H
+
+#ifndef ICONV_CONST
+#define ICONV_CONST
+#endif
+
+#define _NO_LIBUNINAMESLIST 1
+#define _NO_LIBUNICODENAMES 1
+#define _NO_PYTHON
+#define _NO_FFSCRIPT
+#define _NO_LIBSPIRO
+
+#define FONTFORGE_LIBFF_VERSION_MAJOR 2
+#define FONTFORGE_LIBFF_VERSION_MINOR 0
+#define FONTFORGE_MODTIME_RAW 1469132312L /* Seconds since 1970 (standard unix time) */
+#define FONTFORGE_MODTIME_STR ""
+#define FONTFORGE_VERSIONDATE_RAW 20160721
+
+#define _GNU_SOURCE 1
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fontforge.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fontforge.h
new file mode 100644
index 00000000000..fe6a7201f50
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fontforge.h
@@ -0,0 +1,97 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _PFAEDIT_H_
+#define _PFAEDIT_H_
+
+#include <fontforge-config.h>
+#include "configure-fontforge.h"
+#include <basics.h>
+#include "libffstamp.h"
+#include <stdio.h>
+#include <string.h>
+#include <intl.h>
+#include "splinefont.h"
+#include "uiinterface.h"
+
+static const unsigned unicode4_size = 17*65536;
+ /* Unicode goes up to 0x10ffff */
+
+#ifdef _WIN32
+extern FILE* tmpfile2 ();
+#else
+#define tmpfile2 tmpfile
+#endif
+
+extern int32 unicode_from_adobestd[256];
+
+/* unicode_nameannot - Deprecated, but kept for older programs to access. */
+#if _NO_LIBUNINAMESLIST
+#endif
+
+extern int default_fv_font_size;
+extern int default_fv_antialias;
+extern int default_fv_bbsized;
+extern Encoding *default_encoding, custom;
+extern int adjustwidth;
+extern int adjustlbearing;
+extern int autohint_before_generate;
+extern int seperate_hint_controls;
+extern int no_windowing_ui;
+extern uint32 default_background;
+extern int use_utf8_in_script;
+
+extern int new_em_size;
+extern int new_fonts_are_order2;
+extern int loaded_fonts_same_as_new;
+
+extern char *TTFFoundry;
+
+extern Encoding *enclist;
+
+extern int quiet;
+
+extern MacFeat *default_mac_feature_map;
+
+#include <stdint.h>
+#include <basics.h>
+
+typedef uint32_t Color;
+#define COLOR_DEFAULT ((Color) 0xfffffffe)
+
+typedef struct pressedOn {
+ int x,y; /* screen location of the press */
+ float cx, cy; /* Translated into character space */
+ float t; /* location on the spline where we pressed */
+} PressedOn;
+
+typedef struct findsel {
+ float fudge; /* One pixel fudge factor */
+ float xl,xh, yl, yh; /* One pixel fudge factor */
+ PressedOn *p;
+} FindSel;
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fontforgevw.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fontforgevw.h
new file mode 100644
index 00000000000..5f43c0e3c20
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fontforgevw.h
@@ -0,0 +1,32 @@
+/* Copyright (C) 2007-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _FONTFORGEVW_H_
+#define _FONTFORGEVW_H_
+
+#include "fontforge.h"
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fvfonts.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fvfonts.c
new file mode 100644
index 00000000000..e2229aaef12
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/fvfonts.c
@@ -0,0 +1,253 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h"
+#include "namehash.h"
+
+static int _SFFindExistingSlot(SplineFont *sf, int unienc, const char *name );
+
+void __GlyphHashFree(struct glyphnamehash *hash) {
+ struct glyphnamebucket *test, *next;
+ int i;
+
+ if ( hash==NULL )
+return;
+ for ( i=0; i<GN_HSIZE; ++i ) {
+ for ( test = hash->table[i]; test!=NULL; test = next ) {
+ next = test->next;
+ chunkfree(test,sizeof(struct glyphnamebucket));
+ }
+ }
+}
+
+static void _GlyphHashFree(SplineFont *sf) {
+
+ if ( sf->glyphnames==NULL )
+return;
+ __GlyphHashFree(sf->glyphnames);
+ free(sf->glyphnames);
+ sf->glyphnames = NULL;
+}
+
+void GlyphHashFree(SplineFont *sf) {
+ _GlyphHashFree(sf);
+ if ( sf->cidmaster )
+ _GlyphHashFree(sf->cidmaster);
+}
+
+static void GlyphHashCreate(SplineFont *sf) {
+ int i, k, hash;
+ SplineFont *_sf;
+ struct glyphnamehash *gnh;
+ struct glyphnamebucket *new;
+
+ if ( sf->glyphnames!=NULL )
+return;
+ sf->glyphnames = gnh = calloc(1,sizeof(*gnh));
+ k = 0;
+ do {
+ _sf = k<sf->subfontcnt ? sf->subfonts[k] : sf;
+ /* I walk backwards because there are some ttf files where multiple */
+ /* glyphs get the same name. In the cases I've seen only one of these */
+ /* has an encoding. That's the one we want. It will be earlier in the */
+ /* font than the others. If we build the list backwards then it will */
+ /* be the top name in the bucket, and will be the one we return */
+ for ( i=_sf->glyphcnt-1; i>=0; --i ) if ( _sf->glyphs[i]!=NULL ) {
+ new = chunkalloc(sizeof(struct glyphnamebucket));
+ new->sc = _sf->glyphs[i];
+ hash = hashname(new->sc->name);
+ new->next = gnh->table[hash];
+ gnh->table[hash] = new;
+ }
+ ++k;
+ } while ( k<sf->subfontcnt );
+}
+
+SplineChar *SFHashName(SplineFont *sf,const char *name) {
+ struct glyphnamebucket *test;
+
+ if ( sf->glyphnames==NULL )
+ GlyphHashCreate(sf);
+
+ for ( test=sf->glyphnames->table[hashname(name)]; test!=NULL; test = test->next )
+ if ( strcmp(test->sc->name,name)==0 )
+return( test->sc );
+
+return( NULL );
+}
+
+static int SCUniMatch(SplineChar *sc,int unienc) {
+ struct altuni *alt;
+
+ if ( sc->unicodeenc==unienc )
+return( true );
+ for ( alt=sc->altuni; alt!=NULL; alt=alt->next )
+ if ( alt->unienc==unienc )
+return( true );
+
+return( false );
+}
+
+/* Find the position in the glyph list where this code point/name is found. */
+/* Returns -1 else on error */
+int SFFindGID(SplineFont *sf, int unienc, const char *name ) {
+ int gid;
+ SplineChar *sc;
+
+ if ( unienc!=-1 ) {
+ for ( gid=0; gid<sf->glyphcnt; ++gid ) if ( sf->glyphs[gid]!=NULL ) {
+ if ( SCUniMatch(sf->glyphs[gid],unienc) )
+return( gid );
+ }
+ }
+ if ( name!=NULL ) {
+ sc = SFHashName(sf,name);
+ if ( sc!=NULL )
+return( sc->orig_pos );
+ }
+
+return ( -1 );
+}
+
+int SFCIDFindCID(SplineFont *sf, int unienc, const char *name ) {
+ // For a given SplineFont *sf, find the index of the SplineChar with code unienc or name *name.
+ int j,ret;
+
+ // If there is a cidmap or if there are multiple subfonts, do complicated things.
+ if ( sf->cidmaster!=NULL || sf->subfontcnt!=0 ) {
+ if ( sf->cidmaster!=NULL )
+ sf=sf->cidmaster;
+ }
+
+ // If things are simple, perform a flat map.
+ if ( sf->subfonts==NULL && sf->cidmaster==NULL )
+ return( SFFindGID(sf,unienc,name));
+
+ // If the cid lookup from before failed, look through subfonts.
+ if ( sf->cidmaster!=NULL )
+ sf=sf->cidmaster;
+ for ( j=0; j<sf->subfontcnt; ++j )
+ if (( ret = SFFindGID(sf,unienc,name))!=-1 )
+ return( ret );
+
+ return( -1 );
+}
+
+int SFHasCID(SplineFont *sf,int cid) {
+ int i;
+ /* What subfont (if any) contains this cid? */
+ if ( sf->cidmaster!=NULL )
+ sf=sf->cidmaster;
+ for ( i=0; i<sf->subfontcnt; ++i )
+ if ( cid<sf->subfonts[i]->glyphcnt &&
+ SCWorthOutputting(sf->subfonts[i]->glyphs[cid]) )
+return( i );
+ for ( i=0; i<sf->subfontcnt; ++i )
+ if ( cid<sf->subfonts[i]->glyphcnt && sf->subfonts[i]->glyphs[cid]!=NULL )
+return( i );
+
+return( -1 );
+}
+
+SplineChar *SFGetChar(SplineFont *sf, int unienc, const char *name ) {
+ // This function presumably finds a glyph matching the code or name supplied. Undefined code is unienc = -1. Undefined name is name = NULL.
+ int ind = -1;
+ int j;
+ char *pt, *start; int ch;
+
+ if ( name==NULL )
+ ind = SFCIDFindCID(sf,unienc,NULL);
+ else {
+ for ( start=(char *) name; *start==' '; ++start );
+ for ( pt=start; *pt!='\0' && *pt!='('; ++pt );
+ ch = *pt;
+ // We truncate any glyph name before parentheses.
+ if ( ch=='\0' )
+ ind = SFCIDFindCID(sf,unienc,start);
+ else {
+ char *tmp;
+ if ( (tmp = copy(name)) ) {
+ tmp[pt-name] = '\0';
+ ind = SFCIDFindCID(sf,unienc,tmp+(start-name));
+ tmp[pt-name] = ch;
+ free(tmp);
+ }
+ }
+ }
+ if ( ind==-1 )
+ return( NULL );
+
+ // If the typeface is simple, return the result from the flat glyph collection.
+ if ( sf->subfonts==NULL && sf->cidmaster==NULL )
+ return( sf->glyphs[ind]);
+
+ if ( sf->cidmaster!=NULL )
+ sf=sf->cidmaster;
+
+ // Find a subfont that contains the glyph in question.
+ j = SFHasCID(sf,ind);
+ if ( j==-1 )
+ return( NULL );
+
+ return( sf->subfonts[j]->glyphs[ind] );
+}
+
+static int _SFFindExistingSlot(SplineFont *sf, int unienc, const char *name ) {
+ int gid = -1;
+ struct altuni *altuni;
+
+ if ( unienc!=-1 ) {
+ for ( gid=sf->glyphcnt-1; gid>=0; --gid ) if ( sf->glyphs[gid]!=NULL ) {
+ if ( sf->glyphs[gid]->unicodeenc==unienc )
+ break;
+ for ( altuni=sf->glyphs[gid]->altuni ; altuni!=NULL &&
+ (altuni->unienc!=unienc || altuni->vs!=-1 || altuni->fid!=0);
+ altuni=altuni->next );
+ if ( altuni!=NULL )
+ break;
+ }
+ }
+ if ( gid==-1 && name!=NULL ) {
+ SplineChar *sc = SFHashName(sf,name);
+ if ( sc==NULL )
+return( -1 );
+ gid = sc->orig_pos;
+ if ( gid<0 || gid>=sf->glyphcnt ) {
+ IError("Invalid glyph location when searching for %s", name );
+return( -1 );
+ }
+ }
+return( gid );
+}
+
+int SFFindExistingSlot(SplineFont *sf, int unienc, const char *name ) {
+ int gid = _SFFindExistingSlot(sf,unienc,name);
+
+ if ( gid==-1 || !SCWorthOutputting(sf->glyphs[gid]) )
+return( -1 );
+
+return( gid );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/gwwiconv.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/gwwiconv.c
new file mode 100644
index 00000000000..5524662f94a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/gwwiconv.c
@@ -0,0 +1,797 @@
+/* Copyright (C) 2004-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#include <gwwiconv.h>
+#include <charset.h>
+#include <chardata.h>
+#include <string.h>
+#include <ustring.h>
+#include <stdio.h>
+
+#ifndef HAVE_ICONV_H
+
+/* I have written an limited iconv which will convert either to or from unichar_t */
+/* (either UCS2 or UCS4) */
+/* it will not convert latin1 to latin2, but latin1->UCS2, UCS2->latin2 */
+/* it uses the encodings built into libgunicode for systems with no iconv */
+/* (ie. macs before 10.3, perhaps others) */
+
+struct gww_iconv_t {
+ enum encoding from;
+ enum encoding to;
+};
+
+enum extended_encoding { e_jisgbpk = e_encodingmax };
+
+static enum endian { end_big, end_little, end_unknown } endian = end_unknown;
+
+static void endian_detector(void) {
+ union { short s; char c[2]; } u;
+
+ u.s = 0x0102;
+ if ( u.c[0]==0x1 )
+ endian = end_big;
+ else
+ endian = end_little;
+}
+
+static enum encoding name_to_enc(const char *encname) {
+ struct { const char *name; enum encoding enc; } map[] = {
+ { "UCS-2-INTERNAL", e_unicode },
+ { "UCS2", e_unicode },
+ { "UCS-2", e_unicode },
+ { "UCS-2LE", e_unicode },
+ { "UCS-2BE", e_unicode },
+ { "UNICODELITTLE", e_unicode },
+ { "UNICODEBIG", e_unicode },
+ { "ISO-10646/UCS2", e_unicode },
+ { "ISO-10646/USC2", e_unicode }, /* Old typo */
+ { "UCS4", e_ucs4 },
+ { "UCS-4", e_ucs4 },
+ { "UCS-4LE", e_ucs4 },
+ { "UCS-4BE", e_ucs4 },
+ { "UCS-4-INTERNAL", e_ucs4 },
+ { "ISO-10646/UCS4", e_ucs4 },
+ { "iso8859-1", e_iso8859_1 },
+ { "iso8859-2", e_iso8859_2 },
+ { "iso8859-3", e_iso8859_3 },
+ { "iso8859-4", e_iso8859_4 },
+ { "iso8859-5", e_iso8859_5 },
+ { "iso8859-6", e_iso8859_6 },
+ { "iso8859-7", e_iso8859_7 },
+ { "iso8859-8", e_iso8859_8 },
+ { "iso8859-9", e_iso8859_9 },
+ { "iso8859-10", e_iso8859_10 },
+ { "iso8859-11", e_iso8859_11 },
+ { "iso8859-13", e_iso8859_13 },
+ { "iso8859-14", e_iso8859_14 },
+ { "iso8859-15", e_iso8859_15 },
+ { "iso-8859-1", e_iso8859_1 },
+ { "iso-8859-2", e_iso8859_2 },
+ { "iso-8859-3", e_iso8859_3 },
+ { "iso-8859-4", e_iso8859_4 },
+ { "iso-8859-5", e_iso8859_5 },
+ { "iso-8859-6", e_iso8859_6 },
+ { "iso-8859-7", e_iso8859_7 },
+ { "iso-8859-8", e_iso8859_8 },
+ { "iso-8859-9", e_iso8859_9 },
+ { "iso-8859-10", e_iso8859_10 },
+ { "iso-8859-11", e_iso8859_11 },
+ { "iso-8859-13", e_iso8859_13 },
+ { "iso-8859-14", e_iso8859_14 },
+ { "iso-8859-15", e_iso8859_15 },
+ { "koi8-r", e_koi8_r },
+ { "jis201", e_jis201 },
+ { "mac", e_mac },
+ { "Macintosh", e_mac },
+ { "MS-ANSI", e_win },
+ { "EUC-KR", e_wansung },
+ { "johab", e_johab },
+ { "ISO-2022-KR", e_jiskorean },
+ { "ISO-2022-CN", e_jisgb },
+ { "EUC-CN", e_jisgbpk },
+ { "big5", e_big5 },
+ { "big5hkscs", e_big5hkscs },
+ { "ISO-2022-JP", e_jis },
+ { "ISO-2022-JP-2", e_jis2 },
+ { "Sjis", e_sjis },
+ { "UTF-8", e_utf8 },
+ { "UTF8", e_utf8 },
+ { NULL }};
+ int i;
+
+ for ( i=0; map[i].name!=NULL; ++i )
+ if ( strmatch(map[i].name,encname)==0 )
+return( map[i].enc );
+
+return( -1 );
+}
+
+gww_iconv_t gww_iconv_open(const char *toenc,const char *fromenc) {
+ struct gww_iconv_t stuff, *ret;
+
+ if ( endian==end_unknown )
+ endian_detector();
+
+ stuff.from = name_to_enc(fromenc);
+ stuff.to = name_to_enc(toenc);
+ if ( stuff.from==(enum encoding) -1 || stuff.to==(enum encoding) -1 ) {
+ /*fprintf( stderr, "Unknown encoding\n" );*/
+return( (iconv_t)(-1) );
+ } else if ( stuff.from!=e_ucs4 && stuff.to!=e_ucs4 ) {
+ fprintf( stderr, "Bad call to gww_iconv_open, neither arg is UCS4\n" );
+return( (iconv_t)(-1) );
+ }
+
+ ret = malloc(sizeof(struct gww_iconv_t));
+ *ret = stuff;
+return( ret );
+}
+
+void gww_iconv_close( gww_iconv_t cd) {
+ free(cd);
+}
+
+size_t gww_iconv( gww_iconv_t _cd,
+ char **inbuf, size_t *inlen,
+ char **outbuf, size_t *outlen) {
+ struct gww_iconv_t *cd = _cd;
+ int char_cnt = 0;
+ unsigned char *plane;
+ int ch;
+
+ if ( inbuf==NULL || outbuf==NULL || inlen==NULL || outlen==NULL ||
+ *inbuf==NULL || *outbuf==NULL )
+return( 0 ); /* Legal, used to reset the state. As we don't do states, irrelevant */
+
+ if ( cd->from<0 || cd->from>e_encodingmax || cd->to<0 || cd->to>e_encodingmax ) {
+ fprintf( stderr, "Garbage encoding passed to gww_iconv()\n" );
+return( (size_t) -1 );
+ }
+
+ if ( cd->from==e_unicode ) {
+ if ( cd->to==e_unicode ) {
+ int min = *inlen < *outlen ? *inlen : *outlen;
+ min &= ~1;
+ memcpy(*inbuf,*outbuf,min);
+ char_cnt = min/sizeof(short);
+ *inbuf += min; *outbuf += min;
+ *inlen -= min; *outlen -= min;
+ if ( *inlen==1 && *outlen>0 )
+return( (size_t) -1 ); /* Incomplete multi-byte sequence */
+ } else if ( cd->to==e_ucs4 ) {
+ int min = *inlen/sizeof(short) < *outlen/sizeof(int32) ? *inlen/sizeof(short) : *outlen/sizeof(int32);
+ int highch, lowch;
+ if ( endian == end_little ) {
+ while ( *inlen>=sizeof(short) && *outlen>=sizeof(int32) ) {
+ highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf;
+ ((uint8 *) outbuf)[3] = 0; ((uint8 *) outbuf)[2] = 0;
+ ((uint8 *) outbuf)[1] = highch; ((uint8 *) outbuf)[0] = lowch;
+ outbuf += sizeof(int32); inbuf += sizeof(short);
+ *outlen -= sizeof(int32); *inlen -= sizeof(short);
+ }
+ } else {
+ while ( *inlen>=sizeof(short) && *outlen>=sizeof(int32) ) {
+ highch = ((unsigned char *) *inbuf)[0], lowch = ((unsigned char *) *inbuf)[1];
+ ((uint8 *) outbuf)[0] = 0; ((uint8 *) outbuf)[1] = 0;
+ ((uint8 *) outbuf)[2] = highch; ((uint8 *) outbuf)[3] = lowch;
+ outbuf += sizeof(int32); inbuf += sizeof(short);
+ *outlen -= sizeof(int32); *inlen -= sizeof(short);
+ }
+ }
+ char_cnt = min;
+ if ( *inlen==1 && *outlen>0 )
+return( (size_t) -1 ); /* Incomplete multi-byte sequence */
+ } else if ( cd->to<e_first2byte ) {
+ struct charmap *table = NULL;
+ table = alphabets_from_unicode[cd->to];
+ while ( *inlen>1 && *outlen>0 ) {
+ int highch, lowch;
+ if ( endian == end_little ) {
+ highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf;
+ } else {
+ highch = *(unsigned char *) *inbuf, lowch = ((unsigned char *) *inbuf)[1];
+ }
+ if ( highch>=table->first && highch<=table->last &&
+ (plane = table->table[highch])!=NULL &&
+ (ch=plane[lowch])!=0 ) {
+ *((*outbuf)++) = ch;
+ -- *outlen;
+ *inlen -= 2;
+ *inbuf += 2;
+ ++char_cnt;
+ } else
+return( (size_t) -1 );
+ }
+ } else if ( cd->to==e_utf8 ) {
+ while ( *inlen>1 && *outlen>0 ) {
+ unichar_t uch;
+ if ( endian == end_little ) {
+ uch = (((unsigned char *) *inbuf)[1]<<8) | (*((unsigned char *) *inbuf));
+ } else {
+ uch = (*((unsigned char *) *inbuf)<<8) | (((unsigned char *) *inbuf)[1]);
+ }
+ if ( uch < 0x80 ) {
+ *((*outbuf)++) = uch;
+ --*outlen;
+ } else if ( uch<0x800 ) {
+ if ( *outlen==1 )
+return( (size_t) -1 );
+ *((*outbuf)++) = 0xc0 | (uch>>6);
+ *((*outbuf)++) = 0x80 | (uch&0x3f);
+ *outlen-=2;
+ } else { /* I'm not dealing with */
+ if ( *outlen<=2 )
+return( (size_t) -1 );
+ *((*outbuf)++) = 0xe0 | (uch>>12);
+ *((*outbuf)++) = 0x80 | ((uch>>6)&0x3f);
+ *((*outbuf)++) = 0x80 | (uch&0x3f);
+ *outlen-=3;
+ }
+ *inbuf += 2;
+ *inlen -= 2;
+ ++char_cnt;
+ }
+ } else {
+ fprintf( stderr, "Unexpected encoding\n" );
+return( (size_t) -1 );
+ }
+ } else if ( cd->from==e_ucs4 ) {
+ if ( cd->to==e_unicode ) {
+ int min = *inlen/sizeof(int32) < *outlen/sizeof(int16) ? *inlen/sizeof(int32) : *outlen/sizeof(int16);
+ int highch, lowch;
+ if ( endian == end_little ) {
+ while ( *inlen>=sizeof(short) && *outlen>=sizeof(int32) ) {
+ highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf;
+ ((uint8 *) outbuf)[1] = highch; ((uint8 *) outbuf)[0] = lowch;
+ outbuf += sizeof(int16); inbuf += sizeof(int32);
+ *outlen -= sizeof(int16); *inlen -= sizeof(int32);
+ }
+ } else {
+ while ( *inlen>=sizeof(short) && *outlen>=sizeof(int32) ) {
+ highch = ((unsigned char *) *inbuf)[2], lowch = ((unsigned char *) *inbuf)[3];
+ ((uint8 *) outbuf)[0] = highch; ((uint8 *) outbuf)[1] = lowch;
+ outbuf += sizeof(int16); inbuf += sizeof(int32);
+ *outlen -= sizeof(int16); *inlen -= sizeof(int32);
+ }
+ }
+ char_cnt = min;
+ if ( *inlen>0 && *outlen>0 )
+return( (size_t) -1 ); /* Incomplete multi-byte sequence */
+ } else if ( cd->to<e_first2byte ) {
+ struct charmap *table = NULL;
+ table = alphabets_from_unicode[cd->to];
+ while ( *inlen>1 && *outlen>0 ) {
+ int highch, lowch;
+ if ( endian == end_little ) {
+ highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf;
+ } else {
+ highch = ((unsigned char *) *inbuf)[2], lowch = ((unsigned char *) *inbuf)[3];
+ }
+ if ( highch>=table->first && highch<=table->last &&
+ (plane = table->table[highch])!=NULL &&
+ (ch=plane[lowch])!=0 ) {
+ *((*outbuf)++) = ch;
+ -- *outlen;
+ *inlen -= 4;
+ *inbuf += 4;
+ ++char_cnt;
+ } else
+return( (size_t) -1 );
+ }
+ } else if ( cd->to==e_utf8 ) {
+ while ( *inlen>1 && *outlen>0 ) {
+ int uch;
+ if ( endian == end_little ) {
+ uch = (((unsigned char *) *inbuf)[3]<<24) |
+ (((unsigned char *) *inbuf)[2]<<16) |
+ (((unsigned char *) *inbuf)[1]<<8) |
+ (*((unsigned char *) *inbuf));
+ } else {
+ uch = (*((unsigned char *) *inbuf)<<24) |
+ (((unsigned char *) *inbuf)[1]<<16) |
+ (((unsigned char *) *inbuf)[2]<<8) |
+ (((unsigned char *) *inbuf)[3]);
+ }
+ if ( uch < 0x80 ) {
+ *((*outbuf)++) = uch;
+ --*outlen;
+ } else if ( uch<0x800 ) {
+ if ( *outlen==1 )
+return( (size_t) -1 );
+ *((*outbuf)++) = 0xc0 | (uch>>6);
+ *((*outbuf)++) = 0x80 | (uch&0x3f);
+ *outlen-=2;
+ } else if ( uch < 0x10000 ) {
+ if ( *outlen<=2 )
+return( (size_t) -1 );
+ *((*outbuf)++) = 0xe0 | (uch>>12);
+ *((*outbuf)++) = 0x80 | ((uch>>6)&0x3f);
+ *((*outbuf)++) = 0x80 | (uch&0x3f);
+ *outlen-=3;
+ } else {
+ uint32 val = uch-0x10000;
+ int u = ((val&0xf0000)>>16)+1, z=(val&0x0f000)>>12, y=(val&0x00fc0)>>6, x=val&0x0003f;
+ if ( *outlen<=3 )
+return( (size_t) -1 );
+ *(*outbuf)++ = 0xf0 | (u>>2);
+ *(*outbuf)++ = 0x80 | ((u&3)<<4) | z;
+ *(*outbuf)++ = 0x80 | y;
+ *(*outbuf)++ = 0x80 | x;
+ *outlen-=4;
+ }
+ *inbuf += 4;
+ *inlen -= 4;
+ ++char_cnt;
+ }
+ } else {
+ fprintf( stderr, "Unexpected encoding\n" );
+return( (size_t) -1 );
+ }
+ } else if ( cd->to==e_unicode ) {
+ const unichar_t *table;
+ if ( cd->from<e_first2byte ) {
+ table = unicode_from_alphabets[cd->from];
+ while ( *inlen>0 && *outlen>1 ) {
+ unichar_t ch = table[ *(unsigned char *) ((*inbuf)++)];
+ --*inlen;
+ if ( endian==end_little ) {
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ } else {
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ }
+ *outlen -= sizeof(unichar_t);
+ ++char_cnt;
+ }
+ } else if ( cd->from==e_jis || cd->from==e_jis2 ||
+ cd->from==e_jiskorean || cd->from==e_jisgb ) {
+ table = cd->from==e_jisgb ? unicode_from_gb2312 :
+ cd->from==e_jiskorean ? unicode_from_ksc5601 :
+ cd->from==e_jis ? unicode_from_jis208 :
+ unicode_from_jis212;
+ while ( *inlen>1 && *outlen>1 ) {
+ unsigned char *ipt = (unsigned char *) *inbuf;
+ int ch;
+ if ( *ipt<0x21 || *ipt>0x7e || ipt[1]<0x21 || ipt[1]>0x7e )
+return( (size_t) -1 );
+ ch = (*ipt-0x21)*94 + (ipt[1]-0x21);
+ ch = table[ch];
+ *inlen -= 2;
+ *inbuf = (char *) ipt+2;
+ if ( endian==end_little ) {
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ } else {
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ }
+ *outlen -= sizeof(unichar_t);
+ ++char_cnt;
+ }
+ if ( *inlen==1 && *outlen>0 )
+return( (size_t) -1 ); /* Incomplete multi-byte sequence */
+ } else if ( cd->from==e_wansung || cd->from==e_jisgbpk ) {
+ table = cd->from==e_jisgbpk ? unicode_from_gb2312 :
+ unicode_from_ksc5601 ;
+ while ( *inlen>0 && *outlen>1 ) {
+ unsigned char *ipt = (unsigned char *) *inbuf;
+ int ch;
+ if ( *ipt<0x7f ) {
+ ch = *ipt;
+ --*inlen;
+ *inbuf = (char *) ipt+1;
+ } else {
+ if ( *ipt<0xa1 || *ipt>0xfe || ipt[1]<0xa1 || ipt[1]>0xfe ||
+ *inlen==1 )
+return( (size_t) -1 );
+ ch = (*ipt-0xa1)*94 + (ipt[1]-0xa1);
+ ch = table[ch];
+ *inlen -= 2;;
+ *inbuf = (char *) ipt+2;
+ }
+ if ( endian==end_little ) {
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ } else {
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ }
+ *outlen -= sizeof(unichar_t);
+ ++char_cnt;
+ }
+ } else if ( cd->from==e_johab || cd->from==e_big5 || cd->from==e_big5hkscs ) {
+ int offset;
+ if ( cd->from==e_big5 ) {
+ offset = 0xa100;
+ table = unicode_from_big5;
+ } else if ( cd->from==e_big5hkscs ) {
+ offset = 0x8100;
+ table = unicode_from_big5hkscs;
+ } else {
+ offset = 0x8400;
+ table = unicode_from_johab;
+ }
+ while ( *inlen>0 && *outlen>1 ) {
+ unsigned char *ipt = (unsigned char *) *inbuf;
+ int ch;
+ if ( *ipt<0x7f ) {
+ ch = *ipt;
+ --*inlen;
+ *inbuf = (char *) ipt+1;
+ } else {
+ if ( *inlen==1 )
+return( (size_t) -1 );
+ ch = (*ipt<<8) | ipt[1];
+ if ( ch<offset )
+return( (size_t) -1 );
+ ch -= offset;
+ ch = table[ch];
+ *inlen -= 2;
+ *inbuf = (char *) ipt+2;
+ }
+ if ( endian==end_little ) {
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ } else {
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ }
+ *outlen -= sizeof(unichar_t);
+ ++char_cnt;
+ }
+ } else if ( cd->from==e_sjis ) {
+ while ( *inlen>0 && *outlen>1 ) {
+ unsigned char *ipt = (unsigned char *) *inbuf;
+ int ch1 = *ipt;
+ if ( ch1<127 || ( ch1>=161 && ch1<=223 )) {
+ ch = unicode_from_jis201[ch1];
+ *inbuf = (char *) ipt+1;
+ --*inlen;
+ } else if ( *inlen==1 )
+return( (size_t) -1 );
+ else {
+ int ch2 = ipt[1];
+ if ( ch1 >= 129 && ch1<= 159 )
+ ch1 -= 112;
+ else
+ ch1 -= 176;
+ ch1 <<= 1;
+ if ( ch2>=159 )
+ ch2-= 126;
+ else if ( ch2>127 ) {
+ --ch1;
+ ch2 -= 32;
+ } else {
+ --ch1;
+ ch2 -= 31;
+ }
+ if ( ch1-0x21>=94 || ch2-0x21>=94 )
+return( (size_t) -1 );
+ ch = unicode_from_jis208[(ch1-0x21)*94+(ch2-0x21)];
+ *inlen -= 2;
+ *inbuf = (char *) ipt+2;
+ }
+ if ( endian==end_little ) {
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ } else {
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ }
+ *outlen -= sizeof(unichar_t);
+ ++char_cnt;
+ }
+ } else if ( cd->from==e_utf8 ) {
+ while ( *inlen>0 && *outlen>sizeof(unichar_t) ) {
+ unsigned char *ipt = (unsigned char *) *inbuf;
+ int ch = *ipt;
+ if ( ch <= 127 ) {
+ *inbuf = (char *) ipt+1;
+ --*inlen;
+ } else if ( ch<=0xdf ) {
+ if ( *inlen<2 || ipt[1]<0x80 )
+return( (size_t) -1 );
+ ch = ((ch&0x1f)<<6) | (ipt[1] &0x3f);
+ *inlen -= 2;
+ *inbuf = (char *) ipt+2;
+ } else if ( ch<=0xef ) {
+ if ( *inlen<3 || ipt[1]<0x80 || ipt[2]<0x80 )
+return( (size_t) -1 );
+ ch = ((ch&0x1f)<<12) | ((ipt[1] &0x3f)<<6) | (ipt[2]&0x3f);
+ *inlen -= 3;
+ *inbuf = (char *) ipt+3;
+ } else {
+ int w;
+ if ( *inlen<4 || *outlen<4 || ipt[1]<0x80 || ipt[2]<0x80 || ipt[3]<0x80 )
+return( (size_t) -1 );
+ w = ( ((ch&0x7)<<2) | ((ipt[1]&0x30)>>4) )-1;
+ ch = 0xd800 | (w<<6) | ((ipt[1]&0xf)<<2) | ((ipt[2]&0x30)>>4);
+ if ( endian==end_little ) {
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ } else {
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ }
+ *outlen -= 2;
+ ch = 0xdc00 | ((ipt[2]&0xf)<<6) | (ipt[3]&0x3f);
+ }
+ if ( endian==end_little ) {
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ } else {
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ }
+ *outlen -= sizeof(unichar_t);
+ ++char_cnt;
+ }
+ } else {
+ fprintf( stderr, "Unexpected encoding\n" );
+return( (size_t) -1 );
+ }
+ } else if ( cd->to==e_ucs4 ) {
+ const unichar_t *table;
+ if ( cd->from<e_first2byte ) {
+ table = unicode_from_alphabets[cd->from];
+ while ( *inlen>0 && *outlen>1 ) {
+ unichar_t ch = table[ *(unsigned char *) ((*inbuf)++)];
+ --*inlen;
+ if ( endian==end_little ) {
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ } else {
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = 0;
+ }
+ *outlen -= sizeof(unichar_t);
+ ++char_cnt;
+ }
+ } else if ( cd->from==e_jis || cd->from==e_jis2 ||
+ cd->from==e_jiskorean || cd->from==e_jisgb ) {
+ table = cd->from==e_jisgb ? unicode_from_gb2312 :
+ cd->from==e_jiskorean ? unicode_from_ksc5601 :
+ cd->from==e_jis ? unicode_from_jis208 :
+ unicode_from_jis212;
+ while ( *inlen>1 && *outlen>1 ) {
+ unsigned char *ipt = (unsigned char *) *inbuf;
+ int ch;
+ if ( *ipt<0x21 || *ipt>0x7e || ipt[1]<0x21 || ipt[1]>0x7e )
+return( (size_t) -1 );
+ ch = (*ipt-0x21)*94 + (ipt[1]-0x21);
+ ch = table[ch];
+ *inlen -= 2;
+ *inbuf = (char *) ipt+2;
+ if ( endian==end_little ) {
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ } else {
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = 0;
+ }
+ *outlen -= sizeof(unichar_t);
+ ++char_cnt;
+ }
+ if ( *inlen==1 && *outlen>0 )
+return( (size_t) -1 ); /* Incomplete multi-byte sequence */
+ } else if ( cd->from==e_wansung || cd->from==e_jisgbpk ) {
+ table = cd->from==e_jisgbpk ? unicode_from_gb2312 :
+ unicode_from_ksc5601 ;
+ while ( *inlen>0 && *outlen>1 ) {
+ unsigned char *ipt = (unsigned char *) *inbuf;
+ int ch;
+ if ( *ipt<0x7f ) {
+ ch = *ipt;
+ --*inlen;
+ *inbuf = (char *) ipt+1;
+ } else {
+ if ( *ipt<0xa1 || *ipt>0xfe || ipt[1]<0xa1 || ipt[1]>0xfe ||
+ *inlen==1 )
+return( (size_t) -1 );
+ ch = (*ipt-0xa1)*94 + (ipt[1]-0xa1);
+ ch = table[ch];
+ *inlen -= 2;;
+ *inbuf = (char *) ipt+2;
+ }
+ if ( endian==end_little ) {
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ } else {
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = 0;
+ }
+ *outlen -= sizeof(unichar_t);
+ ++char_cnt;
+ }
+ } else if ( cd->from==e_johab || cd->from==e_big5 || cd->from==e_big5hkscs ) {
+ int offset;
+ if ( cd->from==e_big5 ) {
+ offset = 0xa100;
+ table = unicode_from_big5;
+ } else if ( cd->from==e_big5hkscs ) {
+ offset = 0x8100;
+ table = unicode_from_big5hkscs;
+ } else {
+ offset = 0x8400;
+ table = unicode_from_johab;
+ }
+ while ( *inlen>0 && *outlen>1 ) {
+ unsigned char *ipt = (unsigned char *) *inbuf;
+ int ch;
+ if ( *ipt<0x7f ) {
+ ch = *ipt;
+ --*inlen;
+ *inbuf = (char *) ipt+1;
+ } else {
+ if ( *inlen==1 )
+return( (size_t) -1 );
+ ch = (*ipt<<8) | ipt[1];
+ if ( ch<offset )
+return( (size_t) -1 );
+ ch -= offset;
+ ch = table[ch];
+ *inlen -= 2;
+ *inbuf = (char *) ipt+2;
+ }
+ if ( endian==end_little ) {
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ } else {
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = 0;
+ }
+ *outlen -= sizeof(unichar_t);
+ ++char_cnt;
+ }
+ } else if ( cd->from==e_sjis ) {
+ while ( *inlen>0 && *outlen>1 ) {
+ unsigned char *ipt = (unsigned char *) *inbuf;
+ int ch1 = *ipt;
+ if ( ch1<127 || ( ch1>=161 && ch1<=223 )) {
+ ch = unicode_from_jis201[ch1];
+ *inbuf = (char *) ipt+1;
+ --*inlen;
+ } else if ( *inlen==1 )
+return( (size_t) -1 );
+ else {
+ int ch2 = ipt[1];
+ if ( ch1 >= 129 && ch1<= 159 )
+ ch1 -= 112;
+ else
+ ch1 -= 176;
+ ch1 <<= 1;
+ if ( ch2>=159 )
+ ch2-= 126;
+ else if ( ch2>127 ) {
+ --ch1;
+ ch2 -= 32;
+ } else {
+ --ch1;
+ ch2 -= 31;
+ }
+ if ( ch1-0x21>=94 || ch2-0x21>=94 )
+return( (size_t) -1 );
+ ch = unicode_from_jis208[(ch1-0x21)*94+(ch2-0x21)];
+ *inlen -= 2;
+ *inbuf = (char *) ipt+2;
+ }
+ if ( endian==end_little ) {
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ } else {
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = 0;
+ *((*outbuf)++) = 0;
+ }
+ *outlen -= sizeof(unichar_t);
+ ++char_cnt;
+ }
+ } else if ( cd->from==e_utf8 ) {
+ while ( *inlen>0 && *outlen>sizeof(unichar_t) ) {
+ unsigned char *ipt = (unsigned char *) *inbuf;
+ int ch = *ipt;
+ if ( ch <= 127 ) {
+ *inbuf = (char *) ipt+1;
+ --*inlen;
+ } else if ( ch<=0xdf ) {
+ if ( *inlen<2 || ipt[1]<0x80 )
+return( (size_t) -1 );
+ ch = ((ch&0x1f)<<6) | (ipt[1] &0x3f);
+ *inlen -= 2;
+ *inbuf = (char *) ipt+2;
+ } else if ( ch<=0xef ) {
+ if ( *inlen<3 || ipt[1]<0x80 || ipt[2]<0x80 )
+return( (size_t) -1 );
+ ch = ((ch&0x1f)<<12) | ((ipt[1] &0x3f)<<6) | (ipt[2]&0x3f);
+ *inlen -= 3;
+ *inbuf = (char *) ipt+3;
+ } else {
+ int w,w2;
+ w = ( ((*ipt&0x7)<<2) | ((ipt[1]&0x30)>>4) )-1;
+ w = (w<<6) | ((ipt[1]&0xf)<<2) | ((ipt[2]&0x30)>>4);
+ w2 = ((ipt[2]&0xf)<<6) | (ipt[3]&0x3f);
+ ch = w*0x400 + w2 + 0x10000;
+ *inbuf = (char *) ipt+4;
+ }
+ if ( endian==end_little ) {
+ *((*outbuf)++) = ch&0xff;
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch>>16;
+ *((*outbuf)++) = ch>>24;
+ } else {
+ *((*outbuf)++) = ch>>24;
+ *((*outbuf)++) = ch>>16;
+ *((*outbuf)++) = ch>>8;
+ *((*outbuf)++) = ch&0xff;
+ }
+ *outlen -= sizeof(unichar_t);
+ ++char_cnt;
+ }
+ } else {
+ fprintf( stderr, "Unexpected encoding\n" );
+return( (size_t) -1 );
+ }
+ } else {
+ fprintf( stderr, "One of the two encodings must be UCS2 in gww_iconv()\n" );
+return( (size_t) -1 );
+ }
+
+ if ( *outlen>=1 ) {
+ **outbuf = '\0';
+ if ( *outlen>1 )
+ (*outbuf)[1] = '\0';
+ if ( cd->to==e_ucs4 && *outlen>3 ) {
+ (*outbuf)[2] = '\0';
+ (*outbuf)[3] = '\0';
+ }
+ }
+return( char_cnt );
+}
+#else
+static const int a_file_must_define_something=1;
+#endif /* HAVE_ICONV_H */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/libffstamp.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/libffstamp.h
new file mode 100644
index 00000000000..bde3a031ba2
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/libffstamp.h
@@ -0,0 +1,8 @@
+/* This file was generated using stamper.c to create the next version release. */
+/* If you need to update this to the next release version, see fontforge/GNUmakefile.in */
+
+#include "fontforge-config.h"
+
+#define LibFF_ModTime FONTFORGE_MODTIME_RAW /* Seconds since 1970 (standard unix time) */
+#define LibFF_ModTime_Str FONTFORGE_MODTIME_STR
+#define LibFF_VersionDate FONTFORGE_VERSIONDATE_RAW /* Year, month, day */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/lookups.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/lookups.c
new file mode 100644
index 00000000000..466a05e3991
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/lookups.c
@@ -0,0 +1,679 @@
+/* -*- coding: utf-8 -*- */
+/* Copyright (C) 2007-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h"
+
+static int uint32_cmp(const void *_ui1, const void *_ui2) {
+ if ( *(uint32 *) _ui1 > *(uint32 *)_ui2 )
+return( 1 );
+ if ( *(uint32 *) _ui1 < *(uint32 *)_ui2 )
+return( -1 );
+
+return( 0 );
+}
+
+static int lang_cmp(const void *_ui1, const void *_ui2) {
+ /* The default language is magic, and should come first in the list even */
+ /* if that is not true alphabetical order */
+ if ( *(uint32 *) _ui1 == DEFAULT_LANG )
+return( -1 );
+ if ( *(uint32 *) _ui2 == DEFAULT_LANG )
+return( 1 );
+
+ if ( *(uint32 *) _ui1 > *(uint32 *)_ui2 )
+return( 1 );
+ if ( *(uint32 *) _ui1 < *(uint32 *)_ui2 )
+return( -1 );
+
+return( 0 );
+}
+
+uint32 *SFScriptsInLookups(SplineFont *sf,int gpos) {
+ /* Presumes that either SFFindUnusedLookups or SFFindClearUnusedLookupBits */
+ /* has been called first */
+ /* Since MS will sometimes ignore a script if it isn't found in both */
+ /* GPOS and GSUB we want to return the same script list no matter */
+ /* what the setting of gpos ... so we totally ignore that argument */
+ /* and always look at both sets of lookups */
+
+/* Sergey Malkin from MicroSoft tells me:
+ Each shaping engine in Uniscribe can decide on its requirements for
+ layout tables - some of them require both GSUB and GPOS, in some cases
+ any table present is enough, or it can work without any table.
+
+ Sometimes, purpose of the check is to determine if font is supporting
+ particular script - if required tables are not there font is just
+ rejected by this shaping engine. Sometimes, shaping engine can not just
+ reject the font because there are fonts using older shaping technologies
+ we still have to support, so it uses some logic when to fallback to
+ legacy layout code.
+
+ In your case this is Hebrew, where both tables are required to use
+ OpenType processing. Arabic requires both tables too, Latin requires
+ GSUB to execute GPOS. But in general, if you have both tables you should
+ be safe with any script to get fully featured OpenType shaping.
+
+In other words, if we have a Hebrew font with just GPOS features they won't work,
+and MS will not use the font at all. We must add a GSUB table. In the unlikely
+event that we had a hebrew font with only GSUB it would not work either.
+
+So if we want our lookups to have a chance of executing under Uniscribe we
+better make sure that both tables have the same script set.
+
+(Sergey says we could optimize a little: A Latin GSUB table will run without
+a GPOS, but he says the GPOS won't work without a GSUB.)
+*/
+ int cnt=0, tot=0, i;
+ uint32 *scripts = NULL;
+ OTLookup *test;
+ FeatureScriptLangList *fl;
+ struct scriptlanglist *sl;
+
+ /* So here always give scripts for both (see comment above) no */
+ /* matter what they asked for */
+ for ( gpos=0; gpos<2; ++gpos ) {
+ for ( test = gpos ? sf->gpos_lookups : sf->gsub_lookups; test!=NULL; test = test->next ) {
+ if ( test->unused )
+ continue;
+ for ( fl=test->features; fl!=NULL; fl=fl->next ) {
+ if ( fl->ismac )
+ continue;
+ for ( sl=fl->scripts ; sl!=NULL; sl=sl->next ) {
+ for ( i=0; i<cnt; ++i ) {
+ if ( sl->script==scripts[i] )
+ break;
+ }
+ if ( i==cnt ) {
+ if ( cnt>=tot )
+ scripts = realloc(scripts,(tot+=10)*sizeof(uint32));
+ scripts[cnt++] = sl->script;
+ }
+ }
+ }
+ }
+ }
+
+ if ( cnt==0 )
+return( NULL );
+
+ /* We want our scripts in alphabetic order */
+ qsort(scripts,cnt,sizeof(uint32),uint32_cmp);
+ /* add a 0 entry to mark the end of the list */
+ if ( cnt>=tot )
+ scripts = realloc(scripts,(tot+1)*sizeof(uint32));
+ scripts[cnt] = 0;
+return( scripts );
+}
+
+uint32 *SFLangsInScript(SplineFont *sf,int gpos,uint32 script) {
+ /* However, the language lists (I think) are distinct */
+ /* But giving a value of -1 for gpos will give us the set of languages in */
+ /* both tables (for this script) */
+ int cnt=0, tot=0, i, g, l;
+ uint32 *langs = NULL;
+ OTLookup *test;
+ FeatureScriptLangList *fl;
+ struct scriptlanglist *sl;
+
+ for ( g=0; g<2; ++g ) {
+ if (( gpos==0 && g==1 ) || ( gpos==1 && g==0 ))
+ continue;
+ for ( test = g ? sf->gpos_lookups : sf->gsub_lookups; test!=NULL; test = test->next ) {
+ if ( test->unused )
+ continue;
+ for ( fl=test->features; fl!=NULL; fl=fl->next ) {
+ for ( sl=fl->scripts ; sl!=NULL; sl=sl->next ) {
+ if ( sl->script==script ) {
+ for ( l=0; l<sl->lang_cnt; ++l ) {
+ uint32 lang;
+ if ( l<MAX_LANG )
+ lang = sl->langs[l];
+ else
+ lang = sl->morelangs[l-MAX_LANG];
+ for ( i=0; i<cnt; ++i ) {
+ if ( lang==langs[i] )
+ break;
+ }
+ if ( i==cnt ) {
+ if ( cnt>=tot )
+ langs = realloc(langs,(tot+=10)*sizeof(uint32));
+ langs[cnt++] = lang;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if ( cnt==0 ) {
+ /* We add dummy script entries. Because Uniscribe will refuse to */
+ /* process some scripts if they don't have an entry in both GPOS */
+ /* an GSUB. So if a script appears in either table, force it to */
+ /* appear in both. That means we can get scripts with no lookups */
+ /* and hence no languages. It seems that Uniscribe doesn't like */
+ /* that either. So give each such script a dummy default language */
+ /* entry. This is what VOLT does */
+ langs = calloc(2,sizeof(uint32));
+ langs[0] = DEFAULT_LANG;
+return( langs );
+ }
+
+ /* We want our languages in alphabetic order */
+ qsort(langs,cnt,sizeof(uint32),lang_cmp);
+ /* add a 0 entry to mark the end of the list */
+ if ( cnt>=tot )
+ langs = realloc(langs,(tot+1)*sizeof(uint32));
+ langs[cnt] = 0;
+return( langs );
+}
+
+uint32 *SFFeaturesInScriptLang(SplineFont *sf,int gpos,uint32 script,uint32 lang) {
+ int cnt=0, tot=0, i, l, isg;
+ uint32 *features = NULL;
+ OTLookup *test;
+ FeatureScriptLangList *fl;
+ struct scriptlanglist *sl;
+ /* gpos==0 => GSUB, gpos==1 => GPOS, gpos==-1 => both, gpos==-2 => Both & morx & kern */
+
+ if ( sf->cidmaster ) sf=sf->cidmaster;
+ for ( isg = 0; isg<2; ++isg ) {
+ if ( gpos>=0 && isg!=gpos )
+ continue;
+ for ( test = isg ? sf->gpos_lookups : sf->gsub_lookups; test!=NULL; test = test->next ) {
+ if ( test->unused )
+ continue;
+ for ( fl=test->features; fl!=NULL; fl=fl->next ) {
+ if ( fl->ismac && gpos!=-2 )
+ continue;
+ if ( script==0xffffffff ) {
+ for ( i=0; i<cnt; ++i ) {
+ if ( fl->featuretag==features[i] )
+ break;
+ }
+ if ( i==cnt ) {
+ if ( cnt>=tot )
+ features = realloc(features,(tot+=10)*sizeof(uint32));
+ features[cnt++] = fl->featuretag;
+ }
+ } else for ( sl=fl->scripts ; sl!=NULL; sl=sl->next ) {
+ if ( sl->script==script ) {
+ int matched = false;
+ if ( fl->ismac && gpos==-2 )
+ matched = true;
+ else for ( l=0; l<sl->lang_cnt; ++l ) {
+ uint32 testlang;
+ if ( l<MAX_LANG )
+ testlang = sl->langs[l];
+ else
+ testlang = sl->morelangs[l-MAX_LANG];
+ if ( testlang==lang ) {
+ matched = true;
+ break;
+ }
+ }
+ if ( matched ) {
+ for ( i=0; i<cnt; ++i ) {
+ if ( fl->featuretag==features[i] )
+ break;
+ }
+ if ( i==cnt ) {
+ if ( cnt>=tot )
+ features = realloc(features,(tot+=10)*sizeof(uint32));
+ features[cnt++] = fl->featuretag;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if ( sf->design_size!=0 && gpos ) {
+ /* The 'size' feature is like no other. It has no lookups and so */
+ /* we will never find it in the normal course of events. If the */
+ /* user has specified a design size, then every script/lang combo */
+ /* gets a 'size' feature which contains no lookups but feature */
+ /* params */
+ if ( cnt>=tot )
+ features = realloc(features,(tot+=2)*sizeof(uint32));
+ features[cnt++] = CHR('s','i','z','e');
+ }
+
+ if ( cnt==0 )
+return( calloc(1,sizeof(uint32)) );
+
+ /* We don't care if our features are in alphabetical order here */
+ /* all that matters is whether the complete list of features is */
+ /* ordering here would be irrelevant */
+ /* qsort(features,cnt,sizeof(uint32),uint32_cmp); */
+
+ /* add a 0 entry to mark the end of the list */
+ if ( cnt>=tot )
+ features = realloc(features,(tot+1)*sizeof(uint32));
+ features[cnt] = 0;
+return( features );
+}
+
+OTLookup **SFLookupsInScriptLangFeature(SplineFont *sf,int gpos,uint32 script,uint32 lang, uint32 feature) {
+ int cnt=0, tot=0, l;
+ OTLookup **lookups = NULL;
+ OTLookup *test;
+ FeatureScriptLangList *fl;
+ struct scriptlanglist *sl;
+
+ for ( test = gpos ? sf->gpos_lookups : sf->gsub_lookups; test!=NULL; test = test->next ) {
+ if ( test->unused )
+ continue;
+ for ( fl=test->features; fl!=NULL; fl=fl->next ) {
+ if ( fl->featuretag==feature ) {
+ for ( sl=fl->scripts ; sl!=NULL; sl=sl->next ) {
+ if ( sl->script==script ) {
+ for ( l=0; l<sl->lang_cnt; ++l ) {
+ uint32 testlang;
+ if ( l<MAX_LANG )
+ testlang = sl->langs[l];
+ else
+ testlang = sl->morelangs[l-MAX_LANG];
+ if ( testlang==lang ) {
+ if ( cnt>=tot )
+ lookups = realloc(lookups,(tot+=10)*sizeof(OTLookup *));
+ lookups[cnt++] = test;
+ goto found;
+ }
+ }
+ }
+ }
+ }
+ }
+ found:;
+ }
+
+ if ( cnt==0 )
+return( NULL );
+
+ /* lookup order is irrelevant here. might as well leave it in invocation order */
+ /* add a 0 entry to mark the end of the list */
+ if ( cnt>=tot )
+ lookups = realloc(lookups,(tot+1)*sizeof(OTLookup *));
+ lookups[cnt] = 0;
+return( lookups );
+}
+
+static int LigaturesFirstComponentGID(SplineFont *sf,char *components) {
+ int gid, ch;
+ char *pt;
+
+ for ( pt = components; *pt!='\0' && *pt!=' '; ++pt );
+ ch = *pt; *pt = '\0';
+ gid = SFFindExistingSlot(sf,-1,components);
+ *pt = ch;
+return( gid );
+}
+
+static int PSTValid(SplineFont *sf,PST *pst) {
+ char *start, *pt, ch;
+ int ret;
+
+ switch ( pst->type ) {
+ case pst_position:
+return( true );
+ case pst_pair:
+return( SCWorthOutputting(SFGetChar(sf,-1,pst->u.pair.paired)) );
+ case pst_substitution: case pst_alternate: case pst_multiple:
+ case pst_ligature:
+ for ( start = pst->u.mult.components; *start ; ) {
+ for ( pt=start; *pt && *pt!=' '; ++pt );
+ ch = *pt; *pt = '\0';
+ ret = SCWorthOutputting(SFGetChar(sf,-1,start));
+ if ( !ret ) {
+ LogError(_("Lookup subtable contains unused glyph %s making the whole subtable invalid"), start);
+ *pt = ch;
+return( false );
+ }
+ *pt = ch;
+ if ( ch==0 )
+ start = pt;
+ else
+ start = pt+1;
+ }
+ default:
+ break;
+ }
+return( true );
+}
+
+SplineChar **SFGlyphsWithPSTinSubtable(SplineFont *sf,struct lookup_subtable *subtable) {
+ uint8 *used = calloc(sf->glyphcnt,sizeof(uint8));
+ SplineChar **glyphs, *sc;
+ int i, k, gid, cnt;
+ KernPair *kp;
+ PST *pst;
+ int ispair = subtable->lookup->lookup_type == gpos_pair;
+ int isliga = subtable->lookup->lookup_type == gsub_ligature;
+
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( SCWorthOutputting(sc = sf->glyphs[i]) ) {
+ if ( ispair ) {
+ for ( k=0; k<2; ++k ) {
+ for ( kp= k ? sc->kerns : sc->vkerns; kp!=NULL ; kp=kp->next ) {
+ if ( !SCWorthOutputting(kp->sc))
+ continue;
+ if ( kp->subtable == subtable ) {
+ used[i] = true;
+ goto continue_;
+ }
+ }
+ }
+ }
+ for ( pst=sc->possub; pst!=NULL; pst=pst->next ) {
+ if ( pst->subtable == subtable && PSTValid(sf,pst)) {
+ if ( !isliga ) {
+ used[i] = true;
+ goto continue_;
+ } else {
+ gid = LigaturesFirstComponentGID(sf,pst->u.lig.components);
+ pst->u.lig.lig = sc;
+ if ( gid!=-1 )
+ used[gid] = true;
+ /* can't continue here. ffi might be "f+f+i" and "ff+i" */
+ /* and we need to mark both "f" and "ff" as used */
+ }
+ }
+ }
+ continue_: ;
+ }
+
+ for ( i=cnt=0 ; i<sf->glyphcnt; ++i )
+ if ( used[i] )
+ ++cnt;
+
+ if ( cnt==0 ) {
+ free(used);
+return( NULL );
+ }
+ glyphs = malloc((cnt+1)*sizeof(SplineChar *));
+ for ( i=cnt=0 ; i<sf->glyphcnt; ++i ) {
+ if ( used[i] )
+ glyphs[cnt++] = sf->glyphs[i];
+ }
+ glyphs[cnt] = NULL;
+ free(used);
+return( glyphs );
+}
+
+static void TickLookupKids(OTLookup *otl) {
+ struct lookup_subtable *sub;
+ int i,j;
+
+ for ( sub=otl->subtables; sub!=NULL; sub=sub->next ) {
+ if ( sub->fpst!=NULL ) {
+ for ( i=0; i<sub->fpst->rule_cnt; ++i ) {
+ struct fpst_rule *rule = &sub->fpst->rules[i];
+ for ( j=0; j<rule->lookup_cnt; ++j ) {
+ if ( rule->lookups[j].lookup!=NULL )
+ rule->lookups[j].lookup->in_gpos = true;
+ }
+ }
+ }
+ }
+}
+
+void SFFindUnusedLookups(SplineFont *sf) {
+ OTLookup *test;
+ struct lookup_subtable *sub;
+ int gpos;
+ AnchorClass *ac;
+ AnchorPoint *ap;
+ SplineChar *sc;
+ KernPair *kp;
+ PST *pst;
+ int i,k,gid,isv;
+ SplineFont *_sf = sf;
+ Justify *jscripts;
+ struct jstf_lang *jlangs;
+
+ if ( _sf->cidmaster ) _sf = _sf->cidmaster;
+
+ /* Some things are obvious. If a subtable consists of a kernclass or some */
+ /* such, then obviously it is used. But more distributed info takes more */
+ /* work. So mark anything easy as used, and anything difficult as unused */
+ /* We'll work on the difficult things later */
+ for ( gpos=0; gpos<2; ++gpos ) {
+ for ( test = gpos ? _sf->gpos_lookups : _sf->gsub_lookups; test!=NULL; test = test->next ) {
+ for ( sub = test->subtables; sub!=NULL; sub=sub->next ) {
+ if ( sub->kc!=NULL || sub->fpst!=NULL || sub->sm!=NULL ) {
+ sub->unused = false;
+ continue;
+ }
+ sub->unused = true;
+ /* We'll turn the following bit back on if there turns out */
+ /* to be an anchor class attached to it -- that is subtly */
+ /* different than being unused -- unused will be set if all */
+ /* acs are unused, this bit will be on if there are unused */
+ /* classes that still refer to us. */
+ sub->anchor_classes = false;
+ }
+ }
+ }
+
+ /* To be useful an anchor class must have both at least one base and one mark */
+ /* (for cursive anchors that means at least one entry and at least one exit) */
+ /* Start by assuming the worst */
+ for ( ac = _sf->anchor; ac!=NULL; ac=ac->next )
+ ac->has_mark = ac->has_base = false;
+
+ /* Ok, for each glyph, look at all lookups (or anchor classes) it affects */
+ /* and mark the appropriate parts of them as used */
+ k = 0;
+ do {
+ sf = _sf->subfontcnt==0 ? _sf : _sf->subfonts[k];
+ for ( gid=0; gid<sf->glyphcnt; ++gid ) if ( SCWorthOutputting(sc = sf->glyphs[gid]) ) {
+ for ( ap=sc->anchor; ap!=NULL; ap=ap->next ) {
+ switch ( ap->type ) {
+ case at_mark: case at_centry:
+ ap->anchor->has_mark = true;
+ break;
+ case at_basechar: case at_baselig: case at_basemark:
+ case at_cexit:
+ ap->anchor->has_base = true;
+ break;
+ default:
+ break;
+ }
+ }
+ for ( isv=0; isv<2; ++isv ) {
+ for ( kp= isv ? sc->kerns : sc->vkerns ; kp!=NULL; kp=kp->next ) {
+ if ( SCWorthOutputting(kp->sc))
+ kp->subtable->unused = false;
+ }
+ }
+ for ( pst=sc->possub; pst!=NULL; pst=pst->next ) {
+ if ( pst->subtable==NULL )
+ continue;
+ if ( !PSTValid(sf,pst))
+ continue;
+ pst->subtable->unused = false;
+ }
+ }
+ ++k;
+ } while ( k<_sf->subfontcnt );
+
+ /* Finally for any anchor class that has both a mark and a base then it is */
+ /* used, and its lookup is also used */
+ /* Also, even if unused, as long as the anchor class exists we must keep */
+ /* the subtable around */
+ for ( ac = _sf->anchor; ac!=NULL; ac=ac->next ) {
+ if ( ac->subtable==NULL )
+ continue;
+ ac->subtable->anchor_classes = true;
+ if ( ac->has_mark && ac->has_base )
+ ac->subtable->unused = false;
+ }
+
+ /* Now for each lookup, a lookup is unused if ALL subtables are unused */
+ for ( gpos=0; gpos<2; ++gpos ) {
+ for ( test = gpos ? _sf->gpos_lookups : _sf->gsub_lookups; test!=NULL; test = test->next ) {
+ test->unused = test->empty = true;
+ for ( sub=test->subtables; sub!=NULL; sub=sub->next ) {
+ if ( !sub->unused )
+ test->unused = false;
+ if ( !sub->unused && !sub->anchor_classes ) {
+ test->empty = false;
+ break;
+ }
+ }
+ }
+ }
+
+ /* I store JSTF max lookups in the gpos list because they have the same */
+ /* format. But now I need to tease them out and learn which lookups are */
+ /* used in GPOS and which in JSTF (and conceivably which get duplicated */
+ /* and placed in both) */
+ for ( test = sf->gpos_lookups; test!=NULL; test = test->next ) {
+ test->only_jstf = test->in_jstf = test->in_gpos = false;
+ if ( test->features!=NULL )
+ test->in_gpos = true;
+ }
+ for ( jscripts = sf->justify; jscripts!=NULL; jscripts=jscripts->next ) {
+ for ( jlangs=jscripts->langs; jlangs!=NULL; jlangs=jlangs->next ) {
+ for ( i=0; i<jlangs->cnt; ++i ) {
+ struct jstf_prio *prio = &jlangs->prios[i];
+ if ( prio->enableShrink!=NULL )
+ for ( k=0; prio->enableShrink[k]!=NULL; ++k )
+ prio->enableShrink[k]->in_gpos = true;
+ if ( prio->disableShrink!=NULL )
+ for ( k=0; prio->disableShrink[k]!=NULL; ++k )
+ prio->disableShrink[k]->in_gpos = true;
+ if ( prio->enableExtend!=NULL )
+ for ( k=0; prio->enableExtend[k]!=NULL; ++k )
+ prio->enableExtend[k]->in_gpos = true;
+ if ( prio->disableExtend!=NULL )
+ for ( k=0; prio->disableExtend[k]!=NULL; ++k )
+ prio->disableExtend[k]->in_gpos = true;
+ if ( prio->maxShrink!=NULL )
+ for ( k=0; prio->maxShrink[k]!=NULL; ++k )
+ prio->maxShrink[k]->in_jstf = true;
+ if ( prio->maxExtend!=NULL )
+ for ( k=0; prio->maxExtend[k]!=NULL; ++k )
+ prio->maxExtend[k]->in_jstf = true;
+ }
+ }
+ }
+ for ( test = sf->gpos_lookups; test!=NULL; test = test->next ) {
+ if ( test->in_gpos && (test->lookup_type==gpos_context || test->lookup_type==gpos_contextchain))
+ TickLookupKids(test);
+ }
+ for ( test = sf->gpos_lookups; test!=NULL; test = test->next )
+ test->only_jstf = test->in_jstf && !test->in_gpos;
+}
+
+struct lookup_subtable *SFFindLookupSubtable(SplineFont *sf,char *name) {
+ int isgpos;
+ OTLookup *otl;
+ struct lookup_subtable *sub;
+
+ if ( sf->cidmaster ) sf = sf->cidmaster;
+
+ if ( name==NULL )
+return( NULL );
+
+ for ( isgpos=0; isgpos<2; ++isgpos ) {
+ for ( otl = isgpos ? sf->gpos_lookups : sf->gsub_lookups ; otl!=NULL; otl=otl->next ) {
+ for ( sub = otl->subtables; sub!=NULL; sub=sub->next ) {
+ if ( strcmp(name,sub->subtable_name)==0 )
+return( sub );
+ }
+ }
+ }
+return( NULL );
+}
+
+struct lookup_subtable *SFFindLookupSubtableAndFreeName(SplineFont *sf,char *name) {
+ struct lookup_subtable *sub = SFFindLookupSubtable(sf,name);
+ free(name);
+return( sub );
+}
+
+OTLookup *SFFindLookup(SplineFont *sf,char *name) {
+ int isgpos;
+ OTLookup *otl;
+
+ if ( sf->cidmaster ) sf = sf->cidmaster;
+
+ if ( name==NULL )
+return( NULL );
+
+ for ( isgpos=0; isgpos<2; ++isgpos ) {
+ for ( otl = isgpos ? sf->gpos_lookups : sf->gsub_lookups ; otl!=NULL; otl=otl->next ) {
+ if ( strcmp(name,otl->lookup_name)==0 )
+return( otl );
+ }
+ }
+return( NULL );
+}
+
+struct scriptlanglist *SLCopy(struct scriptlanglist *sl) {
+ struct scriptlanglist *newsl;
+
+ newsl = chunkalloc(sizeof(struct scriptlanglist));
+ *newsl = *sl;
+ newsl->next = NULL;
+
+ if ( sl->lang_cnt>MAX_LANG ) {
+ newsl->morelangs = malloc((newsl->lang_cnt-MAX_LANG)*sizeof(uint32));
+ memcpy(newsl->morelangs,sl->morelangs,(newsl->lang_cnt-MAX_LANG)*sizeof(uint32));
+ }
+return( newsl );
+}
+
+struct scriptlanglist *SListCopy(struct scriptlanglist *sl) {
+ struct scriptlanglist *head=NULL, *last=NULL, *cur;
+
+ for ( ; sl!=NULL; sl=sl->next ) {
+ cur = SLCopy(sl);
+ if ( head==NULL )
+ head = cur;
+ else
+ last->next = cur;
+ last = cur;
+ }
+return( head );
+}
+
+FeatureScriptLangList *FeatureListCopy(FeatureScriptLangList *fl) {
+ FeatureScriptLangList *newfl;
+
+ if ( fl==NULL )
+return( NULL );
+
+ newfl = chunkalloc(sizeof(FeatureScriptLangList));
+ *newfl = *fl;
+ newfl->next = NULL;
+
+ newfl->scripts = SListCopy(fl->scripts);
+return( newfl );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/macbinary.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/macbinary.c
new file mode 100644
index 00000000000..de63210774d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/macbinary.c
@@ -0,0 +1,227 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h"
+
+#if __Mac
+# include <ctype.h>
+# include "carbon.h"
+#else
+#undef __Mac
+#define __Mac 0
+#endif
+
+/* I had always assumed that the mac still believed in 72dpi screens, but I */
+/* see that in geneva under OS/9, the pointsize does not match the pixel */
+/* size of the font. But the dpi is not constant (and the differences */
+/* excede those supplied by rounding errors) varying between 96 and 84dpi */
+
+/* A Mac Resource fork */
+/* http://developer.apple.com/techpubs/mac/MoreToolbox/MoreToolbox-9.html */
+/* begins with a 16 byte header containing: */
+/* resource start offset */
+/* map start offset */
+/* resource length */
+/* map length */
+/* then 256-16 bytes of zeros */
+/* the resource section consists of (many) */
+/* 4 byte length count */
+/* resource data */
+/* the map section contains */
+/* A copy of the 16 byte header */
+/* a 4 byte mac internal value (I hope) */
+/* another 4 bytes of mac internal values (I hope) */
+/* a 2 byte offset from the start of the map section to the list of resource types */
+/* a 2 byte offset from the start of the map section to the list of resource names */
+/* The resource type list consists of */
+/* a 2 byte count of the number of resource types (-1) */
+/* (many copies of) */
+/* a 4 byte resource type ('FOND' for example) */
+/* a 2 byte count of the number of resources of this type (-1) */
+/* a 2 byte offset from the type list start to the resource table */
+/* a resource table looks like */
+/* a 2 byte offset from the resource name table to a pascal */
+/* string containing this resource's name (or 0xffff for none) */
+/* 1 byte of resource flags */
+/* 3 bytes of offset from the resource section to the length & */
+/* data of this instance of the resource type */
+/* 4 bytes of 0 */
+/* The resource name section consists of */
+/* a bunch of pascal strings (ie. preceded by a length byte) */
+
+/* The POST resource isn't noticeably documented, it's pretty much a */
+/* straight copy of the pfb file cut up into 0x800 byte chunks. */
+/* (each section of the pfb file has it's own set of chunks, the last may be smaller than 0x800) */
+/* The NFNT resource http://developer.apple.com/techpubs/mac/Text/Text-250.html */
+/* The FOND resource http://developer.apple.com/techpubs/mac/Text/Text-269.html */
+/* The sfnt resource is basically a copy of the ttf file */
+
+/* A MacBinary file */
+/* http://www.lazerware.com/formats/macbinary.html */
+/* begins with a 128 byte header */
+/* (which specifies lengths for data/resource forks) */
+/* (and contains mac type/creator data) */
+/* (and other stuff) */
+/* (and finally a crc checksum) */
+/* is followed by the data section (padded to a mult of 128 bytes) */
+/* is followed by the resource section (padded to a mult of 128 bytes) */
+
+/* Crc code taken from: */
+/* http://www.ctan.org/tex-archive/tools/macutils/crc/ */
+/* MacBinary files use the same CRC that binhex does (in the MacBinary header) */
+
+/* ******************************** Creation ******************************** */
+struct resource {
+ uint32 pos;
+ uint8 flags;
+ uint16 id;
+ char *name;
+ uint32 nameloc;
+ uint32 nameptloc;
+};
+
+enum psstyle_flags { psf_bold = 1, psf_italic = 2, psf_outline = 4,
+ psf_shadow = 0x8, psf_condense = 0x10, psf_extend = 0x20 };
+
+uint16 _MacStyleCode( const char *styles, SplineFont *sf, uint16 *psstylecode ) {
+ unsigned short stylecode= 0, psstyle=0;
+
+ if ( strstrmatch( styles, "Bold" ) || strstrmatch(styles,"Demi") ||
+ strstrmatch( styles,"Heav") || strstrmatch(styles,"Blac") ||
+/* A few fonts have German/French styles in their names */
+ strstrmatch( styles,"Fett") || strstrmatch(styles,"Gras") ) {
+ stylecode = sf_bold;
+ psstyle = psf_bold;
+ } else if ( sf!=NULL && sf->weight!=NULL &&
+ (strstrmatch( sf->weight, "Bold" ) || strstrmatch(sf->weight,"Demi") ||
+ strstrmatch( sf->weight,"Heav") || strstrmatch(sf->weight,"Blac") ||
+ strstrmatch( sf->weight,"Fett") || strstrmatch(sf->weight,"Gras")) ) {
+ stylecode = sf_bold;
+ psstyle = psf_bold;
+ }
+ /* URW uses four leter abbreviations of Italic and Oblique */
+ /* Somebody else uses two letter abbrevs */
+ if ( (sf!=NULL && sf->italicangle!=0) ||
+ strstrmatch( styles, "Ital" ) ||
+ strstrmatch( styles, "Obli" ) ||
+ strstrmatch(styles, "Slanted") ||
+ strstrmatch(styles, "Kurs") ||
+ strstr( styles,"It" ) ) {
+ stylecode |= sf_italic;
+ psstyle |= psf_italic;
+ }
+ if ( strstrmatch( styles, "Underline" ) ) {
+ stylecode |= sf_underline;
+ }
+ if ( strstrmatch( styles, "Outl" ) ) {
+ stylecode |= sf_outline;
+ psstyle |= psf_outline;
+ }
+ if ( strstr(styles,"Shadow")!=NULL ) {
+ stylecode |= sf_shadow;
+ psstyle |= psf_shadow;
+ }
+ if ( strstrmatch( styles, "Cond" ) || strstr( styles,"Cn") ||
+ strstrmatch( styles, "Narrow") ) {
+ stylecode |= sf_condense;
+ psstyle |= psf_condense;
+ }
+ if ( strstrmatch( styles, "Exte" ) || strstr( styles,"Ex") ) {
+ stylecode |= sf_extend;
+ psstyle |= psf_extend;
+ }
+ if ( (psstyle&psf_extend) && (psstyle&psf_condense) ) {
+ if ( sf!=NULL )
+ LogError( _("Warning: %s(%s) is both extended and condensed. That's impossible.\n"),
+ sf->fontname, sf->origname );
+ else
+ LogError( _("Warning: Both extended and condensed. That's impossible.\n") );
+ psstyle &= ~psf_extend;
+ stylecode &= ~sf_extend;
+ }
+ if ( psstylecode!=NULL )
+ *psstylecode = psstyle;
+return( stylecode );
+}
+
+uint16 MacStyleCode( SplineFont *sf, uint16 *psstylecode ) {
+ const char *styles;
+
+ if ( sf->cidmaster!=NULL )
+ sf = sf->cidmaster;
+
+ if ( sf->macstyle!=-1 ) {
+ if ( psstylecode!=NULL )
+ *psstylecode = (sf->macstyle&0x3)|((sf->macstyle&0x6c)>>1);
+return( sf->macstyle );
+ }
+
+ styles = SFGetModifiers(sf);
+return( _MacStyleCode(styles,sf,psstylecode));
+}
+
+/* ******************************** Reading ********************************* */
+
+
+struct kerns {
+ unsigned char ch1, ch2;
+ short offset; /* 4.12 */
+};
+
+
+#if __Mac
+static SplineFont *HasResourceFork(char *filename,int flags,enum openflags openflags,
+ SplineFont *into,EncMap *map) {
+ /* If we're on a mac, we can try to see if we've got a real resource fork */
+ /* (if we do, copy it into a temporary data file and then manipulate that)*/
+ SplineFont *ret;
+ FILE *resfork;
+ char *tempfn=filename, *pt, *lparen, *respath;
+
+ if (( pt=strrchr(filename,'/'))==NULL ) pt = filename;
+ if ( (lparen = strchr(pt,'('))!=NULL && strchr(lparen,')')!=NULL ) {
+ tempfn = copy(filename);
+ tempfn[lparen-filename] = '\0';
+ }
+ respath = malloc(strlen(tempfn)+strlen("/..namedfork/rsrc")+1);
+ strcpy(respath,tempfn);
+ strcat(respath,"/..namedfork/rsrc");
+ resfork = fopen(respath,"r");
+ if ( resfork==NULL ) {
+ strcpy(respath,tempfn);
+ strcat(respath,"/rsrc");
+ resfork = fopen(respath,"r");
+ }
+ free(respath);
+ if ( tempfn!=filename )
+ free(tempfn);
+ if ( resfork==NULL )
+return( NULL );
+ ret = IsResourceFork(resfork,0,filename,flags,openflags,into,map);
+ fclose(resfork);
+return( ret );
+}
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/macenc.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/macenc.c
new file mode 100644
index 00000000000..f9dc5ff060a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/macenc.c
@@ -0,0 +1,1805 @@
+/* Copyright (C) 2003-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h"
+#include "ttf.h"
+
+/*
+ The original data for these mappings may be found at
+ http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/
+ unfortunately this site does not contain all the macintosh encodings
+ so we leave some blank
+*/
+/* Response (indirectly) from charsets@apple.com when asked about the missing
+ encodings:
+
+ > I don't believe any of those additional scripts are actually
+ > defined as character encodings. He can safely ignore anything
+ > that's not in the Apple folder on the Unicode site.
+ >
+ > I monitor charsets@apple.com and don't recall seeing any e-mail
+ > on this subject. It's possible it got lost in the voluminous
+ > spam the address receives.
+ >
+ > Deborah
+ I find this perplexing (unless the script is defined but unused, how can
+ it fail to have a defined encoding), but will accept it.
+*/
+
+/* Macintosh 1 byte encodings */
+static unichar_t arabic[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00a0, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x06ba, 0x00ab, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x2026, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00bb, 0x00f4, 0x00f6, 0x00f7, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x066a, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x060c, 0x002d, 0x002e, 0x002f,
+ 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667,
+ 0x0668, 0x0669, 0x003a, 0x061b, 0x003c, 0x003d, 0x003e, 0x061f,
+ 0x274a, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
+ 0x0638, 0x0639, 0x063a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
+ 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
+ 0x0650, 0x0651, 0x0652, 0x067e, 0x0679, 0x0686, 0x06d5, 0x06a4,
+ 0x06af, 0x0688, 0x0691, 0x007b, 0x007c, 0x007d, 0x0698, 0x06d2
+};
+
+static unichar_t centeuro[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x0100, 0x0101, 0x00c9, 0x0104, 0x00d6, 0x00dc, 0x00e1,
+ 0x0105, 0x010c, 0x00e4, 0x010d, 0x0106, 0x0107, 0x00e9, 0x0179,
+ 0x017a, 0x010e, 0x00ed, 0x010f, 0x0112, 0x0113, 0x0116, 0x00f3,
+ 0x0117, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x011a, 0x011b, 0x00fc,
+ 0x2020, 0x00b0, 0x0118, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x0119, 0x00a8, 0x2260, 0x0123, 0x012e,
+ 0x012f, 0x012a, 0x2264, 0x2265, 0x012b, 0x0136, 0x2202, 0x2211,
+ 0x0142, 0x013b, 0x013c, 0x013d, 0x013e, 0x0139, 0x013a, 0x0145,
+ 0x0146, 0x0143, 0x00ac, 0x221a, 0x0144, 0x0147, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x0148, 0x0150, 0x00d5, 0x0151, 0x014c,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x014d, 0x0154, 0x0155, 0x0158, 0x2039, 0x203a, 0x0159, 0x0156,
+ 0x0157, 0x0160, 0x201a, 0x201e, 0x0161, 0x015a, 0x015b, 0x00c1,
+ 0x0164, 0x0165, 0x00cd, 0x017d, 0x017e, 0x016a, 0x00d3, 0x00d4,
+ 0x016b, 0x016e, 0x00da, 0x016f, 0x0170, 0x0171, 0x0172, 0x0173,
+ 0x00dd, 0x00fd, 0x0137, 0x017b, 0x0141, 0x017c, 0x0122, 0x02c7
+};
+
+static unichar_t croatian[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x0160, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x017d, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x2206, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x0161, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x017e, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x0106, 0x00ab,
+ 0x010c, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x0110, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0xf8ff, 0x00a9, 0x2044, 0x20ac, 0x2039, 0x203a, 0x00c6, 0x00bb,
+ 0x2013, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x0107, 0x00c1,
+ 0x010d, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0x0111, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x03c0, 0x00cb, 0x02da, 0x00b8, 0x00ca, 0x00e6, 0x02c7
+};
+
+static unichar_t cyrillic[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ 0x2020, 0x00b0, 0x0490, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x0406,
+ 0x00ae, 0x00a9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x0456, 0x00b5, 0x0491, 0x0408,
+ 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040a, 0x045a,
+ 0x0458, 0x0405, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x040b, 0x045b, 0x040c, 0x045c, 0x0455,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x201e,
+ 0x040e, 0x045e, 0x040f, 0x045f, 0x2116, 0x0401, 0x0451, 0x044f,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x20ac
+};
+
+static unichar_t devanagari[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00d7, 0x2212, 0x2013, 0x2014, 0x2018, 0x2019, 0x2026, 0x2022,
+ 0x00a9, 0x00ae, 0x2122, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0965, 0x0970, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0901, 0x0902, 0x0903, 0x0905, 0x0906, 0x0907, 0x0908,
+ 0x0909, 0x090a, 0x090b, 0x090e, 0x090f, 0x0910, 0x090d, 0x0912,
+ 0x0913, 0x0914, 0x0911, 0x0915, 0x0916, 0x0917, 0x0918, 0x0919,
+ 0x091a, 0x091b, 0x091c, 0x091d, 0x091e, 0x091f, 0x0920, 0x0921,
+ 0x0922, 0x0923, 0x0924, 0x0925, 0x0926, 0x0927, 0x0928, 0x0929,
+ 0x092a, 0x092b, 0x092c, 0x092d, 0x092e, 0x092f, 0x095f, 0x0930,
+ 0x0931, 0x0932, 0x0933, 0x0934, 0x0935, 0x0936, 0x0937, 0x0938,
+ 0x0939, 0x200e, 0x093e, 0x093f, 0x0940, 0x0941, 0x0942, 0x0943,
+ 0x0946, 0x0947, 0x0948, 0x0945, 0x094a, 0x094b, 0x094c, 0x0949,
+ 0x094d, 0x093c, 0x0964, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x0966, 0x0967, 0x0968, 0x0969, 0x096a, 0x096b, 0x096c,
+ 0x096d, 0x096e, 0x096f,
+};
+
+static unichar_t farsi[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00a0, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x06ba, 0x00ab, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x2026, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00bb, 0x00f4, 0x00f6, 0x00f7, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x066a, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x060c, 0x002d, 0x002e, 0x002f,
+ 0x06f0, 0x06f1, 0x06f2, 0x06f3, 0x06f4, 0x06f5, 0x06f6, 0x06f7,
+ 0x06f8, 0x06f9, 0x003a, 0x061b, 0x003c, 0x003d, 0x003e, 0x061f,
+ 0x274a, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
+ 0x0638, 0x0639, 0x063a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
+ 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
+ 0x0650, 0x0651, 0x0652, 0x067e, 0x0679, 0x0686, 0x06d5, 0x06a4,
+ 0x06af, 0x0688, 0x0691, 0x007b, 0x007c, 0x007d, 0x0698, 0x06d2
+};
+
+static unichar_t greek[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00b9, 0x00b2, 0x00c9, 0x00b3, 0x00d6, 0x00dc, 0x0385,
+ 0x00e0, 0x00e2, 0x00e4, 0x0384, 0x00a8, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00a3, 0x2122, 0x00ee, 0x00ef, 0x2022, 0x00bd,
+ 0x2030, 0x00f4, 0x00f6, 0x00a6, 0x20ac, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x0393, 0x0394, 0x0398, 0x039b, 0x039e, 0x03a0, 0x00df,
+ 0x00ae, 0x00a9, 0x03a3, 0x03aa, 0x00a7, 0x2260, 0x00b0, 0x00b7,
+ 0x0391, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x0392, 0x0395, 0x0396,
+ 0x0397, 0x0399, 0x039a, 0x039c, 0x03a6, 0x03ab, 0x03a8, 0x03a9,
+ 0x03ac, 0x039d, 0x00ac, 0x039f, 0x03a1, 0x2248, 0x03a4, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x03a5, 0x03a7, 0x0386, 0x0388, 0x0153,
+ 0x2013, 0x2015, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x0389,
+ 0x038a, 0x038c, 0x038e, 0x03ad, 0x03ae, 0x03af, 0x03cc, 0x038f,
+ 0x03cd, 0x03b1, 0x03b2, 0x03c8, 0x03b4, 0x03b5, 0x03c6, 0x03b3,
+ 0x03b7, 0x03b9, 0x03be, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf,
+ 0x03c0, 0x03ce, 0x03c1, 0x03c3, 0x03c4, 0x03b8, 0x03c9, 0x03c2,
+ 0x03c7, 0x03c5, 0x03b6, 0x03ca, 0x03cb, 0x0390, 0x03b0, 0x00ad
+};
+
+static unichar_t gujarati[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00d7, 0x2212, 0x2013, 0x2014, 0x2018, 0x2019, 0x2026, 0x2022,
+ 0x00a9, 0x00ae, 0x2122, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0965, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0a81, 0x0a82, 0x0a83, 0x0a85, 0x0a86, 0x0a87, 0x0a88,
+ 0x0a89, 0x0a8a, 0x0a8b, 0x00ab, 0x0a8f, 0x0a90, 0x0a8d, 0x00af,
+ 0x0a93, 0x0a94, 0x0a91, 0x0a95, 0x0a96, 0x0a97, 0x0a98, 0x0a99,
+ 0x0a9a, 0x0a9b, 0x0a9c, 0x0a9d, 0x0a9e, 0x0a9f, 0x0aa0, 0x0aa1,
+ 0x0aa2, 0x0aa3, 0x0aa4, 0x0aa5, 0x0aa6, 0x0aa7, 0x0aa8, 0x00c7,
+ 0x0aaa, 0x0aab, 0x0aac, 0x0aad, 0x0aae, 0x0aaf, 0x00ce, 0x0ab0,
+ 0x00d0, 0x0ab2, 0x0ab3, 0x00d3, 0x0ab5, 0x0ab6, 0x0ab7, 0x0ab8,
+ 0x0ab9, 0x200e, 0x0abe, 0x0abf, 0x0ac0, 0x0ac1, 0x0ac2, 0x0ac3,
+ 0x00e0, 0x0ac7, 0x0ac8, 0x0ac5, 0x00e4, 0x0acb, 0x0acc, 0x0ac9,
+ 0x0acd, 0x0abc, 0x0964, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x0ae6, 0x0ae7, 0x0ae8, 0x0ae9, 0x0aea, 0x0aeb, 0x0aec,
+ 0x0aed, 0x0aee, 0x0aef,
+};
+
+static unichar_t gurmukhi[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00d7, 0x2212, 0x2013, 0x2014, 0x2018, 0x2019, 0x2026, 0x2022,
+ 0x00a9, 0x00ae, 0x2122, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0a71, 0x0a5c, 0x0a73, 0x0a72, 0x0a74, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x00a1, 0x0a02, 0x00a3, 0x0a05, 0x0a06, 0x0a07, 0x0a08,
+ 0x0a09, 0x0a0a, 0x00aa, 0x00ab, 0x0a0f, 0x0a10, 0x00ae, 0x00af,
+ 0x0a13, 0x0a14, 0x00b2, 0x0a15, 0x0a16, 0x0a17, 0x0a18, 0x0a19,
+ 0x0a1a, 0x0a1b, 0x0a1c, 0x0a1d, 0x0a1e, 0x0a1f, 0x0a20, 0x0a21,
+ 0x0a22, 0x0a23, 0x0a24, 0x0a25, 0x0a26, 0x0a27, 0x0a28, 0x00c7,
+ 0x0a2a, 0x0a2b, 0x0a2c, 0x0a2d, 0x0a2e, 0x0a2f, 0x00ce, 0x0a30,
+ 0x00d0, 0x0a32, 0x00d2, 0x00d3, 0x0a35, 0xf860, 0x00d6, 0x0a38,
+ 0x0a39, 0x200e, 0x0a3e, 0x0a3f, 0x0a40, 0x0a41, 0x0a42, 0x00df,
+ 0x00e0, 0x0a47, 0x0a48, 0x00e3, 0x00e4, 0x0a4b, 0x0a4c, 0x00e7,
+ 0x0a4d, 0x0a3c, 0x0964, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x0a66, 0x0a67, 0x0a68, 0x0a69, 0x0a6a, 0x0a6b, 0x0a6c,
+ 0x0a6d, 0x0a6e, 0x0a6f,
+};
+
+static unichar_t hebrew[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x05f2, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x20aa, 0x0027,
+ 0x0029, 0x0028, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0xf86a, 0x201e, 0xf89b, 0xf89c, 0xf89d, 0xf89e, 0x05bc, 0xfb4b,
+ 0xfb35, 0x2026, 0x00a0, 0x05b8, 0x05b7, 0x05b5, 0x05b6, 0x05b4,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0xfb2a, 0xfb2b,
+ 0x05bf, 0x05b0, 0x05b2, 0x05b1, 0x05bb, 0x05b9, 0x05b8, 0x05b3,
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+ 0x05e8, 0x05e9, 0x05ea, 0x007d, 0x005d, 0x007b, 0x005b, 0x007c
+};
+
+static unichar_t iceland[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x00dd, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x2044, 0x20ac, 0x00d0, 0x00f0, 0x00de, 0x00fe,
+ 0x00fd, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+};
+
+static unichar_t romanian[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x0102, 0x0218,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x0103, 0x0219,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x2044, 0x20ac, 0x2039, 0x203a, 0x021a, 0x021b,
+ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+};
+
+unichar_t MacRomanEnc[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01, 0xfb02,
+ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+};
+
+static unichar_t thai[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00ab, 0x00bb, 0x2026, 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x201c, 0x201d, 0x0e4d,
+ 0x0090, 0x2022, 0x0e31, 0x0e47, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x2018, 0x2019, 0x009f,
+ 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e38, 0x0e39, 0x0e3a, 0x2060, 0x200b, 0x2013, 0x2014, 0x0e3f,
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x2122, 0x0e4f,
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+ 0x0e58, 0x0e59, 0x00ae, 0x00a9,
+};
+
+static unichar_t turkish[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x011e, 0x011f, 0x0130, 0x0131, 0x015e, 0x015f,
+ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0xf8a0, 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+};
+
+enum script_codes {
+ sm_roman, sm_japanese, sm_tradchinese, sm_korean,
+ sm_arabic, sm_hebrew, sm_greek, sm_cyrillic,
+ sm_rsymbol, sm_devanagari, sm_gurmukhi, sm_gujarati,
+ sm_oriya, sm_bengali, sm_tamil, sm_telugu,
+ sm_kannada, sm_malayalam, sm_sinhalese, sm_burmese,
+ sm_khmer, sm_thai, sm_laotian, sm_georgian,
+ sm_armenian, sm_simpchinese, sm_tibetan, sm_mongolian,
+ sm_geez, sm_slavic, sm_vietnamese, sm_sindhi,
+ sm_max };
+
+static unichar_t *macencodings[] = {
+ MacRomanEnc,
+ NULL/*Essentially SJIS*/,
+ NULL/*Essentially Big 5*/,
+ NULL/*Essentially Wansung*/,
+ arabic,
+ hebrew,
+ greek,
+ cyrillic,
+ NULL, /* rsymbol, whatever that is */
+ devanagari,
+/*10*/ gurmukhi,
+ gujarati,
+ NULL, /* oriya */
+ NULL, /* bengali */
+ NULL, /* Tamil */
+ NULL, /* Telugu */
+ NULL, /* Kannada */
+ NULL, /* Malayalam */
+ NULL, /* Sinhalese */
+ NULL, /* Burmese */
+/*20*/ NULL, /* Khmer */
+ thai,
+ NULL, /* Lao */
+ NULL, /* Georgian */
+ NULL, /* Armenian */
+/*25*/ NULL,/* SimpChinese, GB2312 offset by 0x8080 to 0xa1a1 */
+ NULL, /* Tibetan */
+ NULL, /* Mongolian */
+ NULL, /* Geex/Ethiopic */
+ centeuro, /* Baltic/Slavic */
+/*30*/ NULL, /* Vietnamese */
+ NULL, /* Extended Arabic for Sindhi */
+ NULL /* Uninterpretted */
+};
+
+/* The icelandic encoding also uses 0 (mac roman) encoding even though it's not*/
+/* The turkish encoding also uses 0 (mac roman) encoding even though it's not*/
+/* The croatian encoding also uses 0 (mac roman) encoding even though it's not*/
+/* The romanian encoding also uses 0 (mac roman) encoding even though it's not*/
+
+/* I've no idea what encoding code farsi uses, it isn't documented to be arabic 4, nor is it documented to have its own code */
+
+static uint8 _MacScriptFromLanguage[] = {
+ sm_roman, /* English */
+ sm_roman, /* French */
+ sm_roman, /* German */
+ sm_roman, /* Italian */
+ sm_roman, /* Dutch */
+ sm_roman, /* Swedish */
+ sm_roman, /* Spanish */
+ sm_roman, /* Danish */
+ sm_roman, /* Portuguese */
+ sm_roman, /* Norwegian */
+/*10*/ sm_hebrew, /* Hebrew */
+ sm_japanese, /* Japanese */
+ sm_arabic, /* Arabic */
+ sm_roman, /* Finnish */
+ sm_greek, /* Greek */
+ sm_roman, /* Icelandic */ /* Modified roman */
+ sm_roman, /* Maltese */
+ sm_roman, /* Turkish */ /* Modified roman */
+ sm_roman, /* Croatian */ /* Modified roman */
+ sm_tradchinese, /* Traditional Chinese */
+/*20*/ sm_arabic, /* Urdu (I assume arabic) */
+ sm_devanagari, /* Hindi (I assume) */
+ sm_thai, /* Thai */
+ sm_korean, /* Korean */
+ sm_slavic, /* Lithuanian */
+ sm_slavic, /* Polish */
+ sm_slavic, /* Hungarian */
+ sm_slavic, /* Estonian */
+ sm_slavic, /* Latvian */
+ sm_roman, /* Sami (Lappish) */
+/*30*/ sm_roman, /* Faroese (Icelandic) */ /* Modified roman */
+ sm_arabic, /* Farsi/Persian */ /* Modified Arabic */
+ sm_cyrillic, /* Russian */
+ sm_simpchinese, /* Simplified Chinese */
+ sm_roman, /* Flemish */
+ sm_roman, /* Irish Gaelic */
+ sm_roman, /* albanian (???) */
+ sm_roman, /* Romanian */ /* Modified roman */
+ sm_slavic, /* Czech */
+ sm_slavic, /* Slovak */
+/*40*/ sm_slavic, /* Slovenian */
+ sm_roman, /* Yiddish */
+ sm_cyrillic, /* Serbian */
+ sm_cyrillic, /* Macedonian */
+ sm_cyrillic, /* Bulgarian */
+ sm_cyrillic, /* Ukrainian */
+ sm_cyrillic, /* Byelorussian */
+ sm_cyrillic, /* Uzbek */
+ sm_cyrillic, /* Kazakh */
+ sm_cyrillic, /* Axerbaijani (Cyrillic) */
+/*50*/ sm_arabic, /* Axerbaijani (Arabic) */
+ sm_armenian, /* Armenian */
+ sm_georgian, /* Georgian */
+ sm_cyrillic, /* Moldavian */
+ sm_cyrillic, /* Kirghiz */
+ sm_cyrillic, /* Tajiki */
+ sm_cyrillic, /* Turkmen */
+ sm_mongolian, /* Mongolian (Mongolian) */
+ sm_cyrillic, /* Mongolian (cyrillic) */
+ sm_arabic, /* Pashto */
+/*60*/ sm_arabic, /* Kurdish */
+ sm_devanagari, /* Kashmiri (???) */
+ sm_sindhi, /* Sindhi */
+ sm_tibetan, /* Tibetan */
+ sm_tibetan, /* Nepali (???) */
+ sm_devanagari, /* Sanskrit */
+ sm_devanagari, /* Marathi */
+ sm_bengali, /* Bengali */
+ sm_bengali, /* Assamese (???) */
+ sm_gujarati, /* Gujarati */
+/*70*/ sm_gujarati, /* Punjabi (???) */
+ sm_oriya, /* Oriya */
+ sm_malayalam, /* Malayalam */
+ sm_kannada, /* Kannada */
+ sm_tamil, /* Tamil */
+ sm_telugu, /* Telugu */
+ sm_sinhalese, /* Sinhalese */
+ sm_burmese, /* Burmese */
+ sm_khmer, /* Khmer */
+ sm_laotian, /* Lao */
+/*80*/ sm_vietnamese, /* Vietnamese */
+ sm_arabic, /* Indonesian */
+ sm_roman, /* Tagalog (???) */
+ sm_roman, /* Malay (roman) */
+ sm_arabic, /* Malay (arabic) */
+ sm_roman, /* Amharic (???) */
+ sm_roman, /* Tigrinya (???) */
+ sm_roman, /* Galla (???) */
+ sm_roman, /* Somali (???) */
+ sm_roman, /* Swahili (???) */
+/*90*/ sm_roman, /* Kinyarwanda/Ruanda (???) */
+ sm_roman, /* Rundi (???) */
+ sm_roman, /* Nyanja/Chewa (???) */
+ sm_roman, /* Malagasy */
+/*94*/ sm_roman, /* Esperanto */
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+/*100*/ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+/*110*/ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+/*120*/ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+ 0xff,
+/*128*/ sm_roman, /* Welsh */
+ sm_roman, /* Basque */
+/*130*/ sm_roman, /* Catalan */
+ sm_roman, /* Latin */
+ sm_roman, /* Quechua (???) */
+ sm_roman, /* Guarani (???) */
+ sm_roman, /* Aymara (???) */
+ sm_cyrillic, /* Tatar (???) */
+ sm_cyrillic, /* Uighur (???) */
+ sm_cyrillic, /* Dzongkha (???) */
+ sm_roman, /* Javanese (roman) */
+ sm_roman, /* Sundanese (roman) */
+/*140*/ sm_roman, /* Galician */
+ sm_roman, /* Afrikaans */
+ sm_roman, /* Breton */
+ sm_roman, /* Inuktitut */
+ sm_roman, /* Scottish Gaelic */
+ sm_roman, /* Manx Gaelic */
+ sm_roman, /* Irish Gaelic (with dot) */
+ sm_roman, /* Tongan */
+ sm_greek, /* Greek (polytonic) */
+ sm_roman, /* Greenlandic */ /* Presumably icelandic? */
+/*150*/ sm_roman, /* Azebaijani (roman) */
+ 0xff
+};
+
+static uint16 _WinLangFromMac[] = {
+ 0x409, /* English */
+ 0x40c, /* French */
+ 0x407, /* German */
+ 0x410, /* Italian */
+ 0x413, /* Dutch */
+ 0x41d, /* Swedish */
+ 0x40a, /* Spanish */
+ 0x406, /* Danish */
+ 0x416, /* Portuguese */
+ 0x414, /* Norwegian */
+/*10*/ 0x40d, /* Hebrew */
+ 0x411, /* Japanese */
+ 0x401, /* Arabic */
+ 0x40b, /* Finnish */
+ 0x408, /* Greek */
+ 0x40f, /* Icelandic */
+ 0x43a, /* Maltese */
+ 0x41f, /* Turkish */
+ 0x41a, /* Croatian */
+ 0x404, /* Traditional Chinese */
+/*20*/ 0x420, /* Urdu */
+ 0x439, /* Hindi */
+ 0x41e, /* Thai */
+ 0x412, /* Korean */
+ 0x427, /* Lithuanian */
+ 0x415, /* Polish */
+ 0x40e, /* Hungarian */
+ 0x425, /* Estonian */
+ 0x426, /* Latvian */
+ 0x43b, /* Sami (Lappish) */
+/*30*/ 0x438, /* Faroese (Icelandic) */
+ 0x429, /* Farsi/Persian */
+ 0x419, /* Russian */
+ 0x804, /* Simplified Chinese */
+ 0x813, /* Flemish */
+ 0x43c, /* Irish Gaelic */
+ 0x41c, /* albanian */
+ 0x418, /* Romanian */
+ 0x405, /* Czech */
+ 0x41b, /* Slovak */
+/*40*/ 0x424, /* Slovenian */
+ 0x43d, /* Yiddish */
+ 0xc1a, /* Serbian */
+ 0x42f, /* Macedonian */
+ 0x402, /* Bulgarian */
+ 0x422, /* Ukrainian */
+ 0x423, /* Byelorussian */
+ 0x843, /* Uzbek */
+ 0x43f, /* Kazakh */
+ 0x42c, /* Azerbaijani (Cyrillic) */
+/*50*/ 0x82c, /* Azerbaijani (Arabic) */
+ 0x42b, /* Armenian */
+ 0x437, /* Georgian */
+ 0x818, /* Moldavian */
+ 0x440, /* Kirghiz */
+ 0x428, /* Tajiki */
+ 0x442, /* Turkmen */
+ 0x450, /* Mongolian (Mongolian) */
+ 0x850, /* Mongolian (cyrillic) */
+ 0x463, /* Pashto */
+/*60*/ 0xffff, /* Kurdish */
+ 0x860, /* Kashmiri */
+ 0x459, /* Sindhi */
+ 0xffff, /* Tibetan */
+ 0x461, /* Nepali */
+ 0x43b, /* Sanskrit */
+ 0x44e, /* Marathi */
+ 0x445, /* Bengali */
+ 0x44d, /* Assamese */
+ 0x447, /* Gujarati */
+/*70*/ 0x446, /* Punjabi */
+ 0x448, /* Oriya */
+ 0x44c, /* Malayalam */
+ 0x44b, /* Kannada */
+ 0x449, /* Tamil */
+ 0x44a, /* Telugu */
+ 0x45b, /* Sinhalese */
+ 0x455, /* Burmese */
+ 0x453, /* Khmer */
+ 0x454, /* Lao */
+/*80*/ 0x42a, /* Vietnamese */
+ 0x421, /* Indonesian */
+ 0x464, /* Tagalog */
+ 0x43e, /* Malay (latin) */
+ 0x83e, /* Malay (arabic) */
+ 0x45e, /* Amharic */
+ 0x473, /* Tigrinya */
+ 0x472, /* Galla, oromo, afan */
+ 0x477, /* Somali */
+ 0x441, /* Swahili */
+/*90*/ 0xffff, /* Kinyarwanda/Ruanda */
+ 0xffff, /* Rundi/Kirundi */
+ 0xffff, /* Nyanja/Chewa */
+ 0xffff, /* Malagasy */
+/*94*/ 0xffff, /* Esperanto */
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+/*100*/ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+/*110*/ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+/*120*/ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff,
+/*128*/ 0x452, /* Welsh */
+ 0x42d, /* Basque */
+/*130*/ 0x403, /* Catalan */
+ 0x476, /* Latin */
+ 0xffff, /* Quechua */
+ 0x474, /* Guarani */
+ 0xffff, /* Aymara */
+ 0x444, /* Tatar */
+ 0xffff, /* Uighur */
+ 0xffff, /* Dzongkha/Bhutani */
+ 0xffff, /* Javanese (roman) */
+ 0xffff, /* Sundanese (roman) */
+/*140*/ 0x456, /* Galician */
+ 0x436, /* Afrikaans */
+ 0xffff, /* Breton */
+ 0x45d, /* Inuktitut */
+ 0x43c, /* Scottish Gaelic */
+ 0xc3c, /* Manx Gaelic */
+ 0x83c, /* Irish Gaelic (with dot) */
+ 0xffff, /* Tongan */
+ 0xffff, /* Greek (polytonic) */
+ 0xffff, /* Greenlandic */ /* Presumably icelandic? */
+/*150*/ 0x42c, /* Azebaijani (roman) */
+ 0xffff
+};
+
+char *Utf8ToMacStr(const char *ustr,int macenc,int maclang) {
+ char *ret, *rpt;
+ const unichar_t *table;
+ int i, ch;
+
+ if ( ustr==NULL )
+return( NULL );
+
+ if ( macenc==sm_japanese || macenc==sm_korean || macenc==sm_tradchinese ||
+ macenc == sm_simpchinese ) {
+ Encoding *enc = FindOrMakeEncoding(macenc==sm_japanese ? "Sjis" :
+ macenc==sm_korean ? "EUC-KR" :
+ macenc==sm_tradchinese ? "Big5" :
+ "EUC-CN" );
+ iconv_t fromutf8;
+ ICONV_CONST char *in;
+ char *out;
+ size_t inlen, outlen;
+ if ( enc==NULL )
+return( NULL );
+ fromutf8 = iconv_open(enc->iconv_name!=NULL?enc->iconv_name:enc->enc_name,"UTF-8");
+ if ( fromutf8==(iconv_t) -1 || fromutf8==NULL )
+return( NULL );
+ in = (char *) ustr;
+ inlen = strlen(ustr);
+ outlen = sizeof(unichar_t)*strlen(ustr);
+ out = ret = malloc(outlen+sizeof(unichar_t));
+ iconv(fromutf8,&in,&inlen,&out,&outlen);
+ out[0] = out[1] = '\0';
+ out[2] = out[3] = '\0';
+ iconv_close(fromutf8);
+return( ret );
+ }
+
+ table = macencodings[macenc];
+
+ if ( maclang==15 /* Icelandic */ ||
+ maclang==30 /* Faroese */ ||
+ maclang==149 /* Greenlandic */ )
+ table = iceland;
+ else if ( maclang == 17 /* turkish */ )
+ table = turkish;
+ else if ( maclang == 18 /* croatian */ )
+ table = croatian;
+ else if ( maclang == 37 /* romanian */ )
+ table = romanian;
+ else if ( maclang == 31 /* Farsi/Persian */ )
+ table = farsi;
+
+ if ( table==NULL )
+return( NULL );
+
+ ret = malloc(strlen(ustr)+1);
+ for ( rpt = ret; (ch=utf8_ildb(&ustr)); ) {
+ for ( i=0; i<256; ++i )
+ if ( table[i]==ch ) {
+ *rpt++ = i;
+ break;
+ }
+ }
+ *rpt = '\0';
+return( ret );
+}
+
+uint8 MacEncFromMacLang(int maclang) {
+ if ( maclang<0 || maclang>=sizeof(_MacScriptFromLanguage)/sizeof(_MacScriptFromLanguage[0]))
+return( 0xff );
+
+return( _MacScriptFromLanguage[maclang] );
+}
+
+uint16 WinLangToMac(int winlang) {
+ int i;
+
+ for ( i=0; i<sizeof(_WinLangFromMac)/sizeof(_WinLangFromMac[0]); ++i )
+ if ( _WinLangFromMac[i] == winlang )
+return( i );
+
+ winlang &= 0xff;
+ for ( i=0; i<sizeof(_WinLangFromMac)/sizeof(_WinLangFromMac[0]); ++i )
+ if ( (_WinLangFromMac[i]&0xff) == winlang )
+return( i );
+
+return( 0xffff );
+}
+
+MacFeat *FindMacFeature(SplineFont *sf, int feat, MacFeat **secondary) {
+ MacFeat *from_f, *from_p;
+
+ for ( from_f = sf->features; from_f!=NULL && from_f->feature!=feat; from_f=from_f->next );
+ for ( from_p = default_mac_feature_map; from_p!=NULL && from_p->feature!=feat; from_p=from_p->next );
+ if ( from_f!=NULL ) {
+ if ( secondary!=NULL ) *secondary = from_p;
+return( from_f );
+ }
+ if ( secondary!=NULL ) *secondary = NULL;
+return( from_p );
+}
+
+struct macsetting *FindMacSetting(SplineFont *sf, int feat, int set,
+ struct macsetting **secondary) {
+ MacFeat *from_f, *from_p;
+ struct macsetting *s_f, *s_p;
+
+ if ( sf!=NULL )
+ for ( from_f = sf->features; from_f!=NULL && from_f->feature!=feat; from_f=from_f->next );
+ else
+ from_f = NULL;
+ for ( from_p = default_mac_feature_map; from_p!=NULL && from_p->feature!=feat; from_p=from_p->next );
+ s_f = s_p = NULL;
+ if ( from_f!=NULL )
+ for ( s_f = from_f->settings; s_f!=NULL && s_f->setting!=set; s_f=s_f->next );
+ if ( from_p!=NULL )
+ for ( s_p = from_p->settings; s_p!=NULL && s_p->setting!=set; s_p=s_p->next );
+ if ( s_f!=NULL ) {
+ if ( secondary!=NULL ) *secondary = s_p;
+return( s_f );
+ }
+ if ( secondary!=NULL ) *secondary = NULL;
+return( s_p );
+}
+
+struct macsettingname macfeat_otftag[] = {
+ { 1, 0, CHR('r','l','i','g') }, /* Required ligatures */
+ { 1, 2, CHR('l','i','g','a') }, /* Common ligatures */
+ { 1, 4, CHR('d','l','i','g') }, /* rare ligatures => discretionary */
+ /* { 1, 4, CHR('h','l','i','g') }, /\* rare ligatures => historic *\/ */
+ /* { 1, 4, CHR('a','l','i','g') }, /\* rare ligatures => ?ancient? *\/ */
+ /* 2, 1, partially connected cursive */
+ { 2, 2, CHR('i','s','o','l') }, /* Arabic forms */
+ { 2, 2, CHR('c','a','l','t') }, /* ??? */
+ /* 3, 1, all caps */
+ /* 3, 2, all lower */
+ { 3, 3, CHR('s','m','c','p') }, /* small caps */
+ /* 3, 4, initial caps */
+ /* 3, 5, initial caps, small caps */
+ { 4, 0, CHR('v','r','t','2') }, /* vertical forms => vertical rotation */
+ /* { 4, 0, CHR('v','k','n','a') }, /\* vertical forms => vertical kana *\/ */
+ { 6, 0, CHR('t','n','u','m') }, /* monospace numbers => Tabular numbers */
+ { 10, 1, CHR('s','u','p','s') }, /* superior vertical position => superscript */
+ { 10, 2, CHR('s','u','b','s') }, /* inferior vertical position => subscript */
+ /* { 10, 3, CHR('s','u','p','s') }, /\* ordinal vertical position => superscript *\/ */
+ { 11, 1, CHR('a','f','r','c') }, /* vertical fraction => fraction ligature */
+ { 11, 2, CHR('f','r','a','c') }, /* diagonal fraction => fraction ligature */
+ { 16, 1, CHR('o','r','n','m') }, /* vertical fraction => fraction ligature */
+ { 20, 0, CHR('t','r','a','d') }, /* traditional characters => traditional forms */
+ /* { 20, 0, CHR('t','n','a','m') }, /\* traditional characters => traditional names *\/ */
+ { 20, 1, CHR('s','m','p','l') }, /* simplified characters */
+ { 20, 2, CHR('j','p','7','8') }, /* jis 1978 */
+ { 20, 3, CHR('j','p','8','3') }, /* jis 1983 */
+ { 20, 4, CHR('j','p','9','0') }, /* jis 1990 */
+ { 21, 0, CHR('o','n','u','m') }, /* lower case number => old style numbers */
+ { 22, 0, CHR('p','w','i','d') }, /* proportional text => proportional widths */
+ { 22, 2, CHR('h','w','i','d') }, /* half width text => half widths */
+ { 22, 3, CHR('f','w','i','d') }, /* full width text => full widths */
+ { 25, 0, CHR('f','w','i','d') }, /* full width kana => full widths */
+ { 25, 1, CHR('p','w','i','d') }, /* proportional kana => proportional widths */
+ { 26, 0, CHR('f','w','i','d') }, /* full width ideograph => full widths */
+ { 26, 1, CHR('p','w','i','d') }, /* proportional ideograph => proportional widths */
+ { 103, 0, CHR('h','w','i','d') }, /* half width cjk roman => half widths */
+ { 103, 1, CHR('p','w','i','d') }, /* proportional cjk roman => proportional widths */
+ { 103, 3, CHR('f','w','i','d') }, /* full width cjk roman => full widths */
+ { 0, 0, 0 }
+}, *user_macfeat_otftag;
+
+static struct macname fs_names[] = {
+ { &fs_names[146], 0, 0, "All Typographic Features" },
+ { &fs_names[147], 0, 0, "All Type Features" },
+ { &fs_names[148], 0, 0, "Ligatures" },
+ { &fs_names[149], 0, 0, "Required Ligatures" },
+ { &fs_names[150], 0, 0, "Common Ligatures" },
+ { &fs_names[151], 0, 0, "Rare Ligatures" },
+ { &fs_names[152], 0, 0, "Logo Ligatures" },
+ { &fs_names[153], 0, 0, "Rebus Ligatures" },
+ { &fs_names[154], 0, 0, "Diphthong Ligatures" },
+ { &fs_names[155], 0, 0, "Squared Ligatures" },
+ { &fs_names[156], 0, 0, "Abbreviated Squared Ligatures" },
+ { &fs_names[157], 0, 0, "Cursive connection" },
+ { &fs_names[158], 0, 0, "Unconnected" },
+ { &fs_names[159], 0, 0, "Partially connected" },
+ { &fs_names[160], 0, 0, "Cursive" },
+ { &fs_names[161], 0, 0, "Letter Case" },
+ { &fs_names[162], 0, 0, "Upper & Lower Case" },
+ { &fs_names[163], 0, 0, "All Capitals" },
+ { &fs_names[164], 0, 0, "All Lower Case" },
+ { &fs_names[165], 0, 0, "Small Caps" },
+ { &fs_names[166], 0, 0, "Initial Caps" },
+ { &fs_names[167], 0, 0, "Initial and Small Caps" },
+ { &fs_names[168], 0, 0, "Vertical Substitution" },
+ { &fs_names[169], 0, 0, "Vertical Substitution" },
+ { &fs_names[170], 0, 0, "No Vertical Substitution" },
+ { &fs_names[171], 0, 0, "Linguistic Rearrangement" },
+ { &fs_names[172], 0, 0, "Linguistic Rearrangement" },
+ { &fs_names[173], 0, 0, "No Linguistic Rearrangement" },
+ { &fs_names[174], 0, 0, "Number Spacing" },
+ { &fs_names[175], 0, 0, "Monospaced Numbers" },
+ { &fs_names[176], 0, 0, "Proportional Numbers" },
+ { &fs_names[177], 0, 0, "Smart Swashes" },
+ { &fs_names[178], 0, 0, "Word Initial Swashes" },
+ { &fs_names[179], 0, 0, "Word Final Swashes" },
+ { &fs_names[180], 0, 0, "Line Initial Swashes" },
+ { &fs_names[181], 0, 0, "Line Final Swashes" },
+ { &fs_names[182], 0, 0, "Non-Final Swashes" },
+ { &fs_names[183], 0, 0, "Diacritics" },
+ { &fs_names[184], 0, 0, "Show Diacritics" },
+ { &fs_names[185], 0, 0, "Hide Diacritics" },
+ { &fs_names[186], 0, 0, "Decompose Diacritics" },
+ { &fs_names[187], 0, 0, "Vertical Position" },
+ { &fs_names[188], 0, 0, "Normal Vertical Position" },
+ { &fs_names[189], 0, 0, "Superiors" },
+ { &fs_names[190], 0, 0, "Inferiors" },
+ { &fs_names[191], 0, 0, "Ordinals" },
+ { &fs_names[192], 0, 0, "Fractions" },
+ { &fs_names[193], 0, 0, "No Fractions" },
+ { &fs_names[194], 0, 0, "Vertical Fractions" },
+ { &fs_names[195], 0, 0, "Diagonal Fractions" },
+ { &fs_names[196], 0, 0, "Overlapping Characters" },
+ { &fs_names[197], 0, 0, "Prevent Overlap" },
+ { &fs_names[198], 0, 0, "Allow Overlap" },
+ { &fs_names[199], 0, 0, "Typographic Extras" },
+ { &fs_names[200], 0, 0, "Hyphens to Em-dash" },
+ { &fs_names[201], 0, 0, "Hyphen to En-dash" },
+ { &fs_names[202], 0, 0, "Unslashed Zero" },
+ { &fs_names[203], 0, 0, "Form Interrobang" },
+ { &fs_names[204], 0, 0, "Smart Quotes" },
+ { &fs_names[205], 0, 0, "Periods to Ellipsis" },
+ { &fs_names[206], 0, 0, "Mathematical Extras" },
+ { &fs_names[207], 0, 0, "Hyphen to Minus" },
+ { &fs_names[208], 0, 0, "Asterisk to Multiply" },
+ { &fs_names[209], 0, 0, "Slash to Divide" },
+ { &fs_names[210], 0, 0, "Inequality Ligatures" },
+ { &fs_names[211], 0, 0, "Exponents" },
+ { &fs_names[212], 0, 0, "Ornament Sets" },
+ { &fs_names[213], 0, 0, "No Ornaments" },
+ { &fs_names[214], 0, 0, "Dingbats" },
+ { &fs_names[215], 0, 0, "Pi Characters" },
+ { &fs_names[216], 0, 0, "Fleurons" },
+ { &fs_names[217], 0, 0, "Decorative Borders" },
+ { &fs_names[218], 0, 0, "International Symbols" },
+ { &fs_names[219], 0, 0, "Math Symbols" },
+ { &fs_names[220], 0, 0, "Character Alternates" },
+ { &fs_names[221], 0, 0, "No Alternates" },
+ { &fs_names[222], 0, 0, "Alternate Characters" },
+ { &fs_names[223], 0, 0, "Other Alternates" },
+ { &fs_names[224], 0, 0, "Design Complexity" },
+ { &fs_names[225], 0, 0, "Design Level 1" },
+ { &fs_names[226], 0, 0, "Design Level 2" },
+ { &fs_names[227], 0, 0, "Design Level 3" },
+ { &fs_names[228], 0, 0, "Design Level 4" },
+ { &fs_names[229], 0, 0, "Design Level 5" },
+ { &fs_names[230], 0, 0, "Style Options" },
+ { &fs_names[231], 0, 0, "No Style Options" },
+ { &fs_names[232], 0, 0, "Display Text" },
+ { &fs_names[233], 0, 0, "Engraved Text" },
+ { &fs_names[234], 0, 0, "Illuminated Caps" },
+ { &fs_names[235], 0, 0, "Titling Caps" },
+ { &fs_names[236], 0, 0, "Tall Caps" },
+ { &fs_names[237], 0, 0, "Character Shape" },
+ { &fs_names[238], 0, 0, "Traditional" },
+ { &fs_names[239], 0, 0, "Simplified" },
+ { &fs_names[240], 0, 0, "jis 1978" },
+ { &fs_names[241], 0, 0, "jis 1983" },
+ { &fs_names[242], 0, 0, "jis 1990" },
+ { &fs_names[243], 0, 0, "Traditional Alt 1" },
+ { &fs_names[244], 0, 0, "Traditional Alt 2" },
+ { &fs_names[245], 0, 0, "Traditional Alt 3" },
+ { &fs_names[246], 0, 0, "Traditional Alt 4" },
+ { &fs_names[247], 0, 0, "Traditional Alt 5" },
+ { &fs_names[248], 0, 0, "Expert" },
+ { &fs_names[249], 0, 0, "Number Case" },
+ { &fs_names[250], 0, 0, "Lower Case Numbers" },
+ { &fs_names[251], 0, 0, "Upper Case Numbers" },
+ { &fs_names[252], 0, 0, "Text Spacing" },
+ { &fs_names[253], 0, 0, "Proportional" },
+ { &fs_names[254], 0, 0, "Monospace" },
+ { &fs_names[255], 0, 0, "Transliteration" },
+ { &fs_names[256], 0, 0, "No Transliteration" },
+ { &fs_names[257], 0, 0, "Hanja To Hangul" },
+ { &fs_names[258], 0, 0, "Hiragana to Katakana" },
+ { &fs_names[259], 0, 0, "Katakana to Hiragana" },
+ { &fs_names[260], 0, 0, "Katakana to Roman" },
+ { &fs_names[261], 0, 0, "Roman to Hiragana" },
+ { &fs_names[262], 0, 0, "Roman to Katakana" },
+ { &fs_names[263], 0, 0, "Hanja To Hangul Alt 1" },
+ { &fs_names[264], 0, 0, "Hanja To Hangul Alt 2" },
+ { &fs_names[265], 0, 0, "Hanja To Hangul Alt 3" },
+ { &fs_names[266], 0, 0, "Annotation" },
+ { &fs_names[267], 0, 0, "No Annotation" },
+ { &fs_names[268], 0, 0, "Box Annotation" },
+ { &fs_names[269], 0, 0, "Rounded Box Annotation" },
+ { &fs_names[270], 0, 0, "Circle Annotation" },
+ { &fs_names[271], 0, 0, "Inverted Circle Annotation" },
+ { &fs_names[272], 0, 0, "Parenthesized Annotation" },
+ { &fs_names[273], 0, 0, "Period Annotation" },
+ { &fs_names[274], 0, 0, "Roman Numeral Annotation" },
+ { &fs_names[275], 0, 0, "Diamond Annotation" },
+ { &fs_names[276], 0, 0, "Kana Spacing" },
+ { &fs_names[277], 0, 0, "Full-Width" },
+ { &fs_names[278], 0, 0, "Proportional" },
+ { &fs_names[136], 0, 0, "Ideographic Spacing" },
+ { &fs_names[137], 0, 0, "Full-Width" },
+ { &fs_names[138], 0, 0, "Proportional" },
+ { &fs_names[279], 0, 0, "Ideographic Spacing" },
+ { &fs_names[280], 0, 0, "Full-Width" },
+ { &fs_names[281], 0, 0, "Proportional" },
+ { &fs_names[282], 0, 0, "CJK Roman Spacing" },
+ { &fs_names[283], 0, 0, "Half-Width" },
+ { &fs_names[284], 0, 0, "Proportional" },
+ { &fs_names[285], 0, 0, "Default" },
+ { &fs_names[286], 0, 0, "Full-Width" },
+ { &fs_names[287], 0, 0, "Unicode Decomposition" },
+ { &fs_names[288], 0, 0, "Canonical Decomposition" },
+ { &fs_names[289], 0, 1, "Fonctions typographiques" },
+ { &fs_names[290], 0, 1, "Toutes fonctions typographiques" },
+ { &fs_names[291], 0, 1, "Ligatures" },
+ { &fs_names[397], 0, 1, "Ligatures Requises" },
+ { &fs_names[292], 0, 1, "Ligatures Usuelles" },
+ { &fs_names[293], 0, 1, "Ligatures Rares" },
+ { &fs_names[400], 0, 1, "Ligatures Logos" },
+ { &fs_names[401], 0, 1, "Ligatures R\216bus" },
+ { &fs_names[334], 0, 1, "Ligatures Diphtongues" },
+ { &fs_names[403], 0, 1, "Ligatures Carr\216es" },
+ { &fs_names[404], 0, 1, "Ligatures Carr\216es Abr\217g\216es" },
+ { &fs_names[405], 0, 1, "Connection des Cursives" },
+ { &fs_names[406], 0, 1, "Non connect\216es" },
+ { &fs_names[407], 0, 1, "Partiellement connect\216es" },
+ { &fs_names[408], 0, 1, "Pleinement connect\216es" },
+ { &fs_names[409], 0, 1, "Casse" },
+ { &fs_names[295], 0, 1, "Majuscules & Minuscules" },
+ { &fs_names[296], 0, 1, "Tout Majuscule" },
+ { &fs_names[412], 0, 1, "Tout Minuscule" },
+ { &fs_names[297], 0, 1, "Petites Majuscules" },
+ { &fs_names[414], 0, 1, "Initiales Majuscules" },
+ { &fs_names[415], 0, 1, "Initiales + Petites Majuscules" },
+ { &fs_names[416], 0, 1, "Substitution Verticale" },
+ { &fs_names[417], 0, 1, "Substitution vertical" },
+ { &fs_names[418], 0, 1, "Aucun Substitution vertical" },
+ { &fs_names[419], 0, 1, "R\216arrangement Linguistique" },
+ { &fs_names[420], 0, 1, "Avec R\216arrangement Linguistique" },
+ { &fs_names[421], 0, 1, "Pas de R\216arrangement Linguistique" },
+ { &fs_names[422], 0, 1, "Espacement des chiffres" },
+ { &fs_names[299], 0, 1, "Chiffres de largeur fixe" },
+ { &fs_names[300], 0, 1, "Chiffres Proportionnels" },
+ { &fs_names[301], 0, 1, "Parafes" },
+ { &fs_names[304], 0, 1, "Parafes en d\216but de mot" },
+ { &fs_names[305], 0, 1, "Parafes en fin de mot" },
+ { &fs_names[303], 0, 1, "Parafes en d\216but de ligne" },
+ { &fs_names[302], 0, 1, "Parafes en fin de ligne" },
+ { &fs_names[306], 0, 1, "Autres Parafes" },
+ { &fs_names[431], 0, 1, "Signes Diacritiques" },
+ { &fs_names[339], 0, 1, "Montrer les Signes Diacritiques" },
+ { &fs_names[433], 0, 1, "Cacher les Signes Diacritiques" },
+ { &fs_names[337], 0, 1, "D\216composer les Signes Diacritiques" },
+ { &fs_names[435], 0, 1, "Position Verticale" },
+ { &fs_names[309], 0, 1, "Position Verticale Normale" },
+ { &fs_names[308], 0, 1, "Position Sup\216rieure" },
+ { &fs_names[310], 0, 1, "Position Inf\216rieure" },
+ { &fs_names[311], 0, 1, "Position Sup\216rieure Contextuelle (Num\216rique)" },
+ { &fs_names[440], 0, 1, "Fractions" },
+ { &fs_names[313], 0, 1, "Pas de Fractions" },
+ { &fs_names[442], 0, 1, "Fractions Verticales" },
+ { &fs_names[314], 0, 1, "Fractions en Diagonale" },
+ { &fs_names[444], 0, 1, "Chevauchement des caract\217res" },
+ { &fs_names[316], 0, 1, "\203viter le chevauchement" },
+ { &fs_names[446], 0, 1, "Laisser le Chevauchement" },
+ { &fs_names[317], 0, 1, "Extras Typographiques" },
+ { &fs_names[448], 0, 1, "Tirets vers Tiret Large" },
+ { &fs_names[449], 0, 1, "Tiret vers Tiret Moyen" },
+ { &fs_names[450], 0, 1, "Z\216ro non Barr\216" },
+ { &fs_names[451], 0, 1, "?! vers InterroExclam" },
+ { &fs_names[336], 0, 1, "Apostrophes Intelligentes" },
+ { &fs_names[453], 0, 1, "... vers Ellipse" },
+ { &fs_names[318], 0, 1, "Extras Math\216matiques" },
+ { &fs_names[319], 0, 1, "Tiret vers Moins" },
+ { &fs_names[320], 0, 1, "\203toile vers Multipli\216" },
+ { &fs_names[457], 0, 1, "Barre pench\216e vers Divis\216" },
+ { &fs_names[458], 0, 1, "Ligatures pour In\216galit\216s" },
+ { &fs_names[459], 0, 1, "Passage en Exposant" },
+ { &fs_names[460], 0, 1, "Ensembles Ornementaux" },
+ { &fs_names[322], 0, 1, "Pas d'Ornements" },
+ { &fs_names[462], 0, 1, "Dingbats" },
+ { &fs_names[463], 0, 1, "Symboles Sp\216cifiques \210 un Domaine" },
+ { &fs_names[323], 0, 1, "Fleurons" },
+ { &fs_names[465], 0, 1, "Bordures D\216coratives" },
+ { &fs_names[466], 0, 1, "Symboles Internationaux" },
+ { &fs_names[467], 0, 1, "Symboles Math\216matiques" },
+ { &fs_names[468], 0, 1, "Caract\217res Alternatifs" },
+ { &fs_names[325], 0, 1, "Sans Caract\217res Alternatifs" },
+ { &fs_names[470], 0, 1, "Avec Caract\217res Alternatifs" },
+ { &fs_names[471], 0, 1, "Autres Caract\217res Alternatifs" },
+ { &fs_names[472], 0, 1, "Complexit\216 du Dessin" },
+ { &fs_names[327], 0, 1, "Dessin Niveau 1" },
+ { &fs_names[328], 0, 1, "Dessin Niveau 2" },
+ { &fs_names[329], 0, 1, "Dessin Niveau 3" },
+ { &fs_names[330], 0, 1, "Dessin Niveau 4" },
+ { &fs_names[477], 0, 1, "Dessin Niveau 5" },
+ { &fs_names[478], 0, 1, "Options de Style" },
+ { &fs_names[479], 0, 1, "Texte Ordinaire" },
+ { &fs_names[480], 0, 1, "Texte Majeur" },
+ { &fs_names[481], 0, 1, "Texte en Relief" },
+ { &fs_names[482], 0, 1, "Majuscules Enlumin\216es" },
+ { &fs_names[483], 0, 1, "Majuscules de Titrage" },
+ { &fs_names[484], 0, 1, "Majuscules avec Descendantes" },
+ { &fs_names[485], 0, 1, "Forme des Caract\217res" },
+ { &fs_names[486], 0, 1, "Traditionelle" },
+ { &fs_names[487], 0, 1, "Simplifi\216e" },
+ { &fs_names[488], 0, 1, "jis 1978" },
+ { &fs_names[489], 0, 1, "jis 1983" },
+ { &fs_names[490], 0, 1, "jis 1990" },
+ { &fs_names[491], 0, 1, "Traditionelle Alt 1" },
+ { &fs_names[492], 0, 1, "Traditionelle Alt 2" },
+ { &fs_names[493], 0, 1, "Traditionelle Alt 3" },
+ { &fs_names[494], 0, 1, "Traditionelle Alt 4" },
+ { &fs_names[495], 0, 1, "Traditionelle Alt 5" },
+ { &fs_names[496], 0, 1, "Expert" },
+ { &fs_names[497], 0, 1, "Style des Chiffres" },
+ { &fs_names[332], 0, 1, "Chiffres Anciens (bas de casse)" },
+ { &fs_names[333], 0, 1, "Chiffres Conventionnels (alignants)" },
+ { &fs_names[500], 0, 1, "Espacement du Texte" },
+ { &fs_names[501], 0, 1, "Proportionel" },
+ { &fs_names[502], 0, 1, "Fixe" },
+ { &fs_names[503], 0, 1, "Translitt\216ration" },
+ { &fs_names[504], 0, 1, "Sans Translitt\216ration" },
+ { &fs_names[505], 0, 1, "Hanja vers Hangul" },
+ { &fs_names[506], 0, 1, "Hiragana vers Katakana" },
+ { &fs_names[507], 0, 1, "Katakana vers Hiragana" },
+ { &fs_names[508], 0, 1, "Katakana vers Roman" },
+ { &fs_names[509], 0, 1, "Roman vers Hiragana" },
+ { &fs_names[510], 0, 1, "Roman vers Katakana" },
+ { &fs_names[511], 0, 1, "Hanja vers Hangul Alt 1" },
+ { &fs_names[512], 0, 1, "Hanja vers Hangul Alt 2" },
+ { &fs_names[513], 0, 1, "Hanja vers Hangul Alt 3" },
+ { &fs_names[514], 0, 1, "Annotations" },
+ { &fs_names[515], 0, 1, "Sans Annotations" },
+ { &fs_names[516], 0, 1, "Annotations Encadr\216es" },
+ { &fs_names[517], 0, 1, "Annotations en Cadres arrondis" },
+ { &fs_names[518], 0, 1, "Annotations dans des Cercles" },
+ { &fs_names[519], 0, 1, "Annotations dans des Cercles inverses" },
+ { &fs_names[520], 0, 1, "Annotations Parenth\217s\216es" },
+ { &fs_names[521], 0, 1, "Annotations avec des ." },
+ { &fs_names[522], 0, 1, "Annotations en Chiffres Romains" },
+ { &fs_names[523], 0, 1, "Annotations Diamant" },
+ { &fs_names[524], 0, 1, "Espacement Kana" },
+ { &fs_names[525], 0, 1, "Pleine Taille" },
+ { &fs_names[526], 0, 1, "Proportionnel" },
+ { &fs_names[527], 0, 1, "Espacement des Id\216ogrammes" },
+ { &fs_names[528], 0, 1, "Pleine Taille" },
+ { &fs_names[529], 0, 1, "Proportionnel" },
+ { &fs_names[533], 0, 1, "Espacement des CJK romains" },
+ { &fs_names[534], 0, 1, "Pleine Taille" },
+ { &fs_names[535], 0, 1, "Proportionnel" },
+ { &fs_names[536], 0, 1, "Romains par D\216faut" },
+ { &fs_names[537], 0, 1, "Romains Pleine Taille" },
+ { &fs_names[340], 0, 1, "D\216composition Unicode" },
+ { &fs_names[341], 0, 1, "D\216composition Canonique" },
+ { &fs_names[342], 0, 2, "Alle typografischen M\232glichkeiten" },
+ { &fs_names[343], 0, 2, "Alle Auszeichnungsarten" },
+ { &fs_names[344], 0, 2, "Ligaturen" },
+ { &fs_names[346], 0, 2, "Normale Ligaturen" },
+ { &fs_names[345], 0, 2, "Seltene Ligaturen" },
+ { &fs_names[347], 0, 2, "Schreibweise" },
+ { &fs_names[348], 0, 2, "Gro\247/Klein" },
+ { &fs_names[349], 0, 2, "Gro\247" },
+ { &fs_names[350], 0, 2, "Kapit\212lchen" },
+ { &fs_names[351], 0, 2, "Ziffernabst\212nde" },
+ { &fs_names[352], 0, 2, "Tabellenziffern" },
+ { &fs_names[353], 0, 2, "Proportionalziffern" },
+ { &fs_names[354], 0, 2, "Zierbuchstabe" },
+ { &fs_names[355], 0, 2, "Zierbuchstabe Zeilenende" },
+ { &fs_names[356], 0, 2, "Zierbuchstabe Zeilenanfang" },
+ { &fs_names[357], 0, 2, "Zierbuchstabe Wortanfang" },
+ { &fs_names[358], 0, 2, "Zierbuchstabe Wortende" },
+ { &fs_names[359], 0, 2, "Zierbuchstabe Beliebig" },
+ { &fs_names[360], 0, 2, "Hoch-/Tiefstellen" },
+ { &fs_names[361], 0, 2, "Hochgestellt" },
+ { &fs_names[362], 0, 2, "Normal" },
+ { &fs_names[363], 0, 2, "Tiefgestellt" },
+ { &fs_names[364], 0, 2, "Ordnungszahlen" },
+ { &fs_names[365], 0, 2, "Br\237che" },
+ { &fs_names[367], 0, 2, "Kein Bruche" },
+ { &fs_names[366], 0, 2, "Diagonaler Bruch" },
+ { &fs_names[368], 0, 2, "\206berlappen" },
+ { &fs_names[369], 0, 2, "\206berlappen vermeiden" },
+ { &fs_names[335], 0, 2, "Typographische Extras" },
+ { &fs_names[370], 0, 2, "Mathematische Sonderzeichen" },
+ { &fs_names[371], 0, 2, "Minuszeichen" },
+ { &fs_names[372], 0, 2, "Malzeichen" },
+ { &fs_names[373], 0, 2, "Sonderzeichen" },
+ { &fs_names[374], 0, 2, "Keine Sonderzeichen" },
+ { &fs_names[375], 0, 2, "Pflanzenornamente" },
+ { &fs_names[376], 0, 2, "Alternative Zeichen" },
+ { &fs_names[377], 0, 2, "Keine Alternativ-Figuren" },
+ { &fs_names[378], 0, 2, "Modifikationsgrad" },
+ { &fs_names[379], 0, 2, "Design Stufe 1" },
+ { &fs_names[380], 0, 2, "Design Stufe 2" },
+ { &fs_names[381], 0, 2, "Design Stufe 3" },
+ { &fs_names[382], 0, 2, "Design Stufe 4" },
+ { &fs_names[383], 0, 2, "Zahlendarstellung" },
+ { &fs_names[384], 0, 2, "Medi\276val-Ziffern" },
+ { &fs_names[385], 0, 2, "Normale Ziffern" },
+ { &fs_names[386], 0, 2, "Diphtong Ligaturen" },
+ { &fs_names[387], 0, 2, "Typografische Extras" },
+ { &fs_names[388], 0, 2, "Ersetzen mit geschwungenen Anf\237hrungszeichen" },
+ { &fs_names[389], 0, 2, "Keine Ver\212nderung" },
+ { &fs_names[390], 0, 2, "Diakritische Zeichen" },
+ { &fs_names[391], 0, 2, "Diakritische Zeichen zeigen" },
+ { &fs_names[392], 0, 2, "In Unicode zerlegen" },
+ { &fs_names[393], 0, 2, "anerkannte Komposition" },
+ { &fs_names[394], 0, 3, "Funzioni Tipografiche" },
+ { &fs_names[395], 0, 3, "Tutte le Funzioni" },
+ { &fs_names[396], 0, 3, "Legature" },
+ { &fs_names[399], 0, 3, "Legature Rare" },
+ { &fs_names[398], 0, 3, "Legature pi\235 Comuni" },
+ { NULL, 0, 3, "Maiuscolo o Minuscolo" },
+ { &fs_names[410], 0, 3, "Maiuscolo & minuscolo" },
+ { &fs_names[411], 0, 3, "Tutto in Maiuscolo" },
+ { &fs_names[413], 0, 3, "Maiuscoletto" },
+ { NULL, 0, 3, "Spaziatura numeri" },
+ { &fs_names[423], 0, 3, "Monospaziata" },
+ { &fs_names[424], 0, 3, "Proporzionale" },
+ { &fs_names[425], 0, 3, "Lettere Ornate" },
+ { &fs_names[429], 0, 3, "Fine Riga" },
+ { &fs_names[428], 0, 3, "Inizio Riga" },
+ { &fs_names[426], 0, 3, "All'inizio" },
+ { &fs_names[427], 0, 3, "Alla Fine" },
+ { &fs_names[430], 0, 3, "All'interno" },
+ { NULL, 0, 3, "Posizione Verticale" },
+ { &fs_names[437], 0, 3, "Apice" },
+ { &fs_names[436], 0, 3, "Posizione Normale" },
+ { &fs_names[438], 0, 3, "Pedice" },
+ { &fs_names[439], 0, 3, "Ordinali" },
+ { NULL, 0, 3, "Frazioni" },
+ { &fs_names[443], 0, 3, "Frazioni Diagonali" },
+ { &fs_names[441], 0, 3, "Nessuna Frazione" },
+ { NULL, 0, 3, "Caratteri Sovrapposti" },
+ { &fs_names[445], 0, 3, "Nessuna Sovrapposizione" },
+ { &fs_names[454], 0, 3, "Conversioni Matematiche" },
+ { &fs_names[455], 0, 3, "Trattino per Sottrazione" },
+ { &fs_names[456], 0, 3, "Asterisco per Moltiplicazione" },
+ { NULL, 0, 3, "Impostazione Ornamenti" },
+ { &fs_names[461], 0, 3, "Nessun Ornamento" },
+ { &fs_names[464], 0, 3, "Fleurons" },
+ { NULL, 0, 3, "Caratteri Alternativi" },
+ { &fs_names[469], 0, 3, "Nessuna alternativa" },
+ { NULL, 0, 3, "Design Complexity" },
+ { &fs_names[473], 0, 3, "Livello 1" },
+ { &fs_names[474], 0, 3, "Livello 2" },
+ { &fs_names[475], 0, 3, "Livello 3" },
+ { &fs_names[476], 0, 3, "Livello 4" },
+ { NULL, 0, 3, "Posizione Numeri" },
+ { &fs_names[498], 0, 3, "Sopra la Linea Base" },
+ { &fs_names[499], 0, 3, "Tradizionale" },
+ { &fs_names[402], 0, 3, "Legature dittonghi" },
+ { &fs_names[447], 0, 3, "Extra tipografici" },
+ { &fs_names[452], 0, 3, "Virgolette eleganti" },
+ { &fs_names[434], 0, 3, "Nessuna modifica" },
+ { NULL, 0, 3, "Diacritici" },
+ { &fs_names[432], 0, 3, "Mostra diacritici" },
+ { &fs_names[538], 0, 3, "Scomposizione unicode" },
+ { &fs_names[539], 0, 3, "Composizione canonica" },
+ { NULL, 0, 4, "Alle typografische kenmerken" },
+ { NULL, 0, 4, "Alle typekenmerken" },
+ { NULL, 0, 4, "Ligaturen" },
+ { NULL, 0, 4, "Vereiste ligaturen" },
+ { NULL, 0, 4, "Gemeenschappelijke Ligaturen" },
+ { NULL, 0, 4, "Zeldzame ligaturen" },
+ { NULL, 0, 4, "Logoligaturen" },
+ { NULL, 0, 4, "Rebusligaturen" },
+ { NULL, 0, 4, "Tweeklankligaturen" },
+ { NULL, 0, 4, "Vierkante ligaturen" },
+ { NULL, 0, 4, "Afgekorte vierkante ligatures" },
+ { NULL, 0, 4, "Cursieve verbinding" },
+ { NULL, 0, 4, "Niet verbonden" },
+ { NULL, 0, 4, "Gedeeltelijk verbonden" },
+ { NULL, 0, 4, "Cursief" },
+ { NULL, 0, 4, "Hoofd/kleine letters" },
+ { NULL, 0, 4, "Hoofd- en kleine letters" },
+ { NULL, 0, 4, "Alles in hoofdletters" },
+ { NULL, 0, 4, "Alles in kleine letters" },
+ { NULL, 0, 4, "Kleine hoofdletters" },
+ { NULL, 0, 4, "Eerste hoofdletters" },
+ { NULL, 0, 4, "Eerste en kleine hoofdletters" },
+ { NULL, 0, 4, "Verticale vervanging" },
+ { NULL, 0, 4, "Verticale vervanging" },
+ { NULL, 0, 4, "Geen verticale vervanging" },
+ { NULL, 0, 4, "Taalkundige herschikking" },
+ { NULL, 0, 4, "Taalkundige herschikking" },
+ { NULL, 0, 4, "Geen taalkundige herschikking" },
+ { NULL, 0, 4, "Nummerafstanden" },
+ { NULL, 0, 4, "Vaste nummerafstanden" },
+ { NULL, 0, 4, "Proportionele nummers" },
+ { NULL, 0, 4, "Slimme versieringingen" },
+ { NULL, 0, 4, "Woordbegin-versieringingen" },
+ { NULL, 0, 4, "Woordeinde-versieringingen" },
+ { NULL, 0, 4, "Regelbegin-versieringingen" },
+ { NULL, 0, 4, "Regeleinde-versieringingen" },
+ { NULL, 0, 4, "Niet-einde-versieringingen" },
+ { NULL, 0, 4, "Accenten" },
+ { NULL, 0, 4, "Accenten tonen" },
+ { NULL, 0, 4, "Accenten verbergen" },
+ { NULL, 0, 4, "Accenten ontleden" },
+ { NULL, 0, 4, "Verticale positie" },
+ { NULL, 0, 4, "Normale verticale positie" },
+ { NULL, 0, 4, "Superieuren" },
+ { NULL, 0, 4, "Inferieuren" },
+ { NULL, 0, 4, "Ordinalen" },
+ { NULL, 0, 4, "Breuken" },
+ { NULL, 0, 4, "Geen breuken" },
+ { NULL, 0, 4, "Verticale breuken" },
+ { NULL, 0, 4, "Diagonale breuken" },
+ { NULL, 0, 4, "Overlappende tekens" },
+ { NULL, 0, 4, "Overlap voorkomen" },
+ { NULL, 0, 4, "Overlap toestaan" },
+ { NULL, 0, 4, "Typografische extras" },
+ { NULL, 0, 4, "Koppelteken naar em-streep" },
+ { NULL, 0, 4, "Koppelteken naar en-streepje" },
+ { NULL, 0, 4, "Nul zonder schuine streep" },
+ { NULL, 0, 4, "Vorm interrobang" },
+ { NULL, 0, 4, "Slimme aanhalingstekens" },
+ { NULL, 0, 4, "Punten naar ellipsen" },
+ { NULL, 0, 4, "Wiskundige extras" },
+ { NULL, 0, 4, "Koppelteken naar minteken" },
+ { NULL, 0, 4, "Sterretje naar multiplicatieteken" },
+ { NULL, 0, 4, "Schuine streep naar deelteken" },
+ { NULL, 0, 4, "Ongelijkheidsligaturen" },
+ { NULL, 0, 4, "Exponenten aan" },
+ { NULL, 0, 4, "Ornamentenverzamelingen" },
+ { NULL, 0, 4, "Geen ornamenten" },
+ { NULL, 0, 4, "Dingbats" },
+ { NULL, 0, 4, "Pi-tekens" },
+ { NULL, 0, 4, "Fleurons" },
+ { NULL, 0, 4, "Decoratieve randen" },
+ { NULL, 0, 4, "Internationale symbolen" },
+ { NULL, 0, 4, "Wiskundige Symbolen" },
+ { NULL, 0, 4, "Tekenalternatieven" },
+ { NULL, 0, 4, "Geen alternatieven" },
+ { NULL, 0, 4, "Alternatieve tekens" },
+ { NULL, 0, 4, "Andere alternatieven" },
+ { NULL, 0, 4, "Ontwepcomplexiteit" },
+ { NULL, 0, 4, "Ontwerpniveau 1" },
+ { NULL, 0, 4, "Ontwerpniveau 2" },
+ { NULL, 0, 4, "Ontwerpniveau 3" },
+ { NULL, 0, 4, "Ontwerpniveau 4" },
+ { NULL, 0, 4, "Ontwerpniveau 5" },
+ { NULL, 0, 4, "Stijlopties" },
+ { NULL, 0, 4, "Geen stijl ptions" },
+ { NULL, 0, 4, "Tekst tonen" },
+ { NULL, 0, 4, "Gegraveerde tekst" },
+ { NULL, 0, 4, "Uitgelichte koppen" },
+ { NULL, 0, 4, "Titelkoppen" },
+ { NULL, 0, 4, "Eindkoppen" },
+ { NULL, 0, 4, "Tekenvorm" },
+ { NULL, 0, 4, "Traditioneel" },
+ { NULL, 0, 4, "Vereenvoudigd" },
+ { NULL, 0, 4, "jis 1978" },
+ { NULL, 0, 4, "jis 1983" },
+ { NULL, 0, 4, "jis 1990" },
+ { NULL, 0, 4, "Traditioneel Alt 1" },
+ { NULL, 0, 4, "Traditioneel Alt 2" },
+ { NULL, 0, 4, "Traditioneel Alt 3" },
+ { NULL, 0, 4, "Traditioneel Alt 4" },
+ { NULL, 0, 4, "Traditioneel Alt 5" },
+ { NULL, 0, 4, "Expert" },
+ { NULL, 0, 4, "Nummerhoogte" },
+ { NULL, 0, 4, "Kleine nummers" },
+ { NULL, 0, 4, "Grote nummers" },
+ { NULL, 0, 4, "TekstspatiQring" },
+ { NULL, 0, 4, "Proportioneel" },
+ { NULL, 0, 4, "Gelijk gespatieerd" },
+ { NULL, 0, 4, "Transliteratie" },
+ { NULL, 0, 4, "Geen transliteratie" },
+ { NULL, 0, 4, "Hanja naar Hangul" },
+ { NULL, 0, 4, "Hiragana naar Katakana" },
+ { NULL, 0, 4, "Katakana naar Hiragana" },
+ { NULL, 0, 4, "Katakana naar Romeins" },
+ { NULL, 0, 4, "Romeins naar Hiragana" },
+ { NULL, 0, 4, "Romeins naar Katakana" },
+ { NULL, 0, 4, "Hanja naar Hangul Alt 1" },
+ { NULL, 0, 4, "Hanja naar Hangul Alt 2" },
+ { NULL, 0, 4, "Hanja naar Hangul Alt 3" },
+ { NULL, 0, 4, "Annotatie" },
+ { NULL, 0, 4, "Geen annotatie" },
+ { NULL, 0, 4, "Vierkantannotatie" },
+ { NULL, 0, 4, "Ronde-vierkantannotatie" },
+ { NULL, 0, 4, "Cirkelannotatie" },
+ { NULL, 0, 4, "Omgekeerde cirkelannotatie" },
+ { NULL, 0, 4, "Aanhalingstekenannotatie" },
+ { NULL, 0, 4, "Puntannotatie" },
+ { NULL, 0, 4, "Romeinse-cijferannotatie" },
+ { NULL, 0, 4, "Diamantannotatie" },
+ { NULL, 0, 4, "Kana spatiQring" },
+ { NULL, 0, 4, "Volledige breedte" },
+ { NULL, 0, 4, "Proportioneel" },
+ { &fs_names[530], 0, 4, "Ideographische spatiQring" },
+ { &fs_names[531], 0, 4, "Volledige breedte" },
+ { &fs_names[532], 0, 4, "Proportioneel" },
+ { NULL, 0, 4, "IdeograafspatiQring" },
+ { NULL, 0, 4, "Volledige breedte" },
+ { NULL, 0, 4, "Proportioneel" },
+ { NULL, 0, 4, "CJK Romeinse spatiQring" },
+ { NULL, 0, 4, "Halve breedte" },
+ { NULL, 0, 4, "Proportioneel" },
+ { NULL, 0, 4, "Default" },
+ { NULL, 0, 4, "Volledige breedte" },
+ { NULL, 0, 4, "Unicodeontleding" },
+ { NULL, 0, 4, "Canonieke ontleding" },
+ { NULL, 0, 0, NULL }
+};
+
+static struct macsetting fs_settings[] = {
+ { NULL, 0, 0, &fs_names[1], 0 },
+ { NULL, 14, 0, &fs_names[10], 0 },
+ { &fs_settings[1], 12, 0, &fs_names[9], 0 },
+ { &fs_settings[2], 10, 0, &fs_names[8], 0 },
+ { &fs_settings[3], 8, 0, &fs_names[7], 0 },
+ { &fs_settings[4], 6, 0, &fs_names[6], 0 },
+ { &fs_settings[5], 4, 0, &fs_names[5], 0 },
+ { &fs_settings[6], 2, 0, &fs_names[4], 1 },
+ { &fs_settings[7], 0, 0, &fs_names[3], 1 },
+ { NULL, 2, 0, &fs_names[14], 0 },
+ { &fs_settings[9], 1, 0, &fs_names[13], 0 },
+ { &fs_settings[10], 0, 0, &fs_names[12], 1 },
+ { NULL, 5, 0, &fs_names[21], 0 },
+ { &fs_settings[12], 4, 0, &fs_names[20], 0 },
+ { &fs_settings[13], 3, 0, &fs_names[19], 0 },
+ { &fs_settings[14], 2, 0, &fs_names[18], 0 },
+ { &fs_settings[15], 1, 0, &fs_names[17], 0 },
+ { &fs_settings[16], 0, 0, &fs_names[16], 1 },
+ { NULL, 1, 0, &fs_names[24], 0 },
+ { &fs_settings[18], 0, 0, &fs_names[23], 1 },
+ { NULL, 1, 0, &fs_names[27], 0 },
+ { &fs_settings[20], 0, 0, &fs_names[26], 1 },
+ { NULL, 1, 0, &fs_names[30], 0 },
+ { &fs_settings[22], 0, 0, &fs_names[29], 1 },
+ { NULL, 8, 0, &fs_names[36], 0 },
+ { &fs_settings[24], 6, 0, &fs_names[35], 0 },
+ { &fs_settings[25], 4, 0, &fs_names[34], 0 },
+ { &fs_settings[26], 2, 0, &fs_names[33], 0 },
+ { &fs_settings[27], 0, 0, &fs_names[32], 0 },
+ { NULL, 2, 0, &fs_names[40], 0 },
+ { &fs_settings[29], 1, 0, &fs_names[39], 0 },
+ { &fs_settings[30], 0, 0, &fs_names[38], 1 },
+ { NULL, 3, 0, &fs_names[45], 0 },
+ { &fs_settings[32], 2, 0, &fs_names[44], 0 },
+ { &fs_settings[33], 1, 0, &fs_names[43], 0 },
+ { &fs_settings[34], 0, 0, &fs_names[42], 1 },
+ { NULL, 2, 0, &fs_names[49], 0 },
+ { &fs_settings[36], 1, 0, &fs_names[48], 0 },
+ { &fs_settings[37], 0, 0, &fs_names[47], 1 },
+ { NULL, 1, 0, &fs_names[52], 0 },
+ { &fs_settings[39], 0, 0, &fs_names[51], 1 },
+ { NULL, 10, 0, &fs_names[59], 0 },
+ { &fs_settings[41], 8, 0, &fs_names[58], 0 },
+ { &fs_settings[42], 6, 0, &fs_names[57], 0 },
+ { &fs_settings[43], 4, 0, &fs_names[56], 0 },
+ { &fs_settings[44], 2, 0, &fs_names[55], 0 },
+ { &fs_settings[45], 0, 0, &fs_names[54], 0 },
+ { NULL, 8, 0, &fs_names[65], 0 },
+ { &fs_settings[47], 6, 0, &fs_names[64], 0 },
+ { &fs_settings[48], 4, 0, &fs_names[63], 0 },
+ { &fs_settings[49], 2, 0, &fs_names[62], 0 },
+ { &fs_settings[50], 0, 0, &fs_names[61], 0 },
+ { NULL, 6, 0, &fs_names[73], 0 },
+ { &fs_settings[52], 5, 0, &fs_names[72], 0 },
+ { &fs_settings[53], 4, 0, &fs_names[71], 0 },
+ { &fs_settings[54], 3, 0, &fs_names[70], 0 },
+ { &fs_settings[55], 2, 0, &fs_names[69], 0 },
+ { &fs_settings[56], 1, 0, &fs_names[68], 0 },
+ { &fs_settings[57], 0, 0, &fs_names[67], 1 },
+ { NULL, 2, 0, &fs_names[77], 0 },
+ { &fs_settings[59], 1, 0, &fs_names[76], 0 },
+ { &fs_settings[60], 0, 0, &fs_names[75], 1 },
+ { NULL, 4, 0, &fs_names[83], 0 },
+ { &fs_settings[62], 3, 0, &fs_names[82], 0 },
+ { &fs_settings[63], 2, 0, &fs_names[81], 0 },
+ { &fs_settings[64], 1, 0, &fs_names[80], 0 },
+ { &fs_settings[65], 0, 0, &fs_names[79], 1 },
+ { NULL, 5, 0, &fs_names[90], 0 },
+ { &fs_settings[67], 4, 0, &fs_names[89], 0 },
+ { &fs_settings[68], 3, 0, &fs_names[88], 0 },
+ { &fs_settings[69], 2, 0, &fs_names[87], 0 },
+ { &fs_settings[70], 1, 0, &fs_names[86], 0 },
+ { &fs_settings[71], 0, 0, &fs_names[85], 1 },
+ { NULL, 10, 0, &fs_names[102], 0 },
+ { &fs_settings[73], 9, 0, &fs_names[101], 0 },
+ { &fs_settings[74], 8, 0, &fs_names[100], 0 },
+ { &fs_settings[75], 7, 0, &fs_names[99], 0 },
+ { &fs_settings[76], 6, 0, &fs_names[98], 0 },
+ { &fs_settings[77], 5, 0, &fs_names[97], 0 },
+ { &fs_settings[78], 4, 0, &fs_names[96], 0 },
+ { &fs_settings[79], 3, 0, &fs_names[95], 0 },
+ { &fs_settings[80], 2, 0, &fs_names[94], 0 },
+ { &fs_settings[81], 1, 0, &fs_names[93], 0 },
+ { &fs_settings[82], 0, 0, &fs_names[92], 1 },
+ { NULL, 1, 0, &fs_names[105], 1 },
+ { &fs_settings[84], 0, 0, &fs_names[104], 0 },
+ { NULL, 1, 0, &fs_names[108], 0 },
+ { &fs_settings[86], 0, 0, &fs_names[107], 1 },
+ { NULL, 9, 0, &fs_names[119], 0 },
+ { &fs_settings[88], 8, 0, &fs_names[118], 0 },
+ { &fs_settings[89], 7, 0, &fs_names[117], 0 },
+ { &fs_settings[90], 6, 0, &fs_names[116], 0 },
+ { &fs_settings[91], 5, 0, &fs_names[115], 0 },
+ { &fs_settings[92], 4, 0, &fs_names[114], 0 },
+ { &fs_settings[93], 3, 0, &fs_names[113], 0 },
+ { &fs_settings[94], 2, 0, &fs_names[112], 0 },
+ { &fs_settings[95], 1, 0, &fs_names[111], 0 },
+ { &fs_settings[96], 0, 0, &fs_names[110], 1 },
+ { NULL, 8, 0, &fs_names[129], 0 },
+ { &fs_settings[98], 7, 0, &fs_names[128], 0 },
+ { &fs_settings[99], 6, 0, &fs_names[127], 0 },
+ { &fs_settings[100], 5, 0, &fs_names[126], 0 },
+ { &fs_settings[101], 4, 0, &fs_names[125], 0 },
+ { &fs_settings[102], 3, 0, &fs_names[124], 0 },
+ { &fs_settings[103], 2, 0, &fs_names[123], 0 },
+ { &fs_settings[104], 1, 0, &fs_names[122], 0 },
+ { &fs_settings[105], 0, 0, &fs_names[121], 1 },
+ { NULL, 1, 0, &fs_names[132], 0 },
+ { &fs_settings[107], 0, 0, &fs_names[131], 1 },
+ { NULL, 1, 0, &fs_names[135], 0 },
+ { &fs_settings[109], 0, 0, &fs_names[134], 1 },
+ { NULL, 0, 0, &fs_names[145], 0 },
+ { NULL, 3, 0, &fs_names[143], 0 },
+ { &fs_settings[112], 2, 0, &fs_names[142], 0 },
+ { &fs_settings[113], 1, 0, &fs_names[141], 0 },
+ { &fs_settings[114], 0, 0, &fs_names[140], 1 },
+ { NULL, 0, 0, NULL, 0 }
+};
+
+static MacFeat fs_features[] = {
+ { NULL, 103, 1, 0, 0, &fs_names[139], &fs_settings[115] },
+ { &fs_features[0], 27, 0, 0, 0, &fs_names[144], &fs_settings[111] },
+ { &fs_features[1], 26, 1, 0, 0, &fs_names[133], &fs_settings[110] },
+ { &fs_features[2], 25, 1, 0, 0, &fs_names[130], &fs_settings[108] },
+ { &fs_features[3], 24, 1, 0, 0, &fs_names[120], &fs_settings[106] },
+ { &fs_features[4], 23, 1, 0, 0, &fs_names[109], &fs_settings[97] },
+ { &fs_features[5], 22, 1, 0, 0, &fs_names[106], &fs_settings[87] },
+ { &fs_features[6], 21, 1, 1, 0, &fs_names[103], &fs_settings[85] },
+ { &fs_features[7], 20, 1, 0, 0, &fs_names[91], &fs_settings[83] },
+ { &fs_features[8], 19, 1, 0, 0, &fs_names[84], &fs_settings[72] },
+ { &fs_features[9], 18, 1, 0, 0, &fs_names[78], &fs_settings[66] },
+ { &fs_features[10], 17, 1, 0, 0, &fs_names[74], &fs_settings[61] },
+ { &fs_features[11], 16, 1, 0, 0, &fs_names[66], &fs_settings[58] },
+ { &fs_features[12], 15, 0, 0, 0, &fs_names[60], &fs_settings[51] },
+ { &fs_features[13], 14, 0, 0, 0, &fs_names[53], &fs_settings[46] },
+ { &fs_features[14], 13, 1, 0, 0, &fs_names[50], &fs_settings[40] },
+ { &fs_features[15], 11, 1, 0, 0, &fs_names[46], &fs_settings[38] },
+ { &fs_features[16], 10, 1, 0, 0, &fs_names[41], &fs_settings[35] },
+ { &fs_features[17], 9, 1, 0, 0, &fs_names[37], &fs_settings[31] },
+ { &fs_features[18], 8, 0, 0, 0, &fs_names[31], &fs_settings[28] },
+ { &fs_features[19], 6, 1, 0, 0, &fs_names[28], &fs_settings[23] },
+ { &fs_features[20], 5, 1, 0, 0, &fs_names[25], &fs_settings[21] },
+ { &fs_features[21], 4, 1, 0, 0, &fs_names[22], &fs_settings[19] },
+ { &fs_features[22], 3, 1, 0, 0, &fs_names[15], &fs_settings[17] },
+ { &fs_features[23], 2, 1, 0, 0, &fs_names[11], &fs_settings[11] },
+ { &fs_features[24], 1, 0, 0, 0, &fs_names[2], &fs_settings[8] },
+ { &fs_features[25], 0, 0, 0, 0, &fs_names[0], &fs_settings[0] },
+ { NULL, 0, 0, 0, 0, NULL, NULL }
+};
+
+MacFeat *default_mac_feature_map = &fs_features[26],
+ *builtin_mac_feature_map=&fs_features[26],
+ *user_mac_feature_map;
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/mathconstants.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/mathconstants.c
new file mode 100644
index 00000000000..5becd180f01
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/mathconstants.c
@@ -0,0 +1,99 @@
+/* Copyright (C) 2007-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#include <stddef.h>
+#include "fontforgevw.h"
+#ifdef __need_size_t
+/* This is a bug on the mac, someone defines this and leaves it defined */
+/* that means when I load stddef.h it only defines size_t and doesn't */
+/* do offset_of, which is what I need */
+# undef __need_size_t
+#endif
+
+#define MCD(name) { #name, offsetof(struct MATH,name), -1 }
+#define MCDD(name,devtab_name) { #name, offsetof(struct MATH,name), offsetof(struct MATH,devtab_name) }
+
+struct math_constants_descriptor math_constants_descriptor[] = {
+ MCD(ScriptPercentScaleDown),
+ MCD(ScriptScriptPercentScaleDown),
+ MCD(DelimitedSubFormulaMinHeight),
+ MCD(DisplayOperatorMinHeight),
+ MCDD(MathLeading,MathLeading_adjust),
+ MCDD(AxisHeight,AxisHeight_adjust),
+ MCDD(AccentBaseHeight,AccentBaseHeight_adjust),
+ MCDD(FlattenedAccentBaseHeight,FlattenedAccentBaseHeight_adjust),
+ MCDD(SubscriptShiftDown,SubscriptShiftDown_adjust),
+ MCDD(SubscriptTopMax,SubscriptTopMax_adjust),
+ MCDD(SubscriptBaselineDropMin,SubscriptBaselineDropMin_adjust),
+ MCDD(SuperscriptShiftUp,SuperscriptShiftUp_adjust),
+ MCDD(SuperscriptShiftUpCramped,SuperscriptShiftUpCramped_adjust),
+ MCDD(SuperscriptBottomMin,SuperscriptBottomMin_adjust),
+ MCDD(SuperscriptBaselineDropMax,SuperscriptBaselineDropMax_adjust),
+ MCDD(SubSuperscriptGapMin,SubSuperscriptGapMin_adjust),
+ MCDD(SuperscriptBottomMaxWithSubscript,SuperscriptBottomMaxWithSubscript_adjust),
+ MCDD(SpaceAfterScript,SpaceAfterScript_adjust),
+ MCDD(UpperLimitGapMin,UpperLimitGapMin_adjust),
+ MCDD(UpperLimitBaselineRiseMin,UpperLimitBaselineRiseMin_adjust),
+ MCDD(LowerLimitGapMin,LowerLimitGapMin_adjust),
+ MCDD(LowerLimitBaselineDropMin,LowerLimitBaselineDropMin_adjust),
+ MCDD(StackTopShiftUp,StackTopShiftUp_adjust),
+ MCDD(StackTopDisplayStyleShiftUp,StackTopDisplayStyleShiftUp_adjust),
+ MCDD(StackBottomShiftDown,StackBottomShiftDown_adjust),
+ MCDD(StackBottomDisplayStyleShiftDown,StackBottomDisplayStyleShiftDown_adjust),
+ MCDD(StackGapMin,StackGapMin_adjust),
+ MCDD(StackDisplayStyleGapMin,StackDisplayStyleGapMin_adjust),
+ MCDD(StretchStackTopShiftUp,StretchStackTopShiftUp_adjust),
+ MCDD(StretchStackBottomShiftDown,StretchStackBottomShiftDown_adjust),
+ MCDD(StretchStackGapAboveMin,StretchStackGapAboveMin_adjust),
+ MCDD(StretchStackGapBelowMin,StretchStackGapBelowMin_adjust),
+ MCDD(FractionNumeratorShiftUp,FractionNumeratorShiftUp_adjust),
+ MCDD(FractionNumeratorDisplayStyleShiftUp,FractionNumeratorDisplayStyleShiftUp_adjust),
+ MCDD(FractionDenominatorShiftDown,FractionDenominatorShiftDown_adjust),
+ MCDD(FractionDenominatorDisplayStyleShiftDown,FractionDenominatorDisplayStyleShiftDown_adjust),
+ MCDD(FractionNumeratorGapMin,FractionNumeratorGapMin_adjust),
+ MCDD(FractionNumeratorDisplayStyleGapMin,FractionNumeratorDisplayStyleGapMin_adjust),
+ MCDD(FractionRuleThickness,FractionRuleThickness_adjust),
+ MCDD(FractionDenominatorGapMin,FractionDenominatorGapMin_adjust),
+ MCDD(FractionDenominatorDisplayStyleGapMin,FractionDenominatorDisplayStyleGapMin_adjust),
+ MCDD(SkewedFractionHorizontalGap,SkewedFractionHorizontalGap_adjust),
+ MCDD(SkewedFractionVerticalGap,SkewedFractionVerticalGap_adjust),
+ MCDD(OverbarVerticalGap,OverbarVerticalGap_adjust),
+ MCDD(OverbarRuleThickness,OverbarRuleThickness_adjust),
+ MCDD(OverbarExtraAscender,OverbarExtraAscender_adjust),
+ MCDD(UnderbarVerticalGap,UnderbarVerticalGap_adjust),
+ MCDD(UnderbarRuleThickness,UnderbarRuleThickness_adjust),
+ MCDD(UnderbarExtraDescender,UnderbarExtraDescender_adjust),
+ MCDD(RadicalVerticalGap,RadicalVerticalGap_adjust),
+ MCDD(RadicalDisplayStyleVerticalGap,RadicalDisplayStyleVerticalGap_adjust),
+ MCDD(RadicalRuleThickness,RadicalRuleThickness_adjust),
+ MCDD(RadicalExtraAscender,RadicalExtraAscender_adjust),
+ MCDD(RadicalKernBeforeDegree,RadicalKernBeforeDegree_adjust),
+ MCDD(RadicalKernAfterDegree,RadicalKernAfterDegree_adjust),
+ MCD(RadicalDegreeBottomRaisePercent),
+ MCD(MinConnectorOverlap),
+ MATH_CONSTANTS_DESCRIPTOR_EMPTY
+};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/memory.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/memory.c
new file mode 100644
index 00000000000..cbe850140ca
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/memory.c
@@ -0,0 +1,51 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include <stdio.h>
+#include <string.h>
+#include "ustring.h"
+
+char *copy(const char *str) {
+ return str ? strdup(str) : NULL;
+}
+
+char *copyn(const char *str,long n) {
+ /**
+ * MIQ: Note that there is at least one site that relies on
+ * copyn copying up to n bytes including embedded nulls.
+ * So using strndup() doesn't provide the same outcomes
+ * to that code.
+ * https://github.com/fontforge/fontforge/issues/1239
+ */
+ char *ret;
+ if ( str==NULL )
+ return( NULL );
+
+ ret = (char *) malloc(n+1);
+ memcpy(ret,str,n);
+ ret[n]='\0';
+ return( ret );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/mm.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/mm.c
new file mode 100644
index 00000000000..4de1319bfa9
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/mm.c
@@ -0,0 +1,307 @@
+/* Copyright (C) 2003-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h"
+#include "ttf.h"
+
+/******************************************************************************/
+/* MM Validation */
+/******************************************************************************/
+
+static int ContourCount(SplineChar *sc) {
+ SplineSet *spl;
+ int i;
+
+ for ( spl=sc->layers[ly_fore].splines, i=0; spl!=NULL; spl=spl->next, ++i );
+return( i );
+}
+
+static int ContourPtMatch(SplineChar *sc1, SplineChar *sc2) {
+ SplineSet *spl1, *spl2;
+ SplinePoint *sp1, *sp2;
+
+ for ( spl1=sc1->layers[ly_fore].splines, spl2=sc2->layers[ly_fore].splines; spl1!=NULL && spl2!=NULL; spl1=spl1->next, spl2=spl2->next ) {
+ for ( sp1=spl1->first, sp2 = spl2->first; ; ) {
+ if ( sp1->nonextcp!=sp2->nonextcp || sp1->noprevcp!=sp2->noprevcp )
+return( false );
+ if ( sp1->next==NULL || sp2->next==NULL ) {
+ if ( sp1->next==NULL && sp2->next==NULL )
+ break;
+return( false );
+ }
+ sp1 = sp1->next->to; sp2 = sp2->next->to;
+ if ( sp1==spl1->first || sp2==spl2->first ) {
+ if ( sp1==spl1->first && sp2==spl2->first )
+ break;
+return( false );
+ }
+ }
+ }
+return( true );
+}
+
+static int ContourDirMatch(SplineChar *sc1, SplineChar *sc2) {
+ SplineSet *spl1, *spl2;
+
+ for ( spl1=sc1->layers[ly_fore].splines, spl2=sc2->layers[ly_fore].splines; spl1!=NULL && spl2!=NULL; spl1=spl1->next, spl2=spl2->next ) {
+ if ( SplinePointListIsClockwise(spl1)!=SplinePointListIsClockwise(spl2) )
+return( false );
+ }
+return( true );
+}
+
+static int ContourHintMaskMatch(SplineChar *sc1, SplineChar *sc2) {
+ SplineSet *spl1, *spl2;
+ SplinePoint *sp1, *sp2;
+
+ for ( spl1=sc1->layers[ly_fore].splines, spl2=sc2->layers[ly_fore].splines; spl1!=NULL && spl2!=NULL; spl1=spl1->next, spl2=spl2->next ) {
+ for ( sp1=spl1->first, sp2 = spl2->first; ; ) {
+ if ( (sp1->hintmask==NULL)!=(sp2->hintmask==NULL) )
+return( false );
+ if ( sp1->hintmask!=NULL && memcmp(sp1->hintmask,sp2->hintmask,sizeof(HintMask))!=0 )
+return( false );
+ if ( sp1->next==NULL || sp2->next==NULL ) {
+ if ( sp1->next==NULL && sp2->next==NULL )
+ break;
+return( false );
+ }
+ sp1 = sp1->next->to; sp2 = sp2->next->to;
+ if ( sp1==spl1->first || sp2==spl2->first ) {
+ if ( sp1==spl1->first && sp2==spl2->first )
+ break;
+return( false );
+ }
+ }
+ }
+return( true );
+}
+
+static int RefMatch(SplineChar *sc1, SplineChar *sc2) {
+ RefChar *ref1, *ref2;
+ /* I don't require the reference list to be ordered */
+
+ for ( ref1=sc1->layers[ly_fore].refs, ref2=sc2->layers[ly_fore].refs; ref1!=NULL && ref2!=NULL; ref1=ref1->next, ref2=ref2->next )
+ ref2->checked = false;
+ if ( ref1!=NULL || ref2!=NULL )
+return( false );
+
+ for ( ref1=sc1->layers[ly_fore].refs; ref1!=NULL ; ref1=ref1->next ) {
+ for ( ref2=sc2->layers[ly_fore].refs; ref2!=NULL ; ref2=ref2->next ) {
+ if ( ref2->sc->orig_pos==ref1->sc->orig_pos && !ref2->checked )
+ break;
+ }
+ if ( ref2==NULL )
+return( false );
+ ref2->checked = true;
+ }
+
+return( true );
+}
+
+static int RefTransformsMatch(SplineChar *sc1, SplineChar *sc2) {
+ /* Apple only provides a means to change the translation of a reference */
+ /* so if rotation, skewing, scaling, etc. differ then we can't deal with */
+ /* it. */
+ RefChar *r1 = sc1->layers[ly_fore].refs;
+ RefChar *r2 = sc2->layers[ly_fore].refs;
+
+ while ( r1!=NULL && r2!=NULL ) {
+ if ( r1->transform[0]!=r2->transform[0] ||
+ r1->transform[1]!=r2->transform[1] ||
+ r1->transform[2]!=r2->transform[2] ||
+ r1->transform[3]!=r2->transform[3] )
+return( false );
+ r1 = r1->next;
+ r2 = r2->next;
+ }
+return( true );
+}
+
+static int HintsMatch(StemInfo *h1,StemInfo *h2) {
+ while ( h1!=NULL && h2!=NULL ) {
+ h1 = h1->next;
+ h2 = h2->next;
+ }
+return ( h1==NULL && h2==NULL );
+}
+
+static int KernsMatch(SplineChar *sc1, SplineChar *sc2) {
+ /* I don't require the kern list to be ordered */
+ /* Only interested in kerns that go into afm files (ie. no kernclasses) */
+ KernPair *k1, *k2;
+
+ for ( k1=sc1->kerns, k2=sc2->kerns; k1!=NULL && k2!=NULL; k1=k1->next, k2=k2->next )
+ k2->kcid = false;
+ if ( k1!=NULL || k2!=NULL )
+return( false );
+
+ for ( k1=sc1->kerns; k1!=NULL ; k1=k1->next ) {
+ for ( k2=sc2->kerns; k2!=NULL ; k2=k2->next ) {
+ if ( k2->sc->orig_pos==k1->sc->orig_pos && !k2->kcid )
+ break;
+ }
+ if ( k2==NULL )
+return( false );
+ k2->kcid = true;
+ }
+
+return( true );
+}
+
+static int ArrayCount(char *val) {
+ char *end;
+ int cnt;
+
+ if ( val==NULL )
+return( 0 );
+ while ( *val==' ' ) ++val;
+ if ( *val=='[' ) ++val;
+ cnt=0;
+ while ( *val ) {
+ strtod(val,&end);
+ if ( val==end )
+ break;
+ ++cnt;
+ val = end;
+ }
+return( cnt );
+}
+
+int MMValid(MMSet *mm,int complain) {
+ int i, j;
+ SplineFont *sf;
+ static char *arrnames[] = { "BlueValues", "OtherBlues", "FamilyBlues", "FamilyOtherBlues", "StdHW", "StdVW", "StemSnapH", "StemSnapV", NULL };
+
+ if ( mm==NULL )
+return( false );
+
+ for ( i=0; i<mm->instance_count; ++i )
+ if ( mm->instances[i]->layers[ly_fore].order2 != mm->apple ) {
+return( false );
+ }
+
+ sf = mm->apple ? mm->normal : mm->instances[0];
+
+ if ( !mm->apple && PSDictHasEntry(sf->private,"ForceBold")!=NULL &&
+ PSDictHasEntry(mm->normal->private,"ForceBoldThreshold")==NULL) {
+return( false );
+ }
+
+ for ( j=mm->apple ? 0 : 1; j<mm->instance_count; ++j ) {
+ if ( sf->glyphcnt!=mm->instances[j]->glyphcnt ) {
+return( false );
+ } else if ( sf->layers[ly_fore].order2!=mm->instances[j]->layers[ly_fore].order2 ) {
+return( false );
+ }
+ if ( !mm->apple ) {
+ if ( PSDictHasEntry(mm->instances[j]->private,"ForceBold")!=NULL &&
+ PSDictHasEntry(mm->normal->private,"ForceBoldThreshold")==NULL) {
+return( false );
+ }
+ for ( i=0; arrnames[i]!=NULL; ++i ) {
+ if ( ArrayCount(PSDictHasEntry(mm->instances[j]->private,arrnames[i]))!=
+ ArrayCount(PSDictHasEntry(sf->private,arrnames[i])) ) {
+return( false );
+ }
+ }
+ }
+ }
+
+ for ( i=0; i<sf->glyphcnt; ++i ) {
+ for ( j=mm->apple?0:1; j<mm->instance_count; ++j ) {
+ if ( SCWorthOutputting(sf->glyphs[i])!=SCWorthOutputting(mm->instances[j]->glyphs[i]) ) {
+return( false );
+ }
+ }
+ if ( SCWorthOutputting(sf->glyphs[i]) ) {
+ if ( mm->apple && sf->glyphs[i]->layers[ly_fore].refs!=NULL && sf->glyphs[i]->layers[ly_fore].splines!=NULL ) {
+return( false );
+ }
+ for ( j=mm->apple?0:1; j<mm->instance_count; ++j ) {
+ if ( mm->apple && mm->instances[j]->glyphs[i]->layers[ly_fore].refs!=NULL &&
+ mm->instances[j]->glyphs[i]->layers[ly_fore].splines!=NULL ) {
+return( false );
+ }
+ if ( ContourCount(sf->glyphs[i])!=ContourCount(mm->instances[j]->glyphs[i])) {
+return( false );
+ } else if ( !mm->apple && !ContourPtMatch(sf->glyphs[i],mm->instances[j]->glyphs[i])) {
+return( false );
+ } else if ( !ContourDirMatch(sf->glyphs[i],mm->instances[j]->glyphs[i])) {
+return( false );
+ } else if ( !RefMatch(sf->glyphs[i],mm->instances[j]->glyphs[i])) {
+return( false );
+ } else if ( mm->apple && !RefTransformsMatch(sf->glyphs[i],mm->instances[j]->glyphs[i])) {
+return( false );
+ } else if ( !mm->apple && !KernsMatch(sf->glyphs[i],mm->instances[j]->glyphs[i])) {
+return( false );
+ }
+ }
+ if ( mm->apple && !ContourPtNumMatch(mm,i)) {
+return( false );
+ }
+ if ( !mm->apple ) {
+ for ( j=1; j<mm->instance_count; ++j ) {
+ if ( !HintsMatch(sf->glyphs[i]->hstem,mm->instances[j]->glyphs[i]->hstem)) {
+return( false );
+ } else if ( !HintsMatch(sf->glyphs[i]->vstem,mm->instances[j]->glyphs[i]->vstem)) {
+return( false );
+ }
+ }
+ for ( j=1; j<mm->instance_count; ++j ) {
+ if ( !ContourHintMaskMatch(sf->glyphs[i],mm->instances[j]->glyphs[i])) {
+return( false );
+ }
+ }
+ }
+ }
+ }
+ if ( mm->apple ) {
+ struct ttf_table *cvt;
+ for ( cvt = mm->normal->ttf_tables; cvt!=NULL && cvt->tag!=CHR('c','v','t',' '); cvt=cvt->next );
+ if ( cvt==NULL ) {
+ for ( j=0; j<mm->instance_count; ++j ) {
+ if ( mm->instances[j]->ttf_tables!=NULL ) {
+return( false );
+ }
+ }
+ } else {
+ /* Not all instances are required to have cvts, but any that do */
+ /* must be the same size */
+ for ( j=0; j<mm->instance_count; ++j ) {
+ if ( mm->instances[j]->ttf_tables!=NULL &&
+ (mm->instances[j]->ttf_tables->next!=NULL ||
+ mm->instances[j]->ttf_tables->tag!=CHR('c','v','t',' '))) {
+return( false );
+ }
+ if ( mm->instances[j]->ttf_tables!=NULL &&
+ mm->instances[j]->ttf_tables->len!=cvt->len ) {
+return( false );
+ }
+ }
+ }
+ }
+return( true );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/namehash.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/namehash.h
new file mode 100644
index 00000000000..925019e2959
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/namehash.h
@@ -0,0 +1,61 @@
+/* Copyright (C) 2009-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _NAMEHASH_H
+# define _NAMEHASH_H
+
+#define GN_HSIZE 257
+
+struct glyphnamebucket {
+ SplineChar *sc;
+ struct glyphnamebucket *next;
+ const char *name;
+};
+
+struct glyphnamehash {
+ struct glyphnamebucket *table[GN_HSIZE];
+};
+
+#ifndef __GNUC__
+# define __inline__
+#endif
+
+static __inline__ int hashname(const char *pt) {
+ int val = 0;
+
+ while ( *pt ) {
+ val = (val<<3)|((val>>29)&0x7);
+ val ^= (unsigned char)(*pt-'!');
+ pt++;
+ }
+ val ^= (val>>16);
+ val &= 0xffff;
+ val %= GN_HSIZE;
+return( val );
+}
+
+extern void __GlyphHashFree(struct glyphnamehash *hash);
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/namelist.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/namelist.c
new file mode 100644
index 00000000000..3a6e5b252cb
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/namelist.c
@@ -0,0 +1,19965 @@
+/* -*- coding: utf-8 -*- */
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#include "fontforgevw.h"
+#include "namehash.h"
+#include "tables.h"
+
+int recognizePUA = false;
+
+#ifndef _MSC_VER
+static
+#endif
+struct psaltnames {
+ const char *name;
+ int unicode;
+ int provenance; /* 1=> Adobe PUA, 2=>AMS PUA, 3=>TeX */
+} psaltnames[];
+
+static NameList agl_sans, agl, agl_nf, adobepua, greeksc, tex, ams;
+NameList *namelist_for_new_fonts = &agl_nf;
+
+/* Adobe's standard names are wrong for: */
+/* 0x2206 is named Delta, 0x394 should be */
+/* 0x2126 is named Omega, 0x3A9 should be */
+/* 0x00b5 is named mu, 0x3BC should be */
+/* The following have been corrected removed from AGL For New Fonts: */
+/* 0x0162 is named Tcommaaccent, 0x21A should be */
+/* 0x0163 is named tcommaaccent, 0x21B should be */
+/* 0xf6be is named dotlessj, 0x237 should be */
+
+static int psnamesinited=false;
+#define HASH_SIZE 257
+struct psbucket { const char *name; int uni; struct psbucket *prev; } *psbuckets[HASH_SIZE];
+
+static void psaddbucket(const char *name, int uni) {
+ int hash = hashname(name);
+ struct psbucket *buck = calloc(1,sizeof(struct psbucket));
+
+ buck->name = name;
+ buck->uni = uni;
+ buck->prev = psbuckets[hash];
+ psbuckets[hash] = buck;
+}
+
+static void NameListHash(NameList *nl) {
+ int i,j,k;
+ for ( i=0; i<17; ++i ) if ( nl->unicode[i]!=NULL ) {
+ for ( j=0; j<256; ++j ) if ( nl->unicode[i][j]!=NULL ) {
+ for ( k=0; k<256; ++k ) if ( nl->unicode[i][j][k]!=NULL )
+ psaddbucket(nl->unicode[i][j][k],(i<<16)|(j<<8)|k );
+ }
+ }
+}
+
+static void psinitnames(void) {
+ int i;
+ NameList *nl;
+
+ agl.next = &agl_nf;
+ agl_nf.next = &agl_sans;
+ agl_sans.next = &adobepua;
+ adobepua.next = &greeksc;
+ greeksc.next = &tex;
+ tex.next = &ams;
+
+ for ( i=0; psaltnames[i].name!=NULL ; ++i )
+ psaddbucket(psaltnames[i].name,psaltnames[i].unicode);
+ for ( nl=&agl; nl!=NULL; nl=nl->next )
+ NameListHash(nl);
+ psnamesinited = true;
+}
+
+
+int UniFromName(const char *name,enum uni_interp interp,Encoding *encname) {
+ int i = -1;
+ char *end;
+ struct psbucket *buck;
+ int _recognizePUA = recognizePUA;
+
+ if ( strncmp(name,"uni",3)==0 ) {
+ i = strtol(name+3,&end,16);
+ if ( *end || end-name!=7 ) /* uniXXXXXXXX means a ligature of uniXXXX and uniXXXX */
+ i = -1;
+ _recognizePUA = true;
+ } else if ( (name[0]=='U' || name[0]=='u') && name[1]=='+' &&
+ (strlen(name)==6 || strlen(name)==7)) {
+ /* Unifont uses this convention */
+ i = strtol(name+2,&end,16);
+ if ( *end )
+ i = -1;
+ _recognizePUA = true;
+ } else if ( name[0]=='u' && strlen(name)>=5 ) {
+ i = strtol(name+1,&end,16);
+ if ( *end )
+ i = -1;
+ else if ( encname!=NULL && !encname->is_unicodefull &&
+ (interp==ui_ams || interp==ui_trad_chinese)) {
+ int j;
+ const int *pua = interp==ui_ams ? amspua : cns14pua;
+ for ( j=0xf8ff-0xe000; j>=0; --j )
+ if ( pua[j]==i ) {
+ i = j+0xe000;
+ break;
+ }
+ }
+ if ( i!=-1 )
+ _recognizePUA = true;
+ } else if ( name[0]!='\0' && name[1]=='\0' )
+ i = ((unsigned char *) name)[0];
+ if ( i==-1 ) {
+ if ( !psnamesinited )
+ psinitnames();
+ for ( buck = psbuckets[hashname(name)]; buck!=NULL; buck=buck->prev )
+ if ( strcmp(buck->name,name)==0 )
+ break;
+ if ( buck!=NULL )
+ i = buck->uni;
+ }
+ if ( !_recognizePUA && i>=0xe000 && i<=0xf8ff )
+ i = -1;
+return( i );
+}
+
+#define RefMax 40
+
+NameList *DefaultNameListForNewFonts(void) {
+return( namelist_for_new_fonts );
+}
+
+NameList *NameListByName(const char *name) {
+ const char *nameTex = "ΤεΧ Names";
+ NameList *nl;
+
+ /* ΤεΧ is hard tp type e.g. from scripting, so accept TeX as alias */
+ if (strcmp(name,"TeX Names")==0)
+ name = (char *)nameTex;
+
+ for ( nl = &agl; nl!=NULL; nl=nl->next ) {
+ if ( strcmp(_(nl->title),name)==0 || strcmp(nl->title,name)==0 )
+ return( nl );
+ }
+ return( NULL );
+}
+
+struct bits {
+ char *start, *end;
+ SplineChar *rpl;
+};
+
+/* ************************************************************************** */
+static const char *agl_sans_p0_b0[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "space",
+ "exclam",
+ "quotedbl",
+ "numbersign",
+ "dollar",
+ "percent",
+ "ampersand",
+ "quotesingle",
+ "parenleft",
+ "parenright",
+ "asterisk",
+ "plus",
+ "comma",
+ "hyphen",
+ "period",
+ "slash",
+ "zero",
+ "one",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine",
+ "colon",
+ "semicolon",
+ "less",
+ "equal",
+ "greater",
+ "question",
+ "at",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "G",
+ "H",
+ "I",
+ "J",
+ "K",
+ "L",
+ "M",
+ "N",
+ "O",
+ "P",
+ "Q",
+ "R",
+ "S",
+ "T",
+ "U",
+ "V",
+ "W",
+ "X",
+ "Y",
+ "Z",
+ "bracketleft",
+ "backslash",
+ "bracketright",
+ "asciicircum",
+ "underscore",
+ "grave",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "braceleft",
+ "bar",
+ "braceright",
+ "asciitilde",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "exclamdown",
+ "cent",
+ "sterling",
+ "currency",
+ "yen",
+ "brokenbar",
+ "section",
+ "dieresis",
+ "copyright",
+ "ordfeminine",
+ "guillemotleft",
+ "logicalnot",
+ NULL,
+ "registered",
+ "macron",
+ "degree",
+ "plusminus",
+ NULL,
+ NULL,
+ "acute",
+ "mu",
+ "paragraph",
+ "periodcentered",
+ "cedilla",
+ NULL,
+ "ordmasculine",
+ "guillemotright",
+ "onequarter",
+ "onehalf",
+ "threequarters",
+ "questiondown",
+ "Agrave",
+ "Aacute",
+ "Acircumflex",
+ "Atilde",
+ "Adieresis",
+ "Aring",
+ "AE",
+ "Ccedilla",
+ "Egrave",
+ "Eacute",
+ "Ecircumflex",
+ "Edieresis",
+ "Igrave",
+ "Iacute",
+ "Icircumflex",
+ "Idieresis",
+ "Eth",
+ "Ntilde",
+ "Ograve",
+ "Oacute",
+ "Ocircumflex",
+ "Otilde",
+ "Odieresis",
+ "multiply",
+ "Oslash",
+ "Ugrave",
+ "Uacute",
+ "Ucircumflex",
+ "Udieresis",
+ "Yacute",
+ "Thorn",
+ "germandbls",
+ "agrave",
+ "aacute",
+ "acircumflex",
+ "atilde",
+ "adieresis",
+ "aring",
+ "ae",
+ "ccedilla",
+ "egrave",
+ "eacute",
+ "ecircumflex",
+ "edieresis",
+ "igrave",
+ "iacute",
+ "icircumflex",
+ "idieresis",
+ "eth",
+ "ntilde",
+ "ograve",
+ "oacute",
+ "ocircumflex",
+ "otilde",
+ "odieresis",
+ "divide",
+ "oslash",
+ "ugrave",
+ "uacute",
+ "ucircumflex",
+ "udieresis",
+ "yacute",
+ "thorn",
+ "ydieresis"
+};
+
+static const char *agl_sans_p0_b1[] = {
+ "Amacron",
+ "amacron",
+ "Abreve",
+ "abreve",
+ "Aogonek",
+ "aogonek",
+ "Cacute",
+ "cacute",
+ "Ccircumflex",
+ "ccircumflex",
+ "Cdotaccent",
+ "cdotaccent",
+ "Ccaron",
+ "ccaron",
+ "Dcaron",
+ "dcaron",
+ "Dcroat",
+ "dcroat",
+ "Emacron",
+ "emacron",
+ "Ebreve",
+ "ebreve",
+ "Edotaccent",
+ "edotaccent",
+ "Eogonek",
+ "eogonek",
+ "Ecaron",
+ "ecaron",
+ "Gcircumflex",
+ "gcircumflex",
+ "Gbreve",
+ "gbreve",
+ "Gdotaccent",
+ "gdotaccent",
+ "Gcommaaccent",
+ "gcommaaccent",
+ "Hcircumflex",
+ "hcircumflex",
+ "Hbar",
+ "hbar",
+ "Itilde",
+ "itilde",
+ "Imacron",
+ "imacron",
+ "Ibreve",
+ "ibreve",
+ "Iogonek",
+ "iogonek",
+ "Idotaccent",
+ "dotlessi",
+ "IJ",
+ "ij",
+ "Jcircumflex",
+ "jcircumflex",
+ "Kcommaaccent",
+ "kcommaaccent",
+ "kgreenlandic",
+ "Lacute",
+ "lacute",
+ "Lcommaaccent",
+ "lcommaaccent",
+ "Lcaron",
+ "lcaron",
+ "Ldot",
+ "ldot",
+ "Lslash",
+ "lslash",
+ "Nacute",
+ "nacute",
+ "Ncommaaccent",
+ "ncommaaccent",
+ "Ncaron",
+ "ncaron",
+ "napostrophe",
+ "Eng",
+ "eng",
+ "Omacron",
+ "omacron",
+ "Obreve",
+ "obreve",
+ "Ohungarumlaut",
+ "ohungarumlaut",
+ "OE",
+ "oe",
+ "Racute",
+ "racute",
+ "Rcommaaccent",
+ "rcommaaccent",
+ "Rcaron",
+ "rcaron",
+ "Sacute",
+ "sacute",
+ "Scircumflex",
+ "scircumflex",
+ "Scedilla",
+ "scedilla",
+ "Scaron",
+ "scaron",
+ NULL,
+ NULL,
+ "Tcaron",
+ "tcaron",
+ "Tbar",
+ "tbar",
+ "Utilde",
+ "utilde",
+ "Umacron",
+ "umacron",
+ "Ubreve",
+ "ubreve",
+ "Uring",
+ "uring",
+ "Uhungarumlaut",
+ "uhungarumlaut",
+ "Uogonek",
+ "uogonek",
+ "Wcircumflex",
+ "wcircumflex",
+ "Ycircumflex",
+ "ycircumflex",
+ "Ydieresis",
+ "Zacute",
+ "zacute",
+ "Zdotaccent",
+ "zdotaccent",
+ "Zcaron",
+ "zcaron",
+ "longs",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "florin",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Ohorn",
+ "ohorn",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Uhorn",
+ "uhorn",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Gcaron",
+ "gcaron",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Aringacute",
+ "aringacute",
+ "AEacute",
+ "aeacute",
+ "Oslashacute",
+ "oslashacute"
+};
+
+static const char *agl_sans_p0_b2[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Scommaaccent",
+ "scommaaccent",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "circumflex",
+ "caron",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "breve",
+ "dotaccent",
+ "ring",
+ "ogonek",
+ "tilde",
+ "hungarumlaut",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_sans_p0_b3[] = {
+ "gravecomb",
+ "acutecomb",
+ NULL,
+ "tildecomb",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "hookabovecomb",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "dotbelowcomb",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "tonos",
+ "dieresistonos",
+ "Alphatonos",
+ "anoteleia",
+ "Epsilontonos",
+ "Etatonos",
+ "Iotatonos",
+ NULL,
+ "Omicrontonos",
+ NULL,
+ "Upsilontonos",
+ "Omegatonos",
+ "iotadieresistonos",
+ "Alpha",
+ "Beta",
+ "Gamma",
+ NULL,
+ "Epsilon",
+ "Zeta",
+ "Eta",
+ "Theta",
+ "Iota",
+ "Kappa",
+ "Lambda",
+ "Mu",
+ "Nu",
+ "Xi",
+ "Omicron",
+ "Pi",
+ "Rho",
+ NULL,
+ "Sigma",
+ "Tau",
+ "Upsilon",
+ "Phi",
+ "Chi",
+ "Psi",
+ NULL,
+ "Iotadieresis",
+ "Upsilondieresis",
+ "alphatonos",
+ "epsilontonos",
+ "etatonos",
+ "iotatonos",
+ "upsilondieresistonos",
+ "alpha",
+ "beta",
+ "gamma",
+ "delta",
+ "epsilon",
+ "zeta",
+ "eta",
+ "theta",
+ "iota",
+ "kappa",
+ "lambda",
+ NULL,
+ "nu",
+ "xi",
+ "omicron",
+ "pi",
+ "rho",
+ "sigma1",
+ "sigma",
+ "tau",
+ "upsilon",
+ "phi",
+ "chi",
+ "psi",
+ "omega",
+ "iotadieresis",
+ "upsilondieresis",
+ "omicrontonos",
+ "upsilontonos",
+ "omegatonos",
+ NULL,
+ NULL,
+ "theta1",
+ "Upsilon1",
+ NULL,
+ NULL,
+ "phi1",
+ "omega1",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_sans_p0_b1e[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Wgrave",
+ "wgrave",
+ "Wacute",
+ "wacute",
+ "Wdieresis",
+ "wdieresis",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Ygrave",
+ "ygrave",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_sans_p0_b20[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "figuredash",
+ "endash",
+ "emdash",
+ NULL,
+ NULL,
+ "underscoredbl",
+ "quoteleft",
+ "quoteright",
+ "quotesinglbase",
+ "quotereversed",
+ "quotedblleft",
+ "quotedblright",
+ "quotedblbase",
+ NULL,
+ "dagger",
+ "daggerdbl",
+ "bullet",
+ NULL,
+ "onedotenleader",
+ "twodotenleader",
+ "ellipsis",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "perthousand",
+ NULL,
+ "minute",
+ "second",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "guilsinglleft",
+ "guilsinglright",
+ NULL,
+ "exclamdbl",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "fraction",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "colonmonetary",
+ NULL,
+ "franc",
+ "lira",
+ NULL,
+ NULL,
+ "peseta",
+ NULL,
+ NULL,
+ NULL,
+ "dong",
+ "Euro",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_sans_p0_b21[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Ifraktur",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "weierstrass",
+ NULL,
+ NULL,
+ NULL,
+ "Rfraktur",
+ NULL,
+ "prescription",
+ NULL,
+ NULL,
+ NULL,
+ "trademark",
+ NULL,
+ NULL,
+ NULL,
+ "Omega",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "estimated",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "aleph",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "onethird",
+ "twothirds",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "oneeighth",
+ "threeeighths",
+ "fiveeighths",
+ "seveneighths",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "arrowleft",
+ "arrowup",
+ "arrowright",
+ "arrowdown",
+ "arrowboth",
+ "arrowupdn",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "arrowupdnbse",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "carriagereturn",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "arrowdblleft",
+ "arrowdblup",
+ "arrowdblright",
+ "arrowdbldown",
+ "arrowdblboth",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_sans_p0_b22[] = {
+ "universal",
+ NULL,
+ "partialdiff",
+ "existential",
+ NULL,
+ "emptyset",
+ "Delta",
+ "gradient",
+ "element",
+ "notelement",
+ NULL,
+ "suchthat",
+ NULL,
+ NULL,
+ NULL,
+ "product",
+ NULL,
+ "summation",
+ "minus",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "asteriskmath",
+ NULL,
+ NULL,
+ "radical",
+ NULL,
+ NULL,
+ "proportional",
+ "infinity",
+ "orthogonal",
+ "angle",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "logicaland",
+ "logicalor",
+ "intersection",
+ "union",
+ "integral",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "therefore",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "similar",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "congruent",
+ NULL,
+ NULL,
+ "approxequal",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "notequal",
+ "equivalence",
+ NULL,
+ NULL,
+ "lessequal",
+ "greaterequal",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "propersubset",
+ "propersuperset",
+ "notsubset",
+ NULL,
+ "reflexsubset",
+ "reflexsuperset",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "circleplus",
+ NULL,
+ "circlemultiply",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "perpendicular",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "dotmath",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_sans_p0_b23[] = {
+ NULL,
+ NULL,
+ "house",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "revlogicalnot",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "integraltp",
+ "integralbt",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "angleleft",
+ "angleright",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_sans_p0_b25[] = {
+ "SF100000",
+ NULL,
+ "SF110000",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "SF010000",
+ NULL,
+ NULL,
+ NULL,
+ "SF030000",
+ NULL,
+ NULL,
+ NULL,
+ "SF020000",
+ NULL,
+ NULL,
+ NULL,
+ "SF040000",
+ NULL,
+ NULL,
+ NULL,
+ "SF080000",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "SF090000",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "SF060000",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "SF070000",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "SF050000",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "SF430000",
+ "SF240000",
+ "SF510000",
+ "SF520000",
+ "SF390000",
+ "SF220000",
+ "SF210000",
+ "SF250000",
+ "SF500000",
+ "SF490000",
+ "SF380000",
+ "SF280000",
+ "SF270000",
+ "SF260000",
+ "SF360000",
+ "SF370000",
+ "SF420000",
+ "SF190000",
+ "SF200000",
+ "SF230000",
+ "SF470000",
+ "SF480000",
+ "SF410000",
+ "SF450000",
+ "SF460000",
+ "SF400000",
+ "SF540000",
+ "SF530000",
+ "SF440000",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "upblock",
+ NULL,
+ NULL,
+ NULL,
+ "dnblock",
+ NULL,
+ NULL,
+ NULL,
+ "block",
+ NULL,
+ NULL,
+ NULL,
+ "lfblock",
+ NULL,
+ NULL,
+ NULL,
+ "rtblock",
+ "ltshade",
+ "shade",
+ "dkshade",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "filledbox",
+ "H22073",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "H18543",
+ "H18551",
+ "filledrect",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "triagup",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "triagrt",
+ NULL,
+ "triagdn",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "triaglf",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "lozenge",
+ "circle",
+ NULL,
+ NULL,
+ NULL,
+ "H18533",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "invbullet",
+ "invcircle",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "openbullet",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_sans_p0_b26[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "smileface",
+ "invsmileface",
+ "sun",
+ NULL,
+ NULL,
+ NULL,
+ "female",
+ NULL,
+ "male",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "spade",
+ NULL,
+ NULL,
+ "club",
+ NULL,
+ "heart",
+ "diamond",
+ NULL,
+ NULL,
+ NULL,
+ "musicalnote",
+ "musicalnotedbl",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char **agl_sans_p0[] = {
+ agl_sans_p0_b0,
+ agl_sans_p0_b1,
+ agl_sans_p0_b2,
+ agl_sans_p0_b3,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ agl_sans_p0_b1e,
+ NULL,
+ agl_sans_p0_b20,
+ agl_sans_p0_b21,
+ agl_sans_p0_b22,
+ agl_sans_p0_b23,
+ NULL,
+ agl_sans_p0_b25,
+ agl_sans_p0_b26,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static NameList agl_sans = {
+ NULL,
+ N_("AGL without afii"),
+ { agl_sans_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+ NULL, NULL, 0, NULL
+};
+
+/* ************************************************************************** */
+static const char *agl_nf_p0_b1[] = {
+ "Amacron",
+ "amacron",
+ "Abreve",
+ "abreve",
+ "Aogonek",
+ "aogonek",
+ "Cacute",
+ "cacute",
+ "Ccircumflex",
+ "ccircumflex",
+ "Cdotaccent",
+ "cdotaccent",
+ "Ccaron",
+ "ccaron",
+ "Dcaron",
+ "dcaron",
+ "Dcroat",
+ "dcroat",
+ "Emacron",
+ "emacron",
+ "Ebreve",
+ "ebreve",
+ "Edotaccent",
+ "edotaccent",
+ "Eogonek",
+ "eogonek",
+ "Ecaron",
+ "ecaron",
+ "Gcircumflex",
+ "gcircumflex",
+ "Gbreve",
+ "gbreve",
+ "Gdotaccent",
+ "gdotaccent",
+ NULL,
+ NULL,
+ "Hcircumflex",
+ "hcircumflex",
+ "Hbar",
+ "hbar",
+ "Itilde",
+ "itilde",
+ "Imacron",
+ "imacron",
+ "Ibreve",
+ "ibreve",
+ "Iogonek",
+ "iogonek",
+ "Idotaccent",
+ "dotlessi",
+ "IJ",
+ "ij",
+ "Jcircumflex",
+ "jcircumflex",
+ NULL,
+ NULL,
+ "kgreenlandic",
+ "Lacute",
+ "lacute",
+ NULL,
+ NULL,
+ "Lcaron",
+ "lcaron",
+ "Ldot",
+ "ldot",
+ "Lslash",
+ "lslash",
+ "Nacute",
+ "nacute",
+ NULL,
+ NULL,
+ "Ncaron",
+ "ncaron",
+ "napostrophe",
+ "Eng",
+ "eng",
+ "Omacron",
+ "omacron",
+ "Obreve",
+ "obreve",
+ "Ohungarumlaut",
+ "ohungarumlaut",
+ "OE",
+ "oe",
+ "Racute",
+ "racute",
+ NULL,
+ NULL,
+ "Rcaron",
+ "rcaron",
+ "Sacute",
+ "sacute",
+ "Scircumflex",
+ "scircumflex",
+ "Scedilla",
+ "scedilla",
+ "Scaron",
+ "scaron",
+ NULL,
+ NULL,
+ "Tcaron",
+ "tcaron",
+ "Tbar",
+ "tbar",
+ "Utilde",
+ "utilde",
+ "Umacron",
+ "umacron",
+ "Ubreve",
+ "ubreve",
+ "Uring",
+ "uring",
+ "Uhungarumlaut",
+ "uhungarumlaut",
+ "Uogonek",
+ "uogonek",
+ "Wcircumflex",
+ "wcircumflex",
+ "Ycircumflex",
+ "ycircumflex",
+ "Ydieresis",
+ "Zacute",
+ "zacute",
+ "Zdotaccent",
+ "zdotaccent",
+ "Zcaron",
+ "zcaron",
+ "longs",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "florin",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Ohorn",
+ "ohorn",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Uhorn",
+ "uhorn",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Gcaron",
+ "gcaron",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Aringacute",
+ "aringacute",
+ "AEacute",
+ "aeacute",
+ "Oslashacute",
+ "oslashacute"
+};
+
+static const char *agl_nf_p0_b2[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "circumflex",
+ "caron",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "breve",
+ "dotaccent",
+ "ring",
+ "ogonek",
+ "tilde",
+ "hungarumlaut",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char **agl_nf_p0[] = {
+ agl_sans_p0_b0,
+ agl_nf_p0_b1,
+ agl_nf_p0_b2,
+ agl_sans_p0_b3,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ agl_sans_p0_b1e,
+ NULL,
+ agl_sans_p0_b20,
+ agl_sans_p0_b21,
+ agl_sans_p0_b22,
+ agl_sans_p0_b23,
+ NULL,
+ agl_sans_p0_b25,
+ agl_sans_p0_b26,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static NameList agl_nf = {
+ NULL,
+ N_("AGL For New Fonts"),
+ { agl_nf_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+ NULL, NULL, 0, NULL
+};
+
+/* ************************************************************************** */
+static const char *agl_p0_b1[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Tcommaaccent",
+ "tcommaaccent",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_p0_b2[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57929",
+ "afii64937",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_p0_b4[] = {
+ NULL,
+ "afii10023",
+ "afii10051",
+ "afii10052",
+ "afii10053",
+ "afii10054",
+ "afii10055",
+ "afii10056",
+ "afii10057",
+ "afii10058",
+ "afii10059",
+ "afii10060",
+ "afii10061",
+ NULL,
+ "afii10062",
+ "afii10145",
+ "afii10017",
+ "afii10018",
+ "afii10019",
+ "afii10020",
+ "afii10021",
+ "afii10022",
+ "afii10024",
+ "afii10025",
+ "afii10026",
+ "afii10027",
+ "afii10028",
+ "afii10029",
+ "afii10030",
+ "afii10031",
+ "afii10032",
+ "afii10033",
+ "afii10034",
+ "afii10035",
+ "afii10036",
+ "afii10037",
+ "afii10038",
+ "afii10039",
+ "afii10040",
+ "afii10041",
+ "afii10042",
+ "afii10043",
+ "afii10044",
+ "afii10045",
+ "afii10046",
+ "afii10047",
+ "afii10048",
+ "afii10049",
+ "afii10065",
+ "afii10066",
+ "afii10067",
+ "afii10068",
+ "afii10069",
+ "afii10070",
+ "afii10072",
+ "afii10073",
+ "afii10074",
+ "afii10075",
+ "afii10076",
+ "afii10077",
+ "afii10078",
+ "afii10079",
+ "afii10080",
+ "afii10081",
+ "afii10082",
+ "afii10083",
+ "afii10084",
+ "afii10085",
+ "afii10086",
+ "afii10087",
+ "afii10088",
+ "afii10089",
+ "afii10090",
+ "afii10091",
+ "afii10092",
+ "afii10093",
+ "afii10094",
+ "afii10095",
+ "afii10096",
+ "afii10097",
+ NULL,
+ "afii10071",
+ "afii10099",
+ "afii10100",
+ "afii10101",
+ "afii10102",
+ "afii10103",
+ "afii10104",
+ "afii10105",
+ "afii10106",
+ "afii10107",
+ "afii10108",
+ "afii10109",
+ NULL,
+ "afii10110",
+ "afii10193",
+ NULL,
+ NULL,
+ "afii10146",
+ "afii10194",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii10147",
+ "afii10195",
+ "afii10148",
+ "afii10196",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii10050",
+ "afii10098",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii10846",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_p0_b5[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57799",
+ "afii57801",
+ "afii57800",
+ "afii57802",
+ "afii57793",
+ "afii57794",
+ "afii57795",
+ "afii57798",
+ "afii57797",
+ "afii57806",
+ NULL,
+ "afii57796",
+ "afii57807",
+ "afii57839",
+ "afii57645",
+ "afii57841",
+ "afii57842",
+ "afii57804",
+ "afii57803",
+ "afii57658",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57664",
+ "afii57665",
+ "afii57666",
+ "afii57667",
+ "afii57668",
+ "afii57669",
+ "afii57670",
+ "afii57671",
+ "afii57672",
+ "afii57673",
+ "afii57674",
+ "afii57675",
+ "afii57676",
+ "afii57677",
+ "afii57678",
+ "afii57679",
+ "afii57680",
+ "afii57681",
+ "afii57682",
+ "afii57683",
+ "afii57684",
+ "afii57685",
+ "afii57686",
+ "afii57687",
+ "afii57688",
+ "afii57689",
+ "afii57690",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57716",
+ "afii57717",
+ "afii57718",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_p0_b6[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57388",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57403",
+ NULL,
+ NULL,
+ NULL,
+ "afii57407",
+ NULL,
+ "afii57409",
+ "afii57410",
+ "afii57411",
+ "afii57412",
+ "afii57413",
+ "afii57414",
+ "afii57415",
+ "afii57416",
+ "afii57417",
+ "afii57418",
+ "afii57419",
+ "afii57420",
+ "afii57421",
+ "afii57422",
+ "afii57423",
+ "afii57424",
+ "afii57425",
+ "afii57426",
+ "afii57427",
+ "afii57428",
+ "afii57429",
+ "afii57430",
+ "afii57431",
+ "afii57432",
+ "afii57433",
+ "afii57434",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57440",
+ "afii57441",
+ "afii57442",
+ "afii57443",
+ "afii57444",
+ "afii57445",
+ "afii57446",
+ "afii57470",
+ "afii57448",
+ "afii57449",
+ "afii57450",
+ "afii57451",
+ "afii57452",
+ "afii57453",
+ "afii57454",
+ "afii57455",
+ "afii57456",
+ "afii57457",
+ "afii57458",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57392",
+ "afii57393",
+ "afii57394",
+ "afii57395",
+ "afii57396",
+ "afii57397",
+ "afii57398",
+ "afii57399",
+ "afii57400",
+ "afii57401",
+ "afii57381",
+ NULL,
+ NULL,
+ "afii63167",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57511",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57506",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57507",
+ NULL,
+ "afii57512",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57513",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57508",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57505",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57509",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57514",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57519",
+ NULL,
+ NULL,
+ "afii57534",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_p0_b20[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii61664",
+ "afii301",
+ "afii299",
+ "afii300",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii00208",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii61573",
+ "afii61574",
+ "afii61575",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii57636",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *agl_p0_b21[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii61248",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii61289",
+ NULL,
+ NULL,
+ "afii61352",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char **agl_p0[] = {
+ NULL,
+ agl_p0_b1,
+ agl_p0_b2,
+ NULL,
+ agl_p0_b4,
+ agl_p0_b5,
+ agl_p0_b6,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ agl_p0_b20,
+ agl_p0_b21,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static NameList agl = {
+ &agl_sans,
+ N_("Adobe Glyph List"),
+ { agl_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+ NULL, NULL, 0, NULL
+};
+/* ************************************************************************** */
+static const char *adobepua_p0_bf6[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "perthousand.oldstyle",
+ "cent.denominator",
+ "dollar.denominator",
+ "hyphen.denominator",
+ "parenleft.denominator",
+ "parenright.denominator",
+ "cent.numerator",
+ "dollar.numerator",
+ "hyphen.numerator",
+ "parenleft.numerator",
+ "parenright.numerator",
+ "at.cap",
+ "commaaccent.cap",
+ "commaaccent.small",
+ "pi.math",
+ "h.superior",
+ "zero.slash",
+ "zero.fitted",
+ "two.fitted",
+ "three.fitted",
+ "four.fitted",
+ "five.fitted",
+ "six.fitted",
+ "seven.fitted",
+ "eight.fitted",
+ "nine.fitted",
+ "percent.oldstyle",
+ "zero.taboldstyle",
+ "one.taboldstyle",
+ "two.taboldstyle",
+ "three.taboldstyle",
+ "four.taboldstyle",
+ "five.taboldstyle",
+ "six.taboldstyle",
+ "seven.taboldstyle",
+ "eight.taboldstyle",
+ "nine.taboldstyle",
+ "colonmonetary.taboldstyle",
+ "Euro.taboldstyle",
+ "florin.taboldstyle",
+ "numbersign.taboldstyle",
+ "sterling.taboldstyle",
+ "yen.taboldstyle",
+ "dollar.taboldstyle",
+ "cent.taboldstyle",
+ "zero.denominator",
+ "one.denominator",
+ "two.denominator",
+ "three.denominator",
+ "four.denominator",
+ "five.denominator",
+ "six.denominator",
+ "seven.denominator",
+ "eight.denominator",
+ "nine.denominator",
+ "comma.denominator",
+ "period.denominator",
+ "zero.numerator",
+ "one.numerator",
+ "two.numerator",
+ "three.numerator",
+ "four.numerator",
+ "five.numerator",
+ "six.numerator",
+ "seven.numerator",
+ "eight.numerator",
+ "nine.numerator",
+ "comma.numerator",
+ "period.numerator",
+ "Abreve.small",
+ "Amacron.small",
+ "Aogonek.small",
+ "AEacute.small",
+ "Cacute.small",
+ "Ccaron.small",
+ "Ccircumflex.small",
+ "Cdotaccent.small",
+ "Dcaron.small",
+ "Dcroat.small",
+ "Ebreve.small",
+ "Ecaron.small",
+ "Edotaccent.small",
+ "Emacron.small",
+ "Eng.small",
+ "Eogonek.small",
+ "Gbreve.small",
+ "Gcircumflex.small",
+ "Gcommaaccent.small",
+ "Gdotaccent.small",
+ "Hbar.small",
+ "Hcircumflex.small",
+ "Ibreve.small",
+ "IJ.small",
+ "Imacron.small",
+ "Iogonek.small",
+ "Itilde.small",
+ "Jcircumflex.small",
+ "Kcommaaccent.small",
+ "Lacute.small",
+ "Lcaron.small",
+ "Lcommaaccent.small",
+ "Ldot.small",
+ "Nacute.small",
+ "Ncaron.small",
+ "Ncommaaccent.small",
+ "Obreve.small",
+ "Ohungarumlaut.small",
+ "Omacron.small",
+ "Oslashacute.small",
+ "Racute.small",
+ "Rcaron.small",
+ "Rcommaaccent.small",
+ "Sacute.small",
+ "Scedilla.small",
+ "Scircumflex.small",
+ "Scommaaccent.small",
+ "Tbar.small",
+ "Tcaron.small",
+ "Tcommaaccent.small",
+ "Ubreve.small",
+ "Uhungarumlaut.small",
+ "Umacron.small",
+ "Uogonek.small",
+ "Uring.small",
+ "Utilde.small",
+ "Wacute.small",
+ "Wcircumflex.small",
+ "Wdieresis.small",
+ "Wgrave.small",
+ "Ycircumflex.small",
+ "Ygrave.small",
+ "Zacute.small",
+ "Zdotaccent.small",
+ "Idotaccent.small",
+ "parenleft.cap",
+ "parenright.cap",
+ "bracketleft.cap",
+ "bracketright.cap",
+ "braceleft.cap",
+ "braceright.cap",
+ "exclamdown.cap",
+ "questiondown.cap",
+ "guillemotleft.cap",
+ "guillemotright.cap",
+ "guilsinglleft.cap",
+ "guilsinglright.cap",
+ "hyphen.cap",
+ "endash.cap",
+ "emdash.cap",
+ "periodcentered.cap",
+ "j.dotless",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "afii10068.ital",
+ "afii10066.ital",
+ "afii10069.ital",
+ "afii10081.ital",
+ "afii10084.ital",
+ "acute.cap",
+ "caron.cap",
+ "dieresis.cap",
+ "space_uni0308_uni0301.cap",
+ "space_uni0308_uni0300.cap",
+ "grave.cap",
+ "hungarumlaut.cap",
+ "macron.cap",
+ "breve.cyrcap",
+ "circumflex.cyrcap",
+ "space_uni030F.cap",
+ "breve.cyr",
+ "circumflex.cyr",
+ "space_uni030F",
+ "space_uni0308_uni0301",
+ "space_uni0308_uni0300",
+ "copyright.serif",
+ "registered.serif",
+ "trademark.serif",
+ "one.fitted",
+ "R_p",
+ "uni2014.alt",
+ "cent.inferior",
+ "cent.superior",
+ "comma.inferior",
+ "comma.superior",
+ "dollar.inferior",
+ "dollar.superior",
+ "hyphen.inferior",
+ "hyphen.superior",
+ "period.inferior",
+ "period.superior",
+ "a.superior",
+ "b.superior",
+ "d.superior",
+ "e.superior",
+ "i.superior",
+ "l.superior",
+ "m.superior",
+ "o.superior",
+ "r.superior",
+ "s.superior",
+ "t.superior",
+ "breve.sc",
+ "caron.sc",
+ "circumflex.sc",
+ "dotaccent.sc",
+ "hungarumlaut.sc",
+ "lslash.sc",
+ "oe.sc",
+ "ogonek.sc",
+ "ring.sc",
+ "scaron.sc",
+ "tilde.sc",
+ "zcaron.sc"
+};
+
+static const char *adobepua_p0_bf7[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "exclam.sc",
+ NULL,
+ NULL,
+ "dollar.oldstyle",
+ NULL,
+ "ampersand.sc",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "zero.oldstyle",
+ "one.oldstyle",
+ "two.oldstyle",
+ "three.oldstyle",
+ "four.oldstyle",
+ "five.oldstyle",
+ "six.oldstyle",
+ "seven.oldstyle",
+ "eight.oldstyle",
+ "nine.oldstyle",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "question.sc",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "grave.sc",
+ "a.sc",
+ "b.sc",
+ "c.sc",
+ "d.sc",
+ "e.sc",
+ "f.sc",
+ "g.sc",
+ "h.sc",
+ "i.sc",
+ "j.sc",
+ "k.sc",
+ "l.sc",
+ "m.sc",
+ "n.sc",
+ "o.sc",
+ "p.sc",
+ "q.sc",
+ "r.sc",
+ "s.sc",
+ "t.sc",
+ "u.sc",
+ "v.sc",
+ "w.sc",
+ "x.sc",
+ "y.sc",
+ "z.sc",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "exclamdown.sc",
+ "cent.oldstyle",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "dieresis.sc",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "macron.sc",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "acute.sc",
+ NULL,
+ NULL,
+ NULL,
+ "cedilla.sc",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "questiondown.sc",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "agrave.sc",
+ "aacute.sc",
+ "acircumflex.sc",
+ "atilde.sc",
+ "adieresis.sc",
+ "aring.sc",
+ "ae.sc",
+ "ccedilla.sc",
+ "egrave.sc",
+ "eacute.sc",
+ "ecircumflex.sc",
+ "edieresis.sc",
+ "igrave.sc",
+ "iacute.sc",
+ "icircumflex.sc",
+ "idieresis.sc",
+ "eth.sc",
+ "ntilde.sc",
+ "ograve.sc",
+ "oacute.sc",
+ "ocircumflex.sc",
+ "otilde.sc",
+ "odieresis.sc",
+ NULL,
+ "oslash.sc",
+ "ugrave.sc",
+ "uacute.sc",
+ "ucircumflex.sc",
+ "udieresis.sc",
+ "yacute.sc",
+ "thorn.sc",
+ "ydieresis.sc"
+};
+
+static const char *adobepua_p0_bf8[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "registered.sans",
+ "copyright.sans",
+ "trademark.sans",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *adobepua_p0_bfb[] = {
+ "f_f",
+ "f_i",
+ "f_l",
+ "f_f_i",
+ "f_f_l",
+ "longs_t",
+ "s_t",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char **adobepua_p0[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ adobepua_p0_bf6,
+ adobepua_p0_bf7,
+ adobepua_p0_bf8,
+ NULL,
+ NULL,
+ adobepua_p0_bfb,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static NameList adobepua = {
+ &agl,
+ N_("AGL with PUA"),
+ { adobepua_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+ NULL, NULL, 0, NULL
+};
+/* ************************************************************************** */
+static const char *greeksc_p0_bf5[] = {
+ "alpha.sc",
+ "beta.sc",
+ "gamma.sc",
+ "delta.sc",
+ "epsilon.sc",
+ "zeta.sc",
+ "eta.sc",
+ "theta.sc",
+ "iota.sc",
+ "kappa.sc",
+ "lambda.sc",
+ "mu.sc",
+ "nu.sc",
+ "xi.sc",
+ "omicron.sc",
+ "pi.sc",
+ "rho.sc",
+ NULL,
+ "sigma.sc",
+ "tau.sc",
+ "upsilon.sc",
+ "phi.sc",
+ "chi.sc",
+ "psi.sc",
+ "omega.sc",
+ "iotadieresis.sc",
+ "upsilondieresis.sc",
+ "alphaiota.sc",
+ "etaiota.sc",
+ "omegaiota.sc",
+ "prosgegrammeni.sc",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char **greeksc_p0[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ greeksc_p0_bf5,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static NameList greeksc = {
+ &adobepua,
+ N_("Greek small caps"),
+ { greeksc_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+ NULL, NULL, 0, NULL
+};
+/* ************************************************************************** */
+static const char *tex_p0_b20[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "closure",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "leftharpoonaccent",
+ "rightharpoonaccent",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *tex_p0_b21[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "shortleftarrow",
+ "shortuparrow",
+ "shortrightarrow",
+ "shortdownarrow",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "leftwavyarrow",
+ "rightwavyarrow",
+ NULL,
+ "twoheaduparrow",
+ NULL,
+ "twoheaddownarrow",
+ NULL,
+ NULL,
+ NULL,
+ "mapsup",
+ NULL,
+ "mapsdown",
+ "updownarrowbar",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "leftrightwavyarrow",
+ NULL,
+ "downzigzagarrow",
+ NULL,
+ NULL,
+ "Ldsh",
+ "Rdsh",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "acwopencirclearrow",
+ "cwopencirclearrow",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "updownarrows",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Nwarrow",
+ "Nearrow",
+ "Searrow",
+ "Swarrow",
+ NULL,
+ NULL,
+ "longleftzigzagarrow",
+ "rightzigzagarrow",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "barleftarrow",
+ "rightarrowbar",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "downuparrows",
+ "rightthreearrows",
+ "nvleftarrow",
+ "nvrightarrow",
+ "nvleftrightarrow",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *tex_p0_b22[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "ltrpar",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "difference",
+ NULL,
+ "ac",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "approxident",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "arceq",
+ NULL,
+ "veeeq",
+ "stareq",
+ NULL,
+ "eqdef",
+ "measeq",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Equiv",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "prurel",
+ "scurel",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "origof",
+ "imageof",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "eqless",
+ "eqgtr",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "disin",
+ NULL,
+ "isins",
+ "isindot",
+ NULL,
+ NULL,
+ "isinvb",
+ "isinE",
+ "nisd",
+ NULL,
+ "nis",
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *tex_p0_b23[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "invnot",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "turnednot",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "solbar",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "rangledownzigzagarrow",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *tex_p0_b27[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "longrightzigzagarrow"
+};
+
+static const char *tex_p0_b29[] = {
+ NULL,
+ NULL,
+ "nvLeftarrow",
+ "nvRightarrow",
+ "nvLeftrightarrow",
+ "twoheadmapsto",
+ NULL,
+ NULL,
+ "downarrowbarred",
+ "uparrowbarred",
+ "Uuparrow",
+ "Ddownarrow",
+ "leftbkarrow",
+ "rightbkarrow",
+ "leftdbkarrow",
+ NULL,
+ NULL,
+ "rightdotarrow",
+ "baruparrow",
+ "downarrowbar",
+ NULL,
+ NULL,
+ "twoheadrightarrowtail",
+ NULL,
+ NULL,
+ "lefttail",
+ "righttail",
+ "leftdbltail",
+ "rightdbltail",
+ "diamondleftarrow",
+ "rightarrowdiamond",
+ "diamondleftarrowbar",
+ "barrightarrowdiamond",
+ "nwsearrow",
+ "neswarrow",
+ "hknwarrow",
+ "hknearrow",
+ "hksearrow",
+ "hkswarrow",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "rdiagovfdiag",
+ "fdiagovrdiag",
+ "seovnearrow",
+ "neovsearrow",
+ "fdiagovnearrow",
+ "rdiagovsearrow",
+ "neovnwarrow",
+ "nwovnearrow",
+ "rightcurvedarrow",
+ NULL,
+ NULL,
+ "leftdowncurvedarrow",
+ "rightdowncurvedarrow",
+ "cwhalfcirclearrow",
+ "acwhalfcirclearrow",
+ NULL,
+ "acwundercurvearrow",
+ "curvearrowrightminus",
+ "curvearrowleftplus",
+ "cwundercurvearrow",
+ NULL,
+ NULL,
+ NULL,
+ "rightarrowshortleftarrow",
+ "leftarrowshortrightarrow",
+ "shortrightarrowleftarrow",
+ "rightarrowplus",
+ "leftarrowplus",
+ "rightarrowx",
+ "leftrightarrowcircle",
+ "twoheaduparrowcircle",
+ "leftrightharpoonupdown",
+ "leftrightharpoondownup",
+ "updownharpoonrightleft",
+ "updownharpoonleftright",
+ "leftrightharpoonupup",
+ "updownharpoonrightright",
+ "leftrightharpoondowndown",
+ "updownharpoonleftleft",
+ "barleftharpoonup",
+ "rightharpoonupbar",
+ "barupharpoonright",
+ "downharpoonrightbar",
+ "barleftharpoondown",
+ "rightharpoondownbar",
+ "barupharpoonleft",
+ "downharpoonleftbar",
+ "leftharpoonupbar",
+ "barrightharpoonup",
+ "upharpoonrightbar",
+ "bardownharpoonright",
+ "leftharpoondownbar",
+ "barrightharpoondown",
+ "upharpoonleftbar",
+ "bardownharpoonleft",
+ "leftharpoonsupdown",
+ "upharpoonsleftright",
+ "rightharpoonsupdown",
+ "downharpoonsleftright",
+ "leftrightharpoonsup",
+ "leftrightharpoonsdown",
+ "rightleftharpoonsup",
+ "rightleftharpoonsdown",
+ "leftharpoonupdash",
+ "dashleftharpoondown",
+ "rightharpoonupdash",
+ "dashrightharpoondown",
+ "updownharpoonsleftright",
+ "downupharpoonsleftright",
+ "rightimply",
+ "equalrightarrow",
+ "similarrightarrow",
+ "leftarrowsimilar",
+ "rightarrowsimilar",
+ "rightarrowapprox",
+ "ltlarr",
+ "leftarrowless",
+ "gtrarr",
+ "subrarr",
+ "leftarrowsubset",
+ "suplarr",
+ "leftfishtail",
+ "rightfishtail",
+ "upfishtail",
+ "downfishtail",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "rtriltri",
+ "ltrivb",
+ "vbrtri",
+ "lfbowtie",
+ "rfbowtie",
+ "fbowtie",
+ "lftimes",
+ "rftimes",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "eqvparsl",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "ruledelayed",
+ NULL,
+ "dsol",
+ "rsolbar",
+ "xsol",
+ "xbsol",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *tex_p0_b2a[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "congdot",
+ NULL,
+ NULL,
+ "approxeqq",
+ NULL,
+ NULL,
+ "eqqsim",
+ "Coloneq",
+ "eqeq",
+ NULL,
+ NULL,
+ "equivDD",
+ "ltcir",
+ "gtcir",
+ "ltquest",
+ "gtquest",
+ NULL,
+ NULL,
+ "lesdot",
+ "gesdot",
+ "lesdoto",
+ "gesdoto",
+ "lesdotor",
+ "gesdotol",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "lsime",
+ "gsime",
+ "lsimg",
+ "gsiml",
+ "lgE",
+ "glE",
+ "lesges",
+ "gesles",
+ NULL,
+ NULL,
+ "elsdot",
+ "egsdot",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "simless",
+ "simgtr",
+ "simlE",
+ "simgE",
+ "Lt",
+ "Gt",
+ NULL,
+ "glj",
+ "gla",
+ "ltcc",
+ "gtcc",
+ "lescc",
+ "gescc",
+ "smt",
+ "lat",
+ "smte",
+ "late",
+ "bumpeqq",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "prE",
+ "scE",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Pr",
+ "Sc",
+ "subsetdot",
+ "supsetdot",
+ "subsetplus",
+ "supsetplus",
+ "submult",
+ "supmult",
+ "subedot",
+ "supedot",
+ NULL,
+ NULL,
+ "subsim",
+ "supsim",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "csub",
+ "csup",
+ "csube",
+ "csupe",
+ "subsup",
+ "supsub",
+ "subsub",
+ "supsup",
+ "suphsub",
+ "supdsub",
+ "forkv",
+ "topfork",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Barv",
+ "vBar",
+ "vBarv",
+ "barV",
+ "Vbar",
+ "Not",
+ "bNot",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *tex_p0_be2[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "rightdbkarrow",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "nrightwavyarrow",
+ NULL,
+ "nrightcurvedarrow",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "race",
+ "acE",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *tex_p0_be3[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "lesg",
+ "gesl",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "smtes",
+ "lates",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "bsolhsub",
+ "suphsol",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "congruence",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *tex_p0_be4[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "mostpos",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *tex_p0_be6[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "varrightfishtail",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char **tex_p0[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ tex_p0_b20,
+ tex_p0_b21,
+ tex_p0_b22,
+ tex_p0_b23,
+ NULL,
+ NULL,
+ NULL,
+ tex_p0_b27,
+ NULL,
+ tex_p0_b29,
+ tex_p0_b2a,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ tex_p0_be2,
+ tex_p0_be3,
+ tex_p0_be4,
+ NULL,
+ tex_p0_be6,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static NameList tex = {
+ &agl,
+ NU_("ΤεΧ Names"),
+ { tex_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+ NULL, NULL, 0, NULL
+};
+/* ************************************************************************** */
+static const char *ams_p0_be2[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni219D0338",
+ NULL,
+ "uni29330338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2192.short",
+ "uni2190.short",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni222AFE00",
+ "uni2229FE00",
+ "uni2294FE00",
+ "uni2293FE00",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni223E0332.reversed",
+ "uni223E0333",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2269FE00",
+ NULL,
+ NULL,
+ "uni2268FE00",
+ "uni22670338",
+ "uni2A7E0338",
+ "uni2A7D0338",
+ "uni22660338",
+ NULL,
+ "uni2224.short",
+ "uni2226.short",
+ "uni228220D2",
+ "uni228620D2",
+ "uni2AC50338",
+ "uni228320D2",
+ "uni2AC60338",
+ "uni228720D2",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2ACBFE00",
+ "uni228AFE00",
+ "uni228BFE00",
+ "uni2ACCFE00",
+ "uni224B0338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni226420D2",
+ "uni226520D2",
+ "uni003C20D2",
+ "uni003E20D2",
+ "uni2A6D0338",
+ "uni224820D2",
+ "uni2A700338",
+ NULL,
+ "uni2AA120D2",
+ "uni2AA220D2",
+ "uni226A0338",
+ "uni226B0338",
+ "uni22D80338",
+ "uni22D90338",
+ "uni22B520D2",
+ "uni22B420D2",
+ NULL,
+ NULL,
+ NULL,
+ "uni006A.dotless",
+ "uni210F.var",
+ NULL,
+ NULL,
+ "uni222020D2",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *ams_p0_be3[] = {
+ NULL,
+ "uni2223.short",
+ "uni2225.short",
+ NULL,
+ NULL,
+ NULL,
+ "uni2248.bold",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni22DAFE00",
+ "uni22DBFE00",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2AACFE00",
+ "uni2AADFE00",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni220B20D2",
+ "uni220D0338",
+ NULL,
+ NULL,
+ "uni220820D2",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2A15.up",
+ "uni2A16.up",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni226120E5",
+ "uni003D20E5",
+ "uni2AFD20E5",
+ "uni22500338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni22020338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2A10.up",
+ NULL,
+ "uni2A12.up",
+ "uni2A13.up",
+ "uni2A14.up",
+ "uni2A17.up",
+ "uni2A11.up",
+ NULL,
+ "uni22F50338",
+ NULL,
+ "uni22F90338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2026.em",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni220A0338",
+ "uni227320D2",
+ "uni227220D2",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni223E.reversed",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni0265.superscript",
+ "uni0252.superscript",
+ NULL,
+ NULL,
+ NULL,
+ "uni2A0F.up",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2A9B20D2",
+ "uni2A9C20D2",
+ "uni2A9B0338",
+ "uni2A9C0338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *ams_p0_be4[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni223E.var",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni223C20D2",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *ams_p0_be5[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2A3CFE00",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2AAF0338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni224220D2",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2AB00338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *ams_p0_be6[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni228F0338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni22900338",
+ "uni224E0338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2205.var",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni0077.subscript",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni1D0B.reversed",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni025102DE",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni025B02DE",
+ "uni025402DE",
+ NULL,
+ "uni03C9.inverted",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni297D.var",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni223C.bold",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *ams_p0_be8[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni227E0338",
+ "uni227F0338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2216.var",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni224F0338",
+ "uni22420338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *ams_p0_bea[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni00730336",
+ NULL,
+ "uni006C0321",
+ NULL,
+ NULL,
+ "uni03040304",
+ NULL,
+ NULL,
+ "uni229CFE00",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni03020302",
+ NULL,
+ "uni03030303",
+ "uni033103310331",
+ "uni0331033103310331",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni03070302",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni03040303",
+ "uni03310330",
+ "uni03040308",
+ "uni03300331",
+ NULL,
+ "uni00640321",
+ "uni00680321",
+ "uni006B0321",
+ "uni00780321",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni00730321",
+ "uni007A0321",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2034.notsup",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2A0B.up",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni227620D2",
+ "uni227720D2",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *ams_p0_bec[] = {
+ NULL,
+ NULL,
+ "uni2A3DFE00",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *ams_p0_bed[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni220A20D2",
+ "uni220D20D2",
+ "uni22F60338",
+ "uni22FD0338",
+ "uni22F620D2",
+ "uni22FD20D2",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2295FE00",
+ "uni2297FE00",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni224320D2",
+ "uni224520D2",
+ NULL,
+ "uni2A6C0338",
+ "uni2A6C20D2",
+ "uni2A7020D2",
+ "uni224D20D2",
+ "uni223F.reversed",
+ "uni003D20D2",
+ NULL,
+ "uni226120D2",
+ "uni22630338",
+ "uni226320D2",
+ NULL,
+ NULL,
+ "uni2A7D20D2",
+ "uni2A7E20D2",
+ "uni226620D2",
+ "uni226720D2",
+ "uni2A950338",
+ "uni2A960338",
+ "uni2A9520D2",
+ "uni2A9620D2",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2A990338",
+ "uni2A9A0338",
+ "uni2A9920D2",
+ "uni2A9A20D2",
+ "uni2272FE00",
+ "uni2273FE00",
+ "uni2A9DFE00",
+ "uni2A9EFE00",
+ NULL,
+ NULL,
+ "uni227A20D2",
+ "uni227B20D2",
+ "uni227C20D2",
+ "uni227D20D2",
+ "uni22DE20D2",
+ "uni22DF20D2",
+ "uni22DE0338",
+ "uni22DF0338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2AC520D2",
+ "uni2AC620D2",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2AF40338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2A0A.lgdisplay",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni220A.narrow",
+ "uni220D.narrow",
+ NULL,
+ "u1D6FB.narrow",
+ "uni002820090029",
+ "uni002822C50029",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *ams_p0_bee[] = {
+ "stixEE00",
+ "stixEE01",
+ "stixEE02",
+ "stixEE03",
+ "stixEE04",
+ "stixEE05",
+ "stixEE06",
+ "stixEE07",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "stixEE10",
+ "stixEE11",
+ "stixEE12",
+ "stixEE13",
+ "stixEE14",
+ "stixEE15",
+ "stixEE16",
+ "stixEE17",
+ "stixEE18",
+ "stixEE19",
+ "stixEE1A",
+ "stixEE1B",
+ "stixEE1C",
+ "stixEE1D",
+ "stixEE1E",
+ "stixEE1F",
+ "stixEE20",
+ "stixEE21",
+ "stixEE22",
+ "stixEE23",
+ "stixEE24",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "stixEE30",
+ "stixEE31",
+ "stixEE32",
+ "stixEE33",
+ "stixEE34",
+ "stixEE35",
+ "stixEE36",
+ "stixEE37",
+ "stixEE38",
+ "stixEE39",
+ "stixEE3A",
+ "stixEE3B",
+ "stixEE3C",
+ "stixEE3D",
+ "stixEE3E",
+ NULL,
+ "stixEE40",
+ "stixEE41",
+ "stixEE42",
+ "stixEE43",
+ "stixEE44",
+ "stixEE45",
+ "stixEE46",
+ "stixEE47",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "stixEE50",
+ "stixEE51",
+ "stixEE52",
+ "stixEE53",
+ "stixEE54",
+ "stixEE55",
+ "stixEE56",
+ "stixEE57",
+ "stixEE58",
+ "stixEE59",
+ "stixEE5A",
+ "stixEE5B",
+ "stixEE5C",
+ "stixEE5D",
+ "stixEE5E",
+ "stixEE5F",
+ "stixEE60",
+ "stixEE61",
+ "stixEE62",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "stixEE70",
+ "stixEE71",
+ "stixEE72",
+ "stixEE73",
+ "stixEE74",
+ "stixEE75",
+ "stixEE76",
+ "stixEE77",
+ "stixEE78",
+ "stixEE79",
+ "stixEE7A",
+ "stixEE7B",
+ "stixEE7C",
+ "stixEE7D",
+ "stixEE7E",
+ "stixEE7F",
+ "stixEE80",
+ "stixEE81",
+ "stixEE82",
+ "stixEE83",
+ "stixEE84",
+ "stixEE85",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "stixEE90",
+ "stixEE91",
+ "stixEE92",
+ "stixEE93",
+ "stixEE94",
+ "stixEE95",
+ "stixEE96",
+ "stixEE97",
+ "stixEE98",
+ "stixEE99",
+ "stixEE9A",
+ "stixEE9B",
+ "stixEE9C",
+ "stixEE9D",
+ "stixEE9E",
+ "stixEE9F",
+ "stixEEA0",
+ "stixEEA1",
+ "stixEEA2",
+ "stixEEA3",
+ "stixEEA4",
+ "stixEEA5",
+ "stixEEA6",
+ "stixEEA7",
+ "stixEEA8",
+ "stixEEA9",
+ "stixEEAA",
+ "stixEEAB",
+ "stixEEAC",
+ NULL,
+ NULL,
+ NULL,
+ "stixEEB0",
+ "stixEEB1",
+ "stixEEB2",
+ "stixEEB3",
+ "stixEEB4",
+ "stixEEB5",
+ "stixEEB6",
+ "stixEEB7",
+ "stixEEB8",
+ "stixEEB9",
+ "stixEEBA",
+ "stixEEBB",
+ "stixEEBC",
+ "stixEEBD",
+ "stixEEBE",
+ "stixEEBF",
+ "stixEEC0",
+ "stixEEC1",
+ "stixEEC2",
+ "stixEEC3",
+ "stixEEC4",
+ "stixEEC5",
+ "stixEEC6",
+ "stixEEC7",
+ "stixEEC8",
+ "stixEEC9",
+ "stixEECA",
+ "stixEECB",
+ NULL,
+ "stixEECD",
+ "stixEECE",
+ "stixEECF",
+ "stixEED0",
+ "stixEED1",
+ "stixEED2",
+ "stixEED3",
+ "stixEED4",
+ "stixEED5",
+ "stixEED6",
+ "stixEED7",
+ "stixEED8",
+ "stixEED9",
+ "stixEEDA",
+ "stixEEDB",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *ams_p0_bf4[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni29CF0338",
+ "uni29D00338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2AA10338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2AA20338",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char *ams_p0_bf5[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "uni2191.short",
+ "uni2193.short",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const char **ams_p0[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ ams_p0_be2,
+ ams_p0_be3,
+ ams_p0_be4,
+ ams_p0_be5,
+ ams_p0_be6,
+ NULL,
+ ams_p0_be8,
+ NULL,
+ ams_p0_bea,
+ NULL,
+ ams_p0_bec,
+ ams_p0_bed,
+ ams_p0_bee,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ ams_p0_bf4,
+ ams_p0_bf5,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static NameList ams = {
+ &tex,
+ N_("AMS Names"),
+ { ams_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+ NULL, NULL, 0, NULL
+};
+/* ************************************************************************** */
+static struct psaltnames psaltnames[] = {
+ { "AEmacron", 0x01e2, 0 },
+ { "AEsmall", 0xf7e6, 0 },
+ { "Aacutesmall", 0xf7e1, 0 },
+ { "Abreveacute", 0x1eae, 0 },
+ { "Abrevecyrillic", 0x04d0, 0 },
+ { "Abrevedotbelow", 0x1eb6, 0 },
+ { "Abrevegrave", 0x1eb0, 0 },
+ { "Abrevehookabove", 0x1eb2, 0 },
+ { "Abrevetilde", 0x1eb4, 0 },
+ { "Acaron", 0x01cd, 0 },
+ { "Acircle", 0x24b6, 0 },
+ { "Acircumflexacute", 0x1ea4, 0 },
+ { "Acircumflexdotbelow", 0x1eac, 0 },
+ { "Acircumflexgrave", 0x1ea6, 0 },
+ { "Acircumflexhookabove", 0x1ea8, 0 },
+ { "Acircumflexsmall", 0xf7e2, 0 },
+ { "Acircumflextilde", 0x1eaa, 0 },
+ { "Acute", 0xf6c9, 0 },
+ { "Acutesmall", 0xf7b4, 0 },
+ { "Acyrillic", 0x0410, 0 },
+ { "Adblgrave", 0x0200, 0 },
+ { "Adieresiscyrillic", 0x04d2, 0 },
+ { "Adieresismacron", 0x01de, 0 },
+ { "Adieresissmall", 0xf7e4, 0 },
+ { "Adotbelow", 0x1ea0, 0 },
+ { "Adotmacron", 0x01e0, 0 },
+ { "Agravesmall", 0xf7e0, 0 },
+ { "Ahookabove", 0x1ea2, 0 },
+ { "Aiecyrillic", 0x04d4, 0 },
+ { "Ainvertedbreve", 0x0202, 0 },
+ { "Amonospace", 0xff21, 0 },
+ { "Aringbelow", 0x1e00, 0 },
+ { "Aringsmall", 0xf7e5, 0 },
+ { "Asmall", 0xf761, 0 },
+ { "Atildesmall", 0xf7e3, 0 },
+ { "Aybarmenian", 0x0531, 0 },
+ { "Bcircle", 0x24b7, 0 },
+ { "Bdotaccent", 0x1e02, 0 },
+ { "Bdotbelow", 0x1e04, 0 },
+ { "Becyrillic", 0x0411, 0 },
+ { "Benarmenian", 0x0532, 0 },
+ { "Bhook", 0x0181, 0 },
+ { "Blinebelow", 0x1e06, 0 },
+ { "Bmonospace", 0xff22, 0 },
+ { "Brevesmall", 0xf6f4, 0 },
+ { "Bsmall", 0xf762, 0 },
+ { "Btopbar", 0x0182, 0 },
+ { "Caarmenian", 0x053e, 0 },
+ { "Caron", 0xf6ca, 0 },
+ { "Caronsmall", 0xf6f5, 0 },
+ { "Ccedillaacute", 0x1e08, 0 },
+ { "Ccedillasmall", 0xf7e7, 0 },
+ { "Ccircle", 0x24b8, 0 },
+ { "Cdot", 0x010a, 0 },
+ { "Cedillasmall", 0xf7b8, 0 },
+ { "Chaarmenian", 0x0549, 0 },
+ { "Cheabkhasiancyrillic", 0x04bc, 0 },
+ { "Checyrillic", 0x0427, 0 },
+ { "Chedescenderabkhasiancyrillic", 0x04be, 0 },
+ { "Chedescendercyrillic", 0x04b6, 0 },
+ { "Chedieresiscyrillic", 0x04f4, 0 },
+ { "Cheharmenian", 0x0543, 0 },
+ { "Chekhakassiancyrillic", 0x04cb, 0 },
+ { "Cheverticalstrokecyrillic", 0x04b8, 0 },
+ { "Chook", 0x0187, 0 },
+ { "Circumflexsmall", 0xf6f6, 0 },
+ { "Cmonospace", 0xff23, 0 },
+ { "Coarmenian", 0x0551, 0 },
+ { "Csmall", 0xf763, 0 },
+ { "DZ", 0x01f1, 0 },
+ { "DZcaron", 0x01c4, 0 },
+ { "Daarmenian", 0x0534, 0 },
+ { "Dafrican", 0x0189, 0 },
+ { "Dcedilla", 0x1e10, 0 },
+ { "Dcircle", 0x24b9, 0 },
+ { "Dcircumflexbelow", 0x1e12, 0 },
+ { "Ddotaccent", 0x1e0a, 0 },
+ { "Ddotbelow", 0x1e0c, 0 },
+ { "Decyrillic", 0x0414, 0 },
+ { "Deicoptic", 0x03ee, 0 },
+ { "Deltagreek", 0x0394, 0 },
+ { "Dhook", 0x018a, 0 },
+ { "Dieresis", 0xf6cb, 0 },
+ { "diaeresis", 0x00a8, 0 },
+ { "Diaeresis", 0xf6cb, 0 },
+ { "DieresisAcute", 0xf6cc, 0 },
+ { "DieresisGrave", 0xf6cd, 0 },
+ { "Dieresissmall", 0xf7a8, 0 },
+ { "Digammagreek", 0x03dc, 0 },
+ { "Djecyrillic", 0x0402, 0 },
+ { "Dlinebelow", 0x1e0e, 0 },
+ { "Dmonospace", 0xff24, 0 },
+ { "Dotaccentsmall", 0xf6f7, 0 },
+ { "Dslash", 0x0110, 0 },
+ { "Dsmall", 0xf764, 0 },
+ { "Dtopbar", 0x018b, 0 },
+ { "Dz", 0x01f2, 0 },
+ { "Dzcaron", 0x01c5, 0 },
+ { "Dzeabkhasiancyrillic", 0x04e0, 0 },
+ { "Dzecyrillic", 0x0405, 0 },
+ { "Dzhecyrillic", 0x040f, 0 },
+ { "Eacutesmall", 0xf7e9, 0 },
+ { "Ecedillabreve", 0x1e1c, 0 },
+ { "Echarmenian", 0x0535, 0 },
+ { "Ecircle", 0x24ba, 0 },
+ { "Ecircumflexacute", 0x1ebe, 0 },
+ { "Ecircumflexbelow", 0x1e18, 0 },
+ { "Ecircumflexdotbelow", 0x1ec6, 0 },
+ { "Ecircumflexgrave", 0x1ec0, 0 },
+ { "Ecircumflexhookabove", 0x1ec2, 0 },
+ { "Ecircumflexsmall", 0xf7ea, 0 },
+ { "Ecircumflextilde", 0x1ec4, 0 },
+ { "Ecyrillic", 0x0404, 0 },
+ { "Edblgrave", 0x0204, 0 },
+ { "Edieresissmall", 0xf7eb, 0 },
+ { "Edot", 0x0116, 0 },
+ { "Edotbelow", 0x1eb8, 0 },
+ { "Efcyrillic", 0x0424, 0 },
+ { "Egravesmall", 0xf7e8, 0 },
+ { "Eharmenian", 0x0537, 0 },
+ { "Ehookabove", 0x1eba, 0 },
+ { "Eightroman", 0x2167, 0 },
+ { "Einvertedbreve", 0x0206, 0 },
+ { "Eiotifiedcyrillic", 0x0464, 0 },
+ { "Elcyrillic", 0x041b, 0 },
+ { "Elevenroman", 0x216a, 0 },
+ { "Emacronacute", 0x1e16, 0 },
+ { "Emacrongrave", 0x1e14, 0 },
+ { "Emcyrillic", 0x041c, 0 },
+ { "Emonospace", 0xff25, 0 },
+ { "Encyrillic", 0x041d, 0 },
+ { "Endescendercyrillic", 0x04a2, 0 },
+ { "Enghecyrillic", 0x04a4, 0 },
+ { "Enhookcyrillic", 0x04c7, 0 },
+ { "Eopen", 0x0190, 0 },
+ { "Ercyrillic", 0x0420, 0 },
+ { "Ereversed", 0x018e, 0 },
+ { "Ereversedcyrillic", 0x042d, 0 },
+ { "Escyrillic", 0x0421, 0 },
+ { "Esdescendercyrillic", 0x04aa, 0 },
+ { "Esh", 0x01a9, 0 },
+ { "Esmall", 0xf765, 0 },
+ { "Etarmenian", 0x0538, 0 },
+ { "Ethsmall", 0xf7f0, 0 },
+ { "Etilde", 0x1ebc, 0 },
+ { "Etildebelow", 0x1e1a, 0 },
+ { "Ezh", 0x01b7, 0 },
+ { "Ezhcaron", 0x01ee, 0 },
+ { "Ezhreversed", 0x01b8, 0 },
+ { "Fcircle", 0x24bb, 0 },
+ { "Fdotaccent", 0x1e1e, 0 },
+ { "Feharmenian", 0x0556, 0 },
+ { "Feicoptic", 0x03e4, 0 },
+ { "Fhook", 0x0191, 0 },
+ { "Fitacyrillic", 0x0472, 0 },
+ { "Fiveroman", 0x2164, 0 },
+ { "Fmonospace", 0xff26, 0 },
+ { "Fourroman", 0x2163, 0 },
+ { "Fsmall", 0xf766, 0 },
+ { "GBsquare", 0x3387, 0 },
+ { "Gacute", 0x01f4, 0 },
+ { "Gammaafrican", 0x0194, 0 },
+ { "Gangiacoptic", 0x03ea, 0 },
+ { "Gcedilla", 0x0122, 0 },
+ { "Gcircle", 0x24bc, 0 },
+ { "Gdot", 0x0120, 0 },
+ { "Gecyrillic", 0x0413, 0 },
+ { "Ghadarmenian", 0x0542, 0 },
+ { "Ghemiddlehookcyrillic", 0x0494, 0 },
+ { "Ghestrokecyrillic", 0x0492, 0 },
+ { "Gheupturncyrillic", 0x0490, 0 },
+ { "Ghook", 0x0193, 0 },
+ { "Gimarmenian", 0x0533, 0 },
+ { "Gjecyrillic", 0x0403, 0 },
+ { "Gmacron", 0x1e20, 0 },
+ { "Gmonospace", 0xff27, 0 },
+ { "Grave", 0xf6ce, 0 },
+ { "Gravesmall", 0xf760, 0 },
+ { "Gsmall", 0xf767, 0 },
+ { "Gsmallhook", 0x029b, 0 },
+ { "Gstroke", 0x01e4, 0 },
+ { "HPsquare", 0x33cb, 0 },
+ { "Haabkhasiancyrillic", 0x04a8, 0 },
+ { "Hadescendercyrillic", 0x04b2, 0 },
+ { "Hardsigncyrillic", 0x042a, 0 },
+ { "Hbrevebelow", 0x1e2a, 0 },
+ { "Hcedilla", 0x1e28, 0 },
+ { "Hcircle", 0x24bd, 0 },
+ { "Hdieresis", 0x1e26, 0 },
+ { "Hdotaccent", 0x1e22, 0 },
+ { "Hdotbelow", 0x1e24, 0 },
+ { "Hmonospace", 0xff28, 0 },
+ { "Hoarmenian", 0x0540, 0 },
+ { "Horicoptic", 0x03e8, 0 },
+ { "Hsmall", 0xf768, 0 },
+ { "Hungarumlaut", 0xf6cf, 0 },
+ { "Hungarumlautsmall", 0xf6f8, 0 },
+ { "Hzsquare", 0x3390, 0 },
+ { "IAcyrillic", 0x042f, 0 },
+ { "IUcyrillic", 0x042e, 0 },
+ { "Iacutesmall", 0xf7ed, 0 },
+ { "Icaron", 0x01cf, 0 },
+ { "Icircle", 0x24be, 0 },
+ { "Icircumflexsmall", 0xf7ee, 0 },
+ { "Icyrillic", 0x0406, 0 },
+ { "Idblgrave", 0x0208, 0 },
+ { "Idieresisacute", 0x1e2e, 0 },
+ { "Idieresiscyrillic", 0x04e4, 0 },
+ { "Idieresissmall", 0xf7ef, 0 },
+ { "Idot", 0x0130, 0 },
+ { "Idotbelow", 0x1eca, 0 },
+ { "Iebrevecyrillic", 0x04d6, 0 },
+ { "Iecyrillic", 0x0415, 0 },
+ { "Igravesmall", 0xf7ec, 0 },
+ { "Ihookabove", 0x1ec8, 0 },
+ { "Iicyrillic", 0x0418, 0 },
+ { "Iinvertedbreve", 0x020a, 0 },
+ { "Iishortcyrillic", 0x0419, 0 },
+ { "Imacroncyrillic", 0x04e2, 0 },
+ { "Imonospace", 0xff29, 0 },
+ { "Iniarmenian", 0x053b, 0 },
+ { "Iocyrillic", 0x0401, 0 },
+ { "Iotaafrican", 0x0196, 0 },
+ { "Ismall", 0xf769, 0 },
+ { "Istroke", 0x0197, 0 },
+ { "Itildebelow", 0x1e2c, 0 },
+ { "Izhitsacyrillic", 0x0474, 0 },
+ { "Izhitsadblgravecyrillic", 0x0476, 0 },
+ { "Jaarmenian", 0x0541, 0 },
+ { "Jcircle", 0x24bf, 0 },
+ { "Jecyrillic", 0x0408, 0 },
+ { "Jheharmenian", 0x054b, 0 },
+ { "Jmonospace", 0xff2a, 0 },
+ { "Jsmall", 0xf76a, 0 },
+ { "KBsquare", 0x3385, 0 },
+ { "KKsquare", 0x33cd, 0 },
+ { "Kabashkircyrillic", 0x04a0, 0 },
+ { "Kacute", 0x1e30, 0 },
+ { "Kacyrillic", 0x041a, 0 },
+ { "Kadescendercyrillic", 0x049a, 0 },
+ { "Kahookcyrillic", 0x04c3, 0 },
+ { "Kastrokecyrillic", 0x049e, 0 },
+ { "Kaverticalstrokecyrillic", 0x049c, 0 },
+ { "Kcaron", 0x01e8, 0 },
+ { "Kcedilla", 0x0136, 0 },
+ { "Kcircle", 0x24c0, 0 },
+ { "Kdotbelow", 0x1e32, 0 },
+ { "Keharmenian", 0x0554, 0 },
+ { "Kenarmenian", 0x053f, 0 },
+ { "Khacyrillic", 0x0425, 0 },
+ { "Kheicoptic", 0x03e6, 0 },
+ { "Khook", 0x0198, 0 },
+ { "Kjecyrillic", 0x040c, 0 },
+ { "Klinebelow", 0x1e34, 0 },
+ { "Kmonospace", 0xff2b, 0 },
+ { "Koppacyrillic", 0x0480, 0 },
+ { "Koppagreek", 0x03de, 0 },
+ { "Ksicyrillic", 0x046e, 0 },
+ { "Ksmall", 0xf76b, 0 },
+ { "LJ", 0x01c7, 0 },
+ { "LL", 0xf6bf, 0 },
+ { "Lcedilla", 0x013b, 0 },
+ { "Lcircle", 0x24c1, 0 },
+ { "Lcircumflexbelow", 0x1e3c, 0 },
+ { "Ldotaccent", 0x013f, 0 },
+ { "Ldotbelow", 0x1e36, 0 },
+ { "Ldotbelowmacron", 0x1e38, 0 },
+ { "Liwnarmenian", 0x053c, 0 },
+ { "Lj", 0x01c8, 0 },
+ { "Ljecyrillic", 0x0409, 0 },
+ { "Llinebelow", 0x1e3a, 0 },
+ { "Lmonospace", 0xff2c, 0 },
+ { "Lslashsmall", 0xf6f9, 0 },
+ { "Lsmall", 0xf76c, 0 },
+ { "MBsquare", 0x3386, 0 },
+ { "Macron", 0xf6d0, 0 },
+ { "Macronsmall", 0xf7af, 0 },
+ { "Macute", 0x1e3e, 0 },
+ { "Mcircle", 0x24c2, 0 },
+ { "Mdotaccent", 0x1e40, 0 },
+ { "Mdotbelow", 0x1e42, 0 },
+ { "Menarmenian", 0x0544, 0 },
+ { "Mmonospace", 0xff2d, 0 },
+ { "Msmall", 0xf76d, 0 },
+ { "Mturned", 0x019c, 0 },
+ { "NJ", 0x01ca, 0 },
+ { "Ncedilla", 0x0145, 0 },
+ { "Ncircle", 0x24c3, 0 },
+ { "Ncircumflexbelow", 0x1e4a, 0 },
+ { "Ndotaccent", 0x1e44, 0 },
+ { "Ndotbelow", 0x1e46, 0 },
+ { "Nhookleft", 0x019d, 0 },
+ { "Nineroman", 0x2168, 0 },
+ { "Nj", 0x01cb, 0 },
+ { "Njecyrillic", 0x040a, 0 },
+ { "Nlinebelow", 0x1e48, 0 },
+ { "Nmonospace", 0xff2e, 0 },
+ { "Nowarmenian", 0x0546, 0 },
+ { "Nsmall", 0xf76e, 0 },
+ { "Ntildesmall", 0xf7f1, 0 },
+ { "OEsmall", 0xf6fa, 0 },
+ { "Oacutesmall", 0xf7f3, 0 },
+ { "Obarredcyrillic", 0x04e8, 0 },
+ { "Obarreddieresiscyrillic", 0x04ea, 0 },
+ { "Ocaron", 0x01d1, 0 },
+ { "Ocenteredtilde", 0x019f, 0 },
+ { "Ocircle", 0x24c4, 0 },
+ { "Ocircumflexacute", 0x1ed0, 0 },
+ { "Ocircumflexdotbelow", 0x1ed8, 0 },
+ { "Ocircumflexgrave", 0x1ed2, 0 },
+ { "Ocircumflexhookabove", 0x1ed4, 0 },
+ { "Ocircumflexsmall", 0xf7f4, 0 },
+ { "Ocircumflextilde", 0x1ed6, 0 },
+ { "Ocyrillic", 0x041e, 0 },
+ { "Odblacute", 0x0150, 0 },
+ { "Odblgrave", 0x020c, 0 },
+ { "Odieresiscyrillic", 0x04e6, 0 },
+ { "Odieresissmall", 0xf7f6, 0 },
+ { "Odotbelow", 0x1ecc, 0 },
+ { "Ogoneksmall", 0xf6fb, 0 },
+ { "Ogravesmall", 0xf7f2, 0 },
+ { "Oharmenian", 0x0555, 0 },
+ { "Ohm", 0x2126, 0 },
+ { "Ohookabove", 0x1ece, 0 },
+ { "Ohornacute", 0x1eda, 0 },
+ { "Ohorndotbelow", 0x1ee2, 0 },
+ { "Ohorngrave", 0x1edc, 0 },
+ { "Ohornhookabove", 0x1ede, 0 },
+ { "Ohorntilde", 0x1ee0, 0 },
+ { "Oi", 0x01a2, 0 },
+ { "Oinvertedbreve", 0x020e, 0 },
+ { "Omacronacute", 0x1e52, 0 },
+ { "Omacrongrave", 0x1e50, 0 },
+ { "Omegacyrillic", 0x0460, 0 },
+ { "Omegagreek", 0x03a9, 0 },
+ { "Omegaroundcyrillic", 0x047a, 0 },
+ { "Omegatitlocyrillic", 0x047c, 0 },
+ { "Omonospace", 0xff2f, 0 },
+ { "Oneroman", 0x2160, 0 },
+ { "Oogonek", 0x01ea, 0 },
+ { "Oogonekmacron", 0x01ec, 0 },
+ { "Oopen", 0x0186, 0 },
+ { "Oslashsmall", 0xf7f8, 0 },
+ { "Osmall", 0xf76f, 0 },
+ { "Ostrokeacute", 0x01fe, 0 },
+ { "Otcyrillic", 0x047e, 0 },
+ { "Otildeacute", 0x1e4c, 0 },
+ { "Otildedieresis", 0x1e4e, 0 },
+ { "Otildesmall", 0xf7f5, 0 },
+ { "Pacute", 0x1e54, 0 },
+ { "Pcircle", 0x24c5, 0 },
+ { "Pdotaccent", 0x1e56, 0 },
+ { "Pecyrillic", 0x041f, 0 },
+ { "Peharmenian", 0x054a, 0 },
+ { "Pemiddlehookcyrillic", 0x04a6, 0 },
+ { "Phook", 0x01a4, 0 },
+ { "Piwrarmenian", 0x0553, 0 },
+ { "Pmonospace", 0xff30, 0 },
+ { "Psicyrillic", 0x0470, 0 },
+ { "Psmall", 0xf770, 0 },
+ { "Qcircle", 0x24c6, 0 },
+ { "Qmonospace", 0xff31, 0 },
+ { "Qsmall", 0xf771, 0 },
+ { "Raarmenian", 0x054c, 0 },
+ { "Rcedilla", 0x0156, 0 },
+ { "Rcircle", 0x24c7, 0 },
+ { "Rdblgrave", 0x0210, 0 },
+ { "Rdotaccent", 0x1e58, 0 },
+ { "Rdotbelow", 0x1e5a, 0 },
+ { "Rdotbelowmacron", 0x1e5c, 0 },
+ { "Reharmenian", 0x0550, 0 },
+ { "Ringsmall", 0xf6fc, 0 },
+ { "Rinvertedbreve", 0x0212, 0 },
+ { "Rlinebelow", 0x1e5e, 0 },
+ { "Rmonospace", 0xff32, 0 },
+ { "Rsmall", 0xf772, 0 },
+ { "Rsmallinverted", 0x0281, 0 },
+ { "Rsmallinvertedsuperior", 0x02b6, 0 },
+ { "Sacutedotaccent", 0x1e64, 0 },
+ { "Sampigreek", 0x03e0, 0 },
+ { "Scarondotaccent", 0x1e66, 0 },
+ { "Scaronsmall", 0xf6fd, 0 },
+ { "Schwa", 0x018f, 0 },
+ { "Schwacyrillic", 0x04d8, 0 },
+ { "Schwadieresiscyrillic", 0x04da, 0 },
+ { "Scircle", 0x24c8, 0 },
+ { "Sdotaccent", 0x1e60, 0 },
+ { "Sdotbelow", 0x1e62, 0 },
+ { "Sdotbelowdotaccent", 0x1e68, 0 },
+ { "Seharmenian", 0x054d, 0 },
+ { "Sevenroman", 0x2166, 0 },
+ { "Shaarmenian", 0x0547, 0 },
+ { "Shacyrillic", 0x0428, 0 },
+ { "Shchacyrillic", 0x0429, 0 },
+ { "Sheicoptic", 0x03e2, 0 },
+ { "Shhacyrillic", 0x04ba, 0 },
+ { "Shimacoptic", 0x03ec, 0 },
+ { "Sixroman", 0x2165, 0 },
+ { "Smonospace", 0xff33, 0 },
+ { "Softsigncyrillic", 0x042c, 0 },
+ { "Ssmall", 0xf773, 0 },
+ { "Stigmagreek", 0x03da, 0 },
+ { "Tcedilla", 0x0162, 0 },
+ { "Tcircle", 0x24c9, 0 },
+ { "Tcircumflexbelow", 0x1e70, 0 },
+ { "Tdotaccent", 0x1e6a, 0 },
+ { "Tdotbelow", 0x1e6c, 0 },
+ { "Tecyrillic", 0x0422, 0 },
+ { "Tedescendercyrillic", 0x04ac, 0 },
+ { "Tenroman", 0x2169, 0 },
+ { "Tetsecyrillic", 0x04b4, 0 },
+ { "Thook", 0x01ac, 0 },
+ { "Thornsmall", 0xf7fe, 0 },
+ { "Threeroman", 0x2162, 0 },
+ { "Tildesmall", 0xf6fe, 0 },
+ { "Tiwnarmenian", 0x054f, 0 },
+ { "Tlinebelow", 0x1e6e, 0 },
+ { "Tmonospace", 0xff34, 0 },
+ { "Toarmenian", 0x0539, 0 },
+ { "Tonefive", 0x01bc, 0 },
+ { "Tonesix", 0x0184, 0 },
+ { "Tonetwo", 0x01a7, 0 },
+ { "Tretroflexhook", 0x01ae, 0 },
+ { "Tsecyrillic", 0x0426, 0 },
+ { "Tshecyrillic", 0x040b, 0 },
+ { "Tsmall", 0xf774, 0 },
+ { "Twelveroman", 0x216b, 0 },
+ { "Tworoman", 0x2161, 0 },
+ { "Uacutesmall", 0xf7fa, 0 },
+ { "Ucaron", 0x01d3, 0 },
+ { "Ucircle", 0x24ca, 0 },
+ { "Ucircumflexbelow", 0x1e76, 0 },
+ { "Ucircumflexsmall", 0xf7fb, 0 },
+ { "Ucyrillic", 0x0423, 0 },
+ { "Udblacute", 0x0170, 0 },
+ { "Udblgrave", 0x0214, 0 },
+ { "Udieresisacute", 0x01d7, 0 },
+ { "Udieresisbelow", 0x1e72, 0 },
+ { "Udieresiscaron", 0x01d9, 0 },
+ { "Udieresiscyrillic", 0x04f0, 0 },
+ { "Udieresisgrave", 0x01db, 0 },
+ { "Udieresismacron", 0x01d5, 0 },
+ { "Udieresissmall", 0xf7fc, 0 },
+ { "Udotbelow", 0x1ee4, 0 },
+ { "Ugravesmall", 0xf7f9, 0 },
+ { "Uhookabove", 0x1ee6, 0 },
+ { "Uhornacute", 0x1ee8, 0 },
+ { "Uhorndotbelow", 0x1ef0, 0 },
+ { "Uhorngrave", 0x1eea, 0 },
+ { "Uhornhookabove", 0x1eec, 0 },
+ { "Uhorntilde", 0x1eee, 0 },
+ { "Uhungarumlautcyrillic", 0x04f2, 0 },
+ { "Uinvertedbreve", 0x0216, 0 },
+ { "Ukcyrillic", 0x0478, 0 },
+ { "Umacroncyrillic", 0x04ee, 0 },
+ { "Umacrondieresis", 0x1e7a, 0 },
+ { "Umonospace", 0xff35, 0 },
+ { "Upsilonacutehooksymbolgreek", 0x03d3, 0 },
+ { "Upsilonafrican", 0x01b1, 0 },
+ { "Upsilondieresishooksymbolgreek", 0x03d4, 0 },
+ { "Upsilonhooksymbol", 0x03d2, 0 },
+ { "Ushortcyrillic", 0x040e, 0 },
+ { "Usmall", 0xf775, 0 },
+ { "Ustraightcyrillic", 0x04ae, 0 },
+ { "Ustraightstrokecyrillic", 0x04b0, 0 },
+ { "Utildeacute", 0x1e78, 0 },
+ { "Utildebelow", 0x1e74, 0 },
+ { "Vcircle", 0x24cb, 0 },
+ { "Vdotbelow", 0x1e7e, 0 },
+ { "Vecyrillic", 0x0412, 0 },
+ { "Vewarmenian", 0x054e, 0 },
+ { "Vhook", 0x01b2, 0 },
+ { "Vmonospace", 0xff36, 0 },
+ { "Voarmenian", 0x0548, 0 },
+ { "Vsmall", 0xf776, 0 },
+ { "Vtilde", 0x1e7c, 0 },
+ { "Wcircle", 0x24cc, 0 },
+ { "Wdotaccent", 0x1e86, 0 },
+ { "Wdotbelow", 0x1e88, 0 },
+ { "Wmonospace", 0xff37, 0 },
+ { "Wsmall", 0xf777, 0 },
+ { "Xcircle", 0x24cd, 0 },
+ { "Xdieresis", 0x1e8c, 0 },
+ { "Xdotaccent", 0x1e8a, 0 },
+ { "Xeharmenian", 0x053d, 0 },
+ { "Xmonospace", 0xff38, 0 },
+ { "Xsmall", 0xf778, 0 },
+ { "Yacutesmall", 0xf7fd, 0 },
+ { "Yatcyrillic", 0x0462, 0 },
+ { "Ycircle", 0x24ce, 0 },
+ { "Ydieresissmall", 0xf7ff, 0 },
+ { "Ydotaccent", 0x1e8e, 0 },
+ { "Ydotbelow", 0x1ef4, 0 },
+ { "Yericyrillic", 0x042b, 0 },
+ { "Yerudieresiscyrillic", 0x04f8, 0 },
+ { "Yhook", 0x01b3, 0 },
+ { "Yhookabove", 0x1ef6, 0 },
+ { "Yiarmenian", 0x0545, 0 },
+ { "Yicyrillic", 0x0407, 0 },
+ { "Yiwnarmenian", 0x0552, 0 },
+ { "Ymonospace", 0xff39, 0 },
+ { "Ysmall", 0xf779, 0 },
+ { "Ytilde", 0x1ef8, 0 },
+ { "Yusbigcyrillic", 0x046a, 0 },
+ { "Yusbigiotifiedcyrillic", 0x046c, 0 },
+ { "Yuslittlecyrillic", 0x0466, 0 },
+ { "Yuslittleiotifiedcyrillic", 0x0468, 0 },
+ { "Zaarmenian", 0x0536, 0 },
+ { "Zcaronsmall", 0xf6ff, 0 },
+ { "Zcircle", 0x24cf, 0 },
+ { "Zcircumflex", 0x1e90, 0 },
+ { "Zdot", 0x017b, 0 },
+ { "Zdotbelow", 0x1e92, 0 },
+ { "Zecyrillic", 0x0417, 0 },
+ { "Zedescendercyrillic", 0x0498, 0 },
+ { "Zedieresiscyrillic", 0x04de, 0 },
+ { "Zhearmenian", 0x053a, 0 },
+ { "Zhebrevecyrillic", 0x04c1, 0 },
+ { "Zhecyrillic", 0x0416, 0 },
+ { "Zhedescendercyrillic", 0x0496, 0 },
+ { "Zhedieresiscyrillic", 0x04dc, 0 },
+ { "Zlinebelow", 0x1e94, 0 },
+ { "Zmonospace", 0xff3a, 0 },
+ { "Zsmall", 0xf77a, 0 },
+ { "Zstroke", 0x01b5, 0 },
+ { "aabengali", 0x0986, 0 },
+ { "aadeva", 0x0906, 0 },
+ { "aagujarati", 0x0a86, 0 },
+ { "aagurmukhi", 0x0a06, 0 },
+ { "aamatragurmukhi", 0x0a3e, 0 },
+ { "aarusquare", 0x3303, 0 },
+ { "aavowelsignbengali", 0x09be, 0 },
+ { "aavowelsigndeva", 0x093e, 0 },
+ { "aavowelsigngujarati", 0x0abe, 0 },
+ { "abbreviationmarkarmenian", 0x055f, 0 },
+ { "abbreviationsigndeva", 0x0970, 0 },
+ { "abengali", 0x0985, 0 },
+ { "abopomofo", 0x311a, 0 },
+ { "abreveacute", 0x1eaf, 0 },
+ { "abrevecyrillic", 0x04d1, 0 },
+ { "abrevedotbelow", 0x1eb7, 0 },
+ { "abrevegrave", 0x1eb1, 0 },
+ { "abrevehookabove", 0x1eb3, 0 },
+ { "abrevetilde", 0x1eb5, 0 },
+ { "acaron", 0x01ce, 0 },
+ { "acircle", 0x24d0, 0 },
+ { "acircumflexacute", 0x1ea5, 0 },
+ { "acircumflexdotbelow", 0x1ead, 0 },
+ { "acircumflexgrave", 0x1ea7, 0 },
+ { "acircumflexhookabove", 0x1ea9, 0 },
+ { "acircumflextilde", 0x1eab, 0 },
+ { "acutebelowcmb", 0x0317, 0 },
+ { "acutecmb", 0x0301, 0 },
+ { "acutedeva", 0x0954, 0 },
+ { "acutelowmod", 0x02cf, 0 },
+ { "acutetonecmb", 0x0341, 0 },
+ { "acyrillic", 0x0430, 0 },
+ { "adblgrave", 0x0201, 0 },
+ { "addakgurmukhi", 0x0a71, 0 },
+ { "adeva", 0x0905, 0 },
+ { "adieresiscyrillic", 0x04d3, 0 },
+ { "adieresismacron", 0x01df, 0 },
+ { "adotbelow", 0x1ea1, 0 },
+ { "adotmacron", 0x01e1, 0 },
+ { "aekorean", 0x3150, 0 },
+ { "aemacron", 0x01e3, 0 },
+ { "afii08941", 0x20a4, 0 },
+ { "afii10063", 0xf6c4, 0 },
+ { "afii10064", 0xf6c5, 0 },
+ { "afii10192", 0xf6c6, 0 },
+ { "afii10831", 0xf6c7, 0 },
+ { "afii10832", 0xf6c8, 0 },
+ { "afii57694", 0xfb2a, 0 },
+ { "afii57695", 0xfb2b, 0 },
+ { "afii57700", 0xfb4b, 0 },
+ { "afii57705", 0xfb1f, 0 },
+ { "afii57723", 0xfb35, 0 },
+ { "agujarati", 0x0a85, 0 },
+ { "agurmukhi", 0x0a05, 0 },
+ { "ahiragana", 0x3042, 0 },
+ { "ahookabove", 0x1ea3, 0 },
+ { "aibengali", 0x0990, 0 },
+ { "aibopomofo", 0x311e, 0 },
+ { "aideva", 0x0910, 0 },
+ { "aiecyrillic", 0x04d5, 0 },
+ { "aigujarati", 0x0a90, 0 },
+ { "aigurmukhi", 0x0a10, 0 },
+ { "aimatragurmukhi", 0x0a48, 0 },
+ { "ainarabic", 0x0639, 0 },
+ { "ainfinalarabic", 0xfeca, 0 },
+ { "aininitialarabic", 0xfecb, 0 },
+ { "ainmedialarabic", 0xfecc, 0 },
+ { "ainvertedbreve", 0x0203, 0 },
+ { "aivowelsignbengali", 0x09c8, 0 },
+ { "aivowelsigndeva", 0x0948, 0 },
+ { "aivowelsigngujarati", 0x0ac8, 0 },
+ { "akatakana", 0x30a2, 0 },
+ { "akatakanahalfwidth", 0xff71, 0 },
+ { "akorean", 0x314f, 0 },
+ { "alef", 0x05d0, 0 },
+ { "alefarabic", 0x0627, 0 },
+ { "alefdageshhebrew", 0xfb30, 0 },
+ { "aleffinalarabic", 0xfe8e, 0 },
+ { "alefhamzaabovearabic", 0x0623, 0 },
+ { "alefhamzaabovefinalarabic", 0xfe84, 0 },
+ { "alefhamzabelowarabic", 0x0625, 0 },
+ { "alefhamzabelowfinalarabic", 0xfe88, 0 },
+ { "alefhebrew", 0x05d0, 0 },
+ { "aleflamedhebrew", 0xfb4f, 0 },
+ { "alefmaddaabovearabic", 0x0622, 0 },
+ { "alefmaddaabovefinalarabic", 0xfe82, 0 },
+ { "alefmaksuraarabic", 0x0649, 0 },
+ { "alefmaksurafinalarabic", 0xfef0, 0 },
+ { "alefmaksurainitialarabic", 0xfef3, 0 },
+ { "alefmaksuramedialarabic", 0xfef4, 0 },
+ { "alefpatahhebrew", 0xfb2e, 0 },
+ { "alefqamatshebrew", 0xfb2f, 0 },
+ { "allequal", 0x224c, 0 },
+ { "amonospace", 0xff41, 0 },
+ { "ampersandmonospace", 0xff06, 0 },
+ { "ampersandsmall", 0xf726, 0 },
+ { "amsquare", 0x33c2, 0 },
+ { "anbopomofo", 0x3122, 0 },
+ { "angbopomofo", 0x3124, 0 },
+ { "angkhankhuthai", 0x0e5a, 0 },
+ { "anglebracketleft", 0x3008, 0 },
+ { "anglebracketleftvertical", 0xfe3f, 0 },
+ { "anglebracketright", 0x3009, 0 },
+ { "anglebracketrightvertical", 0xfe40, 0 },
+ { "angstrom", 0x212b, 0 },
+ { "anudattadeva", 0x0952, 0 },
+ { "anusvarabengali", 0x0982, 0 },
+ { "anusvaradeva", 0x0902, 0 },
+ { "anusvaragujarati", 0x0a82, 0 },
+ { "apaatosquare", 0x3300, 0 },
+ { "aparen", 0x249c, 0 },
+ { "apostrophearmenian", 0x055a, 0 },
+ { "apostrophemod", 0x02bc, 0 },
+ { "apple", 0xf8ff, 0 },
+ { "approaches", 0x2250, 0 },
+ { "approxequalorimage", 0x2252, 0 },
+ { "approximatelyequal", 0x2245, 0 },
+ { "araeaekorean", 0x318e, 0 },
+ { "araeakorean", 0x318d, 0 },
+ { "arc", 0x2312, 0 },
+ { "arighthalfring", 0x1e9a, 0 },
+ { "aringbelow", 0x1e01, 0 },
+ { "arrowdashdown", 0x21e3, 0 },
+ { "arrowdashleft", 0x21e0, 0 },
+ { "arrowdashright", 0x21e2, 0 },
+ { "arrowdashup", 0x21e1, 0 },
+ { "arrowdownleft", 0x2199, 0 },
+ { "arrowdownright", 0x2198, 0 },
+ { "arrowdownwhite", 0x21e9, 0 },
+ { "arrowheaddownmod", 0x02c5, 0 },
+ { "arrowheadleftmod", 0x02c2, 0 },
+ { "arrowheadrightmod", 0x02c3, 0 },
+ { "arrowheadupmod", 0x02c4, 0 },
+ { "arrowhorizex", 0xf8e7, 0 },
+ { "arrowleftdbl", 0x21d0, 0 },
+ { "arrowleftdblstroke", 0x21cd, 0 },
+ { "arrowleftoverright", 0x21c6, 0 },
+ { "arrowleftwhite", 0x21e6, 0 },
+ { "arrowrightdblstroke", 0x21cf, 0 },
+ { "arrowrightheavy", 0x279e, 0 },
+ { "arrowrightoverleft", 0x21c4, 0 },
+ { "arrowrightwhite", 0x21e8, 0 },
+ { "arrowtableft", 0x21e4, 0 },
+ { "arrowtabright", 0x21e5, 0 },
+ { "arrowupdownbase", 0x21a8, 0 },
+ { "arrowupleft", 0x2196, 0 },
+ { "arrowupleftofdown", 0x21c5, 0 },
+ { "arrowupright", 0x2197, 0 },
+ { "arrowupwhite", 0x21e7, 0 },
+ { "arrowvertex", 0xf8e6, 0 },
+ { "asciicircummonospace", 0xff3e, 0 },
+ { "asciitildemonospace", 0xff5e, 0 },
+ { "ascript", 0x0251, 0 },
+ { "ascriptturned", 0x0252, 0 },
+ { "asmallhiragana", 0x3041, 0 },
+ { "asmallkatakana", 0x30a1, 0 },
+ { "asmallkatakanahalfwidth", 0xff67, 0 },
+ { "asteriskaltonearabic", 0x066d, 0 },
+ { "asteriskarabic", 0x066d, 0 },
+ { "asteriskmonospace", 0xff0a, 0 },
+ { "asterisksmall", 0xfe61, 0 },
+ { "asterism", 0x2042, 0 },
+ { "asuperior", 0xf6e9, 0 },
+ { "asymptoticallyequal", 0x2243, 0 },
+ { "atmonospace", 0xff20, 0 },
+ { "atsmall", 0xfe6b, 0 },
+ { "aturned", 0x0250, 0 },
+ { "aubengali", 0x0994, 0 },
+ { "aubopomofo", 0x3120, 0 },
+ { "audeva", 0x0914, 0 },
+ { "augujarati", 0x0a94, 0 },
+ { "augurmukhi", 0x0a14, 0 },
+ { "aulengthmarkbengali", 0x09d7, 0 },
+ { "aumatragurmukhi", 0x0a4c, 0 },
+ { "auvowelsignbengali", 0x09cc, 0 },
+ { "auvowelsigndeva", 0x094c, 0 },
+ { "auvowelsigngujarati", 0x0acc, 0 },
+ { "avagrahadeva", 0x093d, 0 },
+ { "aybarmenian", 0x0561, 0 },
+ { "ayin", 0x05e2, 0 },
+ { "ayinaltonehebrew", 0xfb20, 0 },
+ { "ayinhebrew", 0x05e2, 0 },
+ { "babengali", 0x09ac, 0 },
+ { "backslashmonospace", 0xff3c, 0 },
+ { "badeva", 0x092c, 0 },
+ { "bagujarati", 0x0aac, 0 },
+ { "bagurmukhi", 0x0a2c, 0 },
+ { "bahiragana", 0x3070, 0 },
+ { "bahtthai", 0x0e3f, 0 },
+ { "bakatakana", 0x30d0, 0 },
+ { "barmonospace", 0xff5c, 0 },
+ { "bbopomofo", 0x3105, 0 },
+ { "bcircle", 0x24d1, 0 },
+ { "bdotaccent", 0x1e03, 0 },
+ { "bdotbelow", 0x1e05, 0 },
+ { "beamedsixteenthnotes", 0x266c, 0 },
+ { "because", 0x2235, 0 },
+ { "becyrillic", 0x0431, 0 },
+ { "beharabic", 0x0628, 0 },
+ { "behfinalarabic", 0xfe90, 0 },
+ { "behinitialarabic", 0xfe91, 0 },
+ { "behiragana", 0x3079, 0 },
+ { "behmedialarabic", 0xfe92, 0 },
+ { "behmeeminitialarabic", 0xfc9f, 0 },
+ { "behmeemisolatedarabic", 0xfc08, 0 },
+ { "behnoonfinalarabic", 0xfc6d, 0 },
+ { "bekatakana", 0x30d9, 0 },
+ { "benarmenian", 0x0562, 0 },
+ { "bet", 0x05d1, 0 },
+ { "betasymbolgreek", 0x03d0, 0 },
+ { "betdagesh", 0xfb31, 0 },
+ { "betdageshhebrew", 0xfb31, 0 },
+ { "bethebrew", 0x05d1, 0 },
+ { "betrafehebrew", 0xfb4c, 0 },
+ { "bhabengali", 0x09ad, 0 },
+ { "bhadeva", 0x092d, 0 },
+ { "bhagujarati", 0x0aad, 0 },
+ { "bhagurmukhi", 0x0a2d, 0 },
+ { "bhook", 0x0253, 0 },
+ { "bihiragana", 0x3073, 0 },
+ { "bikatakana", 0x30d3, 0 },
+ { "bilabialclick", 0x0298, 0 },
+ { "bindigurmukhi", 0x0a02, 0 },
+ { "birusquare", 0x3331, 0 },
+ { "blackcircle", 0x25cf, 0 },
+ { "blackdiamond", 0x25c6, 0 },
+ { "blackdownpointingtriangle", 0x25bc, 0 },
+ { "blackleftpointingpointer", 0x25c4, 0 },
+ { "blackleftpointingtriangle", 0x25c0, 0 },
+ { "blacklenticularbracketleft", 0x3010, 0 },
+ { "blacklenticularbracketleftvertical", 0xfe3b, 0 },
+ { "blacklenticularbracketright", 0x3011, 0 },
+ { "blacklenticularbracketrightvertical", 0xfe3c, 0 },
+ { "blacklowerlefttriangle", 0x25e3, 0 },
+ { "blacklowerrighttriangle", 0x25e2, 0 },
+ { "blackrectangle", 0x25ac, 0 },
+ { "blackrightpointingpointer", 0x25ba, 0 },
+ { "blackrightpointingtriangle", 0x25b6, 0 },
+ { "blacksmallsquare", 0x25aa, 0 },
+ { "blacksmilingface", 0x263b, 0 },
+ { "blacksquare", 0x25a0, 0 },
+ { "blackstar", 0x2605, 0 },
+ { "blackupperlefttriangle", 0x25e4, 0 },
+ { "blackupperrighttriangle", 0x25e5, 0 },
+ { "blackuppointingsmalltriangle", 0x25b4, 0 },
+ { "blackuppointingtriangle", 0x25b2, 0 },
+ { "blank", 0x2423, 0 },
+ { "blinebelow", 0x1e07, 0 },
+ { "bmonospace", 0xff42, 0 },
+ { "bobaimaithai", 0x0e1a, 0 },
+ { "bohiragana", 0x307c, 0 },
+ { "bokatakana", 0x30dc, 0 },
+ { "bparen", 0x249d, 0 },
+ { "bqsquare", 0x33c3, 0 },
+ { "braceex", 0xf8f4, 0 },
+ { "braceleftbt", 0xf8f3, 0 },
+ { "braceleftmid", 0xf8f2, 0 },
+ { "braceleftmonospace", 0xff5b, 0 },
+ { "braceleftsmall", 0xfe5b, 0 },
+ { "bracelefttp", 0xf8f1, 0 },
+ { "braceleftvertical", 0xfe37, 0 },
+ { "bracerightbt", 0xf8fe, 0 },
+ { "bracerightmid", 0xf8fd, 0 },
+ { "bracerightmonospace", 0xff5d, 0 },
+ { "bracerightsmall", 0xfe5c, 0 },
+ { "bracerighttp", 0xf8fc, 0 },
+ { "bracerightvertical", 0xfe38, 0 },
+ { "bracketleftbt", 0xf8f0, 0 },
+ { "bracketleftex", 0xf8ef, 0 },
+ { "bracketleftmonospace", 0xff3b, 0 },
+ { "bracketlefttp", 0xf8ee, 0 },
+ { "bracketrightbt", 0xf8fb, 0 },
+ { "bracketrightex", 0xf8fa, 0 },
+ { "bracketrightmonospace", 0xff3d, 0 },
+ { "bracketrighttp", 0xf8f9, 0 },
+ { "brevebelowcmb", 0x032e, 0 },
+ { "brevecmb", 0x0306, 0 },
+ { "breveinvertedbelowcmb", 0x032f, 0 },
+ { "breveinvertedcmb", 0x0311, 0 },
+ { "breveinverteddoublecmb", 0x0361, 0 },
+ { "bridgebelowcmb", 0x032a, 0 },
+ { "bridgeinvertedbelowcmb", 0x033a, 0 },
+ { "bstroke", 0x0180, 0 },
+ { "bsuperior", 0xf6ea, 0 },
+ { "btopbar", 0x0183, 0 },
+ { "buhiragana", 0x3076, 0 },
+ { "bukatakana", 0x30d6, 0 },
+ { "bulletinverse", 0x25d8, 0 },
+ { "bulletoperator", 0x2219, 0 },
+ { "bullseye", 0x25ce, 0 },
+ { "caarmenian", 0x056e, 0 },
+ { "cabengali", 0x099a, 0 },
+ { "cadeva", 0x091a, 0 },
+ { "cagujarati", 0x0a9a, 0 },
+ { "cagurmukhi", 0x0a1a, 0 },
+ { "calsquare", 0x3388, 0 },
+ { "candrabindubengali", 0x0981, 0 },
+ { "candrabinducmb", 0x0310, 0 },
+ { "candrabindudeva", 0x0901, 0 },
+ { "candrabindugujarati", 0x0a81, 0 },
+ { "capslock", 0x21ea, 0 },
+ { "careof", 0x2105, 0 },
+ { "caronbelowcmb", 0x032c, 0 },
+ { "caroncmb", 0x030c, 0 },
+ { "cbopomofo", 0x3118, 0 },
+ { "ccedillaacute", 0x1e09, 0 },
+ { "ccircle", 0x24d2, 0 },
+ { "ccurl", 0x0255, 0 },
+ { "cdot", 0x010b, 0 },
+ { "cdsquare", 0x33c5, 0 },
+ { "cedillacmb", 0x0327, 0 },
+ { "centigrade", 0x2103, 0 },
+ { "centinferior", 0xf6df, 0 },
+ { "centmonospace", 0xffe0, 0 },
+ { "centoldstyle", 0xf7a2, 0 },
+ { "centsuperior", 0xf6e0, 0 },
+ { "chaarmenian", 0x0579, 0 },
+ { "chabengali", 0x099b, 0 },
+ { "chadeva", 0x091b, 0 },
+ { "chagujarati", 0x0a9b, 0 },
+ { "chagurmukhi", 0x0a1b, 0 },
+ { "chbopomofo", 0x3114, 0 },
+ { "cheabkhasiancyrillic", 0x04bd, 0 },
+ { "checkmark", 0x2713, 0 },
+ { "checyrillic", 0x0447, 0 },
+ { "chedescenderabkhasiancyrillic", 0x04bf, 0 },
+ { "chedescendercyrillic", 0x04b7, 0 },
+ { "chedieresiscyrillic", 0x04f5, 0 },
+ { "cheharmenian", 0x0573, 0 },
+ { "chekhakassiancyrillic", 0x04cc, 0 },
+ { "cheverticalstrokecyrillic", 0x04b9, 0 },
+ { "chieuchacirclekorean", 0x3277, 0 },
+ { "chieuchaparenkorean", 0x3217, 0 },
+ { "chieuchcirclekorean", 0x3269, 0 },
+ { "chieuchkorean", 0x314a, 0 },
+ { "chieuchparenkorean", 0x3209, 0 },
+ { "chochangthai", 0x0e0a, 0 },
+ { "chochanthai", 0x0e08, 0 },
+ { "chochingthai", 0x0e09, 0 },
+ { "chochoethai", 0x0e0c, 0 },
+ { "chook", 0x0188, 0 },
+ { "cieucacirclekorean", 0x3276, 0 },
+ { "cieucaparenkorean", 0x3216, 0 },
+ { "cieuccirclekorean", 0x3268, 0 },
+ { "cieuckorean", 0x3148, 0 },
+ { "cieucparenkorean", 0x3208, 0 },
+ { "cieucuparenkorean", 0x321c, 0 },
+ { "circleot", 0x2299, 0 }, /* Typo in Adobe's glyphlist */
+ { "circledot", 0x2299, 0 }, /* But same typo exists in acrobat */
+ { "circlepostalmark", 0x3036, 0 },
+ { "circlewithlefthalfblack", 0x25d0, 0 },
+ { "circlewithrighthalfblack", 0x25d1, 0 },
+ { "circumflexbelowcmb", 0x032d, 0 },
+ { "circumflexcmb", 0x0302, 0 },
+ { "clear", 0x2327, 0 },
+ { "clickalveolar", 0x01c2, 0 },
+ { "clickdental", 0x01c0, 0 },
+ { "clicklateral", 0x01c1, 0 },
+ { "clickretroflex", 0x01c3, 0 },
+ { "clubsuitblack", 0x2663, 0 },
+ { "clubsuitwhite", 0x2667, 0 },
+ { "cmcubedsquare", 0x33a4, 0 },
+ { "cmonospace", 0xff43, 0 },
+ { "cmsquaredsquare", 0x33a0, 0 },
+ { "coarmenian", 0x0581, 0 },
+ { "colonmonospace", 0xff1a, 0 },
+ { "colonsign", 0x20a1, 0 },
+ { "colonsmall", 0xfe55, 0 },
+ { "colontriangularhalfmod", 0x02d1, 0 },
+ { "colontriangularmod", 0x02d0, 0 },
+ { "commaabovecmb", 0x0313, 0 },
+ { "commaaboverightcmb", 0x0315, 0 },
+ { "commaaccent", 0xf6c3, 0 },
+ { "commaarabic", 0x060c, 0 },
+ { "commaarmenian", 0x055d, 0 },
+ { "commainferior", 0xf6e1, 0 },
+ { "commamonospace", 0xff0c, 0 },
+ { "commareversedabovecmb", 0x0314, 0 },
+ { "commareversedmod", 0x02bd, 0 },
+ { "commasmall", 0xfe50, 0 },
+ { "commasuperior", 0xf6e2, 0 },
+ { "commaturnedabovecmb", 0x0312, 0 },
+ { "commaturnedmod", 0x02bb, 0 },
+ { "compass", 0x263c, 0 },
+ { "contourintegral", 0x222e, 0 },
+ { "control", 0x2303, 0 },
+ { "controlACK", 0x0006, 0 },
+ { "controlBEL", 0x0007, 0 },
+ { "controlBS", 0x0008, 0 },
+ { "controlCAN", 0x0018, 0 },
+ { "controlCR", 0x000d, 0 },
+ { "controlDC1", 0x0011, 0 },
+ { "controlDC2", 0x0012, 0 },
+ { "controlDC3", 0x0013, 0 },
+ { "controlDC4", 0x0014, 0 },
+ { "controlDEL", 0x007f, 0 },
+ { "controlDLE", 0x0010, 0 },
+ { "controlEM", 0x0019, 0 },
+ { "controlENQ", 0x0005, 0 },
+ { "controlEOT", 0x0004, 0 },
+ { "controlESC", 0x001b, 0 },
+ { "controlETB", 0x0017, 0 },
+ { "controlETX", 0x0003, 0 },
+ { "controlFF", 0x000c, 0 },
+ { "controlFS", 0x001c, 0 },
+ { "controlGS", 0x001d, 0 },
+ { "controlHT", 0x0009, 0 },
+ { "controlLF", 0x000a, 0 },
+ { "controlNAK", 0x0015, 0 },
+ { "controlRS", 0x001e, 0 },
+ { "controlSI", 0x000f, 0 },
+ { "controlSO", 0x000e, 0 },
+ { "controlSOT", 0x0002, 0 },
+ { "controlSTX", 0x0001, 0 },
+ { "controlSUB", 0x001a, 0 },
+ { "controlSYN", 0x0016, 0 },
+ { "controlUS", 0x001f, 0 },
+ { "controlVT", 0x000b, 0 },
+ { "copyrightsans", 0xf8e9, 0 },
+ { "copyrightserif", 0xf6d9, 0 },
+ { "cornerbracketleft", 0x300c, 0 },
+ { "cornerbracketlefthalfwidth", 0xff62, 0 },
+ { "cornerbracketleftvertical", 0xfe41, 0 },
+ { "cornerbracketright", 0x300d, 0 },
+ { "cornerbracketrighthalfwidth", 0xff63, 0 },
+ { "cornerbracketrightvertical", 0xfe42, 0 },
+ { "corporationsquare", 0x337f, 0 },
+ { "cosquare", 0x33c7, 0 },
+ { "coverkgsquare", 0x33c6, 0 },
+ { "cparen", 0x249e, 0 },
+ { "cruzeiro", 0x20a2, 0 },
+ { "cstretched", 0x0297, 0 },
+ { "curlyand", 0x22cf, 0 },
+ { "curlyor", 0x22ce, 0 },
+ { "cyrBreve", 0xf6d1, 0 },
+ { "cyrFlex", 0xf6d2, 0 },
+ { "cyrbreve", 0xf6d4, 0 },
+ { "cyrflex", 0xf6d5, 0 },
+ { "daarmenian", 0x0564, 0 },
+ { "dabengali", 0x09a6, 0 },
+ { "dadarabic", 0x0636, 0 },
+ { "dadeva", 0x0926, 0 },
+ { "dadfinalarabic", 0xfebe, 0 },
+ { "dadinitialarabic", 0xfebf, 0 },
+ { "dadmedialarabic", 0xfec0, 0 },
+ { "dagesh", 0x05bc, 0 },
+ { "dageshhebrew", 0x05bc, 0 },
+ { "dagujarati", 0x0aa6, 0 },
+ { "dagurmukhi", 0x0a26, 0 },
+ { "dahiragana", 0x3060, 0 },
+ { "dakatakana", 0x30c0, 0 },
+ { "dalarabic", 0x062f, 0 },
+ { "dalet", 0x05d3, 0 },
+ { "daletdagesh", 0xfb33, 0 },
+ { "daletdageshhebrew", 0xfb33, 0 },
+ { "dalethatafpatah", 0x05d3, 0 },
+ { "dalethatafpatahhebrew", 0x05d3, 0 },
+ { "dalethatafsegol", 0x05d3, 0 },
+ { "dalethatafsegolhebrew", 0x05d3, 0 },
+ { "dalethebrew", 0x05d3, 0 },
+ { "dalethiriq", 0x05d3, 0 },
+ { "dalethiriqhebrew", 0x05d3, 0 },
+ { "daletholam", 0x05d3, 0 },
+ { "daletholamhebrew", 0x05d3, 0 },
+ { "daletpatah", 0x05d3, 0 },
+ { "daletpatahhebrew", 0x05d3, 0 },
+ { "daletqamats", 0x05d3, 0 },
+ { "daletqamatshebrew", 0x05d3, 0 },
+ { "daletqubuts", 0x05d3, 0 },
+ { "daletqubutshebrew", 0x05d3, 0 },
+ { "daletsegol", 0x05d3, 0 },
+ { "daletsegolhebrew", 0x05d3, 0 },
+ { "daletsheva", 0x05d3, 0 },
+ { "daletshevahebrew", 0x05d3, 0 },
+ { "dalettsere", 0x05d3, 0 },
+ { "dalettserehebrew", 0x05d3, 0 },
+ { "dalfinalarabic", 0xfeaa, 0 },
+ { "dammaarabic", 0x064f, 0 },
+ { "dammalowarabic", 0x064f, 0 },
+ { "dammatanaltonearabic", 0x064c, 0 },
+ { "dammatanarabic", 0x064c, 0 },
+ { "danda", 0x0964, 0 },
+ { "dargahebrew", 0x05a7, 0 },
+ { "dargalefthebrew", 0x05a7, 0 },
+ { "dasiapneumatacyrilliccmb", 0x0485, 0 },
+ { "dblGrave", 0xf6d3, 0 },
+ { "dblanglebracketleft", 0x300a, 0 },
+ { "dblanglebracketleftvertical", 0xfe3d, 0 },
+ { "dblanglebracketright", 0x300b, 0 },
+ { "dblanglebracketrightvertical", 0xfe3e, 0 },
+ { "dblarchinvertedbelowcmb", 0x032b, 0 },
+ { "dblarrowleft", 0x21d4, 0 },
+ { "dblarrowright", 0x21d2, 0 },
+ { "dbldanda", 0x0965, 0 },
+ { "dblgrave", 0xf6d6, 0 },
+ { "dblgravecmb", 0x030f, 0 },
+ { "dblintegral", 0x222c, 0 },
+ { "dbllowline", 0x2017, 0 },
+ { "dbllowlinecmb", 0x0333, 0 },
+ { "dbloverlinecmb", 0x033f, 0 },
+ { "dblprimemod", 0x02ba, 0 },
+ { "dblverticalbar", 0x2016, 0 },
+ { "dblverticallineabovecmb", 0x030e, 0 },
+ { "dbopomofo", 0x3109, 0 },
+ { "dbsquare", 0x33c8, 0 },
+ { "dcedilla", 0x1e11, 0 },
+ { "dcircle", 0x24d3, 0 },
+ { "dcircumflexbelow", 0x1e13, 0 },
+ { "ddabengali", 0x09a1, 0 },
+ { "ddadeva", 0x0921, 0 },
+ { "ddagujarati", 0x0aa1, 0 },
+ { "ddagurmukhi", 0x0a21, 0 },
+ { "ddalarabic", 0x0688, 0 },
+ { "ddalfinalarabic", 0xfb89, 0 },
+ { "dddhadeva", 0x095c, 0 },
+ { "ddhabengali", 0x09a2, 0 },
+ { "ddhadeva", 0x0922, 0 },
+ { "ddhagujarati", 0x0aa2, 0 },
+ { "ddhagurmukhi", 0x0a22, 0 },
+ { "ddotaccent", 0x1e0b, 0 },
+ { "ddotbelow", 0x1e0d, 0 },
+ { "decimalseparatorarabic", 0x066b, 0 },
+ { "decimalseparatorpersian", 0x066b, 0 },
+ { "decyrillic", 0x0434, 0 },
+ { "dehihebrew", 0x05ad, 0 },
+ { "dehiragana", 0x3067, 0 },
+ { "deicoptic", 0x03ef, 0 },
+ { "dekatakana", 0x30c7, 0 },
+ { "deleteleft", 0x232b, 0 },
+ { "deleteright", 0x2326, 0 },
+ { "deltaturned", 0x018d, 0 },
+ { "denominatorminusonenumeratorbengali", 0x09f8, 0 },
+ { "dezh", 0x02a4, 0 },
+ { "dhabengali", 0x09a7, 0 },
+ { "dhadeva", 0x0927, 0 },
+ { "dhagujarati", 0x0aa7, 0 },
+ { "dhagurmukhi", 0x0a27, 0 },
+ { "dhook", 0x0257, 0 },
+ { "dialytikatonos", 0x0385, 0 },
+ { "dialytikatonoscmb", 0x0344, 0 },
+ { "diamondsuitwhite", 0x2662, 0 },
+ { "dieresisacute", 0xf6d7, 0 },
+ { "dieresisbelowcmb", 0x0324, 0 },
+ { "dieresiscmb", 0x0308, 0 },
+ { "dieresisgrave", 0xf6d8, 0 },
+ { "dihiragana", 0x3062, 0 },
+ { "dikatakana", 0x30c2, 0 },
+ { "dittomark", 0x3003, 0 },
+ { "divides", 0x2223, 0 },
+ { "divisionslash", 0x2215, 0 },
+ { "djecyrillic", 0x0452, 0 },
+ { "dlinebelow", 0x1e0f, 0 },
+ { "dlsquare", 0x3397, 0 },
+ { "dmacron", 0x0111, 0 },
+ { "dmonospace", 0xff44, 0 },
+ { "dochadathai", 0x0e0e, 0 },
+ { "dodekthai", 0x0e14, 0 },
+ { "dohiragana", 0x3069, 0 },
+ { "dokatakana", 0x30c9, 0 },
+ { "dollarinferior", 0xf6e3, 0 },
+ { "dollarmonospace", 0xff04, 0 },
+ { "dollaroldstyle", 0xf724, 0 },
+ { "dollarsmall", 0xfe69, 0 },
+ { "dollarsuperior", 0xf6e4, 0 },
+ { "dorusquare", 0x3326, 0 },
+ { "dotaccentcmb", 0x0307, 0 },
+ { "dotbelowcmb", 0x0323, 0 },
+ { "dotkatakana", 0x30fb, 0 },
+ { "dotlessj", 0x0237, 0 }, /* !!!! AGL Still says this is 0xf6be */
+ { "dotlessjstrokehook", 0x0284, 0 },
+ { "dottedcircle", 0x25cc, 0 },
+ { "doubleyodpatah", 0xfb1f, 0 },
+ { "doubleyodpatahhebrew", 0xfb1f, 0 },
+ { "downtackbelowcmb", 0x031e, 0 },
+ { "downtackmod", 0x02d5, 0 },
+ { "dparen", 0x249f, 0 },
+ { "dsuperior", 0xf6eb, 0 },
+ { "dtail", 0x0256, 0 },
+ { "dtopbar", 0x018c, 0 },
+ { "duhiragana", 0x3065, 0 },
+ { "dukatakana", 0x30c5, 0 },
+ { "dz", 0x01f3, 0 },
+ { "dzaltone", 0x02a3, 0 },
+ { "dzcaron", 0x01c6, 0 },
+ { "dzcurl", 0x02a5, 0 },
+ { "dzeabkhasiancyrillic", 0x04e1, 0 },
+ { "dzecyrillic", 0x0455, 0 },
+ { "dzhecyrillic", 0x045f, 0 },
+ { "earth", 0x2641, 0 },
+ { "ebengali", 0x098f, 0 },
+ { "ebopomofo", 0x311c, 0 },
+ { "ecandradeva", 0x090d, 0 },
+ { "ecandragujarati", 0x0a8d, 0 },
+ { "ecandravowelsigndeva", 0x0945, 0 },
+ { "ecandravowelsigngujarati", 0x0ac5, 0 },
+ { "ecedillabreve", 0x1e1d, 0 },
+ { "echarmenian", 0x0565, 0 },
+ { "echyiwnarmenian", 0x0587, 0 },
+ { "ecircle", 0x24d4, 0 },
+ { "ecircumflexacute", 0x1ebf, 0 },
+ { "ecircumflexbelow", 0x1e19, 0 },
+ { "ecircumflexdotbelow", 0x1ec7, 0 },
+ { "ecircumflexgrave", 0x1ec1, 0 },
+ { "ecircumflexhookabove", 0x1ec3, 0 },
+ { "ecircumflextilde", 0x1ec5, 0 },
+ { "ecyrillic", 0x0454, 0 },
+ { "edblgrave", 0x0205, 0 },
+ { "edeva", 0x090f, 0 },
+ { "edot", 0x0117, 0 },
+ { "edotbelow", 0x1eb9, 0 },
+ { "eegurmukhi", 0x0a0f, 0 },
+ { "eematragurmukhi", 0x0a47, 0 },
+ { "efcyrillic", 0x0444, 0 },
+ { "egujarati", 0x0a8f, 0 },
+ { "eharmenian", 0x0567, 0 },
+ { "ehbopomofo", 0x311d, 0 },
+ { "ehiragana", 0x3048, 0 },
+ { "ehookabove", 0x1ebb, 0 },
+ { "eibopomofo", 0x311f, 0 },
+ { "eightarabic", 0x0668, 0 },
+ { "eightbengali", 0x09ee, 0 },
+ { "eightcircle", 0x2467, 0 },
+ { "eightcircleinversesansserif", 0x2791, 0 },
+ { "eightdeva", 0x096e, 0 },
+ { "eighteencircle", 0x2471, 0 },
+ { "eighteenparen", 0x2485, 0 },
+ { "eighteenperiod", 0x2499, 0 },
+ { "eightgujarati", 0x0aee, 0 },
+ { "eightgurmukhi", 0x0a6e, 0 },
+ { "eighthackarabic", 0x0668, 0 },
+ { "eighthangzhou", 0x3028, 0 },
+ { "eighthnotebeamed", 0x266b, 0 },
+ { "eightideographicparen", 0x3227, 0 },
+ { "eightinferior", 0x2088, 0 },
+ { "eightmonospace", 0xff18, 0 },
+ { "eightoldstyle", 0xf738, 0 },
+ { "eightparen", 0x247b, 0 },
+ { "eightperiod", 0x248f, 0 },
+ { "eightpersian", 0x06f8, 0 },
+ { "eightroman", 0x2177, 0 },
+ { "eightsuperior", 0x2078, 0 },
+ { "eightthai", 0x0e58, 0 },
+ { "einvertedbreve", 0x0207, 0 },
+ { "eiotifiedcyrillic", 0x0465, 0 },
+ { "ekatakana", 0x30a8, 0 },
+ { "ekatakanahalfwidth", 0xff74, 0 },
+ { "ekonkargurmukhi", 0x0a74, 0 },
+ { "ekorean", 0x3154, 0 },
+ { "elcyrillic", 0x043b, 0 },
+ { "elevencircle", 0x246a, 0 },
+ { "elevenparen", 0x247e, 0 },
+ { "elevenperiod", 0x2492, 0 },
+ { "elevenroman", 0x217a, 0 },
+ { "ellipsisvertical", 0x22ee, 0 },
+ { "emacronacute", 0x1e17, 0 },
+ { "emacrongrave", 0x1e15, 0 },
+ { "emcyrillic", 0x043c, 0 },
+ { "emdashvertical", 0xfe31, 0 },
+ { "emonospace", 0xff45, 0 },
+ { "emphasismarkarmenian", 0x055b, 0 },
+ { "enbopomofo", 0x3123, 0 },
+ { "encyrillic", 0x043d, 0 },
+ { "endashvertical", 0xfe32, 0 },
+ { "endescendercyrillic", 0x04a3, 0 },
+ { "engbopomofo", 0x3125, 0 },
+ { "enghecyrillic", 0x04a5, 0 },
+ { "enhookcyrillic", 0x04c8, 0 },
+ { "enspace", 0x2002, 0 },
+ { "eokorean", 0x3153, 0 },
+ { "eopen", 0x025b, 0 },
+ { "eopenclosed", 0x029a, 0 },
+ { "eopenreversed", 0x025c, 0 },
+ { "eopenreversedclosed", 0x025e, 0 },
+ { "eopenreversedhook", 0x025d, 0 },
+ { "eparen", 0x24a0, 0 },
+ { "equalmonospace", 0xff1d, 0 },
+ { "equalsmall", 0xfe66, 0 },
+ { "equalsuperior", 0x207c, 0 },
+ { "erbopomofo", 0x3126, 0 },
+ { "ercyrillic", 0x0440, 0 },
+ { "ereversed", 0x0258, 0 },
+ { "ereversedcyrillic", 0x044d, 0 },
+ { "escyrillic", 0x0441, 0 },
+ { "esdescendercyrillic", 0x04ab, 0 },
+ { "esh", 0x0283, 0 },
+ { "eshcurl", 0x0286, 0 },
+ { "eshortdeva", 0x090e, 0 },
+ { "eshortvowelsigndeva", 0x0946, 0 },
+ { "eshreversedloop", 0x01aa, 0 },
+ { "eshsquatreversed", 0x0285, 0 },
+ { "esmallhiragana", 0x3047, 0 },
+ { "esmallkatakana", 0x30a7, 0 },
+ { "esmallkatakanahalfwidth", 0xff6a, 0 },
+ { "esuperior", 0xf6ec, 0 },
+ { "etarmenian", 0x0568, 0 },
+ { "etilde", 0x1ebd, 0 },
+ { "etildebelow", 0x1e1b, 0 },
+ { "etnahtafoukhhebrew", 0x0591, 0 },
+ { "etnahtafoukhlefthebrew", 0x0591, 0 },
+ { "etnahtahebrew", 0x0591, 0 },
+ { "etnahtalefthebrew", 0x0591, 0 },
+ { "eturned", 0x01dd, 0 },
+ { "eukorean", 0x3161, 0 },
+ { "euro", 0x20ac, 0 },
+ { "evowelsignbengali", 0x09c7, 0 },
+ { "evowelsigndeva", 0x0947, 0 },
+ { "evowelsigngujarati", 0x0ac7, 0 },
+ { "exclamarmenian", 0x055c, 0 },
+ { "exclamdownsmall", 0xf7a1, 0 },
+ { "exclammonospace", 0xff01, 0 },
+ { "exclamsmall", 0xf721, 0 },
+ { "ezh", 0x0292, 0 },
+ { "ezhcaron", 0x01ef, 0 },
+ { "ezhcurl", 0x0293, 0 },
+ { "ezhreversed", 0x01b9, 0 },
+ { "ezhtail", 0x01ba, 0 },
+ { "fadeva", 0x095e, 0 },
+ { "fagurmukhi", 0x0a5e, 0 },
+ { "fahrenheit", 0x2109, 0 },
+ { "fathaarabic", 0x064e, 0 },
+ { "fathalowarabic", 0x064e, 0 },
+ { "fathatanarabic", 0x064b, 0 },
+ { "fbopomofo", 0x3108, 0 },
+ { "fcircle", 0x24d5, 0 },
+ { "fdotaccent", 0x1e1f, 0 },
+ { "feharabic", 0x0641, 0 },
+ { "feharmenian", 0x0586, 0 },
+ { "fehfinalarabic", 0xfed2, 0 },
+ { "fehinitialarabic", 0xfed3, 0 },
+ { "fehmedialarabic", 0xfed4, 0 },
+ { "feicoptic", 0x03e5, 0 },
+ { "ff", 0xfb00, 0 },
+ { "ffi", 0xfb03, 0 },
+ { "ffl", 0xfb04, 0 },
+ { "fi", 0xfb01, 0 },
+ { "fifteencircle", 0x246e, 0 },
+ { "fifteenparen", 0x2482, 0 },
+ { "fifteenperiod", 0x2496, 0 },
+ { "finalkaf", 0x05da, 0 },
+ { "finalkafdagesh", 0xfb3a, 0 },
+ { "finalkafdageshhebrew", 0xfb3a, 0 },
+ { "finalkafhebrew", 0x05da, 0 },
+ { "finalkafqamats", 0x05da, 0 },
+ { "finalkafqamatshebrew", 0x05da, 0 },
+ { "finalkafsheva", 0x05da, 0 },
+ { "finalkafshevahebrew", 0x05da, 0 },
+ { "finalmem", 0x05dd, 0 },
+ { "finalmemhebrew", 0x05dd, 0 },
+ { "finalnun", 0x05df, 0 },
+ { "finalnunhebrew", 0x05df, 0 },
+ { "finalpe", 0x05e3, 0 },
+ { "finalpehebrew", 0x05e3, 0 },
+ { "finaltsadi", 0x05e5, 0 },
+ { "finaltsadihebrew", 0x05e5, 0 },
+ { "firsttonechinese", 0x02c9, 0 },
+ { "fisheye", 0x25c9, 0 },
+ { "fitacyrillic", 0x0473, 0 },
+ { "fivearabic", 0x0665, 0 },
+ { "fivebengali", 0x09eb, 0 },
+ { "fivecircle", 0x2464, 0 },
+ { "fivecircleinversesansserif", 0x278e, 0 },
+ { "fivedeva", 0x096b, 0 },
+ { "fivegujarati", 0x0aeb, 0 },
+ { "fivegurmukhi", 0x0a6b, 0 },
+ { "fivehackarabic", 0x0665, 0 },
+ { "fivehangzhou", 0x3025, 0 },
+ { "fiveideographicparen", 0x3224, 0 },
+ { "fiveinferior", 0x2085, 0 },
+ { "fivemonospace", 0xff15, 0 },
+ { "fiveoldstyle", 0xf735, 0 },
+ { "fiveparen", 0x2478, 0 },
+ { "fiveperiod", 0x248c, 0 },
+ { "fivepersian", 0x06f5, 0 },
+ { "fiveroman", 0x2174, 0 },
+ { "fivesuperior", 0x2075, 0 },
+ { "fivethai", 0x0e55, 0 },
+ { "fl", 0xfb02, 0 },
+ { "fmonospace", 0xff46, 0 },
+ { "fmsquare", 0x3399, 0 },
+ { "fofanthai", 0x0e1f, 0 },
+ { "fofathai", 0x0e1d, 0 },
+ { "fongmanthai", 0x0e4f, 0 },
+ { "forall", 0x2200, 0 },
+ { "fourarabic", 0x0664, 0 },
+ { "fourbengali", 0x09ea, 0 },
+ { "fourcircle", 0x2463, 0 },
+ { "fourcircleinversesansserif", 0x278d, 0 },
+ { "fourdeva", 0x096a, 0 },
+ { "fourgujarati", 0x0aea, 0 },
+ { "fourgurmukhi", 0x0a6a, 0 },
+ { "fourhackarabic", 0x0664, 0 },
+ { "fourhangzhou", 0x3024, 0 },
+ { "fourideographicparen", 0x3223, 0 },
+ { "fourinferior", 0x2084, 0 },
+ { "fourmonospace", 0xff14, 0 },
+ { "fournumeratorbengali", 0x09f7, 0 },
+ { "fouroldstyle", 0xf734, 0 },
+ { "fourparen", 0x2477, 0 },
+ { "fourperiod", 0x248b, 0 },
+ { "fourpersian", 0x06f4, 0 },
+ { "fourroman", 0x2173, 0 },
+ { "foursuperior", 0x2074, 0 },
+ { "fourteencircle", 0x246d, 0 },
+ { "fourteenparen", 0x2481, 0 },
+ { "fourteenperiod", 0x2495, 0 },
+ { "fourthai", 0x0e54, 0 },
+ { "fourthtonechinese", 0x02cb, 0 },
+ { "fparen", 0x24a1, 0 },
+ { "gabengali", 0x0997, 0 },
+ { "gacute", 0x01f5, 0 },
+ { "gadeva", 0x0917, 0 },
+ { "gafarabic", 0x06af, 0 },
+ { "gaffinalarabic", 0xfb93, 0 },
+ { "gafinitialarabic", 0xfb94, 0 },
+ { "gafmedialarabic", 0xfb95, 0 },
+ { "gagujarati", 0x0a97, 0 },
+ { "gagurmukhi", 0x0a17, 0 },
+ { "gahiragana", 0x304c, 0 },
+ { "gakatakana", 0x30ac, 0 },
+ { "gammalatinsmall", 0x0263, 0 },
+ { "gammasuperior", 0x02e0, 0 },
+ { "gangiacoptic", 0x03eb, 0 },
+ { "gbopomofo", 0x310d, 0 },
+ { "gcedilla", 0x0123, 0 },
+ { "gcircle", 0x24d6, 0 },
+ { "gdot", 0x0121, 0 },
+ { "gecyrillic", 0x0433, 0 },
+ { "gehiragana", 0x3052, 0 },
+ { "gekatakana", 0x30b2, 0 },
+ { "geometricallyequal", 0x2251, 0 },
+ { "gereshaccenthebrew", 0x059c, 0 },
+ { "gereshhebrew", 0x05f3, 0 },
+ { "gereshmuqdamhebrew", 0x059d, 0 },
+ { "gershayimaccenthebrew", 0x059e, 0 },
+ { "gershayimhebrew", 0x05f4, 0 },
+ { "getamark", 0x3013, 0 },
+ { "ghabengali", 0x0998, 0 },
+ { "ghadarmenian", 0x0572, 0 },
+ { "ghadeva", 0x0918, 0 },
+ { "ghagujarati", 0x0a98, 0 },
+ { "ghagurmukhi", 0x0a18, 0 },
+ { "ghainarabic", 0x063a, 0 },
+ { "ghainfinalarabic", 0xfece, 0 },
+ { "ghaininitialarabic", 0xfecf, 0 },
+ { "ghainmedialarabic", 0xfed0, 0 },
+ { "ghemiddlehookcyrillic", 0x0495, 0 },
+ { "ghestrokecyrillic", 0x0493, 0 },
+ { "gheupturncyrillic", 0x0491, 0 },
+ { "ghhadeva", 0x095a, 0 },
+ { "ghhagurmukhi", 0x0a5a, 0 },
+ { "ghook", 0x0260, 0 },
+ { "ghzsquare", 0x3393, 0 },
+ { "gihiragana", 0x304e, 0 },
+ { "gikatakana", 0x30ae, 0 },
+ { "gimarmenian", 0x0563, 0 },
+ { "gimel", 0x05d2, 0 },
+ { "gimeldagesh", 0xfb32, 0 },
+ { "gimeldageshhebrew", 0xfb32, 0 },
+ { "gimelhebrew", 0x05d2, 0 },
+ { "gjecyrillic", 0x0453, 0 },
+ { "glottalinvertedstroke", 0x01be, 0 },
+ { "glottalstop", 0x0294, 0 },
+ { "glottalstopinverted", 0x0296, 0 },
+ { "glottalstopmod", 0x02c0, 0 },
+ { "glottalstopreversed", 0x0295, 0 },
+ { "glottalstopreversedmod", 0x02c1, 0 },
+ { "glottalstopreversedsuperior", 0x02e4, 0 },
+ { "glottalstopstroke", 0x02a1, 0 },
+ { "glottalstopstrokereversed", 0x02a2, 0 },
+ { "gmacron", 0x1e21, 0 },
+ { "gmonospace", 0xff47, 0 },
+ { "gohiragana", 0x3054, 0 },
+ { "gokatakana", 0x30b4, 0 },
+ { "gparen", 0x24a2, 0 },
+ { "gpasquare", 0x33ac, 0 },
+ { "gravebelowcmb", 0x0316, 0 },
+ { "gravecmb", 0x0300, 0 },
+ { "gravedeva", 0x0953, 0 },
+ { "gravelowmod", 0x02ce, 0 },
+ { "gravemonospace", 0xff40, 0 },
+ { "gravetonecmb", 0x0340, 0 },
+ { "greaterequalorless", 0x22db, 0 },
+ { "greatermonospace", 0xff1e, 0 },
+ { "greaterorequivalent", 0x2273, 0 },
+ { "greaterorless", 0x2277, 0 },
+ { "greateroverequal", 0x2267, 0 },
+ { "greatersmall", 0xfe65, 0 },
+ { "gscript", 0x0261, 0 },
+ { "gstroke", 0x01e5, 0 },
+ { "guhiragana", 0x3050, 0 },
+ { "gukatakana", 0x30b0, 0 },
+ { "guramusquare", 0x3318, 0 },
+ { "gysquare", 0x33c9, 0 },
+ { "haabkhasiancyrillic", 0x04a9, 0 },
+ { "haaltonearabic", 0x06c1, 0 },
+ { "habengali", 0x09b9, 0 },
+ { "hadescendercyrillic", 0x04b3, 0 },
+ { "hadeva", 0x0939, 0 },
+ { "hagujarati", 0x0ab9, 0 },
+ { "hagurmukhi", 0x0a39, 0 },
+ { "haharabic", 0x062d, 0 },
+ { "hahfinalarabic", 0xfea2, 0 },
+ { "hahinitialarabic", 0xfea3, 0 },
+ { "hahiragana", 0x306f, 0 },
+ { "hahmedialarabic", 0xfea4, 0 },
+ { "haitusquare", 0x332a, 0 },
+ { "hakatakana", 0x30cf, 0 },
+ { "hakatakanahalfwidth", 0xff8a, 0 },
+ { "halantgurmukhi", 0x0a4d, 0 },
+ { "hamzaarabic", 0x0621, 0 },
+ { "hamzadammaarabic", 0x0621, 0 },
+ { "hamzadammatanarabic", 0x0621, 0 },
+ { "hamzafathaarabic", 0x0621, 0 },
+ { "hamzafathatanarabic", 0x0621, 0 },
+ { "hamzalowarabic", 0x0621, 0 },
+ { "hamzalowkasraarabic", 0x0621, 0 },
+ { "hamzalowkasratanarabic", 0x0621, 0 },
+ { "hamzasukunarabic", 0x0621, 0 },
+ { "hangulfiller", 0x3164, 0 },
+ { "hardsigncyrillic", 0x044a, 0 },
+ { "harpoonleftbarbup", 0x21bc, 0 },
+ { "harpoonrightbarbup", 0x21c0, 0 },
+ { "hasquare", 0x33ca, 0 },
+ { "hatafpatah", 0x05b2, 0 },
+ { "hatafpatah16", 0x05b2, 0 },
+ { "hatafpatah23", 0x05b2, 0 },
+ { "hatafpatah2f", 0x05b2, 0 },
+ { "hatafpatahhebrew", 0x05b2, 0 },
+ { "hatafpatahnarrowhebrew", 0x05b2, 0 },
+ { "hatafpatahquarterhebrew", 0x05b2, 0 },
+ { "hatafpatahwidehebrew", 0x05b2, 0 },
+ { "hatafqamats", 0x05b3, 0 },
+ { "hatafqamats1b", 0x05b3, 0 },
+ { "hatafqamats28", 0x05b3, 0 },
+ { "hatafqamats34", 0x05b3, 0 },
+ { "hatafqamatshebrew", 0x05b3, 0 },
+ { "hatafqamatsnarrowhebrew", 0x05b3, 0 },
+ { "hatafqamatsquarterhebrew", 0x05b3, 0 },
+ { "hatafqamatswidehebrew", 0x05b3, 0 },
+ { "hatafsegol", 0x05b1, 0 },
+ { "hatafsegol17", 0x05b1, 0 },
+ { "hatafsegol24", 0x05b1, 0 },
+ { "hatafsegol30", 0x05b1, 0 },
+ { "hatafsegolhebrew", 0x05b1, 0 },
+ { "hatafsegolnarrowhebrew", 0x05b1, 0 },
+ { "hatafsegolquarterhebrew", 0x05b1, 0 },
+ { "hatafsegolwidehebrew", 0x05b1, 0 },
+ { "hbopomofo", 0x310f, 0 },
+ { "hbrevebelow", 0x1e2b, 0 },
+ { "hcedilla", 0x1e29, 0 },
+ { "hcircle", 0x24d7, 0 },
+ { "hdieresis", 0x1e27, 0 },
+ { "hdotaccent", 0x1e23, 0 },
+ { "hdotbelow", 0x1e25, 0 },
+ { "he", 0x05d4, 0 },
+ { "heartsuitblack", 0x2665, 0 },
+ { "heartsuitwhite", 0x2661, 0 },
+ { "hedagesh", 0xfb34, 0 },
+ { "hedageshhebrew", 0xfb34, 0 },
+ { "hehaltonearabic", 0x06c1, 0 },
+ { "heharabic", 0x0647, 0 },
+ { "hehebrew", 0x05d4, 0 },
+ { "hehfinalaltonearabic", 0xfba7, 0 },
+ { "hehfinalalttwoarabic", 0xfeea, 0 },
+ { "hehfinalarabic", 0xfeea, 0 },
+ { "hehhamzaabovefinalarabic", 0xfba5, 0 },
+ { "hehhamzaaboveisolatedarabic", 0xfba4, 0 },
+ { "hehinitialaltonearabic", 0xfba8, 0 },
+ { "hehinitialarabic", 0xfeeb, 0 },
+ { "hehiragana", 0x3078, 0 },
+ { "hehmedialaltonearabic", 0xfba9, 0 },
+ { "hehmedialarabic", 0xfeec, 0 },
+ { "heiseierasquare", 0x337b, 0 },
+ { "hekatakana", 0x30d8, 0 },
+ { "hekatakanahalfwidth", 0xff8d, 0 },
+ { "hekutaarusquare", 0x3336, 0 },
+ { "henghook", 0x0267, 0 },
+ { "herutusquare", 0x3339, 0 },
+ { "het", 0x05d7, 0 },
+ { "hethebrew", 0x05d7, 0 },
+ { "hhook", 0x0266, 0 },
+ { "hhooksuperior", 0x02b1, 0 },
+ { "hieuhacirclekorean", 0x327b, 0 },
+ { "hieuhaparenkorean", 0x321b, 0 },
+ { "hieuhcirclekorean", 0x326d, 0 },
+ { "hieuhkorean", 0x314e, 0 },
+ { "hieuhparenkorean", 0x320d, 0 },
+ { "hihiragana", 0x3072, 0 },
+ { "hikatakana", 0x30d2, 0 },
+ { "hikatakanahalfwidth", 0xff8b, 0 },
+ { "hiriq", 0x05b4, 0 },
+ { "hiriq14", 0x05b4, 0 },
+ { "hiriq21", 0x05b4, 0 },
+ { "hiriq2d", 0x05b4, 0 },
+ { "hiriqhebrew", 0x05b4, 0 },
+ { "hiriqnarrowhebrew", 0x05b4, 0 },
+ { "hiriqquarterhebrew", 0x05b4, 0 },
+ { "hiriqwidehebrew", 0x05b4, 0 },
+ { "hlinebelow", 0x1e96, 0 },
+ { "hmonospace", 0xff48, 0 },
+ { "hoarmenian", 0x0570, 0 },
+ { "hohipthai", 0x0e2b, 0 },
+ { "hohiragana", 0x307b, 0 },
+ { "hokatakana", 0x30db, 0 },
+ { "hokatakanahalfwidth", 0xff8e, 0 },
+ { "holam", 0x05b9, 0 },
+ { "holam19", 0x05b9, 0 },
+ { "holam26", 0x05b9, 0 },
+ { "holam32", 0x05b9, 0 },
+ { "holamhebrew", 0x05b9, 0 },
+ { "holamnarrowhebrew", 0x05b9, 0 },
+ { "holamquarterhebrew", 0x05b9, 0 },
+ { "holamwidehebrew", 0x05b9, 0 },
+ { "honokhukthai", 0x0e2e, 0 },
+ { "hookcmb", 0x0309, 0 },
+ { "hookpalatalizedbelowcmb", 0x0321, 0 },
+ { "hookretroflexbelowcmb", 0x0322, 0 },
+ { "hoonsquare", 0x3342, 0 },
+ { "horicoptic", 0x03e9, 0 },
+ { "horizontalbar", 0x2015, 0 },
+ { "horncmb", 0x031b, 0 },
+ { "hotsprings", 0x2668, 0 },
+ { "hparen", 0x24a3, 0 },
+ { "hsuperior", 0x02b0, 0 },
+ { "hturned", 0x0265, 0 },
+ { "huhiragana", 0x3075, 0 },
+ { "huiitosquare", 0x3333, 0 },
+ { "hukatakana", 0x30d5, 0 },
+ { "hukatakanahalfwidth", 0xff8c, 0 },
+ { "hungarumlautcmb", 0x030b, 0 },
+ { "hv", 0x0195, 0 },
+ { "hypheninferior", 0xf6e5, 0 },
+ { "hyphenmonospace", 0xff0d, 0 },
+ { "hyphensmall", 0xfe63, 0 },
+ { "hyphensuperior", 0xf6e6, 0 },
+ { "hyphentwo", 0x2010, 0 },
+ { "iacyrillic", 0x044f, 0 },
+ { "ibengali", 0x0987, 0 },
+ { "ibopomofo", 0x3127, 0 },
+ { "icaron", 0x01d0, 0 },
+ { "icircle", 0x24d8, 0 },
+ { "icyrillic", 0x0456, 0 },
+ { "idblgrave", 0x0209, 0 },
+ { "ideographearthcircle", 0x328f, 0 },
+ { "ideographfirecircle", 0x328b, 0 },
+ { "ideographicallianceparen", 0x323f, 0 },
+ { "ideographiccallparen", 0x323a, 0 },
+ { "ideographiccentrecircle", 0x32a5, 0 },
+ { "ideographicclose", 0x3006, 0 },
+ { "ideographiccomma", 0x3001, 0 },
+ { "ideographiccommaleft", 0xff64, 0 },
+ { "ideographiccongratulationparen", 0x3237, 0 },
+ { "ideographiccorrectcircle", 0x32a3, 0 },
+ { "ideographicearthparen", 0x322f, 0 },
+ { "ideographicenterpriseparen", 0x323d, 0 },
+ { "ideographicexcellentcircle", 0x329d, 0 },
+ { "ideographicfestivalparen", 0x3240, 0 },
+ { "ideographicfinancialcircle", 0x3296, 0 },
+ { "ideographicfinancialparen", 0x3236, 0 },
+ { "ideographicfireparen", 0x322b, 0 },
+ { "ideographichaveparen", 0x3232, 0 },
+ { "ideographichighcircle", 0x32a4, 0 },
+ { "ideographiciterationmark", 0x3005, 0 },
+ { "ideographiclaborcircle", 0x3298, 0 },
+ { "ideographiclaborparen", 0x3238, 0 },
+ { "ideographicleftcircle", 0x32a7, 0 },
+ { "ideographiclowcircle", 0x32a6, 0 },
+ { "ideographicmedicinecircle", 0x32a9, 0 },
+ { "ideographicmetalparen", 0x322e, 0 },
+ { "ideographicmoonparen", 0x322a, 0 },
+ { "ideographicnameparen", 0x3234, 0 },
+ { "ideographicperiod", 0x3002, 0 },
+ { "ideographicprintcircle", 0x329e, 0 },
+ { "ideographicreachparen", 0x3243, 0 },
+ { "ideographicrepresentparen", 0x3239, 0 },
+ { "ideographicresourceparen", 0x323e, 0 },
+ { "ideographicrightcircle", 0x32a8, 0 },
+ { "ideographicsecretcircle", 0x3299, 0 },
+ { "ideographicselfparen", 0x3242, 0 },
+ { "ideographicsocietyparen", 0x3233, 0 },
+ { "ideographicspace", 0x3000, 0 },
+ { "ideographicspecialparen", 0x3235, 0 },
+ { "ideographicstockparen", 0x3231, 0 },
+ { "ideographicstudyparen", 0x323b, 0 },
+ { "ideographicsunparen", 0x3230, 0 },
+ { "ideographicsuperviseparen", 0x323c, 0 },
+ { "ideographicwaterparen", 0x322c, 0 },
+ { "ideographicwoodparen", 0x322d, 0 },
+ { "ideographiczero", 0x3007, 0 },
+ { "ideographmetalcircle", 0x328e, 0 },
+ { "ideographmooncircle", 0x328a, 0 },
+ { "ideographnamecircle", 0x3294, 0 },
+ { "ideographsuncircle", 0x3290, 0 },
+ { "ideographwatercircle", 0x328c, 0 },
+ { "ideographwoodcircle", 0x328d, 0 },
+ { "ideva", 0x0907, 0 },
+ { "idieresisacute", 0x1e2f, 0 },
+ { "idieresiscyrillic", 0x04e5, 0 },
+ { "idotbelow", 0x1ecb, 0 },
+ { "iebrevecyrillic", 0x04d7, 0 },
+ { "iecyrillic", 0x0435, 0 },
+ { "ieungacirclekorean", 0x3275, 0 },
+ { "ieungaparenkorean", 0x3215, 0 },
+ { "ieungcirclekorean", 0x3267, 0 },
+ { "ieungkorean", 0x3147, 0 },
+ { "ieungparenkorean", 0x3207, 0 },
+ { "igujarati", 0x0a87, 0 },
+ { "igurmukhi", 0x0a07, 0 },
+ { "ihiragana", 0x3044, 0 },
+ { "ihookabove", 0x1ec9, 0 },
+ { "iibengali", 0x0988, 0 },
+ { "iicyrillic", 0x0438, 0 },
+ { "iideva", 0x0908, 0 },
+ { "iigujarati", 0x0a88, 0 },
+ { "iigurmukhi", 0x0a08, 0 },
+ { "iimatragurmukhi", 0x0a40, 0 },
+ { "iinvertedbreve", 0x020b, 0 },
+ { "iishortcyrillic", 0x0439, 0 },
+ { "iivowelsignbengali", 0x09c0, 0 },
+ { "iivowelsigndeva", 0x0940, 0 },
+ { "iivowelsigngujarati", 0x0ac0, 0 },
+ { "ikatakana", 0x30a4, 0 },
+ { "ikatakanahalfwidth", 0xff72, 0 },
+ { "ikorean", 0x3163, 0 },
+ { "ilde", 0x02dc, 0 },
+ { "iluyhebrew", 0x05ac, 0 },
+ { "imacroncyrillic", 0x04e3, 0 },
+ { "imageorapproximatelyequal", 0x2253, 0 },
+ { "imatragurmukhi", 0x0a3f, 0 },
+ { "imonospace", 0xff49, 0 },
+ { "increment", 0x2206, 0 },
+ { "iniarmenian", 0x056b, 0 },
+ { "integralbottom", 0x2321, 0 },
+ { "integralex", 0xf8f5, 0 },
+ { "integraltop", 0x2320, 0 },
+ { "intisquare", 0x3305, 0 },
+ { "iocyrillic", 0x0451, 0 },
+ { "iotalatin", 0x0269, 0 },
+ { "iparen", 0x24a4, 0 },
+ { "irigurmukhi", 0x0a72, 0 },
+ { "ismallhiragana", 0x3043, 0 },
+ { "ismallkatakana", 0x30a3, 0 },
+ { "ismallkatakanahalfwidth", 0xff68, 0 },
+ { "issharbengali", 0x09fa, 0 },
+ { "istroke", 0x0268, 0 },
+ { "isuperior", 0xf6ed, 0 },
+ { "iterationhiragana", 0x309d, 0 },
+ { "iterationkatakana", 0x30fd, 0 },
+ { "itildebelow", 0x1e2d, 0 },
+ { "iubopomofo", 0x3129, 0 },
+ { "iucyrillic", 0x044e, 0 },
+ { "ivowelsignbengali", 0x09bf, 0 },
+ { "ivowelsigndeva", 0x093f, 0 },
+ { "ivowelsigngujarati", 0x0abf, 0 },
+ { "izhitsacyrillic", 0x0475, 0 },
+ { "izhitsadblgravecyrillic", 0x0477, 0 },
+ { "jaarmenian", 0x0571, 0 },
+ { "jabengali", 0x099c, 0 },
+ { "jadeva", 0x091c, 0 },
+ { "jagujarati", 0x0a9c, 0 },
+ { "jagurmukhi", 0x0a1c, 0 },
+ { "jbopomofo", 0x3110, 0 },
+ { "jcaron", 0x01f0, 0 },
+ { "jcircle", 0x24d9, 0 },
+ { "jcrossedtail", 0x029d, 0 },
+ { "jdotlessstroke", 0x025f, 0 },
+ { "jecyrillic", 0x0458, 0 },
+ { "jeemarabic", 0x062c, 0 },
+ { "jeemfinalarabic", 0xfe9e, 0 },
+ { "jeeminitialarabic", 0xfe9f, 0 },
+ { "jeemmedialarabic", 0xfea0, 0 },
+ { "jeharabic", 0x0698, 0 },
+ { "jehfinalarabic", 0xfb8b, 0 },
+ { "jhabengali", 0x099d, 0 },
+ { "jhadeva", 0x091d, 0 },
+ { "jhagujarati", 0x0a9d, 0 },
+ { "jhagurmukhi", 0x0a1d, 0 },
+ { "jheharmenian", 0x057b, 0 },
+ { "jis", 0x3004, 0 },
+ { "jmonospace", 0xff4a, 0 },
+ { "jparen", 0x24a5, 0 },
+ { "jsuperior", 0x02b2, 0 },
+ { "kabashkircyrillic", 0x04a1, 0 },
+ { "kabengali", 0x0995, 0 },
+ { "kacute", 0x1e31, 0 },
+ { "kacyrillic", 0x043a, 0 },
+ { "kadescendercyrillic", 0x049b, 0 },
+ { "kadeva", 0x0915, 0 },
+ { "kaf", 0x05db, 0 },
+ { "kafarabic", 0x0643, 0 },
+ { "kafdagesh", 0xfb3b, 0 },
+ { "kafdageshhebrew", 0xfb3b, 0 },
+ { "kaffinalarabic", 0xfeda, 0 },
+ { "kafhebrew", 0x05db, 0 },
+ { "kafinitialarabic", 0xfedb, 0 },
+ { "kafmedialarabic", 0xfedc, 0 },
+ { "kafrafehebrew", 0xfb4d, 0 },
+ { "kagujarati", 0x0a95, 0 },
+ { "kagurmukhi", 0x0a15, 0 },
+ { "kahiragana", 0x304b, 0 },
+ { "kahookcyrillic", 0x04c4, 0 },
+ { "kakatakana", 0x30ab, 0 },
+ { "kakatakanahalfwidth", 0xff76, 0 },
+ { "kappasymbolgreek", 0x03f0, 0 },
+ { "kapyeounmieumkorean", 0x3171, 0 },
+ { "kapyeounphieuphkorean", 0x3184, 0 },
+ { "kapyeounpieupkorean", 0x3178, 0 },
+ { "kapyeounssangpieupkorean", 0x3179, 0 },
+ { "karoriisquare", 0x330d, 0 },
+ { "kashidaautoarabic", 0x0640, 0 },
+ { "kashidaautonosidebearingarabic", 0x0640, 0 },
+ { "kasmallkatakana", 0x30f5, 0 },
+ { "kasquare", 0x3384, 0 },
+ { "kasraarabic", 0x0650, 0 },
+ { "kasratanarabic", 0x064d, 0 },
+ { "kastrokecyrillic", 0x049f, 0 },
+ { "katahiraprolongmarkhalfwidth", 0xff70, 0 },
+ { "kaverticalstrokecyrillic", 0x049d, 0 },
+ { "kbopomofo", 0x310e, 0 },
+ { "kcalsquare", 0x3389, 0 },
+ { "kcaron", 0x01e9, 0 },
+ { "kcedilla", 0x0137, 0 },
+ { "kcircle", 0x24da, 0 },
+ { "kdotbelow", 0x1e33, 0 },
+ { "keharmenian", 0x0584, 0 },
+ { "kehiragana", 0x3051, 0 },
+ { "kekatakana", 0x30b1, 0 },
+ { "kekatakanahalfwidth", 0xff79, 0 },
+ { "kenarmenian", 0x056f, 0 },
+ { "kesmallkatakana", 0x30f6, 0 },
+ { "khabengali", 0x0996, 0 },
+ { "khacyrillic", 0x0445, 0 },
+ { "khadeva", 0x0916, 0 },
+ { "khagujarati", 0x0a96, 0 },
+ { "khagurmukhi", 0x0a16, 0 },
+ { "khaharabic", 0x062e, 0 },
+ { "khahfinalarabic", 0xfea6, 0 },
+ { "khahinitialarabic", 0xfea7, 0 },
+ { "khahmedialarabic", 0xfea8, 0 },
+ { "kheicoptic", 0x03e7, 0 },
+ { "khhadeva", 0x0959, 0 },
+ { "khhagurmukhi", 0x0a59, 0 },
+ { "khieukhacirclekorean", 0x3278, 0 },
+ { "khieukhaparenkorean", 0x3218, 0 },
+ { "khieukhcirclekorean", 0x326a, 0 },
+ { "khieukhkorean", 0x314b, 0 },
+ { "khieukhparenkorean", 0x320a, 0 },
+ { "khokhaithai", 0x0e02, 0 },
+ { "khokhonthai", 0x0e05, 0 },
+ { "khokhuatthai", 0x0e03, 0 },
+ { "khokhwaithai", 0x0e04, 0 },
+ { "khomutthai", 0x0e5b, 0 },
+ { "khook", 0x0199, 0 },
+ { "khorakhangthai", 0x0e06, 0 },
+ { "khzsquare", 0x3391, 0 },
+ { "kihiragana", 0x304d, 0 },
+ { "kikatakana", 0x30ad, 0 },
+ { "kikatakanahalfwidth", 0xff77, 0 },
+ { "kiroguramusquare", 0x3315, 0 },
+ { "kiromeetorusquare", 0x3316, 0 },
+ { "kirosquare", 0x3314, 0 },
+ { "kiyeokacirclekorean", 0x326e, 0 },
+ { "kiyeokaparenkorean", 0x320e, 0 },
+ { "kiyeokcirclekorean", 0x3260, 0 },
+ { "kiyeokkorean", 0x3131, 0 },
+ { "kiyeokparenkorean", 0x3200, 0 },
+ { "kiyeoksioskorean", 0x3133, 0 },
+ { "kjecyrillic", 0x045c, 0 },
+ { "klinebelow", 0x1e35, 0 },
+ { "klsquare", 0x3398, 0 },
+ { "kmcubedsquare", 0x33a6, 0 },
+ { "kmonospace", 0xff4b, 0 },
+ { "kmsquaredsquare", 0x33a2, 0 },
+ { "kohiragana", 0x3053, 0 },
+ { "kohmsquare", 0x33c0, 0 },
+ { "kokaithai", 0x0e01, 0 },
+ { "kokatakana", 0x30b3, 0 },
+ { "kokatakanahalfwidth", 0xff7a, 0 },
+ { "kooposquare", 0x331e, 0 },
+ { "koppacyrillic", 0x0481, 0 },
+ { "koreanstandardsymbol", 0x327f, 0 },
+ { "koroniscmb", 0x0343, 0 },
+ { "kparen", 0x24a6, 0 },
+ { "kpasquare", 0x33aa, 0 },
+ { "ksicyrillic", 0x046f, 0 },
+ { "ktsquare", 0x33cf, 0 },
+ { "kturned", 0x029e, 0 },
+ { "kuhiragana", 0x304f, 0 },
+ { "kukatakana", 0x30af, 0 },
+ { "kukatakanahalfwidth", 0xff78, 0 },
+ { "kvsquare", 0x33b8, 0 },
+ { "kwsquare", 0x33be, 0 },
+ { "labengali", 0x09b2, 0 },
+ { "ladeva", 0x0932, 0 },
+ { "lagujarati", 0x0ab2, 0 },
+ { "lagurmukhi", 0x0a32, 0 },
+ { "lakkhangyaothai", 0x0e45, 0 },
+ { "lamaleffinalarabic", 0xfefc, 0 },
+ { "lamalefhamzaabovefinalarabic", 0xfef8, 0 },
+ { "lamalefhamzaaboveisolatedarabic", 0xfef7, 0 },
+ { "lamalefhamzabelowfinalarabic", 0xfefa, 0 },
+ { "lamalefhamzabelowisolatedarabic", 0xfef9, 0 },
+ { "lamalefisolatedarabic", 0xfefb, 0 },
+ { "lamalefmaddaabovefinalarabic", 0xfef6, 0 },
+ { "lamalefmaddaaboveisolatedarabic", 0xfef5, 0 },
+ { "lamarabic", 0x0644, 0 },
+ { "lambdastroke", 0x019b, 0 },
+ { "lamed", 0x05dc, 0 },
+ { "lameddagesh", 0xfb3c, 0 },
+ { "lameddageshhebrew", 0xfb3c, 0 },
+ { "lamedhebrew", 0x05dc, 0 },
+ { "lamedholam", 0x05dc, 0 },
+ { "lamedholamdagesh", 0x05dc, 0 },
+ { "lamedholamdageshhebrew", 0x05dc, 0 },
+ { "lamedholamhebrew", 0x05dc, 0 },
+ { "lamfinalarabic", 0xfede, 0 },
+ { "lamhahinitialarabic", 0xfcca, 0 },
+ { "laminitialarabic", 0xfedf, 0 },
+ { "lamjeeminitialarabic", 0xfcc9, 0 },
+ { "lamkhahinitialarabic", 0xfccb, 0 },
+ { "lamlamhehisolatedarabic", 0xfdf2, 0 },
+ { "lammedialarabic", 0xfee0, 0 },
+ { "lammeemhahinitialarabic", 0xfd88, 0 },
+ { "lammeeminitialarabic", 0xfccc, 0 },
+ { "lammeemjeeminitialarabic", 0xfedf, 0 },
+ { "lammeemkhahinitialarabic", 0xfedf, 0 },
+ { "largecircle", 0x25ef, 0 },
+ { "lbar", 0x019a, 0 },
+ { "lbelt", 0x026c, 0 },
+ { "lbopomofo", 0x310c, 0 },
+ { "lcedilla", 0x013c, 0 },
+ { "lcircle", 0x24db, 0 },
+ { "lcircumflexbelow", 0x1e3d, 0 },
+ { "ldotaccent", 0x0140, 0 },
+ { "ldotbelow", 0x1e37, 0 },
+ { "ldotbelowmacron", 0x1e39, 0 },
+ { "leftangleabovecmb", 0x031a, 0 },
+ { "lefttackbelowcmb", 0x0318, 0 },
+ { "lessequalorgreater", 0x22da, 0 },
+ { "lessmonospace", 0xff1c, 0 },
+ { "lessorequivalent", 0x2272, 0 },
+ { "lessorgreater", 0x2276, 0 },
+ { "lessoverequal", 0x2266, 0 },
+ { "lesssmall", 0xfe64, 0 },
+ { "lezh", 0x026e, 0 },
+ { "lhookretroflex", 0x026d, 0 },
+ { "liwnarmenian", 0x056c, 0 },
+ { "lj", 0x01c9, 0 },
+ { "ljecyrillic", 0x0459, 0 },
+ { "ll", 0xf6c0, 0 },
+ { "lladeva", 0x0933, 0 },
+ { "llagujarati", 0x0ab3, 0 },
+ { "llinebelow", 0x1e3b, 0 },
+ { "llladeva", 0x0934, 0 },
+ { "llvocalicbengali", 0x09e1, 0 },
+ { "llvocalicdeva", 0x0961, 0 },
+ { "llvocalicvowelsignbengali", 0x09e3, 0 },
+ { "llvocalicvowelsigndeva", 0x0963, 0 },
+ { "lmiddletilde", 0x026b, 0 },
+ { "lmonospace", 0xff4c, 0 },
+ { "lmsquare", 0x33d0, 0 },
+ { "lochulathai", 0x0e2c, 0 },
+ { "logicalnotreversed", 0x2310, 0 },
+ { "lolingthai", 0x0e25, 0 },
+ { "lowlinecenterline", 0xfe4e, 0 },
+ { "lowlinecmb", 0x0332, 0 },
+ { "lowlinedashed", 0xfe4d, 0 },
+ { "lparen", 0x24a7, 0 },
+ { "lsquare", 0x2113, 0 },
+ { "lsuperior", 0xf6ee, 0 },
+ { "luthai", 0x0e26, 0 },
+ { "lvocalicbengali", 0x098c, 0 },
+ { "lvocalicdeva", 0x090c, 0 },
+ { "lvocalicvowelsignbengali", 0x09e2, 0 },
+ { "lvocalicvowelsigndeva", 0x0962, 0 },
+ { "lxsquare", 0x33d3, 0 },
+ { "mabengali", 0x09ae, 0 },
+ { "macronbelowcmb", 0x0331, 0 },
+ { "macroncmb", 0x0304, 0 },
+ { "macronlowmod", 0x02cd, 0 },
+ { "macronmonospace", 0xffe3, 0 },
+ { "macute", 0x1e3f, 0 },
+ { "madeva", 0x092e, 0 },
+ { "magujarati", 0x0aae, 0 },
+ { "magurmukhi", 0x0a2e, 0 },
+ { "mahapakhhebrew", 0x05a4, 0 },
+ { "mahapakhlefthebrew", 0x05a4, 0 },
+ { "mahiragana", 0x307e, 0 },
+ { "maichattawalowleftthai", 0xf895, 0 },
+ { "maichattawalowrightthai", 0xf894, 0 },
+ { "maichattawathai", 0x0e4b, 0 },
+ { "maichattawaupperleftthai", 0xf893, 0 },
+ { "maieklowleftthai", 0xf88c, 0 },
+ { "maieklowrightthai", 0xf88b, 0 },
+ { "maiekthai", 0x0e48, 0 },
+ { "maiekupperleftthai", 0xf88a, 0 },
+ { "maihanakatleftthai", 0xf884, 0 },
+ { "maihanakatthai", 0x0e31, 0 },
+ { "maitaikhuleftthai", 0xf889, 0 },
+ { "maitaikhuthai", 0x0e47, 0 },
+ { "maitholowleftthai", 0xf88f, 0 },
+ { "maitholowrightthai", 0xf88e, 0 },
+ { "maithothai", 0x0e49, 0 },
+ { "maithoupperleftthai", 0xf88d, 0 },
+ { "maitrilowleftthai", 0xf892, 0 },
+ { "maitrilowrightthai", 0xf891, 0 },
+ { "maitrithai", 0x0e4a, 0 },
+ { "maitriupperleftthai", 0xf890, 0 },
+ { "maiyamokthai", 0x0e46, 0 },
+ { "makatakana", 0x30de, 0 },
+ { "makatakanahalfwidth", 0xff8f, 0 },
+ { "mansyonsquare", 0x3347, 0 },
+ { "maqafhebrew", 0x05be, 0 },
+ { "mars", 0x2642, 0 },
+ { "masoracirclehebrew", 0x05af, 0 },
+ { "masquare", 0x3383, 0 },
+ { "mbopomofo", 0x3107, 0 },
+ { "mbsquare", 0x33d4, 0 },
+ { "mcircle", 0x24dc, 0 },
+ { "mcubedsquare", 0x33a5, 0 },
+ { "mdotaccent", 0x1e41, 0 },
+ { "mdotbelow", 0x1e43, 0 },
+ { "meemarabic", 0x0645, 0 },
+ { "meemfinalarabic", 0xfee2, 0 },
+ { "meeminitialarabic", 0xfee3, 0 },
+ { "meemmedialarabic", 0xfee4, 0 },
+ { "meemmeeminitialarabic", 0xfcd1, 0 },
+ { "meemmeemisolatedarabic", 0xfc48, 0 },
+ { "meetorusquare", 0x334d, 0 },
+ { "mehiragana", 0x3081, 0 },
+ { "meizierasquare", 0x337e, 0 },
+ { "mekatakana", 0x30e1, 0 },
+ { "mekatakanahalfwidth", 0xff92, 0 },
+ { "mem", 0x05de, 0 },
+ { "memdagesh", 0xfb3e, 0 },
+ { "memdageshhebrew", 0xfb3e, 0 },
+ { "memhebrew", 0x05de, 0 },
+ { "menarmenian", 0x0574, 0 },
+ { "merkhahebrew", 0x05a5, 0 },
+ { "merkhakefulahebrew", 0x05a6, 0 },
+ { "merkhakefulalefthebrew", 0x05a6, 0 },
+ { "merkhalefthebrew", 0x05a5, 0 },
+ { "mhook", 0x0271, 0 },
+ { "mhzsquare", 0x3392, 0 },
+ { "middledotkatakanahalfwidth", 0xff65, 0 },
+ { "middot", 0x00b7, 0 },
+ { "mieumacirclekorean", 0x3272, 0 },
+ { "mieumaparenkorean", 0x3212, 0 },
+ { "mieumcirclekorean", 0x3264, 0 },
+ { "mieumkorean", 0x3141, 0 },
+ { "mieumpansioskorean", 0x3170, 0 },
+ { "mieumparenkorean", 0x3204, 0 },
+ { "mieumpieupkorean", 0x316e, 0 },
+ { "mieumsioskorean", 0x316f, 0 },
+ { "mihiragana", 0x307f, 0 },
+ { "mikatakana", 0x30df, 0 },
+ { "mikatakanahalfwidth", 0xff90, 0 },
+ { "minusbelowcmb", 0x0320, 0 },
+ { "minuscircle", 0x2296, 0 },
+ { "minusmod", 0x02d7, 0 },
+ { "minusplus", 0x2213, 0 },
+ { "miribaarusquare", 0x334a, 0 },
+ { "mirisquare", 0x3349, 0 },
+ { "mlonglegturned", 0x0270, 0 },
+ { "mlsquare", 0x3396, 0 },
+ { "mmcubedsquare", 0x33a3, 0 },
+ { "mmonospace", 0xff4d, 0 },
+ { "mmsquaredsquare", 0x339f, 0 },
+ { "mohiragana", 0x3082, 0 },
+ { "mohmsquare", 0x33c1, 0 },
+ { "mokatakana", 0x30e2, 0 },
+ { "mokatakanahalfwidth", 0xff93, 0 },
+ { "molsquare", 0x33d6, 0 },
+ { "momathai", 0x0e21, 0 },
+ { "moverssquare", 0x33a7, 0 },
+ { "moverssquaredsquare", 0x33a8, 0 },
+ { "mparen", 0x24a8, 0 },
+ { "mpasquare", 0x33ab, 0 },
+ { "mssquare", 0x33b3, 0 },
+ { "msuperior", 0xf6ef, 0 },
+ { "mturned", 0x026f, 0 },
+ { "mu1", 0x00b5, 0 },
+ { "muasquare", 0x3382, 0 },
+ { "muchgreater", 0x226b, 0 },
+ { "muchless", 0x226a, 0 },
+ { "mufsquare", 0x338c, 0 },
+ { "mugreek", 0x03bc, 0 },
+ { "mugsquare", 0x338d, 0 },
+ { "muhiragana", 0x3080, 0 },
+ { "mukatakana", 0x30e0, 0 },
+ { "mukatakanahalfwidth", 0xff91, 0 },
+ { "mulsquare", 0x3395, 0 },
+ { "mumsquare", 0x339b, 0 },
+ { "munahhebrew", 0x05a3, 0 },
+ { "munahlefthebrew", 0x05a3, 0 },
+ { "musicflatsign", 0x266d, 0 },
+ { "musicsharpsign", 0x266f, 0 },
+ { "mussquare", 0x33b2, 0 },
+ { "muvsquare", 0x33b6, 0 },
+ { "muwsquare", 0x33bc, 0 },
+ { "mvmegasquare", 0x33b9, 0 },
+ { "mvsquare", 0x33b7, 0 },
+ { "mwmegasquare", 0x33bf, 0 },
+ { "mwsquare", 0x33bd, 0 },
+ { "nabengali", 0x09a8, 0 },
+ { "nabla", 0x2207, 0 },
+ { "nadeva", 0x0928, 0 },
+ { "nagujarati", 0x0aa8, 0 },
+ { "nagurmukhi", 0x0a28, 0 },
+ { "nahiragana", 0x306a, 0 },
+ { "nakatakana", 0x30ca, 0 },
+ { "nakatakanahalfwidth", 0xff85, 0 },
+ { "nasquare", 0x3381, 0 },
+ { "nbopomofo", 0x310b, 0 },
+ { "nbspace", 0x00a0, 0 },
+ { "ncedilla", 0x0146, 0 },
+ { "ncircle", 0x24dd, 0 },
+ { "ncircumflexbelow", 0x1e4b, 0 },
+ { "ndotaccent", 0x1e45, 0 },
+ { "ndotbelow", 0x1e47, 0 },
+ { "nehiragana", 0x306d, 0 },
+ { "nekatakana", 0x30cd, 0 },
+ { "nekatakanahalfwidth", 0xff88, 0 },
+ { "newsheqelsign", 0x20aa, 0 },
+ { "nfsquare", 0x338b, 0 },
+ { "ngabengali", 0x0999, 0 },
+ { "ngadeva", 0x0919, 0 },
+ { "ngagujarati", 0x0a99, 0 },
+ { "ngagurmukhi", 0x0a19, 0 },
+ { "ngonguthai", 0x0e07, 0 },
+ { "nhiragana", 0x3093, 0 },
+ { "nhookleft", 0x0272, 0 },
+ { "nhookretroflex", 0x0273, 0 },
+ { "nieunacirclekorean", 0x326f, 0 },
+ { "nieunaparenkorean", 0x320f, 0 },
+ { "nieuncieuckorean", 0x3135, 0 },
+ { "nieuncirclekorean", 0x3261, 0 },
+ { "nieunhieuhkorean", 0x3136, 0 },
+ { "nieunkorean", 0x3134, 0 },
+ { "nieunpansioskorean", 0x3168, 0 },
+ { "nieunparenkorean", 0x3201, 0 },
+ { "nieunsioskorean", 0x3167, 0 },
+ { "nieuntikeutkorean", 0x3166, 0 },
+ { "nihiragana", 0x306b, 0 },
+ { "nikatakana", 0x30cb, 0 },
+ { "nikatakanahalfwidth", 0xff86, 0 },
+ { "nikhahitleftthai", 0xf899, 0 },
+ { "nikhahitthai", 0x0e4d, 0 },
+ { "ninearabic", 0x0669, 0 },
+ { "ninebengali", 0x09ef, 0 },
+ { "ninecircle", 0x2468, 0 },
+ { "ninecircleinversesansserif", 0x2792, 0 },
+ { "ninedeva", 0x096f, 0 },
+ { "ninegujarati", 0x0aef, 0 },
+ { "ninegurmukhi", 0x0a6f, 0 },
+ { "ninehackarabic", 0x0669, 0 },
+ { "ninehangzhou", 0x3029, 0 },
+ { "nineideographicparen", 0x3228, 0 },
+ { "nineinferior", 0x2089, 0 },
+ { "ninemonospace", 0xff19, 0 },
+ { "nineoldstyle", 0xf739, 0 },
+ { "nineparen", 0x247c, 0 },
+ { "nineperiod", 0x2490, 0 },
+ { "ninepersian", 0x06f9, 0 },
+ { "nineroman", 0x2178, 0 },
+ { "ninesuperior", 0x2079, 0 },
+ { "nineteencircle", 0x2472, 0 },
+ { "nineteenparen", 0x2486, 0 },
+ { "nineteenperiod", 0x249a, 0 },
+ { "ninethai", 0x0e59, 0 },
+ { "nj", 0x01cc, 0 },
+ { "njecyrillic", 0x045a, 0 },
+ { "nkatakana", 0x30f3, 0 },
+ { "nkatakanahalfwidth", 0xff9d, 0 },
+ { "nlegrightlong", 0x019e, 0 },
+ { "nlinebelow", 0x1e49, 0 },
+ { "nmonospace", 0xff4e, 0 },
+ { "nmsquare", 0x339a, 0 },
+ { "nnabengali", 0x09a3, 0 },
+ { "nnadeva", 0x0923, 0 },
+ { "nnagujarati", 0x0aa3, 0 },
+ { "nnagurmukhi", 0x0a23, 0 },
+ { "nnnadeva", 0x0929, 0 },
+ { "nohiragana", 0x306e, 0 },
+ { "nokatakana", 0x30ce, 0 },
+ { "nokatakanahalfwidth", 0xff89, 0 },
+ { "nonbreakingspace", 0x00a0, 0 },
+ { "nonenthai", 0x0e13, 0 },
+ { "nonuthai", 0x0e19, 0 },
+ { "noonarabic", 0x0646, 0 },
+ { "noonfinalarabic", 0xfee6, 0 },
+ { "noonghunnaarabic", 0x06ba, 0 },
+ { "noonghunnafinalarabic", 0xfb9f, 0 },
+ { "noonhehinitialarabic", 0xfee7, 0 },
+ { "nooninitialarabic", 0xfee7, 0 },
+ { "noonjeeminitialarabic", 0xfcd2, 0 },
+ { "noonjeemisolatedarabic", 0xfc4b, 0 },
+ { "noonmedialarabic", 0xfee8, 0 },
+ { "noonmeeminitialarabic", 0xfcd5, 0 },
+ { "noonmeemisolatedarabic", 0xfc4e, 0 },
+ { "noonnoonfinalarabic", 0xfc8d, 0 },
+ { "notcontains", 0x220c, 0 },
+ { "notelementof", 0x2209, 0 },
+ { "notgreater", 0x226f, 0 },
+ { "notgreaternorequal", 0x2271, 0 },
+ { "notgreaternorless", 0x2279, 0 },
+ { "notidentical", 0x2262, 0 },
+ { "notless", 0x226e, 0 },
+ { "notlessnorequal", 0x2270, 0 },
+ { "notparallel", 0x2226, 0 },
+ { "notprecedes", 0x2280, 0 },
+ { "notsucceeds", 0x2281, 0 },
+ { "notsuperset", 0x2285, 0 },
+ { "nowarmenian", 0x0576, 0 },
+ { "nparen", 0x24a9, 0 },
+ { "nssquare", 0x33b1, 0 },
+ { "nsuperior", 0x207f, 0 },
+ { "nuhiragana", 0x306c, 0 },
+ { "nukatakana", 0x30cc, 0 },
+ { "nukatakanahalfwidth", 0xff87, 0 },
+ { "nuktabengali", 0x09bc, 0 },
+ { "nuktadeva", 0x093c, 0 },
+ { "nuktagujarati", 0x0abc, 0 },
+ { "nuktagurmukhi", 0x0a3c, 0 },
+ { "numbersignmonospace", 0xff03, 0 },
+ { "numbersignsmall", 0xfe5f, 0 },
+ { "numeralsigngreek", 0x0374, 0 },
+ { "numeralsignlowergreek", 0x0375, 0 },
+ { "numero", 0x2116, 0 },
+ { "nun", 0x05e0, 0 },
+ { "nundagesh", 0xfb40, 0 },
+ { "nundageshhebrew", 0xfb40, 0 },
+ { "nunhebrew", 0x05e0, 0 },
+ { "nvsquare", 0x33b5, 0 },
+ { "nwsquare", 0x33bb, 0 },
+ { "nyabengali", 0x099e, 0 },
+ { "nyadeva", 0x091e, 0 },
+ { "nyagujarati", 0x0a9e, 0 },
+ { "nyagurmukhi", 0x0a1e, 0 },
+ { "oangthai", 0x0e2d, 0 },
+ { "obarred", 0x0275, 0 },
+ { "obarredcyrillic", 0x04e9, 0 },
+ { "obarreddieresiscyrillic", 0x04eb, 0 },
+ { "obengali", 0x0993, 0 },
+ { "obopomofo", 0x311b, 0 },
+ { "ocandradeva", 0x0911, 0 },
+ { "ocandragujarati", 0x0a91, 0 },
+ { "ocandravowelsigndeva", 0x0949, 0 },
+ { "ocandravowelsigngujarati", 0x0ac9, 0 },
+ { "ocaron", 0x01d2, 0 },
+ { "ocircle", 0x24de, 0 },
+ { "ocircumflexacute", 0x1ed1, 0 },
+ { "ocircumflexdotbelow", 0x1ed9, 0 },
+ { "ocircumflexgrave", 0x1ed3, 0 },
+ { "ocircumflexhookabove", 0x1ed5, 0 },
+ { "ocircumflextilde", 0x1ed7, 0 },
+ { "ocyrillic", 0x043e, 0 },
+ { "odblacute", 0x0151, 0 },
+ { "odblgrave", 0x020d, 0 },
+ { "odeva", 0x0913, 0 },
+ { "odieresiscyrillic", 0x04e7, 0 },
+ { "odotbelow", 0x1ecd, 0 },
+ { "oekorean", 0x315a, 0 },
+ { "ogonekcmb", 0x0328, 0 },
+ { "ogujarati", 0x0a93, 0 },
+ { "oharmenian", 0x0585, 0 },
+ { "ohiragana", 0x304a, 0 },
+ { "ohookabove", 0x1ecf, 0 },
+ { "ohornacute", 0x1edb, 0 },
+ { "ohorndotbelow", 0x1ee3, 0 },
+ { "ohorngrave", 0x1edd, 0 },
+ { "ohornhookabove", 0x1edf, 0 },
+ { "ohorntilde", 0x1ee1, 0 },
+ { "oi", 0x01a3, 0 },
+ { "oinvertedbreve", 0x020f, 0 },
+ { "okatakana", 0x30aa, 0 },
+ { "okatakanahalfwidth", 0xff75, 0 },
+ { "okorean", 0x3157, 0 },
+ { "olehebrew", 0x05ab, 0 },
+ { "omacronacute", 0x1e53, 0 },
+ { "omacrongrave", 0x1e51, 0 },
+ { "omdeva", 0x0950, 0 },
+ { "omegacyrillic", 0x0461, 0 },
+ { "omegalatinclosed", 0x0277, 0 },
+ { "omegaroundcyrillic", 0x047b, 0 },
+ { "omegatitlocyrillic", 0x047d, 0 },
+ { "omgujarati", 0x0ad0, 0 },
+ { "omonospace", 0xff4f, 0 },
+ { "onearabic", 0x0661, 0 },
+ { "onebengali", 0x09e7, 0 },
+ { "onecircle", 0x2460, 0 },
+ { "onecircleinversesansserif", 0x278a, 0 },
+ { "onedeva", 0x0967, 0 },
+ { "onefitted", 0xf6dc, 0 },
+ { "onegujarati", 0x0ae7, 0 },
+ { "onegurmukhi", 0x0a67, 0 },
+ { "onehackarabic", 0x0661, 0 },
+ { "onehangzhou", 0x3021, 0 },
+ { "oneideographicparen", 0x3220, 0 },
+ { "oneinferior", 0x2081, 0 },
+ { "onemonospace", 0xff11, 0 },
+ { "onenumeratorbengali", 0x09f4, 0 },
+ { "oneoldstyle", 0xf731, 0 },
+ { "oneparen", 0x2474, 0 },
+ { "oneperiod", 0x2488, 0 },
+ { "onepersian", 0x06f1, 0 },
+ { "oneroman", 0x2170, 0 },
+ { "onesuperior", 0x00b9, 0 },
+ { "onethai", 0x0e51, 0 },
+ { "oogonek", 0x01eb, 0 },
+ { "oogonekmacron", 0x01ed, 0 },
+ { "oogurmukhi", 0x0a13, 0 },
+ { "oomatragurmukhi", 0x0a4b, 0 },
+ { "oopen", 0x0254, 0 },
+ { "oparen", 0x24aa, 0 },
+ { "option", 0x2325, 0 },
+ { "oshortdeva", 0x0912, 0 },
+ { "oshortvowelsigndeva", 0x094a, 0 },
+ { "osmallhiragana", 0x3049, 0 },
+ { "osmallkatakana", 0x30a9, 0 },
+ { "osmallkatakanahalfwidth", 0xff6b, 0 },
+ { "ostrokeacute", 0x01ff, 0 },
+ { "osuperior", 0xf6f0, 0 },
+ { "otcyrillic", 0x047f, 0 },
+ { "otildeacute", 0x1e4d, 0 },
+ { "otildedieresis", 0x1e4f, 0 },
+ { "oubopomofo", 0x3121, 0 },
+ { "overline", 0x203e, 0 },
+ { "overlinecenterline", 0xfe4a, 0 },
+ { "overlinecmb", 0x0305, 0 },
+ { "overlinedashed", 0xfe49, 0 },
+ { "overlinedblwavy", 0xfe4c, 0 },
+ { "overlinewavy", 0xfe4b, 0 },
+ { "overscore", 0x00af, 0 },
+ { "ovowelsignbengali", 0x09cb, 0 },
+ { "ovowelsigndeva", 0x094b, 0 },
+ { "ovowelsigngujarati", 0x0acb, 0 },
+ { "paampssquare", 0x3380, 0 },
+ { "paasentosquare", 0x332b, 0 },
+ { "pabengali", 0x09aa, 0 },
+ { "pacute", 0x1e55, 0 },
+ { "padeva", 0x092a, 0 },
+ { "pagedown", 0x21df, 0 },
+ { "pageup", 0x21de, 0 },
+ { "pagujarati", 0x0aaa, 0 },
+ { "pagurmukhi", 0x0a2a, 0 },
+ { "pahiragana", 0x3071, 0 },
+ { "paiyannoithai", 0x0e2f, 0 },
+ { "pakatakana", 0x30d1, 0 },
+ { "palatalizationcyrilliccmb", 0x0484, 0 },
+ { "palochkacyrillic", 0x04c0, 0 },
+ { "pansioskorean", 0x317f, 0 },
+ { "parallel", 0x2225, 0 },
+ { "parenleftaltonearabic", 0xfd3e, 0 },
+ { "parenleftbt", 0xf8ed, 0 },
+ { "parenleftex", 0xf8ec, 0 },
+ { "parenleftinferior", 0x208d, 0 },
+ { "parenleftmonospace", 0xff08, 0 },
+ { "parenleftsmall", 0xfe59, 0 },
+ { "parenleftsuperior", 0x207d, 0 },
+ { "parenlefttp", 0xf8eb, 0 },
+ { "parenleftvertical", 0xfe35, 0 },
+ { "parenrightaltonearabic", 0xfd3f, 0 },
+ { "parenrightbt", 0xf8f8, 0 },
+ { "parenrightex", 0xf8f7, 0 },
+ { "parenrightinferior", 0x208e, 0 },
+ { "parenrightmonospace", 0xff09, 0 },
+ { "parenrightsmall", 0xfe5a, 0 },
+ { "parenrightsuperior", 0x207e, 0 },
+ { "parenrighttp", 0xf8f6, 0 },
+ { "parenrightvertical", 0xfe36, 0 },
+ { "paseqhebrew", 0x05c0, 0 },
+ { "pashtahebrew", 0x0599, 0 },
+ { "pasquare", 0x33a9, 0 },
+ { "patah", 0x05b7, 0 },
+ { "patah11", 0x05b7, 0 },
+ { "patah1d", 0x05b7, 0 },
+ { "patah2a", 0x05b7, 0 },
+ { "patahhebrew", 0x05b7, 0 },
+ { "patahnarrowhebrew", 0x05b7, 0 },
+ { "patahquarterhebrew", 0x05b7, 0 },
+ { "patahwidehebrew", 0x05b7, 0 },
+ { "pazerhebrew", 0x05a1, 0 },
+ { "pbopomofo", 0x3106, 0 },
+ { "pcircle", 0x24df, 0 },
+ { "pdotaccent", 0x1e57, 0 },
+ { "pe", 0x05e4, 0 },
+ { "pecyrillic", 0x043f, 0 },
+ { "pedagesh", 0xfb44, 0 },
+ { "pedageshhebrew", 0xfb44, 0 },
+ { "peezisquare", 0x333b, 0 },
+ { "pefinaldageshhebrew", 0xfb43, 0 },
+ { "peharabic", 0x067e, 0 },
+ { "peharmenian", 0x057a, 0 },
+ { "pehebrew", 0x05e4, 0 },
+ { "pehfinalarabic", 0xfb57, 0 },
+ { "pehinitialarabic", 0xfb58, 0 },
+ { "pehiragana", 0x307a, 0 },
+ { "pehmedialarabic", 0xfb59, 0 },
+ { "pekatakana", 0x30da, 0 },
+ { "pemiddlehookcyrillic", 0x04a7, 0 },
+ { "perafehebrew", 0xfb4e, 0 },
+ { "percentarabic", 0x066a, 0 },
+ { "percentmonospace", 0xff05, 0 },
+ { "percentsmall", 0xfe6a, 0 },
+ { "periodarmenian", 0x0589, 0 },
+ { "periodhalfwidth", 0xff61, 0 },
+ { "periodinferior", 0xf6e7, 0 },
+ { "periodmonospace", 0xff0e, 0 },
+ { "periodsmall", 0xfe52, 0 },
+ { "periodsuperior", 0xf6e8, 0 },
+ { "perispomenigreekcmb", 0x0342, 0 },
+ { "pfsquare", 0x338a, 0 },
+ { "phabengali", 0x09ab, 0 },
+ { "phadeva", 0x092b, 0 },
+ { "phagujarati", 0x0aab, 0 },
+ { "phagurmukhi", 0x0a2b, 0 },
+ { "phieuphacirclekorean", 0x327a, 0 },
+ { "phieuphaparenkorean", 0x321a, 0 },
+ { "phieuphcirclekorean", 0x326c, 0 },
+ { "phieuphkorean", 0x314d, 0 },
+ { "phieuphparenkorean", 0x320c, 0 },
+ { "philatin", 0x0278, 0 },
+ { "phinthuthai", 0x0e3a, 0 },
+ { "phisymbolgreek", 0x03d5, 0 },
+ { "phook", 0x01a5, 0 },
+ { "phophanthai", 0x0e1e, 0 },
+ { "phophungthai", 0x0e1c, 0 },
+ { "phosamphaothai", 0x0e20, 0 },
+ { "pieupacirclekorean", 0x3273, 0 },
+ { "pieupaparenkorean", 0x3213, 0 },
+ { "pieupcieuckorean", 0x3176, 0 },
+ { "pieupcirclekorean", 0x3265, 0 },
+ { "pieupkiyeokkorean", 0x3172, 0 },
+ { "pieupkorean", 0x3142, 0 },
+ { "pieupparenkorean", 0x3205, 0 },
+ { "pieupsioskiyeokkorean", 0x3174, 0 },
+ { "pieupsioskorean", 0x3144, 0 },
+ { "pieupsiostikeutkorean", 0x3175, 0 },
+ { "pieupthieuthkorean", 0x3177, 0 },
+ { "pieuptikeutkorean", 0x3173, 0 },
+ { "pihiragana", 0x3074, 0 },
+ { "pikatakana", 0x30d4, 0 },
+ { "pisymbolgreek", 0x03d6, 0 },
+ { "piwrarmenian", 0x0583, 0 },
+ { "plusbelowcmb", 0x031f, 0 },
+ { "pluscircle", 0x2295, 0 },
+ { "plusmod", 0x02d6, 0 },
+ { "plusmonospace", 0xff0b, 0 },
+ { "plussmall", 0xfe62, 0 },
+ { "plussuperior", 0x207a, 0 },
+ { "pmonospace", 0xff50, 0 },
+ { "pmsquare", 0x33d8, 0 },
+ { "pohiragana", 0x307d, 0 },
+ { "pointingindexdownwhite", 0x261f, 0 },
+ { "pointingindexleftwhite", 0x261c, 0 },
+ { "pointingindexrightwhite", 0x261e, 0 },
+ { "pointingindexupwhite", 0x261d, 0 },
+ { "pokatakana", 0x30dd, 0 },
+ { "poplathai", 0x0e1b, 0 },
+ { "postalmark", 0x3012, 0 },
+ { "postalmarkface", 0x3020, 0 },
+ { "pparen", 0x24ab, 0 },
+ { "precedes", 0x227a, 0 },
+ { "primemod", 0x02b9, 0 },
+ { "primereversed", 0x2035, 0 },
+ { "projective", 0x2305, 0 },
+ { "prolongedkana", 0x30fc, 0 },
+ { "propellor", 0x2318, 0 },
+ { "proportion", 0x2237, 0 },
+ { "psicyrillic", 0x0471, 0 },
+ { "psilipneumatacyrilliccmb", 0x0486, 0 },
+ { "pssquare", 0x33b0, 0 },
+ { "puhiragana", 0x3077, 0 },
+ { "pukatakana", 0x30d7, 0 },
+ { "pvsquare", 0x33b4, 0 },
+ { "pwsquare", 0x33ba, 0 },
+ { "qadeva", 0x0958, 0 },
+ { "qadmahebrew", 0x05a8, 0 },
+ { "qafarabic", 0x0642, 0 },
+ { "qaffinalarabic", 0xfed6, 0 },
+ { "qafinitialarabic", 0xfed7, 0 },
+ { "qafmedialarabic", 0xfed8, 0 },
+ { "qamats", 0x05b8, 0 },
+ { "qamats10", 0x05b8, 0 },
+ { "qamats1a", 0x05b8, 0 },
+ { "qamats1c", 0x05b8, 0 },
+ { "qamats27", 0x05b8, 0 },
+ { "qamats29", 0x05b8, 0 },
+ { "qamats33", 0x05b8, 0 },
+ { "qamatsde", 0x05b8, 0 },
+ { "qamatshebrew", 0x05b8, 0 },
+ { "qamatsnarrowhebrew", 0x05b8, 0 },
+ { "qamatsqatanhebrew", 0x05b8, 0 },
+ { "qamatsqatannarrowhebrew", 0x05b8, 0 },
+ { "qamatsqatanquarterhebrew", 0x05b8, 0 },
+ { "qamatsqatanwidehebrew", 0x05b8, 0 },
+ { "qamatsquarterhebrew", 0x05b8, 0 },
+ { "qamatswidehebrew", 0x05b8, 0 },
+ { "qarneyparahebrew", 0x059f, 0 },
+ { "qbopomofo", 0x3111, 0 },
+ { "qcircle", 0x24e0, 0 },
+ { "qhook", 0x02a0, 0 },
+ { "qmonospace", 0xff51, 0 },
+ { "qof", 0x05e7, 0 },
+ { "qofdagesh", 0xfb47, 0 },
+ { "qofdageshhebrew", 0xfb47, 0 },
+ { "qofhatafpatah", 0x05e7, 0 },
+ { "qofhatafpatahhebrew", 0x05e7, 0 },
+ { "qofhatafsegol", 0x05e7, 0 },
+ { "qofhatafsegolhebrew", 0x05e7, 0 },
+ { "qofhebrew", 0x05e7, 0 },
+ { "qofhiriq", 0x05e7, 0 },
+ { "qofhiriqhebrew", 0x05e7, 0 },
+ { "qofholam", 0x05e7, 0 },
+ { "qofholamhebrew", 0x05e7, 0 },
+ { "qofpatah", 0x05e7, 0 },
+ { "qofpatahhebrew", 0x05e7, 0 },
+ { "qofqamats", 0x05e7, 0 },
+ { "qofqamatshebrew", 0x05e7, 0 },
+ { "qofqubuts", 0x05e7, 0 },
+ { "qofqubutshebrew", 0x05e7, 0 },
+ { "qofsegol", 0x05e7, 0 },
+ { "qofsegolhebrew", 0x05e7, 0 },
+ { "qofsheva", 0x05e7, 0 },
+ { "qofshevahebrew", 0x05e7, 0 },
+ { "qoftsere", 0x05e7, 0 },
+ { "qoftserehebrew", 0x05e7, 0 },
+ { "qparen", 0x24ac, 0 },
+ { "quarternote", 0x2669, 0 },
+ { "qubuts", 0x05bb, 0 },
+ { "qubuts18", 0x05bb, 0 },
+ { "qubuts25", 0x05bb, 0 },
+ { "qubuts31", 0x05bb, 0 },
+ { "qubutshebrew", 0x05bb, 0 },
+ { "qubutsnarrowhebrew", 0x05bb, 0 },
+ { "qubutsquarterhebrew", 0x05bb, 0 },
+ { "qubutswidehebrew", 0x05bb, 0 },
+ { "questionarabic", 0x061f, 0 },
+ { "questionarmenian", 0x055e, 0 },
+ { "questiondownsmall", 0xf7bf, 0 },
+ { "questiongreek", 0x037e, 0 },
+ { "questionmonospace", 0xff1f, 0 },
+ { "questionsmall", 0xf73f, 0 },
+ { "quotedblmonospace", 0xff02, 0 },
+ { "quotedblprime", 0x301e, 0 },
+ { "quotedblprimereversed", 0x301d, 0 },
+ { "quoteleftreversed", 0x201b, 0 },
+ { "quoterightn", 0x0149, 0 },
+ { "quotesinglemonospace", 0xff07, 0 },
+ { "raarmenian", 0x057c, 0 },
+ { "rabengali", 0x09b0, 0 },
+ { "radeva", 0x0930, 0 },
+ { "radicalex", 0xf8e5, 0 },
+ { "radoverssquare", 0x33ae, 0 },
+ { "radoverssquaredsquare", 0x33af, 0 },
+ { "radsquare", 0x33ad, 0 },
+ { "rafe", 0x05bf, 0 },
+ { "rafehebrew", 0x05bf, 0 },
+ { "ragujarati", 0x0ab0, 0 },
+ { "ragurmukhi", 0x0a30, 0 },
+ { "rahiragana", 0x3089, 0 },
+ { "rakatakana", 0x30e9, 0 },
+ { "rakatakanahalfwidth", 0xff97, 0 },
+ { "ralowerdiagonalbengali", 0x09f1, 0 },
+ { "ramiddlediagonalbengali", 0x09f0, 0 },
+ { "ramshorn", 0x0264, 0 },
+ { "ratio", 0x2236, 0 },
+ { "rbopomofo", 0x3116, 0 },
+ { "rcedilla", 0x0157, 0 },
+ { "rcircle", 0x24e1, 0 },
+ { "rdblgrave", 0x0211, 0 },
+ { "rdotaccent", 0x1e59, 0 },
+ { "rdotbelow", 0x1e5b, 0 },
+ { "rdotbelowmacron", 0x1e5d, 0 },
+ { "referencemark", 0x203b, 0 },
+ { "registersans", 0xf8e8, 0 },
+ { "registerserif", 0xf6da, 0 },
+ { "reharabic", 0x0631, 0 },
+ { "reharmenian", 0x0580, 0 },
+ { "rehfinalarabic", 0xfeae, 0 },
+ { "rehiragana", 0x308c, 0 },
+ { "rehyehaleflamarabic", 0x0631, 0 },
+ { "rekatakana", 0x30ec, 0 },
+ { "rekatakanahalfwidth", 0xff9a, 0 },
+ { "resh", 0x05e8, 0 },
+ { "reshdageshhebrew", 0xfb48, 0 },
+ { "reshhatafpatah", 0x05e8, 0 },
+ { "reshhatafpatahhebrew", 0x05e8, 0 },
+ { "reshhatafsegol", 0x05e8, 0 },
+ { "reshhatafsegolhebrew", 0x05e8, 0 },
+ { "reshhebrew", 0x05e8, 0 },
+ { "reshhiriq", 0x05e8, 0 },
+ { "reshhiriqhebrew", 0x05e8, 0 },
+ { "reshholam", 0x05e8, 0 },
+ { "reshholamhebrew", 0x05e8, 0 },
+ { "reshpatah", 0x05e8, 0 },
+ { "reshpatahhebrew", 0x05e8, 0 },
+ { "reshqamats", 0x05e8, 0 },
+ { "reshqamatshebrew", 0x05e8, 0 },
+ { "reshqubuts", 0x05e8, 0 },
+ { "reshqubutshebrew", 0x05e8, 0 },
+ { "reshsegol", 0x05e8, 0 },
+ { "reshsegolhebrew", 0x05e8, 0 },
+ { "reshsheva", 0x05e8, 0 },
+ { "reshshevahebrew", 0x05e8, 0 },
+ { "reshtsere", 0x05e8, 0 },
+ { "reshtserehebrew", 0x05e8, 0 },
+ { "reversedtilde", 0x223d, 0 },
+ { "reviahebrew", 0x0597, 0 },
+ { "reviamugrashhebrew", 0x0597, 0 },
+ { "rfishhook", 0x027e, 0 },
+ { "rfishhookreversed", 0x027f, 0 },
+ { "rhabengali", 0x09dd, 0 },
+ { "rhadeva", 0x095d, 0 },
+ { "rhook", 0x027d, 0 },
+ { "rhookturned", 0x027b, 0 },
+ { "rhookturnedsuperior", 0x02b5, 0 },
+ { "rhosymbolgreek", 0x03f1, 0 },
+ { "rhotichookmod", 0x02de, 0 },
+ { "rieulacirclekorean", 0x3271, 0 },
+ { "rieulaparenkorean", 0x3211, 0 },
+ { "rieulcirclekorean", 0x3263, 0 },
+ { "rieulhieuhkorean", 0x3140, 0 },
+ { "rieulkiyeokkorean", 0x313a, 0 },
+ { "rieulkiyeoksioskorean", 0x3169, 0 },
+ { "rieulkorean", 0x3139, 0 },
+ { "rieulmieumkorean", 0x313b, 0 },
+ { "rieulpansioskorean", 0x316c, 0 },
+ { "rieulparenkorean", 0x3203, 0 },
+ { "rieulphieuphkorean", 0x313f, 0 },
+ { "rieulpieupkorean", 0x313c, 0 },
+ { "rieulpieupsioskorean", 0x316b, 0 },
+ { "rieulsioskorean", 0x313d, 0 },
+ { "rieulthieuthkorean", 0x313e, 0 },
+ { "rieultikeutkorean", 0x316a, 0 },
+ { "rieulyeorinhieuhkorean", 0x316d, 0 },
+ { "rightangle", 0x221f, 0 },
+ { "righttackbelowcmb", 0x0319, 0 },
+ { "righttriangle", 0x22bf, 0 },
+ { "rihiragana", 0x308a, 0 },
+ { "rikatakana", 0x30ea, 0 },
+ { "rikatakanahalfwidth", 0xff98, 0 },
+ { "ringbelowcmb", 0x0325, 0 },
+ { "ringcmb", 0x030a, 0 },
+ { "ringhalfleft", 0x02bf, 0 },
+ { "ringhalfleftarmenian", 0x0559, 0 },
+ { "ringhalfleftbelowcmb", 0x031c, 0 },
+ { "ringhalfleftcentered", 0x02d3, 0 },
+ { "ringhalfright", 0x02be, 0 },
+ { "ringhalfrightbelowcmb", 0x0339, 0 },
+ { "ringhalfrightcentered", 0x02d2, 0 },
+ { "rinvertedbreve", 0x0213, 0 },
+ { "rittorusquare", 0x3351, 0 },
+ { "rlinebelow", 0x1e5f, 0 },
+ { "rlongleg", 0x027c, 0 },
+ { "rlonglegturned", 0x027a, 0 },
+ { "rmonospace", 0xff52, 0 },
+ { "rohiragana", 0x308d, 0 },
+ { "rokatakana", 0x30ed, 0 },
+ { "rokatakanahalfwidth", 0xff9b, 0 },
+ { "roruathai", 0x0e23, 0 },
+ { "rparen", 0x24ad, 0 },
+ { "rrabengali", 0x09dc, 0 },
+ { "rradeva", 0x0931, 0 },
+ { "rragurmukhi", 0x0a5c, 0 },
+ { "rreharabic", 0x0691, 0 },
+ { "rrehfinalarabic", 0xfb8d, 0 },
+ { "rrvocalicbengali", 0x09e0, 0 },
+ { "rrvocalicdeva", 0x0960, 0 },
+ { "rrvocalicgujarati", 0x0ae0, 0 },
+ { "rrvocalicvowelsignbengali", 0x09c4, 0 },
+ { "rrvocalicvowelsigndeva", 0x0944, 0 },
+ { "rrvocalicvowelsigngujarati", 0x0ac4, 0 },
+ { "rsuperior", 0xf6f1, 0 },
+ { "rturned", 0x0279, 0 },
+ { "rturnedsuperior", 0x02b4, 0 },
+ { "ruhiragana", 0x308b, 0 },
+ { "rukatakana", 0x30eb, 0 },
+ { "rukatakanahalfwidth", 0xff99, 0 },
+ { "rupeemarkbengali", 0x09f2, 0 },
+ { "rupeesignbengali", 0x09f3, 0 },
+ { "rupiah", 0xf6dd, 0 },
+ { "ruthai", 0x0e24, 0 },
+ { "rvocalicbengali", 0x098b, 0 },
+ { "rvocalicdeva", 0x090b, 0 },
+ { "rvocalicgujarati", 0x0a8b, 0 },
+ { "rvocalicvowelsignbengali", 0x09c3, 0 },
+ { "rvocalicvowelsigndeva", 0x0943, 0 },
+ { "rvocalicvowelsigngujarati", 0x0ac3, 0 },
+ { "sabengali", 0x09b8, 0 },
+ { "sacutedotaccent", 0x1e65, 0 },
+ { "sadarabic", 0x0635, 0 },
+ { "sadeva", 0x0938, 0 },
+ { "sadfinalarabic", 0xfeba, 0 },
+ { "sadinitialarabic", 0xfebb, 0 },
+ { "sadmedialarabic", 0xfebc, 0 },
+ { "sagujarati", 0x0ab8, 0 },
+ { "sagurmukhi", 0x0a38, 0 },
+ { "sahiragana", 0x3055, 0 },
+ { "sakatakana", 0x30b5, 0 },
+ { "sakatakanahalfwidth", 0xff7b, 0 },
+ { "sallallahoualayhewasallamarabic", 0xfdfa, 0 },
+ { "samekh", 0x05e1, 0 },
+ { "samekhdagesh", 0xfb41, 0 },
+ { "samekhdageshhebrew", 0xfb41, 0 },
+ { "samekhhebrew", 0x05e1, 0 },
+ { "saraaathai", 0x0e32, 0 },
+ { "saraaethai", 0x0e41, 0 },
+ { "saraaimaimalaithai", 0x0e44, 0 },
+ { "saraaimaimuanthai", 0x0e43, 0 },
+ { "saraamthai", 0x0e33, 0 },
+ { "saraathai", 0x0e30, 0 },
+ { "saraethai", 0x0e40, 0 },
+ { "saraiileftthai", 0xf886, 0 },
+ { "saraiithai", 0x0e35, 0 },
+ { "saraileftthai", 0xf885, 0 },
+ { "saraithai", 0x0e34, 0 },
+ { "saraothai", 0x0e42, 0 },
+ { "saraueeleftthai", 0xf888, 0 },
+ { "saraueethai", 0x0e37, 0 },
+ { "saraueleftthai", 0xf887, 0 },
+ { "sarauethai", 0x0e36, 0 },
+ { "sarauthai", 0x0e38, 0 },
+ { "sarauuthai", 0x0e39, 0 },
+ { "sbopomofo", 0x3119, 0 },
+ { "scarondotaccent", 0x1e67, 0 },
+ { "schwa", 0x0259, 0 },
+ { "schwacyrillic", 0x04d9, 0 },
+ { "schwadieresiscyrillic", 0x04db, 0 },
+ { "schwahook", 0x025a, 0 },
+ { "scircle", 0x24e2, 0 },
+ { "sdotaccent", 0x1e61, 0 },
+ { "sdotbelow", 0x1e63, 0 },
+ { "sdotbelowdotaccent", 0x1e69, 0 },
+ { "seagullbelowcmb", 0x033c, 0 },
+ { "secondtonechinese", 0x02ca, 0 },
+ { "seenarabic", 0x0633, 0 },
+ { "seenfinalarabic", 0xfeb2, 0 },
+ { "seeninitialarabic", 0xfeb3, 0 },
+ { "seenmedialarabic", 0xfeb4, 0 },
+ { "segol", 0x05b6, 0 },
+ { "segol13", 0x05b6, 0 },
+ { "segol1f", 0x05b6, 0 },
+ { "segol2c", 0x05b6, 0 },
+ { "segolhebrew", 0x05b6, 0 },
+ { "segolnarrowhebrew", 0x05b6, 0 },
+ { "segolquarterhebrew", 0x05b6, 0 },
+ { "segoltahebrew", 0x0592, 0 },
+ { "segolwidehebrew", 0x05b6, 0 },
+ { "seharmenian", 0x057d, 0 },
+ { "sehiragana", 0x305b, 0 },
+ { "sekatakana", 0x30bb, 0 },
+ { "sekatakanahalfwidth", 0xff7e, 0 },
+ { "semicolonarabic", 0x061b, 0 },
+ { "semicolonmonospace", 0xff1b, 0 },
+ { "semicolonsmall", 0xfe54, 0 },
+ { "semivoicedmarkkana", 0x309c, 0 },
+ { "semivoicedmarkkanahalfwidth", 0xff9f, 0 },
+ { "sentisquare", 0x3322, 0 },
+ { "sentosquare", 0x3323, 0 },
+ { "sevenarabic", 0x0667, 0 },
+ { "sevenbengali", 0x09ed, 0 },
+ { "sevencircle", 0x2466, 0 },
+ { "sevencircleinversesansserif", 0x2790, 0 },
+ { "sevendeva", 0x096d, 0 },
+ { "sevengujarati", 0x0aed, 0 },
+ { "sevengurmukhi", 0x0a6d, 0 },
+ { "sevenhackarabic", 0x0667, 0 },
+ { "sevenhangzhou", 0x3027, 0 },
+ { "sevenideographicparen", 0x3226, 0 },
+ { "seveninferior", 0x2087, 0 },
+ { "sevenmonospace", 0xff17, 0 },
+ { "sevenoldstyle", 0xf737, 0 },
+ { "sevenparen", 0x247a, 0 },
+ { "sevenperiod", 0x248e, 0 },
+ { "sevenpersian", 0x06f7, 0 },
+ { "sevenroman", 0x2176, 0 },
+ { "sevensuperior", 0x2077, 0 },
+ { "seventeencircle", 0x2470, 0 },
+ { "seventeenparen", 0x2484, 0 },
+ { "seventeenperiod", 0x2498, 0 },
+ { "seventhai", 0x0e57, 0 },
+ { "sfthyphen", 0x00ad, 0 },
+ { "shaarmenian", 0x0577, 0 },
+ { "shabengali", 0x09b6, 0 },
+ { "shacyrillic", 0x0448, 0 },
+ { "shaddaarabic", 0x0651, 0 },
+ { "shaddadammaarabic", 0xfc61, 0 },
+ { "shaddadammatanarabic", 0xfc5e, 0 },
+ { "shaddafathaarabic", 0xfc60, 0 },
+ { "shaddafathatanarabic", 0x0651, 0 },
+ { "shaddakasraarabic", 0xfc62, 0 },
+ { "shaddakasratanarabic", 0xfc5f, 0 },
+ { "shadedark", 0x2593, 0 },
+ { "shadelight", 0x2591, 0 },
+ { "shademedium", 0x2592, 0 },
+ { "shadeva", 0x0936, 0 },
+ { "shagujarati", 0x0ab6, 0 },
+ { "shagurmukhi", 0x0a36, 0 },
+ { "shalshelethebrew", 0x0593, 0 },
+ { "shbopomofo", 0x3115, 0 },
+ { "shchacyrillic", 0x0449, 0 },
+ { "sheenarabic", 0x0634, 0 },
+ { "sheenfinalarabic", 0xfeb6, 0 },
+ { "sheeninitialarabic", 0xfeb7, 0 },
+ { "sheenmedialarabic", 0xfeb8, 0 },
+ { "sheicoptic", 0x03e3, 0 },
+ { "sheqel", 0x20aa, 0 },
+ { "sheqelhebrew", 0x20aa, 0 },
+ { "sheva", 0x05b0, 0 },
+ { "sheva115", 0x05b0, 0 },
+ { "sheva15", 0x05b0, 0 },
+ { "sheva22", 0x05b0, 0 },
+ { "sheva2e", 0x05b0, 0 },
+ { "shevahebrew", 0x05b0, 0 },
+ { "shevanarrowhebrew", 0x05b0, 0 },
+ { "shevaquarterhebrew", 0x05b0, 0 },
+ { "shevawidehebrew", 0x05b0, 0 },
+ { "shhacyrillic", 0x04bb, 0 },
+ { "shimacoptic", 0x03ed, 0 },
+ { "shin", 0x05e9, 0 },
+ { "shindagesh", 0xfb49, 0 },
+ { "shindageshhebrew", 0xfb49, 0 },
+ { "shindageshshindot", 0xfb2c, 0 },
+ { "shindageshshindothebrew", 0xfb2c, 0 },
+ { "shindageshsindot", 0xfb2d, 0 },
+ { "shindageshsindothebrew", 0xfb2d, 0 },
+ { "shindothebrew", 0x05c1, 0 },
+ { "shinhebrew", 0x05e9, 0 },
+ { "shinshindot", 0xfb2a, 0 },
+ { "shinshindothebrew", 0xfb2a, 0 },
+ { "shinsindot", 0xfb2b, 0 },
+ { "shinsindothebrew", 0xfb2b, 0 },
+ { "shook", 0x0282, 0 },
+ { "sigmafinal", 0x03c2, 0 },
+ { "sigmalunatesymbolgreek", 0x03f2, 0 },
+ { "sihiragana", 0x3057, 0 },
+ { "sikatakana", 0x30b7, 0 },
+ { "sikatakanahalfwidth", 0xff7c, 0 },
+ { "siluqhebrew", 0x05bd, 0 },
+ { "siluqlefthebrew", 0x05bd, 0 },
+ { "sindothebrew", 0x05c2, 0 },
+ { "siosacirclekorean", 0x3274, 0 },
+ { "siosaparenkorean", 0x3214, 0 },
+ { "sioscieuckorean", 0x317e, 0 },
+ { "sioscirclekorean", 0x3266, 0 },
+ { "sioskiyeokkorean", 0x317a, 0 },
+ { "sioskorean", 0x3145, 0 },
+ { "siosnieunkorean", 0x317b, 0 },
+ { "siosparenkorean", 0x3206, 0 },
+ { "siospieupkorean", 0x317d, 0 },
+ { "siostikeutkorean", 0x317c, 0 },
+ { "sixarabic", 0x0666, 0 },
+ { "sixbengali", 0x09ec, 0 },
+ { "sixcircle", 0x2465, 0 },
+ { "sixcircleinversesansserif", 0x278f, 0 },
+ { "sixdeva", 0x096c, 0 },
+ { "sixgujarati", 0x0aec, 0 },
+ { "sixgurmukhi", 0x0a6c, 0 },
+ { "sixhackarabic", 0x0666, 0 },
+ { "sixhangzhou", 0x3026, 0 },
+ { "sixideographicparen", 0x3225, 0 },
+ { "sixinferior", 0x2086, 0 },
+ { "sixmonospace", 0xff16, 0 },
+ { "sixoldstyle", 0xf736, 0 },
+ { "sixparen", 0x2479, 0 },
+ { "sixperiod", 0x248d, 0 },
+ { "sixpersian", 0x06f6, 0 },
+ { "sixroman", 0x2175, 0 },
+ { "sixsuperior", 0x2076, 0 },
+ { "sixteencircle", 0x246f, 0 },
+ { "sixteencurrencydenominatorbengali", 0x09f9, 0 },
+ { "sixteenparen", 0x2483, 0 },
+ { "sixteenperiod", 0x2497, 0 },
+ { "sixthai", 0x0e56, 0 },
+ { "slashmonospace", 0xff0f, 0 },
+ { "slong", 0x017f, 0 },
+ { "slongdotaccent", 0x1e9b, 0 },
+ { "smonospace", 0xff53, 0 },
+ { "sofpasuqhebrew", 0x05c3, 0 },
+ { "softhyphen", 0x00ad, 0 },
+ { "softsigncyrillic", 0x044c, 0 },
+ { "sohiragana", 0x305d, 0 },
+ { "sokatakana", 0x30bd, 0 },
+ { "sokatakanahalfwidth", 0xff7f, 0 },
+ { "soliduslongoverlaycmb", 0x0338, 0 },
+ { "solidusshortoverlaycmb", 0x0337, 0 },
+ { "sorusithai", 0x0e29, 0 },
+ { "sosalathai", 0x0e28, 0 },
+ { "sosothai", 0x0e0b, 0 },
+ { "sosuathai", 0x0e2a, 0 },
+ { "spacehackarabic", 0x0020, 0 },
+ { "spadesuitblack", 0x2660, 0 },
+ { "spadesuitwhite", 0x2664, 0 },
+ { "sparen", 0x24ae, 0 },
+ { "squarebelowcmb", 0x033b, 0 },
+ { "squarecc", 0x33c4, 0 },
+ { "squarecm", 0x339d, 0 },
+ { "squarediagonalcrosshatchfill", 0x25a9, 0 },
+ { "squarehorizontalfill", 0x25a4, 0 },
+ { "squarekg", 0x338f, 0 },
+ { "squarekm", 0x339e, 0 },
+ { "squarekmcapital", 0x33ce, 0 },
+ { "squareln", 0x33d1, 0 },
+ { "squarelog", 0x33d2, 0 },
+ { "squaremg", 0x338e, 0 },
+ { "squaremil", 0x33d5, 0 },
+ { "squaremm", 0x339c, 0 },
+ { "squaremsquared", 0x33a1, 0 },
+ { "squareorthogonalcrosshatchfill", 0x25a6, 0 },
+ { "squareupperlefttolowerrightfill", 0x25a7, 0 },
+ { "squareupperrighttolowerleftfill", 0x25a8, 0 },
+ { "squareverticalfill", 0x25a5, 0 },
+ { "squarewhitewithsmallblack", 0x25a3, 0 },
+ { "srsquare", 0x33db, 0 },
+ { "ssabengali", 0x09b7, 0 },
+ { "ssadeva", 0x0937, 0 },
+ { "ssagujarati", 0x0ab7, 0 },
+ { "ssangcieuckorean", 0x3149, 0 },
+ { "ssanghieuhkorean", 0x3185, 0 },
+ { "ssangieungkorean", 0x3180, 0 },
+ { "ssangkiyeokkorean", 0x3132, 0 },
+ { "ssangnieunkorean", 0x3165, 0 },
+ { "ssangpieupkorean", 0x3143, 0 },
+ { "ssangsioskorean", 0x3146, 0 },
+ { "ssangtikeutkorean", 0x3138, 0 },
+ { "ssuperior", 0xf6f2, 0 },
+ { "sterlingmonospace", 0xffe1, 0 },
+ { "strokelongoverlaycmb", 0x0336, 0 },
+ { "strokeshortoverlaycmb", 0x0335, 0 },
+ { "subset", 0x2282, 0 },
+ { "subsetnotequal", 0x228a, 0 },
+ { "subsetorequal", 0x2286, 0 },
+ { "succeeds", 0x227b, 0 },
+ { "suhiragana", 0x3059, 0 },
+ { "sukatakana", 0x30b9, 0 },
+ { "sukatakanahalfwidth", 0xff7d, 0 },
+ { "sukunarabic", 0x0652, 0 },
+ { "superset", 0x2283, 0 },
+ { "supersetnotequal", 0x228b, 0 },
+ { "supersetorequal", 0x2287, 0 },
+ { "svsquare", 0x33dc, 0 },
+ { "syouwaerasquare", 0x337c, 0 },
+ { "tabengali", 0x09a4, 0 },
+ { "tackdown", 0x22a4, 0 },
+ { "tackleft", 0x22a3, 0 },
+ { "tadeva", 0x0924, 0 },
+ { "tagujarati", 0x0aa4, 0 },
+ { "tagurmukhi", 0x0a24, 0 },
+ { "taharabic", 0x0637, 0 },
+ { "tahfinalarabic", 0xfec2, 0 },
+ { "tahinitialarabic", 0xfec3, 0 },
+ { "tahiragana", 0x305f, 0 },
+ { "tahmedialarabic", 0xfec4, 0 },
+ { "taisyouerasquare", 0x337d, 0 },
+ { "takatakana", 0x30bf, 0 },
+ { "takatakanahalfwidth", 0xff80, 0 },
+ { "tatweelarabic", 0x0640, 0 },
+ { "tav", 0x05ea, 0 },
+ { "tavdages", 0xfb4a, 0 },
+ { "tavdagesh", 0xfb4a, 0 },
+ { "tavdageshhebrew", 0xfb4a, 0 },
+ { "tavhebrew", 0x05ea, 0 },
+ { "tbopomofo", 0x310a, 0 },
+ { "tccurl", 0x02a8, 0 },
+ { "tcedilla", 0x0163, 0 },
+ { "tcheharabic", 0x0686, 0 },
+ { "tchehfinalarabic", 0xfb7b, 0 },
+ { "tchehinitialarabic", 0xfb7c, 0 },
+ { "tchehmedialarabic", 0xfb7d, 0 },
+ { "tchehmeeminitialarabic", 0xfb7c, 0 },
+ { "tcircle", 0x24e3, 0 },
+ { "tcircumflexbelow", 0x1e71, 0 },
+ { "tdieresis", 0x1e97, 0 },
+ { "tdotaccent", 0x1e6b, 0 },
+ { "tdotbelow", 0x1e6d, 0 },
+ { "tecyrillic", 0x0442, 0 },
+ { "tedescendercyrillic", 0x04ad, 0 },
+ { "teharabic", 0x062a, 0 },
+ { "tehfinalarabic", 0xfe96, 0 },
+ { "tehhahinitialarabic", 0xfca2, 0 },
+ { "tehhahisolatedarabic", 0xfc0c, 0 },
+ { "tehinitialarabic", 0xfe97, 0 },
+ { "tehiragana", 0x3066, 0 },
+ { "tehjeeminitialarabic", 0xfca1, 0 },
+ { "tehjeemisolatedarabic", 0xfc0b, 0 },
+ { "tehmarbutaarabic", 0x0629, 0 },
+ { "tehmarbutafinalarabic", 0xfe94, 0 },
+ { "tehmedialarabic", 0xfe98, 0 },
+ { "tehmeeminitialarabic", 0xfca4, 0 },
+ { "tehmeemisolatedarabic", 0xfc0e, 0 },
+ { "tehnoonfinalarabic", 0xfc73, 0 },
+ { "tekatakana", 0x30c6, 0 },
+ { "tekatakanahalfwidth", 0xff83, 0 },
+ { "telephone", 0x2121, 0 },
+ { "telephoneblack", 0x260e, 0 },
+ { "telishagedolahebrew", 0x05a0, 0 },
+ { "telishaqetanahebrew", 0x05a9, 0 },
+ { "tencircle", 0x2469, 0 },
+ { "tenideographicparen", 0x3229, 0 },
+ { "tenparen", 0x247d, 0 },
+ { "tenperiod", 0x2491, 0 },
+ { "tenroman", 0x2179, 0 },
+ { "tesh", 0x02a7, 0 },
+ { "tet", 0x05d8, 0 },
+ { "tetdagesh", 0xfb38, 0 },
+ { "tetdageshhebrew", 0xfb38, 0 },
+ { "tethebrew", 0x05d8, 0 },
+ { "tetsecyrillic", 0x04b5, 0 },
+ { "tevirhebrew", 0x059b, 0 },
+ { "tevirlefthebrew", 0x059b, 0 },
+ { "thabengali", 0x09a5, 0 },
+ { "thadeva", 0x0925, 0 },
+ { "thagujarati", 0x0aa5, 0 },
+ { "thagurmukhi", 0x0a25, 0 },
+ { "thalarabic", 0x0630, 0 },
+ { "thalfinalarabic", 0xfeac, 0 },
+ { "thanthakhatlowleftthai", 0xf898, 0 },
+ { "thanthakhatlowrightthai", 0xf897, 0 },
+ { "thanthakhatthai", 0x0e4c, 0 },
+ { "thanthakhatupperleftthai", 0xf896, 0 },
+ { "theharabic", 0x062b, 0 },
+ { "thehfinalarabic", 0xfe9a, 0 },
+ { "thehinitialarabic", 0xfe9b, 0 },
+ { "thehmedialarabic", 0xfe9c, 0 },
+ { "thereexists", 0x2203, 0 },
+ { "thetasymbolgreek", 0x03d1, 0 },
+ { "thieuthacirclekorean", 0x3279, 0 },
+ { "thieuthaparenkorean", 0x3219, 0 },
+ { "thieuthcirclekorean", 0x326b, 0 },
+ { "thieuthkorean", 0x314c, 0 },
+ { "thieuthparenkorean", 0x320b, 0 },
+ { "thirteencircle", 0x246c, 0 },
+ { "thirteenparen", 0x2480, 0 },
+ { "thirteenperiod", 0x2494, 0 },
+ { "thonangmonthothai", 0x0e11, 0 },
+ { "thook", 0x01ad, 0 },
+ { "thophuthaothai", 0x0e12, 0 },
+ { "thothahanthai", 0x0e17, 0 },
+ { "thothanthai", 0x0e10, 0 },
+ { "thothongthai", 0x0e18, 0 },
+ { "thothungthai", 0x0e16, 0 },
+ { "thousandcyrillic", 0x0482, 0 },
+ { "thousandsseparatorarabic", 0x066c, 0 },
+ { "thousandsseparatorpersian", 0x066c, 0 },
+ { "threearabic", 0x0663, 0 },
+ { "threebengali", 0x09e9, 0 },
+ { "threecircle", 0x2462, 0 },
+ { "threecircleinversesansserif", 0x278c, 0 },
+ { "threedeva", 0x0969, 0 },
+ { "threegujarati", 0x0ae9, 0 },
+ { "threegurmukhi", 0x0a69, 0 },
+ { "threehackarabic", 0x0663, 0 },
+ { "threehangzhou", 0x3023, 0 },
+ { "threeideographicparen", 0x3222, 0 },
+ { "threeinferior", 0x2083, 0 },
+ { "threemonospace", 0xff13, 0 },
+ { "threenumeratorbengali", 0x09f6, 0 },
+ { "threeoldstyle", 0xf733, 0 },
+ { "threeparen", 0x2476, 0 },
+ { "threeperiod", 0x248a, 0 },
+ { "threepersian", 0x06f3, 0 },
+ { "threequartersemdash", 0xf6de, 0 },
+ { "threeroman", 0x2172, 0 },
+ { "threesuperior", 0x00b3, 0 },
+ { "threethai", 0x0e53, 0 },
+ { "thzsquare", 0x3394, 0 },
+ { "tihiragana", 0x3061, 0 },
+ { "tikatakana", 0x30c1, 0 },
+ { "tikatakanahalfwidth", 0xff81, 0 },
+ { "tikeutacirclekorean", 0x3270, 0 },
+ { "tikeutaparenkorean", 0x3210, 0 },
+ { "tikeutcirclekorean", 0x3262, 0 },
+ { "tikeutkorean", 0x3137, 0 },
+ { "tikeutparenkorean", 0x3202, 0 },
+ { "tildebelowcmb", 0x0330, 0 },
+ { "tildecmb", 0x0303, 0 },
+ { "tildedoublecmb", 0x0360, 0 },
+ { "tildeoperator", 0x223c, 0 },
+ { "tildeoverlaycmb", 0x0334, 0 },
+ { "tildeverticalcmb", 0x033e, 0 },
+ { "timescircle", 0x2297, 0 },
+ { "tipehahebrew", 0x0596, 0 },
+ { "tipehalefthebrew", 0x0596, 0 },
+ { "tippigurmukhi", 0x0a70, 0 },
+ { "titlocyrilliccmb", 0x0483, 0 },
+ { "tiwnarmenian", 0x057f, 0 },
+ { "tlinebelow", 0x1e6f, 0 },
+ { "tmonospace", 0xff54, 0 },
+ { "toarmenian", 0x0569, 0 },
+ { "tohiragana", 0x3068, 0 },
+ { "tokatakana", 0x30c8, 0 },
+ { "tokatakanahalfwidth", 0xff84, 0 },
+ { "tonebarextrahighmod", 0x02e5, 0 },
+ { "tonebarextralowmod", 0x02e9, 0 },
+ { "tonebarhighmod", 0x02e6, 0 },
+ { "tonebarlowmod", 0x02e8, 0 },
+ { "tonebarmidmod", 0x02e7, 0 },
+ { "tonefive", 0x01bd, 0 },
+ { "tonesix", 0x0185, 0 },
+ { "tonetwo", 0x01a8, 0 },
+ { "tonsquare", 0x3327, 0 },
+ { "topatakthai", 0x0e0f, 0 },
+ { "tortoiseshellbracketleft", 0x3014, 0 },
+ { "tortoiseshellbracketleftsmall", 0xfe5d, 0 },
+ { "tortoiseshellbracketleftvertical", 0xfe39, 0 },
+ { "tortoiseshellbracketright", 0x3015, 0 },
+ { "tortoiseshellbracketrightsmall", 0xfe5e, 0 },
+ { "tortoiseshellbracketrightvertical", 0xfe3a, 0 },
+ { "totaothai", 0x0e15, 0 },
+ { "tpalatalhook", 0x01ab, 0 },
+ { "tparen", 0x24af, 0 },
+ { "trademarksans", 0xf8ea, 0 },
+ { "trademarkserif", 0xf6db, 0 },
+ { "tretroflexhook", 0x0288, 0 },
+ { "ts", 0x02a6, 0 },
+ { "tsadi", 0x05e6, 0 },
+ { "tsadidagesh", 0xfb46, 0 },
+ { "tsadidageshhebrew", 0xfb46, 0 },
+ { "tsadihebrew", 0x05e6, 0 },
+ { "tsecyrillic", 0x0446, 0 },
+ { "tsere", 0x05b5, 0 },
+ { "tsere12", 0x05b5, 0 },
+ { "tsere1e", 0x05b5, 0 },
+ { "tsere2b", 0x05b5, 0 },
+ { "tserehebrew", 0x05b5, 0 },
+ { "tserenarrowhebrew", 0x05b5, 0 },
+ { "tserequarterhebrew", 0x05b5, 0 },
+ { "tserewidehebrew", 0x05b5, 0 },
+ { "tshecyrillic", 0x045b, 0 },
+ { "tsuperior", 0xf6f3, 0 },
+ { "ttabengali", 0x099f, 0 },
+ { "ttadeva", 0x091f, 0 },
+ { "ttagujarati", 0x0a9f, 0 },
+ { "ttagurmukhi", 0x0a1f, 0 },
+ { "tteharabic", 0x0679, 0 },
+ { "ttehfinalarabic", 0xfb67, 0 },
+ { "ttehinitialarabic", 0xfb68, 0 },
+ { "ttehmedialarabic", 0xfb69, 0 },
+ { "tthabengali", 0x09a0, 0 },
+ { "tthadeva", 0x0920, 0 },
+ { "tthagujarati", 0x0aa0, 0 },
+ { "tthagurmukhi", 0x0a20, 0 },
+ { "tturned", 0x0287, 0 },
+ { "tuhiragana", 0x3064, 0 },
+ { "tukatakana", 0x30c4, 0 },
+ { "tukatakanahalfwidth", 0xff82, 0 },
+ { "tusmallhiragana", 0x3063, 0 },
+ { "tusmallkatakana", 0x30c3, 0 },
+ { "tusmallkatakanahalfwidth", 0xff6f, 0 },
+ { "twelvecircle", 0x246b, 0 },
+ { "twelveparen", 0x247f, 0 },
+ { "twelveperiod", 0x2493, 0 },
+ { "twelveroman", 0x217b, 0 },
+ { "twentycircle", 0x2473, 0 },
+ { "twentyhangzhou", 0x5344, 0 },
+ { "twentyparen", 0x2487, 0 },
+ { "twentyperiod", 0x249b, 0 },
+ { "twoarabic", 0x0662, 0 },
+ { "twobengali", 0x09e8, 0 },
+ { "twocircle", 0x2461, 0 },
+ { "twocircleinversesansserif", 0x278b, 0 },
+ { "twodeva", 0x0968, 0 },
+ { "twodotleader", 0x2025, 0 },
+ { "twodotleadervertical", 0xfe30, 0 },
+ { "twogujarati", 0x0ae8, 0 },
+ { "twogurmukhi", 0x0a68, 0 },
+ { "twohackarabic", 0x0662, 0 },
+ { "twohangzhou", 0x3022, 0 },
+ { "twoideographicparen", 0x3221, 0 },
+ { "twoinferior", 0x2082, 0 },
+ { "twomonospace", 0xff12, 0 },
+ { "twonumeratorbengali", 0x09f5, 0 },
+ { "twooldstyle", 0xf732, 0 },
+ { "twoparen", 0x2475, 0 },
+ { "twoperiod", 0x2489, 0 },
+ { "twopersian", 0x06f2, 0 },
+ { "tworoman", 0x2171, 0 },
+ { "twostroke", 0x01bb, 0 },
+ { "twosuperior", 0x00b2, 0 },
+ { "twothai", 0x0e52, 0 },
+ { "ubar", 0x0289, 0 },
+ { "ubengali", 0x0989, 0 },
+ { "ubopomofo", 0x3128, 0 },
+ { "ucaron", 0x01d4, 0 },
+ { "ucircle", 0x24e4, 0 },
+ { "ucircumflexbelow", 0x1e77, 0 },
+ { "ucyrillic", 0x0443, 0 },
+ { "udattadeva", 0x0951, 0 },
+ { "udblacute", 0x0171, 0 },
+ { "udblgrave", 0x0215, 0 },
+ { "udeva", 0x0909, 0 },
+ { "udieresisacute", 0x01d8, 0 },
+ { "udieresisbelow", 0x1e73, 0 },
+ { "udieresiscaron", 0x01da, 0 },
+ { "udieresiscyrillic", 0x04f1, 0 },
+ { "udieresisgrave", 0x01dc, 0 },
+ { "udieresismacron", 0x01d6, 0 },
+ { "udotbelow", 0x1ee5, 0 },
+ { "ugujarati", 0x0a89, 0 },
+ { "ugurmukhi", 0x0a09, 0 },
+ { "uhiragana", 0x3046, 0 },
+ { "uhookabove", 0x1ee7, 0 },
+ { "uhornacute", 0x1ee9, 0 },
+ { "uhorndotbelow", 0x1ef1, 0 },
+ { "uhorngrave", 0x1eeb, 0 },
+ { "uhornhookabove", 0x1eed, 0 },
+ { "uhorntilde", 0x1eef, 0 },
+ { "uhungarumlautcyrillic", 0x04f3, 0 },
+ { "uinvertedbreve", 0x0217, 0 },
+ { "ukatakana", 0x30a6, 0 },
+ { "ukatakanahalfwidth", 0xff73, 0 },
+ { "ukcyrillic", 0x0479, 0 },
+ { "ukorean", 0x315c, 0 },
+ { "umacroncyrillic", 0x04ef, 0 },
+ { "umacrondieresis", 0x1e7b, 0 },
+ { "umatragurmukhi", 0x0a41, 0 },
+ { "umonospace", 0xff55, 0 },
+ { "underscoremonospace", 0xff3f, 0 },
+ { "underscorevertical", 0xfe33, 0 },
+ { "underscorewavy", 0xfe4f, 0 },
+ { "uparen", 0x24b0, 0 },
+ { "upperdothebrew", 0x05c4, 0 },
+ { "upsilonlatin", 0x028a, 0 },
+ { "uptackbelowcmb", 0x031d, 0 },
+ { "uptackmod", 0x02d4, 0 },
+ { "uragurmukhi", 0x0a73, 0 },
+ { "ushortcyrillic", 0x045e, 0 },
+ { "usmallhiragana", 0x3045, 0 },
+ { "usmallkatakana", 0x30a5, 0 },
+ { "usmallkatakanahalfwidth", 0xff69, 0 },
+ { "ustraightcyrillic", 0x04af, 0 },
+ { "ustraightstrokecyrillic", 0x04b1, 0 },
+ { "utildeacute", 0x1e79, 0 },
+ { "utildebelow", 0x1e75, 0 },
+ { "uubengali", 0x098a, 0 },
+ { "uudeva", 0x090a, 0 },
+ { "uugujarati", 0x0a8a, 0 },
+ { "uugurmukhi", 0x0a0a, 0 },
+ { "uumatragurmukhi", 0x0a42, 0 },
+ { "uuvowelsignbengali", 0x09c2, 0 },
+ { "uuvowelsigndeva", 0x0942, 0 },
+ { "uuvowelsigngujarati", 0x0ac2, 0 },
+ { "uvowelsignbengali", 0x09c1, 0 },
+ { "uvowelsigndeva", 0x0941, 0 },
+ { "uvowelsigngujarati", 0x0ac1, 0 },
+ { "vadeva", 0x0935, 0 },
+ { "vagujarati", 0x0ab5, 0 },
+ { "vagurmukhi", 0x0a35, 0 },
+ { "vakatakana", 0x30f7, 0 },
+ { "vav", 0x05d5, 0 },
+ { "vavdagesh", 0xfb35, 0 },
+ { "vavdagesh65", 0xfb35, 0 },
+ { "vavdageshhebrew", 0xfb35, 0 },
+ { "vavhebrew", 0x05d5, 0 },
+ { "vavholam", 0xfb4b, 0 },
+ { "vavholamhebrew", 0xfb4b, 0 },
+ { "vavvavhebrew", 0x05f0, 0 },
+ { "vavyodhebrew", 0x05f1, 0 },
+ { "vcircle", 0x24e5, 0 },
+ { "vdotbelow", 0x1e7f, 0 },
+ { "vecyrillic", 0x0432, 0 },
+ { "veharabic", 0x06a4, 0 },
+ { "vehfinalarabic", 0xfb6b, 0 },
+ { "vehinitialarabic", 0xfb6c, 0 },
+ { "vehmedialarabic", 0xfb6d, 0 },
+ { "vekatakana", 0x30f9, 0 },
+ { "venus", 0x2640, 0 },
+ { "verticalbar", 0x007c, 0 },
+ { "verticallineabovecmb", 0x030d, 0 },
+ { "verticallinebelowcmb", 0x0329, 0 },
+ { "verticallinelowmod", 0x02cc, 0 },
+ { "verticallinemod", 0x02c8, 0 },
+ { "vewarmenian", 0x057e, 0 },
+ { "vhook", 0x028b, 0 },
+ { "vikatakana", 0x30f8, 0 },
+ { "viramabengali", 0x09cd, 0 },
+ { "viramadeva", 0x094d, 0 },
+ { "viramagujarati", 0x0acd, 0 },
+ { "visargabengali", 0x0983, 0 },
+ { "visargadeva", 0x0903, 0 },
+ { "visargagujarati", 0x0a83, 0 },
+ { "vmonospace", 0xff56, 0 },
+ { "voarmenian", 0x0578, 0 },
+ { "voicediterationhiragana", 0x309e, 0 },
+ { "voicediterationkatakana", 0x30fe, 0 },
+ { "voicedmarkkana", 0x309b, 0 },
+ { "voicedmarkkanahalfwidth", 0xff9e, 0 },
+ { "vokatakana", 0x30fa, 0 },
+ { "vparen", 0x24b1, 0 },
+ { "vtilde", 0x1e7d, 0 },
+ { "vturned", 0x028c, 0 },
+ { "vuhiragana", 0x3094, 0 },
+ { "vukatakana", 0x30f4, 0 },
+ { "waekorean", 0x3159, 0 },
+ { "wahiragana", 0x308f, 0 },
+ { "wakatakana", 0x30ef, 0 },
+ { "wakatakanahalfwidth", 0xff9c, 0 },
+ { "wakorean", 0x3158, 0 },
+ { "wasmallhiragana", 0x308e, 0 },
+ { "wasmallkatakana", 0x30ee, 0 },
+ { "wattosquare", 0x3357, 0 },
+ { "wavedash", 0x301c, 0 },
+ { "wavyunderscorevertical", 0xfe34, 0 },
+ { "wawarabic", 0x0648, 0 },
+ { "wawfinalarabic", 0xfeee, 0 },
+ { "wawhamzaabovearabic", 0x0624, 0 },
+ { "wawhamzaabovefinalarabic", 0xfe86, 0 },
+ { "wbsquare", 0x33dd, 0 },
+ { "wcircle", 0x24e6, 0 },
+ { "wdotaccent", 0x1e87, 0 },
+ { "wdotbelow", 0x1e89, 0 },
+ { "wehiragana", 0x3091, 0 },
+ { "wekatakana", 0x30f1, 0 },
+ { "wekorean", 0x315e, 0 },
+ { "weokorean", 0x315d, 0 },
+ { "whitebullet", 0x25e6, 0 },
+ { "whitecircle", 0x25cb, 0 },
+ { "whitecircleinverse", 0x25d9, 0 },
+ { "whitecornerbracketleft", 0x300e, 0 },
+ { "whitecornerbracketleftvertical", 0xfe43, 0 },
+ { "whitecornerbracketright", 0x300f, 0 },
+ { "whitecornerbracketrightvertical", 0xfe44, 0 },
+ { "whitediamond", 0x25c7, 0 },
+ { "whitediamondcontainingblacksmalldiamond", 0x25c8, 0 },
+ { "whitedownpointingsmalltriangle", 0x25bf, 0 },
+ { "whitedownpointingtriangle", 0x25bd, 0 },
+ { "whiteleftpointingsmalltriangle", 0x25c3, 0 },
+ { "whiteleftpointingtriangle", 0x25c1, 0 },
+ { "whitelenticularbracketleft", 0x3016, 0 },
+ { "whitelenticularbracketright", 0x3017, 0 },
+ { "whiterightpointingsmalltriangle", 0x25b9, 0 },
+ { "whiterightpointingtriangle", 0x25b7, 0 },
+ { "whitesmallsquare", 0x25ab, 0 },
+ { "whitesmilingface", 0x263a, 0 },
+ { "whitesquare", 0x25a1, 0 },
+ { "whitestar", 0x2606, 0 },
+ { "whitetelephone", 0x260f, 0 },
+ { "whitetortoiseshellbracketleft", 0x3018, 0 },
+ { "whitetortoiseshellbracketright", 0x3019, 0 },
+ { "whiteuppointingsmalltriangle", 0x25b5, 0 },
+ { "whiteuppointingtriangle", 0x25b3, 0 },
+ { "wihiragana", 0x3090, 0 },
+ { "wikatakana", 0x30f0, 0 },
+ { "wikorean", 0x315f, 0 },
+ { "wmonospace", 0xff57, 0 },
+ { "wohiragana", 0x3092, 0 },
+ { "wokatakana", 0x30f2, 0 },
+ { "wokatakanahalfwidth", 0xff66, 0 },
+ { "won", 0x20a9, 0 },
+ { "wonmonospace", 0xffe6, 0 },
+ { "wowaenthai", 0x0e27, 0 },
+ { "wparen", 0x24b2, 0 },
+ { "wring", 0x1e98, 0 },
+ { "wsuperior", 0x02b7, 0 },
+ { "wturned", 0x028d, 0 },
+ { "wynn", 0x01bf, 0 },
+ { "xabovecmb", 0x033d, 0 },
+ { "xbopomofo", 0x3112, 0 },
+ { "xcircle", 0x24e7, 0 },
+ { "xdieresis", 0x1e8d, 0 },
+ { "xdotaccent", 0x1e8b, 0 },
+ { "xeharmenian", 0x056d, 0 },
+ { "xmonospace", 0xff58, 0 },
+ { "xparen", 0x24b3, 0 },
+ { "xsuperior", 0x02e3, 0 },
+ { "yaadosquare", 0x334e, 0 },
+ { "yabengali", 0x09af, 0 },
+ { "yadeva", 0x092f, 0 },
+ { "yaekorean", 0x3152, 0 },
+ { "yagujarati", 0x0aaf, 0 },
+ { "yagurmukhi", 0x0a2f, 0 },
+ { "yahiragana", 0x3084, 0 },
+ { "yakatakana", 0x30e4, 0 },
+ { "yakatakanahalfwidth", 0xff94, 0 },
+ { "yakorean", 0x3151, 0 },
+ { "yamakkanthai", 0x0e4e, 0 },
+ { "yasmallhiragana", 0x3083, 0 },
+ { "yasmallkatakana", 0x30e3, 0 },
+ { "yasmallkatakanahalfwidth", 0xff6c, 0 },
+ { "yatcyrillic", 0x0463, 0 },
+ { "ycircle", 0x24e8, 0 },
+ { "ydotaccent", 0x1e8f, 0 },
+ { "ydotbelow", 0x1ef5, 0 },
+ { "yeharabic", 0x064a, 0 },
+ { "yehbarreearabic", 0x06d2, 0 },
+ { "yehbarreefinalarabic", 0xfbaf, 0 },
+ { "yehfinalarabic", 0xfef2, 0 },
+ { "yehhamzaabovearabic", 0x0626, 0 },
+ { "yehhamzaabovefinalarabic", 0xfe8a, 0 },
+ { "yehhamzaaboveinitialarabic", 0xfe8b, 0 },
+ { "yehhamzaabovemedialarabic", 0xfe8c, 0 },
+ { "yehinitialarabic", 0xfef3, 0 },
+ { "yehmedialarabic", 0xfef4, 0 },
+ { "yehmeeminitialarabic", 0xfcdd, 0 },
+ { "yehmeemisolatedarabic", 0xfc58, 0 },
+ { "yehnoonfinalarabic", 0xfc94, 0 },
+ { "yehthreedotsbelowarabic", 0x06d1, 0 },
+ { "yekorean", 0x3156, 0 },
+ { "yenmonospace", 0xffe5, 0 },
+ { "yeokorean", 0x3155, 0 },
+ { "yeorinhieuhkorean", 0x3186, 0 },
+ { "yerahbenyomohebrew", 0x05aa, 0 },
+ { "yerahbenyomolefthebrew", 0x05aa, 0 },
+ { "yericyrillic", 0x044b, 0 },
+ { "yerudieresiscyrillic", 0x04f9, 0 },
+ { "yesieungkorean", 0x3181, 0 },
+ { "yesieungpansioskorean", 0x3183, 0 },
+ { "yesieungsioskorean", 0x3182, 0 },
+ { "yetivhebrew", 0x059a, 0 },
+ { "yhook", 0x01b4, 0 },
+ { "yhookabove", 0x1ef7, 0 },
+ { "yiarmenian", 0x0575, 0 },
+ { "yicyrillic", 0x0457, 0 },
+ { "yikorean", 0x3162, 0 },
+ { "yinyang", 0x262f, 0 },
+ { "yiwnarmenian", 0x0582, 0 },
+ { "ymonospace", 0xff59, 0 },
+ { "yod", 0x05d9, 0 },
+ { "yoddagesh", 0xfb39, 0 },
+ { "yoddageshhebrew", 0xfb39, 0 },
+ { "yodhebrew", 0x05d9, 0 },
+ { "yodyodhebrew", 0x05f2, 0 },
+ { "yodyodpatahhebrew", 0xfb1f, 0 },
+ { "yohiragana", 0x3088, 0 },
+ { "yoikorean", 0x3189, 0 },
+ { "yokatakana", 0x30e8, 0 },
+ { "yokatakanahalfwidth", 0xff96, 0 },
+ { "yokorean", 0x315b, 0 },
+ { "yosmallhiragana", 0x3087, 0 },
+ { "yosmallkatakana", 0x30e7, 0 },
+ { "yosmallkatakanahalfwidth", 0xff6e, 0 },
+ { "yotgreek", 0x03f3, 0 },
+ { "yoyaekorean", 0x3188, 0 },
+ { "yoyakorean", 0x3187, 0 },
+ { "yoyakthai", 0x0e22, 0 },
+ { "yoyingthai", 0x0e0d, 0 },
+ { "yparen", 0x24b4, 0 },
+ { "ypogegrammeni", 0x037a, 0 },
+ { "ypogegrammenigreekcmb", 0x0345, 0 },
+ { "yr", 0x01a6, 0 },
+ { "yring", 0x1e99, 0 },
+ { "ysuperior", 0x02b8, 0 },
+ { "ytilde", 0x1ef9, 0 },
+ { "yturned", 0x028e, 0 },
+ { "yuhiragana", 0x3086, 0 },
+ { "yuikorean", 0x318c, 0 },
+ { "yukatakana", 0x30e6, 0 },
+ { "yukatakanahalfwidth", 0xff95, 0 },
+ { "yukorean", 0x3160, 0 },
+ { "yusbigcyrillic", 0x046b, 0 },
+ { "yusbigiotifiedcyrillic", 0x046d, 0 },
+ { "yuslittlecyrillic", 0x0467, 0 },
+ { "yuslittleiotifiedcyrillic", 0x0469, 0 },
+ { "yusmallhiragana", 0x3085, 0 },
+ { "yusmallkatakana", 0x30e5, 0 },
+ { "yusmallkatakanahalfwidth", 0xff6d, 0 },
+ { "yuyekorean", 0x318b, 0 },
+ { "yuyeokorean", 0x318a, 0 },
+ { "yyabengali", 0x09df, 0 },
+ { "yyadeva", 0x095f, 0 },
+ { "zaarmenian", 0x0566, 0 },
+ { "zadeva", 0x095b, 0 },
+ { "zagurmukhi", 0x0a5b, 0 },
+ { "zaharabic", 0x0638, 0 },
+ { "zahfinalarabic", 0xfec6, 0 },
+ { "zahinitialarabic", 0xfec7, 0 },
+ { "zahiragana", 0x3056, 0 },
+ { "zahmedialarabic", 0xfec8, 0 },
+ { "zainarabic", 0x0632, 0 },
+ { "zainfinalarabic", 0xfeb0, 0 },
+ { "zakatakana", 0x30b6, 0 },
+ { "zaqefgadolhebrew", 0x0595, 0 },
+ { "zaqefqatanhebrew", 0x0594, 0 },
+ { "zarqahebrew", 0x0598, 0 },
+ { "zayin", 0x05d6, 0 },
+ { "zayindagesh", 0xfb36, 0 },
+ { "zayindageshhebrew", 0xfb36, 0 },
+ { "zayinhebrew", 0x05d6, 0 },
+ { "zbopomofo", 0x3117, 0 },
+ { "zcircle", 0x24e9, 0 },
+ { "zcircumflex", 0x1e91, 0 },
+ { "zcurl", 0x0291, 0 },
+ { "zdot", 0x017c, 0 },
+ { "zdotbelow", 0x1e93, 0 },
+ { "zecyrillic", 0x0437, 0 },
+ { "zedescendercyrillic", 0x0499, 0 },
+ { "zedieresiscyrillic", 0x04df, 0 },
+ { "zehiragana", 0x305c, 0 },
+ { "zekatakana", 0x30bc, 0 },
+ { "zeroarabic", 0x0660, 0 },
+ { "zerobengali", 0x09e6, 0 },
+ { "zerodeva", 0x0966, 0 },
+ { "zerogujarati", 0x0ae6, 0 },
+ { "zerogurmukhi", 0x0a66, 0 },
+ { "zerohackarabic", 0x0660, 0 },
+ { "zeroinferior", 0x2080, 0 },
+ { "zeromonospace", 0xff10, 0 },
+ { "zerooldstyle", 0xf730, 0 },
+ { "zeropersian", 0x06f0, 0 },
+ { "zerosuperior", 0x2070, 0 },
+ { "zerothai", 0x0e50, 0 },
+ { "zerowidthjoiner", 0xfeff, 0 },
+ { "zerowidthnonjoiner", 0x200c, 0 },
+ { "zerowidthspace", 0x200b, 0 },
+ { "zhbopomofo", 0x3113, 0 },
+ { "zhearmenian", 0x056a, 0 },
+ { "zhebrevecyrillic", 0x04c2, 0 },
+ { "zhecyrillic", 0x0436, 0 },
+ { "zhedescendercyrillic", 0x0497, 0 },
+ { "zhedieresiscyrillic", 0x04dd, 0 },
+ { "zihiragana", 0x3058, 0 },
+ { "zikatakana", 0x30b8, 0 },
+ { "zinorhebrew", 0x05ae, 0 },
+ { "zlinebelow", 0x1e95, 0 },
+ { "zmonospace", 0xff5a, 0 },
+ { "zohiragana", 0x305e, 0 },
+ { "zokatakana", 0x30be, 0 },
+ { "zparen", 0x24b5, 0 },
+ { "zretroflexhook", 0x0290, 0 },
+ { "zstroke", 0x01b6, 0 },
+ { "zuhiragana", 0x305a, 0 },
+ { "zukatakana", 0x30ba, 0 },
+ { "dotaccent.cap", 0xefed, 0 },
+ { "breve.cap", 0xefee, 0 },
+ { "ogonek.cap", 0xeff1, 0 },
+ { "cedilla.cap", 0xeff2, 0 },
+ { "ring.cap", 0xeff3, 0 },
+ { "tilde.cap", 0xeff5, 0 },
+ { "circumflex.cap", 0xeff7, 0 },
+ { "a1", 0x2701, 0 },
+ { "a2", 0x2702, 0 },
+ { "a202", 0x2703, 0 },
+ { "a3", 0x2704, 0 },
+ { "a4", 0x260e, 0 },
+ { "a5", 0x2706, 0 },
+ { "a119", 0x2707, 0 },
+ { "a118", 0x2708, 0 },
+ { "a117", 0x2709, 0 },
+ { "a11", 0x261b, 0 },
+ { "a12", 0x261e, 0 },
+ { "a13", 0x270c, 0 },
+ { "a14", 0x270d, 0 },
+ { "a15", 0x270e, 0 },
+ { "a16", 0x270f, 0 },
+ { "a105", 0x2710, 0 },
+ { "a17", 0x2711, 0 },
+ { "a18", 0x2712, 0 },
+ { "a19", 0x2713, 0 },
+ { "a20", 0x2714, 0 },
+ { "a21", 0x2715, 0 },
+ { "a22", 0x2716, 0 },
+ { "a23", 0x2717, 0 },
+ { "a24", 0x2718, 0 },
+ { "a25", 0x2719, 0 },
+ { "a26", 0x271a, 0 },
+ { "a27", 0x271b, 0 },
+ { "a28", 0x271c, 0 },
+ { "a6", 0x271d, 0 },
+ { "a7", 0x271e, 0 },
+ { "a8", 0x271f, 0 },
+ { "a9", 0x2720, 0 },
+ { "a10", 0x2721, 0 },
+ { "a29", 0x2722, 0 },
+ { "a30", 0x2723, 0 },
+ { "a31", 0x2724, 0 },
+ { "a32", 0x2725, 0 },
+ { "a33", 0x2726, 0 },
+ { "a34", 0x2727, 0 },
+ { "a35", 0x2605, 0 },
+ { "a36", 0x2729, 0 },
+ { "a37", 0x272a, 0 },
+ { "a38", 0x272b, 0 },
+ { "a39", 0x272c, 0 },
+ { "a40", 0x272d, 0 },
+ { "a41", 0x272e, 0 },
+ { "a42", 0x272f, 0 },
+ { "a43", 0x2730, 0 },
+ { "a44", 0x2731, 0 },
+ { "a45", 0x2732, 0 },
+ { "a46", 0x2733, 0 },
+ { "a47", 0x2734, 0 },
+ { "a48", 0x2735, 0 },
+ { "a49", 0x2736, 0 },
+ { "a50", 0x2737, 0 },
+ { "a51", 0x2738, 0 },
+ { "a52", 0x2739, 0 },
+ { "a53", 0x273a, 0 },
+ { "a54", 0x273b, 0 },
+ { "a55", 0x273c, 0 },
+ { "a56", 0x273d, 0 },
+ { "a57", 0x273e, 0 },
+ { "a58", 0x273f, 0 },
+ { "a59", 0x2740, 0 },
+ { "a60", 0x2741, 0 },
+ { "a61", 0x2742, 0 },
+ { "a62", 0x2743, 0 },
+ { "a63", 0x2744, 0 },
+ { "a64", 0x2745, 0 },
+ { "a65", 0x2746, 0 },
+ { "a66", 0x2747, 0 },
+ { "a67", 0x2748, 0 },
+ { "a68", 0x2749, 0 },
+ { "a69", 0x274a, 0 },
+ { "a70", 0x274b, 0 },
+ { "a71", 0x25cf, 0 },
+ { "a72", 0x274d, 0 },
+ { "a73", 0x25a0, 0 },
+ { "a74", 0x274f, 0 },
+ { "a203", 0x2750, 0 },
+ { "a75", 0x2751, 0 },
+ { "a204", 0x2752, 0 },
+ { "a76", 0x25b2, 0 },
+ { "a77", 0x25bc, 0 },
+ { "a78", 0x25c6, 0 },
+ { "a79", 0x2756, 0 },
+ { "a81", 0x25d7, 0 },
+ { "a82", 0x2758, 0 },
+ { "a83", 0x2759, 0 },
+ { "a84", 0x275a, 0 },
+ { "a97", 0x275b, 0 },
+ { "a98", 0x275c, 0 },
+ { "a99", 0x275d, 0 },
+ { "a100", 0x275e, 0 },
+ { "a89", 0x2768, 0 },
+ { "a90", 0x2769, 0 },
+ { "a93", 0x276a, 0 },
+ { "a94", 0x276b, 0 },
+ { "a91", 0x276c, 0 },
+ { "a92", 0x276d, 0 },
+ { "a205", 0x276e, 0 },
+ { "a85", 0x276f, 0 },
+ { "a206", 0x2770, 0 },
+ { "a86", 0x2771, 0 },
+ { "a87", 0x2772, 0 },
+ { "a88", 0x2773, 0 },
+ { "a95", 0x2774, 0 },
+ { "a96", 0x2775, 0 },
+ { "a101", 0x2761, 0 },
+ { "a102", 0x2762, 0 },
+ { "a103", 0x2763, 0 },
+ { "a104", 0x2764, 0 },
+ { "a106", 0x2765, 0 },
+ { "a107", 0x2766, 0 },
+ { "a108", 0x2767, 0 },
+ { "a112", 0x2663, 0 },
+ { "a111", 0x2666, 0 },
+ { "a110", 0x2665, 0 },
+ { "a109", 0x2660, 0 },
+ { "a120", 0x2460, 0 },
+ { "a121", 0x2461, 0 },
+ { "a122", 0x2462, 0 },
+ { "a123", 0x2463, 0 },
+ { "a124", 0x2464, 0 },
+ { "a125", 0x2465, 0 },
+ { "a126", 0x2466, 0 },
+ { "a127", 0x2467, 0 },
+ { "a128", 0x2468, 0 },
+ { "a129", 0x2469, 0 },
+ { "a130", 0x2776, 0 },
+ { "a131", 0x2777, 0 },
+ { "a132", 0x2778, 0 },
+ { "a133", 0x2779, 0 },
+ { "a134", 0x277a, 0 },
+ { "a135", 0x277b, 0 },
+ { "a136", 0x277c, 0 },
+ { "a137", 0x277d, 0 },
+ { "a138", 0x277e, 0 },
+ { "a139", 0x277f, 0 },
+ { "a140", 0x2780, 0 },
+ { "a141", 0x2781, 0 },
+ { "a142", 0x2782, 0 },
+ { "a143", 0x2783, 0 },
+ { "a144", 0x2784, 0 },
+ { "a145", 0x2785, 0 },
+ { "a146", 0x2786, 0 },
+ { "a147", 0x2787, 0 },
+ { "a148", 0x2788, 0 },
+ { "a149", 0x2789, 0 },
+ { "a150", 0x278a, 0 },
+ { "a151", 0x278b, 0 },
+ { "a152", 0x278c, 0 },
+ { "a153", 0x278d, 0 },
+ { "a154", 0x278e, 0 },
+ { "a155", 0x278f, 0 },
+ { "a156", 0x2790, 0 },
+ { "a157", 0x2791, 0 },
+ { "a158", 0x2792, 0 },
+ { "a159", 0x2793, 0 },
+ { "a160", 0x2794, 0 },
+ { "a161", 0x2192, 0 },
+ { "a163", 0x2194, 0 },
+ { "a164", 0x2195, 0 },
+ { "a196", 0x2798, 0 },
+ { "a165", 0x2799, 0 },
+ { "a192", 0x279a, 0 },
+ { "a166", 0x279b, 0 },
+ { "a167", 0x279c, 0 },
+ { "a168", 0x279d, 0 },
+ { "a169", 0x279e, 0 },
+ { "a170", 0x279f, 0 },
+ { "a171", 0x27a0, 0 },
+ { "a172", 0x27a1, 0 },
+ { "a173", 0x27a2, 0 },
+ { "a162", 0x27a3, 0 },
+ { "a174", 0x27a4, 0 },
+ { "a175", 0x27a5, 0 },
+ { "a176", 0x27a6, 0 },
+ { "a177", 0x27a7, 0 },
+ { "a178", 0x27a8, 0 },
+ { "a179", 0x27a9, 0 },
+ { "a193", 0x27aa, 0 },
+ { "a180", 0x27ab, 0 },
+ { "a199", 0x27ac, 0 },
+ { "a181", 0x27ad, 0 },
+ { "a200", 0x27ae, 0 },
+ { "a182", 0x27af, 0 },
+ { "a201", 0x27b1, 0 },
+ { "a183", 0x27b2, 0 },
+ { "a184", 0x27b3, 0 },
+ { "a197", 0x27b4, 0 },
+ { "a185", 0x27b5, 0 },
+ { "a194", 0x27b6, 0 },
+ { "a198", 0x27b7, 0 },
+ { "a186", 0x27b8, 0 },
+ { "a195", 0x27b9, 0 },
+ { "a187", 0x27ba, 0 },
+ { "a188", 0x27bb, 0 },
+ { "a189", 0x27bc, 0 },
+ { "a190", 0x27bd, 0 },
+ { "a191", 0x27be, 0 },
+ { "register.sans", 0xf8e8, 0 },
+ { "register.serif", 0xf6da, 0 },
+ { "one.superior", 0x00b9, 0 },
+ { "two.superior", 0x00b2, 0 },
+ { "three.superior", 0x00b3, 0 },
+ { "parenleft.superior", 0x207d, 0 },
+ { "parenright.superior", 0x207e, 0 },
+ { "n.superior", 0x207f, 0 },
+ { "parenleft.inferior", 0x208d, 0 },
+ { "parenright.inferior", 0x208e, 0 },
+ { "zero.superior", 0x2070, 0 },
+ { "four.superior", 0x2074, 0 },
+ { "five.superior", 0x2075, 0 },
+ { "six.superior", 0x2076, 0 },
+ { "seven.superior", 0x2077, 0 },
+ { "eight.superior", 0x2078, 0 },
+ { "nine.superior", 0x2079, 0 },
+ { "zero.inferior", 0x2080, 0 },
+ { "one.inferior", 0x2081, 0 },
+ { "two.inferior", 0x2082, 0 },
+ { "three.inferior", 0x2083, 0 },
+ { "four.inferior", 0x2084, 0 },
+ { "five.inferior", 0x2085, 0 },
+ { "six.inferior", 0x2086, 0 },
+ { "seven.inferior", 0x2087, 0 },
+ { "eight.inferior", 0x2088, 0 },
+ { "nine.inferior", 0x2089, 0 },
+ { "mu.greek", 0x03bc, 0 },
+ { "Delta.greek", 0x0394, 0 },
+ { "Omega.greek", 0x03a9, 0 },
+ { "sigma.end", 0x03c2, 0 },
+ { "beta.alt", 0x03d0, 0 },
+ { "kappa.alt", 0x03f0, 0 },
+ { "theta.alt", 0x03d1, 0 },
+ { "Upsilon.alt", 0x03d2, 0 },
+ { "phi.alt", 0x03d5, 0 },
+ { "pi.alt", 0x03d6, 0 },
+ { "A.cyr", 0x0410, 0 },
+ { "Ghe.up", 0x0490, 0 },
+ { "I.cyr", 0x0418, 0 },
+ { "I.short", 0x0419, 0 },
+ { "O.cyr", 0x041e, 0 },
+ { "U.cyr", 0x0423, 0 },
+ { "E.cyr", 0x042d, 0 },
+ { "Ie.ukran", 0x0404, 0 },
+ { "I.ukran", 0x0406, 0 },
+ { "U.short", 0x040e, 0 },
+ { "a.cyr", 0x0430, 0 },
+ { "ghe.up", 0x0491, 0 },
+ { "i.cyr", 0x0438, 0 },
+ { "i.short", 0x0439, 0 },
+ { "o.cyr", 0x043e, 0 },
+ { "u.cyr", 0x0443, 0 },
+ { "e.cyr", 0x044d, 0 },
+ { "ie.ukran", 0x0454, 0 },
+ { "i.ukran", 0x0456, 0 },
+ { "u.short", 0x045e, 0 },
+ { "ghe.ital", 0xf6c4, 0 },
+ { "afii10068.ital", 0xf6c4, 0 },
+ { "afii10066.ital", 0xf6c5, 0 },
+ { "be.alt", 0xf6c5, 0 },
+ { "afii10069.ital", 0xf6c6, 0 },
+ { "de.ital", 0xf6c6, 0 },
+ { "afii10081.ital", 0xf6c7, 0 },
+ { "pe.ital", 0xf6c7, 0 },
+ { "afii10084.ital", 0xf6c8, 0 },
+ { "te.ital", 0xf6c8, 0 },
+ { "Omega.math", 0x2126, 0 },
+ { "Delta.math", 0x2206, 0 },
+ { "afii57689_afii57804", 0xfb2a, 0 },
+ { "afii57689_afii57803", 0xfb2b, 0 },
+ { "afii57669_afii57806", 0xfb4b, 0 },
+ { "afii57718_afii57798", 0xfb1f, 0 },
+ { "afii57669_afii57807", 0xfb35, 0 },
+ { ".null", 0x0000, 0 },
+ { "dialytika_perispomeni", 0x1fc1, 0 },
+ { "psili_varia", 0x1fcd, 0 },
+ { "psili_oxia", 0x1fce, 0 },
+ { "psili_perispomeni", 0x1fcf, 0 },
+ { "dasia_varia", 0x1fdd, 0 },
+ { "dasia_oxia", 0x1fde, 0 },
+ { "dasia_perispomeni", 0x1fdf, 0 },
+ { "dialytika_varia", 0x1fed, 0 },
+ { "dialytika_oxia", 0x1fee, 0 },
+ { "Alphaacute", 0x1fbb, 0 },
+ { "Alphaasper", 0x1f09, 0 },
+ { "Alphaasperacute", 0x1f0d, 0 },
+ { "Alphaaspergrave", 0x1f0b, 0 },
+ { "Alphaaspertilde", 0x1f0f, 0 },
+ { "Alphabreve", 0x1fb8, 0 },
+ { "Alphagrave", 0x1fba, 0 },
+ { "Alphaiotasub", 0x1fbc, 0 },
+ { "Alphaiotasubasper", 0x1f89, 0 },
+ { "Alphaiotasubasperacute", 0x1f8d, 0 },
+ { "Alphaiotasubaspergrave", 0x1f8b, 0 },
+ { "Alphaiotasubaspertilde", 0x1f8f, 0 },
+ { "Alphaiotasublenis", 0x1f88, 0 },
+ { "Alphaiotasublenisacute", 0x1f8c, 0 },
+ { "Alphaiotasublenisgrave", 0x1f8a, 0 },
+ { "Alphaiotasublenistilde", 0x1f8e, 0 },
+ { "Alphalenis", 0x1f08, 0 },
+ { "Alphalenisacute", 0x1f0c, 0 },
+ { "Alphalenisgrave", 0x1f0a, 0 },
+ { "Alphalenistilde", 0x1f0e, 0 },
+ { "Alphamacron", 0x1fb9, 0 },
+ { "Epsilonacute", 0x1fc9, 0 },
+ { "Epsilonasper", 0x1f19, 0 },
+ { "Epsilonasperacute", 0x1f1d, 0 },
+ { "Epsilonaspergrave", 0x1f1b, 0 },
+ { "Epsilongrave", 0x1fc8, 0 },
+ { "Epsilonlenis", 0x1f18, 0 },
+ { "Epsilonlenisacute", 0x1f1c, 0 },
+ { "Epsilonlenisgrave", 0x1f1a, 0 },
+ { "Etaacute", 0x1fcb, 0 },
+ { "Etaasper", 0x1f29, 0 },
+ { "Etaasperacute", 0x1f2d, 0 },
+ { "Etaaspergrave", 0x1f2b, 0 },
+ { "Etaaspertilde", 0x1f2f, 0 },
+ { "Etagrave", 0x1fca, 0 },
+ { "Etaiotasub", 0x1fcc, 0 },
+ { "Etaiotasubasper", 0x1f99, 0 },
+ { "Etaiotasubasperacute", 0x1f9d, 0 },
+ { "Etaiotasubaspergrave", 0x1f9b, 0 },
+ { "Etaiotasubaspertilde", 0x1f9f, 0 },
+ { "Etaiotasublenis", 0x1f98, 0 },
+ { "Etaiotasublenisacute", 0x1f9c, 0 },
+ { "Etaiotasublenisgrave", 0x1f9a, 0 },
+ { "Etaiotasublenistilde", 0x1f9e, 0 },
+ { "Etalenis", 0x1f28, 0 },
+ { "Etalenisacute", 0x1f2c, 0 },
+ { "Etalenisgrave", 0x1f2a, 0 },
+ { "Etalenistilde", 0x1f2e, 0 },
+ { "Iotaacute", 0x1fdb, 0 },
+ { "Iotaasper", 0x1f39, 0 },
+ { "Iotaasperacute", 0x1f3d, 0 },
+ { "Iotaaspergrave", 0x1f3b, 0 },
+ { "Iotaaspertilde", 0x1f3f, 0 },
+ { "Iotabreve", 0x1fd8, 0 },
+ { "Iotagrave", 0x1fda, 0 },
+ { "Iotalenis", 0x1f38, 0 },
+ { "Iotalenisacute", 0x1f3c, 0 },
+ { "Iotalenisgrave", 0x1f3a, 0 },
+ { "Iotalenistilde", 0x1f3e, 0 },
+ { "Iotamacron", 0x1fd9, 0 },
+ { "Omegaacute", 0x1ffb, 0 },
+ { "Omegaasper", 0x1f69, 0 },
+ { "Omegaasperacute", 0x1f6d, 0 },
+ { "Omegaaspergrave", 0x1f6b, 0 },
+ { "Omegaaspertilde", 0x1f6f, 0 },
+ { "Omegagrave", 0x1ffa, 0 },
+ { "Omegaiotasub", 0x1ffc, 0 },
+ { "Omegaiotasubasper", 0x1fa9, 0 },
+ { "Omegaiotasubasperacute", 0x1fad, 0 },
+ { "Omegaiotasubaspergrave", 0x1fab, 0 },
+ { "Omegaiotasubaspertilde", 0x1faf, 0 },
+ { "Omegaiotasublenis", 0x1fa8, 0 },
+ { "Omegaiotasublenisacute", 0x1fac, 0 },
+ { "Omegaiotasublenisgrave", 0x1faa, 0 },
+ { "Omegaiotasublenistilde", 0x1fae, 0 },
+ { "Omegalenis", 0x1f68, 0 },
+ { "Omegalenisacute", 0x1f6c, 0 },
+ { "Omegalenisgrave", 0x1f6a, 0 },
+ { "Omegalenistilde", 0x1f6e, 0 },
+ { "Omicronacute", 0x1ff9, 0 },
+ { "Omicronasper", 0x1f49, 0 },
+ { "Omicronasperacute", 0x1f4d, 0 },
+ { "Omicronaspergrave", 0x1f4b, 0 },
+ { "Omicrongrave", 0x1ff8, 0 },
+ { "Omicronlenis", 0x1f48, 0 },
+ { "Omicronlenisacute", 0x1f4c, 0 },
+ { "Omicronlenisgrave", 0x1f4a, 0 },
+ { "Rhoasper", 0x1fec, 0 },
+ { "Upsilonacute", 0x1feb, 0 },
+ { "Upsilonasper", 0x1f59, 0 },
+ { "Upsilonasperacute", 0x1f5d, 0 },
+ { "Upsilonaspergrave", 0x1f5b, 0 },
+ { "Upsilonaspertilde", 0x1f5f, 0 },
+ { "Upsilonbreve", 0x1fe8, 0 },
+ { "Upsilongrave", 0x1fea, 0 },
+ { "Upsilonmacron", 0x1fe9, 0 },
+ { "numeralsign", 0x0374, 0 },
+ { "lownumeralsign", 0x0375, 0 },
+ { "lowcomma", 0x037a, 0 },
+ { "stigma", 0x03da, 0 },
+ { "koppa", 0x03de, 0 },
+ { "sampi", 0x03e0, 0 },
+ { "lenis", 0x1fbd, 0 },
+ { "iotasubscript", 0x1fbe, 0 },
+ { "dieresistilde", 0x1fc1, 0 },
+ { "lenisgrave", 0x1fcd, 0 },
+ { "lenisacute", 0x1fce, 0 },
+ { "lenistilde", 0x1fcf, 0 },
+ { "aspergrave", 0x1fdd, 0 },
+ { "asperacute", 0x1fde, 0 },
+ { "aspertilde", 0x1fdf, 0 },
+ { "dialytikagrave", 0x1fed, 0 },
+ { "dialytikaacute", 0x1fee, 0 },
+ { "asper", 0x1ffe, 0 },
+ { "alphalenis", 0x1f00, 0 },
+ { "alphaasper", 0x1f01, 0 },
+ { "alphalenisgrave", 0x1f02, 0 },
+ { "alphaaspergrave", 0x1f03, 0 },
+ { "alphalenisacute", 0x1f04, 0 },
+ { "alphaasperacute", 0x1f05, 0 },
+ { "alphalenistilde", 0x1f06, 0 },
+ { "alphaaspertilde", 0x1f07, 0 },
+ { "epsilonlenis", 0x1f10, 0 },
+ { "epsilonasper", 0x1f11, 0 },
+ { "epsilonlenisgrave", 0x1f12, 0 },
+ { "epsilonaspergrave", 0x1f13, 0 },
+ { "epsilonlenisacute", 0x1f14, 0 },
+ { "epsilonasperacute", 0x1f15, 0 },
+ { "etalenis", 0x1f20, 0 },
+ { "etaasper", 0x1f21, 0 },
+ { "etalenisgrave", 0x1f22, 0 },
+ { "etaaspergrave", 0x1f23, 0 },
+ { "etalenisacute", 0x1f24, 0 },
+ { "etaasperacute", 0x1f25, 0 },
+ { "etalenistilde", 0x1f26, 0 },
+ { "etaaspertilde", 0x1f27, 0 },
+ { "iotalenis", 0x1f30, 0 },
+ { "iotaasper", 0x1f31, 0 },
+ { "iotalenisgrave", 0x1f32, 0 },
+ { "iotaaspergrave", 0x1f33, 0 },
+ { "iotalenisacute", 0x1f34, 0 },
+ { "iotaasperacute", 0x1f35, 0 },
+ { "iotalenistilde", 0x1f36, 0 },
+ { "iotaaspertilde", 0x1f37, 0 },
+ { "omicronlenis", 0x1f40, 0 },
+ { "omicronasper", 0x1f41, 0 },
+ { "omicronlenisgrave", 0x1f42, 0 },
+ { "omicronaspergrave", 0x1f43, 0 },
+ { "omicronlenisacute", 0x1f44, 0 },
+ { "omicronasperacute", 0x1f45, 0 },
+ { "upsilonlenis", 0x1f50, 0 },
+ { "upsilonasper", 0x1f51, 0 },
+ { "upsilonlenisgrave", 0x1f52, 0 },
+ { "upsilonaspergrave", 0x1f53, 0 },
+ { "upsilonlenisacute", 0x1f54, 0 },
+ { "upsilonasperacute", 0x1f55, 0 },
+ { "upsilonlenistilde", 0x1f56, 0 },
+ { "upsilonaspertilde", 0x1f57, 0 },
+ { "omegalenis", 0x1f60, 0 },
+ { "omegaasper", 0x1f61, 0 },
+ { "omegalenisgrave", 0x1f62, 0 },
+ { "omegaaspergrave", 0x1f63, 0 },
+ { "omegalenisacute", 0x1f64, 0 },
+ { "omegaasperacute", 0x1f65, 0 },
+ { "omegalenistilde", 0x1f66, 0 },
+ { "omegaaspertilde", 0x1f67, 0 },
+ { "alphagrave", 0x1f70, 0 },
+ { "alphaacute", 0x1f71, 0 },
+ { "epsilongrave", 0x1f72, 0 },
+ { "epsilonacute", 0x1f73, 0 },
+ { "etagrave", 0x1f74, 0 },
+ { "etaacute", 0x1f75, 0 },
+ { "iotagrave", 0x1f76, 0 },
+ { "iotaacute", 0x1f77, 0 },
+ { "omicrongrave", 0x1f78, 0 },
+ { "omicronacute", 0x1f79, 0 },
+ { "upsilongrave", 0x1f7a, 0 },
+ { "upsilonacute", 0x1f7b, 0 },
+ { "omegagrave", 0x1f7c, 0 },
+ { "omegaacute", 0x1f7d, 0 },
+ { "alphaiotasublenis", 0x1f80, 0 },
+ { "alphaiotasubasper", 0x1f81, 0 },
+ { "alphaiotasublenisgrave", 0x1f82, 0 },
+ { "alphaiotasubaspergrave", 0x1f83, 0 },
+ { "alphaiotasublenisacute", 0x1f84, 0 },
+ { "alphaiotasubasperacute", 0x1f85, 0 },
+ { "alphaiotasublenistilde", 0x1f86, 0 },
+ { "alphaiotasubaspertilde", 0x1f87, 0 },
+ { "etaiotasublenis", 0x1f90, 0 },
+ { "etaiotasubasper", 0x1f91, 0 },
+ { "etaiotasublenisgrave", 0x1f92, 0 },
+ { "etaiotasubaspergrave", 0x1f93, 0 },
+ { "etaiotasublenisacute", 0x1f94, 0 },
+ { "etaiotasubasperacute", 0x1f95, 0 },
+ { "etaiotasublenistilde", 0x1f96, 0 },
+ { "etaiotasubaspertilde", 0x1f97, 0 },
+ { "omegaiotasublenis", 0x1fa0, 0 },
+ { "omegaiotasubasper", 0x1fa1, 0 },
+ { "omegaiotasublenisgrave", 0x1fa2, 0 },
+ { "omegaiotasubaspergrave", 0x1fa3, 0 },
+ { "omegaiotasublenisacute", 0x1fa4, 0 },
+ { "omegaiotasubasperacute", 0x1fa5, 0 },
+ { "omegaiotasublenistilde", 0x1fa6, 0 },
+ { "omegaiotasubaspertilde", 0x1fa7, 0 },
+ { "alphabreve", 0x1fb0, 0 },
+ { "alphamacron", 0x1fb1, 0 },
+ { "alphaiotasubgrave", 0x1fb2, 0 },
+ { "alphaiotasub", 0x1fb3, 0 },
+ { "alphatilde", 0x1fb6, 0 },
+ { "alphaiotasubtilde", 0x1fb7, 0 },
+ { "etaiotasubgrave", 0x1fc2, 0 },
+ { "etaiotasub", 0x1fc3, 0 },
+ { "etaiotasubacute", 0x1fc4, 0 },
+ { "etatilde", 0x1fc6, 0 },
+ { "etaiotasubtilde", 0x1fc7, 0 },
+ { "iotabreve", 0x1fd0, 0 },
+ { "iotamacron", 0x1fd1, 0 },
+ { "iotadieresisgrave", 0x1fd2, 0 },
+ { "iotadieresisacute", 0x1fd3, 0 },
+ { "iotatilde", 0x1fd6, 0 },
+ { "iotadieresistilde", 0x1fd7, 0 },
+ { "upsilonbreve", 0x1fe0, 0 },
+ { "upsilonmacron", 0x1fe1, 0 },
+ { "upsilondieresisgrave", 0x1fe2, 0 },
+ { "upsilondieresisacute", 0x1fe3, 0 },
+ { "rholenis", 0x1fe4, 0 },
+ { "rhoasper", 0x1fe5, 0 },
+ { "upsilontilde", 0x1fe6, 0 },
+ { "omegaiotasubgrave", 0x1ff2, 0 },
+ { "omegaiotasub", 0x1ff3, 0 },
+ { "omegaiotasubacute", 0x1ff4, 0 },
+ { "omegatilde", 0x1ff6, 0 },
+ { "omegaiotasubtilde", 0x1ff7, 0 },
+ { "alphaiotasubacute", 0x1fb4, 0 },
+ { "upsilondieresistilde", 0x1fe7, 0 },
+ { "digamma", 0xefd5, 0 },
+ { "Be", 0x0411, 0 },
+ { "Ve", 0x0412, 0 },
+ { "Ghe", 0x0413, 0 },
+ { "De", 0x0414, 0 },
+ { "Ie", 0x0415, 0 },
+ { "Zhe", 0x0416, 0 },
+ { "Ze", 0x0417, 0 },
+ { "Ka", 0x041a, 0 },
+ { "El", 0x041b, 0 },
+ { "Em", 0x041c, 0 },
+ { "En", 0x041d, 0 },
+ { "Pe", 0x041f, 0 },
+ { "Er", 0x0420, 0 },
+ { "Es", 0x0421, 0 },
+ { "Te", 0x0422, 0 },
+ { "Ef", 0x0424, 0 },
+ { "Ha", 0x0425, 0 },
+ { "Tse", 0x0426, 0 },
+ { "Che", 0x0427, 0 },
+ { "Sha", 0x0428, 0 },
+ { "Shcha", 0x0429, 0 },
+ { "Hard", 0x042a, 0 },
+ { "Yeru", 0x042b, 0 },
+ { "Soft", 0x042c, 0 },
+ { "Yu", 0x042e, 0 },
+ { "Ya", 0x042f, 0 },
+ { "Io", 0x0401, 0 },
+ { "Dje", 0x0402, 0 },
+ { "Gje", 0x0403, 0 },
+ { "Dze", 0x0405, 0 },
+ { "Yi", 0x0407, 0 },
+ { "Je", 0x0408, 0 },
+ { "Lje", 0x0409, 0 },
+ { "Nje", 0x040a, 0 },
+ { "Tshe", 0x040b, 0 },
+ { "Kje", 0x040c, 0 },
+ { "Dzhe", 0x040f, 0 },
+ { "Yat", 0x0462, 0 },
+ { "Fita", 0x0472, 0 },
+ { "Izhitsa", 0x0474, 0 },
+ { "be", 0x0431, 0 },
+ { "ve", 0x0432, 0 },
+ { "ghe", 0x0433, 0 },
+ { "de", 0x0434, 0 },
+ { "ie", 0x0435, 0 },
+ { "zhe", 0x0436, 0 },
+ { "ze", 0x0437, 0 },
+ { "ka", 0x043a, 0 },
+ { "el", 0x043b, 0 },
+ { "em", 0x043c, 0 },
+ { "en", 0x043d, 0 },
+ { "er", 0x0440, 0 },
+ { "es", 0x0441, 0 },
+ { "te", 0x0442, 0 },
+ { "ef", 0x0444, 0 },
+ { "ha", 0x0445, 0 },
+ { "tse", 0x0446, 0 },
+ { "che", 0x0447, 0 },
+ { "sha", 0x0448, 0 },
+ { "shcha", 0x0449, 0 },
+ { "hard", 0x044a, 0 },
+ { "yeru", 0x044b, 0 },
+ { "soft", 0x044c, 0 },
+ { "yu", 0x044e, 0 },
+ { "ya", 0x044f, 0 },
+ { "io", 0x0451, 0 },
+ { "dje", 0x0452, 0 },
+ { "gje", 0x0453, 0 },
+ { "dze", 0x0455, 0 },
+ { "yi", 0x0457, 0 },
+ { "je", 0x0458, 0 },
+ { "lje", 0x0459, 0 },
+ { "nje", 0x045a, 0 },
+ { "tshe", 0x045b, 0 },
+ { "kje", 0x045c, 0 },
+ { "dzhe", 0x045f, 0 },
+ { "yat", 0x0463, 0 },
+ { "fita", 0x0473, 0 },
+ { "izhitsa", 0x0475, 0 },
+ { "litre", 0x2113, 0 },
+ { "Dotaccent", 0xefed, 0 },
+ { "Breve", 0xefee, 0 },
+ { "Ogonek", 0xeff1, 0 },
+ { "Cedilla", 0xeff2, 0 },
+ { "Ring", 0xeff3, 0 },
+ { "Tilde", 0xeff5, 0 },
+ { "Circumflex", 0xeff7, 0 },
+ { "dbar", 0x0111, 0 },
+ { "st", 0xfb06, 0 },
+ { "TeXtext32", 0x0337, 0 },
+ { "DD070", 0x2014, 0 },
+ { "monospacedash", 0x2014, 0 },
+ { "Dash1cent", 0x2015, 0 },
+ { "apostrophereverse", 0x201b, 0 },
+ { "Pts", 0x20a7, 0 },
+ { "SM760000", 0x2195, 0 },
+ { "SM770000", 0x21a8, 0 },
+ { "SP320000", 0x2219, 0 },
+ { "SD630000", 0x22c5, 0 },
+ { "SM790000", 0x2302, 0 },
+ { "caretinverted", 0x2304, 0 },
+ { "SM680000", 0x2310, 0 },
+ { "SA420000", 0x2319, 0 },
+ { "BorderULCorner1", 0x231c, 0 },
+ { "DD010", 0x231c, 0 },
+ { "DD101", 0x231c, 0 },
+ { "BorderURCorner1", 0x231d, 0 },
+ { "DD012", 0x231d, 0 },
+ { "DD104", 0x231d, 0 },
+ { "BorderLLCorner1", 0x231e, 0 },
+ { "DD014", 0x231e, 0 },
+ { "DD109", 0x231e, 0 },
+ { "BorderLRCorner1", 0x231f, 0 },
+ { "DD015", 0x231f, 0 },
+ { "DD112", 0x231f, 0 },
+ { "SS260000", 0x2320, 0 },
+ { "SS270000", 0x2321, 0 },
+ { "hook", 0x2440, 0 },
+ { "chair", 0x2441, 0 },
+ { "fork", 0x2442, 0 },
+ { "SF600000", 0x2580, 0 },
+ { "BorderLower1", 0x2581, 0 },
+ { "DD011", 0x2581, 0 },
+ { "DD021", 0x2581, 0 },
+ { "DD110", 0x2581, 0 },
+ { "Flower1l", 0x2581, 0 },
+ { "SF570000", 0x2584, 0 },
+ { "SF610000", 0x2588, 0 },
+ { "Tile", 0x2588, 0 },
+ { "HalfTile", 0x258c, 0 },
+ { "SF580000", 0x258c, 0 },
+ { "BorderLeftVertical1", 0x258f, 0 },
+ { "DD013", 0x258f, 0 },
+ { "DD034", 0x258f, 0 },
+ { "DD105", 0x258f, 0 },
+ { "Flower1d", 0x258f, 0 },
+ { "SF590000", 0x2590, 0 },
+ { "SF140000", 0x2591, 0 },
+ { "SF150000", 0x2592, 0 },
+ { "SF160000", 0x2593, 0 },
+ { "BorderUpper1", 0x2594, 0 },
+ { "DD024", 0x2594, 0 },
+ { "DD102", 0x2594, 0 },
+ { "BorderRightVertical1", 0x2595, 0 },
+ { "DD031", 0x2595, 0 },
+ { "DD106", 0x2595, 0 },
+ { "Flower2dr", 0x2595, 0 },
+ { "SM600000", 0x25b2, 0 },
+ { "SM590000", 0x25b6, 0 },
+ { "SV040000", 0x25bc, 0 },
+ { "SM630000", 0x25c0, 0 },
+ { "SM750000", 0x25cb, 0 },
+ { "SM570001", 0x25d8, 0 },
+ { "SM750002", 0x25d9, 0 },
+ { "ShootingStar", 0x2604, 0 },
+ { "DD130", 0x2605, 0 },
+ { "StarDingbat1", 0x2605, 0 },
+ { "TheSun", 0x2609, 0 },
+ { "FleuronLeft", 0x2619, 0 },
+ { "cross", 0x2629, 0 },
+ { "SS000000", 0x263a, 0 },
+ { "SS010000", 0x263b, 0 },
+ { "SM690000", 0x263c, 0 },
+ { "TheMoon", 0x263d, 0 },
+ { "Moon", 0x263e, 0 },
+ { "Mercury", 0x263f, 0 },
+ { "Venus", 0x2640, 0 },
+ { "Earth", 0x2641, 0 },
+ { "Mars", 0x2642, 0 },
+ { "Jupiter", 0x2643, 0 },
+ { "Saturn", 0x2644, 0 },
+ { "Uranus", 0x2645, 0 },
+ { "Neptune", 0x2646, 0 },
+ { "Pluto", 0x2647, 0 },
+ { "Aries", 0x2648, 0 },
+ { "Taurus", 0x2649, 0 },
+ { "Gemini", 0x264a, 0 },
+ { "Cancer", 0x264b, 0 },
+ { "Leo", 0x264c, 0 },
+ { "Virgo", 0x264d, 0 },
+ { "Libra", 0x264e, 0 },
+ { "Scorpio", 0x264f, 0 },
+ { "Sagittarius", 0x2650, 0 },
+ { "Capricorn", 0x2651, 0 },
+ { "Aquarius", 0x2652, 0 },
+ { "Pisces", 0x2653, 0 },
+ { "diamondopen", 0x2662, 0 },
+ { "FleuronCenter", 0x2766, 0 },
+ { "FleuronRight", 0x2767, 0 },
+ { "st1", 0xfb06, 0 },
+ { "zeroslash", 0xf638, 0 },
+ { "pi1", 0x03d6, 0 },
+ { "hyphen-minus", 0x002d, 0 },
+ { "hyphenminus", 0x002d, 0 },
+ { "nonmarkingreturn", 0x000d, 0 },
+ { "micro", 0x00b5, 0 },
+ { "Dmacron", 0x0110, 0 },
+ { "kra", 0x0138, 0 },
+ { "bbar", 0x0180, 0 },
+ { "Dbar", 0x0189, 0 },
+ { "deltaturn", 0x018d, 0 },
+ { "Eturn", 0x018e, 0 },
+ { "Epsilonlatin", 0x0190, 0 },
+ { "Gammalatin", 0x0194, 0 },
+ { "Iotalatin", 0x0196, 0 },
+ { "Ibar", 0x0197, 0 },
+ { "lambdabar", 0x019b, 0 },
+ { "mcapturn", 0x019c, 0 },
+ { "Nhook", 0x019d, 0 },
+ { "nleg", 0x019e, 0 },
+ { "Obar", 0x019f, 0 },
+ { "OI", 0x01a2, 0 },
+ { "YR", 0x01a6, 0 },
+ { "eshlooprev", 0x01aa, 0 },
+ { "Trthook", 0x01ae, 0 },
+ { "Upsilonlatin", 0x01b1, 0 },
+ { "Vcursive", 0x01b2, 0 },
+ { "Zbar", 0x01b5, 0 },
+ { "zbar", 0x01b6, 0 },
+ { "Yogh", 0x01b7, 0 },
+ { "Yoghrev", 0x01b8, 0 },
+ { "yoghrev", 0x01b9, 0 },
+ { "yoghtail", 0x01ba, 0 },
+ { "twobar", 0x01bb, 0 },
+ { "glottalstopbarinv", 0x01be, 0 },
+ { "pipe", 0x01c0, 0 },
+ { "pipedbl", 0x01c1, 0 },
+ { "pipedblbar", 0x01c2, 0 },
+ { "exclamlatin", 0x01c3, 0 },
+ { "DZhacek", 0x01c4, 0 },
+ { "Dzhacek", 0x01c5, 0 },
+ { "dzhacek", 0x01c6, 0 },
+ { "Ahacek", 0x01cd, 0 },
+ { "ahacek", 0x01ce, 0 },
+ { "Ihacek", 0x01cf, 0 },
+ { "ihacek", 0x01d0, 0 },
+ { "Ohacek", 0x01d1, 0 },
+ { "ohacek", 0x01d2, 0 },
+ { "Uhacek", 0x01d3, 0 },
+ { "uhacek", 0x01d4, 0 },
+ { "Udieresishacek", 0x01d9, 0 },
+ { "udieresishacek", 0x01da, 0 },
+ { "eturn", 0x01dd, 0 },
+ { "Gbar", 0x01e4, 0 },
+ { "gbar", 0x01e5, 0 },
+ { "Ghacek", 0x01e6, 0 },
+ { "ghacek", 0x01e7, 0 },
+ { "Khacek", 0x01e8, 0 },
+ { "khacek", 0x01e9, 0 },
+ { "Yoghhacek", 0x01ee, 0 },
+ { "yoghhacek", 0x01ef, 0 },
+ { "jhacek", 0x01f0, 0 },
+ { "aturn", 0x0250, 0 },
+ { "ascriptturn", 0x0252, 0 },
+ { "cturn", 0x0254, 0 },
+ { "drthook", 0x0256, 0 },
+ { "erev", 0x0258, 0 },
+ { "epsilonlatin", 0x025b, 0 },
+ { "epsilonlatinrev", 0x025c, 0 },
+ { "epsilonlatinrevhook", 0x025d, 0 },
+ { "epsilonlatinrevclosed", 0x025e, 0 },
+ { "jdotlessbar", 0x025f, 0 },
+ { "gcursive", 0x0261, 0 },
+ { "Gsmallcap", 0x0262, 0 },
+ { "gammalatin", 0x0263, 0 },
+ { "babygamma", 0x0264, 0 },
+ { "hturn", 0x0265, 0 },
+ { "ibar", 0x0268, 0 },
+ { "Ismallcap", 0x026a, 0 },
+ { "lmidtilde", 0x026b, 0 },
+ { "lrthook", 0x026d, 0 },
+ { "lyogh", 0x026e, 0 },
+ { "mturn", 0x026f, 0 },
+ { "mturndescend", 0x0270, 0 },
+ { "nlftlfthook", 0x0272, 0 },
+ { "nrthook", 0x0273, 0 },
+ { "Nsmallcap", 0x0274, 0 },
+ { "obar", 0x0275, 0 },
+ { "OEsmallcap", 0x0276, 0 },
+ { "omegaclosed", 0x0277, 0 },
+ { "rturn", 0x0279, 0 },
+ { "rturnascend", 0x027a, 0 },
+ { "rturnrthook", 0x027b, 0 },
+ { "rdescend", 0x027c, 0 },
+ { "rrthook", 0x027d, 0 },
+ { "rfishhookrev", 0x027f, 0 },
+ { "Rsmallcap", 0x0280, 0 },
+ { "Rsmallcapinv", 0x0281, 0 },
+ { "srthook", 0x0282, 0 },
+ { "jhookdblbar", 0x0284, 0 },
+ { "eshshortrev", 0x0285, 0 },
+ { "tturn", 0x0287, 0 },
+ { "trthook", 0x0288, 0 },
+ { "vscript", 0x028b, 0 },
+ { "vturn", 0x028c, 0 },
+ { "wturn", 0x028d, 0 },
+ { "yturn", 0x028e, 0 },
+ { "Ysmallcap", 0x028f, 0 },
+ { "zrthook", 0x0290, 0 },
+ { "yogh", 0x0292, 0 },
+ { "yoghcurl", 0x0293, 0 },
+ { "glottalstoprevinv", 0x0295, 0 },
+ { "glottalstopinv", 0x0296, 0 },
+ { "cstretch", 0x0297, 0 },
+ { "kiss", 0x0298, 0 },
+ { "Bsmallcap", 0x0299, 0 },
+ { "epsilonclosed", 0x029a, 0 },
+ { "Gsmallcaphook", 0x029b, 0 },
+ { "Hsmallcap", 0x029c, 0 },
+ { "jcrosstail", 0x029d, 0 },
+ { "kturn", 0x029e, 0 },
+ { "Lsmallcap", 0x029f, 0 },
+ { "glottalstopbar", 0x02a1, 0 },
+ { "glottalstopbarrev", 0x02a2, 0 },
+ { "dyogh", 0x02a4, 0 },
+ { "hsuper", 0x02b0, 0 },
+ { "hhooksuper", 0x02b1, 0 },
+ { "jsuper", 0x02b2, 0 },
+ { "rsuper", 0x02b3, 0 },
+ { "rturnsuper", 0x02b4, 0 },
+ { "rturnrthooksuper", 0x02b5, 0 },
+ { "Rturnsuper", 0x02b6, 0 },
+ { "wsuper", 0x02b7, 0 },
+ { "ysuper", 0x02b8, 0 },
+ { "primedblmod", 0x02ba, 0 },
+ { "quoteleftmod", 0x02bb, 0 },
+ { "apostrophe", 0x02bc, 0 },
+ { "apostropherev", 0x02bd, 0 },
+ { "ringrighthalfsuper", 0x02be, 0 },
+ { "ringlefthalfsuper", 0x02bf, 0 },
+ { "glottal", 0x02c0, 0 },
+ { "glottalrev", 0x02c1, 0 },
+ { "fronted", 0x02c2, 0 },
+ { "backed", 0x02c3, 0 },
+ { "raised", 0x02c4, 0 },
+ { "lowered", 0x02c5, 0 },
+ { "linevert", 0x02c8, 0 },
+ { "macronmodifier", 0x02c9, 0 },
+ { "acutemodifier", 0x02ca, 0 },
+ { "gravemodifier", 0x02cb, 0 },
+ { "linevertsub", 0x02cc, 0 },
+ { "macronsub", 0x02cd, 0 },
+ { "gravesub", 0x02ce, 0 },
+ { "acutesub", 0x02cf, 0 },
+ { "length", 0x02d0, 0 },
+ { "halflength", 0x02d1, 0 },
+ { "ringrighthalfcenter", 0x02d2, 0 },
+ { "ringlefthalfsup", 0x02d3, 0 },
+ { "tackupmid", 0x02d4, 0 },
+ { "tackdownmid", 0x02d5, 0 },
+ { "rhotichook", 0x02de, 0 },
+ { "gammasuper", 0x02e0, 0 },
+ { "lsuper", 0x02e1, 0 },
+ { "ssuper", 0x02e2, 0 },
+ { "xsuper", 0x02e3, 0 },
+ { "glottalrevsuper", 0x02e4, 0 },
+ { "toneextrahigh", 0x02e5, 0 },
+ { "tonehigh", 0x02e6, 0 },
+ { "tonemid", 0x02e7, 0 },
+ { "tonelow", 0x02e8, 0 },
+ { "toneextralow", 0x02e9, 0 },
+ { "gravenosp", 0x0300, 0 },
+ { "acutenosp", 0x0301, 0 },
+ { "circumflexnosp", 0x0302, 0 },
+ { "tildenosp", 0x0303, 0 },
+ { "macronnosp", 0x0304, 0 },
+ { "overscorenosp", 0x0305, 0 },
+ { "brevenosp", 0x0306, 0 },
+ { "dotnosp", 0x0307, 0 },
+ { "dieresisnosp", 0x0308, 0 },
+ { "hooksupnosp", 0x0309, 0 },
+ { "ringnosp", 0x030a, 0 },
+ { "acutedblnosp", 0x030b, 0 },
+ { "haceknosp", 0x030c, 0 },
+ { "linevertnosp", 0x030d, 0 },
+ { "linevertdblnosp", 0x030e, 0 },
+ { "gravedblnosp", 0x030f, 0 },
+ { "candrabindunosp", 0x0310, 0 },
+ { "breveinvnosp", 0x0311, 0 },
+ { "commaturnsupnosp", 0x0312, 0 },
+ { "apostrophesupnosp", 0x0313, 0 },
+ { "commasuprevnosp", 0x0314, 0 },
+ { "commasuprightnosp", 0x0315, 0 },
+ { "gravesubnosp", 0x0316, 0 },
+ { "acutesubnosp", 0x0317, 0 },
+ { "tackleftsubnosp", 0x0318, 0 },
+ { "tackrightsubnosp", 0x0319, 0 },
+ { "anglesupnosp", 0x031a, 0 },
+ { "hornnosp", 0x031b, 0 },
+ { "ringlefthalfsubnosp", 0x031c, 0 },
+ { "tackupsubnosp", 0x031d, 0 },
+ { "tackdownsubnosp", 0x031e, 0 },
+ { "plussubnosp", 0x031f, 0 },
+ { "minussubnosp", 0x0320, 0 },
+ { "hooksubpalatnosp", 0x0321, 0 },
+ { "hooksubretronosp", 0x0322, 0 },
+ { "dotsubnosp", 0x0323, 0 },
+ { "dotdblsubnosp", 0x0324, 0 },
+ { "ringsubnosp", 0x0325, 0 },
+ { "commasubnosp", 0x0326, 0 },
+ { "cedillanosp", 0x0327, 0 },
+ { "ogoneknosp", 0x0328, 0 },
+ { "linevertsubnosp", 0x0329, 0 },
+ { "bridgesubnosp", 0x032a, 0 },
+ { "archdblsubnosp", 0x032b, 0 },
+ { "haceksubnosp", 0x032c, 0 },
+ { "circumflexsubnosp", 0x032d, 0 },
+ { "brevesubnosp", 0x032e, 0 },
+ { "breveinvsubnosp", 0x032f, 0 },
+ { "tildesubnosp", 0x0330, 0 },
+ { "macronsubnosp", 0x0331, 0 },
+ { "underscorenosp", 0x0332, 0 },
+ { "underscoredblnosp", 0x0333, 0 },
+ { "tildemidnosp", 0x0334, 0 },
+ { "barmidshortnosp", 0x0335, 0 },
+ { "barmidlongnosp", 0x0336, 0 },
+ { "slashshortnosp", 0x0337, 0 },
+ { "slashlongnosp", 0x0338, 0 },
+ { "ringrighthalfsubnosp", 0x0339, 0 },
+ { "bridgeinvsubnosp", 0x033a, 0 },
+ { "squaresubnosp", 0x033b, 0 },
+ { "seagullsubnosp", 0x033c, 0 },
+ { "xsupnosp", 0x033d, 0 },
+ { "tildevertsupnosp", 0x033e, 0 },
+ { "overscoredblnosp", 0x033f, 0 },
+ { "graveleftnosp", 0x0340, 0 },
+ { "acuterightnosp", 0x0341, 0 },
+ { "wavyoverscorenosp", 0x0342, 0 },
+ { "zigzagoverscorenosp", 0x0343, 0 },
+ { "diaeresistonosnosp", 0x0344, 0 },
+ { "iotasubnosp", 0x0345, 0 },
+ { "iotasub", 0x037a, 0 },
+ { "diaeresistonos", 0x0385, 0 },
+ { "iotadiaeresistonos", 0x0390, 0 },
+ { "Iotadiaeresis", 0x03aa, 0 },
+ { "Upsilondiaeresis", 0x03ab, 0 },
+ { "upsilondiaeresistonos", 0x03b0, 0 },
+ { "iotadiaeresis", 0x03ca, 0 },
+ { "upsilondiaeresis", 0x03cb, 0 },
+ { "betacurled", 0x03d0, 0 },
+ { "thetascript", 0x03d1, 0 },
+ { "Upsilonhook", 0x03d2, 0 },
+ { "Upsilonhooktonos", 0x03d3, 0 },
+ { "Upsilonhookdiaeresis", 0x03d4, 0 },
+ { "phiscript", 0x03d5, 0 },
+ { "omegapi", 0x03d6, 0 },
+ { "Stigma", 0x03da, 0 },
+ { "stigma", 0x03db, 0 },
+ { "Digamma", 0x03dc, 0 },
+ { "digamma", 0x03dd, 0 },
+ { "Koppa", 0x03de, 0 },
+ { "koppa", 0x03df, 0 },
+ { "Sampi", 0x03e0, 0 },
+ { "sampi", 0x03e1, 0 },
+ { "Shei", 0x03e2, 0 },
+ { "shei", 0x03e3, 0 },
+ { "Fei", 0x03e4, 0 },
+ { "fei", 0x03e5, 0 },
+ { "Khei", 0x03e6, 0 },
+ { "khei", 0x03e7, 0 },
+ { "Hori", 0x03e8, 0 },
+ { "hori", 0x03e9, 0 },
+ { "Gangia", 0x03ea, 0 },
+ { "gangia", 0x03eb, 0 },
+ { "Shima", 0x03ec, 0 },
+ { "shima", 0x03ed, 0 },
+ { "Dei", 0x03ee, 0 },
+ { "dei", 0x03ef, 0 },
+ { "kappascript", 0x03f0, 0 },
+ { "sigmalunate", 0x03f2, 0 },
+ { "Io", 0x0401, 0 },
+ { "Dje", 0x0402, 0 },
+ { "Gje", 0x0403, 0 },
+ { "Ecyril", 0x0404, 0 },
+ { "Dze", 0x0405, 0 },
+ { "Icyril", 0x0406, 0 },
+ { "Yi", 0x0407, 0 },
+ { "Je", 0x0408, 0 },
+ { "Lje", 0x0409, 0 },
+ { "Nje", 0x040a, 0 },
+ { "Tshe", 0x040b, 0 },
+ { "Kje", 0x040c, 0 },
+ { "Ucyrilbreve", 0x040e, 0 },
+ { "Dzhe", 0x040f, 0 },
+ { "Acyril", 0x0410, 0 },
+ { "Be", 0x0411, 0 },
+ { "Ve", 0x0412, 0 },
+ { "Ge", 0x0413, 0 },
+ { "De", 0x0414, 0 },
+ { "Ie", 0x0415, 0 },
+ { "Zhe", 0x0416, 0 },
+ { "Ze", 0x0417, 0 },
+ { "Ii", 0x0418, 0 },
+ { "Iibreve", 0x0419, 0 },
+ { "Ka", 0x041a, 0 },
+ { "El", 0x041b, 0 },
+ { "Em", 0x041c, 0 },
+ { "En", 0x041d, 0 },
+ { "Ocyril", 0x041e, 0 },
+ { "Pecyril", 0x041f, 0 },
+ { "Er", 0x0420, 0 },
+ { "Es", 0x0421, 0 },
+ { "Te", 0x0422, 0 },
+ { "Ucyril", 0x0423, 0 },
+ { "Ef", 0x0424, 0 },
+ { "Kha", 0x0425, 0 },
+ { "Tse", 0x0426, 0 },
+ { "Che", 0x0427, 0 },
+ { "Sha", 0x0428, 0 },
+ { "Shcha", 0x0429, 0 },
+ { "Hard", 0x042a, 0 },
+ { "Yeri", 0x042b, 0 },
+ { "Soft", 0x042c, 0 },
+ { "Ecyrilrev", 0x042d, 0 },
+ { "Iu", 0x042e, 0 },
+ { "Ia", 0x042f, 0 },
+ { "acyril", 0x0430, 0 },
+ { "be", 0x0431, 0 },
+ { "ve", 0x0432, 0 },
+ { "ge", 0x0433, 0 },
+ { "de", 0x0434, 0 },
+ { "ie", 0x0435, 0 },
+ { "zhe", 0x0436, 0 },
+ { "ze", 0x0437, 0 },
+ { "ii", 0x0438, 0 },
+ { "iibreve", 0x0439, 0 },
+ { "ka", 0x043a, 0 },
+ { "el", 0x043b, 0 },
+ { "em", 0x043c, 0 },
+ { "en", 0x043d, 0 },
+ { "ocyril", 0x043e, 0 },
+ { "pecyril", 0x043f, 0 },
+ { "er", 0x0440, 0 },
+ { "es", 0x0441, 0 },
+ { "te", 0x0442, 0 },
+ { "ucyril", 0x0443, 0 },
+ { "ef", 0x0444, 0 },
+ { "kha", 0x0445, 0 },
+ { "tse", 0x0446, 0 },
+ { "che", 0x0447, 0 },
+ { "sha", 0x0448, 0 },
+ { "shcha", 0x0449, 0 },
+ { "hard", 0x044a, 0 },
+ { "yeri", 0x044b, 0 },
+ { "soft", 0x044c, 0 },
+ { "ecyrilrev", 0x044d, 0 },
+ { "iu", 0x044e, 0 },
+ { "ia", 0x044f, 0 },
+ { "io", 0x0451, 0 },
+ { "dje", 0x0452, 0 },
+ { "gje", 0x0453, 0 },
+ { "ecyril", 0x0454, 0 },
+ { "dze", 0x0455, 0 },
+ { "icyril", 0x0456, 0 },
+ { "yi", 0x0457, 0 },
+ { "je", 0x0458, 0 },
+ { "lje", 0x0459, 0 },
+ { "nje", 0x045a, 0 },
+ { "tshe", 0x045b, 0 },
+ { "kje", 0x045c, 0 },
+ { "ucyrilbreve", 0x045e, 0 },
+ { "dzhe", 0x045f, 0 },
+ { "Yat", 0x0462, 0 },
+ { "yat", 0x0463, 0 },
+ { "Yusbig", 0x046a, 0 },
+ { "yusbig", 0x046b, 0 },
+ { "Psicyril", 0x0470, 0 },
+ { "psicyril", 0x0471, 0 },
+ { "Fita", 0x0472, 0 },
+ { "fita", 0x0473, 0 },
+ { "Izhitsa", 0x0474, 0 },
+ { "izhitsa", 0x0475, 0 },
+ { "Izhitsagravedbl", 0x0476, 0 },
+ { "izhitsagravedbl", 0x0477, 0 },
+ { "Digraphuk", 0x0478, 0 },
+ { "digraphuk", 0x0479, 0 },
+ { "Omegaround", 0x047a, 0 },
+ { "omegaround", 0x047b, 0 },
+ { "Omegatitlo", 0x047c, 0 },
+ { "omegatitlo", 0x047d, 0 },
+ { "OT", 0x047e, 0 },
+ { "ot", 0x047f, 0 },
+ { "Geupturn", 0x0490, 0 },
+ { "geupturn", 0x0491, 0 },
+ { "Gebar", 0x0492, 0 },
+ { "gebar", 0x0493, 0 },
+ { "Gehook", 0x0494, 0 },
+ { "gehook", 0x0495, 0 },
+ { "Zhertdes", 0x0496, 0 },
+ { "zhertdes", 0x0497, 0 },
+ { "Zecedilla", 0x0498, 0 },
+ { "zecedilla", 0x0499, 0 },
+ { "Kartdes", 0x049a, 0 },
+ { "kartdes", 0x049b, 0 },
+ { "Kavertbar", 0x049c, 0 },
+ { "kavertbar", 0x049d, 0 },
+ { "Kabar", 0x049e, 0 },
+ { "kabar", 0x049f, 0 },
+ { "GeKarev", 0x04a0, 0 },
+ { "gekarev", 0x04a1, 0 },
+ { "Enrtdes", 0x04a2, 0 },
+ { "enrtdes", 0x04a3, 0 },
+ { "EnGe", 0x04a4, 0 },
+ { "enge", 0x04a5, 0 },
+ { "Pehook", 0x04a6, 0 },
+ { "pehook", 0x04a7, 0 },
+ { "Ohook", 0x04a8, 0 },
+ { "ohook", 0x04a9, 0 },
+ { "Escedilla", 0x04aa, 0 },
+ { "escedilla", 0x04ab, 0 },
+ { "Tertdes", 0x04ac, 0 },
+ { "tertdes", 0x04ad, 0 },
+ { "Ustrt", 0x04ae, 0 },
+ { "ustrt", 0x04af, 0 },
+ { "Ustrtbar", 0x04b0, 0 },
+ { "ustrtbar", 0x04b1, 0 },
+ { "Khartdes", 0x04b2, 0 },
+ { "khartdes", 0x04b3, 0 },
+ { "TeTse", 0x04b4, 0 },
+ { "tetse", 0x04b5, 0 },
+ { "Chertdes", 0x04b6, 0 },
+ { "chertdes", 0x04b7, 0 },
+ { "Chevertbar", 0x04b8, 0 },
+ { "chevertbar", 0x04b9, 0 },
+ { "Hcyril", 0x04ba, 0 },
+ { "hcyril", 0x04bb, 0 },
+ { "Iehook", 0x04bc, 0 },
+ { "iehook", 0x04bd, 0 },
+ { "Iehookogonek", 0x04be, 0 },
+ { "iehookogonek", 0x04bf, 0 },
+ { "Icyril1", 0x04c0, 0 },
+ { "Zhebreve", 0x04c1, 0 },
+ { "zhebreve", 0x04c2, 0 },
+ { "Kahook", 0x04c3, 0 },
+ { "kahook", 0x04c4, 0 },
+ { "Enhook", 0x04c7, 0 },
+ { "enhook", 0x04c8, 0 },
+ { "Cheleftdes", 0x04cb, 0 },
+ { "cheleftdes", 0x04cc, 0 },
+ { "qibuts", 0x05bb, 0 },
+ { "meteg", 0x05bd, 0 },
+ { "maqaf", 0x05be, 0 },
+ { "paseq", 0x05c0, 0 },
+ { "shindot", 0x05c1, 0 },
+ { "sindot", 0x05c2, 0 },
+ { "sofpasuq", 0x05c3, 0 },
+ { "kaffinal", 0x05da, 0 },
+ { "memfinal", 0x05dd, 0 },
+ { "nunfinal", 0x05df, 0 },
+ { "pefinal", 0x05e3, 0 },
+ { "tsadifinal", 0x05e5, 0 },
+ { "vavdbl", 0x05f0, 0 },
+ { "vavyod", 0x05f1, 0 },
+ { "yoddbl", 0x05f2, 0 },
+ { "geresh", 0x05f3, 0 },
+ { "gershayim", 0x05f4, 0 },
+ { "varika", 0x05f5, 0 },
+ { "enquad", 0x2000, 0 },
+ { "emquad", 0x2001, 0 },
+ { "emspace", 0x2003, 0 },
+ { "threeperemspace", 0x2004, 0 },
+ { "fourperemspace", 0x2005, 0 },
+ { "sixperemspace", 0x2006, 0 },
+ { "figurespace", 0x2007, 0 },
+ { "punctuationspace", 0x2008, 0 },
+ { "thinspace", 0x2009, 0 },
+ { "hairspace", 0x200a, 0 },
+ { "zerospace", 0x200b, 0 },
+ { "zeronojoin", 0x200c, 0 },
+ { "zerojoin", 0x200d, 0 },
+ { "hyphennobreak", 0x2011, 0 },
+ { "quotedash", 0x2015, 0 },
+ { "dashdbl", 0x2016, 0 },
+ { "quotesinglrev", 0x201b, 0 },
+ { "quotedblrev", 0x201f, 0 },
+ { "trianglebullet", 0x2023, 0 },
+ { "onedotlead", 0x2024, 0 },
+ { "twodotlead", 0x2025, 0 },
+ { "hyphendot", 0x2027, 0 },
+ { "lineseparator", 0x2028, 0 },
+ { "paragraphseparator", 0x2029, 0 },
+ { "lre", 0x202a, 0 },
+ { "rle", 0x202b, 0 },
+ { "pdf", 0x202c, 0 },
+ { "lro", 0x202d, 0 },
+ { "rlo", 0x202e, 0 },
+ { "pertenthousand", 0x2031, 0 },
+ { "prime", 0x2032, 0 },
+ { "primedbl", 0x2033, 0 },
+ { "primetriple", 0x2034, 0 },
+ { "primerev", 0x2035, 0 },
+ { "primedblrev", 0x2036, 0 },
+ { "primetriplerev", 0x2037, 0 },
+ { "caret", 0x2038, 0 },
+ { "refmark", 0x203b, 0 },
+ { "interrobang", 0x203d, 0 },
+ { "tie", 0x2040, 0 },
+ { "caretinsert", 0x2041, 0 },
+ { "hyphenbullet", 0x2043, 0 },
+ { "minussuperior", 0x207b, 0 },
+ { "plusinferior", 0x208a, 0 },
+ { "equalinferior", 0x208c, 0 },
+ { "eurocurrency", 0x20a0, 0 },
+ { "coloncurrency", 0x20a1, 0 },
+ { "mill", 0x20a5, 0 },
+ { "naira", 0x20a6, 0 },
+ { "pesetas", 0x20a7, 0 },
+ { "rupee", 0x20a8, 0 },
+ { "newsheqel", 0x20aa, 0 },
+ { "accountof", 0x2100, 0 },
+ { "addresssubject", 0x2101, 0 },
+ { "Cbb", 0x2102, 0 },
+ { "degreecentigrade", 0x2103, 0 },
+ { "CL", 0x2104, 0 },
+ { "cadauna", 0x2106, 0 },
+ { "Euler", 0x2107, 0 },
+ { "scruple", 0x2108, 0 },
+ { "degreefarenheit", 0x2109, 0 },
+ { "Hscript", 0x210b, 0 },
+ { "Hblackletter", 0x210c, 0 },
+ { "Hbb", 0x210d, 0 },
+ { "planck", 0x210e, 0 },
+ { "planckover2pi", 0x210f, 0 },
+ { "Iscript", 0x2110, 0 },
+ { "Lscript", 0x2112, 0 },
+ { "lscript", 0x2113, 0 },
+ { "lbbar", 0x2114, 0 },
+ { "Nbb", 0x2115, 0 },
+ { "recordright", 0x2117, 0 },
+ { "Pbb", 0x2119, 0 },
+ { "Qbb", 0x211a, 0 },
+ { "Rscript", 0x211b, 0 },
+ { "Rfractur", 0x211c, 0 },
+ { "Rbb", 0x211d, 0 },
+ { "Rx", 0x211e, 0 },
+ { "response", 0x211f, 0 },
+ { "servicemark", 0x2120, 0 },
+ { "tel", 0x2121, 0 },
+ { "versicle", 0x2123, 0 },
+ { "Zbb", 0x2124, 0 },
+ { "ounce", 0x2125, 0 },
+ { "ohm", 0x2126, 0 },
+ { "mho", 0x2127, 0 },
+ { "Zblackletter", 0x2128, 0 },
+ { "iotaturn", 0x2129, 0 },
+ { "degreekelvin", 0x212a, 0 },
+ { "Bscript", 0x212c, 0 },
+ { "Cblackletter", 0x212d, 0 },
+ { "escript", 0x212f, 0 },
+ { "Escript", 0x2130, 0 },
+ { "Fscript", 0x2131, 0 },
+ { "Fturn", 0x2132, 0 },
+ { "Mscript", 0x2133, 0 },
+ { "u0scrip", 0x2134, 0 },
+ { "alephmath", 0x2135, 0 },
+ { "gimelmath", 0x2137, 0 },
+ { "dalethmath", 0x2138, 0 },
+ { "twothird", 0x2154, 0 },
+ { "onefifth", 0x2155, 0 },
+ { "twofifths", 0x2156, 0 },
+ { "threefifths", 0x2157, 0 },
+ { "fourfifths", 0x2158, 0 },
+ { "onesixth", 0x2159, 0 },
+ { "fivesixths", 0x215a, 0 },
+ { "onenumerator", 0x215f, 0 },
+ { "arrowlongboth", 0x2194, 0 },
+ { "arrowlongbothv", 0x2195, 0 },
+ { "arrownorthwest", 0x2196, 0 },
+ { "arrownortheast", 0x2197, 0 },
+ { "arrowsoutheast", 0x2198, 0 },
+ { "arrowsouthwest", 0x2199, 0 },
+ { "arrowleftnot", 0x219a, 0 },
+ { "arrowrightnot", 0x219b, 0 },
+ { "arrowwaveleft", 0x219c, 0 },
+ { "arrowwaveright", 0x219d, 0 },
+ { "dblarrowheadleft", 0x219e, 0 },
+ { "dblarrowheadup", 0x219f, 0 },
+ { "dblarrowheadright", 0x21a0, 0 },
+ { "dblarrowheaddown", 0x21a1, 0 },
+ { "arrowtailleft", 0x21a2, 0 },
+ { "arrowtailright", 0x21a3, 0 },
+ { "arrowbarleft", 0x21a4, 0 },
+ { "arrowbarup", 0x21a5, 0 },
+ { "arrowbarright", 0x21a6, 0 },
+ { "arrowbardown", 0x21a7, 0 },
+ { "arrowbothvbase", 0x21a8, 0 },
+ { "arrowhookleft", 0x21a9, 0 },
+ { "arrowhookright", 0x21aa, 0 },
+ { "arrowloopleft", 0x21ab, 0 },
+ { "arrowloopright", 0x21ac, 0 },
+ { "arrowwaveboth", 0x21ad, 0 },
+ { "arrowlongbothnot", 0x21ae, 0 },
+ { "arrowzigzag", 0x21af, 0 },
+ { "arrowrightdown", 0x21b4, 0 },
+ { "carriagerreturn", 0x21b5, 0 },
+ { "arrowsemanticlockw", 0x21b6, 0 },
+ { "arrowsemclockw", 0x21b7, 0 },
+ { "home", 0x21b8, 0 },
+ { "tableftright", 0x21b9, 0 },
+ { "arrowanticlockw", 0x21ba, 0 },
+ { "arrowclockw", 0x21bb, 0 },
+ { "arrowlefttophalf", 0x21bc, 0 },
+ { "arrowleftbothalf", 0x21bd, 0 },
+ { "harpoonupright", 0x21be, 0 },
+ { "harpoonupleft", 0x21bf, 0 },
+ { "arrowrighttophalf", 0x21c0, 0 },
+ { "arrowrightbothalf", 0x21c1, 0 },
+ { "harpoondownright", 0x21c2, 0 },
+ { "harpoondownleft", 0x21c3, 0 },
+ { "arrowparrrightleft", 0x21c4, 0 },
+ { "dblarrowupdown", 0x21c5, 0 },
+ { "arrowparrleftright", 0x21c6, 0 },
+ { "dblarrowup", 0x21c8, 0 },
+ { "dblarrowdown", 0x21ca, 0 },
+ { "harpoonleftright", 0x21cb, 0 },
+ { "harpoonrightleft", 0x21cc, 0 },
+ { "arrowdblleftnot", 0x21cd, 0 },
+ { "arrowdbllongbothnot", 0x21ce, 0 },
+ { "arrowdblrightnot", 0x21cf, 0 },
+ { "arrowdbllongboth", 0x21d4, 0 },
+ { "arrowdbllongbothv", 0x21d5, 0 },
+ { "arrowdblnw", 0x21d6, 0 },
+ { "arrowdblne", 0x21d7, 0 },
+ { "arrowdblse", 0x21d8, 0 },
+ { "arrowdblsw", 0x21d9, 0 },
+ { "arrowtripleleft", 0x21da, 0 },
+ { "arrowtripleright", 0x21db, 0 },
+ { "arrowsquiggleleft", 0x21dc, 0 },
+ { "arrowsquiggleright", 0x21dd, 0 },
+ { "arrowopenleft", 0x21e6, 0 },
+ { "arrowopenup", 0x21e7, 0 },
+ { "arrowopenright", 0x21e8, 0 },
+ { "arrowopendown", 0x21e9, 0 },
+ { "complement", 0x2201, 0 },
+ { "notexistential", 0x2204, 0 },
+ { "elementsmall", 0x220a, 0 },
+ { "owner", 0x220b, 0 },
+ { "notowner", 0x220c, 0 },
+ { "ownersmall", 0x220d, 0 },
+ { "eop", 0x220e, 0 },
+ { "coproduct", 0x2210, 0 },
+ { "dotplus", 0x2214, 0 },
+ { "slashmath", 0x2215, 0 },
+ { "backslashmath", 0x2216, 0 },
+ { "ringoperator", 0x2218, 0 },
+ { "bulletmath", 0x2219, 0 },
+ { "cuberoot", 0x221b, 0 },
+ { "fourthroot", 0x221c, 0 },
+ { "measuredangle", 0x2221, 0 },
+ { "sphericalangle", 0x2222, 0 },
+ { "notbar", 0x2224, 0 },
+ { "parallelto", 0x2225, 0 },
+ { "notbardbl", 0x2226, 0 },
+ { "integraldbl", 0x222c, 0 },
+ { "integraltrpl", 0x222d, 0 },
+ { "contintegral", 0x222e, 0 },
+ { "surfintegral", 0x222f, 0 },
+ { "volintegral", 0x2230, 0 },
+ { "clwintegral", 0x2231, 0 },
+ { "clwcontintegral", 0x2232, 0 },
+ { "cclwcontintegral", 0x2233, 0 },
+ { "dotminus", 0x2238, 0 },
+ { "excess", 0x2239, 0 },
+ { "geomproportion", 0x223a, 0 },
+ { "homothetic", 0x223b, 0 },
+ { "revsimilar", 0x223d, 0 },
+ { "lazysinv", 0x223e, 0 },
+ { "sine", 0x223f, 0 },
+ { "wreathproduct", 0x2240, 0 },
+ { "notsimilar", 0x2241, 0 },
+ { "minustilde", 0x2242, 0 },
+ { "asymptequal", 0x2243, 0 },
+ { "notasymptequal", 0x2244, 0 },
+ { "approxorequal", 0x2245, 0 },
+ { "approxnotequal", 0x2246, 0 },
+ { "notapproxequal", 0x2247, 0 },
+ { "almostequal", 0x2248, 0 },
+ { "notalmostequal", 0x2249, 0 },
+ { "almostorequal", 0x224a, 0 },
+ { "tildetrpl", 0x224b, 0 },
+ { "equivasymptotic", 0x224d, 0 },
+ { "geomequivalent", 0x224e, 0 },
+ { "difference", 0x224f, 0 },
+ { "approachlimit", 0x2250, 0 },
+ { "geomequal", 0x2251, 0 },
+ { "imageorapproxequal", 0x2253, 0 },
+ { "colonequal", 0x2254, 0 },
+ { "equalcolon", 0x2255, 0 },
+ { "ringinequal", 0x2256, 0 },
+ { "ringequal", 0x2257, 0 },
+ { "corresponds", 0x2258, 0 },
+ { "estimates", 0x2259, 0 },
+ { "equiangular", 0x225a, 0 },
+ { "starequal", 0x225b, 0 },
+ { "deltaequal", 0x225c, 0 },
+ { "definequal", 0x225d, 0 },
+ { "measurequal", 0x225e, 0 },
+ { "questionequal", 0x225f, 0 },
+ { "notequivalence", 0x2262, 0 },
+ { "strictequivalence", 0x2263, 0 },
+ { "lessdblequal", 0x2266, 0 },
+ { "greaterdblequal", 0x2267, 0 },
+ { "lessnotdblequal", 0x2268, 0 },
+ { "greaternotdblequal", 0x2269, 0 },
+ { "lessmuch", 0x226a, 0 },
+ { "greatermuch", 0x226b, 0 },
+ { "between", 0x226c, 0 },
+ { "notequivasymptotic", 0x226d, 0 },
+ { "notlessequal", 0x2270, 0 },
+ { "notgreaterequal", 0x2271, 0 },
+ { "lessequivlnt", 0x2272, 0 },
+ { "greaterequivlnt", 0x2273, 0 },
+ { "notlessequivlnt", 0x2274, 0 },
+ { "notgreaterequivlnt", 0x2275, 0 },
+ { "notlessgreater", 0x2278, 0 },
+ { "notgreaterless", 0x2279, 0 },
+ { "follows", 0x227b, 0 },
+ { "precedesequal", 0x227c, 0 },
+ { "followsequal", 0x227d, 0 },
+ { "precedequivlnt", 0x227e, 0 },
+ { "followsequivlnt", 0x227f, 0 },
+ { "notpreceeds", 0x2280, 0 },
+ { "notfollows", 0x2281, 0 },
+ { "notpropersubset", 0x2284, 0 },
+ { "notpropersuperset", 0x2285, 0 },
+ { "notreflexsubset", 0x2288, 0 },
+ { "notreflexsuperset", 0x2289, 0 },
+ { "multiset", 0x228c, 0 },
+ { "multiplymultiset", 0x228d, 0 },
+ { "unionmulti", 0x228e, 0 },
+ { "squareimage", 0x228f, 0 },
+ { "squareoriginal", 0x2290, 0 },
+ { "subsetsqequal", 0x2291, 0 },
+ { "supersetsqequal", 0x2292, 0 },
+ { "intersectionsq", 0x2293, 0 },
+ { "unionsq", 0x2294, 0 },
+ { "circleminus", 0x2296, 0 },
+ { "circledivide", 0x2298, 0 },
+ { "circledot", 0x2299, 0 },
+ { "circlering", 0x229a, 0 },
+ { "circleasterisk", 0x229b, 0 },
+ { "circleequal", 0x229c, 0 },
+ { "circlevertbar", 0x229d, 0 },
+ { "squareplus", 0x229e, 0 },
+ { "squareminus", 0x229f, 0 },
+ { "squaremultiply", 0x22a0, 0 },
+ { "squaredot", 0x22a1, 0 },
+ { "turnstileleft", 0x22a2, 0 },
+ { "turnstileright", 0x22a3, 0 },
+ { "latticetop", 0x22a4, 0 },
+ { "assertion", 0x22a6, 0 },
+ { "truestate", 0x22a7, 0 },
+ { "satisfy", 0x22a8, 0 },
+ { "force", 0x22a9, 0 },
+ { "tacktrpl", 0x22aa, 0 },
+ { "forceextr", 0x22ab, 0 },
+ { "notturnstileleft", 0x22ac, 0 },
+ { "notsatisfy", 0x22ad, 0 },
+ { "notforce", 0x22ae, 0 },
+ { "notforceextr", 0x22af, 0 },
+ { "lowerrank", 0x22b0, 0 },
+ { "higherrank", 0x22b1, 0 },
+ { "triangleright", 0x22b2, 0 },
+ { "triangleleft", 0x22b3, 0 },
+ { "triangleftequal", 0x22b4, 0 },
+ { "triangrightequal", 0x22b5, 0 },
+ { "original", 0x22b6, 0 },
+ { "image", 0x22b7, 0 },
+ { "multimap", 0x22b8, 0 },
+ { "hermitconjmatrix", 0x22b9, 0 },
+ { "intercal", 0x22ba, 0 },
+ { "xor", 0x22bb, 0 },
+ { "nand", 0x22bc, 0 },
+ { "nor", 0x22bd, 0 },
+ { "rightanglearc", 0x22be, 0 },
+ { "narylogicaland", 0x22c0, 0 },
+ { "narylogicalor", 0x22c1, 0 },
+ { "naryintersection", 0x22c2, 0 },
+ { "naryunion", 0x22c3, 0 },
+ { "diamondmath", 0x22c4, 0 },
+ { "divideonmultiply", 0x22c7, 0 },
+ { "bowtie", 0x22c8, 0 },
+ { "multicloseleft", 0x22c9, 0 },
+ { "multicloseright", 0x22ca, 0 },
+ { "multiopenleft", 0x22cb, 0 },
+ { "multiopenright", 0x22cc, 0 },
+ { "revasymptequal", 0x22cd, 0 },
+ { "curlor", 0x22ce, 0 },
+ { "curland", 0x22cf, 0 },
+ { "subsetdbl", 0x22d0, 0 },
+ { "supersetdbl", 0x22d1, 0 },
+ { "uniondbl", 0x22d2, 0 },
+ { "intersectiondbl", 0x22d3, 0 },
+ { "fork", 0x22d4, 0 },
+ { "equalparallel", 0x22d5, 0 },
+ { "lessdot", 0x22d6, 0 },
+ { "greaterdot", 0x22d7, 0 },
+ { "verymuchless", 0x22d8, 0 },
+ { "verymuchgreater", 0x22d9, 0 },
+ { "lessequalgreater", 0x22da, 0 },
+ { "greaterequalless", 0x22db, 0 },
+ { "equalless", 0x22dc, 0 },
+ { "equalgreater", 0x22dd, 0 },
+ { "equalprecedes", 0x22de, 0 },
+ { "equalfollows", 0x22df, 0 },
+ { "preceedsnotequal", 0x22e0, 0 },
+ { "followsnotequal", 0x22e1, 0 },
+ { "notsubsetsqequal", 0x22e2, 0 },
+ { "notsupersetsqequal", 0x22e3, 0 },
+ { "sqimageornotequal", 0x22e4, 0 },
+ { "sqoriginornotequal", 0x22e5, 0 },
+ { "lessnotequivlnt", 0x22e6, 0 },
+ { "greaternotequivlnt", 0x22e7, 0 },
+ { "preceedsnotsimilar", 0x22e8, 0 },
+ { "followsnotequivlnt", 0x22e9, 0 },
+ { "nottriangleleft", 0x22ea, 0 },
+ { "nottriangleright", 0x22eb, 0 },
+ { "nottriangleleftequal", 0x22ec, 0 },
+ { "nottrianglerightequal", 0x22ed, 0 },
+ { "vertellipsis", 0x22ee, 0 },
+ { "midhorizellipsis", 0x22ef, 0 },
+ { "upslopeellipsis", 0x22f0, 0 },
+ { "downslopeellipsis", 0x22f1, 0 },
+ { "perspcorrespond", 0x2306, 0 },
+ { "ceilingleft", 0x2308, 0 },
+ { "ceilingright", 0x2309, 0 },
+ { "floorleft", 0x230a, 0 },
+ { "floorright", 0x230b, 0 },
+ { "slurabove", 0x2322, 0 },
+ { "slurbelow", 0x2323, 0 },
+ { "null", 0x2400, 0 },
+ { "startofhead", 0x2401, 0 },
+ { "starttext", 0x2402, 0 },
+ { "endtext", 0x2403, 0 },
+ { "endtrans", 0x2404, 0 },
+ { "enquiry", 0x2405, 0 },
+ { "acknowledge", 0x2406, 0 },
+ { "bell", 0x2407, 0 },
+ { "backspace", 0x2408, 0 },
+ { "horiztab", 0x2409, 0 },
+ { "linefeed", 0x240a, 0 },
+ { "verttab", 0x240b, 0 },
+ { "formfeed", 0x240c, 0 },
+ { "shiftout", 0x240e, 0 },
+ { "shiftin", 0x240f, 0 },
+ { "datalinkescape", 0x2410, 0 },
+ { "devcon1", 0x2411, 0 },
+ { "devcon2", 0x2412, 0 },
+ { "devcon3", 0x2413, 0 },
+ { "devcon4", 0x2414, 0 },
+ { "negacknowledge", 0x2415, 0 },
+ { "synch", 0x2416, 0 },
+ { "endtransblock", 0x2417, 0 },
+ { "cancel", 0x2418, 0 },
+ { "endmedium", 0x2419, 0 },
+ { "substitute", 0x241a, 0 },
+ { "escape", 0x241b, 0 },
+ { "fileseparator", 0x241c, 0 },
+ { "groupseparator", 0x241d, 0 },
+ { "recordseparator", 0x241e, 0 },
+ { "unitseparator", 0x241f, 0 },
+ { "spaceliteral", 0x2420, 0 },
+ { "delete", 0x2421, 0 },
+ { "blankb", 0x2422, 0 },
+ { "spaceopenbox", 0x2423, 0 },
+ { "newline", 0x2424, 0 },
+ { "lthorizform", 0x2500, 0 },
+ { "hvhorizform", 0x2501, 0 },
+ { "ltvertform", 0x2502, 0 },
+ { "hvvertform", 0x2503, 0 },
+ { "ltdashtriphorizform", 0x2504, 0 },
+ { "hvdashtriphorizform", 0x2505, 0 },
+ { "ltdashtripvertform", 0x2506, 0 },
+ { "hvdashtripvertform", 0x2507, 0 },
+ { "ltdashquadhorizform", 0x2508, 0 },
+ { "hvdashquadhorizform", 0x2509, 0 },
+ { "ltdashquadvertform", 0x250a, 0 },
+ { "hvdashquadvertform", 0x250b, 0 },
+ { "ltdnrtform", 0x250c, 0 },
+ { "dnltrthvform", 0x250d, 0 },
+ { "dnhvrtltform", 0x250e, 0 },
+ { "hvdnrtform", 0x250f, 0 },
+ { "ltdnleftform", 0x2510, 0 },
+ { "dnltlefthvform", 0x2511, 0 },
+ { "dnhvleftltform", 0x2512, 0 },
+ { "hvdnleftform", 0x2513, 0 },
+ { "ltuprtform", 0x2514, 0 },
+ { "upltrthvform", 0x2515, 0 },
+ { "uphvrtltform", 0x2516, 0 },
+ { "hvuprtform", 0x2517, 0 },
+ { "ltupleftform", 0x2518, 0 },
+ { "upltlefthvform", 0x2519, 0 },
+ { "uphvleftltform", 0x251a, 0 },
+ { "hvupleftform", 0x251b, 0 },
+ { "ltvertrightform", 0x251c, 0 },
+ { "vertltrthvform", 0x251d, 0 },
+ { "uphvrtdnltform", 0x251e, 0 },
+ { "dnhvrtupltform", 0x251f, 0 },
+ { "verthvrtltform", 0x2520, 0 },
+ { "dnltrtuphvform", 0x2521, 0 },
+ { "upltrtdnhvform", 0x2522, 0 },
+ { "hvvertrtform", 0x2523, 0 },
+ { "ltvertleftform", 0x2524, 0 },
+ { "vtltlefthvform", 0x2525, 0 },
+ { "uphvleftdnltform", 0x2526, 0 },
+ { "dnhvleftupltform", 0x2527, 0 },
+ { "verthvleftltform", 0x2528, 0 },
+ { "dnltleftuphvform", 0x2529, 0 },
+ { "upltleftdnhvform", 0x252a, 0 },
+ { "hvvertleftform", 0x252b, 0 },
+ { "ltdnhorizform", 0x252c, 0 },
+ { "lefthvrtdnltform", 0x252d, 0 },
+ { "rthvleftdnltform", 0x252e, 0 },
+ { "dnlthorizhvform", 0x252f, 0 },
+ { "dnhvhorizltform", 0x2530, 0 },
+ { "rtltrtdnhvform", 0x2531, 0 },
+ { "leftltrtdnhvform", 0x2532, 0 },
+ { "hvdnhorizform", 0x2533, 0 },
+ { "ltuphorizform", 0x2534, 0 },
+ { "lefthvrtupltform", 0x2535, 0 },
+ { "rthvleftupltform", 0x2536, 0 },
+ { "uplthorizhvform", 0x2537, 0 },
+ { "uphvhorizltform", 0x2538, 0 },
+ { "rtltleftuphvform", 0x2539, 0 },
+ { "leftltrtuphvform", 0x253a, 0 },
+ { "hvuphorizform", 0x253b, 0 },
+ { "ltverthorizform", 0x253c, 0 },
+ { "lefthvrtvertltform", 0x253d, 0 },
+ { "rthvleftvertltform", 0x253e, 0 },
+ { "vertlthorizhvform", 0x253f, 0 },
+ { "uphvdnhorizltform", 0x2540, 0 },
+ { "dnhvuphorizltform", 0x2541, 0 },
+ { "verthvhorizltform", 0x2542, 0 },
+ { "leftuphvrtdnltform", 0x2543, 0 },
+ { "rtuphvleftdnltform", 0x2544, 0 },
+ { "leftdnhvrtupltform", 0x2545, 0 },
+ { "rtdnhvleftupltform", 0x2546, 0 },
+ { "dnltuphorizhvform", 0x2547, 0 },
+ { "upltdnhorizhvform", 0x2548, 0 },
+ { "rtltleftverthvform", 0x2549, 0 },
+ { "leftltrtverthvform", 0x254a, 0 },
+ { "hvverthorizform", 0x254b, 0 },
+ { "ltdashdblhorizform", 0x254c, 0 },
+ { "hvdashdblhorizform", 0x254d, 0 },
+ { "ltdashdblvertform", 0x254e, 0 },
+ { "hvdashdblvertform", 0x254f, 0 },
+ { "horizdblbar", 0x2550, 0 },
+ { "vertdblbar", 0x2551, 0 },
+ { "dnrtdblform", 0x2552, 0 },
+ { "dndblrtform", 0x2553, 0 },
+ { "dbldnrtform", 0x2554, 0 },
+ { "dnleftdblform", 0x2555, 0 },
+ { "dndblleftform", 0x2556, 0 },
+ { "dbldnleftform", 0x2557, 0 },
+ { "uprtdblform", 0x2558, 0 },
+ { "updblrtform", 0x2559, 0 },
+ { "dbluprtform", 0x255a, 0 },
+ { "upleftdblform", 0x255b, 0 },
+ { "updblleftform", 0x255c, 0 },
+ { "dblupleftform", 0x255d, 0 },
+ { "vertrtdblform", 0x255e, 0 },
+ { "vertdblrtform", 0x255f, 0 },
+ { "dblvertrtform", 0x2560, 0 },
+ { "vertleftdblform", 0x2561, 0 },
+ { "vertdblleftform", 0x2562, 0 },
+ { "dblvertleftform", 0x2563, 0 },
+ { "dnhorizdblform", 0x2564, 0 },
+ { "dndblhorizform", 0x2565, 0 },
+ { "dbldnhorizform", 0x2566, 0 },
+ { "uphorizdblform", 0x2567, 0 },
+ { "updblhorizform", 0x2568, 0 },
+ { "dbluphorizform", 0x2569, 0 },
+ { "verthorizdblform", 0x256a, 0 },
+ { "vertdblhorizform", 0x256b, 0 },
+ { "dblverthorizform", 0x256c, 0 },
+ { "ltarcdnrtform", 0x256d, 0 },
+ { "ltarcdnleftform", 0x256e, 0 },
+ { "ltarcupleftform", 0x256f, 0 },
+ { "ltarcuprtform", 0x2570, 0 },
+ { "forwarddiagonal", 0x2571, 0 },
+ { "backwarddiagonal", 0x2572, 0 },
+ { "ltdiagonalcross", 0x2573, 0 },
+ { "dneighthblock", 0x2581, 0 },
+ { "dnquarterblock", 0x2582, 0 },
+ { "dnthreeeighthblock", 0x2583, 0 },
+ { "dnfiveeighthblock", 0x2585, 0 },
+ { "dnthreequarterblock", 0x2586, 0 },
+ { "dnseveneighthblock", 0x2587, 0 },
+ { "lfseveneighthblock", 0x2589, 0 },
+ { "lfthreequarterblock", 0x258a, 0 },
+ { "lffiveeighthblock", 0x258b, 0 },
+ { "lfthreeeighthblock", 0x258d, 0 },
+ { "lfquarterblock", 0x258e, 0 },
+ { "lfeighthblock", 0x258f, 0 },
+ { "upeighthblock", 0x2594, 0 },
+ { "rteighthblock", 0x2595, 0 },
+ { "box", 0x25a1, 0 },
+ { "boxrounded", 0x25a2, 0 },
+ { "boxnested", 0x25a3, 0 },
+ { "boxhorizhatch", 0x25a4, 0 },
+ { "boxverthatch", 0x25a5, 0 },
+ { "boxcrosshatch", 0x25a6, 0 },
+ { "boxleftdiaghatch", 0x25a7, 0 },
+ { "boxrtdiaghatch", 0x25a8, 0 },
+ { "boxcrossdiaghatch", 0x25a9, 0 },
+ { "smallboxfilled", 0x25aa, 0 },
+ { "smallbox", 0x25ab, 0 },
+ { "rectangle", 0x25ad, 0 },
+ { "filledvertrect", 0x25ae, 0 },
+ { "vertrectangle", 0x25af, 0 },
+ { "filledparallelogram", 0x25b0, 0 },
+ { "parallelogram", 0x25b1, 0 },
+ { "triangle", 0x25b3, 0 },
+ { "smalltrianglesld", 0x25b4, 0 },
+ { "smalltriangle", 0x25b5, 0 },
+ { "trianglerightsld1", 0x25b6, 0 },
+ { "triangleright1", 0x25b7, 0 },
+ { "smalltrianglerightsld", 0x25b8, 0 },
+ { "smalltriangleright", 0x25b9, 0 },
+ { "triagrtopen", 0x25bb, 0 },
+ { "triangleinv", 0x25bd, 0 },
+ { "smalltriangleinvsld", 0x25be, 0 },
+ { "smalltriangleinv", 0x25bf, 0 },
+ { "triangleleftsld1", 0x25c0, 0 },
+ { "triangleleft1", 0x25c1, 0 },
+ { "smalltriangleleftsld", 0x25c2, 0 },
+ { "smalltriangleleft", 0x25c3, 0 },
+ { "triaglfopen", 0x25c5, 0 },
+ { "diamondrhombsolid", 0x25c6, 0 },
+ { "diamondrhomb", 0x25c7, 0 },
+ { "diamondrhombnested", 0x25c8, 0 },
+ { "circledash", 0x25cc, 0 },
+ { "circleverthatch", 0x25cd, 0 },
+ { "circlesolid", 0x25cf, 0 },
+ { "circleleftsld", 0x25d0, 0 },
+ { "circlerightsld", 0x25d1, 0 },
+ { "circlebottomsld", 0x25d2, 0 },
+ { "circletopsld", 0x25d3, 0 },
+ { "circlenesld", 0x25d4, 0 },
+ { "circlenwopen", 0x25d5, 0 },
+ { "semicircleleftsld", 0x25d6, 0 },
+ { "semicirclelertsld", 0x25d7, 0 },
+ { "invsemicircleup", 0x25da, 0 },
+ { "invsemicircledn", 0x25db, 0 },
+ { "nwquadarc", 0x25dc, 0 },
+ { "nequadarc", 0x25dd, 0 },
+ { "sequadarc", 0x25de, 0 },
+ { "swquadarc", 0x25df, 0 },
+ { "toparc", 0x25e0, 0 },
+ { "bottomarc", 0x25e1, 0 },
+ { "trianglesesld", 0x25e2, 0 },
+ { "triangleswsld", 0x25e3, 0 },
+ { "tranglenwsld", 0x25e4, 0 },
+ { "trianglenesld", 0x25e5, 0 },
+ { "squareleftsld", 0x25e7, 0 },
+ { "squarerightsld", 0x25e8, 0 },
+ { "squarenwsld", 0x25e9, 0 },
+ { "squaresesld", 0x25ea, 0 },
+ { "squarevertbisect", 0x25eb, 0 },
+ { "triangledot", 0x25ec, 0 },
+ { "triangleleftsld", 0x25ed, 0 },
+ { "trianglerightsld", 0x25ee, 0 },
+ { "heartopen", 0x2661, 0 },
+ { "diamondopen", 0x2662, 0 },
+ { "spadeopen", 0x2664, 0 },
+ { "Omegaiotasubleniscircumflex", 0x1fae, 0 },
+ { "Omegaleniscircumflex", 0x1f6e, 0 },
+ { "Upsilonaspercircumflex", 0x1f5f, 0 },
+ { "dieresiscircumflex", 0x1fc1, 0 },
+ { "leniscircumflex", 0x1fcf, 0 },
+ { "aspercircumflex", 0x1fdf, 0 },
+ { "alphaleniscircumflex", 0x1f06, 0 },
+ { "alphaaspercircumflex", 0x1f07, 0 },
+ { "etaleniscircumflex", 0x1f26, 0 },
+ { "etaaspercircumflex", 0x1f27, 0 },
+ { "iotaleniscircumflex", 0x1f36, 0 },
+ { "iotaaspercircumflex", 0x1f37, 0 },
+ { "upsilonleniscircumflex", 0x1f56, 0 },
+ { "upsilonaspercircumflex", 0x1f57, 0 },
+ { "omegaleniscircumflex", 0x1f66, 0 },
+ { "omegaaspercircumflex", 0x1f67, 0 },
+ { "alphaiotasubleniscircumflex", 0x1f86, 0 },
+ { "alphaiotasubaspercircumflex", 0x1f87, 0 },
+ { "etaiotasubleniscircumflex", 0x1f96, 0 },
+ { "etaiotasubaspercircumflex", 0x1f97, 0 },
+ { "omegaiotasubleniscircumflex", 0x1fa6, 0 },
+ { "omegaiotasubaspercircumflex", 0x1fa7, 0 },
+ { "alphacircumflex", 0x1fb6, 0 },
+ { "alphaiotasubcircumflex", 0x1fb7, 0 },
+ { "etacircumflex", 0x1fc6, 0 },
+ { "etaiotasubcircumflex", 0x1fc7, 0 },
+ { "iotacircumflex", 0x1fd6, 0 },
+ { "iotadieresiscircumflex", 0x1fd7, 0 },
+ { "upsiloncircumflex", 0x1fe6, 0 },
+ { "omegacircumflex", 0x1ff6, 0 },
+ { "omegaiotasubcircumflex", 0x1ff7, 0 },
+ { "upsilondieresiscircumflex", 0x1fe7, 0 },
+ { "dialytika", 0x0308, 0 },
+ { "koronis", 0x1fbd, 0 },
+ { "prosgegrammeni", 0x1fbe, 0 },
+ { "psili", 0x1fbf, 0 },
+ { "perispomeni", 0x1fc0, 0 },
+ { "varia", 0x1fef, 0 },
+ { "oxia", 0x1ffd, 0 },
+ { "dasia", 0x1ffe, 0 },
+ { "Alphasmall", 0xf500, 0 },
+ { "Betasmall", 0xf501, 0 },
+ { "Gammasmall", 0xf502, 0 },
+ { "Deltasmall", 0xf503, 0 },
+ { "Epsilonsmall", 0xf504, 0 },
+ { "Zetasmall", 0xf505, 0 },
+ { "Etasmall", 0xf506, 0 },
+ { "Thetasmall", 0xf507, 0 },
+ { "Iotasmall", 0xf508, 0 },
+ { "Kappasmall", 0xf509, 0 },
+ { "Lambdasmall", 0xf50a, 0 },
+ { "Musmall", 0xf50b, 0 },
+ { "Nusmall", 0xf50c, 0 },
+ { "Xismall", 0xf50d, 0 },
+ { "Omicronsmall", 0xf50e, 0 },
+ { "Pismall", 0xf50f, 0 },
+ { "Rhosmall", 0xf510, 0 },
+ { "Sigmasmall", 0xf512, 0 },
+ { "Tausmall", 0xf513, 0 },
+ { "Upsilonsmall", 0xf514, 0 },
+ { "Phismall", 0xf515, 0 },
+ { "Chismall", 0xf516, 0 },
+ { "Psismall", 0xf517, 0 },
+ { "Omegasmall", 0xf518, 0 },
+ { "Iotadieresissmall", 0xf519, 0 },
+ { "Upsilondieresissmall", 0xf51a, 0 },
+ { "uni2A0B.lgdisplay", 0xea57, 0 },
+ { "uni2A0B.uplgdisplay", 0xea57, 0 },
+ { "uni2A15.lgdisplay", 0xe376, 0 },
+ { "uni2A15.uplgdisplay", 0xe376, 0 },
+ { "uni2A16.lgdisplay", 0xe377, 0 },
+ { "uni2A16.uplgdisplay", 0xe377, 0 },
+ { "uni2A10.lgdisplay", 0xe395, 0 },
+ { "uni2A10.uplgdisplay", 0xe395, 0 },
+ { "uni2A12.lgdisplay", 0xe397, 0 },
+ { "uni2A12.uplgdisplay", 0xe397, 0 },
+ { "uni2A13.lgdisplay", 0xe398, 0 },
+ { "uni2A13.uplgdisplay", 0xe398, 0 },
+ { "uni2A14.lgdisplay", 0xe399, 0 },
+ { "uni2A14.uplgdisplay", 0xe399, 0 },
+ { "uni2A17.lgdisplay", 0xe39a, 0 },
+ { "uni2A17.uplgdisplay", 0xe39a, 0 },
+ { "uni2A11.uplgdisplay", 0xe39b, 0 },
+ { "uni2A11.lgdisplay", 0xe39b, 0 },
+ { "uni2A0F.lgdisplay", 0xe3d3, 0 },
+ { "uni2A0F.uplgdisplay", 0xe3d3, 0 },
+/* From Richard Kinch's TeX list of glyph aliases */
+ { "fscript", 0x192, 0 },
+ { "fraction1", 0x2215, 0 },
+ { "negationslash", 0x2215, 0 },
+ { "circleR", 0xae, 0 },
+ { "circlecopyrt", 0xa9, 0 },
+ { "smile", 0x263a, 0 },
+ { "Ifractur", 0x2111, 0 },
+ { "Rfractur", 0x211C, 0 },
+ { "Omegainv", 0x2127, 0 },
+ { "mho", 0x2127, 0 },
+ { "alephmath", 0x2135, 0 },
+ { "beth", 0x2136, 0 },
+ { "bethmath", 0x2136, 0 },
+ { "gimelmath", 0x2137, 0 },
+ { "daleth", 0x2138, 0 },
+ { "daletmath", 0x2138, 0 },
+ { "arrowbothv", 0x2195, 0 },
+ { "prime1", 0x2032, 0 },
+ { "primerev1", 0x2035, 0 },
+ { "primereverse", 0x2035, 0 },
+ { "followsequal1", 0x227d, 0 },
+ { "similarequal", 0x2243, 0 },
+ { "square", 0x25a1, 0 },
+ { "squaresolid", 0x25a0, 0 },
+ { "squaresmallsolid", 0x25aa, 0 },
+ { "diamondsolid", 0x25c6, 0 },
+ { "clockwise", 0x21bb, 0 },
+ { "anticlockwise", 0x21ba, 0 },
+ { "forces", 0x22a9, 0 },
+ { "forcesbar", 0x22aa, 0 },
+ { "satisfies", 0x22a8, 0 },
+ { "dblarrowdwn", 0x21ca, 0 },
+ { "shiftleft", 0x2196, 0 },
+ { "shiftright", 0x2197, 0 },
+ { "squiggleright", 0x21dd, 0 },
+ { "squiggleleft", 0x21dc, 0 },
+ { "squiggleleftright", 0x21ad, 0 },
+ { "curlyleft", 0x21ab, 0 },
+ { "curlyright", 0x21ac, 0 },
+ { "followsorequal", 0x227d, 0 },
+ { "equalsdots", 0x2251, 0 },
+ { "defines", 0x225c, 0 },
+ { "ng", 0x014b, 0 },
+ { "Ng", 0x014a, 0 },
+ { "visiblespace", 0x2420, 0 },
+ { "dslash", 0x0111, 0 },
+ { "tie1", 0x2040, 0 },
+ { "arrowdblbothv", 0x21d5, 0 },
+ { "precedesequal1", 0x227c, 0 },
+ { "greaterorsimilar", 0x2273, 0 },
+ { "precedesorequal", 0x227e, 0 },
+ { "lessorsimilar", 0x2272, 0 },
+ { "equalorgreater", 0x22dd, 0 },
+ { "lessorequalslant", 0x2264, 0 },
+ { "equaldotrightleft", 0x2253, 0 },
+ { "equaldotleftright", 0x2252, 0 },
+ { "followsorcurly", 0x227d, 0 },
+ { "greaterorequalslant", 0x2265, 0 },
+ { "trianglerightequal", 0x22b5, 0 },
+ { "triangleleftequal", 0x22b4, 0 },
+ { "triangledownsld", 0x25bc, 0 },
+ { "arrowaxisright", 0x2192, 0 },
+ { "arrowaxisleft", 0x2190, 0 },
+ { "trianglesolid", 0x25b2, 0 },
+ { "greaterlessequal", 0x22db, 0 },
+ { "orunderscore", 0x22bb, 0 },
+ { "frown", 0x2322, 0 },
+ { "uprise", 0x22cf, 0 },
+ { "downfall", 0x22ce, 0 },
+ { "subsetdblequal", 0x2286, 0 },
+ { "supersetdblequal", 0x2287, 0 },
+ { "Finv", 0x2132, 0 },
+ { "notarrowboth", 0x21ae, 0 },
+ { "archleftdown", 0x21b6, 0 },
+ { "archrightdown", 0x21b7, 0 },
+ { "notdblarrowleft", 0x21cd, 0 },
+ { "notdblarrowboth", 0x21ce, 0 },
+ { "notdblarrowright", 0x21cf, 0 },
+ { "epsiloninv", 0x220a, 0 },
+ { "equalorsimilar", 0x2242, 0 },
+ { "notprecedes", 0x2280, 0 },
+ { "notsubseteql", 0x2288, 0 },
+ { "notsuperseteql", 0x2289, 0 },
+ { "subsetnoteql", 0x228a, 0 },
+ { "supersetnoteql", 0x228b, 0 },
+ { "notturnstile", 0x22ac, 0 },
+ { "notforcesextra", 0x22af, 0 },
+ { "dividemultiply", 0x22c7, 0 },
+ { "notprecedesoreql", 0x22e0, 0 },
+ { "notfollowsoreql", 0x22e1, 0 },
+ { "lessornotsimilar", 0x22e6, 0 },
+ { "greaterornotsimilar", 0x22e7, 0 },
+ { "precedeornoteqvlnt", 0x22e8, 0 },
+ { "followornoteqvlnt", 0x22e9, 0 },
+ { "nottriangeqlleft", 0x22ec, 0 },
+ { "nottriangeqlright", 0x22ed, 0 },
+ { "angbracketleft", 0x3008, 0 },
+ { "angbracketright", 0x3009, 0 },
+ { "check", 0x2713, 0 },
+ { "circleS", 0x24c8, 0 },
+ { "rightanglenw", 0x250c, 0 },
+ { "rightanglene", 0x2510, 0 },
+ { "rightanglesw", 0x2514, 0 },
+ { "rightanglese", 0x2518, 0 },
+ { "Yen", 0x00a5, 0 },
+ { "permill", 0x2030, 0 },
+ { "recipe", 0x211e, 0 },
+ { "pertenmill", 0x2031, 0 },
+ { "lnot", 0x00ac, 0 },
+ { "circleP", 0x2117, 0 },
+ { "surd", 0x221a, 0 },
+ { "asciigrave", 0x60, 0 },
+ { "asciigrave", 0x60, 0 },
+ { "asciiacute", 0xb4, 0 },
+ { "asciidieresis", 0xa8, 0 },
+ { "pilcrow", 0xb6, 0 },
+/* Useful names to use to find glyphs */
+ { "circumflexcomb", 0x302, 0 },
+ { "macroncomb", 0x304, 0 },
+ { "brevecomb", 0x306, 0 },
+ { "diaeresiscomb", 0x308, 0 },
+ { "caroncomb", 0x30c, 0 },
+ { "vrachycomb", 0x306, 0 },
+ { "psilicomb", 0x313, 0 },
+ { "dasiacomb", 0x314, 0 },
+ { "psilivaria", 0x1fcd, 0 },
+ { "psilioxia", 0x1fce, 0 },
+ { "psiliperispomeni", 0x1fcf, 0 },
+ { "dasiavaria", 0x1fdd, 0 },
+ { "dasiaoxia", 0x1fde, 0 },
+ { "dasiaperispomeni", 0x1fdf, 0 },
+ { "dialytikavaria", 0x1fed, 0 },
+ { "dialytikaoxia", 0x1fee, 0 },
+ { "dialytikaperispomeni", 0x1fc1, 0 },
+/* Adobe spells diaeresis the American way, as dieresis */
+ { "diaeresis", 0xa8, 0 },
+ { "Adiaeresis", 0xC4, 0 },
+ { "Ediaeresis", 0xCB, 0 },
+ { "Idiaeresis", 0xCF, 0 },
+ { "Odiaeresis", 0xD6, 0 },
+ { "Udiaeresis", 0xDC, 0 },
+ { "adiaeresis", 0xE4, 0 },
+ { "ediaeresis", 0xEB, 0 },
+ { "idiaeresis", 0xEF, 0 },
+ { "odiaeresis", 0xF6, 0 },
+ { "udiaeresis", 0xFC, 0 },
+ { "Ydiaeresis", 0x178, 0 },
+ { "diaeresistonos", 0x385, 0 },
+ { "iotadiaeresistonos", 0x390, 0 },
+ { "Iotadiaeresis", 0x3AA, 0 },
+ { "Upsilondiaeresis", 0x3AB, 0 },
+ { "upsilondiaeresistonos", 0x3B0, 0 },
+ { "iotadiaeresis", 0x3CA, 0 },
+ { "upsilondiaeresis", 0x3CB, 0 },
+ { "Wdiaeresis", 0x1e84, 0 },
+ { "wdiaeresis", 0x1e85, 0 },
+ { "ETH", 0xd0, 0 },
+ { "THORN", 0xde, 0 },
+ { "ssharp", 0xdf, 0 },
+ { "Ooblique", 0xd8, 0 },
+ { "notsign", 0xac, 0 },
+/* Sun has used "masculine" for ordmasculine */
+ { NULL, 0, 0 }
+};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/nouiutil.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/nouiutil.c
new file mode 100644
index 00000000000..109b13eeb79
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/nouiutil.c
@@ -0,0 +1,161 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "uiinterface.h"
+#include "splinefont.h"
+
+static void NOUI_IError(const char *format,...) {
+ va_list ap;
+ char buffer[400], *str;
+ va_start(ap,format);
+ fprintf(stderr, "Internal Error: " );
+ vsnprintf(buffer,sizeof(buffer),format,ap);
+ str = buffer;
+ fprintf(stderr,"%s",str);
+ if ( str[strlen(str)-1]!='\n' )
+ putc('\n',stderr);
+ va_end(ap);
+}
+
+static void NOUI__LogError(const char *format,va_list ap) {
+ char buffer[400], *str;
+ vsnprintf(buffer,sizeof(buffer),format,ap);
+ str = buffer;
+ fprintf(stderr,"%s",str);
+ if ( str[strlen(str)-1]!='\n' )
+ putc('\n',stderr);
+}
+
+static void NOUI_LogError(const char *format,...) {
+ va_list ap;
+
+ va_start(ap,format);
+ NOUI__LogError(format,ap);
+ va_end(ap);
+}
+
+static void NOUI_post_notice(const char *title,const char *statement,...) {
+ va_list ap;
+ va_start(ap,statement);
+ NOUI__LogError(statement,ap);
+ va_end(ap);
+}
+
+static void NOUI_post_error(const char *title,const char *statement,...) {
+ va_list ap;
+ va_start(ap,statement);
+ NOUI__LogError(statement,ap);
+ va_end(ap);
+}
+
+static int NOUI_ask(const char *title, const char **answers,
+ int def, int cancel,const char *question,...) {
+return( def );
+}
+
+static int NOUI_choose(const char *title, const char **choices,int cnt, int def,
+ const char *question,...) {
+return( def );
+}
+
+static int NOUI_choose_multiple(char *title, const char **choices,char *sel,
+ int cnt, char *buts[2], const char *question,...) {
+return( -1 );
+}
+
+static char *NOUI_ask_string(const char *title, const char *def,
+ const char *question,...) {
+return( (char *) def );
+}
+
+static char *NOUI_open_file(const char *title, const char *defaultfile,
+ const char *initial_filter) {
+return( NULL );
+}
+
+static char *NOUI_saveas_file(const char *title, const char *defaultfile,
+ const char *initial_filter) {
+return( copy(defaultfile) );
+}
+
+static void NOUI_progress_start(int delay, const char *title, const char *line1,
+ const char *line2, int tot, int stages) {
+}
+
+static void NOUI_void_void_noop(void) {
+}
+
+static void NOUI_void_int_noop(int useless) {
+}
+
+static int NOUI_int_int_noop(int useless) {
+return( true );
+}
+
+static void NOUI_void_str_noop(const char * useless) {
+}
+
+static int NOUI_alwaystrue(void) {
+return( true );
+}
+
+static int NOUI_DefaultStrokeFlags(void) {
+return( sf_correctdir );
+}
+
+static struct ui_interface noui_interface = {
+ NOUI_IError,
+ NOUI_post_error,
+ NOUI_LogError,
+ NOUI_post_notice,
+ NOUI_ask,
+ NOUI_choose,
+ NOUI_choose_multiple,
+ NOUI_ask_string,
+ NOUI_ask_string, /* password */
+ NOUI_open_file,
+ NOUI_saveas_file,
+
+ NOUI_progress_start,
+ NOUI_void_void_noop,
+ NOUI_void_void_noop,
+ NOUI_void_int_noop,
+ NOUI_alwaystrue,
+ NOUI_alwaystrue,
+ NOUI_int_int_noop,
+ NOUI_void_str_noop,
+ NOUI_void_str_noop,
+ NOUI_void_void_noop,
+ NOUI_void_void_noop,
+ NOUI_void_int_noop,
+ NOUI_void_int_noop,
+ NOUI_alwaystrue,
+
+ NOUI_void_void_noop,
+
+ NOUI_DefaultStrokeFlags
+};
+struct ui_interface *ui_interface = &noui_interface;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/nowakowskittfinstr.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/nowakowskittfinstr.c
new file mode 100644
index 00000000000..774f302d95b
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/nowakowskittfinstr.c
@@ -0,0 +1,5268 @@
+/* Copyright (C) 2000-2012 by
+ George Williams, Michal Nowakowski & Alexey Kryukov */
+
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h"
+#define _USE_MATH_DEFINES
+#include <ctype.h>
+#include <math.h>
+
+#include "ttf.h"
+#include "splinefont.h"
+#include "stemdb.h"
+
+extern int autohint_before_generate;
+
+int instruct_diagonal_stems = 1,
+ instruct_serif_stems = 1,
+ instruct_ball_terminals = 1,
+ interpolate_strong = 1,
+ interpolate_more_strong = 1, /* not applicable if interpolate_strong==0 */
+ control_counters = 0;
+
+/* non-optimized instructions will be using a stack of depth 6, allowing
+ * for easy testing whether the code leaves trash on the stack or not.
+ */
+#define OPTIMIZE_TTF_INSTRS 1
+#if OPTIMIZE_TTF_INSTRS
+#define STACK_DEPTH 256
+#else
+#define STACK_DEPTH 6
+#endif
+
+/* define some often used instructions */
+#define SVTCA_y (0x00)
+#define SVTCA_x (0x01)
+#define SRP0 (0x10)
+#define SRP1 (0x11)
+#define SRP2 (0x12)
+#define SZP0 (0x13)
+#define SLOOP (0x17)
+#define RTG (0x18)
+#define SMD (0x1a)
+#define DUP (0x20)
+#define DEPTH (0x24)
+#define CALL (0x2b)
+#define MDAP (0x2e)
+#define MDAP_rnd (0x2f)
+#define IUP_y (0x30)
+#define IUP_x (0x31)
+#define SHP_rp2 (0x32)
+#define SHP_rp1 (0x33)
+#define SHPIX (0x38)
+#define IP (0x39)
+#define ALIGNRP (0x3c)
+#define MIAP_rnd (0x3f)
+#define ADD (0x60)
+#define MUL (0x63)
+#define NEG (0x65)
+#define SROUND (0x76)
+#define FLIPPT (0x80)
+#define MDRP_grey (0xc0)
+#define MDRP_min_black (0xc9)
+#define MDRP_min_white (0xca)
+#define MDRP_min_rnd_black (0xcd)
+#define MDRP_rp0_rnd_white (0xd6)
+#define MDRP_rp0_min_rnd_grey (0xdc)
+#define MDRP_rp0_min_rnd_black (0xdd)
+#define MIRP_min_black (0xe9)
+#define MIRP_min_rnd_black (0xed)
+#define MIRP_rp0_min_black (0xf9)
+#define MIRP_rp0_min_rnd_black (0xfd)
+
+
+/******************************************************************************
+ *
+ * Low-level routines to add data for PUSHes to bytecode instruction stream.
+ * pushheader() adds PUSH preamble, then repeating addpoint() adds items.
+ *
+ * Numbers larger than 65535 are not supported (according to TrueType spec,
+ * there can't be more points in a glyph, simple or compound). Negative
+ * numbers aren't supported, either. So don't use these functions as they
+ * are - there are higher-level ones further below, that handle things nicely.
+ *
+ ******************************************************************************/
+
+static uint8 *pushheader(uint8 *instrs, int isword, int tot) {
+ if ( isword ) {
+ if ( tot>8 ) {
+ *instrs++ = 0x41; /* N(next word) Push words */
+ *instrs++ = tot;
+ } else
+ *instrs++ = 0xb8+(tot-1); /* Push Words */
+ } else {
+ if ( tot>8 ) {
+ *instrs++ = 0x40; /* N(next byte) Push bytes */
+ *instrs++ = tot;
+ } else
+ *instrs++ = 0xb0+(tot-1); /* Push bytes */
+ }
+return( instrs );
+}
+
+static uint8 *addpoint(uint8 *instrs,int isword,int pt) {
+ if ( !isword ) {
+ *instrs++ = pt;
+ } else {
+ *instrs++ = pt>>8;
+ *instrs++ = pt&0xff;
+ }
+return( instrs );
+}
+
+/* Exemplary high-level routines to add PUSH-es to bytecode instruction
+ * stream. They handle negative numbers correctly. As they are used
+ * in various roles here, some aliases are defined, so that the name
+ * speaks for itself in the code.
+ */
+
+static uint8 *pushpoint(uint8 *instrs,int pt) {
+ instrs = pushheader(instrs,(pt>255)||(pt<0),1);
+return( addpoint(instrs,(pt>255)||(pt<0),pt));
+}
+
+#define pushnum(a, b) pushpoint(a, b)
+
+static uint8 *pushpointstem(uint8 *instrs, int pt, int stem) {
+ int isword = pt>255 || stem>255 || pt<0 || stem<0;
+ instrs = pushheader(instrs,isword,2);
+ instrs = addpoint(instrs,isword,pt);
+return( addpoint(instrs,isword,stem));
+}
+
+#define push2points(a, b, c) pushpointstem(a, b, c)
+#define push2nums(a, b, c) pushpointstem(a, b, c)
+
+/* Push a bunch of point numbers (or other numbers) onto the stack.
+ * TODO!
+ * Possible strategies:
+ * - push point by point (poor space efficiency)
+ * - push all the stock at once (currently used, better, but has
+ * poor space efficiency in case of a word among several bytes).
+ * - push bytes and words separately
+ */
+static uint8 *pushpoints(uint8 *instrs, int ptcnt, const int *pts) {
+ int i, isword = 0;
+ for (i=0; i<ptcnt; i++) if (pts[i]>255 || pts[i]<0) isword=1;
+
+ /* It's an error to push more than STACK_DEPTH points. */
+ if (ptcnt > STACK_DEPTH)
+ IError("Truetype stack overflow will occur.");
+
+ if (ptcnt > 255 && !isword) {
+ instrs = pushpoints(instrs, 255, pts);
+ ptcnt-=255;
+ pts+=255;
+ }
+
+ instrs = pushheader(instrs,isword,ptcnt);
+ for (i=0; i<ptcnt; i++) instrs = addpoint(instrs, isword, pts[i]);
+return( instrs );
+}
+
+#define pushnums(a, b, c) pushpoints(a, b, c)
+
+/* As we don't have "push F26dot6" command in truetype instructions,
+ * we need to do this by hand. As we can explicitly push only 16-bit
+ * quantities, we need to push a F26dot6 value in halves, shift left
+ * the more significant half and add halves.
+ *
+ * There are no checks for overflow!
+ */
+static uint8 *pushF26Dot6(uint8 *instrs, double num) {
+ int a, elems[3];
+ int negative=0;
+
+ if (num < 0) {
+ negative=1;
+ num*=-1.0;
+ }
+
+ num *= 64;
+ a = rint(num);
+ elems[0] = a % 65536;
+ elems[1] = (int)rint(a / 65536.0) % 65536;
+ elems[2] = 16384;
+
+ if (elems[1]) {
+ instrs = pushpoints(instrs, 3, elems);
+ *instrs++ = DUP;
+ *instrs++ = MUL;
+ *instrs++ = MUL;
+ *instrs++ = ADD;
+ }
+ else instrs = pushpoint(instrs, elems[0]);
+
+ if (negative) *instrs++ = NEG;
+
+return( instrs );
+}
+
+/* Compute an EF2Dot14 representation of a floating point number.
+ * The number must be in range [-2.0 ... 1.0+(2^14-1)/(2^14) = 1.99993896...]
+ *
+ * There are no checks for overflow!
+ */
+static int EF2Dot14(double num) {
+return( rint(num*16384) );
+}
+
+/* An apparatus for instructing sets of points with given truetype command.
+ * The command must pop exactly 1 element from the stack and mustn't push any.
+ * These points must be marked as 'touched' elsewhere! this function only
+ * generates intructions.
+ */
+static uint8 *instructpoints(uint8 *instrs, int ptcnt, const int *pts, uint8 command) {
+ int i, use_sloop;
+
+ use_sloop = 0;
+ use_sloop |= (command == SHP_rp1);
+ use_sloop |= (command == SHP_rp2);
+ use_sloop |= (command == SHPIX);
+ use_sloop |= (command == IP);
+ use_sloop |= (command == FLIPPT);
+ use_sloop |= (command == ALIGNRP);
+ use_sloop = use_sloop && (ptcnt > 3);
+
+ instrs = pushpoints(instrs, ptcnt<STACK_DEPTH?ptcnt:STACK_DEPTH-1, pts);
+
+ if (use_sloop) {
+ *instrs++ = DEPTH;
+ *instrs++ = SLOOP;
+ *instrs++ = command;
+ }
+ else for (i=0; i<(ptcnt<STACK_DEPTH?ptcnt:STACK_DEPTH-1); i++)
+ *instrs++ = command;
+
+ if (ptcnt>=STACK_DEPTH)
+ instrs=instructpoints(instrs, ptcnt-(STACK_DEPTH-1), pts+(STACK_DEPTH-1), command);
+
+return( instrs );
+}
+
+/******************************************************************************
+ *
+ * Low-level routines for getting a cvt index for a stem width, assuming there
+ * are any numbers in cvt. Includes legacy code for importing PS Private into
+ * CVT.
+ *
+ ******************************************************************************/
+
+struct ttf_table *SFFindTable(SplineFont *sf,uint32 tag) {
+ struct ttf_table *tab;
+
+ for ( tab=sf->ttf_tables; tab!=NULL && tab->tag!=tag; tab=tab->next );
+return( tab );
+}
+
+int TTF__getcvtval(SplineFont *sf,int val) {
+ int i;
+ struct ttf_table *cvt_tab = SFFindTable(sf,CHR('c','v','t',' '));
+
+ if ( cvt_tab==NULL ) {
+ cvt_tab = chunkalloc(sizeof(struct ttf_table));
+ cvt_tab->tag = CHR('c','v','t',' ');
+ cvt_tab->maxlen = 200;
+ cvt_tab->data = malloc(100*sizeof(short));
+ cvt_tab->next = sf->ttf_tables;
+ sf->ttf_tables = cvt_tab;
+ }
+ for ( i=0; (int)sizeof(uint16)*i<cvt_tab->len; ++i ) {
+ int tval = (int16) memushort(cvt_tab->data,cvt_tab->len, sizeof(uint16)*i);
+ if ( val>=tval-1 && val<=tval+1 )
+return( i );
+ }
+ if ( (int)sizeof(uint16)*i>=cvt_tab->maxlen ) {
+ if ( cvt_tab->maxlen==0 ) cvt_tab->maxlen = cvt_tab->len;
+ cvt_tab->maxlen += 200;
+ cvt_tab->data = realloc(cvt_tab->data,cvt_tab->maxlen);
+ }
+ memputshort(cvt_tab->data,sizeof(uint16)*i,val);
+ cvt_tab->len += sizeof(uint16);
+return( i );
+}
+
+/* by default sign is unimportant in the cvt
+ * For some instructions anyway, but not for MIAP so this routine has
+ * been broken in two.
+ */
+int TTF_getcvtval(SplineFont *sf,int val) {
+ if ( val<0 ) val = -val;
+return( TTF__getcvtval(sf,val));
+}
+
+/* We are given a stem weight and try to find matching one in CVT.
+ * If none found, we return -1.
+ */
+static StdStem *CVTSeekStem(int xdir, GlobalInstrCt *gic, double value, int can_fail) {
+ StdStem *mainstem = xdir?&(gic->stdvw):&(gic->stdhw);
+ StdStem *otherstems = xdir?gic->stemsnapv:gic->stemsnaph;
+ StdStem *closest = NULL;
+ int otherstemcnt = xdir?gic->stemsnapvcnt:gic->stemsnaphcnt;
+ int i;
+ double mindelta=1e20, delta, closestwidth=1e20;
+
+ if (mainstem->width == -1)
+return NULL;
+
+ value = fabs(value);
+ delta = fabs(mainstem->width - value);
+
+ if (delta < mindelta) {
+ mindelta = delta;
+ closestwidth = rint(mainstem->width);
+ closest = mainstem;
+ }
+
+ for (i=0; i<otherstemcnt; i++) {
+ delta = fabs(otherstems[i].width - value);
+
+ if (delta < mindelta) {
+ mindelta = delta;
+ closestwidth = otherstems[i].width;
+ closest = otherstems+i;
+ }
+ }
+
+ if (mindelta <= gic->fudge)
+return closest;
+ if (value/closestwidth < 1.11 && value/closestwidth > 0.9)
+return closest;
+ if (can_fail)
+return NULL;
+return closest;
+}
+
+/******************************************************************************
+ ******************************************************************************
+ **
+ ** We need to initialize global instructing context before autoinstructing
+ ** a glyph, because we want to be sure that global hinting tables (cvt, prep,
+ ** fpgm) were (or weren't) properly set up.
+ **
+ ******************************************************************************
+ ******************************************************************************/
+
+/* Helper routines: read PS private entry and return its contents.
+ */
+static int GetBlueFuzz(SplineFont *sf) {
+ char *str, *end;
+
+ if ( sf->private==NULL || (str=PSDictHasEntry(sf->private,"BlueFuzz"))==NULL || !isdigit(str[0]) )
+return 1;
+return strtod(str, &end);
+}
+
+/* Return BlueScale as PPEM at which we have to stop suppressing overshoots */
+static int GetBlueScale(SplineFont *sf) {
+ char *str, *end;
+ double bs;
+ int result;
+
+ if ( sf->private==NULL)
+return 42;
+
+ bs = strtod(str, &end);
+ if (end==str || bs<=0.0) bs=0.039625;
+ bs*=240;
+ bs+=0.49;
+ bs*=300.0/72.0;
+
+ result = (int)rint(bs);
+ if (result>255) result = 255; /* Who would need such blue scale??? */
+
+return result;
+}
+
+static real *ParsePSArray(const char *str, int *rescnt) {
+ char *end;
+ real d, *results=NULL;
+
+ if ((rescnt == NULL) || (str == NULL))
+return NULL;
+
+ *rescnt = 0;
+
+ while (*str)
+ {
+ while (!isdigit(*str) && *str!='-' && *str!='+' && *str!='.' && *str!='\0')
+ ++str;
+
+ if ( *str=='\0' )
+ break;
+
+ d = strtod(str, &end);
+
+ if ( d>=-32768 && d<=32767 ) {
+ if (*rescnt) {
+ results = realloc(results, sizeof(real)*(++(*rescnt)));
+ results[*rescnt-1] = d;
+ }
+ else (results = calloc(*rescnt=1, sizeof(real)))[0] = d;
+ }
+
+ str = end;
+ }
+
+return results;
+}
+
+static real *GetNParsePSArray(SplineFont *sf, const char *name, int *rescnt) {
+return ParsePSArray(PSDictHasEntry(sf->private, name), rescnt);
+}
+
+/* Tell if the two segments, [b1,o1] and [b2,o2] intersect.
+ * This can be used to determine whether blues or stems overlap.
+ */
+static int SegmentsOverlap(real b1, real o1, real b2, real o2) {
+ real t;
+
+ if (b1 > o1) {
+ t = o1;
+ o1 = b1;
+ b1 = t;
+ }
+
+ if (b2 > o2) {
+ t = o2;
+ o2 = b2;
+ b2 = t;
+ }
+
+return !((b2 > o1) || (o2 < b1));
+}
+
+/* To be used with qsort() - sorts BlueZone array by base in ascending order.
+ */
+static int SortBlues(const void *a, const void *b) {
+ return ((BlueZone *)a)->base > ((BlueZone *)b)->base;
+}
+
+/* Import blue data into global instructing context. Include family blues too.
+ * We assume that blues are needed for family blues to make sense. If there are
+ * only family blues, we treat them as normal blues. Otherwise, if a family blue
+ * zone doesn't match any normal blue zone, or if they match perfectly,
+ * it is ignored.
+ */
+static void GICImportBlues(GlobalInstrCt *gic) {
+ int bluecnt = 0;
+ int i, j, cnt;
+ real *values;
+
+ int HasPSBlues =
+ (PSDictHasEntry(gic->sf->private, "BlueValues") != NULL) ||
+ (PSDictHasEntry(gic->sf->private, "OtherBlues") != NULL);
+
+ int HasPSFamilyBlues =
+ (PSDictHasEntry(gic->sf->private, "FamilyBlues") != NULL) ||
+ (PSDictHasEntry(gic->sf->private, "FamilyOtherBlues") != NULL);
+
+ const char *PrimaryBlues = HasPSBlues ? "BlueValues" : "FamilyBlues";
+ const char *OtherBlues = HasPSBlues ? "OtherBlues" : "FamilyOtherBlues";
+
+ if (HasPSBlues || HasPSFamilyBlues){
+ values = GetNParsePSArray(gic->sf, PrimaryBlues, &cnt);
+ cnt /= 2;
+ if (cnt > 7) cnt = 7;
+
+ if (values != NULL) {
+ gic->bluecnt = bluecnt = cnt;
+
+ /* First pair is a bottom zone (see Type1 specification). */
+ gic->blues[0].base = values[1];
+ gic->blues[0].overshoot = values[0];
+ gic->blues[0].family_base = strtod("NAN", NULL);
+
+ /* Next pairs are top zones (see Type1 specification). */
+ for (i=1; i<bluecnt; i++) {
+ gic->blues[i].family_base = strtod("NAN", NULL);
+ gic->blues[i].base = values[2*i];
+ gic->blues[i].overshoot = values[2*i+1];
+ }
+
+ free(values);
+ }
+
+ values = GetNParsePSArray(gic->sf, OtherBlues, &cnt);
+ cnt /= 2;
+ if (cnt > 5) cnt = 5;
+
+ if (values != NULL) {
+ gic->bluecnt += cnt;
+
+ /* All pairs are bottom zones (see Type1 specification). */
+ for (i=0; i<cnt; i++) {
+ gic->blues[i+bluecnt].family_base = strtod("NAN", NULL);
+ gic->blues[i+bluecnt].base = values[2*i+1];
+ gic->blues[i+bluecnt].overshoot = values[2*i];
+ }
+
+ free(values);
+ bluecnt += cnt;
+ }
+
+ /* Add family data to blues */
+ if (HasPSBlues && HasPSFamilyBlues) {
+ values = GetNParsePSArray(gic->sf, "FamilyBlues", &cnt);
+ cnt /= 2;
+ if (cnt > 7) cnt = 7;
+
+ if (values != NULL) {
+ /* First pair is a bottom zone (see Type1 specification). */
+ for (j=0; j<bluecnt; j++)
+ if (isfinite(gic->blues[j].family_base))
+ continue;
+ else if (values[1] != gic->blues[j].base &&
+ SegmentsOverlap(gic->blues[j].base,
+ gic->blues[j].overshoot,
+ values[0], values[1]))
+ gic->blues[j].family_base = values[1];
+
+ /* Next pairs are top zones (see Type1 specification). */
+ for (i=1; i<cnt; i++) {
+ for (j=0; j<bluecnt; j++)
+ if (isfinite(gic->blues[j].family_base))
+ continue;
+ else if (values[2*i] != gic->blues[j].base &&
+ SegmentsOverlap(gic->blues[j].base,
+ gic->blues[j].overshoot,
+ values[2*i], values[2*i+1]))
+ gic->blues[j].family_base = values[2*i];
+ }
+
+ free(values);
+ }
+
+ values = GetNParsePSArray(gic->sf, "FamilyOtherBlues", &cnt);
+ cnt /= 2;
+ if (cnt > 5) cnt = 5;
+
+ if (values != NULL) {
+ /* All pairs are bottom zones (see Type1 specification). */
+ for (i=0; i<cnt; i++) {
+ for (j=0; j<bluecnt; j++)
+ if (isfinite(gic->blues[j].family_base))
+ continue;
+ else if (values[2*i+1] != gic->blues[j].base &&
+ SegmentsOverlap(gic->blues[j].base,
+ gic->blues[j].overshoot,
+ values[2*i], values[2*i+1]))
+ gic->blues[j].family_base = values[2*i+1];
+ }
+
+ free(values);
+ }
+ }
+ }
+ else if (gic->bd->bluecnt) {
+ /* If there are no PS private entries, we have */
+ /* to use FF's quickly guessed fallback blues. */
+ gic->bluecnt = bluecnt = gic->bd->bluecnt;
+
+ for (i=0; i<bluecnt; i++) {
+ gic->blues[i].family_base = strtod("NAN", NULL);
+ gic->blues[i].family_cvtindex = -1;
+
+ if (gic->bd->blues[i][1] <= 0) {
+ gic->blues[i].base = gic->bd->blues[i][1];
+ gic->blues[i].overshoot = gic->bd->blues[i][0];
+ }
+ else {
+ gic->blues[i].base = gic->bd->blues[i][0];
+ gic->blues[i].overshoot = gic->bd->blues[i][1];
+ }
+ }
+ }
+
+ /* 'highest' and 'lowest' are not to be set yet. */
+ for (i=0; i<gic->bluecnt; i++)
+ gic->blues[i].highest = gic->blues[i].lowest = -1;
+
+ /* I assume ascending order in snap_to_blues(). */
+ qsort(gic->blues, gic->bluecnt, sizeof(BlueZone), SortBlues);
+}
+
+/* To be used with qsort() - sorts StdStem array by width in ascending order.
+ */
+static int SortStems(const void *a, const void *b) {
+ return ((StdStem *)a)->width > ((StdStem *)b)->width;
+}
+
+/* Import stem data into global instructing context. We deal only with
+ * horizontal or vertical stems (xdir decides) here. If Std*W is not specified,
+ * but there exists StemSnap*, we'll make up a fake Std*V as a fallback.
+ * Subtle manipulations with Std*W's value can result in massive change of
+ * font appearance at some pixel sizes, because it's used as a base for
+ * normalization of all other stems.
+ */
+static void GICImportStems(int xdir, GlobalInstrCt *gic) {
+ int i, cnt, next;
+ real *values;
+ const char *s_StdW = xdir?"StdVW":"StdHW";
+ const char *s_StemSnap = xdir?"StemSnapV":"StemSnapH";
+ StdStem *stdw = xdir?&(gic->stdvw):&(gic->stdhw);
+ StdStem **stemsnap = xdir?&(gic->stemsnapv):&(gic->stemsnaph);
+ int *stemsnapcnt = xdir?&(gic->stemsnapvcnt):&(gic->stemsnaphcnt);
+
+ if ((values = GetNParsePSArray(gic->sf, s_StdW, &cnt)) != NULL) {
+ stdw->width = *values;
+ free(values);
+ }
+
+ if ((values = GetNParsePSArray(gic->sf, s_StemSnap, &cnt)) != NULL) {
+ *stemsnap = (StdStem *)calloc(cnt, sizeof(StdStem));
+
+ for (next=i=0; i<cnt; i++)
+ if (values[i] != gic->stdhw.width)
+ (*stemsnap)[next++].width = values[i];
+
+ if (!next) {
+ free(*stemsnap);
+ *stemsnap = NULL;
+ }
+
+ *stemsnapcnt = next;
+ free(values);
+
+ /* I assume ascending order here and in normalize_stems(). */
+ qsort(*stemsnap, *stemsnapcnt, sizeof(StdStem), SortStems);
+ }
+
+ /* No StdW, but StemSnap exists? */
+ if (stdw->width == -1 && *stemsnap != NULL) {
+ cnt = *stemsnapcnt;
+ i = cnt/2;
+ stdw->width = (*stemsnap)[i].width;
+ memmove((*stemsnap)+i, (*stemsnap)+i+1, cnt-i-1);
+
+ if (--(*stemsnapcnt) == 0) {
+ free(*stemsnap);
+ *stemsnap = NULL;
+ }
+ }
+}
+
+/* Assign CVT indices to blues and stems in global instructing context. In case
+ * we can't implant it because of already existent cvt table, reassign the cvt
+ * indices, picking them from existing cvt table (thus a cvt value can't be
+ * considered 'horizontal' or 'vertical', and reliable stem normalization is
+ * thus impossible) and adding some for new values.
+ */
+static void init_cvt(GlobalInstrCt *gic) {
+ int i, cvtindex, cvtsize;
+ struct ttf_table *tab;
+ uint8 *cvt;
+
+ cvtsize = 1;
+ if (gic->stdhw.width != -1) cvtsize++;
+ if (gic->stdvw.width != -1) cvtsize++;
+ cvtsize += gic->stemsnaphcnt;
+ cvtsize += gic->stemsnapvcnt;
+ cvtsize += gic->bluecnt * 2; /* possible family blues */
+
+ cvt = calloc(cvtsize, cvtsize * sizeof(int16));
+ cvtindex = 0;
+
+ /* Assign cvt indices */
+ for (i=0; i<gic->bluecnt; i++) {
+ gic->blues[i].cvtindex = cvtindex;
+ memputshort(cvt, 2*cvtindex++, rint(gic->blues[i].base));
+
+ if (isfinite(gic->blues[i].family_base)) {
+ gic->blues[i].family_cvtindex = cvtindex;
+ memputshort(cvt, 2*cvtindex++, rint(gic->blues[i].family_base));
+ }
+ }
+
+ if (gic->stdhw.width != -1) {
+ gic->stdhw.cvtindex = cvtindex;
+ memputshort(cvt, 2*cvtindex++, rint(gic->stdhw.width));
+ }
+
+ for (i=0; i<gic->stemsnaphcnt; i++) {
+ gic->stemsnaph[i].cvtindex = cvtindex;
+ memputshort(cvt, 2*cvtindex++, rint(gic->stemsnaph[i].width));
+ }
+
+ if (gic->stdvw.width != -1) {
+ gic->stdvw.cvtindex = cvtindex;
+ memputshort(cvt, 2*cvtindex++, rint(gic->stdvw.width));
+ }
+
+ for (i=0; i<gic->stemsnapvcnt; i++) {
+ gic->stemsnapv[i].cvtindex = cvtindex;
+ memputshort(cvt, 2*cvtindex++, rint(gic->stemsnapv[i].width));
+ }
+
+ cvtsize = cvtindex;
+ cvt = realloc(cvt, cvtsize * sizeof(int16));
+
+ /* Try to implant the new cvt table */
+ gic->cvt_done = 0;
+
+ tab = SFFindTable(gic->sf, CHR('c','v','t',' '));
+
+ if ( tab==NULL ) {
+ tab = chunkalloc(sizeof(struct ttf_table));
+ tab->next = gic->sf->ttf_tables;
+ gic->sf->ttf_tables = tab;
+ tab->tag = CHR('c','v','t',' ');
+
+ tab->len = tab->maxlen = cvtsize * sizeof(int16);
+ if (tab->maxlen >256) tab->maxlen = 256;
+ tab->data = cvt;
+
+ gic->cvt_done = 1;
+ }
+ else {
+ if (tab->len >= cvtsize * (int)sizeof(int16) &&
+ memcmp(cvt, tab->data, cvtsize * sizeof(int16)) == 0)
+ gic->cvt_done = 1;
+
+ free(cvt);
+
+ if (!gic->cvt_done) {
+ ff_post_error(_("Can't insert 'cvt'"),
+ _("There already exists a 'cvt' table, perhaps legacy. "
+ "FontForge can use it, but can't make any assumptions on "
+ "values stored there, so generated instructions will be of "
+ "lower quality. If legacy hinting is to be scrapped, it is "
+ "suggested to clear the `cvt` and repeat autoinstructing. "
+ ));
+ }
+ }
+
+ if (gic->cvt_done)
+return;
+
+ /* Fallback mode starts here. */
+
+ for (i=0; i<gic->bluecnt; i++)
+ gic->blues[i].cvtindex =
+ TTF_getcvtval(gic->sf, gic->blues[i].base);
+
+ if (gic->stdhw.width != -1)
+ gic->stdhw.cvtindex =
+ TTF_getcvtval(gic->sf, gic->stdhw.width);
+
+ for (i=0; i<gic->stemsnaphcnt; i++)
+ gic->stemsnaph[i].cvtindex =
+ TTF_getcvtval(gic->sf, gic->stemsnaph[i].width);
+
+ if (gic->stdvw.width != -1)
+ gic->stdvw.cvtindex =
+ TTF_getcvtval(gic->sf, gic->stdvw.width);
+
+ for (i=0; i<gic->stemsnapvcnt; i++)
+ gic->stemsnapv[i].cvtindex =
+ TTF_getcvtval(gic->sf, gic->stemsnapv[i].width);
+}
+
+/* We'll need at least STACK_DEPTH stack levels and a twilight point (and thus
+ * also a twilight zone). We also currently define some functions in fpgm.
+ * We must ensure this is indicated in the 'maxp' table.
+ *
+ * We also need two storage cells. As we now use SPVFS to set projection
+ * vector for diagonal hinting, we have to adjust values taken by SPVFS,
+ * so that diagonals look cleanly in all aspect ratios. Adjustments are
+ * not trivial to compute, so we do this once (in prep) and store them
+ * in storage[0] (for X direction) and storage[1] (for Y direction).
+ */
+static void init_maxp(GlobalInstrCt *gic) {
+ struct ttf_table *tab = SFFindTable(gic->sf, CHR('m','a','x','p'));
+ uint16 zones, twpts, store, fdefs, stack;
+
+ if ( tab==NULL ) {
+ tab = chunkalloc(sizeof(struct ttf_table));
+ tab->next = gic->sf->ttf_tables;
+ gic->sf->ttf_tables = tab;
+ tab->tag = CHR('m','a','x','p');
+ }
+
+ if ( tab->len<32 ) {
+ tab->data = realloc(tab->data,32);
+ memset(tab->data+tab->len,0,32-tab->len);
+ tab->len = tab->maxlen = 32;
+ }
+
+ zones = memushort(tab->data, 32, 7*sizeof(uint16));
+ twpts = memushort(tab->data, 32, 8*sizeof(uint16));
+ store = memushort(tab->data, 32, 9*sizeof(uint16));
+ fdefs = memushort(tab->data, 32, 10*sizeof(uint16));
+ stack = memushort(tab->data, 32, 12*sizeof(uint16));
+
+ if (gic->fpgm_done && zones<2) zones=2;
+ if (gic->fpgm_done && twpts<1) twpts=1;
+ if (gic->fpgm_done && gic->prep_done && store<2) store=2;
+ if (gic->fpgm_done && fdefs<22) fdefs=22;
+ if (stack<STACK_DEPTH) stack=STACK_DEPTH;
+
+ memputshort(tab->data, 7*sizeof(uint16), zones);
+ memputshort(tab->data, 8*sizeof(uint16), twpts);
+ memputshort(tab->data, 9*sizeof(uint16), store);
+ memputshort(tab->data,10*sizeof(uint16), fdefs);
+ memputshort(tab->data,12*sizeof(uint16), stack);
+}
+
+/* Other hinting software puts certain actions in FPGM to ease developer's life
+ * and compress the code. I feel that having a 'standard' library of functions
+ * could also help FF users.
+ *
+ * Caution! This code is heavily relied by autohinting. Any other code should
+ * be placed below it. It's good to first clear font's hinting tables, then
+ * autohint it, and then insert user's own code and do the manual hinting of
+ * glyphs that do need it.
+ */
+static void init_fpgm(GlobalInstrCt *gic) {
+ uint8 new_fpgm[] =
+ {
+ /* Function 0: position a point within a blue zone (given via cvt).
+ * Note: in case of successful init of 'cvt' and 'prep' this function
+ * could be much simpler.
+ * Syntax: PUSHB_3 point cvt_of_blue 0 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x2c, // FDEF
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x13, // SZP0
+ 0x4b, // MPPEM
+ 0xb0, // PUSHB_1 - under this ppem blues will be specially rounded
+ GetBlueScale(gic->sf),
+ 0x50, // LT
+ 0x58, // IF
+ 0xb0, // PUSHB_0
+ 0x4a, // 74
+ 0x76, // SROUND - round blues a bit up to grid
+ 0x59, // EIF
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x23, // SWAP
+ 0x3f, // MIAP[rnd] - blue zone positioned here
+ 0x18, // RTG - round state for overshoots in monochrome mode
+ 0xb0, // PUSHB_1
+ 0x06, // 6
+ 0x2b, // CALL
+ 0x58, // IF
+ 0x3d, // RTDG - round state for overshoots in antialiased mode
+ 0x59, // EIF
+ 0x4b, // MPPEM
+ 0xb0, // PUSHB_1 - under following ppem overshoots will be suppressed
+ GetBlueScale(gic->sf),
+ 0x50, // LT
+ 0x58, // IF
+ 0x7d, // RDTG - suppress overshoots
+ 0x59, // EIF
+ 0x20, // DUP
+ 0xd4, // MDRP[rp0,rnd,grey]
+ 0xb0, // PUSHB_1
+ 0x01, // 1
+ 0x13, // SZP0
+ 0x2e, // MDAP[no-rnd]
+ 0x18, // RTG
+ 0x2d, // ENDF
+
+ /* Function 1: Place given point relatively to previous, maintaining the
+ * minimum distance. Then call FPGM 12 to check if the point's gridfitted
+ * position is too far from its original position, and correct it, if necessary.
+ * Syntax: PUSB_2 point 1 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x01, // 1
+ 0x2c, // FDEF
+ 0x20, // DUP
+ 0xda, // MDRP[rp0,min,white]
+ 0xb0, // PUSHB_1
+ 0x0c, // 12
+ 0x2b, // CALL
+ 0x2d, // ENDF
+
+ /* Function 2: Below given ppem, substitute the width with cvt entry.
+ * Leave the resulting width on the stack. Used as the first step in
+ * normalizing cvt stems, see normalize_stem().
+ * Syntax: PUSHX_3 width cvt_index ppem 2 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x02, // 2
+ 0x2c, // FDEF
+ 0x4b, // MPPEM
+ 0x52, // GT
+ 0x58, // IF
+ 0x45, // RCVT
+ 0x23, // SWAP
+ 0x59, // EIF
+ 0x21, // POP
+ 0x2d, // ENDF
+
+ /* Function 3: round a stack element as a black distance, respecting
+ * minimum distance of 1px. This is used for rounding stems after width
+ * normalization. Often preceeded with SROUND, so finally sets RTG.
+ * Leaves the rounded width on the stack.
+ * Syntax: PUSHX_2 width_to_be_rounded 3 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x03, // 3
+ 0x2c, // FDEF
+ 0x69, // ROUND[black]
+ 0x18, // RTG
+ 0x20, // DUP
+ 0xb0, // PUSHB_1
+ 0x40, // 64, that's one pixel as F26Dot6
+ 0x50, // LT
+ 0x58, // IF
+ 0x21, // POP
+ 0xb0, // PUSHB_1
+ 0x40, // 64
+ 0x59, // EIF
+ 0x2d, // ENDF
+
+ /* Function 4: Position the second edge of a stem that is not normally
+ * regularized via cvt (but we snap it to cvt width below given ppem).
+ * Vertical stems need special round state when not snapped to cvt
+ * (basically, they are shortened by 0.25px before being rounded).
+ * Syntax: PUSHX_5 pt cvt_index chg_rp0 ppem 4 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x04, // 4
+ 0x2c, // FDEF
+ 0xb0, // PUSHB_1
+ 0x06, // 6
+ 0x2b, // CALL
+ 0x58, // IF
+ 0x21, // POP
+ 0x23, // SWAP
+ 0x21, // POP
+ 0x7a, // ROFF
+ 0x58, // IF
+ 0xdd, // MDRP[rp0,min,rnd,black]
+ 0x1b, // ELSE
+ 0xcd, // MDRP[min,rnd,black]
+ 0x59, // EIF
+ 0x1b, // ELSE
+ 0x4b, // MPPEM
+ 0x52, // GT
+ 0x58, // IF
+ 0x58, // IF
+ 0xfd, // MIRP[rp0,min,rnd,black]
+ 0x1b, // ELSE
+ 0xed, // MIRP[min,rnd,black]
+ 0x59, // EIF
+ 0x1b, // ELSE
+ 0x23, // SWAP
+ 0x21, // POP
+ 0xb0, // PUSHB_1
+ 0x05, // 5
+ 0x2b, // CALL
+ 0x58, // IF
+ 0xb0, // PUSHB_1
+ 0x46, // 70
+ 0x76, // SROUND
+ 0x59, // EIF
+ 0x58, // IF
+ 0xdd, // MDRP[rp0,min,rnd,black]
+ 0x1b, // ELSE
+ 0xcd, // MDRP[min,rnd,black]
+ 0x59, // EIF
+ 0x59, // EIF
+ 0x59, // EIF
+ 0x18, // RTG
+ 0x2d, // ENDF
+
+ /* Function 5: determine if we are hinting vertically. The function
+ * is crude and it's use is limited to conditions set by SVTCA[].
+ * Syntax: PUSHB_1 5 CALL; leaves boolean on the stack.
+ */
+ 0xb0, // PUSHB_1
+ 0x05, // 5
+ 0x2c, // FDEF
+ 0x0d, // GFV
+ 0x5c, // NOT
+ 0x5a, // AND
+ 0x2d, // ENDF
+
+ /* Function 6: check if we are hinting in grayscale.
+ * CAUTION! Older FreeType versions lie if asked.
+ * Syntax: PUSHB_1 6 CALL; leaves boolean on the stack.
+ */
+ 0xb0, // PUSHB_1
+ 0x06, // 6
+ 0x2c, // FDEF
+ 0xb1, // PUSHB_2
+ 0x22, // 34
+ 0x01, // 1
+ 0x88, // GETINFO
+ 0x50, // LT
+ 0x58, // IF
+ 0xb0, // PUSHB_1
+ 0x20, // 32
+ 0x88, // GETINFO
+ 0x5c, // NOT
+ 0x5c, // NOT
+ 0x1b, // ELSE
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x59, // EIF
+ 0x2d, // ENDF
+
+ /* Function 7: check if we are hinting in cleartype.
+ * CAUTION! FreeType doesn't support that, as subpixel
+ * filtering is usually done by higher level library.
+ * Syntax: PUSHB_1 7 CALL; leaves boolean on the stack.
+ */
+ 0xb0, // PUSHB_1
+ 0x07, // 7
+ 0x2c, // FDEF
+ 0xb1, // PUSHB_2
+ 0x24, // 36
+ 0x01, // 1
+ 0x88, // GETINFO
+ 0x50, // LT
+ 0x58, // IF
+ 0xb0, // PUSHB_1
+ 0x40, // 64
+ 0x88, // GETINFO
+ 0x5c, // NOT
+ 0x5c, // NOT
+ 0x1b, // ELSE
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x59, // EIF
+ 0x2d, // ENDF
+
+ /* Function 8: Interpolate a point between
+ * two other points and snap it to the grid.
+ * Syntax: PUSHX_4 pt_to_ip rp1 rp2 8 CALL;
+ */
+ 0xb0, // PUSHB_1
+ 0x08, // 8
+ 0x2c, // FDEF
+ 0x12, // SRP2
+ 0x11, // SRP1
+ 0x20, // DUP
+ 0x39, // IP
+ 0x2f, // MDAP[rnd]
+ 0x2d, // ENDF
+
+ /* Function 9: Link a serif-like element edge to the opposite
+ * edge of the base stem when rounding down to grid, but ensure
+ * that its distance from the reference point is larger than
+ * the base stem width at least to a specified amount of pixels.
+ * Syntax: PUSHX_3 min_dist inner_pt outer_pt CALL;
+ */
+ 0xb0, // PUSHB_1
+ 0x09, // 9
+ 0x2c, // FDEF
+ 0x20, // DUP
+ 0x7d, // RDTG
+ 0xb0, // PUSHB_1
+ 0x06, // 6
+ 0x2b, // CALL
+ 0x58, // IF
+ 0xc4, // MDRP[min,grey]
+ 0x1b, // ELSE
+ 0xcd, // MDRP[min,rnd,black]
+ 0x59, // EIF
+ 0x20, // DUP
+ 0xb0, // PUSHB_1
+ 0x03, // 3
+ 0x25, // CINDEX
+ 0x49, // MD[grid]
+ 0x23, // SWAP
+ 0x20, // DUP
+ 0xb0, // PUSHB_1
+ 0x04, // 4
+ 0x26, // MINDEX
+ 0x4a, // MD[orig]
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x50, // LT
+ 0x58, // IF
+ 0x8a, // ROLL
+ 0x65, // NEG
+ 0x8a, // ROLL
+ 0x61, // SUB
+ 0x20, // DUP
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x50, // LT
+ 0x58, // IF
+ 0x38, // SHPIX
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0x21, // POP
+ 0x59, // EIF
+ 0x1b, // ELSE
+ 0x8a, // ROLL
+ 0x8a, // ROLL
+ 0x61, // SUB
+ 0x20, // DUP
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x52, // GT
+ 0x58, // IF
+ 0x38, // SHPIX
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0x21, // POP
+ 0x59, // EIF
+ 0x59, // EIF
+ 0x18, // RTG
+ 0x2d, // ENDF
+
+ /* Function 10: depending from the hinting mode (grayscale or mono) set
+ * rp0 either to pt1 or to pt2. This is used to link serif-like elements
+ * either to the opposite side of the base stem or to the same side (i. e.
+ * left-to-left and right-to-right).
+ * Syntax: PUSHX_3 pt2 pt1 10 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x0a, // 10
+ 0x2c, // FDEF
+ 0xb0, // PUSHB_1
+ 0x06, // 6
+ 0x2b, // CALL
+ 0x58, // IF
+ 0x21, // POP
+ 0x10, // SRP0
+ 0x1b, // ELSE
+ 0x10, // SRP0
+ 0x21, // POP
+ 0x59, // EIF
+ 0x2d, // ENDF
+
+ /* Function 11: similar to FPGM 1, but places a point without
+ * maintaining the minimum distance.
+ * Syntax: PUSHX_2 point 11 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x0b, // 11
+ 0x2c, // FDEF
+ 0x20, // DUP
+ 0xd2, // MDRP[rp0,white]
+ 0xb0, // PUSHB_1
+ 0x0c, // 12
+ 0x2b, // CALL
+ 0x2d, // ENDF
+
+ /* Function 12: Check if the gridfitted position of the point is too far
+ * from its original position, and shift it, if necessary. The function is
+ * used to place vertical stems, it assures almost linear advance width
+ * to PPEM scaling. Shift amount is capped to at most 1 px to prevent some
+ * weird artifacts at very small ppems. In cleartype mode, no shift
+ * is made at all.
+ * Syntax: PUSHX_2 point 12 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x0c, // 12
+ 0x2c, // FDEF
+ 0x20, // DUP
+ 0x2f, // MDAP[rnd], this is needed for grayscale mode
+ 0xb0, // PUSHB_1
+ 0x07, // 7
+ 0x2b, // CALL
+ 0x5c, // NOT
+ 0x58, // IF
+ 0x20, // DUP
+ 0x20, // DUP
+ 0x47, // GC[cur]
+ 0x23, // SWAP
+ 0x46, // GC[orig]
+ 0x61, // SUB
+ 0x6a, // ROUND[white]
+ 0x20, // DUP
+ 0x58, // IF
+ 0x20, // DUP
+ 0x64, // ABS
+ 0x62, // DIV
+ 0x38, // SHPIX
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0x21, // POP
+ 0x59, // EIF
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0x59, // EIF
+ 0x2d, // ENDF
+
+ /* Function 13: Interpolate a HStem edge's reference point between two other points
+ * and snap it to the grid. Then compare its new position with the ungridfitted
+ * position of the second edge. If the gridfitted point belongs to the bottom edge
+ * and now it is positioned above the top edge's original coordinate, then shift it
+ * one pixel down; similarly, if the interpolation resulted in positioning the top
+ * edge below the original coordinate of the bottom edge, shift it one pixel up.
+ * Syntax: PUSHX_6 other_edge_refpt pt_to_ip rp1 rp2 13 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x0d, // 13
+ 0x2c, // FDEF
+ 0x12, // SRP2
+ 0x11, // SRP1
+ 0x20, // DUP
+ 0x20, // DUP
+ 0x39, // IP
+ 0x2f, // MDAP[rnd]
+ 0x20, // DUP
+ 0x8a, // ROLL
+ 0x20, // DUP
+ 0x47, // GC[orig]
+ 0x8a, // ROLL
+ 0x46, // GC[cur]
+ 0x61, // SUB
+ 0x23, // SWAP
+ 0x8a, // ROLL
+ 0x20, // DUP
+ 0x8a, // ROLL
+ 0x23, // SWAP
+ 0x4A, // MD[orig]
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x50, // LT
+ 0x58, // IF
+ 0x23, // SWAP
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x52, // GT
+ 0x58, // IF
+ 0xb0, // PUSHB_1
+ 0x40, // 64
+ 0x38, // SHPIX
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0x59, // EIF
+ 0x1b, // ELSE
+ 0x23, // SWAP
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x50, // LT
+ 0x58, // IF
+ 0xb0, // PUSHB_1
+ 0x40, // 64
+ 0x65, // NEG
+ 0x38, // SHPIX
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0x59, // EIF
+ 0x59, // EIF
+ 0x2d, // ENDF
+
+ /* Function 14: Link two points using MDRP without maintaining
+ * the minimum distance. In antialiased mode use rounding to
+ * double grid for this operation, otherwise ensure there is no
+ * distance between those two points below the given PPEM (i. e.
+ * points are aligned). The function is used for linking nested
+ * stems to each other, and guarantees their relative positioning
+ * is preserved in the gridfitted outline.
+ * Syntax: PUSHX_4 ppem ref_pt base_pt 14 CALL;
+ */
+ 0xb0, // PUSHB_1
+ 0x0e, // 14
+ 0x2c, // FDEF
+ 0xb0, // PUSHB_1
+ 0x06, // 6
+ 0x2b, // CALL
+ 0x58, // IF
+ 0x3d, // RTDG
+ 0xd6, // MDRP[rp0,rnd,white]
+ 0x18, // RTG
+ 0x21, // POP
+ 0x21, // POP
+ 0x1b, // ELSE
+ 0x20, // DUP
+ 0xd6, // MDRP[rp0,rnd,white]
+ 0x8a, // ROLL
+ 0x4b, // MPPEM
+ 0x52, // GT
+ 0x58, // IF
+ 0x20, // DUP
+ 0x8a, // ROLL
+ 0x23, // SWAP
+ 0x49, // MD[grid]
+ 0x20, // DUP
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x55, // NEQ
+ 0x58, // IF
+ 0x38, // SHPIX
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0x21, // POP
+ 0x59, // EIF
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0x21, // POP
+ 0x59, // EIF
+ 0x59, // EIF
+ 0x2d, // ENDF
+
+ /* Function 15: similar to FPGM 1, but used to position a stem
+ * relatively to the previous stem preserving the counter width
+ * equal to the distance between another pair of previously positioned
+ * stems. Thus it serves nearly the same purpose as PS counter hints.
+ * Syntax: PUSHX_6 master_counter_start_pt master_counter_end_pt
+ * current_counter_start_pt current_counter_end_pt ppem 15 CALL;
+ */
+ 0xb0, // PUSHB_1
+ 0x0f, // 15
+ 0x2c, // FDEF
+ 0x23, // SWAP
+ 0x20, // DUP
+ 0xd6, // MDRP[rp0,rnd,white]
+ 0x20, // DUP
+ 0x2f, // MDAP[rnd], this is needed for grayscale mode
+ 0xb0, // PUSHB_1
+ 0x07, // 7
+ 0x2b, // CALL
+ 0x5c, // NOT
+ 0x58, // IF
+ 0x23, // SWAP
+ 0x20, // DUP
+ 0x58, // IF
+ 0x4b, // MPPEM
+ 0x53, // GTEQ
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0xb0, // PUSHB_1
+ 0x01, // 1
+ 0x59, // EIF
+ 0x58, // IF
+ 0x8a, // ROLL
+ 0xb0, // PUSHB_1
+ 0x04, // 4
+ 0x26, // MINDEX
+ 0x49, // MD[grid]
+ 0x23, // SWAP
+ 0x8a, // ROLL
+ 0x23, // SWAP
+ 0x20, // DUP
+ 0x8a, // ROLL
+ 0x49, // MD[grid]
+ 0x8a, // ROLL
+ 0x23, // SWAP
+ 0x61, // SUB
+ 0x38, // SHPIX
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0x21, // POP
+ 0x21, // POP
+ 0x21, // POP
+ 0x59, // EIF
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0x21, // POP
+ 0x21, // POP
+ 0x21, // POP
+ 0x21, // POP
+ 0x59, // EIF
+ 0x2d, // ENDF
+
+ /* Function 16: Same as FPGM 1, but calls FPGM 18 rather than FPGM 12
+ * and thus takes 3 arguments.
+ * Syntax: PUSHX_3 ref_point point 16 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x10, // 16
+ 0x2c, // FDEF
+ 0x20, // DUP
+ 0xda, // MDRP[rp0,min,white]
+ 0xb0, // PUSHB_1
+ 0x12, // 18
+ 0x2b, // CALL
+ 0x2d, // ENDF
+
+ /* Function 17: Same as FPGM 11, but calls FPGM 18 rather than FPGM 12
+ * and thus takes 3 arguments.
+ * Syntax: PUSHX_3 ref_point point 17 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x11, // 17
+ 0x2c, // FDEF
+ 0x20, // DUP
+ 0xd2, // MDRP[rp0,white]
+ 0xb0, // PUSHB_1
+ 0x12, // 18
+ 0x2b, // CALL
+ 0x2d, // ENDF
+
+ /* Function 18: this is a special version of FPGM 12, used when the counter
+ * control is enabled but doesn't directly affect the stem which is going to
+ * be positioned. Unlike FPGM 12, it doesn't just attempt to position a point
+ * closely enough to its original coordinate, but also checks if the previous
+ * stem has already been shifted relatively to its "ideal" position FPGM 12 would
+ * determine. If so, then the desired point position is corrected relatively to
+ * the current placement of the previous stem.
+ * Syntax: PUSHX_3 ref_point point 18 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x12, // 18
+ 0x2c, // FDEF
+ 0x20, // DUP
+ 0x2f, // MDAP[rnd], this is needed for grayscale mode
+ 0xb0, // PUSHB_1
+ 0x07, // 7
+ 0x2b, // CALL
+ 0x5c, // NOT
+ 0x58, // IF
+ 0x20, // DUP
+ 0x20, // DUP
+ 0x47, // GC[cur]
+ 0x23, // SWAP
+ 0x46, // GC[orig]
+ 0x61, // SUB
+ 0x6a, // ROUND[white]
+ 0x8a, // ROLL
+ 0x20, // DUP
+ 0x47, // GC[cur]
+ 0x23, // SWAP
+ 0x46, // GC[orig]
+ 0x23, // SWAP
+ 0x61, // SUB
+ 0x6a, // ROUND[white]
+ 0x60, // ADD
+ 0x20, // DUP
+ 0x58, // IF
+ 0x20, // DUP
+ 0x64, // ABS
+ 0x62, // DIV
+ 0x38, // SHPIX
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0x21, // POP
+ 0x59, // EIF
+ 0x1b, // ELSE
+ 0x21, // POP
+ 0x21, // POP
+ 0x59, // EIF
+ 0x2d, // ENDF
+
+ /* Function 19: used to align a point relatively to a diagonal line,
+ * specified by two other points. First we check if the point going
+ * to be positioned doesn't deviate too far from the line in the original
+ * outline. If the deviation is small enough to neglect it, we use ALIGNRP
+ * to position the point, otherwise MDRP is used instead. We can't just
+ * always use MDRP, because this command may produce wrong results at
+ * small PPEMs, if the original and gridfitted coordinates of the line end
+ * points specify slightly different unit vectors.
+ * Syntax: point diag_start_point diag_end_point 19 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x13, // 19
+ 0x2c, // FDEF
+ 0x20, // DUP
+ 0x8a, // ROLL
+ 0x20, // DUP
+ 0x8a, // ROLL
+ 0x87, // SDPVTL[orthogonal]
+ 0x20, // DUP
+ 0xb0, // PUSHB_1
+ 0x03, // 4
+ 0x25, // CINDEX
+ 0x4a, // MD[orig]
+ 0x64, // ABS
+ 0x23, // SWAP
+ 0x8a, // ROLL
+ 0x07, // SPVTL[orthogonal]
+ 0xb0, // PUSHB_1
+ 0x20, // 32
+ 0x50, // LT
+ 0x58, // IF
+ 0x3c, // ALIGNRP
+ 0x1b, // ELSE
+ 0xc0, // MDRP[grey]
+ 0x59, // EIF
+ 0x2d, // ENDF
+
+ /* Function 20: compute adjustments for X and Y components of projection
+ * vector, for aspect ratios different than 1:1, and store them
+ * in storage[0] and storage[1] respectively.
+ * Syntax: 20 CALL (use it only ONCE, from PREP table).
+ */
+ 0xb0, // PUSHB_1
+ 0x14, // 20
+ 0x2c, // FDEF
+ 0xb3, // PUSHB_4 (we normally need no adjustments)
+ 0x00, // 0
+ 0x40, // 1.0 (F26Dot6)
+ 0x01, // 1
+ 0x40, // 1.0 (F26Dot6)
+ 0x42, // WS
+ 0x42, // WS
+ 0x01, // SVTCA[x-axis]
+ 0x4b, // MPPEM
+ 0xb8, // PUSHW_1
+ 0x10, // 4096
+ 0x00, // ...still that 4096
+ 0x63, // MUL (so we have PPEM along X casted to F26Dot6)
+ 0x00, // SVTCA[y-axis]
+ 0x4b, // MPPEM
+ 0xb8, // PUSHW_1
+ 0x10, // 4096
+ 0x00, // ...still that 4096
+ 0x63, // MUL (so we have PPEM along Y casted to F26Dot6)
+ 0x20, // DUP
+ 0x8a, // ROLL
+ 0x20, // DUP
+ 0x8a, // ROLL
+ 0x55, // NEQ
+ 0x58, // IF (if PPEM along X != PPEM along Y)
+ 0x20, // DUP
+ 0x8a, // ROLL
+ 0x20, // DUP
+ 0x8a, // ROLL
+ 0x52, // GT
+ 0x58, // IF (if PPEM along X < PPEM along Y)
+ 0x23, // SWAP
+ 0x62, // DIV
+ 0x20, // DUP
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x23, // SWAP
+ 0x42, // WS
+ 0x1b, // ELSE (if PPEM along X > PPEM along Y)
+ 0x62, // DIV
+ 0x20, // DUP
+ 0xb0, // PUSHB_1
+ 0x01, // 1
+ 0x23, // SWAP
+ 0x42, // WS
+ 0x59, // EIF
+ 0x20, // DUP [A LOOP STARTS HERE]
+ 0xb0, // PUSHB_1
+ 0x40, // 1.0 (F26Dot6)
+ 0x52, // GT
+ 0x58, // IF (bigger adjustment is greater than 1.0 => needs fixing)
+ 0xb2, // PUSHB_3
+ 0x00, // 0
+ 0x20, // 0.5 (F26Dot6)
+ 0x00, // 0
+ 0x43, // RS
+ 0x63, // MUL
+ 0x42, // WS (we halved adjustment for X)
+ 0xb2, // PUSHB_3
+ 0x01, // 1
+ 0x20, // 0.5 (F26Dot6)
+ 0x01, // 1
+ 0x43, // RS
+ 0x63, // MUL
+ 0x42, // WS (we halved adjustment for Y)
+ 0xb0, // PUSHB_1
+ 0x20, // 0.5 (F26Dot6)
+ 0x63, // MUL (we halved the bigger adjustment)
+ 0xb0, // PUSHB_1
+ 0x19, // 25
+ 0x65, // NEG
+ 0x1c, // JMPR (go back to the start of the loop)
+ 0x21, // POP
+ 0x59, // EIF
+ 0x1b, // ELSE (if PPEM along X == PPEM along Y)
+ 0x21, // POP
+ 0x21, // POP
+ 0x59, // EIF
+ 0x2d, // ENDF
+
+ /* Function 21: call it before SFVFS or SPVFS, so that the vector
+ * passed is aspect-ratio corrected.
+ * Syntax: x y 21 CALL
+ */
+ 0xb0, // PUSHB_1
+ 0x15, // 21
+ 0x2c, // FDEF
+ 0xb0, // PUSHB_1
+ 0x01, // 1
+ 0x43, // RS
+ 0x63, // MUL
+ 0x23, // SWAP
+ 0xb0, // PUSHB_1
+ 0x00, // 0
+ 0x43, // RS
+ 0x63, // MUL
+ 0x23, // SWAP
+ 0x2d // ENDF
+ };
+
+ struct ttf_table *tab = SFFindTable(gic->sf, CHR('f','p','g','m'));
+
+ if ( tab==NULL ) {
+ /* We have to create such table. */
+ tab = chunkalloc(sizeof(struct ttf_table));
+ tab->next = gic->sf->ttf_tables;
+ gic->sf->ttf_tables = tab;
+ tab->tag = CHR('f','p','g','m');
+ tab->len = 0;
+ }
+
+ if (tab->len==0 ||
+ (tab->len < (int)sizeof(new_fpgm) &&
+ !memcmp(tab->data, new_fpgm, tab->len)))
+ {
+ /* We can safely update font program. */
+ tab->len = tab->maxlen = sizeof(new_fpgm);
+ tab->data = realloc(tab->data, sizeof(new_fpgm));
+ memmove(tab->data, new_fpgm, sizeof(new_fpgm));
+ gic->fpgm_done = 1;
+ }
+ else {
+ /* there already is a font program. */
+ gic->fpgm_done = 0;
+ if (tab->len >= (int)sizeof(new_fpgm))
+ if (!memcmp(tab->data, new_fpgm, sizeof(new_fpgm)))
+ gic->fpgm_done = 1; /* it's ours. */
+
+ /* Log warning message. */
+ if (!gic->fpgm_done)
+ ff_post_error(_("Can't insert 'fpgm'"),
+ _("There exists a 'fpgm' code that seems incompatible with "
+ "FontForge's. Instructions generated will be of lower "
+ "quality. If legacy hinting is to be scrapped, it is "
+ "suggested to clear the `fpgm` and repeat autoinstructing. "
+ "It will be then possible to append user's code to "
+ "FontForge's 'fpgm', but due to possible future updates, "
+ "it is extremely advised to use high numbers for user's "
+ "functions."
+ ));
+ }
+}
+
+/* When initializing global instructing context, we want to set up the 'prep'
+ * table in order to apply family blues and normalize stem widths for monochrome
+ * display.
+ *
+ * The stem normalizer is heavily based on simple concept from FreeType2.
+ *
+ * First round the StdW. Then for each StemSnap (going outwards from StdW) check
+ * if it's within 1px from its already rounded neighbor, and if so, snap it
+ * before rounding. From all vertical stems (but not StdHW itself), 0.25px is
+ * subtracted before rounding. Similar method is used for non-cvt stems, they're
+ * snapped to the closest standard width if possible.
+ *
+ * NOTE: because of tiny scaling issues, we have to compute ppem at which each
+ * stem stops being snapped to its already-rounded neighbor here instead of
+ * relegating this to the truetype bytecide interpreter. We can't simply rely
+ * on cvt cut-in.
+ */
+
+static int compute_blue_height(real val, int EM, int bluescale, int ppem) {
+ int scaled_val = rint((rint(fabs(val)) * ppem * 64)/EM);
+ if (ppem < bluescale) scaled_val += 16;
+return (scaled_val + 32) / 64 * (val / fabs(val));
+}
+
+static uint8 *use_family_blues(uint8 *prep_head, GlobalInstrCt *gic) {
+ int i, h1, h2, stopat;
+ int bs = GetBlueScale(gic->sf);
+ int EM = gic->sf->ascent + gic->sf->descent;
+ int callargs[3];
+
+ for (i=0; i<gic->bluecnt; i++) {
+ if (isfinite(gic->blues[i].family_base))
+ {
+ for (stopat=0; stopat<32768; stopat++) {
+ h1 = compute_blue_height(gic->blues[i].base, EM, bs, stopat);
+ h2 = compute_blue_height(gic->blues[i].family_base, EM, bs, stopat);
+ if (abs(h1 - h2) > 1) break;
+ }
+
+ callargs[0] = gic->blues[i].family_cvtindex;
+ callargs[1] = stopat;
+ callargs[2] = 2;
+
+ prep_head = pushnum(prep_head, gic->blues[i].cvtindex);
+ *prep_head++ = DUP;
+ *prep_head++ = 0x45; //RCVT
+ prep_head = pushnums(prep_head, 3, callargs);
+ *prep_head++ = CALL;
+ *prep_head++ = 0x44; //WCVTP
+ }
+ }
+
+ return prep_head;
+}
+
+/* Return width (in pixels) of given stem, taking snaps into account.
+ */
+#define SNAP_THRESHOLD (64)
+static int compute_stem_width(int xdir, StdStem *stem, int EM, int ppem) {
+ int scaled_width; /* in 1/64th pixels */
+ int snapto_width; /* in 1/64th pixels */
+
+ scaled_width = (int)rint((rint(fabs(stem->width)) * ppem * 64.0)/EM);
+ if (scaled_width < 64) scaled_width = 64;
+
+ if (stem->snapto != NULL)
+ {
+ if (stem->stopat > ppem) {
+ snapto_width = 64*compute_stem_width(xdir, stem->snapto, EM, ppem);
+
+ if (abs(snapto_width - scaled_width) < SNAP_THRESHOLD)
+ scaled_width = snapto_width;
+ }
+
+ if (xdir) scaled_width -= 16;
+ }
+
+return (scaled_width + 32) / 64;
+}
+
+/* Normalize a single stem. The code generated assumes there is a scaled stem
+ * width on bytecode interpreter's stack, and leaves normalized width there.
+ */
+static uint8 *normalize_stem(uint8 *prep_head, int xdir, StdStem *stem, GlobalInstrCt *gic) {
+ int callargs[3];
+ int i;
+
+ stem->stopat = 32767;
+
+ if (stem->snapto != NULL)
+ {
+ /* compute ppem at which to stop snapping stem to stem->snapto */
+ int EM = gic->sf->ascent + gic->sf->descent;
+
+ for (i=7; i<32768; i++) {
+ int width_parent = compute_stem_width(xdir, stem->snapto, EM, i);
+ int width_me = compute_stem_width(xdir, stem, EM, i);
+
+ if (width_parent != width_me) {
+ stem->stopat = i;
+ break;
+ }
+ }
+
+ /* snap if below given ppem */
+ callargs[0] = stem->snapto->cvtindex;
+ callargs[1] = stem->stopat;
+ callargs[2] = 2;
+ prep_head = pushnums(prep_head, 3, callargs);
+ *prep_head++ = CALL;
+
+ /* Round[black], respecting minimum distance of 1 px */
+ /* Vertical stems (but not StdVW) use special rounding threshold. */
+ /* The rounding function restores default round state at the end. */
+ if (xdir) {
+ prep_head = push2nums(prep_head, 3, 70);
+ *prep_head++ = SROUND;
+ }
+ else prep_head = pushnum(prep_head, 3);
+
+ *prep_head++ = CALL;
+ }
+ else {
+ /* simply round[black] respecting minimum distance of 1 px */
+ prep_head = pushnum(prep_head, 3);
+ *prep_head++ = CALL;
+ }
+
+return prep_head;
+}
+
+/* Append the code for normalizing standard stems' widths to 'prep'.
+ */
+static uint8 *normalize_stems(uint8 *prep_head, int xdir, GlobalInstrCt *gic) {
+ int i, t;
+ StdStem *mainstem = xdir?&(gic->stdvw):&(gic->stdhw);
+ StdStem *otherstems = xdir?gic->stemsnapv:gic->stemsnaph;
+ int otherstemcnt = xdir?gic->stemsnapvcnt:gic->stemsnaphcnt;
+
+ if (mainstem->width == -1)
+return prep_head;
+
+ /* set up the standard width */
+ mainstem->snapto = NULL;
+ *prep_head++ = xdir?SVTCA_x:SVTCA_y;
+ prep_head = pushnum(prep_head, mainstem->cvtindex);
+ *prep_head++ = DUP;
+ *prep_head++ = 0x45; //RCVT
+ prep_head = normalize_stem(prep_head, xdir, mainstem, gic);
+ *prep_head++ = 0x44; //WCVTP
+
+ /* set up other standard widths */
+ for (i=0; i<otherstemcnt && otherstems[i].width < mainstem->width; i++);
+ t = i-1;
+
+ for (i=t; i>=0; i--) {
+ otherstems[i].snapto = i==t?mainstem:otherstems+i+1;
+ prep_head = pushnum(prep_head, otherstems[i].cvtindex);
+ *prep_head++ = DUP;
+ *prep_head++ = 0x45; //RCVT
+ prep_head = normalize_stem(prep_head, xdir, otherstems+i, gic);
+ *prep_head++ = 0x44; //WCVTP
+ }
+
+ for (i=t+1; i<otherstemcnt; i++) {
+ otherstems[i].snapto = i==t+1?mainstem:otherstems+i-1;
+ prep_head = pushnum(prep_head, otherstems[i].cvtindex);
+ *prep_head++ = DUP;
+ *prep_head++ = 0x45; //RCVT
+ prep_head = normalize_stem(prep_head, xdir, otherstems+i, gic);
+ *prep_head++ = 0x44; //WCVTP
+ }
+
+return prep_head;
+}
+
+/* Turning dropout control on will dramatically improve mono rendering, even
+ * without further hinting, especcialy for light typefaces. And turning hinting
+ * off at veeery small pixel sizes is required, because hints tend to visually
+ * tear outlines apart when not having enough workspace.
+ *
+ * We also normalize stem widths here, this usually massively improves overall
+ * consistency. We currently do this only for monochrome rendering (this
+ * includes WinXP's cleartype).
+ *
+ * TODO! We should take 'gasp' table into account and set up blues here.
+ */
+static void init_prep(GlobalInstrCt *gic) {
+ uint8 new_prep_preamble[] =
+ {
+ /* Enable dropout control. FreeType 2.3.7 need explicit SCANTYPE. */
+ 0xb8, // PUSHW_1
+ 0x01, // 511
+ 0xff, // ...still that 511
+ 0x85, // SCANCTRL
+ 0xb0, // PUSHB_1
+ 0x01, // 1
+ 0x8d, // SCANTYPE
+
+ /* Measurements are taken along Y axis */
+ 0x00, // SVTCA[y-axis]
+
+ /* Turn hinting off at very small pixel sizes */
+ 0x4b, // MPPEM
+ 0xb0, // PUSHB_1
+ 0x08, // 8 - hinting threshold - should be configurable
+ 0x50, // LT
+ 0x58, // IF
+ 0xb1, // PUSHB_2
+ 0x01, // 1
+ 0x01, // 1
+ 0x8e, // INSTCTRL
+ 0x59, // EIF
+
+ /* Determine the cvt cut-in used */
+ 0xb1, // PUSHB_2
+ 0x46, // 70/64 = about 1.094 pixel (that's our default setting)
+ 0x06, // 6
+ 0x2b, // CALL
+ 0x58, // IF
+ 0x21, // POP
+ 0xb0, // PUSHB_1
+ 0x10, // 16/64 = 0.25 pixel (very low cut-in for grayscale mode)
+ 0x59, // EIF
+ 0x4b, // MPPEM
+ 0xb0, // PUSHB_1
+ 0x14, // 20 PPEM - a threshold below which we'll use larger CVT cut-in
+ 0x52, // GT
+ 0x58, // IF
+ 0x21, // POP
+ 0xb0, // PUSHB_1
+ 0x80, // 128/64 = 2 pixels (extreme regularization for small ppems)
+ 0x59, // EIF
+ 0x1d // SCVTCI
+ };
+
+ int preplen = sizeof(new_prep_preamble);
+ int prepmaxlen = preplen;
+ uint8 *new_prep, *prep_head;
+ struct ttf_table *tab;
+
+ if (gic->cvt_done) {
+ prepmaxlen += 48 + 38*(gic->stemsnaphcnt + gic->stemsnapvcnt);
+ prepmaxlen += 14*(gic->bluecnt);
+ }
+
+ if (gic->fpgm_done)
+ prepmaxlen += 3;
+
+ new_prep = calloc(prepmaxlen, sizeof(uint8));
+ memmove(new_prep, new_prep_preamble, preplen*sizeof(uint8));
+ prep_head = new_prep + preplen;
+
+ if (gic->cvt_done && gic->fpgm_done) {
+ /* Apply family blues. */
+ prep_head = use_family_blues(prep_head, gic);
+
+ /* Normalize stems (only in monochrome mode) */
+ prep_head = pushnum(prep_head, 6);
+ *prep_head++ = CALL;
+ *prep_head++ = 0x5c; // NOT
+ *prep_head++ = 0x58; // IF
+ prep_head = normalize_stems(prep_head, 0, gic);
+ prep_head = normalize_stems(prep_head, 1, gic);
+ *prep_head++ = 0x59; // EIF
+ }
+
+ /* compute adjustments for projection vector */
+ if (gic->fpgm_done) {
+ prep_head = pushnum(prep_head, 20);
+ *prep_head++ = CALL;
+ }
+
+ preplen = prep_head - new_prep;
+
+ tab = SFFindTable(gic->sf, CHR('p','r','e','p'));
+
+ if ( tab==NULL ) {
+ /* We have to create such table. */
+ tab = chunkalloc(sizeof(struct ttf_table));
+ tab->next = gic->sf->ttf_tables;
+ gic->sf->ttf_tables = tab;
+ tab->tag = CHR('p','r','e','p');
+ tab->len = 0;
+ }
+
+ if (tab->len==0 ||
+ (tab->len < preplen && !memcmp(tab->data, new_prep, tab->len)))
+ {
+ /* We can safely update cvt program. */
+ tab->len = tab->maxlen = preplen;
+ tab->data = realloc(tab->data, preplen);
+ memmove(tab->data, new_prep, preplen);
+ gic->prep_done = 1;
+ }
+ else {
+ /* there already is a font program. */
+ gic->prep_done = 0;
+ if (tab->len >= preplen)
+ if (!memcmp(tab->data, new_prep, preplen))
+ gic->prep_done = 1; /* it's ours */
+
+ /* Log warning message. */
+ if (!gic->prep_done)
+ ff_post_error(_("Can't insert 'prep'"),
+ _("There exists a 'prep' code incompatible with FontForge's. "
+ "It can't be guaranteed it will work well. It is suggested "
+ "to allow FontForge to insert its code and then append user"
+ "'s own."
+ ));
+ }
+
+ free(new_prep);
+}
+
+/*
+ * Initialize Global Instructing Context
+ */
+#define EDGE_FUZZ (500.0)
+void InitGlobalInstrCt(GlobalInstrCt *gic, SplineFont *sf, int layer,
+ BlueData *bd) {
+ BlueData _bd;
+
+ if (bd == NULL) {
+ QuickBlues(sf,layer,&_bd);
+ bd = &_bd;
+ }
+
+ gic->sf = sf;
+ gic->bd = bd;
+ gic->layer = layer;
+ gic->fudge = (sf->ascent+sf->descent)/EDGE_FUZZ;
+
+ gic->cvt_done = false;
+ gic->fpgm_done = false;
+ gic->prep_done = false;
+
+ gic->bluecnt = 0;
+ gic->stdhw.width = -1;
+ gic->stemsnaph = NULL;
+ gic->stemsnaphcnt = 0;
+ gic->stdvw.width = -1;
+ gic->stemsnapv = NULL;
+ gic->stemsnapvcnt = 0;
+
+ GICImportBlues(gic);
+ GICImportStems(0, gic); /* horizontal stems */
+ GICImportStems(1, gic); /* vertical stems */
+
+ init_cvt(gic);
+ init_fpgm(gic);
+ init_prep(gic);
+ init_maxp(gic);
+}
+
+/*
+ * Finalize Global Instructing Context
+ */
+void FreeGlobalInstrCt(GlobalInstrCt *gic) {
+ gic->sf = NULL;
+ gic->bd = NULL;
+ gic->fudge = 0;
+
+ gic->cvt_done = false;
+ gic->fpgm_done = false;
+ gic->prep_done = false;
+
+ gic->bluecnt = 0;
+ gic->stdhw.width = -1;
+ if (gic->stemsnaphcnt != 0) free(gic->stemsnaph);
+ gic->stemsnaphcnt = 0;
+ gic->stemsnaph = NULL;
+ gic->stdvw.width = -1;
+ if (gic->stemsnapvcnt != 0) free(gic->stemsnapv);
+ gic->stemsnapvcnt = 0;
+ gic->stemsnapv = NULL;
+}
+
+/******************************************************************************
+ ******************************************************************************
+ **
+ ** Stuff for managing global instructing context ends here. Now we'll deal
+ ** with single glyphs.
+ **
+ ** Many functions here need large or similar sets of arguments. I decided to
+ ** define an '(local) instructing context' to have them in one place and keep
+ ** functions' argument lists reasonably short. I first need to define some
+ ** internal sub-structures for instructing diagonal stems. Similar structures
+ ** for CVT management (based on PS Private) are defined in splinefont.h, and
+ ** were initialized handled above.
+ **
+ ******************************************************************************
+ ******************************************************************************/
+
+/* A line, described by two points */
+typedef struct pointvector {
+ PointData *pd1, *pd2;
+ int done;
+} PointVector;
+
+/* In this structure we store information about diagonales,
+ relatively to which the given point should be positioned */
+typedef struct diagpointinfo {
+ struct pointvector line[2];
+ int count;
+} DiagPointInfo;
+
+typedef struct instrct {
+ /* Things that are global for font and should be
+ initialized before instructing particular glyph. */
+ GlobalInstrCt *gic;
+
+ /* Here things for this particular glyph start. */
+ SplineChar *sc;
+ SplineSet *ss;
+
+ /* instructions */
+ uint8 *instrs; /* the beginning of the instructions */
+ uint8 *pt; /* the current position in the instructions */
+
+ /* properties indexed by contour number */
+ int *contourends; /* points ending their contours. Null-terminated. */
+ uint8 *clockwise; /* is given contour clockwise? */
+
+ /* properties, indexed by ttf point index. Some could be compressed. */
+ int ptcnt; /* number of points in this glyph */
+ BasePoint *bp; /* point coordinates */
+ uint8 *touched; /* touchflags; points explicitly instructed */
+ uint8 *affected; /* touchflags; almost touched, but optimized out */
+
+ /* data from stem detector */
+ GlyphData *gd;
+
+ /* stuff for hinting diagonals */
+ int diagcnt;
+ StemData **diagstems;
+ DiagPointInfo *diagpts; /* indexed by ttf point index */
+
+ /* stuff for hinting edges (stems, blues, strong point interpolation). */
+ int xdir; /* direction flag: x=true, y=false */
+ int cdir; /* is current contour outer? - blues need this */
+ struct __edge {
+ real base; /* where the edge is */
+ int refpt; /* best ref. point for an edge, ttf index, -1 if none */
+ int refscore; /* its quality, for searching better one; 0 if none */
+ int othercnt; /* count of other points to instruct for this edge */
+ int *others; /* their ttf indices, optimize_edge() is advised */
+ } edge;
+
+ /* Some variables for tracking graphics state */
+ int rp0;
+} InstrCt;
+
+/******************************************************************************
+ *
+ * Low-level routines for manipulting and classifying splinepoints
+ *
+ ******************************************************************************/
+
+/* Find previous point index on the contour. */
+static int PrevOnContour(int *contourends, int p) {
+ int i;
+
+ if (p == 0) return contourends[0];
+ else {
+ for (i=0; contourends[i+1]; i++)
+ if (contourends[i]+1 == p)
+ return contourends[i+1];
+
+ return p-1;
+ }
+}
+
+/* Find next point index on the contour. */
+static int NextOnContour(int *contourends, int p) {
+ int i;
+
+ if (p == 0) return 1;
+ else {
+ for (i=0; contourends[i]; i++) {
+ if (contourends[i] == p) {
+ if (i==0) return 0;
+ else return contourends[i-1]+1;
+ }
+ }
+ return p+1;
+ }
+}
+
+/* For hinting stems, I found it needed to check if candidate point for
+ * instructing is pararell to hint's direction to avoid snapping wrong points.
+ * I splitted the routine into two, as sometimes it may be needed to check
+ * the angle to be strictly almost the same, not just pararell.
+ */
+static int __same_angle(int *contourends, BasePoint *bp, int p, double angle) {
+ int PrevPoint, NextPoint;
+ double PrevTangent, NextTangent;
+
+ PrevPoint = PrevOnContour(contourends, p);
+ NextPoint = NextOnContour(contourends, p);
+ PrevTangent = atan2(bp[p].y - bp[PrevPoint].y, bp[p].x - bp[PrevPoint].x);
+ NextTangent = atan2(bp[NextPoint].y - bp[p].y, bp[NextPoint].x - bp[p].x);
+
+ /* If at least one of the tangents is close to the given angle, return */
+ /* true. 'Close' means about 5 deg, i.e. about 0.087 rad. */
+ PrevTangent = fabs(PrevTangent-angle);
+ NextTangent = fabs(NextTangent-angle);
+ while (PrevTangent > M_PI) PrevTangent -= 2*M_PI;
+ while (NextTangent > M_PI) NextTangent -= 2*M_PI;
+return (fabs(PrevTangent) <= 0.087) || (fabs(NextTangent) <= 0.087);
+}
+
+static int same_angle(int *contourends, BasePoint *bp, int p, double angle) {
+return __same_angle(contourends, bp, p, angle) || __same_angle(contourends, bp, p, angle+M_PI);
+}
+
+/* I found it needed to write some simple functions to classify points snapped
+ * to hint's edges. Classification helps to establish the most accurate leading
+ * point for an edge.
+ */
+static int _IsExtremum(int xdir, SplinePoint *sp) {
+return xdir?
+ (!sp->nonextcp && !sp->noprevcp && sp->nextcp.x==sp->me.x && sp->prevcp.x==sp->me.x):
+ (!sp->nonextcp && !sp->noprevcp && sp->nextcp.y==sp->me.y && sp->prevcp.y==sp->me.y);
+}
+
+static int IsExtremum(int xdir, int p, SplinePoint *sp) {
+ int ret = _IsExtremum(xdir, sp);
+
+ if ((sp->nextcpindex == p) && (sp->next != NULL) && (sp->next->to != NULL))
+ ret = ret || _IsExtremum(xdir, sp->next->to);
+ else if ((sp->ttfindex != p) && (sp->prev != NULL) && (sp->prev->from != NULL))
+ ret = ret || _IsExtremum(xdir, sp->prev->from);
+
+return ret;
+}
+
+static int IsCornerExtremum(int xdir, int *contourends, BasePoint *bp, int p) {
+ int PrevPoint = PrevOnContour(contourends, p);
+ int NextPoint = NextOnContour(contourends, p);
+
+return xdir?
+ ((bp[PrevPoint].x > bp[p].x && bp[NextPoint].x > bp[p].x) ||
+ (bp[PrevPoint].x < bp[p].x && bp[NextPoint].x < bp[p].x)):
+ ((bp[PrevPoint].y > bp[p].y && bp[NextPoint].y > bp[p].y) ||
+ (bp[PrevPoint].y < bp[p].y && bp[NextPoint].y < bp[p].y));
+}
+
+static int IsAnglePoint(int *contourends, BasePoint *bp, SplinePoint *sp) {
+ int PrevPoint, NextPoint, p=sp->ttfindex;
+ double PrevTangent, NextTangent;
+
+ if ((sp->pointtype != pt_corner) || (p == 0xffff))
+return 0;
+
+ PrevPoint = PrevOnContour(contourends, p);
+ NextPoint = NextOnContour(contourends, p);
+ PrevTangent = atan2(bp[p].y - bp[PrevPoint].y, bp[p].x - bp[PrevPoint].x);
+ NextTangent = atan2(bp[NextPoint].y - bp[p].y, bp[NextPoint].x - bp[p].x);
+
+return fabs(PrevTangent - NextTangent) > 0.261;
+}
+
+static int IsInflectionPoint(int *contourends, BasePoint *bp, SplinePoint *sp) {
+ double CURVATURE_THRESHOLD = 1e-9;
+ struct spline *prev, *next;
+ double in, out;
+
+ if (IsAnglePoint(contourends, bp, sp))
+return 0;
+
+ /* point of a single-point contour can't be an inflection point. */
+ if (sp->prev != NULL && sp->prev->from != NULL && sp->prev->from == sp)
+return 0;
+
+ prev = sp->prev;
+ in = 0;
+ while (prev != NULL && fabs(in) < CURVATURE_THRESHOLD) {
+ in = SplineCurvature(prev, 1);
+ if (fabs(in) < CURVATURE_THRESHOLD) in = SplineCurvature(prev, 0);
+ if (fabs(in) < CURVATURE_THRESHOLD) prev = prev->from->prev;
+ if ((prev != NULL && IsAnglePoint(contourends, bp, prev->to)) || (prev == sp->prev))
+ break;
+ }
+
+ next = sp->next;
+ out = 0;
+ while (next != NULL && fabs(out) < CURVATURE_THRESHOLD) {
+ out = SplineCurvature(next, 0);
+ if (fabs(out) < CURVATURE_THRESHOLD) out = SplineCurvature(next, 1);
+ if (fabs(out) < CURVATURE_THRESHOLD) next = next->to->next;
+ if ((next != NULL && IsAnglePoint(contourends, bp, next->from)) || (next == sp->next))
+ break;
+ }
+
+ if (in==0 || out==0 || (prev != sp->prev && next != sp->next))
+return 0;
+
+ in/=fabs(in);
+ out/=fabs(out);
+
+return (in*out < 0);
+}
+
+/******************************************************************************
+ *
+ * I found it easier to write an iterator that calls given function for each
+ * point worth instructing than repeating the same loops all the time.
+ *
+ * The control points are not skipped, but runmes often eliminate them as
+ * instructing them seems to cause more damages than profits. They are included
+ * here because edge optimizer cam be simpler and work more reliably then.
+ *
+ * The contour_direction option is for blues - snapping internal contour to a
+ * blue zone is plain wrong, unless there is a stem hint tat don't fit to any
+ * other blue zone.
+ *
+ ******************************************************************************/
+#define EXTERNAL_CONTOURS 0
+#define ALL_CONTOURS 1
+#define INTERNAL_CONTOURS 2
+static void RunOnPoints(InstrCt *ct, int contour_direction,
+ void (*runme)(int p, SplinePoint *sp, InstrCt *ct))
+{
+ SplineSet *ss = ct->ss;
+ SplinePoint *sp;
+ uint8 *done;
+ int c, p;
+
+ done = (uint8 *)calloc(ct->ptcnt, sizeof(uint8));
+
+ for ( c=0; ss!=NULL; ss=ss->next, ++c ) {
+ ct->cdir = ct->clockwise[c];
+
+ if (((contour_direction == EXTERNAL_CONTOURS) && !ct->cdir) ||
+ ((contour_direction == INTERNAL_CONTOURS) && ct->cdir)) continue;
+
+ for ( sp=ss->first; ; ) {
+ if (sp->ttfindex != 0xffff) {
+ if (!sp->noprevcp &&
+ !done[p = PrevOnContour(ct->contourends, sp->ttfindex)])
+ {
+ runme(p, sp, ct);
+ done[p] = true;
+ }
+
+ if (!done[p = sp->ttfindex]) {
+ runme(p, sp, ct);
+ done[p] = true;
+ }
+
+ if (!sp->nonextcp && !done[p = sp->nextcpindex])
+ {
+ runme(p, sp, ct);
+ done[p] = true;
+ }
+ }
+ else if (!sp->nonextcp) {
+ if (!done[p = PrevOnContour(ct->contourends, sp->nextcpindex)]) {
+ runme(p, sp, ct);
+ done[p] = true;
+ }
+
+ if (!done[p = sp->nextcpindex]) {
+ runme(p, sp, ct);
+ done[p] = true;
+ }
+ }
+
+ if ( sp->next==NULL ) break;
+ sp = sp->next->to;
+ if ( sp==ss->first ) break;
+ }
+ }
+
+ free(done);
+}
+
+/******************************************************************************
+ *
+ * Hinting is mostly aligning 'edges' (in FreeType's sense). Each stem hint
+ * consists of two edges (or one, for ghost hints). And each blue zone can be
+ * represented as an edge with extended fudge (overshoot).
+ *
+ * Hinting a stem edge is broken in two steps. First: init_stem_edge() seeks for
+ * points to snap and chooses one that will be used as a reference point - it
+ * should be then instructed elsewhere (a general method of edge positioning).
+ * Old init_edge() is still used instead for blue zones and strong points.
+ * Finally, finish_edge() instructs the rest of points found with given command,
+ * using instructpoints(). It normally optimizes an edge before instructing,
+ * but not in presence of diagonal hints.
+ *
+ * The contour_direction option of init_edge() is for hinting blues - snapping
+ * internal contour to a bluezone seems just plainly wrong.
+ *
+ ******************************************************************************/
+
+/* The following operations have been separated from search_edge(), */
+/* because sometimes it is important to be able to determine, if the */
+/* given point is about to be gridfitted or interpolated */
+static int value_point(InstrCt *ct, int p, SplinePoint *sp, real fudge) {
+ int score = 0;
+ int EM = ct->gic->sf->ascent + ct->gic->sf->descent;
+ uint8 touchflag = ct->xdir?tf_x:tf_y;
+
+ if (IsCornerExtremum(ct->xdir, ct->contourends, ct->bp, p) ||
+ IsExtremum(ct->xdir, p, sp))
+ score+=4;
+
+ if (same_angle(ct->contourends, ct->bp, p, ct->xdir?0.5*M_PI:0.0))
+ score++;
+
+ if (p == sp->ttfindex && IsAnglePoint(ct->contourends, ct->bp, sp))
+ score++;
+
+ if (interpolate_more_strong && (fudge > (EM/EDGE_FUZZ+0.0001)))
+ if (IsExtremum(!ct->xdir, p, sp))
+ score++;
+
+ if (IsInflectionPoint(ct->contourends, ct->bp, sp))
+ score++;
+
+ if (score && ct->gd->points[p].sp != NULL) /* oncurve */
+ score+=2;
+
+ if (!score)
+return( 0 );
+
+ if (ct->diagstems != NULL && ct->diagpts[p].count) score+=9;
+ if (ct->touched[p] & touchflag) score+=26;
+return( score );
+}
+
+/* search for points to be snapped to an edge - to be used in RunOnPoints() */
+static void search_edge(int p, SplinePoint *sp, InstrCt *ct) {
+ int tmp, score;
+ real fudge = ct->gic->fudge;
+ uint8 touchflag = ct->xdir?tf_x:tf_y;
+ real refcoord, coord = ct->xdir?ct->bp[p].x:ct->bp[p].y;
+
+ if (fabs(coord - ct->edge.base) <= fudge)
+ {
+ score = value_point(ct, p, sp, ct->gic->fudge);
+ if (!score)
+ return;
+ else if (ct->edge.refpt == -1) {
+ ct->edge.refpt = p;
+ ct->edge.refscore = score;
+ return;
+ }
+
+ refcoord = ct->xdir?ct->bp[ct->edge.refpt].x:ct->bp[ct->edge.refpt].y;
+
+ if ((score > ct->edge.refscore) ||
+ (score == ct->edge.refscore &&
+ fabs(coord - ct->edge.base) < fabs(refcoord - ct->edge.base)))
+ {
+ tmp = ct->edge.refpt;
+ ct->edge.refpt = p;
+ ct->edge.refscore = score;
+ p = tmp;
+ }
+
+ if ((p!=-1) && !((ct->touched[p] | ct->affected[p]) & touchflag)) {
+ ct->edge.othercnt++;
+
+ if (ct->edge.othercnt==1) ct->edge.others=(int *)calloc(1, sizeof(int));
+ else ct->edge.others=(int *)realloc(ct->edge.others, ct->edge.othercnt*sizeof(int));
+
+ ct->edge.others[ct->edge.othercnt-1] = p;
+ }
+ }
+}
+
+static int StemPreferredForPoint(PointData *pd, StemData *stem,int is_next ) {
+ StemData **stems;
+ BasePoint bp;
+ real off, bestoff;
+ int i, is_l, best=0, *stemcnt;
+
+ stems = ( is_next ) ? pd->nextstems : pd->prevstems;
+ stemcnt = ( is_next) ? &pd->nextcnt : &pd->prevcnt;
+
+ bestoff = 1e4;
+ for ( i=0; i<*stemcnt; i++ ) {
+ /* Ghost hints are always assigned to both sides of a point, no matter
+ * what the next/previous spline direction is. So we need an additional
+ * check for stem unit parallelity */
+ if (stems[i]->toobig > stem->toobig ||
+ stems[i]->unit.x != stem->unit.x || stems[i]->unit.y != stem->unit.y)
+ continue;
+ is_l = is_next ? pd->next_is_l[i] : pd->prev_is_l[i];
+ bp = is_l ? stems[i]->left : stems[i]->right;
+ off = fabs(( pd->base.x - bp.x )*stem->l_to_r.x +
+ ( pd->base.y - bp.y )*stem->l_to_r.y );
+ if (off < bestoff || (RealNear(off, bestoff) && stems[i] == stem)) {
+ best = i;
+ bestoff = off;
+ }
+ }
+ if (best < *stemcnt && stem == stems[best])
+ return( best );
+
+ return( -1 );
+}
+
+static int has_valid_dstem( PointData *pd,int next ) {
+ int i, cnt;
+ StemData *test;
+
+ cnt = next ? pd->nextcnt : pd->prevcnt;
+ for ( i=0; i<cnt; i++ ) {
+ test = next ? pd->nextstems[i] : pd->prevstems[i];
+ if ( !test->toobig && test->lpcnt > 1 && test->rpcnt > 1 &&
+ fabs( test->unit.x ) > .05 && fabs( test->unit.y ) > .05 )
+ return( i );
+ }
+ return( -1 );
+}
+
+/* init_stem_edge(): Initialize the InstrCt for instructing given edge.
+ *
+ * Finds points that should be snapped to this hint's given edge.
+ * It will return two types of points: a 'chosen one' ct->edge.refpt, that
+ * should be used as a reference for this hint, and ct->edge.others that should
+ * be positioned after ct.refpt with, for example, SHP.
+ *
+ * assign_points_to_edge() is a helper function, only to use from init_stem_edge().
+ */
+static void assign_points_to_edge(InstrCt *ct, StemData *stem, int is_l, int *refidx) {
+ int i, previdx, nextidx, test_l, dint_inner = false, flag;
+ PointData *pd;
+
+ flag = RealNear( stem->unit.y,1 ) ? tf_x : tf_y;
+
+ for ( i=0; i<ct->gd->realcnt; i++ ) {
+ pd = &ct->gd->points[i];
+ previdx = StemPreferredForPoint( pd,stem,false );
+ nextidx = StemPreferredForPoint( pd,stem,true );
+ if (!pd->ticked && (previdx != -1 || nextidx != -1)) {
+ pd->ticked = true;
+ /* Don't attempt to position inner points at diagonal intersections:
+ * our diagonal stem hinter will handle them better */
+ if ( ct->diagcnt > 0 && (
+ ( stem->unit.y == 1 && pd->x_corner == 2 ) ||
+ ( stem->unit.x == 1 && pd->y_corner == 2 ))) {
+
+ dint_inner= has_valid_dstem( pd,true ) != -1 &&
+ has_valid_dstem( pd,false ) != -1;
+ }
+ test_l = (nextidx != -1) ?
+ pd->next_is_l[nextidx] : pd->prev_is_l[previdx];
+ if (test_l == is_l && !dint_inner &&
+ !(ct->touched[pd->ttfindex] & flag) && !(ct->affected[pd->ttfindex] & flag)) {
+ ct->edge.others = (int *)realloc(
+ ct->edge.others, (ct->edge.othercnt+1)*sizeof(int));
+ ct->edge.others[ct->edge.othercnt++] = pd->ttfindex;
+ if ( *refidx == -1 ) *refidx = pd->ttfindex;
+ }
+ }
+ }
+}
+
+static void init_stem_edge(InstrCt *ct, StemData *stem, int is_l) {
+ real left, right, base;
+ struct dependent_stem *slave;
+ PointData *rpd = NULL;
+ int i, *refidx = NULL;
+
+ left = ( stem->unit.x == 0 ) ? stem->left.x : stem->left.y;
+ right = ( stem->unit.x == 0 ) ? stem->right.x : stem->right.y;
+ base = ( is_l ) ? left : right;
+
+ ct->edge.base = base;
+ ct->edge.refpt = -1;
+ ct->edge.refscore = 0;
+ ct->edge.othercnt = 0;
+ ct->edge.others = NULL;
+
+ refidx = ( is_l ) ? &stem->leftidx : &stem->rightidx;
+ if ( *refidx != -1 )
+ rpd = &ct->gd->points[*refidx];
+
+ /* Don't attempt to position inner points at diagonal intersections:
+ * our diagonal stem hinter will handle them better */
+ if ( rpd != NULL && ct->diagcnt > 0 && (
+ ( stem->unit.y == 1 && rpd->x_corner == 2 ) ||
+ ( stem->unit.x == 1 && rpd->y_corner == 2 )) &&
+ has_valid_dstem( rpd,true ) != -1 && has_valid_dstem( rpd,false ) != -1 )
+ *refidx = -1;
+
+ for ( i=0; i<ct->gd->realcnt; i++ )
+ ct->gd->points[i].ticked = false;
+ assign_points_to_edge(ct, stem, is_l, refidx);
+
+ for ( i=0; i<stem->dep_cnt; i++ ) {
+ slave = &stem->dependent[i];
+ if (slave->dep_type == 'a' &&
+ ((is_l && slave->lbase) || (!is_l && !slave->lbase))) {
+
+ if ( is_l ) slave->stem->leftidx = *refidx;
+ else slave->stem->rightidx = *refidx;
+ assign_points_to_edge(ct, slave->stem, is_l, refidx);
+ }
+ }
+ ct->edge.refpt = *refidx;
+}
+
+/* Initialize the InstrCt for instructing given edge. */
+static void init_edge(InstrCt *ct, real base, int contour_direction) {
+ ct->edge.base = base;
+ ct->edge.refpt = -1;
+ ct->edge.refscore = 0;
+ ct->edge.othercnt = 0;
+ ct->edge.others = NULL;
+
+ RunOnPoints(ct, contour_direction, &search_edge);
+}
+
+/* Apparatus for edge hinting optimization. For given 'others' in ct,
+ * it detects 'segments' (in FreeType's sense) and leaves only one point per
+ * segment. A segment to which refpt belong is completely removed (refpt is
+ * enough).
+ *
+ * optimize_edge() is the right high-level function to call with instructing
+ * context (an edge must be previously initialized with init_edge). It calls
+ * optimize_segment() internally - a function that is otherwise unsafe.
+ *
+ * optimize_blue() is even higher-level function to call before optimize_edge
+ * if init_edge() was used to collect points in a blue zone (or other narrow
+ * zone).
+ *
+ * Optimizers keep points used by diagonal hinter.
+ *
+ * optimize_strongpts() is used instead of two routines above when hinting
+ * inter-stem zones (see interpolate_strong option). It's invoked after
+ * instructing diagonal stems.
+ */
+
+/* To be used with qsort() - sorts integer array in ascending order. */
+static int sortbynum(const void *a, const void *b) {
+ return *(int *)a > *(int *)b;
+}
+
+/* Find element's index within an array - return -1 if element not found. */
+static int findoffs(const int *elems, int elemcnt, int val) {
+ int i;
+ for (i=0; i<elemcnt; i++) if (elems[i]==val) return i;
+ return -1;
+}
+
+/* In given ct, others[segstart...segend] form a continuous segment on an edge
+ * parallel to one of coordinate axes. If there are no diagonal hints, we can
+ * instruct just one point of a segment, preferring refpt if included, and
+ * preferring on-curve points ovef off-curve. Otherwise we must instruct all
+ * points used by diagonal hinter along with refpt if included. We mark points
+ * that are not to be instructed as 'affected'.
+ */
+static void optimize_segment(int segstart, int segend, InstrCt *ct) {
+ int i, local_refpt=-1;
+ int *others = ct->edge.others;
+ int touchflag = (ct->xdir)?tf_x:tf_y;
+ int ondiags = 0;
+
+ if (segstart==segend)
+return;
+
+ /* purely for aesthetic reasons - can be safely removed. */
+ qsort(others+segstart, segend+1-segstart, sizeof(int), sortbynum);
+
+ /* are there any to be used with dstems? */
+ if (ct->diagstems)
+ for (i=segstart; !ondiags && i<=segend; i++)
+ ondiags = ct->diagpts[others[i]].count;
+
+ if (ondiags) {
+ for (i=segstart; i<=segend; i++)
+ ct->affected[others[i]] |= ct->diagpts[others[i]].count?0:touchflag;
+ }
+ else {
+ for (i=segstart; i<=segend && ct->gd->points[others[i]].sp == NULL; i++);
+ if (i<=segend) local_refpt = others[i];
+
+ if (findoffs(others+segstart, segend+1-segstart, ct->edge.refpt) != -1)
+ local_refpt = ct->edge.refpt;
+
+ if (local_refpt==-1) local_refpt = others[segstart];
+
+ for (i=segstart; i<=segend; i++)
+ ct->affected[others[i]] |= local_refpt==others[i]?0:touchflag;
+ }
+}
+
+/* Subdivide an edge into segments and optimize segments separately.
+ * A segment consists oh a point, his neighbours, their neighbours...
+ */
+static void optimize_edge(InstrCt *ct) {
+ int i, p, segstart, next;
+ int refpt = ct->edge.refpt;
+ int *others = ct->edge.others;
+ int othercnt = ct->edge.othercnt;
+ int touchflag = (ct->xdir)?tf_x:tf_y;
+
+ if (othercnt == 0)
+return;
+
+ /* add edge.refpt to edge.others */
+ ct->edge.othercnt = ++othercnt;
+ ct->edge.others = others = (int *)realloc(others, othercnt*sizeof(int));
+ others[othercnt-1]=refpt;
+
+ next = 0;
+ while (next < othercnt) {
+ p = others[segstart = next++];
+
+ while((next < othercnt) && (i = findoffs(others+next, othercnt-next,
+ NextOnContour(ct->contourends, p))) != -1) {
+ p = others[i+=next];
+ others[i] = others[next];
+ others[next++] = p;
+ }
+
+ p=others[segstart];
+
+ while((next < othercnt) && (i = findoffs(others+next, othercnt-next,
+ PrevOnContour(ct->contourends, p))) != -1) {
+ p = others[i+=next];
+ others[i] = others[next];
+ others[next++] = p;
+ }
+
+ optimize_segment(segstart, next-1, ct);
+ }
+
+ for (i=next=0; i<othercnt; i++)
+ if (!(ct->affected[others[i]] & touchflag) && (others[i] != refpt))
+ others[next++] = others[i];
+
+ if ((ct->edge.othercnt = next) == 0) {
+ free(others);
+ ct->edge.others = NULL;
+ }
+ else /* purely for aesthetic reasons - could be safely removed. */
+ qsort(others, ct->edge.othercnt, sizeof(int), sortbynum);
+}
+
+/* For any given point on edge, if there exists a path to other point snapped
+ * or to-be-snapped in that zone, such that any points on this path are within
+ * that zone, then this given point may be optimized out.
+ */
+static void optimize_blue(InstrCt *ct) {
+ int i, j, curr;
+ int *others = ct->edge.others;
+ int othercnt = ct->edge.othercnt;
+ int touchflag = (ct->xdir)?tf_x:tf_y;
+ int *contourends = ct->contourends;
+ uint8 *touched = ct->touched;
+ uint8 *affected = ct->affected;
+ uint8 *tosnap;
+
+ if (othercnt == 0)
+return;
+
+ tosnap = (uint8 *)calloc(ct->ptcnt, sizeof(uint8));
+
+ for(i=0; i<ct->edge.othercnt; i++)
+ {
+ if (ct->diagpts && ct->diagpts[others[i]].count) continue;
+
+ /* check path forward */
+ curr=NextOnContour(contourends, others[i]);
+ while(curr!=others[i]) {
+ double coord = (ct->xdir) ? ct->bp[curr].x : ct->bp[curr].y;
+ if (fabs(ct->edge.base - coord) > ct->gic->fudge) break;
+ if ((touched[curr] | affected[curr]) & touchflag || tosnap[curr]) {
+ affected[others[i]] |= touchflag;
+ break;
+ }
+ curr=NextOnContour(contourends, curr);
+ }
+
+ if (affected[others[i]] & touchflag) continue;
+
+ /* check path backward */
+ curr=PrevOnContour(contourends, others[i]);
+ while(curr!=others[i]) {
+ double coord = (ct->xdir) ? ct->bp[curr].x : ct->bp[curr].y;
+ if (fabs(ct->edge.base - coord) > ct->gic->fudge) break;
+ if ((touched[curr] | affected[curr]) & touchflag || tosnap[curr]) {
+ affected[others[i]] |= touchflag;
+ break;
+ }
+ curr=PrevOnContour(contourends, curr);
+ }
+
+ if (!(affected[others[i]] & touchflag)) tosnap[others[i]] = 1;
+ }
+
+ free(tosnap);
+
+ /* remove optimized-out points from list to be instructed. */
+ for(i=0; i<ct->edge.othercnt; i++)
+ if (affected[others[i]]) {
+ ct->edge.othercnt--;
+ for(j=i; j<ct->edge.othercnt; j++) others[j] = others[j+1];
+ i--;
+ }
+}
+
+/* For any strong point, check whether it's position can rely on other
+ * points (if so, we don't have to instruct it explicitly).
+ * This optimization is two-pass. 'Obvious' Off-curve points are sweeped
+ * first. Some remaining unneeded points (off- and on-curve) may then be
+ * optimized out in second pass.
+ *
+ * TODO! This optimizer could be even more aggressive - it currently
+ * skips some features too small or unexposed to benefit from hinting.
+ */
+static void optimize_strongpts_step1(InstrCt *ct);
+static void optimize_strongpts_step2(InstrCt *ct);
+
+static void optimize_strongpts(InstrCt *ct) {
+ optimize_strongpts_step1(ct);
+ optimize_strongpts_step2(ct);
+}
+
+static void optimize_strongpts_step1(InstrCt *ct) {
+ int i, j;
+ int *others = ct->edge.others;
+ int othercnt = ct->edge.othercnt;
+ int *contourends = ct->contourends;
+ uint8 *tocull, *tocheck;
+
+ if (othercnt == 0)
+return;
+
+ tocull = (uint8 *)calloc(ct->ptcnt, sizeof(uint8));
+ tocheck = (uint8 *)calloc(ct->ptcnt, sizeof(uint8));
+ for(i=0; i<ct->edge.othercnt; i++) tocheck[ct->edge.others[i]] = 1;
+
+ /* for each point of "edge" (would be better called "zone") */
+ for(i=0; i<ct->edge.othercnt; i++)
+ {
+ int pt = others[i];
+ double pt_x = ct->bp[pt].x;
+ double pt_y = ct->bp[pt].y;
+
+ int pt_next = NextOnContour(contourends, pt);
+ double pt_next_x = ct->bp[pt_next].x;
+ double pt_next_y = ct->bp[pt_next].y;
+
+ int pt_prev = PrevOnContour(contourends, pt);
+ double pt_prev_x = ct->bp[pt_prev].x;
+ double pt_prev_y = ct->bp[pt_prev].y;
+
+ /* We sweep only off-curve points here */
+ if (ct->gd->points[pt].sp != NULL)
+ continue;
+
+ if (IsCornerExtremum(ct->xdir, ct->contourends, ct->bp, pt))
+ continue;
+
+ /* Some off-curve points may 'belong' to extrema from other zone. */
+
+ if (/*tocheck[pt_next] &&*/ (ct->gd->points[pt_next].sp != NULL) &&
+ (pt_x == pt_next_x || pt_y == pt_next_y))
+ tocull[pt] = 1;
+
+ if (/*tocheck[pt_prev] &&*/ (ct->gd->points[pt_prev].sp != NULL) &&
+ (pt_x == pt_prev_x || pt_y == pt_prev_y))
+ tocull[pt] = 1;
+ }
+
+ /* remove optimized-out points from list to be instructed. */
+ for(i=0; i<ct->edge.othercnt; i++)
+ if (tocull[others[i]]) {
+ ct->edge.othercnt--;
+ for(j=i; j<ct->edge.othercnt; j++) others[j] = others[j+1];
+ i--;
+ }
+
+ free(tocull);
+ free(tocheck);
+}
+
+static void optimize_strongpts_step2(InstrCt *ct) {
+ int pass, i, j, forward;
+ int next_closed, prev_closed;
+ int next_pt_max, next_pt_min, prev_pt_max, prev_pt_min;
+ int next_coord_max, next_coord_min, prev_coord_max, prev_coord_min;
+ int *others = ct->edge.others;
+ int othercnt = ct->edge.othercnt;
+ int touchflag = (ct->xdir)?tf_x:tf_y;
+ int *contourends = ct->contourends;
+ uint8 *touched = ct->touched;
+ uint8 *affected = ct->affected;
+ uint8 *toinstr, *tocull, *tocheck;
+
+ if (othercnt == 0)
+return;
+
+ toinstr = (uint8 *)calloc(ct->ptcnt, sizeof(uint8));
+ tocull = (uint8 *)calloc(ct->ptcnt, sizeof(uint8));
+ tocheck = (uint8 *)calloc(ct->ptcnt, sizeof(uint8));
+ for(i=0; i<ct->edge.othercnt; i++) tocheck[ct->edge.others[i]] = 1;
+
+ /* two passes... */
+ for(pass=0; pass<2; pass++)
+ {
+ /* ...for each point of "edge" (would be better called "zone" here) */
+ for(i=0; i<ct->edge.othercnt; i++)
+ {
+ int pt = others[i];
+ double pt_coord = (ct->xdir) ? ct->bp[pt].x : ct->bp[pt].y;
+
+ /* In first pass, we sweep only off-curve points */
+ if ((pass==0) && (ct->gd->points[pt].sp != NULL))
+ continue;
+
+ if (tocull[pt] || toinstr[pt])
+ continue;
+
+ /* check path backward and forward */
+ for (forward=0; forward<2; forward++)
+ {
+ int closed = 0;
+ int pt_max = pt, pt_min = pt;
+ double coord_max = pt_coord, coord_min = pt_coord;
+ int curr = forward ? NextOnContour(contourends, pt):
+ PrevOnContour(contourends, pt);
+
+ while(curr!=pt)
+ {
+ double coord = (ct->xdir) ? ct->bp[curr].x : ct->bp[curr].y;
+
+ if (fabs(ct->edge.base - coord) > ct->gic->fudge)
+ break;
+
+ if ((touched[curr] | affected[curr]) & touchflag || tocheck[curr])
+ {
+ if (coord > coord_max) { coord_max = coord; pt_max = curr; }
+ else if ((coord == coord_max) && (curr < pt_max)) pt_max = curr;
+
+ if (coord < coord_min) { coord_min = coord; pt_min = curr; }
+ else if ((coord == coord_min) && (curr < pt_min)) pt_min = curr;
+
+ closed = 1;
+ }
+
+ if ((touched[curr] | affected[curr]) & touchflag || toinstr[curr])
+ break;
+
+ curr = forward ? NextOnContour(contourends, curr):
+ PrevOnContour(contourends, curr);
+ }
+
+ if (forward) {
+ next_closed = closed;
+ next_pt_max = pt_max;
+ next_pt_min = pt_min;
+ next_coord_max = coord_max;
+ next_coord_min = coord_min;
+ }
+ else {
+ prev_closed = closed;
+ prev_pt_max = pt_max;
+ prev_pt_min = pt_min;
+ prev_coord_max = coord_max;
+ prev_coord_min = coord_min;
+ }
+ }
+
+ if (prev_closed && next_closed && (
+ (prev_coord_max >= pt_coord && pt != prev_pt_max &&
+ next_coord_min <= pt_coord && pt != next_pt_min) ||
+ (prev_coord_min <= pt_coord && pt != prev_pt_min &&
+ next_coord_max >= pt_coord && pt != next_pt_max)))
+ tocull[pt] = 1;
+ else
+ toinstr[pt] = 1;
+ }
+ }
+
+ /* remove optimized-out points from list to be instructed. */
+ for(i=0; i<ct->edge.othercnt; i++)
+ if (tocull[others[i]]) {
+ ct->edge.othercnt--;
+ for(j=i; j<ct->edge.othercnt; j++) others[j] = others[j+1];
+ i--;
+ }
+
+ free(tocheck);
+ free(toinstr);
+ free(tocull);
+}
+
+/* Finish instructing the edge. Try to hint only those points on edge that are
+ * necessary - IUP should do the rest.
+ */
+static void finish_edge(InstrCt *ct, uint8 command) {
+ int i;
+
+ optimize_edge(ct);
+ if (ct->edge.othercnt==0)
+return;
+
+ ct->pt=instructpoints(ct->pt, ct->edge.othercnt, ct->edge.others, command);
+ for(i=0; i<ct->edge.othercnt; i++)
+ ct->touched[ct->edge.others[i]] |= (ct->xdir?tf_x:tf_y);
+
+ free(ct->edge.others);
+ ct->edge.others=NULL;
+ ct->edge.othercnt = 0;
+}
+
+/******************************************************************************
+ *
+ * Routines for hinting single stems.
+ *
+ ******************************************************************************/
+
+/* Each stem hint has 'ldone' and 'rdone' flag, indicating whether 'left'
+ * or 'right' edge is hinted or not. This functions marks as done all edges at
+ * specified coordinate, starting from given hint (hints sometimes share edges).
+ */
+static void mark_startenddones(StemData *stem, int is_l ) {
+ struct dependent_stem *slave;
+ int i;
+ uint8 *done;
+
+ done = is_l ? &stem->ldone : &stem->rdone;
+ *done = true;
+ for (i=0; i<stem->dep_cnt; i++) {
+ slave = &stem->dependent[i];
+ if ( slave->dep_type == 'a' && slave->lbase == is_l ) {
+ done = is_l ? &slave->stem->ldone : &slave->stem->rdone;
+ *done = true;
+ }
+ }
+}
+
+static void build_cvt_stem(InstrCt *ct, real width, StdStem *cvt_stem) {
+ int i, width_parent, width_me;
+ int EM = ct->gic->sf->ascent + ct->gic->sf->descent;
+
+ cvt_stem->width = (int)rint(fabs(width));
+ cvt_stem->stopat = 32767;
+ cvt_stem->snapto =
+ CVTSeekStem(ct->xdir, ct->gic, width, false);
+
+ for (i=7; i<32768; i++) {
+ width_parent = compute_stem_width(ct->xdir, cvt_stem->snapto, EM, i);
+ width_me = compute_stem_width(ct->xdir, cvt_stem, EM, i);
+
+ if (width_parent != width_me) {
+ cvt_stem->stopat = i;
+ break;
+ }
+ }
+}
+
+/* This function has been separated from finish_stem(), because sometimes
+ * it is necessary to maintain the distance between two points (usually on
+ * opposite stem edges) without instructing the whole stem. Currently we use this
+ * to achieve proper positioning of the left edge of a vertical stem in antialiased
+ * mode, if instructing this stem has to be started from the right edge
+ */
+static void maintain_black_dist(InstrCt *ct, real width, int refpt, int chg_rp0) {
+ int callargs[5];
+ StdStem *StdW = ct->xdir?&(ct->gic->stdvw):&(ct->gic->stdhw);
+ StdStem *ClosestStem;
+ StdStem cvt_stem;
+
+ ClosestStem = CVTSeekStem(ct->xdir, ct->gic, width, true);
+
+ if (ClosestStem != NULL) {
+ ct->pt = push2nums(ct->pt, refpt, ClosestStem->cvtindex);
+
+ if (ct->gic->cvt_done && ct->gic->fpgm_done && ct->gic->prep_done)
+ *(ct->pt)++ = chg_rp0?MIRP_rp0_min_black:MIRP_min_black;
+ else *(ct->pt)++ = chg_rp0?MIRP_min_rnd_black:MIRP_rp0_min_rnd_black;
+ }
+ else {
+ if (ct->gic->cvt_done && ct->gic->fpgm_done && ct->gic->prep_done &&
+ StdW->width!=-1)
+ {
+ build_cvt_stem(ct, width, &cvt_stem);
+
+ callargs[0] = ct->edge.refpt;
+ callargs[1] = cvt_stem.snapto->cvtindex;
+ callargs[2] = chg_rp0?1:0;
+ callargs[3] = cvt_stem.stopat;
+ callargs[4] = 4;
+ ct->pt = pushnums(ct->pt, 5, callargs);
+ *(ct->pt)++ = CALL;
+ }
+ else {
+ ct->pt = pushpoint(ct->pt, ct->edge.refpt);
+ *(ct->pt)++ = chg_rp0?MDRP_rp0_min_rnd_black:MDRP_min_rnd_black;
+ }
+ }
+}
+
+/* Given the refpt for one of this hint's edges is already positioned, this
+ * function aligns 'others' (SHP with given shp_rp) for this edge and positions
+ * the second edge, optionally setting its refpt as rp0. It frees edge.others
+ * and sets edge.othercnt to zero, but it leaves edge.refpt set to last
+ * instructed edge.
+ */
+#define use_rp1 (true)
+#define use_rp2 (false)
+#define set_new_rp0 (true)
+#define keep_old_rp0 (false)
+static void finish_stem(StemData *stem, int shp_rp1, int chg_rp0, InstrCt *ct)
+{
+ int is_l, basedone, oppdone, reverse;
+ real hleft, hright, width;
+
+ if (stem == NULL)
+ return;
+ hleft = ((real *) &stem->left.x)[!ct->xdir];
+ hright= ((real *) &stem->right.x)[!ct->xdir];
+
+ is_l = (fabs(hleft - ct->edge.base) < fabs(hright - ct->edge.base));
+ basedone = ( is_l && stem->ldone ) || ( !is_l && stem->rdone );
+ oppdone = ( is_l && stem->rdone ) || ( !is_l && stem->ldone );
+ reverse = ( ct->xdir && !is_l && !stem->ldone && !stem->ghost );
+ width = stem->width;
+
+ if ( !reverse && !basedone ) {
+ ct->touched[ct->edge.refpt] |= ct->xdir?tf_x:tf_y;
+ finish_edge(ct, shp_rp1?SHP_rp1:SHP_rp2);
+ mark_startenddones(stem, is_l );
+ }
+
+ if (oppdone || (stem->ghost && ((stem->width==20) || (stem->width==21)))) {
+ stem->ldone = stem->rdone = 1;
+ return;
+ }
+
+ init_stem_edge(ct, stem, !is_l);
+ if (ct->edge.refpt == -1) {
+ /* We have skipped the right edge to start instructing this stem from
+ * left. But its left edge appears to have no points to be instructed.
+ * So return to the right edge and instruct it before exiting */
+ if ( reverse && !basedone ) {
+ init_stem_edge(ct, stem, is_l);
+ ct->touched[ct->edge.refpt] |= ct->xdir?tf_x:tf_y;
+ finish_edge(ct, shp_rp1?SHP_rp1:SHP_rp2);
+ mark_startenddones(stem, is_l );
+ }
+ return;
+ }
+ maintain_black_dist(ct, width, ct->edge.refpt, chg_rp0);
+
+ if ( reverse ) {
+ is_l = !is_l;
+ ct->rp0 = ct->edge.refpt;
+ ct->pt = pushpoint(ct->pt, ct->rp0);
+ *(ct->pt)++ = MDAP_rnd;
+ ct->touched[ct->edge.refpt] |= ct->xdir?tf_x:tf_y;
+ finish_edge(ct, SHP_rp1);
+ mark_startenddones( stem, is_l );
+ if ( !stem->rdone ) {
+ init_stem_edge(ct, stem, false);
+ if (ct->edge.refpt == -1)
+ return;
+ maintain_black_dist(ct, width, ct->edge.refpt, chg_rp0);
+ }
+ }
+
+ if (chg_rp0) ct->rp0 = ct->edge.refpt;
+ ct->touched[ct->edge.refpt] |= ct->xdir?tf_x:tf_y;
+ finish_edge(ct, SHP_rp2);
+ mark_startenddones( stem, !is_l );
+}
+
+static void mark_points_affected(InstrCt *ct,StemData *target,PointData *opd,int next) {
+ Spline *s;
+ PointData *pd, *cpd;
+ int cpidx;
+
+ s = next ? opd->sp->next : opd->sp->prev;
+ pd = next ? &ct->gd->points[s->to->ptindex] : &ct->gd->points[s->from->ptindex];
+ while (IsStemAssignedToPoint(pd, target, !next) == -1) {
+ if (pd->ttfindex < ct->gd->realcnt &&
+ value_point(ct, pd->ttfindex, pd->sp, ct->gd->emsize))
+ ct->affected[pd->ttfindex] |= ct->xdir?tf_x:tf_y;
+
+ if (!pd->sp->noprevcp) {
+ cpidx = pd->sp->prev->from->nextcpindex;
+ cpd = &ct->gd->points[cpidx];
+ if (value_point(ct, cpd->ttfindex, pd->sp, ct->gd->emsize))
+ ct->affected[cpd->ttfindex] |= ct->xdir?tf_x:tf_y;
+ }
+ if (!pd->sp->nonextcp) {
+ cpidx = pd->sp->nextcpindex;
+ cpd = &ct->gd->points[cpidx];
+ if (value_point(ct, cpd->ttfindex, pd->sp, ct->gd->emsize))
+ ct->affected[cpd->ttfindex] |= ct->xdir?tf_x:tf_y;
+ }
+ s = next ? pd->sp->next : pd->sp->prev;
+ pd = next ? &ct->gd->points[s->to->ptindex] : &ct->gd->points[s->from->ptindex];
+ if ( pd == opd ) {
+ IError( "The ball terminal with a key point at %.3f,%.3f\n"
+ "appears to be incorrectly linked to the %s stem\n"
+ "<%.3f, %.3f>",
+ pd->base.x,pd->base.y,
+ ct->xdir?"vertical":"horizontal",
+ ct->xdir?target->left.x:target->right.y,target->width );
+ break;
+ }
+ }
+}
+
+static void finish_serif(StemData *slave, StemData *master, int lbase, int is_ball, InstrCt *ct)
+{
+ int inner_pt, callargs[4];
+ struct stem_chunk *chunk;
+ PointData *opd;
+ int i;
+
+ if (slave == NULL || master == NULL)
+return;
+ inner_pt = ( lbase ) ? master->rightidx : master->leftidx;
+
+ init_stem_edge(ct, slave, !lbase);
+ if (ct->edge.refpt == -1)
+return;
+
+ if (ct->gic->fpgm_done) {
+ callargs[0] = is_ball ? 0 : 64;
+ callargs[1] = inner_pt;
+ callargs[2] = ct->edge.refpt;
+ callargs[3] = 9;
+ ct->pt = pushnums(ct->pt, 4, callargs);
+ *(ct->pt)++ = CALL;
+ }
+ else {
+ *(ct->pt)++ = 0x7D; /* RDTG */
+ ct->pt = pushpoint(ct->pt, ct->edge.refpt);
+ *(ct->pt)++ = MDRP_min_rnd_black;
+ *(ct->pt)++ = 0x18; /* RTG */
+ }
+
+ ct->touched[ct->edge.refpt] |= ct->xdir?tf_x:tf_y;
+ finish_edge(ct, SHP_rp2);
+ mark_startenddones( slave, !lbase );
+
+ if ( !interpolate_strong || !instruct_ball_terminals )
+return;
+
+ /* Preserve points on ball terminals from being interpolated
+ * between edges by marking them as affected */
+ for ( i=0; i<slave->chunk_cnt; i++ ) {
+ chunk = &slave->chunks[i];
+ opd = lbase ? chunk->r : chunk->l;
+
+ if (chunk->is_ball && opd != NULL) {
+ mark_points_affected(ct, chunk->ball_m, opd, true);
+ mark_points_affected(ct, chunk->ball_m, opd, false);
+ }
+ }
+}
+
+static void link_serifs_to_edge(InstrCt *ct, StemData *stem, int is_l) {
+ int i, callargs[3];
+ struct dependent_serif *serif;
+
+ /* We use an FPGM function to set rp0, and thus the exact value
+ * is not known at the compilation time. So it is safer to reset
+ * ct->rp0 to -1
+ */
+ if ( ct->gic->fpgm_done ) {
+ ct->rp0 = -1;
+ callargs[0] = is_l ? stem->rightidx : stem->leftidx;
+ callargs[1] = is_l ? stem->leftidx : stem->rightidx;
+ callargs[2] = 10;
+ ct->pt = pushnums(ct->pt, 3, callargs);
+ *(ct->pt)++ = CALL;
+ } else {
+ init_stem_edge(ct, stem, !is_l);
+ if ( ct->rp0 != ct->edge.refpt ) {
+ ct->pt = pushpoint(ct->pt, ct->edge.refpt);
+ *(ct->pt)++ = SRP0;
+ ct->rp0 = ct->edge.refpt;
+ }
+ }
+ for (i=0; i<stem->serif_cnt; i++) {
+ serif = &stem->serifs[i];
+ if (serif->lbase == is_l &&
+ ((serif->is_ball && instruct_ball_terminals) ||
+ (!serif->is_ball && instruct_serif_stems)))
+ finish_serif( serif->stem,stem,is_l,serif->is_ball,ct );
+ }
+}
+
+static void instruct_serifs(InstrCt *ct, StemData *stem) {
+ int i, lcnt, rcnt;
+ struct dependent_serif *serif;
+
+ if ( stem->leftidx == -1 || stem->rightidx == -1 )
+ return;
+ lcnt = rcnt = 0;
+ for (i=0; i<stem->serif_cnt; i++) {
+ serif = &stem->serifs[i];
+ if ((serif->is_ball && !instruct_ball_terminals) ||
+ (!serif->is_ball && !instruct_serif_stems))
+ continue;
+ if ( serif->lbase )
+ lcnt++;
+ else if ( !serif->lbase )
+ rcnt++;
+ }
+
+ if (stem->ldone && lcnt > 0)
+ link_serifs_to_edge(ct, stem, true);
+ if (stem->rdone && rcnt > 0)
+ link_serifs_to_edge(ct, stem, false);
+}
+
+static void instruct_dependent(InstrCt *ct, StemData *stem) {
+ int i, j, rp, rp1, rp2, stopat, callargs[4];
+ struct dependent_stem *slave;
+ int w_master, w_slave;
+ StdStem *std_master, *std_slave, norm_master, norm_slave;
+ StdStem *StdW = ct->xdir?&(ct->gic->stdvw):&(ct->gic->stdhw);
+
+ for (i=0; i<stem->dep_cnt; i++) {
+ slave = &stem->dependent[i];
+ if (slave->stem->master == NULL)
+ continue;
+
+ init_stem_edge(ct, slave->stem, slave->lbase);
+ if (ct->edge.refpt == -1) continue;
+
+ if (slave->dep_type == 'i' && stem->ldone && stem->rdone) {
+ rp1 = ct->xdir ? stem->leftidx : stem->rightidx;
+ rp2 = ct->xdir ? stem->rightidx : stem->leftidx;
+ callargs[0] = ct->edge.refpt;
+ callargs[1] = rp2;
+ callargs[2] = rp1;
+ if (ct->gic->fpgm_done) {
+ callargs[3] = 8;
+ ct->pt = pushpoints(ct->pt, 4, callargs);
+ *(ct->pt)++ = CALL;
+ } else {
+ ct->pt = pushpoints(ct->pt, 3, callargs);
+ *(ct->pt)++ = SRP1;
+ *(ct->pt)++ = SRP2;
+ *(ct->pt)++ = DUP;
+ *(ct->pt)++ = IP;
+ *(ct->pt)++ = MDAP_rnd;
+ }
+ }
+ else if (slave->dep_type == 'm' &&
+ ((slave->lbase && stem->ldone) || (!slave->lbase && stem->rdone))) {
+
+ rp = slave->lbase ? stem->leftidx : stem->rightidx;
+ if ( rp != ct->rp0 ) {
+ ct->pt = pushpoint(ct->pt, rp);
+ *(ct->pt)++ = SRP0;
+ ct->rp0 = rp;
+ }
+
+ /* It is possible that at certain PPEMs both the master and slave stems are
+ * regularized, say, to 1 pixel, but the difference between their positions
+ * is rounded to 1 pixel too. Thus one stem is shifted relatively to another,
+ * so that the overlap disappears. This looks especially odd for nesting/nested
+ * stems. We use a special FPGM function to prevent this.
+ */
+ if ( ct->gic->cvt_done && ct->gic->fpgm_done && ct->gic->prep_done && StdW->width!=-1 && (
+ ((&stem->left.x)[!ct->xdir] <= (&slave->stem->left.x)[!ct->xdir] &&
+ ( &stem->right.x)[!ct->xdir] >= (&slave->stem->right.x)[!ct->xdir] ) ||
+ ((&stem->left.x)[!ct->xdir] >= (&slave->stem->left.x)[!ct->xdir] &&
+ ( &stem->right.x)[!ct->xdir] <= (&slave->stem->right.x)[!ct->xdir] ))) {
+
+ std_master = CVTSeekStem(ct->xdir, ct->gic, stem->width, true);
+ std_slave = CVTSeekStem(ct->xdir, ct->gic, slave->stem->width, true);
+ if ( std_master == NULL ) {
+ build_cvt_stem(ct, stem->width, &norm_master);
+ std_master = &norm_master;
+ }
+ if ( std_slave == NULL ) {
+ build_cvt_stem(ct, slave->stem->width, &norm_slave);
+ std_slave = &norm_slave;
+ }
+
+ stopat = 32768;
+ for (j=7; j<=stopat; j++) {
+ w_master = compute_stem_width(ct->xdir, std_master, ct->gd->emsize, j);
+ w_slave = compute_stem_width(ct->xdir, std_slave , ct->gd->emsize, j);
+
+ if (w_master != w_slave)
+ stopat = j;
+ }
+ callargs[0] = stopat;
+ callargs[1] = ct->rp0;
+ callargs[2] = ct->edge.refpt;
+ callargs[3] = 14;
+ ct->pt = pushpoints(ct->pt, 4, callargs);
+ *(ct->pt)++ = CALL;
+ }
+ else {
+ ct->pt = pushpoint(ct->pt, ct->edge.refpt);
+ *(ct->pt)++ = DUP;
+ *(ct->pt)++ = MDRP_rp0_rnd_white;
+ *(ct->pt)++ = SRP1;
+ }
+ }
+ else if (slave->dep_type == 'a' &&
+ ((slave->lbase && stem->ldone) || (!slave->lbase && stem->rdone))) {
+ if ( ct->edge.refpt != ct->rp0 ) {
+ ct->pt = pushpoint(ct->pt, ct->edge.refpt);
+ *(ct->pt)++ = SRP0;
+ }
+ }
+ else
+ continue;
+
+ ct->rp0 = ct->edge.refpt;
+ finish_stem(slave->stem, use_rp1, keep_old_rp0, ct);
+ if ( instruct_serif_stems || instruct_ball_terminals )
+ instruct_serifs(ct, slave->stem);
+
+ instruct_dependent(ct, slave->stem);
+ }
+}
+
+/******************************************************************************
+ *
+ * I decided to do snapping to blues at the very beginning of the instructing.
+ *
+ * Blues are processed in certain (important) order: baseline, descenders
+ * (from deeper to shorter), ascenders (from taller to shorter).
+ *
+ * For each blue, one of the edges is put into CVT: lower if is't > zero,
+ * the upper otherwise. A twilight point 0 is established at this height. All
+ * the glyph's points decided to be worth snapping are then moved relative to
+ * this twilight point, being subject to rounding 'down-to-int'. Space taken
+ * is at most 8*ptcnt.
+ *
+ * For each blue, all yet unprocessed HStems affected are instructed. Ghost
+ * hints are reckognised. If there is at least one stem hint in given blue zone,
+ * autoinstructor will seek for other interesting features, so there is no need
+ * to hint them explicitly.
+ *
+ * TODO! We currently instruct hints dependent on those controlled by blues.
+ * This may be not always corrrect (e.g. if a dependent hint is itself
+ * controlled by blue zone - possibly even different). Research needed.
+ *
+ * Important notes:
+ *
+ * The zone count must be set to 2, the twilight point count must be nonzero.
+ * This is done automagically in init_maxp(), otherwise this method wouldn't
+ * work at all. Currently there is only one twilight point used, but there
+ * may be needed one or even two points per blue zone if some advanced snapping
+ * and counter managing is to be done.
+ *
+ * Snapping relies on function 0 in FPGM, see init_fpgm().
+ *
+ * Using MIAP (single cvt, relying on cut-in) instead of twilight points
+ * causes overshoots to appear/disappear inconsistently at small pixel sizes.
+ * This flickering is disastrous to soft, wavy horizontal lines. We could use
+ * any glyph's point at needed height, but we're not certain we'll find any.
+ *
+ * The inner (leftwards) contours aren't snapped to the blue zone.
+ * This could have created weird artifacts. Of course this will fail for
+ * glyphs with wrong direction, but I won't handle it for now.
+ *
+ * TODO! Remind the user to correct direction or do it for him.
+ * TODO! Try to instruct 'free points' with single push and LOOPCALL.
+ *
+ * If we didn't snapped any point to a blue zone, we shouldn't mark any HStem
+ * edges done. This could made some important points on inner contours missed.
+ *
+ ******************************************************************************/
+
+/* Each blue zone has two TTF point indices associated with it: 'highest' and
+ * 'lowest'. These have to be points with highest and lowest Y coordinates that
+ * are snapped to that blue zone (directly or by horizontal stem). Currently
+ * we register only edge.refpt. These points are later to be used for horizontal
+ * stems' positioning.
+ */
+static void update_blue_pts(int blueindex, InstrCt *ct)
+{
+ BasePoint *bp = ct->bp;
+ BlueZone *blues = ct->gic->blues;
+
+ if (ct->edge.refpt == -1)
+return;
+
+ if (blues[blueindex].highest == -1 ||
+ bp[ct->edge.refpt].y > bp[blues[blueindex].highest].y)
+ blues[blueindex].highest = ct->edge.refpt;
+
+ if (blues[blueindex].lowest == -1 ||
+ bp[ct->edge.refpt].y < bp[blues[blueindex].lowest].y)
+ blues[blueindex].lowest = ct->edge.refpt;
+}
+
+/* It is theoretically possible that 'highest' and 'lowest' points of neighbour
+ * blue zones overlap, and thus may spoil horizontal stems' positioning.
+ * Here we fix this up.
+ */
+static void fixup_blue_pts(BlueZone *b1, BlueZone *b2) {
+ if (b1->lowest > b2->lowest) b1->lowest = b2->lowest;
+ if (b1->highest < b2->highest) b1->highest = b2->highest;
+}
+
+static void check_blue_pts(InstrCt *ct) {
+ BasePoint *bp = ct->bp;
+ BlueZone *blues = ct->gic->blues;
+ int i, j, bluecnt = ct->gic->bluecnt;
+
+ for (i=0; i<bluecnt; i++)
+ if (blues[i].lowest != -1)
+ for (j=0; j<bluecnt; j++)
+ if (i != j && blues[j].lowest != -1 && SegmentsOverlap(
+ bp[blues[i].lowest].y, bp[blues[i].highest].y,
+ bp[blues[j].lowest].y, bp[blues[j].highest].y))
+ fixup_blue_pts(blues+i, blues+j);
+}
+
+static int snap_stem_to_blue(InstrCt *ct,StemData *stem, BlueZone *blue, int idx) {
+ int i, is_l, ret = 0;
+ int callargs[3] = { 0/*pt*/, 0/*cvt*/, 0 };
+ real base, advance, tmp;
+ real fuzz = GetBlueFuzz(ct->gic->sf);
+ StemData *slave;
+
+ /* Which edge to start at? */
+ /* Starting at the other would usually be wrong. */
+ if (blue->overshoot < blue->base && ( !stem->ghost || stem->width == 21 ))
+ {
+ is_l = false;
+ base = stem->right.y;
+ advance = stem->left.y;
+ }
+ else {
+ is_l = true;
+ base = stem->left.y;
+ advance = stem->right.y;
+ }
+
+ /* This is intended as a fallback if the base edge wasn't within
+ * this bluezone, and advance edge was.
+ */
+ if (!stem->ghost &&
+ !SegmentsOverlap(base+fuzz, base-fuzz, blue->base, blue->overshoot) &&
+ SegmentsOverlap(advance+fuzz, advance-fuzz, blue->base, blue->overshoot))
+ {
+ tmp = base;
+ base = advance;
+ advance = tmp;
+ is_l = !is_l;
+ }
+
+ /* instruct the stem */
+ init_stem_edge(ct, stem, is_l);
+ if (ct->edge.refpt == -1) {
+ for ( i=0; i<stem->dep_cnt; i++ ) {
+ slave = stem->dependent[i].stem;
+ /* A hack which allows single-edge hints to tie features
+ * to remote blue zones. */
+ if ( stem->ghost ) slave->blue = idx;
+ if ( slave->blue == idx )
+ ret += snap_stem_to_blue(ct, slave, blue, idx);
+ }
+ return( ret );
+ }
+ update_blue_pts(idx, ct);
+ callargs[0] = ct->rp0 = ct->edge.refpt;
+ callargs[1] = blue->cvtindex;
+
+ if (ct->gic->fpgm_done) {
+ ct->pt = pushpoints(ct->pt, 3, callargs);
+ *(ct->pt)++ = CALL;
+ }
+ else {
+ ct->pt = pushpoints(ct->pt, 2, callargs);
+ *(ct->pt)++ = MIAP_rnd;
+ }
+
+ finish_stem(stem, use_rp1, keep_old_rp0, ct);
+ for ( i=0; i<stem->dep_cnt; i++ ) {
+ slave = stem->dependent[i].stem;
+ if ( slave->blue == idx ) {
+ ret += snap_stem_to_blue(ct, slave, blue, idx);
+ slave->master = NULL;
+ }
+ }
+
+ if( instruct_serif_stems || instruct_ball_terminals )
+ instruct_serifs(ct, stem);
+ instruct_dependent(ct, stem);
+ update_blue_pts(idx, ct); /* this uses only refpt: who cares? */
+ return( ret + 1 );
+}
+
+/* Snap stems and perhaps also some other points to given bluezone and set up
+ * its 'highest' and 'lowest' point indices.
+ */
+static void snap_to_blues(InstrCt *ct) {
+ int i, j;
+ int therewerestems; /* were there any HStems snapped to this blue? */
+ StemData *stem; /* for HStems affected by blues */
+ real base; /* for the hint */
+ int callargs[3] = { 0/*pt*/, 0/*cvt*/, 0 };
+ real fudge;
+ int bluecnt=ct->gic->bluecnt;
+ int queue[12]; /* Blue zones' indices in processing order */
+ BlueZone *blues = ct->gic->blues;
+ real fuzz = GetBlueFuzz(ct->gic->sf);
+
+ if (bluecnt == 0)
+return;
+
+ /* Fill the processing queue - baseline goes first, then bottom zones */
+ /* sorted by base in ascending order, then top zones sorted in descending */
+ /* order. I assume the blues are sorted in ascending order first. */
+ for (i=0; (i < bluecnt) && (blues[i].base < 0); i++);
+ queue[0] = i;
+ for (i=0; i<queue[0]; i++) queue[i+1] = i;
+ for (i=queue[0]+1; i<bluecnt; i++) queue[i] = bluecnt - i + queue[0];
+
+ /* Process the blues. */
+ for (i=0; i<bluecnt; i++) {
+ therewerestems = 0;
+
+ /* Process all hints with edges within current blue zone. */
+ for ( j=0; j<ct->gd->hbundle->cnt; j++ ) {
+ stem = ct->gd->hbundle->stemlist[j];
+ if (stem->master != NULL || stem->blue != queue[i] || stem->ldone || stem->rdone)
+ continue;
+
+ therewerestems += snap_stem_to_blue(ct, stem, &blues[queue[i]], queue[i]);
+ }
+
+ /* Now I'll try to find points not snapped by any previous stem hint. */
+ if (therewerestems) {
+ base = (blues[queue[i]].base + blues[queue[i]].overshoot) / 2.0;
+ fudge = ct->gic->fudge;
+ ct->gic->fudge = fabs(base - blues[queue[i]].base) + fuzz;
+ init_edge(ct, base, EXTERNAL_CONTOURS);
+ optimize_blue(ct);
+ optimize_edge(ct);
+
+ if (ct->edge.refpt == -1) {
+ ct->gic->fudge = fudge;
+ continue;
+ }
+
+ if (!(ct->touched[ct->edge.refpt]&tf_y || ct->affected[ct->edge.refpt]&tf_y)) {
+ callargs[0] = ct->rp0 = ct->edge.refpt;
+
+ if (ct->gic->fpgm_done) {
+ ct->pt = pushpoints(ct->pt, 3, callargs);
+ *(ct->pt)++ = CALL;
+ }
+ else {
+ ct->pt = pushpoints(ct->pt, 2, callargs);
+ *(ct->pt)++ = MIAP_rnd;
+ }
+
+ ct->touched[ct->edge.refpt] |= tf_y;
+ }
+
+ for (j=0; j<ct->edge.othercnt; j++) {
+ callargs[0] = ct->rp0 = ct->edge.others[j];
+
+ if (ct->gic->fpgm_done) {
+ ct->pt = pushpoints(ct->pt, 3, callargs);
+ *(ct->pt)++ = CALL;
+ }
+ else {
+ ct->pt = pushpoints(ct->pt, 2, callargs);
+ *(ct->pt)++ = MIAP_rnd;
+ }
+
+ ct->touched[ct->edge.others[j]] |= tf_y;
+ }
+
+ update_blue_pts(queue[i], ct);
+
+ if (ct->edge.others != NULL) {
+ free(ct->edge.others);
+ ct->edge.others = NULL;
+ ct->edge.othercnt = 0;
+ }
+
+ ct->gic->fudge = fudge;
+ }
+ }
+
+ check_blue_pts(ct);
+}
+
+static int get_counters_cut_in(InstrCt *ct, int m1, int m2, int c1, int c2) {
+ real s1, e1, s2, e2, width1, width2;
+ int i, swidth1, swidth2;
+ int EM = ct->gic->sf->ascent + ct->gic->sf->descent;
+
+ s1 = (&ct->gd->points[m1].base.x)[!ct->xdir];
+ e1 = (&ct->gd->points[m2].base.x)[!ct->xdir];
+ s2 = (&ct->gd->points[c1].base.x)[!ct->xdir];
+ e2 = (&ct->gd->points[c2].base.x)[!ct->xdir];
+ width1 = e1 - s1; width2 = e2 - s2;
+
+ if ( RealNear( width1, width2 ))
+ return( 0 );
+
+ for (i=7; i<32768; i++) {
+ swidth1 = (int)rint((rint(fabs(width1)) * i * 64.0)/EM);
+ swidth2 = (int)rint((rint(fabs(width2)) * i * 64.0)/EM);
+ if ( fabs(swidth1 - swidth2) >= SNAP_THRESHOLD )
+ break;
+ }
+ return( i );
+}
+
+/******************************************************************************
+ *
+ * High-level functions for instructing horizontal and vertical stems.
+ * Both use 'geninstrs' for positioning single, elementary stems.
+ *
+ ******************************************************************************/
+
+/* geninstrs's main burden is to choose the better of two reference points
+ * found by init_stem_edge() - one for each edge - and position it relatively
+ * to other stems (if not already done).
+ *
+ * If none of the edges is positioned:
+ * If this hint is the first, previously overlapped, or simply horizontal,
+ * position the reference point at the base where it is using MDAP; otherwise
+ * position the hint's base rp0 relatively to the previous hint's end using
+ * MDRP with white minimum distance (fpgm function 1).
+ *
+ * Calling finish_stem() will deal with the rest of points needing explicit
+ * positioning. Then we instruct serifs and dependent stems, if wanted.
+ */
+static void geninstrs(InstrCt *ct, StemData *stem, StemData *prev, int lbase) {
+ int shp_rp1, chg_rp0, c_m_pt1 = -1, c_m_pt2 = -1;
+ int callargs[6];
+ real prev_pos = 0, cur_pos;
+
+ if (stem->ldone && stem->rdone)
+ return;
+ if ((lbase && stem->rdone) || (!lbase && stem->ldone))
+ lbase = !lbase;
+ init_stem_edge(ct, stem, lbase);
+ if (ct->edge.refpt == -1) {
+ lbase = !lbase;
+ init_stem_edge(ct, stem, lbase);
+ }
+ if (ct->edge.refpt == -1)
+ return;
+
+ if (ct->rp0 < ct->gd->realcnt && ct->rp0 >= 0)
+ prev_pos = (&ct->gd->points[ct->rp0].base.x)[!ct->xdir];
+ cur_pos = (&ct->gd->points[ct->edge.refpt].base.x)[!ct->xdir];
+
+ if (prev != NULL && stem->prev_c_m != NULL && prev->next_c_m != NULL ) {
+ c_m_pt1 = ct->xdir ? prev->next_c_m->rightidx : prev->next_c_m->leftidx;
+ c_m_pt2 = ct->xdir ? stem->prev_c_m->leftidx : stem->prev_c_m->rightidx;
+ }
+
+ /* Now the stem's origin must be placed in respect to others... */
+ /* TODO! What's really needed here is an iterative procedure that */
+ /* would preserve counters and widths, like in freetype2. */
+ /* For horizontal stems, interpolating between blues is being be done. */
+
+ if (stem->ldone || stem->rdone ) {
+ ct->pt = pushpoint(ct->pt, ct->edge.refpt);
+ *(ct->pt)++ = MDAP; /* sets rp0 and rp1 */
+ shp_rp1 = use_rp1;
+ chg_rp0 = (ct->xdir && !lbase) || (!ct->xdir && lbase);
+ }
+ else if (!ct->xdir) { /* horizontal stem */
+ ct->pt = pushpoint(ct->pt, ct->edge.refpt);
+ *(ct->pt)++ = MDAP_rnd;
+ shp_rp1 = use_rp1;
+ chg_rp0 = keep_old_rp0;
+ }
+ else if (prev == NULL) { /* first vertical stem */
+ ct->pt = pushpoint(ct->pt, ct->edge.refpt);
+ *(ct->pt)++ = MDRP_rp0_rnd_white;
+ shp_rp1 = use_rp2;
+ chg_rp0 = keep_old_rp0;
+ }
+ else {
+ if (ct->gic->fpgm_done) {
+ if ( control_counters && c_m_pt1 != -1 && c_m_pt2 != -1 ) {
+ callargs[0] = c_m_pt1;
+ callargs[1] = c_m_pt2;
+ callargs[2] = ct->rp0;
+ callargs[3] = ct->edge.refpt;
+ callargs[4] = get_counters_cut_in(ct, c_m_pt1, c_m_pt2, ct->rp0, ct->edge.refpt);
+ callargs[5] = 15;
+ ct->pt = pushpoints(ct->pt, 6, callargs);
+
+ } else if ( control_counters && prev != NULL && prev->leftidx != -1 && prev->rightidx != -1 ) {
+ callargs[0] = ct->xdir ? prev->leftidx : prev->rightidx;
+ callargs[1] = ct->edge.refpt;
+ callargs[2] = ( cur_pos - prev_pos ) > ct->gic->fudge ? 16 : 17;
+ ct->pt = pushpoints(ct->pt, 3, callargs);
+
+ } else if ( fabs( cur_pos - prev_pos ) > ct->gic->fudge ) {
+ ct->pt = push2nums(ct->pt, ct->edge.refpt, 1);
+ } else {
+ ct->pt = push2nums(ct->pt, ct->edge.refpt, 11);
+ }
+ *(ct->pt)++ = CALL;
+ }
+ else {
+ ct->pt = pushpoint(ct->pt, ct->edge.refpt);
+ if ( fabs( cur_pos - prev_pos ) > ct->gic->fudge )
+ *(ct->pt)++ = MDRP_rp0_min_rnd_grey;
+ else
+ *(ct->pt)++ = MDRP_rp0_rnd_white;
+ }
+ shp_rp1 = use_rp2;
+
+ /* Don't switch rp0 to the second edge. Thus, relative distance
+ * to the next stem is be larger, and errors are hopefully lesser.
+ * TODO! This is disputable.
+ * TODO! For the last vstem, we probably want to switch rp0 anyway.
+ */
+ chg_rp0 = keep_old_rp0;
+ }
+ ct->rp0 = ct->edge.refpt;
+ finish_stem(stem, shp_rp1, chg_rp0, ct);
+ if ( instruct_serif_stems || instruct_ball_terminals )
+ instruct_serifs(ct, stem);
+
+ instruct_dependent(ct, stem);
+}
+
+/* High-level function for instructing horizontal stems.
+ *
+ * It is assumed that blues (and hstems associated with them) are already
+ * done so that remaining stems can be interpolated between them.
+ *
+ * TODO! CJK hinting will probably need different function (HStemGeninstCJK?)
+ * TODO! Instruct top and bottom bearings for fonts which have them.
+ */
+static void HStemGeninst(InstrCt *ct) {
+ BlueZone *blues = ct->gic->blues;
+ int bluecnt = ct->gic->bluecnt;
+ BasePoint *bp = ct->bp;
+ StemData *stem;
+ int i, j, rp1, rp2, opp, bpt, ept;
+ double hbase, hend;
+ int mdrp_end, mdrp_base, ip_base, *rpts1, *rpts2;
+ int callargs[5];
+
+ if ( ct->gd->hbundle == NULL )
+ return;
+ rpts1 = calloc(ct->gd->hbundle->cnt, sizeof(int));
+ rpts2 = calloc(ct->gd->hbundle->cnt, sizeof(int));
+
+ /* Interpolating between blues is splitted to two stages: first
+ * we determine which stems can be interpolated and which cannot
+ * and store the numbers of reference points, and then (in the
+ * second cycle) proceed to generating actual instructions. The reason is
+ * that we need a special handling for dependent stems: if they
+ * can be interpolated, we process them separately, but otherwise
+ * the normal algorithm for positioning dependent stems relatively
+ * to their "masters" is used. It is necessary to know which method
+ * to prefer for each stem at the time instructions are generated.
+ */
+ for ( i=0; i<ct->gd->hbundle->cnt; i++ )
+ {
+ stem = ct->gd->hbundle->stemlist[i];
+ if (!stem->ldone && !stem->rdone)
+ {
+ /* Set up upper edge (hend) and lower edge (hbase). */
+ hbase = stem->right.y;
+ hend = stem->left.y;
+
+ /* Find two points to interpolate the HStem between.
+ rp1 = lower, rp2 = upper. */
+ rp1 = -1;
+ rp2 = -1;
+
+ for (j=0; j<bluecnt; j++) {
+ if (blues[j].lowest == -1) // implies blues[j].highest==-1 too
+ continue;
+
+ if (bp[blues[j].lowest].y < hbase)
+ if (rp1==-1 || bp[rp1].y < bp[blues[j].lowest].y)
+ rp1=blues[j].lowest;
+
+ if (bp[blues[j].highest].y > hend)
+ if (rp2==-1 || bp[rp2].y > bp[blues[j].highest].y)
+ rp2=blues[j].highest;
+ }
+ rpts1[i] = rp1; rpts2[i] = rp2;
+
+ /* If a dependent stem has to be positioned by interpolating
+ * one of its edges between the edges of the master stem and
+ * we have found reference points to interpolate it between
+ * blues, then we prefer to interpolate it between blues. However
+ * we keep the standard handling for other types of dependent
+ * stems, since usually positioning relatively to the "master"
+ * stem is more important than positioning relatively to blues
+ * in such cases.
+ * Exception: nested stems marked for interpolation should be
+ * positioned by interpolating between the edges of the nesting
+ * stem.
+ */
+ if (rp1!=-1 && rp2!=-1 && stem->master != NULL)
+ for (j=0; j<stem->master->dep_cnt; j++) {
+ if (stem->master->dependent[j].stem == stem &&
+ stem->master->dependent[j].dep_type == 'i' &&
+ (stem->master->left.y <= stem->left.y ||
+ stem->master->right.y >= stem->right.y)) {
+ stem->master = NULL;
+ break;
+ }
+ }
+ }
+ }
+
+ for ( i=0; i<ct->gd->hbundle->cnt; i++ )
+ {
+ stem = ct->gd->hbundle->stemlist[i];
+ if ( stem->master != NULL )
+ continue;
+ if (!stem->ldone && !stem->rdone)
+ {
+ hbase = stem->right.y;
+ hend = stem->left.y;
+
+ rp1 = rpts1[i]; rp2 = rpts2[i];
+ /* Reference points not found? Fall back to old method. */
+ if (rp1==-1 || rp2==-1) {
+ geninstrs(ct, stem, NULL, false);
+ continue;
+ }
+
+ bpt = ept = -1;
+ if ( !stem->ghost || stem->width == 21 ) {
+ init_stem_edge(ct, stem, false);
+ bpt = ct->edge.refpt;
+ }
+ if ( !stem->ghost || stem->width == 20 ) {
+ init_stem_edge(ct, stem, true);
+ ept = ct->edge.refpt;
+ }
+ if ( bpt == -1 && ept == -1 )
+ continue;
+
+ /* Align the stem relatively to rp0 and rp1. */
+ mdrp_end = ept != -1 &&
+ fabs(bp[rp2].y - hbase) < 0.2*fabs(bp[rp2].y - bp[rp1].y);
+ mdrp_base = bpt != -1 &&
+ fabs(bp[rp1].y - hend) < 0.2*fabs(bp[rp2].y - bp[rp1].y);
+
+ if (mdrp_end || mdrp_base) {
+ if (mdrp_end) init_stem_edge(ct, stem, true);
+ else init_stem_edge(ct, stem, false);
+
+ if (ct->edge.refpt == -1) continue;
+
+ if (mdrp_end) ct->pt = push2points(ct->pt, ct->edge.refpt, rp2);
+ else ct->pt = push2points(ct->pt, ct->edge.refpt, rp1);
+
+ *(ct->pt)++ = SRP0;
+ *(ct->pt)++ = DUP;
+ *(ct->pt)++ = MDRP_grey;
+ *(ct->pt)++ = MDAP_rnd;
+ }
+ else if ( bpt == -1 || ept == -1 ) {
+ ip_base = ( ept == -1 );
+ init_stem_edge(ct, stem, !ip_base);
+ if ( ct->gic->fpgm_done ) {
+ callargs[0] = ct->edge.refpt;
+ callargs[1] = rp1;
+ callargs[2] = rp2;
+ callargs[3] = 8;
+ ct->pt = pushnums(ct->pt, 4, callargs);
+ *(ct->pt)++ = CALL;
+ }
+ else {
+ callargs[0] = ct->edge.refpt;
+ callargs[1] = rp1;
+ callargs[2] = rp2;
+ ct->pt = pushnums(ct->pt, 3, callargs);
+ *(ct->pt)++ = SRP2;
+ *(ct->pt)++ = SRP1;
+ *(ct->pt)++ = DUP;
+ *(ct->pt)++ = IP;
+ *(ct->pt)++ = MDAP_rnd;
+ }
+ }
+ else {
+ ip_base = fabs(bp[rp2].y - hend) < fabs(bp[rp1].y - hbase);
+ opp = ip_base ? ept : bpt;
+ init_stem_edge(ct, stem, !ip_base);
+
+ if (ct->edge.refpt == -1) continue;
+
+ if ( ct->gic->fpgm_done ) {
+ callargs[0] = opp;
+ callargs[1] = ct->edge.refpt;
+ callargs[2] = rp1;
+ callargs[3] = rp2;
+ callargs[4] = 13;
+ ct->pt = pushnums(ct->pt, 5, callargs);
+ *(ct->pt)++ = CALL;
+ } else {
+ callargs[0] = ct->edge.refpt;
+ callargs[1] = rp1;
+ callargs[2] = rp2;
+ ct->pt = pushnums(ct->pt, 3, callargs);
+ *(ct->pt)++ = SRP2;
+ *(ct->pt)++ = SRP1;
+ *(ct->pt)++ = DUP;
+ *(ct->pt)++ = IP;
+ *(ct->pt)++ = MDAP_rnd;
+ }
+ }
+
+ ct->rp0 = ct->edge.refpt;
+ finish_stem(stem, use_rp1, keep_old_rp0, ct);
+ if ( instruct_serif_stems || instruct_ball_terminals )
+ instruct_serifs(ct, stem);
+
+ instruct_dependent(ct, stem);
+ }
+ }
+ free(rpts1);
+ free(rpts2);
+}
+
+/*
+ * High-level function for instructing vertical stems.
+ *
+ * TODO! CJK hinting may need different function (VStemGeninstCJK?)
+ */
+static void VStemGeninst(InstrCt *ct) {
+ StemData *stem, *prev=NULL;
+ int i;
+
+ if (ct->rp0 != ct->ptcnt) {
+ ct->pt = pushpoint(ct->pt, ct->ptcnt);
+ *(ct->pt)++ = MDAP_rnd;
+ ct->rp0 = ct->ptcnt;
+ }
+
+ if ( ct->gd->vbundle != NULL ) {
+ for ( i=0; i<ct->gd->vbundle->cnt; i++ ) {
+ stem = ct->gd->vbundle->stemlist[i];
+ if ((!stem->ldone || !stem->rdone) && stem->master == NULL) {
+
+ if (prev != NULL && prev->rightidx != -1 && ct->rp0 != prev->rightidx) {
+ ct->pt = pushpoint(ct->pt, prev->rightidx);
+ *(ct->pt)++ = SRP0;
+ ct->rp0 = prev->rightidx;
+ }
+ geninstrs(ct, stem, prev, true);
+ prev = stem;
+ }
+ }
+ }
+
+ /* instruct right sidebearing */
+ if (ct->sc->width != 0) {
+ if ( ct->gic->fpgm_done && !control_counters ) {
+ ct->pt = push2nums(ct->pt, ct->ptcnt+1, 1);
+ *(ct->pt)++ = CALL;
+ } else {
+ /* select rp0 at the right edge of last stem - geninstrs() didn't. */
+ /* TODO! after some time, move this to geninstrs(), to save space. */
+ if (prev != NULL && prev->rightidx != -1 && ct->rp0 != prev->rightidx) {
+ ct->pt = pushpoint(ct->pt, prev->rightidx);
+ *(ct->pt)++ = SRP0;
+ ct->rp0 = prev->rightidx;
+ }
+ ct->pt = pushpoint(ct->pt, ct->ptcnt+1);
+ *(ct->pt)++ = MDRP_rp0_rnd_white;
+ }
+ ct->rp0 = ct->ptcnt+1;
+ }
+}
+
+/******************************************************************************
+ *
+ * Everything related with diagonal hinting goes here
+ *
+ ******************************************************************************/
+
+#define DIAG_MIN_DISTANCE (0.84375)
+
+static int ds_cmp( const void *_s1, const void *_s2 ) {
+ StemData * const *s1 = _s1, * const *s2 = _s2;
+
+ BasePoint *bp1, *bp2;
+ bp1 = (*s1)->unit.y > 0 ? &(*s1)->keypts[0]->base : &(*s1)->keypts[2]->base;
+ bp2 = (*s2)->unit.y > 0 ? &(*s2)->keypts[0]->base : &(*s2)->keypts[2]->base;
+ if ( bp1->x < bp2->x || ( bp1->x == bp2->x && bp1->y < bp2->y ))
+return( -1 );
+ else if ( bp2->x < bp1->x || ( bp2->x == bp1->x && bp2->y < bp1->y ))
+return( 1 );
+
+return( 0 );
+}
+
+/* Takes a line defined by two points and returns a vector decribed as a
+ * pair of x and y values, such that the value (x2 + y2) is equal to 1.
+ * Note that the BasePoint structure is used to store the vector, although
+ * it is not a point itself. This is just because that structure has "x"
+ * and "y" fields which can be used for our purpose.
+ */
+static BasePoint GetVector ( BasePoint *top,BasePoint *bottom,int orth ) {
+ real catx, caty, hyp, temp;
+ BasePoint ret;
+
+ catx = top->x - bottom->x; caty = top->y - bottom->y;
+ hyp = sqrt(( catx*catx ) + ( caty*caty ));
+ ret.y = caty/hyp; ret.x = catx/hyp;
+
+ if( orth ) {
+ temp = ret.x; ret.x = -ret.y; ret.y = temp;
+ }
+return( ret );
+}
+
+static int SetDStemKeyPoint( InstrCt *ct,StemData *stem,PointData *pd,int aindex ) {
+
+ int nextidx, previdx, cpidx, prev_outer, next_outer, is_start;
+ int nsidx, psidx, sidx;
+ uint8 flag;
+ PointData *ncpd, *pcpd, *cpd, *best = NULL;
+ real prevdot, nextdot, cpdist;
+
+ if ( pd == NULL )
+return( false );
+
+ flag = fabs( stem->unit.y ) > fabs( stem->unit.x ) ? tf_y : tf_x;
+ is_start = ( aindex == 0 || aindex == 2 );
+ prevdot = ( pd->prevunit.x * stem->unit.x ) +
+ ( pd->prevunit.y * stem->unit.y );
+ nextdot = ( pd->nextunit.x * stem->unit.x ) +
+ ( pd->nextunit.y * stem->unit.y );
+ prev_outer = IsStemAssignedToPoint( pd,stem,false ) != -1 &&
+ (( is_start && prevdot < 0 ) || ( !is_start && prevdot > 0 ));
+ next_outer = IsStemAssignedToPoint( pd,stem,true ) != -1 &&
+ (( is_start && nextdot < 0 ) || ( !is_start && nextdot > 0 ));
+
+ if ( pd->ttfindex >= ct->gd->realcnt ) {
+ nextidx = pd->sp->nextcpindex;
+ previdx = pd->sp->prev->from->nextcpindex;
+ ncpd = &ct->gd->points[nextidx];
+ pcpd = &ct->gd->points[previdx];
+ psidx = IsStemAssignedToPoint( pcpd,stem,true );
+ nsidx = IsStemAssignedToPoint( ncpd,stem,false );
+
+ if ( psidx == -1 && nsidx == -1 )
+return( false );
+
+ if ( psidx > -1 && nsidx > -1 )
+ best = ( prev_outer ) ? pcpd : ncpd;
+ else
+ best = ( psidx > -1 ) ? pcpd : ncpd;
+
+ } else if (( !pd->sp->nonextcp && next_outer ) || ( !pd->sp->noprevcp && prev_outer )) {
+ cpidx = ( prev_outer ) ? pd->sp->prev->from->nextcpindex : pd->sp->nextcpindex;
+ cpd = &ct->gd->points[cpidx];
+ sidx = IsStemAssignedToPoint( cpd,stem,prev_outer );
+
+ if ( sidx != -1 ) {
+ cpdist = fabs(( pd->base.x - cpd->base.x ) * stem->unit.x +
+ ( pd->base.y - cpd->base.y ) * stem->unit.y );
+ if (( cpdist > stem->clen/2 ) ||
+ (!(ct->touched[pd->ttfindex] & flag) && !(ct->affected[pd->ttfindex] & flag) &&
+ ( ct->touched[cpd->ttfindex] & flag || ct->affected[cpd->ttfindex] & flag )))
+ best = cpd;
+ }
+ if ( best == NULL ) best = pd;
+ } else
+ best = pd;
+
+ stem->keypts[aindex] = best;
+return( true );
+}
+
+static void AssignLineToPoint( DiagPointInfo *diagpts,StemData *stem,int idx,int is_l ) {
+ int num, base, i;
+ PointData *pd1, *pd2;
+
+ num = diagpts[idx].count;
+ base = ( is_l ) ? 0 : 2;
+ pd1 = stem->keypts[base];
+ pd2 = stem->keypts[base+1];
+ for ( i=0; i<num; i++ ) {
+ if ( diagpts[idx].line[i].pd1 == pd1 && diagpts[idx].line[i].pd2 == pd2 )
+return;
+ }
+
+ diagpts[idx].line[num].pd1 = stem->keypts[base];
+ diagpts[idx].line[num].pd2 = stem->keypts[base+1];
+ diagpts[idx].line[num].done = false;
+ diagpts[idx].count++;
+return;
+}
+
+/* Convert the existing diagonal stem layout to glyph data, containing
+ * information about points assigned to each stem. Then run on stem chunks
+ * and associate with each point the line it should be aligned by. Note that
+ * we have to do this on a relatively early stage, as it may be important
+ * to know, if the given point is subject to the subsequent diagonale hinting,
+ * before any actual processing of diagonal stems is started.
+ */
+static void InitDStemData( InstrCt *ct ) {
+ DiagPointInfo *diagpts = ct->diagpts;
+ int i, j, idx, previdx, nextidx, num1, num2, psidx, nsidx, is_l, cnt=0;
+ real prevlsp, prevrsp, prevlep, prevrep, lpos, rpos;
+ GlyphData *gd;
+ StemData *stem;
+ PointData *ls, *rs, *le, *re, *tpd, *ppd, *npd;
+ struct stem_chunk *chunk;
+
+ gd = ct->gd;
+
+ for ( i=0; i<gd->stemcnt; i++ ) {
+ stem = &gd->stems[i];
+ if ( stem->toobig )
+ continue;
+ if (( stem->unit.y > -.05 && stem->unit.y < .05 ) ||
+ ( stem->unit.x > -.05 && stem->unit.x < .05 ))
+ continue;
+ if ( stem->lpcnt < 2 || stem->rpcnt < 2 )
+ continue;
+
+ prevlsp = prevrsp = 1e4;
+ prevlep = prevrep = -1e4;
+ ls = rs = le = re = NULL;
+ for ( j=0; j<stem->chunk_cnt; j++ ) {
+ chunk = &stem->chunks[j];
+ if ( chunk->l != NULL ) {
+ lpos = ( chunk->l->base.x - stem->left.x )*stem->unit.x +
+ ( chunk->l->base.y - stem->left.y )*stem->unit.y;
+ if ( lpos < prevlsp ) {
+ ls = chunk->l; prevlsp = lpos;
+ }
+ if ( lpos > prevlep ) {
+ le = chunk->l; prevlep = lpos;
+ }
+ }
+ if ( chunk->r != NULL ) {
+ rpos = ( chunk->r->base.x - stem->right.x )*stem->unit.x +
+ ( chunk->r->base.y - stem->right.y )*stem->unit.y;
+ if ( rpos < prevrsp ) {
+ rs = chunk->r; prevrsp = rpos;
+ }
+ if ( rpos > prevrep ) {
+ re = chunk->r; prevrep = rpos;
+ }
+ }
+ }
+
+ /* Swap "left" and "right" sides for vectors pointing north-east,
+ * so that the "left" side is always determined along the x axis
+ * rather than relatively to the vector direction */
+ num1 = ( stem->unit.y > 0 ) ? 0 : 2;
+ num2 = ( stem->unit.y > 0 ) ? 2 : 0;
+ if (!SetDStemKeyPoint( ct,stem,ls,num1 ) || !SetDStemKeyPoint( ct,stem,rs,num2 ))
+ continue;
+
+ num1 = ( stem->unit.y > 0 ) ? 1 : 3;
+ num2 = ( stem->unit.y > 0 ) ? 3 : 1;
+ if (!SetDStemKeyPoint( ct,stem,le,num1 ) || !SetDStemKeyPoint( ct,stem,re,num2 ))
+ continue;
+
+ for ( j=0; j<gd->pcnt; j++ )
+ gd->points[j].ticked = false;
+ for ( j=0; j<gd->pcnt; j++ ) if ( gd->points[j].sp != NULL ) {
+ tpd = &gd->points[j];
+ idx = tpd->ttfindex;
+ psidx = nsidx = -1;
+ if ( idx < gd->realcnt ) {
+ if ( !tpd->ticked && diagpts[idx].count < 2 && (
+ ( psidx = IsStemAssignedToPoint( tpd,stem,false )) > -1 ||
+ ( nsidx = IsStemAssignedToPoint( tpd,stem,true )) > -1)) {
+
+ is_l = ( nsidx > -1 ) ? tpd->next_is_l[nsidx] : tpd->prev_is_l[psidx];
+ if ( stem->unit.y < 0 ) is_l = !is_l;
+ AssignLineToPoint( diagpts,stem,idx,is_l );
+ tpd->ticked = true;
+ }
+ } else {
+ previdx = tpd->sp->prev->from->nextcpindex;
+ nextidx = tpd->sp->nextcpindex;
+ ppd = &gd->points[previdx];
+ npd = &gd->points[nextidx];
+ if (!ppd->ticked && diagpts[previdx].count < 2 &&
+ ( nsidx = IsStemAssignedToPoint( ppd,stem,true )) > -1 ) {
+
+ is_l = ppd->next_is_l[nsidx];
+ if ( stem->unit.y < 0 ) is_l = !is_l;
+ AssignLineToPoint( diagpts,stem,previdx,is_l );
+ ppd->ticked = true;
+ }
+ if (!npd->ticked && diagpts[nextidx].count < 2 &&
+ ( psidx = IsStemAssignedToPoint( npd,stem,false )) > -1 ) {
+
+ is_l = npd->prev_is_l[psidx];
+ if ( stem->unit.y < 0 ) is_l = !is_l;
+ AssignLineToPoint( diagpts,stem,nextidx,is_l );
+ npd->ticked = true;
+ }
+ }
+ }
+ ct->diagstems[cnt++] = stem;
+ }
+ qsort( ct->diagstems,cnt,sizeof( StemData *),ds_cmp );
+ ct->diagcnt = cnt;
+}
+
+/* Usually we have to start doing each diagonal stem from the point which
+ * is most touched in any directions.
+ */
+static int FindDiagStartPoint( StemData *stem, uint8 *touched ) {
+ int i;
+
+ for ( i=0; i<4; ++i ) {
+ if (( touched[stem->keypts[i]->ttfindex] & tf_x ) &&
+ ( touched[stem->keypts[i]->ttfindex] & tf_y ))
+return( i );
+ }
+
+ for ( i=0; i<4; ++i ) {
+ if (( stem->unit.x > stem->unit.y &&
+ touched[stem->keypts[i]->ttfindex] & tf_y ) ||
+ ( stem->unit.y > stem->unit.x &&
+ touched[stem->keypts[i]->ttfindex] & tf_x ))
+return( i );
+ }
+
+ for ( i=0; i<4; ++i ) {
+ if ( touched[stem->keypts[i]->ttfindex] & ( tf_x | tf_y ))
+return( i );
+ }
+return( 0 );
+}
+
+/* Check the directions at which the given point still can be moved
+ * (i. e. has not yet been touched) and set freedom vector to that
+ * direction in case it has not already been set.
+ */
+static int SetFreedomVector( uint8 **instrs,int pnum,
+ uint8 *touched,DiagPointInfo *diagpts,BasePoint *norm,BasePoint *fv,int pvset,int fpgm_ok ) {
+
+ int i, pushpts[3];
+ PointData *start=NULL, *end=NULL;
+ BasePoint newfv;
+
+ if (( touched[pnum] & tf_d ) && !( touched[pnum] & tf_x ) && !( touched[pnum] & tf_y )) {
+ for ( i=0 ; i<diagpts[pnum].count ; i++) {
+ if ( diagpts[pnum].line[i].done ) {
+ start = diagpts[pnum].line[i].pd1;
+ end = diagpts[pnum].line[i].pd2;
+ }
+ }
+
+ /* This should never happen */
+ if ( start == NULL || end == NULL )
+return( false );
+
+ newfv = GetVector( &start->base,&end->base,false );
+ if ( !UnitsParallel( fv,&newfv,true )) {
+ fv->x = newfv.x; fv->y = newfv.y;
+
+ pushpts[0] = start->ttfindex; pushpts[1] = end->ttfindex;
+ *instrs = pushpoints( *instrs,2,pushpts );
+ *(*instrs)++ = 0x08; /*SFVTL[parallel]*/
+ }
+
+return( true );
+
+ } else if ( touched[pnum] & tf_x && !(touched[pnum] & tf_d) && !(touched[pnum] & tf_y)) {
+ if (!( RealNear( fv->x,0 ) && RealNear( fv->y,1 ))) {
+ *(*instrs)++ = 0x04; /*SFVTCA[y-axis]*/
+ fv->x = 0; fv->y = 1;
+ }
+return( true );
+
+ } else if ( touched[pnum] & tf_y && !(touched[pnum] & tf_d) && !(touched[pnum] & tf_x)) {
+ if (!( RealNear( fv->x,1 ) && RealNear( fv->y,0 ))) {
+ *(*instrs)++ = 0x05; /*SFVTCA[x-axis]*/
+ fv->x = 1; fv->y = 0;
+ }
+return( true );
+ } else if ( !(touched[pnum] & (tf_x|tf_y|tf_d))) {
+ if ( !UnitsParallel( fv,norm,true )) {
+ fv->x = norm->x; fv->y = norm->y;
+
+ if ( pvset )
+ *(*instrs)++ = 0x0E; /*SFVTPV*/
+ else {
+ pushpts[0] = EF2Dot14(norm->x);
+ pushpts[1] = EF2Dot14(norm->y);
+ if ( fpgm_ok ) {
+ pushpts[2] = 21;
+ *instrs = pushpoints( *instrs,3,pushpts );
+ *(*instrs)++ = CALL; /* aspect-ratio correction */
+ } else
+ *instrs = pushpoints( *instrs,2,pushpts );
+
+ *(*instrs)++ = 0x0b; /* SFVFS */
+ }
+ }
+return( true );
+ }
+return( false );
+}
+
+static int MarkLineFinished( int pnum,int startnum,int endnum,DiagPointInfo *diagpts ) {
+ int i;
+
+ for ( i=0; i<diagpts[pnum].count; i++ ) {
+ if (( diagpts[pnum].line[i].pd1->ttfindex == startnum ) &&
+ ( diagpts[pnum].line[i].pd2->ttfindex == endnum )) {
+
+ diagpts[pnum].line[i].done = 2;
+return( true );
+ }
+ }
+return( false );
+}
+
+static uint8 *FixDStemPoint ( InstrCt *ct,StemData *stem,
+ int pt,int refpt,int firstedge,int cvt,BasePoint *fv ) {
+ uint8 *instrs, *touched;
+ int ptcnt;
+ DiagPointInfo *diagpts;
+
+ diagpts = ct->diagpts;
+ ptcnt = ct->gd->realcnt;
+ touched = ct->touched;
+ instrs = ct->pt;
+
+ if ( SetFreedomVector( &instrs,pt,touched,diagpts,&stem->l_to_r,fv,true,
+ ct->gic->fpgm_done && ct->gic->prep_done )) {
+ if ( refpt == -1 ) {
+ if (( fv->x == 1 && !( touched[pt] & tf_x )) ||
+ ( fv->y == 1 && !( touched[pt] & tf_y ))) {
+
+ instrs = pushpoint( instrs,pt );
+ *instrs++ = MDAP;
+ } else {
+ instrs = pushpoint( instrs,pt );
+ *instrs++ = SRP0;
+ }
+ ct->rp0 = pt;
+ } else {
+ if ( refpt != ct->rp0 ) {
+ instrs = pushpoint( instrs,refpt );
+ *instrs++ = SRP0;
+ ct->rp0 = refpt;
+ }
+
+ if ( cvt < 0 ) {
+ instrs = pushpoint( instrs,pt );
+ *instrs++ = MDRP_grey;
+ } else {
+ instrs = pushpointstem( instrs,pt,cvt );
+ *instrs++ = MIRP_rp0_min_black;
+ ct->rp0 = pt;
+ }
+ }
+ touched[pt] |= tf_d;
+
+ if (!MarkLineFinished( pt,stem->keypts[0]->ttfindex,stem->keypts[1]->ttfindex,diagpts ))
+ MarkLineFinished( pt,stem->keypts[2]->ttfindex,stem->keypts[3]->ttfindex,diagpts );
+ }
+return( instrs );
+}
+
+static int DStemHasSnappableCorners ( InstrCt *ct,StemData *stem,PointData *pd1,PointData *pd2 ) {
+ uint8 *touched = ct->touched;
+
+ /* We should be dealing with oncurve points */
+ if ( pd1->sp == NULL || pd2->sp == NULL )
+return( false );
+
+ /* points should not be lined up vertically or horizontally */
+ if (fabs( pd1->base.x - pd2->base.x ) <= ct->gic->fudge ||
+ fabs( pd1->base.y - pd2->base.y ) <= ct->gic->fudge )
+return( false );
+
+ if (( pd1->x_corner == 1 && !( touched[pd1->ttfindex] & tf_y ) &&
+ pd2->y_corner == 1 && !( touched[pd2->ttfindex] & tf_x )) ||
+ ( pd1->y_corner == 1 && !( touched[pd1->ttfindex] & tf_x ) &&
+ pd2->x_corner == 1 && !( touched[pd2->ttfindex] & tf_y )))
+return( true );
+
+return( false );
+}
+
+static uint8 *SnapDStemCorners ( InstrCt *ct,StemData *stem,PointData *pd1,PointData *pd2,BasePoint *fv ) {
+ uint8 *instrs, *touched;
+ int xbase, ybase;
+
+ instrs = ct->pt;
+ touched = ct->touched;
+
+ if ( pd1->x_corner && pd2->y_corner ) {
+ xbase = pd1->ttfindex; ybase = pd2->ttfindex;
+ } else {
+ xbase = pd2->ttfindex; ybase = pd1->ttfindex;
+ }
+
+ *(ct->pt)++ = SVTCA_x;
+ ct->pt = push2points( ct->pt,ybase,xbase );
+ *(ct->pt)++ = touched[xbase] & tf_x ? MDAP : MDAP_rnd;
+ *(ct->pt)++ = MDRP_min_black;
+ *(ct->pt)++ = SVTCA_y;
+ ct->pt = push2points( ct->pt,xbase,ybase );
+ *(ct->pt)++ = touched[ybase] & tf_y ? MDAP : MDAP_rnd;
+ *(ct->pt)++ = MDRP_min_black;
+
+ touched[xbase] |= ( tf_x | tf_y );
+ touched[ybase] |= ( tf_x | tf_y );
+ fv->x = 0; fv->y = 1;
+
+return( instrs );
+}
+
+/* A basic algorithm for hinting diagonal stems:
+ * -- iterate through diagonal stems, ordered from left to right;
+ * -- for each stem, find the most touched point, to start from,
+ * and fix that point. TODO: the positioning should be done
+ * relatively to points already touched by x or y;
+ * -- position the second point on the same edge, using dual projection
+ * vector;
+ * -- link to the second edge and repeat the same operation.
+ *
+ * For each point we first determine a direction at which it still can
+ * be moved. If a point has already been positioned relatively to another
+ * diagonal line, then we move it along that diagonale. Thus this algorithm
+ * can handle things like "V" where one line's ending point is another
+ * line's starting point without special exceptions.
+ */
+static uint8 *FixDstem( InstrCt *ct, StemData *ds, BasePoint *fv ) {
+ int startnum, a1, a2, b1, b2, ptcnt, firstedge, cvt;
+ int x_ldup, y_ldup, x_edup, y_edup, dsc1, dsc2;
+ PointData *v1, *v2;
+ uint8 *touched;
+ int pushpts[3];
+
+ if ( ds->ldone && ds->rdone )
+return( ct->pt );
+
+ ptcnt = ct->ptcnt;
+ touched = ct->touched;
+
+ dsc1 = DStemHasSnappableCorners( ct,ds,ds->keypts[0],ds->keypts[2] );
+ dsc2 = DStemHasSnappableCorners( ct,ds,ds->keypts[1],ds->keypts[3] );
+
+ if ( dsc1 || dsc2 ) {
+ ct->pt = pushF26Dot6( ct->pt,.59662 );
+ *(ct->pt)++ = SMD;
+
+ if ( dsc1 )
+ SnapDStemCorners( ct,ds,ds->keypts[0],ds->keypts[2],fv );
+ if ( dsc2 )
+ SnapDStemCorners( ct,ds,ds->keypts[1],ds->keypts[3],fv );
+
+ ct->pt = pushF26Dot6( ct->pt,DIAG_MIN_DISTANCE );
+ *(ct->pt)++ = SMD;
+ }
+
+ if ( !dsc1 || !dsc2 ) {
+ startnum = FindDiagStartPoint( ds,touched );
+ a1 = ds->keypts[startnum]->ttfindex;
+ if (( startnum == 0 ) || ( startnum == 1 )) {
+ firstedge = true;
+ v1 = ds->keypts[0]; v2 = ds->keypts[1];
+ a2 = ( startnum == 1 ) ? ds->keypts[0]->ttfindex : ds->keypts[1]->ttfindex;
+ b1 = ( startnum == 1 ) ? ds->keypts[3]->ttfindex : ds->keypts[2]->ttfindex;
+ b2 = ( startnum == 1 ) ? ds->keypts[2]->ttfindex : ds->keypts[3]->ttfindex;
+ } else {
+ firstedge = false;
+ v1 = ds->keypts[2]; v2 = ds->keypts[3];
+ a2 = ( startnum == 3 ) ? ds->keypts[2]->ttfindex : ds->keypts[3]->ttfindex;
+ b1 = ( startnum == 3 ) ? ds->keypts[1]->ttfindex : ds->keypts[0]->ttfindex;
+ b2 = ( startnum == 3 ) ? ds->keypts[0]->ttfindex : ds->keypts[1]->ttfindex;
+ }
+
+ /* Always put the calculated stem width into the CVT table, unless it is
+ * already there. This approach would be wrong for vertical or horizontal
+ * stems, but for diagonales it is just unlikely that we can find an
+ * acceptable predefined value in StemSnapH or StemSnapV
+ */
+ cvt = TTF_getcvtval( ct->gic->sf,ds->width );
+
+ pushpts[0] = EF2Dot14(ds->l_to_r.x);
+ pushpts[1] = EF2Dot14(ds->l_to_r.y);
+ if ( ct->gic->fpgm_done && ct->gic->prep_done ) {
+ pushpts[2] = 21;
+ ct->pt = pushnums( ct->pt, 3, pushpts );
+ *(ct->pt)++ = CALL; /* Aspect ratio correction */
+ } else
+ ct->pt = pushnums( ct->pt, 2, pushpts );
+ *(ct->pt)++ = 0x0A; /* SPVFS */
+
+ pushpts[0] = v1->ttfindex; pushpts[1] = v2->ttfindex;
+
+ x_ldup =( touched[a1] & tf_x && touched[a2] & tf_x ) ||
+ ( touched[b1] & tf_x && touched[b2] & tf_x );
+ y_ldup =( touched[a1] & tf_y && touched[a2] & tf_y ) ||
+ ( touched[b1] & tf_y && touched[b2] & tf_y );
+ x_edup =( touched[a1] & tf_x && touched[b1] & tf_x ) ||
+ ( touched[a2] & tf_x && touched[b2] & tf_x );
+ y_edup =( touched[a1] & tf_y && touched[b1] & tf_y ) ||
+ ( touched[a2] & tf_y && touched[b2] & tf_y );
+
+ if (( x_ldup && !y_edup ) || ( y_ldup && !x_edup)) {
+
+ ct->pt = FixDStemPoint ( ct,ds,a1,-1,firstedge,-1,fv );
+ ct->pt = FixDStemPoint ( ct,ds,b2,-1,firstedge,-1,fv );
+ ct->pt = FixDStemPoint ( ct,ds,b1,a1,firstedge,cvt,fv );
+ ct->pt = FixDStemPoint ( ct,ds,a2,b2,firstedge,cvt,fv );
+ } else {
+ ct->pt = FixDStemPoint ( ct,ds,a1,-1,firstedge,-1,fv );
+ ct->pt = FixDStemPoint ( ct,ds,a2,a1,firstedge,-1,fv );
+ ct->pt = FixDStemPoint ( ct,ds,b1,a1,firstedge,cvt,fv );
+ ct->pt = FixDStemPoint ( ct,ds,b2,b1,firstedge,-1,fv );
+ }
+ }
+
+ ds->ldone = ds->rdone = true;
+return( ct->pt );
+}
+
+static uint8 *FixPointOnLine ( DiagPointInfo *diagpts,PointVector *line,
+ PointData *pd,InstrCt *ct,BasePoint *fv,BasePoint *pv,int *rp1,int *rp2 ) {
+
+ uint8 *instrs, *touched;
+ BasePoint newpv;
+ int ptcnt;
+ int pushpts[4];
+
+ touched = ct->touched;
+ instrs = ct->pt;
+ ptcnt = ct->ptcnt;
+
+ newpv = GetVector( &line->pd1->base,&line->pd2->base,true );
+
+ if ( SetFreedomVector( &instrs,pd->ttfindex,touched,diagpts,&newpv,fv,false,
+ ct->gic->fpgm_done && ct->gic->prep_done )) {
+ if ( ct->rp0 != line->pd1->ttfindex ) {
+ instrs = pushpoint( instrs,line->pd1->ttfindex );
+ *instrs++ = SRP0;
+ ct->rp0 = line->pd1->ttfindex;
+ }
+ if ( ct->gic->fpgm_done ) {
+ pv->x = newpv.x; pv->y = newpv.y;
+
+ pushpts[0] = pd->ttfindex;
+ pushpts[1] = line->pd1->ttfindex;
+ pushpts[2] = line->pd2->ttfindex;
+ pushpts[3] = 19;
+ instrs = pushpoints( instrs,4,pushpts );
+ *instrs++ = CALL;
+ } else {
+ if ( !UnitsParallel( pv,&newpv,true )) {
+ pv->x = newpv.x; pv->y = newpv.y;
+
+ pushpts[0] = line->pd1->ttfindex; pushpts[1] = line->pd2->ttfindex;
+ instrs = pushpoints( instrs,2,pushpts );
+ *instrs++ = 0x07; /*SPVTL[orthogonal]*/
+ }
+
+ instrs = pushpoint( instrs,pd->ttfindex );
+ *instrs++ = MDRP_grey;
+ }
+ }
+return( instrs );
+}
+
+/* If a point has to be positioned just relatively to the diagonal
+ * line (no intersections, no need to maintain other directions),
+ * then we can interpolate it along that line. This usually produces
+ * better results for things like a Danish slashed "O".
+ */
+static uint8 *InterpolateAlongDiag ( DiagPointInfo *diagpts,PointVector *line,
+ PointData *pd,InstrCt *ct,BasePoint *fv,BasePoint *pv,int *rp1,int *rp2 ) {
+
+ uint8 *instrs, *touched;
+ BasePoint newpv;
+ int ptcnt;
+ int pushpts[3];
+
+ touched = ct->touched;
+ instrs = ct->pt;
+ ptcnt = ct->ptcnt;
+
+ if (diagpts[pd->ttfindex].count != 1 || touched[pd->ttfindex] & ( tf_x|tf_y ) ||
+ diagpts[pd->ttfindex].line[0].done > 1 )
+return( instrs );
+
+ newpv = GetVector( &line->pd1->base,&line->pd2->base,false );
+
+ if ( !UnitsParallel( pv,&newpv,false ) ||
+ *rp1 != line->pd1->ttfindex || *rp2 != line->pd1->ttfindex ) {
+
+ pushpts[0] = pd->ttfindex;
+ pushpts[1] = line->pd1->ttfindex;
+ pushpts[2] = line->pd2->ttfindex;
+ instrs = pushpoints( instrs,3,pushpts );
+ } else
+ instrs = pushpoint ( instrs,pd->ttfindex );
+
+ if ( !UnitsParallel( pv,&newpv,true )) {
+ pv->x = newpv.x; pv->y = newpv.y;
+
+ if ( *rp1 != line->pd1->ttfindex || *rp2 != line->pd1->ttfindex ) {
+ *instrs++ = DUP;
+ *instrs++ = 0x8a; /* ROLL */
+ *instrs++ = DUP;
+ *instrs++ = 0x8a; /* ROLL */
+ *instrs++ = 0x23; /* SWAP */
+ }
+ *instrs++ = 0x06; /* SPVTL[parallel] */
+ }
+
+ if ( !UnitsParallel( fv,&newpv,true )) {
+ *instrs++ = 0x0E; /* SFVTPV */
+ fv->x = newpv.x; fv->y = newpv.y;
+ }
+ if ( *rp1 != line->pd1->ttfindex || *rp2 != line->pd1->ttfindex ) {
+ *rp1 = line->pd1->ttfindex;
+ *rp2 = line->pd1->ttfindex;
+
+ *instrs++ = SRP1;
+ *instrs++ = SRP2;
+ }
+ *instrs++ = IP;
+ touched[pd->ttfindex] |= tf_d;
+ diagpts[pd->ttfindex].line[0].done = 2;
+return( instrs );
+}
+
+/* When all stem edges have already been positioned, run through other
+ * points which are known to be related with some diagonales and position
+ * them too. This may include both intersections and points which just
+ * lie on a diagonal line. This function does not care about starting/ending
+ * points of stems, unless they should be additionally positioned relatively
+ * to another stem. Thus is can handle things like "X" or "K".
+ */
+static uint8 *MovePointsToIntersections( InstrCt *ct,BasePoint *fv ) {
+
+ int i, j, ptcnt, rp1=-1, rp2=-1;
+ uint8 *touched;
+ BasePoint pv;
+ PointData *curpd, *npd, *ppd;
+ DiagPointInfo *diagpts;
+ StemData *ds;
+
+ touched = ct->touched;
+ ptcnt = ct->gd->realcnt;
+ diagpts = ct->diagpts;
+ pv.x = 1; pv.y = 0;
+
+ for ( i=0; i<ptcnt; i++ ) {
+ if ( diagpts[i].count > 0 ) {
+ for ( j=0; j<diagpts[i].count; j++ ) {
+ if ( !diagpts[i].line[j].done ) {
+ curpd = &ct->gd->points[i];
+
+ ct->pt = FixPointOnLine( diagpts,&diagpts[i].line[j],
+ curpd,ct,fv,&pv,&rp1,&rp2 );
+
+ diagpts[i].line[j].done = true;
+ touched[i] |= tf_d;
+ }
+ }
+ }
+ }
+
+ /* Second pass to interpolate points lying on diagonal lines (but not
+ * starting/ending stem points) along those lines. This operation, unlike
+ * moving points to diagonals, requires vectors to be set parallel to lines,
+ * and this is the reason for which it is done in a separate cycle
+ */
+ for ( i=0; i<ct->diagcnt; i++ ) {
+ ds = ct->diagstems[i];
+ if ( ds->ldone ) {
+ for ( j=0; j<ds->chunk_cnt; j++ ) if (( curpd = ds->chunks[j].l ) != NULL ) {
+ if ( curpd->ttfindex < ct->ptcnt ) {
+ ct->pt = InterpolateAlongDiag ( diagpts,&diagpts[curpd->ttfindex].line[0],
+ curpd,ct,fv,&pv,&rp1,&rp2 );
+ } else {
+ ppd = &ct->gd->points[curpd->sp->prev->from->nextcpindex];
+ npd = &ct->gd->points[curpd->sp->nextcpindex];
+ if ( IsStemAssignedToPoint(ppd, ds, true) != -1 )
+ ct->pt = InterpolateAlongDiag ( diagpts,&diagpts[ppd->ttfindex].line[0],
+ ppd,ct,fv,&pv,&rp1,&rp2 );
+ if ( IsStemAssignedToPoint(npd, ds, false) != -1 )
+ ct->pt = InterpolateAlongDiag ( diagpts,&diagpts[npd->ttfindex].line[0],
+ npd,ct,fv,&pv,&rp1,&rp2 );
+ }
+ }
+ }
+ if ( ds->rdone ) {
+ for ( j=0; j<ds->chunk_cnt; j++ ) if (( curpd = ds->chunks[j].r ) != NULL ) {
+ if ( curpd->ttfindex < ct->ptcnt ) {
+ ct->pt = InterpolateAlongDiag ( diagpts,&diagpts[curpd->ttfindex].line[0],
+ curpd,ct,fv,&pv,&rp1,&rp2 );
+ } else {
+ ppd = &ct->gd->points[curpd->sp->prev->from->nextcpindex];
+ npd = &ct->gd->points[curpd->sp->nextcpindex];
+ if ( IsStemAssignedToPoint(ppd, ds, true) != -1 )
+ ct->pt = InterpolateAlongDiag ( diagpts,&diagpts[ppd->ttfindex].line[0],
+ ppd,ct,fv,&pv,&rp1,&rp2 );
+ if ( IsStemAssignedToPoint(npd, ds, false) != -1 )
+ ct->pt = InterpolateAlongDiag ( diagpts,&diagpts[npd->ttfindex].line[0],
+ npd,ct,fv,&pv,&rp1,&rp2 );
+ }
+ }
+ }
+ }
+return( ct->pt );
+}
+
+static void TouchControlPoint( InstrCt *ct,PointData *pd,
+ int next,int *tobefixedy,int *tobefixedx,int *numx,int *numy ) {
+
+ int idx, cpidx;
+ PointData *cpd;
+ uint8 *touched = ct->touched;
+
+ idx = pd->ttfindex;
+ cpidx = next ? pd->sp->nextcpindex : pd->sp->prev->from->nextcpindex;
+ cpd = &ct->gd->points[cpidx];
+
+ if ( has_valid_dstem( cpd, !next ) != -1 ) {
+ /* if this control point is used to describe an implied spline
+ * point, then it is instructed as if it was an oncurve point */
+ if ( idx == 0xffff && touched[cpidx] & tf_d ) {
+ if (!( touched[cpidx] & tf_y )) {
+ tobefixedy[(*numy)++] = cpidx;
+ touched[cpidx] |= tf_y;
+ }
+
+ if (!( touched[cpidx] & tf_x )) {
+ tobefixedx[(*numx)++] = cpidx;
+ touched[cpidx] |= tf_x;
+ }
+ /* otherwise we just mark it as affected to prevent undesired
+ * interpolations */
+ } else if ( idx < ct->gd->realcnt && touched[idx] & tf_d ) {
+ ct->affected[cpidx] |= tf_x;
+ ct->affected[cpidx] |= tf_y;
+ }
+ }
+}
+
+/* Finally explicitly touch all affected points by X and Y (unless they
+ * have already been), so that subsequent IUP's can't distort our stems.
+ */
+static uint8 *TouchDStemPoints( InstrCt *ct,BasePoint *fv ) {
+
+ int i, ptcnt, numx=0, numy=0, idx;
+ int *tobefixedy, *tobefixedx;
+ uint8 *instrs, *touched;
+ DiagPointInfo *diagpts;
+ PointData *pd;
+
+ touched = ct->touched;
+ instrs = ct->pt;
+ ptcnt = ct->gd->pcnt;
+ diagpts = ct->diagpts;
+
+ tobefixedy = calloc( ptcnt,sizeof( int ));
+ tobefixedx = calloc( ptcnt,sizeof( int ));
+
+ /* Ensure that the projection vector is no longer set to a diagonal line */
+ if ( fv->x == 1 && fv->y == 0 )
+ *instrs++ = 0x03; /* SPVTCA[x] */
+ else if ( fv->x == 0 && fv->y == 1 )
+ *instrs++ = 0x02; /* SPVTCA[y] */
+
+ for ( i=0; i<ptcnt; i++ ) if ( ct->gd->points[i].sp != NULL ) {
+ pd = &ct->gd->points[i];
+ if (( has_valid_dstem( pd,false )) != -1 ||
+ ( has_valid_dstem( pd,true )) != -1 ) {
+
+ idx = pd->ttfindex;
+ if ( idx < ct->gd->realcnt && touched[idx] & tf_d ) {
+ if (!( touched[idx] & tf_y )) {
+ tobefixedy[numy++] = idx;
+ touched[idx] |= tf_y;
+ }
+
+ if (!( touched[idx] & tf_x )) {
+ tobefixedx[numx++] = idx;
+ touched[idx] |= tf_x;
+ }
+ }
+ if ( !pd->sp->noprevcp )
+ TouchControlPoint( ct,pd,false,tobefixedy,tobefixedx,&numx,&numy );
+ if ( !pd->sp->nonextcp )
+ TouchControlPoint( ct,pd,true,tobefixedy,tobefixedx,&numx,&numy );
+ }
+ }
+
+ if ( numy>0 ) {
+ if ( !(fv->x == 0 && fv->y == 1) ) *instrs++ = SVTCA_y;
+ instrs = instructpoints ( instrs,numy,tobefixedy,MDAP );
+ }
+
+ if ( numx>0 ) {
+ if ( !(fv->x == 1 && fv->y == 0) || numy > 0 ) *instrs++ = SVTCA_x;
+ instrs = instructpoints ( instrs,numx,tobefixedx,MDAP );
+ }
+
+ if ( numx == 0 && numy == 0 ) *instrs++ = SVTCA_x;
+
+ free( tobefixedy );
+ free( tobefixedx );
+return( instrs );
+}
+
+static void DStemInfoGeninst( InstrCt *ct ) {
+ BasePoint fv;
+ int i;
+
+ if (ct->diagcnt == 0)
+return;
+
+ fv.x = 1; fv.y = 0;
+
+ ct->pt = pushF26Dot6( ct->pt,DIAG_MIN_DISTANCE );
+ *(ct->pt)++ = SMD; /* Set Minimum Distance */
+
+ for ( i=0; i<ct->diagcnt; i++ )
+ ct->pt = FixDstem ( ct,ct->diagstems[i],&fv );
+
+ ct->pt = MovePointsToIntersections( ct,&fv );
+ ct->pt = TouchDStemPoints ( ct,&fv);
+
+ ct->pt = pushF26Dot6( ct->pt,1.0 );
+ *(ct->pt)++ = SMD; /* Set Minimum Distance */
+
+ ct->xdir = fv.x;
+}
+
+/******************************************************************************
+ *
+ * Strong point interpolation
+ *
+ * TODO! Better optimization, if possible.
+ * TODO! leftmost and righmost bounds, if not already controlled by stems.
+ *
+ ******************************************************************************/
+
+/* To be used with qsort() - sorts edge array in ascending order. */
+struct stemedge {
+ int refpt;
+ double pos;
+};
+
+/* To be used with qsort() - sorts edge array in ascending order. */
+static int sortedges(const void *_e1, const void *_e2) {
+ const struct stemedge *e1 = _e1, *e2 = _e2;
+ return ( e1->pos > e2->pos );
+}
+
+static int AddEdge(InstrCt *ct, StemData *stem, int is_l, struct stemedge *edgelist, int cnt) {
+ real coord;
+ int i, skip, refidx;
+
+ if (!stem->ghost ||
+ (is_l && stem->width == 20) || (!is_l && stem->width == 21)) {
+
+ coord = is_l ?
+ ((real *) &stem->left.x)[!ct->xdir] : ((real *) &stem->right.x)[!ct->xdir];
+ refidx = is_l ? stem->leftidx : stem->rightidx;
+ for (i=skip=0; i<cnt; i++)
+ if (abs(coord - edgelist[i].pos) <= ct->gic->fudge ||
+ edgelist[i].refpt == refidx) {
+ skip=1;
+ break;
+ }
+ if (!skip && refidx != -1) {
+ edgelist[cnt ].refpt = refidx;
+ edgelist[cnt++].pos = coord;
+ }
+ }
+ return( cnt );
+}
+
+/* Optional feature: tries to maintain relative position of some important
+ * points between stems' edges, so that glyph's shape is mostly preserved
+ * when strongly gridfitted. This in terms of FreeType is called 'Strong Point
+ * Interpolation'. It now does more or else what it should, but generates large
+ * and sometimes incomplete code - see 'todos' above, and optimize_strongpts().
+ * Note: it would affect diagonals if done before instructing them.
+ *
+ * TODO: it now intrpolates strong points only between hints' edges.
+ * What about between leftmost/rightmost edge and leftmost/rightmost
+ * glyph extents, if they protrude beyond the edges?
+ */
+static void InterpolateStrongPoints(InstrCt *ct) {
+ StemBundle *bundle;
+ StemData *stem;
+ uint8 touchflag = ct->xdir?tf_x:tf_y;
+ real fudge;
+ struct stemedge edgelist[192];
+ int edgecnt=0, i, j;
+ int lpoint = -1, ledge=0;
+ int rpoint = -1;
+ int nowrp1 = 1;
+ int ldone = 0;
+
+ bundle = ( ct->xdir ) ? ct->gd->vbundle : ct->gd->hbundle;
+ if (bundle == NULL || bundle->cnt == 0)
+ return;
+
+ /* List all stem edges. List only active edges for ghost hints. */
+ for(i=0; i<bundle->cnt; i++) {
+ stem = bundle->stemlist[i];
+
+ edgecnt = AddEdge(ct, stem, ct->xdir, edgelist, edgecnt);
+ edgecnt = AddEdge(ct, stem, !ct->xdir, edgelist, edgecnt);
+ }
+
+ if (edgecnt < 2)
+return;
+
+ qsort(edgelist, edgecnt, sizeof(struct stemedge), sortedges);
+
+ /* Interpolate important points between subsequent edges */
+ for (i=0; i<edgecnt; i++) {
+ rpoint = edgelist[i].refpt;
+ if (rpoint == -1 || !(ct->touched[rpoint] & touchflag)) continue;
+
+ if (lpoint==-1) {
+ /* first edge */
+ lpoint = rpoint;
+ ledge = i;
+ }
+ else {
+ fudge = ct->gic->fudge;
+ ct->gic->fudge = (edgelist[i].pos-edgelist[ledge].pos)/2;
+ init_edge(ct, (edgelist[i].pos+edgelist[ledge].pos)/2, ALL_CONTOURS);
+ optimize_strongpts(ct); /* Special way is needed here. */
+ ct->gic->fudge = fudge;
+
+ if (!ct->edge.othercnt) {
+ nowrp1 = 1;
+ lpoint = rpoint;
+ ledge = i;
+ ldone = 0;
+ }
+ else if (ct->edge.refscore) {
+ if (!ldone) {
+ ct->pt = push2points(ct->pt, rpoint, lpoint);
+ *ct->pt++ = SRP1;
+ *ct->pt++ = SRP2;
+ }
+ else {
+ ct->pt = pushpoint(ct->pt, rpoint);
+ if (nowrp1) *ct->pt++ = SRP1;
+ else *ct->pt++ = SRP2;
+ nowrp1 = !nowrp1;
+ }
+
+ lpoint = rpoint;
+ ledge = i;
+ ldone = 1;
+
+ /* instruct points */
+ ct->pt = instructpoints(ct->pt, ct->edge.othercnt,
+ ct->edge.others, IP);
+ for (j=0; j<ct->edge.othercnt; j++)
+ ct->touched[ct->edge.others[j]] |= touchflag;
+ }
+
+ if (ct->edge.othercnt) {
+ free(ct->edge.others);
+ ct->edge.othercnt = 0;
+ }
+ }
+ }
+}
+
+/******************************************************************************
+ *
+ * Generate instructions for a glyph.
+ *
+ ******************************************************************************/
+
+static uint8 *dogeninstructions(InstrCt *ct) {
+ StemData *stem;
+ int max, i;
+ DStemInfo *dstem;
+ BlueData nbd;
+
+ /* Fill a temporary BlueData structure basing on the data stored in the global
+ * instruction context. This is needed for GlyphDataBuild(), as it accepts
+ * blue data only in this format
+ */
+ for ( i=0; i<ct->gic->bluecnt; i++ ) {
+ if ( ct->gic->blues[i].base < ct->gic->blues[i].overshoot ) {
+ nbd.blues[i][0] = ct->gic->blues[i].base;
+ nbd.blues[i][1] = ct->gic->blues[i].overshoot;
+ } else {
+ nbd.blues[i][0] = ct->gic->blues[i].overshoot;
+ nbd.blues[i][1] = ct->gic->blues[i].base;
+ }
+ }
+ nbd.bluecnt = ct->gic->bluecnt;
+ ct->gd = GlyphDataBuild( ct->sc,ct->gic->layer,&nbd,instruct_diagonal_stems );
+
+ /* Maximum instruction length is 6 bytes for each point in each dimension
+ * 2 extra bytes to finish up. And one byte to switch from x to y axis
+ * Diagonal take more space because we need to set the orientation on
+ * each stem, and worry about intersections, etc.
+ * That should be an over-estimate
+ */
+ max=2;
+ if ( ct->gd->hbundle!=NULL ) max += ct->ptcnt*8;
+ if ( ct->gd->vbundle!=NULL ) max += ct->ptcnt*8+4;
+ for ( dstem=ct->sc->dstem; dstem!=NULL; max+=7+4*6+100, dstem=dstem->next );
+ if ( ct->sc->md!=NULL ) max += ct->ptcnt*12;
+ max += ct->ptcnt*6; /* in case there are any rounds */
+ max += ct->ptcnt*6; /* paranoia */
+ ct->instrs = ct->pt = malloc(max);
+
+ /* Initially no stem hints are done */
+ if ( ct->gd->hbundle!=NULL ) {
+ for ( i=0; i<ct->gd->hbundle->cnt; i++ ) {
+ stem = ct->gd->hbundle->stemlist[i];
+ stem->ldone = stem->rdone = false;
+ }
+ }
+ if ( ct->gd->vbundle!=NULL ) {
+ for ( i=0; i<ct->gd->vbundle->cnt; i++ ) {
+ stem = ct->gd->vbundle->stemlist[i];
+ stem->ldone = stem->rdone = false;
+ }
+ }
+
+ if ( instruct_diagonal_stems ) {
+ /* Prepare info about diagonal stems to be used during edge optimization. */
+ /* These contents need to be explicitly freed after hinting diagonals. */
+ ct->diagstems = calloc(ct->gd->stemcnt, sizeof(StemData *));
+ ct->diagpts = calloc(ct->ptcnt, sizeof(struct diagpointinfo));
+ InitDStemData(ct);
+ }
+
+ /* We start from instructing horizontal features (=> movement in y)
+ * Do this first so that the diagonal hinter will have everything moved
+ * properly when it sets the projection vector
+ * Even if we aren't doing the diagonals, we do the blues.
+ */
+ ct->xdir = false;
+ *(ct->pt)++ = SVTCA_y;
+ snap_to_blues(ct);
+ HStemGeninst(ct);
+
+ /* Next instruct vertical features (=> movement in x). */
+ ct->xdir = true;
+ *(ct->pt)++ = SVTCA_x;
+ VStemGeninst(ct);
+
+ /* Then instruct diagonal stems (=> movement in x)
+ * This is done after vertical stems because it involves
+ * moving some points out-of their vertical stems.
+ */
+ if (instruct_diagonal_stems && ct->diagcnt > 0) DStemInfoGeninst(ct);
+
+ if ( interpolate_strong ) {
+ /* Adjust important points between hint edges. */
+ if (ct->xdir == false) *(ct->pt)++ = SVTCA_x;
+ ct->xdir = true;
+ InterpolateStrongPoints(ct);
+ ct->xdir = false;
+ *(ct->pt)++ = SVTCA_y;
+ InterpolateStrongPoints(ct);
+ }
+
+ /* Interpolate untouched points */
+ *(ct->pt)++ = IUP_y;
+ *(ct->pt)++ = IUP_x;
+
+ if ((ct->pt)-(ct->instrs) > max) IError(
+ "We're about to crash.\n"
+ "We miscalculated the glyph's instruction set length\n"
+ "When processing TTF instructions (hinting) of %s", ct->sc->name
+ );
+
+ if ( instruct_diagonal_stems ) {
+ free(ct->diagstems);
+ free(ct->diagpts);
+ }
+ GlyphDataFree( ct->gd );
+
+ ct->sc->ttf_instrs_len = (ct->pt)-(ct->instrs);
+ ct->sc->instructions_out_of_date = false;
+return ct->sc->ttf_instrs = realloc(ct->instrs,(ct->pt)-(ct->instrs));
+}
+
+void NowakowskiSCAutoInstr(GlobalInstrCt *gic, SplineChar *sc) {
+ int cnt, contourcnt;
+ BasePoint *bp;
+ int *contourends;
+ uint8 *clockwise;
+ uint8 *touched;
+ uint8 *affected;
+ SplineSet *ss;
+ RefChar *ref;
+ InstrCt ct;
+ int i;
+
+ if ( !sc->layers[gic->layer].order2 )
+return;
+
+ if ( sc->layers[gic->layer].refs!=NULL && sc->layers[gic->layer].splines!=NULL ) {
+ ff_post_error(_("Can't instruct this glyph"),
+ _("TrueType does not support mixed references and contours.\nIf you want instructions for %.30s you should either:\n * Unlink the reference(s)\n * Copy the inline contours into their own (unencoded\n glyph) and make a reference to that."),
+ sc->name );
+return;
+ }
+ for ( ref = sc->layers[gic->layer].refs; ref!=NULL; ref=ref->next ) {
+ if ( ref->transform[0]>=2 || ref->transform[0]<-2 ||
+ ref->transform[1]>=2 || ref->transform[1]<-2 ||
+ ref->transform[2]>=2 || ref->transform[2]<-2 ||
+ ref->transform[3]>=2 || ref->transform[3]<-2 )
+ break;
+ }
+ if ( ref!=NULL ) {
+ ff_post_error(_("Can't instruct this glyph"),
+ _("TrueType does not support references which\nare scaled by more than 200%%. But %1$.30s\nhas been in %2$.30s. Any instructions\nadded would be meaningless."),
+ ref->sc->name, sc->name );
+return;
+ }
+
+ if ( sc->ttf_instrs ) {
+ free(sc->ttf_instrs);
+ sc->ttf_instrs = NULL;
+ sc->ttf_instrs_len = 0;
+ }
+ SCNumberPoints(sc,gic->layer);
+ if ( autohint_before_generate && sc->changedsincelasthinted &&
+ !sc->manualhints )
+ SplineCharAutoHint(sc,gic->layer,NULL);
+
+ if ( sc->vstem==NULL && sc->hstem==NULL && sc->dstem==NULL && sc->md==NULL)
+return;
+
+ /* TODO!
+ *
+ * We're having problems with references utilizing 'use my metrics' that are
+ * rotated or flipped horizontally. Basically, such glyphs can get negative
+ * width and behave strangely when the glyph referred is instructed. Such
+ * widths are treated very differently under Freetype (OK) and Windows
+ * (terribly shifted), and I suppose other rasterizers can also complain.
+ * Perhaps we should advise turning 'use my metrics' off.
+ */
+
+ if ( sc->layers[gic->layer].splines==NULL )
+return;
+
+ /* Start dealing with the glyph */
+ contourcnt = 0;
+ for ( ss=sc->layers[gic->layer].splines; ss!=NULL; ss=ss->next, ++contourcnt );
+ cnt = SSTtfNumberPoints(sc->layers[gic->layer].splines);
+
+ contourends = malloc((contourcnt+1)*sizeof(int));
+ clockwise = calloc(contourcnt,1);
+ bp = malloc(cnt*sizeof(BasePoint));
+ touched = calloc(cnt,1);
+ affected = calloc(cnt,1);
+
+ contourcnt = cnt = 0;
+ for ( ss=sc->layers[gic->layer].splines; ss!=NULL; ss=ss->next ) {
+ touched[cnt] |= tf_startcontour;
+ cnt = SSAddPoints(ss,cnt,bp,NULL);
+ touched[cnt-1] |= tf_endcontour;
+ contourends[contourcnt] = cnt-1;
+ clockwise[contourcnt++] = SplinePointListIsClockwise(ss);
+ }
+ contourends[contourcnt] = 0;
+
+ for (i=0; i<gic->bluecnt; i++)
+ gic->blues[i].highest = gic->blues[i].lowest = -1;
+
+ ct.gic = gic;
+
+ ct.sc = sc;
+ ct.ss = sc->layers[gic->layer].splines;
+ ct.instrs = NULL;
+ ct.pt = NULL;
+ ct.ptcnt = cnt;
+ ct.contourends = contourends;
+ ct.clockwise = clockwise;
+ ct.bp = bp;
+ ct.touched = touched;
+ ct.affected = affected;
+ ct.diagstems = NULL;
+ ct.diagpts = NULL;
+
+ ct.rp0 = 0;
+
+ dogeninstructions(&ct);
+
+ free(touched);
+ free(affected);
+ free(bp);
+ free(contourends);
+ free(clockwise);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/parsepfa.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/parsepfa.c
new file mode 100644
index 00000000000..9f3d5f81617
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/parsepfa.c
@@ -0,0 +1,583 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include "psfont.h"
+
+const char *AdobeStandardEncoding[] = {
+/* 0000 */ ".notdef",
+/* 0001 */ ".notdef",
+/* 0002 */ ".notdef",
+/* 0003 */ ".notdef",
+/* 0004 */ ".notdef",
+/* 0005 */ ".notdef",
+/* 0006 */ ".notdef",
+/* 0007 */ ".notdef",
+/* 0008 */ ".notdef",
+/* 0009 */ ".notdef",
+/* 000a */ ".notdef",
+/* 000b */ ".notdef",
+/* 000c */ ".notdef",
+/* 000d */ ".notdef",
+/* 000e */ ".notdef",
+/* 000f */ ".notdef",
+/* 0010 */ ".notdef",
+/* 0011 */ ".notdef",
+/* 0012 */ ".notdef",
+/* 0013 */ ".notdef",
+/* 0014 */ ".notdef",
+/* 0015 */ ".notdef",
+/* 0016 */ ".notdef",
+/* 0017 */ ".notdef",
+/* 0018 */ ".notdef",
+/* 0019 */ ".notdef",
+/* 001a */ ".notdef",
+/* 001b */ ".notdef",
+/* 001c */ ".notdef",
+/* 001d */ ".notdef",
+/* 001e */ ".notdef",
+/* 001f */ ".notdef",
+/* 0020 */ "space",
+/* 0021 */ "exclam",
+/* 0022 */ "quotedbl",
+/* 0023 */ "numbersign",
+/* 0024 */ "dollar",
+/* 0025 */ "percent",
+/* 0026 */ "ampersand",
+/* 0027 */ "quoteright",
+/* 0028 */ "parenleft",
+/* 0029 */ "parenright",
+/* 002a */ "asterisk",
+/* 002b */ "plus",
+/* 002c */ "comma",
+/* 002d */ "hyphen",
+/* 002e */ "period",
+/* 002f */ "slash",
+/* 0030 */ "zero",
+/* 0031 */ "one",
+/* 0032 */ "two",
+/* 0033 */ "three",
+/* 0034 */ "four",
+/* 0035 */ "five",
+/* 0036 */ "six",
+/* 0037 */ "seven",
+/* 0038 */ "eight",
+/* 0039 */ "nine",
+/* 003a */ "colon",
+/* 003b */ "semicolon",
+/* 003c */ "less",
+/* 003d */ "equal",
+/* 003e */ "greater",
+/* 003f */ "question",
+/* 0040 */ "at",
+/* 0041 */ "A",
+/* 0042 */ "B",
+/* 0043 */ "C",
+/* 0044 */ "D",
+/* 0045 */ "E",
+/* 0046 */ "F",
+/* 0047 */ "G",
+/* 0048 */ "H",
+/* 0049 */ "I",
+/* 004a */ "J",
+/* 004b */ "K",
+/* 004c */ "L",
+/* 004d */ "M",
+/* 004e */ "N",
+/* 004f */ "O",
+/* 0050 */ "P",
+/* 0051 */ "Q",
+/* 0052 */ "R",
+/* 0053 */ "S",
+/* 0054 */ "T",
+/* 0055 */ "U",
+/* 0056 */ "V",
+/* 0057 */ "W",
+/* 0058 */ "X",
+/* 0059 */ "Y",
+/* 005a */ "Z",
+/* 005b */ "bracketleft",
+/* 005c */ "backslash",
+/* 005d */ "bracketright",
+/* 005e */ "asciicircum",
+/* 005f */ "underscore",
+/* 0060 */ "quoteleft",
+/* 0061 */ "a",
+/* 0062 */ "b",
+/* 0063 */ "c",
+/* 0064 */ "d",
+/* 0065 */ "e",
+/* 0066 */ "f",
+/* 0067 */ "g",
+/* 0068 */ "h",
+/* 0069 */ "i",
+/* 006a */ "j",
+/* 006b */ "k",
+/* 006c */ "l",
+/* 006d */ "m",
+/* 006e */ "n",
+/* 006f */ "o",
+/* 0070 */ "p",
+/* 0071 */ "q",
+/* 0072 */ "r",
+/* 0073 */ "s",
+/* 0074 */ "t",
+/* 0075 */ "u",
+/* 0076 */ "v",
+/* 0077 */ "w",
+/* 0078 */ "x",
+/* 0079 */ "y",
+/* 007a */ "z",
+/* 007b */ "braceleft",
+/* 007c */ "bar",
+/* 007d */ "braceright",
+/* 007e */ "asciitilde",
+/* 007f */ ".notdef",
+/* 0080 */ ".notdef",
+/* 0081 */ ".notdef",
+/* 0082 */ ".notdef",
+/* 0083 */ ".notdef",
+/* 0084 */ ".notdef",
+/* 0085 */ ".notdef",
+/* 0086 */ ".notdef",
+/* 0087 */ ".notdef",
+/* 0088 */ ".notdef",
+/* 0089 */ ".notdef",
+/* 008a */ ".notdef",
+/* 008b */ ".notdef",
+/* 008c */ ".notdef",
+/* 008d */ ".notdef",
+/* 008e */ ".notdef",
+/* 008f */ ".notdef",
+/* 0090 */ ".notdef",
+/* 0091 */ ".notdef",
+/* 0092 */ ".notdef",
+/* 0093 */ ".notdef",
+/* 0094 */ ".notdef",
+/* 0095 */ ".notdef",
+/* 0096 */ ".notdef",
+/* 0097 */ ".notdef",
+/* 0098 */ ".notdef",
+/* 0099 */ ".notdef",
+/* 009a */ ".notdef",
+/* 009b */ ".notdef",
+/* 009c */ ".notdef",
+/* 009d */ ".notdef",
+/* 009e */ ".notdef",
+/* 009f */ ".notdef",
+/* 00a0 */ ".notdef",
+/* 00a1 */ "exclamdown",
+/* 00a2 */ "cent",
+/* 00a3 */ "sterling",
+/* 00a4 */ "fraction",
+/* 00a5 */ "yen",
+/* 00a6 */ "florin",
+/* 00a7 */ "section",
+/* 00a8 */ "currency",
+/* 00a9 */ "quotesingle",
+/* 00aa */ "quotedblleft",
+/* 00ab */ "guillemotleft",
+/* 00ac */ "guilsinglleft",
+/* 00ad */ "guilsinglright",
+/* 00ae */ "fi",
+/* 00af */ "fl",
+/* 00b0 */ ".notdef",
+/* 00b1 */ "endash",
+/* 00b2 */ "dagger",
+/* 00b3 */ "daggerdbl",
+/* 00b4 */ "periodcentered",
+/* 00b5 */ ".notdef",
+/* 00b6 */ "paragraph",
+/* 00b7 */ "bullet",
+/* 00b8 */ "quotesinglbase",
+/* 00b9 */ "quotedblbase",
+/* 00ba */ "quotedblright",
+/* 00bb */ "guillemotright",
+/* 00bc */ "ellipsis",
+/* 00bd */ "perthousand",
+/* 00be */ ".notdef",
+/* 00bf */ "questiondown",
+/* 00c0 */ ".notdef",
+/* 00c1 */ "grave",
+/* 00c2 */ "acute",
+/* 00c3 */ "circumflex",
+/* 00c4 */ "tilde",
+/* 00c5 */ "macron",
+/* 00c6 */ "breve",
+/* 00c7 */ "dotaccent",
+/* 00c8 */ "dieresis",
+/* 00c9 */ ".notdef",
+/* 00ca */ "ring",
+/* 00cb */ "cedilla",
+/* 00cc */ ".notdef",
+/* 00cd */ "hungarumlaut",
+/* 00ce */ "ogonek",
+/* 00cf */ "caron",
+/* 00d0 */ "emdash",
+/* 00d1 */ ".notdef",
+/* 00d2 */ ".notdef",
+/* 00d3 */ ".notdef",
+/* 00d4 */ ".notdef",
+/* 00d5 */ ".notdef",
+/* 00d6 */ ".notdef",
+/* 00d7 */ ".notdef",
+/* 00d8 */ ".notdef",
+/* 00d9 */ ".notdef",
+/* 00da */ ".notdef",
+/* 00db */ ".notdef",
+/* 00dc */ ".notdef",
+/* 00dd */ ".notdef",
+/* 00de */ ".notdef",
+/* 00df */ ".notdef",
+/* 00e0 */ ".notdef",
+/* 00e1 */ "AE",
+/* 00e2 */ ".notdef",
+/* 00e3 */ "ordfeminine",
+/* 00e4 */ ".notdef",
+/* 00e5 */ ".notdef",
+/* 00e6 */ ".notdef",
+/* 00e7 */ ".notdef",
+/* 00e8 */ "Lslash",
+/* 00e9 */ "Oslash",
+/* 00ea */ "OE",
+/* 00eb */ "ordmasculine",
+/* 00ec */ ".notdef",
+/* 00ed */ ".notdef",
+/* 00ee */ ".notdef",
+/* 00ef */ ".notdef",
+/* 00f0 */ ".notdef",
+/* 00f1 */ "ae",
+/* 00f2 */ ".notdef",
+/* 00f3 */ ".notdef",
+/* 00f4 */ ".notdef",
+/* 00f5 */ "dotlessi",
+/* 00f6 */ ".notdef",
+/* 00f7 */ ".notdef",
+/* 00f8 */ "lslash",
+/* 00f9 */ "oslash",
+/* 00fa */ "oe",
+/* 00fb */ "germandbls",
+/* 00fc */ ".notdef",
+/* 00fd */ ".notdef",
+/* 00fe */ ".notdef",
+/* 00ff */ ".notdef"
+};
+
+const char *AdobeExpertEncoding[] = {
+/* 0000 */ ".notdef",
+/* 0001 */ ".notdef",
+/* 0002 */ ".notdef",
+/* 0003 */ ".notdef",
+/* 0004 */ ".notdef",
+/* 0005 */ ".notdef",
+/* 0006 */ ".notdef",
+/* 0007 */ ".notdef",
+/* 0008 */ ".notdef",
+/* 0009 */ ".notdef",
+/* 000a */ ".notdef",
+/* 000b */ ".notdef",
+/* 000c */ ".notdef",
+/* 000d */ ".notdef",
+/* 000e */ ".notdef",
+/* 000f */ ".notdef",
+/* 0010 */ ".notdef",
+/* 0011 */ ".notdef",
+/* 0012 */ ".notdef",
+/* 0013 */ ".notdef",
+/* 0014 */ ".notdef",
+/* 0015 */ ".notdef",
+/* 0016 */ ".notdef",
+/* 0017 */ ".notdef",
+/* 0018 */ ".notdef",
+/* 0019 */ ".notdef",
+/* 001a */ ".notdef",
+/* 001b */ ".notdef",
+/* 001c */ ".notdef",
+/* 001d */ ".notdef",
+/* 001e */ ".notdef",
+/* 001f */ ".notdef",
+/* 0020 */ "space",
+/* 0021 */ "exclamsmall",
+/* 0022 */ "Hungarumlautsmal",
+/* 0023 */ ".notdef",
+/* 0024 */ "dollaroldstyle",
+/* 0025 */ "dollarsuperior",
+/* 0026 */ "ampersandsmall",
+/* 0027 */ "Acutesmall",
+/* 0028 */ "parenleftsuperior",
+/* 0029 */ "parenrightsuperior",
+/* 002a */ "twodotenleader",
+/* 002b */ "onedotenleader",
+/* 002c */ "comma",
+/* 002d */ "hyphen",
+/* 002e */ "period",
+/* 002f */ "fraction",
+/* 0030 */ "zerooldstyle",
+/* 0031 */ "oneoldstyle",
+/* 0032 */ "twooldstyle",
+/* 0033 */ "threeoldstyle",
+/* 0034 */ "fouroldstyle",
+/* 0035 */ "fiveoldstyle",
+/* 0036 */ "sixoldstyle",
+/* 0037 */ "sevenoldstyle",
+/* 0038 */ "eightoldstyle",
+/* 0039 */ "nineoldstyle",
+/* 003a */ "colon",
+/* 003b */ "semicolon",
+/* 003c */ "commasuperior",
+/* 003d */ "threequartersemdash",
+/* 003e */ "periodsuperior",
+/* 003f */ "questionsmall",
+/* 0040 */ ".notdef",
+/* 0041 */ "asuperior",
+/* 0042 */ "bsuperior",
+/* 0043 */ "centsuperior",
+/* 0044 */ "dsuperior",
+/* 0045 */ "esuperior",
+/* 0046 */ ".notdef",
+/* 0047 */ ".notdef",
+/* 0048 */ ".notdef",
+/* 0049 */ "isuperior",
+/* 004a */ ".notdef",
+/* 004b */ ".notdef",
+/* 004c */ "lsuperior",
+/* 004d */ "msuperior",
+/* 004e */ "nsuperior",
+/* 004f */ "osuperior",
+/* 0050 */ ".notdef",
+/* 0051 */ ".notdef",
+/* 0052 */ "rsuperior",
+/* 0053 */ "ssuperior",
+/* 0054 */ "tsuperior",
+/* 0055 */ ".notdef",
+/* 0056 */ "ff",
+/* 0057 */ "fi",
+/* 0058 */ "fl",
+/* 0059 */ "ffi",
+/* 005a */ "ffl",
+/* 005b */ "parenleftinferior",
+/* 005c */ ".notdef",
+/* 005d */ "parenrightinferior",
+/* 005e */ "Circumflexsmall",
+/* 005f */ "hyphensuperior",
+/* 0060 */ "Gravesmall",
+/* 0061 */ "Asmall",
+/* 0062 */ "Bsmall",
+/* 0063 */ "Csmall",
+/* 0064 */ "Dsmall",
+/* 0065 */ "Esmall",
+/* 0066 */ "Fsmall",
+/* 0067 */ "Gsmall",
+/* 0068 */ "Hsmall",
+/* 0069 */ "Ismall",
+/* 006a */ "Jsmall",
+/* 006b */ "Ksmall",
+/* 006c */ "Lsmall",
+/* 006d */ "Msmall",
+/* 006e */ "Nsmall",
+/* 006f */ "Osmall",
+/* 0070 */ "Psmall",
+/* 0071 */ "Qsmall",
+/* 0072 */ "Rsmall",
+/* 0073 */ "Ssmall",
+/* 0074 */ "Tsmall",
+/* 0075 */ "Usmall",
+/* 0076 */ "Vsmall",
+/* 0077 */ "Wsmall",
+/* 0078 */ "Xsmall",
+/* 0079 */ "Ysmall",
+/* 007a */ "Zsmall",
+/* 007b */ "colonmonetary",
+/* 007c */ "onefitted",
+/* 007d */ "rupiah",
+/* 007e */ "Tildesmall",
+/* 007f */ ".notdef",
+/* 0080 */ ".notdef",
+/* 0081 */ ".notdef",
+/* 0082 */ ".notdef",
+/* 0083 */ ".notdef",
+/* 0084 */ ".notdef",
+/* 0085 */ ".notdef",
+/* 0086 */ ".notdef",
+/* 0087 */ ".notdef",
+/* 0088 */ ".notdef",
+/* 0089 */ ".notdef",
+/* 008a */ ".notdef",
+/* 008b */ ".notdef",
+/* 008c */ ".notdef",
+/* 008d */ ".notdef",
+/* 008e */ ".notdef",
+/* 008f */ ".notdef",
+/* 0090 */ ".notdef",
+/* 0091 */ ".notdef",
+/* 0092 */ ".notdef",
+/* 0093 */ ".notdef",
+/* 0094 */ ".notdef",
+/* 0095 */ ".notdef",
+/* 0096 */ ".notdef",
+/* 0097 */ ".notdef",
+/* 0098 */ ".notdef",
+/* 0099 */ ".notdef",
+/* 009a */ ".notdef",
+/* 009b */ ".notdef",
+/* 009c */ ".notdef",
+/* 009d */ ".notdef",
+/* 009e */ ".notdef",
+/* 009f */ ".notdef",
+/* 00a0 */ ".notdef",
+/* 00a1 */ "exclamdownsmall",
+/* 00a2 */ "centoldstyle",
+/* 00a3 */ "Lslashsmall",
+/* 00a4 */ ".notdef",
+/* 00a5 */ ".notdef",
+/* 00a6 */ "Scaronsmall",
+/* 00a7 */ "Zcaronsmall",
+/* 00a8 */ "Dieresissmall",
+/* 00a9 */ "Brevesmall",
+/* 00aa */ "Caronsmall",
+/* 00ab */ ".notdef",
+/* 00ac */ "Dotaccentsmall",
+/* 00ad */ ".notdef",
+/* 00ae */ ".notdef",
+/* 00af */ "Macronsmall",
+/* 00b0 */ ".notdef",
+/* 00b1 */ ".notdef",
+/* 00b2 */ "figuredash",
+/* 00b3 */ "hypheninferior",
+/* 00b4 */ ".notdef",
+/* 00b5 */ ".notdef",
+/* 00b6 */ "Ogoneksmall",
+/* 00b7 */ "Ringsmall",
+/* 00b8 */ "Cedillasmall",
+/* 00b9 */ ".notdef",
+/* 00ba */ ".notdef",
+/* 00bb */ ".notdef",
+/* 00bc */ "onequarter",
+/* 00bd */ "onehalf",
+/* 00be */ "threequarters",
+/* 00bf */ "questiondownsmall",
+/* 00c0 */ "oneeighth",
+/* 00c1 */ "threeeighths",
+/* 00c2 */ "fiveeighths",
+/* 00c3 */ "seveneighths",
+/* 00c4 */ "onethird",
+/* 00c5 */ "twothirds",
+/* 00c6 */ ".notdef",
+/* 00c7 */ ".notdef",
+/* 00c8 */ "zerosuperior",
+/* 00c9 */ "onesuperior",
+/* 00ca */ "twosuperior",
+/* 00cb */ "threesuperior",
+/* 00cc */ "foursuperior",
+/* 00cd */ "fivesuperior",
+/* 00ce */ "sixsuperior",
+/* 00cf */ "sevensuperior",
+/* 00d0 */ "eightsuperior",
+/* 00d1 */ "ninesuperior",
+/* 00d2 */ "zeroinferior",
+/* 00d3 */ "oneinferior",
+/* 00d4 */ "twoinferior",
+/* 00d5 */ "threeinferior",
+/* 00d6 */ "fourinferior",
+/* 00d7 */ "fiveinferior",
+/* 00d8 */ "sixinferior",
+/* 00d9 */ "seveninferior",
+/* 00da */ "eightinferior",
+/* 00db */ "nineinferior",
+/* 00dc */ "centinferior",
+/* 00dd */ "dollarinferior",
+/* 00de */ "periodinferior",
+/* 00df */ "commainferior",
+/* 00e0 */ "Agravesmall",
+/* 00e1 */ "Aacutesmall",
+/* 00e2 */ "Acircumflexsmall",
+/* 00e3 */ "Atildesmall",
+/* 00e4 */ "Adieresissmall",
+/* 00e5 */ "Aringsmall",
+/* 00e6 */ "AEsmall",
+/* 00e7 */ "Ccedillasmall",
+/* 00e8 */ "Egravesmall",
+/* 00e9 */ "Eacutesmall",
+/* 00ea */ "Ecircumflexsmall",
+/* 00eb */ "Edieresissmall",
+/* 00ec */ "Igravesmall",
+/* 00ed */ "Iacutesmall",
+/* 00ee */ "Icircumflexsmall",
+/* 00ef */ "Idieresissmall",
+/* 00f0 */ "Ethsmall",
+/* 00f1 */ "Ntildesmall",
+/* 00f2 */ "Ogravesmall",
+/* 00f3 */ "Oacutesmall",
+/* 00f4 */ "Ocircumflexsmall",
+/* 00f5 */ "Otildesmall",
+/* 00f6 */ "Odieresissmall",
+/* 00f7 */ "OEsmall",
+/* 00f8 */ "Oslashsmall",
+/* 00f9 */ "Ugravesmall",
+/* 00fa */ "Uacutesmall",
+/* 00fb */ "Ucircumflexsmall",
+/* 00fc */ "Udieresissmall",
+/* 00fd */ "Yacutesmall",
+/* 00fe */ "Thornsmall",
+/* 00ff */ "Ydieresissmall"
+};
+
+unsigned short r;
+#define c1 52845
+#define c2 22719
+
+#define EODMARKLEN 16
+
+#define bgetc(extra,in) (*(extra)=='\0' ? getc(in) : (unsigned char ) *(extra)++ )
+
+void PSCharsFree(struct pschars *chrs) {
+ int i;
+
+ if ( chrs==NULL )
+return;
+ for ( i=0; i<chrs->next; ++i ) {
+ if ( chrs->keys!=NULL ) free(chrs->keys[i]);
+ free(chrs->values[i]);
+ }
+ free(chrs->lens);
+ free(chrs->keys);
+ free(chrs->values);
+ free(chrs);
+}
+
+void PSDictFree(struct psdict *dict) {
+ int i;
+
+ if ( dict==NULL )
+return;
+ for ( i=0; i<dict->next; ++i ) {
+ if ( dict->keys!=NULL ) free(dict->keys[i]);
+ free(dict->values[i]);
+ }
+ free(dict->keys);
+ free(dict->values);
+ free(dict);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/parsettf.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/parsettf.c
new file mode 100644
index 00000000000..d6cd930c518
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/parsettf.c
@@ -0,0 +1,505 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include "ttf.h"
+
+/* True Type is a really icky format. Nothing is together. It's badly described */
+/* much of the description is misleading */
+/* Apple's version: */
+/* http://fonts.apple.com/TTRefMan/index.html */
+/* MS's version: */
+/* http://www.microsoft.com/typography/tt/tt.htm */
+/* An helpful but incomplete description is given at */
+/* http://www.truetype.demon.co.uk/ttoutln.htm */
+/* For some things I looked at freetype's code to see how they did it */
+/* (I think only for what happens if !ARGS_ARE_XY) */
+/* http://freetype.sourceforge.net/ */
+/* It grows on you though... now that I understand it better it seems better designed */
+/* but the docs remain in conflict. Sometimes badly so */
+
+
+/* ************************************************************************** */
+
+int getushort(FILE *ttf) {
+ int ch1 = getc(ttf);
+ int ch2 = getc(ttf);
+ if ( ch2==EOF )
+return( EOF );
+return( (ch1<<8)|ch2 );
+}
+
+int32 getlong(FILE *ttf) {
+ int ch1 = getc(ttf);
+ int ch2 = getc(ttf);
+ int ch3 = getc(ttf);
+ int ch4 = getc(ttf);
+ if ( ch4==EOF )
+return( EOF );
+return( (ch1<<24)|(ch2<<16)|(ch3<<8)|ch4 );
+}
+
+/* Chooses which font to open from a TTC TrueType Collection font file. */
+/* */
+/* There are five ways that one enclosed font is selected: */
+/* 1) there is only one font enclosed, so we force defaulting to that one.*/
+/* 2a) the filename has a font index appended, we choose that N'th font. */
+/* 2b) the filename has a font name appended, we try to match that name */
+/* in list of discovered font names and select that named font. */
+/* 3) the user is prompted with a list of all discovered font names, and */
+/* asked to select one, and then that N'th font is chosen. */
+/* 4) when there is no UI, then font index zero is used. */
+/* */
+/* On failure and no font is chosen, returns false. */
+/* */
+/* On success, true is returned. The chosen font name (allocated) pointer */
+/* is returned via 'chosenname'. Additionally, the file position is set */
+/* pointing to the chosen TTF font offset table, ready for reading the */
+/* TTF header. */
+/* */
+/* Example filename strings with appended font selector: */
+/* ./tests/fonts/mingliu.windows.ttc(PMingLiU) */
+/* ./tests/fonts/mingliu.windows.ttc(1) */
+/* */
+/* 'offsets' is a list of file offsets to each enclosed TTF offset table. */
+/* 'names' is a list of font names as found in each enclosed name table. */
+/* 'names' is used to search for a matching font name, or to present as a */
+/* list to the user via ff_choose() to select from. */
+/* Once the chosen font index is determined, offsets[choice] is used to */
+/* call fseek() to position to the chosen TTF header offset table. Then */
+/* the chosen font name is copied into 'chosenname'. */
+
+
+/* Standard names for cff */
+const char *cffnames[] = {
+ ".notdef",
+ "space",
+ "exclam",
+ "quotedbl",
+ "numbersign",
+ "dollar",
+ "percent",
+ "ampersand",
+ "quoteright",
+ "parenleft",
+ "parenright",
+ "asterisk",
+ "plus",
+ "comma",
+ "hyphen",
+ "period",
+ "slash",
+ "zero",
+ "one",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine",
+ "colon",
+ "semicolon",
+ "less",
+ "equal",
+ "greater",
+ "question",
+ "at",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "G",
+ "H",
+ "I",
+ "J",
+ "K",
+ "L",
+ "M",
+ "N",
+ "O",
+ "P",
+ "Q",
+ "R",
+ "S",
+ "T",
+ "U",
+ "V",
+ "W",
+ "X",
+ "Y",
+ "Z",
+ "bracketleft",
+ "backslash",
+ "bracketright",
+ "asciicircum",
+ "underscore",
+ "quoteleft",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "braceleft",
+ "bar",
+ "braceright",
+ "asciitilde",
+ "exclamdown",
+ "cent",
+ "sterling",
+ "fraction",
+ "yen",
+ "florin",
+ "section",
+ "currency",
+ "quotesingle",
+ "quotedblleft",
+ "guillemotleft",
+ "guilsinglleft",
+ "guilsinglright",
+ "fi",
+ "fl",
+ "endash",
+ "dagger",
+ "daggerdbl",
+ "periodcentered",
+ "paragraph",
+ "bullet",
+ "quotesinglbase",
+ "quotedblbase",
+ "quotedblright",
+ "guillemotright",
+ "ellipsis",
+ "perthousand",
+ "questiondown",
+ "grave",
+ "acute",
+ "circumflex",
+ "tilde",
+ "macron",
+ "breve",
+ "dotaccent",
+ "dieresis",
+ "ring",
+ "cedilla",
+ "hungarumlaut",
+ "ogonek",
+ "caron",
+ "emdash",
+ "AE",
+ "ordfeminine",
+ "Lslash",
+ "Oslash",
+ "OE",
+ "ordmasculine",
+ "ae",
+ "dotlessi",
+ "lslash",
+ "oslash",
+ "oe",
+ "germandbls",
+ "onesuperior",
+ "logicalnot",
+ "mu",
+ "trademark",
+ "Eth",
+ "onehalf",
+ "plusminus",
+ "Thorn",
+ "onequarter",
+ "divide",
+ "brokenbar",
+ "degree",
+ "thorn",
+ "threequarters",
+ "twosuperior",
+ "registered",
+ "minus",
+ "eth",
+ "multiply",
+ "threesuperior",
+ "copyright",
+ "Aacute",
+ "Acircumflex",
+ "Adieresis",
+ "Agrave",
+ "Aring",
+ "Atilde",
+ "Ccedilla",
+ "Eacute",
+ "Ecircumflex",
+ "Edieresis",
+ "Egrave",
+ "Iacute",
+ "Icircumflex",
+ "Idieresis",
+ "Igrave",
+ "Ntilde",
+ "Oacute",
+ "Ocircumflex",
+ "Odieresis",
+ "Ograve",
+ "Otilde",
+ "Scaron",
+ "Uacute",
+ "Ucircumflex",
+ "Udieresis",
+ "Ugrave",
+ "Yacute",
+ "Ydieresis",
+ "Zcaron",
+ "aacute",
+ "acircumflex",
+ "adieresis",
+ "agrave",
+ "aring",
+ "atilde",
+ "ccedilla",
+ "eacute",
+ "ecircumflex",
+ "edieresis",
+ "egrave",
+ "iacute",
+ "icircumflex",
+ "idieresis",
+ "igrave",
+ "ntilde",
+ "oacute",
+ "ocircumflex",
+ "odieresis",
+ "ograve",
+ "otilde",
+ "scaron",
+ "uacute",
+ "ucircumflex",
+ "udieresis",
+ "ugrave",
+ "yacute",
+ "ydieresis",
+ "zcaron",
+ "exclamsmall",
+ "Hungarumlautsmall",
+ "dollaroldstyle",
+ "dollarsuperior",
+ "ampersandsmall",
+ "Acutesmall",
+ "parenleftsuperior",
+ "parenrightsuperior",
+ "twodotenleader",
+ "onedotenleader",
+ "zerooldstyle",
+ "oneoldstyle",
+ "twooldstyle",
+ "threeoldstyle",
+ "fouroldstyle",
+ "fiveoldstyle",
+ "sixoldstyle",
+ "sevenoldstyle",
+ "eightoldstyle",
+ "nineoldstyle",
+ "commasuperior",
+ "threequartersemdash",
+ "periodsuperior",
+ "questionsmall",
+ "asuperior",
+ "bsuperior",
+ "centsuperior",
+ "dsuperior",
+ "esuperior",
+ "isuperior",
+ "lsuperior",
+ "msuperior",
+ "nsuperior",
+ "osuperior",
+ "rsuperior",
+ "ssuperior",
+ "tsuperior",
+ "ff",
+ "ffi",
+ "ffl",
+ "parenleftinferior",
+ "parenrightinferior",
+ "Circumflexsmall",
+ "hyphensuperior",
+ "Gravesmall",
+ "Asmall",
+ "Bsmall",
+ "Csmall",
+ "Dsmall",
+ "Esmall",
+ "Fsmall",
+ "Gsmall",
+ "Hsmall",
+ "Ismall",
+ "Jsmall",
+ "Ksmall",
+ "Lsmall",
+ "Msmall",
+ "Nsmall",
+ "Osmall",
+ "Psmall",
+ "Qsmall",
+ "Rsmall",
+ "Ssmall",
+ "Tsmall",
+ "Usmall",
+ "Vsmall",
+ "Wsmall",
+ "Xsmall",
+ "Ysmall",
+ "Zsmall",
+ "colonmonetary",
+ "onefitted",
+ "rupiah",
+ "Tildesmall",
+ "exclamdownsmall",
+ "centoldstyle",
+ "Lslashsmall",
+ "Scaronsmall",
+ "Zcaronsmall",
+ "Dieresissmall",
+ "Brevesmall",
+ "Caronsmall",
+ "Dotaccentsmall",
+ "Macronsmall",
+ "figuredash",
+ "hypheninferior",
+ "Ogoneksmall",
+ "Ringsmall",
+ "Cedillasmall",
+ "questiondownsmall",
+ "oneeighth",
+ "threeeighths",
+ "fiveeighths",
+ "seveneighths",
+ "onethird",
+ "twothirds",
+ "zerosuperior",
+ "foursuperior",
+ "fivesuperior",
+ "sixsuperior",
+ "sevensuperior",
+ "eightsuperior",
+ "ninesuperior",
+ "zeroinferior",
+ "oneinferior",
+ "twoinferior",
+ "threeinferior",
+ "fourinferior",
+ "fiveinferior",
+ "sixinferior",
+ "seveninferior",
+ "eightinferior",
+ "nineinferior",
+ "centinferior",
+ "dollarinferior",
+ "periodinferior",
+ "commainferior",
+ "Agravesmall",
+ "Aacutesmall",
+ "Acircumflexsmall",
+ "Atildesmall",
+ "Adieresissmall",
+ "Aringsmall",
+ "AEsmall",
+ "Ccedillasmall",
+ "Egravesmall",
+ "Eacutesmall",
+ "Ecircumflexsmall",
+ "Edieresissmall",
+ "Igravesmall",
+ "Iacutesmall",
+ "Icircumflexsmall",
+ "Idieresissmall",
+ "Ethsmall",
+ "Ntildesmall",
+ "Ogravesmall",
+ "Oacutesmall",
+ "Ocircumflexsmall",
+ "Otildesmall",
+ "Odieresissmall",
+ "OEsmall",
+ "Oslashsmall",
+ "Ugravesmall",
+ "Uacutesmall",
+ "Ucircumflexsmall",
+ "Udieresissmall",
+ "Yacutesmall",
+ "Thornsmall",
+ "Ydieresissmall",
+ "001.000",
+ "001.001",
+ "001.002",
+ "001.003",
+ "Black",
+ "Bold",
+ "Book",
+ "Light",
+ "Medium",
+ "Regular",
+ "Roman",
+ "Semibold",
+ NULL
+};
+const int nStdStrings = sizeof(cffnames)/sizeof(cffnames[0])-1;
+
+void AltUniFigure(SplineFont *sf,EncMap *map,int check_dups) {
+ int i,gid;
+
+ if ( map->enc!=&custom ) {
+ for ( i=0; i<map->enccount; ++i ) if ( (gid = map->map[i])!=-1 ) {
+ int uni = UniFromEnc(i,map->enc);
+ if (check_dups)
+ AltUniAdd(sf->glyphs[gid],uni);
+ else
+ AltUniAdd_DontCheckDups(sf->glyphs[gid],uni);
+ }
+ }
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/parsettfatt.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/parsettfatt.c
new file mode 100644
index 00000000000..1b6a172a0e9
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/parsettfatt.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+
+int memushort(uint8 *data,int len, int offset) {
+ if ( offset>=0 && offset+1<len ) {
+ int ch1 = data[offset], ch2 = data[offset+1];
+return( (ch1<<8)|ch2 );
+ } else {
+ LogError( _("Bad font, offset out of bounds.\n") );
+return( 0 );
+ }
+}
+
+void memputshort(uint8 *data,int offset,uint16 val) {
+ data[offset] = (val>>8);
+ data[offset+1] = val&0xff;
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/psfont.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/psfont.h
new file mode 100644
index 00000000000..58f9c1c7752
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/psfont.h
@@ -0,0 +1,188 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _PSFONT_H_
+#define _PSFONT_H_
+
+#include "splinefont.h"
+
+/* pfb section headers.
+ There seem to be three and a half of them. the first is a the start of the
+ file and is 6 bytes long "\200\001x\005\000\000", the second is right after
+ the newline after eexec and is 6 bytes "\200\002I\224\000\000", the third
+ is right before the zeros (after the encoded data) and is "\200\001\024\002\000\000"
+ the last is at the end of file and is only two bytes "\200\003"
+ I think that the \200 byte indicates a header, the next byte is 1 for ascii,
+ 2 for binary and 3 for eof, then next 4 bytes are the length (not present
+ for eof headers) with the first byte the least significant.
+*/
+
+struct charprocs {
+ int cnt, next;
+ char **keys;
+ SplineChar **values;
+};
+
+struct fontinfo {
+ char *familyname;
+ char *fullname;
+ char *notice;
+ char *weight;
+ char *version;
+ real italicangle;
+ unsigned int isfixedpitch:1;
+ real underlineposition;
+ real underlinethickness;
+ int em, ascent, descent; /* Generated by Fontographer (and us) */
+ int fstype; /* 2=>no embedding, 4=>print, 8=>edit */
+ /* Multiple master */
+ char *blenddesignpositions;
+ char *blenddesignmap;
+ char *blendaxistypes;
+};
+
+struct private {
+ struct psdict *private;
+ struct pschars *subrs; /* (optional, required if othersubrs is present) */
+ /* 0-2 part of Flex, 3 hint replacement, 4 and up for charstrings */
+ int leniv; /* (optional) must be 4 for old interpreters (number of rand chars at start of charstrings entries) */
+/* int bluefuzz; /\* (optional) (expand bluezones by this much, def=1) *\/ */
+/* real bluescale; /\* (optional) if the current pointsize in pixels is less than this value then do overshoot hinting *\/ */
+/* int blueshift; /\* (optional) *\/ */
+/* real bluevalues[14]; /\* <=7 pairs of integers, first less than second, (may be empty) *\/ */
+/* /\* first pair is baseline overshoots, other pairs above baseline *\/ */
+/* real expansionfactor; /\* (optional) only for languagegroup==1 (CJK) *\/ */
+/* real familyblues[14]; /\* (optional) bluevalues for family, can override local entry at small pointsizes *\/ */
+/* real familyotherblues[10];/\* (optional) otherblues for family *\/ */
+/* unsigned int forcebold:1; /\* (optional) *\/ */
+/* int languagegroup; /\* (optional) (0=>latin, greek, cyril, etc.), (1=>CJK)*\/ */
+/* int leniv; /\* (optional) must be 4 for old interpreters (number of rand chars at start of charstrings entries) *\/ */
+/* char *minfeature; /\* obsolete, required must be {16 16} *\/ */
+/* char *nd; /\* "noaccess def" (may also be named "|-") *\/ */
+/* char *np; /\* "noaccess put" (may also be named "|") *\/ */
+/* real otherblues[10]; /\* (optional) descender blue zones *\/ */
+/* struct pschars *othersubrs; /\* (optional) shouldn't contain user defined subs *\/ */
+/* int password; /\* obsolete, required must be 5839 *\/ */
+/* char *rd; /\* "{string currentfile exch readstring pop}" (may also be named "-|") *\/ */
+/* unsigned int rndstemup:1; /\* (optional) obsolete, false if languagegroud==1 *\/ */
+/* real stdhw[1]; /\* (optional) dominant horizontal stem width *\/ */
+/* real stdvw[1]; /\* (optional) dominant vert *\/ */
+/* real stemsnaph[12]; /\* (optional) common h stem widths (at most 12, includes stdhw, sorted by increasing size) *\/ */
+/* real stemsnapv[12]; /\* (optional) common v stem widths*\/ */
+/* struct pschars *subrs; /\* (optional, required if othersubrs is present) *\/ */
+/* /\* 0-2 part of Flex, 3 hint replacement, 4 and up for charstrings *\/ */
+/* int uniqueid; /\* (optional) seems same as fontdict entry. why's it here too? what of XUID? *\/ */
+/* /\* CID entries *\/ */
+/* int subrmapoffset; /\* Offset to the start of this font's subr strings map *\/ */
+/* int sdbytes; /\* bytes in each pointer in the map *\/ */
+/* int subrcnt; /\* number of subroutines, number of pointers-1 in the map *\/ */
+};
+
+typedef struct fontdict {
+ int fonttype;
+ real fontmatrix[6];
+ char *fontname; /* (optional) */
+ struct fontinfo *fontinfo;
+ int languagelevel; /* (optional) */
+ int wmode; /* (optional) chooses between alternate metric sets */
+/* non-type0 entries */
+ char (*encoding[256]);
+ real fontbb[4];
+ int uniqueid; /* (optional) open range between 4,000,000 and 4,999,999 */
+ int xuid[20]; /* (optional) */
+/* Type1 specific values */
+ int painttype; /* 0 (filled) 2 (stroked) */
+ real strokewidth; /* (optional) only if painttype==2 */
+ struct psdict *metrics; /* (optional) */
+ struct psdict *metrics2; /* (optional) */
+ struct pschars *chars;
+ struct charprocs *charprocs;
+ struct private *private;
+ unsigned int wasbinary: 1;
+ unsigned int wascff: 1;
+ Encoding *encoding_name;
+/* CID stuff */
+ int fdcnt; /* For the underlying dictionaries */
+ struct fontdict **fds;
+ char *cidfontname;
+ int cidfonttype;
+ real cidversion;
+ char *registry;
+ char *ordering;
+ int supplement;
+ int mapoffset;
+ int fdbytes;
+ int gdbytes;
+ int cidcnt;
+ uint8 **cidstrs;
+ int16 *cidlens;
+ int16 *cidfds;
+/* CFF stuff */
+ struct splinefont *sf;
+/* MM stuff */
+ char *blendfunc;
+ char *weightvector;
+ char *cdv;
+ char *ndv;
+ struct psdict *blendprivate;
+ struct psdict *blendfontinfo;
+ long long creationtime; /* seconds since 1970 */
+ long long modificationtime;
+} FontDict;
+
+struct fddata {
+ int leniv;
+ int subrmapoff, sdbytes, subrcnt;
+ int flexmax;
+ unsigned int iscjk:1;
+ struct pschars *subrs;
+};
+
+struct cidbytes {
+ int fdbytes, gdbytes, cidcnt;
+ int cidmapoffset;
+ int fdcnt;
+ struct fddata *fds;
+ int *fdind;
+ int errors;
+};
+
+struct fd2data {
+ int defwid, nomwid; /* For Type2 charstrings */
+ struct pschars *subrs;
+ FILE *private; /* Subroutines get stored in the private file immediately after the private dict */
+ int eodictmark, fillindictmark;
+ int privatelen;
+};
+
+extern const char (*AdobeStandardEncoding[256]);
+extern const char (*AdobeExpertEncoding[256]);
+extern int copymetadata, copyttfinstr;
+
+extern FontDict *_ReadPSFont(FILE *ps);
+extern FontDict *ReadPSFont(char *fontname);
+extern void PSFontFree(FontDict *fd);
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/psread.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/psread.c
new file mode 100644
index 00000000000..5c5a52ed64f
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/psread.c
@@ -0,0 +1,73 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include "sd.h"
+#ifdef HAVE_IEEEFP_H
+# include <ieeefp.h> /* Solaris defines isnan in ieeefp rather than math.h */
+#endif
+
+typedef struct _io {
+ const char *macro;
+ char *start;
+ FILE *ps, *fog;
+ char fogbuf[60];
+ int backedup, cnt, isloop, isstopped, fogns;
+ struct _io *prev;
+} _IO;
+
+typedef struct io {
+ struct _io *top;
+ int endedstopped;
+ int advance_width; /* Can be set from a PS comment by MF2PT1 */
+} IO;
+
+#define GARBAGE_MAX 64
+
+/* length (of string)
+ fill eofill stroke
+ gsave grestore
+*/
+
+void MatMultiply(real m1[6], real m2[6], real to[6]) {
+ real trans[6];
+
+ trans[0] = m1[0]*m2[0] +
+ m1[1]*m2[2];
+ trans[1] = m1[0]*m2[1] +
+ m1[1]*m2[3];
+ trans[2] = m1[2]*m2[0] +
+ m1[3]*m2[2];
+ trans[3] = m1[2]*m2[1] +
+ m1[3]*m2[3];
+ trans[4] = m1[4]*m2[0] +
+ m1[5]*m2[2] +
+ m2[4];
+ trans[5] = m1[4]*m2[1] +
+ m1[5]*m2[3] +
+ m2[5];
+ memcpy(to,trans,sizeof(trans));
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/pua.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/pua.c
new file mode 100644
index 00000000000..3e7582829bf
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/pua.c
@@ -0,0 +1,1612 @@
+/* A number of encodings use the public use area to map to glyphs that are */
+/* defined in planes other than the BMP (chinese), or just multiple encodings*/
+/* for the same glyph (ams) */
+
+/* These data are taken from http://www.ams.org/STIX/bnb/stix-tbl.asc-2003-10-10 */
+const int amspua[] = {
+/* E000 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E008 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E010 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E018 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E020 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E028 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E030 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E038 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E040 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E048 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E050 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E058 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E060 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E068 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E070 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E078 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E080 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E088 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E090 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E098 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E100 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E108 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E110 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E118 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E120 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E128 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E130 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E138 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E140 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E148 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E150 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E158 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E160 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E168 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E170 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E178 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E180 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E188 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E190 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E198 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E1A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E1A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E1B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E1B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E1C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E1C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E1D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E1D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E1E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E1E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E1F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E1F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E200 */ 0x027f8, 0x027f5, 0x027fa, 0x027f7, 0x027f9, 0x027f6, 0x0290e, 0x0290f,
+/* E208 */ 0x027fc, 0x02910, 0x02926, 0x02925, 0x02923, 0x02924, 0x02928, 0x02929,
+/* E210 */ 0x0292a, 0x02927, 0x02905, 0x0, 0x0297c, 0x0297d, 0x021f5, 0x0296f,
+/* E218 */ 0x0296e, 0x02937, 0x02936, 0x0, 0x02933, 0x0, 0x02945, 0x02946,
+/* E220 */ 0x0291f, 0x02920, 0x0291d, 0x0291e, 0x02964, 0x02962, 0x02963, 0x02965,
+/* E228 */ 0x0294b, 0x0294a, 0x02968, 0x02966, 0x02967, 0x02969, 0x0296a, 0x0296d,
+/* E230 */ 0x0296c, 0x0296b, 0x02192, 0x02190, 0x02972, 0x02975, 0x02971, 0x02949,
+/* E238 */ 0x02911, 0x02916, 0x0291a, 0x0291c, 0x02919, 0x0291b, 0x02938, 0x02939,
+/* E240 */ 0x02948, 0x021fe, 0x021fd, 0x021ff, 0x021dd, 0x02904, 0x02903, 0x02902,
+/* E248 */ 0x0237c, 0x0293c, 0x0293d, 0x0297e, 0x0297f, 0x02974, 0x02973, 0x02af0,
+/* E250 */ 0x02aef, 0x02a3f, 0x0, 0x0, 0x02a00, 0x02a01, 0x02a02, 0x02a06,
+/* E258 */ 0x02a04, 0x02a3c, 0x02a25, 0x02a2a, 0x02a2d, 0x02a2e, 0x02a34, 0x02a35,
+/* E260 */ 0x029b5, 0x02a40, 0x02abd, 0x02abe, 0x02a33, 0x02a5f, 0x02a22, 0x02a72,
+/* E268 */ 0x02a71, 0x02a27, 0x02a23, 0x02a24, 0x02a26, 0x02a30, 0x02a46, 0x02a47,
+/* E270 */ 0x02a48, 0x02a49, 0x02a4a, 0x02a4b, 0x0, 0x0, 0x0, 0x0,
+/* E278 */ 0x02a4c, 0x02a4d, 0x02a50, 0x02a39, 0x02a3a, 0x02a3b, 0x029cd, 0x029c4,
+/* E280 */ 0x029c5, 0x02a44, 0x02a45, 0x02a42, 0x02a43, 0x02a38, 0x029bc, 0x029bf,
+/* E288 */ 0x029c0, 0x029c1, 0x029b7, 0x029b9, 0x02a37, 0x02a36, 0x02a31, 0x0,
+/* E290 */ 0x0, 0x02994, 0x02993, 0x023b1, 0x023b0, 0x02996, 0x02995, 0x02991,
+/* E298 */ 0x02992, 0x0298b, 0x0298c, 0x0298d, 0x0298e, 0x0298f, 0x02990, 0x02a8a,
+/* E2A0 */ 0x02a88, 0x02269, 0x02a89, 0x02a87, 0x02268, 0x02271, 0x02271, 0x02270,
+/* E2A8 */ 0x02270, 0x0, 0x02224, 0x02226, 0x02284, 0x02288, 0x02288, 0x02285,
+/* E2B0 */ 0x02289, 0x02289, 0x02ab9, 0x02ab5, 0x02aba, 0x02ab6, 0x02acb, 0x02acc,
+/* E2B8 */ 0x02acb, 0x0228a, 0x0228b, 0x02acc, 0x0, 0x0, 0x0, 0x0,
+/* E2C0 */ 0x0, 0x02270, 0x02271, 0x0226e, 0x0226f, 0x0, 0x02249, 0x0,
+/* E2C8 */ 0x02af3, 0x0f423, 0x0f428, 0x0, 0x0, 0x0, 0x0, 0x022ed,
+/* E2D0 */ 0x022ec, 0x02aee, 0x0, 0x0, 0x0, 0x0210f, 0x029a4, 0x029a5,
+/* E2D8 */ 0x0, 0x029a8, 0x029a9, 0x029aa, 0x029ab, 0x029ac, 0x029ad, 0x029ae,
+/* E2E0 */ 0x029af, 0x0299d, 0x025f9, 0x0, 0x025f8, 0x025fa, 0x029c9, 0x029b1,
+/* E2E8 */ 0x029b2, 0x029b3, 0x029b4, 0x0299a, 0x0ee39, 0x0204f, 0x023b5, 0x023b4,
+/* E2F0 */ 0x023b6, 0x029c2, 0x029c3, 0x0, 0x02a86, 0x02a8c, 0x02a7e, 0x02aa2,
+/* E2F8 */ 0x02a85, 0x02a8b, 0x02a7d, 0x02aa1, 0x0, 0x02ab7, 0x02aaf, 0x02ab8,
+/* E300 */ 0x02ab0, 0x02223, 0x02225, 0x02323, 0x02ac5, 0x02ac6, 0x02248, 0x0,
+/* E308 */ 0x0, 0x02a77, 0x02adb, 0x02a9d, 0x02a9e, 0x02aeb, 0x02a74, 0x02ae4,
+/* E310 */ 0x02ae8, 0x02ae7, 0x02ae9, 0x02ae6, 0x02a6d, 0x02a70, 0x02aae, 0x02a73,
+/* E318 */ 0x02a78, 0x02a66, 0x02a29, 0x02ad9, 0x02ada, 0x02a7f, 0x02a80, 0x02a81,
+/* E320 */ 0x02a82, 0x02a83, 0x02a84, 0x02a97, 0x02a98, 0x02a79, 0x02a7a, 0x0,
+/* E328 */ 0x0, 0x02a7b, 0x02a7c, 0x022da, 0x022db, 0x02a91, 0x02a92, 0x02aa4,
+/* E330 */ 0x02aa5, 0x02a93, 0x02a94, 0x02a8d, 0x02a8e, 0x02a8f, 0x02a90, 0x02a9f,
+/* E338 */ 0x02aa0, 0x02aaa, 0x02aab, 0x02aac, 0x02aad, 0x0, 0x0, 0x02979,
+/* E340 */ 0x0297b, 0x02abf, 0x02ac0, 0x02ac1, 0x02ac2, 0x02ac7, 0x02ac8, 0x02ad3,
+/* E348 */ 0x02ad4, 0x02ad5, 0x02ad6, 0x02ad7, 0x02ad8, 0x0ee40, 0x0ee41, 0x02ac3,
+/* E350 */ 0x02ac4, 0x02acf, 0x02ad0, 0x02ad1, 0x02ad2, 0x02aa6, 0x02aa7, 0x02aa8,
+/* E358 */ 0x02aa9, 0x029ce, 0x02ab3, 0x02ab4, 0x02abb, 0x02abc, 0x02976, 0x02978,
+/* E360 */ 0x0, 0x02218, 0x0, 0x022a5, 0x1d453, 0x021d4, 0x0, 0x0,
+/* E368 */ 0x0, 0x0, 0x0204e, 0x0, 0x0220c, 0x0220c, 0x02a55, 0x02a56,
+/* E370 */ 0x02209, 0x02057, 0x029dc, 0x0299c, 0x02a53, 0x02a54, 0x02a15, 0x02a16,
+/* E378 */ 0x02a0c, 0x0, 0x0, 0x022f7, 0x022f6, 0x022fe, 0x022fd, 0x001b5,
+/* E380 */ 0x0ee44, 0x0ee45, 0x02afd, 0x02af1, 0x029e3, 0x029e4, 0x029e5, 0x0,
+/* E388 */ 0x0, 0x0, 0x0, 0x02a6a, 0x02a6f, 0x02af2, 0x029de, 0x029dd,
+/* E390 */ 0x0, 0x02a5a, 0x02a5b, 0x02a5d, 0x02a5c, 0x02a10, 0x02a0d, 0x02a12,
+/* E398 */ 0x02a13, 0x02a14, 0x02a17, 0x02a11, 0x022f5, 0x0, 0x022f9, 0x0,
+/* E3A0 */ 0x022f2, 0x022fa, 0x022f3, 0x022fb, 0x022f4, 0x022fc, 0x0ee46, 0x0ee47,
+/* E3A8 */ 0x029bb, 0x02052, 0x029a6, 0x029a7, 0x02aec, 0x02aed, 0x02a57, 0x02a58,
+/* E3B0 */ 0x02a61, 0x02218, 0x0ee24, 0x0, 0x02026, 0x0ee30, 0x00308, 0x02aea,
+/* E3B8 */ 0x022f8, 0x0, 0x0, 0x0, 0x02209, 0x02275, 0x02274, 0x0,
+/* E3C0 */ 0x02053, 0x0, 0x0, 0x0, 0x02ae2, 0x0, 0x0, 0x0299f,
+/* E3C8 */ 0x029e1, 0x0, 0x02a51, 0x02a52, 0x003b1, 0x0026b, 0x0, 0x0,
+/* E3D0 */ 0x003c3, 0x00067, 0x025aa, 0x02a0f, 0x022bd, 0x0007c, 0x02934, 0x02935,
+/* E3D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E3E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E3E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E3F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E3F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E400 */ 0x0, 0x0, 0x0290c, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E408 */ 0x0, 0x029be, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E410 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x02241, 0x0, 0x0,
+/* E418 */ 0x0, 0x0, 0x029b0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E420 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E428 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E430 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E438 */ 0x0, 0x0, 0x0, 0x0ee3b, 0x0ee3c, 0x0, 0x0, 0x0,
+/* E440 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E448 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E450 */ 0x00308, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E458 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E460 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E468 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E470 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E478 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E480 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E488 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E490 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E498 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4F8 */ 0x0, 0x02423, 0x0, 0x0, 0x0ee31, 0x0, 0x0, 0x0ee32,
+/* E500 */ 0x1d538, 0x1d539, 0x02102, 0x1d53b, 0x1d53c, 0x1d53d, 0x1d53e, 0x0210d,
+/* E508 */ 0x1d540, 0x1d541, 0x1d542, 0x1d543, 0x1d544, 0x02115, 0x1d546, 0x02119,
+/* E510 */ 0x0211a, 0x0211d, 0x1d54a, 0x1d54b, 0x1d54c, 0x1d54d, 0x1d54e, 0x1d54f,
+/* E518 */ 0x1d550, 0x02124, 0x0213f, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E520 */ 0x1d49c, 0x0212c, 0x1d49e, 0x1d49f, 0x02130, 0x02131, 0x1d4a2, 0x0210b,
+/* E528 */ 0x02110, 0x1d4a5, 0x1d4a6, 0x02112, 0x02133, 0x1d4a9, 0x1d4aa, 0x1d4ab,
+/* E530 */ 0x1d4ac, 0x0211b, 0x1d4ae, 0x1d4af, 0x1d4b0, 0x1d4b1, 0x1d4b2, 0x1d4b3,
+/* E538 */ 0x1d4b4, 0x1d4b5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E540 */ 0x1d4b6, 0x1d4b7, 0x1d4b8, 0x1d4b9, 0x0212f, 0x1d4bb, 0x0210a, 0x1d4bd,
+/* E548 */ 0x1d4be, 0x1d4bf, 0x1d4c0, 0x02113, 0x1d4c2, 0x1d4c3, 0x02134, 0x1d4c5,
+/* E550 */ 0x1d4c6, 0x1d4c7, 0x1d4c8, 0x1d4c9, 0x1d4ca, 0x1d4cb, 0x1d4cc, 0x1d4cd,
+/* E558 */ 0x1d4ce, 0x1d4cf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E560 */ 0x1d504, 0x1d505, 0x1d506, 0x1d507, 0x1d508, 0x1d509, 0x1d50a, 0x0210c,
+/* E568 */ 0x02111, 0x1d50d, 0x1d50e, 0x1d50f, 0x1d510, 0x1d511, 0x1d512, 0x1d513,
+/* E570 */ 0x1d514, 0x0211c, 0x1d516, 0x1d517, 0x1d518, 0x1d519, 0x1d51a, 0x1d51b,
+/* E578 */ 0x1d51c, 0x12128, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E580 */ 0x1d51e, 0x1d51f, 0x1d520, 0x1d521, 0x1d522, 0x1d523, 0x1d524, 0x1d525,
+/* E588 */ 0x1d526, 0x1d527, 0x1d528, 0x1d529, 0x1d52a, 0x1d52b, 0x1d52c, 0x1d52d,
+/* E590 */ 0x1d52e, 0x1d52f, 0x1d530, 0x1d531, 0x1d532, 0x1d533, 0x1d534, 0x1d535,
+/* E598 */ 0x1d536, 0x1d537, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E5A0 */ 0x02942, 0x02944, 0x02947, 0x02940, 0x02941, 0x0, 0x0, 0x0,
+/* E5A8 */ 0x02985, 0x0, 0x02980, 0x0, 0x0ec01, 0x0, 0x0, 0x02986,
+/* E5B0 */ 0x02af6, 0x0, 0x02999, 0x0, 0x0ee33, 0x0ee34, 0x0ee35, 0x0ee36,
+/* E5B8 */ 0x025a9, 0x0ee37, 0x0ee38, 0x0, 0x0ee80, 0x0, 0x0, 0x02222,
+/* E5C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x02a08, 0x02a07, 0x02a63,
+/* E5C8 */ 0x02a5e, 0x0, 0x029ca, 0x0, 0x0, 0x0, 0x0, 0x02a95,
+/* E5D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E5D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x02a96,
+/* E5E0 */ 0x0, 0x0, 0x0, 0x0, 0x0e84e, 0x0, 0x0, 0x0ee50,
+/* E5E8 */ 0x0ee51, 0x0ee52, 0x0ee53, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E5F0 */ 0x0, 0x0, 0x0ee3a, 0x0, 0x0ee54, 0x0, 0x0ee55, 0x0ee56,
+/* E5F8 */ 0x0ee57, 0x0ee58, 0x0, 0x0ee59, 0x0ee5a, 0x0ee5b, 0x029f8, 0x029f9,
+/* E600 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0ee5c, 0x0ee5d, 0x0ee5e,
+/* E608 */ 0x0ee5f, 0x0ee60, 0x0ee61, 0x0ee62, 0x0224c, 0x0224c, 0x0, 0x029cb,
+/* E610 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E618 */ 0x0, 0x02a2f, 0x0, 0x029b6, 0x0, 0x0, 0x0, 0x0,
+/* E620 */ 0x0, 0x0, 0x0, 0x02205, 0x0ee10, 0x00326, 0x000b7, 0x0,
+/* E628 */ 0x0, 0x003f5, 0x0, 0x0, 0x0, 0x0ee14, 0x00061, 0x0,
+/* E630 */ 0x0ee15, 0x0, 0x0ee18, 0x0ee19, 0x0ee1a, 0x0ee1b, 0x0ee1c, 0x0,
+/* E638 */ 0x0ee1d, 0x0ee1e, 0x0026e, 0x0, 0x002af, 0x0, 0x00235, 0x00236,
+/* E640 */ 0x0ee1f, 0x00221, 0x0ee12, 0x02afd, 0x0ee20, 0x0, 0x0, 0x02afb,
+/* E648 */ 0x0, 0x0, 0x0005c, 0x0ee13, 0x0ee16, 0x0, 0x0, 0x0,
+/* E650 */ 0x021f9, 0x0, 0x0, 0x0, 0x0e215, 0x0, 0x0, 0x0,
+/* E658 */ 0x0, 0x1d5b2, 0x0, 0x02a05, 0x0, 0x0, 0x0, 0x0,
+/* E660 */ 0x003d8, 0x003d9, 0x0223c, 0x003d2, 0x003f4, 0x0, 0x0, 0x0,
+/* E668 */ 0x00062, 0x00063, 0x00064, 0x00065, 0x00066, 0x00068, 0x00069, 0x0006a,
+/* E670 */ 0x0006b, 0x0006c, 0x0006d, 0x0006e, 0x0006f, 0x00070, 0x00071, 0x00072,
+/* E678 */ 0x00073, 0x00074, 0x00075, 0x00076, 0x00077, 0x00078, 0x00079, 0x0007a,
+/* E680 */ 0x0030f, 0x003c7, 0x003b2, 0x001a5, 0x01d1c, 0x01d07, 0x0004d, 0x0002f,
+/* E688 */ 0x01d00, 0x0029c, 0x0e2d4, 0x003b8, 0x003bb, 0x02260, 0x00110, 0x003c9,
+/* E690 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E698 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6A0 */ 0x0ee17, 0x0ee70, 0x0ee71, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E700 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E708 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E710 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E718 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E720 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E728 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E730 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E738 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E740 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E748 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E750 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E758 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E760 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E768 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E770 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E778 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E780 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E788 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E790 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E798 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E800 */ 0x003f6, 0x0213f, 0x0, 0x1d7d9, 0x1d7d8, 0x02a03, 0x0, 0x0,
+/* E808 */ 0x0, 0x02a09, 0x0290d, 0x029eb, 0x0, 0x029c6, 0x0, 0x0,
+/* E810 */ 0x029c7, 0x0, 0x02a32, 0x02ae3, 0x0, 0x0, 0x0, 0x0,
+/* E818 */ 0x0, 0x029df, 0x02adc, 0x02add, 0x02141, 0x0, 0x0, 0x0,
+/* E820 */ 0x0, 0x02a0e, 0x02a19, 0x02a1a, 0x02af4, 0x02a18, 0x0, 0x0,
+/* E828 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x027fb, 0x027fd, 0x0,
+/* E830 */ 0x027fe, 0x0, 0x0, 0x0, 0x02906, 0x02907, 0x0, 0x0,
+/* E838 */ 0x0, 0x029b8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E840 */ 0x02aa3, 0x0, 0x0, 0x02322, 0x02216, 0x0, 0x0214b, 0x0221d,
+/* E848 */ 0x0, 0x00303, 0x0, 0x0, 0x0, 0x0, 0x0e84e, 0x0,
+/* E850 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E858 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E860 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E868 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E870 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E878 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E880 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E888 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E890 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E898 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E8A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E8A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E8B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E8B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E8C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E8C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E8D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E8D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E8E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E8E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E8F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E8F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E900 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E908 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E910 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E918 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E920 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E928 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E930 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E938 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E940 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E948 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E950 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E958 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E960 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E968 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E970 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E978 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E980 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E988 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E990 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E998 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA00 */ 0x029a2, 0x0299e, 0x029a3, 0x0ee73, 0x0ee74, 0x0, 0x0ee75, 0x02943,
+/* EA08 */ 0x02051, 0x00319, 0x0ee11, 0x0, 0x0ee76, 0x0, 0x0, 0x0,
+/* EA10 */ 0x0, 0x029f3, 0x029f1, 0x0, 0x0, 0x029bd, 0x029ec, 0x029ed,
+/* EA18 */ 0x0, 0x029ba, 0x02050, 0x0ee77, 0x029ef, 0x0, 0x0, 0x0,
+/* EA20 */ 0x0, 0x0, 0x025a0, 0x0, 0x0, 0x0223c, 0x0ee21, 0x0ee22,
+/* EA28 */ 0x029ea, 0x02908, 0x0ee72, 0x0, 0x0ee78, 0x0ee79, 0x0ee7a, 0x0ee7b,
+/* EA30 */ 0x0ee7c, 0x0ee7d, 0x0ee23, 0x0, 0x0, 0x0, 0x0, 0x0ee7e,
+/* EA38 */ 0x0, 0x0, 0x0, 0x0, 0x02142, 0x029e0, 0x0293e, 0x029d1,
+/* EA40 */ 0x029d4, 0x0, 0x0, 0x02983, 0x02922, 0x02921, 0x029f2, 0x029f0,
+/* EA48 */ 0x029ee, 0x0, 0x029d6, 0x02034, 0x021f6, 0x0293b, 0x029d2, 0x029d5,
+/* EA50 */ 0x02984, 0x02143, 0x1d5ab, 0x0ee42, 0x0ee43, 0x025fb, 0x025fc, 0x02a0b,
+/* EA58 */ 0x020e8, 0x0297a, 0x02a28, 0x029cc, 0x02909, 0x0ee7f, 0x02144, 0x029c8,
+/* EA60 */ 0x027d0, 0x029d3, 0x029d7, 0x00318, 0x02977, 0x02278, 0x02279, 0x0,
+/* EA68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAA0 */ 0x02987, 0x02988, 0x02989, 0x0298a, 0x02982, 0x02a3e, 0x02a1f, 0x02a20,
+/* EAA8 */ 0x02040, 0x02a21, 0x02a64, 0x02a65, 0x022ff, 0x02a41, 0x020e6, 0x0,
+/* EAB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAD0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAD8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB00 */ 0x0ee3d, 0x0, 0x0ee3e, 0x029e7, 0x0ee81, 0x029e8, 0x029e9, 0x0,
+/* EB08 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB10 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB20 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB40 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB58 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB60 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EB98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EBA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EBA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EBB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EBB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EBC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EBC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EBD0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EBD8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EBE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EBE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EBF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EBF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC00 */ 0x02a3d, 0x0e5ac, 0x0e5a5, 0x00302, 0x0030c, 0x00330, 0x020e7, 0x029e2,
+/* EC08 */ 0x0290a, 0x0290b, 0x02140, 0x02a1b, 0x02a1c, 0x02a1d, 0x02a1e, 0x0,
+/* EC10 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC20 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC40 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC58 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC60 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EC98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECD0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECD8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED00 */ 0x0292b, 0x0292c, 0x0292d, 0x0292e, 0x0292f, 0x02930, 0x02931, 0x02932,
+/* ED08 */ 0x0294c, 0x0294d, 0x021f7, 0x021f8, 0x021fa, 0x0, 0x021fb, 0x021fc,
+/* ED10 */ 0x02900, 0x02901, 0x02914, 0x02915, 0x02917, 0x02918, 0x0, 0x0,
+/* ED18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED20 */ 0x0293f, 0x0293a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED30 */ 0x0e370, 0x0e36c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED40 */ 0x0, 0x0, 0x02a2c, 0x02a2b, 0x02a62, 0x02a60, 0x0, 0x0,
+/* ED48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED50 */ 0x02a6b, 0x0, 0x0, 0x02a6c, 0x0, 0x0, 0x0, 0x0,
+/* ED58 */ 0x0, 0x0, 0x02a67, 0x0, 0x0, 0x0, 0x02a76, 0x0,
+/* ED60 */ 0x02270, 0x02271, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED68 */ 0x02a99, 0x02a9a, 0x02a9b, 0x02a9c, 0x0, 0x0, 0x0, 0x0,
+/* ED70 */ 0x02272, 0x02273, 0x02a9d, 0x02a9e, 0x02ab1, 0x02ab2, 0x0, 0x0,
+/* ED78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED80 */ 0x02ac9, 0x02aca, 0x02288, 0x02289, 0x02a59, 0x02a4e, 0x02a4f, 0x02acd,
+/* ED88 */ 0x02ace, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED90 */ 0x02ae0, 0x02ade, 0x02adf, 0x02ae5, 0x02ae1, 0x0299b, 0x029a0, 0x029a1,
+/* ED98 */ 0x0, 0x02af5, 0x02a68, 0x02a69, 0x02af7, 0x02af8, 0x02a0a, 0x0213e,
+/* EDA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDD0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDD8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDF0 */ 0x0ee82, 0x0ee83, 0x0ee84, 0x0220a, 0x0220d, 0x0ee85, 0x0, 0x0,
+/* EDF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE00 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE08 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE10 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE20 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE40 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE58 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE60 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EED0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EED8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF00 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF08 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF10 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF20 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF40 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF58 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF60 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFD0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFD8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F000 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F008 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F010 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F018 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F020 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F028 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F030 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F038 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F040 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F048 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F050 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F058 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F060 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F068 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F070 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F078 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F080 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F088 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F090 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F098 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F100 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F108 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F110 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F118 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F120 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F128 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F130 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F138 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F140 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F148 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F150 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F158 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F160 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F168 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F170 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F178 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F180 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F188 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F190 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F198 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F200 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F208 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F210 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F218 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F220 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F228 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F230 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F238 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F240 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F248 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F250 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F258 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F260 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F268 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F270 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F278 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F280 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F288 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F290 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F298 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F300 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F308 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F310 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F318 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F320 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F328 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F330 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F338 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F340 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F348 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F350 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F358 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F360 */ 0x0, 0x0, 0x0, 0x0, 0x0205f, 0x0, 0x0, 0x0,
+/* F368 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F370 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F378 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F380 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F388 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F390 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F398 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3B0 */ 0x0, 0x0, 0x0ee90, 0x0, 0x0, 0x0, 0x02062, 0x02061,
+/* F3B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F400 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F408 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F410 */ 0x029cf, 0x029d0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F418 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F420 */ 0x0, 0x0, 0x0, 0x0f423, 0x0, 0x0, 0x0, 0x0,
+/* F428 */ 0x0f428, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F430 */ 0x0, 0x02a75, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F438 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F440 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F448 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F450 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F458 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F460 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F468 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F470 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F478 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F480 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F488 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F490 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F498 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F4A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F4A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F4B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F4B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F4C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F4C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F4D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F4D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F4E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F4E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F4F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F4F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F500 */ 0x0, 0x0, 0x0, 0x02912, 0x02913, 0x0294e, 0x0, 0x02952,
+/* F508 */ 0x02953, 0x0295a, 0x0295b, 0x02950, 0x02956, 0x02957, 0x0295e, 0x0295f,
+/* F510 */ 0x0294f, 0x02954, 0x02955, 0x0295c, 0x0295d, 0x02951, 0x02958, 0x02959,
+/* F518 */ 0x02960, 0x02961, 0x0, 0x0, 0x0, 0x0, 0x0, 0x029f4,
+/* F520 */ 0x0ee05, 0x0, 0x0, 0x0, 0x02970, 0x0, 0x0, 0x0ee06,
+/* F528 */ 0x0ee07, 0x025fe, 0x02191, 0x02193, 0x0, 0x0, 0x0, 0x0,
+/* F530 */ 0x025fd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F538 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F540 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F548 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F550 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F558 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F560 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F568 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F570 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F578 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F580 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F588 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F590 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F598 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F600 */ 0x0, 0x0ee91, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F608 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F610 */ 0x0, 0x0, 0x0, 0x0, 0x00346, 0x0033a, 0x0, 0x0,
+/* F618 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F620 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F628 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F630 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F638 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F640 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F648 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F650 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F658 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F660 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F668 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F670 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F678 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F680 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F688 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F690 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F698 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d552, 0x1d553,
+/* F6E8 */ 0x1d554, 0x1d555, 0x1d556, 0x1d557, 0x1d558, 0x1d559, 0x1d55a, 0x1d55b,
+/* F6F0 */ 0x1d55c, 0x1d55d, 0x1d55e, 0x1d55f, 0x1d560, 0x1d561, 0x1d562, 0x1d563,
+/* F6F8 */ 0x1d564, 0x1d565, 0x1d566, 0x1d567, 0x1d568, 0x1d569, 0x1d56a, 0x1d56b,
+/* F700 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F708 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F710 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F718 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F720 */ 0x0, 0x0ee92, 0x0ee93, 0x0ee94, 0x0, 0x026a0, 0x0, 0x0,
+/* F728 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F730 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F738 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F740 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F748 */ 0x0, 0x0ee00, 0x0213d, 0x02145, 0x02146, 0x02147, 0x02148, 0x02149,
+/* F750 */ 0x02981, 0x0ee95, 0x0ee96, 0x0ee97, 0x0, 0x0, 0x0ee98, 0x0ee99,
+/* F758 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F760 */ 0x0, 0x0, 0x0, 0x0ee9d, 0x0ee9a, 0x0, 0x0ee9e, 0x0ee9b,
+/* F768 */ 0x0ee9c, 0x0ee9f, 0x0eea0, 0x0eeab, 0x0eeac, 0x0, 0x0, 0x0,
+/* F770 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F778 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F780 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F788 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F790 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F798 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0eea1, 0x0eea2,
+/* F7C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7D0 */ 0x0eea3, 0x0eea4, 0x0eea5, 0x0eea6, 0x0eea7, 0x0eea8, 0x0eea9, 0x0eeaa,
+/* F7D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F800 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F808 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F810 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F818 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F820 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F828 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F830 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F838 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F840 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F848 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F850 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F858 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F860 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F868 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F870 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F878 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F880 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F888 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F890 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F898 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+};
+
+/* These data are taken from adobe's cid2code.txt for ac14 */
+const int cns14pua[] = { /* Big5 and friends */
+/* E000 */ 0x20547, 0x0, 0x205df, 0x23fc5, 0x0, 0x0, 0x0, 0x0,
+/* E008 */ 0x0, 0x24942, 0x289e4, 0x0, 0x219db, 0x0, 0x23cc8, 0x0,
+/* E010 */ 0x0, 0x0, 0x24933, 0x289aa, 0x202a0, 0x26bb3, 0x21305, 0x0,
+/* E018 */ 0x224ed, 0x0, 0x26d29, 0x27a84, 0x23600, 0x24ab1, 0x22513, 0x0,
+/* E020 */ 0x2037e, 0x0, 0x20380, 0x20347, 0x0, 0x2041f, 0x0, 0x0,
+/* E028 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x249a4, 0x20487, 0x0,
+/* E030 */ 0x233b4, 0x0, 0x20bff, 0x220fc, 0x202e5, 0x22530, 0x2058e, 0x23233,
+/* E038 */ 0x21983, 0x0, 0x0, 0x205b3, 0x23c99, 0x0, 0x0, 0x0,
+/* E040 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x24aa6, 0x0, 0x0,
+/* E048 */ 0x0, 0x0, 0x0, 0x0, 0x2372d, 0x0, 0x0, 0x0,
+/* E050 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E058 */ 0x0, 0x0, 0x26b13, 0x0, 0x28ade, 0x0, 0x0, 0x23f80,
+/* E060 */ 0x20954, 0x23fec, 0x0, 0x0, 0x20be2, 0x0, 0x21726, 0x0,
+/* E068 */ 0x0, 0x0, 0x0, 0x0, 0x216e8, 0x0, 0x0, 0x0,
+/* E070 */ 0x0, 0x286ab, 0x0, 0x0, 0x21596, 0x21613, 0x0, 0x0,
+/* E078 */ 0x28a9b, 0x0, 0x0, 0x0, 0x0, 0x25772, 0x0, 0x0,
+/* E080 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20b8f,
+/* E088 */ 0x0, 0x23feb, 0x22da3, 0x0, 0x20c77, 0x0, 0x0, 0x0,
+/* E090 */ 0x0, 0x0, 0x0, 0x26b53, 0x20d74, 0x0, 0x0, 0x0,
+/* E098 */ 0x0, 0x2170d, 0x20edd, 0x0, 0x20d4d, 0x289bc, 0x22698, 0x0,
+/* E0A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x218d7, 0x2403a,
+/* E0A8 */ 0x0, 0x24435, 0x0, 0x210b4, 0x0, 0x0, 0x2328a, 0x0,
+/* E0B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0B8 */ 0x0, 0x0, 0x28b66, 0x0, 0x2124f, 0x0, 0x241a5, 0x0,
+/* E0C0 */ 0x0, 0x0, 0x0, 0x26c7e, 0x0, 0x21416, 0x0, 0x21454,
+/* E0C8 */ 0x24363, 0x0, 0x24bf5, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0D0 */ 0x2123c, 0x0, 0x0, 0x0, 0x2a150, 0x24278, 0x0, 0x0,
+/* E0D8 */ 0x0, 0x0, 0x0, 0x0, 0x2163e, 0x0, 0x0, 0x21692,
+/* E0E0 */ 0x0, 0x0, 0x20d4e, 0x26c81, 0x26d2a, 0x217dc, 0x0, 0x217fb,
+/* E0E8 */ 0x217b2, 0x26da6, 0x0, 0x21828, 0x216d5, 0x0, 0x26e45, 0x0,
+/* E0F0 */ 0x0, 0x0, 0x249a9, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E0F8 */ 0x26fa1, 0x22554, 0x0, 0x21911, 0x0, 0x216b8, 0x0, 0x0,
+/* E100 */ 0x0, 0x0, 0x0, 0x27a0e, 0x0, 0x0, 0x20204, 0x0,
+/* E108 */ 0x0, 0x21a34, 0x259cc, 0x205a5, 0x0, 0x0, 0x0, 0x0,
+/* E110 */ 0x21b44, 0x0, 0x0, 0x0, 0x21ca5, 0x26b28, 0x0, 0x0,
+/* E118 */ 0x0, 0x0, 0x0, 0x0, 0x21df9, 0x21e37, 0x0, 0x0,
+/* E120 */ 0x0, 0x21ea4, 0x0, 0x0, 0x0, 0x0, 0x24901, 0x22049,
+/* E128 */ 0x22173, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E130 */ 0x244bc, 0x20cd3, 0x0, 0x0, 0x0, 0x0, 0x21771, 0x0,
+/* E138 */ 0x0, 0x28482, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E140 */ 0x0, 0x201c1, 0x2f894, 0x0, 0x0, 0x2133a, 0x0, 0x26888,
+/* E148 */ 0x223d0, 0x0, 0x22471, 0x0, 0x0, 0x26e6e, 0x0, 0x0,
+/* E150 */ 0x28a36, 0x0, 0x0, 0x0, 0x25250, 0x21f6a, 0x270f8, 0x22668,
+/* E158 */ 0x0, 0x2029e, 0x28a29, 0x0, 0x0, 0x21877, 0x0, 0x0,
+/* E160 */ 0x0, 0x0, 0x227b4, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E168 */ 0x24982, 0x2498f, 0x27a53, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E170 */ 0x0, 0x2f8a6, 0x26ed2, 0x0, 0x0, 0x20656, 0x0, 0x0,
+/* E178 */ 0x23fb7, 0x2285f, 0x0, 0x28b9d, 0x2995d, 0x0, 0x0, 0x22980,
+/* E180 */ 0x228c1, 0x0, 0x0, 0x0, 0x0, 0x20118, 0x0, 0x21770,
+/* E188 */ 0x0, 0x22e0d, 0x0, 0x249df, 0x0, 0x0, 0x0, 0x2138e,
+/* E190 */ 0x217fc, 0x0, 0x0, 0x22e36, 0x0, 0x2408c, 0x2571d, 0x0,
+/* E198 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24a28,
+/* E1A0 */ 0x24a23, 0x0, 0x0, 0x0, 0x2307e, 0x0, 0x24940, 0x0,
+/* E1A8 */ 0x0, 0x0, 0x21829, 0x0, 0x0, 0x0, 0x23400, 0x0,
+/* E1B0 */ 0x231f7, 0x231f8, 0x0, 0x231a4, 0x231a5, 0x0, 0x20e75, 0x0,
+/* E1B8 */ 0x251e6, 0x0, 0x0, 0x21e3d, 0x23231, 0x285f4, 0x231c8, 0x25313,
+/* E1C0 */ 0x0, 0x228f7, 0x0, 0x0, 0x2439c, 0x24a21, 0x0, 0x0,
+/* E1C8 */ 0x237c2, 0x0, 0x0, 0x0, 0x241cd, 0x290ed, 0x0, 0x0,
+/* E1D0 */ 0x0, 0x0, 0x0, 0x0, 0x233e6, 0x26da0, 0x0, 0x2346f,
+/* E1D8 */ 0x0, 0x0, 0x28adf, 0x0, 0x0, 0x235cd, 0x0, 0x0,
+/* E1E0 */ 0x0, 0x0, 0x2363c, 0x0, 0x0, 0x0, 0x28a4a, 0x0,
+/* E1E8 */ 0x0, 0x0, 0x0, 0x203c9, 0x0, 0x0, 0x0, 0x23659,
+/* E1F0 */ 0x2212a, 0x0, 0x23703, 0x0, 0x0, 0x0, 0x0, 0x2919c,
+/* E1F8 */ 0x0, 0x0, 0x20923, 0x0, 0x0, 0x0, 0x227cd, 0x0,
+/* E200 */ 0x23adb, 0x203b5, 0x21958, 0x0, 0x0, 0x23b5a, 0x0, 0x23efc,
+/* E208 */ 0x0, 0x0, 0x2248b, 0x248f1, 0x26b51, 0x0, 0x0, 0x0,
+/* E210 */ 0x23dbc, 0x0, 0x23dbd, 0x241a4, 0x2490c, 0x24900, 0x23cc9, 0x0,
+/* E218 */ 0x0, 0x20d32, 0x0, 0x231f9, 0x22491, 0x0, 0x0, 0x26d25,
+/* E220 */ 0x26da1, 0x26deb, 0x0, 0x0, 0x0, 0x0, 0x2497f, 0x24085,
+/* E228 */ 0x26e72, 0x0, 0x26f74, 0x0, 0x0, 0x0, 0x0, 0x28b21,
+/* E230 */ 0x0, 0x23e2f, 0x0, 0x23f82, 0x0, 0x0, 0x0, 0x2304b,
+/* E238 */ 0x0, 0x0, 0x0, 0x23e30, 0x0, 0x21497, 0x2403d, 0x0,
+/* E240 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x29170, 0x0, 0x0,
+/* E248 */ 0x24144, 0x0, 0x24091, 0x24155, 0x24039, 0x23ff0, 0x23fb4, 0x2413f,
+/* E250 */ 0x0, 0x24156, 0x24157, 0x24140, 0x261dd, 0x0, 0x0, 0x0,
+/* E258 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E260 */ 0x0, 0x24277, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E268 */ 0x24365, 0x0, 0x0, 0x242c1, 0x0, 0x2445a, 0x24a27, 0x24a22,
+/* E270 */ 0x0, 0x28be8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E278 */ 0x0, 0x0, 0x25605, 0x0, 0x0, 0x24974, 0x0, 0x0,
+/* E280 */ 0x0, 0x0, 0x23044, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E288 */ 0x24823, 0x2882b, 0x0, 0x28804, 0x0, 0x0, 0x0, 0x0,
+/* E290 */ 0x20c3a, 0x26a2e, 0x0, 0x0, 0x241e2, 0x216e7, 0x24a24, 0x0,
+/* E298 */ 0x0, 0x249b7, 0x2498d, 0x249fb, 0x0, 0x0, 0x0, 0x24a26,
+/* E2A0 */ 0x0, 0x205c3, 0x0, 0x0, 0x228ad, 0x0, 0x28eb2, 0x0,
+/* E2A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E2B0 */ 0x0, 0x0, 0x24a8c, 0x2415f, 0x24a79, 0x28b8f, 0x0, 0x28c03,
+/* E2B8 */ 0x2189e, 0x0, 0x21988, 0x0, 0x0, 0x0, 0x28ed9, 0x21a4b,
+/* E2C0 */ 0x0, 0x28eac, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24f82,
+/* E2C8 */ 0x0, 0x24d13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E2D0 */ 0x0, 0x0, 0x0, 0x0, 0x263f5, 0x0, 0x0, 0x0,
+/* E2D8 */ 0x26911, 0x2690e, 0x0, 0x0, 0x0, 0x0, 0x26f9f, 0x0,
+/* E2E0 */ 0x2509d, 0x2517d, 0x21e1c, 0x0, 0x0, 0x0, 0x0, 0x25220,
+/* E2E8 */ 0x0, 0x232ac, 0x0, 0x28964, 0x28968, 0x216c1, 0x0, 0x0,
+/* E2F0 */ 0x21376, 0x24a12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E2F8 */ 0x255e0, 0x0, 0x0, 0x0, 0x2760c, 0x0, 0x0, 0x28b2b,
+/* E300 */ 0x26083, 0x2261c, 0x0, 0x0, 0x0, 0x0, 0x25857, 0x0,
+/* E308 */ 0x27b39, 0x0, 0x0, 0x0, 0x27126, 0x0, 0x0, 0x2910d,
+/* E310 */ 0x0, 0x23ed7, 0x0, 0x26ed3, 0x0, 0x257e0, 0x0, 0x0,
+/* E318 */ 0x28be9, 0x0, 0x0, 0x258e1, 0x294d9, 0x0, 0x0, 0x259ac,
+/* E320 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2648d, 0x0, 0x0,
+/* E328 */ 0x0, 0x0, 0x0, 0x0, 0x25c01, 0x0, 0x0, 0x0,
+/* E330 */ 0x2530e, 0x25cfe, 0x0, 0x0, 0x0, 0x25bb4, 0x26c7f, 0x0,
+/* E338 */ 0x0, 0x0, 0x0, 0x25d20, 0x0, 0x25c65, 0x0, 0x0,
+/* E340 */ 0x0, 0x0, 0x25cc1, 0x0, 0x0, 0x24882, 0x0, 0x0,
+/* E348 */ 0x24578, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E350 */ 0x0, 0x0, 0x26e44, 0x0, 0x26ed6, 0x0, 0x0, 0x0,
+/* E358 */ 0x0, 0x0, 0x0, 0x24057, 0x26029, 0x0, 0x0, 0x0,
+/* E360 */ 0x217f9, 0x0, 0x2836d, 0x0, 0x26121, 0x2615a, 0x0, 0x0,
+/* E368 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x262d0,
+/* E370 */ 0x0, 0x0, 0x26351, 0x0, 0x21661, 0x20068, 0x0, 0x23766,
+/* E378 */ 0x0, 0x2833a, 0x0, 0x26489, 0x0, 0x0, 0x0, 0x0,
+/* E380 */ 0x0, 0x2a087, 0x26cc3, 0x0, 0x0, 0x0, 0x22714, 0x0,
+/* E388 */ 0x26626, 0x23de3, 0x266e8, 0x0, 0x0, 0x28a48, 0x0, 0x0,
+/* E390 */ 0x0, 0x226f6, 0x0, 0x26498, 0x24fb8, 0x0, 0x2148a, 0x0,
+/* E398 */ 0x2185e, 0x0, 0x24a65, 0x24a95, 0x0, 0x0, 0x20b0d, 0x26a52,
+/* E3A0 */ 0x23d7e, 0x0, 0x214fd, 0x0, 0x0, 0x26b0a, 0x249a7, 0x23530,
+/* E3A8 */ 0x21773, 0x23df8, 0x0, 0x0, 0x2f994, 0x0, 0x0, 0x0,
+/* E3B0 */ 0x0, 0x20e16, 0x217b4, 0x0, 0x2317d, 0x2355a, 0x0, 0x0,
+/* E3B8 */ 0x0, 0x23e8b, 0x26da3, 0x26b05, 0x26b97, 0x235ce, 0x0, 0x0,
+/* E3C0 */ 0x0, 0x0, 0x0, 0x26da5, 0x0, 0x0, 0x0, 0x0,
+/* E3C8 */ 0x26ed4, 0x0, 0x0, 0x0, 0x26e42, 0x22eef, 0x0, 0x25be4,
+/* E3D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x23cb5, 0x0, 0x0,
+/* E3D8 */ 0x26b96, 0x26e77, 0x26e43, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E3E0 */ 0x0, 0x25c91, 0x0, 0x25cc0, 0x0, 0x0, 0x0, 0x26e99,
+/* E3E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x28625, 0x2863b, 0x0,
+/* E3F0 */ 0x27088, 0x0, 0x21582, 0x270cd, 0x2f9b2, 0x0, 0x0, 0x0,
+/* E3F8 */ 0x218a2, 0x0, 0x2739a, 0x0, 0x0, 0x2a0f8, 0x0, 0x22c27,
+/* E400 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E408 */ 0x0, 0x275e0, 0x23db9, 0x275e4, 0x0, 0x0, 0x0, 0x0,
+/* E410 */ 0x0, 0x0, 0x0, 0x0, 0x2770f, 0x0, 0x0, 0x0,
+/* E418 */ 0x0, 0x0, 0x0, 0x28a25, 0x0, 0x27924, 0x27abd, 0x0,
+/* E420 */ 0x0, 0x0, 0x0, 0x27a59, 0x0, 0x27b3a, 0x23f8f, 0x0,
+/* E428 */ 0x27b38, 0x0, 0x0, 0x0, 0x25430, 0x25565, 0x0, 0x0,
+/* E430 */ 0x0, 0x0, 0x24a7a, 0x0, 0x0, 0x0, 0x216df, 0x0,
+/* E438 */ 0x0, 0x0, 0x27d54, 0x27d8f, 0x2f9d4, 0x0, 0x27d53, 0x0,
+/* E440 */ 0x27d98, 0x27dbd, 0x0, 0x0, 0x21910, 0x0, 0x0, 0x0,
+/* E448 */ 0x24cc9, 0x0, 0x0, 0x0, 0x28002, 0x21014, 0x2498a, 0x0,
+/* E450 */ 0x281bc, 0x2710c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E458 */ 0x0, 0x28365, 0x28412, 0x0, 0x0, 0x2a29f, 0x20a50, 0x0,
+/* E460 */ 0x0, 0x289de, 0x2853d, 0x23dbb, 0x0, 0x23262, 0x0, 0x2a014,
+/* E468 */ 0x286bc, 0x28501, 0x22325, 0x0, 0x26ed7, 0x0, 0x2853c, 0x27abe,
+/* E470 */ 0x0, 0x2856c, 0x2860b, 0x0, 0x28713, 0x0, 0x286e6, 0x0,
+/* E478 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28933, 0x21e89,
+/* E480 */ 0x0, 0x0, 0x0, 0x0, 0x255b9, 0x0, 0x28ac6, 0x23c9b,
+/* E488 */ 0x28b0c, 0x255db, 0x20d31, 0x0, 0x0, 0x28ae1, 0x28beb, 0x0,
+/* E490 */ 0x0, 0x28ae2, 0x28ae5, 0x0, 0x0, 0x28bec, 0x28c39, 0x28bff,
+/* E498 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4A0 */ 0x0, 0x2267a, 0x286d8, 0x2127c, 0x23e2e, 0x0, 0x0, 0x0,
+/* E4A8 */ 0x0, 0x0, 0x0, 0x26ed5, 0x0, 0x0, 0x0, 0x28ae0,
+/* E4B0 */ 0x0, 0x0, 0x0, 0x26cb8, 0x20274, 0x26410, 0x290af, 0x290e5,
+/* E4B8 */ 0x24ad1, 0x21915, 0x2330a, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E4C0 */ 0x0, 0x24ae9, 0x0, 0x0, 0x0, 0x0, 0x291d5, 0x0,
+/* E4C8 */ 0x0, 0x291eb, 0x0, 0x0, 0x0, 0x230b7, 0x230bc, 0x0,
+/* E4D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2546c, 0x0,
+/* E4D8 */ 0x0, 0x29433, 0x0, 0x0, 0x2941d, 0x2797a, 0x0, 0x0,
+/* E4E0 */ 0x0, 0x0, 0x0, 0x0, 0x27175, 0x0, 0x20630, 0x2415c,
+/* E4E8 */ 0x25706, 0x0, 0x0, 0x0, 0x0, 0x0, 0x26d27, 0x216d3,
+/* E4F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24a29, 0x0,
+/* E4F8 */ 0x29857, 0x29905, 0x0, 0x0, 0x0, 0x0, 0x0, 0x25725,
+/* E500 */ 0x0, 0x290b1, 0x29bd5, 0x0, 0x0, 0x29b05, 0x0, 0x0,
+/* E508 */ 0x0, 0x0, 0x28600, 0x0, 0x0, 0x269a8, 0x0, 0x2307d,
+/* E510 */ 0x0, 0x0, 0x29d3e, 0x0, 0x21863, 0x0, 0x2424b, 0x0,
+/* E518 */ 0x0, 0x0, 0x29e68, 0x0, 0x29fb7, 0x2a192, 0x2a1ab, 0x2a0e1,
+/* E520 */ 0x2a123, 0x2a1df, 0x0, 0x0, 0x2a134, 0x0, 0x0, 0x0,
+/* E528 */ 0x2215b, 0x2a193, 0x2a220, 0x2193b, 0x2a233, 0x0, 0x2a0b9, 0x2a2b4,
+/* E530 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24364,
+/* E538 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28c2b, 0x0,
+/* E540 */ 0x0, 0x0, 0x0, 0x26da2, 0x0, 0x0, 0x0, 0x0,
+/* E548 */ 0x0, 0x0, 0x0, 0x2908b, 0x0, 0x0, 0x0, 0x0,
+/* E550 */ 0x0, 0x0, 0x0, 0x0, 0x24975, 0x249bb, 0x0, 0x249f8,
+/* E558 */ 0x24348, 0x24a51, 0x0, 0x28bda, 0x218fa, 0x0, 0x2897e, 0x28e36,
+/* E560 */ 0x0, 0x0, 0x28a44, 0x0, 0x0, 0x0, 0x2896c, 0x244b9,
+/* E568 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x24473, 0x243f8, 0x0,
+/* E570 */ 0x217ef, 0x0, 0x218be, 0x23599, 0x0, 0x21885, 0x2542f, 0x217f8,
+/* E578 */ 0x0, 0x216fb, 0x21839, 0x0, 0x21774, 0x218d1, 0x25f4b, 0x0,
+/* E580 */ 0x216c0, 0x0, 0x24a25, 0x213fe, 0x212a8, 0x213c6, 0x214b6, 0x0,
+/* E588 */ 0x236a6, 0x0, 0x0, 0x24994, 0x27165, 0x23e31, 0x2555c, 0x23efb,
+/* E590 */ 0x27052, 0x0, 0x236ee, 0x2999d, 0x26f26, 0x0, 0x0, 0x0,
+/* E598 */ 0x0, 0x0, 0x21922, 0x0, 0x0, 0x2373f, 0x240e1, 0x2408b,
+/* E5A0 */ 0x2410f, 0x26c21, 0x0, 0x0, 0x266b1, 0x0, 0x20fdf, 0x20ba8,
+/* E5A8 */ 0x20e0d, 0x0, 0x28b13, 0x0, 0x0, 0x0, 0x0, 0x24436,
+/* E5B0 */ 0x0, 0x20465, 0x2037f, 0x0, 0x0, 0x25651, 0x0, 0x201ab,
+/* E5B8 */ 0x203cb, 0x0, 0x2030a, 0x20414, 0x0, 0x0, 0x202c0, 0x28eb3,
+/* E5C0 */ 0x20275, 0x0, 0x2020c, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E5C8 */ 0x24a0e, 0x23e8a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E5D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x23595,
+/* E5D8 */ 0x23e39, 0x23ebf, 0x0, 0x21884, 0x23e89, 0x0, 0x0, 0x205e0,
+/* E5E0 */ 0x0, 0x204a3, 0x20492, 0x20491, 0x0, 0x28a9c, 0x2070e, 0x0,
+/* E5E8 */ 0x0, 0x20873, 0x0, 0x0, 0x0, 0x0, 0x2438c, 0x20c20,
+/* E5F0 */ 0x249ac, 0x210e4, 0x0, 0x20e1d, 0x0, 0x0, 0x0, 0x0,
+/* E5F8 */ 0x0, 0x0, 0x0, 0x24abc, 0x2408d, 0x0, 0x0, 0x0,
+/* E600 */ 0x240c9, 0x0, 0x20345, 0x0, 0x20bc6, 0x0, 0x0, 0x0,
+/* E608 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28a46,
+/* E610 */ 0x216fa, 0x2176f, 0x21710, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E618 */ 0x0, 0x25946, 0x219f3, 0x21861, 0x24295, 0x0, 0x0, 0x0,
+/* E620 */ 0x0, 0x25e83, 0x0, 0x28bd7, 0x20413, 0x0, 0x0, 0x21303,
+/* E628 */ 0x0, 0x0, 0x0, 0x289fb, 0x0, 0x0, 0x0, 0x0,
+/* E630 */ 0x0, 0x0, 0x21996, 0x2197c, 0x23aee, 0x0, 0x0, 0x21903,
+/* E638 */ 0x21904, 0x0, 0x218a0, 0x0, 0x216fe, 0x0, 0x0, 0x28a47,
+/* E640 */ 0x21dba, 0x23472, 0x289a8, 0x0, 0x0, 0x21927, 0x217ab, 0x0,
+/* E648 */ 0x2173b, 0x0, 0x0, 0x275fd, 0x0, 0x0, 0x22860, 0x2262b,
+/* E650 */ 0x0, 0x0, 0x225af, 0x225be, 0x29088, 0x26f73, 0x0, 0x2003e,
+/* E658 */ 0x20046, 0x2261b, 0x0, 0x0, 0x0, 0x22c9b, 0x22d07, 0x246d4,
+/* E660 */ 0x2914d, 0x0, 0x24665, 0x22b6a, 0x0, 0x22b22, 0x23450, 0x298ea,
+/* E668 */ 0x22e78, 0x0, 0x2a45b, 0x0, 0x0, 0x0, 0x249e3, 0x22d67,
+/* E670 */ 0x0, 0x22ca1, 0x0, 0x0, 0x0, 0x0, 0x2308e, 0x232ad,
+/* E678 */ 0x24989, 0x232ab, 0x0, 0x232e0, 0x218d9, 0x2943f, 0x0, 0x23289,
+/* E680 */ 0x231b3, 0x0, 0x0, 0x25584, 0x28b22, 0x2558f, 0x216fc, 0x2555b,
+/* E688 */ 0x25425, 0x0, 0x23103, 0x2182a, 0x23234, 0x0, 0x2320f, 0x23182,
+/* E690 */ 0x242c9, 0x0, 0x26d24, 0x0, 0x0, 0x0, 0x27870, 0x21deb,
+/* E698 */ 0x0, 0x232d2, 0x232e1, 0x0, 0x25872, 0x0, 0x2383a, 0x237bc,
+/* E6A0 */ 0x0, 0x237a2, 0x233fe, 0x0, 0x0, 0x0, 0x2462a, 0x0,
+/* E6A8 */ 0x0, 0x0, 0x0, 0x0, 0x237d5, 0x24487, 0x0, 0x0,
+/* E6B0 */ 0x0, 0x0, 0x21912, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6B8 */ 0x0, 0x23fc0, 0x23c9a, 0x0, 0x0, 0x28bea, 0x28acb, 0x0,
+/* E6C0 */ 0x2801e, 0x289dc, 0x0, 0x0, 0x0, 0x249ec, 0x0, 0x23f7f,
+/* E6C8 */ 0x0, 0x0, 0x2403c, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E6D0 */ 0x0, 0x2431a, 0x24276, 0x0, 0x0, 0x0, 0x0, 0x2478f,
+/* E6D8 */ 0x24725, 0x0, 0x24aa4, 0x205eb, 0x0, 0x23ef8, 0x2365f, 0x24a4a,
+/* E6E0 */ 0x24917, 0x25fe1, 0x0, 0x0, 0x24adf, 0x28c23, 0x23f35, 0x0,
+/* E6E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x26dea, 0x0,
+/* E6F0 */ 0x0, 0x0, 0x24cd9, 0x24d06, 0x0, 0x0, 0x0, 0x2a5c6,
+/* E6F8 */ 0x0, 0x0, 0x28acc, 0x249ab, 0x2498e, 0x0, 0x0, 0x24a4e,
+/* E700 */ 0x0, 0x249c5, 0x248f3, 0x0, 0x0, 0x0, 0x28ae3, 0x21864,
+/* E708 */ 0x0, 0x25221, 0x251e7, 0x0, 0x23232, 0x0, 0x0, 0x0,
+/* E710 */ 0x24697, 0x23781, 0x0, 0x248f0, 0x0, 0x0, 0x0, 0x24aba,
+/* E718 */ 0x24ac7, 0x0, 0x24a96, 0x261ae, 0x0, 0x25581, 0x0, 0x0,
+/* E720 */ 0x0, 0x0, 0x0, 0x0, 0x27741, 0x256e3, 0x0, 0x0,
+/* E728 */ 0x0, 0x0, 0x0, 0x23efa, 0x0, 0x0, 0x0, 0x216e6,
+/* E730 */ 0x0, 0x0, 0x0, 0x20d4c, 0x2498c, 0x20299, 0x23dba, 0x2176e,
+/* E738 */ 0x0, 0x0, 0x0, 0x0, 0x201d4, 0x20c0d, 0x0, 0x0,
+/* E740 */ 0x226f5, 0x25aaf, 0x25a9c, 0x0, 0x2025b, 0x0, 0x0, 0x25bc6,
+/* E748 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x25bb3, 0x25ebc, 0x25ea6,
+/* E750 */ 0x0, 0x249f9, 0x217b0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E758 */ 0x0, 0x0, 0x0, 0x26261, 0x2615c, 0x27b48, 0x0, 0x25e82,
+/* E760 */ 0x0, 0x26b75, 0x20916, 0x0, 0x2004e, 0x235cf, 0x0, 0x26412,
+/* E768 */ 0x263f8, 0x24962, 0x0, 0x0, 0x2082c, 0x25ae9, 0x25d43, 0x0,
+/* E770 */ 0x25e0e, 0x0, 0x0, 0x0, 0x0, 0x2343f, 0x0, 0x249f7,
+/* E778 */ 0x265ad, 0x0, 0x265a0, 0x0, 0x27127, 0x26cd1, 0x0, 0x0,
+/* E780 */ 0x0, 0x0, 0x0, 0x0, 0x267b4, 0x0, 0x26a42, 0x0,
+/* E788 */ 0x0, 0x26a51, 0x0, 0x26da7, 0x0, 0x2721b, 0x0, 0x0,
+/* E790 */ 0x21840, 0x0, 0x218a1, 0x0, 0x218d8, 0x0, 0x2f9bc, 0x23d8f,
+/* E798 */ 0x0, 0x27422, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7A0 */ 0x0, 0x0, 0x25683, 0x0, 0x27785, 0x27784, 0x28bf5, 0x28bd9,
+/* E7A8 */ 0x28b9c, 0x289f9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7B0 */ 0x0, 0x29448, 0x0, 0x0, 0x24284, 0x0, 0x0, 0x0,
+/* E7B8 */ 0x21845, 0x0, 0x0, 0x0, 0x27ddc, 0x0, 0x0, 0x0,
+/* E7C0 */ 0x0, 0x0, 0x0, 0x0, 0x24c09, 0x0, 0x0, 0x0,
+/* E7C8 */ 0x0, 0x0, 0x22321, 0x0, 0x0, 0x0, 0x217da, 0x0,
+/* E7D0 */ 0x0, 0x2492f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E7D8 */ 0x28a4b, 0x0, 0x28afc, 0x0, 0x28c1d, 0x28c3b, 0x0, 0x0,
+/* E7E0 */ 0x0, 0x0, 0x0, 0x0, 0x28d34, 0x0, 0x0, 0x248ff,
+/* E7E8 */ 0x24a42, 0x243ea, 0x0, 0x23225, 0x0, 0x28ee7, 0x28e66, 0x28e65,
+/* E7F0 */ 0x0, 0x249ed, 0x24a78, 0x23fee, 0x0, 0x0, 0x0, 0x0,
+/* E7F8 */ 0x290b0, 0x0, 0x0, 0x29093, 0x257df, 0x0, 0x0, 0x28989,
+/* E800 */ 0x28c26, 0x28b2f, 0x263be, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E808 */ 0x2421b, 0x0, 0x0, 0x0, 0x20f26, 0x0, 0x28bc5, 0x24ab2,
+/* E810 */ 0x0, 0x294da, 0x0, 0x295d7, 0x0, 0x0, 0x28b50, 0x24a67,
+/* E818 */ 0x28b64, 0x0, 0x28a45, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E820 */ 0x0, 0x27b06, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28b65,
+/* E828 */ 0x258c8, 0x0, 0x0, 0x0, 0x0, 0x298f1, 0x0, 0x29948,
+/* E830 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x21302, 0x0, 0x249b8,
+/* E838 */ 0x214e8, 0x0, 0x2271f, 0x23db8, 0x0, 0x0, 0x0, 0x0,
+/* E840 */ 0x0, 0x22781, 0x2296b, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E848 */ 0x0, 0x0, 0x0, 0x29e2d, 0x0, 0x2a1f5, 0x2a0fe, 0x0,
+/* E850 */ 0x0, 0x24104, 0x0, 0x0, 0x0, 0x2a1b4, 0x2a0ed, 0x2a0f3,
+/* E858 */ 0x2992f, 0x0, 0x0, 0x26e12, 0x26fdf, 0x26b82, 0x0, 0x0,
+/* E860 */ 0x26da4, 0x26e84, 0x26df0, 0x0, 0x0, 0x26e00, 0x237d7, 0x26064,
+/* E868 */ 0x0, 0x2359c, 0x23640, 0x0, 0x249de, 0x0, 0x0, 0x0,
+/* E870 */ 0x0, 0x202bf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E878 */ 0x2555d, 0x0, 0x0, 0x0, 0x0, 0x21757, 0x231c9, 0x24941,
+/* E880 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x241b5,
+/* E888 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x241ac,
+/* E890 */ 0x0, 0x26c40, 0x24f97, 0x0, 0x217b5, 0x28a49, 0x0, 0x0,
+/* E898 */ 0x0, 0x0, 0x24488, 0x0, 0x0, 0x289fc, 0x0, 0x0,
+/* E8A0 */ 0x218d6, 0x20f1d, 0x0, 0x26cc0, 0x21413, 0x242fa, 0x22c26, 0x243c1,
+/* E8A8 */ 0x0, 0x23db7, 0x26741, 0x0, 0x2615b, 0x260a4, 0x249b9, 0x2498b,
+/* E8B0 */ 0x289fa, 0x0, 0x0, 0x0, 0x0, 0x28b63, 0x2189f, 0x0,
+/* E8B8 */ 0x24ab3, 0x0, 0x0, 0x0, 0x0, 0x24a3e, 0x24a94, 0x217d9,
+/* E8C0 */ 0x24a66, 0x203a7, 0x21424, 0x249e5, 0x0, 0x24916, 0x0, 0x24976,
+/* E8C8 */ 0x0, 0x0, 0x0, 0x204fe, 0x0, 0x28ace, 0x28a16, 0x0,
+/* E8D0 */ 0x28be7, 0x255d5, 0x0, 0x28a82, 0x0, 0x24943, 0x20cff, 0x0,
+/* E8D8 */ 0x2061a, 0x20beb, 0x20cb8, 0x0, 0x0, 0x217fa, 0x0, 0x216c2,
+/* E8E0 */ 0x24a50, 0x21852, 0x0, 0x0, 0x0, 0x28ac0, 0x249ad, 0x0,
+/* E8E8 */ 0x218bf, 0x21883, 0x27484, 0x0, 0x0, 0x23d5b, 0x0, 0x0,
+/* E8F0 */ 0x0, 0x28a81, 0x21862, 0x0, 0x0, 0x20ab4, 0x0, 0x0,
+/* E8F8 */ 0x0, 0x0, 0x0, 0x2139c, 0x0, 0x0, 0x28218, 0x0,
+/* E900 */ 0x290e4, 0x0, 0x0, 0x27e4f, 0x0, 0x0, 0x0, 0x23fed,
+/* E908 */ 0x23e2d, 0x0, 0x0, 0x0, 0x203f5, 0x0, 0x0, 0x0,
+/* E910 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28c1c,
+/* E918 */ 0x26bc0, 0x0, 0x0, 0x0, 0x21452, 0x0, 0x24362, 0x24a71,
+/* E920 */ 0x22fe3, 0x212b0, 0x223bd, 0x0, 0x0, 0x21398, 0x234e5, 0x27bf4,
+/* E928 */ 0x236df, 0x28a83, 0x237d6, 0x233fa, 0x24c9f, 0x0, 0x236ad, 0x26cb7,
+/* E930 */ 0x0, 0x0, 0x0, 0x26d26, 0x26d51, 0x26c82, 0x26fde, 0x0,
+/* E938 */ 0x27109, 0x0, 0x2173a, 0x0, 0x26c80, 0x27053, 0x217db, 0x0,
+/* E940 */ 0x0, 0x217b3, 0x0, 0x0, 0x21905, 0x241fc, 0x0, 0x0,
+/* E948 */ 0x2173c, 0x0, 0x0, 0x0, 0x0, 0x242a5, 0x0, 0x0,
+/* E950 */ 0x24293, 0x0, 0x23ef9, 0x27736, 0x2445b, 0x242ca, 0x0, 0x24259,
+/* E958 */ 0x289e1, 0x0, 0x26d28, 0x0, 0x244ce, 0x27e4d, 0x243bd, 0x0,
+/* E960 */ 0x24256, 0x21304, 0x0, 0x0, 0x243e9, 0x0, 0x0, 0x2f825,
+/* E968 */ 0x24a4f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24a5d, 0x217df,
+/* E970 */ 0x0, 0x0, 0x0, 0x23afa, 0x23300, 0x20214, 0x0, 0x208d5,
+/* E978 */ 0x20619, 0x0, 0x21f9e, 0x2a2b6, 0x0, 0x2915b, 0x0, 0x0,
+/* E980 */ 0x0, 0x28a59, 0x29420, 0x0, 0x0, 0x0, 0x0, 0x27af4,
+/* E988 */ 0x0, 0x0, 0x256f6, 0x0, 0x0, 0x0, 0x27b18, 0x0,
+/* E990 */ 0x0, 0x248f2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E998 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9B0 */ 0x24f5c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9C8 */ 0x0, 0x0, 0x0, 0x25535, 0x0, 0x0, 0x0, 0x0,
+/* E9D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20ccf,
+/* E9F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* E9F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA00 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA08 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA10 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA20 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA40 */ 0x0, 0x0, 0x0, 0x27967, 0x0, 0x0, 0x0, 0x0,
+/* EA48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA58 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA60 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EA98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAA8 */ 0x0, 0x21bc2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EAB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20094,
+/* EAC0 */ 0x202b7, 0x203a0, 0x0, 0x0, 0x0, 0x204d7, 0x0, 0x0,
+/* EAC8 */ 0x0, 0x205d5, 0x20615, 0x20676, 0x216ba, 0x0, 0x0, 0x20ac2,
+/* EAD0 */ 0x20acd, 0x20bbf, 0x0, 0x2f83b, 0x20bcb, 0x0, 0x20bfb, 0x20c3b,
+/* EAD8 */ 0x20c53, 0x20c65, 0x20c7c, 0x0, 0x20c8d, 0x0, 0x20cb5, 0x20cdd,
+/* EAE0 */ 0x20ced, 0x20d6f, 0x20db2, 0x20dc8, 0x0, 0x0, 0x0, 0x20e04,
+/* EAE8 */ 0x20e0e, 0x20ed7, 0x20f90, 0x20f2d, 0x20e73, 0x0, 0x20fbc, 0x0,
+/* EAF0 */ 0x2105c, 0x2104f, 0x21076, 0x0, 0x2107b, 0x21088, 0x21096, 0x0,
+/* EAF8 */ 0x210bf, 0x210d3, 0x2112f, 0x2113b, 0x0, 0x0, 0x212e3, 0x21375,
+/* EB00 */ 0x21336, 0x0, 0x21577, 0x21619, 0x217c3, 0x217c7, 0x0, 0x0,
+/* EB08 */ 0x2182d, 0x2196a, 0x21a2d, 0x21a45, 0x21c2a, 0x21c70, 0x21cac, 0x21ec8,
+/* EB10 */ 0x0, 0x21ed5, 0x21f15, 0x0, 0x0, 0x22045, 0x0, 0x0,
+/* EB18 */ 0x2227c, 0x223d7, 0x223fa, 0x2272a, 0x22871, 0x2294f, 0x0, 0x22967,
+/* EB20 */ 0x22993, 0x22ad5, 0x0, 0x22ae8, 0x0, 0x22b0e, 0x0, 0x22b3f,
+/* EB28 */ 0x0, 0x0, 0x22c4c, 0x0, 0x22c88, 0x22cb7, 0x25be8, 0x22d08,
+/* EB30 */ 0x22d12, 0x22db7, 0x22d95, 0x22e42, 0x22f74, 0x22fcc, 0x23033, 0x23066,
+/* EB38 */ 0x2331f, 0x233de, 0x0, 0x0, 0x0, 0x27a79, 0x23567, 0x235f3,
+/* EB40 */ 0x0, 0x249ba, 0x0, 0x2361a, 0x23716, 0x0, 0x20346, 0x0,
+/* EB48 */ 0x0, 0x0, 0x23aa7, 0x27657, 0x25fe2, 0x23e11, 0x23eb9, 0x275fe,
+/* EB50 */ 0x2209a, 0x0, 0x0, 0x24119, 0x28a9a, 0x242ee, 0x2430d, 0x2403b,
+/* EB58 */ 0x24334, 0x24396, 0x24a45, 0x205ca, 0x0, 0x20611, 0x0, 0x21ea8,
+/* EB60 */ 0x0, 0x23cff, 0x24404, 0x244d6, 0x0, 0x24674, 0x0, 0x2472f,
+/* EB68 */ 0x285e8, 0x299c9, 0x0, 0x221c3, 0x0, 0x28b4e, 0x0, 0x24812,
+/* EB70 */ 0x248fb, 0x24a15, 0x0, 0x24ac0, 0x20c78, 0x0, 0x24ea5, 0x24f86,
+/* EB78 */ 0x20779, 0x0, 0x2502c, 0x0, 0x0, 0x0, 0x25299, 0x25419,
+/* EB80 */ 0x23f4a, 0x24aa7, 0x0, 0x25446, 0x2546e, 0x26b52, 0x0, 0x0,
+/* EB88 */ 0x2553f, 0x27632, 0x2555e, 0x0, 0x25562, 0x25566, 0x257c7, 0x2493f,
+/* EB90 */ 0x2585d, 0x0, 0x0, 0x233cc, 0x0, 0x25903, 0x0, 0x28948,
+/* EB98 */ 0x25aae, 0x25b89, 0x25c06, 0x21d90, 0x0, 0x0, 0x0, 0x26102,
+/* EBA0 */ 0x27c12, 0x0, 0x261b2, 0x24f9a, 0x0, 0x26402, 0x2644a, 0x0,
+/* EBA8 */ 0x26bf7, 0x0, 0x26484, 0x2191c, 0x0, 0x249f6, 0x26488, 0x23fef,
+/* EBB0 */ 0x26512, 0x0, 0x265bf, 0x266b5, 0x2271b, 0x0, 0x257e1, 0x0,
+/* EBB8 */ 0x0, 0x2f8cd, 0x0, 0x0, 0x24521, 0x266fc, 0x0, 0x24934,
+/* EBC0 */ 0x0, 0x0, 0x26cbd, 0x0, 0x0, 0x26799, 0x2686e, 0x26411,
+/* EBC8 */ 0x2685e, 0x0, 0x268c7, 0x0, 0x290c0, 0x20a11, 0x26926, 0x0,
+/* EBD0 */ 0x26939, 0x0, 0x0, 0x269fa, 0x0, 0x26a2d, 0x0, 0x26469,
+/* EBD8 */ 0x20021, 0x0, 0x26a34, 0x26b5b, 0x0, 0x23519, 0x0, 0x26b9d,
+/* EBE0 */ 0x0, 0x26ca4, 0x0, 0x0, 0x26dae, 0x0, 0x0, 0x2258d,
+/* EBE8 */ 0x2704b, 0x271cd, 0x0, 0x27280, 0x27285, 0x0, 0x2217a, 0x2728b,
+/* EBF0 */ 0x0, 0x272e6, 0x249d0, 0x0, 0x0, 0x27450, 0x20ef8, 0x0,
+/* EBF8 */ 0x0, 0x22926, 0x28473, 0x217b1, 0x0, 0x24a2a, 0x21820, 0x0,
+/* EC00 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x29cad, 0x298a4, 0x0,
+/* EC08 */ 0x277cc, 0x27858, 0x0, 0x0, 0x2160a, 0x0, 0x2372f, 0x280e8,
+/* EC10 */ 0x213c5, 0x0, 0x0, 0x279dd, 0x291a8, 0x0, 0x0, 0x270af,
+/* EC18 */ 0x289ab, 0x279fd, 0x27a0a, 0x27b0b, 0x27d66, 0x2417a, 0x0, 0x0,
+/* EC20 */ 0x28009, 0x0, 0x2a2df, 0x0, 0x28318, 0x0, 0x26e07, 0x0,
+/* EC28 */ 0x0, 0x0, 0x2816f, 0x28023, 0x269b5, 0x213ed, 0x2322f, 0x28048,
+/* EC30 */ 0x0, 0x28c30, 0x28083, 0x0, 0x0, 0x28949, 0x0, 0x24988,
+/* EC38 */ 0x0, 0x0, 0x0, 0x24aa5, 0x23f81, 0x0, 0x0, 0x28090,
+/* EC40 */ 0x280f4, 0x2812e, 0x21fa1, 0x2814f, 0x28189, 0x281af, 0x2821a, 0x28306,
+/* EC48 */ 0x2832f, 0x2838a, 0x0, 0x28468, 0x286aa, 0x0, 0x0, 0x28956,
+/* EC50 */ 0x0, 0x0, 0x289b8, 0x0, 0x289e7, 0x0, 0x289e8, 0x28b46,
+/* EC58 */ 0x28bd4, 0x0, 0x28c09, 0x0, 0x28fc5, 0x290ec, 0x0, 0x29110,
+/* EC60 */ 0x2913c, 0x0, 0x2915e, 0x24aca, 0x0, 0x0, 0x0, 0x294e7,
+/* EC68 */ 0x295e9, 0x295b0, 0x295b8, 0x29732, 0x298d1, 0x29949, 0x2996a, 0x299c3,
+/* EC70 */ 0x29a28, 0x29b0e, 0x29d5a, 0x29d9b, 0x0, 0x29ef8, 0x29f23, 0x0,
+/* EC78 */ 0x0, 0x2a293, 0x0, 0x2a2ff, 0x0, 0x0, 0x2a5cb, 0x0,
+/* EC80 */ 0x20c9c, 0x0, 0x0, 0x0, 0x224b0, 0x0, 0x24a93, 0x0,
+/* EC88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x28b2c, 0x2789d, 0x0,
+/* EC90 */ 0x0, 0x217f5, 0x28024, 0x28b6c, 0x28b99, 0x27a3e, 0x266af, 0x0,
+/* EC98 */ 0x27655, 0x23cb7, 0x25635, 0x25956, 0x0, 0x25e81, 0x26258, 0x0,
+/* ECA0 */ 0x20e6d, 0x0, 0x0, 0x23e88, 0x24c9e, 0x0, 0x0, 0x217f6,
+/* ECA8 */ 0x2187b, 0x0, 0x0, 0x25c4a, 0x0, 0x25311, 0x0, 0x29d98,
+/* ECB0 */ 0x0, 0x0, 0x0, 0x0, 0x25ed8, 0x0, 0x23d40, 0x0,
+/* ECB8 */ 0x0, 0x20fea, 0x20d49, 0x236ba, 0x0, 0x0, 0x0, 0x0,
+/* ECC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20e9d,
+/* ECD0 */ 0x0, 0x0, 0x0, 0x0, 0x282e2, 0x0, 0x0, 0x0,
+/* ECD8 */ 0x0, 0x0, 0x0, 0x20c41, 0x20c96, 0x0, 0x25148, 0x20e76,
+/* ECE0 */ 0x22c62, 0x20ea2, 0x0, 0x0, 0x0, 0x21075, 0x0, 0x0,
+/* ECE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ECF0 */ 0x22b43, 0x0, 0x22eb3, 0x0, 0x0, 0x20da7, 0x0, 0x0,
+/* ECF8 */ 0x0, 0x0, 0x0, 0x0, 0x2688a, 0x0, 0x0, 0x0,
+/* ED00 */ 0x0, 0x0, 0x0, 0x0, 0x210c1, 0x0, 0x0, 0x24706,
+/* ED08 */ 0x0, 0x0, 0x26893, 0x0, 0x226f4, 0x27d2f, 0x241a3, 0x27d73,
+/* ED10 */ 0x26ed0, 0x272b6, 0x0, 0x211d9, 0x0, 0x23cfc, 0x2a6a9, 0x20eac,
+/* ED18 */ 0x20ef9, 0x0, 0x21ca2, 0x0, 0x24fc2, 0x27ff9, 0x20feb, 0x0,
+/* ED20 */ 0x0, 0x0, 0x22da0, 0x0, 0x247e0, 0x29d7c, 0x20fec, 0x20e0a,
+/* ED28 */ 0x0, 0x275a3, 0x20fed, 0x0, 0x26048, 0x21187, 0x0, 0x0,
+/* ED30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED38 */ 0x0, 0x0, 0x0, 0x24618, 0x0, 0x24b6e, 0x0, 0x0,
+/* ED40 */ 0x0, 0x25a95, 0x20979, 0x0, 0x0, 0x22465, 0x0, 0x29eac,
+/* ED48 */ 0x0, 0x0, 0x23cfe, 0x29f30, 0x0, 0x24fa9, 0x2959e, 0x29fde,
+/* ED50 */ 0x0, 0x23db6, 0x272b2, 0x267b3, 0x23720, 0x0, 0x0, 0x23ef7,
+/* ED58 */ 0x23e2c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2048e,
+/* ED60 */ 0x0, 0x0, 0x20eb6, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED68 */ 0x0, 0x0, 0x0, 0x2a434, 0x0, 0x0, 0x0, 0x0,
+/* ED70 */ 0x0, 0x230da, 0x243f2, 0x0, 0x0, 0x212a9, 0x0, 0x24963,
+/* ED78 */ 0x29e06, 0x0, 0x270ae, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED80 */ 0x0, 0x2176c, 0x0, 0x0, 0x294d0, 0x26335, 0x27164, 0x0,
+/* ED88 */ 0x20d28, 0x26d22, 0x24ae2, 0x20d71, 0x0, 0x0, 0x21f0f, 0x0,
+/* ED90 */ 0x0, 0x21dd1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* ED98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2493e, 0x0,
+/* EDA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2176d, 0x0,
+/* EDC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28e97,
+/* EDD0 */ 0x0, 0x26d23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x203fc,
+/* EDD8 */ 0x0, 0x0, 0x25c21, 0x23cfd, 0x0, 0x24919, 0x0, 0x0,
+/* EDE0 */ 0x0, 0x20cd4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x201f2, 0x0, 0x0,
+/* EDF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EDF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE00 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE08 */ 0x2a64a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE10 */ 0x0, 0x2837d, 0x0, 0x0, 0x0, 0x24a77, 0x0, 0x0,
+/* EE18 */ 0x0, 0x0, 0x0, 0x28a5a, 0x0, 0x0, 0x0, 0x0,
+/* EE20 */ 0x2a2b2, 0x0, 0x2f840, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE28 */ 0x0, 0x0, 0x24abb, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE30 */ 0x2183b, 0x26e05, 0x0, 0x0, 0x2251b, 0x0, 0x0, 0x0,
+/* EE38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE40 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE48 */ 0x26159, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x233f5, 0x0,
+/* EE58 */ 0x0, 0x0, 0x0, 0x28bc2, 0x0, 0x28e39, 0x0, 0x0,
+/* EE60 */ 0x21d46, 0x0, 0x0, 0x0, 0x20f3b, 0x0, 0x0, 0x0,
+/* EE68 */ 0x0, 0x0, 0x25f1a, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27486, 0x0,
+/* EE78 */ 0x0, 0x0, 0x0, 0x0, 0x267cc, 0x0, 0x26ed1, 0x0,
+/* EE80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE90 */ 0x0, 0x24011, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EE98 */ 0x0, 0x0, 0x0, 0x0, 0x28b2d, 0x0, 0x0, 0x0,
+/* EEA0 */ 0x0, 0x0, 0x23cc7, 0x25ed7, 0x27656, 0x25531, 0x21944, 0x212fe,
+/* EEA8 */ 0x29903, 0x26ddc, 0x270ad, 0x0, 0x261ad, 0x28a0f, 0x23677, 0x200ee,
+/* EEB0 */ 0x26846, 0x24f0e, 0x0, 0x0, 0x2634c, 0x0, 0x0, 0x2626b,
+/* EEB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EED0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EED8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EEF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF00 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF08 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF10 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF20 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF40 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF58 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF60 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EF98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFD0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFD8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* EFF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F000 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F008 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F010 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F018 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F020 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F028 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F030 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F038 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F040 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F048 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F050 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F058 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F060 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F068 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F070 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F078 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F080 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F088 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F090 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F098 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F0F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F100 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F108 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F110 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F118 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F120 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F128 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F130 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F138 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F140 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F148 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F150 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F158 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F160 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F168 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F170 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F178 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F180 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F188 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F190 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F198 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F1F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F200 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F208 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F210 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F218 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F220 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F228 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F230 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F238 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F240 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F248 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F250 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F258 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F260 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F268 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F270 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F278 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F280 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F288 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F290 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F298 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F2F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F300 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F308 */ 0x2010c, 0x0, 0x200d1, 0x200cd, 0x0, 0x0, 0x200cb, 0x21fe8,
+/* F310 */ 0x0, 0x200ca, 0x0, 0x0, 0x0, 0x0, 0x2010e, 0x0,
+/* F318 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F320 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F328 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F330 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F338 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F340 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F348 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F350 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F358 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F360 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F368 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F370 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F378 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F380 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F388 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F390 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F398 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3A0 */ 0x2a3a9, 0x21145, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3A8 */ 0x0, 0x0, 0x0, 0x0, 0x27735, 0x0, 0x0, 0x0,
+/* F3B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3F0 */ 0x209e7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F3F8 */ 0x0, 0x29df6, 0x2700e, 0x0, 0x2a133, 0x0, 0x0, 0x0,
+/* F400 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F408 */ 0x2846c, 0x21dca, 0x205d0, 0x22ae6, 0x0, 0x0, 0x0, 0x0,
+/* F410 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F418 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F420 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F428 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F430 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F438 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x27d84, 0x0, 0x0,
+/* F440 */ 0x20c42, 0x20d15, 0x2512b, 0x0, 0x22cc6, 0x0, 0x20341, 0x0,
+/* F448 */ 0x24db8, 0x294e5, 0x0, 0x280be, 0x0, 0x22c38, 0x0, 0x0,
+/* F450 */ 0x2815d, 0x269f2, 0x24dea, 0x0, 0x20d7c, 0x20fb4, 0x20cd5, 0x210f4,
+/* F458 */ 0x0, 0x0, 0x20e96, 0x20c0b, 0x20f64, 0x22ca9, 0x28256, 0x244d3,
+/* F460 */ 0x0, 0x20d46, 0x29a4d, 0x280e9, 0x0, 0x24ea7, 0x22cc2, 0x0,
+/* F468 */ 0x0, 0x295f4, 0x0, 0x0, 0x252c7, 0x297d4, 0x278c8, 0x22d44,
+/* F470 */ 0x0, 0x0, 0x0, 0x0, 0x260a5, 0x0, 0x0, 0x22d4c,
+/* F478 */ 0x22bca, 0x21077, 0x0, 0x2106f, 0x266da, 0x26716, 0x279a0, 0x0,
+/* F480 */ 0x25052, 0x20c43, 0x0, 0x221a1, 0x28b4c, 0x20731, 0x0, 0x0,
+/* F488 */ 0x201a9, 0x0, 0x0, 0x22d8d, 0x0, 0x245c8, 0x204fc, 0x26097,
+/* F490 */ 0x20f4c, 0x20d96, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22a66,
+/* F498 */ 0x2109d, 0x0, 0x0, 0x20d9c, 0x0, 0x0, 0x22775, 0x0,
+/* F4A0 */ 0x0, 0x0, 0x0, 0x0, 0x2a601, 0x20e09, 0x22acf, 0x22cc9,
+/* F4A8 */ 0x0, 0x210c8, 0x239c2, 0x0, 0x0, 0x2829b, 0x0, 0x25e49,
+/* F4B0 */ 0x220c7, 0x0, 0x20f31, 0x22cb2, 0x29720, 0x0, 0x0, 0x24e3b,
+/* F4B8 */ 0x0, 0x0, 0x27574, 0x22e8b, 0x22208, 0x2a65b, 0x28ccd, 0x20e7a,
+/* F4C0 */ 0x20c34, 0x2681c, 0x0, 0x210cf, 0x22803, 0x22939, 0x0, 0x251e3,
+/* F4C8 */ 0x20e8c, 0x20f8d, 0x20eaa, 0x0, 0x20f30, 0x20d47, 0x2114f, 0x20e4c,
+/* F4D0 */ 0x0, 0x20eab, 0x20ba9, 0x20d48, 0x210c0, 0x2113d, 0x0, 0x22696,
+/* F4D8 */ 0x0, 0x20fad, 0x233f4, 0x27639, 0x22bce, 0x20d7e, 0x20d7f, 0x22c51,
+/* F4E0 */ 0x22c55, 0x0, 0x20e98, 0x210c7, 0x20f2e, 0x2a632, 0x26b50, 0x28cd2,
+/* F4E8 */ 0x28d99, 0x28cca, 0x0, 0x0, 0x0, 0x0, 0x0, 0x29ec3,
+/* F4F0 */ 0x0, 0x0, 0x2775e, 0x22dee, 0x0, 0x0, 0x0, 0x0,
+/* F4F8 */ 0x26572, 0x0, 0x0, 0x0, 0x280bd, 0x0, 0x20efa, 0x20e0f,
+/* F500 */ 0x20e77, 0x20efb, 0x0, 0x24deb, 0x0, 0x20cd6, 0x0, 0x227b5,
+/* F508 */ 0x210c9, 0x20e10, 0x20e78, 0x21078, 0x21148, 0x28207, 0x21455, 0x20e79,
+/* F510 */ 0x24e50, 0x22da4, 0x0, 0x2101d, 0x2101e, 0x210f5, 0x210f6, 0x0,
+/* F518 */ 0x20e11, 0x27694, 0x282cd, 0x20fb5, 0x20e7b, 0x2517e, 0x0, 0x20fb6,
+/* F520 */ 0x21180, 0x252d8, 0x2a2bd, 0x249da, 0x2183a, 0x24177, 0x2827c, 0x0,
+/* F528 */ 0x0, 0x0, 0x2573d, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F530 */ 0x0, 0x0, 0x0, 0x25b74, 0x2313d, 0x0, 0x0, 0x0,
+/* F538 */ 0x0, 0x0, 0x21bc1, 0x2f878, 0x0, 0x20086, 0x0, 0x0,
+/* F540 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F548 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x248e9, 0x0,
+/* F550 */ 0x0, 0x0, 0x0, 0x2626a, 0x0, 0x0, 0x2634b, 0x0,
+/* F558 */ 0x0, 0x26612, 0x26951, 0x0, 0x0, 0x0, 0x278b2, 0x0,
+/* F560 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x28e0f, 0x0, 0x0,
+/* F568 */ 0x0, 0x0, 0x0, 0x29810, 0x0, 0x0, 0x0, 0x0,
+/* F570 */ 0x0, 0x0, 0x20087, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F578 */ 0x0, 0x29c73, 0x0, 0x0, 0x0, 0x2414e, 0x0, 0x0,
+/* F580 */ 0x0, 0x251cd, 0x0, 0x25d30, 0x0, 0x28a32, 0x0, 0x0,
+/* F588 */ 0x0, 0x0, 0x0, 0x23281, 0x2a107, 0x0, 0x21980, 0x0,
+/* F590 */ 0x0, 0x0, 0x0, 0x2870f, 0x0, 0x0, 0x2a2ba, 0x0,
+/* F598 */ 0x0, 0x0, 0x0, 0x29947, 0x28aea, 0x0, 0x0, 0x0,
+/* F5A0 */ 0x2207e, 0x0, 0x0, 0x289e3, 0x0, 0x0, 0x0, 0x0,
+/* F5A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5B0 */ 0x21db6, 0x0, 0x0, 0x0, 0x22712, 0x0, 0x233f9, 0x0,
+/* F5B8 */ 0x0, 0x23c63, 0x0, 0x0, 0x0, 0x24505, 0x0, 0x0,
+/* F5C0 */ 0x24a13, 0x0, 0x0, 0x0, 0x25ca4, 0x25695, 0x0, 0x0,
+/* F5C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28db9, 0x2143f,
+/* F5D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5E0 */ 0x0, 0x0, 0x0, 0x0, 0x2497b, 0x0, 0x2710d, 0x0,
+/* F5E8 */ 0x26d74, 0x0, 0x26b15, 0x26fbe, 0x0, 0x0, 0x0, 0x0,
+/* F5F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F5F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F600 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F608 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F610 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F618 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F620 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F628 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F630 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F638 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F640 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F648 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F650 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F658 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F660 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F668 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F670 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F678 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F680 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F688 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F690 */ 0x0, 0x0, 0x0, 0x0, 0x289c0, 0x0, 0x0, 0x0,
+/* F698 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x23f41, 0x0,
+/* F6A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x20325, 0x0, 0x0,
+/* F6B0 */ 0x20ed8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F6F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F700 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F708 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F710 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F718 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F720 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F728 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F730 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F738 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F740 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F748 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F750 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F758 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F760 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F768 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F770 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F778 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F780 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F788 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F790 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F798 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x200cc, 0x0,
+/* F7E8 */ 0x2008a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27607, 0x0,
+/* F7F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F7F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F800 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F808 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F810 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F818 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F820 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F828 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F830 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F838 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F840 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F848 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F850 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F858 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F860 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F868 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F870 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F878 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F880 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F888 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F890 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F898 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+/* F8F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+};
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sd.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sd.h
new file mode 100644
index 00000000000..9e9bd56c1d1
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sd.h
@@ -0,0 +1,168 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _SD_H
+#define _SD_H
+# include <gimage.h>
+
+/* All coordinates are in millimeters */
+/* they will be displayed to the user scaled by the units field of the design */
+
+#include "splinefont.h"
+
+struct epattern {
+ struct entity *tile;
+ real width, height;
+ DBounds bbox;
+ real transform[6];
+};
+
+typedef struct entpen {
+ Color col;
+ struct gradient *grad;
+ struct epattern *tile;
+ float scale;
+ float opacity;
+} Pen;
+
+typedef struct textunit {
+ unichar_t *text;
+ SplineFont *sf;
+ float size; /* in points */
+ float kernafter;
+ Pen fill;
+ struct textunit *next;
+} TextUnit;
+
+struct filledsplines {
+ SplineSet *splines;
+ unsigned int isfillable: 1; /* All splinesets are closed */
+ Pen fill, stroke; /* A value of 0xffffffff means do not fill or stroke */
+ float stroke_width;
+ enum linejoin join;
+ enum linecap cap;
+ real transform[6]; /* The stroke may be quite different depending on the transformation (ie. ellipse not circle, rotated, etc) */
+};
+
+struct text {
+ TextUnit *text;
+ real transform[6];
+ struct entity *bound;
+};
+
+struct image {
+ GImage *image;
+ real transform[6];
+ Color col; /* that gets poured into imagemasks */
+};
+
+struct group {
+ struct entity *group;
+};
+
+enum entity_type { et_splines, et_text, et_image, et_group };
+
+typedef struct entity {
+ enum entity_type type;
+ union {
+ struct filledsplines splines;
+ struct text text;
+ struct image image;
+ struct group group;
+ } u;
+ SplineSet *clippath;
+ DBounds bb;
+ struct entity *next;
+} Entity;
+
+typedef struct entlayer {
+ Entity *entities;
+ char *name;
+ unsigned int isvisible: 1;
+} EntLayer;
+
+typedef struct tile {
+ Entity *tile;
+ struct tileinstance { real scale; struct gwindow *pixmap; struct tileinstance *next; }
+ *instances;
+ char *name;
+} Tile;
+
+typedef struct splinedesign {
+ int lcnt, lmax, active;
+ EntLayer *layers;
+
+ real width, height; /* in millimeters */
+ int16 hpages, vpages;
+ real pwidth, pheight; /* in millimeters */
+ real units; /* if user wants to see things in */
+ /* centimeters then units will be 10, if inches then 25.4, if points */
+ /* then 25.4/72, if 1/1200" then 25.4/1200, etc. */
+ struct dview *dvs;
+} SplineDesign, Design;
+
+/* Used for type3 fonts briefly */
+/* This is not a "real" structure. It is a temporary hack that encompasses */
+/* various possibilities, the combination of which won't occur in reality */
+typedef struct entitychar {
+ Entity *splines;
+ RefChar *refs;
+ int width, vwidth;
+ SplineChar *sc;
+ uint8 fromtype3;
+} EntityChar;
+
+extern SplinePointList *SplinesFromEntityChar(EntityChar *ec,int *flags,int is_stroked);
+
+struct pskeydict {
+ int16 cnt, max;
+ uint8 is_executable;
+ struct pskeyval *entries;
+};
+
+enum pstype { ps_void, ps_num, ps_bool, ps_string, ps_instr, ps_lit,
+ ps_mark, ps_array, ps_dict };
+
+union vals {
+ real val;
+ int tf;
+ char *str;
+ struct pskeydict dict; /* and for arrays too */
+};
+
+struct pskeyval {
+ enum pstype type;
+ union vals u;
+ char *key;
+};
+
+typedef struct retstack {
+ int max;
+ int cnt;
+ real *stack;
+} RetStack;
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sfd.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sfd.c
new file mode 100644
index 00000000000..53671118138
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sfd.c
@@ -0,0 +1,4669 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include <utype.h>
+#include <sys/stat.h>
+
+#ifndef NAME_MAX
+# ifndef _POSIX_NAME_MAX
+# define _POSIX_NAME_MAX 512
+# endif
+# define NAME_MAX _POSIX_NAME_MAX
+#endif
+
+static const char *joins[] = { "miter", "round", "bevel", "inher", NULL };
+static const char *caps[] = { "butt", "round", "square", "inher", NULL };
+static const char *spreads[] = { "pad", "reflect", "repeat", NULL };
+
+#define SFD_PTFLAG_TYPE_MASK 0x3
+#define SFD_PTFLAG_IS_SELECTED 0x4
+#define SFD_PTFLAG_NEXTCP_IS_DEFAULT 0x8
+#define SFD_PTFLAG_PREVCP_IS_DEFAULT 0x10
+#define SFD_PTFLAG_ROUND_IN_X 0x20
+#define SFD_PTFLAG_ROUND_IN_Y 0x40
+#define SFD_PTFLAG_INTERPOLATE 0x80
+#define SFD_PTFLAG_INTERPOLATE_NEVER 0x100
+#define SFD_PTFLAG_PREV_EXTREMA_MARKED_ACCEPTABLE 0x200
+#define SFD_PTFLAG_FORCE_OPEN_PATH 0x400
+
+
+
+
+/* I will retain this list in case there are still some really old sfd files */
+/* including numeric encodings. This table maps them to string encodings */
+static const char *charset_names[] = {
+ "custom",
+ "iso8859-1", "iso8859-2", "iso8859-3", "iso8859-4", "iso8859-5",
+ "iso8859-6", "iso8859-7", "iso8859-8", "iso8859-9", "iso8859-10",
+ "iso8859-11", "iso8859-13", "iso8859-14", "iso8859-15",
+ "koi8-r",
+ "jis201",
+ "win", "mac", "symbol", "zapfding", "adobestandard",
+ "jis208", "jis212", "ksc5601", "gb2312", "big5", "big5hkscs", "johab",
+ "unicode", "unicode4", "sjis", "wansung", "gb2312pk", NULL};
+
+static const char *unicode_interp_names[] = { "none", "adobe", "greek",
+ "japanese", "tradchinese", "simpchinese", "korean", "ams", NULL };
+
+/* sfdir files and extensions */
+#define FONT_PROPS "font.props"
+#define STRIKE_PROPS "strike.props"
+#define EXT_CHAR '.'
+#define GLYPH_EXT ".glyph"
+#define BITMAP_EXT ".bitmap"
+#define STRIKE_EXT ".strike"
+#define SUBFONT_EXT ".subfont"
+#define INSTANCE_EXT ".instance"
+
+signed char inbase64[256] = {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
+ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
+ -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+};
+
+static const char *end_tt_instrs = "EndTTInstrs";
+static RefChar *SFDGetRef(FILE *sfd, int was_enc);
+static AnchorPoint *SFDReadAnchorPoints(FILE *sfd,SplineChar *sc,AnchorPoint** alist, AnchorPoint *lastap);
+static StemInfo *SFDReadHints(FILE *sfd);
+static DStemInfo *SFDReadDHints( SplineFont *sf,FILE *sfd,int old );
+extern uint8 *_IVParse(SplineFont *sf, char *text, int *len, void (*IVError)(void *,char *, int), void *iv);
+
+static int PeekMatch(FILE *stream, const char * target) {
+ // This returns 1 if target matches the next characters in the stream.
+ int pos1 = 0;
+ int lastread = getc(stream);
+ while (target[pos1] != '\0' && lastread != EOF && lastread == target[pos1]) {
+ pos1 ++; lastread = getc(stream);
+ }
+
+ int rewind_amount = pos1 + ((lastread == EOF) ? 0 : 1);
+ fseek(stream, -rewind_amount, SEEK_CUR);
+ return (target[pos1] == '\0');
+}
+
+/* Long lines can be broken by inserting \\\n (backslash newline) */
+/* into the line. I don't think this is ever ambiguous as I don't */
+/* think a line can end with backslash */
+/* UPDATE: it can... that's handled in getquotedeol() below. */
+static int nlgetc(FILE *sfd) {
+ int ch, ch2;
+
+ ch=getc(sfd);
+ if ( ch!='\\' )
+return( ch );
+ ch2 = getc(sfd);
+ if ( ch2=='\n' )
+return( nlgetc(sfd));
+ ungetc(ch2,sfd);
+return( ch );
+}
+
+static char *SFDReadUTF7Str(FILE *sfd) {
+ char *buffer = NULL, *pt, *end = NULL;
+ int ch1, ch2, ch3, ch4, done, c;
+ int prev_cnt=0, prev=0, in=0;
+
+ ch1 = nlgetc(sfd);
+ while ( isspace(ch1) && ch1!='\n' && ch1!='\r') ch1 = nlgetc(sfd);
+ if ( ch1=='\n' || ch1=='\r' )
+ ungetc(ch1,sfd);
+ if ( ch1!='"' )
+return( NULL );
+ pt = 0;
+ while ( (ch1=nlgetc(sfd))!=EOF && ch1!='"' ) {
+ done = 0;
+ if ( !done && !in ) {
+ if ( ch1=='+' ) {
+ ch1 = nlgetc(sfd);
+ if ( ch1=='-' ) {
+ ch1 = '+';
+ done = true;
+ } else {
+ in = true;
+ prev_cnt = 0;
+ }
+ } else
+ done = true;
+ }
+ if ( !done ) {
+ if ( ch1=='-' ) {
+ in = false;
+ } else if ( inbase64[ch1]==-1 ) {
+ in = false;
+ done = true;
+ } else {
+ ch1 = inbase64[ch1];
+ ch2 = inbase64[c = nlgetc(sfd)];
+ if ( ch2==-1 ) {
+ ungetc(c, sfd);
+ ch2 = ch3 = ch4 = 0;
+ } else {
+ ch3 = inbase64[c = nlgetc(sfd)];
+ if ( ch3==-1 ) {
+ ungetc(c, sfd);
+ ch3 = ch4 = 0;
+ } else {
+ ch4 = inbase64[c = nlgetc(sfd)];
+ if ( ch4==-1 ) {
+ ungetc(c, sfd);
+ ch4 = 0;
+ }
+ }
+ }
+ ch1 = (ch1<<18) | (ch2<<12) | (ch3<<6) | ch4;
+ if ( prev_cnt==0 ) {
+ prev = ch1&0xff;
+ ch1 >>= 8;
+ prev_cnt = 1;
+ } else /* if ( prev_cnt == 1 ) */ {
+ ch1 |= (prev<<24);
+ prev = (ch1&0xffff);
+ ch1 = (ch1>>16)&0xffff;
+ prev_cnt = 2;
+ }
+ done = true;
+ }
+ }
+ if ( pt+10>=end ) {
+ if ( buffer==NULL ) {
+ pt = buffer = malloc(400);
+ end = buffer+400;
+ } else if (pt) {
+ char *temp = realloc(buffer,end-buffer+400);
+ pt = temp+(pt-buffer);
+ end = temp+(end-buffer+400);
+ buffer = temp;
+ }
+ }
+ if ( pt && done )
+ pt = utf8_idpb(pt,ch1,0);
+ if ( prev_cnt==2 ) {
+ prev_cnt = 0;
+ if ( pt && prev!=0 )
+ pt = utf8_idpb(pt,prev,0);
+ }
+ if ( pt==0 ) {
+ free(buffer);
+ return( NULL );
+ }
+ }
+ if ( buffer==NULL )
+return( NULL );
+ *pt = '\0';
+ pt = copy(buffer);
+ free(buffer );
+return( pt );
+}
+
+struct enc85 {
+ FILE *sfd;
+ unsigned char sofar[4];
+ int pos;
+ int ccnt;
+};
+
+static void *SFDUnPickle(FILE *sfd, int python_data_has_lists) {
+ int ch, quoted;
+ static int max = 0;
+ static char *buf = NULL;
+ char *pt, *end;
+ int cnt;
+
+ pt = buf; end = buf+max;
+ while ( (ch=nlgetc(sfd))!='"' && ch!='\n' && ch!=EOF );
+ if ( ch!='"' )
+return( NULL );
+
+ quoted = false;
+ while ( ((ch=nlgetc(sfd))!='"' || quoted) && ch!=EOF ) {
+ if ( !quoted && ch=='\\' )
+ quoted = true;
+ else {
+ if ( pt>=end ) {
+ cnt = pt-buf;
+ buf = realloc(buf,(max+=200)+1);
+ pt = buf+cnt;
+ end = buf+max;
+ }
+ *pt++ = ch;
+ quoted = false;
+ }
+ }
+ if ( pt==buf )
+return( NULL );
+ *pt='\0';
+#ifdef _NO_PYTHON
+return( copy(buf));
+#else
+return( PyFF_UnPickleMeToObjects(buf));
+#endif
+ /* buf is a static buffer, I don't free it, I'll reuse it next time */
+}
+
+/* ********************************* INPUT ********************************** */
+#include "sfd1.h"
+
+char *getquotedeol(FILE *sfd) {
+ char *pt, *str, *end;
+ int ch;
+
+ pt = str = malloc(101); end = str+100;
+ while ( isspace(ch = nlgetc(sfd)) && ch!='\r' && ch!='\n' );
+ while ( ch!='\n' && ch!='\r' && ch!=EOF ) {
+ if ( ch=='\\' ) {
+ /* We can't use nlgetc() here, because it would misinterpret */
+ /* double backslash at the end of line. Multiline strings, */
+ /* broken with backslash + newline, are just handled above. */
+ ch = getc(sfd);
+ if ( ch=='n' ) ch='\n';
+ /* else if ( ch=='\\' ) ch=='\\'; */ /* second backslash of '\\' */
+
+ /* FontForge doesn't write other escape sequences in this context. */
+ /* So any other value of ch is assumed impossible. */
+ }
+ if ( pt>=end ) {
+ pt = realloc(str,end-str+101);
+ end = pt+(end-str)+100;
+ str = pt;
+ pt = end-100;
+ }
+ *pt++ = ch;
+ ch = nlgetc(sfd);
+ }
+ *pt='\0';
+ /* these strings should be in utf8 now, but some old sfd files might have */
+ /* latin1. Not a severe problems because they SHOULD be in ASCII. So any */
+ /* non-ascii strings are erroneous anyway */
+ if ( !utf8_valid(str) ) {
+ pt = latin1_2_utf8_copy(str);
+ free(str);
+ str = pt;
+ }
+return( str );
+}
+
+static int geteol(FILE *sfd, char *tokbuf) {
+ char *pt=tokbuf, *end = tokbuf+2000-2; int ch;
+
+ while ( isspace(ch = nlgetc(sfd)) && ch!='\r' && ch!='\n' );
+ while ( ch!='\n' && ch!='\r' && ch!=EOF ) {
+ if ( pt<end ) *pt++ = ch;
+ ch = nlgetc(sfd);
+ }
+ *pt='\0';
+return( pt!=tokbuf?1:ch==EOF?-1: 0 );
+}
+
+static int getprotectedname(FILE *sfd, char *tokbuf) {
+ char *pt=tokbuf, *end = tokbuf+100-2; int ch;
+
+ while ( (ch = nlgetc(sfd))==' ' || ch=='\t' );
+ while ( ch!=EOF && !isspace(ch) && ch!='[' && ch!=']' && ch!='{' && ch!='}' && ch!='<' && ch!='%' ) {
+ if ( pt<end ) *pt++ = ch;
+ ch = nlgetc(sfd);
+ }
+ if ( pt==tokbuf && ch!=EOF )
+ *pt++ = ch;
+ else
+ ungetc(ch,sfd);
+ *pt='\0';
+return( pt!=tokbuf?1:ch==EOF?-1: 0 );
+}
+
+int getname(FILE *sfd, char *tokbuf) {
+ int ch;
+
+ while ( isspace(ch = nlgetc(sfd)));
+ ungetc(ch,sfd);
+return( getprotectedname(sfd,tokbuf));
+}
+
+static uint32 gettag(FILE *sfd) {
+ int ch, quoted;
+ uint32 tag;
+
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( (quoted = (ch=='\'')) ) ch = nlgetc(sfd);
+ tag = (ch<<24)|(nlgetc(sfd)<<16);
+ tag |= nlgetc(sfd)<<8;
+ tag |= nlgetc(sfd);
+ if ( quoted ) (void) nlgetc(sfd);
+return( tag );
+}
+
+static int getint(FILE *sfd, int *val) {
+ char tokbuf[100]; int ch;
+ char *pt=tokbuf, *end = tokbuf+100-2;
+
+ while ( isspace(ch = nlgetc(sfd)));
+ if ( ch=='-' || ch=='+' ) {
+ *pt++ = ch;
+ ch = nlgetc(sfd);
+ }
+ while ( isdigit(ch)) {
+ if ( pt<end ) *pt++ = ch;
+ ch = nlgetc(sfd);
+ }
+ *pt='\0';
+ ungetc(ch,sfd);
+ *val = strtol(tokbuf,NULL,10);
+return( pt!=tokbuf?1:ch==EOF?-1: 0 );
+}
+
+static int getlonglong(FILE *sfd, long long *val) {
+ char tokbuf[100]; int ch;
+ char *pt=tokbuf, *end = tokbuf+100-2;
+
+ while ( isspace(ch = nlgetc(sfd)));
+ if ( ch=='-' || ch=='+' ) {
+ *pt++ = ch;
+ ch = nlgetc(sfd);
+ }
+ while ( isdigit(ch)) {
+ if ( pt<end ) *pt++ = ch;
+ ch = nlgetc(sfd);
+ }
+ *pt='\0';
+ ungetc(ch,sfd);
+ *val = strtoll(tokbuf,NULL,10);
+return( pt!=tokbuf?1:ch==EOF?-1: 0 );
+}
+
+static int gethex(FILE *sfd, uint32 *val) {
+ char tokbuf[100]; int ch;
+ char *pt=tokbuf, *end = tokbuf+100-2;
+
+ while ( isspace(ch = nlgetc(sfd)));
+ if ( ch=='#' )
+ ch = nlgetc(sfd);
+ if ( ch=='-' || ch=='+' ) {
+ *pt++ = ch;
+ ch = nlgetc(sfd);
+ }
+ if ( ch=='0' ) {
+ ch = nlgetc(sfd);
+ if ( ch=='x' || ch=='X' )
+ ch = nlgetc(sfd);
+ else {
+ ungetc(ch,sfd);
+ ch = '0';
+ }
+ }
+ while ( isdigit(ch) || (ch>='a' && ch<='f') || (ch>='A' && ch<='F')) {
+ if ( pt<end ) *pt++ = ch;
+ ch = nlgetc(sfd);
+ }
+ *pt='\0';
+ ungetc(ch,sfd);
+ *val = strtoul(tokbuf,NULL,16);
+return( pt!=tokbuf?1:ch==EOF?-1: 0 );
+}
+
+static int gethexints(FILE *sfd, uint32 *val, int cnt) {
+ int i, ch;
+
+ for ( i=0; i<cnt; ++i ) {
+ if ( i!=0 ) {
+ ch = nlgetc(sfd);
+ if ( ch!='.' ) ungetc(ch,sfd);
+ }
+ if ( !gethex(sfd,&val[i]))
+return( false );
+ }
+return( true );
+}
+
+static int getsint(FILE *sfd, int16 *val) {
+ int val2;
+ int ret = getint(sfd,&val2);
+ *val = val2;
+return( ret );
+}
+
+static int getusint(FILE *sfd, uint16 *val) {
+ int val2;
+ int ret = getint(sfd,&val2);
+ *val = val2;
+return( ret );
+}
+
+static int getreal(FILE *sfd, real *val) {
+ char tokbuf[100];
+ int ch;
+ char *pt=tokbuf, *end = tokbuf+100-2, *nend;
+
+ while ( isspace(ch = nlgetc(sfd)));
+ if ( ch!='e' && ch!='E' ) /* real's can't begin with exponants */
+ while ( isdigit(ch) || ch=='-' || ch=='+' || ch=='e' || ch=='E' || ch=='.' || ch==',' ) {
+ if ( pt<end ) *pt++ = ch;
+ ch = nlgetc(sfd);
+ }
+ *pt='\0';
+ ungetc(ch,sfd);
+ *val = strtod(tokbuf,&nend);
+ /* Beware of different locals! */
+ if ( *nend!='\0' ) {
+ if ( *nend=='.' )
+ *nend = ',';
+ else if ( *nend==',' )
+ *nend = '.';
+ *val = strtod(tokbuf,&nend);
+ }
+return( pt!=tokbuf && *nend=='\0'?1:ch==EOF?-1: 0 );
+}
+
+/* Don't use nlgetc here. We carefully control newlines when dumping in 85 */
+/* but backslashes can occur at end of line. */
+static int Dec85(struct enc85 *dec) {
+ int ch1, ch2, ch3, ch4, ch5;
+ unsigned int val;
+
+ if ( dec->pos<0 ) {
+ while ( isspace(ch1=getc(dec->sfd)));
+ if ( ch1=='z' ) {
+ dec->sofar[0] = dec->sofar[1] = dec->sofar[2] = dec->sofar[3] = 0;
+ dec->pos = 3;
+ } else {
+ while ( isspace(ch2=getc(dec->sfd)));
+ while ( isspace(ch3=getc(dec->sfd)));
+ while ( isspace(ch4=getc(dec->sfd)));
+ while ( isspace(ch5=getc(dec->sfd)));
+ val = ((((ch1-'!')*85+ ch2-'!')*85 + ch3-'!')*85 + ch4-'!')*85 + ch5-'!';
+ dec->sofar[3] = val>>24;
+ dec->sofar[2] = val>>16;
+ dec->sofar[1] = val>>8;
+ dec->sofar[0] = val;
+ dec->pos = 3;
+ }
+ }
+return( dec->sofar[dec->pos--] );
+}
+
+static void SFDGetType1(FILE *sfd) {
+ /* We've read the OrigType1 token (this is now obselete, but parse it in case there are any old sfds) */
+ int len;
+ struct enc85 dec;
+
+ memset(&dec,'\0', sizeof(dec)); dec.pos = -1;
+ dec.sfd = sfd;
+
+ getint(sfd,&len);
+ while ( --len >= 0 )
+ Dec85(&dec);
+}
+
+static void SFDGetTtfInstrs(FILE *sfd, SplineChar *sc) {
+ /* We've read the TtfInstr token, it is followed by a byte count */
+ /* and then the instructions in enc85 format */
+ int i,len;
+ struct enc85 dec;
+
+ memset(&dec,'\0', sizeof(dec)); dec.pos = -1;
+ dec.sfd = sfd;
+
+ getint(sfd,&len);
+ sc->ttf_instrs = malloc(len);
+ sc->ttf_instrs_len = len;
+ for ( i=0; i<len; ++i )
+ sc->ttf_instrs[i] = Dec85(&dec);
+}
+
+static void tterr(void *UNUSED(rubbish), char *message, int UNUSED(pos)) {
+ LogError(_("When loading tt instrs from sfd: %s\n"), message );
+}
+
+static void SFDGetTtInstrs(FILE *sfd, SplineChar *sc) {
+ /* We've read the TtInstr token, it is followed by text versions of */
+ /* the instructions, slurp it all into a big buffer, and then parse that */
+ char *buf=NULL, *pt=buf, *end=buf;
+ int ch;
+ int backlen = strlen(end_tt_instrs);
+ int instr_len;
+
+ while ( (ch=nlgetc(sfd))!=EOF ) {
+ if ( pt>=end ) {
+ char *newbuf = realloc(buf,(end-buf+200));
+ pt = newbuf+(pt-buf);
+ end = newbuf+(end+200-buf);
+ buf = newbuf;
+ }
+ *pt++ = ch;
+ if ( pt-buf>backlen && strncmp(pt-backlen,end_tt_instrs,backlen)==0 ) {
+ pt -= backlen;
+ break;
+ }
+ }
+ *pt = '\0';
+
+ sc->ttf_instrs = _IVParse(sc->parent,buf,&instr_len,tterr,NULL);
+ sc->ttf_instrs_len = instr_len;
+
+ free(buf);
+}
+
+static struct ttf_table *SFDGetTtfTable(FILE *sfd, SplineFont *sf,struct ttf_table *lasttab[2]) {
+ /* We've read the TtfTable token, it is followed by a tag and a byte count */
+ /* and then the instructions in enc85 format */
+ int i,len;
+ int which;
+ struct enc85 dec;
+ struct ttf_table *tab = chunkalloc(sizeof(struct ttf_table));
+
+ memset(&dec,'\0', sizeof(dec)); dec.pos = -1;
+ dec.sfd = sfd;
+
+ tab->tag = gettag(sfd);
+
+ if ( tab->tag==CHR('f','p','g','m') || tab->tag==CHR('p','r','e','p') ||
+ tab->tag==CHR('c','v','t',' ') || tab->tag==CHR('m','a','x','p'))
+ which = 0;
+ else
+ which = 1;
+
+ getint(sfd,&len);
+ tab->data = malloc(len);
+ tab->len = len;
+ for ( i=0; i<len; ++i )
+ tab->data[i] = Dec85(&dec);
+
+ if ( lasttab[which]!=NULL )
+ lasttab[which]->next = tab;
+ else if ( which==0 )
+ sf->ttf_tables = tab;
+ else
+ sf->ttf_tab_saved = tab;
+ lasttab[which] = tab;
+return( tab );
+}
+
+static struct ttf_table *SFDGetShortTable(FILE *sfd, SplineFont *sf,struct ttf_table *lasttab[2]) {
+ /* We've read the ShortTable token, it is followed by a tag and a word count */
+ /* and then the (text) values of the words that make up the cvt table */
+ int i,len, ch;
+ uint8 *pt;
+ int which, iscvt, started;
+ struct ttf_table *tab = chunkalloc(sizeof(struct ttf_table));
+
+ tab->tag = gettag(sfd);
+
+ if ( tab->tag==CHR('f','p','g','m') || tab->tag==CHR('p','r','e','p') ||
+ tab->tag==CHR('c','v','t',' ') || tab->tag==CHR('m','a','x','p'))
+ which = 0;
+ else
+ which = 1;
+ iscvt = tab->tag==CHR('c','v','t',' ');
+
+ getint(sfd,&len);
+ pt = tab->data = malloc(2*len);
+ tab->len = 2*len;
+ started = false;
+ for ( i=0; i<len; ++i ) {
+ int num;
+ getint(sfd,&num);
+ *pt++ = num>>8;
+ *pt++ = num&0xff;
+ if ( iscvt ) {
+ ch = nlgetc(sfd);
+ if ( ch==' ' ) {
+ if ( !started ) {
+ sf->cvt_names = calloc(len+1,sizeof(char *));
+ sf->cvt_names[len] = END_CVT_NAMES;
+ started = true;
+ }
+ sf->cvt_names[i] = SFDReadUTF7Str(sfd);
+ } else
+ ungetc(ch,sfd);
+ }
+ }
+
+ if ( lasttab[which]!=NULL )
+ lasttab[which]->next = tab;
+ else if ( which==0 )
+ sf->ttf_tables = tab;
+ else
+ sf->ttf_tab_saved = tab;
+ lasttab[which] = tab;
+return( tab );
+}
+
+static struct ttf_table *SFDGetTtTable(FILE *sfd, SplineFont *sf,struct ttf_table *lasttab[2]) {
+ /* We've read the TtTable token, it is followed by a tag */
+ /* and then the instructions in text format */
+ int ch;
+ int which;
+ struct ttf_table *tab = chunkalloc(sizeof(struct ttf_table));
+ char *buf=NULL, *pt=buf, *end=buf;
+ int backlen = strlen(end_tt_instrs);
+
+ tab->tag = gettag(sfd);
+
+ if ( tab->tag==CHR('f','p','g','m') || tab->tag==CHR('p','r','e','p') ||
+ tab->tag==CHR('c','v','t',' ') || tab->tag==CHR('m','a','x','p'))
+ which = 0;
+ else
+ which = 1;
+
+ while ( (ch=nlgetc(sfd))!=EOF ) {
+ if ( pt>=end ) {
+ char *newbuf = realloc(buf,(end-buf+200));
+ pt = newbuf+(pt-buf);
+ end = newbuf+(end+200-buf);
+ buf = newbuf;
+ }
+ *pt++ = ch;
+ if ( pt-buf>backlen && strncmp(pt-backlen,end_tt_instrs,backlen)==0 ) {
+ pt -= backlen;
+ break;
+ }
+ }
+ *pt = '\0';
+ tab->data = _IVParse(sf,buf,(int*)&tab->len,tterr,NULL);
+ free(buf);
+
+ if ( lasttab[which]!=NULL )
+ lasttab[which]->next = tab;
+ else if ( which==0 )
+ sf->ttf_tables = tab;
+ else
+ sf->ttf_tab_saved = tab;
+ lasttab[which] = tab;
+return( tab );
+}
+
+static int SFDCloseCheck(SplinePointList *spl,int order2) {
+ if ( spl->first!=spl->last &&
+ RealNear(spl->first->me.x,spl->last->me.x) &&
+ RealNear(spl->first->me.y,spl->last->me.y)) {
+ SplinePoint *oldlast = spl->last;
+ spl->first->prevcp = oldlast->prevcp;
+ spl->first->noprevcp = oldlast->noprevcp;
+ oldlast->prev->from->next = NULL;
+ spl->last = oldlast->prev->from;
+ chunkfree(oldlast->prev,sizeof(*oldlast));
+ chunkfree(oldlast->hintmask,sizeof(HintMask));
+ chunkfree(oldlast,sizeof(*oldlast));
+ SplineMake(spl->last,spl->first,order2);
+ spl->last = spl->first;
+return( true );
+ }
+return( false );
+}
+
+static void SFDGetHintMask(FILE *sfd,HintMask *hintmask) {
+ int nibble = 0, ch;
+
+ memset(hintmask,0,sizeof(HintMask));
+ for (;;) {
+ ch = nlgetc(sfd);
+ if ( isdigit(ch))
+ ch -= '0';
+ else if ( ch>='a' && ch<='f' )
+ ch -= 'a'-10;
+ else if ( ch>='A' && ch<='F' )
+ ch -= 'A'-10;
+ else {
+ ungetc(ch,sfd);
+ break;
+ }
+ if ( nibble<2*HntMax/8 )
+ (*hintmask)[nibble>>1] |= ch<<(4*(1-(nibble&1)));
+ ++nibble;
+ }
+}
+
+static void SFDGetSpiros(FILE *sfd,SplineSet *cur) {
+ int ch;
+ spiro_cp cp;
+
+ ch = nlgetc(sfd); /* S */
+ ch = nlgetc(sfd); /* p */
+ ch = nlgetc(sfd); /* i */
+ ch = nlgetc(sfd); /* r */
+ ch = nlgetc(sfd); /* o */
+ while ( fscanf(sfd,"%lg %lg %c", &cp.x, &cp.y, &cp.ty )==3 ) {
+ if ( cur!=NULL ) {
+ if ( cur->spiro_cnt>=cur->spiro_max )
+ cur->spiros = realloc(cur->spiros,(cur->spiro_max+=10)*sizeof(spiro_cp));
+ cur->spiros[cur->spiro_cnt++] = cp;
+ }
+ }
+ if ( cur!=NULL && (cur->spiros[cur->spiro_cnt-1].ty&0x7f)!=SPIRO_END ) {
+ if ( cur->spiro_cnt>=cur->spiro_max )
+ cur->spiros = realloc(cur->spiros,(cur->spiro_max+=1)*sizeof(spiro_cp));
+ memset(&cur->spiros[cur->spiro_cnt],0,sizeof(spiro_cp));
+ cur->spiros[cur->spiro_cnt++].ty = SPIRO_END;
+ }
+ ch = nlgetc(sfd);
+ if ( ch=='E' ) {
+ ch = nlgetc(sfd); /* n */
+ ch = nlgetc(sfd); /* d */
+ ch = nlgetc(sfd); /* S */
+ ch = nlgetc(sfd); /* p */
+ ch = nlgetc(sfd); /* i */
+ ch = nlgetc(sfd); /* r */
+ ch = nlgetc(sfd); /* o */
+ } else
+ ungetc(ch,sfd);
+}
+
+static SplineSet *SFDGetSplineSet(FILE *sfd,int order2) {
+ SplinePointList *cur=NULL, *head=NULL;
+ BasePoint current;
+ real stack[100];
+ int sp=0;
+ SplinePoint *pt = NULL;
+ int ch;
+ int ch2;
+ char tok[100];
+ int ttfindex = 0;
+ int lastacceptable;
+
+ current.x = current.y = 0;
+ lastacceptable = 0;
+ while ( 1 ) {
+ int have_read_val = 0;
+ int val = 0;
+
+ while ( getreal(sfd,&stack[sp])==1 )
+ if ( sp<99 )
+ ++sp;
+ while ( isspace(ch=nlgetc(sfd)));
+ if ( ch=='E' || ch=='e' || ch==EOF )
+ break;
+ if ( ch=='S' ) {
+ ungetc(ch,sfd);
+ SFDGetSpiros(sfd,cur);
+ continue;
+ } else if (( ch=='N' ) &&
+ nlgetc(sfd)=='a' && /* a */
+ nlgetc(sfd)=='m' && /* m */
+ nlgetc(sfd)=='e' && /* e */
+ nlgetc(sfd)=='d' ) /* d */ {
+ ch2 = nlgetc(sfd); /* : */
+ // We are either fetching a splineset name (Named:) or a point name (NamedP:).
+ if (ch2=='P') { if ((nlgetc(sfd)==':') && (pt!=NULL)) { if (pt->name!=NULL) {free(pt->name);} pt->name = SFDReadUTF7Str(sfd); } }
+ else if (ch2==':') { if (cur != NULL) cur->contour_name = SFDReadUTF7Str(sfd); else { char * freetmp = SFDReadUTF7Str(sfd); free(freetmp); freetmp = NULL; } }
+ continue;
+ } else if ( ch=='P' && PeekMatch(sfd,"ath") ) {
+ int flags;
+ nlgetc(sfd); /* a */
+ nlgetc(sfd); /* t */
+ nlgetc(sfd); /* h */
+ if (PeekMatch(sfd,"Flags:")) {
+ nlgetc(sfd); /* F */
+ nlgetc(sfd); /* l */
+ nlgetc(sfd); /* a */
+ nlgetc(sfd); /* g */
+ nlgetc(sfd); /* s */
+ nlgetc(sfd); /* : */
+ getint(sfd,&flags);
+ if (cur != NULL) cur->is_clip_path = flags&1;
+ } else if (PeekMatch(sfd,"Start:")) {
+ nlgetc(sfd); /* S */
+ nlgetc(sfd); /* t */
+ nlgetc(sfd); /* a */
+ nlgetc(sfd); /* r */
+ nlgetc(sfd); /* t */
+ nlgetc(sfd); /* : */
+ getint(sfd,&flags);
+ if (cur != NULL) cur->start_offset = flags;
+ }
+ }
+ pt = NULL;
+ if ( ch=='l' || ch=='m' ) {
+ if ( sp>=2 ) {
+ current.x = stack[sp-2];
+ current.y = stack[sp-1];
+ sp -= 2;
+ pt = chunkalloc(sizeof(SplinePoint));
+ pt->me = current;
+ pt->noprevcp = true; pt->nonextcp = true;
+ if ( ch=='m' ) {
+ SplinePointList *spl = chunkalloc(sizeof(SplinePointList));
+ spl->first = spl->last = pt;
+ spl->start_offset = 0;
+ if ( cur!=NULL ) {
+ if ( SFDCloseCheck(cur,order2))
+ --ttfindex;
+ cur->next = spl;
+ } else
+ head = spl;
+ cur = spl;
+ } else {
+ if ( cur!=NULL && cur->first!=NULL && (cur->first!=cur->last || cur->first->next==NULL) ) {
+ if ( cur->last->nextcpindex==0xfffe )
+ cur->last->nextcpindex = 0xffff;
+ SplineMake(cur->last,pt,order2);
+ cur->last->nonextcp = 1;
+ pt->noprevcp = 1;
+ cur->last = pt;
+ }
+ }
+ } else
+ sp = 0;
+ } else if ( ch=='c' ) {
+ if ( sp>=6 ) {
+ getint(sfd,&val);
+ have_read_val = 1;
+
+
+ current.x = stack[sp-2];
+ current.y = stack[sp-1];
+ real original_current_x = current.x;
+ if( val & SFD_PTFLAG_FORCE_OPEN_PATH )
+ {
+ // Find somewhere vacant to put the point.x for now
+ // we need to do this check in case we choose a point that is already
+ // on the spline and this connect back to that point instead of creating
+ // an open path
+ while( 1 )
+ {
+ real offset = 0.1;
+ current.x += offset;
+ if( !cur || !SplinePointListContainsPointAtX( cur, current.x ))
+ {
+ break;
+ }
+ }
+ }
+
+ if ( cur!=NULL && cur->first!=NULL && (cur->first!=cur->last || cur->first->next==NULL) ) {
+ cur->last->nextcp.x = stack[sp-6];
+ cur->last->nextcp.y = stack[sp-5];
+ cur->last->nonextcp = false;
+ pt = chunkalloc(sizeof(SplinePoint));
+ pt->prevcp.x = stack[sp-4];
+ pt->prevcp.y = stack[sp-3];
+ pt->me = current;
+ pt->nonextcp = true;
+ if ( cur->last->nextcpindex==0xfffe )
+ cur->last->nextcpindex = ttfindex++;
+ else if ( cur->last->nextcpindex!=0xffff )
+ ttfindex = cur->last->nextcpindex+1;
+ SplineMake(cur->last,pt,order2);
+ cur->last = pt;
+ // pt->me is a copy of 'current' so we should now move
+ // the x coord of pt->me back to where it should be.
+ // The whole aim here is that this spline remains an open path
+ // when PTFLAG_FORCE_OPEN_PATH is set.
+ pt->me.x = original_current_x;
+ }
+
+ // Move the point back to the same location it was
+ // but do not connect it back to the point that is
+ // already there.
+ if( val & SFD_PTFLAG_FORCE_OPEN_PATH )
+ {
+ current.x = original_current_x;
+ }
+
+ sp -= 6;
+ } else
+ sp = 0;
+ }
+ if ( pt!=NULL ) {
+ if( !have_read_val )
+ getint(sfd,&val);
+
+ pt->pointtype = (val & SFD_PTFLAG_TYPE_MASK);
+ pt->selected = (val & SFD_PTFLAG_IS_SELECTED) > 0;
+ pt->nextcpdef = (val & SFD_PTFLAG_NEXTCP_IS_DEFAULT) > 0;
+ pt->prevcpdef = (val & SFD_PTFLAG_PREVCP_IS_DEFAULT) > 0;
+ pt->roundx = (val & SFD_PTFLAG_ROUND_IN_X) > 0;
+ pt->roundy = (val & SFD_PTFLAG_ROUND_IN_Y) > 0;
+ pt->dontinterpolate = (val & SFD_PTFLAG_INTERPOLATE_NEVER) > 0;
+ if ( pt->prev!=NULL )
+ pt->prev->acceptableextrema = (val & SFD_PTFLAG_PREV_EXTREMA_MARKED_ACCEPTABLE) > 0;
+ else
+ lastacceptable = (val & SFD_PTFLAG_PREV_EXTREMA_MARKED_ACCEPTABLE) > 0;
+ if ( val&0x80 )
+ pt->ttfindex = 0xffff;
+ else
+ pt->ttfindex = ttfindex++;
+ pt->nextcpindex = 0xfffe;
+ ch = nlgetc(sfd);
+ if ( ch=='x' ) {
+ pt->hintmask = chunkalloc(sizeof(HintMask));
+ SFDGetHintMask(sfd,pt->hintmask);
+ } else if ( ch!=',' )
+ ungetc(ch,sfd);
+ else {
+ ch = nlgetc(sfd);
+ if ( ch==',' )
+ pt->ttfindex = 0xfffe;
+ else {
+ ungetc(ch,sfd);
+ getint(sfd,&val);
+ pt->ttfindex = val;
+ nlgetc(sfd); /* skip comma */
+ if ( val!=-1 )
+ ttfindex = val+1;
+ }
+ ch = nlgetc(sfd);
+ if ( ch=='\r' || ch=='\n' )
+ ungetc(ch,sfd);
+ else {
+ ungetc(ch,sfd);
+ getint(sfd,&val);
+ pt->nextcpindex = val;
+ if ( val!=-1 )
+ ttfindex = val+1;
+ }
+ }
+ }
+ }
+ if ( cur!=NULL )
+ SFDCloseCheck(cur,order2);
+ if ( lastacceptable && cur->last->prev!=NULL )
+ cur->last->prev->acceptableextrema = true;
+ getname(sfd,tok);
+return( head );
+}
+
+static void SFDGetMinimumDistances(FILE *sfd, SplineChar *sc) {
+ SplineSet *ss;
+ SplinePoint *sp;
+ int pt,i, val, err;
+ int ch;
+ SplinePoint **mapping=NULL;
+ MinimumDistance *last, *md, *mdhead=NULL;
+
+ for ( i=0; i<2; ++i ) {
+ pt = 0;
+ for ( ss = sc->layers[ly_fore].splines; ss!=NULL; ss=ss->next ) {
+ for ( sp=ss->first; ; ) {
+ if ( mapping!=NULL ) mapping[pt] = sp;
+ pt++;
+ if ( sp->next == NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==ss->first )
+ break;
+ }
+ }
+ if ( mapping==NULL )
+ mapping = calloc(pt,sizeof(SplinePoint *));
+ }
+
+ last = NULL;
+ for ( ch=nlgetc(sfd); ch!=EOF && ch!='\n'; ch=nlgetc(sfd)) {
+ err = false;
+ while ( isspace(ch) && ch!='\n' ) ch=nlgetc(sfd);
+ if ( ch=='\n' )
+ break;
+ md = chunkalloc(sizeof(MinimumDistance));
+ if ( ch=='x' ) md->x = true;
+ getint(sfd,&val);
+ if ( val<-1 || val>=pt ) {
+ IError( "Minimum Distance specifies bad point (%d) in sfd file\n", val );
+ err = true;
+ } else if ( val!=-1 ) {
+ md->sp1 = mapping[val];
+ md->sp1->dontinterpolate = true;
+ }
+ ch = nlgetc(sfd);
+ if ( ch!=',' ) {
+ IError( "Minimum Distance lacks a comma where expected\n" );
+ err = true;
+ }
+ getint(sfd,&val);
+ if ( val<-1 || val>=pt ) {
+ IError( "Minimum Distance specifies bad point (%d) in sfd file\n", val );
+ err = true;
+ } else if ( val!=-1 ) {
+ md->sp2 = mapping[val];
+ md->sp2->dontinterpolate = true;
+ }
+ if ( !err ) {
+ if ( last!=NULL )
+ last->next = md;
+ last = md;
+ } else
+ chunkfree(md,sizeof(MinimumDistance));
+ }
+ free(mapping);
+
+ /* Obsolete concept */
+ MinimumDistancesFree(mdhead);
+}
+
+static HintInstance *SFDReadHintInstances(FILE *sfd, StemInfo *stem) {
+ HintInstance *head=NULL, *last=NULL, *cur;
+ real begin, end;
+ int ch;
+
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ if ( ch=='G' && stem != NULL ) {
+ stem->ghost = true;
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ }
+ if ( ch!='<' ) {
+ ungetc(ch,sfd);
+return(NULL);
+ }
+ while ( getreal(sfd,&begin)==1 && getreal(sfd,&end)) {
+ cur = chunkalloc(sizeof(HintInstance));
+ cur->begin = begin;
+ cur->end = end;
+ if ( head == NULL )
+ head = cur;
+ else
+ last->next = cur;
+ last = cur;
+ }
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ if ( ch!='>' )
+ ungetc(ch,sfd);
+return( head );
+}
+
+static StemInfo *SFDReadHints(FILE *sfd) {
+ StemInfo *head=NULL, *last=NULL, *cur;
+ real start, width;
+
+ while ( getreal(sfd,&start)==1 && getreal(sfd,&width)) {
+ cur = chunkalloc(sizeof(StemInfo));
+ cur->start = start;
+ cur->width = width;
+ cur->where = SFDReadHintInstances(sfd,cur);
+ if ( head == NULL )
+ head = cur;
+ else
+ last->next = cur;
+ last = cur;
+ }
+return( head );
+}
+
+static DStemInfo *SFDReadDHints( SplineFont *sf,FILE *sfd,int old ) {
+ DStemInfo *head=NULL, *last=NULL, *cur;
+ int i;
+ BasePoint bp[4], *bpref[4], left, right, unit;
+ double rstartoff, rendoff, lendoff;
+
+ if ( old ) {
+ for ( i=0 ; i<4 ; i++ ) bpref[i] = &bp[i];
+
+ while ( getreal( sfd,&bp[0].x ) && getreal( sfd,&bp[0].y ) &&
+ getreal( sfd,&bp[1].x ) && getreal( sfd,&bp[1].y ) &&
+ getreal( sfd,&bp[2].x ) && getreal( sfd,&bp[2].y ) &&
+ getreal( sfd,&bp[3].x ) && getreal( sfd,&bp[3].y )) {
+
+ /* Ensure point coordinates specified in the sfd file do */
+ /* form a diagonal line */
+ if ( PointsDiagonalable( sf,bpref,&unit )) {
+ cur = chunkalloc( sizeof( DStemInfo ));
+ cur->left = *bpref[0];
+ cur->right = *bpref[1];
+ cur->unit = unit;
+ /* Generate a temporary hint instance, so that the hint can */
+ /* be visible in charview even if subsequent rebuilding instances */
+ /* fails (e. g. for composite characters) */
+ cur->where = chunkalloc( sizeof( HintInstance ));
+ rstartoff = ( cur->right.x - cur->left.x ) * cur->unit.x +
+ ( cur->right.y - cur->left.y ) * cur->unit.y;
+ rendoff = ( bpref[2]->x - cur->left.x ) * cur->unit.x +
+ ( bpref[2]->y - cur->left.y ) * cur->unit.y;
+ lendoff = ( bpref[3]->x - cur->left.x ) * cur->unit.x +
+ ( bpref[3]->y - cur->left.y ) * cur->unit.y;
+ cur->where->begin = ( rstartoff > 0 ) ? rstartoff : 0;
+ cur->where->end = ( rendoff > lendoff ) ? lendoff : rendoff;
+ MergeDStemInfo( sf,&head,cur );
+ }
+ }
+ } else {
+ while ( getreal( sfd,&left.x ) && getreal( sfd,&left.y ) &&
+ getreal( sfd,&right.x ) && getreal( sfd,&right.y ) &&
+ getreal( sfd,&unit.x ) && getreal( sfd,&unit.y )) {
+ cur = chunkalloc( sizeof( DStemInfo ));
+ cur->left = left;
+ cur->right = right;
+ cur->unit = unit;
+ cur->where = SFDReadHintInstances( sfd,NULL );
+ if ( head == NULL )
+ head = cur;
+ else
+ last->next = cur;
+ last = cur;
+ }
+ }
+return( head );
+}
+
+static DeviceTable *SFDReadDeviceTable(FILE *sfd,DeviceTable *adjust) {
+ int i, junk, first, last, ch, len;
+
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch=='{' ) {
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch=='}' )
+return(NULL);
+ else
+ ungetc(ch,sfd);
+ getint(sfd,&first);
+ ch = nlgetc(sfd); /* Should be '-' */
+ getint(sfd,&last);
+ len = last-first+1;
+ if ( len<=0 ) {
+ IError( "Bad device table, invalid length.\n" );
+return(NULL);
+ }
+ if ( adjust==NULL )
+ adjust = chunkalloc(sizeof(DeviceTable));
+ adjust->first_pixel_size = first;
+ adjust->last_pixel_size = last;
+ adjust->corrections = malloc(len);
+ for ( i=0; i<len; ++i ) {
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch!=',' ) ungetc(ch,sfd);
+ getint(sfd,&junk);
+ adjust->corrections[i] = junk;
+ }
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch!='}' ) ungetc(ch,sfd);
+ } else
+ ungetc(ch,sfd);
+return( adjust );
+}
+
+static ValDevTab *SFDReadValDevTab(FILE *sfd) {
+ int i, j, ch;
+ ValDevTab vdt;
+ char buf[4];
+
+ memset(&vdt,0,sizeof(vdt));
+ buf[3] = '\0';
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch=='[' ) {
+ for ( i=0; i<4; ++i ) {
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch==']' )
+ break;
+ buf[0]=ch;
+ for ( j=1; j<3; ++j ) buf[j]=nlgetc(sfd);
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch!='=' ) ungetc(ch,sfd);
+ SFDReadDeviceTable(sfd,
+ strcmp(buf,"ddx")==0 ? &vdt.xadjust :
+ strcmp(buf,"ddy")==0 ? &vdt.yadjust :
+ strcmp(buf,"ddh")==0 ? &vdt.xadv :
+ strcmp(buf,"ddv")==0 ? &vdt.yadv :
+ (&vdt.xadjust) + i );
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch!=']' ) ungetc(ch,sfd);
+ else
+ break;
+ }
+ if ( vdt.xadjust.corrections!=NULL || vdt.yadjust.corrections!=NULL ||
+ vdt.xadv.corrections!=NULL || vdt.yadv.corrections!=NULL ) {
+ ValDevTab *v = chunkalloc(sizeof(ValDevTab));
+ *v = vdt;
+return( v );
+ }
+ } else
+ ungetc(ch,sfd);
+return( NULL );
+}
+
+static AnchorPoint *SFDReadAnchorPoints(FILE *sfd,SplineChar *sc,AnchorPoint** alist, AnchorPoint *lastap)
+{
+ AnchorPoint *ap = chunkalloc(sizeof(AnchorPoint));
+ AnchorClass *an;
+ char *name;
+ char tok[200];
+ int ch;
+
+ name = SFDReadUTF7Str(sfd);
+ if ( name==NULL ) {
+ LogError(_("Anchor Point with no class name: %s"), sc->name );
+ AnchorPointsFree(ap);
+return( lastap );
+ }
+ for ( an=sc->parent->anchor; an!=NULL && strcmp(an->name,name)!=0; an=an->next );
+ free(name);
+ ap->anchor = an;
+ getreal(sfd,&ap->me.x);
+ getreal(sfd,&ap->me.y);
+ ap->type = -1;
+ if ( getname(sfd,tok)==1 ) {
+ if ( strcmp(tok,"mark")==0 )
+ ap->type = at_mark;
+ else if ( strcmp(tok,"basechar")==0 )
+ ap->type = at_basechar;
+ else if ( strcmp(tok,"baselig")==0 )
+ ap->type = at_baselig;
+ else if ( strcmp(tok,"basemark")==0 )
+ ap->type = at_basemark;
+ else if ( strcmp(tok,"entry")==0 )
+ ap->type = at_centry;
+ else if ( strcmp(tok,"exit")==0 )
+ ap->type = at_cexit;
+ }
+ getsint(sfd,&ap->lig_index);
+ ch = nlgetc(sfd);
+ ungetc(ch,sfd);
+ if ( ch==' ' ) {
+ SFDReadDeviceTable(sfd,&ap->xadjust);
+ SFDReadDeviceTable(sfd,&ap->yadjust);
+ ch = nlgetc(sfd);
+ ungetc(ch,sfd);
+ if ( isdigit(ch)) {
+ getsint(sfd,(int16 *) &ap->ttf_pt_index);
+ ap->has_ttf_pt = true;
+ }
+ }
+ if ( ap->anchor==NULL || ap->type==-1 ) {
+ LogError(_("Bad Anchor Point: %s"), sc->name );
+ AnchorPointsFree(ap);
+return( lastap );
+ }
+ if ( lastap==NULL )
+ (*alist) = ap;
+ else
+ lastap->next = ap;
+
+ return( ap );
+}
+
+static RefChar *SFDGetRef(FILE *sfd, int was_enc) {
+ RefChar *rf;
+ int temp=0, ch;
+
+ rf = RefCharCreate();
+ getint(sfd,&rf->orig_pos);
+ rf->encoded = was_enc;
+ if ( getint(sfd,&temp))
+ rf->unicode_enc = temp;
+ while ( isspace(ch=nlgetc(sfd)));
+ if ( ch=='S' ) rf->selected = true;
+ getreal(sfd,&rf->transform[0]);
+ getreal(sfd,&rf->transform[1]);
+ getreal(sfd,&rf->transform[2]);
+ getreal(sfd,&rf->transform[3]);
+ getreal(sfd,&rf->transform[4]);
+ getreal(sfd,&rf->transform[5]);
+ while ( (ch=nlgetc(sfd))==' ');
+ ungetc(ch,sfd);
+ if ( isdigit(ch) ) {
+ getint(sfd,&temp);
+ rf->use_my_metrics = temp&1;
+ rf->round_translation_to_grid = (temp&2)?1:0;
+ rf->point_match = (temp&4)?1:0;
+ if ( rf->point_match ) {
+ getsint(sfd,(int16 *) &rf->match_pt_base);
+ getsint(sfd,(int16 *) &rf->match_pt_ref);
+ while ( (ch=nlgetc(sfd))==' ');
+ if ( ch=='O' )
+ rf->point_match_out_of_date = true;
+ else
+ ungetc(ch,sfd);
+ }
+ }
+return( rf );
+}
+
+/* I used to create multiple ligatures by putting ";" between them */
+/* that is the component string for "ffi" was "ff i ; f f i" */
+/* Now I want to have separate ligature structures for each */
+static PST1 *LigaCreateFromOldStyleMultiple(PST1 *liga) {
+ char *pt;
+ PST1 *new, *last=liga;
+ while ( (pt = strrchr(liga->pst.u.lig.components,';'))!=NULL ) {
+ new = chunkalloc(sizeof( PST1 ));
+ *new = *liga;
+ new->pst.u.lig.components = copy(pt+1);
+ last->pst.next = (PST *) new;
+ last = new;
+ *pt = '\0';
+ }
+return( last );
+}
+
+#ifdef FONTFORGE_CONFIG_CVT_OLD_MAC_FEATURES
+static struct { int feature, setting; uint32 tag; } formertags[] = {
+ { 1, 6, CHR('M','L','O','G') },
+ { 1, 8, CHR('M','R','E','B') },
+ { 1, 10, CHR('M','D','L','G') },
+ { 1, 12, CHR('M','S','L','G') },
+ { 1, 14, CHR('M','A','L','G') },
+ { 8, 0, CHR('M','S','W','I') },
+ { 8, 2, CHR('M','S','W','F') },
+ { 8, 4, CHR('M','S','L','I') },
+ { 8, 6, CHR('M','S','L','F') },
+ { 8, 8, CHR('M','S','N','F') },
+ { 22, 1, CHR('M','W','I','D') },
+ { 27, 1, CHR('M','U','C','M') },
+ { 103, 2, CHR('M','W','I','D') },
+ { -1, -1, 0xffffffff },
+};
+
+static void CvtOldMacFeature(PST1 *pst) {
+ int i;
+
+ if ( pst->macfeature )
+return;
+ for ( i=0; formertags[i].feature!=-1 ; ++i ) {
+ if ( pst->tag == formertags[i].tag ) {
+ pst->macfeature = true;
+ pst->tag = (formertags[i].feature<<16) | formertags[i].setting;
+return;
+ }
+ }
+}
+#endif
+
+static void SFDSetEncMap(SplineFont *sf,int orig_pos,int enc) {
+ EncMap *map = sf->map;
+
+ if ( map==NULL )
+return;
+
+ if ( orig_pos>=map->backmax ) {
+ int old = map->backmax;
+ map->backmax = orig_pos+10;
+ map->backmap = realloc(map->backmap,map->backmax*sizeof(int));
+ memset(map->backmap+old,-1,(map->backmax-old)*sizeof(int));
+ }
+ if ( map->backmap[orig_pos] == -1 ) /* backmap will not be unique if multiple encodings come from same glyph */
+ map->backmap[orig_pos] = enc;
+ if ( enc>=map->encmax ) {
+ int old = map->encmax;
+ map->encmax = enc+10;
+ map->map = realloc(map->map,map->encmax*sizeof(int));
+ memset(map->map+old,-1,(map->encmax-old)*sizeof(int));
+ }
+ if ( enc>=map->enccount )
+ map->enccount = enc+1;
+ if ( enc!=-1 )
+ map->map[enc] = orig_pos;
+}
+
+static void SCDefaultInterpolation(SplineChar *sc) {
+ SplineSet *cur;
+ SplinePoint *sp;
+ /* We used not to store the dontinterpolate bit. We used to use the */
+ /* presence or absence of instructions as that flag */
+
+ if ( sc->ttf_instrs_len!=0 ) {
+ for ( cur=sc->layers[ly_fore].splines; cur!=NULL; cur=cur->next ) {
+ for ( sp=cur->first; ; ) {
+ if ( sp->ttfindex!=0xffff && SPInterpolate(sp))
+ sp->dontinterpolate = true;
+ if ( sp->next==NULL )
+ break;
+ sp=sp->next->to;
+ if ( sp==cur->first )
+ break;
+ }
+ }
+ }
+}
+
+static void SFDParseMathValueRecord(FILE *sfd,int16 *value,DeviceTable **devtab) {
+ getsint(sfd,value);
+ *devtab = SFDReadDeviceTable(sfd,NULL);
+}
+
+static struct glyphvariants *SFDParseGlyphComposition(FILE *sfd,
+ struct glyphvariants *gv, char *tok) {
+ int i;
+
+ if ( gv==NULL )
+ gv = chunkalloc(sizeof(struct glyphvariants));
+ getint(sfd,&gv->part_cnt);
+ gv->parts = calloc(gv->part_cnt,sizeof(struct gv_part));
+ for ( i=0; i<gv->part_cnt; ++i ) {
+ int temp, ch;
+ getname(sfd,tok);
+ gv->parts[i].component = copy(tok);
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch!='%' ) ungetc(ch,sfd);
+ getint(sfd,&temp);
+ gv->parts[i].is_extender = temp;
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch!=',' ) ungetc(ch,sfd);
+ getint(sfd,&temp);
+ gv->parts[i].startConnectorLength=temp;
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch!=',' ) ungetc(ch,sfd);
+ getint(sfd,&temp);
+ gv->parts[i].endConnectorLength = temp;
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch!=',' ) ungetc(ch,sfd);
+ getint(sfd,&temp);
+ gv->parts[i].fullAdvance = temp;
+ }
+return( gv );
+}
+
+static void SFDParseVertexKern(FILE *sfd, struct mathkernvertex *vertex) {
+ int i,ch;
+
+ getint(sfd,&vertex->cnt);
+ vertex->mkd = calloc(vertex->cnt,sizeof(struct mathkerndata));
+ for ( i=0; i<vertex->cnt; ++i ) {
+ SFDParseMathValueRecord(sfd,&vertex->mkd[i].height,&vertex->mkd[i].height_adjusts);
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch!=EOF && ch!=',' )
+ ungetc(ch,sfd);
+ SFDParseMathValueRecord(sfd,&vertex->mkd[i].kern,&vertex->mkd[i].kern_adjusts);
+ }
+}
+
+static struct gradient *SFDParseGradient(FILE *sfd,char *tok) {
+ struct gradient *grad = chunkalloc(sizeof(struct gradient));
+ int ch, i;
+
+ getreal(sfd,&grad->start.x);
+ while ( isspace(ch=nlgetc(sfd)));
+ if ( ch!=';' ) ungetc(ch,sfd);
+ getreal(sfd,&grad->start.y);
+
+ getreal(sfd,&grad->stop.x);
+ while ( isspace(ch=nlgetc(sfd)));
+ if ( ch!=';' ) ungetc(ch,sfd);
+ getreal(sfd,&grad->stop.y);
+
+ getreal(sfd,&grad->radius);
+
+ getname(sfd,tok);
+ for ( i=0; spreads[i]!=NULL; ++i )
+ if ( strmatch(spreads[i],tok)==0 )
+ break;
+ if ( spreads[i]==NULL ) i=0;
+ grad->sm = i;
+
+ getint(sfd,&grad->stop_cnt);
+ grad->grad_stops = calloc(grad->stop_cnt,sizeof(struct grad_stops));
+ for ( i=0; i<grad->stop_cnt; ++i ) {
+ while ( isspace(ch=nlgetc(sfd)));
+ if ( ch!='{' ) ungetc(ch,sfd);
+ getreal( sfd, &grad->grad_stops[i].offset );
+ gethex( sfd, &grad->grad_stops[i].col );
+ getreal( sfd, &grad->grad_stops[i].opacity );
+ while ( isspace(ch=nlgetc(sfd)));
+ if ( ch!='}' ) ungetc(ch,sfd);
+ }
+return( grad );
+}
+
+static struct pattern *SFDParsePattern(FILE *sfd,char *tok) {
+ struct pattern *pat = chunkalloc(sizeof(struct pattern));
+ int ch;
+
+ getname(sfd,tok);
+ pat->pattern = copy(tok);
+
+ getreal(sfd,&pat->width);
+ while ( isspace(ch=nlgetc(sfd)));
+ if ( ch!=';' ) ungetc(ch,sfd);
+ getreal(sfd,&pat->height);
+
+ while ( isspace(ch=nlgetc(sfd)));
+ if ( ch!='[' ) ungetc(ch,sfd);
+ getreal(sfd,&pat->transform[0]);
+ getreal(sfd,&pat->transform[1]);
+ getreal(sfd,&pat->transform[2]);
+ getreal(sfd,&pat->transform[3]);
+ getreal(sfd,&pat->transform[4]);
+ getreal(sfd,&pat->transform[5]);
+ while ( isspace(ch=nlgetc(sfd)));
+ if ( ch!=']' ) ungetc(ch,sfd);
+return( pat );
+}
+
+
+static int orig_pos;
+
+static SplineChar *SFDGetChar(FILE *sfd,SplineFont *sf, int had_sf_layer_cnt) {
+ SplineChar *sc;
+ char tok[2000], ch;
+ RefChar *lastr=NULL, *ref;
+ AnchorPoint *lastap = NULL;
+ int isliga = 0, ispos, issubs=0, ismult=0, islcar=0, ispair=0, temp, i;
+ PST *last = NULL;
+ uint32 script = 0;
+ int current_layer = ly_fore;
+ int had_old_dstems = false;
+ SplineFont *sli_sf = sf->cidmaster ? sf->cidmaster : sf;
+ struct altuni *altuni;
+ int oldback = false;
+
+ if ( getname(sfd,tok)!=1 )
+return( NULL );
+ if ( strcmp(tok,"StartChar:")!=0 )
+return( NULL );
+ while ( isspace(ch=nlgetc(sfd)));
+ ungetc(ch,sfd);
+ sc = SFSplineCharCreate(sf);
+ if ( ch!='"' ) {
+ if ( getname(sfd,tok)!=1 ) {
+ SplineCharFree(sc);
+return( NULL );
+ }
+ sc->name = copy(tok);
+ } else {
+ sc->name = SFDReadUTF7Str(sfd);
+ if ( sc->name==NULL ) {
+ SplineCharFree(sc);
+return( NULL );
+ }
+ }
+ sc->vwidth = sf->ascent+sf->descent;
+ sc->parent = sf;
+ while ( 1 ) {
+ if ( getname(sfd,tok)!=1 ) {
+ SplineCharFree(sc);
+return( NULL );
+ }
+ if ( strmatch(tok,"Encoding:")==0 ) {
+ int enc;
+ getint(sfd,&enc);
+ getint(sfd,&sc->unicodeenc);
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ ungetc(ch,sfd);
+ if ( ch!='\n' && ch!='\r' ) {
+ getint(sfd,&sc->orig_pos);
+ if ( sc->orig_pos==65535 )
+ sc->orig_pos = orig_pos++;
+ /* An old mark meaning: "I don't know" */
+ if ( sc->orig_pos<sf->glyphcnt && sf->glyphs[sc->orig_pos]!=NULL )
+ sc->orig_pos = sf->glyphcnt;
+ if ( sc->orig_pos>=sf->glyphcnt ) {
+ if ( sc->orig_pos>=sf->glyphmax )
+ sf->glyphs = realloc(sf->glyphs,(sf->glyphmax = sc->orig_pos+10)*sizeof(SplineChar *));
+ memset(sf->glyphs+sf->glyphcnt,0,(sc->orig_pos+1-sf->glyphcnt)*sizeof(SplineChar *));
+ sf->glyphcnt = sc->orig_pos+1;
+ }
+ if ( sc->orig_pos+1 > orig_pos )
+ orig_pos = sc->orig_pos+1;
+ } else if ( sf->cidmaster!=NULL ) { /* In cid fonts the orig_pos is just the cid */
+ sc->orig_pos = enc;
+ } else {
+ sc->orig_pos = orig_pos++;
+ }
+ SFDSetEncMap(sf,sc->orig_pos,enc);
+ } else if ( strmatch(tok,"AltUni:")==0 ) {
+ int uni;
+ while ( getint(sfd,&uni)==1 ) {
+ altuni = chunkalloc(sizeof(struct altuni));
+ altuni->unienc = uni;
+ altuni->vs = -1;
+ altuni->fid = 0;
+ altuni->next = sc->altuni;
+ sc->altuni = altuni;
+ }
+ } else if ( strmatch(tok,"AltUni2:")==0 ) {
+ uint32 uni[3];
+ while ( gethexints(sfd,uni,3) ) {
+ altuni = chunkalloc(sizeof(struct altuni));
+ altuni->unienc = uni[0];
+ altuni->vs = uni[1];
+ altuni->fid = uni[2];
+ altuni->next = sc->altuni;
+ sc->altuni = altuni;
+ }
+ } else if ( strmatch(tok,"OldEncoding:")==0 ) {
+ int old_enc; /* Obsolete info */
+ getint(sfd,&old_enc);
+ } else if ( strmatch(tok,"Script:")==0 ) {
+ /* Obsolete. But still used for parsing obsolete ligature/subs tags */
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ if ( ch=='\n' || ch=='\r' )
+ script = 0;
+ else {
+ ungetc(ch,sfd);
+ script = gettag(sfd);
+ }
+ } else if ( strmatch(tok,"GlifName:")==0 ) {
+ while ( isspace(ch=nlgetc(sfd)));
+ ungetc(ch,sfd);
+ if ( ch!='"' ) {
+ if ( getname(sfd,tok)!=1 ) {
+ LogError(_("Invalid glif name.\n"));
+ }
+ sc->glif_name = copy(tok);
+ } else {
+ sc->glif_name = SFDReadUTF7Str(sfd);
+ if ( sc->glif_name==NULL ) {
+ LogError(_("Invalid glif name.\n"));
+ }
+ }
+ } else if ( strmatch(tok,"Width:")==0 ) {
+ getsint(sfd,&sc->width);
+ } else if ( strmatch(tok,"VWidth:")==0 ) {
+ getsint(sfd,&sc->vwidth);
+ } else if ( strmatch(tok,"GlyphClass:")==0 ) {
+ getint(sfd,&temp);
+ sc->glyph_class = temp;
+ } else if ( strmatch(tok,"UnlinkRmOvrlpSave:")==0 ) {
+ getint(sfd,&temp);
+ sc->unlink_rm_ovrlp_save_undo = temp;
+ } else if ( strmatch(tok,"InSpiro:")==0 ) {
+ getint(sfd,&temp);
+ sc->inspiro = temp;
+ } else if ( strmatch(tok,"LigCaretCntFixed:")==0 ) {
+ getint(sfd,&temp);
+ sc->lig_caret_cnt_fixed = temp;
+ } else if ( strmatch(tok,"Flags:")==0 ) {
+ while ( isspace(ch=nlgetc(sfd)) && ch!='\n' && ch!='\r');
+ while ( ch!='\n' && ch!='\r' ) {
+ if ( ch=='H' ) sc->changedsincelasthinted=true;
+ else if ( ch=='M' ) sc->manualhints = true;
+ else if ( ch=='W' ) sc->widthset = true;
+ else if ( ch=='O' ) sc->wasopen = true;
+ else if ( ch=='I' ) sc->instructions_out_of_date = true;
+ ch = nlgetc(sfd);
+ }
+ if ( sf->multilayer || sf->strokedfont || sc->layers[ly_fore].order2 )
+ sc->changedsincelasthinted = false;
+ } else if ( strmatch(tok,"TeX:")==0 ) {
+ getsint(sfd,&sc->tex_height);
+ getsint(sfd,&sc->tex_depth);
+ while ( isspace(ch=nlgetc(sfd)) && ch!='\n' && ch!='\r');
+ ungetc(ch,sfd);
+ if ( ch!='\n' && ch!='\r' ) {
+ int16 old_tex;
+ /* Used to store two extra values here */
+ getsint(sfd,&old_tex);
+ getsint(sfd,&old_tex);
+ if ( sc->tex_height==0 && sc->tex_depth==0 ) /* Fixup old bug */
+ sc->tex_height = sc->tex_depth = TEX_UNDEF;
+ }
+ } else if ( strmatch(tok,"ItalicCorrection:")==0 ) {
+ SFDParseMathValueRecord(sfd,&sc->italic_correction,&sc->italic_adjusts);
+ } else if ( strmatch(tok,"TopAccentHorizontal:")==0 ) {
+ SFDParseMathValueRecord(sfd,&sc->top_accent_horiz,&sc->top_accent_adjusts);
+ } else if ( strmatch(tok,"GlyphCompositionVerticalIC:")==0 ) {
+ if ( sc->vert_variants==NULL )
+ sc->vert_variants = chunkalloc(sizeof(struct glyphvariants));
+ SFDParseMathValueRecord(sfd,&sc->vert_variants->italic_correction,&sc->vert_variants->italic_adjusts);
+ } else if ( strmatch(tok,"GlyphCompositionHorizontalIC:")==0 ) {
+ if ( sc->horiz_variants==NULL )
+ sc->horiz_variants = chunkalloc(sizeof(struct glyphvariants));
+ SFDParseMathValueRecord(sfd,&sc->horiz_variants->italic_correction,&sc->horiz_variants->italic_adjusts);
+ } else if ( strmatch(tok,"IsExtendedShape:")==0 ) {
+ int temp;
+ getint(sfd,&temp);
+ sc->is_extended_shape = temp;
+ } else if ( strmatch(tok,"GlyphVariantsVertical:")==0 ) {
+ if ( sc->vert_variants==NULL )
+ sc->vert_variants = chunkalloc(sizeof(struct glyphvariants));
+ geteol(sfd,tok);
+ sc->vert_variants->variants = copy(tok);
+ } else if ( strmatch(tok,"GlyphVariantsHorizontal:")==0 ) {
+ if ( sc->horiz_variants==NULL )
+ sc->horiz_variants = chunkalloc(sizeof(struct glyphvariants));
+ geteol(sfd,tok);
+ sc->horiz_variants->variants = copy(tok);
+ } else if ( strmatch(tok,"GlyphCompositionVertical:")==0 ) {
+ sc->vert_variants = SFDParseGlyphComposition(sfd, sc->vert_variants,tok);
+ } else if ( strmatch(tok,"GlyphCompositionHorizontal:")==0 ) {
+ sc->horiz_variants = SFDParseGlyphComposition(sfd, sc->horiz_variants,tok);
+ } else if ( strmatch(tok,"TopRightVertex:")==0 ) {
+ if ( sc->mathkern==NULL )
+ sc->mathkern = chunkalloc(sizeof(struct mathkern));
+ SFDParseVertexKern(sfd, &sc->mathkern->top_right);
+ } else if ( strmatch(tok,"TopLeftVertex:")==0 ) {
+ if ( sc->mathkern==NULL )
+ sc->mathkern = chunkalloc(sizeof(struct mathkern));
+ SFDParseVertexKern(sfd, &sc->mathkern->top_left);
+ } else if ( strmatch(tok,"BottomRightVertex:")==0 ) {
+ if ( sc->mathkern==NULL )
+ sc->mathkern = chunkalloc(sizeof(struct mathkern));
+ SFDParseVertexKern(sfd, &sc->mathkern->bottom_right);
+ } else if ( strmatch(tok,"BottomLeftVertex:")==0 ) {
+ if ( sc->mathkern==NULL )
+ sc->mathkern = chunkalloc(sizeof(struct mathkern));
+ SFDParseVertexKern(sfd, &sc->mathkern->bottom_left);
+#if HANYANG
+ } else if ( strmatch(tok,"CompositionUnit:")==0 ) {
+ getsint(sfd,&sc->jamo);
+ getsint(sfd,&sc->varient);
+ sc->compositionunit = true;
+#endif
+ } else if ( strmatch(tok,"HStem:")==0 ) {
+ sc->hstem = SFDReadHints(sfd);
+ sc->hconflicts = StemListAnyConflicts(sc->hstem);
+ } else if ( strmatch(tok,"VStem:")==0 ) {
+ sc->vstem = SFDReadHints(sfd);
+ sc->vconflicts = StemListAnyConflicts(sc->vstem);
+ } else if ( strmatch(tok,"DStem:")==0 ) {
+ sc->dstem = SFDReadDHints( sc->parent,sfd,true );
+ had_old_dstems = true;
+ } else if ( strmatch(tok,"DStem2:")==0 ) {
+ sc->dstem = SFDReadDHints( sc->parent,sfd,false );
+ } else if ( strmatch(tok,"CounterMasks:")==0 ) {
+ getsint(sfd,&sc->countermask_cnt);
+ sc->countermasks = calloc(sc->countermask_cnt,sizeof(HintMask));
+ for ( i=0; i<sc->countermask_cnt; ++i ) {
+ int ch;
+ while ( (ch=nlgetc(sfd))==' ' );
+ ungetc(ch,sfd);
+ SFDGetHintMask(sfd,&sc->countermasks[i]);
+ }
+ } else if ( strmatch(tok,"AnchorPoint:")==0 ) {
+ lastap = SFDReadAnchorPoints(sfd,sc,&sc->anchor,lastap);
+ } else if ( strmatch(tok,"Fore")==0 ) {
+ while ( isspace(ch = nlgetc(sfd)));
+ ungetc(ch,sfd);
+ if ( ch!='I' && ch!='R' && ch!='S' && ch!='V' && ch!=' ' && ch!='\n' &&
+ !PeekMatch(sfd, "Pickled") && !PeekMatch(sfd, "EndChar") &&
+ !PeekMatch(sfd, "Fore") && !PeekMatch(sfd, "Back") && !PeekMatch(sfd, "Layer") ) {
+ /* Old format, without a SplineSet token */
+ sc->layers[ly_fore].splines = SFDGetSplineSet(sfd,sc->layers[ly_fore].order2);
+ }
+ current_layer = ly_fore;
+ } else if ( strmatch(tok,"MinimumDistance:")==0 ) {
+ SFDGetMinimumDistances(sfd,sc);
+ } else if ( strmatch(tok,"Validated:")==0 ) {
+ getsint(sfd,(int16 *) &sc->layers[current_layer].validation_state);
+ } else if ( strmatch(tok,"Back")==0 ) {
+ while ( isspace(ch=nlgetc(sfd)));
+ ungetc(ch,sfd);
+ if ( ch!='I' && ch!='R' && ch!='S' && ch!='V' && ch!=' ' && ch!='\n' &&
+ !PeekMatch(sfd, "Pickled") && !PeekMatch(sfd, "EndChar") &&
+ !PeekMatch(sfd, "Fore") && !PeekMatch(sfd, "Back") && !PeekMatch(sfd, "Layer") ) {
+ /* Old format, without a SplineSet token */
+ sc->layers[ly_back].splines = SFDGetSplineSet(sfd,sc->layers[ly_back].order2);
+ oldback = true;
+ }
+ current_layer = ly_back;
+ } else if ( strmatch(tok,"LayerCount:")==0 ) {
+ getint(sfd,&temp);
+ if ( temp>sc->layer_cnt ) {
+ sc->layers = realloc(sc->layers,temp*sizeof(Layer));
+ memset(sc->layers+sc->layer_cnt,0,(temp-sc->layer_cnt)*sizeof(Layer));
+ }
+ sc->layer_cnt = temp;
+ current_layer = ly_fore;
+ } else if ( strmatch(tok,"Layer:")==0 ) {
+ int layer;
+ int dofill, dostroke, fillfirst, linejoin, linecap;
+ uint32 fillcol, strokecol;
+ real fillopacity, strokeopacity, strokewidth, trans[4];
+ DashType dashes[DASH_MAX];
+ int i;
+ getint(sfd,&layer);
+ if ( layer>=sc->layer_cnt ) {
+ sc->layers = realloc(sc->layers,(layer+1)*sizeof(Layer));
+ memset(sc->layers+sc->layer_cnt,0,(layer+1-sc->layer_cnt)*sizeof(Layer));
+ }
+ if ( sc->parent->multilayer ) {
+ getint(sfd,&dofill);
+ getint(sfd,&dostroke);
+ getint(sfd,&fillfirst);
+ gethex(sfd,&fillcol);
+ getreal(sfd,&fillopacity);
+ gethex(sfd,&strokecol);
+ getreal(sfd,&strokeopacity);
+ getreal(sfd,&strokewidth);
+ getname(sfd,tok);
+ for ( i=0; joins[i]!=NULL; ++i )
+ if ( strmatch(joins[i],tok)==0 )
+ break;
+ if ( joins[i]==NULL ) --i;
+ linejoin = i;
+ getname(sfd,tok);
+ for ( i=0; caps[i]!=NULL; ++i )
+ if ( strmatch(caps[i],tok)==0 )
+ break;
+ if ( caps[i]==NULL ) --i;
+ linecap = i;
+ while ( (ch=nlgetc(sfd))==' ' || ch=='[' );
+ ungetc(ch,sfd);
+ getreal(sfd,&trans[0]);
+ getreal(sfd,&trans[1]);
+ getreal(sfd,&trans[2]);
+ getreal(sfd,&trans[3]);
+ while ( (ch=nlgetc(sfd))==' ' || ch==']' );
+ if ( ch=='[' ) {
+ for ( i=0;; ++i ) { int temp;
+ if ( !getint(sfd,&temp) )
+ break;
+ else if ( i<DASH_MAX )
+ dashes[i] = temp;
+ }
+ if ( i<DASH_MAX )
+ dashes[i] = 0;
+ } else {
+ ungetc(ch,sfd);
+ memset(dashes,0,sizeof(dashes));
+ }
+ sc->layers[layer].dofill = dofill;
+ sc->layers[layer].dostroke = dostroke;
+ sc->layers[layer].fillfirst = fillfirst;
+ sc->layers[layer].fill_brush.col = fillcol;
+ sc->layers[layer].fill_brush.opacity = fillopacity;
+ sc->layers[layer].stroke_pen.brush.col = strokecol;
+ sc->layers[layer].stroke_pen.brush.opacity = strokeopacity;
+ sc->layers[layer].stroke_pen.width = strokewidth;
+ sc->layers[layer].stroke_pen.linejoin = linejoin;
+ sc->layers[layer].stroke_pen.linecap = linecap;
+ memcpy(sc->layers[layer].stroke_pen.dashes,dashes,sizeof(dashes));
+ memcpy(sc->layers[layer].stroke_pen.trans,trans,sizeof(trans));
+ }
+ current_layer = layer;
+ lastr = NULL;
+ } else if ( strmatch(tok,"FillGradient:")==0 ) {
+ sc->layers[current_layer].fill_brush.gradient = SFDParseGradient(sfd,tok);
+ } else if ( strmatch(tok,"FillPattern:")==0 ) {
+ sc->layers[current_layer].fill_brush.pattern = SFDParsePattern(sfd,tok);
+ } else if ( strmatch(tok,"StrokeGradient:")==0 ) {
+ sc->layers[current_layer].stroke_pen.brush.gradient = SFDParseGradient(sfd,tok);
+ } else if ( strmatch(tok,"StrokePattern:")==0 ) {
+ sc->layers[current_layer].stroke_pen.brush.pattern = SFDParsePattern(sfd,tok);
+ } else if ( strmatch(tok,"SplineSet")==0 ) {
+ sc->layers[current_layer].splines = SFDGetSplineSet(sfd,sc->layers[current_layer].order2);
+ } else if ( strmatch(tok,"Ref:")==0 || strmatch(tok,"Refer:")==0 ) {
+ /* I should be depending on the version number here, but I made */
+ /* a mistake and bumped the version too late. So the version is */
+ /* not an accurate mark, but the presence of a LayerCount keyword*/
+ /* in the font is an good mark. Before the LayerCount was added */
+ /* (version 2) only the foreground layer could have references */
+ /* after that (eventually version 3) any layer could. */
+ if ( oldback || !had_sf_layer_cnt ) current_layer = ly_fore;
+ ref = SFDGetRef(sfd,strmatch(tok,"Ref:")==0);
+ if ( sc->layers[current_layer].refs==NULL )
+ sc->layers[current_layer].refs = ref;
+ else
+ lastr->next = ref;
+ lastr = ref;
+ } else if ( strmatch(tok,"PickledData:")==0 ) {
+ if (current_layer < sc->layer_cnt) {
+ sc->layers[current_layer].python_persistent = SFDUnPickle(sfd, 0);
+ sc->layers[current_layer].python_persistent_has_lists = 0;
+ }
+ } else if ( strmatch(tok,"PickledDataWithLists:")==0 ) {
+ if (current_layer < sc->layer_cnt) {
+ sc->layers[current_layer].python_persistent = SFDUnPickle(sfd, 1);
+ sc->layers[current_layer].python_persistent_has_lists = 1;
+ }
+ } else if ( strmatch(tok,"OrigType1:")==0 ) { /* Accept, slurp, ignore contents */
+ SFDGetType1(sfd);
+ } else if ( strmatch(tok,"TtfInstrs:")==0 ) { /* Binary format */
+ SFDGetTtfInstrs(sfd,sc);
+ } else if ( strmatch(tok,"TtInstrs:")==0 ) { /* ASCII format */
+ SFDGetTtInstrs(sfd,sc);
+ } else if ( strmatch(tok,"Kerns2:")==0 ||
+ strmatch(tok,"VKerns2:")==0 ) {
+ KernPair *kp, *last=NULL;
+ int isv = *tok=='V';
+ int off, index;
+ struct lookup_subtable *sub;
+
+ while ( fscanf(sfd,"%d %d", &index, &off )==2 ) {
+ sub = SFFindLookupSubtableAndFreeName(sf,SFDReadUTF7Str(sfd));
+ if ( sub==NULL ) {
+ LogError(_("KernPair with no subtable name.\n"));
+ break;
+ }
+ kp = chunkalloc(sizeof(KernPair1));
+ kp->sc = (SplineChar *) (intpt) index;
+ kp->kcid = true;
+ kp->off = off;
+ kp->subtable = sub;
+ kp->next = NULL;
+ while ( (ch=nlgetc(sfd))==' ' );
+ ungetc(ch,sfd);
+ if ( ch=='{' ) {
+ kp->adjust = SFDReadDeviceTable(sfd, NULL);
+ }
+ if ( last != NULL )
+ last->next = kp;
+ else if ( isv )
+ sc->vkerns = kp;
+ else
+ sc->kerns = kp;
+ last = kp;
+ }
+ } else if ( (ispos = (strmatch(tok,"Position:")==0)) ||
+ ( ispos = (strmatch(tok,"Position2:")==0)) ||
+ ( ispair = (strmatch(tok,"PairPos:")==0)) ||
+ ( ispair = (strmatch(tok,"PairPos2:")==0)) ||
+ ( islcar = (strmatch(tok,"LCarets:")==0)) ||
+ ( islcar = (strmatch(tok,"LCarets2:")==0)) ||
+ ( isliga = (strmatch(tok,"Ligature:")==0)) ||
+ ( isliga = (strmatch(tok,"Ligature2:")==0)) ||
+ ( issubs = (strmatch(tok,"Substitution:")==0)) ||
+ ( issubs = (strmatch(tok,"Substitution2:")==0)) ||
+ ( ismult = (strmatch(tok,"MultipleSubs:")==0)) ||
+ ( ismult = (strmatch(tok,"MultipleSubs2:")==0)) ||
+ strmatch(tok,"AlternateSubs:")==0 ||
+ strmatch(tok,"AlternateSubs2:")==0 ) {
+ PST *pst;
+ int old, type;
+ type = ispos ? pst_position :
+ ispair ? pst_pair :
+ islcar ? pst_lcaret :
+ isliga ? pst_ligature :
+ issubs ? pst_substitution :
+ ismult ? pst_multiple :
+ pst_alternate;
+ if ( strchr(tok,'2')!=NULL ) {
+ old = false;
+ pst = chunkalloc(sizeof(PST));
+ if ( type!=pst_lcaret )
+ pst->subtable = SFFindLookupSubtableAndFreeName(sf,SFDReadUTF7Str(sfd));
+ } else {
+ old = true;
+ pst = chunkalloc(sizeof(PST1));
+ ((PST1 *) pst)->tag = CHR('l','i','g','a');
+ ((PST1 *) pst)->script_lang_index = 0xffff;
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ if ( isdigit(ch)) {
+ int temp;
+ ungetc(ch,sfd);
+ getint(sfd,&temp);
+ ((PST1 *) pst)->flags = temp;
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ } else
+ ((PST1 *) pst)->flags = 0 /*PSTDefaultFlags(type,sc)*/;
+ if ( isdigit(ch)) {
+ ungetc(ch,sfd);
+ getusint(sfd,&((PST1 *) pst)->script_lang_index);
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ } else
+ ((PST1 *) pst)->script_lang_index = SFFindBiggestScriptLangIndex(sf,
+ script!=0?script:SCScriptFromUnicode(sc),DEFAULT_LANG);
+ if ( ch=='\'' ) {
+ ungetc(ch,sfd);
+ ((PST1 *) pst)->tag = gettag(sfd);
+ } else if ( ch=='<' ) {
+ getint(sfd,&temp);
+ ((PST1 *) pst)->tag = temp<<16;
+ nlgetc(sfd); /* comma */
+ getint(sfd,&temp);
+ ((PST1 *) pst)->tag |= temp;
+ nlgetc(sfd); /* close '>' */
+ ((PST1 *) pst)->macfeature = true;
+ } else
+ ungetc(ch,sfd);
+ if ( type==pst_lcaret ) {
+ /* These are meaningless for lcarets, set them to innocuous values */
+ ((PST1 *) pst)->script_lang_index = SLI_UNKNOWN;
+ ((PST1 *) pst)->tag = CHR(' ',' ',' ',' ');
+ } else if ( ((PST1 *) pst)->script_lang_index>=((SplineFont1 *) sli_sf)->sli_cnt && ((PST1 *) pst)->script_lang_index!=SLI_NESTED ) {
+ static int complained=false;
+ if ( !complained )
+ IError("'%c%c%c%c' in %s has a script index out of bounds: %d",
+ (((PST1 *) pst)->tag>>24), (((PST1 *) pst)->tag>>16)&0xff, (((PST1 *) pst)->tag>>8)&0xff, ((PST1 *) pst)->tag&0xff,
+ sc->name, ((PST1 *) pst)->script_lang_index );
+ else
+ IError( "'%c%c%c%c' in %s has a script index out of bounds: %d\n",
+ (((PST1 *) pst)->tag>>24), (((PST1 *) pst)->tag>>16)&0xff, (((PST1 *) pst)->tag>>8)&0xff, ((PST1 *) pst)->tag&0xff,
+ sc->name, ((PST1 *) pst)->script_lang_index );
+ ((PST1 *) pst)->script_lang_index = SFFindBiggestScriptLangIndex(sli_sf,
+ SCScriptFromUnicode(sc),DEFAULT_LANG);
+ complained = true;
+ }
+ }
+ if ( (sf->sfd_version<2)!=old ) {
+ IError( "Version mixup in PST of sfd file." );
+exit(1);
+ }
+ if ( last==NULL )
+ sc->possub = pst;
+ else
+ last->next = pst;
+ last = pst;
+ pst->type = type;
+ if ( pst->type==pst_position ) {
+ fscanf( sfd, " dx=%hd dy=%hd dh=%hd dv=%hd",
+ &pst->u.pos.xoff, &pst->u.pos.yoff,
+ &pst->u.pos.h_adv_off, &pst->u.pos.v_adv_off);
+ pst->u.pos.adjust = SFDReadValDevTab(sfd);
+ ch = nlgetc(sfd); /* Eat new line */
+ } else if ( pst->type==pst_pair ) {
+ getname(sfd,tok);
+ pst->u.pair.paired = copy(tok);
+ pst->u.pair.vr = chunkalloc(sizeof(struct vr [2]));
+ fscanf( sfd, " dx=%hd dy=%hd dh=%hd dv=%hd",
+ &pst->u.pair.vr[0].xoff, &pst->u.pair.vr[0].yoff,
+ &pst->u.pair.vr[0].h_adv_off, &pst->u.pair.vr[0].v_adv_off);
+ pst->u.pair.vr[0].adjust = SFDReadValDevTab(sfd);
+ fscanf( sfd, " dx=%hd dy=%hd dh=%hd dv=%hd",
+ &pst->u.pair.vr[1].xoff, &pst->u.pair.vr[1].yoff,
+ &pst->u.pair.vr[1].h_adv_off, &pst->u.pair.vr[1].v_adv_off);
+ pst->u.pair.vr[0].adjust = SFDReadValDevTab(sfd);
+ ch = nlgetc(sfd);
+ } else if ( pst->type==pst_lcaret ) {
+ int i;
+ fscanf( sfd, " %d", &pst->u.lcaret.cnt );
+ pst->u.lcaret.carets = malloc(pst->u.lcaret.cnt*sizeof(int16));
+ for ( i=0; i<pst->u.lcaret.cnt; ++i )
+ fscanf( sfd, " %hd", &pst->u.lcaret.carets[i]);
+ geteol(sfd,tok);
+ } else {
+ geteol(sfd,tok);
+ pst->u.lig.components = copy(tok); /* it's in the same place for all formats */
+ if ( isliga ) {
+ pst->u.lig.lig = sc;
+ if ( old )
+ last = (PST *) LigaCreateFromOldStyleMultiple((PST1 *) pst);
+ }
+ }
+#ifdef FONTFORGE_CONFIG_CVT_OLD_MAC_FEATURES
+ if ( old )
+ CvtOldMacFeature((PST1 *) pst);
+#endif
+ } else if ( strmatch(tok,"Colour:")==0 ) {
+ uint32 temp;
+ gethex(sfd,&temp);
+ sc->color = temp;
+ } else if ( strmatch(tok,"Comment:")==0 ) {
+ sc->comment = SFDReadUTF7Str(sfd);
+ } else if ( strmatch(tok,"TileMargin:")==0 ) {
+ getreal(sfd,&sc->tile_margin);
+ } else if ( strmatch(tok,"TileBounds:")==0 ) {
+ getreal(sfd,&sc->tile_bounds.minx);
+ getreal(sfd,&sc->tile_bounds.miny);
+ getreal(sfd,&sc->tile_bounds.maxx);
+ getreal(sfd,&sc->tile_bounds.maxy);
+ } else if ( strmatch(tok,"EndChar")==0 ) {
+ if ( sc->orig_pos<sf->glyphcnt )
+ sf->glyphs[sc->orig_pos] = sc;
+ /* Recalculating hint active zones may be needed for old .sfd files. */
+ /* Do this when we have finished with other glyph components, */
+ /* so that splines are already available */
+ if ( had_old_dstems && sc->layers[ly_fore].splines != NULL )
+ SCGuessHintInstancesList( sc,ly_fore,NULL,NULL,sc->dstem,false,true );
+ if ( sc->layers[ly_fore].order2 )
+ SCDefaultInterpolation(sc);
+return( sc );
+ } else {
+ geteol(sfd,tok);
+ }
+ }
+}
+
+static void SFDFixupRef(SplineChar *sc,RefChar *ref,int layer) {
+ RefChar *rf;
+ int ly;
+
+ if ( sc->parent->multilayer ) {
+ for ( ly=ly_fore; ly<ref->sc->layer_cnt; ++ly ) {
+ for ( rf = ref->sc->layers[ly].refs; rf!=NULL; rf=rf->next ) {
+ if ( rf->sc==sc ) { /* Huh? */
+ ref->sc->layers[ly].refs = NULL;
+ break;
+ }
+ if ( rf->layers[0].splines==NULL )
+ SFDFixupRef(ref->sc,rf,layer);
+ }
+ }
+ } else {
+ for ( rf = ref->sc->layers[layer].refs; rf!=NULL; rf=rf->next ) {
+ if ( rf->sc==sc ) { /* Huh? */
+ ref->sc->layers[layer].refs = NULL;
+ break;
+ }
+ if ( rf->layers[0].splines==NULL )
+ SFDFixupRef(ref->sc,rf,layer);
+ }
+ }
+ SCReinstanciateRefChar(sc,ref,layer);
+ SCMakeDependent(sc,ref->sc);
+}
+
+/* Look for character duplicates, such as might be generated by having the same */
+/* glyph at two encoding slots */
+/* This is an obsolete convention, supported now only in sfd files */
+/* I think it is ok if something depends on this character, because the */
+/* code that handles references will automatically unwrap it down to be base */
+static SplineChar *SCDuplicate(SplineChar *sc) {
+ SplineChar *matched = sc;
+
+ if ( sc==NULL || sc->parent==NULL || sc->parent->cidmaster!=NULL )
+return( sc ); /* Can't do this in CID keyed fonts */
+
+ if ( sc->layer_cnt!=2 )
+return( sc );
+
+ while ( sc->layers[ly_fore].refs!=NULL &&
+ sc->layers[ly_fore].refs->sc!=NULL && /* Can happen if we are called during font loading before references are fixed up */
+ sc->layers[ly_fore].refs->next==NULL &&
+ sc->layers[ly_fore].refs->transform[0]==1 && sc->layers[ly_fore].refs->transform[1]==0 &&
+ sc->layers[ly_fore].refs->transform[2]==0 && sc->layers[ly_fore].refs->transform[3]==1 &&
+ sc->layers[ly_fore].refs->transform[4]==0 && sc->layers[ly_fore].refs->transform[5]==0 ) {
+ char *basename = sc->layers[ly_fore].refs->sc->name;
+ if ( strcmp(sc->name,basename)!=0 )
+ break;
+ matched = sc->layers[ly_fore].refs->sc;
+ sc = sc->layers[ly_fore].refs->sc;
+ }
+return( matched );
+}
+
+
+void SFDFixupRefs(SplineFont *sf) {
+ int i, isv;
+ RefChar *refs, *rnext, *rprev;
+ /*int isautorecovery = sf->changed;*/
+ KernPair *kp, *prev, *next;
+ EncMap *map = sf->map;
+ int layer;
+ int k,l;
+ SplineFont *cidmaster = sf, *ksf;
+
+ k = 1;
+ if ( sf->subfontcnt!=0 )
+ sf = sf->subfonts[0];
+
+ ff_progress_change_line2(_("Interpreting Glyphs"));
+ for (;;) {
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ SplineChar *sc = sf->glyphs[i];
+ /* A changed character is one that has just been recovered */
+ /* unchanged characters will already have been fixed up */
+ /* Er... maybe not. If the character being recovered is refered to */
+ /* by another character then we need to fix up that other char too*/
+ /*if ( isautorecovery && !sc->changed )*/
+ /*continue;*/
+ for ( layer = 0; layer<sc->layer_cnt; ++layer ) {
+ rprev = NULL;
+ for ( refs = sc->layers[layer].refs; refs!=NULL; refs=rnext ) {
+ rnext = refs->next;
+ if ( refs->encoded ) { /* Old sfd format */
+ if ( refs->orig_pos<map->encmax && map->map[refs->orig_pos]!=-1 )
+ refs->orig_pos = map->map[refs->orig_pos];
+ else
+ refs->orig_pos = sf->glyphcnt;
+ refs->encoded = false;
+ }
+ if ( refs->orig_pos<sf->glyphcnt && refs->orig_pos>=0 )
+ refs->sc = sf->glyphs[refs->orig_pos];
+ if ( refs->sc!=NULL ) {
+ refs->unicode_enc = refs->sc->unicodeenc;
+ refs->adobe_enc = getAdobeEnc(refs->sc->name);
+ rprev = refs;
+ if ( refs->use_my_metrics ) {
+ if ( sc->width != refs->sc->width ) {
+ LogError(_("Bad sfd file. Glyph %s has width %d even though it should be\n bound to the width of %s which is %d.\n"),
+ sc->name, sc->width, refs->sc->name, refs->sc->width );
+ sc->width = refs->sc->width;
+ }
+ }
+ } else {
+ RefCharFree(refs);
+ if ( rprev!=NULL )
+ rprev->next = rnext;
+ else
+ sc->layers[layer].refs = rnext;
+ }
+ }
+ }
+ /* In old sfd files we used a peculiar idiom to represent a multiply */
+ /* encoded glyph. Fix it up now. Remove the fake glyph and adjust the*/
+ /* map */
+ /*if ( isautorecovery && !sc->changed )*/
+ /*continue;*/
+ for ( isv=0; isv<2; ++isv ) {
+ for ( prev = NULL, kp=isv?sc->vkerns : sc->kerns; kp!=NULL; kp=next ) {
+ int index = (intpt) (kp->sc);
+
+ next = kp->next;
+ // be impotent if the reference is already to the correct location
+ if ( !kp->kcid ) { /* It's encoded (old sfds), else orig */
+ if ( index>=map->encmax || map->map[index]==-1 )
+ index = sf->glyphcnt;
+ else
+ index = map->map[index];
+ }
+ kp->kcid = false;
+ ksf = sf;
+ if ( cidmaster!=sf ) {
+ for ( l=0; l<cidmaster->subfontcnt; ++l ) {
+ ksf = cidmaster->subfonts[l];
+ if ( index<ksf->glyphcnt && ksf->glyphs[index]!=NULL )
+ break;
+ }
+ }
+ if ( index>=ksf->glyphcnt || ksf->glyphs[index]==NULL ) {
+ IError( "Bad kerning information in glyph %s\n", sc->name );
+ kp->sc = NULL;
+ } else {
+ kp->sc = ksf->glyphs[index];
+ }
+
+ if ( kp->sc!=NULL )
+ prev = kp;
+ else{
+ if ( prev!=NULL )
+ prev->next = next;
+ else if ( isv )
+ sc->vkerns = next;
+ else
+ sc->kerns = next;
+ chunkfree(kp,sizeof(KernPair));
+ }
+ }
+ }
+ if ( SCDuplicate(sc)!=sc ) {
+ SplineChar *base = SCDuplicate(sc);
+ int orig = sc->orig_pos, enc = sf->map->backmap[orig], uni = sc->unicodeenc;
+ SplineCharFree(sc);
+ sf->glyphs[i]=NULL;
+ sf->map->backmap[orig] = -1;
+ sf->map->map[enc] = base->orig_pos;
+ AltUniAdd(base,uni);
+ }
+ }
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ SplineChar *sc = sf->glyphs[i];
+ for ( layer=0; layer<sc->layer_cnt; ++layer ) {
+ for ( refs = sf->glyphs[i]->layers[layer].refs; refs!=NULL; refs=refs->next ) {
+ SFDFixupRef(sf->glyphs[i],refs,layer);
+ }
+ }
+ ff_progress_next();
+ }
+ if ( sf->cidmaster==NULL )
+ for ( i=sf->glyphcnt-1; i>=0 && sf->glyphs[i]==NULL; --i )
+ sf->glyphcnt = i;
+ if ( k>=cidmaster->subfontcnt )
+ break;
+ sf = cidmaster->subfonts[k++];
+ }
+}
+
+static void SFDGetPrivate(FILE *sfd,SplineFont *sf) {
+ int i, cnt, len;
+ char name[200];
+ char *pt, *end;
+
+ sf->private = calloc(1,sizeof(struct psdict));
+ getint(sfd,&cnt);
+ sf->private->next = sf->private->cnt = cnt;
+ sf->private->values = calloc(cnt,sizeof(char *));
+ sf->private->keys = calloc(cnt,sizeof(char *));
+ for ( i=0; i<cnt; ++i ) {
+ getname(sfd,name);
+ sf->private->keys[i] = copy(name);
+ getint(sfd,&len);
+ nlgetc(sfd); /* skip space */
+ pt = sf->private->values[i] = malloc(len+1);
+ for ( end = pt+len; pt<end; ++pt )
+ *pt = nlgetc(sfd);
+ *pt='\0';
+ }
+}
+
+static void SFDGetSubrs(FILE *sfd) {
+ /* Obselete, parse it in case there are any old sfds */
+ int i, cnt, tot, len;
+ struct enc85 dec;
+
+ getint(sfd,&cnt);
+ tot = 0;
+ for ( i=0; i<cnt; ++i ) {
+ getint(sfd,&len);
+ tot += len;
+ }
+
+ memset(&dec,'\0', sizeof(dec)); dec.pos = -1;
+ dec.sfd = sfd;
+ for ( i=0; i<tot; ++i )
+ Dec85(&dec);
+}
+
+static struct ttflangname *SFDGetLangName(FILE *sfd,struct ttflangname *old) {
+ struct ttflangname *cur = chunkalloc(sizeof(struct ttflangname)), *prev;
+ int i;
+
+ getint(sfd,&cur->lang);
+ for ( i=0; i<ttf_namemax; ++i )
+ cur->names[i] = SFDReadUTF7Str(sfd);
+ if ( old==NULL )
+return( cur );
+ for ( prev = old; prev->next !=NULL; prev = prev->next );
+ prev->next = cur;
+return( old );
+}
+
+static void SFDGetGasp(FILE *sfd,SplineFont *sf) {
+ int i;
+
+ getsint(sfd,(int16 *) &sf->gasp_cnt);
+ sf->gasp = malloc(sf->gasp_cnt*sizeof(struct gasp));
+ for ( i=0; i<sf->gasp_cnt; ++i ) {
+ getsint(sfd,(int16 *) &sf->gasp[i].ppem);
+ getsint(sfd,(int16 *) &sf->gasp[i].flags);
+ }
+ getsint(sfd,(int16 *) &sf->gasp_version);
+}
+
+static void SFDGetDesignSize(FILE *sfd,SplineFont *sf) {
+ int ch;
+ struct otfname *cur;
+
+ getsint(sfd,(int16 *) &sf->design_size);
+ while ( (ch=nlgetc(sfd))==' ' );
+ ungetc(ch,sfd);
+ if ( isdigit(ch)) {
+ getsint(sfd,(int16 *) &sf->design_range_bottom);
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch!='-' )
+ ungetc(ch,sfd);
+ getsint(sfd,(int16 *) &sf->design_range_top);
+ getsint(sfd,(int16 *) &sf->fontstyle_id);
+ for (;;) {
+ while ( (ch=nlgetc(sfd))==' ' );
+ ungetc(ch,sfd);
+ if ( !isdigit(ch))
+ break;
+ cur = chunkalloc(sizeof(struct otfname));
+ cur->next = sf->fontstyle_name;
+ sf->fontstyle_name = cur;
+ getsint(sfd,(int16 *) &cur->lang);
+ cur->name = SFDReadUTF7Str(sfd);
+ }
+ }
+}
+
+static void SFDGetOtfFeatName(FILE *sfd,SplineFont *sf) {
+ int ch;
+ struct otfname *cur;
+ struct otffeatname *fn;
+
+ fn = chunkalloc(sizeof(struct otffeatname));
+ fn->tag = gettag(sfd);
+ for (;;) {
+ while ( (ch=nlgetc(sfd))==' ' );
+ ungetc(ch,sfd);
+ if ( !isdigit(ch))
+ break;
+ cur = chunkalloc(sizeof(struct otfname));
+ cur->next = fn->names;
+ fn->names = cur;
+ getsint(sfd,(int16 *) &cur->lang);
+ cur->name = SFDReadUTF7Str(sfd);
+ }
+ fn->next = sf->feat_names;
+ sf->feat_names = fn;
+}
+
+static Encoding *SFDGetEncoding(FILE *sfd, char *tok) {
+ Encoding *enc = NULL;
+ int encname;
+
+ if ( getint(sfd,&encname) ) {
+ if ( encname<(int)(sizeof(charset_names)/sizeof(charset_names[0])-1) )
+ enc = FindOrMakeEncoding(charset_names[encname]);
+ } else {
+ geteol(sfd,tok);
+ enc = FindOrMakeEncoding(tok);
+ }
+ if ( enc==NULL )
+ enc = &custom;
+return( enc );
+}
+
+static enum uni_interp SFDGetUniInterp(FILE *sfd, char *tok, SplineFont *sf) {
+ int uniinterp = ui_none;
+ int i;
+
+ geteol(sfd,tok);
+ for ( i=0; unicode_interp_names[i]!=NULL; ++i )
+ if ( strcmp(tok,unicode_interp_names[i])==0 ) {
+ uniinterp = i;
+ break;
+ }
+ /* These values are now handled by namelists */
+ if ( uniinterp == ui_adobe ) {
+ sf->for_new_glyphs = NameListByName("AGL with PUA");
+ uniinterp = ui_none;
+ } else if ( uniinterp == ui_greek ) {
+ sf->for_new_glyphs = NameListByName("Greek small caps");
+ uniinterp = ui_none;
+ } else if ( uniinterp == ui_ams ) {
+ sf->for_new_glyphs = NameListByName("AMS Names");
+ uniinterp = ui_none;
+ }
+
+return( uniinterp );
+}
+
+static void SFDGetNameList(FILE *sfd, char *tok, SplineFont *sf) {
+ NameList *nl;
+
+ geteol(sfd,tok);
+ nl = NameListByName(tok);
+ if ( nl==NULL )
+ LogError(_("Failed to find NameList: %s"), tok);
+ else
+ sf->for_new_glyphs = nl;
+}
+
+
+static OTLookup *SFD_ParseNestedLookup(FILE *sfd, SplineFont *sf, int old) {
+ uint32 tag;
+ int ch, isgpos;
+ OTLookup *otl;
+ char *name;
+
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch=='~' )
+return( NULL );
+ else if ( old ) {
+ if ( ch!='\'' )
+return( NULL );
+
+ ungetc(ch,sfd);
+ tag = gettag(sfd);
+return( (OTLookup *) (intpt) tag );
+ } else {
+ ungetc(ch,sfd);
+ name = SFDReadUTF7Str(sfd);
+ if ( name==NULL )
+return( NULL );
+ for ( isgpos=0; isgpos<2; ++isgpos ) {
+ for ( otl=isgpos ? sf->gpos_lookups : sf->gsub_lookups; otl!=NULL; otl=otl->next ) {
+ if ( strcmp(name,otl->lookup_name )==0 )
+ goto break2;
+ }
+ }
+ break2:
+ free(name);
+return( otl );
+ }
+}
+
+static void SFDParseChainContext(FILE *sfd,SplineFont *sf,FPST *fpst, char *tok, int old) {
+ int ch, i, j, k, temp;
+ SplineFont *sli_sf = sf->cidmaster ? sf->cidmaster : sf;
+
+ fpst->type = strnmatch(tok,"ContextPos",10)==0 ? pst_contextpos :
+ strnmatch(tok,"ContextSub",10)==0 ? pst_contextsub :
+ strnmatch(tok,"ChainPos",8)==0 ? pst_chainpos :
+ strnmatch(tok,"ChainSub",8)==0 ? pst_chainsub : pst_reversesub;
+ getname(sfd,tok);
+ fpst->format = strmatch(tok,"glyph")==0 ? pst_glyphs :
+ strmatch(tok,"class")==0 ? pst_class :
+ strmatch(tok,"coverage")==0 ? pst_coverage : pst_reversecoverage;
+ if ( old ) {
+ fscanf(sfd, "%hu %hu", &((FPST1 *) fpst)->flags, &((FPST1 *) fpst)->script_lang_index );
+ if ( ((FPST1 *) fpst)->script_lang_index>=((SplineFont1 *) sli_sf)->sli_cnt && ((FPST1 *) fpst)->script_lang_index!=SLI_NESTED ) {
+ static int complained=false;
+ if ( ((SplineFont1 *) sli_sf)->sli_cnt==0 )
+ IError("'%c%c%c%c' has a script index out of bounds: %d\nYou MUST fix this manually",
+ (((FPST1 *) fpst)->tag>>24), (((FPST1 *) fpst)->tag>>16)&0xff, (((FPST1 *) fpst)->tag>>8)&0xff, ((FPST1 *) fpst)->tag&0xff,
+ ((FPST1 *) fpst)->script_lang_index );
+ else if ( !complained )
+ IError("'%c%c%c%c' has a script index out of bounds: %d",
+ (((FPST1 *) fpst)->tag>>24), (((FPST1 *) fpst)->tag>>16)&0xff, (((FPST1 *) fpst)->tag>>8)&0xff, ((FPST1 *) fpst)->tag&0xff,
+ ((FPST1 *) fpst)->script_lang_index );
+ else
+ IError("'%c%c%c%c' has a script index out of bounds: %d\n",
+ (((FPST1 *) fpst)->tag>>24), (((FPST1 *) fpst)->tag>>16)&0xff, (((FPST1 *) fpst)->tag>>8)&0xff, ((FPST1 *) fpst)->tag&0xff,
+ ((FPST1 *) fpst)->script_lang_index );
+ if ( ((SplineFont1 *) sli_sf)->sli_cnt!=0 )
+ ((FPST1 *) fpst)->script_lang_index = ((SplineFont1 *) sli_sf)->sli_cnt-1;
+ complained = true;
+ }
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ if ( ch=='\'' ) {
+ ungetc(ch,sfd);
+ ((FPST1 *) fpst)->tag = gettag(sfd);
+ } else
+ ungetc(ch,sfd);
+ } else {
+ fpst->subtable = SFFindLookupSubtableAndFreeName(sf,SFDReadUTF7Str(sfd));
+ if ( !fpst->subtable )
+ LogError(_("Missing Subtable definition found in chained context"));
+ else
+ fpst->subtable->fpst = fpst;
+ }
+ fscanf(sfd, "%hu %hu %hu %hu", &fpst->nccnt, &fpst->bccnt, &fpst->fccnt, &fpst->rule_cnt );
+ if ( fpst->nccnt!=0 || fpst->bccnt!=0 || fpst->fccnt!=0 ) {
+ fpst->nclass = malloc(fpst->nccnt*sizeof(char *));
+ fpst->nclassnames = calloc(fpst->nccnt,sizeof(char *));
+ if ( fpst->nccnt!=0 ) fpst->nclass[0] = NULL;
+ if ( fpst->bccnt!=0 || fpst->fccnt!=0 ) {
+ fpst->bclass = malloc(fpst->bccnt*sizeof(char *));
+ fpst->bclassnames = calloc(fpst->bccnt,sizeof(char *));
+ if (fpst->bccnt!=0 ) fpst->bclass[0] = NULL;
+ fpst->fclass = malloc(fpst->fccnt*sizeof(char *));
+ fpst->fclassnames = calloc(fpst->fccnt,sizeof(char *));
+ if (fpst->fccnt!=0 ) fpst->fclass[0] = NULL;
+ }
+ }
+
+ for ( j=0; j<3; ++j ) {
+ for ( i=1; i<(&fpst->nccnt)[j]; ++i ) {
+ getname(sfd,tok);
+ if ( i==1 && j==0 && strcmp(tok,"Class0:")==0 )
+ i=0;
+ getint(sfd,&temp);
+ (&fpst->nclass)[j][i] = malloc(temp+1); (&fpst->nclass)[j][i][temp] = '\0';
+ nlgetc(sfd); /* skip space */
+ fread((&fpst->nclass)[j][i],1,temp,sfd);
+ }
+ }
+
+ fpst->rules = calloc(fpst->rule_cnt,sizeof(struct fpst_rule));
+ for ( i=0; i<fpst->rule_cnt; ++i ) {
+ switch ( fpst->format ) {
+ case pst_glyphs:
+ for ( j=0; j<3; ++j ) {
+ getname(sfd,tok);
+ getint(sfd,&temp);
+ (&fpst->rules[i].u.glyph.names)[j] = malloc(temp+1);
+ (&fpst->rules[i].u.glyph.names)[j][temp] = '\0';
+ nlgetc(sfd); /* skip space */
+ fread((&fpst->rules[i].u.glyph.names)[j],1,temp,sfd);
+ }
+ break;
+ case pst_class:
+ fscanf( sfd, "%d %d %d", &fpst->rules[i].u.class.ncnt, &fpst->rules[i].u.class.bcnt, &fpst->rules[i].u.class.fcnt );
+ for ( j=0; j<3; ++j ) {
+ getname(sfd,tok);
+ (&fpst->rules[i].u.class.nclasses)[j] = malloc((&fpst->rules[i].u.class.ncnt)[j]*sizeof(uint16));
+ for ( k=0; k<(&fpst->rules[i].u.class.ncnt)[j]; ++k ) {
+ getusint(sfd,&(&fpst->rules[i].u.class.nclasses)[j][k]);
+ }
+ }
+ break;
+ case pst_coverage:
+ case pst_reversecoverage:
+ fscanf( sfd, "%d %d %d", &fpst->rules[i].u.coverage.ncnt, &fpst->rules[i].u.coverage.bcnt, &fpst->rules[i].u.coverage.fcnt );
+ for ( j=0; j<3; ++j ) {
+ (&fpst->rules[i].u.coverage.ncovers)[j] = malloc((&fpst->rules[i].u.coverage.ncnt)[j]*sizeof(char *));
+ for ( k=0; k<(&fpst->rules[i].u.coverage.ncnt)[j]; ++k ) {
+ getname(sfd,tok);
+ getint(sfd,&temp);
+ (&fpst->rules[i].u.coverage.ncovers)[j][k] = malloc(temp+1);
+ (&fpst->rules[i].u.coverage.ncovers)[j][k][temp] = '\0';
+ nlgetc(sfd); /* skip space */
+ fread((&fpst->rules[i].u.coverage.ncovers)[j][k],1,temp,sfd);
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ switch ( fpst->format ) {
+ case pst_glyphs:
+ case pst_class:
+ case pst_coverage:
+ getint(sfd,&fpst->rules[i].lookup_cnt);
+ fpst->rules[i].lookups = malloc(fpst->rules[i].lookup_cnt*sizeof(struct seqlookup));
+ for ( j=k=0; j<fpst->rules[i].lookup_cnt; ++j ) {
+ getname(sfd,tok);
+ getint(sfd,&fpst->rules[i].lookups[j].seq);
+ fpst->rules[i].lookups[k].lookup = SFD_ParseNestedLookup(sfd,sf,old);
+ if ( fpst->rules[i].lookups[k].lookup!=NULL )
+ ++k;
+ }
+ fpst->rules[i].lookup_cnt = k;
+ break;
+ case pst_reversecoverage:
+ getname(sfd,tok);
+ getint(sfd,&temp);
+ fpst->rules[i].u.rcoverage.replacements = malloc(temp+1);
+ fpst->rules[i].u.rcoverage.replacements[temp] = '\0';
+ nlgetc(sfd); /* skip space */
+ fread(fpst->rules[i].u.rcoverage.replacements,1,temp,sfd);
+ break;
+ default:
+ break;
+ }
+ }
+ getname(sfd,tok); /* EndFPST, or one of the ClassName tokens (in newer sfds) */
+ while ( strcmp(tok,"ClassNames:")==0 || strcmp(tok,"BClassNames:")==0 ||
+ strcmp(tok,"FClassNames:")==0 ) {
+ int which = strcmp(tok,"ClassNames:")==0 ? 0 :
+ strcmp(tok,"BClassNames:")==0 ? 1 : 2;
+ int cnt = (&fpst->nccnt)[which];
+ char **classnames = (&fpst->nclassnames)[which];
+ int i;
+
+ for ( i=0; i<cnt; ++i )
+ classnames[i] = SFDReadUTF7Str(sfd);
+ getname(sfd,tok); /* EndFPST, or one of the ClassName tokens (in newer sfds) */
+ }
+
+}
+
+static void SFDParseStateMachine(FILE *sfd,SplineFont *sf,ASM *sm, char *tok,int old) {
+ int i, temp;
+
+ sm->type = strnmatch(tok,"MacIndic",8)==0 ? asm_indic :
+ strnmatch(tok,"MacContext",10)==0 ? asm_context :
+ strnmatch(tok,"MacLigature",11)==0 ? asm_lig :
+ strnmatch(tok,"MacSimple",9)==0 ? asm_simple :
+ strnmatch(tok,"MacKern",7)==0 ? asm_kern : asm_insert;
+ if ( old ) {
+ getusint(sfd,&((ASM1 *) sm)->feature);
+ nlgetc(sfd); /* Skip comma */
+ getusint(sfd,&((ASM1 *) sm)->setting);
+ } else {
+ sm->subtable = SFFindLookupSubtableAndFreeName(sf,SFDReadUTF7Str(sfd));
+ sm->subtable->sm = sm;
+ }
+ getusint(sfd,&sm->flags);
+ getusint(sfd,&sm->class_cnt);
+ getusint(sfd,&sm->state_cnt);
+
+ sm->classes = malloc(sm->class_cnt*sizeof(char *));
+ sm->classes[0] = sm->classes[1] = sm->classes[2] = sm->classes[3] = NULL;
+ for ( i=4; i<sm->class_cnt; ++i ) {
+ getname(sfd,tok);
+ getint(sfd,&temp);
+ sm->classes[i] = malloc(temp+1); sm->classes[i][temp] = '\0';
+ nlgetc(sfd); /* skip space */
+ fread(sm->classes[i],1,temp,sfd);
+ }
+
+ sm->state = malloc(sm->class_cnt*sm->state_cnt*sizeof(struct asm_state));
+ for ( i=0; i<sm->class_cnt*sm->state_cnt; ++i ) {
+ getusint(sfd,&sm->state[i].next_state);
+ getusint(sfd,&sm->state[i].flags);
+ if ( sm->type == asm_context ) {
+ sm->state[i].u.context.mark_lookup = SFD_ParseNestedLookup(sfd,sf,old);
+ sm->state[i].u.context.cur_lookup = SFD_ParseNestedLookup(sfd,sf,old);
+ } else if ( sm->type == asm_insert ) {
+ getint(sfd,&temp);
+ if ( temp==0 )
+ sm->state[i].u.insert.mark_ins = NULL;
+ else {
+ sm->state[i].u.insert.mark_ins = malloc(temp+1); sm->state[i].u.insert.mark_ins[temp] = '\0';
+ nlgetc(sfd); /* skip space */
+ fread(sm->state[i].u.insert.mark_ins,1,temp,sfd);
+ }
+ getint(sfd,&temp);
+ if ( temp==0 )
+ sm->state[i].u.insert.cur_ins = NULL;
+ else {
+ sm->state[i].u.insert.cur_ins = malloc(temp+1); sm->state[i].u.insert.cur_ins[temp] = '\0';
+ nlgetc(sfd); /* skip space */
+ fread(sm->state[i].u.insert.cur_ins,1,temp,sfd);
+ }
+ } else if ( sm->type == asm_kern ) {
+ int j;
+ getint(sfd,&sm->state[i].u.kern.kcnt);
+ if ( sm->state[i].u.kern.kcnt!=0 )
+ sm->state[i].u.kern.kerns = malloc(sm->state[i].u.kern.kcnt*sizeof(int16));
+ for ( j=0; j<sm->state[i].u.kern.kcnt; ++j ) {
+ getint(sfd,&temp);
+ sm->state[i].u.kern.kerns[j] = temp;
+ }
+ }
+ }
+ getname(sfd,tok); /* EndASM */
+}
+
+static struct macname *SFDParseMacNames(FILE *sfd, char *tok) {
+ struct macname *head=NULL, *last=NULL, *cur;
+ int enc, lang, len;
+ char *pt;
+ int ch;
+
+ while ( strcmp(tok,"MacName:")==0 ) {
+ cur = chunkalloc(sizeof(struct macname));
+ if ( last==NULL )
+ head = cur;
+ else
+ last->next = cur;
+ last = cur;
+
+ getint(sfd,&enc);
+ getint(sfd,&lang);
+ getint(sfd,&len);
+ cur->enc = enc;
+ cur->lang = lang;
+ cur->name = pt = malloc(len+1);
+
+ while ( (ch=nlgetc(sfd))==' ');
+ if ( ch=='"' )
+ ch = nlgetc(sfd);
+ while ( ch!='"' && ch!=EOF && pt<cur->name+len ) {
+ if ( ch=='\\' ) {
+ *pt = (nlgetc(sfd)-'0')<<6;
+ *pt |= (nlgetc(sfd)-'0')<<3;
+ *pt |= (nlgetc(sfd)-'0');
+ } else
+ *pt++ = ch;
+ ch = nlgetc(sfd);
+ }
+ *pt = '\0';
+ getname(sfd,tok);
+ }
+return( head );
+}
+
+MacFeat *SFDParseMacFeatures(FILE *sfd, char *tok) {
+ MacFeat *cur, *head=NULL, *last=NULL;
+ struct macsetting *slast, *scur;
+ int feat, ism, def, set;
+
+ while ( strcmp(tok,"MacFeat:")==0 ) {
+ cur = chunkalloc(sizeof(MacFeat));
+ if ( last==NULL )
+ head = cur;
+ else
+ last->next = cur;
+ last = cur;
+
+ getint(sfd,&feat); getint(sfd,&ism); getint(sfd, &def);
+ cur->feature = feat; cur->ismutex = ism; cur->default_setting = def;
+ getname(sfd,tok);
+ cur->featname = SFDParseMacNames(sfd,tok);
+ slast = NULL;
+ while ( strcmp(tok,"MacSetting:")==0 ) {
+ scur = chunkalloc(sizeof(struct macsetting));
+ if ( slast==NULL )
+ cur->settings = scur;
+ else
+ slast->next = scur;
+ slast = scur;
+
+ getint(sfd,&set);
+ scur->setting = set;
+ getname(sfd,tok);
+ scur->setname = SFDParseMacNames(sfd,tok);
+ }
+ }
+return( head );
+}
+
+static char *SFDParseMMSubroutine(FILE *sfd) {
+ char buffer[400], *sofar=calloc(1,1);
+ const char *endtok = "EndMMSubroutine";
+ int len = 0, blen, first=true;
+
+ while ( fgets(buffer,sizeof(buffer),sfd)!=NULL ) {
+ if ( strncmp(buffer,endtok,strlen(endtok))==0 )
+ break;
+ if ( first ) {
+ first = false;
+ if ( strcmp(buffer,"\n")==0 )
+ continue;
+ }
+ blen = strlen(buffer);
+ sofar = realloc(sofar,len+blen+1);
+ strcpy(sofar+len,buffer);
+ len += blen;
+ }
+ if ( len>0 && sofar[len-1]=='\n' )
+ sofar[len-1] = '\0';
+return( sofar );
+}
+
+static void MMInferStuff(MMSet *mm) {
+ int i,j;
+
+ if ( mm==NULL )
+return;
+ if ( mm->apple ) {
+ for ( i=0; i<mm->axis_count; ++i ) {
+ for ( j=0; j<mm->axismaps[i].points; ++j ) {
+ real val = mm->axismaps[i].blends[j];
+ if ( val == -1. )
+ mm->axismaps[i].min = mm->axismaps[i].designs[j];
+ else if ( val==0 )
+ mm->axismaps[i].def = mm->axismaps[i].designs[j];
+ else if ( val==1 )
+ mm->axismaps[i].max = mm->axismaps[i].designs[j];
+ }
+ }
+ }
+}
+
+static void SFDSizeMap(EncMap *map,int glyphcnt,int enccnt) {
+ if ( glyphcnt>map->backmax ) {
+ map->backmap = realloc(map->backmap,glyphcnt*sizeof(int));
+ memset(map->backmap+map->backmax,-1,(glyphcnt-map->backmax)*sizeof(int));
+ map->backmax = glyphcnt;
+ }
+ if ( enccnt>map->encmax ) {
+ map->map = realloc(map->map,enccnt*sizeof(int));
+ memset(map->map+map->backmax,-1,(enccnt-map->encmax)*sizeof(int));
+ map->encmax = map->enccount = enccnt;
+ }
+}
+
+static SplineFont *SFD_GetFont(FILE *sfd,SplineFont *cidmaster,char *tok,
+ int fromdir, char *dirname, float sfdversion);
+
+static void SFD_DoAltUnis(SplineFont *sf) {
+ int i;
+ struct altuni *alt;
+ SplineChar *sc;
+
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( (sc = sf->glyphs[i])!=NULL ) {
+ for ( alt = sc->altuni; alt!=NULL; alt = alt->next ) {
+ if ( alt->vs==-1 && alt->fid==0 ) {
+ int enc = EncFromUni(alt->unienc,sf->map->enc);
+ if ( enc!=-1 )
+ SFDSetEncMap(sf,sc->orig_pos,enc);
+ }
+ }
+ }
+}
+
+static void SFDParseLookup(FILE *sfd,OTLookup *otl) {
+ int ch;
+ struct lookup_subtable *sub, *lastsub;
+ FeatureScriptLangList *fl, *lastfl;
+ struct scriptlanglist *sl, *lastsl;
+ int i, lcnt, lmax=0;
+ uint32 *langs=NULL;
+ char *subname;
+
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch=='{' ) {
+ lastsub = NULL;
+ while ( (subname = SFDReadUTF7Str(sfd))!=NULL ) {
+ while ( (ch=nlgetc(sfd))==' ' );
+ ungetc(ch,sfd);
+ sub = chunkalloc(sizeof(struct lookup_subtable));
+ sub->subtable_name = subname;
+ sub->lookup = otl;
+ switch ( otl->lookup_type ) {
+ case gsub_single:
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch=='(' ) {
+ sub->suffix = SFDReadUTF7Str(sfd);
+ while ( (ch=nlgetc(sfd))==' ' );
+ /* slurp final paren */
+ } else
+ ungetc(ch,sfd);
+ sub->per_glyph_pst_or_kern = true;
+ break;
+ case gsub_multiple: case gsub_alternate: case gsub_ligature:
+ case gpos_single:
+ sub->per_glyph_pst_or_kern = true;
+ break;
+ case gpos_pair:
+ if ( (ch=nlgetc(sfd))=='(' ) {
+ ch = nlgetc(sfd);
+ sub->vertical_kerning = (ch=='1');
+ nlgetc(sfd); /* slurp final paren */
+ ch=nlgetc(sfd);
+ }
+ if ( ch=='[' ) {
+ getsint(sfd,&sub->separation);
+ nlgetc(sfd); /* slurp comma */
+ getsint(sfd,&sub->minkern);
+ nlgetc(sfd); /* slurp comma */
+ ch = nlgetc(sfd);
+ sub->kerning_by_touch = ((ch-'0')&1)?1:0;
+ sub->onlyCloser = ((ch-'0')&2)?1:0;
+ sub->dontautokern = ((ch-'0')&4)?1:0;
+ nlgetc(sfd); /* slurp final bracket */
+ } else {
+ ungetc(ch,sfd);
+ }
+ sub->per_glyph_pst_or_kern = true;
+ break;
+ case gpos_cursive: case gpos_mark2base: case gpos_mark2ligature: case gpos_mark2mark:
+ sub->anchor_classes = true;
+ break;
+ default:
+ break;
+ }
+ if ( lastsub==NULL )
+ otl->subtables = sub;
+ else
+ lastsub->next = sub;
+ lastsub = sub;
+ }
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch=='}' )
+ ch = nlgetc(sfd);
+ }
+ while ( ch==' ' )
+ ch = nlgetc(sfd);
+ if ( ch=='[' ) {
+ lastfl = NULL;
+ for (;;) {
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch==']' )
+ break;
+ fl = chunkalloc(sizeof(FeatureScriptLangList));
+ if ( lastfl==NULL )
+ otl->features = fl;
+ else
+ lastfl->next = fl;
+ lastfl = fl;
+ if ( ch=='<' ) {
+ int ft=0,fs=0;
+ fscanf(sfd,"%d,%d>", &ft, &fs );
+ fl->ismac = true;
+ fl->featuretag = (ft<<16) | fs;
+ } else if ( ch=='\'' ) {
+ ungetc(ch,sfd);
+ fl->featuretag = gettag(sfd);
+ }
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch=='(' ) {
+ lastsl = NULL;
+ for (;;) {
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch==')' )
+ break;
+ sl = chunkalloc(sizeof(struct scriptlanglist));
+ if ( lastsl==NULL )
+ fl->scripts = sl;
+ else
+ lastsl->next = sl;
+ lastsl = sl;
+ if ( ch=='\'' ) {
+ ungetc(ch,sfd);
+ sl->script = gettag(sfd);
+ }
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch=='<' ) {
+ lcnt = 0;
+ for (;;) {
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch=='>' )
+ break;
+ if ( ch=='\'' ) {
+ ungetc(ch,sfd);
+ if ( lcnt>=lmax )
+ langs = realloc(langs,(lmax+=10)*sizeof(uint32));
+ langs[lcnt++] = gettag(sfd);
+ }
+ }
+ sl->lang_cnt = lcnt;
+ if ( lcnt>MAX_LANG )
+ sl->morelangs = malloc((lcnt-MAX_LANG)*sizeof(uint32));
+ for ( i=0; i<lcnt; ++i ) {
+ if ( i<MAX_LANG )
+ sl->langs[i] = langs[i];
+ else
+ sl->morelangs[i-MAX_LANG] = langs[i];
+ }
+ }
+ }
+ }
+ }
+ }
+ free(langs);
+}
+
+static void SFDParseMathItem(FILE *sfd,SplineFont *sf,char *tok) {
+ /* The first five characters of a math item's keyword will be "MATH:" */
+ /* the rest will be one of the entries in math_constants_descriptor */
+ int i;
+ struct MATH *math;
+
+ if ( (math = sf->MATH) == NULL )
+ math = sf->MATH = calloc(1,sizeof(struct MATH));
+ for ( i=0; math_constants_descriptor[i].script_name!=NULL; ++i ) {
+ char *name = math_constants_descriptor[i].script_name;
+ int len = strlen( name );
+ if ( strncmp(tok+5,name,len)==0 && tok[5+len] == ':' && tok[6+len]=='\0' ) {
+ int16 *pos = (int16 *) (((char *) (math)) + math_constants_descriptor[i].offset );
+ getsint(sfd,pos);
+ if ( math_constants_descriptor[i].devtab_offset != -1 ) {
+ DeviceTable **devtab = (DeviceTable **) (((char *) (math)) + math_constants_descriptor[i].devtab_offset );
+ *devtab = SFDReadDeviceTable(sfd,*devtab);
+ break;
+ }
+ }
+ }
+}
+
+static struct baselangextent *ParseBaseLang(FILE *sfd) {
+ struct baselangextent *bl;
+ struct baselangextent *cur, *last;
+ int ch;
+
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch=='{' ) {
+ bl = chunkalloc(sizeof(struct baselangextent));
+ while ( (ch=nlgetc(sfd))==' ' );
+ ungetc(ch,sfd);
+ if ( ch=='\'' )
+ bl->lang = gettag(sfd); /* Lang or Feature tag, or nothing */
+ getsint(sfd,&bl->descent);
+ getsint(sfd,&bl->ascent);
+ last = NULL;
+ while ( (ch=nlgetc(sfd))==' ' );
+ while ( ch=='{' ) {
+ ungetc(ch,sfd);
+ cur = ParseBaseLang(sfd);
+ if ( last==NULL )
+ bl->features = cur;
+ else
+ last->next = cur;
+ last = cur;
+ while ( (ch=nlgetc(sfd))==' ' );
+ }
+ if ( ch!='}' ) ungetc(ch,sfd);
+return( bl );
+ }
+return( NULL );
+}
+
+static struct basescript *SFDParseBaseScript(FILE *sfd,struct Base *base) {
+ struct basescript *bs;
+ int i, ch;
+ struct baselangextent *last, *cur;
+
+ if ( base==NULL )
+return(NULL);
+
+ bs = chunkalloc(sizeof(struct basescript));
+
+ bs->script = gettag(sfd);
+ getint(sfd,&bs->def_baseline);
+ if ( base->baseline_cnt!=0 ) {
+ bs->baseline_pos = calloc(base->baseline_cnt,sizeof(int16));
+ for ( i=0; i<base->baseline_cnt; ++i )
+ getsint(sfd, &bs->baseline_pos[i]);
+ }
+ while ( (ch=nlgetc(sfd))==' ' );
+ last = NULL;
+ while ( ch=='{' ) {
+ ungetc(ch,sfd);
+ cur = ParseBaseLang(sfd);
+ if ( last==NULL )
+ bs->langs = cur;
+ else
+ last->next = cur;
+ last = cur;
+ while ( (ch=nlgetc(sfd))==' ' );
+ }
+return( bs );
+}
+
+static struct Base *SFDParseBase(FILE *sfd) {
+ struct Base *base = chunkalloc(sizeof(struct Base));
+ int i;
+
+ getint(sfd,&base->baseline_cnt);
+ if ( base->baseline_cnt!=0 ) {
+ base->baseline_tags = malloc(base->baseline_cnt*sizeof(uint32));
+ for ( i=0; i<base->baseline_cnt; ++i )
+ base->baseline_tags[i] = gettag(sfd);
+ }
+return( base );
+}
+
+static OTLookup **SFDLookupList(FILE *sfd,SplineFont *sf) {
+ int ch;
+ OTLookup *space[100], **buf=space, *otl, **ret;
+ int lcnt=0, lmax=100;
+ char *name;
+
+ for (;;) {
+ while ( (ch=nlgetc(sfd))==' ' );
+ if ( ch=='\n' || ch==EOF )
+ break;
+ ungetc(ch,sfd);
+ name = SFDReadUTF7Str(sfd);
+ otl = SFFindLookup(sf,name);
+ free(name);
+ if ( otl!=NULL ) {
+ if ( lcnt>lmax ) {
+ if ( buf==space ) {
+ buf = malloc((lmax=lcnt+50)*sizeof(OTLookup *));
+ memcpy(buf,space,sizeof(space));
+ } else
+ buf = realloc(buf,(lmax+=50)*sizeof(OTLookup *));
+ }
+ buf[lcnt++] = otl;
+ }
+ }
+ if ( lcnt==0 )
+return( NULL );
+
+ ret = malloc((lcnt+1)*sizeof(OTLookup *));
+ memcpy(ret,buf,lcnt*sizeof(OTLookup *));
+ ret[lcnt] = NULL;
+return( ret );
+}
+
+static void SFDParseJustify(FILE *sfd, SplineFont *sf, char *tok) {
+ Justify *last=NULL, *cur;
+ struct jstf_lang *jlang, *llast;
+ int p = 0,ch;
+
+ while ( strcmp(tok,"Justify:")==0 ) {
+ cur = chunkalloc(sizeof(Justify));
+ if ( last==NULL )
+ sf->justify = cur;
+ else
+ last->next = cur;
+ last = cur;
+ llast = jlang = NULL;
+ cur->script = gettag(sfd);
+ while ( getname(sfd,tok)>0 ) {
+ if ( strcmp(tok,"Justify:")==0 || strcmp(tok,"EndJustify")==0 )
+ break;
+ if ( strcmp(tok,"JstfExtender:")==0 ) {
+ while ( (ch=nlgetc(sfd))==' ' );
+ ungetc(ch,sfd);
+ geteol(sfd,tok);
+ cur->extenders = copy(tok);
+ } else if ( strcmp(tok,"JstfLang:")==0 ) {
+ jlang = chunkalloc(sizeof(struct jstf_lang));
+ if ( llast==NULL )
+ cur->langs = jlang;
+ else
+ llast->next = jlang;
+ llast = jlang;
+ jlang->lang = gettag(sfd);
+ p = -1;
+ getint(sfd,&jlang->cnt);
+ if ( jlang->cnt!=0 )
+ jlang->prios = calloc(jlang->cnt,sizeof(struct jstf_prio));
+ } else if ( strcmp(tok,"JstfPrio:")==0 ) {
+ if ( jlang!=NULL ) {
+ ++p;
+ if ( p>= jlang->cnt ) {
+ jlang->prios = realloc(jlang->prios,(p+1)*sizeof(struct jstf_prio));
+ memset(jlang->prios+jlang->cnt,0,(p+1-jlang->cnt)*sizeof(struct jstf_prio));
+ jlang->cnt = p+1;
+ }
+ }
+ } else if ( strcmp(tok,"JstfEnableShrink:" )==0 ) {
+ if ( p<0 ) p=0;
+ if ( jlang!=NULL && p<jlang->cnt )
+ jlang->prios[p].enableShrink = SFDLookupList(sfd,sf);
+ } else if ( strcmp(tok,"JstfDisableShrink:" )==0 ) {
+ if ( p<0 ) p=0;
+ if ( jlang!=NULL && p<jlang->cnt )
+ jlang->prios[p].disableShrink = SFDLookupList(sfd,sf);
+ } else if ( strcmp(tok,"JstfMaxShrink:" )==0 ) {
+ if ( p<0 ) p=0;
+ if ( jlang!=NULL && p<jlang->cnt )
+ jlang->prios[p].maxShrink = SFDLookupList(sfd,sf);
+ } else if ( strcmp(tok,"JstfEnableExtend:" )==0 ) {
+ if ( p<0 ) p=0;
+ if ( jlang!=NULL && p<jlang->cnt )
+ jlang->prios[p].enableExtend = SFDLookupList(sfd,sf);
+ } else if ( strcmp(tok,"JstfDisableExtend:" )==0 ) {
+ if ( p<0 ) p=0;
+ if ( jlang!=NULL && p<jlang->cnt )
+ jlang->prios[p].disableExtend = SFDLookupList(sfd,sf);
+ } else if ( strcmp(tok,"JstfMaxExtend:" )==0 ) {
+ if ( p<0 ) p=0;
+ if ( jlang!=NULL && p<jlang->cnt )
+ jlang->prios[p].maxExtend = SFDLookupList(sfd,sf);
+ } else
+ geteol(sfd,tok);
+ }
+ }
+}
+
+
+
+void SFD_GetFontMetaDataData_Init( SFD_GetFontMetaDataData* d )
+{
+ memset( d, 0, sizeof(SFD_GetFontMetaDataData));
+}
+
+/**
+ *
+ * @return true if the function matched the current token. If true
+ * is returned the caller should avoid further processing of 'tok'
+ * a return of false means that the caller might try
+ * to handle the token with another function or drop it.
+ */
+bool SFD_GetFontMetaData( FILE *sfd,
+ char *tok,
+ SplineFont *sf,
+ SFD_GetFontMetaDataData* d )
+{
+ int ch;
+ int i;
+ KernClass* kc = 0;
+ int old;
+ char val[2000];
+
+ // This allows us to assume we can dereference d
+ // at all times
+ static SFD_GetFontMetaDataData my_static_d;
+ static int my_static_d_is_virgin = 1;
+ if( !d )
+ {
+ if( my_static_d_is_virgin )
+ {
+ my_static_d_is_virgin = 0;
+ SFD_GetFontMetaDataData_Init( &my_static_d );
+ }
+ d = &my_static_d;
+ }
+
+ if ( strmatch(tok,"FontName:")==0 )
+ {
+ geteol(sfd,val);
+ sf->fontname = copy(val);
+ }
+ else if ( strmatch(tok,"FullName:")==0 )
+ {
+ geteol(sfd,val);
+ sf->fullname = copy(val);
+ }
+ else if ( strmatch(tok,"FamilyName:")==0 )
+ {
+ geteol(sfd,val);
+ sf->familyname = copy(val);
+ }
+ else if ( strmatch(tok,"DefaultBaseFilename:")==0 )
+ {
+ geteol(sfd,val);
+ sf->defbasefilename = copy(val);
+ }
+ else if ( strmatch(tok,"Weight:")==0 )
+ {
+ getprotectedname(sfd,val);
+ sf->weight = copy(val);
+ }
+ else if ( strmatch(tok,"Copyright:")==0 )
+ {
+ sf->copyright = getquotedeol(sfd);
+ }
+ else if ( strmatch(tok,"Comments:")==0 )
+ {
+ char *temp = getquotedeol(sfd);
+ sf->comments = latin1_2_utf8_copy(temp);
+ free(temp);
+ }
+ else if ( strmatch(tok,"UComments:")==0 )
+ {
+ sf->comments = SFDReadUTF7Str(sfd);
+ }
+ else if ( strmatch(tok,"FontLog:")==0 )
+ {
+ sf->fontlog = SFDReadUTF7Str(sfd);
+ }
+ else if ( strmatch(tok,"Version:")==0 )
+ {
+ geteol(sfd,val);
+ sf->version = copy(val);
+ }
+ else if ( strmatch(tok,"StyleMapFamilyName:")==0 )
+ {
+ sf->styleMapFamilyName = SFDReadUTF7Str(sfd);
+ }
+ /* Legacy attribute for StyleMapFamilyName. Deprecated. */
+ else if ( strmatch(tok,"OS2FamilyName:")==0 )
+ {
+ if (sf->styleMapFamilyName == NULL)
+ sf->styleMapFamilyName = SFDReadUTF7Str(sfd);
+ }
+ else if ( strmatch(tok,"FONDName:")==0 )
+ {
+ geteol(sfd,val);
+ sf->fondname = copy(val);
+ }
+ else if ( strmatch(tok,"ItalicAngle:")==0 )
+ {
+ getreal(sfd,&sf->italicangle);
+ }
+ else if ( strmatch(tok,"StrokeWidth:")==0 )
+ {
+ getreal(sfd,&sf->strokewidth);
+ }
+ else if ( strmatch(tok,"UnderlinePosition:")==0 )
+ {
+ getreal(sfd,&sf->upos);
+ }
+ else if ( strmatch(tok,"UnderlineWidth:")==0 )
+ {
+ getreal(sfd,&sf->uwidth);
+ }
+ else if ( strmatch(tok,"ModificationTime:")==0 )
+ {
+ getlonglong(sfd,&sf->modificationtime);
+ }
+ else if ( strmatch(tok,"CreationTime:")==0 )
+ {
+ getlonglong(sfd,&sf->creationtime);
+ d->hadtimes = true;
+ }
+ else if ( strmatch(tok,"PfmFamily:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->pfminfo.pfmfamily = temp;
+ sf->pfminfo.pfmset = true;
+ }
+ else if ( strmatch(tok,"LangName:")==0 )
+ {
+ sf->names = SFDGetLangName(sfd,sf->names);
+ }
+ else if ( strmatch(tok,"GaspTable:")==0 )
+ {
+ SFDGetGasp(sfd,sf);
+ }
+ else if ( strmatch(tok,"DesignSize:")==0 )
+ {
+ SFDGetDesignSize(sfd,sf);
+ }
+ else if ( strmatch(tok,"OtfFeatName:")==0 )
+ {
+ SFDGetOtfFeatName(sfd,sf);
+ }
+ else if ( strmatch(tok,"PfmWeight:")==0 || strmatch(tok,"TTFWeight:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.weight);
+ sf->pfminfo.pfmset = true;
+ }
+ else if ( strmatch(tok,"TTFWidth:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.width);
+ sf->pfminfo.pfmset = true;
+ }
+ else if ( strmatch(tok,"Panose:")==0 )
+ {
+ int temp,i;
+ for ( i=0; i<10; ++i )
+ {
+ getint(sfd,&temp);
+ sf->pfminfo.panose[i] = temp;
+ }
+ sf->pfminfo.panose_set = true;
+ }
+ else if ( strmatch(tok,"LineGap:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.linegap);
+ sf->pfminfo.pfmset = true;
+ }
+ else if ( strmatch(tok,"VLineGap:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.vlinegap);
+ sf->pfminfo.pfmset = true;
+ }
+ else if ( strmatch(tok,"HheadAscent:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.hhead_ascent);
+ }
+ else if ( strmatch(tok,"HheadAOffset:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp); sf->pfminfo.hheadascent_add = temp;
+ }
+ else if ( strmatch(tok,"HheadDescent:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.hhead_descent);
+ }
+ else if ( strmatch(tok,"HheadDOffset:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp); sf->pfminfo.hheaddescent_add = temp;
+ }
+ else if ( strmatch(tok,"OS2TypoLinegap:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_typolinegap);
+ }
+ else if ( strmatch(tok,"OS2TypoAscent:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_typoascent);
+ }
+ else if ( strmatch(tok,"OS2TypoAOffset:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp); sf->pfminfo.typoascent_add = temp;
+ }
+ else if ( strmatch(tok,"OS2TypoDescent:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_typodescent);
+ }
+ else if ( strmatch(tok,"OS2TypoDOffset:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp); sf->pfminfo.typodescent_add = temp;
+ }
+ else if ( strmatch(tok,"OS2WinAscent:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_winascent);
+ }
+ else if ( strmatch(tok,"OS2WinDescent:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_windescent);
+ }
+ else if ( strmatch(tok,"OS2WinAOffset:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp); sf->pfminfo.winascent_add = temp;
+ }
+ else if ( strmatch(tok,"OS2WinDOffset:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp); sf->pfminfo.windescent_add = temp;
+ }
+ else if ( strmatch(tok,"HHeadAscent:")==0 )
+ {
+ // DUPLICATE OF ABOVE
+ getsint(sfd,&sf->pfminfo.hhead_ascent);
+ }
+ else if ( strmatch(tok,"HHeadDescent:")==0 )
+ {
+ // DUPLICATE OF ABOVE
+ getsint(sfd,&sf->pfminfo.hhead_descent);
+ }
+
+ else if ( strmatch(tok,"HHeadAOffset:")==0 )
+ {
+ // DUPLICATE OF ABOVE
+ int temp;
+ getint(sfd,&temp); sf->pfminfo.hheadascent_add = temp;
+ }
+ else if ( strmatch(tok,"HHeadDOffset:")==0 )
+ {
+ // DUPLICATE OF ABOVE
+ int temp;
+ getint(sfd,&temp); sf->pfminfo.hheaddescent_add = temp;
+ }
+ else if ( strmatch(tok,"MacStyle:")==0 )
+ {
+ getsint(sfd,&sf->macstyle);
+ }
+ else if ( strmatch(tok,"OS2SubXSize:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_subxsize);
+ sf->pfminfo.subsuper_set = true;
+ }
+ else if ( strmatch(tok,"OS2SubYSize:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_subysize);
+ }
+ else if ( strmatch(tok,"OS2SubXOff:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_subxoff);
+ }
+ else if ( strmatch(tok,"OS2SubYOff:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_subyoff);
+ }
+ else if ( strmatch(tok,"OS2SupXSize:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_supxsize);
+ }
+ else if ( strmatch(tok,"OS2SupYSize:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_supysize);
+ }
+ else if ( strmatch(tok,"OS2SupXOff:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_supxoff);
+ }
+ else if ( strmatch(tok,"OS2SupYOff:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_supyoff);
+ }
+ else if ( strmatch(tok,"OS2StrikeYSize:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_strikeysize);
+ }
+ else if ( strmatch(tok,"OS2StrikeYPos:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_strikeypos);
+ }
+ else if ( strmatch(tok,"OS2CapHeight:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_capheight);
+ }
+ else if ( strmatch(tok,"OS2XHeight:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_xheight);
+ }
+ else if ( strmatch(tok,"OS2FamilyClass:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.os2_family_class);
+ }
+ else if ( strmatch(tok,"OS2Vendor:")==0 )
+ {
+ while ( isspace(nlgetc(sfd)));
+ sf->pfminfo.os2_vendor[0] = nlgetc(sfd);
+ sf->pfminfo.os2_vendor[1] = nlgetc(sfd);
+ sf->pfminfo.os2_vendor[2] = nlgetc(sfd);
+ sf->pfminfo.os2_vendor[3] = nlgetc(sfd);
+ (void) nlgetc(sfd);
+ }
+ else if ( strmatch(tok,"OS2CodePages:")==0 )
+ {
+ gethexints(sfd,sf->pfminfo.codepages,2);
+ sf->pfminfo.hascodepages = true;
+ }
+ else if ( strmatch(tok,"OS2UnicodeRanges:")==0 )
+ {
+ gethexints(sfd,sf->pfminfo.unicoderanges,4);
+ sf->pfminfo.hasunicoderanges = true;
+ }
+ else if ( strmatch(tok,"TopEncoding:")==0 )
+ {
+ /* Obsolete */
+ getint(sfd,&sf->top_enc);
+ }
+ else if ( strmatch(tok,"Ascent:")==0 )
+ {
+ getint(sfd,&sf->ascent);
+ }
+ else if ( strmatch(tok,"Descent:")==0 )
+ {
+ getint(sfd,&sf->descent);
+ }
+ else if ( strmatch(tok,"InvalidEm:")==0 )
+ {
+ getint(sfd,&sf->invalidem);
+ }
+ else if ( strmatch(tok,"woffMajor:")==0 )
+ {
+ getint(sfd,&sf->woffMajor);
+ }
+ else if ( strmatch(tok,"woffMinor:")==0 )
+ {
+ getint(sfd,&sf->woffMinor);
+ }
+ else if ( strmatch(tok,"woffMetadata:")==0 )
+ {
+ sf->woffMetadata = SFDReadUTF7Str(sfd);
+ }
+ else if ( strmatch(tok,"sfntRevision:")==0 )
+ {
+ gethex(sfd,(uint32 *)&sf->sfntRevision);
+ }
+ else if ( strmatch(tok,"LayerCount:")==0 )
+ {
+ d->had_layer_cnt = true;
+ getint(sfd,&sf->layer_cnt);
+ if ( sf->layer_cnt>2 ) {
+ sf->layers = realloc(sf->layers,sf->layer_cnt*sizeof(LayerInfo));
+ memset(sf->layers+2,0,(sf->layer_cnt-2)*sizeof(LayerInfo));
+ }
+ }
+ else if ( strmatch(tok,"Layer:")==0 )
+ {
+ // TODO: Read the U. F. O. path.
+ int layer, o2, bk;
+ getint(sfd,&layer);
+ if ( layer>=sf->layer_cnt ) {
+ sf->layers = realloc(sf->layers,(layer+1)*sizeof(LayerInfo));
+ memset(sf->layers+sf->layer_cnt,0,((layer+1)-sf->layer_cnt)*sizeof(LayerInfo));
+ sf->layer_cnt = layer+1;
+ }
+ getint(sfd,&o2);
+ sf->layers[layer].order2 = o2;
+ sf->layers[layer].background = layer==ly_back;
+ /* Used briefly, now background is after layer name */
+ while ( (ch=nlgetc(sfd))==' ' );
+ ungetc(ch,sfd);
+ if ( ch!='"' ) {
+ getint(sfd,&bk);
+ sf->layers[layer].background = bk;
+ }
+ /* end of section for obsolete format */
+ sf->layers[layer].name = SFDReadUTF7Str(sfd);
+ while ( (ch=nlgetc(sfd))==' ' );
+ ungetc(ch,sfd);
+ if ( ch!='\n' ) {
+ getint(sfd,&bk);
+ sf->layers[layer].background = bk;
+ }
+ while ( (ch=nlgetc(sfd))==' ' );
+ ungetc(ch,sfd);
+ if ( ch!='\n' ) { sf->layers[layer].ufo_path = SFDReadUTF7Str(sfd); }
+ }
+ else if ( strmatch(tok,"PreferredKerning:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->preferred_kerning = temp;
+ }
+ else if ( strmatch(tok,"StrokedFont:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->strokedfont = temp;
+ }
+ else if ( strmatch(tok,"MultiLayer:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->multilayer = temp;
+ }
+ else if ( strmatch(tok,"NeedsXUIDChange:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->changed_since_xuidchanged = temp;
+ }
+ else if ( strmatch(tok,"VerticalOrigin:")==0 )
+ {
+ // this doesn't seem to be written ever.
+ int temp;
+ getint(sfd,&temp);
+ sf->hasvmetrics = true;
+ }
+ else if ( strmatch(tok,"HasVMetrics:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->hasvmetrics = temp;
+ }
+ else if ( strmatch(tok,"Justify:")==0 )
+ {
+ SFDParseJustify(sfd,sf,tok);
+ }
+ else if ( strmatch(tok,"BaseHoriz:")==0 )
+ {
+ sf->horiz_base = SFDParseBase(sfd);
+ d->last_base = sf->horiz_base;
+ d->last_base_script = NULL;
+ }
+ else if ( strmatch(tok,"BaseVert:")==0 )
+ {
+ sf->vert_base = SFDParseBase(sfd);
+ d->last_base = sf->vert_base;
+ d->last_base_script = NULL;
+ }
+ else if ( strmatch(tok,"BaseScript:")==0 )
+ {
+ struct basescript *bs = SFDParseBaseScript(sfd,d->last_base);
+ if ( d->last_base==NULL )
+ {
+ BaseScriptFree(bs);
+ bs = NULL;
+ }
+ else if ( d->last_base_script!=NULL )
+ d->last_base_script->next = bs;
+ else
+ d->last_base->scripts = bs;
+ d->last_base_script = bs;
+ }
+ else if ( strmatch(tok,"StyleMap:")==0 )
+ {
+ gethex(sfd,(uint32 *)&sf->pfminfo.stylemap);
+ }
+ /* Legacy attribute for StyleMap. Deprecated. */
+ else if ( strmatch(tok,"OS2StyleName:")==0 )
+ {
+ char* sname = SFDReadUTF7Str(sfd);
+ if (sf->pfminfo.stylemap == -1) {
+ if (strcmp(sname,"bold italic")==0) sf->pfminfo.stylemap = 0x21;
+ else if (strcmp(sname,"bold")==0) sf->pfminfo.stylemap = 0x20;
+ else if (strcmp(sname,"italic")==0) sf->pfminfo.stylemap = 0x01;
+ else if (strcmp(sname,"regular")==0) sf->pfminfo.stylemap = 0x40;
+ }
+ free(sname);
+ }
+ else if ( strmatch(tok,"FSType:")==0 )
+ {
+ getsint(sfd,&sf->pfminfo.fstype);
+ }
+ else if ( strmatch(tok,"OS2Version:")==0 )
+ {
+ getsint(sfd,&sf->os2_version);
+ }
+ else if ( strmatch(tok,"OS2_WeightWidthSlopeOnly:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->weight_width_slope_only = temp;
+ }
+ else if ( strmatch(tok,"OS2_UseTypoMetrics:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->use_typo_metrics = temp;
+ }
+ else if ( strmatch(tok,"UseUniqueID:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->use_uniqueid = temp;
+ }
+ else if ( strmatch(tok,"UseXUID:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->use_xuid = temp;
+ }
+ else if ( strmatch(tok,"UniqueID:")==0 )
+ {
+ getint(sfd,&sf->uniqueid);
+ }
+ else if ( strmatch(tok,"XUID:")==0 )
+ {
+ geteol(sfd,tok);
+ sf->xuid = copy(tok);
+ }
+ else if ( strmatch(tok,"Lookup:")==0 )
+ {
+ OTLookup *otl;
+ int temp;
+ otl = chunkalloc(sizeof(OTLookup));
+ getint(sfd,&temp); otl->lookup_type = temp;
+ getint(sfd,&temp); otl->lookup_flags = temp;
+ getint(sfd,&temp); otl->store_in_afm = temp;
+ otl->lookup_name = SFDReadUTF7Str(sfd);
+ if ( otl->lookup_type<gpos_single ) {
+ if ( d->lastsotl==NULL )
+ sf->gsub_lookups = otl;
+ else
+ d->lastsotl->next = otl;
+ d->lastsotl = otl;
+ } else {
+ if ( d->lastpotl==NULL )
+ sf->gpos_lookups = otl;
+ else
+ d->lastpotl->next = otl;
+ d->lastpotl = otl;
+ }
+ SFDParseLookup(sfd,otl);
+ }
+ else if ( strmatch(tok,"MarkAttachClasses:")==0 )
+ {
+ getint(sfd,&sf->mark_class_cnt);
+ sf->mark_classes = malloc(sf->mark_class_cnt*sizeof(char *));
+ sf->mark_class_names = malloc(sf->mark_class_cnt*sizeof(char *));
+ sf->mark_classes[0] = NULL; sf->mark_class_names[0] = NULL;
+ for ( i=1; i<sf->mark_class_cnt; ++i )
+ {
+ /* Class 0 is unused */
+ int temp;
+ while ( (temp=nlgetc(sfd))=='\n' || temp=='\r' ); ungetc(temp,sfd);
+ sf->mark_class_names[i] = SFDReadUTF7Str(sfd);
+ getint(sfd,&temp);
+ sf->mark_classes[i] = malloc(temp+1); sf->mark_classes[i][temp] = '\0';
+ nlgetc(sfd); /* skip space */
+ fread(sf->mark_classes[i],1,temp,sfd);
+ }
+ }
+ else if ( strmatch(tok,"MarkAttachSets:")==0 )
+ {
+ getint(sfd,&sf->mark_set_cnt);
+ sf->mark_sets = malloc(sf->mark_set_cnt*sizeof(char *));
+ sf->mark_set_names = malloc(sf->mark_set_cnt*sizeof(char *));
+ for ( i=0; i<sf->mark_set_cnt; ++i )
+ {
+ /* Set 0 is used */
+ int temp;
+ while ( (temp=nlgetc(sfd))=='\n' || temp=='\r' ); ungetc(temp,sfd);
+ sf->mark_set_names[i] = SFDReadUTF7Str(sfd);
+ getint(sfd,&temp);
+ sf->mark_sets[i] = malloc(temp+1); sf->mark_sets[i][temp] = '\0';
+ nlgetc(sfd); /* skip space */
+ fread(sf->mark_sets[i],1,temp,sfd);
+ }
+ }
+ else if ( strmatch(tok,"KernClass2:")==0 || strmatch(tok,"VKernClass2:")==0 ||
+ strmatch(tok,"KernClass:")==0 || strmatch(tok,"VKernClass:")==0 ||
+ strmatch(tok,"KernClass3:")==0 || strmatch(tok,"VKernClass3:")==0 )
+ {
+ int kernclassversion = 0;
+ int isv = tok[0]=='V';
+ int kcvoffset = (isv ? 10 : 9); //Offset to read kerning class version
+ if (isdigit(tok[kcvoffset])) kernclassversion = tok[kcvoffset] - '0';
+ int temp, classstart=1;
+ int old = (kernclassversion == 0);
+
+ if ( (sf->sfd_version<2)!=old ) {
+ IError( "Version mixup in Kerning Classes of sfd file." );
+ exit(1);
+ }
+ kc = chunkalloc(old ? sizeof(KernClass1) : sizeof(KernClass));
+ getint(sfd,&kc->first_cnt);
+ ch=nlgetc(sfd);
+ if ( ch=='+' )
+ classstart = 0;
+ else
+ ungetc(ch,sfd);
+ getint(sfd,&kc->second_cnt);
+ if ( old ) {
+ getint(sfd,&temp); ((KernClass1 *) kc)->sli = temp;
+ getint(sfd,&temp); ((KernClass1 *) kc)->flags = temp;
+ } else {
+ kc->subtable = SFFindLookupSubtableAndFreeName(sf,SFDReadUTF7Str(sfd));
+ if ( kc->subtable!=NULL && kc->subtable->kc==NULL )
+ kc->subtable->kc = kc;
+ else {
+ if ( kc->subtable==NULL )
+ LogError(_("Bad SFD file, missing subtable in kernclass defn.\n") );
+ else
+ LogError(_("Bad SFD file, two kerning classes assigned to the same subtable: %s\n"), kc->subtable->subtable_name );
+ kc->subtable = NULL;
+ }
+ }
+ kc->firsts = calloc(kc->first_cnt,sizeof(char *));
+ kc->seconds = calloc(kc->second_cnt,sizeof(char *));
+ kc->offsets = calloc(kc->first_cnt*kc->second_cnt,sizeof(int16));
+ kc->adjusts = calloc(kc->first_cnt*kc->second_cnt,sizeof(DeviceTable));
+ if (kernclassversion >= 3) {
+ kc->firsts_flags = calloc(kc->first_cnt, sizeof(int));
+ kc->seconds_flags = calloc(kc->second_cnt, sizeof(int));
+ kc->offsets_flags = calloc(kc->first_cnt*kc->second_cnt, sizeof(int));
+ kc->firsts_names = calloc(kc->first_cnt, sizeof(char*));
+ kc->seconds_names = calloc(kc->second_cnt, sizeof(char*));
+ }
+ kc->firsts[0] = NULL;
+ for ( i=classstart; i<kc->first_cnt; ++i ) {
+ if (kernclassversion < 3) {
+ getint(sfd,&temp);
+ kc->firsts[i] = malloc(temp+1); kc->firsts[i][temp] = '\0';
+ nlgetc(sfd); /* skip space */
+ fread(kc->firsts[i],1,temp,sfd);
+ } else {
+ getint(sfd,&kc->firsts_flags[i]);
+ while ((ch=nlgetc(sfd)) == ' '); ungetc(ch, sfd); if (ch == '\n' || ch == EOF) continue;
+ kc->firsts_names[i] = SFDReadUTF7Str(sfd);
+ while ((ch=nlgetc(sfd)) == ' '); ungetc(ch, sfd); if (ch == '\n' || ch == EOF) continue;
+ kc->firsts[i] = SFDReadUTF7Str(sfd);
+ if (kc->firsts[i] == NULL) kc->firsts[i] = copy(""); // In certain places, this must be defined.
+ while ((ch=nlgetc(sfd)) == ' ' || ch == '\n'); ungetc(ch, sfd);
+ }
+ }
+ kc->seconds[0] = NULL;
+ for ( i=1; i<kc->second_cnt; ++i ) {
+ if (kernclassversion < 3) {
+ getint(sfd,&temp);
+ kc->seconds[i] = malloc(temp+1); kc->seconds[i][temp] = '\0';
+ nlgetc(sfd); /* skip space */
+ fread(kc->seconds[i],1,temp,sfd);
+ } else {
+ getint(sfd,&temp);
+ kc->seconds_flags[i] = temp;
+ while ((ch=nlgetc(sfd)) == ' '); ungetc(ch, sfd); if (ch == '\n' || ch == EOF) continue;
+ kc->seconds_names[i] = SFDReadUTF7Str(sfd);
+ while ((ch=nlgetc(sfd)) == ' '); ungetc(ch, sfd); if (ch == '\n' || ch == EOF) continue;
+ kc->seconds[i] = SFDReadUTF7Str(sfd);
+ if (kc->seconds[i] == NULL) kc->seconds[i] = copy(""); // In certain places, this must be defined.
+ while ((ch=nlgetc(sfd)) == ' ' || ch == '\n'); ungetc(ch, sfd);
+ }
+ }
+ for ( i=0; i<kc->first_cnt*kc->second_cnt; ++i ) {
+ if (kernclassversion >= 3) {
+ getint(sfd,&temp);
+ kc->offsets_flags[i] = temp;
+ }
+ getint(sfd,&temp);
+ kc->offsets[i] = temp;
+ SFDReadDeviceTable(sfd,&kc->adjusts[i]);
+ }
+ if ( !old && kc->subtable == NULL ) {
+ /* Error. Ignore it. Free it. Whatever */;
+ } else if ( !isv ) {
+ if ( d->lastkc==NULL )
+ sf->kerns = kc;
+ else
+ d->lastkc->next = kc;
+ d->lastkc = kc;
+ } else {
+ if ( d->lastvkc==NULL )
+ sf->vkerns = kc;
+ else
+ d->lastvkc->next = kc;
+ d->lastvkc = kc;
+ }
+ }
+ else if ( strmatch(tok,"ContextPos2:")==0 || strmatch(tok,"ContextSub2:")==0 ||
+ strmatch(tok,"ChainPos2:")==0 || strmatch(tok,"ChainSub2:")==0 ||
+ strmatch(tok,"ReverseChain2:")==0 ||
+ strmatch(tok,"ContextPos:")==0 || strmatch(tok,"ContextSub:")==0 ||
+ strmatch(tok,"ChainPos:")==0 || strmatch(tok,"ChainSub:")==0 ||
+ strmatch(tok,"ReverseChain:")==0 )
+ {
+ FPST *fpst;
+ int old;
+ if ( strchr(tok,'2')!=NULL ) {
+ old = false;
+ fpst = chunkalloc(sizeof(FPST));
+ } else {
+ old = true;
+ fpst = chunkalloc(sizeof(FPST1));
+ }
+ if ( (sf->sfd_version<2)!=old ) {
+ IError( "Version mixup in FPST of sfd file." );
+ exit(1);
+ }
+ if ( d->lastfp==NULL )
+ sf->possub = fpst;
+ else
+ d->lastfp->next = fpst;
+ d->lastfp = fpst;
+ SFDParseChainContext(sfd,sf,fpst,tok,old);
+ }
+ else if ( strmatch(tok,"Group:")==0 ) {
+ struct ff_glyphclasses *grouptmp = calloc(1, sizeof(struct ff_glyphclasses));
+ while ((ch=nlgetc(sfd)) == ' '); ungetc(ch, sfd);
+ grouptmp->classname = SFDReadUTF7Str(sfd);
+ while ((ch=nlgetc(sfd)) == ' '); ungetc(ch, sfd);
+ grouptmp->glyphs = SFDReadUTF7Str(sfd);
+ while ((ch=nlgetc(sfd)) == ' ' || ch == '\n'); ungetc(ch, sfd);
+ if (d->lastgroup != NULL) d->lastgroup->next = grouptmp; else sf->groups = grouptmp;
+ d->lastgroup = grouptmp;
+ }
+ else if ( strmatch(tok,"GroupKern:")==0 ) {
+ int temp = 0;
+ struct ff_rawoffsets *kerntmp = calloc(1, sizeof(struct ff_rawoffsets));
+ while ((ch=nlgetc(sfd)) == ' '); ungetc(ch, sfd);
+ kerntmp->left = SFDReadUTF7Str(sfd);
+ while ((ch=nlgetc(sfd)) == ' '); ungetc(ch, sfd);
+ kerntmp->right = SFDReadUTF7Str(sfd);
+ while ((ch=nlgetc(sfd)) == ' '); ungetc(ch, sfd);
+ getint(sfd,&temp);
+ kerntmp->offset = temp;
+ while ((ch=nlgetc(sfd)) == ' ' || ch == '\n'); ungetc(ch, sfd);
+ if (d->lastgroupkern != NULL) d->lastgroupkern->next = kerntmp; else sf->groupkerns = kerntmp;
+ d->lastgroupkern = kerntmp;
+ }
+ else if ( strmatch(tok,"GroupVKern:")==0 ) {
+ int temp = 0;
+ struct ff_rawoffsets *kerntmp = calloc(1, sizeof(struct ff_rawoffsets));
+ while ((ch=nlgetc(sfd)) == ' '); ungetc(ch, sfd);
+ kerntmp->left = SFDReadUTF7Str(sfd);
+ while ((ch=nlgetc(sfd)) == ' '); ungetc(ch, sfd);
+ kerntmp->right = SFDReadUTF7Str(sfd);
+ while ((ch=nlgetc(sfd)) == ' '); ungetc(ch, sfd);
+ getint(sfd,&temp);
+ kerntmp->offset = temp;
+ while ((ch=nlgetc(sfd)) == ' ' || ch == '\n'); ungetc(ch, sfd);
+ if (d->lastgroupvkern != NULL) d->lastgroupvkern->next = kerntmp; else sf->groupvkerns = kerntmp;
+ d->lastgroupvkern = kerntmp;
+ }
+ else if ( strmatch(tok,"MacIndic2:")==0 || strmatch(tok,"MacContext2:")==0 ||
+ strmatch(tok,"MacLigature2:")==0 || strmatch(tok,"MacSimple2:")==0 ||
+ strmatch(tok,"MacKern2:")==0 || strmatch(tok,"MacInsert2:")==0 ||
+ strmatch(tok,"MacIndic:")==0 || strmatch(tok,"MacContext:")==0 ||
+ strmatch(tok,"MacLigature:")==0 || strmatch(tok,"MacSimple:")==0 ||
+ strmatch(tok,"MacKern:")==0 || strmatch(tok,"MacInsert:")==0 )
+ {
+ ASM *sm;
+ if ( strchr(tok,'2')!=NULL ) {
+ old = false;
+ sm = chunkalloc(sizeof(ASM));
+ } else {
+ old = true;
+ sm = chunkalloc(sizeof(ASM1));
+ }
+ if ( (sf->sfd_version<2)!=old ) {
+ IError( "Version mixup in state machine of sfd file." );
+ exit(1);
+ }
+ if ( d->lastsm==NULL )
+ sf->sm = sm;
+ else
+ d->lastsm->next = sm;
+ d->lastsm = sm;
+ SFDParseStateMachine(sfd,sf,sm,tok,old);
+ }
+ else if ( strmatch(tok,"MacFeat:")==0 )
+ {
+ sf->features = SFDParseMacFeatures(sfd,tok);
+ }
+ else if ( strmatch(tok,"TtfTable:")==0 )
+ {
+ /* Old, binary format */
+ /* still used for maxp and unknown tables */
+ SFDGetTtfTable(sfd,sf,d->lastttf);
+ }
+ else if ( strmatch(tok,"TtTable:")==0 )
+ {
+ /* text instruction format */
+ SFDGetTtTable(sfd,sf,d->lastttf);
+ }
+
+
+ ///////////////////
+
+ else if ( strmatch(tok,"ShortTable:")==0 )
+ {
+ // only read, not written.
+ /* text number format */
+ SFDGetShortTable(sfd,sf,d->lastttf);
+ }
+ else
+ {
+ //
+ // We didn't have a match ourselves.
+ //
+ return false;
+ }
+ return true;
+}
+
+static SplineFont *SFD_GetFont( FILE *sfd,SplineFont *cidmaster,char *tok,
+ int fromdir, char *dirname, float sfdversion )
+{
+ SplineFont *sf;
+ int realcnt, i, eof, mappos=-1, ch;
+ struct table_ordering *lastord = NULL;
+ struct axismap *lastaxismap = NULL;
+ struct named_instance *lastnamedinstance = NULL;
+ int pushedbacktok = false;
+ Encoding *enc = &custom;
+ struct remap *remap = NULL;
+ int haddupenc;
+ int old_style_order2 = false;
+ int had_layer_cnt=false;
+
+ orig_pos = 0; /* Only used for compatibility with extremely old sfd files */
+
+ sf = SplineFontEmpty();
+ sf->sfd_version = sfdversion;
+ sf->cidmaster = cidmaster;
+ sf->uni_interp = ui_unset;
+ SFD_GetFontMetaDataData d;
+ SFD_GetFontMetaDataData_Init( &d );
+ while ( 1 ) {
+ if ( pushedbacktok )
+ pushedbacktok = false;
+ else if ( (eof = getname(sfd,tok))!=1 ) {
+ if ( eof==-1 )
+ break;
+ geteol(sfd,tok);
+ continue;
+ }
+
+
+ bool wasMetadata = SFD_GetFontMetaData( sfd, tok, sf, &d );
+ had_layer_cnt = d.had_layer_cnt;
+ if( wasMetadata )
+ {
+ // we have handled the token entirely
+ // inside SFD_GetFontMetaData() move to next token.
+ continue;
+ }
+
+
+ if ( strmatch(tok,"DisplaySize:")==0 )
+ {
+ getint(sfd,&sf->display_size);
+ }
+ else if ( strmatch(tok,"DisplayLayer:")==0 )
+ {
+ getint(sfd,&sf->display_layer);
+ }
+ else if ( strmatch(tok,"ExtremaBound:")==0 )
+ {
+ getint(sfd,&sf->extrema_bound);
+ }
+ else if ( strmatch(tok,"WidthSeparation:")==0 )
+ {
+ getint(sfd,&sf->width_separation);
+ }
+ else if ( strmatch(tok,"WinInfo:")==0 )
+ {
+ int temp1, temp2;
+ getint(sfd,&sf->top_enc);
+ getint(sfd,&temp1);
+ getint(sfd,&temp2);
+ if ( sf->top_enc<=0 ) sf->top_enc=-1;
+ if ( temp1<=0 ) temp1 = 16;
+ if ( temp2<=0 ) temp2 = 4;
+ sf->desired_col_cnt = temp1;
+ sf->desired_row_cnt = temp2;
+ }
+ else if ( strmatch(tok,"AntiAlias:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->display_antialias = temp;
+ }
+ else if ( strmatch(tok,"FitToEm:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->display_bbsized = temp;
+ }
+ else if ( strmatch(tok,"Order2:")==0 )
+ {
+ getint(sfd,&old_style_order2);
+ sf->grid.order2 = old_style_order2;
+ sf->layers[ly_back].order2 = old_style_order2;
+ sf->layers[ly_fore].order2 = old_style_order2;
+ }
+ else if ( strmatch(tok,"GridOrder2:")==0 )
+ {
+ int o2;
+ getint(sfd,&o2);
+ sf->grid.order2 = o2;
+ }
+ else if ( strmatch(tok,"Encoding:")==0 )
+ {
+ enc = SFDGetEncoding(sfd,tok);
+ if ( sf->map!=NULL ) sf->map->enc = enc;
+ }
+ else if ( strmatch(tok,"OldEncoding:")==0 )
+ {
+ /* old_encname =*/ (void) SFDGetEncoding(sfd,tok);
+ }
+ else if ( strmatch(tok,"UnicodeInterp:")==0 )
+ {
+ sf->uni_interp = SFDGetUniInterp(sfd,tok,sf);
+ }
+ else if ( strmatch(tok,"NameList:")==0 )
+ {
+ SFDGetNameList(sfd,tok,sf);
+ }
+ else if ( strmatch(tok,"Compacted:")==0 )
+ {
+ int temp;
+ getint(sfd,&temp);
+ sf->compacted = temp;
+ }
+ else if ( strmatch(tok,"Registry:")==0 )
+ {
+ geteol(sfd,tok);
+ sf->cidregistry = copy(tok);
+ }
+
+
+ //////////
+
+
+ else if ( strmatch(tok,"Ordering:")==0 ) {
+ geteol(sfd,tok);
+ sf->ordering = copy(tok);
+ } else if ( strmatch(tok,"Supplement:")==0 ) {
+ getint(sfd,&sf->supplement);
+ } else if ( strmatch(tok,"RemapN:")==0 ) {
+ int n;
+ getint(sfd,&n);
+ remap = calloc(n+1,sizeof(struct remap));
+ remap[n].infont = -1;
+ mappos = 0;
+ if ( sf->map!=NULL ) sf->map->remap = remap;
+ } else if ( strmatch(tok,"Remap:")==0 ) {
+ uint32 f, l; int p;
+ gethex(sfd,&f);
+ gethex(sfd,&l);
+ getint(sfd,&p);
+ if ( remap!=NULL && remap[mappos].infont!=-1 ) {
+ remap[mappos].firstenc = f;
+ remap[mappos].lastenc = l;
+ remap[mappos].infont = p;
+ mappos++;
+ }
+ } else if ( strmatch(tok,"CIDVersion:")==0 ) {
+ real temp;
+ getreal(sfd,&temp);
+ sf->cidversion = temp;
+ } else if ( strmatch(tok,"Grid")==0 ) {
+ sf->grid.splines = SFDGetSplineSet(sfd,sf->grid.order2);
+ } else if ( strmatch(tok,"ScriptLang:")==0 ) {
+ int i,j,k;
+ int imax, jmax, kmax;
+ if ( sf->sfd_version==0 || sf->sfd_version>=2 ) {
+ IError( "Script lang lists should not happen in version 2 sfd files." );
+ SplineFontFree(sf);
+ return NULL;
+ }
+ getint(sfd,&imax);
+ ((SplineFont1 *) sf)->sli_cnt = imax;
+ ((SplineFont1 *) sf)->script_lang = malloc((imax+1)*sizeof(struct script_record *));
+ ((SplineFont1 *) sf)->script_lang[imax] = NULL;
+ for ( i=0; i<imax; ++i ) {
+ getint(sfd,&jmax);
+ ((SplineFont1 *) sf)->script_lang[i] = malloc((jmax+1)*sizeof(struct script_record));
+ ((SplineFont1 *) sf)->script_lang[i][jmax].script = 0;
+ for ( j=0; j<jmax; ++j ) {
+ ((SplineFont1 *) sf)->script_lang[i][j].script = gettag(sfd);
+ getint(sfd,&kmax);
+ ((SplineFont1 *) sf)->script_lang[i][j].langs = malloc((kmax+1)*sizeof(uint32));
+ ((SplineFont1 *) sf)->script_lang[i][j].langs[kmax] = 0;
+ for ( k=0; k<kmax; ++k ) {
+ ((SplineFont1 *) sf)->script_lang[i][j].langs[k] = gettag(sfd);
+ }
+ }
+ }
+ } else if ( strmatch(tok,"TeXData:")==0 ) {
+ int temp;
+ getint(sfd,&temp);
+ sf->texdata.type = temp;
+ getint(sfd, &temp);
+ if ( sf->design_size==0 ) {
+ sf->design_size = (5*temp+(1<<18))>>19;
+ }
+ for ( i=0; i<22; ++i ) {
+ int foo;
+ getint(sfd,&foo);
+ sf->texdata.params[i]=foo;
+ }
+ } else if ( strnmatch(tok,"AnchorClass",11)==0 ) {
+ char *name;
+ AnchorClass *lastan = NULL, *an;
+ int old = strchr(tok,'2')==NULL;
+ while ( (name=SFDReadUTF7Str(sfd))!=NULL ) {
+ an = chunkalloc(old ? sizeof(AnchorClass1) : sizeof(AnchorClass));
+ an->name = name;
+ if ( old ) {
+ getname(sfd,tok);
+ if ( tok[0]=='0' && tok[1]=='\0' )
+ ((AnchorClass1 *) an)->feature_tag = 0;
+ else {
+ if ( tok[1]=='\0' ) { tok[1]=' '; tok[2] = 0; }
+ if ( tok[2]=='\0' ) { tok[2]=' '; tok[3] = 0; }
+ if ( tok[3]=='\0' ) { tok[3]=' '; tok[4] = 0; }
+ ((AnchorClass1 *) an)->feature_tag = (tok[0]<<24) | (tok[1]<<16) | (tok[2]<<8) | tok[3];
+ }
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ ungetc(ch,sfd);
+ if ( isdigit(ch)) {
+ int temp;
+ getint(sfd,&temp);
+ ((AnchorClass1 *) an)->flags = temp;
+ }
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ ungetc(ch,sfd);
+ if ( isdigit(ch)) {
+ int temp;
+ getint(sfd,&temp);
+ ((AnchorClass1 *) an)->script_lang_index = temp;
+ } else
+ ((AnchorClass1 *) an)->script_lang_index = 0xffff; /* Will be fixed up later */
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ ungetc(ch,sfd);
+ if ( isdigit(ch)) {
+ int temp;
+ getint(sfd,&temp);
+ ((AnchorClass1 *) an)->merge_with = temp;
+ } else
+ ((AnchorClass1 *) an)->merge_with = 0xffff; /* Will be fixed up later */
+ } else {
+ char *subtable_name = SFDReadUTF7Str(sfd);
+ if ( subtable_name!=NULL) /* subtable is optional */
+ an->subtable = SFFindLookupSubtableAndFreeName(sf,subtable_name);
+ }
+ while ( (ch=nlgetc(sfd))==' ' || ch=='\t' );
+ ungetc(ch,sfd);
+ if ( isdigit(ch) ) {
+ /* Early versions of SfdFormat 2 had a number here */
+ int temp;
+ getint(sfd,&temp);
+ an->type = temp;
+ } else if ( old ) {
+ if ( ((AnchorClass1 *) an)->feature_tag==CHR('c','u','r','s'))
+ an->type = act_curs;
+ else if ( ((AnchorClass1 *) an)->feature_tag==CHR('m','k','m','k'))
+ an->type = act_mkmk;
+ else
+ an->type = act_mark;
+ } else {
+ an->type = act_mark;
+ if( an->subtable && an->subtable->lookup )
+ {
+ switch ( an->subtable->lookup->lookup_type )
+ {
+ case gpos_cursive:
+ an->type = act_curs;
+ break;
+ case gpos_mark2base:
+ an->type = act_mark;
+ break;
+ case gpos_mark2ligature:
+ an->type = act_mklg;
+ break;
+ case gpos_mark2mark:
+ an->type = act_mkmk;
+ break;
+ default:
+ an->type = act_mark;
+ break;
+ }
+ }
+ }
+ if ( lastan==NULL )
+ sf->anchor = an;
+ else
+ lastan->next = an;
+ lastan = an;
+ }
+ } else if ( strncmp(tok,"MATH:",5)==0 ) {
+ SFDParseMathItem(sfd,sf,tok);
+ } else if ( strmatch(tok,"TableOrder:")==0 ) {
+ int temp;
+ struct table_ordering *ord;
+ if ( sfdversion==0 || sfdversion>=2 ) {
+ IError("Table ordering specified in version 2 sfd file.\n" );
+ SplineFontFree(sf);
+ return NULL;
+ }
+ ord = chunkalloc(sizeof(struct table_ordering));
+ ord->table_tag = gettag(sfd);
+ getint(sfd,&temp);
+ ord->ordered_features = malloc((temp+1)*sizeof(uint32));
+ ord->ordered_features[temp] = 0;
+ for ( i=0; i<temp; ++i ) {
+ while ( isspace((ch=nlgetc(sfd))) );
+ if ( ch=='\'' ) {
+ ungetc(ch,sfd);
+ ord->ordered_features[i] = gettag(sfd);
+ } else if ( ch=='<' ) {
+ int f,s;
+ fscanf(sfd,"%d,%d>", &f, &s );
+ ord->ordered_features[i] = (f<<16)|s;
+ }
+ }
+ if ( lastord==NULL )
+ ((SplineFont1 *) sf)->orders = ord;
+ else
+ lastord->next = ord;
+ lastord = ord;
+ } else if ( strmatch(tok,"BeginPrivate:")==0 ) {
+ SFDGetPrivate(sfd,sf);
+ } else if ( strmatch(tok,"BeginSubrs:")==0 ) { /* leave in so we don't croak on old sfd files */
+ SFDGetSubrs(sfd);
+ } else if ( strmatch(tok,"PickledData:")==0 ) {
+ if (sf->python_persistent != NULL) {
+#if defined(_NO_PYTHON)
+ free( sf->python_persistent ); /* It's a string of pickled data which we leave as a string */
+#else
+ PyFF_FreePythonPersistent(sf->python_persistent);
+#endif
+ sf->python_persistent = NULL;
+ }
+ sf->python_persistent = SFDUnPickle(sfd, 0);
+ sf->python_persistent_has_lists = 0;
+ } else if ( strmatch(tok,"PickledDataWithLists:")==0 ) {
+ if (sf->python_persistent != NULL) {
+#if defined(_NO_PYTHON)
+ free( sf->python_persistent ); /* It's a string of pickled data which we leave as a string */
+#else
+ PyFF_FreePythonPersistent(sf->python_persistent);
+#endif
+ sf->python_persistent = NULL;
+ }
+ sf->python_persistent = SFDUnPickle(sfd, 1);
+ sf->python_persistent_has_lists = 1;
+ } else if ( strmatch(tok,"MMCounts:")==0 ) {
+ MMSet *mm = sf->mm = chunkalloc(sizeof(MMSet));
+ getint(sfd,&mm->instance_count);
+ getint(sfd,&mm->axis_count);
+ ch = nlgetc(sfd);
+ if ( ch!=' ' )
+ ungetc(ch,sfd);
+ else { int temp;
+ getint(sfd,&temp);
+ mm->apple = temp;
+ getint(sfd,&mm->named_instance_count);
+ }
+ mm->instances = calloc(mm->instance_count,sizeof(SplineFont *));
+ mm->positions = malloc(mm->instance_count*mm->axis_count*sizeof(real));
+ mm->defweights = malloc(mm->instance_count*sizeof(real));
+ mm->axismaps = calloc(mm->axis_count,sizeof(struct axismap));
+ if ( mm->named_instance_count!=0 )
+ mm->named_instances = calloc(mm->named_instance_count,sizeof(struct named_instance));
+ } else if ( strmatch(tok,"MMAxis:")==0 ) {
+ MMSet *mm = sf->mm;
+ if ( mm!=NULL ) {
+ for ( i=0; i<mm->axis_count; ++i ) {
+ getname(sfd,tok);
+ mm->axes[i] = copy(tok);
+ }
+ }
+ } else if ( strmatch(tok,"MMPositions:")==0 ) {
+ MMSet *mm = sf->mm;
+ if ( mm!=NULL ) {
+ for ( i=0; i<mm->axis_count*mm->instance_count; ++i )
+ getreal(sfd,&mm->positions[i]);
+ }
+ } else if ( strmatch(tok,"MMWeights:")==0 ) {
+ MMSet *mm = sf->mm;
+ if ( mm!=NULL ) {
+ for ( i=0; i<mm->instance_count; ++i )
+ getreal(sfd,&mm->defweights[i]);
+ }
+ } else if ( strmatch(tok,"MMAxisMap:")==0 ) {
+ MMSet *mm = sf->mm;
+ if ( mm!=NULL ) {
+ int index, points;
+ getint(sfd,&index); getint(sfd,&points);
+ mm->axismaps[index].points = points;
+ mm->axismaps[index].blends = malloc(points*sizeof(real));
+ mm->axismaps[index].designs = malloc(points*sizeof(real));
+ for ( i=0; i<points; ++i ) {
+ getreal(sfd,&mm->axismaps[index].blends[i]);
+ while ( (ch=nlgetc(sfd))!=EOF && isspace(ch));
+ ungetc(ch,sfd);
+ if ( (ch=nlgetc(sfd))!='=' )
+ ungetc(ch,sfd);
+ else if ( (ch=nlgetc(sfd))!='>' )
+ ungetc(ch,sfd);
+ getreal(sfd,&mm->axismaps[index].designs[i]);
+ }
+ lastaxismap = &mm->axismaps[index];
+ lastnamedinstance = NULL;
+ }
+ } else if ( strmatch(tok,"MMNamedInstance:")==0 ) {
+ MMSet *mm = sf->mm;
+ if ( mm!=NULL ) {
+ int index;
+ getint(sfd,&index);
+ mm->named_instances[index].coords = malloc(mm->axis_count*sizeof(real));
+ for ( i=0; i<mm->axis_count; ++i )
+ getreal(sfd,&mm->named_instances[index].coords[i]);
+ lastnamedinstance = &mm->named_instances[index];
+ lastaxismap = NULL;
+ }
+ } else if ( strmatch(tok,"MacName:")==0 ) {
+ struct macname *names = SFDParseMacNames(sfd,tok);
+ if ( lastaxismap!=NULL )
+ lastaxismap->axisnames = names;
+ else if ( lastnamedinstance !=NULL )
+ lastnamedinstance->names = names;
+ pushedbacktok = true;
+ } else if ( strmatch(tok,"MMCDV:")==0 ) {
+ MMSet *mm = sf->mm;
+ if ( mm!=NULL )
+ mm->cdv = SFDParseMMSubroutine(sfd);
+ } else if ( strmatch(tok,"MMNDV:")==0 ) {
+ MMSet *mm = sf->mm;
+ if ( mm!=NULL )
+ mm->ndv = SFDParseMMSubroutine(sfd);
+ } else if ( strmatch(tok,"BeginMMFonts:")==0 ) {
+ int cnt;
+ getint(sfd,&cnt);
+ getint(sfd,&realcnt);
+ ff_progress_change_stages(cnt);
+ ff_progress_change_total(realcnt);
+ MMInferStuff(sf->mm);
+ break;
+ } else if ( strmatch(tok,"BeginSubFonts:")==0 ) {
+ getint(sfd,&sf->subfontcnt);
+ sf->subfonts = calloc(sf->subfontcnt,sizeof(SplineFont *));
+ getint(sfd,&realcnt);
+ sf->map = EncMap1to1(realcnt);
+ ff_progress_change_stages(2);
+ ff_progress_change_total(realcnt);
+ break;
+ } else if ( strmatch(tok,"BeginChars:")==0 ) {
+ int charcnt;
+ getint(sfd,&charcnt);
+ if (charcnt<enc->char_cnt) {
+ IError("SFD file specifies too few slots for its encoding.\n" );
+exit( 1 );
+ }
+ if ( getint(sfd,&realcnt)!=1 || realcnt==-1 )
+ realcnt = charcnt;
+ else
+ ++realcnt; /* value saved is max glyph, not glyph cnt */
+ ff_progress_change_total(realcnt);
+ sf->glyphcnt = sf->glyphmax = realcnt;
+ sf->glyphs = calloc(realcnt,sizeof(SplineChar *));
+ if ( cidmaster!=NULL ) {
+ sf->map = cidmaster->map;
+ } else {
+ sf->map = EncMapNew(charcnt,realcnt,enc);
+ sf->map->remap = remap;
+ }
+ SFDSizeMap(sf->map,sf->glyphcnt,charcnt);
+ break;
+#if HANYANG
+ } else if ( strmatch(tok,"BeginCompositionRules")==0 ) {
+ sf->rules = SFDReadCompositionRules(sfd);
+#endif
+ } else {
+ /* If we don't understand it, skip it */
+ geteol(sfd,tok);
+ }
+ }
+
+ if ( sf->subfontcnt!=0 ) {
+ ff_progress_change_stages(2*sf->subfontcnt);
+ for ( i=0; i<sf->subfontcnt; ++i ) {
+ if ( i!=0 )
+ ff_progress_next_stage();
+ sf->subfonts[i] = SFD_GetFont(sfd,sf,tok,fromdir,dirname,sfdversion);
+ }
+ } else if ( sf->mm!=NULL ) {
+ MMSet *mm = sf->mm;
+ ff_progress_change_stages(2*(mm->instance_count+1));
+ for ( i=0; i<mm->instance_count; ++i ) {
+ if ( i!=0 )
+ ff_progress_next_stage();
+ mm->instances[i] = SFD_GetFont(sfd,NULL,tok,fromdir,dirname,sfdversion);
+ EncMapFree(mm->instances[i]->map); mm->instances[i]->map=NULL;
+ mm->instances[i]->mm = mm;
+ }
+ ff_progress_next_stage();
+ mm->normal = SFD_GetFont(sfd,NULL,tok,fromdir,dirname,sfdversion);
+ mm->normal->mm = mm;
+ sf->mm = NULL;
+ SplineFontFree(sf);
+ sf = mm->normal;
+ if ( sf->map->enc!=&custom ) {
+ EncMap *map;
+ MMMatchGlyphs(mm); /* sfd files from before the encoding change can have mismatched orig pos */
+ map = EncMapFromEncoding(sf,sf->map->enc);
+ EncMapFree(sf->map);
+ sf->map = map;
+ }
+ } else {
+ while ( SFDGetChar(sfd,sf,had_layer_cnt)!=NULL ) {
+ ff_progress_next();
+ }
+ ff_progress_next_stage();
+ }
+ haddupenc = false;
+ while ( getname(sfd,tok)==1 ) {
+ if ( strcmp(tok,"EndSplineFont")==0 || strcmp(tok,"EndSubSplineFont")==0 )
+ break;
+ else if ( strmatch(tok,"DupEnc:")==0 ) {
+ int enc, orig;
+ haddupenc = true;
+ if ( getint(sfd,&enc) && getint(sfd,&orig) && sf->map!=NULL ) {
+ SFDSetEncMap(sf,orig,enc);
+ }
+ }
+ }
+ if ( sf->cidmaster==NULL )
+ SFDFixupRefs(sf);
+
+ if ( !haddupenc )
+ SFD_DoAltUnis(sf);
+ else
+ AltUniFigure(sf,sf->map,true);
+ if ( !d.hadtimes )
+ SFTimesFromFile(sf,sfd);
+return( sf );
+}
+
+void SFTimesFromFile(SplineFont *sf,FILE *file) {
+ struct stat b;
+ if ( fstat(fileno(file),&b)!=-1 ) {
+ sf->modificationtime = b.st_mtime;
+ sf->creationtime = b.st_mtime;
+ }
+}
+
+static double SFDStartsCorrectly(FILE *sfd,char *tok) {
+ real dval;
+ int ch;
+
+ if ( getname(sfd,tok)!=1 )
+return( -1 );
+ if ( strcmp(tok,"SplineFontDB:")!=0 )
+return( -1 );
+ if ( getreal(sfd,&dval)!=1 )
+return( -1 );
+ /* We don't yet generate version 4 of sfd. It will contain backslash */
+ /* newline in the middle of very long lines. I've put in code to parse */
+ /* this sequence, but I don't yet generate it. I want the parser to */
+ /* perculate through to users before I introduce the new format so there */
+ /* will be fewer complaints when it happens */
+ // MIQ: getreal() can give some funky rounding errors it seems
+ if ( dval!=2.0 && dval!=3.0
+ && !(dval > 3.09 && dval <= 3.11)
+ && dval!=4.0 )
+ {
+ LogError("Bad SFD Version number %.1f", dval );
+return( -1 );
+ }
+ ch = nlgetc(sfd); ungetc(ch,sfd);
+ if ( ch!='\r' && ch!='\n' )
+return( -1 );
+
+return( dval );
+}
+
+static SplineFont *SFD_Read(char *filename,FILE *sfd, int fromdir) {
+ SplineFont *sf=NULL;
+ char tok[2000];
+ double version;
+
+ if ( sfd==NULL ) {
+ if ( fromdir ) {
+ snprintf(tok,sizeof(tok),"%s/" FONT_PROPS, filename );
+ sfd = fopen(tok,"r");
+ } else
+ sfd = fopen(filename,"r");
+ }
+ if ( sfd==NULL )
+return( NULL );
+ locale_t tmplocale; locale_t oldlocale; // Declare temporary locale storage.
+ switch_to_c_locale(&tmplocale, &oldlocale); // Switch to the C locale temporarily and cache the old locale.
+ ff_progress_change_stages(2);
+ if ( (version = SFDStartsCorrectly(sfd,tok))!=-1 )
+ sf = SFD_GetFont(sfd,NULL,tok,fromdir,filename,version);
+ switch_to_old_locale(&tmplocale, &oldlocale); // Switch to the cached locale.
+ if ( sf!=NULL ) {
+ sf->filename = copy(filename);
+ if ( sf->mm!=NULL ) {
+ int i;
+ for ( i=0; i<sf->mm->instance_count; ++i )
+ sf->mm->instances[i]->filename = copy(filename);
+ }
+ }
+ fclose(sfd);
+return( sf );
+}
+
+SplineFont *SFDRead(char *filename) {
+return( SFD_Read(filename,NULL,false));
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sfd1.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sfd1.c
new file mode 100644
index 00000000000..159748302a6
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sfd1.c
@@ -0,0 +1,164 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#include "fontforge.h"
+#include "sfd1.h"
+
+/* This file contains the routines needed to process an old style sfd file and*/
+/* convert it into the new format */
+
+static void SFGuessScriptList(SplineFont1 *sf) {
+ uint32 scripts[32], script;
+ int i, scnt=0, j;
+
+ for ( i=0; i<sf->sf.glyphcnt; ++i ) if ( sf->sf.glyphs[i]!=NULL ) {
+ script = SCScriptFromUnicode(sf->sf.glyphs[i]);
+ if ( script!=0 && script!=DEFAULT_SCRIPT ) {
+ for ( j=scnt-1; j>=0 ; --j )
+ if ( scripts[j]==script )
+ break;
+ if ( j<0 ) {
+ scripts[scnt++] = script;
+ if ( scnt>=32 )
+ break;
+ }
+ }
+ }
+ if ( scnt==0 )
+ scripts[scnt++] = CHR('l','a','t','n');
+
+ /* order scripts */
+ for ( i=0; i<scnt-1; ++i ) for ( j=i+1; j<scnt; ++j ) {
+ if ( scripts[i]>scripts[j] ) {
+ script = scripts[i];
+ scripts[i] = scripts[j];
+ scripts[j] = script;
+ }
+ }
+
+ if ( sf->sf.cidmaster ) sf = (SplineFont1 *) sf->sf.cidmaster;
+ else if ( sf->sf.mm!=NULL ) sf=(SplineFont1 *) sf->sf.mm->normal;
+ if ( sf->script_lang!=NULL )
+return;
+ sf->script_lang = calloc(2,sizeof(struct script_record *));
+ sf->script_lang[0] = calloc(scnt+1,sizeof(struct script_record));
+ sf->sli_cnt = 1;
+ for ( j=0; j<scnt; ++j ) {
+ sf->script_lang[0][j].script = scripts[j];
+ sf->script_lang[0][j].langs = malloc(2*sizeof(uint32));
+ sf->script_lang[0][j].langs[0] = DEFAULT_LANG;
+ sf->script_lang[0][j].langs[1] = 0;
+ }
+ sf->script_lang[1] = NULL;
+}
+
+static int SLContains(struct script_record *sr, uint32 script, uint32 lang) {
+ int i, j;
+
+ if ( script==DEFAULT_SCRIPT || script == 0 )
+return( true );
+ for ( i=0; sr[i].script!=0; ++i ) {
+ if ( sr[i].script==script ) {
+ if ( lang==0 )
+return( true );
+ for ( j=0; sr[i].langs[j]!=0; ++j )
+ if ( sr[i].langs[j]==lang )
+return( true );
+
+return( false ); /* this script entry didn't contain the language. won't be any other scripts to check */
+ }
+ }
+return( false ); /* Never found script */
+}
+
+static int SFAddScriptLangIndex(SplineFont *_sf,uint32 script,uint32 lang) {
+ int i;
+ SplineFont1 *sf;
+
+ if ( _sf->cidmaster ) _sf = _sf->cidmaster;
+ else if ( _sf->mm!=NULL ) _sf=_sf->mm->normal;
+
+ if ( _sf->sfd_version>=2 )
+ IError( "SFFindBiggestScriptLangIndex called with bad version number.\n" );
+
+ sf = (SplineFont1 *) _sf;
+
+ if ( script==0 ) script=DEFAULT_SCRIPT;
+ if ( lang==0 ) lang=DEFAULT_LANG;
+ if ( sf->script_lang==NULL )
+ sf->script_lang = calloc(2,sizeof(struct script_record *));
+ for ( i=0; sf->script_lang[i]!=NULL; ++i ) {
+ if ( sf->script_lang[i][0].script==script && sf->script_lang[i][1].script==0 &&
+ sf->script_lang[i][0].langs[0]==lang &&
+ sf->script_lang[i][0].langs[1]==0 )
+return( i );
+ }
+ sf->script_lang = realloc(sf->script_lang,(i+2)*sizeof(struct script_record *));
+ sf->script_lang[i] = calloc(2,sizeof(struct script_record));
+ sf->script_lang[i][0].script = script;
+ sf->script_lang[i][0].langs = malloc(2*sizeof(uint32));
+ sf->script_lang[i][0].langs[0] = lang;
+ sf->script_lang[i][0].langs[1] = 0;
+ sf->script_lang[i+1] = NULL;
+ sf->sli_cnt = i+1;
+return( i );
+}
+
+static int SLCount(struct script_record *sr) {
+ int sl_cnt = 0;
+ int i,j;
+
+ for ( i=0; sr[i].script!=0; ++i ) {
+ for ( j=0; sr[i].langs[j]!=0; ++j )
+ ++sl_cnt;
+ }
+return( sl_cnt );
+}
+
+int SFFindBiggestScriptLangIndex(SplineFont *_sf,uint32 script,uint32 lang) {
+ int i, best_sli= -1, best_cnt= -1, cnt;
+ SplineFont1 *sf = (SplineFont1 *) _sf;
+
+ if ( _sf->sfd_version>=2 )
+ IError( "SFFindBiggestScriptLangIndex called with bad version number.\n" );
+
+ if ( sf->script_lang==NULL )
+ SFGuessScriptList(sf);
+ for ( i=0; sf->script_lang[i]!=NULL; ++i ) {
+ if ( SLContains(sf->script_lang[i],script,lang)) {
+ cnt = SLCount(sf->script_lang[i]);
+ if ( cnt>best_cnt ) {
+ best_sli = i;
+ best_cnt = cnt;
+ }
+ }
+ }
+ if ( best_sli==-1 )
+return( SFAddScriptLangIndex(_sf,script,lang) );
+
+return( best_sli );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sfd1.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sfd1.h
new file mode 100644
index 00000000000..a3ce6aa5ecc
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/sfd1.h
@@ -0,0 +1,122 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _SFD1_H
+#define _SFD1_H
+/* This file contains the data structures needed to read in an old sfd file */
+/* features and lookups and scripts are handled differently. That means that */
+/* the KernPair, KernClass, PST, FPST, AnchorClass, StateMachine data structures */
+/* are organized differently. Also we've got a script language list which */
+/* doesn't exist in the new format and we don't have OTLookup */
+
+#include "splinefont.h"
+
+#define SLI_UNKNOWN 0xffff
+#define SLI_NESTED 0xfffe
+
+typedef struct anchorclass1 {
+ AnchorClass ac;
+ uint32 feature_tag;
+ uint16 script_lang_index;
+ uint16 flags;
+ uint16 merge_with;
+ uint8 has_bases;
+ uint8 has_ligatures;
+} AnchorClass1;
+
+typedef struct kernpair1 {
+ KernPair kp;
+ uint16 sli, flags;
+} KernPair1;
+
+typedef struct kernclass1 {
+ KernClass kc;
+ uint16 sli;
+ uint16 flags;
+} KernClass1;
+
+typedef struct generic_pst1 {
+ PST pst;
+ uint8 macfeature; /* tag should be interpretted as <feature,setting> rather than 'abcd' */
+ uint16 flags;
+ uint16 script_lang_index; /* 0xffff means none */
+ uint32 tag;
+} PST1;
+
+typedef struct generic_fpst1 {
+ FPST fpst;
+ uint16 script_lang_index;
+ uint16 flags;
+ uint32 tag;
+} FPST1;
+
+typedef struct generic_asm1 { /* Apple State Machine */
+ ASM sm;
+ uint16 feature, setting;
+ uint32 opentype_tag; /* If converted from opentype */
+} ASM1;
+
+struct table_ordering {
+ uint32 table_tag;
+ uint32 *ordered_features;
+ struct table_ordering *next;
+};
+
+struct script_record {
+ uint32 script;
+ uint32 *langs;
+};
+
+struct tagtype {
+ enum possub_type type;
+ uint32 tag;
+};
+
+struct gentagtype {
+ uint16 tt_cur, tt_max;
+ struct tagtype *tagtype;
+};
+
+typedef struct splinefont1 {
+ SplineFont sf;
+
+ struct table_ordering *orders;
+
+ /* Any GPOS/GSUB entry (PST, AnchorClass, kerns, FPST */
+ /* Has an entry saying what scripts/languages it should appear it */
+ /* Things like fractions will appear in almost all possible script/lang */
+ /* combinations, while alphabetic ligatures will only live in one script */
+ /* Rather than store the complete list of possibilities in each PST we */
+ /* store all choices used here, and just store an index into this list */
+ /* in the PST. All lists are terminated by a 0 entry */
+ struct script_record **script_lang;
+ int16 sli_cnt;
+
+ struct gentagtype gentags;
+} SplineFont1;
+
+extern int SFFindBiggestScriptLangIndex(SplineFont *_sf,uint32 script,uint32 lang);
+#endif /* _SFD1_H */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinechar.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinechar.c
new file mode 100644
index 00000000000..41cbc0745db
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinechar.c
@@ -0,0 +1,328 @@
+/* -*- coding: utf-8 -*- */
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#include "fontforgevw.h"
+# include <utype.h>
+
+#ifdef HAVE_IEEEFP_H
+# include <ieeefp.h> /* Solaris defines isnan in ieeefp rather than math.h */
+#endif
+
+int adjustwidth = true;
+
+RefChar *HasUseMyMetrics(SplineChar *sc,int layer) {
+ RefChar *r;
+
+ if ( layer==ly_grid ) layer = ly_fore;
+
+ for ( r=sc->layers[layer].refs; r!=NULL; r=r->next )
+ if ( r->use_my_metrics )
+return( r );
+
+return( NULL );
+}
+
+/* if they changed the width, then change the width on all bitmap chars of */
+/* ours, and if we are a letter, then change the width on all chars linked */
+/* to us which had the same width that we used to have (so if we change the */
+/* width of A, we'll also change that of À and Ä and ... */
+void SCSynchronizeWidth(SplineChar *sc,real newwidth, real oldwidth) {
+ struct splinecharlist *dlist;
+ RefChar *r = HasUseMyMetrics(sc,ly_fore);
+ int isprobablybase;
+
+ sc->widthset = true;
+ if( r!=NULL ) {
+ if ( oldwidth==r->sc->width ) {
+ sc->width = r->sc->width;
+return;
+ }
+ newwidth = r->sc->width;
+ }
+ if ( newwidth==oldwidth )
+return;
+ sc->width = newwidth;
+ if ( !adjustwidth )
+return;
+
+ isprobablybase = true;
+ if ( sc->unicodeenc==-1 || sc->unicodeenc>=0x10000 ||
+ !isalpha(sc->unicodeenc) || iscombining(sc->unicodeenc))
+ isprobablybase = false;
+
+ for ( dlist=sc->dependents; dlist!=NULL; dlist=dlist->next ) {
+ RefChar *metrics = HasUseMyMetrics(dlist->sc,ly_fore);
+ if ( metrics!=NULL && metrics->sc!=sc )
+ continue;
+ else if ( metrics==NULL && !isprobablybase )
+ continue;
+ if ( dlist->sc->width==oldwidth &&
+ (metrics!=NULL)) {
+ SCSynchronizeWidth(dlist->sc,newwidth,oldwidth);
+ if ( !dlist->sc->changed ) {
+ dlist->sc->changed = true;
+ }
+ }
+ }
+}
+
+static int _SCRefNumberPoints2(SplineSet **_rss,SplineChar *sc,int pnum,int layer) {
+ SplineSet *ss, *rss = *_rss;
+ SplinePoint *sp, *rsp;
+ RefChar *r;
+ int starts_with_cp, startcnt;
+
+ for ( ss=sc->layers[layer].splines; ss!=NULL; ss=ss->next, rss=rss->next ) {
+ if ( rss==NULL ) /* Can't happen */
+ break;
+ starts_with_cp = !ss->first->noprevcp &&
+ ((ss->first->ttfindex == pnum+1 && ss->first->prev!=NULL &&
+ ss->first->prev->from->nextcpindex==pnum ) ||
+ ((ss->first->ttfindex==0xffff || SPInterpolate( ss->first ))));
+ startcnt = pnum;
+ if ( starts_with_cp ) ++pnum;
+ for ( sp = ss->first, rsp=rss->first; ; ) {
+ if ( sp->ttfindex==0xffff || SPInterpolate( sp ))
+ rsp->ttfindex = 0xffff;
+ else
+ rsp->ttfindex = pnum++;
+ if ( sp->next==NULL )
+ break;
+ if ( sp->next!=NULL && sp->next->to == ss->first ) {
+ if ( sp->nonextcp )
+ rsp->nextcpindex = 0xffff;
+ else if ( starts_with_cp )
+ rsp->nextcpindex = startcnt;
+ else
+ rsp->nextcpindex = pnum++;
+ break;
+ }
+ if ( sp->nonextcp )
+ rsp->nextcpindex = 0xffff;
+ else
+ rsp->nextcpindex = pnum++;
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ rsp = rsp->next->to;
+ }
+ }
+
+ *_rss = rss;
+ for ( r = sc->layers[layer].refs; r!=NULL; r=r->next )
+ pnum = _SCRefNumberPoints2(_rss,r->sc,pnum,layer);
+return( pnum );
+}
+
+static int SCRefNumberPoints2(RefChar *ref,int pnum,int layer) {
+ SplineSet *rss;
+
+ rss = ref->layers[0].splines;
+return( _SCRefNumberPoints2(&rss,ref->sc,pnum,layer));
+}
+
+int SSTtfNumberPoints(SplineSet *ss) {
+ int pnum=0;
+ SplinePoint *sp;
+ int starts_with_cp;
+
+ for ( ; ss!=NULL; ss=ss->next ) {
+ starts_with_cp = !ss->first->noprevcp &&
+ ((ss->first->ttfindex == pnum+1 && ss->first->prev!=NULL &&
+ ss->first->prev->from->nextcpindex==pnum ) ||
+ SPInterpolate( ss->first ));
+ if ( starts_with_cp && ss->first->prev!=NULL )
+ ss->first->prev->from->nextcpindex = pnum++;
+ for ( sp=ss->first; ; ) {
+ if ( SPInterpolate(sp) )
+ sp->ttfindex = 0xffff;
+ else
+ sp->ttfindex = pnum++;
+ if ( sp->nonextcp && sp->nextcpindex!=pnum )
+ sp->nextcpindex = 0xffff;
+ else if ( !starts_with_cp || (sp->next!=NULL && sp->next->to!=ss->first) )
+ sp->nextcpindex = pnum++;
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==ss->first )
+ break;
+ }
+ }
+return( pnum );
+}
+
+static int SSPsNumberPoints(SplineChar *sc, SplineSet *splines,int pnum) {
+ SplineSet *ss;
+ SplinePoint *sp;
+
+ for ( ss = splines; ss!=NULL; ss=ss->next ) {
+ for ( sp=ss->first; ; ) {
+ sp->ttfindex = pnum++;
+ sp->nextcpindex = 0xffff;
+ if ( sc->numberpointsbackards ) {
+ if ( sp->prev==NULL )
+ break;
+ if ( !sp->noprevcp || !sp->prev->from->nonextcp )
+ pnum += 2;
+ sp = sp->prev->from;
+ } else {
+ if ( sp->next==NULL )
+ break;
+ if ( !sp->nonextcp || !sp->next->to->noprevcp )
+ pnum += 2;
+ sp = sp->next->to;
+ }
+ if ( sp==ss->first )
+ break;
+ }
+ }
+return( pnum );
+}
+
+int SCNumberPoints(SplineChar *sc,int layer) {
+ int pnum=0;
+ SplineSet *ss;
+ SplinePoint *sp;
+ RefChar *ref;
+
+ if ( layer<0 || layer>=sc->layer_cnt )
+ return( pnum );
+
+ if ( sc->layers[layer].order2 ) { /* TrueType and its complexities. I ignore svg here */
+ if ( sc->layers[layer].refs!=NULL ) {
+ /* if there are references there can't be splines. So if we've got*/
+ /* splines mark all point numbers on them as meaningless */
+ for ( ss = sc->layers[layer].splines; ss!=NULL; ss=ss->next ) {
+ for ( sp=ss->first; ; ) {
+ sp->ttfindex = 0xfffe;
+ if ( !sp->nonextcp )
+ sp->nextcpindex = 0xfffe;
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==ss->first )
+ break;
+ }
+ }
+ for ( ref = sc->layers[layer].refs; ref!=NULL; ref=ref->next )
+ pnum = SCRefNumberPoints2(ref,pnum,layer);
+ } else {
+ pnum = SSTtfNumberPoints(sc->layers[layer].splines);
+ }
+ } else { /* cubic (PostScript/SVG) splines */
+ int first, last;
+ if ( sc->parent->multilayer ) {
+ first = ly_fore;
+ last = sc->layer_cnt-1;
+ } else
+ first = last = layer;
+ for ( layer=first; layer<=last; ++layer ) {
+ for ( ref = sc->layers[layer].refs; ref!=NULL; ref=ref->next )
+ pnum = SSPsNumberPoints(sc,ref->layers[0].splines,pnum);
+ pnum = SSPsNumberPoints(sc,sc->layers[layer].splines,pnum);
+ }
+ }
+return( pnum );
+}
+
+int SCPointsNumberedProperly(SplineChar *sc,int layer) {
+ int pnum=0, skipit;
+ SplineSet *ss;
+ SplinePoint *sp;
+ int starts_with_cp;
+ int start_pnum;
+
+ if ( sc->layers[layer].splines!=NULL &&
+ sc->layers[layer].refs!=NULL )
+return( false ); /* TrueType can't represent this, so always remove instructions. They can't be meaningful */
+
+ for ( ss = sc->layers[layer].splines; ss!=NULL; ss=ss->next ) {
+ starts_with_cp = (ss->first->ttfindex == pnum+1 || ss->first->ttfindex==0xffff) &&
+ !ss->first->noprevcp;
+ start_pnum = pnum;
+ if ( starts_with_cp ) ++pnum;
+ for ( sp=ss->first; ; ) {
+ skipit = SPInterpolate(sp);
+ if ( sp->nonextcp || sp->noprevcp ) skipit = false;
+ if ( sp->ttfindex==0xffff && skipit )
+ /* Doesn't count */;
+ else if ( sp->ttfindex!=pnum )
+return( false );
+ else
+ ++pnum;
+ if ( sp->nonextcp && sp->nextcpindex==0xffff )
+ /* Doesn't count */;
+ else if ( sp->nextcpindex==pnum )
+ ++pnum;
+ else if ( sp->nextcpindex==start_pnum && starts_with_cp &&
+ (sp->next!=NULL && sp->next->to==ss->first) )
+ /* Ok */;
+ else
+return( false );
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==ss->first )
+ break;
+ }
+ /* if ( starts_with_cp ) --pnum; */
+ }
+return( true );
+}
+
+void AltUniAdd(SplineChar *sc,int uni) {
+ struct altuni *altuni;
+
+ if ( sc!=NULL && uni!=-1 && uni!=sc->unicodeenc ) {
+ for ( altuni = sc->altuni; altuni!=NULL && (altuni->unienc!=uni ||
+ altuni->vs!=-1 ||
+ altuni->fid); altuni=altuni->next );
+ if ( altuni==NULL ) {
+ altuni = chunkalloc(sizeof(struct altuni));
+ altuni->next = sc->altuni;
+ sc->altuni = altuni;
+ altuni->unienc = uni;
+ altuni->vs = -1;
+ altuni->fid = 0;
+ }
+ }
+}
+
+void AltUniAdd_DontCheckDups(SplineChar *sc,int uni) {
+ struct altuni *altuni;
+
+ if ( sc!=NULL && uni!=-1 && uni!=sc->unicodeenc ) {
+ altuni = chunkalloc(sizeof(struct altuni));
+ altuni->next = sc->altuni;
+ sc->altuni = altuni;
+ altuni->unienc = uni;
+ altuni->vs = -1;
+ altuni->fid = 0;
+ }
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinefont.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinefont.c
new file mode 100644
index 00000000000..cffba73ccf8
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinefont.c
@@ -0,0 +1,504 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#include "fontforgevw.h"
+
+/* Use URW 4 letter abbreviations */
+const char *knownweights[] = { "Demi", "Bold", "Regu", "Medi", "Book", "Thin",
+ "Ligh", "Heav", "Blac", "Ultr", "Nord", "Norm", "Gras", "Stan", "Halb",
+ "Fett", "Mage", "Mitt", "Buch", NULL };
+const char *realweights[] = { "Demi", "Bold", "Regular", "Medium", "Book", "Thin",
+ "Light", "Heavy", "Black", "Ultra", "Nord", "Normal", "Gras", "Standard", "Halbfett",
+ "Fett", "Mager", "Mittel", "Buchschrift", NULL};
+
+static const char *modifierlist[] = { "Ital", "Obli", "Kursive", "Cursive", "Slanted",
+ "Expa", "Cond", NULL };
+static const char *modifierlistfull[] = { "Italic", "Oblique", "Kursive", "Cursive", "Slanted",
+ "Expanded", "Condensed", NULL };
+static const char **mods[] = { knownweights, modifierlist, NULL };
+static const char **fullmods[] = { realweights, modifierlistfull, NULL };
+
+const char *_GetModifiers(const char *fontname, const char *familyname, const char *weight) {
+ const char *pt, *fpt;
+ static char space[20];
+ int i, j;
+
+ /* URW fontnames don't match the familyname */
+ /* "NimbusSanL-Regu" vs "Nimbus Sans L" (note "San" vs "Sans") */
+ /* so look for a '-' if there is one and use that as the break point... */
+
+ if ( (fpt=strchr(fontname,'-'))!=NULL ) {
+ ++fpt;
+ if ( *fpt=='\0' )
+ fpt = NULL;
+ } else if ( familyname!=NULL ) {
+ for ( pt = fontname, fpt=familyname; *fpt!='\0' && *pt!='\0'; ) {
+ if ( *fpt == *pt ) {
+ ++fpt; ++pt;
+ } else if ( *fpt==' ' )
+ ++fpt;
+ else if ( *pt==' ' )
+ ++pt;
+ else if ( *fpt=='a' || *fpt=='e' || *fpt=='i' || *fpt=='o' || *fpt=='u' )
+ ++fpt; /* allow vowels to be omitted from family when in fontname */
+ else
+ break;
+ }
+ if ( *fpt=='\0' && *pt!='\0' )
+ fpt = pt;
+ else
+ fpt = NULL;
+ }
+
+ if ( fpt == NULL ) {
+ for ( i=0; mods[i]!=NULL; ++i ) for ( j=0; mods[i][j]!=NULL; ++j ) {
+ pt = strstr(fontname,mods[i][j]);
+ if ( pt!=NULL && (fpt==NULL || pt<fpt))
+ fpt = pt;
+ }
+ }
+ if ( fpt!=NULL ) {
+ for ( i=0; mods[i]!=NULL; ++i ) for ( j=0; mods[i][j]!=NULL; ++j ) {
+ if ( strcmp(fpt,mods[i][j])==0 ) {
+ strncpy(space,fullmods[i][j],sizeof(space)-1);
+return(space);
+ }
+ }
+ if ( strcmp(fpt,"BoldItal")==0 )
+return( "BoldItalic" );
+ else if ( strcmp(fpt,"BoldObli")==0 )
+return( "BoldOblique" );
+
+return( fpt );
+ }
+
+return( weight==NULL || *weight=='\0' ? "Regular": weight );
+}
+
+const char *SFGetModifiers(const SplineFont *sf) {
+return( _GetModifiers(sf->fontname,sf->familyname,sf->weight));
+}
+
+enum flatness { mt_flat, mt_round, mt_pointy, mt_unknown };
+
+static bigreal SPLMaxHeight(SplineSet *spl, enum flatness *isflat) {
+ enum flatness f = mt_unknown;
+ bigreal max = -1.0e23;
+ Spline *s, *first;
+ extended ts[2];
+ int i;
+
+ for ( ; spl!=NULL; spl=spl->next ) {
+ first = NULL;
+ for ( s = spl->first->next; s!=first && s!=NULL; s=s->to->next ) {
+ if ( first==NULL ) first = s;
+ if ( s->from->me.y >= max ||
+ s->to->me.y >= max ||
+ s->from->nextcp.y > max ||
+ s->to->prevcp.y > max ) {
+ if ( !s->knownlinear ) {
+ if ( s->from->me.y > max ) {
+ f = mt_round;
+ max = s->from->me.y;
+ }
+ if ( s->to->me.y > max ) {
+ f = mt_round;
+ max = s->to->me.y;
+ }
+ SplineFindExtrema(&s->splines[1],&ts[0],&ts[1]);
+ for ( i=0; i<2; ++i ) if ( ts[i]!=-1 ) {
+ bigreal y = ((s->splines[1].a*ts[i]+s->splines[1].b)*ts[i]+s->splines[1].c)*ts[i]+s->splines[1].d;
+ if ( y>max ) {
+ f = mt_round;
+ max = y;
+ }
+ }
+ } else if ( s->from->me.y == s->to->me.y ) {
+ if ( s->from->me.y >= max ) {
+ max = s->from->me.y;
+ f = mt_flat;
+ }
+ } else {
+ if ( s->from->me.y > max ) {
+ f = mt_pointy;
+ max = s->from->me.y;
+ }
+ if ( s->to->me.y > max ) {
+ f = mt_pointy;
+ max = s->to->me.y;
+ }
+ }
+ }
+ }
+ }
+ *isflat = f;
+return( max );
+}
+
+static bigreal SCMaxHeight(SplineChar *sc, int layer, enum flatness *isflat) {
+ /* Find the max height of this layer of the glyph. Also find whether that */
+ /* max is flat (as in "z", curved as in "o" or pointy as in "A") */
+ enum flatness f = mt_unknown, curf;
+ bigreal max = -1.0e23, test;
+ RefChar *r;
+
+ max = SPLMaxHeight(sc->layers[layer].splines,&curf);
+ f = curf;
+ for ( r = sc->layers[layer].refs; r!=NULL; r=r->next ) {
+ test = SPLMaxHeight(r->layers[0].splines,&curf);
+ if ( test>max || (test==max && curf==mt_flat)) {
+ max = test;
+ f = curf;
+ }
+ }
+ *isflat = f;
+return( max );
+}
+
+static bigreal SPLMinHeight(SplineSet *spl, enum flatness *isflat) {
+ enum flatness f = mt_unknown;
+ bigreal min = 1.0e23;
+ Spline *s, *first;
+ extended ts[2];
+ int i;
+
+ for ( ; spl!=NULL; spl=spl->next ) {
+ first = NULL;
+ for ( s = spl->first->next; s!=first && s!=NULL; s=s->to->next ) {
+ if ( first==NULL ) first = s;
+ if ( s->from->me.y <= min ||
+ s->to->me.y <= min ||
+ s->from->nextcp.y < min ||
+ s->to->prevcp.y < min ) {
+ if ( !s->knownlinear ) {
+ if ( s->from->me.y < min ) {
+ f = mt_round;
+ min = s->from->me.y;
+ }
+ if ( s->to->me.y < min ) {
+ f = mt_round;
+ min = s->to->me.y;
+ }
+ SplineFindExtrema(&s->splines[1],&ts[0],&ts[1]);
+ for ( i=0; i<2; ++i ) if ( ts[i]!=-1 ) {
+ bigreal y = ((s->splines[1].a*ts[i]+s->splines[1].b)*ts[i]+s->splines[1].c)*ts[i]+s->splines[1].d;
+ if ( y<min ) {
+ f = mt_round;
+ min = y;
+ }
+ }
+ } else if ( s->from->me.y == s->to->me.y ) {
+ if ( s->from->me.y <= min ) {
+ min = s->from->me.y;
+ f = mt_flat;
+ }
+ } else {
+ if ( s->from->me.y < min ) {
+ f = mt_pointy;
+ min = s->from->me.y;
+ }
+ if ( s->to->me.y < min ) {
+ f = mt_pointy;
+ min = s->to->me.y;
+ }
+ }
+ }
+ }
+ }
+ *isflat = f;
+return( min );
+}
+
+static bigreal SCMinHeight(SplineChar *sc, int layer, enum flatness *isflat) {
+ /* Find the min height of this layer of the glyph. Also find whether that */
+ /* min is flat (as in "z", curved as in "o" or pointy as in "A") */
+ enum flatness f = mt_unknown, curf;
+ bigreal min = 1.0e23, test;
+ RefChar *r;
+
+ min = SPLMinHeight(sc->layers[layer].splines,&curf);
+ f = curf;
+ for ( r = sc->layers[layer].refs; r!=NULL; r=r->next ) {
+ test = SPLMinHeight(r->layers[0].splines,&curf);
+ if ( test<min || (test==min && curf==mt_flat)) {
+ min = test;
+ f = curf;
+ }
+ }
+ *isflat = f;
+return( min );
+}
+
+#define RANGE 0x40ffffff
+
+struct dimcnt { bigreal pos; int cnt; };
+
+static int dclist_insert( struct dimcnt *arr, int cnt, bigreal val ) {
+ int i;
+
+ for ( i=0; i<cnt; ++i ) {
+ if ( arr[i].pos == val ) {
+ ++arr[i].cnt;
+return( cnt );
+ }
+ }
+ arr[i].pos = val;
+ arr[i].cnt = 1;
+return( i+1 );
+}
+
+static bigreal SFStandardHeight(SplineFont *sf, int layer, int do_max, unichar_t *list) {
+ struct dimcnt flats[200], curves[200];
+ bigreal test;
+ enum flatness curf;
+ int fcnt=0, ccnt=0, cnt, tot, i, useit;
+ unichar_t ch, top;
+ bigreal result, bestheight, bestdiff, diff, val;
+ char *blues, *end;
+
+ while ( *list ) {
+ ch = top = *list;
+ if ( list[1]==RANGE && list[2]!=0 ) {
+ list += 2;
+ top = *list;
+ }
+ for ( ; ch<=top; ++ch ) {
+ SplineChar *sc = SFGetChar(sf,ch,NULL);
+ if ( sc!=NULL ) {
+ if ( do_max )
+ test = SCMaxHeight(sc, layer, &curf );
+ else
+ test = SCMinHeight(sc, layer, &curf );
+ if ( curf==mt_flat )
+ fcnt = dclist_insert(flats, fcnt, test);
+ else if ( curf!=mt_unknown )
+ ccnt = dclist_insert(curves, ccnt, test);
+ }
+ }
+ ++list;
+ }
+
+ /* All flat surfaces at tops of glyphs are at the same level */
+ if ( fcnt==1 )
+ result = flats[0].pos;
+ else if ( fcnt>1 ) {
+ cnt = 0;
+ for ( i=0; i<fcnt; ++i ) {
+ if ( flats[i].cnt>cnt )
+ cnt = flats[i].cnt;
+ }
+ test = 0;
+ tot = 0;
+ /* find the mode. If multiple values have the same high count, average them */
+ for ( i=0; i<fcnt; ++i ) {
+ if ( flats[i].cnt==cnt ) {
+ test += flats[i].pos;
+ ++tot;
+ }
+ }
+ result = test/tot;
+ } else if ( ccnt==0 )
+return( do_max ? -1e23 : 1e23 ); /* We didn't find any glyphs */
+ else {
+ /* Italic fonts will often have no flat surfaces for x-height just wavies */
+ test = 0;
+ tot = 0;
+ /* find the mean */
+ for ( i=0; i<ccnt; ++i ) {
+ test += curves[i].pos;
+ ++tot;
+ }
+ result = test/tot;
+ }
+
+ /* Do we have a BlueValues entry? */
+ /* If so, snap height to the closest alignment zone (bottom of the zone) */
+ if ( sf->private!=NULL && (blues = PSDictHasEntry(sf->private,do_max ? "BlueValues" : "OtherBlues"))!=NULL ) {
+ while ( *blues==' ' || *blues=='[' ) ++blues;
+ /* Must get at least this close, else we'll just use what we found */
+ bestheight = result; bestdiff = (sf->ascent+sf->descent)/100.0;
+ useit = true;
+ while ( *blues!='\0' && *blues!=']' ) {
+ val = strtod(blues,&end);
+ if ( blues==end )
+ break;
+ blues = end;
+ while ( *blues==' ' ) ++blues;
+ if ( useit ) {
+ if ( (diff = val-result)<0 ) diff = -diff;
+ if ( diff<bestdiff ) {
+ bestheight = val;
+ bestdiff = diff;
+ }
+ }
+ useit = !useit; /* Only interested in every other BV entry */
+ }
+ result = bestheight;
+ }
+return( result );
+}
+
+static unichar_t capheight_str[] = { 'A', RANGE, 'Z',
+ 0x391, RANGE, 0x3a9,
+ 0x402, 0x404, 0x405, 0x406, 0x408, RANGE, 0x40b, 0x40f, RANGE, 0x418, 0x41a, 0x42f,
+ 0 };
+static unichar_t xheight_str[] = { 'a', 'c', 'e', 'g', 'm', 'n', 'o', 'p', 'q', 'r', 's', 'u', 'v', 'w', 'x', 'y', 'z', 0x131,
+ 0x3b3, 0x3b9, 0x3ba, 0x3bc, 0x3bd, 0x3c0, 0x3c3, 0x3c4, 0x3c5, 0x3c7, 0x3c8, 0x3c9,
+ 0x432, 0x433, 0x438, 0x43a, RANGE, 0x43f, 0x442, 0x443, 0x445, 0x44c,0x44f, 0x459, 0x45a,
+ 0 };
+
+bigreal SFCapHeight(SplineFont *sf, int layer, int return_error) {
+ bigreal result = SFStandardHeight(sf,layer,true,capheight_str);
+
+ if ( result==-1e23 && !return_error )
+ result = (8*sf->ascent)/10;
+return( result );
+}
+
+bigreal SFXHeight(SplineFont *sf, int layer, int return_error) {
+ bigreal result = SFStandardHeight(sf,layer,true,xheight_str);
+
+ if ( result==-1e23 && !return_error )
+ result = (6*sf->ascent)/10;
+return( result );
+}
+
+void SPLFirstVisitSplines( SplinePoint* splfirst, SPLFirstVisitSplinesVisitor f, void* udata )
+{
+ Spline *spline=0;
+ Spline *first=0;
+ Spline *next=0;
+
+ if ( splfirst!=NULL )
+ {
+ first = NULL;
+ for ( spline = splfirst->next; spline!=NULL && spline!=first; spline = next )
+ {
+ next = spline->to->next;
+
+ // callback
+ f( splfirst, spline, udata );
+
+ if ( first==NULL )
+ {
+ first = spline;
+ }
+ }
+ }
+}
+
+typedef struct SPLFirstVisitorFoundSoughtXYDataS
+{
+ int use_x;
+ int use_y;
+ real x;
+ real y;
+
+ // outputs
+ int found;
+ Spline* spline;
+ SplinePoint* sp;
+
+} SPLFirstVisitorFoundSoughtXYData;
+
+static void SPLFirstVisitorFoundSoughtXY(SplinePoint* splfirst, Spline* spline, void* udata )
+{
+ SPLFirstVisitorFoundSoughtXYData* d = (SPLFirstVisitorFoundSoughtXYData*)udata;
+ int found = 0;
+
+ if( d->found )
+ return;
+
+ // printf("SPLFirstVisitorFoundSoughtXY() %f %f %f\n", d->x, spline->from->me.x, spline->to->me.x );
+ if( d->use_x )
+ {
+ if( spline->from->me.x == d->x )
+ {
+ found = 1;
+ d->spline = spline;
+ d->sp = spline->from;
+ }
+
+ if( spline->to->me.x == d->x )
+ {
+ found = 1;
+ d->spline = spline;
+ d->sp = spline->to;
+ }
+ }
+ if( d->use_x && found && d->use_y )
+ {
+ if( d->sp->me.y != d->y )
+ {
+ found = 0;
+ }
+ }
+ else if( d->use_y )
+ {
+ if( spline->from->me.y == d->y )
+ {
+ found = 1;
+ d->spline = spline;
+ d->sp = spline->from;
+ }
+
+ if( spline->to->me.y == d->y )
+ {
+ found = 1;
+ d->spline = spline;
+ d->sp = spline->to;
+ }
+ }
+
+ if( found )
+ {
+ d->found = found;
+ d->spline = spline;
+ }
+ else
+ {
+ d->sp = 0;
+ }
+}
+
+SplinePoint* SplinePointListContainsPointAtX( SplinePointList* container, real x )
+{
+ SplinePointList *spl;
+ for ( spl = container; spl!=NULL; spl = spl->next )
+ {
+ SPLFirstVisitorFoundSoughtXYData d;
+ d.use_x = 1;
+ d.use_y = 0;
+ d.x = x;
+ d.y = 0;
+ d.found = 0;
+ SPLFirstVisitSplines( spl->first, SPLFirstVisitorFoundSoughtXY, &d );
+ if( d.found )
+ return d.sp;
+ }
+ return 0;
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinefont.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinefont.h
new file mode 100644
index 00000000000..77e0d4f5459
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinefont.h
@@ -0,0 +1,2604 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _SPLINEFONT_H
+#define _SPLINEFONT_H
+
+#include <basics.h>
+#include <dlist.h>
+#include "configure-fontforge.h"
+#ifdef HAVE_ICONV
+# include <iconv.h>
+#else
+# include <gwwiconv.h>
+#endif
+#include "locale.h"
+#include <gnetwork.h>
+
+#ifdef FONTFORGE_CONFIG_USE_DOUBLE
+# define real double
+# define bigreal double
+#else
+# define real float
+# define bigreal double
+#endif
+
+#define extended double
+ /* Solaris wants to define extended to be unsigned [3] unless we do this*/
+#define _EXTENDED
+
+#define CHR(ch1,ch2,ch3,ch4) (((ch1)<<24)|((ch2)<<16)|((ch3)<<8)|(ch4))
+
+#define MmMax 16 /* PS says at most this many instances for type1/2 mm fonts */
+#define AppleMmMax 26 /* Apple sort of has a limit of 4095, but we only support this many */
+
+typedef struct ipoint {
+ int x;
+ int y;
+} IPoint;
+
+#define IPOINT_EMPTY { 0, 0 }
+
+
+typedef struct basepoint {
+ real x;
+ real y;
+} BasePoint;
+
+#define BASEPOINT_EMPTY { (real)0.0, (real)0.0 }
+
+
+typedef struct dbasepoint {
+ bigreal x;
+ bigreal y;
+} DBasePoint;
+
+#define DBASEPOINT_EMPTY { (bigreal)0.0, (bigreal)0.0 }
+
+
+typedef struct tpoint {
+ real x;
+ real y;
+ real t;
+} TPoint;
+
+#define TPOINT_EMPTY { (real)0.0, (real)0.0, (real)0.0 }
+
+
+typedef struct dbounds {
+ real minx, maxx;
+ real miny, maxy;
+} DBounds;
+
+#define DBOUNDS_EMPTY { (real)0.0, (real)0.0, (real)0.0, (real)0.0 }
+
+
+typedef struct ibounds {
+ int minx, maxx;
+ int miny, maxy;
+} IBounds;
+
+#define IBOUNDS_EMPTY { 0, 0, 0, 0 }
+
+
+enum val_type { v_int, v_real, v_str, v_unicode, v_lval, v_arr, v_arrfree,
+ v_int32pt, v_int16pt, v_int8pt, v_void };
+
+typedef struct val {
+ enum val_type type;
+ union {
+ int ival;
+ real fval;
+ char *sval;
+ struct val *lval;
+ struct array *aval;
+ uint32 *u32ptval;
+ uint16 *u16ptval;
+ uint8 *u8ptval;
+ } u;
+} Val; /* Used by scripting */
+
+struct psdict {
+ int cnt; /* *key[0..cnt] and *values[0..cnt] currently available */
+ int next; /* **key[0..next] and **values[0..next] currently used */
+ char **keys;
+ char **values;
+};
+
+struct pschars {
+ int cnt, next;
+ char **keys;
+ uint8 **values;
+ int *lens;
+ int bias; /* for type2 strings */
+};
+
+enum linejoin {
+ lj_miter, /* Extend lines until they meet */
+ lj_round, /* circle centered at the join of expand radius */
+ lj_bevel, /* Straight line between the ends of next and prev */
+ lj_inherited
+};
+enum linecap {
+ lc_butt, /* equiv to lj_bevel, straight line extends from one side to other */
+ lc_round, /* semi-circle */
+ lc_square, /* Extend lines by radius, then join them */
+ lc_inherited
+};
+enum spreadMethod {
+ sm_pad, sm_reflect, sm_repeat
+};
+
+#define COLOR_INHERITED 0xfffffffe
+
+struct grad_stops {
+ real offset;
+ uint32 col;
+ real opacity;
+};
+
+struct gradient {
+ BasePoint start; /* focal of a radial gradient, start of a linear */
+ BasePoint stop; /* center of a radial gradient, end of a linear */
+ real radius; /* 0=>linear gradient, else radius of a radial gradient */
+ enum spreadMethod sm;
+ int stop_cnt;
+ struct grad_stops *grad_stops;
+};
+
+struct pattern {
+ char *pattern;
+ real width, height; /* Pattern is scaled to be repeated every width/height (in user coordinates) */
+ real transform[6];
+ /* Used during rasterization process */
+ struct bdfchar *pat;
+ real invtrans[6];
+ int bminx, bminy, bwidth, bheight; /* of the pattern at bdfchar scale */
+};
+
+struct brush {
+ uint32 col;
+ float opacity; /* number between [0,1], only for svg/pdf */
+ struct pattern *pattern; /* A pattern to be tiled */
+ struct gradient *gradient; /* A gradient fill */
+};
+#define WIDTH_INHERITED (-1)
+#define DASH_INHERITED 255 /* if the dashes[0]==0 && dashes[1]==DASH_INHERITED */
+#define DASH_MAX 8
+typedef unsigned char DashType;
+struct pen {
+ struct brush brush;
+ uint8 linejoin;
+ uint8 linecap;
+ float width;
+ real trans[4];
+ DashType dashes[DASH_MAX];
+};
+
+struct spline;
+enum si_type { si_std, si_caligraphic, si_poly, si_centerline };
+/* If you change this structure you may need to update MakeStrokeDlg */
+/* and cvpalettes.c both contain statically initialized StrokeInfos */
+typedef struct strokeinfo {
+ real radius; /* or major axis of pen */
+ enum linejoin join;
+ enum linecap cap;
+ enum si_type stroke_type;
+ unsigned int removeinternal: 1;
+ unsigned int removeexternal: 1;
+ unsigned int leave_users_center: 1; /* Don't move the pen so its center is at the origin */
+ real penangle;
+ real minorradius;
+ struct splinepointlist *poly;
+ real resolution;
+/* For freehand tool */
+ real radius2;
+ int pressure1, pressure2;
+/* End freehand tool */
+ void *data;
+ bigreal (*factor)(void *data,struct spline *spline,real t);
+} StrokeInfo;
+
+enum PolyType { Poly_Convex, Poly_Concave, Poly_PointOnEdge,
+ Poly_TooFewPoints, Poly_Line };
+
+
+enum overlap_type { over_remove, over_rmselected, over_intersect, over_intersel,
+ over_exclude, over_findinter, over_fisel };
+
+enum simpify_flags { sf_cleanup=-1, sf_normal=0, sf_ignoreslopes=1,
+ sf_ignoreextremum=2, sf_smoothcurves=4, sf_choosehv=8,
+ sf_forcelines=0x10, sf_nearlyhvlines=0x20,
+ sf_mergelines=0x40, sf_setstart2extremum=0x80,
+ sf_rmsingletonpoints=0x100 };
+
+struct hsquash { double lsb_percent, stem_percent, counter_percent, rsb_percent; };
+
+enum serif_type { srf_flat, srf_simpleslant, srf_complexslant };
+/* | | (flat) | | (simple) | | (complex) */
+/* | | | / | / */
+/* | | | / | / */
+/* +----+ |/ \ / */
+
+typedef struct italicinfo {
+ double italic_angle;
+ double xheight_percent;
+ struct hsquash lc, uc, neither;
+ enum serif_type secondary_serif;
+
+ unsigned int transform_bottom_serifs: 1;
+ unsigned int transform_top_xh_serifs: 1; /* Those at x-height */
+ unsigned int transform_top_as_serifs: 1; /* Those at ascender-height */
+ unsigned int transform_diagon_serifs: 1; /* Those at baseline/xheight */
+
+ unsigned int a_from_d: 1; /* replace the "a" glyph with the variant which looks like a "d" without an ascender */
+ /* When I say "f" I also mean "f_f" ligature, "longs", cyrillic phi and other things shaped like "f" */
+ unsigned int f_long_tail: 1; /* Some Italic fonts have the "f" grow an extension of the main stem below the baseline */
+ unsigned int f_rotate_top: 1; /* Most Italic fonts take the top curve of the "f", rotate it 180 and attach to the bottom */
+ unsigned int pq_deserif: 1; /* Remove a serif from the descender of p or q and replace with a secondary serif as above */
+
+ /* Unsupported */
+ /* e becomes rounder, cross bar slightly slanted */
+ /* g closed counter at bottom */
+ /* k closed counter at top */
+ /* v-z diagonal stems become more curvatious */
+
+ unsigned int cyrl_phi: 1; /* Gains an "f" like top, bottom treated like "f" */
+ unsigned int cyrl_i: 1; /* Turns into a latin u */
+ unsigned int cyrl_pi: 1; /* Turns into a latin n */
+ unsigned int cyrl_te: 1; /* Turns into a latin m */
+ unsigned int cyrl_sha: 1; /* Turns into a latin m rotated 180 */
+ unsigned int cyrl_dje: 1; /* Turns into a latin smallcaps T */
+ unsigned int cyrl_dzhe: 1; /* Turns into a latin u */
+ /* Is there a difference between dzhe and i? both look like u to me */
+
+ /* Unsupported */
+ /* u432 curved B */
+ /* u433 strange gamma */
+ /* u434 normal delta */
+ /* u436 */
+ /* u43b lambda ? */
+ /* u43c */
+ /* u446 */
+ /* u449 */
+ /* u449 */
+ /* u44a */
+
+/* This half of the structure gets filled in later - see ITALICINFO_REMAINDER */
+ double tan_ia;
+ double x_height;
+ double pq_depth;
+ double ascender_height;
+ double emsize;
+ int order2;
+ struct splinefont *sf;
+ int layer;
+ double serif_extent, serif_height;
+ struct splinepoint *f_start, *f_end; /* start has next pointing into the f head and up */
+ struct splinepoint *ff_start1, *ff_end1, *ff_start2, *ff_end2;
+ double f_height, ff_height;
+} ItalicInfo;
+
+#define ITALICINFO_REMAINDER 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0
+
+
+typedef struct bluedata {
+ real xheight, xheighttop; /* height of "x" and "o" (u,v,w,x,y,z) */
+ real caph, caphtop; /* height of "I" and "O" */
+ real base, basebelow; /* bottom of "I" and "O" */
+ real ascent; /* height of "l" */
+ real descent; /* depth of "p" */
+ real numh, numhtop; /* height of "7" and "8" */ /* numbers with ascenders */
+ int bluecnt; /* If the private dica contains bluevalues... */
+ real blues[12][2]; /* 7 pairs from bluevalues, 5 from otherblues */
+} BlueData;
+
+#define BLUEDATA_EMPTY { \
+ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, \
+ { { 0.0, 0.0 }, { 0.0, 0.0 }, { 0.0, 0.0 }, { 0.0, 0.0 }, { 0.0, 0.0 }, { 0.0, 0.0 }, \
+ { 0.0, 0.0 }, { 0.0, 0.0 }, { 0.0, 0.0 }, { 0.0, 0.0 }, { 0.0, 0.0 }, { 0.0, 0.0 } \
+ } \
+}
+
+
+typedef struct bdffloat {
+ int16 xmin,xmax,ymin,ymax;
+ int16 bytes_per_line;
+ unsigned int byte_data:1;
+ uint8 depth;
+ uint8 *bitmap;
+} BDFFloat;
+
+/* OpenType does not document 'dflt' as a language, but we'll use it anyway. */
+/* (Adobe uses it too) we'll turn it into a default entry when we output it. */
+#define DEFAULT_LANG CHR('d','f','l','t')
+/* The OpenType spec says in one place that the default script is 'dflt' and */
+/* in another that it is 'DFLT'. 'DFLT' is correct */
+#define DEFAULT_SCRIPT CHR('D','F','L','T')
+#define REQUIRED_FEATURE CHR(' ','R','Q','D')
+
+enum otlookup_type {
+ ot_undef = 0, /* Not a lookup type */
+ gsub_start = 0x000, /* Not a lookup type */
+ gsub_single = 0x001,
+ gsub_multiple = 0x002,
+ gsub_alternate = 0x003,
+ gsub_ligature = 0x004,
+ gsub_context = 0x005,
+ gsub_contextchain = 0x006,
+ /* GSUB extension 7 */
+ gsub_reversecchain = 0x008,
+ /* mac state machines */
+ morx_indic = 0x0fd,
+ morx_context = 0x0fe,
+ morx_insert = 0x0ff,
+ /* ********************* */
+ gpos_start = 0x100, /* Not a lookup type */
+
+ gpos_single = 0x101,
+ gpos_pair = 0x102,
+ gpos_cursive = 0x103,
+ gpos_mark2base = 0x104,
+ gpos_mark2ligature = 0x105,
+ gpos_mark2mark = 0x106,
+ gpos_context = 0x107,
+ gpos_contextchain = 0x108,
+ /* GPOS extension 9 */
+ kern_statemachine = 0x1ff
+
+ /* otlookup&0xff == lookup type for the appropriate table */
+ /* otlookup>>8: 0=>GSUB, 1=>GPOS */
+};
+
+enum otlookup_typemasks {
+ gsub_single_mask = 0x00001,
+ gsub_multiple_mask = 0x00002,
+ gsub_alternate_mask = 0x00004,
+ gsub_ligature_mask = 0x00008,
+ gsub_context_mask = 0x00010,
+ gsub_contextchain_mask = 0x00020,
+ gsub_reversecchain_mask = 0x00040,
+ morx_indic_mask = 0x00080,
+ morx_context_mask = 0x00100,
+ morx_insert_mask = 0x00200,
+ /* ********************* */
+ gpos_single_mask = 0x00400,
+ gpos_pair_mask = 0x00800,
+ gpos_cursive_mask = 0x01000,
+ gpos_mark2base_mask = 0x02000,
+ gpos_mark2ligature_mask = 0x04000,
+ gpos_mark2mark_mask = 0x08000,
+ gpos_context_mask = 0x10000,
+ gpos_contextchain_mask = 0x20000,
+ kern_statemachine_mask = 0x40000
+};
+
+#define MAX_LANG 4 /* If more than this we allocate more_langs in chunks of MAX_LANG */
+struct scriptlanglist {
+ uint32 script;
+ uint32 langs[MAX_LANG];
+ uint32 *morelangs;
+ int lang_cnt;
+ struct scriptlanglist *next;
+};
+
+#define OPENTYPE_FEATURE_FRIENDLYNAMES_EMPTY { 0, NULL, NULL, 0 }
+
+
+typedef struct featurescriptlanglist {
+ uint32 featuretag;
+ struct scriptlanglist *scripts;
+ struct featurescriptlanglist *next;
+ unsigned int ismac: 1; /* treat the featuretag as a mac feature/setting */
+} FeatureScriptLangList;
+
+enum pst_flags { pst_r2l=1, pst_ignorebaseglyphs=2, pst_ignoreligatures=4,
+ pst_ignorecombiningmarks=8, pst_usemarkfilteringset=0x10,
+ pst_markclass=0xff00, pst_markset=0xffff0000 };
+
+struct lookup_subtable {
+ char *subtable_name;
+ char *suffix; /* for gsub_single, used to find a default replacement */
+ int16 separation, minkern; /* for gpos_pair, used to guess default kerning values */
+ struct otlookup *lookup;
+ unsigned int unused: 1;
+ unsigned int per_glyph_pst_or_kern: 1;
+ unsigned int anchor_classes: 1;
+ unsigned int vertical_kerning: 1;
+ unsigned int ticked: 1;
+ unsigned int kerning_by_touch: 1; /* for gpos_pair, calculate kerning so that glyphs will touch */
+ unsigned int onlyCloser: 1; /* for kerning classes */
+ unsigned int dontautokern: 1; /* for kerning classes */
+ struct kernclass *kc;
+ struct generic_fpst *fpst;
+ struct generic_asm *sm;
+ /* Each time an item is added to a lookup we must place it into a */
+ /* subtable. If it's a kerning class, fpst or state machine it has */
+ /* a subtable all to itself. If it's an anchor class it can share */
+ /* a subtable with other anchor classes (merge with). If it's a glyph */
+ /* PST it may share a subtable with other PSTs */
+ /* Note items may only be placed in lookups in which they fit. Can't */
+ /* put kerning data in a gpos_single lookup, etc. */
+ struct lookup_subtable *next;
+ int32 subtable_offset;
+ int32 *extra_subtables;
+ /* If a kerning subtable has too much stuff in it, we are prepared to */
+ /* break it up into several smaller subtables, each of which has */
+ /* an offset in this list (extra-subtables[0]==subtable_offset) */
+ /* the list is terminated by an entry of -1 */
+};
+
+typedef struct otlookup {
+ struct otlookup *next;
+ enum otlookup_type lookup_type;
+ uint32 lookup_flags; /* Low order: traditional flags, High order: markset index, only meaningful if pst_usemarkfilteringset set */
+ char *lookup_name;
+ FeatureScriptLangList *features;
+ struct lookup_subtable *subtables;
+ unsigned int unused: 1; /* No subtable is used (call SFFindUnusedLookups before examining) */
+ unsigned int empty: 1; /* No subtable is used, and no anchor classes are used */
+ unsigned int store_in_afm: 1; /* Used for ligatures, some get stored */
+ /* 'liga' generally does, but 'frac' doesn't */
+ unsigned int needs_extension: 1; /* Used during opentype generation */
+ unsigned int temporary_kern: 1; /* Used when decomposing kerning classes into kern pairs for older formats */
+ unsigned int def_lang_checked: 1;
+ unsigned int def_lang_found: 1;
+ unsigned int ticked: 1;
+ unsigned int in_gpos: 1;
+ unsigned int in_jstf: 1;
+ unsigned int only_jstf: 1;
+ int16 subcnt; /* Actual number of subtables we will output */
+ /* Some of our subtables may contain no data */
+ /* Some may be too big and need to be broken up.*/
+ /* So this field may be different than just counting the subtables */
+ int lookup_index; /* used during opentype generation */
+ uint32 lookup_offset;
+ uint32 lookup_length;
+ char *tempname;
+} OTLookup;
+
+#define LOOKUP_SUBTABLE_EMPTY { NULL, NULL, 0, 0, NULL, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, 0, NULL }
+#define OTLOOKUP_EMPTY { NULL, 0, 0, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL }
+
+
+typedef struct devicetab {
+ uint16 first_pixel_size, last_pixel_size; /* A range of point sizes to which this table applies */
+ int8 *corrections; /* a set of pixel corrections, one for each point size */
+} DeviceTable;
+
+typedef struct valdev { /* Value records can have four associated device tables */
+ DeviceTable xadjust;
+ DeviceTable yadjust;
+ DeviceTable xadv;
+ DeviceTable yadv;
+} ValDevTab;
+
+enum anchorclass_type { act_mark, act_mkmk, act_curs, act_mklg, act_unknown };
+typedef struct anchorclass {
+ char *name; /* in utf8 */
+ struct lookup_subtable *subtable;
+ uint8 type; /* anchorclass_type */
+ uint8 has_base;
+ uint8 processed, has_mark, matches, ac_num;
+ uint8 ticked;
+ struct anchorclass *next;
+} AnchorClass;
+
+enum anchor_type { at_mark, at_basechar, at_baselig, at_basemark, at_centry, at_cexit, at_max };
+typedef struct anchorpoint {
+ AnchorClass *anchor;
+ BasePoint me;
+ DeviceTable xadjust, yadjust;
+ unsigned int type: 4;
+ unsigned int selected: 1;
+ unsigned int ticked: 1;
+ unsigned int has_ttf_pt: 1;
+ uint16 ttf_pt_index;
+ int16 lig_index;
+ struct anchorpoint *next;
+} AnchorPoint;
+
+typedef struct kernpair {
+ // Note that the left character in the pair has the reference to the kerning pair, which in turn references the right character.
+ struct lookup_subtable *subtable;
+ struct splinechar *sc;
+ int16 off;
+ uint16 kcid; /* temporary value */
+ DeviceTable *adjust; /* Only adjustment in one dimen, if more needed use pst */
+ struct kernpair *next;
+} KernPair;
+
+#define FF_KERNCLASS_FLAG_NATIVE 2 // If set, the class goes into groups.plist or kerning.plist.
+#define FF_KERNCLASS_FLAG_FEATURE 4 // If set, the class or rule goes into the feature file. In the present configuration, this ought to be zero always.
+#define FF_KERNCLASS_FLAG_NAMETYPE 8 // If unset (default), the class has a standard name, which translates to a U. F. O. name starting in public.kern, which may be illegal in the feature file. If set, it has a name like @MMK_.
+#define FF_KERNCLASS_FLAG_NAMELEGACY 16 // If set, the class has a U. F. O. name starting in @kc as FontForge liked to do in the past.
+#define FF_KERNCLASS_FLAG_VIRTUAL 32 // If unset (default), the class is a real character class and does not conflict with same-sided classes. If set, FontForge mostly ignores the class except for U. F. O. input/output.
+#define FF_KERNCLASS_FLAG_FLATTEN 64 // If unset (default), the class gets exported as a class. If set, it gets exported as its first member (in order to support class-character kerns).
+#define FF_KERNCLASS_FLAG_SINGLECHAR (FF_KERNCLASS_FLAG_VIRTUAL | FF_KERNCLASS_FLAG_FLATTEN) // We expect to see these used together.
+
+typedef struct kernclass {
+ int first_cnt, second_cnt; /* Count of classes for first and second chars */
+ char **firsts; /* list of a space separated list of char names */
+ char **seconds; /* one entry for each class. Entry 0 is null */
+ /* and means everything not specified elsewhere */
+ char **firsts_names; // We need to track the names of the classes in order to round-trip U. F. O. data.
+ char **seconds_names;
+ int *firsts_flags; // This tracks the storage format of the class in U. F. O. (groups.plist or features.fea) and whether it's a single-character class.
+ int *seconds_flags; // We also track the name format (@MMK or public.kern).
+ struct lookup_subtable *subtable;
+ uint16 kcid; /* Temporary value, used for many things briefly */
+ int16 *offsets; /* array of first_cnt*second_cnt entries with 0 representing no data */
+ int *offsets_flags;
+ DeviceTable *adjusts; /* array of first_cnt*second_cnt entries representing resolution-specific adjustments */
+ struct kernclass *next; // Note that, in most cases, a typeface needs only one struct kernclass since it can contain all classes.
+ int feature; // This indicates whether the kerning class came from a feature file. This is important during export.
+} KernClass;
+
+enum possub_type { pst_null, pst_position, pst_pair,
+ pst_substitution, pst_alternate,
+ pst_multiple, pst_ligature,
+ pst_lcaret /* must be pst_max-1, see charinfo.c*/,
+ pst_max,
+ /* These are not psts but are related so it's handly to have values for them */
+ pst_kerning = pst_max, pst_vkerning, pst_anchors,
+ /* And these are fpsts */
+ pst_contextpos, pst_contextsub, pst_chainpos, pst_chainsub,
+ pst_reversesub, fpst_max,
+ /* And these are used to specify a kerning pair where the current */
+ /* char is the final glyph rather than the initial one */
+ /* A kludge used when cutting and pasting features */
+ pst_kernback, pst_vkernback
+ };
+
+struct vr {
+ int16 xoff, yoff, h_adv_off, v_adv_off;
+ ValDevTab *adjust;
+};
+
+typedef struct generic_pst {
+ unsigned int ticked: 1;
+ unsigned int temporary: 1; /* Used in afm ligature closure */
+ /* enum possub_type*/ uint8 type;
+ struct lookup_subtable *subtable;
+ struct generic_pst *next;
+ union {
+ struct vr pos;
+ struct { char *paired; struct vr *vr; } pair;
+ struct { char *variant; } subs;
+ struct { char *components; } mult, alt;
+ struct { char *components; struct splinechar *lig; } lig;
+ struct { int16 *carets; int cnt; } lcaret; /* Ligature caret positions */
+ } u;
+} PST;
+
+typedef struct liglist {
+ PST *lig;
+ struct splinechar *first; /* First component */
+ struct splinecharlist *components; /* Other than the first */
+ struct liglist *next;
+ int ccnt; /* Component count. (includes first component) */
+} LigList;
+
+enum fpossub_format { pst_glyphs, pst_class, pst_coverage,
+ pst_reversecoverage, pst_formatmax };
+
+struct seqlookup {
+ int seq;
+ struct otlookup *lookup;
+};
+
+struct fpg { char *names, *back, *fore; };
+struct fpc { int ncnt, bcnt, fcnt; uint16 *nclasses, *bclasses, *fclasses, *allclasses; };
+struct fpv { int ncnt, bcnt, fcnt; char **ncovers, **bcovers, **fcovers; };
+struct fpr { int always1, bcnt, fcnt; char **ncovers, **bcovers, **fcovers; char *replacements; };
+
+struct fpst_rule {
+ union {
+ /* Note: Items in backtrack area are in reverse order because that's how the OT wants them */
+ /* they need to be reversed again to be displayed to the user */
+ struct fpg glyph;
+ struct fpc class;
+ struct fpv coverage;
+ struct fpr rcoverage;
+ } u;
+ int lookup_cnt;
+ struct seqlookup *lookups;
+};
+
+typedef struct generic_fpst {
+ uint16 /*enum possub_type*/ type;
+ uint16 /*enum fpossub_format*/ format;
+ struct lookup_subtable *subtable;
+ struct generic_fpst *next;
+ uint16 nccnt, bccnt, fccnt;
+ uint16 rule_cnt;
+ char **nclass, **bclass, **fclass;
+ struct fpst_rule *rules;
+ uint8 ticked;
+ uint8 effectively_by_glyphs;
+ char **nclassnames, **bclassnames, **fclassnames;
+} FPST;
+
+enum asm_type { asm_indic, asm_context, asm_lig, asm_simple=4, asm_insert,
+ asm_kern=0x11 };
+enum asm_flags { asm_vert=0x8000, asm_descending=0x4000, asm_always=0x2000 };
+
+struct asm_state {
+ uint16 next_state;
+ uint16 flags;
+ union {
+ struct {
+ struct otlookup *mark_lookup; /* for contextual glyph subs (tag of a nested lookup) */
+ struct otlookup *cur_lookup; /* for contextual glyph subs */
+ } context;
+ struct {
+ char *mark_ins;
+ char *cur_ins;
+ } insert;
+ struct {
+ int16 *kerns;
+ int kcnt;
+ } kern;
+ } u;
+};
+
+typedef struct generic_asm { /* Apple State Machine */
+ struct generic_asm *next;
+ uint16 /*enum asm_type*/ type;
+ struct lookup_subtable *subtable; /* Lookup contains feature setting info */
+ uint16 flags; /* 0x8000=>vert, 0x4000=>r2l, 0x2000=>hor&vert */
+ uint8 ticked;
+
+ uint16 class_cnt, state_cnt;
+ char **classes;
+ struct asm_state *state;
+} ASM;
+/* State Flags:
+ Indic:
+ 0x8000 mark current glyph as first in rearrangement
+ 0x4000 don't advance to next glyph
+ 0x2000 mark current glyph as last
+ 0x000f verb
+ 0 = no change 8 = AxCD => CDxA
+ 1 = Ax => xA 9 = AxCD => DCxA
+ 2 = xD => Dx a = ABxD => DxAB
+ 3 = AxD => DxA b = ABxD => DxBA
+ 4 = ABx => xAB c = ABxCD => CDxAB
+ 5 = ABx => xBA d = ABxCD => CDxBA
+ 6 = xCD => CDx e = ABxCD => DCxAB
+ 7 = xCD => DCx f = ABxCD => DCxBA
+ Contextual:
+ 0x8000 mark current glyph
+ 0x4000 don't advance to next glyph
+ Insert:
+ 0x8000 mark current glyph
+ 0x4000 don't advance to next glyph
+ 0x2000 current is Kashida like
+ 0x1000 mark is Kashida like
+ 0x0800 current insert before
+ 0x0400 mark insert before
+ 0x03e0 count of chars to be inserted at current (31 max)
+ 0x001f count of chars to be inserted at mark (31 max)
+ Kern:
+ 0x8000 add current glyph to kerning stack
+ 0x4000 don't advance to next glyph
+ 0x3fff value offset
+*/
+
+struct jstf_prio {
+ OTLookup **enableShrink; /* Points to an array of lookups (GSUB or GPOS)*/
+ OTLookup **disableShrink; /* NULL terminated */
+ OTLookup **maxShrink; /* Array of GPOS like lookups */
+ OTLookup **enableExtend;
+ OTLookup **disableExtend;
+ OTLookup **maxExtend;
+};
+
+struct jstf_lang {
+ uint32 lang;
+ struct jstf_lang *next;
+ int cnt;
+ struct jstf_prio *prios;
+};
+
+typedef struct jstf_script {
+ uint32 script;
+ struct jstf_script *next;
+ char *extenders; /* list of glyph names */
+ struct jstf_lang *langs;
+} Justify;
+
+struct macname {
+ struct macname *next;
+ uint16 enc; /* Platform specific encoding. 0=>mac roman, 1=>sjis, 7=>russian */
+ uint16 lang; /* Mac languages 0=>english, 1=>french, 2=>german */
+ char *name; /* Not a unicode string, uninterpreted mac encoded string */
+};
+
+/* Wow, the GPOS 'size' feature stores a string in the name table just as mac */
+/* features do */
+/* And now (OTF 1.6) GSUB 'ss01'-'ss20' do too */
+struct otfname {
+ struct otfname *next;
+ uint16 lang; /* windows language code */
+ char *name; /* utf8 */
+};
+
+struct otffeatname {
+ uint32 tag; /* Feature tag */
+ struct otfname *names;
+ struct otffeatname *next;
+ uint16 nid; /* temporary value */
+};
+
+struct macsetting {
+ struct macsetting *next;
+ uint16 setting;
+ uint16 strid;
+ struct macname *setname;
+ unsigned int initially_enabled: 1;
+};
+
+typedef struct macfeat {
+ struct macfeat *next;
+ uint16 feature;
+ uint8 ismutex;
+ uint8 default_setting; /* Apple's docs say both that this is a byte and a short. It's a byte */
+ uint16 strid; /* Temporary value, used when reading in */
+ struct macname *featname;
+ struct macsetting *settings;
+} MacFeat;
+
+typedef struct refbdfc {
+ unsigned int checked: 1;
+ unsigned int selected: 1;
+ int8 xoff;
+ int8 yoff;
+ uint16 gid;
+ struct refbdfc *next;
+ struct bdfchar *bdfc;
+} BDFRefChar;
+
+struct bdfcharlist {
+ struct bdfchar *bc;
+ struct bdfcharlist *next;
+};
+
+typedef struct bdfchar {
+ struct splinechar *sc;
+ int16 xmin,xmax,ymin,ymax;
+ int16 width;
+ int16 bytes_per_line;
+ uint8 *bitmap;
+ struct refbdfc *refs;
+ int orig_pos;
+ int16 pixelsize; /* for undoes */
+ struct bitmapview *views;
+ struct undoes *undoes;
+ struct undoes *redoes;
+ unsigned int changed: 1;
+ unsigned int byte_data: 1; /* for anti-aliased chars entries are grey-scale bytes not bw bits */
+ unsigned int widthgroup: 1; /* for ttf bitmap output */
+ unsigned int isreference: 1; /* for ttf bitmap input, */
+ unsigned int ticked: 1;
+ uint8 depth; /* for ttf bitmap output */
+ uint16 vwidth;
+ BDFFloat *selection;
+ BDFFloat *backup;
+ struct bdfcharlist *dependents;
+} BDFChar;
+
+enum undotype { ut_none=0, ut_state, ut_tstate, ut_statehint, ut_statename,
+ ut_statelookup,
+ ut_anchors,
+ ut_width, ut_vwidth, ut_lbearing, ut_rbearing, ut_possub,
+ ut_hints, ut_bitmap, ut_bitmapsel, ut_composit, ut_multiple, ut_layers,
+ ut_noop };
+
+#define UNDO_LAYER_UNKNOWN -1
+
+
+enum sfundotype
+{
+ sfut_none=0,
+ sfut_lookups,
+ sfut_lookups_kerns,
+ sfut_fontinfo,
+ sfut_noop
+};
+
+/**
+ * A spline font level undo stack. undoes are doubly linked using the
+ * 'ln' member and carry some user presentable description of what the
+ * undo relates to in 'msg'.
+ *
+ * The sfdchunk is a pointer to an SFD fragment which will apply the
+ * undo to the current state. For example, it might contain
+ * information about the old value of kerning pairs which can be used
+ * to restore state to how it was. Note that the sfdchunk might only
+ * be partial, containing only enough information to restore the state
+ * which changed when the undo was created.
+ */
+
+typedef struct enc {
+ char *enc_name;
+ int char_cnt; /* Size of the next two arrays */
+ int32 *unicode; /* unicode value for each encoding point */
+ char **psnames; /* optional postscript name for each encoding point */
+ struct enc *next;
+ unsigned int builtin: 1;
+ unsigned int hidden: 1;
+ unsigned int only_1byte: 1;
+ unsigned int has_1byte: 1;
+ unsigned int has_2byte: 1;
+ unsigned int is_unicodebmp: 1;
+ unsigned int is_unicodefull: 1;
+ unsigned int is_custom: 1;
+ unsigned int is_original: 1;
+ unsigned int is_compact: 1;
+ unsigned int is_japanese: 1;
+ unsigned int is_korean: 1;
+ unsigned int is_tradchinese: 1;
+ unsigned int is_simplechinese: 1;
+ char iso_2022_escape[8];
+ int iso_2022_escape_len;
+ int low_page, high_page;
+ char *iconv_name; /* For compatibility to old versions we might use a different name from that used by iconv. */
+ iconv_t *tounicode;
+ iconv_t *fromunicode;
+ int (*tounicode_func)(int);
+ int (*fromunicode_func)(int);
+ unsigned int is_temporary: 1; /* freed when the map gets freed */
+ int char_max; /* Used by temporary encodings */
+} Encoding;
+
+struct renames { char *from; char *to; };
+
+typedef struct namelist {
+ struct namelist *basedon;
+ char *title;
+ const char ***unicode[17];
+ struct namelist *next;
+ struct renames *renames;
+ int uses_unicode;
+ char *a_utf8_name;
+} NameList;
+
+enum uni_interp { ui_unset= -1, ui_none, ui_adobe, ui_greek, ui_japanese,
+ ui_trad_chinese, ui_simp_chinese, ui_korean, ui_ams };
+
+struct remap { uint32 firstenc, lastenc; int32 infont; };
+
+typedef struct encmap { /* A per-font map of encoding to glyph id */
+ int32 *map; /* Map from encoding to glyphid */
+ int32 *backmap; /* Map from glyphid to encoding */
+ int enccount; /* used size of the map array */
+ /* strictly speaking this might include */
+ /* glyphs that are not encoded, but which */
+ /* are displayed after the proper encoding */
+ int encmax; /* allocated size of the map array */
+ int backmax; /* allocated size of the backmap array */
+ struct remap *remap;
+ Encoding *enc;
+ unsigned int ticked: 1;
+} EncMap;
+
+enum property_type { prt_string, prt_atom, prt_int, prt_uint, prt_property=0x10 };
+
+typedef struct bdfprops {
+ char *name; /* These include both properties (like SLANT) and non-properties (like FONT) */
+ int type;
+ union {
+ char *str;
+ char *atom;
+ int val;
+ } u;
+} BDFProperties;
+
+typedef struct bdffont {
+ struct splinefont *sf;
+ int glyphcnt, glyphmax; /* used & allocated sizes of glyphs array */
+ BDFChar **glyphs; /* an array of charcnt entries */
+ int16 pixelsize;
+ int16 ascent, descent;
+ int16 layer; /* for piecemeal fonts */
+ unsigned int piecemeal: 1;
+ unsigned int bbsized: 1;
+ unsigned int ticked: 1;
+ unsigned int unhinted_freetype: 1;
+ unsigned int recontext_freetype: 1;
+ struct bdffont *next;
+ struct clut *clut;
+ char *foundry;
+ int res;
+ void *freetype_context;
+ uint16 truesize; /* for bbsized fonts */
+ int16 prop_cnt;
+ int16 prop_max; /* only used within bdfinfo dlg */
+ BDFProperties *props;
+ uint16 ptsize, dpi; /* for piecemeal fonts */
+} BDFFont;
+
+#define HntMax 96 /* PS says at most 96 hints */
+typedef uint8 HintMask[HntMax/8];
+
+enum pointtype { pt_curve, pt_corner, pt_tangent, pt_hvcurve };
+typedef struct splinepoint {
+ BasePoint me;
+ BasePoint nextcp; /* control point */
+ BasePoint prevcp; /* control point */
+ unsigned int nonextcp:1;
+ unsigned int noprevcp:1;
+ unsigned int nextcpdef:1;
+ unsigned int prevcpdef:1;
+ unsigned int selected:1; /* for UI */
+ unsigned int nextcpselected: 2; /* Is the next BCP selected */
+ unsigned int prevcpselected: 2; /* Is the prev BCP selected */
+ unsigned int pointtype:2;
+ unsigned int isintersection: 1;
+ unsigned int flexy: 1; /* When "freetype_markup" is on in charview.c:DrawPoint */
+ unsigned int flexx: 1; /* flexy means select nextcp, and flexx means draw circle around nextcp */
+ unsigned int roundx: 1; /* For true type hinting */
+ unsigned int roundy: 1; /* For true type hinting */
+ unsigned int dontinterpolate: 1; /* in ttf, don't imply point by interpolating between cps */
+ unsigned int ticked: 1;
+ unsigned int watched: 1;
+ /* 1 bits left... */
+ uint16 ptindex; /* Temporary value used by metafont routine */
+ uint16 ttfindex; /* Truetype point index */
+ /* Special values 0xffff => point implied by averaging control points */
+ /* 0xfffe => point created with no real number yet */
+ /* (or perhaps point in context where no number is possible as in a glyph with points & refs) */
+ uint16 nextcpindex; /* Truetype point index */
+ struct spline *next;
+ struct spline *prev;
+ HintMask *hintmask;
+ char* name;
+} SplinePoint;
+
+enum linelist_flags { cvli_onscreen=0x1, cvli_clipped=0x2 };
+
+typedef struct linelist {
+ IPoint here;
+ struct linelist *next;
+ /* The first two fields are constant for the linelist, the next ones */
+ /* refer to a particular screen. If some portion of the line from */
+ /* this point to the next one is on the screen then set cvli_onscreen */
+ /* if this point needs to be clipped then set cvli_clipped */
+ /* asend and asstart are the actual screen locations where this point */
+ /* intersects the clip edge. */
+ enum linelist_flags flags;
+ IPoint asend, asstart;
+} LineList;
+
+typedef struct linearapprox {
+ real scale;
+ unsigned int oneline: 1;
+ unsigned int onepoint: 1;
+ unsigned int any: 1; /* refers to a particular screen */
+ struct linelist *lines;
+ struct linearapprox *next;
+} LinearApprox;
+
+typedef struct spline1d {
+ real a, b, c, d;
+} Spline1D;
+
+/**
+ *
+ * 2013Note: If you are altering from->me.x and y then you will
+ * probably have to modify splines[] to match your change.
+ * eg, moving both ends of a spline up/down by changing their
+ * to/from will also probably need an update to splines[ 0 | 1 ].d to
+ * match.
+ */
+typedef struct spline {
+ unsigned int islinear: 1; /* No control points */
+ unsigned int isquadratic: 1; /* probably read in from ttf */
+ unsigned int isticked: 1;
+ unsigned int isneeded: 1; /* Used in remove overlap */
+ unsigned int isunneeded: 1; /* Used in remove overlap */
+ unsigned int exclude: 1; /* Used in remove overlap varient: exclude */
+ unsigned int ishorvert: 1;
+ unsigned int knowncurved: 1; /* We know that it curves */
+ unsigned int knownlinear: 1; /* it might have control points, but still traces out a line */
+ /* If neither knownlinear nor curved then we haven't checked */
+ unsigned int order2: 1; /* It's a bezier curve with only one cp */
+ unsigned int touched: 1;
+ unsigned int leftedge: 1;
+ unsigned int rightedge: 1;
+ unsigned int acceptableextrema: 1; /* This spline has extrema, but we don't care */
+ SplinePoint *from;
+ SplinePoint *to;
+ Spline1D splines[2]; /* splines[0] is the x spline, splines[1] is y */
+ struct linearapprox *approx;
+ /* Posible optimizations:
+ Precalculate bounding box
+ Precalculate min/max/ points of inflection
+ */
+} Spline;
+
+#ifndef _NO_LIBSPIRO
+# include "spiroentrypoints.h"
+#else
+# define SPIRO_OPEN_CONTOUR '{'
+# define SPIRO_CORNER 'v'
+# define SPIRO_G4 'o'
+# define SPIRO_G2 'c'
+# define SPIRO_LEFT '['
+# define SPIRO_RIGHT ']'
+# define SPIRO_END 'z'
+typedef struct { /* Taken from spiro.h because I want */
+ double x; /* to be able to compile for spiro */
+ double y; /* even on a system without it */
+ char ty;
+} spiro_cp;
+#endif
+#define SPIRO_SELECTED(cp) ((cp)->ty&0x80)
+#define SPIRO_DESELECT(cp) ((cp)->ty&=~0x80)
+#define SPIRO_SELECT(cp) ((cp)->ty|=0x80)
+#define SPIRO_SPL_OPEN(spl) ((spl)->spiro_cnt>1 && ((spl)->spiros[0].ty&0x7f)==SPIRO_OPEN_CONTOUR)
+
+#define SPIRO_NEXT_CONSTRAINT SPIRO_RIGHT /* The curve is on the next side of the constraint point */
+#define SPIRO_PREV_CONSTRAINT SPIRO_LEFT /* The curve is on the prev side of the constraint point */
+
+typedef struct splinepointlist {
+ SplinePoint *first, *last;
+ struct splinepointlist *next;
+ spiro_cp *spiros;
+ uint16 spiro_cnt, spiro_max;
+ /* These could be bit fields, but bytes are easier to access and we */
+ /* don't need the space (yet) */
+ uint8 ticked;
+ uint8 beziers_need_optimizer; /* If the spiros have changed in spiro mode, then reverting to bezier mode might, someday, run a simplifier */
+ uint8 is_clip_path; /* In type3/svg fonts */
+ int start_offset; // This indicates which point is the canonical first for purposes of outputting to U. F. O..
+ char *contour_name;
+} SplinePointList, SplineSet;
+
+
+struct reflayer {
+ unsigned int background: 1;
+ unsigned int order2: 1;
+ unsigned int anyflexes: 1;
+ unsigned int dofill: 1;
+ unsigned int dostroke: 1;
+ unsigned int fillfirst: 1;
+ struct brush fill_brush;
+ struct pen stroke_pen;
+ SplinePointList *splines;
+};
+
+typedef struct refchar {
+ unsigned int checked: 1;
+ unsigned int selected: 1;
+ unsigned int point_match: 1; /* match_pt* are point indexes */
+ /* and need to be converted to a */
+ /* translation after truetype readin */
+ unsigned int encoded: 1; /* orig_pos is actually an encoded value, used for old sfd files */
+ unsigned int justtranslated: 1; /* The transformation matrix specifies a translation (or is identity) */
+ unsigned int use_my_metrics: 1; /* Retain the ttf "use_my_metrics" info. */
+ /* important for glyphs with instructions which change the width used */
+ /* inside composites */
+ unsigned int round_translation_to_grid: 1; /* Retain the ttf "round_to_grid" info. */
+ unsigned int point_match_out_of_date: 1; /* Someone has edited a base glyph */
+ int16 adobe_enc;
+ int orig_pos;
+ int unicode_enc; /* used by paste */
+ real transform[6]; /* transformation matrix (first 2 rows of a 3x3 matrix, missing row is 0,0,1) */
+ struct reflayer *layers;
+ int layer_cnt;
+ struct refchar *next;
+ DBounds bb;
+ struct splinechar *sc;
+ BasePoint top;
+ uint16 match_pt_base, match_pt_ref;
+} RefChar;
+
+/* Some stems may appear, disappear, reapear several times */
+/* Serif stems on I which appear at 0, disappear, reappear at top */
+/* Or the major vertical stems on H which disappear at the cross bar */
+typedef struct hintinstance {
+ real begin; /* location in the non-major direction*/
+ real end; /* width/height in non-major direction*/
+ unsigned int closed: 1;
+ short int counternumber;
+ struct hintinstance *next;
+} HintInstance;
+
+enum hinttypes { ht_unspecified=0, ht_h, ht_v, ht_d };
+typedef real _MMArray[2][MmMax];
+
+typedef struct steminfo {
+ struct steminfo *next;
+ unsigned int hinttype: 2; /* Only used by undoes */
+ unsigned int ghost: 1; /* this is a ghost stem hint. As such truetype should ignore it, type2 output should negate it, and type1 should use as is */
+ /* stored width will be either 20 or 21 */
+ /* Type2 says: -20 is "width" of top edge, -21 is "width" of bottom edge, type1 accepts either */
+ unsigned int haspointleft:1;
+ unsigned int haspointright:1;
+ unsigned int hasconflicts:1;/* Does this stem have conflicts within its cluster? */
+ unsigned int used: 1; /* Temporary for counter hints or hint substitution */
+ unsigned int tobeused: 1; /* Temporary for counter hints or hint substitution */
+ unsigned int active: 1; /* Currently active hint in Review Hints dlg */
+ /* displayed differently in char display */
+ unsigned int enddone: 1; /* Used by ttf instructing, indicates a prev */
+ /* hint had the same end as this one (so */
+ /* the points on the end line have been */
+ /* instructed already */
+ unsigned int startdone: 1; /* Used by ttf instructing */
+ /*unsigned int backwards: 1;*/ /* If we think this hint is better done with a negative width */
+ unsigned int reordered: 1; /* In AutoHinting. Means we changed the start of the hint, need to test for out of order */
+ unsigned int pendingpt: 1; /* A pending stem creation, not a true stem */
+ unsigned int linearedges: 1;/* If we have a nice rectangle then we aren't */
+ /* interested in the orientation which is */
+ /* wider than long */
+ int16 hintnumber; /* when dumping out hintmasks we need to know */
+ /* what bit to set for this hint */
+ union {
+ int mask; /* Mask of all references that use this hint */
+ /* in type2 output */
+ _MMArray *unblended /*[2][MmMax]*/; /* Used when reading in type1 mm hints */
+ } u;
+ real start; /* location at which the stem starts */
+ real width; /* or height */
+ HintInstance *where; /* location(s) in the other coord */
+} StemInfo;
+
+typedef struct dsteminfo {
+ struct dsteminfo *next; /* First two fields match those in steminfo */
+ unsigned int hinttype: 2; /* Only used by undoes */
+ unsigned int used: 1; /* used only by tottf.c:gendinstrs, metafont.c to mark a hint that has been dealt with */
+ BasePoint left, right, unit;
+ HintInstance *where; /* location(s) along the unit vector */
+} DStemInfo;
+
+typedef struct minimumdistance {
+ /* If either point is NULL it will be assumed to mean either the origin */
+ /* or the width point (depending on which is closer). This allows user */
+ /* to control metrics... */
+ SplinePoint *sp1, *sp2;
+ unsigned int x: 1;
+ unsigned int done: 1;
+ struct minimumdistance *next;
+} MinimumDistance;
+
+typedef struct layer /* : reflayer */{
+ unsigned int background: 1;
+ unsigned int order2: 1;
+ unsigned int anyflexes: 1;
+ unsigned int dofill: 1;
+ unsigned int dostroke: 1;
+ unsigned int fillfirst: 1;
+ struct brush fill_brush;
+ struct pen stroke_pen;
+ SplinePointList *splines;
+ RefChar *refs; /* Only in foreground layer(s) */
+ uint32 validation_state;
+ uint32 old_vs;
+ void *python_persistent; /* If python this will hold a python object, if not python this will hold a string containing a pickled object. We do nothing with it (if not python) except save it back out unchanged */
+ int python_persistent_has_lists;
+} Layer;
+
+enum layer_type { ly_all=-2, ly_grid= -1, ly_back=0, ly_fore=1,
+ /* Possibly other foreground layers for type3 things */
+ /* Possibly other background layers for normal fonts */
+ ly_none = -3
+ };
+
+struct gv_part {
+ char *component;
+ unsigned int is_extender: 1; /* This component may be skipped or repeated */
+ uint16 startConnectorLength;
+ uint16 endConnectorLength;
+ uint16 fullAdvance;
+};
+
+/* For the 'MATH' table (and for TeX) */
+struct glyphvariants {
+ char *variants; /* Space separated list of glyph names */
+/* Glyph assembly */
+ int16 italic_correction; /* Of the composed glyph */
+ DeviceTable *italic_adjusts;
+ int part_cnt;
+ struct gv_part *parts;
+};
+
+struct mathkerndata {
+ int16 height,kern;
+ DeviceTable *height_adjusts;
+ DeviceTable *kern_adjusts;
+};
+
+/* For the 'MATH' table */
+struct mathkernvertex {
+ int cnt; /* There is one more kern entry than height entry */
+ /* So the last mkd should have its height ignored */
+ /* The MATH table stores the height count, I think the kern count */
+ /* is more useful (and that's what I use here). They differ by 1 */
+ struct mathkerndata *mkd;
+};
+
+struct mathkern {
+ struct mathkernvertex top_right;
+ struct mathkernvertex top_left;
+ struct mathkernvertex bottom_right;
+ struct mathkernvertex bottom_left;
+};
+
+enum privatedict_state {
+ pds_odd = 0x1, /* Odd number of entries */
+ pds_outoforder = 0x2, /* Bluevalues should be listed in order */
+ pds_toomany = 0x4, /* arrays are of limited sizes */
+ pds_tooclose = 0x8, /* adjacent zones must not be within 2*bluefuzz+1 (or 3, if bluefuzz omitted) */
+ pds_notintegral= 0x10, /* Must be integers */
+ pds_toobig = 0x20, /* within pair difference have some relation to BlueScale but the docs make no sense to me */
+ pds_shift = 8, /* BlueValues/OtherBlues, unshifted, FamilyBlues/FamilyOtherBlues shifted once */
+
+ pds_missingblue = 0x010000,
+ pds_badbluefuzz = 0x020000,
+ pds_badbluescale = 0x040000,
+ pds_badstdhw = 0x080000,
+ pds_badstdvw = 0x100000,
+ pds_badstemsnaph = 0x200000,
+ pds_badstemsnapv = 0x400000,
+ pds_stemsnapnostdh = 0x0800000,
+ pds_stemsnapnostdv = 0x1000000,
+ pds_badblueshift = 0x2000000
+
+};
+
+enum validation_state { vs_unknown = 0,
+ vs_known=0x01, /* It has been validated */
+ vs_opencontour=0x02,
+ vs_selfintersects=0x04,
+ vs_wrongdirection=0x08,
+ vs_flippedreferences=0x10, /* special case of wrong direction */
+ vs_missingextrema=0x20,
+ vs_missingglyphnameingsub=0x40,
+ /* Next few are postscript only */
+ vs_toomanypoints=0x80,
+ vs_toomanyhints=0x100,
+ vs_badglyphname=0x200,
+ /* Next few are only for fontlint */
+ /* These are relative to maxp values which ff would fix on generating a font */
+ vs_maxp_toomanypoints =0x400,
+ vs_maxp_toomanypaths =0x800,
+ vs_maxp_toomanycomppoints=0x1000,
+ vs_maxp_toomanycomppaths =0x2000,
+ vs_maxp_instrtoolong =0x4000,
+ vs_maxp_toomanyrefs =0x8000,
+ vs_maxp_refstoodeep =0x10000,
+ /* vs_maxp_prepfpgmtoolong=0x20000, */ /* I think I was wrong about this "error" */
+ /* Oops, we need another one, two, for the glyphs */
+ vs_pointstoofarapart = 0x40000,
+ vs_nonintegral = 0x80000, /* This will never be interesting in a real font, but might be in an sfd file */
+ vs_missinganchor = 0x100000,
+ vs_dupname = 0x200000,
+ vs_dupunicode = 0x400000,
+ vs_overlappedhints = 0x800000,
+
+ vs_last = vs_overlappedhints,
+ vs_maskps = 0x3fe | vs_pointstoofarapart | vs_missinganchor | vs_dupname | vs_dupunicode | vs_overlappedhints,
+ vs_maskcid = 0x1fe | vs_pointstoofarapart | vs_missinganchor | vs_dupname | vs_overlappedhints,
+ vs_maskttf = 0x7e | vs_pointstoofarapart | vs_nonintegral | vs_missinganchor | vs_dupunicode,
+ vs_maskfindproblems = 0x1be | vs_pointstoofarapart | vs_nonintegral | vs_missinganchor | vs_overlappedhints
+ };
+
+struct splinecharlist { struct splinechar *sc; struct splinecharlist *next;};
+
+struct altuni { struct altuni *next; int32 unienc, vs; uint32 fid; };
+ /* vs is the "variation selector" a unicode codepoint which modifieds */
+ /* the code point before it. If vs is -1 then unienc is just an */
+ /* alternate encoding (greek Alpha and latin A), but if vs is one */
+ /* of unicode's variation selectors then this glyph is somehow a */
+ /* variant shape. The specifics depend on the selector and script */
+ /* fid is currently unused, but may, someday, be used to do ttcs */
+ /* NOTE: GlyphInfo displays vs==-1 as vs==0, and fixes things up */
+
+typedef struct splinechar {
+ char *name;
+ int unicodeenc;
+ int orig_pos; /* Original position in the glyph list */
+ int16 width, vwidth;
+ int16 lsidebearing; /* only used when reading in a type1 font */
+ /* Or an otf font where it is the subr number of a refered character */
+ /* or a ttf font without bit 1 of head.flags set */
+ /* or (once upon a time, but no longer) a ttf font with vert metrics where it is the ymax value when we had a font-wide vertical offset */
+ /* or when generating morx where it is the mask of tables in which the glyph occurs */
+ /* Always a temporary value */
+ int ttf_glyph; /* only used when writing out a ttf or otf font */
+ Layer *layers; /* layer[0] is background, layer[1] foreground */
+ /* In type3 fonts 2-n are also foreground, otherwise also background */
+ int layer_cnt;
+ StemInfo *hstem; /* hstem hints have a vertical offset but run horizontally */
+ StemInfo *vstem; /* vstem hints have a horizontal offset but run vertically */
+ DStemInfo *dstem; /* diagonal hints for ttf */
+ MinimumDistance *md;
+
+ struct charinfo *charinfo;
+ struct splinefont *parent;
+ unsigned int changed: 1;
+ unsigned int changedsincelasthinted: 1;
+ unsigned int manualhints: 1;
+ unsigned int ticked: 1; /* For reference character processing */
+ /* And fontview processing */
+ unsigned int changed_since_autosave: 1;
+ unsigned int widthset: 1; /* needed so an emspace char doesn't disappear */
+ unsigned int vconflicts: 1; /* Any hint overlaps in the vstem list? */
+ unsigned int hconflicts: 1; /* Any hint overlaps in the hstem list? */
+ unsigned int searcherdummy: 1;
+ unsigned int changed_since_search: 1;
+ unsigned int wasopen: 1;
+ unsigned int namechanged: 1;
+ unsigned int blended: 1; /* An MM blended character */
+ unsigned int ticked2: 1;
+ unsigned int glyph_class: 3; /* 0=> fontforge determines class automagically, else one more than the class value in gdef so 2+1=>lig, 3+1=>mark */
+ unsigned int numberpointsbackards: 1;
+ unsigned int instructions_out_of_date: 1;
+ unsigned int complained_about_ptnums: 1;
+ unsigned int vs_open: 1;
+ unsigned int unlink_rm_ovrlp_save_undo: 1;
+ unsigned int inspiro: 1;
+ unsigned int lig_caret_cnt_fixed: 1;
+ unsigned int suspendMetricsViewEventPropagation: 1; /* rect tool might do this while drawing */
+ /* 5 bits left (one more if we ignore compositionunit below) */
+#if HANYANG
+ unsigned int compositionunit: 1;
+ int16 jamo, varient;
+#endif
+ struct splinecharlist *dependents;
+ /* The dependents list is a list of all characters which refenence*/
+ /* the current character directly */
+ KernPair *kerns; // Note that the left character in the pair has the reference to the kerning pair, which in turn references the right character.
+ KernPair *vkerns;
+ PST *possub; /* If we are a ligature then this tells us what */
+ /* It may also contain a bunch of other stuff now */
+ LigList *ligofme; /* If this is the first character of a ligature then this gives us the list of possible ones */
+ /* this field must be regenerated before the font is saved */
+ char *comment; /* in utf8 */
+ uint32 /*Color*/ color;
+ AnchorPoint *anchor;
+ uint8 *ttf_instrs;
+ int16 ttf_instrs_len;
+ int16 countermask_cnt;
+ HintMask *countermasks;
+ struct altuni *altuni;
+/* for TeX */
+ int16 tex_height, tex_depth;
+/* TeX also uses italic_correction and glyph variants below */
+/* For the 'MATH' table (and for TeX) */
+ unsigned int is_extended_shape: 1;
+ int16 italic_correction;
+ int16 top_accent_horiz; /* MATH table allows you to specific a*/
+ /* horizontal anchor for accent attachments, vertical */
+ /* positioning is done elsewhere */
+ DeviceTable *italic_adjusts;
+ DeviceTable *top_accent_adjusts;
+ struct glyphvariants *vert_variants;
+ struct glyphvariants *horiz_variants;
+ struct mathkern *mathkern;
+/* End of MATH/TeX fields */
+#ifndef _NO_PYTHON
+ void *python_sc_object;
+ void *python_temporary;
+#endif
+#if 0
+ // Python persistent data is now in the layers.
+ void *python_persistent; /* If python this will hold a python object, if not python this will hold a string containing a pickled object. We do nothing with it (if not python) except save it back out unchanged */
+ int python_persistent_has_lists;
+#endif // 0
+ /* If the glyph is used as a tile pattern, then the next two values */
+ /* determine the amount of white space around the tile. If extra is*/
+ /* non-zero then we add it to the max components of the bbox and */
+ /* subtract it from the min components. If extra is 0 then tile_bounds*/
+ /* will be used. If tile_bounds is all zeros then the glyph's bbox */
+ /* will be used. */
+ real tile_margin; /* If the glyph is used as a tile */
+ DBounds tile_bounds;
+ char * glif_name; // This stores the base name of the glyph when saved to U. F. O..
+} SplineChar;
+
+#define TEX_UNDEF 0x7fff
+
+enum ttfnames { ttf_copyright=0, ttf_family, ttf_subfamily, ttf_uniqueid,
+ ttf_fullname, ttf_version, ttf_postscriptname, ttf_trademark,
+ ttf_manufacturer, ttf_designer, ttf_descriptor, ttf_venderurl,
+ ttf_designerurl, ttf_license, ttf_licenseurl, ttf_idontknow/*reserved*/,
+ ttf_preffamilyname, ttf_prefmodifiers, ttf_compatfull, ttf_sampletext,
+ ttf_cidfindfontname, ttf_wwsfamily, ttf_wwssubfamily, ttf_namemax };
+struct ttflangname {
+ int lang;
+ char *names[ttf_namemax]; /* in utf8 */
+ int frommac[(ttf_namemax+31)/32]; /* Used when parsing the 'name' table */
+ struct ttflangname *next;
+};
+
+struct MATH {
+/* From the MATH Constants subtable (constants for positioning glyphs. Not PI)*/
+ int16 ScriptPercentScaleDown;
+ int16 ScriptScriptPercentScaleDown;
+ uint16 DelimitedSubFormulaMinHeight;
+ uint16 DisplayOperatorMinHeight;
+ int16 MathLeading;
+ DeviceTable *MathLeading_adjust;
+ int16 AxisHeight;
+ DeviceTable *AxisHeight_adjust;
+ int16 AccentBaseHeight;
+ DeviceTable *AccentBaseHeight_adjust;
+ int16 FlattenedAccentBaseHeight;
+ DeviceTable *FlattenedAccentBaseHeight_adjust;
+ int16 SubscriptShiftDown;
+ DeviceTable *SubscriptShiftDown_adjust;
+ int16 SubscriptTopMax;
+ DeviceTable *SubscriptTopMax_adjust;
+ int16 SubscriptBaselineDropMin;
+ DeviceTable *SubscriptBaselineDropMin_adjust;
+ int16 SuperscriptShiftUp;
+ DeviceTable *SuperscriptShiftUp_adjust;
+ int16 SuperscriptShiftUpCramped;
+ DeviceTable *SuperscriptShiftUpCramped_adjust;
+ int16 SuperscriptBottomMin;
+ DeviceTable *SuperscriptBottomMin_adjust;
+ int16 SuperscriptBaselineDropMax;
+ DeviceTable *SuperscriptBaselineDropMax_adjust;
+ int16 SubSuperscriptGapMin;
+ DeviceTable *SubSuperscriptGapMin_adjust;
+ int16 SuperscriptBottomMaxWithSubscript;
+ DeviceTable *SuperscriptBottomMaxWithSubscript_adjust;
+ int16 SpaceAfterScript;
+ DeviceTable *SpaceAfterScript_adjust;
+ int16 UpperLimitGapMin;
+ DeviceTable *UpperLimitGapMin_adjust;
+ int16 UpperLimitBaselineRiseMin;
+ DeviceTable *UpperLimitBaselineRiseMin_adjust;
+ int16 LowerLimitGapMin;
+ DeviceTable *LowerLimitGapMin_adjust;
+ int16 LowerLimitBaselineDropMin;
+ DeviceTable *LowerLimitBaselineDropMin_adjust;
+ int16 StackTopShiftUp;
+ DeviceTable *StackTopShiftUp_adjust;
+ int16 StackTopDisplayStyleShiftUp;
+ DeviceTable *StackTopDisplayStyleShiftUp_adjust;
+ int16 StackBottomShiftDown;
+ DeviceTable *StackBottomShiftDown_adjust;
+ int16 StackBottomDisplayStyleShiftDown;
+ DeviceTable *StackBottomDisplayStyleShiftDown_adjust;
+ int16 StackGapMin;
+ DeviceTable *StackGapMin_adjust;
+ int16 StackDisplayStyleGapMin;
+ DeviceTable *StackDisplayStyleGapMin_adjust;
+ int16 StretchStackTopShiftUp;
+ DeviceTable *StretchStackTopShiftUp_adjust;
+ int16 StretchStackBottomShiftDown;
+ DeviceTable *StretchStackBottomShiftDown_adjust;
+ int16 StretchStackGapAboveMin;
+ DeviceTable *StretchStackGapAboveMin_adjust;
+ int16 StretchStackGapBelowMin;
+ DeviceTable *StretchStackGapBelowMin_adjust;
+ int16 FractionNumeratorShiftUp;
+ DeviceTable *FractionNumeratorShiftUp_adjust;
+ int16 FractionNumeratorDisplayStyleShiftUp;
+ DeviceTable *FractionNumeratorDisplayStyleShiftUp_adjust;
+ int16 FractionDenominatorShiftDown;
+ DeviceTable *FractionDenominatorShiftDown_adjust;
+ int16 FractionDenominatorDisplayStyleShiftDown;
+ DeviceTable *FractionDenominatorDisplayStyleShiftDown_adjust;
+ int16 FractionNumeratorGapMin;
+ DeviceTable *FractionNumeratorGapMin_adjust;
+ int16 FractionNumeratorDisplayStyleGapMin;
+ DeviceTable *FractionNumeratorDisplayStyleGapMin_adjust;
+ int16 FractionRuleThickness;
+ DeviceTable *FractionRuleThickness_adjust;
+ int16 FractionDenominatorGapMin;
+ DeviceTable *FractionDenominatorGapMin_adjust;
+ int16 FractionDenominatorDisplayStyleGapMin;
+ DeviceTable *FractionDenominatorDisplayStyleGapMin_adjust;
+ int16 SkewedFractionHorizontalGap;
+ DeviceTable *SkewedFractionHorizontalGap_adjust;
+ int16 SkewedFractionVerticalGap;
+ DeviceTable *SkewedFractionVerticalGap_adjust;
+ int16 OverbarVerticalGap;
+ DeviceTable *OverbarVerticalGap_adjust;
+ int16 OverbarRuleThickness;
+ DeviceTable *OverbarRuleThickness_adjust;
+ int16 OverbarExtraAscender;
+ DeviceTable *OverbarExtraAscender_adjust;
+ int16 UnderbarVerticalGap;
+ DeviceTable *UnderbarVerticalGap_adjust;
+ int16 UnderbarRuleThickness;
+ DeviceTable *UnderbarRuleThickness_adjust;
+ int16 UnderbarExtraDescender;
+ DeviceTable *UnderbarExtraDescender_adjust;
+ int16 RadicalVerticalGap;
+ DeviceTable *RadicalVerticalGap_adjust;
+ int16 RadicalDisplayStyleVerticalGap;
+ DeviceTable *RadicalDisplayStyleVerticalGap_adjust;
+ int16 RadicalRuleThickness;
+ DeviceTable *RadicalRuleThickness_adjust;
+ int16 RadicalExtraAscender;
+ DeviceTable *RadicalExtraAscender_adjust;
+ int16 RadicalKernBeforeDegree;
+ DeviceTable *RadicalKernBeforeDegree_adjust;
+ int16 RadicalKernAfterDegree;
+ DeviceTable *RadicalKernAfterDegree_adjust;
+ uint16 RadicalDegreeBottomRaisePercent;
+/* Global constants from other subtables */
+ uint16 MinConnectorOverlap; /* in the math variants sub-table */
+};
+
+enum backedup_state { bs_dontknow=0, bs_not=1, bs_backedup=2 };
+enum loadvalidation_state {
+ lvs_bad_ps_fontname = 0x001,
+ lvs_bad_glyph_table = 0x002,
+ lvs_bad_cff_table = 0x004,
+ lvs_bad_metrics_table = 0x008,
+ lvs_bad_cmap_table = 0x010,
+ lvs_bad_bitmaps_table = 0x020,
+ lvs_bad_gx_table = 0x040,
+ lvs_bad_ot_table = 0x080,
+ lvs_bad_os2_version = 0x100,
+ lvs_bad_sfnt_header = 0x200
+ };
+
+typedef struct layerinfo {
+ char *name;
+ unsigned int background: 1; /* Layer is to be treated as background: No width, images, not worth outputting */
+ unsigned int order2: 1; /* Layer's data are order 2 bezier splines (truetype) rather than order 3 (postscript) */
+ /* In all glyphs in the font */
+ unsigned int ticked: 1;
+ char * ufo_path;
+} LayerInfo;
+
+/* Baseline data from the 'BASE' table */
+struct baselangextent {
+ uint32 lang; /* also used for feature tag */
+ struct baselangextent *next;
+ int16 ascent, descent;
+ struct baselangextent *features;
+};
+
+struct basescript {
+ uint32 script;
+ struct basescript *next;
+ int def_baseline; /* index [0-baseline_cnt) */
+ int16 *baseline_pos; /* baseline_cnt of these */
+ struct baselangextent *langs; /* Language specific extents (may be NULL) */
+ /* The default one has the tag DEFAULT_LANG */
+};
+
+struct Base {
+ int baseline_cnt;
+ uint32 *baseline_tags;
+ /* A font does not need to provide info on all baselines, but if one script */
+ /* talks about a baseline, then all must. So the set of baselines is global*/
+ struct basescript *scripts;
+};
+
+struct pfminfo { /* A misnomer now. OS/2 info would be more accurate, but that's stuff in here from all over ttf files */
+ unsigned int pfmset: 1;
+ unsigned int winascent_add: 1;
+ unsigned int windescent_add: 1;
+ unsigned int hheadascent_add: 1;
+ unsigned int hheaddescent_add: 1;
+ unsigned int typoascent_add: 1;
+ unsigned int typodescent_add: 1;
+ unsigned int subsuper_set: 1;
+ unsigned int panose_set: 1;
+ unsigned int hheadset: 1;
+ unsigned int vheadset: 1;
+ unsigned int hascodepages: 1;
+ unsigned int hasunicoderanges: 1;
+ unsigned char pfmfamily;
+ int16 weight;
+ int16 width;
+ char panose[10];
+ /* A subset of OS/2 fsSelection, used for style mapping. */
+ /* Must agree with macStyle per otspec, takes precedence. */
+ /* Can't use macStyle because it doesn't have a "regular" bit unlike the OS/2 component. */
+ int16 stylemap;
+ int16 fstype;
+ int16 linegap; /* from hhea */
+ int16 vlinegap; /* from vhea */
+ int16 hhead_ascent, hhead_descent;
+ int16 os2_typoascent, os2_typodescent, os2_typolinegap;
+ int16 os2_winascent, os2_windescent;
+ int16 os2_subxsize, os2_subysize, os2_subxoff, os2_subyoff;
+ int16 os2_supxsize, os2_supysize, os2_supxoff, os2_supyoff;
+ int16 os2_strikeysize, os2_strikeypos;
+ int16 os2_capheight, os2_xheight;
+ char os2_vendor[4];
+ int16 os2_family_class;
+ uint32 codepages[2];
+ uint32 unicoderanges[4];
+};
+
+struct ttf_table {
+ uint32 tag;
+ uint32 len, maxlen;
+ uint8 *data;
+ struct ttf_table *next;
+ FILE *temp; /* Temporary storage used during generation */
+};
+
+enum texdata_type { tex_unset, tex_text, tex_math, tex_mathext };
+
+struct texdata {
+ enum texdata_type type;
+ int32 params[22]; /* param[6] has different meanings in normal and math fonts */
+};
+
+struct gasp {
+ uint16 ppem;
+ uint16 flags;
+};
+
+struct ff_glyphclasses {
+ // This matches struct glyphclasses from featurefile.c for now. We may make the references numeric in the future.
+ // There may be a matching entry as a class elsewhere. For now, the output driver is responsible for eliminating duplicates.
+ // In the interest of preserving orderings, we shall output from here, checking for value overrides from kerning classes on each kerning group entry.
+ char *classname, *glyphs;
+ struct ff_glyphclasses *next;
+};
+
+struct ff_rawoffsets {
+ // This stores raw offsets as read from kerning.plist.
+ // FontForge shall output these after native data and shall output only those for which it has not emitted native data.
+ char *left;
+ char *right;
+ int offset;
+ struct ff_rawoffsets *next;
+};
+
+typedef struct splinefont {
+ char *fontname, *fullname, *familyname, *weight;
+ char *familyname_with_timestamp;
+ char *copyright;
+ char *filename; /* sfd name. NULL if we open a font, that's origname */
+ char *defbasefilename;
+ char *version;
+ real italicangle, upos, uwidth; /* In font info */
+ int ascent, descent, invalidem; // If invalidem, then we use the format-specific ascent and descent on export.
+ int uniqueid; /* Not copied when reading in!!!! */
+ int glyphcnt, glyphmax; /* allocated size of glyphs array */
+ SplineChar **glyphs;
+ unsigned int changed: 1;
+ unsigned int changed_since_autosave: 1;
+ unsigned int changed_since_xuidchanged: 1;
+ unsigned int display_antialias: 1;
+ unsigned int display_bbsized: 1;
+ unsigned int dotlesswarn: 1; /* User warned that font doesn't have a dotless i character */
+ unsigned int serifcheck: 1; /* Have we checked to see if we have serifs? */
+ unsigned int issans: 1; /* We have no serifs */
+ unsigned int isserif: 1; /* We have serifs. If neither set then we don't know. */
+ unsigned int hasvmetrics: 1; /* We've got vertical metric data and should output vhea/vmtx/VORG tables */
+ unsigned int loading_cid_map: 1;
+ unsigned int dupnamewarn: 1; /* Warn about duplicate names when loading bdf font */
+ unsigned int encodingchanged: 1; /* Font's encoding has changed since it was loaded */
+ unsigned int multilayer: 1; /* only applies if TYPE3 is set, means this font can contain strokes & fills */
+ /* I leave it in so as to avoid cluttering up code with #ifdefs */
+ unsigned int strokedfont: 1;
+ unsigned int new: 1; /* A new and unsaved font */
+ unsigned int compacted: 1; /* only used when opening a font */
+ unsigned int backedup: 2; /* 0=>don't know, 1=>no, 2=>yes */
+ unsigned int use_typo_metrics: 1; /* The standard says to. But MS */
+ /* seems to feel that isn't good */
+ /* enough and has created a bit */
+ /* to mean "really use them" */
+ unsigned int weight_width_slope_only: 1; /* This bit seems stupid to me */
+ unsigned int save_to_dir: 1; /* Loaded from an sfdir collection rather than a simple sfd file */
+ unsigned int head_optimized_for_cleartype: 1;/* Bit in the 'head' flags field, if unset "East Asian fonts in the Windows Presentation Framework (Avalon) will not be hinted" */
+ unsigned int ticked: 1;
+ unsigned int internal_temp: 1; /* Internal temporary font to be passed to freetype for rasterizing. Don't complain about oddities. Don't generate GPOS/GSUB tables, etc. */
+ unsigned int complained_about_spiros: 1;
+ unsigned int use_xuid: 1; /* Adobe has deprecated these two */
+ unsigned int use_uniqueid: 1; /* fields. Mostly we don't want to use them */
+ /* 2 bits left */
+ struct metricsview *metrics;
+ enum uni_interp uni_interp;
+ NameList *for_new_glyphs;
+ EncMap *map; /* only used when opening a font to provide original default encoding */
+ Layer grid;
+ char *origname; /* filename of font file (ie. if not an sfd) */
+ char *autosavename;
+ int display_size; /* a val <0 => Generate our own images from splines, a value >0 => find a bdf font of that size */
+ struct psdict *private; /* read in from type1 file or provided by user */
+ char *xuid;
+ struct pfminfo pfminfo;
+ struct ttflangname *names;
+ char *cidregistry, *ordering;
+ int supplement;
+ int subfontcnt;
+ struct splinefont **subfonts;
+ struct splinefont *cidmaster; /* Top level cid font */
+ float cidversion;
+#if HANYANG
+ struct compositionrules *rules;
+#endif
+ char *comments; /* Used to be restricted to ASCII, now utf8 */
+ char *fontlog;
+ int tempuniqueid;
+ int top_enc;
+ uint16 desired_row_cnt, desired_col_cnt;
+ struct glyphnamehash *glyphnames;
+ struct ttf_table *ttf_tables, *ttf_tab_saved;
+ /* We copy: fpgm, prep, cvt, maxp (into ttf_tables) user can ask for others, into saved*/
+ char **cvt_names;
+ /* The end of this array is marked by a special entry: */
+#define END_CVT_NAMES ((char *) (~(intpt) 0))
+ struct instrdata *instr_dlgs; /* Pointer to all table and character instruction dlgs in this font */
+ struct shortview *cvt_dlg;
+ struct kernclasslistdlg *kcld, *vkcld;
+ struct kernclassdlg *kcd;
+ struct texdata texdata;
+ OTLookup *gsub_lookups, *gpos_lookups;
+ /* Apple morx subtables become gsub, and kern subtables become gpos */
+ AnchorClass *anchor;
+ KernClass *kerns, *vkerns;
+ FPST *possub;
+ ASM *sm; /* asm is a keyword */
+ MacFeat *features;
+ char *chosenname; /* Set for files with multiple fonts in them */
+ struct mmset *mm; /* If part of a multiple master set */
+ int16 macstyle;
+ char *fondname; /* For use in generating mac families */
+ /* from the GPOS 'size' feature. design_size, etc. are measured in tenths of a point */
+ /* bottom is exclusive, top is inclusive */
+ /* if any field is 0, it is undefined. All may be undefined, All may be */
+ /* defined, or design_size may be defined without any of the others */
+ /* but we can't define the range without defining the other junk */
+ /* Name must contain an English language name, may contain others */
+ uint16 design_size;
+ uint16 fontstyle_id;
+ struct otfname *fontstyle_name;
+ uint16 design_range_bottom, design_range_top;
+ struct otffeatname *feat_names;
+ real strokewidth;
+/* For GDEF Mark Attachment Class -- used in lookup flags */
+/* As usual, class 0 is unused */
+ int mark_class_cnt;
+ char **mark_classes; /* glyph name list */
+ char **mark_class_names; /* used within ff, utf8 (the name we've given to this class of marks) */
+/* For GDEF Mark Attachment Sets -- used in lookup flags */
+/* but here, set 0 is meaningful, since pst_usemarkfilteringset tells us */
+ int mark_set_cnt;
+ char **mark_sets; /* glyph name list */
+ char **mark_set_names; /* used within ff, utf8 (the name we've given to this class of marks) */
+ struct ff_glyphclasses *groups; // This stores arbitrary named character lists for use in kerning or in the feature file.
+ struct ff_rawoffsets *groupkerns;
+ struct ff_rawoffsets *groupvkerns;
+ long long creationtime; /* seconds since 1970 */
+ long long modificationtime;
+ short os2_version; /* 0 means default rather than the real version 0 */
+ short compression; /* If we opened a compressed sfd file, then save it out compressed too */
+ short gasp_version; /* 0/1 currently */
+ short gasp_cnt;
+ struct gasp *gasp;
+ struct MATH *MATH;
+ float sfd_version; /* Used only when reading in an sfd file */
+ struct gfi_data *fontinfo;
+ struct val_data *valwin;
+#if !defined(_NO_PYTHON)
+ void *python_temporary;
+#endif
+ void *python_persistent; /* If python this will hold a python object, if not python this will hold a string containing a pickled object. We do nothing with it (if not python) except save it back out unchanged */
+ int python_persistent_has_lists; // This affects whether arrays exist as tuples or as lists (thus allowing us to use tuples for foreign data).
+ enum loadvalidation_state loadvalidation_state;
+ LayerInfo *layers;
+ int layer_cnt;
+ int display_layer;
+ struct Base *horiz_base, *vert_base;
+ Justify *justify;
+ int extrema_bound; /* Splines do not count for extrema complaints when the distance between the endpoints is less than or equal to this */
+ int width_separation;
+ int sfntRevision;
+#define sfntRevisionUnset 0x44445555
+ int woffMajor;
+#define woffUnset 0x4455
+ int woffMinor;
+ char *woffMetadata;
+ real ufo_ascent, ufo_descent; /* I don't know what these mean, they don't seem to correspond to any other ascent/descent pair, but retain them so round-trip ufo input/output leaves them unchanged */
+ /* ufo_descent is negative */
+ char *styleMapFamilyName;
+ struct sfundoes *undoes;
+ char collab_uuid[ FF_UUID_STRING_SIZE ];
+ int preferred_kerning; // 1 for U. F. O. native, 2 for feature file, 0 undefined. Input functions shall flag 2, I think. This is now in S. F. D. in order to round-trip U. F. O. consistently.
+} SplineFont;
+
+struct axismap {
+ int points; /* size of the next two arrays */
+ real *blends; /* between [0,1] ordered so that blend[0]<blend[1]<... */
+ real *designs; /* between the design ranges for this axis, typically [1,999] or [6,72] */
+ real min, def, max; /* For mac */
+ struct macname *axisnames; /* For mac */
+};
+
+struct named_instance { /* For mac */
+ real *coords; /* array[axis], these are in user units */
+ struct macname *names;
+};
+
+/* I am going to simplify my life and not encourage intermediate designs */
+/* this means I can easily calculate ConvertDesignVector, and don't have */
+/* to bother the user with specifying it. */
+/* (NormalizeDesignVector is fairly basic and shouldn't need user help ever) */
+/* (As long as they want piecewise linear) */
+/* I'm not going to support intermediate designs at all for apple var tables */
+typedef struct mmset {
+ int axis_count;
+ char *axes[4];
+ int instance_count;
+ SplineFont **instances;
+ SplineFont *normal;
+ real *positions; /* array[instance][axis] saying where each instance lies on each axis */
+ real *defweights; /* array[instance] saying how much of each instance makes the normal font */
+ /* for adobe */
+ struct axismap *axismaps; /* array[axis] */
+ char *cdv, *ndv; /* for adobe */
+ int named_instance_count;
+ struct named_instance *named_instances;
+ unsigned int changed: 1;
+ unsigned int apple: 1;
+} MMSet;
+
+/* mac styles. Useful idea we'll just steal it */
+enum style_flags { sf_bold = 1, sf_italic = 2, sf_underline = 4, sf_outline = 8,
+ sf_shadow = 0x10, sf_condense = 0x20, sf_extend = 0x40 };
+
+struct sflist {
+ SplineFont *sf;
+ int32 *sizes;
+ FILE *tempttf; /* For ttf */
+ int id; /* For ttf */
+ int* ids; /* One for each size */
+ BDFFont **bdfs; /* Ditto */
+ EncMap *map;
+ struct sflist *next;
+ char **former_names;
+ int len;
+};
+
+ /* Used for drawing text with mark to base anchors */
+typedef struct anchorpos {
+ SplineChar *sc; /* This is the mark being positioned */
+ int x,y; /* Its origin should be shifted this much relative to that of the original base char */
+ AnchorPoint *apm; /* The anchor point in sc used to position it */
+ AnchorPoint *apb; /* The anchor point in the base character against which we are positioned */
+ int base_index; /* Index in this array to the base character (-1=> original base char) */
+ unsigned int ticked: 1; /* Used as a mark to mark */
+} AnchorPos;
+
+enum ttf_flags { ttf_flag_shortps = 1, ttf_flag_nohints = 2,
+ ttf_flag_applemode=4,
+ ttf_flag_pfed_comments=8, ttf_flag_pfed_colors=0x10,
+ ttf_flag_otmode=0x20,
+ ttf_flag_glyphmap=0x40,
+ ttf_flag_TeXtable=0x80,
+ ttf_flag_ofm=0x100,
+ ttf_flag_oldkern=0x200, /* never set in conjunction with applemode */
+ ttf_flag_pfed_lookupnames=0x800,
+ ttf_flag_pfed_guides=0x1000,
+ ttf_flag_pfed_layers=0x2000,
+ ttf_flag_symbol=0x4000,
+ ttf_flag_dummyDSIG=0x8000,
+ ttf_native_kern=0x10000, // This applies mostly to U. F. O. right now.
+ ttf_flag_oldkernmappedonly=0x20000000 // Allow only mapped glyphs in the old-style "kern" table, required for Windows compatibility
+ };
+enum ttc_flags { ttc_flag_trymerge=0x1, ttc_flag_cff=0x2 };
+enum openflags { of_fstypepermitted=1, of_askcmap=2, of_all_glyphs_in_ttc=4,
+ of_fontlint=8, of_hidewindow=0x10, of_all_tables=0x20 };
+enum ps_flags { ps_flag_nohintsubs = 0x10000, ps_flag_noflex=0x20000,
+ ps_flag_nohints = 0x40000, ps_flag_restrict256=0x80000,
+ ps_flag_afm = 0x100000, ps_flag_pfm = 0x200000,
+ ps_flag_tfm = 0x400000,
+ ps_flag_round = 0x800000,
+/* CFF fonts are wrapped up in some postscript sugar -- unless they are to */
+/* go into a pdf file or an otf font */
+ ps_flag_nocffsugar = 0x1000000,
+/* in type42 cid fonts we sometimes want an identity map from gid to cid */
+ ps_flag_identitycidmap = 0x2000000,
+ ps_flag_afmwithmarks = 0x4000000,
+ ps_flag_noseac = 0x8000000,
+ ps_flag_outputfontlog = 0x10000000,
+ ps_flag_mask = (ps_flag_nohintsubs|ps_flag_noflex|
+ ps_flag_afm|ps_flag_pfm|ps_flag_tfm|ps_flag_round)
+ };
+
+struct compressors { char *ext, *decomp, *recomp; };
+#define COMPRESSORS_EMPTY { NULL, NULL, NULL }
+extern struct compressors compressors[];
+
+enum archive_list_style { ars_tar, ars_zip };
+
+#define ARCHIVERS_EMPTY { NULL, NULL, NULL, NULL, NULL, NULL, 0 }
+
+struct fontdict;
+struct pschars;
+struct findsel;
+struct charprocs;
+struct enc;
+
+#define chunkalloc(size) calloc(1,size)
+#define chunkfree(item,size) free(item)
+
+extern int SFOneWidth(SplineFont *sf);
+extern int CIDOneWidth(SplineFont *sf);
+
+enum fontformat { ff_pfa, ff_pfb, ff_pfbmacbin, ff_multiple, ff_mma, ff_mmb,
+ ff_ptype3, ff_ptype0, ff_cid, ff_cff, ff_cffcid,
+ ff_type42, ff_type42cid,
+ ff_ttf, ff_ttfsym, ff_ttfmacbin, ff_ttc, ff_ttfdfont, ff_otf, ff_otfdfont,
+ ff_otfcid, ff_otfciddfont, ff_svg, ff_ufo, ff_woff, ff_none };
+struct cidbytes;
+struct fd2data;
+struct ttfinfo;
+struct alltabs;
+
+typedef struct growbuf {
+ unsigned char *pt;
+ unsigned char *base;
+ unsigned char *end;
+} GrowBuf;
+extern void GrowBuffer(GrowBuf *gb);
+
+struct glyphdata;
+extern int UnitsParallel(BasePoint *u1,BasePoint *u2,int strict);
+extern int CvtPsStem3(struct growbuf *gb, SplineChar *scs[MmMax], int instance_count,
+ int ishstem, int round);
+extern struct pschars *SplineFont2ChrsSubrs2(SplineFont *sf, int nomwid,
+ int defwid, const int *bygid, int cnt, int flags,
+ struct pschars **_subrs,int layer);
+extern struct pschars *CID2ChrsSubrs2(SplineFont *cidmaster,struct fd2data *fds,
+ int flags, struct pschars **_glbls,int layer);
+enum bitmapformat { bf_bdf, bf_ttf, bf_sfnt_dfont, bf_sfnt_ms, bf_otb,
+ bf_nfntmacbin, /*bf_nfntdfont, */bf_fon, bf_fnt, bf_palm,
+ bf_ptype3,
+ bf_none };
+extern int32 filechecksum(FILE *file);
+extern int _WriteWOFFFont(FILE *ttf,SplineFont *sf, enum fontformat format,
+ int32 *bsizes, enum bitmapformat bf,int flags,EncMap *enc,int layer);
+extern int WriteWOFFFont(char *fontname,SplineFont *sf, enum fontformat format,
+ int32 *bsizes, enum bitmapformat bf,int flags,EncMap *enc,int layer);
+extern int _WriteTTFFont(FILE *ttf,SplineFont *sf, enum fontformat format,
+ int32 *bsizes, enum bitmapformat bf,int flags,EncMap *enc,int layer);
+extern int WriteTTFFont(char *fontname,SplineFont *sf, enum fontformat format,
+ int32 *bsizes, enum bitmapformat bf,int flags,EncMap *enc,int layer);
+extern int _WriteType42SFNTS(FILE *type42,SplineFont *sf,enum fontformat format,
+ int flags,EncMap *enc,int layer);
+extern int WriteMacTTFFont(char *fontname,SplineFont *sf, enum fontformat format,
+ int32 *bsizes, enum bitmapformat bf,int flags,EncMap *enc,int layer);
+extern int WriteMacFamily(char *filename,struct sflist *sfs,enum fontformat format,
+ enum bitmapformat bf,int flags,int layer);
+extern int WriteTTC(const char *filename,struct sflist *sfs,enum fontformat format,
+ enum bitmapformat bf,int flags,int layer,enum ttc_flags ttcflags);
+extern long mactime(void);
+extern void DefaultTTFEnglishNames(struct ttflangname *dummy, SplineFont *sf);
+extern int AlreadyMSSymbolArea(SplineFont *sf,EncMap *map);
+extern void OS2FigureCodePages(SplineFont *sf, uint32 CodePage[2]);
+extern void OS2FigureUnicodeRanges(SplineFont *sf, uint32 Ranges[4]);
+extern void SFDefaultOS2Info(struct pfminfo *pfminfo,SplineFont *sf,char *fontname);
+extern void SFDefaultOS2Simple(struct pfminfo *pfminfo,SplineFont *sf);
+extern void SFDefaultOS2SubSuper(struct pfminfo *pfminfo,int emsize,double italicangle);
+extern int ScriptIsRightToLeft(uint32 script);
+extern uint32 ScriptFromUnicode(uint32 u,SplineFont *sf);
+extern uint32 SCScriptFromUnicode(SplineChar *sc);
+extern int SCRightToLeft(SplineChar *sc);
+extern void SFMatchGlyphs(SplineFont *sf,SplineFont *target,int addempties);
+extern void MMMatchGlyphs(MMSet *mm);
+extern const char *_GetModifiers(const char *fontname, const char *familyname, const char *weight);
+extern const char *SFGetModifiers(const SplineFont *sf);
+
+extern int Within4RoundingErrors(bigreal v1, bigreal v2);
+extern int Within16RoundingErrors(bigreal v1, bigreal v2);
+extern int RealNear(real a,real b);
+extern int RealNearish(real a,real b);
+extern int RealApprox(real a,real b);
+extern int RealWithin(real a,real b,real fudge);
+
+extern int PointsDiagonalable(SplineFont *sf,BasePoint **bp,BasePoint *unit);
+extern int MergeDStemInfo(SplineFont *sf,DStemInfo **ds, DStemInfo *test);
+
+extern void LineListFree(LineList *ll);
+extern void LinearApproxFree(LinearApprox *la);
+extern void SplineFree(Spline *spline);
+extern SplinePoint *SplinePointCreate(real x, real y);
+extern void SplinePointFree(SplinePoint *sp);
+extern void SplinePointsFree(SplinePointList *spl);
+extern void SplinePointListFree(SplinePointList *spl);
+extern void SplinePointListsFree(SplinePointList *head);
+extern void SplineSetSpirosClear(SplineSet *spl);
+extern void RefCharFree(RefChar *ref);
+extern void RefCharsFree(RefChar *ref);
+extern void StemInfosFree(StemInfo *h);
+extern void StemInfoFree(StemInfo *h);
+extern void DStemInfosFree(DStemInfo *h);
+extern void DStemInfoFree(DStemInfo *h);
+extern void KernPairsFree(KernPair *kp);
+extern void AnchorPointsFree(AnchorPoint *ap);
+extern void AnchorClassesFree(AnchorClass *kp);
+extern void TtfTablesFree(struct ttf_table *tab);
+extern void ValDevFree(ValDevTab *adjust);
+extern void DeviceTableFree(DeviceTable *adjust);
+extern void PSTFree(PST *lig);
+
+struct lookup_cvt { OTLookup *from, *to; int old;};
+struct sub_cvt { struct lookup_subtable *from, *to; int old;};
+struct ac_cvt { AnchorClass *from, *to; int old;};
+
+extern void TTFLangNamesFree(struct ttflangname *l);
+extern void AltUniFree(struct altuni *altuni);
+extern void AltUniFigure(SplineFont *sf,EncMap *map,int check_dups);
+extern void AltUniAdd(SplineChar *sc,int uni);
+extern void AltUniAdd_DontCheckDups(SplineChar *sc,int uni);
+extern void MinimumDistancesFree(MinimumDistance *md);
+extern void LayerDefault(Layer *);
+extern SplineChar *SplineCharCreate(int layer_cnt);
+extern SplineChar *SFSplineCharCreate(SplineFont *sf);
+extern RefChar *RefCharCreate(void);
+extern void KernClassFreeContents(KernClass *kc);
+extern void KernClassClearSpecialContents(KernClass *kc);
+extern void KernClassListFree(KernClass *kc);
+extern void KernClassListClearSpecialContents(KernClass *kc);
+extern void OTLookupFree(OTLookup *lookup);
+extern void OTLookupListFree(OTLookup *lookup );
+extern void FPSTRuleContentsFree(struct fpst_rule *r, enum fpossub_format format);
+extern void FPSTClassesFree(FPST *fpst);
+extern void FPSTFree(FPST *fpst);
+extern void ASMFree(ASM *sm);
+extern void MacNameListFree(struct macname *mn);
+extern void MacSettingListFree(struct macsetting *ms);
+extern void MacFeatListFree(MacFeat *mf);
+extern void GlyphVariantsFree(struct glyphvariants *gv);
+extern void MathKernVContentsFree(struct mathkernvertex *mk);
+extern void MathKernFree(struct mathkern *mk);
+extern void SplineCharListsFree(struct splinecharlist *dlist);
+extern void LayerFreeContents(SplineChar *sc, int layer);
+extern void SplineCharFreeContents(SplineChar *sc);
+extern void SplineCharFree(SplineChar *sc);
+extern void EncMapFree(EncMap *map);
+extern EncMap *EncMapFromEncoding(SplineFont *sf,Encoding *enc);
+extern EncMap *EncMapNew(int encmax, int backmax, Encoding *enc);
+extern EncMap *EncMap1to1(int enccount);
+extern void ScriptLangListFree(struct scriptlanglist *sl);
+extern void FeatureScriptLangListFree(FeatureScriptLangList *fl);
+extern void SFBaseSort(SplineFont *sf);
+extern struct baselangextent *BaseLangCopy(struct baselangextent *extent);
+extern void BaseLangFree(struct baselangextent *extent);
+extern void BaseScriptFree(struct basescript *bs);
+extern void BaseFree(struct Base *base);
+extern void SplineFontFree(SplineFont *sf);
+extern void SplineFontClearSpecial(SplineFont *sf);
+
+#if 1
+// These relate to experimental support for U. F. O. groups.
+#define GROUP_NAME_KERNING_UFO 1
+#define GROUP_NAME_KERNING_FEATURE 2
+#define GROUP_NAME_VERTICAL 4 // Otherwise horizontal.
+#define GROUP_NAME_RIGHT 8 // Otherwise left (or above).
+
+void GlyphGroupFree(struct ff_glyphclasses* group);
+void GlyphGroupsFree(struct ff_glyphclasses* root);
+void GlyphGroupKernFree(struct ff_rawoffsets* groupkern);
+void GlyphGroupKernsFree(struct ff_rawoffsets* root);
+#ifdef FF_UTHASH_GLIF_NAMES
+struct glif_name_index;
+int HashKerningClassNamesFlex(SplineFont *sf, struct glif_name_index * class_name_hash, int capitalize);
+int HashKerningClassNames(SplineFont *sf, struct glif_name_index * class_name_hash);
+int HashKerningClassNamesCaps(SplineFont *sf, struct glif_name_index * class_name_hash);
+#endif
+#endif // 1
+extern void JstfLangFree(struct jstf_lang *jl);
+extern void JustifyFree(Justify *just);
+extern void OtfNameListFree(struct otfname *on);
+extern void OtfFeatNameListFree(struct otffeatname *fn);
+extern struct otffeatname *findotffeatname(uint32 tag,SplineFont *sf);
+extern void MarkSetFree(int cnt,char **classes,char **names);
+extern void MarkClassFree(int cnt,char **classes,char **names);
+extern void MMSetFreeContents(MMSet *mm);
+extern void MMSetFree(MMSet *mm);
+extern void MMSetClearSpecial(MMSet *mm);
+extern void SplineRefigure3(Spline *spline);
+extern void SplineRefigure(Spline *spline);
+extern Spline *SplineMake3(SplinePoint *from, SplinePoint *to);
+extern int SplinePointListIsClockwise(const SplineSet *spl);
+extern void SplineCharLayerFindBounds(SplineChar *sc,int layer,DBounds *bounds);
+extern void SplineCharFindBounds(SplineChar *sc,DBounds *bounds);
+extern void SplineFontLayerFindBounds(SplineFont *sf,int layer,DBounds *bounds);
+extern void SplineFontFindBounds(SplineFont *sf,DBounds *bounds);
+extern void CIDLayerFindBounds(SplineFont *sf,int layer,DBounds *bounds);
+extern void SplineSetQuickBounds(SplineSet *ss,DBounds *b);
+extern void SplineCharLayerQuickBounds(SplineChar *sc,int layer,DBounds *bounds);
+extern void SplineCharQuickBounds(SplineChar *sc, DBounds *b);
+extern void SplinePointCategorize(SplinePoint *sp);
+extern void SPLCategorizePoints(SplinePointList *spl);
+extern SplinePointList *SplinePointListCopy1(const SplinePointList *spl);
+extern SplinePointList *SplinePointListCopy(const SplinePointList *base);
+extern void BpTransform(BasePoint *to, BasePoint *from, real transform[6]);
+/* The order of the enum elements below doesn't make much sense, but it's done*/
+/* this way to preserve binary compatibility */
+enum transformPointType { tpt_OnlySelected, tpt_AllPoints, tpt_OnlySelectedInterpCPs };
+/*
+ * As SplinePointListTransform() does a few things, this is a mask to selectively be
+ * able to disable some of them.
+ */
+enum transformPointMask {
+ tpmask_dontFixControlPoints = 1 << 1,
+ tpmask_operateOnSelectedBCP = 1 << 2
+};
+extern SplinePointList *SplinePointListTransform(SplinePointList *base, real transform[6], enum transformPointType allpoints );
+extern SplinePointList *SplinePointListTransformExtended(SplinePointList *base, real transform[6],
+ enum transformPointType tpt, enum transformPointMask tpmask );
+extern HintMask *HintMaskFromTransformedRef(RefChar *ref,BasePoint *trans,
+ SplineChar *basesc,HintMask *hm);
+extern SplinePointList *SPLCopyTranslatedHintMasks(SplinePointList *base,
+ SplineChar *basesc, SplineChar *subsc, BasePoint *trans);
+extern SplinePointList *SPLCopyTransformedHintMasks(RefChar *r,
+ SplineChar *basesc, BasePoint *trans,int layer);
+extern void RefCharFindBounds(RefChar *rf);
+extern void SCReinstanciateRefChar(SplineChar *sc,RefChar *rf,int layer);
+enum piecemeal_flags { pf_antialias=1, pf_bbsized=2, pf_ft_nohints=4, pf_ft_recontext=8 };
+#define STD_BDF_PROPS_EMPTY { NULL, 0, 0 }
+
+/* Two lines intersect in at most 1 point */
+/* Two quadratics intersect in at most 4 points */
+/* Two cubics intersect in at most 9 points */ /* Plus an extra space for a trailing -1 */
+extern int SplinesIntersect(const Spline *s1, const Spline *s2, BasePoint pts[9],
+ extended t1s[10], extended t2s[10]);
+extern int _CubicSolve(const Spline1D *sp,bigreal sought,extended ts[3]);
+extern int CubicSolve(const Spline1D *sp,bigreal sought,extended ts[3]);
+/* Uses an iterative approximation */
+extern extended IterateSplineSolve(const Spline1D *sp, extended tmin, extended tmax, extended sought_y);
+/* Uses an iterative approximation and then tries to fix things up */
+extern extended IterateSplineSolveFixup(const Spline1D *sp, extended tmin, extended tmax, extended sought_y);
+extern void SplineFindExtrema(const Spline1D *sp, extended *_t1, extended *_t2 );
+
+#define CURVATURE_ERROR -1e9
+extern bigreal SplineCurvature(Spline *s, bigreal t);
+
+extern double CheckExtremaForSingleBitErrors(const Spline1D *sp, double t, double othert);
+extern int Spline2DFindExtrema(const Spline *sp, extended extrema[4] );
+extern int Spline2DFindPointsOfInflection(const Spline *sp, extended poi[2] );
+extern void SplineRemoveExtremaTooClose(Spline1D *sp, extended *_t1, extended *_t2 );
+extern void SCMakeDependent(SplineChar *dependent,SplineChar *base);
+extern SplinePoint *SplineBisect(Spline *spline, extended t);
+extern bigreal SplineLength(Spline *spline);
+extern int SplineIsLinear(Spline *spline);
+extern int SPInterpolate(const SplinePoint *sp);
+enum ae_type { ae_all, ae_between_selected, ae_only_good, ae_only_good_rm_later };
+extern int SpIsExtremum(SplinePoint *sp);
+extern int Spline1DCantExtremeX(const Spline *s);
+extern int Spline1DCantExtremeY(const Spline *s);
+extern Spline *SplineAddExtrema(Spline *s,int always,real lenbound,
+ real offsetbound,DBounds *b);
+extern SplineFont *SplineFontEmpty(void);
+extern void SFIncrementXUID(SplineFont *sf);
+extern SplineSet *SplineSetReverse(SplineSet *spl);
+extern void BP_HVForce(BasePoint *vector);
+extern void SplineCharDefaultPrevCP(SplinePoint *base);
+extern void SplineCharDefaultNextCP(SplinePoint *base);
+extern void SplineCharTangentNextCP(SplinePoint *sp);
+extern void SplineCharTangentPrevCP(SplinePoint *sp);
+/**
+ * This is like SPAdjustControl but you have not wanting to move the
+ * BCP at all, but you would like the current location of the passed
+ * BCP to reshape the spline through the splinepoint. For example, if
+ * you drag the spline between two points then you might like to touch
+ * the inside BCP between the two splinepoints to reshape the whole
+ * curve through a curve point.
+ */
+extern void SPTouchControl(SplinePoint *sp,BasePoint *which, int order2);
+extern void SPAdjustControl(SplinePoint *sp,BasePoint *cp, BasePoint *to,int order2);
+
+extern SplineSet *SSttfApprox(SplineSet *ss);
+extern SplineSet *SSPSApprox(SplineSet *ss);
+extern SplineSet *SplineSetsPSApprox(SplineSet *ss);
+extern void SplineRefigure2(Spline *spline);
+extern void SplineRefigureFixup(Spline *spline);
+extern Spline *SplineMake2(SplinePoint *from, SplinePoint *to);
+extern Spline *SplineMake(SplinePoint *from, SplinePoint *to, int order2);
+extern void SCConvertToOrder2(SplineChar *sc);
+extern void SFConvertToOrder2(SplineFont *sf);
+extern int IntersectLines(BasePoint *inter,
+ BasePoint *line1_1, BasePoint *line1_2,
+ BasePoint *line2_1, BasePoint *line2_2);
+extern int IntersectLinesClip(BasePoint *inter,
+ BasePoint *line1_1, BasePoint *line1_2,
+ BasePoint *line2_1, BasePoint *line2_2);
+
+extern double BlueScaleFigureForced(struct psdict *private_,real bluevalues[], real otherblues[]);
+extern double BlueScaleFigure(struct psdict *private_,real bluevalues[], real otherblues[]);
+extern void FindBlues( SplineFont *sf, int layer, real blues[14], real otherblues[10]);
+extern void QuickBlues(SplineFont *sf, int layer, BlueData *bd);
+extern void FindHStems( SplineFont *sf, real snaps[12], real cnt[12]);
+extern void FindVStems( SplineFont *sf, real snaps[12], real cnt[12]);
+extern void SCGuessHintInstancesList(SplineChar *sc,int layer,StemInfo *hstem,StemInfo *vstem,DStemInfo *dstem,int hvforce,int dforce);
+extern real HIlen( StemInfo *stems);
+extern real HIoverlap( HintInstance *mhi, HintInstance *thi);
+extern int StemListAnyConflicts(StemInfo *stems);
+extern HintInstance *HICopyTrans(HintInstance *hi, real mul, real offset);
+
+typedef struct bluezone {
+ real base;
+ int cvtindex;
+ real family_base; /* NaN if none */
+ int family_cvtindex;
+ real overshoot; /* relative to baseline, NOT to base */
+ int highest; /* used in autoinstructing for HStem positioning */
+ int lowest; /* as above */
+} BlueZone;
+
+typedef struct stdstem {
+ real width; /* -1 if none */
+ int cvtindex;
+ struct stdstem *snapto;/* NULL means stem isn't snapped to any other */
+ int stopat; /* at which ppem stop snapping to snapto */
+} StdStem;
+
+typedef struct globalinstrct {
+ SplineFont *sf;
+ int layer;
+ BlueData *bd;
+ double fudge;
+
+ /* Did we initialize the tables needed? 'maxp' is skipped because */
+ /* its initialization always succeeds. */
+ int cvt_done;
+ int fpgm_done;
+ int prep_done;
+
+ /* PS private data with truetype-specific information added */
+ BlueZone blues[12]; /* like in BlueData */
+ int bluecnt;
+ StdStem stdhw;
+ StdStem *stemsnaph; /* StdHW excluded */
+ int stemsnaphcnt;
+ StdStem stdvw;
+ StdStem *stemsnapv; /* StdVW excluded */
+ int stemsnapvcnt;
+} GlobalInstrCt;
+
+extern void InitGlobalInstrCt( GlobalInstrCt *gic,SplineFont *sf,int layer,
+ BlueData *bd );
+extern void FreeGlobalInstrCt( GlobalInstrCt *gic );
+extern void NowakowskiSCAutoInstr( GlobalInstrCt *gic,SplineChar *sc );
+
+extern void SCClearHintMasks(SplineChar *sc,int layer,int counterstoo);
+extern void SCFigureHintMasks(SplineChar *sc,int layer);
+extern void _SplineCharAutoHint( SplineChar *sc, int layer, BlueData *bd, struct glyphdata *gd2, int gen_undoes );
+extern void SplineCharAutoHint( SplineChar *sc,int layer, BlueData *bd);
+extern void SFSCAutoHint( SplineChar *sc,int layer,BlueData *bd);
+extern void SplineFontAutoHint( SplineFont *sf, int layer);
+extern void SplineFontAutoHintRefs( SplineFont *sf, int layer);
+extern int SplineFontIsFlexible(SplineFont *sf,int layer, int flags);
+extern int SCDrawsSomething(SplineChar *sc);
+extern int SCWorthOutputting(SplineChar *sc);
+extern void SFLigaturePrepare(SplineFont *sf);
+extern void SFLigatureCleanup(SplineFont *sf);
+extern void SFKernClassTempDecompose(SplineFont *sf,int isv);
+extern void SFKernCleanup(SplineFont *sf,int isv);
+
+typedef struct sfd_getfontmetadatadata
+{
+
+ // these indicate if we saw some metadata or not.
+ // perhaps the caller wants to do something special
+ // if the metadata was present/missing.
+ int hadtimes;
+ int had_layer_cnt;
+
+ // state that is mostly interesting to SFD_GetFontMetaData() only
+ struct Base* last_base;
+ struct basescript* last_base_script;
+ OTLookup* lastpotl;
+ OTLookup* lastsotl;
+ KernClass* lastkc;
+ KernClass* lastvkc;
+ struct ff_glyphclasses* lastgroup;
+ struct ff_rawoffsets* lastgroupkern;
+ struct ff_rawoffsets* lastgroupvkern;
+ FPST* lastfp;
+ ASM* lastsm;
+ struct ttf_table* lastttf[2];
+
+} SFD_GetFontMetaDataData;
+extern void SFD_GetFontMetaDataData_Init( SFD_GetFontMetaDataData* d );
+extern bool SFD_GetFontMetaData( FILE *sfd,
+ char *tok,
+ SplineFont *sf,
+ SFD_GetFontMetaDataData* d );
+extern const char*FindUnicharName(void);
+extern Encoding *_FindOrMakeEncoding(const char *name,int make_it);
+extern Encoding *FindOrMakeEncoding(const char *name);
+extern MacFeat *SFDParseMacFeatures(FILE *sfd, char *tok);
+extern SplineFont *SFDRead(char *filename);
+extern SplineFont *_SFDRead(char *filename,FILE *sfd);
+enum ttfflags { ttf_onlystrikes=1, ttf_onlyonestrike=2, ttf_onlykerns=4, ttf_onlynames=8 };
+extern uint16 _MacStyleCode( const char *styles, SplineFont *sf, uint16 *psstyle );
+extern uint16 MacStyleCode( SplineFont *sf, uint16 *psstyle );
+
+extern int getAdobeEnc(const char *name);
+
+extern void MatMultiply(real m1[6], real m2[6], real to[6]);
+
+extern void GlyphHashFree(SplineFont *sf);
+extern SplineChar *SFHashName(SplineFont *sf,const char *name);
+extern int SFFindGID(SplineFont *sf, int unienc, const char *name );
+extern int SFCIDFindCID(SplineFont *sf, int unienc, const char *name );
+extern SplineChar *SFGetChar(SplineFont *sf, int unienc, const char *name );
+extern int SFFindExistingSlot(SplineFont *sf, int unienc, const char *name );
+extern int SFHasCID(SplineFont *sf, int cid);
+
+extern void PSCharsFree(struct pschars *chrs);
+extern void PSDictFree(struct psdict *chrs);
+extern char *PSDictHasEntry(struct psdict *dict, const char *key);
+extern int PSDictSame(struct psdict *dict1, struct psdict *dict2);
+
+struct cidmap; /* private structure to encoding.c */
+
+int getushort(FILE *ttf);
+int32 getlong(FILE *ttf);
+void putshort(FILE *file,int sval);
+void putlong(FILE *file,int val);
+void putfixed(FILE *file,real dval);
+int ttfcopyfile(FILE *ttf, FILE *other, int pos, const char *table_name);
+
+extern int UniFromName(const char *name,enum uni_interp interp, Encoding *encname);
+extern NameList *DefaultNameListForNewFonts(void);
+extern NameList *NameListByName(const char *name);
+extern int SSTtfNumberPoints(SplineSet *ss);
+extern int SCNumberPoints(SplineChar *sc,int layer);
+extern int SCPointsNumberedProperly(SplineChar *sc,int layer);
+
+int SFFigureDefWidth(SplineFont *sf, int *_nomwid);
+
+extern int ClassesMatch(int cnt1,char **classes1,int cnt2,char **classes2);
+extern FPST *FPSTGlyphToClass(FPST *fpst);
+
+extern ASM *ASMFromOpenTypeForms(SplineFont *sf,uint32 script);
+extern ASM *ASMFromFPST(SplineFont *sf,FPST *fpst,int ordered);
+
+extern char *utf8_verify_copy(const char *str);
+
+extern char *Utf8ToMacStr(const char *ustr,int macenc,int maclang);
+extern uint8 MacEncFromMacLang(int maclang);
+extern uint16 WinLangToMac(int winlang);
+extern MacFeat *FindMacFeature(SplineFont *sf, int feat,MacFeat **secondary);
+extern struct macsetting *FindMacSetting(SplineFont *sf, int feat, int set,struct macsetting **secondary);
+
+extern int32 UniFromEnc(int enc, Encoding *encname);
+extern int32 EncFromUni(int32 uni, Encoding *encname);
+
+/* Colinear & between */
+
+enum psstrokeflags { /* sf_removeoverlap=2,*/ sf_handle_eraser=4,
+ sf_correctdir=8, sf_clearbeforeinput=16 };
+
+extern int MMValid(MMSet *mm,int complain);
+
+enum Compare_Ret { SS_DiffContourCount = 1,
+ SS_MismatchOpenClosed = 2,
+ SS_DisorderedContours = 4,
+ SS_DisorderedStart = 8,
+ SS_DisorderedDirection = 16,
+ SS_PointsMatch = 32,
+ SS_ContourMatch = 64,
+ SS_NoMatch = 128,
+ SS_RefMismatch = 256,
+ SS_WidthMismatch = 512,
+ SS_VWidthMismatch = 1024,
+ SS_HintMismatch = 2048,
+ SS_HintMaskMismatch = 4096,
+ SS_LayerCntMismatch = 8192,
+ SS_ContourMismatch = 16384,
+ SS_UnlinkRefMatch = 32768,
+
+ BC_DepthMismatch = 1<<16,
+ BC_BoundingBoxMismatch = 2<<16,
+ BC_BitmapMismatch = 4<<16,
+ BC_NoMatch = 8<<16,
+ BC_Match = 16<<16,
+
+ SS_RefPtMismatch = 32<<16
+ };
+
+enum font_compare_flags { fcf_outlines=1, fcf_exact=2, fcf_warn_not_exact=4,
+ fcf_hinting=8, fcf_hintmasks=0x10, fcf_hmonlywithconflicts=0x20,
+ fcf_warn_not_ref_exact=0x40,
+ fcf_bitmaps=0x80, fcf_names = 0x100, fcf_gpos=0x200, fcf_gsub=0x400,
+ fcf_adddiff2sf1=0x800, fcf_addmissing=0x1000 };
+
+# if HANYANG
+extern void SFDDumpCompositionRules(FILE *sfd,struct compositionrules *rules);
+extern struct compositionrules *SFDReadCompositionRules(FILE *sfd);
+extern void SFModifyComposition(SplineFont *sf);
+extern void SFBuildSyllables(SplineFont *sf);
+# endif
+
+extern void SFTimesFromFile(SplineFont *sf,FILE *);
+
+extern int SFHasInstructions(SplineFont *sf);
+extern int RefDepth(RefChar *ref,int layer);
+
+extern uint32 *SFScriptsInLookups(SplineFont *sf,int gpos);
+extern uint32 *SFLangsInScript(SplineFont *sf,int gpos,uint32 script);
+extern uint32 *SFFeaturesInScriptLang(SplineFont *sf,int gpos,uint32 script,uint32 lang);
+extern OTLookup **SFLookupsInScriptLangFeature(SplineFont *sf,int gpos,uint32 script,uint32 lang, uint32 feature);
+extern SplineChar **SFGlyphsWithPSTinSubtable(SplineFont *sf,struct lookup_subtable *subtable);
+extern void SFFindUnusedLookups(SplineFont *sf);
+extern struct lookup_subtable *SFFindLookupSubtable(SplineFont *sf,char *name);
+extern struct lookup_subtable *SFFindLookupSubtableAndFreeName(SplineFont *sf,char *name);
+extern OTLookup *SFFindLookup(SplineFont *sf,char *name);
+struct scriptlanglist *SLCopy(struct scriptlanglist *sl);
+struct scriptlanglist *SListCopy(struct scriptlanglist *sl);
+extern FeatureScriptLangList *FeatureListCopy(FeatureScriptLangList *fl);
+extern int DefaultLangTagInOneScriptList(struct scriptlanglist *sl);
+
+extern RefChar *HasUseMyMetrics(SplineChar *sc,int layer);
+
+extern EncMap *EncMapFromEncoding(SplineFont *sf,Encoding *enc);
+
+extern void InitSimpleStuff(void);
+
+extern struct math_constants_descriptor {
+ char *script_name;
+ int offset;
+ int devtab_offset;
+} math_constants_descriptor[];
+
+#define MATH_CONSTANTS_DESCRIPTOR_EMPTY { NULL, 0, 0}
+
+extern const char *knownweights[], *realweights[], **noticeweights[];
+
+struct lang_frequencies;
+extern struct gradient *GradientCopy(struct gradient *old,real transform[6]);
+extern void GradientFree(struct gradient *grad);
+extern struct pattern *PatternCopy(struct pattern *old,real transform[6]);
+extern void PatternFree(struct pattern *pat);
+extern void BrushCopy(struct brush *into, struct brush *from,real transform[6]);
+extern void PenCopy(struct pen *into, struct pen *from,real transform[6]);
+
+extern bigreal SFCapHeight(SplineFont *sf, int layer, int return_error);
+extern bigreal SFXHeight(SplineFont *sf, int layer, int return_error);
+
+/**
+ * Visitor for SPLFirstVisitSplines()
+ */
+typedef void (*SPLFirstVisitSplinesVisitor)( SplinePoint* splfirst, Spline* s, void* udata );
+
+/**
+ * Visitor Function: print debug information about each spline
+ */
+
+/**
+ * Given a SplinePointList* that you want to visit each spline in the
+ * iteration is not as simple as it could be, so you can call this
+ * function passing spl->first as 'splfirst' and a visitor function
+ * which will see each spline in the splfirst colleciton.
+ *
+ * For debug, you can pass SPLFirstVisitorDebug which will print
+ * information for each item in the splfirst collection.
+ *
+ * You can pass any arbitrary data in as udata and SPLFirstVisit()
+ * will pass that udata to your visitor function without change. If
+ * you want a return value from your visitor, pass a pointer to a
+ * struct as udata. eg:
+ *
+ * typedef struct SPLFirstVisitorFoundSoughtDataS
+ * {
+ * SplinePoint* sought;
+ * int found;
+ * } SPLFirstVisitorFoundSoughtData;
+ *
+ * // ...
+ *
+ * SPLFirstVisitorFoundSoughtData d;
+ * d.sought = sought;
+ * d.found = 0;
+ * SPLFirstVisit( spl->first, SPLFirstVisitorFoundSought, &d );
+ * if( d.found )
+ * return 1;
+ *
+ */
+extern void SPLFirstVisitSplines( SplinePoint* splfirst, SPLFirstVisitSplinesVisitor f, void* udata );
+
+/**
+ * Visitor for SPLFirstVisitPoints()
+ */
+typedef void (*SPLFirstVisitPointsVisitor)( SplinePoint* splfirst, Spline* s, SplinePoint* sp, void* udata );
+
+
+/**
+ * Applies a visitor to the container and returns false if no point in the SPL
+ * has an x coordinate of 'x'.
+ */
+extern SplinePoint* SplinePointListContainsPointAtX( SplinePointList* container, real x );
+
+
+/**
+ * It is like a == b, but also true if a is within
+ * tolerence of b.
+ */
+extern bool equalWithTolerence( real a, real b, real tolerence );
+
+// The following functions are in splineutil.c at present.
+char * upper_case(const char * input);
+
+#include "ustring.h"
+
+#ifdef _WIN32
+#define BAD_LOCALE_HACK
+typedef char* locale_t;
+#define LC_GLOBAL_LOCALE ((locale_t)-1)
+#define LC_ALL_MASK LC_ALL
+#define LC_COLLATE_MASK LC_COLLATE
+#define LC_CTYPE_MASK LC_CTYPE
+#define LC_MONETARY_MASK LC_MONETARY
+#define LC_NUMERIC_MASK LC_NUMERIC
+#define LC_TIME_MASK LC_TIME
+#endif
+
+static inline void switch_to_c_locale(locale_t * tmplocale_p, locale_t * oldlocale_p) {
+#ifndef BAD_LOCALE_HACK
+ *tmplocale_p = newlocale(LC_NUMERIC_MASK, "C", NULL);
+ if (*tmplocale_p == NULL) fprintf(stderr, "Failed to create temporary locale.\n");
+ else if ((*oldlocale_p = uselocale(*tmplocale_p)) == NULL) {
+ fprintf(stderr, "Failed to change locale.\n");
+ freelocale(*tmplocale_p); *tmplocale_p = NULL;
+ }
+#else
+ // Yes, it is dirty. But so is an operating system that doesn't support threaded locales.
+ *oldlocale_p = (locale_t)copy(setlocale(LC_NUMERIC_MASK, "C"));
+ if (*oldlocale_p == NULL) fprintf(stderr, "Failed to change locale.\n");
+#endif
+}
+
+static inline void switch_to_old_locale(locale_t * tmplocale_p, locale_t * oldlocale_p) {
+#ifndef BAD_LOCALE_HACK
+ if (*oldlocale_p != NULL) { uselocale(*oldlocale_p); } else { uselocale(LC_GLOBAL_LOCALE); }
+ *oldlocale_p = NULL; // This ends the lifecycle of the temporary old locale storage.
+ if (*tmplocale_p != NULL) { freelocale(*tmplocale_p); *tmplocale_p = NULL; }
+#else
+ if (*oldlocale_p != NULL) {
+ setlocale(LC_NUMERIC_MASK, (char*)(*oldlocale_p));
+ free((char*)(*oldlocale_p));
+ *oldlocale_p = NULL;
+ }
+#endif
+}
+
+#if 0
+#define DECLARE_TEMP_LOCALE() char oldloc[25];
+#define SWITCH_TO_C_LOCALE() strncpy( oldloc,setlocale(LC_NUMERIC,NULL),24 ); oldloc[24]='\0'; setlocale(LC_NUMERIC,"C");
+#define SWITCH_TO_OLD_LOCALE() setlocale(LC_NUMERIC,oldloc);
+#else
+#define DECLARE_TEMP_LOCALE() locale_t tmplocale; locale_t oldlocale; // Declare temporary locale storage.
+#define SWITCH_TO_C_LOCALE() switch_to_c_locale(&tmplocale, &oldlocale); // Switch to the C locale temporarily and cache the old locale.
+#define SWITCH_TO_OLD_LOCALE() switch_to_old_locale(&tmplocale, &oldlocale); // Switch to the cached locale.
+#endif
+
+
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineorder2.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineorder2.c
new file mode 100644
index 00000000000..2e6ad93bff6
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineorder2.c
@@ -0,0 +1,1523 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include <math.h>
+
+#ifdef HAVE_IEEEFP_H
+# include <ieeefp.h> /* Solaris defines isnan in ieeefp rather than math.h */
+#endif
+
+/* This file contains utility routines for second order bezier splines */
+/* (ie. truetype) */
+/* The most interesting thing */
+/* it does is to figure out a quadratic approximation to the cubic splines */
+/* that postscript uses. We do this by looking at each spline and running */
+/* from the end toward the beginning, checking approximately every emunit */
+/* There is only one quadratic spline possible for any given interval of the */
+/* cubic. The start and end points are the interval end points (obviously) */
+/* the control point is where the two slopes (at start and end) intersect. */
+/* If this spline is a close approximation to the cubic spline (doesn't */
+/* deviate from it by more than an emunit or so), then we use this interval */
+/* as one of our quadratic splines. */
+/* It may turn out that the "quadratic" spline above is actually linear. Well */
+/* that's ok. It may also turn out that we can't find a good approximation. */
+/* If that's true then just insert a linear segment for an emunit stretch. */
+/* (actually this failure mode may not be possible), but I'm not sure */
+/* Then we play the same trick for the rest of the cubic spline (if any) */
+
+/* Does the quadratic spline in ttf approximate the cubic spline in ps */
+/* within one pixel between tmin and tmax (on ps. presumably ttf between 0&1 */
+/* dim is the dimension in which there is the greatest change */
+static int comparespline(Spline *ps, Spline *ttf, real tmin, real tmax, real err) {
+ int dim=0, other;
+ real dx, dy, ddim, dt, t;
+ real d, o;
+ real ttf_t, sq, val;
+ DBounds bb;
+ extended ts[3];
+ int i;
+
+ /* Are all points on ttf near points on ps? */
+ /* This doesn't answer that question, but rules out gross errors */
+ bb.minx = bb.maxx = ps->from->me.x; bb.miny = bb.maxy = ps->from->me.y;
+ if ( ps->from->nextcp.x>bb.maxx ) bb.maxx = ps->from->nextcp.x;
+ else bb.minx = ps->from->nextcp.x;
+ if ( ps->from->nextcp.y>bb.maxy ) bb.maxy = ps->from->nextcp.y;
+ else bb.miny = ps->from->nextcp.y;
+ if ( ps->to->prevcp.x>bb.maxx ) bb.maxx = ps->to->prevcp.x;
+ else if ( ps->to->prevcp.x<bb.minx ) bb.minx = ps->to->prevcp.x;
+ if ( ps->to->prevcp.y>bb.maxy ) bb.maxy = ps->to->prevcp.y;
+ else if ( ps->to->prevcp.y<bb.miny ) bb.miny = ps->to->prevcp.y;
+ if ( ps->to->me.x>bb.maxx ) bb.maxx = ps->to->me.x;
+ else if ( ps->to->me.x<bb.minx ) bb.minx = ps->to->me.x;
+ if ( ps->to->me.y>bb.maxy ) bb.maxy = ps->to->me.y;
+ else if ( ps->to->me.y<bb.miny ) bb.miny = ps->to->me.y;
+ for ( t=.1; t<1; t+= .1 ) {
+ d = (ttf->splines[0].b*t+ttf->splines[0].c)*t+ttf->splines[0].d;
+ o = (ttf->splines[1].b*t+ttf->splines[1].c)*t+ttf->splines[1].d;
+ if ( d<bb.minx || d>bb.maxx || o<bb.miny || o>bb.maxy )
+return( false );
+ }
+
+ /* Are all points on ps near points on ttf? */
+ dx = ((ps->splines[0].a*tmax+ps->splines[0].b)*tmax+ps->splines[0].c)*tmax -
+ ((ps->splines[0].a*tmin+ps->splines[0].b)*tmin+ps->splines[0].c)*tmin ;
+ dy = ((ps->splines[1].a*tmax+ps->splines[1].b)*tmax+ps->splines[1].c)*tmax -
+ ((ps->splines[1].a*tmin+ps->splines[1].b)*tmin+ps->splines[1].c)*tmin ;
+ if ( dx<0 ) dx = -dx;
+ if ( dy<0 ) dy = -dy;
+ if ( dx>dy ) {
+ dim = 0;
+ ddim = dx;
+ } else {
+ dim = 1;
+ ddim = dy;
+ }
+ other = !dim;
+
+ t = tmin;
+ dt = (tmax-tmin)/ddim;
+ for ( t=tmin; t<=tmax; t+= dt ) {
+ if ( t>tmax-dt/8. ) t = tmax; /* Avoid rounding errors */
+ d = ((ps->splines[dim].a*t+ps->splines[dim].b)*t+ps->splines[dim].c)*t+ps->splines[dim].d;
+ o = ((ps->splines[other].a*t+ps->splines[other].b)*t+ps->splines[other].c)*t+ps->splines[other].d;
+ if ( ttf->splines[dim].b == 0 ) {
+ ttf_t = (d-ttf->splines[dim].d)/ttf->splines[dim].c;
+ } else {
+ sq = ttf->splines[dim].c*ttf->splines[dim].c -
+ 4*ttf->splines[dim].b*(ttf->splines[dim].d-d);
+ if ( sq<0 )
+return( false );
+ sq = sqrt(sq);
+ ttf_t = (-ttf->splines[dim].c-sq)/(2*ttf->splines[dim].b);
+ if ( ttf_t>=-0.1 && ttf_t<=1.1 ) { /* Optimizer gives us rounding errors */
+ /* And tmin/tmax are no longer exact */
+ val = (ttf->splines[other].b*ttf_t+ttf->splines[other].c)*ttf_t+
+ ttf->splines[other].d;
+ if ( val>o-err && val<o+err )
+ continue;
+ }
+ ttf_t = (-ttf->splines[dim].c+sq)/(2*ttf->splines[dim].b);
+ }
+ if ( ttf_t>=-0.1 && ttf_t<=1.1 ) {
+ val = (ttf->splines[other].b*ttf_t+ttf->splines[other].c)*ttf_t+
+ ttf->splines[other].d;
+ if ( val>o-err && val<o+err )
+ continue;
+ }
+return( false );
+ }
+
+ /* Are representative points on ttf near points on ps? */
+ for ( t=.125; t<1; t+= .125 ) {
+ d = (ttf->splines[dim].b*t+ttf->splines[dim].c)*t+ttf->splines[dim].d;
+ o = (ttf->splines[other].b*t+ttf->splines[other].c)*t+ttf->splines[other].d;
+ CubicSolve(&ps->splines[dim],d,ts);
+ for ( i=0; i<3; ++i ) if ( ts[i]!=-1 ) {
+ val = ((ps->splines[other].a*ts[i]+ps->splines[other].b)*ts[i]+ps->splines[other].c)*ts[i]+ps->splines[other].d;
+ if ( val>o-err && val<o+err )
+ break;
+ }
+ if ( i==3 )
+return( false );
+ }
+
+return( true );
+}
+
+static SplinePoint *MakeQuadSpline(SplinePoint *start,Spline *ttf,real x,
+ real y, real tmax,SplinePoint *oldend) {
+ Spline *new = chunkalloc(sizeof(Spline));
+ SplinePoint *end = chunkalloc(sizeof(SplinePoint));
+
+ if ( tmax==1 ) {
+ end->roundx = oldend->roundx; end->roundy = oldend->roundy; end->dontinterpolate = oldend->dontinterpolate;
+ x = oldend->me.x; y = oldend->me.y; /* Want it to compare exactly */
+ }
+ end->ttfindex = 0xfffe;
+ end->nextcpindex = 0xfffe;
+ end->me.x = end->nextcp.x = x;
+ end->me.y = end->nextcp.y = y;
+ end->nonextcp = true;
+
+ *new = *ttf;
+ new->from = start; start->next = new;
+ new->to = end; end->prev = new;
+ if ( new->splines[0].b==0 && new->splines[1].b==0 ) {
+ end->noprevcp = true;
+ end->prevcp.x = x; end->prevcp.y = y;
+ new->islinear = new->knownlinear = true;
+ } else {
+ end->prevcp.x = start->nextcp.x = ttf->splines[0].c/2+ttf->splines[0].d;
+ end->prevcp.y = start->nextcp.y = ttf->splines[1].c/2+ttf->splines[1].d;
+ start->nonextcp = end->noprevcp = false;
+ new->isquadratic = true;
+ }
+ new->order2 = true;
+return( end );
+}
+
+static int buildtestquads(Spline *ttf,real xmin,real ymin,real cx,real cy,
+ real x,real y,real tmin,real t,real err,Spline *ps, DBounds *psbb) {
+ real fudge, normal, para;
+ BasePoint segdir, cpdir;
+
+ /* test the control points are reasonable */
+ fudge = (psbb->maxx-psbb->minx) + (psbb->maxy-psbb->miny);
+ if ( cx<psbb->minx-fudge || cx>psbb->maxx+fudge )
+return( false );
+ if ( cy<psbb->miny-fudge || cy>psbb->maxy+fudge )
+return( false );
+
+ segdir.x = x-xmin; segdir.y = y-ymin;
+ cpdir.x = cx-xmin; cpdir.y = cy-ymin;
+ para = segdir.x*cpdir.x + segdir.y*cpdir.y;
+ if ( (normal = segdir.x*cpdir.y - segdir.y*cpdir.x)<0 )
+ normal=-normal;
+ if ( para<0 && -para >4*normal )
+return( false );
+ cpdir.x = x-cx; cpdir.y = y-cy;
+ para = segdir.x*cpdir.x + segdir.y*cpdir.y;
+ if ( (normal = segdir.x*cpdir.y - segdir.y*cpdir.x)<0 )
+ normal=-normal;
+ if ( para<0 && -para >4*normal )
+return( false );
+
+ ttf->splines[0].d = xmin;
+ ttf->splines[0].c = 2*(cx-xmin);
+ ttf->splines[0].b = xmin+x-2*cx;
+ ttf->splines[1].d = ymin;
+ ttf->splines[1].c = 2*(cy-ymin);
+ ttf->splines[1].b = ymin+y-2*cy;
+ if ( comparespline(ps,ttf,tmin,t,err) )
+return( true );
+
+return( false );
+}
+
+static SplinePoint *LinearSpline(Spline *ps,SplinePoint *start, real tmax) {
+ real x,y;
+ Spline *new = chunkalloc(sizeof(Spline));
+ SplinePoint *end = chunkalloc(sizeof(SplinePoint));
+
+ x = ((ps->splines[0].a*tmax+ps->splines[0].b)*tmax+ps->splines[0].c)*tmax+ps->splines[0].d;
+ y = ((ps->splines[1].a*tmax+ps->splines[1].b)*tmax+ps->splines[1].c)*tmax+ps->splines[1].d;
+ if ( tmax==1 ) {
+ SplinePoint *oldend = ps->to;
+ end->roundx = oldend->roundx; end->roundy = oldend->roundy; end->dontinterpolate = oldend->dontinterpolate;
+ x = oldend->me.x; y = oldend->me.y; /* Want it to compare exactly */
+ }
+ end->ttfindex = 0xfffe;
+ end->nextcpindex = 0xfffe;
+ end->me.x = end->nextcp.x = end->prevcp.x = x;
+ end->me.y = end->nextcp.y = end->prevcp.y = y;
+ end->nonextcp = end->noprevcp = start->nonextcp = true;
+ new->from = start; start->next = new;
+ new->to = end; end->prev = new;
+ new->splines[0].d = start->me.x;
+ new->splines[0].c = (x-start->me.x);
+ new->splines[1].d = start->me.y;
+ new->splines[1].c = (y-start->me.y);
+ new->order2 = true;
+ new->islinear = new->knownlinear = true;
+return( end );
+}
+
+static SplinePoint *_ttfapprox(Spline *ps,real tmin, real tmax, SplinePoint *start) {
+ real dx, dy, ddim, dt, t, err;
+ real x,y, xmin, ymin;
+ real dxdtmin, dydtmin, dxdt, dydt;
+ SplinePoint *sp;
+ real cx, cy;
+ Spline ttf;
+ int cnt = -1, forceit;
+ BasePoint end, rend, dend;
+ DBounds bb;
+
+ rend.x = ((ps->splines[0].a*tmax+ps->splines[0].b)*tmax+ps->splines[0].c)*tmax + ps->splines[0].d;
+ rend.y = ((ps->splines[1].a*tmax+ps->splines[1].b)*tmax+ps->splines[1].c)*tmax + ps->splines[1].d;
+ end.x = rint( rend.x );
+ end.y = rint( rend.y );
+ dend.x = (3*ps->splines[0].a*tmax+2*ps->splines[0].b)*tmax+ps->splines[0].c;
+ dend.y = (3*ps->splines[1].a*tmax+2*ps->splines[1].b)*tmax+ps->splines[1].c;
+ memset(&ttf,'\0',sizeof(ttf));
+
+ bb.minx = bb.maxx = ps->from->me.x;
+ if ( ps->from->nextcp.x > bb.maxx ) bb.maxx = ps->from->nextcp.x;
+ else if ( ps->from->nextcp.x < bb.minx ) bb.minx = ps->from->nextcp.x;
+ if ( ps->to->prevcp.x > bb.maxx ) bb.maxx = ps->to->prevcp.x;
+ else if ( ps->to->prevcp.x < bb.minx ) bb.minx = ps->to->prevcp.x;
+ if ( ps->to->me.x > bb.maxx ) bb.maxx = ps->to->me.x;
+ else if ( ps->to->me.x < bb.minx ) bb.minx = ps->to->me.x;
+ bb.miny = bb.maxy = ps->from->me.y;
+ if ( ps->from->nextcp.y > bb.maxy ) bb.maxy = ps->from->nextcp.y;
+ else if ( ps->from->nextcp.y < bb.miny ) bb.miny = ps->from->nextcp.y;
+ if ( ps->to->prevcp.y > bb.maxy ) bb.maxy = ps->to->prevcp.y;
+ else if ( ps->to->prevcp.y < bb.miny ) bb.miny = ps->to->prevcp.y;
+ if ( ps->to->me.y > bb.maxy ) bb.maxy = ps->to->me.y;
+ else if ( ps->to->me.y < bb.miny ) bb.miny = ps->to->me.y;
+
+ tail_recursion:
+ ++cnt;
+
+ xmin = start->me.x;
+ ymin = start->me.y;
+ dxdtmin = (3*ps->splines[0].a*tmin+2*ps->splines[0].b)*tmin + ps->splines[0].c;
+ dydtmin = (3*ps->splines[1].a*tmin+2*ps->splines[1].b)*tmin + ps->splines[1].c;
+
+ dx = ((ps->splines[0].a*tmax+ps->splines[0].b)*tmax+ps->splines[0].c)*tmax -
+ ((ps->splines[0].a*tmin+ps->splines[0].b)*tmin+ps->splines[0].c)*tmin ;
+ dy = ((ps->splines[1].a*tmax+ps->splines[1].b)*tmax+ps->splines[1].c)*tmax -
+ ((ps->splines[1].a*tmin+ps->splines[1].b)*tmin+ps->splines[1].c)*tmin ;
+ if ( dx<0 ) dx = -dx;
+ if ( dy<0 ) dy = -dy;
+ if ( dx>dy ) {
+ ddim = dx;
+ } else {
+ ddim = dy;
+ }
+ if (( err = ddim/3000 )<1 ) err = 1;
+
+ if ( ddim<2 ||
+ (dend.x==0 && rint(start->me.x)==end.x && dy<=10 && cnt!=0) ||
+ (dend.y==0 && rint(start->me.y)==end.y && dx<=10 && cnt!=0) ) {
+ if ( cnt==0 || start->noprevcp )
+return( LinearSpline(ps,start,tmax));
+ /* If the end point is very close to where we want to be, then just */
+ /* pretend it's right */
+ start->prev->splines[0].b += ps->to->me.x-start->me.x;
+ start->prev->splines[1].b += ps->to->me.y-start->me.y;
+ start->prevcp.x += rend.x-start->me.x;
+ start->prevcp.y += rend.y-start->me.y;
+ if ( start->prev!=NULL && !start->prev->from->nonextcp )
+ start->prev->from->nextcp = start->prevcp;
+ start->me = rend;
+return( start );
+ }
+
+ dt = (tmax-tmin)/ddim;
+ forceit = false;
+/* force_end: */
+ for ( t=tmax; t>tmin+dt/128; t-= dt ) { /* dt/128 is a hack to avoid rounding errors */
+ x = ((ps->splines[0].a*t+ps->splines[0].b)*t+ps->splines[0].c)*t+ps->splines[0].d;
+ y = ((ps->splines[1].a*t+ps->splines[1].b)*t+ps->splines[1].c)*t+ps->splines[1].d;
+ dxdt = (3*ps->splines[0].a*t+2*ps->splines[0].b)*t + ps->splines[0].c;
+ dydt = (3*ps->splines[1].a*t+2*ps->splines[1].b)*t + ps->splines[1].c;
+ /* if the slopes are parallel at the ends there can be no bezier quadratic */
+ /* (control point is where the splines intersect. But if they are */
+ /* parallel and colinear then there is a line between 'em */
+ if ( ( dxdtmin==0 && dxdt==0 ) || (dydtmin==0 && dydt==0) ||
+ ( dxdt!=0 && dxdtmin!=0 &&
+ RealNearish(dydt/dxdt,dydtmin/dxdtmin)) )
+ continue;
+
+ if ( dxdt==0 )
+ cx=x;
+ else if ( dxdtmin==0 )
+ cx=xmin;
+ else
+ cx = -(ymin-(dydtmin/dxdtmin)*xmin-y+(dydt/dxdt)*x)/(dydtmin/dxdtmin-dydt/dxdt);
+ if ( dydt==0 )
+ cy=y;
+ else if ( dydtmin==0 )
+ cy=ymin;
+ else
+ cy = -(xmin-(dxdtmin/dydtmin)*ymin-x+(dxdt/dydt)*y)/(dxdtmin/dydtmin-dxdt/dydt);
+ /* Make the quadratic spline from (xmin,ymin) through (cx,cy) to (x,y)*/
+ if ( forceit || buildtestquads(&ttf,xmin,ymin,cx,cy,x,y,tmin,t,err,ps,&bb)) {
+ sp = MakeQuadSpline(start,&ttf,x,y,t,ps->to);
+ forceit = false;
+ if ( t==tmax )
+return( sp );
+ tmin = t;
+ start = sp;
+ goto tail_recursion;
+ }
+ ttf.splines[0].d = xmin;
+ ttf.splines[0].c = x-xmin;
+ ttf.splines[0].b = 0;
+ ttf.splines[1].d = ymin;
+ ttf.splines[1].c = y-ymin;
+ ttf.splines[1].b = 0;
+ if ( comparespline(ps,&ttf,tmin,t,err) ) {
+ sp = LinearSpline(ps,start,t);
+ if ( t==tmax )
+return( sp );
+ tmin = t;
+ start = sp;
+ goto tail_recursion;
+ }
+ }
+ tmin += dt;
+ start = LinearSpline(ps,start,tmin);
+ goto tail_recursion;
+}
+
+static SplinePoint *__ttfApprox(Spline *ps,real tmin, real tmax, SplinePoint *start) {
+ extended inflect[2];
+ int i=0;
+ SplinePoint *end;
+ Spline *s, *next;
+
+ end = _ttfapprox(ps,tmin,tmax,start);
+ if ( ps->knownlinear )
+return( end );
+ for ( s=start->next; s!=NULL && !s->islinear; s=s->to->next );
+ if ( s==NULL )
+return( end );
+ for ( s=start->next; s!=NULL ; s=next ) {
+ next = s->to->next;
+ SplinePointFree(s->to);
+ SplineFree(s);
+ }
+/* Hmm. With my algorithem, checking for points of inflection actually makes */
+/* things worse. It uses more points and the splines don't join as nicely */
+/* However if we get a bad match (a line) in the normal approx, then check */
+/* Err... I was computing POI incorrectly. Above statement might not be correct*/
+ /* no points of inflection in quad splines */
+
+ i = Spline2DFindPointsOfInflection(ps, inflect);
+ if ( i==2 ) {
+ if ( RealNearish(inflect[0],inflect[1]) )
+ --i;
+ else if ( inflect[0]>inflect[1] ) {
+ real temp = inflect[0];
+ inflect[0] = inflect[1];
+ inflect[1] = temp;
+ }
+ }
+ if ( i!=0 ) {
+ start = _ttfapprox(ps,tmin,inflect[0],start);
+ tmin = inflect[0];
+ if ( i==2 ) {
+ start = _ttfapprox(ps,tmin,inflect[1],start);
+ tmin = inflect[1];
+ }
+ }
+return( _ttfapprox(ps,tmin,tmax,start));
+}
+
+#if !defined(FONTFORGE_CONFIG_NON_SYMMETRIC_QUADRATIC_CONVERSION)
+typedef struct qpoint {
+ BasePoint bp;
+ BasePoint cp;
+ bigreal t;
+} QPoint;
+
+static int comparedata(Spline *ps,QPoint *data,int qfirst,int qlast,
+ int round_to_int, int test_level ) {
+ Spline ttf;
+ int i;
+ bigreal err = round_to_int ? 1.5 : 1;
+
+ if ( qfirst==qlast ) /* happened (was a bug) */
+return( false );
+
+ err *= (test_level+1);
+
+ /* Control points diametrically opposed */
+ if ( (data[qlast-2].cp.x-ps->to->me.x)*(ps->to->prevcp.x-ps->to->me.x) +
+ (data[qlast-2].cp.y-ps->to->me.y)*(ps->to->prevcp.y-ps->to->me.y)<0 )
+return( false );
+ if ( (data[qfirst-1].cp.x-ps->from->me.x)*(ps->from->nextcp.x-ps->from->me.x) +
+ (data[qfirst-1].cp.y-ps->from->me.y)*(ps->from->nextcp.y-ps->from->me.y)<0 )
+return( false );
+
+ memset(&ttf,0,sizeof(ttf));
+ for ( i=qfirst; i<qlast; ++i ) {
+ ttf.splines[0].d = data[i-1].bp.x;
+ ttf.splines[0].c = 2*(data[i-1].cp.x-data[i-1].bp.x);
+ ttf.splines[0].b = data[i-1].bp.x+data[i].bp.x-2*data[i-1].cp.x;
+ ttf.splines[1].d = data[i-1].bp.y;
+ ttf.splines[1].c = 2*(data[i-1].cp.y-data[i-1].bp.y);
+ ttf.splines[1].b = data[i-1].bp.y+data[i].bp.y-2*data[i-1].cp.y;
+ if ( !comparespline(ps,&ttf,data[i-1].t,data[i].t,err) )
+return( false );
+ }
+return( true );
+}
+
+static SplinePoint *CvtDataToSplines(QPoint *data,int qfirst,int qlast,SplinePoint *start) {
+ SplinePoint *end;
+ int i;
+
+ for ( i=qfirst; i<qlast; ++i ) {
+ end = SplinePointCreate(data[i].bp.x,data[i].bp.y);
+ start->nextcp = end->prevcp = data[i-1].cp;
+ start->nonextcp = end->noprevcp = false;
+ if (( data[i-1].cp.x == data[i].bp.x && data[i-1].cp.y == data[i].bp.y ) ||
+ ( data[i-1].cp.x == start->me.x && data[i-1].cp.y == start->me.y ))
+ start->nonextcp = end->noprevcp = true;
+ SplineMake2(start,end);
+ start = end;
+ }
+return( start );
+}
+
+static int SplineWithWellBehavedControlPoints(Spline *ps) {
+ BasePoint splineunit;
+ bigreal splinelen, npos, ppos;
+
+ splineunit.x = ps->to->me.x - ps->from->me.x;
+ splineunit.y = ps->to->me.y - ps->from->me.y;
+ splinelen = sqrt(splineunit.x*splineunit.x + splineunit.y*splineunit.y);
+ if ( splinelen!=0 ) {
+ splineunit.x /= splinelen;
+ splineunit.y /= splinelen;
+ }
+
+ npos = (ps->from->nextcp.x-ps->from->me.x) * splineunit.x +
+ (ps->from->nextcp.y-ps->from->me.y) * splineunit.y;
+ ppos = (ps->to->prevcp.x-ps->from->me.x) * splineunit.x +
+ (ps->to->prevcp.y-ps->from->me.y) * splineunit.y;
+return( npos>=0 && /* npos<=ppos &&*/ ppos<=splinelen );
+}
+
+static int PrettyApprox(Spline *ps,bigreal tmin, bigreal tmax,
+ QPoint *data, int qcnt, int round_to_int, int test_level ) {
+ int ptcnt, q, i;
+ bigreal distance, dx, dy, tstart;
+ BasePoint end, mid, slopemin, slopemid, slopeend;
+ BasePoint splineunit, start;
+ bigreal splinelen, midpos, lastpos, lastpos2, cppos;
+ int do_good_spline_check;
+ QPoint data2[12];
+
+ if ( qcnt==-1 )
+return( -1 );
+
+ slopemin.x = (3*ps->splines[0].a*tmin+2*ps->splines[0].b)*tmin+ps->splines[0].c;
+ slopemin.y = (3*ps->splines[1].a*tmin+2*ps->splines[1].b)*tmin+ps->splines[1].c;
+ if ( slopemin.x==0 && slopemin.y==0 ) {
+ bigreal t = tmin + (tmax-tmin)/256;
+ /* If there is no control point for this end point, then the slope is */
+ /* 0/0 at the end point. Which isn't useful, it leads to a quadratic */
+ /* control point at the end point, but this one is real because it */
+ /* is used to interpolate the next point, but we get all confused */
+ /* because we don't expect a real cp to be on the base point. */
+ slopemin.x = (3*ps->splines[0].a*t+2*ps->splines[0].b)*t+ps->splines[0].c;
+ slopemin.y = (3*ps->splines[1].a*t+2*ps->splines[1].b)*t+ps->splines[1].c;
+ }
+
+ end.x = ((ps->splines[0].a*tmax+ps->splines[0].b)*tmax+ps->splines[0].c)*tmax+ps->splines[0].d;
+ end.y = ((ps->splines[1].a*tmax+ps->splines[1].b)*tmax+ps->splines[1].c)*tmax+ps->splines[1].d;
+ slopeend.x = (3*ps->splines[0].a*tmax+2*ps->splines[0].b)*tmax+ps->splines[0].c;
+ slopeend.y = (3*ps->splines[1].a*tmax+2*ps->splines[1].b)*tmax+ps->splines[1].c;
+ if ( slopemin.x==0 && slopemin.y==0 ) {
+ bigreal t = tmax - (tmax-tmin)/256;
+ /* Same problem as above, except at the other end */
+ slopeend.x = (3*ps->splines[0].a*t+2*ps->splines[0].b)*t+ps->splines[0].c;
+ slopeend.y = (3*ps->splines[1].a*t+2*ps->splines[1].b)*t+ps->splines[1].c;
+ }
+
+ start.x = data[qcnt-1].bp.x;
+ start.y = data[qcnt-1].bp.y;
+ splineunit.x = end.x - start.x;
+ splineunit.y = end.y - start.y;
+ splinelen = sqrt(splineunit.x*splineunit.x + splineunit.y*splineunit.y);
+ if ( splinelen!=0 ) {
+ splineunit.x /= splinelen;
+ splineunit.y /= splinelen;
+ }
+ do_good_spline_check = SplineWithWellBehavedControlPoints(ps);
+
+ if ( round_to_int && tmax!=1 ) {
+ end.x = rint( end.x );
+ end.y = rint( end.y );
+ }
+
+ dx = end.x-data[qcnt-1].bp.x; dy = end.y-data[qcnt-1].bp.y;
+ distance = dx*dx + dy*dy;
+
+ if ( distance<.3 ) {
+ /* This is meaningless in truetype, use a line */
+ data[qcnt-1].cp = data[qcnt-1].bp;
+ data[qcnt].bp = end;
+ data[qcnt].t = 1;
+return( qcnt+1 );
+ }
+
+ for ( ptcnt=0; ptcnt<10; ++ptcnt ) {
+ if ( ptcnt>1 && distance/(ptcnt*ptcnt)<16 )
+return( -1 ); /* Points too close for a good approx */
+ q = qcnt;
+ data2[ptcnt+1].bp = end;
+ lastpos=0; lastpos2 = splinelen;
+ for ( i=0; i<=ptcnt; ++i ) {
+ tstart = (tmin*(ptcnt-i) + tmax*(i+1))/(ptcnt+1);
+ mid.x = ((ps->splines[0].a*tstart+ps->splines[0].b)*tstart+ps->splines[0].c)*tstart+ps->splines[0].d;
+ mid.y = ((ps->splines[1].a*tstart+ps->splines[1].b)*tstart+ps->splines[1].c)*tstart+ps->splines[1].d;
+ if ( i==0 ) {
+ slopemid.x = (3*ps->splines[0].a*tstart+2*ps->splines[0].b)*tstart+ps->splines[0].c;
+ slopemid.y = (3*ps->splines[1].a*tstart+2*ps->splines[1].b)*tstart+ps->splines[1].c;
+ if ( slopemid.x==0 )
+ data[q-1].cp.x=mid.x;
+ else if ( slopemin.x==0 )
+ data[q-1].cp.x=data[q-1].bp.x;
+ else if ( RealNear(slopemin.y/slopemin.x,slopemid.y/slopemid.x) )
+ break;
+ else
+ data[q-1].cp.x = -(data[q-1].bp.y-(slopemin.y/slopemin.x)*data[q-1].bp.x-mid.y+(slopemid.y/slopemid.x)*mid.x)/(slopemin.y/slopemin.x-slopemid.y/slopemid.x);
+ if ( slopemid.y==0 )
+ data[q-1].cp.y=mid.y;
+ else if ( slopemin.y==0 )
+ data[q-1].cp.y=data[q-1].bp.y;
+ else if ( RealNear(slopemin.x/slopemin.y,slopemid.x/slopemid.y) )
+ break;
+ else
+ data[q-1].cp.y = -(data[q-1].bp.x-(slopemin.x/slopemin.y)*data[q-1].bp.y-mid.x+(slopemid.x/slopemid.y)*mid.y)/(slopemin.x/slopemin.y-slopemid.x/slopemid.y);
+ } else {
+ data[q-1].cp.x = 2*data[q-1].bp.x - data[q-2].cp.x;
+ data[q-1].cp.y = 2*data[q-1].bp.y - data[q-2].cp.y;
+ }
+
+ midpos = (mid.x-start.x)*splineunit.x + (mid.y-start.y)*splineunit.y;
+ cppos = (data[q-1].cp.x-start.x)*splineunit.x + (data[q-1].cp.y-start.y)*splineunit.y;
+
+ if ( ((do_good_spline_check || i!=0 ) && cppos<lastpos) || cppos>midpos ) {
+ i = 0; /* Means we failed */
+ break;
+ }
+ lastpos = midpos;
+
+ data[q].bp = mid;
+ data[q++].t = tstart;
+
+ tstart = (tmax*(ptcnt-i) + tmin*(i+1))/(ptcnt+1);
+ mid.x = ((ps->splines[0].a*tstart+ps->splines[0].b)*tstart+ps->splines[0].c)*tstart+ps->splines[0].d;
+ mid.y = ((ps->splines[1].a*tstart+ps->splines[1].b)*tstart+ps->splines[1].c)*tstart+ps->splines[1].d;
+ if ( i==0 ) {
+ slopemid.x = (3*ps->splines[0].a*tstart+2*ps->splines[0].b)*tstart+ps->splines[0].c;
+ slopemid.y = (3*ps->splines[1].a*tstart+2*ps->splines[1].b)*tstart+ps->splines[1].c;
+ if ( slopemid.x==0 )
+ data2[ptcnt-i].cp.x=mid.x;
+ else if ( slopeend.x==0 )
+ data2[ptcnt-i].cp.x=data2[ptcnt-i+1].bp.x;
+ else if ( RealNear(slopeend.y/slopeend.x,slopemid.y/slopemid.x) )
+ break;
+ else
+ data2[ptcnt-i].cp.x = -(data2[ptcnt-i+1].bp.y-(slopeend.y/slopeend.x)*data2[ptcnt-i+1].bp.x-mid.y+(slopemid.y/slopemid.x)*mid.x)/(slopeend.y/slopeend.x-slopemid.y/slopemid.x);
+ if ( slopemid.y==0 )
+ data2[ptcnt-i].cp.y=mid.y;
+ else if ( slopeend.y==0 )
+ data2[ptcnt-i].cp.y=data2[ptcnt-i+1].bp.y;
+ else if ( RealNear(slopeend.x/slopeend.y,slopemid.x/slopemid.y) )
+ break;
+ else
+ data2[ptcnt-i].cp.y = -(data2[ptcnt-i+1].bp.x-(slopeend.x/slopeend.y)*data2[ptcnt-i+1].bp.y-mid.x+(slopemid.x/slopemid.y)*mid.y)/(slopeend.x/slopeend.y-slopemid.x/slopemid.y);
+ } else {
+ data2[ptcnt-i].cp.x = 2*data2[ptcnt-i+1].bp.x - data2[ptcnt-i+1].cp.x;
+ data2[ptcnt-i].cp.y = 2*data2[ptcnt-i+1].bp.y - data2[ptcnt-i+1].cp.y;
+ }
+ data2[ptcnt-i].bp = mid;
+
+ midpos = (mid.x-start.x)*splineunit.x + (mid.y-start.y)*splineunit.y;
+ cppos = (data2[ptcnt-i].cp.x-start.x)*splineunit.x + (data2[ptcnt-i].cp.y-start.y)*splineunit.y;
+ if ( ((do_good_spline_check || i!=0 ) && cppos>lastpos2) || cppos<midpos ) {
+ i = 0; /* Means we failed */
+ break;
+ }
+ lastpos2 = midpos;
+
+ }
+ if ( i==0 )
+ continue;
+ if ( (data2[ptcnt+1].bp.x-data2[ptcnt].bp.x)*(data2[ptcnt].cp.x-data2[ptcnt].bp.x)<0 ||
+ (data2[ptcnt+1].bp.y-data2[ptcnt].bp.y)*(data2[ptcnt].cp.y-data2[ptcnt].bp.y)<0 ) {
+ /* data2 are bad ... don't use them */;
+ } else if ( (data[qcnt-1].bp.x-data[qcnt].bp.x)*(data[qcnt-1].cp.x-data[qcnt].bp.x)<0 ||
+ (data[qcnt-1].bp.y-data[qcnt].bp.y)*(data[qcnt-1].cp.y-data[qcnt].bp.y)<0 ) {
+ /* data are bad */;
+ for ( i=0; i<=ptcnt; ++i ) {
+ data[qcnt+i-1].cp = data2[i].cp;
+ data[qcnt+i-1].bp = data2[i].bp;
+ }
+ } else {
+ for ( i=0; i<=ptcnt; ++i ) {
+ if ( ptcnt!=0 ) {
+ data[qcnt+i-1].cp.x = (data[qcnt+i-1].cp.x*(ptcnt-i) + data2[i].cp.x*i)/ptcnt;
+ data[qcnt+i-1].cp.y = (data[qcnt+i-1].cp.y*(ptcnt-i) + data2[i].cp.y*i)/ptcnt;
+ }
+ }
+ }
+ if ( round_to_int ) {
+ for ( i=0; i<=ptcnt; ++i ) {
+ data[qcnt+i-1].cp.x = rint( data[qcnt+i-1].cp.x );
+ data[qcnt+i-1].cp.y = rint( data[qcnt+i-1].cp.y );
+ }
+ }
+ for ( i=0; i<ptcnt; ++i ) {
+ data[qcnt+i].bp.x = (data[qcnt+i].cp.x + data[qcnt+i-1].cp.x)/2;
+ data[qcnt+i].bp.y = (data[qcnt+i].cp.y + data[qcnt+i-1].cp.y)/2;
+ }
+ if ( comparedata(ps,data,qcnt,q,round_to_int,test_level))
+return( q );
+ }
+return( -1 );
+}
+#endif
+
+static SplinePoint *AlreadyQuadraticCheck(Spline *ps, SplinePoint *start) {
+ SplinePoint *sp;
+
+ if ( (RealNearish(ps->splines[0].a,0) && RealNearish(ps->splines[1].a,0)) ||
+ ((ps->splines[0].b!=0 && RealNearish(ps->splines[0].a/ps->splines[0].b,0)) &&
+ (ps->splines[1].b!=0 && RealNearish(ps->splines[1].a/ps->splines[1].b,0))) ) {
+ /* Already Quadratic, just need to find the control point */
+ /* Or linear, in which case we don't need to do much of anything */
+ Spline *spline;
+ sp = chunkalloc(sizeof(SplinePoint));
+ sp->me.x = ps->to->me.x; sp->me.y = ps->to->me.y;
+ sp->roundx = ps->to->roundx; sp->roundy = ps->to->roundy; sp->dontinterpolate = ps->to->dontinterpolate;
+ sp->ttfindex = 0xfffe;
+ sp->nextcpindex = 0xfffe;
+ sp->nonextcp = true;
+ spline = chunkalloc(sizeof(Spline));
+ spline->order2 = true;
+ spline->from = start;
+ spline->to = sp;
+ spline->splines[0] = ps->splines[0]; spline->splines[1] = ps->splines[1];
+ start->next = sp->prev = spline;
+ if ( ps->knownlinear ) {
+ spline->islinear = spline->knownlinear = true;
+ start->nonextcp = sp->noprevcp = true;
+ start->nextcp = start->me;
+ sp->prevcp = sp->me;
+ } else {
+ start->nonextcp = sp->noprevcp = false;
+ start->nextcp.x = sp->prevcp.x = (ps->splines[0].c+2*ps->splines[0].d)/2;
+ start->nextcp.y = sp->prevcp.y = (ps->splines[1].c+2*ps->splines[1].d)/2;
+ }
+return( sp );
+ }
+return( NULL );
+}
+
+static SplinePoint *ttfApprox(Spline *ps, SplinePoint *start) {
+#if !defined(FONTFORGE_CONFIG_NON_SYMMETRIC_QUADRATIC_CONVERSION)
+ extended magicpoints[6], last;
+ int cnt, i, j, qcnt, test_level;
+ QPoint data[8*10];
+ int round_to_int =
+ /* The end points are at integer points, or one coord is at half while */
+ /* the other is at an integer (ie. condition for ttf interpolated point)*/
+ ((ps->from->me.x==rint(ps->from->me.x) &&
+ ps->from->me.y==rint(ps->from->me.y)) ||
+ (ps->from->me.x==rint(ps->from->me.x) &&
+ ps->from->me.x==ps->from->nextcp.x &&
+ ps->from->me.y!=ps->from->nextcp.y &&
+ 2*ps->from->me.y==rint(2*ps->from->me.y)) ||
+ (ps->from->me.y==rint(ps->from->me.y) &&
+ ps->from->me.y==ps->from->nextcp.y &&
+ ps->from->me.x!=ps->from->nextcp.x &&
+ 2*ps->from->me.x==rint(2*ps->from->me.x)) ) &&
+ ((ps->to->me.x == rint(ps->to->me.x) &&
+ ps->to->me.y == rint(ps->to->me.y)) ||
+ (ps->to->me.x==rint(ps->to->me.x) &&
+ ps->to->me.x==ps->to->prevcp.x &&
+ ps->to->me.y!=ps->to->prevcp.y &&
+ 2*ps->to->me.y==rint(2*ps->to->me.y)) ||
+ (ps->to->me.y==rint(ps->to->me.y) &&
+ ps->to->me.y==ps->to->prevcp.y &&
+ ps->to->me.x!=ps->to->prevcp.x &&
+ 2*ps->to->me.x==rint(2*ps->to->me.x)) );
+#endif
+ SplinePoint *ret;
+/* Divide the spline up at extrema and points of inflection. The first */
+/* because ttf splines should have points at their extrema, the second */
+/* because quadratic splines can't have points of inflection. */
+/* Let's not do the first (extrema) AddExtrema does this better and we */
+/* don't want unneeded extrema. */
+/* And sometimes we don't want to look at the points of inflection either*/
+
+ if (( ret = AlreadyQuadraticCheck(ps,start))!=NULL )
+return( ret );
+
+#if !defined(FONTFORGE_CONFIG_NON_SYMMETRIC_QUADRATIC_CONVERSION)
+ qcnt = 1;
+ data[0].bp = ps->from->me;
+ data[0].t = 0;
+ qcnt = PrettyApprox(ps,0,1,data,qcnt,round_to_int,0);
+ if ( qcnt!=-1 )
+return( CvtDataToSplines(data,1,qcnt,start));
+
+ cnt = 0;
+ /* cnt = Spline2DFindExtrema(ps,magicpoints);*/
+
+ cnt += Spline2DFindPointsOfInflection(ps,magicpoints+cnt);
+
+ /* remove points outside range */
+ for ( i=0; i<cnt; ++i ) {
+ if ( magicpoints[i]<=0 || magicpoints[i]>=1 ) {
+ for ( j=i+1; j<cnt; ++j )
+ magicpoints[j-1] = magicpoints[j];
+ --cnt;
+ --i;
+ }
+ }
+ /* sort points */
+ for ( i=0; i<cnt; ++i ) for ( j=i+1; j<cnt; ++j ) {
+ if ( magicpoints[i]>magicpoints[j] ) {
+ bigreal temp = magicpoints[i];
+ magicpoints[i] = magicpoints[j];
+ magicpoints[j] = temp;
+ }
+ }
+ /* Remove duplicates */
+ for ( i=1; i<cnt; ++i ) {
+ while ( i<cnt && RealNear(magicpoints[i-1],magicpoints[i])) {
+ --cnt;
+ for ( j=i ; j<cnt; ++j )
+ magicpoints[j] = magicpoints[j+1];
+ magicpoints[cnt] = -1;
+ }
+ }
+
+ for ( test_level=0; test_level<3; ++test_level ) {
+ qcnt = 1;
+ last = 0;
+ for ( i=0; i<cnt; ++i ) {
+ qcnt = PrettyApprox(ps,last,magicpoints[i],data,qcnt,round_to_int,test_level);
+ last = magicpoints[i];
+ }
+ qcnt = PrettyApprox(ps,last,1,data,qcnt,round_to_int,test_level);
+ if ( qcnt!=-1 )
+ return( CvtDataToSplines(data,1,qcnt,start));
+ }
+#endif
+
+return( __ttfApprox(ps,0,1,start));
+}
+
+static void ttfCleanup(SplinePoint *from) {
+ SplinePoint *test, *next;
+
+ for ( test = from; test->next!=NULL; test = next ) {
+ next = test->next->to;
+ /* Too close together to be meaningful when output as ttf */
+ if ( rint(test->me.x) == rint(next->me.x) &&
+ rint(test->me.y) == rint(next->me.y) ) {
+ if ( next->next==NULL || next==from ) {
+ if ( test==from )
+ break;
+ next->prevcp = test->prevcp;
+ next->noprevcp = test->noprevcp;
+ next->prev = test->prev;
+ next->prev->to = next;
+ SplineFree(test->next);
+ SplinePointFree(test);
+ } else {
+ test->nextcp = next->nextcp;
+ test->nonextcp = next->nonextcp;
+ test->next = next->next;
+ test->next->from = test;
+ SplineFree(next->prev);
+ SplinePointFree(next);
+ next = test->next->to;
+ }
+ }
+ if ( next==from )
+ break;
+ }
+}
+
+SplineSet *SSttfApprox(SplineSet *ss) {
+ SplineSet *ret = chunkalloc(sizeof(SplineSet));
+ Spline *spline, *first;
+
+ ret->first = chunkalloc(sizeof(SplinePoint));
+ *ret->first = *ss->first;
+ if ( ret->first->hintmask != NULL ) {
+ ret->first->hintmask = chunkalloc(sizeof(HintMask));
+ memcpy(ret->first->hintmask,ss->first->hintmask,sizeof(HintMask));
+ }
+ ret->last = ret->first;
+
+ first = NULL;
+ for ( spline=ss->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) {
+ ret->last = ttfApprox(spline,ret->last);
+ ret->last->ptindex = spline->to->ptindex;
+ ret->last->ttfindex = spline->to->ttfindex;
+ ret->last->nextcpindex = spline->to->nextcpindex;
+ if ( spline->to->hintmask != NULL ) {
+ ret->last->hintmask = chunkalloc(sizeof(HintMask));
+ memcpy(ret->last->hintmask,spline->to->hintmask,sizeof(HintMask));
+ }
+ if ( first==NULL ) first = spline;
+ }
+ if ( ss->first==ss->last ) {
+ if ( ret->last!=ret->first ) {
+ ret->first->prevcp = ret->last->prevcp;
+ ret->first->noprevcp = ret->last->noprevcp;
+ ret->first->prev = ret->last->prev;
+ ret->last->prev->to = ret->first;
+ SplinePointFree(ret->last);
+ ret->last = ret->first;
+ }
+ }
+ ttfCleanup(ret->first);
+ SPLCategorizePoints(ret);
+return( ret );
+}
+
+SplineSet *SplineSetsTTFApprox(SplineSet *ss) {
+ SplineSet *head=NULL, *last, *cur;
+
+ while ( ss!=NULL ) {
+ cur = SSttfApprox(ss);
+ if ( head==NULL )
+ head = cur;
+ else
+ last->next = cur;
+ last = cur;
+ ss = ss->next;
+ }
+return( head );
+}
+
+static void ImproveB3CPForQuadratic(real from,real *_ncp,real *_pcp,real to) {
+ real ncp = *_ncp, pcp = *_pcp;
+ real noff, poff;
+ real c,b, best;
+ int err, i, besti;
+ real offs[9];
+
+ if ( (noff=ncp/32768.0)<0 ) noff = -noff;
+ if ( (poff=pcp/32768.0)<0 ) poff = -poff;
+ if ( noff<1.0/32768.0 ) noff = 1.0/32768.0;
+ if ( poff<1.0/32768.0 ) poff = 1.0/32768.0;
+
+ c = 3*(ncp-from); b = 3*(pcp-ncp)-c; best = to-from-c-b;
+ offs[4] = best;
+ if ( best==0 )
+return;
+
+ for ( err=0; err<10; ++err, noff/=2.0, poff/=2.0 ) {
+ c = 3*(ncp-noff-from); b = 3*(pcp-poff-(ncp-noff))-c; offs[0] = to-from-c-b;
+ c = 3*(ncp-noff-from); b = 3*(pcp -(ncp-noff))-c; offs[1] = to-from-c-b;
+ c = 3*(ncp-noff-from); b = 3*(pcp+poff-(ncp-noff))-c; offs[2] = to-from-c-b;
+ c = 3*(ncp -from); b = 3*(pcp-poff-(ncp ))-c; offs[3] = to-from-c-b;
+ c = 3*(ncp -from); b = 3*(pcp+poff-(ncp ))-c; offs[5] = to-from-c-b;
+ c = 3*(ncp+noff-from); b = 3*(pcp-poff-(ncp+noff))-c; offs[6] = to-from-c-b;
+ c = 3*(ncp+noff-from); b = 3*(pcp -(ncp+noff))-c; offs[7] = to-from-c-b;
+ c = 3*(ncp+noff-from); b = 3*(pcp+poff-(ncp+noff))-c; offs[8] = to-from-c-b;
+ besti=4;
+ for ( i=0; i<9; ++i ) {
+ if ( offs[i]<0 ) offs[i]= - offs[i];
+ if ( offs[i]<best ) {
+ besti = i;
+ best = offs[i];
+ }
+ }
+ if ( besti!=4 ) {
+ if ( besti<3 ) ncp -= noff;
+ else if ( besti>=6 ) ncp += noff;
+ if ( besti%3==0 ) pcp -= poff;
+ else if ( besti%3==2 ) pcp += poff;
+ offs[4] = best;
+ if ( best==0 )
+ break;
+ }
+ }
+ *_ncp = ncp;
+ *_pcp = pcp;
+}
+
+SplineSet *SSPSApprox(SplineSet *ss) {
+ SplineSet *ret = chunkalloc(sizeof(SplineSet));
+ Spline *spline, *first;
+ SplinePoint *to;
+
+ ret->first = chunkalloc(sizeof(SplinePoint));
+ *ret->first = *ss->first;
+ if ( ret->first->hintmask != NULL ) {
+ ret->first->hintmask = chunkalloc(sizeof(HintMask));
+ memcpy(ret->first->hintmask,ss->first->hintmask,sizeof(HintMask));
+ }
+ ret->last = ret->first;
+
+ first = NULL;
+ for ( spline=ss->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) {
+ to = chunkalloc(sizeof(SplinePoint));
+ *to = *spline->to;
+ if ( to->hintmask != NULL ) {
+ to->hintmask = chunkalloc(sizeof(HintMask));
+ memcpy(to->hintmask,spline->to->hintmask,sizeof(HintMask));
+ }
+ if ( !spline->knownlinear ) {
+ ret->last->nextcp.x = ret->last->me.x + 2*(ret->last->nextcp.x-ret->last->me.x)/3;
+ ret->last->nextcp.y = ret->last->me.y + 2*(ret->last->nextcp.y-ret->last->me.y)/3;
+ to->prevcp.x = to->me.x + 2*(to->prevcp.x-to->me.x)/3;
+ to->prevcp.y = to->me.y + 2*(to->prevcp.y-to->me.y)/3;
+ ImproveB3CPForQuadratic(ret->last->me.x,&ret->last->nextcp.x,&to->prevcp.x,to->me.x);
+ ImproveB3CPForQuadratic(ret->last->me.y,&ret->last->nextcp.y,&to->prevcp.y,to->me.y);
+ }
+ SplineMake3(ret->last,to);
+ ret->last = to;
+ if ( first==NULL ) first = spline;
+ }
+ if ( ss->first==ss->last ) {
+ if ( ret->last!=ret->first ) {
+ ret->first->prevcp = ret->last->prevcp;
+ ret->first->noprevcp = ret->last->noprevcp;
+ ret->first->prev = ret->last->prev;
+ ret->last->prev->to = ret->first;
+ SplinePointFree(ret->last);
+ ret->last = ret->first;
+ }
+ }
+ ret->is_clip_path = ss->is_clip_path;
+return( ret );
+}
+
+SplineSet *SplineSetsPSApprox(SplineSet *ss) {
+ SplineSet *head=NULL, *last, *cur;
+
+ while ( ss!=NULL ) {
+ cur = SSPSApprox(ss);
+ if ( head==NULL )
+ head = cur;
+ else
+ last->next = cur;
+ last = cur;
+ ss = ss->next;
+ }
+return( head );
+}
+
+
+void SCConvertLayerToOrder2(SplineChar *sc,int layer) {
+ SplineSet *new;
+
+ if ( sc==NULL )
+return;
+
+ new = SplineSetsTTFApprox(sc->layers[layer].splines);
+ SplinePointListsFree(sc->layers[layer].splines);
+ sc->layers[layer].splines = new;
+
+ sc->layers[layer].order2 = true;
+
+ MinimumDistancesFree(sc->md); sc->md = NULL;
+}
+
+void SCConvertToOrder2(SplineChar *sc) {
+ int layer;
+
+ if ( sc==NULL )
+return;
+
+ for ( layer=ly_back; layer<sc->layer_cnt; ++layer )
+ SCConvertLayerToOrder2(sc,layer);
+}
+
+static void SCConvertRefs(SplineChar *sc,int layer) {
+ RefChar *rf;
+
+ sc->ticked = true;
+ for ( rf=sc->layers[layer].refs; rf!=NULL; rf=rf->next ) {
+ if ( !rf->sc->ticked )
+ SCConvertRefs(rf->sc,layer);
+ SCReinstanciateRefChar(sc,rf,layer); /* Conversion is done by reinstanciating */
+ /* Since the base thing will have been converted, all we do is copy its data */
+ }
+}
+
+void SFConvertLayerToOrder2(SplineFont *_sf,int layer) {
+ int i, k;
+ SplineFont *sf;
+
+ if ( _sf->cidmaster!=NULL ) _sf=_sf->cidmaster;
+ k = 0;
+ do {
+ sf = _sf->subfonts==NULL ? _sf : _sf->subfonts[k];
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ SCConvertLayerToOrder2(sf->glyphs[i],layer);
+ sf->glyphs[i]->ticked = false;
+ sf->glyphs[i]->changedsincelasthinted = false;
+ }
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL && !sf->glyphs[i]->ticked )
+ SCConvertRefs(sf->glyphs[i],layer);
+
+ if ( layer!=ly_back )
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL )
+ SCNumberPoints(sf->glyphs[i],layer);
+ ++k;
+ } while ( k<_sf->subfontcnt );
+ _sf->layers[layer].order2 = true;
+}
+
+void SFConvertGridToOrder2(SplineFont *_sf) {
+ int k;
+ SplineSet *new;
+ SplineFont *sf;
+
+ if ( _sf->cidmaster!=NULL ) _sf=_sf->cidmaster;
+ k = 0;
+ do {
+ sf = _sf->subfonts==NULL ? _sf : _sf->subfonts[k];
+
+ new = SplineSetsTTFApprox(sf->grid.splines);
+ SplinePointListsFree(sf->grid.splines);
+ sf->grid.splines = new;
+
+ sf->grid.order2 = true;
+ ++k;
+ } while ( k<_sf->subfontcnt );
+ _sf->grid.order2 = true;
+}
+
+void SFConvertToOrder2(SplineFont *_sf) {
+ int layer;
+
+ for ( layer=0; layer<_sf->layer_cnt; ++layer )
+ SFConvertLayerToOrder2(_sf,layer);
+ SFConvertGridToOrder2(_sf);
+}
+
+
+/* ************************************************************************** */
+
+void SplineRefigure2(Spline *spline) {
+ SplinePoint *from = spline->from, *to = spline->to;
+ Spline1D *xsp = &spline->splines[0], *ysp = &spline->splines[1];
+ Spline old;
+
+#ifdef DEBUG
+ if ( RealNear(from->me.x,to->me.x) && RealNear(from->me.y,to->me.y))
+ IError("Zero length spline created");
+#endif
+ if ( spline->acceptableextrema )
+ old = *spline;
+
+ if ( from->nonextcp || to->noprevcp ||
+ ( from->nextcp.x==from->me.x && from->nextcp.y == from->me.y && from->nextcpindex>=0xfffe ) ||
+ ( to->prevcp.x==to->me.x && to->prevcp.y == to->me.y && from->nextcpindex>=0xfffe )) {
+ from->nonextcp = to->noprevcp = true;
+ from->nextcp = from->me;
+ to->prevcp = to->me;
+ }
+
+ if ( from->nonextcp && to->noprevcp )
+ /* Ok */;
+ else if ( from->nonextcp || to->noprevcp || from->nextcp.x!=to->prevcp.x ||
+ from->nextcp.y!=to->prevcp.y ) {
+ if ( RealNear(from->nextcp.x,to->prevcp.x) &&
+ RealNear(from->nextcp.y,to->prevcp.y)) {
+ from->nextcp.x = to->prevcp.x = (from->nextcp.x+to->prevcp.x)/2;
+ from->nextcp.y = to->prevcp.y = (from->nextcp.y+to->prevcp.y)/2;
+ } else {
+ IError("Invalid 2nd order spline in SplineRefigure2" );
+#ifndef GWW_TEST
+ /* I don't want these to go away when I'm debugging. I want to */
+ /* know how I got them */
+ from->nextcp.x = to->prevcp.x = (from->nextcp.x+to->prevcp.x)/2;
+ from->nextcp.y = to->prevcp.y = (from->nextcp.y+to->prevcp.y)/2;
+#endif
+ }
+ }
+
+ xsp->d = from->me.x; ysp->d = from->me.y;
+ if ( from->nonextcp && to->noprevcp ) {
+ spline->islinear = true;
+ xsp->c = to->me.x-from->me.x;
+ ysp->c = to->me.y-from->me.y;
+ xsp->a = xsp->b = 0;
+ ysp->a = ysp->b = 0;
+ } else {
+ /* from p. 393 (Operator Details, curveto) PostScript Lang. Ref. Man. (Red book) */
+ xsp->c = 2*(from->nextcp.x-from->me.x);
+ ysp->c = 2*(from->nextcp.y-from->me.y);
+ xsp->b = to->me.x-from->me.x-xsp->c;
+ ysp->b = to->me.y-from->me.y-ysp->c;
+ xsp->a = 0;
+ ysp->a = 0;
+ if ( RealNear(xsp->c,0)) xsp->c=0;
+ if ( RealNear(ysp->c,0)) ysp->c=0;
+ if ( RealNear(xsp->b,0)) xsp->b=0;
+ if ( RealNear(ysp->b,0)) ysp->b=0;
+ spline->islinear = false;
+ if ( ysp->b==0 && xsp->b==0 )
+ spline->islinear = true; /* This seems extremely unlikely... */
+ }
+ if ( isnan(ysp->b) || isnan(xsp->b) )
+ IError("NaN value in spline creation");
+ LinearApproxFree(spline->approx);
+ spline->approx = NULL;
+ spline->knowncurved = false;
+ spline->knownlinear = spline->islinear;
+ SplineIsLinear(spline);
+ spline->isquadratic = !spline->knownlinear;
+ spline->order2 = true;
+
+ if ( spline->acceptableextrema ) {
+ /* I don't check "d", because changes to that reflect simple */
+ /* translations which will not affect the shape of the spline */
+ /* (I don't check "a" because it is always 0 in a quadratic spline) */
+ if ( !RealNear(old.splines[0].b,spline->splines[0].b) ||
+ !RealNear(old.splines[0].c,spline->splines[0].c) ||
+ !RealNear(old.splines[1].b,spline->splines[1].b) ||
+ !RealNear(old.splines[1].c,spline->splines[1].c) )
+ spline->acceptableextrema = false;
+ }
+}
+
+void SplineRefigure(Spline *spline) {
+ if ( spline==NULL )
+return;
+ if ( spline->order2 )
+ SplineRefigure2(spline);
+ else
+ SplineRefigure3(spline);
+}
+
+static int IsHV(Spline *spline, int isfrom) {
+ SplinePoint *sp;
+
+ if ( spline==NULL )
+return( false );
+
+ if ( !isfrom ) {
+ sp = spline->to;
+ if ( sp->noprevcp )
+return( false );
+ if ( sp->me.x == sp->prevcp.x )
+return( 2 ); /* Vertical */
+ else if ( sp->me.y == sp->prevcp.y )
+return( 1 ); /* Horizontal */
+ else
+return( 0 ); /* Neither */
+ } else {
+ sp = spline->from;
+ if ( sp->nonextcp )
+return( false );
+ if ( sp->me.x == sp->nextcp.x )
+return( 2 ); /* Vertical */
+ else if ( sp->me.y == sp->nextcp.y )
+return( 1 ); /* Horizontal */
+ else
+return( 0 ); /* Neither */
+ }
+}
+
+void SplineRefigureFixup(Spline *spline) {
+ SplinePoint *from, *to, *prev, *next;
+ BasePoint foff, toff, unit, new;
+ bigreal len;
+ enum pointtype fpt, tpt;
+ int done = false;
+ extern int snaptoint;
+
+ if ( !spline->order2 ) {
+ SplineRefigure3(spline);
+return;
+ }
+ from = spline->from; to = spline->to;
+ if ( from->pointtype==pt_hvcurve && to->pointtype==pt_hvcurve ) {
+ done = true;
+ if ( !IsHV(from->prev,0) && !IsHV(to->next,1) ) {
+ if ( to->me.x == from->me.x ) {
+ from->nextcp.x = to->prevcp.x = to->me.x;
+ from->nextcp.y = to->prevcp.y = (from->me.y+from->me.y)/2;
+ } else if ( to->me.y==from->me.y ) {
+ from->nextcp.y = to->prevcp.y = to->me.y;
+ from->nextcp.x = to->prevcp.x = (from->me.x+from->me.x)/2;
+ /* Assume they are drawing clockwise */
+ } else if (( to->me.x>from->me.x && to->me.y>=from->me.y ) ||
+ (to->me.x<from->me.x && to->me.y<=from->me.y )) {
+ from->nextcp.x = to->prevcp.x = from->me.x;
+ from->nextcp.y = to->prevcp.y = to->me.y;
+ } else {
+ from->nextcp.x = to->prevcp.x = to->me.x;
+ from->nextcp.y = to->prevcp.y = from->me.y;
+ }
+ } else if ( !IsHV(to->next,1)) {
+ if ( IsHV(from->prev,0)==1 ) {
+ from->nextcp.x = to->prevcp.x = to->me.x;
+ from->nextcp.y = to->prevcp.y = from->me.y;
+ } else {
+ from->nextcp.x = to->prevcp.x = from->me.x;
+ from->nextcp.y = to->prevcp.y = to->me.y;
+ }
+ } else if ( !IsHV(from->prev,0)) {
+ if ( IsHV(to->next,1)==1 ) {
+ from->nextcp.x = to->prevcp.x = from->me.x;
+ from->nextcp.y = to->prevcp.y = to->me.y;
+ } else {
+ from->nextcp.x = to->prevcp.x = to->me.x;
+ from->nextcp.y = to->prevcp.y = from->me.y;
+ }
+ } else {
+ if ( IsHV(from->prev,0)==1 && IsHV(to->next,1)==2 ) {
+ from->nextcp.x = to->prevcp.x = to->me.x;
+ from->nextcp.y = to->prevcp.y = from->me.y;
+ } else if ( IsHV(from->prev,0)==2 && IsHV(to->next,1)==1 ) {
+ from->nextcp.x = to->prevcp.x = from->me.x;
+ from->nextcp.y = to->prevcp.y = to->me.y;
+ } else
+ done = false;
+ }
+ if ( done )
+ to->noprevcp = from->nonextcp = false;
+ }
+
+ if ( !done ) {
+ unit.x = from->nextcp.x-from->me.x;
+ unit.y = from->nextcp.y-from->me.y;
+ len = sqrt(unit.x*unit.x + unit.y*unit.y);
+ if ( len!=0 )
+ unit.x /= len; unit.y /= len;
+
+ if ( (fpt = from->pointtype)==pt_hvcurve ) fpt = pt_curve;
+ if ( (tpt = to->pointtype)==pt_hvcurve ) tpt = pt_curve;
+ if ( from->nextcpdef && to->prevcpdef ) switch ( fpt*3+tpt ) {
+ case pt_corner*3+pt_corner:
+ case pt_corner*3+pt_tangent:
+ case pt_tangent*3+pt_corner:
+ case pt_tangent*3+pt_tangent:
+ from->nonextcp = to->noprevcp = true;
+ from->nextcp = from->me;
+ to->prevcp = to->me;
+ break;
+ case pt_curve*3+pt_curve:
+ case pt_curve*3+pt_corner:
+ case pt_corner*3+pt_curve:
+ case pt_tangent*3+pt_curve:
+ case pt_curve*3+pt_tangent:
+ if ( from->prev!=NULL && (from->pointtype==pt_tangent || from->pointtype==pt_hvcurve)) {
+ prev = from->prev->from;
+ foff.x = prev->me.x;
+ foff.y = prev->me.y;
+ } else if ( from->prev!=NULL ) {
+ prev = from->prev->from;
+ foff.x = to->me.x-prev->me.x + from->me.x;
+ foff.y = to->me.y-prev->me.y + from->me.y;
+ } else {
+ foff.x = from->me.x + (to->me.x-from->me.x)-(to->me.y-from->me.y);
+ foff.y = from->me.y + (to->me.x-from->me.x)+(to->me.y-from->me.y);
+ prev = NULL;
+ }
+ if ( to->next!=NULL && (to->pointtype==pt_tangent || to->pointtype==pt_hvcurve)) {
+ next = to->next->to;
+ toff.x = next->me.x;
+ toff.y = next->me.y;
+ } else if ( to->next!=NULL ) {
+ next = to->next->to;
+ toff.x = next->me.x-from->me.x + to->me.x;
+ toff.y = next->me.y-from->me.y + to->me.y;
+ } else {
+ toff.x = to->me.x + (to->me.x-from->me.x)+(to->me.y-from->me.y);
+ toff.y = to->me.y - (to->me.x-from->me.x)+(to->me.y-from->me.y);
+ next = NULL;
+ }
+ if (( from->pointtype==pt_hvcurve && foff.x!=from->me.x && foff.y!=from->me.y ) ||
+ ( to->pointtype==pt_hvcurve && toff.x!=to->me.x && toff.y!=to->me.y )) {
+ if ( from->me.x == to->me.x ) {
+ if ( from->pointtype==pt_hvcurve )
+ foff.x = from->me.x;
+ if ( to->pointtype==pt_hvcurve )
+ toff.x = to->me.x;
+ } else if ( from->me.y == to->me.y ) {
+ if ( from->pointtype==pt_hvcurve )
+ foff.y = from->me.y;
+ if ( to->pointtype==pt_hvcurve )
+ toff.y = to->me.y;
+ } else {
+ if ( from->pointtype==pt_hvcurve && foff.x!=from->me.x && foff.y!=from->me.y ) {
+ if ( fabs(foff.x-from->me.x) > fabs(foff.y-from->me.y) )
+ foff.y = from->me.y;
+ else
+ foff.x = from->me.x;
+ }
+ if ( to->pointtype==pt_hvcurve && toff.x!=to->me.x && toff.y!=to->me.y ) {
+ if ( from->pointtype==pt_hvcurve ) {
+ if ( from->me.x==foff.x )
+ toff.y = to->me.y;
+ else
+ toff.x = to->me.x;
+ } else if ( fabs(toff.x-to->me.x) > fabs(toff.y-to->me.y) )
+ toff.y = to->me.y;
+ else
+ toff.x = to->me.x;
+ }
+ }
+ }
+ if ( IntersectLinesClip(&from->nextcp,&foff,&from->me,&toff,&to->me)) {
+ from->nonextcp = to->noprevcp = false;
+ to->prevcp = from->nextcp;
+ if ( (from->pointtype==pt_curve || from->pointtype==pt_hvcurve ) &&
+ !from->noprevcp && from->prev!=NULL ) {
+ prev = from->prev->from;
+ if ( IntersectLinesClip(&from->prevcp,&from->nextcp,&from->me,&prev->nextcp,&prev->me)) {
+ prev->nextcp = from->prevcp;
+ SplineRefigure2(from->prev);
+ }
+ }
+ if ( (to->pointtype==pt_curve || to->pointtype==pt_hvcurve) &&
+ !to->nonextcp && to->next!=NULL ) {
+ next = to->next->to;
+ if ( IntersectLinesClip(&to->nextcp,&to->prevcp,&to->me,&next->prevcp,&next->me)) {
+ next->prevcp = to->nextcp;
+ SplineRefigure(to->next);
+ }
+ }
+ }
+ break;
+ } else {
+ /* Can't set things arbetrarily here, but make sure they are consistant */
+ if ( (from->pointtype==pt_curve || from->pointtype==pt_hvcurve ) &&
+ !from->noprevcp && !from->nonextcp ) {
+ unit.x = from->nextcp.x-from->me.x;
+ unit.y = from->nextcp.y-from->me.y;
+ len = sqrt(unit.x*unit.x + unit.y*unit.y);
+ if ( len!=0 ) {
+ unit.x /= len; unit.y /= len;
+ len = sqrt((from->prevcp.x-from->me.x)*(from->prevcp.x-from->me.x) + (from->prevcp.y-from->me.y)*(from->prevcp.y-from->me.y));
+ new.x = -len*unit.x + from->me.x; new.y = -len*unit.y + from->me.y;
+ if ( new.x-from->prevcp.x<-1 || new.x-from->prevcp.x>1 ||
+ new.y-from->prevcp.y<-1 || new.y-from->prevcp.y>1 ) {
+ prev = NULL;
+ if ( from->prev!=NULL && (prev = from->prev->from)!=NULL &&
+ IntersectLinesClip(&from->prevcp,&new,&from->me,&prev->nextcp,&prev->me)) {
+ prev->nextcp = from->prevcp;
+ SplineRefigure2(from->prev);
+ } else {
+ from->prevcp = new;
+ if ( prev!=NULL )
+ prev->nextcp = new;
+ }
+ }
+ }
+ } else if ( from->pointtype==pt_tangent ) {
+ if ( from->prev!=NULL ) {
+ prev = from->prev->from;
+ if ( !from->noprevcp && !prev->nonextcp &&
+ IntersectLinesClip(&from->prevcp,&to->me,&from->me,&prev->nextcp,&prev->me)) {
+ prev->nextcp = from->prevcp;
+ SplineRefigure2(from->prev);
+ }
+ if ( !from->nonextcp && !to->noprevcp &&
+ IntersectLinesClip(&from->nextcp,&prev->me,&from->me,&to->prevcp,&to->me))
+ to->prevcp = from->nextcp;
+ }
+ }
+ if ( (to->pointtype==pt_curve || to->pointtype==pt_hvcurve ) &&
+ !to->noprevcp && !to->nonextcp ) {
+ unit.x = to->prevcp.x-to->nextcp.x;
+ unit.y = to->prevcp.y-to->nextcp.y;
+ len = sqrt(unit.x*unit.x + unit.y*unit.y);
+ if ( len!=0 ) {
+ unit.x /= len; unit.y /= len;
+ len = sqrt((to->nextcp.x-to->me.x)*(to->nextcp.x-to->me.x) + (to->nextcp.y-to->me.y)*(to->nextcp.y-to->me.y));
+ new.x = -len*unit.x + to->me.x; new.y = -len*unit.y + to->me.y;
+ if ( new.x-to->nextcp.x<-1 || new.x-to->nextcp.x>1 ||
+ new.y-to->nextcp.y<-1 || new.y-to->nextcp.y>1 ) {
+ if ( to->next!=NULL && (next = to->next->to)!=NULL &&
+ IntersectLinesClip(&to->nextcp,&new,&to->me,&next->prevcp,&next->me)) {
+ next->prevcp = to->nextcp;
+ SplineRefigure2(to->next);
+ } else {
+ to->nextcp = new;
+ if ( to->next!=NULL ) {
+ to->next->to->prevcp = new;
+ SplineRefigure(to->next);
+ }
+ }
+ }
+ }
+ } else if ( to->pointtype==pt_tangent ) {
+ if ( to->next!=NULL ) {
+ next = to->next->to;
+ if ( !to->nonextcp && !next->noprevcp &&
+ IntersectLinesClip(&to->nextcp,&from->me,&to->me,&next->prevcp,&next->me)) {
+ next->prevcp = to->nextcp;
+ SplineRefigure2(to->next);
+ }
+ if ( !from->nonextcp && !to->noprevcp &&
+ IntersectLinesClip(&from->nextcp,&next->me,&to->me,&from->nextcp,&from->me))
+ to->prevcp = from->nextcp;
+ }
+ }
+ }
+ if ( from->nonextcp && to->noprevcp )
+ /* Ok */;
+ else if ( from->nonextcp || to->noprevcp ) {
+ from->nonextcp = to->noprevcp = true;
+ } else if (( from->nextcp.x==from->me.x && from->nextcp.y==from->me.y ) ||
+ ( to->prevcp.x==to->me.x && to->prevcp.y==to->me.y ) ) {
+ from->nonextcp = to->noprevcp = true;
+ } else if ( from->nonextcp || to->noprevcp || from->nextcp.x!=to->prevcp.x ||
+ from->nextcp.y!=to->prevcp.y ) {
+ if ( !IntersectLinesClip(&from->nextcp,
+ (from->pointtype==pt_tangent && from->prev!=NULL)?&from->prev->from->me:&from->nextcp, &from->me,
+ (to->pointtype==pt_tangent && to->next!=NULL)?&to->next->to->me:&to->prevcp, &to->me)) {
+ from->nextcp.x = (from->me.x+to->me.x)/2;
+ from->nextcp.y = (from->me.y+to->me.y)/2;
+ }
+ to->prevcp = from->nextcp;
+ if (( from->nextcp.x==from->me.x && from->nextcp.y==from->me.y ) ||
+ ( to->prevcp.x==to->me.x && to->prevcp.y==to->me.y ) ) {
+ from->nonextcp = to->noprevcp = true;
+ from->nextcp = from->me;
+ to->prevcp = to->me;
+ }
+ }
+ }
+ if ( snaptoint && !from->nonextcp ) {
+ from->nextcp.x = to->prevcp.x = rint(from->nextcp.x);
+ from->nextcp.y = to->prevcp.y = rint(from->nextcp.y);
+ }
+ SplineRefigure2(spline);
+
+ /* Now in order2 splines it is possible to request combinations that are */
+ /* mathematically impossible -- two adjacent hv points often don't work */
+ if ( to->pointtype==pt_hvcurve &&
+ !(to->prevcp.x == to->me.x && to->prevcp.y != to->me.y ) &&
+ !(to->prevcp.y == to->me.y && to->prevcp.x != to->me.x ) )
+ to->pointtype = pt_curve;
+ if ( from->pointtype==pt_hvcurve &&
+ !(from->nextcp.x == from->me.x && from->nextcp.y != from->me.y ) &&
+ !(from->nextcp.y == from->me.y && from->nextcp.x != from->me.x ) )
+ from->pointtype = pt_curve;
+}
+
+Spline *SplineMake2(SplinePoint *from, SplinePoint *to) {
+ Spline *spline = chunkalloc(sizeof(Spline));
+
+ spline->from = from; spline->to = to;
+ from->next = to->prev = spline;
+ spline->order2 = true;
+ SplineRefigure2(spline);
+return( spline );
+}
+
+Spline *SplineMake(SplinePoint *from, SplinePoint *to, int order2) {
+ if (order2 > 0)
+return( SplineMake2(from,to));
+ else
+return( SplineMake3(from,to));
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineoverlap.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineoverlap.c
new file mode 100644
index 00000000000..1c1a430b52a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineoverlap.c
@@ -0,0 +1,442 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include "edgelist2.h"
+
+#ifdef HAVE_IEEEFP_H
+# include <ieeefp.h> /* Solaris defines isnan in ieeefp rather than math.h */
+#endif
+
+/* First thing we do is divide each spline into a set of sub-splines each of */
+/* which is monotonic in both x and y (always increasing or decreasing) */
+/* Then we compare each monotonic spline with every other one and see if they*/
+/* intersect. If they do, split each up into sub-sub-segments and create an*/
+/* intersection point (note we need to be a little careful if an intersec- */
+/* tion happens at an end point. We don't need to create a intersection for */
+/* two adjacent splines, there isn't a real intersection... but if a third */
+/* spline crosses that point (or ends there) then all three (four) splines */
+/* need to be joined into an intersection point) */
+/* Nasty things happen if splines are coincident. They will almost never be */
+/* perfectly coincident and will keep crossing and recrossing as rounding */
+/* errors suggest one is before the other. Look for coincident splines and */
+/* treat the places they start and stop being coincident as intersections */
+/* then when we find needed splines below look for these guys and ignore */
+/* recrossings of splines which are close together */
+/* Figure out if each monotonic sub-spline is needed or not */
+/* (Note: It was tempting to split the bits up into real splines rather */
+/* than keeping them as sub-sections of the original. Unfortunately this */
+/* splitting introduced rounding errors which meant that we got more */
+/* intersections, which meant that splines could be both needed and un. */
+/* so I don't do that until later) */
+/* if the spline hasn't been tagged yet: */
+/* does the spline change greater in x or y? */
+/* draw a line parallel to the OTHER axis which hits our spline and doesn't*/
+/* hit any endpoints (or intersections, which are end points too now) */
+/* count the winding number (as we do this we can mark other splines as */
+/* needed or not) and figure out if our spline is needed */
+/* So run through the list of intersections */
+/* At an intersection there should be an even number of needed monos. */
+/* Use this as the basis of a new splineset, trace it around until */
+/* we get back to the start intersection (should happen) */
+/* (Note: We may need to reverse a monotonic sub-spline or two) */
+/* As we go, mark each monotonic as having been used */
+/* Keep doing this until all needed exits from all intersections have been */
+/* used. */
+/* The free up our temporary data structures, merge in any open splinesets */
+/* free the old closed splinesets */
+
+// Frank recommends using the following macro whenever making changes
+// to this code and capturing and diffing output in order to track changes
+// in errors and reports.
+// (The pointers tend to clutter the diff a bit.)
+// #define FF_OVERLAP_VERBOSE
+
+static char *glyphname=NULL;
+
+static void SOError(const char *format,...) {
+ va_list ap;
+ va_start(ap,format);
+ if ( glyphname==NULL )
+ fprintf(stderr, "Internal Error (overlap): " );
+ else
+ fprintf(stderr, "Internal Error (overlap) in %s: ", glyphname );
+ vfprintf(stderr,format,ap);
+ va_end(ap);
+}
+
+#ifdef FF_OVERLAP_VERBOSE
+#define ValidateMListTs_IF_VERBOSE(input) ValidateMListTs(input);
+#else
+#define ValidateMListTs_IF_VERBOSE(input)
+#endif
+
+static void Validate(Monotonic *ms, Intersection *ilist) {
+ MList *ml;
+ int mcnt;
+
+ while ( ilist!=NULL ) {
+ // For each listed intersection, verify that each connected monotonic
+ // starts or ends at the intersection (identified by pointer, not geography).
+ for ( mcnt=0, ml=ilist->monos; ml!=NULL; ml=ml->next ) {
+ if ( ml->m->isneeded ) ++mcnt;
+ if ( ml->m->start!=ilist && ml->m->end!=ilist )
+ SOError( "Intersection (%g,%g) not on a monotonic which should contain it.\n",
+ (double) ilist->inter.x, (double) ilist->inter.y );
+ }
+ if ( mcnt&1 )
+ SOError( "Odd number of needed monotonic sections at intersection. (%g,%g)\n",
+ (double) ilist->inter.x,(double) ilist->inter.y );
+ ilist = ilist->next;
+ }
+
+ while ( ms!=NULL ) {
+ if ( ms->prev == NULL )
+ SOError( "Open monotonic loop.\n" );
+ else if ( ms->prev->end!=ms->start )
+ SOError( "Mismatched intersection.\n (%g,%g)->(%g,%g) ends at (%g,%g) while (%g,%g)->(%g,%g) starts at (%g,%g)\n",
+ (double) ms->prev->s->from->me.x,(double) ms->prev->s->from->me.y,
+ (double) ms->prev->s->to->me.x,(double) ms->prev->s->to->me.y,
+ (double) (ms->prev->end!=NULL?ms->prev->end->inter.x:-999999), (double) (ms->prev->end!=NULL?ms->prev->end->inter.y:-999999),
+ (double) ms->s->from->me.x,(double) ms->s->from->me.y,
+ (double) ms->s->to->me.x,(double) ms->s->to->me.y,
+ (double) (ms->start!=NULL?ms->start->inter.x:-999999), (double) (ms->start!=NULL?ms->start->inter.y:-999999) );
+ ms = ms->linked;
+ }
+}
+
+static Monotonic *SplineToMonotonic(Spline *s,extended startt,extended endt,
+ Monotonic *last,int exclude) {
+ Monotonic *m;
+ BasePoint start, end;
+
+ if ( startt==0 )
+ start = s->from->me;
+ else {
+ start.x = ((s->splines[0].a*startt+s->splines[0].b)*startt+s->splines[0].c)*startt
+ + s->splines[0].d;
+ start.y = ((s->splines[1].a*startt+s->splines[1].b)*startt+s->splines[1].c)*startt
+ + s->splines[1].d;
+ }
+ if ( endt==1.0 )
+ end = s->to->me;
+ else {
+ end.x = ((s->splines[0].a*endt+s->splines[0].b)*endt+s->splines[0].c)*endt
+ + s->splines[0].d;
+ end.y = ((s->splines[1].a*endt+s->splines[1].b)*endt+s->splines[1].c)*endt
+ + s->splines[1].d;
+ }
+ if ( ( (real) (((start.x+end.x)/2)==start.x || (real) ((start.x+end.x)/2)==end.x) &&
+ (real) (((start.y+end.y)/2)==start.y || (real) ((start.y+end.y)/2)==end.y) ) ||
+ (endt <= startt) || Within4RoundingErrors(startt, endt)) {
+ /* The distance between the two extrema is so small */
+ /* as to be unobservable. In other words we'd end up with a zero*/
+ /* length spline */
+ if ( endt==1.0 && last!=NULL && last->s==s )
+ last->tend = endt;
+return( last );
+ }
+
+ m = chunkalloc(sizeof(Monotonic));
+ m->s = s;
+ m->tstart = startt;
+ m->tend = endt;
+#ifdef FF_RELATIONAL_GEOM
+ m->otstart = startt;
+ m->otend = endt;
+#endif
+ m->exclude = exclude;
+
+ if ( end.x>start.x ) {
+ m->xup = true;
+ m->b.minx = start.x;
+ m->b.maxx = end.x;
+ } else {
+ m->b.minx = end.x;
+ m->b.maxx = start.x;
+ }
+ if ( end.y>start.y ) {
+ m->yup = true;
+ m->b.miny = start.y;
+ m->b.maxy = end.y;
+ } else {
+ m->b.miny = end.y;
+ m->b.maxy = start.y;
+ }
+
+ if ( last!=NULL ) {
+ // Validate(last, NULL);
+ last->next = m;
+ last->linked = m;
+ m->prev = last;
+ // Validate(last, NULL);
+ }
+return( m );
+}
+
+
+static int BpSame(BasePoint *bp1, BasePoint *bp2) {
+ BasePoint mid;
+
+ mid.x = (bp1->x+bp2->x)/2; mid.y = (bp1->y+bp2->y)/2;
+ if ( (bp1->x==mid.x || bp2->x==mid.x) &&
+ (bp1->y==mid.y || bp2->y==mid.y))
+return( true );
+
+return( false );
+}
+
+static int SSRmNullSplines(SplineSet *spl) {
+ Spline *s, *first, *next;
+
+ first = NULL;
+ for ( s=spl->first->next ; s!=first; s=next ) {
+ next = s->to->next;
+ if ( ((s->splines[0].a>-.01 && s->splines[0].a<.01 &&
+ s->splines[0].b>-.01 && s->splines[0].b<.01 &&
+ s->splines[1].a>-.01 && s->splines[1].a<.01 &&
+ s->splines[1].b>-.01 && s->splines[1].b<.01) ||
+ /* That describes a null spline (a line between the same end-point) */
+ RealNear((s->from->nextcp.x-s->from->me.x)*(s->to->me.y-s->to->prevcp.y)-
+ (s->from->nextcp.y-s->from->me.y)*(s->to->me.x-s->to->prevcp.x),0)) &&
+ /* And the above describes a point with a spline between it */
+ /* and itself where the spline covers no area (the two cps */
+ /* point in the same direction) */
+ BpSame(&s->from->me,&s->to->me)) {
+ if ( next==s )
+return( true );
+ if ( next->from->selected ) s->from->selected = true;
+ s->from->next = next;
+ s->from->nextcp = next->from->nextcp;
+ s->from->nonextcp = next->from->nonextcp;
+ s->from->nextcpdef = next->from->nextcpdef;
+ SplinePointFree(next->from);
+ if ( spl->first==next->from )
+ spl->last = spl->first = s->from;
+ next->from = s->from;
+ SplineFree(s);
+ } else {
+ if ( first==NULL )
+ first = s;
+ }
+ }
+return( false );
+}
+
+static Monotonic *SSToMContour(SplineSet *spl, Monotonic *start,
+ Monotonic **end, enum overlap_type ot) {
+ extended ts[4];
+ Spline *first, *s;
+ Monotonic *head=NULL, *last=NULL;
+ int cnt, i, selected = false;
+ extended lastt;
+
+ if ( spl->first->prev==NULL )
+return( start ); /* Open contours have no interior, ignore 'em */
+ if ( spl->first->prev->from==spl->first &&
+ spl->first->noprevcp && spl->first->nonextcp )
+return( start ); /* Let's just remove single points */
+
+ if ( ot==over_rmselected || ot==over_intersel || ot==over_fisel ) {
+ if ( !selected )
+ return( start );
+ }
+
+ /* We blow up on zero length splines. And a zero length contour is nasty */
+ if ( SSRmNullSplines(spl))
+return( start );
+
+ first = NULL;
+ for ( s=spl->first->next; s!=first; s=s->to->next ) {
+ if ( first==NULL ) first = s;
+ cnt = Spline2DFindExtrema(s,ts);
+ lastt = 0;
+ for ( i=0; i<cnt; ++i ) {
+ last = SplineToMonotonic(s,lastt,ts[i],last,selected);
+ if ( head==NULL ) head = last;
+ lastt=ts[i];
+ }
+ if ( lastt!=1.0 ) {
+ last = SplineToMonotonic(s,lastt,1.0,last,selected);
+ if ( head==NULL ) head = last;
+ }
+ }
+ head->prev = last;
+ last->next = head;
+ if ( start==NULL )
+ start = head;
+ else
+ (*end)->linked = head;
+ *end = last;
+ Validate(start, NULL);
+return( start );
+}
+
+Monotonic *SSsToMContours(SplineSet *spl, enum overlap_type ot) {
+ Monotonic *head=NULL, *last = NULL;
+
+ while ( spl!=NULL ) {
+ if ( spl->first->prev!=NULL )
+ head = SSToMContour(spl,head,&last,ot);
+ spl = spl->next;
+ }
+return( head );
+}
+
+/* An IEEE double has 52 bits of precision. So one unit of rounding error will be */
+/* the number divided by 2^51 */
+# define BR_RE_Factor (1024.0*1024.0*1024.0*1024.0*1024.0*2.0)
+/* But that's not going to work near 0, so, since the t values we care about */
+/* are [0,1], let's use 1.0/D_RE_Factor */
+
+#ifdef FF_OVERLAP_VERBOSE
+#define FF_DUMP_MONOTONIC_IF_VERBOSE(m) DumpMonotonic(m);
+#else
+#define FF_DUMP_MONOTONIC_IF_VERBOSE(m)
+#endif
+
+static int mcmp(const void *_p1, const void *_p2) {
+ const Monotonic * const *mpt1 = _p1, * const *mpt2 = _p2;
+ if ( (*mpt1)->other>(*mpt2)->other )
+return( 1 );
+ else if ( (*mpt1)->other<(*mpt2)->other )
+return( -1 );
+
+return( 0 );
+}
+
+int CheckMonotonicClosed(struct monotonic *ms) {
+ struct monotonic * current;
+ if (ms == NULL) return 0;
+ current = ms->next;
+ while (current != ms && current != NULL) {
+ current = current->next;
+ }
+ if (current == NULL) return 0;
+ return 1;
+}
+
+int MonotonicFindAt(Monotonic *ms,int which, extended test, Monotonic **space ) {
+ /* Find all monotonic sections which intersect the line (x,y)[which] == test */
+ /* find the value of the other coord on that line */
+ /* Order them (by the other coord) */
+ /* then run along that line figuring out which monotonics are needed */
+ extended t;
+ Monotonic *m, *mm;
+ int i, j, k, cnt;
+ int nw = !which;
+
+ for ( m=ms, i=0; m!=NULL; m=m->linked ) {
+ if (CheckMonotonicClosed(m) == 0) continue; // Open monotonics break things.
+ if (( which==0 && test >= m->b.minx && test <= m->b.maxx ) ||
+ ( which==1 && test >= m->b.miny && test <= m->b.maxy )) {
+ /* Lines parallel to the direction we are testing just get in the */
+ /* way and don't add any useful info */
+ if ( m->s->knownlinear &&
+ (( which==1 && m->s->from->me.y==m->s->to->me.y ) ||
+ (which==0 && m->s->from->me.x==m->s->to->me.x)))
+ continue;
+ t = IterateSplineSolveFixup(&m->s->splines[which],m->tstart,m->tend,test);
+ if ( t==-1 ) {
+ if ( which==0 ) {
+ if (( test-m->b.minx > m->b.maxx-test && m->xup ) ||
+ ( test-m->b.minx < m->b.maxx-test && !m->xup ))
+ t = m->tstart;
+ else
+ t = m->tend;
+ } else {
+ if (( test-m->b.miny > m->b.maxy-test && m->yup ) ||
+ ( test-m->b.miny < m->b.maxy-test && !m->yup ))
+ t = m->tstart;
+ else
+ t = m->tend;
+ }
+ }
+ m->t = t;
+ if ( t==m->tend ) t -= (m->tend-m->tstart)/100;
+ else if ( t==m->tstart ) t += (m->tend-m->tstart)/100;
+ m->other = ((m->s->splines[nw].a*t+m->s->splines[nw].b)*t+
+ m->s->splines[nw].c)*t+m->s->splines[nw].d;
+ space[i++] = m;
+ }
+ }
+ cnt = i;
+
+ /* Things get a little tricky at end-points */
+ for ( i=0; i<cnt; ++i ) {
+ m = space[i];
+ if ( m->t==m->tend ) {
+ /* Ignore horizontal/vertical lines (as appropriate) */
+ for ( mm=m->next; mm!=m && mm !=NULL; mm=mm->next ) {
+ if ( !mm->s->knownlinear )
+ break;
+ if (( which==1 && mm->s->from->me.y!=m->s->to->me.y ) ||
+ (which==0 && mm->s->from->me.x!=m->s->to->me.x))
+ break;
+ }
+ } else if ( m->t==m->tstart ) {
+ for ( mm=m->prev; mm!=m && mm !=NULL; mm=mm->prev ) {
+ if ( !mm->s->knownlinear )
+ break;
+ if (( which==1 && mm->s->from->me.y!=m->s->to->me.y ) ||
+ (which==0 && mm->s->from->me.x!=m->s->to->me.x))
+ break;
+ }
+ } else
+ break;
+ /* If the next monotonic continues in the same direction, and we found*/
+ /* it too, then don't count both. They represent the same intersect */
+ /* If they are in oposite directions then they cancel each other out */
+ /* and that is correct */
+ if ( mm!=m && /* Should always be true */
+ (&mm->xup)[which]==(&m->xup)[which] ) {
+ for ( j=cnt-1; j>=0; --j )
+ if ( space[j]==mm )
+ break;
+ if ( j!=-1 ) {
+ /* remove mm */
+ for ( k=j+1; k<cnt; ++k )
+ space[k-1] = space[k];
+ --cnt;
+ if ( i>j ) --i;
+ }
+ }
+ }
+
+ space[cnt] = NULL; space[cnt+1] = NULL;
+ qsort(space,cnt,sizeof(Monotonic *),mcmp);
+return(cnt);
+}
+
+void FreeMonotonics(Monotonic *m) {
+ Monotonic *next;
+
+ while ( m!=NULL ) {
+ next = m->linked;
+ chunkfree(m,sizeof(*m));
+ m = next;
+ }
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinerefigure.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinerefigure.c
new file mode 100644
index 00000000000..917b94ebd50
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinerefigure.c
@@ -0,0 +1,107 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include <math.h>
+
+#ifdef HAVE_IEEEFP_H
+# include <ieeefp.h> /* Solaris defines isnan in ieeefp rather than math.h */
+#endif
+
+/* The slight errors introduced by the optimizer turn out to have nasty */
+/* side effects. An error on the order of 7e-8 in splines[1].b caused */
+/* the rasterizer to have kaniptions */
+void SplineRefigure3(Spline *spline) {
+ SplinePoint *from = spline->from, *to = spline->to;
+ Spline1D *xsp = &spline->splines[0], *ysp = &spline->splines[1];
+ Spline old;
+
+ spline->isquadratic = false;
+ if ( spline->acceptableextrema )
+ old = *spline;
+ xsp->d = from->me.x; ysp->d = from->me.y;
+ int nonextcp_effective = 0;
+ int noprevcp_effective = 0;
+ if ( from->nonextcp ) { from->nextcp = from->me; nonextcp_effective = true; }
+ else if ( from->nextcp.x==from->me.x && from->nextcp.y == from->me.y ) { nonextcp_effective = true; }
+ if ( to->noprevcp ) { to->prevcp = to->me; noprevcp_effective = true; }
+ else if ( to->prevcp.x==to->me.x && to->prevcp.y == to->me.y ) { noprevcp_effective = true; }
+ if ( nonextcp_effective && noprevcp_effective ) {
+ spline->islinear = true;
+ xsp->c = to->me.x-from->me.x;
+ ysp->c = to->me.y-from->me.y;
+ xsp->a = xsp->b = 0;
+ ysp->a = ysp->b = 0;
+ } else {
+ /* from p. 393 (Operator Details, curveto) PostScript Lang. Ref. Man. (Red book) */
+ xsp->c = 3*(from->nextcp.x-from->me.x);
+ ysp->c = 3*(from->nextcp.y-from->me.y);
+ xsp->b = 3*(to->prevcp.x-from->nextcp.x)-xsp->c;
+ ysp->b = 3*(to->prevcp.y-from->nextcp.y)-ysp->c;
+ xsp->a = to->me.x-from->me.x-xsp->c-xsp->b;
+ ysp->a = to->me.y-from->me.y-ysp->c-ysp->b;
+ if ( RealNear(xsp->c,0)) xsp->c=0;
+ if ( RealNear(ysp->c,0)) ysp->c=0;
+ if ( RealNear(xsp->b,0)) xsp->b=0;
+ if ( RealNear(ysp->b,0)) ysp->b=0;
+ if ( RealNear(xsp->a,0)) xsp->a=0;
+ if ( RealNear(ysp->a,0)) ysp->a=0;
+ if ( xsp->a!=0 && ( Within16RoundingErrors(xsp->a+from->me.x,from->me.x) ||
+ Within16RoundingErrors(xsp->a+to->me.x,to->me.x)))
+ xsp->a = 0;
+ if ( ysp->a!=0 && ( Within16RoundingErrors(ysp->a+from->me.y,from->me.y) ||
+ Within16RoundingErrors(ysp->a+to->me.y,to->me.y)))
+ ysp->a = 0;
+ SplineIsLinear(spline);
+ spline->islinear = false;
+ if ( ysp->a==0 && xsp->a==0 ) {
+ if ( ysp->b==0 && xsp->b==0 )
+ spline->islinear = true; /* This seems extremely unlikely... */
+ else
+ spline->isquadratic = true; /* Only likely if we read in a TTF */
+ }
+ }
+ if ( !isfinite(ysp->a) || !isfinite(xsp->a) || !isfinite(ysp->c) || !isfinite(xsp->c) || !isfinite(ysp->d) || !isfinite(xsp->d))
+ IError("NaN value in spline creation");
+ LinearApproxFree(spline->approx);
+ spline->approx = NULL;
+ spline->knowncurved = false;
+ spline->knownlinear = spline->islinear;
+ SplineIsLinear(spline);
+ spline->order2 = false;
+
+ if ( spline->acceptableextrema ) {
+ /* I don't check "d", because changes to that reflect simple */
+ /* translations which will not affect the shape of the spline */
+ if ( !RealNear(old.splines[0].a,spline->splines[0].a) ||
+ !RealNear(old.splines[0].b,spline->splines[0].b) ||
+ !RealNear(old.splines[0].c,spline->splines[0].c) ||
+ !RealNear(old.splines[1].a,spline->splines[1].a) ||
+ !RealNear(old.splines[1].b,spline->splines[1].b) ||
+ !RealNear(old.splines[1].c,spline->splines[1].c) )
+ spline->acceptableextrema = false;
+ }
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinesave.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinesave.c
new file mode 100644
index 00000000000..38ef12534c1
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinesave.c
@@ -0,0 +1,2065 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include <math.h>
+#include "psfont.h"
+
+float GenerateHintWidthEqualityTolerance = 0.0;
+int autohint_before_generate = 1;
+
+/* Let's talk about references. */
+/* If we are doing Type1 output, then the obvious way of doing them is seac */
+/* but that's so limitting. It only works for exactly two characters both */
+/* of which are in Adobe's Standard Enc. Only translations allowed. Only */
+/* one reference may be translated and the width of the char must match */
+/* that of the non-translated reference */
+/* The first extension we can make is to allow a single character reference */
+/* by making the other character be a space */
+/* But if we want to do more than that we must use subrs. If we have two */
+/* refs in subrs then we can do translations by preceding the subr calls by */
+/* appropriate rmovetos. Actually the specs say that only one rmoveto should */
+/* precede a path, so that means we can't allow the subroutines to position */
+/* themselves, they must just assume that they are called with the current */
+/* position correct for the first point. But then we need to know where the */
+/* first point should be placed, so we allocate a BasePoint to hold that info*/
+/* and store it into the "keys" array (which the subrs don't use). Similarly */
+/* we need to know where the subr will leave us, so we actually allocate 2 */
+/* BasePoints, one containing the start point, one the end point */
+/* But that's still not good enough, hints are defined in such a way that */
+/* they are not relocateable. So our subrs can't include any hint definitions*/
+/* (or if they do then that subr can't be translated at all). So hints must */
+/* be set outside the subrs, and the subrs can't be for chars that need hint */
+/* substitution. Unless... The subr will never be relocated. */
+/* So we generate two types of reference subrs, one containing no hints, the*/
+/* other containing all the hints, stems and flexes. The first type may be */
+/* translated, the second cannot */
+/* Type2 doesn't allow any seacs */
+/* So everything must go in subrs. We have a slightly different problem here:*/
+/* hintmasks need to know exactly how many stem hints there are in the char */
+/* so we can't include any hintmask operators inside a subr (unless we */
+/* guarantee that all invocations of that subr are done with the same number */
+/* of hints in the character). This again means that no char with hint subs- */
+/* titutions may be put in a subr. UNLESS all the other references in a */
+/* refering character contain no hints */
+
+/* That's very complex. And it doesn't do a very good job. */
+/* Instead let's take all strings bounded by either moveto or hintmask operators */
+/* store these as potential subroutines. So a glyph becomes a sequence of */
+/* potential subroutine calls preceded by the glyph header (width, hint decl,*/
+/* counter declarations, etc.) and intersperced by hintmask/moveto operators */
+/* Each time we get a potential subr we hash it and see if we've used that */
+/* string before. If we have then we merge the two. Otherwise it's a new one.*/
+/* Then at the end we see what strings get used often enough to go into subrs */
+/* we create the subrs array from that. */
+/* Then each glyph. We insert the preamble. We check of the potential subroutine */
+/* became a real subroutine. If so we call it, else we insert the data inline*/
+/* Do the same for the next hintmask/moveto and potential subroutine... */
+
+/* Then, on top of that I tried generating some full glyph subroutines, and */
+/* to my surprise, it just made things worse. */
+
+struct potentialsubrs {
+ uint8 *data; /* the charstring of the subr */
+ int len; /* the length of the charstring */
+ int idx; /* initially index into psubrs array */
+ /* then index into subrs array or -1 if none */
+ int cnt; /* the usage count */
+ int fd; /* Which sub font is it in */
+ /* -1 => used in more than one */
+ int next;
+ int full_glyph_index; /* Into the glyphbits array */
+ /* for full references */
+ BasePoint *startstop; /* Again for full references */
+};
+
+struct bits {
+ uint8 *data;
+ int dlen;
+ int psub_index;
+};
+
+struct glyphbits {
+ SplineChar *sc;
+ int fd; /* Which subfont is it in */
+ int bcnt;
+ struct bits *bits;
+ uint8 wasseac;
+};
+
+#define HSH_SIZE 511
+/* In type2 charstrings we divide every character into bits where a bit is */
+/* bounded by a hintmask/moveto. Each of these is a potential subroutine and */
+/* is stored here */
+typedef struct glyphinfo {
+ struct potentialsubrs *psubrs;
+ int pcnt, pmax;
+ int hashed[HSH_SIZE];
+ struct glyphbits *gb, *active;
+ SplineFont *sf;
+ int layer;
+ int glyphcnt;
+ int subfontcnt;
+ int bcnt, bmax;
+ struct bits *bits; /* For current glyph */
+ const int *bygid;
+ int justbroken;
+ int instance_count;
+} GlyphInfo;
+
+struct mhlist {
+ uint8 mask[HntMax/8];
+ int subr;
+ struct mhlist *next;
+};
+
+struct hintdb {
+ uint8 mask[HntMax/8];
+ int cnt; /* number of hints */
+ struct mhlist *sublist;
+ struct pschars *subrs;
+ /*SplineChar *sc;*/
+ SplineChar **scs;
+ int instance_count;
+ unsigned int iscjk: 1; /* If cjk then don't do stem3 hints */
+ /* Will be done with counters instead */
+ /* actually, most of the time we can't use stem3s, only if those three*/
+ /* stems are always active and there are no other stems !(h/v)hasoverlap*/
+ unsigned int noconflicts: 1;
+ unsigned int startset: 1;
+ unsigned int skiphm: 1; /* Set when coming back to the start point of a contour. hintmask should be set the first time, not the second */
+ unsigned int donefirsthm: 1;
+ int cursub; /* Current subr number */
+ DBasePoint current;
+ GlyphInfo *gi;
+};
+
+static void GIContentsFree(GlyphInfo *gi,SplineChar *dummynotdef) {
+ int i,j;
+
+ if ( gi->glyphcnt>0 && gi->gb[0].sc == dummynotdef ) {
+ if ( dummynotdef->layers!=NULL ) {
+ SplinePointListsFree(dummynotdef->layers[gi->layer].splines);
+ dummynotdef->layers[gi->layer].splines = NULL;
+ }
+ StemInfosFree(dummynotdef->hstem);
+ StemInfosFree(dummynotdef->vstem);
+ dummynotdef->vstem = dummynotdef->hstem = NULL;
+ free(dummynotdef->layers);
+ dummynotdef->layers = NULL;
+ }
+
+ for ( i=0; i<gi->pcnt; ++i ) {
+ free(gi->psubrs[i].data);
+ free(gi->psubrs[i].startstop);
+ gi->psubrs[i].data = NULL;
+ gi->psubrs[i].startstop = NULL;
+ }
+ for ( i=0; i<gi->glyphcnt; ++i ) {
+ for ( j=0; j<gi->gb[i].bcnt; ++j )
+ free(gi->gb[i].bits[j].data);
+ free(gi->gb[i].bits);
+ gi->gb[i].bits = NULL;
+ gi->gb[i].bcnt = 0;
+ }
+
+ gi->pcnt = 0;
+ gi->bcnt = 0;
+ gi->justbroken = 0;
+}
+
+static void GIFree(GlyphInfo *gi,SplineChar *dummynotdef) {
+
+ GIContentsFree(gi,dummynotdef);
+
+ free(gi->gb);
+ free(gi->psubrs);
+ free(gi->bits);
+}
+
+static void StartNextSubroutine(GrowBuf *gb,struct hintdb *hdb) {
+ GlyphInfo *gi;
+
+ if ( hdb==NULL )
+return;
+ gi = hdb->gi;
+ if ( gi==NULL )
+return;
+ /* Store everything in the grow buf into the data/dlen of the next bit */
+ if ( gi->bcnt==-1 ) gi->bcnt = 0;
+ if ( gi->bcnt>=gi->bmax )
+ gi->bits = realloc(gi->bits,(gi->bmax+=20)*sizeof(struct bits));
+ gi->bits[gi->bcnt].dlen = gb->pt-gb->base;
+ gi->bits[gi->bcnt].data = malloc(gi->bits[gi->bcnt].dlen);
+ gi->bits[gi->bcnt].psub_index = -1;
+ memcpy(gi->bits[gi->bcnt].data,gb->base,gi->bits[gi->bcnt].dlen);
+ gb->pt = gb->base;
+ gi->justbroken = false;
+}
+
+static int hashfunc(uint8 *data, int len) {
+ uint8 *end = data+len;
+ unsigned int hash = 0, r;
+
+ while ( data<end ) {
+ r = (hash>>30)&3;
+ hash <<= 2;
+ hash = (hash|r)&0xffffffff;
+ hash ^= *data++;
+ }
+return( hash%HSH_SIZE );
+}
+
+static void BreakSubroutine(GrowBuf *gb,struct hintdb *hdb) {
+ GlyphInfo *gi;
+ struct potentialsubrs *ps;
+ int hash;
+ int pi;
+
+ if ( hdb==NULL )
+return;
+ gi = hdb->gi;
+ if ( gi==NULL )
+return;
+ /* The stuff before the first moveto in a glyph (the header that sets */
+ /* the width, sets up the hints, counters, etc.) can't go into a subr */
+ if ( gi->bcnt==-1 ) {
+ gi->bcnt=0;
+ gi->justbroken = true;
+return;
+ } else if ( gi->justbroken )
+return;
+ /* Otherwise stuff everything in the growbuffer into a subr */
+ hash = hashfunc(gb->base,gb->pt-gb->base);
+ ps = NULL;
+ for ( pi=gi->hashed[hash]; pi!=-1; pi=gi->psubrs[pi].next ) {
+ ps = &gi->psubrs[pi];
+ if ( ps->len==gb->pt-gb->base && memcmp(ps->data,gb->base,gb->pt-gb->base)==0 )
+ break;
+ }
+ if ( pi==-1 ) {
+ if ( gi->pcnt>=gi->pmax )
+ gi->psubrs = realloc(gi->psubrs,(gi->pmax+=gi->glyphcnt)*sizeof(struct potentialsubrs));
+ ps = &gi->psubrs[gi->pcnt];
+ memset(ps,0,sizeof(*ps)); /* set cnt to 0 */
+ ps->idx = gi->pcnt++;
+ ps->len = gb->pt-gb->base;
+ ps->data = malloc(ps->len);
+ memcpy(ps->data,gb->base,ps->len);
+ ps->next = gi->hashed[hash];
+ gi->hashed[hash] = ps->idx;
+ ps->fd = gi->active->fd;
+ ps->full_glyph_index = -1;
+ }
+ if ( ps->fd!=gi->active->fd )
+ ps->fd = -1; /* used in multiple cid sub-fonts */
+ gi->bits[gi->bcnt].psub_index = ps->idx;
+ ++ps->cnt;
+ gb->pt = gb->base;
+ ++gi->bcnt;
+ gi->justbroken = true;
+}
+
+static void MoveSubrsToChar(GlyphInfo *gi) {
+ struct glyphbits *active;
+
+ if ( gi==NULL )
+return;
+ active = gi->active;
+ active->bcnt = gi->bcnt;
+ active->bits = malloc(active->bcnt*sizeof(struct bits));
+ memcpy(active->bits,gi->bits,active->bcnt*sizeof(struct bits));
+ gi->bcnt = 0;
+}
+
+static int NumberHints(SplineChar *scs[MmMax], int instance_count) {
+ int i,j, cnt=-1;
+ StemInfo *s;
+
+ for ( j=0; j<instance_count; ++j ) {
+ for ( s=scs[j]->hstem, i=0; s!=NULL; s=s->next ) {
+ if ( i<HntMax )
+ s->hintnumber = i++;
+ else
+ s->hintnumber = -1;
+ }
+ for ( s=scs[j]->vstem; s!=NULL; s=s->next ) {
+ if ( i<HntMax )
+ s->hintnumber = i++;
+ else
+ s->hintnumber = -1;
+ }
+ if ( cnt==-1 )
+ cnt = i;
+ else if ( cnt!=i )
+ IError("MM font with different hint counts");
+ }
+return( cnt );
+}
+
+static void MarkTranslationRefs(SplineFont *sf,int layer) {
+ int i;
+ SplineChar *sc;
+ RefChar *r;
+
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( (sc = sf->glyphs[i])!=NULL ) {
+ for ( r = sc->layers[layer].refs; r!=NULL; r=r->next )
+ r->justtranslated = (r->transform[0]==1 && r->transform[3]==1 &&
+ r->transform[1]==0 && r->transform[2]==0);
+ }
+}
+
+/* ************************************************************************** */
+/* ********************** Type1 PostScript CharStrings ********************** */
+/* ************************************************************************** */
+
+
+static void AddNumber(GrowBuf *gb, real pos, int round) {
+ int dodiv = 0;
+ int val;
+ unsigned char *str;
+
+ if ( gb->pt+8>=gb->end )
+ GrowBuffer(gb);
+
+ if ( !round && pos!=floor(pos) ) {
+ {
+ if ( rint(pos*64)/64 == pos ) {
+ pos *= 64;
+ dodiv = 64;
+ } else {
+ pos *= 1024;
+ dodiv = 1024;
+ }
+ }
+ }
+ pos = rint(pos);
+ if ( dodiv>0 && floor(pos)/dodiv == floor(pos/dodiv) ) {
+ pos = rint(pos/dodiv);
+ dodiv = 0;
+ }
+ val = pos;
+ str = gb->pt;
+
+ if ( pos>=-107 && pos<=107 )
+ *str++ = val+139;
+ else if ( pos>=108 && pos<=1131 ) {
+ val -= 108;
+ *str++ = (val>>8)+247;
+ *str++ = val&0xff;
+ } else if ( pos>=-1131 && pos<=-108 ) {
+ val = -val;
+ val -= 108;
+ *str++ = (val>>8)+251;
+ *str++ = val&0xff;
+ } else {
+ *str++ = '\377';
+ *str++ = (val>>24)&0xff;
+ *str++ = (val>>16)&0xff;
+ *str++ = (val>>8)&0xff;
+ *str++ = val&0xff;
+ }
+ if ( dodiv ) {
+ if ( dodiv<107 )
+ *str++ = dodiv+139;
+ else {
+ dodiv -= 108;
+ *str++ = (dodiv>>8)+247;
+ *str++ = dodiv&0xff;
+ }
+ *str++ = 12; /* div (byte1) */
+ *str++ = 12; /* div (byte2) */
+ }
+ gb->pt = str;
+}
+
+/* When doing a multiple master font we have multiple instances of the same data */
+/* which must all be added, and then a call made to the appropriate blend routine */
+/* This is complicated because all the data may not fit on the stack so we */
+/* may need to make multiple calls */
+static void AddData(GrowBuf *gb, bigreal data[MmMax][6], int instances, int num_coords,
+ int round) {
+ int allsame = true, alls[6];
+ int i,j, chunk,min,max,subr;
+
+ for ( j=0; j<num_coords; ++j ) {
+ alls[j] = true;
+ for ( i=1; i<instances; ++i ) {
+ if ( data[i][j]!=data[0][j] ) {
+ alls[j] = false;
+ allsame = false;
+ break;
+ }
+ }
+ }
+
+ if ( allsame ) { /* No need for blending */
+ /* Probably a normal font, but possible in an mm */
+ for ( j=0; j<num_coords; ++j )
+ AddNumber(gb,data[0][j],round);
+return;
+ }
+
+ chunk = 22/instances;
+ if ( chunk == 5 ) chunk = 4; /* No subroutine for 5 items */
+ min = 0;
+ while ( min<num_coords ) {
+ while ( min<num_coords && alls[min] ) {
+ AddNumber(gb,data[0][min],round);
+ ++min;
+ }
+ max = min+chunk;
+ if ( max>num_coords ) max = num_coords;
+ while ( max-1>min && alls[max-1] )
+ --max;
+ if ( max-min==5 ) max=min+4;
+ if ( min<max ) {
+ for ( j=min; j<max; ++j )
+ AddNumber(gb,data[0][j],round);
+ for ( j=min; j<max; ++j )
+ for ( i=1; i<instances; ++i )
+ AddNumber(gb,data[i][j]-data[0][j],round);
+ subr = (j-min) + 4;
+ if ( j-min==6 ) subr = 9;
+ AddNumber(gb,subr,round);
+ if ( gb->pt+1>=gb->end )
+ GrowBuffer(gb);
+ *gb->pt++ = 10; /* callsubr */
+ min = j;
+ }
+ }
+}
+
+int CvtPsStem3(GrowBuf *gb, SplineChar *scs[MmMax], int instance_count,
+ int ishstem, int round) {
+ StemInfo *h1, *h2, *h3;
+ StemInfo _h1, _h2, _h3;
+ bigreal data[MmMax][6];
+ int i;
+ real off;
+
+ for ( i=0; i<instance_count; ++i ) {
+ if ( (ishstem && scs[i]->hconflicts) || (!ishstem && scs[i]->vconflicts))
+return( false );
+ h1 = ishstem ? scs[i]->hstem : scs[i]->vstem;
+ if ( h1==NULL || (h2 = h1->next)==NULL || (h3=h2->next)==NULL )
+return( false );
+ if ( h3->next!=NULL )
+return( false );
+ off = ishstem ? 0 : scs[i]->lsidebearing;
+ if ( h1->width<0 ) {
+ _h1 = *h1;
+ _h1.start += _h1.width;
+ _h1.width = -_h1.width;
+ h1 = &_h1;
+ }
+ if ( h2->width<0 ) {
+ _h2 = *h2;
+ _h2.start += _h2.width;
+ _h2.width = -_h2.width;
+ h2 = &_h2;
+ }
+ if ( h3->width<0 ) {
+ _h3 = *h3;
+ _h3.start += _h3.width;
+ _h3.width = -_h3.width;
+ h3 = &_h3;
+ }
+
+ if ( h1->start>h2->start ) {
+ StemInfo *ht = h1; h1 = h2; h2 = ht;
+ }
+ if ( h1->start>h3->start ) {
+ StemInfo *ht = h1; h1 = h3; h3 = ht;
+ }
+ if ( h2->start>h3->start ) {
+ StemInfo *ht = h2; h2 = h3; h3 = ht;
+ }
+ if ( h1->width != h3->width )
+return( false );
+ if ( (h2->start+h2->width/2) - (h1->start+h1->width/2) !=
+ (h3->start+h3->width/2) - (h2->start+h2->width/2) )
+return( false );
+ data[i][0] = h1->start-off;
+ data[i][1] = h1->width;
+ data[i][2] = h2->start-off;
+ data[i][3] = h2->width;
+ data[i][4] = h3->start-off;
+ data[i][5] = h3->width;
+ }
+ if ( gb==NULL )
+return( true );
+ AddData(gb,data,instance_count,6,round);
+ if ( gb->pt+3>=gb->end )
+ GrowBuffer(gb);
+ *(gb->pt)++ = 12;
+ *(gb->pt)++ = ishstem?2:1; /* h/v stem3 */
+return( true );
+}
+
+static int _SCNeedsSubsPts(SplineChar *sc,int layer) {
+ RefChar *ref;
+
+ if ( sc->hstem==NULL && sc->vstem==NULL )
+return( false );
+
+ if ( sc->layers[layer].splines!=NULL )
+return( sc->layers[layer].splines->first->hintmask==NULL );
+
+ for ( ref = sc->layers[layer].refs; ref!=NULL; ref=ref->next )
+ if ( ref->layers[0].splines!=NULL )
+return( ref->layers[0].splines->first->hintmask==NULL );
+
+return( false ); /* It's empty. that's easy. */
+}
+
+static int SCNeedsSubsPts(SplineChar *sc,enum fontformat format,int layer) {
+ if ( (format!=ff_mma && format!=ff_mmb) || sc->parent->mm==NULL ) {
+ if ( !sc->hconflicts && !sc->vconflicts )
+return( false ); /* No conflicts, no swap-over points needed */
+return( _SCNeedsSubsPts(sc,layer));
+ } else {
+ MMSet *mm = sc->parent->mm;
+ int i;
+ for ( i=0; i<mm->instance_count; ++i ) if ( sc->orig_pos<mm->instances[i]->glyphcnt ) {
+ if ( _SCNeedsSubsPts(mm->instances[i]->glyphs[sc->orig_pos],layer) )
+return( true );
+ }
+return( false );
+ }
+}
+
+#ifdef FONTFORGE_CONFIG_PS_REFS_GET_SUBRS
+static int AlwaysSeacable(SplineChar *sc,int flags) {
+ struct splinecharlist *d;
+ RefChar *r;
+
+ if ( sc->parent->cidmaster!=NULL ) /* Can't use seac in CID fonts, no encoding */
+return( false );
+ if ( flags&ps_flag_noseac )
+return( false );
+
+ for ( d=sc->dependents; d!=NULL; d = d->next ) {
+ if ( d->sc->layers[layer].splines!=NULL ) /* I won't deal with things with both splines and refs. */
+ continue; /* skip it */
+ for ( r=d->sc->layers[layer].refs; r!=NULL; r=r->next ) {
+ if ( !r->justtranslated )
+ break; /* Can't deal with it either way */
+ }
+ if ( r!=NULL ) /* Bad transform matrix */
+ continue; /* Can't handle either way, skip */
+
+ for ( r=d->sc->layers[layer].refs; r!=NULL; r=r->next ) {
+ if ( r->adobe_enc==-1 )
+return( false ); /* not seacable, but could go in subr */
+ }
+ r = d->sc->layers[layer].refs;
+ if ( r->next!=NULL && r->next->next!=NULL )
+return( false ); /* seac only takes 2 glyphs */
+ if ( r->next!=NULL &&
+ ((r->transform[4]!=0 || r->transform[5]!=0 || r->sc->width!=d->sc->width) &&
+ (r->next->transform[4]!=0 || r->next->transform[5]!=0 || r->next->sc->width!=d->sc->width)))
+return( false ); /* seac only allows one to be translated, and the untranslated one must have the right width */
+ if ( r->next==NULL &&
+ (r->transform[4]!=0 || r->transform[5]!=0 || r->sc->width!=d->sc->width))
+return( false );
+ }
+ /* Either always can be represented by seac, or sometimes by neither */
+return( true );
+}
+
+/* normally we can't put a character with hint conflicts into a subroutine */
+/* (because when we would have to invoke the hints within the subr and */
+/* hints are expressed as absolute positions, so if the char has been */
+/* translated we can't do the hints right). BUT if the character is not */
+/* translated, and if it has the right lbearing, then the hints in the */
+/* ref will match those in the character and we can use a subroutine for */
+/* both */
+/* If at least one ref fits our requirements then return true */
+/* The same reasoning applies to flex hints. There are absolute expressions */
+/* in them too. */
+static int SpecialCaseConflicts(SplineChar *sc) {
+ struct splinecharlist *d;
+ RefChar *r;
+ DBounds sb, db;
+
+ SplineCharFindBounds(sc,&sb);
+ for ( d=sc->dependents; d!=NULL; d = d->next ) {
+ SplineCharFindBounds(d->sc,&db);
+ if ( db.minx != sb.minx )
+ continue;
+ for ( r=d->sc->layers[layer].refs; r!=NULL; r=r->next )
+ if ( r->sc == sc && r->justtranslated &&
+ r->transform[4]==0 && r->transform[5]==0 )
+return( true );
+ }
+return( false );
+}
+
+static BasePoint *FigureStartStop(SplineChar *sc, GlyphInfo *gi ) {
+ int m, didfirst;
+ SplineChar *msc;
+ SplineSet *spl;
+ RefChar *r;
+ BasePoint *startstop;
+
+ /* We need to know the location of the first point on the */
+ /* first path (need to rmoveto it, and the location of the */
+ /* last point on the last path (will need to move from it */
+ /* for the next component) */
+
+ startstop = calloc(2*gi->instance_count,sizeof(BasePoint));
+ for ( m=0; m<gi->instance_count; ++m ) {
+ if ( gi->instance_count==1 || sc->parent->mm==NULL )
+ msc = sc;
+ else
+ msc = sc->parent->mm->instances[m]->glyphs[sc->orig_pos];
+ didfirst = false;
+ spl = msc->layers[layer].splines;
+ if ( spl!=NULL ) {
+ startstop[0] = spl->first->me;
+ didfirst = true;
+ while ( spl!=NULL ) {
+ /* Closepath does NOT set the current point */
+ /* Remember we reverse PostScript */
+ if ( spl->last==spl->first && spl->first->next!=NULL &&
+ spl->first->next->knownlinear )
+ startstop[1] = spl->first->next->to->me;
+ else
+ startstop[1] = spl->last->me;
+ spl = spl->next;
+ }
+ }
+ for ( r=msc->layers[layer].refs; r!=NULL; r=r->next ) {
+ spl = r->layers[0].splines;
+ if ( spl!=NULL ) {
+ if ( !didfirst )
+ startstop[0] = spl->first->me;
+ didfirst = true;
+ }
+ while ( spl!=NULL ) {
+ /* Closepath does NOT set the current point */
+ /* Remember we reverse PostScript */
+ if ( spl->last==spl->first && spl->first->next!=NULL &&
+ spl->first->next->knownlinear )
+ startstop[1] = spl->first->next->to->me;
+ else
+ startstop[1] = spl->last->me;
+ spl = spl->next;
+ }
+ }
+ }
+return( startstop );
+}
+#endif /* FONTFORGE_CONFIG_PS_REFS_GET_SUBRS */
+
+int SFOneWidth(SplineFont *sf) {
+ int width, i;
+
+ width = -2;
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( SCWorthOutputting(sf->glyphs[i]) &&
+ (strcmp(sf->glyphs[i]->name,".notdef")!=0 || sf->glyphs[i]->layers[ly_fore].splines!=NULL)) {
+ /* Only trust the width of notdef if it's got some content */
+ /* (at least as far as fixed pitch determination goes) */
+ if ( width==-2 ) width = sf->glyphs[i]->width;
+ else if ( width!=sf->glyphs[i]->width ) {
+ width = -1;
+ break;
+ }
+ }
+return(width);
+}
+
+int CIDOneWidth(SplineFont *_sf) {
+ int width, i;
+ int k;
+ SplineFont *sf;
+
+ if ( _sf->cidmaster!=NULL ) _sf = _sf->cidmaster;
+ width = -2;
+ k=0;
+ do {
+ sf = _sf->subfonts==NULL? _sf : _sf->subfonts[k];
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( SCWorthOutputting(sf->glyphs[i]) &&
+ strcmp(sf->glyphs[i]->name,".null")!=0 &&
+ strcmp(sf->glyphs[i]->name,"nonmarkingreturn")!=0 &&
+ (strcmp(sf->glyphs[i]->name,".notdef")!=0 || sf->glyphs[i]->layers[ly_fore].splines!=NULL)) {
+ /* Only trust the width of notdef if it's got some content */
+ /* (at least as far as fixed pitch determination goes) */
+ if ( width==-2 ) width = sf->glyphs[i]->width;
+ else if ( width!=sf->glyphs[i]->width ) {
+ width = -1;
+ break;
+ }
+ }
+ ++k;
+ } while ( k<_sf->subfontcnt );
+return(width);
+}
+
+/* ************************************************************************** */
+/* ********************** Type2 PostScript CharStrings ********************** */
+/* ************************************************************************** */
+
+static real myround2(real pos, int round) {
+ if ( round )
+return( rint(pos));
+
+return( rint(65536*pos)/65536 );
+}
+
+static void AddNumber2(GrowBuf *gb, real pos, int round) {
+ int val, factor;
+ unsigned char *str;
+
+ if ( gb->pt+5>=gb->end )
+ GrowBuffer(gb);
+
+ pos = rint(65536*pos)/65536;
+ if ( round )
+ pos = rint(pos);
+
+ str = gb->pt;
+ if ( pos>32767.99 || pos<-32768 ) {
+ /* same logic for big ints and reals */
+ if ( pos>0x3fffffff || pos<-0x40000000 ) {
+ LogError( _("Number out of range: %g in type2 output (must be [-65536,65535])\n"),
+ pos );
+ if ( pos>0 ) pos = 0x3fffffff; else pos = -0x40000000;
+ }
+ for ( factor=2; factor<32768; factor<<=2 )
+ if ( pos/factor<32767.99 && pos/factor>-32768 )
+ break;
+ AddNumber2(gb,pos/factor,false);
+ AddNumber2(gb,factor,false);
+ if ( gb->pt+2>=gb->end )
+ GrowBuffer(gb);
+ *(gb->pt++) = 0x0c; /* Multiply operator */
+ *(gb->pt++) = 0x18;
+ } else if ( pos!=floor(pos )) {
+ val = pos*65536;
+ *str++ = '\377';
+ *str++ = (val>>24)&0xff;
+ *str++ = (val>>16)&0xff;
+ *str++ = (val>>8)&0xff;
+ *str++ = val&0xff;
+ } else {
+ val = rint(pos);
+ if ( pos>=-107 && pos<=107 )
+ *str++ = val+139;
+ else if ( pos>=108 && pos<=1131 ) {
+ val -= 108;
+ *str++ = (val>>8)+247;
+ *str++ = val&0xff;
+ } else if ( pos>=-1131 && pos<=-108 ) {
+ val = -val;
+ val -= 108;
+ *str++ = (val>>8)+251;
+ *str++ = val&0xff;
+ } else {
+ *str++ = 28;
+ *str++ = (val>>8)&0xff;
+ *str++ = val&0xff;
+ }
+ }
+ gb->pt = str;
+}
+
+static void AddMask2(GrowBuf *gb,uint8 mask[12],int cnt, int oper) {
+ int i;
+
+ if ( gb->pt+1+((cnt+7)>>3)>=gb->end )
+ GrowBuffer(gb);
+ *gb->pt++ = oper; /* hintmask,cntrmask */
+ for ( i=0; i< ((cnt+7)>>3); ++i )
+ *gb->pt++ = mask[i];
+}
+
+static void CounterHints2(GrowBuf *gb, SplineChar *sc, int hcnt) {
+ int i;
+
+ for ( i=0; i<sc->countermask_cnt; ++i )
+ AddMask2(gb,sc->countermasks[i],hcnt,20); /* cntrmask */
+}
+
+static int HintSetup2(GrowBuf *gb,struct hintdb *hdb, SplinePoint *to, int break_subr ) {
+
+ /* We might get a point with a hintmask in a glyph with no conflicts */
+ /* (ie. the initial point when we return to it at the end of the splineset*/
+ /* in that case hdb->cnt will be 0 and we should ignore it */
+ /* components in subroutines depend on not having any hintmasks */
+ if ( to->hintmask==NULL || hdb->cnt==0 || hdb->noconflicts || hdb->skiphm )
+return( false );
+
+ if ( memcmp(hdb->mask,*to->hintmask,(hdb->cnt+7)/8)==0 )
+return( false );
+
+ if ( break_subr )
+ BreakSubroutine(gb,hdb);
+
+ AddMask2(gb,*to->hintmask,hdb->cnt,19); /* hintmask */
+ memcpy(hdb->mask,*to->hintmask,sizeof(HintMask));
+ hdb->donefirsthm = true;
+ if ( break_subr )
+ StartNextSubroutine(gb,hdb);
+return( true );
+}
+
+static void moveto2(GrowBuf *gb,struct hintdb *hdb,SplinePoint *to, int round) {
+ BasePoint temp, *tom;
+
+ if ( gb->pt+18 >= gb->end )
+ GrowBuffer(gb);
+
+ BreakSubroutine(gb,hdb);
+ HintSetup2(gb,hdb,to,false);
+ tom = &to->me;
+ if ( round ) {
+ temp.x = rint(tom->x);
+ temp.y = rint(tom->y);
+ tom = &temp;
+ }
+ if ( hdb->current.x==tom->x ) {
+ AddNumber2(gb,tom->y-hdb->current.y,round);
+ *(gb->pt)++ = 4; /* v move to */
+ } else if ( hdb->current.y==tom->y ) {
+ AddNumber2(gb,tom->x-hdb->current.x,round);
+ *(gb->pt)++ = 22; /* h move to */
+ } else {
+ AddNumber2(gb,tom->x-hdb->current.x,round);
+ AddNumber2(gb,tom->y-hdb->current.y,round);
+ *(gb->pt)++ = 21; /* r move to */
+ }
+ hdb->current.x = rint(32768*tom->x)/32768;
+ hdb->current.y = rint(32768*tom->y)/32768;
+ StartNextSubroutine(gb,hdb);
+}
+
+static Spline *lineto2(GrowBuf *gb,struct hintdb *hdb,Spline *spline, Spline *done, int round) {
+ int cnt, hv, hvcnt;
+ Spline *test, *lastgood, *lasthvgood;
+ BasePoint temp1, temp2, *tom, *fromm;
+ int donehm;
+
+ lastgood = NULL;
+ for ( test=spline, cnt=0; test->knownlinear && cnt<15; ) {
+ ++cnt;
+ lastgood = test;
+ test = test->to->next;
+ /* it will be smaller to use a closepath operator so ignore the */
+ /* ultimate spline */
+ if ( test==done || test==NULL || test->to->next==done )
+ break;
+ }
+
+ HintSetup2(gb,hdb,spline->to,true);
+
+ hv = -1; hvcnt=1; lasthvgood = NULL;
+ if ( spline->from->me.x==spline->to->me.x )
+ hv = 1; /* Vertical */
+ else if ( spline->from->me.y==spline->to->me.y )
+ hv = 0; /* Horizontal */
+ donehm = true;
+ if ( hv!=-1 ) {
+ lasthvgood = spline; hvcnt = 1;
+ if ( cnt!=1 ) {
+ for ( test=spline->to->next; test!=NULL ; test = test->to->next ) {
+ fromm = &test->from->me;
+ if ( round ) {
+ temp2.x = rint(fromm->x);
+ temp2.y = rint(fromm->y);
+ fromm = &temp2;
+ }
+ tom = &test->to->me;
+ if ( round ) {
+ temp1.x = rint(tom->x);
+ temp1.y = rint(tom->y);
+ tom = &temp1;
+ }
+ if ( hv==1 && tom->y==fromm->y )
+ hv = 0;
+ else if ( hv==0 && tom->x==fromm->x )
+ hv = 1;
+ else
+ break;
+ lasthvgood = test;
+ ++hvcnt;
+ if ( test==lastgood )
+ break;
+ }
+ }
+ donehm = true;
+ if ( hvcnt==cnt || hvcnt>=2 ) {
+ /* It's more efficient to do some h/v linetos */
+ for ( test=spline; ; test = test->to->next ) {
+ if ( !donehm && test->to->hintmask!=NULL )
+ break;
+ donehm = false;
+ fromm = &test->from->me;
+ if ( round ) {
+ temp2.x = rint(fromm->x);
+ temp2.y = rint(fromm->y);
+ fromm = &temp2;
+ }
+ tom = &test->to->me;
+ if ( round ) {
+ temp1.x = rint(tom->x);
+ temp1.y = rint(tom->y);
+ tom = &temp1;
+ }
+ if ( fromm->x==tom->x )
+ AddNumber2(gb,tom->y-fromm->y,round);
+ else
+ AddNumber2(gb,tom->x-fromm->x,round);
+ hdb->current.x = rint(32768*tom->x)/32768;
+ hdb->current.y = rint(32768*tom->y)/32768;
+ if ( test==lasthvgood ) {
+ test = test->to->next;
+ break;
+ }
+ }
+ if ( gb->pt+1 >= gb->end )
+ GrowBuffer(gb);
+ *(gb->pt)++ = spline->from->me.x==spline->to->me.x? 7 : 6;
+return( test );
+ }
+ }
+
+ for ( test=spline; test!=NULL; test = test->to->next ) {
+ if ( !donehm && test->to->hintmask!=NULL )
+ break;
+ donehm = false;
+ fromm = &test->from->me;
+ if ( round ) {
+ temp2.x = rint(fromm->x);
+ temp2.y = rint(fromm->y);
+ fromm = &temp2;
+ }
+ tom = &test->to->me;
+ if ( round ) {
+ temp1.x = rint(tom->x);
+ temp1.y = rint(tom->y);
+ tom = &temp1;
+ }
+ AddNumber2(gb,tom->x-fromm->x,round);
+ AddNumber2(gb,tom->y-fromm->y,round);
+ hdb->current.x = rint(32768*tom->x)/32768;
+ hdb->current.y = rint(32768*tom->y)/32768;
+ if ( test==lastgood ) {
+ test = test->to->next;
+ break;
+ }
+ }
+ if ( gb->pt+1 >= gb->end )
+ GrowBuffer(gb);
+ *(gb->pt)++ = 5; /* r line to */
+return( test );
+}
+
+static Spline *curveto2(GrowBuf *gb,struct hintdb *hdb,Spline *spline, Spline *done, int round) {
+ int cnt=0, hv;
+ Spline *first;
+ DBasePoint start;
+ int donehm;
+
+ HintSetup2(gb,hdb,spline->to,true);
+
+ hv = -1;
+ if ( hdb->current.x==myround2(spline->from->nextcp.x,round) &&
+ myround2(spline->to->prevcp.y,round)==myround2(spline->to->me.y,round) )
+ hv = 1;
+ else if ( hdb->current.y==myround2(spline->from->nextcp.y,round) &&
+ myround2(spline->to->prevcp.x,round)==myround2(spline->to->me.x,round) )
+ hv = 0;
+ donehm = true;
+ if ( hv!=-1 ) {
+ first = spline; start = hdb->current;
+ while (
+ (hv==1 && hdb->current.x==myround2(spline->from->nextcp.x,round) &&
+ myround2(spline->to->prevcp.y,round)==myround2(spline->to->me.y,round) ) ||
+ (hv==0 && hdb->current.y==myround2(spline->from->nextcp.y,round) &&
+ myround2(spline->to->prevcp.x,round)==myround2(spline->to->me.x,round) ) ) {
+ if ( !donehm && spline->to->hintmask!=NULL )
+ break;
+ donehm = false;
+ if ( hv==1 ) {
+ AddNumber2(gb,myround2(spline->from->nextcp.y,round)-hdb->current.y,round);
+ AddNumber2(gb,myround2(spline->to->prevcp.x,round)-myround2(spline->from->nextcp.x,round),round);
+ AddNumber2(gb,myround2(spline->to->prevcp.y,round)-myround2(spline->from->nextcp.y,round),round);
+ AddNumber2(gb,myround2(spline->to->me.x,round)-myround2(spline->to->prevcp.x,round),round);
+ hv = 0;
+ } else {
+ AddNumber2(gb,myround2(spline->from->nextcp.x,round)-hdb->current.x,round);
+ AddNumber2(gb,myround2(spline->to->prevcp.x,round)-myround2(spline->from->nextcp.x,round),round);
+ AddNumber2(gb,myround2(spline->to->prevcp.y,round)-myround2(spline->from->nextcp.y,round),round);
+ AddNumber2(gb,myround2(spline->to->me.y,round)-myround2(spline->to->prevcp.y,round),round);
+ hv = 1;
+ }
+ hdb->current.x = myround2(spline->to->me.x,round);
+ hdb->current.y = myround2(spline->to->me.y,round);
+ ++cnt;
+ spline = spline->to->next;
+ if ( spline==done || spline==NULL || cnt>9 || spline->knownlinear )
+ break;
+ }
+ if ( gb->pt+1 >= gb->end )
+ GrowBuffer(gb);
+ *(gb->pt)++ = ( start.x==myround2(first->from->nextcp.x,round) && myround2(first->to->prevcp.y,round)==myround2(first->to->me.y,round) )?
+ 30:31; /* vhcurveto:hvcurveto */
+return( spline );
+ }
+ while ( cnt<6 ) {
+ if ( !donehm && spline->to->hintmask!=NULL )
+ break;
+ donehm = false;
+ hv = -1;
+ if ( hdb->current.x==myround2(spline->from->nextcp.x,round) &&
+ myround2(spline->to->prevcp.y,round)==myround2(spline->to->me.y,round) &&
+ spline->to->next!=NULL &&
+ myround2(spline->to->me.y,round)==myround2(spline->to->nextcp.y,round) &&
+ myround2(spline->to->next->to->prevcp.x,round)==myround2(spline->to->next->to->me.x,round) )
+ break;
+ else if ( hdb->current.y==myround2(spline->from->nextcp.y,round) &&
+ myround2(spline->to->prevcp.x,round)==myround2(spline->to->me.x,round) &&
+ spline->to->next!=NULL &&
+ myround2(spline->to->me.x,round)==myround2(spline->to->nextcp.x,round) &&
+ myround2(spline->to->next->to->prevcp.y,round)==myround2(spline->to->next->to->me.y,round) )
+ break;
+ AddNumber2(gb,myround2(spline->from->nextcp.x,round)-hdb->current.x,round);
+ AddNumber2(gb,myround2(spline->from->nextcp.y,round)-hdb->current.y,round);
+ AddNumber2(gb,myround2(spline->to->prevcp.x,round)-myround2(spline->from->nextcp.x,round),round);
+ AddNumber2(gb,myround2(spline->to->prevcp.y,round)-myround2(spline->from->nextcp.y,round),round);
+ AddNumber2(gb,myround2(spline->to->me.x,round)-myround2(spline->to->prevcp.x,round),round);
+ AddNumber2(gb,myround2(spline->to->me.y,round)-myround2(spline->to->prevcp.y,round),round);
+ hdb->current.x = myround2(spline->to->me.x,round);
+ hdb->current.y = myround2(spline->to->me.y,round);
+ ++cnt;
+ spline = spline->to->next;
+ if ( spline==done || spline==NULL || spline->knownlinear )
+ break;
+ }
+ if ( gb->pt+1 >= gb->end )
+ GrowBuffer(gb);
+ *(gb->pt)++ = 8; /* rrcurveto */
+return( spline );
+}
+
+static void flexto2(GrowBuf *gb,struct hintdb *hdb,Spline *pspline,int round) {
+ BasePoint *c0, *c1, *mid, *end, *nc0, *nc1;
+ Spline *nspline;
+
+ c0 = &pspline->from->nextcp;
+ c1 = &pspline->to->prevcp;
+ mid = &pspline->to->me;
+ nspline = pspline->to->next;
+ nc0 = &nspline->from->nextcp;
+ nc1 = &nspline->to->prevcp;
+ end = &nspline->to->me;
+
+ HintSetup2(gb,hdb,nspline->to,true);
+
+ if ( myround2(c0->y,round)==hdb->current.y && myround2(nc1->y,round)==hdb->current.y &&
+ myround2(end->y,round)==hdb->current.y &&
+ myround2(c1->y,round)==myround2(mid->y,round) && myround2(nc0->y,round)==myround2(mid->y,round) ) {
+ if ( gb->pt+7*6+2 >= gb->end )
+ GrowBuffer(gb);
+ AddNumber2(gb,myround2(c0->x,round)-hdb->current.x,round);
+ AddNumber2(gb,myround2(c1->x,round)-myround2(c0->x,round),round);
+ AddNumber2(gb,myround2(c1->y,round)-myround2(c0->y,round),round);
+ AddNumber2(gb,myround2(mid->x,round)-myround2(c1->x,round),round);
+ AddNumber2(gb,myround2(nc0->x,round)-myround2(mid->x,round),round);
+ AddNumber2(gb,myround2(nc1->x,round)-myround2(nc0->x,round),round);
+ AddNumber2(gb,myround2(end->x,round)-myround2(nc1->x,round),round);
+ *gb->pt++ = 12; *gb->pt++ = 34; /* hflex */
+ } else {
+ if ( gb->pt+11*6+2 >= gb->end )
+ GrowBuffer(gb);
+ AddNumber2(gb,myround2(c0->x,round)-hdb->current.x,round);
+ AddNumber2(gb,myround2(c0->y,round)-hdb->current.y,round);
+ AddNumber2(gb,myround2(c1->x,round)-myround2(c0->x,round),round);
+ AddNumber2(gb,myround2(c1->y,round)-myround2(c0->y,round),round);
+ AddNumber2(gb,myround2(mid->x,round)-myround2(c1->x,round),round);
+ AddNumber2(gb,myround2(mid->y,round)-myround2(c1->y,round),round);
+ AddNumber2(gb,myround2(nc0->x,round)-myround2(mid->x,round),round);
+ AddNumber2(gb,myround2(nc0->y,round)-myround2(mid->y,round),round);
+ AddNumber2(gb,myround2(nc1->x,round)-myround2(nc0->x,round),round);
+ AddNumber2(gb,myround2(nc1->y,round)-myround2(nc0->y,round),round);
+ if ( hdb->current.y==myround2(end->y,round) )
+ AddNumber2(gb,myround2(end->x,round)-myround2(nc1->x,round),round);
+ else
+ AddNumber2(gb,myround2(end->y,round)-myround2(nc1->y,round),round);
+ *gb->pt++ = 12; *gb->pt++ = 37; /* flex1 */
+ }
+
+ hdb->current.x = rint(32768*end->x)/32768;
+ hdb->current.y = rint(32768*end->y)/32768;
+}
+
+static void CvtPsSplineSet2(GrowBuf *gb, SplinePointList *spl,
+ struct hintdb *hdb, int is_order2,int round ) {
+ Spline *spline, *first;
+ SplinePointList temp, *freeme = NULL;
+ int unhinted = true;;
+
+ if ( is_order2 )
+ freeme = spl = SplineSetsPSApprox(spl);
+
+ for ( ; spl!=NULL; spl = spl->next ) {
+ first = NULL;
+ SplineSetReverse(spl);
+ /* PostScript and TrueType store their splines in in reverse */
+ /* orientations. Annoying. Oh well. I shall adopt TrueType and */
+ /* If I reverse the PS splinesets after reading them in, and then */
+ /* again when saving them out, all should be well */
+ if ( spl->first->flexy || spl->first->flexx ) {
+ /* can't handle a flex (mid) point as the first point. rotate the */
+ /* list by one, this is possible because only closed paths have */
+ /* points marked as flex, and because we can't have two flex mid- */
+ /* points in a row */
+ if ( spl->first->hintmask==NULL || spl->first->next->to->hintmask!=NULL ) {
+ /* But we can't rotate it if we expect it to provide us with */
+ /* a hintmask. */
+ temp = *spl;
+ temp.first = temp.last = spl->first->next->to;
+ spl = &temp;
+ }
+ if ( spl->first->flexy || spl->first->flexx ) {
+ /* If we couldn't rotate, or if we rotated to something that */
+ /* also is flexible, then just turn off flex. That's safe */
+ spl->first->flexx = spl->first->flexy = false;
+ }
+ }
+ if ( unhinted && hdb->cnt>0 && spl->first->hintmask!=NULL ) {
+ hdb->mask[0] = ~(*spl->first->hintmask)[0]; /* Make it different */
+ unhinted = false;
+ }
+ moveto2(gb,hdb,spl->first,round);
+ for ( spline = spl->first->next; spline!=NULL && spline!=first; ) {
+ if ( first==NULL ) first = spline;
+ else if ( first->from==spline->to )
+ hdb->skiphm = true;
+ if ( spline->to->flexx || spline->to->flexy ) {
+ flexto2(gb,hdb,spline,round); /* does two adjacent splines */
+ spline = spline->to->next->to->next;
+ } else if ( spline->knownlinear && spline->to == spl->first )
+ /* In Type2 we don't even need a closepath to finish this off */
+ /* (which is good, because there isn't a close path) */
+ break;
+ else if ( spline->knownlinear )
+ spline = lineto2(gb,hdb,spline,first,round);
+ else
+ spline = curveto2(gb,hdb,spline,first,round);
+ }
+ hdb->skiphm = false;
+ /* No closepath oper in type2 fonts, it's implied */
+ SplineSetReverse(spl);
+ /* Of course, I have to Reverse again to get back to my convention after*/
+ /* saving */
+ }
+ SplinePointListsFree(freeme);
+}
+
+bool equalWithTolerence( real a, real b, real tolerence )
+{
+// printf("equalWithTolerence(1) a:%f b:%f tol:%f\n", a, b, tolerence );
+// printf("equalWithTolerence(2) a:%lf b:%lf tol:%lf\n", a, b, tolerence );
+
+ if( tolerence == 0.0 )
+ return a == b;
+
+ return( (b - tolerence < a)
+ && (b + tolerence > a ));
+}
+
+static void DumpHints(GrowBuf *gb,StemInfo *h,int oper,int midoper,int round) {
+ real last = 0, cur;
+ int cnt;
+
+ if ( h==NULL )
+return;
+ cnt = 0;
+ while ( h && h->hintnumber!=-1 ) {
+ /* Type2 hints do not support negative widths except in the case of */
+ /* ghost (now called edge) hints */
+ if ( cnt>24-2 ) { /* stack max = 48 numbers, => 24 hints, leave a bit of slop for the width */
+ if ( gb->pt+1>=gb->end )
+ GrowBuffer(gb);
+ *gb->pt++ = midoper;
+ cnt = 0;
+ }
+ cur = myround2(h->start,round) + myround2(h->width,round);
+ if ( h->width<0 ) {
+ AddNumber2(gb,cur-last,round);
+ AddNumber2(gb,-myround2(h->width,round),round);
+ cur -= myround2(h->width,round);
+ } else if ( h->ghost ) {
+ if ( equalWithTolerence( h->width, 20, GenerateHintWidthEqualityTolerance )) {
+ AddNumber2(gb,myround2(h->start,round)-last+20,round);
+ AddNumber2(gb,-20,round);
+ cur = myround2(h->start,round);
+ } else {
+ AddNumber2(gb,myround2(h->start+21,round)-last,round);
+ AddNumber2(gb,-21,round);
+ cur = myround2(h->start+21,round)-21;
+ }
+ } else {
+ AddNumber2(gb,myround2(h->start,round)-last,round);
+ AddNumber2(gb,myround2(h->width,round),round);
+ }
+ last = cur;
+ h = h->next;
+ ++cnt;
+ }
+ if ( oper!=-1 ) {
+ if ( gb->pt+1>=gb->end )
+ GrowBuffer(gb);
+ *gb->pt++ = oper;
+ }
+}
+
+static void DumpRefsHints(GrowBuf *gb, struct hintdb *hdb,RefChar *cur,StemInfo *h,StemInfo *v,
+ BasePoint *trans, int round,int layer) {
+ uint8 masks[12];
+ int cnt, sets=0;
+ StemInfo *rs;
+
+ /* trans has already been rounded (whole char is translated by an integral amount) */
+
+ /* If we have a subroutine containing conflicts, then its hints will match*/
+ /* ours exactly, and we can use its hintmasks directly */
+ if (( cur->sc->hconflicts || cur->sc->vconflicts ) &&
+ cur->sc->layers[layer].splines!=NULL &&
+ cur->sc->layers[layer].splines->first->hintmask!=NULL ) {
+ AddMask2(gb,*cur->sc->layers[layer].splines->first->hintmask,hdb->cnt,19); /* hintmask */
+ hdb->donefirsthm = true;
+ memcpy(hdb->mask,*cur->sc->layers[layer].splines->first->hintmask,sizeof(HintMask));
+return;
+ }
+
+ if ( h==NULL && v==NULL )
+ IError("hintmask invoked when there are no hints");
+ memset(masks,'\0',sizeof(masks));
+ cnt = 0;
+ while ( h!=NULL && h->hintnumber>=0 ) {
+ /* Horizontal stems are defined by vertical bounds */
+ real pos = (round ? rint(h->start) : h->start) - trans->y;
+ for ( rs = cur->sc->hstem; rs!=NULL; rs=rs->next ) {
+ real rpos = round ? rint(rs->start) : rs->start;
+ if ( rpos==pos && (round ? (rint(rs->width)==rint(h->width)) : (rs->width==h->width)) ) {
+ masks[h->hintnumber>>3] |= 0x80>>(h->hintnumber&7);
+ ++sets;
+ break;
+ } else if ( rpos>pos )
+ break;
+ }
+ h = h->next; ++cnt;
+ }
+ while ( v!=NULL && v->hintnumber>=0 ) {
+ real pos = (round ? rint(v->start) : v->start) - trans->x;
+ for ( rs = cur->sc->vstem; rs!=NULL; rs=rs->next ) {
+ real rpos = round ? rint(rs->start) : rs->start;
+ if ( rpos==pos && (round ? (rint(rs->width)==rint(v->width)) : (rs->width==v->width)) ) {
+ masks[v->hintnumber>>3] |= 0x80>>(v->hintnumber&7);
+ ++sets;
+ break;
+ } else if ( rpos>pos )
+ break;
+ }
+ v = v->next; ++cnt;
+ }
+ BreakSubroutine(gb,hdb);
+ hdb->donefirsthm = true;
+ /* if ( sets!=0 ) */ /* First ref will need a hintmask even if it has no hints (if there are conflicts) */
+ AddMask2(gb,masks,cnt,19); /* hintmask */
+}
+
+static void DummyHintmask(GrowBuf *gb,struct hintdb *hdb) {
+ HintMask hm;
+
+ memset(hm,0,sizeof(hm));
+ if ( hdb->cnt!=0 ) {
+ BreakSubroutine(gb,hdb);
+ hdb->donefirsthm = true;
+ AddMask2(gb,hm,hdb->cnt,19); /* hintmask */
+ }
+}
+
+static void SetTransformedHintMask(GrowBuf *gb,struct hintdb *hdb,
+ SplineChar *sc, RefChar *ref, BasePoint *trans, int round) {
+ HintMask hm;
+
+ if ( HintMaskFromTransformedRef(ref,trans,sc,&hm)!=NULL ) {
+ BreakSubroutine(gb,hdb);
+ hdb->donefirsthm = true;
+ AddMask2(gb,hm,hdb->cnt,19); /* hintmask */
+ } else if ( !hdb->donefirsthm )
+ DummyHintmask(gb,hdb);
+}
+
+static void ExpandRef2(GrowBuf *gb, SplineChar *sc, struct hintdb *hdb,
+ RefChar *r, BasePoint *trans,
+ struct pschars *subrs, int round,int layer) {
+ BasePoint *bpt;
+ BasePoint temp, rtrans;
+ GlyphInfo *gi;
+ /* The only refs I deal with here have no hint conflicts within them */
+
+ rtrans.x = r->transform[4]+trans->x;
+ rtrans.y = r->transform[5]+trans->y;
+ if ( round ) {
+ rtrans.x = rint(rtrans.x);
+ rtrans.y = rint(rtrans.y);
+ }
+
+ BreakSubroutine(gb,hdb);
+ if ( hdb->cnt>0 && !hdb->noconflicts )
+ DumpRefsHints(gb,hdb,r,sc->hstem,sc->vstem,&rtrans,round,layer);
+
+ /* Translate from end of last character to where this one should */
+ /* start (we must have one moveto operator to start off, none */
+ /* in the subr) */
+ bpt = hdb->gi->psubrs[r->sc->lsidebearing].startstop;
+ temp.x = bpt[0].x+rtrans.x;
+ temp.y = bpt[0].y+rtrans.y;
+ if ( hdb->current.x!=temp.x )
+ AddNumber2(gb,temp.x-hdb->current.x,round);
+ if ( hdb->current.y!=temp.y || hdb->current.x==temp.x )
+ AddNumber2(gb,temp.y-hdb->current.y,round);
+ if ( gb->pt+1>=gb->end )
+ GrowBuffer(gb);
+ *gb->pt++ = hdb->current.x==temp.x?4: /* vmoveto */
+ hdb->current.y==temp.y?22: /* hmoveto */
+ 21; /* rmoveto */
+ if ( r->sc->lsidebearing==0x7fff )
+ IError("Attempt to reference an unreferenceable glyph %s", r->sc->name );
+
+ gi = hdb->gi;
+ StartNextSubroutine(gb,hdb);
+ gi->bits[gi->bcnt].psub_index = r->sc->lsidebearing;
+ ++gi->bcnt;
+ gi->justbroken = true;
+ hdb->current.x = bpt[1].x+rtrans.x;
+ hdb->current.y = bpt[1].y+rtrans.y;
+}
+
+static void RSC2PS2(GrowBuf *gb, SplineChar *base,SplineChar *rsc,
+ struct hintdb *hdb, BasePoint *trans, struct pschars *subrs,
+ int flags, int layer ) {
+ BasePoint subtrans;
+ int stationary = trans->x==0 && trans->y==0;
+ RefChar *r, *unsafe=NULL;
+ int unsafecnt=0, allwithouthints=true;
+ int round = (flags&ps_flag_round)? true : false;
+ StemInfo *oldh, *oldv;
+ int hc, vc;
+ SplineSet *freeme, *temp;
+ int wasntconflicted = hdb->noconflicts;
+
+ if ( flags&ps_flag_nohints ) {
+ oldh = rsc->hstem; oldv = rsc->vstem;
+ hc = rsc->hconflicts; vc = rsc->vconflicts;
+ rsc->hstem = NULL; rsc->vstem = NULL;
+ rsc->hconflicts = false; rsc->vconflicts = false;
+ } else {
+ for ( r=rsc->layers[layer].refs; r!=NULL; r=r->next ) {
+ /* Ensure hintmask on refs are set correctly */
+ if (SCNeedsSubsPts(r->sc, ff_otf, layer))
+ SCFigureHintMasks(r->sc, layer);
+
+ if ( !r->justtranslated )
+ continue;
+ if ( r->sc->hconflicts || r->sc->vconflicts ) {
+ ++unsafecnt;
+ unsafe = r;
+ } else if ( r->sc->hstem!=NULL || r->sc->vstem!=NULL )
+ allwithouthints = false;
+ }
+ if ( !stationary )
+ allwithouthints = false;
+ if ( allwithouthints && unsafe!=NULL && hdb->cnt!=NumberHints(&unsafe->sc,1))
+ allwithouthints = false; /* There are other hints elsewhere in the base glyph */
+ }
+
+ if ( unsafe && allwithouthints ) {
+ if ( unsafe->sc->lsidebearing!=0x7fff ) {
+ ExpandRef2(gb,base,hdb,unsafe,trans,subrs,round,layer);
+ } else if ( unsafe->transform[4]==0 && unsafe->transform[5]==0 )
+ RSC2PS2(gb,base,unsafe->sc,hdb,trans,subrs,flags,layer);
+ else
+ unsafe = NULL;
+ } else
+ unsafe = NULL;
+
+ /* What is the hintmask state here? It should not matter */
+ freeme = NULL; temp = rsc->layers[layer].splines;
+ if ( base!=rsc )
+ temp = freeme = SPLCopyTranslatedHintMasks(temp,base,rsc,trans);
+ CvtPsSplineSet2(gb,temp,hdb,rsc->layers[layer].order2,round);
+ SplinePointListsFree(freeme);
+
+ for ( r = rsc->layers[layer].refs; r!=NULL; r = r->next ) if ( r!=unsafe ) {
+ if ( !r->justtranslated ) {
+ if ( !r->sc->hconflicts && !r->sc->vconflicts && !hdb->noconflicts &&
+ r->transform[1]==0 && r->transform[2]==0 &&
+ r->transform[0]>0 && r->transform[3]>0 )
+ SetTransformedHintMask(gb,hdb,base,r,trans,round);
+ if ( !hdb->donefirsthm )
+ DummyHintmask(gb,hdb);
+ temp = SPLCopyTransformedHintMasks(r,base,trans,layer);
+ CvtPsSplineSet2(gb,temp,hdb,rsc->layers[layer].order2,round);
+ SplinePointListsFree(temp);
+ } else if ( r->sc->lsidebearing!=0x7fff &&
+ ((flags&ps_flag_nohints) ||
+ (!r->sc->hconflicts && !r->sc->vconflicts)) ) {
+ ExpandRef2(gb,base,hdb,r,trans,subrs,round,layer);
+ } else {
+ subtrans.x = trans->x + r->transform[4];
+ subtrans.y = trans->y + r->transform[5];
+ if ( !hdb->noconflicts && !r->sc->hconflicts && !r->sc->vconflicts) {
+ SetTransformedHintMask(gb,hdb,base,r,trans,round);
+ hdb->noconflicts = true;
+ }
+ RSC2PS2(gb,base,r->sc,hdb,&subtrans,subrs,flags,layer);
+ hdb->noconflicts = wasntconflicted;
+ }
+ }
+
+ if ( flags&ps_flag_nohints ) {
+ rsc->hstem = oldh; rsc->vstem = oldv;
+ rsc->hconflicts = hc; rsc->vconflicts = vc;
+ }
+}
+
+static unsigned char *SplineChar2PS2(SplineChar *sc,int *len, int nomwid,
+ int defwid, struct pschars *subrs, int flags,
+ GlyphInfo *gi) {
+ GrowBuf gb;
+ unsigned char *ret;
+ struct hintdb hdb;
+ StemInfo *oldh, *oldv;
+ int hc, vc;
+ SplineChar *scs[MmMax];
+ int round = (flags&ps_flag_round)? true : false;
+ HintMask *hm = NULL;
+ BasePoint trans;
+
+ if ( autohint_before_generate && sc->changedsincelasthinted &&
+ !sc->manualhints && !(flags&ps_flag_nohints))
+ SplineCharAutoHint(sc,gi->layer,NULL);
+ if ( !(flags&ps_flag_nohints) && SCNeedsSubsPts(sc,ff_otf,gi->layer))
+ SCFigureHintMasks(sc,gi->layer);
+
+ if ( flags&ps_flag_nohints ) {
+ oldh = sc->hstem; oldv = sc->vstem;
+ hc = sc->hconflicts; vc = sc->vconflicts;
+ sc->hstem = NULL; sc->vstem = NULL;
+ sc->hconflicts = false; sc->vconflicts = false;
+ } else if ( sc->layers[gi->layer].splines!=NULL && !sc->vconflicts &&
+ !sc->hconflicts ) {
+ hm = sc->layers[gi->layer].splines->first->hintmask;
+ sc->layers[gi->layer].splines->first->hintmask = NULL;
+ }
+
+ memset(&gb,'\0',sizeof(gb));
+
+ GrowBuffer(&gb);
+
+ /* store the width on the stack */
+ if ( sc->width==defwid )
+ /* Don't need to do anything for the width */;
+ else
+ AddNumber2(&gb,sc->width-nomwid,round);
+
+ memset(&trans,'\0',sizeof(trans));
+ memset(&hdb,'\0',sizeof(hdb));
+ hdb.scs = scs;
+ hdb.gi = gi;
+ if ( gi!=NULL )
+ gi->bcnt = -1;
+ scs[0] = sc;
+ hdb.noconflicts = !sc->hconflicts && !sc->vconflicts;
+ hdb.cnt = NumberHints(hdb.scs,1);
+ DumpHints(&gb,sc->hstem,sc->hconflicts || sc->vconflicts?18:1,
+ sc->hconflicts || sc->vconflicts?18:1,round);
+ DumpHints(&gb,sc->vstem,sc->hconflicts || sc->vconflicts?-1:3,
+ sc->hconflicts || sc->vconflicts?23:3,round);
+ CounterHints2(&gb, sc, hdb.cnt );
+ RSC2PS2(&gb,sc,sc,&hdb,&trans,subrs,flags,gi->layer);
+
+ if ( gi->bcnt==-1 ) { /* If it's whitespace */
+ gi->bcnt = 0;
+ StartNextSubroutine(&gb,&hdb);
+ }
+ BreakSubroutine(&gb,&hdb);
+ MoveSubrsToChar(gi);
+ ret = NULL;
+
+ free(gb.base);
+ if ( flags&ps_flag_nohints ) {
+ sc->hstem = oldh; sc->vstem = oldv;
+ sc->hconflicts = hc; sc->vconflicts = vc;
+ } else if ( hm!=NULL )
+ sc->layers[gi->layer].splines->first->hintmask = hm;
+return( ret );
+}
+
+static SplinePoint *LineTo(SplinePoint *last, int x, int y) {
+ SplinePoint *sp = SplinePointCreate(x,y);
+ SplineMake3(last,sp);
+return( sp );
+}
+
+static void Type2NotDefSplines(SplineFont *sf,SplineChar *sc,int layer) {
+ /* I'd always assumed that Type2 notdefs would look like type1 notdefs */
+ /* but they don't, they look like truetype notdefs. And Ralf Stubner */
+ /* points out that the spec says they should. So make a box here */
+ int stem, ymax;
+ SplineSet *inner, *ss;
+ StemInfo *h, *hints;
+
+ stem = (sf->ascent+sf->descent)/20;
+ ymax = 2*sf->ascent/3;
+
+ ss = chunkalloc(sizeof(SplineSet));
+ ss->first = ss->last = SplinePointCreate(stem,0);
+ ss->last = LineTo(ss->last,stem,ymax);
+ ss->last = LineTo(ss->last,sc->width-stem,ymax);
+ ss->last = LineTo(ss->last,sc->width-stem,0);
+ SplineMake3(ss->last,ss->first);
+ ss->last = ss->first;
+
+ ss->next = inner = chunkalloc(sizeof(SplineSet));
+ inner->first = inner->last = SplinePointCreate(2*stem,stem);
+ inner->last = LineTo(inner->last,sc->width-2*stem,stem);
+ inner->last = LineTo(inner->last,sc->width-2*stem,ymax-stem);
+ inner->last = LineTo(inner->last,2*stem,ymax-stem);
+ SplineMake3(inner->last,inner->first);
+ inner->last = inner->first;
+
+ sc->layers[layer].splines = ss;
+
+ hints = chunkalloc(sizeof(StemInfo));
+ hints->start = stem;
+ hints->width = stem;
+ hints->next = h = chunkalloc(sizeof(StemInfo));
+ h->start = sc->width-2*stem;
+ h->width = stem;
+ sc->vstem = hints;
+
+ hints = chunkalloc(sizeof(StemInfo));
+ hints->start = 0;
+ hints->width = stem;
+ hints->next = h = chunkalloc(sizeof(StemInfo));
+ h->start = ymax-stem;
+ h->width = stem;
+ sc->hstem = hints;
+}
+
+#ifdef FONTFORGE_CONFIG_PS_REFS_GET_SUBRS
+/* This char has hint conflicts. Check to see if we can put it into a subr */
+/* in spite of that. If there is at least one dependent character which: */
+/* refers to us without translating us */
+/* and all its other refs contain no hints at all */
+static int Type2SpecialCase(SplineChar *sc) {
+ struct splinecharlist *d;
+ RefChar *r;
+
+ for ( d=sc->dependents; d!=NULL; d=d->next ) {
+ for ( r=d->sc->layers[layer].refs; r!=NULL; r = r->next ) {
+ if ( autohint_before_generate && r->sc!=NULL &&
+ r->sc->changedsincelasthinted && !r->sc->manualhints )
+ SplineCharAutoHint(r->sc,NULL);
+ if ( r->transform[0]!=1 || r->transform[1]!=0 ||
+ r->transform[2]!=0 || r->transform[3]!=1 )
+ break;
+ if ( r->sc!=sc && (r->sc->hstem!=NULL || r->sc->vstem!=NULL))
+ break;
+ if ( r->sc==sc && (r->transform[4]!=0 || r->transform[5]!=0))
+ break;
+ }
+ if ( r==NULL )
+return( true );
+ }
+return( false );
+}
+#endif /* FONTFORGE_CONFIG_PS_REFS_GET_SUBRS */
+
+/* Mark those glyphs which can live totally in subrs */
+static void SplineFont2FullSubrs2(int flags,GlyphInfo *gi) {
+ int i;
+ SplineChar *sc;
+#ifdef FONTFORGE_CONFIG_PS_REFS_GET_SUBRS
+ int cc;
+ RefChar *r;
+ struct potentialsubrs *ps;
+ SplineSet *spl;
+#endif /* FONTFORGE_CONFIG_PS_REFS_GET_SUBRS */
+
+ if ( !autohint_before_generate && !(flags&ps_flag_nohints))
+ SplineFontAutoHintRefs(gi->sf,gi->layer);
+
+ for ( i=0; i<gi->glyphcnt; ++i ) if ( (sc=gi->gb[i].sc)!=NULL )
+ sc->lsidebearing = 0x7fff;
+
+/* This code allows us to put whole glyphs into subroutines */
+/* I found slight improvements in space on some fonts, and large increases */
+/* in others. So I'm disabling it for now */
+#ifdef FONTFORGE_CONFIG_PS_REFS_GET_SUBRS
+ /* We don't allow refs to refs. It's too complex */
+ for ( i=0; i<gi->glyphcnt; ++i ) if ( (sc=gi->gb[i].sc)!=NULL ) {
+ if ( SCWorthOutputting(sc) &&
+ (( sc->layers[layer].refs==NULL && sc->dependents!=NULL &&
+ ( (!sc->hconflicts && !sc->vconflicts) ||
+ Type2SpecialCase(sc)) ) )) {
+ /* if the glyph is a single contour with no hintmasks then */
+ /* our single contour code will find it. If we do it here too */
+ /* we'll get a subr which points to another subr. Very dull and */
+ /* a waste of space */
+ cc = 0;
+ for ( spl=sc->layers[layer].splines; spl!=NULL; spl=spl->next )
+ ++cc;
+ for ( r= sc->layers[layer].refs; r!=NULL && cc<2 ; r=r->next ) {
+ for ( spl=r->layers[0].splines; spl!=NULL; spl=spl->next )
+ ++cc;
+ }
+ if ( cc<2 )
+ continue;
+ /* Put the */
+ /* character into a subr if it is referenced by other characters */
+ if ( gi->pcnt>=gi->pmax )
+ gi->psubrs = realloc(gi->psubrs,(gi->pmax+=gi->glyphcnt)*sizeof(struct potentialsubrs));
+ ps = &gi->psubrs[gi->pcnt];
+ memset(ps,0,sizeof(*ps)); /* set cnt to 0 */
+ ps->idx = gi->pcnt++;
+ ps->full_glyph_index = i;
+ sc->lsidebearing = gi->pcnt-1;
+ ps->startstop = FigureStartStop(sc,gi);
+ }
+ }
+#endif /* FONTFORGE_CONFIG_PS_REFS_GET_SUBRS */
+}
+
+struct pschars *SplineFont2ChrsSubrs2(SplineFont *sf, int nomwid, int defwid,
+ const int *bygid, int cnt, int flags, struct pschars **_subrs, int layer) {
+ struct pschars *subrs, *chrs;
+ int i,j,k,scnt;
+ SplineChar *sc;
+ GlyphInfo gi;
+ SplineChar dummynotdef;
+
+ if ( !autohint_before_generate && !(flags&ps_flag_nohints))
+ SplineFontAutoHintRefs(sf,layer);
+
+ memset(&gi,0,sizeof(gi));
+ memset(&gi.hashed,-1,sizeof(gi.hashed));
+ gi.instance_count = 1;
+ gi.sf = sf;
+ gi.layer = layer;
+ gi.glyphcnt = cnt;
+ gi.bygid = bygid;
+ gi.gb = calloc(cnt,sizeof(struct glyphbits));
+ gi.pmax = 3*cnt;
+ gi.psubrs = malloc(gi.pmax*sizeof(struct potentialsubrs));
+ for ( i=0; i<cnt; ++i ) {
+ int gid = bygid[i];
+ if ( i==0 && gid==-1 ) {
+ sc = &dummynotdef;
+ memset(sc,0,sizeof(dummynotdef));
+ dummynotdef.name = ".notdef";
+ dummynotdef.parent = sf;
+ dummynotdef.layer_cnt = sf->layer_cnt;
+ dummynotdef.layers = calloc(sf->layer_cnt,sizeof(Layer));
+ dummynotdef.width = SFOneWidth(sf);
+ if ( dummynotdef.width==-1 )
+ dummynotdef.width = (sf->ascent+sf->descent)/2;
+ Type2NotDefSplines(sf,&dummynotdef,layer);
+ } else if ( gid!=-1 )
+ sc = sf->glyphs[gid];
+ else
+ continue;
+ gi.gb[i].sc = sc;
+ if ( autohint_before_generate && sc!=NULL &&
+ sc->changedsincelasthinted && !sc->manualhints &&
+ !(flags&ps_flag_nohints))
+ SplineCharAutoHint(sc,layer,NULL);
+ sc->lsidebearing = 0x7fff;
+ }
+ MarkTranslationRefs(sf,layer);
+ SplineFont2FullSubrs2(flags,&gi);
+
+ for ( i=0; i<cnt; ++i ) {
+ if ( (sc = gi.gb[i].sc)==NULL )
+ continue;
+ gi.active = &gi.gb[i];
+ SplineChar2PS2(sc,NULL,nomwid,defwid,NULL,flags,&gi);
+ ff_progress_next();
+ }
+
+ for ( i=scnt=0; i<gi.pcnt; ++i ) {
+ /* A subroutine call takes somewhere between 2 and 4 bytes itself. */
+ /* and we must add a return statement to the end. We don't want to */
+ /* make things bigger */
+ /* if we have more than 65535 subrs a subr call can take 9 bytes */
+ if ( gi.psubrs[i].full_glyph_index!=-1 )
+ gi.psubrs[i].idx = scnt++;
+ else if ( gi.psubrs[i].cnt*gi.psubrs[i].len>(gi.psubrs[i].cnt*4)+gi.psubrs[i].len+1 )
+ gi.psubrs[i].idx = scnt++;
+ else
+ gi.psubrs[i].idx = -1;
+ }
+ subrs = calloc(1,sizeof(struct pschars));
+ subrs->cnt = scnt;
+ subrs->next = scnt;
+ subrs->lens = malloc(scnt*sizeof(int));
+ subrs->values = malloc(scnt*sizeof(unsigned char *));
+ subrs->bias = scnt<1240 ? 107 :
+ scnt<33900 ? 1131 : 32768;
+ for ( i=0; i<gi.pcnt; ++i ) {
+ if ( gi.psubrs[i].idx != -1 ) {
+ scnt = gi.psubrs[i].idx;
+ subrs->lens[scnt] = gi.psubrs[i].len+1;
+ subrs->values[scnt] = malloc(subrs->lens[scnt]);
+ memcpy(subrs->values[scnt],gi.psubrs[i].data,gi.psubrs[i].len);
+ subrs->values[scnt][gi.psubrs[i].len] = 11; /* Add a return to end of subr */
+ }
+ }
+
+ chrs = calloc(1,sizeof(struct pschars));
+ chrs->cnt = cnt;
+ chrs->next = cnt;
+ chrs->lens = malloc(cnt*sizeof(int));
+ chrs->values = malloc(cnt*sizeof(unsigned char *));
+ chrs->keys = malloc(cnt*sizeof(char *));
+ for ( i=0; i<cnt; ++i ) {
+ int len=0;
+ uint8 *vals;
+ struct glyphbits *gb = &gi.gb[i];
+ if ( gb->sc==NULL )
+ continue;
+ chrs->keys[i] = copy(gb->sc->name);
+ for ( k=0; k<2; ++k ) if ( k!=0 || gb->sc->lsidebearing!=0x7fff ) {
+ for ( j=0; j<gb->bcnt; ++j ) {
+ if ( k!=0 || j!=0 )
+ len += gb->bits[j].dlen;
+ if ( k==1 && gb->sc->lsidebearing!=0x7fff ) {
+ int si = gi.psubrs[ gb->sc->lsidebearing ].idx;
+ len += 1 + (si<=107 && si>=-107?1:si<=1131 && si>=-1131?2:si>=-32768 && si<32767?3:8);
+ break;
+ }
+ if ( gi.psubrs[ gb->bits[j].psub_index ].idx==-1 )
+ len += gi.psubrs[ gb->bits[j].psub_index ].len;
+ else {
+ int si = gi.psubrs[ gb->bits[j].psub_index ].idx - subrs->bias;
+ /* space for the number (subroutine index) */
+ if ( si>=-107 && si<=107 )
+ ++len;
+ else if ( si>=-1131 && si<=1131 )
+ len += 2;
+ else if ( si>=-32768 && si<=32767 )
+ len += 3;
+ else
+ len += 8;
+ /* space for the subroutine operator */
+ ++len;
+ }
+ }
+ if ( k==0 ) {
+ int si = gi.psubrs[ gb->sc->lsidebearing ].idx;
+ subrs->lens[si] = len+1;
+ vals = subrs->values[si] = malloc(len+2);
+ } else {
+ chrs->lens[i] = len+1;
+ vals = chrs->values[i] = malloc(len+2); /* space for endchar and a final NUL (which is really meaningless, but makes me feel better) */
+ }
+
+ len = 0;
+ for ( j=0; j<gb->bcnt; ++j ) {
+ int si;
+ if ( k!=0 || j!=0 ) {
+ memcpy(vals+len,gb->bits[j].data,gb->bits[j].dlen);
+ len += gb->bits[j].dlen;
+ }
+ si = 0x80000000;
+ if ( k==1 && gb->sc->lsidebearing!=0x7fff )
+ si = gi.psubrs[ gb->sc->lsidebearing ].idx - subrs->bias;
+ else if ( gi.psubrs[ gb->bits[j].psub_index ].idx==-1 ) {
+ memcpy(vals+len,gi.psubrs[ gb->bits[j].psub_index ].data,
+ gi.psubrs[ gb->bits[j].psub_index ].len);
+ len += gi.psubrs[ gb->bits[j].psub_index ].len;
+ } else
+ si = gi.psubrs[ gb->bits[j].psub_index ].idx - subrs->bias;
+ if ( si!=0x80000000 ) {
+ /* space for the number (subroutine index) */
+ if ( si>=-107 && si<=107 )
+ vals[len++] = si+139;
+ else if ( si>0 && si<=1131 ) {
+ si-=108;
+ vals[len++] = (si>>8)+247;
+ vals[len++] = si&0xff;
+ } else if ( si>=-1131 && si<0 ) {
+ si=(-si)-108;
+ vals[len++] = (si>>8)+251;
+ vals[len++] = si&0xff;
+ } else if ( si>=-32768 && si<=32767 ) {
+ vals[len++] = 28;
+ vals[len++] = (si>>8)&0xff;
+ vals[len++] = si&0xff;
+ } else {
+ /* store as fixed point, then multiply by 64. Takes 8 bytes */
+ si *= (65536/64);
+ vals[len++] = '\377';
+ vals[len++] = (si>>24)&0xff;
+ vals[len++] = (si>>16)&0xff;
+ vals[len++] = (si>>8)&0xff;
+ vals[len++] = si&0xff;
+ vals[len++] = 64 + 139;
+ vals[len++] = 0xc; vals[len++] = 0x18; /* Multiply */
+ }
+
+ /* space for the subroutine operator */
+ vals[len++] = 10;
+ }
+ if ( k==1 && gb->sc->lsidebearing!=0x7fff )
+ break;
+ }
+ if ( k==0 ) {
+ vals[len++] = 11; /* return */
+ vals[len] = '\0';
+ } else {
+ vals[len++] = 14; /* endchar */
+ vals[len] = '\0';
+ }
+ }
+ }
+
+ GIFree(&gi,&dummynotdef);
+ *_subrs = subrs;
+return( chrs );
+}
+
+struct pschars *CID2ChrsSubrs2(SplineFont *cidmaster,struct fd2data *fds,
+ int flags, struct pschars **_glbls, int layer) {
+ struct pschars *chrs, *glbls;
+ int i, j, cnt, cid, max, fd;
+ int *scnts;
+ SplineChar *sc;
+ SplineFont *sf = NULL;
+ /* In a cid-keyed font, cid 0 is defined to be .notdef so there are no */
+ /* special worries. If it is defined we use it. If it is not defined */
+ /* we add it. */
+ GlyphInfo gi;
+ SplineChar dummynotdef;
+
+ max = 0;
+ for ( i=0; i<cidmaster->subfontcnt; ++i ) {
+ if ( max<cidmaster->subfonts[i]->glyphcnt )
+ max = cidmaster->subfonts[i]->glyphcnt;
+ MarkTranslationRefs(cidmaster->subfonts[i],layer);
+ }
+ cnt = 1; /* for .notdef */
+ for ( cid = 1; cid<max; ++cid ) {
+ for ( i=0; i<cidmaster->subfontcnt; ++i ) {
+ sf = cidmaster->subfonts[i];
+ if ( cid<sf->glyphcnt && (sc=sf->glyphs[cid])!=NULL ) {
+ sc->ttf_glyph = -1;
+ sc->lsidebearing = 0x7fff;
+ if ( SCWorthOutputting(sc))
+ ++cnt;
+ break;
+ }
+ }
+ }
+
+ memset(&gi,0,sizeof(gi));
+ memset(&gi.hashed,-1,sizeof(gi.hashed));
+ gi.instance_count = 1;
+ gi.sf = sf;
+ gi.glyphcnt = cnt;
+ gi.bygid = NULL;
+ gi.gb = calloc(cnt,sizeof(struct glyphbits));
+ gi.pmax = 3*cnt;
+ gi.psubrs = malloc(gi.pmax*sizeof(struct potentialsubrs));
+ gi.layer = layer;
+
+ for ( cid = cnt = 0; cid<max; ++cid ) {
+ sf = NULL;
+ for ( i=0; i<cidmaster->subfontcnt; ++i ) {
+ sf = cidmaster->subfonts[i];
+ if ( cid<sf->glyphcnt && SCWorthOutputting(sf->glyphs[cid]) )
+ break;
+ }
+ if ( cid!=0 && i==cidmaster->subfontcnt ) {
+ sc=NULL;
+ } else if ( i==cidmaster->subfontcnt ) {
+ /* They didn't define CID 0 */
+ sc = &dummynotdef;
+ /* Place it in the final subfont (which is what sf points to) */
+ memset(sc,0,sizeof(dummynotdef));
+ dummynotdef.name = ".notdef";
+ dummynotdef.parent = sf;
+ dummynotdef.layer_cnt = layer+1;
+ dummynotdef.layers = calloc(layer+1,sizeof(Layer));
+ dummynotdef.width = SFOneWidth(sf);
+ if ( dummynotdef.width==-1 )
+ dummynotdef.width = (sf->ascent+sf->descent);
+ Type2NotDefSplines(sf,&dummynotdef,layer);
+ gi.gb[cnt].sc = sc;
+ gi.gb[cnt].fd = i = cidmaster->subfontcnt-1;
+ } else {
+ gi.gb[cnt].sc = sc = sf->glyphs[cid];
+ gi.gb[cnt].fd = i;
+ }
+ if ( sc!=NULL ) {
+ sc->lsidebearing = 0x7fff;
+ gi.active = &gi.gb[cnt];
+ sc->ttf_glyph = cnt++;
+ SplineChar2PS2(sc,NULL,fds[i].nomwid,fds[i].defwid,NULL,flags,&gi);
+ }
+ ff_progress_next();
+ }
+
+ scnts = calloc( cidmaster->subfontcnt+1,sizeof(int));
+ for ( i=0; i<gi.pcnt; ++i ) {
+ gi.psubrs[i].idx = -1;
+ if ( gi.psubrs[i].cnt*gi.psubrs[i].len>(gi.psubrs[i].cnt*4)+gi.psubrs[i].len+1 )
+ gi.psubrs[i].idx = scnts[gi.psubrs[i].fd+1]++;
+ }
+
+ glbls = calloc(1,sizeof(struct pschars));
+ glbls->cnt = scnts[0];
+ glbls->next = scnts[0];
+ glbls->lens = malloc(scnts[0]*sizeof(int));
+ glbls->values = malloc(scnts[0]*sizeof(unsigned char *));
+ glbls->bias = scnts[0]<1240 ? 107 :
+ scnts[0]<33900 ? 1131 : 32768;
+ for ( fd=0; fd<cidmaster->subfontcnt; ++fd ) {
+ fds[fd].subrs = calloc(1,sizeof(struct pschars));
+ fds[fd].subrs->cnt = scnts[fd+1];
+ fds[fd].subrs->next = scnts[fd+1];
+ fds[fd].subrs->lens = malloc(scnts[fd+1]*sizeof(int));
+ fds[fd].subrs->values = malloc(scnts[fd+1]*sizeof(unsigned char *));
+ fds[fd].subrs->bias = scnts[fd+1]<1240 ? 107 :
+ scnts[fd+1]<33900 ? 1131 : 32768;
+ }
+ free( scnts);
+
+ for ( i=0; i<gi.pcnt; ++i ) {
+ if ( gi.psubrs[i].idx != -1 ) {
+ struct pschars *subrs = gi.psubrs[i].fd==-1 ? glbls : fds[gi.psubrs[i].fd].subrs;
+ int scnt = gi.psubrs[i].idx;
+ subrs->lens[scnt] = gi.psubrs[i].len+1;
+ subrs->values[scnt] = malloc(subrs->lens[scnt]);
+ memcpy(subrs->values[scnt],gi.psubrs[i].data,gi.psubrs[i].len);
+ subrs->values[scnt][gi.psubrs[i].len] = 11; /* Add a return to end of subr */
+ }
+ }
+
+
+ chrs = calloc(1,sizeof(struct pschars));
+ chrs->cnt = cnt;
+ chrs->next = cnt;
+ chrs->lens = malloc(cnt*sizeof(int));
+ chrs->values = malloc(cnt*sizeof(unsigned char *));
+ chrs->keys = malloc(cnt*sizeof(char *));
+ for ( i=0; i<cnt; ++i ) {
+ int len=0;
+ struct glyphbits *gb = &gi.gb[i];
+ chrs->keys[i] = copy(gb->sc->name);
+ for ( j=0; j<gb->bcnt; ++j ) {
+ len += gb->bits[j].dlen;
+ if ( gi.psubrs[ gb->bits[j].psub_index ].idx==-1 )
+ len += gi.psubrs[ gb->bits[j].psub_index ].len;
+ else {
+ struct pschars *subrs = gi.psubrs[gb->bits[j].psub_index].fd==-1 ? glbls : fds[gi.psubrs[gb->bits[j].psub_index].fd].subrs;
+ int si = gi.psubrs[ gb->bits[j].psub_index ].idx - subrs->bias;
+ /* space for the number (subroutine index) */
+ if ( si>=-107 && si<=107 )
+ ++len;
+ else if ( si>=-1131 && si<=1131 )
+ len += 2;
+ else if ( si>=-32768 && si<=32767 )
+ len += 3;
+ else
+ len += 8;
+ /* space for the subroutine operator */
+ ++len;
+ }
+ }
+ chrs->lens[i] = len+1;
+ chrs->values[i] = malloc(len+2); /* space for endchar and a final NUL (which is really meaningless, but makes me feel better) */
+
+ len = 0;
+ for ( j=0; j<gb->bcnt; ++j ) {
+ memcpy(chrs->values[i]+len,gb->bits[j].data,gb->bits[j].dlen);
+ len += gb->bits[j].dlen;
+ if ( gi.psubrs[ gb->bits[j].psub_index ].idx==-1 ) {
+ memcpy(chrs->values[i]+len,gi.psubrs[ gb->bits[j].psub_index ].data,
+ gi.psubrs[ gb->bits[j].psub_index ].len);
+ len += gi.psubrs[ gb->bits[j].psub_index ].len;
+ } else {
+ struct pschars *subrs = gi.psubrs[gb->bits[j].psub_index].fd==-1 ? glbls : fds[gi.psubrs[gb->bits[j].psub_index].fd].subrs;
+ int si = gi.psubrs[ gb->bits[j].psub_index ].idx - subrs->bias;
+ /* space for the number (subroutine index) */
+ if ( si>=-107 && si<=107 )
+ chrs->values[i][len++] = si+139;
+ else if ( si>0 && si<=1131 ) {
+ si-=108;
+ chrs->values[i][len++] = (si>>8)+247;
+ chrs->values[i][len++] = si&0xff;
+ } else if ( si>=-1131 && si<0 ) {
+ si=(-si)-108;
+ chrs->values[i][len++] = (si>>8)+251;
+ chrs->values[i][len++] = si&0xff;
+ } else if ( si>=-32768 && si<=32767 ) {
+ chrs->values[i][len++] = 28;
+ chrs->values[i][len++] = (si>>8)&0xff;
+ chrs->values[i][len++] = si&0xff;
+ } else {
+ /* store as fixed point, then multiply by 64. Takes 8 bytes */
+ si *= (65536/64);
+ chrs->values[i][len++] = '\377';
+ chrs->values[i][len++] = (si>>24)&0xff;
+ chrs->values[i][len++] = (si>>16)&0xff;
+ chrs->values[i][len++] = (si>>8)&0xff;
+ chrs->values[i][len++] = si&0xff;
+ chrs->values[i][len++] = 64 + 139;
+ chrs->values[i][len++] = 0xc; chrs->values[i][len++] = 0x18; /* Multiply */
+ }
+ /* space for the subroutine operator */
+ if ( gi.psubrs[ gb->bits[j].psub_index ].fd==-1 ) {
+ chrs->values[i][len++] = 29;
+ } else
+ chrs->values[i][len++] = 10;
+ }
+ }
+ chrs->values[i][len++] = 14; /* endchar */
+ chrs->values[i][len] = '\0';
+ }
+ GIFree(&gi,&dummynotdef);
+ *_glbls = glbls;
+return( chrs );
+}
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinesaveafm.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinesaveafm.c
new file mode 100644
index 00000000000..6fc6de1ead0
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splinesaveafm.c
@@ -0,0 +1,322 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h" /* For Error */
+
+
+/* ************************************************************************** */
+/* **************************** Reading OFM files *************************** */
+/* ************************************************************************** */
+
+#define ExtShort(off) (((ext+2*off)[0]<<8)|(ext+2*off)[1])
+
+/* ************************************************************************** */
+
+int SCDrawsSomething(SplineChar *sc) {
+ int layer,l;
+ RefChar *ref;
+
+ if ( sc==NULL )
+return( false );
+ for ( layer = 0; layer<sc->layer_cnt; ++layer ) if ( !sc->layers[layer].background ) {
+ if ( sc->layers[layer].splines!=NULL)
+return( true );
+ for ( ref = sc->layers[layer].refs; ref!=NULL; ref=ref->next )
+ for ( l=0; l<ref->layer_cnt; ++l )
+ if ( ref->layers[l].splines!=NULL )
+return( true );
+ }
+return( false );
+}
+
+int SCWorthOutputting(SplineChar *sc) {
+return( sc!=NULL &&
+ ( SCDrawsSomething(sc) || sc->widthset || sc->anchor!=NULL ||
+#if HANYANG
+ sc->compositionunit ||
+#endif
+ sc->dependents!=NULL /*||
+ sc->width!=sc->parent->ascent+sc->parent->descent*/ ) );
+}
+
+void SFLigatureCleanup(SplineFont *sf) {
+ LigList *l, *next;
+ struct splinecharlist *scl, *sclnext;
+ int j;
+
+ if (sf->internal_temp)
+return;
+
+ for ( j=0; j<sf->glyphcnt; ++j ) if ( sf->glyphs[j]!=NULL ) {
+ for ( l = sf->glyphs[j]->ligofme; l!=NULL; l = next ) {
+ next = l->next;
+ for ( scl = l->components; scl!=NULL; scl = sclnext ) {
+ sclnext = scl->next;
+ chunkfree(scl,sizeof(struct splinecharlist));
+ }
+ if ( l->lig->temporary ) {
+ free(l->lig->u.lig.components);
+ chunkfree(l->lig,sizeof(PST));
+ }
+ free( l );
+ }
+ sf->glyphs[j]->ligofme = NULL;
+ }
+}
+
+void SFLigaturePrepare(SplineFont *sf) {
+ PST *lig;
+ LigList *ll;
+ int i,j,k,ch;
+ char *pt, *ligstart;
+ SplineChar *sc, *tsc;
+ struct splinecharlist *head, *last;
+ int ccnt, lcnt, lmax=20;
+ LigList **all = malloc(lmax*sizeof(LigList *));
+
+ /* First clear out any old stuff */
+ for ( j=0; j<sf->glyphcnt; ++j ) if ( sf->glyphs[j]!=NULL )
+ sf->glyphs[j]->ligofme = NULL;
+
+ /* Attach all the ligatures to the first character of their components */
+ /* Figure out what the components are, and if they all exist */
+ /* we're only interested in the lig if all components are worth outputting */
+ for ( i=0 ; i<sf->glyphcnt; ++i ) if ( SCWorthOutputting(sf->glyphs[i]) && sf->glyphs[i]->possub!=NULL ) {
+ for ( lig = sf->glyphs[i]->possub; lig!=NULL; lig=lig->next ) if ( lig->type==pst_ligature ) {
+ ligstart = lig->u.lig.components;
+ last = head = NULL; sc = NULL;
+ for ( pt = ligstart; *pt!='\0'; ) {
+ char *start = pt;
+ for ( ; *pt!='\0' && *pt!=' '; ++pt );
+ ch = *pt; *pt = '\0';
+ tsc = SFGetChar(sf,-1,start);
+ *pt = ch;
+ if ( tsc!=NULL ) {
+ if ( !SCWorthOutputting(tsc)) {
+ sc = NULL;
+ break;
+ }
+ if ( sc==NULL ) {
+ sc = tsc;
+ ccnt = 1;
+ } else {
+ struct splinecharlist *cur = chunkalloc(sizeof(struct splinecharlist));
+ if ( head==NULL )
+ head = cur;
+ else
+ last->next = cur;
+ last = cur;
+ cur->sc = tsc;
+ cur->next = NULL;
+ ++ccnt;
+ }
+ } else {
+ sc = NULL;
+ break;
+ }
+ while ( *pt==' ' ) ++pt;
+ }
+ if ( sc!=NULL ) {
+ ll = malloc(sizeof(LigList));
+ ll->lig = lig;
+ ll->next = sc->ligofme;
+ ll->first = sc;
+ ll->components = head;
+ ll->ccnt = ccnt;
+ sc->ligofme = ll;
+ } else {
+ while ( head!=NULL ) {
+ last = head->next;
+ chunkfree(head,sizeof(*head));
+ head = last;
+ }
+ }
+ }
+ }
+ for ( i=0 ; i<sf->glyphcnt; ++i ) if ( (sc=sf->glyphs[i])!=NULL && sc->ligofme!=NULL ) {
+ for ( ll=sc->ligofme, lcnt=0; ll!=NULL; ll=ll->next, ++lcnt );
+ /* Finally, order the list so that the longest ligatures are first */
+ if ( lcnt>1 ) {
+ if ( lcnt>=lmax )
+ all = realloc(all,(lmax=lcnt+30)*sizeof(LigList *));
+ for ( ll=sc->ligofme, k=0; ll!=NULL; ll=ll->next, ++k )
+ all[k] = ll;
+ for ( k=0; k<lcnt-1; ++k ) for ( j=k+1; j<lcnt; ++j )
+ if ( all[k]->ccnt<all[j]->ccnt ) {
+ ll = all[k];
+ all[k] = all[j];
+ all[j] = ll;
+ }
+ sc->ligofme = all[0];
+ for ( k=0; k<lcnt-1; ++k )
+ all[k]->next = all[k+1];
+ all[k]->next = NULL;
+ }
+ }
+ free( all );
+}
+
+void SFKernCleanup(SplineFont *sf,int isv) {
+ int i;
+ KernPair *kp, *p, *n;
+ OTLookup *otl, *otlp, *otln;
+
+ if (sf->internal_temp)
+return;
+
+ if ( (!isv && sf->kerns==NULL) || (isv && sf->vkerns==NULL) ) /* can't have gotten messed up */
+return;
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ for ( kp = isv ? sf->glyphs[i]->vkerns : sf->glyphs[i]->kerns, p=NULL; kp!=NULL; kp = n ) {
+ n = kp->next;
+ if ( kp->kcid!=0 ) {
+ if ( p!=NULL )
+ p->next = n;
+ else if ( isv )
+ sf->glyphs[i]->vkerns = n;
+ else
+ sf->glyphs[i]->kerns = n;
+ chunkfree(kp,sizeof(*kp));
+ } else
+ p = kp;
+ }
+ }
+ for ( otl=sf->gpos_lookups, otlp = NULL; otl!=NULL; otl = otln ) {
+ otln = otl->next;
+ if ( otl->temporary_kern ) {
+ if ( otlp!=NULL )
+ otlp->next = otln;
+ else
+ sf->gpos_lookups = otln;
+ OTLookupFree(otl);
+ } else
+ otlp = otl;
+ }
+}
+
+static void KCSfree(SplineChar ***scs,int cnt) {
+ int i;
+ for ( i=1; i<cnt; ++i )
+ free( scs[i]);
+ free(scs);
+}
+
+static SplineChar ***KernClassToSC(SplineFont *sf, char **classnames, int cnt) {
+ SplineChar ***scs, *sc;
+ int i,j;
+ char *pt, *end, ch;
+
+ scs = malloc(cnt*sizeof(SplineChar **));
+ for ( i=1; i<cnt; ++i ) {
+ for ( pt=classnames[i]-1, j=0; pt!=NULL; pt=strchr(pt+1,' ') )
+ ++j;
+ scs[i] = malloc((j+1)*sizeof(SplineChar *));
+ for ( pt=classnames[i], j=0; *pt!='\0'; pt=end+1 ) {
+ end = strchr(pt,' ');
+ if ( end==NULL )
+ end = pt+strlen(pt);
+ ch = *end;
+ *end = '\0';
+ sc = SFGetChar(sf,-1,pt);
+ if ( sc!=NULL )
+ scs[i][j++] = sc;
+ if ( ch=='\0' )
+ break;
+ *end = ch;
+ }
+ scs[i][j] = NULL;
+ }
+return( scs );
+}
+
+static void AddTempKP(SplineChar *first,SplineChar *second,
+ int16 offset, struct lookup_subtable *sub,uint16 kcid,int isv) {
+ KernPair *kp;
+
+ for ( kp=first->kerns; kp!=NULL; kp=kp->next )
+ if ( kp->sc == second )
+ break;
+ if ( kp==NULL ) {
+ kp = chunkalloc(sizeof(KernPair));
+ kp->sc = second;
+ kp->off = offset;
+ kp->subtable = sub;
+ kp->kcid = kcid;
+ if ( isv ) {
+ kp->next = first->vkerns;
+ first->vkerns = kp;
+ } else {
+ kp->next = first->kerns;
+ first->kerns = kp;
+ }
+ }
+}
+
+void SFKernClassTempDecompose(SplineFont *sf,int isv) {
+ KernClass *kc, *head= isv ? sf->vkerns : sf->kerns;
+ KernPair *kp;
+ SplineChar ***first, ***last;
+ int i, j, k, l;
+ OTLookup *otl;
+
+ /* Make sure the temporary field is cleaned up. Otherwise we may lose kerning data */
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ for ( kp = isv ? sf->glyphs[i]->vkerns : sf->glyphs[i]->kerns; kp!=NULL; kp = kp->next ) {
+ kp->kcid = false;
+ }
+ }
+ for ( kc = head, i=0; kc!=NULL; kc = kc->next )
+ kc->kcid = ++i;
+ for ( kc = head; kc!=NULL; kc = kc->next ) {
+
+ otl = chunkalloc(sizeof(OTLookup));
+ otl->next = sf->gpos_lookups;
+ sf->gpos_lookups = otl;
+ otl->lookup_type = gpos_pair;
+ otl->lookup_flags = kc->subtable->lookup->lookup_flags;
+ otl->features = FeatureListCopy(kc->subtable->lookup->features);
+ otl->lookup_name = copy(_("<Temporary kerning>"));
+ otl->temporary_kern = otl->store_in_afm = true;
+ otl->subtables = chunkalloc(sizeof(struct lookup_subtable));
+ otl->subtables->lookup = otl;
+ otl->subtables->per_glyph_pst_or_kern = true;
+ otl->subtables->subtable_name = copy(_("<Temporary kerning>"));
+
+ first = KernClassToSC(sf,kc->firsts,kc->first_cnt);
+ last = KernClassToSC(sf,kc->seconds,kc->second_cnt);
+ for ( i=1; i<kc->first_cnt; ++i ) for ( j=1; j<kc->second_cnt; ++j ) {
+ if ( kc->offsets[i*kc->second_cnt+j]!=0 ) {
+ for ( k=0; first[i][k]!=NULL; ++k )
+ for ( l=0; last[j][l]!=NULL; ++l )
+ AddTempKP(first[i][k],last[j][l],
+ kc->offsets[i*kc->second_cnt+j],
+ otl->subtables,kc->kcid,isv);
+ }
+ }
+ KCSfree(first,kc->first_cnt);
+ KCSfree(last,kc->second_cnt);
+ }
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineutil.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineutil.c
new file mode 100644
index 00000000000..4f96e87a30b
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineutil.c
@@ -0,0 +1,3579 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h"
+#include "encoding.h"
+#include <math.h>
+
+#ifdef HAVE_IEEEFP_H
+# include <ieeefp.h> /* Solaris defines isnan in ieeefp rather than math.h */
+#endif
+
+#include "sfd1.h" // This has the extended SplineFont type SplineFont1 for old file versions.
+#ifdef FF_UTHASH_GLIF_NAMES
+# include "glif_name_hash.h"
+#endif
+
+
+/*#define DEBUG 1*/
+
+typedef struct quartic {
+ bigreal a,b,c,d,e;
+} Quartic;
+
+/* In an attempt to make allocation more efficient I just keep preallocated */
+/* lists of certain common sizes. It doesn't seem to make much difference */
+/* when allocating stuff, but does when freeing. If the extra complexity */
+/* is bad then put: */
+/* #define chunkalloc(size) calloc(1,size) */
+/* #define chunkfree(item,size) free(item) */
+/* into splinefont.h after (or instead of) the definition of chunkalloc()*/
+
+#define ALLOC_CHUNK 100 /* Number of small chunks to malloc at a time */
+#ifndef FONTFORGE_CONFIG_USE_DOUBLE
+# define CHUNK_MAX 100 /* Maximum size (in chunk units) that we are prepared to allocate */
+ /* The size of our data structures */
+#else
+# define CHUNK_MAX 129
+#endif
+# define CHUNK_UNIT sizeof(void *) /* will vary with the word size of */
+ /* the machine. if pointers are 64 bits*/
+ /* we may need twice as much space as for 32 bits */
+
+#ifdef FLAG
+#undef FLAG
+#define FLAG 0xbadcafe
+#endif
+
+#ifdef CHUNKDEBUG
+static int chunkdebug = 0; /* When this is set we never free anything, insuring that each chunk is unique */
+#endif
+
+#if ALLOC_CHUNK>1
+struct chunk { struct chunk *next; };
+struct chunk2 { struct chunk2 *next; int flag; };
+#endif
+
+#if defined(FLAG) && ALLOC_CHUNK>1
+void chunktest(void) {
+ int i;
+ struct chunk2 *c;
+
+ for ( i=2; i<CHUNK_MAX; ++i )
+ for ( c=(struct chunk2 *) chunklists[i]; c!=NULL; c=c->next )
+ if ( c->flag!=FLAG ) {
+ fprintf( stderr, "Chunk memory list has been corrupted\n" );
+ abort();
+ }
+}
+#endif
+
+void LineListFree(LineList *ll) {
+ LineList *next;
+
+ while ( ll!=NULL ) {
+ next = ll->next;
+ chunkfree(ll,sizeof(LineList));
+ ll = next;
+ }
+}
+
+void LinearApproxFree(LinearApprox *la) {
+ LinearApprox *next;
+
+ while ( la!=NULL ) {
+ next = la->next;
+ LineListFree(la->lines);
+ chunkfree(la,sizeof(LinearApprox));
+ la = next;
+ }
+}
+
+void SplineFree(Spline *spline) {
+ LinearApproxFree(spline->approx);
+ chunkfree(spline,sizeof(Spline));
+}
+
+SplinePoint *SplinePointCreate(real x, real y) {
+ SplinePoint *sp;
+ if ( (sp=chunkalloc(sizeof(SplinePoint)))!=NULL ) {
+ sp->me.x = x; sp->me.y = y;
+ sp->nextcp = sp->prevcp = sp->me;
+ sp->nonextcp = sp->noprevcp = true;
+ sp->nextcpdef = sp->prevcpdef = false;
+ sp->ttfindex = sp->nextcpindex = 0xfffe;
+ sp->name = NULL;
+ }
+ return( sp );
+}
+
+Spline *SplineMake3(SplinePoint *from, SplinePoint *to) {
+ Spline *spline = chunkalloc(sizeof(Spline));
+
+ spline->from = from; spline->to = to;
+ from->next = to->prev = spline;
+ SplineRefigure3(spline);
+return( spline );
+}
+
+void SplinePointFree(SplinePoint *sp) {
+ chunkfree(sp->hintmask,sizeof(HintMask));
+ free(sp->name);
+ chunkfree(sp,sizeof(SplinePoint));
+}
+
+void SplinePointsFree(SplinePointList *spl) {
+ Spline *first, *spline, *next;
+ int nonext;
+
+ if ( spl==NULL )
+ return;
+ if ( spl->first!=NULL ) {
+ nonext = spl->first->next==NULL; // If there is no spline, we set a flag.
+ first = NULL;
+ // We start on the first spline if it exists.
+ for ( spline = spl->first->next; spline!=NULL && spline!=first; spline = next ) {
+ next = spline->to->next; // Cache the location of the next spline.
+ SplinePointFree(spline->to); // Free the destination point.
+ SplineFree(spline); // Free the spline.
+ if ( first==NULL ) first = spline; // We want to avoid repeating the circuit.
+ }
+ // If the path is open or has no splines, free the starting point.
+ if ( spl->last!=spl->first || nonext )
+ SplinePointFree(spl->first);
+ }
+}
+
+void SplinePointListFree(SplinePointList *spl) {
+
+ if ( spl==NULL ) return;
+ SplinePointsFree(spl);
+ free(spl->spiros);
+ free(spl->contour_name);
+ chunkfree(spl,sizeof(SplinePointList));
+}
+
+void SplinePointListsFree(SplinePointList *spl) {
+ SplinePointList *next;
+
+ while ( spl!=NULL ) {
+ next = spl->next;
+ SplinePointListFree(spl);
+ spl = next;
+ }
+}
+
+void SplineSetSpirosClear(SplineSet *spl) {
+ free(spl->spiros);
+ spl->spiros = NULL;
+ spl->spiro_cnt = spl->spiro_max = 0;
+}
+
+
+void RefCharFree(RefChar *ref) {
+ int i;
+
+ if ( ref==NULL )
+return;
+ for ( i=0; i<ref->layer_cnt; ++i ) {
+ SplinePointListsFree(ref->layers[i].splines);
+ GradientFree(ref->layers[i].fill_brush.gradient);
+ GradientFree(ref->layers[i].stroke_pen.brush.gradient);
+ PatternFree(ref->layers[i].fill_brush.pattern);
+ PatternFree(ref->layers[i].stroke_pen.brush.pattern);
+ }
+ free(ref->layers);
+ chunkfree(ref,sizeof(RefChar));
+}
+
+RefChar *RefCharCreate(void) {
+ RefChar *ref = chunkalloc(sizeof(RefChar));
+ ref->layer_cnt = 1;
+ ref->layers = calloc(1,sizeof(struct reflayer));
+ ref->layers[0].fill_brush.opacity = ref->layers[0].stroke_pen.brush.opacity = 1.0;
+ ref->layers[0].fill_brush.col = ref->layers[0].stroke_pen.brush.col = COLOR_INHERITED;
+ ref->layers[0].stroke_pen.width = WIDTH_INHERITED;
+ ref->layers[0].stroke_pen.linecap = lc_inherited;
+ ref->layers[0].stroke_pen.linejoin = lj_inherited;
+ ref->layers[0].dofill = true;
+ ref->round_translation_to_grid = true;
+return( ref );
+}
+
+void RefCharsFree(RefChar *ref) {
+ RefChar *rnext;
+
+ while ( ref!=NULL ) {
+ rnext = ref->next;
+ RefCharFree(ref);
+ ref = rnext;
+ }
+}
+
+typedef struct spline1 {
+ Spline1D sp;
+ real s0, s1;
+ real c0, c1;
+} Spline1;
+
+static void FigureSpline1(Spline1 *sp1,bigreal t0, bigreal t1, Spline1D *sp ) {
+ bigreal s = (t1-t0);
+ if ( sp->a==0 && sp->b==0 ) {
+ sp1->sp.d = sp->d + t0*sp->c;
+ sp1->sp.c = s*sp->c;
+ sp1->sp.b = sp1->sp.a = 0;
+ } else {
+ sp1->sp.d = sp->d + t0*(sp->c + t0*(sp->b + t0*sp->a));
+ sp1->sp.c = s*(sp->c + t0*(2*sp->b + 3*sp->a*t0));
+ sp1->sp.b = s*s*(sp->b+3*sp->a*t0);
+ sp1->sp.a = s*s*s*sp->a;
+ }
+ sp1->c0 = sp1->sp.c/3 + sp1->sp.d;
+ sp1->c1 = sp1->c0 + (sp1->sp.b+sp1->sp.c)/3;
+}
+
+static void SplineFindBounds(const Spline *sp, DBounds *bounds) {
+ real t, b2_fourac, v;
+ real min, max;
+ const Spline1D *sp1;
+ int i;
+
+ /* first try the end points */
+ for ( i=0; i<2; ++i ) {
+ sp1 = &sp->splines[i];
+ if ( i==0 ) {
+ if ( sp->to->me.x<bounds->minx ) bounds->minx = sp->to->me.x;
+ if ( sp->to->me.x>bounds->maxx ) bounds->maxx = sp->to->me.x;
+ min = bounds->minx; max = bounds->maxx;
+ } else {
+ if ( sp->to->me.y<bounds->miny ) bounds->miny = sp->to->me.y;
+ if ( sp->to->me.y>bounds->maxy ) bounds->maxy = sp->to->me.y;
+ min = bounds->miny; max = bounds->maxy;
+ }
+
+ /* then try the extrema of the spline (assuming they are between t=(0,1) */
+ /* (I don't bother fixing up for tiny rounding errors here. they don't matter */
+ /* But we could call CheckExtremaForSingleBitErrors */
+ if ( sp1->a!=0 ) {
+ b2_fourac = 4*sp1->b*sp1->b - 12*sp1->a*sp1->c;
+ if ( b2_fourac>=0 ) {
+ b2_fourac = sqrt(b2_fourac);
+ t = (-2*sp1->b + b2_fourac) / (6*sp1->a);
+ if ( t>0 && t<1 ) {
+ v = ((sp1->a*t+sp1->b)*t+sp1->c)*t + sp1->d;
+ if ( v<min ) min = v;
+ if ( v>max ) max = v;
+ }
+ t = (-2*sp1->b - b2_fourac) / (6*sp1->a);
+ if ( t>0 && t<1 ) {
+ v = ((sp1->a*t+sp1->b)*t+sp1->c)*t + sp1->d;
+ if ( v<min ) min = v;
+ if ( v>max ) max = v;
+ }
+ }
+ } else if ( sp1->b!=0 ) {
+ t = -sp1->c/(2.0*sp1->b);
+ if ( t>0 && t<1 ) {
+ v = (sp1->b*t+sp1->c)*t + sp1->d;
+ if ( v<min ) min = v;
+ if ( v>max ) max = v;
+ }
+ }
+ if ( i==0 ) {
+ bounds->minx = min; bounds->maxx = max;
+ } else {
+ bounds->miny = min; bounds->maxy = max;
+ }
+ }
+}
+
+static void _SplineSetFindBounds(const SplinePointList *spl, DBounds *bounds) {
+ Spline *spline, *first;
+ /* Ignore contours consisting of a single point (used for hinting, anchors */
+ /* for mark to base, etc. */
+
+ for ( ; spl!=NULL; spl = spl->next ) if ( spl->first->next!=NULL && spl->first->next->to != spl->first ) {
+ first = NULL;
+ if ( bounds->minx==0 && bounds->maxx==0 && bounds->miny==0 && bounds->maxy == 0 ) {
+ bounds->minx = bounds->maxx = spl->first->me.x;
+ bounds->miny = bounds->maxy = spl->first->me.y;
+ } else {
+ if ( spl->first->me.x<bounds->minx ) bounds->minx = spl->first->me.x;
+ if ( spl->first->me.x>bounds->maxx ) bounds->maxx = spl->first->me.x;
+ if ( spl->first->me.y<bounds->miny ) bounds->miny = spl->first->me.y;
+ if ( spl->first->me.y>bounds->maxy ) bounds->maxy = spl->first->me.y;
+ }
+ for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) {
+ SplineFindBounds(spline,bounds);
+ if ( first==NULL ) first = spline;
+ }
+ }
+}
+
+static void _SplineSetFindClippedBounds(const SplinePointList *spl, DBounds *bounds,DBounds *clipb) {
+ Spline *spline, *first;
+ /* Ignore contours consisting of a single point (used for hinting, anchors */
+ /* for mark to base, etc. */
+
+ for ( ; spl!=NULL; spl = spl->next ) if ( spl->first->next!=NULL && spl->first->next->to != spl->first ) {
+ first = NULL;
+ if ( !spl->is_clip_path ) {
+ if ( bounds->minx==0 && bounds->maxx==0 && bounds->miny==0 && bounds->maxy == 0 ) {
+ bounds->minx = bounds->maxx = spl->first->me.x;
+ bounds->miny = bounds->maxy = spl->first->me.y;
+ } else {
+ if ( spl->first->me.x<bounds->minx ) bounds->minx = spl->first->me.x;
+ if ( spl->first->me.x>bounds->maxx ) bounds->maxx = spl->first->me.x;
+ if ( spl->first->me.y<bounds->miny ) bounds->miny = spl->first->me.y;
+ if ( spl->first->me.y>bounds->maxy ) bounds->maxy = spl->first->me.y;
+ }
+ for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) {
+ SplineFindBounds(spline,bounds);
+ if ( first==NULL ) first = spline;
+ }
+ } else {
+ if ( clipb->minx==0 && clipb->maxx==0 && clipb->miny==0 && clipb->maxy == 0 ) {
+ clipb->minx = clipb->maxx = spl->first->me.x;
+ clipb->miny = clipb->maxy = spl->first->me.y;
+ } else {
+ if ( spl->first->me.x<clipb->minx ) clipb->minx = spl->first->me.x;
+ if ( spl->first->me.x>clipb->maxx ) clipb->maxx = spl->first->me.x;
+ if ( spl->first->me.y<clipb->miny ) clipb->miny = spl->first->me.y;
+ if ( spl->first->me.y>clipb->maxy ) clipb->maxy = spl->first->me.y;
+ }
+ for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) {
+ SplineFindBounds(spline,clipb);
+ if ( first==NULL ) first = spline;
+ }
+ }
+ }
+}
+
+static void _SplineCharLayerFindBounds(SplineChar *sc,int layer, DBounds *bounds) {
+ RefChar *rf;
+ real e;
+ DBounds b, clipb;
+
+ for ( rf=sc->layers[layer].refs; rf!=NULL; rf = rf->next ) {
+ if ( bounds->minx==0 && bounds->maxx==0 && bounds->miny==0 && bounds->maxy == 0 )
+ *bounds = rf->bb;
+ else if ( rf->bb.minx!=0 || rf->bb.maxx != 0 || rf->bb.maxy != 0 || rf->bb.miny!=0 ) {
+ if ( rf->bb.minx < bounds->minx ) bounds->minx = rf->bb.minx;
+ if ( rf->bb.miny < bounds->miny ) bounds->miny = rf->bb.miny;
+ if ( rf->bb.maxx > bounds->maxx ) bounds->maxx = rf->bb.maxx;
+ if ( rf->bb.maxy > bounds->maxy ) bounds->maxy = rf->bb.maxy;
+ }
+ }
+ memset(&b,0,sizeof(b));
+ memset(&clipb,0,sizeof(clipb));
+ _SplineSetFindClippedBounds(sc->layers[layer].splines,&b,&clipb);
+ if ( sc->layers[layer].dostroke ) {
+ if ( sc->layers[layer].stroke_pen.width!=WIDTH_INHERITED )
+ e = sc->layers[layer].stroke_pen.width*sc->layers[layer].stroke_pen.trans[0];
+ else
+ e = sc->layers[layer].stroke_pen.trans[0];
+ b.minx -= e; b.maxx += e;
+ b.miny -= e; b.maxy += e;
+ }
+ if ( clipb.minx!=0 || clipb.miny!=0 || clipb.maxx!=0 || clipb.maxy!=0 ) {
+ if ( b.minx<clipb.minx ) b.minx = clipb.minx;
+ if ( b.miny<clipb.miny ) b.miny = clipb.miny;
+ if ( b.maxx>clipb.maxx ) b.maxx = clipb.maxx;
+ if ( b.maxy>clipb.maxy ) b.maxy = clipb.maxy;
+ }
+ if ( bounds->minx==0 && bounds->maxx==0 && bounds->miny==0 && bounds->maxy == 0 )
+ *bounds = b;
+ else if ( b.minx!=0 || b.maxx != 0 || b.maxy != 0 || b.miny!=0 ) {
+ if ( b.minx < bounds->minx ) bounds->minx = b.minx;
+ if ( b.miny < bounds->miny ) bounds->miny = b.miny;
+ if ( b.maxx > bounds->maxx ) bounds->maxx = b.maxx;
+ if ( b.maxy > bounds->maxy ) bounds->maxy = b.maxy;
+ }
+
+ if ( sc->parent!=NULL && sc->parent->strokedfont &&
+ (bounds->minx!=bounds->maxx || bounds->miny!=bounds->maxy)) {
+ real sw = sc->parent->strokewidth;
+ bounds->minx -= sw; bounds->miny -= sw;
+ bounds->maxx += sw; bounds->maxy += sw;
+ }
+}
+
+void SplineCharLayerFindBounds(SplineChar *sc,int layer,DBounds *bounds) {
+
+ if ( sc->parent!=NULL && sc->parent->multilayer ) {
+ SplineCharFindBounds(sc,bounds);
+return;
+ }
+
+ /* a char with no splines (ie. a space) must have an lbearing of 0 */
+ bounds->minx = bounds->maxx = 0;
+ bounds->miny = bounds->maxy = 0;
+
+ _SplineCharLayerFindBounds(sc,layer,bounds);
+}
+
+void SplineCharFindBounds(SplineChar *sc,DBounds *bounds) {
+ int i;
+ int first,last;
+
+ /* a char with no splines (ie. a space) must have an lbearing of 0 */
+ bounds->minx = bounds->maxx = 0;
+ bounds->miny = bounds->maxy = 0;
+
+ first = last = ly_fore;
+ if ( sc->parent!=NULL && sc->parent->multilayer )
+ last = sc->layer_cnt-1;
+ for ( i=first; i<=last; ++i )
+ _SplineCharLayerFindBounds(sc,i,bounds);
+}
+
+void SplineFontLayerFindBounds(SplineFont *sf,int layer,DBounds *bounds) {
+ int i, k, first, last;
+
+ if ( sf->multilayer ) {
+ SplineFontFindBounds(sf,bounds);
+return;
+ }
+
+ bounds->minx = bounds->maxx = 0;
+ bounds->miny = bounds->maxy = 0;
+
+ for ( i = 0; i<sf->glyphcnt; ++i ) {
+ SplineChar *sc = sf->glyphs[i];
+ if ( sc!=NULL ) {
+ first = last = ly_fore;
+ if ( sc->parent != NULL && sc->parent->multilayer )
+ last = sc->layer_cnt-1;
+ for ( k=first; k<=last; ++k )
+ _SplineCharLayerFindBounds(sc,k,bounds);
+ }
+ }
+}
+
+void SplineFontFindBounds(SplineFont *sf,DBounds *bounds) {
+ int i, k, first, last;
+
+ bounds->minx = bounds->maxx = 0;
+ bounds->miny = bounds->maxy = 0;
+
+ for ( i = 0; i<sf->glyphcnt; ++i ) {
+ SplineChar *sc = sf->glyphs[i];
+ if ( sc!=NULL ) {
+ first = last = ly_fore;
+ if ( sf->multilayer )
+ last = sc->layer_cnt-1;
+ for ( k=first; k<=last; ++k )
+ _SplineCharLayerFindBounds(sc,k,bounds);
+ }
+ }
+}
+
+void CIDLayerFindBounds(SplineFont *cidmaster,int layer,DBounds *bounds) {
+ SplineFont *sf;
+ int i;
+ DBounds b;
+ real factor;
+
+ if ( cidmaster->cidmaster )
+ cidmaster = cidmaster->cidmaster;
+ if ( cidmaster->subfonts==NULL ) {
+ SplineFontLayerFindBounds(cidmaster,layer,bounds);
+return;
+ }
+
+ sf = cidmaster->subfonts[0];
+ SplineFontLayerFindBounds(sf,layer,bounds);
+ factor = 1000.0/(sf->ascent+sf->descent);
+ bounds->maxx *= factor; bounds->minx *= factor; bounds->miny *= factor; bounds->maxy *= factor;
+ for ( i=1; i<cidmaster->subfontcnt; ++i ) {
+ sf = cidmaster->subfonts[i];
+ SplineFontLayerFindBounds(sf,layer,&b);
+ factor = 1000.0/(sf->ascent+sf->descent);
+ b.maxx *= factor; b.minx *= factor; b.miny *= factor; b.maxy *= factor;
+ if ( b.maxx>bounds->maxx ) bounds->maxx = b.maxx;
+ if ( b.maxy>bounds->maxy ) bounds->maxy = b.maxy;
+ if ( b.miny<bounds->miny ) bounds->miny = b.miny;
+ if ( b.minx<bounds->minx ) bounds->minx = b.minx;
+ }
+}
+
+static void _SplineSetFindTop(SplineSet *ss,BasePoint *top) {
+ SplinePoint *sp;
+
+ for ( ; ss!=NULL; ss=ss->next ) {
+ for ( sp=ss->first; ; ) {
+ if ( sp->me.y > top->y ) *top = sp->me;
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==ss->first )
+ break;
+ }
+ }
+}
+
+void SplineSetQuickBounds(SplineSet *ss,DBounds *b) {
+ SplinePoint *sp;
+
+ b->minx = b->miny = 1e10;
+ b->maxx = b->maxy = -1e10;
+ for ( ; ss!=NULL; ss=ss->next ) {
+ for ( sp=ss->first; ; ) {
+ if ( sp->me.y < b->miny ) b->miny = sp->me.y;
+ if ( sp->me.x < b->minx ) b->minx = sp->me.x;
+ if ( sp->me.y > b->maxy ) b->maxy = sp->me.y;
+ if ( sp->me.x > b->maxx ) b->maxx = sp->me.x;
+ // Frank added the control points to the calculation since,
+ // according to Adam Twardoch,
+ // the OpenType values that rely upon this function
+ // expect control points to be included.
+ if ( !sp->noprevcp ) {
+ if ( sp->prevcp.y < b->miny ) b->miny = sp->prevcp.y;
+ if ( sp->prevcp.x < b->minx ) b->minx = sp->prevcp.x;
+ if ( sp->prevcp.y > b->maxy ) b->maxy = sp->prevcp.y;
+ if ( sp->prevcp.x > b->maxx ) b->maxx = sp->prevcp.x;
+ }
+ if ( !sp->nonextcp ) {
+ if ( sp->nextcp.y < b->miny ) b->miny = sp->nextcp.y;
+ if ( sp->nextcp.x < b->minx ) b->minx = sp->nextcp.x;
+ if ( sp->nextcp.y > b->maxy ) b->maxy = sp->nextcp.y;
+ if ( sp->nextcp.x > b->maxx ) b->maxx = sp->nextcp.x;
+ }
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==ss->first )
+ break;
+ }
+ }
+ if ( b->minx>65536 ) b->minx = 0;
+ if ( b->miny>65536 ) b->miny = 0;
+ if ( b->maxx<-65536 ) b->maxx = 0;
+ if ( b->maxy<-65536 ) b->maxy = 0;
+}
+
+void SplineCharQuickBounds(SplineChar *sc, DBounds *b) {
+ RefChar *ref;
+ int i,first, last;
+ DBounds temp;
+ real e;
+
+ b->minx = b->miny = 1e10;
+ b->maxx = b->maxy = -1e10;
+ first = last = ly_fore;
+ if ( sc->parent!=NULL && sc->parent->multilayer )
+ last = sc->layer_cnt-1;
+ for ( i=first; i<=last; ++i ) {
+ SplineSetQuickBounds(sc->layers[i].splines,&temp);
+ if ( sc->layers[i].dostroke && sc->layers[i].splines!=NULL ) {
+ if ( sc->layers[i].stroke_pen.width!=WIDTH_INHERITED )
+ e = sc->layers[i].stroke_pen.width*sc->layers[i].stroke_pen.trans[0];
+ else
+ e = sc->layers[i].stroke_pen.trans[0];
+ temp.minx -= e; temp.maxx += e;
+ temp.miny -= e; temp.maxy += e;
+ }
+ if ( temp.minx!=0 || temp.maxx != 0 || temp.maxy != 0 || temp.miny!=0 ) {
+ if ( temp.minx < b->minx ) b->minx = temp.minx;
+ if ( temp.miny < b->miny ) b->miny = temp.miny;
+ if ( temp.maxx > b->maxx ) b->maxx = temp.maxx;
+ if ( temp.maxy > b->maxy ) b->maxy = temp.maxy;
+ }
+ for ( ref = sc->layers[i].refs; ref!=NULL; ref = ref->next ) {
+ /*SplineSetQuickBounds(ref->layers[0].splines,&temp);*/
+ if ( b->minx==0 && b->maxx==0 && b->miny==0 && b->maxy == 0 )
+ *b = ref->bb;
+ else if ( ref->bb.minx!=0 || ref->bb.maxx != 0 || ref->bb.maxy != 0 || ref->bb.miny!=0 ) {
+ if ( ref->bb.minx < b->minx ) b->minx = ref->bb.minx;
+ if ( ref->bb.miny < b->miny ) b->miny = ref->bb.miny;
+ if ( ref->bb.maxx > b->maxx ) b->maxx = ref->bb.maxx;
+ if ( ref->bb.maxy > b->maxy ) b->maxy = ref->bb.maxy;
+ }
+ }
+ }
+ if ( sc->parent!=NULL && sc->parent->strokedfont &&
+ (b->minx!=b->maxx || b->miny!=b->maxy)) {
+ real sw = sc->parent->strokewidth;
+ b->minx -= sw; b->miny -= sw;
+ b->maxx += sw; b->maxy += sw;
+ }
+ if ( b->minx>1e9 )
+ memset(b,0,sizeof(*b));
+}
+
+void SplineCharLayerQuickBounds(SplineChar *sc,int layer,DBounds *bounds) {
+ RefChar *ref;
+ DBounds temp;
+
+ if ( sc->parent!=NULL && sc->parent->multilayer ) {
+ SplineCharQuickBounds(sc,bounds);
+return;
+ }
+
+ bounds->minx = bounds->miny = 1e10;
+ bounds->maxx = bounds->maxy = -1e10;
+
+ SplineSetQuickBounds(sc->layers[layer].splines,bounds);
+
+ for ( ref = sc->layers[layer].refs; ref!=NULL; ref = ref->next ) {
+ SplineSetQuickBounds(ref->layers[0].splines,&temp);
+ if ( bounds->minx==0 && bounds->maxx==0 && bounds->miny==0 && bounds->maxy == 0 )
+ *bounds = temp;
+ else if ( temp.minx!=0 || temp.maxx != 0 || temp.maxy != 0 || temp.miny!=0 ) {
+ if ( temp.minx < bounds->minx ) bounds->minx = temp.minx;
+ if ( temp.miny < bounds->miny ) bounds->miny = temp.miny;
+ if ( temp.maxx > bounds->maxx ) bounds->maxx = temp.maxx;
+ if ( temp.maxy > bounds->maxy ) bounds->maxy = temp.maxy;
+ }
+ }
+ /* a char with no splines (ie. a space) must have an lbearing of 0 */
+ if ( bounds->minx>1e9 )
+ memset(bounds,0,sizeof(*bounds));
+}
+
+void SplinePointCategorize(SplinePoint *sp) {
+ int oldpointtype = sp->pointtype;
+
+ sp->pointtype = pt_corner;
+ if ( sp->next==NULL && sp->prev==NULL )
+ ;
+ else if ( (sp->next!=NULL && sp->next->to->me.x==sp->me.x && sp->next->to->me.y==sp->me.y) ||
+ (sp->prev!=NULL && sp->prev->from->me.x==sp->me.x && sp->prev->from->me.y==sp->me.y ))
+ ;
+ else if ( sp->next==NULL ) {
+ sp->pointtype = sp->noprevcp ? pt_corner : pt_curve;
+ } else if ( sp->prev==NULL ) {
+ sp->pointtype = sp->nonextcp ? pt_corner : pt_curve;
+ } else if ( sp->nonextcp && sp->noprevcp ) {
+ ;
+ } else {
+ BasePoint ndir, ncdir, ncunit, pdir, pcdir, pcunit;
+ bigreal nlen, nclen, plen, pclen;
+ bigreal cross, bounds;
+
+ ncdir.x = sp->nextcp.x - sp->me.x; ncdir.y = sp->nextcp.y - sp->me.y;
+ pcdir.x = sp->prevcp.x - sp->me.x; pcdir.y = sp->prevcp.y - sp->me.y;
+ ndir.x = ndir.y = pdir.x = pdir.y = 0;
+ if ( sp->next!=NULL ) {
+ ndir.x = sp->next->to->me.x - sp->me.x; ndir.y = sp->next->to->me.y - sp->me.y;
+ }
+ if ( sp->prev!=NULL ) {
+ pdir.x = sp->prev->from->me.x - sp->me.x; pdir.y = sp->prev->from->me.y - sp->me.y;
+ }
+ nclen = sqrt(ncdir.x*ncdir.x + ncdir.y*ncdir.y);
+ pclen = sqrt(pcdir.x*pcdir.x + pcdir.y*pcdir.y);
+ nlen = sqrt(ndir.x*ndir.x + ndir.y*ndir.y);
+ plen = sqrt(pdir.x*pdir.x + pdir.y*pdir.y);
+ ncunit = ncdir; pcunit = pcdir;
+ if ( nclen!=0 ) { ncunit.x /= nclen; ncunit.y /= nclen; }
+ if ( pclen!=0 ) { pcunit.x /= pclen; pcunit.y /= pclen; }
+ if ( nlen!=0 ) { ndir.x /= nlen; ndir.y /= nlen; }
+ if ( plen!=0 ) { pdir.x /= plen; pdir.y /= plen; }
+
+ /* find out which side has the shorter control vector. Cross that vector */
+ /* with the normal of the unit vector on the other side. If the */
+ /* result is less than 1 em-unit then we've got colinear control points */
+ /* (within the resolution of the integer grid) */
+ /* Not quite... they could point in the same direction */
+ if ( oldpointtype==pt_curve )
+ bounds = 4.0;
+ else
+ bounds = 1.0;
+ if ( nclen!=0 && pclen!=0 &&
+ ((nclen>=pclen && (cross = pcdir.x*ncunit.y - pcdir.y*ncunit.x)<bounds && cross>-bounds ) ||
+ (pclen>nclen && (cross = ncdir.x*pcunit.y - ncdir.y*pcunit.x)<bounds && cross>-bounds )) &&
+ ncdir.x*pcdir.x + ncdir.y*pcdir.y < 0 )
+ sp->pointtype = pt_curve;
+ /* Cross product of control point with unit vector normal to line in */
+ /* opposite direction should be less than an em-unit for a tangent */
+ else if (( nclen==0 && pclen!=0 && (cross = pcdir.x*ndir.y-pcdir.y*ndir.x)<bounds && cross>-bounds ) ||
+ ( pclen==0 && nclen!=0 && (cross = ncdir.x*pdir.y-ncdir.y*pdir.x)<bounds && cross>-bounds ))
+ sp->pointtype = pt_tangent;
+
+ /* If a point started out hv, and could still be hv, them make it so */
+ /* but don't make hv points de novo, Alexey doesn't like change */
+ /* (this only works because hv isn't a default setting, so if it's */
+ /* there it was done intentionally) */
+ if ( sp->pointtype == pt_curve && oldpointtype == pt_hvcurve &&
+ ((sp->nextcp.x==sp->me.x && sp->prevcp.x==sp->me.x && sp->nextcp.y!=sp->me.y) ||
+ (sp->nextcp.y==sp->me.y && sp->prevcp.y==sp->me.y && sp->nextcp.x!=sp->me.x)))
+ sp->pointtype = pt_hvcurve;
+ }
+}
+
+void SPLCategorizePoints(SplinePointList *spl) {
+ Spline *spline, *first, *last=NULL;
+
+ for ( ; spl!=NULL; spl = spl->next ) {
+ first = NULL;
+ for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) {
+ SplinePointCategorize(spline->from);
+ last = spline;
+ if ( first==NULL ) first = spline;
+ }
+ if ( spline==NULL && last!=NULL )
+ SplinePointCategorize(last->to);
+ }
+}
+
+SplinePointList *SplinePointListCopy1(const SplinePointList *spl) {
+ SplinePointList *cur;
+ const SplinePoint *pt; SplinePoint *cpt;
+ Spline *spline;
+
+ cur = chunkalloc(sizeof(SplinePointList));
+ cur->is_clip_path = spl->is_clip_path;
+ cur->spiro_cnt = cur->spiro_max = 0;
+ cur->spiros = 0;
+ if (spl->contour_name != NULL) cur->contour_name = copy(spl->contour_name);
+ for ( pt=spl->first; ; ) {
+ cpt = SplinePointCreate( 0, 0 );
+ *cpt = *pt;
+ if ( pt->hintmask!=NULL ) {
+ cpt->hintmask = chunkalloc(sizeof(HintMask));
+ memcpy(cpt->hintmask,pt->hintmask,sizeof(HintMask));
+ }
+ if ( pt->name!=NULL ) {
+ cpt->name = copy(pt->name);
+ }
+ cpt->next = cpt->prev = NULL;
+ if ( cur->first==NULL ) {
+ cur->first = cur->last = cpt;
+ cur->start_offset = 0;
+ } else {
+ spline = chunkalloc(sizeof(Spline));
+ *spline = *pt->prev;
+ spline->from = cur->last;
+ cur->last->next = spline;
+ cpt->prev = spline;
+ spline->to = cpt;
+ spline->approx = NULL;
+ cur->last = cpt;
+ }
+ if ( pt->next==NULL )
+ break;
+ pt = pt->next->to;
+ if ( pt==spl->first )
+ break;
+ }
+ if ( spl->first->prev!=NULL ) {
+ cpt = cur->first;
+ spline = chunkalloc(sizeof(Spline));
+ *spline = *pt->prev;
+ spline->from = cur->last;
+ cur->last->next = spline;
+ cpt->prev = spline;
+ spline->to = cpt;
+ spline->approx = NULL;
+ cur->last = cpt;
+ }
+ if ( spl->spiro_cnt!=0 ) {
+ cur->spiro_cnt = cur->spiro_max = spl->spiro_cnt;
+ cur->spiros = malloc(cur->spiro_cnt*sizeof(spiro_cp));
+ memcpy(cur->spiros,spl->spiros,cur->spiro_cnt*sizeof(spiro_cp));
+ }
+return( cur );
+}
+
+SplinePointList *SplinePointListCopy(const SplinePointList *base) {
+ SplinePointList *head=NULL, *last=NULL, *cur;
+
+ for ( ; base!=NULL; base = base->next ) {
+ cur = SplinePointListCopy1(base);
+ if ( head==NULL )
+ head = cur;
+ else
+ last->next = cur;
+ last = cur;
+ }
+return( head );
+}
+
+void BpTransform(BasePoint *to, BasePoint *from, real transform[6]) {
+ BasePoint p;
+ p.x = transform[0]*from->x + transform[2]*from->y + transform[4];
+ p.y = transform[1]*from->x + transform[3]*from->y + transform[5];
+ to->x = rint(1024*p.x)/1024;
+ to->y = rint(1024*p.y)/1024;
+}
+
+static void TransformPointExtended(SplinePoint *sp, real transform[6], enum transformPointMask tpmask )
+{
+ /**
+ * If we are to transform selected BCP instead of their base splinepoint
+ * then lets do that.
+ */
+ if( tpmask & tpmask_operateOnSelectedBCP
+ && (sp->nextcpselected || sp->prevcpselected ))
+ {
+ if( sp->nextcpselected )
+ {
+ int order2 = sp->next ? sp->next->order2 : 0;
+ BpTransform(&sp->nextcp,&sp->nextcp,transform);
+ SPTouchControl( sp, &sp->nextcp, order2 );
+ }
+ else if( sp->prevcpselected )
+ {
+ int order2 = sp->next ? sp->next->order2 : 0;
+ BpTransform(&sp->prevcp,&sp->prevcp,transform);
+ SPTouchControl( sp, &sp->prevcp, order2 );
+ }
+ }
+ else
+ {
+ /**
+ * Transform the base splinepoints.
+ */
+ BpTransform(&sp->me,&sp->me,transform);
+
+ if ( !sp->nonextcp )
+ {
+ BpTransform(&sp->nextcp,&sp->nextcp,transform);
+ }
+ else
+ {
+ sp->nextcp = sp->me;
+ }
+
+ if ( !sp->noprevcp )
+ {
+ BpTransform(&sp->prevcp,&sp->prevcp,transform);
+ }
+ else
+ {
+ sp->prevcp = sp->me;
+ }
+ }
+
+
+
+ if ( sp->pointtype == pt_hvcurve )
+ {
+ if(
+ ((sp->nextcp.x==sp->me.x && sp->prevcp.x==sp->me.x && sp->nextcp.y!=sp->me.y) ||
+ (sp->nextcp.y==sp->me.y && sp->prevcp.y==sp->me.y && sp->nextcp.x!=sp->me.x)))
+ {
+ /* Do Nothing */;
+ }
+ else
+ {
+ sp->pointtype = pt_curve;
+ }
+ }
+}
+
+static void TransformPoint(SplinePoint *sp, real transform[6])
+{
+ TransformPointExtended( sp, transform, 0 );
+}
+
+static void TransformSpiro(spiro_cp *cp, real transform[6]) {
+ bigreal x;
+
+ x = transform[0]*cp->x + transform[2]*cp->y + transform[4];
+ cp->y = transform[1]*cp->x + transform[3]*cp->y + transform[5];
+ cp->x = x;
+}
+
+static void TransformPTsInterpolateCPs(BasePoint *fromorig,Spline *spline,
+ BasePoint *toorig,real transform[6] ) {
+ BasePoint totrans, temp;
+ bigreal fraction;
+
+ /* Normally the "from" point will already have been translated, and the "to" */
+ /* point will need to be. But if we have a closed contour then on the */
+ /* last spline both from and to will have been transform. We can detect */
+ /* this because toorig will be different from &spline->to->me */
+ if ( spline->to->selected && toorig==&spline->to->me )
+ BpTransform(&totrans,&spline->to->me,transform);
+ else
+ totrans = spline->to->me;
+
+ /* None of the control points will have been transformed yet */
+ if ( fromorig->x!=toorig->x ) {
+ fraction = (spline->from->nextcp.x-fromorig->x)/( toorig->x-fromorig->x );
+ spline->from->nextcp.x = spline->from->me.x + fraction*( totrans.x-spline->from->me.x );
+ fraction = (spline->to->prevcp.x-fromorig->x)/( toorig->x-fromorig->x );
+ spline->to->prevcp.x = spline->from->me.x + fraction*( totrans.x-spline->from->me.x );
+ } else {
+ BpTransform(&temp,&spline->from->nextcp,transform);
+ spline->from->nextcp.x = temp.x;
+ BpTransform(&temp,&spline->to->prevcp,transform);
+ spline->to->prevcp.x = temp.x;
+ }
+ if ( fromorig->y!=toorig->y ) {
+ fraction = (spline->from->nextcp.y-fromorig->y)/( toorig->y-fromorig->y );
+ spline->from->nextcp.y = spline->from->me.y + fraction*( totrans.y-spline->from->me.y );
+ fraction = (spline->to->prevcp.y-fromorig->y)/( toorig->y-fromorig->y );
+ spline->to->prevcp.y = spline->from->me.y + fraction*( totrans.y-spline->from->me.y );
+ } else {
+ BpTransform(&temp,&spline->from->nextcp,transform);
+ spline->from->nextcp.y = temp.y;
+ BpTransform(&temp,&spline->to->prevcp,transform);
+ spline->to->prevcp.y = temp.y;
+ }
+
+ if ( spline->to->selected )
+ spline->to->me = totrans;
+}
+
+
+SplinePointList *SplinePointListTransformExtended(SplinePointList *base, real transform[6],
+ enum transformPointType tpt, enum transformPointMask tpmask ) {
+ Spline *spline, *first;
+ SplinePointList *spl;
+ SplinePoint *spt, *pfirst;
+ int allsel, anysel, alldone=true;
+ BasePoint lastpointorig, firstpointorig, orig;
+
+ for ( spl = base; spl!=NULL; spl = spl->next ) {
+ pfirst = NULL; first = NULL;
+ allsel = true; anysel=false;
+ if ( tpt==tpt_OnlySelectedInterpCPs && spl->first->next!=NULL && !spl->first->next->order2 ) {
+ lastpointorig = firstpointorig = spl->first->me;
+ printf("SplinePointListTransformExtended() spl->first->selected %d\n", spl->first->selected );
+ if ( spl->first->selected ) {
+ anysel = true;
+ BpTransform(&spl->first->me,&spl->first->me,transform);
+ } else
+ allsel = false;
+ for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) {
+ if ( first==NULL ) first = spline;
+ orig = spline->to->me;
+ if ( spline->from->selected || spline->to->selected )
+ {
+ TransformPTsInterpolateCPs( &lastpointorig, spline,
+ spl->first==spline->to? &firstpointorig : &spline->to->me,
+ transform );
+ }
+ lastpointorig = orig;
+ if ( spline->to->selected ) anysel = true; else allsel = false;
+ }
+
+ } else {
+ for ( spt = spl->first ; spt!=pfirst; spt = spt->next->to ) {
+ if ( pfirst==NULL ) pfirst = spt;
+ if ( tpt==tpt_AllPoints || spt->selected ) {
+ TransformPointExtended(spt,transform,tpmask);
+ if ( tpt!=tpt_AllPoints ) {
+ if ( spt->next!=NULL && spt->next->order2 && !spt->next->to->selected && spt->next->to->ttfindex==0xffff ) {
+ SplinePoint *to = spt->next->to;
+ to->prevcp = spt->nextcp;
+ to->me.x = (to->prevcp.x+to->nextcp.x)/2;
+ to->me.y = (to->prevcp.y+to->nextcp.y)/2;
+ }
+ if ( spt->prev!=NULL && spt->prev->order2 && !spt->prev->from->selected && spt->prev->from->ttfindex==0xffff ) {
+ SplinePoint *from = spt->prev->from;
+ from->nextcp = spt->prevcp;
+ from->me.x = (from->prevcp.x+from->nextcp.x)/2;
+ from->me.y = (from->prevcp.y+from->nextcp.y)/2;
+ }
+ }
+ anysel = true;
+ } else
+ allsel = alldone = false;
+ if ( spt->next==NULL )
+ break;
+ }
+ }
+ if ( !anysel ) /* This splineset had no selected points it's unchanged */
+ continue;
+
+ /* If we changed all the points, then transform the spiro version too */
+ /* otherwise if we just changed some points, throw away the spiro */
+ if ( allsel ) {
+ int i;
+ for ( i=0; i<spl->spiro_cnt-1; ++i )
+ TransformSpiro(&spl->spiros[i], transform);
+ } else
+ SplineSetSpirosClear(spl);
+
+ /* if we changed all the points then the control points are right */
+ /* otherwise those near the edges may be wonky, fix 'em up */
+ /* Figuring out where the edges of the selection are is difficult */
+ /* so let's just tweak all points, it shouldn't matter */
+ /* It does matter. Let's tweak all default points */
+ if( !(tpmask & tpmask_dontFixControlPoints))
+ {
+ if ( tpt!=tpt_AllPoints && !allsel && spl->first->next!=NULL && !spl->first->next->order2 )
+ {
+ pfirst = NULL;
+ for ( spt = spl->first ; spt!=pfirst; spt = spt->next->to )
+ {
+ if ( pfirst==NULL ) pfirst = spt;
+ if ( spt->selected && spt->prev!=NULL && !spt->prev->from->selected &&
+ spt->prev->from->pointtype == pt_tangent )
+ SplineCharTangentPrevCP(spt->prev->from);
+ if ( spt->selected && spt->next!=NULL && !spt->next->to->selected &&
+ spt->next->to->pointtype == pt_tangent )
+ SplineCharTangentNextCP(spt->next->to);
+ if ( spt->prev!=NULL && spt->prevcpdef && tpt==tpt_OnlySelected )
+ SplineCharDefaultPrevCP(spt);
+ if ( spt->next==NULL )
+ break;
+ if ( spt->nextcpdef && tpt==tpt_OnlySelected )
+ SplineCharDefaultNextCP(spt);
+ }
+ }
+ }
+ first = NULL;
+ for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) {
+ if ( !alldone ) SplineRefigureFixup(spline); else SplineRefigure(spline);
+ if ( first==NULL ) first = spline;
+ }
+ }
+return( base );
+}
+
+SplinePointList *SplinePointListTransform( SplinePointList *base, real transform[6],
+ enum transformPointType tpt )
+{
+ enum transformPointMask tpmask = 0;
+ return SplinePointListTransformExtended( base, transform, tpt, tpmask );
+}
+
+HintMask *HintMaskFromTransformedRef(RefChar *ref,BasePoint *trans,
+ SplineChar *basesc,HintMask *hm) {
+ StemInfo *st, *st2;
+ int hst_cnt, bcnt;
+ real start, width;
+ int i;
+
+ if ( ref->transform[1]!=0 || ref->transform[2]!=0 )
+return(NULL);
+
+ memset(hm,0,sizeof(HintMask));
+ for ( st = ref->sc->hstem; st!=NULL; st=st->next ) {
+ start = st->start*ref->transform[3] + ref->transform[5] + trans->y;
+ width = st->width*ref->transform[3];
+ for ( st2=basesc->hstem,bcnt=0; st2!=NULL; st2=st2->next, bcnt++ )
+ if ( st2->start == start && st2->width == width )
+ break;
+ if ( st2!=NULL )
+ (*hm)[bcnt>>3] |= (0x80>>(bcnt&7));
+ }
+ for ( st2=basesc->hstem,hst_cnt=0; st2!=NULL; st2=st2->next, hst_cnt++ );
+
+ for ( st = ref->sc->vstem; st!=NULL; st=st->next ) {
+ start = st->start*ref->transform[0] + ref->transform[4] + trans->x;
+ width = st->width*ref->transform[0];
+ for ( st2=basesc->vstem,bcnt=hst_cnt; st2!=NULL; st2=st2->next, bcnt++ )
+ if ( st2->start == start && st2->width == width )
+ break;
+ if ( st2!=NULL )
+ (*hm)[bcnt>>3] |= (0x80>>(bcnt&7));
+ }
+ for ( i=0; i<HntMax/8; ++i )
+ if ( (*hm)[i]!=0 )
+return( hm );
+
+return( NULL );
+}
+
+static HintMask *HintMaskTransform(HintMask *oldhm,real transform[6],
+ SplineChar *basesc,SplineChar *subsc) {
+ HintMask *newhm;
+ StemInfo *st, *st2;
+ int cnt, hst_cnt, bcnt;
+ real start, width;
+
+ if ( transform[1]!=0 || transform[2]!=0 )
+return( NULL );
+
+ newhm = chunkalloc(sizeof(HintMask));
+ for ( st = subsc->hstem,cnt = 0; st!=NULL; st=st->next, cnt++ ) {
+ if ( (*oldhm)[cnt>>3]&(0x80>>(cnt&7)) ) {
+ start = st->start*transform[3] + transform[5];
+ width = st->width*transform[3];
+ for ( st2=basesc->hstem,bcnt=0; st2!=NULL; st2=st2->next, bcnt++ )
+ if ( st2->start == start && st2->width == width )
+ break;
+ if ( st2!=NULL )
+ (*newhm)[bcnt>>3] |= (0x80>>(bcnt&7));
+ }
+ }
+ for ( st2=basesc->hstem,hst_cnt=0; st2!=NULL; st2=st2->next, hst_cnt++ );
+
+ for ( st = subsc->vstem; st!=NULL; st=st->next, cnt++ ) {
+ if ( (*oldhm)[cnt>>3]&(0x80>>(cnt&7)) ) {
+ start = st->start*transform[0] + transform[4];
+ width = st->width*transform[0];
+ for ( st2=basesc->vstem,bcnt=hst_cnt; st2!=NULL; st2=st2->next, bcnt++ )
+ if ( st2->start == start && st2->width == width )
+ break;
+ if ( st2!=NULL )
+ (*newhm)[bcnt>>3] |= (0x80>>(bcnt&7));
+ }
+ }
+return( newhm );
+}
+
+SplinePointList *SPLCopyTranslatedHintMasks(SplinePointList *base,
+ SplineChar *basesc, SplineChar *subsc, BasePoint *trans ) {
+ SplinePointList *spl, *spl2, *head;
+ SplinePoint *spt, *spt2, *pfirst;
+ real transform[6];
+ Spline *s, *first;
+
+ head = SplinePointListCopy(base);
+
+ transform[0] = transform[3] = 1; transform[1] = transform[2] = 0;
+ transform[4] = trans->x; transform[5] = trans->y;
+
+ for ( spl = head, spl2=base; spl!=NULL; spl = spl->next, spl2 = spl2->next ) {
+ pfirst = NULL;
+ for ( spt = spl->first, spt2 = spl2->first ; spt!=pfirst; spt = spt->next->to, spt2 = spt2->next->to ) {
+ if ( pfirst==NULL ) pfirst = spt;
+ TransformPoint(spt,transform);
+ if ( spt2->hintmask ) {
+ chunkfree(spt->hintmask,sizeof(HintMask));
+ spt->hintmask = HintMaskTransform(spt2->hintmask,transform,basesc,subsc);
+ }
+ if ( spt->next==NULL )
+ break;
+ }
+ first = NULL;
+ for ( s = spl->first->next; s!=NULL && s!=first; s=s->to->next ) {
+ SplineRefigure(s);
+ if ( first==NULL ) first = s;
+ }
+ }
+return( head );
+}
+
+static SplinePointList *_SPLCopyTransformedHintMasks(SplineChar *subsc,int layer,
+ real transform[6], SplineChar *basesc ) {
+ SplinePointList *spl, *spl2, *head, *last=NULL, *cur, *base;
+ SplinePoint *spt, *spt2, *pfirst;
+ Spline *s, *first;
+ real trans[6];
+ RefChar *rf;
+
+ base = subsc->layers[layer].splines;
+ head = SplinePointListCopy(base);
+ if ( head!=NULL )
+ for ( last = head; last->next!=NULL; last=last->next );
+
+ for ( spl = head, spl2=base; spl!=NULL; spl = spl->next, spl2=spl2->next ) {
+ pfirst = NULL;
+ for ( spt = spl->first, spt2 = spl2->first ; spt!=pfirst; spt = spt->next->to, spt2 = spt2->next->to ) {
+ if ( pfirst==NULL ) pfirst = spt;
+ TransformPoint(spt,transform);
+ if ( spt2->hintmask ) {
+ chunkfree(spt->hintmask,sizeof(HintMask));
+ spt->hintmask = HintMaskTransform(spt2->hintmask,transform,basesc,subsc);
+ }
+ if ( spt->next==NULL )
+ break;
+ }
+ first = NULL;
+ for ( s = spl->first->next; s!=NULL && s!=first; s=s->to->next ) {
+ SplineRefigure(s);
+ if ( first==NULL ) first = s;
+ }
+ }
+ for ( rf=subsc->layers[layer].refs; rf!=NULL; rf=rf->next ) {
+ trans[0] = rf->transform[0]*transform[0] +
+ rf->transform[1]*transform[2];
+ trans[1] = rf->transform[0]*transform[1] +
+ rf->transform[1]*transform[3];
+ trans[2] = rf->transform[2]*transform[0] +
+ rf->transform[3]*transform[2];
+ trans[3] = rf->transform[2]*transform[1] +
+ rf->transform[3]*transform[3];
+ trans[4] = rf->transform[4]*transform[0] +
+ rf->transform[5]*transform[2] +
+ transform[4];
+ trans[5] = rf->transform[4]*transform[1] +
+ rf->transform[5]*transform[3] +
+ transform[5];
+ cur = _SPLCopyTransformedHintMasks(rf->sc,layer,trans,basesc);
+ if ( head==NULL )
+ head = cur;
+ else
+ last->next = cur;
+ if ( cur!=NULL ) {
+ while ( cur->next!=NULL ) cur = cur->next;
+ last = cur;
+ }
+ }
+return( head );
+}
+
+SplinePointList *SPLCopyTransformedHintMasks(RefChar *r,
+ SplineChar *basesc, BasePoint *trans,int layer ) {
+ real transform[6];
+
+ memcpy(transform,r->transform,sizeof(transform));
+ transform[4] += trans->x; transform[5] += trans->y;
+return( _SPLCopyTransformedHintMasks(r->sc,layer,transform,basesc));
+}
+
+void SCMakeDependent(SplineChar *dependent,SplineChar *base) {
+ struct splinecharlist *dlist;
+
+ if ( dependent->searcherdummy )
+return;
+
+ for ( dlist=base->dependents; dlist!=NULL && dlist->sc!=dependent; dlist = dlist->next);
+ if ( dlist==NULL ) {
+ dlist = chunkalloc(sizeof(struct splinecharlist));
+ dlist->sc = dependent;
+ dlist->next = base->dependents;
+ base->dependents = dlist;
+ }
+}
+
+static void LayerToRefLayer(struct reflayer *rl,Layer *layer, real transform[6]) {
+ BrushCopy(&rl->fill_brush, &layer->fill_brush,transform);
+ PenCopy(&rl->stroke_pen, &layer->stroke_pen,transform);
+ rl->dofill = layer->dofill;
+ rl->dostroke = layer->dostroke;
+ rl->fillfirst = layer->fillfirst;
+}
+
+int RefLayerFindBaseLayerIndex(RefChar *rf, int layer) {
+ // Note that most of the logic below is copied and lightly modified from SCReinstanciateRefChar.
+ SplineChar *rsc = rf->sc;
+ int i = 0, j = 0, cnt = 0;
+ RefChar *subref;
+ for ( i=ly_fore; i<rsc->layer_cnt; ++i ) {
+ if ( rsc->layers[i].splines!=NULL) {
+ if (cnt == layer) return i;
+ ++cnt;
+ }
+ for ( subref=rsc->layers[i].refs; subref!=NULL; subref=subref->next ) {
+ for ( j=0; j<subref->layer_cnt; ++j ) if ( subref->layers[j].splines!=NULL ) {
+ if (cnt == layer) return i;
+ ++cnt;
+ }
+ }
+ }
+ return -1;
+}
+
+void RefCharFindBounds(RefChar *rf) {
+ int i;
+ SplineChar *rsc = rf->sc;
+ real extra=0,e;
+
+ memset(&rf->bb,'\0',sizeof(rf->bb));
+ rf->top.y = -1e10;
+ for ( i=0; i<rf->layer_cnt; ++i ) {
+ _SplineSetFindBounds(rf->layers[i].splines,&rf->bb);
+ _SplineSetFindTop(rf->layers[i].splines,&rf->top);
+ int baselayer = RefLayerFindBaseLayerIndex(rf, i);
+ if ( baselayer >= 0 && rsc->layers[baselayer].dostroke ) {
+ if ( rf->layers[i].stroke_pen.width!=WIDTH_INHERITED )
+ e = rf->layers[i].stroke_pen.width*rf->layers[i].stroke_pen.trans[0];
+ else
+ e = rf->layers[i].stroke_pen.trans[0];
+ if ( e>extra ) extra = e;
+ }
+ }
+ if ( rf->top.y < -65536 ) rf->top.y = rf->top.x = 0;
+ rf->bb.minx -= extra; rf->bb.miny -= extra;
+ rf->bb.maxx += extra; rf->bb.maxy += extra;
+}
+
+void SCReinstanciateRefChar(SplineChar *sc,RefChar *rf,int layer) {
+ SplinePointList *new, *last;
+ RefChar *refs;
+ int i,j;
+ SplineChar *rsc = rf->sc;
+ real extra=0,e;
+
+ for ( i=0; i<rf->layer_cnt; ++i ) {
+ SplinePointListsFree(rf->layers[i].splines);
+ GradientFree(rf->layers[i].fill_brush.gradient);
+ PatternFree(rf->layers[i].fill_brush.pattern);
+ GradientFree(rf->layers[i].stroke_pen.brush.gradient);
+ PatternFree(rf->layers[i].stroke_pen.brush.pattern);
+ }
+ free( rf->layers );
+ rf->layers = NULL;
+ rf->layer_cnt = 0;
+ if ( rsc==NULL )
+return;
+ /* Can be called before sc->parent is set, but only when reading a ttf */
+ /* file which won't be multilayer */
+ if ( sc->parent!=NULL && sc->parent->multilayer ) {
+ int cnt = 0;
+ RefChar *subref;
+ for ( i=ly_fore; i<rsc->layer_cnt; ++i ) {
+ if ( rsc->layers[i].splines!=NULL)
+ ++cnt;
+ for ( subref=rsc->layers[i].refs; subref!=NULL; subref=subref->next )
+ cnt += subref->layer_cnt;
+ }
+
+ rf->layer_cnt = cnt;
+ rf->layers = calloc(cnt,sizeof(struct reflayer));
+ cnt = 0;
+ for ( i=ly_fore; i<rsc->layer_cnt; ++i ) {
+ if ( rsc->layers[i].splines!=NULL ) {
+ rf->layers[cnt].splines =
+ SplinePointListTransform(
+ SplinePointListCopy(rsc->layers[i].splines),rf->transform,tpt_AllPoints);
+ LayerToRefLayer(&rf->layers[cnt],&rsc->layers[i],rf->transform);
+ ++cnt;
+ }
+ for ( subref=rsc->layers[i].refs; subref!=NULL; subref=subref->next ) {
+ for ( j=0; j<subref->layer_cnt; ++j ) if ( subref->layers[j].splines!=NULL ) {
+ rf->layers[cnt] = subref->layers[j];
+ rf->layers[cnt].splines =
+ SplinePointListTransform(
+ SplinePointListCopy(subref->layers[j].splines),rf->transform,tpt_AllPoints);
+ ++cnt;
+ }
+ }
+ }
+
+ memset(&rf->bb,'\0',sizeof(rf->bb));
+ rf->top.y = -1e10;
+ for ( i=0; i<rf->layer_cnt; ++i ) {
+ _SplineSetFindBounds(rf->layers[i].splines,&rf->bb);
+ _SplineSetFindTop(rf->layers[i].splines,&rf->top);
+ int baselayer = RefLayerFindBaseLayerIndex(rf, i);
+ if ( baselayer >= 0 && rsc->layers[baselayer].dostroke ) {
+ if ( rf->layers[i].stroke_pen.width!=WIDTH_INHERITED )
+ e = rf->layers[i].stroke_pen.width*rf->layers[i].stroke_pen.trans[0];
+ else
+ e = rf->layers[i].stroke_pen.trans[0];
+ if ( e>extra ) extra = e;
+ }
+ }
+ if ( rf->top.y < -65536 ) rf->top.y = rf->top.x = 0;
+ rf->bb.minx -= extra; rf->bb.miny -= extra;
+ rf->bb.maxx += extra; rf->bb.maxy += extra;
+ } else {
+ if ( rf->layer_cnt>0 ) {
+ SplinePointListsFree(rf->layers[0].splines);
+ rf->layers[0].splines = NULL;
+ }
+ rf->layers = calloc(1,sizeof(struct reflayer));
+ rf->layer_cnt = 1;
+ rf->layers[0].dofill = true;
+ new = SplinePointListTransform(SplinePointListCopy(rf->sc->layers[layer].splines),rf->transform,tpt_AllPoints);
+ rf->layers[0].splines = new;
+ last = NULL;
+ if ( new!=NULL )
+ for ( last = new; last->next!=NULL; last = last->next );
+ for ( refs = rf->sc->layers[layer].refs; refs!=NULL; refs = refs->next ) {
+ new = SplinePointListTransform(SplinePointListCopy(refs->layers[0].splines),rf->transform,tpt_AllPoints);
+ if ( last!=NULL )
+ last->next = new;
+ else
+ rf->layers[0].splines = new;
+ if ( new!=NULL )
+ for ( last = new; last->next!=NULL; last = last->next );
+ }
+ }
+ RefCharFindBounds(rf);
+}
+
+/* This returns all real solutions, even those out of bounds */
+/* I use -999999 as an error flag, since we're really only interested in */
+/* solns near 0 and 1 that should be ok. -1 is perhaps a little too close */
+/* Sigh. When solutions are near 0, the rounding errors are appalling. */
+int _CubicSolve(const Spline1D *sp,bigreal sought, extended ts[3]) {
+ extended d, xN, yN, delta2, temp, delta, h, t2, t3, theta;
+ extended sa=sp->a, sb=sp->b, sc=sp->c, sd=sp->d-sought;
+ int i=0;
+
+ ts[0] = ts[1] = ts[2] = -999999;
+ if ( sd==0 && sa!=0 ) {
+ /* one of the roots is 0, the other two are the soln of a quadratic */
+ ts[0] = 0;
+ if ( sc==0 ) {
+ ts[1] = -sb/(extended) sa; /* two zero roots */
+ } else {
+ temp = sb*(extended) sb-4*(extended) sa*sc;
+ if ( RealNear(temp,0))
+ ts[1] = -sb/(2*(extended) sa);
+ else if ( temp>=0 ) {
+ temp = sqrt(temp);
+ ts[1] = (-sb+temp)/(2*(extended) sa);
+ ts[2] = (-sb-temp)/(2*(extended) sa);
+ }
+ }
+ } else if ( sa!=0 ) {
+ /* http://www.m-a.org.uk/eb/mg/mg077ch.pdf */
+ /* this nifty solution to the cubic neatly avoids complex arithmatic */
+ xN = -sb/(3*(extended) sa);
+ yN = ((sa*xN + sb)*xN+sc)*xN + sd;
+
+ delta2 = (sb*(extended) sb-3*(extended) sa*sc)/(9*(extended) sa*sa);
+ /*if ( RealWithin(delta2,0,.00000001) ) delta2 = 0;*/
+
+ /* the descriminant is yN^2-h^2, but delta might be <0 so avoid using h */
+ d = yN*yN - 4*sa*sa*delta2*delta2*delta2;
+ if ( ((yN>.01 || yN<-.01) && RealNear(d/yN,0)) || ((yN<=.01 && yN>=-.01) && RealNear(d,0)) )
+ d = 0;
+ if ( d>0 ) {
+ temp = sqrt(d);
+ t2 = (-yN-temp)/(2*sa);
+ t2 = (t2==0) ? 0 : (t2<0) ? -pow(-t2,1./3.) : pow(t2,1./3.);
+ t3 = (-yN+temp)/(2*sa);
+ t3 = t3==0 ? 0 : (t3<0) ? -pow(-t3,1./3.) : pow(t3,1./3.);
+ ts[0] = xN + t2 + t3;
+ } else if ( d<0 ) {
+ if ( delta2>=0 ) {
+ delta = sqrt(delta2);
+ h = 2*sa*delta2*delta;
+ temp = -yN/h;
+ if ( temp>=-1.0001 && temp<=1.0001 ) {
+ if ( temp<-1 ) temp = -1; else if ( temp>1 ) temp = 1;
+ theta = acos(temp)/3;
+ ts[i++] = xN+2*delta*cos(theta);
+ ts[i++] = xN+2*delta*cos(2.0943951+theta); /* 2*pi/3 */
+ ts[i++] = xN+2*delta*cos(4.1887902+theta); /* 4*pi/3 */
+ }
+ }
+ } else if ( /* d==0 && */ delta2!=0 ) {
+ delta = yN/(2*sa);
+ delta = delta==0 ? 0 : delta>0 ? pow(delta,1./3.) : -pow(-delta,1./3.);
+ ts[i++] = xN + delta; /* this root twice, but that's irrelevant to me */
+ ts[i++] = xN - 2*delta;
+ } else if ( /* d==0 && */ delta2==0 ) {
+ if ( xN>=-0.0001 && xN<=1.0001 ) ts[0] = xN;
+ }
+ } else if ( sb!=0 ) {
+ extended d = sc*(extended) sc-4*(extended) sb*sd;
+ if ( d<0 && RealNear(d,0)) d=0;
+ if ( d<0 )
+return(false); /* All roots imaginary */
+ d = sqrt(d);
+ ts[0] = (-sc-d)/(2*(extended) sb);
+ ts[1] = (-sc+d)/(2*(extended) sb);
+ } else if ( sc!=0 ) {
+ ts[0] = -sd/(extended) sc;
+ } else {
+ /* If it's a point then either everything is a solution, or nothing */
+ }
+return( ts[0]!=-999999 );
+}
+
+int CubicSolve(const Spline1D *sp,bigreal sought, extended ts[3]) {
+ extended t;
+ extended ts2[3];
+ int i,j;
+ /* This routine gives us all solutions between [0,1] with -1 as an error flag */
+ /* http://mathforum.org/dr.math/faq/faq.cubic.equations.html */
+
+ ts[0] = ts[1] = ts[2] = -1;
+ if ( !_CubicSolve(sp,sought,ts2)) {
+return( false );
+ }
+
+ for ( i=j=0; i<3; ++i ) {
+ if ( ts2[i]>-.0001 && ts2[i]<1.0001 ) {
+ if ( ts2[i]<0 ) ts[j++] = 0;
+ else if ( ts2[i]>1 ) ts[j++] = 1;
+ else
+ ts[j++] = ts2[i];
+ }
+ }
+ if ( j==0 )
+return( false );
+
+ if ( ts[0]>ts[2] && ts[2]!=-1 ) {
+ t = ts[0]; ts[0] = ts[2]; ts[2] = t;
+ }
+ if ( ts[0]>ts[1] && ts[1]!=-1 ) {
+ t = ts[0]; ts[0] = ts[1]; ts[1] = t;
+ }
+ if ( ts[1]>ts[2] && ts[2]!=-1 ) {
+ t = ts[1]; ts[1] = ts[2]; ts[2] = t;
+ }
+return( true );
+}
+
+/* An IEEE double has 52 bits of precision. So one unit of rounding error will be */
+/* the number divided by 2^51 */
+# define D_RE_Factor (1024.0*1024.0*1024.0*1024.0*1024.0*2.0)
+/* But that's not going to work near 0, so, since the t values we care about */
+/* are [0,1], let's use 1.0/D_RE_Factor */
+
+extended IterateSplineSolve(const Spline1D *sp, extended tmin, extended tmax,
+ extended sought) {
+ extended t, low, high, test;
+ Spline1D temp;
+ /* Now the closed form CubicSolver can have rounding errors so if we know */
+ /* the spline to be monotonic, an iterative approach is more accurate */
+
+ if ( tmin>tmax ) {
+ t=tmin; tmin=tmax; tmax=t;
+ }
+
+ temp = *sp;
+ temp.d -= sought;
+
+ if ( temp.a==0 && temp.b==0 && temp.c!=0 ) {
+ t = -temp.d/(extended) temp.c;
+ if ( t<tmin || t>tmax )
+return( -1 );
+return( t );
+ }
+
+ low = ((temp.a*tmin+temp.b)*tmin+temp.c)*tmin+temp.d;
+ high = ((temp.a*tmax+temp.b)*tmax+temp.c)*tmax+temp.d;
+ if ( low==0 )
+return(tmin);
+ if ( high==0 )
+return(tmax);
+ if (( low<0 && high>0 ) ||
+ ( low>0 && high<0 )) {
+
+ for (;;) {
+ t = (tmax+tmin)/2;
+ if ( t==tmax || t==tmin )
+return( t );
+ test = ((temp.a*t+temp.b)*t+temp.c)*t+temp.d;
+ if ( test==0 ) /* someone complained that this test relied on exact arithmetic. In fact this test will almost never be hit, the real exit test is the line above, when tmin/tmax are so close that there is no space between them in the floating representation */
+return( t );
+ if ( (low<0 && test<0) || (low>0 && test>0) )
+ tmin=t;
+ else
+ tmax = t;
+ }
+ } else if ( low<.0001 && low>-.0001 )
+return( tmin ); /* Rounding errors */
+ else if ( high<.0001 && high>-.0001 )
+return( tmax );
+
+return( -1 );
+}
+
+extended IterateSplineSolveFixup(const Spline1D *sp, extended tmin, extended tmax,
+ extended sought) {
+ // Search between tmin and tmax for a t-value at which the spline outputs sought.
+ extended t;
+ bigreal factor;
+ extended val, valp, valm;
+
+ if ( tmin>tmax ) {
+ t=tmin; tmin=tmax; tmax=t;
+ }
+
+ t = IterateSplineSolve(sp,tmin,tmax,sought);
+
+ if ( t==-1 )
+return( -1 );
+
+ if ((val = (((sp->a*t+sp->b)*t+sp->c)*t+sp->d) - sought)<0 )
+ val=-val;
+ if ( val!=0 ) {
+ for ( factor=1024.0*1024.0*1024.0*1024.0*1024.0; factor>.5; factor/=2.0 ) {
+ extended tp = t + (factor*t)/D_RE_Factor;
+ extended tm = t - (factor*t)/D_RE_Factor;
+ if ( tp>tmax ) tp=tmax;
+ if ( tm<tmin ) tm=tmin;
+ if ( (valp = (((sp->a*tp+sp->b)*tp+sp->c)*tp+sp->d) - sought)<0 )
+ valp = -valp;
+ if ( (valm = (((sp->a*tm+sp->b)*tm+sp->c)*tm+sp->d) - sought)<0 )
+ valm = -valm;
+ if ( valp<val && valp<valm ) {
+ t = tp;
+ val = valp;
+ } else if ( valm<val ) {
+ t = tm;
+ val = valm;
+ }
+ }
+ }
+ if ( t==0 && !Within16RoundingErrors(sought,sought+val))
+return( -1 );
+ /* if t!=0 then we we get the chance of far worse rounding errors */
+ else if ( t==tmax || t==tmin ) {
+ if ( Within16RoundingErrors(sought,sought+val) ||
+ Within16RoundingErrors(sp->a,sp->a+val) ||
+ Within16RoundingErrors(sp->b,sp->b+val) ||
+ Within16RoundingErrors(sp->c,sp->c+val) ||
+ Within16RoundingErrors(sp->c,sp->c+val) ||
+ Within16RoundingErrors(sp->d,sp->d+val))
+return( t );
+ else
+return( -1 );
+ }
+
+ if ( t>=tmin && t<=tmax )
+return( t );
+
+ /* I don't think this can happen... */
+return( -1 );
+}
+
+double CheckExtremaForSingleBitErrors(const Spline1D *sp, double t, double othert) {
+ double u1, um1;
+ double slope, slope1, slopem1;
+ int err;
+ double diff, factor;
+
+ if ( t<0 || t>1 )
+return( t );
+
+ factor = t*0x40000/D_RE_Factor;
+ if ( (diff = t-othert)<0 ) diff= -diff;
+ if ( factor>diff/4 && diff!=0 ) /* This little check is to insure we don't skip beyond the well of this extremum into the next */
+ factor = diff/4;
+
+ slope = (3*(double) sp->a*t+2*sp->b)*t+sp->c;
+ if ( slope<0 ) slope = -slope;
+
+ for ( err = 0x40000; err!=0; err>>=1 ) {
+ u1 = t+factor;
+ slope1 = (3*(double) sp->a*u1+2*sp->b)*u1+sp->c;
+ if ( slope1<0 ) slope1 = -slope1;
+
+ um1 = t-factor;
+ slopem1 = (3*(double) sp->a*um1+2*sp->b)*um1+sp->c;
+ if ( slopem1<0 ) slopem1 = -slopem1;
+
+ if ( slope1<slope && slope1<=slopem1 && u1<=1.0 ) {
+ t = u1;
+ } else if ( slopem1<slope && slopem1<=slope1 && um1>=0.0 ) {
+ t = um1;
+ }
+ factor /= 2.0;
+ }
+ /* that seems as good as it gets */
+
+return( t );
+}
+
+void SplineFindExtrema(const Spline1D *sp, extended *_t1, extended *_t2 ) {
+ extended t1= -1, t2= -1;
+ extended b2_fourac;
+
+ /* Find the extreme points on the curve */
+ /* Set to -1 if there are none or if they are outside the range [0,1] */
+ /* Order them so that t1<t2 */
+ /* If only one valid extremum it will be t1 */
+ /* (Does not check the end points unless they have derivative==0) */
+ /* (Does not check to see if d/dt==0 points are inflection points (rather than extrema) */
+ if ( sp->a!=0 ) {
+ /* cubic, possibly 2 extrema (possibly none) */
+ b2_fourac = 4*(extended) sp->b*sp->b - 12*(extended) sp->a*sp->c;
+ if ( b2_fourac>=0 ) {
+ b2_fourac = sqrt(b2_fourac);
+ t1 = (-2*sp->b - b2_fourac) / (6*sp->a);
+ t2 = (-2*sp->b + b2_fourac) / (6*sp->a);
+ t1 = CheckExtremaForSingleBitErrors(sp,t1,t2);
+ t2 = CheckExtremaForSingleBitErrors(sp,t2,t1);
+ if ( t1>t2 ) { extended temp = t1; t1 = t2; t2 = temp; }
+ else if ( t1==t2 ) t2 = -1;
+ if ( RealNear(t1,0)) t1=0; else if ( RealNear(t1,1)) t1=1;
+ if ( RealNear(t2,0)) t2=0; else if ( RealNear(t2,1)) t2=1;
+ if ( t2<=0 || t2>=1 ) t2 = -1;
+ if ( t1<=0 || t1>=1 ) { t1 = t2; t2 = -1; }
+ }
+ } else if ( sp->b!=0 ) {
+ /* Quadratic, at most one extremum */
+ t1 = -sp->c/(2.0*(extended) sp->b);
+ if ( t1<=0 || t1>=1 ) t1 = -1;
+ } else /*if ( sp->c!=0 )*/ {
+ /* linear, no extrema */
+ }
+ *_t1 = t1; *_t2 = t2;
+}
+
+bigreal SplineCurvature(Spline *s, bigreal t) {
+ /* Kappa = (x'y'' - y'x'') / (x'^2 + y'^2)^(3/2) */
+ bigreal dxdt, dydt, d2xdt2, d2ydt2, denom, numer;
+
+ if ( s==NULL )
+return( CURVATURE_ERROR );
+
+ dxdt = (3*s->splines[0].a*t+2*s->splines[0].b)*t+s->splines[0].c;
+ dydt = (3*s->splines[1].a*t+2*s->splines[1].b)*t+s->splines[1].c;
+ d2xdt2 = 6*s->splines[0].a*t + 2*s->splines[0].b;
+ d2ydt2 = 6*s->splines[1].a*t + 2*s->splines[1].b;
+ denom = pow( dxdt*dxdt + dydt*dydt, 3.0/2.0 );
+ numer = dxdt*d2ydt2 - dydt*d2xdt2;
+
+ if ( numer==0 )
+return( 0 );
+ if ( denom==0 )
+return( CURVATURE_ERROR );
+
+return( numer/denom );
+}
+
+int Spline2DFindExtrema(const Spline *sp, extended extrema[4] ) {
+ int i,j;
+ BasePoint last, cur, mid;
+
+ /* If the control points are at the end-points then this (1D) spline is */
+ /* basically a line. But rounding errors can give us very faint extrema */
+ /* if we look for them */
+ if ( !Spline1DCantExtremeX(sp) )
+ SplineFindExtrema(&sp->splines[0],&extrema[0],&extrema[1]);
+ else
+ extrema[0] = extrema[1] = -1;
+ if ( !Spline1DCantExtremeY(sp) )
+ SplineFindExtrema(&sp->splines[1],&extrema[2],&extrema[3]);
+ else
+ extrema[2] = extrema[3] = -1;
+
+ for ( i=0; i<3; ++i ) for ( j=i+1; j<4; ++j ) {
+ if ( (extrema[i]==-1 && extrema[j]!=-1) || (extrema[i]>extrema[j] && extrema[j]!=-1) ) {
+ extended temp = extrema[i];
+ extrema[i] = extrema[j];
+ extrema[j] = temp;
+ }
+ }
+ for ( i=j=0; i<3 && extrema[i]!=-1; ++i ) {
+ if ( extrema[i]==extrema[i+1] ) {
+ for ( j=i+1; j<3; ++j )
+ extrema[j] = extrema[j+1];
+ extrema[3] = -1;
+ }
+ }
+
+ /* Extrema which are too close together are not interesting */
+ last = sp->from->me;
+ for ( i=0; i<4 && extrema[i]!=-1; ++i ) {
+ cur.x = ((sp->splines[0].a*extrema[i]+sp->splines[0].b)*extrema[i]+
+ sp->splines[0].c)*extrema[i]+sp->splines[0].d;
+ cur.y = ((sp->splines[1].a*extrema[i]+sp->splines[1].b)*extrema[i]+
+ sp->splines[1].c)*extrema[i]+sp->splines[1].d;
+ mid.x = (last.x+cur.x)/2; mid.y = (last.y+cur.y)/2;
+ if ( (mid.x==last.x || mid.x==cur.x) &&
+ (mid.y==last.y || mid.y==cur.y)) {
+ for ( j=i; j<3; ++j )
+ extrema[j] = extrema[j+1];
+ extrema[3] = -1;
+ --i;
+ } else
+ last = cur;
+ }
+ if ( extrema[0]!=-1 ) {
+ mid.x = (last.x+sp->to->me.x)/2; mid.y = (last.y+sp->to->me.y)/2;
+ if ( (mid.x==last.x || mid.x==cur.x) &&
+ (mid.y==last.y || mid.y==cur.y))
+ extrema[i-1] = -1;
+ }
+ for ( i=0; i<4 && extrema[i]!=-1; ++i );
+ if ( i!=0 ) {
+ cur = sp->to->me;
+ mid.x = (last.x+cur.x)/2; mid.y = (last.y+cur.y)/2;
+ if ( (mid.x==last.x || mid.x==cur.x) &&
+ (mid.y==last.y || mid.y==cur.y))
+ extrema[--i] = -1;
+ }
+
+return( i );
+}
+
+int Spline2DFindPointsOfInflection(const Spline *sp, extended poi[2] ) {
+ int cnt=0;
+ extended a, b, c, b2_fourac, t;
+ /* A POI happens when d2 y/dx2 is zero. This is not the same as d2y/dt2 / d2x/dt2 */
+ /* d2 y/dx^2 = d/dt ( dy/dt / dx/dt ) / dx/dt */
+ /* = ( (dx/dt) * d2 y/dt2 - ((dy/dt) * d2 x/dt2) )/ (dx/dt)^3 */
+ /* (3ax*t^2+2bx*t+cx) * (6ay*t+2by) - (3ay*t^2+2by*t+cy) * (6ax*t+2bx) == 0 */
+ /* (3ax*t^2+2bx*t+cx) * (3ay*t+by) - (3ay*t^2+2by*t+cy) * (3ax*t+bx) == 0 */
+ /* 9*ax*ay*t^3 + (3ax*by+6bx*ay)*t^2 + (2bx*by+3cx*ay)*t + cx*by */
+ /* -(9*ax*ay*t^3 + (3ay*bx+6by*ax)*t^2 + (2by*bx+3cy*ax)*t + cy*bx)==0 */
+ /* 3*(ax*by-ay*bx)*t^2 + 3*(cx*ay-cy*ax)*t+ (cx*by-cy*bx) == 0 */
+
+ a = 3*((extended) sp->splines[1].a*sp->splines[0].b-(extended) sp->splines[0].a*sp->splines[1].b);
+ b = 3*((extended) sp->splines[0].c*sp->splines[1].a - (extended) sp->splines[1].c*sp->splines[0].a);
+ c = (extended) sp->splines[0].c*sp->splines[1].b-(extended) sp->splines[1].c*sp->splines[0].b;
+ if ( !RealNear(a,0) ) {
+ b2_fourac = b*b - 4*a*c;
+ poi[0] = poi[1] = -1;
+ if ( b2_fourac<0 )
+return( 0 );
+ b2_fourac = sqrt( b2_fourac );
+ t = (-b+b2_fourac)/(2*a);
+ if ( t>=0 && t<=1.0 )
+ poi[cnt++] = t;
+ t = (-b-b2_fourac)/(2*a);
+ if ( t>=0 && t<=1.0 ) {
+ if ( cnt==1 && poi[0]>t ) {
+ poi[1] = poi[0];
+ poi[0] = t;
+ ++cnt;
+ } else
+ poi[cnt++] = t;
+ }
+ } else if ( !RealNear(b,0) ) {
+ t = -c/b;
+ if ( t>=0 && t<=1.0 )
+ poi[cnt++] = t;
+ }
+ if ( cnt<2 )
+ poi[cnt] = -1;
+
+return( cnt );
+}
+
+/* Ok, if the above routine finds an extremum that less than 1 unit */
+/* from an endpoint or another extremum, then many things are */
+/* just going to skip over it, and other things will be confused by this */
+/* so just remove it. It should be so close the difference won't matter */
+void SplineRemoveExtremaTooClose(Spline1D *sp, extended *_t1, extended *_t2 ) {
+ extended last, test;
+ extended t1= *_t1, t2 = *_t2;
+
+ if ( t1>t2 && t2!=-1 ) {
+ t1 = t2;
+ t2 = *_t1;
+ }
+ last = sp->d;
+ if ( t1!=-1 ) {
+ test = ((sp->a*t1+sp->b)*t1+sp->c)*t1+sp->d;
+ if ( (test-last)*(test-last)<1 )
+ t1 = -1;
+ else
+ last = test;
+ }
+ if ( t2!=-1 ) {
+ test = ((sp->a*t2+sp->b)*t2+sp->c)*t2+sp->d;
+ if ( (test-last)*(test-last)<1 )
+ t2 = -1;
+ else
+ last = test;
+ }
+ test = sp->a+sp->b+sp->c+sp->d;
+ if ( (test-last)*(test-last)<1 ) {
+ if ( t2!=-1 )
+ t2 = -1;
+ else if ( t1!=-1 )
+ t1 = -1;
+ else {
+ /* Well we should just remove the whole spline? */
+ ;
+ }
+ }
+ *_t1 = t1; *_t2 = t2;
+}
+
+int IntersectLines(BasePoint *inter,
+ BasePoint *line1_1, BasePoint *line1_2,
+ BasePoint *line2_1, BasePoint *line2_2) {
+ // A lot of functions call this with the same address as an input and the output.
+ // In order to avoid unexpected behavior, we delay writing to the output until the end.
+ bigreal s1, s2;
+ BasePoint _output;
+ BasePoint * output = &_output;
+ if ( line1_1->x == line1_2->x ) {
+ // Line 1 is vertical.
+ output->x = line1_1->x;
+ if ( line2_1->x == line2_2->x ) {
+ // Line 2 is vertical.
+ if ( line2_1->x!=line1_1->x )
+ return( false ); /* Parallel vertical lines */
+ output->y = (line1_1->y+line2_1->y)/2;
+ } else {
+ output->y = line2_1->y + (output->x-line2_1->x) * (line2_2->y - line2_1->y)/(line2_2->x - line2_1->x);
+ }
+ *inter = *output;
+ return( true );
+ } else if ( line2_1->x == line2_2->x ) {
+ // Line 2 is vertical, but we know that line 1 is not.
+ output->x = line2_1->x;
+ output->y = line1_1->y + (output->x-line1_1->x) * (line1_2->y - line1_1->y)/(line1_2->x - line1_1->x);
+ *inter = *output;
+ return( true );
+ } else {
+ // Both lines are oblique.
+ s1 = (line1_2->y - line1_1->y)/(line1_2->x - line1_1->x);
+ s2 = (line2_2->y - line2_1->y)/(line2_2->x - line2_1->x);
+ if ( RealNear(s1,s2)) {
+ if ( !RealNear(line1_1->y + (line2_1->x-line1_1->x) * s1,line2_1->y))
+ return( false );
+ output->x = (line1_2->x+line2_2->x)/2;
+ output->y = (line1_2->y+line2_2->y)/2;
+ } else {
+ output->x = (s1*line1_1->x - s2*line2_1->x - line1_1->y + line2_1->y)/(s1-s2);
+ output->y = line1_1->y + (output->x-line1_1->x) * s1;
+ }
+ *inter = *output;
+ return( true );
+ }
+}
+
+int IntersectLinesClip(BasePoint *inter,
+ BasePoint *line1_1, BasePoint *line1_2,
+ BasePoint *line2_1, BasePoint *line2_2) {
+ BasePoint old = *inter, unit;
+ bigreal len, val;
+
+ if ( !IntersectLines(inter,line1_1,line1_2,line2_1,line2_2))
+return( false );
+ else {
+ unit.x = line2_2->x-line1_2->x;
+ unit.y = line2_2->y-line1_2->y;
+ len = sqrt(unit.x*unit.x + unit.y*unit.y);
+ if ( len==0 )
+return( false );
+ else {
+ unit.x /= len; unit.y /= len;
+ val = unit.x*(inter->x-line1_2->x) + unit.y*(inter->y-line1_2->y);
+ if ( val<=0 || val>=len ) {
+ *inter = old;
+return( false );
+ }
+ }
+ }
+return( true );
+}
+
+static int AddPoint(extended x,extended y,extended t,extended s,BasePoint *pts,
+ extended t1s[3],extended t2s[3], int soln) {
+ int i;
+
+ for ( i=0; i<soln; ++i )
+ if ( x==pts[i].x && y==pts[i].y )
+return( soln );
+ if ( soln>=9 )
+ IError( "Too many solutions!\n" );
+ t1s[soln] = t;
+ t2s[soln] = s;
+ pts[soln].x = x;
+ pts[soln].y = y;
+return( soln+1 );
+}
+
+static void IterateSolve(const Spline1D *sp,extended ts[3]) {
+ /* The closed form solution has too many rounding errors for my taste... */
+ int i,j;
+
+ ts[0] = ts[1] = ts[2] = -1;
+
+ if ( sp->a!=0 ) {
+ extended e[4];
+ e[0] = 0; e[1] = e[2] = e[3] = 1.0;
+ SplineFindExtrema(sp,&e[1],&e[2]);
+ if ( e[1]==-1 ) e[1] = 1;
+ if ( e[2]==-1 ) e[2] = 1;
+ for ( i=j=0; i<3; ++i ) {
+ ts[j] = IterateSplineSolve(sp,e[i],e[i+1],0);
+ if ( ts[j]!=-1 ) ++j;
+ if ( e[i+1]==1.0 )
+ break;
+ }
+ } else if ( sp->b!=0 ) {
+ extended b2_4ac = sp->c*(extended) sp->c - 4*sp->b*(extended) sp->d;
+ if ( b2_4ac>=0 ) {
+ b2_4ac = sqrt(b2_4ac);
+ ts[0] = (-sp->c-b2_4ac)/(2*sp->b);
+ ts[1] = (-sp->c+b2_4ac)/(2*sp->b);
+ if ( ts[0]>ts[1] ) { bigreal t = ts[0]; ts[0] = ts[1]; ts[1] = t; }
+ }
+ } else if ( sp->c!=0 ) {
+ ts[0] = -sp->d/(extended) sp->c;
+ } else {
+ /* No solutions, or all solutions */
+ ;
+ }
+
+ for ( i=j=0; i<3; ++i )
+ if ( ts[i]>=0 && ts[i]<=1 )
+ ts[j++] = ts[i];
+ for ( i=0; i<j-1; ++i )
+ if ( ts[i]+.0000001>ts[i+1]) {
+ ts[i] = (ts[i]+ts[i+1])/2;
+ --j;
+ for ( ++i; i<j; ++i )
+ ts[i] = ts[i+1];
+ }
+ if ( j!=0 ) {
+ if ( ts[0]!=0 ) {
+ extended d0 = sp->d;
+ extended dt = ((sp->a*ts[0]+sp->b)*ts[0]+sp->c)*ts[0]+sp->d;
+ if ( d0<0 ) d0=-d0;
+ if ( dt<0 ) dt=-dt;
+ if ( d0<dt )
+ ts[0] = 0;
+ }
+ if ( ts[j-1]!=1.0 ) {
+ extended d1 = sp->a+(extended) sp->b+sp->c+sp->d;
+ extended dt = ((sp->a*ts[j-1]+sp->b)*ts[j-1]+sp->c)*ts[j-1]+sp->d;
+ if ( d1<0 ) d1=-d1;
+ if ( dt<0 ) dt=-dt;
+ if ( d1<dt )
+ ts[j-1] = 1;
+ }
+ }
+ for ( ; j<3; ++j )
+ ts[j] = -1;
+}
+
+static extended ISolveWithin(const Spline *spline,int major,
+ extended val,extended tlow, extended thigh) {
+ Spline1D temp;
+ extended ts[3];
+ const Spline1D *sp = &spline->splines[major];
+ int i;
+
+ /* Calculation for t=1 can yield rounding errors. Insist on the endpoints */
+ /* (the Spline1D is not a perfectly accurate description of the spline, */
+ /* but the control points are right -- at least that's my defn.) */
+ if ( tlow==0 && val==(&spline->from->me.x)[major] )
+return( 0 );
+ if ( thigh==1.0 && val==(&spline->to->me.x)[major] )
+return( 1.0 );
+
+ temp = *sp;
+ temp.d -= val;
+ IterateSolve(&temp,ts);
+ if ( tlow<thigh ) {
+ for ( i=0; i<3; ++i )
+ if ( ts[i]>=tlow && ts[i]<=thigh )
+return( ts[i] );
+ for ( i=0; i<3; ++i ) {
+ if ( ts[i]>=tlow-1./1024. && ts[i]<=tlow )
+return( tlow );
+ if ( ts[i]>=thigh && ts[i]<=thigh+1./1024 )
+return( thigh );
+ }
+ } else {
+ for ( i=0; i<3; ++i )
+ if ( ts[i]>=thigh && ts[i]<=tlow )
+return( ts[i] );
+ for ( i=0; i<3; ++i ) {
+ if ( ts[i]>=thigh-1./1024. && ts[i]<=thigh )
+return( thigh );
+ if ( ts[i]>=tlow && ts[i]<=tlow+1./1024 )
+return( tlow );
+ }
+ }
+return( -1 );
+}
+
+static int ICAddInter(int cnt,BasePoint *foundpos,extended *foundt1,extended *foundt2,
+ const Spline *s1,const Spline *s2,extended t1,extended t2, int maxcnt) {
+
+ if ( cnt>=maxcnt )
+return( cnt );
+
+ foundt1[cnt] = t1;
+ foundt2[cnt] = t2;
+ foundpos[cnt].x = ((s1->splines[0].a*t1+s1->splines[0].b)*t1+
+ s1->splines[0].c)*t1+s1->splines[0].d;
+ foundpos[cnt].y = ((s1->splines[1].a*t1+s1->splines[1].b)*t1+
+ s1->splines[1].c)*t1+s1->splines[1].d;
+return( cnt+1 );
+}
+
+static int ICBinarySearch(int cnt,BasePoint *foundpos,extended *foundt1,extended *foundt2,
+ int other,
+ const Spline *s1,const Spline *s2,extended t1low,extended t1high,extended t2low,extended t2high,
+ int maxcnt) {
+ int major;
+ extended t1, t2;
+ extended o1o, o2o, o1n, o2n, m;
+
+ major = !other;
+ o1o = ((s1->splines[other].a*t1low+s1->splines[other].b)*t1low+
+ s1->splines[other].c)*t1low+s1->splines[other].d;
+ o2o = ((s2->splines[other].a*t2low+s2->splines[other].b)*t2low+
+ s2->splines[other].c)*t2low+s2->splines[other].d;
+ for (;;) {
+ t1 = (t1low+t1high)/2;
+ m = ((s1->splines[major].a*t1+s1->splines[major].b)*t1+
+ s1->splines[major].c)*t1+s1->splines[major].d;
+ t2 = ISolveWithin(s2,major,m,t2low,t2high);
+ if ( t2==-1 )
+return( cnt );
+
+ o1n = ((s1->splines[other].a*t1+s1->splines[other].b)*t1+
+ s1->splines[other].c)*t1+s1->splines[other].d;
+ o2n = ((s2->splines[other].a*t2+s2->splines[other].b)*t2+
+ s2->splines[other].c)*t2+s2->splines[other].d;
+ if (( o1n-o2n<.001 && o1n-o2n>-.001) ||
+ (t1-t1low<.0001 && t1-t1low>-.0001))
+return( ICAddInter(cnt,foundpos,foundt1,foundt2,s1,s2,t1,t2,maxcnt));
+ if ( (o1o>o2o && o1n<o2n) || (o1o<o2o && o1n>o2n)) {
+ t1high = t1;
+ t2high = t2;
+ } else {
+ t1low = t1;
+ t2low = t2;
+ }
+ }
+}
+
+static int CubicsIntersect(const Spline *s1,extended lowt1,extended hight1,BasePoint *min1,BasePoint *max1,
+ const Spline *s2,extended lowt2,extended hight2,BasePoint *min2,BasePoint *max2,
+ BasePoint *foundpos,extended *foundt1,extended *foundt2,
+ int maxcnt) {
+ int major, other;
+ BasePoint max, min;
+ extended t1max, t1min, t2max, t2min, t1, t2, t1diff, oldt2;
+ extended o1o, o2o, o1n, o2n, m;
+ int cnt=0;
+
+ if ( (min.x = min1->x)<min2->x ) min.x = min2->x;
+ if ( (min.y = min1->y)<min2->y ) min.y = min2->y;
+ if ( (max.x = max1->x)>max2->x ) max.x = max2->x;
+ if ( (max.y = max1->y)>max2->y ) max.y = max2->y;
+ if ( max.x<min.x || max.y<min.y )
+return( 0 );
+ if ( max.x-min.x > max.y-min.y )
+ major = 0;
+ else
+ major = 1;
+ other = 1-major;
+
+ t1max = ISolveWithin(s1,major,(&max.x)[major],lowt1,hight1);
+ t1min = ISolveWithin(s1,major,(&min.x)[major],lowt1,hight1);
+ t2max = ISolveWithin(s2,major,(&max.x)[major],lowt2,hight2);
+ t2min = ISolveWithin(s2,major,(&min.x)[major],lowt2,hight2);
+ if ( t1max==-1 || t1min==-1 || t2max==-1 || t2min==-1 )
+return( 0 );
+ t1diff = (t1max-t1min)/64.0;
+ if (RealNear(t1diff,0))
+return( 0 );
+
+ t1 = t1min; t2 = t2min;
+ o1o = t1==0 ? (&s1->from->me.x)[other] :
+ t1==1.0 ? (&s1->to->me.x)[other] :
+ ((s1->splines[other].a*t1+s1->splines[other].b)*t1+
+ s1->splines[other].c)*t1+s1->splines[other].d;
+ o2o = t2==0 ? (&s2->from->me.x)[other] :
+ t2==1.0 ? (&s2->to->me.x)[other] :
+ ((s2->splines[other].a*t2+s2->splines[other].b)*t2+
+ s2->splines[other].c)*t2+s2->splines[other].d;
+ if ( o1o==o2o )
+ cnt = ICAddInter(cnt,foundpos,foundt1,foundt2,s1,s2,t1,t2,maxcnt);
+ for (;;) {
+ if ( cnt>=maxcnt )
+ break;
+ t1 += t1diff;
+ if (( t1max>t1min && t1>t1max ) || (t1max<t1min && t1<t1max) || cnt>3 )
+ break;
+ m = t1==0 ? (&s1->from->me.x)[major] :
+ t1==1.0 ? (&s1->to->me.x)[major] :
+ ((s1->splines[major].a*t1+s1->splines[major].b)*t1+
+ s1->splines[major].c)*t1+s1->splines[major].d;
+ oldt2 = t2;
+ t2 = ISolveWithin(s2,major,m,lowt2,hight2);
+ if ( t2==-1 )
+ continue;
+
+ o1n = t1==0 ? (&s1->from->me.x)[other] :
+ t1==1.0 ? (&s1->to->me.x)[other] :
+ ((s1->splines[other].a*t1+s1->splines[other].b)*t1+
+ s1->splines[other].c)*t1+s1->splines[other].d;
+ o2n = t2==0 ? (&s2->from->me.x)[other] :
+ t2==1.0 ? (&s2->to->me.x)[other] :
+ ((s2->splines[other].a*t2+s2->splines[other].b)*t2+
+ s2->splines[other].c)*t2+s2->splines[other].d;
+ if ( o1n==o2n )
+ cnt = ICAddInter(cnt,foundpos,foundt1,foundt2,s1,s2,t1,t2,maxcnt);
+ if ( (o1o>o2o && o1n<o2n) || (o1o<o2o && o1n>o2n))
+ cnt = ICBinarySearch(cnt,foundpos,foundt1,foundt2,other,
+ s1,s2,t1-t1diff,t1,oldt2,t2,maxcnt);
+ o1o = o1n; o2o = o2n;
+ }
+return( cnt );
+}
+
+static int Closer(const Spline *s1,const Spline *s2,extended t1,extended t2,extended t1p,extended t2p) {
+ bigreal x1 = ((s1->splines[0].a*t1+s1->splines[0].b)*t1+s1->splines[0].c)*t1+s1->splines[0].d;
+ bigreal y1 = ((s1->splines[1].a*t1+s1->splines[1].b)*t1+s1->splines[1].c)*t1+s1->splines[1].d;
+ bigreal x2 = ((s2->splines[0].a*t2+s2->splines[0].b)*t2+s2->splines[0].c)*t2+s2->splines[0].d;
+ bigreal y2 = ((s2->splines[1].a*t2+s2->splines[1].b)*t2+s2->splines[1].c)*t2+s2->splines[1].d;
+ bigreal diff = (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);
+ bigreal x1p = ((s1->splines[0].a*t1p+s1->splines[0].b)*t1p+s1->splines[0].c)*t1p+s1->splines[0].d;
+ bigreal y1p = ((s1->splines[1].a*t1p+s1->splines[1].b)*t1p+s1->splines[1].c)*t1p+s1->splines[1].d;
+ bigreal x2p = ((s2->splines[0].a*t2p+s2->splines[0].b)*t2p+s2->splines[0].c)*t2p+s2->splines[0].d;
+ bigreal y2p = ((s2->splines[1].a*t2p+s2->splines[1].b)*t2p+s2->splines[1].c)*t2p+s2->splines[1].d;
+ bigreal diffp = (x1p-x2p)*(x1p-x2p) + (y1p-y2p)*(y1p-y2p);
+
+ if ( diff<diffp )
+return( false );
+
+return( true );
+}
+
+/* returns 0=>no intersection, 1=>at least one, location in pts, t1s, t2s */
+/* -1 => We couldn't figure it out in a closed form, have to do a numerical */
+/* approximation */
+int SplinesIntersect(const Spline *s1, const Spline *s2, BasePoint pts[9],
+ extended t1s[10], extended t2s[10]) { /* One extra for a trailing -1 */
+ BasePoint min1, max1, min2, max2;
+ int soln = 0;
+ extended x,y,t, ac0, ac1;
+ int i,j,found;
+ Spline1D spline;
+ extended tempts[4]; /* 3 solns for cubics, 4 for quartics */
+ extended extrema1[6], extrema2[6];
+ int ecnt1, ecnt2;
+
+ t1s[0] = t1s[1] = t1s[2] = t1s[3] = -1;
+ t2s[0] = t2s[1] = t2s[2] = t2s[3] = -1;
+
+ if ( s1==s2 && !s1->knownlinear && !s1->isquadratic )
+ /* Special case see if it doubles back on itself anywhere */;
+ else if ( s1==s2 )
+return( 0 ); /* Linear and quadratics can't double back, can't self-intersect */
+ else if ( s1->splines[0].a == s2->splines[0].a &&
+ s1->splines[0].b == s2->splines[0].b &&
+ s1->splines[0].c == s2->splines[0].c &&
+ s1->splines[0].d == s2->splines[0].d &&
+ s1->splines[1].a == s2->splines[1].a &&
+ s1->splines[1].b == s2->splines[1].b &&
+ s1->splines[1].c == s2->splines[1].c &&
+ s1->splines[1].d == s2->splines[1].d )
+return( -1 ); /* Same spline. Intersects everywhere */
+
+ /* Ignore splines which are just a point */
+ if ( s1->knownlinear && s1->splines[0].c==0 && s1->splines[1].c==0 )
+return( 0 );
+ if ( s2->knownlinear && s2->splines[0].c==0 && s2->splines[1].c==0 )
+return( 0 );
+
+ if ( s1->knownlinear )
+ /* Do Nothing */;
+ else if ( s2->knownlinear || (!s1->isquadratic && s2->isquadratic)) {
+ const Spline *stemp = s1;
+ extended *ts = t1s;
+ t1s = t2s; t2s = ts;
+ s1 = s2; s2 = stemp;
+ }
+
+ min1 = s1->from->me; max1 = min1;
+ min2 = s2->from->me; max2 = min2;
+ if ( s1->from->nextcp.x>max1.x ) max1.x = s1->from->nextcp.x;
+ else if ( s1->from->nextcp.x<min1.x ) min1.x = s1->from->nextcp.x;
+ if ( s1->from->nextcp.y>max1.y ) max1.y = s1->from->nextcp.y;
+ else if ( s1->from->nextcp.y<min1.y ) min1.y = s1->from->nextcp.y;
+ if ( s1->to->prevcp.x>max1.x ) max1.x = s1->to->prevcp.x;
+ else if ( s1->to->prevcp.x<min1.x ) min1.x = s1->to->prevcp.x;
+ if ( s1->to->prevcp.y>max1.y ) max1.y = s1->to->prevcp.y;
+ else if ( s1->to->prevcp.y<min1.y ) min1.y = s1->to->prevcp.y;
+ if ( s1->to->me.x>max1.x ) max1.x = s1->to->me.x;
+ else if ( s1->to->me.x<min1.x ) min1.x = s1->to->me.x;
+ if ( s1->to->me.y>max1.y ) max1.y = s1->to->me.y;
+ else if ( s1->to->me.y<min1.y ) min1.y = s1->to->me.y;
+
+ if ( s2->from->nextcp.x>max2.x ) max2.x = s2->from->nextcp.x;
+ else if ( s2->from->nextcp.x<min2.x ) min2.x = s2->from->nextcp.x;
+ if ( s2->from->nextcp.y>max2.y ) max2.y = s2->from->nextcp.y;
+ else if ( s2->from->nextcp.y<min2.y ) min2.y = s2->from->nextcp.y;
+ if ( s2->to->prevcp.x>max2.x ) max2.x = s2->to->prevcp.x;
+ else if ( s2->to->prevcp.x<min2.x ) min2.x = s2->to->prevcp.x;
+ if ( s2->to->prevcp.y>max2.y ) max2.y = s2->to->prevcp.y;
+ else if ( s2->to->prevcp.y<min2.y ) min2.y = s2->to->prevcp.y;
+ if ( s2->to->me.x>max2.x ) max2.x = s2->to->me.x;
+ else if ( s2->to->me.x<min2.x ) min2.x = s2->to->me.x;
+ if ( s2->to->me.y>max2.y ) max2.y = s2->to->me.y;
+ else if ( s2->to->me.y<min2.y ) min2.y = s2->to->me.y;
+ if ( min1.x>max2.x || min2.x>max1.x || min1.y>max2.y || min2.y>max1.y )
+return( false ); /* no intersection of bounding boxes */
+
+ if ( s1->knownlinear ) {
+ spline.d = s1->splines[1].c*((bigreal) s2->splines[0].d-(bigreal) s1->splines[0].d)-
+ s1->splines[0].c*((bigreal) s2->splines[1].d-(bigreal) s1->splines[1].d);
+ spline.c = s1->splines[1].c*(bigreal) s2->splines[0].c - s1->splines[0].c*(bigreal) s2->splines[1].c;
+ spline.b = s1->splines[1].c*(bigreal) s2->splines[0].b - s1->splines[0].c*(bigreal) s2->splines[1].b;
+ spline.a = s1->splines[1].c*(bigreal) s2->splines[0].a - s1->splines[0].c*(bigreal) s2->splines[1].a;
+ IterateSolve(&spline,tempts);
+ if ( tempts[0]==-1 )
+return( false );
+ for ( i = 0; i<3 && tempts[i]!=-1; ++i ) {
+ x = ((s2->splines[0].a*tempts[i]+s2->splines[0].b)*tempts[i]+
+ s2->splines[0].c)*tempts[i]+s2->splines[0].d;
+ y = ((s2->splines[1].a*tempts[i]+s2->splines[1].b)*tempts[i]+
+ s2->splines[1].c)*tempts[i]+s2->splines[1].d;
+ if ( s1->splines[0].c==0 )
+ x = s1->splines[0].d;
+ if ( s1->splines[1].c==0 )
+ y = s1->splines[1].d;
+ if ( (ac0 = s1->splines[0].c)<0 ) ac0 = -ac0;
+ if ( (ac1 = s1->splines[1].c)<0 ) ac1 = -ac1;
+ if ( ac0>ac1 )
+ t = (x-s1->splines[0].d)/s1->splines[0].c;
+ else
+ t = (y-s1->splines[1].d)/s1->splines[1].c;
+ if ( tempts[i]>.99996 && Closer(s1,s2,t,tempts[i],t,1)) {
+ tempts[i] = 1;
+ x = s2->to->me.x; y = s2->to->me.y;
+ } else if ( tempts[i]<.00001 && Closer(s1,s2,t,tempts[i],t,0)) {
+ tempts[i] = 0;
+ x = s2->from->me.x; y = s2->from->me.y;
+ }
+ /* I know we just did this, but we might have changed x,y so redo */
+ if ( ac0>ac1 )
+ t = (x-s1->splines[0].d)/s1->splines[0].c;
+ else
+ t = (y-s1->splines[1].d)/s1->splines[1].c;
+ if ( t>.99996 && t<1.001 && Closer(s1,s2,t,tempts[i],1,tempts[i])) {
+ t = 1;
+ x = s1->to->me.x; y = s1->to->me.y;
+ } else if ( t<.00001 && t>-.001 && Closer(s1,s2,t,tempts[i],0,tempts[i])) {
+ t = 0;
+ x = s1->from->me.x; y = s1->from->me.y;
+ }
+ if ( t<-.001 || t>1.001 || x<min1.x-.01 || y<min1.y-.01 || x>max1.x+.01 || y>max1.y+.01 )
+ continue;
+ if ( t<=0 ) {t=0; x=s1->from->me.x; y = s1->from->me.y; }
+ else if ( t>=1 ) { t=1; x=s1->to->me.x; y = s1->to->me.y; }
+ if ( s1->from->me.x==s1->to->me.x ) /* Avoid rounding errors */
+ x = s1->from->me.x; /* on hor/vert lines */
+ else if ( s1->from->me.y==s1->to->me.y )
+ y = s1->from->me.y;
+ if ( s2->knownlinear ) {
+ if ( s2->from->me.x==s2->to->me.x )
+ x = s2->from->me.x;
+ else if ( s2->from->me.y==s2->to->me.y )
+ y = s2->from->me.y;
+ }
+ soln = AddPoint(x,y,t,tempts[i],pts,t1s,t2s,soln);
+ }
+return( soln!=0 );
+ }
+ /* if one of the splines is quadratic then we can get an expression */
+ /* relating c*t+d to poly(s^3), and substituting this back we get */
+ /* a poly of degree 6 in s which could be solved iteratively */
+ /* however mixed quadratics and cubics are unlikely */
+
+ /* but if both splines are degree 3, the t is expressed as the sqrt of */
+ /* a third degree poly, which must be substituted into a cubic, and */
+ /* then squared to get rid of the sqrts leaving us with an ?18? degree */
+ /* poly. Ick. */
+
+ /* So let's do it the hard way... we break the splines into little bits */
+ /* where they are monotonic in both dimensions, then check these for */
+ /* possible intersections */
+ extrema1[0] = extrema2[0] = 0;
+ ecnt1 = Spline2DFindExtrema(s1,extrema1+1);
+ ecnt2 = Spline2DFindExtrema(s2,extrema2+1);
+ extrema1[++ecnt1] = 1.0;
+ extrema2[++ecnt2] = 1.0;
+ found=0;
+ for ( i=0; i<ecnt1; ++i ) {
+ min1.x = ((s1->splines[0].a*extrema1[i]+s1->splines[0].b)*extrema1[i]+
+ s1->splines[0].c)*extrema1[i]+s1->splines[0].d;
+ min1.y = ((s1->splines[1].a*extrema1[i]+s1->splines[1].b)*extrema1[i]+
+ s1->splines[1].c)*extrema1[i]+s1->splines[1].d;
+ max1.x = ((s1->splines[0].a*extrema1[i+1]+s1->splines[0].b)*extrema1[i+1]+
+ s1->splines[0].c)*extrema1[i+1]+s1->splines[0].d;
+ max1.y = ((s1->splines[1].a*extrema1[i+1]+s1->splines[1].b)*extrema1[i+1]+
+ s1->splines[1].c)*extrema1[i+1]+s1->splines[1].d;
+ if ( max1.x<min1.x ) { extended temp = max1.x; max1.x = min1.x; min1.x = temp; }
+ if ( max1.y<min1.y ) { extended temp = max1.y; max1.y = min1.y; min1.y = temp; }
+ for ( j=(s1==s2)?i+1:0; j<ecnt2; ++j ) {
+ min2.x = ((s2->splines[0].a*extrema2[j]+s2->splines[0].b)*extrema2[j]+
+ s2->splines[0].c)*extrema2[j]+s2->splines[0].d;
+ min2.y = ((s2->splines[1].a*extrema2[j]+s2->splines[1].b)*extrema2[j]+
+ s2->splines[1].c)*extrema2[j]+s2->splines[1].d;
+ max2.x = ((s2->splines[0].a*extrema2[j+1]+s2->splines[0].b)*extrema2[j+1]+
+ s2->splines[0].c)*extrema2[j+1]+s2->splines[0].d;
+ max2.y = ((s2->splines[1].a*extrema2[j+1]+s2->splines[1].b)*extrema2[j+1]+
+ s2->splines[1].c)*extrema2[j+1]+s2->splines[1].d;
+ if ( max2.x<min2.x ) { extended temp = max2.x; max2.x = min2.x; min2.x = temp; }
+ if ( max2.y<min2.y ) { extended temp = max2.y; max2.y = min2.y; min2.y = temp; }
+ if ( min1.x>max2.x || min2.x>max1.x || min1.y>max2.y || min2.y>max1.y )
+ /* No possible intersection */;
+ else if ( s1!=s2 )
+ found += CubicsIntersect(s1,extrema1[i],extrema1[i+1],&min1,&max1,
+ s2,extrema2[j],extrema2[j+1],&min2,&max2,
+ &pts[found],&t1s[found],&t2s[found],9-found);
+ else {
+ int k,l;
+ int cnt = CubicsIntersect(s1,extrema1[i],extrema1[i+1],&min1,&max1,
+ s2,extrema2[j],extrema2[j+1],&min2,&max2,
+ &pts[found],&t1s[found],&t2s[found],9-found);
+ for ( k=0; k<cnt; ++k ) {
+ if ( RealNear(t1s[found+k],t2s[found+k]) ) {
+ for ( l=k+1; l<cnt; ++l ) {
+ pts[found+l-1] = pts[found+l];
+ t1s[found+l-1] = t1s[found+l];
+ t2s[found+l-1] = t2s[found+l];
+ }
+ --cnt; --k;
+ }
+ }
+ found += cnt;
+ }
+ if ( found>=8 ) {
+ /* If the splines are colinear then we might get an unbounded */
+ /* number of intersections */
+ break;
+ }
+ }
+ }
+ t1s[found] = t2s[found] = -1;
+return( found!=0 );
+}
+
+void StemInfoFree(StemInfo *h) {
+ HintInstance *hi, *n;
+
+ for ( hi=h->where; hi!=NULL; hi=n ) {
+ n = hi->next;
+ chunkfree(hi,sizeof(HintInstance));
+ }
+ chunkfree(h,sizeof(StemInfo));
+}
+
+void StemInfosFree(StemInfo *h) {
+ StemInfo *hnext;
+ HintInstance *hi, *n;
+
+ for ( ; h!=NULL; h = hnext ) {
+ for ( hi=h->where; hi!=NULL; hi=n ) {
+ n = hi->next;
+ chunkfree(hi,sizeof(HintInstance));
+ }
+ hnext = h->next;
+ chunkfree(h,sizeof(StemInfo));
+ }
+}
+
+void DStemInfoFree(DStemInfo *h) {
+ HintInstance *hi, *n;
+
+ for ( hi=h->where; hi!=NULL; hi=n ) {
+ n = hi->next;
+ chunkfree(hi,sizeof(HintInstance));
+ }
+ chunkfree(h,sizeof(DStemInfo));
+}
+
+void DStemInfosFree(DStemInfo *h) {
+ DStemInfo *hnext;
+ HintInstance *hi, *n;
+
+ for ( ; h!=NULL; h = hnext ) {
+ for ( hi=h->where; hi!=NULL; hi=n ) {
+ n = hi->next;
+ chunkfree(hi,sizeof(HintInstance));
+ }
+ hnext = h->next;
+ chunkfree(h,sizeof(DStemInfo));
+ }
+}
+
+void KernPairsFree(KernPair *kp) {
+ KernPair *knext;
+ for ( ; kp!=NULL; kp = knext ) {
+ knext = kp->next;
+ if ( kp->adjust!=NULL ) {
+ free(kp->adjust->corrections);
+ chunkfree(kp->adjust,sizeof(DeviceTable));
+ }
+ chunkfree(kp,sizeof(KernPair));
+ }
+}
+
+void AnchorPointsFree(AnchorPoint *ap) {
+ AnchorPoint *anext;
+ for ( ; ap!=NULL; ap = anext ) {
+ anext = ap->next;
+ free(ap->xadjust.corrections);
+ free(ap->yadjust.corrections);
+ chunkfree(ap,sizeof(AnchorPoint));
+ }
+}
+
+void ValDevFree(ValDevTab *adjust) {
+ if ( adjust==NULL )
+return;
+ free( adjust->xadjust.corrections );
+ free( adjust->yadjust.corrections );
+ free( adjust->xadv.corrections );
+ free( adjust->yadv.corrections );
+ chunkfree(adjust,sizeof(ValDevTab));
+}
+
+void DeviceTableFree(DeviceTable *dt) {
+
+ if ( dt==NULL )
+return;
+
+ free(dt->corrections);
+ chunkfree(dt,sizeof(DeviceTable));
+}
+
+void PSTFree(PST *pst) {
+ PST *pnext;
+ for ( ; pst!=NULL; pst = pnext ) {
+ pnext = pst->next;
+ if ( pst->type==pst_lcaret )
+ free(pst->u.lcaret.carets);
+ else if ( pst->type==pst_pair ) {
+ free(pst->u.pair.paired);
+ ValDevFree(pst->u.pair.vr[0].adjust);
+ ValDevFree(pst->u.pair.vr[1].adjust);
+ chunkfree(pst->u.pair.vr,sizeof(struct vr [2]));
+ } else if ( pst->type!=pst_position ) {
+ free(pst->u.subs.variant);
+ } else if ( pst->type==pst_position ) {
+ ValDevFree(pst->u.pos.adjust);
+ }
+ chunkfree(pst,sizeof(PST));
+ }
+}
+
+void FPSTRuleContentsFree(struct fpst_rule *r, enum fpossub_format format) {
+ int j;
+
+ switch ( format ) {
+ case pst_glyphs:
+ free(r->u.glyph.names);
+ free(r->u.glyph.back);
+ free(r->u.glyph.fore);
+ break;
+ case pst_class:
+ free(r->u.class.nclasses);
+ free(r->u.class.bclasses);
+ free(r->u.class.fclasses);
+ break;
+ case pst_reversecoverage:
+ free(r->u.rcoverage.replacements);
+ case pst_coverage:
+ for ( j=0 ; j<r->u.coverage.ncnt ; ++j )
+ free(r->u.coverage.ncovers[j]);
+ free(r->u.coverage.ncovers);
+ for ( j=0 ; j<r->u.coverage.bcnt ; ++j )
+ free(r->u.coverage.bcovers[j]);
+ free(r->u.coverage.bcovers);
+ for ( j=0 ; j<r->u.coverage.fcnt ; ++j )
+ free(r->u.coverage.fcovers[j]);
+ free(r->u.coverage.fcovers);
+ break;
+ default:;
+ }
+ free(r->lookups);
+}
+
+void FPSTClassesFree(FPST *fpst) {
+ int i;
+
+ for ( i=0; i<fpst->nccnt; ++i ) {
+ free(fpst->nclass[i]);
+ free(fpst->nclassnames[i]);
+ }
+ for ( i=0; i<fpst->bccnt; ++i ) {
+ free(fpst->bclass[i]);
+ free(fpst->bclassnames[i]);
+ }
+ for ( i=0; i<fpst->fccnt; ++i ) {
+ free(fpst->fclass[i]);
+ free(fpst->fclassnames[i]);
+ }
+ free(fpst->nclass); free(fpst->bclass); free(fpst->fclass);
+ free(fpst->nclassnames); free(fpst->bclassnames); free(fpst->fclassnames);
+
+ fpst->nccnt = fpst->bccnt = fpst->fccnt = 0;
+ fpst->nclass = fpst->bclass = fpst->fclass = NULL;
+ fpst->nclassnames = fpst->bclassnames = fpst->fclassnames = NULL;
+}
+
+void FPSTFree(FPST *fpst) {
+ FPST *next;
+ int i;
+
+ while ( fpst!=NULL ) {
+ next = fpst->next;
+ FPSTClassesFree(fpst);
+ for ( i=0; i<fpst->rule_cnt; ++i ) {
+ FPSTRuleContentsFree( &fpst->rules[i],fpst->format );
+ }
+ free(fpst->rules);
+ chunkfree(fpst,sizeof(FPST));
+ fpst = next;
+ }
+}
+
+void MinimumDistancesFree(MinimumDistance *md) {
+ MinimumDistance *next;
+
+ while ( md!=NULL ) {
+ next = md->next;
+ chunkfree(md,sizeof(MinimumDistance));
+ md = next;
+ }
+}
+
+void TTFLangNamesFree(struct ttflangname *l) {
+ struct ttflangname *next;
+ int i;
+
+ while ( l!=NULL ) {
+ next = l->next;
+ for ( i=0; i<ttf_namemax; ++i )
+ free(l->names[i]);
+ chunkfree(l,sizeof(*l));
+ l = next;
+ }
+}
+
+void AltUniFree(struct altuni *altuni) {
+ struct altuni *next;
+
+ while ( altuni ) {
+ next = altuni->next;
+ chunkfree(altuni,sizeof(struct altuni));
+ altuni = next;
+ }
+}
+
+void LayerDefault(Layer *layer) {
+ memset(layer,0,sizeof(Layer));
+ layer->fill_brush.opacity = layer->stroke_pen.brush.opacity = 1.0;
+ layer->fill_brush.col = layer->stroke_pen.brush.col = COLOR_INHERITED;
+ layer->stroke_pen.width = 10;
+ layer->stroke_pen.linecap = lc_round;
+ layer->stroke_pen.linejoin = lj_round;
+ layer->dofill = true;
+ layer->fillfirst = true;
+ layer->stroke_pen.trans[0] = layer->stroke_pen.trans[3] = 1.0;
+ layer->stroke_pen.trans[1] = layer->stroke_pen.trans[2] = 0.0;
+ /* Dashes default to an unbroken line */
+}
+
+SplineChar *SplineCharCreate(int layer_cnt) {
+ SplineChar *sc = chunkalloc(sizeof(SplineChar));
+ int i;
+
+ sc->color = COLOR_DEFAULT;
+ sc->orig_pos = 0xffff;
+ sc->unicodeenc = -1;
+ sc->layer_cnt = layer_cnt;
+ sc->layers = calloc(layer_cnt,sizeof(Layer));
+ for ( i=0; i<layer_cnt; ++i )
+ LayerDefault(&sc->layers[i]);
+ sc->tex_height = sc->tex_depth = sc->italic_correction = sc->top_accent_horiz =
+ TEX_UNDEF;
+return( sc );
+}
+
+SplineChar *SFSplineCharCreate(SplineFont *sf) {
+ SplineChar *sc = SplineCharCreate(sf==NULL?2:sf->layer_cnt);
+ int i;
+
+ if ( sf==NULL ) {
+ sc->layers[ly_back].background = true;
+ sc->layers[ly_fore].background = false;
+ } else {
+ for ( i=0; i<sf->layer_cnt; ++i ) {
+ sc->layers[i].background = sf->layers[i].background;
+ sc->layers[i].order2 = sf->layers[i].order2;
+ }
+ sc->parent = sf;
+ }
+return( sc );
+}
+
+void GlyphVariantsFree(struct glyphvariants *gv) {
+ int i;
+
+ if ( gv==NULL )
+return;
+ free(gv->variants);
+ DeviceTableFree(gv->italic_adjusts);
+ for ( i=0; i<gv->part_cnt; ++i )
+ free( gv->parts[i].component );
+ free(gv->parts);
+ chunkfree(gv,sizeof(*gv));
+}
+
+void MathKernVContentsFree(struct mathkernvertex *mk) {
+ int i;
+ for ( i=0; i<mk->cnt; ++i ) {
+ DeviceTableFree(mk->mkd[i].height_adjusts);
+ DeviceTableFree(mk->mkd[i].kern_adjusts);
+ }
+ free(mk->mkd);
+}
+
+void MathKernFree(struct mathkern *mk) {
+ int i;
+
+ if ( mk==NULL )
+return;
+ for ( i=0; i<4; ++i )
+ MathKernVContentsFree( &(&mk->top_right)[i] );
+ chunkfree(mk,sizeof(*mk));
+}
+
+void SplineCharListsFree(struct splinecharlist *dlist) {
+ struct splinecharlist *dnext;
+ for ( ; dlist!=NULL; dlist = dnext ) {
+ dnext = dlist->next;
+ chunkfree(dlist,sizeof(struct splinecharlist));
+ }
+}
+
+struct pattern *PatternCopy(struct pattern *old, real transform[6]) {
+ struct pattern *pat;
+
+ if ( old==NULL )
+return( NULL );
+
+ pat = chunkalloc(sizeof(struct pattern));
+
+ *pat = *old;
+ pat->pattern = copy( old->pattern );
+ if ( transform!=NULL )
+ MatMultiply(pat->transform,transform,pat->transform);
+return( pat );
+}
+
+void PatternFree(struct pattern *pat) {
+ if ( pat==NULL )
+return;
+ free(pat->pattern);
+ chunkfree(pat,sizeof(struct pattern));
+}
+
+struct gradient *GradientCopy(struct gradient *old,real transform[6]) {
+ struct gradient *grad;
+
+ if ( old==NULL )
+return( NULL );
+
+ grad = chunkalloc(sizeof(struct gradient));
+
+ *grad = *old;
+ grad->grad_stops = malloc(old->stop_cnt*sizeof(struct grad_stops));
+ memcpy(grad->grad_stops,old->grad_stops,old->stop_cnt*sizeof(struct grad_stops));
+ if ( transform!=NULL ) {
+ BpTransform(&grad->start,&grad->start,transform);
+ BpTransform(&grad->stop,&grad->stop,transform);
+ }
+return( grad );
+}
+
+void GradientFree(struct gradient *grad) {
+ if ( grad==NULL )
+return;
+ free(grad->grad_stops);
+ chunkfree(grad,sizeof(struct gradient));
+}
+
+void BrushCopy(struct brush *into, struct brush *from, real transform[6]) {
+ *into = *from;
+ into->gradient = GradientCopy(from->gradient,transform);
+ into->pattern = PatternCopy(from->pattern,transform);
+}
+
+void PenCopy(struct pen *into, struct pen *from,real transform[6]) {
+ *into = *from;
+ into->brush.gradient = GradientCopy(from->brush.gradient,transform);
+ into->brush.pattern = PatternCopy(from->brush.pattern,transform);
+}
+
+void LayerFreeContents(SplineChar *sc,int layer) {
+ SplinePointListsFree(sc->layers[layer].splines);
+ GradientFree(sc->layers[layer].fill_brush.gradient);
+ PatternFree(sc->layers[layer].fill_brush.pattern);
+ GradientFree(sc->layers[layer].stroke_pen.brush.gradient);
+ PatternFree(sc->layers[layer].stroke_pen.brush.pattern);
+ RefCharsFree(sc->layers[layer].refs);
+ /* image garbage collection????!!!! */
+}
+
+void SplineCharFreeContents(SplineChar *sc) {
+ int i;
+
+ if ( sc==NULL )
+return;
+ if (sc->name != NULL) free(sc->name);
+ if (sc->comment != NULL) free(sc->comment);
+ for ( i=0; i<sc->layer_cnt; ++i ) {
+#if defined(_NO_PYTHON)
+ if (sc->layers[i].python_persistent != NULL) free( sc->layers[i].python_persistent ); /* It's a string of pickled data which we leave as a string */
+#else
+ PyFF_FreeSCLayer(sc, i);
+#endif
+ LayerFreeContents(sc,i);
+ }
+ StemInfosFree(sc->hstem);
+ StemInfosFree(sc->vstem);
+ DStemInfosFree(sc->dstem);
+ MinimumDistancesFree(sc->md);
+ KernPairsFree(sc->kerns);
+ KernPairsFree(sc->vkerns);
+ AnchorPointsFree(sc->anchor);
+ SplineCharListsFree(sc->dependents);
+ PSTFree(sc->possub);
+ if (sc->ttf_instrs != NULL) free(sc->ttf_instrs);
+ if (sc->countermasks != NULL) free(sc->countermasks);
+ if (sc->layers != NULL) free(sc->layers);
+ AltUniFree(sc->altuni);
+ GlyphVariantsFree(sc->horiz_variants);
+ GlyphVariantsFree(sc->vert_variants);
+ DeviceTableFree(sc->italic_adjusts);
+ DeviceTableFree(sc->top_accent_adjusts);
+ MathKernFree(sc->mathkern);
+ if (sc->glif_name != NULL) { free(sc->glif_name); sc->glif_name = NULL; }
+}
+
+void SplineCharFree(SplineChar *sc) {
+
+ if ( sc==NULL )
+return;
+ SplineCharFreeContents(sc);
+ chunkfree(sc,sizeof(SplineChar));
+}
+
+void AnchorClassesFree(AnchorClass *an) {
+ AnchorClass *anext;
+ for ( ; an!=NULL; an = anext ) {
+ anext = an->next;
+ free(an->name);
+ chunkfree(an,sizeof(AnchorClass));
+ }
+}
+
+void TtfTablesFree(struct ttf_table *tab) {
+ struct ttf_table *next;
+
+ for ( ; tab!=NULL; tab = next ) {
+ next = tab->next;
+ free(tab->data);
+ chunkfree(tab,sizeof(struct ttf_table));
+ }
+}
+
+void ScriptLangListFree(struct scriptlanglist *sl) {
+ struct scriptlanglist *next;
+
+ while ( sl!=NULL ) {
+ next = sl->next;
+ free(sl->morelangs);
+ chunkfree(sl,sizeof(*sl));
+ sl = next;
+ }
+}
+
+void FeatureScriptLangListFree(FeatureScriptLangList *fl) {
+ FeatureScriptLangList *next;
+
+ while ( fl!=NULL ) {
+ next = fl->next;
+ ScriptLangListFree(fl->scripts);
+ chunkfree(fl,sizeof(*fl));
+ fl = next;
+ }
+}
+
+void OTLookupFree(OTLookup *lookup) {
+ struct lookup_subtable *st, *stnext;
+
+ free(lookup->lookup_name);
+ FeatureScriptLangListFree(lookup->features);
+ for ( st=lookup->subtables; st!=NULL; st=stnext ) {
+ stnext = st->next;
+ free(st->subtable_name);
+ free(st->suffix);
+ chunkfree(st,sizeof(struct lookup_subtable));
+ }
+ chunkfree( lookup,sizeof(OTLookup) );
+}
+
+void OTLookupListFree(OTLookup *lookup ) {
+ OTLookup *next;
+
+ for ( ; lookup!=NULL; lookup = next ) {
+ next = lookup->next;
+ OTLookupFree(lookup);
+ }
+}
+
+void KernClassFreeContents(KernClass *kc) {
+ int i;
+ for ( i=1; i<kc->first_cnt; ++i )
+ free(kc->firsts[i]);
+ for ( i=1; i<kc->second_cnt; ++i )
+ free(kc->seconds[i]);
+ free(kc->firsts);
+ free(kc->seconds);
+ free(kc->offsets);
+ for ( i=kc->first_cnt*kc->second_cnt-1; i>=0 ; --i )
+ free(kc->adjusts[i].corrections);
+ free(kc->adjusts);
+ if (kc->firsts_flags) free(kc->firsts_flags);
+ if (kc->seconds_flags) free(kc->seconds_flags);
+ if (kc->offsets_flags) free(kc->offsets_flags);
+ if (kc->firsts_names) {
+ for ( i=kc->first_cnt-1; i>=0 ; --i )
+ free(kc->firsts_names[i]);
+ free(kc->firsts_names);
+ }
+ if (kc->seconds_names) {
+ for ( i=kc->second_cnt-1; i>=0 ; --i )
+ free(kc->seconds_names[i]);
+ free(kc->seconds_names);
+ }
+}
+
+void KernClassClearSpecialContents(KernClass *kc) {
+ // This frees and zeros special data not handled by the FontForge GUI,
+ // most of which comes from U. F. O..
+ int i;
+ if (kc->firsts_flags) { free(kc->firsts_flags); kc->firsts_flags = NULL; }
+ if (kc->seconds_flags) { free(kc->seconds_flags); kc->seconds_flags = NULL; }
+ if (kc->offsets_flags) { free(kc->offsets_flags); kc->offsets_flags = NULL; }
+ if (kc->firsts_names) {
+ for ( i=kc->first_cnt-1; i>=0 ; --i )
+ free(kc->firsts_names[i]);
+ free(kc->firsts_names);
+ kc->firsts_names = NULL;
+ }
+ if (kc->seconds_names) {
+ for ( i=kc->second_cnt-1; i>=0 ; --i )
+ free(kc->seconds_names[i]);
+ free(kc->seconds_names);
+ kc->seconds_names = NULL;
+ }
+}
+
+void KernClassListFree(KernClass *kc) {
+ KernClass *n;
+
+ while ( kc ) {
+ KernClassFreeContents(kc);
+ n = kc->next;
+ chunkfree(kc,sizeof(KernClass));
+ kc = n;
+ }
+}
+
+void KernClassListClearSpecialContents(KernClass *kc) {
+ KernClass *n;
+
+ while ( kc ) {
+ KernClassClearSpecialContents(kc);
+ n = kc->next;
+ kc = n;
+ }
+}
+
+void MacNameListFree(struct macname *mn) {
+ struct macname *next;
+
+ while ( mn!=NULL ) {
+ next = mn->next;
+ free(mn->name);
+ chunkfree(mn,sizeof(struct macname));
+ mn = next;
+ }
+}
+
+void MacSettingListFree(struct macsetting *ms) {
+ struct macsetting *next;
+
+ while ( ms!=NULL ) {
+ next = ms->next;
+ MacNameListFree(ms->setname);
+ chunkfree(ms,sizeof(struct macsetting));
+ ms = next;
+ }
+}
+
+void MacFeatListFree(MacFeat *mf) {
+ MacFeat *next;
+
+ while ( mf!=NULL ) {
+ next = mf->next;
+ MacNameListFree(mf->featname);
+ MacSettingListFree(mf->settings);
+ chunkfree(mf,sizeof(MacFeat));
+ mf = next;
+ }
+}
+
+void ASMFree(ASM *sm) {
+ ASM *next;
+ int i;
+
+ while ( sm!=NULL ) {
+ next = sm->next;
+ if ( sm->type==asm_insert ) {
+ for ( i=0; i<sm->class_cnt*sm->state_cnt; ++i ) {
+ free( sm->state[i].u.insert.mark_ins );
+ free( sm->state[i].u.insert.cur_ins );
+ }
+ } else if ( sm->type==asm_kern ) {
+ for ( i=0; i<sm->class_cnt*sm->state_cnt; ++i ) {
+ free( sm->state[i].u.kern.kerns );
+ }
+ }
+ for ( i=4; i<sm->class_cnt; ++i )
+ free(sm->classes[i]);
+ free(sm->state);
+ free(sm->classes);
+ chunkfree(sm,sizeof(ASM));
+ sm = next;
+ }
+}
+
+void OtfNameListFree(struct otfname *on) {
+ struct otfname *on_next;
+
+ for ( ; on!=NULL; on = on_next ) {
+ on_next = on->next;
+ free(on->name);
+ chunkfree(on,sizeof(*on));
+ }
+}
+
+void OtfFeatNameListFree(struct otffeatname *fn) {
+ struct otffeatname *fn_next;
+
+ for ( ; fn!=NULL; fn = fn_next ) {
+ fn_next = fn->next;
+ OtfNameListFree(fn->names);
+ chunkfree(fn,sizeof(*fn));
+ }
+}
+
+EncMap *EncMapNew(int enccount,int backmax,Encoding *enc) {
+/* NOTE: 'enccount' and 'backmax' can sometimes be different map sizes */
+ EncMap *map;
+
+ /* Ensure all memory available, otherwise cleanup and exit as NULL */
+ if ( (map=chunkalloc(sizeof(EncMap)))!=NULL ) {
+ if ( (map->map=malloc(enccount*sizeof(int32)))!=NULL ) {
+ if ( (map->backmap=malloc(backmax*sizeof(int32)))!=NULL ) {
+ map->enccount = map->encmax = enccount;
+ map->backmax = backmax;
+ memset(map->map,-1,enccount*sizeof(int32));
+ memset(map->backmap,-1,backmax*sizeof(int32));
+ map->enc = enc;
+ return( map );
+ }
+ free(map->map);
+ }
+ free(map);
+ }
+ return( NULL );
+}
+
+EncMap *EncMap1to1(int enccount) {
+/* Used for CID fonts where CID is same as orig_pos */
+/* NOTE: map-enc point to a global variable custom. */
+/* TODO: avoid global custom and use passed pointer */
+ EncMap *map;
+ int i;
+
+ if ( (map=EncMapNew(enccount,enccount,&custom))!=NULL ) {
+ for ( i=0; i<enccount; ++i )
+ map->map[i] = map->backmap[i] = i;
+ }
+ return( map );
+}
+
+void EncMapFree(EncMap *map) {
+ if ( map==NULL )
+return;
+
+ if ( map->enc->is_temporary )
+ EncodingFree(map->enc);
+ free(map->map);
+ free(map->backmap);
+ free(map->remap);
+ chunkfree(map,sizeof(EncMap));
+}
+
+void MarkClassFree(int cnt,char **classes,char **names) {
+ int i;
+
+ for ( i=1; i<cnt; ++i ) {
+ free( classes[i] );
+ free( names[i] );
+ }
+ free( classes );
+ free( names );
+}
+
+void MarkSetFree(int cnt,char **classes,char **names) {
+ int i;
+
+ for ( i=0; i<cnt; ++i ) {
+ free( classes[i] );
+ free( names[i] );
+ }
+ free( classes );
+ free( names );
+}
+
+struct baselangextent *BaseLangCopy(struct baselangextent *extent) {
+ struct baselangextent *head, *last, *cur;
+
+ last = head = NULL;
+ for ( ; extent!=NULL; extent = extent->next ) {
+ cur = chunkalloc(sizeof(struct baselangextent));
+ *cur = *extent;
+ cur->features = BaseLangCopy(cur->features);
+ if ( head==NULL )
+ head = cur;
+ else
+ last->next = cur;
+ last = cur;
+ }
+return( head );
+}
+
+void BaseLangFree(struct baselangextent *extent) {
+ struct baselangextent *next;
+
+ while ( extent!=NULL ) {
+ next = extent->next;
+ BaseLangFree(extent->features);
+ chunkfree(extent,sizeof(struct baselangextent));
+ extent = next;
+ }
+}
+
+void BaseScriptFree(struct basescript *bs) {
+ struct basescript *next;
+
+ while ( bs!=NULL ) {
+ next = bs->next;
+ if ( bs->baseline_pos )
+ free(bs->baseline_pos);
+ BaseLangFree(bs->langs);
+ chunkfree(bs,sizeof(struct basescript));
+ bs = next;
+ }
+}
+
+void BaseFree(struct Base *base) {
+ if ( base==NULL )
+return;
+
+ free(base->baseline_tags);
+ BaseScriptFree(base->scripts);
+ chunkfree(base,sizeof(struct Base));
+}
+
+void JstfLangFree(struct jstf_lang *jl) {
+ struct jstf_lang *next;
+ int i;
+
+ while ( jl!=NULL ) {
+ next = jl->next;
+ for ( i=0; i<jl->cnt; ++i ) {
+ struct jstf_prio *jp = &jl->prios[i];
+ free(jp->enableShrink);
+ free(jp->disableShrink);
+ free(jp->maxShrink);
+ free(jp->enableExtend);
+ free(jp->disableExtend);
+ free(jp->maxExtend);
+ }
+ free(jl->prios);
+ chunkfree(jl,sizeof(*jl));
+ jl = next;
+ }
+}
+
+void JustifyFree(Justify *just) {
+ Justify *next;
+
+ while ( just!=NULL ) {
+ next = just->next;
+ free(just->extenders);
+ JstfLangFree(just->langs);
+ chunkfree(just,sizeof(*just));
+ just = next;
+ }
+}
+
+void SplineFontFree(SplineFont *sf) {
+ int i;
+
+ if ( sf==NULL )
+return;
+ if ( sf->mm!=NULL ) {
+ MMSetFree(sf->mm);
+return;
+ }
+ if ( sf->sfd_version>0 && sf->sfd_version<2 ) {
+ // Free special data.
+ SplineFont1* oldsf = (SplineFont1*)sf;
+ // First the script language lists.
+ if (oldsf->script_lang != NULL) {
+ int scripti;
+ for (scripti = 0; oldsf->script_lang[scripti] != NULL; scripti ++) {
+ int scriptj;
+ for (scriptj = 0; oldsf->script_lang[scripti][scriptj].script != 0; scriptj ++) {
+ if (oldsf->script_lang[scripti][scriptj].langs != NULL) free(oldsf->script_lang[scripti][scriptj].langs);
+ }
+ free(oldsf->script_lang[scripti]); oldsf->script_lang[scripti] = NULL;
+ }
+ free(oldsf->script_lang); oldsf->script_lang = NULL;
+ }
+ // Then the table orderings.
+ {
+ struct table_ordering *ord = oldsf->orders;
+ while (ord != NULL) {
+ struct table_ordering *ordtofree = ord;
+ if (ord->ordered_features != NULL) free(ord->ordered_features);
+ ord = ord->next;
+ chunkfree(ordtofree, sizeof(struct table_ordering));
+ }
+ oldsf->orders = NULL;
+ }
+ }
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL )
+ SplineCharFree(sf->glyphs[i]);
+ free(sf->glyphs);
+ free(sf->fontname);
+ free(sf->fullname);
+ free(sf->familyname);
+ free(sf->weight);
+ free(sf->copyright);
+ free(sf->comments);
+ free(sf->filename);
+ free(sf->origname);
+ free(sf->autosavename);
+ free(sf->version);
+ free(sf->xuid);
+ free(sf->cidregistry);
+ free(sf->ordering);
+ if (sf->map != 0)
+ EncMapFree(sf->map);
+ if (sf->MATH)
+ free(sf->MATH);
+ if ( sf->styleMapFamilyName && sf->styleMapFamilyName[0]!='\0' ) { free(sf->styleMapFamilyName); sf->styleMapFamilyName = NULL; }
+ MacFeatListFree(sf->features);
+ /* We don't free the EncMap. That field is only a temporary pointer. Let the FontViewBase free it, that's where it really lives */
+ // TODO: But that doesn't always get freed. The statement below causes double-frees, so we need to come up with better conditions.
+ #if 0
+ if (sf->cidmaster == NULL || sf->cidmaster == sf)
+ if (sf->map != NULL) { free(sf->map); sf->map = NULL; }
+ #endif // 0
+ SplinePointListsFree(sf->grid.splines);
+ AnchorClassesFree(sf->anchor);
+ TtfTablesFree(sf->ttf_tables);
+ TtfTablesFree(sf->ttf_tab_saved);
+ PSDictFree(sf->private);
+ TTFLangNamesFree(sf->names);
+ for ( i=0; i<sf->subfontcnt; ++i )
+ SplineFontFree(sf->subfonts[i]);
+ free(sf->subfonts);
+ GlyphHashFree(sf);
+ OTLookupListFree(sf->gpos_lookups);
+ OTLookupListFree(sf->gsub_lookups);
+ KernClassListFree(sf->kerns);
+ KernClassListFree(sf->vkerns);
+ FPSTFree(sf->possub);
+ ASMFree(sf->sm);
+ OtfNameListFree(sf->fontstyle_name);
+ OtfFeatNameListFree(sf->feat_names);
+ MarkClassFree(sf->mark_class_cnt,sf->mark_classes,sf->mark_class_names);
+ MarkSetFree(sf->mark_set_cnt,sf->mark_sets,sf->mark_set_names);
+ GlyphGroupsFree(sf->groups);
+ GlyphGroupKernsFree(sf->groupkerns);
+ GlyphGroupKernsFree(sf->groupvkerns);
+ free( sf->gasp );
+#if defined(_NO_PYTHON)
+ free( sf->python_persistent ); /* It's a string of pickled data which we leave as a string */
+#else
+ PyFF_FreeSF(sf);
+#endif
+ BaseFree(sf->horiz_base);
+ BaseFree(sf->vert_base);
+ JustifyFree(sf->justify);
+ if (sf->layers != NULL) {
+ int layer;
+ for (layer = 0; layer < sf->layer_cnt; layer ++) {
+ if (sf->layers[layer].name != NULL) {
+ free(sf->layers[layer].name);
+ sf->layers[layer].name = NULL;
+ }
+ if (sf->layers[layer].ufo_path != NULL) {
+ free(sf->layers[layer].ufo_path);
+ sf->layers[layer].ufo_path = NULL;
+ }
+ }
+ free(sf->layers); sf->layers = NULL;
+ }
+ free(sf);
+}
+
+void SplineFontClearSpecial(SplineFont *sf) {
+ int i;
+
+ if ( sf==NULL )
+return;
+ if ( sf->mm!=NULL ) {
+ MMSetClearSpecial(sf->mm);
+return;
+ }
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ struct splinechar *sc = sf->glyphs[i];
+ if (sc->glif_name != NULL) { free(sc->glif_name); sc->glif_name = NULL; }
+ }
+ for ( i=0; i<sf->subfontcnt; ++i )
+ SplineFontClearSpecial(sf->subfonts[i]);
+ KernClassListClearSpecialContents(sf->kerns);
+ KernClassListClearSpecialContents(sf->vkerns);
+ if (sf->groups) { GlyphGroupsFree(sf->groups); sf->groups = NULL; }
+ if (sf->groupkerns) { GlyphGroupKernsFree(sf->groupkerns); sf->groupkerns = NULL; }
+ if (sf->groupvkerns) { GlyphGroupKernsFree(sf->groupvkerns); sf->groupvkerns = NULL; }
+ if (sf->python_persistent) {
+#if defined(_NO_PYTHON)
+ free( sf->python_persistent ); /* It's a string of pickled data which we leave as a string */
+#else
+ PyFF_FreeSF(sf);
+#endif
+ sf->python_persistent = NULL;
+ }
+ if (sf->layers != NULL) {
+ int layer;
+ for (layer = 0; layer < sf->layer_cnt; layer ++) {
+ if (sf->layers[layer].ufo_path != NULL) {
+ free(sf->layers[layer].ufo_path);
+ sf->layers[layer].ufo_path = NULL;
+ }
+ }
+ }
+}
+
+#if 0
+// These are in splinefont.h.
+#define GROUP_NAME_KERNING_UFO 1
+#define GROUP_NAME_KERNING_FEATURE 2
+#define GROUP_NAME_VERTICAL 4 // Otherwise horizontal.
+#define GROUP_NAME_RIGHT 8 // Otherwise left (or above).
+#endif // 0
+
+
+void GlyphGroupFree(struct ff_glyphclasses* group) {
+ if (group->classname != NULL) free(group->classname);
+ if (group->glyphs != NULL) free(group->glyphs);
+ free(group);
+}
+
+void GlyphGroupsFree(struct ff_glyphclasses* root) {
+ struct ff_glyphclasses* current = root;
+ struct ff_glyphclasses* next;
+ while (current != NULL) {
+ next = current->next;
+ GlyphGroupFree(current);
+ current = next;
+ }
+}
+
+void GlyphGroupKernFree(struct ff_rawoffsets* groupkern) {
+ if (groupkern->left != NULL) free(groupkern->left);
+ if (groupkern->right != NULL) free(groupkern->right);
+ free(groupkern);
+}
+
+void GlyphGroupKernsFree(struct ff_rawoffsets* root) {
+ struct ff_rawoffsets* current = root;
+ struct ff_rawoffsets* next;
+ while (current != NULL) {
+ next = current->next;
+ GlyphGroupKernFree(current);
+ current = next;
+ }
+}
+
+
+#ifdef FF_UTHASH_GLIF_NAMES
+int HashKerningClassNamesFlex(SplineFont *sf, struct glif_name_index * class_name_hash, int capitalize) {
+ struct kernclass *current_kernclass;
+ int isv;
+ int isr;
+ int i;
+ int absolute_index = 0; // This gives us a unique index for each kerning class.
+ // First we catch the existing names.
+ absolute_index = 0;
+ for (isv = 0; isv < 2; isv++)
+ for (current_kernclass = (isv ? sf->vkerns : sf->kerns); current_kernclass != NULL; current_kernclass = current_kernclass->next)
+ for (isr = 0; isr < 2; isr++) if ( (isr ? current_kernclass->seconds_names : current_kernclass->firsts_names) != NULL ) {
+ for ( i=0; i < (isr ? current_kernclass->second_cnt : current_kernclass->first_cnt); ++i )
+ if ( (isr ? current_kernclass->seconds_names[i] : current_kernclass->firsts_names[i]) != NULL ) {
+ // Add it to the hash table with its index.
+ if (capitalize) {
+ char * cap_name = upper_case(isr ? current_kernclass->seconds_names[i] : current_kernclass->firsts_names[i]);
+ glif_name_track_new(class_name_hash, absolute_index + i, cap_name);
+ free(cap_name); cap_name = NULL;
+ } else {
+ glif_name_track_new(class_name_hash, absolute_index + i, (isr ? current_kernclass->seconds_names[i] : current_kernclass->firsts_names[i]));
+ }
+ }
+ absolute_index +=i;
+ }
+ return absolute_index;
+}
+int HashKerningClassNames(SplineFont *sf, struct glif_name_index * class_name_hash) {
+ return HashKerningClassNamesFlex(sf, class_name_hash, 0);
+}
+int HashKerningClassNamesCaps(SplineFont *sf, struct glif_name_index * class_name_hash) {
+ return HashKerningClassNamesFlex(sf, class_name_hash, 1);
+}
+#endif
+
+void MMSetFreeContents(MMSet *mm) {
+ int i;
+
+ free(mm->instances);
+
+ free(mm->positions);
+ free(mm->defweights);
+
+ for ( i=0; i<mm->axis_count; ++i ) {
+ free(mm->axes[i]);
+ free(mm->axismaps[i].blends);
+ free(mm->axismaps[i].designs);
+ MacNameListFree(mm->axismaps[i].axisnames);
+ }
+ free(mm->axismaps);
+ free(mm->cdv);
+ free(mm->ndv);
+ for ( i=0; i<mm->named_instance_count; ++i ) {
+ free(mm->named_instances[i].coords);
+ MacNameListFree(mm->named_instances[i].names);
+ }
+ free(mm->named_instances);
+}
+
+void MMSetFree(MMSet *mm) {
+ int i;
+
+ for ( i=0; i<mm->instance_count; ++i ) {
+ mm->instances[i]->mm = NULL;
+ mm->instances[i]->map = NULL;
+ SplineFontFree(mm->instances[i]);
+ }
+ mm->normal->mm = NULL;
+ SplineFontFree(mm->normal); /* EncMap gets freed here */
+ MMSetFreeContents(mm);
+
+ chunkfree(mm,sizeof(*mm));
+}
+
+void MMSetClearSpecial(MMSet *mm) {
+ int i;
+
+ for ( i=0; i<mm->instance_count; ++i ) {
+ SplineFontClearSpecial(mm->instances[i]);
+ }
+ SplineFontClearSpecial(mm->normal);
+}
+
+SplinePoint *SplineBisect(Spline *spline, extended t) {
+ Spline1 xstart, xend;
+ Spline1 ystart, yend;
+ Spline *spline1, *spline2;
+ SplinePoint *mid;
+ SplinePoint *old0, *old1;
+ Spline1D *xsp = &spline->splines[0], *ysp = &spline->splines[1];
+ int order2 = spline->order2;
+
+#ifdef DEBUG
+ if ( t<=1e-3 || t>=1-1e-3 )
+ IError("Bisection to create a zero length spline");
+#endif
+ xstart.s0 = xsp->d; ystart.s0 = ysp->d;
+ xend.s1 = (extended) xsp->a+xsp->b+xsp->c+xsp->d;
+ yend.s1 = (extended) ysp->a+ysp->b+ysp->c+ysp->d;
+ xstart.s1 = xend.s0 = ((xsp->a*t+xsp->b)*t+xsp->c)*t + xsp->d;
+ ystart.s1 = yend.s0 = ((ysp->a*t+ysp->b)*t+ysp->c)*t + ysp->d;
+ FigureSpline1(&xstart,0,t,xsp);
+ FigureSpline1(&xend,t,1,xsp);
+ FigureSpline1(&ystart,0,t,ysp);
+ FigureSpline1(&yend,t,1,ysp);
+
+ mid = chunkalloc(sizeof(SplinePoint));
+ mid->me.x = xstart.s1; mid->me.y = ystart.s1;
+ if ( order2 ) {
+ mid->nextcp.x = xend.sp.d + xend.sp.c/2;
+ mid->nextcp.y = yend.sp.d + yend.sp.c/2;
+ mid->prevcp.x = xstart.sp.d + xstart.sp.c/2;
+ mid->prevcp.y = ystart.sp.d + ystart.sp.c/2;
+ } else {
+ mid->nextcp.x = xend.c0; mid->nextcp.y = yend.c0;
+ mid->prevcp.x = xstart.c1; mid->prevcp.y = ystart.c1;
+ }
+ if ( mid->me.x==mid->nextcp.x && mid->me.y==mid->nextcp.y )
+ mid->nonextcp = true;
+ if ( mid->me.x==mid->prevcp.x && mid->me.y==mid->prevcp.y )
+ mid->noprevcp = true;
+
+ old0 = spline->from; old1 = spline->to;
+ if ( order2 ) {
+ old0->nextcp = mid->prevcp;
+ old1->prevcp = mid->nextcp;
+ } else {
+ old0->nextcp.x = xstart.c0; old0->nextcp.y = ystart.c0;
+ old1->prevcp.x = xend.c1; old1->prevcp.y = yend.c1;
+ }
+ old0->nonextcp = (old0->nextcp.x==old0->me.x && old0->nextcp.y==old0->me.y);
+ old1->noprevcp = (old1->prevcp.x==old1->me.x && old1->prevcp.y==old1->me.y);
+ old0->nextcpdef = false;
+ old1->prevcpdef = false;
+ SplineFree(spline);
+
+ spline1 = chunkalloc(sizeof(Spline));
+ spline1->splines[0] = xstart.sp; spline1->splines[1] = ystart.sp;
+ spline1->from = old0;
+ spline1->to = mid;
+ spline1->order2 = order2;
+ old0->next = spline1;
+ mid->prev = spline1;
+ if ( SplineIsLinear(spline1)) {
+ spline1->islinear = spline1->from->nonextcp = spline1->to->noprevcp = true;
+ spline1->from->nextcp = spline1->from->me;
+ spline1->to->prevcp = spline1->to->me;
+ }
+ SplineRefigure(spline1);
+
+ spline2 = chunkalloc(sizeof(Spline));
+ spline2->splines[0] = xend.sp; spline2->splines[1] = xend.sp;
+ spline2->from = mid;
+ spline2->to = old1;
+ spline2->order2 = order2;
+ mid->next = spline2;
+ old1->prev = spline2;
+ if ( SplineIsLinear(spline2)) {
+ spline2->islinear = spline2->from->nonextcp = spline2->to->noprevcp = true;
+ spline2->from->nextcp = spline2->from->me;
+ spline2->to->prevcp = spline2->to->me;
+ }
+ SplineRefigure(spline2);
+return( mid );
+}
+
+void GrowBuffer(GrowBuf *gb) {
+ if ( gb->base==NULL ) {
+ gb->base = gb->pt = malloc(200);
+ gb->end = gb->base + 200;
+ } else {
+ int len = (gb->end-gb->base) + 400;
+ int off = gb->pt-gb->base;
+ gb->base = realloc(gb->base,len);
+ gb->end = gb->base + len;
+ gb->pt = gb->base+off;
+ }
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineutil2.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineutil2.c
new file mode 100644
index 00000000000..2f188298527
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/splineutil2.c
@@ -0,0 +1,1518 @@
+/* -*- coding: utf-8 -*- */
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include <math.h>
+#include <time.h>
+
+int new_em_size = 1000;
+int new_fonts_are_order2 = false;
+int loaded_fonts_same_as_new = false;
+int default_fv_row_count = 4;
+int default_fv_col_count = 16;
+int default_fv_font_size = 48;
+int default_fv_antialias=true;
+int default_fv_bbsized=false;
+int snaptoint=0;
+
+/*#define DEBUG 1*/
+
+#if defined( FONTFORGE_CONFIG_USE_DOUBLE )
+# define RE_NearZero .00000001
+# define RE_Factor (1024.0*1024.0*1024.0*1024.0*1024.0*2.0) /* 52 bits => divide by 2^51 */
+#else
+# define RE_NearZero .00001
+# define RE_Factor (1024.0*1024.0*4.0) /* 23 bits => divide by 2^22 */
+#endif
+
+int Within4RoundingErrors(bigreal v1, bigreal v2) {
+ bigreal temp=v1*v2;
+ bigreal re;
+
+ if ( temp<0 ) /* Ok, if the two values are on different sides of 0 there */
+return( false ); /* is no way they can be within a rounding error of each other */
+ else if ( temp==0 ) {
+ if ( v1==0 )
+return( v2<RE_NearZero && v2>-RE_NearZero );
+ else
+return( v1<RE_NearZero && v1>-RE_NearZero );
+ } else if ( v1>0 ) {
+ if ( v1>v2 ) { /* Rounding error from the biggest absolute value */
+ re = v1/ (RE_Factor/4);
+return( v1-v2 < re );
+ } else {
+ re = v2/ (RE_Factor/4);
+return( v2-v1 < re );
+ }
+ } else {
+ if ( v1<v2 ) {
+ re = v1/ (RE_Factor/4); /* This will be a negative number */
+return( v1-v2 > re );
+ } else {
+ re = v2/ (RE_Factor/4);
+return( v2-v1 > re );
+ }
+ }
+}
+
+int Within16RoundingErrors(bigreal v1, bigreal v2) {
+ bigreal temp=v1*v2;
+ bigreal re;
+
+ if ( temp<0 ) /* Ok, if the two values are on different sides of 0 there */
+return( false ); /* is no way they can be within a rounding error of each other */
+ else if ( temp==0 ) {
+ if ( v1==0 )
+return( v2<RE_NearZero && v2>-RE_NearZero );
+ else
+return( v1<RE_NearZero && v1>-RE_NearZero );
+ } else if ( v1>0 ) {
+ if ( v1>v2 ) { /* Rounding error from the biggest absolute value */
+ re = v1/ (RE_Factor/16);
+return( v1-v2 < re );
+ } else {
+ re = v2/ (RE_Factor/16);
+return( v2-v1 < re );
+ }
+ } else {
+ if ( v1<v2 ) {
+ re = v1/ (RE_Factor/16); /* This will be a negative number */
+return( v1-v2 > re );
+ } else {
+ re = v2/ (RE_Factor/16);
+return( v2-v1 > re );
+ }
+ }
+}
+
+int RealNear(real a,real b) {
+ real d;
+
+#ifdef FONTFORGE_CONFIG_USE_DOUBLE
+ if ( a==0 )
+return( b>-1e-8 && b<1e-8 );
+ if ( b==0 )
+return( a>-1e-8 && a<1e-8 );
+
+ d = a/(1024*1024.);
+#else /* For floats */
+ if ( a==0 )
+return( b>-1e-5 && b<1e-5 );
+ if ( b==0 )
+return( a>-1e-5 && a<1e-5 );
+
+ d = a/(1024*64.);
+#endif
+ a-=b;
+ if ( d<0 )
+return( a>d && a<-d );
+ else
+return( a>-d && a<d );
+}
+
+int RealNearish(real a,real b) {
+
+ a-=b;
+return( a<.001 && a>-.001 );
+}
+
+int RealApprox(real a,real b) {
+
+ if ( a==0 ) {
+ if ( b<.0001 && b>-.0001 )
+return( true );
+ } else if ( b==0 ) {
+ if ( a<.0001 && a>-.0001 )
+return( true );
+ } else {
+ a /= b;
+ if ( a>=.95 && a<=1.05 )
+return( true );
+ }
+return( false );
+}
+
+int RealWithin(real a,real b,real fudge) {
+
+return( b>=a-fudge && b<=a+fudge );
+}
+
+static int MinMaxWithin(Spline *spline) {
+ extended dx, dy;
+ int which;
+ extended t1, t2;
+ extended w;
+ /* We know that this "spline" is basically one dimensional. As long as its*/
+ /* extrema are between the start and end points on that line then we can */
+ /* treat it as a line. If the extrema are way outside the line segment */
+ /* then it's a line that backtracks on itself */
+
+ if ( (dx = spline->to->me.x - spline->from->me.x)<0 ) dx = -dx;
+ if ( (dy = spline->to->me.y - spline->from->me.y)<0 ) dy = -dy;
+ which = dx<dy;
+ SplineFindExtrema(&spline->splines[which],&t1,&t2);
+ if ( t1==-1 )
+return( true );
+ w = ((spline->splines[which].a*t1 + spline->splines[which].b)*t1
+ + spline->splines[which].c)*t1 + spline->splines[which].d;
+ if ( RealNear(w, (&spline->to->me.x)[which]) || RealNear(w, (&spline->from->me.x)[which]) )
+ /* Close enough */;
+ else if ( (w<(&spline->to->me.x)[which] && w<(&spline->from->me.x)[which]) ||
+ (w>(&spline->to->me.x)[which] && w>(&spline->from->me.x)[which]) )
+return( false ); /* Outside */
+
+ w = ((spline->splines[which].a*t2 + spline->splines[which].b)*t2
+ + spline->splines[which].c)*t2 + spline->splines[which].d;
+ if ( RealNear(w, (&spline->to->me.x)[which]) || RealNear(w, (&spline->from->me.x)[which]) )
+ /* Close enough */;
+ else if ( (w<(&spline->to->me.x)[which] && w<(&spline->from->me.x)[which]) ||
+ (w>(&spline->to->me.x)[which] && w>(&spline->from->me.x)[which]) )
+return( false ); /* Outside */
+
+return( true );
+}
+
+int SplineIsLinear(Spline *spline) {
+ bigreal t1,t2, t3,t4;
+ int ret;
+
+ if ( spline->knownlinear )
+return( true );
+ if ( spline->knowncurved )
+return( false );
+
+ if ( spline->splines[0].a==0 && spline->splines[0].b==0 &&
+ spline->splines[1].a==0 && spline->splines[1].b==0 )
+return( true );
+
+ /* Something is linear if the control points lie on the line between the */
+ /* two base points */
+
+ /* Vertical lines */
+ if ( RealNear(spline->from->me.x,spline->to->me.x) ) {
+ ret = RealNear(spline->from->me.x,spline->from->nextcp.x) &&
+ RealNear(spline->from->me.x,spline->to->prevcp.x);
+ if ( ! ((spline->from->nextcp.y >= spline->from->me.y &&
+ spline->from->nextcp.y <= spline->to->me.y &&
+ spline->to->prevcp.y >= spline->from->me.y &&
+ spline->to->prevcp.y <= spline->to->me.y ) ||
+ (spline->from->nextcp.y <= spline->from->me.y &&
+ spline->from->nextcp.y >= spline->to->me.y &&
+ spline->to->prevcp.y <= spline->from->me.y &&
+ spline->to->prevcp.y >= spline->to->me.y )) )
+ ret = MinMaxWithin(spline);
+ /* Horizontal lines */
+ } else if ( RealNear(spline->from->me.y,spline->to->me.y) ) {
+ ret = RealNear(spline->from->me.y,spline->from->nextcp.y) &&
+ RealNear(spline->from->me.y,spline->to->prevcp.y);
+ if ( ! ((spline->from->nextcp.x >= spline->from->me.x &&
+ spline->from->nextcp.x <= spline->to->me.x &&
+ spline->to->prevcp.x >= spline->from->me.x &&
+ spline->to->prevcp.x <= spline->to->me.x) ||
+ (spline->from->nextcp.x <= spline->from->me.x &&
+ spline->from->nextcp.x >= spline->to->me.x &&
+ spline->to->prevcp.x <= spline->from->me.x &&
+ spline->to->prevcp.x >= spline->to->me.x)) )
+ ret = MinMaxWithin(spline);
+ } else {
+ ret = true;
+ t1 = (spline->from->nextcp.y-spline->from->me.y)/(spline->to->me.y-spline->from->me.y);
+ t2 = (spline->from->nextcp.x-spline->from->me.x)/(spline->to->me.x-spline->from->me.x);
+ t3 = (spline->to->me.y-spline->to->prevcp.y)/(spline->to->me.y-spline->from->me.y);
+ t4 = (spline->to->me.x-spline->to->prevcp.x)/(spline->to->me.x-spline->from->me.x);
+ ret = (Within16RoundingErrors(t1,t2) || (RealApprox(t1,0) && RealApprox(t2,0))) &&
+ (Within16RoundingErrors(t3,t4) || (RealApprox(t3,0) && RealApprox(t4,0)));
+ if ( ret ) {
+ if ( t1<0 || t2<0 || t3<0 || t4<0 ||
+ t1>1 || t2>1 || t3>1 || t4>1 )
+ ret = MinMaxWithin(spline);
+ }
+ }
+ spline->knowncurved = !ret;
+ spline->knownlinear = ret;
+ if ( ret ) {
+ /* A few places that if the spline is knownlinear then its splines[?] */
+ /* are linear. So give the linear version and not that suggested by */
+ /* the control points */
+ spline->splines[0].a = spline->splines[0].b = 0;
+ spline->splines[0].d = spline->from->me.x;
+ spline->splines[0].c = spline->to->me.x-spline->from->me.x;
+ spline->splines[1].a = spline->splines[1].b = 0;
+ spline->splines[1].d = spline->from->me.y;
+ spline->splines[1].c = spline->to->me.y-spline->from->me.y;
+ }
+return( ret );
+}
+
+/* This routine should almost never be called now. It uses a flawed algorithm */
+/* which won't produce the best results. It gets called only when the better */
+/* approach doesn't work (singular matrices, etc.) */
+/* Old comment, back when I was confused... */
+/* Least squares tells us that:
+ | S(xi*ti^3) | | S(ti^6) S(ti^5) S(ti^4) S(ti^3) | | a |
+ | S(xi*ti^2) | = | S(ti^5) S(ti^4) S(ti^3) S(ti^2) | * | b |
+ | S(xi*ti) | | S(ti^4) S(ti^3) S(ti^2) S(ti) | | c |
+ | S(xi) | | S(ti^3) S(ti^2) S(ti) n | | d |
+ and the definition of a spline tells us:
+ | x1 | = | 1 1 1 1 | * (a b c d)
+ | x0 | = | 0 0 0 1 | * (a b c d)
+So we're a bit over specified. Let's use the last two lines of least squares
+and the 2 from the spline defn. So d==x0. Now we've got three unknowns
+and only three equations...
+
+For order2 splines we've got
+ | S(xi*ti^2) | | S(ti^4) S(ti^3) S(ti^2) | | b |
+ | S(xi*ti) | = | S(ti^3) S(ti^2) S(ti) | * | c |
+ | S(xi) | | S(ti^2) S(ti) n | | d |
+ and the definition of a spline tells us:
+ | x1 | = | 1 1 1 | * (b c d)
+ | x0 | = | 0 0 1 | * (b c d)
+=>
+ d = x0
+ b+c = x1-x0
+ S(ti^2)*b + S(ti)*c = S(xi)-n*x0
+ S(ti^2)*b + S(ti)*(x1-x0-b) = S(xi)-n*x0
+ [ S(ti^2)-S(ti) ]*b = S(xi)-S(ti)*(x1-x0) - n*x0
+*/
+
+static int GoodCurve(SplinePoint *sp, int check_prev ) {
+ bigreal dx, dy, lenx, leny;
+
+ if ( sp->pointtype!=pt_curve && sp->pointtype!=pt_hvcurve )
+return( false );
+ if ( check_prev ) {
+ dx = sp->me.x - sp->prevcp.x;
+ dy = sp->me.y - sp->prevcp.y;
+ } else {
+ dx = sp->me.x - sp->nextcp.x;
+ dy = sp->me.y - sp->nextcp.y;
+ }
+ /* If the cp is very close to the base point the point might as well be a corner */
+ if ( dx<0 ) dx = -dx;
+ if ( dy<0 ) dy = -dy;
+ if ( dx+dy<1 )
+return( false );
+
+ if ( check_prev ) {
+ if ( sp->prev==NULL )
+return( true );
+ lenx = sp->me.x - sp->prev->from->me.x;
+ leny = sp->me.y - sp->prev->from->me.y;
+ } else {
+ if ( sp->next==NULL )
+return( true );
+ lenx = sp->me.x - sp->next->to->me.x;
+ leny = sp->me.y - sp->next->to->me.y;
+ }
+ if ( lenx<0 ) lenx = -lenx;
+ if ( leny<0 ) leny = -leny;
+ if ( 50*(dx+dy) < lenx+leny )
+return( false );
+
+return( true );
+}
+
+/* pf == point from (start point) */
+/* Δf == slope from (cp(from) - from) */
+/* pt == point to (end point, t==1) */
+/* Δt == slope to (cp(to) - to) */
+
+/* A spline from pf to pt with slope vectors rf*Δf, rt*Δt is: */
+/* p(t) = pf + [ 3*rf*Δf ]*t + 3*[pt-pf+rt*Δt-2*rf*Δf] *t^2 + */
+/* [2*pf-2*pt+3*rf*Δf-3*rt*Δt]*t^3 */
+
+/* So I want */
+/* d Σ (p(t(i))-p(i))^2/ d rf == 0 */
+/* d Σ (p(t(i))-p(i))^2/ d rt == 0 */
+/* now... */
+/* d Σ (p(t(i))-p(i))^2/ d rf == 0 */
+/* => Σ 3*t*Δf*(1-2*t+t^2)*
+ * [pf-pi+ 3*(pt-pf)*t^2 + 2*(pf-pt)*t^3] +
+ * 3*[t - 2*t^2 + t^3]*Δf*rf +
+ * 3*[t^2-t^3]*Δt*rt */
+/* and... */
+/* d Σ (p(t(i))-p(i))^2/ d rt == 0 */
+/* => Σ 3*t^2*Δt*(1-t)*
+ * [pf-pi+ 3*(pt-pf)*t^2 + 2*(pf-pt)*t^3] +
+ * 3*[t - 2*t^2 + t^3]*Δf*rf +
+ * 3*[t^2-t^3]*Δt*rt */
+
+/* Now for a long time I looked at that and saw four equations and two unknowns*/
+/* That was I was trying to solve for x and y separately, and that doesn't work. */
+/* There are really just two equations and each sums over both x and y components */
+
+/* Old comment: */
+/* I used to do a least squares aproach adding two more to the above set of equations */
+/* which held the slopes constant. But that didn't work very well. So instead*/
+/* Then I tried doing the approximation, and then forcing the control points */
+/* to be in line (witht the original slopes), getting a better approximation */
+/* to "t" for each data point and then calculating an error array, approximating*/
+/* it, and using that to fix up the final result */
+/* Then I tried checking various possible cp lengths in the desired directions*/
+/* finding the best one or two, and doing a 2D binary search using that as a */
+/* starting point. */
+/* And sometimes a least squares approach will give us the right answer, so */
+/* try that too. */
+/* This still isn't as good as I'd like it... But I haven't been able to */
+/* improve it further yet */
+
+bigreal SplineLength(Spline *spline) {
+ /* I ignore the constant term. It's just an unneeded addition */
+ bigreal len, t;
+ bigreal lastx = 0, lasty = 0;
+ bigreal curx, cury;
+
+ len = 0;
+ for ( t=1.0/128; t<=1.0001 ; t+=1.0/128 ) {
+ curx = ((spline->splines[0].a*t+spline->splines[0].b)*t+spline->splines[0].c)*t;
+ cury = ((spline->splines[1].a*t+spline->splines[1].b)*t+spline->splines[1].c)*t;
+ len += sqrt( (curx-lastx)*(curx-lastx) + (cury-lasty)*(cury-lasty) );
+ lastx = curx; lasty = cury;
+ }
+return( len );
+}
+
+int SPInterpolate(const SplinePoint *sp) {
+ /* Using truetype rules, can we interpolate this point? */
+return( !sp->dontinterpolate && !sp->nonextcp && !sp->noprevcp &&
+ !sp->roundx && !sp->roundy &&
+ (RealWithin(sp->me.x,(sp->nextcp.x+sp->prevcp.x)/2,.1) &&
+ RealWithin(sp->me.y,(sp->nextcp.y+sp->prevcp.y)/2,.1)) );
+}
+
+int SpIsExtremum(SplinePoint *sp) {
+ BasePoint *ncp, *pcp;
+ BasePoint *nncp, *ppcp;
+ if ( sp->next==NULL || sp->prev==NULL )
+return( true );
+ nncp = &sp->next->to->me;
+ if ( !sp->nonextcp ) {
+ ncp = &sp->nextcp;
+ if ( !sp->next->to->noprevcp )
+ nncp = &sp->next->to->prevcp;
+ } else if ( !sp->next->to->noprevcp )
+ ncp = &sp->next->to->prevcp;
+ else
+ ncp = nncp;
+ ppcp = &sp->prev->from->me;
+ if ( !sp->noprevcp ) {
+ pcp = &sp->prevcp;
+ if ( !sp->prev->from->nonextcp )
+ ppcp = &sp->prev->from->nextcp;
+ } else if ( !sp->prev->from->nonextcp )
+ pcp = &sp->prev->from->nextcp;
+ else
+ pcp = ppcp;
+ if ((( ncp->x<sp->me.x || (ncp->x==sp->me.x && nncp->x<sp->me.x)) &&
+ (pcp->x<sp->me.x || (pcp->x==sp->me.x && ppcp->x<sp->me.x))) ||
+ ((ncp->x>sp->me.x || (ncp->x==sp->me.x && nncp->x>sp->me.x)) &&
+ (pcp->x>sp->me.x || (pcp->x==sp->me.x && ppcp->x>sp->me.x))) ||
+ (( ncp->y<sp->me.y || (ncp->y==sp->me.y && nncp->y<sp->me.y)) &&
+ (pcp->y<sp->me.y || (pcp->y==sp->me.y && ppcp->y<sp->me.y))) ||
+ ((ncp->y>sp->me.y || (ncp->y==sp->me.y && nncp->y>sp->me.y)) &&
+ (pcp->y>sp->me.y || (pcp->y==sp->me.y && ppcp->y>sp->me.y))))
+return( true );
+
+ /* These aren't true points of extrema, but they probably should be treated */
+ /* as if they were */
+ if ( !sp->nonextcp && !sp->noprevcp &&
+ ((sp->me.x==sp->nextcp.x && sp->me.x==sp->prevcp.x) ||
+ (sp->me.y==sp->nextcp.y && sp->me.y==sp->prevcp.y)) )
+return( true );
+
+return( false );
+}
+
+/* An extremum is very close to the end-point. So close that we don't want */
+/* to add a new point. Instead try moving the control points around */
+/* Options: */
+/* o if the control point is very close to the base point then remove it */
+/* o if the slope at the endpoint is in the opposite direction from */
+/* what we expect, then subtract off the components we don't like */
+/* o make the slope at the end point horizontal/vertical */
+static int ForceEndPointExtrema(Spline *s,int isto) {
+ SplinePoint *end;
+ BasePoint *cp, to, unitslope, othercpunit, myslope;
+ bigreal xdiff, ydiff, mylen, cplen, mydot, cpdot, len;
+ /* To get here we know that the extremum is extremely close to the end */
+ /* point, and adjusting the slope at the end-point may be all we need */
+ /* to do. We won't need to adjust it by much, because it is so close. */
+
+ if ( isto ) {
+ end = s->to; cp = &end->prevcp;
+ othercpunit.x = s->from->nextcp.x - s->from->me.x;
+ othercpunit.y = s->from->nextcp.y - s->from->me.y;
+ } else {
+ end = s->from; cp = &end->nextcp;
+ othercpunit.x = s->to->prevcp.x-s->to->me.x;
+ othercpunit.y = s->to->prevcp.y-s->to->me.y;
+ }
+ cplen = othercpunit.x*othercpunit.x + othercpunit.y*othercpunit.y;
+ cplen = sqrt(cplen);
+ myslope.x = cp->x - end->me.x;
+ myslope.y = cp->y - end->me.y;
+ mylen = sqrt(myslope.x*myslope.x + myslope.y*myslope.y);
+
+ unitslope.x = s->to->me.x - s->from->me.x;
+ unitslope.y = s->to->me.y - s->from->me.y;
+ len = unitslope.x*unitslope.x + unitslope.y*unitslope.y;
+ if ( len==0 )
+return( -1 );
+ len = sqrt(len);
+ if ( mylen<30*len && mylen<cplen && mylen<1 ) {
+ if ( isto ) {
+ s->to->noprevcp = true;
+ s->to->prevcp = s->to->me;
+ } else {
+ s->from->nonextcp = true;
+ s->from->nextcp = s->from->me;
+ }
+ end->pointtype = pt_corner;
+ SplineRefigure(s);
+return( true ); /* We changed the slope */
+ }
+ unitslope.x /= len; unitslope.y /= len;
+
+ mydot = myslope.x*unitslope.y - myslope.y*unitslope.x;
+ cpdot = othercpunit.x*unitslope.y - othercpunit.y*unitslope.y;
+ if ( mydot*cpdot<0 && mylen<cplen ) {
+ /* The two control points are in opposite directions with respect to */
+ /* the main spline, and ours isn't very big, so make it point along */
+ /* the spline */
+ end->pointtype = pt_corner;
+ if ( isto ) {
+ s->to->prevcp.x = s->to->me.x - mydot*unitslope.x;
+ s->to->prevcp.y = s->to->me.y - mydot*unitslope.y;
+ } else {
+ s->from->nextcp.x = s->from->me.x + mydot*unitslope.x;
+ s->from->nextcp.y = s->from->me.y + mydot*unitslope.y;
+ }
+ SplineRefigure(s);
+return( true ); /* We changed the slope */
+ }
+
+ if ( (xdiff = cp->x - end->me.x)<0 ) xdiff = -xdiff;
+ if ( (ydiff = cp->y - end->me.y)<0 ) ydiff = -ydiff;
+
+ to = *cp;
+ if ( xdiff<ydiff/10.0 && xdiff>0 ) {
+ to.x = end->me.x;
+ end->pointtype = pt_corner;
+ SPAdjustControl(end,cp,&to,s->order2);
+return( true ); /* We changed the slope */
+ } else if ( ydiff<xdiff/10 && ydiff>0 ) {
+ to.y = end->me.y;
+ end->pointtype = pt_corner;
+ SPAdjustControl(end,cp,&to,s->order2);
+return( true ); /* We changed the slope */
+ }
+
+return( -1 ); /* Didn't do anything */
+}
+
+int Spline1DCantExtremeX(const Spline *s) {
+ /* Sometimes we get rounding errors when converting from control points */
+ /* to spline coordinates. These rounding errors can give us false */
+ /* extrema. So do a sanity check to make sure it is possible to get */
+ /* any extrema before actually looking for them */
+
+ if ( s->from->me.x>=s->from->nextcp.x &&
+ s->from->nextcp.x>=s->to->prevcp.x &&
+ s->to->prevcp.x>=s->to->me.x )
+return( true );
+ if ( s->from->me.x<=s->from->nextcp.x &&
+ s->from->nextcp.x<=s->to->prevcp.x &&
+ s->to->prevcp.x<=s->to->me.x )
+return( true );
+
+return( false );
+}
+
+int Spline1DCantExtremeY(const Spline *s) {
+ /* Sometimes we get rounding errors when converting from control points */
+ /* to spline coordinates. These rounding errors can give us false */
+ /* extrema. So do a sanity check to make sure it is possible to get */
+ /* any extrema before actually looking for them */
+
+ if ( s->from->me.y>=s->from->nextcp.y &&
+ s->from->nextcp.y>=s->to->prevcp.y &&
+ s->to->prevcp.y>=s->to->me.y )
+return( true );
+ if ( s->from->me.y<=s->from->nextcp.y &&
+ s->from->nextcp.y<=s->to->prevcp.y &&
+ s->to->prevcp.y<=s->to->me.y )
+return( true );
+
+return( false );
+}
+
+Spline *SplineAddExtrema(Spline *s,int always,real lenbound, real offsetbound,
+ DBounds *b) {
+ /* First find the extrema, if any */
+ bigreal t[4], min;
+ uint8 rmfrom[4], rmto[4];
+ int p, i,j, p_s, mini, restart, forced;
+ SplinePoint *sp;
+ real len;
+
+ if ( !always ) {
+ real xlen, ylen;
+ xlen = (s->from->me.x-s->to->me.x);
+ ylen = (s->from->me.y-s->to->me.y);
+ len = xlen*xlen + ylen*ylen;
+ lenbound *= lenbound;
+ if ( len < lenbound ) {
+ len = SplineLength(s);
+ len *= len;
+ }
+ }
+
+ memset(rmfrom,0,sizeof(rmfrom));
+ memset(rmto,0,sizeof(rmto));
+
+ for (;;) {
+ if ( s->knownlinear )
+return(s);
+ p = 0;
+ if ( Spline1DCantExtremeX(s) ) {
+ /* If the control points are at the end-points then this (1D) spline is */
+ /* basically a line. But rounding errors can give us very faint extrema */
+ /* if we look for them */
+ } else if ( s->splines[0].a!=0 ) {
+ bigreal d = 4*s->splines[0].b*s->splines[0].b-4*3*s->splines[0].a*s->splines[0].c;
+ if ( d>0 ) {
+ extended t1, t2;
+ d = sqrt(d);
+ t1 = (-2*s->splines[0].b+d)/(2*3*s->splines[0].a);
+ t2 = (-2*s->splines[0].b-d)/(2*3*s->splines[0].a);
+ t[p++] = CheckExtremaForSingleBitErrors(&s->splines[0],t1,t2);
+ t[p++] = CheckExtremaForSingleBitErrors(&s->splines[0],t2,t1);
+ }
+ } else if ( s->splines[0].b!=0 )
+ t[p++] = -s->splines[0].c/(2*s->splines[0].b);
+ if ( !always ) {
+ /* Generally we are only interested in extrema on long splines, or */
+ /* extrema which are extrema for the entire contour, not just this */
+ /* spline */
+ /* Also extrema which are very close to one of the end-points can */
+ /* be ignored. */
+ /* No they can't. But we need to remove the original point in this*/
+ /* case */
+ for ( i=0; i<p; ++i ) {
+ real x = ((s->splines[0].a*t[i]+s->splines[0].b)*t[i]+s->splines[0].c)*t[i]+s->splines[0].d;
+ real y = ((s->splines[1].a*t[i]+s->splines[1].b)*t[i]+s->splines[1].c)*t[i]+s->splines[1].d;
+ int close_from = ( x-s->from->me.x<offsetbound && x-s->from->me.x>-offsetbound) &&
+ ( y-s->from->me.y<10*offsetbound && y-s->from->me.y>-10*offsetbound );
+ int close_to = ( x-s->to->me.x<offsetbound && x-s->to->me.x>-offsetbound) &&
+ ( y-s->to->me.y<10*offsetbound && y-s->to->me.y>-10*offsetbound );
+ int remove_from = close_from && GoodCurve(s->from,true) && !SpIsExtremum(s->from);
+ int remove_to = close_to && GoodCurve(s->to,false) && !SpIsExtremum(s->to);
+ if (( x>b->minx && x<b->maxx && len<lenbound ) ||
+ (close_from && !remove_from) || (close_to && !remove_to) ) {
+ --p;
+ for ( j=i; j<p; ++j )
+ t[j] = t[j+1];
+ --i;
+ } else {
+ rmfrom[i] = remove_from;
+ rmto[i] = remove_to;
+ }
+ }
+ }
+
+ p_s = p;
+ if ( Spline1DCantExtremeY(s) ) {
+ /* If the control points are at the end-points then this (1D) spline is */
+ /* basically a line. But rounding errors can give us very faint extrema */
+ /* if we look for them */
+ } else if ( s->splines[1].a!=0 ) {
+ bigreal d = 4*s->splines[1].b*s->splines[1].b-4*3*s->splines[1].a*s->splines[1].c;
+ if ( d>0 ) {
+ extended t1,t2;
+ d = sqrt(d);
+ t1 = (-2*s->splines[1].b+d)/(2*3*s->splines[1].a);
+ t2 = (-2*s->splines[1].b-d)/(2*3*s->splines[1].a);
+ t[p++] = CheckExtremaForSingleBitErrors(&s->splines[1],t1,t2);
+ t[p++] = CheckExtremaForSingleBitErrors(&s->splines[1],t2,t1);
+ }
+ } else if ( s->splines[1].b!=0 )
+ t[p++] = -s->splines[1].c/(2*s->splines[1].b);
+ if ( !always ) {
+ for ( i=p_s; i<p; ++i ) {
+ real x = ((s->splines[0].a*t[i]+s->splines[0].b)*t[i]+s->splines[0].c)*t[i]+s->splines[0].d;
+ real y = ((s->splines[1].a*t[i]+s->splines[1].b)*t[i]+s->splines[1].c)*t[i]+s->splines[1].d;
+ int close_from =( y-s->from->me.y<offsetbound && y-s->from->me.y>-offsetbound ) &&
+ ( x-s->from->me.x<offsetbound && x-s->from->me.x>-offsetbound);
+ int close_to = ( y-s->to->me.y<offsetbound && y-s->to->me.y>-offsetbound ) &&
+ ( x-s->to->me.x<offsetbound && x-s->to->me.x>-offsetbound);
+ int remove_from = close_from && GoodCurve(s->from,true) && !SpIsExtremum(s->from);
+ int remove_to = close_to && GoodCurve(s->to,false) && !SpIsExtremum(s->to);
+ if (( y>b->miny && y<b->maxy && len<lenbound ) ||
+ (close_from && !remove_from) || (close_to && !remove_to) ) {
+ --p;
+ for ( j=i; j<p; ++j )
+ t[j] = t[j+1];
+ --i;
+ } else {
+ rmfrom[i] = remove_from;
+ rmto[i] = remove_to;
+ }
+ }
+ }
+
+ /* Throw out any t values which are not between 0 and 1 */
+ /* (we do a little fudging near the endpoints so we don't get confused */
+ /* by rounding errors) */
+ restart = false;
+ for ( i=0; i<p; ++i ) {
+ if ( t[i]>0 && t[i]<.05 ) {
+ BasePoint test;
+ /* Expand stroke gets very confused on zero-length splines so */
+ /* don't let that happen */
+ test.x = ((s->splines[0].a*t[i]+s->splines[0].b)*t[i]+s->splines[0].c)*t[i]+s->splines[0].d - s->from->me.x;
+ test.y = ((s->splines[1].a*t[i]+s->splines[1].b)*t[i]+s->splines[1].c)*t[i]+s->splines[1].d - s->from->me.y;
+ if (( test.x*test.x + test.y*test.y<1e-7 ) && ( test.x*test.x + test.y*test.y>0.0 )) {
+ if ( (forced = ForceEndPointExtrema(s,0))>=0 ) {
+ if ( forced && s->from->prev!=NULL )
+ SplineAddExtrema(s->from->prev,always,lenbound,offsetbound,b);
+ restart = true;
+ break;
+ }
+ }
+ }
+ if ( t[i]<1 && t[i]>.95 ) {
+ BasePoint test;
+ test.x = ((s->splines[0].a*t[i]+s->splines[0].b)*t[i]+s->splines[0].c)*t[i]+s->splines[0].d - s->to->me.x;
+ test.y = ((s->splines[1].a*t[i]+s->splines[1].b)*t[i]+s->splines[1].c)*t[i]+s->splines[1].d - s->to->me.y;
+ if (( test.x*test.x + test.y*test.y < 1e-7 ) && ( test.x*test.x + test.y*test.y>0.0 )) {
+ if ( ForceEndPointExtrema(s,1)>=0 ) {
+ /* don't need to fix up next, because splinesetaddextrema will do that soon */
+ restart = true;
+ break;
+ }
+ }
+ }
+
+ if ( t[i]<=0 || t[i]>=1.0 ) {
+ --p;
+ for ( j=i; j<p; ++j ) {
+ t[j] = t[j+1];
+ rmfrom[j] = rmfrom[j+1];
+ rmto[j] = rmto[j+1];
+ }
+ --i;
+ }
+ }
+ if ( restart )
+ continue;
+
+ if ( p==0 )
+return(s);
+
+ /* Find the smallest of all the interesting points */
+ min = t[0]; mini = 0;
+ for ( i=1; i<p; ++i ) {
+ if ( t[i]<min ) {
+ min=t[i];
+ mini = i;
+ }
+ }
+ sp = SplineBisect(s,min);
+/* On the mac we get rounding errors in the bisect routine */
+ { bigreal dx, dy;
+ if ( (dx = sp->me.x - sp->prevcp.x)<0 ) dx=-dx;
+ if ( (dy = sp->me.y - sp->prevcp.y)<0 ) dy=-dy;
+ if ( dx!=0 && dy!=0 ) {
+ if ( dx<dy )
+ sp->prevcp.x = sp->me.x;
+ else
+ sp->prevcp.y = sp->me.y;
+ }
+ if ( (dx = sp->me.x - sp->nextcp.x)<0 ) dx=-dx;
+ if ( (dy = sp->me.y - sp->nextcp.y)<0 ) dy=-dy;
+ if ( dx!=0 && dy!=0 ) {
+ if ( dx<dy )
+ sp->nextcp.x = sp->me.x;
+ else
+ sp->nextcp.y = sp->me.y;
+ }
+ }
+
+ if ( rmfrom[mini] ) sp->prev->from->ticked = true;
+ if ( rmto[mini] ) sp->next->to->ticked = true;
+ s = sp->next;
+ if ( p==1 )
+return( s );
+ /* Don't try to use any other computed t values, it is easier to */
+ /* recompute them than to try and figure out what they map to on the */
+ /* new spline */
+ }
+}
+
+SplineFont *SplineFontEmpty(void) {
+ extern int default_fv_row_count, default_fv_col_count;
+ time_t now;
+ SplineFont *sf;
+
+ sf = calloc(1,sizeof(SplineFont));
+ sf->pfminfo.fstype = -1;
+ sf->pfminfo.stylemap = -1;
+ sf->top_enc = -1;
+ sf->map = NULL;
+ sf->macstyle = -1;
+ sf->desired_row_cnt = default_fv_row_count; sf->desired_col_cnt = default_fv_col_count;
+ sf->display_antialias = default_fv_antialias;
+ sf->display_bbsized = default_fv_bbsized;
+ sf->display_size = -default_fv_font_size;
+ sf->display_layer = ly_fore;
+ sf->sfntRevision = sfntRevisionUnset;
+ sf->woffMajor = woffUnset;
+ sf->woffMinor = woffUnset;
+ sf->pfminfo.winascent_add = sf->pfminfo.windescent_add = true;
+ sf->pfminfo.hheadascent_add = sf->pfminfo.hheaddescent_add = true;
+ sf->pfminfo.typoascent_add = sf->pfminfo.typodescent_add = true;
+ if ( TTFFoundry!=NULL )
+ strncpy(sf->pfminfo.os2_vendor,TTFFoundry,4);
+ else
+ memcpy(sf->pfminfo.os2_vendor,"PfEd",4);
+ sf->for_new_glyphs = DefaultNameListForNewFonts();
+ time(&now);
+ sf->creationtime = sf->modificationtime = now;
+
+ sf->layer_cnt = 2;
+ sf->layers = calloc(2,sizeof(LayerInfo));
+ sf->layers[ly_back].name = copy(_("Back"));
+ sf->layers[ly_back].background = true;
+ sf->layers[ly_fore].name = copy(_("Fore"));
+ sf->layers[ly_fore].background = false;
+ sf->grid.background = true;
+
+return( sf );
+}
+
+static void SFChangeXUID(SplineFont *sf, int random) {
+ char *pt, *new, *npt;
+ int val;
+
+ if ( sf->xuid==NULL )
+return;
+ pt = strrchr(sf->xuid,' ');
+ if ( pt==NULL )
+ pt = strchr(sf->xuid,'[');
+ if ( pt==NULL )
+ pt = sf->xuid;
+ else
+ ++pt;
+ if ( random )
+ val = rand()&0xffffff;
+ else {
+ val = strtol(pt,NULL,10);
+ val = (val+1)&0xffffff;
+ }
+
+ new = malloc(pt-sf->xuid+12);
+ strncpy(new,sf->xuid,pt-sf->xuid);
+ npt = new + (pt-sf->xuid);
+ if ( npt==new ) *npt++ = '[';
+ sprintf(npt, "%d]", val );
+ free(sf->xuid); sf->xuid = new;
+ sf->changed = true;
+ sf->changed_since_xuidchanged = false;
+}
+
+void SFIncrementXUID(SplineFont *sf) {
+ SFChangeXUID(sf,false);
+}
+
+void SplineCharTangentNextCP(SplinePoint *sp) {
+ bigreal len;
+ BasePoint *bp, unit;
+ extern int snaptoint;
+
+ if ( sp->prev==NULL )
+return;
+ bp = &sp->prev->from->me;
+
+ unit.y = sp->me.y-bp->y; unit.x = sp->me.x-bp->x;
+ len = sqrt( unit.x*unit.x + unit.y*unit.y );
+ if ( len!=0 ) {
+ unit.x /= len;
+ unit.y /= len;
+ }
+ len = sqrt((sp->nextcp.y-sp->me.y)*(sp->nextcp.y-sp->me.y) + (sp->nextcp.x-sp->me.x)*(sp->nextcp.x-sp->me.x));
+ sp->nextcp.x = sp->me.x + len*unit.x;
+ sp->nextcp.y = sp->me.y + len*unit.y;
+ if ( snaptoint ) {
+ sp->nextcp.x = rint(sp->nextcp.x);
+ sp->nextcp.y = rint(sp->nextcp.y);
+ } else {
+ sp->nextcp.x = rint(sp->nextcp.x*1024)/1024;
+ sp->nextcp.y = rint(sp->nextcp.y*1024)/1024;
+ }
+ if ( sp->next!=NULL && sp->next->order2 )
+ sp->next->to->prevcp = sp->nextcp;
+}
+
+void SplineCharTangentPrevCP(SplinePoint *sp) {
+ bigreal len;
+ BasePoint *bp, unit;
+ extern int snaptoint;
+
+ if ( sp->next==NULL )
+return;
+ bp = &sp->next->to->me;
+
+ unit.y = sp->me.y-bp->y; unit.x = sp->me.x-bp->x;
+ len = sqrt( unit.x*unit.x + unit.y*unit.y );
+ if ( len!=0 ) {
+ unit.x /= len;
+ unit.y /= len;
+ }
+ len = sqrt((sp->prevcp.y-sp->me.y)*(sp->prevcp.y-sp->me.y) + (sp->prevcp.x-sp->me.x)*(sp->prevcp.x-sp->me.x));
+ sp->prevcp.x = sp->me.x + len*unit.x;
+ sp->prevcp.y = sp->me.y + len*unit.y;
+ if ( snaptoint ) {
+ sp->prevcp.x = rint(sp->prevcp.x);
+ sp->prevcp.y = rint(sp->prevcp.y);
+ } else {
+ sp->prevcp.x = rint(sp->prevcp.x*1024)/1024;
+ sp->prevcp.y = rint(sp->prevcp.y*1024)/1024;
+ }
+ if ( sp->prev!=NULL && sp->prev->order2 )
+ sp->prev->from->nextcp = sp->prevcp;
+}
+
+void BP_HVForce(BasePoint *vector) {
+ /* Force vector to be horizontal/vertical */
+ bigreal dx, dy, len;
+
+ if ( (dx= vector->x)<0 ) dx = -dx;
+ if ( (dy= vector->y)<0 ) dy = -dy;
+ if ( dx==0 || dy==0 )
+return;
+ len = sqrt(dx*dx + dy*dy);
+ if ( dx>dy ) {
+ vector->x = vector->x<0 ? -len : len;
+ vector->y = 0;
+ } else {
+ vector->y = vector->y<0 ? -len : len;
+ vector->x = 0;
+ }
+}
+
+#define NICE_PROPORTION .39
+void SplineCharDefaultNextCP(SplinePoint *base) {
+ SplinePoint *prev=NULL, *next;
+ bigreal len, plen, ulen;
+ BasePoint unit;
+ extern int snaptoint;
+
+ if ( base->next==NULL )
+return;
+ if ( base->next->order2 ) {
+ SplineRefigureFixup(base->next);
+return;
+ }
+ if ( !base->nextcpdef ) {
+ if ( base->pointtype==pt_tangent )
+ SplineCharTangentNextCP(base);
+return;
+ }
+ next = base->next->to;
+ if ( base->prev!=NULL )
+ prev = base->prev->from;
+
+ len = NICE_PROPORTION * sqrt((base->me.x-next->me.x)*(base->me.x-next->me.x) +
+ (base->me.y-next->me.y)*(base->me.y-next->me.y));
+ unit.x = next->me.x - base->me.x;
+ unit.y = next->me.y - base->me.y;
+ ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
+ if ( ulen!=0 )
+ unit.x /= ulen, unit.y /= ulen;
+ base->nonextcp = false;
+
+ if ( base->pointtype == pt_curve || base->pointtype == pt_hvcurve ) {
+ if ( prev!=NULL && (base->prevcpdef || base->noprevcp)) {
+ unit.x = next->me.x - prev->me.x;
+ unit.y = next->me.y - prev->me.y;
+ ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
+ if ( ulen!=0 )
+ unit.x /= ulen, unit.y /= ulen;
+ if ( base->pointtype == pt_hvcurve )
+ BP_HVForce(&unit);
+ plen = sqrt((base->prevcp.x-base->me.x)*(base->prevcp.x-base->me.x) +
+ (base->prevcp.y-base->me.y)*(base->prevcp.y-base->me.y));
+ base->prevcp.x = base->me.x - plen*unit.x;
+ base->prevcp.y = base->me.y - plen*unit.y;
+ if ( snaptoint ) {
+ base->prevcp.x = rint(base->prevcp.x);
+ base->prevcp.y = rint(base->prevcp.y);
+ }
+ SplineRefigureFixup(base->prev);
+ } else if ( prev!=NULL ) {
+ /* The prev control point is fixed. So we've got to use the same */
+ /* angle it uses */
+ unit.x = base->me.x-base->prevcp.x;
+ unit.y = base->me.y-base->prevcp.y;
+ ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
+ if ( ulen!=0 )
+ unit.x /= ulen, unit.y /= ulen;
+ } else {
+ base->prevcp = base->me;
+ base->noprevcp = true;
+ base->prevcpdef = true;
+ }
+ if ( base->pointtype == pt_hvcurve )
+ BP_HVForce(&unit);
+ } else if ( base->pointtype == pt_corner ) {
+ if ( next->pointtype != pt_curve && next->pointtype != pt_hvcurve ) {
+ base->nonextcp = true;
+ }
+ } else /* tangent */ {
+ if ( next->pointtype != pt_curve ) {
+ base->nonextcp = true;
+ } else {
+ if ( prev!=NULL ) {
+ if ( !base->noprevcp ) {
+ plen = sqrt((base->prevcp.x-base->me.x)*(base->prevcp.x-base->me.x) +
+ (base->prevcp.y-base->me.y)*(base->prevcp.y-base->me.y));
+ base->prevcp.x = base->me.x - plen*unit.x;
+ base->prevcp.y = base->me.y - plen*unit.y;
+ SplineRefigureFixup(base->prev);
+ }
+ unit.x = base->me.x-prev->me.x;
+ unit.y = base->me.y-prev->me.y;
+ ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
+ if ( ulen!=0 )
+ unit.x /= ulen, unit.y /= ulen;
+ }
+ }
+ }
+ if ( base->nonextcp )
+ base->nextcp = base->me;
+ else {
+ base->nextcp.x = base->me.x + len*unit.x;
+ base->nextcp.y = base->me.y + len*unit.y;
+ if ( snaptoint ) {
+ base->nextcp.x = rint(base->nextcp.x);
+ base->nextcp.y = rint(base->nextcp.y);
+ } else {
+ base->nextcp.x = rint(base->nextcp.x*1024)/1024;
+ base->nextcp.y = rint(base->nextcp.y*1024)/1024;
+ }
+ if ( base->next != NULL )
+ SplineRefigureFixup(base->next);
+ }
+}
+
+void SplineCharDefaultPrevCP(SplinePoint *base) {
+ SplinePoint *next=NULL, *prev;
+ bigreal len, nlen, ulen;
+ BasePoint unit;
+ extern int snaptoint;
+
+ if ( base->prev==NULL )
+return;
+ if ( base->prev->order2 ) {
+ SplineRefigureFixup(base->prev);
+return;
+ }
+ if ( !base->prevcpdef ) {
+ if ( base->pointtype==pt_tangent )
+ SplineCharTangentPrevCP(base);
+return;
+ }
+ prev = base->prev->from;
+ if ( base->next!=NULL )
+ next = base->next->to;
+
+ len = NICE_PROPORTION * sqrt((base->me.x-prev->me.x)*(base->me.x-prev->me.x) +
+ (base->me.y-prev->me.y)*(base->me.y-prev->me.y));
+ unit.x = prev->me.x - base->me.x;
+ unit.y = prev->me.y - base->me.y;
+ ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
+ if ( ulen!=0 )
+ unit.x /= ulen, unit.y /= ulen;
+ base->noprevcp = false;
+
+ if ( base->pointtype == pt_curve || base->pointtype == pt_hvcurve ) {
+ if ( next!=NULL && (base->nextcpdef || base->nonextcp)) {
+ unit.x = prev->me.x - next->me.x;
+ unit.y = prev->me.y - next->me.y;
+ ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
+ if ( ulen!=0 )
+ unit.x /= ulen, unit.y /= ulen;
+ if ( base->pointtype == pt_hvcurve )
+ BP_HVForce(&unit);
+ nlen = sqrt((base->nextcp.x-base->me.x)*(base->nextcp.x-base->me.x) +
+ (base->nextcp.y-base->me.y)*(base->nextcp.y-base->me.y));
+ base->nextcp.x = base->me.x - nlen*unit.x;
+ base->nextcp.y = base->me.y - nlen*unit.y;
+ if ( snaptoint ) {
+ base->nextcp.x = rint(base->nextcp.x);
+ base->nextcp.y = rint(base->nextcp.y);
+ }
+ SplineRefigureFixup(base->next);
+ } else if ( next!=NULL ) {
+ /* The next control point is fixed. So we got to use the same */
+ /* angle it uses */
+ unit.x = base->me.x-base->nextcp.x;
+ unit.y = base->me.y-base->nextcp.y;
+ ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
+ if ( ulen!=0 )
+ unit.x /= ulen, unit.y /= ulen;
+ } else {
+ base->nextcp = base->me;
+ base->nonextcp = true;
+ base->nextcpdef = true;
+ }
+ if ( base->pointtype == pt_hvcurve )
+ BP_HVForce(&unit);
+ } else if ( base->pointtype == pt_corner ) {
+ if ( prev->pointtype != pt_curve && prev->pointtype != pt_hvcurve ) {
+ base->noprevcp = true;
+ }
+ } else /* tangent */ {
+ if ( prev->pointtype != pt_curve ) {
+ base->noprevcp = true;
+ } else {
+ if ( next!=NULL ) {
+ if ( !base->nonextcp ) {
+ nlen = sqrt((base->nextcp.x-base->me.x)*(base->nextcp.x-base->me.x) +
+ (base->nextcp.y-base->me.y)*(base->nextcp.y-base->me.y));
+ base->nextcp.x = base->me.x - nlen*unit.x;
+ base->nextcp.y = base->me.y - nlen*unit.y;
+ SplineRefigureFixup(base->next);
+ }
+ unit.x = base->me.x-next->me.x;
+ unit.y = base->me.y-next->me.y;
+ ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
+ if ( ulen!=0 )
+ unit.x /= ulen, unit.y /= ulen;
+ }
+ }
+ }
+ if ( base->noprevcp )
+ base->prevcp = base->me;
+ else {
+ base->prevcp.x = base->me.x + len*unit.x;
+ base->prevcp.y = base->me.y + len*unit.y;
+ if ( snaptoint ) {
+ base->prevcp.x = rint(base->prevcp.x);
+ base->prevcp.y = rint(base->prevcp.y);
+ } else {
+ base->prevcp.x = rint(base->prevcp.x*1024)/1024;
+ base->prevcp.y = rint(base->prevcp.y*1024)/1024;
+ }
+ if ( base->prev!=NULL )
+ SplineRefigureFixup(base->prev);
+ }
+}
+
+void SPTouchControl(SplinePoint *sp,BasePoint *which, int order2)
+{
+ BasePoint to = *which;
+ SPAdjustControl( sp, which, &to, order2 );
+}
+
+void SPAdjustControl(SplinePoint *sp,BasePoint *cp, BasePoint *to,int order2) {
+ BasePoint *othercp = cp==&sp->nextcp?&sp->prevcp:&sp->nextcp;
+ int refig = false, otherchanged = false;
+
+ if ( sp->ttfindex==0xffff && order2 ) {
+ /* If the point itself is implied, then it's the control points that */
+ /* are fixed. Moving a CP should move the implied point so that it */
+ /* continues to be in the right place */
+ sp->me.x = (to->x+othercp->x)/2;
+ sp->me.y = (to->y+othercp->y)/2;
+ *cp = *to;
+ refig = true;
+ } else if ( sp->pointtype==pt_corner ) {
+ *cp = *to;
+ } else if ( sp->pointtype==pt_curve || sp->pointtype==pt_hvcurve ) {
+ if ( sp->pointtype==pt_hvcurve ) {
+ BasePoint diff;
+ diff.x = to->x - sp->me.x;
+ diff.y = to->y - sp->me.y;
+ BP_HVForce(&diff);
+ cp->x = sp->me.x + diff.x;
+ cp->y = sp->me.y + diff.y;
+ } else {
+ *cp = *to;
+ }
+ if (( cp->x!=sp->me.x || cp->y!=sp->me.y ) &&
+ (!order2 ||
+ (cp==&sp->nextcp && sp->next!=NULL && sp->next->to->ttfindex==0xffff) ||
+ (cp==&sp->prevcp && sp->prev!=NULL && sp->prev->from->ttfindex==0xffff)) ) {
+ bigreal len1, len2;
+ len1 = sqrt((cp->x-sp->me.x)*(cp->x-sp->me.x) +
+ (cp->y-sp->me.y)*(cp->y-sp->me.y));
+ len2 = sqrt((othercp->x-sp->me.x)*(othercp->x-sp->me.x) +
+ (othercp->y-sp->me.y)*(othercp->y-sp->me.y));
+ len2 /= len1;
+ othercp->x = len2 * (sp->me.x-cp->x) + sp->me.x;
+ othercp->y = len2 * (sp->me.y-cp->y) + sp->me.y;
+ otherchanged = true;
+ if ( sp->next!=NULL && othercp==&sp->nextcp ) {
+ if ( order2 ) sp->next->to->prevcp = *othercp;
+ SplineRefigure(sp->next);
+ } else if ( sp->prev!=NULL && othercp==&sp->prevcp ) {
+ if ( order2 ) sp->prev->from->nextcp = *othercp;
+ SplineRefigure(sp->prev);
+ }
+ }
+ if ( cp==&sp->nextcp ) sp->prevcpdef = false;
+ else sp->nextcpdef = false;
+ } else {
+ BasePoint *bp;
+ if ( cp==&sp->prevcp && sp->next!=NULL )
+ bp = &sp->next->to->me;
+ else if ( cp==&sp->nextcp && sp->prev!=NULL )
+ bp = &sp->prev->from->me;
+ else
+ bp = NULL;
+ if ( bp!=NULL ) {
+ real angle = atan2(bp->y-sp->me.y,bp->x-sp->me.x);
+ real len = sqrt((bp->x-sp->me.x)*(bp->x-sp->me.x) + (bp->y-sp->me.y)*(bp->y-sp->me.y));
+ real dotprod =
+ ((to->x-sp->me.x)*(bp->x-sp->me.x) +
+ (to->y-sp->me.y)*(bp->y-sp->me.y));
+ if ( len!=0 ) {
+ dotprod /= len;
+ if ( dotprod>0 ) dotprod = 0;
+ cp->x = sp->me.x + dotprod*cos(angle);
+ cp->y = sp->me.y + dotprod*sin(angle);
+ }
+ }
+ }
+
+ if ( order2 ) {
+ if ( (cp==&sp->nextcp || otherchanged) && sp->next!=NULL ) {
+ SplinePoint *osp = sp->next->to;
+ if ( osp->ttfindex==0xffff ) {
+ osp->prevcp = sp->nextcp;
+ osp->me.x = (osp->prevcp.x+osp->nextcp.x)/2;
+ osp->me.y = (osp->prevcp.y+osp->nextcp.y)/2;
+ SplineRefigure(osp->next);
+ }
+ }
+ if ( (cp==&sp->prevcp || otherchanged) && sp->prev!=NULL ) {
+ SplinePoint *osp = sp->prev->from;
+ if ( osp->ttfindex==0xffff ) {
+ osp->nextcp = sp->prevcp;
+ osp->me.x = (osp->prevcp.x+osp->nextcp.x)/2;
+ osp->me.y = (osp->prevcp.y+osp->nextcp.y)/2;
+ SplineRefigure(osp->prev);
+ }
+ }
+ }
+
+ if ( cp->x==sp->me.x && cp->y==sp->me.y ) {
+ if ( cp==&sp->nextcp ) sp->nonextcp = true;
+ else sp->noprevcp = true;
+ } else {
+ if ( cp==&sp->nextcp ) sp->nonextcp = false;
+ else sp->noprevcp = false;
+ }
+ if ( cp==&sp->nextcp ) sp->nextcpdef = false;
+ else sp->prevcpdef = false;
+
+ if ( sp->next!=NULL && cp==&sp->nextcp ) {
+ if ( order2 && !sp->nonextcp ) {
+ sp->next->to->prevcp = *cp;
+ sp->next->to->noprevcp = false;
+ }
+ SplineRefigureFixup(sp->next);
+ }
+ if ( sp->prev!=NULL && cp==&sp->prevcp ) {
+ if ( order2 && !sp->noprevcp ) {
+ sp->prev->from->nextcp = *cp;
+ sp->prev->from->nonextcp = false;
+ }
+ SplineRefigureFixup(sp->prev);
+ }
+ if ( refig ) {
+ SplineRefigure(sp->prev);
+ SplineRefigure(sp->next);
+ }
+}
+
+SplineSet *SplineSetReverse(SplineSet *spl) {
+ Spline *spline, *first, *next;
+ BasePoint tp;
+ SplinePoint *temp;
+ int flag;
+ int i;
+ /* reverse the splineset so that what was the start point becomes the end */
+ /* and vice versa. This entails reversing every individual spline, and */
+ /* each point */
+
+ first = NULL;
+ spline = spl->first->next;
+ if ( spline==NULL )
+return( spl ); /* Only one point, reversal is meaningless */
+
+ tp = spline->from->nextcp;
+ spline->from->nextcp = spline->from->prevcp;
+ spline->from->prevcp = tp;
+ flag = spline->from->nonextcp;
+ spline->from->nonextcp = spline->from->noprevcp;
+ spline->from->noprevcp = flag;
+ flag = spline->from->nextcpdef;
+ spline->from->nextcpdef = spline->from->prevcpdef;
+ spline->from->prevcpdef = flag;
+
+ for ( ; spline!=NULL && spline!=first; spline=next ) {
+ next = spline->to->next;
+
+ if ( spline->to!=spl->first ) { /* On a closed spline don't want to reverse the first point twice */
+ tp = spline->to->nextcp;
+ spline->to->nextcp = spline->to->prevcp;
+ spline->to->prevcp = tp;
+ flag = spline->to->nonextcp;
+ spline->to->nonextcp = spline->to->noprevcp;
+ spline->to->noprevcp = flag;
+ flag = spline->to->nextcpdef;
+ spline->to->nextcpdef = spline->to->prevcpdef;
+ spline->to->prevcpdef = flag;
+ }
+
+ temp = spline->to;
+ spline->to = spline->from;
+ spline->from = temp;
+ spline->from->next = spline;
+ spline->to->prev = spline;
+ SplineRefigure(spline);
+ if ( first==NULL ) first = spline;
+ }
+
+ if ( spl->first!=spl->last ) {
+ temp = spl->first;
+ spl->first = spl->last;
+ spl->start_offset = 0;
+ spl->last = temp;
+ spl->first->prev = NULL;
+ spl->last->next = NULL;
+ }
+
+ if ( spl->spiro_cnt>2 ) {
+ for ( i=(spl->spiro_cnt-1)/2-1; i>=0; --i ) {
+ spiro_cp temp_cp = spl->spiros[i];
+ spl->spiros[i] = spl->spiros[spl->spiro_cnt-2-i];
+ spl->spiros[spl->spiro_cnt-2-i] = temp_cp;
+ }
+ if ( (spl->spiros[spl->spiro_cnt-2].ty&0x7f)==SPIRO_OPEN_CONTOUR ) {
+ spl->spiros[spl->spiro_cnt-2].ty = (spl->spiros[0].ty&0x7f) | (spl->spiros[spl->spiro_cnt-2].ty&0x80);
+ spl->spiros[0].ty = SPIRO_OPEN_CONTOUR | (spl->spiros[0].ty&0x80);
+ }
+ for ( i=spl->spiro_cnt-2; i>=0; --i ) {
+ if ( (spl->spiros[i].ty&0x7f) == SPIRO_LEFT )
+ spl->spiros[i].ty = SPIRO_RIGHT | (spl->spiros[i].ty&0x80);
+ else if ( (spl->spiros[i].ty&0x7f) == SPIRO_RIGHT )
+ spl->spiros[i].ty = SPIRO_LEFT | (spl->spiros[i].ty&0x80);
+ }
+ }
+return( spl );
+}
+
+#include "edgelist.h"
+
+int SplinePointListIsClockwise(const SplineSet *spl) {
+ EIList el;
+ EI *active=NULL, *apt, *pr, *e;
+ int i, winding,change,waschange, cnt;
+ SplineChar dummy;
+ SplineSet *next;
+ Layer layers[2];
+ int cw_cnt=0, ccw_cnt=0;
+
+ memset(&el,'\0',sizeof(el));
+ memset(&dummy,'\0',sizeof(dummy));
+ memset(layers,0,sizeof(layers));
+ el.layer = ly_fore;
+ dummy.layers = layers;
+ dummy.layer_cnt = 2;
+ dummy.layers[ly_fore].splines = (SplineSet *) spl;
+ dummy.name = "Clockwise Test";
+ next = spl->next; ((SplineSet *) spl)->next = NULL;
+ ELFindEdges(&dummy,&el);
+ if ( el.coordmax[1]-el.coordmin[1] > 1.e6 ) {
+ LogError( _("Warning: Unreasonably big splines. They will be ignored.\n") );
+ ((SplineSet *) spl)->next = next;
+return( -1 );
+ }
+ el.major = 1;
+ ELOrder(&el,el.major);
+
+ waschange = false;
+ for ( i=0; i<el.cnt ; ++i ) {
+ active = EIActiveEdgesRefigure(&el,active,i,1,&change);
+ for ( apt=active, cnt=0; apt!=NULL; apt = apt->aenext , ++cnt );
+ if ( el.ordered[i]!=NULL || el.ends[i] || cnt&1 ||
+ waschange || change ||
+ (i!=el.cnt-1 && (el.ends[i+1] || el.ordered[i+1])) ) {
+ waschange = change;
+ continue; /* Just too hard to get the edges sorted when we are at a start vertex */
+ }
+ waschange = change;
+ for ( apt=active; apt!=NULL; apt = e) {
+ if ( EISkipExtremum(apt,i+el.low,1)) {
+ e = apt->aenext->aenext;
+ continue;
+ }
+ if ( apt->up )
+ ++cw_cnt;
+ else
+ ++ccw_cnt;
+ if ( cw_cnt!=0 && ccw_cnt!=0 ) {
+ ((SplineSet *) spl)->next = next;
+return( -1 );
+ }
+ winding = apt->up?1:-1;
+ for ( pr=apt, e=apt->aenext; e!=NULL && winding!=0; pr=e, e=e->aenext ) {
+ if ( EISkipExtremum(e,i+el.low,1)) {
+ e = e->aenext;
+ continue;
+ }
+ if ( pr->up!=e->up ) {
+ if ( (winding<=0 && !e->up) || (winding>0 && e->up )) {
+/* return( -1 );*/ /* This is an erroneous condition... but I don't think*/
+ /* it can actually happen with a single contour. I */
+ /* think it is more likely this means a rounding error*/
+ /* and a problem in my algorithm */
+ fprintf( stderr, "SplinePointListIsClockwise: Found error\n" );
+ }
+ winding += (e->up?1:-1);
+ } else if ( EISameLine(pr,e,i+el.low,1) )
+ /* This just continues the line and doesn't change count */;
+ else {
+ if ( (winding<=0 && !e->up) || (winding>0 && e->up )) {
+ fprintf( stderr, "SplinePointListIsClockwise: Found error\n" );
+/*return( -1 );*/
+ }
+ winding += (e->up?1:-1);
+ }
+ }
+ }
+ }
+ free(el.ordered);
+ free(el.ends);
+ ElFreeEI(&el);
+ ((SplineSet *) spl)->next = next;
+
+ if ( cw_cnt!=0 )
+return( true );
+ else if ( ccw_cnt!=0 )
+return( false );
+
+return( -1 );
+}
+
+/* Since this function now deals with 4 arbitrarily selected points, */
+/* it has to try to combine them by different ways in order to see */
+/* if they actually can specify a diagonal stem. The reordered points */
+/* are placed back to array passed to the function.*/
+int PointsDiagonalable( SplineFont *sf,BasePoint **bp,BasePoint *unit ) {
+ BasePoint *line1[2], *line2[2], *temp, *base;
+ BasePoint unit1, unit2;
+ int i, j, k;
+ bigreal dist_error_diag, len1, len2, width, dot;
+ bigreal off1, off2;
+
+ for ( i=0; i<4; i++ ) {
+ if ( bp[i] == NULL )
+return( false );
+ }
+
+ dist_error_diag = 0.0065 * ( sf->ascent + sf->descent );
+ /* Assume that the first point passed to the function is the starting */
+ /* point of the first of two vectors. Then try all possible combinations */
+ /* (there are 3), ensure the vectors are consistantly ordered, and */
+ /* check if they are parallel.*/
+ base = bp[0];
+ for ( i=1; i<4; i++ ) {
+ line1[0] = base; line1[1] = bp[i];
+
+ k=0;
+ for ( j=1; j<4; j++ ) {
+ if ( j != i )
+ line2[k++] = bp[j];
+ }
+ unit1.x = line1[1]->x - line1[0]->x;
+ unit1.y = line1[1]->y - line1[0]->y;
+ unit2.x = line2[1]->x - line2[0]->x;
+ unit2.y = line2[1]->y - line2[0]->y;
+ /* No horizontal, vertical edges */
+ if ( unit1.x == 0 || unit1.y == 0 || unit2.x == 0 || unit2.y == 0 )
+ continue;
+ len1 = sqrt( pow( unit1.x,2 ) + pow( unit1.y,2 ));
+ len2 = sqrt( pow( unit2.x,2 ) + pow( unit2.y,2 ));
+ unit1.x /= len1; unit1.y /= len1;
+ unit2.x /= len2; unit2.y /= len2;
+ dot = unit1.x * unit2.y - unit1.y * unit2.x;
+ /* Units parallel */
+ if ( dot <= -.05 || dot >= .05 )
+ continue;
+ /* Ensure vectors point by such a way that the angle is between 90 and 270 degrees */
+ if ( unit1.x < 0 ) {
+ temp = line1[0]; line1[0] = line1[1]; line1[1] = temp;
+ unit1.x = -unit1.x; unit1.y = -unit1.y;
+ }
+ if ( unit2.x < 0 ) {
+ temp = line2[0]; line2[0] = line2[1]; line2[1] = temp;
+ unit2.x = -unit2.x; unit2.y = -unit2.y;
+ }
+ off1 = ( line1[1]->x - line1[0]->x ) * unit2.y -
+ ( line1[1]->y - line1[0]->y ) * unit2.x;
+ off2 = ( line2[1]->x - line2[0]->x ) * unit1.y -
+ ( line2[1]->y - line2[0]->y ) * unit1.x;
+ if ( len1 > len2 && fabs( off2 ) < 2*dist_error_diag ) *unit = unit1;
+ else if ( fabs( off1 ) < 2*dist_error_diag ) *unit = unit2;
+ else
+ continue;
+ width = ( line2[0]->x - line1[0]->x ) * unit->y -
+ ( line2[0]->y - line1[0]->y ) * unit->x;
+ /* Make sure this is a real line, rather than just two */
+ /* short spline segments which occasionally have happened to be */
+ /* parallel. This is necessary to correctly handle things which may */
+ /* be "diagonalable" in 2 different directions (like slash in some */
+ /* designs). */
+ if ( fabs( width ) > len1 || fabs( width ) > len2 )
+ continue;
+ /* Make sure line2 is further right than line1 */
+ if ( width < 0 ) {
+ temp = line1[0]; line1[0] = line2[0]; line2[0] = temp;
+ temp = line1[1]; line1[1] = line2[1]; line2[1] = temp;
+ }
+ bp[0] = line1[0];
+ bp[1] = line2[0];
+ bp[2] = line1[1];
+ bp[3] = line2[1];
+return( true );
+ }
+return( false );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/start.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/start.c
new file mode 100644
index 00000000000..2127d5c7614
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/start.c
@@ -0,0 +1,53 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h"
+
+#ifdef __Mac
+# include <stdlib.h> /* getenv,setenv */
+#endif
+
+#include "psfont.h"
+
+int32 unicode_from_adobestd[256];
+
+static void initadobeenc(void) {
+ int i,j;
+
+ for ( i=0; i<0x100; ++i ) {
+ if ( strcmp(AdobeStandardEncoding[i],".notdef")==0 )
+ unicode_from_adobestd[i] = 0xfffd;
+ else {
+ j = UniFromName(AdobeStandardEncoding[i],ui_none,&custom);
+ if ( j==-1 ) j = 0xfffd;
+ unicode_from_adobestd[i] = j;
+ }
+ }
+}
+
+void InitSimpleStuff(void) {
+ initadobeenc();
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/stemdb.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/stemdb.c
new file mode 100644
index 00000000000..bdded86c222
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/stemdb.c
@@ -0,0 +1,6068 @@
+/* Copyright (C) 2005-2012 by George Williams and Alexey Kryukov */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include "edgelist2.h"
+#include "stemdb.h"
+
+#include <math.h>
+#include <utype.h>
+
+#define GLYPH_DATA_DEBUG 0
+#define PI 3.14159265358979323846264338327
+
+/* A diagonal end is like the top or bottom of a slash. Should we add a vertical stem at the end? */
+/* A diagonal corner is like the bottom of circumflex. Should we add a horizontal stem? */
+int hint_diagonal_ends = 0,
+ hint_diagonal_intersections = 0,
+ hint_bounding_boxes = 1,
+ detect_diagonal_stems = 0;
+
+float stem_slope_error = .05061454830783555773, /* 2.9 degrees */
+ stub_slope_error = .317649923862967983; /* 18.2 degrees */
+
+static double dist_error_hv = 3.5;
+static double dist_error_diag = 5.5;
+/* It's easy to get horizontal/vertical lines aligned properly */
+/* it is more difficult to get diagonal ones done */
+/* The "A" glyph in Apple's Times.dfont(Roman) is off by 6 in one spot */
+static double dist_error_curve = 22;
+/* The maximum possible distance between the edge of an active zone for */
+/* a curved spline segment and the spline itself */
+
+struct st {
+ Spline *s;
+ double st, lt;
+};
+
+static int GetBlueFuzz(SplineFont *sf) {
+ char *str, *end;
+
+ if ( sf == NULL || sf->private == NULL ||
+ (str=PSDictHasEntry( sf->private,"BlueFuzz" )) == NULL || !isdigit( str[0] ))
+return 1;
+return strtod( str, &end );
+}
+
+static int IsUnitHV( BasePoint *unit,int strict ) {
+ double angle = atan2( unit->y,unit->x );
+ double deviation = ( strict ) ? stem_slope_error : stub_slope_error;
+
+ if ( fabs( angle ) >= PI/2 - deviation && fabs( angle ) <= PI/2 + deviation )
+return( 2 );
+ else if ( fabs( angle ) <= deviation || fabs( angle ) >= PI - deviation )
+return( 1 );
+
+return( 0 );
+}
+
+static int UnitCloserToHV( BasePoint *u1,BasePoint *u2 ) {
+ double adiff1, adiff2;
+
+ adiff1 = fabs( atan2( u1->y,u1->x ));
+ adiff2 = fabs( atan2( u2->y,u2->x ));
+
+ if ( adiff1 > PI*.25 && adiff1 < PI*.75 )
+ adiff1 = fabs( adiff1 - PI*.5 );
+ else if ( adiff1 >= PI*.75 )
+ adiff1 = PI - adiff1;
+
+ if ( adiff2 > PI*.25 && adiff2 < PI*.75 )
+ adiff2 = fabs( adiff2 - PI*.5 );
+ else if ( adiff2 >= PI*.75 )
+ adiff2 = PI - adiff2;
+
+ if ( adiff1 < adiff2 )
+return( 1 );
+ else if ( adiff1 > adiff2 )
+return( -1 );
+ else
+return( 0 );
+}
+
+static double GetUnitAngle( BasePoint *u1,BasePoint *u2 ) {
+ double dx, dy;
+
+ dy = u1->x*u2->y - u1->y*u2->x;
+ dx = u1->x*u2->x + u1->y*u2->y;
+return( atan2( dy,dx ));
+}
+
+static int UnitsOrthogonal( BasePoint *u1,BasePoint *u2,int strict ) {
+ double angle, deviation = ( strict ) ? stem_slope_error : stub_slope_error;
+
+ angle = GetUnitAngle( u1,u2 );
+
+return( fabs( angle ) >= PI/2 - deviation && fabs( angle ) <= PI/2 + deviation );
+}
+
+int UnitsParallel( BasePoint *u1,BasePoint *u2,int strict ) {
+ double angle, deviation = ( strict ) ? stem_slope_error : stub_slope_error;
+
+ angle = GetUnitAngle( u1,u2 );
+
+return( fabs( angle ) <= deviation || fabs( angle ) >= PI - deviation );
+}
+
+static int IsInflectionPoint( struct glyphdata *gd,struct pointdata *pd ) {
+ SplinePoint *sp = pd->sp;
+ double CURVATURE_THRESHOLD = 1e-9;
+ struct spline *prev, *next;
+ double in, out;
+
+ if ( sp->prev == NULL || sp->next == NULL || !pd->colinear )
+return( false );
+
+ /* point of a single-point contour can't be an inflection point. */
+ if ( sp->prev->from == sp )
+return( false );
+
+ prev = sp->prev;
+ in = 0;
+ while ( prev != NULL && fabs(in) < CURVATURE_THRESHOLD ) {
+ in = SplineCurvature( prev,1 );
+ if ( fabs( in ) < CURVATURE_THRESHOLD ) in = SplineCurvature( prev, 0 );
+ if ( fabs( in ) < CURVATURE_THRESHOLD ) prev = prev->from->prev;
+ if ( gd->points[prev->to->ptindex].colinear )
+ break;
+ }
+
+ next = sp->next;
+ out = 0;
+ while ( next != NULL && fabs( out ) < CURVATURE_THRESHOLD ) {
+ out = SplineCurvature( next,0 );
+ if ( fabs( out ) < CURVATURE_THRESHOLD ) out = SplineCurvature( next, 1 );
+ if ( fabs( out ) < CURVATURE_THRESHOLD ) next = next->to->next;
+ if ( gd->points[next->from->ptindex].colinear )
+ break;
+ }
+
+ if ( in==0 || out==0 || ( prev != sp->prev && next != sp->next ))
+return( false );
+
+ in/=fabs(in);
+ out/=fabs(out);
+
+return ( in*out < 0 );
+}
+
+static int SplineFigureOpticalSlope(Spline *s,int start_at_from,BasePoint *dir) {
+ /* Sometimes splines have tiny control points, and to the eye the slope */
+ /* of the spline has nothing to do with that specified by the cps. */
+ /* So see if the spline is straightish and figure the slope based on */
+ /* some average direction */
+ /* dir is a input output parameter. */
+ /* it should be initialized to the unit vector determined by the appropriate cp */
+ /* if the function returns true, it will be set to a unit vector in the average direction */
+ BasePoint pos, *base, average_dir, normal;
+ double t, len, incr, off;
+ double dx, dy, ax, ay, d, a;
+
+ /* The vector is already nearly vertical/horizontal, no need to modify*/
+ if ( IsUnitHV( dir,true ))
+return( false );
+
+ if ( start_at_from ) {
+ incr = -.1;
+ base = &s->from->me;
+ } else {
+ incr = .1;
+ base = &s->to->me;
+ }
+
+ t = .5-incr;
+ memset(&average_dir,0,sizeof(average_dir));
+ while ( t>0 && t<1.0 ) {
+ pos.x = ((s->splines[0].a*t+s->splines[0].b)*t+s->splines[0].c)*t+s->splines[0].d;
+ pos.y = ((s->splines[1].a*t+s->splines[1].b)*t+s->splines[1].c)*t+s->splines[1].d;
+
+ average_dir.x += (pos.x-base->x); average_dir.y += (pos.y-base->y);
+ t += incr;
+ }
+
+ len = sqrt( pow( average_dir.x,2 ) + pow( average_dir.y,2 ));
+ if ( len==0 )
+return( false );
+ average_dir.x /= len; average_dir.y /= len;
+ normal.x = average_dir.y; normal.y = - average_dir.x;
+
+ t = .5-incr;
+ while ( t>0 && t<1.0 ) {
+ pos.x = ((s->splines[0].a*t+s->splines[0].b)*t+s->splines[0].c)*t+s->splines[0].d;
+ pos.y = ((s->splines[1].a*t+s->splines[1].b)*t+s->splines[1].c)*t+s->splines[1].d;
+ off = (pos.x-base->x)*normal.x + (pos.y-base->y)*normal.y;
+ if ( off<-dist_error_hv || off>dist_error_hv )
+return( false );
+ t += incr;
+ }
+
+ if ( UnitsParallel( dir,&normal,true )) {
+ /* prefer the direction which is closer to horizontal/vertical */
+ if ( (dx=dir->x)<0 ) dx = -dx;
+ if ( (dy=dir->y)<0 ) dy = -dy;
+ d = (dx<dy) ? dx : dy;
+ if ( (ax=average_dir.x)<0 ) ax = -ax;
+ if ( (ay=average_dir.y)<0 ) ay = -ay;
+ a = (ax<ay) ? ax : ay;
+ if ( d<a )
+return( false );
+ }
+
+ *dir = average_dir;
+return( true );
+}
+
+static int IsSplinePeak( struct glyphdata *gd,struct pointdata *pd,int outer,int is_x,int flags );
+
+static void PointInit( struct glyphdata *gd,SplinePoint *sp, SplineSet *ss ) {
+ struct pointdata *pd, *prevpd=NULL, *nextpd=NULL;
+ double len, same;
+ int hv;
+
+ if ( sp->ptindex >= gd->pcnt )
+return;
+ pd = &gd->points[sp->ptindex];
+ pd->sp = sp;
+ pd->ss = ss;
+ pd->x_extr = pd->y_extr = 0;
+ pd->base = sp->me;
+ pd->ttfindex = sp->ttfindex;
+ pd->nextcnt = pd->prevcnt = 0;
+ pd->nextstems = pd->prevstems = NULL;
+ pd->next_is_l = pd->prev_is_l = NULL;
+
+ if ( !sp->nonextcp && gd->order2 && sp->nextcpindex < gd->realcnt ) {
+
+ nextpd = &gd->points[sp->nextcpindex];
+ nextpd->ss = ss;
+ nextpd->x_extr = nextpd->y_extr = 0;
+ nextpd->base = sp->nextcp;
+ nextpd->ttfindex = sp->nextcpindex;
+ }
+ if ( !sp->noprevcp && gd->order2 && sp->prev != NULL &&
+ sp->prev->from->nextcpindex < gd->realcnt ) {
+
+ nextpd = &gd->points[sp->prev->from->nextcpindex];
+ nextpd->ss = ss;
+ nextpd->x_extr = nextpd->y_extr = 0;
+ nextpd->base = sp->prevcp;
+ nextpd->ttfindex = sp->prev->from->nextcpindex;
+ }
+
+ if ( sp->next==NULL ) {
+ pd->nextunit.x = ss->first->me.x - sp->me.x;
+ pd->nextunit.y = ss->first->me.y - sp->me.y;
+ pd->nextlinear = true;
+ } else if ( sp->next->knownlinear ) {
+ pd->nextunit.x = sp->next->to->me.x - sp->me.x;
+ pd->nextunit.y = sp->next->to->me.y - sp->me.y;
+ pd->nextlinear = true;
+ } else if ( sp->nonextcp ) {
+ pd->nextunit.x = sp->next->to->prevcp.x - sp->me.x;
+ pd->nextunit.y = sp->next->to->prevcp.y - sp->me.y;
+ } else {
+ pd->nextunit.x = sp->nextcp.x - sp->me.x;
+ pd->nextunit.y = sp->nextcp.y - sp->me.y;
+ }
+ len = sqrt( pow( pd->nextunit.x,2 ) + pow( pd->nextunit.y,2 ));
+ if ( len==0 )
+ pd->nextzero = true;
+ else {
+ pd->nextlen = len;
+ pd->nextunit.x /= len;
+ pd->nextunit.y /= len;
+ if ( sp->next!=NULL && !sp->next->knownlinear )
+ SplineFigureOpticalSlope(sp->next,true,&pd->nextunit);
+ hv = IsUnitHV( &pd->nextunit,true );
+ if ( hv == 2 ) {
+ pd->nextunit.x = 0; pd->nextunit.y = pd->nextunit.y>0 ? 1 : -1;
+ } else if ( hv == 1 ) {
+ pd->nextunit.y = 0; pd->nextunit.x = pd->nextunit.x>0 ? 1 : -1;
+ }
+ if ( pd->nextunit.y==0 ) pd->next_hor = true;
+ else if ( pd->nextunit.x==0 ) pd->next_ver = true;
+
+ if ( nextpd != NULL ) {
+ nextpd->prevunit.x = -pd->nextunit.x;
+ nextpd->prevunit.y = -pd->nextunit.y;
+ }
+ }
+
+ if ( sp->prev==NULL ) {
+ pd->prevunit.x = ss->last->me.x - sp->me.x;
+ pd->prevunit.y = ss->last->me.y - sp->me.y;
+ pd->prevlinear = true;
+ } else if ( sp->prev->knownlinear ) {
+ pd->prevunit.x = sp->prev->from->me.x - sp->me.x;
+ pd->prevunit.y = sp->prev->from->me.y - sp->me.y;
+ pd->prevlinear = true;
+ } else if ( sp->noprevcp ) {
+ pd->prevunit.x = sp->prev->from->nextcp.x - sp->me.x;
+ pd->prevunit.y = sp->prev->from->nextcp.y - sp->me.y;
+ } else {
+ pd->prevunit.x = sp->prevcp.x - sp->me.x;
+ pd->prevunit.y = sp->prevcp.y - sp->me.y;
+ }
+ len = sqrt( pow( pd->prevunit.x,2 ) + pow( pd->prevunit.y,2 ));
+ if ( len==0 )
+ pd->prevzero = true;
+ else {
+ pd->prevlen = len;
+ pd->prevunit.x /= len;
+ pd->prevunit.y /= len;
+ if ( sp->prev!=NULL && !sp->prev->knownlinear )
+ SplineFigureOpticalSlope(sp->prev,false,&pd->prevunit);
+ hv = IsUnitHV( &pd->prevunit,true );
+ if ( hv == 2 ) {
+ pd->prevunit.x = 0; pd->prevunit.y = pd->prevunit.y>0 ? 1 : -1;
+ } else if ( hv == 1 ) {
+ pd->prevunit.y = 0; pd->prevunit.x = pd->prevunit.x>0 ? 1 : -1;
+ }
+ if ( pd->prevunit.y==0 ) pd->prev_hor = true;
+ else if ( pd->prevunit.x==0 ) pd->prev_ver = true;
+
+ if ( prevpd != NULL ) {
+ prevpd->nextunit.x = -pd->prevunit.x;
+ prevpd->nextunit.y = -pd->prevunit.y;
+ }
+ }
+ {
+ same = pd->prevunit.x*pd->nextunit.x + pd->prevunit.y*pd->nextunit.y;
+ if ( same<-.95 )
+ pd->colinear = true;
+ }
+ if (( pd->prev_hor || pd->next_hor ) && pd->colinear ) {
+ if ( IsSplinePeak( gd,pd,false,false,1 )) pd->y_extr = 1;
+ else if ( IsSplinePeak( gd,pd,true,false,1 )) pd->y_extr = 2;
+ } else if (( pd->prev_ver || pd->next_ver ) && pd->colinear ) {
+ if ( IsSplinePeak( gd,pd,true,true,1 )) pd->x_extr = 1;
+ else if ( IsSplinePeak( gd,pd,false,true,1 )) pd->x_extr = 2;
+ } else {
+ if (( pd->nextunit.y < 0 && pd->prevunit.y < 0 ) || ( pd->nextunit.y > 0 && pd->prevunit.y > 0 )) {
+ if ( IsSplinePeak( gd,pd,false,false,2 )) pd->y_corner = 1;
+ else if ( IsSplinePeak( gd,pd,true,false,2 )) pd->y_corner = 2;
+ }
+ if (( pd->nextunit.x < 0 && pd->prevunit.x < 0 ) || ( pd->nextunit.x > 0 && pd->prevunit.x > 0 )) {
+ if ( IsSplinePeak( gd,pd,true,true,2 )) pd->x_corner = 1;
+ else if ( IsSplinePeak( gd,pd,false,true,2 )) pd->x_corner = 2;
+ }
+ }
+ if ( hint_diagonal_intersections ) {
+ if (( pd->y_corner || pd->y_extr ) &&
+ RealNear( pd->nextunit.x,-pd->prevunit.x ) &&
+ RealNear( pd->nextunit.y,pd->prevunit.y ) && !pd->nextzero)
+ pd->symetrical_h = true;
+ else if (( pd->x_corner || pd->x_extr ) &&
+ RealNear( pd->nextunit.y,-pd->prevunit.y ) &&
+ RealNear( pd->nextunit.x,pd->prevunit.x ) && !pd->nextzero)
+ pd->symetrical_v = true;
+ }
+}
+
+static int BBoxIntersectsLine(Spline *s,Spline *line) {
+ double t,x,y;
+ DBounds b;
+
+ b.minx = b.maxx = s->from->me.x;
+ b.miny = b.maxy = s->from->me.y;
+ if ( s->to->me.x<b.minx ) b.minx = s->to->me.x;
+ else if ( s->to->me.x>b.maxx ) b.maxx = s->to->me.x;
+ if ( s->to->me.y<b.miny ) b.miny = s->to->me.y;
+ else if ( s->to->me.y>b.maxy ) b.maxy = s->to->me.y;
+ if ( s->to->prevcp.x<b.minx ) b.minx = s->to->prevcp.x;
+ else if ( s->to->prevcp.x>b.maxx ) b.maxx = s->to->prevcp.x;
+ if ( s->to->prevcp.y<b.miny ) b.miny = s->to->prevcp.y;
+ else if ( s->to->prevcp.y>b.maxy ) b.maxy = s->to->prevcp.y;
+ if ( s->from->nextcp.x<b.minx ) b.minx = s->from->nextcp.x;
+ else if ( s->from->nextcp.x>b.maxx ) b.maxx = s->from->nextcp.x;
+ if ( s->from->nextcp.y<b.miny ) b.miny = s->from->nextcp.y;
+ else if ( s->from->nextcp.y>b.maxy ) b.maxy = s->from->nextcp.y;
+
+ if ( line->splines[0].c!=0 ) {
+ t = (b.minx-line->splines[0].d)/line->splines[0].c;
+ y = line->splines[1].c*t+line->splines[1].d;
+ if ( y>=b.miny && y<=b.maxy )
+return( true );
+ t = (b.maxx-line->splines[0].d)/line->splines[0].c;
+ y = line->splines[1].c*t+line->splines[1].d;
+ if ( y>=b.miny && y<=b.maxy )
+return( true );
+ }
+ if ( line->splines[1].c!=0 ) {
+ t = (b.miny-line->splines[1].d)/line->splines[1].c;
+ x = line->splines[0].c*t+line->splines[0].d;
+ if ( x>=b.minx && x<=b.maxx )
+return( true );
+ t = (b.maxy-line->splines[1].d)/line->splines[1].c;
+ x = line->splines[0].c*t+line->splines[0].d;
+ if ( x>=b.minx && x<=b.maxx )
+return( true );
+ }
+return( false );
+}
+
+static int stcmp(const void *_p1, const void *_p2) {
+ const struct st *stpt1 = _p1, *stpt2 = _p2;
+ if ( stpt1->lt>stpt2->lt )
+return( 1 );
+ else if ( stpt1->lt<stpt2->lt )
+return( -1 );
+
+return( 0 );
+}
+
+static int line_pt_cmp( const void *_p1, const void *_p2 ) {
+ struct pointdata * const *pd1 = _p1, * const *pd2 = _p2;
+ struct linedata *line;
+ double ppos1=0,ppos2=0;
+
+ if ( (*pd1)->prevline != NULL &&
+ ( (*pd1)->prevline == (*pd2)->prevline || (*pd1)->prevline == (*pd2)->nextline ))
+ line = (*pd1)->prevline;
+ else if ( (*pd1)->nextline != NULL &&
+ ( (*pd1)->nextline == (*pd2)->prevline || (*pd1)->nextline == (*pd2)->nextline ))
+ line = (*pd1)->nextline;
+ else
+return( 0 );
+
+ ppos1 = ( (*pd1)->sp->me.x - line->online.x ) * line->unit.x +
+ ( (*pd1)->sp->me.y - line->online.y ) * line->unit.y;
+ ppos2 = ( (*pd2)->sp->me.x - line->online.x ) * line->unit.x +
+ ( (*pd2)->sp->me.y - line->online.y ) * line->unit.y;
+
+ if ( ppos1>ppos2 )
+return( 1 );
+ else if ( ppos1<ppos2 )
+return( -1 );
+ else
+return( 0 );
+}
+
+static int segment_cmp(const void *_s1, const void *_s2) {
+ const struct segment *s1 = _s1, *s2 = _s2;
+ if ( s1->start<s2->start )
+return( -1 );
+ else if ( s1->start>s2->start )
+return( 1 );
+
+return( 0 );
+}
+
+static int proj_cmp(const void *_p1, const void *_p2) {
+ struct pointdata * const *p1 = _p1, * const *p2 = _p2;
+ if ( (*p1)->projection<(*p2)->projection )
+return( -1 );
+ else if ( (*p1)->projection>(*p2)->projection )
+return( 1 );
+
+return( 0 );
+}
+
+static void AssignStemToPoint( struct pointdata *pd,struct stemdata *stem,int is_next, int left ) {
+ struct stemdata ***stems;
+ int i, *stemcnt, **is_l;
+
+ stems = ( is_next ) ? &pd->nextstems : &pd->prevstems;
+ stemcnt = ( is_next ) ? &pd->nextcnt : &pd->prevcnt;
+ is_l = ( is_next ) ? &pd->next_is_l : &pd->prev_is_l;
+ for ( i=0; i<*stemcnt; i++ ) {
+ if ((*stems)[i] == stem )
+return;
+ }
+
+ *stems = realloc( *stems,( *stemcnt+1 )*sizeof( struct stemdata *));
+ *is_l = realloc( *is_l, ( *stemcnt+1 )*sizeof( int ));
+ (*stems)[*stemcnt] = stem;
+ (*is_l )[*stemcnt] = left;
+ (*stemcnt)++;
+}
+
+int IsStemAssignedToPoint( struct pointdata *pd,struct stemdata *stem,int is_next ) {
+ struct stemdata **stems;
+ int i, stemcnt;
+
+ stems = ( is_next ) ? pd->nextstems : pd->prevstems;
+ stemcnt = ( is_next ) ? pd->nextcnt : pd->prevcnt;
+
+ for ( i=0; i<stemcnt; i++ ) {
+ if ( stems[i] == stem )
+return( i );
+ }
+return( -1 );
+}
+
+static int GetValidPointDataIndex( struct glyphdata *gd,SplinePoint *sp,
+ struct stemdata *stem ) {
+
+ struct pointdata *tpd;
+
+ if ( sp == NULL )
+return( -1 );
+ if ( sp->ttfindex < gd->realcnt )
+return( sp->ttfindex );
+ if ( !sp->nonextcp && sp->nextcpindex < gd->realcnt ) {
+ tpd = &gd->points[sp->nextcpindex];
+ if ( IsStemAssignedToPoint( tpd,stem,false ) != -1 )
+return( sp->nextcpindex );
+ }
+ if ( !sp->noprevcp && sp->prev != NULL &&
+ sp->prev->from->nextcpindex < gd->realcnt ) {
+ tpd = &gd->points[sp->prev->from->nextcpindex];
+ if ( IsStemAssignedToPoint( tpd,stem,true ) != -1 )
+return( sp->prev->from->nextcpindex );
+ }
+return( -1 );
+}
+
+static int LineType(struct st *st,int i, int cnt,Spline *line) {
+ SplinePoint *sp;
+ BasePoint nextcp, prevcp, here;
+ double dn, dp;
+
+ if ( st[i].st>.01 && st[i].st<.99 )
+return( 0 ); /* Not near an end-point, just a normal line */
+ if ( i+1>=cnt )
+return( 0 ); /* No following spline */
+ if ( st[i+1].st>.01 && st[i+1].st<.99 )
+return( 0 ); /* Following spline not near an end-point, can't */
+ /* match to this one, just a normal line */
+ if ( st[i].st<.5 && st[i+1].st>.5 ) {
+ if ( st[i+1].s->to->next!=st[i].s )
+return( 0 );
+ sp = st[i].s->from;
+ } else if ( st[i].st>.5 && st[i+1].st<.5 ) {
+ if ( st[i].s->to->next!=st[i+1].s )
+return( 0 );
+ sp = st[i].s->to;
+ } else
+return( 0 );
+
+ if ( !sp->nonextcp )
+ nextcp = sp->nextcp;
+ else
+ nextcp = sp->next->to->me;
+ if ( !sp->noprevcp )
+ prevcp = sp->prevcp;
+ else
+ prevcp = sp->prev->from->me;
+ here.x = line->splines[0].c*(st[i].st+st[i+1].st)/2 + line->splines[0].d;
+ here.y = line->splines[1].c*(st[i].st+st[i+1].st)/2 + line->splines[1].d;
+
+ nextcp.x -= here.x; nextcp.y -= here.y;
+ prevcp.x -= here.x; prevcp.y -= here.y;
+
+ dn = nextcp.x*line->splines[1].c - nextcp.y*line->splines[0].c;
+ dp = prevcp.x*line->splines[1].c - prevcp.y*line->splines[0].c;
+ if ( dn*dp<0 ) /* splines away move on opposite sides of the line */
+return( 1 ); /* Treat this line and the next as one */
+ /* We assume that a rounding error gave us one erroneous intersection (or we went directly through the endpoint) */
+ else
+return( 2 ); /* Ignore both this line and the next */
+ /* Intersects both in a normal fashion */
+}
+
+static int MonotonicOrder(Spline **sspace,Spline *line,struct st *stspace) {
+ Spline *s;
+ int i,j,k,cnt;
+ BasePoint pts[9];
+ extended lts[10], sts[10];
+
+ for ( i=j=0; (s=sspace[j])!=NULL; ++j ) {
+ if ( BBoxIntersectsLine(s,line) ) {
+ /* Lines parallel to the direction we are testing just get in the */
+ /* way and don't add any useful info */
+ if ( s->islinear &&
+ RealNear(line->splines[0].c*s->splines[1].c,
+ line->splines[1].c*s->splines[0].c))
+ continue;
+ if ( SplinesIntersect(line,s,pts,lts,sts)<=0 )
+ continue;
+ for ( k=0; sts[k]!=-1; ++k ) {
+ if ( sts[k]>=0 && sts[k]<=1 ) {
+ stspace[i].s = s;
+ stspace[i].lt = lts[k];
+ stspace[i++].st = sts[k];
+ }
+ }
+ }
+ }
+ stspace[i].s = NULL;
+ cnt = i;
+ qsort(stspace,cnt,sizeof(struct st),stcmp);
+return( cnt );
+}
+
+static Spline *MonotonicFindAlong(Spline *line,struct st *stspace,int cnt,
+ Spline *findme, double *other_t) {
+ Spline *s;
+ int i;
+ int eo; /* I do horizontal/vertical by winding number */
+ /* But figuring winding number with respect to a */
+ /* diagonal line is hard. So I use even-odd */
+ /* instead. */
+
+ eo = 0;
+ for ( i=0; i<cnt; ++i ) {
+ s = stspace[i].s;
+ if ( s==findme ) {
+ if ( (eo&1) && i>0 ) {
+ *other_t = stspace[i-1].st;
+return( stspace[i-1].s );
+ } else if ( !(eo&1) && i+1<cnt ) {
+ *other_t = stspace[i+1].st;
+return( stspace[i+1].s );
+ }
+ fprintf( stderr, "MonotonicFindAlong: Ran out of intersections.\n" );
+return( NULL );
+ }
+ if ( i+1<cnt && stspace[i+1].s==findme )
+ ++eo;
+ else switch ( LineType(stspace,i,cnt,line) ) {
+ case 0: /* Normal spline */
+ ++eo;
+ break;
+ case 1: /* Intersects at end-point & next entry is other side */
+ ++eo; /* And the two sides continue in approximately the */
+ ++i; /* same direction */
+ break;
+ case 2: /* Intersects at end-point & next entry is other side */
+ ++i; /* And the two sides go in opposite directions */
+ break;
+ default:
+ break;
+}
+ }
+ fprintf( stderr, "MonotonicFindAlong: Never found our spline.\n" );
+return( NULL );
+}
+
+static int MonotonicFindStemBounds(Spline *line,struct st *stspace,int cnt,
+ double fudge,struct stemdata *stem ) {
+ int i,j;
+ int eo; /* I do horizontal/vertical by winding number */
+ /* But figuring winding number with respect to a */
+ /* diagonal line is hard. So I use even-odd */
+ /* instead. */
+ double pos, npos;
+ double lmin = ( stem->lmin < -fudge ) ? stem->lmin : -fudge;
+ double lmax = ( stem->lmax > fudge ) ? stem->lmax : fudge;
+ double rmin = ( stem->rmin < -fudge ) ? stem->rmin : -fudge;
+ double rmax = ( stem->rmax > fudge ) ? stem->rmax : fudge;
+ lmin -= .0001; lmax += .0001; rmin -= .0001; rmax += .0001;
+
+ eo = 0;
+ for ( i=0; i<cnt; ++i ) {
+ pos = (line->splines[0].c*stspace[i].lt + line->splines[0].d - stem->left.x)*stem->l_to_r.x +
+ (line->splines[1].c*stspace[i].lt + line->splines[1].d - stem->left.y)*stem->l_to_r.y;
+ npos = 1e4;
+ if ( i+1<cnt )
+ npos = (line->splines[0].c*stspace[i+1].lt + line->splines[0].d - stem->left.x)*stem->l_to_r.x +
+ (line->splines[1].c*stspace[i+1].lt + line->splines[1].d - stem->left.y)*stem->l_to_r.y;
+
+ if ( pos>=lmin && pos<=lmax ) {
+ if ( (eo&1) && i>0 )
+ j = i-1;
+ else if ( !(eo&1) && i+1<cnt )
+ j = i+1;
+ else
+return( false );
+ pos = (line->splines[0].c*stspace[j].lt + line->splines[0].d - stem->right.x)*stem->l_to_r.x +
+ (line->splines[1].c*stspace[j].lt + line->splines[1].d - stem->right.y)*stem->l_to_r.y;
+ if ( pos >= rmin && pos <= rmax )
+return( true );
+ }
+ if ( i+1 < cnt && npos >= lmin && npos <= lmax )
+ ++eo;
+ else switch ( LineType(stspace,i,cnt,line) ) {
+ case 0: /* Normal spline */
+ ++eo;
+ break;
+ case 1: /* Intersects at end-point & next entry is other side */
+ ++eo; /* And the two sides continue in approximately the */
+ ++i; /* same direction */
+ break;
+ case 2: /* Intersects at end-point & next entry is other side */
+ ++i; /* And the two sides go in opposite directions */
+ break;
+ default:
+ break;
+ }
+ }
+return( false );
+}
+
+static int MatchWinding(struct monotonic ** space,int i,int nw,int winding,int which,int idx) {
+ struct monotonic *m;
+ int j,cnt=0;
+
+ if (( nw<0 && winding>0 ) || (nw>0 && winding<0)) {
+ winding = nw;
+ for ( j=i-1; j>=0; --j ) {
+ m = space[j];
+ winding += ((&m->xup)[which] ? 1 : -1 );
+ if ( winding==0 ) {
+ if ( cnt == idx )
+return( j );
+ cnt++;
+ }
+ }
+ } else {
+ winding = nw;
+ for ( j=i+1; space[j]!=NULL; ++j ) {
+ m = space[j];
+ winding += ((&m->xup)[which] ? 1 : -1 );
+ if ( winding==0 ) {
+ if ( cnt == idx )
+return( j );
+ cnt++;
+ }
+ }
+ }
+return( -1 );
+}
+
+static int FindMatchingHVEdge( struct glyphdata *gd,struct pointdata *pd,
+ int is_next,Spline **edges,double *other_t,double *dist ) {
+
+ double test, t, start, end;
+ int which;
+ Spline *s;
+ Monotonic *m;
+ int winding, nw, i, j, ret=0;
+ struct monotonic **space;
+ BasePoint *dir, d, hv;
+
+ /* Things are difficult if we go exactly through the point. Move off */
+ /* to the side a tiny bit and hope that doesn't matter */
+ if ( is_next==2 ) {
+ /* Consider the case of the bottom of the circumflex (or a chevron) */
+ /* Think of it as a flattend breve. It is symetrical and we want to */
+ /* note the vertical distance between the two points that define */
+ /* the bottom, so treat them as a funky stem */
+ /* \ \ / / */
+ /* \ \ / / */
+ /* \ \ / / */
+ /* \ + / */
+ /* \ / */
+ /* + */
+ hv.x = pd->symetrical_h ? 1.0 : 0.0;
+ hv.y = pd->symetrical_v ? 1.0 : 0.0;
+ dir = &hv;
+ t = .001;
+ s = pd->sp->next; /* Could just as easily be prev */
+ } else if ( is_next ) {
+ s = pd->sp->next;
+ t = .001;
+ dir = &pd->nextunit;
+ } else {
+ s = pd->sp->prev;
+ t = .999;
+ dir = &pd->prevunit;
+ }
+ if (( d.x = dir->x )<0 ) d.x = -d.x;
+ if (( d.y = dir->y )<0 ) d.y = -d.y;
+ which = d.x<d.y; /* closer to vertical */
+
+ if ( s==NULL ) /* Somehow we got an open contour? */
+return( 0 );
+
+ test = ((s->splines[which].a*t+s->splines[which].b)*t+s->splines[which].c)*t+s->splines[which].d;
+ MonotonicFindAt(gd->ms,which,test,space = gd->space);
+
+ winding = 0;
+ for ( i=0; space[i]!=NULL; ++i ) {
+ m = space[i];
+ nw = ((&m->xup)[which] ? 1 : -1 );
+ if ( m->s == s && t>=m->tstart && t<=m->tend ) {
+ start = m->other;
+ break;
+ }
+ winding += nw;
+ }
+ if ( space[i]==NULL ) {
+ fprintf( stderr, "FindMatchinHVEdge didn't\n" );
+return( 0 );
+ }
+
+ j = MatchWinding(space,i,nw,winding,which,0);
+ if ( j!=-1 ) {
+ other_t[0] = space[j]->t;
+ end = space[j]->other;
+ dist[0] = end - start;
+ if ( dist[0] < 0 ) dist[0] = -dist[0];
+ edges[0] = space[j]->s;
+ ret++;
+ }
+ if ( ret > 0 && is_next != 2 && ( pd->x_extr == 1 || pd->y_extr == 1 )) {
+ j = MatchWinding(space,i,nw,winding,which,1);
+ if ( j!=-1 ) {
+ other_t[ret] = space[j]->t;
+ end = space[j]->other;
+ dist[ret] = end - start;
+ if ( dist[ret] < 0 ) dist[ret] = -dist[ret];
+ edges[ret] = space[j]->s;
+ ret++;
+ }
+ }
+return( ret );
+}
+
+static BasePoint PerturbAlongSpline( Spline *s,BasePoint *bp,double t ) {
+ BasePoint perturbed;
+
+ for (;;) {
+ perturbed.x = ((s->splines[0].a*t+s->splines[0].b)*t+s->splines[0].c)*t+s->splines[0].d;
+ perturbed.y = ((s->splines[1].a*t+s->splines[1].b)*t+s->splines[1].c)*t+s->splines[1].d;
+ if ( !RealWithin( perturbed.x,bp->x,.01 ) || !RealWithin( perturbed.y,bp->y,.01 ))
+ break;
+ if ( t<.5 ) {
+ t *= 2;
+ if ( t>.5 )
+ break;
+ } else {
+ t = 1- 2*(1-t);
+ if ( t<.5 )
+ break;
+ }
+ }
+return( perturbed );
+}
+
+static void MakeVirtualLine(struct glyphdata *gd,BasePoint *perturbed,
+ BasePoint *dir,Spline *myline,SplinePoint *end1, SplinePoint *end2) {
+
+ BasePoint norm, absnorm;
+ SplineSet *spl;
+ Spline *s, *first;
+ double t1, t2;
+ int i, cnt;
+
+ if ( gd->stspace==NULL ) {
+ for ( i=0; i<2; ++i ) {
+ cnt = 0;
+ for ( spl=gd->sc->layers[gd->layer].splines; spl!=NULL; spl=spl->next ) {
+ first = NULL;
+ if ( spl->first->prev!=NULL ) {
+ for ( s=spl->first->next; s!=first; s=s->to->next ) {
+ if ( first==NULL ) first = s;
+ if ( i )
+ gd->sspace[cnt] = s;
+ ++cnt;
+ }
+ }
+ }
+ if ( !i ) {
+ gd->scnt = cnt;
+ gd->sspace = malloc((cnt+1)*sizeof(Spline *));
+ } else
+ gd->sspace[cnt] = NULL;
+ }
+ gd->stspace = malloc((3*cnt+2)*sizeof(struct st));
+ SplineCharFindBounds(gd->sc,&gd->size);
+ gd->size.minx -= 10; gd->size.miny -= 10;
+ gd->size.maxx += 10; gd->size.maxy += 10;
+ }
+
+ norm.x = -dir->y;
+ norm.y = dir->x;
+ absnorm = norm;
+ if ( absnorm.x<0 ) absnorm.x = -absnorm.x;
+ if ( absnorm.y<0 ) absnorm.y = -absnorm.y;
+
+ memset(myline,0,sizeof(*myline));
+ memset(end1,0,sizeof(*end1));
+ memset(end2,0,sizeof(*end2));
+ myline->knownlinear = myline->islinear = true;
+
+ if ( absnorm.x > absnorm.y ) {
+ /* Greater change in x than in y */
+ t1 = (gd->size.minx-perturbed->x)/norm.x;
+ t2 = (gd->size.maxx-perturbed->x)/norm.x;
+ myline->splines[0].d = gd->size.minx;
+ myline->splines[0].c = gd->size.maxx-gd->size.minx;
+ myline->splines[1].d = perturbed->y+t1*norm.y;
+ myline->splines[1].c = (t2-t1)*norm.y;
+ } else {
+ t1 = (gd->size.miny-perturbed->y)/norm.y;
+ t2 = (gd->size.maxy-perturbed->y)/norm.y;
+ myline->splines[1].d = gd->size.miny;
+ myline->splines[1].c = gd->size.maxy-gd->size.miny;
+ myline->splines[0].d = perturbed->x+t1*norm.x;
+ myline->splines[0].c = (t2-t1)*norm.x;
+ }
+ end1->me.x = myline->splines[0].d;
+ end2->me.x = myline->splines[0].d + myline->splines[0].c;
+ end1->me.y = myline->splines[1].d;
+ end2->me.y = myline->splines[1].d + myline->splines[1].c;
+ end1->nextcp = end1->prevcp = end1->me;
+ end2->nextcp = end2->prevcp = end2->me;
+ end1->nonextcp = end1->noprevcp = end2->nonextcp = end2->noprevcp = true;
+ end1->next = myline; end2->prev = myline;
+ myline->from = end1; myline->to = end2;
+}
+
+static int FindMatchingEdge( struct glyphdata *gd, struct pointdata *pd,
+ int is_next,Spline **edges ) {
+
+ BasePoint *dir, vert, perturbed, diff;
+ Spline myline;
+ SplinePoint end1, end2;
+ double *other_t = is_next==2 ? &pd->both_e_t : is_next ? pd->next_e_t : pd->prev_e_t;
+ double *dist = is_next ? pd->next_dist : pd->prev_dist;
+ double t ;
+ Spline *s;
+ int cnt;
+
+ dist[0] = 0; dist[1] = 0;
+ if (( is_next && ( pd->next_hor || pd->next_ver )) ||
+ ( !is_next && ( pd->prev_hor || pd->prev_ver )) ||
+ is_next == 2 )
+return( FindMatchingHVEdge(gd,pd,is_next,edges,other_t,dist));
+
+ if ( is_next ) {
+ dir = &pd->nextunit;
+ t = .001;
+ s = pd->sp->next;
+ } else {
+ dir = &pd->prevunit;
+ t = .999;
+ s = pd->sp->prev;
+ }
+ /* For spline segments which have slope close enough to the font's italic */
+ /* slant look for an opposite edge along the horizontal direction, rather */
+ /* than along the normal for the point's next/previous unit. This allows */
+ /* us e. g. to detect serifs in italic fonts */
+ if ( gd->has_slant ) {
+ if ( UnitsParallel( dir,&gd->slant_unit,true )) {
+ vert.x = 0; vert.y = 1;
+ dir = &vert;
+ }
+ }
+
+ if ( s==NULL || ( gd->only_hv && !IsUnitHV( dir,false )))
+return( 0 );
+
+ diff.x = s->to->me.x-s->from->me.x; diff.y = s->to->me.y-s->from->me.y;
+ if ( diff.x<.03 && diff.x>-.03 && diff.y<.03 && diff.y>-.03 )
+return( 0 );
+
+ /* Don't base the line on the current point, we run into rounding errors */
+ /* where lines that should intersect it don't. Instead perturb it a tiny*/
+ /* bit in the direction along the spline */
+ perturbed = PerturbAlongSpline( s,&pd->sp->me,t );
+
+ MakeVirtualLine(gd,&perturbed,dir,&myline,&end1,&end2);
+ /* prev_e_t = next_e_t = both_e_t =. This is where these guys are set */
+ cnt = MonotonicOrder(gd->sspace,&myline,gd->stspace);
+ edges[0] = MonotonicFindAlong(&myline,gd->stspace,cnt,s,other_t);
+return( edges[0] != NULL );
+}
+
+static int StillStem(struct glyphdata *gd,double fudge,BasePoint *pos,struct stemdata *stem ) {
+ Spline myline;
+ SplinePoint end1, end2;
+ int cnt, ret;
+
+ MakeVirtualLine( gd,pos,&stem->unit,&myline,&end1,&end2 );
+ cnt = MonotonicOrder( gd->sspace,&myline,gd->stspace );
+ ret = MonotonicFindStemBounds( &myline,gd->stspace,cnt,fudge,stem );
+return( ret );
+}
+
+static int CornerCorrectSide( struct pointdata *pd,int x_dir,int is_l ) {
+ int corner = ( x_dir ) ? pd->x_corner : pd->y_corner;
+ int start = (( x_dir && is_l ) || ( !x_dir && !is_l ));
+ double unit_p, unit_n;
+
+ unit_p = (&pd->prevunit.x)[!x_dir];
+ unit_n = (&pd->nextunit.x)[!x_dir];
+return( ( start && (
+ ( corner == 1 && unit_p > 0 && unit_n > 0 ) ||
+ ( corner == 2 && unit_p < 0 && unit_n < 0 ))) ||
+ ( !start && (
+ ( corner == 1 && unit_p < 0 && unit_n < 0 ) ||
+ ( corner == 2 && unit_p > 0 && unit_n > 0 ))));
+}
+
+static int IsCorrectSide( struct glyphdata *gd,struct pointdata *pd,
+ int is_next,int is_l,BasePoint *dir ) {
+
+ Spline *sbase, myline;
+ SplinePoint *sp = pd->sp, end1, end2;
+ BasePoint perturbed;
+ int i, hv, is_x, ret = false, winding = 0, cnt, eo;
+ double t, test;
+ struct monotonic **space, *m;
+
+ hv = IsUnitHV( dir,true );
+ if (( hv == 2 && pd->x_corner ) || ( hv == 1 && pd->y_corner ))
+return( CornerCorrectSide( pd,( hv == 2 ),is_l ));
+
+ sbase = ( is_next ) ? sp->next : sp->prev;
+ t = ( is_next ) ? 0.001 : 0.999;
+ perturbed = PerturbAlongSpline( sbase,&sp->me,t );
+
+ if ( hv ) {
+ is_x = ( hv == 2 );
+ test = ( is_x ) ? perturbed.y : perturbed.x;
+ MonotonicFindAt( gd->ms,is_x,test,space = gd->space );
+ for ( i=0; space[i]!=NULL; ++i ) {
+ m = space[i];
+ winding = ((&m->xup)[is_x] ? 1 : -1 );
+ if ( m->s == sbase )
+ break;
+ }
+ if ( space[i]!=NULL )
+ ret = (( is_l && winding == 1 ) || ( !is_l && winding == -1 ));
+ } else {
+ MakeVirtualLine( gd,&perturbed,dir,&myline,&end1,&end2 );
+ cnt = MonotonicOrder( gd->sspace,&myline,gd->stspace );
+ eo = -1;
+ is_x = fabs( dir->y ) > fabs( dir->x );
+ /* If a diagonal stem is more vertical than horizontal, then our */
+ /* virtual line will go from left to right. It will first intersect */
+ /* the left side of the stem, if the stem also points north-east. */
+ /* In any other case the virtual line will first intersect the right */
+ /* side. */
+ i = ( is_x && dir->y > 0 ) ? 0 : cnt-1;
+ while ( i >= 0 && i <= cnt-1 ) {
+ eo = ( eo != 1 ) ? 1 : 0;
+ if ( gd->stspace[i].s == sbase )
+ break;
+ if ( is_x && dir->y > 0 ) i++;
+ else i--;
+ }
+ ret = ( is_l == eo );
+ }
+return( ret );
+}
+
+/* In TrueType I want to make sure that everything on a diagonal line remains */
+/* on the same line. Hence we compute the line. Also we are interested in */
+/* points that are on the intersection of two lines */
+static struct linedata *BuildLine(struct glyphdata *gd,struct pointdata *pd,int is_next ) {
+ int i;
+ BasePoint *dir, *base, *start, *end;
+ struct pointdata **pspace = gd->pspace, *pd2;
+ int pcnt=0, is_l, hv;
+ double dist_error;
+ struct linedata *line;
+ double off, firstoff, lastoff, lmin=0, lmax=0;
+
+ dir = is_next ? &pd->nextunit : &pd->prevunit;
+ is_l = IsCorrectSide( gd,pd,is_next,true,dir );
+ dist_error = ( IsUnitHV( dir,true )) ? dist_error_hv : dist_error_diag ; /* Diagonals are harder to align */
+ if ( dir->x==0 && dir->y==0 )
+return( NULL );
+ base = &pd->sp->me;
+
+ for ( i= (pd - gd->points)+1; i<gd->pcnt; ++i ) if ( gd->points[i].sp!=NULL ) {
+ pd2 = &gd->points[i];
+ off = ( pd2->sp->me.x - base->x )*dir->y -
+ ( pd2->sp->me.y - base->y )*dir->x;
+ if ( off <= lmax - 2*dist_error || off >= lmin + 2*dist_error )
+ continue;
+ if ( off < 0 && off < lmin ) lmin = off;
+ else if ( off > 0 && off > lmax ) lmax = off;
+
+ if ((( UnitsParallel( dir,&pd2->nextunit,true ) && pd2->nextline==NULL ) &&
+ IsCorrectSide( gd,pd2,true,is_l,dir )) ||
+ (( UnitsParallel( dir,&pd2->prevunit,true ) && pd2->prevline==NULL ) &&
+ IsCorrectSide( gd,pd2,false,is_l,dir )))
+ pspace[pcnt++] = pd2;
+ }
+
+ if ( pcnt==0 )
+return( NULL );
+ if ( pcnt==1 ) {
+ /* if the line consists of just these two points, only count it as */
+ /* a true line if the two immediately follow each other */
+ if (( pd->sp->next->to != pspace[0]->sp || !pd->sp->next->knownlinear ) &&
+ ( pd->sp->prev->from != pspace[0]->sp || !pd->sp->prev->knownlinear ))
+return( NULL );
+ }
+
+ line = &gd->lines[gd->linecnt++];
+ line->pcnt = pcnt+1;
+ line->points = malloc((pcnt+1)*sizeof(struct pointdata *));
+ line->points[0] = pd;
+ line->unit = *dir;
+ line->is_left = is_l;
+ if ( dir->x < 0 || dir->y == -1 ) {
+ line->unit.x = -line->unit.x;
+ line->unit.y = -line->unit.y;
+ }
+ line->online = *base;
+ if ( is_next ) {
+ pd->nextline = line;
+ if ( pd->colinear ) pd->prevline = line;
+ } else {
+ pd->prevline = line;
+ if ( pd->colinear ) pd->nextline = line;
+ }
+ for ( i=0; i<pcnt; ++i ) {
+ if ( UnitsParallel( dir,&pspace[i]->nextunit,true ) && pspace[i]->nextline==NULL ) {
+ pspace[i]->nextline = line;
+ if ( pspace[i]->colinear )
+ pspace[i]->prevline = line;
+ }
+ if ( UnitsParallel( dir,&pspace[i]->prevunit,true ) && pspace[i]->prevline==NULL ) {
+ pspace[i]->prevline = line;
+ if ( pspace[i]->colinear )
+ pspace[i]->nextline = line;
+ }
+ line->points[i+1] = pspace[i];
+ }
+ qsort( line->points,line->pcnt,sizeof( struct pointdata * ),line_pt_cmp );
+ start = &line->points[0]->sp->me;
+ end = &line->points[pcnt]->sp->me;
+ /* Now recalculate the line unit vector basing on its starting and */
+ /* terminal points */
+ line->unit.x = ( end->x - start->x );
+ line->unit.y = ( end->y - start->y );
+ line->length = sqrt( pow( line->unit.x,2 ) + pow( line->unit.y,2 ));
+ line->unit.x /= line->length;
+ line->unit.y /= line->length;
+ hv = IsUnitHV( &line->unit,true );
+ if ( hv == 2 ) {
+ line->unit.x = 0; line->unit.y = 1;
+ } else if ( hv == 1 ) {
+ line->unit.x = 1; line->unit.y = 0;
+ } else if ( gd->has_slant && UnitsParallel( &line->unit,&gd->slant_unit,true )) {
+ firstoff = ( start->x - base->x )*gd->slant_unit.y -
+ ( start->y - base->y )*gd->slant_unit.x;
+ lastoff = ( end->x - base->x )*gd->slant_unit.y -
+ ( end->y - base->y )*gd->slant_unit.x;
+ if ( fabs( firstoff ) < 2*dist_error && fabs( lastoff ) < 2*dist_error )
+ line->unit = gd->slant_unit;
+ }
+return( line );
+}
+
+static BasePoint MiddleUnit( BasePoint *unit1, BasePoint *unit2 ) {
+ BasePoint u1, u2, ret;
+ double hyp;
+ int hv;
+
+ u1 = *unit1; u2 = *unit2;
+ if ( u1.x*u2.x + u1.y*u2.y < 0 ) {
+ u2.x = -u2.x; u2.y = -u2.y;
+ }
+ ret.x = ( u1.x + u2.x )/2;
+ ret.y = ( u1.y + u2.y )/2;
+ hyp = sqrt( pow( ret.x,2 ) + pow( ret.y,2 ));
+ ret.x /= hyp;
+ ret.y /= hyp;
+
+ hv = IsUnitHV( &ret,true );
+ if ( hv ) {
+ ret.x = ( hv == 1 ) ? 1 : 0;
+ ret.y = ( hv == 1 ) ? 0 : 1;
+ }
+return( ret );
+}
+
+static uint8 IsStubOrIntersection( struct glyphdata *gd, BasePoint *dir1,
+ struct pointdata *pd1, struct pointdata *pd2, int is_next1, int is_next2 ) {
+ int i;
+ int exc=0;
+ double dist, off, ext, norm1, norm2, opp, angle;
+ double mid_err = ( stem_slope_error + stub_slope_error )/2;
+ SplinePoint *sp1, *sp2, *nsp;
+ BasePoint hvdir, *dir2, *odir1, *odir2;
+ struct pointdata *npd;
+ struct linedata *line;
+
+ sp1 = pd1->sp; sp2 = pd2->sp;
+ dir2 = ( is_next2 ) ? &pd2->nextunit : &pd2->prevunit;
+ hvdir.x = ( int ) rint( dir1->x );
+ hvdir.y = ( int ) rint( dir1->y );
+
+ line = is_next2 ? pd2->nextline : pd2->prevline;
+ if ( !IsUnitHV( dir2,true ) && line != NULL )
+ dir2 = &line->unit;
+
+ odir1 = ( is_next1 ) ? &pd1->prevunit : &pd1->nextunit;
+ odir2 = ( is_next2 ) ? &pd2->prevunit : &pd2->nextunit;
+
+ angle = fabs( GetUnitAngle( dir1,dir2 ));
+ if ( angle > (double)stub_slope_error*1.5 && angle < PI - (double)stub_slope_error*1.5 )
+return( 0 );
+
+ /* First check if it is a slightly slanted line or a curve which joins */
+ /* a straight line under an angle close to 90 degrees. There are many */
+ /* glyphs where circles or curved features are intersected by or */
+ /* connected to vertical or horizontal straight stems (the most obvious */
+ /* cases are Greek Psi and Cyrillic Yu), and usually it is highly desired to */
+ /* mark such an intersection with a hint */
+ norm1 = ( sp1->me.x - sp2->me.x ) * odir2->x +
+ ( sp1->me.y - sp2->me.y ) * odir2->y;
+ norm2 = ( sp2->me.x - sp1->me.x ) * odir1->x +
+ ( sp2->me.y - sp1->me.y ) * odir1->y;
+ /* if this is a real stub or intersection, then vectors on both sides */
+ /* of out going-to-be stem should point in the same direction. So */
+ /* the following value should be positive */
+ opp = dir1->x * dir2->x + dir1->y * dir2->y;
+ if (( angle <= mid_err || angle >= PI - mid_err ) &&
+ opp > 0 && norm1 < 0 && norm2 < 0 && UnitsParallel( odir1,odir2,true ) &&
+ ( UnitsOrthogonal( dir1,odir1,false ) || UnitsOrthogonal( dir2,odir1,false )))
+return( 2 );
+ if (( angle <= mid_err || angle >= PI - mid_err ) &&
+ opp > 0 && (( norm1 < 0 && pd1->colinear &&
+ IsUnitHV( dir1,true ) && UnitsOrthogonal( dir1,odir2,false )) ||
+ ( norm2 < 0 && pd2->colinear &&
+ IsUnitHV( dir2,true ) && UnitsOrthogonal( dir2,odir1,false ))))
+return( 4 );
+
+ /* Now check if our 2 points form a serif termination or a feature stub */
+ /* The check is pretty dumb: it returns 'true' if all the following */
+ /* conditions are met: */
+ /* - both the points belong to the same contour; */
+ /* - there are no more than 3 other points between them; */
+ /* - anyone of those intermediate points is positioned by such a way */
+ /* that it falls inside the stem formed by our 2 base point and */
+ /* the vector we are checking and its distance from the first point */
+ /* along that vector is not larger than the stem width; */
+ /* - none of the intermediate points is parallel to the vector direction */
+ /* (otherwise we should have checked against that point instead) */
+ if ( !UnitsParallel( dir1,&hvdir,false ))
+return( 0 );
+
+ dist = ( sp1->me.x - sp2->me.x ) * dir1->y -
+ ( sp1->me.y - sp2->me.y ) * dir1->x;
+ nsp = sp1;
+
+ for ( i=0; i<4; i++ ) {
+ if (( is_next1 && nsp->prev == NULL ) || ( !is_next1 && nsp->next == NULL ))
+return( 0 );
+
+ nsp = ( is_next1 ) ? nsp->prev->from : nsp->next->to;
+ if ( ( i>0 && nsp == sp1 ) || nsp == sp2 )
+ break;
+
+ npd = &gd->points[nsp->ptindex];
+ if (UnitsParallel( &npd->nextunit,&hvdir,false ) ||
+ UnitsParallel( &npd->prevunit,&hvdir,false ))
+ break;
+
+ ext = ( sp1->me.x - nsp->me.x ) * hvdir.x +
+ ( sp1->me.y - nsp->me.y ) * hvdir.y;
+ if ( ext < 0 ) ext = -ext;
+ if (( dist > 0 && ext > dist ) || ( dist < 0 && ext < dist ))
+ break;
+
+ off = ( sp1->me.x - nsp->me.x ) * hvdir.y -
+ ( sp1->me.y - nsp->me.y ) * hvdir.x;
+ if (( dist > 0 && ( off <= 0 || off >= dist )) ||
+ ( dist < 0 && ( off >= 0 || off <= dist )))
+ exc++;
+ }
+
+ if ( nsp == sp2 && exc == 0 )
+return( 1 );
+
+return( 0 );
+}
+
+/* We normalize all stem unit vectors so that they point between 90 and 270 */
+/* degrees, as this range is optimal for sorting diagonal stems. This means */
+/* that vertical stems will normally point top to bottom, but for diagonal */
+/* stems (even if their angle is actually very close to vertical) the opposite */
+/* direction is also possible. Sometimes we "normalize" such stems converting */
+/* them to vertical. In such a case we have to swap their edges too. */
+static void SwapEdges( struct glyphdata *gd,struct stemdata *stem ) {
+ BasePoint tpos;
+ struct pointdata *tpd;
+ struct linedata *tl;
+ struct stem_chunk *chunk;
+ double toff;
+ int i, j, temp;
+
+ tpos = stem->left; stem->left = stem->right; stem->right = tpos;
+ toff = stem->lmin; stem->lmin = stem->rmax; stem->rmax = toff;
+ toff = stem->rmin; stem->rmin = stem->lmax; stem->lmax = toff;
+ tl = stem->leftline; stem->leftline = stem->rightline; stem->rightline = tl;
+
+ for ( i=0; i<stem->chunk_cnt; ++i ) {
+ chunk = &stem->chunks[i];
+ tpd = chunk->l; chunk->l = chunk->r; chunk->r = tpd;
+ temp = chunk->lpotential; chunk->lpotential = chunk->rpotential; chunk->rpotential = temp;
+ temp = chunk->lnext; chunk->lnext = chunk->rnext; chunk->rnext = temp;
+ temp = chunk->ltick; chunk->ltick = chunk->rtick; chunk->rtick = temp;
+
+ tpd = chunk->l;
+ if ( tpd != NULL ) {
+ for ( j=0; j<tpd->nextcnt; j++ )
+ if ( tpd->nextstems[j] == stem )
+ tpd->next_is_l[j] = true;
+ for ( j=0; j<tpd->prevcnt; j++ )
+ if ( tpd->prevstems[j] == stem )
+ tpd->prev_is_l[j] = true;
+ }
+
+ tpd = chunk->r;
+ if ( tpd != NULL ) {
+ for ( j=0; j<tpd->nextcnt; j++ )
+ if ( tpd->nextstems[j] == stem )
+ tpd->next_is_l[j] = false;
+ for ( j=0; j<tpd->prevcnt; j++ )
+ if ( tpd->prevstems[j] == stem )
+ tpd->prev_is_l[j] = false;
+ }
+ }
+
+ /* In case of a quadratic contour invert assignments to stem sides */
+ /* also for off-curve points */
+ if ( gd->order2 ) {
+ for ( i=0; i<gd->realcnt; i++ ) if ( gd->points[i].sp == NULL ) {
+ tpd = &gd->points[i];
+ for ( j=0; j<tpd->nextcnt; j++ )
+ if ( tpd->nextstems[j] == stem )
+ tpd->next_is_l[j] = !tpd->next_is_l[j];
+ for ( j=0; j<tpd->prevcnt; j++ )
+ if ( tpd->prevstems[j] == stem )
+ tpd->prev_is_l[j] = !tpd->prev_is_l[j];
+ }
+ }
+}
+
+static int StemFitsHV( struct stemdata *stem,int is_x,uint8 mask ) {
+ int i,cnt;
+ double loff,roff;
+ double lmin=0,lmax=0,rmin=0,rmax=0;
+ struct stem_chunk *chunk;
+
+ cnt = stem->chunk_cnt;
+
+ for ( i=0 ; i<stem->chunk_cnt; i++ ) {
+ if( stem->chunks[i].stub & mask )
+ break;
+ }
+ if ( i == stem->chunk_cnt )
+return( false );
+ if ( stem->chunk_cnt == 1 )
+return( true );
+
+ for ( i=0;i<cnt;i++ ) {
+ chunk = &stem->chunks[i];
+
+ if ( chunk->l != NULL ) {
+ loff = ( chunk->l->sp->me.x - stem->left.x ) * !is_x -
+ ( chunk->l->sp->me.y - stem->left.y ) * is_x;
+ if ( loff < lmin ) lmin = loff;
+ else if ( loff > lmax ) lmax = loff;
+ }
+ if ( chunk->r != NULL ) {
+ roff = ( chunk->r->sp->me.x - stem->right.x ) * !is_x -
+ ( chunk->r->sp->me.y - stem->right.y ) * is_x;
+ if ( roff < rmin ) rmin = roff;
+ else if ( roff > rmax ) rmax = roff;
+ }
+ }
+ if ((( lmax - lmin ) < 2*dist_error_hv ) && (( rmax - rmin ) < 2*dist_error_hv ))
+return( true );
+return( false );
+}
+
+static int LineFitsHV( struct linedata *line ) {
+ int i,cnt,is_x,hv;
+ double off,min=0,max=0;
+ struct pointdata *pd;
+
+ cnt = line->pcnt;
+ hv = IsUnitHV( &line->unit,true );
+ if ( hv )
+return( true );
+
+ hv = IsUnitHV( &line->unit,false );
+ if ( !hv )
+return( false );
+
+ is_x = ( hv == 1 ) ? 1 : 0;
+ for ( i=0;i<cnt;i++ ) {
+ pd = line->points[i];
+
+ off = ( pd->base.x - line->online.x ) * !is_x -
+ ( pd->base.y - line->online.y ) * is_x;
+ if ( off < min ) min = off;
+ else if ( off > max ) max = off;
+ }
+ if (( max - min ) < 2*dist_error_hv )
+return( true );
+return( false );
+}
+
+static int OnStem( struct stemdata *stem,BasePoint *test,int left ) {
+ double dist_error, off;
+ BasePoint *dir = &stem->unit;
+ double max=0, min=0;
+
+ /* Diagonals are harder to align */
+ dist_error = IsUnitHV( dir,true ) ? dist_error_hv : dist_error_diag;
+ if ( !stem->positioned ) dist_error = dist_error * 2;
+ if ( dist_error > stem->width/2 ) dist_error = stem->width/2;
+ if ( left ) {
+ off = (test->x - stem->left.x)*dir->y - (test->y - stem->left.y)*dir->x;
+ max = stem->lmax; min = stem->lmin;
+ } else {
+ off = (test->x - stem->right.x)*dir->y - (test->y - stem->right.y)*dir->x;
+ max = stem->rmax; min = stem->rmin;
+ }
+
+ if ( off > ( max - dist_error ) && off < ( min + dist_error ) )
+return( true );
+
+return( false );
+}
+
+static int BothOnStem( struct stemdata *stem,BasePoint *test1,BasePoint *test2,
+ int force_hv,int strict,int cove ) {
+ double dist_error, off1, off2;
+ BasePoint dir = stem->unit;
+ int hv, hv_strict;
+ double lmax=0, lmin=0, rmax=0, rmin=0;
+
+ hv = ( force_hv ) ? IsUnitHV( &dir,false ) : IsUnitHV( &dir,true );
+ hv_strict = ( force_hv ) ? IsUnitHV( &dir,true ) : hv;
+ if ( force_hv ) {
+ if ( force_hv != hv )
+return( false );
+ if ( !hv_strict && !StemFitsHV( stem,( hv == 1 ),7 ))
+return( false );
+ if ( !hv_strict ) {
+ dir.x = ( force_hv == 2 ) ? 0 : 1;
+ dir.y = ( force_hv == 2 ) ? 1 : 0;
+ }
+ }
+ /* Diagonals are harder to align */
+ dist_error = ( hv ) ? dist_error_hv : dist_error_diag;
+ if ( !strict ) {
+ dist_error = dist_error * 2;
+ lmax = stem->lmax; lmin = stem->lmin;
+ rmax = stem->rmax; rmin = stem->rmin;
+ }
+ if ( dist_error > stem->width/2 ) dist_error = stem->width/2;
+
+ off1 = (test1->x-stem->left.x)*dir.y - (test1->y-stem->left.y)*dir.x;
+ off2 = (test2->x-stem->right.x)*dir.y - (test2->y-stem->right.y)*dir.x;
+ if (off1 > ( lmax - dist_error ) && off1 < ( lmin + dist_error ) &&
+ off2 > ( rmax - dist_error ) && off2 < ( rmin + dist_error )) {
+ /* For some reasons in my patch from Feb 24 2008 I prohibited snapping */
+ /* to stems point pairs which together form a bend, if at least */
+ /* one point from the pair doesn't have exactly the same position as */
+ /* the stem edge. Unfortunately I don't remember why I did this, but */
+ /* this behavior has at least one obviously negative effect: it */
+ /* prevents building a stem from chunks which describe an ark */
+ /* intersected by some straight lines, even if the intersections lie */
+ /* closely enough to the ark extremum. So don't apply this test */
+ /* at least if the force_hv flag is on (which means either the */
+ /* chunk or the stem itself is not exactly horizontal/vertical) */
+ if ( !cove || force_hv || off1 == 0 || off2 == 0 )
+return( true );
+ }
+
+ off2 = (test2->x-stem->left.x)*dir.y - (test2->y-stem->left.y)*dir.x;
+ off1 = (test1->x-stem->right.x)*dir.y - (test1->y-stem->right.y)*dir.x;
+ if (off2 > ( lmax - dist_error ) && off2 < ( lmin + dist_error ) &&
+ off1 > ( rmax - dist_error ) && off1 < ( rmin + dist_error )) {
+ if ( !cove || force_hv || off1 == 0 || off2 == 0 )
+return( true );
+ }
+
+return( false );
+}
+
+static int RecalcStemOffsets( struct stemdata *stem,BasePoint *dir,int left,int right ) {
+ double off, err;
+ double lmin=0, lmax=0, rmin=0, rmax=0;
+ struct stem_chunk *chunk;
+ int i;
+
+ if ( !left && !right )
+return( false );
+ err = ( IsUnitHV( dir,true )) ? dist_error_hv : dist_error_diag;
+
+ if ( stem->chunk_cnt > 1 ) for ( i=0; i<stem->chunk_cnt; i++ ) {
+ chunk = &stem->chunks[i];
+ if ( left && chunk->l != NULL ) {
+ off = ( chunk->l->sp->me.x - stem->left.x )*dir->y -
+ ( chunk->l->sp->me.y - stem->left.y )*dir->x;
+ if ( off < lmin ) lmin = off;
+ else if ( off > lmax ) lmax = off;
+ }
+ if ( right && chunk->r != NULL ) {
+ off = ( chunk->r->sp->me.x - stem->right.x )*dir->y +
+ ( chunk->r->sp->me.y - stem->right.y )*dir->x;
+ if ( off < rmin ) rmin = off;
+ else if ( off > rmax ) rmax = off;
+ }
+ }
+ if ( lmax - lmin < 2*err && rmax - rmin < 2*err ) {
+ stem->lmin = lmin; stem->lmax = lmax;
+ stem->rmin = rmin; stem->rmax = rmax;
+return( true );
+ }
+return( false );
+}
+
+static void SetStemUnit( struct stemdata *stem,BasePoint dir ) {
+ double width;
+
+ width = ( stem->right.x - stem->left.x ) * dir.y -
+ ( stem->right.y - stem->left.y ) * dir.x;
+ if ( width < 0 ) {
+ width = -width;
+ dir.x = -dir.x;
+ dir.y = -dir.y;
+ }
+ stem->unit = dir;
+ stem->width = width;
+
+ /* Guess at which normal we want */
+ stem->l_to_r.x = dir.y; stem->l_to_r.y = -dir.x;
+ /* If we guessed wrong, use the other */
+ if (( stem->right.x-stem->left.x )*stem->l_to_r.x +
+ ( stem->right.y-stem->left.y )*stem->l_to_r.y < 0 ) {
+ stem->l_to_r.x = -stem->l_to_r.x;
+ stem->l_to_r.y = -stem->l_to_r.y;
+ }
+
+ /* Recalculate left/right offsets relatively to new vectors */
+ RecalcStemOffsets( stem,&dir,true,true );
+}
+
+static struct stem_chunk *AddToStem( struct glyphdata *gd,struct stemdata *stem,
+ struct pointdata *pd1,struct pointdata *pd2,int is_next1, int is_next2, int cheat ) {
+
+ int is_potential1 = false, is_potential2 = true;
+ struct stem_chunk *chunk=NULL;
+ BasePoint *dir = &stem->unit;
+ BasePoint *test;
+ int lincr = 1, rincr = 1;
+ double off, dist_error;
+ double loff = 0, roff = 0;
+ double min = 0, max = 0;
+ int i, in, ip, cpidx;
+ struct pointdata *pd, *npd, *ppd;
+
+ if ( cheat || stem->positioned ) is_potential2 = false;
+ /* Diagonals are harder to align */
+ dist_error = IsUnitHV( dir,true ) ? 2*dist_error_hv : 2*dist_error_diag;
+ if ( dist_error > stem->width/2 ) dist_error = stem->width/2;
+ max = stem->lmax;
+ min = stem->lmin;
+
+ /* The following swaps "left" and "right" points in case we have */
+ /* started checking relatively to a wrong edge */
+ if ( pd1 != NULL ) {
+ test = &pd1->base;
+ off = ( test->x - stem->left.x )*dir->y -
+ ( test->y - stem->left.y )*dir->x;
+ if (( !stem->ghost &&
+ ( off < ( max - dist_error ) || off > ( min + dist_error ))) ||
+ ( RealNear( stem->unit.x, 1) && stem->ghost && stem->width == 21 ) ||
+ ( RealNear( stem->unit.x,0 ) && stem->ghost && stem->width == 20 )) {
+ pd = pd1; pd1 = pd2; pd2 = pd;
+ in = is_next1; is_next1 = is_next2; is_next2 = in;
+ ip = is_potential1; is_potential1 = is_potential2; is_potential2 = ip;
+ }
+ }
+
+ if ( pd1 == NULL ) lincr = 0;
+ if ( pd2 == NULL ) rincr = 0;
+ /* Now run through existing stem chunks and see if the chunk we are */
+ /* going to add doesn't duplicate an existing one.*/
+ for ( i=stem->chunk_cnt-1; i>=0; --i ) {
+ chunk = &stem->chunks[i];
+ if ( chunk->l == pd1 ) lincr = 0;
+ if ( chunk->r == pd2 ) rincr = 0;
+
+ if (( chunk->l == pd1 || pd1 == NULL ) && ( chunk->r == pd2 || pd2 == NULL )) {
+ if ( !is_potential1 ) chunk->lpotential = false;
+ if ( !is_potential2 ) chunk->rpotential = false;
+ break;
+ } else if (( chunk->l == pd1 && chunk->r == NULL ) || ( chunk->r == pd2 && chunk->l == NULL )) {
+ if ( chunk->l == NULL ) {
+ chunk->l = pd1;
+ chunk->lpotential = is_potential1;
+ chunk->lnext = is_next1;
+ chunk->ltick = lincr;
+ } else if ( chunk->r == NULL ) {
+ chunk->r = pd2;
+ chunk->rpotential = is_potential2;
+ chunk->rnext = is_next2;
+ chunk->rtick = rincr;
+ }
+ break;
+ }
+ }
+
+ if ( i<0 ) {
+ stem->chunks = realloc(stem->chunks,(stem->chunk_cnt+1)*sizeof(struct stem_chunk));
+ chunk = &stem->chunks[stem->chunk_cnt++];
+ chunk->parent = stem;
+
+ chunk->l = pd1; chunk->lpotential = is_potential1;
+ chunk->r = pd2; chunk->rpotential = is_potential2;
+ chunk->ltick = lincr; chunk->rtick = rincr;
+
+ chunk->lnext = is_next1;
+ chunk->rnext = is_next2;
+ chunk->stemcheat = cheat;
+ chunk->stub = chunk->is_ball = false;
+ chunk->l_e_idx = chunk->r_e_idx = 0;
+ }
+
+ if ( pd1!=NULL ) {
+ loff = ( pd1->base.x - stem->left.x ) * stem->l_to_r.x +
+ ( pd1->base.y - stem->left.y ) * stem->l_to_r.y;
+ if ( is_next1==1 || is_next1==2 || pd1->colinear ) {
+ AssignStemToPoint( pd1,stem,true,true );
+ /* For quadratic layers assign the stem not only to */
+ /* spline points, but to their control points as well */
+ /* (this may be important for TTF instructions */
+ if ( gd->order2 && !pd1->sp->nonextcp && pd1->sp->nextcpindex < gd->realcnt ) {
+ cpidx = pd1->sp->nextcpindex;
+ npd = &gd->points[cpidx];
+ if ( OnStem( stem,&npd->base,true ))
+ AssignStemToPoint( npd,stem,false,true );
+ }
+ }
+ if ( is_next1==0 || is_next1==2 || pd1->colinear ) {
+ AssignStemToPoint( pd1,stem,false,true );
+ if ( gd->order2 && !pd1->sp->noprevcp && pd1->sp->prev != NULL &&
+ pd1->sp->prev->from->nextcpindex < gd->realcnt ) {
+ cpidx = pd1->sp->prev->from->nextcpindex;
+ ppd = &gd->points[cpidx];
+ if ( OnStem( stem,&ppd->base,true ))
+ AssignStemToPoint( ppd,stem,true,true );
+ }
+ }
+ }
+ if ( pd2!=NULL ) {
+ roff = ( pd2->base.x - stem->right.x ) * stem->l_to_r.x +
+ ( pd2->base.y - stem->right.y ) * stem->l_to_r.y;
+ if ( is_next2==1 || is_next2==2 || pd2->colinear ) {
+ AssignStemToPoint( pd2,stem,true,false );
+ if ( gd->order2 && !pd2->sp->nonextcp && pd2->sp->nextcpindex < gd->realcnt ) {
+ cpidx = pd2->sp->nextcpindex;
+ npd = &gd->points[cpidx];
+ if ( OnStem( stem,&npd->base,false ))
+ AssignStemToPoint( npd,stem,false,false );
+ }
+ }
+ if ( is_next2==0 || is_next2==2 || pd2->colinear ) {
+ AssignStemToPoint( pd2,stem,false,false );
+ if ( gd->order2 && !pd2->sp->noprevcp && pd2->sp->prev != NULL &&
+ pd2->sp->prev->from->nextcpindex < gd->realcnt ) {
+ cpidx = pd2->sp->prev->from->nextcpindex;
+ ppd = &gd->points[cpidx];
+ if ( OnStem( stem,&ppd->base,false ))
+ AssignStemToPoint( ppd,stem,true,false );
+ }
+ }
+ }
+ if ( loff < stem->lmin ) stem->lmin = loff;
+ else if ( loff > stem->lmax ) stem->lmax = loff;
+ if ( roff < stem->rmin ) stem->rmin = roff;
+ else if ( roff > stem->rmax ) stem->rmax = roff;
+ stem->lpcnt += lincr; stem->rpcnt += rincr;
+return( chunk );
+}
+
+static struct stemdata *FindStem( struct glyphdata *gd,struct pointdata *pd,
+ struct pointdata *pd2,BasePoint *dir,int is_next2,int de ) {
+
+ int i, cove, test_left, hv, stemcnt;
+ struct stemdata *stem;
+ BasePoint newdir;
+
+ stemcnt = ( is_next2 ) ? pd2->nextcnt : pd2->prevcnt;
+
+ for ( i=0; i<stemcnt; i++ ) {
+ stem = ( is_next2 ) ? pd2->nextstems[i] : pd2->prevstems[i];
+ test_left = ( is_next2 ) ? !pd2->next_is_l[i] : !pd2->prev_is_l[i];
+
+ if (UnitsParallel( &stem->unit,dir,true ) &&
+ OnStem( stem,&pd->sp->me,test_left ))
+return( stem );
+ }
+
+ cove = ( dir->x == 0 && pd->x_extr + pd2->x_extr == 3 ) ||
+ ( dir->y == 0 && pd->y_extr + pd2->y_extr == 3 );
+
+ /* First pass to check for strict matches */
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ /* Ghost hints and BBox hits are usually generated after all other */
+ /* hint types, but we can get them here in case we are generating */
+ /* glyph data for a predefined hint layout. In this case they should */
+ /* be excluded from the following tests */
+ if ( stem->ghost || stem->bbox )
+ continue;
+
+ if ( UnitsParallel( &stem->unit,dir,true ) &&
+ BothOnStem( stem,&pd->sp->me,&pd2->sp->me,false,true,cove )) {
+ return( stem );
+ }
+ }
+ /* One more pass. At this stage larger deviations are allowed */
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ if ( stem->ghost || stem->bbox )
+ continue;
+
+ if ( UnitsParallel( &stem->unit,dir,true ) &&
+ BothOnStem( stem,&pd->sp->me,&pd2->sp->me,false,false,cove )) {
+return( stem );
+ }
+ }
+ if ( de )
+return( NULL );
+
+ hv = IsUnitHV( dir,false );
+ if ( !hv )
+return( NULL );
+
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ if ( stem->ghost || stem->bbox )
+ continue;
+ if ( hv && BothOnStem( stem,&pd->base,&pd2->base,hv,false,cove )) {
+ newdir.x = ( hv == 2 ) ? 0 : 1;
+ newdir.y = ( hv == 2 ) ? 1 : 0;
+ if ( hv == 2 && stem->unit.y < 0 )
+ SwapEdges( gd,stem );
+ if ( stem->unit.x != newdir.x )
+ SetStemUnit( stem,newdir );
+return( stem );
+ }
+ }
+return( NULL );
+}
+
+static struct stemdata *NewStem( struct glyphdata *gd,BasePoint *dir,
+ BasePoint *pos1, BasePoint *pos2 ) {
+
+ struct stemdata * stem = &gd->stems[gd->stemcnt++];
+ double width;
+
+ stem->unit = *dir;
+ if ( dir->x < 0 || dir->y == -1 ) {
+ stem->unit.x = -stem->unit.x;
+ stem->unit.y = -stem->unit.y;
+ }
+ width = ( pos2->x - pos1->x ) * stem->unit.y -
+ ( pos2->y - pos1->y ) * stem->unit.x;
+ if ( width > 0 ) {
+ stem->left = *pos1;
+ stem->right = *pos2;
+ stem->width = width;
+ } else {
+ stem->left = *pos2;
+ stem->right = *pos1;
+ stem->width = -width;
+ }
+ /* Guess at which normal we want */
+ stem->l_to_r.x = dir->y; stem->l_to_r.y = -dir->x;
+ /* If we guessed wrong, use the other */
+ if (( stem->right.x-stem->left.x )*stem->l_to_r.x +
+ ( stem->right.y-stem->left.y )*stem->l_to_r.y < 0 ) {
+ stem->l_to_r.x = -stem->l_to_r.x;
+ stem->l_to_r.y = -stem->l_to_r.y;
+ }
+ stem->leftidx = stem->rightidx = -1;
+ stem->leftline = stem->rightline = NULL;
+ stem->lmin = stem->lmax = 0;
+ stem->rmin = stem->rmax = 0;
+ stem->ldone = stem->rdone = false;
+ stem->lpcnt = stem->rpcnt = 0;
+ stem->chunks = NULL;
+ stem->chunk_cnt = 0;
+ stem->ghost = stem->bbox = false;
+ stem->positioned = false;
+ stem->blue = -1;
+return( stem );
+}
+
+static int ParallelToDir( struct pointdata *pd,int checknext,BasePoint *dir,
+ BasePoint *opposite,SplinePoint *basesp,uint8 is_stub ) {
+
+ BasePoint n, o, *base = &basesp->me;
+ SplinePoint *sp;
+ double angle, mid_err = ( stem_slope_error + stub_slope_error )/2;
+
+ sp = pd->sp;
+ n = ( checknext ) ? pd->nextunit : pd->prevunit;
+
+ angle = fabs( GetUnitAngle( dir,&n ));
+ if (( !is_stub && angle > stem_slope_error && angle < PI - stem_slope_error ) ||
+ ( is_stub & 1 && angle > stub_slope_error*1.5 && angle < PI - stub_slope_error*1.5 ) ||
+ ( is_stub & 6 && angle > mid_err && angle < PI - mid_err ))
+return( false );
+
+ /* Now sp must be on the same side of the spline as opposite */
+ o.x = opposite->x-base->x; o.y = opposite->y-base->y;
+ n.x = sp->me.x-base->x; n.y = sp->me.y-base->y;
+ if ( ( o.x*dir->y - o.y*dir->x )*( n.x*dir->y - n.y*dir->x ) < 0 )
+return( false );
+
+return( true );
+}
+
+static int NearlyParallel( BasePoint *dir,Spline *other, double t ) {
+ BasePoint odir;
+ double olen;
+
+ odir.x = (3*other->splines[0].a*t+2*other->splines[0].b)*t+other->splines[0].c;
+ odir.y = (3*other->splines[1].a*t+2*other->splines[1].b)*t+other->splines[1].c;
+ olen = sqrt( pow( odir.x,2 ) + pow( odir.y,2 ));
+ if ( olen==0 )
+return( false );
+ odir.x /= olen; odir.y /= olen;
+return( UnitsParallel( dir,&odir,false ));
+}
+
+static double NormalDist( BasePoint *to, BasePoint *from, BasePoint *perp ) {
+ double len = (to->x-from->x)*perp->y - (to->y-from->y)*perp->x;
+ if ( len<0 ) len = -len;
+return( len );
+}
+
+static struct stemdata *FindOrMakeHVStem( struct glyphdata *gd,
+ struct pointdata *pd,struct pointdata *pd2,int is_h,int require_existing ) {
+ int i,cove = false;
+ struct stemdata *stem;
+ BasePoint dir;
+
+ dir.x = ( is_h ) ? 1 : 0;
+ dir.y = ( is_h ) ? 0 : 1;
+ if ( pd2 != NULL )
+ cove = ( dir.x == 0 && pd->x_extr + pd2->x_extr == 3 ) ||
+ ( dir.y == 0 && pd->y_extr + pd2->y_extr == 3 );
+
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ if ( IsUnitHV( &stem->unit,true ) &&
+ ( pd2 != NULL && BothOnStem( stem,&pd->sp->me,&pd2->sp->me,false,false,cove )))
+ break;
+ }
+ if ( i==gd->stemcnt ) stem=NULL;
+
+ if ( stem == NULL && pd2 != NULL && !require_existing )
+ stem = NewStem( gd,&dir,&pd->sp->me,&pd2->sp->me );
+return( stem );
+}
+
+static int IsDiagonalEnd( struct glyphdata *gd,
+ struct pointdata *pd1,struct pointdata *pd2,int is_next,int require_existing ) {
+ /* suppose we have something like */
+ /* *--* */
+ /* \ \ */
+ /* \ \ */
+ /* Then let's create a vertical stem between the two points */
+ /* (and a horizontal stem if the thing is rotated 90 degrees) */
+ double width, length1, length2, dist1, dist2;
+ BasePoint *pt1, *pt2, *dir1, *dir2, *prevdir1, *prevdir2;
+ SplinePoint *prevsp1, *prevsp2;
+ struct pointdata *prevpd1, *prevpd2;
+ int hv;
+
+ if ( pd1->colinear || pd2->colinear )
+return( false );
+ pt1 = &pd1->sp->me; pt2 = &pd2->sp->me;
+ /* Both key points of a diagonal end stem should have nearly the same */
+ /* coordinate by x or y (otherwise we can't determine by which axis */
+ /* it should be hinted) */
+ if ( pt1->x >= pt2->x - dist_error_hv && pt1->x <= pt2->x + dist_error_hv ) {
+ width = pd1->sp->me.y - pd2->sp->me.y;
+ hv = 1;
+ } else if ( pt1->y >= pt2->y - dist_error_hv && pt1->y <= pt2->y + dist_error_hv ) {
+ width = pd1->sp->me.x - pd2->sp->me.x;
+ hv = 2;
+ } else
+return( false );
+
+ dir1 = ( is_next ) ? &pd1->nextunit : &pd1->prevunit;
+ dir2 = ( is_next ) ? &pd2->prevunit : &pd2->nextunit;
+ if ( IsUnitHV( dir1,true )) /* Must be diagonal */
+return( false );
+ prevsp1 = ( is_next ) ? pd1->sp->next->to : pd1->sp->prev->from;
+ prevsp2 = ( is_next ) ? pd2->sp->prev->from : pd2->sp->next->to;
+ prevpd1 = &gd->points[prevsp1->ptindex];
+ prevpd2 = &gd->points[prevsp2->ptindex];
+ prevdir1 = ( is_next ) ? &prevpd1->prevunit : &prevpd1->nextunit;
+ prevdir2 = ( is_next ) ? &prevpd2->nextunit : &prevpd2->prevunit;
+ /* Ensure we have got a real diagonal, i. e. its sides are parallel */
+ if ( !UnitsParallel( dir1,dir2,true ) || !UnitsParallel( prevdir1,prevdir2,true ))
+return( false );
+
+ /* Diagonal width should be smaller than its length */
+ length1 = pow(( prevsp1->me.x - pt1->x ),2 ) + pow(( prevsp1->me.y - pt1->y ),2 );
+ length2 = pow(( prevsp2->me.x - pt2->x ),2 ) + pow(( prevsp2->me.y - pt2->y ),2 );
+ if ( length2 < length1 ) length1 = length2;
+ if ( pow( width,2 ) > length1 )
+return( false );
+
+ /* Finally exclude too short diagonals where the distance between key */
+ /* points of one edge at the direction orthogonal to the unit vector */
+ /* of the stem we are about to add is smaller than normal HV stem */
+ /* fudge. Such diagonals may be later turned into HV stems, and we will */
+ /* result into getting two coincident hints */
+ dist1 = ( hv == 1 ) ? prevsp1->me.y - pt1->y : prevsp1->me.x - pt1->x;
+ dist2 = ( hv == 1 ) ? prevsp2->me.y - pt2->y : prevsp2->me.x - pt2->x;
+ if ( dist1 < 0 ) dist1 = -dist1;
+ if ( dist2 < 0 ) dist2 = -dist2;
+ if ( dist1 < 2*dist_error_hv && dist2 < 2*dist_error_hv )
+return( false );
+
+return( hv );
+}
+
+static struct stemdata *TestStem( struct glyphdata *gd,struct pointdata *pd,
+ BasePoint *dir,SplinePoint *match,int is_next,int is_next2,int require_existing,uint8 is_stub,int eidx ) {
+ struct pointdata *pd2;
+ struct stemdata *stem, *destem;
+ struct stem_chunk *chunk;
+ struct linedata *otherline;
+ double width;
+ struct linedata *line, *line2;
+ BasePoint *mdir, middle;
+ int de=false, hv, l_changed;
+
+ width = ( match->me.x - pd->sp->me.x )*dir->y -
+ ( match->me.y - pd->sp->me.y )*dir->x;
+ if ( width < 0 ) width = -width;
+ if ( width < .5 )
+return( NULL ); /* Zero width stems aren't interesting */
+ if (( is_next && pd->sp->next->to==match ) || ( !is_next && pd->sp->prev->from==match ))
+return( NULL ); /* Don't want a stem between two splines that intersect */
+
+ pd2 = &gd->points[match->ptindex];
+
+ line = is_next ? pd->nextline : pd->prevline;
+ mdir = is_next2 ? &pd2->nextunit : &pd2->prevunit;
+ line2 = is_next2 ? pd2->nextline : pd2->prevline;
+ if ( !IsUnitHV( mdir,true ) && line2 != NULL )
+ mdir = &line2->unit;
+ if ( mdir->x==0 && mdir->y==0 )
+return( NULL ); /* cannot determine the opposite point's direction */
+
+ if ( !UnitsParallel( mdir,dir,true ) && !is_stub )
+return( NULL ); /* Cannot make a stem if edges are not parallel (unless it is a serif) */
+
+ if ( is_stub & 1 && !IsUnitHV( dir,true )) {
+ /* For serifs we prefer the vector which is closer to horizontal/vertical */
+ middle = MiddleUnit( dir,mdir );
+ if ( UnitCloserToHV( &middle,dir ) == 1 && UnitCloserToHV( &middle,mdir ) == 1 )
+ dir = &middle;
+ else if ( UnitCloserToHV( mdir,dir ) == 1 )
+ dir = mdir;
+ if ( !IsUnitHV( dir,true ) &&
+ ( hint_diagonal_ends || require_existing ))
+ de = IsDiagonalEnd( gd,pd,pd2,is_next,require_existing );
+ }
+
+ stem = FindStem( gd,pd,pd2,dir,is_next2,de );
+ destem = NULL;
+ if ( de )
+ destem = FindOrMakeHVStem( gd,pd,pd2,( de == 1 ),require_existing );
+
+ if ( stem == NULL && !require_existing )
+ stem = NewStem( gd,dir,&pd->sp->me,&match->me );
+ if ( stem != NULL ) {
+ chunk = AddToStem( gd,stem,pd,pd2,is_next,is_next2,false );
+ if ( chunk != NULL ) {
+ chunk->stub = is_stub;
+ chunk->l_e_idx = chunk->r_e_idx = eidx;
+ }
+
+ if ( chunk != NULL && gd->linecnt > 0 ) {
+ hv = IsUnitHV( &stem->unit,true );
+ /* For HV stems allow assigning a line to a stem edge only */
+ /* if that line also has an exactly HV vector */
+ if ( line != NULL && (( !hv &&
+ UnitsParallel( &stem->unit,&line->unit,true ) &&
+ RecalcStemOffsets( stem,&line->unit,true,true )) ||
+ ( hv && line->unit.x == stem->unit.x && line->unit.y == stem->unit.y ))) {
+
+ otherline = NULL; l_changed = false;
+ if (( stem->leftline == NULL ||
+ stem->leftline->length < line->length ) && chunk->l == pd ) {
+
+ stem->leftline = line;
+ l_changed = true;
+ otherline = stem->rightline;
+ } else if (( stem->rightline == NULL ||
+ stem->rightline->length < line->length ) && chunk->r == pd ) {
+
+ stem->rightline = line;
+ l_changed = true;
+ otherline = stem->leftline;
+ }
+ /* If lines are attached to both sides of a diagonal stem, */
+ /* then prefer the longer line */
+ if ( !hv && l_changed && !stem->positioned &&
+ ( otherline == NULL || ( otherline->length < line->length )))
+ SetStemUnit( stem,line->unit );
+ }
+ if ( line2 != NULL && (( !hv &&
+ UnitsParallel( &stem->unit,&line2->unit,true ) &&
+ RecalcStemOffsets( stem,&line2->unit,true,true )) ||
+ ( hv && line2->unit.x == stem->unit.x && line2->unit.y == stem->unit.y ))) {
+
+ otherline = NULL; l_changed = false;
+ if (( stem->leftline == NULL ||
+ stem->leftline->length < line2->length ) && chunk->l == pd2 ) {
+
+ stem->leftline = line2;
+ l_changed = true;
+ otherline = stem->rightline;
+ } else if (( stem->rightline == NULL ||
+ stem->rightline->length < line2->length ) && chunk->r == pd2 ) {
+
+ stem->rightline = line2;
+ l_changed = true;
+ otherline = stem->leftline;
+ }
+ if ( !hv && l_changed && !stem->positioned &&
+ ( otherline == NULL || ( otherline->length < line2->length )))
+ SetStemUnit( stem,line2->unit );
+ }
+ }
+ }
+
+ if ( destem != NULL )
+ AddToStem( gd,destem,pd,pd2,is_next,!is_next,1 );
+return( stem );
+}
+
+static double FindSameSlope(Spline *s,BasePoint *dir,double close_to) {
+ double a, b, c, desc;
+ double t1, t2;
+ double d1, d2;
+
+ if ( s==NULL )
+return( -1e4 );
+
+ a = dir->x*s->splines[1].a*3 - dir->y*s->splines[0].a*3;
+ b = dir->x*s->splines[1].b*2 - dir->y*s->splines[0].b*2;
+ c = dir->x*s->splines[1].c - dir->y*s->splines[0].c ;
+ if ( a!=0 ) {
+ desc = b*b - 4*a*c;
+ if ( desc<0 )
+return( -1e4 );
+ desc = sqrt(desc);
+ t1 = (-b+desc)/(2*a);
+ t2 = (-b-desc)/(2*a);
+ if ( (d1=t1-close_to)<0 ) d1 = -d1;
+ if ( (d2=t2-close_to)<0 ) d2 = -d2;
+ if ( d2<d1 && t2>=-.001 && t2<=1.001 )
+ t1 = t2;
+ } else if ( b!=0 )
+ t1 = -c/b;
+ else
+return( -1e4 );
+
+return( t1 );
+}
+
+/* This function is used when generating stem data for preexisting */
+/* stem hints. If we already know the desired hint position, then we */
+/* can safely assign to this hint any points which meet other conditions */
+/* but have no corresponding position at the opposite edge. */
+static int HalfStemNoOpposite( struct glyphdata *gd,struct pointdata *pd,
+ struct stemdata *stem,BasePoint *dir,int is_next ) {
+ int i, ret=0, allowleft, allowright, hv, corner;
+ struct stemdata *tstem;
+
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ tstem = &gd->stems[i];
+ if ( tstem->bbox || !tstem->positioned || tstem == stem )
+ continue;
+ allowleft = ( !tstem->ghost || tstem->width == 20 );
+ allowright = ( !tstem->ghost || tstem->width == 21 );
+ hv = IsUnitHV( &tstem->unit,true );
+ corner = (( pd->x_corner && hv == 2 ) || ( pd->y_corner && hv == 1 ));
+
+ if ( UnitsParallel( &tstem->unit,dir,true ) || tstem->ghost || corner ) {
+ if ( OnStem( tstem,&pd->sp->me,true ) && allowleft ) {
+ if ( IsCorrectSide( gd,pd,is_next,true,&tstem->unit )) {
+ AddToStem( gd,tstem,pd,NULL,is_next,false,false );
+ ret++;
+ }
+ } else if ( OnStem( tstem,&pd->sp->me,false ) && allowright ) {
+ if ( IsCorrectSide( gd,pd,is_next,false,&tstem->unit )) {
+ AddToStem( gd,tstem,NULL,pd,false,is_next,false );
+ ret++;
+ }
+ }
+ }
+ }
+return( ret );
+}
+
+static struct stemdata *HalfStem( struct glyphdata *gd,struct pointdata *pd,
+ BasePoint *dir,Spline *other,double other_t,int is_next,int eidx ) {
+ /* Find the spot on other where the slope is the same as dir */
+ double t1;
+ double width;
+ BasePoint match;
+ struct stemdata *stem = NULL, *tstem;
+ struct pointdata *pd2 = NULL, *tpd;
+ int i;
+
+ t1 = FindSameSlope( other,dir,other_t );
+ if ( t1==-1e4 )
+return( NULL );
+ if ( t1<0 && other->from->prev!=NULL && gd->points[other->from->ptindex].colinear ) {
+ other = other->from->prev;
+ t1 = FindSameSlope(other,dir,1.0);
+ } else if ( t1>1 && other->to->next!=NULL && gd->points[other->to->ptindex].colinear ) {
+ other = other->to->next;
+ t1 = FindSameSlope(other,dir,0.0);
+ }
+
+ if ( t1<-.001 || t1>1.001 )
+return( NULL );
+
+ /* Ok. the opposite edge has the right slope at t1 */
+ /* Now see if we can make a one sided stem out of these two */
+ match.x = ((other->splines[0].a*t1+other->splines[0].b)*t1+other->splines[0].c)*t1+other->splines[0].d;
+ match.y = ((other->splines[1].a*t1+other->splines[1].b)*t1+other->splines[1].c)*t1+other->splines[1].d;
+
+ width = (match.x-pd->sp->me.x)*dir->y - (match.y-pd->sp->me.y)*dir->x;
+ /* offset = (match.x-pd->sp->me.x)*dir->x + (match.y-pd->sp->me.y)*dir->y;*/
+ if ( width<.5 && width>-.5 )
+return( NULL ); /* Zero width stems aren't interesting */
+
+ if ( isnan(t1))
+ IError( "NaN value in HalfStem" );
+
+ if ( is_next ) {
+ pd->nextedges[eidx] = other;
+ pd->next_e_t[eidx] = t1;
+ } else {
+ pd->prevedges[eidx] = other;
+ pd->prev_e_t[eidx] = t1;
+ }
+
+ /* In my experience the only case where this function may be useful */
+ /* is when it occasionally finds a real spline point which for some */
+ /* reasons has been neglected by other tests and yet forms a valid */
+ /* pair for the first point. So run through points and see if we */
+ /* have actually got just a position on spline midway between to points, */
+ /* or it is a normal point allowing to make a normal stem chunk */
+ for ( i=0; i<gd->pcnt; ++i ) {
+ tpd = &gd->points[i];
+ if ( tpd->sp != NULL && tpd->sp->me.x == match.x && tpd->sp->me.y == match.y ) {
+ pd2 = tpd;
+ break;
+ }
+ }
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ tstem = &gd->stems[i];
+ if ( UnitsParallel( &tstem->unit,dir,true ) &&
+ BothOnStem( tstem,&pd->base,&match,false,false,false )) {
+ stem = tstem;
+ break;
+ }
+ }
+ if ( stem == NULL )
+ stem = NewStem(gd,dir,&pd->sp->me,&match);
+
+ AddToStem( gd,stem,pd,pd2,is_next,false,false );
+return( stem );
+}
+
+static int ConnectsAcross( struct glyphdata *gd,SplinePoint *sp,
+ int is_next,Spline *findme,int eidx ) {
+ struct pointdata *pd = &gd->points[sp->ptindex];
+ Spline *other, *test;
+ BasePoint dir;
+
+ other = ( is_next ) ? pd->nextedges[eidx] : pd->prevedges[eidx];
+
+ if ( other==findme )
+return( true );
+ if ( other==NULL )
+return( false );
+
+ dir.x = ( is_next ) ? -pd->nextunit.x : pd->prevunit.x;
+ dir.y = ( is_next ) ? -pd->nextunit.y : pd->prevunit.y;
+ test = other->to->next;
+ while ( test!=NULL && test != other &&
+ gd->points[test->from->ptindex].nextunit.x * dir.x +
+ gd->points[test->from->ptindex].nextunit.y * dir.y > 0 ) {
+ if ( test==findme )
+return( true );
+ test = test->to->next;
+ }
+
+ dir.x = ( is_next ) ? pd->nextunit.x : -pd->prevunit.x;
+ dir.y = ( is_next ) ? pd->nextunit.y : -pd->prevunit.y;
+ test = other->from->prev;
+ while ( test!=NULL && test != other &&
+ gd->points[test->to->ptindex].prevunit.x * dir.x +
+ gd->points[test->to->ptindex].prevunit.y * dir.y > 0 ) {
+ if ( test==findme )
+return( true );
+ test = test->from->prev;
+ }
+return( false );
+}
+
+static int ConnectsAcrossToStem( struct glyphdata *gd,struct pointdata *pd,
+ int is_next,struct stemdata *target,int is_l,int eidx ) {
+
+ Spline *other, *test;
+ BasePoint dir;
+ struct pointdata *tpd;
+ int ecnt, stemidx;
+
+ ecnt = ( is_next ) ? pd->next_e_cnt : pd->prev_e_cnt;
+ if ( ecnt < eidx + 1 )
+return( false );
+ other = ( is_next ) ? pd->nextedges[eidx] : pd->prevedges[eidx];
+
+ test = other;
+ dir.x = ( is_next ) ? pd->nextunit.x : -pd->prevunit.x;
+ dir.y = ( is_next ) ? pd->nextunit.y : -pd->prevunit.y;
+ do {
+ tpd = &gd->points[test->to->ptindex];
+ stemidx = IsStemAssignedToPoint( tpd,target,false );
+ if ( stemidx != -1 && tpd->prev_is_l[stemidx] == !is_l &&
+ IsSplinePeak( gd,tpd,rint( target->unit.y ),rint( target->unit.y ),7 ))
+return( true );
+
+ test = test->to->next;
+ } while ( test!=NULL && test != other && stemidx == -1 &&
+ ( tpd->prevunit.x * dir.x + tpd->prevunit.y * dir.y >= 0 ));
+
+ test = other;
+ dir.x = ( is_next ) ? -pd->nextunit.x : pd->prevunit.x;
+ dir.y = ( is_next ) ? -pd->nextunit.y : pd->prevunit.y;
+ do {
+ tpd = &gd->points[test->from->ptindex];
+ stemidx = IsStemAssignedToPoint( tpd,target,true );
+ if ( stemidx != -1 && tpd->next_is_l[stemidx] == !is_l &&
+ IsSplinePeak( gd,tpd,rint( target->unit.y ),rint( target->unit.y ),7 ))
+return( true );
+
+ test = test->from->prev;
+ } while ( test!=NULL && test != other && stemidx == -1 &&
+ ( tpd->nextunit.x * dir.x + tpd->nextunit.y * dir.y >= 0 ));
+return( false );
+}
+
+static double RecalcT( Spline *base,SplinePoint *from, SplinePoint *to, double curt ) {
+ double baselen, fromlen, tolen, ret;
+ Spline *cur;
+
+ baselen = SplineLength( base );
+ fromlen = baselen * curt;
+ tolen = baselen * ( 1 - curt );
+
+ cur = base->from->prev;
+ while ( cur != NULL && cur->to != from ) {
+ fromlen += SplineLength( cur );
+ cur = cur->from->prev;
+ }
+ cur = base->to->next;
+ while ( cur!= NULL && cur->from != to ) {
+ tolen += SplineLength( cur );
+ cur = cur->to->next;
+ }
+ ret = fromlen/( fromlen + tolen );
+return( ret );
+}
+
+static int BuildStem( struct glyphdata *gd,struct pointdata *pd,int is_next,
+ int require_existing,int has_existing,int eidx ) {
+ BasePoint *dir;
+ Spline *other, *cur;
+ double t;
+ double tod, fromd, dist;
+ SplinePoint *testpt, *topt, *frompt;
+ struct linedata *line;
+ struct pointdata *testpd, *topd, *frompd;
+ int tp, fp, t_needs_recalc=false, ret=0;
+ uint8 tstub=0, fstub=0;
+ BasePoint opposite;
+ struct stemdata *stem=NULL;
+
+ if ( is_next ) {
+ dir = &pd->nextunit;
+ other = pd->nextedges[eidx];
+ cur = pd->sp->next;
+ t = pd->next_e_t[eidx];
+ dist = pd->next_dist[eidx];
+ } else {
+ dir = &pd->prevunit;
+ other = pd->prevedges[eidx];
+ cur = pd->sp->prev;
+ t = pd->prev_e_t[eidx];
+ dist = pd->prev_dist[eidx];
+ }
+ topt = other->to; frompt = other->from;
+ topd = &gd->points[topt->ptindex];
+ frompd = &gd->points[frompt->ptindex];
+
+ line = is_next ? pd->nextline : pd->prevline;
+ if ( !IsUnitHV( dir,true ) && line != NULL)
+ dir = &line->unit;
+
+ if ( other==NULL )
+return( 0 );
+
+ opposite.x = ((other->splines[0].a*t+other->splines[0].b)*t+other->splines[0].c)*t+other->splines[0].d;
+ opposite.y = ((other->splines[1].a*t+other->splines[1].b)*t+other->splines[1].c)*t+other->splines[1].d;
+
+ if ( eidx == 0 ) tstub = IsStubOrIntersection( gd,dir,pd,topd,is_next,false );
+ if ( eidx == 0 ) fstub = IsStubOrIntersection( gd,dir,pd,frompd,is_next,true );
+ tp = ParallelToDir( topd,false,dir,&opposite,pd->sp,tstub );
+ fp = ParallelToDir( frompd,true,dir,&opposite,pd->sp,fstub );
+
+ /* if none of the opposite points is parallel to the needed vector, then */
+ /* give it one more chance by skipping those points and looking at the next */
+ /* and previous one. This can be useful in situations where the opposite */
+ /* edge cannot be correctly detected just because there are too many points */
+ /* on the spline (which is a very common situation for poorly designed */
+ /* fonts or fonts with quadratic splines). */
+ /* But do that only for colinear spline segments and ensure that there are */
+ /* no bends between two splines. */
+ if ( !tp && ( !fp || t > 0.5 ) &&
+ topd->colinear && &other->to->next != NULL ) {
+ testpt = topt->next->to;
+ testpd = &gd->points[testpt->ptindex];
+ BasePoint *initdir = &topd->prevunit;
+ while ( !tp && topd->colinear && pd->sp != testpt && other->from != testpt && (
+ testpd->prevunit.x * initdir->x +
+ testpd->prevunit.y * initdir->y > 0 )) {
+
+ topt = testpt; topd = testpd;
+ tp = ParallelToDir( topd,false,dir,&opposite,pd->sp,false );
+ testpt = topt->next->to;
+ testpd = &gd->points[testpt->ptindex];
+ }
+ if ( tp ) t_needs_recalc = true;
+ }
+ if ( !fp && ( !fp || t < 0.5 ) &&
+ frompd->colinear && &other->from->prev != NULL ) {
+ testpt = frompt->prev->from;
+ testpd = &gd->points[testpt->ptindex];
+ BasePoint *initdir = &frompd->prevunit;
+ while ( !fp && frompd->colinear && pd->sp != testpt && other->to != testpt && (
+ testpd->prevunit.x * initdir->x +
+ testpd->prevunit.y * initdir->y > 0 )) {
+
+ frompt = testpt; frompd = testpd;
+ fp = ParallelToDir( frompd,true,dir,&opposite,pd->sp,false );
+ testpt = frompt->prev->from;
+ testpd = &gd->points[testpt->ptindex];
+ }
+ if ( fp ) t_needs_recalc = true;
+ }
+ if ( t_needs_recalc )
+ t = RecalcT( other,frompt,topt,t );
+ if ( !tp && !fp ) {
+ if ( has_existing )
+ ret = HalfStemNoOpposite( gd,pd,NULL,dir,is_next );
+return( ret );
+ }
+
+ /* We have several conflicting metrics for getting the "better" stem */
+ /* Generally we prefer the stem with the smaller width (but not always. See tilde) */
+ /* Generally we prefer the stem formed by the point closer to the intersection */
+ tod = (1-t)*NormalDist( &topt->me,&pd->sp->me,dir );
+ fromd = t*NormalDist( &frompt->me,&pd->sp->me,dir );
+
+ if ( tp && (( tod<fromd ) ||
+ ( !fp && ( tod<2*fromd || dist < topd->prev_dist[eidx] ||
+ ConnectsAcross( gd,frompt,true,cur,eidx ) || NearlyParallel( dir,other,t ))))) {
+ stem = TestStem( gd,pd,dir,topt,is_next,false,require_existing,tstub,eidx );
+ }
+ if ( stem == NULL && fp && (( fromd<tod ) ||
+ ( !tp && ( fromd<2*tod || dist < frompd->next_dist[eidx] ||
+ ConnectsAcross( gd,topt,false,cur,eidx ) || NearlyParallel( dir,other,t ))))) {
+ stem = TestStem( gd,pd,dir,frompt,is_next,true,require_existing,fstub,eidx );
+ }
+ if ( eidx == 0 && stem == NULL && !require_existing && cur!=NULL &&
+ !other->knownlinear && !cur->knownlinear )
+ stem = HalfStem( gd,pd,dir,other,t,is_next,eidx );
+ if ( stem != NULL ) ret = 1;
+ if ( has_existing )
+ ret += HalfStemNoOpposite( gd,pd,stem,dir,is_next );
+return( ret );
+}
+
+static void AssignLinePointsToStems( struct glyphdata *gd ) {
+ struct pointdata *pd;
+ struct stemdata *stem;
+ struct linedata *line;
+ struct stem_chunk *chunk;
+ int i, j, stem_hv, line_hv, needs_hv=false;
+
+ for ( i=0; i<gd->stemcnt; ++i ) if ( !gd->stems[i].toobig ) {
+ stem = &gd->stems[i];
+ stem_hv = IsUnitHV( &stem->unit,true );
+ needs_hv = ( stem_hv || ( stem->chunk_cnt == 1 &&
+ stem->chunks[0].stub && IsUnitHV( &stem->unit,false )));
+
+ if ( stem->leftline != NULL ) {
+ line = stem->leftline;
+ line_hv = ( needs_hv && LineFitsHV( line ));
+
+ if ( needs_hv && !line_hv )
+ stem->leftline = NULL;
+ else {
+ for ( j=0; j<line->pcnt; j++ ) {
+ pd = line->points[j];
+ if ( pd->prevline == line && OnStem( stem,&pd->base,true ) &&
+ IsStemAssignedToPoint( pd,stem,false ) == -1) {
+ chunk = AddToStem( gd,stem,pd,NULL,false,false,false );
+ chunk->lpotential = true;
+ } if ( pd->nextline == line && OnStem( stem,&pd->base,true ) &&
+ IsStemAssignedToPoint( pd,stem,true ) == -1 ) {
+ chunk = AddToStem( gd,stem,pd,NULL,true,false,false );
+ chunk->lpotential = true;
+ }
+ }
+ }
+ }
+ if ( stem->rightline != NULL ) {
+ line = stem->rightline;
+ line_hv = ( needs_hv && LineFitsHV( line ));
+
+ if ( needs_hv && !line_hv )
+ stem->rightline = NULL;
+ else {
+ for ( j=0; j<line->pcnt; j++ ) {
+ pd = line->points[j];
+ if ( pd->prevline == line && OnStem( stem,&pd->base,false ) &&
+ IsStemAssignedToPoint( pd,stem,false ) == -1 ) {
+ chunk = AddToStem( gd,stem,NULL,pd,false,false,false );
+ chunk->rpotential = true;
+ } if ( pd->nextline == line && OnStem( stem,&pd->base,false ) &&
+ IsStemAssignedToPoint( pd,stem,true ) == -1 ) {
+ chunk = AddToStem( gd,stem,NULL,pd,false,true,false );
+ chunk->rpotential = true;
+ }
+ }
+ }
+ }
+ }
+}
+
+static struct stemdata *DiagonalCornerStem( struct glyphdata *gd,
+ struct pointdata *pd,int require_existing ) {
+ Spline *other = pd->bothedge;
+ struct pointdata *pfrom = NULL, *pto = NULL, *pd2 = NULL;
+ double width, length;
+ struct stemdata *stem;
+
+ pfrom = &gd->points[other->from->ptindex];
+ pto = &gd->points[other->to->ptindex];
+ if ( pd->symetrical_h && pto->symetrical_h && pd->both_e_t>.9 )
+ pd2 = pto;
+ else if ( pd->symetrical_h && pfrom->symetrical_h && pd->both_e_t<.1 )
+ pd2 = pfrom;
+ else if ( pd->symetrical_v && pto->symetrical_v && pd->both_e_t>.9 )
+ pd2 = pto;
+ else if ( pd->symetrical_v && pfrom->symetrical_v && pd->both_e_t<.1 )
+ pd2 = pfrom;
+ else if ( pd->symetrical_h && other->islinear && other->splines[1].c==0 ) {
+ pd2 = pfrom;
+ } else if ( pd->symetrical_v && other->islinear && other->splines[0].c==0 ) {
+ pd2 = pfrom;
+ } else
+return( NULL );
+
+ if ( pd->symetrical_v )
+ width = (pd->sp->me.x-pd2->sp->me.x);
+ else
+ width = (pd->sp->me.y-pd2->sp->me.y);
+ length = (pd->sp->next->to->me.x-pd->sp->me.x)*(pd->sp->next->to->me.x-pd->sp->me.x) +
+ (pd->sp->next->to->me.y-pd->sp->me.y)*(pd->sp->next->to->me.y-pd->sp->me.y);
+ if ( width*width>length )
+return( NULL );
+
+ stem = FindOrMakeHVStem(gd,pd,pd2,pd->symetrical_h,require_existing);
+return( stem );
+}
+
+static int chunk_cmp( const void *_p1, const void *_p2 ) {
+ const struct stem_chunk *ch1 = _p1, *ch2 = _p2;
+
+ struct stemdata *stem;
+ double loff1=0,roff1=0,loff2=0,roff2=0;
+
+ stem = ch1->parent;
+ if ( stem==NULL )
+return( 0 );
+
+ if ( ch1->l != NULL )
+ loff1 = ( ch1->l->sp->me.x - stem->left.x ) * stem->unit.x +
+ ( ch1->l->sp->me.y - stem->left.y ) * stem->unit.y;
+ if ( ch1->r != NULL )
+ roff1 = ( ch1->r->sp->me.x - stem->right.x ) * stem->unit.x +
+ ( ch1->r->sp->me.y - stem->right.y ) * stem->unit.y;
+ if ( ch2->l != NULL )
+ loff2 = ( ch2->l->sp->me.x - stem->left.x ) * stem->unit.x +
+ ( ch2->l->sp->me.y - stem->left.y ) * stem->unit.y;
+ if ( ch2->r != NULL )
+ roff2 = ( ch2->r->sp->me.x - stem->right.x ) * stem->unit.x +
+ ( ch2->r->sp->me.y - stem->right.y ) * stem->unit.y;
+
+ if ( loff1>loff2 )
+return( 1 );
+ else if ( loff1<loff2 )
+return( -1 );
+ else {
+ if ( roff1>roff2 )
+return( 1 );
+ else if ( roff1<roff2 )
+return( -1 );
+ else
+return( 0 );
+ }
+}
+
+static int stem_cmp( const void *_p1, const void *_p2 ) {
+ struct stemdata * const *st1 = _p1, * const *st2 = _p2;
+ double start1, end1, start2, end2;
+
+ if ( fabs( (*st1)->unit.x ) > fabs( (*st1)->unit.y )) {
+ start1 = (*st1)->right.y; end1 = (*st1)->left.y;
+ start2 = (*st2)->right.y; end2 = (*st2)->left.y;
+ } else {
+ start1 = (*st1)->left.x; end1 = (*st1)->right.x;
+ start2 = (*st2)->left.x; end2 = (*st2)->right.x;
+ }
+
+ if ( start1 > start2 )
+return( 1 );
+ else if ( start1 < start2 )
+return( -1 );
+ else {
+ if ( end1 > end2 )
+return( 1 );
+ else if ( end1 < end2 )
+return( -1 );
+ else
+return( 0 );
+ }
+}
+
+static void FixupT( struct pointdata *pd,int stemidx,int isnext, int eidx ) {
+ /* When we calculated "next/prev_e_t" we deliberately did not use pd1->me */
+ /* (because things get hard at intersections) so our t is only an approx-*/
+ /* imation. We can do a lot better now */
+ Spline *s;
+ Spline myline;
+ SplinePoint end1, end2;
+ double width,t,sign, len, dot;
+ BasePoint pts[9];
+ extended lts[10], sts[10];
+ BasePoint diff;
+ struct stemdata *stem ;
+
+ if ( pd == NULL || stemidx == -1 )
+return;
+ stem = ( isnext ) ? pd->nextstems[stemidx] : pd->prevstems[stemidx];
+ width = ( stem->right.x - stem->left.x )*stem->unit.y -
+ ( stem->right.y-stem->left.y )*stem->unit.x;
+ s = ( isnext ) ? pd->nextedges[eidx] : pd->prevedges[eidx];
+ if ( s==NULL )
+return;
+ diff.x = s->to->me.x-s->from->me.x;
+ diff.y = s->to->me.y-s->from->me.y;
+ if ( diff.x<.001 && diff.x>-.001 && diff.y<.001 && diff.y>-.001 )
+return; /* Zero length splines give us NaNs */
+ len = sqrt( pow( diff.x,2 ) + pow( diff.y,2 ));
+ dot = ( diff.x*stem->unit.x + diff.y*stem->unit.y )/len;
+ if ( dot < .0004 && dot > -.0004 )
+return; /* It's orthogonal to our stem */
+
+ if (( stem->unit.x==1 || stem->unit.x==-1 ) && s->knownlinear )
+ t = (pd->sp->me.x-s->from->me.x)/(s->to->me.x-s->from->me.x);
+ else if (( stem->unit.y==1 || stem->unit.y==-1 ) && s->knownlinear )
+ t = (pd->sp->me.y-s->from->me.y)/(s->to->me.y-s->from->me.y);
+ else {
+ memset(&myline,0,sizeof(myline));
+ memset(&end1,0,sizeof(end1));
+ memset(&end2,0,sizeof(end2));
+ sign = (( isnext && pd->next_is_l[stemidx] ) || ( !isnext && pd->prev_is_l[stemidx] )) ? 1 : -1;
+ myline.knownlinear = myline.islinear = true;
+ end1.me = pd->sp->me;
+ end2.me.x = pd->sp->me.x+1.1*sign*width*stem->l_to_r.x;
+ end2.me.y = pd->sp->me.y+1.1*sign*width*stem->l_to_r.y;
+ end1.nextcp = end1.prevcp = end1.me;
+ end2.nextcp = end2.prevcp = end2.me;
+ end1.nonextcp = end1.noprevcp = end2.nonextcp = end2.noprevcp = true;
+ end1.next = &myline; end2.prev = &myline;
+ myline.from = &end1; myline.to = &end2;
+ myline.splines[0].d = end1.me.x;
+ myline.splines[0].c = end2.me.x-end1.me.x;
+ myline.splines[1].d = end1.me.y;
+ myline.splines[1].c = end2.me.y-end1.me.y;
+ if ( SplinesIntersect(&myline,s,pts,lts,sts)<=0 )
+return;
+ t = sts[0];
+ }
+ if ( isnan(t))
+ IError( "NaN value in FixupT" );
+ if ( isnext )
+ pd->next_e_t[eidx] = t;
+ else
+ pd->prev_e_t[eidx] = t;
+}
+
+/* flags: 1 -- accept curved extrema, 2 -- accept angles, */
+/* 4 -- analyze segments (not just single points) */
+static int IsSplinePeak( struct glyphdata *gd,struct pointdata *pd,
+ int outer,int is_x,int flags ) {
+
+ double base, next, prev, nextctl, prevctl, unit_p, unit_n;
+ Spline *s, *snext, *sprev;
+ struct monotonic **space, *m;
+ int wprev, wnext, i, desired;
+ SplinePoint *sp = pd->sp;
+
+ base = ((real *) &sp->me.x)[!is_x];
+ nextctl = sp->nonextcp ? base : ((real *) &sp->nextcp.x)[!is_x];
+ prevctl = sp->noprevcp ? base : ((real *) &sp->prevcp.x)[!is_x];
+ next = prev = base;
+ snext = sp->next; sprev = sp->prev;
+
+ if ( snext->to == NULL || sprev->from == NULL )
+return( false );
+ if (!( flags & 2) && ( sp->nonextcp || sp->noprevcp ))
+return( false );
+ else if (!( flags & 1 ) && ( pd->colinear ))
+return( false );
+
+ if ( flags & 4 ) {
+ while ( snext->to->next != NULL && snext->to != sp && next == base ) {
+ next = ((real *) &snext->to->me.x)[!is_x];
+ snext = snext->to->next;
+ }
+
+ while ( sprev->from->prev != NULL && sprev->from != sp && prev == base ) {
+ prev = ((real *) &sprev->from->me.x)[!is_x];
+ sprev = sprev->from->prev;
+ }
+ } else {
+ next = ((real *) &snext->to->me.x)[!is_x];
+ prev = ((real *) &sprev->from->me.x)[!is_x];
+ }
+
+ if ( prev<base && next<base && nextctl<=base && prevctl<=base )
+ desired = ( outer ) ? -1 : 1;
+ else if ( prev>base && next>base && prevctl>=base && nextctl>=base )
+ desired = ( outer ) ? 1 : -1;
+ else
+return( false );
+
+ MonotonicFindAt( gd->ms,is_x,((real *) &sp->me.x)[is_x],space = gd->space );
+ wprev = wnext = 0;
+ for ( i=0; space[i]!=NULL; ++i ) {
+ m = space[i];
+ s = m->s;
+
+ if ( s->from == sp )
+ wnext = ((&m->xup)[is_x] ? 1 : -1 );
+ else if ( s->to == sp )
+ wprev = ((&m->xup)[is_x] ? 1 : -1 );
+ }
+
+ if ( wnext != 0 && wprev != 0 && wnext != wprev ) {
+ unit_p = (&pd->prevunit.x)[!is_x];
+ unit_n = (&pd->nextunit.x)[!is_x];
+ if ( unit_p < unit_n && (
+ ( outer && wprev == 1 ) || ( !outer && wprev == -1 )))
+return( desired );
+ else if ( unit_p > unit_n && (
+ ( outer && wnext == 1 ) || ( !outer && wnext == -1 )))
+return( desired );
+ } else {
+ if ( wnext == desired || wprev == desired )
+return( desired );
+ }
+
+return( false );
+}
+
+static struct pointdata *FindClosestOpposite(
+ struct stemdata *stem,struct stem_chunk **chunk,SplinePoint *sp,int *next ) {
+
+ struct pointdata *pd, *ret=NULL;
+ struct stem_chunk *testchunk;
+ double test, proj=1e4;
+ int i, is_l;
+
+ for ( i=0; i<stem->chunk_cnt; ++i ) {
+ testchunk = &stem->chunks[i];
+ pd = NULL;
+ if ( testchunk->l != NULL && testchunk->l->sp==sp ) {
+ pd = testchunk->r;
+ is_l = false;
+ } else if ( testchunk->r != NULL && testchunk->r->sp==sp ) {
+ pd = testchunk->l;
+ is_l = true;
+ }
+
+ if ( pd != NULL ) {
+ test = ( pd->sp->me.x-sp->me.x ) * stem->unit.x +
+ ( pd->sp->me.y-sp->me.y ) * stem->unit.y;
+ if ( test < 0 ) test = -test;
+ if ( test < proj ) {
+ ret = pd;
+ proj = test;
+ *chunk = testchunk;
+ }
+ }
+ }
+ if ( ret != NULL )
+ *next = ( is_l ) ? (*chunk)->lnext : (*chunk)->rnext;
+return( ret );
+}
+
+static int ValueChunk( struct glyphdata *gd,struct vchunk *vchunks,
+ int chcnt,int idx,int l_base ) {
+
+ int peak1=0, peak2=0, val=0;
+ int i, is_x, base_next, opp_next;
+ struct pointdata *base, *opp, *frompd, *topd;
+ struct stem_chunk *chunk = vchunks[idx].chunk, *tchunk;
+ struct stemdata *stem = chunk->parent;
+ double norm, dist;
+ Spline *sbase, *sopp, *other;
+
+ /* If a stem was already present before generating glyph data, */
+ /* then it should always be preferred in case of a conflict */
+ if ( stem->positioned || chunk->stemcheat ) val++;
+
+ if ( l_base ) {
+ base = chunk->l; opp = chunk->r;
+ base_next = chunk->lnext; opp_next = chunk->rnext;
+ } else {
+ base = chunk->r; opp = chunk->l;
+ base_next = chunk->rnext; opp_next = chunk->lnext;
+ }
+ sbase = ( base_next ) ? base->sp->next : base->sp->prev;
+ sopp = ( opp_next ) ? opp->sp->next : opp->sp->prev;
+ other = ( opp_next ) ? opp->nextedges[0] : opp->prevedges[0];
+
+ /* If there are 2 conflicting chunks belonging to different stems but */
+ /* based on the same point, then we have to decide which stem is "better" */
+ /* for that point. We compare stems (or rather chunks) by assigning a */
+ /* value to each of them and then prefer the stem whose value is positive. */
+ /* A chunk gets a +1 value bonus in the following cases: */
+ /* - The stem is vertical/horizontal and splines are curved in the same */
+ /* direction at both sides of the chunk; */
+ /* - A stem has both its width and the distance between the opposite points */
+ /* smaller than another stem; */
+ /* - The common side of two stems is a straight line formed by two points */
+ /* and the opposite point can be projected to line segment between those */
+ /* two points. */
+ if ( IsUnitHV( &stem->unit,true ) && !sbase->knownlinear ) {
+ is_x = (int) rint( stem->unit.y );
+ peak1 = ( is_x ) ? base->x_extr : base->y_extr;
+ peak2 = ( is_x ) ? opp->x_extr : opp->y_extr;
+
+ dist = ( base->base.x - opp->base.x )*stem->unit.x +
+ ( base->base.y - opp->base.y )*stem->unit.y;
+
+ /* Are there any stems attached to the same base point which */
+ /* are narrower than the distance between two points forming the */
+ /* given chunk? */
+ for ( i=0; i<chcnt; i++ ) {
+ tchunk = vchunks[i].chunk;
+ if ( tchunk == NULL || tchunk == chunk || chunk->l == NULL || chunk->r == NULL )
+ continue;
+ norm = tchunk->parent->width;
+ if ( norm < fabs( dist ))
+ break;
+ }
+
+ /* If both points are curved in the same direction, then check also */
+ /* the "line of sight" between those points (if there are interventing */
+ /* splines, then it is not a real feature bend)*/
+ if ( i == chcnt && peak1 + peak2 == 3 && ConnectsAcross( gd,base->sp,opp_next,sopp,0 ))
+ val++;
+ }
+
+ frompd = &gd->points[sbase->from->ptindex];
+ topd = &gd->points[sbase->to->ptindex];
+
+ if (IsStemAssignedToPoint( frompd,stem,true ) != -1 &&
+ IsStemAssignedToPoint( topd,stem,false ) != -1 )
+ if ( other == sbase ) val++;
+
+ dist = vchunks[idx].dist;
+ for ( i=0; i<chcnt; i++ ) {
+ tchunk = vchunks[i].chunk;
+ if ( tchunk == NULL || tchunk == chunk ||
+ ( vchunks[idx].parallel && !vchunks[i].parallel ))
+ continue;
+ if ( vchunks[i].dist <= dist || tchunk->parent->width <= stem->width )
+ break;
+ }
+ if ( i==chcnt ) val++;
+
+ /* If just one of the checked chunks has both its sides parallel */
+ /* to the stem direction, then we consider it is always worth to be output. */
+ /* This check was introduced to avoid situations where a stem marking */
+ /* a feature termination can be preferred to another stem which controls */
+ /* the main part of the same feature */
+ if ( vchunks[idx].parallel ) {
+ for ( i=0; i<chcnt; i++ ) {
+ if ( vchunks[i].chunk == NULL || vchunks[i].chunk == chunk )
+ continue;
+ if ( vchunks[i].parallel )
+ break;
+ }
+ if ( i == chcnt ) val++;
+ }
+
+return( val );
+}
+
+static void CheckPotential( struct glyphdata *gd,struct pointdata *pd,int is_next ) {
+ int i, j, is_l, next1, stemcnt, val;
+ int val_cnt=0;
+ BasePoint *lunit, *runit;
+ struct stemdata **stems;
+ struct vchunk *vchunks;
+ struct stem_chunk *cur;
+
+ stemcnt = ( is_next ) ? pd->nextcnt : pd->prevcnt;
+ stems = ( is_next ) ? pd->nextstems : pd->prevstems;
+ vchunks = calloc( stemcnt,sizeof( VChunk ));
+
+ for ( i=0; i<stemcnt; i++ ) {
+ is_l = ( is_next ) ? pd->next_is_l[i] : pd->prev_is_l[i];
+ FindClosestOpposite( stems[i],&vchunks[i].chunk,pd->sp,&next1 );
+ if ( vchunks[i].chunk == NULL )
+ continue;
+ cur = vchunks[i].chunk;
+ if ( vchunks[i].value > 0 ) val_cnt++;
+ vchunks[i].dist = pow( cur->l->base.x - cur->r->base.x,2 ) +
+ pow( cur->l->base.y - cur->r->base.y,2 );
+ lunit = ( cur->lnext ) ? &cur->l->nextunit : &cur->l->prevunit;
+ runit = ( cur->rnext ) ? &cur->r->nextunit : &cur->r->prevunit;
+ vchunks[i].parallel = UnitsParallel( lunit,&stems[i]->unit,2 ) &&
+ UnitsParallel( runit,&stems[i]->unit,2 );
+ }
+
+ for ( i=0; i<stemcnt; i++ ) if ( vchunks[i].chunk != NULL ) {
+ vchunks[i].value = ValueChunk( gd,vchunks,stemcnt,i,is_l );
+ if ( vchunks[i].value ) val_cnt++;
+ }
+
+ /* If we was unable to figure out any reasons for which at least */
+ /* one of the checked chunks should really be output, then keep */
+ /* all the 'potential' flags as they are and do nothing */
+ if ( val_cnt > 0 ) {
+ for ( i=0; i<stemcnt; i++ ) if ( vchunks[i].chunk != NULL ) {
+ is_l = ( is_next ) ? pd->next_is_l[i] : pd->prev_is_l[i];
+ val = vchunks[i].value;
+ for ( j=0; j<stems[i]->chunk_cnt; j++ ) {
+ cur = &stems[i]->chunks[j];
+ if ( is_l && cur->l == pd ) {
+ if ( val > 0 ) cur->lpotential = false;
+ else cur->lpotential = true;
+ } else if ( !is_l && cur->r == pd ) {
+ if ( val > 0 ) cur->rpotential = false;
+ else cur->rpotential = true;
+ }
+ }
+ }
+ }
+ free( vchunks );
+}
+
+static int StemIsActiveAt( struct glyphdata *gd,struct stemdata *stem,double stempos ) {
+ BasePoint pos,cpos,mpos;
+ int which;
+ double test;
+ double lmin, lmax, rmin, rmax, loff, roff, minoff, maxoff;
+ struct monotonic **space, *m;
+ int winding, nw, closest, i, j;
+
+ pos.x = stem->left.x + stempos*stem->unit.x;
+ pos.y = stem->left.y + stempos*stem->unit.y;
+
+ if ( IsUnitHV( &stem->unit,true )) {
+ which = stem->unit.x==0;
+ MonotonicFindAt(gd->ms,which,((real *) &pos.x)[which],space = gd->space);
+ test = ((real *) &pos.x)[!which];
+
+ lmin = ( stem->lmax - 2*dist_error_hv < -dist_error_hv ) ?
+ stem->lmax - 2*dist_error_hv : -dist_error_hv;
+ lmax = ( stem->lmin + 2*dist_error_hv > dist_error_hv ) ?
+ stem->lmin + 2*dist_error_hv : dist_error_hv;
+ rmin = ( stem->rmax - 2*dist_error_hv < -dist_error_hv ) ?
+ stem->rmax - 2*dist_error_hv : -dist_error_hv;
+ rmax = ( stem->rmin + 2*dist_error_hv > dist_error_hv ) ?
+ stem->rmin + 2*dist_error_hv : dist_error_hv;
+ minoff = test + ( lmin * stem->unit.y - lmax * stem->unit.x );
+ maxoff = test + ( lmax * stem->unit.y - lmin * stem->unit.x );
+
+ winding = 0; closest = -1;
+ for ( i=0; space[i]!=NULL; ++i ) {
+ m = space[i];
+ nw = ((&m->xup)[which] ? 1 : -1 );
+ if ( m->other >= minoff && m->other <= maxoff && nw == 1 ) {
+ closest = i;
+ break;
+ } else if ( m->other > maxoff )
+ break;
+ winding += nw;
+ }
+ if ( closest < 0 )
+return( false );
+
+ cpos.x = ( which ) ? m->other : pos.x ;
+ cpos.y = ( which ) ? pos.y : m->other ;
+ loff = ( cpos.x - stem->left.x ) * stem->unit.y -
+ ( cpos.y - stem->left.y ) * stem->unit.x;
+ if ( loff > lmax || loff < lmin )
+return( false );
+
+ j = MatchWinding(space,i,nw,winding,which,0);
+ if ( j==-1 )
+return( false );
+ m = space[j];
+
+ mpos.x = ( which ) ? m->other : pos.x ;
+ mpos.y = ( which ) ? pos.y : m->other ;
+ roff = ( mpos.x - stem->right.x ) * stem->unit.y -
+ ( mpos.y - stem->right.y ) * stem->unit.x;
+ if ( roff >= rmin && roff <= rmax )
+return( true );
+return( false );
+ } else {
+return( StillStem( gd,dist_error_diag,&pos,stem ));
+ }
+}
+
+/* This function is used to check the distance between a hint's edge */
+/* and a spline and determine the extet where this hint can be */
+/* considered "active". */
+static int WalkSpline( struct glyphdata *gd, struct pointdata *pd,int gonext,
+ struct stemdata *stem,int is_l,int force_ac,BasePoint *res ) {
+
+ int i, curved;
+ double off, dist, min, max;
+ double incr, err;
+ double t, ratio, width;
+ Spline *s;
+ BasePoint *base, *nunit, pos, good;
+ SplinePoint *sp, *nsp;
+ struct pointdata *npd;
+
+ err = ( IsUnitHV( &stem->unit,true )) ? dist_error_hv : dist_error_diag;
+ width = stem->width;
+ ratio = gd->emsize/( 6 * width );
+ if ( err > width/2) err = width/2;
+
+ sp = pd->sp;
+ base = ( is_l ) ? &stem->left : &stem->right;
+ min = ( is_l ) ? stem->lmax - 2*err : stem->rmax - 2*err;
+ max = ( is_l ) ? stem->lmin + 2*err : stem->rmin + 2*err;
+
+ s = ( gonext ) ? sp->next : sp->prev;
+ nsp = ( gonext ) ? s->to : s->from;
+ npd = &gd->points[nsp->ptindex];
+ nunit = ( gonext ) ? &npd->prevunit : &npd->nextunit;
+ good = sp->me;
+
+ off = ( nsp->me.x - base->x )*stem->l_to_r.x +
+ ( nsp->me.y - base->y )*stem->l_to_r.y;
+ /* Some splines have tiny control points and are almost flat */
+ /* think of them as lines then rather than treating them as curves */
+ /* figure out how long they remain within a few orthoganal units of */
+ /* the point */
+ /* We used to check the distance between a control point and a spline */
+ /* and consider the segment "flat" if this distance is smaller than */
+ /* the normal allowed "error" value. However this method doesn't produce */
+ /* consistent results if the spline is not long enough (as usual for */
+ /* fonts with quadratic splines). So now we consider a spline "flat" */
+ /* only if it never deviates too far from the hint's edge and both */
+ /* its terminal points are snappable to the same hint */
+ curved = ( IsStemAssignedToPoint( npd,stem,gonext ) == -1 &&
+ ( off < min || off > max || !UnitsParallel( &stem->unit,nunit,true )));
+
+ /* If a spline does deviate from the edge too far to consider it flat, */
+ /* then we calculate the extent where the spline and the edge are still */
+ /* close enough to consider the hint active at this zone. If the hint is */
+ /* still active at the end of the spline, we can check some subsequent splines */
+ /* too. This method produces better effect than any "magic" manipulations */
+ /* with control point coordinates, because it takes into account just the */
+ /* spline configuration rather than point positions */
+ if ( curved ) {
+ max = err = dist_error_curve;
+ min = -dist_error_curve;
+ /* The following statement forces our code to detect an active zone */
+ /* even if all checks actually fail. This makes sense for stems */
+ /* marking arks and bends */
+ if ( force_ac )
+ good = ( gonext ) ? sp->nextcp : sp->prevcp;
+ /* If a spline is closer to the opposite stem edge than to the current edge, then we */
+ /* can no longer consider the stem active at this point */
+ if ( err > width/2 ) err = width/2;
+
+ t = ( gonext ) ? 0.9999 : 0.0001;
+ for ( ; ; s = ( gonext ) ? s->to->next : s->from->prev ) {
+ pos.x = ((s->splines[0].a*t+s->splines[0].b)*t+s->splines[0].c)*t+s->splines[0].d;
+ pos.y = ((s->splines[1].a*t+s->splines[1].b)*t+s->splines[1].c)*t+s->splines[1].d;
+ off = ( pos.x - base->x )*stem->l_to_r.x +
+ ( pos.y - base->y )*stem->l_to_r.y;
+ dist = ( pos.x - sp->me.x )*stem->unit.x +
+ ( pos.y - sp->me.y )*stem->unit.y;
+ nsp = ( gonext ) ? s->to : s->from;
+ npd = &gd->points[nsp->ptindex];
+ if (fabs( off ) < max && fabs( dist ) <= ( width + width * ratio ) &&
+ nsp != sp && npd->colinear && !npd->x_extr && !npd->y_extr &&
+ StillStem( gd,err,&pos,stem ))
+ good = pos;
+ else
+ break;
+ }
+ }
+ t = .5;
+ incr = ( gonext ) ? .25 : -.25;
+ for ( i=0; i<6; ++i ) {
+ pos.x = ((s->splines[0].a*t+s->splines[0].b)*t+s->splines[0].c)*t+s->splines[0].d;
+ pos.y = ((s->splines[1].a*t+s->splines[1].b)*t+s->splines[1].c)*t+s->splines[1].d;
+ off = ( pos.x - base->x )*stem->l_to_r.x +
+ ( pos.y - base->y )*stem->l_to_r.y;
+ dist = ( pos.x - sp->me.x )*stem->unit.x +
+ ( pos.y - sp->me.y )*stem->unit.y;
+ /* Don't check StillStem for non-curved segments, as they are subject */
+ /* to further projection-related tests anyway */
+ if ( off > min && off < max && ( !curved ||
+ ( fabs( dist ) < ( width + width * ratio ) &&
+ StillStem( gd,err,&pos,stem )))) {
+
+ good = pos;
+ t += incr;
+ } else
+ t -= incr;
+ incr/=2;
+ }
+ *res = good;
+return( curved );
+}
+
+static int AdjustForImperfectSlopeMatch( SplinePoint *sp,BasePoint *pos,
+ BasePoint *newpos,struct stemdata *stem,int is_l ) {
+
+ double poff, err, min, max;
+ BasePoint *base;
+
+ base = ( is_l ) ? &stem->left : &stem->right;
+ err = ( IsUnitHV( &stem->unit,true )) ? dist_error_hv : dist_error_diag;
+ min = ( is_l ) ? stem->lmax - 2*err : stem->rmax - 2*err;
+ max = ( is_l ) ? stem->lmin + 2*err : stem->rmin + 2*err;
+
+ /* Possible if the stem unit has been attached to a line. It is */
+ /* hard to prevent this */
+ if ( min > max ) {
+ min = stem->lmin; max = stem->lmax;
+ }
+
+ poff = ( pos->x - base->x )*stem->l_to_r.x +
+ ( pos->y - base->y )*stem->l_to_r.y;
+ if ( poff > min && poff < max ) {
+ *newpos = *pos;
+return( false );
+ } else if ( poff <= min )
+ err = fabs( min );
+ else if ( poff >= max )
+ err = fabs( max );
+
+ newpos->x = sp->me.x + err*( pos->x - sp->me.x )/fabs( poff );
+ newpos->y = sp->me.y + err*( pos->y - sp->me.y )/fabs( poff );
+return( true );
+}
+
+static int AddLineSegment( struct stemdata *stem,struct segment *space,int cnt,
+ int is_l,struct pointdata *pd,int base_next,struct glyphdata *gd ) {
+
+ double s, e, t, dot;
+ BasePoint stemp, etemp;
+ BasePoint *start, *end, *par_unit;
+ int same_dir, corner = 0, par;
+ int scurved = false, ecurved = false, c, hv;
+ SplinePoint *sp, *psp, *nsp;
+ double b;
+ uint8 extr;
+
+ if ( pd==NULL || (sp = pd->sp)==NULL || sp->ticked ||
+ sp->next==NULL || sp->prev==NULL )
+return( cnt );
+ end = &sp->me;
+ start = &sp->me;
+ par_unit = ( base_next ) ? &pd->nextunit : &pd->prevunit;
+ /* Do the spline and the stem unit point in the same direction ? */
+ dot = ( stem->unit.x * par_unit->x ) +
+ ( stem->unit.y * par_unit->y );
+ same_dir = (( dot > 0 && base_next ) || ( dot < 0 && !base_next ));
+ if ( stem->unit.x == 1 ) corner = pd->y_corner;
+ else if ( stem->unit.y == 1 ) corner = pd->x_corner;
+
+ dot = ( stem->unit.x * pd->nextunit.x ) +
+ ( stem->unit.y * pd->nextunit.y );
+ /* We used to apply normal checks only if the point's unit vector pointing */
+ /* in the direction we are going to check is nearly parallel to the stem unit. */
+ /* But this is not the best method, because a spline, "parallel" to our */
+ /* stem, may actually have filled space at a wrong side. On the other hand, */
+ /* sometimes it makes sense to calculate active space even for splines */
+ /* connected to our base point under an angle which is too large to consider */
+ /* the direction "parallel". So now we check the units' direction first */
+ /* and then (just for straight splines) also their parallelity. */
+ if (( dot > 0 && same_dir ) || ( dot < 0 && !same_dir )) {
+ /* If the segment sp-start doesn't have exactly the right slope, then */
+ /* we can only use that bit of it which is less than a standard error */
+ par = UnitsParallel( &stem->unit,&pd->nextunit,0 );
+ if ( !sp->next->knownlinear ) {
+ ecurved = WalkSpline( gd,pd,true,stem,is_l,par,&etemp );
+ /* Can merge, but treat as curved relatively to projections */
+ if ( !ecurved ) ecurved = 2;
+ end = &etemp;
+ } else if ( par || corner ) {
+ nsp = sp->next->to;
+ ecurved = AdjustForImperfectSlopeMatch( sp,&nsp->me,&etemp,stem,is_l );
+ end = &etemp;
+ }
+ }
+ dot = ( stem->unit.x * pd->prevunit.x ) +
+ ( stem->unit.y * pd->prevunit.y );
+ if (( dot < 0 && same_dir ) || ( dot > 0 && !same_dir )) {
+ par = UnitsParallel( &stem->unit,&pd->prevunit,0 );
+ if ( !sp->prev->knownlinear ) {
+ scurved = WalkSpline( gd,pd,false,stem,is_l,par,&stemp );
+ if ( !scurved ) scurved = 2;
+ start = &stemp;
+ } else if ( par || corner ) {
+ psp = sp->prev->from;
+ scurved = AdjustForImperfectSlopeMatch( sp,&psp->me,&stemp,stem,is_l );
+ start = &stemp;
+ }
+ }
+ sp->ticked = true;
+
+ s = (start->x-stem->left.x)*stem->unit.x +
+ (start->y-stem->left.y)*stem->unit.y;
+ e = ( end->x-stem->left.x)*stem->unit.x +
+ ( end->y-stem->left.y)*stem->unit.y;
+ b = (sp->me.x-stem->left.x)*stem->unit.x +
+ (sp->me.y-stem->left.y)*stem->unit.y;
+
+ if ( s == e )
+return( cnt );
+ if ( s > e ) {
+ t = s; c = scurved;
+ s = e; e = t;
+ scurved = ecurved; ecurved = c;
+ }
+ space[cnt].start = s;
+ space[cnt].end = e;
+ space[cnt].sbase = space[cnt].ebase = b;
+ space[cnt].scurved = scurved;
+ space[cnt].ecurved = ecurved;
+
+ hv = IsUnitHV( &stem->unit,true );
+ if ( hv ) {
+ /* For vertical/horizontal stems we assign a special meaning to */
+ /* the 'curved' field. It will be non-zero if the key point of */
+ /* this segment is positioned on a prominent curve: */
+ /* 1 if the inner side of that curve is inside of the contour */
+ /* and 2 otherwise. */
+ /* Later, if we get a pair of "inner" and "outer" curves, then */
+ /* we are probably dealing with a feature's bend which should be */
+ /* necessarily marked with a hint. Checks we apply for this type */
+ /* of curved segments should be less strict than in other cases. */
+ extr = ( hv == 1 ) ? pd->y_extr : pd->x_extr;
+ space[cnt].curved = extr;
+ } else {
+ /* For diagonal stems we consider a segment "curved" if both its */
+ /* start and end are curved. Curved segments usually cannot be */
+ /* merged (unless scurved or ecurved is equal to 2) and are not */
+ /* checked for "projections". */
+ space[cnt].curved = scurved && ecurved;
+ }
+return( cnt+1 );
+}
+
+static int InActive(double projection,struct segment *segments, int cnt) {
+ int i;
+
+ for ( i=0; i<cnt; ++i ) {
+ if ( projection>=segments[i].start && projection<=segments[i].end )
+return( true );
+ }
+return( false );
+}
+
+static int MergeSegments(struct segment *space, int cnt) {
+ int i,j;
+ double middle;
+
+ for ( i=j=0; i<cnt; ++i, ++j ) {
+ if ( i!=j )
+ space[j] = space[i];
+ while ( i+1<cnt && space[i+1].start<space[j].end ) {
+ if ( space[i+1].end >= space[j].end ) {
+
+ /* If there are 2 overlapping segments and neither the */
+ /* end of the first segment nor the start of the second */
+ /* one are curved we can merge them. Otherwise we have */
+ /* to preserve them both, but modify their start/end properties */
+ /* so that the overlap is removed */
+ if ( space[j].ecurved != 1 && space[i+1].scurved != 1 ) {
+ space[j].end = space[i+1].end;
+ space[j].ebase = space[i+1].ebase;
+ space[j].ecurved = space[i+1].ecurved;
+ space[j].curved = false;
+ } else if ( space[j].ecurved != 1 && space[i+1].scurved == 1 ) {
+ space[i+1].start = space[j].end;
+ --i;
+ } else if ( space[j].ecurved == 1 && space[i+1].scurved != 1 ) {
+ space[j].end = space[i+1].start;
+ --i;
+ } else {
+ middle = (space[j].end + space[i+1].start)/2;
+ space[j].end = space[i+1].start = middle;
+ --i;
+ }
+ }
+ ++i;
+ }
+ }
+return( j );
+}
+
+static int MergeSegmentsFinal( struct segment *space, int cnt ) {
+ int i,j;
+
+ for ( i=j=0; i<cnt; ++i, ++j ) {
+ if ( i!=j )
+ space[j] = space[i];
+ while ( i+1<cnt && space[i+1].start<=space[j].end ) {
+ if ( space[i+1].end>space[j].end ) {
+ space[j].end = space[i+1].end;
+ space[j].ebase = space[i+1].ebase;
+ space[j].ecurved = space[i+1].ecurved;
+ space[j].curved = false;
+ }
+ ++i;
+ }
+ }
+return( j );
+}
+
+static void FigureStemActive( struct glyphdata *gd, struct stemdata *stem ) {
+ int i, j, pcnt=0;
+ struct pointdata *pd, **pspace = gd->pspace;
+ struct stem_chunk *chunk;
+ struct segment *lspace = gd->lspace, *rspace = gd->rspace;
+ struct segment *bothspace = gd->bothspace, *activespace = gd->activespace;
+ int lcnt, rcnt, bcnt, bpos, acnt, cove, startset, endset;
+ double middle, width, len, clen, gap, lseg, rseg;
+ double err, lmin, rmax, loff, roff, last, s, e, sbase, ebase;
+ double proj, proj2, proj3, orig_proj, ptemp;
+
+ width = stem->width;
+
+ for ( i=0; i<gd->pcnt; ++i ) if ( gd->points[i].sp!=NULL )
+ gd->points[i].sp->ticked = false;
+
+ lcnt = rcnt = 0;
+ for ( i=0; i<stem->chunk_cnt; ++i ) {
+ chunk = &stem->chunks[i];
+ if ( chunk->stemcheat )
+ continue;
+ lcnt = AddLineSegment( stem,lspace,lcnt,true ,chunk->l,chunk->lnext,gd );
+ rcnt = AddLineSegment( stem,rspace,rcnt,false,chunk->r,chunk->rnext,gd );
+ }
+ bcnt = 0;
+ if ( lcnt!=0 && rcnt!=0 ) {
+ /* For curved segments we can extend left and right active segments */
+ /* a bit to ensure that they do overlap and thus can be marked with an */
+ /* active zone */
+ if ( rcnt == lcnt && stem->chunk_cnt == lcnt ) {
+ for ( i=0; i<lcnt; i++ ) {
+ /* If it's a feature bend, then our tests should be more liberal */
+ cove = (( rspace[i].curved + lspace[i].curved ) == 3 );
+ gap = 0;
+ if ( lspace[i].start>rspace[i].end && lspace[i].scurved && rspace[i].ecurved )
+ gap = lspace[i].start-rspace[i].end;
+ else if ( rspace[i].start>lspace[i].end && rspace[i].scurved && lspace[i].ecurved )
+ gap = rspace[i].start-lspace[i].end;
+ else if ( !cove )
+ continue;
+
+ lseg = lspace[i].end - lspace[i].start;
+ rseg = rspace[i].end - rspace[i].start;
+ if (( cove && gap < (lseg > rseg ? lseg : rseg )) ||
+ ( gap < ( lseg + rseg )/2 && !stem->chunks[i].stub )) {
+ if ( lspace[i].ebase<rspace[i].start )
+ rspace[i].start = lspace[i].ebase;
+ else if ( lspace[i].sbase>rspace[i].end )
+ rspace[i].end = lspace[i].sbase;
+ if ( rspace[i].ebase<lspace[i].start )
+ lspace[i].start = rspace[i].ebase;
+ else if ( rspace[i].sbase>lspace[i].end )
+ lspace[i].end = rspace[i].sbase;
+ }
+ }
+ }
+ qsort(lspace,lcnt,sizeof(struct segment),segment_cmp);
+ qsort(rspace,rcnt,sizeof(struct segment),segment_cmp);
+ lcnt = MergeSegments( lspace,lcnt );
+ rcnt = MergeSegments( rspace,rcnt );
+ for ( i=j=bcnt=0; i<lcnt && j<rcnt; ++i ) {
+ while ( j<rcnt && rspace[j].end<=lspace[i].start )
+ ++j;
+ while ( j<rcnt && rspace[j].start<=lspace[i].end ) {
+ cove = (( rspace[j].curved + lspace[i].curved ) == 3 );
+
+ s = ( rspace[j].start > lspace[i].start ) ?
+ rspace[j].start : lspace[i].start;
+ e = ( rspace[j].end < lspace[i].end ) ?
+ rspace[j].end : lspace[i].end;
+ sbase = ( rspace[j].start > lspace[i].start ) ?
+ lspace[i].sbase : rspace[j].sbase;
+ ebase = ( rspace[j].end < lspace[i].end ) ?
+ lspace[i].ebase : rspace[j].ebase;
+
+ middle = ( lspace[i].start + rspace[j].start )/2;
+ bothspace[bcnt].start = ( cove && middle < s ) ? middle : s;
+ if ( rspace[j].start > lspace[i].start )
+ bothspace[bcnt].scurved = ( rspace[j].scurved || sbase < s ) ?
+ rspace[j].scurved : lspace[i].scurved;
+ else
+ bothspace[bcnt].scurved = ( lspace[i].scurved || sbase < s ) ?
+ lspace[i].scurved : rspace[j].scurved;
+
+ middle = ( lspace[i].end + rspace[j].end )/2;
+ bothspace[bcnt].end = ( cove && middle > e ) ? middle : e;
+ if ( rspace[j].end < lspace[i].end )
+ bothspace[bcnt].ecurved = ( rspace[j].ecurved || ebase > e ) ?
+ rspace[j].ecurved : lspace[i].ecurved;
+ else
+ bothspace[bcnt].ecurved = ( lspace[i].ecurved || ebase > e ) ?
+ lspace[i].ecurved : rspace[j].ecurved;
+
+ sbase = ( rspace[j].sbase > lspace[i].sbase ) ?
+ rspace[j].sbase : lspace[i].sbase;
+ ebase = ( rspace[j].ebase < lspace[i].ebase ) ?
+ rspace[j].ebase : lspace[i].ebase;
+ if ( sbase > bothspace[bcnt].end )
+ sbase = ebase = bothspace[bcnt].end;
+ else if ( ebase < bothspace[bcnt].start )
+ sbase = ebase = bothspace[bcnt].start;
+ else if ( ebase < sbase )
+ ebase = sbase = ( ebase + sbase )/2;
+ bothspace[bcnt].sbase = sbase;
+ bothspace[bcnt].ebase = ebase;
+
+ bothspace[bcnt++].curved = rspace[j].curved || lspace[i].curved;
+
+ if ( rspace[j].end>lspace[i].end )
+ break;
+ ++j;
+ }
+ }
+ }
+#if GLYPH_DATA_DEBUG
+ fprintf( stderr, "Active zones for stem l=%.2f,%.2f r=%.2f,%.2f dir=%.2f,%.2f:\n",
+ stem->left.x,stem->left.y,stem->right.x,stem->right.y,stem->unit.x,stem->unit.y );
+ for ( i=0; i<lcnt; i++ ) {
+ fprintf( stderr, "\tleft space curved=%d\n",lspace[i].curved );
+ fprintf( stderr, "\t\tstart=%.2f,base=%.2f,curved=%d\n",
+ lspace[i].start,lspace[i].sbase,lspace[i].scurved );
+ fprintf( stderr, "\t\tend=%.2f,base=%.2f,curved=%d\n",
+ lspace[i].end,lspace[i].ebase,lspace[i].ecurved );
+ }
+ for ( i=0; i<rcnt; i++ ) {
+ fprintf( stderr, "\tright space curved=%d\n",rspace[i].curved );
+ fprintf( stderr, "\t\tstart=%.2f,base=%.2f,curved=%d\n",
+ rspace[i].start,rspace[i].sbase,rspace[i].scurved );
+ fprintf( stderr, "\t\tend=%.2f,base=%.2f,curved=%d\n",
+ rspace[i].end,rspace[i].ebase,rspace[i].ecurved );
+ }
+ for ( i=0; i<bcnt; i++ ) {
+ fprintf( stderr, "\tboth space\n" );
+ fprintf( stderr, "\t\tstart=%.2f,base=%.2f,curved=%d\n",
+ bothspace[i].start,bothspace[i].sbase,bothspace[i].scurved );
+ fprintf( stderr, "\t\tend=%.2f,base=%.2f,curved=%d\n",
+ bothspace[i].end,bothspace[i].ebase,bothspace[i].ecurved );
+ }
+ fprintf( stderr,"\n" );
+#endif
+
+ err = ( stem->unit.x == 0 || stem->unit.y == 0 ) ?
+ dist_error_hv : dist_error_diag;
+ lmin = ( stem->lmin < -err ) ? stem->lmin : -err;
+ rmax = ( stem->rmax > err ) ? stem->rmax : err;
+ acnt = 0;
+ if ( bcnt!=0 ) {
+ for ( i=0; i<gd->pcnt; ++i ) if ( (pd = &gd->points[i])->sp!=NULL ) {
+ /* Let's say we have a stem. And then inside that stem we have */
+ /* another rectangle. So our first stem isn't really a stem any */
+ /* more (because we hit another edge first), yet it's still reasonable*/
+ /* to align the original stem */
+ /* Now suppose the rectangle is rotated a bit so we can't make */
+ /* a stem from it. What do we do here? */
+ loff = ( pd->sp->me.x - stem->left.x ) * stem->unit.y -
+ ( pd->sp->me.y - stem->left.y ) * stem->unit.x;
+ roff = ( pd->sp->me.x - stem->right.x ) * stem->unit.y -
+ ( pd->sp->me.y - stem->right.y ) * stem->unit.x;
+
+ if ( loff >= lmin && roff <= rmax ) {
+ pd->projection = (pd->sp->me.x - stem->left.x)*stem->unit.x +
+ (pd->sp->me.y - stem->left.y)*stem->unit.y;
+ if ( InActive(pd->projection,bothspace,bcnt) )
+ pspace[pcnt++] = pd;
+ }
+ }
+ qsort(pspace,pcnt,sizeof(struct pointdata *),proj_cmp);
+
+ bpos = i = 0;
+ while ( bpos<bcnt ) {
+ if ( bothspace[bpos].curved || pcnt==0 ) {
+ activespace[acnt++] = bothspace[bpos++];
+ } else {
+ last = bothspace[bpos].start;
+ startset = false; endset = false;
+
+ if ( bothspace[bpos].scurved ||
+ StemIsActiveAt( gd,stem,bothspace[bpos].start+0.0015 )) {
+
+ activespace[acnt].scurved = bothspace[bpos].scurved;
+ activespace[acnt].start = bothspace[bpos].start;
+ startset = true;
+ }
+
+ /* If the stem is preceded by a curved segment, then skip */
+ /* the first point position and start from the next one. */
+ /* (Otherwise StemIsActiveAt() may consider the stem is */
+ /* "inactive" at the fragment between the start of the active */
+ /* space and the first point actually belonging to this stem) */
+ if ( bothspace[bpos].scurved ) {
+ while ( pcnt>i && pspace[i]->projection < bothspace[bpos].sbase ) i++;
+
+ if ( pcnt > i && pspace[i]->projection >= bothspace[bpos].sbase ) {
+ last = activespace[acnt].end = pspace[i]->projection;
+ activespace[acnt].ecurved = false;
+ activespace[acnt].curved = false;
+ endset=true;
+ }
+ }
+
+ while ( i<pcnt && (
+ ( !bothspace[bpos].ecurved && pspace[i]->projection<bothspace[bpos].end ) ||
+ ( bothspace[bpos].ecurved && pspace[i]->projection<=bothspace[bpos].ebase ))) {
+ if ( last==activespace[acnt].start && pspace[i]->projection >= last ) {
+
+ if ( !StemIsActiveAt( gd,stem,last+(( 1.001*pspace[i]->projection-last )/2.001 ))) {
+ last = activespace[acnt].start = pspace[i]->projection;
+ activespace[acnt].scurved = false;
+ startset = true; endset = false;
+ } else {
+ last = activespace[acnt].end = pspace[i]->projection;
+ activespace[acnt].ecurved = false;
+ activespace[acnt].curved = false;
+ endset = true;
+ }
+ } else if (( last==activespace[acnt].end || !startset )
+ && pspace[i]->projection >= last) {
+
+ if ( !StemIsActiveAt( gd,stem,last+(( 1.001*pspace[i]->projection-last )/2.001 )) ||
+ !startset ) {
+
+ if ( startset ) acnt++;
+ last = activespace[acnt].start = pspace[i]->projection;
+ activespace[acnt].scurved = false;
+ startset = true; endset = false;
+ } else {
+ last = activespace[acnt].end = pspace[i]->projection;
+ activespace[acnt].ecurved = false;
+ activespace[acnt].curved = false;
+ endset = true;
+ }
+ }
+ ++i;
+ }
+
+ if (( bothspace[bpos].ecurved ||
+ StemIsActiveAt( gd,stem,bothspace[bpos].end-0.0015 )) &&
+ startset ) {
+
+ activespace[acnt].end = bothspace[bpos].end;
+ activespace[acnt].ecurved = bothspace[bpos].ecurved;
+ activespace[acnt].curved = bothspace[bpos].curved;
+ endset = true;
+ }
+ ++bpos;
+ if ( endset ) ++acnt;
+ }
+ }
+ }
+
+ for ( i=0; i<stem->chunk_cnt; ++i ) {
+ chunk = &stem->chunks[i];
+ /* stemcheat 1 -- diagonal edge stem;
+ * 2 -- diagonal corner stem with a sharp top;
+ * 3 -- diagonal corner stem with a flat top;
+ * 4 -- bounding box hint */
+ if ( chunk->stemcheat==3 && chunk->l!=NULL && chunk->r!=NULL &&
+ i+1<stem->chunk_cnt &&
+ stem->chunks[i+1].stemcheat==3 &&
+ ( chunk->l==stem->chunks[i+1].l ||
+ chunk->r==stem->chunks[i+1].r )) {
+
+ SplinePoint *sp = chunk->l==stem->chunks[i+1].l ?
+ chunk->l->sp : chunk->r->sp;
+ proj = (sp->me.x - stem->left.x) *stem->unit.x +
+ (sp->me.y - stem->left.y) *stem->unit.y;
+
+ SplinePoint *sp2 = chunk->l==stem->chunks[i+1].l ?
+ chunk->r->sp : chunk->l->sp;
+ SplinePoint *sp3 = chunk->l==stem->chunks[i+1].l ?
+ stem->chunks[i+1].r->sp : stem->chunks[i+1].l->sp;
+ proj2 = (sp2->me.x - stem->left.x) *stem->unit.x +
+ (sp2->me.y - stem->left.y) *stem->unit.y;
+ proj3 = (sp3->me.x - stem->left.x) *stem->unit.x +
+ (sp3->me.y - stem->left.y) *stem->unit.y;
+
+ if ( proj2>proj3 ) {
+ ptemp = proj2; proj2 = proj3; proj3 = ptemp;
+ }
+
+ if ( (proj3-proj2) < width ) {
+ activespace[acnt ].curved = true;
+ proj2 -= width/2;
+ proj3 += width/2;
+ } else {
+ activespace[acnt ].curved = false;
+ }
+
+ activespace[acnt].start = proj2;
+ activespace[acnt].end = proj3;
+ activespace[acnt].sbase = activespace[acnt].ebase = proj;
+ acnt++;
+ ++i;
+ } else if ( chunk->stemcheat && chunk->l!=NULL && chunk->r!=NULL ) {
+ SplinePoint *sp = chunk->l->sp;
+ proj = ( sp->me.x - stem->left.x ) * stem->unit.x +
+ ( sp->me.y - stem->left.y ) * stem->unit.y;
+ orig_proj = proj;
+ SplinePoint *other = chunk->lnext ? sp->next->to : sp->prev->from;
+ len = (other->me.x - sp->me.x) * stem->unit.x +
+ (other->me.y - sp->me.y) * stem->unit.y;
+ if ( chunk->stemcheat == 2 )
+ proj -= width/2;
+ else if ( len<0 )
+ proj -= width;
+ activespace[acnt].curved = true;
+ activespace[acnt].start = proj;
+ activespace[acnt].end = proj+width;
+ activespace[acnt].sbase = activespace[acnt].ebase = orig_proj;
+ acnt++;
+ }
+ }
+
+ if ( acnt!=0 ) {
+ stem->activecnt = MergeSegmentsFinal( activespace,acnt );
+ stem->active = malloc(acnt*sizeof(struct segment));
+ memcpy(stem->active,activespace,acnt*sizeof(struct segment));
+ }
+
+ len = clen = 0;
+ for ( i=0; i<acnt; ++i ) {
+ if ( stem->active[i].curved )
+ clen += stem->active[i].end-stem->active[i].start;
+ else
+ len += stem->active[i].end-stem->active[i].start;
+ }
+ stem->len = len; stem->clen = len+clen;
+}
+
+static void GDStemsFixupIntersects(struct glyphdata *gd) {
+ int i, j, stemidx;
+ struct stemdata *stem;
+ struct stem_chunk *chunk;
+
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ for ( j=0; j<stem->chunk_cnt; ++j ) {
+ chunk = &stem->chunks[j];
+ if ( chunk->l!=NULL ) {
+ stemidx = IsStemAssignedToPoint( chunk->l,stem,true );
+ FixupT( chunk->l,stemidx,true,chunk->l_e_idx );
+ stemidx = IsStemAssignedToPoint( chunk->l,stem,false );
+ FixupT( chunk->l,stemidx,false,chunk->l_e_idx );
+ }
+ if ( chunk->r!=NULL ) {
+ stemidx = IsStemAssignedToPoint( chunk->r,stem,true );
+ FixupT( chunk->r,stemidx,true,chunk->r_e_idx );
+ stemidx = IsStemAssignedToPoint( chunk->r,stem,false );
+ FixupT( chunk->r,stemidx,false,chunk->r_e_idx );
+ }
+ }
+ }
+}
+
+static int StemsWouldConflict( struct stemdata *stem1,struct stemdata *stem2 ) {
+ double loff, roff, s1, s2, e1, e2;
+ int acnt1, acnt2;
+
+ if ( stem1 == stem2 || !UnitsParallel( &stem1->unit,&stem2->unit,true ))
+return( false );
+
+ loff = ( stem2->left.x - stem1->left.x ) * stem1->unit.y -
+ ( stem2->left.y - stem1->left.y ) * stem1->unit.x;
+ roff = ( stem2->right.x - stem1->right.x ) * stem1->unit.y -
+ ( stem2->right.y - stem1->right.y ) * stem1->unit.x;
+ loff = fabs( loff ); roff = fabs( roff );
+ if ( loff > stem1->width || roff > stem1->width )
+return( false );
+
+ acnt1 = stem1->activecnt;
+ acnt2 = stem2->activecnt;
+ if ( acnt1 == 0 || acnt2 == 0 )
+return( false );
+ s1 = stem1->active[0].start; e1 = stem1->active[acnt1-1].end;
+ s2 = stem2->active[0].start; e2 = stem2->active[acnt2-1].end;
+
+ loff = ( stem2->left.x - stem1->left.x ) * stem1->unit.x +
+ ( stem2->left.y - stem1->left.y ) * stem1->unit.y;
+ if (( s2+loff >= s1 && s2+loff <= e1 ) || ( e2+loff >= s1 && e2+loff <= e1 ) ||
+ ( s2+loff <= s1 && e2+loff >= e1 ) || ( e2+loff <= s1 && s2+loff >= e1 ))
+return( true );
+
+return( false );
+}
+
+/* Convert diagonal stems generated for stubs and intersections to horizontal */
+/* or vertical, if they have just one chunk. This should be done before calculating */
+/* active zones, as they are calculated against each stem's unit vector */
+static void GDNormalizeStubs( struct glyphdata *gd ) {
+ int i, j, hv;
+ struct stemdata *stem;
+ struct stem_chunk *chunk;
+ BasePoint newdir;
+
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ if ( stem->positioned )
+ continue;
+
+ if ( !IsUnitHV( &stem->unit,true )) {
+ hv = IsUnitHV( &stem->unit,false );
+ if ( hv && StemFitsHV( stem,( hv == 1 ),3 )) {
+ if ( hv == 2 && stem->unit.y < 0 )
+ SwapEdges( gd,stem );
+
+ newdir.x = fabs( rint( stem->unit.x ));
+ newdir.y = fabs( rint( stem->unit.y ));
+ SetStemUnit( stem,newdir );
+
+ for ( j=0; j<stem->chunk_cnt && stem->leftidx == -1 && stem->rightidx == -1; j++ ) {
+ chunk = &stem->chunks[j];
+
+ if ( stem->leftidx == -1 && chunk->l != NULL )
+ stem->leftidx = GetValidPointDataIndex( gd,chunk->l->sp,stem );
+ if ( stem->rightidx == -1 && chunk->r != NULL )
+ stem->rightidx = GetValidPointDataIndex( gd,chunk->r->sp,stem );
+ }
+ }
+ }
+ }
+}
+
+static void GDFindUnlikelyStems( struct glyphdata *gd ) {
+ double width, minl, ratio;
+ int i, j, k, stem_cnt, ls_cnt, rs_cnt, ltick, rtick;
+ struct pointdata *lpd, *rpd;
+ Spline *ls, *rs;
+ SplinePoint *lsp, *rsp;
+ BasePoint *lunit, *runit, *slunit, *srunit, *sunit;
+ struct stemdata *stem, *stem1, *tstem;
+ struct stemdata **tstems, **lstems, **rstems;
+ struct stem_chunk *chunk;
+
+ GDStemsFixupIntersects( gd );
+
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+
+ /* If stem had been already present in the spline char before we */
+ /* started generating glyph data, then it should never be */
+ /* considered "too big" */
+ if ( stem->positioned )
+ continue;
+
+ /* If a stem has straight edges, and it is wider than tall */
+ /* then it is unlikely to be a real stem */
+ width = stem->width;
+ ratio = IsUnitHV( &stem->unit,true ) ? gd->emsize/( 6 * width ) : -0.25;
+ stem->toobig = ( stem->clen + stem->clen * ratio < width );
+ }
+
+ /* One more check for curved stems. If a stem has just one active */
+ /* segment, this segment is curved and the stem has no conflicts, */
+ /* then select the active segment length which allows us to consider */
+ /* this stem suitable for PS output by such a way, that stems connecting */
+ /* the opposite sides of a circle are always accepted */
+ for ( i=0; i<gd->stemcnt; ++i ) if ( gd->stems[i].toobig ) {
+ stem = &gd->stems[i];
+ width = stem->width;
+
+ if ( IsUnitHV( &stem->unit,true ) && stem->activecnt == 1 &&
+ stem->active[0].curved && width/2 > dist_error_curve ) {
+
+ for ( j=0; j<gd->stemcnt; ++j) {
+ stem1 = &gd->stems[j];
+
+ if ( !stem1->toobig && StemsWouldConflict( stem,stem1 ))
+ break;
+ }
+
+ if ( j == gd->stemcnt ) {
+ minl = sqrt( pow( width/2,2 ) - pow( width/2 - dist_error_curve,2 ));
+ if ( stem->clen >= minl ) stem->toobig = false;
+ }
+ }
+ }
+
+ /* And finally a check for stubs and feature terminations. We don't */
+ /* want such things to be controlled by any special hints, if there */
+ /* is already a hint controlling the middle of the same feature */
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ if ( stem->positioned )
+ continue;
+
+ if ( stem->chunk_cnt == 1 && stem->chunks[0].stub & 3 ) {
+ chunk = &stem->chunks[0];
+ slunit = chunk->lnext ? &chunk->l->nextunit : &chunk->l->prevunit;
+ srunit = chunk->rnext ? &chunk->r->nextunit : &chunk->r->prevunit;
+
+ /* This test is valid only for features which are not exactly horizontal/ */
+ /* vertical. But we can't check this using the stem unit, as it may have */
+ /* already beeen reset to HV. So we use the units of this stem's base points */
+ /* instead. */
+ if ( IsUnitHV( slunit,true ) && IsUnitHV( srunit,true ))
+ continue;
+ if ( UnitCloserToHV( srunit,slunit ) > 0 ) sunit = srunit;
+ else sunit = slunit;
+
+ lpd = chunk->l; lsp = lpd->sp; lstems = tstems = NULL;
+ ls_cnt = 0;
+ do {
+ stem_cnt = (( chunk->lnext && lpd == chunk->l ) ||
+ ( !chunk->lnext && lpd != chunk->l )) ? lpd->nextcnt : lpd->prevcnt;
+ for ( j=0; j<stem_cnt; j++ ) {
+ tstems= (( chunk->lnext && lpd == chunk->l ) ||
+ ( !chunk->lnext && lpd != chunk->l )) ? lpd->nextstems : lpd->prevstems;
+ tstem = tstems[j];
+ if ( tstem != stem ) {
+ lstems = tstems;
+ ls_cnt = stem_cnt;
+ break;
+ }
+ }
+ if( lstems != NULL )
+ break;
+ ls = ( chunk->lnext ) ? lsp->next : lsp->prev;
+ if ( ls == NULL )
+ break;
+ lsp = ( chunk->lnext ) ? ls->to : ls->from;
+ lpd = &gd->points[lsp->ptindex];
+ lunit = ( chunk->lnext ) ? &lpd->prevunit : &lpd->nextunit;
+ } while ( lpd != chunk->l && lpd != chunk->r &&
+ UnitsParallel( lunit,sunit,false ));
+
+ rpd = chunk->r; rsp = rpd->sp; rstems = tstems = NULL;
+ rs_cnt = 0;
+ do {
+ stem_cnt = (( chunk->rnext && rpd == chunk->r ) ||
+ ( !chunk->rnext && rpd != chunk->r )) ? rpd->nextcnt : rpd->prevcnt;
+ for ( j=0; j<stem_cnt; j++ ) {
+ tstems= (( chunk->rnext && rpd == chunk->r ) ||
+ ( !chunk->rnext && rpd != chunk->r )) ? rpd->nextstems : rpd->prevstems;
+ tstem = tstems[j];
+ if ( tstem != stem ) {
+ rstems = tstems;
+ rs_cnt = stem_cnt;
+ break;
+ }
+ }
+ if( rstems != NULL )
+ break;
+ rs = ( chunk->rnext ) ? rsp->next : rsp->prev;
+ if ( rs == NULL )
+ break;
+ rsp = ( chunk->rnext ) ? rs->to : rs->from;
+ rpd = &gd->points[rsp->ptindex];
+ runit = ( chunk->rnext ) ? &rpd->prevunit : &rpd->nextunit;
+ } while ( rpd != chunk->r && rpd != chunk->l &&
+ UnitsParallel( runit,sunit,false ));
+
+ if ( lstems != NULL && rstems !=NULL ) {
+ for ( j=0; j<ls_cnt && !stem->toobig; j++ ) {
+ for ( k=0; k<rs_cnt && !stem->toobig; k++ ) {
+ if ( lstems[j] == rstems[k] && IsUnitHV( &lstems[j]->unit,true )) {
+ stem->toobig = true;
+ }
+ }
+ }
+ }
+ }
+
+ /* One more check for intersections between a curved segment and a */
+ /* straight feature. Imagine a curve intersected by two bars, like in a Euro */
+ /* glyph. Very probably we will get two chunks, one controlling the uppest */
+ /* two points of intersection, and another the lowest two, and most probably */
+ /* these two chunks will get merged into a single stem (so this stem will */
+ /* even get an exactly vertical vector). Yet we don't need this stem because */
+ /* there is already a stem controlling the middle of the curve (between two */
+ /* bars).*/
+ else if ( stem->chunk_cnt == 2 &&
+ (( stem->chunks[0].stub & 7 && stem->chunks[1].stub & 6 ) ||
+ ( stem->chunks[0].stub & 6 && stem->chunks[1].stub & 7 ))) {
+ for ( j=0; j<gd->stemcnt; ++j) {
+ stem1 = &gd->stems[j];
+ if ( !stem1->toobig && StemsWouldConflict( stem,stem1 ))
+ break;
+ }
+
+ if ( j < gd->stemcnt )
+ stem->toobig = true;
+ }
+ }
+
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ if ( IsUnitHV( &stem->unit,true ))
+ continue;
+
+ /* If a diagonal stem doesn't have at least 2 points assigned to */
+ /* each edge, then we probably can't instruct it. However we don't */
+ /* disable stems which have just one point on each side, if those */
+ /* points are inflection points, as such stems may be useful for */
+ /* metafont routines */
+ if ( stem->lpcnt < 2 || stem->rpcnt < 2 ) {
+ lpd = rpd = NULL;
+ for ( j=0; j<stem->chunk_cnt && lpd == NULL && rpd == NULL; j++ ) {
+ chunk = &stem->chunks[j];
+ if ( chunk->l != NULL ) lpd = chunk->l;
+ if ( chunk->r != NULL ) rpd = chunk->r;
+ }
+ if (lpd == NULL || rpd == NULL ||
+ !IsInflectionPoint( gd,lpd ) || !IsInflectionPoint( gd,rpd ) || stem->clen < stem->width )
+ stem->toobig = 2;
+ } else if ( stem->activecnt >= stem->chunk_cnt )
+ stem->toobig = 2;
+ }
+
+ /* When using preexisting stem data, occasionally we can get two slightly */
+ /* different stems (one predefined, another recently detected) with nearly */
+ /* parallel vectors, sharing some points at both sides. Attempting to instruct */
+ /* them both would lead to very odd effects. So we must disable one */
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ if ( !stem->positioned || IsUnitHV( &stem->unit,true ))
+ continue;
+
+ for ( j=0; j<gd->stemcnt; ++j ) {
+ tstem = &gd->stems[j];
+ if ( tstem == stem || tstem->toobig || !UnitsParallel( &stem->unit,&tstem->unit,false ))
+ continue;
+
+ ltick = false; rtick = false;
+ for ( k=0; k<stem->chunk_cnt && ( !ltick || !rtick ); k++ ) {
+ chunk = &stem->chunks[k];
+
+ if ( chunk->l != NULL &&
+ IsStemAssignedToPoint( chunk->l,stem ,chunk->lnext ) != -1 &&
+ IsStemAssignedToPoint( chunk->l,tstem,chunk->lnext ) != -1 )
+ ltick = true;
+ if ( chunk->r != NULL &&
+ IsStemAssignedToPoint( chunk->r,stem ,chunk->rnext ) != -1 &&
+ IsStemAssignedToPoint( chunk->r,tstem,chunk->rnext ) != -1 )
+ rtick = true;
+ }
+ if ( ltick && rtick ) tstem->toobig = 2;
+ }
+ }
+}
+
+static int StemPointOnDiag( struct glyphdata *gd,struct stemdata *stem,
+ struct pointdata *pd ) {
+
+ struct stemdata *tstem;
+ int i, is_next, stemcnt;
+
+ if ( gd->only_hv || pd->colinear )
+return( false );
+
+ is_next = IsStemAssignedToPoint( pd,stem,false ) != -1;
+ stemcnt = ( is_next ) ? pd->nextcnt : pd->prevcnt;
+
+ for ( i=0; i<stemcnt; i++ ) {
+ tstem = ( is_next ) ? pd->nextstems[i] : pd->prevstems[i];
+ if ( !IsUnitHV( &tstem->unit,true ) &&
+ tstem->lpcnt >= 2 && tstem->rpcnt >=2 )
+return( true );
+ }
+return( false );
+}
+
+static void FindRefPointsExisting( struct glyphdata *gd,struct stemdata *stem ) {
+ int i;
+ int pos, lbase, rbase, is_x;
+ struct stem_chunk *chunk;
+ struct pointdata *pd;
+
+ is_x = (int) rint( stem->unit.y );
+ lbase = ((real *) &stem->left.x)[!is_x];
+ rbase = ((real *) &stem->right.x)[!is_x];
+
+ for ( i=0; i<stem->chunk_cnt; ++i ) {
+ chunk = &stem->chunks[i];
+
+ if ( chunk->ltick ) {
+ pd = chunk->l;
+ pos = ((real *) &pd->sp->me.x)[!is_x];
+ if ( pos == lbase ) {
+ pd->value++;
+ if ( pd->sp->ptindex < gd->realcnt )
+ pd->value++;
+ if ( StemPointOnDiag( gd,stem,pd ))
+ pd->value++;
+ }
+ }
+
+ if ( chunk->rtick ) {
+ pd = chunk->r;
+ pos = ((real *) &pd->sp->me.x)[!is_x];
+ if ( pos == rbase ) {
+ pd->value++;
+ if ( pd->sp->ptindex < gd->realcnt )
+ pd->value++;
+ if ( StemPointOnDiag( gd,stem,pd ))
+ pd->value++;
+ }
+ }
+ }
+}
+
+static void FindRefPointsNew( struct glyphdata *gd,struct stemdata *stem ) {
+ int i, j;
+ int pos, lpos, rpos, testpos, is_x;
+ int lval, rval;
+ struct stem_chunk *chunk;
+ struct pointdata *lmost1, *lmost2, *rmost1, *rmost2;
+ double llen, prevllen, rlen, prevrlen;
+ SplinePoint *sp, *tsp;
+ uint8 *lextr, *rextr;
+
+ is_x = (int) rint( stem->unit.y );
+ lpos = ((real *) &stem->left.x)[!is_x];
+ rpos = ((real *) &stem->right.x)[!is_x];
+
+ lmost1 = rmost1 = lmost2 = rmost2 = NULL;
+ llen = prevllen = rlen = prevrlen = 0;
+ for ( i=0; i<stem->chunk_cnt; ++i ) {
+ chunk = &stem->chunks[i];
+
+ if ( chunk->ltick ) {
+ sp = chunk->l->sp;
+ pos = ((real *) &sp->me.x)[!is_x];
+ lval = 0;
+ for ( j=0; j<i; j++ ) if ( stem->chunks[j].ltick ) {
+ tsp = stem->chunks[j].l->sp;
+ testpos = ((real *) &tsp->me.x)[!is_x];
+ if ( pos == testpos ) {
+ lval = stem->chunks[j].l->value;
+ stem->chunks[j].l->value++;
+ /* An additional bonus for points which form together */
+ /* a longer stem segment */
+ if ( sp->next->to == tsp || sp->prev->from == tsp ) {
+ llen = fabs(( sp->me.x - tsp->me.x )*stem->unit.x +
+ ( sp->me.y - tsp->me.y )*stem->unit.y );
+ if ( llen > prevllen ) {
+ lmost1 = stem->chunks[j].l;
+ lmost2 = chunk->l;
+ prevllen = llen;
+ }
+ }
+ }
+ }
+ chunk->l->value = lval+1;
+
+ if ( lval == 0 &&
+ ( stem->lmin - ( pos - lpos ) > -dist_error_hv ) &&
+ ( stem->lmax - ( pos - lpos ) < dist_error_hv ))
+ chunk->l->value++;
+ }
+
+ if ( chunk->rtick ) {
+ sp = chunk->r->sp;
+ pos = ((real *) &sp->me.x)[!is_x];
+ rval = 0;
+ for ( j=0; j<i; j++ ) if ( stem->chunks[j].rtick ) {
+ tsp = stem->chunks[j].r->sp;
+ testpos = ((real *) &tsp->me.x)[!is_x];
+ if ( pos == testpos ) {
+ rval = stem->chunks[j].r->value;
+ stem->chunks[j].r->value++;
+ if ( sp->next->to == tsp || sp->prev->from == tsp ) {
+ rlen = fabs(( sp->me.x - tsp->me.x )*stem->unit.x +
+ ( sp->me.y - tsp->me.y )*stem->unit.y );
+ if ( rlen > prevrlen ) {
+ rmost1 = stem->chunks[j].r;
+ rmost2 = chunk->r;
+ prevrlen = rlen;
+ }
+ }
+ }
+ }
+ chunk->r->value = rval+1;
+
+ if ( rval == 0 &&
+ ( stem->rmin - ( pos - rpos ) > -dist_error_hv ) &&
+ ( stem->rmax - ( pos - rpos ) < dist_error_hv ))
+ chunk->r->value++;
+ }
+ }
+ if ( lmost1 != NULL && lmost2 != NULL ) {
+ lmost1->value++; lmost2->value++;
+ }
+ if ( rmost1 != NULL && rmost2 != NULL ) {
+ rmost1->value++; rmost2->value++;
+ }
+
+ /* Extrema points get an additional value bonus. This should */
+ /* prevent us from preferring wrong points for stems controlling */
+ /* curved segments */
+ /* Third pass to assign bonuses to extrema points (especially */
+ /* to those extrema which are opposed to another extremum point) */
+ for ( i=0; i<stem->chunk_cnt; ++i ) {
+ chunk = &stem->chunks[i];
+ if ( chunk->ltick ) {
+ lextr = ( is_x ) ? &chunk->l->x_extr : &chunk->l->y_extr;
+ if ( *lextr ) chunk->l->value++;
+ }
+ if ( chunk->rtick ) {
+ rextr = ( is_x ) ? &chunk->r->x_extr : &chunk->r->y_extr;
+ if ( *rextr ) chunk->r->value++;
+ }
+
+ if ( chunk->ltick && chunk->rtick ) {
+ lextr = ( is_x ) ? &chunk->l->x_extr : &chunk->l->y_extr;
+ rextr = ( is_x ) ? &chunk->r->x_extr : &chunk->r->y_extr;
+ if ( *lextr && *rextr ) {
+ chunk->l->value++;
+ chunk->r->value++;
+ }
+ }
+ }
+}
+
+static void NormalizeStem( struct glyphdata *gd,struct stemdata *stem ) {
+ int i;
+ int lval, rval, val, lset, rset, best;
+ double loff=0, roff=0;
+ BasePoint lold, rold;
+ SplinePoint *lbest, *rbest;
+ struct stem_chunk *chunk;
+
+ /* First sort the stem chunks by their coordinates */
+ if ( IsUnitHV( &stem->unit,true )) {
+ qsort( stem->chunks,stem->chunk_cnt,sizeof( struct stem_chunk ),chunk_cmp );
+
+ /* For HV stems we have to check all chunks once more in order */
+ /* to figure out "left" and "right" positions most typical */
+ /* for this stem. We perform this by assigning a value to */
+ /* left and right side of this chunk. */
+
+ /* First pass to determine some point properties necessary */
+ /* for subsequent operations */
+ for ( i=0; i<stem->chunk_cnt; ++i ) {
+ chunk = &stem->chunks[i];
+ if ( chunk->ltick )
+ /* reset the point's "value" to zero */
+ chunk->l->value = 0;
+ if ( chunk->rtick )
+ chunk->r->value = 0;
+ }
+
+ /* Second pass to check which positions relative to stem edges are */
+ /* most common for this stem. Each position which repeats */
+ /* more than once gets a plus 1 value bonus */
+ if ( stem->positioned ) FindRefPointsExisting( gd,stem );
+ else FindRefPointsNew( gd,stem );
+
+ best = -1; val = 0;
+ for ( i=0; i<stem->chunk_cnt; ++i ) {
+ chunk = &stem->chunks[i];
+ lval = ( chunk->l != NULL ) ? chunk->l->value : 0;
+ rval = ( chunk->r != NULL ) ? chunk->r->value : 0;
+ if ((( chunk->l != NULL && chunk->l->value > 0 &&
+ GetValidPointDataIndex( gd,chunk->l->sp,stem ) != -1 ) ||
+ ( stem->ghost && stem->width == 21 )) &&
+ (( chunk->r != NULL && chunk->r->value > 0 &&
+ GetValidPointDataIndex( gd,chunk->r->sp,stem ) != -1 ) ||
+ ( stem->ghost && stem->width == 20 )) && lval + rval > val ) {
+
+ best = i;
+ val = lval + rval;
+ }
+ }
+ if ( best > -1 ) {
+ if ( !stem->ghost || stem->width == 20 ) {
+ lold = stem->left;
+ lbest = stem->chunks[best].l->sp;
+ stem->left = lbest->me;
+ stem->leftidx = GetValidPointDataIndex( gd,lbest,stem );
+
+ /* Now assign "left" and "right" properties of the stem */
+ /* to point coordinates taken from the most "typical" chunk */
+ /* of this stem. We also have to recalculate stem width and */
+ /* left/right offset values */
+ loff = ( stem->left.x - lold.x ) * stem->unit.y -
+ ( stem->left.y - lold.y ) * stem->unit.x;
+ stem->lmin -= loff; stem->lmax -= loff;
+ }
+ if ( !stem->ghost || stem->width == 21 ) {
+ rold = stem->right;
+ rbest = stem->chunks[best].r->sp;
+ stem->right = rbest->me;
+ stem->rightidx = GetValidPointDataIndex( gd,rbest,stem );
+ roff = ( stem->right.x - rold.x ) * stem->unit.y -
+ ( stem->right.y - rold.y ) * stem->unit.x;
+ stem->rmin -= roff; stem->rmax -= roff;
+ }
+ if ( !stem->ghost )
+ stem->width = ( stem->right.x - stem->left.x ) * stem->unit.y -
+ ( stem->right.y - stem->left.y ) * stem->unit.x;
+ } else {
+ for ( i=0; i<stem->chunk_cnt; ++i ) {
+ chunk = &stem->chunks[i];
+ if ( chunk->l != NULL && ( !stem->ghost || stem->width == 20 )) {
+ stem->leftidx = GetValidPointDataIndex( gd,chunk->l->sp,stem );
+ }
+ if ( chunk->r != NULL && ( !stem->ghost || stem->width == 21 )) {
+ stem->rightidx = GetValidPointDataIndex( gd,chunk->r->sp,stem );
+ }
+ }
+ }
+ } else {
+ qsort( stem->chunks,stem->chunk_cnt,sizeof( struct stem_chunk ),chunk_cmp );
+ lset = false; rset = false;
+ /* Search for a pair of points whose vectors are really parallel. */
+ /* This check is necessary because a diagonal stem can start from */
+ /* a feature termination, and our checks for such terminations */
+ /* are more "liberal" than in other cases. However we don't want */
+ /* considering such a pair of points basic for this stem */
+ for ( i=0; i<stem->chunk_cnt; ++i ) {
+ chunk = &stem->chunks[i];
+ BasePoint *lu, *ru;
+ if ( chunk->l != NULL && chunk->r != NULL ) {
+ lu = chunk->lnext ? &chunk->l->nextunit : &chunk->l->prevunit;
+ ru = chunk->rnext ? &chunk->r->nextunit : &chunk->r->prevunit;
+ if ( UnitsParallel( lu,ru,true )) {
+ loff = ( chunk->l->sp->me.x - stem->left.x )*stem->l_to_r.x +
+ ( chunk->l->sp->me.y - stem->left.y )*stem->l_to_r.y;
+ roff = ( chunk->r->sp->me.x - stem->right.x )*stem->l_to_r.x +
+ ( chunk->r->sp->me.y - stem->right.y )*stem->l_to_r.y;
+ stem->left = chunk->l->sp->me;
+ stem->right = chunk->r->sp->me;
+ RecalcStemOffsets( stem,&stem->unit,loff != 0,roff != 0 );
+ break;
+ }
+ }
+ }
+ /* If the above check fails, just select the first point (relatively) */
+ /* to the stem direction both at the left and the right edge */
+ if ( i == stem->chunk_cnt ) for ( i=0; i<stem->chunk_cnt; ++i ) {
+ chunk = &stem->chunks[i];
+ if ( !lset && chunk->l != NULL ) {
+ loff = ( chunk->l->sp->me.x - stem->left.x )*stem->l_to_r.x +
+ ( chunk->l->sp->me.y - stem->left.y )*stem->l_to_r.y;
+ stem->left = chunk->l->sp->me;
+ lset = true;
+ }
+ if ( !rset && chunk->r != NULL ) {
+ roff = ( chunk->r->sp->me.x - stem->right.x )*stem->l_to_r.x +
+ ( chunk->r->sp->me.y - stem->right.y )*stem->l_to_r.y;
+ stem->right = chunk->r->sp->me;
+ rset = true;
+ }
+ if ( lset && rset ) {
+ RecalcStemOffsets( stem,&stem->unit,loff != 0,roff != 0 );
+ break;
+ }
+ }
+ }
+}
+
+static void AssignPointsToBBoxHint( struct glyphdata *gd,DBounds *bounds,
+ struct stemdata *stem,int is_v ) {
+
+ double min, max, test, left, right;
+ double dist, prevdist;
+ int i, j;
+ int lcnt=0, rcnt=0, closest;
+ BasePoint dir;
+ SplinePoint **lpoints, **rpoints;
+ struct pointdata *pd, *pd1, *pd2;
+
+ lpoints = calloc( gd->pcnt,sizeof( SplinePoint *));
+ rpoints = calloc( gd->pcnt,sizeof( SplinePoint *));
+ dir.x = !is_v; dir.y = is_v;
+ for ( i=0; i<gd->pcnt; ++i ) if ( gd->points[i].sp!=NULL ) {
+ pd = &gd->points[i];
+ min = ( is_v ) ? bounds->minx : bounds->miny;
+ max = ( is_v ) ? bounds->maxx : bounds->maxy;
+ test = ( is_v ) ? pd->base.x : pd->base.y;
+ if ( test >= min && test < min + dist_error_hv && (
+ IsCorrectSide( gd,pd,true,is_v,&dir ) || IsCorrectSide( gd,pd,false,is_v,&dir )))
+ lpoints[lcnt++] = pd->sp;
+ else if ( test > max - dist_error_hv && test <= max && (
+ IsCorrectSide( gd,pd,true,!is_v,&dir ) || IsCorrectSide( gd,pd,false,!is_v,&dir )))
+ rpoints[rcnt++] = pd->sp;
+ }
+ if ( lcnt > 0 && rcnt > 0 ) {
+ if ( stem == NULL ) {
+ stem = NewStem( gd,&dir,&lpoints[0]->me,&rpoints[0]->me );
+ stem->bbox = true;
+ stem->len = stem->width;
+ stem->leftidx = GetValidPointDataIndex( gd,lpoints[0],stem );
+ stem->rightidx = GetValidPointDataIndex( gd,rpoints[0],stem );
+ }
+ for ( i=0; i<lcnt; ++i ) {
+ closest = -1;
+ dist = 1e4; prevdist = 1e4;
+ for ( j=0; j<rcnt; ++j ) {
+ left = ( is_v ) ? lpoints[i]->me.y : lpoints[i]->me.x;
+ right = ( is_v ) ? rpoints[j]->me.y : rpoints[j]->me.x;
+ dist = fabs( left - right );
+ if ( dist < prevdist ) {
+ closest = j;
+ prevdist = dist;
+ }
+ }
+ pd1 = &gd->points[lpoints[i]->ptindex];
+ pd2 = &gd->points[rpoints[closest]->ptindex];
+ AddToStem( gd,stem,pd1,pd2,false,true,4 );
+ }
+ qsort( stem->chunks,stem->chunk_cnt,sizeof( struct stem_chunk ),chunk_cmp );
+ }
+ free( lpoints );
+ free( rpoints );
+}
+
+static void CheckForBoundingBoxHints( struct glyphdata *gd ) {
+ /* Adobe seems to add hints at the bounding boxes of glyphs with no hints */
+ int i, hv;
+ int hcnt=0, vcnt=0;
+ double cw, ch;
+ struct stemdata *stem, *hstem=NULL,*vstem=NULL;
+ DBounds bounds;
+
+ SplineCharFindBounds( gd->sc,&bounds );
+
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ hv = IsUnitHV( &stem->unit,true );
+ if ( !hv )
+ continue;
+ if ( stem->toobig ) {
+ if ( stem->left.x == bounds.minx && stem->right.x == bounds.maxx )
+ vstem = stem;
+ else if ( stem->right.y == bounds.miny && stem->left.y == bounds.maxy )
+ hstem = stem;
+ continue;
+ }
+ if ( hv == 1 ) {
+ if ( stem->bbox ) hstem = stem;
+ else ++hcnt;
+ } else if ( hv == 2 ) {
+ if ( stem->bbox ) vstem = stem;
+ else ++vcnt;
+ }
+ }
+ if ( hcnt!=0 && vcnt!=0 &&
+ ( hstem == NULL || !hstem->positioned ) &&
+ ( vstem == NULL || !vstem->positioned ))
+return;
+
+ ch = bounds.maxy - bounds.miny;
+ cw = bounds.maxx - bounds.minx;
+
+ if ( ch > 0 && (( hstem != NULL && hstem->positioned ) ||
+ ( hcnt == 0 && ch < gd->emsize/3 ))) {
+ if ( hstem != NULL && hstem->toobig ) hstem->toobig = false;
+ AssignPointsToBBoxHint( gd,&bounds,hstem,false );
+ if ( hstem != NULL ) NormalizeStem( gd,hstem );
+ }
+ if ( cw > 0 && (( vstem != NULL && vstem->positioned ) ||
+ ( vcnt == 0 && cw < gd->emsize/3 ))) {
+ if ( vstem != NULL && vstem->toobig ) vstem->toobig = false;
+ AssignPointsToBBoxHint( gd,&bounds,vstem,true );
+ if ( vstem != NULL ) NormalizeStem( gd,vstem );
+ }
+}
+
+static struct stemdata *FindOrMakeGhostStem( struct glyphdata *gd,
+ SplinePoint *sp,int blue,double width ) {
+ int i, j, hasl, hasr;
+ struct stemdata *stem=NULL, *tstem;
+ struct stem_chunk *chunk;
+ BasePoint dir,left,right;
+ double min, max;
+
+ dir.x = 1; dir.y = 0;
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ tstem = &gd->stems[i];
+ if ( tstem->blue == blue && tstem->ghost && tstem->width == width ) {
+ stem = tstem;
+ break;
+ /* If the stem controlling this blue zone is not for a ghost hint, */
+ /* then we check if it has both left and right points, to ensure that */
+ /* we don't occasionally assign an additional point to a stem which */
+ /* has already been rejected in favor of another stem */
+ } else if ( tstem->blue == blue && !tstem->ghost && !tstem->toobig ) {
+ min = ( width == 20 ) ? tstem->left.y - tstem->lmin - 2*dist_error_hv :
+ tstem->right.y - tstem->rmin - 2*dist_error_hv;
+ max = ( width == 20 ) ? tstem->left.y - tstem->lmax + 2*dist_error_hv :
+ tstem->right.y - tstem->rmax + 2*dist_error_hv;
+
+ if ( sp->me.y <= min || sp->me.y >= max )
+ continue;
+
+ hasl = false; hasr = false; j = 0;
+ while ( j < tstem->chunk_cnt && ( !hasl || !hasr )) {
+ chunk = &tstem->chunks[j];
+ if ( chunk->l != NULL && !chunk->lpotential )
+ hasl = true;
+ if ( chunk->r != NULL && !chunk->rpotential )
+ hasr = true;
+ j++;
+ }
+ if ( hasl && hasr ) {
+ stem = tstem;
+ break;
+ }
+ }
+ }
+
+ if ( stem == NULL ) {
+ left.x = right.x = sp->me.x;
+ left.y = ( width == 21 ) ? sp->me.y + 21 : sp->me.y;
+ right.y = ( width == 21 ) ? sp->me.y : sp->me.y - 20;
+
+ stem = NewStem( gd,&dir,&left,&right );
+ stem->ghost = true;
+ stem->width = width;
+ stem->blue = blue;
+ }
+return( stem );
+}
+
+static int AddGhostSegment( struct pointdata *pd,int cnt,double base,struct segment *space ) {
+ double s, e, temp, pos, spos, epos;
+ SplinePoint *sp, *nsp, *nsp2, *psp, *psp2;
+
+ sp = nsp = psp = pd->sp;
+ pos = pd->sp->me.y;
+
+ /* First check if there are points on the same line lying further */
+ /* in the desired direction */
+ if (( sp->next != NULL ) && ( sp->next->to->me.y == pos ))
+ nsp = sp->next->to;
+ if (( sp->prev != NULL ) && ( sp->prev->from->me.y == pos ))
+ psp = sp->prev->from;
+
+ if ( psp != sp ) {
+ s = psp->me.x;
+ } else if ( psp->noprevcp ) {
+ psp2 = psp->prev->from;
+ if ( psp2->me.y != psp->me.y ) {
+ s = ( psp->me.x - psp2->me.x )/( psp->me.y - psp2->me.y )*20.0;
+ if ( s < 0 ) s = -s;
+ if ( psp2->me.x<psp->me.x )
+ s = ( psp->me.x-psp2->me.x < s ) ? psp2->me.x : psp->me.x-s;
+ else
+ s = ( psp2->me.x-psp->me.x < s ) ? psp2->me.x : psp->me.x+s;
+ } else
+ s = psp->me.x;
+ } else {
+ s = ( pd->sp->me.x + psp->prevcp.x )/2;
+ }
+
+ if ( nsp != sp ) {
+ e = nsp->me.x;
+ } else if ( nsp->nonextcp ) {
+ nsp2 = nsp->next->to;
+ if ( nsp2->me.y != nsp->me.y ) {
+ e = ( nsp->me.x - nsp2->me.x )/( nsp->me.y - nsp2->me.y )*20.0;
+ if ( e < 0 ) e = -e;
+ if ( nsp2->me.x<nsp->me.x )
+ e = ( nsp->me.x-nsp2->me.x < e ) ? nsp2->me.x : nsp->me.x-e;
+ else
+ e = ( nsp2->me.x-nsp->me.x < e ) ? nsp2->me.x : nsp->me.x+e;
+ } else
+ e = nsp->me.x;
+ } else {
+ e = ( pd->sp->me.x + nsp->nextcp.x )/2;
+ }
+
+ spos = psp->me.x; epos = nsp->me.x;
+ if ( s>e ) {
+ temp = s; s = e; e = temp;
+ temp = spos; spos = epos; epos = temp;
+ }
+
+ space[cnt].start = s - base;
+ space[cnt].end = e - base;
+ space[cnt].sbase = spos - base;
+ space[cnt].ebase = epos - base;
+ space[cnt].ecurved = space[cnt].scurved = space[cnt].curved = ( false );
+
+ return( cnt+1 );
+}
+
+static void FigureGhostActive( struct glyphdata *gd,struct stemdata *stem ) {
+ int acnt, i;
+ real len = 0;
+ struct segment *activespace = gd->activespace;
+ struct pointdata *valid;
+
+ if ( !stem->ghost )
+return;
+
+ acnt = 0;
+ for ( i=0; i<stem->chunk_cnt; ++i ) {
+ valid = ( stem->chunks[i].l != NULL) ?
+ stem->chunks[i].l : stem->chunks[i].r;
+ acnt = AddGhostSegment( valid,acnt,stem->left.x,activespace );
+ }
+ qsort(activespace,acnt,sizeof(struct segment),segment_cmp);
+ acnt = MergeSegments( activespace,acnt );
+ stem->activecnt = acnt;
+ if ( acnt!=0 ) {
+ stem->active = malloc(acnt*sizeof(struct segment));
+ memcpy( stem->active,activespace,acnt*sizeof( struct segment ));
+ }
+
+ for ( i=0; i<acnt; ++i ) {
+ len += stem->active[i].end-stem->active[i].start;
+ }
+ stem->clen = stem->len = len;
+}
+
+static void CheckForGhostHints( struct glyphdata *gd ) {
+ /* PostScript doesn't allow a hint to stretch from one alignment zone to */
+ /* another. (Alignment zones are the things in bluevalues). */
+ /* Oops, I got this wrong. PS doesn't allow a hint to start in a bottom */
+ /* zone and stretch to a top zone. Everything in OtherBlues is a bottom */
+ /* zone. The baseline entry in BlueValues is also a bottom zone. Every- */
+ /* thing else in BlueValues is a top-zone. */
+ /* This means */
+ /* that we can't define a horizontal stem hint which stretches from */
+ /* the baseline to the top of a capital I, or the x-height of lower i */
+ /* If we find any such hints we must remove them, and replace them with */
+ /* ghost hints. The bottom hint has height -21, and the top -20 */
+ BlueData *bd = &gd->bd;
+ struct stemdata *stem;
+ struct pointdata *pd;
+ real base;
+ int i, j, leftfound, rightfound, has_h, peak, fuzz;
+
+ fuzz = gd->fuzz;
+
+ /* look for any stems stretching from one zone to another and remove them */
+ /* (I used to turn them into ghost hints here, but that didn't work (for */
+ /* example on "E" where we don't need any ghosts from the big stem because*/
+ /* the narrow stems provide the hints that PS needs */
+ /* However, there are counter-examples. in Garamond-Pro the "T" character */
+ /* has a horizontal stem at the top which stretches between two adjacent */
+ /* bluezones. Removing it is wrong. Um... Thanks Adobe */
+ /* I misunderstood. Both of these were top-zones */
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ if ( IsUnitHV( &stem->unit,true ) != 1)
+ continue;
+
+ leftfound = rightfound = -1;
+ for ( j=0; j<bd->bluecnt; ++j ) {
+ if ( stem->left.y>=bd->blues[j][0]-fuzz && stem->left.y<=bd->blues[j][1]+fuzz )
+ leftfound = j;
+ else if ( stem->right.y>=bd->blues[j][0]-fuzz && stem->right.y<=bd->blues[j][1]+fuzz )
+ rightfound = j;
+ }
+ /* Assign value 2 to indicate this stem should be ignored also for TTF instrs */
+ if ( leftfound !=-1 && rightfound !=-1 &&
+ ( stem->left.y > 0 && stem->right.y <= 0 ))
+ stem->toobig = 2;
+ /* Otherwise mark the stem as controlling a specific blue zone */
+ else if ( leftfound != -1 && ( rightfound == -1 || stem->left.y > 0 ))
+ stem->blue = leftfound;
+ else if ( rightfound != -1 && ( leftfound == -1 || stem->right.y <= 0 ))
+ stem->blue = rightfound;
+ }
+
+ /* Now look and see if we can find any edges which lie in */
+ /* these zones. Edges which are not currently in hints */
+ /* Use the winding number to determine top or bottom */
+ for ( i=0; i<gd->pcnt; ++i ) if ( gd->points[i].sp!=NULL ) {
+ has_h = false;
+ for ( j=0; j<gd->points[i].prevcnt; j++ ) {
+ stem = gd->points[i].prevstems[j];
+ if ( !stem->toobig && IsUnitHV( &stem->unit,true ) == 1 ) {
+ has_h = true;
+ break;
+ }
+ }
+ for ( j=0; j<gd->points[i].nextcnt; j++ ) {
+ stem = gd->points[i].nextstems[j];
+ if ( !stem->toobig && IsUnitHV( &stem->unit,true ) == 1 ) {
+ has_h = true;
+ break;
+ }
+ }
+ if ( has_h )
+ continue;
+
+ pd = &gd->points[i];
+ base = pd->sp->me.y;
+ for ( j=0; j<bd->bluecnt; ++j ) {
+ if ( base>=bd->blues[j][0]-fuzz && base<=bd->blues[j][1]+fuzz ) {
+ peak = IsSplinePeak( gd,pd,false,false,7 );
+ if ( peak > 0 ) {
+ stem = FindOrMakeGhostStem( gd,pd->sp,j,20 );
+ AddToStem( gd,stem,pd,NULL,2,false,false );
+ } else if ( peak < 0 ) {
+ stem = FindOrMakeGhostStem( gd,pd->sp,j,21 );
+ AddToStem( gd,stem,NULL,pd,2,false,false );
+ }
+ }
+ }
+ }
+
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ if ( !stem->ghost )
+ continue;
+ NormalizeStem( gd,stem );
+ FigureGhostActive( gd,stem );
+ }
+}
+
+static void MarkDStemCorner( struct glyphdata *gd,struct pointdata *pd ) {
+ int x_dir = pd->x_corner;
+ int hv, is_l, i, peak, has_stem = false;
+ struct stemdata *stem;
+ BasePoint left,right,unit;
+
+ for ( i=0; i<pd->prevcnt && !has_stem; i++ ) {
+ stem = pd->prevstems[i];
+ hv = IsUnitHV( &stem->unit,true );
+ if ( !stem->toobig && (
+ ( x_dir && hv == 1 ) ||
+ ( !x_dir && hv == 2 )))
+ has_stem = true;
+ }
+ for ( i=0; i<pd->nextcnt && !has_stem; i++ ) {
+ stem = pd->nextstems[i];
+ hv = IsUnitHV( &stem->unit,true );
+ if ( !stem->toobig && (
+ ( x_dir && hv == 1 ) ||
+ ( !x_dir && hv == 2 )))
+ has_stem = true;
+ }
+ if ( has_stem )
+return;
+
+ peak = IsSplinePeak( gd,pd,x_dir,x_dir,2 );
+ unit.x = !x_dir; unit.y = x_dir;
+
+ if ( peak > 0 ) {
+ left.x = x_dir ? pd->sp->me.x + 21 : pd->sp->me.x;
+ right.x = x_dir ? pd->sp->me.x : pd->sp->me.x;
+ left.y = x_dir ? pd->sp->me.y : pd->sp->me.y;
+ right.y = x_dir ? pd->sp->me.y : pd->sp->me.y - 20;
+
+ } else if ( peak < 0 ) {
+ left.x = x_dir ? pd->sp->me.x : pd->sp->me.x;
+ right.x = x_dir ? pd->sp->me.x - 20 : pd->sp->me.x;
+ left.y = x_dir ? pd->sp->me.y : pd->sp->me.y + 21;
+ right.y = x_dir ? pd->sp->me.y : pd->sp->me.y;
+ }
+ is_l = IsCorrectSide( gd,pd,true,true,&unit );
+ for ( i=0; i<gd->stemcnt; i++ ) {
+ stem = &gd->stems[i];
+ if (!stem->toobig && UnitsParallel( &unit,&stem->unit,true ) &&
+ OnStem( stem,&pd->sp->me,is_l ))
+ break;
+ }
+ if ( i == gd->stemcnt ) {
+ stem = NewStem( gd,&unit,&left,&right );
+ stem->ghost = 2;
+ }
+ AddToStem( gd,stem,pd,NULL,2,false,false );
+}
+
+static void MarkDStemCorners( struct glyphdata *gd ) {
+ struct stemdata *stem;
+ struct stem_chunk *schunk, *echunk;
+ int i;
+
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ if ( stem->toobig || IsUnitHV( &stem->unit,true ))
+ continue;
+
+ schunk = &stem->chunks[0];
+ echunk = &stem->chunks[stem->chunk_cnt - 1];
+
+ if ( schunk->l != NULL && schunk->r != NULL &&
+ fabs( schunk->l->base.x - schunk->r->base.x ) > dist_error_hv &&
+ fabs( schunk->l->base.y - schunk->r->base.y ) > dist_error_hv && (
+ ( schunk->l->x_corner == 1 && schunk->r->y_corner == 1 ) ||
+ ( schunk->l->y_corner == 1 && schunk->r->x_corner == 1 ))) {
+ MarkDStemCorner( gd,schunk->l );
+ MarkDStemCorner( gd,schunk->r );
+ }
+ if ( echunk->l != NULL && echunk->r != NULL &&
+ fabs( echunk->l->base.x - echunk->r->base.x ) > dist_error_hv &&
+ fabs( echunk->l->base.y - echunk->r->base.y ) > dist_error_hv && (
+ ( echunk->l->x_corner == 1 && echunk->r->y_corner == 1 ) ||
+ ( echunk->l->y_corner == 1 && echunk->r->x_corner == 1 ))) {
+ MarkDStemCorner( gd,echunk->l );
+ MarkDStemCorner( gd,echunk->r );
+ }
+ }
+}
+
+#if GLYPH_DATA_DEBUG
+static void DumpGlyphData( struct glyphdata *gd ) {
+ int i, j;
+ struct stemdata *stem;
+ struct linedata *line;
+ struct stem_chunk *chunk;
+
+ if ( gd->linecnt > 0 )
+ fprintf( stderr, "\nDumping line data for %s\n",gd->sc->name );
+ for ( i=0; i<gd->linecnt; ++i ) {
+ line = &gd->lines[i];
+ fprintf( stderr, "line vector=%.4f,%.4f base=%.2f,%.2f length=%.4f\n",
+ line->unit.x,line->unit.y,line->online.x,line->online.y,line->length );
+ for( j=0; j<line->pcnt;++j ) {
+ fprintf( stderr, "\tpoint num=%d, x=%.2f, y=%.2f, prev=%d, next=%d\n",
+ line->points[j]->sp->ttfindex, line->points[j]->sp->me.x,
+ line->points[j]->sp->me.y,
+ line->points[j]->prevline==line, line->points[j]->nextline==line );
+ }
+ fprintf( stderr, "\n" );
+ }
+
+ if ( gd->stemcnt > 0 )
+ fprintf( stderr, "\nDumping stem data for %s\n",gd->sc->name );
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ fprintf( stderr, "stem l=%.2f,%.2f idx=%d r=%.2f,%.2f idx=%d vector=%.4f,%.4f\n\twidth=%.2f chunk_cnt=%d len=%.4f clen=%.4f ghost=%d blue=%d toobig=%d\n\tlmin=%.2f,lmax=%.2f,rmin=%.2f,rmax=%.2f,lpcnt=%d,rpcnt=%d\n",
+ stem->left.x,stem->left.y,stem->leftidx,
+ stem->right.x,stem->right.y,stem->rightidx,
+ stem->unit.x,stem->unit.y,stem->width,
+ stem->chunk_cnt,stem->len,stem->clen,stem->ghost,stem->blue,stem->toobig,
+ stem->lmin,stem->lmax,stem->rmin,stem->rmax,stem->lpcnt,stem->rpcnt );
+ for ( j=0; j<stem->chunk_cnt; ++j ) {
+ chunk = &stem->chunks[j];
+ if ( chunk->l!=NULL && chunk->r!=NULL )
+ fprintf (stderr, "\tchunk l=%.2f,%.2f potential=%d r=%.2f,%.2f potential=%d stub=%d\n",
+ chunk->l->sp->me.x, chunk->l->sp->me.y, chunk->lpotential,
+ chunk->r->sp->me.x, chunk->r->sp->me.y, chunk->rpotential, chunk->stub );
+ else if ( chunk->l!=NULL )
+ fprintf (stderr, "\tchunk l=%.2f,%.2f potential=%d\n",
+ chunk->l->sp->me.x, chunk->l->sp->me.y, chunk->lpotential);
+ else if ( chunk->r!=NULL )
+ fprintf (stderr, "\tchunk r=%.2f,%.2f potential=%d\n",
+ chunk->r->sp->me.x, chunk->r->sp->me.y, chunk->rpotential);
+ }
+ fprintf( stderr, "\n" );
+ }
+
+ if ( gd->hbundle != NULL || gd->vbundle != NULL )
+ fprintf( stderr, "\nDumping HV stem bundles for %s\n",gd->sc->name );
+ if ( gd->hbundle != NULL ) for ( i=0; i<gd->hbundle->cnt; i++ ) {
+ stem = gd->hbundle->stemlist[i];
+ fprintf( stderr, "H stem l=%.2f,%.2f r=%.2f,%.2f slave=%d\n",
+ stem->left.x,stem->left.y,stem->right.x,stem->right.y,stem->master!=NULL );
+ if ( stem->dep_cnt > 0 ) for ( j=0; j<stem->dep_cnt; j++ ) {
+ fprintf( stderr, "\tslave l=%.2f,%.2f r=%.2f,%.2f mode=%c left=%d\n",
+ stem->dependent[j].stem->left.x,stem->dependent[j].stem->left.y,
+ stem->dependent[j].stem->right.x,stem->dependent[j].stem->right.y,
+ stem->dependent[j].dep_type,stem->dependent[j].lbase );
+ }
+ if ( stem->serif_cnt > 0 ) for ( j=0; j<stem->serif_cnt; j++ ) {
+ fprintf( stderr, "\tserif l=%.2f,%.2f r=%.2f,%.2f ball=%d left=%d\n",
+ stem->serifs[j].stem->left.x,stem->serifs[j].stem->left.y,
+ stem->serifs[j].stem->right.x,stem->serifs[j].stem->right.y,
+ stem->serifs[j].is_ball,stem->serifs[j].lbase );
+ }
+ }
+ fprintf( stderr, "\n" );
+ if ( gd->vbundle != NULL ) for ( i=0; i<gd->vbundle->cnt; i++ ) {
+ stem = gd->vbundle->stemlist[i];
+ fprintf( stderr, "V stem l=%.2f,%.2f r=%.2f,%.2f slave=%d\n",
+ stem->left.x,stem->left.y,stem->right.x,stem->right.y,stem->master!=NULL );
+ if ( stem->dep_cnt > 0 ) for ( j=0; j<stem->dep_cnt; j++ ) {
+ fprintf( stderr, "\tslave l=%.2f,%.2f r=%.2f,%.2f mode=%c left=%d\n",
+ stem->dependent[j].stem->left.x,stem->dependent[j].stem->left.y,
+ stem->dependent[j].stem->right.x,stem->dependent[j].stem->right.y,
+ stem->dependent[j].dep_type,stem->dependent[j].lbase );
+ }
+ if ( stem->serif_cnt > 0 ) for ( j=0; j<stem->serif_cnt; j++ ) {
+ fprintf( stderr, "\tserif l=%.2f,%.2f r=%.2f,%.2f ball=%d left=%d\n",
+ stem->serifs[j].stem->left.x,stem->serifs[j].stem->left.y,
+ stem->serifs[j].stem->right.x,stem->serifs[j].stem->right.y,
+ stem->serifs[j].is_ball,stem->serifs[j].lbase );
+ }
+ if ( stem->prev_c_m != NULL ) {
+ fprintf( stderr,"\tprev counter master: l=%.2f r=%.2f\n",
+ stem->prev_c_m->left.x,stem->prev_c_m->right.x );
+ }
+ if ( stem->next_c_m != NULL ) {
+ fprintf( stderr,"\tnext counter master: l=%.2f r=%.2f\n",
+ stem->next_c_m->left.x,stem->next_c_m->right.x );
+ }
+ }
+ fprintf( stderr, "\n" );
+
+ if ( gd->ibundle != NULL ) for ( i=0; i<gd->ibundle->cnt; i++ ) {
+ stem = gd->ibundle->stemlist[i];
+ fprintf( stderr, "I stem l=%.2f,%.2f r=%.2f,%.2f slave=%d\n",
+ stem->left.x,stem->left.y,stem->right.x,stem->right.y,stem->master!=NULL );
+ if ( stem->dep_cnt > 0 ) for ( j=0; j<stem->dep_cnt; j++ ) {
+ fprintf( stderr, "\tslave l=%.2f,%.2f r=%.2f,%.2f mode=%c left=%d\n",
+ stem->dependent[j].stem->left.x,stem->dependent[j].stem->left.y,
+ stem->dependent[j].stem->right.x,stem->dependent[j].stem->right.y,
+ stem->dependent[j].dep_type,stem->dependent[j].lbase );
+ }
+ if ( stem->serif_cnt > 0 ) for ( j=0; j<stem->serif_cnt; j++ ) {
+ fprintf( stderr, "\tserif l=%.2f,%.2f r=%.2f,%.2f ball=%d left=%d\n",
+ stem->serifs[j].stem->left.x,stem->serifs[j].stem->left.y,
+ stem->serifs[j].stem->right.x,stem->serifs[j].stem->right.y,
+ stem->serifs[j].is_ball,stem->serifs[j].lbase );
+ }
+ }
+ fprintf( stderr, "\n" );
+}
+#endif
+
+static void AssignPointsToStems( struct glyphdata *gd,int startnum,DBounds *bounds ) {
+ int i;
+ struct pointdata *pd;
+ struct stemdata *stem = NULL;
+ BasePoint dir;
+
+ for ( i=0; i<gd->pcnt; ++i ) if ( gd->points[i].sp!=NULL ) {
+ pd = &gd->points[i];
+ if ( pd->prev_e_cnt > 0 )
+ BuildStem( gd,pd,false,true,true,0 );
+ else
+ HalfStemNoOpposite( gd,pd,stem,&pd->prevunit,false );
+
+ if ( pd->next_e_cnt > 0 )
+ BuildStem( gd,pd,true,true,true,0 );
+ else
+ HalfStemNoOpposite( gd,pd,stem,&pd->nextunit,true );
+
+ if ( pd->x_corner ) {
+ if ( pd->bothedge!=NULL )
+ stem = DiagonalCornerStem( gd,pd,true );
+ dir.x = 0; dir.y = 1;
+ HalfStemNoOpposite( gd,pd,stem,&dir,2 );
+ } else if ( pd->y_corner ) {
+ if ( pd->bothedge!=NULL )
+ stem = DiagonalCornerStem( gd,pd,true );
+ dir.x = 1; dir.y = 0;
+ HalfStemNoOpposite( gd,pd,stem,&dir,2 );
+ }
+ }
+ gd->lspace = malloc(gd->pcnt*sizeof(struct segment));
+ gd->rspace = malloc(gd->pcnt*sizeof(struct segment));
+ gd->bothspace = malloc(3*gd->pcnt*sizeof(struct segment));
+ gd->activespace = malloc(3*gd->pcnt*sizeof(struct segment));
+#if GLYPH_DATA_DEBUG
+ fprintf( stderr,"Going to calculate stem active zones for %s\n",gd->sc->name );
+#endif
+ for ( i=startnum; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ NormalizeStem( gd,stem );
+ if ( gd->stems[i].ghost )
+ FigureGhostActive( gd,stem );
+ else if ( gd->stems[i].bbox )
+ AssignPointsToBBoxHint( gd,bounds,stem,( stem->unit.y == 1 ));
+ else
+ FigureStemActive( gd,&gd->stems[i] );
+ }
+#if GLYPH_DATA_DEBUG
+ DumpGlyphData( gd );
+#endif
+
+ free(gd->lspace); gd->lspace = NULL;
+ free(gd->rspace); gd->rspace = NULL;
+ free(gd->bothspace); gd->bothspace = NULL;
+ free(gd->activespace); gd->activespace = NULL;
+}
+
+static void _DStemInfoToStemData( struct glyphdata *gd,DStemInfo *dsi,int *startcnt ) {
+ struct stemdata *stem;
+
+ if ( gd->stems == NULL ) {
+ gd->stems = calloc( 2*gd->pcnt,sizeof( struct stemdata ));
+ gd->stemcnt = 0;
+ }
+ *startcnt = gd->stemcnt;
+ while ( dsi != NULL ) {
+ stem = NewStem( gd,&dsi->unit,&dsi->left,&dsi->right );
+ stem->positioned = true;
+ dsi = dsi->next;
+ }
+}
+
+struct glyphdata *DStemInfoToStemData( struct glyphdata *gd,DStemInfo *dsi ) {
+ int startcnt;
+
+ if ( dsi == NULL )
+return( gd );
+
+ _DStemInfoToStemData( gd,dsi,&startcnt );
+ AssignPointsToStems( gd,startcnt,NULL );
+return( gd );
+}
+
+static void _StemInfoToStemData( struct glyphdata *gd,StemInfo *si,DBounds *bounds,int is_v,int *startcnt ) {
+ struct stemdata *stem;
+ BasePoint dir,left,right;
+
+ dir.x = !is_v; dir.y = is_v;
+ if ( gd->stems == NULL ) {
+ gd->stems = calloc( 2*gd->pcnt,sizeof( struct stemdata ));
+ gd->stemcnt = 0;
+ }
+ *startcnt = gd->stemcnt;
+
+ while ( si != NULL ) {
+ left.x = ( is_v ) ? si->start : 0;
+ left.y = ( is_v ) ? 0 : si->start + si->width;
+ right.x = ( is_v ) ? si->start + si->width : 0;
+ right.y = ( is_v ) ? 0 : si->start;
+ stem = NewStem( gd,&dir,&left,&right );
+ stem->ghost = si->ghost;
+ if (( is_v &&
+ left.x >= bounds->minx && left.x < bounds->minx + dist_error_hv &&
+ right.x > bounds->maxx - dist_error_hv && right.x <= bounds->maxx ) ||
+ ( !is_v &&
+ right.y >= bounds->miny && right.y < bounds->miny + dist_error_hv &&
+ left.y > bounds->maxy - dist_error_hv && left.y <= bounds->maxy ))
+ stem->bbox = true;
+ stem->positioned = true;
+ si = si->next;
+ }
+}
+
+struct glyphdata *StemInfoToStemData( struct glyphdata *gd,StemInfo *si,int is_v ) {
+ DBounds bounds;
+ int startcnt;
+
+ if ( si == NULL )
+return( gd );
+
+ SplineCharFindBounds( gd->sc,&bounds );
+ _StemInfoToStemData( gd,si,&bounds,is_v,&startcnt );
+
+ AssignPointsToStems( gd,startcnt,&bounds );
+return( gd );
+}
+
+static int ValidConflictingStem( struct stemdata *stem1,struct stemdata *stem2 ) {
+ int x_dir = fabs( stem1->unit.y ) > fabs( stem1->unit.x );
+ double s1, e1, s2, e2, temp;
+
+ s1 = (&stem1->left.x)[!x_dir] -
+ ((&stem1->left.x)[x_dir] * (&stem1->unit.x)[!x_dir] )/(&stem1->unit.x)[x_dir];
+ e1 = (&stem1->right.x)[!x_dir] -
+ ((&stem1->right.x)[x_dir] * (&stem1->unit.x)[!x_dir] )/(&stem1->unit.x)[x_dir];
+ s2 = (&stem2->left.x)[!x_dir] -
+ ((&stem2->left.x)[x_dir] * (&stem2->unit.x)[!x_dir] )/(&stem2->unit.x)[x_dir];
+ e2 = (&stem2->right.x)[!x_dir] -
+ ((&stem2->right.x)[x_dir] * (&stem2->unit.x)[!x_dir] )/(&stem2->unit.x)[x_dir];
+
+ if ( s1 > e1 ) {
+ temp = s1; s1 = e1; e1 = temp;
+ }
+ if ( s2 > e2 ) {
+ temp = s2; s2 = e2; e2 = temp;
+ }
+ /* If stems don't overlap, then there is no conflict here */
+ if ( s2 >= e1 || s1 >= e2 )
+return( false );
+
+ /* Stems which have no points assigned cannot be valid masters for */
+ /* other stems (however there is a notable exception for ghost hints) */
+ if (( stem1->lpcnt > 0 || stem1->rpcnt > 0 ) &&
+ stem2->lpcnt == 0 && stem2->rpcnt == 0 && !stem2->ghost )
+return( false );
+
+ /* Bounding box stems are always preferred */
+ if ( stem1->bbox && !stem2->bbox )
+return( false );
+
+ /* Stems associated with blue zones always preferred to any other stems */
+ if ( stem1->blue >=0 && stem2->blue < 0 )
+return( false );
+ /* Don't attempt to handle together stems, linked to different zones */
+ if ( stem1->blue >=0 && stem2->blue >= 0 && stem1->blue != stem2->blue )
+return( false );
+ /* If both stems are associated with a blue zone, but one of them is for */
+ /* a ghost hint, then that stem is preferred */
+ if ( stem1->ghost && !stem2->ghost )
+return( false );
+
+return( true );
+}
+
+static int HasDependentStem( struct stemdata *master,struct stemdata *slave ) {
+ int i;
+ struct stemdata *tstem;
+
+ if ( slave->master != NULL && master->dep_cnt > 0 ) {
+ for ( i=0; i<master->dep_cnt; i++ ) {
+ tstem = master->dependent[i].stem;
+ if ( tstem == slave || HasDependentStem( tstem,slave ))
+return( true );
+ }
+ }
+return( false );
+}
+
+static int PreferEndDep( struct stemdata *stem,
+ struct stemdata *smaster,struct stemdata *emaster,char s_type,char e_type ) {
+
+ int hv = IsUnitHV( &stem->unit,true );
+ double sdist, edist;
+
+ if ( !hv )
+return( false );
+
+ if (( s_type == 'a' && e_type != 'a' ) || ( s_type == 'm' && e_type == 'i' ))
+return( false );
+ else if (( e_type == 'a' && s_type != 'a' ) || ( e_type == 'm' && s_type == 'i' ))
+return( true );
+
+ if ( s_type == 'm' && s_type == e_type ) {
+ sdist = ( hv==1 ) ?
+ fabs( smaster->right.y - stem->right.y ) :
+ fabs( smaster->left.x - stem->left.x );
+ edist = ( hv==1 ) ?
+ fabs( emaster->left.y - stem->left.y ) :
+ fabs( emaster->right.x - stem->right.x );
+return( edist < sdist );
+ } else
+return( emaster->clen > smaster->clen );
+}
+
+static void LookForMasterHVStem( struct stemdata *stem,BlueData *bd ) {
+ struct stemdata *tstem, *smaster=NULL, *emaster=NULL;
+ struct stembundle *bundle = stem->bundle;
+ double start, end, tstart, tend;
+ double ssdist, sedist, esdist, eedist;
+ double smin, smax, emin, emax, tsmin, tsmax, temin, temax;
+ int is_x, i, link_to_s, stype, etype, allow_s, allow_e;
+
+ is_x = ( bundle->unit.x == 1 );
+ if ( is_x ) {
+ start = stem->right.y; end = stem->left.y;
+ smin = start - stem->rmin - 2*dist_error_hv;
+ smax = start - stem->rmax + 2*dist_error_hv;
+ emin = end - stem->lmin - 2*dist_error_hv;
+ emax = end - stem->lmax + 2* dist_error_hv;
+ } else {
+ start = stem->left.x; end = stem->right.x;
+ smin = start + stem->lmax - 2*dist_error_hv;
+ smax = start + stem->lmin + 2*dist_error_hv;
+ emin = end + stem->rmax - 2*dist_error_hv;
+ emax = end + stem->rmin + 2*dist_error_hv;
+ }
+ start = ( is_x ) ? stem->right.y : stem->left.x;
+ end = ( is_x ) ? stem->left.y : stem->right.x;
+ stype = etype = '\0';
+
+ for ( i=0; i<bundle->cnt; i++ ) {
+ tstem = bundle->stemlist[i];
+ if ( is_x ) {
+ tstart = tstem->right.y; tend = tstem->left.y;
+ tsmin = tstart - tstem->rmin - 2*dist_error_hv;
+ tsmax = tstart - tstem->rmax + 2*dist_error_hv;
+ temin = tend - tstem->lmin - 2*dist_error_hv;
+ temax = tend - tstem->lmax + 2* dist_error_hv;
+ } else {
+ tstart = tstem->left.x; tend = tstem->right.x;
+ tsmin = tstart + tstem->lmax - 2*dist_error_hv;
+ tsmax = tstart + tstem->lmin + 2*dist_error_hv;
+ temin = tend + tstem->rmax - 2*dist_error_hv;
+ temax = tend + tstem->rmin + 2*dist_error_hv;
+ }
+ tstart = ( is_x ) ? tstem->right.y : tstem->left.x;
+ tend = ( is_x ) ? tstem->left.y : tstem->right.x;
+
+ /* In this loop we are looking if the given stem has conflicts with */
+ /* other stems and if anyone of those conflicting stems should */
+ /* take precedence over it */
+ if ( stem == tstem || tend < start || tstart > end ||
+ !ValidConflictingStem( stem,tstem ) || HasDependentStem( stem,tstem ))
+ continue;
+ /* Usually in case of conflicts we prefer the stem with longer active */
+ /* zones. However a stem linked to a blue zone is always preferred to */
+ /* a stem which is not, and ghost hints are preferred to any other */
+ /* stems */
+ if ( stem->clen > tstem->clen && ValidConflictingStem( tstem,stem ))
+ continue;
+
+ stem->confl_cnt++;
+
+ /* If the master stem is for a ghost hint or both the stems are */
+ /* linked to the same blue zone, then we can link only to the edge */
+ /* which fall into the blue zone */
+ allow_s = ( !tstem->ghost || tstem->width == 21 ) &&
+ ( stem->blue == -1 || stem->blue != tstem->blue || bd->blues[stem->blue][0] < 0 );
+ allow_e = ( !tstem->ghost || tstem->width == 20 ) &&
+ ( stem->blue == -1 || stem->blue != tstem->blue || bd->blues[stem->blue][0] > 0 );
+
+ /* Assume there are two stems which have (almost) coincident left edges. */
+ /* The hinting technique for this case is to merge all points found on */
+ /* those coincident edges together, position them, and then link to the */
+ /* opposite edges. */
+ /* However we don't allow merging if both stems can be snapped to a blue */
+ /* zone, unless their edges are _exactly_ coincident, as shifting features */
+ /* relatively to each other instead of snapping them to the same zone would */
+ /* obviously be wrong */
+ if ( allow_s && tstart > smin && tstart < smax && start > tsmin && start < tsmax &&
+ ( stem->blue == -1 || RealNear( tstart,start ))) {
+
+ if ( smaster == NULL || stype != 'a' || smaster->clen < tstem->clen ) {
+ smaster = tstem;
+ stype = 'a';
+ }
+ /* The same case for right edges */
+ } else if ( allow_e && tend > emin && tend < emax && end > temin && end < temax &&
+ ( stem->blue == -1 || RealNear( tend,end ))) {
+
+ if ( emaster == NULL || etype != 'a' || emaster->clen < tstem->clen ) {
+ emaster = tstem;
+ etype = 'a';
+ }
+
+ /* Nested stems. I first planned to handle them by positioning the */
+ /* narrower stem first, and then linking its edges to the opposed edges */
+ /* of the nesting stem. But this works well only in those cases where */
+ /* maintaining the dependent stem width is not important. So now the */
+ /* situations where a narrower or a wider stem can be preferred */
+ /* (because it has longer active zones) are equally possible. In the */
+ /* first case I link to the master stem just one edge of the secondary */
+ /* stem, just like with overlapping stems */
+ } else if ( tstart > start && tend < end ) {
+ if ( allow_s && ( smaster == NULL || stype == 'i' ||
+ ( stype == 'm' && smaster->clen < tstem->clen ))) {
+
+ smaster = tstem;
+ stype = 'm';
+ }
+ if ( allow_e && ( emaster == NULL || etype == 'i' ||
+ ( etype == 'm' && emaster->clen < tstem->clen ))) {
+
+ emaster = tstem;
+ etype = 'm';
+ }
+ /* However if we have to prefer the nesting stem, we do as with */
+ /* overlapping stems which require interpolations, i. e. interpolate */
+ /* one edge and link to another */
+ } else if ( tstart < start && tend > end ) {
+ link_to_s = ( allow_s && ( start - tstart < tend - end ));
+ if ( link_to_s && ( smaster == NULL ||
+ ( stype == 'i' && smaster->clen < tstem->clen ))) {
+ smaster = tstem;
+ stype = 'i';
+ } else if ( !link_to_s && ( emaster == NULL ||
+ ( etype == 'i' && emaster->clen < tstem->clen ))) {
+ emaster = tstem;
+ etype = 'i';
+ }
+ /* Overlapping stems. Here we first check all 4 distances between */
+ /* 4 stem edges. If the closest distance is between left or right */
+ /* edges, then the normal technique (in TrueType) is linking them */
+ /* with MDRP without maintaining a minimum distance. Otherwise */
+ /* we interpolate an edge of the "slave" stem between already */
+ /* positioned edges of the "master" stem, and then gridfit it */
+ } else if (( tstart < start && start < tend && tend < end ) ||
+ ( start < tstart && tstart < end && end < tend )) {
+
+ ssdist = fabs( start - tstart );
+ sedist = fabs( start - tend );
+ esdist = fabs( end - tstart );
+ eedist = fabs( end - tend );
+
+ if ( allow_s && ( !allow_e ||
+ ( stem->width < tstem->width/3 && ssdist < eedist ) ||
+ ( ssdist <= eedist && ssdist <= sedist && ssdist <= esdist )) &&
+ ( smaster == NULL || ( stype == 'i' ||
+ ( stype == 'm' && smaster->clen < tstem->clen )))) {
+
+ smaster = tstem;
+ stype = 'm';
+ } else if ( allow_e && ( !allow_s ||
+ ( stem->width < tstem->width/3 && eedist < ssdist ) ||
+ ( eedist <= ssdist && eedist <= sedist && eedist <= esdist )) &&
+ ( emaster == NULL || ( etype == 'i' ||
+ ( etype == 'm' && emaster->clen < tstem->clen )))) {
+
+ emaster = tstem;
+ etype = 'm';
+ } else if ( allow_s && allow_e && ( smaster == NULL ||
+ ( stype == 'i' && smaster->clen < tstem->clen )) &&
+ sedist <= esdist && sedist <= ssdist && sedist <= eedist ) {
+
+ smaster = tstem;
+ stype = 'i';
+ } else if ( allow_s && allow_e && ( emaster == NULL ||
+ ( etype == 'i' && emaster->clen < tstem->clen )) &&
+ esdist <= sedist && esdist <= ssdist && esdist <= eedist ) {
+
+ emaster = tstem;
+ etype = 'i';
+ }
+ }
+ }
+ if ( smaster != NULL && emaster != NULL ) {
+ if ( PreferEndDep( stem,smaster,emaster,stype,etype ))
+ smaster = NULL;
+ else
+ emaster = NULL;
+ }
+
+ if ( smaster != NULL ) {
+ stem->master = smaster;
+ if ( smaster->dependent == NULL )
+ smaster->dependent = calloc( bundle->cnt*2,sizeof( struct dependent_stem ));
+ smaster->dependent[smaster->dep_cnt].stem = stem;
+ smaster->dependent[smaster->dep_cnt].dep_type = stype;
+ smaster->dependent[smaster->dep_cnt++].lbase = !is_x;
+ } else if ( emaster != NULL ) {
+ stem->master = emaster;
+ if ( emaster->dependent == NULL )
+ emaster->dependent = calloc( bundle->cnt*2,sizeof( struct dependent_stem ));
+ emaster->dependent[emaster->dep_cnt ].stem = stem;
+ emaster->dependent[emaster->dep_cnt ].dep_type = etype;
+ emaster->dependent[emaster->dep_cnt++].lbase = is_x;
+ }
+}
+
+/* If a stem has been considered depending from another stem which in */
+/* its turn has its own "master", and the first stem doesn't conflict */
+/* with the "master" of the stem it overlaps (or any other stems), then */
+/* this dependency is unneeded and processing it in the autoinstructor */
+/* can even lead to undesired effects. Unfortunately we can't prevent */
+/* detecting such dependecies in LookForMasterHVStem(), because we */
+/* need to know the whole stem hierarchy first. So look for undesired */
+/* dependencies and clean them now */
+static void ClearUnneededDeps( struct stemdata *stem ) {
+ struct stemdata *master;
+ int i, j;
+
+ if ( stem->confl_cnt == 1 &&
+ ( master = stem->master ) != NULL && master->master != NULL ) {
+
+ stem->master = NULL;
+ for ( i=j=0; i<master->dep_cnt; i++ ) {
+ if ( j<i )
+ memcpy( &master->dependent[i-1],&master->dependent[i],
+ sizeof( struct dependent_stem ));
+ if ( master->dependent[i].stem != stem ) j++;
+ }
+ (master->dep_cnt)--;
+ }
+}
+
+static void GDBundleStems( struct glyphdata *gd, int maxtoobig, int needs_deps ) {
+ struct stemdata *stem, *tstem;
+ int i, j, k, hv, hasl, hasr, stem_cnt;
+ struct pointdata *lpd, *rpd;
+ double dmove;
+ DBounds bounds;
+
+ /* Some checks for undesired stems which we couldn't do earlier */
+
+ /* First filter out HV stems which have only "potential" points */
+ /* on their left or right edge. Such stems aren't supposed to be */
+ /* used for PS hinting, so we mark them as "too big" */
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ hasl = false; hasr = false;
+
+ if ( IsUnitHV( &stem->unit,true ) &&
+ !stem->toobig && !stem->ghost && !stem->positioned ) {
+ for ( j=0; j<stem->chunk_cnt && ( !hasl || !hasr ); ++j ) {
+ if ( stem->chunks[j].l!=NULL && !stem->chunks[j].lpotential )
+ hasl = true;
+ if ( stem->chunks[j].r!=NULL && !stem->chunks[j].rpotential )
+ hasr = true;
+ }
+ if ( !hasl || !hasr )
+ stem->toobig = true;
+ }
+ }
+
+ /* Filter out HV stems which have both their edges controlled by */
+ /* other, narrower HV stems */
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ hv = IsUnitHV( &stem->unit,true );
+
+ if ( IsUnitHV( &stem->unit,true )) {
+ hasl = hasr = false;
+ for ( j=0; j<stem->chunk_cnt; ++j ) {
+ lpd = stem->chunks[j].l;
+ rpd = stem->chunks[j].r;
+ if ( lpd != NULL ) {
+ stem_cnt = ( stem->chunks[j].lnext ) ? lpd->nextcnt : lpd->prevcnt;
+ for ( k=0; k<stem_cnt; k++ ) {
+ tstem = ( stem->chunks[j].lnext ) ?
+ lpd->nextstems[k] : lpd->prevstems[k];
+ /* Used to test tstem->toobig <= stem->toobig, but got into troubles with */
+ /* a weird terminal stem preventing a ball terminal from being properly detected, */
+ /* because both the stems initially have toobig == 1. */
+ /* See the "f" from Heuristica-Italic */
+ if ( tstem != stem &&
+ !tstem->toobig && tstem->positioned >= stem->positioned &&
+ tstem->width < stem->width && hv == IsUnitHV( &tstem->unit,true )) {
+ hasl = true;
+ break;
+ }
+ }
+ }
+ if ( rpd != NULL ) {
+ stem_cnt = ( stem->chunks[j].rnext ) ? rpd->nextcnt : rpd->prevcnt;
+ for ( k=0; k<stem_cnt; k++ ) {
+ tstem = ( stem->chunks[j].rnext ) ?
+ rpd->nextstems[k] : rpd->prevstems[k];
+ if ( tstem != stem &&
+ !tstem->toobig && tstem->positioned >= stem->positioned &&
+ tstem->width < stem->width && hv == IsUnitHV( &tstem->unit,true )) {
+ hasr = true;
+ break;
+ }
+ }
+ }
+ if ( hasl && hasr ) {
+ stem->toobig = 2;
+ break;
+ }
+ }
+ }
+ }
+
+ gd->hbundle = calloc( 1,sizeof( struct stembundle ));
+ gd->hbundle->stemlist = calloc( gd->stemcnt,sizeof( struct stemdata *));
+ gd->hbundle->unit.x = 1; gd->hbundle->unit.y = 0;
+ gd->hbundle->l_to_r.x = 0; gd->hbundle->l_to_r.y = -1;
+
+ gd->vbundle = calloc( 1,sizeof( struct stembundle ));
+ gd->vbundle->stemlist = calloc( gd->stemcnt,sizeof( struct stemdata *));
+ gd->vbundle->unit.x = 0; gd->vbundle->unit.y = 1;
+ gd->vbundle->l_to_r.x = 1; gd->vbundle->l_to_r.y = 0;
+
+ if ( gd->has_slant && !gd->only_hv ) {
+ SplineCharFindBounds( gd->sc,&bounds );
+
+ gd->ibundle = calloc( 1,sizeof( struct stembundle ));
+ gd->ibundle->stemlist = calloc( gd->stemcnt,sizeof( struct stemdata *));
+ gd->ibundle->unit.x = gd->slant_unit.x;
+ gd->ibundle->unit.y = gd->slant_unit.y;
+ gd->ibundle->l_to_r.x = -gd->ibundle->unit.y;
+ gd->ibundle->l_to_r.y = gd->ibundle->unit.x;
+ }
+
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ if ( stem->toobig > maxtoobig )
+ continue;
+ hv = IsUnitHV( &stem->unit,true );
+
+ if ( hv == 1 ) {
+ gd->hbundle->stemlist[(gd->hbundle->cnt)++] = stem;
+ stem->bundle = gd->hbundle;
+ } else if ( hv == 2 ) {
+ gd->vbundle->stemlist[(gd->vbundle->cnt)++] = stem;
+ stem->bundle = gd->vbundle;
+ } else if ( gd->has_slant && !gd->only_hv &&
+ RealNear( stem->unit.x,gd->slant_unit.x ) &&
+ RealNear( stem->unit.y,gd->slant_unit.y )) {
+
+ /* Move base point coordinates to the baseline to simplify */
+ /* stem ordering and positioning relatively to each other */
+ stem->left.x -= (( stem->left.y - bounds.miny ) * stem->unit.x )/stem->unit.y;
+ stem->right.x -= (( stem->right.y - bounds.miny ) * stem->unit.x )/stem->unit.y;
+ dmove = ( stem->left.y - bounds.miny ) / stem->unit.y;
+ stem->left.y = stem->right.y = bounds.miny;
+ for ( j=0; j<stem->activecnt; j++ ) {
+ stem->active[j].start += dmove;
+ stem->active[j].end += dmove;
+ }
+
+ gd->ibundle->stemlist[(gd->ibundle->cnt)++] = stem;
+ stem->bundle = gd->ibundle;
+ stem->italic = true;
+ }
+ }
+ qsort( gd->hbundle->stemlist,gd->hbundle->cnt,sizeof( struct stemdata *),stem_cmp );
+ qsort( gd->vbundle->stemlist,gd->vbundle->cnt,sizeof( struct stemdata *),stem_cmp );
+ if ( gd->has_slant && !gd->only_hv )
+ qsort( gd->ibundle->stemlist,gd->ibundle->cnt,sizeof( struct stemdata *),stem_cmp );
+
+ if ( !needs_deps )
+return;
+ for ( i=0; i<gd->hbundle->cnt; i++ )
+ LookForMasterHVStem( gd->hbundle->stemlist[i],&gd->bd );
+ for ( i=0; i<gd->hbundle->cnt; i++ )
+ ClearUnneededDeps( gd->hbundle->stemlist[i] );
+ for ( i=0; i<gd->vbundle->cnt; i++ )
+ LookForMasterHVStem( gd->vbundle->stemlist[i],&gd->bd );
+ for ( i=0; i<gd->vbundle->cnt; i++ )
+ ClearUnneededDeps( gd->vbundle->stemlist[i] );
+}
+
+static void AddSerifOrBall( struct glyphdata *gd,
+ struct stemdata *master,struct stemdata *slave,int lbase,int is_ball ) {
+
+ struct dependent_serif *tserif;
+ struct pointdata *spd;
+ double width, min, max;
+ int i, j, scnt, next;
+
+ if ( lbase ) {
+ width = fabs(
+ ( slave->right.x - master->left.x ) * master->unit.y -
+ ( slave->right.y - master->left.y ) * master->unit.x );
+ max = width + slave->rmin + 2*dist_error_hv;
+ min = width + slave->rmax - 2*dist_error_hv;
+ } else {
+ width = fabs(
+ ( master->right.x - slave->left.x ) * master->unit.y -
+ ( master->right.y - slave->left.y ) * master->unit.x );
+ max = width - slave->lmax + 2*dist_error_hv;
+ min = width - slave->lmin - 2*dist_error_hv;
+ }
+
+ scnt = master->serif_cnt;
+ for ( i=0; i<scnt; i++ ) {
+ tserif = &master->serifs[i];
+ if ( tserif->stem == slave && tserif->lbase == lbase )
+ break;
+ else if ( tserif->width > min && tserif->width < max && tserif->lbase == lbase ) {
+ for ( j=0; j<slave->chunk_cnt; j++ ) {
+ spd = ( lbase ) ? slave->chunks[j].r : slave->chunks[j].l;
+ next = ( lbase ) ? slave->chunks[j].rnext : slave->chunks[j].lnext;
+ if ( spd != NULL && IsStemAssignedToPoint( spd,tserif->stem,next ) == -1 )
+ AddToStem( gd,tserif->stem,spd,NULL,next,false,false );
+ }
+ break;
+ }
+ }
+ if ( i<master->serif_cnt )
+return;
+
+ master->serifs = realloc(
+ master->serifs,( scnt+1 )*sizeof( struct dependent_serif ));
+ master->serifs[scnt].stem = slave;
+ master->serifs[scnt].width = width;
+ master->serifs[scnt].lbase = lbase;
+ master->serifs[scnt].is_ball = is_ball;
+ master->serif_cnt++;
+
+ /* Mark the dependent stem as related with a bundle, although it */
+ /* is not listed in that bundle itself */
+ slave->bundle = master->bundle;
+}
+
+static int IsBall( struct glyphdata *gd,
+ struct pointdata *pd,struct stemdata *master,int lbase ) {
+
+ double max, min, dot, coord;
+ BasePoint *lbp, *rbp, *dir;
+ Spline *test;
+ struct pointdata *nbase, *pbase, *tpd;
+ struct stem_chunk *chunk;
+ int i, is_x, peak_passed;
+
+ if ( pd == NULL || ( pd->x_extr != 1 && pd->y_extr != 1 ))
+return( false );
+
+ is_x = ( IsUnitHV( &master->unit,true ) == 1 );
+ lbp = ( lbase ) ? &master->left : &pd->base;
+ rbp = ( lbase ) ? &pd->base : &master->right;
+ min = ( is_x ) ? rbp->y : lbp->x;
+ max = ( is_x ) ? lbp->y : rbp->x;
+
+ peak_passed = false;
+ nbase = pbase = NULL;
+ test = pd->sp->next;
+ dir = &pd->nextunit;
+
+ if ( test != NULL ) do {
+ tpd = &gd->points[test->to->ptindex];
+ if ( IsStemAssignedToPoint( tpd,master,true ) != -1 ) {
+ nbase = tpd;
+ break;
+ }
+ coord = ( is_x ) ? tpd->base.y : tpd->base.x;
+ dot = tpd->nextunit.x * dir->x + tpd->nextunit.y * dir->y;
+ if ( dot == 0 && !peak_passed ) {
+ dir = &tpd->nextunit;
+ dot = 1.0;
+ peak_passed = true;
+ }
+ test = test->to->next;
+ } while ( test != NULL && test != pd->sp->next && dot > 0 &&
+ coord >= min && coord <= max );
+
+ peak_passed = false;
+ test = pd->sp->prev;
+ dir = &pd->prevunit;
+ if ( test != NULL ) do {
+ tpd = &gd->points[test->from->ptindex];
+ if ( IsStemAssignedToPoint( tpd,master,false ) != -1 ) {
+ pbase = tpd;
+ break;
+ }
+ coord = ( is_x ) ? tpd->base.y : tpd->base.x;
+ dot = tpd->prevunit.x * dir->x + tpd->prevunit.y * dir->y;
+ if ( dot == 0 && !peak_passed ) {
+ dir = &tpd->prevunit;
+ dot = 1.0;
+ peak_passed = true;
+ }
+ test = test->from->prev;
+ } while ( test != NULL && test != pd->sp->prev && dot > 0 &&
+ coord >= min && coord <= max );
+
+ if ( nbase != NULL && pbase != NULL ) {
+ for ( i=0; i<master->chunk_cnt; i++ ) {
+ chunk = &master->chunks[i];
+ if (( chunk->l == nbase && chunk->r == pbase ) ||
+ ( chunk->l == pbase && chunk->r == nbase ))
+return( true );
+ }
+ }
+return( false );
+}
+
+static void GetSerifData( struct glyphdata *gd,struct stemdata *stem ) {
+ int i, j, is_x, stem_cnt;
+ int snext, enext, eidx, allow_s, allow_e, s_ball, e_ball;
+ struct stem_chunk *chunk;
+ struct stemdata *tstem, *smaster=NULL, *emaster=NULL;
+ struct pointdata *spd, *epd;
+ struct stembundle *bundle;
+ double start, end, tstart, tend, smend, emstart;
+
+ is_x = ( IsUnitHV( &stem->unit,true ) == 1 );
+ bundle = ( is_x ) ? gd->hbundle : gd->vbundle;
+ start = ( is_x ) ? stem->right.y : stem->left.x;
+ end = ( is_x ) ? stem->left.y : stem->right.x;
+
+ allow_s = allow_e = true;
+ s_ball = e_ball = 0;
+ for ( i=0; i<stem->chunk_cnt && ( allow_s == true || allow_e == true ); i++ ) {
+ chunk = &stem->chunks[i];
+ spd = ( is_x ) ? chunk->r : chunk->l;
+ snext = ( is_x ) ? chunk->rnext : chunk->lnext;
+ epd = ( is_x ) ? chunk->l : chunk->r;
+ enext = ( is_x ) ? chunk->lnext : chunk->rnext;
+
+ if ( spd != NULL && allow_e ) {
+ stem_cnt = ( snext ) ? spd->nextcnt : spd->prevcnt;
+ for ( j=0; j<stem_cnt; j++ ) {
+ tstem = ( snext ) ? spd->nextstems[j] : spd->prevstems[j];
+ if (RealNear( tstem->unit.x,stem->unit.x ) && RealNear( tstem->unit.y,stem->unit.y ) &&
+ !tstem->toobig ) {
+ chunk->is_ball = e_ball = IsBall( gd,epd,tstem,!is_x );
+ if ( e_ball ) {
+ chunk->ball_m = tstem;
+ emaster = tstem;
+ emstart = ( is_x ) ? tstem->right.y : tstem->left.x;
+ }
+ allow_s = false;
+ }
+ }
+
+ }
+ if ( epd != NULL && allow_s ) {
+ stem_cnt = ( enext ) ? epd->nextcnt : epd->prevcnt;
+ for ( j=0; j<stem_cnt; j++ ) {
+ tstem = ( enext ) ? epd->nextstems[j] : epd->prevstems[j];
+ if (tstem->unit.x == stem->unit.x && tstem->unit.y == stem->unit.y &&
+ !tstem->toobig ) {
+ chunk->is_ball = s_ball = IsBall( gd,spd,tstem,is_x );
+ if ( s_ball ) {
+ chunk->ball_m = tstem;
+ smaster = tstem;
+ smend = ( is_x ) ? tstem->left.y : tstem->right.x;
+ }
+ allow_e = false;
+ }
+ }
+
+ }
+ }
+
+ for ( i=0; i<bundle->cnt; i++ ) {
+ tstem = bundle->stemlist[i];
+ if (tstem->unit.x != stem->unit.x || tstem->unit.y != stem->unit.y ||
+ tstem->toobig || tstem->width >= stem->width )
+ continue;
+
+ tstart = ( is_x ) ? tstem->right.y : tstem->left.x;
+ tend = ( is_x ) ? tstem->left.y : tstem->right.x;
+
+ if ( tstart >= start && tend <= end ) {
+ if ( allow_s && tstart > start ) {
+ for ( j=0; j<tstem->chunk_cnt && smaster != tstem; j++ ) {
+ if ( is_x ) {
+ spd = tstem->chunks[j].l;
+ snext = tstem->chunks[j].lnext;
+ eidx = tstem->chunks[j].l_e_idx;
+ } else {
+ spd = tstem->chunks[j].r;
+ snext = tstem->chunks[j].rnext;
+ eidx = tstem->chunks[j].r_e_idx;
+ }
+ if ( spd != NULL && ConnectsAcrossToStem( gd,spd,snext,stem,is_x,eidx ) &&
+ ( smaster == NULL || smend - start > tend - start )) {
+ smaster = tstem;
+ smend = tend;
+ }
+ }
+ }
+ if ( allow_e && tend < end ) {
+ for ( j=0; j<tstem->chunk_cnt && emaster != tstem; j++ ) {
+ if ( is_x ) {
+ epd = tstem->chunks[j].r;
+ enext = tstem->chunks[j].rnext;
+ eidx = tstem->chunks[j].r_e_idx;
+ } else {
+ epd = tstem->chunks[j].l;
+ enext = tstem->chunks[j].lnext;
+ eidx = tstem->chunks[j].l_e_idx;
+ }
+ if ( epd != NULL && ConnectsAcrossToStem( gd,epd,enext,stem,!is_x,eidx ) &&
+ ( emaster == NULL || end - emstart > end - tstart )) {
+ emaster = tstem;
+ emstart = tstart;
+ }
+ }
+ }
+ }
+ }
+ if ( smaster != NULL )
+ AddSerifOrBall( gd,smaster,stem,is_x,s_ball );
+ if ( emaster != NULL )
+ AddSerifOrBall( gd,emaster,stem,!is_x,e_ball );
+}
+
+static double ActiveOverlap( struct stemdata *stem1,struct stemdata *stem2 ) {
+ int is_x, i, j = 0;
+ double base1, base2, s1, e1, s2, e2, s, e, len = 0;
+
+ is_x = ( IsUnitHV( &stem1->unit,true ) == 2 );
+ base1 = ( &stem1->left.x )[is_x];
+ base2 = ( &stem2->left.x )[is_x];
+
+ for ( i=0; i<stem1->activecnt; i++ ) {
+ s1 = base1 + stem1->active[i].start;
+ e1 = base1 + stem1->active[i].end;
+ for ( ; j<stem2->activecnt; j++ ) {
+ s2 = base2 + stem2->active[j].start;
+ e2 = base2 + stem2->active[j].end;
+ if ( s2 > e1 )
+ break;
+
+ if ( e2 < s1 )
+ continue;
+
+ s = s2 < s1 ? s1 : s2;
+ e = e2 > e1 ? e1 : e2;
+ if ( e<s )
+ continue; /* Shouldn't happen */
+ len += e - s;
+ }
+ }
+return( len );
+}
+
+static int StemPairsSimilar( struct stemdata *s1, struct stemdata *s2,
+ struct stemdata *ts1, struct stemdata *ts2 ) {
+
+ int normal, reversed, ret = 0;
+ double olen1, olen2;
+
+ /* Stem widths in the second pair should be nearly the same as */
+ /* stem widths in the first pair */
+ normal = ( ts1->width >= s1->width - dist_error_hv &&
+ ts1->width <= s1->width + dist_error_hv &&
+ ts2->width >= s2->width - dist_error_hv &&
+ ts2->width <= s2->width + dist_error_hv );
+ reversed = (ts1->width >= s2->width - dist_error_hv &&
+ ts1->width <= s2->width + dist_error_hv &&
+ ts2->width >= s1->width - dist_error_hv &&
+ ts2->width <= s1->width + dist_error_hv );
+
+ if ( !normal && !reversed )
+return( false );
+
+ if ( normal ) {
+ olen1 = ActiveOverlap( s1, ts1 );
+ olen2 = ActiveOverlap( s2, ts2 );
+ ret = olen1 > s1->clen/3 && olen1 > ts1->clen/3 &&
+ olen2 > s2->clen/3 && olen2 > ts2->clen/3;
+ } else if ( reversed ) {
+ olen1 = ActiveOverlap( s1, ts2 );
+ olen2 = ActiveOverlap( s2, ts1 );
+ ret = olen1 > s1->clen/3 && olen1 > ts2->clen/3 &&
+ olen2 > s2->clen/3 && olen2 > ts1->clen/3;
+ }
+return( ret );
+}
+
+static void FindCounterGroups( struct glyphdata *gd,int is_v ) {
+ struct stembundle *bundle = is_v ? gd->vbundle : gd->hbundle;
+ struct stemdata *curm, *prevm, *cur, *prev;
+ int i, j;
+ double mdist, dist;
+
+ prevm = NULL;
+ for ( i=0; i<bundle->cnt; i++ ) {
+ curm = prev = bundle->stemlist[i];
+ if ( curm->master != NULL )
+ continue;
+ if ( prevm == NULL || curm->prev_c_m != NULL ) {
+ prevm = curm;
+ continue;
+ }
+ mdist = is_v ? curm->left.x - prevm->right.x : curm->right.y - prevm->left.y;
+ for ( j=i+1; j<bundle->cnt; j++ ) {
+ cur = bundle->stemlist[j];
+ if ( cur->master != NULL )
+ continue;
+ if ( cur->prev_c_m != NULL ) {
+ prev = cur;
+ continue;
+ }
+
+ dist = is_v ? cur->left.x - prev->right.x : cur->right.y - prev->left.y;
+ if ( mdist > dist - dist_error_hv && mdist < dist + dist_error_hv &&
+ StemPairsSimilar( prevm,curm,prev,cur )) {
+ prev->next_c_m = prevm;
+ cur->prev_c_m = curm;
+ }
+ prev = cur;
+ }
+ prevm = curm;
+ }
+}
+
+/* Normally we use the DetectDiagonalStems flag (set via the Preferences dialog) to determine */
+/* if diagonal stems should be generated. However, sometimes it makes sense to reduce the */
+/* processing time, deliberately turning the diagonal stem detection off: in particular we */
+/* don't need any diagonal stems if we only want to assign points to some preexisting HV */
+/* hints. For thisreason the only_hv argument still can be passed to this function. */
+struct glyphdata *GlyphDataInit( SplineChar *sc,int layer,double em_size,int only_hv ) {
+ struct glyphdata *gd;
+ struct pointdata *pd;
+ int i;
+ SplineSet *ss;
+ SplinePoint *sp;
+ Monotonic *m;
+ int cnt;
+ double iangle;
+
+ if ( layer<0 || layer>=sc->layer_cnt )
+ return( NULL );
+
+ /* We only hint one layer at a time */
+ /* We shan't try to hint references yet */
+ if ( sc->layers[layer].splines==NULL )
+return( NULL );
+
+ gd = calloc( 1,sizeof( struct glyphdata ));
+ gd->only_hv = only_hv;
+ gd->layer = layer;
+
+ gd->sc = sc;
+ gd->sf = sc->parent;
+ gd->emsize = em_size;
+ gd->order2 = ( sc->parent != NULL ) ? sc->parent->layers[layer].order2 : false;
+ gd->fuzz = GetBlueFuzz( sc->parent );
+
+ dist_error_hv = .0035*gd->emsize;
+ dist_error_diag = .0065*gd->emsize;
+ dist_error_curve = .022*gd->emsize;
+
+ if ( sc->parent != NULL && sc->parent->italicangle ) {
+ iangle = ( 90 + sc->parent->italicangle );
+ gd->has_slant = true;
+ gd->slant_unit.x = cos( iangle * ( PI/180 ));
+ gd->slant_unit.y = sin( iangle * ( PI/180 ));
+ } else {
+ gd->has_slant = false;
+ gd->slant_unit.x = 0; gd->slant_unit.y = 1;
+ }
+
+ /* SSToMContours can clean up the splinesets (remove 0 length splines) */
+ /* so it must be called BEFORE everything else (even though logically */
+ /* that doesn't make much sense). Otherwise we might have a pointer */
+ /* to something since freed */
+ gd->ms = SSsToMContours(sc->layers[layer].splines,over_remove); /* second argument is meaningless here */
+
+ gd->realcnt = gd->pcnt = SCNumberPoints( sc, layer );
+ for ( i=0, ss=sc->layers[layer].splines; ss!=NULL; ss=ss->next, ++i );
+ gd->ccnt = i;
+ gd->contourends = malloc((i+1)*sizeof(int));
+ for ( i=0, ss=sc->layers[layer].splines; ss!=NULL; ss=ss->next, ++i ) {
+ SplinePoint *last;
+ if ( ss->first->prev!=NULL )
+ last = ss->first->prev->from;
+ else
+ last = ss->last;
+ if ( last->ttfindex==0xffff )
+ gd->contourends[i] = last->nextcpindex;
+ else
+ gd->contourends[i] = last->ttfindex;
+ }
+ gd->contourends[i] = -1;
+
+ /* Create temporary point numbers for the implied points. We need this */
+ /* for metafont if nothing else */
+ for ( ss= sc->layers[layer].splines; ss!=NULL; ss = ss->next ) {
+ for ( sp = ss->first; ; ) {
+ if ( sp->ttfindex < gd->realcnt )
+ sp->ptindex = sp->ttfindex;
+ else if ( sp->ttfindex == 0xffff )
+ sp->ptindex = gd->pcnt++;
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==ss->first )
+ break;
+ }
+ }
+ gd->norefpcnt = gd->pcnt;
+ /* And for 0xfffe points such as those used in glyphs with order2 glyphs */
+ /* with references. */
+ for ( ss = sc->layers[layer].splines; ss!=NULL; ss = ss->next ) {
+ for ( sp = ss->first; ; ) {
+ if ( sp->ttfindex == 0xfffe )
+ sp->ptindex = gd->pcnt++;
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==ss->first )
+ break;
+ }
+ }
+ gd->pspace = malloc( gd->pcnt*sizeof( struct pointdata *));
+
+ /*gd->ms = SSsToMContours(sc->layers[layer].splines,over_remove);*/ /* second argument is meaningless here */
+ for ( m=gd->ms, cnt=0; m!=NULL; m=m->linked, ++cnt );
+ gd->space = malloc((cnt+2)*sizeof(Monotonic*));
+ gd->mcnt = cnt;
+
+ gd->points = calloc(gd->pcnt,sizeof(struct pointdata));
+ for ( ss=sc->layers[layer].splines; ss!=NULL; ss=ss->next ) if ( ss->first->prev!=NULL ) {
+ for ( sp=ss->first; ; ) {
+ PointInit( gd,sp,ss );
+ if ( sp->next==NULL )
+ break;
+ sp = sp->next->to;
+ if ( sp==ss->first )
+ break;
+ }
+ }
+
+ for ( i=0; i<gd->pcnt; ++i ) if ( gd->points[i].sp!=NULL ) {
+ pd = &gd->points[i];
+ if ( !pd->nextzero )
+ pd->next_e_cnt = FindMatchingEdge(gd,pd,true,pd->nextedges);
+ if ( !pd->prevzero )
+ pd->prev_e_cnt = FindMatchingEdge(gd,pd,false,pd->prevedges);
+ if (( pd->symetrical_h || pd->symetrical_v ) && ( pd->x_corner || pd->y_corner))
+ FindMatchingEdge(gd,pd,2,&pd->bothedge);
+ }
+
+return( gd );
+}
+
+struct glyphdata *GlyphDataBuild( SplineChar *sc,int layer, BlueData *bd,int use_existing ) {
+ struct glyphdata *gd;
+ struct pointdata *pd;
+ struct stemdata *stem;
+ BasePoint dir;
+ struct stem_chunk *chunk;
+ int i, j, only_hv, startcnt, stemcnt, ecnt, hv, has_h, has_v;
+ double em_size;
+ DBounds bounds;
+
+ only_hv = ( !detect_diagonal_stems && ( !use_existing || sc->dstem == NULL ));
+ em_size = ( sc->parent != NULL ) ? sc->parent->ascent + sc->parent->descent : 1000;
+
+ gd = GlyphDataInit( sc,layer,em_size,only_hv );
+ if ( gd == NULL )
+return( gd );
+ /* Get the alignment zones */
+ if ( bd == NULL )
+ QuickBlues( gd->sf,gd->layer,&gd->bd );
+ else
+ memcpy( &gd->bd,bd,sizeof( BlueData ));
+
+ /* There will never be more lines than there are points (counting next/prev as separate) */
+ gd->lines = malloc( 2*gd->pcnt*sizeof( struct linedata ));
+ gd->linecnt = 0;
+ for ( i=0; i<gd->pcnt; ++i ) if ( gd->points[i].sp!=NULL ) {
+ pd = &gd->points[i];
+ if (( !gd->only_hv || pd->next_hor || pd->next_ver ) && pd->nextline==NULL ) {
+ pd->nextline = BuildLine(gd,pd,true);
+ if ( pd->colinear )
+ pd->prevline = pd->nextline;
+ }
+ if (( !gd->only_hv || pd->prev_hor || pd->prev_ver ) && pd->prevline==NULL ) {
+ pd->prevline = BuildLine(gd,pd,false);
+ if ( pd->colinear && pd->nextline == NULL )
+ pd->nextline = pd->prevline;
+ }
+ }
+
+ /* There will never be more stems than there are points (counting next/prev as separate) */
+ gd->stems = calloc( 2*gd->pcnt,sizeof( struct stemdata ));
+ gd->stemcnt = 0; /* None used so far */
+
+ if ( use_existing ) {
+ SplineCharFindBounds( gd->sc,&bounds );
+ if ( sc->vstem != NULL )
+ _StemInfoToStemData( gd,sc->vstem,&bounds,true,&startcnt );
+ if ( sc->hstem != NULL )
+ _StemInfoToStemData( gd,sc->hstem,&bounds,false,&startcnt );
+ if ( sc->dstem != NULL )
+ _DStemInfoToStemData( gd,sc->dstem,&startcnt );
+ }
+
+ for ( i=0; i<gd->pcnt; ++i ) if ( gd->points[i].sp!=NULL ) {
+ pd = &gd->points[i];
+ if ( pd->prev_e_cnt > 0 ) {
+ ecnt = BuildStem( gd,pd,false,false,use_existing,0 );
+ if ( ecnt == 0 && pd->prev_e_cnt > 1 )
+ BuildStem( gd,pd,false,false,false,1 );
+ }
+ if ( pd->next_e_cnt > 0 ) {
+ ecnt = BuildStem( gd,pd,true,false,use_existing,0 );
+ if ( ecnt == 0 && pd->next_e_cnt > 1 )
+ BuildStem( gd,pd,true,false,false,1 );
+ }
+ if ( pd->bothedge!=NULL ) {
+ DiagonalCornerStem( gd,pd,false );
+ }
+
+ /* Snap corner extrema to preexisting hints if they have not */
+ /* already been. This is currently done only when preparing */
+ /* glyph data for the autoinstructor */
+ if ( use_existing && ( pd->x_corner || pd->y_corner )) {
+ has_h = has_v = false;
+ for ( j=0; j<pd->prevcnt && (( pd->x_corner && !has_v ) || ( pd->y_corner && !has_h )); j++ ) {
+ hv = IsUnitHV( &pd->prevstems[j]->unit,true );
+ if ( hv == 1 ) has_h = true;
+ else if ( hv == 2 ) has_v = true;
+ }
+ for ( j=0; j<pd->nextcnt && (( pd->x_corner && !has_v ) || ( pd->y_corner && !has_h )); j++ ) {
+ hv = IsUnitHV( &pd->nextstems[j]->unit,true );
+ if ( hv == 1 ) has_h = true;
+ else if ( hv == 2 ) has_v = true;
+ }
+ if ( pd->x_corner && !has_v ) {
+ dir.x = 0; dir.y = 1;
+ HalfStemNoOpposite( gd,pd,NULL,&dir,2 );
+ } else if ( pd->y_corner && !has_h ) {
+ dir.x = 1; dir.y = 0;
+ HalfStemNoOpposite( gd,pd,NULL,&dir,2 );
+ }
+ }
+ }
+ AssignLinePointsToStems( gd );
+
+ /* Normalize stems before calculating active zones (as otherwise */
+ /* we don't know exact positions of stem edges */
+ for ( i=0; i<gd->stemcnt; ++i )
+ NormalizeStem( gd,&gd->stems[i] );
+ GDNormalizeStubs( gd );
+
+ /* Figure out active zones at the first order (as they are needed to */
+ /* determine which stems are undesired and they don't depend from */
+ /* the "potential" state of left/right points in chunks */
+ gd->lspace = malloc(gd->pcnt*sizeof(struct segment));
+ gd->rspace = malloc(gd->pcnt*sizeof(struct segment));
+ gd->bothspace = malloc(3*gd->pcnt*sizeof(struct segment));
+ gd->activespace = malloc(3*gd->pcnt*sizeof(struct segment));
+#if GLYPH_DATA_DEBUG
+ fprintf( stderr,"Going to calculate stem active zones for %s\n",gd->sc->name );
+#endif
+ for ( i=0; i<gd->stemcnt; ++i )
+ FigureStemActive( gd,&gd->stems[i] );
+
+ /* Check this before resolving stem conflicts, as otherwise we can */
+ /* occasionally prefer a stem which should be excluded from the list */
+ /* for some other reasons */
+ GDFindUnlikelyStems( gd );
+
+ /* we were cautious about assigning points to stems, go back now and see */
+ /* if there are any low-quality matches which remain unassigned, and if */
+ /* so then assign them to the stem they almost fit on. */
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ for ( j=0; j<stem->chunk_cnt; ++j ) {
+ chunk = &stem->chunks[j];
+ if ( chunk->l!=NULL && chunk->lpotential ) {
+ stemcnt = ( chunk->lnext ) ? chunk->l->nextcnt : chunk->l->prevcnt;
+ if ( stemcnt == 1 ) chunk->lpotential = false;
+ }
+ if ( chunk->r!=NULL && chunk->rpotential ) {
+ stemcnt = ( chunk->rnext ) ? chunk->r->nextcnt : chunk->r->prevcnt;
+ if ( stemcnt == 1 ) chunk->rpotential = false;
+ }
+ }
+ }
+ /* If there are multiple stems, find the one which is closest to this point */
+ for ( i=0; i<gd->pcnt; ++i ) if ( gd->points[i].sp != NULL ) {
+ pd = &gd->points[i];
+ if ( pd->prevcnt > 1 ) CheckPotential( gd,pd,false );
+ if ( pd->nextcnt > 1 ) CheckPotential( gd,pd,true );
+ }
+
+ if ( hint_bounding_boxes )
+ CheckForBoundingBoxHints( gd );
+ CheckForGhostHints( gd );
+ if ( use_existing )
+ MarkDStemCorners( gd );
+
+ GDBundleStems( gd,0,use_existing );
+ if ( use_existing ) {
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ stem = &gd->stems[i];
+ if ( stem->toobig == 1 && IsUnitHV( &stem->unit,true ))
+ GetSerifData( gd,stem );
+ }
+ FindCounterGroups( gd,true );
+ }
+
+#if GLYPH_DATA_DEBUG
+ DumpGlyphData( gd );
+#endif
+ free(gd->lspace); gd->lspace = NULL;
+ free(gd->rspace); gd->rspace = NULL;
+ free(gd->bothspace); gd->bothspace = NULL;
+ free(gd->activespace); gd->activespace = NULL;
+
+return( gd );
+}
+
+void GlyphDataFree(struct glyphdata *gd) {
+ int i;
+ if ( gd == NULL )
+return;
+
+ FreeMonotonics( gd->ms ); gd->ms = NULL;
+ free( gd->space ); gd->space = NULL;
+ free( gd->sspace ); gd->sspace = NULL;
+ free( gd->stspace ); gd->stspace = NULL;
+ free( gd->pspace ); gd->pspace = NULL;
+
+ /* Clean up temporary point numbers */
+ for ( i=0; i<gd->pcnt; ++i ) if ( gd->points[i].sp != NULL )
+ gd->points[i].sp->ptindex = 0;
+
+ if ( gd->hbundle != NULL ) {
+ free( gd->hbundle->stemlist );
+ free( gd->hbundle );
+ }
+ if ( gd->vbundle != NULL ) {
+ free( gd->vbundle->stemlist );
+ free( gd->vbundle );
+ }
+ if ( gd->ibundle != NULL ) {
+ free( gd->ibundle->stemlist );
+ free( gd->ibundle );
+ }
+
+ for ( i=0; i<gd->linecnt; ++i )
+ free( gd->lines[i].points );
+ for ( i=0; i<gd->stemcnt; ++i ) {
+ free( gd->stems[i].chunks );
+ free( gd->stems[i].dependent );
+ free( gd->stems[i].serifs );
+ free( gd->stems[i].active );
+ }
+ for ( i=0; i<gd->pcnt; ++i ) {
+ free( gd->points[i].nextstems );
+ free( gd->points[i].next_is_l );
+ free( gd->points[i].prevstems );
+ free( gd->points[i].prev_is_l );
+ }
+ free( gd->lines );
+ free( gd->stems );
+ free( gd->contourends );
+ free( gd->points );
+ free( gd );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/stemdb.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/stemdb.h
new file mode 100644
index 00000000000..8e47572411f
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/stemdb.h
@@ -0,0 +1,214 @@
+/* Copyright (C) 2005-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _STEMDB_H_
+# define _STEMDB_H_
+
+# include "fontforge.h"
+
+struct segment {
+ double start, end, sbase, ebase;
+ int curved, scurved, ecurved;
+};
+
+typedef struct glyphdata {
+ SplineFont *sf;
+ BlueData bd;
+ int fuzz;
+ SplineChar *sc;
+ int layer;
+ int emsize;
+ int order2;
+ int has_slant;
+ BasePoint slant_unit;
+ int ccnt;
+ int *contourends;
+ int realcnt; /* Includes control points, excludes implied points */
+ int norefpcnt; /* Does not include points in glyphs with references */
+ int pcnt; /* Includes control points, includes implied points */
+ struct pointdata *points; /* Entries corresponding to control points are empty */
+ int stemcnt;
+ struct stemdata *stems;
+ int linecnt;
+ struct linedata *lines;
+ struct stembundle *hbundle;
+ struct stembundle *vbundle;
+ struct stembundle *ibundle;
+
+ /* Temporary values, quickly freed */
+ int mcnt;
+ struct monotonic *ms;
+ struct monotonic **space;
+ int scnt;
+ Spline **sspace;
+ struct st *stspace;
+ DBounds size;
+ struct pointdata **pspace;
+ struct segment *lspace, *rspace, *bothspace, *activespace;
+
+ int only_hv;
+} GlyphData;
+
+typedef struct pointdata {
+ SplinePoint *sp;
+ SplineSet *ss;
+ int ttfindex; /* normally same as sp->ttfindex, but needed for offcurve points */
+ BasePoint base; /* normally same as sp->me, but needed for offcurve points */
+ BasePoint nextunit, prevunit; /* unit vectors pointing in the next/prev directions */
+ struct linedata *nextline, *prevline; /* any other points lying on approximately the same line */
+ Spline *nextedges[2], *prevedges[2]; /* There should always be a matching spline, which may end up as part of a stem, and may not */
+ Spline *bothedge;
+ double next_e_t[2], prev_e_t[2]; /* Location on other edge where our normal hits it */
+ double both_e_t;
+ int next_e_cnt, prev_e_cnt;
+ double next_dist[2], prev_dist[2]; /* Distance from the point to the matching edge */
+ struct stemdata **nextstems, **prevstems;
+ int *next_is_l, *prev_is_l;
+ int nextcnt, prevcnt;
+ double nextlen, prevlen;
+ int value; /* Temporary value, used to compare points assigned to the same edge and determine which one can be used as a reference point*/
+ unsigned int nextlinear: 1;
+ unsigned int nextzero: 1;
+ unsigned int prevlinear: 1;
+ unsigned int prevzero: 1;
+ unsigned int colinear: 1;
+ unsigned int symetrical_h: 1; /* Are next & prev symetrical? */
+ unsigned int symetrical_v: 1; /* Are next & prev symetrical? */
+ unsigned int next_hor: 1;
+ unsigned int next_ver: 1;
+ unsigned int prev_hor: 1;
+ unsigned int prev_ver: 1;
+ unsigned int ticked: 1;
+ uint8 touched, affected;
+ uint8 x_extr, y_extr;
+ uint8 x_corner, y_corner;
+ BasePoint newpos;
+ BasePoint newnext, newprev;
+ BasePoint posdir; /* If point has been positioned in 1 direction, this is that direction */
+ double projection; /* temporary value */
+} PointData;
+
+typedef struct linedata {
+ BasePoint unit;
+ BasePoint online;
+ uint8 is_left;
+ int pcnt;
+ double length;
+ struct pointdata **points;
+} LineData;
+
+struct stem_chunk {
+ struct stemdata *parent;
+ struct pointdata *l;
+ struct pointdata *r;
+ uint8 lpotential, rpotential;
+ uint8 lnext, rnext; /* are we using the next/prev side of the left/right points */
+ uint8 ltick, rtick;
+ uint8 stub;
+ uint8 stemcheat; /* It's not a real stem, but it's something we'd like PostScript to hint for us */
+ uint8 is_ball; /* Specifies if this chunk marks the opposite sides of a ball terminal (useful for TTF instructions) */
+ struct stemdata *ball_m;
+ int l_e_idx, r_e_idx; /* Which of the opposed edges assigned to the left and right points corresponds to this chunk */
+};
+
+struct dependent_stem {
+ struct stemdata *stem;
+ uint8 lbase;
+ char dep_type; /* can be 'a' (align), 'i' (interpolate), 'm' (move) or 's' (serif) */
+};
+
+struct dependent_serif {
+ struct stemdata *stem;
+ double width; /* The distance from an edge of the main stem to the opposite edge of the serif stem */
+ uint8 lbase;
+ uint8 is_ball;
+};
+
+typedef struct stemdata {
+ BasePoint unit; /* Unit vector pointing in direction of stem */
+ BasePoint l_to_r; /* Unit vector pointing from left to right (across stem) */
+ BasePoint left; /* a point on one side of the stem (not necissarily left, even for vertical stems) */
+ BasePoint right; /* and one on the other */
+ BasePoint newunit; /* Unit vector after repositioning (e. g. in Metafont routines) */
+ BasePoint newleft, newright;/* Left and right edges after repositioning */
+ int leftidx, rightidx; /* TTF indices of the left and right key points */
+ struct pointdata *keypts[4];/* Uppest and lowest points on left and right edges. Used for positioning diagonal stems */
+ double lmin, lmax, rmin, rmax;
+ double width;
+ int chunk_cnt; /* number of separate point-pairs on this stem */
+ struct stem_chunk *chunks;
+ int activecnt;
+ struct segment *active;
+ uint8 toobig; /* Stem is fatter than tall, unlikely to be a real stem */
+ uint8 positioned;
+ uint8 ticked;
+ uint8 ghost;
+ uint8 bbox;
+ uint8 ldone, rdone;
+ uint8 italic;
+ int blue; /* Blue zone a ghost hint is attached to */
+ double len, clen; /* Length of linear segments. clen adds "length" of curved bits */
+ struct stembundle *bundle;
+ int lpcnt, rpcnt; /* Count of points assigned to left and right edges of this stem */
+ struct linedata *leftline, *rightline;
+ struct stemdata *master, *next_c_m, *prev_c_m;
+ int confl_cnt;
+ int dep_cnt;
+ int serif_cnt;
+ struct dependent_stem *dependent; /* Lists other stems dependent from the given stem */
+ struct dependent_serif *serifs; /* Lists serifs and other elements protruding from the base stem */
+} StemData;
+
+typedef struct vchunk {
+ struct stem_chunk *chunk;
+ double dist;
+ int parallel;
+ int value;
+} VChunk;
+
+struct stembounds {
+ struct stembounds *next;
+ struct stemdata *stem;
+ double tstart, tend;
+ uint8 isr;
+};
+
+typedef struct stembundle {
+ BasePoint unit; /* All these stems are parallel, pointing in unit direction */
+ BasePoint l_to_r; /* Axis along which these stems are ordered (normal to unit) */
+ BasePoint bp; /* Base point for measuring by l_to_r (stem->lpos,rpos) */
+ int cnt; /* Number of stems in the bundle */
+ struct stemdata **stemlist;
+} StemBundle;
+
+extern struct glyphdata *GlyphDataBuild(SplineChar *sc, int layer, BlueData *bd, int use_existing);
+extern struct glyphdata *GlyphDataInit(SplineChar *sc, int layer, double em_size, int only_hv);
+extern struct glyphdata *StemInfoToStemData( struct glyphdata *gd,StemInfo *si,int is_v );
+extern struct glyphdata *DStemInfoToStemData( struct glyphdata *gd,DStemInfo *dsi );
+extern int IsStemAssignedToPoint( struct pointdata *pd,struct stemdata *stem,int is_next );
+extern void GlyphDataFree(struct glyphdata *gd);
+
+#endif /* _STEMDB_H_ */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tables.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tables.h
new file mode 100644
index 00000000000..4933835e6d3
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tables.h
@@ -0,0 +1,4 @@
+/* Declarations for data tables */
+
+extern const int amspua[], cns14pua[];
+extern const char (*SaveTablesPref[]);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottf.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottf.c
new file mode 100644
index 00000000000..e3257c1fc38
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottf.c
@@ -0,0 +1,6757 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include <math.h>
+#include <time.h>
+#include <utype.h>
+
+#ifdef __CygWin
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
+#endif
+
+#include "ttf.h"
+
+char *TTFFoundry=NULL;
+
+/* This file produces a ttf file given a splinefont. */
+
+/* ************************************************************************** */
+
+/* Required tables:
+ cmap encoding
+ head header data
+ hhea horizontal metrics header data
+ hmtx horizontal metrics (widths, lsidebearing)
+ maxp various maxima in the font
+ name various names associated with the font
+ post postscript names and other stuff
+Required by windows but not mac
+ OS/2 bleah.
+Required for TrueType
+ loca pointers to the glyphs
+ glyf character shapes
+Required for OpenType (PostScript)
+ CFF A complete postscript CFF font here with all its internal tables
+Required for bitmaps
+ bdat/EBDT bitmap data
+ bloc/EBLC pointers to bitmaps
+ bhed for apple bitmap only fonts, replaces head
+Optional for bitmaps
+ EBSC bitmap scaling table (used in windows "bitmap-only" fonts)
+"Advanced Typograpy"
+ Apple
+ feat (mapping between morx features and 'name' names)
+ kern (if data are present)
+ lcar (ligature caret, if data present)
+ morx (substitutions, if data present)
+ prop (glyph properties, if data present)
+ opbd (optical bounds, if data present)
+ OpenType
+ GPOS (opentype, if kern,anchor data are present)
+ GSUB (opentype, if ligature (other subs) data are present)
+ GDEF (opentype, if anchor data are present)
+MATH
+ MATH (MS proposal, if math data present)
+Apple variation tables (for distortable (multiple master type) fonts)
+ fvar (font variations)
+ gvar (glyph variations)
+ cvar (cvt variations)
+ avar (axis variations)
+additional tables
+ cvt for hinting
+ gasp to control when things should be hinted
+ fpgm for hinting (currently only copied and dumped verbatim)
+ prep for hinting (currently only copied and dumped verbatim)
+FontForge
+ PfEd My own table
+TeX
+ TeX TeX specific info (stuff that used to live in tfm files)
+*/
+
+const char *ttfstandardnames[258] = {
+".notdef",
+".null",
+"nonmarkingreturn",
+"space",
+"exclam",
+"quotedbl",
+"numbersign",
+"dollar",
+"percent",
+"ampersand",
+"quotesingle",
+"parenleft",
+"parenright",
+"asterisk",
+"plus",
+"comma",
+"hyphen",
+"period",
+"slash",
+"zero",
+"one",
+"two",
+"three",
+"four",
+"five",
+"six",
+"seven",
+"eight",
+"nine",
+"colon",
+"semicolon",
+"less",
+"equal",
+"greater",
+"question",
+"at",
+"A",
+"B",
+"C",
+"D",
+"E",
+"F",
+"G",
+"H",
+"I",
+"J",
+"K",
+"L",
+"M",
+"N",
+"O",
+"P",
+"Q",
+"R",
+"S",
+"T",
+"U",
+"V",
+"W",
+"X",
+"Y",
+"Z",
+"bracketleft",
+"backslash",
+"bracketright",
+"asciicircum",
+"underscore",
+"grave",
+"a",
+"b",
+"c",
+"d",
+"e",
+"f",
+"g",
+"h",
+"i",
+"j",
+"k",
+"l",
+"m",
+"n",
+"o",
+"p",
+"q",
+"r",
+"s",
+"t",
+"u",
+"v",
+"w",
+"x",
+"y",
+"z",
+"braceleft",
+"bar",
+"braceright",
+"asciitilde",
+"Adieresis",
+"Aring",
+"Ccedilla",
+"Eacute",
+"Ntilde",
+"Odieresis",
+"Udieresis",
+"aacute",
+"agrave",
+"acircumflex",
+"adieresis",
+"atilde",
+"aring",
+"ccedilla",
+"eacute",
+"egrave",
+"ecircumflex",
+"edieresis",
+"iacute",
+"igrave",
+"icircumflex",
+"idieresis",
+"ntilde",
+"oacute",
+"ograve",
+"ocircumflex",
+"odieresis",
+"otilde",
+"uacute",
+"ugrave",
+"ucircumflex",
+"udieresis",
+"dagger",
+"degree",
+"cent",
+"sterling",
+"section",
+"bullet",
+"paragraph",
+"germandbls",
+"registered",
+"copyright",
+"trademark",
+"acute",
+"dieresis",
+"notequal",
+"AE",
+"Oslash",
+"infinity",
+"plusminus",
+"lessequal",
+"greaterequal",
+"yen",
+"mu",
+"partialdiff",
+"summation",
+"product",
+"pi",
+"integral",
+"ordfeminine",
+"ordmasculine",
+"Omega",
+"ae",
+"oslash",
+"questiondown",
+"exclamdown",
+"logicalnot",
+"radical",
+"florin",
+"approxequal",
+"Delta",
+"guillemotleft",
+"guillemotright",
+"ellipsis",
+"nonbreakingspace",
+"Agrave",
+"Atilde",
+"Otilde",
+"OE",
+"oe",
+"endash",
+"emdash",
+"quotedblleft",
+"quotedblright",
+"quoteleft",
+"quoteright",
+"divide",
+"lozenge",
+"ydieresis",
+"Ydieresis",
+"fraction",
+"currency",
+"guilsinglleft",
+"guilsinglright",
+"fi",
+"fl",
+"daggerdbl",
+"periodcentered",
+"quotesinglbase",
+"quotedblbase",
+"perthousand",
+"Acircumflex",
+"Ecircumflex",
+"Aacute",
+"Edieresis",
+"Egrave",
+"Iacute",
+"Icircumflex",
+"Idieresis",
+"Igrave",
+"Oacute",
+"Ocircumflex",
+"apple",
+"Ograve",
+"Uacute",
+"Ucircumflex",
+"Ugrave",
+"dotlessi",
+"circumflex",
+"tilde",
+"macron",
+"breve",
+"dotaccent",
+"ring",
+"cedilla",
+"hungarumlaut",
+"ogonek",
+"caron",
+"Lslash",
+"lslash",
+"Scaron",
+"scaron",
+"Zcaron",
+"zcaron",
+"brokenbar",
+"Eth",
+"eth",
+"Yacute",
+"yacute",
+"Thorn",
+"thorn",
+"minus",
+"multiply",
+"onesuperior",
+"twosuperior",
+"threesuperior",
+"onehalf",
+"onequarter",
+"threequarters",
+"franc",
+"Gbreve",
+"gbreve",
+"Idotaccent",
+"Scedilla",
+"scedilla",
+"Cacute",
+"cacute",
+"Ccaron",
+"ccaron",
+"dcroat"
+};
+/* Relates Unicode blocks as in
+ http://unicode.org/Public/UNIDATA/Blocks.txt
+ to bit positions in the OpenType standard Unicode Character Range
+ field 'ulUnicodeRange'.
+ Note that the OpenType standard specifies bits for a subset
+ of the Unicode blocks.
+ */
+static int uniranges[][3] = {
+ { 0x20, 0x7e, 0 }, /* Basic Latin */
+ { 0xa0, 0xff, 1 }, /* Latin-1 Supplement */
+ { 0x100, 0x17f, 2 }, /* Latin Extended-A */
+ { 0x180, 0x24f, 3 }, /* Latin Extended-B */
+ { 0x250, 0x2af, 4 }, /* IPA Extensions */
+ { 0x2b0, 0x2ff, 5 }, /* Spacing Modifier Letters */
+ { 0x300, 0x36f, 6 }, /* Combining Diacritical Marks */
+ { 0x370, 0x3ff, 7 }, /* Greek and Coptic */
+ { 0x400, 0x52f, 9 }, /* Cyrillic / Cyrillic Supplement */
+ { 0x530, 0x58f, 10 }, /* Armenian */
+ { 0x590, 0x5ff, 11 }, /* Hebrew */
+ { 0x600, 0x6ff, 13 }, /* Arabic */
+ { 0x700, 0x74f, 71 }, /* Syriac */
+ { 0x750, 0x77f, 13 }, /* Arabic Supplement */
+ { 0x780, 0x7bf, 72 }, /* Thaana */
+ { 0x7c0, 0x7ff, 14 }, /* N'Ko */
+ /* { 0x800, 0x83f, ? }, Samaritan */
+ /* { 0x840, 0x85f, ? }, Mandaic */
+ { 0x900, 0x97f, 15 }, /* Devanagari */
+ { 0x980, 0x9ff, 16 }, /* Bengali */
+ { 0xa00, 0xa7f, 17 }, /* Gurmukhi */
+ { 0xa80, 0xaff, 18 }, /* Gujarati */
+ { 0xb00, 0xb7f, 19 }, /* Oriya */
+ { 0xb80, 0xbff, 20 }, /* Tamil */
+ { 0xc00, 0xc7f, 21 }, /* Telugu */
+ { 0xc80, 0xcff, 22 }, /* Kannada */
+ { 0xd00, 0xd7f, 23 }, /* Malayalam */
+ { 0xd80, 0xdff, 73 }, /* Sinhala */
+ { 0xe00, 0xe7f, 24 }, /* Thai */
+ { 0xe80, 0xeff, 25 }, /* Lao */
+ { 0xf00, 0xfbf, 70 }, /* Tibetan */
+ { 0x1000, 0x109f, 74 }, /* Myanmar */
+ { 0x10a0, 0x10ff, 26 }, /* Georgian */
+ { 0x1100, 0x11ff, 28 }, /* Hangul Jamo */
+ { 0x1200, 0x137f, 75 }, /* Ethiopic */
+ { 0x1380, 0x139f, 75 }, /* Ethiopic Supplement */
+ { 0x13a0, 0x13ff, 76 }, /* Cherokee */
+ { 0x1400, 0x167f, 77 }, /* Unified Canadian Aboriginal Symbols */
+ { 0x1680, 0x169f, 78 }, /* Ogham */
+ { 0x16a0, 0x16ff, 79 }, /* Runic */
+ { 0x1700, 0x1714, 84 }, /* Tagalog */
+ { 0x1720, 0x1736, 84 }, /* Harunoo */
+ { 0x1740, 0x1753, 84 }, /* Buhid */
+ { 0x1750, 0x1773, 84 }, /* Tagbanwa */
+ { 0x1780, 0x17ff, 80 }, /* Khmer */
+ { 0x1800, 0x18af, 81 }, /* Mongolian */
+ { 0x18B0, 0x18f5, 77 }, /* Unified Canadian Aboriginal Symbols Extended */
+ { 0x1900, 0x194f, 93 }, /* Limbu */
+ { 0x1950, 0x197f, 94 }, /* Tai Le */
+ { 0x1980, 0x19DF, 95 }, /* New Tai Lue */
+ { 0x19e0, 0x19ff, 80 }, /* Khmer Symbols */
+ { 0x1A00, 0x1A1F, 96 }, /* Buginese */
+ { 0x1B00, 0x1B7f, 27 }, /* Balinese */
+ { 0x1B80, 0x1BB9, 112 }, /* Sudanese */
+ /*{ 0x1bc0, 0x1bff, ? }, Batak */
+ { 0x1C00, 0x1C4F, 113 }, /* Lepcha */
+ { 0x1C50, 0x1C7F, 114 }, /* Ol Chiki */
+ /*{ 0x1cd0, 0x1cff, ? }, Vedic Extensions */
+ { 0x1d00, 0x1dbf, 4 }, /* Phonetic Extensions & Supplement */
+ { 0x1d80, 0x1dff, 6 }, /* Combining Diacritical Marks Supplement */
+ { 0x1e00, 0x1eff, 29 }, /* Latin Extended Additional */
+ { 0x1f00, 0x1fff, 30 }, /* Greek Extended */
+ { 0x2000, 0x206f, 31 }, /* General Punctuation */
+ { 0x2070, 0x209f, 32 }, /* Superscripts and Subscripts */
+ { 0x20a0, 0x20cf, 33 }, /* Currency Symbols */
+ { 0x20d0, 0x20ff, 34 }, /* Combining Marks for Symbols */
+ { 0x2100, 0x214f, 35 }, /* Letterlike Symbols */
+ { 0x2150, 0x218f, 36 }, /* Number Forms */
+ { 0x2190, 0x21ff, 37 }, /* Arrows */
+ { 0x2200, 0x22ff, 38 }, /* Mathematical Operators */
+ { 0x2300, 0x237f, 39 }, /* Miscellaneous Technical */
+ { 0x2400, 0x243f, 40 }, /* Control Pictures */
+ { 0x2440, 0x245f, 41 }, /* Optical Character Recognition */
+ { 0x2460, 0x24ff, 42 }, /* Enclosed Alphanumerics */
+ { 0x2500, 0x257f, 43 }, /* Box Drawing */
+ { 0x2580, 0x259f, 44 }, /* Block Elements */
+ { 0x25a0, 0x25ff, 45 }, /* Geometric Shapes */
+ { 0x2600, 0x267f, 46 }, /* Miscellaneous Symbols */
+ { 0x2700, 0x27bf, 47 }, /* Dingbats */
+ { 0x27c0, 0x27ef, 38 }, /* Miscellaneous Mathematical Symbols-A */
+ { 0x27f0, 0x27ff, 37 }, /* Supplementary Arrows-A */
+ { 0x2800, 0x28ff, 82 }, /* Braille Patterns */
+ { 0x2900, 0x297f, 37 }, /* Supplementary Arrows-B */
+ { 0x2980, 0x2aff, 38 }, /* Miscellaneous Mathematical Symbols-B /
+ Supplemental Mathematical Operators */
+ { 0x2b00, 0x2bff, 37 }, /* Miscellaneous Symbols and Arrows */
+ { 0x2C00, 0x2C5E, 97 }, /* Glagolitic */
+ { 0x2c60, 0x2c7f, 29 }, /* Latin Extended-C */
+ { 0x2c80, 0x2cff, 8 }, /* Coptic */
+ { 0x2D00, 0x2D25, 26 }, /* Georgian Supplement */
+ { 0x2D30, 0x2D6F, 98 }, /* Tifinagh */
+ { 0x2d80, 0x2ddf, 75 }, /* Ethiopic Extended */
+ { 0x2de0, 0x2dff, 9 }, /* Cyrillic Extended-A */
+ { 0x2e00, 0x2e7f, 31 }, /* Supplemental Punctuation */
+ { 0x2e80, 0x2fff, 59 }, /* CJK Radicals Supplement / Kangxi Radicals /
+ Ideographic Description Characters */
+ { 0x3000, 0x303f, 48 }, /* CJK Symbols and Punctuation */
+ { 0x3040, 0x309f, 49 }, /* Hiragana */
+ { 0x30a0, 0x30ff, 50 }, /* Katakana */
+ { 0x3100, 0x312f, 51 }, /* Bopomofo */
+ { 0x3130, 0x318f, 52 }, /* Hangul Compatibility Jamo */
+ { 0x3190, 0x319f, 59 }, /* Kanbun */
+ { 0x31a0, 0x31bf, 51 }, /* Bopomofo Extended */
+ { 0x31f0, 0x31ff, 50 }, /* Katakana Phonetic Extensions */
+ { 0x3200, 0x32ff, 54 }, /* Enclosed CJK Letters and Months */
+ { 0x3300, 0x33ff, 55 }, /* CJK compatability */
+ { 0x3400, 0x4dbf, 59 }, /* CJK Unified Ideographs Extension A */
+ { 0x4dc0, 0x4dff, 99 }, /* Yijing Hexagram Symbols */
+ { 0x4e00, 0x9fff, 59 }, /* CJK Unified Ideographs */
+ { 0xa000, 0xa4cf, 81 }, /* Yi Syllables / Yi Radicals */
+ /*{ 0xA4d0, 0xA4ff, ? }, Lisu */
+ { 0xA500, 0xA62b, 12 }, /* Vai */
+ { 0xa640, 0xa69f, 9 }, /* Cyrillic Extended-B */
+ /*{ 0xa6a0, 0xa6ff, ? }, Bamum */
+ { 0xa700, 0xa71f, 5 }, /* Modifier Tone Letters */
+ { 0xa720, 0xa7ff, 29 }, /* Latin Extended-D */
+ { 0xA800, 0xA82F, 100 }, /* Syloti Nagri */
+ /*{ 0xa830, 0xa83f, ? }, Common Indic Number Forms */
+ { 0xa840, 0xa87f, 53 }, /* Phags-pa */
+ { 0xA880, 0xA8D9, 115 }, /* Saurashtra */
+ /*{ 0xA8E0, 0xA8FF, ? }, Devanagari Extended */
+ { 0xA900, 0xA92F, 116 }, /* Kayah Li */
+ { 0xA930, 0xA95F, 117 }, /* Rejang */
+ /*{ 0xA960, 0xA97F, 28? }, Hangul Jamo Extended-A */
+ /*{ 0xA980, 0xA9DF, ? }, Javanese */
+ { 0xAA00, 0xAA5F, 118 }, /* Cham */
+ /*{ 0xAA60, 0xAA7F, 74? }, Myanmar Extended-A */
+ /*{ 0xAA80, 0xAADF, ? }, Tai Viet */
+ /*{ 0xab00, 0xab2f, 75? }, Ethiopic Extended-A */
+ /*{ 0xabc0, 0xabff, ? }, Meetei Mayek */
+ { 0xac00, 0xd7af, 56 }, /* Hangul Syllables */
+ { 0xd800, 0xdfff, 57 }, /* Non-Plane 0 */
+ { 0xe000, 0xf8ff, 60 }, /* Private Use Area */
+
+ { 0xf900, 0xfaff, 61 }, /* CJK Compatibility Ideographs */
+ /* 12 ideographs in The IBM 32 Compatibility Additions are CJK unified
+ ideographs despite their names: see The Unicode Standard 4.0, p.475 */
+ { 0xfa0e, 0xfa0f, 59 },
+ { 0xfa10, 0xfa10, 61 },
+ { 0xfa11, 0xfa11, 59 },
+ { 0xfa12, 0xfa12, 61 },
+ { 0xfa13, 0xfa14, 59 },
+ { 0xfa15, 0xfa1e, 61 },
+ { 0xfa1f, 0xfa1f, 59 },
+ { 0xfa20, 0xfa20, 61 },
+ { 0xfa21, 0xfa21, 59 },
+ { 0xfa22, 0xfa22, 61 },
+ { 0xfa23, 0xfa24, 59 },
+ { 0xfa25, 0xfa26, 61 },
+ { 0xfa27, 0xfa29, 59 },
+ { 0xfa2a, 0xfaff, 61 }, /* CJK Compatibility Ideographs */
+
+ { 0xfb00, 0xfb4f, 62 }, /* Alphabetic Presentation Forms */
+ { 0xfb50, 0xfdff, 63 }, /* Arabic Presentation Forms-A */
+ { 0xfe00, 0xfe0f, 91 }, /* Variation Selectors */
+ { 0xfe20, 0xfe2f, 64 }, /* Combining Half Marks */
+ { 0xfe30, 0xfe4f, 65 }, /* CJK Compatibility Forms */
+ { 0xfe50, 0xfe6f, 66 }, /* Small Form Variants */
+ { 0xfe70, 0xfeef, 67 }, /* Arabic Presentation Forms-B */
+ { 0xff00, 0xffef, 68 }, /* Halfwidth and Fullwidth Forms */
+ { 0xfff0, 0xffff, 69 }, /* Specials */
+
+ { 0x10000, 0x1007f, 101 }, /* Linear B Syllabary */
+ { 0x10080, 0x100ff, 101 }, /* Linear B Ideograms */
+ { 0x10100, 0x1013f, 101 }, /* Aegean Numbers */
+ { 0x10140, 0x1018F, 102 }, /* Ancient Greek Numbers */
+ { 0x10190, 0x101CF, 119 }, /* Ancient Symbols */
+ { 0x101D0, 0x101FF, 120 }, /* Phaistos Disc */
+ { 0x102A0, 0x102D0, 121 }, /* Carian */
+ { 0x10280, 0x1029C, 121 }, /* Lycian */
+ { 0x10300, 0x1032f, 85 }, /* Old Italic */
+ { 0x10330, 0x1034f, 86 }, /* Gothic */
+ { 0x10380, 0x1039F, 103 }, /* Ugaritic */
+ { 0x103A0, 0x103D6, 104 }, /* Old Persian */
+ { 0x10400, 0x1044f, 87 }, /* Deseret */
+ { 0x10450, 0x1047f, 105 }, /* Shavian */
+ { 0x10480, 0x104af, 106 }, /* Osmanya */
+ { 0x10800, 0x1083f, 107 }, /* Cypriot Syllabary */
+ /*{ 0x10840, 0x1085f, ? }, Imperial Aramaic */
+ { 0x10900, 0x1091f, 58 }, /* Phoenician */
+ { 0x10920, 0x10939, 121 }, /* Lydian */
+ { 0x10A00, 0x10A5F, 108 }, /* Kharoshthi */
+ /*{ 0x10A60, 0x10A7F, ? }, Old South Arabian */
+ /*{ 0x10B00, 0x10B3F, ? }, Avestan */
+ /*{ 0x10B40, 0x10B5F, ? }, Inscriptional Parthian */
+ /*{ 0x10B60, 0x10B7F, ? }, Inscriptional Pahlavi */
+ /*{ 0x10C00, 0x10C4F, ? }, Old Turkic */
+ /*{ 0x10E60, 0x10E7F, ? }, Rumi Numeral Symbols */
+ /*{ 0x11000, 0x1107F, ? }, Brahmi */
+ /*{ 0x11000, 0x1107F, ? }, Kaithi */
+ { 0x12000, 0x1247F, 110 }, /* Cuneiform; Numbers & Punctuation */
+ /*{ 0x13000, 0x1342F, ? }, Egyptian Hieroglyphs */
+ /*{ 0x16800, 0x16A3F, ? }, Bamum Supplement */
+ /*{ 0x1B000, 0x1B0FF, ? }, Kana Supplement */
+ { 0x1d000, 0x1d1ff, 88 }, /* Byzantine Musical Symbols / Musical Symbols */
+ /*{ 0x1D200, 0x1D24F, ? }, Ancient Greek Musical Notation */
+ { 0x1d300, 0x1d35f, 109 }, /* Tai Xuan Jing Symbols */
+ { 0x1D360, 0x1D37F, 111 }, /* Counting Rod Numerals */
+ { 0x1d400, 0x1d7ff, 89 }, /* Mathematical Alphanumeric Symbols */
+ { 0x1F000, 0x1F02B, 122 }, /* Mahjong Tiles */
+ { 0x1F030, 0x1F093, 122 }, /* Dominos */
+ /*{ 0x1F0A0, 0x1F0FF, ? }, Playing Cards */
+ /*{ 0x1F100, 0x1F1FF, ? }, Enclosed Alphanumeric Supplement */
+ /*{ 0x1F200, 0x1F2FF, ? }, Enclosed Ideographic Supplement */
+ /*{ 0x1F300, 0x1F5FF, ? }, Miscellaneous Symbols And Pictographs */
+ /*{ 0x1F600, 0x1F64F, ? }, Emoticons */
+ /*{ 0x1F680, 0x1F6FF, ? }, Transport And Map Symbols */
+ /*{ 0x1F700, 0x1F77F, ? }, Alchemical Symbols */
+ { 0x20000, 0x2a6df, 59 }, /* CJK Unified Ideographs Extension B */
+ /*{ 0x2A700, 0x2B73F, 59? }, CJK Unified Ideographs Extension C */
+ /*{ 0x2B740, 0x2B81F, 59? }, CJK Unified Ideographs Extension D */
+ { 0x2f800, 0x2fa1f, 61 }, /* CJK Compatibility Ideographs Supplement */
+ { 0xe0000, 0xe007f, 92 }, /* Tags */
+ { 0xe0100, 0xe01ef, 91 }, /* Variation Selectors Supplement */
+ { 0xf0000, 0xffffd, 90 }, /* Supplementary Private Use Area-A */
+ { 0x100000, 0x10fffd, 90 }, /* Supplementary Private Use Area-B */
+};
+
+static int32 getuint32(FILE *ttf) {
+ int ch1 = getc(ttf);
+ int ch2 = getc(ttf);
+ int ch3 = getc(ttf);
+ int ch4 = getc(ttf);
+ if ( ch4==EOF )
+return( EOF );
+return( (ch1<<24)|(ch2<<16)|(ch3<<8)|ch4 );
+}
+
+static int short_too_long_warned = 0;
+
+void putshort(FILE *file,int sval) {
+ if ( sval<-32768 || sval>65535 )
+ if (!short_too_long_warned) {
+ IError(_("Attempt to output %d into a 16-bit field. It will be truncated and the file may not be useful."), sval );
+ short_too_long_warned = 1;
+ }
+ putc((sval>>8)&0xff,file);
+ putc(sval&0xff,file);
+}
+
+static void putu24(FILE *file,int val) {
+ putc((val>>16)&0xff,file);
+ putc((val>>8)&0xff,file);
+ putc(val&0xff,file);
+}
+
+void putlong(FILE *file,int val) {
+ putc((val>>24)&0xff,file);
+ putc((val>>16)&0xff,file);
+ putc((val>>8)&0xff,file);
+ putc(val&0xff,file);
+}
+#define dumpabsoffset putlong
+
+static void dumpoffset(FILE *file,int offsize,int val) {
+ if ( offsize==1 )
+ putc(val,file);
+ else if ( offsize==2 )
+ putshort(file,val);
+ else if ( offsize==3 ) {
+ putc((val>>16)&0xff,file);
+ putc((val>>8)&0xff,file);
+ putc(val&0xff,file);
+ } else
+ putlong(file,val);
+}
+
+static void put2d14(FILE *file,real dval) {
+ int val;
+ int mant;
+
+ val = floor(dval);
+ mant = floor(16384.*(dval-val));
+ val = (val<<14) | mant;
+ putshort(file,val);
+}
+
+void putfixed(FILE *file,real dval) {
+ int val;
+ int mant;
+
+ val = floor(dval);
+ mant = floor(65536.*(dval-val));
+ val = (val<<16) | mant;
+ putlong(file,val);
+}
+
+int ttfcopyfile(FILE *ttf, FILE *other, int pos, const char *tab_name) {
+ int ch;
+ int ret = 1;
+
+ if ( ferror(ttf) || ferror(other)) {
+ IError("Disk error of some nature. Perhaps no space on device?\nGenerated font will be unusable" );
+ } else if ( pos!=ftell(ttf)) {
+ IError("File Offset wrong for ttf table (%s), %d expected %d", tab_name, ftell(ttf), pos );
+ }
+ rewind(other);
+ while (( ch = getc(other))!=EOF )
+ putc(ch,ttf);
+ if ( ferror(other)) ret = 0;
+ if ( fclose(other)) ret = 0;
+return( ret );
+}
+
+static void FigureFullMetricsEnd(SplineFont *sf,struct glyphinfo *gi, int istt ) {
+ /* We can reduce the size of the width array by removing a run at the end */
+ /* of the same width. So start at the end, find the width of the last */
+ /* character we'll output, then run backwards as long as we've got the */
+ /* same width */
+ /* (do same thing for vertical metrics too */
+ int i, lasti, lastv, lastdefault = istt ? 3 : 1;
+ int width, vwidth;
+
+ lasti = lastv = gi->gcnt-1;
+ for ( i=gi->gcnt-1; i>lastdefault && gi->bygid[i]==-1; --i );
+ if ( i>=lastdefault ) {
+ width = sf->glyphs[gi->bygid[i]]->width;
+ vwidth = sf->glyphs[gi->bygid[i]]->vwidth;
+ lasti = lastv = i;
+ for ( i=lasti-1; i>=lastdefault; --i ) {
+ if ( SCWorthOutputting(sf->glyphs[gi->bygid[i]]) ) {
+ if ( sf->glyphs[gi->bygid[i]]->width!=width )
+ break;
+ else
+ lasti = i;
+ }
+ }
+ gi->lasthwidth = lasti;
+ if ( sf->hasvmetrics ) {
+ for ( i=lastv-1; i>=lastdefault; --i ) {
+ if ( SCWorthOutputting(sf->glyphs[gi->bygid[i]]) ) {
+ if ( sf->glyphs[gi->bygid[i]]->vwidth!=vwidth )
+ break;
+ else
+ lastv = i;
+ }
+ }
+ gi->lastvwidth = lastv;
+ }
+ } else {
+ gi->lasthwidth = 0;
+ gi->lastvwidth = 0;
+ }
+}
+
+static void dumpghstruct(struct glyphinfo *gi,struct glyphhead *gh) {
+
+ putshort(gi->glyphs,gh->numContours);
+ putshort(gi->glyphs,gh->xmin);
+ putshort(gi->glyphs,gh->ymin);
+ putshort(gi->glyphs,gh->xmax);
+ putshort(gi->glyphs,gh->ymax);
+ if ( gh->xmin<gi->xmin ) gi->xmin = gh->xmin;
+ if ( gh->ymin<gi->ymin ) gi->ymin = gh->ymin;
+ if ( gh->xmax>gi->xmax ) gi->xmax = gh->xmax;
+ if ( gh->ymax>gi->ymax ) gi->ymax = gh->ymax;
+}
+
+static void ttfdumpmetrics(SplineChar *sc,struct glyphinfo *gi,DBounds *b) {
+ int width=sc->width;
+ int vwidth=sc->vwidth;
+
+ if ( width<0 ) width=0;
+ if ( vwidth<0 ) vwidth=0;
+
+ if ( sc->ttf_glyph<=gi->lasthwidth )
+ putshort(gi->hmtx,width);
+ putshort(gi->hmtx,b->minx);
+ if ( sc->parent->hasvmetrics ) {
+ if ( sc->ttf_glyph<=gi->lastvwidth )
+ putshort(gi->vmtx,vwidth);
+ putshort(gi->vmtx, sc->parent->ascent - b->maxy);
+ }
+ if ( sc->ttf_glyph==gi->lasthwidth )
+ gi->hfullcnt = sc->ttf_glyph+1;
+ if ( sc->ttf_glyph==gi->lastvwidth )
+ gi->vfullcnt = sc->ttf_glyph+1;
+}
+
+static SplineSet *SCttfApprox(SplineChar *sc,int layer) {
+ SplineSet *head=NULL, *last, *ss, *tss;
+ RefChar *ref;
+
+ for ( ss=sc->layers[layer].splines; ss!=NULL; ss=ss->next ) {
+ tss = sc->layers[layer].order2 ? SplinePointListCopy1(ss) : SSttfApprox(ss);
+ if ( head==NULL ) head = tss;
+ else last->next = tss;
+ last = tss;
+ }
+ for ( ref=sc->layers[layer].refs; ref!=NULL; ref=ref->next ) {
+ for ( ss=ref->layers[0].splines; ss!=NULL; ss=ss->next ) {
+ tss = sc->layers[layer].order2 ? SplinePointListCopy1(ss) : SSttfApprox(ss);
+ if ( head==NULL ) head = tss;
+ else last->next = tss;
+ last = tss;
+ }
+ }
+return( head );
+}
+
+#define _On_Curve 1
+#define _X_Short 2
+#define _Y_Short 4
+#define _Repeat 8
+#define _X_Same 0x10
+#define _Y_Same 0x20
+
+int SSAddPoints(SplineSet *ss,int ptcnt,BasePoint *bp, char *flags) {
+ SplinePoint *sp, *first, *nextsp;
+ int startcnt = ptcnt;
+
+ if ( ss->first->prev!=NULL &&
+ ss->first->prev->from->nextcpindex==startcnt ) {
+ if ( flags!=NULL ) flags[ptcnt] = 0;
+ bp[ptcnt].x = rint(ss->first->prevcp.x);
+ bp[ptcnt++].y = rint(ss->first->prevcp.y);
+ } else if ( ss->first->ttfindex!=ptcnt && ss->first->ttfindex!=0xfffe )
+ IError("Unexpected point count in SSAddPoints" );
+
+ first = NULL;
+ for ( sp=ss->first; sp!=first ; ) {
+ if ( sp->ttfindex!=0xffff ) {
+ if ( flags!=NULL ) flags[ptcnt] = _On_Curve;
+ bp[ptcnt].x = rint(sp->me.x);
+ bp[ptcnt].y = rint(sp->me.y);
+ sp->ttfindex = ptcnt++;
+ } else if ( !SPInterpolate( sp ) ) {
+ /* If an on curve point is midway between two off curve points*/
+ /* it may be omitted and will be interpolated on read in */
+ if ( flags!=NULL ) flags[ptcnt] = _On_Curve;
+ bp[ptcnt].x = rint(sp->me.x);
+ bp[ptcnt].y = rint(sp->me.y);
+ sp->ttfindex = ptcnt++;
+ }
+ nextsp = sp->next!=NULL ? sp->next->to : NULL;
+ if ( sp->nextcpindex == startcnt )
+ /* This control point is actually our first point, not our last */
+ break;
+ if ( (sp->nextcpindex !=0xffff && sp->nextcpindex!=0xfffe ) ||
+ !sp->nonextcp ) {
+ if ( flags!=NULL ) flags[ptcnt] = 0;
+ bp[ptcnt].x = rint(sp->nextcp.x);
+ bp[ptcnt++].y = rint(sp->nextcp.y);
+ }
+ if ( nextsp==NULL )
+ break;
+ if ( first==NULL ) first = sp;
+ sp = nextsp;
+ }
+return( ptcnt );
+}
+
+static void dumppointarrays(struct glyphinfo *gi,BasePoint *bp, char *fs, int pc) {
+ BasePoint last;
+ int i,flags;
+ int lastflag, flagcnt;
+
+ if ( gi->maxp->maxPoints<pc )
+ gi->maxp->maxPoints = pc;
+
+ /* flags */
+ last.x = last.y = 0;
+ lastflag = -1; flagcnt = 0;
+ for ( i=0; i<pc; ++i ) {
+ flags = 0;
+ if ( fs==NULL || fs[i] )
+ flags = _On_Curve; /* points are on curve */
+ if ( last.x==bp[i].x )
+ flags |= _X_Same;
+ else if ( bp[i].x-last.x>-256 && bp[i].x-last.x<255 ) {
+ flags |= _X_Short;
+ if ( bp[i].x>=last.x )
+ flags |= _X_Same; /* In this context it means positive */
+ }
+ if ( last.y==bp[i].y )
+ flags |= _Y_Same;
+ else if ( bp[i].y-last.y>-256 && bp[i].y-last.y<255 ) {
+ flags |= _Y_Short;
+ if ( bp[i].y>=last.y )
+ flags |= _Y_Same; /* In this context it means positive */
+ }
+ last = bp[i];
+ if ( lastflag==-1 ) {
+ lastflag = flags;
+ flagcnt = 0;
+ } else if ( flags!=lastflag ) {
+ if ( flagcnt!=0 )
+ lastflag |= _Repeat;
+ putc(lastflag,gi->glyphs);
+ if ( flagcnt!=0 )
+ putc(flagcnt,gi->glyphs);
+ lastflag = flags;
+ flagcnt = 0;
+ } else {
+ if ( ++flagcnt == 255 ) {
+ putc(lastflag|_Repeat,gi->glyphs);
+ putc(255,gi->glyphs);
+ lastflag = -1;
+ flagcnt = 0;
+ }
+ }
+ }
+ if ( lastflag!=-1 ) {
+ if ( flagcnt!=0 )
+ lastflag |= _Repeat;
+ putc(lastflag,gi->glyphs);
+ if ( flagcnt!=0 )
+ putc(flagcnt,gi->glyphs);
+ }
+
+ /* xcoords */
+ last.x = 0;
+ for ( i=0; i<pc; ++i ) {
+ if ( last.x==bp[i].x )
+ /* Do Nothing */;
+ else if ( bp[i].x-last.x>-256 && bp[i].x-last.x<255 ) {
+ if ( bp[i].x>=last.x )
+ putc(bp[i].x-last.x,gi->glyphs);
+ else
+ putc(last.x-bp[i].x,gi->glyphs);
+ } else
+ putshort(gi->glyphs,bp[i].x-last.x);
+ last.x = bp[i].x;
+ }
+ /* ycoords */
+ last.y = 0;
+ for ( i=0; i<pc; ++i ) {
+ if ( last.y==bp[i].y )
+ /* Do Nothing */;
+ else if ( bp[i].y-last.y>-256 && bp[i].y-last.y<255 ) {
+ if ( bp[i].y>=last.y )
+ putc(bp[i].y-last.y,gi->glyphs);
+ else
+ putc(last.y-bp[i].y,gi->glyphs);
+ } else
+ putshort(gi->glyphs,bp[i].y-last.y);
+ last.y = bp[i].y;
+ }
+ if ( ftell(gi->glyphs)&1 ) /* Pad the file so that the next glyph */
+ putc('\0',gi->glyphs); /* on a word boundary */
+}
+
+static void dumpinstrs(struct glyphinfo *gi,uint8 *instrs,int cnt) {
+ int i;
+
+ if ( (gi->flags&ttf_flag_nohints) ) {
+ putshort(gi->glyphs,0);
+return;
+ }
+ /* Do we ever want to call AutoHint and AutoInst here? I think not. */
+
+ if ( gi->maxp->maxglyphInstr<cnt ) gi->maxp->maxglyphInstr=cnt;
+ putshort(gi->glyphs,cnt);
+ for ( i=0; i<cnt; ++i )
+ putc( instrs[i],gi->glyphs );
+}
+
+static void dumpmissingglyph(SplineFont *sf,struct glyphinfo *gi,int fixedwidth) {
+ /* Or .notdef */
+ struct glyphhead gh;
+ BasePoint bp[10];
+ uint8 instrs[50];
+ int stemcvt, stem;
+ char *stempt;
+
+ stem = 0;
+ if ( sf->private!=NULL && (stempt=PSDictHasEntry(sf->private,"StdVW"))!=NULL )
+ stem = strtod(stempt,NULL);
+ else if ( sf->private!=NULL && (stempt=PSDictHasEntry(sf->private,"StdHW"))!=NULL )
+ stem = strtod(stempt,NULL);
+ if ( stem<=0 )
+ stem = (sf->ascent+sf->descent)/30;
+
+ gi->pointcounts[gi->next_glyph] = 8;
+ gi->loca[gi->next_glyph++] = ftell(gi->glyphs);
+ gi->maxp->maxContours = 2;
+
+ gh.numContours = 2;
+ gh.ymin = 0;
+ gh.ymax = 2*(sf->ascent+sf->descent)/3;
+ gh.xmax = 5*stem+(sf->ascent+sf->descent)/10;
+ gh.xmin = stem;
+ gh.xmax += stem;
+ if ( gh.ymax>sf->ascent ) gh.ymax = sf->ascent;
+ dumpghstruct(gi,&gh);
+
+ bp[0].x = stem; bp[0].y = 0;
+ bp[1].x = stem; bp[1].y = gh.ymax;
+ bp[2].x = gh.xmax; bp[2].y = gh.ymax;
+ bp[3].x = gh.xmax; bp[3].y = 0;
+
+ bp[4].x = 2*stem; bp[4].y = stem;
+ bp[5].x = gh.xmax-stem; bp[5].y = stem;
+ bp[6].x = gh.xmax-stem; bp[6].y = gh.ymax-stem;
+ bp[7].x = 2*stem; bp[7].y = gh.ymax-stem;
+
+ if ( !gi->ttc_composite_font ) {
+ stemcvt = TTF_getcvtval(gi->sf,stem);
+
+ instrs[0] = 0xb1; /* Pushb, 2byte */
+ instrs[1] = 1; /* Point 1 */
+ instrs[2] = 0; /* Point 0 */
+ instrs[3] = 0x2f; /* MDAP, rounded (pt0) */
+ instrs[4] = 0x3c; /* ALIGNRP, (pt1 same pos as pt0)*/
+ instrs[5] = 0xb2; /* Pushb, 3byte */
+ instrs[6] = 7; /* Point 7 */
+ instrs[7] = 4; /* Point 4 */
+ instrs[8] = stemcvt; /* CVT entry for our stem width */
+ instrs[9] = 0xe0+0x0d; /* MIRP, don't set rp0, minimum, rounded, black */
+ instrs[10] = 0x32; /* SHP[rp2] (pt7 same pos as pt4) */
+ instrs[11] = 0xb1; /* Pushb, 2byte */
+ instrs[12] = 6; /* Point 6 */
+ instrs[13] = 5; /* Point 5 */
+ instrs[14] = 0xc0+0x1c; /* MDRP, set rp0, minimum, rounded, grey */
+ instrs[15] = 0x3c; /* ALIGNRP, (pt6 same pos as pt5)*/
+ instrs[16] = 0xb2; /* Pushb, 3byte */
+ instrs[17] = 3; /* Point 3 */
+ instrs[18] = 2; /* Point 2 */
+ instrs[19] = stemcvt; /* CVT entry for our stem width */
+ instrs[20] = 0xe0+0x0d; /* MIRP, dont set rp0, minimum, rounded, black */
+ instrs[21] = 0x32; /* SHP[rp2] (pt3 same pos as pt2) */
+
+ instrs[22] = 0x00; /* SVTCA, y axis */
+
+ instrs[23] = 0xb1; /* Pushb, 2byte */
+ instrs[24] = 3; /* Point 3 */
+ instrs[25] = 0; /* Point 0 */
+ instrs[26] = 0x2f; /* MDAP, rounded */
+ instrs[27] = 0x3c; /* ALIGNRP, (pt3 same height as pt0)*/
+ instrs[28] = 0xb2; /* Pushb, 3byte */
+ instrs[29] = 5; /* Point 5 */
+ instrs[30] = 4; /* Point 4 */
+ instrs[31] = stemcvt; /* CVT entry for our stem width */
+ instrs[32] = 0xe0+0x0d; /* MIRP, don't set rp0, minimum, rounded, black */
+ instrs[33] = 0x32; /* SHP[rp2] (pt5 same height as pt4) */
+ instrs[34] = 0xb2; /* Pushb, 3byte */
+ instrs[35] = 7; /* Point 7 */
+ instrs[36] = 6; /* Point 6 */
+ instrs[37] = TTF_getcvtval(gi->sf,bp[6].y); /* CVT entry for top height */
+ instrs[38] = 0xe0+0x1c; /* MIRP, set rp0, minimum, rounded, grey */
+ instrs[39] = 0x3c; /* ALIGNRP (pt7 same height as pt6) */
+ instrs[40] = 0xb2; /* Pushb, 3byte */
+ instrs[41] = 1; /* Point 1 */
+ instrs[42] = 2; /* Point 2 */
+ instrs[43] = stemcvt; /* CVT entry for our stem width */
+ instrs[44] = 0xe0+0x0d; /* MIRP, dont set rp0, minimum, rounded, black */
+ instrs[45] = 0x32; /* SHP[rp2] (pt1 same height as pt2) */
+
+ /* We've touched all points in all dimensions */
+ /* Don't need any IUP */
+ }
+
+ /* end contours array */
+ putshort(gi->glyphs,4-1);
+ putshort(gi->glyphs,8-1);
+ /* instruction length&instructions */
+ if ( !gi->ttc_composite_font )
+ dumpinstrs(gi,instrs,46);
+ else
+ dumpinstrs(gi,NULL,0);
+
+ dumppointarrays(gi,bp,NULL,8);
+
+ if ( fixedwidth<=0 )
+ putshort(gi->hmtx,gh.xmax + 2*stem);
+ else
+ putshort(gi->hmtx,fixedwidth);
+ putshort(gi->hmtx,stem);
+ if ( sf->hasvmetrics ) {
+ putshort(gi->vmtx,sf->ascent+sf->descent);
+ putshort(gi->vmtx,/*sf->vertical_origin-*/gh.ymax);
+ }
+}
+
+static void dumpblankglyph(struct glyphinfo *gi,SplineFont *sf,int fixedwidth) {
+ int advance = gi->next_glyph==1?0:fixedwidth<=0?(sf->ascent+sf->descent)/3:
+ fixedwidth;
+ /* For reasons quite obscure to me, glyph 1 has an advance width of 0 */
+ /* even in a mono-spaced font like CourierNew.ttf */
+
+ /* These don't get a glyph header, because there are no contours */
+ gi->pointcounts[gi->next_glyph] = 0;
+ gi->loca[gi->next_glyph++] = ftell(gi->glyphs);
+ putshort(gi->hmtx,advance);
+ putshort(gi->hmtx,0);
+ if ( sf->hasvmetrics ) {
+ putshort(gi->vmtx,gi->next_glyph==2?0:(sf->ascent+sf->descent));
+ putshort(gi->vmtx,0);
+ }
+}
+
+static void dumpspace(SplineChar *sc, struct glyphinfo *gi) {
+ /* These don't get a glyph header, because there are no contours */
+ DBounds b;
+ gi->pointcounts[gi->next_glyph] = 0;
+ gi->loca[gi->next_glyph++] = ftell(gi->glyphs);
+ memset(&b,0,sizeof(b));
+ ttfdumpmetrics(sc,gi,&b);
+}
+
+static int IsTTFRefable(SplineChar *sc,int layer) {
+ RefChar *ref;
+
+ if ( sc->layers[layer].refs==NULL || sc->layers[layer].splines!=NULL )
+return( false );
+
+ for ( ref=sc->layers[layer].refs; ref!=NULL; ref=ref->next ) {
+ if ( ref->transform[0]<-2 || ref->transform[0]>1.999939 ||
+ ref->transform[1]<-2 || ref->transform[1]>1.999939 ||
+ ref->transform[2]<-2 || ref->transform[2]>1.999939 ||
+ ref->transform[3]<-2 || ref->transform[3]>1.999939 )
+return( false );
+ }
+return( true );
+}
+
+int RefDepth(RefChar *ref,int layer) {
+ int rd, temp;
+ SplineChar *sc = ref->sc;
+
+ if ( sc->layers[layer].refs==NULL || sc->layers[layer].splines!=NULL )
+return( 1 );
+ rd = 0;
+ for ( ref = sc->layers[layer].refs; ref!=NULL; ref=ref->next ) {
+ if ( ref->transform[0]>=-2 || ref->transform[0]<=1.999939 ||
+ ref->transform[1]>=-2 || ref->transform[1]<=1.999939 ||
+ ref->transform[2]>=-2 || ref->transform[2]<=1.999939 ||
+ ref->transform[3]>=-2 || ref->transform[3]<=1.999939 ) {
+ temp = RefDepth(ref,layer);
+ if ( temp>rd ) rd = temp;
+ }
+ }
+return( rd+1 );
+}
+
+static void CountCompositeMaxPts(SplineChar *sc,struct glyphinfo *gi) {
+ RefChar *ref;
+ int ptcnt = 0, index;
+
+ for ( ref=sc->layers[gi->layer].refs; ref!=NULL; ref=ref->next ) {
+ if ( ref->sc->ttf_glyph==-1 )
+ continue;
+ index = ref->sc->ttf_glyph;
+ if ( gi->pointcounts[index]==-1 )
+ CountCompositeMaxPts(ref->sc,gi);
+ ptcnt += gi->pointcounts[index];
+ }
+ gi->pointcounts[sc->ttf_glyph] = ptcnt;
+ if ( gi->maxp->maxCompositPts<ptcnt ) gi->maxp->maxCompositPts=ptcnt;
+}
+
+/* In order3 fonts we figure out the composite point counts at the end */
+/* when we know how many points are in each sub-glyph */
+static void RefigureCompositeMaxPts(SplineFont *sf,struct glyphinfo *gi) {
+ int i;
+
+ for ( i=0; i<gi->gcnt; ++i ) if ( gi->bygid[i]!=-1 && sf->glyphs[gi->bygid[i]]->ttf_glyph!=-1 ) {
+ if ( sf->glyphs[gi->bygid[i]]->layers[gi->layer].splines==NULL &&
+ sf->glyphs[gi->bygid[i]]->layers[gi->layer].refs!=NULL &&
+ gi->pointcounts[i]== -1 )
+ CountCompositeMaxPts(sf->glyphs[gi->bygid[i]],gi);
+ }
+}
+
+static void dumpcomposite(SplineChar *sc, struct glyphinfo *gi) {
+ struct glyphhead gh;
+ DBounds bb;
+ int i, ptcnt, ctcnt, flags, sptcnt, rd;
+ SplineSet *ss;
+ RefChar *ref;
+ SplineChar *isc = sc->ttf_instrs==NULL && sc->parent->mm!=NULL && sc->parent->mm->apple ?
+ sc->parent->mm->normal->glyphs[sc->orig_pos] : sc;
+ int arg1, arg2;
+
+ if ( gi->next_glyph!=sc->ttf_glyph )
+ IError("Glyph count wrong in ttf output");
+ if ( gi->next_glyph>=gi->maxp->numGlyphs )
+ IError("max glyph count wrong in ttf output");
+ gi->loca[gi->next_glyph] = ftell(gi->glyphs);
+
+ SplineCharLayerQuickBounds(sc,gi->layer,&bb);
+ gh.numContours = -1;
+ gh.xmin = floor(bb.minx); gh.ymin = floor(bb.miny);
+ gh.xmax = ceil(bb.maxx); gh.ymax = ceil(bb.maxy);
+ dumpghstruct(gi,&gh);
+
+ i=ptcnt=ctcnt=0;
+ for ( ref=sc->layers[gi->layer].refs; ref!=NULL; ref=ref->next, ++i ) {
+ if ( ref->sc->ttf_glyph==-1 ) {
+ /*if ( sc->layers[gi->layer].refs->next==NULL || any )*/
+ continue;
+ }
+ flags = 0;
+ if ( ref->round_translation_to_grid )
+ flags |= _ROUND;
+ if ( ref->use_my_metrics )
+ flags |= _USE_MY_METRICS;
+ if ( ref->next!=NULL )
+ flags |= _MORE; /* More components */
+ else if ( isc->ttf_instrs_len!=0 ) /* Composits also inherit instructions */
+ flags |= _INSTR; /* Instructions appear after last ref */
+ if ( ref->transform[1]!=0 || ref->transform[2]!=0 )
+ flags |= _MATRIX; /* Need a full matrix */
+ else if ( ref->transform[0]!=ref->transform[3] )
+ flags |= _XY_SCALE; /* different xy scales */
+ else if ( ref->transform[0]!=1. )
+ flags |= _SCALE; /* xy scale is same */
+ if ( ref->point_match ) {
+ arg1 = ref->match_pt_base;
+ arg2 = ref->match_pt_ref;
+ } else {
+ arg1 = rint(ref->transform[4]);
+ arg2 = rint(ref->transform[5]);
+ flags |= _ARGS_ARE_XY|_UNSCALED_OFFSETS;
+ /* The values I output are the values I want to see */
+ /* There is some very strange stuff wrongly-documented on the apple*/
+ /* site about how these should be interpretted when there are */
+ /* scale factors, or rotations */
+ /* That description does not match the behavior of their rasterizer*/
+ /* I've reverse engineered something else (see parsettf.c) */
+ /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */
+ /* Adobe says that setting bit 12 means that this will not happen */
+ /* Apple doesn't mention bit 12 though...(but they do support it) */
+ }
+ if ( arg1<-128 || arg1>127 ||
+ arg2<-128 || arg2>127 )
+ flags |= _ARGS_ARE_WORDS;
+ putshort(gi->glyphs,flags);
+ putshort(gi->glyphs,ref->sc->ttf_glyph==-1?0:ref->sc->ttf_glyph);
+ if ( flags&_ARGS_ARE_WORDS ) {
+ putshort(gi->glyphs,(short)arg1);
+ putshort(gi->glyphs,(short)arg2);
+ } else {
+ putc((char) arg1,gi->glyphs);
+ putc((char) arg2,gi->glyphs);
+ }
+ if ( flags&_MATRIX ) {
+ put2d14(gi->glyphs,ref->transform[0]);
+ put2d14(gi->glyphs,ref->transform[1]);
+ put2d14(gi->glyphs,ref->transform[2]);
+ put2d14(gi->glyphs,ref->transform[3]);
+ } else if ( flags&_XY_SCALE ) {
+ put2d14(gi->glyphs,ref->transform[0]);
+ put2d14(gi->glyphs,ref->transform[3]);
+ } else if ( flags&_SCALE ) {
+ put2d14(gi->glyphs,ref->transform[0]);
+ }
+ sptcnt = SSTtfNumberPoints(ref->layers[0].splines);
+ for ( ss=ref->layers[0].splines; ss!=NULL ; ss=ss->next ) {
+ ++ctcnt;
+ }
+ if ( sc->layers[gi->layer].order2 )
+ ptcnt += sptcnt;
+ else if ( ptcnt>=0 && gi->pointcounts[ref->sc->ttf_glyph==-1?0:ref->sc->ttf_glyph]>=0 )
+ ptcnt += gi->pointcounts[ref->sc->ttf_glyph==-1?0:ref->sc->ttf_glyph];
+ else
+ ptcnt = -1;
+ rd = RefDepth(ref,gi->layer);
+ if ( rd>gi->maxp->maxcomponentdepth )
+ gi->maxp->maxcomponentdepth = rd;
+ }
+
+ if ( isc->ttf_instrs_len!=0 )
+ dumpinstrs(gi,isc->ttf_instrs,isc->ttf_instrs_len);
+
+ gi->pointcounts[gi->next_glyph++] = ptcnt;
+ if ( gi->maxp->maxnumcomponents<i ) gi->maxp->maxnumcomponents = i;
+ if ( gi->maxp->maxCompositPts<ptcnt ) gi->maxp->maxCompositPts=ptcnt;
+ if ( gi->maxp->maxCompositCtrs<ctcnt ) gi->maxp->maxCompositCtrs=ctcnt;
+
+ ttfdumpmetrics(sc,gi,&bb);
+ if ( ftell(gi->glyphs)&1 ) /* Pad the file so that the next glyph */
+ putc('\0',gi->glyphs); /* on a word boundary, can only happen if odd number of instrs */
+}
+
+static void dumpglyph(SplineChar *sc, struct glyphinfo *gi) {
+ struct glyphhead gh;
+ DBounds bb;
+ SplineSet *ss, *ttfss;
+ int contourcnt, ptcnt, origptcnt;
+ BasePoint *bp;
+ char *fs;
+ SplineChar *isc = sc->ttf_instrs==NULL && sc->parent->mm!=NULL && sc->parent->mm->apple ?
+ sc->parent->mm->normal->glyphs[sc->orig_pos] : sc;
+
+ /* This must have been an error on my part, can't just remove points */
+ /* they might be matched to anchors or something */
+/* I haven't seen this documented, but ttf rasterizers are unhappy with a */
+/* glyph that consists of a single point. Glyphs containing two single points*/
+/* are ok, glyphs with a single point and anything else are ok, glyphs with */
+/* a line are ok. But a single point is not ok. Dunno why */
+ if ( sc->layers[gi->layer].splines==NULL && sc->layers[gi->layer].refs==NULL ) {
+ dumpspace(sc,gi);
+return;
+ }
+
+ if ( gi->next_glyph!=sc->ttf_glyph )
+ IError("Glyph count wrong in ttf output");
+ if ( gi->next_glyph>=gi->maxp->numGlyphs )
+ IError("max glyph count wrong in ttf output");
+ gi->loca[gi->next_glyph] = ftell(gi->glyphs);
+
+ ttfss = SCttfApprox(sc,gi->layer);
+ ptcnt = SSTtfNumberPoints(ttfss);
+ for ( ss=ttfss, contourcnt=0; ss!=NULL; ss=ss->next ) {
+ ++contourcnt;
+ }
+ origptcnt = ptcnt;
+
+ SplineSetQuickBounds(ttfss,&bb);
+ gh.numContours = contourcnt;
+ gh.xmin = floor(bb.minx); gh.ymin = floor(bb.miny);
+ gh.xmax = ceil(bb.maxx); gh.ymax = ceil(bb.maxy);
+ dumpghstruct(gi,&gh);
+ if ( contourcnt>gi->maxp->maxContours ) gi->maxp->maxContours = contourcnt;
+ if ( ptcnt>gi->maxp->maxPoints ) gi->maxp->maxPoints = ptcnt;
+
+ bp = malloc(ptcnt*sizeof(BasePoint));
+ fs = malloc(ptcnt);
+ ptcnt = contourcnt = 0;
+ for ( ss=ttfss; ss!=NULL; ss=ss->next ) {
+ ptcnt = SSAddPoints(ss,ptcnt,bp,fs);
+ putshort(gi->glyphs,ptcnt-1);
+ }
+ if ( ptcnt!=origptcnt )
+ IError( "Point count wrong calculated=%d, actual=%d in %.20s", origptcnt, ptcnt, sc->name );
+ gi->pointcounts[gi->next_glyph++] = ptcnt;
+
+ dumpinstrs(gi,isc->ttf_instrs,isc->ttf_instrs_len);
+
+ dumppointarrays(gi,bp,fs,ptcnt);
+ SplinePointListsFree(ttfss);
+ free(bp);
+ free(fs);
+
+ ttfdumpmetrics(sc,gi,&bb);
+}
+
+void SFDummyUpCIDs(struct glyphinfo *gi,SplineFont *sf) {
+ int i,j,k,max;
+ int *bygid;
+
+ max = 0;
+ for ( k=0; k<sf->subfontcnt; ++k )
+ if ( sf->subfonts[k]->glyphcnt>max ) max = sf->subfonts[k]->glyphcnt;
+ if ( max == 0 )
+return;
+
+ sf->glyphs = calloc(max,sizeof(SplineChar *));
+ sf->glyphcnt = sf->glyphmax = max;
+ for ( k=0; k<sf->subfontcnt; ++k )
+ for ( i=0; i<sf->subfonts[k]->glyphcnt; ++i ) if ( sf->subfonts[k]->glyphs[i]!=NULL )
+ sf->glyphs[i] = sf->subfonts[k]->glyphs[i];
+
+ if ( gi==NULL )
+return;
+
+ bygid = malloc((sf->glyphcnt+3)*sizeof(int));
+ memset(bygid,0xff, (sf->glyphcnt+3)*sizeof(int));
+
+ j=1;
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ if ( bygid[0]== -1 && strcmp(sf->glyphs[i]->name,".notdef")==0 ) {
+ sf->glyphs[i]->ttf_glyph = 0;
+ bygid[0] = i;
+ } else if ( SCWorthOutputting(sf->glyphs[i])) {
+ sf->glyphs[i]->ttf_glyph = j;
+ bygid[j++] = i;
+ }
+ }
+ gi->bygid = bygid;
+ gi->gcnt = j;
+}
+
+static void AssignNotdefNull(SplineFont *sf,int *bygid, int iscff) {
+ int i;
+
+ /* The first three glyphs are magic, glyph 0 is .notdef */
+ /* glyph 1 is .null and glyph 2 is nonmarking return */
+ /* We may generate them automagically */
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ if ( bygid[0]== -1 && strcmp(sf->glyphs[i]->name,".notdef")==0 ) {
+ sf->glyphs[i]->ttf_glyph = 0;
+ bygid[0] = i;
+ } else if ( !iscff && bygid[1]== -1 &&
+ (strcmp(sf->glyphs[i]->name,".null")==0 ||
+ strcmp(sf->glyphs[i]->name,"uni0000")==0 ||
+ (i==1 && strcmp(sf->glyphs[1]->name,"glyph1")==0)) ) {
+ sf->glyphs[i]->ttf_glyph = 1;
+ bygid[1] = i;
+ } else if ( !iscff && bygid[2]== -1 &&
+ (strcmp(sf->glyphs[i]->name,"nonmarkingreturn")==0 ||
+ strcmp(sf->glyphs[i]->name,"uni000D")==0 ||
+ (i==2 && strcmp(sf->glyphs[2]->name,"glyph2")==0)) ) {
+ sf->glyphs[i]->ttf_glyph = 2;
+ bygid[2] = i;
+ }
+ }
+}
+
+static int AssignTTFGlyph(struct glyphinfo *gi,SplineFont *sf,EncMap *map,int iscff) {
+ int *bygid = malloc((sf->glyphcnt+3)*sizeof(int));
+ int i,j;
+
+ memset(bygid,0xff, (sf->glyphcnt+3)*sizeof(int));
+
+ AssignNotdefNull(sf,bygid,iscff);
+
+ j = iscff ? 1 : 3;
+ for ( i=0; i<map->enccount; ++i ) if ( map->map[i]!=-1 ) {
+ SplineChar *sc = sf->glyphs[map->map[i]];
+ if ( SCWorthOutputting(sc) && sc->ttf_glyph==-1
+#if HANYANG
+ && (!iscff || !sc->compositionunit)
+#endif
+ ) {
+ sc->ttf_glyph = j;
+ bygid[j++] = sc->orig_pos;
+ }
+ }
+
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ SplineChar *sc = sf->glyphs[i];
+ if ( SCWorthOutputting(sc) && sc->ttf_glyph==-1
+#if HANYANG
+ && (!iscff || !sc->compositionunit)
+#endif
+ ) {
+ sc->ttf_glyph = j;
+ bygid[j++] = i;
+ }
+ }
+ gi->bygid = bygid;
+ gi->gcnt = j;
+return j;
+}
+
+static int dumpglyphs(SplineFont *sf,struct glyphinfo *gi) {
+ int i;
+ int fixed = gi->fixed_width;
+
+ ff_progress_change_stages(2+gi->strikecnt);
+ QuickBlues(sf,gi->layer,&gi->bd);
+ /*FindBlues(sf,gi->blues,NULL);*/
+ ff_progress_next_stage();
+
+ if ( !gi->onlybitmaps ) {
+ if ( sf->layers[gi->layer].order2 )
+ for ( i=0; i<sf->glyphcnt; ++i ) {
+ SplineChar *sc = sf->glyphs[i];
+ if ( SCWorthOutputting(sc) )
+ if ( !SCPointsNumberedProperly(sc,gi->layer)) {
+ free(sc->ttf_instrs); sc->ttf_instrs = NULL;
+ sc->ttf_instrs_len = 0;
+ SCNumberPoints(sc,gi->layer);
+ }
+ }
+ }
+
+ gi->maxp->numGlyphs = gi->gcnt;
+ gi->loca = malloc((gi->maxp->numGlyphs+1)*sizeof(uint32));
+ gi->pointcounts = malloc((gi->maxp->numGlyphs+1)*sizeof(int32));
+ memset(gi->pointcounts,-1,(gi->maxp->numGlyphs+1)*sizeof(int32));
+ gi->next_glyph = 0;
+ gi->glyphs = tmpfile2();
+ gi->hmtx = tmpfile2();
+ if ( sf->hasvmetrics )
+ gi->vmtx = tmpfile2();
+ FigureFullMetricsEnd(sf,gi,true);
+
+ if ( fixed>0 ) {
+ gi->lasthwidth = 3;
+ gi->hfullcnt = 3;
+ }
+ for ( i=0; i<gi->gcnt; ++i ) {
+ if ( i==0 ) {
+ if ( gi->bygid[0]!=-1 && (fixed<=0 || sf->glyphs[gi->bygid[0]]->width==fixed))
+ dumpglyph(sf->glyphs[gi->bygid[0]],gi);
+ else
+ dumpmissingglyph(sf,gi,fixed);
+ } else if ( i<=2 && gi->bygid[i]==-1 )
+ dumpblankglyph(gi,sf,fixed);
+ else if ( gi->onlybitmaps ) {
+ if ( gi->bygid[i]!=-1 && sf->glyphs[gi->bygid[i]]->ttf_glyph>0 )
+ dumpspace(sf->glyphs[gi->bygid[i]],gi);
+ } else {
+ if ( gi->bygid[i]!=-1 && sf->glyphs[gi->bygid[i]]->ttf_glyph>0 ) {
+ if ( IsTTFRefable(sf->glyphs[gi->bygid[i]],gi->layer) )
+ dumpcomposite(sf->glyphs[gi->bygid[i]],gi);
+ else
+ dumpglyph(sf->glyphs[gi->bygid[i]],gi);
+ }
+ }
+ if ( (ftell(gi->glyphs)&3) != 0 ) {
+ /* Apple says glyphs must be 16bit aligned */
+ if ( ftell(gi->glyphs)&1 )
+ putc('\0',gi->glyphs);
+ /* MS says glyphs should be 32bit aligned */
+ if ( ftell(gi->glyphs)&2 )
+ putshort(gi->glyphs,0);
+ }
+ if ( !ff_progress_next())
+return( false );
+ }
+
+ /* extra location entry points to end of last glyph */
+ gi->loca[gi->next_glyph] = ftell(gi->glyphs);
+ /* Microsoft's Font Validator wants the last loca entry to point into the */
+ /* glyph table. I think that's an error on their part, but it's so easy */
+ /* to fix, I might as well (instead of pointing to right after the table)*/
+ /* Sigh. But if I do that, it complains that there's extra stuff in the */
+ /* glyph table. There's just no pleasing them */
+ /* putlong(gi->glyphs,0);*/
+ gi->glyph_len = ftell(gi->glyphs);
+ gi->hmtxlen = ftell(gi->hmtx);
+ /* pad out to four bytes */
+ if ( gi->hmtxlen&2 ) putshort(gi->hmtx,0);
+ if ( gi->loca[gi->next_glyph]&3 ) {
+ for ( i=4-(gi->loca[gi->next_glyph]&3); i>0; --i )
+ putc('\0',gi->glyphs);
+ }
+ if ( sf->hasvmetrics ) {
+ gi->vmtxlen = ftell(gi->vmtx);
+ if ( gi->vmtxlen&2 ) putshort(gi->vmtx,0);
+ }
+ if ( !sf->layers[gi->layer].order2 )
+ RefigureCompositeMaxPts(sf,gi);
+ free(gi->pointcounts);
+
+return( true );
+}
+
+static int storesid(struct alltabs *at,const char *str) {
+ int i;
+ FILE *news;
+ const char *pt;
+ long pos;
+
+ if ( str!=NULL ) { /* NULL is the magic string at end of array */
+ for ( i=0; cffnames[i]!=NULL; ++i ) {
+ if ( strcmp(cffnames[i],str)==0 )
+return( i );
+ }
+ }
+
+ pos = ftell(at->sidf)+1;
+ if ( pos>=65536 && !at->sidlongoffset ) {
+ at->sidlongoffset = true;
+ news = tmpfile2();
+ rewind(at->sidh);
+ for ( i=0; i<at->sidcnt; ++i )
+ putlong(news,getushort(at->sidh));
+ fclose(at->sidh);
+ at->sidh = news;
+ }
+ if ( at->sidlongoffset )
+ putlong(at->sidh,pos);
+ else
+ putshort(at->sidh,pos);
+
+ if ( str!=NULL ) {
+ for ( pt=str; *pt; ++pt )
+ putc(*pt,at->sidf);
+ }
+return( at->sidcnt++ + nStdStrings );
+}
+
+static void dumpint(FILE *cfff,int num) {
+
+ if ( num>=-107 && num<=107 )
+ putc(num+139,cfff);
+ else if ( num>=108 && num<=1131 ) {
+ num -= 108;
+ putc((num>>8)+247,cfff);
+ putc(num&0xff,cfff);
+ } else if ( num>=-1131 && num<=-108 ) {
+ num = -num;
+ num -= 108;
+ putc((num>>8)+251,cfff);
+ putc(num&0xff,cfff);
+ } else if ( num>=-32768 && num<32768 ) {
+ putc(28,cfff);
+ putc(num>>8,cfff);
+ putc(num&0xff,cfff);
+ } else { /* In dict data we have 4 byte ints, in type2 strings we don't */
+ putc(29,cfff);
+ putc((num>>24)&0xff,cfff);
+ putc((num>>16)&0xff,cfff);
+ putc((num>>8)&0xff,cfff);
+ putc(num&0xff,cfff);
+ }
+}
+
+static void dumpdbl(FILE *cfff,double d) {
+ if ( d-rint(d)>-.00001 && d-rint(d)<.00001 )
+ dumpint(cfff,(int) d);
+ else {
+ /* The type2 strings have a fixed format, but the dict data does not */
+ char buffer[20], *pt;
+ int sofar,n,odd;
+ sprintf( buffer, "%g", d);
+ sofar = 0; odd=true;
+ putc(30,cfff); /* Start a double */
+ for ( pt=buffer; *pt; ++pt ) {
+ if ( isdigit(*pt) )
+ n = *pt-'0';
+ else if ( *pt=='.' )
+ n = 0xa;
+ else if ( *pt=='-' )
+ n = 0xe;
+ else if (( *pt=='E' || *pt=='e') && pt[1]=='-' ) {
+ n = 0xc;
+ ++pt;
+ } else if ( *pt=='E' || *pt=='e')
+ n = 0xb;
+ else
+ n = 0; /* Should never happen */
+ if ( odd ) {
+ sofar = n<<4;
+ odd = false;
+ } else {
+ putc(sofar|n,cfff);
+ sofar=0;
+ odd = true;
+ }
+ }
+ if ( sofar==0 )
+ putc(0xff,cfff);
+ else
+ putc(sofar|0xf,cfff);
+ }
+}
+
+static void dumpoper(FILE *cfff,int oper ) {
+ if ( oper!=-1 ) {
+ if ( oper>=256 )
+ putc(oper>>8,cfff);
+ putc(oper&0xff,cfff);
+ }
+}
+
+static void dumpdbloper(FILE *cfff,double d, int oper ) {
+ dumpdbl(cfff,d);
+ dumpoper(cfff,oper);
+}
+
+static void dumpintoper(FILE *cfff,int v, int oper ) {
+ dumpint(cfff,v);
+ dumpoper(cfff,oper);
+}
+
+static void dumpsizedint(FILE *cfff,int big,int num, int oper ) {
+ if ( big ) {
+ putc(29,cfff);
+ putc((num>>24)&0xff,cfff);
+ putc((num>>16)&0xff,cfff);
+ putc((num>>8)&0xff,cfff);
+ putc(num&0xff,cfff);
+ } else {
+ putc(28,cfff);
+ putc(num>>8,cfff);
+ putc(num&0xff,cfff);
+ }
+ dumpoper(cfff,oper);
+}
+
+static void dumpsid(FILE *cfff,struct alltabs *at,char *str,int oper) {
+ if ( str==NULL )
+return;
+ dumpint(cfff,storesid(at,str));
+ dumpoper(cfff,oper);
+}
+
+static void DumpStrDouble(char *pt,FILE *cfff,int oper) {
+ real d;
+ if ( *pt=='[' ) ++pt; /* For StdHW, StdVW */
+ d = strtod(pt,NULL);
+ dumpdbloper(cfff,d,oper);
+}
+
+static void DumpDblArray(real *arr,int n,FILE *cfff, int oper) {
+ int mi,i;
+
+ for ( mi=n-1; mi>=0 && arr[mi]==0; --mi );
+ if ( mi<0 )
+return;
+ dumpdbl(cfff,arr[0]);
+ for ( i=1; i<=mi; ++i )
+ dumpdbl(cfff,arr[i]-arr[i-1]);
+ dumpoper(cfff,oper);
+}
+
+static void DumpStrArray(char *pt,FILE *cfff,int oper) {
+ real d, last=0;
+ char *end;
+
+ while ( *pt==' ' ) ++pt;
+ if ( *pt=='\0' )
+return;
+ if ( *pt=='[' ) ++pt;
+ while ( *pt==' ' ) ++pt;
+ while ( *pt!=']' && *pt!='\0' ) {
+ d = strtod(pt,&end);
+ if ( pt==end ) /* User screwed up. Should be a number */
+ break;
+ dumpdbl(cfff,d-last);
+ last = d;
+ pt = end;
+ while ( *pt==' ' ) ++pt;
+ }
+ dumpoper(cfff,oper);
+}
+
+static void dumpcffheader(FILE *cfff) {
+ putc('\1',cfff); /* Major version: 1 */
+ putc('\0',cfff); /* Minor version: 0 */
+ putc('\4',cfff); /* Header size in bytes */
+ putc('\4',cfff); /* Absolute Offset size. */
+ /* I don't think there are any absolute offsets that aren't encoded */
+ /* in a dict as numbers (ie. inherently variable sized items) */
+}
+
+static void dumpcffnames(SplineFont *sf,FILE *cfff) {
+ char *pt;
+
+ putshort(cfff,1); /* One font name */
+ putc('\1',cfff); /* Offset size */
+ putc('\1',cfff); /* Offset to first name */
+ putc('\1'+strlen(sf->fontname),cfff);
+ for ( pt=sf->fontname; *pt; ++pt )
+ putc(*pt,cfff);
+}
+
+static void dumpcffcharset(SplineFont *sf,struct alltabs *at) {
+ int i;
+
+ at->gn_sid = calloc(at->gi.gcnt,sizeof(uint32));
+ putc(0,at->charset);
+ /* I always use a format 0 charset. ie. an array of SIDs in random order */
+
+ /* First element must be ".notdef" and is omitted */
+
+ for ( i=1; i<at->gi.gcnt; ++i )
+ if ( at->gi.bygid[i]!=-1 && SCWorthOutputting(sf->glyphs[at->gi.bygid[i]])) {
+ at->gn_sid[i] = storesid(at,sf->glyphs[at->gi.bygid[i]]->name);
+ putshort(at->charset,at->gn_sid[i]);
+ }
+}
+
+static void dumpcffcidset(struct alltabs *at) {
+ int gid, start;
+
+ putc(2,at->charset);
+
+ start = -1; /* Glyph 0 always maps to CID 0, and is omitted */
+ for ( gid = 1; gid<at->gi.gcnt; ++gid ) {
+ if ( start==-1 )
+ start = gid;
+ else if ( at->gi.bygid[gid]-at->gi.bygid[start]!=gid-start ) {
+ putshort(at->charset,at->gi.bygid[start]);
+ putshort(at->charset,at->gi.bygid[gid-1]-at->gi.bygid[start]);
+ start = gid;
+ }
+ }
+ if ( start!=-1 ) {
+ putshort(at->charset,at->gi.bygid[start]);
+ putshort(at->charset,at->gi.bygid[gid-1]-at->gi.bygid[start]);
+ }
+}
+
+static void dumpcfffdselect(SplineFont *sf,struct alltabs *at) {
+ int cid, k, lastfd, cnt;
+ int gid;
+
+ putc(3,at->fdselect);
+ putshort(at->fdselect,0); /* number of ranges, fill in later */
+
+ for ( k=0; k<sf->subfontcnt; ++k )
+ if ( SCWorthOutputting(sf->subfonts[k]->glyphs[0]))
+ break;
+ if ( k==sf->subfontcnt ) --k; /* If CID 0 not defined, put it in last font */
+ putshort(at->fdselect,0);
+ putc(k,at->fdselect);
+ lastfd = k;
+ cnt = 1;
+ for ( gid = 1; gid<at->gi.gcnt; ++gid ) {
+ cid = at->gi.bygid[gid];
+ for ( k=0; k<sf->subfontcnt; ++k ) {
+ if ( cid<sf->subfonts[k]->glyphcnt &&
+ SCWorthOutputting(sf->subfonts[k]->glyphs[cid]) )
+ break;
+ }
+ if ( k==sf->subfontcnt )
+ /* Doesn't map to a glyph, irrelevant */;
+ else {
+ if ( k!=lastfd ) {
+ putshort(at->fdselect,gid);
+ putc(k,at->fdselect);
+ lastfd = k;
+ ++cnt;
+ }
+ }
+ }
+ putshort(at->fdselect,gid);
+ fseek(at->fdselect,1,SEEK_SET);
+ putshort(at->fdselect,cnt);
+ fseek(at->fdselect,0,SEEK_END);
+}
+
+static void dumpcffencoding(SplineFont *sf,struct alltabs *at) {
+ int i, cnt, anydups;
+ uint32 start_pos = ftell(at->encoding);
+ SplineChar *sc;
+ EncMap *map = at->map;
+
+ putc(0,at->encoding);
+ /* I always use a format 0 encoding. ie. an array of glyph indexes */
+ putc(0xff,at->encoding); /* fixup later */
+
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL )
+ sf->glyphs[i]->ticked = false;
+
+ cnt = 0;
+ anydups = 0;
+ for ( i=0; i<256 && i<map->enccount; ++i ) if ( map->map[i]!=-1 && (sc=sf->glyphs[map->map[i]])!=NULL ) {
+ if ( sc->ttf_glyph>255 )
+ continue;
+ if ( sc->ticked ) {
+ ++anydups;
+ } else if ( sc->ttf_glyph>0 ) {
+ if ( cnt>=255 )
+ break;
+ putc(i,at->encoding);
+ ++cnt;
+ sc->ticked = true;
+ }
+ }
+ if ( anydups ) {
+ fseek(at->encoding,start_pos,SEEK_SET);
+ putc(0x80,at->encoding);
+ putc(cnt,at->encoding);
+ fseek(at->encoding,0,SEEK_END);
+ putc(anydups,at->encoding);
+
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL )
+ sf->glyphs[i]->ticked = false;
+ for ( i=0; i<256 && i<map->enccount; ++i ) if ( map->map[i]!=-1 && (sc=sf->glyphs[map->map[i]])!=NULL ) {
+ if ( sc->ttf_glyph>255 )
+ continue;
+ if ( sc->ticked ) {
+ putc(i,at->encoding);
+ putshort(at->encoding,at->gn_sid[sc->ttf_glyph]);
+ }
+ sc->ticked = true;
+ }
+ } else {
+ fseek(at->encoding,start_pos+1,SEEK_SET);
+ putc(cnt,at->encoding);
+ fseek(at->encoding,0,SEEK_END);
+ }
+ free( at->gn_sid );
+ at->gn_sid = NULL;
+}
+
+static void _dumpcffstrings(FILE *file, struct pschars *strs) {
+ int i, len, offsize;
+
+ /* First figure out the offset size */
+ len = 1;
+ for ( i=0; i<strs->next; ++i )
+ len += strs->lens[i];
+
+ /* Then output the index size and offsets */
+ putshort( file, strs->next );
+ if ( strs->next!=0 ) {
+ /* presumably offsets are unsigned. But the docs don't state this in the obvious place */
+ offsize = len<=255?1:len<=65535?2:len<=0xffffff?3:4;
+ putc(offsize,file);
+ len = 1;
+ for ( i=0; i<strs->next; ++i ) {
+ dumpoffset(file,offsize,len);
+ len += strs->lens[i];
+ }
+ dumpoffset(file,offsize,len);
+
+ /* last of all the strings */
+ for ( i=0; i<strs->next; ++i ) {
+ uint8 *pt = strs->values[i], *end = pt+strs->lens[i];
+ while ( pt<end ) {
+ putc( *pt++, file );
+ }
+ }
+ }
+}
+
+static FILE *dumpcffstrings(struct pschars *strs) {
+ FILE *file = tmpfile2();
+ _dumpcffstrings(file,strs);
+ PSCharsFree(strs);
+return( file );
+}
+
+int SFFigureDefWidth(SplineFont *sf, int *_nomwid) {
+ uint16 *widths; uint32 *cumwid;
+ int nomwid, defwid, i, j, sameval=(int) 0x80000000, maxw=0, allsame=true;
+ unsigned cnt;
+
+ for ( i=0; i<sf->glyphcnt; ++i )
+ if ( SCWorthOutputting(sf->glyphs[i]) ) {
+ if ( maxw<sf->glyphs[i]->width ) maxw = sf->glyphs[i]->width;
+ if ( sameval == 0x8000000 )
+ sameval = sf->glyphs[i]->width;
+ else if ( sameval!=sf->glyphs[i]->width )
+ allsame = false;
+ }
+ if ( allsame ) {
+ nomwid = defwid = sameval;
+ } else {
+ ++maxw;
+ if ( maxw>65535 ) maxw = 3*(sf->ascent+sf->descent);
+ widths = calloc(maxw,sizeof(uint16));
+ cumwid = calloc(maxw,sizeof(uint32));
+ defwid = 0; cnt=0;
+ for ( i=0; i<sf->glyphcnt; ++i )
+ if ( SCWorthOutputting(sf->glyphs[i]) &&
+ sf->glyphs[i]->width>=0 &&
+ sf->glyphs[i]->width<maxw )
+ if ( ++widths[sf->glyphs[i]->width] > cnt ) {
+ defwid = sf->glyphs[i]->width;
+ cnt = widths[defwid];
+ }
+ widths[defwid] = 0;
+ for ( i=0; i<maxw; ++i )
+ for ( j=-107; j<=107; ++j )
+ if ( i+j>=0 && i+j<maxw )
+ cumwid[i] += widths[i+j];
+ cnt = 0; nomwid = 0;
+ for ( i=0; i<maxw; ++i )
+ if ( cnt<cumwid[i] ) {
+ cnt = cumwid[i];
+ nomwid = i;
+ }
+ free(widths); free(cumwid);
+ }
+ if ( _nomwid!=NULL )
+ *_nomwid = nomwid;
+return( defwid );
+}
+
+static void ATFigureDefWidth(SplineFont *sf, struct alltabs *at, int subfont) {
+ int nomwid, defwid;
+
+ defwid = SFFigureDefWidth(sf,&nomwid);
+ if ( subfont==-1 )
+ at->defwid = defwid;
+ else
+ at->fds[subfont].defwid = defwid;
+ if ( subfont==-1 )
+ at->nomwid = nomwid;
+ else
+ at->fds[subfont].nomwid = nomwid;
+}
+
+static void dumpcffprivate(SplineFont *sf,struct alltabs *at,int subfont,
+ int subrcnt) {
+ char *pt;
+ FILE *private = subfont==-1?at->private:at->fds[subfont].private;
+ int mi,i;
+ real bluevalues[14], otherblues[10];
+ real snapcnt[12];
+ real stemsnaph[12], stemsnapv[12];
+ real stdhw[1], stdvw[1];
+ int hasblue=0, hash=0, hasv=0, bs;
+ int nomwid, defwid;
+ EncMap *map = at->map;
+ double bluescale;
+
+ /* The private dict is not in an index, so no index header. Just the data */
+
+ if ( subfont==-1 )
+ defwid = at->defwid;
+ else
+ defwid = at->fds[subfont].defwid;
+ dumpintoper(private,defwid,20); /* Default Width */
+ if ( subfont==-1 )
+ nomwid = at->nomwid;
+ else
+ nomwid = at->fds[subfont].nomwid;
+ dumpintoper(private,nomwid,21); /* Nominative Width */
+
+ bs = SplineFontIsFlexible(sf,at->gi.layer,at->gi.flags);
+ hasblue = PSDictHasEntry(sf->private,"BlueValues")!=NULL;
+ hash = PSDictHasEntry(sf->private,"StdHW")!=NULL;
+ hasv = PSDictHasEntry(sf->private,"StdVW")!=NULL;
+ ff_progress_change_stages(2+autohint_before_generate+!hasblue);
+ if ( autohint_before_generate ) {
+ ff_progress_change_line1(_("Auto Hinting Font..."));
+ SplineFontAutoHint(sf,at->gi.layer);
+ ff_progress_next_stage();
+ }
+
+ otherblues[0] = otherblues[1] = bluevalues[0] = bluevalues[1] = 0;
+ if ( !hasblue ) {
+ FindBlues(sf,at->gi.layer,bluevalues,otherblues);
+ ff_progress_next_stage();
+ }
+
+ stdhw[0] = stdvw[0] = 0;
+ if ( !hash ) {
+ FindHStems(sf,stemsnaph,snapcnt);
+ mi = -1;
+ for ( i=0; i<12 && stemsnaph[i]!=0; ++i )
+ if ( mi==-1 ) mi = i;
+ else if ( snapcnt[i]>snapcnt[mi] ) mi = i;
+ if ( mi!=-1 ) stdhw[0] = stemsnaph[mi];
+ }
+
+ if ( !hasv ) {
+ FindVStems(sf,stemsnapv,snapcnt);
+ mi = -1;
+ for ( i=0; i<12 && stemsnapv[i]!=0; ++i )
+ if ( mi==-1 ) mi = i;
+ else if ( snapcnt[i]>snapcnt[mi] ) mi = i;
+ if ( mi!=-1 ) stdvw[0] = stemsnapv[mi];
+ }
+ ff_progress_change_line1(_("Saving OpenType Font"));
+
+ if ( hasblue )
+ DumpStrArray(PSDictHasEntry(sf->private,"BlueValues"),private,6);
+ else
+ DumpDblArray(bluevalues,sizeof(bluevalues)/sizeof(bluevalues[0]),private,6);
+ if ( (pt=PSDictHasEntry(sf->private,"OtherBlues"))!=NULL )
+ DumpStrArray(pt,private,7);
+ else if ( !hasblue )
+ DumpDblArray(otherblues,sizeof(otherblues)/sizeof(otherblues[0]),private,7);
+ if ( (pt=PSDictHasEntry(sf->private,"FamilyBlues"))!=NULL )
+ DumpStrArray(pt,private,8);
+ bluescale = BlueScaleFigure(sf->private,bluevalues,otherblues);
+ if ( (pt=PSDictHasEntry(sf->private,"FamilyOtherBlues"))!=NULL )
+ DumpStrArray(pt,private,9);
+ if ( (pt=PSDictHasEntry(sf->private,"BlueScale"))!=NULL )
+ DumpStrDouble(pt,private,(12<<8)+9);
+ else if ( bluescale!=-1 )
+ dumpdbloper(private,bluescale,(12<<8)+9);
+ if ( (pt=PSDictHasEntry(sf->private,"BlueShift"))!=NULL )
+ DumpStrDouble(pt,private,(12<<8)+10);
+ else
+ dumpintoper(private,bs,(12<<8)+10);
+ if ( (pt=PSDictHasEntry(sf->private,"BlueFuzz"))!=NULL )
+ DumpStrDouble(pt,private,(12<<8)+11);
+ if ( hash ) {
+ DumpStrDouble(PSDictHasEntry(sf->private,"StdHW"),private,10);
+ if ( (pt=PSDictHasEntry(sf->private,"StemSnapH"))!=NULL )
+ DumpStrArray(pt,private,(12<<8)|12);
+ } else {
+ if ( stdhw[0]!=0 )
+ dumpdbloper(private,stdhw[0],10);
+ DumpDblArray(stemsnaph,sizeof(stemsnaph)/sizeof(stemsnaph[0]),private,(12<<8)|12);
+ }
+ if ( hasv ) {
+ DumpStrDouble(PSDictHasEntry(sf->private,"StdVW"),private,11);
+ if ( (pt=PSDictHasEntry(sf->private,"StemSnapV"))!=NULL )
+ DumpStrArray(pt,private,(12<<8)|13);
+ } else {
+ if ( stdvw[0]!=0 )
+ dumpdbloper(private,stdvw[0],11);
+ DumpDblArray(stemsnapv,sizeof(stemsnapv)/sizeof(stemsnapv[0]),private,(12<<8)|13);
+ }
+ if ( (pt=PSDictHasEntry(sf->private,"ForceBold"))!=NULL ) {
+ dumpintoper(private,*pt=='t'||*pt=='T',(12<<8)|14);
+ } else if ( sf->weight!=NULL &&
+ (strstrmatch(sf->weight,"Bold")!=NULL ||
+ strstrmatch(sf->weight,"Demi")!=NULL ||
+ strstrmatch(sf->weight,"Fett")!=NULL ||
+ strstrmatch(sf->weight,"Gras")!=NULL ||
+ strstrmatch(sf->weight,"Heavy")!=NULL ||
+ strstrmatch(sf->weight,"Black")!=NULL))
+ dumpintoper(private,1,(12<<8)|14);
+ if ( (pt=PSDictHasEntry(sf->private,"LanguageGroup"))!=NULL )
+ DumpStrDouble(pt,private,(12<<8)+17);
+ else if ( map==NULL )
+ /* Do Nothing */;
+ else if ( map->enc->is_japanese ||
+ map->enc->is_korean ||
+ map->enc->is_tradchinese ||
+ map->enc->is_simplechinese )
+ dumpintoper(private,1,(12<<8)|17);
+ if ( (pt=PSDictHasEntry(sf->private,"ExpansionFactor"))!=NULL )
+ DumpStrDouble(pt,private,(12<<8)+18);
+ if ( subrcnt!=0 )
+ dumpsizedint(private,false,ftell(private)+3+1,19); /* Subrs */
+
+ if ( subfont==-1 )
+ at->privatelen = ftell(private);
+ else
+ at->fds[subfont].privatelen = ftell(private);
+}
+
+/* When we exit this the topdict is not complete, we still need to fill in */
+/* values for charset,encoding,charstrings and private. Then we need to go */
+/* back and fill in the table length (at lenpos) */
+static void dumpcfftopdict(SplineFont *sf,struct alltabs *at) {
+ char *pt, *end;
+ FILE *cfff = at->cfff;
+ DBounds b;
+
+ putshort(cfff,1); /* One top dict */
+ putc('\2',cfff); /* Offset size */
+ putshort(cfff,1); /* Offset to topdict */
+ at->lenpos = ftell(cfff);
+ putshort(cfff,0); /* placeholder for final position (final offset in index points beyond last element) */
+ dumpsid(cfff,at,sf->version,0);
+ dumpsid(cfff,at,sf->copyright,1);
+ dumpsid(cfff,at,sf->fullname?sf->fullname:sf->fontname,2);
+ dumpsid(cfff,at,sf->familyname,3);
+ dumpsid(cfff,at,sf->weight,4);
+ if ( at->gi.fixed_width>0 ) dumpintoper(cfff,1,(12<<8)|1);
+ if ( sf->italicangle!=0 ) dumpdbloper(cfff,sf->italicangle,(12<<8)|2);
+ if ( sf->upos!=-100 ) dumpdbloper(cfff,sf->upos,(12<<8)|3);
+ if ( sf->uwidth!=50 ) dumpdbloper(cfff,sf->uwidth,(12<<8)|4);
+ if ( sf->strokedfont ) {
+ dumpintoper(cfff,2,(12<<8)|5);
+ dumpdbloper(cfff,sf->strokewidth,(12<<8)|8);
+ }
+ /* We'll never set CharstringType */
+ if ( sf->ascent+sf->descent!=1000 ) {
+ dumpdbl(cfff,1.0/(sf->ascent+sf->descent));
+ dumpint(cfff,0);
+ dumpint(cfff,0);
+ dumpdbl(cfff,1.0/(sf->ascent+sf->descent));
+ dumpint(cfff,0);
+ dumpintoper(cfff,0,(12<<8)|7);
+ }
+ if ( sf->uniqueid!=-1 && sf->use_uniqueid )
+ dumpintoper(cfff, sf->uniqueid?sf->uniqueid:4000000 + (rand()&0x3ffff), 13 );
+ SplineFontLayerFindBounds(sf,at->gi.layer,&b);
+ at->gi.xmin = b.minx;
+ at->gi.ymin = b.miny;
+ at->gi.xmax = b.maxx;
+ at->gi.ymax = b.maxy;
+ dumpdbl(cfff,floor(b.minx));
+ dumpdbl(cfff,floor(b.miny));
+ dumpdbl(cfff,ceil(b.maxx));
+ dumpdbloper(cfff,ceil(b.maxy),5);
+ /* We'll never set StrokeWidth */
+ if ( sf->xuid!=NULL && sf->use_xuid ) {
+ pt = sf->xuid; if ( *pt=='[' ) ++pt;
+ while ( *pt && *pt!=']' ) {
+ dumpint(cfff,strtol(pt,&end,10));
+ if ( pt==end ) /* garbage in XUID */
+ break;
+ for ( pt = end; *pt==' '; ++pt );
+ }
+ putc(14,cfff);
+ if ( sf->changed_since_xuidchanged )
+ SFIncrementXUID(sf);
+ }
+ /* Offset to charset (oper=15) needed here */
+ /* Offset to encoding (oper=16) needed here (not for CID )*/
+ /* Offset to charstrings (oper=17) needed here */
+ /* Length of, and Offset to private (oper=18) needed here (not for CID )*/
+}
+
+static int dumpcffdict(SplineFont *sf,struct alltabs *at) {
+ FILE *fdarray = at->fdarray;
+ int pstart;
+ /* according to the PSRef Man v3, only fontname, fontmatrix and private */
+ /* appear in this dictionary */
+
+ dumpsid(fdarray,at,sf->fontname,(12<<8)|38);
+ if ( sf->ascent+sf->descent!=1000 ) {
+ dumpdbl(fdarray,1.0/(sf->ascent+sf->descent));
+ dumpint(fdarray,0);
+ dumpint(fdarray,0);
+ dumpdbl(fdarray,1.0/(sf->ascent+sf->descent));
+ dumpint(fdarray,0);
+ dumpintoper(fdarray,0,(12<<8)|7);
+ }
+ pstart = ftell(fdarray);
+ dumpsizedint(fdarray,false,0,-1); /* private length */
+ dumpsizedint(fdarray,true,0,18); /* private offset */
+return( pstart );
+}
+
+static void dumpcffdictindex(SplineFont *sf,struct alltabs *at) {
+ int i;
+ int pos;
+
+ putshort(at->fdarray,sf->subfontcnt);
+ putc('\2',at->fdarray); /* DICTs aren't very big, and there are at most 255 */
+ putshort(at->fdarray,1); /* Offset to first dict */
+ for ( i=0; i<sf->subfontcnt; ++i )
+ putshort(at->fdarray,0); /* Dump offset placeholders (note there's one extra to mark the end) */
+ pos = ftell(at->fdarray)-1;
+ for ( i=0; i<sf->subfontcnt; ++i ) {
+ at->fds[i].fillindictmark = dumpcffdict(sf->subfonts[i],at);
+ at->fds[i].eodictmark = ftell(at->fdarray);
+ if ( at->fds[i].eodictmark>65536 )
+ IError("The DICT INDEX got too big, result won't work");
+ }
+ fseek(at->fdarray,2*sizeof(short)+sizeof(char),SEEK_SET);
+ for ( i=0; i<sf->subfontcnt; ++i )
+ putshort(at->fdarray,at->fds[i].eodictmark-pos);
+ fseek(at->fdarray,0,SEEK_END);
+}
+
+static void dumpcffcidtopdict(SplineFont *sf,struct alltabs *at) {
+ char *pt, *end;
+ FILE *cfff = at->cfff;
+ DBounds b;
+ int cidcnt=0, k;
+
+ for ( k=0; k<sf->subfontcnt; ++k )
+ if ( sf->subfonts[k]->glyphcnt>cidcnt ) cidcnt = sf->subfonts[k]->glyphcnt;
+
+ putshort(cfff,1); /* One top dict */
+ putc('\2',cfff); /* Offset size */
+ putshort(cfff,1); /* Offset to topdict */
+ at->lenpos = ftell(cfff);
+ putshort(cfff,0); /* placeholder for final position */
+ dumpsid(cfff,at,sf->cidregistry,-1);
+ dumpsid(cfff,at,sf->ordering,-1);
+ dumpintoper(cfff,sf->supplement,(12<<8)|30); /* ROS operator must be first */
+ dumpdbloper(cfff,sf->cidversion,(12<<8)|31);
+ dumpintoper(cfff,cidcnt,(12<<8)|34);
+ if ( sf->use_uniqueid )
+ dumpintoper(cfff, sf->uniqueid?sf->uniqueid:4000000 + (rand()&0x3ffff), (12<<8)|35 );
+
+ dumpsid(cfff,at,sf->copyright,1);
+ dumpsid(cfff,at,sf->fullname?sf->fullname:sf->fontname,2);
+ dumpsid(cfff,at,sf->familyname,3);
+ dumpsid(cfff,at,sf->weight,4);
+ /* FontMatrix (identity here, real ones in sub fonts)*/
+ /* Actually there is no fontmatrix in the adobe cid font I'm looking at */
+ /* which means it should default to [.001...] but it doesn't so the */
+ /* docs aren't completely accurate */
+ /* I now see I've no idea what the FontMatrix means in a CID keyed font */
+ /* it seems to be ignored everywhere, so we omit it */
+
+ CIDLayerFindBounds(sf,at->gi.layer,&b);
+ at->gi.xmin = b.minx;
+ at->gi.ymin = b.miny;
+ at->gi.xmax = b.maxx;
+ at->gi.ymax = b.maxy;
+ dumpdbl(cfff,floor(b.minx));
+ dumpdbl(cfff,floor(b.miny));
+ dumpdbl(cfff,ceil(b.maxx));
+ dumpdbloper(cfff,ceil(b.maxy),5);
+ /* We'll never set StrokeWidth */
+ if ( sf->xuid!=NULL && sf->use_xuid ) {
+ pt = sf->xuid; if ( *pt=='[' ) ++pt;
+ while ( *pt && *pt!=']' ) {
+ dumpint(cfff,strtol(pt,&end,10));
+ for ( pt = end; *pt==' '; ++pt );
+ }
+ putc(14,cfff);
+ if ( sf->changed_since_xuidchanged )
+ SFIncrementXUID(sf);
+ }
+ /* Acrobat doesn't seem to care about a private dict here. Ghostscript */
+ /* dies. Tech Note: 5176.CFF.PDF, top of page 23 says: */
+ /* A Private DICT is required, but may be specified as having */
+ /* a length of 0 if there are no non-default values to be stored*/
+ /* No indication >where< it is required. I assumed everywhere. Perhaps */
+ /* just in basefonts? */
+ /* Omit it. */
+
+ /* Offset to charset (oper=15) needed here */
+ /* Offset to charstrings (oper=17) needed here */
+ /* Offset to FDArray (oper=12,36) needed here */
+ /* Offset to FDSelect (oper=12,37) needed here */
+}
+
+static int isStdEncoding(SplineFont *sf,EncMap *map) {
+ int i;
+
+ for ( i=0; i<256 && i<map->enccount; ++i ) if ( map->map[i]!=-1 && sf->glyphs[map->map[i]]!=NULL )
+ if ( sf->glyphs[map->map[i]]->unicodeenc!=-1 )
+ if ( sf->glyphs[map->map[i]]->unicodeenc!=unicode_from_adobestd[i] )
+return( 0 );
+
+return( 1 );
+}
+
+static void finishup(SplineFont *sf,struct alltabs *at) {
+ int strlen, shlen, glen,enclen,csetlen,cstrlen,prvlen;
+ int base, eotop, strhead;
+ int output_enc = ( at->format==ff_cff && !isStdEncoding(sf,at->map));
+
+ storesid(at,NULL); /* end the strings index */
+ strlen = ftell(at->sidf) + (shlen = ftell(at->sidh));
+ glen = sizeof(short); /* Single entry: 0, no globals */
+ enclen = ftell(at->encoding);
+ csetlen = ftell(at->charset);
+ cstrlen = ftell(at->charstrings);
+ prvlen = ftell(at->private);
+ base = ftell(at->cfff);
+ if ( base+6*3+strlen+glen+enclen+csetlen+cstrlen+prvlen > 32767 ) {
+ at->cfflongoffset = true;
+ base += 5*5+4;
+ } else
+ base += 5*3+4;
+ strhead = 2+(at->sidcnt>1);
+ base += strhead;
+
+ dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen,15); /* Charset */
+ if ( output_enc ) /* encoding offset */
+ dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen+csetlen,16); /* encoding offset */
+ else {
+ dumpsizedint(at->cfff,at->cfflongoffset,0,16);
+ enclen = 0;
+ }
+ dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen+csetlen+enclen,17);/* charstrings */
+ dumpsizedint(at->cfff,at->cfflongoffset,at->privatelen,-1);
+ dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen+csetlen+enclen+cstrlen,18); /* private size */
+ eotop = base-strhead-at->lenpos-1;
+ if ( at->cfflongoffset ) {
+ fseek(at->cfff,3,SEEK_SET);
+ putc(4,at->cfff);
+ }
+ fseek(at->cfff,at->lenpos,SEEK_SET);
+ putshort(at->cfff,eotop);
+ fseek(at->cfff,0,SEEK_END);
+
+ /* String Index */
+ putshort(at->cfff,at->sidcnt-1);
+ if ( at->sidcnt!=1 ) { /* Everybody gets an added NULL */
+ putc(at->sidlongoffset?4:2,at->cfff);
+ if ( !ttfcopyfile(at->cfff,at->sidh,base,"CFF-StringBase")) at->error = true;
+ if ( !ttfcopyfile(at->cfff,at->sidf,base+shlen,"CFF-StringData")) at->error = true;
+ }
+
+ /* Global Subrs */
+ putshort(at->cfff,0);
+
+ /* Charset */
+ if ( !ttfcopyfile(at->cfff,at->charset,base+strlen+glen,"CFF-Charset")) at->error = true;
+
+ /* Encoding */
+ if ( !ttfcopyfile(at->cfff,at->encoding,base+strlen+glen+csetlen,"CFF-Encoding")) at->error = true;
+
+ /* Char Strings */
+ if ( !ttfcopyfile(at->cfff,at->charstrings,base+strlen+glen+csetlen+enclen,"CFF-CharStrings")) at->error = true;
+
+ /* Private & Subrs */
+ if ( !ttfcopyfile(at->cfff,at->private,base+strlen+glen+csetlen+enclen+cstrlen,"CFF-Private")) at->error = true;
+}
+
+static void finishupcid(SplineFont *sf,struct alltabs *at) {
+ int strlen, shlen, glen,csetlen,cstrlen,fdsellen,fdarrlen,prvlen;
+ int base, eotop, strhead;
+ int i;
+
+ storesid(at,NULL); /* end the strings index */
+ strlen = ftell(at->sidf) + (shlen = ftell(at->sidh));
+ glen = ftell(at->globalsubrs);
+ /* No encodings */
+ csetlen = ftell(at->charset);
+ fdsellen = ftell(at->fdselect);
+ cstrlen = ftell(at->charstrings);
+ fdarrlen = ftell(at->fdarray);
+ base = ftell(at->cfff);
+
+ at->cfflongoffset = true;
+ base += 5*4+4+2; /* two of the opers below are two byte opers */
+ strhead = 2+(at->sidcnt>1);
+ base += strhead;
+
+ prvlen = 0;
+ for ( i=0; i<sf->subfontcnt; ++i ) {
+ fseek(at->fdarray,at->fds[i].fillindictmark,SEEK_SET);
+ dumpsizedint(at->fdarray,false,at->fds[i].privatelen,-1); /* Private len */
+ dumpsizedint(at->fdarray,true,base+strlen+glen+csetlen+fdsellen+cstrlen+fdarrlen+prvlen,18); /* Private offset */
+ prvlen += ftell(at->fds[i].private); /* private & subrs */
+ }
+
+ dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen,15); /* charset */
+ dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen+csetlen,(12<<8)|37); /* fdselect */
+ dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen+csetlen+fdsellen,17); /* charstrings */
+ dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen+csetlen+fdsellen+cstrlen,(12<<8)|36); /* fdarray */
+ eotop = base-strhead-at->lenpos-1;
+ fseek(at->cfff,at->lenpos,SEEK_SET);
+ putshort(at->cfff,eotop);
+ fseek(at->cfff,0,SEEK_END);
+
+ /* String Index */
+ putshort(at->cfff,at->sidcnt-1);
+ if ( at->sidcnt!=1 ) { /* Everybody gets an added NULL */
+ putc(at->sidlongoffset?4:2,at->cfff);
+ if ( !ttfcopyfile(at->cfff,at->sidh,base,"CFF-StringBase")) at->error = true;
+ if ( !ttfcopyfile(at->cfff,at->sidf,base+shlen,"CFF-StringData")) at->error = true;
+ }
+
+ /* Global Subrs */
+ if ( !ttfcopyfile(at->cfff,at->globalsubrs,base+strlen,"CFF-GlobalSubrs")) at->error = true;
+
+ /* Charset */
+ if ( !ttfcopyfile(at->cfff,at->charset,base+strlen+glen,"CFF-Charset")) at->error = true;
+
+ /* FDSelect */
+ if ( !ttfcopyfile(at->cfff,at->fdselect,base+strlen+glen+csetlen,"CFF-FDSelect")) at->error = true;
+
+ /* Char Strings */
+ if ( !ttfcopyfile(at->cfff,at->charstrings,base+strlen+glen+csetlen+fdsellen,"CFF-CharStrings")) at->error = true;
+
+ /* FDArray (DICT Index) */
+ if ( !ttfcopyfile(at->cfff,at->fdarray,base+strlen+glen+csetlen+fdsellen+cstrlen,"CFF-FDArray")) at->error = true;
+
+ /* Private & Subrs */
+ prvlen = 0;
+ for ( i=0; i<sf->subfontcnt; ++i ) {
+ int temp = ftell(at->fds[i].private);
+ if ( !ttfcopyfile(at->cfff,at->fds[i].private,
+ base+strlen+glen+csetlen+fdsellen+cstrlen+fdarrlen+prvlen,"CFF-PrivateSubrs")) at->error = true;
+ prvlen += temp;
+ }
+
+ free(at->fds);
+}
+
+static int dumpcffhmtx(struct alltabs *at,SplineFont *sf,int bitmaps) {
+ DBounds b;
+ SplineChar *sc;
+ int i,cnt;
+ int dovmetrics = sf->hasvmetrics;
+ int width = at->gi.fixed_width;
+
+ at->gi.hmtx = tmpfile2();
+ if ( dovmetrics )
+ at->gi.vmtx = tmpfile2();
+ FigureFullMetricsEnd(sf,&at->gi,bitmaps); /* Bitmap fonts use ttf convention of 3 magic glyphs */
+ if ( at->gi.bygid[0]!=-1 && (sf->glyphs[at->gi.bygid[0]]->width==width || width<=0 )) {
+ putshort(at->gi.hmtx,sf->glyphs[at->gi.bygid[0]]->width);
+ SplineCharLayerFindBounds(sf->glyphs[at->gi.bygid[0]],at->gi.layer,&b);
+ putshort(at->gi.hmtx,b.minx);
+ if ( dovmetrics ) {
+ putshort(at->gi.vmtx,sf->glyphs[at->gi.bygid[0]]->vwidth);
+ putshort(at->gi.vmtx,/*sf->vertical_origin-*/b.miny);
+ }
+ } else {
+ putshort(at->gi.hmtx,width<=0?(sf->ascent+sf->descent)/2:width);
+ putshort(at->gi.hmtx,0);
+ if ( dovmetrics ) {
+ putshort(at->gi.vmtx,sf->ascent+sf->descent);
+ putshort(at->gi.vmtx,0);
+ }
+ }
+ cnt = 1;
+ if ( bitmaps ) {
+ if ( width<=0 ) width = (sf->ascent+sf->descent)/3;
+ putshort(at->gi.hmtx,width);
+ putshort(at->gi.hmtx,0);
+ if ( dovmetrics ) {
+ putshort(at->gi.vmtx,sf->ascent+sf->descent);
+ putshort(at->gi.vmtx,0);
+ }
+ putshort(at->gi.hmtx,width);
+ putshort(at->gi.hmtx,0);
+ if ( dovmetrics ) {
+ putshort(at->gi.vmtx,sf->ascent+sf->descent);
+ putshort(at->gi.vmtx,0);
+ }
+ cnt = 3;
+ }
+
+ for ( i=cnt; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ sc = sf->glyphs[at->gi.bygid[i]];
+ if ( SCWorthOutputting(sc) ) {
+ if ( i<=at->gi.lasthwidth )
+ putshort(at->gi.hmtx,sc->width);
+ SplineCharLayerFindBounds(sc,at->gi.layer,&b);
+ putshort(at->gi.hmtx,b.minx);
+ if ( dovmetrics ) {
+ if ( i<=at->gi.lastvwidth )
+ putshort(at->gi.vmtx,sc->vwidth);
+ putshort(at->gi.vmtx,/*sf->vertical_origin-*/b.maxy);
+ }
+ ++cnt;
+ if ( i==at->gi.lasthwidth )
+ at->gi.hfullcnt = cnt;
+ if ( i==at->gi.lastvwidth )
+ at->gi.vfullcnt = cnt;
+ }
+ }
+ at->gi.hmtxlen = ftell(at->gi.hmtx);
+ if ( at->gi.hmtxlen&2 ) putshort(at->gi.hmtx,0);
+ if ( dovmetrics ) {
+ at->gi.vmtxlen = ftell(at->gi.vmtx);
+ if ( at->gi.vmtxlen&2 ) putshort(at->gi.vmtx,0);
+ }
+
+ at->gi.maxp->numGlyphs = cnt;
+return( true );
+}
+
+static void dumpcffcidhmtx(struct alltabs *at,SplineFont *_sf) {
+ DBounds b;
+ SplineChar *sc;
+ int cid,i,cnt=0,max;
+ SplineFont *sf;
+ int dovmetrics = _sf->hasvmetrics;
+
+ at->gi.hmtx = tmpfile2();
+ if ( dovmetrics )
+ at->gi.vmtx = tmpfile2();
+ FigureFullMetricsEnd(_sf,&at->gi,false);
+
+ max = 0;
+ for ( i=0; i<_sf->subfontcnt; ++i )
+ if ( max<_sf->subfonts[i]->glyphcnt )
+ max = _sf->subfonts[i]->glyphcnt;
+ for ( cid = 0; cid<max; ++cid ) {
+ for ( i=0; i<_sf->subfontcnt; ++i ) {
+ sf = _sf->subfonts[i];
+ if ( cid<sf->glyphcnt && SCWorthOutputting(sf->glyphs[cid]))
+ break;
+ }
+ if ( i!=_sf->subfontcnt ) {
+ sc = sf->glyphs[cid];
+ if ( sc->ttf_glyph<=at->gi.lasthwidth )
+ putshort(at->gi.hmtx,sc->width);
+ SplineCharLayerFindBounds(sc,at->gi.layer,&b);
+ putshort(at->gi.hmtx,b.minx);
+ if ( dovmetrics ) {
+ if ( sc->ttf_glyph<=at->gi.lastvwidth )
+ putshort(at->gi.vmtx,sc->vwidth);
+ putshort(at->gi.vmtx,/*sf->vertical_origin-*/b.maxy);
+ }
+ ++cnt;
+ if ( sc->ttf_glyph==at->gi.lasthwidth )
+ at->gi.hfullcnt = cnt;
+ if ( sc->ttf_glyph==at->gi.lastvwidth )
+ at->gi.vfullcnt = cnt;
+ } else if ( cid==0 ) {
+ /* Create a dummy entry for .notdef */
+ sf = _sf->subfonts[0];
+ putshort(at->gi.hmtx,sf->ascent+sf->descent);
+ putshort(at->gi.hmtx,0);
+ ++cnt;
+ if ( dovmetrics ) {
+ putshort(at->gi.vmtx,sf->ascent+sf->descent);
+ putshort(at->gi.vmtx,0);
+ }
+ }
+ }
+ at->gi.hmtxlen = ftell(at->gi.hmtx);
+ if ( at->gi.hmtxlen&2 ) putshort(at->gi.hmtx,0);
+ if ( dovmetrics ) {
+ at->gi.vmtxlen = ftell(at->gi.vmtx);
+ if ( at->gi.vmtxlen&2 ) putshort(at->gi.vmtx,0);
+ }
+
+ at->gi.maxp->numGlyphs = cnt;
+}
+
+static int dumptype2glyphs(SplineFont *sf,struct alltabs *at) {
+ int i;
+ struct pschars *subrs, *chrs;
+
+ at->cfff = tmpfile2();
+ at->sidf = tmpfile2();
+ at->sidh = tmpfile2();
+ at->charset = tmpfile2();
+ at->encoding = tmpfile2();
+ at->private = tmpfile2();
+
+ dumpcffheader(at->cfff);
+ dumpcffnames(sf,at->cfff);
+ dumpcffcharset(sf,at);
+ ff_progress_change_stages(2+at->gi.strikecnt);
+
+ ATFigureDefWidth(sf,at,-1);
+ if ((chrs =SplineFont2ChrsSubrs2(sf,at->nomwid,at->defwid,at->gi.bygid,at->gi.gcnt,at->gi.flags,&subrs,at->gi.layer))==NULL )
+return( false );
+ dumpcffprivate(sf,at,-1,subrs->next);
+ if ( subrs->next!=0 )
+ _dumpcffstrings(at->private,subrs);
+ ff_progress_next_stage();
+ at->charstrings = dumpcffstrings(chrs);
+ PSCharsFree(subrs);
+ if ( at->charstrings == NULL )
+return( false );
+ if ( at->format==ff_cff && !isStdEncoding(sf,at->map))
+ dumpcffencoding(sf,at); /* Do this after we've assigned glyph ids */
+ dumpcfftopdict(sf,at);
+ finishup(sf,at);
+
+ at->cfflen = ftell(at->cfff);
+ if ( at->cfflen&3 ) {
+ for ( i=4-(at->cfflen&3); i>0; --i )
+ putc('\0',at->cfff);
+ }
+
+ if ( at->format!=ff_cff )
+ dumpcffhmtx(at,sf,false);
+ free(at->gn_sid); at->gn_sid=NULL;
+return( true );
+}
+
+static int dumpcidglyphs(SplineFont *sf,struct alltabs *at) {
+ int i;
+ struct pschars *glbls = NULL, *chrs;
+
+ at->cfff = tmpfile2();
+ at->sidf = tmpfile2();
+ at->sidh = tmpfile2();
+ at->charset = tmpfile2();
+ at->fdselect = tmpfile2();
+ at->fdarray = tmpfile2();
+ at->globalsubrs = tmpfile2();
+
+ at->fds = calloc(sf->subfontcnt,sizeof(struct fd2data));
+ for ( i=0; i<sf->subfontcnt; ++i ) {
+ at->fds[i].private = tmpfile2();
+ ATFigureDefWidth(sf->subfonts[i],at,i);
+ }
+ if ( (chrs = CID2ChrsSubrs2(sf,at->fds,at->gi.flags,&glbls,at->gi.layer))==NULL )
+return( false );
+ for ( i=0; i<sf->subfontcnt; ++i ) {
+ dumpcffprivate(sf->subfonts[i],at,i,at->fds[i].subrs->next);
+ if ( at->fds[i].subrs->next!=0 )
+ _dumpcffstrings(at->fds[i].private,at->fds[i].subrs);
+ PSCharsFree(at->fds[i].subrs);
+ }
+ _dumpcffstrings(at->globalsubrs,glbls);
+ PSCharsFree(glbls);
+
+ dumpcffheader(at->cfff);
+ dumpcffnames(sf,at->cfff);
+ dumpcffcidset(at);
+ dumpcfffdselect(sf,at);
+ dumpcffdictindex(sf,at);
+ if ( (at->charstrings = dumpcffstrings(chrs))==NULL )
+return( false );
+ dumpcffcidtopdict(sf,at);
+ finishupcid(sf,at);
+
+ at->cfflen = ftell(at->cfff);
+ if ( at->cfflen&3 ) {
+ for ( i=4-(at->cfflen&3); i>0; --i )
+ putc('\0',at->cfff);
+ }
+
+ if ( at->format!=ff_cffcid )
+ dumpcffcidhmtx(at,sf);
+return( true );
+}
+
+static int AnyInstructions(SplineFont *sf) {
+ int i;
+
+ if ( sf->subfontcnt!=0 ) {
+ for ( i=0; i<sf->subfontcnt; ++i )
+ if ( AnyInstructions(sf->subfonts[i]))
+return( true );
+ } else {
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ if ( sf->glyphs[i]->ttf_instrs_len!=0 )
+return( true );
+ }
+ }
+return( false );
+}
+
+void cvt_unix_to_1904( long long time, int32 result[2]) {
+ uint32 date1970[4], tm[4];
+ uint32 year[2];
+ int i;
+
+ tm[0] = time &0xffff;
+ tm[1] = (time>>16)&0xffff;
+ tm[2] = (time>>32)&0xffff;
+ tm[3] = (time>>48)&0xffff;
+ memset(date1970,0,sizeof(date1970));
+ year[0] = (60*60*24*365L)&0xffff;
+ year[1] = (60*60*24*365L)>>16;
+ for ( i=1904; i<1970; ++i ) {
+ date1970[0] += year[0];
+ date1970[1] += year[1];
+ if ( (i&3)==0 && (i%100!=0 || i%400==0))
+ date1970[0] += 24*60*60L; /* Leap year */
+ date1970[1] += (date1970[0]>>16);
+ date1970[0] &= 0xffff;
+ date1970[2] += date1970[1]>>16;
+ date1970[1] &= 0xffff;
+ date1970[3] += date1970[2]>>16;
+ date1970[2] &= 0xffff;
+ }
+
+ for ( i=0; i<3; ++i ) {
+ tm[i] += date1970[i];
+ tm[i+1] += tm[i]>>16;
+ tm[i] &= 0xffff;
+ }
+ tm[3] -= date1970[3];
+
+ result[0] = (tm[1]<<16) | tm[0];
+ result[1] = (tm[3]<<16) | tm[2];
+}
+
+static void sethead(struct head *head,SplineFont *sf,struct alltabs *at,
+ enum fontformat format, int32 *bsizes) {
+ int i, lr, rl, indic_rearrange, arabic;
+ ASM *sm;
+ struct ttflangname *useng;
+ float vn;
+
+ if ( at->gi.xmin==15000 ) at->gi.xmin = 0;
+ if ( at->gi.ymin==15000 ) at->gi.ymin = 0;
+ if ( bsizes!=NULL && format==ff_none ) {
+ if ( sf->ascent >at->gi.ymax ) at->gi.ymax = sf->ascent;
+ if ( -sf->descent<at->gi.ymin ) at->gi.ymin = -sf->descent;
+ }
+ head->xmin = at->gi.xmin;
+ head->ymin = at->gi.ymin;
+ head->xmax = at->gi.xmax;
+ head->ymax = at->gi.ymax;
+
+ lr = rl = arabic = 0;
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ SplineChar *sc = sf->glyphs[at->gi.bygid[i]];
+ int uni = sc->unicodeenc ;
+ if ( SCRightToLeft(sc) )
+ rl = 1;
+ else if (( uni!=-1 && uni<0x10000 && islefttoright(uni)) ||
+ (uni>=0x10300 && uni<0x107ff))
+ lr = 1;
+ if ( SCScriptFromUnicode(sc)==CHR('a','r','a','b') )
+ arabic = 1;
+ }
+
+ head->version = 0x00010000;
+ head->revision = sf->sfntRevision;
+ if ( sf->sfntRevision==sfntRevisionUnset ) {
+ head->revision = 0x00010000;
+ for ( useng=sf->names; useng!=NULL; useng=useng->next )
+ if ( useng->lang==0x409 )
+ break;
+ if ( useng!=NULL && useng->names[ttf_version]!=NULL &&
+ sscanf(useng->names[ttf_version], "Version %f", &vn)==1 ) {
+ head->revision = vn*65536;
+ } else if ( sf->subfontcnt!=0 ) {
+ int val, mant;
+ val = floor(sf->cidversion);
+ mant = floor(65536.*((double)sf->cidversion-val));
+ head->revision = (val<<16) | mant;
+ } else if ( sf->version!=NULL ) {
+ char *pt=sf->version;
+ double dval;
+ int val, mant;
+ while ( *pt && !isdigit(*pt) && *pt!='.' ) ++pt;
+ if ( *pt ) {
+ dval = strtod(pt,NULL);
+ val = floor(dval);
+ mant = floor(65536.*(dval-val));
+ head->revision = (val<<16) | mant;
+ }
+ }
+ }
+ head->checksumAdj = 0;
+ head->magicNum = 0x5f0f3cf5;
+ head->flags = 8|2|1; /* baseline at 0, lsbline at 0, round ppem */
+ if ( format>=ff_ttf && format<=ff_ttfdfont ) {
+ if ( AnyInstructions(sf) )
+ head->flags = 0x10|8|4|2|1; /* baseline at 0, lsbline at 0, round ppem, instructions may depend on point size, instructions change metrics */
+ }
+ /* If a font contains embedded bitmaps, and if some of those bitmaps have */
+ /* a different advance width from that expected by scaling, then windows */
+ /* will only notice the fact if the 0x10 bit is set (even though this has*/
+ /* nothing to do with instructions) */
+/* Apple flags */
+ if ( sf->hasvmetrics )
+ head->flags |= (1<<5); /* designed to be layed out vertically */
+ /* Bit 6 must be zero */
+ if ( arabic )
+ head->flags |= (1<<7);
+ if ( sf->sm )
+ head->flags |= (1<<8); /* has metamorphesis effects */
+ if ( rl )
+ head->flags |= (1<<9);
+ indic_rearrange = 0;
+ for ( sm = sf->sm; sm!=NULL; sm=sm->next )
+ if ( sm->type == asm_indic )
+ indic_rearrange = true;
+ if ( indic_rearrange )
+ head->flags |= (1<<10);
+/* End apple flags */
+ if ( sf->head_optimized_for_cleartype )
+ head->flags |= (1<<13);
+ head->emunits = sf->ascent+sf->descent;
+ head->macstyle = MacStyleCode(sf,NULL);
+ head->lowestreadable = 8;
+ head->locais32 = 1;
+ if ( at->gi.glyph_len<0x20000 )
+ head->locais32 = 0;
+
+ /* I assume we've always got some neutrals (spaces, punctuation) */
+ if ( lr && rl )
+ head->dirhint = 0;
+ else if ( rl )
+ head->dirhint = -2;
+ else
+ head->dirhint = 2;
+ if ( rl )
+ head->flags |= (1<<9); /* Apple documents this */
+ /* if there are any indic characters, set bit 10 */
+
+ cvt_unix_to_1904(sf->creationtime,head->createtime);
+ cvt_unix_to_1904(sf->modificationtime,head->modtime);
+}
+
+static void sethhead(struct hhead *hhead,struct hhead *vhead,struct alltabs *at, SplineFont *sf) {
+ int i, width, rbearing, height, bbearing;
+ int ymax, ymin, xmax, xmin, off;
+ DBounds bb;
+ /* Might as well fill in the vhead even if we don't use it */
+ /* we just won't dump it out if we don't want it */
+
+ width = 0x80000000; rbearing = 0x7fffffff; height = 0x80000000; bbearing=0x7fffffff;
+ xmax = ymax = 0x80000000; xmin = ymin = 0x7fffffff;
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ SplineChar *sc = sf->glyphs[at->gi.bygid[i]];
+ SplineCharLayerFindBounds(sc,at->gi.layer,&bb);
+ if ( sc->width>width ) width = sc->width;
+ if ( sc->vwidth>height ) height = sc->vwidth;
+ if ( sc->width-bb.maxx < rbearing ) rbearing = sc->width-bb.maxx;
+ if ( sc->vwidth-bb.maxy < bbearing ) bbearing = sc->vwidth-bb.maxy;
+ if ( bb.maxy > ymax ) ymax = bb.maxy;
+ if ( bb.miny < ymin ) ymin = bb.miny;
+ if ( bb.maxx > xmax ) xmax = bb.maxx;
+ if ( bb.minx < xmin ) xmin = bb.minx;
+ }
+
+ if ( at->head.ymax>ymax ) ymax = at->head.ymax; /* If generated .notdef glyph is bigger than real glyphs */
+ if ( at->head.ymin<ymin ) ymin = at->head.ymin;
+
+ if ( ymax==0 && ymin==0 ) {
+ /* this can happen in a bitmap only font */
+ ymax = sf->ascent;
+ ymin = -sf->descent;
+ }
+ hhead->version = 0x00010000;
+ if ( sf->pfminfo.hheadascent_add )
+ hhead->ascender = ymax + sf->pfminfo.hhead_ascent;
+ else
+ hhead->ascender = sf->pfminfo.hhead_ascent;
+ if ( sf->pfminfo.hheaddescent_add )
+ hhead->descender = ymin + sf->pfminfo.hhead_descent;
+ else
+ hhead->descender = sf->pfminfo.hhead_descent;
+ hhead->linegap = sf->pfminfo.linegap;
+
+ vhead->version = 0x00011000;
+ off = (sf->ascent+sf->descent)/2;
+ vhead->ascender = xmax-off;
+ vhead->descender = xmin-off;
+ vhead->linegap = sf->pfminfo.linegap;
+
+ at->isfixed = at->gi.fixed_width>0;
+ hhead->maxwidth = width;
+ hhead->minlsb = at->head.xmin;
+ hhead->minrsb = rbearing;
+ /* Apple's ftxvalidator says the min sidebearing should be 0 even if it isn't */
+ if ( hhead->minlsb>0 ) hhead->minlsb = 0;
+ if ( hhead->minrsb>0 ) hhead->minrsb = 0;
+ hhead->maxextent = at->head.xmax;
+ if ( sf->italicangle==0 )
+ hhead->caretSlopeRise = 1;
+ else {
+ hhead->caretSlopeRise = 100;
+ hhead->caretSlopeRun = (int) rint(100*tan(-sf->italicangle*3.1415926535897/180.));
+ }
+
+ vhead->maxwidth = height;
+ vhead->minlsb = at->head.ymin;
+ vhead->minrsb = bbearing;
+ vhead->maxextent = at->head.ymax;
+ vhead->caretSlopeRise = 0;
+ vhead->caretSlopeRun = 1;
+ /* Are there vertical oblique fonts? */
+
+ hhead->numMetrics = at->gi.hfullcnt;
+ vhead->numMetrics = at->gi.vfullcnt;
+}
+
+static void OS2WeightCheck(struct pfminfo *pfminfo,char *weight) {
+ if ( weight==NULL ) {
+ /* default it */
+ } else if ( strstrmatch(weight,"medi")!=NULL ) {
+ pfminfo->weight = 500;
+ pfminfo->panose[2] = 6;
+ } else if ( strstrmatch(weight,"demi")!=NULL ||
+ strstrmatch(weight,"halb")!=NULL ||
+ (strstrmatch(weight,"semi")!=NULL &&
+ strstrmatch(weight,"bold")!=NULL) ) {
+ pfminfo->weight = 600;
+ pfminfo->panose[2] = 7;
+ } else if ( strstrmatch(weight,"bold")!=NULL ||
+ strstrmatch(weight,"fett")!=NULL ||
+ strstrmatch(weight,"gras")!=NULL ) {
+ pfminfo->weight = 700;
+ pfminfo->panose[2] = 8;
+ } else if ( strstrmatch(weight,"heavy")!=NULL ) {
+ pfminfo->weight = 800;
+ pfminfo->panose[2] = 9;
+ } else if ( strstrmatch(weight,"black")!=NULL ) {
+ pfminfo->weight = 900;
+ pfminfo->panose[2] = 10;
+ } else if ( strstrmatch(weight,"nord")!=NULL ) {
+ pfminfo->weight = 950;
+ pfminfo->panose[2] = 11;
+ } else if ( strstrmatch(weight,"thin")!=NULL ) {
+ pfminfo->weight = 100;
+ pfminfo->panose[2] = 2;
+ } else if ( strstrmatch(weight,"extra")!=NULL ||
+ strstrmatch(weight,"light")!=NULL ) {
+ pfminfo->weight = 200;
+ pfminfo->panose[2] = 3;
+ } else if ( strstrmatch(weight,"light")!=NULL ) {
+ pfminfo->weight = 300;
+ pfminfo->panose[2] = 4;
+ }
+}
+
+void SFDefaultOS2Simple(struct pfminfo *pfminfo,SplineFont *sf) {
+ pfminfo->pfmfamily = 0x11;
+ pfminfo->panose[0] = 2;
+ pfminfo->weight = 400;
+ pfminfo->panose[2] = 5;
+ pfminfo->width = 5;
+ pfminfo->panose[3] = 3;
+ pfminfo->winascent_add = pfminfo->windescent_add = true;
+ pfminfo->hheadascent_add = pfminfo->hheaddescent_add = true;
+ pfminfo->typoascent_add = pfminfo->typodescent_add = true;
+ pfminfo->os2_winascent = pfminfo->os2_windescent = 0;
+
+ if ( sf->subfonts!=NULL ) sf = sf->subfonts[0];
+ pfminfo->linegap = pfminfo->vlinegap = pfminfo->os2_typolinegap =
+ rint(.09*(sf->ascent+sf->descent));
+}
+
+void SFDefaultOS2SubSuper(struct pfminfo *pfminfo,int emsize,double italic_angle) {
+ double s = sin(italic_angle*3.1415926535897932/180.0);
+ pfminfo->os2_supysize = pfminfo->os2_subysize = .7*emsize;
+ pfminfo->os2_supxsize = pfminfo->os2_subxsize = .65*emsize;
+ pfminfo->os2_subyoff = .14*emsize;
+ pfminfo->os2_supyoff = .48*emsize;
+ pfminfo->os2_supxoff = s*pfminfo->os2_supyoff;
+ pfminfo->os2_subxoff = -s*pfminfo->os2_subyoff;
+ pfminfo->os2_strikeysize = 102*emsize/2048;
+ pfminfo->os2_strikeypos = 530*emsize/2048;
+}
+
+void SFDefaultOS2Info(struct pfminfo *pfminfo,SplineFont *sf,char *fontname) {
+ int samewid= -1;
+ char *weight = sf->cidmaster==NULL ? sf->weight : sf->cidmaster->weight;
+
+ if ( sf->pfminfo.pfmset ) {
+ if ( pfminfo!=&sf->pfminfo )
+ *pfminfo = sf->pfminfo;
+ if ( !pfminfo->panose_set ) {
+ struct pfminfo info;
+ memset(&info,0,sizeof(info));
+ sf->pfminfo.pfmset = false;
+ SFDefaultOS2Info(&info,sf,fontname);
+ sf->pfminfo.pfmset = true;
+ memcpy(pfminfo->panose,info.panose,sizeof(info.panose));
+ }
+ } else {
+ struct pfminfo hold;
+ if ( pfminfo->hheadset || pfminfo->vheadset )
+ hold = *pfminfo;
+ else
+ hold.hheadset = hold.vheadset = false;
+ memset(pfminfo,'\0',sizeof(*pfminfo));
+ SFDefaultOS2Simple(pfminfo,sf);
+ samewid = CIDOneWidth(sf);
+
+ pfminfo->pfmfamily = 0x10;
+ if ( samewid>0 ) {
+ pfminfo->pfmfamily = 0x30;
+ /* pfminfo->panose[3] = 9; */ /* This is done later */
+ } else if ( strstrmatch(fontname,"sans")!=NULL )
+ pfminfo->pfmfamily = 0x20;
+ else if ( strstrmatch(fontname,"script")!=NULL ) {
+ pfminfo->pfmfamily = 0x40;
+ pfminfo->panose[0] = 3;
+ }
+ if ( samewid==-1 )
+ pfminfo->pfmfamily |= 0x1; /* Else it assumes monospace */
+
+/* urw uses 4 character abreviations */
+ if ( weight!=NULL )
+ OS2WeightCheck(pfminfo,weight);
+ OS2WeightCheck(pfminfo,fontname);
+
+ if ( strstrmatch(fontname,"ultra")!=NULL &&
+ strstrmatch(fontname,"condensed")!=NULL ) {
+ pfminfo->width = 1;
+ pfminfo->panose[3] = 8;
+ } else if ( strstrmatch(fontname,"extra")!=NULL &&
+ strstrmatch(fontname,"condensed")!=NULL ) {
+ pfminfo->width = 2;
+ pfminfo->panose[3] = 8;
+ } else if ( strstrmatch(fontname,"semi")!=NULL &&
+ strstrmatch(fontname,"condensed")!=NULL ) {
+ pfminfo->width = 4;
+ pfminfo->panose[3] = 6;
+ } else if ( strstrmatch(fontname,"condensed")!=NULL ||
+ strstrmatch(fontname,"narrow")!=NULL ) {
+ pfminfo->width = 3;
+ pfminfo->panose[3] = 6;
+ } else if ( strstrmatch(fontname,"ultra")!=NULL &&
+ strstrmatch(fontname,"expanded")!=NULL ) {
+ pfminfo->width = 9;
+ pfminfo->panose[3] = 7;
+ } else if ( strstrmatch(fontname,"extra")!=NULL &&
+ strstrmatch(fontname,"expanded")!=NULL ) {
+ pfminfo->width = 8;
+ pfminfo->panose[3] = 7;
+ } else if ( strstrmatch(fontname,"semi")!=NULL &&
+ strstrmatch(fontname,"expanded")!=NULL ) {
+ pfminfo->width = 6;
+ pfminfo->panose[3] = 5;
+ } else if ( strstrmatch(fontname,"expanded")!=NULL ) {
+ pfminfo->width = 7;
+ pfminfo->panose[3] = 5;
+ }
+ if ( samewid>0 )
+ pfminfo->panose[3] = 9;
+ if ( hold.hheadset ) {
+ pfminfo->hheadset = true;
+ pfminfo->hheadascent_add = hold.hheadascent_add;
+ pfminfo->hheaddescent_add = hold.hheaddescent_add;
+ pfminfo->hhead_ascent = hold.hhead_ascent;
+ pfminfo->hhead_descent = hold.hhead_descent;
+ pfminfo->linegap = hold.linegap;
+ }
+ if ( hold.vheadset ) {
+ pfminfo->vheadset = true;
+ pfminfo->vlinegap = hold.vlinegap;
+ }
+ }
+ if ( !pfminfo->subsuper_set )
+ SFDefaultOS2SubSuper(pfminfo,sf->ascent+sf->descent,sf->italicangle);
+}
+
+int AlreadyMSSymbolArea(SplineFont *sf,EncMap *map) {
+ int i;
+ int acnt=0, pcnt=0;
+
+ for ( i=0; i<map->enccount && i<0xffff; ++i ) {
+ if ( map->map[i]!=-1 && sf->glyphs[map->map[i]]!=NULL &&
+ sf->glyphs[map->map[i]]->ttf_glyph!=-1 ) {
+ if ( i>=0xf000 && i<=0xf0ff )
+ ++pcnt;
+ else if ( i>=0x20 && i<=0xff )
+ ++acnt;
+ }
+ }
+return( pcnt>acnt );
+}
+
+void OS2FigureCodePages(SplineFont *sf, uint32 CodePage[2]) {
+ int i;
+ uint32 latin1[8];
+ int has_ascii, has_lineart=0, has_radical=0, has_summation=0;
+ int cp852=0, cp775=0, cp861=0, cp860=0, cp857=0, cp855=0, cp862=0, cp863=0;
+ int cp864=0, cp865=0, cp866=0, cp869=0, cp737=0, cp708=0, mac=0;
+ int k;
+ SplineChar *sc;
+ SplineFont *sub;
+
+ memset(latin1,0,sizeof(latin1));
+ k=0;
+ do {
+ sub = k<sf->subfontcnt? sf->subfonts[k] : sf;
+ for ( i=0; i<sub->glyphcnt; ++i ) if ( (sc = sub->glyphs[i])!=NULL ) {
+ if ( sc->unicodeenc<256 && sc->unicodeenc>=0 )
+ latin1[(sc->unicodeenc>>5)] |= 1<<(sc->unicodeenc&31);
+ }
+ ++k;
+ } while ( k<sf->subfontcnt );
+
+ has_ascii = latin1[1]==0xffffffff && latin1[2]==0xffffffff &&
+ (latin1[3]&0x7fffffff)==0x7fffffff; /* DEL is not a char */
+ CodePage[0] = CodePage[1] = 0;
+
+ k=0;
+ do {
+ sub = k<sf->subfontcnt? sf->subfonts[k] : sf;
+ for ( i=0; i<sub->glyphcnt; ++i ) if ( (sc = sub->glyphs[i])!=NULL ) {
+ int uni = sc->unicodeenc;
+ if ( uni==0xde && has_ascii )
+ CodePage[0] |= 1<<0; /* (ANSI) Latin1 */
+ else if ( uni==0x255a && has_ascii ) {
+ CodePage[1] |= 1U<<30; /* WE/latin1 */ /* Not latin1 at all */
+ CodePage[1] |= 1U<<31; /* US */
+ } else if ( uni==0x13d && has_ascii ) {
+ CodePage[0] |= 1<<1; /* latin2 */
+ ++cp852;
+ } else if ( uni==0x411 ) {
+ CodePage[0] |= 1<<2; /* cyrillic */
+ ++cp866;
+ ++cp855;
+ } else if ( uni==0x405 ) {
+ ++cp855;
+ } else if ( uni==0x386 ) {
+ CodePage[0] |= 1<<3; /* greek */
+ ++cp869;
+ ++cp737;
+ } else if ( uni==0x130 && has_ascii ) {
+ CodePage[0] |= 1<<4; /* turkish */
+ ++cp857;
+ } else if ( uni==0x5d0 ) {
+ CodePage[0] |= 1<<5; /* hebrew */
+ ++cp862;
+ } else if ( uni==0x631 ) {
+ CodePage[0] |= 1<<6; /* arabic */
+ ++cp864;
+ ++cp708;
+ } else if ( uni==0x157 && has_ascii ) {
+ CodePage[0] |= 1<<7; /* baltic */
+ ++cp775;
+ } else if ( uni==0x20AB && has_ascii ) {
+ CodePage[0] |= 1<<8; /* vietnamese */
+ } else if ( uni==0xe45 )
+ CodePage[0] |= 1<<16; /* thai */
+ else if ( uni==0x30a8 )
+ CodePage[0] |= 1<<17; /* japanese */
+ else if ( uni==0x3105 )
+ CodePage[0] |= 1<<18; /* simplified chinese */
+ else if ( uni==0x3131 )
+ CodePage[0] |= 1<<19; /* korean wansung */
+ else if ( uni==0x592E )
+ CodePage[0] |= 1<<20; /* traditional chinese */
+ else if ( uni==0xacf4 )
+ CodePage[0] |= 1<<21; /* korean Johab */
+ else if ( uni==0x2030 && has_ascii )
+ ++mac;
+ else if ( uni==0x2665 && has_ascii )
+ CodePage[0] |= 1U<<30; /* OEM */
+ /* the symbol bit doesn't mean it contains the glyphs in symbol */
+ /* rather that one is using a symbol encoding. Or that there are */
+ /* glyphs with unicode encoding between 0xf000 and 0xf0ff, in which */
+ /* case those guys should be given a symbol encoding */
+ /* There's a bug in the way otf fonts handle this (but not ttf) and */
+ /* they only seem to list the symbol glyphs. */
+ /* Hence we don't test uni==0x21d4 */
+ /* This doesn't work well either. In ttf fonts the bit is ignored */
+ /* in otf fonts the bit means "ignore all other bits" */
+ else if ( uni>=0xf000 && uni<=0xf0ff )
+ CodePage[0] |= 1U<<31; /* symbol */
+ else if ( uni==0xc5 && has_ascii )
+ ++cp865;
+ else if ( uni==0xe9 && has_ascii )
+ ++cp863;
+ else if ( uni==0xf5 && has_ascii )
+ ++cp860;
+ else if ( uni==0xfe && has_ascii )
+ ++cp861;
+ else if ( uni==0x2524 )
+ ++has_lineart;
+ else if ( uni==0x255c )
+ ++cp866;
+ else if ( uni==0xbd )
+ ++cp869;
+ else if ( uni==0x221A )
+ has_radical=true;
+ else if ( uni==0x2211 )
+ has_summation=true;
+ }
+ ++k;
+ } while ( k<sf->subfontcnt );
+ if ( cp852 && has_lineart )
+ CodePage[1] |= 1<<26; /* latin2 */
+ if ( cp775 && has_lineart )
+ CodePage[1] |= 1<<27; /* baltic */
+ if ( cp861 && has_lineart )
+ CodePage[1] |= 1<<22; /* MS-DOS Icelandic */
+ if ( cp866==2 && has_lineart )
+ CodePage[1] |= 1<<17; /* MS DOS Russian */
+ if ( cp855==2 && has_lineart )
+ CodePage[1] |= 1<<25; /* IBM Cyrillic */
+ if ( cp869==2 && has_lineart )
+ CodePage[1] |= 1<<16; /* IBM Greek */
+ if ( cp737 && has_lineart && has_radical )
+ CodePage[1] |= 1<<28; /* Greek, former 437 G */
+ if ( cp857 && has_lineart )
+ CodePage[1] |= 1<<24; /* IBM turkish */
+ if ( cp862 && has_lineart && has_radical )
+ CodePage[1] |= 1<<21; /* hebrew */
+ if ( cp864 && has_radical )
+ CodePage[1] |= 1<<19; /* arabic */
+ if ( cp708 && has_lineart)
+ CodePage[1] |= 1<<29; /* arabic; ASMO 708 */
+ if ( cp863 && has_lineart && has_radical )
+ CodePage[1] |= 1<<20; /* MS-DOS Canadian French */
+ if ( cp865 && has_lineart && has_radical )
+ CodePage[1] |= 1<<18; /* MS-DOS Nordic */
+ if ( cp860 && has_lineart && has_radical )
+ CodePage[1] |= 1<<23; /* MS-DOS Portuguese */
+ if ( mac && has_summation )
+ CodePage[0] |= 1U<<29; /* mac roman */
+}
+
+void OS2FigureUnicodeRanges(SplineFont *sf, uint32 Ranges[4]) {
+ int i, k;
+ unsigned j;
+ SplineChar *sc;
+ SplineFont *sub;
+
+ memset(Ranges,0,4*sizeof(uint32));
+ k=0;
+ do {
+ sub = k<sf->subfontcnt? sf->subfonts[k] : sf;
+ for ( i=0; i<sub->glyphcnt; ++i ) if ( (sc = sub->glyphs[i])!=NULL ) {
+ if ( SCWorthOutputting(sc) && sc->unicodeenc!=-1 ) {
+ if ( sc->unicodeenc > 0xffff )
+ Ranges[57>>5] |= (1<<(57&31));
+ for ( j=0; j<sizeof(uniranges)/sizeof(uniranges[0]); ++j )
+ if ( sc->unicodeenc>=uniranges[j][0] &&
+ sc->unicodeenc<=uniranges[j][1] ) {
+ int bit = uniranges[j][2];
+ Ranges[bit>>5] |= (1<<(bit&31));
+ break;
+ }
+ }
+ }
+ ++k;
+ } while ( k<sf->subfontcnt );
+}
+
+static void WinBB(SplineFont *sf,uint16 *winascent,uint16 *windescent,struct alltabs *at) {
+ /* The windows ascent/descent is calculated on the ymin/max of the */
+ /* glyphs in the so called ANSI character set. I'm going to pretend */
+ /* that's Latin1 with a few additions */
+ /* Well, that's what is documented, but the documentation says contradictory */
+ /* things. I believe that winAscent should be the same as hhea.ascent */
+
+ *winascent = at->head.ymax;
+ *windescent = -at->head.ymin; /* Should be positive */
+ if ( sf->cidmaster!=NULL )
+ sf = sf->cidmaster;
+
+ if ( sf->pfminfo.winascent_add )
+ *winascent += sf->pfminfo.os2_winascent;
+ else
+ *winascent = sf->pfminfo.os2_winascent;
+ if ( sf->pfminfo.windescent_add )
+ *windescent += sf->pfminfo.os2_windescent;
+ else
+ *windescent = sf->pfminfo.os2_windescent;
+}
+
+static void redohead(struct alltabs *at);
+
+static void setos2(struct os2 *os2,struct alltabs *at, SplineFont *sf,
+ enum fontformat format) {
+ int i,cnt1,cnt2,first,last,avg1,avg2,gid;
+ char *pt;
+ static int const weightFactors[26] = { 64, 14, 27, 35, 100, 20, 14, 42, 63,
+ 3, 6, 35, 20, 56, 56, 17, 4, 49, 56, 71, 31, 10, 18, 3, 18, 2 };
+ EncMap *map;
+ SplineChar *sc;
+ int modformat = format;
+
+ os2->version = 1;
+ if ( format==ff_otf || format==ff_otfcid )
+ os2->version = 3;
+ if ( sf->use_typo_metrics || sf->weight_width_slope_only )
+ os2->version = 4;
+ if ( sf->os2_version > os2->version )
+ os2->version = sf->os2_version;
+ if (( format>=ff_ttf && format<=ff_otfdfont) && (at->gi.flags&ttf_flag_symbol))
+ modformat = ff_ttfsym;
+
+ os2->weightClass = sf->pfminfo.weight;
+ os2->widthClass = sf->pfminfo.width;
+ os2->fstype = 0x8;
+ if ( sf->pfminfo.fstype!=-1 )
+ os2->fstype = sf->pfminfo.fstype;
+ if ( !sf->pfminfo.subsuper_set )
+ SFDefaultOS2SubSuper(&sf->pfminfo,sf->ascent+sf->descent,sf->italicangle);
+ os2->ysupYSize = sf->pfminfo.os2_supysize;
+ os2->ysubXSize = sf->pfminfo.os2_subxsize;
+ os2->ysubYSize = sf->pfminfo.os2_subysize;
+ os2->ysupXSize = sf->pfminfo.os2_supxsize;
+ os2->ysubYOff = sf->pfminfo.os2_subyoff;
+ os2->ysubXOff = sf->pfminfo.os2_subxoff;
+ os2->ysupXOff = sf->pfminfo.os2_supxoff;
+ os2->ysupYOff = sf->pfminfo.os2_supyoff;
+ os2->yStrikeoutSize = sf->pfminfo.os2_strikeysize;
+ os2->yStrikeoutPos = sf->pfminfo.os2_strikeypos;
+ if ( sf->pfminfo.stylemap!=-1 ) {
+ int changed = 0;
+ os2->fsSel = sf->pfminfo.stylemap;
+ /* Make sure fsSel and macStyle don't contradict */
+ if (at->head.macstyle&1 && !(os2->fsSel&32)) {at->head.macstyle &= 0x7E; changed=1;}
+ if (at->head.macstyle&2 && !(os2->fsSel&1)) {at->head.macstyle &= 0x7D; changed=1;}
+ if (changed) redohead(at);
+ } else {
+ os2->fsSel = (at->head.macstyle&1?32:0)|(at->head.macstyle&2?1:0);
+ if ( os2->fsSel==0 && sf->pfminfo.weight==400 )
+ os2->fsSel = 64; /* Regular */
+ }
+ if ( sf->fullname!=NULL && strstrmatch(sf->fullname,"outline")!=NULL )
+ os2->fsSel |= 8;
+ if ( os2->version>=4 ) {
+ if ( strstrmatch(sf->fontname,"Obli")!=NULL ) {
+ os2->fsSel &= ~1; /* Turn off Italic */
+ os2->fsSel |= 512; /* Turn on Oblique */
+ }
+ if ( sf->use_typo_metrics )
+ os2->fsSel |= 128; /* Don't use win ascent/descent for line spacing */
+ if ( sf->weight_width_slope_only )
+ os2->fsSel |= 256;
+ }
+/* David Lemon @Adobe.COM
+1) The sTypoAscender and sTypoDescender values should sum to 2048 in
+a 2048-unit font. They indicate the position of the em square
+relative to the baseline.
+GWW: Almost, sTypoAscender-sTypoDescender == EmSize
+
+2) The usWinAscent and usWinDescent values represent the maximum
+height and depth of specific glyphs within the font, and some
+applications will treat them as the top and bottom of the font
+bounding box. (the "ANSI" glyphs)
+GWW: That's what's documented. But it means non-ANSI glyphs get clipped. So the
+docs are wrong.
+*/
+ if ( sf->pfminfo.typoascent_add )
+ os2->ascender = sf->ascent + sf->pfminfo.os2_typoascent;
+ else
+ os2->ascender = sf->pfminfo.os2_typoascent;
+ if ( sf->pfminfo.typodescent_add )
+ os2->descender = -sf->descent + sf->pfminfo.os2_typodescent; /* Should be neg */
+ else
+ os2->descender = sf->pfminfo.os2_typodescent;
+ WinBB(sf,&os2->winascent,&os2->windescent,at);
+ os2->linegap = sf->pfminfo.os2_typolinegap;
+ os2->sFamilyClass = sf->pfminfo.os2_family_class;
+
+ avg1 = avg2 = last = 0; first = 0xffff;
+ cnt1 = cnt2 = 0;
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( (sc = sf->glyphs[i])!=NULL ) {
+ if ( SCWorthOutputting(sc) && sc->unicodeenc!=-1 ) {
+ /* Don't include the dummy glyphs (.notdef, .null, etc.) they aren't */
+ /* really encoded. Don't include glyphs out of BMP, OS/2 uses shorts */
+ /* for the first/last char and can't represent them. */
+ /* If no BMP glyphs, then first should be 0xffff. If any outside */
+ /* BMP then last is 0xffff */
+ /* sc->ttf_glyph>2 is to skip the first few truetype glyphs but */
+ /* that doesn't work for cff files which only have .notdef to ignore */
+ if ( ( format>=ff_ttf && format<=ff_otfdfont && sc->ttf_glyph>2) ||
+ ( format>=ff_ttf && format<=ff_otfdfont && sc->ttf_glyph>0) ) {
+ if ( sc->unicodeenc<=0xffff ) {
+ if ( sc->unicodeenc<first ) first = sc->unicodeenc;
+ if ( sc->unicodeenc>last ) last = sc->unicodeenc;
+ } else {
+ last = 0xffff;
+ }
+ }
+ if ( sc->width!=0 ) {
+ avg2 += sc->width; ++cnt2;
+ }
+ if ( sc->unicodeenc==' ') {
+ avg1 += sc->width * 166; ++cnt1;
+ } else if (sc->unicodeenc>='a' && sc->unicodeenc<='z') {
+ avg1 += sc->width * weightFactors[sc->unicodeenc-'a']; ++cnt1;
+ }
+ }
+ }
+ if ( sf->pfminfo.hasunicoderanges )
+ memcpy(os2->unicoderange,sf->pfminfo.unicoderanges,sizeof(os2->unicoderange));
+ else
+ OS2FigureUnicodeRanges(sf,os2->unicoderange);
+ if ( modformat==ff_ttfsym ) /* MS Symbol font has this set to zero. Does it matter? */
+ memset(os2->unicoderange,0,sizeof(os2->unicoderange));
+
+ if ( sf->pfminfo.pfmset )
+ strncpy(os2->achVendID,sf->pfminfo.os2_vendor,4);
+ else if ( TTFFoundry!=NULL )
+ strncpy(os2->achVendID,TTFFoundry,4);
+ else
+ memcpy(os2->achVendID,"PfEd",4);
+ for ( pt=os2->achVendID; pt<os2->achVendID && *pt!='\0'; ++pt );
+ while ( pt<os2->achVendID ) *pt++ = ' '; /* Pad with spaces not NUL */
+
+ /* v1,2 & v3,4 have different ways of calculating avgCharWid. */
+ /* but I'm told that using the v3 way breaks display of CJK fonts in windows */
+ os2->avgCharWid = 500;
+ os2->v1_avgCharWid = os2->v3_avgCharWid = 0;
+ if ( cnt1==27 )
+ os2->v1_avgCharWid = avg1/1000;
+ if ( cnt2!=0 )
+ os2->v3_avgCharWid = avg2/cnt2;
+ memcpy(os2->panose,sf->pfminfo.panose,sizeof(os2->panose));
+ map = at->map;
+ if ( modformat==ff_ttfsym ) {
+ if ( sf->pfminfo.hascodepages )
+ memcpy(os2->ulCodePage,sf->pfminfo.codepages,sizeof(os2->ulCodePage));
+ else {
+ os2->ulCodePage[0] = 0x80000000;
+ os2->ulCodePage[1] = 0;
+ }
+ if ( AlreadyMSSymbolArea(sf,map)) {
+ first = 0xf0ff; last = 0;
+ for ( i=0xf020; i<map->enccount && i<=0xf0ff; ++i )
+ if ( (gid=map->map[i])!=-1 && sf->glyphs[gid]!=NULL &&
+ sf->glyphs[gid]->ttf_glyph!=-1 ) {
+ if ( i<first ) first = i;
+ if ( i>last ) last = i;
+ }
+ for ( i=0; i<map->enccount && i<=255; ++i )
+ if ( (gid=map->map[i])!=-1 && sf->glyphs[gid]!=NULL &&
+ sf->glyphs[gid]->ttf_glyph!=-1 ) {
+ if ( i+0xf000<first ) first = i+0xf000;
+ if ( i+0xf000>last ) last = i+0xf000;
+ }
+ os2->firstcharindex = first; /* This gets mapped to space */
+ os2->lastcharindex = last;
+ } else {
+ first = 255; last = 0;
+ for ( i=0; i<map->enccount && i<=255; ++i )
+ if ( (gid=map->map[i])!=-1 && sf->glyphs[gid]!=NULL &&
+ sf->glyphs[gid]->ttf_glyph!=-1 ) {
+ if ( i<first ) first = i;
+ if ( i>last ) last = i;
+ }
+ for ( i=0xf020; i<map->enccount && i<=0xf0ff; ++i )
+ if ( (gid=map->map[i])!=-1 && sf->glyphs[gid]!=NULL &&
+ sf->glyphs[gid]->ttf_glyph!=-1 ) {
+ if ( i-0xf000<first ) first = i-0xf000;
+ if ( i-0xf000>last ) last = i-0xf000;
+ }
+ if ( first<' ' ) first = ' ';
+ os2->firstcharindex = 0xf000 + first; /* This gets mapped to space */
+ os2->lastcharindex = 0xf000 + last;
+ }
+ } else {
+ os2->firstcharindex = first;
+ os2->lastcharindex = last;
+ if ( sf->pfminfo.hascodepages )
+ memcpy(os2->ulCodePage,sf->pfminfo.codepages,sizeof(os2->ulCodePage));
+ else
+ OS2FigureCodePages(sf, os2->ulCodePage);
+ /* Herbert Duerr: */
+ /* Some old versions of Windows do not provide access to all */
+ /* glyphs in a font if the fonts contains non-PUA symbols */
+ /* and thus only has sets the codepage flag for symbol */
+ /* => a workaround for this problem on Windows legacy versions */
+ /* is to use an OS2-table version without codepage flags */
+ /* GWW: */
+ /* This sounds to me like a windows bug rather than one in ff */
+ /* and this is a work-around for windows. As far as I can tell */
+ /* ff is setting the codepage field properly, it's just that */
+ /* windows doesn't interpret that bit correctly */
+ /* GWW: Things get worse. Windows no longer accepts a version 0 */
+ /* for OS/2. FontLab simply lies and says we have a latin1 */
+ /* code page when we don't. */
+ if( !sf->pfminfo.hascodepages )
+ if( (os2->ulCodePage[0]&~(1U<<31))==0 && os2->ulCodePage[1]==0 )
+ os2->ulCodePage[0] |= 1;
+ }
+
+ if ( os2->version>=2 ) {
+ if ( sf->pfminfo.os2_xheight!=0 )
+ os2->xHeight = sf->pfminfo.os2_xheight;
+ else {
+ double xh = SFXHeight(sf,at->gi.layer,true);
+ os2->xHeight = (xh >= 0.0 ? xh : 0);
+ }
+ if ( sf->pfminfo.os2_capheight!=0 )
+ os2->capHeight = sf->pfminfo.os2_capheight;
+ else {
+ double caph = SFCapHeight(sf,at->gi.layer,true);
+ os2->capHeight = (caph >= 0.0 ? caph : 0);
+ }
+ os2->defChar = 0;
+ if ( format==ff_otf || format==ff_otfcid )
+ os2->defChar = ' ';
+ os2->breakChar = ' ';
+ os2->maxContext = 1; /* Kerning will set this to 2, ligature to whatever */
+ }
+
+ if ( os2->version>=3 && os2->v3_avgCharWid!=0 )
+ os2->avgCharWid = os2->v3_avgCharWid;
+ else if ( os2->v1_avgCharWid!=0 )
+ os2->avgCharWid = os2->v1_avgCharWid;
+ else if ( os2->v3_avgCharWid!=0 )
+ os2->avgCharWid = os2->v3_avgCharWid;
+}
+
+static void redoloca(struct alltabs *at) {
+ int i;
+
+ at->loca = tmpfile2();
+ if ( at->head.locais32 ) {
+ for ( i=0; i<=at->maxp.numGlyphs; ++i )
+ putlong(at->loca,at->gi.loca[i]);
+ at->localen = sizeof(int32)*(at->maxp.numGlyphs+1);
+ } else {
+ for ( i=0; i<=at->maxp.numGlyphs; ++i )
+ putshort(at->loca,at->gi.loca[i]/2);
+ at->localen = sizeof(int16)*(at->maxp.numGlyphs+1);
+ if ( ftell(at->loca)&2 )
+ putshort(at->loca,0);
+ }
+ if ( at->format!=ff_type42 && at->format!=ff_type42cid ) {
+ free(at->gi.loca);
+ at->gi.loca = NULL;
+ }
+}
+
+static void dummyloca(struct alltabs *at) {
+
+ at->loca = tmpfile2();
+ if ( at->head.locais32 ) {
+ putlong(at->loca,0);
+ at->localen = sizeof(int32);
+ } else {
+ putshort(at->loca,0);
+ at->localen = sizeof(int16);
+ putshort(at->loca,0); /* pad it */
+ }
+}
+
+static void redohead(struct alltabs *at) {
+ at->headf = tmpfile2();
+
+ putlong(at->headf,at->head.version);
+ putlong(at->headf,at->head.revision);
+ putlong(at->headf,at->head.checksumAdj);
+ putlong(at->headf,at->head.magicNum);
+ putshort(at->headf,at->head.flags);
+ putshort(at->headf,at->head.emunits);
+ putlong(at->headf,at->head.createtime[1]);
+ putlong(at->headf,at->head.createtime[0]);
+ putlong(at->headf,at->head.modtime[1]);
+ putlong(at->headf,at->head.modtime[0]);
+ putshort(at->headf,at->head.xmin);
+ putshort(at->headf,at->head.ymin);
+ putshort(at->headf,at->head.xmax);
+ putshort(at->headf,at->head.ymax);
+ putshort(at->headf,at->head.macstyle);
+ putshort(at->headf,at->head.lowestreadable);
+ putshort(at->headf,at->head.dirhint);
+ putshort(at->headf,at->head.locais32);
+ putshort(at->headf,at->head.glyphformat);
+
+ at->headlen = ftell(at->headf);
+ if ( (at->headlen&2)!=0 )
+ putshort(at->headf,0);
+}
+
+static void redohhead(struct alltabs *at,int isv) {
+ int i;
+ struct hhead *head;
+ FILE *f;
+
+ if ( !isv ) {
+ f = at->hheadf = tmpfile2();
+ head = &at->hhead;
+ } else {
+ f = at->vheadf = tmpfile2();
+ head = &at->vhead;
+ }
+
+ putlong(f,head->version);
+ putshort(f,head->ascender);
+ putshort(f,head->descender);
+ putshort(f,head->linegap);
+ putshort(f,head->maxwidth);
+ putshort(f,head->minlsb);
+ putshort(f,head->minrsb);
+ putshort(f,head->maxextent);
+ putshort(f,head->caretSlopeRise);
+ putshort(f,head->caretSlopeRun);
+ for ( i=0; i<5; ++i )
+ putshort(f,head->mbz[i]);
+ putshort(f,head->metricformat);
+ putshort(f,head->numMetrics);
+
+ if ( !isv ) {
+ at->hheadlen = ftell(f);
+ if ( (at->hheadlen&2)!=0 )
+ putshort(f,0);
+ } else {
+ at->vheadlen = ftell(f);
+ if ( (at->vheadlen&2)!=0 )
+ putshort(f,0);
+ }
+}
+
+static void redomaxp(struct alltabs *at,enum fontformat format) {
+ at->maxpf = tmpfile2();
+
+ putlong(at->maxpf,at->maxp.version);
+ putshort(at->maxpf,at->maxp.numGlyphs);
+ if ( format!=ff_otf && format!=ff_otfcid ) {
+ putshort(at->maxpf,at->maxp.maxPoints);
+ putshort(at->maxpf,at->maxp.maxContours);
+ putshort(at->maxpf,at->maxp.maxCompositPts);
+ putshort(at->maxpf,at->maxp.maxCompositCtrs);
+ putshort(at->maxpf,at->maxp.maxZones);
+ putshort(at->maxpf,at->maxp.maxTwilightPts);
+ putshort(at->maxpf,at->maxp.maxStorage);
+ putshort(at->maxpf,at->maxp.maxFDEFs);
+ putshort(at->maxpf,at->maxp.maxIDEFs);
+ putshort(at->maxpf,at->maxp.maxStack);
+ putshort(at->maxpf,at->maxp.maxglyphInstr);
+ putshort(at->maxpf,at->maxp.maxnumcomponents);
+ putshort(at->maxpf,at->maxp.maxcomponentdepth);
+ }
+
+ at->maxplen = ftell(at->maxpf);
+ if ( (at->maxplen&2)!=0 )
+ putshort(at->maxpf,0);
+}
+
+static void redoos2(struct alltabs *at) {
+ int i;
+ at->os2f = tmpfile2();
+
+ putshort(at->os2f,at->os2.version);
+ putshort(at->os2f,at->os2.avgCharWid);
+ putshort(at->os2f,at->os2.weightClass);
+ putshort(at->os2f,at->os2.widthClass);
+ putshort(at->os2f,at->os2.fstype);
+ putshort(at->os2f,at->os2.ysubXSize);
+ putshort(at->os2f,at->os2.ysubYSize);
+ putshort(at->os2f,at->os2.ysubXOff);
+ putshort(at->os2f,at->os2.ysubYOff);
+ putshort(at->os2f,at->os2.ysupXSize);
+ putshort(at->os2f,at->os2.ysupYSize);
+ putshort(at->os2f,at->os2.ysupXOff);
+ putshort(at->os2f,at->os2.ysupYOff);
+ putshort(at->os2f,at->os2.yStrikeoutSize);
+ putshort(at->os2f,at->os2.yStrikeoutPos);
+ putshort(at->os2f,at->os2.sFamilyClass);
+ for ( i=0; i<10; ++i )
+ putc(at->os2.panose[i],at->os2f);
+ for ( i=0; i<4; ++i )
+ putlong(at->os2f,at->os2.unicoderange[i]);
+ for ( i=0; i<4; ++i )
+ putc(at->os2.achVendID[i],at->os2f);
+ putshort(at->os2f,at->os2.fsSel);
+ putshort(at->os2f,at->os2.firstcharindex);
+ putshort(at->os2f,at->os2.lastcharindex);
+ putshort(at->os2f,at->os2.ascender);
+ putshort(at->os2f,at->os2.descender);
+ putshort(at->os2f,at->os2.linegap);
+ putshort(at->os2f,at->os2.winascent);
+ putshort(at->os2f,at->os2.windescent);
+ if ( at->os2.version>=1 ) {
+ putlong(at->os2f,at->os2.ulCodePage[0]);
+ putlong(at->os2f,at->os2.ulCodePage[1]);
+ }
+
+ if ( at->os2.version>=2 ) {
+ putshort(at->os2f,at->os2.xHeight);
+ putshort(at->os2f,at->os2.capHeight);
+ putshort(at->os2f,at->os2.defChar);
+ putshort(at->os2f,at->os2.breakChar);
+ putshort(at->os2f,at->os2.maxContext);
+ }
+
+ at->os2len = ftell(at->os2f);
+ if ( (at->os2len&2)!=0 )
+ putshort(at->os2f,0);
+}
+
+static void dumpgasp(struct alltabs *at, SplineFont *sf) {
+ int i;
+
+ at->gaspf = tmpfile2();
+ if ( sf->gasp_cnt==0 ) {
+ putshort(at->gaspf,0); /* Old version number */
+ /* For fonts with no instructions always dump a gasp table which */
+ /* asks for grey and no grid fit */
+ putshort(at->gaspf,1);
+ putshort(at->gaspf,0xffff); /* Upper bound on pixels/em for this range */
+ putshort(at->gaspf,0x2); /* Grey scale, no gridfitting */
+ /* No hints, so no grids to fit */
+ } else {
+ putshort(at->gaspf,sf->gasp_version); /* New version number, with clear type info */
+ putshort(at->gaspf,sf->gasp_cnt);
+ for ( i=0; i<sf->gasp_cnt; ++i ) {
+ putshort(at->gaspf,sf->gasp[i].ppem);
+ putshort(at->gaspf,sf->gasp[i].flags);
+ }
+ }
+ at->gasplen = ftell(at->gaspf);
+ /* This table is always 32 bit aligned */
+}
+
+static void dumpstr(FILE *file,char *str) {
+ do {
+ putc(*str,file);
+ } while ( *str++!='\0' );
+}
+
+static void dumpustr(FILE *file,char *utf8_str) {
+ unichar_t *ustr = utf82u_copy(utf8_str), *pt=ustr;
+ do {
+ putc(*pt>>8,file);
+ putc(*pt&0xff,file);
+ } while ( *pt++!='\0' );
+ free(ustr);
+}
+
+static void dumppstr(FILE *file,const char *str) {
+ putc(strlen(str),file);
+ fwrite(str,sizeof(char),strlen(str),file);
+}
+
+char *utf8_verify_copy(const char *str) {
+ /* When given a postscript string it SHOULD be in ASCII. But it will often*/
+ /* contain a copyright symbol (sometimes in latin1, sometimes in macroman)*/
+ /* unfortunately both encodings use 0xa9 for copyright so we can't distinguish */
+ /* guess that it's latin1 (or that copyright is the only odd char which */
+ /* means a latin1 conversion will work for macs too). */
+
+ if ( str==NULL )
+return( NULL );
+
+ if ( utf8_valid(str))
+return( copy(str)); /* Either in ASCII (good) or appears to be utf8*/
+return( latin1_2_utf8_copy(str));
+}
+
+/* Oh. If the encoding is symbol (platform=3, specific=0) then Windows won't */
+/* accept the font unless the name table also has entries for (3,0). I'm not */
+/* sure if this is the case for the CJK encodings (docs don't mention that) */
+/* but let's do it just in case */
+void DefaultTTFEnglishNames(struct ttflangname *dummy, SplineFont *sf) {
+ time_t now;
+ struct tm *tm;
+ char buffer[200];
+
+ if ( dummy->names[ttf_copyright]==NULL || *dummy->names[ttf_copyright]=='\0' )
+ dummy->names[ttf_copyright] = utf8_verify_copy(sf->copyright);
+ if ( dummy->names[ttf_family]==NULL || *dummy->names[ttf_family]=='\0' )
+ dummy->names[ttf_family] = utf8_verify_copy(sf->familyname);
+ if ( dummy->names[ttf_subfamily]==NULL || *dummy->names[ttf_subfamily]=='\0' )
+ dummy->names[ttf_subfamily] = utf8_verify_copy(SFGetModifiers(sf));
+ if ( dummy->names[ttf_uniqueid]==NULL || *dummy->names[ttf_uniqueid]=='\0' ) {
+ time(&now);
+ tm = localtime(&now);
+ sprintf( buffer, "%s : %s : %d-%d-%d",
+ TTFFoundry?TTFFoundry:"FontForge 2.0",
+ sf->fullname!=NULL?sf->fullname:sf->fontname,
+ tm->tm_mday, tm->tm_mon+1, tm->tm_year+1900 );
+ dummy->names[ttf_uniqueid] = copy(buffer);
+ }
+ if ( dummy->names[ttf_fullname]==NULL || *dummy->names[ttf_fullname]=='\0' )
+ dummy->names[ttf_fullname] = utf8_verify_copy(sf->fullname);
+ if ( dummy->names[ttf_version]==NULL || *dummy->names[ttf_version]=='\0' ) {
+ if ( sf->subfontcnt!=0 )
+ sprintf( buffer, "Version %f ", (double)sf->cidversion );
+ else if ( sf->version!=NULL )
+ sprintf(buffer,"Version %.20s ", sf->version);
+ else
+ strcpy(buffer,"Version 1.0" );
+ dummy->names[ttf_version] = copy(buffer);
+ }
+ if ( dummy->names[ttf_postscriptname]==NULL || *dummy->names[ttf_postscriptname]=='\0' )
+ dummy->names[ttf_postscriptname] = utf8_verify_copy(sf->fontname);
+}
+
+typedef struct {
+ uint16 platform;
+ uint16 specific;
+ uint16 lang;
+ uint16 strid;
+ uint16 len;
+ uint16 offset;
+} NameEntry;
+
+typedef struct {
+ FILE *strings;
+ int cur, max;
+ enum fontformat format;
+ Encoding *encoding_name;
+ NameEntry *entries;
+ int applemode;
+} NamTab;
+
+static int compare_entry(const void *_mn1, const void *_mn2) {
+ const NameEntry *mn1 = _mn1, *mn2 = _mn2;
+
+ if ( mn1->platform!=mn2->platform )
+return( mn1->platform - mn2->platform );
+ if ( mn1->specific!=mn2->specific )
+return( mn1->specific - mn2->specific );
+ if ( mn1->lang!=mn2->lang )
+return( mn1->lang - mn2->lang );
+
+return( mn1->strid-mn2->strid );
+}
+
+static void AddEncodedName(NamTab *nt,char *utf8name,uint16 lang,uint16 strid) {
+ NameEntry *ne;
+ int maclang, macenc= -1, specific;
+ char *macname = NULL;
+
+ if ( strid==ttf_postscriptname && lang!=0x409 )
+return; /* Should not happen, but it did */
+
+ if ( nt->cur+6>=nt->max ) {
+ if ( nt->cur==0 )
+ nt->entries = malloc((nt->max=100)*sizeof(NameEntry));
+ else
+ nt->entries = realloc(nt->entries,(nt->max+=100)*sizeof(NameEntry));
+ }
+
+ ne = nt->entries + nt->cur;
+
+ ne->platform = 3; /* Windows */
+ ne->specific = 1; /* unicode */
+ ne->lang = lang;
+ ne->strid = strid;
+ ne->offset = ftell(nt->strings);
+ ne->len = 2*utf82u_strlen(utf8name);
+ dumpustr(nt->strings,utf8name);
+ ++ne;
+
+ if ( nt->format==ff_ttfsym ) {
+ *ne = ne[-1];
+ ne->specific = 0; /* Windows "symbol" */
+ ++ne;
+ }
+
+ maclang = WinLangToMac(lang);
+ if ( !nt->applemode && lang!=0x409 )
+ maclang = 0xffff;
+ if ( maclang!=0xffff ) {
+#ifdef FONTFORGE_CONFIG_APPLE_UNICODE_NAMES
+ if ( strid!=ttf_postscriptname ) {
+ *ne = ne[-1];
+ ne->platform = 0; /* Mac unicode */
+ ne->specific = 0; /* 3 => Unicode 2.0 semantics */ /* 0 ("default") is also a reasonable value */
+ ne->lang = maclang;
+ ++ne;
+ }
+#endif
+
+ macenc = MacEncFromMacLang(maclang);
+ macname = Utf8ToMacStr(utf8name,macenc,maclang);
+ if ( macname!=NULL ) {
+ ne->platform = 1; /* apple non-unicode encoding */
+ ne->specific = macenc; /* whatever */
+ ne->lang = maclang;
+ ne->strid = strid;
+ ne->offset = ftell(nt->strings);
+ ne->len = strlen(macname);
+ dumpstr(nt->strings,macname);
+ ++ne;
+ free(macname);
+ }
+ }
+
+ specific = nt->encoding_name->is_korean ? 5 : /* Wansung, korean */
+ nt->encoding_name->is_japanese ? 2 : /* SJIS */
+ nt->encoding_name->is_simplechinese ? 3 :/* packed gb2312, don't know the real name */
+ strmatch(nt->encoding_name->enc_name,"EUC-GB12345")==0 ? 3 :/* Lie */
+ nt->encoding_name->is_tradchinese ? 4 : /* Big5, traditional Chinese */
+ -1;
+ if ( specific != -1 ) {
+ ne->platform = 3; /* windows */
+ ne->specific = specific; /* whatever */
+ ne->lang = lang;
+ ne->strid = strid;
+ if ( macname!=NULL &&
+ (( specific== 2 && macenc==1 ) || /* Japanese */
+ ( specific== 3 && macenc==25 ) || /* simplified chinese */
+ ( specific== 4 && macenc==2 ) || /* traditional chinese */
+ ( specific== 5 && macenc==3 )) ) { /* wansung korean */
+ ne->offset = ne[-1].offset;
+ ne->len = ne[-1].len;
+ } else {
+ char *space, *out;
+ const char *encname;
+ ICONV_CONST char *in;
+ Encoding *enc;
+ size_t inlen, outlen;
+ ne->offset = ftell(nt->strings);
+ encname = nt->encoding_name->is_japanese ? "SJIS" :
+ strmatch(nt->encoding_name->enc_name,"JOHAB")==0 ? "JOHAB" :
+ nt->encoding_name->is_korean ? "EUC-KR" :
+ nt->encoding_name->is_simplechinese ? "EUC-CN" :
+ nt->encoding_name->enc_name;
+ enc = FindOrMakeEncoding(encname);
+ if ( enc==NULL )
+ --ne;
+ else {
+ unichar_t *uin = utf82u_copy(utf8name);
+ outlen = 3*strlen(utf8name)+10;
+ out = space = malloc(outlen+2);
+ in = (char *) uin; inlen = 2*u_strlen(uin);
+ iconv(enc->fromunicode,NULL,NULL,NULL,NULL); /* should not be needed, but just in case */
+ iconv(enc->fromunicode,&in,&inlen,&out,&outlen);
+ out[0] = '\0'; out[1] = '\0';
+ ne->offset = ftell(nt->strings);
+ ne->len = strlen(space);
+ dumpstr(nt->strings,space);
+ free(space); free(uin);
+ }
+ }
+ ++ne;
+ }
+ nt->cur = ne - nt->entries;
+}
+
+static void AddMacName(NamTab *nt,struct macname *mn, int strid) {
+ NameEntry *ne;
+
+ if ( nt->cur+1>=nt->max ) {
+ if ( nt->cur==0 )
+ nt->entries = malloc((nt->max=100)*sizeof(NameEntry));
+ else
+ nt->entries = realloc(nt->entries,(nt->max+=100)*sizeof(NameEntry));
+ }
+
+ ne = nt->entries + nt->cur;
+
+ ne->platform = 1; /* apple non-unicode encoding */
+ ne->specific = mn->enc; /* whatever */
+ ne->lang = mn->lang;
+ ne->strid = strid;
+ ne->offset = ftell(nt->strings);
+ ne->len = strlen(mn->name);
+ dumpstr(nt->strings,mn->name);
+
+ ++nt->cur;
+}
+
+/* There's an inconsistancy here. Apple's docs say there most be only one */
+/* nameid==6 and that name must be ascii (presumably plat=1, spec=0, lang=0) */
+/* The opentype docs say there must be two (psl=1,0,0 & psl=3,1,0x409) any */
+/* others are to be ignored */
+/* A representative from Apple says they will change their spec to accept */
+/* the opentype version, and tells me that they don't currently care */
+/* So ignore this */
+/* Undocumented fact: Windows insists on having a UniqueID string 3,1 */
+static void dumpnames(struct alltabs *at, SplineFont *sf,enum fontformat format) {
+ int i,j;
+ struct ttflangname dummy, *cur, *useng = NULL;
+ struct macname *mn;
+ struct other_names *on, *onn;
+ NamTab nt;
+ struct otfname *otfn;
+ struct otffeatname *fn;
+
+ memset(&nt,0,sizeof(nt));
+ nt.encoding_name = at->map->enc;
+ nt.format = format;
+ nt.applemode = at->applemode;
+ nt.strings = tmpfile2();
+ if (( format>=ff_ttf && format<=ff_otfdfont) && (at->gi.flags&ttf_flag_symbol))
+ nt.format = ff_ttfsym;
+
+ memset(&dummy,0,sizeof(dummy));
+ for ( cur=sf->names; cur!=NULL; cur=cur->next ) {
+ if ( cur->lang==0x409 ) {
+ dummy = *cur;
+ useng = cur;
+ break;
+ }
+ }
+ DefaultTTFEnglishNames(&dummy, sf);
+
+ for ( i=0; i<ttf_namemax; ++i ) if ( dummy.names[i]!=NULL )
+ AddEncodedName(&nt,dummy.names[i],0x409,i);
+ for ( cur=sf->names; cur!=NULL; cur=cur->next ) {
+ if ( cur->lang!=0x409 )
+ for ( i=0; i<ttf_namemax; ++i )
+ if ( cur->names[i]!=NULL )
+ AddEncodedName(&nt,cur->names[i],cur->lang,i);
+ }
+
+ /* The examples I've seen of the feature table only contain platform==mac */
+ /* so I'm not including apple unicode */
+ if ( at->feat_name!=NULL ) {
+ for ( i=0; at->feat_name[i].strid!=0; ++i ) {
+ for ( mn=at->feat_name[i].mn; mn!=NULL; mn=mn->next )
+ AddMacName(&nt,mn,at->feat_name[i].strid);
+ /* I'm not sure why I keep track of these alternates (feat_name[i].smn) */
+ /* Dumping them out is a bad idea. It might be worth */
+ /* something if we searched through the alternate sets for languages */
+ /* not found in the main set, but at the moment I don't think so */
+ /* What happens now if I do it is that I get duplicate names output. */
+ }
+ }
+ /* And the names used by the fvar table aren't mac unicode either */
+ for ( on = at->other_names; on!=NULL; on=onn ) {
+ for ( mn = on->mn; mn!=NULL ; mn = mn->next )
+ AddMacName(&nt,mn,on->strid);
+ onn = on->next;
+ chunkfree(on,sizeof(*on));
+ }
+ /* Wow, the GPOS 'size' feature uses the name table in a very mac-like way*/
+ if ( at->fontstyle_name_strid!=0 && sf->fontstyle_name!=NULL ) {
+ for ( otfn = sf->fontstyle_name; otfn!=NULL; otfn = otfn->next )
+ AddEncodedName(&nt,otfn->name,otfn->lang,at->fontstyle_name_strid);
+ }
+ /* As do some other features now */
+ for ( fn = sf->feat_names; fn!=NULL; fn=fn->next ) {
+ for ( otfn = fn->names; otfn!=NULL; otfn = otfn->next )
+ AddEncodedName(&nt,otfn->name,otfn->lang,fn->nid);
+ }
+
+ qsort(nt.entries,nt.cur,sizeof(NameEntry),compare_entry);
+
+ at->name = tmpfile2();
+ putshort(at->name,0); /* format */
+ putshort(at->name,nt.cur); /* numrec */
+ putshort(at->name,(3+nt.cur*6)*sizeof(int16)); /* offset to strings */
+
+ for ( i=0; i<nt.cur; ++i ) {
+ putshort(at->name,nt.entries[i].platform);
+ putshort(at->name,nt.entries[i].specific);
+ putshort(at->name,nt.entries[i].lang);
+ putshort(at->name,nt.entries[i].strid);
+ putshort(at->name,nt.entries[i].len);
+ putshort(at->name,nt.entries[i].offset);
+ }
+ if ( !ttfcopyfile(at->name,nt.strings,(3+nt.cur*6)*sizeof(int16),"name-data"))
+ at->error = true;
+
+ at->namelen = ftell(at->name);
+ if ( (at->namelen&3)!=0 )
+ for ( j= 4-(at->namelen&3); j>0; --j )
+ putc('\0',at->name);
+
+ for ( i=0; i<ttf_namemax; ++i )
+ if ( useng==NULL || dummy.names[i]!=useng->names[i] )
+ free( dummy.names[i]);
+ free( nt.entries );
+ free( at->feat_name );
+
+ /* Windows at one point refused to load fonts with 'name' tables bigger than 5K (decided they were insecure). */
+}
+
+static void dumppost(struct alltabs *at, SplineFont *sf, enum fontformat format) {
+ int pos, i,j, shouldbe;
+ int shorttable = (format==ff_otf || format==ff_otfcid ||
+ (at->gi.flags&ttf_flag_shortps));
+ uint32 here;
+
+ at->post = tmpfile2();
+
+ putlong(at->post,shorttable?0x00030000:0x00020000); /* formattype */
+ putfixed(at->post,sf->italicangle);
+ putshort(at->post,sf->upos-sf->uwidth/2); /* 'post' defn says top of rect, while FontInfo def says center of rect */
+ putshort(at->post,sf->uwidth);
+ putlong(at->post,at->isfixed);
+ putlong(at->post,0); /* no idea about memory */
+ putlong(at->post,0); /* no idea about memory */
+ putlong(at->post,0); /* no idea about memory */
+ putlong(at->post,0); /* no idea about memory */
+ if ( !shorttable ) {
+ here = ftell(at->post);
+ putshort(at->post,at->maxp.numGlyphs);
+
+ shouldbe = 0;
+ for ( i=0, pos=0; i<at->maxp.numGlyphs; ++i ) {
+ if ( at->gi.bygid[i]!=-1 && sf->glyphs[at->gi.bygid[i]]!=NULL ) {
+ SplineChar *sc = sf->glyphs[at->gi.bygid[i]];
+ while ( i>shouldbe ) {
+ if ( shouldbe==0 )
+ putshort(at->post,0); /* glyph 0 is named .notdef */
+ else if ( shouldbe==1 )
+ putshort(at->post,1); /* glyphs 1&2 are .null and cr */
+ else if ( shouldbe==2 )
+ putshort(at->post,2); /* or something */
+ else
+ putshort(at->post,0);
+ ++shouldbe;
+ }
+ if ( strcmp(sc->name,".notdef")==0 )
+ putshort(at->post,0);
+ else {
+ for ( j=0; j<258; ++j )
+ if ( strcmp(sc->name,ttfstandardnames[j])==0 )
+ break;
+ if ( j!=258 )
+ putshort(at->post,j);
+ else {
+ putshort(at->post,pos+258);
+ ++pos;
+ }
+ }
+ ++shouldbe;
+ }
+ }
+
+ if ( shouldbe!=at->maxp.numGlyphs ) {
+ fseek(at->post,here,SEEK_SET);
+ putshort(at->post,shouldbe);
+ fseek(at->post,0,SEEK_END);
+ }
+ if ( pos!=0 ) {
+ for ( i=0; i<at->maxp.numGlyphs; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ SplineChar *sc = sf->glyphs[at->gi.bygid[i]];
+ if ( strcmp(sc->name,".notdef")==0 )
+ /* Do Nothing */;
+ else {
+ for ( j=0; j<258; ++j )
+ if ( strcmp(sc->name,ttfstandardnames[j])==0 )
+ break;
+ if ( j!=258 )
+ /* Do Nothing */;
+ else
+ dumppstr(at->post,sc->name);
+ }
+ }
+ }
+ }
+ at->postlen = ftell(at->post);
+ if ( (at->postlen&3)!=0 )
+ for ( j= 4-(at->postlen&3); j>0; --j )
+ putc('\0',at->post);
+}
+
+static FILE *_Gen816Enc(SplineFont *sf,int *tlen,EncMap *map) {
+ int i, j, complained, pos, k, subheadindex, jj, isbig5=false;
+ uint16 table[256];
+ struct subhead subheads[128];
+ uint16 *glyphs;
+ uint16 tempglyphs[256];
+ int base, lbase, basebound, subheadcnt, planesize, plane0size;
+ int base2, base2bound;
+ FILE *sub;
+ const char *encname = map->enc->iconv_name!=NULL ? map->enc->iconv_name : map->enc->enc_name;
+
+ *tlen = 0;
+
+ base2 = -1; base2bound = -2;
+ if ( map->enc->is_tradchinese && strstrmatch(encname,"hkscs")!=NULL ) {
+ base = 0x81;
+ basebound = 0xfe;
+ subheadcnt = basebound-base+1;
+ lbase = 0x40;
+ planesize = 191;
+ } else if ( map->enc->is_tradchinese || sf->uni_interp==ui_trad_chinese) {
+ base = 0xa1;
+ basebound = 0xf9; /* wcl-02.ttf's cmap claims to go up to fc, but everything after f9 is invalid (according to what I know of big5, f9 should be the end) */
+ subheadcnt = basebound-base+1;
+ lbase = 0x40;
+ planesize = 191;
+ isbig5 = true;
+ } else if ( strstrmatch(encname,"euc")!=NULL ) {
+ base = 0xa1;
+ basebound = 0xfd;
+ lbase = 0xa1;
+ subheadcnt = basebound-base+1;
+ planesize = 0xfe - lbase +1;
+ } else if ( strstrmatch(encname,"johab")!=NULL ) {
+ base = 0x84;
+ basebound = 0xf9;
+ lbase = 0x31;
+ subheadcnt = basebound-base+1;
+ planesize = 0xfe -0x31+1; /* Stupid gcc bug, thinks 0xfe- is ambiguous (exponant) */
+ } else if ( strstrmatch(encname,"sjis")!=NULL || strstrmatch(encname,"cp932")!=NULL ) {
+ base = 129;
+ basebound = 159;
+ lbase = 64;
+ planesize = 252 - lbase +1;
+ base2 = 0xe0;
+ /* SJIS supports "user defined characters" between 0xf040 and 0xfcfc */
+ /* there probably won't be any, but allow space for them if there are*/
+ for ( base2bound=0xfc00; base2bound>0xefff; --base2bound )
+ if ( base2bound<map->enccount && map->map[base2bound]!=-1 &&
+ SCWorthOutputting(sf->glyphs[map->map[base2bound]]))
+ break;
+ base2bound >>= 8;
+ subheadcnt = basebound-base + 1 + base2bound-base2 + 1;
+ } else {
+ IError( "Unsupported 8/16 encoding %s\n", map->enc->enc_name );
+return( NULL );
+ }
+ plane0size = base2==-1? base : base2;
+ i=0;
+ if ( base2!=-1 ) {
+ for ( i=basebound; i<base2 && i<map->enccount; ++i )
+ if ( map->map[i]==-1 )
+ continue;
+ else if ( SCWorthOutputting(sf->glyphs[map->map[i]]))
+ break;
+ if ( i==base2 || i==map->enccount )
+ i = 0;
+ }
+ if ( i==0 ) {
+ for ( i=0; i<base && i<map->enccount; ++i )
+ if ( map->map[i]==-1 )
+ continue;
+ else if ( SCWorthOutputting(sf->glyphs[map->map[i]]))
+ break;
+ }
+ if ( base2!=-1 ) {
+ for ( i=base; i<=basebound && i<map->enccount; ++i )
+ if ( map->map[i]!=-1 && SCWorthOutputting(sf->glyphs[map->map[i]])) {
+ ff_post_error(_("Bad Encoding"),_("There is a single byte character (%d) using one of the slots needed for double byte characters"),i);
+ break;
+ }
+ if ( i==basebound+1 )
+ for ( i=base2; i<256 && i<map->enccount; ++i )
+ if ( map->map[i]!=-1 && SCWorthOutputting(sf->glyphs[map->map[i]])) {
+ ff_post_error(_("Bad Encoding"),_("There is a single byte character (%d) using one of the slots needed for double byte characters"),i);
+ break;
+ }
+ } else {
+ for ( i=base; i<=256 && i<map->enccount; ++i )
+ if ( map->map[i]!=-1 && SCWorthOutputting(sf->glyphs[map->map[i]])) {
+ ff_post_error(_("Bad Encoding"),_("There is a single byte character (%d) using one of the slots needed for double byte characters"),i);
+ break;
+ }
+ }
+ for ( i=256; i<(base<<8) && i<map->enccount; ++i )
+ if ( map->map[i]!=-1 && SCWorthOutputting(sf->glyphs[map->map[i]])) {
+ ff_post_error(_("Bad Encoding"),_("There is a character (%d) which cannot be encoded"),i);
+ break;
+ }
+ if ( i==(base<<8) && base2==-1 )
+ for ( i=((basebound+1)<<8); i<0x10000 && i<map->enccount; ++i )
+ if ( map->map[i]!=-1 && SCWorthOutputting(sf->glyphs[map->map[i]])) {
+ ff_post_error(_("Bad Encoding"),_("There is a character (%d) which cannot be encoded"),i);
+ break;
+ }
+
+ memset(table,'\0',sizeof(table));
+ for ( i=base; i<=basebound; ++i )
+ table[i] = 8*(i-base+1);
+ for ( i=base2; i<=base2bound; ++i )
+ table[i] = 8*(i-base2+basebound-base+1+1);
+ memset(subheads,'\0',sizeof(subheads));
+ subheads[0].first = 0; subheads[0].cnt = plane0size;
+ for ( i=1; i<subheadcnt+1; ++i ) {
+ subheads[i].first = lbase;
+ subheads[i].cnt = planesize;
+ }
+ glyphs = calloc(subheadcnt*planesize+plane0size,sizeof(uint16));
+ subheads[0].rangeoff = 0;
+ for ( i=0; i<plane0size && i<map->enccount; ++i )
+ if ( map->map[i]!=-1 && sf->glyphs[map->map[i]]!=NULL &&
+ sf->glyphs[map->map[i]]->ttf_glyph!=-1 )
+ glyphs[i] = sf->glyphs[map->map[i]]->ttf_glyph;
+
+ pos = 1;
+
+ complained = false;
+ subheadindex = 1;
+ for ( jj=0; jj<2 || (base2==-1 && jj<1); ++jj )
+ for ( j=((jj==0?base:base2)<<8); j<=((jj==0?basebound:base2bound)<<8); j+= 0x100 ) {
+ for ( i=0; i<lbase; ++i )
+ if ( !complained && map->map[i+j]!=-1 &&
+ SCWorthOutputting(sf->glyphs[map->map[i+j]])) {
+ ff_post_error(_("Bad Encoding"),_("There is a character (%d) which is not normally in the encoding"),i+j);
+ complained = true;
+ }
+ if ( isbig5 ) {
+ /* big5 has a gap here. Does johab? */
+ for ( i=0x7f; i<0xa1; ++i )
+ if ( !complained && map->map[i+j]!=-1 &&
+ SCWorthOutputting(sf->glyphs[map->map[i+j]])) {
+ ff_post_error(_("Bad Encoding"),_("There is a character (%d) which is not normally in the encoding"),i+j);
+ complained = true;
+ }
+ }
+ memset(tempglyphs,0,sizeof(tempglyphs));
+ for ( i=0; i<planesize; ++i )
+ if ( map->map[j+lbase+i]!=-1 && sf->glyphs[map->map[j+lbase+i]]!=NULL &&
+ sf->glyphs[map->map[j+lbase+i]]->ttf_glyph!=-1 )
+ tempglyphs[i] = sf->glyphs[map->map[j+lbase+i]]->ttf_glyph;
+ for ( i=1; i<pos; ++i ) {
+ int delta = 0;
+ for ( k=0; k<planesize; ++k )
+ if ( tempglyphs[k]==0 && glyphs[plane0size+(i-1)*planesize+k]==0 )
+ /* Still matches */;
+ else if ( tempglyphs[k]==0 || glyphs[plane0size+(i-1)*planesize+k]==0 )
+ break; /* Doesn't match */
+ else if ( delta==0 )
+ delta = (uint16) (tempglyphs[k]-glyphs[plane0size+(i-1)*planesize+k]);
+ else if ( tempglyphs[k]==(uint16) (glyphs[plane0size+(i-1)*planesize+k]+delta) )
+ /* Still matches */;
+ else
+ break;
+ if ( k==planesize ) {
+ subheads[subheadindex].delta = delta;
+ subheads[subheadindex].rangeoff = plane0size+(i-1)*planesize;
+ break;
+ }
+ }
+ if ( subheads[subheadindex].rangeoff==0 ) {
+ memcpy(glyphs+(pos-1)*planesize+plane0size,tempglyphs,planesize*sizeof(uint16));
+ subheads[subheadindex].rangeoff = plane0size+(pos++-1)*planesize ;
+ }
+ ++subheadindex;
+ }
+
+ /* fixup offsets */
+ /* my rangeoffsets are indexes into the glyph array. That's nice and */
+ /* simple. Unfortunately ttf says they are offsets from the current */
+ /* location in the file (sort of) so we now fix them up. */
+ for ( i=0; i<subheadcnt+1; ++i )
+ subheads[i].rangeoff = subheads[i].rangeoff*sizeof(uint16) +
+ (subheadcnt-i)*sizeof(struct subhead) + sizeof(uint16);
+
+ sub = tmpfile2();
+ if ( sub==NULL )
+return( NULL );
+
+ putshort(sub,2); /* 8/16 format */
+ putshort(sub,0); /* Subtable length, we'll come back and fix this */
+ putshort(sub,0); /* version/language, not meaningful in ms systems */
+ for ( i=0; i<256; ++i )
+ putshort(sub,table[i]);
+ for ( i=0; i<subheadcnt+1; ++i ) {
+ putshort(sub,subheads[i].first);
+ putshort(sub,subheads[i].cnt);
+ putshort(sub,subheads[i].delta);
+ putshort(sub,subheads[i].rangeoff);
+ }
+ for ( i=0; i<(pos-1)*planesize+plane0size; ++i )
+ putshort(sub,glyphs[i]);
+ free(glyphs);
+
+ *tlen = ftell(sub);
+ fseek(sub,2,SEEK_SET);
+ putshort(sub,*tlen); /* Length, I said we'd come back to it */
+ rewind( sub );
+return( sub );
+}
+
+static FILE *Needs816Enc(SplineFont *sf,int *tlen,EncMap *map, FILE **apple, int *appletlen) {
+ FILE *sub;
+ const char *encname = map->enc->iconv_name!=NULL ? map->enc->iconv_name : map->enc->enc_name;
+ EncMap *oldmap = map;
+ EncMap *applemap = NULL;
+ Encoding *enc;
+
+ *tlen = 0;
+ if ( apple!=NULL ) {
+ *apple = NULL;
+ *appletlen = 0;
+ }
+ if ( sf->cidmaster!=NULL || sf->subfontcnt!=0 )
+return( NULL );
+ if ( (strstrmatch(encname,"big")!=NULL && strchr(encname,'5')!=NULL) ||
+ strstrmatch(encname,"johab")!=NULL ||
+ strstrmatch(encname,"sjis")!=NULL ||
+ strstrmatch(encname,"cp932")!=NULL ||
+ strstrmatch(encname,"euc-kr")!=NULL ||
+ strstrmatch(encname,"euc-cn")!=NULL )
+ /* Already properly encoded */;
+ else if ( strstrmatch(encname,"2022")!=NULL &&
+ (strstrmatch(encname,"JP2")!=NULL ||
+ strstrmatch(encname,"JP-2")!=NULL ||
+ strstrmatch(encname,"JP-3")!=NULL ))
+return( NULL ); /* No 8/16 encoding for JP2 nor JP3 */
+ else if ( sf->uni_interp>=ui_japanese && sf->uni_interp<=ui_korean ) {
+ enc = FindOrMakeEncoding(
+ sf->uni_interp==ui_japanese ? "sjis" :
+ sf->uni_interp==ui_trad_chinese ? "big5" :
+ sf->uni_interp==ui_simp_chinese ? "euc-cn" :
+ "euc-kr");
+ if ( map->enc!=enc ) {
+ map = EncMapFromEncoding(sf,enc);
+ encname = map->enc->iconv_name!=NULL ? map->enc->iconv_name : map->enc->enc_name;
+ }
+ } else
+return( NULL );
+
+ /* Both MS and Apple extend sjis. I don't know how to get iconv to give me*/
+ /* apple's encoding though. So I generate one 8/16 table for MS based on */
+ /* their extension (cp932), and another table based on plain sjis for Apple*/
+ /* Don't know if this is true of other cjk encodings... for the moment I */
+ /* will just use standard encodings for them */
+ if ( strstrmatch(encname,"sjis")!=NULL ) {
+ enc = FindOrMakeEncoding("cp932");
+ if ( enc!=NULL ) {
+ applemap = map;
+ map = EncMapFromEncoding(sf,enc);
+ }
+ } else if ( strstrmatch(encname,"cp932")!=NULL )
+ applemap = EncMapFromEncoding(sf,FindOrMakeEncoding("sjis"));
+
+ if ( applemap!=NULL )
+ *apple = _Gen816Enc(sf,appletlen,applemap);
+ sub = _Gen816Enc(sf,tlen,map);
+
+ if ( applemap!=NULL && applemap!=oldmap )
+ EncMapFree(applemap);
+ if ( map!=oldmap )
+ EncMapFree(map);
+return( sub );
+}
+
+static FILE *NeedsUCS4Table(SplineFont *sf,int *ucs4len,EncMap *map) {
+ int i=0,j,group;
+ FILE *format12;
+ SplineChar *sc;
+ EncMap *freeme = NULL;
+ struct altuni *altuni;
+
+ if ( map->enc->is_unicodefull )
+ i=0x10000;
+ else if ( map->enc->is_custom )
+ i = 0;
+ else
+ i = map->enc->char_cnt;
+ for ( ; i<map->enccount; ++i ) {
+ if ( map->map[i]!=-1 && SCWorthOutputting(sf->glyphs[map->map[i]]) ) {
+ if ( sf->glyphs[map->map[i]]->unicodeenc>=0x10000 )
+ break;
+ for ( altuni=sf->glyphs[map->map[i]]->altuni; altuni!=NULL && (altuni->unienc<0x10000 || altuni->vs!=-1 || altuni->fid!=0);
+ altuni=altuni->next );
+ if ( altuni!=NULL )
+ break;
+ }
+ }
+
+ if ( i>=map->enccount )
+return(NULL);
+
+ if ( !map->enc->is_unicodefull )
+ map = freeme = EncMapFromEncoding(sf,FindOrMakeEncoding("ucs4"));
+
+ format12 = tmpfile2();
+ if ( format12==NULL )
+return( NULL );
+
+ putshort(format12,12); /* Subtable format */
+ putshort(format12,0); /* padding */
+ putlong(format12,0); /* Length, we'll come back to this */
+ putlong(format12,0); /* language */
+ putlong(format12,0); /* Number of groups, we'll come back to this */
+
+ group = 0;
+ for ( i=0; i<map->enccount; ++i ) if ( map->map[i]!=-1 && SCWorthOutputting(sf->glyphs[map->map[i]]) && sf->glyphs[map->map[i]]->unicodeenc!=-1 ) {
+ sc = sf->glyphs[map->map[i]];
+ for ( j=i+1; j<map->enccount && map->map[j]!=-1 &&
+ SCWorthOutputting(sf->glyphs[map->map[j]]) &&
+ sf->glyphs[map->map[j]]->unicodeenc!=-1 &&
+ sf->glyphs[map->map[j]]->ttf_glyph==sc->ttf_glyph+j-i; ++j );
+ --j;
+ putlong(format12,i); /* start char code */
+ putlong(format12,j); /* end char code */
+ putlong(format12,sc->ttf_glyph);
+ ++group;
+ i=j; /* move to the start of the next group */
+ }
+ *ucs4len = ftell(format12);
+ fseek(format12,4,SEEK_SET);
+ putlong(format12,*ucs4len); /* Length, I said we'd come back to it */
+ putlong(format12,0); /* language */
+ putlong(format12,group); /* Number of groups */
+ rewind( format12 );
+
+ if ( freeme!=NULL )
+ EncMapFree(freeme);
+return( format12 );
+}
+
+static FILE *NeedsUCS2Table(SplineFont *sf,int *ucs2len,EncMap *map,int issymbol) {
+ /* We always want a format 4 2byte unicode encoding map */
+ /* But if it's symbol, only include encodings 0xff20 - 0xffff */
+ uint32 *avail = malloc(65536*sizeof(uint32));
+ int i,j,l;
+ int segcnt, cnt=0, delta, rpos;
+ struct cmapseg { uint16 start, end; uint16 delta; uint16 rangeoff; } *cmapseg;
+ uint16 *ranges;
+ SplineChar *sc;
+ FILE *format4 = tmpfile2();
+
+ memset(avail,0xff,65536*sizeof(uint32));
+ if ( map->enc->is_unicodebmp || map->enc->is_unicodefull ) { int gid;
+ for ( i=0; i<65536 && i<map->enccount; ++i ) if ( (gid=map->map[i])!=-1 && sf->glyphs[gid]!=NULL && sf->glyphs[gid]->ttf_glyph!=-1 ) {
+ avail[i] = gid;
+ ++cnt;
+ }
+ } else {
+ struct altuni *altuni;
+ for ( i=0; i<sf->glyphcnt; ++i ) {
+ if ( (sc=sf->glyphs[i])!=NULL && sc->ttf_glyph!=-1 ) {
+ if ( sc->unicodeenc>=0 && sc->unicodeenc<=0xffff ) {
+ avail[sc->unicodeenc] = i;
+ ++cnt;
+ }
+ for ( altuni=sc->altuni; altuni!=NULL; altuni = altuni->next ) {
+ if ( altuni->unienc<=0xffff && altuni->vs==-1 && altuni->fid==0 ) {
+ avail[altuni->unienc] = i;
+ ++cnt;
+ }
+ }
+ }
+ }
+ }
+ if ( issymbol ) {
+ /* Clear out all entries we don't want */
+ memset(avail ,0xff,0xf020*sizeof(uint32));
+ memset(avail+0xf100,0xff,0x0eff*sizeof(uint32));
+ }
+
+ j = -1;
+ for ( i=segcnt=0; i<65536; ++i ) {
+ if ( avail[i]!=0xffffffff && j==-1 ) {
+ j=i;
+ ++segcnt;
+ } else if ( j!=-1 && avail[i]==0xffffffff )
+ j = -1;
+ }
+ cmapseg = calloc(segcnt+1,sizeof(struct cmapseg));
+ ranges = malloc(cnt*sizeof(int16));
+ j = -1;
+ for ( i=segcnt=0; i<65536; ++i ) {
+ if ( avail[i]!=0xffffffff && j==-1 ) {
+ j=i;
+ cmapseg[segcnt].start = j;
+ ++segcnt;
+ } else if ( j!=-1 && avail[i]==0xffffffff ) {
+ cmapseg[segcnt-1].end = i-1;
+ j = -1;
+ }
+ }
+ if ( j!=-1 )
+ cmapseg[segcnt-1].end = i-1;
+ /* create a dummy segment to mark the end of the table */
+ cmapseg[segcnt].start = cmapseg[segcnt].end = 0xffff;
+ cmapseg[segcnt++].delta = 1;
+ rpos = 0;
+ for ( i=0; i<segcnt-1; ++i ) {
+ l = avail[cmapseg[i].start];
+ sc = sf->glyphs[l];
+ delta = sc->ttf_glyph-cmapseg[i].start;
+ for ( j=cmapseg[i].start; j<=cmapseg[i].end; ++j ) {
+ l = avail[j];
+ sc = sf->glyphs[l];
+ if ( delta != sc->ttf_glyph-j )
+ break;
+ }
+ if ( j>cmapseg[i].end )
+ cmapseg[i].delta = delta;
+ else {
+ cmapseg[i].rangeoff = (rpos + (segcnt-i)) * sizeof(int16);
+ for ( j=cmapseg[i].start; j<=cmapseg[i].end; ++j ) {
+ l = avail[j];
+ sc = sf->glyphs[l];
+ ranges[rpos++] = sc->ttf_glyph;
+ }
+ }
+ }
+ free(avail);
+
+
+ putshort(format4,4); /* format */
+ putshort(format4,(8+4*segcnt+rpos)*sizeof(int16));
+ putshort(format4,0); /* language/version */
+ putshort(format4,2*segcnt); /* segcnt */
+ for ( j=0,i=1; i<=segcnt; i<<=1, ++j );
+ putshort(format4,i); /* 2*2^floor(log2(segcnt)) */
+ putshort(format4,j-1);
+ putshort(format4,2*segcnt-i);
+ for ( i=0; i<segcnt; ++i )
+ putshort(format4,cmapseg[i].end);
+ putshort(format4,0);
+ for ( i=0; i<segcnt; ++i )
+ putshort(format4,cmapseg[i].start);
+ for ( i=0; i<segcnt; ++i )
+ putshort(format4,cmapseg[i].delta);
+ for ( i=0; i<segcnt; ++i )
+ putshort(format4,cmapseg[i].rangeoff);
+ for ( i=0; i<rpos; ++i )
+ putshort(format4,ranges[i]);
+ free(ranges);
+ free(cmapseg);
+ *ucs2len = ftell(format4);
+return( format4 );
+}
+
+static FILE *NeedsVariationSequenceTable(SplineFont *sf,int *vslen) {
+ /* Do we need a format 14 (unicode variation sequence) subtable? */
+ int gid, vs_cnt=0, vs_max=512, i, j, k, cnt, mingid, maxgid;
+ struct altuni *altuni, *au;
+ int32 vsbuf[512], *vses = vsbuf;
+ FILE *format14;
+ uint32 *avail = NULL;
+ enum vs_type {vs_default=(1<<24), vs_nondefault=(2<<24) };
+ SplineChar *sc;
+ uint32 here;
+ int any;
+
+ mingid = maxgid = -1;
+ for ( gid=0; gid<sf->glyphcnt; ++gid ) if ( (sc = sf->glyphs[gid])!=NULL ) {
+ for ( altuni = sc->altuni; altuni!=NULL; altuni=altuni->next ) {
+ if ( altuni->unienc!=-1 && (uint32)altuni->unienc<unicode4_size &&
+ altuni->vs!=-1 && altuni->fid==0 ) {
+ for ( i=0; i<vs_cnt; ++i )
+ if ( vses[i]==altuni->vs )
+ break;
+ if ( i>=vs_cnt ) {
+ if ( i>=vs_max ) {
+ if ( vses==vsbuf ) {
+ vses = malloc((vs_max*=2)*sizeof(uint32));
+ memcpy(vses,vsbuf,sizeof(vsbuf));
+ } else
+ vses = realloc(vses,(vs_max+=512)*sizeof(uint32));
+ }
+ vses[vs_cnt++] = altuni->vs;
+ }
+ if ( mingid==-1 )
+ mingid = maxgid = gid;
+ else
+ maxgid = gid;
+ }
+ }
+ }
+ if ( vs_cnt==0 ) {
+ *vslen = 0;
+return( NULL ); /* No variation selectors */
+ }
+
+ /* Sort the variation selectors */
+ for ( i=0; i<vs_cnt; ++i ) for ( j=i+1; j<vs_cnt; ++j ) {
+ if ( vses[i]>vses[j] ) {
+ int temp = vses[i];
+ vses[i] = vses[j];
+ vses[j] = temp;
+ }
+ }
+
+ avail = malloc(unicode4_size*sizeof(uint32));
+
+ format14 = tmpfile2();
+ putshort(format14,14);
+ putlong(format14,0); /* Length, fixup later */
+ putlong(format14,vs_cnt); /* number of selectors */
+
+ /* Variation selector records */
+ for ( i=0; i<vs_cnt; ++i ) {
+ putu24(format14,vses[i]);
+ putlong(format14,0);
+ putlong(format14,0);
+ }
+
+ for ( i=0; i<vs_cnt; ++i ) {
+ memset(avail,0,unicode4_size*sizeof(uint32));
+ any = 0;
+ for ( gid=mingid; gid<=maxgid; ++gid ) if ( (sc=sf->glyphs[gid])!=NULL ) {
+ for ( altuni = sc->altuni; altuni!=NULL; altuni=altuni->next ) {
+ if ( altuni->unienc!=-1 && altuni->unienc < (int)unicode4_size &&
+ altuni->vs==vses[i] && altuni->fid==0 ) {
+ for ( au=sc->altuni; au!=NULL; au=au->next )
+ if ( au->unienc==altuni->unienc && au->vs==-1 && au->fid==0 )
+ break;
+ if ( altuni->unienc==sc->unicodeenc || au!=NULL ) {
+ avail[altuni->unienc] = gid | vs_default;
+ any |= vs_default;
+ } else {
+ avail[altuni->unienc] = gid | vs_nondefault;
+ any |= vs_nondefault;
+ }
+ }
+ }
+ }
+ if ( any&vs_default ) {
+ here = ftell(format14);
+ fseek(format14,10+ i*11 + 3, SEEK_SET); /* Seek to defaultUVSOffset */
+ putlong(format14,here);
+ fseek(format14,0,SEEK_END);
+ cnt = 0;
+ for ( j=0; (unsigned)j<unicode4_size; ++j ) if ( avail[j]&vs_default ) {
+ for ( k=j+1; (unsigned)k<unicode4_size && (avail[k]&vs_default); ++k );
+ if ( k-j>256 ) k=j+256; /* Each range is limited to 255 code points, as the count is a byte */
+ ++cnt;
+ j = k-1;
+ }
+ putlong(format14,cnt);
+ for ( j=0; (unsigned)j<unicode4_size; ++j ) if ( avail[j]&vs_default ) {
+ for ( k=j+1; (unsigned)k<unicode4_size && (avail[k]&vs_default); ++k );
+ if ( k-j>256 ) k=j+256;
+ putu24(format14,j);
+ putc(k-j-1,format14);
+ j = k-1;
+ }
+ }
+ if ( any&vs_nondefault ) {
+ here = ftell(format14);
+ fseek(format14,10+ i*11 + 7, SEEK_SET); /* Seek to nonDefaultUVSOffset */
+ putlong(format14,here);
+ fseek(format14,0,SEEK_END);
+ cnt = 0;
+ for ( j=0; (unsigned)j<unicode4_size; ++j ) if ( avail[j]&vs_nondefault )
+ ++cnt;
+ putlong(format14,cnt);
+ for ( j=0; (unsigned)j<unicode4_size; ++j ) if ( avail[j]&vs_nondefault ) {
+ putu24(format14,j);
+ putshort(format14,sf->glyphs[avail[j]&0xffff]->ttf_glyph);
+ }
+ }
+ }
+
+ here = ftell(format14);
+ fseek(format14,2,SEEK_SET);
+ putlong(format14,here);
+ fseek(format14,0,SEEK_END);
+ if ( here&1 ) {
+ putc('\0',format14);
+ ++here;
+ }
+ if ( here&2 ) {
+ putshort(format14,0);
+ here += 2;
+ }
+ *vslen = here;
+
+ free(avail);
+ if ( vses!=vsbuf )
+ free(vses);
+
+return( format14 );
+}
+
+extern unichar_t MacRomanEnc[];
+static void dumpcmap(struct alltabs *at, SplineFont *sf,enum fontformat format) {
+ int i,enccnt, issmall, hasmac;
+ uint16 table[256];
+ SplineChar *sc;
+ int alreadyprivate = false;
+ int wasotf = format==ff_otf || format==ff_otfcid;
+ EncMap *map = at->map;
+ int ucs4len=0, ucs2len=0, cjklen=0, applecjklen=0, vslen=0;
+ FILE *format12, *format4, *format2, *apple2, *format14;
+ int mspos, ucs4pos, cjkpos, applecjkpos, vspos, start_of_macroman;
+ int modformat = format;
+
+ if (( format>=ff_ttf && format<=ff_otfdfont) && (at->gi.flags&ttf_flag_symbol))
+ modformat = ff_ttfsym;
+
+ at->cmap = tmpfile2();
+
+ /* MacRoman encoding table */ /* Not going to bother with making this work for cid fonts */
+ /* I now see that Apple doesn't restrict us to format 0 sub-tables (as */
+ /* the docs imply) but instead also uses format 6 tables. Wildly in- */
+ /* appropriate as they are for 2byte encodings, but Apple uses them */
+ /* for one byte ones too */
+ memset(table,'\0',sizeof(table));
+ if ( !wasotf ) {
+ table[29] = table[8] = table[0] = 1;
+ table[9] = table[13] = 2;
+ }
+ for ( i=0; i<256 ; ++i ) {
+ sc = SFGetChar(sf,MacRomanEnc[i],NULL);
+ if ( sc!=NULL && sc->ttf_glyph!=-1 )
+ table[i] = sc->ttf_glyph;
+ }
+ if ( table[0]==0 ) table[0] = 1;
+
+ if ( modformat==ff_ttfsym ) {
+ alreadyprivate = AlreadyMSSymbolArea(sf,map);
+ memset(table,'\0',sizeof(table));
+ if ( !wasotf ) {
+ table[29] = table[8] = table[0] = 1;
+ table[9] = table[13] = 2;
+ }
+ if ( !alreadyprivate ) {
+ for ( i=0; i<map->enccount && i<256; ++i ) {
+ if ( map->map[i]!=-1 && (sc = sf->glyphs[map->map[i]])!=NULL &&
+ sc->ttf_glyph!=-1 )
+ table[i] = sc->ttf_glyph;
+ }
+ for ( i=0xf020; i<=0xf0ff && i<sf->glyphcnt; ++i ) {
+ if ( map->map[i]!=-1 && (sc = sf->glyphs[map->map[i]])!=NULL &&
+ sc->ttf_glyph!=-1 && table[i-0xf000]==0 )
+ table[i-0xf000] = sc->ttf_glyph;
+ }
+ } else {
+ for ( i=0xf020; i<=0xf0ff && i<sf->glyphcnt; ++i ) {
+ if ( map->map[i]!=-1 && (sc = sf->glyphs[map->map[i]])!=NULL &&
+ sc->ttf_glyph!=-1 )
+ table[i-0xf000] = sc->ttf_glyph;
+ }
+ for ( i=0; i<map->enccount && i<256; ++i ) {
+ if ( map->map[i]!=-1 && (sc = sf->glyphs[map->map[i]])!=NULL &&
+ sc->ttf_glyph!=-1 && table[i]==0 )
+ table[i] = sc->ttf_glyph;
+ }
+ }
+ /* if the user has read in a ttf symbol file then it will already have */
+ /* the right private use encoding, and we don't want to mess it up. */
+ /* The alreadyprivate flag should detect this case */
+ if ( !alreadyprivate ) {
+ for ( i=0; i<map->enccount && i<256; ++i ) {
+ if ( map->map[i]!=-1 && (sc = sf->glyphs[map->map[i]])!=NULL ) {
+ sc->orig_pos = sc->unicodeenc;
+ sc->unicodeenc = 0xf000 + i;
+ }
+ }
+ for ( ; i<map->enccount; ++i ) {
+ if ( map->map[i]!=-1 && (sc = sf->glyphs[map->map[i]])!=NULL ) {
+ sc->orig_pos = sc->unicodeenc;
+ sc->unicodeenc = -1;
+ }
+ }
+ }
+ }
+
+ format4 = NeedsUCS2Table(sf,&ucs2len,map,modformat==ff_ttfsym);
+ apple2 = NULL;
+ if ( modformat!=ff_ttfsym ) {
+ format12 = NeedsUCS4Table(sf,&ucs4len,map);
+ format2 = Needs816Enc(sf,&cjklen,map,&apple2,&applecjklen);
+ format14 = NeedsVariationSequenceTable(sf,&vslen);
+ } else
+ format12 = format2 = format14 = apple2 = NULL;
+
+ /* Two/Three/Four encoding table pointers, one for ms, one for mac */
+ /* usually one for mac big, just a copy of ms */
+ /* plus we may have a format12 encoding for ucs4, mac doesn't support */
+ /* plus we may have a format2 encoding for cjk, sometimes I know the codes for the mac... */
+ /* sometimes the mac will have a slightly different cjk table */
+ /* Sometimes we want a variation sequence subtable (format=14) for */
+ /* unicode platform */
+ if ( modformat==ff_ttfsym ) {
+ enccnt = 2;
+ hasmac = 0;
+ } else {
+ hasmac = 1;
+ enccnt = 3;
+ if ( format12!=NULL )
+ enccnt = 5;
+ if ( format2!=NULL ) {
+ if ( strstrmatch(map->enc->enc_name,"johab")!=NULL ) {
+ ++enccnt;
+ } else {
+ enccnt+=2;
+ hasmac=3;
+ }
+ }
+ if ( format14!=NULL )
+ ++enccnt;
+ }
+
+ putshort(at->cmap,0); /* version */
+ putshort(at->cmap,enccnt); /* num tables */
+
+ mspos = 2*sizeof(uint16)+enccnt*(2*sizeof(uint16)+sizeof(uint32));
+ ucs4pos = mspos+ucs2len;
+ cjkpos = ucs4pos+ucs4len;
+ if ( apple2==NULL ) {
+ applecjkpos = cjkpos;
+ applecjklen = cjklen;
+ } else
+ applecjkpos = cjkpos + cjklen;
+ /* applecjklen set above */
+ vspos = applecjkpos + applecjklen;
+ start_of_macroman = vspos + vslen;
+
+ if ( hasmac&1 ) {
+ /* big mac table, just a copy of the ms table */
+ putshort(at->cmap,0); /* mac unicode platform */
+ putshort(at->cmap,3); /* Unicode 2.0 */
+ putlong(at->cmap,mspos);
+ }
+ if ( format12!=NULL ) {
+ /* full unicode mac table, just a copy of the ms table */
+ putshort(at->cmap,0); /* mac unicode platform */
+ if( map->enc->is_unicodefull ) {
+ putshort(at->cmap,10); /* Unicode 2.0, unicode beyond BMP */
+ } else {
+ putshort(at->cmap,4); /* Unicode 2.0, unicode BMP */
+ }
+ putlong(at->cmap,ucs4pos);
+ }
+ if ( format14!=NULL ) {
+ /* variation sequence subtable. Only for platform 0. */
+ putshort(at->cmap,0); /* mac unicode platform */
+ putshort(at->cmap,5); /* Variation sequence table */
+ putlong(at->cmap,vspos);
+ }
+ putshort(at->cmap,1); /* mac platform */
+ putshort(at->cmap,0); /* plat specific enc, script=roman */
+ /* Even the symbol font on the mac claims a mac roman encoding */
+ /* although it actually contains a symbol encoding. There is an*/
+ /* "RSymbol" language listed for Mac (specific=8) but it isn't used*/
+ putlong(at->cmap,start_of_macroman); /* offset from tab start to sub tab start */
+ if ( format2!=NULL && (hasmac&2) ) {
+ /* mac cjk table, often a copy of the ms table */
+ putshort(at->cmap,1); /* mac platform */
+ putshort(at->cmap,
+ map->enc->is_japanese || sf->uni_interp==ui_japanese ? 1 : /* SJIS */
+ map->enc->is_korean || sf->uni_interp==ui_korean ? 3 : /* Korean */
+ map->enc->is_simplechinese || sf->uni_interp==ui_simp_chinese ? 25 :/* Simplified Chinese */
+ 2 ); /* Big5 */
+ putlong(at->cmap,applecjkpos);
+ }
+
+ putshort(at->cmap,3); /* ms platform */
+ putshort(at->cmap, /* plat specific enc */
+ modformat==ff_ttfsym ? 0 : /* Symbol */
+ 1 ); /* Unicode */
+ putlong(at->cmap,mspos); /* offset from tab start to sub tab start */
+
+ if ( format2!=NULL ) {
+ putshort(at->cmap,3); /* ms platform */
+ putshort(at->cmap, /* plat specific enc */
+ strstrmatch(map->enc->enc_name,"johab")!=NULL ? 6 :
+ map->enc->is_korean || sf->uni_interp==ui_korean ? 5 :
+ map->enc->is_japanese || sf->uni_interp==ui_japanese ? 2 :
+ map->enc->is_simplechinese || sf->uni_interp==ui_simp_chinese ? 3 :
+ 4); /* Big5 */
+ putlong(at->cmap,cjkpos); /* offset from tab start to sub tab start */
+ }
+
+ if ( format12!=NULL ) {
+ putshort(at->cmap,3); /* ms platform */
+ putshort(at->cmap,10); /* plat specific enc, ucs4 */
+ putlong(at->cmap,ucs4pos); /* offset from tab start to sub tab start */
+ }
+ if ( format4!=NULL ) {
+ if ( !ttfcopyfile(at->cmap,format4,mspos,"cmap-Unicode16")) at->error = true;
+ }
+ if ( format12!=NULL ) {
+ if ( !ttfcopyfile(at->cmap,format12,ucs4pos,"cmap-Unicode32")) at->error = true;
+ }
+ if ( format2!=NULL ) {
+ if ( !ttfcopyfile(at->cmap,format2,cjkpos,"cmap-cjk")) at->error = true;
+ }
+ if ( apple2!=NULL ) {
+ if ( !ttfcopyfile(at->cmap,apple2,applecjkpos,"cmap-applecjk")) at->error = true;
+ }
+ if ( format14!=NULL ) {
+ if ( !ttfcopyfile(at->cmap,format14,vspos,"cmap-uniVariations")) at->error = true;
+ }
+
+ /* Mac table */
+ issmall = true;
+ for ( i=0; i<256; ++i )
+ if ( table[i]>=256 ) {
+ issmall = false;
+ break;
+ }
+ if ( issmall ) {
+ putshort(at->cmap,0); /* format */
+ putshort(at->cmap,262); /* length = 256bytes + 6 header bytes */
+ putshort(at->cmap,0); /* language = english */
+ for ( i=0; i<256; ++i )
+ putc(table[i],at->cmap);
+ } else {
+ putshort(at->cmap,6); /* format 6 */
+ putshort(at->cmap,522); /* length = 256short +10 header bytes */
+ putshort(at->cmap,0); /* language = english */
+ putshort(at->cmap,0); /* first code */
+ putshort(at->cmap,256); /* entry count */
+ for ( i=0; i<256; ++i )
+ putshort(at->cmap,table[i]);
+ }
+
+ at->cmaplen = ftell(at->cmap);
+ if ( (at->cmaplen&2)!=0 )
+ putshort(at->cmap,0);
+
+ if ( modformat==ff_ttfsym ) {
+ if ( !alreadyprivate ) {
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ sf->glyphs[i]->unicodeenc = sf->glyphs[i]->orig_pos;
+ sf->glyphs[i]->orig_pos = i;
+ }
+ }
+ }
+}
+
+int32 filechecksum(FILE *file) {
+ uint32 sum = 0, chunk;
+
+ rewind(file);
+ while ( 1 ) {
+ chunk = getuint32(file);
+ if ( feof(file) || ferror(file))
+ break;
+ sum += chunk;
+ }
+return( sum );
+}
+
+static void AbortTTF(struct alltabs *at, SplineFont *sf) {
+ int i;
+
+ if ( at->loca!=NULL )
+ fclose(at->loca);
+ if ( at->name!=NULL )
+ fclose(at->name);
+ if ( at->post!=NULL )
+ fclose(at->post);
+ if ( at->gpos!=NULL )
+ fclose(at->gpos);
+ if ( at->gsub!=NULL )
+ fclose(at->gsub);
+ if ( at->gdef!=NULL )
+ fclose(at->gdef);
+ if ( at->kern!=NULL )
+ fclose(at->kern);
+ if ( at->cmap!=NULL )
+ fclose(at->cmap);
+ if ( at->headf!=NULL )
+ fclose(at->headf);
+ if ( at->hheadf!=NULL )
+ fclose(at->hheadf);
+ if ( at->maxpf!=NULL )
+ fclose(at->maxpf);
+ if ( at->os2f!=NULL )
+ fclose(at->os2f);
+ if ( at->cvtf!=NULL )
+ fclose(at->cvtf);
+ if ( at->vheadf!=NULL )
+ fclose(at->vheadf);
+ if ( at->vorgf!=NULL )
+ fclose(at->vorgf);
+ if ( at->cfff!=NULL )
+ fclose(at->cfff);
+
+ if ( at->gi.glyphs!=NULL )
+ fclose(at->gi.glyphs);
+ if ( at->gi.hmtx!=NULL )
+ fclose(at->gi.hmtx);
+ if ( at->gi.vmtx!=NULL )
+ fclose(at->gi.vmtx);
+ if ( at->fpgmf!=NULL )
+ fclose(at->fpgmf);
+ if ( at->prepf!=NULL )
+ fclose(at->prepf);
+ if ( at->gaspf!=NULL )
+ fclose(at->gaspf);
+
+ if ( at->sidf!=NULL )
+ fclose(at->sidf);
+ if ( at->sidh!=NULL )
+ fclose(at->sidh);
+ if ( at->charset!=NULL )
+ fclose(at->charset);
+ if ( at->encoding!=NULL )
+ fclose(at->encoding);
+ if ( at->private!=NULL )
+ fclose(at->private);
+ if ( at->charstrings!=NULL )
+ fclose(at->charstrings);
+ if ( at->fdselect!=NULL )
+ fclose(at->fdselect);
+ if ( at->fdarray!=NULL )
+ fclose(at->fdarray);
+ if ( at->bdat!=NULL )
+ fclose(at->bdat);
+ if ( at->bloc!=NULL )
+ fclose(at->bloc);
+ if ( at->ebsc!=NULL )
+ fclose(at->ebsc);
+
+ if ( at->prop!=NULL )
+ fclose(at->prop);
+ if ( at->opbd!=NULL )
+ fclose(at->opbd);
+ if ( at->acnt!=NULL )
+ fclose(at->acnt);
+ if ( at->lcar!=NULL )
+ fclose(at->lcar);
+ if ( at->feat!=NULL )
+ fclose(at->feat);
+ if ( at->morx!=NULL )
+ fclose(at->morx);
+
+ if ( at->pfed!=NULL )
+ fclose(at->pfed);
+ if ( at->tex!=NULL )
+ fclose(at->tex);
+
+ if ( at->gvar!=NULL )
+ fclose(at->gvar);
+ if ( at->fvar!=NULL )
+ fclose(at->fvar);
+ if ( at->cvar!=NULL )
+ fclose(at->cvar);
+ if ( at->avar!=NULL )
+ fclose(at->avar);
+
+ for ( i=0; i<sf->subfontcnt; ++i ) {
+ if ( at->fds[i].private!=NULL )
+ fclose(at->fds[i].private);
+ }
+ if ( sf->subfontcnt!=0 ) {
+ free(sf->glyphs);
+ sf->glyphs = NULL;
+ sf->glyphcnt = sf->glyphmax = 0;
+ }
+ free( at->fds );
+ free( at->gi.bygid );
+}
+
+int SFHasInstructions(SplineFont *sf) {
+ int i;
+
+ if ( sf->mm!=NULL && sf->mm->apple )
+ sf = sf->mm->normal;
+
+ if ( sf->subfontcnt!=0 )
+return( false ); /* Truetype doesn't support cid keyed fonts */
+
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) {
+ if ( strcmp(sf->glyphs[i]->name,".notdef")==0 )
+ continue; /* ff produces fonts with instructions in .notdef & not elsewhere. Ignore these */
+ if ( sf->glyphs[i]->ttf_instrs!=NULL )
+return( true );
+ }
+return( false );
+}
+
+static void MaxpFromTable(struct alltabs *at,SplineFont *sf) {
+ struct ttf_table *maxp;
+
+ maxp = SFFindTable(sf,CHR('m','a','x','p'));
+ if ( maxp==NULL && sf->mm!=NULL && sf->mm->apple )
+ maxp = SFFindTable(sf->mm->normal,CHR('m','a','x','p'));
+ if ( maxp==NULL || maxp->len<13*sizeof(uint16) )
+return;
+ /* We can figure out the others ourselves, but these depend on the contents */
+ /* of uninterpretted tables */
+ at->maxp.maxZones = memushort(maxp->data,maxp->len, 7*sizeof(uint16));
+ at->maxp.maxTwilightPts = memushort(maxp->data,maxp->len, 8*sizeof(uint16));
+ at->maxp.maxStorage = memushort(maxp->data,maxp->len, 9*sizeof(uint16));
+ at->maxp.maxFDEFs = memushort(maxp->data,maxp->len, 10*sizeof(uint16));
+ at->maxp.maxIDEFs = memushort(maxp->data,maxp->len, 11*sizeof(uint16));
+ at->maxp.maxStack = memushort(maxp->data,maxp->len, 12*sizeof(uint16));
+}
+
+static FILE *dumpstoredtable(SplineFont *sf,uint32 tag,int *len) {
+ struct ttf_table *tab = SFFindTable(sf,tag);
+ FILE *out;
+
+ if ( tab==NULL && sf->mm!=NULL && sf->mm->apple )
+ tab = SFFindTable(sf->mm->normal,tag);
+ if ( tab==NULL ) {
+ *len = 0;
+return( NULL );
+ }
+
+ out = tmpfile2();
+ fwrite(tab->data,1,tab->len,out);
+ if ( (tab->len&1))
+ putc('\0',out);
+ if ( (tab->len+1)&2 )
+ putshort(out,0);
+ *len = tab->len;
+return( out );
+}
+
+static FILE *dumpsavedtable(struct ttf_table *tab) {
+ FILE *out;
+
+ if ( tab==NULL )
+return( NULL );
+
+ out = tmpfile2();
+ fwrite(tab->data,1,tab->len,out);
+ if ( (tab->len&1))
+ putc('\0',out);
+ if ( (tab->len+1)&2 )
+ putshort(out,0);
+return( out );
+}
+
+static int tagcomp(const void *_t1, const void *_t2) {
+ struct taboff *t1 = *((struct taboff **) _t1), *t2 = *((struct taboff **) _t2);
+return( (int) (t1->tag - t2->tag) );
+}
+
+static int tcomp(const void *_t1, const void *_t2) {
+ struct taboff *t1 = *((struct taboff **) _t1), *t2 = *((struct taboff **) _t2);
+return( t1->orderingval - t2->orderingval );
+}
+
+static void ATmaxpInit(struct alltabs *at,SplineFont *sf, enum fontformat format) {
+
+ at->maxp.version = 0x00010000;
+ if ( format==ff_otf || format==ff_otfcid || (format==ff_none && at->applemode) )
+ at->maxp.version = 0x00005000;
+ at->maxp.maxnumcomponents = 0;
+ at->maxp.maxcomponentdepth = 0;
+ at->maxp.maxZones = 2; /* 1 would probably do, don't use twilight */
+ at->maxp.maxFDEFs = 1; /* Not even 1 */
+ at->maxp.maxStorage = 1; /* Not even 1 */
+ at->maxp.maxStack = 64; /* A guess, it's probably more like 8 */
+ if ( format==ff_otf || format==ff_otfcid || (format==ff_none && at->applemode) )
+ at->maxp.version = 0x00005000;
+ else
+ MaxpFromTable(at,sf);
+ at->gi.maxp = &at->maxp;
+}
+
+static void initATTables(struct alltabs *at, SplineFont *sf, enum fontformat format) {
+ setos2(&at->os2,at,sf,format); /* should precede kern/ligature output */
+ if ( at->opentypemode ) {
+ SFFindUnusedLookups(sf);
+ otf_dumpgpos(at,sf);
+ otf_dumpgsub(at,sf);
+ otf_dumpgdef(at,sf);
+ otf_dumpjstf(at,sf);
+ otf_dumpbase(at,sf);
+ otf_dump_math(at,sf); /* Not strictly OpenType yet */
+ if ( at->gi.flags & ttf_flag_dummyDSIG )
+ otf_dump_dummydsig(at,sf);
+ }
+ if ( at->dovariations )
+ ttf_dumpvariations(at,sf);
+ if ( at->applemode ) {
+ if ( !at->opentypemode )
+ SFFindUnusedLookups(sf);
+ ttf_dumpkerns(at,sf);
+ aat_dumplcar(at,sf);
+ aat_dumpmorx(at,sf); /* Sets the feat table too */
+ aat_dumpopbd(at,sf);
+ aat_dumpprop(at,sf);
+ aat_dumpbsln(at,sf);
+ }
+ if ( !at->applemode && (!at->opentypemode || (at->gi.flags&ttf_flag_oldkern)) )
+ ttf_dumpkerns(at,sf); /* everybody supports a mimimal kern table */
+
+ dumpnames(at,sf,format); /* Must be after dumpmorx which may create extra names */
+ /* GPOS 'size' can also create names (so must be after that too) */
+ redoos2(at);
+}
+
+static struct taboff *findtabindir(struct tabdir *td, uint32 tag ) {
+ int i;
+
+ for ( i=0; i<td->numtab; ++i )
+ if ( td->tabs[i].tag == tag )
+return( &td->tabs[i] );
+
+return( NULL );
+}
+
+static void buildtablestructures(struct alltabs *at, SplineFont *sf,
+ enum fontformat format) {
+ int i;
+ int ebdtpos, eblcpos;
+ struct ttf_table *tab;
+
+ if ( format==ff_otf || format==ff_otfcid ) {
+ at->tabdir.version = CHR('O','T','T','O');
+#ifdef FONTFORGE_CONFIG_APPLE_ONLY_TTF /* This means that Windows will reject the font. In general not a good idea */
+ } else if ( at->applemode && !at->opentypemode ) {
+ at->tabdir.version = CHR('t','r','u','e');
+#endif
+ } else {
+ at->tabdir.version = 0x00010000;
+ }
+
+ i = 0;
+
+ if ( at->base!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('B','A','S','E');
+ at->tabdir.tabs[i].data = at->base;
+ at->tabdir.tabs[i++].length = at->baselen;
+ }
+
+ if ( at->bsln!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('b','s','l','n');
+ at->tabdir.tabs[i].data = at->bsln;
+ at->tabdir.tabs[i++].length = at->bslnlen;
+ }
+
+ if ( at->bdf!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('B','D','F',' ');
+ at->tabdir.tabs[i].data = at->bdf;
+ at->tabdir.tabs[i++].length = at->bdflen;
+ }
+
+ if ( format==ff_otf || format==ff_otfcid ) {
+ at->tabdir.tabs[i].tag = CHR('C','F','F',' ');
+ at->tabdir.tabs[i].length = at->cfflen;
+ at->tabdir.tabs[i++].data = at->cfff;
+ }
+
+ if ( at->dsigf!=NULL ) {
+ ebdtpos = i;
+ at->tabdir.tabs[i].tag = CHR('D','S','I','G');
+ at->tabdir.tabs[i].length = at->dsiglen;
+ at->tabdir.tabs[i++].data = at->dsigf;
+ }
+
+ if ( at->bdat!=NULL && (at->msbitmaps || at->otbbitmaps)) {
+ ebdtpos = i;
+ at->tabdir.tabs[i].tag = CHR('E','B','D','T');
+ at->tabdir.tabs[i].length = at->bdatlen;
+ at->tabdir.tabs[i++].data = at->bdat;
+ }
+
+ if ( at->bloc!=NULL && (at->msbitmaps || at->otbbitmaps)) {
+ eblcpos = i;
+ at->tabdir.tabs[i].tag = CHR('E','B','L','C');
+ at->tabdir.tabs[i].data = at->bloc;
+ at->tabdir.tabs[i++].length = at->bloclen;
+ }
+
+ if ( at->ebsc!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('E','B','S','C');
+ at->tabdir.tabs[i].data = at->ebsc;
+ at->tabdir.tabs[i++].length = at->ebsclen;
+ }
+
+ if ( at->fftmf!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('F','F','T','M');
+ at->tabdir.tabs[i].data = at->fftmf;
+ at->tabdir.tabs[i++].length = at->fftmlen;
+ }
+
+ if ( at->gdef!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('G','D','E','F');
+ at->tabdir.tabs[i].data = at->gdef;
+ at->tabdir.tabs[i++].length = at->gdeflen;
+ }
+
+ if ( at->gpos!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('G','P','O','S');
+ at->tabdir.tabs[i].data = at->gpos;
+ at->tabdir.tabs[i++].length = at->gposlen;
+ }
+
+ if ( at->gsub!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('G','S','U','B');
+ at->tabdir.tabs[i].data = at->gsub;
+ at->tabdir.tabs[i++].length = at->gsublen;
+ }
+
+ if ( at->jstf!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('J','S','T','F');
+ at->tabdir.tabs[i].data = at->jstf;
+ at->tabdir.tabs[i++].length = at->jstflen;
+ }
+
+ if ( at->os2f!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('O','S','/','2');
+ at->tabdir.tabs[i].data = at->os2f;
+ at->tabdir.tabs[i++].length = at->os2len;
+ }
+
+ if ( at->pfed!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('P','f','E','d');
+ at->tabdir.tabs[i].data = at->pfed;
+ at->tabdir.tabs[i++].length = at->pfedlen;
+ }
+
+ if ( at->tex!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('T','e','X',' ');
+ at->tabdir.tabs[i].data = at->tex;
+ at->tabdir.tabs[i++].length = at->texlen;
+ }
+
+ if ( at->math!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('M','A','T','H');
+ at->tabdir.tabs[i].data = at->math;
+ at->tabdir.tabs[i++].length = at->mathlen;
+ }
+
+ if ( at->vorgf!=NULL ) { /* No longer generated */
+ at->tabdir.tabs[i].tag = CHR('V','O','R','G');
+ at->tabdir.tabs[i].data = at->vorgf;
+ at->tabdir.tabs[i++].length = at->vorglen;
+ }
+
+ if ( at->acnt!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('a','c','n','t');
+ at->tabdir.tabs[i].data = at->acnt;
+ at->tabdir.tabs[i++].length = at->acntlen;
+ }
+
+ if ( at->bdat!=NULL && at->applebitmaps ) {
+ at->tabdir.tabs[i].tag = CHR('b','d','a','t');
+ if ( !at->msbitmaps ) {
+ at->tabdir.tabs[i].data = at->bdat;
+ at->tabdir.tabs[i++].length = at->bdatlen;
+ } else {
+ at->tabdir.tabs[i].data = NULL;
+ at->tabdir.tabs[i].dup_of = ebdtpos;
+ at->tabdir.tabs[i++].length = at->tabdir.tabs[ebdtpos].length;
+ }
+ }
+
+ if ( format==ff_none && at->applebitmaps ) {
+ /* Bitmap only fonts get a bhed table rather than a head */
+ at->tabdir.tabs[i].tag = CHR('b','h','e','d');
+ at->tabdir.tabs[i].data = at->headf;
+ at->tabdir.tabs[i++].length = at->headlen;
+ }
+
+ if ( at->bloc!=NULL && at->applebitmaps ) {
+ at->tabdir.tabs[i].tag = CHR('b','l','o','c');
+ if ( !at->msbitmaps ) {
+ at->tabdir.tabs[i].data = at->bloc;
+ at->tabdir.tabs[i++].length = at->bloclen;
+ } else {
+ at->tabdir.tabs[i].data = NULL;
+ at->tabdir.tabs[i].dup_of = eblcpos;
+ at->tabdir.tabs[i++].length = at->tabdir.tabs[eblcpos].length;
+ }
+ }
+
+ if ( at->cmap!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('c','m','a','p');
+ at->tabdir.tabs[i].data = at->cmap;
+ at->tabdir.tabs[i++].length = at->cmaplen;
+ }
+
+ if ( format!=ff_otf && format!=ff_otfcid && format!=ff_none ) {
+ if ( at->cvtf!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('c','v','t',' ');
+ at->tabdir.tabs[i].data = at->cvtf;
+ at->tabdir.tabs[i++].length = at->cvtlen;
+ }
+ }
+
+ if ( at->feat!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('f','e','a','t');
+ at->tabdir.tabs[i].data = at->feat;
+ at->tabdir.tabs[i++].length = at->featlen;
+ }
+
+ if ( at->fpgmf!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('f','p','g','m');
+ at->tabdir.tabs[i].data = at->fpgmf;
+ at->tabdir.tabs[i++].length = at->fpgmlen;
+ }
+
+ if ( at->gaspf!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('g','a','s','p');
+ at->tabdir.tabs[i].data = at->gaspf;
+ at->tabdir.tabs[i++].length = at->gasplen;
+ }
+
+ if ( at->gi.glyphs!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('g','l','y','f');
+ at->tabdir.tabs[i].data = at->gi.glyphs;
+ at->tabdir.tabs[i++].length = at->gi.glyph_len;
+ }
+
+ if ( at->hdmxf!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('h','d','m','x');
+ at->tabdir.tabs[i].data = at->hdmxf;
+ at->tabdir.tabs[i++].length = at->hdmxlen;
+ }
+
+ if ( format!=ff_none || !at->applebitmaps ) {
+ at->tabdir.tabs[i].tag = CHR('h','e','a','d');
+ at->tabdir.tabs[i].data = at->headf;
+ at->tabdir.tabs[i++].length = at->headlen;
+ }
+
+ if ( format!=ff_none || !at->applemode ) {
+ at->tabdir.tabs[i].tag = CHR('h','h','e','a');
+ at->tabdir.tabs[i].data = at->hheadf;
+ at->tabdir.tabs[i++].length = at->hheadlen;
+ } else if ( at->hheadf!=NULL ) {
+ fclose(at->hheadf);
+ at->hheadf = NULL;
+ }
+
+ if ( format!=ff_none || !at->applemode ) {
+ at->tabdir.tabs[i].tag = CHR('h','m','t','x');
+ at->tabdir.tabs[i].data = at->gi.hmtx;
+ at->tabdir.tabs[i++].length = at->gi.hmtxlen;
+ }
+
+ if ( at->kern!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('k','e','r','n');
+ at->tabdir.tabs[i].data = at->kern;
+ at->tabdir.tabs[i++].length = at->kernlen;
+ }
+
+ if ( at->lcar!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('l','c','a','r');
+ at->tabdir.tabs[i].data = at->lcar;
+ at->tabdir.tabs[i++].length = at->lcarlen;
+ }
+
+ if ( at->loca!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('l','o','c','a');
+ at->tabdir.tabs[i].data = at->loca;
+ at->tabdir.tabs[i++].length = at->localen;
+ }
+
+ at->tabdir.tabs[i].tag = CHR('m','a','x','p');
+ at->tabdir.tabs[i].data = at->maxpf;
+ at->tabdir.tabs[i++].length = at->maxplen;
+
+ if ( at->morx!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('m','o','r','x');
+ at->tabdir.tabs[i].data = at->morx;
+ at->tabdir.tabs[i++].length = at->morxlen;
+ }
+
+ if ( at->name!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('n','a','m','e');
+ at->tabdir.tabs[i].data = at->name;
+ at->tabdir.tabs[i++].length = at->namelen;
+ }
+
+ if ( at->opbd!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('o','p','b','d');
+ at->tabdir.tabs[i].data = at->opbd;
+ at->tabdir.tabs[i++].length = at->opbdlen;
+ }
+
+ if ( at->post!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('p','o','s','t');
+ at->tabdir.tabs[i].data = at->post;
+ at->tabdir.tabs[i++].length = at->postlen;
+ }
+
+ if ( format!=ff_otf && format!=ff_otfcid && format!=ff_none ) {
+ if ( at->prepf!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('p','r','e','p');
+ at->tabdir.tabs[i].data = at->prepf;
+ at->tabdir.tabs[i++].length = at->preplen;
+ }
+ }
+
+ if ( at->prop!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('p','r','o','p');
+ at->tabdir.tabs[i].data = at->prop;
+ at->tabdir.tabs[i++].length = at->proplen;
+ }
+
+ if ( at->vheadf!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('v','h','e','a');
+ at->tabdir.tabs[i].data = at->vheadf;
+ at->tabdir.tabs[i++].length = at->vheadlen;
+
+ at->tabdir.tabs[i].tag = CHR('v','m','t','x');
+ at->tabdir.tabs[i].data = at->gi.vmtx;
+ at->tabdir.tabs[i++].length = at->gi.vmtxlen;
+ }
+
+ if ( at->fvar!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('f','v','a','r');
+ at->tabdir.tabs[i].data = at->fvar;
+ at->tabdir.tabs[i++].length = at->fvarlen;
+ }
+ if ( at->gvar!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('g','v','a','r');
+ at->tabdir.tabs[i].data = at->gvar;
+ at->tabdir.tabs[i++].length = at->gvarlen;
+ }
+ if ( at->cvar!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('c','v','a','r');
+ at->tabdir.tabs[i].data = at->cvar;
+ at->tabdir.tabs[i++].length = at->cvarlen;
+ }
+ if ( at->avar!=NULL ) {
+ at->tabdir.tabs[i].tag = CHR('a','v','a','r');
+ at->tabdir.tabs[i].data = at->avar;
+ at->tabdir.tabs[i++].length = at->avarlen;
+ }
+
+ if ( i>=MAX_TAB )
+ IError("Miscalculation of number of tables needed. Up sizeof tabs array in struct tabdir in ttf.h" );
+
+ for ( tab=sf->ttf_tab_saved; tab!=NULL && i<MAX_TAB; tab=tab->next ) {
+ at->tabdir.tabs[i].tag = tab->tag;
+ at->tabdir.tabs[i].data = tab->temp;
+ at->tabdir.tabs[i++].length = tab->len;
+ }
+ if ( tab!=NULL )
+ IError("Some user supplied tables omitted. Up sizeof tabs array in struct tabdir in ttf.h" );
+
+ at->tabdir.numtab = i;
+ at->tabdir.searchRange = (i<16?8:i<32?16:i<64?32:64)*16;
+ at->tabdir.entrySel = (i<16?3:i<32?4:i<64?5:6);
+ at->tabdir.rangeShift = at->tabdir.numtab*16-at->tabdir.searchRange;
+}
+
+static int initTables(struct alltabs *at, SplineFont *sf, enum fontformat format,
+ int32 *bsizes, enum bitmapformat bf) {
+ int i, aborted, offset;
+ struct ttf_table *tab;
+
+ if (strmatch(at->map->enc->enc_name, "symbol") == 0 && format == ff_ttf)
+ format = ff_ttfsym;
+
+ tab = SFFindTable(sf, CHR('c', 'v', 't', ' '));
+ if (tab != NULL) {
+ at->oldcvt = tab;
+ at->oldcvtlen = tab->len;
+ }
+
+ SFDefaultOS2Info(&sf->pfminfo, sf, sf->fontname);
+
+ at->gi.xmin = at->gi.ymin = 15000;
+ at->gi.sf = sf;
+ bsizes = NULL;
+
+ if (sf->subfonts != NULL) {
+ SFDummyUpCIDs(&at->gi, sf); /* life is easier if we ignore the separate fonts of a cid keyed fonts and treat it as flat */
+ } else if (format != ff_none)
+ AssignTTFGlyph(&at->gi, sf, at->map, format == ff_otf);
+ else {
+ if (bsizes == NULL) {
+ ff_post_error(_("No bitmap strikes"), _("No bitmap strikes"));
+ AbortTTF(at, sf);
+ return ( false);
+ }
+// AssignTTFBitGlyph(&at->gi, sf, at->map, bsizes);
+ }
+ if (at->gi.gcnt > 65535) {
+ ff_post_error(_("Too many glyphs"), _("The 'sfnt' format is currently limited to 65535 glyphs, and your font has %d of them."),
+ at->gi.gcnt);
+ AbortTTF(at, sf);
+ return ( false);
+ } else if (at->gi.gcnt == 65535) {
+ /* GID 65535 is used as a "No Glyph" mark in many places (cmap tables, mac substitutions to delete a glyph */
+ LogError(_("Your font has exactly 65535 glyphs. Encoding 65535 is the limit and is often used as a magic \
+ value, so it may cause quirks.\n"));
+ }
+
+
+ ATmaxpInit(at,sf,format);
+ if ( format==ff_otf )
+ aborted = !dumptype2glyphs(sf,at);
+ else if ( format==ff_otfcid )
+ aborted = !dumpcidglyphs(sf,at);
+ else {
+ /* if format==ff_none the following will put out lots of space glyphs */
+ aborted = !dumpglyphs(sf,&at->gi);
+ }
+ if ( aborted ) {
+ AbortTTF(at,sf);
+return( false );
+ }
+
+ sethead(&at->head,sf,at,format,bsizes);
+ sethhead(&at->hhead,&at->vhead,at,sf);
+ if ( format==ff_none && at->otbbitmaps )
+ dummyloca(at);
+ else if ( format!=ff_otf && format!=ff_otfcid && bf!=bf_sfnt_dfont &&
+ (format!=ff_none || (bsizes!=NULL && !at->applemode && at->opentypemode)) )
+ redoloca(at);
+ redohead(at);
+ if ( format!=ff_none || !at->applemode ) /* No 'hhea' table for apple bitmap-only fonts */
+ redohhead(at,false);
+ if ( sf->hasvmetrics ) {
+ redohhead(at,true);
+ }
+ ttf_fftm_dump(sf,at);
+
+ if ( format!=ff_type42 && format!=ff_type42cid && !sf->internal_temp ) {
+ initATTables(at, sf, format);
+ }
+ redomaxp(at,format);
+ if ( format!=ff_otf && format!=ff_otfcid && format!=ff_none ) {
+ if (( sf->gasp_cnt!=0 || !SFHasInstructions(sf))
+ && format!=ff_type42 && format!=ff_type42cid )
+ dumpgasp(at, sf);
+ at->fpgmf = dumpstoredtable(sf,CHR('f','p','g','m'),&at->fpgmlen);
+ at->prepf = dumpstoredtable(sf,CHR('p','r','e','p'),&at->preplen);
+ at->cvtf = dumpstoredtable(sf,CHR('c','v','t',' '),&at->cvtlen);
+ }
+ for ( tab=sf->ttf_tab_saved; tab!=NULL; tab=tab->next )
+ tab->temp = dumpsavedtable(tab);
+ if ( format!=ff_type42 && format!=ff_type42cid ) {
+ dumppost(at,sf,format);
+ dumpcmap(at,sf,format);
+
+ pfed_dump(at,sf);
+ tex_dump(at,sf);
+ }
+ if ( sf->subfonts!=NULL ) {
+ free(sf->glyphs); sf->glyphs = NULL;
+ sf->glyphcnt = sf->glyphmax = 0;
+ }
+ free( at->gi.bygid );
+ at->gi.gcnt = 0;
+
+ buildtablestructures(at,sf,format);
+ for ( i=0; i<at->tabdir.numtab; ++i ) {
+ struct taboff *tab = &at->tabdir.tabs[i];
+ at->tabdir.ordered[i] = tab;
+ at->tabdir.alpha[i] = tab;
+/* This is the ordering of tables in ARIAL. I've no idea why it makes a */
+/* difference to order them, time to do a seek seems likely to be small, but */
+/* other people make a big thing about ordering them so I'll do it. */
+/* I got bored after glyph. Adobe follows the same scheme for their otf fonts */
+/* so at least the world is consistant */
+/* On the other hand, MS Font validator has a different idea. Oh well */
+/* From: http://partners.adobe.com/asn/tech/type/opentype/recom.jsp */
+/* TrueType Ordering */
+/* head, hhea, maxp, OS/2, hmtx, LTSH, VDMX, hdmx, cmap, fpgm, prep, cvt, */
+/* loca, glyf, kern, name, post, gasp, PCLT, DSIG */
+/* CFF in OpenType Ordering */
+/* head, hhea, maxp, OS/2, name, cmap, post, CFF, (other tables, as convenient) */
+ if ( format==ff_otf || format==ff_otfcid ) {
+ tab->orderingval = tab->tag==CHR('h','e','a','d')? 1 :
+ tab->tag==CHR('h','h','e','a')? 2 :
+ tab->tag==CHR('m','a','x','p')? 3 :
+ tab->tag==CHR('O','S','/','2')? 4 :
+ tab->tag==CHR('n','a','m','e')? 5 :
+ tab->tag==CHR('c','m','a','p')? 6 :
+ tab->tag==CHR('p','o','s','t')? 7 :
+ tab->tag==CHR('C','F','F',' ')? 8 :
+ tab->tag==CHR('G','D','E','F')? 17 :
+ tab->tag==CHR('G','S','U','B')? 18 :
+ tab->tag==CHR('G','P','O','S')? 19 :
+ 20;
+ } else {
+ tab->orderingval = tab->tag==CHR('h','e','a','d')? 1 :
+ tab->tag==CHR('h','h','e','a')? 2 :
+ tab->tag==CHR('m','a','x','p')? 3 :
+ tab->tag==CHR('O','S','/','2')? 4 :
+ tab->tag==CHR('h','m','t','x')? 5 :
+ tab->tag==CHR('L','T','S','H')? 6 :
+ tab->tag==CHR('V','D','M','X')? 7 :
+ tab->tag==CHR('h','d','m','x')? 8 :
+ tab->tag==CHR('c','m','a','p')? 9 :
+ tab->tag==CHR('f','p','g','m')? 10 :
+ tab->tag==CHR('p','r','e','p')? 11 :
+ tab->tag==CHR('c','v','t',' ')? 12 :
+ tab->tag==CHR('l','o','c','a')? 13 :
+ tab->tag==CHR('g','l','y','f')? 14 :
+ tab->tag==CHR('k','e','r','n')? 15 :
+ tab->tag==CHR('n','a','m','e')? 16 :
+ tab->tag==CHR('p','o','s','t')? 17 :
+ tab->tag==CHR('g','a','s','p')? 18 :
+ tab->tag==CHR('P','C','L','T')? 19 :
+ tab->tag==CHR('D','S','I','G')? 20 :
+ tab->tag==CHR('G','D','E','F')? 21 :
+ tab->tag==CHR('G','S','U','B')? 22 :
+ tab->tag==CHR('G','P','O','S')? 23 :
+ 24;
+ }
+ }
+
+ qsort(at->tabdir.ordered,at->tabdir.numtab,sizeof(struct taboff *),tcomp);
+ qsort(at->tabdir.alpha,i,sizeof(struct taboff *),tagcomp);
+
+ offset = sizeof(int32)+4*sizeof(int16) + at->tabdir.numtab*4*sizeof(int32);
+ for ( i=0; i<at->tabdir.numtab; ++i ) if ( at->tabdir.ordered[i]->data!=NULL ) {
+ at->tabdir.ordered[i]->offset = offset;
+ offset += ((at->tabdir.ordered[i]->length+3)>>2)<<2;
+ at->tabdir.ordered[i]->checksum = filechecksum(at->tabdir.ordered[i]->data);
+ }
+ for ( i=0; i<at->tabdir.numtab; ++i ) if ( at->tabdir.ordered[i]->data==NULL ) {
+ struct taboff *tab = &at->tabdir.tabs[at->tabdir.ordered[i]->dup_of];
+ at->tabdir.ordered[i]->offset = tab->offset;
+ at->tabdir.ordered[i]->checksum = tab->checksum;
+ }
+
+ tab = SFFindTable(sf,CHR('c','v','t',' '));
+ if ( tab!=NULL ) {
+ if ( at->oldcvt!=NULL && at->oldcvtlen<tab->len )
+ tab->len = at->oldcvtlen;
+ else if ( at->oldcvt==NULL ) {
+ /* We created a cvt table when we output the .notdef glyph */
+ /* now that means AutoInstr thinks it no longer has a blank */
+ /* slate to work with, and will complain, much to the user's */
+ /* surprise. So get rid of it */
+ struct ttf_table *prev = NULL;
+ for ( tab = sf->ttf_tables; tab!=NULL ; prev = tab, tab=tab->next )
+ if ( tab->tag==CHR('c','v','t',' ') )
+ break;
+ if ( tab!=NULL ) {
+ if ( prev==NULL )
+ sf->ttf_tables = tab->next;
+ else
+ prev->next = tab->next;
+ tab->next = NULL;
+ TtfTablesFree(tab);
+ }
+ }
+ }
+return( true );
+}
+
+static char *Tag2String(uint32 tag) {
+ static char buffer[8];
+
+ buffer[0] = tag>>24;
+ buffer[1] = tag>>16;
+ buffer[2] = tag>>8;
+ buffer[3] = tag;
+ buffer[4] = 0;
+return( buffer );
+}
+
+static void dumpttf(FILE *ttf,struct alltabs *at) {
+ int32 checksum;
+ int i, head_index=-1;
+ /* I can't use fwrite because I (may) have to byte swap everything */
+
+ putlong(ttf,at->tabdir.version);
+ putshort(ttf,at->tabdir.numtab);
+ putshort(ttf,at->tabdir.searchRange);
+ putshort(ttf,at->tabdir.entrySel);
+ putshort(ttf,at->tabdir.rangeShift);
+ for ( i=0; i<at->tabdir.numtab; ++i ) {
+ if ( at->tabdir.alpha[i]->tag==CHR('h','e','a','d') || at->tabdir.alpha[i]->tag==CHR('b','h','e','d') )
+ head_index = i;
+ putlong(ttf,at->tabdir.alpha[i]->tag);
+ putlong(ttf,at->tabdir.alpha[i]->checksum);
+ putlong(ttf,at->tabdir.alpha[i]->offset);
+ putlong(ttf,at->tabdir.alpha[i]->length);
+ }
+
+ for ( i=0; i<at->tabdir.numtab; ++i ) if ( at->tabdir.ordered[i]->data!=NULL ) {
+ if ( !ttfcopyfile(ttf,at->tabdir.ordered[i]->data,
+ at->tabdir.ordered[i]->offset,Tag2String(at->tabdir.ordered[i]->tag)))
+ at->error = true;
+ }
+
+ if ( head_index!=-1 ) {
+ checksum = filechecksum(ttf);
+ checksum = 0xb1b0afba-checksum;
+ fseek(ttf,at->tabdir.alpha[head_index]->offset+2*sizeof(int32),SEEK_SET);
+ putlong(ttf,checksum);
+ }
+
+ /* ttfcopyfile closed all the files (except ttf) */
+}
+
+static void DumpGlyphToNameMap(char *fontname,SplineFont *sf) {
+ char *d, *e;
+ char *newname = malloc(strlen(fontname)+10);
+ FILE *file;
+ int i,k,max;
+ SplineChar *sc;
+
+ strcpy(newname,fontname);
+ d = strrchr(newname,'/');
+ if ( d==NULL ) d=newname;
+ e = strrchr(d,'.');
+ if ( e==NULL ) e = newname+strlen(newname);
+ strcpy(e,".g2n");
+
+ file = fopen(newname,"wb");
+ if ( file==NULL ) {
+ LogError( _("Failed to open glyph to name map file for writing: %s\n"), newname );
+ free(newname);
+return;
+ }
+
+ if ( sf->subfontcnt==0 )
+ max = sf->glyphcnt;
+ else {
+ for ( k=max=0; k<sf->subfontcnt; ++k )
+ if ( sf->subfonts[k]->glyphcnt > max )
+ max = sf->subfonts[k]->glyphcnt;
+ }
+ for ( i=0; i<max; ++i ) {
+ sc = NULL;
+ if ( sf->subfontcnt==0 )
+ sc = sf->glyphs[i];
+ else {
+ for ( k=0; k<sf->subfontcnt; ++k ) if ( i<sf->subfonts[k]->glyphcnt )
+ if ( (sc=sf->subfonts[k]->glyphs[i])!=NULL )
+ break;
+ }
+ if ( sc!=NULL && sc->ttf_glyph!=-1 ) {
+ fprintf( file, "GLYPHID %d\tPSNAME %s", sc->ttf_glyph, sc->name );
+ if ( sc->unicodeenc!=-1 )
+ fprintf( file, "\tUNICODE %04X", sc->unicodeenc );
+ putc('\n',file);
+ }
+ }
+ fclose(file);
+ free(newname);
+}
+
+static int dumpcff(struct alltabs *at,SplineFont *sf,enum fontformat format,
+ FILE *cff) {
+ int ret;
+
+ if ( format==ff_cff ) {
+ AssignTTFGlyph(&at->gi,sf,at->map,true);
+ ret = dumptype2glyphs(sf,at);
+ } else {
+ SFDummyUpCIDs(&at->gi,sf); /* life is easier if we ignore the separate fonts of a cid keyed fonts and treat it as flat */
+ ret = dumpcidglyphs(sf,at);
+ free(sf->glyphs); sf->glyphs = NULL;
+ sf->glyphcnt = sf->glyphmax = 0;
+ }
+ free( at->gi.bygid );
+
+ if ( !ret )
+ at->error = true;
+ else if ( at->gi.flags & ps_flag_nocffsugar ) {
+ if ( !ttfcopyfile(cff,at->cfff,0,"CFF"))
+ at->error = true;
+ } else {
+ long len;
+ char buffer[80];
+ fprintf(cff,"%%!PS-Adobe-3.0 Resource-FontSet\n");
+ fprintf(cff,"%%%%DocumentNeedResources:ProcSet (FontSetInit)\n");
+ fprintf(cff,"%%%%Title: (FontSet/%s)\n", sf->fontname);
+ fprintf(cff,"%%%%EndComments\n" );
+ fprintf(cff,"%%%%IncludeResource: ProcSet(FontSetInit)\n" );
+ fprintf(cff,"%%%%BeginResource: FontSet(%s)\n", sf->fontname );
+ fprintf(cff,"/FontSetInit /ProcSet findresource begin\n" );
+ fseek(at->cfff,0,SEEK_END);
+ len = ftell(at->cfff);
+ rewind(at->cfff);
+ sprintf( buffer, "/%s %ld StartData\n", sf->fontname, len );
+ fprintf(cff,"%%%%BeginData: %ld Binary Bytes\n", (long) (len+strlen(buffer)) );
+ fputs(buffer,cff);
+ if ( !ttfcopyfile(cff,at->cfff,ftell(cff),"CFF"))
+ at->error = true;
+ fprintf(cff,"\n%%%%EndData\n" );
+ fprintf(cff,"%%%%EndResource\n" );
+ fprintf(cff,"%%%%EOF\n" );
+ }
+return( !at->error );
+}
+
+static void ATinit(struct alltabs *at,SplineFont *sf,EncMap *map,int flags, int layer,
+ enum fontformat format, enum bitmapformat bf,int *bsizes) {
+
+ at->gi.flags = flags;
+ at->gi.layer = layer;
+ at->gi.is_ttf = format == ff_ttf || format==ff_ttfsym || format==ff_ttfmacbin || format==ff_ttfdfont;
+ at->gi.sf = sf;
+ at->applemode = (flags&ttf_flag_applemode)?1:0;
+ at->opentypemode = (flags&ttf_flag_otmode)?1:0;
+ at->msbitmaps = bsizes!=NULL && at->opentypemode;
+ at->applebitmaps = bsizes!=NULL && at->applemode;
+ at->gi.onlybitmaps = format==ff_none;
+
+ if ( bf==bf_sfnt_dfont ) { at->msbitmaps = false; at->applebitmaps=true; at->opentypemode=false; at->gi.onlybitmaps=true;}
+ if ( bf==bf_sfnt_ms ) { at->msbitmaps = true; at->applebitmaps=false; at->applemode=false; at->gi.onlybitmaps=true;}
+ if ( bf==bf_otb ) { at->otbbitmaps = true; at->applebitmaps=at->msbitmaps=false; at->applemode=false; at->gi.onlybitmaps=true;}
+
+ if ( bsizes!=NULL && !at->applebitmaps && !at->otbbitmaps && !at->msbitmaps )
+ at->msbitmaps = true; /* They asked for bitmaps, but no bitmap type selected */
+ at->gi.bsizes = bsizes;
+ at->gi.fixed_width = CIDOneWidth(sf);
+ at->isotf = format==ff_otf || format==ff_otfcid;
+ at->format = format;
+ at->next_strid = 256;
+ if ( at->applemode && sf->mm!=NULL && sf->mm->apple &&
+ (format==ff_ttf || format==ff_ttfsym || format==ff_ttfmacbin ||
+ format==ff_ttfdfont) &&
+ MMValid(sf->mm,false)) {
+ at->dovariations = true;
+ at->gi.dovariations = true;
+ sf = sf->mm->normal;
+ }
+ at->sf = sf;
+ at->map = map;
+}
+
+int _WriteTTFFont(FILE *ttf,SplineFont *sf,enum fontformat format,
+ int32 *bsizes, enum bitmapformat bf,int flags,EncMap *map, int layer) {
+ struct alltabs at;
+ int i, anyglyphs;
+
+ short_too_long_warned = 0; // This is a static variable defined for putshort.
+ /* TrueType probably doesn't need this, but OpenType does for floats in dictionaries */
+ locale_t tmplocale; locale_t oldlocale; // Declare temporary locale storage.
+ switch_to_c_locale(&tmplocale, &oldlocale); // Switch to the C locale temporarily and cache the old locale.
+
+ if ( format==ff_otfcid || format== ff_cffcid ) {
+ if ( sf->cidmaster ) sf = sf->cidmaster;
+ } else {
+ if ( sf->subfontcnt!=0 ) sf = sf->subfonts[0];
+ }
+
+ if ( sf->subfontcnt==0 ) {
+ anyglyphs = false;
+ for ( i=sf->glyphcnt-1; i>=0 ; --i ) {
+ if ( SCWorthOutputting(sf->glyphs[i])) {
+ anyglyphs = true;
+ if ( sf->glyphs[i]->unicodeenc!=-1 )
+ break;
+ }
+ }
+ if ( !anyglyphs && !sf->internal_temp ) {
+ ff_post_error(_("No Encoded Glyphs"),_("Warning: Font contained no glyphs"));
+ }
+ if ( format!=ff_ttfsym && !(flags&ttf_flag_symbol) && !sf->internal_temp ) {
+ if ( i<0 && anyglyphs ) {
+ if ( map->enccount<=256 ) {
+ char *buts[3];
+ buts[0] = _("_Yes"); buts[1] = _("_No"); buts[2] = NULL;
+ if ( ff_ask(_("No Encoded Glyphs"),(const char **) buts,0,1,_("This font contains no glyphs with unicode encodings.\nWould you like to use a \"Symbol\" encoding instead of Unicode?"))==0 )
+ flags |= ttf_flag_symbol;
+ } else
+ ff_post_error(_("No Encoded Glyphs"),_("This font contains no glyphs with unicode encodings.\nYou will probably not be able to use the output."));
+ }
+ }
+ }
+
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL )
+ sf->glyphs[i]->ttf_glyph = -1;
+
+ memset(&at,'\0',sizeof(struct alltabs));
+ ATinit(&at,sf,map,flags,layer,format,bf,bsizes);
+
+ if ( format==ff_cff || format==ff_cffcid ) {
+ dumpcff(&at,sf,format,ttf);
+ } else {
+ if ( initTables(&at,sf,format,bsizes,bf))
+ dumpttf(ttf,&at);
+ }
+ switch_to_old_locale(&tmplocale, &oldlocale); // Switch to the cached locale.
+ if ( at.error || ferror(ttf))
+return( 0 );
+
+#ifdef __CygWin
+ /* Modern versions of windows want the execute bit set on a ttf file */
+ /* I've no idea what this corresponds to in windows, nor any idea on */
+ /* how to set it from the windows UI, but this seems to work */
+ {
+ struct stat buf;
+ fstat(fileno(ttf),&buf);
+ fchmod(fileno(ttf),S_IXUSR | buf.st_mode );
+ }
+#endif
+
+return( 1 );
+}
+
+int WriteTTFFont(char *fontname,SplineFont *sf,enum fontformat format,
+ int32 *bsizes, enum bitmapformat bf,int flags,EncMap *map, int layer) {
+ FILE *ttf;
+ int ret;
+
+ if ( strstr(fontname,"://")!=NULL ) {
+ if (( ttf = tmpfile2())==NULL )
+return( 0 );
+ } else {
+ if (( ttf=fopen(fontname,"wb+"))==NULL )
+return( 0 );
+ }
+ ret = _WriteTTFFont(ttf,sf,format,bsizes,bf,flags,map,layer);
+ if ( ret && (flags&ttf_flag_glyphmap) )
+ DumpGlyphToNameMap(fontname,sf);
+ if ( fclose(ttf)==-1 )
+return( 0 );
+return( ret );
+}
+
+/* ************************************************************************** */
+/* ****************************** Type42 stuff ****************************** */
+
+/* ************************************************************************** */
+/* ******************************* TTC stuff ******************************** */
+/* ************************************************************************** */
+
+typedef struct splinecharlist *UHash[65536];
+typedef struct splinecharlist *NHash[257];
+
+static unsigned int hashname(const char *name) {
+ unsigned int hash = 0;
+
+ while ( *name ) {
+ unsigned int extra = (hash>>27);
+ hash<<=5;
+ hash += *name&0x1f;
+ hash ^= extra;
+ ++name;
+ }
+return( hash % 257 );
+}
+
+static int glyphmatches(SplineChar *sc,SplineChar *sc2,int layer) {
+ RefChar *r, *r2;
+ SplineSet *ss, *ss2;
+ SplinePoint *sp, *sp2;
+
+ if ( sc->width!=sc2->width )
+return( false );
+ if ( sc->ttf_instrs_len != sc2->ttf_instrs_len )
+return( false );
+ if ( sc->ttf_instrs_len!=0 && memcmp(sc->ttf_instrs,sc2->ttf_instrs,sc->ttf_instrs_len)!=0 )
+return( false );
+
+ for ( r=sc->layers[layer].refs, r2=sc2->layers[layer].refs;
+ r!=NULL && r2!=NULL;
+ r = r->next, r2 = r2->next ) {
+ if ( r->transform[0] != r2->transform[0] ||
+ r->transform[1] != r2->transform[1] ||
+ r->transform[2] != r2->transform[2] ||
+ r->transform[3] != r2->transform[3] ||
+ r->transform[4] != r2->transform[4] ||
+ r->transform[5] != r2->transform[5] )
+return( false );
+ if ( r->sc->unicodeenc!=r2->sc->unicodeenc )
+return( false );
+ if ( r->sc->unicodeenc==-1 && strcmp(r->sc->name,r2->sc->name)!=0 )
+return( false );
+ }
+ if ( r!=NULL || r2!=NULL )
+return( false );
+
+ for ( ss=sc->layers[layer].splines, ss2=sc2->layers[layer].splines;
+ ss!=NULL && ss2!=NULL;
+ ss = ss->next, ss2 = ss2->next ) {
+ for ( sp=ss->first, sp2=ss2->first; sp!=NULL && sp2!=NULL; ) {
+ if ( sp->me.x != sp2->me.x ||
+ sp->me.y != sp2->me.y ||
+ sp->nextcp.x != sp2->nextcp.x ||
+ sp->nextcp.y != sp2->nextcp.y ||
+ sp->prevcp.x != sp2->prevcp.x ||
+ sp->prevcp.y != sp2->prevcp.y )
+return( false );
+ sp = (sp->next ? sp->next->to : NULL);
+ sp2 = (sp2->next ? sp2->next->to : NULL);
+ if ( sp==ss->first ) {
+ if ( sp2==ss2->first )
+ break;
+return( false );
+ } else if ( sp2==ss2->first )
+return( false );
+ }
+ if (( sp==NULL && sp2!=NULL ) || ( sp!=NULL && sp2==NULL ))
+return( false );
+ }
+ if ( ss==NULL && ss2==NULL )
+return( true );
+
+return( false );
+}
+
+static SplineChar *hashglyphfound(SplineChar *sc,UHash *uhash,NHash *nhash,int layer) {
+ int hash;
+ struct splinecharlist *test;
+ struct altuni *alt;
+
+ /* the unicodeenc might be unset and we might still have altunis if the */
+ /* glyph is controlled by a variant selector */
+ if ( sc->unicodeenc==-1 && sc->altuni==NULL ) {
+ hash = hashname(sc->name);
+ for ( test=(*nhash)[hash]; test!=NULL; test=test->next )
+ if ( strcmp(test->sc->name,sc->name)==0 && glyphmatches(sc,test->sc,layer))
+return( test->sc );
+ } else if ( sc->unicodeenc!=-1 ) {
+ hash = sc->unicodeenc&0xffff;
+ for ( test=(*uhash)[hash]; test!=NULL; test=test->next )
+ if ( glyphmatches(sc,test->sc,layer))
+return( test->sc );
+ }
+ for ( alt=sc->altuni; alt!=NULL; alt=alt->next ) {
+ hash = alt->unienc&0xffff;
+ for ( test=(*uhash)[hash]; test!=NULL; test=test->next )
+ if ( glyphmatches(sc,test->sc,layer))
+return( test->sc );
+ }
+return( NULL );
+}
+
+static void hashglyphadd(SplineChar *sc,UHash *uhash,NHash *nhash) {
+ int hash;
+ struct splinecharlist *test;
+ struct altuni *alt;
+
+ if ( sc->unicodeenc==-1 && sc->altuni==NULL ) {
+ hash = hashname(sc->name);
+ test = chunkalloc(sizeof(struct splinecharlist));
+ test->sc = sc;
+ test->next = (*nhash)[hash];
+ (*nhash)[hash] = test;
+ } else if ( sc->unicodeenc!=-1 ) {
+ hash = sc->unicodeenc&0xffff;
+ test = chunkalloc(sizeof(struct splinecharlist));
+ test->sc = sc;
+ test->next = (*uhash)[hash];
+ (*uhash)[hash] = test;
+ }
+ for ( alt=sc->altuni; alt!=NULL; alt=alt->next ) {
+ hash = alt->unienc&0xffff;
+ test = chunkalloc(sizeof(struct splinecharlist));
+ test->sc = sc;
+ test->next = (*uhash)[hash];
+ (*uhash)[hash] = test;
+ }
+}
+
+static struct alltabs *ttc_prep(struct sflist *sfs, enum fontformat format,
+ enum bitmapformat bf,int flags, int layer,SplineFont *dummysf) {
+ struct alltabs *ret;
+ int fcnt, cnt, gcnt=3;
+ struct sflist *sfitem;
+ int emsize = -1;
+ UHash *uhash; /* hash glyphs by unicode */
+ NHash *nhash; /* hash glyphs by name if no unicode */
+ int anyvmetrics = false;
+ int *bygid;
+ SplineFont *sf;
+ SplineChar *sc, *test;
+ int i, aborted;
+
+ for ( sfitem= sfs, cnt=0; sfitem!=NULL; sfitem=sfitem->next, ++cnt ) {
+ sf = sfitem->sf;
+ /* to share the same 'head' table all must be the same emsize */
+ if ( emsize==-1 )
+ emsize = sf->ascent + sf->descent;
+ else if ( emsize != sf->ascent + sf->descent )
+return( NULL );
+ if ( format==ff_otf && !PSDictSame(sf->private,sfs->sf->private))
+return( NULL );
+ if ( sf->hasvmetrics ) anyvmetrics = true;
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( (sc = sf->glyphs[i])!=NULL )
+ sc->ttf_glyph = -1;
+ gcnt += sf->glyphcnt;
+ }
+ if ( cnt==0 )
+return( NULL );
+ fcnt = cnt;
+
+ uhash = calloc(1,sizeof(UHash));
+ nhash = calloc(1,sizeof(NHash));
+
+ *dummysf = *sfs->sf;
+ dummysf->glyphmax = gcnt;
+ dummysf->glyphs = calloc(gcnt,sizeof(SplineChar *));
+ dummysf->glyphcnt = 0;
+ dummysf->hasvmetrics = anyvmetrics;
+
+ bygid = malloc((gcnt+3)*sizeof(int));
+ memset(bygid,0xff, (gcnt+3)*sizeof(int));
+ for ( sfitem= sfs; sfitem!=NULL; sfitem=sfitem->next ) {
+ AssignNotdefNull(sfitem->sf,bygid,false);
+ if ( bygid[0]!=-1 && dummysf->glyphs[0]==NULL ) {
+ dummysf->glyphs[0] = sfitem->sf->glyphs[bygid[0]];
+ bygid[0]=0;
+ }
+ if ( format==ff_ttf ) {
+ if ( bygid[1]!=-1 && dummysf->glyphs[1]==NULL ) {
+ dummysf->glyphs[1] = sfitem->sf->glyphs[bygid[1]];
+ bygid[1]=1;
+ }
+ if ( bygid[2]!=-1 && dummysf->glyphs[2]==NULL ) {
+ dummysf->glyphs[2] = sfitem->sf->glyphs[bygid[2]];
+ bygid[2]=2;
+ }
+ if ( bygid[0]!=-1 && bygid[1]!=-1 && bygid[2]!=-1 )
+ break;
+ } else {
+ if ( bygid[0]!=-1 )
+ break;
+ }
+ }
+ dummysf->glyphcnt = format==ff_ttf ? 3 : 1;
+
+ ret = calloc(fcnt+2,sizeof(struct alltabs));
+ ATinit(&ret[fcnt],dummysf,sfs->map,flags&~ttf_flag_dummyDSIG,
+ layer,format,bf,NULL);
+ ret[fcnt].gi.ttc_composite_font = true;
+ ATmaxpInit(&ret[fcnt],dummysf,format);
+
+ for ( sfitem= sfs, cnt=0; sfitem!=NULL; sfitem=sfitem->next, ++cnt ) {
+ sf = sfitem->sf;
+ ATinit(&ret[cnt],sf,sfitem->map,flags&~ttf_flag_dummyDSIG,
+ layer,format,bf,sfitem->sizes);
+ ret[cnt].gi.bygid = malloc((gcnt+3)*sizeof(int));
+ memset(ret[cnt].gi.bygid,-1,(gcnt+3)*sizeof(int));
+ for ( i=0; i<sf->glyphcnt; ++i ) {
+ if ( SCWorthOutputting(sc = sf->glyphs[i])) {
+ if ( sc->ttf_glyph==-1 ) {
+ if ( strcmp(sc->name,".notdef")==0 )
+ sc->ttf_glyph = bygid[0];
+ else if ( format==ff_ttf &&
+ (strcmp(sf->glyphs[i]->name,".null")==0 ||
+ strcmp(sf->glyphs[i]->name,"uni0000")==0 ||
+ (i==1 && strcmp(sf->glyphs[1]->name,"glyph1")==0)) )
+ sc->ttf_glyph = bygid[1];
+ else if ( format==ff_ttf &&
+ (strcmp(sf->glyphs[i]->name,"nonmarkingreturn")==0 ||
+ strcmp(sf->glyphs[i]->name,"uni000D")==0 ||
+ (i==2 && strcmp(sf->glyphs[2]->name,"glyph2")==0)))
+ sc->ttf_glyph = bygid[2];
+ else {
+ test = hashglyphfound(sc,uhash,nhash,layer);
+ if ( test!=NULL )
+ sc->ttf_glyph = test->ttf_glyph;
+ else {
+ sc->ttf_glyph = dummysf->glyphcnt++;
+ bygid[sc->ttf_glyph] = sc->ttf_glyph;
+ dummysf->glyphs[sc->ttf_glyph] = sc;
+ hashglyphadd(sc,uhash,nhash);
+ }
+ }
+ }
+ if ( sc->ttf_glyph!=-1 ) {
+ ret[cnt].gi.bygid[sc->ttf_glyph] = i;
+ if ( sc->ttf_glyph>=ret[cnt].gi.gcnt )
+ ret[cnt].gi.gcnt = sc->ttf_glyph+1;
+ }
+ }
+ if ( sc!=NULL )
+ sc->lsidebearing = 0x7fff;
+ }
+
+ MaxpFromTable(&ret[cnt],sf);
+
+ if ( ret[cnt].maxp.maxZones > ret[fcnt].maxp.maxZones )
+ ret[fcnt].maxp.maxZones = ret[cnt].maxp.maxZones;
+ if ( ret[cnt].maxp.maxTwilightPts > ret[fcnt].maxp.maxTwilightPts )
+ ret[fcnt].maxp.maxTwilightPts = ret[cnt].maxp.maxTwilightPts;
+ if ( ret[cnt].maxp.maxStorage > ret[fcnt].maxp.maxStorage )
+ ret[fcnt].maxp.maxStorage = ret[cnt].maxp.maxStorage;
+ if ( ret[cnt].maxp.maxFDEFs > ret[fcnt].maxp.maxFDEFs )
+ ret[fcnt].maxp.maxFDEFs = ret[cnt].maxp.maxFDEFs;
+ if ( ret[cnt].maxp.maxIDEFs > ret[fcnt].maxp.maxIDEFs )
+ ret[fcnt].maxp.maxIDEFs = ret[cnt].maxp.maxIDEFs;
+ if ( ret[cnt].maxp.maxStack > ret[fcnt].maxp.maxStack )
+ ret[fcnt].maxp.maxStack = ret[cnt].maxp.maxStack;
+ }
+ free(uhash);
+ free(nhash);
+
+ if ( dummysf->glyphcnt>0xffff ) {
+ free(dummysf->glyphs);
+ free(bygid);
+ for ( sfitem= sfs, cnt=0; sfitem!=NULL; sfitem=sfitem->next, ++cnt )
+ free(ret[cnt].gi.bygid);
+ free(ret);
+return( NULL );
+ }
+
+ ret[fcnt].gi.fixed_width = CIDOneWidth(sf);
+ ret[fcnt].gi.bygid = bygid;
+ ret[fcnt].gi.gcnt = ret[fcnt].maxp.numGlyphs = dummysf->glyphcnt;
+ if ( format==ff_ttf )
+ aborted = !dumpglyphs(dummysf,&ret[cnt].gi);
+ else
+ aborted = !dumptype2glyphs(dummysf,&ret[cnt]);
+ if ( aborted ) {
+ free(dummysf->glyphs);
+ free(bygid);
+ for ( sfitem= sfs, cnt=0; sfitem!=NULL; sfitem=sfitem->next, ++cnt )
+ free(ret[cnt].gi.bygid);
+ free(ret);
+return( NULL );
+ }
+ sethhead(&ret[fcnt].hhead,&ret[fcnt].vhead,&ret[fcnt],dummysf);
+ for ( sfitem= sfs, cnt=0; sfitem!=NULL; sfitem=sfitem->next, ++cnt )
+ ret[cnt].maxp = ret[fcnt].maxp;
+
+ /* Just to get a timestamp for all other heads */
+ /* and to figure out whether 'loca' is 4byte or 2 */
+ sethead(&ret[fcnt].head,dummysf,&ret[fcnt],format,NULL);
+ if ( format==ff_ttf )
+ redoloca(&ret[fcnt]);
+ redohhead(&ret[fcnt],false);
+ if ( dummysf->hasvmetrics )
+ redohhead(&ret[fcnt],true);
+ ttf_fftm_dump(dummysf,&ret[fcnt]);
+
+return( ret );
+}
+
+static FILE *checkdupstoredtable(SplineFont *sf,uint32 tag,int *len,
+ struct alltabs *all, int me) {
+ int i;
+ struct ttf_table *tab = SFFindTable(sf,tag), *test;
+
+ if ( tab==NULL ) {
+ *len = 0;
+return( NULL );
+ }
+ for ( i=0; i<me; ++i ) {
+ test = SFFindTable(all[i].sf,tag);
+ if ( test!=NULL && test->len==tab->len &&
+ memcmp(test->data,tab->data,tab->len)==0 ) {
+ *len = i;
+return( (FILE *) (intpt) -1 );
+ }
+ }
+return( dumpstoredtable(sf,tag,len));
+}
+
+static void ttc_perfonttables(struct alltabs *all, int me, int mainpos,
+ enum fontformat format ) {
+ struct alltabs *at = &all[me];
+ struct alltabs *tabsmain = &all[mainpos];
+ SplineFont *sf = at->sf;
+ struct ttf_table *tab;
+
+ at->gi.xmin = tabsmain->gi.xmin; at->gi.xmax = tabsmain->gi.xmax;
+ at->gi.ymin = tabsmain->gi.ymin; at->gi.ymax = tabsmain->gi.ymax;
+ at->gi.glyph_len = tabsmain->gi.glyph_len;
+ at->gi.gcnt = tabsmain->maxp.numGlyphs;
+ sethead(&at->head,sf,at,format,NULL);
+ memcpy(at->head.modtime,tabsmain->head.modtime,sizeof(at->head.modtime));
+ memcpy(at->head.createtime,at->head.modtime,sizeof(at->head.modtime));
+ initATTables(at, sf, format); /* also name and OS/2 */
+
+ if ( format==ff_ttf ) {
+ if ( sf->gasp_cnt!=0 || !SFHasInstructions(sf) )
+ dumpgasp(at, sf);
+ at->fpgmf = checkdupstoredtable(sf,CHR('f','p','g','m'),&at->fpgmlen, all, me);
+ at->prepf = checkdupstoredtable(sf,CHR('p','r','e','p'),&at->preplen, all, me);
+ at->cvtf = checkdupstoredtable(sf,CHR('c','v','t',' '),&at->cvtlen, all, me);
+ }
+
+ for ( tab=sf->ttf_tab_saved; tab!=NULL; tab=tab->next )
+ tab->temp = dumpsavedtable(tab);
+ {
+ /* post table is expected to have names for every glyph (or none) even*/
+ /* those not used in this font. Now it might seem we could just share*/
+ /* the post table, but it also contains a few font specific things */
+ /* (italic angle, etc.) so dump one for each font and hope that we'll*/
+ /* be able to coalesce them later when we check if any tables are the*/
+ /* same across fonts */
+ int cnt = sf->glyphcnt;
+ SplineChar **g = sf->glyphs;
+ int *bygid = at->gi.bygid;
+ sf->glyphcnt = tabsmain->sf->glyphcnt;
+ sf->glyphs = tabsmain->sf->glyphs;
+ at->gi.bygid = tabsmain->gi.bygid;
+ dumppost(at,sf,format);
+ sf->glyphcnt = cnt;
+ sf->glyphs = g;
+ at->gi.bygid = bygid;
+ }
+ dumpcmap(at,sf,format);
+ redohead(at);
+
+ pfed_dump(at,sf);
+ tex_dump(at,sf);
+
+ /* These tables are always to be shared and are found in the extra structure */
+ /* called main */
+ if ( format==ff_ttf ) {
+ at->loca = (void *) (intpt) -1; at->localen = mainpos;
+ at->gi.glyphs = (void *) (intpt) -1; at->gi.glyph_len = mainpos;
+ } else {
+ at->cfff = (void *) (intpt) -1; at->cfflen = mainpos;
+ }
+ at->fftmf = (void *) (intpt) -1; at->fftmlen = mainpos;
+ at->hheadf = (void *) (intpt) -1; at->hheadlen = mainpos;
+ at->gi.hmtx = (void *) (intpt) -1; at->gi.hmtxlen = mainpos;
+ at->maxpf = (void *) (intpt) -1; at->maxplen = mainpos;
+ if ( all[mainpos].vheadf!=NULL ) {
+ at->vheadf = (void *) (intpt) -1; at->vheadlen = mainpos;
+ at->gi.vmtx = (void *) (intpt) -1; at->gi.vmtxlen = mainpos;
+ }
+
+ free(at->gi.bygid);
+}
+
+static int tablefilematch(struct taboff *tab,FILE *ttc,struct alltabs *all,int pos) {
+ int i, ch1, ch2;
+ struct taboff *test;
+ unsigned len;
+
+ /* See if this table (which lives in its own file) matches any tables */
+ /* with the same tag in an earlier font */
+
+ for ( i=0; i<pos; ++i ) {
+ test = findtabindir(&all[i].tabdir,tab->tag);
+ if ( test==NULL || test->data==(void *) (intpt) -1 ||
+ test->length!=tab->length )
+ continue;
+ rewind(tab->data);
+ fseek(ttc,test->offset,SEEK_SET);
+ for ( len=0; len<tab->length && (ch1=getc(tab->data))!=EOF && (ch2=getc(ttc))!=EOF; ++len ) {
+ if ( ch1!=ch2 )
+ break;
+ }
+ if ( len==tab->length ) {
+ rewind(tab->data);
+ fseek(ttc,0,SEEK_END);
+return( i );
+ }
+ }
+ rewind(tab->data);
+ fseek(ttc,0,SEEK_END);
+return( -1 );
+}
+
+static void ttc_dump(FILE *ttc,struct alltabs *all, enum fontformat format,
+ int flags, enum ttc_flags ttc_flags ) {
+ int i,j,cnt,tot,ch,dup;
+ int offset, startoffset;
+ struct taboff *tab;
+
+ for ( cnt=0; all[cnt].sf!=NULL; ++cnt );
+ --cnt; /* Last one is dummysf */
+
+ putlong(ttc,CHR('t','t','c','f'));
+ if ( flags&ttf_flag_dummyDSIG ) {
+ putlong(ttc,0x00020000);
+ startoffset = 4*(3+cnt+4);
+ } else {
+ putlong(ttc,0x00010000);
+ startoffset = 4*(3+cnt);
+ }
+ putlong(ttc,cnt);
+ offset = startoffset;
+ for ( i=0; i<cnt; ++i ) {
+ putlong(ttc,offset); /* Pointer to font header */
+ offset += (8+16*MAX_TAB); /* Explained below */
+ }
+ if ( flags&ttf_flag_dummyDSIG ) {
+ putlong(ttc,CHR('D','S','I','G'));
+ putlong(ttc,8); /* Length of dummy DSIG table */
+ putlong(ttc,0x00000001); /* Standard DSIG version */
+ putlong(ttc,0); /* No Signatures, no flags */
+ }
+
+ /* Now a font header contains 8 bytes of header and 16 bytes/table */
+ /* Reserve space for cnt fonts. Don't know how many tables they'll */
+ /* have, so reserve MAX_TAB */
+ tot = cnt*(8+16*MAX_TAB);
+ for ( i=0; i<tot; ++i )
+ putc('\0', ttc);
+
+ /* Build, but don't output. This is so we can lookup tables by tag later */
+ buildtablestructures(&all[cnt],all[cnt].sf,format);
+
+ /* Output some of the smaller tables now, near the head of the file */
+ /* I have my doubts about this being a significant savings... but */
+ /* it doesn't hurt */
+ tab = findtabindir(&all[cnt].tabdir,CHR('h','h','e','a'));
+ tab->offset = ftell(ttc);
+ tab->checksum = filechecksum(tab->data);
+ if ( !ttfcopyfile(ttc,tab->data, tab->offset,Tag2String(tab->tag)))
+ all[cnt].error = true;
+ tab = findtabindir(&all[cnt].tabdir,CHR('v','h','e','a'));
+ if ( tab!=NULL ) {
+ tab->offset = ftell(ttc);
+ tab->checksum = filechecksum(tab->data);
+ if ( !ttfcopyfile(ttc,tab->data, tab->offset,Tag2String(tab->tag)))
+ all[cnt].error = true;
+ }
+ tab = findtabindir(&all[cnt].tabdir,CHR('m','a','x','p'));
+ tab->offset = ftell(ttc);
+ for ( i=0; i<64; ++i ) /* maxp table is 64 bytes, fill in later */
+ putc('\0', ttc);
+ tab = findtabindir(&all[cnt].tabdir,CHR('F','F','T','M'));
+ tab->offset = ftell(ttc);
+ tab->checksum = filechecksum(tab->data);
+ if ( !ttfcopyfile(ttc,tab->data, tab->offset,Tag2String(tab->tag)))
+ all[cnt].error = true;
+
+ for ( i=0; i<cnt; ++i ) {
+ /* Now generate all tables unique to this font */
+ ttc_perfonttables(all, i, cnt, format );
+ buildtablestructures(&all[i],all[i].sf,format);
+ /* Check for any tables which match those of a previous font */
+ for ( j=0 ; j<all[i].tabdir.numtab; ++j ) {
+ if ( all[i].tabdir.tabs[j].data!=(void *) (intpt) -1 &&
+ (dup = tablefilematch(&all[i].tabdir.tabs[j],ttc,all,i))!=-1 ) {
+ fclose(all[i].tabdir.tabs[j].data);
+ all[i].tabdir.tabs[j].data = (void *) (intpt) -1;
+ all[i].tabdir.tabs[j].length = dup;
+ }
+ }
+
+ /* And now dump those tables into the file. I don't see how I could */
+ /* order them meaningfully */
+ for ( j=0 ; j<all[i].tabdir.numtab; ++j ) {
+ if ( all[i].tabdir.tabs[j].data!=(void *) (intpt) -1 ) {
+ all[i].tabdir.tabs[j].offset = ftell(ttc);
+ all[i].tabdir.tabs[j].checksum = filechecksum(all[i].tabdir.tabs[j].data);
+ if ( !ttfcopyfile(ttc,all[i].tabdir.tabs[j].data, all[i].tabdir.tabs[j].offset,Tag2String(all[i].tabdir.tabs[j].tag)))
+ all[cnt].error = true;
+ }
+ }
+ }
+
+ free(all[cnt].sf->glyphs);
+ free(all[cnt].gi.bygid);
+
+ /* Now dump the big shared tables */
+ tab = findtabindir(&all[cnt].tabdir,CHR('h','m','t','x'));
+ tab->offset = ftell(ttc);
+ tab->checksum = filechecksum(tab->data);
+ if ( !ttfcopyfile(ttc,tab->data, tab->offset,Tag2String(tab->tag)))
+ all[cnt].error = true;
+ tab = findtabindir(&all[cnt].tabdir,CHR('v','m','t','x'));
+ if ( tab!=NULL ) {
+ tab->offset = ftell(ttc);
+ tab->checksum = filechecksum(tab->data);
+ if ( !ttfcopyfile(ttc,tab->data, tab->offset,Tag2String(tab->tag)))
+ all[cnt].error = true;
+ }
+ if ( format==ff_ttf ) {
+ tab = findtabindir(&all[cnt].tabdir,CHR('l','o','c','a'));
+ tab->offset = ftell(ttc);
+ tab->checksum = filechecksum(tab->data);
+ if ( !ttfcopyfile(ttc,tab->data, tab->offset,Tag2String(tab->tag)))
+ all[cnt].error = true;
+ tab = findtabindir(&all[cnt].tabdir,CHR('g','l','y','f'));
+ tab->offset = ftell(ttc);
+ tab->checksum = filechecksum(tab->data);
+ if ( !ttfcopyfile(ttc,tab->data, tab->offset,Tag2String(tab->tag)))
+ all[cnt].error = true;
+ } else {
+ tab = findtabindir(&all[cnt].tabdir,CHR('C','F','F',' '));
+ tab->offset = ftell(ttc);
+ tab->checksum = filechecksum(tab->data);
+ if ( !ttfcopyfile(ttc,tab->data, tab->offset,Tag2String(tab->tag)))
+ all[cnt].error = true;
+ }
+
+ /* Do maxp last, in case generating other tables changed it */
+ redomaxp(&all[cnt],format);
+ tab = findtabindir(&all[cnt].tabdir,CHR('m','a','x','p'));
+ fseek(ttc,tab->offset,SEEK_SET);
+ tab->checksum = filechecksum(all[cnt].maxpf);
+ tab->length = all[cnt].maxplen;
+ rewind(all[cnt].maxpf);
+ while ( (ch=getc(all[cnt].maxpf))!=EOF )
+ putc(ch,ttc);
+
+ /* Now output the font headers */
+ for ( offset=startoffset, i=0; i<cnt; ++i, offset += (8+16*MAX_TAB)) {
+ struct alltabs *at = &all[i];
+ /* Find the location of any shared tables */
+ for ( j=0; j<at->tabdir.numtab; ++j ) {
+ struct taboff *curtab = &at->tabdir.tabs[j];
+ if ( curtab->data == (void *) (intpt) -1 ) {
+ tab = findtabindir(&all[curtab->length].tabdir,curtab->tag);
+ if ( tab==NULL ) {
+ IError("Failed to find tab");
+ curtab->length = 0;
+ curtab->offset = 0;
+ curtab->checksum = 0;
+ } else {
+ curtab->offset = tab->offset;
+ curtab->length = tab->length;
+ curtab->checksum = tab->checksum;
+ }
+ }
+ }
+ fseek(ttc,offset,SEEK_SET);
+
+ /* Put in alphabetic order */
+ for ( j=0; j<at->tabdir.numtab; ++j )
+ at->tabdir.alpha[j] = &at->tabdir.tabs[j];
+ qsort(at->tabdir.alpha,at->tabdir.numtab,sizeof(struct taboff *),tagcomp);
+
+ putlong(ttc,at->tabdir.version);
+ putshort(ttc,at->tabdir.numtab);
+ putshort(ttc,at->tabdir.searchRange);
+ putshort(ttc,at->tabdir.entrySel);
+ putshort(ttc,at->tabdir.rangeShift);
+ for ( j=0; j<at->tabdir.numtab; ++j ) {
+ putlong(ttc,at->tabdir.alpha[j]->tag);
+ putlong(ttc,at->tabdir.alpha[j]->checksum);
+ putlong(ttc,at->tabdir.alpha[j]->offset);
+ putlong(ttc,at->tabdir.alpha[j]->length);
+ }
+ }
+
+ tab = findtabindir(&all[0].tabdir,CHR('h','e','a','d'));
+ if ( tab!=NULL ) {
+ /* As far as I can tell the file checksum is ignored */
+ int checksum;
+ checksum = filechecksum(ttc);
+ checksum = 0xb1b0afba-checksum;
+ fseek(ttc,tab->offset+2*sizeof(int32),SEEK_SET);
+ putlong(ttc,checksum);
+ }
+}
+
+static void CopySFNTAndFixup(FILE *ttc,FILE *ttf) {
+ /* ttf contains a truetype file which we want to copy into ttc */
+ /* Mostly this is just a dump copy, but the offset table at the */
+ /* start of the file must be adjusted to reflect the absolute */
+ /* locations of the tables in the ttc */
+ int offset = ftell(ttc);
+ int val, table_cnt, i;
+
+ fseek(ttf,0,SEEK_SET);
+ val = getlong(ttf);
+ putlong(ttc,val); /* sfnt version */
+ table_cnt = getushort(ttf);
+ putshort(ttc,table_cnt);
+ val = getushort(ttf);
+ putshort(ttc,val);
+ val = getushort(ttf);
+ putshort(ttc,val);
+ val = getushort(ttf);
+ putshort(ttc,val);
+
+ for ( i=0; i<table_cnt; ++i ) {
+ val = getlong(ttf);
+ putlong(ttc,val); /* tag */
+ val = getlong(ttf);
+ putlong(ttc,val); /* checkSum */
+ val = getlong(ttf);
+ putlong(ttc,val+offset); /* offset */
+ val = getlong(ttf);
+ putlong(ttc,val); /* length */
+ }
+
+ while ( (val=getc(ttf))!=EOF )
+ putc(val,ttc);
+
+ fclose(ttf);
+
+ if ( ftell(ttc)&1 )
+ putc('\0',ttc);
+ if ( ftell(ttc)&2 )
+ putshort(ttc,0);
+}
+
+int WriteTTC(const char *filename,struct sflist *sfs,enum fontformat format,
+ enum bitmapformat bf,int flags, int layer, enum ttc_flags ttcflags) {
+ struct sflist *sfitem, *sfi2;
+ int ok=1;
+ FILE *ttc;
+ int cnt, offset;
+ int dobruteforce;
+ struct alltabs *ret;
+ SplineFont dummysf;
+
+ if ( strstr(filename,"://")!=NULL ) {
+ if (( ttc = tmpfile2())==NULL )
+return( 0 );
+ } else {
+ if (( ttc=fopen(filename,"wb+"))==NULL )
+return( 0 );
+ }
+
+ format = (ttcflags & ttc_flag_cff) ? ff_otf : ff_ttf;
+
+ dobruteforce = true;
+ if ( (ttcflags & ttc_flag_trymerge) && bf==bf_none ) {
+ dobruteforce = false;
+ ret = ttc_prep(sfs,format,bf,flags,layer,&dummysf);
+ if ( ret==NULL )
+ dobruteforce = true;
+ else
+ ttc_dump(ttc,ret,format,flags,ttcflags);
+ free(ret);
+ }
+ if ( dobruteforce ) {
+ /* Create a trivial ttc where each font is its own entity and there */
+ /* are no common tables */
+ /* Generate all the fonts (don't generate DSIGs, there's one DSIG for */
+ /* the ttc as a whole) */
+ for ( sfitem= sfs, cnt=0; sfitem!=NULL; sfitem=sfitem->next, ++cnt ) {
+ sfitem->tempttf = tmpfile2();
+ if ( sfitem->tempttf==NULL )
+ ok=0;
+ else
+ ok = _WriteTTFFont(sfitem->tempttf,sfitem->sf,format,sfitem->sizes,
+ bf,flags&~ttf_flag_dummyDSIG,sfitem->map,layer);
+ if ( !ok ) {
+ for ( sfi2=sfs; sfi2!=NULL; sfi2 = sfi2->next )
+ if ( sfi2->tempttf!=NULL )
+ fclose(sfi2->tempttf );
+ fclose(ttc);
+return( true );
+ }
+ fseek(sfitem->tempttf,0,SEEK_END);
+ sfitem->len = ftell(sfitem->tempttf);
+ }
+
+ putlong(ttc,CHR('t','t','c','f'));
+ if ( flags&ttf_flag_dummyDSIG ) {
+ putlong(ttc,0x00020000);
+ offset = 4*(3+cnt+4);
+ } else {
+ putlong(ttc,0x00010000);
+ offset = 4*(3+cnt);
+ }
+ putlong(ttc,cnt);
+ for ( sfitem= sfs; sfitem!=NULL; sfitem=sfitem->next ) {
+ putlong(ttc,offset);
+ offset += ((sfitem->len+3)>>2)<<2; /* Align on 4 byte boundary */
+ }
+ if ( flags&ttf_flag_dummyDSIG ) {
+ putlong(ttc,CHR('D','S','I','G'));
+ putlong(ttc,8); /* Length of dummy DSIG table */
+ putlong(ttc,0x00000001); /* Standard DSIG version */
+ putlong(ttc,0); /* No Signatures, no flags */
+ }
+ for ( sfitem= sfs; sfitem!=NULL; sfitem=sfitem->next )
+ CopySFNTAndFixup(ttc,sfitem->tempttf);
+ if ( ftell(ttc)!=offset )
+ IError("Miscalculated offsets in ttc");
+ } else
+
+ if ( ferror(ttc))
+ ok = false;
+ if ( fclose(ttc)==-1 )
+ ok = false;
+ if ( !ok )
+ LogError(_("Something went wrong"));
+return( ok );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottfaat.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottfaat.c
new file mode 100644
index 00000000000..13830224486
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottfaat.c
@@ -0,0 +1,2526 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include <utype.h>
+
+#include "ttf.h"
+
+/* This file contains routines to create some of the Apple Advanced Typography Tables */
+/* (or GX fonts) */
+
+/* ************************************************************************** */
+/* ************************* The 'kern' table ************************* */
+/* ************************************************************************** */
+
+
+/* Apple's docs imply that kerning info is always provided left to right, even*/
+/* for right to left scripts. If that be so then we need code in here to reverse */
+/* the order of the characters for right to left since pfaedit's convention */
+/* is to follow writing order rather than to go left to right */
+
+
+static void DumpKernClass(FILE *file, uint16 *class,int cnt,int add,int mul) {
+ int i, first=-1, last=-1;
+
+ for ( i=0; i<cnt; ++i ) {
+ if ( class[i] ) last = i;
+ if ( class[i] && first==-1 ) first = i;
+ }
+ putshort(file,first);
+ putshort(file,last-first+1);
+ for ( i=first; i<=last; ++i )
+ putshort(file,class[i]*mul+add);
+}
+
+static int morx_dumpASM(FILE *temp,ASM *sm, struct alltabs *at, SplineFont *sf );
+
+struct kerncounts {
+ int cnt;
+ int vcnt;
+ int mh, mv;
+ int kccnt;
+ int vkccnt;
+ int ksm;
+ int hsubs;
+ int *hbreaks;
+ int vsubs;
+ int *vbreaks;
+};
+
+static int CountKerns(struct alltabs *at, SplineFont *sf, struct kerncounts *kcnt) {
+ int i, cnt, vcnt, j, kccnt=0, vkccnt=0, ksm=0, mh, mv;
+ KernPair *kp;
+ KernClass *kc;
+ ASM *sm;
+
+ cnt = mh = vcnt = mv = 0;
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ j = 0;
+ for ( kp = sf->glyphs[at->gi.bygid[i]]->kerns; kp!=NULL; kp=kp->next )
+ if ( kp->off!=0 && kp->sc->ttf_glyph!=-1 &&
+ LookupHasDefault(kp->subtable->lookup ))
+ ++cnt, ++j;
+ if ( j>mh ) mh=j;
+ j=0;
+ for ( kp = sf->glyphs[at->gi.bygid[i]]->vkerns; kp!=NULL; kp=kp->next )
+ if ( kp->off!=0 && kp->sc->ttf_glyph!=-1 &&
+ LookupHasDefault(kp->subtable->lookup ))
+ ++vcnt, ++j;
+ if ( j>mv ) mv=j;
+ }
+ kcnt->cnt = cnt;
+ kcnt->vcnt = vcnt;
+ kcnt->mh = mh;
+ kcnt->mv = mv;
+ kcnt->hbreaks = kcnt->vbreaks = NULL;
+ if ( cnt>=10000 ) {
+ /* the sub-table size is 6*cnt+14 or so and needs to be less 65535 */
+ /* so break it up into little bits */
+ /* We might not need this when applemode is set because the subtable */
+ /* length is a long. BUT... there's a damn binsearch header with */
+ /* shorts in it still */
+ int b=0;
+ kcnt->hbreaks = malloc((at->gi.gcnt+1)*sizeof(int));
+ cnt = 0;
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ j = 0;
+ for ( kp = sf->glyphs[at->gi.bygid[i]]->kerns; kp!=NULL; kp=kp->next )
+ if ( kp->off!=0 && LookupHasDefault(kp->subtable->lookup ))
+ ++j;
+ if ( (cnt+j)*6>64000L && cnt!=0 ) {
+ kcnt->hbreaks[b++] = cnt;
+ cnt = 0;
+ }
+ cnt += j;
+ }
+ kcnt->hbreaks[b++] = cnt;
+ kcnt->hsubs = b;
+ } else if ( cnt!=0 )
+ kcnt->hsubs = 1;
+ else
+ kcnt->hsubs = 0;
+ if ( vcnt>=10000 ) {
+ int b=0;
+ kcnt->vbreaks = malloc((at->gi.gcnt+1)*sizeof(int));
+ vcnt = 0;
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ j = 0;
+ for ( kp = sf->glyphs[at->gi.bygid[i]]->vkerns; kp!=NULL; kp=kp->next )
+ if ( kp->off!=0 && LookupHasDefault(kp->subtable->lookup))
+ ++j;
+ if ( (vcnt+j)*6>64000L && vcnt!=0 ) {
+ kcnt->vbreaks[b++] = vcnt;
+ vcnt = 0;
+ }
+ vcnt += j;
+ }
+ kcnt->vbreaks[b++] = vcnt;
+ kcnt->vsubs = b;
+ } else if ( vcnt!=0 )
+ kcnt->vsubs = 1;
+ else
+ kcnt->vsubs = 0;
+
+ if ( at->applemode ) { /* if we aren't outputting Apple's extensions to kerning (by classes, and by state machine) then don't check for those extensions */
+ for ( kc=sf->kerns; kc!=NULL; kc = kc->next ) if ( LookupHasDefault(kc->subtable->lookup) )
+ ++kccnt;
+ for ( kc=sf->vkerns; kc!=NULL; kc = kc->next ) if ( LookupHasDefault(kc->subtable->lookup) )
+ ++vkccnt;
+ for ( sm=sf->sm; sm!=NULL; sm=sm->next )
+ if ( sm->type == asm_kern )
+ ++ksm;
+ }
+ kcnt->kccnt = kccnt;
+ kcnt->vkccnt = vkccnt;
+ kcnt->ksm = ksm;
+return( kcnt->hsubs + kcnt->vsubs + kccnt + vkccnt + ksm );
+}
+
+static void ttf_dumpsfkerns(struct alltabs *at, SplineFont *sf, int tupleIndex, int version) {
+ struct kerncounts kcnt;
+ int i, j, k, m, c, gid, tot, km;
+ KernPair *kp;
+ KernClass *kc;
+ ASM *sm;
+ uint16 *glnum, *offsets;
+ int isv;
+ int tupleMask = tupleIndex==-1 ? 0 : 0x2000;
+ int b, bmax;
+ int *breaks;
+ int winfail=0;
+ int subtableBeginPos,subtableEndPos;
+
+ if ( CountKerns(at,sf,&kcnt)==0 )
+return;
+
+ if ( tupleIndex==-1 ) tupleIndex = 0;
+
+ for ( isv=0; isv<2; ++isv ) {
+ c = isv ? kcnt.vcnt : kcnt.cnt;
+ bmax = isv ? kcnt.vsubs : kcnt.hsubs;
+ breaks = isv ? kcnt.vbreaks : kcnt.hbreaks;
+ if ( c!=0 ) {
+ km = isv ? kcnt.mv : kcnt.mh;
+ glnum = malloc(km*sizeof(uint16));
+ offsets = malloc(km*sizeof(uint16));
+ gid = 0;
+ for ( b=0; b<bmax; ++b ) {
+ c = bmax==1 ? c : breaks[b];
+
+ // skip subtable header because we don't know the number of kern pairs yet
+ subtableBeginPos=ftell(at->kern);
+ if(version==0) fseek(at->kern,7*sizeof(uint16),SEEK_CUR);
+ else fseek(at->kern,8*sizeof(uint16),SEEK_CUR);
+
+ for ( tot = 0; gid<at->gi.gcnt && tot<c; ++gid ) if ( at->gi.bygid[gid]!=-1 ) {
+ SplineChar *sc = sf->glyphs[at->gi.bygid[gid]];
+ // if requested, omit kern pairs with unmapped glyphs
+ // (required for compatibility with non-OpenType-aware Windows applications)
+ if( (at->gi.flags&ttf_flag_oldkernmappedonly) && (unsigned)(sc->unicodeenc)>0xFFFF ) continue;
+ m = 0;
+ for ( kp = isv ? sc->vkerns : sc->kerns; kp!=NULL; kp=kp->next ) {
+ // if requested, omit kern pairs with unmapped glyphs
+ // (required for compatibility with non-OpenType-aware Windows applications)
+ if( (at->gi.flags&ttf_flag_oldkernmappedonly) && (unsigned)(kp->sc->unicodeenc)>0xFFFF ) continue;
+ if ( kp->off!=0 && kp->sc->ttf_glyph!=-1 &&
+ LookupHasDefault(kp->subtable->lookup)) {
+ /* order the pairs */
+ for ( j=0; j<m; ++j )
+ if ( kp->sc->ttf_glyph<glnum[j] )
+ break;
+ for ( k=m; k>j; --k ) {
+ glnum[k] = glnum[k-1];
+ offsets[k] = offsets[k-1];
+ }
+ glnum[j] = kp->sc->ttf_glyph;
+ offsets[j] = kp->off;
+ ++m;
+ /* check if a pair will cause problems on Windows */
+ /* If the glyph is outside BMP, so either unicode >0xffff */
+ /* or -1. Cast to unsigned catches both */
+ if( (unsigned)(sf->glyphs[at->gi.bygid[gid]]->unicodeenc)>0xFFFF ||
+ (unsigned)(sf->glyphs[at->gi.bygid[glnum[j]]]->unicodeenc)>0xFFFF )
+ winfail++;
+ }
+ }
+ for ( j=0; j<m; ++j ) {
+ putshort(at->kern,gid);
+ putshort(at->kern,glnum[j]);
+ putshort(at->kern,offsets[j]);
+ }
+ tot += m;
+ }
+
+ // now we can fill the subtable header
+ c=tot;
+ subtableEndPos=ftell(at->kern);
+ fseek(at->kern,subtableBeginPos,SEEK_SET);
+ if ( version==0 ) {
+ putshort(at->kern,0); /* subtable version */
+ if ( c>10920 )
+ ff_post_error(_("Too many kern pairs"),_("The 'kern' table supports at most 10920 kern pairs in a subtable"));
+ putshort(at->kern,(7+3*c)*sizeof(uint16)); /* subtable length */
+ putshort(at->kern,!isv); /* coverage, flags=hor/vert&format=0 */
+ } else {
+ putlong(at->kern,(8+3*c)*sizeof(uint16)); /* subtable length */
+ /* Apple's new format has a completely different coverage format */
+ putshort(at->kern,(isv?0x8000:0)| /* format 0, horizontal/vertical flags (coverage) */
+ tupleMask);
+ putshort(at->kern,tupleIndex);
+ }
+ putshort(at->kern,c);
+ for ( i=1,j=0; i<=c; i<<=1, ++j );
+ i>>=1; --j;
+ putshort(at->kern,i*6); /* binary search headers */
+ putshort(at->kern,j);
+ putshort(at->kern,6*(c-i));
+ fseek(at->kern,subtableEndPos,SEEK_SET);
+ }
+ free(offsets);
+ free(glnum);
+ }
+ }
+ free(kcnt.hbreaks); free(kcnt.vbreaks);
+
+ if( winfail > 0 )
+ ff_post_error(_("Kerning is likely to fail on Windows"),_(
+ "Note: On Windows many apps can have problems with this font's kerning, because %d of its glyph kern pairs cannot be mapped to unicode-BMP kern pairs (eg, they have a Unicode value of -1) To avoid this, go to Generate, Options, and check the \"Windows-compatible \'kern\'\" option."),
+ winfail);
+
+ if ( at->applemode ) for ( isv=0; isv<2; ++isv ) {
+ for ( kc=isv ? sf->vkerns : sf->kerns; kc!=NULL; kc=kc->next ) if ( LookupHasDefault(kc->subtable->lookup) ) {
+ /* If we are here, we must be using version 1 */
+ uint32 len_pos = ftell(at->kern), pos;
+ uint16 *class1, *class2;
+ int first_cnt = kc->first_cnt;
+
+ /* OpenType fonts can actually have a set of glyphs in class[0] of*/
+ /* the first class. This happens when there are glyphs in the */
+ /* coverage table which are not in any of the classes. Otherwise */
+ /* class 0 is sort of useless in opentype */
+ if ( kc->firsts[0]!=NULL )
+ ++first_cnt;
+
+ putlong(at->kern,0); /* subtable length */
+ putshort(at->kern,(isv?0x8002:2)| /* format 2, horizontal/vertical flags (coverage) */
+ tupleMask);
+ putshort(at->kern,tupleIndex);
+
+ putshort(at->kern,sizeof(uint16)*kc->second_cnt);
+ putshort(at->kern,0); /* left classes */
+ putshort(at->kern,0); /* right classes */
+ putshort(at->kern,16); /* Offset to array, next byte */
+
+ if ( kc->firsts[0]!=NULL ) {
+ /* Create a dummy class to correspond to the mac's class 0 */
+ /* all entries will be 0 */
+ for ( i=0 ; i<kc->second_cnt; ++i )
+ putshort(at->kern,0);
+ }
+ for ( i=0; i<kc->first_cnt*kc->second_cnt; ++i )
+ putshort(at->kern,kc->offsets[i]);
+
+ pos = ftell(at->kern);
+ fseek(at->kern,len_pos+10,SEEK_SET);
+ putshort(at->kern,pos-len_pos);
+ fseek(at->kern,pos,SEEK_SET);
+ class1 = ClassesFromNames(sf,kc->firsts,kc->first_cnt,at->maxp.numGlyphs,NULL,true);
+ DumpKernClass(at->kern,class1,at->maxp.numGlyphs,16,sizeof(uint16)*kc->second_cnt);
+ free(class1);
+
+ pos = ftell(at->kern);
+ fseek(at->kern,len_pos+12,SEEK_SET);
+ putshort(at->kern,pos-len_pos);
+ fseek(at->kern,pos,SEEK_SET);
+ class2 = ClassesFromNames(sf,kc->seconds,kc->second_cnt,at->maxp.numGlyphs,NULL,true);
+ DumpKernClass(at->kern,class2,at->maxp.numGlyphs,0,sizeof(uint16));
+ free(class2);
+
+ pos = ftell(at->kern);
+ fseek(at->kern,len_pos,SEEK_SET);
+ putlong(at->kern,pos-len_pos);
+ fseek(at->kern,pos,SEEK_SET);
+ }
+ }
+
+ if ( at->applemode ) if ( kcnt.ksm!=0 ) {
+ for ( sm=sf->sm; sm!=NULL; sm=sm->next ) if ( sm->type == asm_kern ) {
+ uint32 len_pos = ftell(at->kern), pos;
+
+ putlong(at->kern,0); /* subtable length */
+ putshort(at->kern,((sm->flags&0x8000)?0x8001:1)| /* format 1, horizontal/vertical flags (coverage) */
+ tupleMask);
+ putshort(at->kern,tupleIndex);
+ morx_dumpASM(at->kern,sm,at,sf);
+
+ pos = ftell(at->kern);
+ fseek(at->kern,len_pos,SEEK_SET);
+ putlong(at->kern,pos-len_pos);
+ fseek(at->kern,pos,SEEK_SET);
+ }
+ }
+}
+
+void ttf_dumpkerns(struct alltabs *at, SplineFont *sf) {
+ int i, mmcnt=0, sum;
+ int version;
+ MMSet *mm = at->dovariations ? sf->mm : NULL;
+ struct kerncounts kcnt;
+ int must_use_old_style = 0;
+
+ if ( !at->applemode && (!at->opentypemode || (at->gi.flags&ttf_flag_oldkern)) ) {
+ must_use_old_style = true;
+ SFKernClassTempDecompose(sf,false);
+ mm = NULL;
+ } else {
+ if ( mm!=NULL ) {
+ for ( i=0; i<mm->instance_count; ++i ) {
+ mmcnt += CountKerns(at,mm->instances[i],&kcnt);
+ free(kcnt.hbreaks); free(kcnt.vbreaks);
+ }
+ sf = mm->normal;
+ }
+ }
+
+ sum = CountKerns(at,sf,&kcnt);
+ free(kcnt.hbreaks); free(kcnt.vbreaks);
+ if ( sum==0 && mmcnt==0 ) {
+ if ( must_use_old_style )
+ SFKernCleanup(sf,false);
+return;
+ }
+
+ /* Old kerning format (version 0) uses 16 bit quantities */
+ /* Apple's new format (version 0x00010000) uses 32 bit quantities */
+ at->kern = tmpfile2();
+ if ( must_use_old_style ||
+ ( kcnt.kccnt==0 && kcnt.vkccnt==0 && kcnt.ksm==0 && mmcnt==0 )) {
+ /* MS does not support format 1,2,3 kern sub-tables so if we have them */
+ /* we might as well admit that this table is for apple only and use */
+ /* the new format apple recommends. Otherwise, use the old format */
+ /* If we might need to store tuple data, use the new format */
+ putshort(at->kern,0); /* version */
+ putshort(at->kern,sum); /* number of subtables */
+ version = 0;
+ } else {
+ putlong(at->kern,0x00010000); /* version */
+ putlong(at->kern,sum+mmcnt); /* number of subtables */
+ version = 1;
+ }
+
+ ttf_dumpsfkerns(at, sf, -1, version);
+ if ( mm!=NULL ) {
+ for ( i=0; i<mm->instance_count; ++i )
+ ttf_dumpsfkerns(at, mm->instances[i], i, version);
+ }
+ if ( must_use_old_style )
+ SFKernCleanup(sf,false);
+
+ at->kernlen = ftell(at->kern);
+ if ( at->kernlen&2 )
+ putshort(at->kern,0); /* pad it */
+}
+
+/* ************************************************************************** */
+/* ************************* The 'lcar' table ************************* */
+/* ************************************************************************** */
+
+static PST *haslcaret(SplineChar *sc) {
+ PST *pst; int j;
+
+ for ( pst=sc->possub; pst!=NULL && pst->type!=pst_lcaret; pst=pst->next );
+ if ( pst!=NULL ) {
+ if ( !sc->lig_caret_cnt_fixed ) {
+ for ( j=pst->u.lcaret.cnt-1; j>=0 && pst->u.lcaret.carets[j]==0; --j );
+ if ( j==-1 )
+ pst = NULL;
+ } else {
+ if ( pst->u.lcaret.cnt==0 )
+ pst = NULL;
+ }
+ }
+return( pst );
+}
+
+void aat_dumplcar(struct alltabs *at, SplineFont *sf) {
+ int i, j, k, l, seg_cnt, tot, last, offset;
+ PST *pst;
+ FILE *lcar=NULL;
+ SplineChar *sc;
+ /* We do four passes. The first just calculates how much space we will need */
+ /* the second provides the top-level lookup table structure */
+ /* the third provides the arrays of offsets needed for type 4 lookup tables */
+ /* the fourth provides the actual data on the ligature carets */
+
+ for ( k=0; k<4; ++k ) {
+ for ( i=seg_cnt=tot=0; i<at->gi.gcnt; ++i )
+ if ( at->gi.bygid[i]!=-1 &&
+ (pst = haslcaret(sc = sf->glyphs[at->gi.bygid[i]]))!=NULL ) {
+ if ( k==1 )
+ tot = 0;
+ else if ( k==2 ) {
+ putshort(lcar,offset);
+ offset += 2 + 2*LigCaretCnt(sc);
+ } else if ( k==3 ) {
+ putshort(lcar,LigCaretCnt(sc));
+ for ( l=0; l<pst->u.lcaret.cnt; ++l )
+ if ( pst->u.lcaret.carets[l]!=0 || sc->lig_caret_cnt_fixed )
+ putshort(lcar,pst->u.lcaret.carets[l]);
+ }
+ last = i;
+ for ( j=i+1, ++tot; j<at->gi.gcnt && at->gi.bygid[j]!=-1; ++j ) {
+ if ( (pst = haslcaret(sc = sf->glyphs[at->gi.bygid[j]]))== NULL )
+ break;
+ ++tot;
+ last = j;
+ if ( k==2 ) {
+ putshort(lcar,offset);
+ offset += 2 + 2*LigCaretCnt(sc);
+ } else if ( k==3 ) {
+ putshort(lcar,LigCaretCnt(sc));
+ for ( l=0; l<pst->u.lcaret.cnt; ++l )
+ if ( pst->u.lcaret.carets[l]!=0 || sc->lig_caret_cnt_fixed )
+ putshort(lcar,pst->u.lcaret.carets[l]);
+ }
+ }
+ if ( k==1 ) {
+ putshort(lcar,last);
+ putshort(lcar,i);
+ putshort(lcar,offset);
+ offset += 2*tot;
+ }
+ ++seg_cnt;
+ i = j-1;
+ }
+ if ( k==0 ) {
+ if ( seg_cnt==0 )
+return;
+ lcar = tmpfile2();
+ putlong(lcar, 0x00010000); /* version */
+ putshort(lcar,0); /* data are distances (not points) */
+
+ putshort(lcar,4); /* Lookup table format 4 */
+ /* Binary search header */
+ putshort(lcar,6); /* Entry size */
+ putshort(lcar,seg_cnt); /* Number of segments */
+ for ( j=0,l=1; l<=seg_cnt; l<<=1, ++j );
+ --j; l>>=1;
+ putshort(lcar,6*l);
+ putshort(lcar,j);
+ putshort(lcar,6*(seg_cnt-l));
+ offset = /*4+2+*/6*2 + seg_cnt*6 + 6 /* fake segment at end */;
+ /* Offset relative to lookup table, not to lcar_start */
+ /* Or, that's true while we build the lookup table. Once we */
+ /* start working on the data offsets they are relative to */
+ /* lcar_start */
+ } else if ( k==1 ) { /* flag entry */
+ putshort(lcar,0xffff);
+ putshort(lcar,0xffff);
+ putshort(lcar,0);
+
+ offset += 6; /* Now offsets are relative to lcar_start */
+ }
+ }
+ at->lcar = lcar;
+ at->lcarlen = ftell(at->lcar);
+ if ( at->lcarlen&2 )
+ putshort(at->lcar,0);
+}
+
+/* ************************************************************************** */
+/* ************************* The 'morx' table ************************* */
+/* ************************* (and 'feat') ************************* */
+/* ************************************************************************** */
+
+/* Each lookup gets its own subtable, so there may be multiple subtables */
+/* with the same feature/setting. The subtables will be ordered the same */
+/* way the lookups are, which might lead to awkwardness if there are many */
+/* chains and the same feature occurs in several of them */
+/* (only the default language will be used) */
+struct feature {
+ int16 featureType, featureSetting;
+ MacFeat *mf, *smf;
+ struct macsetting *ms, *sms;
+ unsigned int vertOnly: 1;
+ unsigned int r2l: 1; /* I think this is the "descending" flag */
+ unsigned int needsOff: 1;
+ unsigned int singleMutex: 1;
+ unsigned int dummyOff: 1;
+ uint8 subtable_type;
+ int chain;
+ int32 flag, offFlags;
+ uint32 feature_start;
+ uint32 feature_len; /* Does not include header yet */
+ struct feature *next; /* features in output order */
+ struct feature *nexttype; /* features in feature/setting order */
+ struct feature *nextsame; /* all features with the same feature/setting */
+ int setting_cnt, setting_index, real_index;
+};
+
+static struct feature *featureFromSubtable(SplineFont *sf, struct lookup_subtable *sub );
+static int PSTHasTag(PST *pst, uint32 tag);
+
+static void morxfeaturesfree(struct feature *features) {
+ struct feature *n;
+
+ for ( ; features!=NULL; features=n ) {
+ n = features->next;
+ chunkfree( features,sizeof(*features) );
+ }
+}
+
+static void mort_classes(FILE *temp,SplineFont *sf,struct glyphinfo *gi) {
+ int first, last, i, cnt;
+ /* Mort tables just have a trimmed byte array for the classes */
+
+ for ( first=0; first<gi->gcnt; ++first )
+ if ( gi->bygid[first]!=-1 && sf->glyphs[gi->bygid[first]]->lsidebearing!=1 )
+ break;
+ for ( last=gi->gcnt-1; last>first; --last )
+ if ( gi->bygid[last]!=-1 && sf->glyphs[gi->bygid[last]]->lsidebearing!=1 )
+ break;
+ cnt = last-first+1;
+
+ putshort(temp,first);
+ putshort(temp,cnt);
+ for ( i=first; i<=last; ++i )
+ if ( gi->bygid[i]==-1 )
+ putc(1,temp);
+ else
+ putc(sf->glyphs[gi->bygid[i]]->lsidebearing,temp);
+ if ( cnt&1 )
+ putc(1,temp); /* Pad to a word boundary */
+}
+
+static void morx_lookupmap(FILE *temp,SplineChar **glyphs,uint16 *maps,int gcnt) {
+ int i, j, k, l, seg_cnt, tot, last, offset;
+ /* We do four passes. The first just calculates how much space we will need (if any) */
+ /* the second provides the top-level lookup table structure */
+ /* the third provides the arrays of offsets needed for type 4 lookup tables */
+
+ for ( k=0; k<3; ++k ) {
+ for ( i=seg_cnt=tot=0; i<gcnt; ++i ) {
+ if ( glyphs[i]==NULL )
+ continue;
+ if ( k==1 )
+ tot = 0;
+ else if ( k==2 ) {
+ putshort(temp,maps[i]);
+ }
+ last = i;
+ for ( j=i+1, ++tot; j<gcnt && glyphs[j]!=NULL && glyphs[j]->ttf_glyph==glyphs[i]->ttf_glyph+j-i; ++j ) {
+ ++tot;
+ last = j;
+ if ( k==2 ) {
+ putshort(temp,maps[j]);
+ }
+ }
+ if ( k==1 ) {
+ putshort(temp,glyphs[last]->ttf_glyph);
+ putshort(temp,glyphs[i]->ttf_glyph);
+ putshort(temp,offset);
+ offset += 2*tot;
+ }
+ ++seg_cnt;
+ i = j-1;
+ }
+ if ( k==0 ) {
+ putshort(temp,4); /* Lookup table format 4 */
+ /* Binary search header */
+ putshort(temp,6); /* Entry size */
+ putshort(temp,seg_cnt); /* Number of segments */
+ for ( j=0,l=1; l<=seg_cnt; l<<=1, ++j );
+ --j; l>>=1;
+ putshort(temp,6*l);
+ putshort(temp,j);
+ putshort(temp,6*(seg_cnt-l));
+ if ( seg_cnt==0 )
+return;
+ offset = 6*2 + seg_cnt*6 + 6;
+ } else if ( k==1 ) { /* flag entry */
+ putshort(temp,0xffff);
+ putshort(temp,0xffff);
+ putshort(temp,0);
+ }
+ }
+}
+
+static void morx_dumpSubsFeature(FILE *temp,SplineChar **glyphs,uint16 *maps,int gcnt) {
+ morx_lookupmap(temp,glyphs,maps,gcnt);
+}
+
+static struct feature *aat_dumpmorx_substitutions(struct alltabs *at, SplineFont *sf,
+ FILE *temp, struct feature *features, struct lookup_subtable *sub) {
+ int i, k, gcnt;
+ SplineChar *sc, *msc, **glyphs;
+ uint16 *maps;
+ struct feature *cur;
+ PST *pst;
+
+ for ( k=0; k<2; ++k ) {
+ gcnt = 0;
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ sc = sf->glyphs[at->gi.bygid[i]];
+ for ( pst=sc->possub; pst!=NULL && pst->subtable!=sub; pst=pst->next );
+ if ( pst!=NULL ) {
+ if ( k==1 ) {
+ msc = SFGetChar(sf,-1,pst->u.subs.variant);
+ glyphs[gcnt] = sc;
+ if ( msc!=NULL && msc->ttf_glyph!=-1 ) {
+ maps[gcnt++] = msc->ttf_glyph;
+ } else if ( msc==NULL &&
+ strcmp(pst->u.subs.variant,MAC_DELETED_GLYPH_NAME)==0 ) {
+ maps[gcnt++] = 0xffff;
+ }
+ } else
+ ++gcnt;
+ }
+ }
+ if ( k==0 ) {
+ if ( gcnt==0 )
+return( features );
+ glyphs = malloc((gcnt+1)*sizeof(SplineChar *));
+ maps = malloc((gcnt+1)*sizeof(uint16));
+ } else {
+ glyphs[gcnt] = NULL; maps[gcnt] = 0;
+ }
+ }
+
+ cur = featureFromSubtable(sf,sub);
+ cur->next = features;
+ cur->r2l = sub->lookup->lookup_flags&pst_r2l ? true : false;
+ features = cur;
+ cur->subtable_type = 4;
+ cur->feature_start = ftell(temp);
+ morx_dumpSubsFeature(temp,glyphs,maps,gcnt);
+ if ( (ftell(temp)-cur->feature_start)&1 )
+ putc('\0',temp);
+ if ( (ftell(temp)-cur->feature_start)&2 )
+ putshort(temp,0);
+ cur->feature_len = ftell(temp)-cur->feature_start;
+ free(glyphs); free(maps);
+return( features);
+}
+
+static LigList *LigListMatchSubtable(SplineFont *sf,LigList *ligs,
+ struct lookup_subtable *sub) {
+ LigList *l;
+
+ for ( l=ligs; l!=NULL; l=l->next )
+ if ( l->lig->subtable==sub )
+return( l );
+return( NULL );
+}
+
+static int IsMarkChar( SplineChar *sc ) {
+ AnchorPoint *ap;
+
+ ap=sc->anchor;
+ while ( ap!=NULL && (ap->type==at_centry || ap->type==at_cexit) )
+ ap = ap->next;
+ if ( ap!=NULL && (ap->type==at_mark || ap->type==at_basemark) )
+return( true );
+
+return( false );
+}
+
+struct transition { uint16 next_state, dontconsume, ismark, trans_ent; LigList *l; };
+struct trans_entries { uint16 next_state, flags, act_index; LigList *l; };
+static void morx_dumpLigaFeature(FILE *temp,SplineChar **glyphs,int gcnt,
+ struct lookup_subtable *sub, struct alltabs *at, SplineFont *sf,
+ int ignoremarks) {
+ LigList *l;
+ struct splinecharlist *comp;
+ uint16 *used = calloc(at->maxp.numGlyphs,sizeof(uint16));
+ SplineChar **cglyphs;
+ uint16 *map;
+ int i,j,k,class, state_max, state_cnt, base, last;
+ uint32 start;
+ struct transition **states;
+ struct trans_entries *trans;
+ int trans_cnt;
+ int maxccnt=0;
+ int acnt, lcnt, charcnt;
+ uint32 *actions;
+ uint16 *components, *lig_glyphs;
+ uint32 here;
+ struct splinecharlist *scl;
+ int anymarks;
+
+ /* figure out the classes (one for each character used to make a lig) */
+ for ( i=0; i<gcnt; ++i ) {
+ used[glyphs[i]->ttf_glyph] = true;
+ for ( l=glyphs[i]->ligofme; l!=NULL; l=l->next ) if ( l->lig->subtable==sub ) {
+ for ( comp = l->components; comp!=NULL; comp=comp->next )
+ used[comp->sc->ttf_glyph] = true;
+ }
+ }
+ class = 4;
+ for ( i=0; i<at->maxp.numGlyphs; ++i ) if ( used[i] )
+ used[i] = class++;
+ anymarks = false;
+ charcnt = class;
+ if ( ignoremarks ) {
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ if ( IsMarkChar(sf->glyphs[at->gi.bygid[i]])) {
+ anymarks = true;
+ ++charcnt;
+ used[i] = class;
+ }
+ }
+ if ( anymarks )
+ ++class;
+ }
+ cglyphs = malloc((charcnt+1)*sizeof(SplineChar *));
+ map = malloc((charcnt+1)*sizeof(uint16));
+ j=0;
+ for ( i=k=0; i<at->maxp.numGlyphs; ++i ) if ( used[i] ) {
+ j = at->gi.bygid[i];
+ if ( j!=-1 ) {
+ cglyphs[k] = sf->glyphs[j];
+ map[k++] = used[i];
+ }
+ }
+ cglyphs[k] = NULL;
+
+ start = ftell(temp);
+ putlong(temp,class);
+ putlong(temp,7*sizeof(uint32));
+ putlong(temp,0); /* Fill in later */
+ putlong(temp,0);
+ putlong(temp,0);
+ putlong(temp,0);
+ putlong(temp,0);
+ morx_lookupmap(temp,cglyphs,map,k); /* dump the class lookup table */
+ free( cglyphs ); free( map );
+ here = ftell(temp);
+ fseek(temp,start+2*sizeof(uint32),SEEK_SET);
+ putlong(temp,here-start); /* Point to start of state arrays */
+ fseek(temp,0,SEEK_END);
+
+ /* Now build the state machine */
+ /* Note: the ligofme list is so ordered that the longest ligatures come first */
+ /* we will depend on that in the case of "ffl", "ffi", "ff" */
+ state_max = 40; state_cnt = 2;
+ states = malloc(state_max*sizeof(struct transition *));
+ states[0] = calloc(class,sizeof(struct transition)); /* Initial state */
+ states[1] = calloc(class,sizeof(struct transition)); /* other Initial state */
+ for ( i=0; i<gcnt; ++i ) {
+ if ( state_cnt>=state_max )
+ states = realloc(states,(state_max += 40)*sizeof(struct transition *));
+ base = state_cnt;
+ states[0][used[glyphs[i]->ttf_glyph]].next_state = state_cnt;
+ states[1][used[glyphs[i]->ttf_glyph]].next_state = state_cnt;
+ states[state_cnt++] = calloc(class,sizeof(struct transition));
+ for ( l=glyphs[i]->ligofme; l!=NULL; l=l->next ) if ( l->lig->subtable==sub ) {
+ if ( l->ccnt > maxccnt ) maxccnt = l->ccnt;
+ last = base;
+ for ( comp = l->components; comp!=NULL; comp=comp->next ) {
+ if ( states[last][used[comp->sc->ttf_glyph]].next_state==0 ) {
+ if ( comp->next==NULL )
+ states[last][used[comp->sc->ttf_glyph]].l = l;
+ else {
+ states[last][used[comp->sc->ttf_glyph]].next_state = state_cnt;
+ if ( state_cnt>=state_max )
+ states = realloc(states,(state_max += 40)*sizeof(struct transition *));
+ last = state_cnt;
+ states[state_cnt++] = calloc(class,sizeof(struct transition));
+ }
+ } else {
+ last = states[last][used[comp->sc->ttf_glyph]].next_state;
+ if ( comp->next==NULL ) {
+ /* this is where we depend on the ordering */
+ for ( j=0; j<class; ++j )
+ if ( states[last][j].next_state==0 && states[last][j].l==NULL ) {
+ states[last][j].l = l;
+ states[last][j].dontconsume = true;
+ /* the next state should continue to be 0 (initial) */
+ }
+ }
+ }
+ }
+ }
+ }
+ if ( anymarks ) {
+ /* behavior for a mark is the same everywhere: stay in current state */
+ /* do no operations. consume the mark */
+ for ( i=0; i<state_cnt; ++i ) {
+ states[i][class-1].next_state = i;
+ states[i][class-1].ismark = true;
+ }
+ }
+ /* Ok, we've got the state machine now. Convert it into apple's wierd */
+ /* (space saving) format */
+ trans = malloc(class*state_cnt*sizeof(struct trans_entries));
+ trans_cnt = 0;
+ for ( i=0; i<state_cnt; ++i ) for ( j=0; j<class; ++j ) {
+ if ( states[i][j].ismark )
+ k = trans_cnt;
+ else for ( k=0; k<trans_cnt; ++k ) {
+ if ( trans[k].next_state==states[i][j].next_state &&
+ (trans[k].flags&0x4000?1:0) == states[i][j].dontconsume &&
+ trans[k].l ==states[i][j].l )
+ break;
+ }
+ states[i][j].trans_ent = k;
+ if ( k==trans_cnt ) {
+ trans[k].next_state = states[i][j].next_state;
+ trans[k].l = states[i][j].l;
+ trans[k].flags = 0;
+ if ( states[i][j].dontconsume )
+ trans[k].flags = 0x4000;
+ else if ( states[i][j].ismark )
+ /* Do nothing */;
+ else if ( trans[k].next_state!=0 || trans[k].l!=NULL )
+ trans[k].flags = 0x8000;
+ if ( trans[k].l!=NULL )
+ trans[k].flags |= 0x2000;
+ trans[k].act_index = 0;
+ ++trans_cnt;
+ }
+ }
+ /* Oops. Bug. */
+ /* Suppose we have two ligatures f+l=>fl & s+t->st. */
+ /* Suppose we get input "fst" */
+ /* Now the state machine we've built so far will go to the f branch, see */
+ /* the "s" and go back to state 0 */
+ /* Obviously that's wrong, we've lost the st. So either we go back to 0 */
+ /* but don't advance the glyph, or we take the transition from state 0 */
+ /* and copy it to here. The second is easier for me just now */
+ for ( i=2; i<state_cnt; ++i ) for ( j=4; j<class; ++j ) {
+ if ( states[i][j].trans_ent == 0 && states[0][j].trans_ent != 0 )
+ states[i][j].trans_ent = states[0][j].trans_ent;
+ }
+
+ /* Dump out the state machine */
+ for ( i=0; i<state_cnt; ++i ) for ( j=0; j<class; ++j )
+ putshort( temp, states[i][j].trans_ent );
+
+ /* Now figure out the ligature actions (and all the other tables) */
+ actions = malloc(trans_cnt*maxccnt*sizeof(uint32));
+ components = malloc(trans_cnt*maxccnt*sizeof(uint16));
+ lig_glyphs = malloc(trans_cnt*sizeof(uint16));
+ acnt = lcnt = 0;
+ for ( i=0; i<trans_cnt; ++i ) if ( trans[i].l!=NULL ) {
+ lig_glyphs[lcnt] = trans[i].l->lig->u.lig.lig->ttf_glyph;
+ /* component Glyphs get popped off the stack in the reverse order */
+ /* so we must built our tables backwards */
+ components[acnt+trans[i].l->ccnt-1] = lcnt;
+ actions[acnt+trans[i].l->ccnt-1] = 0x80000000 |
+ ((acnt+trans[i].l->ccnt-1 - trans[i].l->first->ttf_glyph)&0x3fffffff);
+ for ( scl=trans[i].l->components,j=trans[i].l->ccnt-2; scl!=NULL; scl=scl->next, --j ) {
+ components[acnt+j] = 0;
+ actions[acnt+j] = (acnt+j - scl->sc->ttf_glyph)&0x3fffffff;
+ }
+ trans[i].act_index = acnt;
+ ++lcnt;
+ acnt += trans[i].l->ccnt;
+ }
+
+ /* Now we know how big all the tables will be. Dump out their locations */
+ here = ftell(temp);
+ fseek(temp,start+3*sizeof(uint32),SEEK_SET);
+ putlong(temp,here-start); /* Point to start of entry array */
+ putlong(temp,here-start+6*trans_cnt); /* Point to start of actions */
+ putlong(temp,here-start+6*trans_cnt+4*acnt);/* Point to start of components */
+ putlong(temp,here-start+6*trans_cnt+6*acnt);/* Point to start of ligatures */
+ fseek(temp,0,SEEK_END);
+
+ /* Now dump the transitions */
+ for ( i=0; i<trans_cnt; ++i ) {
+ putshort(temp,trans[i].next_state);
+ putshort(temp,trans[i].flags);
+ putshort(temp,trans[i].act_index);
+ }
+ /* And the actions */
+ for ( i=0; i<acnt; ++i )
+ putlong(temp,actions[i]);
+ /* And the components */
+ for ( i=0; i<acnt; ++i )
+ putshort(temp,components[i]);
+ /* Do A simple check on the validity of what we've done */
+ if ( here+6*trans_cnt+6*acnt != ftell(temp) )
+ IError( "Offset wrong in morx ligature table\n" );
+ /* And finally the ligature glyph indeces */
+ for ( i=0; i<lcnt; ++i )
+ putshort(temp,lig_glyphs[i]);
+
+ /* clean up */
+ free(actions); free(components); free(lig_glyphs);
+ free(trans);
+ for ( i=0; i<state_cnt; ++i )
+ free(states[i]);
+ free(states);
+ free(used);
+}
+
+static struct feature *aat_dumpmorx_ligatures(struct alltabs *at, SplineFont *sf,
+ FILE *temp, struct feature *features, struct lookup_subtable *sub) {
+ int i, k, gcnt;
+ SplineChar *sc, *ssc, **glyphs;
+ struct feature *cur;
+ LigList *l;
+
+ glyphs = malloc((at->maxp.numGlyphs+1)*sizeof(SplineChar *));
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL )
+ sf->glyphs[i]->ticked = false;
+
+ for ( i=0; i<at->gi.gcnt; ++i )
+ if ( at->gi.bygid[i]!=-1 && !(sc=sf->glyphs[at->gi.bygid[i]])->ticked &&
+ (l = LigListMatchSubtable(sf,sc->ligofme,sub))!=NULL ) {
+ int ignoremarks = sub->lookup->lookup_flags & pst_ignorecombiningmarks ? 1 : 0 ;
+ for ( k=i, gcnt=0; k<at->gi.gcnt; ++k )
+ if ( at->gi.bygid[k]!=-1 &&
+ (ssc=sf->glyphs[at->gi.bygid[k]])!=NULL && !ssc->ticked &&
+ LigListMatchSubtable(sf,ssc->ligofme,sub)) {
+ glyphs[gcnt++] = ssc;
+ ssc->ticked = true;
+ }
+ glyphs[gcnt] = NULL;
+ cur = featureFromSubtable(sf,sub);
+ cur->next = features;
+ features = cur;
+ cur->subtable_type = 2; /* ligature */
+ cur->feature_start = ftell(temp);
+ morx_dumpLigaFeature(temp,glyphs,gcnt,sub,at,sf,ignoremarks);
+ if ( (ftell(temp)-cur->feature_start)&1 )
+ putc('\0',temp);
+ if ( (ftell(temp)-cur->feature_start)&2 )
+ putshort(temp,0);
+ cur->feature_len = ftell(temp)-cur->feature_start;
+ cur->r2l = sub->lookup->lookup_flags&pst_r2l ? true : false;
+ }
+
+ free(glyphs);
+return( features);
+}
+
+static void morx_dumpnestedsubs(FILE *temp,SplineFont *sf,OTLookup *otl,struct glyphinfo *gi) {
+ int i, j, gcnt;
+ PST *pst;
+ SplineChar **glyphs, *sc;
+ uint16 *map;
+ struct lookup_subtable *sub = otl->subtables; /* Mac can't have more than one subtable/lookup */
+
+ for ( j=0; j<2; ++j ) {
+ gcnt = 0;
+ for ( i = 0; i<gi->gcnt; ++i ) if ( gi->bygid[i]!=-1 ) {
+ for ( pst=sf->glyphs[gi->bygid[i]]->possub;
+ pst!=NULL && pst->subtable!=sub; pst=pst->next );
+ if ( pst!=NULL && pst->type==pst_substitution &&
+ (sc=SFGetChar(sf,-1,pst->u.subs.variant))!=NULL &&
+ sc->ttf_glyph!=-1 ) {
+ if ( j ) {
+ glyphs[gcnt] = sf->glyphs[gi->bygid[i]];
+ map[gcnt] = sc->ttf_glyph;
+ }
+ ++gcnt;
+ }
+ }
+ if ( !j ) {
+ glyphs = malloc((gcnt+1)*sizeof(SplineChar *));
+ map = malloc(gcnt*sizeof(uint16));
+ glyphs[gcnt] = NULL;
+ }
+ }
+ morx_lookupmap(temp,glyphs,map,gcnt);
+ free(glyphs);
+ free(map);
+}
+
+static uint16 *NamesToGlyphs(SplineFont *sf,char *names,uint16 *cnt) {
+ char *pt, *start;
+ int c, ch;
+ uint16 *ret;
+ SplineChar *sc;
+
+ for ( c=0, pt=names; *pt; ++pt )
+ if ( *pt==' ' ) ++c;
+ ret = malloc((c+1)*sizeof(uint16));
+
+ for ( c=0, pt=names; *pt; ) {
+ while ( *pt==' ' ) ++pt;
+ if ( *pt=='\0' )
+ break;
+ start = pt;
+ while ( *pt!=' ' && *pt!='\0' ) ++pt;
+ ch = *pt; *pt='\0';
+ sc = SFGetChar(sf,-1,start);
+ *pt = ch;
+ if ( sc!=NULL && sc->ttf_glyph!=-1 )
+ ret[c++] = sc->ttf_glyph;
+ }
+ *cnt = c;
+return( ret );
+}
+
+static int morx_dumpASM(FILE *temp,ASM *sm, struct alltabs *at, SplineFont *sf ) {
+ int i, j, k, gcnt, ch;
+ char *pt, *end;
+ uint16 *map;
+ SplineChar **glyphs, *sc;
+ int stcnt, tcnt;
+ struct ins { char *names; uint16 len,pos; uint16 *glyphs; } *subsins=NULL;
+ OTLookup **subslookups=NULL;
+ uint32 start, here, substable_pos, state_offset;
+ struct transdata { uint16 transition, mark_index, cur_index; } *transdata;
+ struct trans { uint16 ns, flags, mi, ci; } *trans;
+ int ismort = sm->type == asm_kern;
+ FILE *kernvalues;
+
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i]!=NULL )
+ sf->glyphs[i]->lsidebearing = 1;
+
+ gcnt = 0;
+ for ( i=4; i<sm->class_cnt; ++i ) {
+ for ( pt = sm->classes[i]; ; pt=end ) {
+ while ( *pt==' ' ) ++pt;
+ if ( *pt=='\0' )
+ break;
+ for ( end=pt; *end!='\0' && *end!=' '; ++end );
+ ch = *end; *end = '\0';
+ sc = SFGetChar(sf,-1,pt);
+ *end = ch;
+ if ( sc!=NULL ) {
+ sc->lsidebearing = i;
+ ++gcnt;
+ }
+ }
+ }
+ glyphs = malloc((gcnt+1)*sizeof(SplineChar *));
+ map = malloc((gcnt+1)*sizeof(uint16));
+ gcnt = 0;
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 && sf->glyphs[at->gi.bygid[i]]->lsidebearing!=1 ) {
+ glyphs[gcnt] = sf->glyphs[at->gi.bygid[i]];
+ map[gcnt++] = sf->glyphs[at->gi.bygid[i]]->lsidebearing;
+ }
+ glyphs[gcnt] = NULL;
+
+ /* Give each subs tab an index into the mac's substitution lookups */
+ transdata = calloc(sm->state_cnt*sm->class_cnt,sizeof(struct transdata));
+ stcnt = 0;
+ subslookups = NULL; subsins = NULL;
+ if ( sm->type==asm_context ) {
+ subslookups = malloc(2*sm->state_cnt*sm->class_cnt*sizeof(OTLookup));
+ for ( j=0; j<sm->state_cnt*sm->class_cnt; ++j ) {
+ struct asm_state *this = &sm->state[j];
+ transdata[j].mark_index = transdata[j].cur_index = 0xffff;
+ if ( this->u.context.mark_lookup!=NULL ) {
+ for ( i=0; i<stcnt; ++i )
+ if ( subslookups[i]==this->u.context.mark_lookup )
+ break;
+ if ( i==stcnt )
+ subslookups[stcnt++] = this->u.context.mark_lookup;
+ transdata[j].mark_index = i;
+ }
+ if ( this->u.context.cur_lookup!=NULL ) {
+ for ( i=0; i<stcnt; ++i )
+ if ( subslookups[i]==this->u.context.cur_lookup )
+ break;
+ if ( i==stcnt )
+ subslookups[stcnt++] = this->u.context.cur_lookup;
+ transdata[j].cur_index = i;
+ }
+ }
+ } else if ( sm->type==asm_insert ) {
+ subsins = malloc(2*sm->state_cnt*sm->class_cnt*sizeof(struct ins));
+ for ( j=0; j<sm->state_cnt*sm->class_cnt; ++j ) {
+ struct asm_state *this = &sm->state[j];
+ transdata[j].mark_index = transdata[j].cur_index = 0xffff;
+ if ( this->u.insert.mark_ins!=0 ) {
+ for ( i=0; i<stcnt; ++i )
+ if ( strcmp(subsins[i].names,this->u.insert.mark_ins)==0 )
+ break;
+ if ( i==stcnt ) {
+ subsins[stcnt].pos = stcnt==0 ? 0 : subsins[stcnt-1].pos +
+ subsins[stcnt-1].len;
+ subsins[stcnt].names = this->u.insert.mark_ins;
+ subsins[stcnt].glyphs = NamesToGlyphs(sf,subsins[stcnt].names,&subsins[stcnt].len);
+ ++stcnt;
+ }
+ transdata[j].mark_index = subsins[i].pos;
+ }
+ if ( this->u.insert.cur_ins!=0 ) {
+ for ( i=0; i<stcnt; ++i )
+ if ( strcmp(subsins[i].names,this->u.insert.cur_ins)==0 )
+ break;
+ if ( i==stcnt ) {
+ subsins[stcnt].pos = stcnt==0 ? 0 : subsins[stcnt-1].pos +
+ subsins[stcnt-1].len;
+ subsins[stcnt].names = this->u.insert.cur_ins;
+ subsins[stcnt].glyphs = NamesToGlyphs(sf,subsins[stcnt].names,&subsins[stcnt].len);
+ ++stcnt;
+ }
+ transdata[j].cur_index = subsins[i].pos;
+ }
+ }
+ } else if ( sm->type==asm_kern ) {
+ int off=0;
+ kernvalues = tmpfile2();
+ for ( j=0; j<sm->state_cnt*sm->class_cnt; ++j ) {
+ struct asm_state *this = &sm->state[j];
+ transdata[j].mark_index = 0xffff;
+ if ( this->u.kern.kcnt!=0 ) {
+ for ( k=0; k<j; ++k )
+ if ( sm->state[k].u.kern.kcnt==this->u.kern.kcnt &&
+ memcmp(sm->state[k].u.kern.kerns,this->u.kern.kerns,
+ this->u.kern.kcnt*sizeof(int16))==0 )
+ break;
+ if ( k!=j )
+ transdata[j].mark_index = transdata[k].mark_index;
+ else {
+ transdata[j].mark_index = off;
+ off += this->u.kern.kcnt*sizeof(int16);
+ /* kerning values must be output backwards */
+ for ( k=this->u.kern.kcnt-1; k>=1; --k )
+ putshort(kernvalues,this->u.kern.kerns[k]&~1);
+ /* And the last one must be odd */
+ putshort(kernvalues,this->u.kern.kerns[0]|1);
+ }
+ }
+ }
+ }
+
+ trans = malloc(sm->state_cnt*sm->class_cnt*sizeof(struct trans));
+ tcnt = 0;
+ for ( j=0; j<sm->state_cnt*sm->class_cnt; ++j ) {
+ struct asm_state *this = &sm->state[j];
+ for ( i=0; i<tcnt; ++i )
+ if ( trans[i].ns==this->next_state && trans[i].flags==this->flags &&
+ trans[i].mi==transdata[j].mark_index &&
+ trans[i].ci==transdata[j].cur_index )
+ break;
+ if ( i==tcnt ) {
+ trans[tcnt].ns = this->next_state;
+ trans[tcnt].flags = this->flags;
+ trans[tcnt].mi = transdata[j].mark_index;
+ trans[tcnt++].ci = transdata[j].cur_index;
+ }
+ transdata[j].transition = i;
+ }
+
+
+ /* Output the header */
+ start = ftell(temp);
+ if ( ismort /* old format still used for kerning */ ) {
+ putshort(temp,sm->class_cnt);
+ putshort(temp,5*sizeof(uint16)); /* class offset */
+ putshort(temp,0); /* state offset */
+ putshort(temp,0); /* transition entry offset */
+ putshort(temp,0); /* kerning values offset */
+ mort_classes(temp,sf,&at->gi); /* dump the class table */
+ } else {
+ putlong(temp,sm->class_cnt);
+ if ( sm->type==asm_indic ) {
+ putlong(temp,4*sizeof(uint32)); /* class offset */
+ putlong(temp,0); /* state offset */
+ putlong(temp,0); /* transition entry offset */
+ } else {
+ putlong(temp,5*sizeof(uint32)); /* class offset */
+ putlong(temp,0); /* state offset */
+ putlong(temp,0); /* transition entry offset */
+ putlong(temp,0); /* substitution/insertion table offset */
+ }
+ morx_lookupmap(temp,glyphs,map,gcnt);/* dump the class lookup table */
+ }
+ free(glyphs); free(map);
+
+
+ state_offset = ftell(temp)-start;
+ if ( ismort ) {
+ fseek(temp,start+2*sizeof(uint16),SEEK_SET);
+ putshort(temp,state_offset); /* Point to start of state arrays */
+ } else {
+ fseek(temp,start+2*sizeof(uint32),SEEK_SET);
+ putlong(temp,state_offset); /* Point to start of state arrays */
+ }
+ fseek(temp,0,SEEK_END);
+
+ if ( ismort ) {
+ for ( j=0; j<sm->state_cnt*sm->class_cnt; ++j )
+ putc(transdata[j].transition,temp);
+ if ( ftell(temp)&1 )
+ putc(0,temp); /* Pad to a word boundry */
+ } else {
+ for ( j=0; j<sm->state_cnt*sm->class_cnt; ++j )
+ putshort(temp,transdata[j].transition);
+ }
+ free(transdata);
+
+ here = ftell(temp);
+ if ( ismort ) {
+ fseek(temp,start+3*sizeof(uint16),SEEK_SET);
+ putshort(temp,here-start); /* Point to start of transition arrays */
+ } else {
+ fseek(temp,start+3*sizeof(uint32),SEEK_SET);
+ putlong(temp,here-start); /* Point to start of transition arrays */
+ }
+ fseek(temp,0,SEEK_END);
+
+ /* Now the transitions */
+ if ( sm->type==asm_kern ) {
+ substable_pos = here+tcnt*2*sizeof(int16);
+ for ( i=0; i<tcnt; ++i ) {
+ /* mort tables use an offset rather than the state number */
+ putshort(temp,trans[i].ns*sm->class_cnt+state_offset);
+ if ( trans[i].mi!=0xffff )
+ trans[i].flags |= substable_pos-start+trans[i].mi;
+ putshort(temp,trans[i].flags);
+ }
+ } else {
+ for ( i=0; i<tcnt; ++i ) {
+ putshort(temp,trans[i].ns);
+ putshort(temp,trans[i].flags);
+ if ( sm->type!=asm_indic && sm->type!=asm_kern ) {
+ putshort(temp,trans[i].mi );
+ putshort(temp,trans[i].ci );
+ }
+ }
+ }
+ free(trans);
+
+ if ( sm->type==asm_context ) {
+ substable_pos = ftell(temp);
+ fseek(temp,start+4*sizeof(uint32),SEEK_SET);
+ putlong(temp,substable_pos-start); /* Point to start of substitution lookup offsets */
+ fseek(temp,0,SEEK_END);
+
+ /* And finally the substitutions */
+ for ( i=0; i<stcnt; ++i )
+ putlong(temp,0); /* offsets to the substitutions */
+ for ( i=0; i<stcnt; ++i ) {
+ here = ftell(temp);
+ fseek(temp,substable_pos+i*sizeof(uint32),SEEK_SET);
+ putlong(temp,here-substable_pos);
+ fseek(temp,0,SEEK_END);
+ morx_dumpnestedsubs(temp,sf,subslookups[i],&at->gi);
+ }
+ free(subslookups);
+ } else if ( sm->type==asm_insert ) {
+ substable_pos = ftell(temp);
+ fseek(temp,start+4*sizeof(uint32),SEEK_SET);
+ putlong(temp,substable_pos-start); /* Point to start of insertions */
+ fseek(temp,0,SEEK_END);
+
+ for ( i=0; i<stcnt; ++i ) {
+ for ( j=0; j<subsins[i].len; ++j )
+ putshort(temp,subsins[i].glyphs[j]);
+ free(subsins[i].glyphs);
+ }
+ free(subsins);
+ } else if ( sm->type==asm_kern ) {
+ if ( substable_pos!=ftell(temp) )
+ IError( "Kern Values table in wrong place.\n" );
+ fseek(temp,start+4*sizeof(uint16),SEEK_SET);
+ putshort(temp,substable_pos-start); /* Point to start of insertions */
+ fseek(temp,0,SEEK_END);
+ if ( !ttfcopyfile(temp,kernvalues,substable_pos,"kern-subtable")) at->error = true;
+ }
+return( true );
+}
+
+static struct feature *aat_dumpmorx_asm(struct alltabs *at, SplineFont *sf,
+ FILE *temp, struct feature *features, ASM *sm) {
+ struct feature *cur;
+
+ cur = featureFromSubtable(sf,sm->subtable);
+ cur->vertOnly = sm->flags&0x8000?1:0;
+ cur->r2l = sm->flags&0x4000?1:0;
+ cur->subtable_type = sm->type; /* contextual glyph subs */
+ cur->feature_start = ftell(temp);
+ if ( morx_dumpASM(temp,sm,at,sf)) {
+ cur->next = features;
+ features = cur;
+ if ( (ftell(temp)-cur->feature_start)&1 )
+ putc('\0',temp);
+ if ( (ftell(temp)-cur->feature_start)&2 )
+ putshort(temp,0);
+ cur->feature_len = ftell(temp)-cur->feature_start;
+ } else
+ chunkfree(cur,sizeof(struct feature));
+return( features);
+}
+
+static struct feature *aat_dumpmorx_cvtopentype(struct alltabs *at, SplineFont *sf,
+ FILE *temp, struct feature *features, struct lookup_subtable *sub) {
+ ASM *sm;
+
+ if ( FPSTisMacable(sf,sub->fpst)) {
+ sm = ASMFromFPST(sf,sub->fpst,true);
+ if ( sm!=NULL ) {
+ features = aat_dumpmorx_asm(at,sf,temp,features,sm);
+ ASMFree(sm);
+ }
+ }
+return( features );
+}
+
+static int IsOtfArabicFormFeature(OTLookup *otl) {
+ FeatureScriptLangList *fl;
+
+ for ( fl=otl->features; fl!=NULL; fl=fl->next ) {
+ if (( fl->featuretag == CHR('i','n','i','t') ||
+ fl->featuretag==CHR('m','e','d','i') ||
+ fl->featuretag==CHR('f','i','n','a') ||
+ fl->featuretag==CHR('i','s','o','l') ) &&
+ scriptsHaveDefault(fl->scripts))
+return( true );
+ }
+return( false );
+}
+
+static int HasCursiveConnectionSM(SplineFont *sf) {
+ int featureType, featureSetting;
+ uint32 tag;
+ ASM *sm;
+
+ if ( OTTagToMacFeature(CHR('i','s','o','l'),&featureType,&featureSetting) ) {
+ tag = (featureType<<16) | featureSetting;
+ for ( sm = sf->sm; sm!=NULL; sm=sm->next ) {
+ if ( sm->subtable->lookup->features->featuretag==tag )
+return( true );
+ }
+ }
+ for ( sm = sf->sm; sm!=NULL; sm=sm->next ) {
+ if ( sm->subtable->lookup->features->featuretag==CHR('i','s','o','l') )
+return( true );
+ }
+return( false );
+}
+
+static uint32 *FormedScripts(SplineFont *sf) {
+ OTLookup *otl;
+ uint32 *ret = NULL;
+ int scnt=0, smax=0;
+ FeatureScriptLangList *fl;
+ struct scriptlanglist *sl;
+ int i;
+
+ for ( otl= sf->gsub_lookups; otl!=NULL; otl=otl->next ) {
+ if ( otl->lookup_type == gsub_single ) {
+ for ( fl=otl->features; fl!=NULL; fl=fl->next ) {
+ if ( fl->featuretag == CHR('i','n','i','t') ||
+ fl->featuretag==CHR('m','e','d','i') ||
+ fl->featuretag==CHR('f','i','n','a') ||
+ fl->featuretag==CHR('i','s','o','l') ) {
+ for ( sl=fl->scripts; sl!=NULL; sl=sl->next ) {
+ for ( i=0; i<sl->lang_cnt; ++i ) {
+ if ( (i<MAX_LANG ? sl->langs[i] : sl->morelangs[i-MAX_LANG])==DEFAULT_LANG ) {
+ if ( scnt<=smax )
+ ret = realloc(ret,(smax+=5)*sizeof(uint32));
+ ret[scnt++] = sl->script;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if ( scnt==0 )
+return( NULL );
+ if ( scnt<=smax )
+ ret = realloc(ret,(smax+=1)*sizeof(uint32));
+ ret[scnt] = 0;
+return( ret );
+}
+
+int Macable(SplineFont *sf, OTLookup *otl) {
+ int ft, fs;
+ FeatureScriptLangList *features;
+
+ switch ( otl->lookup_type ) {
+ /* These lookup types are mac only */
+ case kern_statemachine: case morx_indic: case morx_context: case morx_insert:
+ return( true );
+ /* These lookup types or OpenType only */
+ case gsub_multiple: case gsub_alternate:
+ case gpos_single: case gpos_cursive: case gpos_mark2base:
+ case gpos_mark2ligature: case gpos_mark2mark:
+ return( false );
+ /* These are OpenType only, but they might be convertable to a state */
+ /* machine */
+ case gsub_context:
+ case gsub_contextchain: case gsub_reversecchain:
+ case gpos_context: case gpos_contextchain:
+ if ( sf==NULL || sf->sm!=NULL )
+ return( false );
+ /* Else fall through into the test on the feature tag */;
+ /* These two can be expressed in both, and might be either */
+ case gsub_single: case gsub_ligature: case gpos_pair:
+ for ( features = otl->features; features!=NULL; features = features->next ) {
+ if ( features->ismac || OTTagToMacFeature(features->featuretag,&ft,&fs))
+ return( true );
+ }
+ default:;
+ }
+ return( false );
+}
+
+static struct feature *aat_dumpmorx_cvtopentypeforms(struct alltabs *at, SplineFont *sf,
+ FILE *temp, struct feature *features) {
+ ASM *sm;
+ uint32 *scripts;
+ int featureType, featureSetting;
+ int i;
+ OTLookup *otl;
+
+ if ( sf->cidmaster!=NULL )
+ sf = sf->cidmaster;
+ else if ( sf->mm!=NULL ) sf=sf->mm->normal;
+
+ for ( otl=sf->gsub_lookups; otl!=NULL; otl=otl->next )
+ if ( Macable(sf,otl) && otl->lookup_type==gsub_single && IsOtfArabicFormFeature(otl))
+ otl->ticked = true;
+
+ if ( OTTagToMacFeature(CHR('i','s','o','l'),&featureType,&featureSetting) ) {
+ scripts = FormedScripts(sf);
+ for ( i=0; scripts[i]!=0; ++i ) {
+ sm = ASMFromOpenTypeForms(sf,scripts[i]);
+ if ( sm!=NULL ) {
+ features = aat_dumpmorx_asm(at,sf,temp,features,sm);
+ ASMFree(sf->sm);
+ }
+ }
+ free(scripts);
+ }
+return( features );
+}
+
+static struct feature *featuresReverse(struct feature *features) {
+ struct feature *p, *n;
+
+ p = NULL;
+ while ( features!=NULL ) {
+ n = features->next;
+ features->next = p;
+ p = features;
+ features = n;
+ }
+return( p );
+}
+
+static struct feature *featuresOrderByType(struct feature *features) {
+ struct feature *f, **all;
+ int i, j, cnt/*, saw_default*/;
+
+ for ( cnt=0, f=features; f!=NULL; f=f->next, ++cnt );
+ if ( cnt==1 ) {
+return( features );
+ }
+ all = malloc(cnt*sizeof(struct feature *));
+ for ( i=0, f=features; f!=NULL; f=f->next, ++i )
+ all[i] = f;
+ for ( i=0; i<cnt-1; ++i ) for ( j=i+1; j<cnt; ++j ) {
+ if ( all[i]->featureType>all[j]->featureType ||
+ (all[i]->featureType==all[j]->featureType && all[i]->featureSetting>all[j]->featureSetting )) {
+ f = all[i];
+ all[i] = all[j];
+ all[j] = f;
+ }
+ }
+ for ( i=0; i<cnt-1; ++i )
+ all[i]->nexttype = all[i+1];
+ all[cnt-1]->nexttype = NULL;
+ features = all[0];
+ free( all );
+return( features );
+}
+
+static struct feature *AddExclusiveNoops(SplineFont *sf, struct feature *features) {
+ struct feature *f, *n, *def, *p, *t;
+ /* mutually exclusive features need to have a setting which does nothing */
+
+ for ( f=features; f!=NULL; f=n ) {
+ n= f->nexttype;
+ if ( f->mf!=NULL && f->mf->ismutex ) {
+ def = NULL;
+ for ( n=f; n!=NULL && n->featureType==f->featureType; n=n->nexttype ) {
+ if ( n->featureSetting==f->mf->default_setting )
+ def = n;
+ }
+ if ( def==NULL ) {
+ t = chunkalloc(sizeof(struct feature));
+ *t = *f;
+ t->feature_start = 0; t->feature_len=0; t->next = NULL;
+ t->featureSetting = f->mf->default_setting;
+ t->ms = FindMacSetting(sf,t->featureType,f->mf->default_setting,&t->sms);
+ t->flag = 0;
+ t->dummyOff = true;
+ if ( f==features )
+ p = NULL;
+ else
+ for ( p=features; p->nexttype!=f; p=p->nexttype );
+ n = f;
+ while ( n!=NULL && n->featureType==t->featureType && n->featureSetting<t->featureSetting ) {
+ p = n;
+ n = n->nexttype;
+ }
+ t->nexttype = n;
+ if ( p==NULL )
+ features = t;
+ else
+ p->nexttype = t;
+ while ( n!=NULL && n->featureType==t->featureType )
+ n=n->nexttype;
+ }
+ }
+ }
+return( features );
+}
+
+static void SetExclusiveOffs(struct feature *features) {
+ struct feature *f, *n;
+ int offFlags;
+ /* mutually exclusive features need to have a setting which does nothing */
+
+ for ( f=features; f!=NULL; f=n ) {
+ n= f->nexttype;
+ if ( f->mf!=NULL && f->mf->ismutex ) {
+ offFlags=0;
+ for ( n=f; n!=NULL && n->featureType==f->featureType; n=n->nexttype ) {
+ offFlags |= n->flag;
+ }
+ for ( n=f; n!=NULL && n->featureType==f->featureType; n=n->nexttype )
+ n->offFlags = ~(offFlags&~n->flag);
+ }
+ }
+return;
+}
+
+static void aat_dumpfeat(struct alltabs *at, SplineFont *sf, struct feature *feature) {
+ int scnt, fcnt, cnt;
+ struct feature *f, *n, *p;
+ int k;
+ uint32 offset;
+ int strid = at->next_strid;
+ int fn=0;
+ MacFeat *mf, *smf;
+ struct macsetting *ms, *sms;
+ /* Dump the 'feat' table which is a connection between morx features and */
+ /* the name table */
+ /* We do three passes. The first just calculates how much space we will need */
+ /* the second provides names for the feature types */
+ /* and the third provides names for the feature settings */
+ /* As we fill up the feat table we also create an array of strings */
+ /* (strid, char *pointer) which will be used by the 'name' table to */
+ /* give names to the features and their settings */
+ /* The mac documentation says that the features should be sorted by feature type */
+ /* This is a lie. Features should appear in the same order they appear */
+ /* in the morx table, otherwise WorldText goes blooie */
+ /* WorldText doesn't exist any more. Perhaps the morx table needs to be */
+ /* sorted by feature id too? No, it can't be. Feature 0 must come last */
+
+ if ( feature==NULL )
+return;
+
+ fcnt = scnt = 0;
+ for ( k=0; k<3; ++k ) {
+ if ( k==1 ) {
+ /* FeatureName entry for All Typographics */
+ mf = FindMacFeature(sf,0,&smf);
+ if ( (mf!=NULL && mf->featname!=NULL) || (smf!=NULL && smf->featname!=NULL)) {
+ at->feat_name[fn].mn = mf!=NULL ? mf->featname : NULL;
+ at->feat_name[fn].smn = smf!=NULL ? smf->featname : NULL;
+ at->feat_name[fn++].strid = strid;
+ }
+ putshort(at->feat,0);
+ putshort(at->feat,1);
+ putlong(at->feat,offset);
+ putshort(at->feat,0x0000); /* non exclusive */
+ putshort(at->feat,strid++);
+ offset += 1*4; /* (1 setting, 4 bytes) All Features */
+ } else if ( k==2 ) {
+ /* Setting Name Array for All Typographic Features */
+ ms = FindMacSetting(sf,0,0,&sms);
+ if ( (ms!=NULL && ms->setname!=NULL) || (sms!=NULL && sms->setname!=NULL)) {
+ at->feat_name[fn].mn = ms!=NULL ? ms->setname: NULL;
+ at->feat_name[fn].smn = sms!=NULL ? sms->setname: NULL;
+ at->feat_name[fn++].strid = strid;
+ }
+ putshort(at->feat,0);
+ putshort(at->feat,strid++);
+ }
+ for ( f=feature; f!=NULL; f=n ) {
+ cnt=1;
+ if ( k!=2 ) {
+ p = f;
+ for ( n=f->nexttype; n!=NULL && n->featureType==f->featureType; n = n->nexttype ) {
+ if ( p->featureSetting!=n->featureSetting ) {
+ ++cnt;
+ p = n;
+ }
+ }
+ } else {
+ p = f;
+ for ( n=f; n!=NULL && n->featureType==f->featureType; n = n->nexttype ) {
+ if ( n==f || p->featureSetting!=n->featureSetting ) {
+ if (( n->ms!=NULL && n->ms->setname!=NULL ) ||
+ ( n->sms!=NULL && n->sms->setname!=NULL)) {
+ at->feat_name[fn].mn = n->ms!=NULL ? n->ms->setname : NULL;
+ at->feat_name[fn].smn = n->sms!=NULL ? n->sms->setname : NULL;
+ at->feat_name[fn++].strid = strid;
+ }
+ putshort(at->feat,n->featureSetting);
+ putshort(at->feat,strid++);
+ p = n;
+ }
+ }
+ }
+ if ( k==0 ) {
+ ++fcnt;
+ scnt += cnt;
+ } else if ( k==1 ) {
+ if ( (f->mf!=NULL && f->mf->featname!=NULL) || (f->smf!=NULL && f->smf->featname!=NULL) ) {
+ at->feat_name[fn].mn = f->mf!=NULL ? f->mf->featname : NULL;
+ at->feat_name[fn].smn = f->smf!=NULL ? f->smf->featname : NULL;
+ at->feat_name[fn++].strid = strid;
+ }
+ putshort(at->feat,f->featureType);
+ putshort(at->feat,cnt);
+ putlong(at->feat,offset);
+ putshort(at->feat,f->mf!=NULL && f->mf->ismutex?(0xc000|f->mf->default_setting):
+ 0);
+ putshort(at->feat,strid++);
+ offset += 4*cnt;
+ }
+ }
+ if ( k==0 ) {
+ ++fcnt; /* Add one for "All Typographic Features" */
+ ++scnt; /* Add one for All Features */
+ at->feat = tmpfile2();
+ at->feat_name = malloc((fcnt+scnt+1)*sizeof(struct feat_name));
+ putlong(at->feat,0x00010000);
+ putshort(at->feat,fcnt);
+ putshort(at->feat,0);
+ putlong(at->feat,0);
+ offset = 12 /* header */ + fcnt*12;
+ }
+ }
+ memset( &at->feat_name[fn],0,sizeof(struct feat_name));
+ at->next_strid = strid;
+
+ at->featlen = ftell(at->feat);
+ if ( at->featlen&2 )
+ putshort(at->feat,0);
+}
+
+static int featuresAssignFlagsChains(struct feature *features, struct feature *feature_by_type) {
+ int bit, cnt, chain, fcnt, i, mybit;
+ struct feature *f, *n, *p;
+ uint16 chains_features[32];
+ uint32 chains_bitindex[32]; /* Index for bit of first setting of this feature */
+
+ if ( features==NULL )
+return( 0 );
+
+ /* A feature may have several subtables which need not be contiguous in */
+ /* the feature list */
+ /* Indeed we could have a feature in several different chains */
+ /* Sigh */
+ /* we figure out how many possible settings there are for each feature */
+ /* and reserve that many bits for the feature in all chains in which it */
+ /* occurs */
+ /* Note that here we count dummy settings (they need turn off bits) */
+ /* so we use feature_by_type */
+ for ( f=feature_by_type; f!=NULL; f=n ) {
+ cnt=0;
+ p = NULL;
+ for ( n=f; n!=NULL && n->featureType==f->featureType; n=n->nexttype ) {
+ if ( p==NULL || n->featureSetting != p->featureSetting ) {
+ ++cnt;
+ p = n;
+ }
+ n->setting_index = cnt-1;
+ }
+ for ( n=f; n!=NULL && n->featureType==f->featureType; n=n->nexttype )
+ n->setting_cnt = cnt;
+ }
+ /* When we counted flags we need to count the dummy features for turning */
+ /* things off. Those features live in features_by_type. When we put */
+ /* things in chains we want only the meaningful features, and we want */
+ /* them to be properly ordered. That we get from the "features" list */
+ fcnt = 0; chain = 0; bit=0;
+ for ( f=features; f!=NULL; f=f->next ) {
+ for ( i=0; i<fcnt && chains_features[i]!=f->featureType; ++i );
+ if ( i==fcnt ) {
+ if ( bit+f->setting_cnt>=32 ) {
+ ++chain;
+ bit = 0;
+ fcnt = 0;
+ }
+ chains_features[fcnt] = f->featureType;
+ chains_bitindex[fcnt++] = bit;
+ mybit = bit;
+ bit += f->setting_cnt;
+ } else
+ mybit = chains_bitindex[i];
+ f->real_index = mybit+f->setting_index;
+ f->flag = 1<<f->real_index;
+ if ( f->mf!=NULL && f->mf->ismutex ) {
+ int off = (~((~0)<<f->setting_cnt))<<mybit;
+ off &= !f->flag;
+ f->offFlags = off;
+ } else {
+ if ( f->featureSetting&1 ) {
+ for ( n=feature_by_type; n!=NULL &&
+ (n->featureType!=f->featureType || n->featureSetting!=f->featureSetting+1);
+ n=n->next );
+ } else {
+ for ( n=feature_by_type; n!=NULL &&
+ (n->featureType!=f->featureType || n->featureSetting!=f->featureSetting+1);
+ n=n->next );
+ }
+ if ( n!=NULL )
+ f->offFlags = 1<<(mybit+n->setting_index);
+ else
+ f->offFlags = ~0;
+ }
+ f->chain = chain;
+ }
+return( chain+1 );
+}
+
+static void morxDumpChain(struct alltabs *at,struct feature *features,
+ struct feature *features_by_type, int chain, FILE *temp) {
+ uint32 def_flags=0;
+ struct feature *f, *n;
+ uint32 chain_start, end;
+ char *buf;
+ int len, tot, fs_cnt, sub_cnt;
+ struct feature *all[32];
+ int i,offFlags, last_ri=-1, last_f=-1, ri;
+
+ memset(all,0,sizeof(all));
+ for ( f=features, fs_cnt=sub_cnt=0; f!=NULL; f=f->next ) {
+ if ( f->chain==chain ) {
+ if ( all[f->real_index]==NULL ) {
+ int base = f->real_index-f->setting_index;
+ /* Note we use features_by_type here. It will have the default*/
+ /* settings for features, and will be ordered nicely */
+ for ( n=features_by_type; n!=NULL; n=n->nexttype ) {
+ if ( n->featureType==f->featureType && n->chain==chain ) {
+ n->nextsame = all[base+n->setting_index];
+ all[base+n->setting_index] = n;
+ if ( n->ms!=NULL && n->ms->initially_enabled )
+ def_flags |= n->flag;
+ }
+ }
+ }
+ ++sub_cnt;
+ }
+ }
+
+ /* Chain header */
+ chain_start = ftell(at->morx);
+ putlong(at->morx,def_flags);
+ putlong(at->morx,0); /* Fix up length later */
+ putlong(at->morx,0); /* fix up feature count */
+ putlong(at->morx,sub_cnt); /* subtable cnt */
+
+ /* Features */
+ fs_cnt = 0;
+ for ( i=0; i<32; ++i ) if ( all[i]!=NULL ) {
+ putshort(at->morx,all[i]->featureType);
+ putshort(at->morx,all[i]->featureSetting);
+ if ( all[i]->dummyOff ) {
+ putlong(at->morx,0);
+ if ( last_f==all[i]->featureType )
+ ri = last_ri;
+ else if ( i<31 && all[i+1]!=NULL && all[i+1]->featureType == all[i]->featureType )
+ ri = i+1 - all[i+1]->real_index;
+ else
+ ri = 0; /* This can't happen */
+ } else {
+ putlong(at->morx,1<<i);
+ ri = i-all[i]->real_index;
+ last_ri = ri; last_f = all[i]->featureType;
+ }
+ offFlags = all[i]->offFlags;
+ if ( ri>0 )
+ offFlags<<=(ri);
+ else if ( ri<0 )
+ offFlags>>=(-ri);
+ putlong(at->morx,offFlags);
+ ++fs_cnt;
+
+ if ( all[i]->needsOff && (i==31 || all[i+1]==NULL ||
+ all[i+1]->featureType!=all[i]->featureType ||
+ all[i+1]->featureSetting!=all[i]->featureSetting+1 )) {
+ putshort(at->morx,all[i]->featureType);
+ putshort(at->morx,all[i]->featureSetting+1);
+ putlong(at->morx,0);
+ putlong(at->morx,all[i]->offFlags & ~all[i]->flag );
+ ++fs_cnt;
+ }
+ /* I used to have code to output the default setting of a mutex */
+ /* but I should already have put that in the feature list */
+ }
+ /* The feature list of every chain must end with these two features */
+ putshort(at->morx,0); /* All Typo Features */
+ putshort(at->morx,0); /* All Features */
+ putlong(at->morx,0xffffffff); /* enable */
+ putlong(at->morx,0xffffffff); /* disable */
+ putshort(at->morx,0); /* All Typo Features */
+ putshort(at->morx,1); /* No Features */
+ putlong(at->morx,0); /* enable */
+ putlong(at->morx,0); /* disable */
+ fs_cnt += 2;
+
+ buf = malloc(16*1024);
+ /* Subtables */
+ for ( f=features; f!=NULL; f=f->next ) if ( f->chain==chain ) {
+ putlong(at->morx,f->feature_len+12); /* Size of header needs to be added */
+ putlong(at->morx,(f->vertOnly?0x80000000:f->r2l?0x40000000:0) | f->subtable_type);
+ putlong(at->morx,f->flag);
+ tot = f->feature_len;
+ fseek(temp, f->feature_start, SEEK_SET);
+ while ( tot!=0 ) {
+ len = tot;
+ if ( len>16*1024 ) len = 16*1024;
+ len = fread(buf,1,len,temp);
+ len = fwrite(buf,1,len,at->morx);
+ if ( len<=0 ) {
+ IError( "Disk error\n" );
+ break;
+ }
+ tot -= len;
+ }
+ }
+ free(buf);
+
+ /* Pad chain to a multiple of four */
+ if ( (ftell(at->morx)-chain_start)&1 )
+ putc('\0',at->morx);
+ if ( (ftell(at->morx)-chain_start)&2 )
+ putshort(at->morx,0);
+ end = ftell(at->morx);
+ fseek(at->morx,chain_start+4,SEEK_SET);
+ putlong(at->morx,end-chain_start);
+ putlong(at->morx,fs_cnt);
+ fseek(at->morx,0,SEEK_END);
+}
+
+void aat_dumpmorx(struct alltabs *at, SplineFont *sf) {
+ FILE *temp = tmpfile2();
+ struct feature *features = NULL, *features_by_type;
+ int nchains, i;
+ OTLookup *otl;
+ struct lookup_subtable *sub;
+
+ /* Arabic Form features all need to be merged together and formed into */
+ /* a cursive connection state machine. So the first time we see one of */
+ /* we handle all of them. After that we ignore all of them. Note: if */
+ /* OpenType has them happening in different orders, that information */
+ /* will be lost. All will be processed at once. */
+ for ( otl = sf->gsub_lookups; otl!=NULL; otl=otl->next )
+ otl->ticked = false;
+
+ SFLigaturePrepare(sf);
+
+ /* Retain the same lookup ordering */
+ for ( otl = sf->gsub_lookups; otl!=NULL; otl=otl->next ) {
+ if ( !Macable(sf,otl))
+ continue;
+ if ( otl->lookup_type==gsub_single && IsOtfArabicFormFeature(otl) ) {
+ if ( otl->ticked )
+ /* Already processed */;
+ else if ( HasCursiveConnectionSM(sf) )
+ /* Skip the OpenType conversion and use the native state machine */;
+ else
+ features = aat_dumpmorx_cvtopentypeforms(at,sf,temp,features);
+ } else {
+ for ( sub=otl->subtables; sub!=NULL; sub=sub->next ) {
+ switch ( otl->lookup_type ) {
+ case gsub_single:
+ features = aat_dumpmorx_substitutions(at,sf,temp,features,sub);
+ break;
+ case gsub_ligature:
+ features = aat_dumpmorx_ligatures(at,sf,temp,features,sub);
+ break;
+ case morx_indic: case morx_context: case morx_insert:
+ features = aat_dumpmorx_asm(at,sf,temp,features,sub->sm);
+ break;
+ default:
+ if ( sf->sm==NULL )
+ features = aat_dumpmorx_cvtopentype(at,sf,temp,features,sub);
+ }
+ }
+ }
+ }
+
+ SFLigatureCleanup(sf);
+
+ if ( features==NULL ) {
+ fclose(temp);
+return;
+ }
+ /* The features are in reverse execution order */
+ features = featuresReverse(features);
+ /* But the feature table requires them in numeric order */
+ features_by_type = featuresOrderByType(features);
+ features_by_type = AddExclusiveNoops(sf,features_by_type);
+ aat_dumpfeat(at, sf, features_by_type);
+ nchains = featuresAssignFlagsChains(features,features_by_type);
+ SetExclusiveOffs(features_by_type);
+
+ at->morx = tmpfile2();
+ putlong(at->morx,0x00020000);
+ putlong(at->morx,nchains);
+ for ( i=0; i<nchains; ++i )
+ morxDumpChain(at,features,features_by_type,i,temp);
+ fclose(temp);
+ morxfeaturesfree(features_by_type);
+
+ at->morxlen = ftell(at->morx);
+ if ( at->morxlen&1 )
+ putc('\0',at->morx);
+ if ( (at->morxlen+1)&2 )
+ putshort(at->morx,0);
+}
+
+/* ************************************************************************** */
+/* ************************* The 'opbd' table ************************* */
+/* ************************************************************************** */
+
+int haslrbounds(SplineChar *sc, PST **left, PST **right) {
+ PST *pst;
+
+ *left = *right = NULL;
+ for ( pst=sc->possub; pst!=NULL ; pst=pst->next ) {
+ if ( pst->type == pst_position ) {
+ if ( PSTHasTag(pst,CHR('l','f','b','d')) ) {
+ *left = pst;
+ if ( *right )
+return( true );
+ } else if ( PSTHasTag(pst,CHR('r','t','b','d')) ) {
+ *right = pst;
+ if ( *left )
+return( true );
+ }
+ }
+ }
+return( *left!=NULL || *right!=NULL );
+}
+
+void aat_dumpopbd(struct alltabs *at, SplineFont *_sf) {
+ int i, j, k, l, seg_cnt, tot, last, offset;
+ PST *left, *right;
+ FILE *opbd=NULL;
+ /* We do four passes. The first just calculates how much space we will need (if any) */
+ /* the second provides the top-level lookup table structure */
+ /* the third provides the arrays of offsets needed for type 4 lookup tables */
+ /* the fourth provides the actual data on the optical bounds */
+ SplineChar *sc;
+
+ for ( k=0; k<4; ++k ) {
+ for ( i=seg_cnt=tot=0; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ l = 0;
+ sc = _sf->glyphs[at->gi.bygid[i]];
+ if ( haslrbounds(sc,&left,&right) ) {
+ if ( k==1 )
+ tot = 0;
+ else if ( k==2 ) {
+ putshort(opbd,offset);
+ offset += 8;
+ } else if ( k==3 ) {
+ putshort(opbd,left!=NULL?-left->u.pos.xoff:0);
+ putshort(opbd,0); /* top */
+ putshort(opbd,right!=NULL?-right->u.pos.h_adv_off:0);
+ putshort(opbd,0); /* bottom */
+ }
+ last = i;
+ for ( j=i+1, ++tot; j<at->gi.gcnt; ++j ) {
+ if ( at->gi.bygid[i]==-1 || !haslrbounds(_sf->glyphs[at->gi.bygid[j]],&left,&right) )
+ break;
+ ++tot;
+ last = j;
+ if ( k==2 ) {
+ putshort(opbd,offset);
+ offset += 8;
+ } else if ( k==3 ) {
+ putshort(opbd,left!=NULL?-left->u.pos.xoff:0);
+ putshort(opbd,0); /* top */
+ putshort(opbd,right!=NULL?-right->u.pos.h_adv_off:0);
+ putshort(opbd,0); /* bottom */
+ }
+ }
+ if ( k==1 ) {
+ putshort(opbd,last);
+ putshort(opbd,i);
+ putshort(opbd,offset);
+ offset += 2*tot;
+ }
+ ++seg_cnt;
+ i = j-1;
+ }
+ }
+ if ( k==0 ) {
+ if ( seg_cnt==0 )
+return;
+ opbd = tmpfile2();
+ putlong(opbd, 0x00010000); /* version */
+ putshort(opbd,0); /* data are distances (not control points) */
+
+ putshort(opbd,4); /* Lookup table format 4 */
+ /* Binary search header */
+ putshort(opbd,6); /* Entry size */
+ putshort(opbd,seg_cnt); /* Number of segments */
+ for ( j=0,l=1; l<=seg_cnt; l<<=1, ++j );
+ --j; l>>=1;
+ putshort(opbd,6*l);
+ putshort(opbd,j);
+ putshort(opbd,6*(seg_cnt-l));
+ /* offset from start of lookup, not table */
+ offset = 6*2/* format, binsearch*/ + seg_cnt*6 +6 /*flag entry */;
+ } else if ( k==1 ) { /* flag entry */
+ putshort(opbd,0xffff);
+ putshort(opbd,0xffff);
+ putshort(opbd,0);
+ }
+ }
+ at->opbd = opbd;
+ at->opbdlen = ftell(at->opbd);
+ if ( at->opbdlen&2 )
+ putshort(at->opbd,0);
+}
+
+/* ************************************************************************** */
+/* ************************* The 'prop' table ************************* */
+/* ************************************************************************** */
+
+uint16 *props_array(SplineFont *sf,struct glyphinfo *gi) {
+ uint16 *props;
+ int i;
+ SplineChar *sc, *bsc;
+ int dir, isfloat, isbracket, offset, doit=false;
+ AnchorPoint *ap;
+ PST *pst;
+ int p;
+
+ props = calloc(gi->gcnt+1,sizeof(uint16));
+ props[gi->gcnt] = -1;
+
+ for ( i=0; i<gi->gcnt; ++i ) if ( (p = gi->bygid==NULL ? i : gi->bygid[i])!=-1 ) {
+ sc = sf->glyphs[p];
+ if ( sc!=NULL && (gi->bygid==NULL || sc->ttf_glyph!=-1 )) {
+ dir = 0;
+ if ( sc->unicodeenc>=0x10300 && sc->unicodeenc<=0x103ff )
+ dir = 0;
+ else if ( sc->unicodeenc>=0x10800 && sc->unicodeenc<=0x10fff )
+ dir = 1;
+ else if ( sc->unicodeenc!=-1 && sc->unicodeenc<0x10fff ) {
+ if ( iseuronumeric(sc->unicodeenc) )
+ dir = 3;
+ else if ( iseuronumsep(sc->unicodeenc))
+ dir = 4;
+ else if ( iseuronumterm(sc->unicodeenc))
+ dir = 5;
+ else if ( isarabnumeric(sc->unicodeenc))
+ dir = 6;
+ else if ( iscommonsep(sc->unicodeenc))
+ dir = 7;
+ else if ( isspace(sc->unicodeenc))
+ dir = 10;
+ else if ( islefttoright(sc->unicodeenc) )
+ dir = 0;
+ else if ( isrighttoleft(sc->unicodeenc) )
+ dir = 1;
+ else if ( SCScriptFromUnicode(sc)==CHR('a','r','a','b') )
+ dir = 2;
+ else if ( SCScriptFromUnicode(sc)==CHR('h','e','b','r') )
+ dir = 1;
+ else
+ dir = 11; /* Other neutrals */
+ /* Not dealing with unicode 3 classes */
+ /* nor block seperator/ segment seperator */
+ } else if ( SCScriptFromUnicode(sc)==CHR('a','r','a','b') )
+ dir = 2;
+ else if ( SCScriptFromUnicode(sc)==CHR('h','e','b','r') )
+ dir = 1;
+
+ if ( dir==1 || dir==2 ) doit = true;
+ isfloat = false;
+ if ( sc->width==0 &&
+ ((sc->anchor!=NULL && sc->anchor->type==at_mark) ||
+ (sc->unicodeenc!=-1 && sc->unicodeenc<0x10000 && iscombining(sc->unicodeenc))))
+ isfloat = doit = true;
+ isbracket = offset = 0;
+ if ( sc->unicodeenc!=-1 && sc->unicodeenc<0x10000 && tomirror(sc->unicodeenc)!=0 ) {
+ bsc = SFGetChar(sf,tomirror(sc->unicodeenc),NULL);
+ if ( bsc!=NULL && bsc->ttf_glyph-sc->ttf_glyph>-8 && bsc->ttf_glyph-sc->ttf_glyph<8 ) {
+ isbracket = true;
+ offset = bsc->ttf_glyph-sc->ttf_glyph;
+ }
+ }
+ if ( !isbracket ) {
+ for ( pst=sc->possub; pst!=NULL && PSTHasTag(pst,CHR('r','t','l','a')); pst=pst->next );
+ if ( pst!=NULL && pst->type==pst_substitution &&
+ (bsc=SFGetChar(sf,-1,pst->u.subs.variant))!=NULL &&
+ bsc->ttf_glyph!=-1 && bsc->ttf_glyph-sc->ttf_glyph>-8 && bsc->ttf_glyph-sc->ttf_glyph<8 ) {
+ isbracket = true;
+ offset = bsc->ttf_glyph-sc->ttf_glyph;
+ doit = true;
+ }
+ }
+ if ( SCRightToLeft(sc) ) {
+ /* Apple docs say attached right. So for r2l scripts we look for */
+ /* a cursive entry, and for l2r a cursive exit */
+ for ( ap=sc->anchor; ap!=NULL && ap->type!=at_centry; ap=ap->next );
+ } else {
+ for ( ap=sc->anchor; ap!=NULL && ap->type!=at_cexit; ap=ap->next );
+ }
+ props[sc->ttf_glyph] = dir |
+ (isfloat ? 0x8000 : 0 ) |
+ (isbracket ? 0x1000 : 0 ) |
+ (ap!=NULL ? 0x80 : 0 ) |
+ ((offset&0xf)<<8);
+ /* not dealing with */
+ /* hang left 0x4000 */
+ /* hang right 0x2000 */
+ }
+ }
+
+ if ( !doit ) {
+ free(props);
+return( NULL );
+ }
+
+return( props );
+}
+
+void aat_dumpprop(struct alltabs *at, SplineFont *sf) {
+ uint16 *props = props_array(sf,&at->gi);
+ uint32 bin_srch_header;
+ int i, j, cnt;
+
+ if ( props==NULL )
+return;
+
+ at->prop = tmpfile2();
+ putlong(at->prop,0x00020000);
+ putshort(at->prop,1); /* Lookup data */
+ putshort(at->prop,0); /* default property is simple l2r */
+ putshort(at->prop,2); /* lookup format 2 => segment single value */
+ /* Binsearch header */
+ bin_srch_header = ftell(at->prop);
+ putshort(at->prop,6); /* Entry size */
+ putshort(at->prop,0); /* fill in later */
+ putshort(at->prop,0);
+ putshort(at->prop,0);
+ putshort(at->prop,0);
+
+ cnt = 0;
+ for ( i=0; i<at->gi.gcnt; ++i ) {
+ while ( i<at->gi.gcnt && props[i]==0 ) ++i; /* skip default entries */
+ if ( i>=at->gi.gcnt )
+ break;
+ for ( j=i+1; j<at->gi.gcnt && props[j]==props[i]; ++j );
+ putshort(at->prop,j-1);
+ putshort(at->prop,i);
+ putshort(at->prop,props[i]);
+ i = j-1;
+ ++cnt;
+ }
+ putshort(at->prop,0xffff); /* Final eof marker */
+ putshort(at->prop,0xffff);
+ putshort(at->prop,0x0000);
+
+ fseek(at->prop,bin_srch_header,SEEK_SET);
+ putshort(at->prop,6); /* Entry size */
+ putshort(at->prop,cnt); /* Number of segments */
+ for ( j=0,i=1; i<=cnt; i<<=1, ++j );
+ --j; i>>=1;
+ putshort(at->prop,6*i);
+ putshort(at->prop,j);
+ putshort(at->prop,6*(cnt-i));
+
+ fseek(at->prop,0,SEEK_END);
+ at->proplen = ftell(at->prop);
+ if ( at->proplen&2 )
+ putshort(at->prop,0);
+ free(props);
+}
+
+/* ************************************************************************** */
+/* ************************* The 'bsln' table ************************* */
+/* ************************************************************************** */
+
+static int BslnFromTag(uint32 tag) {
+ switch ( tag ) {
+ case CHR('r','o','m','n'):
+return( 0 );
+ /* Apple has a centered ideographic baseline, while OT has a top ideo bsln*/
+ /* no way to get Apple's baseline #1 */
+ case CHR('i','d','e','o'):
+return( 2 );
+ case CHR('h','a','n','g'):
+return( 3 );
+ case CHR('m','a','t','h'):
+return( 4 );
+ default:
+return( 0xffff );
+ }
+}
+
+int16 *PerGlyphDefBaseline(SplineFont *sf,int *def_baseline) {
+ int16 *baselines = malloc(sf->glyphcnt*sizeof(int16));
+ int gid, bsln, i, any;
+ SplineChar *sc;
+ int counts[32]; /* Apple supports a max of 32 baselines, but only 5 are defined */
+ struct Base *base = sf->horiz_base;
+ struct basescript *bs;
+ int bestbsln, bestcnt;
+
+ memset(counts,0,sizeof(counts));
+
+ for ( gid = 0; gid<sf->glyphcnt; ++gid ) if ( (sc = sf->glyphs[gid])!=NULL ) {
+ uint32 script = SCScriptFromUnicode(sc);
+ for ( bs= base->scripts; bs!=NULL; bs=bs->next )
+ if ( bs->script==script )
+ break;
+ if ( bs==NULL )
+ bsln = 0xffff;
+ else
+ bsln = BslnFromTag( base->baseline_tags[bs->def_baseline] );
+/* This if is duplicated (almost) in basedlg.c:Base_FinishEdit */
+ if ( bsln==0xffff ) {
+ if ( script==CHR('k','a','n','a') || script==CHR('h','a','n','g') ||
+ script==CHR('h','a','n','i') || script==CHR('b','o','p','o') ||
+ script==CHR('j','a','m','o') || script==CHR('y','i',' ',' '))
+ bsln = 2;
+ else if ( script==CHR('t','i','b','t' ) ||
+ script == CHR('b','e','n','g' ) || script == CHR('b','n','g','2') ||
+ script == CHR('d','e','v','a' ) || script == CHR('d','e','v','2') ||
+ script == CHR('g','u','j','r' ) || script == CHR('g','j','r','2') ||
+ script == CHR('g','u','r','u' ) || script == CHR('g','u','r','2') ||
+ script == CHR('k','n','d','a' ) || script == CHR('k','n','d','2') ||
+ script == CHR('m','l','y','m' ) || script == CHR('m','l','m','2') ||
+ script == CHR('o','r','y','a' ) || script == CHR('o','r','y','2') ||
+ script == CHR('t','a','m','l' ) || script == CHR('t','m','l','2') ||
+ script == CHR('t','e','l','u' ) || script == CHR('t','e','l','2'))
+ bsln = 3;
+ else if ( script==CHR('m','a','t','h') )
+ bsln = 4;
+ else
+ bsln = 0;
+ }
+ baselines[gid] = bsln;
+ if ( bsln!=0xffff )
+ ++counts[bsln];
+ }
+
+ bestbsln = 0;
+ bestcnt = 0;
+ any = 0;
+ for ( i=0; i<32 ; ++i ) {
+ if ( counts[i]>bestcnt ) {
+ bestbsln = i;
+ bestcnt = counts[i];
+ ++any;
+ }
+ }
+ *def_baseline = bestbsln | (any<=1 ? 0x100 : 0 );
+return( baselines );
+}
+
+void FigureBaseOffsets(SplineFont *sf,int def_bsln,int offsets[32]) {
+ struct Base *base = sf->horiz_base;
+ struct basescript *bs = base->scripts;
+ int i;
+
+ memset( offsets,0xff,32*sizeof(int));
+ for ( i=0; i<base->baseline_cnt; ++i ) {
+ int bsln = BslnFromTag(base->baseline_tags[i]);
+ if ( bsln!=0xffff )
+ offsets[bsln] = bs->baseline_pos[i];
+ }
+ if ( offsets[def_bsln]!=-1 ) {
+ for ( i=0; i<32; ++i ) {
+ if ( offsets[i]!=-1 )
+ offsets[i] -= offsets[def_bsln];
+ }
+ }
+ /* I suspect baseline 1 is the standard baseline for CJK glyphs on the mac*/
+ /* (because baseline 2 is often the same as baseline 1, which is wrong for 2) */
+ /* OT doesn't have a centered ideographic baseline, so guestimate */
+ /* And I don't want to base it on the actual ideo baseline (go up half an em?) */
+ /* because in my small sample of 'bsln' tables baseline 2 has been wrong */
+ /* most of the time, and it is wrong in the example in the docs. */
+ /* (I know it is wrong because it has the same value as baseline 1, but */
+ /* is supposed to be below baseline 1 ) */
+ if ( offsets[1]==-1 ) {
+ if ( offsets[2]!=-1 )
+ offsets[1] = offsets[2]+(sf->ascent+sf->descent)/2;
+ else
+ offsets[1] = (sf->ascent+sf->descent)/2 - sf->descent;
+ }
+ for ( i=0; i<32; ++i )
+ if ( offsets[i]==-1 )
+ offsets[i] = 0;
+}
+
+void aat_dumpbsln(struct alltabs *at, SplineFont *sf) {
+ int def_baseline;
+ int offsets[32];
+ int16 *baselines;
+ int i, gid, j, bsln, cnt;
+
+ if ( sf->horiz_base==NULL || sf->horiz_base->baseline_cnt==0 ||
+ sf->horiz_base->scripts==NULL )
+return;
+
+ baselines = PerGlyphDefBaseline(sf,&def_baseline);
+
+ at->bsln = tmpfile2();
+ putlong(at->bsln,0x00010000); /* Version */
+ if ( def_baseline & 0x100 ) /* Only one baseline in the font */
+ putshort(at->bsln,0); /* distanced based (no control point), no per-glyph info */
+ else
+ putshort(at->bsln,1); /* distanced based (no cp info) with per-glyph info */
+ putshort(at->bsln,def_baseline&0x1f);/* Default baseline when no info specified for glyphs */
+
+ /* table of 32 int16 (the docs say uint16, but that must be wrong) giving */
+ /* the offset of the nth baseline from the default baseline. */
+ /* 0 => Roman, 1=> centered ideo, 2=>low ideo (same as OTF ideo) 3=>hang, 4=>Math */
+ /* values 5-31 undefined, set to 0 */
+ FigureBaseOffsets(sf,def_baseline&0x1f,offsets);
+
+ for ( i=0; i<32; ++i )
+ putshort(at->bsln,offsets[i]);
+
+ if ( !(def_baseline&0x100) ) {
+ def_baseline &= 0x1f;
+
+ putshort(at->bsln,2); /* Lookup format 2, segmented array w/ single value */
+
+ cnt = 0;
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( (gid=at->gi.bygid[i])!=-1 ) {
+ if ( baselines[gid]!=-1 && baselines[gid]!=def_baseline ) {
+ bsln = baselines[gid];
+ for ( j=i; j<at->gi.gcnt && baselines[at->gi.bygid[i]]==bsln; ++j );
+ i = j-1;
+ ++cnt;
+ }
+ }
+
+ /* Dump out a binary search header */
+ putshort(at->bsln,6); /* size of each item */
+ putshort(at->bsln,cnt); /* number of items */
+ for ( j=1, i=0; cnt<=j; j<<=1, ++i );
+ putshort(at->bsln,6*j/2); /* j is a power of 2 too big */
+ putshort(at->bsln,i-1);
+ putshort(at->bsln,6*(cnt-(j>>1)) );
+
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( (gid=at->gi.bygid[i])!=-1 ) {
+ if ( baselines[gid]!=-1 && baselines[gid]!=def_baseline ) {
+ bsln = baselines[gid];
+ for ( j=i; j<at->gi.gcnt && baselines[at->gi.bygid[i]]==bsln; ++j );
+ putshort(at->bsln,j-1);
+ putshort(at->bsln,i);
+ putshort(at->bsln,bsln);
+ i = j-1;
+ }
+ }
+
+ putshort(at->bsln,0xffff); /* Final eof marker */
+ putshort(at->bsln,0xffff);
+ putshort(at->bsln,0x0000);
+ }
+
+ at->bslnlen = ftell(at->bsln);
+ /* Only contains 2 & 4 byte quantities, can't have an odd number of bytes */
+ if ( at->bslnlen&2 )
+ putshort(at->bsln,0);
+ free(baselines);
+}
+
+/* ************************************************************************** */
+/* ************************* utility routines ************************* */
+/* ************************************************************************** */
+
+int OTTagToMacFeature(uint32 tag, int *featureType,int *featureSetting) {
+ int i;
+ struct macsettingname *msn = user_macfeat_otftag ? user_macfeat_otftag : macfeat_otftag;
+
+ for ( i=0; msn[i].otf_tag!=0; ++i )
+ if ( msn[i].otf_tag == tag ) {
+ *featureType = msn[i].mac_feature_type;
+ *featureSetting = msn[i].mac_feature_setting;
+return( true );
+ }
+ *featureType = (tag >> 16);
+ *featureSetting = (tag & 0xFFFF);
+ /* Ranges taken from Apple Font Registry. An OT tag without a
+ corresponding mac feature should fail this test.*/
+ if (*featureType >= 0 && *featureType < 105 && *featureSetting < 16)
+ return ( true );
+
+ *featureType = 0;
+ *featureSetting = 0;
+return( false );
+}
+
+static struct feature *featureFromTag(SplineFont *sf, uint32 tag ) {
+ int ft, fs;
+ struct feature *feat;
+
+ feat = chunkalloc(sizeof(struct feature));
+ if (OTTagToMacFeature(tag, &ft, &fs)) {
+ feat->featureType = ft;
+ feat->featureSetting = fs;
+ feat->mf = FindMacFeature(sf,feat->featureType,&feat->smf);
+ feat->ms = FindMacSetting(sf,feat->featureType,feat->featureSetting,&feat->sms);
+ feat->needsOff = feat->mf!=NULL && !feat->mf->ismutex;
+ feat->vertOnly = tag==CHR('v','r','t','2') || tag==CHR('v','k','n','a');
+ }
+
+ return( feat );
+}
+
+static struct feature *featureFromSubtable(SplineFont *sf, struct lookup_subtable *sub ) {
+ FeatureScriptLangList *fl;
+ int ft, fs;
+
+ for ( fl=sub->lookup->features; fl!=NULL; fl=fl->next ) {
+ if ( fl->ismac )
+ break;
+ }
+ if ( fl==NULL ) {
+ for ( fl=sub->lookup->features; fl!=NULL; fl=fl->next ) {
+ if ( OTTagToMacFeature(fl->featuretag,&ft,&fs) )
+ break;
+ }
+ if ( fl==NULL ) {
+ IError("Could not find a mac feature");
+ return NULL;
+ }
+ }
+ return( featureFromTag(sf,fl->featuretag));
+}
+
+static int PSTHasTag(PST *pst, uint32 tag) {
+ FeatureScriptLangList *fl;
+
+ if ( pst->subtable==NULL )
+return( false );
+ for ( fl=pst->subtable->lookup->features; fl!=NULL; fl=fl->next )
+ if ( fl->featuretag == tag )
+return( true );
+
+return( false );
+}
+
+int scriptsHaveDefault(struct scriptlanglist *sl) {
+ int i;
+
+ for ( ; sl!=NULL; sl=sl->next ) {
+ for ( i=0; i<sl->lang_cnt; ++i ) {
+ if ( (i<MAX_LANG && sl->langs[i]==DEFAULT_LANG) ||
+ (i>=MAX_LANG && sl->morelangs[i-MAX_LANG]==DEFAULT_LANG)) {
+return( true );
+ }
+ }
+ }
+return( false );
+}
+
+int LookupHasDefault(OTLookup *otl) {
+ FeatureScriptLangList *feats;
+
+ if ( otl->def_lang_checked )
+return( otl->def_lang_found );
+
+ otl->def_lang_checked = true;
+ for ( feats=otl->features; feats!=NULL; feats = feats->next ) {
+ if ( scriptsHaveDefault(feats->scripts) ) {
+ otl->def_lang_found = true;
+return( true );
+ }
+ }
+ otl->def_lang_found = false;
+return( false );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottfgpos.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottfgpos.c
new file mode 100644
index 00000000000..607214a7ef9
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottfgpos.c
@@ -0,0 +1,4613 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h"
+#include <utype.h>
+
+int coverageformatsallowed=3;
+int use_second_indic_scripts = false;
+
+#include "ttf.h"
+
+/* This file contains routines to create the otf gpos and gsub tables and their */
+/* attendant subtables */
+
+/* Undocumented fact: ATM (which does kerning for otf fonts in Word) can't handle features with multiple lookups */
+
+/* Undocumented fact: Only one feature with a given tag allowed per script/lang */
+/* So if we have multiple lookups with the same tag they must be merged into */
+/* one feature with many lookups */
+
+/* scripts (for opentype) that I understand */
+ /* see also list in lookups.c mapping script tags to friendly names */
+
+static uint32 scripts[][15] = {
+/* Arabic */ { CHR('a','r','a','b'), 0x0600, 0x06ff, 0xfb50, 0xfdff, 0xfe70, 0xfefe },
+/* Aramaic */ { CHR('a','r','a','m'), 0x820, 0x83f },
+/* Armenian */ { CHR('a','r','m','n'), 0x0530, 0x058f, 0xfb13, 0xfb17 },
+/* Balinese */ { CHR('b','a','l','i'), 0x1b00, 0x1b7f },
+/* Bengali */ { CHR('b','e','n','g'), 0x0980, 0x09ff },
+/* Bliss symb */{ CHR('b','l','i','s'), 0x12200, 0x124ff },
+/* Bopomofo */ { CHR('b','o','p','o'), 0x3100, 0x312f, 0x31a0, 0x31bf },
+/* Braille */ { CHR('b','r','a','i'), 0x2800, 0x28ff },
+/* Buginese */ { CHR('b','u','g','i'), 0x1a00, 0x1a1f },
+/* Buhid */ { CHR('b','u','h','d'), 0x1740, 0x1753 },
+/* Byzantine M*/{ CHR('b','y','z','m'), 0x1d000, 0x1d0ff },
+/* Canadian Syl*/{CHR('c','a','n','s'), 0x1400, 0x167f },
+/* Carian */ {CHR('c','a','r','i'), 0x0, 0x0 },
+/* Cham */ {CHR('c','h','a','m'), 0x0, 0x0 },
+/* Cherokee */ { CHR('c','h','e','r'), 0x13a0, 0x13ff },
+/* Cirth */ { CHR('c','i','r','t'), 0x12080, 0x120ff },
+/* CJKIdeogra */{ CHR('h','a','n','i'), 0x3300, 0x9fff, 0xf900, 0xfaff, 0x020000, 0x02ffff },
+/* Coptic */ { CHR('c','o','p','t'), 0x2c80, 0x2cff },
+/* Cypriot */ { CHR('c','p','m','n'), 0x10800, 0x1083f },
+/* Cyrillic */ { CHR('c','y','r','l'), 0x0400, 0x052f, 0x1d2b, 0x1d2b, 0x1d78, 0x1d78,
+ 0x2de0, 0x2dff, 0xa640, 0xa6ff },
+/* Deseret */ { CHR('d','s','r','t'), 0x10400, 0x1044f },
+/* Devanagari */{ CHR('d','e','v','a'), 0x0900, 0x097f },
+/* Ethiopic */ { CHR('e','t','h','i'), 0x1200, 0x139f },
+/* Georgian */ { CHR('g','e','o','r'), 0x1080, 0x10ff },
+/* Glagolitic */{ CHR('g','l','a','g'), 0x1080, 0x10ff },
+/* Gothic */ { CHR('g','o','t','h'), 0x10330, 0x1034a },
+/* Greek */ { CHR('g','r','e','k'), 0x0370, 0x03ff, 0x1f00, 0x1fff },
+/* Gujarati */ { CHR('g','u','j','r'), 0x0a80, 0x0aff },
+/* Gurmukhi */ { CHR('g','u','r','u'), 0x0a00, 0x0a7f },
+/* Hangul */ { CHR('h','a','n','g'), 0xac00, 0xd7af, 0x3130, 0x319f, 0xffa0, 0xff9f },
+/* Hanunoo */ { CHR('h','a','n','o'), 0x1720, 0x1734 },
+ /* I'm not sure what the difference is between the 'hang' tag and the 'jamo' */
+ /* tag. 'Jamo' is said to be the precomposed forms, but what's 'hang'? */
+/* Hebrew */ { CHR('h','e','b','r'), 0x0590, 0x05ff, 0xfb1e, 0xfb4f },
+/* Hiragana used to have its own tag 'hira', but has since been merged with katakana */
+/* Hangul Jamo*/{ CHR('j','a','m','o'), 0x1100, 0x11ff, 0x3130, 0x319f, 0xffa0, 0xffdf },
+/* Javanese */ { CHR('j','a','v','a'), 0 }, /* MS has a tag, but there is no unicode range */
+/* Katakana */ { CHR('k','a','n','a'), 0x3040, 0x30ff, 0xff60, 0xff9f },
+/* Kayah Li */ { CHR('k','a','l','i'), 0 },
+/* Kannada */ { CHR('k','n','d','a'), 0x0c80, 0x0cff },
+/* Kharosthi */ { CHR('k','h','a','r'), 0x10a00, 0x10a5f },
+/* Khmer */ { CHR('k','h','m','r'), 0x1780, 0x17ff },
+/* Latin */ { CHR('l','a','t','n'), 0x0041, 0x005a, 0x0061, 0x007a,
+ 0x00c0, 0x02af, 0x1d00, 0x1eff, 0xfb00, 0xfb0f, 0xff00, 0xff5f, 0xa770, 0xa7ff },
+/* Lao */ { CHR('l','a','o',' '), 0x0e80, 0x0eff },
+/* Lepcha */ { CHR('l','e','p','c'), 0 },
+/* Limbu */ { CHR('l','i','m','b'), 0x1900, 0x194f },
+/* Linear A */ /*{ CHR('l','i','n','a'), 0x10180, 0x102cf },*/ /* What happened to linear A? */
+/* Linear B */ { CHR('l','i','n','b'), 0x10000, 0x100fa },
+/* Lycian */ { CHR('l','y','c','i'), 0 },
+/* Lydian */ { CHR('l','y','d','i'), 0 },
+/* Malayalam */ { CHR('m','l','y','m'), 0x0d00, 0x0d7f },
+/* Mathematical Alphanumeric Symbols */
+ { CHR('m','a','t','h'), 0x1d400, 0x1d7ff },
+/* Mongolian */ { CHR('m','o','n','g'), 0x1800, 0x18af },
+/* Musical */ { CHR('m','u','s','c'), 0x1d100, 0x1d1ff },
+/* Myanmar */ { CHR('m','y','m','r'), 0x1000, 0x107f },
+/* New Tai Lue*/{ CHR('t','a','l','u'), 0 },
+/* N'Ko */ { CHR('n','k','o',' '), 0x07c0, 0x07fa },
+/* Ogham */ { CHR('o','g','a','m'), 0x1680, 0x169f },
+/* Ol Chiki */ { CHR('o','l','c','k'), 0 },
+/* Old Italic */{ CHR('i','t','a','l'), 0x10300, 0x1031e },
+/* Old Permic */{ CHR('p','e','r','m'), 0x10350, 0x1037f },
+/* Old Persian cuneiform */
+ { CHR('x','p','e','o'), 0x103a0, 0x103df },
+/* Oriya */ { CHR('o','r','y','a'), 0x0b00, 0x0b7f },
+/* Osmanya */ { CHR('o','s','m','a'), 0x10480, 0x104a9 },
+/* Phags-pa */ { CHR('p','h','a','g'), 0xa840, 0xa87f },
+/* Phoenician */{ CHR('p','h','n','x'), 0x10900, 0x1091f },
+/* Pollard */ { CHR('p','l','r','d'), 0x104b0, 0x104d9 },
+/* Rejang */ { CHR('r','j','n','g'), 0 },
+/* Rongorongo */{ CHR('r','o','r','o'), 0 },
+/* Runic */ { CHR('r','u','n','r'), 0x16a0, 0x16ff },
+/* Saurashtra*/ { CHR('s','a','u','r'), 0 },
+/* Shavian */ { CHR('s','h','a','w'), 0x10450, 0x1047f },
+/* Sinhala */ { CHR('s','i','n','h'), 0x0d80, 0x0dff },
+/* Sumero-Akkadian Cuneiform */
+ { CHR('x','s','u','x'), 0x12000, 0x1236e },
+/* Sundanese */ { CHR('s','u','n','d'), 0 },
+/* Syloti Nagri */
+ { CHR('s','y','l','o'), 0xa800, 0xa82f },
+/* Syriac */ { CHR('s','y','r','c'), 0x0700, 0x074f },
+/* Tagalog */ { CHR('t','a','g','l'), 0x1700, 0x1714 },
+/* Tagbanwa */ { CHR('t','a','g','b'), 0x1760, 0x1773 },
+/* Tai Le */ { CHR('t','a','l','e'), 0x1950, 0x1974 },
+/* Tai Lu */ { CHR('t','a','l','u'), 0x1980, 0x19df },
+/* Tamil */ { CHR('t','a','m','l'), 0x0b80, 0x0bff },
+/* Telugu */ { CHR('t','e','l','u'), 0x0c00, 0x0c7f },
+/* Tengwar */ { CHR('t','e','n','g'), 0x12000, 0x1207f },
+/* Thaana */ { CHR('t','h','a','a'), 0x0780, 0x07bf },
+/* Thai */ { CHR('t','h','a','i'), 0x0e00, 0x0e7f },
+/* Tibetan */ { CHR('t','i','b','t'), 0x0f00, 0x0fff },
+/* Tifinagh */ { CHR('t','f','n','g'), 0x2d30, 0x2d7f },
+/* Ugaritic */ { CHR('u','g','a','r'), 0x10380, 0x1039d },
+/* Yi */ { CHR('y','i',' ',' '), 0xa000, 0xa4c6 },
+ { 0 }
+};
+
+static SplineChar **SFOrderedGlyphs(SplineChar **glyphs);
+
+int ScriptIsRightToLeft(uint32 script) {
+ if ( script==CHR('a','r','a','b') || script==CHR('h','e','b','r') ||
+ script==CHR('c','p','m','n') || script==CHR('k','h','a','r') ||
+ script==CHR('s','y','r','c') || script==CHR('t','h','a','a') ||
+ script==CHR('n','k','o',' '))
+return( true );
+
+return( false );
+}
+
+uint32 ScriptFromUnicode(uint32 u,SplineFont *sf) {
+ int s, k;
+
+ if ( (int32)u!=-1 ) {
+ for ( s=0; scripts[s][0]!=0; ++s ) {
+ for ( k=1; scripts[s][k+1]!=0; k += 2 )
+ if ( u>=scripts[s][k] && u<=scripts[s][k+1] )
+ break;
+ if ( scripts[s][k+1]!=0 )
+ break;
+ }
+ if ( scripts[s][0]!=0 ) {
+ uint32 script = scripts[s][0];
+ if ( use_second_indic_scripts ) {
+ /* MS has a parallel set of script tags for their new */
+ /* Indic font shaper */
+ if ( script == CHR('b','e','n','g' )) script = CHR('b','n','g','2');
+ else if ( script == CHR('d','e','v','a' )) script = CHR('d','e','v','2');
+ else if ( script == CHR('g','u','j','r' )) script = CHR('g','j','r','2');
+ else if ( script == CHR('g','u','r','u' )) script = CHR('g','u','r','2');
+ else if ( script == CHR('k','n','d','a' )) script = CHR('k','n','d','2');
+ else if ( script == CHR('m','l','y','m' )) script = CHR('m','l','m','2');
+ else if ( script == CHR('o','r','y','a' )) script = CHR('o','r','y','2');
+ else if ( script == CHR('t','a','m','l' )) script = CHR('t','m','l','2');
+ else if ( script == CHR('t','e','l','u' )) script = CHR('t','e','l','2');
+ }
+return( script );
+ }
+ } else if ( sf!=NULL ) {
+ if ( sf->cidmaster!=NULL || sf->subfontcnt!=0 ) {
+ if ( sf->cidmaster!=NULL ) sf = sf->cidmaster;
+ if ( strmatch(sf->ordering,"Identity")==0 )
+return( DEFAULT_SCRIPT );
+ else if ( strmatch(sf->ordering,"Korean")==0 )
+return( CHR('h','a','n','g'));
+ else
+return( CHR('h','a','n','i') );
+ }
+ }
+
+return( DEFAULT_SCRIPT );
+}
+
+uint32 SCScriptFromUnicode(SplineChar *sc) {
+ const char *pt;
+ PST *pst;
+ SplineFont *sf;
+ int i; unsigned uni;
+ FeatureScriptLangList *features;
+
+ if ( sc==NULL )
+return( DEFAULT_SCRIPT );
+
+ sf = sc->parent;
+ if ( sc->unicodeenc!=-1 &&
+ !(sc->unicodeenc>=0xe000 && sc->unicodeenc<0xf8ff) &&
+ !(sc->unicodeenc>=0xf0000 && sc->unicodeenc<0x10ffff))
+return( ScriptFromUnicode( sc->unicodeenc,sf ));
+
+ pt = sc->name;
+ if ( *pt ) for ( ++pt; *pt!='\0' && *pt!='_' && *pt!='.'; ++pt );
+ if ( *pt!='\0' ) {
+ char *str = copyn(sc->name,pt-sc->name);
+ int uni = UniFromName(str,ui_none,&custom);
+ free(str);
+ if ( uni!=-1 )
+return( ScriptFromUnicode( uni,sf ));
+ }
+ /* Adobe ligature uniXXXXXXXX */
+ if ( strncmp(sc->name,"uni",3)==0 && sscanf(sc->name+3,"%4x", &uni)==1 )
+return( ScriptFromUnicode( uni,sf ));
+
+ if ( sf==NULL )
+return( DEFAULT_SCRIPT );
+
+ if ( sf->cidmaster ) sf=sf->cidmaster;
+ else if ( sf->mm!=NULL ) sf=sf->mm->normal;
+ for ( i=0; i<2; ++i ) {
+ for ( pst=sc->possub; pst!=NULL; pst=pst->next ) {
+ if ( pst->type == pst_lcaret )
+ continue;
+ for ( features = pst->subtable->lookup->features; features!=NULL; features=features->next ) {
+ if ( features->scripts!=NULL )
+return( features->scripts->script );
+ }
+ }
+ }
+return( ScriptFromUnicode( sc->unicodeenc,sf ));
+}
+
+int SCRightToLeft(SplineChar *sc) {
+
+ if ( sc->unicodeenc>=0x10800 && sc->unicodeenc<=0x10fff )
+return( true ); /* Supplemental Multilingual Plane, RTL scripts */
+ if ( sc->unicodeenc!=-1 && sc->unicodeenc<0x10000 )
+return( isrighttoleft(sc->unicodeenc ));
+
+return( ScriptIsRightToLeft(SCScriptFromUnicode(sc)));
+}
+
+static void GlyphMapFree(SplineChar ***map) {
+ int i;
+
+ if ( map==NULL )
+ return;
+ for ( i=0; map[i]!=NULL; ++i )
+ free(map[i]);
+ free(map);
+}
+
+static SplineChar **FindSubs(SplineChar *sc,struct lookup_subtable *sub) {
+ SplineChar *spc[30], **space = spc;
+ int max = sizeof(spc)/sizeof(spc[0]);
+ int cnt=0;
+ char *pt, *start;
+ SplineChar *subssc, **ret;
+ PST *pst;
+
+ for ( pst=sc->possub; pst!=NULL; pst=pst->next ) {
+ if ( pst->subtable==sub ) {
+ pt = pst->u.subs.variant;
+ while ( 1 ) {
+ while ( *pt==' ' ) ++pt; // Burn leading spaces.
+ // Start tokenizing the space-delimited list of references.
+ start = pt; // Note the beginning of the current item.
+ pt = strchr(start,' '); // Find the end of the current item.
+ if ( pt!=NULL )
+ *pt = '\0'; // Temporarily terminate the item.
+ subssc = SFGetChar(sc->parent,-1,start); // Find the corresponding SplineChar.
+ if ( subssc!=NULL && subssc->ttf_glyph!=-1 ) {
+ // Extend the list if necessary.
+ if ( cnt>=max ) {
+ if ( spc==space ) {
+ space = malloc((max+=30)*sizeof(SplineChar *));
+ memcpy(space,spc,(max-30)*sizeof(SplineChar *));
+ } else
+ space = realloc(space,(max+=30)*sizeof(SplineChar *));
+ }
+ // Write the SplineChar to the list.
+ space[cnt++] = subssc;
+ }
+ if ( pt==NULL )
+ break; // No more items.
+ *pt=' '; // Repair the string from the tokenization process.
+ }
+ }
+ }
+ // Returning NULL causes problems and seems to be unnecessary for now.
+ ret = malloc((cnt+1)*sizeof(SplineChar *));
+ memcpy(ret,space,cnt*sizeof(SplineChar *));
+ ret[cnt] = NULL;
+ if ( space!=spc )
+ free(space); // Free the temp space only if it is dynamically allocated.
+ return( ret );
+}
+
+static SplineChar ***generateMapList(SplineChar **glyphs, struct lookup_subtable *sub) {
+ int cnt;
+ SplineChar *sc;
+ int i;
+ SplineChar ***maps=NULL;
+
+ for ( cnt=0; glyphs[cnt]!=NULL; ++cnt );
+ maps = malloc((cnt+1)*sizeof(SplineChar **));
+ for ( i=0; i<cnt; ++i ) {
+ sc = glyphs[i];
+ maps[i] = FindSubs(sc,sub);
+ if (maps[i] == NULL) {
+ fprintf( stderr, "maps[%d] is null; glyphs[%d] is \"%s\"; lookup name is \"%s\".\n" , i , i , (glyphs[i]->name ? glyphs[i]->name : ""), sub->subtable_name) ;
+ }
+ }
+ maps[cnt] = NULL;
+return( maps );
+}
+
+void AnchorClassDecompose(SplineFont *sf,AnchorClass *_ac, int classcnt, int *subcnts,
+ SplineChar ***marks,SplineChar ***base,
+ SplineChar ***lig,SplineChar ***mkmk,
+ struct glyphinfo *gi) {
+ /* Run through the font finding all characters with this anchor class */
+ /* (and the cnt-1 classes after it) */
+ /* and distributing in the four possible anchor types */
+ int i,j,k,gid, gmax;
+ struct sclist { int cnt; SplineChar **glyphs; } heads[at_max];
+ AnchorPoint *test;
+ AnchorClass *ac;
+
+ memset(heads,0,sizeof(heads));
+ memset(subcnts,0,classcnt*sizeof(int));
+ memset(marks,0,classcnt*sizeof(SplineChar **));
+ gmax = gi==NULL ? sf->glyphcnt : gi->gcnt;
+ for ( j=0; j<2; ++j ) {
+ for ( i=0; i<gmax; ++i ) if ( (gid = gi==NULL ? i : gi->bygid[i])!=-1 && gid < sf->glyphcnt && sf->glyphs[gid]!=NULL ) {
+ for ( ac = _ac, k=0; k<classcnt; ac=ac->next ) if ( ac->matches ) {
+ for ( test=sf->glyphs[gid]->anchor; test!=NULL ; test=test->next ) {
+ if ( test->anchor==ac ) {
+ if ( test->type==at_mark ) {
+ if ( j )
+ marks[k][subcnts[k]] = sf->glyphs[gid];
+ ++subcnts[k];
+ if ( ac->type!=act_mkmk )
+ break;
+ } else if ( test->type!=at_centry && test->type!=at_cexit ) {
+ if ( heads[test->type].glyphs!=NULL ) {
+ /* If we have multiple mark classes, we may use the same base glyph */
+ /* with more than one mark class. But it should only appear once in */
+ /* the output */
+ if ( heads[test->type].cnt==0 ||
+ heads[test->type].glyphs[heads[test->type].cnt-1]!=sf->glyphs[gid] ) {
+ heads[test->type].glyphs[heads[test->type].cnt] = sf->glyphs[gid];
+ ++heads[test->type].cnt;
+ }
+ } else
+ ++heads[test->type].cnt;
+ if ( ac->type!=act_mkmk )
+ break;
+ }
+ }
+ }
+ ++k;
+ }
+ }
+ if ( j==1 )
+ break;
+ for ( i=0; i<4; ++i )
+ if ( heads[i].cnt!=0 ) {
+ heads[i].glyphs = malloc((heads[i].cnt+1)*sizeof(SplineChar *));
+ /* I used to set glyphs[cnt] to NULL here. But it turns out */
+ /* cnt may be an overestimate on the first pass. So we can */
+ /* only set it at the end of the second pass */
+ heads[i].cnt = 0;
+ }
+ for ( k=0; k<classcnt; ++k ) if ( subcnts[k]!=0 ) {
+ marks[k] = malloc((subcnts[k]+1)*sizeof(SplineChar *));
+ marks[k][subcnts[k]] = NULL;
+ subcnts[k] = 0;
+ }
+ }
+ for ( i=0; i<4; ++i ) {
+ if ( heads[i].glyphs!=NULL )
+ heads[i].glyphs[heads[i].cnt] = NULL;
+ }
+ for ( i=0; i<classcnt; ++i ) {
+ if ( subcnts[k]!=0 )
+ SFOrderedGlyphs(marks[i]);
+ }
+
+ *base = SFOrderedGlyphs(heads[at_basechar].glyphs);
+ *lig = SFOrderedGlyphs(heads[at_baselig].glyphs);
+ *mkmk = SFOrderedGlyphs(heads[at_basemark].glyphs);
+}
+
+SplineChar **EntryExitDecompose(SplineFont *sf,AnchorClass *ac,struct glyphinfo *gi) {
+ /* Run through the font finding all characters with this anchor class */
+ int i,j, cnt, gmax, gid;
+ SplineChar **array;
+ AnchorPoint *test;
+
+ array=NULL;
+ gmax = gi==NULL ? sf->glyphcnt : gi->gcnt;
+ for ( j=0; j<2; ++j ) {
+ cnt = 0;
+ for ( i=0; i<gmax; ++i ) if ( (gid = gi==NULL ? i : gi->bygid[i])!=-1 && sf->glyphs[gid]!=NULL ) {
+ for ( test=sf->glyphs[gid]->anchor; test!=NULL && test->anchor!=ac; test=test->next );
+ if ( test!=NULL && (test->type==at_centry || test->type==at_cexit )) {
+ if ( array!=NULL )
+ array[cnt] = sf->glyphs[gid];
+ ++cnt;
+ }
+ }
+ if ( cnt==0 )
+return( NULL );
+ if ( j==1 )
+ break;
+ array = malloc((cnt+1)*sizeof(SplineChar *));
+ array[cnt] = NULL;
+ }
+return( array );
+}
+
+static void AnchorGuessContext(SplineFont *sf,struct alltabs *at) {
+ int i;
+ int maxbase=0, maxmark=0, basec, markc;
+ AnchorPoint *ap;
+ int hascursive = 0;
+
+ /* the order in which we examine the glyphs does not matter here, so */
+ /* we needn't add the complexity running though in gid order */
+ for ( i=0; i<sf->glyphcnt; ++i ) if ( sf->glyphs[i] ) {
+ basec = markc = 0;
+ for ( ap = sf->glyphs[i]->anchor; ap!=NULL; ap=ap->next )
+ if ( ap->type==at_basemark )
+ ++markc;
+ else if ( ap->type==at_basechar || ap->type==at_baselig )
+ ++basec;
+ else if ( ap->type==at_centry )
+ hascursive = true;
+ if ( basec>maxbase ) maxbase = basec;
+ if ( markc>maxmark ) maxmark = markc;
+ }
+
+ if ( maxbase*(maxmark+1)>at->os2.maxContext )
+ at->os2.maxContext = maxbase*(maxmark+1);
+ if ( hascursive && at->os2.maxContext<2 )
+ at->os2.maxContext=2;
+}
+
+static void dumpcoveragetable(FILE *gpos,SplineChar **glyphs) {
+ int i, last = -2, range_cnt=0, start, r;
+ /* the glyph list should already be sorted */
+ /* figure out whether it is better (smaller) to use an array of glyph ids */
+ /* or a set of glyph id ranges */
+
+ for ( i=0; glyphs[i]!=NULL; ++i ) {
+ if ( glyphs[i]->ttf_glyph<=last )
+ IError("Glyphs must be ordered when creating coverage table");
+ if ( glyphs[i]->ttf_glyph!=last+1 )
+ ++range_cnt;
+ last = glyphs[i]->ttf_glyph;
+ }
+ /* I think Windows will only accept format 2 coverage tables? */
+ if ( !(coverageformatsallowed&2) || ((coverageformatsallowed&1) && i<=3*range_cnt )) {
+ /* We use less space with a list of glyphs than with a set of ranges */
+ putshort(gpos,1); /* Coverage format=1 => glyph list */
+ putshort(gpos,i); /* count of glyphs */
+ for ( i=0; glyphs[i]!=NULL; ++i )
+ putshort(gpos,glyphs[i]->ttf_glyph); /* array of glyph IDs */
+ } else {
+ putshort(gpos,2); /* Coverage format=2 => range list */
+ putshort(gpos,range_cnt); /* count of ranges */
+ last = -2; start = -2; /* start is a index in our glyph array, last is ttf_glyph */
+ r = 0;
+ for ( i=0; glyphs[i]!=NULL; ++i ) {
+ if ( glyphs[i]->ttf_glyph!=last+1 ) {
+ if ( last!=-2 ) {
+ putshort(gpos,glyphs[start]->ttf_glyph); /* start glyph ID */
+ putshort(gpos,last); /* end glyph ID */
+ putshort(gpos,start); /* coverage index of start glyph */
+ ++r;
+ }
+ start = i;
+ }
+ last = glyphs[i]->ttf_glyph;
+ }
+ if ( last!=-2 ) {
+ putshort(gpos,glyphs[start]->ttf_glyph); /* start glyph ID */
+ putshort(gpos,last); /* end glyph ID */
+ putshort(gpos,start); /* coverage index of start glyph */
+ ++r;
+ }
+ if ( r!=range_cnt )
+ IError("Miscounted ranges in format 2 coverage table output");
+ }
+}
+
+static int sc_ttf_order( const void *_sc1, const void *_sc2) {
+ const SplineChar *sc1 = *(const SplineChar **) _sc1, *sc2 = *(const SplineChar **) _sc2;
+return( sc1->ttf_glyph - sc2->ttf_glyph );
+}
+
+static SplineChar **SFOrderedGlyphs(SplineChar **glyphs) {
+ int cnt, i, k;
+ if ( glyphs==NULL )
+return( NULL );
+ for ( cnt=0; glyphs[cnt]!=NULL; ++cnt);
+ qsort(glyphs,cnt,sizeof(SplineChar *),sc_ttf_order);
+ if ( glyphs[0]->ttf_glyph==-1 ) {
+ /* Not sure if this can happen, but it's easy to fix */
+ for ( k=0; k<cnt && glyphs[k]->ttf_glyph==-1; ++k);
+ for ( i=0; i<=cnt-k; ++i )
+ glyphs[i] = glyphs[i+k];
+ }
+ for ( i=0; i<cnt-1; ++i )
+ if (glyphs[i]->ttf_glyph==glyphs[i+1]->ttf_glyph) {
+ memmove(glyphs+i, glyphs+i+1, (cnt-i)*sizeof(SplineChar *));
+ --cnt;
+ }
+return( glyphs );
+}
+
+static SplineChar **SFOrderedGlyphsWithPSTinSubtable(SplineFont *sf,struct lookup_subtable *sub) {
+ SplineChar **glyphs = SFGlyphsWithPSTinSubtable(sf,sub);
+ return SFOrderedGlyphs(glyphs);
+}
+
+SplineChar **SFGlyphsFromNames(SplineFont *sf,char *names) {
+ int cnt, ch;
+ char *pt, *end;
+ SplineChar *sc, **glyphs;
+
+ if ( names==NULL )
+return( calloc(1,sizeof(SplineChar *)) );
+
+ cnt = 0;
+ for ( pt = names; *pt; pt = end+1 ) {
+ ++cnt;
+ end = strchr(pt,' ');
+ if ( end==NULL )
+ break;
+ }
+
+ glyphs = malloc((cnt+1)*sizeof(SplineChar *));
+ cnt = 0;
+ for ( pt = names; *pt; pt = end+1 ) {
+ end = strchr(pt,' ');
+ if ( end==NULL )
+ end = pt+strlen(pt);
+ ch = *end;
+ *end = '\0';
+ sc = SFGetChar(sf,-1,pt);
+ if ( sc!=NULL && sc->ttf_glyph!=-1 )
+ glyphs[cnt++] = sc;
+ *end = ch;
+ if ( ch=='\0' )
+ break;
+ }
+ glyphs[cnt] = NULL;
+return( glyphs );
+}
+
+static SplineChar **OrderedGlyphsFromNames(SplineFont *sf,char *names) {
+ SplineChar **glyphs = SFGlyphsFromNames(sf,names);
+ int i,j;
+
+ if ( glyphs==NULL || glyphs[0]==NULL )
+return( glyphs );
+
+ for ( i=0; glyphs[i+1]!=NULL; ++i ) for ( j=i+1; glyphs[j]!=NULL; ++j ) {
+ if ( glyphs[i]->ttf_glyph > glyphs[j]->ttf_glyph ) {
+ SplineChar *sc = glyphs[i];
+ glyphs[i] = glyphs[j];
+ glyphs[j] = sc;
+ }
+ }
+ if ( glyphs[0]!=NULL ) { /* Glyphs should not appear twice in the name list, just just in case they do... */
+ for ( i=0; glyphs[i+1]!=NULL; ++i ) {
+ if ( glyphs[i]==glyphs[i+1] ) {
+ for ( j=i+1; glyphs[j]!=NULL; ++j )
+ glyphs[j] = glyphs[j+1];
+ }
+ }
+ }
+return( glyphs );
+}
+
+static void gposvrmaskeddump(FILE *gpos,int vf1,int mask,int offset) {
+ if ( vf1&1 ) putshort(gpos,mask&1 ? offset : 0 );
+ if ( vf1&2 ) putshort(gpos,mask&2 ? offset : 0 );
+ if ( vf1&4 ) putshort(gpos,mask&4 ? offset : 0 );
+ if ( vf1&8 ) putshort(gpos,mask&8 ? offset : 0 );
+}
+
+static int devtaboffsetsize(DeviceTable *dt) {
+ int type = 1, i;
+
+ for ( i=dt->last_pixel_size-dt->first_pixel_size; i>=0; --i ) {
+ if ( dt->corrections[i]>=8 || dt->corrections[i]<-8 )
+return( 3 );
+ else if ( dt->corrections[i]>=2 || dt->corrections[i]<-2 )
+ type = 2;
+ }
+return( type );
+}
+
+static void dumpgposdevicetable(FILE *gpos,DeviceTable *dt) {
+ int type;
+ int i,cnt,b;
+
+ if ( dt==NULL || dt->corrections==NULL )
+return;
+ type = devtaboffsetsize(dt);
+ putshort(gpos,dt->first_pixel_size);
+ putshort(gpos,dt->last_pixel_size );
+ putshort(gpos,type);
+ cnt = dt->last_pixel_size - dt->first_pixel_size + 1;
+ if ( type==3 ) {
+ for ( i=0; i<cnt; ++i )
+ putc(dt->corrections[i],gpos);
+ if ( cnt&1 )
+ putc(0,gpos);
+ } else if ( type==2 ) {
+ for ( i=0; i<cnt; i+=4 ) {
+ int val = 0;
+ for ( b=0; b<4 && i+b<cnt; ++b )
+ val |= (dt->corrections[i+b]&0x000f)<<(12-b*4);
+ putshort(gpos,val);
+ }
+ } else {
+ for ( i=0; i<cnt; i+=8 ) {
+ int val = 0;
+ for ( b=0; b<8 && i+b<cnt; ++b )
+ val |= (dt->corrections[i+b]&0x0003)<<(14-b*2);
+ putshort(gpos,val);
+ }
+ }
+}
+
+static int DevTabLen(DeviceTable *dt) {
+ int type;
+ int cnt;
+
+ if ( dt==NULL || dt->corrections==NULL )
+return( 0 );
+ cnt = dt->last_pixel_size - dt->first_pixel_size + 1;
+ type = devtaboffsetsize(dt);
+ if ( type==3 )
+ cnt = (cnt+1)/2;
+ else if ( type==2 )
+ cnt = (cnt+3)/4;
+ else
+ cnt = (cnt+7)/8;
+ cnt += 3; /* first, last, type */
+return( sizeof(uint16)*cnt );
+}
+
+static int ValDevTabLen(ValDevTab *vdt) {
+
+ if ( vdt==NULL )
+return( 0 );
+
+return( DevTabLen(&vdt->xadjust) + DevTabLen(&vdt->yadjust) +
+ DevTabLen(&vdt->xadv) + DevTabLen(&vdt->yadv) );
+}
+
+static int gposdumpvaldevtab(FILE *gpos,ValDevTab *vdt,int bits,int next_dev_tab ) {
+
+ if ( bits&0x10 ) {
+ if ( vdt==NULL || vdt->xadjust.corrections==NULL )
+ putshort(gpos,0);
+ else {
+ putshort(gpos,next_dev_tab);
+ next_dev_tab += DevTabLen(&vdt->xadjust);
+ }
+ }
+ if ( bits&0x20 ) {
+ if ( vdt==NULL || vdt->yadjust.corrections==NULL )
+ putshort(gpos,0);
+ else {
+ putshort(gpos,next_dev_tab);
+ next_dev_tab += DevTabLen(&vdt->yadjust);
+ }
+ }
+ if ( bits&0x40 ) {
+ if ( vdt==NULL || vdt->xadv.corrections==NULL )
+ putshort(gpos,0);
+ else {
+ putshort(gpos,next_dev_tab);
+ next_dev_tab += DevTabLen(&vdt->xadv);
+ }
+ }
+ if ( bits&0x80 ) {
+ if ( vdt==NULL || vdt->yadv.corrections==NULL )
+ putshort(gpos,0);
+ else {
+ putshort(gpos,next_dev_tab);
+ next_dev_tab += DevTabLen(&vdt->yadv);
+ }
+ }
+return( next_dev_tab );
+}
+
+static int gposmaskeddumpdevtab(FILE *gpos,DeviceTable *dt,int bits,int mask,
+ int next_dev_tab ) {
+
+ if ( bits&0x10 ) {
+ if ( !(mask&0x10) || dt==NULL )
+ putshort(gpos,0);
+ else {
+ putshort(gpos,next_dev_tab);
+ next_dev_tab += DevTabLen(dt);
+ }
+ }
+ if ( bits&0x20 ) {
+ if ( !(mask&0x20) || dt==NULL )
+ putshort(gpos,0);
+ else {
+ putshort(gpos,next_dev_tab);
+ next_dev_tab += DevTabLen(dt);
+ }
+ }
+ if ( bits&0x40 ) {
+ if ( !(mask&0x40) || dt==NULL )
+ putshort(gpos,0);
+ else {
+ putshort(gpos,next_dev_tab);
+ next_dev_tab += DevTabLen(dt);
+ }
+ }
+ if ( bits&0x80 ) {
+ if ( !(mask&0x80) || dt==NULL )
+ putshort(gpos,0);
+ else {
+ putshort(gpos,next_dev_tab);
+ next_dev_tab += DevTabLen(dt);
+ }
+ }
+return( next_dev_tab );
+}
+
+static int DevTabsSame(DeviceTable *dt1, DeviceTable *dt2) {
+ DeviceTable _dt;
+ int i;
+
+ if ( dt1==NULL && dt2==NULL )
+return( true );
+ if ( dt1==NULL ) {
+ memset(&_dt,0,sizeof(_dt));
+ dt1 = &_dt;
+ }
+ if ( dt2==NULL ) {
+ memset(&_dt,0,sizeof(_dt));
+ dt2 = &_dt;
+ }
+ if ( dt1->corrections==NULL && dt2->corrections==NULL )
+return( true );
+ if ( dt1->corrections==NULL || dt2->corrections==NULL )
+return( false );
+ if ( dt1->first_pixel_size!=dt2->first_pixel_size ||
+ dt1->last_pixel_size!=dt2->last_pixel_size )
+return( false );
+ for ( i=dt2->last_pixel_size-dt1->first_pixel_size; i>=0; --i )
+ if ( dt1->corrections[i]!=dt2->corrections[i] )
+return( false );
+
+return( true );
+}
+
+static int ValDevTabsSame(ValDevTab *vdt1, ValDevTab *vdt2) {
+ ValDevTab _vdt;
+
+ if ( vdt1==NULL && vdt2==NULL )
+return( true );
+ if ( vdt1==NULL ) {
+ memset(&_vdt,0,sizeof(_vdt));
+ vdt1 = &_vdt;
+ }
+ if ( vdt2==NULL ) {
+ memset(&_vdt,0,sizeof(_vdt));
+ vdt2 = &_vdt;
+ }
+return( DevTabsSame(&vdt1->xadjust,&vdt2->xadjust) &&
+ DevTabsSame(&vdt1->yadjust,&vdt2->yadjust) &&
+ DevTabsSame(&vdt1->xadv,&vdt2->xadv) &&
+ DevTabsSame(&vdt1->yadv,&vdt2->yadv) );
+}
+
+static void dumpGPOSsimplepos(FILE *gpos,SplineFont *sf,struct lookup_subtable *sub ) {
+ int cnt, cnt2;
+ int32 coverage_pos, end;
+ PST *pst, *first=NULL;
+ int bits = 0, same=true;
+ SplineChar **glyphs;
+
+ glyphs = SFOrderedGlyphsWithPSTinSubtable(sf,sub);
+ for ( cnt=cnt2=0; glyphs[cnt]!=NULL; ++cnt) {
+ for ( pst=glyphs[cnt]->possub; pst!=NULL; pst=pst->next ) {
+ if ( pst->subtable==sub && pst->type==pst_position ) {
+ if ( first==NULL ) first = pst;
+ else if ( same ) {
+ if ( first->u.pos.xoff!=pst->u.pos.xoff ||
+ first->u.pos.yoff!=pst->u.pos.yoff ||
+ first->u.pos.h_adv_off!=pst->u.pos.h_adv_off ||
+ first->u.pos.v_adv_off!=pst->u.pos.v_adv_off )
+ same = false;
+ if ( !ValDevTabsSame(pst->u.pos.adjust,first->u.pos.adjust))
+ same = false;
+ }
+ if ( pst->u.pos.xoff!=0 ) bits |= 1;
+ if ( pst->u.pos.yoff!=0 ) bits |= 2;
+ if ( pst->u.pos.h_adv_off!=0 ) bits |= 4;
+ if ( pst->u.pos.v_adv_off!=0 ) bits |= 8;
+ if ( pst->u.pos.adjust!=NULL ) {
+ if ( pst->u.pos.adjust->xadjust.corrections!=NULL ) bits |= 0x10;
+ if ( pst->u.pos.adjust->yadjust.corrections!=NULL ) bits |= 0x20;
+ if ( pst->u.pos.adjust->xadv.corrections!=NULL ) bits |= 0x40;
+ if ( pst->u.pos.adjust->yadv.corrections!=NULL ) bits |= 0x80;
+ }
+ ++cnt2;
+ break;
+ }
+ }
+ }
+ if ( bits==0 ) bits=1;
+ if ( cnt!=cnt2 )
+ IError( "Count mismatch in dumpGPOSsimplepos#1 %d vs %d\n", cnt, cnt2 );
+
+ putshort(gpos,same?1:2); /* 1 means all value records same */
+ coverage_pos = ftell(gpos);
+ putshort(gpos,0); /* offset to coverage table */
+ putshort(gpos,bits);
+ if ( same ) {
+ if ( bits&1 ) putshort(gpos,first->u.pos.xoff);
+ if ( bits&2 ) putshort(gpos,first->u.pos.yoff);
+ if ( bits&4 ) putshort(gpos,first->u.pos.h_adv_off);
+ if ( bits&8 ) putshort(gpos,first->u.pos.v_adv_off);
+ if ( bits&0xf0 ) {
+ int next_dev_tab = ftell(gpos)-coverage_pos+2+
+ sizeof(int16)*((bits&0x10?1:0) + (bits&0x20?1:0) + (bits&0x40?1:0) + (bits&0x80?1:0));
+ if ( bits&0x10 ) { putshort(gpos,next_dev_tab); next_dev_tab += DevTabLen(&first->u.pos.adjust->xadjust); }
+ if ( bits&0x20 ) { putshort(gpos,next_dev_tab); next_dev_tab += DevTabLen(&first->u.pos.adjust->yadjust); }
+ if ( bits&0x40 ) { putshort(gpos,next_dev_tab); next_dev_tab += DevTabLen(&first->u.pos.adjust->xadv); }
+ if ( bits&0x80 ) { putshort(gpos,next_dev_tab); next_dev_tab += DevTabLen(&first->u.pos.adjust->yadv); }
+ if ( bits&0x10 ) dumpgposdevicetable(gpos,&first->u.pos.adjust->xadjust);
+ if ( bits&0x20 ) dumpgposdevicetable(gpos,&first->u.pos.adjust->yadjust);
+ if ( bits&0x40 ) dumpgposdevicetable(gpos,&first->u.pos.adjust->xadv);
+ if ( bits&0x80 ) dumpgposdevicetable(gpos,&first->u.pos.adjust->yadv);
+ if ( next_dev_tab!=ftell(gpos)-coverage_pos+2 )
+ IError( "Device Table offsets wrong in simple positioning 2");
+ }
+ } else {
+ int vr_size =
+ sizeof(int16)*((bits&0x1?1:0) + (bits&0x2?1:0) + (bits&0x4?1:0) + (bits&0x8?1:0) +
+ (bits&0x10?1:0) + (bits&0x20?1:0) + (bits&0x40?1:0) + (bits&0x80?1:0));
+ int next_dev_tab = ftell(gpos)-coverage_pos+2+2+vr_size*cnt;
+ putshort(gpos,cnt);
+ for ( cnt2 = 0; glyphs[cnt2]!=NULL; ++cnt2 ) {
+ for ( pst=glyphs[cnt2]->possub; pst!=NULL; pst=pst->next ) {
+ if ( pst->subtable==sub && pst->type==pst_position ) {
+ if ( bits&1 ) putshort(gpos,pst->u.pos.xoff);
+ if ( bits&2 ) putshort(gpos,pst->u.pos.yoff);
+ if ( bits&4 ) putshort(gpos,pst->u.pos.h_adv_off);
+ if ( bits&8 ) putshort(gpos,pst->u.pos.v_adv_off);
+ next_dev_tab = gposdumpvaldevtab(gpos,pst->u.pos.adjust,bits,
+ next_dev_tab);
+ break;
+ }
+ }
+ }
+ if ( cnt!=cnt2 )
+ IError( "Count mismatch in dumpGPOSsimplepos#3 %d vs %d\n", cnt, cnt2 );
+ if ( bits&0xf0 ) {
+ for ( cnt2 = 0; glyphs[cnt2]!=NULL; ++cnt2 ) {
+ for ( pst=glyphs[cnt2]->possub; pst!=NULL; pst=pst->next ) {
+ if ( pst->subtable==sub && pst->type==pst_position ) {
+ if ( bits&0x10 ) dumpgposdevicetable(gpos,&first->u.pos.adjust->xadjust);
+ if ( bits&0x20 ) dumpgposdevicetable(gpos,&first->u.pos.adjust->yadjust);
+ if ( bits&0x40 ) dumpgposdevicetable(gpos,&first->u.pos.adjust->xadv);
+ if ( bits&0x80 ) dumpgposdevicetable(gpos,&first->u.pos.adjust->yadv);
+ }
+ }
+ }
+ }
+ if ( next_dev_tab!=ftell(gpos)-coverage_pos+2 )
+ IError( "Device Table offsets wrong in simple positioning 2");
+ }
+ end = ftell(gpos);
+ fseek(gpos,coverage_pos,SEEK_SET);
+ putshort(gpos,end-coverage_pos+2);
+ fseek(gpos,end,SEEK_SET);
+ dumpcoveragetable(gpos,glyphs);
+ fseek(gpos,0,SEEK_END);
+ free(glyphs);
+}
+
+struct sckppst {
+ uint16 samewas;
+ uint16 devtablen;
+ uint16 tot;
+ uint8 isv;
+ uint8 subtable_too_big;
+/* The first few fields are only meaningful in the first structure in the array*/
+/* and provide information about the entire rest of the array */
+ uint16 other_gid;
+ SplineChar *sc;
+ KernPair *kp;
+ PST *pst;
+};
+
+static int cmp_gid( const void *_s1, const void *_s2 ) {
+ const struct sckppst *s1 = _s1, *s2 = _s2;
+return( ((int) s1->other_gid) - ((int) s2->other_gid) );
+}
+
+static void dumpGPOSpairpos(FILE *gpos,SplineFont *sf,struct lookup_subtable *sub) {
+ int cnt;
+ int32 coverage_pos, offset_pos, end, start, pos;
+ PST *pst;
+ KernPair *kp;
+ int vf1 = 0, vf2=0, i, j, k, tot, bit_cnt, v;
+ int start_cnt, end_cnt;
+ int chunk_cnt, chunk_max;
+ SplineChar *sc, **glyphs, *gtemp;
+ struct sckppst **seconds;
+ int devtablen;
+ int next_dev_tab;
+
+ /* Figure out all the data we need. First the glyphs with kerning info */
+ /* then the glyphs to which they kern, and by how much */
+ glyphs = SFOrderedGlyphsWithPSTinSubtable(sf,sub);
+ for ( cnt=0; glyphs[cnt]!=NULL; ++cnt);
+ seconds = malloc(cnt*sizeof(struct sckppst *));
+ for ( cnt=0; glyphs[cnt]!=NULL; ++cnt) {
+ for ( k=0; k<2; ++k ) {
+ devtablen = 0;
+ tot = 0;
+ for ( pst=glyphs[cnt]->possub; pst!=NULL; pst=pst->next ) {
+ if ( pst->subtable==sub && pst->type==pst_pair &&
+ (sc = SFGetChar(sf,-1,pst->u.pair.paired))!=NULL &&
+ sc->ttf_glyph!=-1 ) {
+ if ( k ) {
+ seconds[cnt][tot].sc = sc;
+ seconds[cnt][tot].other_gid = sc->ttf_glyph;
+ seconds[cnt][tot].pst = pst;
+ devtablen += ValDevTabLen(pst->u.pair.vr[0].adjust) +
+ ValDevTabLen(pst->u.pair.vr[1].adjust);
+
+ }
+ ++tot;
+ }
+ }
+ for ( v=0; v<2; ++v ) {
+ for ( kp = v ? glyphs[cnt]->vkerns : glyphs[cnt]->kerns; kp!=NULL; kp=kp->next ) {
+ if( kp->subtable!=sub ) continue; // process only glyphs from the current subtable
+ if ( kp->sc->ttf_glyph!=-1 ) {
+ if ( k ) {
+ seconds[cnt][tot].other_gid = kp->sc->ttf_glyph;
+ seconds[cnt][tot].sc = kp->sc;
+ seconds[cnt][tot].kp = kp;
+ seconds[cnt][tot].isv = v;
+ devtablen += DevTabLen(kp->adjust);
+ }
+ ++tot;
+ }
+ }
+ }
+ if ( k==0 ) {
+ seconds[cnt] = calloc(tot+1,sizeof(struct sckppst));
+ } else {
+ qsort(seconds[cnt],tot,sizeof(struct sckppst),cmp_gid);
+ seconds[cnt][0].tot = tot;
+ /* Devtablen is 0 unless we are configured for device tables */
+ seconds[cnt][0].devtablen = devtablen;
+ seconds[cnt][0].samewas = 0xffff;
+ }
+ }
+ }
+
+ /* Some fonts do a primitive form of class based kerning, several glyphs */
+ /* can share the same list of second glyphs & offsets */
+ for ( cnt=0; glyphs[cnt]!=NULL; ++cnt) {
+ struct sckppst *test = seconds[cnt], *test2;
+ for ( i=cnt-1; i>=0; --i ) {
+ test2 = seconds[i];
+ if ( test[0].tot != test2[0].tot || test2[0].samewas!=0xffff )
+ continue;
+ for ( j=test[0].tot-1; j>=0; --j ) {
+ if ( test[j].other_gid != test2[j].other_gid )
+ break;
+ if ( test[j].kp!=NULL && test2[j].kp!=NULL &&
+ test[j].kp->off == test2[j].kp->off
+ && DevTabsSame(test[j].kp->adjust,test2[j].kp->adjust)
+ )
+ /* So far, so good */;
+ else if ( test[j].pst!=NULL && test2[j].pst!=NULL &&
+ test[j].pst->u.pair.vr[0].xoff == test2[j].pst->u.pair.vr[0].xoff &&
+ test[j].pst->u.pair.vr[0].yoff == test2[j].pst->u.pair.vr[0].yoff &&
+ test[j].pst->u.pair.vr[0].h_adv_off == test2[j].pst->u.pair.vr[0].h_adv_off &&
+ test[j].pst->u.pair.vr[0].v_adv_off == test2[j].pst->u.pair.vr[0].v_adv_off &&
+ test[j].pst->u.pair.vr[1].xoff == test2[j].pst->u.pair.vr[1].xoff &&
+ test[j].pst->u.pair.vr[1].yoff == test2[j].pst->u.pair.vr[1].yoff &&
+ test[j].pst->u.pair.vr[1].h_adv_off == test2[j].pst->u.pair.vr[1].h_adv_off &&
+ test[j].pst->u.pair.vr[1].v_adv_off == test2[j].pst->u.pair.vr[1].v_adv_off
+ && ValDevTabsSame(test[j].pst->u.pair.vr[0].adjust,test2[j].pst->u.pair.vr[0].adjust)
+ && ValDevTabsSame(test[j].pst->u.pair.vr[1].adjust,test2[j].pst->u.pair.vr[1].adjust)
+ )
+ /* That's ok too. */;
+ else
+ break;
+ }
+ if ( j>=0 )
+ continue;
+ test[0].samewas = i;
+ break;
+ }
+ }
+
+ /* Ok, how many offsets must we output? Normal kerning will just use */
+ /* one offset (with perhaps a device table), but the standard allows */
+ /* us to adjust 8 different values (with 8 different device tables) */
+ /* Find out which we need */
+ for ( cnt=0; glyphs[cnt]!=NULL; ++cnt) {
+ for ( tot=0 ; tot<seconds[cnt][0].tot; ++tot ) {
+ if ( (pst=seconds[cnt][tot].pst)!=NULL ) {
+ if ( pst->subtable==sub && pst->type==pst_pair ) {
+ if ( pst->u.pair.vr[0].xoff!=0 ) vf1 |= 1;
+ if ( pst->u.pair.vr[0].yoff!=0 ) vf1 |= 2;
+ if ( pst->u.pair.vr[0].h_adv_off!=0 ) vf1 |= 4;
+ if ( pst->u.pair.vr[0].v_adv_off!=0 ) vf1 |= 8;
+ if ( pst->u.pair.vr[0].adjust!=NULL ) {
+ if ( pst->u.pair.vr[0].adjust->xadjust.corrections!=NULL ) vf1 |= 0x10;
+ if ( pst->u.pair.vr[0].adjust->yadjust.corrections!=NULL ) vf1 |= 0x20;
+ if ( pst->u.pair.vr[0].adjust->xadv.corrections!=NULL ) vf1 |= 0x40;
+ if ( pst->u.pair.vr[0].adjust->yadv.corrections!=NULL ) vf1 |= 0x80;
+ }
+ if ( pst->u.pair.vr[1].xoff!=0 ) vf2 |= 1;
+ if ( pst->u.pair.vr[1].yoff!=0 ) vf2 |= 2;
+ if ( pst->u.pair.vr[1].h_adv_off!=0 ) vf2 |= 4;
+ if ( pst->u.pair.vr[1].v_adv_off!=0 ) vf2 |= 8;
+ if ( pst->u.pair.vr[1].adjust!=NULL ) {
+ if ( pst->u.pair.vr[1].adjust->xadjust.corrections!=NULL ) vf2 |= 0x10;
+ if ( pst->u.pair.vr[1].adjust->yadjust.corrections!=NULL ) vf2 |= 0x20;
+ if ( pst->u.pair.vr[1].adjust->xadv.corrections!=NULL ) vf2 |= 0x40;
+ if ( pst->u.pair.vr[1].adjust->yadv.corrections!=NULL ) vf2 |= 0x80;
+ }
+ }
+ }
+ if ( (kp = seconds[cnt][tot].kp)!=NULL ) {
+ int mask = 0, mask2=0;
+ if ( seconds[cnt][tot].isv )
+ mask = 0x0008;
+ else
+ mask = 0x0004;
+ if ( kp->adjust!=NULL ) {
+ mask |= mask<<4;
+ mask2 |= mask2<<4;
+ }
+ vf1 |= mask;
+ vf2 |= mask2;
+ }
+ }
+ }
+ if ( vf1==0 && vf2==0 ) vf1=1;
+ bit_cnt = 0;
+ for ( i=0; i<8; ++i ) {
+ if ( vf1&(1<<i) ) ++bit_cnt;
+ if ( vf2&(1<<i) ) ++bit_cnt;
+ }
+
+ chunk_max = chunk_cnt = 0;
+ for ( start_cnt=0; start_cnt<cnt; start_cnt=end_cnt ) {
+ int len = 5*2; /* Subtable header */
+ for ( end_cnt=start_cnt; end_cnt<cnt; ++end_cnt ) {
+ int glyph_len = 2; /* For the glyph's offset */
+ if ( seconds[end_cnt][0].samewas==0xffff || seconds[end_cnt][0].samewas<start_cnt )
+ glyph_len += (bit_cnt*2+2)*seconds[end_cnt][0].tot +
+ seconds[end_cnt][0].devtablen +
+ 2; /* Number of secondary glyphs */
+ if ( glyph_len>65535 && end_cnt==start_cnt ) {
+ LogError(_("Lookup subtable %s contains a glyph %s whose kerning information takes up more than 64k bytes\n"),
+ sub->subtable_name, glyphs[start_cnt]->name );
+ len += glyph_len;
+ } else if ( len+glyph_len>65535 ) {
+ if( start_cnt==0 )
+ LogError(_("Lookup subtable %s had to be split into several subtables\nbecause it was too big.\n"),
+ sub->subtable_name );
+ break;
+ } else
+ len += glyph_len;
+ }
+ if ( start_cnt!=0 || end_cnt!=cnt ) {
+ if ( chunk_cnt>=chunk_max )
+ sub->extra_subtables = realloc(sub->extra_subtables,((chunk_max+=10)+1)*sizeof(uint32));
+ sub->extra_subtables[chunk_cnt++] = ftell(gpos);
+ sub->extra_subtables[chunk_cnt] = -1;
+ }
+
+ start = ftell(gpos);
+ putshort(gpos,1); /* 1 means char pairs (ie. not classes) */
+ coverage_pos = ftell(gpos);
+ putshort(gpos,0); /* offset to coverage table */
+ putshort(gpos,vf1);
+ putshort(gpos,vf2);
+ putshort(gpos,end_cnt-start_cnt);
+ offset_pos = ftell(gpos);
+ for ( i=start_cnt; i<end_cnt; ++i )
+ putshort(gpos,0); /* Fill in later */
+ for ( i=start_cnt; i<end_cnt; ++i ) {
+ if ( seconds[i][0].samewas>= start_cnt && seconds[i][0].samewas!=0xffff ) {
+ /* It's the same as the glyph at samewas, so just copy the */
+ /* offset from there. We don't need to do anything else */
+ int offset;
+ fseek(gpos,offset_pos+(seconds[i][0].samewas-start_cnt)*sizeof(uint16),SEEK_SET);
+ offset = getushort(gpos);
+ fseek(gpos,offset_pos+(i-start_cnt)*sizeof(uint16),SEEK_SET);
+ putshort(gpos,offset);
+ fseek(gpos,0,SEEK_END);
+ continue;
+ }
+ next_dev_tab = ftell(gpos)-start;
+ if ( (vf1&0xf0) || (vf2&0xf0) ) {
+ for ( tot=0 ; tot<seconds[i][0].tot; ++tot ) {
+ if ( (pst=seconds[i][tot].pst)!=NULL ) {
+ if ( pst->u.pair.vr[0].adjust!=NULL ) {
+ dumpgposdevicetable(gpos,&pst->u.pair.vr[0].adjust->xadjust);
+ dumpgposdevicetable(gpos,&pst->u.pair.vr[0].adjust->yadjust);
+ dumpgposdevicetable(gpos,&pst->u.pair.vr[0].adjust->xadv);
+ dumpgposdevicetable(gpos,&pst->u.pair.vr[0].adjust->yadv);
+ }
+ if ( pst->u.pair.vr[1].adjust!=NULL ) {
+ dumpgposdevicetable(gpos,&pst->u.pair.vr[1].adjust->xadjust);
+ dumpgposdevicetable(gpos,&pst->u.pair.vr[1].adjust->yadjust);
+ dumpgposdevicetable(gpos,&pst->u.pair.vr[1].adjust->xadv);
+ dumpgposdevicetable(gpos,&pst->u.pair.vr[1].adjust->yadv);
+ }
+ }
+ if ( (kp=seconds[i][tot].kp)!=NULL && kp->adjust!=NULL )
+ dumpgposdevicetable(gpos,kp->adjust);
+ }
+ }
+ pos = ftell(gpos);
+ fseek(gpos,offset_pos+(i-start_cnt)*sizeof(uint16),SEEK_SET);
+ putshort(gpos,pos-start);
+ fseek(gpos,pos,SEEK_SET);
+
+ putshort(gpos,seconds[i][0].tot);
+ for ( tot=0 ; tot<seconds[i][0].tot; ++tot ) {
+ putshort(gpos,seconds[i][tot].other_gid);
+ if ( (pst=seconds[i][tot].pst)!=NULL ) {
+ if ( vf1&1 ) putshort(gpos,pst->u.pair.vr[0].xoff);
+ if ( vf1&2 ) putshort(gpos,pst->u.pair.vr[0].yoff);
+ if ( vf1&4 ) putshort(gpos,pst->u.pair.vr[0].h_adv_off);
+ if ( vf1&8 ) putshort(gpos,pst->u.pair.vr[0].v_adv_off);
+ next_dev_tab = gposdumpvaldevtab(gpos,pst->u.pair.vr[0].adjust,vf1,
+ next_dev_tab);
+ if ( vf2&1 ) putshort(gpos,pst->u.pair.vr[1].xoff);
+ if ( vf2&2 ) putshort(gpos,pst->u.pair.vr[1].yoff);
+ if ( vf2&4 ) putshort(gpos,pst->u.pair.vr[1].h_adv_off);
+ if ( vf2&8 ) putshort(gpos,pst->u.pair.vr[1].v_adv_off);
+ next_dev_tab = gposdumpvaldevtab(gpos,pst->u.pair.vr[1].adjust,vf2,
+ next_dev_tab);
+ } else if ( (kp=seconds[i][tot].kp)!=NULL ) {
+ int mask=0, mask2=0;
+ if ( seconds[i][tot].isv )
+ mask = 0x8;
+ else
+ mask = 0x4;
+ gposvrmaskeddump(gpos,vf1,mask,kp->off);
+ next_dev_tab = gposmaskeddumpdevtab(gpos,kp->adjust,vf1,mask<<4,
+ next_dev_tab);
+ gposvrmaskeddump(gpos,vf2,mask2,kp->off);
+ next_dev_tab = gposmaskeddumpdevtab(gpos,kp->adjust,vf2,mask2<<4,
+ next_dev_tab);
+ }
+ }
+ }
+ end = ftell(gpos);
+ fseek(gpos,coverage_pos,SEEK_SET);
+ if ( end-start>65535 )
+ IError(_("I miscalculated the size of subtable %s, this means the kerning output is wrong."), sub->subtable_name );
+ putshort(gpos,end-start);
+ fseek(gpos,end,SEEK_SET);
+ gtemp = glyphs[end_cnt]; glyphs[end_cnt] = NULL;
+ dumpcoveragetable(gpos,glyphs+start_cnt);
+ glyphs[end_cnt] = gtemp;
+ }
+ for ( i=0; i<cnt; ++i )
+ free(seconds[i]);
+ free(seconds);
+ free(glyphs);
+}
+
+uint16 *ClassesFromNames(SplineFont *sf,char **classnames,int class_cnt,
+ int numGlyphs, SplineChar ***glyphs, int apple_kc) {
+ uint16 *class;
+ int i;
+ char *pt, *end, ch;
+ SplineChar *sc, **gs=NULL;
+ int offset = (apple_kc && classnames[0]!=NULL);
+
+ class = calloc(numGlyphs,sizeof(uint16));
+ if ( glyphs ) *glyphs = gs = calloc(numGlyphs,sizeof(SplineChar *));
+ for ( i=0; i<class_cnt; ++i ) {
+ if ( i==0 && classnames[0]==NULL )
+ continue;
+ for ( pt = classnames[i]; *pt; pt = end+1 ) {
+ while ( *pt==' ' ) ++pt;
+ if ( *pt=='\0' )
+ break;
+ end = strchr(pt,' ');
+ if ( end==NULL )
+ end = pt+strlen(pt);
+ ch = *end;
+ *end = '\0';
+ sc = SFGetChar(sf,-1,pt);
+ if ( sc!=NULL && sc->ttf_glyph!=-1 ) {
+ class[sc->ttf_glyph] = i+offset;
+ if ( gs!=NULL )
+ gs[sc->ttf_glyph] = sc;
+ }
+ *end = ch;
+ if ( ch=='\0' )
+ break;
+ }
+ }
+return( class );
+}
+
+static SplineChar **GlyphsFromClasses(SplineChar **gs, int numGlyphs) {
+ int i, cnt;
+ SplineChar **glyphs;
+
+ for ( i=cnt=0; i<numGlyphs; ++i )
+ if ( gs[i]!=NULL ) ++cnt;
+ glyphs = malloc((cnt+1)*sizeof(SplineChar *));
+ for ( i=cnt=0; i<numGlyphs; ++i )
+ if ( gs[i]!=NULL )
+ glyphs[cnt++] = gs[i];
+ glyphs[cnt++] = NULL;
+ free(gs);
+return( glyphs );
+}
+
+static SplineChar **GlyphsFromInitialClasses(SplineChar **gs, int numGlyphs, uint16 *classes, uint16 *initial) {
+ int i, j, cnt;
+ SplineChar **glyphs;
+
+ for ( i=cnt=0; i<numGlyphs; ++i ) {
+ for ( j=0; initial[j]!=0xffff; ++j )
+ if ( initial[j]==classes[i])
+ break;
+ if ( initial[j]!=0xffff && gs[i]!=NULL ) ++cnt;
+ }
+ glyphs = malloc((cnt+1)*sizeof(SplineChar *));
+ for ( i=cnt=0; i<numGlyphs; ++i ) {
+ for ( j=0; initial[j]!=0xffff; ++j )
+ if ( initial[j]==classes[i])
+ break;
+ if ( initial[j]!=0xffff && gs[i]!=NULL )
+ glyphs[cnt++] = gs[i];
+ }
+ glyphs[cnt++] = NULL;
+return( glyphs );
+}
+
+static void DumpClass(FILE *gpos,uint16 *class,int numGlyphs) {
+ int ranges, i, cur, first= -1, last=-1, istart;
+
+ for ( i=ranges=0; i<numGlyphs; ) {
+ istart = i;
+ cur = class[i];
+ while ( i<numGlyphs && class[i]==cur )
+ ++i;
+ if ( cur!=0 ) {
+ ++ranges;
+ if ( first==-1 ) first = istart;
+ last = i-1;
+ }
+ }
+ if ( ranges*3+1>last-first+1+2 || first==-1 ) {
+ if ( first==-1 ) first = last = 0;
+ putshort(gpos,1); /* Format 1, list of all posibilities */
+ putshort(gpos,first);
+ putshort(gpos,last-first+1);
+ for ( i=first; i<=last ; ++i )
+ putshort(gpos,class[i]);
+ } else {
+ putshort(gpos,2); /* Format 2, series of ranges */
+ putshort(gpos,ranges);
+ for ( i=0; i<numGlyphs; ) {
+ istart = i;
+ cur = class[i];
+ while ( i<numGlyphs && class[i]==cur )
+ ++i;
+ if ( cur!=0 ) {
+ putshort(gpos,istart);
+ putshort(gpos,i-1);
+ putshort(gpos,cur);
+ }
+ }
+ }
+}
+
+static void dumpgposkernclass(FILE *gpos,SplineFont *sf,
+ struct lookup_subtable *sub, struct alltabs *at) {
+ uint32 begin_off = ftell(gpos), pos;
+ uint16 *class1, *class2;
+ KernClass *kc = sub->kc, *test;
+ SplineChar **glyphs;
+ int i, isv;
+ int anydevtab = false;
+ int next_devtab;
+
+ putshort(gpos,2); /* format 2 of the pair adjustment subtable */
+ putshort(gpos,0); /* offset to coverage table */
+ for ( i=0; i<kc->first_cnt*kc->second_cnt; ++i ) {
+ if ( kc->adjusts[i].corrections!=NULL ) {
+ anydevtab = true;
+ break;
+ }
+ }
+
+ for ( test=sf->vkerns; test!=NULL && test!=kc; test=test->next );
+ isv = test==kc;
+
+ if ( isv ) {
+ /* As far as I know there is no "bottom to top" writing direction */
+ /* Oh. There is. Ogham, Runic */
+ putshort(gpos,anydevtab?0x0088:0x0008); /* Alter YAdvance of first character */
+ putshort(gpos,0x0000); /* leave second char alone */
+ } else {
+ putshort(gpos,anydevtab?0x0044:0x0004); /* Alter XAdvance of first character */
+ putshort(gpos,0x0000); /* leave second char alone */
+ }
+ class1 = ClassesFromNames(sf,kc->firsts,kc->first_cnt,at->maxp.numGlyphs,&glyphs,false);
+ glyphs = GlyphsFromClasses(glyphs,at->maxp.numGlyphs);
+ class2 = ClassesFromNames(sf,kc->seconds,kc->second_cnt,at->maxp.numGlyphs,NULL,false);
+ putshort(gpos,0); /* offset to first glyph classes */
+ putshort(gpos,0); /* offset to second glyph classes */
+ putshort(gpos,kc->first_cnt);
+ putshort(gpos,kc->second_cnt);
+ next_devtab = ftell(gpos)-begin_off + kc->first_cnt*kc->second_cnt*2*sizeof(uint16);
+ for ( i=0; i<kc->first_cnt*kc->second_cnt; ++i ) {
+ putshort(gpos,kc->offsets[i]);
+ if ( anydevtab && kc->adjusts[i].corrections!=NULL ) {
+ putshort(gpos,next_devtab);
+ next_devtab += DevTabLen(&kc->adjusts[i]);
+ } else if ( anydevtab )
+ putshort(gpos,0);
+ }
+ if ( anydevtab ) {
+ for ( i=0; i<kc->first_cnt*kc->second_cnt; ++i ) {
+ if ( kc->adjusts[i].corrections!=NULL )
+ dumpgposdevicetable(gpos,&kc->adjusts[i]);
+ }
+ if ( next_devtab!=ftell(gpos)-begin_off )
+ IError("Device table offsets screwed up in kerning class");
+ }
+ pos = ftell(gpos);
+ fseek(gpos,begin_off+4*sizeof(uint16),SEEK_SET);
+ putshort(gpos,pos-begin_off);
+ fseek(gpos,pos,SEEK_SET);
+ DumpClass(gpos,class1,at->maxp.numGlyphs);
+
+ pos = ftell(gpos);
+ fseek(gpos,begin_off+5*sizeof(uint16),SEEK_SET);
+ putshort(gpos,pos-begin_off);
+ fseek(gpos,pos,SEEK_SET);
+ DumpClass(gpos,class2,at->maxp.numGlyphs);
+
+ pos = ftell(gpos);
+ fseek(gpos,begin_off+sizeof(uint16),SEEK_SET);
+ putshort(gpos,pos-begin_off);
+ fseek(gpos,pos,SEEK_SET);
+ dumpcoveragetable(gpos,glyphs);
+
+ free(glyphs);
+ free(class1);
+ free(class2);
+}
+
+static void dumpanchor(FILE *gpos,AnchorPoint *ap, int is_ttf ) {
+ int base = ftell(gpos);
+
+ if ( ap->xadjust.corrections!=NULL || ap->yadjust.corrections!=NULL )
+ putshort(gpos,3); /* format 3 w/ device tables */
+ else
+ if ( ap->has_ttf_pt && is_ttf )
+ putshort(gpos,2); /* format 2 w/ a matching ttf point index */
+ else
+ putshort(gpos,1); /* Anchor format 1 just location*/
+ putshort(gpos,ap->me.x); /* X coord of attachment */
+ putshort(gpos,ap->me.y); /* Y coord of attachment */
+ if ( ap->xadjust.corrections!=NULL || ap->yadjust.corrections!=NULL ) {
+ putshort(gpos,ap->xadjust.corrections==NULL?0:
+ ftell(gpos)-base+4);
+ putshort(gpos,ap->yadjust.corrections==NULL?0:
+ ftell(gpos)-base+2+DevTabLen(&ap->xadjust));
+ dumpgposdevicetable(gpos,&ap->xadjust);
+ dumpgposdevicetable(gpos,&ap->yadjust);
+ } else
+ if ( ap->has_ttf_pt && is_ttf )
+ putshort(gpos,ap->ttf_pt_index);
+}
+
+static void dumpgposCursiveAttach(FILE *gpos, SplineFont *sf,
+ struct lookup_subtable *sub,struct glyphinfo *gi) {
+ AnchorClass *ac, *testac;
+ SplineChar **entryexit;
+ int cnt, offset,j;
+ AnchorPoint *ap, *entry, *exit;
+ uint32 coverage_offset, start;
+
+ ac = NULL;
+ for ( testac=sf->anchor; testac!=NULL; testac = testac->next ) {
+ if ( testac->subtable == sub ) {
+ if ( ac==NULL )
+ ac = testac;
+ else {
+ ff_post_error(_("Two cursive anchor classes"),_("Two cursive anchor classes in the same subtable, %s"),
+ sub->subtable_name);
+ break;
+ }
+ }
+ }
+ if ( ac==NULL ) {
+ IError( "Missing anchor class for %s", sub->subtable_name );
+return;
+ }
+ entryexit = EntryExitDecompose(sf,ac,gi);
+ if ( entryexit==NULL )
+return;
+
+ for ( cnt=0; entryexit[cnt]!=NULL; ++cnt );
+
+ start = ftell(gpos);
+ putshort(gpos,1); /* format 1 for this subtable */
+ putshort(gpos,0); /* Fill in later, offset to coverage table */
+ putshort(gpos,cnt); /* number of glyphs */
+
+ offset = 6+2*2*cnt;
+ for ( j=0; j<cnt; ++j ) {
+ entry = exit = NULL;
+ for ( ap=entryexit[j]->anchor; ap!=NULL; ap=ap->next ) {
+ if ( ap->anchor==ac && ap->type==at_centry ) entry = ap;
+ if ( ap->anchor==ac && ap->type==at_cexit ) exit = ap;
+ }
+ if ( entry!=NULL ) {
+ putshort(gpos,offset);
+ offset += 6;
+ if ( entry->xadjust.corrections!=NULL || entry->yadjust.corrections!=NULL )
+ offset += 4 + DevTabLen(&entry->xadjust) + DevTabLen(&entry->yadjust);
+ if ( gi->is_ttf && entry->has_ttf_pt )
+ offset += 2;
+ } else
+ putshort(gpos,0);
+ if ( exit!=NULL ) {
+ putshort(gpos,offset);
+ offset += 6;
+ if ( exit->xadjust.corrections!=NULL || exit->yadjust.corrections!=NULL )
+ offset += 4 + DevTabLen(&exit->xadjust) + DevTabLen(&exit->yadjust);
+ else
+ if ( gi->is_ttf && exit->has_ttf_pt )
+ offset += 2;
+ } else
+ putshort(gpos,0);
+ }
+ for ( j=0; j<cnt; ++j ) {
+ entry = exit = NULL;
+ for ( ap=entryexit[j]->anchor; ap!=NULL; ap=ap->next ) {
+ if ( ap->anchor==ac && ap->type==at_centry ) entry = ap;
+ if ( ap->anchor==ac && ap->type==at_cexit ) exit = ap;
+ }
+ if ( entry!=NULL )
+ dumpanchor(gpos,entry,gi->is_ttf);
+ if ( exit!=NULL )
+ dumpanchor(gpos,exit,gi->is_ttf);
+ }
+ coverage_offset = ftell(gpos);
+ dumpcoveragetable(gpos,entryexit);
+ fseek(gpos,start+2,SEEK_SET);
+ putshort(gpos,coverage_offset-start);
+ fseek(gpos,0,SEEK_END);
+
+ free(entryexit);
+}
+
+static int orderglyph(const void *_sc1,const void *_sc2) {
+ SplineChar * const *sc1 = _sc1, * const *sc2 = _sc2;
+
+return( (*sc1)->ttf_glyph - (*sc2)->ttf_glyph );
+}
+
+static SplineChar **allmarkglyphs(SplineChar ***glyphlist, int classcnt) {
+ SplineChar **glyphs;
+ int i, tot, k;
+
+ if ( classcnt==1 )
+return( SFOrderedGlyphs(glyphlist[0]));
+
+ for ( i=tot=0; i<classcnt; ++i ) {
+ for ( k=0; glyphlist[i][k]!=NULL; ++k );
+ tot += k;
+ }
+ glyphs = malloc((tot+1)*sizeof(SplineChar *));
+ for ( i=tot=0; i<classcnt; ++i ) {
+ for ( k=0; glyphlist[i][k]!=NULL; ++k )
+ glyphs[tot++] = glyphlist[i][k];
+ }
+ qsort(glyphs,tot,sizeof(SplineChar *),orderglyph);
+ for ( i=k=0; i<tot; ++i ) {
+ while ( i+1<tot && glyphs[i]==glyphs[i+1]) ++i;
+ glyphs[k++] = glyphs[i];
+ }
+ glyphs[k] = NULL;
+return( glyphs );
+}
+
+static void dumpgposAnchorData(FILE *gpos,AnchorClass *_ac,
+ enum anchor_type at,
+ SplineChar ***marks,SplineChar **base,
+ int classcnt, struct glyphinfo *gi) {
+ AnchorClass *ac=NULL;
+ int j,cnt,k,l, pos, offset, tot, max;
+ uint32 coverage_offset, markarray_offset, subtable_start;
+ AnchorPoint *ap, **aps;
+ SplineChar **markglyphs;
+
+ for ( cnt=0; base[cnt]!=NULL; ++cnt );
+
+ subtable_start = ftell(gpos);
+ putshort(gpos,1); /* format 1 for this subtable */
+ putshort(gpos,0); /* Fill in later, offset to mark coverage table */
+ putshort(gpos,0); /* Fill in later, offset to base coverage table */
+ putshort(gpos,classcnt);
+ putshort(gpos,0); /* Fill in later, offset to mark array */
+ putshort(gpos,12); /* Offset to base array */
+ /* Base array */
+ putshort(gpos,cnt); /* Number of entries in array */
+ if ( at==at_basechar || at==at_basemark ) {
+ offset = 2;
+ for ( l=0; l<3; ++l ) {
+ for ( j=0; j<cnt; ++j ) {
+ for ( k=0, ac=_ac; k<classcnt; ac=ac->next ) if ( ac->matches ) {
+ if ( !ac->has_mark || !ac->has_base )
+ continue;
+ for ( ap=base[j]->anchor; ap!=NULL && (ap->anchor!=ac || ap->type!=at);
+ ap=ap->next );
+ switch ( l ) {
+ case 0:
+ offset += 2;
+ break;
+ case 1:
+ if ( ap==NULL )
+ putshort(gpos,0);
+ else {
+ putshort(gpos,offset);
+ offset += 6;
+ if ( ap->xadjust.corrections!=NULL || ap->yadjust.corrections!=NULL )
+ offset += 4 + DevTabLen(&ap->xadjust) + DevTabLen(&ap->yadjust);
+ else
+ if ( gi->is_ttf && ap->has_ttf_pt )
+ offset += 2;
+ }
+ break;
+ case 2:
+ if ( ap!=NULL )
+ dumpanchor(gpos,ap,gi->is_ttf);
+ break;
+ }
+ ++k;
+ }
+ }
+ }
+ } else {
+ offset = 2+2*cnt;
+ max = 0;
+ for ( j=0; j<cnt; ++j ) {
+ putshort(gpos,offset);
+ pos = tot = 0;
+ for ( ap=base[j]->anchor; ap!=NULL ; ap=ap->next )
+ for ( k=0, ac=_ac; k<classcnt; ac=ac->next ) if ( ac->matches ) {
+ if ( ap->anchor==ac ) {
+ if ( ap->lig_index>pos ) pos = ap->lig_index;
+ ++tot;
+ }
+ ++k;
+ }
+ if ( pos>max ) max = pos;
+ offset += 2+(pos+1)*classcnt*2+tot*6;
+ /* 2 for component count, for each component an offset to an offset to an anchor record */
+ }
+ ++max;
+ int special_ceiling = classcnt*max;
+ aps = malloc((classcnt*max+max)*sizeof(AnchorPoint *));
+ for ( j=0; j<cnt; ++j ) {
+ memset(aps,0,(classcnt*max+max)*sizeof(AnchorPoint *));
+ pos = 0;
+ for ( ap=base[j]->anchor; ap!=NULL ; ap=ap->next )
+ for ( k=0, ac=_ac; k<classcnt; ac=ac->next ) if ( ac->matches ) {
+ if ( ap->anchor==ac ) {
+ if ( ap->lig_index>pos ) pos = ap->lig_index;
+ if (k*max+ap->lig_index > special_ceiling || k*max+ap->lig_index < 0) {
+ fprintf(stderr, "A ligature index is invalid.\n");
+ } else {
+ aps[k*max+ap->lig_index] = ap;
+ }
+ }
+ ++k;
+ }
+ ++pos;
+ putshort(gpos,pos);
+ offset = 2+2*pos*classcnt;
+ for ( l=0; l<pos; ++l ) {
+ for ( k=0; k<classcnt; ++k ) {
+ if ( aps[k*max+l]==NULL )
+ putshort(gpos,0);
+ else {
+ putshort(gpos,offset);
+ offset += 6;
+ if ( aps[k*max+l]->xadjust.corrections!=NULL || aps[k*max+l]->yadjust.corrections!=NULL )
+ offset += 4 + DevTabLen(&aps[k*max+l]->xadjust) +
+ DevTabLen(&aps[k*max+l]->yadjust);
+ else
+ if ( gi->is_ttf && aps[k*max+l]->has_ttf_pt )
+ offset += 2;
+ }
+ }
+ }
+ for ( l=0; l<pos; ++l ) {
+ for ( k=0; k<classcnt; ++k ) {
+ if ( aps[k*max+l]!=NULL ) {
+ dumpanchor(gpos,aps[k*max+l],gi->is_ttf);
+ }
+ }
+ }
+ }
+ free(aps); aps = NULL;
+ }
+ coverage_offset = ftell(gpos);
+ fseek(gpos,subtable_start+4,SEEK_SET);
+ putshort(gpos,coverage_offset-subtable_start);
+ fseek(gpos,0,SEEK_END);
+ dumpcoveragetable(gpos,base);
+
+ /* We tried sharing the mark table, (among all these sub-tables) but */
+ /* that doesn't work because we need to be able to reorder the sub-tables */
+ markglyphs = allmarkglyphs(marks,classcnt);
+ coverage_offset = ftell(gpos);
+ dumpcoveragetable(gpos,markglyphs);
+ markarray_offset = ftell(gpos);
+ for ( cnt=0; markglyphs[cnt]!=NULL; ++cnt );
+ putshort(gpos,cnt);
+ offset = 2+4*cnt;
+ for ( j=0; j<cnt; ++j ) {
+ if ( classcnt==0 ) {
+ putshort(gpos,0); /* Only one class */
+ ap = NULL;
+ } else {
+ for ( k=0, ac=_ac; k<classcnt; ac=ac->next ) {
+ if ( ac->matches ) {
+ for ( ap = markglyphs[j]->anchor; ap!=NULL && (ap->anchor!=ac || ap->type!=at_mark);
+ ap=ap->next );
+ if ( ap!=NULL )
+ break;
+ ++k;
+ }
+ }
+ putshort(gpos,k);
+ }
+ putshort(gpos,offset);
+ offset += 6;
+ if ( ap!=NULL && (ap->xadjust.corrections!=NULL || ap->yadjust.corrections!=NULL ))
+ offset += 4 + DevTabLen(&ap->xadjust) + DevTabLen(&ap->yadjust);
+ else
+ if ( gi->is_ttf && ap->has_ttf_pt )
+ offset += 2;
+ }
+ for ( j=0; j<cnt; ++j ) {
+ for ( k=0, ac=_ac; k<classcnt; ac=ac->next ) {
+ if ( ac->matches ) {
+ for ( ap = markglyphs[j]->anchor; ap!=NULL && (ap->anchor!=ac || ap->type!=at_mark);
+ ap=ap->next );
+ if ( ap!=NULL )
+ break;
+ ++k;
+ }
+ }
+ dumpanchor(gpos,ap,gi->is_ttf);
+ }
+ if ( markglyphs!=marks[0] )
+ free(markglyphs);
+
+ fseek(gpos,subtable_start+2,SEEK_SET); /* mark coverage table offset */
+ putshort(gpos,coverage_offset-subtable_start);
+ fseek(gpos,4,SEEK_CUR);
+ putshort(gpos,markarray_offset-subtable_start);
+
+ fseek(gpos,0,SEEK_END);
+}
+
+static void dumpGSUBsimplesubs(FILE *gsub,SplineFont *sf,struct lookup_subtable *sub) {
+ int cnt, diff, ok = true;
+ int32 coverage_pos, end;
+ SplineChar **glyphs, ***maps;
+
+ glyphs = SFOrderedGlyphsWithPSTinSubtable(sf,sub);
+ maps = generateMapList(glyphs,sub);
+
+ diff = (*maps[0])->ttf_glyph - glyphs[0]->ttf_glyph;
+ for ( cnt=0; glyphs[cnt]!=NULL; ++cnt)
+ if ( diff!= maps[cnt][0]->ttf_glyph-glyphs[cnt]->ttf_glyph ) ok = false;
+
+ if ( ok ) {
+ putshort(gsub,1); /* delta format */
+ coverage_pos = ftell(gsub);
+ putshort(gsub,0); /* offset to coverage table */
+ putshort(gsub,diff);
+ } else {
+ putshort(gsub,2); /* glyph list format */
+ coverage_pos = ftell(gsub);
+ putshort(gsub,0); /* offset to coverage table */
+ putshort(gsub,cnt);
+ for ( cnt = 0; glyphs[cnt]!=NULL; ++cnt )
+ putshort(gsub,(*maps[cnt])->ttf_glyph);
+ }
+ end = ftell(gsub);
+ fseek(gsub,coverage_pos,SEEK_SET);
+ putshort(gsub,end-coverage_pos+2);
+ fseek(gsub,end,SEEK_SET);
+ dumpcoveragetable(gsub,glyphs);
+
+ free(glyphs);
+ GlyphMapFree(maps);
+}
+
+static void dumpGSUBmultiplesubs(FILE *gsub,SplineFont *sf,struct lookup_subtable *sub) {
+ int cnt, offset;
+ int32 coverage_pos, end;
+ int gc;
+ SplineChar **glyphs, ***maps;
+
+ glyphs = SFOrderedGlyphsWithPSTinSubtable(sf,sub);
+ maps = generateMapList(glyphs,sub);
+ for ( cnt=0; glyphs[cnt]!=NULL; ++cnt);
+
+ putshort(gsub,1); /* glyph list format */
+ coverage_pos = ftell(gsub);
+ putshort(gsub,0); /* offset to coverage table */
+ putshort(gsub,cnt);
+ offset = 6+2*cnt;
+ for ( cnt = 0; glyphs[cnt]!=NULL; ++cnt ) {
+ putshort(gsub,offset);
+ if (maps[cnt] == NULL) {
+ fprintf( stderr, "maps[%d] is null; glyphs[%d] is \"%s\"; lookup name is \"%s\".\n" , cnt , cnt , (glyphs[cnt]->name ? glyphs[cnt]->name : ""), sub->subtable_name) ;
+ }
+ for ( gc=0; maps[cnt][gc]!=NULL; ++gc );
+ offset += 2+2*gc;
+ }
+ for ( cnt = 0; glyphs[cnt]!=NULL; ++cnt ) {
+ for ( gc=0; maps[cnt][gc]!=NULL; ++gc );
+ putshort(gsub,gc);
+ for ( gc=0; maps[cnt][gc]!=NULL; ++gc )
+ putshort(gsub,maps[cnt][gc]->ttf_glyph);
+ }
+ end = ftell(gsub);
+ fseek(gsub,coverage_pos,SEEK_SET);
+ putshort(gsub,end-coverage_pos+2);
+ fseek(gsub,end,SEEK_SET);
+ dumpcoveragetable(gsub,glyphs);
+
+ free(glyphs);
+ GlyphMapFree(maps);
+}
+
+static int AllToBeOutput(LigList *lig) {
+ struct splinecharlist *cmp;
+
+ if ( lig->lig->u.lig.lig->ttf_glyph==-1 ||
+ lig->first->ttf_glyph==-1 )
+return( 0 );
+ for ( cmp=lig->components; cmp!=NULL; cmp=cmp->next )
+ if ( cmp->sc->ttf_glyph==-1 )
+return( 0 );
+return( true );
+}
+
+static void dumpGSUBligdata(FILE *gsub,SplineFont *sf,
+ struct lookup_subtable *sub, struct alltabs *at) {
+ int32 coverage_pos, next_val_pos, here, lig_list_start;
+ int cnt, i, pcnt, lcnt, max=100, j;
+ uint16 *offsets=NULL, *ligoffsets=malloc(max*sizeof(uint16));
+ SplineChar **glyphs;
+ LigList *ll;
+ struct splinecharlist *scl;
+
+ glyphs = SFOrderedGlyphsWithPSTinSubtable(sf,sub);
+ cnt=0;
+ if ( glyphs!=NULL ) for ( ; glyphs[cnt]!=NULL; ++cnt );
+
+ putshort(gsub,1); /* only one format for ligatures */
+ coverage_pos = ftell(gsub);
+ putshort(gsub,0); /* offset to coverage table */
+ putshort(gsub,cnt);
+ next_val_pos = ftell(gsub);
+ if ( glyphs!=NULL )
+ offsets = malloc(cnt*sizeof(int16));
+ for ( i=0; i<cnt; ++i )
+ putshort(gsub,0);
+ for ( i=0; i<cnt; ++i ) {
+ offsets[i] = ftell(gsub)-coverage_pos+2;
+ for ( pcnt = 0, ll = glyphs[i]->ligofme; ll!=NULL; ll=ll->next )
+ if ( ll->lig->subtable==sub && AllToBeOutput(ll))
+ ++pcnt;
+ putshort(gsub,pcnt);
+ if ( pcnt>=max ) {
+ max = pcnt+100;
+ ligoffsets = realloc(ligoffsets,max*sizeof(int));
+ }
+ lig_list_start = ftell(gsub);
+ for ( j=0; j<pcnt; ++j )
+ putshort(gsub,0); /* Place holders */
+ for ( pcnt=0, ll = glyphs[i]->ligofme; ll!=NULL; ll=ll->next ) {
+ if ( ll->lig->subtable==sub && AllToBeOutput(ll)) {
+ ligoffsets[pcnt] = ftell(gsub)-lig_list_start+2;
+ putshort(gsub,ll->lig->u.lig.lig->ttf_glyph);
+ for ( lcnt=0, scl=ll->components; scl!=NULL; scl=scl->next ) ++lcnt;
+ putshort(gsub, lcnt+1);
+ if ( lcnt+1>at->os2.maxContext )
+ at->os2.maxContext = lcnt+1;
+ for ( scl=ll->components; scl!=NULL; scl=scl->next )
+ putshort(gsub, scl->sc->ttf_glyph );
+ ++pcnt;
+ }
+ }
+ fseek(gsub,lig_list_start,SEEK_SET);
+ for ( j=0; j<pcnt; ++j )
+ putshort(gsub,ligoffsets[j]);
+ fseek(gsub,0,SEEK_END);
+ }
+ free(ligoffsets);
+ if ( glyphs!=NULL ) {
+ here = ftell(gsub);
+ fseek(gsub,coverage_pos,SEEK_SET);
+ putshort(gsub,here-coverage_pos+2);
+ fseek(gsub,next_val_pos,SEEK_SET);
+ for ( i=0; i<cnt; ++i )
+ putshort(gsub,offsets[i]);
+ fseek(gsub,here,SEEK_SET);
+ dumpcoveragetable(gsub,glyphs);
+ free(glyphs);
+ free(offsets);
+ }
+}
+
+static int ui16cmp(const void *_i1, const void *_i2) {
+ if ( *(const uint16 *) _i1 > *(const uint16 *) _i2 )
+return( 1 );
+ if ( *(const uint16 *) _i1 < *(const uint16 *) _i2 )
+return( -1 );
+
+return( 0 );
+}
+
+static uint16 *FigureInitialClasses(FPST *fpst) {
+ uint16 *initial = malloc((fpst->nccnt+1)*sizeof(uint16));
+ int i, cnt, j;
+
+ initial[fpst->nccnt] = 0xffff;
+ for ( i=cnt=0; i<fpst->rule_cnt; ++i ) {
+ for ( j=0; j<cnt ; ++j )
+ if ( initial[j] == fpst->rules[i].u.class.nclasses[0] )
+ break;
+ if ( j==cnt )
+ initial[cnt++] = fpst->rules[i].u.class.nclasses[0];
+ }
+ qsort(initial,cnt,sizeof(uint16),ui16cmp);
+ initial[cnt] = 0xffff;
+return( initial );
+}
+
+static SplineChar **OrderedInitialGlyphs(SplineFont *sf,FPST *fpst) {
+ SplineChar **glyphs, *sc;
+ int i, j, cnt, ch;
+ char *pt, *names;
+
+ glyphs = malloc((fpst->rule_cnt+1)*sizeof(SplineChar *));
+ for ( i=cnt=0; i<fpst->rule_cnt; ++i ) {
+ names = fpst->rules[i].u.glyph.names;
+ pt = strchr(names,' ');
+ if ( pt==NULL ) pt = names+strlen(names);
+ ch = *pt; *pt = '\0';
+ sc = SFGetChar(sf,-1,names);
+ *pt = ch;
+ for ( j=0; j<cnt; ++j )
+ if ( glyphs[j]==sc )
+ break;
+ if ( j==cnt && sc!=NULL )
+ glyphs[cnt++] = sc;
+ }
+ glyphs[cnt] = NULL;
+ if ( cnt==0 )
+return( glyphs );
+
+ for ( i=0; glyphs[i+1]!=NULL; ++i ) for ( j=i+1; glyphs[j]!=NULL; ++j ) {
+ if ( glyphs[i]->ttf_glyph > glyphs[j]->ttf_glyph ) {
+ sc = glyphs[i];
+ glyphs[i] = glyphs[j];
+ glyphs[j] = sc;
+ }
+ }
+return( glyphs );
+}
+
+static int NamesStartWith(SplineChar *sc,char *names ) {
+ char *pt;
+
+ pt = strchr(names,' ');
+ if ( pt==NULL ) pt = names+strlen(names);
+ if ( pt-names!=strlen(sc->name))
+return( false );
+
+return( strncmp(sc->name,names,pt-names)==0 );
+}
+
+static int CntRulesStartingWith(FPST *fpst,SplineChar *sc) {
+ int i, cnt;
+
+ for ( i=cnt=0; i<fpst->rule_cnt; ++i ) {
+ if ( NamesStartWith(sc,fpst->rules[i].u.glyph.names))
+ ++cnt;
+ }
+return( cnt );
+}
+
+static int CntRulesStartingWithClass(FPST *fpst,uint16 cval) {
+ int i, cnt;
+
+ for ( i=cnt=0; i<fpst->rule_cnt; ++i ) {
+ if ( fpst->rules[i].u.class.nclasses[0]==cval )
+ ++cnt;
+ }
+return( cnt );
+}
+
+static void dumpg___ContextChainGlyphs(FILE *lfile,SplineFont *sf,
+ struct lookup_subtable *sub, struct alltabs *at) {
+ FPST *fpst = sub->fpst;
+ int iscontext = fpst->type==pst_contextpos || fpst->type==pst_contextsub;
+ uint32 base = ftell(lfile);
+ int i,cnt, subcnt, j,k,l, maxcontext,curcontext;
+ SplineChar **glyphs, **subglyphs;
+ int lc;
+
+ glyphs = OrderedInitialGlyphs(sf,fpst);
+ for ( cnt=0; glyphs[cnt]!=NULL; ++cnt );
+
+ putshort(lfile,1); /* Sub format 1 => glyph lists */
+ putshort(lfile,(3+cnt)*sizeof(short)); /* offset to coverage */
+ putshort(lfile,cnt);
+ for ( i=0; i<cnt; ++i )
+ putshort(lfile,0); /* Offset to rule */
+ dumpcoveragetable(lfile,glyphs);
+
+ maxcontext = 0;
+
+ for ( i=0; i<cnt; ++i ) {
+ uint32 pos = ftell(lfile);
+ fseek(lfile,base+(3+i)*sizeof(short),SEEK_SET);
+ putshort(lfile,pos-base);
+ fseek(lfile,pos,SEEK_SET);
+ subcnt = CntRulesStartingWith(fpst,glyphs[i]);
+ putshort(lfile,subcnt);
+ for ( j=0; j<subcnt; ++j )
+ putshort(lfile,0);
+ for ( j=k=0; k<fpst->rule_cnt; ++k ) if ( NamesStartWith(glyphs[i],fpst->rules[k].u.glyph.names )) {
+ uint32 subpos = ftell(lfile);
+ fseek(lfile,pos+(1+j)*sizeof(short),SEEK_SET);
+ putshort(lfile,subpos-pos);
+ fseek(lfile,subpos,SEEK_SET);
+
+ for ( l=lc=0; l<fpst->rules[k].lookup_cnt; ++l )
+ if ( fpst->rules[k].lookups[l].lookup->lookup_index!=-1 )
+ ++lc;
+ if ( iscontext ) {
+ subglyphs = SFGlyphsFromNames(sf,fpst->rules[k].u.glyph.names);
+ for ( l=0; subglyphs[l]!=NULL; ++l );
+ putshort(lfile,l);
+ curcontext = l;
+ putshort(lfile,lc);
+ for ( l=1; subglyphs[l]!=NULL; ++l )
+ putshort(lfile,subglyphs[l]->ttf_glyph);
+ free(subglyphs);
+ } else {
+ subglyphs = SFGlyphsFromNames(sf,fpst->rules[k].u.glyph.back);
+ for ( l=0; subglyphs[l]!=NULL; ++l );
+ putshort(lfile,l);
+ curcontext = l;
+ for ( l=0; subglyphs[l]!=NULL; ++l )
+ putshort(lfile,subglyphs[l]->ttf_glyph);
+ free(subglyphs);
+ subglyphs = SFGlyphsFromNames(sf,fpst->rules[k].u.glyph.names);
+ for ( l=0; subglyphs[l]!=NULL; ++l );
+ putshort(lfile,l);
+ curcontext += l;
+ for ( l=1; subglyphs[l]!=NULL; ++l )
+ putshort(lfile,subglyphs[l]->ttf_glyph);
+ free(subglyphs);
+ subglyphs = SFGlyphsFromNames(sf,fpst->rules[k].u.glyph.fore);
+ for ( l=0; subglyphs[l]!=NULL; ++l );
+ putshort(lfile,l);
+ curcontext += l;
+ for ( l=0; subglyphs[l]!=NULL; ++l )
+ putshort(lfile,subglyphs[l]->ttf_glyph);
+ free(subglyphs);
+ putshort(lfile,lc);
+ }
+ for ( l=0; l<fpst->rules[k].lookup_cnt; ++l )
+ if ( fpst->rules[k].lookups[l].lookup->lookup_index!=-1 ) {
+ putshort(lfile,fpst->rules[k].lookups[l].seq);
+ putshort(lfile,fpst->rules[k].lookups[l].lookup->lookup_index);
+ }
+ ++j;
+ if ( curcontext>maxcontext ) maxcontext = curcontext;
+ }
+ }
+ free(glyphs);
+
+ if ( maxcontext>at->os2.maxContext )
+ at->os2.maxContext = maxcontext;
+}
+
+static void dumpg___ContextChainClass(FILE *lfile,SplineFont *sf,
+ struct lookup_subtable *sub, struct alltabs *at) {
+ FPST *fpst = sub->fpst;
+ int iscontext = fpst->type==pst_contextpos || fpst->type==pst_contextsub;
+ uint32 base = ftell(lfile), rulebase, pos, subpos, npos;
+ uint16 *initialclasses, *iclass, *bclass, *lclass;
+ SplineChar **iglyphs, **bglyphs, **lglyphs, **glyphs;
+ int i,ii,cnt, subcnt, j,k,l , maxcontext,curcontext;
+ int lc;
+
+ putshort(lfile,2); /* Sub format 2 => class */
+ putshort(lfile,0); /* offset to coverage table */
+ if ( iscontext )
+ putshort(lfile,0); /* offset to input classdef */
+ else {
+ putshort(lfile,0); /* offset to backtrack classdef */
+ putshort(lfile,0); /* offset to input classdef */
+ putshort(lfile,0); /* offset to lookahead classdef */
+ }
+ initialclasses = FigureInitialClasses(fpst);
+ putshort(lfile,fpst->nccnt);
+ rulebase = ftell(lfile);
+ for ( cnt=0; cnt<fpst->nccnt; ++cnt )
+ putshort(lfile,0);
+
+ iclass = ClassesFromNames(sf,fpst->nclass,fpst->nccnt,at->maxp.numGlyphs,&iglyphs,false);
+ lglyphs = bglyphs = NULL; bclass = lclass = NULL;
+ if ( !iscontext ) {
+ bclass = ClassesFromNames(sf,fpst->bclass,fpst->bccnt,at->maxp.numGlyphs,&bglyphs,false);
+ lclass = ClassesFromNames(sf,fpst->fclass,fpst->fccnt,at->maxp.numGlyphs,&lglyphs,false);
+ }
+ pos = ftell(lfile);
+ fseek(lfile,base+sizeof(uint16),SEEK_SET);
+ putshort(lfile,pos-base);
+ fseek(lfile,pos,SEEK_SET);
+ glyphs = GlyphsFromInitialClasses(iglyphs,at->maxp.numGlyphs,iclass,initialclasses);
+ dumpcoveragetable(lfile,glyphs);
+ free(glyphs);
+ free(iglyphs); free(bglyphs); free(lglyphs);
+
+ if ( iscontext ) {
+ pos = ftell(lfile);
+ fseek(lfile,base+2*sizeof(uint16),SEEK_SET);
+ putshort(lfile,pos-base);
+ fseek(lfile,pos,SEEK_SET);
+ DumpClass(lfile,iclass,at->maxp.numGlyphs);
+ free(iclass);
+ } else {
+ pos = ftell(lfile);
+ fseek(lfile,base+2*sizeof(uint16),SEEK_SET);
+ putshort(lfile,pos-base);
+ fseek(lfile,pos,SEEK_SET);
+ DumpClass(lfile,bclass,at->maxp.numGlyphs);
+ if ( ClassesMatch(fpst->bccnt,fpst->bclass,fpst->nccnt,fpst->nclass)) {
+ npos = pos;
+ fseek(lfile,base+3*sizeof(uint16),SEEK_SET);
+ putshort(lfile,npos-base);
+ fseek(lfile,0,SEEK_END);
+ } else {
+ npos = ftell(lfile);
+ fseek(lfile,base+3*sizeof(uint16),SEEK_SET);
+ putshort(lfile,npos-base);
+ fseek(lfile,npos,SEEK_SET);
+ DumpClass(lfile,iclass,at->maxp.numGlyphs);
+ }
+ if ( ClassesMatch(fpst->fccnt,fpst->fclass,fpst->bccnt,fpst->bclass)) {
+ fseek(lfile,base+4*sizeof(uint16),SEEK_SET);
+ putshort(lfile,pos-base);
+ fseek(lfile,0,SEEK_END);
+ } else if ( ClassesMatch(fpst->fccnt,fpst->fclass,fpst->nccnt,fpst->nclass)) {
+ fseek(lfile,base+4*sizeof(uint16),SEEK_SET);
+ putshort(lfile,npos-base);
+ fseek(lfile,0,SEEK_END);
+ } else {
+ pos = ftell(lfile);
+ fseek(lfile,base+4*sizeof(uint16),SEEK_SET);
+ putshort(lfile,pos-base);
+ fseek(lfile,pos,SEEK_SET);
+ DumpClass(lfile,lclass,at->maxp.numGlyphs);
+ }
+ free(iclass); free(bclass); free(lclass);
+ }
+
+ ii=0;
+ for ( i=0; i<fpst->nccnt; ++i ) {
+ if ( initialclasses[ii]!=i ) {
+ /* This class isn't an initial one, so leave it's rule pointer NULL */
+ } else {
+ ++ii;
+ pos = ftell(lfile);
+ fseek(lfile,rulebase+i*sizeof(short),SEEK_SET);
+ putshort(lfile,pos-base);
+ fseek(lfile,pos,SEEK_SET);
+ subcnt = CntRulesStartingWithClass(fpst,i);
+ putshort(lfile,subcnt);
+ for ( j=0; j<subcnt; ++j )
+ putshort(lfile,0);
+ for ( j=k=0; k<fpst->rule_cnt; ++k ) if ( i==fpst->rules[k].u.class.nclasses[0] ) {
+ subpos = ftell(lfile);
+ fseek(lfile,pos+(1+j)*sizeof(short),SEEK_SET);
+ putshort(lfile,subpos-pos);
+ fseek(lfile,subpos,SEEK_SET);
+
+ for ( l=lc=0; l<fpst->rules[k].lookup_cnt; ++l )
+ if ( fpst->rules[k].lookups[l].lookup->lookup_index!=-1 )
+ ++lc;
+ if ( iscontext ) {
+ putshort(lfile,fpst->rules[k].u.class.ncnt);
+ putshort(lfile,lc);
+ for ( l=1; l<fpst->rules[k].u.class.ncnt; ++l )
+ putshort(lfile,fpst->rules[k].u.class.nclasses[l]);
+ } else {
+ putshort(lfile,fpst->rules[k].u.class.bcnt);
+ for ( l=0; l<fpst->rules[k].u.class.bcnt; ++l )
+ putshort(lfile,fpst->rules[k].u.class.bclasses[l]);
+ putshort(lfile,fpst->rules[k].u.class.ncnt);
+ for ( l=1; l<fpst->rules[k].u.class.ncnt; ++l )
+ putshort(lfile,fpst->rules[k].u.class.nclasses[l]);
+ putshort(lfile,fpst->rules[k].u.class.fcnt);
+ for ( l=0; l<fpst->rules[k].u.class.fcnt; ++l )
+ putshort(lfile,fpst->rules[k].u.class.fclasses[l]);
+ putshort(lfile,lc);
+ }
+ for ( l=0; l<fpst->rules[k].lookup_cnt; ++l )
+ if ( fpst->rules[k].lookups[l].lookup->lookup_index!=-1 ) {
+ putshort(lfile,fpst->rules[k].lookups[l].seq);
+ putshort(lfile,fpst->rules[k].lookups[l].lookup->lookup_index);
+ }
+ ++j;
+ }
+ }
+ }
+ free(initialclasses);
+
+ maxcontext = 0;
+ for ( i=0; i<fpst->rule_cnt; ++i ) {
+ curcontext = fpst->rules[i].u.class.ncnt+fpst->rules[i].u.class.bcnt+fpst->rules[i].u.class.fcnt;
+ if ( curcontext>maxcontext ) maxcontext = curcontext;
+ }
+ if ( maxcontext>at->os2.maxContext )
+ at->os2.maxContext = maxcontext;
+}
+
+static void dumpg___ContextChainCoverage(FILE *lfile,SplineFont *sf,
+ struct lookup_subtable *sub, struct alltabs *at) {
+ FPST *fpst = sub->fpst;
+ int iscontext = fpst->type==pst_contextpos || fpst->type==pst_contextsub;
+ uint32 base = ftell(lfile), ibase, lbase, bbase;
+ int i, l;
+ SplineChar **glyphs;
+ int curcontext;
+ int lc;
+
+ if ( fpst->rule_cnt!=1 )
+ IError("Bad rule cnt in coverage context lookup");
+ if ( fpst->format==pst_reversecoverage && fpst->rules[0].u.rcoverage.always1!=1 )
+ IError("Bad input count in reverse coverage lookup" );
+
+ putshort(lfile,3); /* Sub format 3 => coverage */
+ for ( l=lc=0; l<fpst->rules[0].lookup_cnt; ++l )
+ if ( fpst->rules[0].lookups[l].lookup->lookup_index!=-1 )
+ ++lc;
+ if ( iscontext ) {
+ putshort(lfile,fpst->rules[0].u.coverage.ncnt);
+ putshort(lfile,lc);
+ for ( i=0; i<fpst->rules[0].u.coverage.ncnt; ++i )
+ putshort(lfile,0);
+ for ( i=0; i<fpst->rules[0].lookup_cnt; ++i )
+ if ( fpst->rules[0].lookups[i].lookup->lookup_index!=-1 ) {
+ putshort(lfile,fpst->rules[0].lookups[i].seq);
+ putshort(lfile,fpst->rules[0].lookups[i].lookup->lookup_index);
+ }
+ for ( i=0; i<fpst->rules[0].u.coverage.ncnt; ++i ) {
+ uint32 pos = ftell(lfile);
+ fseek(lfile,base+6+2*i,SEEK_SET);
+ putshort(lfile,pos-base);
+ fseek(lfile,pos,SEEK_SET);
+ glyphs = OrderedGlyphsFromNames(sf,fpst->rules[0].u.coverage.ncovers[i]);
+ dumpcoveragetable(lfile,glyphs);
+ free(glyphs);
+ }
+ } else {
+ if ( fpst->format==pst_reversecoverage ) {
+ ibase = ftell(lfile);
+ putshort(lfile,0);
+ }
+ putshort(lfile,fpst->rules[0].u.coverage.bcnt);
+ bbase = ftell(lfile);
+ for ( i=0; i<fpst->rules[0].u.coverage.bcnt; ++i )
+ putshort(lfile,0);
+ if ( fpst->format==pst_coverage ) {
+ putshort(lfile,fpst->rules[0].u.coverage.ncnt);
+ ibase = ftell(lfile);
+ for ( i=0; i<fpst->rules[0].u.coverage.ncnt; ++i )
+ putshort(lfile,0);
+ }
+ putshort(lfile,fpst->rules[0].u.coverage.fcnt);
+ lbase = ftell(lfile);
+ for ( i=0; i<fpst->rules[0].u.coverage.fcnt; ++i )
+ putshort(lfile,0);
+ if ( fpst->format==pst_coverage ) {
+ putshort(lfile,lc);
+ for ( i=0; i<fpst->rules[0].lookup_cnt; ++i )
+ if ( fpst->rules[0].lookups[i].lookup->lookup_index!=-1 ) {
+ putshort(lfile,fpst->rules[0].lookups[i].seq);
+ putshort(lfile,fpst->rules[0].lookups[i].lookup->lookup_index);
+ }
+ } else { /* reverse coverage */
+ glyphs = SFGlyphsFromNames(sf,fpst->rules[0].u.rcoverage.replacements);
+ for ( i=0; glyphs[i]!=0; ++i );
+ putshort(lfile,i);
+ for ( i=0; glyphs[i]!=0; ++i )
+ putshort(lfile,glyphs[i]->ttf_glyph);
+ }
+ for ( i=0; i<fpst->rules[0].u.coverage.ncnt; ++i ) {
+ uint32 pos = ftell(lfile);
+ fseek(lfile,ibase+2*i,SEEK_SET);
+ putshort(lfile,pos-base);
+ fseek(lfile,pos,SEEK_SET);
+ glyphs = OrderedGlyphsFromNames(sf,fpst->rules[0].u.coverage.ncovers[i]);
+ dumpcoveragetable(lfile,glyphs);
+ free(glyphs);
+ }
+ for ( i=0; i<fpst->rules[0].u.coverage.bcnt; ++i ) {
+ uint32 pos = ftell(lfile);
+ fseek(lfile,bbase+2*i,SEEK_SET);
+ putshort(lfile,pos-base);
+ fseek(lfile,pos,SEEK_SET);
+ glyphs = OrderedGlyphsFromNames(sf,fpst->rules[0].u.coverage.bcovers[i]);
+ dumpcoveragetable(lfile,glyphs);
+ free(glyphs);
+ }
+ for ( i=0; i<fpst->rules[0].u.coverage.fcnt; ++i ) {
+ uint32 pos = ftell(lfile);
+ fseek(lfile,lbase+2*i,SEEK_SET);
+ putshort(lfile,pos-base);
+ fseek(lfile,pos,SEEK_SET);
+ glyphs = OrderedGlyphsFromNames(sf,fpst->rules[0].u.coverage.fcovers[i]);
+ dumpcoveragetable(lfile,glyphs);
+ free(glyphs);
+ }
+ }
+
+ curcontext = fpst->rules[0].u.coverage.ncnt+fpst->rules[0].u.coverage.bcnt+fpst->rules[0].u.coverage.fcnt;
+ if ( curcontext>at->os2.maxContext )
+ at->os2.maxContext = curcontext;
+}
+
+static void dumpg___ContextChain(FILE *lfile,SplineFont *sf,
+ struct lookup_subtable *sub, struct alltabs *at) {
+ FPST *fpst = sub->fpst;
+
+ switch ( fpst->format ) {
+ case pst_glyphs:
+ dumpg___ContextChainGlyphs(lfile,sf,sub,at);
+ break;
+ case pst_class:
+ dumpg___ContextChainClass(lfile,sf,sub,at);
+ break;
+ case pst_coverage:
+ case pst_reversecoverage:
+ dumpg___ContextChainCoverage(lfile,sf,sub,at);
+ break;
+ }
+
+ fseek(lfile,0,SEEK_END);
+
+}
+
+static void AnchorsAway(FILE *lfile,SplineFont *sf,
+ struct lookup_subtable *sub, struct glyphinfo *gi ) {
+ SplineChar **base, **lig, **mkmk;
+ AnchorClass *ac, *acfirst;
+ SplineChar ***marks;
+ int *subcnts;
+ int cmax, classcnt;
+ int i;
+
+ marks = malloc((cmax=20)*sizeof(SplineChar **));
+ subcnts = malloc(cmax*sizeof(int));
+
+ classcnt = 0;
+ acfirst = NULL;
+ for ( ac=sf->anchor; ac!=NULL; ac = ac->next ) {
+ ac->matches = false;
+ if ( ac->subtable==sub && !ac->processed ) {
+ if ( acfirst == NULL )
+ acfirst = ac;
+ if ( ac->type==act_curs )
+ continue;
+ else if ( ac->has_mark && ac->has_base ) {
+ ac->matches = ac->processed = true;
+ ++classcnt;
+ }
+ }
+ }
+ if ( classcnt>cmax ) {
+ marks = realloc(marks,(cmax=classcnt+10)*sizeof(SplineChar **));
+ subcnts = realloc(subcnts,cmax*sizeof(int));
+ }
+ AnchorClassDecompose(sf,acfirst,classcnt,subcnts,marks,&base,&lig,&mkmk,gi);
+ switch ( sub->lookup->lookup_type ) {
+ case gpos_mark2base:
+ if ( marks[0]!=NULL && base!=NULL )
+ dumpgposAnchorData(lfile,acfirst,at_basechar,marks,base,classcnt,gi);
+ break;
+ case gpos_mark2ligature:
+ if ( marks[0]!=NULL && lig!=NULL )
+ dumpgposAnchorData(lfile,acfirst,at_baselig,marks,lig,classcnt,gi);
+ break;
+ case gpos_mark2mark:
+ if ( marks[0]!=NULL && mkmk!=NULL )
+ dumpgposAnchorData(lfile,acfirst,at_basemark,marks,mkmk,classcnt,gi);
+ break;
+ default:;
+ }
+ for ( i=0; i<classcnt; ++i )
+ free(marks[i]);
+ free(base);
+ free(lig);
+ free(mkmk);
+ free(marks);
+ free(subcnts);
+}
+
+static int lookup_size_cmp(const void *_l1, const void *_l2) {
+ const OTLookup *l1 = *(OTLookup **) _l1, *l2 = *(OTLookup **) _l2;
+return( l1->lookup_length-l2->lookup_length );
+}
+
+static int FPSTRefersToOTL(FPST *fpst,OTLookup *otl) {
+ int i, j;
+
+ if ( fpst==NULL || fpst->type == pst_reversesub )
+return( false );
+ for ( i=0; i<fpst->rule_cnt; ++i ) {
+ for ( j=0; j< fpst->rules[i].lookup_cnt; ++j )
+ if ( fpst->rules[i].lookups[j].lookup == otl )
+return( true );
+ }
+return( false );
+}
+
+static int OnlyMac(OTLookup *otl, OTLookup *all) {
+ FeatureScriptLangList *features = otl->features;
+ int anymac = 0;
+ struct lookup_subtable *sub;
+
+ switch ( otl->lookup_type ) {
+ /* These two lookup types are mac only */
+ case kern_statemachine: case morx_indic: case morx_context: case morx_insert:
+ return( true );
+ /* These lookup types are OpenType only */
+ case gsub_multiple: case gsub_alternate: case gsub_context:
+ case gsub_contextchain: case gsub_reversecchain:
+ case gpos_single: case gpos_cursive: case gpos_mark2base:
+ case gpos_mark2ligature: case gpos_mark2mark:
+ case gpos_context: case gpos_contextchain:
+ return( false );
+ /* These two can be expressed in both, and might be either */
+ case gpos_pair: case gsub_single: case gsub_ligature:
+ for ( features = otl->features; features!=NULL; features = features->next ) {
+ if ( !features->ismac )
+ return( false );
+ else
+ anymac = true;
+ }
+ /* Either it has no features at all (nested), or all its features */
+ /* are mac feature settings. Even if all are mac feature settings it */
+ /* might still be used as under control of a contextual feature */
+ /* so in both cases check for nested */
+ while ( all!=NULL ) {
+ if ( all!=otl && !all->unused &&
+ (all->lookup_type==gpos_context ||
+ all->lookup_type==gpos_contextchain ||
+ all->lookup_type==gsub_context ||
+ all->lookup_type==gsub_contextchain /*||
+ all->lookup_type==gsub_reversecchain*/ )) {
+ for ( sub=all->subtables; sub!=NULL; sub=sub->next ) if ( !sub->unused && sub->fpst!=NULL ) {
+ if ( FPSTRefersToOTL(sub->fpst,otl) )
+ return( false );
+ }
+ }
+ all = all->next;
+ }
+ if ( anymac )
+ return( true );
+ /* As far as I can tell, this lookup isn't used at all */
+ /* Let's output it anyway, just in case we ever support some other */
+ /* table that uses GPOS/GSUB lookups (I think JUST) */
+ return( false );
+ default:;
+ }
+ /* Should never get here, but gcc probably thinks we might */
+return( true );
+}
+
+static void otf_dumpALookup(FILE *lfile, OTLookup *otl, SplineFont *sf,
+ struct alltabs *at) {
+ struct lookup_subtable *sub;
+ int lookup_sub_table_contains_no_data_count = 0;
+ int lookup_sub_table_is_too_big_count = 0;
+
+ otl->lookup_offset = ftell(lfile);
+ for ( sub = otl->subtables; sub!=NULL; sub=sub->next ) {
+ sub->extra_subtables = NULL;
+ if ( sub->unused )
+ sub->subtable_offset = -1;
+ else {
+ sub->subtable_offset = ftell(lfile);
+ switch ( otl->lookup_type ) {
+ /* GPOS lookup types */
+ case gpos_single:
+ dumpGPOSsimplepos(lfile,sf,sub);
+ break;
+
+ case gpos_pair:
+ if ( at->os2.maxContext<2 )
+ at->os2.maxContext = 2;
+ if ( sub->kc!=NULL )
+ dumpgposkernclass(lfile,sf,sub,at);
+ else
+ dumpGPOSpairpos(lfile,sf,sub);
+ break;
+
+ case gpos_cursive:
+ dumpgposCursiveAttach(lfile,sf,sub,&at->gi);
+ break;
+
+ case gpos_mark2base:
+ case gpos_mark2ligature:
+ case gpos_mark2mark:
+ AnchorsAway(lfile,sf,sub,&at->gi);
+ break;
+
+ case gpos_contextchain:
+ case gpos_context:
+ dumpg___ContextChain(lfile,sf,sub,at);
+ break;
+
+ /* GSUB lookup types */
+ case gsub_single:
+ dumpGSUBsimplesubs(lfile,sf,sub);
+ break;
+
+ case gsub_multiple:
+ case gsub_alternate:
+ dumpGSUBmultiplesubs(lfile,sf,sub);
+ break;
+
+ case gsub_ligature:
+ dumpGSUBligdata(lfile,sf,sub,at);
+ break;
+
+ case gsub_contextchain:
+ case gsub_context:
+ case gsub_reversecchain:
+ dumpg___ContextChain(lfile,sf,sub,at);
+ break;
+ default:;
+ }
+ if ( ftell(lfile)-sub->subtable_offset==0 ) {
+ if ( lookup_sub_table_contains_no_data_count < 32 ) {
+ IError( "Lookup sub table, %s in %s, contains no data.\n",
+ sub->subtable_name, sub->lookup->lookup_name );
+ lookup_sub_table_contains_no_data_count ++;
+ }
+ sub->unused = true;
+ sub->subtable_offset = -1;
+ } else if ( sub->extra_subtables==NULL &&
+ ftell(lfile)-sub->subtable_offset>65535 )
+ if ( lookup_sub_table_is_too_big_count < 32 ) {
+ IError( "Lookup sub table, %s in %s, is too big. Will not be useable.\n",
+ sub->subtable_name, sub->lookup->lookup_name );
+ lookup_sub_table_is_too_big_count ++;
+ }
+ }
+ }
+ otl->lookup_length = ftell(lfile)-otl->lookup_offset;
+}
+
+static FILE *G___figureLookups(SplineFont *sf,int is_gpos,
+ struct alltabs *at) {
+ OTLookup *otl;
+ struct lookup_subtable *sub;
+ int index, i,j;
+ FILE *final;
+ FILE *lfile = tmpfile2();
+ OTLookup **sizeordered;
+ OTLookup *all = is_gpos ? sf->gpos_lookups : sf->gsub_lookups;
+ char *buffer;
+ int len;
+
+ index = 0;
+ for ( otl=all; otl!=NULL; otl=otl->next ) {
+ if ( otl->unused || OnlyMac(otl,all) || otl->only_jstf || otl->temporary_kern )
+ otl->lookup_index = -1;
+ else
+ otl->lookup_index = index++;
+ }
+ for ( otl=all; otl!=NULL; otl=otl->next ) {
+ if ( otl->lookup_index!=-1 ) {
+ otf_dumpALookup(lfile, otl, sf, at );
+ }
+ }
+ if ( is_gpos )
+ AnchorGuessContext(sf,at);
+
+ /* We don't need to reorder short files */
+ if ( ftell(lfile)<65536 )
+return( lfile );
+
+ /* Order the lookups so that the smallest ones come first */
+ /* thus we are less likely to need extension tables */
+ /* I think it's better to order the entire lookup rather than ordering the*/
+ /* subtables -- since the extension subtable would be required for all */
+ /* subtables in the lookup, so might as well keep them all together */
+ sizeordered = malloc(index*sizeof(OTLookup *));
+ for ( otl=is_gpos ? sf->gpos_lookups : sf->gsub_lookups; otl!=NULL; otl=otl->next )
+ if ( otl->lookup_index!=-1 )
+ sizeordered[ otl->lookup_index ] = otl;
+ qsort(sizeordered,index,sizeof(OTLookup *),lookup_size_cmp);
+
+ final = tmpfile2();
+ buffer = malloc(32768);
+ for ( i=0; i<index; ++i ) {
+ uint32 diff;
+ otl = sizeordered[i];
+ fseek(lfile,otl->lookup_offset,SEEK_SET);
+ diff = ftell(final) - otl->lookup_offset;
+ otl->lookup_offset = ftell(final);
+ len = otl->lookup_length;
+ while ( len>=32768 ) {
+ int done = fread(buffer,1,32768,lfile);
+ if ( done==0 ) /* fread returns 0 on error, not EOF */
+ break;
+ fwrite(buffer,1,done,final);
+ len -= done;
+ }
+ if ( len>0 && len<=32768 ) {
+ int done = fread(buffer,1,len,lfile);
+ if ( done==0 )
+ break;
+ fwrite(buffer,1,done,final);
+ }
+ for ( sub = otl->subtables; sub!=NULL; sub=sub->next ) {
+ if ( !sub->unused ) {
+ sub->subtable_offset += diff;
+ if ( sub->extra_subtables!=NULL ) {
+ for ( j=0; sub->extra_subtables[j]!=-1; ++j )
+ sub->extra_subtables[j] += diff;
+ }
+ }
+ }
+ }
+ free(buffer);
+ free(sizeordered);
+ fclose(lfile);
+return( final );
+}
+
+struct feat_lookups {
+ uint32 tag;
+ int lcnt;
+ OTLookup **lookups;
+ int feature_id; /* Initially consecutive, but may be rearranged by sorting */
+ uint32 name_param_ptr;
+};
+
+struct langsys {
+ uint32 lang;
+ int fc;
+ int *feature_id;
+ int same_as;
+ int32 offset;
+};
+
+struct scriptset {
+ uint32 script;
+ int lc;
+ struct langsys *langsys;
+};
+
+struct ginfo {
+ int fmax, fcnt;
+ struct feat_lookups *feat_lookups;
+ int sc;
+ struct scriptset *scripts;
+};
+
+static int FindOrMakeNewFeatureLookup(struct ginfo *ginfo,OTLookup **lookups,
+ uint32 tag) {
+ int i, j;
+
+ for ( i=0; i<ginfo->fcnt; ++i ) {
+ if ( ginfo->feat_lookups[i].tag!= tag )
+ continue;
+ if ( lookups==NULL && ginfo->feat_lookups[i].lookups==NULL ) /* 'size' feature */
+return( i );
+ if ( lookups==NULL || ginfo->feat_lookups[i].lookups==NULL )
+ continue;
+ for ( j=0; lookups[j]!=NULL && ginfo->feat_lookups[i].lookups[j]!=NULL; ++j )
+ if ( ginfo->feat_lookups[i].lookups[j]!=lookups[j] )
+ break;
+ if ( ginfo->feat_lookups[i].lookups[j]==lookups[j] ) {
+ free(lookups);
+return( i );
+ }
+ }
+ if ( ginfo->fcnt>=ginfo->fmax )
+ ginfo->feat_lookups = realloc(ginfo->feat_lookups,(ginfo->fmax+=20)*sizeof(struct feat_lookups));
+ ginfo->feat_lookups[i].feature_id = i;
+ ginfo->feat_lookups[i].tag = tag;
+ ginfo->feat_lookups[i].lookups = lookups;
+ j=0;
+ if ( lookups!=NULL ) for ( ; lookups[j]!=NULL; ++j );
+ ginfo->feat_lookups[i].lcnt = j;
+ ++ginfo->fcnt;
+return( i );
+}
+
+static int feat_alphabetize(const void *_fl1, const void *_fl2) {
+ const struct feat_lookups *fl1 = _fl1, *fl2 = _fl2;
+
+ if ( fl1->tag<fl2->tag )
+return( -1 );
+ if ( fl1->tag>fl2->tag )
+return( 1 );
+
+return( 0 );
+}
+
+static int numeric_order(const void *_i1, const void *_i2) {
+ int i1 = *(const int *) _i1, i2 = *(const int *) _i2;
+
+ if ( i1<i2 )
+return( -1 );
+ if ( i1>i2 )
+return( 1 );
+
+return( 0 );
+}
+
+static int LangSysMatch(struct scriptset *s,int ils1, int ils2 ) {
+ struct langsys *ls1 = &s->langsys[ils1], *ls2 = &s->langsys[ils2];
+ int i;
+
+ if ( ls1->fc!=ls2->fc )
+return( false );
+ for ( i=0; i<ls1->fc; ++i )
+ if ( ls1->feature_id[i]!=ls2->feature_id[i] )
+return( false );
+
+return( true );
+}
+
+static void FindFeatures(SplineFont *sf,int is_gpos,struct ginfo *ginfo) {
+ uint32 *scripts, *langs, *features;
+ OTLookup **lookups;
+ int sc, lc, fc, j;
+
+ memset(ginfo,0,sizeof(struct ginfo));
+
+ scripts = SFScriptsInLookups(sf,is_gpos);
+ if ( scripts==NULL ) /* All lookups unused */
+return;
+ for ( sc=0; scripts[sc]!=0; ++sc );
+ ginfo->scripts = malloc(sc*sizeof(struct scriptset));
+ ginfo->sc = sc;
+ for ( sc=0; scripts[sc]!=0; ++sc ) {
+ langs = SFLangsInScript(sf,is_gpos,scripts[sc]);
+ for ( lc=0; langs[lc]!=0; ++lc );
+ ginfo->scripts[sc].script = scripts[sc];
+ ginfo->scripts[sc].lc = lc;
+ ginfo->scripts[sc].langsys = malloc(lc*sizeof(struct langsys));
+ for ( lc=0; langs[lc]!=0; ++lc ) {
+ features = SFFeaturesInScriptLang(sf,is_gpos,scripts[sc],langs[lc]);
+ for ( fc=0; features[fc]!=0; ++fc );
+ ginfo->scripts[sc].langsys[lc].lang = langs[lc];
+ ginfo->scripts[sc].langsys[lc].fc = fc;
+ ginfo->scripts[sc].langsys[lc].feature_id = malloc(fc*sizeof(int));
+ ginfo->scripts[sc].langsys[lc].same_as = -1;
+ for ( fc=0; features[fc]!=0; ++fc ) {
+ lookups = SFLookupsInScriptLangFeature(sf,is_gpos,scripts[sc],langs[lc],features[fc]);
+ ginfo->scripts[sc].langsys[lc].feature_id[fc] =
+ FindOrMakeNewFeatureLookup(ginfo,lookups,features[fc]);
+ /* lookups is freed or used by FindOrMakeNewFeatureLookup */
+ }
+ free(features);
+ }
+ free(langs);
+ }
+ free(scripts);
+
+ qsort(ginfo->feat_lookups,ginfo->fcnt,sizeof(struct feat_lookups),feat_alphabetize);
+
+ /* Now we've disordered the features. Find each feature_id and turn it back*/
+ /* into a feature number */
+ for ( sc=0; sc<ginfo->sc; ++sc ) {
+ for ( lc=0; lc<ginfo->scripts[sc].lc; ++lc ) {
+ int fcmax = ginfo->scripts[sc].langsys[lc].fc;
+ int *feature_id = ginfo->scripts[sc].langsys[lc].feature_id;
+ for ( fc=0; fc<fcmax; ++fc ) {
+ int id = feature_id[fc];
+ for ( j=0; j<ginfo->fcnt; ++j )
+ if ( id==ginfo->feat_lookups[j].feature_id )
+ break;
+ feature_id[fc] = j;
+ }
+ qsort(feature_id,fcmax,sizeof(int),numeric_order);
+ }
+ /* See if there are langsys tables which use exactly the same features*/
+ /* They can use the same entry in the file. This optimization seems */
+ /* to be required for Japanese vertical writing to work in Uniscribe.*/
+ for ( lc=0; lc<ginfo->scripts[sc].lc; ++lc ) {
+ for ( j=0; j<lc; ++j )
+ if ( LangSysMatch(&ginfo->scripts[sc],j,lc) ) {
+ ginfo->scripts[sc].langsys[lc].same_as = j;
+ break;
+ }
+ }
+ }
+}
+
+
+static void dump_script_table(FILE *g___,struct scriptset *ss,struct ginfo *ginfo) {
+ int i, lcnt, dflt_lang = -1;
+ uint32 base;
+ int j, req_index;
+ uint32 offset;
+
+ /* Count the languages, and find default */
+ for ( lcnt=0; lcnt<ss->lc; ++lcnt )
+ if ( ss->langsys[lcnt].lang==DEFAULT_LANG )
+ dflt_lang = lcnt;
+ if ( dflt_lang != -1 )
+ --lcnt;
+
+ base = ftell(g___);
+ putshort(g___, 0 ); /* fill in later, Default Lang Sys */
+ putshort(g___,lcnt);
+ for ( i=0; i<ss->lc; ++i ) if ( i!=dflt_lang ) {
+ putlong(g___,ss->langsys[i].lang); /* Language tag */
+ putshort(g___,0); /* Fill in later, offset to langsys */
+ }
+
+ for ( lcnt=0; lcnt<ss->lc; ++lcnt ) {
+ if ( ss->langsys[lcnt].same_as!=-1 )
+ offset = ss->langsys[ ss->langsys[lcnt].same_as ].offset;
+ else {
+ offset = ftell(g___);
+ ss->langsys[lcnt].offset = offset;
+ }
+ fseek(g___,lcnt==dflt_lang ? base :
+ lcnt<dflt_lang || dflt_lang==-1 ? base + 4 + lcnt*6 +4 :
+ base + 4 + (lcnt-1)*6 +4 ,
+ SEEK_SET );
+ putshort(g___,offset-base);
+ fseek(g___,0,SEEK_END);
+ if ( ss->langsys[lcnt].same_as==-1 ) {
+ req_index = -1;
+ for ( j=0; j<ss->langsys[lcnt].fc; ++j ) {
+ if ( ginfo->feat_lookups[ ss->langsys[lcnt].feature_id[j] ].tag == REQUIRED_FEATURE ) {
+ req_index = ss->langsys[lcnt].feature_id[j];
+ break;
+ }
+ }
+ putshort(g___,0); /* LookupOrder, always NULL */
+ putshort(g___,req_index); /* index of required feature, if any */
+ putshort(g___,ss->langsys[lcnt].fc - (req_index!=-1));
+ /* count of non-required features */
+ for ( j=0; j<ss->langsys[lcnt].fc; ++j ) if (ss->langsys[lcnt].feature_id[j]!=req_index )
+ putshort(g___,ss->langsys[lcnt].feature_id[j]);
+ }
+ }
+}
+
+static FILE *g___FigureExtensionSubTables(OTLookup *all,int startoffset,int is_gpos) {
+ OTLookup *otf;
+ struct lookup_subtable *sub;
+ int len, len2, gotmore;
+ FILE *efile;
+ int i, offset, cnt;
+ int any= false;
+
+ if ( all==NULL )
+return( NULL );
+ gotmore = true; cnt=len=0;
+ while ( gotmore ) {
+ gotmore = false;
+ offset = startoffset + 8*cnt;
+ for ( otf=all; otf!=NULL; otf=otf->next ) if ( otf->lookup_index!=-1 ) {
+ if ( otf->needs_extension )
+ continue;
+ for ( sub = otf->subtables; sub!=NULL; sub=sub->next ) {
+ if ( sub->subtable_offset==-1 )
+ continue;
+ if ( sub->extra_subtables!=NULL ) {
+ for ( i=0; sub->extra_subtables[i]!=-1; ++i ) {
+ if ( sub->extra_subtables[i]+offset>65535 )
+ break;
+ }
+ if ( sub->extra_subtables[i]!=-1 )
+ break;
+ } else if ( sub->subtable_offset+offset>65535 )
+ break;
+ }
+ if ( sub!=NULL ) {
+ if ( !any ) {
+ ff_post_notice(_("Lookup potentially too big"),
+ _("Lookup %s has an\noffset bigger than 65535 bytes. This means\nFontForge must use an extension lookup to output it.\nNot all applications support extension lookups."),
+ otf->lookup_name );
+ any = true;
+ }
+ otf->needs_extension = true;
+ gotmore = true;
+ len += 8*otf->subcnt;
+ ++cnt;
+ }
+ offset -= 6+2*otf->subcnt;
+ }
+ }
+
+ if ( cnt==0 ) /* No offset overflows */
+return( NULL );
+
+ /* Now we've worked out which lookups need extension tables and marked them*/
+ /* Generate the extension tables, and update the offsets to reflect the size */
+ /* of the extensions */
+ efile = tmpfile2();
+
+ len2 = 0;
+ for ( otf=all; otf!=NULL; otf=otf->next ) if ( otf->lookup_index!=-1 ) {
+ for ( sub = otf->subtables; sub!=NULL; sub=sub->next ) {
+ if ( sub->subtable_offset==-1 )
+ continue;
+ if ( sub->extra_subtables!=NULL ) {
+ for ( i=0; sub->extra_subtables[i]!=-1; ++i ) {
+ sub->extra_subtables[i] += len;
+ if ( otf->needs_extension ) {
+ int off = ftell(efile);
+ putshort(efile,1); /* exten subtable format (there's only one) */
+ putshort(efile,otf->lookup_type&0xff);
+ putlong(efile,sub->extra_subtables[i]-len2);
+ sub->extra_subtables[i] = off;
+ len2+=8;
+ }
+ }
+ } else {
+ sub->subtable_offset += len;
+ if ( otf->needs_extension ) {
+ int off = ftell(efile);
+ putshort(efile,1); /* exten subtable format (there's only one) */
+ putshort(efile,otf->lookup_type&0xff);
+ putlong(efile,sub->subtable_offset-len2);
+ sub->subtable_offset = off;
+ len2+=8;
+ }
+ }
+ }
+ }
+
+return( efile );
+}
+
+struct otffeatname *findotffeatname(uint32 tag,SplineFont *sf) {
+ struct otffeatname *fn;
+
+ for ( fn=sf->feat_names; fn!=NULL && fn->tag!=tag; fn=fn->next );
+return( fn );
+}
+
+static FILE *dumpg___info(struct alltabs *at, SplineFont *sf,int is_gpos) {
+ /* Dump out either a gpos or a gsub table. gpos handles kerns, gsub ligs */
+ /* we assume that SFFindUnusedLookups has been called */
+ FILE *lfile, *g___, *efile;
+ uint32 lookup_list_table_start, feature_list_table_start, here, scripts_start_offset;
+ struct ginfo ginfo;
+ int32 size_params_loc, size_params_ptr;
+ int i,j, cnt, scnt, offset;
+ OTLookup *otf, *all;
+ struct lookup_subtable *sub;
+ char *buf;
+ struct otffeatname *fn;
+
+ for ( fn=sf->feat_names; fn!=NULL; fn=fn->next )
+ fn->nid = 0;
+
+ FindFeatures(sf,is_gpos,&ginfo);
+ if ( ginfo.sc==0 )
+return( NULL );
+ lfile = G___figureLookups(sf,is_gpos,at);
+
+ if ( ginfo.sc==0 && ftell(lfile)==0 ) {
+ /* ftell(lfile)==0 => There are no lookups for this table */
+ /* ginfo.sc==0 => There are no scripts. */
+ /* If both are true then we don't need to output the table */
+ /* It is perfectly possible to have lookups without scripts */
+ /* (if some other table refered to them -- we don't currently */
+ /* support this, but we might some day). */
+ /* It is also possible to have scripts without lookups (to get */
+ /* around a bug in Uniscribe which only processes some scripts */
+ /* if both GPOS and GSUB entries are present. So we share scripts */
+ /* between the two tables */
+ fclose(lfile);
+ /* if ginfo.sc==0 then there will be nothing to free in the ginfo struct*/
+return( NULL );
+ }
+
+ g___ = tmpfile2();
+
+ putlong(g___,0x10000); /* version number */
+ putshort(g___,10); /* offset to script table */
+ putshort(g___,0); /* offset to features. Come back for this */
+ putshort(g___,0); /* offset to lookups. Come back for this */
+/* Now the scripts */
+ scripts_start_offset = ftell(g___);
+ putshort(g___,ginfo.sc);
+ for ( i=0; i<ginfo.sc; ++i ) {
+ putlong(g___,ginfo.scripts[i].script);
+ putshort(g___,0); /* fix up later */
+ }
+
+ /* Ok, that was the script_list_table which gives each script an offset */
+ /* Now for each script we provide a Script table which contains an */
+ /* offset to a bunch of features for the default language, and a */
+ /* a more complex situation for non-default languages. */
+ offset=2+4; /* To the script pointer at the start of table */
+ for ( i=0; i<ginfo.sc; ++i ) {
+ here = ftell(g___);
+ fseek(g___,scripts_start_offset+offset,SEEK_SET);
+ putshort(g___,here-scripts_start_offset);
+ offset+=6;
+ fseek(g___,here,SEEK_SET);
+ dump_script_table(g___,&ginfo.scripts[i],&ginfo);
+ }
+ /* And that should finish all the scripts/languages */
+
+ /* so free the ginfo script/lang data */
+ for ( i=0; i<ginfo.sc; ++i ) {
+ for ( j=0; j<ginfo.scripts[i].lc; ++j ) {
+ free( ginfo.scripts[i].langsys[j].feature_id );
+ }
+ free( ginfo.scripts[i].langsys );
+ }
+ free( ginfo.scripts );
+
+/* Now the features */
+ feature_list_table_start = ftell(g___);
+ fseek(g___,6,SEEK_SET);
+ putshort(g___,feature_list_table_start);
+ fseek(g___,0,SEEK_END);
+ putshort(g___,ginfo.fcnt); /* Number of features */
+ offset = 2+6*ginfo.fcnt; /* Offset to start of first feature table from beginning of feature_list */
+ for ( i=0; i<ginfo.fcnt; ++i ) {
+ putlong(g___,ginfo.feat_lookups[i].tag);
+ putshort(g___,offset);
+ offset += 4+2*ginfo.feat_lookups[i].lcnt;
+ }
+ /* for each feature, one feature table */
+ size_params_ptr = 0;
+ for ( i=0; i<ginfo.fcnt; ++i ) {
+ ginfo.feat_lookups[i].name_param_ptr = 0;
+ if ( ginfo.feat_lookups[i].tag==CHR('s','i','z','e') )
+ size_params_ptr = ftell(g___);
+ else if ( ginfo.feat_lookups[i].tag>=CHR('s','s','0','1') && ginfo.feat_lookups[i].tag<=CHR('s','s','2','0'))
+ ginfo.feat_lookups[i].name_param_ptr = ftell(g___);
+ putshort(g___,0); /* No feature params (we'll come back for 'size') */
+ putshort(g___,ginfo.feat_lookups[i].lcnt);/* this many lookups */
+ for ( j=0; j<ginfo.feat_lookups[i].lcnt; ++j )
+ putshort(g___,ginfo.feat_lookups[i].lookups[j]->lookup_index );
+ /* index of each lookup */
+ }
+ if ( size_params_ptr!=0 ) {
+ size_params_loc = ftell(g___);
+ fseek(g___,size_params_ptr,SEEK_SET);
+ putshort(g___,size_params_loc-size_params_ptr);
+ fseek(g___,size_params_loc,SEEK_SET);
+ putshort(g___,sf->design_size);
+ if ( sf->fontstyle_id!=0 || sf->fontstyle_name!=NULL ) {
+ putshort(g___,sf->fontstyle_id);
+ at->fontstyle_name_strid = at->next_strid++;
+ putshort(g___,at->fontstyle_name_strid);
+ } else {
+ putshort(g___,0);
+ putshort(g___,0);
+ }
+ putshort(g___,sf->design_range_bottom);
+ putshort(g___,sf->design_range_top);
+ }
+ for ( i=0; i<ginfo.fcnt; ++i ) {
+ if ( ginfo.feat_lookups[i].name_param_ptr!=0 &&
+ (fn = findotffeatname(ginfo.feat_lookups[i].tag,sf))!=NULL ) {
+ if ( fn->nid==0 )
+ fn->nid = at->next_strid++;
+ uint32 name_param_loc = ftell(g___);
+ fseek(g___,ginfo.feat_lookups[i].name_param_ptr,SEEK_SET);
+ putshort(g___,name_param_loc-ginfo.feat_lookups[i].name_param_ptr);
+ fseek(g___,name_param_loc,SEEK_SET);
+ putshort(g___,0); /* Minor version number */
+ putshort(g___,fn->nid);
+ }
+ }
+ /* And that should finish all the features */
+
+ /* so free the ginfo feature data */
+ for ( i=0; i<ginfo.fcnt; ++i )
+ free( ginfo.feat_lookups[i].lookups );
+ free( ginfo.feat_lookups );
+
+/* Now the lookups */
+ all = is_gpos ? sf->gpos_lookups : sf->gsub_lookups;
+ for ( cnt=0, otf = all; otf!=NULL; otf=otf->next ) {
+ if ( otf->lookup_index!=-1 )
+ ++cnt;
+ }
+ lookup_list_table_start = ftell(g___);
+ fseek(g___,8,SEEK_SET);
+ putshort(g___,lookup_list_table_start);
+ fseek(g___,0,SEEK_END);
+ putshort(g___,cnt);
+ offset = 2+2*cnt; /* Offset to start of first lookup table from beginning of lookup list */
+ for ( otf = all; otf!=NULL; otf=otf->next ) if ( otf->lookup_index!=-1 ) {
+ putshort(g___,offset);
+ for ( scnt=0, sub = otf->subtables; sub!=NULL; sub=sub->next ) {
+ if ( sub->subtable_offset==-1 )
+ continue;
+ else if ( sub->extra_subtables!=NULL ) {
+ for ( i=0; sub->extra_subtables[i]!=-1; ++i )
+ ++scnt;
+ } else
+ ++scnt;
+ }
+ otf->subcnt = scnt;
+ offset += 6+2*scnt; /* 6 bytes header +2 per lookup */
+ if ( otf->lookup_flags & pst_usemarkfilteringset )
+ offset += 2; /* For mark filtering set, if used */
+ }
+ offset -= 2+2*cnt;
+ /* now the lookup tables */
+ /* do we need any extension sub-tables? */
+ efile=g___FigureExtensionSubTables(all,offset,is_gpos);
+ for ( otf = all; otf!=NULL; otf=otf->next ) if ( otf->lookup_index!=-1 ) {
+ putshort(g___,!otf->needs_extension ? (otf->lookup_type&0xff)
+ : is_gpos ? 9 : 7);
+ putshort(g___,(otf->lookup_flags&0xffff));
+ putshort(g___,otf->subcnt);
+ for ( sub = otf->subtables; sub!=NULL; sub=sub->next ) {
+ if ( sub->subtable_offset==-1 )
+ continue;
+ else if ( sub->extra_subtables!=NULL ) {
+ for ( i=0; sub->extra_subtables[i]!=-1; ++i )
+ putshort(g___,offset+sub->extra_subtables[i]);
+ } else
+ putshort(g___,offset+sub->subtable_offset);
+
+ /* Offset to lookup data which is in the temp file */
+ /* we keep adjusting offset so it reflects the distance between */
+ /* here and the place where the temp file will start, and then */
+ /* we need to skip l->offset bytes in the temp file */
+ /* If it's a big GPOS/SUB table we may also need some extension */
+ /* pointers, but FigureExtension will adjust for that */
+ }
+ offset -= 6+2*otf->subcnt;
+ if ( otf->lookup_flags & pst_usemarkfilteringset ) {
+ putshort(g___,otf->lookup_flags>>16);
+ offset -= 2;
+ }
+ }
+
+ buf = malloc(8096);
+ if ( efile!=NULL ) {
+ rewind(efile);
+ while ( (i=fread(buf,1,8096,efile))>0 )
+ fwrite(buf,1,i,g___);
+ fclose(efile);
+ }
+ rewind(lfile);
+ while ( (i=fread(buf,1,8096,lfile))>0 )
+ fwrite(buf,1,i,g___);
+ fclose(lfile);
+ free(buf);
+ for ( otf = all; otf!=NULL; otf=otf->next ) if ( otf->lookup_index!=-1 ) {
+ for ( sub = otf->subtables; sub!=NULL; sub=sub->next ) {
+ free(sub->extra_subtables);
+ sub->extra_subtables = NULL;
+ }
+ otf->needs_extension = false;
+ }
+return( g___ );
+}
+
+void otf_dumpgpos(struct alltabs *at, SplineFont *sf) {
+ /* Open Type, bless its annoying little heart, doesn't store kern info */
+ /* in the kern table. Of course not, how silly of me to think it might */
+ /* be consistent. It stores it in the much more complicated gpos table */
+ AnchorClass *ac;
+
+ for ( ac=sf->anchor; ac!=NULL; ac=ac->next )
+ ac->processed = false;
+
+ at->gpos = dumpg___info(at, sf,true);
+ if ( at->gpos!=NULL ) {
+ at->gposlen = ftell(at->gpos);
+ if ( at->gposlen&1 ) putc('\0',at->gpos);
+ if ( (at->gposlen+1)&2 ) putshort(at->gpos,0);
+ }
+}
+
+void otf_dumpgsub(struct alltabs *at, SplineFont *sf) {
+ /* substitutions such as: Ligatures, cjk vertical rotation replacement, */
+ /* arabic forms, small caps, ... */
+ SFLigaturePrepare(sf);
+ at->gsub = dumpg___info(at, sf, false);
+ if ( at->gsub!=NULL ) {
+ at->gsublen = ftell(at->gsub);
+ if ( at->gsublen&1 ) putc('\0',at->gsub);
+ if ( (at->gsublen+1)&2 ) putshort(at->gsub,0);
+ }
+ SFLigatureCleanup(sf);
+}
+
+int LigCaretCnt(SplineChar *sc) {
+ PST *pst;
+ int j, cnt;
+
+ for ( pst=sc->possub; pst!=NULL; pst=pst->next ) {
+ if ( pst->type == pst_lcaret ) {
+ if ( sc->lig_caret_cnt_fixed )
+return( pst->u.lcaret.cnt );
+ else {
+ /* only output non-zero carets */
+ cnt=0;
+ for ( j=pst->u.lcaret.cnt-1; j>=0 ; --j )
+ if ( pst->u.lcaret.carets[j]!=0 )
+ ++cnt;
+return( cnt );
+ }
+ }
+ }
+return( 0 );
+}
+
+static void DumpLigCarets(FILE *gdef,SplineChar *sc) {
+ PST *pst;
+ int i, j, offset, cnt;
+
+ for ( pst=sc->possub; pst!=NULL; pst=pst->next ) {
+ if ( pst->type == pst_lcaret )
+ break;
+ }
+ if ( pst==NULL )
+return;
+ cnt = LigCaretCnt(sc);
+ if ( cnt==0 )
+return;
+
+ if ( SCRightToLeft(sc) ) {
+ for ( i=0; i<pst->u.lcaret.cnt-1; ++i )
+ for ( j=i+1; j<pst->u.lcaret.cnt; ++j )
+ if ( pst->u.lcaret.carets[i]<pst->u.lcaret.carets[j] ) {
+ int16 temp = pst->u.lcaret.carets[i];
+ pst->u.lcaret.carets[i] = pst->u.lcaret.carets[j];
+ pst->u.lcaret.carets[j] = temp;
+ }
+ } else {
+ for ( i=0; i<pst->u.lcaret.cnt-1; ++i )
+ for ( j=i+1; j<pst->u.lcaret.cnt; ++j )
+ if ( pst->u.lcaret.carets[i]>pst->u.lcaret.carets[j] ) {
+ int16 temp = pst->u.lcaret.carets[i];
+ pst->u.lcaret.carets[i] = pst->u.lcaret.carets[j];
+ pst->u.lcaret.carets[j] = temp;
+ }
+ }
+
+ putshort(gdef,cnt); /* this many carets */
+ offset = sizeof(uint16) + sizeof(uint16)*cnt;
+ for ( i=0; i<cnt; ++i ) {
+ putshort(gdef,offset);
+ offset+=4;
+ }
+ for ( i=0; i<pst->u.lcaret.cnt; ++i ) {
+ if ( sc->lig_caret_cnt_fixed || pst->u.lcaret.carets[i]!=0 ) {
+ putshort(gdef,1); /* Format 1 */
+ putshort(gdef,pst->u.lcaret.carets[i]);
+ }
+ }
+}
+
+static int glyphnameinlist(char *haystack,char *name) {
+ char *start, *pt;
+ int ch, match, slen = strlen(name);
+
+ for ( pt=haystack ; ; ) {
+ while ( *pt==' ' ) ++pt;
+ if ( *pt=='\0' )
+return( false );
+ start=pt;
+ while ( *pt!=' ' && *pt!='\0' ) ++pt;
+ if ( pt-start==slen ) {
+ ch = *pt; *pt='\0';
+ match = strcmp(start,name);
+ *pt = ch;
+ if ( match==0 )
+return( true );
+ }
+ }
+}
+
+static int ReferencedByGSUB(SplineChar *sc) {
+ PST *pst;
+ SplineFont *sf = sc->parent;
+ int gid;
+ SplineChar *testsc;
+ char *name = sc->name;
+
+ /* If it is itself a ligature it will be referenced by GSUB */
+ /* (because we store ligatures on the glyph generated) */
+ for ( pst=sc->possub; pst!=NULL; pst=pst->next )
+ if ( pst->type == pst_ligature )
+return( true );
+
+ for ( gid=0; gid<sf->glyphcnt; ++gid ) if ( (testsc=sf->glyphs[gid])!=NULL ) {
+ for ( pst=testsc->possub; pst!=NULL; pst=pst->next ) {
+ if ( pst->type==pst_substitution || pst->type==pst_alternate ||
+ pst->type==pst_multiple ) {
+ if ( glyphnameinlist(pst->u.mult.components,name) )
+return( true );
+ }
+ }
+ }
+return( false );
+}
+
+int gdefclass(SplineChar *sc) {
+ PST *pst;
+ AnchorPoint *ap;
+
+ if ( sc->glyph_class!=0 )
+return( sc->glyph_class-1 );
+
+ if ( strcmp(sc->name,".notdef")==0 )
+return( 0 );
+
+ /* It isn't clear to me what should be done if a glyph is both a ligature */
+ /* and a mark (There are some greek accent ligatures, it is probably more*/
+ /* important that they be indicated as marks). Here I chose mark rather */
+ /* than ligature as the mark class is far more likely to be used */
+ ap=sc->anchor;
+ while ( ap!=NULL && (ap->type==at_centry || ap->type==at_cexit) )
+ ap = ap->next;
+ if ( ap!=NULL && (ap->type==at_mark || ap->type==at_basemark) )
+return( 3 );
+
+ for ( pst=sc->possub; pst!=NULL; pst=pst->next ) {
+ if ( pst->type == pst_ligature )
+return( 2 ); /* Ligature */
+ }
+
+ /* I not quite sure what a componant glyph is. Probably something */
+ /* that is not in the cmap table and is referenced in other glyphs */
+ /* (I've never seen it used by others) */
+ /* (Note: No glyph in a CID font can be components as all CIDs mean */
+ /* something) (I think) */
+ if ( sc->unicodeenc==-1 && sc->dependents!=NULL &&
+ sc->parent->cidmaster!=NULL && !ReferencedByGSUB(sc))
+return( 4 );
+ else
+return( 1 );
+}
+
+void otf_dumpgdef(struct alltabs *at, SplineFont *sf) {
+ /* In spite of what the open type docs say, this table does appear to be */
+ /* required (at least the glyph class def table) if we do mark to base */
+ /* positioning */
+ /* I was wondering at the apperant contradiction: something can be both a */
+ /* base glyph and a ligature component, but it appears that the component*/
+ /* class is unused and everything is a base unless it is a ligature or */
+ /* mark */
+ /* All my example fonts ignore the attachment list subtable and the mark */
+ /* attach class def subtable, so I shall too */
+ /* Ah. Some indic fonts need the mark attach class subtable for greater */
+ /* control of lookup flags */
+ /* All my example fonts contain a ligature caret list subtable, which is */
+ /* empty. Odd, but perhaps important */
+ int i,j,k, lcnt, needsclass;
+ int pos, offset;
+ int cnt, start, last, lastval;
+ SplineChar **glyphs, *sc;
+
+ /* Don't look in the cidmaster if we are only dumping one subfont */
+ if ( sf->cidmaster && sf->cidmaster->glyphs!=NULL ) sf = sf->cidmaster;
+ else if ( sf->mm!=NULL ) sf=sf->mm->normal;
+
+ glyphs = NULL;
+ for ( k=0; k<2; ++k ) {
+ lcnt = 0;
+ needsclass = false;
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ SplineChar *sc = sf->glyphs[at->gi.bygid[i]];
+ if ( sc->glyph_class!=0 || gdefclass(sc)!=1 )
+ needsclass = true;
+ if ( LigCaretCnt(sc)!=0 ) {
+ if ( glyphs!=NULL ) glyphs[lcnt] = sc;
+ ++lcnt;
+ }
+ }
+ if ( lcnt==0 )
+ break;
+ if ( glyphs!=NULL )
+ break;
+ glyphs = malloc((lcnt+1)*sizeof(SplineChar *));
+ glyphs[lcnt] = NULL;
+ }
+ if ( !needsclass && lcnt==0 && sf->mark_class_cnt==0 && sf->mark_set_cnt==0 )
+return; /* No anchor positioning, no ligature carets */
+
+ at->gdef = tmpfile2();
+ if ( sf->mark_set_cnt==0 ) {
+ putlong(at->gdef,0x00010000); /* Version */
+ putshort(at->gdef, needsclass ? 12 : 0 ); /* glyph class defn table */
+ } else {
+ putlong(at->gdef,0x00010002); /* Version with mark sets */
+ putshort(at->gdef, needsclass ? 14 : 0 ); /* glyph class defn table */
+ }
+ putshort(at->gdef, 0 ); /* attachment list table */
+ putshort(at->gdef, 0 ); /* ligature caret table (come back and fix up later) */
+ putshort(at->gdef, 0 ); /* mark attachment class table */
+ if ( sf->mark_set_cnt>0 ) {
+ putshort(at->gdef, 0 ); /* mark attachment set table only meaningful if version is 0x10002*/
+ }
+
+ /* Glyph class subtable */
+ if ( needsclass ) {
+ /* Mark shouldn't conflict with anything */
+ /* Ligature is more important than Base */
+ /* Component is not used */
+ /* ttx can't seem to support class format type 1 so let's output type 2 */
+ for ( j=0; j<2; ++j ) {
+ cnt = 0;
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ sc = sf->glyphs[at->gi.bygid[i]];
+ if ( sc!=NULL && sc->ttf_glyph!=-1 ) {
+ lastval = gdefclass(sc);
+ start = last = i;
+ for ( ; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ sc = sf->glyphs[at->gi.bygid[i]];
+ if ( gdefclass(sc)!=lastval )
+ break;
+ last = i;
+ }
+ --i;
+ if ( lastval!=0 ) {
+ if ( j==1 ) {
+ putshort(at->gdef,start);
+ putshort(at->gdef,last);
+ putshort(at->gdef,lastval);
+ }
+ ++cnt;
+ }
+ }
+ }
+ if ( j==0 ) {
+ putshort(at->gdef,2); /* class format 2, range list by class */
+ putshort(at->gdef,cnt);
+ }
+ }
+ }
+
+ /* Ligature caret subtable. Always include this if we have a GDEF */
+ pos = ftell(at->gdef);
+ fseek(at->gdef,8,SEEK_SET); /* location of lig caret table offset */
+ putshort(at->gdef,pos);
+ fseek(at->gdef,0,SEEK_END);
+ if ( lcnt==0 ) {
+ /* It always seems to be present, even if empty */
+ putshort(at->gdef,4); /* Offset to (empty) coverage table */
+ putshort(at->gdef,0); /* no ligatures */
+ putshort(at->gdef,2); /* coverage table format 2 */
+ putshort(at->gdef,0); /* no ranges in coverage table */
+ } else {
+ pos = ftell(at->gdef); /* coverage location */
+ putshort(at->gdef,0); /* Offset to coverage table (fix up later) */
+ putshort(at->gdef,lcnt);
+ offset = 2*lcnt+4;
+ for ( i=0; i<lcnt; ++i ) {
+ putshort(at->gdef,offset);
+ offset+=2+6*LigCaretCnt(glyphs[i]);
+ }
+ for ( i=0; i<lcnt; ++i )
+ DumpLigCarets(at->gdef,glyphs[i]);
+ offset = ftell(at->gdef);
+ fseek(at->gdef,pos,SEEK_SET);
+ putshort(at->gdef,offset-pos);
+ fseek(at->gdef,0,SEEK_END);
+ dumpcoveragetable(at->gdef,glyphs);
+ }
+
+ /* Mark Attachment Class Subtable */
+ if ( sf->mark_class_cnt>0 ) {
+ uint16 *mclasses = ClassesFromNames(sf,sf->mark_classes,sf->mark_class_cnt,at->maxp.numGlyphs,NULL,false);
+ pos = ftell(at->gdef);
+ fseek(at->gdef,10,SEEK_SET); /* location of mark attach table offset */
+ putshort(at->gdef,pos);
+ fseek(at->gdef,0,SEEK_END);
+ DumpClass(at->gdef,mclasses,at->maxp.numGlyphs);
+ free(mclasses);
+ }
+
+ /* Mark Attachment Class Subtable */
+ if ( sf->mark_set_cnt>0 ) {
+ pos = ftell(at->gdef);
+ fseek(at->gdef,12,SEEK_SET); /* location of mark attach table offset */
+ putshort(at->gdef,pos);
+ fseek(at->gdef,0,SEEK_END);
+ putshort(at->gdef,1); /* Version number */
+ putshort(at->gdef,sf->mark_set_cnt);
+ for ( i=0; i<sf->mark_set_cnt; ++i )
+ putlong(at->gdef,0);
+ for ( i=0; i<sf->mark_set_cnt; ++i ) {
+ int here = ftell(at->gdef);
+ fseek(at->gdef,pos+4+4*i,SEEK_SET);
+ putlong(at->gdef,here-pos);
+ fseek(at->gdef,0,SEEK_END);
+ glyphs = OrderedGlyphsFromNames(sf,sf->mark_sets[i]);
+ dumpcoveragetable(at->gdef,glyphs);
+ free(glyphs);
+ }
+ }
+
+ at->gdeflen = ftell(at->gdef);
+ if ( at->gdeflen&1 ) putc('\0',at->gdef);
+ if ( (at->gdeflen+1)&2 ) putshort(at->gdef,0);
+}
+
+/******************************************************************************/
+/* ******************************* MATH Table ******************************* */
+/* ********************** (Not strictly OpenType yet) *********************** */
+/******************************************************************************/
+enum math_bits { mb_constants=0x01, mb_italic=0x02, mb_topaccent=0x04,
+ mb_extended=0x08, mb_mathkern=0x10, mb_vertvariant=0x20,
+ mb_horizvariant=0x40,
+ mb_all = 0x7f,
+ mb_gi=(mb_italic|mb_topaccent|mb_extended|mb_mathkern),
+ mb_gv=(mb_vertvariant|mb_horizvariant) };
+
+static int MathBits(struct alltabs *at, SplineFont *sf) {
+ int i, gid, ret;
+ SplineChar *sc;
+
+ ret = sf->MATH ? mb_constants : 0;
+
+ for ( i=0; i<at->gi.gcnt; ++i ) {
+ if ( (gid=at->gi.bygid[i])!=-1 && (sc=sf->glyphs[gid])!=NULL ) {
+ if ( sc->italic_correction!=TEX_UNDEF )
+ ret |= mb_italic;
+ if ( sc->top_accent_horiz!=TEX_UNDEF )
+ ret |= mb_topaccent;
+ if ( sc->is_extended_shape )
+ ret |= mb_extended;
+ if ( sc->mathkern!=NULL )
+ ret |= mb_mathkern;
+ if ( sc->vert_variants!=NULL )
+ ret |= mb_vertvariant;
+ if ( sc->horiz_variants!=NULL )
+ ret |= mb_horizvariant;
+ if ( ret==mb_all )
+return( mb_all );
+ }
+ }
+return( ret );
+}
+
+static void ttf_math_dump_italic_top(FILE *mathf,struct alltabs *at, SplineFont *sf, int is_italic) {
+ int i, gid, len;
+ SplineChar *sc, **glyphs;
+ uint32 coverage_pos, coverage_table;
+ uint32 devtab_offset;
+ DeviceTable *devtab;
+
+ /* Figure out our glyph list (and count) */
+ for ( i=len=0; i<at->gi.gcnt; ++i )
+ if ( (gid=at->gi.bygid[i])!=-1 && (sc=sf->glyphs[gid])!=NULL )
+ if ( (is_italic && sc->italic_correction!=TEX_UNDEF) || (!is_italic && sc->top_accent_horiz!=TEX_UNDEF))
+ ++len;
+ glyphs = malloc((len+1)*sizeof(SplineChar *));
+ for ( i=len=0; i<at->gi.gcnt; ++i )
+ if ( (gid=at->gi.bygid[i])!=-1 && (sc=sf->glyphs[gid])!=NULL )
+ if ( (is_italic && sc->italic_correction!=TEX_UNDEF) || (!is_italic && sc->top_accent_horiz!=TEX_UNDEF))
+ glyphs[len++] = sc;
+ glyphs[len] = NULL;
+
+ coverage_pos = ftell(mathf);
+ putshort(mathf,0); /* Coverage table, return to this */
+ putshort(mathf,len);
+ devtab_offset = 4 + 4*len;
+ for ( i=0; i<len; ++i ) {
+ putshort(mathf,is_italic ? glyphs[i]->italic_correction : glyphs[i]->top_accent_horiz );
+ devtab = is_italic ? glyphs[i]->italic_adjusts : glyphs[i]->top_accent_adjusts;
+ if ( devtab!=NULL ) {
+ putshort(mathf,devtab_offset);
+ devtab_offset += DevTabLen(devtab);
+ } else
+ putshort(mathf,0);
+ }
+ for ( i=0; i<len; ++i ) {
+ devtab = is_italic ? glyphs[i]->italic_adjusts : glyphs[i]->top_accent_adjusts;
+ if ( devtab!=NULL )
+ dumpgposdevicetable(mathf,devtab);
+ }
+ if ( devtab_offset!=ftell(mathf)-coverage_pos )
+ IError("Actual end did not match expected end in %s table, expected=%d, actual=%d",
+ is_italic ? "italic" : "top accent", devtab_offset, ftell(mathf)-coverage_pos );
+ coverage_table = ftell(mathf);
+ fseek( mathf, coverage_pos, SEEK_SET);
+ putshort(mathf,coverage_table-coverage_pos);
+ fseek(mathf,coverage_table,SEEK_SET);
+ dumpcoveragetable(mathf,glyphs);
+ free(glyphs);
+}
+
+static void ttf_math_dump_extended(FILE *mathf,struct alltabs *at, SplineFont *sf) {
+ int i, gid, len;
+ SplineChar *sc, **glyphs;
+
+ for ( i=len=0; i<at->gi.gcnt; ++i )
+ if ( (gid=at->gi.bygid[i])!=-1 && (sc=sf->glyphs[gid])!=NULL )
+ if ( sc->is_extended_shape )
+ ++len;
+ glyphs = malloc((len+1)*sizeof(SplineChar *));
+ for ( i=len=0; i<at->gi.gcnt; ++i )
+ if ( (gid=at->gi.bygid[i])!=-1 && (sc=sf->glyphs[gid])!=NULL )
+ if ( sc->is_extended_shape )
+ glyphs[len++] = sc;
+ glyphs[len] = NULL;
+ dumpcoveragetable(mathf,glyphs);
+ free(glyphs);
+}
+
+static int mkv_len(struct mathkernvertex *mkv) {
+return( 2+8*mkv->cnt-4 );
+}
+
+static int ttf_math_dump_mathkernvertex(FILE *mathf,struct mathkernvertex *mkv,
+ int devtab_pos) {
+ int i;
+ uint32 here = ftell(mathf);
+
+ putshort(mathf,mkv->cnt-1);
+
+ for ( i=0; i<mkv->cnt-1; ++i ) {
+ putshort(mathf,mkv->mkd[i].height);
+ if ( mkv->mkd[i].height_adjusts!=NULL ) {
+ putshort(mathf,devtab_pos-here);
+ devtab_pos += DevTabLen(mkv->mkd[i].height_adjusts);
+ } else
+ putshort(mathf,0);
+ }
+ for ( i=0; i<mkv->cnt; ++i ) {
+ putshort(mathf,mkv->mkd[i].kern);
+ if ( mkv->mkd[i].kern_adjusts!=NULL ) {
+ putshort(mathf,devtab_pos-here);
+ devtab_pos += DevTabLen(mkv->mkd[i].kern_adjusts);
+ } else
+ putshort(mathf,0);
+ }
+return( devtab_pos );
+}
+
+static void ttf_math_dump_mathkerndevtab(FILE *mathf,struct mathkernvertex *mkv) {
+ int i;
+
+ for ( i=0; i<mkv->cnt-1; ++i )
+ if ( mkv->mkd[i].height_adjusts!=NULL )
+ dumpgposdevicetable(mathf,mkv->mkd[i].height_adjusts);
+ for ( i=0; i<mkv->cnt; ++i )
+ if ( mkv->mkd[i].kern_adjusts!=NULL )
+ dumpgposdevicetable(mathf,mkv->mkd[i].kern_adjusts);
+}
+
+static void ttf_math_dump_mathkern(FILE *mathf,struct alltabs *at, SplineFont *sf) {
+ int i, gid, len;
+ SplineChar *sc, **glyphs;
+ uint32 coverage_pos, coverage_table, kr_pos, midpos2;
+
+ /* Figure out our glyph list (and count) */
+ for ( i=len=0; i<at->gi.gcnt; ++i )
+ if ( (gid=at->gi.bygid[i])!=-1 && (sc=sf->glyphs[gid])!=NULL )
+ if ( sc->mathkern!=NULL )
+ ++len;
+ glyphs = malloc((len+1)*sizeof(SplineChar *));
+ for ( i=len=0; i<at->gi.gcnt; ++i )
+ if ( (gid=at->gi.bygid[i])!=-1 && (sc=sf->glyphs[gid])!=NULL )
+ if ( sc->mathkern!=NULL )
+ glyphs[len++] = sc;
+ glyphs[len] = NULL;
+
+ coverage_pos = ftell(mathf);
+ putshort(mathf,0); /* Coverage table, return to this */
+ putshort(mathf,len);
+ kr_pos = coverage_pos + 4 + 8*len;
+ for ( i=0; i<len; ++i ) {
+ struct mathkern *mk = glyphs[i]->mathkern;
+ if ( mk->top_right.cnt==0 )
+ putshort(mathf,0);
+ else {
+ putshort(mathf,kr_pos-coverage_pos);
+ kr_pos += mkv_len(&mk->top_right);
+ }
+ if ( mk->top_left.cnt==0 )
+ putshort(mathf,0);
+ else {
+ putshort(mathf,kr_pos-coverage_pos);
+ kr_pos += mkv_len(&mk->top_left);
+ }
+ if ( mk->bottom_right.cnt==0 )
+ putshort(mathf,0);
+ else {
+ putshort(mathf,kr_pos-coverage_pos);
+ kr_pos += mkv_len(&mk->bottom_right);
+ }
+ if ( mk->bottom_left.cnt==0 )
+ putshort(mathf,0);
+ else {
+ putshort(mathf,kr_pos-coverage_pos);
+ kr_pos += mkv_len(&mk->bottom_left);
+ }
+ }
+ if ( ftell(mathf)!=coverage_pos + 4 + 8*len )
+ IError("Actual midpoint1 did not match expected midpoint1 in mathkern table, expected=%d, actual=%d",
+ coverage_pos + 4 + 8*len, ftell(mathf) );
+
+ midpos2 = kr_pos;
+ for ( i=0; i<len; ++i ) {
+ struct mathkern *mk = glyphs[i]->mathkern;
+ if ( mk->top_right.cnt!=0 )
+ kr_pos = ttf_math_dump_mathkernvertex(mathf,&mk->top_right,kr_pos);
+ if ( mk->top_left.cnt!=0 )
+ kr_pos = ttf_math_dump_mathkernvertex(mathf,&mk->top_left,kr_pos);
+ if ( mk->bottom_right.cnt!=0 )
+ kr_pos = ttf_math_dump_mathkernvertex(mathf,&mk->bottom_right,kr_pos);
+ if ( mk->bottom_left.cnt!=0 )
+ kr_pos = ttf_math_dump_mathkernvertex(mathf,&mk->bottom_left,kr_pos);
+ }
+ if ( ftell(mathf)!=midpos2)
+ IError("Actual midpoint2 did not match expected midpoint2 in mathkern table, expected=%d, actual=%d",
+ midpos2, ftell(mathf) );
+
+ for ( i=0; i<len; ++i ) {
+ struct mathkern *mk = glyphs[i]->mathkern;
+ if ( mk->top_right.cnt!=0 )
+ ttf_math_dump_mathkerndevtab(mathf,&mk->top_right);
+ if ( mk->top_left.cnt!=0 )
+ ttf_math_dump_mathkerndevtab(mathf,&mk->top_left);
+ if ( mk->bottom_right.cnt!=0 )
+ ttf_math_dump_mathkerndevtab(mathf,&mk->bottom_right);
+ if ( mk->bottom_left.cnt!=0 )
+ ttf_math_dump_mathkerndevtab(mathf,&mk->bottom_left);
+ }
+ if ( kr_pos!=ftell(mathf) )
+ IError("Actual end did not match expected end in mathkern table, expected=%d, actual=%d",
+ kr_pos, ftell(mathf) );
+
+ coverage_table = ftell(mathf);
+ fseek( mathf, coverage_pos, SEEK_SET);
+ putshort(mathf,coverage_table-coverage_pos);
+ fseek(mathf,coverage_table,SEEK_SET);
+ dumpcoveragetable(mathf,glyphs);
+ free(glyphs);
+}
+
+static int gv_len(SplineFont *sf, struct glyphvariants *gv) {
+ char *pt, *start;
+ int ch, cnt;
+ SplineChar *sc;
+
+ if ( gv==NULL || (gv->variants==NULL && gv->part_cnt==0))
+return( 0 );
+ if ( gv->variants==NULL )
+return( 4 ); /* No variants, but we've got parts to assemble */
+ cnt = 0;
+ for ( start=gv->variants ;; ) {
+ while ( *start==' ' ) ++start;
+ if ( *start=='\0' )
+return( 4+4*cnt ); /* MathGlyphConstructionTable */
+ for ( pt = start ; *pt!=' ' && *pt!='\0'; ++pt );
+ ch = *pt; *pt = '\0';
+ sc = SFGetChar(sf,-1,start);
+ *pt = ch;
+ if ( sc!=NULL )
+ ++cnt;
+ start = pt;
+ }
+}
+
+static int gvc_len(struct glyphvariants *gv) {
+ if ( gv->part_cnt==0 )
+return( 0 );
+
+return( 6+10*gv->part_cnt );
+}
+
+static uint32 ttf_math_dump_mathglyphconstructiontable(FILE *mathf,
+ struct glyphvariants *gv,SplineFont *sf, uint32 pos,int is_v) {
+ char *pt, *start;
+ int ch, cnt;
+ SplineChar *sc;
+ uint32 here = ftell(mathf);
+ DBounds b;
+
+ putshort(mathf,gv->part_cnt==0? 0 : pos-here);
+ if ( gv->variants==NULL ) {
+ putshort(mathf,0);
+ } else {
+ cnt = 0;
+ for ( start=gv->variants ;; ) {
+ while ( *start==' ' ) ++start;
+ if ( *start=='\0' )
+ break;
+ for ( pt = start ; *pt!=' ' && *pt!='\0'; ++pt );
+ ch = *pt; *pt = '\0';
+ sc = SFGetChar(sf,-1,start);
+ *pt = ch;
+ if ( sc!=NULL )
+ ++cnt;
+ start = pt;
+ }
+ putshort(mathf,cnt);
+ for ( start=gv->variants ;; ) {
+ while ( *start==' ' ) ++start;
+ if ( *start=='\0' )
+ break;
+ for ( pt = start ; *pt!=' ' && *pt!='\0'; ++pt );
+ ch = *pt; *pt = '\0';
+ sc = SFGetChar(sf,-1,start);
+ *pt = ch;
+ if ( sc!=NULL ) {
+ putshort(mathf,sc->ttf_glyph);
+ SplineCharFindBounds(sc,&b);
+ /* Don't ask me why I have a plus one here. In the MS font */
+ /* CambriaMath all of these values are one more than I would */
+ /* expect */
+ if ( is_v )
+ putshort(mathf,b.maxy-b.miny +1);
+ else
+ putshort(mathf,b.maxx-b.minx +1);
+ }
+ start=pt;
+ }
+ }
+return( pos + gvc_len(gv));
+}
+
+static uint32 ttf_math_dump_mathglyphassemblytable(FILE *mathf,
+ struct glyphvariants *gv,SplineFont *sf, uint32 devtab_pos) {
+ SplineChar *sc;
+ uint32 here = ftell(mathf);
+ int i;
+
+ if ( gv->part_cnt==0 )
+return( devtab_pos );
+ putshort(mathf,gv->italic_correction);
+ if ( gv->italic_adjusts!=NULL ) {
+ putshort(mathf,devtab_pos-here);
+ devtab_pos += DevTabLen(gv->italic_adjusts);
+ } else
+ putshort(mathf,0);
+ putshort(mathf,gv->part_cnt);
+ for ( i=0; i<gv->part_cnt; ++i ) {
+ sc = SFGetChar(sf,-1,gv->parts[i].component);
+ if ( sc==NULL )
+ putshort(mathf,0); /* .notdef */
+ else
+ putshort(mathf,sc->ttf_glyph);
+ putshort(mathf,gv->parts[i].startConnectorLength);
+ putshort(mathf,gv->parts[i].endConnectorLength);
+ putshort(mathf,gv->parts[i].fullAdvance);
+ putshort(mathf,gv->parts[i].is_extender);
+ }
+return(devtab_pos);
+}
+
+static void ttf_math_dump_glyphvariant(FILE *mathf,struct alltabs *at, SplineFont *sf) {
+ int i, gid, vlen, hlen;
+ SplineChar *sc, **vglyphs, **hglyphs;
+ uint32 coverage_pos, coverage_table, offset, pos, assembly_pos;
+
+ /* Figure out our glyph list (and count) */
+ for ( i=vlen=hlen=0; i<at->gi.gcnt; ++i )
+ if ( (gid=at->gi.bygid[i])!=-1 && (sc=sf->glyphs[gid])!=NULL ) {
+ if ( sc->vert_variants!=NULL )
+ ++vlen;
+ if ( sc->horiz_variants!=NULL )
+ ++hlen;
+ }
+
+ vglyphs = malloc((vlen+1)*sizeof(SplineChar *));
+ hglyphs = malloc((hlen+1)*sizeof(SplineChar *));
+ for ( i=vlen=hlen=0; i<at->gi.gcnt; ++i )
+ if ( (gid=at->gi.bygid[i])!=-1 && (sc=sf->glyphs[gid])!=NULL ) {
+ if ( sc->vert_variants!=NULL )
+ vglyphs[vlen++] = sc;
+ if ( sc->horiz_variants!=NULL )
+ hglyphs[hlen++] = sc;
+ }
+ vglyphs[vlen] = NULL;
+ hglyphs[hlen] = NULL;
+
+ putshort(mathf,sf->MATH==NULL?(sf->ascent+sf->descent)/50 : sf->MATH->MinConnectorOverlap );
+ coverage_pos = ftell(mathf);
+ putshort(mathf,0); /* Vertical Coverage table, return to this */
+ putshort(mathf,0); /* Horizontal Coverage table, return to this */
+ putshort(mathf,vlen);
+ putshort(mathf,hlen);
+ offset = 5*2+vlen*2+hlen*2;
+ for ( i=0; i<vlen; ++i ) {
+ putshort(mathf,offset);
+ offset += gv_len(sf,vglyphs[i]->vert_variants);
+ }
+ for ( i=0; i<hlen; ++i ) {
+ putshort(mathf,offset);
+ offset += gv_len(sf,hglyphs[i]->horiz_variants);
+ }
+ assembly_pos = pos = (coverage_pos-2)+offset;
+ for ( i=0; i<vlen; ++i ) {
+ /*uint32 start = ftell(mathf);*/
+ pos = ttf_math_dump_mathglyphconstructiontable(mathf,
+ vglyphs[i]->vert_variants,sf,pos,true);
+ /*if ( ftell(mathf)-start != gv_len(sf,vglyphs[i]->vert_variants))*/
+ /*IError("v gv_len incorrect");*/
+ }
+ for ( i=0; i<hlen; ++i ) {
+ /*uint32 start = ftell(mathf);*/
+ pos = ttf_math_dump_mathglyphconstructiontable(mathf,
+ hglyphs[i]->horiz_variants,sf,pos,false);
+ /*if ( ftell(mathf)-start != gv_len(sf,hglyphs[i]->horiz_variants))*/
+ /*IError("h gv_len incorrect: %s", hglyphs[i]->name);*/
+ }
+ if ( ftell(mathf)!=assembly_pos )
+ IError("assembly tables at wrong place");
+
+ for ( i=0; i<vlen; ++i )
+ pos = ttf_math_dump_mathglyphassemblytable(mathf,
+ vglyphs[i]->vert_variants,sf,pos);
+ for ( i=0; i<hlen; ++i )
+ pos = ttf_math_dump_mathglyphassemblytable(mathf,
+ hglyphs[i]->horiz_variants,sf,pos);
+ for ( i=0; i<vlen; ++i )
+ if ( vglyphs[i]->vert_variants->part_cnt!=0 &&
+ vglyphs[i]->vert_variants->italic_adjusts!=NULL )
+ dumpgposdevicetable(mathf,vglyphs[i]->vert_variants->italic_adjusts);
+ for ( i=0; i<hlen; ++i )
+ if ( hglyphs[i]->horiz_variants->part_cnt!=0 &&
+ hglyphs[i]->horiz_variants->italic_adjusts!=NULL )
+ dumpgposdevicetable(mathf,hglyphs[i]->horiz_variants->italic_adjusts);
+ if ( vlen!=0 ) {
+ coverage_table = ftell(mathf);
+ fseek( mathf, coverage_pos, SEEK_SET);
+ putshort(mathf,coverage_table-(coverage_pos-2));
+ fseek(mathf,coverage_table,SEEK_SET);
+ dumpcoveragetable(mathf,vglyphs);
+ }
+ free(vglyphs);
+ if ( hlen!=0 ) {
+ coverage_table = ftell(mathf);
+ fseek( mathf, coverage_pos+2, SEEK_SET);
+ putshort(mathf,coverage_table-(coverage_pos-2));
+ fseek(mathf,coverage_table,SEEK_SET);
+ dumpcoveragetable(mathf,hglyphs);
+ }
+ free(hglyphs);
+}
+
+void otf_dump_math(struct alltabs *at, SplineFont *sf) {
+ FILE *mathf;
+ int i;
+ uint32 devtab_offsets[60], const_start, gi_start, v_start;
+ int bits = MathBits(at,sf);
+
+ if ( sf->MATH==NULL )
+return;
+
+ at->math = mathf = tmpfile2();
+
+ putlong(mathf, 0x00010000 ); /* Version 1 */
+ putshort(mathf, 10); /* Offset to constants */
+ putshort(mathf, 0); /* GlyphInfo, fix later */
+ putshort(mathf, 0); /* Variants, fix later */
+
+ /* Start on constants */
+ memset(devtab_offsets,0,sizeof(devtab_offsets));
+ const_start = ftell(mathf);
+ for ( i=0; math_constants_descriptor[i].script_name!=NULL; ++i ) {
+ int16 *pos = (int16 *) (((char *) (sf->MATH)) + math_constants_descriptor[i].offset );
+ if ( pos == (int16 *) &sf->MATH->MinConnectorOverlap )
+ continue; /* Actually lives in the Variant table, not here */
+ putshort(mathf, *pos);
+ if ( math_constants_descriptor[i].devtab_offset != -1 ) {
+ devtab_offsets[i] = ftell(mathf);
+ putshort(mathf, 0); /* Fix up later if we support device tables */
+ }
+ }
+ for ( i=0; math_constants_descriptor[i].script_name!=NULL; ++i ) {
+ int16 *pos = (int16 *) (((char *) (sf->MATH)) + math_constants_descriptor[i].offset );
+ DeviceTable **devtab = (DeviceTable **) (((char *) (sf->MATH)) + math_constants_descriptor[i].devtab_offset );
+ if ( pos == (int16 *) &sf->MATH->MinConnectorOverlap )
+ continue; /* Actually lives in the Variant table, not here */
+ if ( math_constants_descriptor[i].devtab_offset >= 0 && *devtab!=NULL ) {
+ uint32 here = ftell(mathf);
+ fseek(mathf,devtab_offsets[i],SEEK_SET);
+ putshort(mathf, here-const_start);
+ fseek(mathf,here,SEEK_SET);
+ dumpgposdevicetable(mathf,*devtab);
+ }
+ }
+
+ /* The spec does not say this can be NULL */
+ if ( 1 /* bits&mb_gi*/ ) {
+ gi_start = ftell(mathf);
+ fseek(mathf,6,SEEK_SET);
+ putshort(mathf,gi_start);
+ fseek(mathf,gi_start,SEEK_SET);
+
+ putshort(mathf,0); /* Italics correction */
+ putshort(mathf,0); /* top accent */
+ putshort(mathf,0); /* is extended shape */
+ putshort(mathf,0); /* math kern info */
+
+ if ( bits&mb_italic ) {
+ v_start = ftell(mathf);
+ fseek(mathf,gi_start,SEEK_SET);
+ putshort(mathf,v_start-gi_start);
+ fseek(mathf,v_start,SEEK_SET);
+
+ ttf_math_dump_italic_top(mathf,at,sf,true);
+ }
+
+ if ( bits&mb_topaccent ) {
+ v_start = ftell(mathf);
+ fseek(mathf,gi_start+2,SEEK_SET);
+ putshort(mathf,v_start-gi_start);
+ fseek(mathf,v_start,SEEK_SET);
+
+ ttf_math_dump_italic_top(mathf,at,sf,false);
+ }
+
+ if ( bits&mb_extended ) {
+ v_start = ftell(mathf);
+ fseek(mathf,gi_start+4,SEEK_SET);
+ putshort(mathf,v_start-gi_start);
+ fseek(mathf,v_start,SEEK_SET);
+
+ ttf_math_dump_extended(mathf,at,sf);
+ }
+
+ if ( bits&mb_mathkern ) {
+ v_start = ftell(mathf);
+ fseek(mathf,gi_start+6,SEEK_SET);
+ putshort(mathf,v_start-gi_start);
+ fseek(mathf,v_start,SEEK_SET);
+
+ ttf_math_dump_mathkern(mathf,at,sf);
+ }
+ }
+
+ /* The spec does not say this can be NULL */
+ if ( 1 /* bits&mb_gv*/ ) {
+ v_start = ftell(mathf);
+ fseek(mathf,8,SEEK_SET);
+ putshort(mathf,v_start);
+ fseek(mathf,v_start,SEEK_SET);
+
+ ttf_math_dump_glyphvariant(mathf,at,sf);
+ }
+
+ at->mathlen = ftell(mathf);
+ if ( ftell(mathf)&1 )
+ putc('\0',mathf);
+ if ( ftell(mathf)&2 )
+ putshort(mathf,0);
+}
+
+struct taglist {
+ uint32 tag;
+ struct taglist *next;
+};
+
+static int taglistcompar(const void *_cv1, const void *_cv2) {
+ const struct taglist *const *tl1 = _cv1, *const *tl2 = _cv2;
+
+ if ( (*tl1)->tag==(*tl2)->tag )
+return( 0 );
+ if ( (*tl1)->tag>(*tl2)->tag )
+return( 1 );
+
+return( -1 );
+}
+
+static int langlistcompar(const void *_cv1, const void *_cv2) {
+ const struct taglist *const *tl1 = _cv1, *const *tl2 = _cv2;
+
+ if ( (*tl1)->tag==(*tl2)->tag )
+return( 0 );
+ if ( (*tl1)->tag == DEFAULT_LANG )
+return( -1 );
+ if ( (*tl2)->tag == DEFAULT_LANG )
+return( 1 );
+ if ( (*tl1)->tag>(*tl2)->tag )
+return( 1 );
+
+return( -1 );
+}
+
+static struct taglist *sorttaglist(struct taglist *list,int (*compar)(const void *,const void*)) {
+ struct taglist *t, **array;
+ int i,cnt;
+
+ if ( list==NULL || list->next==NULL )
+return( list );
+
+ for ( t=list, cnt=0; t!=NULL; t=t->next, ++cnt );
+ array = malloc(cnt*sizeof(struct taglist *));
+ for ( t=list, cnt=0; t!=NULL; t=t->next, ++cnt )
+ array[cnt] = t;
+ qsort(array,cnt,sizeof(struct taglist *),compar);
+ for ( i=1; i<cnt; ++i )
+ array[i-1]->next = array[i];
+ array[cnt-1]->next = NULL;
+ list = array[0];
+ free( array );
+return( list );
+}
+
+static void _base_sort(struct Base *base) {
+ /* Sort the base lines. Which can reorder the def_baseline index in the */
+ /* script, and the baseline_pos lists */
+ /* Sort the script list */
+ /* Sort the language lists in each script */
+ /* Sort the feature lists in each language */
+ int i,j,pos, tag;
+ struct basescript *bs;
+ struct baselangextent *langs;
+
+ if ( base==NULL )
+return;
+
+ if ( base->baseline_cnt!=0 ) {
+ for ( i=0; i<base->baseline_cnt; ++i )
+ for ( j=i+1; j<base->baseline_cnt; ++j ) {
+ if ( base->baseline_tags[i]>base->baseline_tags[j] ) {
+ tag = base->baseline_tags[i];
+ base->baseline_tags[i] = base->baseline_tags[j];
+ base->baseline_tags[j] = tag;
+ for ( bs=base->scripts ; bs!=NULL; bs=bs->next ) {
+ if ( bs->def_baseline==i )
+ bs->def_baseline = j;
+ else if ( bs->def_baseline==j )
+ bs->def_baseline = i;
+ pos = bs->baseline_pos[i];
+ bs->baseline_pos[i] = bs->baseline_pos[j];
+ bs->baseline_pos[j] = pos;
+ }
+ }
+ }
+ }
+ base->scripts = (struct basescript *) sorttaglist((struct taglist *) base->scripts,taglistcompar);
+ for ( bs=base->scripts ; bs!=NULL; bs=bs->next ) {
+ bs->langs = (struct baselangextent *) sorttaglist((struct taglist *) bs->langs,langlistcompar);
+ for ( langs = bs->langs; langs!=NULL; langs = langs->next )
+ langs->features = (struct baselangextent *) sorttaglist((struct taglist *) langs->features,taglistcompar);
+ }
+}
+
+void SFBaseSort(SplineFont *sf) {
+ _base_sort(sf->horiz_base);
+ _base_sort(sf->vert_base);
+}
+
+static void dump_minmax(FILE *basef,struct baselangextent *bl) {
+ struct baselangextent *fl;
+ int fcnt;
+
+ putshort(basef,bl->descent);
+ putshort(basef,bl->ascent);
+ for ( fl=bl->features, fcnt=0; fl!=NULL; fl=fl->next, ++fcnt );
+ putshort(basef,fcnt);
+ for ( fl=bl->features; fl!=NULL; fl=fl->next ) {
+ putlong(basef,fl->lang); /* feature tag really */
+ putshort(basef,fl->descent);
+ putshort(basef,fl->ascent);
+ }
+}
+
+void otf_dumpbase(struct alltabs *at, SplineFont *sf) {
+ FILE *basef;
+ int i,j, cnt, lcnt;
+ uint32 here, bsl;
+ struct basescript *bs;
+ struct baselangextent *bl, *dflt;
+ int offset;
+
+ if ( sf->horiz_base==NULL && sf->vert_base==NULL )
+return;
+
+ SFBaseSort(sf);
+
+ at->base = basef = tmpfile2();
+
+ putlong(basef, 0x00010000 ); /* Version 1 */
+ putshort(basef, 0 ); /* offset to horizontal baselines, fill in later */
+ putshort(basef, 0 ); /* offset to vertical baselines, fill in later */
+
+ for ( i=0; i<2; ++i ) {
+ struct Base *base = i==0 ? sf->horiz_base : sf->vert_base;
+ if ( base==NULL )
+ continue;
+ here = ftell(basef);
+ fseek(basef,4+2*i,SEEK_SET);
+ putshort(basef,here-0);
+ fseek(basef,here,SEEK_SET);
+
+ /* axis table */
+ putshort(basef,base->baseline_cnt==0 ? 0 : 4 );
+ putshort(basef,base->baseline_cnt==0 ? 4 :
+ 4+2+4*base->baseline_cnt );
+
+ if ( base->baseline_cnt!=0 ) {
+ /* BaseTagList table */
+ putshort(basef,base->baseline_cnt);
+ for ( j=0; j<base->baseline_cnt; ++j )
+ putlong(basef,base->baseline_tags[j]);
+ }
+
+ /* BaseScriptList table */
+ bsl = ftell(basef);
+ for ( bs=base->scripts, cnt=0; bs!=NULL; bs=bs->next, ++cnt );
+ putshort(basef,cnt);
+ for ( bs=base->scripts; bs!=NULL; bs=bs->next ) {
+ putlong(basef,bs->script);
+ putshort(basef,0);
+ }
+
+ /* BaseScript table */
+ for ( bs=base->scripts, cnt=0; bs!=NULL; bs=bs->next, ++cnt ) {
+ uint32 bst = ftell(basef);
+ fseek(basef,bsl+2+6*cnt+4,SEEK_SET);
+ putshort(basef,bst-bsl);
+ fseek(basef,bst,SEEK_SET);
+
+ for ( bl=bs->langs, dflt=NULL, lcnt=0; bl!=NULL; bl=bl->next ) {
+ if ( bl->lang==DEFAULT_LANG )
+ dflt = bl;
+ else
+ ++lcnt;
+ }
+ offset = 6+6*lcnt;
+ putshort(basef,base->baseline_cnt==0?0:offset);
+ if ( base->baseline_cnt!=0 )
+ offset += 4+2*base->baseline_cnt+4*base->baseline_cnt;
+ putshort(basef,dflt==NULL ? 0 : offset);
+ putshort(basef,lcnt);
+ for ( bl=bs->langs; bl!=NULL; bl=bl->next ) if ( bl->lang!=DEFAULT_LANG ) {
+ putlong(basef,bl->lang);
+ putshort(basef,0);
+ }
+
+ /* Base Values table */
+ if ( base->baseline_cnt!=0 ) {
+ offset = 4+2*base->baseline_cnt;
+ putshort(basef,bs->def_baseline);
+ putshort(basef,base->baseline_cnt);
+ for ( j=0; j<base->baseline_cnt; ++j ) {
+ putshort(basef,offset);
+ offset += 2*2;
+ }
+ for ( j=0; j<base->baseline_cnt; ++j ) {
+ putshort(basef,1); /* format 1 */
+ putshort(basef,bs->baseline_pos[j]);
+ }
+ }
+
+ if ( dflt!=NULL )
+ dump_minmax(basef,dflt);
+ for ( bl=bs->langs, dflt=NULL, lcnt=0; bl!=NULL; bl=bl->next ) if ( bl->lang!=DEFAULT_LANG ) {
+ uint32 here = ftell(basef);
+ fseek(basef,bst+6+6*lcnt+4,SEEK_SET);
+ putshort(basef,here-bst);
+ fseek(basef,here,SEEK_SET);
+ dump_minmax(basef,bl);
+ }
+ }
+ }
+
+ at->baselen = ftell(basef);
+ if ( ftell(basef)&1 )
+ putc('\0',basef);
+ if ( ftell(basef)&2 )
+ putshort(basef,0);
+}
+
+static int jscriptsort(const void *_s1,const void *_s2) {
+ const Justify * const * __s1 = (const Justify * const *) _s1;
+ const Justify * const * __s2 = (const Justify * const *) _s2;
+ const Justify *s1 = *__s1;
+ const Justify *s2 = *__s2;
+
+ if ( s1->script>s2->script )
+return( 1 );
+ else if ( s1->script<s2->script )
+return( -1 );
+ else
+return( 0 );
+}
+
+static int jlangsort(const void *_s1,const void *_s2) {
+ const struct jstf_lang * const * __s1 = (const struct jstf_lang * const *) _s1;
+ const struct jstf_lang * const * __s2 = (const struct jstf_lang * const *) _s2;
+ const struct jstf_lang *s1 = *__s1;
+ const struct jstf_lang *s2 = *__s2;
+
+ if ( s1->lang==s2->lang )
+return( 0 );
+
+ if ( s1->lang==DEFAULT_LANG )
+return( -1 );
+ if ( s2->lang==DEFAULT_LANG )
+return( 1 );
+
+ if ( s1->lang>s2->lang )
+return( 1 );
+ else
+return( -1 );
+}
+
+static int lookup_order(const void *_s1,const void *_s2) {
+ const OTLookup * const * __s1 = (const OTLookup * const *) _s1;
+ const OTLookup * const * __s2 = (const OTLookup * const *) _s2;
+ const OTLookup *s1 = *__s1;
+ const OTLookup *s2 = *__s2;
+
+ if ( s1->lookup_index>s2->lookup_index )
+return( 1 );
+ else if ( s1->lookup_index<s2->lookup_index )
+return( -1 );
+ else
+return( 0 );
+}
+
+static void SFJstfSort(SplineFont *sf) {
+ /* scripts must be ordered */
+ /* languages must be ordered within scripts */
+ /* lookup lists must be ordered */
+ Justify *jscript, **scripts;
+ int i,cnt,lmax;
+ struct jstf_lang **langs;
+
+ for ( cnt=0, jscript= sf->justify; jscript!=NULL; ++cnt, jscript=jscript->next );
+ if ( cnt>1 ) {
+ scripts = malloc(cnt*sizeof(Justify *));
+ for ( i=0, jscript= sf->justify; jscript!=NULL; ++i, jscript=jscript->next )
+ scripts[i] = jscript;
+ qsort(scripts,cnt,sizeof(Justify *),jscriptsort);
+ for ( i=1; i<cnt; ++i )
+ scripts[i-1]->next = scripts[i];
+ scripts[cnt-1]->next = NULL;
+ sf->justify = scripts[0];
+ free(scripts);
+ }
+
+ langs = NULL; lmax=0;
+ for ( jscript= sf->justify; jscript!=NULL; jscript=jscript->next ) {
+ struct jstf_lang *jlang;
+ for ( cnt=0, jlang=jscript->langs; jlang!=NULL; ++cnt, jlang=jlang->next );
+ if ( cnt>1 ) {
+ if ( cnt>lmax )
+ langs = realloc(langs,(lmax=cnt+10)*sizeof(struct jstf_lang *));
+ for ( i=0, jlang=jscript->langs; jlang!=NULL; ++i, jlang=jlang->next )
+ langs[i] = jlang;
+ qsort(langs,cnt,sizeof(Justify *),jlangsort);
+ for ( i=1; i<cnt; ++i )
+ langs[i-1]->next = langs[i];
+ langs[cnt-1]->next = NULL;
+ jscript->langs = langs[0];
+ }
+ }
+ free(langs);
+
+ /* don't bother to sort the lookup lists yet. We need to separate them into*/
+ /* GPOS/GSUB first, might as well do it all at once later */
+}
+
+static void jstf_SplitTables(OTLookup **mixed,OTLookup ***_SUB,OTLookup ***_POS) {
+ /* (later is now, see comment above) */
+ /* mixed contains both gsub and gpos lookups. put them into their own */
+ /* lists, and then sort them */
+ int cnt, s, p;
+ OTLookup **SUB, **POS;
+
+ if ( mixed==NULL || mixed[0]==NULL ) {
+ *_SUB = NULL;
+ *_POS = NULL;
+return;
+ }
+
+ for ( cnt=0; mixed[cnt]!=NULL; ++cnt);
+ SUB = malloc((cnt+1)*sizeof(OTLookup *));
+ POS = malloc((cnt+1)*sizeof(OTLookup *));
+ for ( cnt=s=p=0; mixed[cnt]!=NULL; ++cnt) {
+ if ( mixed[cnt]->lookup_index==-1 ) /* Not actually used */
+ continue;
+ if ( mixed[cnt]->lookup_type>=gpos_start )
+ POS[p++] = mixed[cnt];
+ else
+ SUB[s++] = mixed[cnt];
+ }
+ POS[p] = SUB[s] = NULL;
+
+ if ( p>1 )
+ qsort(POS,p,sizeof(OTLookup *),lookup_order);
+ if ( s>1 )
+ qsort(SUB,s,sizeof(OTLookup *),lookup_order);
+ if ( p==0 ) {
+ free(POS);
+ POS=NULL;
+ }
+ if ( s==0 ) {
+ free(SUB);
+ SUB=NULL;
+ }
+ *_SUB = SUB;
+ *_POS = POS;
+}
+
+static uint32 jstf_dumplklist(FILE *jstf,OTLookup **PS,uint32 base) {
+ uint32 here;
+ int i;
+
+ if ( PS==NULL )
+return( 0 );
+
+ here = ftell(jstf);
+ for ( i=0; PS[i]!=NULL; ++i );
+ putshort(jstf,i); /* Lookup cnt */
+ for ( i=0; PS[i]!=NULL; ++i )
+ putshort( jstf, PS[i]->lookup_index );
+ free(PS);
+return( here - base );
+}
+
+static uint32 jstf_dumpmaxlookups(FILE *jstf,SplineFont *sf,struct alltabs *at,
+ OTLookup **maxes,uint32 base) {
+ uint32 here, lbase;
+ int cnt,i;
+ int scnt, j;
+ struct lookup_subtable *sub;
+
+ if ( maxes==NULL )
+return( 0 );
+
+ for ( cnt=i=0; maxes[i]!=NULL; ++i )
+ if ( !maxes[i]->unused )
+ ++cnt;
+ if ( cnt==0 )
+return( 0 );
+
+ if ( (here=ftell(jstf))<0 )
+return( 0 );
+
+ putshort( jstf,cnt );
+ for ( i=0; maxes[i]!=NULL; ++i ) if ( !maxes[i]->unused )
+ putshort( jstf,0 );
+ for ( cnt=i=0; maxes[i]!=NULL; ++i ) if ( !maxes[i]->unused ) {
+ if ( (lbase=ftell(jstf))<0 )
+return( 0 );
+ fseek(jstf,here+2+2*cnt,SEEK_SET);
+ putshort(jstf,lbase-here);
+ fseek(jstf,lbase,SEEK_SET);
+
+ putshort(jstf,maxes[i]->lookup_type - gpos_start );
+ putshort(jstf,maxes[i]->lookup_flags);
+
+ for ( scnt=0, sub=maxes[i]->subtables; sub!=NULL; sub=sub->next )
+ if ( !sub->unused )
+ ++scnt;
+ putshort( jstf,scnt );
+ for ( j=0; j<scnt; ++j )
+ putshort( jstf,0 );
+ /* I don't think extension lookups get a MarkAttachmentType, I guess */
+ /* that inherits from the parent? */
+
+ otf_dumpALookup(jstf, maxes[i], sf, at);
+ fseek(jstf,lbase+6,SEEK_SET);
+ for ( sub=maxes[i]->subtables; sub!=NULL; sub=sub->next )
+ if ( !sub->unused )
+ putshort(jstf,sub->subtable_offset-lbase);
+ ++cnt;
+ }
+
+return( here - base );
+}
+
+void otf_dumpjstf(struct alltabs *at, SplineFont *sf) {
+ FILE *jstf;
+ int i, cnt, lcnt, offset;
+ uint32 here, base;
+ Justify *jscript;
+ struct jstf_lang *jlang;
+
+ if ( sf->justify==NULL )
+return;
+
+ SFJstfSort(sf);
+ for ( jscript=sf->justify, cnt=0; jscript!=NULL; jscript=jscript->next, ++cnt );
+
+ at->jstf = jstf = tmpfile2();
+
+ putlong(jstf, 0x00010000 ); /* Version 1 */
+ putshort(jstf, cnt ); /* script count */
+ for ( jscript=sf->justify; jscript!=NULL; jscript=jscript->next ) {
+ putlong(jstf, jscript->script);
+ putshort(jstf, 0); /* Come back to this later */
+ }
+ for ( jscript=sf->justify, cnt=0; jscript!=NULL; jscript=jscript->next, ++cnt ) {
+ base = ftell(jstf);
+ if ( base>0xffff )
+ ff_post_error(_("Failure"),_("Offset in JSTF table is too big. The resultant font will not work."));
+ fseek(jstf, 6+6*cnt+4,SEEK_SET);
+ putshort(jstf,base);
+ fseek(jstf, base, SEEK_SET);
+
+ putshort(jstf,0); /* extender glyphs */
+ putshort(jstf,0); /* default lang */
+ for ( jlang=jscript->langs, lcnt=0; jlang!=NULL; jlang=jlang->next, ++lcnt );
+ if ( lcnt>0 && jscript->langs->lang==DEFAULT_LANG )
+ --lcnt;
+ putshort(jstf,lcnt); /* count of non-default languages */
+ jlang = jscript->langs;
+ if ( jlang!=NULL && jlang->lang==DEFAULT_LANG )
+ jlang=jlang->next;
+ for ( ; jlang!=NULL; jlang=jlang->next ) {
+ putlong(jstf, jlang->lang);
+ putshort(jstf, 0); /* Come back to this later */
+ }
+
+ if ( jscript->extenders!=NULL ) {
+ SplineChar **glyphs;
+ int gcnt,g;
+
+ here = ftell(jstf);
+ fseek(jstf,base,SEEK_SET);
+ putshort(jstf,here-base);
+ fseek(jstf,here,SEEK_SET);
+
+ glyphs = OrderedGlyphsFromNames(sf,jscript->extenders);
+ if ( glyphs==NULL )
+ gcnt=0;
+ else
+ for ( gcnt=0; glyphs[gcnt]!=NULL; ++gcnt);
+ putshort(jstf,gcnt);
+ for ( g=0; g<gcnt; ++g )
+ putshort(jstf,glyphs[g]->ttf_glyph);
+ free(glyphs);
+ }
+
+ offset=0;
+ for ( jlang=jscript->langs, lcnt=0; jlang!=NULL; jlang=jlang->next, ++lcnt ) {
+ here = ftell(jstf);
+ if ( jlang->lang==DEFAULT_LANG ) {
+ fseek(jstf,base+2,SEEK_SET);
+ offset = -6;
+ } else
+ fseek(jstf,base+offset+10+lcnt*6,SEEK_SET);
+ putshort(jstf,here-base);
+ fseek(jstf,here,SEEK_SET);
+
+ putshort(jstf,jlang->cnt);
+ for ( i=0; i<jlang->cnt; ++i )
+ putshort(jstf,0);
+ for ( i=0; i<jlang->cnt; ++i ) {
+ OTLookup **enSUB, **enPOS, **disSUB, **disPOS;
+ uint32 enSUBoff, enPOSoff, disSUBoff, disPOSoff, maxOff;
+ uint32 pbase;
+ pbase = ftell(jstf);
+ fseek(jstf,here+2+i*2,SEEK_SET);
+ putshort(jstf,pbase-here);
+ fseek(jstf,pbase,SEEK_SET);
+
+ putshort(jstf,0);
+ putshort(jstf,0);
+ putshort(jstf,0);
+ putshort(jstf,0);
+ putshort(jstf,0);
+ putshort(jstf,0);
+ putshort(jstf,0);
+ putshort(jstf,0);
+ putshort(jstf,0);
+ putshort(jstf,0);
+
+ jstf_SplitTables(jlang->prios[i].enableShrink,&enSUB,&enPOS);
+ jstf_SplitTables(jlang->prios[i].disableShrink,&disSUB,&disPOS);
+ enSUBoff = jstf_dumplklist(jstf,enSUB, pbase);
+ disSUBoff = jstf_dumplklist(jstf,disSUB,pbase);
+ enPOSoff = jstf_dumplklist(jstf,enPOS, pbase);
+ disPOSoff = jstf_dumplklist(jstf,disPOS,pbase);
+ maxOff = jstf_dumpmaxlookups(jstf,sf,at,jlang->prios[i].maxShrink,pbase);
+
+ fseek(jstf,pbase,SEEK_SET);
+ putshort(jstf,enSUBoff);
+ putshort(jstf,disSUBoff);
+ putshort(jstf,enPOSoff);
+ putshort(jstf,disPOSoff);
+ putshort(jstf,maxOff);
+
+ fseek(jstf,0,SEEK_END);
+ jstf_SplitTables(jlang->prios[i].enableExtend,&enSUB,&enPOS);
+ jstf_SplitTables(jlang->prios[i].disableExtend,&disSUB,&disPOS);
+ enSUBoff = jstf_dumplklist(jstf,enSUB, pbase);
+ disSUBoff = jstf_dumplklist(jstf,disSUB,pbase);
+ enPOSoff = jstf_dumplklist(jstf,enPOS, pbase);
+ disPOSoff = jstf_dumplklist(jstf,disPOS,pbase);
+ maxOff = jstf_dumpmaxlookups(jstf,sf,at,jlang->prios[i].maxExtend,pbase);
+
+ fseek(jstf,pbase+10,SEEK_SET);
+ putshort(jstf,enSUBoff);
+ putshort(jstf,disSUBoff);
+ putshort(jstf,enPOSoff);
+ putshort(jstf,disPOSoff);
+ putshort(jstf,maxOff);
+ fseek(jstf,0,SEEK_END);
+ }
+ }
+ }
+
+ fseek(jstf,0,SEEK_END);
+ at->jstflen = ftell(jstf);
+ if ( ftell(jstf)&1 )
+ putc('\0',jstf);
+ if ( ftell(jstf)&2 )
+ putshort(jstf,0);
+}
+
+void otf_dump_dummydsig(struct alltabs *at, SplineFont *sf) {
+ FILE *dsigf;
+
+ /* I think the DSIG table is a big crock. At best the most it can do is */
+ /* tell you that the font hasn't changed since it was signed. It gives */
+ /* no guarantee that the data are reasonable. I think it's stupid. */
+ /* I think it is even more stupid that MS choses this useless table as a*/
+ /* mark of whether a ttf font is OpenType or not. */
+ /* But users want their fonts to show up as OpenType under MS. And I'm */
+ /* told an empty DSIG table works for that. So... a truely pointless */
+ /* instance of a pointless table. I suppose that's a bit ironic. */
+
+ at->dsigf = dsigf = tmpfile2();
+ putlong(dsigf,0x00000001); /* Standard version (and why isn't it 0x10000 like everything else?) */
+ putshort(dsigf,0); /* No signatures in my signature table*/
+ putshort(dsigf,0); /* No flags */
+
+ at->dsiglen = ftell(dsigf);
+ if ( ftell(dsigf)&1 )
+ putc('\0',dsigf);
+ if ( ftell(dsigf)&2 )
+ putshort(dsigf,0);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottfvar.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottfvar.c
new file mode 100644
index 00000000000..436ab39f428
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/tottfvar.c
@@ -0,0 +1,820 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include "ttf.h"
+#include <math.h>
+
+static int PtNumbersAreSet(SplineChar *sc) {
+ struct splinecharlist *dep;
+
+ if ( sc==NULL )
+return( false );
+
+ if ( sc->ttf_instrs!=NULL )
+return( true );
+ for ( dep= sc->dependents; dep!=NULL ; dep=dep->next )
+ if ( dep->sc->ttf_instrs!=NULL )
+return( true );
+
+return( false );
+}
+
+static int AssignPtNumbers(MMSet *mm,int gid) {
+ /* None of the instances has fixed point numbers. Make them match */
+ int cnt=0;
+ SplineSet **ss;
+ SplinePoint **sp;
+ int i;
+ int allavg, alllines, stillmore, ret=true;
+
+ ss = malloc((mm->instance_count+1)*sizeof(SplineSet *));
+ sp = malloc((mm->instance_count+1)*sizeof(SplinePoint *));
+ for ( i=0; i<mm->instance_count; ++i )
+ ss[i] = mm->instances[i]->glyphs[gid]->layers[ly_fore].splines;
+ ss[i] = mm->normal->glyphs[gid]->layers[ly_fore].splines;
+
+ if ( ss[0]==NULL ) {
+ stillmore = false;
+ for ( i=0; i<=mm->instance_count; ++i )
+ if ( ss[i]!=NULL ) stillmore = true;
+ free(ss);
+ free(sp);
+ if ( stillmore )
+return( false );
+return( true );
+ } else {
+ stillmore = true;
+ for ( i=0; i<=mm->instance_count; ++i )
+ if ( ss[i]==NULL ) stillmore = false;
+ if ( !stillmore )
+{
+free(ss);
+free(sp);
+return( false );
+}
+ }
+
+ for (;;) {
+ for ( i=0; i<=mm->instance_count; ++i )
+ sp[i] = ss[i]->first;
+ for (;;) {
+ allavg = alllines = true;
+ for ( i=0; i<=mm->instance_count; ++i ) {
+ if ( !RealNear(sp[i]->me.x,(sp[i]->nextcp.x+sp[i]->prevcp.x)/2) ||
+ !RealNear(sp[i]->me.y,(sp[i]->nextcp.y+sp[i]->prevcp.y)/2) )
+ allavg = false;
+ if ( !sp[i]->nonextcp )
+ alllines = false;
+ }
+ if ( sp[0] == ss[0]->first )
+ allavg = false;
+ for ( i=0; i<=mm->instance_count; ++i ) {
+ if ( allavg )
+ sp[i]->ttfindex = 0xffff;
+ else
+ sp[i]->ttfindex = cnt;
+ }
+ if ( !allavg )
+ ++cnt;
+ for ( i=0; i<=mm->instance_count; ++i ) {
+ if ( alllines )
+ sp[i]->nextcpindex = 0xffff;
+ else
+ sp[i]->nextcpindex = cnt;
+ }
+ if ( !alllines )
+ ++cnt;
+
+ if ( sp[0]->next==NULL ) {
+ stillmore = false;
+ for ( i=1; i<=mm->instance_count; ++i )
+ if ( sp[i]->next!=NULL )
+ stillmore = true;
+ if ( stillmore )
+ ret = false;
+ break;
+ }
+ for ( i=1; i<=mm->instance_count; ++i )
+ if ( sp[i]->next==NULL )
+ stillmore = false;
+ if ( !stillmore ) {
+ ret = false;
+ break;
+ }
+ sp[0] = sp[0]->next->to;
+ for ( i=1; i<=mm->instance_count; ++i )
+ sp[i] = sp[i]->next->to;
+ if ( sp[0]==ss[0]->first ) {
+ stillmore = false;
+ for ( i=1; i<=mm->instance_count; ++i )
+ if ( sp[i]!=ss[i]->first )
+ stillmore = true;
+ if ( stillmore )
+ ret = false;
+ break;
+ }
+ for ( i=1; i<=mm->instance_count; ++i ) {
+ if ( sp[i]==ss[i]->first )
+ stillmore = false;
+ }
+ if ( !stillmore ) {
+ ret = false;
+ break;
+ }
+ }
+ if ( !ret )
+ break;
+ stillmore = true;
+ for ( i=0; i<=mm->instance_count; ++i )
+ ss[i] = ss[i]->next;
+ if ( ss[0]==NULL ) {
+ stillmore=false;
+ for ( i=1; i<=mm->instance_count; ++i )
+ if ( ss[i]!=NULL )
+ stillmore = true;
+ if ( stillmore )
+ ret = true;
+ break;
+ }
+ for ( i=1; i<=mm->instance_count; ++i )
+ if ( ss[i]==NULL )
+ stillmore = false;
+ if ( !stillmore ) {
+ ret = true;
+ break;
+ }
+ }
+ free(ss);
+ free(sp);
+return( ret );
+}
+
+static int MatchPoints(SplineFont *sffixed, SplineFont *sfother, int gid) {
+ SplineChar *fixed, *other;
+ SplineSet *ss1, *ss2;
+ SplinePoint *sp1, *sp2;
+
+ fixed = sffixed->glyphs[gid]; other = sfother->glyphs[gid];
+
+ if ( PtNumbersAreSet(other)) {
+ /* Point numbers must match exactly, both are fixed */
+ for ( ss1=fixed->layers[ly_fore].splines,
+ ss2=other->layers[ly_fore].splines;
+ ss1!=NULL && ss2!=NULL ;
+ ss1 = ss1->next, ss2=ss2->next ) {
+ for ( sp1=ss1->first, sp2=ss2->first; ; ) {
+ if ( sp1->ttfindex!=sp2->ttfindex ||
+ sp1->nextcpindex!=sp2->nextcpindex )
+return( false );
+ if ( sp1->next==NULL || sp2->next==NULL ) {
+ if ( sp1->next!=NULL || sp2->next!=NULL )
+return( false );
+ break;
+ }
+ sp1 = sp1->next->to; sp2=sp2->next->to;
+ if ( sp1==ss1->first || sp2==ss2->first ) {
+ if ( sp1!=ss1->first || sp2!=ss2->first )
+return( false );
+ break;
+ }
+ }
+ }
+return( ss1==NULL && ss2==NULL );
+ } else {
+ for ( ss1=fixed->layers[ly_fore].splines,
+ ss2=other->layers[ly_fore].splines;
+ ss1!=NULL && ss2!=NULL ;
+ ss1 = ss1->next, ss2=ss2->next ) {
+ for ( sp1=ss1->first, sp2=ss2->first; ; ) {
+ if ( sp1->ttfindex!=0xffff )
+ sp2->ttfindex = sp1->ttfindex;
+ else if ( !RealNear(sp2->me.x,(sp2->nextcp.x+sp2->prevcp.x)/2) ||
+ !RealNear(sp2->me.y,(sp2->nextcp.y+sp2->prevcp.y)/2) )
+return( false );
+ else
+ sp2->ttfindex = 0xffff;
+ if ( sp1->nextcpindex!=0xffff )
+ sp2->nextcpindex = sp1->nextcpindex;
+ else if ( !sp2->nonextcp )
+return( false );
+ else
+ sp2->nextcpindex = 0xffff;
+ if ( sp1->next==NULL || sp2->next==NULL ) {
+ if ( sp1->next!=NULL || sp2->next!=NULL )
+return( false );
+ break;
+ }
+ sp1 = sp1->next->to; sp2=sp2->next->to;
+ if ( sp1==ss1->first || sp2==ss2->first ) {
+ if ( sp1!=ss1->first || sp2!=ss2->first )
+return( false );
+ break;
+ }
+ }
+ }
+return( ss1==NULL && ss2==NULL );
+ }
+}
+
+int ContourPtNumMatch(MMSet *mm, int gid) {
+ SplineFont *sf;
+ int i;
+
+ if ( !mm->apple )
+return( false );
+
+ if ( gid>=mm->normal->glyphcnt )
+return( false );
+ if ( !SCWorthOutputting(mm->normal->glyphs[gid] ) ) {
+ for ( i=0; i<mm->instance_count; ++i ) {
+ if ( gid>=mm->instances[i]->glyphcnt )
+return( false );
+ if ( SCWorthOutputting(mm->instances[i]->glyphs[gid]))
+return( false );
+ }
+return( true ); /* None is not worth outputting, and that's ok, they match */
+ } else {
+ for ( i=0; i<mm->instance_count; ++i ) {
+ if ( gid>=mm->instances[i]->glyphcnt )
+return( false );
+ if ( !SCWorthOutputting(mm->instances[i]->glyphs[gid]))
+return( false );
+ }
+ /* All are worth outputting */
+ }
+
+ if ( mm->normal->glyphs[gid]->layers[ly_fore].refs!=NULL && mm->normal->glyphs[gid]->layers[ly_fore].splines!=NULL )
+return( false );
+ for ( i=0; i<mm->instance_count; ++i ) {
+ if ( mm->instances[i]->glyphs[gid]->layers[ly_fore].refs!=NULL && mm->instances[i]->glyphs[gid]->layers[ly_fore].splines!=NULL )
+return( false );
+ }
+ if ( mm->normal->glyphs[gid]->layers[ly_fore].refs!=NULL ) {
+ RefChar *r;
+ int cnt, c;
+ for ( r=mm->normal->glyphs[gid]->layers[ly_fore].refs, cnt=0; r!=NULL; r=r->next )
+ ++cnt;
+ for ( i=0; i<mm->instance_count; ++i ) {
+ for ( r=mm->instances[i]->glyphs[gid]->layers[ly_fore].refs, c=0; r!=NULL; r=r->next )
+ ++c;
+ if ( c!=cnt )
+return( false );
+ }
+ }
+
+ sf = NULL;
+ if ( PtNumbersAreSet(mm->normal->glyphs[gid]) )
+ sf = mm->normal;
+ else {
+ for ( i=0; i<mm->instance_count; ++i ) {
+ if ( PtNumbersAreSet(mm->instances[i]->glyphs[gid])) {
+ sf = mm->instances[i];
+ break;
+ }
+ }
+ }
+ if ( sf==NULL )
+ /* No instance has fixed points. Make sure all fonts are consistent */
+return( AssignPtNumbers(mm,gid));
+
+ if ( sf!=mm->normal && !MatchPoints(sf,mm->normal,gid))
+return( false );
+ for ( i=0; i<mm->instance_count; ++i ) if ( sf!=mm->instances[i] ) {
+ if ( !MatchPoints(sf, mm->instances[i],gid) )
+return( false );
+ }
+return( true );
+}
+
+static int SCPointCount(SplineChar *sc) {
+ int ptcnt=0;
+ RefChar *r;
+
+ ptcnt = SSTtfNumberPoints(sc->layers[ly_fore].splines);
+ for ( r=sc->layers[ly_fore].refs; r!=NULL ; r=r->next )
+ ++ptcnt;
+return( ptcnt );
+}
+
+int16 **SCFindDeltas(MMSet *mm, int gid, int *_ptcnt) {
+ /* When figuring out the deltas the first thing we must do is figure */
+ /* out each point's number */
+ int i, j, k, l, cnt, ptcnt;
+ int16 **deltas;
+ SplineSet *ss1, *ss2;
+ SplinePoint *sp1, *sp2;
+ RefChar *r1, *r2;
+
+ if ( !ContourPtNumMatch(mm,gid))
+return( NULL );
+ if ( !SCWorthOutputting(mm->normal->glyphs[gid]))
+return( NULL );
+
+ *_ptcnt = ptcnt = SCPointCount(mm->normal->glyphs[gid])+4;
+ deltas = malloc(2*mm->instance_count*sizeof(int16 *));
+ for ( i=0; i<2*mm->instance_count; ++i )
+ deltas[i] = calloc(ptcnt,sizeof(int16));
+ for ( i=0; i<mm->instance_count; ++i ) {
+ for ( ss1=mm->normal->glyphs[gid]->layers[ly_fore].splines,
+ ss2=mm->instances[i]->glyphs[gid]->layers[ly_fore].splines;
+ ss1!=NULL && ss2!=NULL ;
+ ss1 = ss1->next, ss2=ss2->next ) {
+ for ( sp1=ss1->first, sp2=ss2->first; ; ) {
+ if ( sp1->ttfindex!=0xffff ) {
+ deltas[2*i][sp1->ttfindex] = rint(sp2->me.x)-rint(sp1->me.x);
+ deltas[2*i+1][sp1->ttfindex] = rint(sp2->me.y)-rint(sp1->me.y);
+ }
+ if ( sp1->nextcpindex != 0xffff ) {
+ deltas[2*i][sp1->nextcpindex] = rint(sp2->nextcp.x)-rint(sp1->nextcp.x);
+ deltas[2*i+1][sp1->nextcpindex] = rint(sp2->nextcp.y)-rint(sp1->nextcp.y);
+ }
+ if ( sp1->next==NULL )
+ break;
+ sp1 = sp1->next->to; sp2 = sp2->next->to;
+ if ( sp1==ss1->first )
+ break;
+ }
+ }
+ for ( cnt=0,
+ r1=mm->normal->glyphs[gid]->layers[ly_fore].refs,
+ r2=mm->instances[i]->glyphs[gid]->layers[ly_fore].refs;
+ r1!=NULL && r2!=NULL;
+ r1=r1->next, r2=r2->next, ++cnt ) {
+ deltas[2*i][cnt] = r2->transform[4]-r1->transform[4];
+ deltas[2*i+1][cnt] = r2->transform[5]-r1->transform[5];
+ }
+ /* Phantom points */
+ deltas[2*i][ptcnt-4] = 0; deltas[2*i+1][ptcnt-4] = 0; /* lbearing */
+ deltas[2*i][ptcnt-3] = mm->instances[i]->glyphs[gid]->width -mm->normal->glyphs[gid]->width;
+ deltas[2*i+1][ptcnt-3] = 0; /* horizontal advance */
+ deltas[2*i][ptcnt-2] = 0; deltas[2*i+1][ptcnt-2] = 0; /* top bearing */
+ deltas[2*i][ptcnt-1] = 0; /* vertical advance */
+ deltas[2*i+1][ptcnt-1] = mm->instances[i]->glyphs[gid]->vwidth -mm->normal->glyphs[gid]->vwidth; /* horizontal advance */
+ }
+
+ /* Ok, each delta now contains the difference between the instance[i] points */
+ /* and the base points. But that isn't good enough. We must subtract */
+ /* [0,1] and [1,0] from [1,1], and then subtract [1,1,0] [1,0,1] [0,1,1] */
+ /* from [1,1,1] and so on (also [-1,0] from [-1,1], etc.) */
+ for ( j=1; j<mm->axis_count; ++j ) {
+ for ( i=0; i<mm->instance_count; ++i ) {
+ for ( k=cnt=0; k<mm->axis_count; ++k )
+ if ( mm->positions[i*mm->axis_count+k]!=0 )
+ ++cnt;
+ if ( cnt==j ) {
+ for ( l = 0; l<mm->instance_count; ++l ) if ( l!=i ) {
+ for ( k=0; k<mm->axis_count; ++k )
+ if ( mm->positions[i*mm->axis_count+k]!=0 &&
+ mm->positions[l*mm->axis_count+k]!=mm->positions[i*mm->axis_count+k])
+ break;
+ if ( k==mm->axis_count ) {
+ for ( k=0; k<ptcnt; ++k ) {
+ deltas[2*l][k] -= deltas[2*i][k];
+ deltas[2*l+1][k] -= deltas[2*i+1][k];
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /* If all variants of the glyph are the same, no point in having a gvar */
+ /* entry for it */
+ for ( i=0 ; i<mm->instance_count; ++i ) {
+ for ( j=0; j<ptcnt; ++j )
+ if ( deltas[i][j]!=0 )
+ break;
+ if ( j!=ptcnt )
+ break;
+ }
+ if ( i==mm->instance_count ) {
+ /* All zeros */
+ for ( i=0 ; i<mm->instance_count; ++i )
+ free(deltas[i]);
+ free(deltas);
+return( NULL );
+ }
+
+return( deltas );
+}
+
+int16 **CvtFindDeltas(MMSet *mm, int *_ptcnt) {
+ int i, j, k, l, cnt, ptcnt;
+ int16 **deltas;
+ struct ttf_table *cvt, *icvt;
+ for ( cvt = mm->normal->ttf_tables; cvt!=NULL && cvt->tag!=CHR('c','v','t',' '); cvt=cvt->next );
+
+ if ( cvt==NULL )
+return( NULL );
+
+ icvt = NULL;
+ for ( i=0; i<mm->instance_count; ++i )
+ if ( (icvt=mm->instances[i]->ttf_tables)!=NULL )
+ break;
+ if ( icvt==NULL ) /* No other cvt tables => no variation */
+return( NULL );
+
+ *_ptcnt = ptcnt = cvt->len/2;
+ deltas = calloc(mm->instance_count,sizeof(int16 *));
+ for ( i=0; i<mm->instance_count; ++i ) if ( (icvt=mm->instances[i]->ttf_tables)!=NULL ) {
+ deltas[i] = calloc(ptcnt,sizeof(int16));
+ for ( j=0; j<ptcnt; ++j )
+ deltas[i][j] = memushort(icvt->data,icvt->len, sizeof(uint16)*j)-
+ memushort(cvt->data,cvt->len, sizeof(uint16)*j);
+ }
+
+ /* Ok, each delta now contains the difference between the instance[i] points */
+ /* and the base points. But that isn't good enough. We must subtract */
+ /* [0,1] and [1,0] from [1,1], and then subtract [1,1,0] [1,0,1] [0,1,1] */
+ /* from [1,1,1] and so on (also [-1,0] from [-1,1], etc.) */
+ for ( j=1; j<mm->axis_count; ++j ) {
+ for ( i=0; i<mm->instance_count; ++i ) if ( deltas[i]!=NULL ) {
+ for ( k=cnt=0; k<mm->axis_count; ++k )
+ if ( mm->positions[i*mm->axis_count+k]!=0 )
+ ++cnt;
+ if ( cnt==j ) {
+ for ( l = 0; l<mm->instance_count; ++l ) if ( l!=i && deltas[l]!=NULL ) {
+ for ( k=0; k<mm->axis_count; ++k )
+ if ( mm->positions[i*mm->axis_count+k]!=0 &&
+ mm->positions[l*mm->axis_count+k]!=mm->positions[i*mm->axis_count+k])
+ break;
+ if ( k==mm->axis_count ) {
+ for ( k=0; k<ptcnt; ++k )
+ deltas[l][k] -= deltas[i][k];
+ }
+ }
+ }
+ }
+ }
+
+ /* If all variants of the cvt are the same, no point in having a gvar */
+ /* entry for it */
+ for ( i=0 ; i<mm->instance_count; ++i ) if ( deltas[i]!=NULL ) {
+ for ( j=0; j<ptcnt; ++j )
+ if ( deltas[i][j]!=0 )
+ break;
+ if ( j==ptcnt ) {
+ free(deltas[i]);
+ deltas[i] = NULL;
+ }
+ }
+ for ( i=0 ; i<mm->instance_count; ++i )
+ if ( deltas[i]!=NULL )
+ break;
+ if ( i==mm->instance_count ) {
+ /* All zeros */
+ free(deltas);
+return( NULL );
+ }
+
+return( deltas );
+}
+
+static void ttf_dumpcvar(struct alltabs *at, MMSet *mm) {
+ int16 **deltas;
+ int ptcnt, cnt, pcnt;
+ int i,j,rj,big;
+ int tuple_size;
+ uint32 start, end;
+ uint16 *pts;
+
+ deltas = CvtFindDeltas(mm,&ptcnt);
+ if ( deltas == NULL ) return;
+ for ( i=cnt=0; i<mm->instance_count; ++i )
+ if ( deltas[i]!=NULL )
+ ++cnt;
+ if ( cnt==0 ) {
+ free(deltas);
+return;
+ }
+
+ tuple_size = 4+2*mm->axis_count;
+ at->cvar = tmpfile2();
+ putlong( at->cvar, 0x00010000 ); /* Format */
+ putshort( at->cvar, cnt ); /* Number of instances with cvt tables (tuple count of interesting tuples) */
+ putshort( at->cvar, 8+cnt*tuple_size ); /* Offset to data */
+
+ for ( i=0; i<mm->instance_count; ++i ) if ( deltas[i]!=NULL ) {
+ putshort( at->cvar, 0 ); /* tuple data size, figure out later */
+ putshort( at->cvar, 0xa000 ); /* tuple coords follow, private points in data */
+ for ( j=0; j<mm->axis_count; ++j )
+ putshort( at->cvar, rint(16384*mm->positions[i*mm->axis_count+j]) );
+ }
+ if ( ftell( at->cvar )!=8+cnt*tuple_size )
+ IError( "Data offset wrong" );
+
+ for ( i=cnt=0; i<mm->instance_count; ++i ) if ( deltas[i]!=NULL ) {
+ start = ftell(at->cvar);
+ for ( j=pcnt=0; j<ptcnt; ++j )
+ if ( deltas[i][j]!=0 )
+ ++pcnt;
+ pts = malloc(pcnt*sizeof(uint16));
+ for ( j=pcnt=0; j<ptcnt; ++j )
+ if ( deltas[i][j]!=0 )
+ pts[pcnt++]=j;
+
+ if ( pcnt>0x7f ) {
+ putc(0x80|(pcnt>>8), at->cvar );
+ putc(pcnt&0xff, at->cvar);
+ } else
+ putc(pcnt, at->cvar);
+ for ( j=0; j<pcnt; ) {
+ big = pts[j]>=0x80 ? 0x80 : 0;
+ for ( rj=j+1 ; rj<j+0x80 && rj<pcnt && !big; ++rj )
+ if ( pts[rj]-pts[rj-1]>=0x80 )
+ big = 0x80;
+
+ putc((rj-j-1)|big,at->cvar);
+ if ( big ) {
+ putshort(at->cvar,pts[j]);
+ for ( ++j; j<rj; ++j )
+ putshort(at->cvar,pts[j]-pts[j-1]);
+ } else {
+ putc(pts[j],at->cvar);
+ for ( ++j; j<rj; ++j )
+ putc(pts[j]-pts[j-1],at->cvar);
+ }
+ }
+ /* Now output the corresponding deltas for those points */
+ for ( j=0; j<pcnt; ) {
+ if ( deltas[i][j]>0x7f || deltas[i][j]<0x80 ) {
+ for ( rj=j+1; rj<j+0x40 && rj<pcnt; ++rj ) {
+ if ( deltas[i][pts[rj]]>0x7f || deltas[i][pts[rj]]<0x80 ||
+ (rj+1<j+0x40 && rj+1<pcnt && (deltas[i][pts[rj+1]]>0x7f || deltas[i][pts[rj+1]]<0x80)) )
+ /* Keep going with a big run */;
+ else
+ break;
+ }
+ putc( (rj-j-1)|0x40,at->cvar );
+ for ( ; j<rj ; ++j )
+ putshort( at->cvar, deltas[i][pts[j]] );
+ } else {
+ for ( rj=j+1; rj<j+0x40 && rj<pcnt; ++rj ) {
+ if ( deltas[i][pts[rj]]>0x7f || deltas[i][pts[rj]]<0x80 )
+ break;
+ }
+ putc( rj-j-1,at->cvar );
+ for ( ; j<rj ; ++j )
+ putc( deltas[i][pts[j]], at->cvar );
+ }
+ }
+ free(pts);
+ end = ftell(at->cvar);
+ fseek(at->cvar, 8+cnt*tuple_size, SEEK_SET);
+ putshort(at->cvar,end-start);
+ fseek(at->cvar, end, SEEK_SET);
+ ++cnt;
+ }
+
+ for ( i=0; i<mm->instance_count; ++i )
+ free( deltas[i] );
+ free(deltas);
+
+ at->cvarlen = ftell(at->cvar);
+ if ( at->cvarlen&1 )
+ putc('\0',at->cvar );
+ if ( ftell(at->cvar)&2 )
+ putshort(at->cvar,0);
+}
+
+static void dumpdeltas(struct alltabs *at,int16 *deltas,int ptcnt) {
+ int j,rj;
+
+ for ( j=0; j<ptcnt; ) {
+ for ( rj=j; rj<ptcnt && rj<j+0x40 && deltas[rj]==0; ++rj );
+ if ( rj!=j ) {
+ putc((rj-j-1)|0x80,at->gvar);
+ j = rj;
+ continue;
+ }
+ if ( deltas[j]>0x7f || deltas[j]<0x80 ) {
+ for ( rj=j+1; rj<j+0x40 && rj<ptcnt; ++rj ) {
+ if ( deltas[rj]>0x7f || deltas[rj]<0x80 ||
+ (rj+1<j+0x40 && rj+1<ptcnt && (deltas[rj+1]>0x7f || deltas[rj+1]<0x80)) )
+ /* Keep going with a big run */;
+ else
+ break;
+ }
+ putc( (rj-j-1)|0x40,at->gvar );
+ for ( ; j<rj ; ++j )
+ putshort( at->gvar, deltas[j] );
+ } else {
+ for ( rj=j+1; rj<j+0x40 && rj<ptcnt; ++rj ) {
+ if ( deltas[rj]>0x7f || deltas[rj]<0x80 ||
+ (deltas[rj]==0 && rj+1<j+0x40 && rj+1<ptcnt &&
+ deltas[rj+1]<=0x7f && deltas[rj+1]>=0x80 && deltas[rj+1]!=0 ))
+ break;
+ }
+ putc( rj-j-1,at->gvar );
+ for ( ; j<rj ; ++j )
+ putc( deltas[j], at->gvar );
+ }
+ }
+}
+
+static void ttf_dumpgvar(struct alltabs *at, MMSet *mm) {
+ int i,j, last;
+ uint32 gcoordoff, glyphoffs, start, here, tupledataend, tupledatastart;
+ int16 **deltas;
+ int ptcnt;
+
+ at->gvar = tmpfile2();
+ putlong( at->gvar, 0x00010000 ); /* Format */
+ putshort( at->gvar, mm->axis_count );
+ putshort( at->gvar, mm->instance_count ); /* Number of global tuples */
+ gcoordoff = ftell(at->gvar);
+ putlong( at->gvar, 0 ); /* Offset to global tuples, fix later */
+ putshort( at->gvar,at->maxp.numGlyphs );
+ putshort( at->gvar, 1 ); /* always output 32bit offsets */
+ putlong( at->gvar, ftell(at->gvar)+4 + (at->maxp.numGlyphs+1)*4);
+ glyphoffs = ftell(at->gvar);
+ for ( i=0; i<=at->maxp.numGlyphs; ++i )
+ putlong( at->gvar,0 );
+
+ start = ftell( at->gvar );
+ last = -1;
+ for ( i=0; i<at->gi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) {
+ deltas = SCFindDeltas(mm,at->gi.bygid[i],&ptcnt);
+ if ( deltas==NULL )
+ continue;
+ here = ftell(at->gvar);
+ fseek(at->gvar,glyphoffs+(last+1)*4,SEEK_SET);
+ for ( ; last< i; ++last )
+ putlong(at->gvar,here-start);
+ fseek(at->gvar,here,SEEK_SET);
+ putshort(at->gvar,mm->instance_count);
+ putshort(at->gvar,4+4*mm->instance_count); /* offset to data */
+ for ( j=0; j<mm->instance_count; ++j ) {
+ putshort(at->gvar,0); /* tuple data size, fix later */
+ putshort(at->gvar,0x2000|j); /* private points, tuple i */
+ }
+ for ( j=0; j<mm->instance_count; ++j ) {
+ tupledatastart = ftell(at->gvar);
+ putc('\0',at->gvar); /* Point list, all points */
+ dumpdeltas(at,deltas[2*j],ptcnt);
+ dumpdeltas(at,deltas[2*j+1],ptcnt);
+ tupledataend = ftell(at->gvar);
+ fseek(at->gvar,here+4+4*j,SEEK_SET);
+ putshort( at->gvar,tupledataend-tupledatastart);
+ fseek(at->gvar,tupledataend,SEEK_SET);
+ free(deltas[2*j]); free(deltas[2*j+1]);
+ }
+ free(deltas);
+ }
+ here = ftell(at->gvar);
+ fseek(at->gvar,glyphoffs+(last+1)*4,SEEK_SET);
+ for ( ; last< at->maxp.numGlyphs; ++last )
+ putlong(at->gvar,here-start);
+ fseek(at->gvar,gcoordoff,SEEK_SET);
+ putlong(at->gvar,here);
+ fseek(at->gvar,here,SEEK_SET);
+ for ( j=0; j<mm->instance_count; ++j ) {
+ for ( i=0; i<mm->axis_count; ++i )
+ putshort(at->gvar,rint(16384*mm->positions[j*mm->axis_count+i]));
+ }
+
+ at->gvarlen = ftell(at->gvar);
+ if ( at->gvarlen&1 )
+ putc('\0',at->gvar );
+ if ( ftell(at->gvar)&2 )
+ putshort(at->gvar,0);
+}
+
+
+static void ttf_dumpavar(struct alltabs *at, MMSet *mm) {
+ int i,j;
+
+ for ( i=0; i<mm->axis_count; ++i ) {
+ if ( mm->axismaps[i].points>3 )
+ break;
+ }
+ if ( i==mm->axis_count ) /* We only have simple axes */
+return; /* No need for a variation table */
+
+ at->avar = tmpfile2();
+ putlong( at->avar, 0x00010000 ); /* Format */
+ putlong( at->avar, mm->axis_count );
+ for ( i=0; i<mm->axis_count; ++i ) {
+ putshort( at->avar, mm->axismaps[i].points );
+ for ( j=0; j<mm->axismaps[i].points; ++j ) {
+ if ( mm->axismaps[i].designs[j]<mm->axismaps[i].def )
+ putshort( at->avar, (mm->axismaps[i].designs[j]-mm->axismaps[i].def)*16384/
+ (mm->axismaps[i].def-mm->axismaps[i].min));
+ else
+ putshort( at->avar, (mm->axismaps[i].designs[j]-mm->axismaps[i].def)*16384/
+ (mm->axismaps[i].max-mm->axismaps[i].def));
+ putshort( at->avar, mm->axismaps[i].blends[j]*16384);
+ }
+ }
+
+ at->avarlen = ftell(at->avar);
+ if ( at->avarlen&2 )
+ putshort(at->avar,0);
+}
+
+static uint32 AxisNameToTag(char *name) {
+ char buf[4];
+ int i;
+
+ if ( strmatch(name,"Weight")==0 )
+return( CHR('w','g','h','t'));
+ if ( strmatch(name,"Width")==0 )
+return( CHR('w','d','t','h'));
+ if ( strmatch(name,"OpticalSize")==0 )
+return( CHR('o','p','s','z'));
+ if ( strmatch(name,"Slant")==0 )
+return( CHR('s','l','n','t'));
+
+ memset(buf,0,sizeof(buf));
+ for ( i=0; i<4 && name[i]!='\0'; ++i )
+ buf[i] = name[i];
+return( CHR(buf[0],buf[1],buf[2],buf[3]));
+}
+
+static int AllocateStrId(struct alltabs *at,struct macname *mn) {
+ struct other_names *on;
+
+ if ( mn==NULL )
+return( 0 );
+
+ on = chunkalloc(sizeof(struct other_names));
+ on->strid = at->next_strid++;
+ on->mn = mn;
+ on->next = at->other_names;
+ at->other_names = on;
+return( on->strid );
+}
+
+static void ttf_dumpfvar(struct alltabs *at, MMSet *mm) {
+ int i,j;
+
+ at->fvar = tmpfile2();
+ putlong( at->fvar, 0x00010000 ); /* Format */
+ putshort( at->fvar, 16 ); /* Offset to first axis data */
+ putshort( at->fvar, 2 ); /* Size count pairs */
+ putshort( at->fvar, mm->axis_count );
+ putshort( at->fvar, 20 ); /* Size of each axis record */
+ putshort( at->fvar, mm->named_instance_count );
+ putshort( at->fvar, 4+4*mm->axis_count );
+
+ /* For each axis ... */
+ for ( i=0; i<mm->axis_count; ++i ) {
+ putlong( at->fvar, AxisNameToTag(mm->axes[i]) );
+ putlong( at->fvar, rint(mm->axismaps[i].min*65536));
+ putlong( at->fvar, rint(mm->axismaps[i].def*65536));
+ putlong( at->fvar, rint(mm->axismaps[i].max*65536));
+ putshort(at->fvar, 0 ); /* No flags defined for axes */
+ putshort(at->fvar, AllocateStrId(at,mm->axismaps[i].axisnames));
+ }
+
+ /* For each named font ... */
+ for ( i=0; i<mm->named_instance_count; ++i ) {
+ putshort(at->fvar, AllocateStrId(at,mm->named_instances[i].names));
+ putshort(at->fvar, 0 ); /* No flags here either */
+ for ( j=0; j<mm->axis_count; ++j )
+ putlong(at->fvar, rint(65536*mm->named_instances[i].coords[j]));
+ }
+
+ at->fvarlen = ftell(at->fvar);
+ if ( at->fvarlen&2 ) /* I don't think this is ever hit */
+ putshort(at->fvar,0);
+}
+
+void ttf_dumpvariations(struct alltabs *at, SplineFont *sf) {
+ MMSet *mm = sf->mm;
+ int i,j;
+
+ for ( j=0; j<sf->glyphcnt; ++j ) if ( sf->glyphs[j]!=NULL ) {
+ for ( i=0; i<mm->instance_count; ++i ) if ( mm->instances[i]->glyphs[j]!=NULL )
+ mm->instances[i]->glyphs[j]->ttf_glyph = sf->glyphs[j]->ttf_glyph;
+ }
+
+ ttf_dumpfvar(at,mm);
+ ttf_dumpgvar(at,mm);
+ ttf_dumpcvar(at,mm);
+ ttf_dumpavar(at,mm);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttf.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttf.h
new file mode 100644
index 00000000000..db19f5dc863
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttf.h
@@ -0,0 +1,871 @@
+/* Copyright (C) 2001-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#include "psfont.h" /* for struct fddata */
+
+#define MAC_DELETED_GLYPH_NAME "<Delete>"
+
+struct taxis {
+ uint32 tag;
+ real min, def, max; /* in user design space */
+ int nameid;
+ int paircount;
+ real *mapfrom; /* after conversion from [-1,1] */
+ real *mapto; /* secondary conversiont to [-1,1] */
+};
+
+struct tinstance {
+ int nameid;
+ real *coords; /* Location along axes array[axis_count] */
+};
+
+struct tuples {
+ real *coords; /* Location along axes array[axis_count] */
+ SplineChar **chars; /* Varied glyphs, array parallels one in info */
+ struct ttf_table *cvt;
+ KernClass *khead, *klast, *vkhead, *vklast; /* Varied kern classes */
+};
+
+struct variations {
+ int axis_count;
+ struct taxis *axes; /* Array of axis_count entries */
+ int instance_count; /* Not master designs, but named interpolations in design space */
+ struct tinstance *instances;
+ int tuple_count;
+ struct tuples *tuples;
+};
+
+enum gsub_inusetype { git_normal, git_justinuse, git_findnames };
+
+struct macidname {
+ int id;
+ struct macname *head, *last;
+ struct macidname *next;
+};
+
+struct savetab {
+ uint32 tag;
+ uint32 offset;
+ int len;
+};
+
+struct ttfinfo {
+ int emsize; /* ascent + descent? from the head table */
+ int ascent, descent; /* from the hhea table */
+ /* not the usWinAscent from the OS/2 table */
+ int vertical_origin; /* if vmetrics are present */
+ int width_cnt; /* from the hhea table, in the hmtx table */
+ int glyph_cnt; /* from maxp table (or cff table) */
+ unsigned int index_to_loc_is_long:1; /* in head table */
+ unsigned int is_ttc:1; /* Is it a font collection? */
+ unsigned int is_onebyte:1; /* Is it a one byte encoding? */
+ unsigned int twobytesymbol:1; /* it had a symbol encoding which we converted to unicode */
+ unsigned int complainedbeyondglyfend:1; /* Don't complain about this more than once */
+ unsigned int extensionrequested:1; /* Only ask once for a copy of a font containing extension subtables */
+ unsigned int to_order2:1; /* We are to leave the font as truetype (order2) splines, else convert to ps */
+ unsigned int complainedmultname:1; /* Don't complain about this more than once */
+ unsigned int strokedfont: 1; /* painttype==2 for otf */
+ unsigned int use_typo_metrics: 1;
+ unsigned int weight_width_slope_only: 1;
+ unsigned int optimized_for_cleartype: 1;
+ unsigned int apply_lsb: 1;
+ int sfntRevision;
+ enum openflags openflags;
+ /* Mac fonts platform=0/1, platform specific enc id, roman=0, english is lang code 0 */
+ /* iso platform=2, platform specific enc id, latin1=0/2, no language */
+ /* microsoft platform=3, platform specific enc id, 1, english is lang code 0x??09 */
+ char *copyright; /* from the name table, nameid=0 */
+ char *familyname; /* nameid=1 */
+ char *fullname; /* nameid=4 */
+ char *weight;
+ char *version; /* nameid=5 */
+ char *fontname; /* postscript font name, nameid=6 */
+ char *xuid; /* Only for open type cff fonts */
+ int uniqueid;
+ real italicAngle; /* from post table */
+ int upos, uwidth; /* underline pos, width from post table */
+ real strokewidth;
+ int fstype;
+ struct psdict *private; /* Only for open type cff fonts */
+ EncMap *map;
+ enum uni_interp uni_interp;
+ struct pfminfo pfminfo;
+ short os2_version;
+ short gasp_version;
+ int dupnamestate;
+ struct ttflangname *names;
+ char *fontcomments, *fontlog;
+ char **cvt_names;
+ SplineChar **chars; /* from all over, glyf table for contours */
+ /* cmap table for encodings */
+ /* hmtx table for widths */
+ /* post table for names */
+ /* Or from CFF table for everything in opentype */
+ LayerInfo *layers;
+ int layer_cnt;
+ BDFFont *bitmaps;
+ char *cidregistry, *ordering;
+ int supplement;
+ real cidfontversion;
+ int subfontcnt;
+ SplineFont **subfonts;
+ char *inuse; /* What glyphs are used by this font in the ttc */
+
+ int numtables;
+ /* BASE */
+ uint32 base_start; /* Offset from sof to start of 'BASE' table */
+ /* CFF */
+ uint32 cff_start; /* Offset from sof to start of postscript compact font format */
+ uint32 cff_length;
+ /* cmap */
+ uint32 encoding_start; /* Offset from sof to start of encoding table */
+ uint32 vs_start; /* Offset within 'cmap' to variant selector table */
+ /* gasp */
+ uint32 gasp_start;
+ /* glyf */
+ uint32 glyph_start; /* Offset from sof to start of glyph table */
+ uint32 glyph_length;
+ /* GDEF */
+ uint32 gdef_start; /* Offset from sof to start of GDEF table (glyph class defn, ligature carets) */
+ uint32 gdef_length;
+ /* GPOS */
+ uint32 gpos_start; /* Offset from sof to start of GPOS table */
+ uint32 gpos_length;
+ /* GSUB */
+ uint32 gsub_start; /* Offset from sof to start of GSUB table */
+ uint32 gsub_length;
+ uint32 g_bounds; /* Filled in with g???_start+g???_length */
+ /* EBDT, bdat */
+ uint32 bitmapdata_start; /* Offset to start of bitmap data */
+ uint32 bitmapdata_length;
+ /* EBLT, bloc */
+ uint32 bitmaploc_start; /* Offset to start of bitmap locator data */
+ uint32 bitmaploc_length;
+ /* gvar, etc. */
+ uint32 gvar_start, gvar_len;
+ uint32 fvar_start, fvar_len;
+ uint32 avar_start, avar_len;
+ uint32 cvar_start, cvar_len;
+ /* head */
+ uint32 head_start;
+ /* hhea */
+ uint32 hhea_start;
+ /* hmtx */
+ uint32 hmetrics_start;
+ /* JSTF */
+ uint32 jstf_start;
+ uint32 jstf_length;
+ /* kern */
+ uint32 kern_start;
+ /* loca */
+ uint32 glyphlocations_start;/* there are glyph_cnt of these, from maxp tab */
+ uint32 loca_length; /* actually glypn_cnt is wrong. Use the table length (divided by size) instead */
+ /* maxp */
+ uint32 maxp_start; /* maximum number of glyphs */
+ uint32 maxp_len;
+ /* name */
+ uint32 copyright_start; /* copyright and fontname */
+ /* post */
+ uint32 postscript_start; /* names for the glyphs, italic angle, etc. */
+ /* OS/2 */
+ uint32 os2_start;
+ /* TYP1 */
+ uint32 typ1_start; /* For Adobe's? Apple's? attempt to stuff a type1 font into an sfnt wrapper */
+ uint32 typ1_length;
+ /* vhea */
+ uint32 vhea_start;
+ /* vmtx */
+ uint32 vmetrics_start;
+ /* VORG */
+ uint32 vorg_start;
+
+ /* PfEd -- FontForge/PfaEdit specific info */
+ uint32 pfed_start;
+ /* TeX -- TeX table, also non-standard */
+ uint32 tex_start;
+ /* BDF -- BDF properties, also non-standard */
+ uint32 bdf_start;
+ /* FFTM -- FontForge timestamps */
+ uint32 fftm_start;
+
+ /* Apple Advanced Typography Tables */
+ uint32 prop_start;
+ uint32 lcar_start;
+ uint32 opbd_start;
+ uint32 acnt_start;
+ uint32 feat_start;
+ uint32 mort_start;
+ uint32 morx_start;
+ uint32 bsln_start;
+
+ /* MATH Table */
+ uint32 math_start;
+ uint32 math_length;
+
+ /* Info for instructions */
+ uint32 cvt_start, cvt_len;
+ uint32 prep_start, prep_len;
+ uint32 fpgm_start, fpgm_len;
+
+ unsigned int one_of_many: 1; /* A TTCF file, or a opentype font with multiple fonts */
+ unsigned int obscomplain: 1; /* We've complained about obsolete format 3 in EBDT table */
+ unsigned int cmpcomplain: 1; /* We've complained about compressed format 4 in EBDT */
+ unsigned int unkcomplain: 1; /* We've complained about unknown formats in EBDT */
+ unsigned int comcomplain: 1; /* We've complained about composit formats in EBDT */
+ unsigned int onlystrikes: 1; /* Only read in the bitmaps, not the outlines */
+ unsigned int onlyonestrike: 1; /* Only read in one bitmap (strike) */
+ unsigned int barecff: 1; /* pay attention to the encoding in the cff file, we won't have a cmap */
+ unsigned int wdthcomplain: 1; /* We've complained about advance widths exceding the max */
+ unsigned int bbcomplain: 1; /* We've complained about glyphs being outside the bounding box */
+ unsigned int gbbcomplain: 1; /* We've complained about points being outside the bounding box */
+
+ int platform, specific; /* values of the encoding we chose to use */
+
+ int anchor_class_cnt; /* For GPOS */
+ int anchor_merge_cnt;
+ AnchorClass *ahead, *alast;
+
+ KernClass *khead, *klast, *vkhead, *vklast;
+
+ OTLookup *gpos_lookups, *gsub_lookups, *cur_lookups;
+
+ OTLookup *mort_subs_lookup, *mort_pos_lookup2;
+ int mort_r2l, mort_tag_mac, mort_feat, mort_setting, mort_is_nested;
+ uint16 *morx_classes;
+ uint16 *bsln_values;
+
+ int mort_max;
+
+ struct ttf_table *tabs;
+ FPST *possub;
+ ASM *sm;
+ MacFeat *features;
+ char *chosenname;
+ int macstyle;
+ int lookup_cnt; /* Max lookup in current GPOS/GSUB table */
+ int feature_cnt; /* Max feature in current GPOS/GSUB table */
+ struct variations *variations;
+ struct macidname *macstrids;
+ struct fontdict *fd; /* For reading in Type42 fonts. Glyph names in postscript section must be associated with glyphs in TTF section */
+ int savecnt;
+ struct savetab *savetab;
+ int32 last_size_pos;
+ uint16 design_size;
+ uint16 fontstyle_id;
+ struct otfname *fontstyle_name;
+ uint16 design_range_bottom, design_range_top;
+ struct texdata texdata;
+ int mark_class_cnt;
+ char **mark_classes; /* glyph name list */
+ char **mark_class_names; /* used within ff (utf8) */
+ int mark_set_cnt;
+ char **mark_sets; /* glyph name list */
+ char **mark_set_names; /* used within ff (utf8) */
+ uint8 warned_morx_out_of_bounds_glyph;
+ int badgid_cnt, badgid_max; /* Used when parsing apple morx tables*/
+ SplineChar **badgids; /* which use out of range glyph IDs as temporary flags */
+ long long creationtime; /* seconds since 1970 */
+ long long modificationtime;
+ int gasp_cnt;
+ struct gasp *gasp;
+ struct MATH *math;
+ /* Set of errors we found when loading the font */
+ unsigned int bad_ps_fontname: 1;
+ unsigned int bad_glyph_data: 1;
+ unsigned int bad_cff: 1;
+ unsigned int bad_metrics: 1;
+ unsigned int bad_cmap: 1;
+ unsigned int bad_embedded_bitmap: 1;
+ unsigned int bad_gx: 1;
+ unsigned int bad_ot: 1;
+ unsigned int bad_os2_version: 1;
+ unsigned int bad_sfnt_header: 1;
+ Layer guidelines;
+ struct Base *horiz_base, *vert_base;
+ Justify *justify;
+
+ int advanceWidthMax;
+ int fbb[4]; /* x,yMin x,yMax*/
+ int isFixedPitch;
+
+ uint32 jstf_script;
+ uint32 jstf_lang;
+ int16 jstf_isShrink, jstf_prio, jstf_lcnt;
+ struct otffeatname *feat_names;
+ enum gsub_inusetype justinuse;
+ long ttfFileSize;
+};
+
+struct taboff {
+ uint32 tag; /* Table name */
+ uint32 checksum;/* for table */
+ uint32 offset; /* to start of table in file */
+ uint32 length;
+ FILE *data;
+ uint16 dup_of;
+ uint16 orderingval;
+};
+
+#define MAX_TAB 48
+struct tabdir {
+ int32 version; /* 0x00010000 */
+ uint16 numtab;
+ uint16 searchRange; /* (Max power of 2 <= numtab) *16 */
+ uint16 entrySel; /* Log2(Max power of 2 <= numtab ) */
+ uint16 rangeShift; /* numtab*16 - searchRange */
+ struct taboff tabs[MAX_TAB];/* room for all the tables */
+ /* Not in any particular order. */
+ struct taboff *ordered[MAX_TAB]; /* Ordered the way the tables should be output in file */
+ struct taboff *alpha[MAX_TAB]; /* Ordered alphabetically by tag for the ttf header */
+};
+
+struct glyphhead {
+ int16 numContours;
+ int16 xmin;
+ int16 ymin;
+ int16 xmax;
+ int16 ymax;
+};
+
+struct head {
+ int32 version; /* 0x00010000 */
+ int32 revision; /* 0 */
+ uint32 checksumAdj; /* set to 0, sum entire font, store 0xb1b0afba-sum */
+ uint32 magicNum; /* 0x5f0f3cf5 */
+ uint16 flags; /* 1 */
+ uint16 emunits; /* sf->ascent+sf->descent */
+ int32 createtime[2];/* number of seconds since 1904 */
+ int32 modtime[2];
+ int16 xmin; /* min for entire font */
+ int16 ymin;
+ int16 xmax;
+ int16 ymax;
+ uint16 macstyle; /* 1=>Bold, 2=>Italic */
+ uint16 lowestreadable; /* size in pixels. Say about 10? */
+ int16 dirhint; /* 0=>mixed directional characters, */
+ int16 locais32; /* is the location table 32bits or 16, 0=>16, 1=>32 */
+ int16 glyphformat; /* 0 */
+ uint16 mbz; /* padding */
+};
+
+struct hhead {
+ int32 version; /* 0x00010000 */
+ int16 ascender; /* sf->ascender */
+ int16 descender; /* -sf->descender */
+ int16 linegap; /* 0 */
+ int16 maxwidth; /* of all characters */
+ int16 minlsb; /* How is this different from xmin above? */
+ int16 minrsb;
+ int16 maxextent; /* How is this different from xmax above? */
+ int16 caretSlopeRise;/* Uh... let's say 1? */
+ int16 caretSlopeRun;/* Uh... let's say 0 */
+ /* not exactly specified, but FontValidator wants this to match italicangle */
+ int16 mbz[5];
+ int16 metricformat; /* 0 */
+ uint16 numMetrics; /* just set to glyph count */
+};
+
+struct kp {
+ uint16 left; /* left glyph num */
+ uint16 right; /* right glyph num */
+ /* table is ordered by these two above treated as uint32 */
+ int16 offset; /* kern amount */
+};
+
+struct kern {
+ uint16 version; /* 0 */
+ uint16 ntab; /* 1, number of subtables */
+ /* first (and only) subtable */
+ uint16 stversion; /* 0 */
+ uint16 length; /* length of subtable beginning at &stversion */
+ uint16 coverage; /* 1, (set of flags&format) */
+ uint16 nPairs; /* number of kern pairs */
+ uint16 searchRange; /* (Max power of 2 <= nPairs) *6 */
+ uint16 entrySel; /* Log2(Max power of 2 <= nPairs ) */
+ uint16 rangeShift; /* numtab*6 - searchRange */
+ struct kp *kerns; /* Array should be nPairs big */
+};
+
+struct maxp {
+ int32 version; /* 0x00010000 */
+ uint16 numGlyphs;
+ uint16 maxPoints; /* max number of points in a simple glyph */
+ uint16 maxContours; /* max number of paths in a simple glyph */
+ uint16 maxCompositPts;
+ uint16 maxCompositCtrs;
+ uint16 maxZones; /* 1 */
+ uint16 maxTwilightPts; /* 0 */
+ uint16 maxStorage; /* 0 */
+ uint16 maxFDEFs; /* 0 */
+ uint16 maxIDEFs; /* 0 */
+ uint16 maxStack; /* 0 */
+ uint16 maxglyphInstr;/* 0 */
+ uint16 maxnumcomponents; /* Maximum number of refs in any composit */
+ uint16 maxcomponentdepth;
+ /* Apple docs say: 0 (if no composits), maximum value 1 (one level of composit) */
+ /* OpenType docs say: 1 (if no composits), any depth allowed */
+};
+
+struct namerec {
+ uint16 platform; /* 3 => MS */
+ uint16 specific; /* 1 */
+ uint16 language; /* 0x0409 */
+ uint16 nameid; /* 0=>copyright, 1=>family, 2=>weight, 4=>fullname */
+ /* 5=>version, 6=>postscript name */
+ uint16 strlen;
+ uint16 stroff;
+};
+
+struct os2 {
+ uint16 version; /* 1 */
+ int16 avgCharWid; /* average all chars (v3) see v2 definition below */
+ uint16 weightClass; /* 100=>thin, 200=>extra-light, 300=>light, 400=>normal, */
+ /* 500=>Medium, 600=>semi-bold, 700=>bold, 800=>extra-bold, */
+ /* 900=>black */
+ uint16 widthClass; /* 75=>condensed, 100, 125=>expanded */
+ int16 fstype; /* 0x0008 => allow embedded editing */
+ int16 ysubXSize; /* emsize/5 */
+ int16 ysubYSize; /* emsize/5 */
+ int16 ysubXOff; /* 0 */
+ int16 ysubYOff; /* emsize/5 */
+ int16 ysupXSize; /* emsize/5 */
+ int16 ysupYSize; /* emsize/5 */
+ int16 ysupXOff; /* 0 */
+ int16 ysupYOff; /* emsize/5 */
+ int16 yStrikeoutSize; /* 102/2048 *emsize */
+ int16 yStrikeoutPos; /* 530/2048 *emsize */
+ int16 sFamilyClass; /* ??? 0 */
+ /* high order byte is the "class", low order byte the sub class */
+ /* class = 0 => no classification */
+ /* class = 1 => old style serifs */
+ /* subclass 0, no class; 1 ibm rounded; 2 garalde; 3 venetian; 4 mod venitian; 5 dutch modern; 6 dutch trad; 7 contemporary; 8 caligraphic; 15 misc */
+ /* class = 2 => transitional serifs */
+ /* subclass 0, no class; 1 drect line; 2 script; 15 misc */
+ /* class = 3 => modern serifs */
+ /* subclass: 1, italian; 2, script */
+ /* class = 4 => clarendon serifs */
+ /* subclass: 1, clarendon; 2, modern; 3 trad; 4 newspaper; 5 stub; 6 monotone; 7 typewriter */
+ /* class = 5 => slab serifs */
+ /* subclass: 1, monotone; 2, humanist; 3 geometric; 4 swiss; 5 typewriter */
+ /* class = 7 => freeform serifs */
+ /* subclass: 1, modern */
+ /* class = 8 => sans serif */
+ /* subclass: 1, ibm neogrotesque; 2 humanist; 3 low-x rounded; 4 high-x rounded; 5 neo-grotesque; 6 mod neo-grot; 9 typewriter; 10 matrix */
+ /* class = 9 => ornamentals */
+ /* subclass: 1, engraver; 2 black letter; 3 decorative; 4 3D */
+ /* class = 10 => scripts */
+ /* subclass: 1, uncial; 2 brush joined; 3 formal joined; 4 monotone joined; 5 calligraphic; 6 brush unjoined; 7 formal unjoined; 8 monotone unjoined */
+ /* class = 12 => symbolic */
+ /* subclass: 3 mixed serif; 6 old style serif; 7 neo-grotesque sans; */
+ char panose[10]; /* can be set to zero */
+ uint32 unicoderange[4];
+ /* 1<<0=>ascii, 1<<1 => latin1, 2=>100-17f, 3=>180-24f, 4=>250-2af */
+ /* 5=> 2b0-2ff, 6=>300-36f, ... */
+ char achVendID[4]; /* can be zero */
+ uint16 fsSel; /* 1=> italic, 32=>bold, 64 => regular */
+ /* 2=>underscore, 4=>negative, 8->outlined, 16=>strikeout */
+ /* version 4 of OS/2 */
+ /* 128->don't use win_ascent/descent for line spacing */
+ /* 256=>family varies on weight width slope only */
+ /* 512=>oblique (as opposed to italic) */
+ uint16 firstcharindex; /* minimum unicode encoding */
+ uint16 lastcharindex; /* maximum unicode encoding */
+ uint16 ascender; /* font ascender height (not ascent) */
+ uint16 descender; /* font descender height */
+ uint16 linegap; /* 0 */
+ uint16 winascent; /* ymax */
+ uint16 windescent; /* ymin */
+ uint32 ulCodePage[2];
+ /* 1<<0 => latin1, 1<<1=>latin2, cyrillic, greek, turkish, hebrew, arabic */
+ /* 1<<30 => mac, 1<<31 => symbol */
+ /* OTF stuff (version 2 of OS/2) */
+ short xHeight;
+ short capHeight;
+ short defChar;
+ short breakChar;
+ short maxContext;
+ /* V3 of OS/2 has no additional data */
+ /* V4 of OS/2 has no additional data */
+
+ int v1_avgCharWid; /* 1&2 Weighted average of the lower case letters and space */
+ int v3_avgCharWid; /* 3&4 average over all non-zero width glyphs */
+};
+
+struct glyphinfo {
+ struct maxp *maxp; /* this one is given to dumpglyphs, rest blank */
+ uint32 *loca;
+ FILE *glyphs;
+ FILE *hmtx;
+ int hmtxlen;
+ FILE *vmtx;
+ int vmtxlen;
+ int next_glyph;
+ int glyph_len;
+ int xmin, ymin, xmax, ymax;
+ BlueData bd;
+ int strikecnt; /* number of bitmaps to dump */
+ int lasthwidth, lastvwidth; /* encoding of last glyph for which we generate a full metrics entry */
+ int hfullcnt, vfullcnt;
+ int flags;
+ int fixed_width;
+ int32 *bsizes;
+ unsigned int dovariations: 1;
+ unsigned int onlybitmaps: 1;
+ unsigned int has_instrs: 1;
+ unsigned int is_ttf: 1;
+ unsigned int ttc_composite_font: 1;
+ SplineFont *sf;
+ int32 *pointcounts;
+ int *bygid; /* glyph list */
+ int gcnt;
+ int layer;
+};
+
+struct vorg {
+ uint16 majorVersion; /* 1 */
+ uint16 minorVersion; /* 0 */
+ short defaultVertOriginY; /* Y coord of default vertical origin in the design coordinate system */
+ uint16 numVertOriginYMetrics; /* exceptions to the above, elements in following array */
+};
+
+struct feat_name {
+ int strid;
+ struct macname *mn, *smn;
+};
+
+struct other_names {
+ int strid;
+ struct macname *mn;
+ struct other_names *next;
+};
+
+struct alltabs {
+ struct tabdir tabdir;
+ struct head head;
+ struct hhead hhead;
+ struct hhead vhead;
+ struct maxp maxp;
+ struct os2 os2;
+ struct vorg vorg;
+ FILE *loca;
+ int localen;
+ FILE *name;
+ int namelen;
+ FILE *post;
+ int postlen;
+ FILE *gpos; /* Used instead of kern for opentype (and other glyph positioning) */
+ int gposlen;
+ FILE *gsub; /* Used for ligatures and other substitutions */
+ int gsublen;
+ FILE *gdef; /* If we use mark to base we need this to tell the text processor what things are marks (the opentype docs say it is optional. They are wrong) */
+ int gdeflen;
+ FILE *kern;
+ int kernlen;
+ FILE *cmap;
+ int cmaplen;
+ FILE *headf;
+ int headlen;
+ FILE *hheadf;
+ int hheadlen;
+ FILE *maxpf;
+ int maxplen;
+ FILE *os2f;
+ int os2len;
+ FILE *math;
+ int mathlen;
+ FILE *base;
+ int baselen;
+ FILE *jstf;
+ int jstflen;
+ FILE *cvtf;
+ int cvtlen;
+ FILE *fpgmf; /* Copied from an original ttf file and dumped out. Never generated */
+ int fpgmlen;
+ FILE *prepf; /* Copied from an original ttf file and dumped out. Never generated */
+ int preplen;
+ FILE *vheadf;
+ int vheadlen;
+ FILE *vorgf;
+ int vorglen;
+ FILE *gaspf;
+ int gasplen;
+ FILE *cfff;
+ int cfflen;
+ FILE *sidf;
+ FILE *sidh;
+ FILE *charset;
+ FILE *encoding;
+ FILE *globalsubrs;
+ FILE *private;
+ FILE *charstrings;
+ FILE *fdselect;
+ FILE *fdarray;
+ FILE *bdat; /* might be EBDT */
+ int bdatlen;
+ FILE *bloc; /* might be EBLC */
+ int bloclen;
+ FILE *ebsc;
+ int ebsclen;
+ FILE *prop;
+ int proplen;
+ FILE *opbd;
+ int opbdlen;
+ FILE *acnt;
+ int acntlen;
+ FILE *lcar;
+ int lcarlen;
+ FILE *feat;
+ int featlen;
+ FILE *morx;
+ int morxlen;
+ FILE *bsln;
+ int bslnlen;
+ FILE *pfed;
+ int pfedlen;
+ FILE *tex;
+ int texlen;
+ FILE *bdf;
+ int bdflen;
+ FILE *gvar;
+ int gvarlen;
+ FILE *fvar;
+ int fvarlen;
+ FILE *cvar;
+ int cvarlen;
+ FILE *avar;
+ int avarlen;
+ FILE *fftmf;
+ int fftmlen;
+ FILE *dsigf;
+ int dsiglen;
+ FILE *hdmxf;
+ int hdmxlen;
+ int defwid, nomwid;
+ int sidcnt;
+ int lenpos;
+ int privatelen;
+ unsigned int sidlongoffset: 1;
+ unsigned int cfflongoffset: 1;
+ unsigned int applemode: 1; /* Where apple & ms differ do things apple's way (bitmaps, name table PostScript) */
+ unsigned int opentypemode: 1; /* Where apple & ms differ do things opentype's way (bitmaps, name table PostScript) */
+ /* If both are set then try to generate both types of tables. Some things can't be fudged though (name table postscript) */
+ unsigned int msbitmaps: 1;
+ unsigned int applebitmaps: 1;
+ unsigned int otbbitmaps: 1;
+ unsigned int isotf: 1;
+ unsigned int dovariations: 1; /* Output Apple *var tables (for mm fonts) */
+ unsigned int error: 1;
+ struct glyphinfo gi;
+ int isfixed;
+ struct fd2data *fds;
+ int next_strid;
+
+ struct feat_name *feat_name;
+ struct other_names *other_names;
+ struct macname2 *ordered_feat;
+
+ int next_lookup; /* for doing nested lookups in contextual features */
+ short *gn_sid;
+ enum fontformat format;
+ int fontstyle_name_strid; /* For GPOS 'size' */
+ SplineFont *sf;
+ EncMap *map;
+ struct ttf_table *oldcvt;
+ unsigned oldcvtlen;
+};
+
+struct subhead { uint16 first, cnt, delta, rangeoff; }; /* a sub header in 8/16 cmap table */
+
+enum touchflags { tf_x=1, tf_y=2, tf_d=4, tf_endcontour=0x80, tf_startcontour=0x40 };
+
+struct ct_branch {
+ uint16 classnum;
+ struct contexttree *branch;
+};
+
+struct ct_subs {
+ struct fpst_rule *rule;
+ struct contexttree *branch;/* if the rule ends here this will be null */
+ uint16 thisclassnum;
+};
+
+struct contexttree {
+ int depth;
+ int branch_cnt; /* count of subbranches of this node */
+ struct ct_branch *branches;
+ struct fpst_rule *ends_here;
+ int rule_cnt; /* count of rules which are active here */
+ struct ct_subs *rules;
+ int pending_pos;
+ OTLookup *applymarkedsubs;
+ OTLookup *applycursubs;
+ uint16 marked_index, cur_index;
+ uint8 markme;
+ int state, next_state;
+ struct contexttree *parent;
+};
+
+ /* TrueType Composite glyph flags */
+#define _ARGS_ARE_WORDS 1
+#define _ARGS_ARE_XY 2
+#define _ROUND 4 /* round offsets so componant is on grid */
+#define _SCALE 8
+/* 0x10 is reserved */
+#define _MORE 0x20
+#define _XY_SCALE 0x40
+#define _MATRIX 0x80
+#define _INSTR 0x100
+#define _USE_MY_METRICS 0x200
+#define _OVERLAP_COMPOUND 0x400 /* Used in Apple GX fonts */
+ /* Means the components overlap (which? this one and what other?) */
+/* Described in OpenType specs, not by Apple */
+/* amusingly, Apple supports but MS does not */
+/* MS says they support this after Win 2000 */
+#define _SCALED_OFFSETS 0x800 /* Use Apple definition of offset interpretation */
+#define _UNSCALED_OFFSETS 0x1000 /* Use MS definition */
+
+extern int ttfFixupRef(SplineChar **chars,int i);
+extern const char *cffnames[];
+extern const int nStdStrings;
+
+ /* Open type Advanced Typography Tables */
+extern void otf_dumpgpos(struct alltabs *at, SplineFont *sf);
+extern void otf_dumpgsub(struct alltabs *at, SplineFont *sf);
+extern void otf_dumpgdef(struct alltabs *at, SplineFont *sf);
+extern void otf_dumpbase(struct alltabs *at, SplineFont *sf);
+extern void otf_dumpjstf(struct alltabs *at, SplineFont *sf);
+extern void otf_dump_dummydsig(struct alltabs *at, SplineFont *sf);
+extern int gdefclass(SplineChar *sc);
+
+extern void ttf_dumpkerns(struct alltabs *at, SplineFont *sf);
+extern void aat_dumplcar(struct alltabs *at, SplineFont *sf);
+extern void aat_dumpmorx(struct alltabs *at, SplineFont *sf);
+extern void aat_dumpopbd(struct alltabs *at, SplineFont *sf);
+extern void aat_dumpprop(struct alltabs *at, SplineFont *sf);
+extern void aat_dumpbsln(struct alltabs *at, SplineFont *sf);
+extern int LookupHasDefault(OTLookup *otl);
+extern int scriptsHaveDefault(struct scriptlanglist *sl);
+extern int FPSTisMacable(SplineFont *sf, FPST *fpst);
+
+extern int OTTagToMacFeature(uint32 tag, int *featureType,int *featureSetting);
+extern uint16 *props_array(SplineFont *sf,struct glyphinfo *gi);
+extern int haslrbounds(SplineChar *sc, PST **left, PST **right);
+extern int16 *PerGlyphDefBaseline(SplineFont *sf,int *def_baseline);
+extern void FigureBaseOffsets(SplineFont *sf,int def_bsln,int offsets[32]);
+
+ /* Apple variation tables */
+extern int ContourPtNumMatch(MMSet *mm, int gid);
+extern int16 **SCFindDeltas(MMSet *mm, int gid, int *_ptcnt);
+extern int16 **CvtFindDeltas(MMSet *mm, int *_ptcnt);
+extern void ttf_dumpvariations(struct alltabs *at, SplineFont *sf);
+
+extern struct macsettingname {
+ int mac_feature_type;
+ int mac_feature_setting;
+ uint32 otf_tag;
+} macfeat_otftag[], *user_macfeat_otftag;
+
+ /* TrueType instructions */
+extern struct ttf_table *SFFindTable(SplineFont *sf,uint32 tag);
+
+extern int memushort(uint8 *data,int table_len, int offset);
+extern void memputshort(uint8 *data,int offset,uint16 val);
+extern int TTF__getcvtval(SplineFont *sf,int val);
+extern int TTF_getcvtval(SplineFont *sf,int val);
+
+extern int SSAddPoints(SplineSet *ss,int ptcnt,BasePoint *bp, char *flags);
+extern int Macable(SplineFont *sf, OTLookup *otl);
+
+ /* Used by both otf and apple */
+extern int LigCaretCnt(SplineChar *sc);
+extern uint16 *ClassesFromNames(SplineFont *sf,char **classnames,int class_cnt,
+ int numGlyphs, SplineChar ***glyphs, int apple_kc);
+extern SplineChar **SFGlyphsFromNames(SplineFont *sf,char *names);
+
+
+extern SplineChar **EntryExitDecompose(SplineFont *sf,AnchorClass *ac,
+ struct glyphinfo *gi);
+extern void AnchorClassDecompose(SplineFont *sf,AnchorClass *_ac, int classcnt, int *subcnts,
+ SplineChar ***marks,SplineChar ***base,
+ SplineChar ***lig,SplineChar ***mkmk,
+ struct glyphinfo *gi);
+
+extern void cvt_unix_to_1904( long long time, int32 result[2]);
+
+
+ /* Non-standard tables */
+ /* My PfEd table for FontForge/PfaEdit specific info */
+extern void pfed_dump(struct alltabs *at, SplineFont *sf);
+extern void pfed_read(FILE *ttf,struct ttfinfo *info);
+ /* The TeX table, to contain stuff the TeX people want */
+extern void tex_dump(struct alltabs *at, SplineFont *sf);
+extern void tex_read(FILE *ttf,struct ttfinfo *info);
+
+extern void ttf_bdf_read(FILE *ttf,struct ttfinfo *info);
+ /* The FFTM table, to some timestamps I'd like */
+extern int ttf_fftm_dump(SplineFont *sf,struct alltabs *at);
+
+ /* The MATH table */
+extern void otf_dump_math(struct alltabs *at, SplineFont *sf);
+
+/* Known font parameters for 'TeX ' table (fontdims, spacing params, whatever you want to call them) */
+ /* Used by all fonts */
+#define TeX_Slant CHR('S','l','n','t')
+#define TeX_Space CHR('S','p','a','c')
+#define TeX_Stretch CHR('S','t','r','e')
+#define TeX_Shrink CHR('S','h','n','k')
+#define TeX_XHeight CHR('X','H','g','t')
+#define TeX_Quad CHR('Q','u','a','d')
+ /* Used by text fonts */
+#define TeX_ExtraSp CHR('E','x','S','p')
+ /* Used by all math fonts */
+#define TeX_MathSp CHR('M','t','S','p')
+ /* Used by math fonts */
+#define TeX_Num1 CHR('N','u','m','1')
+#define TeX_Num2 CHR('N','u','m','2')
+#define TeX_Num3 CHR('N','u','m','3')
+#define TeX_Denom1 CHR('D','n','m','1')
+#define TeX_Denom2 CHR('D','n','m','2')
+#define TeX_Sup1 CHR('S','u','p','1')
+#define TeX_Sup2 CHR('S','u','p','2')
+#define TeX_Sup3 CHR('S','u','p','3')
+#define TeX_Sub1 CHR('S','u','b','1')
+#define TeX_Sub2 CHR('S','u','b','2')
+#define TeX_SupDrop CHR('S','p','D','p')
+#define TeX_SubDrop CHR('S','b','D','p')
+#define TeX_Delim1 CHR('D','l','m','1')
+#define TeX_Delim2 CHR('D','l','m','2')
+#define TeX_AxisHeight CHR('A','x','H','t')
+ /* Used by math extension fonts */
+#define TeX_DefRuleThick CHR('R','l','T','k')
+#define TeX_BigOpSpace1 CHR('B','O','S','1')
+#define TeX_BigOpSpace2 CHR('B','O','S','2')
+#define TeX_BigOpSpace3 CHR('B','O','S','3')
+#define TeX_BigOpSpace4 CHR('B','O','S','4')
+#define TeX_BigOpSpace5 CHR('B','O','S','5')
+
+extern void SFDummyUpCIDs(struct glyphinfo *gi,SplineFont *sf);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.c
new file mode 100644
index 00000000000..727ac285383
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.c
@@ -0,0 +1,473 @@
+/* Copyright (C) 2001-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforgevw.h"
+#include <utype.h>
+#include "ttf.h"
+#include "ttfinstrs.h"
+
+const char *ff_ttf_instrnames[] = {
+ "SVTCA[y-axis]",
+ "SVTCA[x-axis]",
+ "SPVTCA[y-axis]",
+ "SPVTCA[x-axis]",
+ "SFVTCA[y-axis]",
+ "SFVTCA[x-axis]",
+ "SPVTL[parallel]",
+ "SPVTL[orthog]",
+ "SFVTL[parallel]",
+ "SFVTL[orthog]",
+ "SPVFS",
+ "SFVFS",
+ "GPV",
+ "GFV",
+ "SFVTPV",
+ "ISECT",
+ "SRP0",
+ "SRP1",
+ "SRP2",
+ "SZP0",
+ "SZP1",
+ "SZP2",
+ "SZPS",
+ "SLOOP",
+ "RTG",
+ "RTHG",
+ "SMD",
+ "ELSE",
+ "JMPR",
+ "SCVTCI",
+ "SSWCI",
+ "SSW",
+ "DUP",
+ "POP",
+ "CLEAR",
+ "SWAP",
+ "DEPTH",
+ "CINDEX",
+ "MINDEX",
+ "ALIGNPTS",
+ "Unknown28",
+ "UTP",
+ "LOOPCALL",
+ "CALL",
+ "FDEF",
+ "ENDF",
+ "MDAP[no-rnd]",
+ "MDAP[rnd]",
+ "IUP[y]",
+ "IUP[x]",
+ "SHP[rp2]",
+ "SHP[rp1]",
+ "SHC[rp2]",
+ "SHC[rp1]",
+ "SHZ[rp2]",
+ "SHZ[rp1]",
+ "SHPIX",
+ "IP",
+ "MSIRP[no-rp0]",
+ "MSIRP[rp0]",
+ "ALIGNRP",
+ "RTDG",
+ "MIAP[no-rnd]",
+ "MIAP[rnd]",
+ "NPUSHB",
+ "NPUSHW",
+ "WS",
+ "RS",
+ "WCVTP",
+ "RCVT",
+ "GC[cur]",
+ "GC[orig]",
+ "SCFS",
+ "MD[grid]",
+ "MD[orig]",
+ "MPPEM",
+ "MPS",
+ "FLIPON",
+ "FLIPOFF",
+ "DEBUG",
+ "LT",
+ "LTEQ",
+ "GT",
+ "GTEQ",
+ "EQ",
+ "NEQ",
+ "ODD",
+ "EVEN",
+ "IF",
+ "EIF",
+ "AND",
+ "OR",
+ "NOT",
+ "DELTAP1",
+ "SDB",
+ "SDS",
+ "ADD",
+ "SUB",
+ "DIV",
+ "MUL",
+ "ABS",
+ "NEG",
+ "FLOOR",
+ "CEILING",
+ "ROUND[Grey]",
+ "ROUND[Black]",
+ "ROUND[White]",
+ "ROUND[Undef4]",
+ "NROUND[Grey]",
+ "NROUND[Black]",
+ "NROUND[White]",
+ "NROUND[Undef4]",
+ "WCVTF",
+ "DELTAP2",
+ "DELTAP3",
+ "DELTAC1",
+ "DELTAC2",
+ "DELTAC3",
+ "SROUND",
+ "S45ROUND",
+ "JROT",
+ "JROF",
+ "ROFF",
+ "Unknown7B",
+ "RUTG",
+ "RDTG",
+ "SANGW",
+ "AA",
+ "FLIPPT",
+ "FLIPRGON",
+ "FLIPRGOFF",
+ "Unknown83",
+ "Unknown84",
+ "SCANCTRL",
+ "SDPVTL[parallel]",
+ "SDPVTL[orthog]",
+ "GETINFO",
+ "IDEF",
+ "ROLL",
+ "MAX",
+ "MIN",
+ "SCANTYPE",
+ "INSTCTRL",
+ "Unknown8F",
+ "Unknown90",
+ "Unknown91",
+ "Unknown92",
+ "Unknown93",
+ "Unknown94",
+ "Unknown95",
+ "Unknown96",
+ "Unknown97",
+ "Unknown98",
+ "Unknown99",
+ "Unknown9A",
+ "Unknown9B",
+ "Unknown9C",
+ "Unknown9D",
+ "Unknown9E",
+ "Unknown9F",
+ "UnknownA0",
+ "UnknownA1",
+ "UnknownA2",
+ "UnknownA3",
+ "UnknownA4",
+ "UnknownA5",
+ "UnknownA6",
+ "UnknownA7",
+ "UnknownA8",
+ "UnknownA9",
+ "UnknownAA",
+ "UnknownAB",
+ "UnknownAC",
+ "UnknownAD",
+ "UnknownAE",
+ "UnknownAF",
+ "PUSHB_1",
+ "PUSHB_2",
+ "PUSHB_3",
+ "PUSHB_4",
+ "PUSHB_5",
+ "PUSHB_6",
+ "PUSHB_7",
+ "PUSHB_8",
+ "PUSHW_1",
+ "PUSHW_2",
+ "PUSHW_3",
+ "PUSHW_4",
+ "PUSHW_5",
+ "PUSHW_6",
+ "PUSHW_7",
+ "PUSHW_8",
+ "MDRP[grey]",
+ "MDRP[black]",
+ "MDRP[white]",
+ "MDRP03",
+ "MDRP[rnd,grey]",
+ "MDRP[rnd,black]",
+ "MDRP[rnd,white]",
+ "MDRP07",
+ "MDRP[min,grey]",
+ "MDRP[min,black]",
+ "MDRP[min,white]",
+ "MDRP0b",
+ "MDRP[min,rnd,grey]",
+ "MDRP[min,rnd,black]",
+ "MDRP[min,rnd,white]",
+ "MDRP0f",
+ "MDRP[rp0,grey]",
+ "MDRP[rp0,black]",
+ "MDRP[rp0,white]",
+ "MDRP13",
+ "MDRP[rp0,rnd,grey]",
+ "MDRP[rp0,rnd,black]",
+ "MDRP[rp0,rnd,white]",
+ "MDRP17",
+ "MDRP[rp0,min,grey]",
+ "MDRP[rp0,min,black]",
+ "MDRP[rp0,min,white]",
+ "MDRP1b",
+ "MDRP[rp0,min,rnd,grey]",
+ "MDRP[rp0,min,rnd,black]",
+ "MDRP[rp0,min,rnd,white]",
+ "MDRP1f",
+ "MIRP[grey]",
+ "MIRP[black]",
+ "MIRP[white]",
+ "MIRP03",
+ "MIRP[rnd,grey]",
+ "MIRP[rnd,black]",
+ "MIRP[rnd,white]",
+ "MIRP07",
+ "MIRP[min,grey]",
+ "MIRP[min,black]",
+ "MIRP[min,white]",
+ "MIRP0b",
+ "MIRP[min,rnd,grey]",
+ "MIRP[min,rnd,black]",
+ "MIRP[min,rnd,white]",
+ "MIRP0f",
+ "MIRP[rp0,grey]",
+ "MIRP[rp0,black]",
+ "MIRP[rp0,white]",
+ "MIRP13",
+ "MIRP[rp0,rnd,grey]",
+ "MIRP[rp0,rnd,black]",
+ "MIRP[rp0,rnd,white]",
+ "MIRP17",
+ "MIRP[rp0,min,grey]",
+ "MIRP[rp0,min,black]",
+ "MIRP[rp0,min,white]",
+ "MIRP1b",
+ "MIRP[rp0,min,rnd,grey]",
+ "MIRP[rp0,min,rnd,black]",
+ "MIRP[rp0,min,rnd,white]",
+ "MIRP1f"
+};
+
+enum byte_types { bt_instr, bt_cnt, bt_byte, bt_wordhi, bt_wordlo, bt_impliedreturn };
+
+
+uint8 *_IVParse(SplineFont *sf, char *text, int *len,
+ void (*IVError)(void *,char *, int), void *iv) {
+ short numberstack[256];
+ int npos=0, nread, i;
+ int push_left= 0, push_size=0;
+ char *pt;
+ char *end, *bend, *brack;
+ int icnt=0, imax=strlen(text)/2, val, temp;
+ uint8 *instrs = malloc(imax);
+
+ for ( pt = text; *pt ; ++pt ) {
+ npos = 0;
+ while ( npos<256 ) {
+ while ( *pt==' ' || *pt=='\t' ) ++pt;
+ if ( isdigit( *pt ) || *pt=='-' ) {
+ val = strtol(pt,&end,0);
+ if ( val>32767 || val<-32768 ) {
+ IVError(iv,_("A value must be between [-32768,32767]"),pt-text);
+return( NULL );
+ }
+
+ pt = end;
+
+ if ( *pt == '@' ) { /* a delta control byte */
+ if ( val>8 || val<-8 || val==0 ) {
+ IVError(iv,_("A value must be between [-8,-1] or [1,8]"),pt-text);
+return( NULL );
+ }
+
+ pt++;
+
+ if ( !isdigit( *pt ) ) {
+ IVError(iv,_("Number expected"),pt-text);
+return( NULL );
+ }
+
+ temp = val;
+ val = strtol(pt,&end,0);
+
+ if ( val>15 || val<0 ) {
+ IVError(iv,_("A value must be between [0,15]"),pt-text);
+return( NULL );
+ }
+
+ val *= 16;
+ if (temp < 0) temp += 8;
+ else temp += 7;
+ val += temp;
+ pt = end;
+ }
+
+ numberstack[npos++] = val;
+ } else if ( strnmatch(pt,"cvt",3)==0 ) {
+ pt += 3;
+ while ( *pt==' ' || *pt=='\t' ) ++pt;
+ if ( *pt!='(' ) {
+ IVError(iv,_("Missing left parenthesis in command to get a cvt index"),pt-text);
+return( NULL );
+ }
+ temp = strtol(pt+1,&end,0);
+ pt = end;
+ while ( *pt==' ' || *pt=='\t' ) ++pt;
+ if ( *pt!=')' ) {
+ IVError(iv,_("Missing right paren in command to get a cvt index"),pt-text);
+return( NULL );
+ }
+ numberstack[npos++] = TTF__getcvtval(sf,temp);
+ ++pt;
+ } else
+ break;
+ }
+ while ( *pt==' ' || *pt=='\t' ) ++pt;
+ if ( npos==0 && (*pt=='\r' || *pt=='\n' || *pt=='\0') )
+ continue;
+ nread = 0;
+ if ( push_left==-1 ) {
+ /* we need a push count */
+ if ( npos==0 )
+ IVError(iv,_("Expected a number for a push count"),pt-text);
+ else if ( numberstack[0]>255 || numberstack[0]<=0 ) {
+ IVError(iv,_("The push count must be a number between 0 and 255"),pt-text);
+return( NULL );
+ } else {
+ nread = 1;
+ instrs[icnt++] = numberstack[0];
+ push_left = numberstack[0];
+ }
+ }
+ if ( push_left!=0 && push_left<npos-nread && (*pt=='\r' || *pt=='\n' || *pt=='\0') ) {
+ IVError(iv,_("More pushes specified than needed"),pt-text);
+return( NULL );
+ }
+ while ( push_left>0 && nread<npos ) {
+ if ( push_size==2 ) {
+ instrs[icnt++] = numberstack[nread]>>8;
+ instrs[icnt++] = numberstack[nread++]&0xff;
+ } else if ( numberstack[0]>255 || numberstack[0]<0 ) {
+ IVError(iv,_("A value to be pushed by a byte push must be between 0 and 255"),pt-text);
+return( NULL );
+ } else
+ instrs[icnt++] = numberstack[nread++];
+ --push_left;
+ }
+ if ( nread<npos && push_left==0 && (*pt=='\r' || *pt=='\n' || *pt=='\0')) {
+ IVError(iv,_("Unexpected number"),pt-text);
+return( NULL );
+ }
+ if ( *pt=='\r' || *pt=='\n' || *pt=='\0' )
+ continue;
+ if ( push_left>0 ) {
+ IVError(iv,_("Missing pushes"),pt-text);
+return( NULL );
+ }
+ while ( nread<npos ) {
+ i = nread;
+ if ( numberstack[nread]>=0 && numberstack[nread]<=255 ) {
+ while ( i<npos && numberstack[i]>=0 && numberstack[i]<=255 )
+ ++i;
+ if ( i-nread<=8 )
+ instrs[icnt++] = ttf_pushb+(i-nread)-1;
+ else {
+ instrs[icnt++] = ttf_npushb;
+ instrs[icnt++] = i-nread;
+ }
+ while ( nread<i )
+ instrs[icnt++] = numberstack[nread++];
+ } else {
+ while ( i<npos && (numberstack[i]<0 || numberstack[i]>255) )
+ ++i;
+ if ( i-nread<=8 )
+ instrs[icnt++] = ttf_pushw+(i-nread)-1;
+ else {
+ instrs[icnt++] = ttf_npushw;
+ instrs[icnt++] = i-nread;
+ }
+ while ( nread<i ) {
+ instrs[icnt++] = numberstack[nread]>>8;
+ instrs[icnt++] = numberstack[nread++]&0xff;
+ }
+ }
+ }
+ brack = NULL;
+ for ( end= pt; *end!='\r' && *end!='\n' && *end!=' ' && *end!='\0'; ++end )
+ if ( *end=='[' || *end=='_' ) brack=end;
+ for ( i=0; i<256; ++i )
+ if ( strnmatch(pt,ff_ttf_instrnames[i],end-pt)==0 && end-pt==strlen(ff_ttf_instrnames[i]))
+ break;
+ if ( i==256 && brack!=NULL ) {
+ for ( i=0; i<256; ++i )
+ if ( strnmatch(pt,ff_ttf_instrnames[i],brack-pt+1)==0 )
+ break;
+ val = strtol(brack+1,&bend,2); /* Stuff in brackets should be in binary */
+ while ( *bend==' ' || *bend=='\t' ) ++bend;
+ if ( *bend!=']' ) {
+ IVError(iv,_("Missing right bracket in command (or bad binary value in bracket)"),pt-text);
+return( NULL );
+ }
+ if ( val>=32 ) {
+ IVError(iv,_("Bracketted value is too large"),pt-text);
+return( NULL );
+ }
+ i += val;
+ }
+ pt = end;
+ instrs[icnt++] = i;
+ if ( i==ttf_npushb || i==ttf_npushw || (i>=ttf_pushb && i<=ttf_pushw+7)) {
+ push_size = (i==ttf_npushb || (i>=ttf_pushb && i<=ttf_pushb+7))? 1 : 2;
+ if ( i==ttf_npushb || i==ttf_npushw )
+ push_left = -1;
+ else if ( i>=ttf_pushb && i<=ttf_pushb+7 )
+ push_left = i-ttf_pushb+1;
+ else
+ push_left = i-ttf_pushw+1;
+ }
+ if ( *pt=='\0' )
+ break;
+ }
+ *len = icnt;
+return( realloc(instrs,icnt==0?1:icnt)); /* some versions of realloc abort on 0 */
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.h
new file mode 100644
index 00000000000..9f52eb9fde5
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfinstrs.h
@@ -0,0 +1,57 @@
+/* Copyright (C) 2001-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+enum ttf_instructions {
+ ttf_npushb=0x40, ttf_npushw=0x41, ttf_pushb=0xb0, ttf_pushw=0xb8,
+ ttf_aa=0x7f, ttf_abs=0x64, ttf_add=0x60, ttf_alignpts=0x27, ttf_alignrp=0x3c,
+ ttf_and=0x5a, ttf_call=0x2b, ttf_ceiling=0x67, ttf_cindex=0x25, ttf_clear=0x22,
+ ttf_debug=0x4f, ttf_deltac1=0x73, ttf_deltac2=0x74, ttf_deltac3=0x75,
+ ttf_deltap1=0x5d, ttf_deltap2=0x71, ttf_deltap3=0x72, ttf_depth=0x24,
+ ttf_div=0x62, ttf_dup=0x20, ttf_eif=0x59, ttf_else=0x1b, ttf_endf=0x2d,
+ ttf_eq=0x54, ttf_even=0x57, ttf_fdef=0x2c, ttf_flipoff=0x4e, ttf_flipon=0x4d,
+ ttf_flippt=0x80, ttf_fliprgoff=0x82, ttf_fliprgon=0x81, ttf_floor=0x66,
+ ttf_gc=0x46, ttf_getinfo=0x88, ttf_gfv=0x0d, ttf_gpv=0x0c, ttf_gt=0x52,
+ ttf_gteq=0x53, ttf_idef=0x89, ttf_if=0x58, ttf_instctrl=0x8e, ttf_ip=0x39,
+ ttf_isect=0x0f, ttf_iup=0x30, ttf_jmpr=0x1c, ttf_jrof=0x79, ttf_jrot=0x78,
+ ttf_loopcall=0x2a, ttf_lt=0x50, ttf_lteq=0x51, ttf_max=0x8b, ttf_md=0x49,
+ ttf_mdap=0x2e, ttf_mdrp=0xc0, ttf_miap=0x3e, ttf_min=0x8c, ttf_mindex=0x26,
+ ttf_mirp=0xe0, ttf_mppem=0x4b, ttf_mps=0x4c, ttf_msirp=0x3a, ttf_mul=0x63,
+ ttf_neg=0x65, ttf_neq=0x55, ttf_not=0x5c, ttf_nround=0x6c, ttf_odd=0x56,
+ ttf_or=0x5b, ttf_pop=0x21, ttf_rcvt=0x45, ttf_rdtg=0x7d, ttf_roff=0x7a,
+ ttf_roll=0x8a, ttf_round=0x68, ttf_rs=0x43, ttf_rtdg=0x3d, ttf_rtg=0x18,
+ ttf_rthg=0x19, ttf_rutg=0x7c, ttf_s45round=0x77, ttf_sangw=0x7e,
+ ttf_scanctrl=0x85, ttf_scantype=0x8d, ttf_scfs=0x48, ttf_scvtci=0x1d,
+ ttf_sdb=0x5e, ttf_sdpvtl=0x86, ttf_sds=0x5f, ttf_sfvfs=0x0b, ttf_sfvtca=0x04,
+ ttf_sfvtl=0x08, ttf_sfvtpv=0x0e, ttf_shc=0x34, ttf_shp=0x32, ttf_shpix=0x38,
+ ttf_shz=0x36, ttf_sloop=0x17, ttf_smd=0x1a, ttf_spvfs=0x0a, ttf_spvtca=0x02,
+ ttf_spvtl=0x06, ttf_sround=0x76, ttf_srp0=0x10, ttf_srp1=0x11, ttf_srp2=0x12,
+ ttf_ssw=0x1f, ttf_sswci=0x1e, ttf_sub=0x61, ttf_svtca=0x00, ttf_swap=0x23,
+ ttf_szp0=0x13, ttf_szp1=0x14, ttf_szp2=0x15, ttf_szps=0x16, ttf_utp=0x29,
+ ttf_wcvtf=0x70, ttf_wcvtp=0x44, ttf_ws=0x42
+};
+
+extern const char *ff_ttf_instrnames[];
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfspecial.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfspecial.c
new file mode 100644
index 00000000000..24bd2d5e05c
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttfspecial.c
@@ -0,0 +1,2095 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include "fontforge.h"
+#include <math.h>
+#include <gimage.h> /* For COLOR_DEFAULT */
+
+#include "ttf.h"
+
+/* This file contains routines to generate non-standard true/opentype tables */
+/* The first is the 'PfEd' table containing PfaEdit specific information */
+/* glyph comments & colours ... perhaps other info later */
+
+/* ************************************************************************** */
+/* ************************* The 'PfEd' table ************************* */
+/* ************************* Output ************************* */
+/* ************************************************************************** */
+
+#include "PfEd.h" /* This describes the format of the 'PfEd' table */
+ /* and its many subtables. */
+
+#define MAX_SUBTABLE_TYPES 20
+
+struct PfEd_subtabs {
+ int next;
+ struct {
+ FILE *data;
+ uint32 tag;
+ uint32 offset;
+ } subtabs[MAX_SUBTABLE_TYPES];
+};
+
+static void PfEd_FontComment(SplineFont *sf, struct PfEd_subtabs *pfed, uint32 tag ) {
+ FILE *fcmt;
+ char *pt;
+ char *text = tag==fcmt_TAG ? sf->comments : sf->fontlog;
+
+ if ( text==NULL || *text=='\0' )
+return;
+ pfed->subtabs[pfed->next].tag = tag;
+ pfed->subtabs[pfed->next++].data = fcmt = tmpfile2();
+
+ putshort(fcmt,1); /* sub-table version number */
+ putshort(fcmt,strlen(text));
+ for ( pt = text; *pt; ++pt )
+ putc(*pt,fcmt);
+ putshort(fcmt,0);
+ if ( ftell(fcmt)&1 ) putc(0,fcmt);
+ if ( ftell(fcmt)&2 ) putshort(fcmt,0);
+}
+
+static void PfEd_GlyphComments(SplineFont *sf, struct PfEd_subtabs *pfed,
+ struct glyphinfo *gi ) {
+ int i, j, k, any, cnt, last, skipped;
+ uint32 offset;
+ SplineChar *sc, *sc2;
+ FILE *cmnt;
+
+ any = 0;
+ /* We don't need to check in bygid order. We just want to know existance */
+ for ( i=0; i<sf->glyphcnt; ++i ) {
+ if ( sf->glyphs[i]!=NULL && sf->glyphs[i]->ttf_glyph!=-1 &&
+ sf->glyphs[i]->comment!=NULL ) {
+ any = true;
+ break;
+ }
+ }
+
+ if ( !any )
+return;
+
+ pfed->subtabs[pfed->next].tag = cmnt_TAG;
+ pfed->subtabs[pfed->next++].data = cmnt = tmpfile2();
+
+ putshort(cmnt,1); /* sub-table version number */
+ /* Version 0 used ucs2, version 1 uses utf8 */
+
+ offset = 0;
+ for ( j=0; j<4; ++j ) {
+ cnt = 0;
+ for ( i=0; i<gi->gcnt; ++i ) if ( gi->bygid[i]!=-1 ) {
+ sc=sf->glyphs[gi->bygid[i]];
+ if ( sc!=NULL && sc->comment!=NULL ) {
+ last = i; skipped = false;
+ for ( k=i+1; k<gi->gcnt; ++k ) {
+ if ( gi->bygid[k]!=-1 )
+ sc2 = sf->glyphs[gi->bygid[k]];
+ if ( (gi->bygid[k]==-1 || sc2->comment==NULL) && skipped )
+ break;
+ if ( gi->bygid[k]!=-1 && sc2->comment!=NULL ) {
+ last = k;
+ skipped = false;
+ } else
+ skipped = true;
+ }
+ ++cnt;
+ if ( j==1 ) {
+ putshort(cmnt,i);
+ putshort(cmnt,last);
+ putlong(cmnt,offset);
+ offset += sizeof(uint32)*(last-i+2);
+ } else if ( j==2 ) {
+ for ( ; i<=last; ++i ) {
+ if ( gi->bygid[i]==-1 || (sc=sf->glyphs[gi->bygid[i]])->comment==NULL )
+ putlong(cmnt,0);
+ else {
+ putlong(cmnt,offset);
+ offset += strlen(sc->comment)+1;
+ }
+ }
+ putlong(cmnt,offset); /* Guard data, to let us calculate the string lengths */
+ } else if ( j==3 ) {
+ for ( ; i<=last; ++i ) {
+ if ( gi->bygid[i]==-1 || (sc=sf->glyphs[gi->bygid[i]])->comment==NULL )
+ continue;
+ fputs(sc->comment,cmnt);
+ putc('\0',cmnt);
+ }
+ }
+ i = last;
+ }
+ }
+ if ( j==0 ) {
+ putshort(cmnt,cnt);
+ offset = 2*sizeof(short) + cnt*(2*sizeof(short)+sizeof(uint32));
+ }
+ }
+ if ( ftell(cmnt) & 1 )
+ putc('\0',cmnt);
+ if ( ftell(cmnt) & 2 )
+ putshort(cmnt,0);
+}
+
+static void PfEd_CvtComments(SplineFont *sf, struct PfEd_subtabs *pfed ) {
+ FILE *cvtcmt;
+ int i, offset;
+
+ if ( sf->cvt_names==NULL )
+return;
+ pfed->subtabs[pfed->next].tag = cvtc_TAG;
+ pfed->subtabs[pfed->next++].data = cvtcmt = tmpfile2();
+
+ for ( i=0; sf->cvt_names[i]!=END_CVT_NAMES; ++i);
+
+ putshort(cvtcmt,0); /* sub-table version number */
+ putshort(cvtcmt,i);
+ offset = 2*2 + i*2;
+ for ( i=0; sf->cvt_names[i]!=END_CVT_NAMES; ++i) {
+ if ( sf->cvt_names[i]==NULL )
+ putshort(cvtcmt,0);
+ else {
+ putshort(cvtcmt,offset);
+ offset += strlen(sf->cvt_names[i])+1;
+ }
+ }
+ for ( i=0; sf->cvt_names[i]!=END_CVT_NAMES; ++i) {
+ if ( sf->cvt_names[i]!=NULL ) {
+ fputs(sf->cvt_names[i],cvtcmt);
+ putc('\0',cvtcmt);
+ }
+ }
+ if ( ftell(cvtcmt)&1 ) putc(0,cvtcmt);
+ if ( ftell(cvtcmt)&2 ) putshort(cvtcmt,0);
+}
+
+static void PfEd_Colours(SplineFont *sf, struct PfEd_subtabs *pfed, struct glyphinfo *gi ) {
+ int i, j, k, any, cnt, last;
+ SplineChar *sc, *sc2;
+ FILE *colr;
+
+ any = 0;
+ for ( i=0; i<sf->glyphcnt; ++i ) {
+ if ( sf->glyphs[i]!=NULL && sf->glyphs[i]->ttf_glyph!=-1 &&
+ sf->glyphs[i]->color!=COLOR_DEFAULT ) {
+ any = true;
+ break;
+ }
+ }
+
+ if ( !any )
+return;
+
+ pfed->subtabs[pfed->next].tag = colr_TAG;
+ pfed->subtabs[pfed->next++].data = colr = tmpfile2();
+
+ putshort(colr,0); /* sub-table version number */
+ for ( j=0; j<2; ++j ) {
+ cnt = 0;
+ for ( i=0; i<gi->gcnt; ++i ) if ( gi->bygid[i]!=-1 ) {
+ sc = sf->glyphs[gi->bygid[i]];
+ if ( sc!=NULL && sc->color!=COLOR_DEFAULT ) {
+ last = i;
+ for ( k=i+1; k<gi->gcnt; ++k ) {
+ if ( gi->bygid[k]==-1 )
+ break;
+ sc2 = sf->glyphs[gi->bygid[k]];
+ if ( sc2->color != sc->color )
+ break;
+ last = k;
+ }
+ ++cnt;
+ if ( j==1 ) {
+ putshort(colr,i);
+ putshort(colr,last);
+ putlong(colr,sc->color);
+ }
+ i = last;
+ }
+ }
+ if ( j==0 )
+ putshort(colr,cnt);
+ }
+ if ( ftell(colr) & 2 )
+ putshort(colr,0);
+}
+
+static void PfEd_Lookups(SplineFont *sf, struct PfEd_subtabs *pfed,
+ OTLookup *lookups, uint32 tag) {
+ OTLookup *otl;
+ int lcnt, scnt, ascnt, acnt, s, a;
+ FILE *lkf;
+ struct lookup_subtable *subs;
+ AnchorClass *ac;
+ int sub_info, ac_info, name_info;
+
+ if ( lookups==NULL )
+return;
+ for ( otl=lookups, lcnt=scnt=acnt=ascnt=0; otl!=NULL; otl=otl->next ) if ( !otl->unused ) {
+ ++lcnt;
+ for ( subs = otl->subtables; subs!=NULL; subs=subs->next ) if ( !subs->unused ) {
+ ++scnt;
+ if ( subs->anchor_classes ) {
+ ++ascnt;
+ for ( ac=sf->anchor; ac!=NULL; ac=ac->next )
+ if ( ac->subtable==subs && ac->has_base && ac->has_mark )
+ ++acnt;
+ }
+ }
+ }
+
+ pfed->subtabs[pfed->next].tag = tag;
+ pfed->subtabs[pfed->next++].data = lkf = tmpfile2();
+
+ putshort(lkf,0); /* Subtable version */
+ putshort(lkf,lcnt);
+
+ sub_info = 4 + 4*lcnt;
+ ac_info = sub_info + 2*lcnt + 4*scnt;
+ name_info = ac_info + 2*ascnt + 2*acnt;
+ for ( otl=lookups; otl!=NULL; otl=otl->next ) if ( !otl->unused ) {
+ putshort(lkf,name_info);
+ name_info += strlen(otl->lookup_name)+1;
+ putshort(lkf,sub_info);
+ for ( subs = otl->subtables, s=0; subs!=NULL; subs=subs->next ) if ( !subs->unused ) ++s;
+ sub_info += 2 + 4*s;
+ }
+ if ( sub_info!=ac_info )
+ IError("Lookup name data didn't behave as expected");
+ for ( otl=lookups; otl!=NULL; otl=otl->next ) if ( !otl->unused ) {
+ for ( subs = otl->subtables, s=0; subs!=NULL; subs=subs->next ) if ( !subs->unused ) ++s;
+ putshort(lkf,s); /* Subtable count */
+ for ( subs = otl->subtables, s=0; subs!=NULL; subs=subs->next ) if ( !subs->unused ) {
+ putshort(lkf,name_info);
+ name_info += strlen(subs->subtable_name)+1;
+ if ( subs->anchor_classes ) {
+ putshort(lkf,ac_info);
+ for ( ac=sf->anchor, a=0; ac!=NULL; ac=ac->next )
+ if ( ac->subtable==subs && ac->has_base && ac->has_mark )
+ ++a;
+ ac_info += 2 + 2*a;
+ } else
+ putshort(lkf,0);
+ }
+ }
+ for ( otl=lookups; otl!=NULL; otl=otl->next ) if ( !otl->unused ) {
+ for ( subs = otl->subtables, s=0; subs!=NULL; subs=subs->next ) if ( !subs->unused ) {
+ if ( subs->anchor_classes ) {
+ for ( ac=sf->anchor, a=0; ac!=NULL; ac=ac->next )
+ if ( ac->subtable==subs && ac->has_base && ac->has_mark )
+ ++a;
+ putshort(lkf,a);
+ for ( ac=sf->anchor, a=0; ac!=NULL; ac=ac->next )
+ if ( ac->subtable==subs && ac->has_base && ac->has_mark ) {
+ putshort(lkf,name_info);
+ name_info += strlen(ac->name)+1;
+ }
+ }
+ }
+ }
+ for ( otl=lookups; otl!=NULL; otl=otl->next ) if ( !otl->unused ) {
+ fputs(otl->lookup_name,lkf);
+ putc('\0',lkf);
+ }
+ for ( otl=lookups; otl!=NULL; otl=otl->next ) if ( !otl->unused ) {
+ for ( subs = otl->subtables, s=0; subs!=NULL; subs=subs->next ) if ( !subs->unused ) {
+ fputs(subs->subtable_name,lkf);
+ putc('\0',lkf);
+ }
+ }
+ for ( otl=lookups; otl!=NULL; otl=otl->next ) if ( !otl->unused ) {
+ for ( subs = otl->subtables, s=0; subs!=NULL; subs=subs->next ) if ( !subs->unused ) {
+ for ( ac=sf->anchor, a=0; ac!=NULL; ac=ac->next )
+ if ( ac->subtable==subs && ac->has_base && ac->has_mark ) {
+ fputs(ac->name,lkf);
+ putc('\0',lkf);
+ }
+ }
+ }
+ if ( ftell(lkf) & 1 )
+ putc('\0',lkf);
+ if ( ftell(lkf) & 2 )
+ putshort(lkf,0);
+}
+
+static int pfed_mod_type(float val,int last_mod) {
+ float ival;
+
+ if ( last_mod==V_F )
+return( V_F );
+ ival = rint(val);
+ if ( ival!=val || ival<-32768 || ival>32767 )
+return( V_F );
+ if ( last_mod==V_S || ival<-128 || ival>127 )
+return( V_S );
+
+return( V_B );
+}
+
+static void pfed_write_data(FILE *ttf, float val, int mod) {
+ if ( mod==V_F )
+ putlong(ttf,(int) rint(val*256.0f));
+ else if ( mod==V_S )
+ putshort(ttf,(int) rint(val));
+ else
+ putc(((int) rint(val)), ttf);
+}
+
+static void pfed_glyph_layer(FILE *layr,Layer *layer, int do_spiro) {
+ int contour_cnt, image_cnt, ref_cnt, name_off, i,j;
+ SplineSet *ss;
+ SplinePoint *sp;
+ uint32 base;
+ int mod, was_implicit;
+ RefChar *ref;
+
+ contour_cnt = 0;
+ for ( ss=layer->splines; ss!=NULL; ss=ss->next )
+ ++contour_cnt;
+ image_cnt = 0;
+ /* I'm not doing images yet (if ever) but I leave space for them */
+ ref_cnt = 0;
+ for ( ref=layer->refs; ref!=NULL; ref=ref->next )
+ ++ref_cnt;
+
+ base = ftell(layr);
+ putshort(layr,contour_cnt);
+ putshort(layr,ref_cnt);
+ putshort(layr,image_cnt);
+
+ name_off = 2*3 + 4 * contour_cnt + (4*7+2)* ref_cnt;
+ for ( ss=layer->splines; ss!=NULL; ss=ss->next ) {
+ putshort(layr,0); /* fill in later */
+ if ( ss->contour_name!=NULL ) {
+ putshort(layr,name_off);
+ name_off += strlen(ss->contour_name)+1;
+ } else {
+ putshort(layr,0);
+ }
+ }
+ for ( ref=layer->refs; ref!=NULL; ref=ref->next ) {
+ for ( j=0; j<6; ++j )
+ putlong(layr, (int) rint(ref->transform[j]*32768));
+ putshort(layr,ref->sc->ttf_glyph);
+ }
+ for ( ss=layer->splines; ss!=NULL; ss=ss->next ) {
+ if ( ss->contour_name!=NULL ) {
+ fputs(ss->contour_name,layr);
+ putc('\0',layr);
+ }
+ }
+
+ contour_cnt=0;
+ for ( ss=layer->splines; ss!=NULL; ss=ss->next, ++contour_cnt ) {
+ uint32 pos = ftell(layr);
+ fseek( layr, base + 6 + 4*contour_cnt, SEEK_SET);
+ putshort( layr, pos-base);
+ fseek( layr, pos, SEEK_SET );
+
+ if ( !do_spiro ) {
+ sp = ss->first;
+ mod = pfed_mod_type(sp->me.x, pfed_mod_type(sp->me.y,V_B));
+ putc( (V_MoveTo|mod),layr);
+ pfed_write_data(layr,sp->me.x,mod);
+ pfed_write_data(layr,sp->me.y,mod);
+ was_implicit = false;
+
+ while ( sp->next!=NULL ) {
+ SplinePoint *nsp = sp->next->to;
+ float offx = nsp->me.x - sp->me.x;
+ float offy = nsp->me.y - sp->me.y;
+ if ( offx==0 && offy==0 )
+ /* Do Nothing */;
+ else if ( sp->next->knownlinear ) {
+ mod = pfed_mod_type(offx, pfed_mod_type(offy,V_B));
+ if ( offx==0 ) {
+ putc( (V_VLineTo|mod), layr);
+ pfed_write_data(layr,offy,mod);
+ } else if ( offy==0 ) {
+ putc( (V_HLineTo|mod), layr);
+ pfed_write_data(layr,offx,mod);
+ } else {
+ putc( (V_LineTo|mod), layr);
+ pfed_write_data(layr,offx,mod);
+ pfed_write_data(layr,offy,mod);
+ }
+ } else if ( sp->next->order2 ) {
+ float offx1, offx2, offy1, offy2;
+ BasePoint *base = was_implicit ? &sp->prevcp : &sp->me;
+ offx1 = sp->nextcp.x - base->x;
+ offy1 = sp->nextcp.y - base->y;
+ mod = pfed_mod_type(offx1, pfed_mod_type(offy1,V_B));
+ if ( SPInterpolate(nsp) && nsp!=ss->first ) {
+ was_implicit = true;
+ if ( offx1==0 ) {
+ putc( (V_QVImplicit|mod), layr);
+ pfed_write_data(layr,offy1,mod);
+ } else if ( offy1==0 ) {
+ putc( (V_QHImplicit|mod), layr);
+ pfed_write_data(layr,offx1,mod);
+ } else {
+ putc( (V_QImplicit|mod), layr);
+ pfed_write_data(layr,offx1,mod);
+ pfed_write_data(layr,offy1,mod);
+ }
+ } else {
+ offx2 = nsp->me.x - sp->nextcp.x;
+ offy2 = nsp->me.y - sp->nextcp.y;
+ mod = pfed_mod_type(offx2, pfed_mod_type(offy2,mod));
+ was_implicit = false;
+ putc( (V_QCurveTo|mod), layr);
+ pfed_write_data(layr,offx1,mod);
+ pfed_write_data(layr,offy1,mod);
+ pfed_write_data(layr,offx2,mod);
+ pfed_write_data(layr,offy2,mod);
+ }
+ } else {
+ float offx1 = sp->nextcp.x - sp->me.x;
+ float offy1 = sp->nextcp.y - sp->me.y;
+ float offx2 = nsp->prevcp.x - sp->nextcp.x;
+ float offy2 = nsp->prevcp.y - sp->nextcp.y;
+ float offx3 = nsp->me.x - nsp->prevcp.x;
+ float offy3 = nsp->me.y - nsp->prevcp.y;
+ mod = pfed_mod_type(offx1, pfed_mod_type(offy1,V_B));
+ mod = pfed_mod_type(offx2, pfed_mod_type(offy2,mod));
+ mod = pfed_mod_type(offx3, pfed_mod_type(offy3,mod));
+ if ( offx1==0 && offy3==0 ) {
+ putc((V_VHCurveTo|mod),layr);
+ pfed_write_data(layr,offy1,mod);
+ pfed_write_data(layr,offx2,mod);
+ pfed_write_data(layr,offy2,mod);
+ pfed_write_data(layr,offx3,mod);
+ } else if ( offy1==0 && offx3==0 ) {
+ putc((V_HVCurveTo|mod),layr);
+ pfed_write_data(layr,offx1,mod);
+ pfed_write_data(layr,offx2,mod);
+ pfed_write_data(layr,offy2,mod);
+ pfed_write_data(layr,offy3,mod);
+ } else {
+ putc((V_CurveTo|mod),layr);
+ pfed_write_data(layr,offx1,mod);
+ pfed_write_data(layr,offy1,mod);
+ pfed_write_data(layr,offx2,mod);
+ pfed_write_data(layr,offy2,mod);
+ pfed_write_data(layr,offx3,mod);
+ pfed_write_data(layr,offy3,mod);
+ }
+ }
+ if ( nsp == ss->first )
+ break;
+ if ( nsp->next!=NULL && nsp->next->to==ss->first && nsp->next->knownlinear )
+ break;
+ sp = nsp;
+ }
+ if ( sp->next==NULL )
+ putc(V_End,layr);
+ else
+ putc(V_Close,layr);
+ } else if ( ss->spiro_cnt==0 )
+ putc(SPIRO_CLOSE_CONTOUR,layr); /* Mark for an empty spiro contour */
+ else {
+ for ( i=0; i<ss->spiro_cnt; ++i ) {
+ if ( i==ss->spiro_cnt-1 && ss->first->prev==NULL )
+ putc(SPIRO_CLOSE_CONTOUR,layr);
+ else if ( i==0 && ss->first->prev==NULL ) /* Open */
+ putc(SPIRO_OPEN_CONTOUR,layr);
+ else
+ putc(ss->spiros[i].ty&0x7f,layr);
+ putlong(layr,rint(ss->spiros[i].x*256.0));
+ putlong(layr,rint(ss->spiros[i].y*256.0));
+ }
+ putc(SPIRO_END,layr); /* Add the z whether open or not. Might as well */
+ }
+ }
+}
+
+struct pos_name {
+ real pos;
+ char *name;
+};
+
+static int pfed_guide_real_comp(const void *_r1, const void *_r2) {
+ const struct pos_name *r1 = _r1, *r2 = _r2;
+
+ if ( r1->pos>r2->pos )
+return( 1 );
+ else if ( r1->pos<r2->pos )
+return( -1 );
+ else
+return( 0 );
+}
+
+static int pfed_guide_sortuniq( struct pos_name *array, int cnt) {
+ int i,j;
+
+ qsort(array,cnt,sizeof(struct pos_name),pfed_guide_real_comp);
+ for ( i=j=0; i<cnt; ++i ) {
+ if ( array[i].pos<-32768 || array[i].pos>32767 )
+ /* Out of bounds, ignore it */;
+ else if ( i!=0 && array[i].pos == array[i-1].pos )
+ /* Duplicate, ignore it */;
+ else
+ array[j++] = array[i];
+ }
+return( j );
+}
+
+static int pfed_guide_dump_pos_name(FILE *guid, struct pos_name *pn, int namestart ) {
+ putshort(guid,(short) rint(pn->pos));
+ if ( pn->name!=NULL ) {
+ putshort(guid,namestart);
+ namestart += strlen(pn->name)+1;
+ } else {
+ putshort(guid,0);
+ }
+return( namestart );
+}
+
+static void PfEd_Guides(SplineFont *sf, struct PfEd_subtabs *pfed ) {
+ int h,v, i;
+ SplineSet *ss;
+ Spline *s, *first;
+ FILE *guid;
+ struct pos_name hs[100], vs[100];
+ int nameoff, namelen;
+
+ if ( sf->grid.splines==NULL )
+return;
+
+ h=v=0;
+ for ( ss=sf->grid.splines; ss!=NULL; ss=ss->next ) {
+ first = NULL;
+ for ( s=ss->first->next; s!=NULL && s!=first; s=s->to->next ) {
+ if ( first==NULL ) first = s;
+ if ( s->from->me.x==s->to->me.x ) {
+ if ( s->from->me.y!=s->to->me.y && v<100 ) {
+ vs[v].name = ss->contour_name;
+ vs[v++].pos = s->from->me.x;
+ }
+ } else if ( s->from->me.y==s->to->me.y ) {
+ if ( h<100 ) {
+ hs[h].name = ss->contour_name;
+ hs[h++].pos = s->from->me.y;
+ }
+ }
+ }
+ }
+
+ v = pfed_guide_sortuniq(vs,v);
+ h = pfed_guide_sortuniq(hs,h);
+
+ pfed->subtabs[pfed->next].tag = guid_TAG;
+ pfed->subtabs[pfed->next++].data = guid = tmpfile2();
+
+ nameoff = 5*2 + (h+v) * 4;
+ namelen = 0;
+ for ( i=0; i<v; ++i ) if ( vs[i].name!=NULL )
+ namelen += strlen( vs[i].name )+1;
+ for ( i=0; i<h; ++i ) if ( hs[i].name!=NULL )
+ namelen += strlen( hs[i].name )+1;
+
+ putshort(guid,1); /* sub-table version number */
+ putshort(guid,v);
+ putshort(guid,h);
+ putshort(guid,0); /* Diagonal lines someday? nothing for now */
+ putshort(guid,nameoff+namelen); /* full spline output */
+ for ( i=0; i<v; ++i )
+ nameoff = pfed_guide_dump_pos_name(guid, &vs[i], nameoff );
+ for ( i=0; i<h; ++i )
+ nameoff = pfed_guide_dump_pos_name(guid, &hs[i], nameoff );
+
+ for ( i=0; i<v; ++i ) if ( vs[i].name!=NULL ) {
+ fputs(vs[i].name,guid);
+ putc('\0',guid);
+ }
+ for ( i=0; i<h; ++i ) if ( hs[i].name!=NULL ) {
+ fputs(hs[i].name,guid);
+ putc('\0',guid);
+ }
+
+ pfed_glyph_layer(guid,&sf->grid,false);
+
+ if ( ftell(guid) & 1 )
+ putc('\0',guid);
+ if ( ftell(guid) & 2 )
+ putshort(guid,0);
+}
+
+static int pfed_has_spiros(Layer *layer) {
+ SplineSet *ss;
+
+ for ( ss=layer->splines; ss!=NULL; ss=ss->next ) {
+ if ( ss->spiro_cnt>1 )
+return( true );
+ }
+return( false );
+}
+
+static void PfEd_Layer(SplineFont *sf, struct glyphinfo *gi, int layer, int dospiro,
+ FILE *layr) {
+ int i, j, k, gid, cnt, last, skipped;
+ SplineChar *sc, *sc2;
+ uint32 offset;
+ uint32 *glyph_data_offset_location;
+
+ for ( i=0; i<gi->gcnt; ++i ) if ( gi->bygid[i]!=-1 )
+ if ( (sc=sf->glyphs[gi->bygid[i]])!=NULL ) {
+ sc->ticked = false;
+ if ( (!dospiro && (sc->layers[layer].splines!=NULL || sc->layers[layer].refs!=NULL) ) ||
+ (dospiro && pfed_has_spiros(&sc->layers[layer])) )
+ sc->ticked=true;
+ }
+
+ offset = ftell(layr);
+ glyph_data_offset_location = calloc(gi->gcnt,sizeof(uint32));
+ for ( j=0; j<4; ++j ) {
+ cnt = 0;
+ for ( i=0; i<gi->gcnt; ++i ) if ( (gid=gi->bygid[i])!=-1 && (sc=sf->glyphs[gid])!=NULL ) {
+ if ( sc->ticked ) {
+ last = i; skipped = false;
+ for ( k=i+1; k<gi->gcnt; ++k ) {
+ sc2 = NULL;
+ if ( gi->bygid[k]!=-1 )
+ sc2 = sf->glyphs[gi->bygid[k]];
+ if ( skipped && (sc2==NULL || !sc2->ticked))
+ break;
+ if ( sc2!=NULL && sc2->ticked ) {
+ last = k;
+ skipped = false;
+ } else
+ skipped = true;
+ }
+ ++cnt;
+ if ( j==1 ) {
+ putshort(layr,i);
+ putshort(layr,last);
+ putlong(layr,offset);
+ offset += sizeof(uint32)*(last-i+1);
+ } else if ( j==2 ) {
+ for ( ; i<=last; ++i ) {
+ if ( gi->bygid[i]==-1 || !sf->glyphs[gi->bygid[i]]->ticked )
+ putlong(layr,0);
+ else {
+ glyph_data_offset_location[i] = ftell(layr);
+ putlong(layr,0);
+ }
+ }
+ } else if ( j==3 ) {
+ for ( ; i<=last; ++i ) {
+ if ( gi->bygid[i]!=-1 && (sc=sf->glyphs[gi->bygid[i]])->ticked ) {
+ uint32 pos = ftell(layr);
+ fseek(layr,glyph_data_offset_location[i],SEEK_SET);
+ putlong(layr,pos); /* Offset relative to start of subtable==start of file */
+ fseek(layr,pos,SEEK_SET);
+ pfed_glyph_layer(layr,&sc->layers[layer],dospiro);
+ }
+ }
+ }
+ i = last;
+ }
+ }
+ if ( j==0 ) {
+ offset += sizeof(short) + cnt*(2*sizeof(short)+sizeof(uint32));
+ putshort(layr,cnt);
+ }
+ }
+ free(glyph_data_offset_location);
+}
+
+static void PfEd_Layers(SplineFont *sf, struct PfEd_subtabs *pfed,
+ struct glyphinfo *gi ) {
+ /* currently we output the following: */
+ /* The background layer */
+ /* And the spiro representation of the foreground */
+ /* if the foreground is cubic and output is quad then the foreground */
+ /* Any other layers */
+ /* Check if any of these data exist */
+ uint8 has_spiro=0;
+ uint8 *otherlayers;
+ int i, name_off, l, cnt, sofar;
+ SplineChar *sc;
+ FILE *layr;
+
+ otherlayers = calloc(sf->layer_cnt,sizeof(uint8));
+
+ /* We don't need to check in bygid order. We just want to know existance */
+ /* We don't check for refs because a reference to an empty glyph is empty too */
+ for ( i=0; i<sf->glyphcnt; ++i ) {
+ if ( (sc=sf->glyphs[i])!=NULL && sc->ttf_glyph!=-1 ) {
+ if ( pfed_has_spiros(&sc->layers[ly_fore]))
+ has_spiro = true;
+ for ( l=ly_back ; l<sf->layer_cnt; ++l )
+ if ( sc->layers[l].splines!=NULL )
+ otherlayers[l] = true;
+ }
+ }
+ otherlayers[gi->layer] = (!sf->layers[gi->layer].order2 && gi->is_ttf) ||
+ ( sf->layers[gi->layer].order2 && !gi->is_ttf);
+
+ for ( l=cnt=0; l<sf->layer_cnt; ++l )
+ if ( otherlayers[l] )
+ ++cnt;
+ cnt += has_spiro;
+ if ( cnt==0 ) {
+ free(otherlayers);
+return;
+ }
+
+ pfed->subtabs[pfed->next].tag = layr_TAG;
+ pfed->subtabs[pfed->next++].data = layr = tmpfile2();
+
+ putshort(layr,1); /* sub-table version */
+ putshort(layr,cnt); /* layer count */
+
+ name_off = 4 + 8 * cnt;
+ if ( has_spiro ) {
+ putshort(layr,1); /* spiros */
+ putshort(layr,name_off);
+ name_off += strlen("Spiro")+1;
+ putlong(layr,0); /* Fill in later */
+ }
+ for ( l=0; l<sf->layer_cnt; ++l ) if ( otherlayers[l]) {
+ putshort(layr,(sf->layers[l].order2?2:3) | /* Quadratic/cubic */
+ (sf->layers[l].background?0:0x100)); /* Fore/Back */
+ putshort(layr,name_off);
+ if ( l==ly_fore ) name_off += strlen("Old_");
+ name_off += strlen(sf->layers[l].name)+1;
+ putlong(layr,0); /* Fill in later */
+ }
+ if ( has_spiro ) {
+ fputs("Spiro",layr);
+ putc('\0',layr);
+ }
+ for ( l=0; l<sf->layer_cnt; ++l ) if ( otherlayers[l]) {
+ if ( l==ly_fore ) fputs("Old_",layr);
+ fputs(sf->layers[l].name,layr);
+ putc('\0',layr);
+ }
+
+ sofar = 0;
+ if ( has_spiro ) {
+ uint32 pos = ftell(layr);
+ fseek(layr, 4 + 0*8 + 4, SEEK_SET);
+ putlong(layr,pos);
+ fseek(layr, 0, SEEK_END);
+ PfEd_Layer(sf, gi, ly_fore, true, layr);
+ ++sofar;
+ }
+ for ( l=0; l<sf->layer_cnt; ++l ) if ( otherlayers[l]) {
+ uint32 pos = ftell(layr);
+ fseek(layr, 4 + sofar*8 + 4, SEEK_SET);
+ putlong(layr,pos);
+ fseek(layr, 0, SEEK_END);
+ PfEd_Layer(sf, gi, l, false, layr);
+ ++sofar;
+ }
+
+ if ( ftell(layr) & 1 )
+ putc('\0',layr);
+ if ( ftell(layr) & 2 )
+ putshort(layr,0);
+ free(otherlayers);
+}
+
+void pfed_dump(struct alltabs *at, SplineFont *sf) {
+ struct PfEd_subtabs pfed;
+ FILE *file;
+ int i;
+ uint32 offset;
+
+ memset(&pfed,0,sizeof(pfed));
+ if ( at->gi.flags & ttf_flag_pfed_comments ) {
+ PfEd_FontComment(sf, &pfed, fcmt_TAG );
+ PfEd_FontComment(sf, &pfed, flog_TAG );
+ PfEd_GlyphComments(sf, &pfed, &at->gi );
+ PfEd_CvtComments(sf, &pfed );
+ }
+ if ( at->gi.flags & ttf_flag_pfed_colors )
+ PfEd_Colours(sf, &pfed, &at->gi );
+ if ( (at->gi.flags & ttf_flag_pfed_lookupnames) && at->opentypemode ) {
+ PfEd_Lookups(sf, &pfed, sf->gsub_lookups, GSUB_TAG );
+ PfEd_Lookups(sf, &pfed, sf->gpos_lookups, GPOS_TAG );
+ }
+ if ( at->gi.flags & ttf_flag_pfed_guides )
+ PfEd_Guides(sf, &pfed);
+ if ( at->gi.flags & ttf_flag_pfed_layers )
+ PfEd_Layers(sf, &pfed, &at->gi);
+
+ if ( pfed.next==0 )
+return; /* No subtables */
+
+ at->pfed = file = tmpfile2();
+ putlong(file, 0x00010000); /* Version number */
+ putlong(file, pfed.next); /* sub-table count */
+ offset = 2*sizeof(uint32) + 2*pfed.next*sizeof(uint32);
+ for ( i=0; i<pfed.next; ++i ) {
+ putlong(file,pfed.subtabs[i].tag);
+ putlong(file,offset);
+ fseek(pfed.subtabs[i].data,0,SEEK_END);
+ pfed.subtabs[i].offset = offset;
+ offset += ftell(pfed.subtabs[i].data);
+ }
+ for ( i=0; i<pfed.next; ++i ) {
+ fseek(pfed.subtabs[i].data,0,SEEK_SET);
+ ttfcopyfile(file,pfed.subtabs[i].data,pfed.subtabs[i].offset,"PfEd-subtable");
+ }
+ if ( ftell(file)&3 )
+ IError("'PfEd' table not properly aligned");
+ at->pfedlen = ftell(file);
+}
+
+/* ************************* The 'PfEd' table ************************* */
+/* ************************* Input ************************* */
+
+static void pfed_readfontcomment(FILE *ttf,struct ttfinfo *info,uint32 base,
+ uint32 tag) {
+ int len;
+ char *start, *pt, *end;
+ int use_utf8;
+
+ fseek(ttf,base,SEEK_SET);
+ use_utf8 = getushort(ttf);
+ if ( use_utf8!=0 && use_utf8!=1 )
+return; /* Bad version number */
+ len = getushort(ttf);
+ start = pt = malloc(len+1);
+
+ end = pt+len;
+ if ( use_utf8 ) {
+ while ( pt<end )
+ *pt++ = getc(ttf);
+ } else {
+ while ( pt<end )
+ *pt++ = getushort(ttf);
+ }
+ *pt = '\0';
+ if ( !use_utf8 ) {
+ pt = latin1_2_utf8_copy(info->fontcomments);
+ free(start);
+ start = pt;
+ }
+ if ( tag==flog_TAG )
+ info->fontlog = start;
+ else
+ info->fontcomments = start;
+}
+
+static char *pfed_read_utf8(FILE *ttf, uint32 start) {
+ int ch, len;
+ char *str, *pt;
+
+ fseek( ttf, start, SEEK_SET);
+ len = 0;
+ while ( (ch=getc(ttf))!='\0' && ch!=EOF )
+ ++len;
+ fseek( ttf, start, SEEK_SET);
+ str = pt = malloc(len+1);
+ while ( (ch=getc(ttf))!='\0' && ch!=EOF )
+ *pt++ = ch;
+ *pt = '\0';
+return( str );
+}
+
+static char *pfed_read_ucs2_len(FILE *ttf,uint32 offset,int len) {
+ char *pt, *str;
+ uint32 uch, uch2;
+ int i;
+
+ if ( len<0 )
+return( NULL );
+
+ len>>=1;
+ if ( (pt=str=malloc(len>0 ? 3*len:1))==NULL )
+ return( NULL );
+ fseek(ttf,offset,SEEK_SET);
+ for ( i=0; i<len; ++i ) {
+ uch = getushort(ttf);
+ if ( uch>=0xd800 && uch<0xdc00 ) {
+ /* Is this a possible utf16 surrogate value? */
+ uch2 = getushort(ttf);
+ if ( uch2>=0xdc00 && uch2<0xe000 )
+ uch = ((uch-0xd800)<<10) | (uch2&0x3ff);
+ else {
+ pt = utf8_idpb(pt,uch,0);
+ uch = uch2;
+ }
+ }
+ pt = utf8_idpb(pt,uch,0);
+ }
+ *pt++ = 0;
+return( realloc(str,pt-str) );
+}
+
+static char *pfed_read_utf8_len(FILE *ttf,uint32 offset,int len) {
+ char *pt, *str;
+ int i;
+
+ if ( len<0 )
+return( NULL );
+
+ pt = str = malloc(len+1);
+ fseek(ttf,offset,SEEK_SET);
+ for ( i=0; i<len; ++i )
+ *pt++ = getc(ttf);
+ *pt = '\0';
+return( str );
+}
+
+static void pfed_readcvtcomments(FILE *ttf,struct ttfinfo *info,uint32 base ) {
+ int count, i;
+ uint16 *offsets;
+
+ fseek(ttf,base,SEEK_SET);
+ if ( getushort(ttf)!=0 )
+return; /* Bad version number */
+ count = getushort(ttf);
+
+ offsets = malloc(count*sizeof(uint16));
+ info->cvt_names = malloc((count+1)*sizeof(char *));
+ for ( i=0; i<count; ++i )
+ offsets[i] = getushort(ttf);
+ for ( i=0; i<count; ++i ) {
+ if ( offsets[i]==0 )
+ info->cvt_names[i] = NULL;
+ else
+ info->cvt_names[i] = pfed_read_utf8(ttf,base+offsets[i]);
+ }
+ free(offsets);
+}
+
+static void pfed_readglyphcomments(FILE *ttf,struct ttfinfo *info,uint32 base) {
+ int n, i, j;
+ struct grange { int start, end; uint32 offset; } *grange;
+ uint32 offset, next;
+ int use_utf8;
+
+ fseek(ttf,base,SEEK_SET);
+ use_utf8 = getushort(ttf);
+ if ( use_utf8!=0 && use_utf8!=1 )
+return; /* Bad version number */
+ n = getushort(ttf);
+ grange = malloc(n*sizeof(struct grange));
+ for ( i=0; i<n; ++i ) {
+ grange[i].start = getushort(ttf);
+ grange[i].end = getushort(ttf);
+ grange[i].offset = getlong(ttf);
+ if ( grange[i].start>grange[i].end || grange[i].end>info->glyph_cnt ) {
+ LogError( _("Bad glyph range specified in glyph comment subtable of PfEd table\n") );
+ grange[i].start = 1; grange[i].end = 0;
+ }
+ }
+ for ( i=0; i<n; ++i ) {
+ for ( j=grange[i].start; j<=grange[i].end; ++j ) {
+ fseek( ttf,base+grange[i].offset+(j-grange[i].start)*sizeof(uint32),SEEK_SET);
+ offset = getlong(ttf);
+ next = getlong(ttf);
+ if ( use_utf8 )
+ info->chars[j]->comment = pfed_read_utf8_len(ttf,base+offset,next-offset);
+ else
+ info->chars[j]->comment = pfed_read_ucs2_len(ttf,base+offset,next-offset);
+ if ( info->chars[j]->comment == NULL )
+ LogError(_("Invalid comment string (negative length?) in 'PfEd' table for glyph %s."),
+ info->chars[j]->name );
+ }
+ }
+ free(grange);
+}
+
+static void pfed_readcolours(FILE *ttf,struct ttfinfo *info,uint32 base) {
+ int n, i, j, start, end;
+ uint32 col;
+
+ fseek(ttf,base,SEEK_SET);
+ if ( getushort(ttf)!=0 )
+return; /* Bad version number */
+ n = getushort(ttf);
+ for ( i=0; i<n; ++i ) {
+ start = getushort(ttf);
+ end = getushort(ttf);
+ col = getlong(ttf);
+ if ( start>end || end>info->glyph_cnt )
+ LogError( _("Bad glyph range specified in color subtable of PfEd table\n") );
+ else {
+ for ( j=start; j<=end; ++j )
+ info->chars[j]->color = col;
+ }
+ }
+}
+
+static void pfed_readlookupnames(FILE *ttf,struct ttfinfo *info,uint32 base,
+ OTLookup *lookups) {
+ OTLookup *otl;
+ struct lookup_subtable *sub;
+ AnchorClass *ac;
+ int i, j, k, n, s, a;
+ struct lstruct { int name_off, subs_off; } *ls, *ss, *as;
+
+ fseek(ttf,base,SEEK_SET);
+ if ( getushort(ttf)!=0 )
+return; /* Bad version number */
+ n = getushort(ttf);
+ ls = malloc(n*sizeof(struct lstruct));
+ for ( i=0; i<n; ++i ) {
+ ls[i].name_off = getushort(ttf);
+ ls[i].subs_off = getushort(ttf);
+ }
+ for ( i=0, otl=lookups; i<n && otl!=NULL; ++i, otl=otl->next ) {
+ if ( ls[i].name_off!=0 ) {
+ free( otl->lookup_name );
+ otl->lookup_name = pfed_read_utf8(ttf,base+ls[i].name_off);
+ }
+ if ( ls[i].subs_off!=0 ) {
+ fseek(ttf,base+ls[i].subs_off,SEEK_SET);
+ s = getushort(ttf);
+ ss = malloc(s*sizeof(struct lstruct));
+ for ( j=0; j<s; ++j ) {
+ ss[j].name_off = getushort(ttf);
+ ss[j].subs_off = getushort(ttf);
+ }
+ for ( j=0, sub=otl->subtables; j<s && sub!=NULL; ++j, sub=sub->next ) {
+ if ( ss[j].name_off!=0 ) {
+ free( sub->subtable_name );
+ sub->subtable_name = pfed_read_utf8(ttf,base+ss[j].name_off);
+ }
+ if ( ss[j].subs_off!=0 ) {
+ if ( !sub->anchor_classes )
+ LogError(_("Whoops, attempt to name anchors in a subtable which doesn't contain any\n"));
+ else {
+ fseek(ttf,base+ss[j].subs_off,SEEK_SET);
+ a = getushort(ttf);
+ as = malloc(a*sizeof(struct lstruct));
+ for ( k=0; k<a; ++k ) {
+ as[k].name_off = getushort(ttf);
+ }
+ k=0;
+ for ( ac=info->ahead; ac!=NULL; ac=ac->next ) {
+ if ( ac->subtable==sub ) {
+ if ( as[k].name_off!=0 ) {
+ free( ac->name );
+ ac->name = pfed_read_utf8(ttf,base+as[k].name_off);
+ }
+ ++k;
+ }
+ }
+ free(as);
+ }
+ }
+ }
+ /* I guess it's ok for some subtables to be unnamed, so no check for sub!=NULL */
+ if ( j<s )
+ LogError(_("Whoops, more names than subtables of lookup %s\n"), otl->lookup_name );
+ free(ss);
+ }
+ }
+ /* I guess it's ok for some lookups to be unnamed, so no check for otf!=NULL */
+ if ( i<n )
+ LogError(_("Whoops, more names than lookups\n") );
+ free(ls);
+}
+
+static float pfed_get_coord(FILE *ttf,int mod) {
+ if ( mod==V_B )
+return( (float) (signed char) getc(ttf) );
+ else if ( mod==V_S )
+return( (float) (short) getushort(ttf));
+ else if ( mod==V_F )
+return( getlong(ttf)/256.0 );
+ else {
+ LogError(_("Bad data type in contour verb in 'PfEd'\n"));
+return( 0 );
+ }
+}
+
+static void pfed_read_normal_contour(FILE *ttf,SplineSet *ss,
+ uint32 base, int type) {
+ SplinePoint *sp, *current;
+ int verb, v, m;
+ float offx, offy, offx1, offy1, offx2, offy2;
+ int was_implicit=false;
+
+ fseek(ttf,base,SEEK_SET);
+
+ verb = getc(ttf);
+ if ( COM_VERB(verb)!=V_MoveTo ) {
+ LogError(_("Whoops, contours must begin with a move to\n") );
+ ss->first = ss->last = SplinePointCreate(0,0);
+ ss->start_offset = 0;
+return;
+ }
+ offx = pfed_get_coord(ttf,COM_MOD(verb));
+ offy = pfed_get_coord(ttf,COM_MOD(verb));
+ ss->first = current = SplinePointCreate(offx,offy);
+ ss->start_offset = 0;
+ for (;;) {
+ verb = getc(ttf);
+ v = COM_VERB(verb); m = COM_MOD(verb);
+ if ( m==3 ) {
+ LogError(_("Bad data modifier in contour command in 'PfEd'\n") );
+ break;
+ }
+ if ( verb==V_Close || verb==V_End )
+ break;
+ else if ( v>=V_LineTo && v<=V_VLineTo ) {
+ offx = offy = 0;
+ if ( v==V_LineTo ) {
+ offx = pfed_get_coord(ttf,m);
+ offy = pfed_get_coord(ttf,m);
+ } else if ( v==V_HLineTo )
+ offx = pfed_get_coord(ttf,m);
+ else if ( v==V_VLineTo )
+ offy = pfed_get_coord(ttf,m);
+ sp = SplinePointCreate(current->me.x+offx,current->me.y+offy);
+ } else if ( v>=V_QCurveTo && v<=V_QVImplicit ) {
+ int will_be_implicit = true;
+ offx = offy = 0; offx1 = offy1 = 1; /* else implicit points become straight lines too soon */
+ if ( v==V_QCurveTo ) {
+ offx = pfed_get_coord(ttf,m);
+ offy = pfed_get_coord(ttf,m);
+ offx1 = pfed_get_coord(ttf,m);
+ offy1 = pfed_get_coord(ttf,m);
+ will_be_implicit = false;
+ } else if ( v==V_QImplicit ) {
+ offx = pfed_get_coord(ttf,m);
+ offy = pfed_get_coord(ttf,m);
+ } else if ( v==V_QHImplicit ) {
+ offx = pfed_get_coord(ttf,m);
+ } else if ( v==V_QVImplicit ) {
+ offy = pfed_get_coord(ttf,m);
+ }
+
+ current->nextcp.x = current->me.x+offx;
+ current->nextcp.y = current->me.y+offy;
+ current->nonextcp = false;
+ sp = SplinePointCreate(current->nextcp.x+offx1,current->nextcp.y+offy1);
+ sp->prevcp = current->nextcp;
+ sp->noprevcp = false;
+ if ( was_implicit ) {
+ current->me.x = (current->prevcp.x + current->nextcp.x)/2;
+ current->me.y = (current->prevcp.y + current->nextcp.y)/2;
+ SplineRefigure(current->prev);
+ }
+ was_implicit = will_be_implicit;
+ } else if ( v>=V_CurveTo && v<=V_HVCurveTo ) {
+ offx=offy=offx2=offy2=0;
+ if ( v==V_CurveTo ) {
+ offx = pfed_get_coord(ttf,m);
+ offy = pfed_get_coord(ttf,m);
+ offx1 = pfed_get_coord(ttf,m);
+ offy1 = pfed_get_coord(ttf,m);
+ offx2 = pfed_get_coord(ttf,m);
+ offy2 = pfed_get_coord(ttf,m);
+ } else if ( v==V_VHCurveTo ) {
+ offy = pfed_get_coord(ttf,m);
+ offx1 = pfed_get_coord(ttf,m);
+ offy1 = pfed_get_coord(ttf,m);
+ offx2 = pfed_get_coord(ttf,m);
+ } else if ( v==V_HVCurveTo ) {
+ offx = pfed_get_coord(ttf,m);
+ offx1 = pfed_get_coord(ttf,m);
+ offy1 = pfed_get_coord(ttf,m);
+ offy2 = pfed_get_coord(ttf,m);
+ }
+ current->nextcp.x = current->me.x+offx;
+ current->nextcp.y = current->me.y+offy;
+ current->nonextcp = false;
+ sp = SplinePointCreate(current->nextcp.x+offx1+offx2,current->nextcp.y+offy1+offy2);
+ sp->prevcp.x = current->nextcp.x+offx1;
+ sp->prevcp.y = current->nextcp.y+offy1;
+ sp->noprevcp = false;
+ } else {
+ LogError(_("Whoops, unexpected verb in contour %d.%d\n"), v, m );
+ break;
+ }
+ SplineMake(current,sp,type==2);
+ current = sp;
+ }
+ if ( verb==V_Close ) {
+ if ( was_implicit ) {
+ current->me.x = (current->prevcp.x + ss->first->nextcp.x)/2;
+ current->me.y = (current->prevcp.y + ss->first->nextcp.y)/2;
+ }
+ if ( current->me.x==ss->first->me.x && current->me.y==ss->first->me.y ) {
+ current->prev->to = ss->first;
+ ss->first->prev = current->prev;
+ ss->first->prevcp = current->prevcp;
+ ss->first->noprevcp = current->noprevcp;
+ SplinePointFree(current);
+ } else
+ SplineMake(current,ss->first,type==2);
+ ss->last = ss->first;
+ } else {
+ ss->last = current;
+ }
+ SPLCategorizePoints(ss);
+}
+
+static void pfed_read_spiro_contour(FILE *ttf,SplineSet *ss,
+ uint32 base, int type) {
+ int ch;
+
+ fseek(ttf,base,SEEK_SET);
+
+ for (; ; ) {
+ ch = getc(ttf);
+ if ( ch!=SPIRO_OPEN_CONTOUR && ch!=SPIRO_CORNER && ch!=SPIRO_G4 &&
+ ch!=SPIRO_G2 && ch!=SPIRO_LEFT && ch!=SPIRO_RIGHT &&
+ ch!=SPIRO_END && ch!=SPIRO_CLOSE_CONTOUR ) {
+ LogError(_("Whoops, bad spiro command %d\n"), ch);
+ break;
+ }
+ if ( ss->spiro_cnt>=ss->spiro_max )
+ ss->spiros = realloc(ss->spiros,(ss->spiro_max+=10)*sizeof(spiro_cp));
+ ss->spiros[ss->spiro_cnt].ty = ch;
+ if ( ch!=SPIRO_END ) {
+ ss->spiros[ss->spiro_cnt].x = getlong(ttf)/256.0;
+ ss->spiros[ss->spiro_cnt].y = getlong(ttf)/256.0;
+ } else {
+ ss->spiros[ss->spiro_cnt].x = 0;
+ ss->spiros[ss->spiro_cnt].y = 0;
+ }
+ ++(ss->spiro_cnt);
+ if ( ch==SPIRO_END || ch=='}' )
+ break;
+ }
+ if ( ss->spiro_cnt!=0 && ss->spiros[ss->spiro_cnt-1].ty!= SPIRO_END ) {
+ if ( ss->spiros[ss->spiro_cnt-1].ty==SPIRO_CLOSE_CONTOUR )
+ ss->spiros[ss->spiro_cnt-1].ty = SPIRO_G4;
+ if ( ss->spiro_cnt>=ss->spiro_max )
+ ss->spiros = realloc(ss->spiros,(ss->spiro_max+=2)*sizeof(spiro_cp));
+ ss->spiros[ss->spiro_cnt].ty = SPIRO_END;
+ ss->spiros[ss->spiro_cnt].x = 0;
+ ss->spiros[ss->spiro_cnt].y = 0;
+ }
+}
+
+static void pfed_read_glyph_layer(FILE *ttf,struct ttfinfo *info,Layer *ly,
+ uint32 base, int type, int version) {
+ int cc, rc, i, j;
+ SplineSet *ss;
+ struct contours { int data_off, name_off; SplineSet *ss; } *contours;
+ int gid;
+ RefChar *last, *cur;
+
+ fseek(ttf,base,SEEK_SET);
+ cc = getushort(ttf); /* Contours */
+ rc = 0;
+ if ( version==1 )
+ rc = getushort(ttf); /* References */
+ contours = malloc(cc*sizeof(struct contours));
+ for ( i=0; i<cc; ++i ) {
+ contours[i].data_off = getushort(ttf);
+ contours[i].name_off = getushort(ttf);
+ }
+ last = NULL;
+ for ( i=0; i<rc; ++i ) {
+ cur = RefCharCreate();
+ for ( j=0; j<6; ++j )
+ cur->transform[j] = getlong(ttf)/32768.0;
+ gid = getushort(ttf);
+ if ( gid>=info->glyph_cnt ) {
+ LogError(_("Bad glyph reference in layer info.\n"));
+ break;
+ }
+ cur->sc = info->chars[gid];
+ cur->orig_pos = gid;
+ cur->unicode_enc = cur->sc->unicodeenc;
+ if ( last==NULL )
+ ly->refs = cur;
+ else
+ last->next = cur;
+ last = cur;
+ }
+
+ ss = ly->splines; /* Only relevant for spiros where they live in someone else's layer */
+ for ( i=0; i<cc; ++i ) {
+ if ( type!=1 ) { /* Not spiros */
+ contours[i].ss = chunkalloc(sizeof(SplineSet));
+ if ( i==0 )
+ ly->splines = contours[i].ss;
+ else
+ contours[i-1].ss->next = contours[i].ss;
+ if ( contours[i].name_off!=0 )
+ contours[i].ss->contour_name = pfed_read_utf8(ttf,base+contours[i].name_off);
+ pfed_read_normal_contour(ttf,contours[i].ss,base+contours[i].data_off,type);
+ } else { /* Spiros are actually bound to an already existing layer and don't have an independent existance yet */
+ contours[i].ss = ss;
+ if ( ss!=NULL ) {
+ pfed_read_spiro_contour(ttf,ss,base+contours[i].data_off,type);
+ ss = ss->next;
+ } else
+ LogError(_("Whoops, Ran out of spiros\n"));
+ }
+ }
+ free(contours);
+}
+
+static void pfed_readguidelines(FILE *ttf,struct ttfinfo *info,uint32 base) {
+ int i,v,h,off;
+ int version;
+ SplinePoint *sp, *nsp;
+ SplineSet *ss;
+
+ fseek(ttf,base,SEEK_SET);
+ version = getushort(ttf);
+ if ( version>1 )
+return; /* Bad version number */
+ v = getushort(ttf);
+ h = getushort(ttf);
+ (void) getushort(ttf);
+ off = getushort(ttf);
+
+ if ( off!=0 ) {
+ pfed_read_glyph_layer(ttf,info,&info->guidelines,base+off,info->to_order2?2:3,version);
+ } else {
+ struct npos { int pos; int offset; } *vs, *hs;
+ vs = malloc(v*sizeof(struct npos));
+ hs = malloc(h*sizeof(struct npos));
+ for ( i=0; i<v; ++i ) {
+ vs[i].pos = (short) getushort(ttf);
+ vs[i].offset = getushort(ttf);
+ }
+ for ( i=0; i<h; ++i ) {
+ hs[i].pos = (short) getushort(ttf);
+ hs[i].offset = getushort(ttf);
+ }
+ for ( i=0; i<v; ++i ) {
+ sp = SplinePointCreate(vs[i].pos,-info->emsize);
+ nsp = SplinePointCreate(vs[i].pos,2*info->emsize);
+ SplineMake(sp,nsp,info->to_order2);
+ ss = chunkalloc(sizeof(SplineSet));
+ ss->first = sp; ss->last = nsp;
+ if ( vs[i].offset!=0 )
+ ss->contour_name = pfed_read_utf8(ttf,base+vs[i].offset);
+ ss->next = info->guidelines.splines;
+ info->guidelines.splines = ss;
+ }
+ for ( i=0; i<h; ++i ) {
+ sp = SplinePointCreate(-info->emsize,hs[i].pos);
+ nsp = SplinePointCreate(2*info->emsize,hs[i].pos);
+ SplineMake(sp,nsp,info->to_order2);
+ ss = chunkalloc(sizeof(SplineSet));
+ ss->first = sp; ss->last = nsp;
+ if ( hs[i].offset!=0 )
+ ss->contour_name = pfed_read_utf8(ttf,base+hs[i].offset);
+ ss->next = info->guidelines.splines;
+ info->guidelines.splines = ss;
+ }
+ SPLCategorizePoints(info->guidelines.splines);
+ free(vs); free(hs);
+ }
+}
+
+static void pfed_redo_refs(SplineChar *sc,int layer) {
+ RefChar *refs;
+
+ sc->ticked = true;
+ for ( refs=sc->layers[layer].refs; refs!=NULL; refs=refs->next ) {
+ if ( layer==1 && refs->sc==NULL ) /* If main layer has spiros attached, then we'll get here. Any refs will come from the main ttf reading routines and won't be fixed up yet */
+ continue;
+ if ( !refs->sc->ticked )
+ pfed_redo_refs(refs->sc,layer);
+ SCReinstanciateRefChar(sc,refs,layer);
+ }
+}
+
+static void pfed_read_layer(FILE *ttf,struct ttfinfo *info,int layer,int type, uint32 base,
+ uint32 start,int version) {
+ uint32 *loca = calloc(info->glyph_cnt,sizeof(uint32));
+ int i,j;
+ SplineChar *sc;
+ int rcnt;
+ struct range { int start, last; uint32 offset; } *ranges;
+
+ fseek(ttf,start,SEEK_SET);
+ rcnt = getushort(ttf);
+ ranges = malloc(rcnt*sizeof(struct range));
+ for ( i=0; i<rcnt; ++i ) {
+ ranges[i].start = getushort(ttf);
+ ranges[i].last = getushort(ttf);
+ ranges[i].offset = getlong(ttf);
+ }
+ for ( i=0; i<rcnt; ++i ) {
+ fseek(ttf,base+ranges[i].offset,SEEK_SET);
+ for ( j=ranges[i].start; j<=ranges[i].last; ++j )
+ loca[j] = getlong(ttf);
+ for ( j=ranges[i].start; j<=ranges[i].last; ++j ) {
+ Layer *ly;
+ sc = info->chars[j];
+ ly = &sc->layers[layer];
+ if ( loca[j]!=0 )
+ pfed_read_glyph_layer(ttf,info,ly,base+loca[j],type,version);
+ }
+ }
+ free(ranges); free(loca);
+
+ for ( i=0; i<info->glyph_cnt; ++i ) if ( info->chars[i]!=NULL )
+ info->chars[i]->ticked = false;
+ for ( i=0; i<info->glyph_cnt; ++i ) if ( info->chars[i]!=NULL )
+ pfed_redo_refs(info->chars[i],layer);
+}
+
+static void pfed_readotherlayers(FILE *ttf,struct ttfinfo *info,uint32 base) {
+ int i, l, lcnt, spiro_index, gid;
+ int version;
+ struct layer_info { int type, name_off, data_off, sf_layer; char *name; } *layers;
+ int non_spiro_cnt=0;
+ SplineChar *sc;
+
+ fseek(ttf,base,SEEK_SET);
+ version = getushort(ttf);
+ if ( version>1 )
+return; /* Bad version number */
+ lcnt = getushort(ttf);
+ layers = malloc(lcnt*sizeof(struct layer_info));
+ for ( i=0; i<lcnt; ++i ) {
+ layers[i].type = getushort(ttf);
+ layers[i].name_off = getushort(ttf);
+ layers[i].data_off = getlong(ttf);
+ layers[i].sf_layer = -1;
+ }
+ spiro_index = -1;
+ non_spiro_cnt = 0;
+ for ( i=0; i<lcnt; ++i ) {
+ if ( layers[i].name_off==0 )
+ layers[i].name = copy("Unnamed");
+ else {
+ layers[i].name = pfed_read_utf8(ttf,base+layers[i].name_off);
+ if ( layers[i].type==1 && strcmp(layers[i].name,"Spiro")==0 )
+ spiro_index = i;
+ }
+ if ( layers[i].type==2 || layers[i].type==3 || layers[i].type==0x102 || layers[i].type==0x103 )
+ ++non_spiro_cnt;
+ }
+ if ( spiro_index==-1 ) {
+ for ( i=0; i<lcnt; ++i )
+ if ( layers[i].type==1 ) {
+ spiro_index=i;
+ break;
+ }
+ }
+
+ if ( non_spiro_cnt!=0 ) {
+ info->layer_cnt = non_spiro_cnt+1;
+ info->layers = calloc(info->layer_cnt+1,sizeof(LayerInfo));
+ info->layers[ly_back].background = true;
+ info->layers[ly_fore].order2 = info->to_order2;
+ info->layers[ly_fore].background = false;
+ l = i = 0;
+ if ( (layers[i].type&0xff)==1 )
+ ++i;
+ if ( layers[i].type&0x100 ) {
+ /* first layer output is foreground, so it can't replace the background layer */
+ ++info->layer_cnt;
+ l = 2;
+ info->layers[ly_back].order2 = info->to_order2;
+ }
+ for ( ; i<lcnt; ++i ) if ( (layers[i].type&0xff)==2 || (layers[i].type&0xff)==3 ) {
+ info->layers[l].name = layers[i].name;
+ layers[i].name = NULL;
+ layers[i].sf_layer = l;
+ info->layers[l].order2 = (layers[i].type&0xff)==2;
+ info->layers[l].background = (layers[i].type&0x100)?0:1;
+ if ( l==0 ) l=2; else ++l;
+ }
+ if ( info->layer_cnt!=2 ) {
+ for ( gid = 0; gid<info->glyph_cnt; ++gid ) if ((sc=info->chars[gid])!=NULL ) {
+ sc->layers = realloc(sc->layers,info->layer_cnt*sizeof(Layer));
+ memset(sc->layers+2,0,(info->layer_cnt-2)*sizeof(Layer));
+ sc->layer_cnt = info->layer_cnt;
+ }
+ }
+ }
+ if ( spiro_index!=-1 )
+ pfed_read_layer(ttf,info,ly_fore,layers[spiro_index].type,base,base+layers[spiro_index].data_off,version);
+ for ( i=0; i<lcnt; ++i ) if ( layers[i].sf_layer!=-1 ) {
+ pfed_read_layer(ttf,info,layers[i].sf_layer,layers[i].type&0xff,
+ base,base+layers[i].data_off,version);
+ }
+ for ( i=0; i<lcnt; ++i )
+ free( layers[i].name );
+ free( layers );
+}
+
+void pfed_read(FILE *ttf,struct ttfinfo *info) {
+ int n,i;
+ struct tagoff { uint32 tag, offset; } tagoff[MAX_SUBTABLE_TYPES+30];
+
+ fseek(ttf,info->pfed_start,SEEK_SET);
+
+ if ( getlong(ttf)!=0x00010000 )
+return;
+ n = getlong(ttf);
+ if ( n>=MAX_SUBTABLE_TYPES+30 )
+ n = MAX_SUBTABLE_TYPES+30;
+ for ( i=0; i<n; ++i ) {
+ tagoff[i].tag = getlong(ttf);
+ tagoff[i].offset = getlong(ttf);
+ }
+ for ( i=0; i<n; ++i ) switch ( tagoff[i].tag ) {
+ case fcmt_TAG: case flog_TAG:
+ pfed_readfontcomment(ttf,info,info->pfed_start+tagoff[i].offset, tagoff[i].tag);
+ break;
+ case cvtc_TAG:
+ pfed_readcvtcomments(ttf,info,info->pfed_start+tagoff[i].offset);
+ break;
+ case cmnt_TAG:
+ pfed_readglyphcomments(ttf,info,info->pfed_start+tagoff[i].offset);
+ break;
+ case colr_TAG:
+ pfed_readcolours(ttf,info,info->pfed_start+tagoff[i].offset);
+ break;
+ case GPOS_TAG:
+ pfed_readlookupnames(ttf,info,info->pfed_start+tagoff[i].offset,info->gpos_lookups);
+ break;
+ case GSUB_TAG:
+ pfed_readlookupnames(ttf,info,info->pfed_start+tagoff[i].offset,info->gsub_lookups);
+ break;
+ case layr_TAG:
+ pfed_readotherlayers(ttf,info,info->pfed_start+tagoff[i].offset);
+ break;
+ case guid_TAG:
+ pfed_readguidelines(ttf,info,info->pfed_start+tagoff[i].offset);
+ break;
+ default:
+ LogError( _("Unknown subtable '%c%c%c%c' in 'PfEd' table, ignored\n"),
+ tagoff[i].tag>>24, (tagoff[i].tag>>16)&0xff, (tagoff[i].tag>>8)&0xff, tagoff[i].tag&0xff );
+ break;
+ }
+}
+
+/* 'TeX ' table format is as follows... */
+/* uint32 version number 0x00010000 */
+/* uint32 subtable count */
+/* struct { uint32 tab, offset } tag/offset for first subtable */
+/* struct { uint32 tab, offset } tag/offset for second subtable */
+/* ... */
+
+/* 'TeX ' 'ftpm' font parameter subtable format */
+/* short version number 0 */
+/* parameter count */
+/* array of { 4chr tag, value } */
+
+/* 'TeX ' 'htdp' per-glyph height/depth subtable format */
+/* short version number 0 */
+/* short glyph-count */
+/* array[glyph-count] of { int16 height,depth } */
+
+/* 'TeX ' 'itlc' per-glyph italic correction subtable */
+/* short version number 0 */
+/* short glyph-count */
+/* array[glyph-count] of int16 italic_correction */
+
+/* !!!!!!!!!!! OBSOLETE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
+/* 'TeX ' 'sbsp' per-glyph sub/super script positioning subtable */
+/* short version number 0 */
+/* short glyph-count */
+/* array[glyph-count] of { int16 sub,super } */
+
+#undef MAX_SUBTABLE_TYPES
+#define MAX_SUBTABLE_TYPES 4
+
+struct TeX_subtabs {
+ int next;
+ struct {
+ FILE *data;
+ uint32 tag;
+ uint32 offset;
+ } subtabs[MAX_SUBTABLE_TYPES];
+};
+
+static uint32 tex_text_params[] = {
+ TeX_Slant,
+ TeX_Space,
+ TeX_Stretch,
+ TeX_Shrink,
+ TeX_XHeight,
+ TeX_Quad,
+ TeX_ExtraSp,
+ 0
+};
+static uint32 tex_math_params[] = {
+ TeX_Slant,
+ TeX_Space,
+ TeX_Stretch,
+ TeX_Shrink,
+ TeX_XHeight,
+ TeX_Quad,
+ TeX_MathSp,
+ TeX_Num1,
+ TeX_Num2,
+ TeX_Num3,
+ TeX_Denom1,
+ TeX_Denom2,
+ TeX_Sup1,
+ TeX_Sup2,
+ TeX_Sup3,
+ TeX_Sub1,
+ TeX_Sub2,
+ TeX_SupDrop,
+ TeX_SubDrop,
+ TeX_Delim1,
+ TeX_Delim2,
+ TeX_AxisHeight,
+ 0};
+static uint32 tex_mathext_params[] = {
+ TeX_Slant,
+ TeX_Space,
+ TeX_Stretch,
+ TeX_Shrink,
+ TeX_XHeight,
+ TeX_Quad,
+ TeX_MathSp,
+ TeX_DefRuleThick,
+ TeX_BigOpSpace1,
+ TeX_BigOpSpace2,
+ TeX_BigOpSpace3,
+ TeX_BigOpSpace4,
+ TeX_BigOpSpace5,
+ 0};
+
+/* ************************************************************************** */
+/* ************************* The 'TeX ' table ************************* */
+/* ************************* Output ************************* */
+/* ************************************************************************** */
+
+static void TeX_dumpFontParams(SplineFont *sf, struct TeX_subtabs *tex, struct alltabs *at ) {
+ FILE *fprm;
+ int i,pcnt;
+ uint32 *tags;
+
+ if ( sf->texdata.type==tex_unset )
+return;
+ tex->subtabs[tex->next].tag = CHR('f','t','p','m');
+ tex->subtabs[tex->next++].data = fprm = tmpfile2();
+
+ putshort(fprm,0); /* sub-table version number */
+ pcnt = sf->texdata.type==tex_math ? 22 : sf->texdata.type==tex_mathext ? 13 : 7;
+ tags = sf->texdata.type==tex_math ? tex_math_params :
+ sf->texdata.type==tex_mathext ? tex_mathext_params :
+ tex_text_params;
+ putshort(fprm,pcnt);
+ for ( i=0; i<pcnt; ++i ) {
+ putlong(fprm,tags[i]);
+ putlong(fprm,sf->texdata.params[i]);
+ }
+ /* always aligned */
+}
+
+static void TeX_dumpHeightDepth(SplineFont *sf, struct TeX_subtabs *tex, struct alltabs *at ) {
+ FILE *htdp;
+ int i,j,k,last_g, gid;
+ DBounds b;
+
+ for ( i=at->gi.gcnt-1; i>=0; --i ) {
+ gid = at->gi.bygid[i];
+ if ( gid!=-1 && sf->glyphs[gid]!=NULL &&
+ (sf->glyphs[gid]->tex_height!=TEX_UNDEF || sf->glyphs[gid]->tex_depth!=TEX_UNDEF))
+ break;
+ }
+ if ( i<0 ) /* No height/depth info */
+return;
+
+ tex->subtabs[tex->next].tag = CHR('h','t','d','p');
+ tex->subtabs[tex->next++].data = htdp = tmpfile2();
+
+ putshort(htdp,0); /* sub-table version number */
+ putshort(htdp,sf->glyphs[gid]->ttf_glyph+1);/* data for this many glyphs */
+
+ last_g = -1;
+ for ( j=0; j<=i; ++j ) {
+ gid = at->gi.bygid[j];
+ if ( gid!=-1 && sf->glyphs[gid]!=NULL ) {
+ SplineChar *sc = sf->glyphs[gid];
+ for ( k=last_g+1; k<sc->ttf_glyph; ++k ) {
+ putshort(htdp,0);
+ putshort(htdp,0);
+ }
+ if ( sc->tex_depth==TEX_UNDEF || sc->tex_height==TEX_UNDEF )
+ SplineCharFindBounds(sc,&b);
+ putshort( htdp, sc->tex_height==TEX_UNDEF ? b.maxy : sc->tex_height );
+ putshort( htdp, sc->tex_depth==TEX_UNDEF ? -b.miny : sc->tex_depth );
+ last_g = sc->ttf_glyph;
+ }
+ }
+ /* always aligned */
+}
+
+static void TeX_dumpItalicCorr(SplineFont *sf, struct TeX_subtabs *tex, struct alltabs *at ) {
+ FILE *itlc;
+ int i,j,k,last_g, gid;
+
+ for ( i=at->gi.gcnt-1; i>=0; --i ) {
+ gid = at->gi.bygid[i];
+ if ( gid!=-1 && sf->glyphs[gid]!=NULL &&
+ sf->glyphs[gid]->italic_correction!=TEX_UNDEF )
+ break;
+ }
+ if ( i<0 ) /* No italic_correction info */
+return;
+
+ tex->subtabs[tex->next].tag = CHR('i','t','l','c');
+ tex->subtabs[tex->next++].data = itlc = tmpfile2();
+
+ putshort(itlc,0); /* sub-table version number */
+ putshort(itlc,sf->glyphs[gid]->ttf_glyph+1);/* data for this many glyphs */
+
+ last_g = -1;
+ for ( j=0; j<=i; ++j ) {
+ gid = at->gi.bygid[j];
+ if ( gid!=-1 && sf->glyphs[gid]!=NULL ) {
+ SplineChar *sc = sf->glyphs[gid];
+ for ( k=last_g+1; k<sc->ttf_glyph; ++k ) {
+ putshort(itlc,0);
+ putshort(itlc,0);
+ }
+ putshort( itlc, sc->italic_correction!=TEX_UNDEF ? sc->italic_correction :
+ 0 );
+ last_g = sc->ttf_glyph;
+ }
+ }
+ /* always aligned */
+}
+
+void tex_dump(struct alltabs *at, SplineFont *sf) {
+ struct TeX_subtabs tex;
+ FILE *file;
+ int i;
+ uint32 offset;
+
+ if ( !(at->gi.flags & ttf_flag_TeXtable ))
+return;
+
+ memset(&tex,0,sizeof(tex));
+ TeX_dumpFontParams(sf,&tex,at);
+ TeX_dumpHeightDepth(sf,&tex,at);
+ TeX_dumpItalicCorr(sf,&tex,at);
+
+ if ( tex.next==0 )
+return; /* No subtables */
+
+ at->tex = file = tmpfile2();
+ putlong(file, 0x00010000); /* Version number */
+ putlong(file, tex.next); /* sub-table count */
+ offset = 2*sizeof(uint32) + 2*tex.next*sizeof(uint32);
+ for ( i=0; i<tex.next; ++i ) {
+ putlong(file,tex.subtabs[i].tag);
+ putlong(file,offset);
+ fseek(tex.subtabs[i].data,0,SEEK_END);
+ tex.subtabs[i].offset = offset;
+ offset += ftell(tex.subtabs[i].data);
+ }
+ for ( i=0; i<tex.next; ++i ) {
+ fseek(tex.subtabs[i].data,0,SEEK_SET);
+ ttfcopyfile(file,tex.subtabs[i].data,tex.subtabs[i].offset,"TeX-subtable");
+ }
+ if ( ftell(file)&2 )
+ putshort(file,0);
+ if ( ftell(file)&3 )
+ IError("'TeX ' table not properly aligned");
+ at->texlen = ftell(file);
+}
+
+/* ************************* The 'TeX ' table ************************* */
+/* ************************* Input ************************* */
+
+static void TeX_readFontParams(FILE *ttf,struct ttfinfo *info,uint32 base) {
+ int i,pcnt;
+ static uint32 *alltags[] = { tex_text_params, tex_math_params, tex_mathext_params };
+ int j,k;
+ uint32 tag;
+ int32 val;
+
+ fseek(ttf,base,SEEK_SET);
+ if ( getushort(ttf)!=0 ) /* Don't know how to read this version of the subtable */
+return;
+ pcnt = getushort(ttf);
+ if ( pcnt==22 ) info->texdata.type = tex_math;
+ else if ( pcnt==13 ) info->texdata.type = tex_mathext;
+ else if ( pcnt>=7 ) info->texdata.type = tex_text;
+ for ( i=0; i<pcnt; ++i ) {
+ tag = getlong(ttf);
+ val = getlong(ttf);
+ for ( j=0; j<3; ++j ) {
+ for ( k=0; alltags[j][k]!=0; ++k )
+ if ( alltags[j][k]==tag )
+ break;
+ if ( alltags[j][k]==tag )
+ break;
+ }
+ if ( j<3 )
+ info->texdata.params[k] = val;
+ }
+}
+
+static void TeX_readHeightDepth(FILE *ttf,struct ttfinfo *info,uint32 base) {
+ int i,gcnt;
+
+ fseek(ttf,base,SEEK_SET);
+ if ( getushort(ttf)!=0 ) /* Don't know how to read this version of the subtable */
+return;
+ gcnt = getushort(ttf);
+ for ( i=0; i<gcnt && i<info->glyph_cnt; ++i ) {
+ int h, d;
+ h = getushort(ttf);
+ d = getushort(ttf);
+ if ( info->chars[i]!=NULL ) {
+ info->chars[i]->tex_height = h;
+ info->chars[i]->tex_depth = d;
+ }
+ }
+}
+
+static void TeX_readItalicCorr(FILE *ttf,struct ttfinfo *info,uint32 base) {
+ int i,gcnt;
+
+ fseek(ttf,base,SEEK_SET);
+ if ( getushort(ttf)!=0 ) /* Don't know how to read this version of the subtable */
+return;
+ gcnt = getushort(ttf);
+ for ( i=0; i<gcnt && i<info->glyph_cnt; ++i ) {
+ int ital;
+ ital = getushort(ttf);
+ if ( info->chars[i]!=NULL ) {
+ info->chars[i]->italic_correction = ital;
+ }
+ }
+}
+
+void tex_read(FILE *ttf,struct ttfinfo *info) {
+ int n,i;
+ struct tagoff { uint32 tag, offset; } tagoff[MAX_SUBTABLE_TYPES+30];
+
+ fseek(ttf,info->tex_start,SEEK_SET);
+
+ if ( getlong(ttf)!=0x00010000 )
+return;
+ n = getlong(ttf);
+ if ( n>=MAX_SUBTABLE_TYPES+30 )
+ n = MAX_SUBTABLE_TYPES+30;
+ for ( i=0; i<n; ++i ) {
+ tagoff[i].tag = getlong(ttf);
+ tagoff[i].offset = getlong(ttf);
+ }
+ for ( i=0; i<n; ++i ) switch ( tagoff[i].tag ) {
+ case CHR('f','t','p','m'):
+ TeX_readFontParams(ttf,info,info->tex_start+tagoff[i].offset);
+ break;
+ case CHR('h','t','d','p'):
+ TeX_readHeightDepth(ttf,info,info->tex_start+tagoff[i].offset);
+ break;
+ case CHR('i','t','l','c'):
+ TeX_readItalicCorr(ttf,info,info->tex_start+tagoff[i].offset);
+ break;
+ default:
+ LogError( _("Unknown subtable '%c%c%c%c' in 'TeX ' table, ignored\n"),
+ tagoff[i].tag>>24, (tagoff[i].tag>>16)&0xff, (tagoff[i].tag>>8)&0xff, tagoff[i].tag&0xff );
+ break;
+ }
+}
+
+/* ************************************************************************** */
+/* ************************* The 'BDF ' table ************************* */
+/* ************************* Output ************************* */
+/* ************************************************************************** */
+
+/* the BDF table is used to store BDF properties so that we can do round trip */
+/* conversion from BDF->otb->BDF without losing anything. */
+/* Format:
+ USHORT version : 'BDF' table version number, must be 0x0001
+ USHORT strikeCount : number of strikes in table
+ ULONG stringTable : offset (from start of BDF table) to string table
+
+followed by an array of 'strikeCount' descriptors that look like:
+ USHORT ppem : vertical pixels-per-EM for this strike
+ USHORT num_items : number of items (properties and atoms), max is 255
+
+this array is followed by 'strikeCount' value sets. Each "value set" is
+an array of (num_items) items that look like:
+ ULONG item_name : offset in string table to item name
+ USHORT item_type : item type: 0 => non-property string (e.g. COMMENT)
+ 1 => non-property atom (e.g. FONT)
+ 2 => non-property int32
+ 3 => non-property uint32
+ 0x10 => flag for a property, ored
+ with above value types)
+ ULONG item_value : item value.
+ strings => an offset into the string table
+ to the corresponding string,
+ without the surrending double-quotes
+
+ atoms => an offset into the string table
+
+ integers => the corresponding 32-bit value
+Then the string table of null terminated strings. These strings should be in
+ASCII.
+*/
+
+/* ************************* The 'BDF ' table ************************* */
+/* ************************* Input ************************* */
+
+static char *getstring(FILE *ttf,long start) {
+ long here = ftell(ttf);
+ int len, ch;
+ char *str, *pt;
+
+ if ( here<0 ) return( NULL );
+ fseek(ttf,start,SEEK_SET);
+ for ( len=1; (ch=getc(ttf))>0 ; ++len );
+ fseek(ttf,start,SEEK_SET);
+ pt = str = malloc(len);
+ while ( (ch=getc(ttf))>0 )
+ *pt++ = ch;
+ *pt = '\0';
+ fseek(ttf,here,SEEK_SET);
+return( str );
+}
+
+/* COMMENTS get stored all in one lump by freetype. De-lump them */
+static int CheckForNewlines(BDFFont *bdf,int k) {
+ char *pt, *start;
+ int cnt, i;
+
+ for ( cnt=0, pt = bdf->props[k].u.atom; *pt; ++pt )
+ if ( *pt=='\n' )
+ ++cnt;
+ if ( cnt==0 )
+return( k );
+
+ bdf->prop_cnt += cnt;
+ bdf->props = realloc(bdf->props, bdf->prop_cnt*sizeof( BDFProperties ));
+
+ pt = strchr(bdf->props[k].u.atom,'\n');
+ *pt = '\0'; ++pt;
+ for ( i=1; i<=cnt; ++i ) {
+ start = pt;
+ while ( *pt!='\n' && *pt!='\0' ) ++pt;
+ bdf->props[k+i].name = copy(bdf->props[k].name);
+ bdf->props[k+i].type = bdf->props[k].type;
+ bdf->props[k+i].u.atom = copyn(start,pt-start);
+ if ( *pt=='\n' ) ++pt;
+ }
+ pt = copy( bdf->props[k].u.atom );
+ free( bdf->props[k].u.atom );
+ bdf->props[k].u.atom = pt;
+return( k+cnt );
+}
+
+void ttf_bdf_read(FILE *ttf,struct ttfinfo *info) {
+ int strike_cnt, i,j,k;
+ long string_start;
+ struct bdfinfo { BDFFont *bdf; int cnt; } *bdfinfo;
+ BDFFont *bdf;
+
+ if ( info->bdf_start==0 )
+return;
+ fseek(ttf,info->bdf_start,SEEK_SET);
+ if ( getushort(ttf)!=1 )
+return;
+ strike_cnt = getushort(ttf);
+ string_start = getlong(ttf) + info->bdf_start;
+
+ bdfinfo = malloc(strike_cnt*sizeof(struct bdfinfo));
+ for ( i=0; i<strike_cnt; ++i ) {
+ int ppem, num_items;
+ ppem = getushort(ttf);
+ num_items = getushort(ttf);
+ for ( bdf=info->bitmaps; bdf!=NULL; bdf=bdf->next )
+ if ( bdf->pixelsize==ppem )
+ break;
+ bdfinfo[i].bdf = bdf;
+ bdfinfo[i].cnt = num_items;
+ }
+
+ for ( i=0; i<strike_cnt; ++i ) {
+ if ( (bdf = bdfinfo[i].bdf) ==NULL )
+ fseek(ttf,10*bdfinfo[i].cnt,SEEK_CUR);
+ else {
+ bdf->prop_cnt = bdfinfo[i].cnt;
+ bdf->props = malloc(bdf->prop_cnt*sizeof(BDFProperties));
+ for ( j=k=0; j<bdfinfo[i].cnt; ++j, ++k ) {
+ long name = getlong(ttf);
+ int type = getushort(ttf);
+ long value = getlong(ttf);
+ bdf->props[k].type = type;
+ bdf->props[k].name = getstring(ttf,string_start+name);
+ switch ( type&~prt_property ) {
+ case prt_int: case prt_uint:
+ bdf->props[k].u.val = value;
+ if ( strcmp(bdf->props[k].name,"FONT_ASCENT")==0 &&
+ value<=bdf->pixelsize ) {
+ bdf->ascent = value;
+ bdf->descent = bdf->pixelsize-value;
+ }
+ break;
+ case prt_string: case prt_atom:
+ bdf->props[k].u.str = getstring(ttf,string_start+value);
+ k = CheckForNewlines(bdf,k);
+ break;
+ }
+ }
+ }
+ }
+ free(bdfinfo);
+}
+
+
+/* ************************************************************************** */
+/* ************************* The 'FFTM' table ************************* */
+/* ************************* Output ************************* */
+/* ************************************************************************** */
+
+/* FontForge timestamp table */
+/* Contains: */
+/* date of fontforge sources */
+/* date of font's (not file's) creation */
+/* date of font's modification */
+int ttf_fftm_dump(SplineFont *sf,struct alltabs *at) {
+ int32 results[2];
+
+ at->fftmf = tmpfile2();
+
+ putlong(at->fftmf,0x00000001); /* Version */
+
+ cvt_unix_to_1904(LibFF_ModTime,results);
+ putlong(at->fftmf,results[1]);
+ putlong(at->fftmf,results[0]);
+
+ cvt_unix_to_1904(sf->creationtime,results);
+ putlong(at->fftmf,results[1]);
+ putlong(at->fftmf,results[0]);
+
+ cvt_unix_to_1904(sf->modificationtime,results);
+ putlong(at->fftmf,results[1]);
+ putlong(at->fftmf,results[0]);
+
+ at->fftmlen = ftell(at->fftmf); /* had better be 7*4 */
+ /* It will never be misaligned */
+ if ( (at->fftmlen&1)!=0 )
+ putc(0,at->fftmf);
+ if ( ((at->fftmlen+1)&2)!=0 )
+ putshort(at->fftmf,0);
+return( true );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/uiinterface.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/uiinterface.h
new file mode 100644
index 00000000000..c965de0fbc9
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/uiinterface.h
@@ -0,0 +1,159 @@
+/* Copyright (C) 2007-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _UIINTERFACE_H
+#define _UIINTERFACE_H
+# include <basics.h>
+#include <fontforge-config.h>
+
+/* This encapsulates a set of callbacks and stubs. The callbacks get activated*/
+/* when an event happens (a glyph in a font changes for example, then all */
+/* charviews looking at it must be updated), and the stubs provide some simple*/
+/* UI routines: Post an error, etc. */
+
+/* ************************************************************************** */
+/* Basic, low-level UI routines for events we discover deep inside script code*/
+/* ************************************************************************** */
+
+struct ui_interface {
+ /* The following is used to post a fontforge internal error */
+ /* currently it puts up a dlg displaying the error text */
+ void (*ierror)(const char *fmt,...);
+
+ /* The following is a simple dialog to alert the user that s/he has */
+ /* made an error. Currently it posts a modal dlg and waits for the */
+ /* user to dismiss it */
+ /* The title argument is the window's title. The error argument is the */
+ /* text of the message. It may contain printf formatting. It may contain */
+ /* newlines to force line breaks -- even if it doesn't contain new lines */
+ /* the routine will wrap the text if a line is too long */
+ void (*post_error)(const char *title,const char *error,...);
+
+ /* The following is used to post a warning message in such a way that it */
+ /* will not impede the user. Currently it creates a little window at the */
+ /* bottom right of the screen and writes successive messages there */
+ void (*logwarning)(const char *fmt,...);
+
+ /* The following is another way to post a warning message in such a way */
+ /* that it will not impede the user. Currently it pops up a little */
+ /* non-modal dlg which vanishes after a minute or two (or if the user */
+ /* dismisses it, of course */
+ void (*post_warning)(const char *title,const char *statement,...);
+
+ /* Occasionally we we be deep in a non-ui routine and we find we must ask */
+ /* the user a question. In this routine the choices are displayed as */
+ /* buttons, one button is the default, another is a cancel choice */
+ int (*ask)(const char *title, const char **answers,
+ int def, int cancel,const char *question,...);
+
+ /* Similar to the above, except here the choices are presented as a */
+ /* scrolled list. Return -1 if the user cancels */
+ int (*choose)(const char *title, const char **answers,
+ int def, int cancel,const char *question,...);
+
+ /* Multiple things can be selected, sel is an in/out parameter, one byte */
+ /* per entry in the choice array. 0=> not selected, 1=>selected */
+ int (*choose_multiple)(char *title, const char **choices,char *sel,
+ int cnt, char *buts[2], const char *question,...);
+
+ /* Here we want a string. We are passed a default answer (or NULL) */
+ /* The return is NULL on cancel, otherwise a string which must be freed */
+ char *(*ask_string)(const char *title,
+ const char *def,const char *question,...);
+ /* Same as above, except for entering a password */
+ char *(*ask_password)(const char *title,
+ const char *def,const char *question,...);
+
+ /* The next two routines are only used in the python interface to provide */
+ /* a python script running in ff a way to open a file */
+ /* Arguments are a window title for the dlg, a default file (or NULL), and */
+ /* an initial filter (unix wildcards) or NULL */
+ char *(*open_file)(const char *title, const char *defaultfile,
+ const char *initial_filter);
+ char *(*saveas_file)(const char *title, const char *defaultfile,
+ const char *initial_filter);
+
+ /* These routines are for a progress indicator */
+ void (*progress_start)(int delay, const char *title, const char *line1,
+ const char *line2, int tot, int stages);
+ void (*progress_end)(void);
+ void (*progress_show)(void);
+ void (*progress_enable_stop)(int);
+ int (*progress_next)(void);
+ int (*progress_next_stage)(void);
+ int (*progress_increment)(int);
+ void (*progress_change_line1)(const char *);
+ void (*progress_change_line2)(const char *);
+ void (*progress_pause)(void);
+ void (*progress_resume)(void);
+ void (*progress_change_stages)(int);
+ void (*progress_change_total)(int);
+ int (*progress_reset)(void);
+
+ void (*allow_events)(void);
+
+ /* pops up a dlg asking user whether to do remove overlap (and other stuff)*/
+ /* when loading an eps file with strokes, etc. */
+ int (*stroke_flags)(void);
+};
+extern struct ui_interface *ui_interface;
+
+#define IError (ui_interface->ierror)
+#define LogError (ui_interface->logwarning)
+#define ff_post_notice (ui_interface->post_warning)
+#define ff_post_error (ui_interface->post_error)
+#define ff_ask (ui_interface->ask)
+#define ff_choose (ui_interface->choose)
+#define ff_choose_multiple (ui_interface->choose_multiple)
+#define ff_ask_string (ui_interface->ask_string)
+#define ff_ask_password (ui_interface->ask_password)
+
+#define ff_open_filename (ui_interface->open_file)
+#define ff_save_filename (ui_interface->saveas_file)
+
+#define ff_progress_start_indicator (ui_interface->progress_start)
+#define ff_progress_end_indicator (ui_interface->progress_end)
+#define ff_progress_show (ui_interface->progress_show)
+#define ff_progress_enable_stop (ui_interface->progress_enable_stop)
+#define ff_progress_next (ui_interface->progress_next)
+#define ff_progress_next_stage (ui_interface->progress_next_stage)
+#define ff_progress_increment (ui_interface->progress_increment)
+#define ff_progress_change_line1 (ui_interface->progress_change_line1)
+#define ff_progress_change_line2 (ui_interface->progress_change_line2)
+#define ff_progress_pause_timer (ui_interface->progress_pause)
+#define ff_progress_resume_timer (ui_interface->progress_resume)
+#define ff_progress_change_stages (ui_interface->progress_change_stages)
+#define ff_progress_change_total (ui_interface->progress_change_total)
+#define ff_progress_reset (ui_interface->progress_reset)
+
+#define ff_progress_allow_events (ui_interface->allow_events)
+
+#define TTFNameIds (ui_interface->strid)
+#define MSLangString (ui_interface->mslang)
+
+#define PsStrokeFlagsDlg (ui_interface->stroke_flags)
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/unialt.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/unialt.c
new file mode 100644
index 00000000000..1718338d63a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/unialt.c
@@ -0,0 +1,8937 @@
+#include <chardata.h>
+
+/* This file was generated using the program 'makeutype' */
+
+static const unichar_t str_a0[] = { 0x0020, 0 };
+static const unichar_t str_a8[] = { 0x0020, 0x0308, 0 };
+static const unichar_t str_aa[] = { 0x0061, 0 };
+static const unichar_t str_af[] = { 0x0020, 0x0304, 0 };
+static const unichar_t str_b2[] = { 0x0032, 0 };
+static const unichar_t str_b3[] = { 0x0033, 0 };
+static const unichar_t str_b4[] = { 0x0020, 0x0301, 0 };
+static const unichar_t str_b5[] = { 0x03bc, 0 };
+static const unichar_t str_b8[] = { 0x0020, 0x0327, 0 };
+static const unichar_t str_b9[] = { 0x0031, 0 };
+static const unichar_t str_ba[] = { 0x006f, 0 };
+static const unichar_t str_bc[] = { 0x0031, 0x2044, 0x0034, 0 };
+static const unichar_t str_bd[] = { 0x0031, 0x2044, 0x0032, 0 };
+static const unichar_t str_be[] = { 0x0033, 0x2044, 0x0034, 0 };
+static const unichar_t str_c0[] = { 0x0041, 0x0300, 0 };
+static const unichar_t str_c1[] = { 0x0041, 0x0301, 0 };
+static const unichar_t str_c2[] = { 0x0041, 0x0302, 0 };
+static const unichar_t str_c3[] = { 0x0041, 0x0303, 0 };
+static const unichar_t str_c4[] = { 0x0041, 0x0308, 0 };
+static const unichar_t str_c5[] = { 0x0041, 0x030a, 0 };
+static const unichar_t str_c7[] = { 0x0043, 0x0327, 0 };
+static const unichar_t str_c8[] = { 0x0045, 0x0300, 0 };
+static const unichar_t str_c9[] = { 0x0045, 0x0301, 0 };
+static const unichar_t str_ca[] = { 0x0045, 0x0302, 0 };
+static const unichar_t str_cb[] = { 0x0045, 0x0308, 0 };
+static const unichar_t str_cc[] = { 0x0049, 0x0300, 0 };
+static const unichar_t str_cd[] = { 0x0049, 0x0301, 0 };
+static const unichar_t str_ce[] = { 0x0049, 0x0302, 0 };
+static const unichar_t str_cf[] = { 0x0049, 0x0308, 0 };
+static const unichar_t str_d1[] = { 0x004e, 0x0303, 0 };
+static const unichar_t str_d2[] = { 0x004f, 0x0300, 0 };
+static const unichar_t str_d3[] = { 0x004f, 0x0301, 0 };
+static const unichar_t str_d4[] = { 0x004f, 0x0302, 0 };
+static const unichar_t str_d5[] = { 0x004f, 0x0303, 0 };
+static const unichar_t str_d6[] = { 0x004f, 0x0308, 0 };
+static const unichar_t str_d9[] = { 0x0055, 0x0300, 0 };
+static const unichar_t str_da[] = { 0x0055, 0x0301, 0 };
+static const unichar_t str_db[] = { 0x0055, 0x0302, 0 };
+static const unichar_t str_dc[] = { 0x0055, 0x0308, 0 };
+static const unichar_t str_dd[] = { 0x0059, 0x0301, 0 };
+static const unichar_t str_e0[] = { 0x0061, 0x0300, 0 };
+static const unichar_t str_e1[] = { 0x0061, 0x0301, 0 };
+static const unichar_t str_e2[] = { 0x0061, 0x0302, 0 };
+static const unichar_t str_e3[] = { 0x0061, 0x0303, 0 };
+static const unichar_t str_e4[] = { 0x0061, 0x0308, 0 };
+static const unichar_t str_e5[] = { 0x0061, 0x030a, 0 };
+static const unichar_t str_e7[] = { 0x0063, 0x0327, 0 };
+static const unichar_t str_e8[] = { 0x0065, 0x0300, 0 };
+static const unichar_t str_e9[] = { 0x0065, 0x0301, 0 };
+static const unichar_t str_ea[] = { 0x0065, 0x0302, 0 };
+static const unichar_t str_eb[] = { 0x0065, 0x0308, 0 };
+static const unichar_t str_ec[] = { 0x0069, 0x0300, 0 };
+static const unichar_t str_ed[] = { 0x0069, 0x0301, 0 };
+static const unichar_t str_ee[] = { 0x0069, 0x0302, 0 };
+static const unichar_t str_ef[] = { 0x0069, 0x0308, 0 };
+static const unichar_t str_f1[] = { 0x006e, 0x0303, 0 };
+static const unichar_t str_f2[] = { 0x006f, 0x0300, 0 };
+static const unichar_t str_f3[] = { 0x006f, 0x0301, 0 };
+static const unichar_t str_f4[] = { 0x006f, 0x0302, 0 };
+static const unichar_t str_f5[] = { 0x006f, 0x0303, 0 };
+static const unichar_t str_f6[] = { 0x006f, 0x0308, 0 };
+static const unichar_t str_f9[] = { 0x0075, 0x0300, 0 };
+static const unichar_t str_fa[] = { 0x0075, 0x0301, 0 };
+static const unichar_t str_fb[] = { 0x0075, 0x0302, 0 };
+static const unichar_t str_fc[] = { 0x0075, 0x0308, 0 };
+static const unichar_t str_fd[] = { 0x0079, 0x0301, 0 };
+static const unichar_t str_ff[] = { 0x0079, 0x0308, 0 };
+static const unichar_t str_100[] = { 0x0041, 0x0304, 0 };
+static const unichar_t str_101[] = { 0x0061, 0x0304, 0 };
+static const unichar_t str_102[] = { 0x0041, 0x0306, 0 };
+static const unichar_t str_103[] = { 0x0061, 0x0306, 0 };
+static const unichar_t str_104[] = { 0x0041, 0x0328, 0 };
+static const unichar_t str_105[] = { 0x0061, 0x0328, 0 };
+static const unichar_t str_106[] = { 0x0043, 0x0301, 0 };
+static const unichar_t str_107[] = { 0x0063, 0x0301, 0 };
+static const unichar_t str_108[] = { 0x0043, 0x0302, 0 };
+static const unichar_t str_109[] = { 0x0063, 0x0302, 0 };
+static const unichar_t str_10a[] = { 0x0043, 0x0307, 0 };
+static const unichar_t str_10b[] = { 0x0063, 0x0307, 0 };
+static const unichar_t str_10c[] = { 0x0043, 0x030c, 0 };
+static const unichar_t str_10d[] = { 0x0063, 0x030c, 0 };
+static const unichar_t str_10e[] = { 0x0044, 0x030c, 0 };
+static const unichar_t str_10f[] = { 0x0064, 0x030c, 0 };
+static const unichar_t str_110[] = { 0x00d0, 0 };
+static const unichar_t str_112[] = { 0x0045, 0x0304, 0 };
+static const unichar_t str_113[] = { 0x0065, 0x0304, 0 };
+static const unichar_t str_114[] = { 0x0045, 0x0306, 0 };
+static const unichar_t str_115[] = { 0x0065, 0x0306, 0 };
+static const unichar_t str_116[] = { 0x0045, 0x0307, 0 };
+static const unichar_t str_117[] = { 0x0065, 0x0307, 0 };
+static const unichar_t str_118[] = { 0x0045, 0x0328, 0 };
+static const unichar_t str_119[] = { 0x0065, 0x0328, 0 };
+static const unichar_t str_11a[] = { 0x0045, 0x030c, 0 };
+static const unichar_t str_11b[] = { 0x0065, 0x030c, 0 };
+static const unichar_t str_11c[] = { 0x0047, 0x0302, 0 };
+static const unichar_t str_11d[] = { 0x0067, 0x0302, 0 };
+static const unichar_t str_11e[] = { 0x0047, 0x0306, 0 };
+static const unichar_t str_11f[] = { 0x0067, 0x0306, 0 };
+static const unichar_t str_120[] = { 0x0047, 0x0307, 0 };
+static const unichar_t str_121[] = { 0x0067, 0x0307, 0 };
+static const unichar_t str_122[] = { 0x0047, 0x0327, 0 };
+static const unichar_t str_123[] = { 0x0067, 0x0327, 0 };
+static const unichar_t str_124[] = { 0x0048, 0x0302, 0 };
+static const unichar_t str_125[] = { 0x0068, 0x0302, 0 };
+static const unichar_t str_128[] = { 0x0049, 0x0303, 0 };
+static const unichar_t str_129[] = { 0x0069, 0x0303, 0 };
+static const unichar_t str_12a[] = { 0x0049, 0x0304, 0 };
+static const unichar_t str_12b[] = { 0x0069, 0x0304, 0 };
+static const unichar_t str_12c[] = { 0x0049, 0x0306, 0 };
+static const unichar_t str_12d[] = { 0x0069, 0x0306, 0 };
+static const unichar_t str_12e[] = { 0x0049, 0x0328, 0 };
+static const unichar_t str_12f[] = { 0x0069, 0x0328, 0 };
+static const unichar_t str_130[] = { 0x0049, 0x0307, 0 };
+static const unichar_t str_132[] = { 0x0049, 0x004a, 0 };
+static const unichar_t str_133[] = { 0x0069, 0x006a, 0 };
+static const unichar_t str_134[] = { 0x004a, 0x0302, 0 };
+static const unichar_t str_135[] = { 0x006a, 0x0302, 0 };
+static const unichar_t str_136[] = { 0x004b, 0x0327, 0 };
+static const unichar_t str_137[] = { 0x006b, 0x0327, 0 };
+static const unichar_t str_138[] = { 0x03ba, 0 };
+static const unichar_t str_139[] = { 0x004c, 0x0301, 0 };
+static const unichar_t str_13a[] = { 0x006c, 0x0301, 0 };
+static const unichar_t str_13b[] = { 0x004c, 0x0327, 0 };
+static const unichar_t str_13c[] = { 0x006c, 0x0327, 0 };
+static const unichar_t str_13d[] = { 0x004c, 0x030c, 0 };
+static const unichar_t str_13e[] = { 0x006c, 0x030c, 0 };
+static const unichar_t str_13f[] = { 0x004c, 0x00b7, 0 };
+static const unichar_t str_140[] = { 0x006c, 0x00b7, 0 };
+static const unichar_t str_143[] = { 0x004e, 0x0301, 0 };
+static const unichar_t str_144[] = { 0x006e, 0x0301, 0 };
+static const unichar_t str_145[] = { 0x004e, 0x0327, 0 };
+static const unichar_t str_146[] = { 0x006e, 0x0327, 0 };
+static const unichar_t str_147[] = { 0x004e, 0x030c, 0 };
+static const unichar_t str_148[] = { 0x006e, 0x030c, 0 };
+static const unichar_t str_149[] = { 0x02bc, 0x006e, 0 };
+static const unichar_t str_14c[] = { 0x004f, 0x0304, 0 };
+static const unichar_t str_14d[] = { 0x006f, 0x0304, 0 };
+static const unichar_t str_14e[] = { 0x004f, 0x0306, 0 };
+static const unichar_t str_14f[] = { 0x006f, 0x0306, 0 };
+static const unichar_t str_150[] = { 0x004f, 0x030b, 0 };
+static const unichar_t str_151[] = { 0x006f, 0x030b, 0 };
+static const unichar_t str_152[] = { 0x004f, 0x0045, 0 };
+static const unichar_t str_153[] = { 0x006f, 0x0065, 0 };
+static const unichar_t str_154[] = { 0x0052, 0x0301, 0 };
+static const unichar_t str_155[] = { 0x0072, 0x0301, 0 };
+static const unichar_t str_156[] = { 0x0052, 0x0327, 0 };
+static const unichar_t str_157[] = { 0x0072, 0x0327, 0 };
+static const unichar_t str_158[] = { 0x0052, 0x030c, 0 };
+static const unichar_t str_159[] = { 0x0072, 0x030c, 0 };
+static const unichar_t str_15a[] = { 0x0053, 0x0301, 0 };
+static const unichar_t str_15b[] = { 0x0073, 0x0301, 0 };
+static const unichar_t str_15c[] = { 0x0053, 0x0302, 0 };
+static const unichar_t str_15d[] = { 0x0073, 0x0302, 0 };
+static const unichar_t str_15e[] = { 0x0053, 0x0327, 0 };
+static const unichar_t str_15f[] = { 0x0073, 0x0327, 0 };
+static const unichar_t str_160[] = { 0x0053, 0x030c, 0 };
+static const unichar_t str_161[] = { 0x0073, 0x030c, 0 };
+static const unichar_t str_162[] = { 0x0054, 0x0327, 0 };
+static const unichar_t str_163[] = { 0x0074, 0x0327, 0 };
+static const unichar_t str_164[] = { 0x0054, 0x030c, 0 };
+static const unichar_t str_165[] = { 0x0074, 0x030c, 0 };
+static const unichar_t str_168[] = { 0x0055, 0x0303, 0 };
+static const unichar_t str_169[] = { 0x0075, 0x0303, 0 };
+static const unichar_t str_16a[] = { 0x0055, 0x0304, 0 };
+static const unichar_t str_16b[] = { 0x0075, 0x0304, 0 };
+static const unichar_t str_16c[] = { 0x0055, 0x0306, 0 };
+static const unichar_t str_16d[] = { 0x0075, 0x0306, 0 };
+static const unichar_t str_16e[] = { 0x0055, 0x030a, 0 };
+static const unichar_t str_16f[] = { 0x0075, 0x030a, 0 };
+static const unichar_t str_170[] = { 0x0055, 0x030b, 0 };
+static const unichar_t str_171[] = { 0x0075, 0x030b, 0 };
+static const unichar_t str_172[] = { 0x0055, 0x0328, 0 };
+static const unichar_t str_173[] = { 0x0075, 0x0328, 0 };
+static const unichar_t str_174[] = { 0x0057, 0x0302, 0 };
+static const unichar_t str_175[] = { 0x0077, 0x0302, 0 };
+static const unichar_t str_176[] = { 0x0059, 0x0302, 0 };
+static const unichar_t str_177[] = { 0x0079, 0x0302, 0 };
+static const unichar_t str_178[] = { 0x0059, 0x0308, 0 };
+static const unichar_t str_179[] = { 0x005a, 0x0301, 0 };
+static const unichar_t str_17a[] = { 0x007a, 0x0301, 0 };
+static const unichar_t str_17b[] = { 0x005a, 0x0307, 0 };
+static const unichar_t str_17c[] = { 0x007a, 0x0307, 0 };
+static const unichar_t str_17d[] = { 0x005a, 0x030c, 0 };
+static const unichar_t str_17e[] = { 0x007a, 0x030c, 0 };
+static const unichar_t str_17f[] = { 0x0073, 0 };
+static const unichar_t str_182[] = { 0x0402, 0 };
+static const unichar_t str_189[] = { 0x00d0, 0 };
+static const unichar_t str_19e[] = { 0x03b7, 0 };
+static const unichar_t str_19f[] = { 0x0398, 0 };
+static const unichar_t str_1a0[] = { 0x004f, 0x031b, 0 };
+static const unichar_t str_1a1[] = { 0x006f, 0x031b, 0 };
+static const unichar_t str_1a9[] = { 0x03a3, 0 };
+static const unichar_t str_1af[] = { 0x0055, 0x031b, 0 };
+static const unichar_t str_1b0[] = { 0x0075, 0x031b, 0 };
+static const unichar_t str_1c0[] = { 0x007c, 0 };
+static const unichar_t str_1c1[] = { 0x007c, 0x007c, 0 };
+static const unichar_t str_1c4[] = { 0x0044, 0x017d, 0 };
+static const unichar_t str_1c5[] = { 0x0044, 0x017e, 0 };
+static const unichar_t str_1c6[] = { 0x0064, 0x017e, 0 };
+static const unichar_t str_1c7[] = { 0x004c, 0x004a, 0 };
+static const unichar_t str_1c8[] = { 0x004c, 0x006a, 0 };
+static const unichar_t str_1c9[] = { 0x006c, 0x006a, 0 };
+static const unichar_t str_1ca[] = { 0x004e, 0x004a, 0 };
+static const unichar_t str_1cb[] = { 0x004e, 0x006a, 0 };
+static const unichar_t str_1cc[] = { 0x006e, 0x006a, 0 };
+static const unichar_t str_1cd[] = { 0x0041, 0x030c, 0 };
+static const unichar_t str_1ce[] = { 0x0061, 0x030c, 0 };
+static const unichar_t str_1cf[] = { 0x0049, 0x030c, 0 };
+static const unichar_t str_1d0[] = { 0x0069, 0x030c, 0 };
+static const unichar_t str_1d1[] = { 0x004f, 0x030c, 0 };
+static const unichar_t str_1d2[] = { 0x006f, 0x030c, 0 };
+static const unichar_t str_1d3[] = { 0x0055, 0x030c, 0 };
+static const unichar_t str_1d4[] = { 0x0075, 0x030c, 0 };
+static const unichar_t str_1d5[] = { 0x00dc, 0x0304, 0 };
+static const unichar_t str_1d6[] = { 0x00fc, 0x0304, 0 };
+static const unichar_t str_1d7[] = { 0x00dc, 0x0301, 0 };
+static const unichar_t str_1d8[] = { 0x00fc, 0x0301, 0 };
+static const unichar_t str_1d9[] = { 0x00dc, 0x030c, 0 };
+static const unichar_t str_1da[] = { 0x00fc, 0x030c, 0 };
+static const unichar_t str_1db[] = { 0x00dc, 0x0300, 0 };
+static const unichar_t str_1dc[] = { 0x00fc, 0x0300, 0 };
+static const unichar_t str_1de[] = { 0x00c4, 0x0304, 0 };
+static const unichar_t str_1df[] = { 0x00e4, 0x0304, 0 };
+static const unichar_t str_1e0[] = { 0x0226, 0x0304, 0 };
+static const unichar_t str_1e1[] = { 0x0227, 0x0304, 0 };
+static const unichar_t str_1e2[] = { 0x00c6, 0x0304, 0 };
+static const unichar_t str_1e3[] = { 0x00e6, 0x0304, 0 };
+static const unichar_t str_1e6[] = { 0x0047, 0x030c, 0 };
+static const unichar_t str_1e7[] = { 0x0067, 0x030c, 0 };
+static const unichar_t str_1e8[] = { 0x004b, 0x030c, 0 };
+static const unichar_t str_1e9[] = { 0x006b, 0x030c, 0 };
+static const unichar_t str_1ea[] = { 0x004f, 0x0328, 0 };
+static const unichar_t str_1eb[] = { 0x006f, 0x0328, 0 };
+static const unichar_t str_1ec[] = { 0x01ea, 0x0304, 0 };
+static const unichar_t str_1ed[] = { 0x01eb, 0x0304, 0 };
+static const unichar_t str_1ee[] = { 0x01b7, 0x030c, 0 };
+static const unichar_t str_1ef[] = { 0x0292, 0x030c, 0 };
+static const unichar_t str_1f0[] = { 0x006a, 0x030c, 0 };
+static const unichar_t str_1f1[] = { 0x0044, 0x005a, 0 };
+static const unichar_t str_1f2[] = { 0x0044, 0x007a, 0 };
+static const unichar_t str_1f3[] = { 0x0064, 0x007a, 0 };
+static const unichar_t str_1f4[] = { 0x0047, 0x0301, 0 };
+static const unichar_t str_1f5[] = { 0x0067, 0x0301, 0 };
+static const unichar_t str_1f8[] = { 0x004e, 0x0300, 0 };
+static const unichar_t str_1f9[] = { 0x006e, 0x0300, 0 };
+static const unichar_t str_1fa[] = { 0x00c5, 0x0301, 0 };
+static const unichar_t str_1fb[] = { 0x00e5, 0x0301, 0 };
+static const unichar_t str_1fc[] = { 0x00c6, 0x0301, 0 };
+static const unichar_t str_1fd[] = { 0x00e6, 0x0301, 0 };
+static const unichar_t str_1fe[] = { 0x00d8, 0x0301, 0 };
+static const unichar_t str_1ff[] = { 0x00f8, 0x0301, 0 };
+static const unichar_t str_200[] = { 0x0041, 0x030f, 0 };
+static const unichar_t str_201[] = { 0x0061, 0x030f, 0 };
+static const unichar_t str_202[] = { 0x0041, 0x0311, 0 };
+static const unichar_t str_203[] = { 0x0061, 0x0311, 0 };
+static const unichar_t str_204[] = { 0x0045, 0x030f, 0 };
+static const unichar_t str_205[] = { 0x0065, 0x030f, 0 };
+static const unichar_t str_206[] = { 0x0045, 0x0311, 0 };
+static const unichar_t str_207[] = { 0x0065, 0x0311, 0 };
+static const unichar_t str_208[] = { 0x0049, 0x030f, 0 };
+static const unichar_t str_209[] = { 0x0069, 0x030f, 0 };
+static const unichar_t str_20a[] = { 0x0049, 0x0311, 0 };
+static const unichar_t str_20b[] = { 0x0069, 0x0311, 0 };
+static const unichar_t str_20c[] = { 0x004f, 0x030f, 0 };
+static const unichar_t str_20d[] = { 0x006f, 0x030f, 0 };
+static const unichar_t str_20e[] = { 0x004f, 0x0311, 0 };
+static const unichar_t str_20f[] = { 0x006f, 0x0311, 0 };
+static const unichar_t str_210[] = { 0x0052, 0x030f, 0 };
+static const unichar_t str_211[] = { 0x0072, 0x030f, 0 };
+static const unichar_t str_212[] = { 0x0052, 0x0311, 0 };
+static const unichar_t str_213[] = { 0x0072, 0x0311, 0 };
+static const unichar_t str_214[] = { 0x0055, 0x030f, 0 };
+static const unichar_t str_215[] = { 0x0075, 0x030f, 0 };
+static const unichar_t str_216[] = { 0x0055, 0x0311, 0 };
+static const unichar_t str_217[] = { 0x0075, 0x0311, 0 };
+static const unichar_t str_218[] = { 0x0053, 0x0326, 0 };
+static const unichar_t str_219[] = { 0x0073, 0x0326, 0 };
+static const unichar_t str_21a[] = { 0x0054, 0x0326, 0 };
+static const unichar_t str_21b[] = { 0x0074, 0x0326, 0 };
+static const unichar_t str_21e[] = { 0x0048, 0x030c, 0 };
+static const unichar_t str_21f[] = { 0x0068, 0x030c, 0 };
+static const unichar_t str_226[] = { 0x0041, 0x0307, 0 };
+static const unichar_t str_227[] = { 0x0061, 0x0307, 0 };
+static const unichar_t str_228[] = { 0x0045, 0x0327, 0 };
+static const unichar_t str_229[] = { 0x0065, 0x0327, 0 };
+static const unichar_t str_22a[] = { 0x00d6, 0x0304, 0 };
+static const unichar_t str_22b[] = { 0x00f6, 0x0304, 0 };
+static const unichar_t str_22c[] = { 0x00d5, 0x0304, 0 };
+static const unichar_t str_22d[] = { 0x00f5, 0x0304, 0 };
+static const unichar_t str_22e[] = { 0x004f, 0x0307, 0 };
+static const unichar_t str_22f[] = { 0x006f, 0x0307, 0 };
+static const unichar_t str_230[] = { 0x022e, 0x0304, 0 };
+static const unichar_t str_231[] = { 0x022f, 0x0304, 0 };
+static const unichar_t str_232[] = { 0x0059, 0x0304, 0 };
+static const unichar_t str_233[] = { 0x0079, 0x0304, 0 };
+static const unichar_t str_269[] = { 0x03b9, 0 };
+static const unichar_t str_278[] = { 0x03a6, 0 };
+static const unichar_t str_292[] = { 0x01b7, 0 };
+static const unichar_t str_299[] = { 0x0432, 0 };
+static const unichar_t str_29c[] = { 0x043d, 0 };
+static const unichar_t str_2b0[] = { 0x0068, 0 };
+static const unichar_t str_2b1[] = { 0x0266, 0 };
+static const unichar_t str_2b2[] = { 0x006a, 0 };
+static const unichar_t str_2b3[] = { 0x0072, 0 };
+static const unichar_t str_2b4[] = { 0x0279, 0 };
+static const unichar_t str_2b5[] = { 0x027b, 0 };
+static const unichar_t str_2b6[] = { 0x0281, 0 };
+static const unichar_t str_2b7[] = { 0x0077, 0 };
+static const unichar_t str_2b8[] = { 0x0079, 0 };
+static const unichar_t str_2b9[] = { 0x0027, 0 };
+static const unichar_t str_2ba[] = { 0x0022, 0 };
+static const unichar_t str_2bc[] = { 0x0027, 0 };
+static const unichar_t str_2c4[] = { 0x005e, 0 };
+static const unichar_t str_2c6[] = { 0x005e, 0 };
+static const unichar_t str_2c8[] = { 0x0027, 0 };
+static const unichar_t str_2d8[] = { 0x0020, 0x0306, 0 };
+static const unichar_t str_2d9[] = { 0x0020, 0x0307, 0 };
+static const unichar_t str_2da[] = { 0x0020, 0x030a, 0 };
+static const unichar_t str_2db[] = { 0x0020, 0x0328, 0 };
+static const unichar_t str_2dc[] = { 0x0020, 0x0303, 0 };
+static const unichar_t str_2dd[] = { 0x0020, 0x030b, 0 };
+static const unichar_t str_2e0[] = { 0x0263, 0 };
+static const unichar_t str_2e1[] = { 0x006c, 0 };
+static const unichar_t str_2e2[] = { 0x0073, 0 };
+static const unichar_t str_2e3[] = { 0x0078, 0 };
+static const unichar_t str_2e4[] = { 0x0295, 0 };
+static const unichar_t str_301[] = { 0x00b4, 0 };
+static const unichar_t str_302[] = { 0x005e, 0 };
+static const unichar_t str_303[] = { 0x007e, 0 };
+static const unichar_t str_308[] = { 0x00a8, 0 };
+static const unichar_t str_30a[] = { 0x00b0, 0 };
+static const unichar_t str_30b[] = { 0x0022, 0 };
+static const unichar_t str_30e[] = { 0x0022, 0 };
+static const unichar_t str_327[] = { 0x00b8, 0 };
+static const unichar_t str_340[] = { 0x0300, 0 };
+static const unichar_t str_341[] = { 0x0301, 0 };
+static const unichar_t str_343[] = { 0x0313, 0 };
+static const unichar_t str_344[] = { 0x0308, 0x0301, 0 };
+static const unichar_t str_374[] = { 0x02b9, 0 };
+static const unichar_t str_375[] = { 0x02cf, 0 };
+static const unichar_t str_37a[] = { 0x0020, 0x0345, 0 };
+static const unichar_t str_37e[] = { 0x003b, 0 };
+static const unichar_t str_384[] = { 0x0020, 0x0301, 0 };
+static const unichar_t str_385[] = { 0x00a8, 0x0301, 0 };
+static const unichar_t str_386[] = { 0x0391, 0x0301, 0 };
+static const unichar_t str_387[] = { 0x00b7, 0 };
+static const unichar_t str_388[] = { 0x0395, 0x0301, 0 };
+static const unichar_t str_389[] = { 0x0397, 0x0301, 0 };
+static const unichar_t str_38a[] = { 0x0399, 0x0301, 0 };
+static const unichar_t str_38c[] = { 0x039f, 0x0301, 0 };
+static const unichar_t str_38e[] = { 0x03a5, 0x0301, 0 };
+static const unichar_t str_38f[] = { 0x03a9, 0x0301, 0 };
+static const unichar_t str_390[] = { 0x03ca, 0x0301, 0 };
+static const unichar_t str_391[] = { 0x0041, 0 };
+static const unichar_t str_392[] = { 0x0042, 0 };
+static const unichar_t str_393[] = { 0x0413, 0 };
+static const unichar_t str_395[] = { 0x0045, 0 };
+static const unichar_t str_396[] = { 0x005a, 0 };
+static const unichar_t str_397[] = { 0x0048, 0 };
+static const unichar_t str_399[] = { 0x0049, 0 };
+static const unichar_t str_39a[] = { 0x004b, 0 };
+static const unichar_t str_39c[] = { 0x004d, 0 };
+static const unichar_t str_39d[] = { 0x004e, 0 };
+static const unichar_t str_39f[] = { 0x004f, 0 };
+static const unichar_t str_3a1[] = { 0x0050, 0 };
+static const unichar_t str_3a4[] = { 0x0054, 0 };
+static const unichar_t str_3a5[] = { 0x0059, 0 };
+static const unichar_t str_3a7[] = { 0x0058, 0 };
+static const unichar_t str_3aa[] = { 0x0399, 0x0308, 0 };
+static const unichar_t str_3ab[] = { 0x03a5, 0x0308, 0 };
+static const unichar_t str_3ac[] = { 0x03b1, 0x0301, 0 };
+static const unichar_t str_3ad[] = { 0x03b5, 0x0301, 0 };
+static const unichar_t str_3ae[] = { 0x03b7, 0x0301, 0 };
+static const unichar_t str_3af[] = { 0x03b9, 0x0301, 0 };
+static const unichar_t str_3b0[] = { 0x03cb, 0x0301, 0 };
+static const unichar_t str_3ba[] = { 0x0138, 0 };
+static const unichar_t str_3bf[] = { 0x006f, 0 };
+static const unichar_t str_3c1[] = { 0x0070, 0 };
+static const unichar_t str_3c7[] = { 0x0078, 0 };
+static const unichar_t str_3ca[] = { 0x03b9, 0x0308, 0 };
+static const unichar_t str_3cb[] = { 0x03c5, 0x0308, 0 };
+static const unichar_t str_3cc[] = { 0x03bf, 0x0301, 0 };
+static const unichar_t str_3cd[] = { 0x03c5, 0x0301, 0 };
+static const unichar_t str_3ce[] = { 0x03c9, 0x0301, 0 };
+static const unichar_t str_3d0[] = { 0x03b2, 0 };
+static const unichar_t str_3d1[] = { 0x03b8, 0 };
+static const unichar_t str_3d2[] = { 0x03a5, 0 };
+static const unichar_t str_3d3[] = { 0x03d2, 0x0301, 0 };
+static const unichar_t str_3d4[] = { 0x03d2, 0x0308, 0 };
+static const unichar_t str_3d5[] = { 0x03c6, 0 };
+static const unichar_t str_3d6[] = { 0x03c0, 0 };
+static const unichar_t str_3f0[] = { 0x03ba, 0 };
+static const unichar_t str_3f1[] = { 0x03c1, 0 };
+static const unichar_t str_3f2[] = { 0x03c2, 0 };
+static const unichar_t str_3f4[] = { 0x0398, 0 };
+static const unichar_t str_3f5[] = { 0x03b5, 0 };
+static const unichar_t str_3f9[] = { 0x03a3, 0 };
+static const unichar_t str_400[] = { 0x0415, 0x0300, 0 };
+static const unichar_t str_401[] = { 0x0415, 0x0308, 0 };
+static const unichar_t str_403[] = { 0x0413, 0x0301, 0 };
+static const unichar_t str_405[] = { 0x0053, 0 };
+static const unichar_t str_406[] = { 0x0049, 0 };
+static const unichar_t str_407[] = { 0x0406, 0x0308, 0 };
+static const unichar_t str_408[] = { 0x004a, 0 };
+static const unichar_t str_40c[] = { 0x041a, 0x0301, 0 };
+static const unichar_t str_40d[] = { 0x0418, 0x0300, 0 };
+static const unichar_t str_40e[] = { 0x0423, 0x0306, 0 };
+static const unichar_t str_410[] = { 0x0041, 0 };
+static const unichar_t str_412[] = { 0x0042, 0 };
+static const unichar_t str_413[] = { 0x0393, 0 };
+static const unichar_t str_415[] = { 0x0045, 0 };
+static const unichar_t str_419[] = { 0x0418, 0x0306, 0 };
+static const unichar_t str_41a[] = { 0x004b, 0 };
+static const unichar_t str_41c[] = { 0x004d, 0 };
+static const unichar_t str_41d[] = { 0x0048, 0 };
+static const unichar_t str_41e[] = { 0x004f, 0 };
+static const unichar_t str_41f[] = { 0x03a0, 0 };
+static const unichar_t str_420[] = { 0x0050, 0 };
+static const unichar_t str_421[] = { 0x0043, 0 };
+static const unichar_t str_422[] = { 0x0054, 0 };
+static const unichar_t str_424[] = { 0x03a6, 0 };
+static const unichar_t str_425[] = { 0x0058, 0 };
+static const unichar_t str_430[] = { 0x0061, 0 };
+static const unichar_t str_435[] = { 0x0065, 0 };
+static const unichar_t str_439[] = { 0x0438, 0x0306, 0 };
+static const unichar_t str_43a[] = { 0x03ba, 0 };
+static const unichar_t str_43e[] = { 0x006f, 0 };
+static const unichar_t str_43f[] = { 0x03c0, 0 };
+static const unichar_t str_440[] = { 0x0070, 0 };
+static const unichar_t str_441[] = { 0x0063, 0 };
+static const unichar_t str_443[] = { 0x0079, 0 };
+static const unichar_t str_445[] = { 0x0078, 0 };
+static const unichar_t str_450[] = { 0x0435, 0x0300, 0 };
+static const unichar_t str_451[] = { 0x0435, 0x0308, 0 };
+static const unichar_t str_453[] = { 0x0433, 0x0301, 0 };
+static const unichar_t str_455[] = { 0x0073, 0 };
+static const unichar_t str_456[] = { 0x0069, 0 };
+static const unichar_t str_457[] = { 0x0456, 0x0308, 0 };
+static const unichar_t str_458[] = { 0x006a, 0 };
+static const unichar_t str_45c[] = { 0x043a, 0x0301, 0 };
+static const unichar_t str_45d[] = { 0x0438, 0x0300, 0 };
+static const unichar_t str_45e[] = { 0x0443, 0x0306, 0 };
+static const unichar_t str_470[] = { 0x03a8, 0 };
+static const unichar_t str_471[] = { 0x03c8, 0 };
+static const unichar_t str_476[] = { 0x0474, 0x030f, 0 };
+static const unichar_t str_477[] = { 0x0475, 0x030f, 0 };
+static const unichar_t str_4ae[] = { 0x0059, 0 };
+static const unichar_t str_4c0[] = { 0x0049, 0 };
+static const unichar_t str_4c1[] = { 0x0416, 0x0306, 0 };
+static const unichar_t str_4c2[] = { 0x0436, 0x0306, 0 };
+static const unichar_t str_4d0[] = { 0x0410, 0x0306, 0 };
+static const unichar_t str_4d1[] = { 0x0430, 0x0306, 0 };
+static const unichar_t str_4d2[] = { 0x0410, 0x0308, 0 };
+static const unichar_t str_4d3[] = { 0x0430, 0x0308, 0 };
+static const unichar_t str_4d4[] = { 0x00c6, 0 };
+static const unichar_t str_4d5[] = { 0x00e6, 0 };
+static const unichar_t str_4d6[] = { 0x0415, 0x0306, 0 };
+static const unichar_t str_4d7[] = { 0x0435, 0x0306, 0 };
+static const unichar_t str_4da[] = { 0x04d8, 0x0308, 0 };
+static const unichar_t str_4db[] = { 0x04d9, 0x0308, 0 };
+static const unichar_t str_4dc[] = { 0x0416, 0x0308, 0 };
+static const unichar_t str_4dd[] = { 0x0436, 0x0308, 0 };
+static const unichar_t str_4de[] = { 0x0417, 0x0308, 0 };
+static const unichar_t str_4df[] = { 0x0437, 0x0308, 0 };
+static const unichar_t str_4e0[] = { 0x01b7, 0 };
+static const unichar_t str_4e1[] = { 0x0292, 0 };
+static const unichar_t str_4e2[] = { 0x0418, 0x0304, 0 };
+static const unichar_t str_4e3[] = { 0x0438, 0x0304, 0 };
+static const unichar_t str_4e4[] = { 0x0418, 0x0308, 0 };
+static const unichar_t str_4e5[] = { 0x0438, 0x0308, 0 };
+static const unichar_t str_4e6[] = { 0x041e, 0x0308, 0 };
+static const unichar_t str_4e7[] = { 0x043e, 0x0308, 0 };
+static const unichar_t str_4e8[] = { 0x0398, 0 };
+static const unichar_t str_4e9[] = { 0x03b8, 0 };
+static const unichar_t str_4ea[] = { 0x04e8, 0x0308, 0 };
+static const unichar_t str_4eb[] = { 0x04e9, 0x0308, 0 };
+static const unichar_t str_4ec[] = { 0x042d, 0x0308, 0 };
+static const unichar_t str_4ed[] = { 0x044d, 0x0308, 0 };
+static const unichar_t str_4ee[] = { 0x0423, 0x0304, 0 };
+static const unichar_t str_4ef[] = { 0x0443, 0x0304, 0 };
+static const unichar_t str_4f0[] = { 0x0423, 0x0308, 0 };
+static const unichar_t str_4f1[] = { 0x0443, 0x0308, 0 };
+static const unichar_t str_4f2[] = { 0x0423, 0x030b, 0 };
+static const unichar_t str_4f3[] = { 0x0443, 0x030b, 0 };
+static const unichar_t str_4f4[] = { 0x0427, 0x0308, 0 };
+static const unichar_t str_4f5[] = { 0x0447, 0x0308, 0 };
+static const unichar_t str_4f8[] = { 0x042b, 0x0308, 0 };
+static const unichar_t str_4f9[] = { 0x044b, 0x0308, 0 };
+static const unichar_t str_54f[] = { 0x0053, 0 };
+static const unichar_t str_555[] = { 0x004f, 0 };
+static const unichar_t str_570[] = { 0x0068, 0 };
+static const unichar_t str_578[] = { 0x006e, 0 };
+static const unichar_t str_57a[] = { 0x0270, 0 };
+static const unichar_t str_57d[] = { 0x0075, 0 };
+static const unichar_t str_581[] = { 0x0261, 0 };
+static const unichar_t str_582[] = { 0x0269, 0 };
+static const unichar_t str_584[] = { 0x0066, 0 };
+static const unichar_t str_585[] = { 0x006f, 0 };
+static const unichar_t str_587[] = { 0x0565, 0x0582, 0 };
+static const unichar_t str_589[] = { 0x003a, 0 };
+static const unichar_t str_5f0[] = { 0x05d5, 0x05d5, 0 };
+static const unichar_t str_5f1[] = { 0x05d5, 0x05d9, 0 };
+static const unichar_t str_5f2[] = { 0x05d9, 0x05d9, 0 };
+static const unichar_t str_60c[] = { 0x2018, 0 };
+static const unichar_t str_621[] = { 0xfe80, 0 };
+static const unichar_t str_622[] = { 0x0627, 0x0653, 0 };
+static const unichar_t str_623[] = { 0x0627, 0x0654, 0 };
+static const unichar_t str_624[] = { 0x0648, 0x0654, 0 };
+static const unichar_t str_625[] = { 0x0627, 0x0655, 0 };
+static const unichar_t str_626[] = { 0x064a, 0x0654, 0 };
+static const unichar_t str_627[] = { 0xfe8d, 0 };
+static const unichar_t str_628[] = { 0xfe8f, 0 };
+static const unichar_t str_629[] = { 0xfe93, 0 };
+static const unichar_t str_62a[] = { 0xfe95, 0 };
+static const unichar_t str_62b[] = { 0xfe99, 0 };
+static const unichar_t str_62c[] = { 0xfe9d, 0 };
+static const unichar_t str_62d[] = { 0xfea1, 0 };
+static const unichar_t str_62e[] = { 0xfea5, 0 };
+static const unichar_t str_62f[] = { 0xfea9, 0 };
+static const unichar_t str_630[] = { 0xfeab, 0 };
+static const unichar_t str_631[] = { 0xfead, 0 };
+static const unichar_t str_632[] = { 0xfeaf, 0 };
+static const unichar_t str_633[] = { 0xfeb1, 0 };
+static const unichar_t str_634[] = { 0xfeb5, 0 };
+static const unichar_t str_635[] = { 0xfeb9, 0 };
+static const unichar_t str_636[] = { 0xfebd, 0 };
+static const unichar_t str_637[] = { 0xfec1, 0 };
+static const unichar_t str_638[] = { 0xfec5, 0 };
+static const unichar_t str_639[] = { 0xfec9, 0 };
+static const unichar_t str_63a[] = { 0xfecd, 0 };
+static const unichar_t str_641[] = { 0xfed1, 0 };
+static const unichar_t str_642[] = { 0xfed5, 0 };
+static const unichar_t str_643[] = { 0xfed9, 0 };
+static const unichar_t str_644[] = { 0xfedd, 0 };
+static const unichar_t str_645[] = { 0xfee1, 0 };
+static const unichar_t str_646[] = { 0xfee5, 0 };
+static const unichar_t str_647[] = { 0xfee9, 0 };
+static const unichar_t str_648[] = { 0xfeed, 0 };
+static const unichar_t str_649[] = { 0xfeef, 0 };
+static const unichar_t str_64a[] = { 0xfef1, 0 };
+static const unichar_t str_66a[] = { 0x0025, 0 };
+static const unichar_t str_66c[] = { 0x002c, 0 };
+static const unichar_t str_66d[] = { 0x22c6, 0 };
+static const unichar_t str_671[] = { 0xfb50, 0 };
+static const unichar_t str_675[] = { 0x0627, 0x0674, 0 };
+static const unichar_t str_676[] = { 0x0648, 0x0674, 0 };
+static const unichar_t str_677[] = { 0x06c7, 0x0674, 0 };
+static const unichar_t str_678[] = { 0x064a, 0x0674, 0 };
+static const unichar_t str_679[] = { 0xfb66, 0 };
+static const unichar_t str_67a[] = { 0xfb5e, 0 };
+static const unichar_t str_67b[] = { 0xfb52, 0 };
+static const unichar_t str_67e[] = { 0xfb56, 0 };
+static const unichar_t str_67f[] = { 0xfb62, 0 };
+static const unichar_t str_680[] = { 0xfb5a, 0 };
+static const unichar_t str_683[] = { 0xfb76, 0 };
+static const unichar_t str_684[] = { 0xfb72, 0 };
+static const unichar_t str_686[] = { 0xfb7a, 0 };
+static const unichar_t str_687[] = { 0xfb7e, 0 };
+static const unichar_t str_688[] = { 0xfb88, 0 };
+static const unichar_t str_68c[] = { 0xfb84, 0 };
+static const unichar_t str_68d[] = { 0xfb82, 0 };
+static const unichar_t str_68e[] = { 0xfb86, 0 };
+static const unichar_t str_691[] = { 0xfb8c, 0 };
+static const unichar_t str_698[] = { 0xfb8a, 0 };
+static const unichar_t str_6a4[] = { 0xfb6a, 0 };
+static const unichar_t str_6a6[] = { 0xfb6e, 0 };
+static const unichar_t str_6a9[] = { 0xfb8e, 0 };
+static const unichar_t str_6ad[] = { 0xfbd3, 0 };
+static const unichar_t str_6af[] = { 0xfb92, 0 };
+static const unichar_t str_6b1[] = { 0xfb9a, 0 };
+static const unichar_t str_6b3[] = { 0xfb96, 0 };
+static const unichar_t str_6ba[] = { 0xfb9e, 0 };
+static const unichar_t str_6bb[] = { 0xfba0, 0 };
+static const unichar_t str_6be[] = { 0xfbaa, 0 };
+static const unichar_t str_6c0[] = { 0x06d5, 0x0654, 0 };
+static const unichar_t str_6c1[] = { 0xfba6, 0 };
+static const unichar_t str_6c2[] = { 0x06c1, 0x0654, 0 };
+static const unichar_t str_6c5[] = { 0xfbe0, 0 };
+static const unichar_t str_6c6[] = { 0xfbd9, 0 };
+static const unichar_t str_6c7[] = { 0xfbd7, 0 };
+static const unichar_t str_6c8[] = { 0xfbdb, 0 };
+static const unichar_t str_6c9[] = { 0xfbe2, 0 };
+static const unichar_t str_6cb[] = { 0xfbde, 0 };
+static const unichar_t str_6cc[] = { 0xfbfc, 0 };
+static const unichar_t str_6d0[] = { 0xfbe4, 0 };
+static const unichar_t str_6d2[] = { 0xfbae, 0 };
+static const unichar_t str_6d3[] = { 0x06d2, 0x0654, 0 };
+static const unichar_t str_6d4[] = { 0x00b7, 0 };
+static const unichar_t str_929[] = { 0x0928, 0x093c, 0 };
+static const unichar_t str_931[] = { 0x0930, 0x093c, 0 };
+static const unichar_t str_934[] = { 0x0933, 0x093c, 0 };
+static const unichar_t str_958[] = { 0x0915, 0x093c, 0 };
+static const unichar_t str_959[] = { 0x0916, 0x093c, 0 };
+static const unichar_t str_95a[] = { 0x0917, 0x093c, 0 };
+static const unichar_t str_95b[] = { 0x091c, 0x093c, 0 };
+static const unichar_t str_95c[] = { 0x0921, 0x093c, 0 };
+static const unichar_t str_95d[] = { 0x0922, 0x093c, 0 };
+static const unichar_t str_95e[] = { 0x092b, 0x093c, 0 };
+static const unichar_t str_95f[] = { 0x092f, 0x093c, 0 };
+static const unichar_t str_9cb[] = { 0x09c7, 0x09be, 0 };
+static const unichar_t str_9cc[] = { 0x09c7, 0x09d7, 0 };
+static const unichar_t str_9dc[] = { 0x09a1, 0x09bc, 0 };
+static const unichar_t str_9dd[] = { 0x09a2, 0x09bc, 0 };
+static const unichar_t str_9df[] = { 0x09af, 0x09bc, 0 };
+static const unichar_t str_a33[] = { 0x0a32, 0x0a3c, 0 };
+static const unichar_t str_a36[] = { 0x0a38, 0x0a3c, 0 };
+static const unichar_t str_a59[] = { 0x0a16, 0x0a3c, 0 };
+static const unichar_t str_a5a[] = { 0x0a17, 0x0a3c, 0 };
+static const unichar_t str_a5b[] = { 0x0a1c, 0x0a3c, 0 };
+static const unichar_t str_a5e[] = { 0x0a2b, 0x0a3c, 0 };
+static const unichar_t str_b48[] = { 0x0b47, 0x0b56, 0 };
+static const unichar_t str_b4b[] = { 0x0b47, 0x0b3e, 0 };
+static const unichar_t str_b4c[] = { 0x0b47, 0x0b57, 0 };
+static const unichar_t str_b5c[] = { 0x0b21, 0x0b3c, 0 };
+static const unichar_t str_b5d[] = { 0x0b22, 0x0b3c, 0 };
+static const unichar_t str_b94[] = { 0x0b92, 0x0bd7, 0 };
+static const unichar_t str_bca[] = { 0x0bc6, 0x0bbe, 0 };
+static const unichar_t str_bcb[] = { 0x0bc7, 0x0bbe, 0 };
+static const unichar_t str_bcc[] = { 0x0bc6, 0x0bd7, 0 };
+static const unichar_t str_c48[] = { 0x0c46, 0x0c56, 0 };
+static const unichar_t str_cc0[] = { 0x0cbf, 0x0cd5, 0 };
+static const unichar_t str_cc7[] = { 0x0cc6, 0x0cd5, 0 };
+static const unichar_t str_cc8[] = { 0x0cc6, 0x0cd6, 0 };
+static const unichar_t str_cca[] = { 0x0cc6, 0x0cc2, 0 };
+static const unichar_t str_ccb[] = { 0x0cca, 0x0cd5, 0 };
+static const unichar_t str_d4a[] = { 0x0d46, 0x0d3e, 0 };
+static const unichar_t str_d4b[] = { 0x0d47, 0x0d3e, 0 };
+static const unichar_t str_d4c[] = { 0x0d46, 0x0d57, 0 };
+static const unichar_t str_dda[] = { 0x0dd9, 0x0dca, 0 };
+static const unichar_t str_ddc[] = { 0x0dd9, 0x0dcf, 0 };
+static const unichar_t str_ddd[] = { 0x0ddc, 0x0dca, 0 };
+static const unichar_t str_dde[] = { 0x0dd9, 0x0ddf, 0 };
+static const unichar_t str_e33[] = { 0x0e4d, 0x0e32, 0 };
+static const unichar_t str_eb3[] = { 0x0ecd, 0x0eb2, 0 };
+static const unichar_t str_edc[] = { 0x0eab, 0x0e99, 0 };
+static const unichar_t str_edd[] = { 0x0eab, 0x0ea1, 0 };
+static const unichar_t str_f0c[] = { 0x0f0b, 0 };
+static const unichar_t str_f43[] = { 0x0f42, 0x0fb7, 0 };
+static const unichar_t str_f4d[] = { 0x0f4c, 0x0fb7, 0 };
+static const unichar_t str_f52[] = { 0x0f51, 0x0fb7, 0 };
+static const unichar_t str_f57[] = { 0x0f56, 0x0fb7, 0 };
+static const unichar_t str_f5c[] = { 0x0f5b, 0x0fb7, 0 };
+static const unichar_t str_f69[] = { 0x0f40, 0x0fb5, 0 };
+static const unichar_t str_f73[] = { 0x0f71, 0x0f72, 0 };
+static const unichar_t str_f75[] = { 0x0f71, 0x0f74, 0 };
+static const unichar_t str_f76[] = { 0x0fb2, 0x0f80, 0 };
+static const unichar_t str_f77[] = { 0x0fb2, 0x0f81, 0 };
+static const unichar_t str_f78[] = { 0x0fb3, 0x0f80, 0 };
+static const unichar_t str_f79[] = { 0x0fb3, 0x0f81, 0 };
+static const unichar_t str_f81[] = { 0x0f71, 0x0f80, 0 };
+static const unichar_t str_f93[] = { 0x0f92, 0x0fb7, 0 };
+static const unichar_t str_f9d[] = { 0x0f9c, 0x0fb7, 0 };
+static const unichar_t str_fa2[] = { 0x0fa1, 0x0fb7, 0 };
+static const unichar_t str_fa7[] = { 0x0fa6, 0x0fb7, 0 };
+static const unichar_t str_fac[] = { 0x0fab, 0x0fb7, 0 };
+static const unichar_t str_fb9[] = { 0x0f90, 0x0fb5, 0 };
+static const unichar_t str_1026[] = { 0x1025, 0x102e, 0 };
+static const unichar_t str_10fc[] = { 0x10dc, 0 };
+static const unichar_t str_1101[] = { 0x1100, 0x1100, 0 };
+static const unichar_t str_1104[] = { 0x1103, 0x1103, 0 };
+static const unichar_t str_1108[] = { 0x1107, 0x1107, 0 };
+static const unichar_t str_110a[] = { 0x1109, 0x1109, 0 };
+static const unichar_t str_110d[] = { 0x110c, 0x110c, 0 };
+static const unichar_t str_1113[] = { 0x1102, 0x1100, 0 };
+static const unichar_t str_1114[] = { 0x1102, 0x1102, 0 };
+static const unichar_t str_1115[] = { 0x1102, 0x1103, 0 };
+static const unichar_t str_1116[] = { 0x1102, 0x1107, 0 };
+static const unichar_t str_1117[] = { 0x1103, 0x1100, 0 };
+static const unichar_t str_1118[] = { 0x1105, 0x1102, 0 };
+static const unichar_t str_1119[] = { 0x1105, 0x1105, 0 };
+static const unichar_t str_111a[] = { 0x1105, 0x1112, 0 };
+static const unichar_t str_111b[] = { 0x1105, 0x110b, 0 };
+static const unichar_t str_111c[] = { 0x1106, 0x1107, 0 };
+static const unichar_t str_111d[] = { 0x1106, 0x110b, 0 };
+static const unichar_t str_111e[] = { 0x1107, 0x1100, 0 };
+static const unichar_t str_111f[] = { 0x1107, 0x1102, 0 };
+static const unichar_t str_1120[] = { 0x1107, 0x1103, 0 };
+static const unichar_t str_1121[] = { 0x1107, 0x1109, 0 };
+static const unichar_t str_1122[] = { 0x1107, 0x1109, 0x1100, 0 };
+static const unichar_t str_1123[] = { 0x1107, 0x1109, 0x1103, 0 };
+static const unichar_t str_1124[] = { 0x1107, 0x1109, 0x1107, 0 };
+static const unichar_t str_1125[] = { 0x1107, 0x1109, 0x1109, 0 };
+static const unichar_t str_1126[] = { 0x1107, 0x1109, 0x110c, 0 };
+static const unichar_t str_1127[] = { 0x1107, 0x110c, 0 };
+static const unichar_t str_1128[] = { 0x1107, 0x110e, 0 };
+static const unichar_t str_1129[] = { 0x1107, 0x1110, 0 };
+static const unichar_t str_112a[] = { 0x1107, 0x1111, 0 };
+static const unichar_t str_112b[] = { 0x1107, 0x110b, 0 };
+static const unichar_t str_112c[] = { 0x1107, 0x1107, 0x110b, 0 };
+static const unichar_t str_112d[] = { 0x1109, 0x1100, 0 };
+static const unichar_t str_112e[] = { 0x1109, 0x1102, 0 };
+static const unichar_t str_112f[] = { 0x1109, 0x1103, 0 };
+static const unichar_t str_1130[] = { 0x1109, 0x1105, 0 };
+static const unichar_t str_1131[] = { 0x1109, 0x1106, 0 };
+static const unichar_t str_1132[] = { 0x1109, 0x1107, 0 };
+static const unichar_t str_1133[] = { 0x1109, 0x1107, 0x1100, 0 };
+static const unichar_t str_1134[] = { 0x1109, 0x1109, 0x1109, 0 };
+static const unichar_t str_1135[] = { 0x1109, 0x110b, 0 };
+static const unichar_t str_1136[] = { 0x1109, 0x110c, 0 };
+static const unichar_t str_1137[] = { 0x1109, 0x110e, 0 };
+static const unichar_t str_1138[] = { 0x1109, 0x110f, 0 };
+static const unichar_t str_1139[] = { 0x1109, 0x1110, 0 };
+static const unichar_t str_113a[] = { 0x1109, 0x1111, 0 };
+static const unichar_t str_113b[] = { 0x1109, 0x1112, 0 };
+static const unichar_t str_113d[] = { 0x113c, 0x113c, 0 };
+static const unichar_t str_113f[] = { 0x113e, 0x113e, 0 };
+static const unichar_t str_1141[] = { 0x110b, 0x1100, 0 };
+static const unichar_t str_1142[] = { 0x110b, 0x1103, 0 };
+static const unichar_t str_1143[] = { 0x110b, 0x1106, 0 };
+static const unichar_t str_1144[] = { 0x110b, 0x1107, 0 };
+static const unichar_t str_1145[] = { 0x110b, 0x1109, 0 };
+static const unichar_t str_1146[] = { 0x110b, 0x1140, 0 };
+static const unichar_t str_1147[] = { 0x110b, 0x110b, 0 };
+static const unichar_t str_1148[] = { 0x110b, 0x110c, 0 };
+static const unichar_t str_1149[] = { 0x110b, 0x110e, 0 };
+static const unichar_t str_114a[] = { 0x110b, 0x1110, 0 };
+static const unichar_t str_114b[] = { 0x110b, 0x1111, 0 };
+static const unichar_t str_114d[] = { 0x110c, 0x110b, 0 };
+static const unichar_t str_114f[] = { 0x114e, 0x114e, 0 };
+static const unichar_t str_1151[] = { 0x1150, 0x1150, 0 };
+static const unichar_t str_1152[] = { 0x110e, 0x110f, 0 };
+static const unichar_t str_1153[] = { 0x110e, 0x1112, 0 };
+static const unichar_t str_1156[] = { 0x1111, 0x1107, 0 };
+static const unichar_t str_1157[] = { 0x1111, 0x110b, 0 };
+static const unichar_t str_1158[] = { 0x1112, 0x1112, 0 };
+static const unichar_t str_1162[] = { 0x1161, 0x1175, 0 };
+static const unichar_t str_1164[] = { 0x1163, 0x1175, 0 };
+static const unichar_t str_1166[] = { 0x1165, 0x1175, 0 };
+static const unichar_t str_1168[] = { 0x1167, 0x1175, 0 };
+static const unichar_t str_116a[] = { 0x1169, 0x1161, 0 };
+static const unichar_t str_116b[] = { 0x1169, 0x1162, 0 };
+static const unichar_t str_116c[] = { 0x1169, 0x1175, 0 };
+static const unichar_t str_116f[] = { 0x116e, 0x1165, 0 };
+static const unichar_t str_1170[] = { 0x116e, 0x1166, 0 };
+static const unichar_t str_1171[] = { 0x116e, 0x1175, 0 };
+static const unichar_t str_1174[] = { 0x1173, 0x1175, 0 };
+static const unichar_t str_1176[] = { 0x1161, 0x1169, 0 };
+static const unichar_t str_1177[] = { 0x1161, 0x116e, 0 };
+static const unichar_t str_1178[] = { 0x1163, 0x1169, 0 };
+static const unichar_t str_1179[] = { 0x1163, 0x116d, 0 };
+static const unichar_t str_117a[] = { 0x1165, 0x1169, 0 };
+static const unichar_t str_117b[] = { 0x1165, 0x116e, 0 };
+static const unichar_t str_117c[] = { 0x1165, 0x1173, 0 };
+static const unichar_t str_117d[] = { 0x1167, 0x1169, 0 };
+static const unichar_t str_117e[] = { 0x1167, 0x116e, 0 };
+static const unichar_t str_117f[] = { 0x1169, 0x1165, 0 };
+static const unichar_t str_1180[] = { 0x1169, 0x1166, 0 };
+static const unichar_t str_1181[] = { 0x1169, 0x1168, 0 };
+static const unichar_t str_1182[] = { 0x1169, 0x1169, 0 };
+static const unichar_t str_1183[] = { 0x1169, 0x116e, 0 };
+static const unichar_t str_1184[] = { 0x116d, 0x1163, 0 };
+static const unichar_t str_1185[] = { 0x116d, 0x1164, 0 };
+static const unichar_t str_1186[] = { 0x116d, 0x1167, 0 };
+static const unichar_t str_1187[] = { 0x116d, 0x1169, 0 };
+static const unichar_t str_1188[] = { 0x116d, 0x1175, 0 };
+static const unichar_t str_1189[] = { 0x116e, 0x1161, 0 };
+static const unichar_t str_118a[] = { 0x116e, 0x1162, 0 };
+static const unichar_t str_118b[] = { 0x116e, 0x1165, 0x1173, 0 };
+static const unichar_t str_118c[] = { 0x116e, 0x1168, 0 };
+static const unichar_t str_118d[] = { 0x116e, 0x116e, 0 };
+static const unichar_t str_118e[] = { 0x1172, 0x1161, 0 };
+static const unichar_t str_118f[] = { 0x1172, 0x1165, 0 };
+static const unichar_t str_1190[] = { 0x1172, 0x1166, 0 };
+static const unichar_t str_1191[] = { 0x1172, 0x1167, 0 };
+static const unichar_t str_1192[] = { 0x1172, 0x1168, 0 };
+static const unichar_t str_1193[] = { 0x1172, 0x116e, 0 };
+static const unichar_t str_1194[] = { 0x1172, 0x1175, 0 };
+static const unichar_t str_1195[] = { 0x1173, 0x116e, 0 };
+static const unichar_t str_1196[] = { 0x1173, 0x1173, 0 };
+static const unichar_t str_1197[] = { 0x1174, 0x116e, 0 };
+static const unichar_t str_1198[] = { 0x1175, 0x1161, 0 };
+static const unichar_t str_1199[] = { 0x1175, 0x1163, 0 };
+static const unichar_t str_119a[] = { 0x1175, 0x1169, 0 };
+static const unichar_t str_119b[] = { 0x1175, 0x116e, 0 };
+static const unichar_t str_119c[] = { 0x1175, 0x1173, 0 };
+static const unichar_t str_119d[] = { 0x1175, 0x119e, 0 };
+static const unichar_t str_119f[] = { 0x119e, 0x1165, 0 };
+static const unichar_t str_11a0[] = { 0x119e, 0x116e, 0 };
+static const unichar_t str_11a1[] = { 0x119e, 0x1175, 0 };
+static const unichar_t str_11a2[] = { 0x119e, 0x119e, 0 };
+static const unichar_t str_11a8[] = { 0x1100, 0 };
+static const unichar_t str_11a9[] = { 0x11a8, 0x11a8, 0 };
+static const unichar_t str_11aa[] = { 0x11a8, 0x11ba, 0 };
+static const unichar_t str_11ab[] = { 0x1102, 0 };
+static const unichar_t str_11ac[] = { 0x11ab, 0x11bd, 0 };
+static const unichar_t str_11ad[] = { 0x11ab, 0x11c2, 0 };
+static const unichar_t str_11ae[] = { 0x1103, 0 };
+static const unichar_t str_11af[] = { 0x1105, 0 };
+static const unichar_t str_11b0[] = { 0x11af, 0x11a8, 0 };
+static const unichar_t str_11b1[] = { 0x11af, 0x11b7, 0 };
+static const unichar_t str_11b2[] = { 0x11af, 0x11b8, 0 };
+static const unichar_t str_11b3[] = { 0x11af, 0x11ba, 0 };
+static const unichar_t str_11b4[] = { 0x11af, 0x11c0, 0 };
+static const unichar_t str_11b5[] = { 0x11af, 0x11c1, 0 };
+static const unichar_t str_11b6[] = { 0x11af, 0x11c2, 0 };
+static const unichar_t str_11b7[] = { 0x1106, 0 };
+static const unichar_t str_11b8[] = { 0x1107, 0 };
+static const unichar_t str_11b9[] = { 0x11b8, 0x11ba, 0 };
+static const unichar_t str_11ba[] = { 0x1109, 0 };
+static const unichar_t str_11bb[] = { 0x11ba, 0x11ba, 0 };
+static const unichar_t str_11bc[] = { 0x110b, 0 };
+static const unichar_t str_11bd[] = { 0x110c, 0 };
+static const unichar_t str_11be[] = { 0x110e, 0 };
+static const unichar_t str_11bf[] = { 0x110f, 0 };
+static const unichar_t str_11c0[] = { 0x1110, 0 };
+static const unichar_t str_11c1[] = { 0x1111, 0 };
+static const unichar_t str_11c2[] = { 0x1112, 0 };
+static const unichar_t str_11c3[] = { 0x11a8, 0x11af, 0 };
+static const unichar_t str_11c4[] = { 0x11a8, 0x11ba, 0x11a8, 0 };
+static const unichar_t str_11c5[] = { 0x11ab, 0x11a8, 0 };
+static const unichar_t str_11c6[] = { 0x11ab, 0x11ae, 0 };
+static const unichar_t str_11c7[] = { 0x11ab, 0x11ba, 0 };
+static const unichar_t str_11c8[] = { 0x11ab, 0x11eb, 0 };
+static const unichar_t str_11c9[] = { 0x11ab, 0x11c0, 0 };
+static const unichar_t str_11ca[] = { 0x11ae, 0x11a8, 0 };
+static const unichar_t str_11cb[] = { 0x11ae, 0x11af, 0 };
+static const unichar_t str_11cc[] = { 0x11af, 0x11a8, 0x11ba, 0 };
+static const unichar_t str_11cd[] = { 0x11af, 0x11ab, 0 };
+static const unichar_t str_11ce[] = { 0x11af, 0x11ae, 0 };
+static const unichar_t str_11cf[] = { 0x11af, 0x11ae, 0x11c2, 0 };
+static const unichar_t str_11d0[] = { 0x11af, 0x11af, 0 };
+static const unichar_t str_11d1[] = { 0x11af, 0x11b7, 0x11a8, 0 };
+static const unichar_t str_11d2[] = { 0x11af, 0x11b7, 0x11ba, 0 };
+static const unichar_t str_11d3[] = { 0x11af, 0x11b8, 0x11ba, 0 };
+static const unichar_t str_11d4[] = { 0x11af, 0x11b8, 0x11c2, 0 };
+static const unichar_t str_11d5[] = { 0x11af, 0x11e6, 0 };
+static const unichar_t str_11d6[] = { 0x11af, 0x11ba, 0x11ba, 0 };
+static const unichar_t str_11d7[] = { 0x11af, 0x11eb, 0 };
+static const unichar_t str_11d8[] = { 0x11af, 0x11bf, 0 };
+static const unichar_t str_11d9[] = { 0x11af, 0x11f9, 0 };
+static const unichar_t str_11da[] = { 0x11b7, 0x11a8, 0 };
+static const unichar_t str_11db[] = { 0x11b7, 0x11af, 0 };
+static const unichar_t str_11dc[] = { 0x11b7, 0x11b8, 0 };
+static const unichar_t str_11dd[] = { 0x11b7, 0x11ba, 0 };
+static const unichar_t str_11de[] = { 0x11b7, 0x11ba, 0x11ba, 0 };
+static const unichar_t str_11df[] = { 0x11b7, 0x11eb, 0 };
+static const unichar_t str_11e0[] = { 0x11b7, 0x11be, 0 };
+static const unichar_t str_11e1[] = { 0x11b7, 0x11c2, 0 };
+static const unichar_t str_11e2[] = { 0x11b7, 0x11bc, 0 };
+static const unichar_t str_11e3[] = { 0x11b8, 0x11af, 0 };
+static const unichar_t str_11e4[] = { 0x11b8, 0x11c1, 0 };
+static const unichar_t str_11e5[] = { 0x11b8, 0x11c2, 0 };
+static const unichar_t str_11e6[] = { 0x11b8, 0x11bc, 0 };
+static const unichar_t str_11e7[] = { 0x11ba, 0x11a8, 0 };
+static const unichar_t str_11e8[] = { 0x11ba, 0x11ae, 0 };
+static const unichar_t str_11e9[] = { 0x11ba, 0x11af, 0 };
+static const unichar_t str_11ea[] = { 0x11ba, 0x11b8, 0 };
+static const unichar_t str_11eb[] = { 0x1140, 0 };
+static const unichar_t str_11ec[] = { 0x11bc, 0x11a8, 0 };
+static const unichar_t str_11ed[] = { 0x11bc, 0x11a8, 0x11a8, 0 };
+static const unichar_t str_11ee[] = { 0x11bc, 0x11bc, 0 };
+static const unichar_t str_11ef[] = { 0x11bc, 0x11bf, 0 };
+static const unichar_t str_11f0[] = { 0x114c, 0 };
+static const unichar_t str_11f1[] = { 0x11f0, 0x11ba, 0 };
+static const unichar_t str_11f2[] = { 0x11f0, 0x11eb, 0 };
+static const unichar_t str_11f3[] = { 0x11c1, 0x11b8, 0 };
+static const unichar_t str_11f4[] = { 0x11c1, 0x11bc, 0 };
+static const unichar_t str_11f5[] = { 0x11c2, 0x11ab, 0 };
+static const unichar_t str_11f6[] = { 0x11c2, 0x11af, 0 };
+static const unichar_t str_11f7[] = { 0x11c2, 0x11b7, 0 };
+static const unichar_t str_11f8[] = { 0x11c2, 0x11b8, 0 };
+static const unichar_t str_11f9[] = { 0x1159, 0 };
+static const unichar_t str_13a0[] = { 0x0044, 0 };
+static const unichar_t str_13a1[] = { 0x0052, 0 };
+static const unichar_t str_13a2[] = { 0x0054, 0 };
+static const unichar_t str_13a9[] = { 0x0423, 0 };
+static const unichar_t str_13aa[] = { 0x0041, 0 };
+static const unichar_t str_13ab[] = { 0x004a, 0 };
+static const unichar_t str_13ac[] = { 0x0045, 0 };
+static const unichar_t str_13b1[] = { 0x0393, 0 };
+static const unichar_t str_13b3[] = { 0x0057, 0 };
+static const unichar_t str_13b7[] = { 0x004d, 0 };
+static const unichar_t str_13bb[] = { 0x0048, 0 };
+static const unichar_t str_13be[] = { 0x0398, 0 };
+static const unichar_t str_13c0[] = { 0x0047, 0 };
+static const unichar_t str_13c2[] = { 0x0068, 0 };
+static const unichar_t str_13c3[] = { 0x005a, 0 };
+static const unichar_t str_13cf[] = { 0x042c, 0 };
+static const unichar_t str_13d9[] = { 0x0056, 0 };
+static const unichar_t str_13da[] = { 0x0053, 0 };
+static const unichar_t str_13de[] = { 0x004c, 0 };
+static const unichar_t str_13df[] = { 0x0043, 0 };
+static const unichar_t str_13e2[] = { 0x0050, 0 };
+static const unichar_t str_13e6[] = { 0x004b, 0 };
+static const unichar_t str_13f4[] = { 0x0042, 0 };
+static const unichar_t str_1b06[] = { 0x1b05, 0x1b35, 0 };
+static const unichar_t str_1b08[] = { 0x1b07, 0x1b35, 0 };
+static const unichar_t str_1b0a[] = { 0x1b09, 0x1b35, 0 };
+static const unichar_t str_1b0c[] = { 0x1b0b, 0x1b35, 0 };
+static const unichar_t str_1b0e[] = { 0x1b0d, 0x1b35, 0 };
+static const unichar_t str_1b12[] = { 0x1b11, 0x1b35, 0 };
+static const unichar_t str_1b3b[] = { 0x1b3a, 0x1b35, 0 };
+static const unichar_t str_1b3d[] = { 0x1b3c, 0x1b35, 0 };
+static const unichar_t str_1b40[] = { 0x1b3e, 0x1b35, 0 };
+static const unichar_t str_1b41[] = { 0x1b3f, 0x1b35, 0 };
+static const unichar_t str_1b43[] = { 0x1b42, 0x1b35, 0 };
+static const unichar_t str_1d2c[] = { 0x0041, 0 };
+static const unichar_t str_1d2d[] = { 0x00c6, 0 };
+static const unichar_t str_1d2e[] = { 0x0042, 0 };
+static const unichar_t str_1d30[] = { 0x0044, 0 };
+static const unichar_t str_1d31[] = { 0x0045, 0 };
+static const unichar_t str_1d32[] = { 0x018e, 0 };
+static const unichar_t str_1d33[] = { 0x0047, 0 };
+static const unichar_t str_1d34[] = { 0x0048, 0 };
+static const unichar_t str_1d35[] = { 0x0049, 0 };
+static const unichar_t str_1d36[] = { 0x004a, 0 };
+static const unichar_t str_1d37[] = { 0x004b, 0 };
+static const unichar_t str_1d38[] = { 0x004c, 0 };
+static const unichar_t str_1d39[] = { 0x004d, 0 };
+static const unichar_t str_1d3a[] = { 0x004e, 0 };
+static const unichar_t str_1d3c[] = { 0x004f, 0 };
+static const unichar_t str_1d3d[] = { 0x0222, 0 };
+static const unichar_t str_1d3e[] = { 0x0050, 0 };
+static const unichar_t str_1d3f[] = { 0x0052, 0 };
+static const unichar_t str_1d40[] = { 0x0054, 0 };
+static const unichar_t str_1d41[] = { 0x0055, 0 };
+static const unichar_t str_1d42[] = { 0x0057, 0 };
+static const unichar_t str_1d43[] = { 0x0061, 0 };
+static const unichar_t str_1d44[] = { 0x0250, 0 };
+static const unichar_t str_1d45[] = { 0x0251, 0 };
+static const unichar_t str_1d46[] = { 0x1d02, 0 };
+static const unichar_t str_1d47[] = { 0x0062, 0 };
+static const unichar_t str_1d48[] = { 0x0064, 0 };
+static const unichar_t str_1d49[] = { 0x0065, 0 };
+static const unichar_t str_1d4a[] = { 0x0259, 0 };
+static const unichar_t str_1d4b[] = { 0x025b, 0 };
+static const unichar_t str_1d4c[] = { 0x025c, 0 };
+static const unichar_t str_1d4d[] = { 0x0067, 0 };
+static const unichar_t str_1d4f[] = { 0x006b, 0 };
+static const unichar_t str_1d50[] = { 0x006d, 0 };
+static const unichar_t str_1d51[] = { 0x014b, 0 };
+static const unichar_t str_1d52[] = { 0x006f, 0 };
+static const unichar_t str_1d53[] = { 0x0254, 0 };
+static const unichar_t str_1d54[] = { 0x1d16, 0 };
+static const unichar_t str_1d55[] = { 0x1d17, 0 };
+static const unichar_t str_1d56[] = { 0x0070, 0 };
+static const unichar_t str_1d57[] = { 0x0074, 0 };
+static const unichar_t str_1d58[] = { 0x0075, 0 };
+static const unichar_t str_1d59[] = { 0x1d1d, 0 };
+static const unichar_t str_1d5a[] = { 0x026f, 0 };
+static const unichar_t str_1d5b[] = { 0x0076, 0 };
+static const unichar_t str_1d5c[] = { 0x1d25, 0 };
+static const unichar_t str_1d5d[] = { 0x03b2, 0 };
+static const unichar_t str_1d5e[] = { 0x03b3, 0 };
+static const unichar_t str_1d5f[] = { 0x03b4, 0 };
+static const unichar_t str_1d60[] = { 0x03c6, 0 };
+static const unichar_t str_1d61[] = { 0x03c7, 0 };
+static const unichar_t str_1d62[] = { 0x0069, 0 };
+static const unichar_t str_1d63[] = { 0x0072, 0 };
+static const unichar_t str_1d64[] = { 0x0075, 0 };
+static const unichar_t str_1d65[] = { 0x0076, 0 };
+static const unichar_t str_1d66[] = { 0x03b2, 0 };
+static const unichar_t str_1d67[] = { 0x03b3, 0 };
+static const unichar_t str_1d68[] = { 0x03c1, 0 };
+static const unichar_t str_1d69[] = { 0x03c6, 0 };
+static const unichar_t str_1d6a[] = { 0x03c7, 0 };
+static const unichar_t str_1d78[] = { 0x043d, 0 };
+static const unichar_t str_1d9b[] = { 0x0252, 0 };
+static const unichar_t str_1d9c[] = { 0x0063, 0 };
+static const unichar_t str_1d9d[] = { 0x0255, 0 };
+static const unichar_t str_1d9e[] = { 0x00f0, 0 };
+static const unichar_t str_1d9f[] = { 0x025c, 0 };
+static const unichar_t str_1da0[] = { 0x0066, 0 };
+static const unichar_t str_1da1[] = { 0x025f, 0 };
+static const unichar_t str_1da2[] = { 0x0261, 0 };
+static const unichar_t str_1da3[] = { 0x0265, 0 };
+static const unichar_t str_1da4[] = { 0x0268, 0 };
+static const unichar_t str_1da5[] = { 0x0269, 0 };
+static const unichar_t str_1da6[] = { 0x026a, 0 };
+static const unichar_t str_1da7[] = { 0x1d7b, 0 };
+static const unichar_t str_1da8[] = { 0x029d, 0 };
+static const unichar_t str_1da9[] = { 0x026d, 0 };
+static const unichar_t str_1daa[] = { 0x1d85, 0 };
+static const unichar_t str_1dab[] = { 0x029f, 0 };
+static const unichar_t str_1dac[] = { 0x0271, 0 };
+static const unichar_t str_1dad[] = { 0x0270, 0 };
+static const unichar_t str_1dae[] = { 0x0272, 0 };
+static const unichar_t str_1daf[] = { 0x0273, 0 };
+static const unichar_t str_1db0[] = { 0x0274, 0 };
+static const unichar_t str_1db1[] = { 0x0275, 0 };
+static const unichar_t str_1db2[] = { 0x0278, 0 };
+static const unichar_t str_1db3[] = { 0x0282, 0 };
+static const unichar_t str_1db4[] = { 0x0283, 0 };
+static const unichar_t str_1db5[] = { 0x01ab, 0 };
+static const unichar_t str_1db6[] = { 0x0289, 0 };
+static const unichar_t str_1db7[] = { 0x028a, 0 };
+static const unichar_t str_1db8[] = { 0x1d1c, 0 };
+static const unichar_t str_1db9[] = { 0x028b, 0 };
+static const unichar_t str_1dba[] = { 0x028c, 0 };
+static const unichar_t str_1dbb[] = { 0x007a, 0 };
+static const unichar_t str_1dbc[] = { 0x0290, 0 };
+static const unichar_t str_1dbd[] = { 0x0291, 0 };
+static const unichar_t str_1dbe[] = { 0x0292, 0 };
+static const unichar_t str_1dbf[] = { 0x03b8, 0 };
+static const unichar_t str_1e00[] = { 0x0041, 0x0325, 0 };
+static const unichar_t str_1e01[] = { 0x0061, 0x0325, 0 };
+static const unichar_t str_1e02[] = { 0x0042, 0x0307, 0 };
+static const unichar_t str_1e03[] = { 0x0062, 0x0307, 0 };
+static const unichar_t str_1e04[] = { 0x0042, 0x0323, 0 };
+static const unichar_t str_1e05[] = { 0x0062, 0x0323, 0 };
+static const unichar_t str_1e06[] = { 0x0042, 0x0331, 0 };
+static const unichar_t str_1e07[] = { 0x0062, 0x0331, 0 };
+static const unichar_t str_1e08[] = { 0x00c7, 0x0301, 0 };
+static const unichar_t str_1e09[] = { 0x00e7, 0x0301, 0 };
+static const unichar_t str_1e0a[] = { 0x0044, 0x0307, 0 };
+static const unichar_t str_1e0b[] = { 0x0064, 0x0307, 0 };
+static const unichar_t str_1e0c[] = { 0x0044, 0x0323, 0 };
+static const unichar_t str_1e0d[] = { 0x0064, 0x0323, 0 };
+static const unichar_t str_1e0e[] = { 0x0044, 0x0331, 0 };
+static const unichar_t str_1e0f[] = { 0x0064, 0x0331, 0 };
+static const unichar_t str_1e10[] = { 0x0044, 0x0327, 0 };
+static const unichar_t str_1e11[] = { 0x0064, 0x0327, 0 };
+static const unichar_t str_1e12[] = { 0x0044, 0x032d, 0 };
+static const unichar_t str_1e13[] = { 0x0064, 0x032d, 0 };
+static const unichar_t str_1e14[] = { 0x0112, 0x0300, 0 };
+static const unichar_t str_1e15[] = { 0x0113, 0x0300, 0 };
+static const unichar_t str_1e16[] = { 0x0112, 0x0301, 0 };
+static const unichar_t str_1e17[] = { 0x0113, 0x0301, 0 };
+static const unichar_t str_1e18[] = { 0x0045, 0x032d, 0 };
+static const unichar_t str_1e19[] = { 0x0065, 0x032d, 0 };
+static const unichar_t str_1e1a[] = { 0x0045, 0x0330, 0 };
+static const unichar_t str_1e1b[] = { 0x0065, 0x0330, 0 };
+static const unichar_t str_1e1c[] = { 0x0228, 0x0306, 0 };
+static const unichar_t str_1e1d[] = { 0x0229, 0x0306, 0 };
+static const unichar_t str_1e1e[] = { 0x0046, 0x0307, 0 };
+static const unichar_t str_1e1f[] = { 0x0066, 0x0307, 0 };
+static const unichar_t str_1e20[] = { 0x0047, 0x0304, 0 };
+static const unichar_t str_1e21[] = { 0x0067, 0x0304, 0 };
+static const unichar_t str_1e22[] = { 0x0048, 0x0307, 0 };
+static const unichar_t str_1e23[] = { 0x0068, 0x0307, 0 };
+static const unichar_t str_1e24[] = { 0x0048, 0x0323, 0 };
+static const unichar_t str_1e25[] = { 0x0068, 0x0323, 0 };
+static const unichar_t str_1e26[] = { 0x0048, 0x0308, 0 };
+static const unichar_t str_1e27[] = { 0x0068, 0x0308, 0 };
+static const unichar_t str_1e28[] = { 0x0048, 0x0327, 0 };
+static const unichar_t str_1e29[] = { 0x0068, 0x0327, 0 };
+static const unichar_t str_1e2a[] = { 0x0048, 0x032e, 0 };
+static const unichar_t str_1e2b[] = { 0x0068, 0x032e, 0 };
+static const unichar_t str_1e2c[] = { 0x0049, 0x0330, 0 };
+static const unichar_t str_1e2d[] = { 0x0069, 0x0330, 0 };
+static const unichar_t str_1e2e[] = { 0x00cf, 0x0301, 0 };
+static const unichar_t str_1e2f[] = { 0x00ef, 0x0301, 0 };
+static const unichar_t str_1e30[] = { 0x004b, 0x0301, 0 };
+static const unichar_t str_1e31[] = { 0x006b, 0x0301, 0 };
+static const unichar_t str_1e32[] = { 0x004b, 0x0323, 0 };
+static const unichar_t str_1e33[] = { 0x006b, 0x0323, 0 };
+static const unichar_t str_1e34[] = { 0x004b, 0x0331, 0 };
+static const unichar_t str_1e35[] = { 0x006b, 0x0331, 0 };
+static const unichar_t str_1e36[] = { 0x004c, 0x0323, 0 };
+static const unichar_t str_1e37[] = { 0x006c, 0x0323, 0 };
+static const unichar_t str_1e38[] = { 0x1e36, 0x0304, 0 };
+static const unichar_t str_1e39[] = { 0x1e37, 0x0304, 0 };
+static const unichar_t str_1e3a[] = { 0x004c, 0x0331, 0 };
+static const unichar_t str_1e3b[] = { 0x006c, 0x0331, 0 };
+static const unichar_t str_1e3c[] = { 0x004c, 0x032d, 0 };
+static const unichar_t str_1e3d[] = { 0x006c, 0x032d, 0 };
+static const unichar_t str_1e3e[] = { 0x004d, 0x0301, 0 };
+static const unichar_t str_1e3f[] = { 0x006d, 0x0301, 0 };
+static const unichar_t str_1e40[] = { 0x004d, 0x0307, 0 };
+static const unichar_t str_1e41[] = { 0x006d, 0x0307, 0 };
+static const unichar_t str_1e42[] = { 0x004d, 0x0323, 0 };
+static const unichar_t str_1e43[] = { 0x006d, 0x0323, 0 };
+static const unichar_t str_1e44[] = { 0x004e, 0x0307, 0 };
+static const unichar_t str_1e45[] = { 0x006e, 0x0307, 0 };
+static const unichar_t str_1e46[] = { 0x004e, 0x0323, 0 };
+static const unichar_t str_1e47[] = { 0x006e, 0x0323, 0 };
+static const unichar_t str_1e48[] = { 0x004e, 0x0331, 0 };
+static const unichar_t str_1e49[] = { 0x006e, 0x0331, 0 };
+static const unichar_t str_1e4a[] = { 0x004e, 0x032d, 0 };
+static const unichar_t str_1e4b[] = { 0x006e, 0x032d, 0 };
+static const unichar_t str_1e4c[] = { 0x00d5, 0x0301, 0 };
+static const unichar_t str_1e4d[] = { 0x00f5, 0x0301, 0 };
+static const unichar_t str_1e4e[] = { 0x00d5, 0x0308, 0 };
+static const unichar_t str_1e4f[] = { 0x00f5, 0x0308, 0 };
+static const unichar_t str_1e50[] = { 0x014c, 0x0300, 0 };
+static const unichar_t str_1e51[] = { 0x014d, 0x0300, 0 };
+static const unichar_t str_1e52[] = { 0x014c, 0x0301, 0 };
+static const unichar_t str_1e53[] = { 0x014d, 0x0301, 0 };
+static const unichar_t str_1e54[] = { 0x0050, 0x0301, 0 };
+static const unichar_t str_1e55[] = { 0x0070, 0x0301, 0 };
+static const unichar_t str_1e56[] = { 0x0050, 0x0307, 0 };
+static const unichar_t str_1e57[] = { 0x0070, 0x0307, 0 };
+static const unichar_t str_1e58[] = { 0x0052, 0x0307, 0 };
+static const unichar_t str_1e59[] = { 0x0072, 0x0307, 0 };
+static const unichar_t str_1e5a[] = { 0x0052, 0x0323, 0 };
+static const unichar_t str_1e5b[] = { 0x0072, 0x0323, 0 };
+static const unichar_t str_1e5c[] = { 0x1e5a, 0x0304, 0 };
+static const unichar_t str_1e5d[] = { 0x1e5b, 0x0304, 0 };
+static const unichar_t str_1e5e[] = { 0x0052, 0x0331, 0 };
+static const unichar_t str_1e5f[] = { 0x0072, 0x0331, 0 };
+static const unichar_t str_1e60[] = { 0x0053, 0x0307, 0 };
+static const unichar_t str_1e61[] = { 0x0073, 0x0307, 0 };
+static const unichar_t str_1e62[] = { 0x0053, 0x0323, 0 };
+static const unichar_t str_1e63[] = { 0x0073, 0x0323, 0 };
+static const unichar_t str_1e64[] = { 0x015a, 0x0307, 0 };
+static const unichar_t str_1e65[] = { 0x015b, 0x0307, 0 };
+static const unichar_t str_1e66[] = { 0x0160, 0x0307, 0 };
+static const unichar_t str_1e67[] = { 0x0161, 0x0307, 0 };
+static const unichar_t str_1e68[] = { 0x1e62, 0x0307, 0 };
+static const unichar_t str_1e69[] = { 0x1e63, 0x0307, 0 };
+static const unichar_t str_1e6a[] = { 0x0054, 0x0307, 0 };
+static const unichar_t str_1e6b[] = { 0x0074, 0x0307, 0 };
+static const unichar_t str_1e6c[] = { 0x0054, 0x0323, 0 };
+static const unichar_t str_1e6d[] = { 0x0074, 0x0323, 0 };
+static const unichar_t str_1e6e[] = { 0x0054, 0x0331, 0 };
+static const unichar_t str_1e6f[] = { 0x0074, 0x0331, 0 };
+static const unichar_t str_1e70[] = { 0x0054, 0x032d, 0 };
+static const unichar_t str_1e71[] = { 0x0074, 0x032d, 0 };
+static const unichar_t str_1e72[] = { 0x0055, 0x0324, 0 };
+static const unichar_t str_1e73[] = { 0x0075, 0x0324, 0 };
+static const unichar_t str_1e74[] = { 0x0055, 0x0330, 0 };
+static const unichar_t str_1e75[] = { 0x0075, 0x0330, 0 };
+static const unichar_t str_1e76[] = { 0x0055, 0x032d, 0 };
+static const unichar_t str_1e77[] = { 0x0075, 0x032d, 0 };
+static const unichar_t str_1e78[] = { 0x0168, 0x0301, 0 };
+static const unichar_t str_1e79[] = { 0x0169, 0x0301, 0 };
+static const unichar_t str_1e7a[] = { 0x016a, 0x0308, 0 };
+static const unichar_t str_1e7b[] = { 0x016b, 0x0308, 0 };
+static const unichar_t str_1e7c[] = { 0x0056, 0x0303, 0 };
+static const unichar_t str_1e7d[] = { 0x0076, 0x0303, 0 };
+static const unichar_t str_1e7e[] = { 0x0056, 0x0323, 0 };
+static const unichar_t str_1e7f[] = { 0x0076, 0x0323, 0 };
+static const unichar_t str_1e80[] = { 0x0057, 0x0300, 0 };
+static const unichar_t str_1e81[] = { 0x0077, 0x0300, 0 };
+static const unichar_t str_1e82[] = { 0x0057, 0x0301, 0 };
+static const unichar_t str_1e83[] = { 0x0077, 0x0301, 0 };
+static const unichar_t str_1e84[] = { 0x0057, 0x0308, 0 };
+static const unichar_t str_1e85[] = { 0x0077, 0x0308, 0 };
+static const unichar_t str_1e86[] = { 0x0057, 0x0307, 0 };
+static const unichar_t str_1e87[] = { 0x0077, 0x0307, 0 };
+static const unichar_t str_1e88[] = { 0x0057, 0x0323, 0 };
+static const unichar_t str_1e89[] = { 0x0077, 0x0323, 0 };
+static const unichar_t str_1e8a[] = { 0x0058, 0x0307, 0 };
+static const unichar_t str_1e8b[] = { 0x0078, 0x0307, 0 };
+static const unichar_t str_1e8c[] = { 0x0058, 0x0308, 0 };
+static const unichar_t str_1e8d[] = { 0x0078, 0x0308, 0 };
+static const unichar_t str_1e8e[] = { 0x0059, 0x0307, 0 };
+static const unichar_t str_1e8f[] = { 0x0079, 0x0307, 0 };
+static const unichar_t str_1e90[] = { 0x005a, 0x0302, 0 };
+static const unichar_t str_1e91[] = { 0x007a, 0x0302, 0 };
+static const unichar_t str_1e92[] = { 0x005a, 0x0323, 0 };
+static const unichar_t str_1e93[] = { 0x007a, 0x0323, 0 };
+static const unichar_t str_1e94[] = { 0x005a, 0x0331, 0 };
+static const unichar_t str_1e95[] = { 0x007a, 0x0331, 0 };
+static const unichar_t str_1e96[] = { 0x0068, 0x0331, 0 };
+static const unichar_t str_1e97[] = { 0x0074, 0x0308, 0 };
+static const unichar_t str_1e98[] = { 0x0077, 0x030a, 0 };
+static const unichar_t str_1e99[] = { 0x0079, 0x030a, 0 };
+static const unichar_t str_1e9a[] = { 0x0061, 0x02be, 0 };
+static const unichar_t str_1e9b[] = { 0x017f, 0x0307, 0 };
+static const unichar_t str_1ea0[] = { 0x0041, 0x0323, 0 };
+static const unichar_t str_1ea1[] = { 0x0061, 0x0323, 0 };
+static const unichar_t str_1ea2[] = { 0x0041, 0x0309, 0 };
+static const unichar_t str_1ea3[] = { 0x0061, 0x0309, 0 };
+static const unichar_t str_1ea4[] = { 0x00c2, 0x0301, 0 };
+static const unichar_t str_1ea5[] = { 0x00e2, 0x0301, 0 };
+static const unichar_t str_1ea6[] = { 0x00c2, 0x0300, 0 };
+static const unichar_t str_1ea7[] = { 0x00e2, 0x0300, 0 };
+static const unichar_t str_1ea8[] = { 0x00c2, 0x0309, 0 };
+static const unichar_t str_1ea9[] = { 0x00e2, 0x0309, 0 };
+static const unichar_t str_1eaa[] = { 0x00c2, 0x0303, 0 };
+static const unichar_t str_1eab[] = { 0x00e2, 0x0303, 0 };
+static const unichar_t str_1eac[] = { 0x1ea0, 0x0302, 0 };
+static const unichar_t str_1ead[] = { 0x1ea1, 0x0302, 0 };
+static const unichar_t str_1eae[] = { 0x0102, 0x0301, 0 };
+static const unichar_t str_1eaf[] = { 0x0103, 0x0301, 0 };
+static const unichar_t str_1eb0[] = { 0x0102, 0x0300, 0 };
+static const unichar_t str_1eb1[] = { 0x0103, 0x0300, 0 };
+static const unichar_t str_1eb2[] = { 0x0102, 0x0309, 0 };
+static const unichar_t str_1eb3[] = { 0x0103, 0x0309, 0 };
+static const unichar_t str_1eb4[] = { 0x0102, 0x0303, 0 };
+static const unichar_t str_1eb5[] = { 0x0103, 0x0303, 0 };
+static const unichar_t str_1eb6[] = { 0x1ea0, 0x0306, 0 };
+static const unichar_t str_1eb7[] = { 0x1ea1, 0x0306, 0 };
+static const unichar_t str_1eb8[] = { 0x0045, 0x0323, 0 };
+static const unichar_t str_1eb9[] = { 0x0065, 0x0323, 0 };
+static const unichar_t str_1eba[] = { 0x0045, 0x0309, 0 };
+static const unichar_t str_1ebb[] = { 0x0065, 0x0309, 0 };
+static const unichar_t str_1ebc[] = { 0x0045, 0x0303, 0 };
+static const unichar_t str_1ebd[] = { 0x0065, 0x0303, 0 };
+static const unichar_t str_1ebe[] = { 0x00ca, 0x0301, 0 };
+static const unichar_t str_1ebf[] = { 0x00ea, 0x0301, 0 };
+static const unichar_t str_1ec0[] = { 0x00ca, 0x0300, 0 };
+static const unichar_t str_1ec1[] = { 0x00ea, 0x0300, 0 };
+static const unichar_t str_1ec2[] = { 0x00ca, 0x0309, 0 };
+static const unichar_t str_1ec3[] = { 0x00ea, 0x0309, 0 };
+static const unichar_t str_1ec4[] = { 0x00ca, 0x0303, 0 };
+static const unichar_t str_1ec5[] = { 0x00ea, 0x0303, 0 };
+static const unichar_t str_1ec6[] = { 0x1eb8, 0x0302, 0 };
+static const unichar_t str_1ec7[] = { 0x1eb9, 0x0302, 0 };
+static const unichar_t str_1ec8[] = { 0x0049, 0x0309, 0 };
+static const unichar_t str_1ec9[] = { 0x0069, 0x0309, 0 };
+static const unichar_t str_1eca[] = { 0x0049, 0x0323, 0 };
+static const unichar_t str_1ecb[] = { 0x0069, 0x0323, 0 };
+static const unichar_t str_1ecc[] = { 0x004f, 0x0323, 0 };
+static const unichar_t str_1ecd[] = { 0x006f, 0x0323, 0 };
+static const unichar_t str_1ece[] = { 0x004f, 0x0309, 0 };
+static const unichar_t str_1ecf[] = { 0x006f, 0x0309, 0 };
+static const unichar_t str_1ed0[] = { 0x00d4, 0x0301, 0 };
+static const unichar_t str_1ed1[] = { 0x00f4, 0x0301, 0 };
+static const unichar_t str_1ed2[] = { 0x00d4, 0x0300, 0 };
+static const unichar_t str_1ed3[] = { 0x00f4, 0x0300, 0 };
+static const unichar_t str_1ed4[] = { 0x00d4, 0x0309, 0 };
+static const unichar_t str_1ed5[] = { 0x00f4, 0x0309, 0 };
+static const unichar_t str_1ed6[] = { 0x00d4, 0x0303, 0 };
+static const unichar_t str_1ed7[] = { 0x00f4, 0x0303, 0 };
+static const unichar_t str_1ed8[] = { 0x1ecc, 0x0302, 0 };
+static const unichar_t str_1ed9[] = { 0x1ecd, 0x0302, 0 };
+static const unichar_t str_1eda[] = { 0x01a0, 0x0301, 0 };
+static const unichar_t str_1edb[] = { 0x01a1, 0x0301, 0 };
+static const unichar_t str_1edc[] = { 0x01a0, 0x0300, 0 };
+static const unichar_t str_1edd[] = { 0x01a1, 0x0300, 0 };
+static const unichar_t str_1ede[] = { 0x01a0, 0x0309, 0 };
+static const unichar_t str_1edf[] = { 0x01a1, 0x0309, 0 };
+static const unichar_t str_1ee0[] = { 0x01a0, 0x0303, 0 };
+static const unichar_t str_1ee1[] = { 0x01a1, 0x0303, 0 };
+static const unichar_t str_1ee2[] = { 0x01a0, 0x0323, 0 };
+static const unichar_t str_1ee3[] = { 0x01a1, 0x0323, 0 };
+static const unichar_t str_1ee4[] = { 0x0055, 0x0323, 0 };
+static const unichar_t str_1ee5[] = { 0x0075, 0x0323, 0 };
+static const unichar_t str_1ee6[] = { 0x0055, 0x0309, 0 };
+static const unichar_t str_1ee7[] = { 0x0075, 0x0309, 0 };
+static const unichar_t str_1ee8[] = { 0x01af, 0x0301, 0 };
+static const unichar_t str_1ee9[] = { 0x01b0, 0x0301, 0 };
+static const unichar_t str_1eea[] = { 0x01af, 0x0300, 0 };
+static const unichar_t str_1eeb[] = { 0x01b0, 0x0300, 0 };
+static const unichar_t str_1eec[] = { 0x01af, 0x0309, 0 };
+static const unichar_t str_1eed[] = { 0x01b0, 0x0309, 0 };
+static const unichar_t str_1eee[] = { 0x01af, 0x0303, 0 };
+static const unichar_t str_1eef[] = { 0x01b0, 0x0303, 0 };
+static const unichar_t str_1ef0[] = { 0x01af, 0x0323, 0 };
+static const unichar_t str_1ef1[] = { 0x01b0, 0x0323, 0 };
+static const unichar_t str_1ef2[] = { 0x0059, 0x0300, 0 };
+static const unichar_t str_1ef3[] = { 0x0079, 0x0300, 0 };
+static const unichar_t str_1ef4[] = { 0x0059, 0x0323, 0 };
+static const unichar_t str_1ef5[] = { 0x0079, 0x0323, 0 };
+static const unichar_t str_1ef6[] = { 0x0059, 0x0309, 0 };
+static const unichar_t str_1ef7[] = { 0x0079, 0x0309, 0 };
+static const unichar_t str_1ef8[] = { 0x0059, 0x0303, 0 };
+static const unichar_t str_1ef9[] = { 0x0079, 0x0303, 0 };
+static const unichar_t str_1f00[] = { 0x03b1, 0x0313, 0 };
+static const unichar_t str_1f01[] = { 0x03b1, 0x0314, 0 };
+static const unichar_t str_1f02[] = { 0x1f00, 0x0300, 0 };
+static const unichar_t str_1f03[] = { 0x1f01, 0x0300, 0 };
+static const unichar_t str_1f04[] = { 0x1f00, 0x0301, 0 };
+static const unichar_t str_1f05[] = { 0x1f01, 0x0301, 0 };
+static const unichar_t str_1f06[] = { 0x1f00, 0x0342, 0 };
+static const unichar_t str_1f07[] = { 0x1f01, 0x0342, 0 };
+static const unichar_t str_1f08[] = { 0x0391, 0x0313, 0 };
+static const unichar_t str_1f09[] = { 0x0391, 0x0314, 0 };
+static const unichar_t str_1f0a[] = { 0x1f08, 0x0300, 0 };
+static const unichar_t str_1f0b[] = { 0x1f09, 0x0300, 0 };
+static const unichar_t str_1f0c[] = { 0x1f08, 0x0301, 0 };
+static const unichar_t str_1f0d[] = { 0x1f09, 0x0301, 0 };
+static const unichar_t str_1f0e[] = { 0x1f08, 0x0342, 0 };
+static const unichar_t str_1f0f[] = { 0x1f09, 0x0342, 0 };
+static const unichar_t str_1f10[] = { 0x03b5, 0x0313, 0 };
+static const unichar_t str_1f11[] = { 0x03b5, 0x0314, 0 };
+static const unichar_t str_1f12[] = { 0x1f10, 0x0300, 0 };
+static const unichar_t str_1f13[] = { 0x1f11, 0x0300, 0 };
+static const unichar_t str_1f14[] = { 0x1f10, 0x0301, 0 };
+static const unichar_t str_1f15[] = { 0x1f11, 0x0301, 0 };
+static const unichar_t str_1f18[] = { 0x0395, 0x0313, 0 };
+static const unichar_t str_1f19[] = { 0x0395, 0x0314, 0 };
+static const unichar_t str_1f1a[] = { 0x1f18, 0x0300, 0 };
+static const unichar_t str_1f1b[] = { 0x1f19, 0x0300, 0 };
+static const unichar_t str_1f1c[] = { 0x1f18, 0x0301, 0 };
+static const unichar_t str_1f1d[] = { 0x1f19, 0x0301, 0 };
+static const unichar_t str_1f20[] = { 0x03b7, 0x0313, 0 };
+static const unichar_t str_1f21[] = { 0x03b7, 0x0314, 0 };
+static const unichar_t str_1f22[] = { 0x1f20, 0x0300, 0 };
+static const unichar_t str_1f23[] = { 0x1f21, 0x0300, 0 };
+static const unichar_t str_1f24[] = { 0x1f20, 0x0301, 0 };
+static const unichar_t str_1f25[] = { 0x1f21, 0x0301, 0 };
+static const unichar_t str_1f26[] = { 0x1f20, 0x0342, 0 };
+static const unichar_t str_1f27[] = { 0x1f21, 0x0342, 0 };
+static const unichar_t str_1f28[] = { 0x0397, 0x0313, 0 };
+static const unichar_t str_1f29[] = { 0x0397, 0x0314, 0 };
+static const unichar_t str_1f2a[] = { 0x1f28, 0x0300, 0 };
+static const unichar_t str_1f2b[] = { 0x1f29, 0x0300, 0 };
+static const unichar_t str_1f2c[] = { 0x1f28, 0x0301, 0 };
+static const unichar_t str_1f2d[] = { 0x1f29, 0x0301, 0 };
+static const unichar_t str_1f2e[] = { 0x1f28, 0x0342, 0 };
+static const unichar_t str_1f2f[] = { 0x1f29, 0x0342, 0 };
+static const unichar_t str_1f30[] = { 0x03b9, 0x0313, 0 };
+static const unichar_t str_1f31[] = { 0x03b9, 0x0314, 0 };
+static const unichar_t str_1f32[] = { 0x1f30, 0x0300, 0 };
+static const unichar_t str_1f33[] = { 0x1f31, 0x0300, 0 };
+static const unichar_t str_1f34[] = { 0x1f30, 0x0301, 0 };
+static const unichar_t str_1f35[] = { 0x1f31, 0x0301, 0 };
+static const unichar_t str_1f36[] = { 0x1f30, 0x0342, 0 };
+static const unichar_t str_1f37[] = { 0x1f31, 0x0342, 0 };
+static const unichar_t str_1f38[] = { 0x0399, 0x0313, 0 };
+static const unichar_t str_1f39[] = { 0x0399, 0x0314, 0 };
+static const unichar_t str_1f3a[] = { 0x1f38, 0x0300, 0 };
+static const unichar_t str_1f3b[] = { 0x1f39, 0x0300, 0 };
+static const unichar_t str_1f3c[] = { 0x1f38, 0x0301, 0 };
+static const unichar_t str_1f3d[] = { 0x1f39, 0x0301, 0 };
+static const unichar_t str_1f3e[] = { 0x1f38, 0x0342, 0 };
+static const unichar_t str_1f3f[] = { 0x1f39, 0x0342, 0 };
+static const unichar_t str_1f40[] = { 0x03bf, 0x0313, 0 };
+static const unichar_t str_1f41[] = { 0x03bf, 0x0314, 0 };
+static const unichar_t str_1f42[] = { 0x1f40, 0x0300, 0 };
+static const unichar_t str_1f43[] = { 0x1f41, 0x0300, 0 };
+static const unichar_t str_1f44[] = { 0x1f40, 0x0301, 0 };
+static const unichar_t str_1f45[] = { 0x1f41, 0x0301, 0 };
+static const unichar_t str_1f48[] = { 0x039f, 0x0313, 0 };
+static const unichar_t str_1f49[] = { 0x039f, 0x0314, 0 };
+static const unichar_t str_1f4a[] = { 0x1f48, 0x0300, 0 };
+static const unichar_t str_1f4b[] = { 0x1f49, 0x0300, 0 };
+static const unichar_t str_1f4c[] = { 0x1f48, 0x0301, 0 };
+static const unichar_t str_1f4d[] = { 0x1f49, 0x0301, 0 };
+static const unichar_t str_1f50[] = { 0x03c5, 0x0313, 0 };
+static const unichar_t str_1f51[] = { 0x03c5, 0x0314, 0 };
+static const unichar_t str_1f52[] = { 0x1f50, 0x0300, 0 };
+static const unichar_t str_1f53[] = { 0x1f51, 0x0300, 0 };
+static const unichar_t str_1f54[] = { 0x1f50, 0x0301, 0 };
+static const unichar_t str_1f55[] = { 0x1f51, 0x0301, 0 };
+static const unichar_t str_1f56[] = { 0x1f50, 0x0342, 0 };
+static const unichar_t str_1f57[] = { 0x1f51, 0x0342, 0 };
+static const unichar_t str_1f59[] = { 0x03a5, 0x0314, 0 };
+static const unichar_t str_1f5b[] = { 0x1f59, 0x0300, 0 };
+static const unichar_t str_1f5d[] = { 0x1f59, 0x0301, 0 };
+static const unichar_t str_1f5f[] = { 0x1f59, 0x0342, 0 };
+static const unichar_t str_1f60[] = { 0x03c9, 0x0313, 0 };
+static const unichar_t str_1f61[] = { 0x03c9, 0x0314, 0 };
+static const unichar_t str_1f62[] = { 0x1f60, 0x0300, 0 };
+static const unichar_t str_1f63[] = { 0x1f61, 0x0300, 0 };
+static const unichar_t str_1f64[] = { 0x1f60, 0x0301, 0 };
+static const unichar_t str_1f65[] = { 0x1f61, 0x0301, 0 };
+static const unichar_t str_1f66[] = { 0x1f60, 0x0342, 0 };
+static const unichar_t str_1f67[] = { 0x1f61, 0x0342, 0 };
+static const unichar_t str_1f68[] = { 0x03a9, 0x0313, 0 };
+static const unichar_t str_1f69[] = { 0x03a9, 0x0314, 0 };
+static const unichar_t str_1f6a[] = { 0x1f68, 0x0300, 0 };
+static const unichar_t str_1f6b[] = { 0x1f69, 0x0300, 0 };
+static const unichar_t str_1f6c[] = { 0x1f68, 0x0301, 0 };
+static const unichar_t str_1f6d[] = { 0x1f69, 0x0301, 0 };
+static const unichar_t str_1f6e[] = { 0x1f68, 0x0342, 0 };
+static const unichar_t str_1f6f[] = { 0x1f69, 0x0342, 0 };
+static const unichar_t str_1f70[] = { 0x03b1, 0x0300, 0 };
+static const unichar_t str_1f71[] = { 0x03ac, 0 };
+static const unichar_t str_1f72[] = { 0x03b5, 0x0300, 0 };
+static const unichar_t str_1f73[] = { 0x03ad, 0 };
+static const unichar_t str_1f74[] = { 0x03b7, 0x0300, 0 };
+static const unichar_t str_1f75[] = { 0x03ae, 0 };
+static const unichar_t str_1f76[] = { 0x03b9, 0x0300, 0 };
+static const unichar_t str_1f77[] = { 0x03af, 0 };
+static const unichar_t str_1f78[] = { 0x03bf, 0x0300, 0 };
+static const unichar_t str_1f79[] = { 0x03cc, 0 };
+static const unichar_t str_1f7a[] = { 0x03c5, 0x0300, 0 };
+static const unichar_t str_1f7b[] = { 0x03cd, 0 };
+static const unichar_t str_1f7c[] = { 0x03c9, 0x0300, 0 };
+static const unichar_t str_1f7d[] = { 0x03ce, 0 };
+static const unichar_t str_1f80[] = { 0x1f00, 0x0345, 0 };
+static const unichar_t str_1f81[] = { 0x1f01, 0x0345, 0 };
+static const unichar_t str_1f82[] = { 0x1f02, 0x0345, 0 };
+static const unichar_t str_1f83[] = { 0x1f03, 0x0345, 0 };
+static const unichar_t str_1f84[] = { 0x1f04, 0x0345, 0 };
+static const unichar_t str_1f85[] = { 0x1f05, 0x0345, 0 };
+static const unichar_t str_1f86[] = { 0x1f06, 0x0345, 0 };
+static const unichar_t str_1f87[] = { 0x1f07, 0x0345, 0 };
+static const unichar_t str_1f88[] = { 0x1f08, 0x0345, 0 };
+static const unichar_t str_1f89[] = { 0x1f09, 0x0345, 0 };
+static const unichar_t str_1f8a[] = { 0x1f0a, 0x0345, 0 };
+static const unichar_t str_1f8b[] = { 0x1f0b, 0x0345, 0 };
+static const unichar_t str_1f8c[] = { 0x1f0c, 0x0345, 0 };
+static const unichar_t str_1f8d[] = { 0x1f0d, 0x0345, 0 };
+static const unichar_t str_1f8e[] = { 0x1f0e, 0x0345, 0 };
+static const unichar_t str_1f8f[] = { 0x1f0f, 0x0345, 0 };
+static const unichar_t str_1f90[] = { 0x1f20, 0x0345, 0 };
+static const unichar_t str_1f91[] = { 0x1f21, 0x0345, 0 };
+static const unichar_t str_1f92[] = { 0x1f22, 0x0345, 0 };
+static const unichar_t str_1f93[] = { 0x1f23, 0x0345, 0 };
+static const unichar_t str_1f94[] = { 0x1f24, 0x0345, 0 };
+static const unichar_t str_1f95[] = { 0x1f25, 0x0345, 0 };
+static const unichar_t str_1f96[] = { 0x1f26, 0x0345, 0 };
+static const unichar_t str_1f97[] = { 0x1f27, 0x0345, 0 };
+static const unichar_t str_1f98[] = { 0x1f28, 0x0345, 0 };
+static const unichar_t str_1f99[] = { 0x1f29, 0x0345, 0 };
+static const unichar_t str_1f9a[] = { 0x1f2a, 0x0345, 0 };
+static const unichar_t str_1f9b[] = { 0x1f2b, 0x0345, 0 };
+static const unichar_t str_1f9c[] = { 0x1f2c, 0x0345, 0 };
+static const unichar_t str_1f9d[] = { 0x1f2d, 0x0345, 0 };
+static const unichar_t str_1f9e[] = { 0x1f2e, 0x0345, 0 };
+static const unichar_t str_1f9f[] = { 0x1f2f, 0x0345, 0 };
+static const unichar_t str_1fa0[] = { 0x1f60, 0x0345, 0 };
+static const unichar_t str_1fa1[] = { 0x1f61, 0x0345, 0 };
+static const unichar_t str_1fa2[] = { 0x1f62, 0x0345, 0 };
+static const unichar_t str_1fa3[] = { 0x1f63, 0x0345, 0 };
+static const unichar_t str_1fa4[] = { 0x1f64, 0x0345, 0 };
+static const unichar_t str_1fa5[] = { 0x1f65, 0x0345, 0 };
+static const unichar_t str_1fa6[] = { 0x1f66, 0x0345, 0 };
+static const unichar_t str_1fa7[] = { 0x1f67, 0x0345, 0 };
+static const unichar_t str_1fa8[] = { 0x1f68, 0x0345, 0 };
+static const unichar_t str_1fa9[] = { 0x1f69, 0x0345, 0 };
+static const unichar_t str_1faa[] = { 0x1f6a, 0x0345, 0 };
+static const unichar_t str_1fab[] = { 0x1f6b, 0x0345, 0 };
+static const unichar_t str_1fac[] = { 0x1f6c, 0x0345, 0 };
+static const unichar_t str_1fad[] = { 0x1f6d, 0x0345, 0 };
+static const unichar_t str_1fae[] = { 0x1f6e, 0x0345, 0 };
+static const unichar_t str_1faf[] = { 0x1f6f, 0x0345, 0 };
+static const unichar_t str_1fb0[] = { 0x03b1, 0x0306, 0 };
+static const unichar_t str_1fb1[] = { 0x03b1, 0x0304, 0 };
+static const unichar_t str_1fb2[] = { 0x1f70, 0x0345, 0 };
+static const unichar_t str_1fb3[] = { 0x03b1, 0x0345, 0 };
+static const unichar_t str_1fb4[] = { 0x03ac, 0x0345, 0 };
+static const unichar_t str_1fb6[] = { 0x03b1, 0x0342, 0 };
+static const unichar_t str_1fb7[] = { 0x1fb6, 0x0345, 0 };
+static const unichar_t str_1fb8[] = { 0x0391, 0x0306, 0 };
+static const unichar_t str_1fb9[] = { 0x0391, 0x0304, 0 };
+static const unichar_t str_1fba[] = { 0x0391, 0x0300, 0 };
+static const unichar_t str_1fbb[] = { 0x0386, 0 };
+static const unichar_t str_1fbc[] = { 0x0391, 0x0345, 0 };
+static const unichar_t str_1fbd[] = { 0x0020, 0x0313, 0 };
+static const unichar_t str_1fbe[] = { 0x03b9, 0 };
+static const unichar_t str_1fbf[] = { 0x0020, 0x0313, 0 };
+static const unichar_t str_1fc0[] = { 0x0020, 0x0342, 0 };
+static const unichar_t str_1fc1[] = { 0x00a8, 0x0342, 0 };
+static const unichar_t str_1fc2[] = { 0x1f74, 0x0345, 0 };
+static const unichar_t str_1fc3[] = { 0x03b7, 0x0345, 0 };
+static const unichar_t str_1fc4[] = { 0x03ae, 0x0345, 0 };
+static const unichar_t str_1fc6[] = { 0x03b7, 0x0342, 0 };
+static const unichar_t str_1fc7[] = { 0x1fc6, 0x0345, 0 };
+static const unichar_t str_1fc8[] = { 0x0395, 0x0300, 0 };
+static const unichar_t str_1fc9[] = { 0x0388, 0 };
+static const unichar_t str_1fca[] = { 0x0397, 0x0300, 0 };
+static const unichar_t str_1fcb[] = { 0x0389, 0 };
+static const unichar_t str_1fcc[] = { 0x0397, 0x0345, 0 };
+static const unichar_t str_1fcd[] = { 0x1fbf, 0x0300, 0 };
+static const unichar_t str_1fce[] = { 0x1fbf, 0x0301, 0 };
+static const unichar_t str_1fcf[] = { 0x1fbf, 0x0342, 0 };
+static const unichar_t str_1fd0[] = { 0x03b9, 0x0306, 0 };
+static const unichar_t str_1fd1[] = { 0x03b9, 0x0304, 0 };
+static const unichar_t str_1fd2[] = { 0x03ca, 0x0300, 0 };
+static const unichar_t str_1fd3[] = { 0x0390, 0 };
+static const unichar_t str_1fd6[] = { 0x03b9, 0x0342, 0 };
+static const unichar_t str_1fd7[] = { 0x03ca, 0x0342, 0 };
+static const unichar_t str_1fd8[] = { 0x0399, 0x0306, 0 };
+static const unichar_t str_1fd9[] = { 0x0399, 0x0304, 0 };
+static const unichar_t str_1fda[] = { 0x0399, 0x0300, 0 };
+static const unichar_t str_1fdb[] = { 0x038a, 0 };
+static const unichar_t str_1fdd[] = { 0x1ffe, 0x0300, 0 };
+static const unichar_t str_1fde[] = { 0x1ffe, 0x0301, 0 };
+static const unichar_t str_1fdf[] = { 0x1ffe, 0x0342, 0 };
+static const unichar_t str_1fe0[] = { 0x03c5, 0x0306, 0 };
+static const unichar_t str_1fe1[] = { 0x03c5, 0x0304, 0 };
+static const unichar_t str_1fe2[] = { 0x03cb, 0x0300, 0 };
+static const unichar_t str_1fe3[] = { 0x03b0, 0 };
+static const unichar_t str_1fe4[] = { 0x03c1, 0x0313, 0 };
+static const unichar_t str_1fe5[] = { 0x03c1, 0x0314, 0 };
+static const unichar_t str_1fe6[] = { 0x03c5, 0x0342, 0 };
+static const unichar_t str_1fe7[] = { 0x03cb, 0x0342, 0 };
+static const unichar_t str_1fe8[] = { 0x03a5, 0x0306, 0 };
+static const unichar_t str_1fe9[] = { 0x03a5, 0x0304, 0 };
+static const unichar_t str_1fea[] = { 0x03a5, 0x0300, 0 };
+static const unichar_t str_1feb[] = { 0x038e, 0 };
+static const unichar_t str_1fec[] = { 0x03a1, 0x0314, 0 };
+static const unichar_t str_1fed[] = { 0x00a8, 0x0300, 0 };
+static const unichar_t str_1fee[] = { 0x0385, 0 };
+static const unichar_t str_1fef[] = { 0x0060, 0 };
+static const unichar_t str_1ff2[] = { 0x1f7c, 0x0345, 0 };
+static const unichar_t str_1ff3[] = { 0x03c9, 0x0345, 0 };
+static const unichar_t str_1ff4[] = { 0x03ce, 0x0345, 0 };
+static const unichar_t str_1ff6[] = { 0x03c9, 0x0342, 0 };
+static const unichar_t str_1ff7[] = { 0x1ff6, 0x0345, 0 };
+static const unichar_t str_1ff8[] = { 0x039f, 0x0300, 0 };
+static const unichar_t str_1ff9[] = { 0x038c, 0 };
+static const unichar_t str_1ffa[] = { 0x03a9, 0x0300, 0 };
+static const unichar_t str_1ffb[] = { 0x038f, 0 };
+static const unichar_t str_1ffc[] = { 0x03a9, 0x0345, 0 };
+static const unichar_t str_1ffd[] = { 0x00b4, 0 };
+static const unichar_t str_1ffe[] = { 0x0020, 0x0314, 0 };
+static const unichar_t str_2000[] = { 0x2002, 0 };
+static const unichar_t str_2001[] = { 0x2003, 0 };
+static const unichar_t str_2002[] = { 0x0020, 0 };
+static const unichar_t str_2003[] = { 0x0020, 0 };
+static const unichar_t str_2004[] = { 0x0020, 0 };
+static const unichar_t str_2005[] = { 0x0020, 0 };
+static const unichar_t str_2006[] = { 0x0020, 0 };
+static const unichar_t str_2007[] = { 0x0020, 0 };
+static const unichar_t str_2008[] = { 0x0020, 0 };
+static const unichar_t str_2009[] = { 0x0020, 0 };
+static const unichar_t str_200a[] = { 0x0020, 0 };
+static const unichar_t str_2010[] = { 0x002d, 0 };
+static const unichar_t str_2011[] = { 0x2010, 0 };
+static const unichar_t str_2012[] = { 0x002d, 0 };
+static const unichar_t str_2013[] = { 0x002d, 0 };
+static const unichar_t str_2014[] = { 0x002d, 0 };
+static const unichar_t str_2015[] = { 0x002d, 0 };
+static const unichar_t str_2016[] = { 0x007c, 0x007c, 0 };
+static const unichar_t str_2017[] = { 0x0020, 0x0333, 0 };
+static const unichar_t str_2018[] = { 0x0060, 0 };
+static const unichar_t str_2019[] = { 0x0027, 0 };
+static const unichar_t str_201c[] = { 0x0022, 0 };
+static const unichar_t str_201d[] = { 0x0022, 0 };
+static const unichar_t str_2024[] = { 0x002e, 0 };
+static const unichar_t str_2025[] = { 0x002e, 0x002e, 0 };
+static const unichar_t str_2026[] = { 0x002e, 0x002e, 0x002e, 0 };
+static const unichar_t str_202f[] = { 0x0020, 0 };
+static const unichar_t str_2032[] = { 0x0027, 0 };
+static const unichar_t str_2033[] = { 0x2032, 0x2032, 0 };
+static const unichar_t str_2034[] = { 0x2032, 0x2032, 0x2032, 0 };
+static const unichar_t str_2035[] = { 0x0060, 0 };
+static const unichar_t str_2036[] = { 0x2035, 0x2035, 0 };
+static const unichar_t str_2037[] = { 0x2035, 0x2035, 0x2035, 0 };
+static const unichar_t str_2039[] = { 0x003c, 0 };
+static const unichar_t str_203a[] = { 0x003e, 0 };
+static const unichar_t str_203c[] = { 0x0021, 0x0021, 0 };
+static const unichar_t str_203e[] = { 0x0020, 0x0305, 0 };
+static const unichar_t str_2047[] = { 0x003f, 0x003f, 0 };
+static const unichar_t str_2048[] = { 0x003f, 0x0021, 0 };
+static const unichar_t str_2049[] = { 0x0021, 0x003f, 0 };
+static const unichar_t str_2057[] = { 0x2032, 0x2032, 0x2032, 0x2032, 0 };
+static const unichar_t str_205f[] = { 0x0020, 0 };
+static const unichar_t str_2070[] = { 0x0030, 0 };
+static const unichar_t str_2071[] = { 0x0069, 0 };
+static const unichar_t str_2074[] = { 0x0034, 0 };
+static const unichar_t str_2075[] = { 0x0035, 0 };
+static const unichar_t str_2076[] = { 0x0036, 0 };
+static const unichar_t str_2077[] = { 0x0037, 0 };
+static const unichar_t str_2078[] = { 0x0038, 0 };
+static const unichar_t str_2079[] = { 0x0039, 0 };
+static const unichar_t str_207a[] = { 0x002b, 0 };
+static const unichar_t str_207b[] = { 0x2212, 0 };
+static const unichar_t str_207c[] = { 0x003d, 0 };
+static const unichar_t str_207d[] = { 0x0028, 0 };
+static const unichar_t str_207e[] = { 0x0029, 0 };
+static const unichar_t str_207f[] = { 0x006e, 0 };
+static const unichar_t str_2080[] = { 0x0030, 0 };
+static const unichar_t str_2081[] = { 0x0031, 0 };
+static const unichar_t str_2082[] = { 0x0032, 0 };
+static const unichar_t str_2083[] = { 0x0033, 0 };
+static const unichar_t str_2084[] = { 0x0034, 0 };
+static const unichar_t str_2085[] = { 0x0035, 0 };
+static const unichar_t str_2086[] = { 0x0036, 0 };
+static const unichar_t str_2087[] = { 0x0037, 0 };
+static const unichar_t str_2088[] = { 0x0038, 0 };
+static const unichar_t str_2089[] = { 0x0039, 0 };
+static const unichar_t str_208a[] = { 0x002b, 0 };
+static const unichar_t str_208b[] = { 0x2212, 0 };
+static const unichar_t str_208c[] = { 0x003d, 0 };
+static const unichar_t str_208d[] = { 0x0028, 0 };
+static const unichar_t str_208e[] = { 0x0029, 0 };
+static const unichar_t str_2090[] = { 0x0061, 0 };
+static const unichar_t str_2091[] = { 0x0065, 0 };
+static const unichar_t str_2092[] = { 0x006f, 0 };
+static const unichar_t str_2093[] = { 0x0078, 0 };
+static const unichar_t str_2094[] = { 0x0259, 0 };
+static const unichar_t str_2095[] = { 0x0068, 0 };
+static const unichar_t str_2096[] = { 0x006b, 0 };
+static const unichar_t str_2097[] = { 0x006c, 0 };
+static const unichar_t str_2098[] = { 0x006d, 0 };
+static const unichar_t str_2099[] = { 0x006e, 0 };
+static const unichar_t str_209a[] = { 0x0070, 0 };
+static const unichar_t str_209b[] = { 0x0073, 0 };
+static const unichar_t str_209c[] = { 0x0074, 0 };
+static const unichar_t str_20a8[] = { 0x0052, 0x0073, 0 };
+static const unichar_t str_2100[] = { 0x0061, 0x002f, 0x0063, 0 };
+static const unichar_t str_2101[] = { 0x0061, 0x002f, 0x0073, 0 };
+static const unichar_t str_2102[] = { 0x0043, 0 };
+static const unichar_t str_2103[] = { 0x00b0, 0x0043, 0 };
+static const unichar_t str_2105[] = { 0x0063, 0x002f, 0x006f, 0 };
+static const unichar_t str_2106[] = { 0x0063, 0x002f, 0x0075, 0 };
+static const unichar_t str_2107[] = { 0x0190, 0 };
+static const unichar_t str_2109[] = { 0x00b0, 0x0046, 0 };
+static const unichar_t str_210a[] = { 0x0067, 0 };
+static const unichar_t str_210b[] = { 0x0048, 0 };
+static const unichar_t str_210c[] = { 0x0048, 0 };
+static const unichar_t str_210d[] = { 0x0048, 0 };
+static const unichar_t str_210e[] = { 0x0068, 0 };
+static const unichar_t str_210f[] = { 0x0127, 0 };
+static const unichar_t str_2110[] = { 0x0049, 0 };
+static const unichar_t str_2111[] = { 0x0049, 0 };
+static const unichar_t str_2112[] = { 0x004c, 0 };
+static const unichar_t str_2113[] = { 0x006c, 0 };
+static const unichar_t str_2115[] = { 0x004e, 0 };
+static const unichar_t str_2116[] = { 0x004e, 0x006f, 0 };
+static const unichar_t str_2119[] = { 0x0050, 0 };
+static const unichar_t str_211a[] = { 0x0051, 0 };
+static const unichar_t str_211b[] = { 0x0052, 0 };
+static const unichar_t str_211c[] = { 0x0052, 0 };
+static const unichar_t str_211d[] = { 0x0052, 0 };
+static const unichar_t str_2120[] = { 0x0053, 0x004d, 0 };
+static const unichar_t str_2121[] = { 0x0054, 0x0045, 0x004c, 0 };
+static const unichar_t str_2122[] = { 0x0054, 0x004d, 0 };
+static const unichar_t str_2124[] = { 0x005a, 0 };
+static const unichar_t str_2126[] = { 0x03a9, 0 };
+static const unichar_t str_2128[] = { 0x005a, 0 };
+static const unichar_t str_212a[] = { 0x004b, 0 };
+static const unichar_t str_212b[] = { 0x00c5, 0 };
+static const unichar_t str_212c[] = { 0x0042, 0 };
+static const unichar_t str_212d[] = { 0x0043, 0 };
+static const unichar_t str_212f[] = { 0x0065, 0 };
+static const unichar_t str_2130[] = { 0x0045, 0 };
+static const unichar_t str_2131[] = { 0x0046, 0 };
+static const unichar_t str_2133[] = { 0x004d, 0 };
+static const unichar_t str_2134[] = { 0x006f, 0 };
+static const unichar_t str_2135[] = { 0x05d0, 0 };
+static const unichar_t str_2136[] = { 0x05d1, 0 };
+static const unichar_t str_2137[] = { 0x05d2, 0 };
+static const unichar_t str_2138[] = { 0x05d3, 0 };
+static const unichar_t str_2139[] = { 0x0069, 0 };
+static const unichar_t str_213b[] = { 0x0046, 0x0041, 0x0058, 0 };
+static const unichar_t str_213c[] = { 0x03c0, 0 };
+static const unichar_t str_213d[] = { 0x03b3, 0 };
+static const unichar_t str_213e[] = { 0x0393, 0 };
+static const unichar_t str_213f[] = { 0x03a0, 0 };
+static const unichar_t str_2140[] = { 0x2211, 0 };
+static const unichar_t str_2145[] = { 0x0044, 0 };
+static const unichar_t str_2146[] = { 0x0064, 0 };
+static const unichar_t str_2147[] = { 0x0065, 0 };
+static const unichar_t str_2148[] = { 0x0069, 0 };
+static const unichar_t str_2149[] = { 0x006a, 0 };
+static const unichar_t str_2150[] = { 0x0031, 0x2044, 0x0037, 0 };
+static const unichar_t str_2151[] = { 0x0031, 0x2044, 0x0039, 0 };
+static const unichar_t str_2152[] = { 0x0031, 0x2044, 0x0031, 0x0030, 0 };
+static const unichar_t str_2153[] = { 0x0031, 0x2044, 0x0033, 0 };
+static const unichar_t str_2154[] = { 0x0032, 0x2044, 0x0033, 0 };
+static const unichar_t str_2155[] = { 0x0031, 0x2044, 0x0035, 0 };
+static const unichar_t str_2156[] = { 0x0032, 0x2044, 0x0035, 0 };
+static const unichar_t str_2157[] = { 0x0033, 0x2044, 0x0035, 0 };
+static const unichar_t str_2158[] = { 0x0034, 0x2044, 0x0035, 0 };
+static const unichar_t str_2159[] = { 0x0031, 0x2044, 0x0036, 0 };
+static const unichar_t str_215a[] = { 0x0035, 0x2044, 0x0036, 0 };
+static const unichar_t str_215b[] = { 0x0031, 0x2044, 0x0038, 0 };
+static const unichar_t str_215c[] = { 0x0033, 0x2044, 0x0038, 0 };
+static const unichar_t str_215d[] = { 0x0035, 0x2044, 0x0038, 0 };
+static const unichar_t str_215e[] = { 0x0037, 0x2044, 0x0038, 0 };
+static const unichar_t str_215f[] = { 0x0031, 0x2044, 0 };
+static const unichar_t str_2160[] = { 0x0049, 0 };
+static const unichar_t str_2161[] = { 0x0049, 0x0049, 0 };
+static const unichar_t str_2162[] = { 0x0049, 0x0049, 0x0049, 0 };
+static const unichar_t str_2163[] = { 0x0049, 0x0056, 0 };
+static const unichar_t str_2164[] = { 0x0056, 0 };
+static const unichar_t str_2165[] = { 0x0056, 0x0049, 0 };
+static const unichar_t str_2166[] = { 0x0056, 0x0049, 0x0049, 0 };
+static const unichar_t str_2167[] = { 0x0056, 0x0049, 0x0049, 0x0049, 0 };
+static const unichar_t str_2168[] = { 0x0049, 0x0058, 0 };
+static const unichar_t str_2169[] = { 0x0058, 0 };
+static const unichar_t str_216a[] = { 0x0058, 0x0049, 0 };
+static const unichar_t str_216b[] = { 0x0058, 0x0049, 0x0049, 0 };
+static const unichar_t str_216c[] = { 0x004c, 0 };
+static const unichar_t str_216d[] = { 0x0043, 0 };
+static const unichar_t str_216e[] = { 0x0044, 0 };
+static const unichar_t str_216f[] = { 0x004d, 0 };
+static const unichar_t str_2170[] = { 0x0069, 0 };
+static const unichar_t str_2171[] = { 0x0069, 0x0069, 0 };
+static const unichar_t str_2172[] = { 0x0069, 0x0069, 0x0069, 0 };
+static const unichar_t str_2173[] = { 0x0069, 0x0076, 0 };
+static const unichar_t str_2174[] = { 0x0076, 0 };
+static const unichar_t str_2175[] = { 0x0076, 0x0069, 0 };
+static const unichar_t str_2176[] = { 0x0076, 0x0069, 0x0069, 0 };
+static const unichar_t str_2177[] = { 0x0076, 0x0069, 0x0069, 0x0069, 0 };
+static const unichar_t str_2178[] = { 0x0069, 0x0078, 0 };
+static const unichar_t str_2179[] = { 0x0078, 0 };
+static const unichar_t str_217a[] = { 0x0078, 0x0069, 0 };
+static const unichar_t str_217b[] = { 0x0078, 0x0069, 0x0069, 0 };
+static const unichar_t str_217c[] = { 0x006c, 0 };
+static const unichar_t str_217d[] = { 0x0063, 0 };
+static const unichar_t str_217e[] = { 0x0064, 0 };
+static const unichar_t str_217f[] = { 0x006d, 0 };
+static const unichar_t str_2189[] = { 0x0030, 0x2044, 0x0033, 0 };
+static const unichar_t str_219a[] = { 0x2190, 0x0338, 0 };
+static const unichar_t str_219b[] = { 0x2192, 0x0338, 0 };
+static const unichar_t str_21ae[] = { 0x2194, 0x0338, 0 };
+static const unichar_t str_21cd[] = { 0x21d0, 0x0338, 0 };
+static const unichar_t str_21ce[] = { 0x21d4, 0x0338, 0 };
+static const unichar_t str_21cf[] = { 0x21d2, 0x0338, 0 };
+static const unichar_t str_2204[] = { 0x2203, 0x0338, 0 };
+static const unichar_t str_2205[] = { 0x00d8, 0 };
+static const unichar_t str_2206[] = { 0x0394, 0 };
+static const unichar_t str_2209[] = { 0x2208, 0x0338, 0 };
+static const unichar_t str_220c[] = { 0x220b, 0x0338, 0 };
+static const unichar_t str_220f[] = { 0x03a0, 0 };
+static const unichar_t str_2211[] = { 0x03a3, 0 };
+static const unichar_t str_2212[] = { 0x002d, 0 };
+static const unichar_t str_2215[] = { 0x002f, 0 };
+static const unichar_t str_2216[] = { 0x005c, 0 };
+static const unichar_t str_2217[] = { 0x002a, 0 };
+static const unichar_t str_2218[] = { 0x00b0, 0 };
+static const unichar_t str_2219[] = { 0x00b7, 0 };
+static const unichar_t str_2223[] = { 0x007c, 0 };
+static const unichar_t str_2224[] = { 0x2223, 0x0338, 0 };
+static const unichar_t str_2225[] = { 0x007c, 0x007c, 0 };
+static const unichar_t str_2226[] = { 0x2225, 0x0338, 0 };
+static const unichar_t str_222c[] = { 0x222b, 0x222b, 0 };
+static const unichar_t str_222d[] = { 0x222b, 0x222b, 0x222b, 0 };
+static const unichar_t str_222f[] = { 0x222e, 0x222e, 0 };
+static const unichar_t str_2230[] = { 0x222e, 0x222e, 0x222e, 0 };
+static const unichar_t str_2236[] = { 0x003a, 0 };
+static const unichar_t str_223c[] = { 0x007e, 0 };
+static const unichar_t str_2241[] = { 0x223c, 0x0338, 0 };
+static const unichar_t str_2244[] = { 0x2243, 0x0338, 0 };
+static const unichar_t str_2247[] = { 0x2245, 0x0338, 0 };
+static const unichar_t str_2249[] = { 0x2248, 0x0338, 0 };
+static const unichar_t str_2260[] = { 0x003d, 0x0338, 0 };
+static const unichar_t str_2262[] = { 0x2261, 0x0338, 0 };
+static const unichar_t str_226a[] = { 0x00ab, 0 };
+static const unichar_t str_226b[] = { 0x00bb, 0 };
+static const unichar_t str_226d[] = { 0x224d, 0x0338, 0 };
+static const unichar_t str_226e[] = { 0x003c, 0x0338, 0 };
+static const unichar_t str_226f[] = { 0x003e, 0x0338, 0 };
+static const unichar_t str_2270[] = { 0x2264, 0x0338, 0 };
+static const unichar_t str_2271[] = { 0x2265, 0x0338, 0 };
+static const unichar_t str_2274[] = { 0x2272, 0x0338, 0 };
+static const unichar_t str_2275[] = { 0x2273, 0x0338, 0 };
+static const unichar_t str_2278[] = { 0x2276, 0x0338, 0 };
+static const unichar_t str_2279[] = { 0x2277, 0x0338, 0 };
+static const unichar_t str_2280[] = { 0x227a, 0x0338, 0 };
+static const unichar_t str_2281[] = { 0x227b, 0x0338, 0 };
+static const unichar_t str_2284[] = { 0x2282, 0x0338, 0 };
+static const unichar_t str_2285[] = { 0x2283, 0x0338, 0 };
+static const unichar_t str_2288[] = { 0x2286, 0x0338, 0 };
+static const unichar_t str_2289[] = { 0x2287, 0x0338, 0 };
+static const unichar_t str_2299[] = { 0x0298, 0 };
+static const unichar_t str_22ac[] = { 0x22a2, 0x0338, 0 };
+static const unichar_t str_22ad[] = { 0x22a8, 0x0338, 0 };
+static const unichar_t str_22ae[] = { 0x22a9, 0x0338, 0 };
+static const unichar_t str_22af[] = { 0x22ab, 0x0338, 0 };
+static const unichar_t str_22c4[] = { 0x25ca, 0 };
+static const unichar_t str_22c5[] = { 0x00b7, 0 };
+static const unichar_t str_22e0[] = { 0x227c, 0x0338, 0 };
+static const unichar_t str_22e1[] = { 0x227d, 0x0338, 0 };
+static const unichar_t str_22e2[] = { 0x2291, 0x0338, 0 };
+static const unichar_t str_22e3[] = { 0x2292, 0x0338, 0 };
+static const unichar_t str_22ea[] = { 0x22b2, 0x0338, 0 };
+static const unichar_t str_22eb[] = { 0x22b3, 0x0338, 0 };
+static const unichar_t str_22ec[] = { 0x22b4, 0x0338, 0 };
+static const unichar_t str_22ed[] = { 0x22b5, 0x0338, 0 };
+static const unichar_t str_22ef[] = { 0x00b7, 0x00b7, 0x00b7, 0 };
+static const unichar_t str_2303[] = { 0x005e, 0 };
+static const unichar_t str_2329[] = { 0x3008, 0 };
+static const unichar_t str_232a[] = { 0x3009, 0 };
+static const unichar_t str_2373[] = { 0x03b9, 0 };
+static const unichar_t str_2374[] = { 0x03c1, 0 };
+static const unichar_t str_2375[] = { 0x03c9, 0 };
+static const unichar_t str_237a[] = { 0x03b1, 0 };
+static const unichar_t str_2400[] = { 0x004e, 0x0055, 0x004c, 0 };
+static const unichar_t str_2401[] = { 0x0053, 0x004f, 0x0048, 0 };
+static const unichar_t str_2402[] = { 0x0053, 0x0054, 0x0058, 0 };
+static const unichar_t str_2403[] = { 0x0045, 0x0054, 0x0058, 0 };
+static const unichar_t str_2404[] = { 0x0045, 0x004f, 0x0054, 0 };
+static const unichar_t str_2405[] = { 0x0045, 0x004e, 0x0041, 0 };
+static const unichar_t str_2406[] = { 0x0041, 0x0043, 0x004b, 0 };
+static const unichar_t str_2407[] = { 0x0042, 0x0045, 0x004c, 0 };
+static const unichar_t str_2408[] = { 0x0042, 0x0053, 0 };
+static const unichar_t str_2409[] = { 0x0048, 0x0054, 0 };
+static const unichar_t str_240a[] = { 0x004c, 0x0046, 0 };
+static const unichar_t str_240b[] = { 0x0056, 0x0054, 0 };
+static const unichar_t str_240c[] = { 0x0046, 0x0046, 0 };
+static const unichar_t str_240d[] = { 0x0043, 0x0052, 0 };
+static const unichar_t str_240e[] = { 0x0053, 0x004f, 0 };
+static const unichar_t str_240f[] = { 0x0053, 0x0049, 0 };
+static const unichar_t str_2410[] = { 0x0044, 0x004c, 0x0045, 0 };
+static const unichar_t str_2411[] = { 0x0044, 0x0043, 0x0031, 0 };
+static const unichar_t str_2412[] = { 0x0044, 0x0043, 0x0032, 0 };
+static const unichar_t str_2413[] = { 0x0044, 0x0043, 0x0033, 0 };
+static const unichar_t str_2414[] = { 0x0044, 0x0043, 0x0034, 0 };
+static const unichar_t str_2415[] = { 0x004e, 0x0041, 0x004b, 0 };
+static const unichar_t str_2416[] = { 0x0053, 0x0059, 0x004e, 0 };
+static const unichar_t str_2417[] = { 0x0045, 0x0054, 0x0042, 0 };
+static const unichar_t str_2418[] = { 0x0043, 0x0041, 0x004e, 0 };
+static const unichar_t str_2419[] = { 0x0045, 0x004d, 0 };
+static const unichar_t str_241a[] = { 0x0053, 0x0055, 0x0042, 0 };
+static const unichar_t str_241b[] = { 0x0045, 0x0053, 0x0043, 0 };
+static const unichar_t str_241c[] = { 0x0046, 0x0053, 0 };
+static const unichar_t str_241d[] = { 0x0047, 0x0053, 0 };
+static const unichar_t str_241e[] = { 0x0052, 0x0053, 0 };
+static const unichar_t str_241f[] = { 0x0055, 0x0053, 0 };
+static const unichar_t str_2420[] = { 0x0053, 0x0050, 0 };
+static const unichar_t str_2421[] = { 0x0044, 0x0045, 0x004c, 0 };
+static const unichar_t str_2422[] = { 0x0180, 0 };
+static const unichar_t str_2460[] = { 0x0031, 0x20dd, 0 };
+static const unichar_t str_2461[] = { 0x0032, 0x20dd, 0 };
+static const unichar_t str_2462[] = { 0x0033, 0x20dd, 0 };
+static const unichar_t str_2463[] = { 0x0034, 0x20dd, 0 };
+static const unichar_t str_2464[] = { 0x0035, 0x20dd, 0 };
+static const unichar_t str_2465[] = { 0x0036, 0x20dd, 0 };
+static const unichar_t str_2466[] = { 0x0037, 0x20dd, 0 };
+static const unichar_t str_2467[] = { 0x0038, 0x20dd, 0 };
+static const unichar_t str_2468[] = { 0x0039, 0x20dd, 0 };
+static const unichar_t str_2469[] = { 0x0031, 0x0030, 0x20dd, 0 };
+static const unichar_t str_246a[] = { 0x0031, 0x0031, 0x20dd, 0 };
+static const unichar_t str_246b[] = { 0x0031, 0x0032, 0x20dd, 0 };
+static const unichar_t str_246c[] = { 0x0031, 0x0033, 0x20dd, 0 };
+static const unichar_t str_246d[] = { 0x0031, 0x0034, 0x20dd, 0 };
+static const unichar_t str_246e[] = { 0x0031, 0x0035, 0x20dd, 0 };
+static const unichar_t str_246f[] = { 0x0031, 0x0036, 0x20dd, 0 };
+static const unichar_t str_2470[] = { 0x0031, 0x0037, 0x20dd, 0 };
+static const unichar_t str_2471[] = { 0x0031, 0x0038, 0x20dd, 0 };
+static const unichar_t str_2472[] = { 0x0031, 0x0039, 0x20dd, 0 };
+static const unichar_t str_2473[] = { 0x0032, 0x0030, 0x20dd, 0 };
+static const unichar_t str_2474[] = { 0x0028, 0x0031, 0x0029, 0 };
+static const unichar_t str_2475[] = { 0x0028, 0x0032, 0x0029, 0 };
+static const unichar_t str_2476[] = { 0x0028, 0x0033, 0x0029, 0 };
+static const unichar_t str_2477[] = { 0x0028, 0x0034, 0x0029, 0 };
+static const unichar_t str_2478[] = { 0x0028, 0x0035, 0x0029, 0 };
+static const unichar_t str_2479[] = { 0x0028, 0x0036, 0x0029, 0 };
+static const unichar_t str_247a[] = { 0x0028, 0x0037, 0x0029, 0 };
+static const unichar_t str_247b[] = { 0x0028, 0x0038, 0x0029, 0 };
+static const unichar_t str_247c[] = { 0x0028, 0x0039, 0x0029, 0 };
+static const unichar_t str_247d[] = { 0x0028, 0x0031, 0x0030, 0x0029, 0 };
+static const unichar_t str_247e[] = { 0x0028, 0x0031, 0x0031, 0x0029, 0 };
+static const unichar_t str_247f[] = { 0x0028, 0x0031, 0x0032, 0x0029, 0 };
+static const unichar_t str_2480[] = { 0x0028, 0x0031, 0x0033, 0x0029, 0 };
+static const unichar_t str_2481[] = { 0x0028, 0x0031, 0x0034, 0x0029, 0 };
+static const unichar_t str_2482[] = { 0x0028, 0x0031, 0x0035, 0x0029, 0 };
+static const unichar_t str_2483[] = { 0x0028, 0x0031, 0x0036, 0x0029, 0 };
+static const unichar_t str_2484[] = { 0x0028, 0x0031, 0x0037, 0x0029, 0 };
+static const unichar_t str_2485[] = { 0x0028, 0x0031, 0x0038, 0x0029, 0 };
+static const unichar_t str_2486[] = { 0x0028, 0x0031, 0x0039, 0x0029, 0 };
+static const unichar_t str_2487[] = { 0x0028, 0x0032, 0x0030, 0x0029, 0 };
+static const unichar_t str_2488[] = { 0x0031, 0x002e, 0 };
+static const unichar_t str_2489[] = { 0x0032, 0x002e, 0 };
+static const unichar_t str_248a[] = { 0x0033, 0x002e, 0 };
+static const unichar_t str_248b[] = { 0x0034, 0x002e, 0 };
+static const unichar_t str_248c[] = { 0x0035, 0x002e, 0 };
+static const unichar_t str_248d[] = { 0x0036, 0x002e, 0 };
+static const unichar_t str_248e[] = { 0x0037, 0x002e, 0 };
+static const unichar_t str_248f[] = { 0x0038, 0x002e, 0 };
+static const unichar_t str_2490[] = { 0x0039, 0x002e, 0 };
+static const unichar_t str_2491[] = { 0x0031, 0x0030, 0x002e, 0 };
+static const unichar_t str_2492[] = { 0x0031, 0x0031, 0x002e, 0 };
+static const unichar_t str_2493[] = { 0x0031, 0x0032, 0x002e, 0 };
+static const unichar_t str_2494[] = { 0x0031, 0x0033, 0x002e, 0 };
+static const unichar_t str_2495[] = { 0x0031, 0x0034, 0x002e, 0 };
+static const unichar_t str_2496[] = { 0x0031, 0x0035, 0x002e, 0 };
+static const unichar_t str_2497[] = { 0x0031, 0x0036, 0x002e, 0 };
+static const unichar_t str_2498[] = { 0x0031, 0x0037, 0x002e, 0 };
+static const unichar_t str_2499[] = { 0x0031, 0x0038, 0x002e, 0 };
+static const unichar_t str_249a[] = { 0x0031, 0x0039, 0x002e, 0 };
+static const unichar_t str_249b[] = { 0x0032, 0x0030, 0x002e, 0 };
+static const unichar_t str_249c[] = { 0x0028, 0x0061, 0x0029, 0 };
+static const unichar_t str_249d[] = { 0x0028, 0x0062, 0x0029, 0 };
+static const unichar_t str_249e[] = { 0x0028, 0x0063, 0x0029, 0 };
+static const unichar_t str_249f[] = { 0x0028, 0x0064, 0x0029, 0 };
+static const unichar_t str_24a0[] = { 0x0028, 0x0065, 0x0029, 0 };
+static const unichar_t str_24a1[] = { 0x0028, 0x0066, 0x0029, 0 };
+static const unichar_t str_24a2[] = { 0x0028, 0x0067, 0x0029, 0 };
+static const unichar_t str_24a3[] = { 0x0028, 0x0068, 0x0029, 0 };
+static const unichar_t str_24a4[] = { 0x0028, 0x0069, 0x0029, 0 };
+static const unichar_t str_24a5[] = { 0x0028, 0x006a, 0x0029, 0 };
+static const unichar_t str_24a6[] = { 0x0028, 0x006b, 0x0029, 0 };
+static const unichar_t str_24a7[] = { 0x0028, 0x006c, 0x0029, 0 };
+static const unichar_t str_24a8[] = { 0x0028, 0x006d, 0x0029, 0 };
+static const unichar_t str_24a9[] = { 0x0028, 0x006e, 0x0029, 0 };
+static const unichar_t str_24aa[] = { 0x0028, 0x006f, 0x0029, 0 };
+static const unichar_t str_24ab[] = { 0x0028, 0x0070, 0x0029, 0 };
+static const unichar_t str_24ac[] = { 0x0028, 0x0071, 0x0029, 0 };
+static const unichar_t str_24ad[] = { 0x0028, 0x0072, 0x0029, 0 };
+static const unichar_t str_24ae[] = { 0x0028, 0x0073, 0x0029, 0 };
+static const unichar_t str_24af[] = { 0x0028, 0x0074, 0x0029, 0 };
+static const unichar_t str_24b0[] = { 0x0028, 0x0075, 0x0029, 0 };
+static const unichar_t str_24b1[] = { 0x0028, 0x0076, 0x0029, 0 };
+static const unichar_t str_24b2[] = { 0x0028, 0x0077, 0x0029, 0 };
+static const unichar_t str_24b3[] = { 0x0028, 0x0078, 0x0029, 0 };
+static const unichar_t str_24b4[] = { 0x0028, 0x0079, 0x0029, 0 };
+static const unichar_t str_24b5[] = { 0x0028, 0x007a, 0x0029, 0 };
+static const unichar_t str_24b6[] = { 0x0041, 0x20dd, 0 };
+static const unichar_t str_24b7[] = { 0x0042, 0x20dd, 0 };
+static const unichar_t str_24b8[] = { 0x0043, 0x20dd, 0 };
+static const unichar_t str_24b9[] = { 0x0044, 0x20dd, 0 };
+static const unichar_t str_24ba[] = { 0x0045, 0x20dd, 0 };
+static const unichar_t str_24bb[] = { 0x0046, 0x20dd, 0 };
+static const unichar_t str_24bc[] = { 0x0047, 0x20dd, 0 };
+static const unichar_t str_24bd[] = { 0x0048, 0x20dd, 0 };
+static const unichar_t str_24be[] = { 0x0049, 0x20dd, 0 };
+static const unichar_t str_24bf[] = { 0x004a, 0x20dd, 0 };
+static const unichar_t str_24c0[] = { 0x004b, 0x20dd, 0 };
+static const unichar_t str_24c1[] = { 0x004c, 0x20dd, 0 };
+static const unichar_t str_24c2[] = { 0x004d, 0x20dd, 0 };
+static const unichar_t str_24c3[] = { 0x004e, 0x20dd, 0 };
+static const unichar_t str_24c4[] = { 0x004f, 0x20dd, 0 };
+static const unichar_t str_24c5[] = { 0x0050, 0x20dd, 0 };
+static const unichar_t str_24c6[] = { 0x0051, 0x20dd, 0 };
+static const unichar_t str_24c7[] = { 0x0052, 0x20dd, 0 };
+static const unichar_t str_24c8[] = { 0x0053, 0x20dd, 0 };
+static const unichar_t str_24c9[] = { 0x0054, 0x20dd, 0 };
+static const unichar_t str_24ca[] = { 0x0055, 0x20dd, 0 };
+static const unichar_t str_24cb[] = { 0x0056, 0x20dd, 0 };
+static const unichar_t str_24cc[] = { 0x0057, 0x20dd, 0 };
+static const unichar_t str_24cd[] = { 0x0058, 0x20dd, 0 };
+static const unichar_t str_24ce[] = { 0x0059, 0x20dd, 0 };
+static const unichar_t str_24cf[] = { 0x005a, 0x20dd, 0 };
+static const unichar_t str_24d0[] = { 0x0061, 0x20dd, 0 };
+static const unichar_t str_24d1[] = { 0x0062, 0x20dd, 0 };
+static const unichar_t str_24d2[] = { 0x0063, 0x20dd, 0 };
+static const unichar_t str_24d3[] = { 0x0064, 0x20dd, 0 };
+static const unichar_t str_24d4[] = { 0x0065, 0x20dd, 0 };
+static const unichar_t str_24d5[] = { 0x0066, 0x20dd, 0 };
+static const unichar_t str_24d6[] = { 0x0067, 0x20dd, 0 };
+static const unichar_t str_24d7[] = { 0x0068, 0x20dd, 0 };
+static const unichar_t str_24d8[] = { 0x0069, 0x20dd, 0 };
+static const unichar_t str_24d9[] = { 0x006a, 0x20dd, 0 };
+static const unichar_t str_24da[] = { 0x006b, 0x20dd, 0 };
+static const unichar_t str_24db[] = { 0x006c, 0x20dd, 0 };
+static const unichar_t str_24dc[] = { 0x006d, 0x20dd, 0 };
+static const unichar_t str_24dd[] = { 0x006e, 0x20dd, 0 };
+static const unichar_t str_24de[] = { 0x006f, 0x20dd, 0 };
+static const unichar_t str_24df[] = { 0x0070, 0x20dd, 0 };
+static const unichar_t str_24e0[] = { 0x0071, 0x20dd, 0 };
+static const unichar_t str_24e1[] = { 0x0072, 0x20dd, 0 };
+static const unichar_t str_24e2[] = { 0x0073, 0x20dd, 0 };
+static const unichar_t str_24e3[] = { 0x0074, 0x20dd, 0 };
+static const unichar_t str_24e4[] = { 0x0075, 0x20dd, 0 };
+static const unichar_t str_24e5[] = { 0x0076, 0x20dd, 0 };
+static const unichar_t str_24e6[] = { 0x0077, 0x20dd, 0 };
+static const unichar_t str_24e7[] = { 0x0078, 0x20dd, 0 };
+static const unichar_t str_24e8[] = { 0x0079, 0x20dd, 0 };
+static const unichar_t str_24e9[] = { 0x007a, 0x20dd, 0 };
+static const unichar_t str_24ea[] = { 0x0030, 0x20dd, 0 };
+static const unichar_t str_2500[] = { 0x2014, 0 };
+static const unichar_t str_2502[] = { 0x007c, 0 };
+static const unichar_t str_25b3[] = { 0x2206, 0 };
+static const unichar_t str_25b8[] = { 0x2023, 0 };
+static const unichar_t str_25bd[] = { 0x2207, 0 };
+static const unichar_t str_25c7[] = { 0x25ca, 0 };
+static const unichar_t str_25e6[] = { 0x00b0, 0 };
+static const unichar_t str_2662[] = { 0x25ca, 0 };
+static const unichar_t str_2731[] = { 0x002a, 0 };
+static const unichar_t str_2758[] = { 0x007c, 0 };
+static const unichar_t str_2762[] = { 0x0021, 0 };
+static const unichar_t str_2a0c[] = { 0x222b, 0x222b, 0x222b, 0x222b, 0 };
+static const unichar_t str_2a74[] = { 0x003a, 0x003a, 0x003d, 0 };
+static const unichar_t str_2a75[] = { 0x003d, 0x003d, 0 };
+static const unichar_t str_2a76[] = { 0x003d, 0x003d, 0x003d, 0 };
+static const unichar_t str_2adc[] = { 0x2add, 0x0338, 0 };
+static const unichar_t str_2c7c[] = { 0x006a, 0 };
+static const unichar_t str_2c7d[] = { 0x0056, 0 };
+static const unichar_t str_2d6f[] = { 0x2d61, 0 };
+static const unichar_t str_2e28[] = { 0xff5f, 0 };
+static const unichar_t str_2e29[] = { 0xff60, 0 };
+static const unichar_t str_2e9f[] = { 0x6bcd, 0 };
+static const unichar_t str_2ef3[] = { 0x9f9f, 0 };
+static const unichar_t str_2f00[] = { 0x4e00, 0 };
+static const unichar_t str_2f01[] = { 0x4e28, 0 };
+static const unichar_t str_2f02[] = { 0x4e36, 0 };
+static const unichar_t str_2f03[] = { 0x4e3f, 0 };
+static const unichar_t str_2f04[] = { 0x4e59, 0 };
+static const unichar_t str_2f05[] = { 0x4e85, 0 };
+static const unichar_t str_2f06[] = { 0x4e8c, 0 };
+static const unichar_t str_2f07[] = { 0x4ea0, 0 };
+static const unichar_t str_2f08[] = { 0x4eba, 0 };
+static const unichar_t str_2f09[] = { 0x513f, 0 };
+static const unichar_t str_2f0a[] = { 0x5165, 0 };
+static const unichar_t str_2f0b[] = { 0x516b, 0 };
+static const unichar_t str_2f0c[] = { 0x5182, 0 };
+static const unichar_t str_2f0d[] = { 0x5196, 0 };
+static const unichar_t str_2f0e[] = { 0x51ab, 0 };
+static const unichar_t str_2f0f[] = { 0x51e0, 0 };
+static const unichar_t str_2f10[] = { 0x51f5, 0 };
+static const unichar_t str_2f11[] = { 0x5200, 0 };
+static const unichar_t str_2f12[] = { 0x529b, 0 };
+static const unichar_t str_2f13[] = { 0x52f9, 0 };
+static const unichar_t str_2f14[] = { 0x5315, 0 };
+static const unichar_t str_2f15[] = { 0x531a, 0 };
+static const unichar_t str_2f16[] = { 0x5338, 0 };
+static const unichar_t str_2f17[] = { 0x5341, 0 };
+static const unichar_t str_2f18[] = { 0x535c, 0 };
+static const unichar_t str_2f19[] = { 0x5369, 0 };
+static const unichar_t str_2f1a[] = { 0x5382, 0 };
+static const unichar_t str_2f1b[] = { 0x53b6, 0 };
+static const unichar_t str_2f1c[] = { 0x53c8, 0 };
+static const unichar_t str_2f1d[] = { 0x53e3, 0 };
+static const unichar_t str_2f1e[] = { 0x56d7, 0 };
+static const unichar_t str_2f1f[] = { 0x571f, 0 };
+static const unichar_t str_2f20[] = { 0x58eb, 0 };
+static const unichar_t str_2f21[] = { 0x5902, 0 };
+static const unichar_t str_2f22[] = { 0x590a, 0 };
+static const unichar_t str_2f23[] = { 0x5915, 0 };
+static const unichar_t str_2f24[] = { 0x5927, 0 };
+static const unichar_t str_2f25[] = { 0x5973, 0 };
+static const unichar_t str_2f26[] = { 0x5b50, 0 };
+static const unichar_t str_2f27[] = { 0x5b80, 0 };
+static const unichar_t str_2f28[] = { 0x5bf8, 0 };
+static const unichar_t str_2f29[] = { 0x5c0f, 0 };
+static const unichar_t str_2f2a[] = { 0x5c22, 0 };
+static const unichar_t str_2f2b[] = { 0x5c38, 0 };
+static const unichar_t str_2f2c[] = { 0x5c6e, 0 };
+static const unichar_t str_2f2d[] = { 0x5c71, 0 };
+static const unichar_t str_2f2e[] = { 0x5ddb, 0 };
+static const unichar_t str_2f2f[] = { 0x5de5, 0 };
+static const unichar_t str_2f30[] = { 0x5df1, 0 };
+static const unichar_t str_2f31[] = { 0x5dfe, 0 };
+static const unichar_t str_2f32[] = { 0x5e72, 0 };
+static const unichar_t str_2f33[] = { 0x5e7a, 0 };
+static const unichar_t str_2f34[] = { 0x5e7f, 0 };
+static const unichar_t str_2f35[] = { 0x5ef4, 0 };
+static const unichar_t str_2f36[] = { 0x5efe, 0 };
+static const unichar_t str_2f37[] = { 0x5f0b, 0 };
+static const unichar_t str_2f38[] = { 0x5f13, 0 };
+static const unichar_t str_2f39[] = { 0x5f50, 0 };
+static const unichar_t str_2f3a[] = { 0x5f61, 0 };
+static const unichar_t str_2f3b[] = { 0x5f73, 0 };
+static const unichar_t str_2f3c[] = { 0x5fc3, 0 };
+static const unichar_t str_2f3d[] = { 0x6208, 0 };
+static const unichar_t str_2f3e[] = { 0x6236, 0 };
+static const unichar_t str_2f3f[] = { 0x624b, 0 };
+static const unichar_t str_2f40[] = { 0x652f, 0 };
+static const unichar_t str_2f41[] = { 0x6534, 0 };
+static const unichar_t str_2f42[] = { 0x6587, 0 };
+static const unichar_t str_2f43[] = { 0x6597, 0 };
+static const unichar_t str_2f44[] = { 0x65a4, 0 };
+static const unichar_t str_2f45[] = { 0x65b9, 0 };
+static const unichar_t str_2f46[] = { 0x65e0, 0 };
+static const unichar_t str_2f47[] = { 0x65e5, 0 };
+static const unichar_t str_2f48[] = { 0x66f0, 0 };
+static const unichar_t str_2f49[] = { 0x6708, 0 };
+static const unichar_t str_2f4a[] = { 0x6728, 0 };
+static const unichar_t str_2f4b[] = { 0x6b20, 0 };
+static const unichar_t str_2f4c[] = { 0x6b62, 0 };
+static const unichar_t str_2f4d[] = { 0x6b79, 0 };
+static const unichar_t str_2f4e[] = { 0x6bb3, 0 };
+static const unichar_t str_2f4f[] = { 0x6bcb, 0 };
+static const unichar_t str_2f50[] = { 0x6bd4, 0 };
+static const unichar_t str_2f51[] = { 0x6bdb, 0 };
+static const unichar_t str_2f52[] = { 0x6c0f, 0 };
+static const unichar_t str_2f53[] = { 0x6c14, 0 };
+static const unichar_t str_2f54[] = { 0x6c34, 0 };
+static const unichar_t str_2f55[] = { 0x706b, 0 };
+static const unichar_t str_2f56[] = { 0x722a, 0 };
+static const unichar_t str_2f57[] = { 0x7236, 0 };
+static const unichar_t str_2f58[] = { 0x723b, 0 };
+static const unichar_t str_2f59[] = { 0x723f, 0 };
+static const unichar_t str_2f5a[] = { 0x7247, 0 };
+static const unichar_t str_2f5b[] = { 0x7259, 0 };
+static const unichar_t str_2f5c[] = { 0x725b, 0 };
+static const unichar_t str_2f5d[] = { 0x72ac, 0 };
+static const unichar_t str_2f5e[] = { 0x7384, 0 };
+static const unichar_t str_2f5f[] = { 0x7389, 0 };
+static const unichar_t str_2f60[] = { 0x74dc, 0 };
+static const unichar_t str_2f61[] = { 0x74e6, 0 };
+static const unichar_t str_2f62[] = { 0x7518, 0 };
+static const unichar_t str_2f63[] = { 0x751f, 0 };
+static const unichar_t str_2f64[] = { 0x7528, 0 };
+static const unichar_t str_2f65[] = { 0x7530, 0 };
+static const unichar_t str_2f66[] = { 0x758b, 0 };
+static const unichar_t str_2f67[] = { 0x7592, 0 };
+static const unichar_t str_2f68[] = { 0x7676, 0 };
+static const unichar_t str_2f69[] = { 0x767d, 0 };
+static const unichar_t str_2f6a[] = { 0x76ae, 0 };
+static const unichar_t str_2f6b[] = { 0x76bf, 0 };
+static const unichar_t str_2f6c[] = { 0x76ee, 0 };
+static const unichar_t str_2f6d[] = { 0x77db, 0 };
+static const unichar_t str_2f6e[] = { 0x77e2, 0 };
+static const unichar_t str_2f6f[] = { 0x77f3, 0 };
+static const unichar_t str_2f70[] = { 0x793a, 0 };
+static const unichar_t str_2f71[] = { 0x79b8, 0 };
+static const unichar_t str_2f72[] = { 0x79be, 0 };
+static const unichar_t str_2f73[] = { 0x7a74, 0 };
+static const unichar_t str_2f74[] = { 0x7acb, 0 };
+static const unichar_t str_2f75[] = { 0x7af9, 0 };
+static const unichar_t str_2f76[] = { 0x7c73, 0 };
+static const unichar_t str_2f77[] = { 0x7cf8, 0 };
+static const unichar_t str_2f78[] = { 0x7f36, 0 };
+static const unichar_t str_2f79[] = { 0x7f51, 0 };
+static const unichar_t str_2f7a[] = { 0x7f8a, 0 };
+static const unichar_t str_2f7b[] = { 0x7fbd, 0 };
+static const unichar_t str_2f7c[] = { 0x8001, 0 };
+static const unichar_t str_2f7d[] = { 0x800c, 0 };
+static const unichar_t str_2f7e[] = { 0x8012, 0 };
+static const unichar_t str_2f7f[] = { 0x8033, 0 };
+static const unichar_t str_2f80[] = { 0x807f, 0 };
+static const unichar_t str_2f81[] = { 0x8089, 0 };
+static const unichar_t str_2f82[] = { 0x81e3, 0 };
+static const unichar_t str_2f83[] = { 0x81ea, 0 };
+static const unichar_t str_2f84[] = { 0x81f3, 0 };
+static const unichar_t str_2f85[] = { 0x81fc, 0 };
+static const unichar_t str_2f86[] = { 0x820c, 0 };
+static const unichar_t str_2f87[] = { 0x821b, 0 };
+static const unichar_t str_2f88[] = { 0x821f, 0 };
+static const unichar_t str_2f89[] = { 0x826e, 0 };
+static const unichar_t str_2f8a[] = { 0x8272, 0 };
+static const unichar_t str_2f8b[] = { 0x8278, 0 };
+static const unichar_t str_2f8c[] = { 0x864d, 0 };
+static const unichar_t str_2f8d[] = { 0x866b, 0 };
+static const unichar_t str_2f8e[] = { 0x8840, 0 };
+static const unichar_t str_2f8f[] = { 0x884c, 0 };
+static const unichar_t str_2f90[] = { 0x8863, 0 };
+static const unichar_t str_2f91[] = { 0x897e, 0 };
+static const unichar_t str_2f92[] = { 0x898b, 0 };
+static const unichar_t str_2f93[] = { 0x89d2, 0 };
+static const unichar_t str_2f94[] = { 0x8a00, 0 };
+static const unichar_t str_2f95[] = { 0x8c37, 0 };
+static const unichar_t str_2f96[] = { 0x8c46, 0 };
+static const unichar_t str_2f97[] = { 0x8c55, 0 };
+static const unichar_t str_2f98[] = { 0x8c78, 0 };
+static const unichar_t str_2f99[] = { 0x8c9d, 0 };
+static const unichar_t str_2f9a[] = { 0x8d64, 0 };
+static const unichar_t str_2f9b[] = { 0x8d70, 0 };
+static const unichar_t str_2f9c[] = { 0x8db3, 0 };
+static const unichar_t str_2f9d[] = { 0x8eab, 0 };
+static const unichar_t str_2f9e[] = { 0x8eca, 0 };
+static const unichar_t str_2f9f[] = { 0x8f9b, 0 };
+static const unichar_t str_2fa0[] = { 0x8fb0, 0 };
+static const unichar_t str_2fa1[] = { 0x8fb5, 0 };
+static const unichar_t str_2fa2[] = { 0x9091, 0 };
+static const unichar_t str_2fa3[] = { 0x9149, 0 };
+static const unichar_t str_2fa4[] = { 0x91c6, 0 };
+static const unichar_t str_2fa5[] = { 0x91cc, 0 };
+static const unichar_t str_2fa6[] = { 0x91d1, 0 };
+static const unichar_t str_2fa7[] = { 0x9577, 0 };
+static const unichar_t str_2fa8[] = { 0x9580, 0 };
+static const unichar_t str_2fa9[] = { 0x961c, 0 };
+static const unichar_t str_2faa[] = { 0x96b6, 0 };
+static const unichar_t str_2fab[] = { 0x96b9, 0 };
+static const unichar_t str_2fac[] = { 0x96e8, 0 };
+static const unichar_t str_2fad[] = { 0x9751, 0 };
+static const unichar_t str_2fae[] = { 0x975e, 0 };
+static const unichar_t str_2faf[] = { 0x9762, 0 };
+static const unichar_t str_2fb0[] = { 0x9769, 0 };
+static const unichar_t str_2fb1[] = { 0x97cb, 0 };
+static const unichar_t str_2fb2[] = { 0x97ed, 0 };
+static const unichar_t str_2fb3[] = { 0x97f3, 0 };
+static const unichar_t str_2fb4[] = { 0x9801, 0 };
+static const unichar_t str_2fb5[] = { 0x98a8, 0 };
+static const unichar_t str_2fb6[] = { 0x98db, 0 };
+static const unichar_t str_2fb7[] = { 0x98df, 0 };
+static const unichar_t str_2fb8[] = { 0x9996, 0 };
+static const unichar_t str_2fb9[] = { 0x9999, 0 };
+static const unichar_t str_2fba[] = { 0x99ac, 0 };
+static const unichar_t str_2fbb[] = { 0x9aa8, 0 };
+static const unichar_t str_2fbc[] = { 0x9ad8, 0 };
+static const unichar_t str_2fbd[] = { 0x9adf, 0 };
+static const unichar_t str_2fbe[] = { 0x9b25, 0 };
+static const unichar_t str_2fbf[] = { 0x9b2f, 0 };
+static const unichar_t str_2fc0[] = { 0x9b32, 0 };
+static const unichar_t str_2fc1[] = { 0x9b3c, 0 };
+static const unichar_t str_2fc2[] = { 0x9b5a, 0 };
+static const unichar_t str_2fc3[] = { 0x9ce5, 0 };
+static const unichar_t str_2fc4[] = { 0x9e75, 0 };
+static const unichar_t str_2fc5[] = { 0x9e7f, 0 };
+static const unichar_t str_2fc6[] = { 0x9ea5, 0 };
+static const unichar_t str_2fc7[] = { 0x9ebb, 0 };
+static const unichar_t str_2fc8[] = { 0x9ec3, 0 };
+static const unichar_t str_2fc9[] = { 0x9ecd, 0 };
+static const unichar_t str_2fca[] = { 0x9ed1, 0 };
+static const unichar_t str_2fcb[] = { 0x9ef9, 0 };
+static const unichar_t str_2fcc[] = { 0x9efd, 0 };
+static const unichar_t str_2fcd[] = { 0x9f0e, 0 };
+static const unichar_t str_2fce[] = { 0x9f13, 0 };
+static const unichar_t str_2fcf[] = { 0x9f20, 0 };
+static const unichar_t str_2fd0[] = { 0x9f3b, 0 };
+static const unichar_t str_2fd1[] = { 0x9f4a, 0 };
+static const unichar_t str_2fd2[] = { 0x9f52, 0 };
+static const unichar_t str_2fd3[] = { 0x9f8d, 0 };
+static const unichar_t str_2fd4[] = { 0x9f9c, 0 };
+static const unichar_t str_2fd5[] = { 0x9fa0, 0 };
+static const unichar_t str_3000[] = { 0x0020, 0 };
+static const unichar_t str_3001[] = { 0x002c, 0 };
+static const unichar_t str_3008[] = { 0x003c, 0 };
+static const unichar_t str_3009[] = { 0x003e, 0 };
+static const unichar_t str_300a[] = { 0x00ab, 0 };
+static const unichar_t str_300b[] = { 0x00bb, 0 };
+static const unichar_t str_3036[] = { 0x3012, 0 };
+static const unichar_t str_3038[] = { 0x5341, 0 };
+static const unichar_t str_3039[] = { 0x5344, 0 };
+static const unichar_t str_303a[] = { 0x5345, 0 };
+static const unichar_t str_304c[] = { 0x304b, 0x3099, 0 };
+static const unichar_t str_304e[] = { 0x304d, 0x3099, 0 };
+static const unichar_t str_3050[] = { 0x304f, 0x3099, 0 };
+static const unichar_t str_3052[] = { 0x3051, 0x3099, 0 };
+static const unichar_t str_3054[] = { 0x3053, 0x3099, 0 };
+static const unichar_t str_3056[] = { 0x3055, 0x3099, 0 };
+static const unichar_t str_3058[] = { 0x3057, 0x3099, 0 };
+static const unichar_t str_305a[] = { 0x3059, 0x3099, 0 };
+static const unichar_t str_305c[] = { 0x305b, 0x3099, 0 };
+static const unichar_t str_305e[] = { 0x305d, 0x3099, 0 };
+static const unichar_t str_3060[] = { 0x305f, 0x3099, 0 };
+static const unichar_t str_3062[] = { 0x3061, 0x3099, 0 };
+static const unichar_t str_3065[] = { 0x3064, 0x3099, 0 };
+static const unichar_t str_3067[] = { 0x3066, 0x3099, 0 };
+static const unichar_t str_3069[] = { 0x3068, 0x3099, 0 };
+static const unichar_t str_3070[] = { 0x306f, 0x3099, 0 };
+static const unichar_t str_3071[] = { 0x306f, 0x309a, 0 };
+static const unichar_t str_3073[] = { 0x3072, 0x3099, 0 };
+static const unichar_t str_3074[] = { 0x3072, 0x309a, 0 };
+static const unichar_t str_3076[] = { 0x3075, 0x3099, 0 };
+static const unichar_t str_3077[] = { 0x3075, 0x309a, 0 };
+static const unichar_t str_3079[] = { 0x3078, 0x3099, 0 };
+static const unichar_t str_307a[] = { 0x3078, 0x309a, 0 };
+static const unichar_t str_307c[] = { 0x307b, 0x3099, 0 };
+static const unichar_t str_307d[] = { 0x307b, 0x309a, 0 };
+static const unichar_t str_3094[] = { 0x3046, 0x3099, 0 };
+static const unichar_t str_309b[] = { 0x0020, 0x3099, 0 };
+static const unichar_t str_309c[] = { 0x0020, 0x309a, 0 };
+static const unichar_t str_309e[] = { 0x309d, 0x3099, 0 };
+static const unichar_t str_309f[] = { 0x3088, 0x308a, 0 };
+static const unichar_t str_30ac[] = { 0x30ab, 0x3099, 0 };
+static const unichar_t str_30ae[] = { 0x30ad, 0x3099, 0 };
+static const unichar_t str_30b0[] = { 0x30af, 0x3099, 0 };
+static const unichar_t str_30b2[] = { 0x30b1, 0x3099, 0 };
+static const unichar_t str_30b4[] = { 0x30b3, 0x3099, 0 };
+static const unichar_t str_30b6[] = { 0x30b5, 0x3099, 0 };
+static const unichar_t str_30b8[] = { 0x30b7, 0x3099, 0 };
+static const unichar_t str_30ba[] = { 0x30b9, 0x3099, 0 };
+static const unichar_t str_30bc[] = { 0x30bb, 0x3099, 0 };
+static const unichar_t str_30be[] = { 0x30bd, 0x3099, 0 };
+static const unichar_t str_30c0[] = { 0x30bf, 0x3099, 0 };
+static const unichar_t str_30c2[] = { 0x30c1, 0x3099, 0 };
+static const unichar_t str_30c5[] = { 0x30c4, 0x3099, 0 };
+static const unichar_t str_30c7[] = { 0x30c6, 0x3099, 0 };
+static const unichar_t str_30c9[] = { 0x30c8, 0x3099, 0 };
+static const unichar_t str_30d0[] = { 0x30cf, 0x3099, 0 };
+static const unichar_t str_30d1[] = { 0x30cf, 0x309a, 0 };
+static const unichar_t str_30d3[] = { 0x30d2, 0x3099, 0 };
+static const unichar_t str_30d4[] = { 0x30d2, 0x309a, 0 };
+static const unichar_t str_30d6[] = { 0x30d5, 0x3099, 0 };
+static const unichar_t str_30d7[] = { 0x30d5, 0x309a, 0 };
+static const unichar_t str_30d9[] = { 0x30d8, 0x3099, 0 };
+static const unichar_t str_30da[] = { 0x30d8, 0x309a, 0 };
+static const unichar_t str_30dc[] = { 0x30db, 0x3099, 0 };
+static const unichar_t str_30dd[] = { 0x30db, 0x309a, 0 };
+static const unichar_t str_30f4[] = { 0x30a6, 0x3099, 0 };
+static const unichar_t str_30f7[] = { 0x30ef, 0x3099, 0 };
+static const unichar_t str_30f8[] = { 0x30f0, 0x3099, 0 };
+static const unichar_t str_30f9[] = { 0x30f1, 0x3099, 0 };
+static const unichar_t str_30fa[] = { 0x30f2, 0x3099, 0 };
+static const unichar_t str_30fe[] = { 0x30fd, 0x3099, 0 };
+static const unichar_t str_30ff[] = { 0x30b3, 0x30c8, 0 };
+static const unichar_t str_3131[] = { 0x1100, 0 };
+static const unichar_t str_3132[] = { 0x1101, 0 };
+static const unichar_t str_3133[] = { 0x11aa, 0 };
+static const unichar_t str_3134[] = { 0x1102, 0 };
+static const unichar_t str_3135[] = { 0x11ac, 0 };
+static const unichar_t str_3136[] = { 0x11ad, 0 };
+static const unichar_t str_3137[] = { 0x1103, 0 };
+static const unichar_t str_3138[] = { 0x1104, 0 };
+static const unichar_t str_3139[] = { 0x1105, 0 };
+static const unichar_t str_313a[] = { 0x11b0, 0 };
+static const unichar_t str_313b[] = { 0x11b1, 0 };
+static const unichar_t str_313c[] = { 0x11b2, 0 };
+static const unichar_t str_313d[] = { 0x11b3, 0 };
+static const unichar_t str_313e[] = { 0x11b4, 0 };
+static const unichar_t str_313f[] = { 0x11b5, 0 };
+static const unichar_t str_3140[] = { 0x111a, 0 };
+static const unichar_t str_3141[] = { 0x1106, 0 };
+static const unichar_t str_3142[] = { 0x1107, 0 };
+static const unichar_t str_3143[] = { 0x1108, 0 };
+static const unichar_t str_3144[] = { 0x1121, 0 };
+static const unichar_t str_3145[] = { 0x1109, 0 };
+static const unichar_t str_3146[] = { 0x110a, 0 };
+static const unichar_t str_3147[] = { 0x110b, 0 };
+static const unichar_t str_3148[] = { 0x110c, 0 };
+static const unichar_t str_3149[] = { 0x110d, 0 };
+static const unichar_t str_314a[] = { 0x110e, 0 };
+static const unichar_t str_314b[] = { 0x110f, 0 };
+static const unichar_t str_314c[] = { 0x1110, 0 };
+static const unichar_t str_314d[] = { 0x1111, 0 };
+static const unichar_t str_314e[] = { 0x1112, 0 };
+static const unichar_t str_314f[] = { 0x1161, 0 };
+static const unichar_t str_3150[] = { 0x1162, 0 };
+static const unichar_t str_3151[] = { 0x1163, 0 };
+static const unichar_t str_3152[] = { 0x1164, 0 };
+static const unichar_t str_3153[] = { 0x1165, 0 };
+static const unichar_t str_3154[] = { 0x1166, 0 };
+static const unichar_t str_3155[] = { 0x1167, 0 };
+static const unichar_t str_3156[] = { 0x1168, 0 };
+static const unichar_t str_3157[] = { 0x1169, 0 };
+static const unichar_t str_3158[] = { 0x116a, 0 };
+static const unichar_t str_3159[] = { 0x116b, 0 };
+static const unichar_t str_315a[] = { 0x116c, 0 };
+static const unichar_t str_315b[] = { 0x116d, 0 };
+static const unichar_t str_315c[] = { 0x116e, 0 };
+static const unichar_t str_315d[] = { 0x116f, 0 };
+static const unichar_t str_315e[] = { 0x1170, 0 };
+static const unichar_t str_315f[] = { 0x1171, 0 };
+static const unichar_t str_3160[] = { 0x1172, 0 };
+static const unichar_t str_3161[] = { 0x1173, 0 };
+static const unichar_t str_3162[] = { 0x1174, 0 };
+static const unichar_t str_3163[] = { 0x1175, 0 };
+static const unichar_t str_3164[] = { 0x1160, 0 };
+static const unichar_t str_3165[] = { 0x1114, 0 };
+static const unichar_t str_3166[] = { 0x1115, 0 };
+static const unichar_t str_3167[] = { 0x11c7, 0 };
+static const unichar_t str_3168[] = { 0x11c8, 0 };
+static const unichar_t str_3169[] = { 0x11cc, 0 };
+static const unichar_t str_316a[] = { 0x11ce, 0 };
+static const unichar_t str_316b[] = { 0x11d3, 0 };
+static const unichar_t str_316c[] = { 0x11d7, 0 };
+static const unichar_t str_316d[] = { 0x11d9, 0 };
+static const unichar_t str_316e[] = { 0x111c, 0 };
+static const unichar_t str_316f[] = { 0x11dd, 0 };
+static const unichar_t str_3170[] = { 0x11df, 0 };
+static const unichar_t str_3171[] = { 0x111d, 0 };
+static const unichar_t str_3172[] = { 0x111e, 0 };
+static const unichar_t str_3173[] = { 0x1120, 0 };
+static const unichar_t str_3174[] = { 0x1122, 0 };
+static const unichar_t str_3175[] = { 0x1123, 0 };
+static const unichar_t str_3176[] = { 0x1127, 0 };
+static const unichar_t str_3177[] = { 0x1129, 0 };
+static const unichar_t str_3178[] = { 0x112b, 0 };
+static const unichar_t str_3179[] = { 0x112c, 0 };
+static const unichar_t str_317a[] = { 0x112d, 0 };
+static const unichar_t str_317b[] = { 0x112e, 0 };
+static const unichar_t str_317c[] = { 0x112f, 0 };
+static const unichar_t str_317d[] = { 0x1132, 0 };
+static const unichar_t str_317e[] = { 0x1136, 0 };
+static const unichar_t str_317f[] = { 0x1140, 0 };
+static const unichar_t str_3180[] = { 0x1147, 0 };
+static const unichar_t str_3181[] = { 0x114c, 0 };
+static const unichar_t str_3182[] = { 0x11f1, 0 };
+static const unichar_t str_3183[] = { 0x11f2, 0 };
+static const unichar_t str_3184[] = { 0x1157, 0 };
+static const unichar_t str_3185[] = { 0x1158, 0 };
+static const unichar_t str_3186[] = { 0x1159, 0 };
+static const unichar_t str_3187[] = { 0x1184, 0 };
+static const unichar_t str_3188[] = { 0x1185, 0 };
+static const unichar_t str_3189[] = { 0x1188, 0 };
+static const unichar_t str_318a[] = { 0x1191, 0 };
+static const unichar_t str_318b[] = { 0x1192, 0 };
+static const unichar_t str_318c[] = { 0x1194, 0 };
+static const unichar_t str_318d[] = { 0x119e, 0 };
+static const unichar_t str_318e[] = { 0x11a1, 0 };
+static const unichar_t str_3192[] = { 0x4e00, 0 };
+static const unichar_t str_3193[] = { 0x4e8c, 0 };
+static const unichar_t str_3194[] = { 0x4e09, 0 };
+static const unichar_t str_3195[] = { 0x56db, 0 };
+static const unichar_t str_3196[] = { 0x4e0a, 0 };
+static const unichar_t str_3197[] = { 0x4e2d, 0 };
+static const unichar_t str_3198[] = { 0x4e0b, 0 };
+static const unichar_t str_3199[] = { 0x7532, 0 };
+static const unichar_t str_319a[] = { 0x4e59, 0 };
+static const unichar_t str_319b[] = { 0x4e19, 0 };
+static const unichar_t str_319c[] = { 0x4e01, 0 };
+static const unichar_t str_319d[] = { 0x5929, 0 };
+static const unichar_t str_319e[] = { 0x5730, 0 };
+static const unichar_t str_319f[] = { 0x4eba, 0 };
+static const unichar_t str_3200[] = { 0x0028, 0x1100, 0x0029, 0 };
+static const unichar_t str_3201[] = { 0x0028, 0x1102, 0x0029, 0 };
+static const unichar_t str_3202[] = { 0x0028, 0x1103, 0x0029, 0 };
+static const unichar_t str_3203[] = { 0x0028, 0x1105, 0x0029, 0 };
+static const unichar_t str_3204[] = { 0x0028, 0x1106, 0x0029, 0 };
+static const unichar_t str_3205[] = { 0x0028, 0x1107, 0x0029, 0 };
+static const unichar_t str_3206[] = { 0x0028, 0x1109, 0x0029, 0 };
+static const unichar_t str_3207[] = { 0x0028, 0x110b, 0x0029, 0 };
+static const unichar_t str_3208[] = { 0x0028, 0x110c, 0x0029, 0 };
+static const unichar_t str_3209[] = { 0x0028, 0x110e, 0x0029, 0 };
+static const unichar_t str_320a[] = { 0x0028, 0x110f, 0x0029, 0 };
+static const unichar_t str_320b[] = { 0x0028, 0x1110, 0x0029, 0 };
+static const unichar_t str_320c[] = { 0x0028, 0x1111, 0x0029, 0 };
+static const unichar_t str_320d[] = { 0x0028, 0x1112, 0x0029, 0 };
+static const unichar_t str_320e[] = { 0x0028, 0x1100, 0x1161, 0x0029, 0 };
+static const unichar_t str_320f[] = { 0x0028, 0x1102, 0x1161, 0x0029, 0 };
+static const unichar_t str_3210[] = { 0x0028, 0x1103, 0x1161, 0x0029, 0 };
+static const unichar_t str_3211[] = { 0x0028, 0x1105, 0x1161, 0x0029, 0 };
+static const unichar_t str_3212[] = { 0x0028, 0x1106, 0x1161, 0x0029, 0 };
+static const unichar_t str_3213[] = { 0x0028, 0x1107, 0x1161, 0x0029, 0 };
+static const unichar_t str_3214[] = { 0x0028, 0x1109, 0x1161, 0x0029, 0 };
+static const unichar_t str_3215[] = { 0x0028, 0x110b, 0x1161, 0x0029, 0 };
+static const unichar_t str_3216[] = { 0x0028, 0x110c, 0x1161, 0x0029, 0 };
+static const unichar_t str_3217[] = { 0x0028, 0x110e, 0x1161, 0x0029, 0 };
+static const unichar_t str_3218[] = { 0x0028, 0x110f, 0x1161, 0x0029, 0 };
+static const unichar_t str_3219[] = { 0x0028, 0x1110, 0x1161, 0x0029, 0 };
+static const unichar_t str_321a[] = { 0x0028, 0x1111, 0x1161, 0x0029, 0 };
+static const unichar_t str_321b[] = { 0x0028, 0x1112, 0x1161, 0x0029, 0 };
+static const unichar_t str_321c[] = { 0x0028, 0x110c, 0x116e, 0x0029, 0 };
+static const unichar_t str_321d[] = { 0x0028, 0x110b, 0x1169, 0x110c, 0x1165, 0x11ab, 0x0029, 0 };
+static const unichar_t str_321e[] = { 0x0028, 0x110b, 0x1169, 0x1112, 0x116e, 0x0029, 0 };
+static const unichar_t str_3220[] = { 0x0028, 0x4e00, 0x0029, 0 };
+static const unichar_t str_3221[] = { 0x0028, 0x4e8c, 0x0029, 0 };
+static const unichar_t str_3222[] = { 0x0028, 0x4e09, 0x0029, 0 };
+static const unichar_t str_3223[] = { 0x0028, 0x56db, 0x0029, 0 };
+static const unichar_t str_3224[] = { 0x0028, 0x4e94, 0x0029, 0 };
+static const unichar_t str_3225[] = { 0x0028, 0x516d, 0x0029, 0 };
+static const unichar_t str_3226[] = { 0x0028, 0x4e03, 0x0029, 0 };
+static const unichar_t str_3227[] = { 0x0028, 0x516b, 0x0029, 0 };
+static const unichar_t str_3228[] = { 0x0028, 0x4e5d, 0x0029, 0 };
+static const unichar_t str_3229[] = { 0x0028, 0x5341, 0x0029, 0 };
+static const unichar_t str_322a[] = { 0x0028, 0x6708, 0x0029, 0 };
+static const unichar_t str_322b[] = { 0x0028, 0x706b, 0x0029, 0 };
+static const unichar_t str_322c[] = { 0x0028, 0x6c34, 0x0029, 0 };
+static const unichar_t str_322d[] = { 0x0028, 0x6728, 0x0029, 0 };
+static const unichar_t str_322e[] = { 0x0028, 0x91d1, 0x0029, 0 };
+static const unichar_t str_322f[] = { 0x0028, 0x571f, 0x0029, 0 };
+static const unichar_t str_3230[] = { 0x0028, 0x65e5, 0x0029, 0 };
+static const unichar_t str_3231[] = { 0x0028, 0x682a, 0x0029, 0 };
+static const unichar_t str_3232[] = { 0x0028, 0x6709, 0x0029, 0 };
+static const unichar_t str_3233[] = { 0x0028, 0x793e, 0x0029, 0 };
+static const unichar_t str_3234[] = { 0x0028, 0x540d, 0x0029, 0 };
+static const unichar_t str_3235[] = { 0x0028, 0x7279, 0x0029, 0 };
+static const unichar_t str_3236[] = { 0x0028, 0x8ca1, 0x0029, 0 };
+static const unichar_t str_3237[] = { 0x0028, 0x795d, 0x0029, 0 };
+static const unichar_t str_3238[] = { 0x0028, 0x52b4, 0x0029, 0 };
+static const unichar_t str_3239[] = { 0x0028, 0x4ee3, 0x0029, 0 };
+static const unichar_t str_323a[] = { 0x0028, 0x547c, 0x0029, 0 };
+static const unichar_t str_323b[] = { 0x0028, 0x5b66, 0x0029, 0 };
+static const unichar_t str_323c[] = { 0x0028, 0x76e3, 0x0029, 0 };
+static const unichar_t str_323d[] = { 0x0028, 0x4f01, 0x0029, 0 };
+static const unichar_t str_323e[] = { 0x0028, 0x8cc7, 0x0029, 0 };
+static const unichar_t str_323f[] = { 0x0028, 0x5354, 0x0029, 0 };
+static const unichar_t str_3240[] = { 0x0028, 0x796d, 0x0029, 0 };
+static const unichar_t str_3241[] = { 0x0028, 0x4f11, 0x0029, 0 };
+static const unichar_t str_3242[] = { 0x0028, 0x81ea, 0x0029, 0 };
+static const unichar_t str_3243[] = { 0x0028, 0x81f3, 0x0029, 0 };
+static const unichar_t str_3244[] = { 0x554f, 0x20dd, 0 };
+static const unichar_t str_3245[] = { 0x5e7c, 0x20dd, 0 };
+static const unichar_t str_3246[] = { 0x6587, 0x20dd, 0 };
+static const unichar_t str_3247[] = { 0x7b8f, 0x20dd, 0 };
+static const unichar_t str_3250[] = { 0x0050, 0x0054, 0x0045, 0 };
+static const unichar_t str_3251[] = { 0x0032, 0x0031, 0x20dd, 0 };
+static const unichar_t str_3252[] = { 0x0032, 0x0032, 0x20dd, 0 };
+static const unichar_t str_3253[] = { 0x0032, 0x0033, 0x20dd, 0 };
+static const unichar_t str_3254[] = { 0x0032, 0x0034, 0x20dd, 0 };
+static const unichar_t str_3255[] = { 0x0032, 0x0035, 0x20dd, 0 };
+static const unichar_t str_3256[] = { 0x0032, 0x0036, 0x20dd, 0 };
+static const unichar_t str_3257[] = { 0x0032, 0x0037, 0x20dd, 0 };
+static const unichar_t str_3258[] = { 0x0032, 0x0038, 0x20dd, 0 };
+static const unichar_t str_3259[] = { 0x0032, 0x0039, 0x20dd, 0 };
+static const unichar_t str_325a[] = { 0x0033, 0x0030, 0x20dd, 0 };
+static const unichar_t str_325b[] = { 0x0033, 0x0031, 0x20dd, 0 };
+static const unichar_t str_325c[] = { 0x0033, 0x0032, 0x20dd, 0 };
+static const unichar_t str_325d[] = { 0x0033, 0x0033, 0x20dd, 0 };
+static const unichar_t str_325e[] = { 0x0033, 0x0034, 0x20dd, 0 };
+static const unichar_t str_325f[] = { 0x0033, 0x0035, 0x20dd, 0 };
+static const unichar_t str_3260[] = { 0x1100, 0x20dd, 0 };
+static const unichar_t str_3261[] = { 0x1102, 0x20dd, 0 };
+static const unichar_t str_3262[] = { 0x1103, 0x20dd, 0 };
+static const unichar_t str_3263[] = { 0x1105, 0x20dd, 0 };
+static const unichar_t str_3264[] = { 0x1106, 0x20dd, 0 };
+static const unichar_t str_3265[] = { 0x1107, 0x20dd, 0 };
+static const unichar_t str_3266[] = { 0x1109, 0x20dd, 0 };
+static const unichar_t str_3267[] = { 0x110b, 0x20dd, 0 };
+static const unichar_t str_3268[] = { 0x110c, 0x20dd, 0 };
+static const unichar_t str_3269[] = { 0x110e, 0x20dd, 0 };
+static const unichar_t str_326a[] = { 0x110f, 0x20dd, 0 };
+static const unichar_t str_326b[] = { 0x1110, 0x20dd, 0 };
+static const unichar_t str_326c[] = { 0x1111, 0x20dd, 0 };
+static const unichar_t str_326d[] = { 0x1112, 0x20dd, 0 };
+static const unichar_t str_326e[] = { 0x1100, 0x1161, 0x20dd, 0 };
+static const unichar_t str_326f[] = { 0x1102, 0x1161, 0x20dd, 0 };
+static const unichar_t str_3270[] = { 0x1103, 0x1161, 0x20dd, 0 };
+static const unichar_t str_3271[] = { 0x1105, 0x1161, 0x20dd, 0 };
+static const unichar_t str_3272[] = { 0x1106, 0x1161, 0x20dd, 0 };
+static const unichar_t str_3273[] = { 0x1107, 0x1161, 0x20dd, 0 };
+static const unichar_t str_3274[] = { 0x1109, 0x1161, 0x20dd, 0 };
+static const unichar_t str_3275[] = { 0x110b, 0x1161, 0x20dd, 0 };
+static const unichar_t str_3276[] = { 0x110c, 0x1161, 0x20dd, 0 };
+static const unichar_t str_3277[] = { 0x110e, 0x1161, 0x20dd, 0 };
+static const unichar_t str_3278[] = { 0x110f, 0x1161, 0x20dd, 0 };
+static const unichar_t str_3279[] = { 0x1110, 0x1161, 0x20dd, 0 };
+static const unichar_t str_327a[] = { 0x1111, 0x1161, 0x20dd, 0 };
+static const unichar_t str_327b[] = { 0x1112, 0x1161, 0x20dd, 0 };
+static const unichar_t str_327c[] = { 0x110e, 0x1161, 0x11b7, 0x1100, 0x1169, 0x20dd, 0 };
+static const unichar_t str_327d[] = { 0x110c, 0x116e, 0x110b, 0x1174, 0x20dd, 0 };
+static const unichar_t str_327e[] = { 0x110b, 0x116e, 0x20dd, 0 };
+static const unichar_t str_3280[] = { 0x4e00, 0x20dd, 0 };
+static const unichar_t str_3281[] = { 0x4e8c, 0x20dd, 0 };
+static const unichar_t str_3282[] = { 0x4e09, 0x20dd, 0 };
+static const unichar_t str_3283[] = { 0x56db, 0x20dd, 0 };
+static const unichar_t str_3284[] = { 0x4e94, 0x20dd, 0 };
+static const unichar_t str_3285[] = { 0x516d, 0x20dd, 0 };
+static const unichar_t str_3286[] = { 0x4e03, 0x20dd, 0 };
+static const unichar_t str_3287[] = { 0x516b, 0x20dd, 0 };
+static const unichar_t str_3288[] = { 0x4e5d, 0x20dd, 0 };
+static const unichar_t str_3289[] = { 0x5341, 0x20dd, 0 };
+static const unichar_t str_328a[] = { 0x6708, 0x20dd, 0 };
+static const unichar_t str_328b[] = { 0x706b, 0x20dd, 0 };
+static const unichar_t str_328c[] = { 0x6c34, 0x20dd, 0 };
+static const unichar_t str_328d[] = { 0x6728, 0x20dd, 0 };
+static const unichar_t str_328e[] = { 0x91d1, 0x20dd, 0 };
+static const unichar_t str_328f[] = { 0x571f, 0x20dd, 0 };
+static const unichar_t str_3290[] = { 0x65e5, 0x20dd, 0 };
+static const unichar_t str_3291[] = { 0x682a, 0x20dd, 0 };
+static const unichar_t str_3292[] = { 0x6709, 0x20dd, 0 };
+static const unichar_t str_3293[] = { 0x793e, 0x20dd, 0 };
+static const unichar_t str_3294[] = { 0x540d, 0x20dd, 0 };
+static const unichar_t str_3295[] = { 0x7279, 0x20dd, 0 };
+static const unichar_t str_3296[] = { 0x8ca1, 0x20dd, 0 };
+static const unichar_t str_3297[] = { 0x795d, 0x20dd, 0 };
+static const unichar_t str_3298[] = { 0x52b4, 0x20dd, 0 };
+static const unichar_t str_3299[] = { 0x79d8, 0x20dd, 0 };
+static const unichar_t str_329a[] = { 0x7537, 0x20dd, 0 };
+static const unichar_t str_329b[] = { 0x5973, 0x20dd, 0 };
+static const unichar_t str_329c[] = { 0x9069, 0x20dd, 0 };
+static const unichar_t str_329d[] = { 0x512a, 0x20dd, 0 };
+static const unichar_t str_329e[] = { 0x5370, 0x20dd, 0 };
+static const unichar_t str_329f[] = { 0x6ce8, 0x20dd, 0 };
+static const unichar_t str_32a0[] = { 0x9805, 0x20dd, 0 };
+static const unichar_t str_32a1[] = { 0x4f11, 0x20dd, 0 };
+static const unichar_t str_32a2[] = { 0x5199, 0x20dd, 0 };
+static const unichar_t str_32a3[] = { 0x6b63, 0x20dd, 0 };
+static const unichar_t str_32a4[] = { 0x4e0a, 0x20dd, 0 };
+static const unichar_t str_32a5[] = { 0x4e2d, 0x20dd, 0 };
+static const unichar_t str_32a6[] = { 0x4e0b, 0x20dd, 0 };
+static const unichar_t str_32a7[] = { 0x5de6, 0x20dd, 0 };
+static const unichar_t str_32a8[] = { 0x53f3, 0x20dd, 0 };
+static const unichar_t str_32a9[] = { 0x533b, 0x20dd, 0 };
+static const unichar_t str_32aa[] = { 0x5b97, 0x20dd, 0 };
+static const unichar_t str_32ab[] = { 0x5b66, 0x20dd, 0 };
+static const unichar_t str_32ac[] = { 0x76e3, 0x20dd, 0 };
+static const unichar_t str_32ad[] = { 0x4f01, 0x20dd, 0 };
+static const unichar_t str_32ae[] = { 0x8cc7, 0x20dd, 0 };
+static const unichar_t str_32af[] = { 0x5354, 0x20dd, 0 };
+static const unichar_t str_32b0[] = { 0x591c, 0x20dd, 0 };
+static const unichar_t str_32b1[] = { 0x0033, 0x0036, 0x20dd, 0 };
+static const unichar_t str_32b2[] = { 0x0033, 0x0037, 0x20dd, 0 };
+static const unichar_t str_32b3[] = { 0x0033, 0x0038, 0x20dd, 0 };
+static const unichar_t str_32b4[] = { 0x0033, 0x0039, 0x20dd, 0 };
+static const unichar_t str_32b5[] = { 0x0034, 0x0030, 0x20dd, 0 };
+static const unichar_t str_32b6[] = { 0x0034, 0x0031, 0x20dd, 0 };
+static const unichar_t str_32b7[] = { 0x0034, 0x0032, 0x20dd, 0 };
+static const unichar_t str_32b8[] = { 0x0034, 0x0033, 0x20dd, 0 };
+static const unichar_t str_32b9[] = { 0x0034, 0x0034, 0x20dd, 0 };
+static const unichar_t str_32ba[] = { 0x0034, 0x0035, 0x20dd, 0 };
+static const unichar_t str_32bb[] = { 0x0034, 0x0036, 0x20dd, 0 };
+static const unichar_t str_32bc[] = { 0x0034, 0x0037, 0x20dd, 0 };
+static const unichar_t str_32bd[] = { 0x0034, 0x0038, 0x20dd, 0 };
+static const unichar_t str_32be[] = { 0x0034, 0x0039, 0x20dd, 0 };
+static const unichar_t str_32bf[] = { 0x0035, 0x0030, 0x20dd, 0 };
+static const unichar_t str_32c0[] = { 0x0031, 0x6708, 0 };
+static const unichar_t str_32c1[] = { 0x0032, 0x6708, 0 };
+static const unichar_t str_32c2[] = { 0x0033, 0x6708, 0 };
+static const unichar_t str_32c3[] = { 0x0034, 0x6708, 0 };
+static const unichar_t str_32c4[] = { 0x0035, 0x6708, 0 };
+static const unichar_t str_32c5[] = { 0x0036, 0x6708, 0 };
+static const unichar_t str_32c6[] = { 0x0037, 0x6708, 0 };
+static const unichar_t str_32c7[] = { 0x0038, 0x6708, 0 };
+static const unichar_t str_32c8[] = { 0x0039, 0x6708, 0 };
+static const unichar_t str_32c9[] = { 0x0031, 0x0030, 0x6708, 0 };
+static const unichar_t str_32ca[] = { 0x0031, 0x0031, 0x6708, 0 };
+static const unichar_t str_32cb[] = { 0x0031, 0x0032, 0x6708, 0 };
+static const unichar_t str_32cc[] = { 0x0048, 0x0067, 0 };
+static const unichar_t str_32cd[] = { 0x0065, 0x0072, 0x0067, 0 };
+static const unichar_t str_32ce[] = { 0x0065, 0x0056, 0 };
+static const unichar_t str_32cf[] = { 0x004c, 0x0054, 0x0044, 0 };
+static const unichar_t str_32d0[] = { 0x30a2, 0x20dd, 0 };
+static const unichar_t str_32d1[] = { 0x30a4, 0x20dd, 0 };
+static const unichar_t str_32d2[] = { 0x30a6, 0x20dd, 0 };
+static const unichar_t str_32d3[] = { 0x30a8, 0x20dd, 0 };
+static const unichar_t str_32d4[] = { 0x30aa, 0x20dd, 0 };
+static const unichar_t str_32d5[] = { 0x30ab, 0x20dd, 0 };
+static const unichar_t str_32d6[] = { 0x30ad, 0x20dd, 0 };
+static const unichar_t str_32d7[] = { 0x30af, 0x20dd, 0 };
+static const unichar_t str_32d8[] = { 0x30b1, 0x20dd, 0 };
+static const unichar_t str_32d9[] = { 0x30b3, 0x20dd, 0 };
+static const unichar_t str_32da[] = { 0x30b5, 0x20dd, 0 };
+static const unichar_t str_32db[] = { 0x30b7, 0x20dd, 0 };
+static const unichar_t str_32dc[] = { 0x30b9, 0x20dd, 0 };
+static const unichar_t str_32dd[] = { 0x30bb, 0x20dd, 0 };
+static const unichar_t str_32de[] = { 0x30bd, 0x20dd, 0 };
+static const unichar_t str_32df[] = { 0x30bf, 0x20dd, 0 };
+static const unichar_t str_32e0[] = { 0x30c1, 0x20dd, 0 };
+static const unichar_t str_32e1[] = { 0x30c4, 0x20dd, 0 };
+static const unichar_t str_32e2[] = { 0x30c6, 0x20dd, 0 };
+static const unichar_t str_32e3[] = { 0x30c8, 0x20dd, 0 };
+static const unichar_t str_32e4[] = { 0x30ca, 0x20dd, 0 };
+static const unichar_t str_32e5[] = { 0x30cb, 0x20dd, 0 };
+static const unichar_t str_32e6[] = { 0x30cc, 0x20dd, 0 };
+static const unichar_t str_32e7[] = { 0x30cd, 0x20dd, 0 };
+static const unichar_t str_32e8[] = { 0x30ce, 0x20dd, 0 };
+static const unichar_t str_32e9[] = { 0x30cf, 0x20dd, 0 };
+static const unichar_t str_32ea[] = { 0x30d2, 0x20dd, 0 };
+static const unichar_t str_32eb[] = { 0x30d5, 0x20dd, 0 };
+static const unichar_t str_32ec[] = { 0x30d8, 0x20dd, 0 };
+static const unichar_t str_32ed[] = { 0x30db, 0x20dd, 0 };
+static const unichar_t str_32ee[] = { 0x30de, 0x20dd, 0 };
+static const unichar_t str_32ef[] = { 0x30df, 0x20dd, 0 };
+static const unichar_t str_32f0[] = { 0x30e0, 0x20dd, 0 };
+static const unichar_t str_32f1[] = { 0x30e1, 0x20dd, 0 };
+static const unichar_t str_32f2[] = { 0x30e2, 0x20dd, 0 };
+static const unichar_t str_32f3[] = { 0x30e4, 0x20dd, 0 };
+static const unichar_t str_32f4[] = { 0x30e6, 0x20dd, 0 };
+static const unichar_t str_32f5[] = { 0x30e8, 0x20dd, 0 };
+static const unichar_t str_32f6[] = { 0x30e9, 0x20dd, 0 };
+static const unichar_t str_32f7[] = { 0x30ea, 0x20dd, 0 };
+static const unichar_t str_32f8[] = { 0x30eb, 0x20dd, 0 };
+static const unichar_t str_32f9[] = { 0x30ec, 0x20dd, 0 };
+static const unichar_t str_32fa[] = { 0x30ed, 0x20dd, 0 };
+static const unichar_t str_32fb[] = { 0x30ef, 0x20dd, 0 };
+static const unichar_t str_32fc[] = { 0x30f0, 0x20dd, 0 };
+static const unichar_t str_32fd[] = { 0x30f1, 0x20dd, 0 };
+static const unichar_t str_32fe[] = { 0x30f2, 0x20dd, 0 };
+static const unichar_t str_3300[] = { 0x30a2, 0x30d1, 0x30fc, 0x30c8, 0 };
+static const unichar_t str_3301[] = { 0x30a2, 0x30eb, 0x30d5, 0x30a1, 0 };
+static const unichar_t str_3302[] = { 0x30a2, 0x30f3, 0x30da, 0x30a2, 0 };
+static const unichar_t str_3303[] = { 0x30a2, 0x30fc, 0x30eb, 0 };
+static const unichar_t str_3304[] = { 0x30a4, 0x30cb, 0x30f3, 0x30b0, 0 };
+static const unichar_t str_3305[] = { 0x30a4, 0x30f3, 0x30c1, 0 };
+static const unichar_t str_3306[] = { 0x30a6, 0x30a9, 0x30f3, 0 };
+static const unichar_t str_3307[] = { 0x30a8, 0x30b9, 0x30af, 0x30fc, 0x30c9, 0 };
+static const unichar_t str_3308[] = { 0x30a8, 0x30fc, 0x30ab, 0x30fc, 0 };
+static const unichar_t str_3309[] = { 0x30aa, 0x30f3, 0x30b9, 0 };
+static const unichar_t str_330a[] = { 0x30aa, 0x30fc, 0x30e0, 0 };
+static const unichar_t str_330b[] = { 0x30ab, 0x30a4, 0x30ea, 0 };
+static const unichar_t str_330c[] = { 0x30ab, 0x30e9, 0x30c3, 0x30c8, 0 };
+static const unichar_t str_330d[] = { 0x30ab, 0x30ed, 0x30ea, 0x30fc, 0 };
+static const unichar_t str_330e[] = { 0x30ac, 0x30ed, 0x30f3, 0 };
+static const unichar_t str_330f[] = { 0x30ac, 0x30f3, 0x30de, 0 };
+static const unichar_t str_3310[] = { 0x30ae, 0x30ac, 0 };
+static const unichar_t str_3311[] = { 0x30ae, 0x30cb, 0x30fc, 0 };
+static const unichar_t str_3312[] = { 0x30ad, 0x30e5, 0x30ea, 0x30fc, 0 };
+static const unichar_t str_3313[] = { 0x30ae, 0x30eb, 0x30c0, 0x30fc, 0 };
+static const unichar_t str_3314[] = { 0x30ad, 0x30ed, 0 };
+static const unichar_t str_3315[] = { 0x30ad, 0x30ed, 0x30b0, 0x30e9, 0x30e0, 0 };
+static const unichar_t str_3316[] = { 0x30ad, 0x30ed, 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0 };
+static const unichar_t str_3317[] = { 0x30ad, 0x30ed, 0x30ef, 0x30c3, 0x30c8, 0 };
+static const unichar_t str_3318[] = { 0x30b0, 0x30e9, 0x30e0, 0 };
+static const unichar_t str_3319[] = { 0x30b0, 0x30e9, 0x30e0, 0x30c8, 0x30f3, 0 };
+static const unichar_t str_331a[] = { 0x30af, 0x30eb, 0x30bc, 0x30a4, 0x30ed, 0 };
+static const unichar_t str_331b[] = { 0x30af, 0x30ed, 0x30fc, 0x30cd, 0 };
+static const unichar_t str_331c[] = { 0x30b1, 0x30fc, 0x30b9, 0 };
+static const unichar_t str_331d[] = { 0x30b3, 0x30eb, 0x30ca, 0 };
+static const unichar_t str_331e[] = { 0x30b3, 0x30fc, 0x30dd, 0 };
+static const unichar_t str_331f[] = { 0x30b5, 0x30a4, 0x30af, 0x30eb, 0 };
+static const unichar_t str_3320[] = { 0x30b5, 0x30f3, 0x30c1, 0x30fc, 0x30e0, 0 };
+static const unichar_t str_3321[] = { 0x30b7, 0x30ea, 0x30f3, 0x30b0, 0 };
+static const unichar_t str_3322[] = { 0x30bb, 0x30f3, 0x30c1, 0 };
+static const unichar_t str_3323[] = { 0x30bb, 0x30f3, 0x30c8, 0 };
+static const unichar_t str_3324[] = { 0x30c0, 0x30fc, 0x30b9, 0 };
+static const unichar_t str_3325[] = { 0x30c7, 0x30b7, 0 };
+static const unichar_t str_3326[] = { 0x30c9, 0x30eb, 0 };
+static const unichar_t str_3327[] = { 0x30c8, 0x30f3, 0 };
+static const unichar_t str_3328[] = { 0x30ca, 0x30ce, 0 };
+static const unichar_t str_3329[] = { 0x30ce, 0x30c3, 0x30c8, 0 };
+static const unichar_t str_332a[] = { 0x30cf, 0x30a4, 0x30c4, 0 };
+static const unichar_t str_332b[] = { 0x30d1, 0x30fc, 0x30bb, 0x30f3, 0x30c8, 0 };
+static const unichar_t str_332c[] = { 0x30d1, 0x30fc, 0x30c4, 0 };
+static const unichar_t str_332d[] = { 0x30d0, 0x30fc, 0x30ec, 0x30eb, 0 };
+static const unichar_t str_332e[] = { 0x30d4, 0x30a2, 0x30b9, 0x30c8, 0x30eb, 0 };
+static const unichar_t str_332f[] = { 0x30d4, 0x30af, 0x30eb, 0 };
+static const unichar_t str_3330[] = { 0x30d4, 0x30b3, 0 };
+static const unichar_t str_3331[] = { 0x30d3, 0x30eb, 0 };
+static const unichar_t str_3332[] = { 0x30d5, 0x30a1, 0x30e9, 0x30c3, 0x30c9, 0 };
+static const unichar_t str_3333[] = { 0x30d5, 0x30a3, 0x30fc, 0x30c8, 0 };
+static const unichar_t str_3334[] = { 0x30d6, 0x30c3, 0x30b7, 0x30a7, 0x30eb, 0 };
+static const unichar_t str_3335[] = { 0x30d5, 0x30e9, 0x30f3, 0 };
+static const unichar_t str_3336[] = { 0x30d8, 0x30af, 0x30bf, 0x30fc, 0x30eb, 0 };
+static const unichar_t str_3337[] = { 0x30da, 0x30bd, 0 };
+static const unichar_t str_3338[] = { 0x30da, 0x30cb, 0x30d2, 0 };
+static const unichar_t str_3339[] = { 0x30d8, 0x30eb, 0x30c4, 0 };
+static const unichar_t str_333a[] = { 0x30da, 0x30f3, 0x30b9, 0 };
+static const unichar_t str_333b[] = { 0x30da, 0x30fc, 0x30b8, 0 };
+static const unichar_t str_333c[] = { 0x30d9, 0x30fc, 0x30bf, 0 };
+static const unichar_t str_333d[] = { 0x30dd, 0x30a4, 0x30f3, 0x30c8, 0 };
+static const unichar_t str_333e[] = { 0x30dc, 0x30eb, 0x30c8, 0 };
+static const unichar_t str_333f[] = { 0x30db, 0x30f3, 0 };
+static const unichar_t str_3340[] = { 0x30dd, 0x30f3, 0x30c9, 0 };
+static const unichar_t str_3341[] = { 0x30db, 0x30fc, 0x30eb, 0 };
+static const unichar_t str_3342[] = { 0x30db, 0x30fc, 0x30f3, 0 };
+static const unichar_t str_3343[] = { 0x30de, 0x30a4, 0x30af, 0x30ed, 0 };
+static const unichar_t str_3344[] = { 0x30de, 0x30a4, 0x30eb, 0 };
+static const unichar_t str_3345[] = { 0x30de, 0x30c3, 0x30cf, 0 };
+static const unichar_t str_3346[] = { 0x30de, 0x30eb, 0x30af, 0 };
+static const unichar_t str_3347[] = { 0x30de, 0x30f3, 0x30b7, 0x30e7, 0x30f3, 0 };
+static const unichar_t str_3348[] = { 0x30df, 0x30af, 0x30ed, 0x30f3, 0 };
+static const unichar_t str_3349[] = { 0x30df, 0x30ea, 0 };
+static const unichar_t str_334a[] = { 0x30df, 0x30ea, 0x30d0, 0x30fc, 0x30eb, 0 };
+static const unichar_t str_334b[] = { 0x30e1, 0x30ac, 0 };
+static const unichar_t str_334c[] = { 0x30e1, 0x30ac, 0x30c8, 0x30f3, 0 };
+static const unichar_t str_334d[] = { 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0 };
+static const unichar_t str_334e[] = { 0x30e4, 0x30fc, 0x30c9, 0 };
+static const unichar_t str_334f[] = { 0x30e4, 0x30fc, 0x30eb, 0 };
+static const unichar_t str_3350[] = { 0x30e6, 0x30a2, 0x30f3, 0 };
+static const unichar_t str_3351[] = { 0x30ea, 0x30c3, 0x30c8, 0x30eb, 0 };
+static const unichar_t str_3352[] = { 0x30ea, 0x30e9, 0 };
+static const unichar_t str_3353[] = { 0x30eb, 0x30d4, 0x30fc, 0 };
+static const unichar_t str_3354[] = { 0x30eb, 0x30fc, 0x30d6, 0x30eb, 0 };
+static const unichar_t str_3355[] = { 0x30ec, 0x30e0, 0 };
+static const unichar_t str_3356[] = { 0x30ec, 0x30f3, 0x30c8, 0x30b2, 0x30f3, 0 };
+static const unichar_t str_3357[] = { 0x30ef, 0x30c3, 0x30c8, 0 };
+static const unichar_t str_3358[] = { 0x0030, 0x70b9, 0 };
+static const unichar_t str_3359[] = { 0x0031, 0x70b9, 0 };
+static const unichar_t str_335a[] = { 0x0032, 0x70b9, 0 };
+static const unichar_t str_335b[] = { 0x0033, 0x70b9, 0 };
+static const unichar_t str_335c[] = { 0x0034, 0x70b9, 0 };
+static const unichar_t str_335d[] = { 0x0035, 0x70b9, 0 };
+static const unichar_t str_335e[] = { 0x0036, 0x70b9, 0 };
+static const unichar_t str_335f[] = { 0x0037, 0x70b9, 0 };
+static const unichar_t str_3360[] = { 0x0038, 0x70b9, 0 };
+static const unichar_t str_3361[] = { 0x0039, 0x70b9, 0 };
+static const unichar_t str_3362[] = { 0x0031, 0x0030, 0x70b9, 0 };
+static const unichar_t str_3363[] = { 0x0031, 0x0031, 0x70b9, 0 };
+static const unichar_t str_3364[] = { 0x0031, 0x0032, 0x70b9, 0 };
+static const unichar_t str_3365[] = { 0x0031, 0x0033, 0x70b9, 0 };
+static const unichar_t str_3366[] = { 0x0031, 0x0034, 0x70b9, 0 };
+static const unichar_t str_3367[] = { 0x0031, 0x0035, 0x70b9, 0 };
+static const unichar_t str_3368[] = { 0x0031, 0x0036, 0x70b9, 0 };
+static const unichar_t str_3369[] = { 0x0031, 0x0037, 0x70b9, 0 };
+static const unichar_t str_336a[] = { 0x0031, 0x0038, 0x70b9, 0 };
+static const unichar_t str_336b[] = { 0x0031, 0x0039, 0x70b9, 0 };
+static const unichar_t str_336c[] = { 0x0032, 0x0030, 0x70b9, 0 };
+static const unichar_t str_336d[] = { 0x0032, 0x0031, 0x70b9, 0 };
+static const unichar_t str_336e[] = { 0x0032, 0x0032, 0x70b9, 0 };
+static const unichar_t str_336f[] = { 0x0032, 0x0033, 0x70b9, 0 };
+static const unichar_t str_3370[] = { 0x0032, 0x0034, 0x70b9, 0 };
+static const unichar_t str_3371[] = { 0x0068, 0x0050, 0x0061, 0 };
+static const unichar_t str_3372[] = { 0x0064, 0x0061, 0 };
+static const unichar_t str_3373[] = { 0x0041, 0x0055, 0 };
+static const unichar_t str_3374[] = { 0x0062, 0x0061, 0x0072, 0 };
+static const unichar_t str_3375[] = { 0x006f, 0x0056, 0 };
+static const unichar_t str_3376[] = { 0x0070, 0x0063, 0 };
+static const unichar_t str_3377[] = { 0x0064, 0x006d, 0 };
+static const unichar_t str_3378[] = { 0x0064, 0x006d, 0x00b2, 0 };
+static const unichar_t str_3379[] = { 0x0064, 0x006d, 0x00b3, 0 };
+static const unichar_t str_337a[] = { 0x0049, 0x0055, 0 };
+static const unichar_t str_337b[] = { 0x5e73, 0x6210, 0 };
+static const unichar_t str_337c[] = { 0x662d, 0x548c, 0 };
+static const unichar_t str_337d[] = { 0x5927, 0x6b63, 0 };
+static const unichar_t str_337e[] = { 0x660e, 0x6cbb, 0 };
+static const unichar_t str_337f[] = { 0x682a, 0x5f0f, 0x4f1a, 0x793e, 0 };
+static const unichar_t str_3380[] = { 0x0070, 0x0041, 0 };
+static const unichar_t str_3381[] = { 0x006e, 0x0041, 0 };
+static const unichar_t str_3382[] = { 0x03bc, 0x0041, 0 };
+static const unichar_t str_3383[] = { 0x006d, 0x0041, 0 };
+static const unichar_t str_3384[] = { 0x006b, 0x0041, 0 };
+static const unichar_t str_3385[] = { 0x004b, 0x0042, 0 };
+static const unichar_t str_3386[] = { 0x004d, 0x0042, 0 };
+static const unichar_t str_3387[] = { 0x0047, 0x0042, 0 };
+static const unichar_t str_3388[] = { 0x0063, 0x0061, 0x006c, 0 };
+static const unichar_t str_3389[] = { 0x006b, 0x0063, 0x0061, 0x006c, 0 };
+static const unichar_t str_338a[] = { 0x0070, 0x0046, 0 };
+static const unichar_t str_338b[] = { 0x006e, 0x0046, 0 };
+static const unichar_t str_338c[] = { 0x03bc, 0x0046, 0 };
+static const unichar_t str_338d[] = { 0x03bc, 0x0067, 0 };
+static const unichar_t str_338e[] = { 0x006d, 0x0067, 0 };
+static const unichar_t str_338f[] = { 0x006b, 0x0067, 0 };
+static const unichar_t str_3390[] = { 0x0048, 0x007a, 0 };
+static const unichar_t str_3391[] = { 0x006b, 0x0048, 0x007a, 0 };
+static const unichar_t str_3392[] = { 0x004d, 0x0048, 0x007a, 0 };
+static const unichar_t str_3393[] = { 0x0047, 0x0048, 0x007a, 0 };
+static const unichar_t str_3394[] = { 0x0054, 0x0048, 0x007a, 0 };
+static const unichar_t str_3395[] = { 0x03bc, 0x2113, 0 };
+static const unichar_t str_3396[] = { 0x006d, 0x2113, 0 };
+static const unichar_t str_3397[] = { 0x0064, 0x2113, 0 };
+static const unichar_t str_3398[] = { 0x006b, 0x2113, 0 };
+static const unichar_t str_3399[] = { 0x0066, 0x006d, 0 };
+static const unichar_t str_339a[] = { 0x006e, 0x006d, 0 };
+static const unichar_t str_339b[] = { 0x03bc, 0x006d, 0 };
+static const unichar_t str_339c[] = { 0x006d, 0x006d, 0 };
+static const unichar_t str_339d[] = { 0x0063, 0x006d, 0 };
+static const unichar_t str_339e[] = { 0x006b, 0x006d, 0 };
+static const unichar_t str_339f[] = { 0x006d, 0x006d, 0x00b2, 0 };
+static const unichar_t str_33a0[] = { 0x0063, 0x006d, 0x00b2, 0 };
+static const unichar_t str_33a1[] = { 0x006d, 0x00b2, 0 };
+static const unichar_t str_33a2[] = { 0x006b, 0x006d, 0x00b2, 0 };
+static const unichar_t str_33a3[] = { 0x006d, 0x006d, 0x00b3, 0 };
+static const unichar_t str_33a4[] = { 0x0063, 0x006d, 0x00b3, 0 };
+static const unichar_t str_33a5[] = { 0x006d, 0x00b3, 0 };
+static const unichar_t str_33a6[] = { 0x006b, 0x006d, 0x00b3, 0 };
+static const unichar_t str_33a7[] = { 0x006d, 0x2215, 0x0073, 0 };
+static const unichar_t str_33a8[] = { 0x006d, 0x2215, 0x0073, 0x00b2, 0 };
+static const unichar_t str_33a9[] = { 0x0050, 0x0061, 0 };
+static const unichar_t str_33aa[] = { 0x006b, 0x0050, 0x0061, 0 };
+static const unichar_t str_33ab[] = { 0x004d, 0x0050, 0x0061, 0 };
+static const unichar_t str_33ac[] = { 0x0047, 0x0050, 0x0061, 0 };
+static const unichar_t str_33ad[] = { 0x0072, 0x0061, 0x0064, 0 };
+static const unichar_t str_33ae[] = { 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0 };
+static const unichar_t str_33af[] = { 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x00b2, 0 };
+static const unichar_t str_33b0[] = { 0x0070, 0x0073, 0 };
+static const unichar_t str_33b1[] = { 0x006e, 0x0073, 0 };
+static const unichar_t str_33b2[] = { 0x03bc, 0x0073, 0 };
+static const unichar_t str_33b3[] = { 0x006d, 0x0073, 0 };
+static const unichar_t str_33b4[] = { 0x0070, 0x0056, 0 };
+static const unichar_t str_33b5[] = { 0x006e, 0x0056, 0 };
+static const unichar_t str_33b6[] = { 0x03bc, 0x0056, 0 };
+static const unichar_t str_33b7[] = { 0x006d, 0x0056, 0 };
+static const unichar_t str_33b8[] = { 0x006b, 0x0056, 0 };
+static const unichar_t str_33b9[] = { 0x004d, 0x0056, 0 };
+static const unichar_t str_33ba[] = { 0x0070, 0x0057, 0 };
+static const unichar_t str_33bb[] = { 0x006e, 0x0057, 0 };
+static const unichar_t str_33bc[] = { 0x03bc, 0x0057, 0 };
+static const unichar_t str_33bd[] = { 0x006d, 0x0057, 0 };
+static const unichar_t str_33be[] = { 0x006b, 0x0057, 0 };
+static const unichar_t str_33bf[] = { 0x004d, 0x0057, 0 };
+static const unichar_t str_33c0[] = { 0x006b, 0x03a9, 0 };
+static const unichar_t str_33c1[] = { 0x004d, 0x03a9, 0 };
+static const unichar_t str_33c2[] = { 0x0061, 0x002e, 0x006d, 0x002e, 0 };
+static const unichar_t str_33c3[] = { 0x0042, 0x0071, 0 };
+static const unichar_t str_33c4[] = { 0x0063, 0x0063, 0 };
+static const unichar_t str_33c5[] = { 0x0063, 0x0064, 0 };
+static const unichar_t str_33c6[] = { 0x0043, 0x2215, 0x006b, 0x0067, 0 };
+static const unichar_t str_33c7[] = { 0x0043, 0x006f, 0x002e, 0 };
+static const unichar_t str_33c8[] = { 0x0064, 0x0042, 0 };
+static const unichar_t str_33c9[] = { 0x0047, 0x0079, 0 };
+static const unichar_t str_33ca[] = { 0x0068, 0x0061, 0 };
+static const unichar_t str_33cb[] = { 0x0048, 0x0050, 0 };
+static const unichar_t str_33cc[] = { 0x0069, 0x006e, 0 };
+static const unichar_t str_33cd[] = { 0x004b, 0x004b, 0 };
+static const unichar_t str_33ce[] = { 0x004b, 0x004d, 0 };
+static const unichar_t str_33cf[] = { 0x006b, 0x0074, 0 };
+static const unichar_t str_33d0[] = { 0x006c, 0x006d, 0 };
+static const unichar_t str_33d1[] = { 0x006c, 0x006e, 0 };
+static const unichar_t str_33d2[] = { 0x006c, 0x006f, 0x0067, 0 };
+static const unichar_t str_33d3[] = { 0x006c, 0x0078, 0 };
+static const unichar_t str_33d4[] = { 0x006d, 0x0062, 0 };
+static const unichar_t str_33d5[] = { 0x006d, 0x0069, 0x006c, 0 };
+static const unichar_t str_33d6[] = { 0x006d, 0x006f, 0x006c, 0 };
+static const unichar_t str_33d7[] = { 0x0050, 0x0048, 0 };
+static const unichar_t str_33d8[] = { 0x0070, 0x002e, 0x006d, 0x002e, 0 };
+static const unichar_t str_33d9[] = { 0x0050, 0x0050, 0x004d, 0 };
+static const unichar_t str_33da[] = { 0x0050, 0x0052, 0 };
+static const unichar_t str_33db[] = { 0x0073, 0x0072, 0 };
+static const unichar_t str_33dc[] = { 0x0053, 0x0076, 0 };
+static const unichar_t str_33dd[] = { 0x0057, 0x0062, 0 };
+static const unichar_t str_33de[] = { 0x0056, 0x2215, 0x006d, 0 };
+static const unichar_t str_33df[] = { 0x0041, 0x2215, 0x006d, 0 };
+static const unichar_t str_33e0[] = { 0x0031, 0x65e5, 0 };
+static const unichar_t str_33e1[] = { 0x0032, 0x65e5, 0 };
+static const unichar_t str_33e2[] = { 0x0033, 0x65e5, 0 };
+static const unichar_t str_33e3[] = { 0x0034, 0x65e5, 0 };
+static const unichar_t str_33e4[] = { 0x0035, 0x65e5, 0 };
+static const unichar_t str_33e5[] = { 0x0036, 0x65e5, 0 };
+static const unichar_t str_33e6[] = { 0x0037, 0x65e5, 0 };
+static const unichar_t str_33e7[] = { 0x0038, 0x65e5, 0 };
+static const unichar_t str_33e8[] = { 0x0039, 0x65e5, 0 };
+static const unichar_t str_33e9[] = { 0x0031, 0x0030, 0x65e5, 0 };
+static const unichar_t str_33ea[] = { 0x0031, 0x0031, 0x65e5, 0 };
+static const unichar_t str_33eb[] = { 0x0031, 0x0032, 0x65e5, 0 };
+static const unichar_t str_33ec[] = { 0x0031, 0x0033, 0x65e5, 0 };
+static const unichar_t str_33ed[] = { 0x0031, 0x0034, 0x65e5, 0 };
+static const unichar_t str_33ee[] = { 0x0031, 0x0035, 0x65e5, 0 };
+static const unichar_t str_33ef[] = { 0x0031, 0x0036, 0x65e5, 0 };
+static const unichar_t str_33f0[] = { 0x0031, 0x0037, 0x65e5, 0 };
+static const unichar_t str_33f1[] = { 0x0031, 0x0038, 0x65e5, 0 };
+static const unichar_t str_33f2[] = { 0x0031, 0x0039, 0x65e5, 0 };
+static const unichar_t str_33f3[] = { 0x0032, 0x0030, 0x65e5, 0 };
+static const unichar_t str_33f4[] = { 0x0032, 0x0031, 0x65e5, 0 };
+static const unichar_t str_33f5[] = { 0x0032, 0x0032, 0x65e5, 0 };
+static const unichar_t str_33f6[] = { 0x0032, 0x0033, 0x65e5, 0 };
+static const unichar_t str_33f7[] = { 0x0032, 0x0034, 0x65e5, 0 };
+static const unichar_t str_33f8[] = { 0x0032, 0x0035, 0x65e5, 0 };
+static const unichar_t str_33f9[] = { 0x0032, 0x0036, 0x65e5, 0 };
+static const unichar_t str_33fa[] = { 0x0032, 0x0037, 0x65e5, 0 };
+static const unichar_t str_33fb[] = { 0x0032, 0x0038, 0x65e5, 0 };
+static const unichar_t str_33fc[] = { 0x0032, 0x0039, 0x65e5, 0 };
+static const unichar_t str_33fd[] = { 0x0033, 0x0030, 0x65e5, 0 };
+static const unichar_t str_33fe[] = { 0x0033, 0x0031, 0x65e5, 0 };
+static const unichar_t str_33ff[] = { 0x0067, 0x0061, 0x006c, 0 };
+static const unichar_t str_a770[] = { 0xa76f, 0 };
+static const unichar_t str_a7f8[] = { 0x0126, 0 };
+static const unichar_t str_a7f9[] = { 0x0153, 0 };
+static const unichar_t str_f900[] = { 0x8c48, 0 };
+static const unichar_t str_f901[] = { 0x66f4, 0 };
+static const unichar_t str_f902[] = { 0x8eca, 0 };
+static const unichar_t str_f903[] = { 0x8cc8, 0 };
+static const unichar_t str_f904[] = { 0x6ed1, 0 };
+static const unichar_t str_f905[] = { 0x4e32, 0 };
+static const unichar_t str_f906[] = { 0x53e5, 0 };
+static const unichar_t str_f907[] = { 0x9f9c, 0 };
+static const unichar_t str_f908[] = { 0x9f9c, 0 };
+static const unichar_t str_f909[] = { 0x5951, 0 };
+static const unichar_t str_f90a[] = { 0x91d1, 0 };
+static const unichar_t str_f90b[] = { 0x5587, 0 };
+static const unichar_t str_f90c[] = { 0x5948, 0 };
+static const unichar_t str_f90d[] = { 0x61f6, 0 };
+static const unichar_t str_f90e[] = { 0x7669, 0 };
+static const unichar_t str_f90f[] = { 0x7f85, 0 };
+static const unichar_t str_f910[] = { 0x863f, 0 };
+static const unichar_t str_f911[] = { 0x87ba, 0 };
+static const unichar_t str_f912[] = { 0x88f8, 0 };
+static const unichar_t str_f913[] = { 0x908f, 0 };
+static const unichar_t str_f914[] = { 0x6a02, 0 };
+static const unichar_t str_f915[] = { 0x6d1b, 0 };
+static const unichar_t str_f916[] = { 0x70d9, 0 };
+static const unichar_t str_f917[] = { 0x73de, 0 };
+static const unichar_t str_f918[] = { 0x843d, 0 };
+static const unichar_t str_f919[] = { 0x916a, 0 };
+static const unichar_t str_f91a[] = { 0x99f1, 0 };
+static const unichar_t str_f91b[] = { 0x4e82, 0 };
+static const unichar_t str_f91c[] = { 0x5375, 0 };
+static const unichar_t str_f91d[] = { 0x6b04, 0 };
+static const unichar_t str_f91e[] = { 0x721b, 0 };
+static const unichar_t str_f91f[] = { 0x862d, 0 };
+static const unichar_t str_f920[] = { 0x9e1e, 0 };
+static const unichar_t str_f921[] = { 0x5d50, 0 };
+static const unichar_t str_f922[] = { 0x6feb, 0 };
+static const unichar_t str_f923[] = { 0x85cd, 0 };
+static const unichar_t str_f924[] = { 0x8964, 0 };
+static const unichar_t str_f925[] = { 0x62c9, 0 };
+static const unichar_t str_f926[] = { 0x81d8, 0 };
+static const unichar_t str_f927[] = { 0x881f, 0 };
+static const unichar_t str_f928[] = { 0x5eca, 0 };
+static const unichar_t str_f929[] = { 0x6717, 0 };
+static const unichar_t str_f92a[] = { 0x6d6a, 0 };
+static const unichar_t str_f92b[] = { 0x72fc, 0 };
+static const unichar_t str_f92c[] = { 0x90ce, 0 };
+static const unichar_t str_f92d[] = { 0x4f86, 0 };
+static const unichar_t str_f92e[] = { 0x51b7, 0 };
+static const unichar_t str_f92f[] = { 0x52de, 0 };
+static const unichar_t str_f930[] = { 0x64c4, 0 };
+static const unichar_t str_f931[] = { 0x6ad3, 0 };
+static const unichar_t str_f932[] = { 0x7210, 0 };
+static const unichar_t str_f933[] = { 0x76e7, 0 };
+static const unichar_t str_f934[] = { 0x8001, 0 };
+static const unichar_t str_f935[] = { 0x8606, 0 };
+static const unichar_t str_f936[] = { 0x865c, 0 };
+static const unichar_t str_f937[] = { 0x8def, 0 };
+static const unichar_t str_f938[] = { 0x9732, 0 };
+static const unichar_t str_f939[] = { 0x9b6f, 0 };
+static const unichar_t str_f93a[] = { 0x9dfa, 0 };
+static const unichar_t str_f93b[] = { 0x788c, 0 };
+static const unichar_t str_f93c[] = { 0x797f, 0 };
+static const unichar_t str_f93d[] = { 0x7da0, 0 };
+static const unichar_t str_f93e[] = { 0x83c9, 0 };
+static const unichar_t str_f93f[] = { 0x9304, 0 };
+static const unichar_t str_f940[] = { 0x9e7f, 0 };
+static const unichar_t str_f941[] = { 0x8ad6, 0 };
+static const unichar_t str_f942[] = { 0x58df, 0 };
+static const unichar_t str_f943[] = { 0x5f04, 0 };
+static const unichar_t str_f944[] = { 0x7c60, 0 };
+static const unichar_t str_f945[] = { 0x807e, 0 };
+static const unichar_t str_f946[] = { 0x7262, 0 };
+static const unichar_t str_f947[] = { 0x78ca, 0 };
+static const unichar_t str_f948[] = { 0x8cc2, 0 };
+static const unichar_t str_f949[] = { 0x96f7, 0 };
+static const unichar_t str_f94a[] = { 0x58d8, 0 };
+static const unichar_t str_f94b[] = { 0x5c62, 0 };
+static const unichar_t str_f94c[] = { 0x6a13, 0 };
+static const unichar_t str_f94d[] = { 0x6dda, 0 };
+static const unichar_t str_f94e[] = { 0x6f0f, 0 };
+static const unichar_t str_f94f[] = { 0x7d2f, 0 };
+static const unichar_t str_f950[] = { 0x7e37, 0 };
+static const unichar_t str_f951[] = { 0x964b, 0 };
+static const unichar_t str_f952[] = { 0x52d2, 0 };
+static const unichar_t str_f953[] = { 0x808b, 0 };
+static const unichar_t str_f954[] = { 0x51dc, 0 };
+static const unichar_t str_f955[] = { 0x51cc, 0 };
+static const unichar_t str_f956[] = { 0x7a1c, 0 };
+static const unichar_t str_f957[] = { 0x7dbe, 0 };
+static const unichar_t str_f958[] = { 0x83f1, 0 };
+static const unichar_t str_f959[] = { 0x9675, 0 };
+static const unichar_t str_f95a[] = { 0x8b80, 0 };
+static const unichar_t str_f95b[] = { 0x62cf, 0 };
+static const unichar_t str_f95c[] = { 0x6a02, 0 };
+static const unichar_t str_f95d[] = { 0x8afe, 0 };
+static const unichar_t str_f95e[] = { 0x4e39, 0 };
+static const unichar_t str_f95f[] = { 0x5be7, 0 };
+static const unichar_t str_f960[] = { 0x6012, 0 };
+static const unichar_t str_f961[] = { 0x7387, 0 };
+static const unichar_t str_f962[] = { 0x7570, 0 };
+static const unichar_t str_f963[] = { 0x5317, 0 };
+static const unichar_t str_f964[] = { 0x78fb, 0 };
+static const unichar_t str_f965[] = { 0x4fbf, 0 };
+static const unichar_t str_f966[] = { 0x5fa9, 0 };
+static const unichar_t str_f967[] = { 0x4e0d, 0 };
+static const unichar_t str_f968[] = { 0x6ccc, 0 };
+static const unichar_t str_f969[] = { 0x6578, 0 };
+static const unichar_t str_f96a[] = { 0x7d22, 0 };
+static const unichar_t str_f96b[] = { 0x53c3, 0 };
+static const unichar_t str_f96c[] = { 0x585e, 0 };
+static const unichar_t str_f96d[] = { 0x7701, 0 };
+static const unichar_t str_f96e[] = { 0x8449, 0 };
+static const unichar_t str_f96f[] = { 0x8aaa, 0 };
+static const unichar_t str_f970[] = { 0x6bba, 0 };
+static const unichar_t str_f971[] = { 0x8fb0, 0 };
+static const unichar_t str_f972[] = { 0x6c88, 0 };
+static const unichar_t str_f973[] = { 0x62fe, 0 };
+static const unichar_t str_f974[] = { 0x82e5, 0 };
+static const unichar_t str_f975[] = { 0x63a0, 0 };
+static const unichar_t str_f976[] = { 0x7565, 0 };
+static const unichar_t str_f977[] = { 0x4eae, 0 };
+static const unichar_t str_f978[] = { 0x5169, 0 };
+static const unichar_t str_f979[] = { 0x51c9, 0 };
+static const unichar_t str_f97a[] = { 0x6881, 0 };
+static const unichar_t str_f97b[] = { 0x7ce7, 0 };
+static const unichar_t str_f97c[] = { 0x826f, 0 };
+static const unichar_t str_f97d[] = { 0x8ad2, 0 };
+static const unichar_t str_f97e[] = { 0x91cf, 0 };
+static const unichar_t str_f97f[] = { 0x52f5, 0 };
+static const unichar_t str_f980[] = { 0x5442, 0 };
+static const unichar_t str_f981[] = { 0x5973, 0 };
+static const unichar_t str_f982[] = { 0x5eec, 0 };
+static const unichar_t str_f983[] = { 0x65c5, 0 };
+static const unichar_t str_f984[] = { 0x6ffe, 0 };
+static const unichar_t str_f985[] = { 0x792a, 0 };
+static const unichar_t str_f986[] = { 0x95ad, 0 };
+static const unichar_t str_f987[] = { 0x9a6a, 0 };
+static const unichar_t str_f988[] = { 0x9e97, 0 };
+static const unichar_t str_f989[] = { 0x9ece, 0 };
+static const unichar_t str_f98a[] = { 0x529b, 0 };
+static const unichar_t str_f98b[] = { 0x66c6, 0 };
+static const unichar_t str_f98c[] = { 0x6b77, 0 };
+static const unichar_t str_f98d[] = { 0x8f62, 0 };
+static const unichar_t str_f98e[] = { 0x5e74, 0 };
+static const unichar_t str_f98f[] = { 0x6190, 0 };
+static const unichar_t str_f990[] = { 0x6200, 0 };
+static const unichar_t str_f991[] = { 0x649a, 0 };
+static const unichar_t str_f992[] = { 0x6f23, 0 };
+static const unichar_t str_f993[] = { 0x7149, 0 };
+static const unichar_t str_f994[] = { 0x7489, 0 };
+static const unichar_t str_f995[] = { 0x79ca, 0 };
+static const unichar_t str_f996[] = { 0x7df4, 0 };
+static const unichar_t str_f997[] = { 0x806f, 0 };
+static const unichar_t str_f998[] = { 0x8f26, 0 };
+static const unichar_t str_f999[] = { 0x84ee, 0 };
+static const unichar_t str_f99a[] = { 0x9023, 0 };
+static const unichar_t str_f99b[] = { 0x934a, 0 };
+static const unichar_t str_f99c[] = { 0x5217, 0 };
+static const unichar_t str_f99d[] = { 0x52a3, 0 };
+static const unichar_t str_f99e[] = { 0x54bd, 0 };
+static const unichar_t str_f99f[] = { 0x70c8, 0 };
+static const unichar_t str_f9a0[] = { 0x88c2, 0 };
+static const unichar_t str_f9a1[] = { 0x8aaa, 0 };
+static const unichar_t str_f9a2[] = { 0x5ec9, 0 };
+static const unichar_t str_f9a3[] = { 0x5ff5, 0 };
+static const unichar_t str_f9a4[] = { 0x637b, 0 };
+static const unichar_t str_f9a5[] = { 0x6bae, 0 };
+static const unichar_t str_f9a6[] = { 0x7c3e, 0 };
+static const unichar_t str_f9a7[] = { 0x7375, 0 };
+static const unichar_t str_f9a8[] = { 0x4ee4, 0 };
+static const unichar_t str_f9a9[] = { 0x56f9, 0 };
+static const unichar_t str_f9aa[] = { 0x5be7, 0 };
+static const unichar_t str_f9ab[] = { 0x5dba, 0 };
+static const unichar_t str_f9ac[] = { 0x601c, 0 };
+static const unichar_t str_f9ad[] = { 0x73b2, 0 };
+static const unichar_t str_f9ae[] = { 0x7469, 0 };
+static const unichar_t str_f9af[] = { 0x7f9a, 0 };
+static const unichar_t str_f9b0[] = { 0x8046, 0 };
+static const unichar_t str_f9b1[] = { 0x9234, 0 };
+static const unichar_t str_f9b2[] = { 0x96f6, 0 };
+static const unichar_t str_f9b3[] = { 0x9748, 0 };
+static const unichar_t str_f9b4[] = { 0x9818, 0 };
+static const unichar_t str_f9b5[] = { 0x4f8b, 0 };
+static const unichar_t str_f9b6[] = { 0x79ae, 0 };
+static const unichar_t str_f9b7[] = { 0x91b4, 0 };
+static const unichar_t str_f9b8[] = { 0x96b8, 0 };
+static const unichar_t str_f9b9[] = { 0x60e1, 0 };
+static const unichar_t str_f9ba[] = { 0x4e86, 0 };
+static const unichar_t str_f9bb[] = { 0x50da, 0 };
+static const unichar_t str_f9bc[] = { 0x5bee, 0 };
+static const unichar_t str_f9bd[] = { 0x5c3f, 0 };
+static const unichar_t str_f9be[] = { 0x6599, 0 };
+static const unichar_t str_f9bf[] = { 0x6a02, 0 };
+static const unichar_t str_f9c0[] = { 0x71ce, 0 };
+static const unichar_t str_f9c1[] = { 0x7642, 0 };
+static const unichar_t str_f9c2[] = { 0x84fc, 0 };
+static const unichar_t str_f9c3[] = { 0x907c, 0 };
+static const unichar_t str_f9c4[] = { 0x9f8d, 0 };
+static const unichar_t str_f9c5[] = { 0x6688, 0 };
+static const unichar_t str_f9c6[] = { 0x962e, 0 };
+static const unichar_t str_f9c7[] = { 0x5289, 0 };
+static const unichar_t str_f9c8[] = { 0x677b, 0 };
+static const unichar_t str_f9c9[] = { 0x67f3, 0 };
+static const unichar_t str_f9ca[] = { 0x6d41, 0 };
+static const unichar_t str_f9cb[] = { 0x6e9c, 0 };
+static const unichar_t str_f9cc[] = { 0x7409, 0 };
+static const unichar_t str_f9cd[] = { 0x7559, 0 };
+static const unichar_t str_f9ce[] = { 0x786b, 0 };
+static const unichar_t str_f9cf[] = { 0x7d10, 0 };
+static const unichar_t str_f9d0[] = { 0x985e, 0 };
+static const unichar_t str_f9d1[] = { 0x516d, 0 };
+static const unichar_t str_f9d2[] = { 0x622e, 0 };
+static const unichar_t str_f9d3[] = { 0x9678, 0 };
+static const unichar_t str_f9d4[] = { 0x502b, 0 };
+static const unichar_t str_f9d5[] = { 0x5d19, 0 };
+static const unichar_t str_f9d6[] = { 0x6dea, 0 };
+static const unichar_t str_f9d7[] = { 0x8f2a, 0 };
+static const unichar_t str_f9d8[] = { 0x5f8b, 0 };
+static const unichar_t str_f9d9[] = { 0x6144, 0 };
+static const unichar_t str_f9da[] = { 0x6817, 0 };
+static const unichar_t str_f9db[] = { 0x7387, 0 };
+static const unichar_t str_f9dc[] = { 0x9686, 0 };
+static const unichar_t str_f9dd[] = { 0x5229, 0 };
+static const unichar_t str_f9de[] = { 0x540f, 0 };
+static const unichar_t str_f9df[] = { 0x5c65, 0 };
+static const unichar_t str_f9e0[] = { 0x6613, 0 };
+static const unichar_t str_f9e1[] = { 0x674e, 0 };
+static const unichar_t str_f9e2[] = { 0x68a8, 0 };
+static const unichar_t str_f9e3[] = { 0x6ce5, 0 };
+static const unichar_t str_f9e4[] = { 0x7406, 0 };
+static const unichar_t str_f9e5[] = { 0x75e2, 0 };
+static const unichar_t str_f9e6[] = { 0x7f79, 0 };
+static const unichar_t str_f9e7[] = { 0x88cf, 0 };
+static const unichar_t str_f9e8[] = { 0x88e1, 0 };
+static const unichar_t str_f9e9[] = { 0x91cc, 0 };
+static const unichar_t str_f9ea[] = { 0x96e2, 0 };
+static const unichar_t str_f9eb[] = { 0x533f, 0 };
+static const unichar_t str_f9ec[] = { 0x6eba, 0 };
+static const unichar_t str_f9ed[] = { 0x541d, 0 };
+static const unichar_t str_f9ee[] = { 0x71d0, 0 };
+static const unichar_t str_f9ef[] = { 0x7498, 0 };
+static const unichar_t str_f9f0[] = { 0x85fa, 0 };
+static const unichar_t str_f9f1[] = { 0x96a3, 0 };
+static const unichar_t str_f9f2[] = { 0x9c57, 0 };
+static const unichar_t str_f9f3[] = { 0x9e9f, 0 };
+static const unichar_t str_f9f4[] = { 0x6797, 0 };
+static const unichar_t str_f9f5[] = { 0x6dcb, 0 };
+static const unichar_t str_f9f6[] = { 0x81e8, 0 };
+static const unichar_t str_f9f7[] = { 0x7acb, 0 };
+static const unichar_t str_f9f8[] = { 0x7b20, 0 };
+static const unichar_t str_f9f9[] = { 0x7c92, 0 };
+static const unichar_t str_f9fa[] = { 0x72c0, 0 };
+static const unichar_t str_f9fb[] = { 0x7099, 0 };
+static const unichar_t str_f9fc[] = { 0x8b58, 0 };
+static const unichar_t str_f9fd[] = { 0x4ec0, 0 };
+static const unichar_t str_f9fe[] = { 0x8336, 0 };
+static const unichar_t str_f9ff[] = { 0x523a, 0 };
+static const unichar_t str_fa00[] = { 0x5207, 0 };
+static const unichar_t str_fa01[] = { 0x5ea6, 0 };
+static const unichar_t str_fa02[] = { 0x62d3, 0 };
+static const unichar_t str_fa03[] = { 0x7cd6, 0 };
+static const unichar_t str_fa04[] = { 0x5b85, 0 };
+static const unichar_t str_fa05[] = { 0x6d1e, 0 };
+static const unichar_t str_fa06[] = { 0x66b4, 0 };
+static const unichar_t str_fa07[] = { 0x8f3b, 0 };
+static const unichar_t str_fa08[] = { 0x884c, 0 };
+static const unichar_t str_fa09[] = { 0x964d, 0 };
+static const unichar_t str_fa0a[] = { 0x898b, 0 };
+static const unichar_t str_fa0b[] = { 0x5ed3, 0 };
+static const unichar_t str_fa0c[] = { 0x5140, 0 };
+static const unichar_t str_fa0d[] = { 0x55c0, 0 };
+static const unichar_t str_fa10[] = { 0x585a, 0 };
+static const unichar_t str_fa12[] = { 0x6674, 0 };
+static const unichar_t str_fa15[] = { 0x51de, 0 };
+static const unichar_t str_fa16[] = { 0x732a, 0 };
+static const unichar_t str_fa17[] = { 0x76ca, 0 };
+static const unichar_t str_fa18[] = { 0x793c, 0 };
+static const unichar_t str_fa19[] = { 0x795e, 0 };
+static const unichar_t str_fa1a[] = { 0x7965, 0 };
+static const unichar_t str_fa1b[] = { 0x798f, 0 };
+static const unichar_t str_fa1c[] = { 0x9756, 0 };
+static const unichar_t str_fa1d[] = { 0x7cbe, 0 };
+static const unichar_t str_fa1e[] = { 0x7fbd, 0 };
+static const unichar_t str_fa20[] = { 0x8612, 0 };
+static const unichar_t str_fa22[] = { 0x8af8, 0 };
+static const unichar_t str_fa25[] = { 0x9038, 0 };
+static const unichar_t str_fa26[] = { 0x90fd, 0 };
+static const unichar_t str_fa2a[] = { 0x98ef, 0 };
+static const unichar_t str_fa2b[] = { 0x98fc, 0 };
+static const unichar_t str_fa2c[] = { 0x9928, 0 };
+static const unichar_t str_fa2d[] = { 0x9db4, 0 };
+static const unichar_t str_fa2e[] = { 0x90de, 0 };
+static const unichar_t str_fa2f[] = { 0x96b7, 0 };
+static const unichar_t str_fa30[] = { 0x4fae, 0 };
+static const unichar_t str_fa31[] = { 0x50e7, 0 };
+static const unichar_t str_fa32[] = { 0x514d, 0 };
+static const unichar_t str_fa33[] = { 0x52c9, 0 };
+static const unichar_t str_fa34[] = { 0x52e4, 0 };
+static const unichar_t str_fa35[] = { 0x5351, 0 };
+static const unichar_t str_fa36[] = { 0x559d, 0 };
+static const unichar_t str_fa37[] = { 0x5606, 0 };
+static const unichar_t str_fa38[] = { 0x5668, 0 };
+static const unichar_t str_fa39[] = { 0x5840, 0 };
+static const unichar_t str_fa3a[] = { 0x58a8, 0 };
+static const unichar_t str_fa3b[] = { 0x5c64, 0 };
+static const unichar_t str_fa3c[] = { 0x5c6e, 0 };
+static const unichar_t str_fa3d[] = { 0x6094, 0 };
+static const unichar_t str_fa3e[] = { 0x6168, 0 };
+static const unichar_t str_fa3f[] = { 0x618e, 0 };
+static const unichar_t str_fa40[] = { 0x61f2, 0 };
+static const unichar_t str_fa41[] = { 0x654f, 0 };
+static const unichar_t str_fa42[] = { 0x65e2, 0 };
+static const unichar_t str_fa43[] = { 0x6691, 0 };
+static const unichar_t str_fa44[] = { 0x6885, 0 };
+static const unichar_t str_fa45[] = { 0x6d77, 0 };
+static const unichar_t str_fa46[] = { 0x6e1a, 0 };
+static const unichar_t str_fa47[] = { 0x6f22, 0 };
+static const unichar_t str_fa48[] = { 0x716e, 0 };
+static const unichar_t str_fa49[] = { 0x722b, 0 };
+static const unichar_t str_fa4a[] = { 0x7422, 0 };
+static const unichar_t str_fa4b[] = { 0x7891, 0 };
+static const unichar_t str_fa4c[] = { 0x793e, 0 };
+static const unichar_t str_fa4d[] = { 0x7949, 0 };
+static const unichar_t str_fa4e[] = { 0x7948, 0 };
+static const unichar_t str_fa4f[] = { 0x7950, 0 };
+static const unichar_t str_fa50[] = { 0x7956, 0 };
+static const unichar_t str_fa51[] = { 0x795d, 0 };
+static const unichar_t str_fa52[] = { 0x798d, 0 };
+static const unichar_t str_fa53[] = { 0x798e, 0 };
+static const unichar_t str_fa54[] = { 0x7a40, 0 };
+static const unichar_t str_fa55[] = { 0x7a81, 0 };
+static const unichar_t str_fa56[] = { 0x7bc0, 0 };
+static const unichar_t str_fa57[] = { 0x7df4, 0 };
+static const unichar_t str_fa58[] = { 0x7e09, 0 };
+static const unichar_t str_fa59[] = { 0x7e41, 0 };
+static const unichar_t str_fa5a[] = { 0x7f72, 0 };
+static const unichar_t str_fa5b[] = { 0x8005, 0 };
+static const unichar_t str_fa5c[] = { 0x81ed, 0 };
+static const unichar_t str_fa5d[] = { 0x8279, 0 };
+static const unichar_t str_fa5e[] = { 0x8279, 0 };
+static const unichar_t str_fa5f[] = { 0x8457, 0 };
+static const unichar_t str_fa60[] = { 0x8910, 0 };
+static const unichar_t str_fa61[] = { 0x8996, 0 };
+static const unichar_t str_fa62[] = { 0x8b01, 0 };
+static const unichar_t str_fa63[] = { 0x8b39, 0 };
+static const unichar_t str_fa64[] = { 0x8cd3, 0 };
+static const unichar_t str_fa65[] = { 0x8d08, 0 };
+static const unichar_t str_fa66[] = { 0x8fb6, 0 };
+static const unichar_t str_fa67[] = { 0x9038, 0 };
+static const unichar_t str_fa68[] = { 0x96e3, 0 };
+static const unichar_t str_fa69[] = { 0x97ff, 0 };
+static const unichar_t str_fa6a[] = { 0x983b, 0 };
+static const unichar_t str_fa6b[] = { 0x6075, 0 };
+static const unichar_t str_fa6c[] = { 0x242ee, 0 };
+static const unichar_t str_fa6d[] = { 0x8218, 0 };
+static const unichar_t str_fa70[] = { 0x4e26, 0 };
+static const unichar_t str_fa71[] = { 0x51b5, 0 };
+static const unichar_t str_fa72[] = { 0x5168, 0 };
+static const unichar_t str_fa73[] = { 0x4f80, 0 };
+static const unichar_t str_fa74[] = { 0x5145, 0 };
+static const unichar_t str_fa75[] = { 0x5180, 0 };
+static const unichar_t str_fa76[] = { 0x52c7, 0 };
+static const unichar_t str_fa77[] = { 0x52fa, 0 };
+static const unichar_t str_fa78[] = { 0x559d, 0 };
+static const unichar_t str_fa79[] = { 0x5555, 0 };
+static const unichar_t str_fa7a[] = { 0x5599, 0 };
+static const unichar_t str_fa7b[] = { 0x55e2, 0 };
+static const unichar_t str_fa7c[] = { 0x585a, 0 };
+static const unichar_t str_fa7d[] = { 0x58b3, 0 };
+static const unichar_t str_fa7e[] = { 0x5944, 0 };
+static const unichar_t str_fa7f[] = { 0x5954, 0 };
+static const unichar_t str_fa80[] = { 0x5a62, 0 };
+static const unichar_t str_fa81[] = { 0x5b28, 0 };
+static const unichar_t str_fa82[] = { 0x5ed2, 0 };
+static const unichar_t str_fa83[] = { 0x5ed9, 0 };
+static const unichar_t str_fa84[] = { 0x5f69, 0 };
+static const unichar_t str_fa85[] = { 0x5fad, 0 };
+static const unichar_t str_fa86[] = { 0x60d8, 0 };
+static const unichar_t str_fa87[] = { 0x614e, 0 };
+static const unichar_t str_fa88[] = { 0x6108, 0 };
+static const unichar_t str_fa89[] = { 0x618e, 0 };
+static const unichar_t str_fa8a[] = { 0x6160, 0 };
+static const unichar_t str_fa8b[] = { 0x61f2, 0 };
+static const unichar_t str_fa8c[] = { 0x6234, 0 };
+static const unichar_t str_fa8d[] = { 0x63c4, 0 };
+static const unichar_t str_fa8e[] = { 0x641c, 0 };
+static const unichar_t str_fa8f[] = { 0x6452, 0 };
+static const unichar_t str_fa90[] = { 0x6556, 0 };
+static const unichar_t str_fa91[] = { 0x6674, 0 };
+static const unichar_t str_fa92[] = { 0x6717, 0 };
+static const unichar_t str_fa93[] = { 0x671b, 0 };
+static const unichar_t str_fa94[] = { 0x6756, 0 };
+static const unichar_t str_fa95[] = { 0x6b79, 0 };
+static const unichar_t str_fa96[] = { 0x6bba, 0 };
+static const unichar_t str_fa97[] = { 0x6d41, 0 };
+static const unichar_t str_fa98[] = { 0x6edb, 0 };
+static const unichar_t str_fa99[] = { 0x6ecb, 0 };
+static const unichar_t str_fa9a[] = { 0x6f22, 0 };
+static const unichar_t str_fa9b[] = { 0x701e, 0 };
+static const unichar_t str_fa9c[] = { 0x716e, 0 };
+static const unichar_t str_fa9d[] = { 0x77a7, 0 };
+static const unichar_t str_fa9e[] = { 0x7235, 0 };
+static const unichar_t str_fa9f[] = { 0x72af, 0 };
+static const unichar_t str_faa0[] = { 0x732a, 0 };
+static const unichar_t str_faa1[] = { 0x7471, 0 };
+static const unichar_t str_faa2[] = { 0x7506, 0 };
+static const unichar_t str_faa3[] = { 0x753b, 0 };
+static const unichar_t str_faa4[] = { 0x761d, 0 };
+static const unichar_t str_faa5[] = { 0x761f, 0 };
+static const unichar_t str_faa6[] = { 0x76ca, 0 };
+static const unichar_t str_faa7[] = { 0x76db, 0 };
+static const unichar_t str_faa8[] = { 0x76f4, 0 };
+static const unichar_t str_faa9[] = { 0x774a, 0 };
+static const unichar_t str_faaa[] = { 0x7740, 0 };
+static const unichar_t str_faab[] = { 0x78cc, 0 };
+static const unichar_t str_faac[] = { 0x7ab1, 0 };
+static const unichar_t str_faad[] = { 0x7bc0, 0 };
+static const unichar_t str_faae[] = { 0x7c7b, 0 };
+static const unichar_t str_faaf[] = { 0x7d5b, 0 };
+static const unichar_t str_fab0[] = { 0x7df4, 0 };
+static const unichar_t str_fab1[] = { 0x7f3e, 0 };
+static const unichar_t str_fab2[] = { 0x8005, 0 };
+static const unichar_t str_fab3[] = { 0x8352, 0 };
+static const unichar_t str_fab4[] = { 0x83ef, 0 };
+static const unichar_t str_fab5[] = { 0x8779, 0 };
+static const unichar_t str_fab6[] = { 0x8941, 0 };
+static const unichar_t str_fab7[] = { 0x8986, 0 };
+static const unichar_t str_fab8[] = { 0x8996, 0 };
+static const unichar_t str_fab9[] = { 0x8abf, 0 };
+static const unichar_t str_faba[] = { 0x8af8, 0 };
+static const unichar_t str_fabb[] = { 0x8acb, 0 };
+static const unichar_t str_fabc[] = { 0x8b01, 0 };
+static const unichar_t str_fabd[] = { 0x8afe, 0 };
+static const unichar_t str_fabe[] = { 0x8aed, 0 };
+static const unichar_t str_fabf[] = { 0x8b39, 0 };
+static const unichar_t str_fac0[] = { 0x8b8a, 0 };
+static const unichar_t str_fac1[] = { 0x8d08, 0 };
+static const unichar_t str_fac2[] = { 0x8f38, 0 };
+static const unichar_t str_fac3[] = { 0x9072, 0 };
+static const unichar_t str_fac4[] = { 0x9199, 0 };
+static const unichar_t str_fac5[] = { 0x9276, 0 };
+static const unichar_t str_fac6[] = { 0x967c, 0 };
+static const unichar_t str_fac7[] = { 0x96e3, 0 };
+static const unichar_t str_fac8[] = { 0x9756, 0 };
+static const unichar_t str_fac9[] = { 0x97db, 0 };
+static const unichar_t str_faca[] = { 0x97ff, 0 };
+static const unichar_t str_facb[] = { 0x980b, 0 };
+static const unichar_t str_facc[] = { 0x983b, 0 };
+static const unichar_t str_facd[] = { 0x9b12, 0 };
+static const unichar_t str_face[] = { 0x9f9c, 0 };
+static const unichar_t str_facf[] = { 0x2284a, 0 };
+static const unichar_t str_fad0[] = { 0x22844, 0 };
+static const unichar_t str_fad1[] = { 0x233d5, 0 };
+static const unichar_t str_fad2[] = { 0x3b9d, 0 };
+static const unichar_t str_fad3[] = { 0x4018, 0 };
+static const unichar_t str_fad4[] = { 0x4039, 0 };
+static const unichar_t str_fad5[] = { 0x25249, 0 };
+static const unichar_t str_fad6[] = { 0x25cd0, 0 };
+static const unichar_t str_fad7[] = { 0x27ed3, 0 };
+static const unichar_t str_fad8[] = { 0x9f43, 0 };
+static const unichar_t str_fad9[] = { 0x9f8e, 0 };
+static const unichar_t str_fb00[] = { 0x0066, 0x0066, 0 };
+static const unichar_t str_fb01[] = { 0x0066, 0x0069, 0 };
+static const unichar_t str_fb02[] = { 0x0066, 0x006c, 0 };
+static const unichar_t str_fb03[] = { 0x0066, 0x0066, 0x0069, 0 };
+static const unichar_t str_fb04[] = { 0x0066, 0x0066, 0x006c, 0 };
+static const unichar_t str_fb05[] = { 0x017f, 0x0074, 0 };
+static const unichar_t str_fb06[] = { 0x0073, 0x0074, 0 };
+static const unichar_t str_fb13[] = { 0x0574, 0x0576, 0 };
+static const unichar_t str_fb14[] = { 0x0574, 0x0565, 0 };
+static const unichar_t str_fb15[] = { 0x0574, 0x056b, 0 };
+static const unichar_t str_fb16[] = { 0x057e, 0x0576, 0 };
+static const unichar_t str_fb17[] = { 0x0574, 0x056d, 0 };
+static const unichar_t str_fb1d[] = { 0x05d9, 0x05b4, 0 };
+static const unichar_t str_fb1f[] = { 0x05f2, 0x05b7, 0 };
+static const unichar_t str_fb20[] = { 0x05e2, 0 };
+static const unichar_t str_fb21[] = { 0x05d0, 0 };
+static const unichar_t str_fb22[] = { 0x05d3, 0 };
+static const unichar_t str_fb23[] = { 0x05d4, 0 };
+static const unichar_t str_fb24[] = { 0x05db, 0 };
+static const unichar_t str_fb25[] = { 0x05dc, 0 };
+static const unichar_t str_fb26[] = { 0x05dd, 0 };
+static const unichar_t str_fb27[] = { 0x05e8, 0 };
+static const unichar_t str_fb28[] = { 0x05ea, 0 };
+static const unichar_t str_fb29[] = { 0x002b, 0 };
+static const unichar_t str_fb2a[] = { 0x05e9, 0x05c1, 0 };
+static const unichar_t str_fb2b[] = { 0x05e9, 0x05c2, 0 };
+static const unichar_t str_fb2c[] = { 0xfb49, 0x05c1, 0 };
+static const unichar_t str_fb2d[] = { 0xfb49, 0x05c2, 0 };
+static const unichar_t str_fb2e[] = { 0x05d0, 0x05b7, 0 };
+static const unichar_t str_fb2f[] = { 0x05d0, 0x05b8, 0 };
+static const unichar_t str_fb30[] = { 0x05d0, 0x05bc, 0 };
+static const unichar_t str_fb31[] = { 0x05d1, 0x05bc, 0 };
+static const unichar_t str_fb32[] = { 0x05d2, 0x05bc, 0 };
+static const unichar_t str_fb33[] = { 0x05d3, 0x05bc, 0 };
+static const unichar_t str_fb34[] = { 0x05d4, 0x05bc, 0 };
+static const unichar_t str_fb35[] = { 0x05d5, 0x05bc, 0 };
+static const unichar_t str_fb36[] = { 0x05d6, 0x05bc, 0 };
+static const unichar_t str_fb38[] = { 0x05d8, 0x05bc, 0 };
+static const unichar_t str_fb39[] = { 0x05d9, 0x05bc, 0 };
+static const unichar_t str_fb3a[] = { 0x05da, 0x05bc, 0 };
+static const unichar_t str_fb3b[] = { 0x05db, 0x05bc, 0 };
+static const unichar_t str_fb3c[] = { 0x05dc, 0x05bc, 0 };
+static const unichar_t str_fb3e[] = { 0x05de, 0x05bc, 0 };
+static const unichar_t str_fb40[] = { 0x05e0, 0x05bc, 0 };
+static const unichar_t str_fb41[] = { 0x05e1, 0x05bc, 0 };
+static const unichar_t str_fb43[] = { 0x05e3, 0x05bc, 0 };
+static const unichar_t str_fb44[] = { 0x05e4, 0x05bc, 0 };
+static const unichar_t str_fb46[] = { 0x05e6, 0x05bc, 0 };
+static const unichar_t str_fb47[] = { 0x05e7, 0x05bc, 0 };
+static const unichar_t str_fb48[] = { 0x05e8, 0x05bc, 0 };
+static const unichar_t str_fb49[] = { 0x05e9, 0x05bc, 0 };
+static const unichar_t str_fb4a[] = { 0x05ea, 0x05bc, 0 };
+static const unichar_t str_fb4b[] = { 0x05d5, 0x05b9, 0 };
+static const unichar_t str_fb4c[] = { 0x05d1, 0x05bf, 0 };
+static const unichar_t str_fb4d[] = { 0x05db, 0x05bf, 0 };
+static const unichar_t str_fb4e[] = { 0x05e4, 0x05bf, 0 };
+static const unichar_t str_fb4f[] = { 0x05d0, 0x05dc, 0 };
+static const unichar_t str_fb50[] = { 0x0671, 0 };
+static const unichar_t str_fb51[] = { 0x0671, 0 };
+static const unichar_t str_fb52[] = { 0x067b, 0 };
+static const unichar_t str_fb53[] = { 0x067b, 0 };
+static const unichar_t str_fb54[] = { 0x067b, 0 };
+static const unichar_t str_fb55[] = { 0x067b, 0 };
+static const unichar_t str_fb56[] = { 0x067e, 0 };
+static const unichar_t str_fb57[] = { 0x067e, 0 };
+static const unichar_t str_fb58[] = { 0x067e, 0 };
+static const unichar_t str_fb59[] = { 0x067e, 0 };
+static const unichar_t str_fb5a[] = { 0x0680, 0 };
+static const unichar_t str_fb5b[] = { 0x0680, 0 };
+static const unichar_t str_fb5c[] = { 0x0680, 0 };
+static const unichar_t str_fb5d[] = { 0x0680, 0 };
+static const unichar_t str_fb5e[] = { 0x067a, 0 };
+static const unichar_t str_fb5f[] = { 0x067a, 0 };
+static const unichar_t str_fb60[] = { 0x067a, 0 };
+static const unichar_t str_fb61[] = { 0x067a, 0 };
+static const unichar_t str_fb62[] = { 0x067f, 0 };
+static const unichar_t str_fb63[] = { 0x067f, 0 };
+static const unichar_t str_fb64[] = { 0x067f, 0 };
+static const unichar_t str_fb65[] = { 0x067f, 0 };
+static const unichar_t str_fb66[] = { 0x0679, 0 };
+static const unichar_t str_fb67[] = { 0x0679, 0 };
+static const unichar_t str_fb68[] = { 0x0679, 0 };
+static const unichar_t str_fb69[] = { 0x0679, 0 };
+static const unichar_t str_fb6a[] = { 0x06a4, 0 };
+static const unichar_t str_fb6b[] = { 0x06a4, 0 };
+static const unichar_t str_fb6c[] = { 0x06a4, 0 };
+static const unichar_t str_fb6d[] = { 0x06a4, 0 };
+static const unichar_t str_fb6e[] = { 0x06a6, 0 };
+static const unichar_t str_fb6f[] = { 0x06a6, 0 };
+static const unichar_t str_fb70[] = { 0x06a6, 0 };
+static const unichar_t str_fb71[] = { 0x06a6, 0 };
+static const unichar_t str_fb72[] = { 0x0684, 0 };
+static const unichar_t str_fb73[] = { 0x0684, 0 };
+static const unichar_t str_fb74[] = { 0x0684, 0 };
+static const unichar_t str_fb75[] = { 0x0684, 0 };
+static const unichar_t str_fb76[] = { 0x0683, 0 };
+static const unichar_t str_fb77[] = { 0x0683, 0 };
+static const unichar_t str_fb78[] = { 0x0683, 0 };
+static const unichar_t str_fb79[] = { 0x0683, 0 };
+static const unichar_t str_fb7a[] = { 0x0686, 0 };
+static const unichar_t str_fb7b[] = { 0x0686, 0 };
+static const unichar_t str_fb7c[] = { 0x0686, 0 };
+static const unichar_t str_fb7d[] = { 0x0686, 0 };
+static const unichar_t str_fb7e[] = { 0x0687, 0 };
+static const unichar_t str_fb7f[] = { 0x0687, 0 };
+static const unichar_t str_fb80[] = { 0x0687, 0 };
+static const unichar_t str_fb81[] = { 0x0687, 0 };
+static const unichar_t str_fb82[] = { 0x068d, 0 };
+static const unichar_t str_fb83[] = { 0x068d, 0 };
+static const unichar_t str_fb84[] = { 0x068c, 0 };
+static const unichar_t str_fb85[] = { 0x068c, 0 };
+static const unichar_t str_fb86[] = { 0x068e, 0 };
+static const unichar_t str_fb87[] = { 0x068e, 0 };
+static const unichar_t str_fb88[] = { 0x0688, 0 };
+static const unichar_t str_fb89[] = { 0x0688, 0 };
+static const unichar_t str_fb8a[] = { 0x0698, 0 };
+static const unichar_t str_fb8b[] = { 0x0698, 0 };
+static const unichar_t str_fb8c[] = { 0x0691, 0 };
+static const unichar_t str_fb8d[] = { 0x0691, 0 };
+static const unichar_t str_fb8e[] = { 0x06a9, 0 };
+static const unichar_t str_fb8f[] = { 0x06a9, 0 };
+static const unichar_t str_fb90[] = { 0x06a9, 0 };
+static const unichar_t str_fb91[] = { 0x06a9, 0 };
+static const unichar_t str_fb92[] = { 0x06af, 0 };
+static const unichar_t str_fb93[] = { 0x06af, 0 };
+static const unichar_t str_fb94[] = { 0x06af, 0 };
+static const unichar_t str_fb95[] = { 0x06af, 0 };
+static const unichar_t str_fb96[] = { 0x06b3, 0 };
+static const unichar_t str_fb97[] = { 0x06b3, 0 };
+static const unichar_t str_fb98[] = { 0x06b3, 0 };
+static const unichar_t str_fb99[] = { 0x06b3, 0 };
+static const unichar_t str_fb9a[] = { 0x06b1, 0 };
+static const unichar_t str_fb9b[] = { 0x06b1, 0 };
+static const unichar_t str_fb9c[] = { 0x06b1, 0 };
+static const unichar_t str_fb9d[] = { 0x06b1, 0 };
+static const unichar_t str_fb9e[] = { 0x06ba, 0 };
+static const unichar_t str_fb9f[] = { 0x06ba, 0 };
+static const unichar_t str_fba0[] = { 0x06bb, 0 };
+static const unichar_t str_fba1[] = { 0x06bb, 0 };
+static const unichar_t str_fba2[] = { 0x06bb, 0 };
+static const unichar_t str_fba3[] = { 0x06bb, 0 };
+static const unichar_t str_fba4[] = { 0x06c0, 0 };
+static const unichar_t str_fba5[] = { 0x06c0, 0 };
+static const unichar_t str_fba6[] = { 0x06c1, 0 };
+static const unichar_t str_fba7[] = { 0x06c1, 0 };
+static const unichar_t str_fba8[] = { 0x06c1, 0 };
+static const unichar_t str_fba9[] = { 0x06c1, 0 };
+static const unichar_t str_fbaa[] = { 0x06be, 0 };
+static const unichar_t str_fbab[] = { 0x06be, 0 };
+static const unichar_t str_fbac[] = { 0x06be, 0 };
+static const unichar_t str_fbad[] = { 0x06be, 0 };
+static const unichar_t str_fbae[] = { 0x06d2, 0 };
+static const unichar_t str_fbaf[] = { 0x06d2, 0 };
+static const unichar_t str_fbb0[] = { 0x06d3, 0 };
+static const unichar_t str_fbb1[] = { 0x06d3, 0 };
+static const unichar_t str_fbd3[] = { 0x06ad, 0 };
+static const unichar_t str_fbd4[] = { 0x06ad, 0 };
+static const unichar_t str_fbd5[] = { 0x06ad, 0 };
+static const unichar_t str_fbd6[] = { 0x06ad, 0 };
+static const unichar_t str_fbd7[] = { 0x06c7, 0 };
+static const unichar_t str_fbd8[] = { 0x06c7, 0 };
+static const unichar_t str_fbd9[] = { 0x06c6, 0 };
+static const unichar_t str_fbda[] = { 0x06c6, 0 };
+static const unichar_t str_fbdb[] = { 0x06c8, 0 };
+static const unichar_t str_fbdc[] = { 0x06c8, 0 };
+static const unichar_t str_fbdd[] = { 0x0677, 0 };
+static const unichar_t str_fbde[] = { 0x06cb, 0 };
+static const unichar_t str_fbdf[] = { 0x06cb, 0 };
+static const unichar_t str_fbe0[] = { 0x06c5, 0 };
+static const unichar_t str_fbe1[] = { 0x06c5, 0 };
+static const unichar_t str_fbe2[] = { 0x06c9, 0 };
+static const unichar_t str_fbe3[] = { 0x06c9, 0 };
+static const unichar_t str_fbe4[] = { 0x06d0, 0 };
+static const unichar_t str_fbe5[] = { 0x06d0, 0 };
+static const unichar_t str_fbe6[] = { 0x06d0, 0 };
+static const unichar_t str_fbe7[] = { 0x06d0, 0 };
+static const unichar_t str_fbe8[] = { 0x0649, 0 };
+static const unichar_t str_fbe9[] = { 0x0649, 0 };
+static const unichar_t str_fbea[] = { 0x0626, 0x0627, 0 };
+static const unichar_t str_fbeb[] = { 0x0626, 0x0627, 0 };
+static const unichar_t str_fbec[] = { 0x0626, 0x06d5, 0 };
+static const unichar_t str_fbed[] = { 0x0626, 0x06d5, 0 };
+static const unichar_t str_fbee[] = { 0x0626, 0x0648, 0 };
+static const unichar_t str_fbef[] = { 0x0626, 0x0648, 0 };
+static const unichar_t str_fbf0[] = { 0x0626, 0x06c7, 0 };
+static const unichar_t str_fbf1[] = { 0x0626, 0x06c7, 0 };
+static const unichar_t str_fbf2[] = { 0x0626, 0x06c6, 0 };
+static const unichar_t str_fbf3[] = { 0x0626, 0x06c6, 0 };
+static const unichar_t str_fbf4[] = { 0x0626, 0x06c8, 0 };
+static const unichar_t str_fbf5[] = { 0x0626, 0x06c8, 0 };
+static const unichar_t str_fbf6[] = { 0x0626, 0x06d0, 0 };
+static const unichar_t str_fbf7[] = { 0x0626, 0x06d0, 0 };
+static const unichar_t str_fbf8[] = { 0x0626, 0x06d0, 0 };
+static const unichar_t str_fbf9[] = { 0x0626, 0x0649, 0 };
+static const unichar_t str_fbfa[] = { 0x0626, 0x0649, 0 };
+static const unichar_t str_fbfb[] = { 0x0626, 0x0649, 0 };
+static const unichar_t str_fbfc[] = { 0x06cc, 0 };
+static const unichar_t str_fbfd[] = { 0x06cc, 0 };
+static const unichar_t str_fbfe[] = { 0x06cc, 0 };
+static const unichar_t str_fbff[] = { 0x06cc, 0 };
+static const unichar_t str_fc00[] = { 0x0626, 0x062c, 0 };
+static const unichar_t str_fc01[] = { 0x0626, 0x062d, 0 };
+static const unichar_t str_fc02[] = { 0x0626, 0x0645, 0 };
+static const unichar_t str_fc03[] = { 0x0626, 0x0649, 0 };
+static const unichar_t str_fc04[] = { 0x0626, 0x064a, 0 };
+static const unichar_t str_fc05[] = { 0x0628, 0x062c, 0 };
+static const unichar_t str_fc06[] = { 0x0628, 0x062d, 0 };
+static const unichar_t str_fc07[] = { 0x0628, 0x062e, 0 };
+static const unichar_t str_fc08[] = { 0x0628, 0x0645, 0 };
+static const unichar_t str_fc09[] = { 0x0628, 0x0649, 0 };
+static const unichar_t str_fc0a[] = { 0x0628, 0x064a, 0 };
+static const unichar_t str_fc0b[] = { 0x062a, 0x062c, 0 };
+static const unichar_t str_fc0c[] = { 0x062a, 0x062d, 0 };
+static const unichar_t str_fc0d[] = { 0x062a, 0x062e, 0 };
+static const unichar_t str_fc0e[] = { 0x062a, 0x0645, 0 };
+static const unichar_t str_fc0f[] = { 0x062a, 0x0649, 0 };
+static const unichar_t str_fc10[] = { 0x062a, 0x064a, 0 };
+static const unichar_t str_fc11[] = { 0x062b, 0x062c, 0 };
+static const unichar_t str_fc12[] = { 0x062b, 0x0645, 0 };
+static const unichar_t str_fc13[] = { 0x062b, 0x0649, 0 };
+static const unichar_t str_fc14[] = { 0x062b, 0x064a, 0 };
+static const unichar_t str_fc15[] = { 0x062c, 0x062d, 0 };
+static const unichar_t str_fc16[] = { 0x062c, 0x0645, 0 };
+static const unichar_t str_fc17[] = { 0x062d, 0x062c, 0 };
+static const unichar_t str_fc18[] = { 0x062d, 0x0645, 0 };
+static const unichar_t str_fc19[] = { 0x062e, 0x062c, 0 };
+static const unichar_t str_fc1a[] = { 0x062e, 0x062d, 0 };
+static const unichar_t str_fc1b[] = { 0x062e, 0x0645, 0 };
+static const unichar_t str_fc1c[] = { 0x0633, 0x062c, 0 };
+static const unichar_t str_fc1d[] = { 0x0633, 0x062d, 0 };
+static const unichar_t str_fc1e[] = { 0x0633, 0x062e, 0 };
+static const unichar_t str_fc1f[] = { 0x0633, 0x0645, 0 };
+static const unichar_t str_fc20[] = { 0x0635, 0x062d, 0 };
+static const unichar_t str_fc21[] = { 0x0635, 0x0645, 0 };
+static const unichar_t str_fc22[] = { 0x0636, 0x062c, 0 };
+static const unichar_t str_fc23[] = { 0x0636, 0x062d, 0 };
+static const unichar_t str_fc24[] = { 0x0636, 0x062e, 0 };
+static const unichar_t str_fc25[] = { 0x0636, 0x0645, 0 };
+static const unichar_t str_fc26[] = { 0x0637, 0x062d, 0 };
+static const unichar_t str_fc27[] = { 0x0637, 0x0645, 0 };
+static const unichar_t str_fc28[] = { 0x0638, 0x0645, 0 };
+static const unichar_t str_fc29[] = { 0x0639, 0x062c, 0 };
+static const unichar_t str_fc2a[] = { 0x0639, 0x0645, 0 };
+static const unichar_t str_fc2b[] = { 0x063a, 0x062c, 0 };
+static const unichar_t str_fc2c[] = { 0x063a, 0x0645, 0 };
+static const unichar_t str_fc2d[] = { 0x0641, 0x062c, 0 };
+static const unichar_t str_fc2e[] = { 0x0641, 0x062d, 0 };
+static const unichar_t str_fc2f[] = { 0x0641, 0x062e, 0 };
+static const unichar_t str_fc30[] = { 0x0641, 0x0645, 0 };
+static const unichar_t str_fc31[] = { 0x0641, 0x0649, 0 };
+static const unichar_t str_fc32[] = { 0x0641, 0x064a, 0 };
+static const unichar_t str_fc33[] = { 0x0642, 0x062d, 0 };
+static const unichar_t str_fc34[] = { 0x0642, 0x0645, 0 };
+static const unichar_t str_fc35[] = { 0x0642, 0x0649, 0 };
+static const unichar_t str_fc36[] = { 0x0642, 0x064a, 0 };
+static const unichar_t str_fc37[] = { 0x0643, 0x0627, 0 };
+static const unichar_t str_fc38[] = { 0x0643, 0x062c, 0 };
+static const unichar_t str_fc39[] = { 0x0643, 0x062d, 0 };
+static const unichar_t str_fc3a[] = { 0x0643, 0x062e, 0 };
+static const unichar_t str_fc3b[] = { 0x0643, 0x0644, 0 };
+static const unichar_t str_fc3c[] = { 0x0643, 0x0645, 0 };
+static const unichar_t str_fc3d[] = { 0x0643, 0x0649, 0 };
+static const unichar_t str_fc3e[] = { 0x0643, 0x064a, 0 };
+static const unichar_t str_fc3f[] = { 0x0644, 0x062c, 0 };
+static const unichar_t str_fc40[] = { 0x0644, 0x062d, 0 };
+static const unichar_t str_fc41[] = { 0x0644, 0x062e, 0 };
+static const unichar_t str_fc42[] = { 0x0644, 0x0645, 0 };
+static const unichar_t str_fc43[] = { 0x0644, 0x0649, 0 };
+static const unichar_t str_fc44[] = { 0x0644, 0x064a, 0 };
+static const unichar_t str_fc45[] = { 0x0645, 0x062c, 0 };
+static const unichar_t str_fc46[] = { 0x0645, 0x062d, 0 };
+static const unichar_t str_fc47[] = { 0x0645, 0x062e, 0 };
+static const unichar_t str_fc48[] = { 0x0645, 0x0645, 0 };
+static const unichar_t str_fc49[] = { 0x0645, 0x0649, 0 };
+static const unichar_t str_fc4a[] = { 0x0645, 0x064a, 0 };
+static const unichar_t str_fc4b[] = { 0x0646, 0x062c, 0 };
+static const unichar_t str_fc4c[] = { 0x0646, 0x062d, 0 };
+static const unichar_t str_fc4d[] = { 0x0646, 0x062e, 0 };
+static const unichar_t str_fc4e[] = { 0x0646, 0x0645, 0 };
+static const unichar_t str_fc4f[] = { 0x0646, 0x0649, 0 };
+static const unichar_t str_fc50[] = { 0x0646, 0x064a, 0 };
+static const unichar_t str_fc51[] = { 0x0647, 0x062c, 0 };
+static const unichar_t str_fc52[] = { 0x0647, 0x0645, 0 };
+static const unichar_t str_fc53[] = { 0x0647, 0x0649, 0 };
+static const unichar_t str_fc54[] = { 0x0647, 0x064a, 0 };
+static const unichar_t str_fc55[] = { 0x064a, 0x062c, 0 };
+static const unichar_t str_fc56[] = { 0x064a, 0x062d, 0 };
+static const unichar_t str_fc57[] = { 0x064a, 0x062e, 0 };
+static const unichar_t str_fc58[] = { 0x064a, 0x0645, 0 };
+static const unichar_t str_fc59[] = { 0x064a, 0x0649, 0 };
+static const unichar_t str_fc5a[] = { 0x064a, 0x064a, 0 };
+static const unichar_t str_fc5b[] = { 0x0630, 0x0670, 0 };
+static const unichar_t str_fc5c[] = { 0x0631, 0x0670, 0 };
+static const unichar_t str_fc5d[] = { 0x0649, 0x0670, 0 };
+static const unichar_t str_fc5e[] = { 0x0020, 0x064c, 0x0651, 0 };
+static const unichar_t str_fc5f[] = { 0x0020, 0x064d, 0x0651, 0 };
+static const unichar_t str_fc60[] = { 0x0020, 0x064e, 0x0651, 0 };
+static const unichar_t str_fc61[] = { 0x0020, 0x064f, 0x0651, 0 };
+static const unichar_t str_fc62[] = { 0x0020, 0x0650, 0x0651, 0 };
+static const unichar_t str_fc63[] = { 0x0020, 0x0651, 0x0670, 0 };
+static const unichar_t str_fc64[] = { 0x0626, 0x0631, 0 };
+static const unichar_t str_fc65[] = { 0x0626, 0x0632, 0 };
+static const unichar_t str_fc66[] = { 0x0626, 0x0645, 0 };
+static const unichar_t str_fc67[] = { 0x0626, 0x0646, 0 };
+static const unichar_t str_fc68[] = { 0x0626, 0x0649, 0 };
+static const unichar_t str_fc69[] = { 0x0626, 0x064a, 0 };
+static const unichar_t str_fc6a[] = { 0x0628, 0x0631, 0 };
+static const unichar_t str_fc6b[] = { 0x0628, 0x0632, 0 };
+static const unichar_t str_fc6c[] = { 0x0628, 0x0645, 0 };
+static const unichar_t str_fc6d[] = { 0x0628, 0x0646, 0 };
+static const unichar_t str_fc6e[] = { 0x0628, 0x0649, 0 };
+static const unichar_t str_fc6f[] = { 0x0628, 0x064a, 0 };
+static const unichar_t str_fc70[] = { 0x062a, 0x0631, 0 };
+static const unichar_t str_fc71[] = { 0x062a, 0x0632, 0 };
+static const unichar_t str_fc72[] = { 0x062a, 0x0645, 0 };
+static const unichar_t str_fc73[] = { 0x062a, 0x0646, 0 };
+static const unichar_t str_fc74[] = { 0x062a, 0x0649, 0 };
+static const unichar_t str_fc75[] = { 0x062a, 0x064a, 0 };
+static const unichar_t str_fc76[] = { 0x062b, 0x0631, 0 };
+static const unichar_t str_fc77[] = { 0x062b, 0x0632, 0 };
+static const unichar_t str_fc78[] = { 0x062b, 0x0645, 0 };
+static const unichar_t str_fc79[] = { 0x062b, 0x0646, 0 };
+static const unichar_t str_fc7a[] = { 0x062b, 0x0649, 0 };
+static const unichar_t str_fc7b[] = { 0x062b, 0x064a, 0 };
+static const unichar_t str_fc7c[] = { 0x0641, 0x0649, 0 };
+static const unichar_t str_fc7d[] = { 0x0641, 0x064a, 0 };
+static const unichar_t str_fc7e[] = { 0x0642, 0x0649, 0 };
+static const unichar_t str_fc7f[] = { 0x0642, 0x064a, 0 };
+static const unichar_t str_fc80[] = { 0x0643, 0x0627, 0 };
+static const unichar_t str_fc81[] = { 0x0643, 0x0644, 0 };
+static const unichar_t str_fc82[] = { 0x0643, 0x0645, 0 };
+static const unichar_t str_fc83[] = { 0x0643, 0x0649, 0 };
+static const unichar_t str_fc84[] = { 0x0643, 0x064a, 0 };
+static const unichar_t str_fc85[] = { 0x0644, 0x0645, 0 };
+static const unichar_t str_fc86[] = { 0x0644, 0x0649, 0 };
+static const unichar_t str_fc87[] = { 0x0644, 0x064a, 0 };
+static const unichar_t str_fc88[] = { 0x0645, 0x0627, 0 };
+static const unichar_t str_fc89[] = { 0x0645, 0x0645, 0 };
+static const unichar_t str_fc8a[] = { 0x0646, 0x0631, 0 };
+static const unichar_t str_fc8b[] = { 0x0646, 0x0632, 0 };
+static const unichar_t str_fc8c[] = { 0x0646, 0x0645, 0 };
+static const unichar_t str_fc8d[] = { 0x0646, 0x0646, 0 };
+static const unichar_t str_fc8e[] = { 0x0646, 0x0649, 0 };
+static const unichar_t str_fc8f[] = { 0x0646, 0x064a, 0 };
+static const unichar_t str_fc90[] = { 0x0649, 0x0670, 0 };
+static const unichar_t str_fc91[] = { 0x064a, 0x0631, 0 };
+static const unichar_t str_fc92[] = { 0x064a, 0x0632, 0 };
+static const unichar_t str_fc93[] = { 0x064a, 0x0645, 0 };
+static const unichar_t str_fc94[] = { 0x064a, 0x0646, 0 };
+static const unichar_t str_fc95[] = { 0x064a, 0x0649, 0 };
+static const unichar_t str_fc96[] = { 0x064a, 0x064a, 0 };
+static const unichar_t str_fc97[] = { 0x0626, 0x062c, 0 };
+static const unichar_t str_fc98[] = { 0x0626, 0x062d, 0 };
+static const unichar_t str_fc99[] = { 0x0626, 0x062e, 0 };
+static const unichar_t str_fc9a[] = { 0x0626, 0x0645, 0 };
+static const unichar_t str_fc9b[] = { 0x0626, 0x0647, 0 };
+static const unichar_t str_fc9c[] = { 0x0628, 0x062c, 0 };
+static const unichar_t str_fc9d[] = { 0x0628, 0x062d, 0 };
+static const unichar_t str_fc9e[] = { 0x0628, 0x062e, 0 };
+static const unichar_t str_fc9f[] = { 0x0628, 0x0645, 0 };
+static const unichar_t str_fca0[] = { 0x0628, 0x0647, 0 };
+static const unichar_t str_fca1[] = { 0x062a, 0x062c, 0 };
+static const unichar_t str_fca2[] = { 0x062a, 0x062d, 0 };
+static const unichar_t str_fca3[] = { 0x062a, 0x062e, 0 };
+static const unichar_t str_fca4[] = { 0x062a, 0x0645, 0 };
+static const unichar_t str_fca5[] = { 0x062a, 0x0647, 0 };
+static const unichar_t str_fca6[] = { 0x062b, 0x0645, 0 };
+static const unichar_t str_fca7[] = { 0x062c, 0x062d, 0 };
+static const unichar_t str_fca8[] = { 0x062c, 0x0645, 0 };
+static const unichar_t str_fca9[] = { 0x062d, 0x062c, 0 };
+static const unichar_t str_fcaa[] = { 0x062d, 0x0645, 0 };
+static const unichar_t str_fcab[] = { 0x062e, 0x062c, 0 };
+static const unichar_t str_fcac[] = { 0x062e, 0x0645, 0 };
+static const unichar_t str_fcad[] = { 0x0633, 0x062c, 0 };
+static const unichar_t str_fcae[] = { 0x0633, 0x062d, 0 };
+static const unichar_t str_fcaf[] = { 0x0633, 0x062e, 0 };
+static const unichar_t str_fcb0[] = { 0x0633, 0x0645, 0 };
+static const unichar_t str_fcb1[] = { 0x0635, 0x062d, 0 };
+static const unichar_t str_fcb2[] = { 0x0635, 0x062e, 0 };
+static const unichar_t str_fcb3[] = { 0x0635, 0x0645, 0 };
+static const unichar_t str_fcb4[] = { 0x0636, 0x062c, 0 };
+static const unichar_t str_fcb5[] = { 0x0636, 0x062d, 0 };
+static const unichar_t str_fcb6[] = { 0x0636, 0x062e, 0 };
+static const unichar_t str_fcb7[] = { 0x0636, 0x0645, 0 };
+static const unichar_t str_fcb8[] = { 0x0637, 0x062d, 0 };
+static const unichar_t str_fcb9[] = { 0x0638, 0x0645, 0 };
+static const unichar_t str_fcba[] = { 0x0639, 0x062c, 0 };
+static const unichar_t str_fcbb[] = { 0x0639, 0x0645, 0 };
+static const unichar_t str_fcbc[] = { 0x063a, 0x062c, 0 };
+static const unichar_t str_fcbd[] = { 0x063a, 0x0645, 0 };
+static const unichar_t str_fcbe[] = { 0x0641, 0x062c, 0 };
+static const unichar_t str_fcbf[] = { 0x0641, 0x062d, 0 };
+static const unichar_t str_fcc0[] = { 0x0641, 0x062e, 0 };
+static const unichar_t str_fcc1[] = { 0x0641, 0x0645, 0 };
+static const unichar_t str_fcc2[] = { 0x0642, 0x062d, 0 };
+static const unichar_t str_fcc3[] = { 0x0642, 0x0645, 0 };
+static const unichar_t str_fcc4[] = { 0x0643, 0x062c, 0 };
+static const unichar_t str_fcc5[] = { 0x0643, 0x062d, 0 };
+static const unichar_t str_fcc6[] = { 0x0643, 0x062e, 0 };
+static const unichar_t str_fcc7[] = { 0x0643, 0x0644, 0 };
+static const unichar_t str_fcc8[] = { 0x0643, 0x0645, 0 };
+static const unichar_t str_fcc9[] = { 0x0644, 0x062c, 0 };
+static const unichar_t str_fcca[] = { 0x0644, 0x062d, 0 };
+static const unichar_t str_fccb[] = { 0x0644, 0x062e, 0 };
+static const unichar_t str_fccc[] = { 0x0644, 0x0645, 0 };
+static const unichar_t str_fccd[] = { 0x0644, 0x0647, 0 };
+static const unichar_t str_fcce[] = { 0x0645, 0x062c, 0 };
+static const unichar_t str_fccf[] = { 0x0645, 0x062d, 0 };
+static const unichar_t str_fcd0[] = { 0x0645, 0x062e, 0 };
+static const unichar_t str_fcd1[] = { 0x0645, 0x0645, 0 };
+static const unichar_t str_fcd2[] = { 0x0646, 0x062c, 0 };
+static const unichar_t str_fcd3[] = { 0x0646, 0x062d, 0 };
+static const unichar_t str_fcd4[] = { 0x0646, 0x062e, 0 };
+static const unichar_t str_fcd5[] = { 0x0646, 0x0645, 0 };
+static const unichar_t str_fcd6[] = { 0x0646, 0x0647, 0 };
+static const unichar_t str_fcd7[] = { 0x0647, 0x062c, 0 };
+static const unichar_t str_fcd8[] = { 0x0647, 0x0645, 0 };
+static const unichar_t str_fcd9[] = { 0x0647, 0x0670, 0 };
+static const unichar_t str_fcda[] = { 0x064a, 0x062c, 0 };
+static const unichar_t str_fcdb[] = { 0x064a, 0x062d, 0 };
+static const unichar_t str_fcdc[] = { 0x064a, 0x062e, 0 };
+static const unichar_t str_fcdd[] = { 0x064a, 0x0645, 0 };
+static const unichar_t str_fcde[] = { 0x064a, 0x0647, 0 };
+static const unichar_t str_fcdf[] = { 0x0626, 0x0645, 0 };
+static const unichar_t str_fce0[] = { 0x0626, 0x0647, 0 };
+static const unichar_t str_fce1[] = { 0x0628, 0x0645, 0 };
+static const unichar_t str_fce2[] = { 0x0628, 0x0647, 0 };
+static const unichar_t str_fce3[] = { 0x062a, 0x0645, 0 };
+static const unichar_t str_fce4[] = { 0x062a, 0x0647, 0 };
+static const unichar_t str_fce5[] = { 0x062b, 0x0645, 0 };
+static const unichar_t str_fce6[] = { 0x062b, 0x0647, 0 };
+static const unichar_t str_fce7[] = { 0x0633, 0x0645, 0 };
+static const unichar_t str_fce8[] = { 0x0633, 0x0647, 0 };
+static const unichar_t str_fce9[] = { 0x0634, 0x0645, 0 };
+static const unichar_t str_fcea[] = { 0x0634, 0x0647, 0 };
+static const unichar_t str_fceb[] = { 0x0643, 0x0644, 0 };
+static const unichar_t str_fcec[] = { 0x0643, 0x0645, 0 };
+static const unichar_t str_fced[] = { 0x0644, 0x0645, 0 };
+static const unichar_t str_fcee[] = { 0x0646, 0x0645, 0 };
+static const unichar_t str_fcef[] = { 0x0646, 0x0647, 0 };
+static const unichar_t str_fcf0[] = { 0x064a, 0x0645, 0 };
+static const unichar_t str_fcf1[] = { 0x064a, 0x0647, 0 };
+static const unichar_t str_fcf2[] = { 0x0640, 0x064e, 0x0651, 0 };
+static const unichar_t str_fcf3[] = { 0x0640, 0x064f, 0x0651, 0 };
+static const unichar_t str_fcf4[] = { 0x0640, 0x0650, 0x0651, 0 };
+static const unichar_t str_fcf5[] = { 0x0637, 0x0649, 0 };
+static const unichar_t str_fcf6[] = { 0x0637, 0x064a, 0 };
+static const unichar_t str_fcf7[] = { 0x0639, 0x0649, 0 };
+static const unichar_t str_fcf8[] = { 0x0639, 0x064a, 0 };
+static const unichar_t str_fcf9[] = { 0x063a, 0x0649, 0 };
+static const unichar_t str_fcfa[] = { 0x063a, 0x064a, 0 };
+static const unichar_t str_fcfb[] = { 0x0633, 0x0649, 0 };
+static const unichar_t str_fcfc[] = { 0x0633, 0x064a, 0 };
+static const unichar_t str_fcfd[] = { 0x0634, 0x0649, 0 };
+static const unichar_t str_fcfe[] = { 0x0634, 0x064a, 0 };
+static const unichar_t str_fcff[] = { 0x062d, 0x0649, 0 };
+static const unichar_t str_fd00[] = { 0x062d, 0x064a, 0 };
+static const unichar_t str_fd01[] = { 0x062c, 0x0649, 0 };
+static const unichar_t str_fd02[] = { 0x062c, 0x064a, 0 };
+static const unichar_t str_fd03[] = { 0x062e, 0x0649, 0 };
+static const unichar_t str_fd04[] = { 0x062e, 0x064a, 0 };
+static const unichar_t str_fd05[] = { 0x0635, 0x0649, 0 };
+static const unichar_t str_fd06[] = { 0x0635, 0x064a, 0 };
+static const unichar_t str_fd07[] = { 0x0636, 0x0649, 0 };
+static const unichar_t str_fd08[] = { 0x0636, 0x064a, 0 };
+static const unichar_t str_fd09[] = { 0x0634, 0x062c, 0 };
+static const unichar_t str_fd0a[] = { 0x0634, 0x062d, 0 };
+static const unichar_t str_fd0b[] = { 0x0634, 0x062e, 0 };
+static const unichar_t str_fd0c[] = { 0x0634, 0x0645, 0 };
+static const unichar_t str_fd0d[] = { 0x0634, 0x0631, 0 };
+static const unichar_t str_fd0e[] = { 0x0633, 0x0631, 0 };
+static const unichar_t str_fd0f[] = { 0x0635, 0x0631, 0 };
+static const unichar_t str_fd10[] = { 0x0636, 0x0631, 0 };
+static const unichar_t str_fd11[] = { 0x0637, 0x0649, 0 };
+static const unichar_t str_fd12[] = { 0x0637, 0x064a, 0 };
+static const unichar_t str_fd13[] = { 0x0639, 0x0649, 0 };
+static const unichar_t str_fd14[] = { 0x0639, 0x064a, 0 };
+static const unichar_t str_fd15[] = { 0x063a, 0x0649, 0 };
+static const unichar_t str_fd16[] = { 0x063a, 0x064a, 0 };
+static const unichar_t str_fd17[] = { 0x0633, 0x0649, 0 };
+static const unichar_t str_fd18[] = { 0x0633, 0x064a, 0 };
+static const unichar_t str_fd19[] = { 0x0634, 0x0649, 0 };
+static const unichar_t str_fd1a[] = { 0x0634, 0x064a, 0 };
+static const unichar_t str_fd1b[] = { 0x062d, 0x0649, 0 };
+static const unichar_t str_fd1c[] = { 0x062d, 0x064a, 0 };
+static const unichar_t str_fd1d[] = { 0x062c, 0x0649, 0 };
+static const unichar_t str_fd1e[] = { 0x062c, 0x064a, 0 };
+static const unichar_t str_fd1f[] = { 0x062e, 0x0649, 0 };
+static const unichar_t str_fd20[] = { 0x062e, 0x064a, 0 };
+static const unichar_t str_fd21[] = { 0x0635, 0x0649, 0 };
+static const unichar_t str_fd22[] = { 0x0635, 0x064a, 0 };
+static const unichar_t str_fd23[] = { 0x0636, 0x0649, 0 };
+static const unichar_t str_fd24[] = { 0x0636, 0x064a, 0 };
+static const unichar_t str_fd25[] = { 0x0634, 0x062c, 0 };
+static const unichar_t str_fd26[] = { 0x0634, 0x062d, 0 };
+static const unichar_t str_fd27[] = { 0x0634, 0x062e, 0 };
+static const unichar_t str_fd28[] = { 0x0634, 0x0645, 0 };
+static const unichar_t str_fd29[] = { 0x0634, 0x0631, 0 };
+static const unichar_t str_fd2a[] = { 0x0633, 0x0631, 0 };
+static const unichar_t str_fd2b[] = { 0x0635, 0x0631, 0 };
+static const unichar_t str_fd2c[] = { 0x0636, 0x0631, 0 };
+static const unichar_t str_fd2d[] = { 0x0634, 0x062c, 0 };
+static const unichar_t str_fd2e[] = { 0x0634, 0x062d, 0 };
+static const unichar_t str_fd2f[] = { 0x0634, 0x062e, 0 };
+static const unichar_t str_fd30[] = { 0x0634, 0x0645, 0 };
+static const unichar_t str_fd31[] = { 0x0633, 0x0647, 0 };
+static const unichar_t str_fd32[] = { 0x0634, 0x0647, 0 };
+static const unichar_t str_fd33[] = { 0x0637, 0x0645, 0 };
+static const unichar_t str_fd34[] = { 0x0633, 0x062c, 0 };
+static const unichar_t str_fd35[] = { 0x0633, 0x062d, 0 };
+static const unichar_t str_fd36[] = { 0x0633, 0x062e, 0 };
+static const unichar_t str_fd37[] = { 0x0634, 0x062c, 0 };
+static const unichar_t str_fd38[] = { 0x0634, 0x062d, 0 };
+static const unichar_t str_fd39[] = { 0x0634, 0x062e, 0 };
+static const unichar_t str_fd3a[] = { 0x0637, 0x0645, 0 };
+static const unichar_t str_fd3b[] = { 0x0638, 0x0645, 0 };
+static const unichar_t str_fd3c[] = { 0x0627, 0x064b, 0 };
+static const unichar_t str_fd3d[] = { 0x0627, 0x064b, 0 };
+static const unichar_t str_fd50[] = { 0x062a, 0x062c, 0x0645, 0 };
+static const unichar_t str_fd51[] = { 0x062a, 0x062d, 0x062c, 0 };
+static const unichar_t str_fd52[] = { 0x062a, 0x062d, 0x062c, 0 };
+static const unichar_t str_fd53[] = { 0x062a, 0x062d, 0x0645, 0 };
+static const unichar_t str_fd54[] = { 0x062a, 0x062e, 0x0645, 0 };
+static const unichar_t str_fd55[] = { 0x062a, 0x0645, 0x062c, 0 };
+static const unichar_t str_fd56[] = { 0x062a, 0x0645, 0x062d, 0 };
+static const unichar_t str_fd57[] = { 0x062a, 0x0645, 0x062e, 0 };
+static const unichar_t str_fd58[] = { 0x062c, 0x0645, 0x062d, 0 };
+static const unichar_t str_fd59[] = { 0x062c, 0x0645, 0x062d, 0 };
+static const unichar_t str_fd5a[] = { 0x062d, 0x0645, 0x064a, 0 };
+static const unichar_t str_fd5b[] = { 0x062d, 0x0645, 0x0649, 0 };
+static const unichar_t str_fd5c[] = { 0x0633, 0x062d, 0x062c, 0 };
+static const unichar_t str_fd5d[] = { 0x0633, 0x062c, 0x062d, 0 };
+static const unichar_t str_fd5e[] = { 0x0633, 0x062c, 0x0649, 0 };
+static const unichar_t str_fd5f[] = { 0x0633, 0x0645, 0x062d, 0 };
+static const unichar_t str_fd60[] = { 0x0633, 0x0645, 0x062d, 0 };
+static const unichar_t str_fd61[] = { 0x0633, 0x0645, 0x062c, 0 };
+static const unichar_t str_fd62[] = { 0x0633, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd63[] = { 0x0633, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd64[] = { 0x0635, 0x062d, 0x062d, 0 };
+static const unichar_t str_fd65[] = { 0x0635, 0x062d, 0x062d, 0 };
+static const unichar_t str_fd66[] = { 0x0635, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd67[] = { 0x0634, 0x062d, 0x0645, 0 };
+static const unichar_t str_fd68[] = { 0x0634, 0x062d, 0x0645, 0 };
+static const unichar_t str_fd69[] = { 0x0634, 0x062c, 0x064a, 0 };
+static const unichar_t str_fd6a[] = { 0x0634, 0x0645, 0x062e, 0 };
+static const unichar_t str_fd6b[] = { 0x0634, 0x0645, 0x062e, 0 };
+static const unichar_t str_fd6c[] = { 0x0634, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd6d[] = { 0x0634, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd6e[] = { 0x0636, 0x062d, 0x0649, 0 };
+static const unichar_t str_fd6f[] = { 0x0636, 0x062e, 0x0645, 0 };
+static const unichar_t str_fd70[] = { 0x0636, 0x062e, 0x0645, 0 };
+static const unichar_t str_fd71[] = { 0x0637, 0x0645, 0x062d, 0 };
+static const unichar_t str_fd72[] = { 0x0637, 0x0645, 0x062d, 0 };
+static const unichar_t str_fd73[] = { 0x0637, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd74[] = { 0x0637, 0x0645, 0x064a, 0 };
+static const unichar_t str_fd75[] = { 0x0639, 0x062c, 0x0645, 0 };
+static const unichar_t str_fd76[] = { 0x0639, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd77[] = { 0x0639, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd78[] = { 0x0639, 0x0645, 0x0649, 0 };
+static const unichar_t str_fd79[] = { 0x063a, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd7a[] = { 0x063a, 0x0645, 0x064a, 0 };
+static const unichar_t str_fd7b[] = { 0x063a, 0x0645, 0x0649, 0 };
+static const unichar_t str_fd7c[] = { 0x0641, 0x062e, 0x0645, 0 };
+static const unichar_t str_fd7d[] = { 0x0641, 0x062e, 0x0645, 0 };
+static const unichar_t str_fd7e[] = { 0x0642, 0x0645, 0x062d, 0 };
+static const unichar_t str_fd7f[] = { 0x0642, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd80[] = { 0x0644, 0x062d, 0x0645, 0 };
+static const unichar_t str_fd81[] = { 0x0644, 0x062d, 0x064a, 0 };
+static const unichar_t str_fd82[] = { 0x0644, 0x062d, 0x0649, 0 };
+static const unichar_t str_fd83[] = { 0x0644, 0x062c, 0x062c, 0 };
+static const unichar_t str_fd84[] = { 0x0644, 0x062c, 0x062c, 0 };
+static const unichar_t str_fd85[] = { 0x0644, 0x062e, 0x0645, 0 };
+static const unichar_t str_fd86[] = { 0x0644, 0x062e, 0x0645, 0 };
+static const unichar_t str_fd87[] = { 0x0644, 0x0645, 0x062d, 0 };
+static const unichar_t str_fd88[] = { 0x0644, 0x0645, 0x062d, 0 };
+static const unichar_t str_fd89[] = { 0x0645, 0x062d, 0x062c, 0 };
+static const unichar_t str_fd8a[] = { 0x0645, 0x062d, 0x0645, 0 };
+static const unichar_t str_fd8b[] = { 0x0645, 0x062d, 0x064a, 0 };
+static const unichar_t str_fd8c[] = { 0x0645, 0x062c, 0x062d, 0 };
+static const unichar_t str_fd8d[] = { 0x0645, 0x062c, 0x0645, 0 };
+static const unichar_t str_fd8e[] = { 0x0645, 0x062e, 0x062c, 0 };
+static const unichar_t str_fd8f[] = { 0x0645, 0x062e, 0x0645, 0 };
+static const unichar_t str_fd92[] = { 0x0645, 0x062c, 0x062e, 0 };
+static const unichar_t str_fd93[] = { 0x0647, 0x0645, 0x062c, 0 };
+static const unichar_t str_fd94[] = { 0x0647, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd95[] = { 0x0646, 0x062d, 0x0645, 0 };
+static const unichar_t str_fd96[] = { 0x0646, 0x062d, 0x0649, 0 };
+static const unichar_t str_fd97[] = { 0x0646, 0x062c, 0x0645, 0 };
+static const unichar_t str_fd98[] = { 0x0646, 0x062c, 0x0645, 0 };
+static const unichar_t str_fd99[] = { 0x0646, 0x062c, 0x0649, 0 };
+static const unichar_t str_fd9a[] = { 0x0646, 0x0645, 0x064a, 0 };
+static const unichar_t str_fd9b[] = { 0x0646, 0x0645, 0x0649, 0 };
+static const unichar_t str_fd9c[] = { 0x064a, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd9d[] = { 0x064a, 0x0645, 0x0645, 0 };
+static const unichar_t str_fd9e[] = { 0x0628, 0x062e, 0x064a, 0 };
+static const unichar_t str_fd9f[] = { 0x062a, 0x062c, 0x064a, 0 };
+static const unichar_t str_fda0[] = { 0x062a, 0x062c, 0x0649, 0 };
+static const unichar_t str_fda1[] = { 0x062a, 0x062e, 0x064a, 0 };
+static const unichar_t str_fda2[] = { 0x062a, 0x062e, 0x0649, 0 };
+static const unichar_t str_fda3[] = { 0x062a, 0x0645, 0x064a, 0 };
+static const unichar_t str_fda4[] = { 0x062a, 0x0645, 0x0649, 0 };
+static const unichar_t str_fda5[] = { 0x062c, 0x0645, 0x064a, 0 };
+static const unichar_t str_fda6[] = { 0x062c, 0x062d, 0x0649, 0 };
+static const unichar_t str_fda7[] = { 0x062c, 0x0645, 0x0649, 0 };
+static const unichar_t str_fda8[] = { 0x0633, 0x062e, 0x0649, 0 };
+static const unichar_t str_fda9[] = { 0x0635, 0x062d, 0x064a, 0 };
+static const unichar_t str_fdaa[] = { 0x0634, 0x062d, 0x064a, 0 };
+static const unichar_t str_fdab[] = { 0x0636, 0x062d, 0x064a, 0 };
+static const unichar_t str_fdac[] = { 0x0644, 0x062c, 0x064a, 0 };
+static const unichar_t str_fdad[] = { 0x0644, 0x0645, 0x064a, 0 };
+static const unichar_t str_fdae[] = { 0x064a, 0x062d, 0x064a, 0 };
+static const unichar_t str_fdaf[] = { 0x064a, 0x062c, 0x064a, 0 };
+static const unichar_t str_fdb0[] = { 0x064a, 0x0645, 0x064a, 0 };
+static const unichar_t str_fdb1[] = { 0x0645, 0x0645, 0x064a, 0 };
+static const unichar_t str_fdb2[] = { 0x0642, 0x0645, 0x064a, 0 };
+static const unichar_t str_fdb3[] = { 0x0646, 0x062d, 0x064a, 0 };
+static const unichar_t str_fdb4[] = { 0x0642, 0x0645, 0x062d, 0 };
+static const unichar_t str_fdb5[] = { 0x0644, 0x062d, 0x0645, 0 };
+static const unichar_t str_fdb6[] = { 0x0639, 0x0645, 0x064a, 0 };
+static const unichar_t str_fdb7[] = { 0x0643, 0x0645, 0x064a, 0 };
+static const unichar_t str_fdb8[] = { 0x0646, 0x062c, 0x062d, 0 };
+static const unichar_t str_fdb9[] = { 0x0645, 0x062e, 0x064a, 0 };
+static const unichar_t str_fdba[] = { 0x0644, 0x062c, 0x0645, 0 };
+static const unichar_t str_fdbb[] = { 0x0643, 0x0645, 0x0645, 0 };
+static const unichar_t str_fdbc[] = { 0x0644, 0x062c, 0x0645, 0 };
+static const unichar_t str_fdbd[] = { 0x0646, 0x062c, 0x062d, 0 };
+static const unichar_t str_fdbe[] = { 0x062c, 0x062d, 0x064a, 0 };
+static const unichar_t str_fdbf[] = { 0x062d, 0x062c, 0x064a, 0 };
+static const unichar_t str_fdc0[] = { 0x0645, 0x062c, 0x064a, 0 };
+static const unichar_t str_fdc1[] = { 0x0641, 0x0645, 0x064a, 0 };
+static const unichar_t str_fdc2[] = { 0x0628, 0x062d, 0x064a, 0 };
+static const unichar_t str_fdc3[] = { 0x0643, 0x0645, 0x0645, 0 };
+static const unichar_t str_fdc4[] = { 0x0639, 0x062c, 0x0645, 0 };
+static const unichar_t str_fdc5[] = { 0x0635, 0x0645, 0x0645, 0 };
+static const unichar_t str_fdc6[] = { 0x0633, 0x062e, 0x064a, 0 };
+static const unichar_t str_fdc7[] = { 0x0646, 0x062c, 0x064a, 0 };
+static const unichar_t str_fdf0[] = { 0x0635, 0x0644, 0x06d2, 0 };
+static const unichar_t str_fdf1[] = { 0x0642, 0x0644, 0x06d2, 0 };
+static const unichar_t str_fdf2[] = { 0x0627, 0x0644, 0x0644, 0x0647, 0 };
+static const unichar_t str_fdf3[] = { 0x0627, 0x0643, 0x0628, 0x0631, 0 };
+static const unichar_t str_fdf4[] = { 0x0645, 0x062d, 0x0645, 0x062f, 0 };
+static const unichar_t str_fdf5[] = { 0x0635, 0x0644, 0x0639, 0x0645, 0 };
+static const unichar_t str_fdf6[] = { 0x0631, 0x0633, 0x0648, 0x0644, 0 };
+static const unichar_t str_fdf7[] = { 0x0639, 0x0644, 0x064a, 0x0647, 0 };
+static const unichar_t str_fdf8[] = { 0x0648, 0x0633, 0x0644, 0x0645, 0 };
+static const unichar_t str_fdf9[] = { 0x0635, 0x0644, 0x0649, 0 };
+static const unichar_t str_fdfa[] = { 0x0635, 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644, 0x064a, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645, 0 };
+static const unichar_t str_fdfb[] = { 0x062c, 0x0644, 0x0020, 0x062c, 0x0644, 0x0627, 0x0644, 0x0647, 0 };
+static const unichar_t str_fdfc[] = { 0x0631, 0x06cc, 0x0627, 0x0644, 0 };
+static const unichar_t str_fe10[] = { 0x002c, 0 };
+static const unichar_t str_fe11[] = { 0x3001, 0 };
+static const unichar_t str_fe12[] = { 0x3002, 0 };
+static const unichar_t str_fe13[] = { 0x003a, 0 };
+static const unichar_t str_fe14[] = { 0x003b, 0 };
+static const unichar_t str_fe15[] = { 0x0021, 0 };
+static const unichar_t str_fe16[] = { 0x003f, 0 };
+static const unichar_t str_fe17[] = { 0x3016, 0 };
+static const unichar_t str_fe18[] = { 0x3017, 0 };
+static const unichar_t str_fe19[] = { 0x2026, 0 };
+static const unichar_t str_fe30[] = { 0x2025, 0 };
+static const unichar_t str_fe31[] = { 0x2014, 0 };
+static const unichar_t str_fe32[] = { 0x2013, 0 };
+static const unichar_t str_fe33[] = { 0x005f, 0 };
+static const unichar_t str_fe34[] = { 0x005f, 0 };
+static const unichar_t str_fe35[] = { 0x0028, 0 };
+static const unichar_t str_fe36[] = { 0x0029, 0 };
+static const unichar_t str_fe37[] = { 0x007b, 0 };
+static const unichar_t str_fe38[] = { 0x007d, 0 };
+static const unichar_t str_fe39[] = { 0x3014, 0 };
+static const unichar_t str_fe3a[] = { 0x3015, 0 };
+static const unichar_t str_fe3b[] = { 0x3010, 0 };
+static const unichar_t str_fe3c[] = { 0x3011, 0 };
+static const unichar_t str_fe3d[] = { 0x300a, 0 };
+static const unichar_t str_fe3e[] = { 0x300b, 0 };
+static const unichar_t str_fe3f[] = { 0x3008, 0 };
+static const unichar_t str_fe40[] = { 0x3009, 0 };
+static const unichar_t str_fe41[] = { 0x300c, 0 };
+static const unichar_t str_fe42[] = { 0x300d, 0 };
+static const unichar_t str_fe43[] = { 0x300e, 0 };
+static const unichar_t str_fe44[] = { 0x300f, 0 };
+static const unichar_t str_fe47[] = { 0x005b, 0 };
+static const unichar_t str_fe48[] = { 0x005d, 0 };
+static const unichar_t str_fe49[] = { 0x203e, 0 };
+static const unichar_t str_fe4a[] = { 0x203e, 0 };
+static const unichar_t str_fe4b[] = { 0x203e, 0 };
+static const unichar_t str_fe4c[] = { 0x203e, 0 };
+static const unichar_t str_fe4d[] = { 0x005f, 0 };
+static const unichar_t str_fe4e[] = { 0x005f, 0 };
+static const unichar_t str_fe4f[] = { 0x005f, 0 };
+static const unichar_t str_fe50[] = { 0x002c, 0 };
+static const unichar_t str_fe51[] = { 0x3001, 0 };
+static const unichar_t str_fe52[] = { 0x002e, 0 };
+static const unichar_t str_fe54[] = { 0x003b, 0 };
+static const unichar_t str_fe55[] = { 0x003a, 0 };
+static const unichar_t str_fe56[] = { 0x003f, 0 };
+static const unichar_t str_fe57[] = { 0x0021, 0 };
+static const unichar_t str_fe58[] = { 0x2014, 0 };
+static const unichar_t str_fe59[] = { 0x0028, 0 };
+static const unichar_t str_fe5a[] = { 0x0029, 0 };
+static const unichar_t str_fe5b[] = { 0x007b, 0 };
+static const unichar_t str_fe5c[] = { 0x007d, 0 };
+static const unichar_t str_fe5d[] = { 0x3014, 0 };
+static const unichar_t str_fe5e[] = { 0x3015, 0 };
+static const unichar_t str_fe5f[] = { 0x0023, 0 };
+static const unichar_t str_fe60[] = { 0x0026, 0 };
+static const unichar_t str_fe61[] = { 0x002a, 0 };
+static const unichar_t str_fe62[] = { 0x002b, 0 };
+static const unichar_t str_fe63[] = { 0x002d, 0 };
+static const unichar_t str_fe64[] = { 0x003c, 0 };
+static const unichar_t str_fe65[] = { 0x003e, 0 };
+static const unichar_t str_fe66[] = { 0x003d, 0 };
+static const unichar_t str_fe68[] = { 0x005c, 0 };
+static const unichar_t str_fe69[] = { 0x0024, 0 };
+static const unichar_t str_fe6a[] = { 0x0025, 0 };
+static const unichar_t str_fe6b[] = { 0x0040, 0 };
+static const unichar_t str_fe70[] = { 0x0020, 0x064b, 0 };
+static const unichar_t str_fe71[] = { 0x0640, 0x064b, 0 };
+static const unichar_t str_fe72[] = { 0x0020, 0x064c, 0 };
+static const unichar_t str_fe74[] = { 0x0020, 0x064d, 0 };
+static const unichar_t str_fe76[] = { 0x0020, 0x064e, 0 };
+static const unichar_t str_fe77[] = { 0x0640, 0x064e, 0 };
+static const unichar_t str_fe78[] = { 0x0020, 0x064f, 0 };
+static const unichar_t str_fe79[] = { 0x0640, 0x064f, 0 };
+static const unichar_t str_fe7a[] = { 0x0020, 0x0650, 0 };
+static const unichar_t str_fe7b[] = { 0x0640, 0x0650, 0 };
+static const unichar_t str_fe7c[] = { 0x0020, 0x0651, 0 };
+static const unichar_t str_fe7d[] = { 0x0640, 0x0651, 0 };
+static const unichar_t str_fe7e[] = { 0x0020, 0x0652, 0 };
+static const unichar_t str_fe7f[] = { 0x0640, 0x0652, 0 };
+static const unichar_t str_fe80[] = { 0x0621, 0 };
+static const unichar_t str_fe81[] = { 0x0622, 0 };
+static const unichar_t str_fe82[] = { 0x0622, 0 };
+static const unichar_t str_fe83[] = { 0x0623, 0 };
+static const unichar_t str_fe84[] = { 0x0623, 0 };
+static const unichar_t str_fe85[] = { 0x0624, 0 };
+static const unichar_t str_fe86[] = { 0x0624, 0 };
+static const unichar_t str_fe87[] = { 0x0625, 0 };
+static const unichar_t str_fe88[] = { 0x0625, 0 };
+static const unichar_t str_fe89[] = { 0x0626, 0 };
+static const unichar_t str_fe8a[] = { 0x0626, 0 };
+static const unichar_t str_fe8b[] = { 0x0626, 0 };
+static const unichar_t str_fe8c[] = { 0x0626, 0 };
+static const unichar_t str_fe8d[] = { 0x0627, 0 };
+static const unichar_t str_fe8e[] = { 0x0627, 0 };
+static const unichar_t str_fe8f[] = { 0x0628, 0 };
+static const unichar_t str_fe90[] = { 0x0628, 0 };
+static const unichar_t str_fe91[] = { 0x0628, 0 };
+static const unichar_t str_fe92[] = { 0x0628, 0 };
+static const unichar_t str_fe93[] = { 0x0629, 0 };
+static const unichar_t str_fe94[] = { 0x0629, 0 };
+static const unichar_t str_fe95[] = { 0x062a, 0 };
+static const unichar_t str_fe96[] = { 0x062a, 0 };
+static const unichar_t str_fe97[] = { 0x062a, 0 };
+static const unichar_t str_fe98[] = { 0x062a, 0 };
+static const unichar_t str_fe99[] = { 0x062b, 0 };
+static const unichar_t str_fe9a[] = { 0x062b, 0 };
+static const unichar_t str_fe9b[] = { 0x062b, 0 };
+static const unichar_t str_fe9c[] = { 0x062b, 0 };
+static const unichar_t str_fe9d[] = { 0x062c, 0 };
+static const unichar_t str_fe9e[] = { 0x062c, 0 };
+static const unichar_t str_fe9f[] = { 0x062c, 0 };
+static const unichar_t str_fea0[] = { 0x062c, 0 };
+static const unichar_t str_fea1[] = { 0x062d, 0 };
+static const unichar_t str_fea2[] = { 0x062d, 0 };
+static const unichar_t str_fea3[] = { 0x062d, 0 };
+static const unichar_t str_fea4[] = { 0x062d, 0 };
+static const unichar_t str_fea5[] = { 0x062e, 0 };
+static const unichar_t str_fea6[] = { 0x062e, 0 };
+static const unichar_t str_fea7[] = { 0x062e, 0 };
+static const unichar_t str_fea8[] = { 0x062e, 0 };
+static const unichar_t str_fea9[] = { 0x062f, 0 };
+static const unichar_t str_feaa[] = { 0x062f, 0 };
+static const unichar_t str_feab[] = { 0x0630, 0 };
+static const unichar_t str_feac[] = { 0x0630, 0 };
+static const unichar_t str_fead[] = { 0x0631, 0 };
+static const unichar_t str_feae[] = { 0x0631, 0 };
+static const unichar_t str_feaf[] = { 0x0632, 0 };
+static const unichar_t str_feb0[] = { 0x0632, 0 };
+static const unichar_t str_feb1[] = { 0x0633, 0 };
+static const unichar_t str_feb2[] = { 0x0633, 0 };
+static const unichar_t str_feb3[] = { 0x0633, 0 };
+static const unichar_t str_feb4[] = { 0x0633, 0 };
+static const unichar_t str_feb5[] = { 0x0634, 0 };
+static const unichar_t str_feb6[] = { 0x0634, 0 };
+static const unichar_t str_feb7[] = { 0x0634, 0 };
+static const unichar_t str_feb8[] = { 0x0634, 0 };
+static const unichar_t str_feb9[] = { 0x0635, 0 };
+static const unichar_t str_feba[] = { 0x0635, 0 };
+static const unichar_t str_febb[] = { 0x0635, 0 };
+static const unichar_t str_febc[] = { 0x0635, 0 };
+static const unichar_t str_febd[] = { 0x0636, 0 };
+static const unichar_t str_febe[] = { 0x0636, 0 };
+static const unichar_t str_febf[] = { 0x0636, 0 };
+static const unichar_t str_fec0[] = { 0x0636, 0 };
+static const unichar_t str_fec1[] = { 0x0637, 0 };
+static const unichar_t str_fec2[] = { 0x0637, 0 };
+static const unichar_t str_fec3[] = { 0x0637, 0 };
+static const unichar_t str_fec4[] = { 0x0637, 0 };
+static const unichar_t str_fec5[] = { 0x0638, 0 };
+static const unichar_t str_fec6[] = { 0x0638, 0 };
+static const unichar_t str_fec7[] = { 0x0638, 0 };
+static const unichar_t str_fec8[] = { 0x0638, 0 };
+static const unichar_t str_fec9[] = { 0x0639, 0 };
+static const unichar_t str_feca[] = { 0x0639, 0 };
+static const unichar_t str_fecb[] = { 0x0639, 0 };
+static const unichar_t str_fecc[] = { 0x0639, 0 };
+static const unichar_t str_fecd[] = { 0x063a, 0 };
+static const unichar_t str_fece[] = { 0x063a, 0 };
+static const unichar_t str_fecf[] = { 0x063a, 0 };
+static const unichar_t str_fed0[] = { 0x063a, 0 };
+static const unichar_t str_fed1[] = { 0x0641, 0 };
+static const unichar_t str_fed2[] = { 0x0641, 0 };
+static const unichar_t str_fed3[] = { 0x0641, 0 };
+static const unichar_t str_fed4[] = { 0x0641, 0 };
+static const unichar_t str_fed5[] = { 0x0642, 0 };
+static const unichar_t str_fed6[] = { 0x0642, 0 };
+static const unichar_t str_fed7[] = { 0x0642, 0 };
+static const unichar_t str_fed8[] = { 0x0642, 0 };
+static const unichar_t str_fed9[] = { 0x0643, 0 };
+static const unichar_t str_feda[] = { 0x0643, 0 };
+static const unichar_t str_fedb[] = { 0x0643, 0 };
+static const unichar_t str_fedc[] = { 0x0643, 0 };
+static const unichar_t str_fedd[] = { 0x0644, 0 };
+static const unichar_t str_fede[] = { 0x0644, 0 };
+static const unichar_t str_fedf[] = { 0x0644, 0 };
+static const unichar_t str_fee0[] = { 0x0644, 0 };
+static const unichar_t str_fee1[] = { 0x0645, 0 };
+static const unichar_t str_fee2[] = { 0x0645, 0 };
+static const unichar_t str_fee3[] = { 0x0645, 0 };
+static const unichar_t str_fee4[] = { 0x0645, 0 };
+static const unichar_t str_fee5[] = { 0x0646, 0 };
+static const unichar_t str_fee6[] = { 0x0646, 0 };
+static const unichar_t str_fee7[] = { 0x0646, 0 };
+static const unichar_t str_fee8[] = { 0x0646, 0 };
+static const unichar_t str_fee9[] = { 0x0647, 0 };
+static const unichar_t str_feea[] = { 0x0647, 0 };
+static const unichar_t str_feeb[] = { 0x0647, 0 };
+static const unichar_t str_feec[] = { 0x0647, 0 };
+static const unichar_t str_feed[] = { 0x0648, 0 };
+static const unichar_t str_feee[] = { 0x0648, 0 };
+static const unichar_t str_feef[] = { 0x0649, 0 };
+static const unichar_t str_fef0[] = { 0x0649, 0 };
+static const unichar_t str_fef1[] = { 0x064a, 0 };
+static const unichar_t str_fef2[] = { 0x064a, 0 };
+static const unichar_t str_fef3[] = { 0x064a, 0 };
+static const unichar_t str_fef4[] = { 0x064a, 0 };
+static const unichar_t str_fef5[] = { 0x0644, 0x0622, 0 };
+static const unichar_t str_fef6[] = { 0x0644, 0x0622, 0 };
+static const unichar_t str_fef7[] = { 0x0644, 0x0623, 0 };
+static const unichar_t str_fef8[] = { 0x0644, 0x0623, 0 };
+static const unichar_t str_fef9[] = { 0x0644, 0x0625, 0 };
+static const unichar_t str_fefa[] = { 0x0644, 0x0625, 0 };
+static const unichar_t str_fefb[] = { 0x0644, 0x0627, 0 };
+static const unichar_t str_fefc[] = { 0x0644, 0x0627, 0 };
+static const unichar_t str_ff01[] = { 0x0021, 0 };
+static const unichar_t str_ff02[] = { 0x0022, 0 };
+static const unichar_t str_ff03[] = { 0x0023, 0 };
+static const unichar_t str_ff04[] = { 0x0024, 0 };
+static const unichar_t str_ff05[] = { 0x0025, 0 };
+static const unichar_t str_ff06[] = { 0x0026, 0 };
+static const unichar_t str_ff07[] = { 0x0027, 0 };
+static const unichar_t str_ff08[] = { 0x0028, 0 };
+static const unichar_t str_ff09[] = { 0x0029, 0 };
+static const unichar_t str_ff0a[] = { 0x002a, 0 };
+static const unichar_t str_ff0b[] = { 0x002b, 0 };
+static const unichar_t str_ff0c[] = { 0x002c, 0 };
+static const unichar_t str_ff0d[] = { 0x002d, 0 };
+static const unichar_t str_ff0e[] = { 0x002e, 0 };
+static const unichar_t str_ff0f[] = { 0x002f, 0 };
+static const unichar_t str_ff10[] = { 0x0030, 0 };
+static const unichar_t str_ff11[] = { 0x0031, 0 };
+static const unichar_t str_ff12[] = { 0x0032, 0 };
+static const unichar_t str_ff13[] = { 0x0033, 0 };
+static const unichar_t str_ff14[] = { 0x0034, 0 };
+static const unichar_t str_ff15[] = { 0x0035, 0 };
+static const unichar_t str_ff16[] = { 0x0036, 0 };
+static const unichar_t str_ff17[] = { 0x0037, 0 };
+static const unichar_t str_ff18[] = { 0x0038, 0 };
+static const unichar_t str_ff19[] = { 0x0039, 0 };
+static const unichar_t str_ff1a[] = { 0x003a, 0 };
+static const unichar_t str_ff1b[] = { 0x003b, 0 };
+static const unichar_t str_ff1c[] = { 0x003c, 0 };
+static const unichar_t str_ff1d[] = { 0x003d, 0 };
+static const unichar_t str_ff1e[] = { 0x003e, 0 };
+static const unichar_t str_ff1f[] = { 0x003f, 0 };
+static const unichar_t str_ff20[] = { 0x0040, 0 };
+static const unichar_t str_ff21[] = { 0x0041, 0 };
+static const unichar_t str_ff22[] = { 0x0042, 0 };
+static const unichar_t str_ff23[] = { 0x0043, 0 };
+static const unichar_t str_ff24[] = { 0x0044, 0 };
+static const unichar_t str_ff25[] = { 0x0045, 0 };
+static const unichar_t str_ff26[] = { 0x0046, 0 };
+static const unichar_t str_ff27[] = { 0x0047, 0 };
+static const unichar_t str_ff28[] = { 0x0048, 0 };
+static const unichar_t str_ff29[] = { 0x0049, 0 };
+static const unichar_t str_ff2a[] = { 0x004a, 0 };
+static const unichar_t str_ff2b[] = { 0x004b, 0 };
+static const unichar_t str_ff2c[] = { 0x004c, 0 };
+static const unichar_t str_ff2d[] = { 0x004d, 0 };
+static const unichar_t str_ff2e[] = { 0x004e, 0 };
+static const unichar_t str_ff2f[] = { 0x004f, 0 };
+static const unichar_t str_ff30[] = { 0x0050, 0 };
+static const unichar_t str_ff31[] = { 0x0051, 0 };
+static const unichar_t str_ff32[] = { 0x0052, 0 };
+static const unichar_t str_ff33[] = { 0x0053, 0 };
+static const unichar_t str_ff34[] = { 0x0054, 0 };
+static const unichar_t str_ff35[] = { 0x0055, 0 };
+static const unichar_t str_ff36[] = { 0x0056, 0 };
+static const unichar_t str_ff37[] = { 0x0057, 0 };
+static const unichar_t str_ff38[] = { 0x0058, 0 };
+static const unichar_t str_ff39[] = { 0x0059, 0 };
+static const unichar_t str_ff3a[] = { 0x005a, 0 };
+static const unichar_t str_ff3b[] = { 0x005b, 0 };
+static const unichar_t str_ff3c[] = { 0x005c, 0 };
+static const unichar_t str_ff3d[] = { 0x005d, 0 };
+static const unichar_t str_ff3e[] = { 0x005e, 0 };
+static const unichar_t str_ff3f[] = { 0x005f, 0 };
+static const unichar_t str_ff40[] = { 0x0060, 0 };
+static const unichar_t str_ff41[] = { 0x0061, 0 };
+static const unichar_t str_ff42[] = { 0x0062, 0 };
+static const unichar_t str_ff43[] = { 0x0063, 0 };
+static const unichar_t str_ff44[] = { 0x0064, 0 };
+static const unichar_t str_ff45[] = { 0x0065, 0 };
+static const unichar_t str_ff46[] = { 0x0066, 0 };
+static const unichar_t str_ff47[] = { 0x0067, 0 };
+static const unichar_t str_ff48[] = { 0x0068, 0 };
+static const unichar_t str_ff49[] = { 0x0069, 0 };
+static const unichar_t str_ff4a[] = { 0x006a, 0 };
+static const unichar_t str_ff4b[] = { 0x006b, 0 };
+static const unichar_t str_ff4c[] = { 0x006c, 0 };
+static const unichar_t str_ff4d[] = { 0x006d, 0 };
+static const unichar_t str_ff4e[] = { 0x006e, 0 };
+static const unichar_t str_ff4f[] = { 0x006f, 0 };
+static const unichar_t str_ff50[] = { 0x0070, 0 };
+static const unichar_t str_ff51[] = { 0x0071, 0 };
+static const unichar_t str_ff52[] = { 0x0072, 0 };
+static const unichar_t str_ff53[] = { 0x0073, 0 };
+static const unichar_t str_ff54[] = { 0x0074, 0 };
+static const unichar_t str_ff55[] = { 0x0075, 0 };
+static const unichar_t str_ff56[] = { 0x0076, 0 };
+static const unichar_t str_ff57[] = { 0x0077, 0 };
+static const unichar_t str_ff58[] = { 0x0078, 0 };
+static const unichar_t str_ff59[] = { 0x0079, 0 };
+static const unichar_t str_ff5a[] = { 0x007a, 0 };
+static const unichar_t str_ff5b[] = { 0x007b, 0 };
+static const unichar_t str_ff5c[] = { 0x007c, 0 };
+static const unichar_t str_ff5d[] = { 0x007d, 0 };
+static const unichar_t str_ff5e[] = { 0x007e, 0 };
+static const unichar_t str_ff5f[] = { 0x2985, 0 };
+static const unichar_t str_ff60[] = { 0x2986, 0 };
+static const unichar_t str_ff61[] = { 0x3002, 0 };
+static const unichar_t str_ff62[] = { 0x300c, 0 };
+static const unichar_t str_ff63[] = { 0x300d, 0 };
+static const unichar_t str_ff64[] = { 0x3001, 0 };
+static const unichar_t str_ff65[] = { 0x30fb, 0 };
+static const unichar_t str_ff66[] = { 0x30f2, 0 };
+static const unichar_t str_ff67[] = { 0x30a1, 0 };
+static const unichar_t str_ff68[] = { 0x30a3, 0 };
+static const unichar_t str_ff69[] = { 0x30a5, 0 };
+static const unichar_t str_ff6a[] = { 0x30a7, 0 };
+static const unichar_t str_ff6b[] = { 0x30a9, 0 };
+static const unichar_t str_ff6c[] = { 0x30e3, 0 };
+static const unichar_t str_ff6d[] = { 0x30e5, 0 };
+static const unichar_t str_ff6e[] = { 0x30e7, 0 };
+static const unichar_t str_ff6f[] = { 0x30c3, 0 };
+static const unichar_t str_ff70[] = { 0x30fc, 0 };
+static const unichar_t str_ff71[] = { 0x30a2, 0 };
+static const unichar_t str_ff72[] = { 0x30a4, 0 };
+static const unichar_t str_ff73[] = { 0x30a6, 0 };
+static const unichar_t str_ff74[] = { 0x30a8, 0 };
+static const unichar_t str_ff75[] = { 0x30aa, 0 };
+static const unichar_t str_ff76[] = { 0x30ab, 0 };
+static const unichar_t str_ff77[] = { 0x30ad, 0 };
+static const unichar_t str_ff78[] = { 0x30af, 0 };
+static const unichar_t str_ff79[] = { 0x30b1, 0 };
+static const unichar_t str_ff7a[] = { 0x30b3, 0 };
+static const unichar_t str_ff7b[] = { 0x30b5, 0 };
+static const unichar_t str_ff7c[] = { 0x30b7, 0 };
+static const unichar_t str_ff7d[] = { 0x30b9, 0 };
+static const unichar_t str_ff7e[] = { 0x30bb, 0 };
+static const unichar_t str_ff7f[] = { 0x30bd, 0 };
+static const unichar_t str_ff80[] = { 0x30bf, 0 };
+static const unichar_t str_ff81[] = { 0x30c1, 0 };
+static const unichar_t str_ff82[] = { 0x30c4, 0 };
+static const unichar_t str_ff83[] = { 0x30c6, 0 };
+static const unichar_t str_ff84[] = { 0x30c8, 0 };
+static const unichar_t str_ff85[] = { 0x30ca, 0 };
+static const unichar_t str_ff86[] = { 0x30cb, 0 };
+static const unichar_t str_ff87[] = { 0x30cc, 0 };
+static const unichar_t str_ff88[] = { 0x30cd, 0 };
+static const unichar_t str_ff89[] = { 0x30ce, 0 };
+static const unichar_t str_ff8a[] = { 0x30cf, 0 };
+static const unichar_t str_ff8b[] = { 0x30d2, 0 };
+static const unichar_t str_ff8c[] = { 0x30d5, 0 };
+static const unichar_t str_ff8d[] = { 0x30d8, 0 };
+static const unichar_t str_ff8e[] = { 0x30db, 0 };
+static const unichar_t str_ff8f[] = { 0x30de, 0 };
+static const unichar_t str_ff90[] = { 0x30df, 0 };
+static const unichar_t str_ff91[] = { 0x30e0, 0 };
+static const unichar_t str_ff92[] = { 0x30e1, 0 };
+static const unichar_t str_ff93[] = { 0x30e2, 0 };
+static const unichar_t str_ff94[] = { 0x30e4, 0 };
+static const unichar_t str_ff95[] = { 0x30e6, 0 };
+static const unichar_t str_ff96[] = { 0x30e8, 0 };
+static const unichar_t str_ff97[] = { 0x30e9, 0 };
+static const unichar_t str_ff98[] = { 0x30ea, 0 };
+static const unichar_t str_ff99[] = { 0x30eb, 0 };
+static const unichar_t str_ff9a[] = { 0x30ec, 0 };
+static const unichar_t str_ff9b[] = { 0x30ed, 0 };
+static const unichar_t str_ff9c[] = { 0x30ef, 0 };
+static const unichar_t str_ff9d[] = { 0x30f3, 0 };
+static const unichar_t str_ff9e[] = { 0x3099, 0 };
+static const unichar_t str_ff9f[] = { 0x309a, 0 };
+static const unichar_t str_ffa0[] = { 0x3164, 0 };
+static const unichar_t str_ffa1[] = { 0x3131, 0 };
+static const unichar_t str_ffa2[] = { 0x3132, 0 };
+static const unichar_t str_ffa3[] = { 0x3133, 0 };
+static const unichar_t str_ffa4[] = { 0x3134, 0 };
+static const unichar_t str_ffa5[] = { 0x3135, 0 };
+static const unichar_t str_ffa6[] = { 0x3136, 0 };
+static const unichar_t str_ffa7[] = { 0x3137, 0 };
+static const unichar_t str_ffa8[] = { 0x3138, 0 };
+static const unichar_t str_ffa9[] = { 0x3139, 0 };
+static const unichar_t str_ffaa[] = { 0x313a, 0 };
+static const unichar_t str_ffab[] = { 0x313b, 0 };
+static const unichar_t str_ffac[] = { 0x313c, 0 };
+static const unichar_t str_ffad[] = { 0x313d, 0 };
+static const unichar_t str_ffae[] = { 0x313e, 0 };
+static const unichar_t str_ffaf[] = { 0x313f, 0 };
+static const unichar_t str_ffb0[] = { 0x3140, 0 };
+static const unichar_t str_ffb1[] = { 0x3141, 0 };
+static const unichar_t str_ffb2[] = { 0x3142, 0 };
+static const unichar_t str_ffb3[] = { 0x3143, 0 };
+static const unichar_t str_ffb4[] = { 0x3144, 0 };
+static const unichar_t str_ffb5[] = { 0x3145, 0 };
+static const unichar_t str_ffb6[] = { 0x3146, 0 };
+static const unichar_t str_ffb7[] = { 0x3147, 0 };
+static const unichar_t str_ffb8[] = { 0x3148, 0 };
+static const unichar_t str_ffb9[] = { 0x3149, 0 };
+static const unichar_t str_ffba[] = { 0x314a, 0 };
+static const unichar_t str_ffbb[] = { 0x314b, 0 };
+static const unichar_t str_ffbc[] = { 0x314c, 0 };
+static const unichar_t str_ffbd[] = { 0x314d, 0 };
+static const unichar_t str_ffbe[] = { 0x314e, 0 };
+static const unichar_t str_ffc2[] = { 0x314f, 0 };
+static const unichar_t str_ffc3[] = { 0x3150, 0 };
+static const unichar_t str_ffc4[] = { 0x3151, 0 };
+static const unichar_t str_ffc5[] = { 0x3152, 0 };
+static const unichar_t str_ffc6[] = { 0x3153, 0 };
+static const unichar_t str_ffc7[] = { 0x3154, 0 };
+static const unichar_t str_ffca[] = { 0x3155, 0 };
+static const unichar_t str_ffcb[] = { 0x3156, 0 };
+static const unichar_t str_ffcc[] = { 0x3157, 0 };
+static const unichar_t str_ffcd[] = { 0x3158, 0 };
+static const unichar_t str_ffce[] = { 0x3159, 0 };
+static const unichar_t str_ffcf[] = { 0x315a, 0 };
+static const unichar_t str_ffd2[] = { 0x315b, 0 };
+static const unichar_t str_ffd3[] = { 0x315c, 0 };
+static const unichar_t str_ffd4[] = { 0x315d, 0 };
+static const unichar_t str_ffd5[] = { 0x315e, 0 };
+static const unichar_t str_ffd6[] = { 0x315f, 0 };
+static const unichar_t str_ffd7[] = { 0x3160, 0 };
+static const unichar_t str_ffda[] = { 0x3161, 0 };
+static const unichar_t str_ffdb[] = { 0x3162, 0 };
+static const unichar_t str_ffdc[] = { 0x3163, 0 };
+static const unichar_t str_ffe0[] = { 0x00a2, 0 };
+static const unichar_t str_ffe1[] = { 0x00a3, 0 };
+static const unichar_t str_ffe2[] = { 0x00ac, 0 };
+static const unichar_t str_ffe3[] = { 0x00af, 0 };
+static const unichar_t str_ffe4[] = { 0x00a6, 0 };
+static const unichar_t str_ffe5[] = { 0x00a5, 0 };
+static const unichar_t str_ffe6[] = { 0x20a9, 0 };
+static const unichar_t str_ffe8[] = { 0x2502, 0 };
+static const unichar_t str_ffe9[] = { 0x2190, 0 };
+static const unichar_t str_ffea[] = { 0x2191, 0 };
+static const unichar_t str_ffeb[] = { 0x2192, 0 };
+static const unichar_t str_ffec[] = { 0x2193, 0 };
+static const unichar_t str_ffed[] = { 0x25a0, 0 };
+static const unichar_t str_ffee[] = { 0x25cb, 0 };
+
+static const unichar_t *const up_allzeros[256] = { NULL };
+
+static const unichar_t * const tab_0[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_a0,
+0, 0, 0, 0, 0, 0, 0, str_a8,
+0, str_aa,
+0, 0, 0, 0, str_af,
+0, 0, str_b2,
+str_b3,
+str_b4,
+str_b5,
+0, 0, str_b8,
+str_b9,
+str_ba,
+0, str_bc,
+str_bd,
+str_be,
+0, str_c0,
+str_c1,
+str_c2,
+str_c3,
+str_c4,
+str_c5,
+0, str_c7,
+str_c8,
+str_c9,
+str_ca,
+str_cb,
+str_cc,
+str_cd,
+str_ce,
+str_cf,
+0, str_d1,
+str_d2,
+str_d3,
+str_d4,
+str_d5,
+str_d6,
+0, 0, str_d9,
+str_da,
+str_db,
+str_dc,
+str_dd,
+0, 0, str_e0,
+str_e1,
+str_e2,
+str_e3,
+str_e4,
+str_e5,
+0, str_e7,
+str_e8,
+str_e9,
+str_ea,
+str_eb,
+str_ec,
+str_ed,
+str_ee,
+str_ef,
+0, str_f1,
+str_f2,
+str_f3,
+str_f4,
+str_f5,
+str_f6,
+0, 0, str_f9,
+str_fa,
+str_fb,
+str_fc,
+str_fd,
+0, str_ff,
+0};
+
+static const unichar_t * const tab_1[] = {
+str_100,
+str_101,
+str_102,
+str_103,
+str_104,
+str_105,
+str_106,
+str_107,
+str_108,
+str_109,
+str_10a,
+str_10b,
+str_10c,
+str_10d,
+str_10e,
+str_10f,
+str_110,
+0, str_112,
+str_113,
+str_114,
+str_115,
+str_116,
+str_117,
+str_118,
+str_119,
+str_11a,
+str_11b,
+str_11c,
+str_11d,
+str_11e,
+str_11f,
+str_120,
+str_121,
+str_122,
+str_123,
+str_124,
+str_125,
+0, 0, str_128,
+str_129,
+str_12a,
+str_12b,
+str_12c,
+str_12d,
+str_12e,
+str_12f,
+str_130,
+0, str_132,
+str_133,
+str_134,
+str_135,
+str_136,
+str_137,
+str_138,
+str_139,
+str_13a,
+str_13b,
+str_13c,
+str_13d,
+str_13e,
+str_13f,
+str_140,
+0, 0, str_143,
+str_144,
+str_145,
+str_146,
+str_147,
+str_148,
+str_149,
+0, 0, str_14c,
+str_14d,
+str_14e,
+str_14f,
+str_150,
+str_151,
+str_152,
+str_153,
+str_154,
+str_155,
+str_156,
+str_157,
+str_158,
+str_159,
+str_15a,
+str_15b,
+str_15c,
+str_15d,
+str_15e,
+str_15f,
+str_160,
+str_161,
+str_162,
+str_163,
+str_164,
+str_165,
+0, 0, str_168,
+str_169,
+str_16a,
+str_16b,
+str_16c,
+str_16d,
+str_16e,
+str_16f,
+str_170,
+str_171,
+str_172,
+str_173,
+str_174,
+str_175,
+str_176,
+str_177,
+str_178,
+str_179,
+str_17a,
+str_17b,
+str_17c,
+str_17d,
+str_17e,
+str_17f,
+0, 0, str_182,
+0, 0, 0, 0, 0, 0, str_189,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_19e,
+str_19f,
+str_1a0,
+str_1a1,
+0, 0, 0, 0, 0, 0, 0, str_1a9,
+0, 0, 0, 0, 0, str_1af,
+str_1b0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_1c0,
+str_1c1,
+0, 0, str_1c4,
+str_1c5,
+str_1c6,
+str_1c7,
+str_1c8,
+str_1c9,
+str_1ca,
+str_1cb,
+str_1cc,
+str_1cd,
+str_1ce,
+str_1cf,
+str_1d0,
+str_1d1,
+str_1d2,
+str_1d3,
+str_1d4,
+str_1d5,
+str_1d6,
+str_1d7,
+str_1d8,
+str_1d9,
+str_1da,
+str_1db,
+str_1dc,
+0, str_1de,
+str_1df,
+str_1e0,
+str_1e1,
+str_1e2,
+str_1e3,
+0, 0, str_1e6,
+str_1e7,
+str_1e8,
+str_1e9,
+str_1ea,
+str_1eb,
+str_1ec,
+str_1ed,
+str_1ee,
+str_1ef,
+str_1f0,
+str_1f1,
+str_1f2,
+str_1f3,
+str_1f4,
+str_1f5,
+0, 0, str_1f8,
+str_1f9,
+str_1fa,
+str_1fb,
+str_1fc,
+str_1fd,
+str_1fe,
+str_1ff,
+0};
+
+static const unichar_t * const tab_2[] = {
+str_200,
+str_201,
+str_202,
+str_203,
+str_204,
+str_205,
+str_206,
+str_207,
+str_208,
+str_209,
+str_20a,
+str_20b,
+str_20c,
+str_20d,
+str_20e,
+str_20f,
+str_210,
+str_211,
+str_212,
+str_213,
+str_214,
+str_215,
+str_216,
+str_217,
+str_218,
+str_219,
+str_21a,
+str_21b,
+0, 0, str_21e,
+str_21f,
+0, 0, 0, 0, 0, 0, str_226,
+str_227,
+str_228,
+str_229,
+str_22a,
+str_22b,
+str_22c,
+str_22d,
+str_22e,
+str_22f,
+str_230,
+str_231,
+str_232,
+str_233,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_269,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_278,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_292,
+0, 0, 0, 0, 0, 0, str_299,
+0, 0, str_29c,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2b0,
+str_2b1,
+str_2b2,
+str_2b3,
+str_2b4,
+str_2b5,
+str_2b6,
+str_2b7,
+str_2b8,
+str_2b9,
+str_2ba,
+0, str_2bc,
+0, 0, 0, 0, 0, 0, 0, str_2c4,
+0, str_2c6,
+0, str_2c8,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2d8,
+str_2d9,
+str_2da,
+str_2db,
+str_2dc,
+str_2dd,
+0, 0, str_2e0,
+str_2e1,
+str_2e2,
+str_2e3,
+str_2e4,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_3[] = {
+0, str_301,
+str_302,
+str_303,
+0, 0, 0, 0, str_308,
+0, str_30a,
+str_30b,
+0, 0, str_30e,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_327,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_340,
+str_341,
+0, str_343,
+str_344,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_374,
+str_375,
+0, 0, 0, 0, str_37a,
+0, 0, 0, str_37e,
+0, 0, 0, 0, 0, str_384,
+str_385,
+str_386,
+str_387,
+str_388,
+str_389,
+str_38a,
+0, str_38c,
+0, str_38e,
+str_38f,
+str_390,
+str_391,
+str_392,
+str_393,
+0, str_395,
+str_396,
+str_397,
+0, str_399,
+str_39a,
+0, str_39c,
+str_39d,
+0, str_39f,
+0, str_3a1,
+0, 0, str_3a4,
+str_3a5,
+0, str_3a7,
+0, 0, str_3aa,
+str_3ab,
+str_3ac,
+str_3ad,
+str_3ae,
+str_3af,
+str_3b0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, str_3ba,
+0, 0, 0, 0, str_3bf,
+0, str_3c1,
+0, 0, 0, 0, 0, str_3c7,
+0, 0, str_3ca,
+str_3cb,
+str_3cc,
+str_3cd,
+str_3ce,
+0, str_3d0,
+str_3d1,
+str_3d2,
+str_3d3,
+str_3d4,
+str_3d5,
+str_3d6,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_3f0,
+str_3f1,
+str_3f2,
+0, str_3f4,
+str_3f5,
+0, 0, 0, str_3f9,
+0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_4[] = {
+str_400,
+str_401,
+0, str_403,
+0, str_405,
+str_406,
+str_407,
+str_408,
+0, 0, 0, str_40c,
+str_40d,
+str_40e,
+0, str_410,
+0, str_412,
+str_413,
+0, str_415,
+0, 0, 0, str_419,
+str_41a,
+0, str_41c,
+str_41d,
+str_41e,
+str_41f,
+str_420,
+str_421,
+str_422,
+0, str_424,
+str_425,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_430,
+0, 0, 0, 0, str_435,
+0, 0, 0, str_439,
+str_43a,
+0, 0, 0, str_43e,
+str_43f,
+str_440,
+str_441,
+0, str_443,
+0, str_445,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_450,
+str_451,
+0, str_453,
+0, str_455,
+str_456,
+str_457,
+str_458,
+0, 0, 0, str_45c,
+str_45d,
+str_45e,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_470,
+str_471,
+0, 0, 0, 0, str_476,
+str_477,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_4ae,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_4c0,
+str_4c1,
+str_4c2,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_4d0,
+str_4d1,
+str_4d2,
+str_4d3,
+str_4d4,
+str_4d5,
+str_4d6,
+str_4d7,
+0, 0, str_4da,
+str_4db,
+str_4dc,
+str_4dd,
+str_4de,
+str_4df,
+str_4e0,
+str_4e1,
+str_4e2,
+str_4e3,
+str_4e4,
+str_4e5,
+str_4e6,
+str_4e7,
+str_4e8,
+str_4e9,
+str_4ea,
+str_4eb,
+str_4ec,
+str_4ed,
+str_4ee,
+str_4ef,
+str_4f0,
+str_4f1,
+str_4f2,
+str_4f3,
+str_4f4,
+str_4f5,
+0, 0, str_4f8,
+str_4f9,
+0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_5[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_54f,
+0, 0, 0, 0, 0, str_555,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_570,
+0, 0, 0, 0, 0, 0, 0, str_578,
+0, str_57a,
+0, 0, str_57d,
+0, 0, 0, str_581,
+str_582,
+0, str_584,
+str_585,
+0, str_587,
+0, str_589,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_5f0,
+str_5f1,
+str_5f2,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_6[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_60c,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_621,
+str_622,
+str_623,
+str_624,
+str_625,
+str_626,
+str_627,
+str_628,
+str_629,
+str_62a,
+str_62b,
+str_62c,
+str_62d,
+str_62e,
+str_62f,
+str_630,
+str_631,
+str_632,
+str_633,
+str_634,
+str_635,
+str_636,
+str_637,
+str_638,
+str_639,
+str_63a,
+0, 0, 0, 0, 0, 0, str_641,
+str_642,
+str_643,
+str_644,
+str_645,
+str_646,
+str_647,
+str_648,
+str_649,
+str_64a,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_66a,
+0, str_66c,
+str_66d,
+0, 0, 0, str_671,
+0, 0, 0, str_675,
+str_676,
+str_677,
+str_678,
+str_679,
+str_67a,
+str_67b,
+0, 0, str_67e,
+str_67f,
+str_680,
+0, 0, str_683,
+str_684,
+0, str_686,
+str_687,
+str_688,
+0, 0, 0, str_68c,
+str_68d,
+str_68e,
+0, 0, str_691,
+0, 0, 0, 0, 0, 0, str_698,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_6a4,
+0, str_6a6,
+0, 0, str_6a9,
+0, 0, 0, str_6ad,
+0, str_6af,
+0, str_6b1,
+0, str_6b3,
+0, 0, 0, 0, 0, 0, str_6ba,
+str_6bb,
+0, 0, str_6be,
+0, str_6c0,
+str_6c1,
+str_6c2,
+0, 0, str_6c5,
+str_6c6,
+str_6c7,
+str_6c8,
+str_6c9,
+0, str_6cb,
+str_6cc,
+0, 0, 0, str_6d0,
+0, str_6d2,
+str_6d3,
+str_6d4,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_9[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_929,
+0, 0, 0, 0, 0, 0, 0, str_931,
+0, 0, str_934,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_958,
+str_959,
+str_95a,
+str_95b,
+str_95c,
+str_95d,
+str_95e,
+str_95f,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_9cb,
+str_9cc,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_9dc,
+str_9dd,
+0, str_9df,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_a[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_a33,
+0, 0, str_a36,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_a59,
+str_a5a,
+str_a5b,
+0, 0, str_a5e,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_b[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_b48,
+0, 0, str_b4b,
+str_b4c,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_b5c,
+str_b5d,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_b94,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_bca,
+str_bcb,
+str_bcc,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_c[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_c48,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_cc0,
+0, 0, 0, 0, 0, 0, str_cc7,
+str_cc8,
+0, str_cca,
+str_ccb,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_d[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_d4a,
+str_d4b,
+str_d4c,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_dda,
+0, str_ddc,
+str_ddd,
+str_dde,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_e[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_e33,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_eb3,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_edc,
+str_edd,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_f[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_f0c,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_f43,
+0, 0, 0, 0, 0, 0, 0, 0, 0, str_f4d,
+0, 0, 0, 0, str_f52,
+0, 0, 0, 0, str_f57,
+0, 0, 0, 0, str_f5c,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_f69,
+0, 0, 0, 0, 0, 0, 0, 0, 0, str_f73,
+0, str_f75,
+str_f76,
+str_f77,
+str_f78,
+str_f79,
+0, 0, 0, 0, 0, 0, 0, str_f81,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_f93,
+0, 0, 0, 0, 0, 0, 0, 0, 0, str_f9d,
+0, 0, 0, 0, str_fa2,
+0, 0, 0, 0, str_fa7,
+0, 0, 0, 0, str_fac,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fb9,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_10[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_1026,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_10fc,
+0, 0, 0, 0};
+
+static const unichar_t * const tab_11[] = {
+0, str_1101,
+0, 0, str_1104,
+0, 0, 0, str_1108,
+0, str_110a,
+0, 0, str_110d,
+0, 0, 0, 0, 0, str_1113,
+str_1114,
+str_1115,
+str_1116,
+str_1117,
+str_1118,
+str_1119,
+str_111a,
+str_111b,
+str_111c,
+str_111d,
+str_111e,
+str_111f,
+str_1120,
+str_1121,
+str_1122,
+str_1123,
+str_1124,
+str_1125,
+str_1126,
+str_1127,
+str_1128,
+str_1129,
+str_112a,
+str_112b,
+str_112c,
+str_112d,
+str_112e,
+str_112f,
+str_1130,
+str_1131,
+str_1132,
+str_1133,
+str_1134,
+str_1135,
+str_1136,
+str_1137,
+str_1138,
+str_1139,
+str_113a,
+str_113b,
+0, str_113d,
+0, str_113f,
+0, str_1141,
+str_1142,
+str_1143,
+str_1144,
+str_1145,
+str_1146,
+str_1147,
+str_1148,
+str_1149,
+str_114a,
+str_114b,
+0, str_114d,
+0, str_114f,
+0, str_1151,
+str_1152,
+str_1153,
+0, 0, str_1156,
+str_1157,
+str_1158,
+0, 0, 0, 0, 0, 0, 0, 0, 0, str_1162,
+0, str_1164,
+0, str_1166,
+0, str_1168,
+0, str_116a,
+str_116b,
+str_116c,
+0, 0, str_116f,
+str_1170,
+str_1171,
+0, 0, str_1174,
+0, str_1176,
+str_1177,
+str_1178,
+str_1179,
+str_117a,
+str_117b,
+str_117c,
+str_117d,
+str_117e,
+str_117f,
+str_1180,
+str_1181,
+str_1182,
+str_1183,
+str_1184,
+str_1185,
+str_1186,
+str_1187,
+str_1188,
+str_1189,
+str_118a,
+str_118b,
+str_118c,
+str_118d,
+str_118e,
+str_118f,
+str_1190,
+str_1191,
+str_1192,
+str_1193,
+str_1194,
+str_1195,
+str_1196,
+str_1197,
+str_1198,
+str_1199,
+str_119a,
+str_119b,
+str_119c,
+str_119d,
+0, str_119f,
+str_11a0,
+str_11a1,
+str_11a2,
+0, 0, 0, 0, 0, str_11a8,
+str_11a9,
+str_11aa,
+str_11ab,
+str_11ac,
+str_11ad,
+str_11ae,
+str_11af,
+str_11b0,
+str_11b1,
+str_11b2,
+str_11b3,
+str_11b4,
+str_11b5,
+str_11b6,
+str_11b7,
+str_11b8,
+str_11b9,
+str_11ba,
+str_11bb,
+str_11bc,
+str_11bd,
+str_11be,
+str_11bf,
+str_11c0,
+str_11c1,
+str_11c2,
+str_11c3,
+str_11c4,
+str_11c5,
+str_11c6,
+str_11c7,
+str_11c8,
+str_11c9,
+str_11ca,
+str_11cb,
+str_11cc,
+str_11cd,
+str_11ce,
+str_11cf,
+str_11d0,
+str_11d1,
+str_11d2,
+str_11d3,
+str_11d4,
+str_11d5,
+str_11d6,
+str_11d7,
+str_11d8,
+str_11d9,
+str_11da,
+str_11db,
+str_11dc,
+str_11dd,
+str_11de,
+str_11df,
+str_11e0,
+str_11e1,
+str_11e2,
+str_11e3,
+str_11e4,
+str_11e5,
+str_11e6,
+str_11e7,
+str_11e8,
+str_11e9,
+str_11ea,
+str_11eb,
+str_11ec,
+str_11ed,
+str_11ee,
+str_11ef,
+str_11f0,
+str_11f1,
+str_11f2,
+str_11f3,
+str_11f4,
+str_11f5,
+str_11f6,
+str_11f7,
+str_11f8,
+str_11f9,
+0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_13[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_13a0,
+str_13a1,
+str_13a2,
+0, 0, 0, 0, 0, 0, str_13a9,
+str_13aa,
+str_13ab,
+str_13ac,
+0, 0, 0, 0, str_13b1,
+0, str_13b3,
+0, 0, 0, str_13b7,
+0, 0, 0, str_13bb,
+0, 0, str_13be,
+0, str_13c0,
+0, str_13c2,
+str_13c3,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_13cf,
+0, 0, 0, 0, 0, 0, 0, 0, 0, str_13d9,
+str_13da,
+0, 0, 0, str_13de,
+str_13df,
+0, 0, str_13e2,
+0, 0, 0, str_13e6,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_13f4,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_1b[] = {
+0, 0, 0, 0, 0, 0, str_1b06,
+0, str_1b08,
+0, str_1b0a,
+0, str_1b0c,
+0, str_1b0e,
+0, 0, 0, str_1b12,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_1b3b,
+0, str_1b3d,
+0, 0, str_1b40,
+str_1b41,
+0, str_1b43,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_1d[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_1d2c,
+str_1d2d,
+str_1d2e,
+0, str_1d30,
+str_1d31,
+str_1d32,
+str_1d33,
+str_1d34,
+str_1d35,
+str_1d36,
+str_1d37,
+str_1d38,
+str_1d39,
+str_1d3a,
+0, str_1d3c,
+str_1d3d,
+str_1d3e,
+str_1d3f,
+str_1d40,
+str_1d41,
+str_1d42,
+str_1d43,
+str_1d44,
+str_1d45,
+str_1d46,
+str_1d47,
+str_1d48,
+str_1d49,
+str_1d4a,
+str_1d4b,
+str_1d4c,
+str_1d4d,
+0, str_1d4f,
+str_1d50,
+str_1d51,
+str_1d52,
+str_1d53,
+str_1d54,
+str_1d55,
+str_1d56,
+str_1d57,
+str_1d58,
+str_1d59,
+str_1d5a,
+str_1d5b,
+str_1d5c,
+str_1d5d,
+str_1d5e,
+str_1d5f,
+str_1d60,
+str_1d61,
+str_1d62,
+str_1d63,
+str_1d64,
+str_1d65,
+str_1d66,
+str_1d67,
+str_1d68,
+str_1d69,
+str_1d6a,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_1d78,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_1d9b,
+str_1d9c,
+str_1d9d,
+str_1d9e,
+str_1d9f,
+str_1da0,
+str_1da1,
+str_1da2,
+str_1da3,
+str_1da4,
+str_1da5,
+str_1da6,
+str_1da7,
+str_1da8,
+str_1da9,
+str_1daa,
+str_1dab,
+str_1dac,
+str_1dad,
+str_1dae,
+str_1daf,
+str_1db0,
+str_1db1,
+str_1db2,
+str_1db3,
+str_1db4,
+str_1db5,
+str_1db6,
+str_1db7,
+str_1db8,
+str_1db9,
+str_1dba,
+str_1dbb,
+str_1dbc,
+str_1dbd,
+str_1dbe,
+str_1dbf,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_1e[] = {
+str_1e00,
+str_1e01,
+str_1e02,
+str_1e03,
+str_1e04,
+str_1e05,
+str_1e06,
+str_1e07,
+str_1e08,
+str_1e09,
+str_1e0a,
+str_1e0b,
+str_1e0c,
+str_1e0d,
+str_1e0e,
+str_1e0f,
+str_1e10,
+str_1e11,
+str_1e12,
+str_1e13,
+str_1e14,
+str_1e15,
+str_1e16,
+str_1e17,
+str_1e18,
+str_1e19,
+str_1e1a,
+str_1e1b,
+str_1e1c,
+str_1e1d,
+str_1e1e,
+str_1e1f,
+str_1e20,
+str_1e21,
+str_1e22,
+str_1e23,
+str_1e24,
+str_1e25,
+str_1e26,
+str_1e27,
+str_1e28,
+str_1e29,
+str_1e2a,
+str_1e2b,
+str_1e2c,
+str_1e2d,
+str_1e2e,
+str_1e2f,
+str_1e30,
+str_1e31,
+str_1e32,
+str_1e33,
+str_1e34,
+str_1e35,
+str_1e36,
+str_1e37,
+str_1e38,
+str_1e39,
+str_1e3a,
+str_1e3b,
+str_1e3c,
+str_1e3d,
+str_1e3e,
+str_1e3f,
+str_1e40,
+str_1e41,
+str_1e42,
+str_1e43,
+str_1e44,
+str_1e45,
+str_1e46,
+str_1e47,
+str_1e48,
+str_1e49,
+str_1e4a,
+str_1e4b,
+str_1e4c,
+str_1e4d,
+str_1e4e,
+str_1e4f,
+str_1e50,
+str_1e51,
+str_1e52,
+str_1e53,
+str_1e54,
+str_1e55,
+str_1e56,
+str_1e57,
+str_1e58,
+str_1e59,
+str_1e5a,
+str_1e5b,
+str_1e5c,
+str_1e5d,
+str_1e5e,
+str_1e5f,
+str_1e60,
+str_1e61,
+str_1e62,
+str_1e63,
+str_1e64,
+str_1e65,
+str_1e66,
+str_1e67,
+str_1e68,
+str_1e69,
+str_1e6a,
+str_1e6b,
+str_1e6c,
+str_1e6d,
+str_1e6e,
+str_1e6f,
+str_1e70,
+str_1e71,
+str_1e72,
+str_1e73,
+str_1e74,
+str_1e75,
+str_1e76,
+str_1e77,
+str_1e78,
+str_1e79,
+str_1e7a,
+str_1e7b,
+str_1e7c,
+str_1e7d,
+str_1e7e,
+str_1e7f,
+str_1e80,
+str_1e81,
+str_1e82,
+str_1e83,
+str_1e84,
+str_1e85,
+str_1e86,
+str_1e87,
+str_1e88,
+str_1e89,
+str_1e8a,
+str_1e8b,
+str_1e8c,
+str_1e8d,
+str_1e8e,
+str_1e8f,
+str_1e90,
+str_1e91,
+str_1e92,
+str_1e93,
+str_1e94,
+str_1e95,
+str_1e96,
+str_1e97,
+str_1e98,
+str_1e99,
+str_1e9a,
+str_1e9b,
+0, 0, 0, 0, str_1ea0,
+str_1ea1,
+str_1ea2,
+str_1ea3,
+str_1ea4,
+str_1ea5,
+str_1ea6,
+str_1ea7,
+str_1ea8,
+str_1ea9,
+str_1eaa,
+str_1eab,
+str_1eac,
+str_1ead,
+str_1eae,
+str_1eaf,
+str_1eb0,
+str_1eb1,
+str_1eb2,
+str_1eb3,
+str_1eb4,
+str_1eb5,
+str_1eb6,
+str_1eb7,
+str_1eb8,
+str_1eb9,
+str_1eba,
+str_1ebb,
+str_1ebc,
+str_1ebd,
+str_1ebe,
+str_1ebf,
+str_1ec0,
+str_1ec1,
+str_1ec2,
+str_1ec3,
+str_1ec4,
+str_1ec5,
+str_1ec6,
+str_1ec7,
+str_1ec8,
+str_1ec9,
+str_1eca,
+str_1ecb,
+str_1ecc,
+str_1ecd,
+str_1ece,
+str_1ecf,
+str_1ed0,
+str_1ed1,
+str_1ed2,
+str_1ed3,
+str_1ed4,
+str_1ed5,
+str_1ed6,
+str_1ed7,
+str_1ed8,
+str_1ed9,
+str_1eda,
+str_1edb,
+str_1edc,
+str_1edd,
+str_1ede,
+str_1edf,
+str_1ee0,
+str_1ee1,
+str_1ee2,
+str_1ee3,
+str_1ee4,
+str_1ee5,
+str_1ee6,
+str_1ee7,
+str_1ee8,
+str_1ee9,
+str_1eea,
+str_1eeb,
+str_1eec,
+str_1eed,
+str_1eee,
+str_1eef,
+str_1ef0,
+str_1ef1,
+str_1ef2,
+str_1ef3,
+str_1ef4,
+str_1ef5,
+str_1ef6,
+str_1ef7,
+str_1ef8,
+str_1ef9,
+0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_1f[] = {
+str_1f00,
+str_1f01,
+str_1f02,
+str_1f03,
+str_1f04,
+str_1f05,
+str_1f06,
+str_1f07,
+str_1f08,
+str_1f09,
+str_1f0a,
+str_1f0b,
+str_1f0c,
+str_1f0d,
+str_1f0e,
+str_1f0f,
+str_1f10,
+str_1f11,
+str_1f12,
+str_1f13,
+str_1f14,
+str_1f15,
+0, 0, str_1f18,
+str_1f19,
+str_1f1a,
+str_1f1b,
+str_1f1c,
+str_1f1d,
+0, 0, str_1f20,
+str_1f21,
+str_1f22,
+str_1f23,
+str_1f24,
+str_1f25,
+str_1f26,
+str_1f27,
+str_1f28,
+str_1f29,
+str_1f2a,
+str_1f2b,
+str_1f2c,
+str_1f2d,
+str_1f2e,
+str_1f2f,
+str_1f30,
+str_1f31,
+str_1f32,
+str_1f33,
+str_1f34,
+str_1f35,
+str_1f36,
+str_1f37,
+str_1f38,
+str_1f39,
+str_1f3a,
+str_1f3b,
+str_1f3c,
+str_1f3d,
+str_1f3e,
+str_1f3f,
+str_1f40,
+str_1f41,
+str_1f42,
+str_1f43,
+str_1f44,
+str_1f45,
+0, 0, str_1f48,
+str_1f49,
+str_1f4a,
+str_1f4b,
+str_1f4c,
+str_1f4d,
+0, 0, str_1f50,
+str_1f51,
+str_1f52,
+str_1f53,
+str_1f54,
+str_1f55,
+str_1f56,
+str_1f57,
+0, str_1f59,
+0, str_1f5b,
+0, str_1f5d,
+0, str_1f5f,
+str_1f60,
+str_1f61,
+str_1f62,
+str_1f63,
+str_1f64,
+str_1f65,
+str_1f66,
+str_1f67,
+str_1f68,
+str_1f69,
+str_1f6a,
+str_1f6b,
+str_1f6c,
+str_1f6d,
+str_1f6e,
+str_1f6f,
+str_1f70,
+str_1f71,
+str_1f72,
+str_1f73,
+str_1f74,
+str_1f75,
+str_1f76,
+str_1f77,
+str_1f78,
+str_1f79,
+str_1f7a,
+str_1f7b,
+str_1f7c,
+str_1f7d,
+0, 0, str_1f80,
+str_1f81,
+str_1f82,
+str_1f83,
+str_1f84,
+str_1f85,
+str_1f86,
+str_1f87,
+str_1f88,
+str_1f89,
+str_1f8a,
+str_1f8b,
+str_1f8c,
+str_1f8d,
+str_1f8e,
+str_1f8f,
+str_1f90,
+str_1f91,
+str_1f92,
+str_1f93,
+str_1f94,
+str_1f95,
+str_1f96,
+str_1f97,
+str_1f98,
+str_1f99,
+str_1f9a,
+str_1f9b,
+str_1f9c,
+str_1f9d,
+str_1f9e,
+str_1f9f,
+str_1fa0,
+str_1fa1,
+str_1fa2,
+str_1fa3,
+str_1fa4,
+str_1fa5,
+str_1fa6,
+str_1fa7,
+str_1fa8,
+str_1fa9,
+str_1faa,
+str_1fab,
+str_1fac,
+str_1fad,
+str_1fae,
+str_1faf,
+str_1fb0,
+str_1fb1,
+str_1fb2,
+str_1fb3,
+str_1fb4,
+0, str_1fb6,
+str_1fb7,
+str_1fb8,
+str_1fb9,
+str_1fba,
+str_1fbb,
+str_1fbc,
+str_1fbd,
+str_1fbe,
+str_1fbf,
+str_1fc0,
+str_1fc1,
+str_1fc2,
+str_1fc3,
+str_1fc4,
+0, str_1fc6,
+str_1fc7,
+str_1fc8,
+str_1fc9,
+str_1fca,
+str_1fcb,
+str_1fcc,
+str_1fcd,
+str_1fce,
+str_1fcf,
+str_1fd0,
+str_1fd1,
+str_1fd2,
+str_1fd3,
+0, 0, str_1fd6,
+str_1fd7,
+str_1fd8,
+str_1fd9,
+str_1fda,
+str_1fdb,
+0, str_1fdd,
+str_1fde,
+str_1fdf,
+str_1fe0,
+str_1fe1,
+str_1fe2,
+str_1fe3,
+str_1fe4,
+str_1fe5,
+str_1fe6,
+str_1fe7,
+str_1fe8,
+str_1fe9,
+str_1fea,
+str_1feb,
+str_1fec,
+str_1fed,
+str_1fee,
+str_1fef,
+0, 0, str_1ff2,
+str_1ff3,
+str_1ff4,
+0, str_1ff6,
+str_1ff7,
+str_1ff8,
+str_1ff9,
+str_1ffa,
+str_1ffb,
+str_1ffc,
+str_1ffd,
+str_1ffe,
+0, 0};
+
+static const unichar_t * const tab_20[] = {
+str_2000,
+str_2001,
+str_2002,
+str_2003,
+str_2004,
+str_2005,
+str_2006,
+str_2007,
+str_2008,
+str_2009,
+str_200a,
+0, 0, 0, 0, 0, str_2010,
+str_2011,
+str_2012,
+str_2013,
+str_2014,
+str_2015,
+str_2016,
+str_2017,
+str_2018,
+str_2019,
+0, 0, str_201c,
+str_201d,
+0, 0, 0, 0, 0, 0, str_2024,
+str_2025,
+str_2026,
+0, 0, 0, 0, 0, 0, 0, 0, str_202f,
+0, 0, str_2032,
+str_2033,
+str_2034,
+str_2035,
+str_2036,
+str_2037,
+0, str_2039,
+str_203a,
+0, str_203c,
+0, str_203e,
+0, 0, 0, 0, 0, 0, 0, 0, str_2047,
+str_2048,
+str_2049,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2057,
+0, 0, 0, 0, 0, 0, 0, str_205f,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2070,
+str_2071,
+0, 0, str_2074,
+str_2075,
+str_2076,
+str_2077,
+str_2078,
+str_2079,
+str_207a,
+str_207b,
+str_207c,
+str_207d,
+str_207e,
+str_207f,
+str_2080,
+str_2081,
+str_2082,
+str_2083,
+str_2084,
+str_2085,
+str_2086,
+str_2087,
+str_2088,
+str_2089,
+str_208a,
+str_208b,
+str_208c,
+str_208d,
+str_208e,
+0, str_2090,
+str_2091,
+str_2092,
+str_2093,
+str_2094,
+str_2095,
+str_2096,
+str_2097,
+str_2098,
+str_2099,
+str_209a,
+str_209b,
+str_209c,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_20a8,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_21[] = {
+str_2100,
+str_2101,
+str_2102,
+str_2103,
+0, str_2105,
+str_2106,
+str_2107,
+0, str_2109,
+str_210a,
+str_210b,
+str_210c,
+str_210d,
+str_210e,
+str_210f,
+str_2110,
+str_2111,
+str_2112,
+str_2113,
+0, str_2115,
+str_2116,
+0, 0, str_2119,
+str_211a,
+str_211b,
+str_211c,
+str_211d,
+0, 0, str_2120,
+str_2121,
+str_2122,
+0, str_2124,
+0, str_2126,
+0, str_2128,
+0, str_212a,
+str_212b,
+str_212c,
+str_212d,
+0, str_212f,
+str_2130,
+str_2131,
+0, str_2133,
+str_2134,
+str_2135,
+str_2136,
+str_2137,
+str_2138,
+str_2139,
+0, str_213b,
+str_213c,
+str_213d,
+str_213e,
+str_213f,
+str_2140,
+0, 0, 0, 0, str_2145,
+str_2146,
+str_2147,
+str_2148,
+str_2149,
+0, 0, 0, 0, 0, 0, str_2150,
+str_2151,
+str_2152,
+str_2153,
+str_2154,
+str_2155,
+str_2156,
+str_2157,
+str_2158,
+str_2159,
+str_215a,
+str_215b,
+str_215c,
+str_215d,
+str_215e,
+str_215f,
+str_2160,
+str_2161,
+str_2162,
+str_2163,
+str_2164,
+str_2165,
+str_2166,
+str_2167,
+str_2168,
+str_2169,
+str_216a,
+str_216b,
+str_216c,
+str_216d,
+str_216e,
+str_216f,
+str_2170,
+str_2171,
+str_2172,
+str_2173,
+str_2174,
+str_2175,
+str_2176,
+str_2177,
+str_2178,
+str_2179,
+str_217a,
+str_217b,
+str_217c,
+str_217d,
+str_217e,
+str_217f,
+0, 0, 0, 0, 0, 0, 0, 0, 0, str_2189,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_219a,
+str_219b,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_21ae,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_21cd,
+str_21ce,
+str_21cf,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_22[] = {
+0, 0, 0, 0, str_2204,
+str_2205,
+str_2206,
+0, 0, str_2209,
+0, 0, str_220c,
+0, 0, str_220f,
+0, str_2211,
+str_2212,
+0, 0, str_2215,
+str_2216,
+str_2217,
+str_2218,
+str_2219,
+0, 0, 0, 0, 0, 0, 0, 0, 0, str_2223,
+str_2224,
+str_2225,
+str_2226,
+0, 0, 0, 0, 0, str_222c,
+str_222d,
+0, str_222f,
+str_2230,
+0, 0, 0, 0, 0, str_2236,
+0, 0, 0, 0, 0, str_223c,
+0, 0, 0, 0, str_2241,
+0, 0, str_2244,
+0, 0, str_2247,
+0, str_2249,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2260,
+0, str_2262,
+0, 0, 0, 0, 0, 0, 0, str_226a,
+str_226b,
+0, str_226d,
+str_226e,
+str_226f,
+str_2270,
+str_2271,
+0, 0, str_2274,
+str_2275,
+0, 0, str_2278,
+str_2279,
+0, 0, 0, 0, 0, 0, str_2280,
+str_2281,
+0, 0, str_2284,
+str_2285,
+0, 0, str_2288,
+str_2289,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2299,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_22ac,
+str_22ad,
+str_22ae,
+str_22af,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_22c4,
+str_22c5,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_22e0,
+str_22e1,
+str_22e2,
+str_22e3,
+0, 0, 0, 0, 0, 0, str_22ea,
+str_22eb,
+str_22ec,
+str_22ed,
+0, str_22ef,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_23[] = {
+0, 0, 0, str_2303,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2329,
+str_232a,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2373,
+str_2374,
+str_2375,
+0, 0, 0, 0, str_237a,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_24[] = {
+str_2400,
+str_2401,
+str_2402,
+str_2403,
+str_2404,
+str_2405,
+str_2406,
+str_2407,
+str_2408,
+str_2409,
+str_240a,
+str_240b,
+str_240c,
+str_240d,
+str_240e,
+str_240f,
+str_2410,
+str_2411,
+str_2412,
+str_2413,
+str_2414,
+str_2415,
+str_2416,
+str_2417,
+str_2418,
+str_2419,
+str_241a,
+str_241b,
+str_241c,
+str_241d,
+str_241e,
+str_241f,
+str_2420,
+str_2421,
+str_2422,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2460,
+str_2461,
+str_2462,
+str_2463,
+str_2464,
+str_2465,
+str_2466,
+str_2467,
+str_2468,
+str_2469,
+str_246a,
+str_246b,
+str_246c,
+str_246d,
+str_246e,
+str_246f,
+str_2470,
+str_2471,
+str_2472,
+str_2473,
+str_2474,
+str_2475,
+str_2476,
+str_2477,
+str_2478,
+str_2479,
+str_247a,
+str_247b,
+str_247c,
+str_247d,
+str_247e,
+str_247f,
+str_2480,
+str_2481,
+str_2482,
+str_2483,
+str_2484,
+str_2485,
+str_2486,
+str_2487,
+str_2488,
+str_2489,
+str_248a,
+str_248b,
+str_248c,
+str_248d,
+str_248e,
+str_248f,
+str_2490,
+str_2491,
+str_2492,
+str_2493,
+str_2494,
+str_2495,
+str_2496,
+str_2497,
+str_2498,
+str_2499,
+str_249a,
+str_249b,
+str_249c,
+str_249d,
+str_249e,
+str_249f,
+str_24a0,
+str_24a1,
+str_24a2,
+str_24a3,
+str_24a4,
+str_24a5,
+str_24a6,
+str_24a7,
+str_24a8,
+str_24a9,
+str_24aa,
+str_24ab,
+str_24ac,
+str_24ad,
+str_24ae,
+str_24af,
+str_24b0,
+str_24b1,
+str_24b2,
+str_24b3,
+str_24b4,
+str_24b5,
+str_24b6,
+str_24b7,
+str_24b8,
+str_24b9,
+str_24ba,
+str_24bb,
+str_24bc,
+str_24bd,
+str_24be,
+str_24bf,
+str_24c0,
+str_24c1,
+str_24c2,
+str_24c3,
+str_24c4,
+str_24c5,
+str_24c6,
+str_24c7,
+str_24c8,
+str_24c9,
+str_24ca,
+str_24cb,
+str_24cc,
+str_24cd,
+str_24ce,
+str_24cf,
+str_24d0,
+str_24d1,
+str_24d2,
+str_24d3,
+str_24d4,
+str_24d5,
+str_24d6,
+str_24d7,
+str_24d8,
+str_24d9,
+str_24da,
+str_24db,
+str_24dc,
+str_24dd,
+str_24de,
+str_24df,
+str_24e0,
+str_24e1,
+str_24e2,
+str_24e3,
+str_24e4,
+str_24e5,
+str_24e6,
+str_24e7,
+str_24e8,
+str_24e9,
+str_24ea,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_25[] = {
+str_2500,
+0, str_2502,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_25b3,
+0, 0, 0, 0, str_25b8,
+0, 0, 0, 0, str_25bd,
+0, 0, 0, 0, 0, 0, 0, 0, 0, str_25c7,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_25e6,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_26[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2662,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_27[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2731,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2758,
+0, 0, 0, 0, 0, 0, 0, 0, 0, str_2762,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_2a[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2a0c,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2a74,
+str_2a75,
+str_2a76,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2adc,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_2c[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2c7c,
+str_2c7d,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_2d[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2d6f,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_2e[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2e28,
+str_2e29,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2e9f,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2ef3,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_2f[] = {
+str_2f00,
+str_2f01,
+str_2f02,
+str_2f03,
+str_2f04,
+str_2f05,
+str_2f06,
+str_2f07,
+str_2f08,
+str_2f09,
+str_2f0a,
+str_2f0b,
+str_2f0c,
+str_2f0d,
+str_2f0e,
+str_2f0f,
+str_2f10,
+str_2f11,
+str_2f12,
+str_2f13,
+str_2f14,
+str_2f15,
+str_2f16,
+str_2f17,
+str_2f18,
+str_2f19,
+str_2f1a,
+str_2f1b,
+str_2f1c,
+str_2f1d,
+str_2f1e,
+str_2f1f,
+str_2f20,
+str_2f21,
+str_2f22,
+str_2f23,
+str_2f24,
+str_2f25,
+str_2f26,
+str_2f27,
+str_2f28,
+str_2f29,
+str_2f2a,
+str_2f2b,
+str_2f2c,
+str_2f2d,
+str_2f2e,
+str_2f2f,
+str_2f30,
+str_2f31,
+str_2f32,
+str_2f33,
+str_2f34,
+str_2f35,
+str_2f36,
+str_2f37,
+str_2f38,
+str_2f39,
+str_2f3a,
+str_2f3b,
+str_2f3c,
+str_2f3d,
+str_2f3e,
+str_2f3f,
+str_2f40,
+str_2f41,
+str_2f42,
+str_2f43,
+str_2f44,
+str_2f45,
+str_2f46,
+str_2f47,
+str_2f48,
+str_2f49,
+str_2f4a,
+str_2f4b,
+str_2f4c,
+str_2f4d,
+str_2f4e,
+str_2f4f,
+str_2f50,
+str_2f51,
+str_2f52,
+str_2f53,
+str_2f54,
+str_2f55,
+str_2f56,
+str_2f57,
+str_2f58,
+str_2f59,
+str_2f5a,
+str_2f5b,
+str_2f5c,
+str_2f5d,
+str_2f5e,
+str_2f5f,
+str_2f60,
+str_2f61,
+str_2f62,
+str_2f63,
+str_2f64,
+str_2f65,
+str_2f66,
+str_2f67,
+str_2f68,
+str_2f69,
+str_2f6a,
+str_2f6b,
+str_2f6c,
+str_2f6d,
+str_2f6e,
+str_2f6f,
+str_2f70,
+str_2f71,
+str_2f72,
+str_2f73,
+str_2f74,
+str_2f75,
+str_2f76,
+str_2f77,
+str_2f78,
+str_2f79,
+str_2f7a,
+str_2f7b,
+str_2f7c,
+str_2f7d,
+str_2f7e,
+str_2f7f,
+str_2f80,
+str_2f81,
+str_2f82,
+str_2f83,
+str_2f84,
+str_2f85,
+str_2f86,
+str_2f87,
+str_2f88,
+str_2f89,
+str_2f8a,
+str_2f8b,
+str_2f8c,
+str_2f8d,
+str_2f8e,
+str_2f8f,
+str_2f90,
+str_2f91,
+str_2f92,
+str_2f93,
+str_2f94,
+str_2f95,
+str_2f96,
+str_2f97,
+str_2f98,
+str_2f99,
+str_2f9a,
+str_2f9b,
+str_2f9c,
+str_2f9d,
+str_2f9e,
+str_2f9f,
+str_2fa0,
+str_2fa1,
+str_2fa2,
+str_2fa3,
+str_2fa4,
+str_2fa5,
+str_2fa6,
+str_2fa7,
+str_2fa8,
+str_2fa9,
+str_2faa,
+str_2fab,
+str_2fac,
+str_2fad,
+str_2fae,
+str_2faf,
+str_2fb0,
+str_2fb1,
+str_2fb2,
+str_2fb3,
+str_2fb4,
+str_2fb5,
+str_2fb6,
+str_2fb7,
+str_2fb8,
+str_2fb9,
+str_2fba,
+str_2fbb,
+str_2fbc,
+str_2fbd,
+str_2fbe,
+str_2fbf,
+str_2fc0,
+str_2fc1,
+str_2fc2,
+str_2fc3,
+str_2fc4,
+str_2fc5,
+str_2fc6,
+str_2fc7,
+str_2fc8,
+str_2fc9,
+str_2fca,
+str_2fcb,
+str_2fcc,
+str_2fcd,
+str_2fce,
+str_2fcf,
+str_2fd0,
+str_2fd1,
+str_2fd2,
+str_2fd3,
+str_2fd4,
+str_2fd5,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_30[] = {
+str_3000,
+str_3001,
+0, 0, 0, 0, 0, 0, str_3008,
+str_3009,
+str_300a,
+str_300b,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_3036,
+0, str_3038,
+str_3039,
+str_303a,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_304c,
+0, str_304e,
+0, str_3050,
+0, str_3052,
+0, str_3054,
+0, str_3056,
+0, str_3058,
+0, str_305a,
+0, str_305c,
+0, str_305e,
+0, str_3060,
+0, str_3062,
+0, 0, str_3065,
+0, str_3067,
+0, str_3069,
+0, 0, 0, 0, 0, 0, str_3070,
+str_3071,
+0, str_3073,
+str_3074,
+0, str_3076,
+str_3077,
+0, str_3079,
+str_307a,
+0, str_307c,
+str_307d,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_3094,
+0, 0, 0, 0, 0, 0, str_309b,
+str_309c,
+0, str_309e,
+str_309f,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_30ac,
+0, str_30ae,
+0, str_30b0,
+0, str_30b2,
+0, str_30b4,
+0, str_30b6,
+0, str_30b8,
+0, str_30ba,
+0, str_30bc,
+0, str_30be,
+0, str_30c0,
+0, str_30c2,
+0, 0, str_30c5,
+0, str_30c7,
+0, str_30c9,
+0, 0, 0, 0, 0, 0, str_30d0,
+str_30d1,
+0, str_30d3,
+str_30d4,
+0, str_30d6,
+str_30d7,
+0, str_30d9,
+str_30da,
+0, str_30dc,
+str_30dd,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_30f4,
+0, 0, str_30f7,
+str_30f8,
+str_30f9,
+str_30fa,
+0, 0, 0, str_30fe,
+str_30ff,
+0};
+
+static const unichar_t * const tab_31[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_3131,
+str_3132,
+str_3133,
+str_3134,
+str_3135,
+str_3136,
+str_3137,
+str_3138,
+str_3139,
+str_313a,
+str_313b,
+str_313c,
+str_313d,
+str_313e,
+str_313f,
+str_3140,
+str_3141,
+str_3142,
+str_3143,
+str_3144,
+str_3145,
+str_3146,
+str_3147,
+str_3148,
+str_3149,
+str_314a,
+str_314b,
+str_314c,
+str_314d,
+str_314e,
+str_314f,
+str_3150,
+str_3151,
+str_3152,
+str_3153,
+str_3154,
+str_3155,
+str_3156,
+str_3157,
+str_3158,
+str_3159,
+str_315a,
+str_315b,
+str_315c,
+str_315d,
+str_315e,
+str_315f,
+str_3160,
+str_3161,
+str_3162,
+str_3163,
+str_3164,
+str_3165,
+str_3166,
+str_3167,
+str_3168,
+str_3169,
+str_316a,
+str_316b,
+str_316c,
+str_316d,
+str_316e,
+str_316f,
+str_3170,
+str_3171,
+str_3172,
+str_3173,
+str_3174,
+str_3175,
+str_3176,
+str_3177,
+str_3178,
+str_3179,
+str_317a,
+str_317b,
+str_317c,
+str_317d,
+str_317e,
+str_317f,
+str_3180,
+str_3181,
+str_3182,
+str_3183,
+str_3184,
+str_3185,
+str_3186,
+str_3187,
+str_3188,
+str_3189,
+str_318a,
+str_318b,
+str_318c,
+str_318d,
+str_318e,
+0, 0, 0, str_3192,
+str_3193,
+str_3194,
+str_3195,
+str_3196,
+str_3197,
+str_3198,
+str_3199,
+str_319a,
+str_319b,
+str_319c,
+str_319d,
+str_319e,
+str_319f,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_32[] = {
+str_3200,
+str_3201,
+str_3202,
+str_3203,
+str_3204,
+str_3205,
+str_3206,
+str_3207,
+str_3208,
+str_3209,
+str_320a,
+str_320b,
+str_320c,
+str_320d,
+str_320e,
+str_320f,
+str_3210,
+str_3211,
+str_3212,
+str_3213,
+str_3214,
+str_3215,
+str_3216,
+str_3217,
+str_3218,
+str_3219,
+str_321a,
+str_321b,
+str_321c,
+str_321d,
+str_321e,
+0, str_3220,
+str_3221,
+str_3222,
+str_3223,
+str_3224,
+str_3225,
+str_3226,
+str_3227,
+str_3228,
+str_3229,
+str_322a,
+str_322b,
+str_322c,
+str_322d,
+str_322e,
+str_322f,
+str_3230,
+str_3231,
+str_3232,
+str_3233,
+str_3234,
+str_3235,
+str_3236,
+str_3237,
+str_3238,
+str_3239,
+str_323a,
+str_323b,
+str_323c,
+str_323d,
+str_323e,
+str_323f,
+str_3240,
+str_3241,
+str_3242,
+str_3243,
+str_3244,
+str_3245,
+str_3246,
+str_3247,
+0, 0, 0, 0, 0, 0, 0, 0, str_3250,
+str_3251,
+str_3252,
+str_3253,
+str_3254,
+str_3255,
+str_3256,
+str_3257,
+str_3258,
+str_3259,
+str_325a,
+str_325b,
+str_325c,
+str_325d,
+str_325e,
+str_325f,
+str_3260,
+str_3261,
+str_3262,
+str_3263,
+str_3264,
+str_3265,
+str_3266,
+str_3267,
+str_3268,
+str_3269,
+str_326a,
+str_326b,
+str_326c,
+str_326d,
+str_326e,
+str_326f,
+str_3270,
+str_3271,
+str_3272,
+str_3273,
+str_3274,
+str_3275,
+str_3276,
+str_3277,
+str_3278,
+str_3279,
+str_327a,
+str_327b,
+str_327c,
+str_327d,
+str_327e,
+0, str_3280,
+str_3281,
+str_3282,
+str_3283,
+str_3284,
+str_3285,
+str_3286,
+str_3287,
+str_3288,
+str_3289,
+str_328a,
+str_328b,
+str_328c,
+str_328d,
+str_328e,
+str_328f,
+str_3290,
+str_3291,
+str_3292,
+str_3293,
+str_3294,
+str_3295,
+str_3296,
+str_3297,
+str_3298,
+str_3299,
+str_329a,
+str_329b,
+str_329c,
+str_329d,
+str_329e,
+str_329f,
+str_32a0,
+str_32a1,
+str_32a2,
+str_32a3,
+str_32a4,
+str_32a5,
+str_32a6,
+str_32a7,
+str_32a8,
+str_32a9,
+str_32aa,
+str_32ab,
+str_32ac,
+str_32ad,
+str_32ae,
+str_32af,
+str_32b0,
+str_32b1,
+str_32b2,
+str_32b3,
+str_32b4,
+str_32b5,
+str_32b6,
+str_32b7,
+str_32b8,
+str_32b9,
+str_32ba,
+str_32bb,
+str_32bc,
+str_32bd,
+str_32be,
+str_32bf,
+str_32c0,
+str_32c1,
+str_32c2,
+str_32c3,
+str_32c4,
+str_32c5,
+str_32c6,
+str_32c7,
+str_32c8,
+str_32c9,
+str_32ca,
+str_32cb,
+str_32cc,
+str_32cd,
+str_32ce,
+str_32cf,
+str_32d0,
+str_32d1,
+str_32d2,
+str_32d3,
+str_32d4,
+str_32d5,
+str_32d6,
+str_32d7,
+str_32d8,
+str_32d9,
+str_32da,
+str_32db,
+str_32dc,
+str_32dd,
+str_32de,
+str_32df,
+str_32e0,
+str_32e1,
+str_32e2,
+str_32e3,
+str_32e4,
+str_32e5,
+str_32e6,
+str_32e7,
+str_32e8,
+str_32e9,
+str_32ea,
+str_32eb,
+str_32ec,
+str_32ed,
+str_32ee,
+str_32ef,
+str_32f0,
+str_32f1,
+str_32f2,
+str_32f3,
+str_32f4,
+str_32f5,
+str_32f6,
+str_32f7,
+str_32f8,
+str_32f9,
+str_32fa,
+str_32fb,
+str_32fc,
+str_32fd,
+str_32fe,
+0, 0};
+
+static const unichar_t * const tab_33[] = {
+str_3300,
+str_3301,
+str_3302,
+str_3303,
+str_3304,
+str_3305,
+str_3306,
+str_3307,
+str_3308,
+str_3309,
+str_330a,
+str_330b,
+str_330c,
+str_330d,
+str_330e,
+str_330f,
+str_3310,
+str_3311,
+str_3312,
+str_3313,
+str_3314,
+str_3315,
+str_3316,
+str_3317,
+str_3318,
+str_3319,
+str_331a,
+str_331b,
+str_331c,
+str_331d,
+str_331e,
+str_331f,
+str_3320,
+str_3321,
+str_3322,
+str_3323,
+str_3324,
+str_3325,
+str_3326,
+str_3327,
+str_3328,
+str_3329,
+str_332a,
+str_332b,
+str_332c,
+str_332d,
+str_332e,
+str_332f,
+str_3330,
+str_3331,
+str_3332,
+str_3333,
+str_3334,
+str_3335,
+str_3336,
+str_3337,
+str_3338,
+str_3339,
+str_333a,
+str_333b,
+str_333c,
+str_333d,
+str_333e,
+str_333f,
+str_3340,
+str_3341,
+str_3342,
+str_3343,
+str_3344,
+str_3345,
+str_3346,
+str_3347,
+str_3348,
+str_3349,
+str_334a,
+str_334b,
+str_334c,
+str_334d,
+str_334e,
+str_334f,
+str_3350,
+str_3351,
+str_3352,
+str_3353,
+str_3354,
+str_3355,
+str_3356,
+str_3357,
+str_3358,
+str_3359,
+str_335a,
+str_335b,
+str_335c,
+str_335d,
+str_335e,
+str_335f,
+str_3360,
+str_3361,
+str_3362,
+str_3363,
+str_3364,
+str_3365,
+str_3366,
+str_3367,
+str_3368,
+str_3369,
+str_336a,
+str_336b,
+str_336c,
+str_336d,
+str_336e,
+str_336f,
+str_3370,
+str_3371,
+str_3372,
+str_3373,
+str_3374,
+str_3375,
+str_3376,
+str_3377,
+str_3378,
+str_3379,
+str_337a,
+str_337b,
+str_337c,
+str_337d,
+str_337e,
+str_337f,
+str_3380,
+str_3381,
+str_3382,
+str_3383,
+str_3384,
+str_3385,
+str_3386,
+str_3387,
+str_3388,
+str_3389,
+str_338a,
+str_338b,
+str_338c,
+str_338d,
+str_338e,
+str_338f,
+str_3390,
+str_3391,
+str_3392,
+str_3393,
+str_3394,
+str_3395,
+str_3396,
+str_3397,
+str_3398,
+str_3399,
+str_339a,
+str_339b,
+str_339c,
+str_339d,
+str_339e,
+str_339f,
+str_33a0,
+str_33a1,
+str_33a2,
+str_33a3,
+str_33a4,
+str_33a5,
+str_33a6,
+str_33a7,
+str_33a8,
+str_33a9,
+str_33aa,
+str_33ab,
+str_33ac,
+str_33ad,
+str_33ae,
+str_33af,
+str_33b0,
+str_33b1,
+str_33b2,
+str_33b3,
+str_33b4,
+str_33b5,
+str_33b6,
+str_33b7,
+str_33b8,
+str_33b9,
+str_33ba,
+str_33bb,
+str_33bc,
+str_33bd,
+str_33be,
+str_33bf,
+str_33c0,
+str_33c1,
+str_33c2,
+str_33c3,
+str_33c4,
+str_33c5,
+str_33c6,
+str_33c7,
+str_33c8,
+str_33c9,
+str_33ca,
+str_33cb,
+str_33cc,
+str_33cd,
+str_33ce,
+str_33cf,
+str_33d0,
+str_33d1,
+str_33d2,
+str_33d3,
+str_33d4,
+str_33d5,
+str_33d6,
+str_33d7,
+str_33d8,
+str_33d9,
+str_33da,
+str_33db,
+str_33dc,
+str_33dd,
+str_33de,
+str_33df,
+str_33e0,
+str_33e1,
+str_33e2,
+str_33e3,
+str_33e4,
+str_33e5,
+str_33e6,
+str_33e7,
+str_33e8,
+str_33e9,
+str_33ea,
+str_33eb,
+str_33ec,
+str_33ed,
+str_33ee,
+str_33ef,
+str_33f0,
+str_33f1,
+str_33f2,
+str_33f3,
+str_33f4,
+str_33f5,
+str_33f6,
+str_33f7,
+str_33f8,
+str_33f9,
+str_33fa,
+str_33fb,
+str_33fc,
+str_33fd,
+str_33fe,
+str_33ff,
+0};
+
+static const unichar_t * const tab_a7[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_a770,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_a7f8,
+str_a7f9,
+0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_f9[] = {
+str_f900,
+str_f901,
+str_f902,
+str_f903,
+str_f904,
+str_f905,
+str_f906,
+str_f907,
+str_f908,
+str_f909,
+str_f90a,
+str_f90b,
+str_f90c,
+str_f90d,
+str_f90e,
+str_f90f,
+str_f910,
+str_f911,
+str_f912,
+str_f913,
+str_f914,
+str_f915,
+str_f916,
+str_f917,
+str_f918,
+str_f919,
+str_f91a,
+str_f91b,
+str_f91c,
+str_f91d,
+str_f91e,
+str_f91f,
+str_f920,
+str_f921,
+str_f922,
+str_f923,
+str_f924,
+str_f925,
+str_f926,
+str_f927,
+str_f928,
+str_f929,
+str_f92a,
+str_f92b,
+str_f92c,
+str_f92d,
+str_f92e,
+str_f92f,
+str_f930,
+str_f931,
+str_f932,
+str_f933,
+str_f934,
+str_f935,
+str_f936,
+str_f937,
+str_f938,
+str_f939,
+str_f93a,
+str_f93b,
+str_f93c,
+str_f93d,
+str_f93e,
+str_f93f,
+str_f940,
+str_f941,
+str_f942,
+str_f943,
+str_f944,
+str_f945,
+str_f946,
+str_f947,
+str_f948,
+str_f949,
+str_f94a,
+str_f94b,
+str_f94c,
+str_f94d,
+str_f94e,
+str_f94f,
+str_f950,
+str_f951,
+str_f952,
+str_f953,
+str_f954,
+str_f955,
+str_f956,
+str_f957,
+str_f958,
+str_f959,
+str_f95a,
+str_f95b,
+str_f95c,
+str_f95d,
+str_f95e,
+str_f95f,
+str_f960,
+str_f961,
+str_f962,
+str_f963,
+str_f964,
+str_f965,
+str_f966,
+str_f967,
+str_f968,
+str_f969,
+str_f96a,
+str_f96b,
+str_f96c,
+str_f96d,
+str_f96e,
+str_f96f,
+str_f970,
+str_f971,
+str_f972,
+str_f973,
+str_f974,
+str_f975,
+str_f976,
+str_f977,
+str_f978,
+str_f979,
+str_f97a,
+str_f97b,
+str_f97c,
+str_f97d,
+str_f97e,
+str_f97f,
+str_f980,
+str_f981,
+str_f982,
+str_f983,
+str_f984,
+str_f985,
+str_f986,
+str_f987,
+str_f988,
+str_f989,
+str_f98a,
+str_f98b,
+str_f98c,
+str_f98d,
+str_f98e,
+str_f98f,
+str_f990,
+str_f991,
+str_f992,
+str_f993,
+str_f994,
+str_f995,
+str_f996,
+str_f997,
+str_f998,
+str_f999,
+str_f99a,
+str_f99b,
+str_f99c,
+str_f99d,
+str_f99e,
+str_f99f,
+str_f9a0,
+str_f9a1,
+str_f9a2,
+str_f9a3,
+str_f9a4,
+str_f9a5,
+str_f9a6,
+str_f9a7,
+str_f9a8,
+str_f9a9,
+str_f9aa,
+str_f9ab,
+str_f9ac,
+str_f9ad,
+str_f9ae,
+str_f9af,
+str_f9b0,
+str_f9b1,
+str_f9b2,
+str_f9b3,
+str_f9b4,
+str_f9b5,
+str_f9b6,
+str_f9b7,
+str_f9b8,
+str_f9b9,
+str_f9ba,
+str_f9bb,
+str_f9bc,
+str_f9bd,
+str_f9be,
+str_f9bf,
+str_f9c0,
+str_f9c1,
+str_f9c2,
+str_f9c3,
+str_f9c4,
+str_f9c5,
+str_f9c6,
+str_f9c7,
+str_f9c8,
+str_f9c9,
+str_f9ca,
+str_f9cb,
+str_f9cc,
+str_f9cd,
+str_f9ce,
+str_f9cf,
+str_f9d0,
+str_f9d1,
+str_f9d2,
+str_f9d3,
+str_f9d4,
+str_f9d5,
+str_f9d6,
+str_f9d7,
+str_f9d8,
+str_f9d9,
+str_f9da,
+str_f9db,
+str_f9dc,
+str_f9dd,
+str_f9de,
+str_f9df,
+str_f9e0,
+str_f9e1,
+str_f9e2,
+str_f9e3,
+str_f9e4,
+str_f9e5,
+str_f9e6,
+str_f9e7,
+str_f9e8,
+str_f9e9,
+str_f9ea,
+str_f9eb,
+str_f9ec,
+str_f9ed,
+str_f9ee,
+str_f9ef,
+str_f9f0,
+str_f9f1,
+str_f9f2,
+str_f9f3,
+str_f9f4,
+str_f9f5,
+str_f9f6,
+str_f9f7,
+str_f9f8,
+str_f9f9,
+str_f9fa,
+str_f9fb,
+str_f9fc,
+str_f9fd,
+str_f9fe,
+str_f9ff,
+0};
+
+static const unichar_t * const tab_fa[] = {
+str_fa00,
+str_fa01,
+str_fa02,
+str_fa03,
+str_fa04,
+str_fa05,
+str_fa06,
+str_fa07,
+str_fa08,
+str_fa09,
+str_fa0a,
+str_fa0b,
+str_fa0c,
+str_fa0d,
+0, 0, str_fa10,
+0, str_fa12,
+0, 0, str_fa15,
+str_fa16,
+str_fa17,
+str_fa18,
+str_fa19,
+str_fa1a,
+str_fa1b,
+str_fa1c,
+str_fa1d,
+str_fa1e,
+0, str_fa20,
+0, str_fa22,
+0, 0, str_fa25,
+str_fa26,
+0, 0, 0, str_fa2a,
+str_fa2b,
+str_fa2c,
+str_fa2d,
+str_fa2e,
+str_fa2f,
+str_fa30,
+str_fa31,
+str_fa32,
+str_fa33,
+str_fa34,
+str_fa35,
+str_fa36,
+str_fa37,
+str_fa38,
+str_fa39,
+str_fa3a,
+str_fa3b,
+str_fa3c,
+str_fa3d,
+str_fa3e,
+str_fa3f,
+str_fa40,
+str_fa41,
+str_fa42,
+str_fa43,
+str_fa44,
+str_fa45,
+str_fa46,
+str_fa47,
+str_fa48,
+str_fa49,
+str_fa4a,
+str_fa4b,
+str_fa4c,
+str_fa4d,
+str_fa4e,
+str_fa4f,
+str_fa50,
+str_fa51,
+str_fa52,
+str_fa53,
+str_fa54,
+str_fa55,
+str_fa56,
+str_fa57,
+str_fa58,
+str_fa59,
+str_fa5a,
+str_fa5b,
+str_fa5c,
+str_fa5d,
+str_fa5e,
+str_fa5f,
+str_fa60,
+str_fa61,
+str_fa62,
+str_fa63,
+str_fa64,
+str_fa65,
+str_fa66,
+str_fa67,
+str_fa68,
+str_fa69,
+str_fa6a,
+str_fa6b,
+str_fa6c,
+str_fa6d,
+0, 0, str_fa70,
+str_fa71,
+str_fa72,
+str_fa73,
+str_fa74,
+str_fa75,
+str_fa76,
+str_fa77,
+str_fa78,
+str_fa79,
+str_fa7a,
+str_fa7b,
+str_fa7c,
+str_fa7d,
+str_fa7e,
+str_fa7f,
+str_fa80,
+str_fa81,
+str_fa82,
+str_fa83,
+str_fa84,
+str_fa85,
+str_fa86,
+str_fa87,
+str_fa88,
+str_fa89,
+str_fa8a,
+str_fa8b,
+str_fa8c,
+str_fa8d,
+str_fa8e,
+str_fa8f,
+str_fa90,
+str_fa91,
+str_fa92,
+str_fa93,
+str_fa94,
+str_fa95,
+str_fa96,
+str_fa97,
+str_fa98,
+str_fa99,
+str_fa9a,
+str_fa9b,
+str_fa9c,
+str_fa9d,
+str_fa9e,
+str_fa9f,
+str_faa0,
+str_faa1,
+str_faa2,
+str_faa3,
+str_faa4,
+str_faa5,
+str_faa6,
+str_faa7,
+str_faa8,
+str_faa9,
+str_faaa,
+str_faab,
+str_faac,
+str_faad,
+str_faae,
+str_faaf,
+str_fab0,
+str_fab1,
+str_fab2,
+str_fab3,
+str_fab4,
+str_fab5,
+str_fab6,
+str_fab7,
+str_fab8,
+str_fab9,
+str_faba,
+str_fabb,
+str_fabc,
+str_fabd,
+str_fabe,
+str_fabf,
+str_fac0,
+str_fac1,
+str_fac2,
+str_fac3,
+str_fac4,
+str_fac5,
+str_fac6,
+str_fac7,
+str_fac8,
+str_fac9,
+str_faca,
+str_facb,
+str_facc,
+str_facd,
+str_face,
+str_facf,
+str_fad0,
+str_fad1,
+str_fad2,
+str_fad3,
+str_fad4,
+str_fad5,
+str_fad6,
+str_fad7,
+str_fad8,
+str_fad9,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+static const unichar_t * const tab_fb[] = {
+str_fb00,
+str_fb01,
+str_fb02,
+str_fb03,
+str_fb04,
+str_fb05,
+str_fb06,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fb13,
+str_fb14,
+str_fb15,
+str_fb16,
+str_fb17,
+0, 0, 0, 0, 0, str_fb1d,
+0, str_fb1f,
+str_fb20,
+str_fb21,
+str_fb22,
+str_fb23,
+str_fb24,
+str_fb25,
+str_fb26,
+str_fb27,
+str_fb28,
+str_fb29,
+str_fb2a,
+str_fb2b,
+str_fb2c,
+str_fb2d,
+str_fb2e,
+str_fb2f,
+str_fb30,
+str_fb31,
+str_fb32,
+str_fb33,
+str_fb34,
+str_fb35,
+str_fb36,
+0, str_fb38,
+str_fb39,
+str_fb3a,
+str_fb3b,
+str_fb3c,
+0, str_fb3e,
+0, str_fb40,
+str_fb41,
+0, str_fb43,
+str_fb44,
+0, str_fb46,
+str_fb47,
+str_fb48,
+str_fb49,
+str_fb4a,
+str_fb4b,
+str_fb4c,
+str_fb4d,
+str_fb4e,
+str_fb4f,
+str_fb50,
+str_fb51,
+str_fb52,
+str_fb53,
+str_fb54,
+str_fb55,
+str_fb56,
+str_fb57,
+str_fb58,
+str_fb59,
+str_fb5a,
+str_fb5b,
+str_fb5c,
+str_fb5d,
+str_fb5e,
+str_fb5f,
+str_fb60,
+str_fb61,
+str_fb62,
+str_fb63,
+str_fb64,
+str_fb65,
+str_fb66,
+str_fb67,
+str_fb68,
+str_fb69,
+str_fb6a,
+str_fb6b,
+str_fb6c,
+str_fb6d,
+str_fb6e,
+str_fb6f,
+str_fb70,
+str_fb71,
+str_fb72,
+str_fb73,
+str_fb74,
+str_fb75,
+str_fb76,
+str_fb77,
+str_fb78,
+str_fb79,
+str_fb7a,
+str_fb7b,
+str_fb7c,
+str_fb7d,
+str_fb7e,
+str_fb7f,
+str_fb80,
+str_fb81,
+str_fb82,
+str_fb83,
+str_fb84,
+str_fb85,
+str_fb86,
+str_fb87,
+str_fb88,
+str_fb89,
+str_fb8a,
+str_fb8b,
+str_fb8c,
+str_fb8d,
+str_fb8e,
+str_fb8f,
+str_fb90,
+str_fb91,
+str_fb92,
+str_fb93,
+str_fb94,
+str_fb95,
+str_fb96,
+str_fb97,
+str_fb98,
+str_fb99,
+str_fb9a,
+str_fb9b,
+str_fb9c,
+str_fb9d,
+str_fb9e,
+str_fb9f,
+str_fba0,
+str_fba1,
+str_fba2,
+str_fba3,
+str_fba4,
+str_fba5,
+str_fba6,
+str_fba7,
+str_fba8,
+str_fba9,
+str_fbaa,
+str_fbab,
+str_fbac,
+str_fbad,
+str_fbae,
+str_fbaf,
+str_fbb0,
+str_fbb1,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fbd3,
+str_fbd4,
+str_fbd5,
+str_fbd6,
+str_fbd7,
+str_fbd8,
+str_fbd9,
+str_fbda,
+str_fbdb,
+str_fbdc,
+str_fbdd,
+str_fbde,
+str_fbdf,
+str_fbe0,
+str_fbe1,
+str_fbe2,
+str_fbe3,
+str_fbe4,
+str_fbe5,
+str_fbe6,
+str_fbe7,
+str_fbe8,
+str_fbe9,
+str_fbea,
+str_fbeb,
+str_fbec,
+str_fbed,
+str_fbee,
+str_fbef,
+str_fbf0,
+str_fbf1,
+str_fbf2,
+str_fbf3,
+str_fbf4,
+str_fbf5,
+str_fbf6,
+str_fbf7,
+str_fbf8,
+str_fbf9,
+str_fbfa,
+str_fbfb,
+str_fbfc,
+str_fbfd,
+str_fbfe,
+str_fbff,
+0};
+
+static const unichar_t * const tab_fc[] = {
+str_fc00,
+str_fc01,
+str_fc02,
+str_fc03,
+str_fc04,
+str_fc05,
+str_fc06,
+str_fc07,
+str_fc08,
+str_fc09,
+str_fc0a,
+str_fc0b,
+str_fc0c,
+str_fc0d,
+str_fc0e,
+str_fc0f,
+str_fc10,
+str_fc11,
+str_fc12,
+str_fc13,
+str_fc14,
+str_fc15,
+str_fc16,
+str_fc17,
+str_fc18,
+str_fc19,
+str_fc1a,
+str_fc1b,
+str_fc1c,
+str_fc1d,
+str_fc1e,
+str_fc1f,
+str_fc20,
+str_fc21,
+str_fc22,
+str_fc23,
+str_fc24,
+str_fc25,
+str_fc26,
+str_fc27,
+str_fc28,
+str_fc29,
+str_fc2a,
+str_fc2b,
+str_fc2c,
+str_fc2d,
+str_fc2e,
+str_fc2f,
+str_fc30,
+str_fc31,
+str_fc32,
+str_fc33,
+str_fc34,
+str_fc35,
+str_fc36,
+str_fc37,
+str_fc38,
+str_fc39,
+str_fc3a,
+str_fc3b,
+str_fc3c,
+str_fc3d,
+str_fc3e,
+str_fc3f,
+str_fc40,
+str_fc41,
+str_fc42,
+str_fc43,
+str_fc44,
+str_fc45,
+str_fc46,
+str_fc47,
+str_fc48,
+str_fc49,
+str_fc4a,
+str_fc4b,
+str_fc4c,
+str_fc4d,
+str_fc4e,
+str_fc4f,
+str_fc50,
+str_fc51,
+str_fc52,
+str_fc53,
+str_fc54,
+str_fc55,
+str_fc56,
+str_fc57,
+str_fc58,
+str_fc59,
+str_fc5a,
+str_fc5b,
+str_fc5c,
+str_fc5d,
+str_fc5e,
+str_fc5f,
+str_fc60,
+str_fc61,
+str_fc62,
+str_fc63,
+str_fc64,
+str_fc65,
+str_fc66,
+str_fc67,
+str_fc68,
+str_fc69,
+str_fc6a,
+str_fc6b,
+str_fc6c,
+str_fc6d,
+str_fc6e,
+str_fc6f,
+str_fc70,
+str_fc71,
+str_fc72,
+str_fc73,
+str_fc74,
+str_fc75,
+str_fc76,
+str_fc77,
+str_fc78,
+str_fc79,
+str_fc7a,
+str_fc7b,
+str_fc7c,
+str_fc7d,
+str_fc7e,
+str_fc7f,
+str_fc80,
+str_fc81,
+str_fc82,
+str_fc83,
+str_fc84,
+str_fc85,
+str_fc86,
+str_fc87,
+str_fc88,
+str_fc89,
+str_fc8a,
+str_fc8b,
+str_fc8c,
+str_fc8d,
+str_fc8e,
+str_fc8f,
+str_fc90,
+str_fc91,
+str_fc92,
+str_fc93,
+str_fc94,
+str_fc95,
+str_fc96,
+str_fc97,
+str_fc98,
+str_fc99,
+str_fc9a,
+str_fc9b,
+str_fc9c,
+str_fc9d,
+str_fc9e,
+str_fc9f,
+str_fca0,
+str_fca1,
+str_fca2,
+str_fca3,
+str_fca4,
+str_fca5,
+str_fca6,
+str_fca7,
+str_fca8,
+str_fca9,
+str_fcaa,
+str_fcab,
+str_fcac,
+str_fcad,
+str_fcae,
+str_fcaf,
+str_fcb0,
+str_fcb1,
+str_fcb2,
+str_fcb3,
+str_fcb4,
+str_fcb5,
+str_fcb6,
+str_fcb7,
+str_fcb8,
+str_fcb9,
+str_fcba,
+str_fcbb,
+str_fcbc,
+str_fcbd,
+str_fcbe,
+str_fcbf,
+str_fcc0,
+str_fcc1,
+str_fcc2,
+str_fcc3,
+str_fcc4,
+str_fcc5,
+str_fcc6,
+str_fcc7,
+str_fcc8,
+str_fcc9,
+str_fcca,
+str_fccb,
+str_fccc,
+str_fccd,
+str_fcce,
+str_fccf,
+str_fcd0,
+str_fcd1,
+str_fcd2,
+str_fcd3,
+str_fcd4,
+str_fcd5,
+str_fcd6,
+str_fcd7,
+str_fcd8,
+str_fcd9,
+str_fcda,
+str_fcdb,
+str_fcdc,
+str_fcdd,
+str_fcde,
+str_fcdf,
+str_fce0,
+str_fce1,
+str_fce2,
+str_fce3,
+str_fce4,
+str_fce5,
+str_fce6,
+str_fce7,
+str_fce8,
+str_fce9,
+str_fcea,
+str_fceb,
+str_fcec,
+str_fced,
+str_fcee,
+str_fcef,
+str_fcf0,
+str_fcf1,
+str_fcf2,
+str_fcf3,
+str_fcf4,
+str_fcf5,
+str_fcf6,
+str_fcf7,
+str_fcf8,
+str_fcf9,
+str_fcfa,
+str_fcfb,
+str_fcfc,
+str_fcfd,
+str_fcfe,
+str_fcff,
+0};
+
+static const unichar_t * const tab_fd[] = {
+str_fd00,
+str_fd01,
+str_fd02,
+str_fd03,
+str_fd04,
+str_fd05,
+str_fd06,
+str_fd07,
+str_fd08,
+str_fd09,
+str_fd0a,
+str_fd0b,
+str_fd0c,
+str_fd0d,
+str_fd0e,
+str_fd0f,
+str_fd10,
+str_fd11,
+str_fd12,
+str_fd13,
+str_fd14,
+str_fd15,
+str_fd16,
+str_fd17,
+str_fd18,
+str_fd19,
+str_fd1a,
+str_fd1b,
+str_fd1c,
+str_fd1d,
+str_fd1e,
+str_fd1f,
+str_fd20,
+str_fd21,
+str_fd22,
+str_fd23,
+str_fd24,
+str_fd25,
+str_fd26,
+str_fd27,
+str_fd28,
+str_fd29,
+str_fd2a,
+str_fd2b,
+str_fd2c,
+str_fd2d,
+str_fd2e,
+str_fd2f,
+str_fd30,
+str_fd31,
+str_fd32,
+str_fd33,
+str_fd34,
+str_fd35,
+str_fd36,
+str_fd37,
+str_fd38,
+str_fd39,
+str_fd3a,
+str_fd3b,
+str_fd3c,
+str_fd3d,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fd50,
+str_fd51,
+str_fd52,
+str_fd53,
+str_fd54,
+str_fd55,
+str_fd56,
+str_fd57,
+str_fd58,
+str_fd59,
+str_fd5a,
+str_fd5b,
+str_fd5c,
+str_fd5d,
+str_fd5e,
+str_fd5f,
+str_fd60,
+str_fd61,
+str_fd62,
+str_fd63,
+str_fd64,
+str_fd65,
+str_fd66,
+str_fd67,
+str_fd68,
+str_fd69,
+str_fd6a,
+str_fd6b,
+str_fd6c,
+str_fd6d,
+str_fd6e,
+str_fd6f,
+str_fd70,
+str_fd71,
+str_fd72,
+str_fd73,
+str_fd74,
+str_fd75,
+str_fd76,
+str_fd77,
+str_fd78,
+str_fd79,
+str_fd7a,
+str_fd7b,
+str_fd7c,
+str_fd7d,
+str_fd7e,
+str_fd7f,
+str_fd80,
+str_fd81,
+str_fd82,
+str_fd83,
+str_fd84,
+str_fd85,
+str_fd86,
+str_fd87,
+str_fd88,
+str_fd89,
+str_fd8a,
+str_fd8b,
+str_fd8c,
+str_fd8d,
+str_fd8e,
+str_fd8f,
+0, 0, str_fd92,
+str_fd93,
+str_fd94,
+str_fd95,
+str_fd96,
+str_fd97,
+str_fd98,
+str_fd99,
+str_fd9a,
+str_fd9b,
+str_fd9c,
+str_fd9d,
+str_fd9e,
+str_fd9f,
+str_fda0,
+str_fda1,
+str_fda2,
+str_fda3,
+str_fda4,
+str_fda5,
+str_fda6,
+str_fda7,
+str_fda8,
+str_fda9,
+str_fdaa,
+str_fdab,
+str_fdac,
+str_fdad,
+str_fdae,
+str_fdaf,
+str_fdb0,
+str_fdb1,
+str_fdb2,
+str_fdb3,
+str_fdb4,
+str_fdb5,
+str_fdb6,
+str_fdb7,
+str_fdb8,
+str_fdb9,
+str_fdba,
+str_fdbb,
+str_fdbc,
+str_fdbd,
+str_fdbe,
+str_fdbf,
+str_fdc0,
+str_fdc1,
+str_fdc2,
+str_fdc3,
+str_fdc4,
+str_fdc5,
+str_fdc6,
+str_fdc7,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fdf0,
+str_fdf1,
+str_fdf2,
+str_fdf3,
+str_fdf4,
+str_fdf5,
+str_fdf6,
+str_fdf7,
+str_fdf8,
+str_fdf9,
+str_fdfa,
+str_fdfb,
+str_fdfc,
+0, 0, 0, 0};
+
+static const unichar_t * const tab_fe[] = {
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fe10,
+str_fe11,
+str_fe12,
+str_fe13,
+str_fe14,
+str_fe15,
+str_fe16,
+str_fe17,
+str_fe18,
+str_fe19,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fe30,
+str_fe31,
+str_fe32,
+str_fe33,
+str_fe34,
+str_fe35,
+str_fe36,
+str_fe37,
+str_fe38,
+str_fe39,
+str_fe3a,
+str_fe3b,
+str_fe3c,
+str_fe3d,
+str_fe3e,
+str_fe3f,
+str_fe40,
+str_fe41,
+str_fe42,
+str_fe43,
+str_fe44,
+0, 0, str_fe47,
+str_fe48,
+str_fe49,
+str_fe4a,
+str_fe4b,
+str_fe4c,
+str_fe4d,
+str_fe4e,
+str_fe4f,
+str_fe50,
+str_fe51,
+str_fe52,
+0, str_fe54,
+str_fe55,
+str_fe56,
+str_fe57,
+str_fe58,
+str_fe59,
+str_fe5a,
+str_fe5b,
+str_fe5c,
+str_fe5d,
+str_fe5e,
+str_fe5f,
+str_fe60,
+str_fe61,
+str_fe62,
+str_fe63,
+str_fe64,
+str_fe65,
+str_fe66,
+0, str_fe68,
+str_fe69,
+str_fe6a,
+str_fe6b,
+0, 0, 0, 0, str_fe70,
+str_fe71,
+str_fe72,
+0, str_fe74,
+0, str_fe76,
+str_fe77,
+str_fe78,
+str_fe79,
+str_fe7a,
+str_fe7b,
+str_fe7c,
+str_fe7d,
+str_fe7e,
+str_fe7f,
+str_fe80,
+str_fe81,
+str_fe82,
+str_fe83,
+str_fe84,
+str_fe85,
+str_fe86,
+str_fe87,
+str_fe88,
+str_fe89,
+str_fe8a,
+str_fe8b,
+str_fe8c,
+str_fe8d,
+str_fe8e,
+str_fe8f,
+str_fe90,
+str_fe91,
+str_fe92,
+str_fe93,
+str_fe94,
+str_fe95,
+str_fe96,
+str_fe97,
+str_fe98,
+str_fe99,
+str_fe9a,
+str_fe9b,
+str_fe9c,
+str_fe9d,
+str_fe9e,
+str_fe9f,
+str_fea0,
+str_fea1,
+str_fea2,
+str_fea3,
+str_fea4,
+str_fea5,
+str_fea6,
+str_fea7,
+str_fea8,
+str_fea9,
+str_feaa,
+str_feab,
+str_feac,
+str_fead,
+str_feae,
+str_feaf,
+str_feb0,
+str_feb1,
+str_feb2,
+str_feb3,
+str_feb4,
+str_feb5,
+str_feb6,
+str_feb7,
+str_feb8,
+str_feb9,
+str_feba,
+str_febb,
+str_febc,
+str_febd,
+str_febe,
+str_febf,
+str_fec0,
+str_fec1,
+str_fec2,
+str_fec3,
+str_fec4,
+str_fec5,
+str_fec6,
+str_fec7,
+str_fec8,
+str_fec9,
+str_feca,
+str_fecb,
+str_fecc,
+str_fecd,
+str_fece,
+str_fecf,
+str_fed0,
+str_fed1,
+str_fed2,
+str_fed3,
+str_fed4,
+str_fed5,
+str_fed6,
+str_fed7,
+str_fed8,
+str_fed9,
+str_feda,
+str_fedb,
+str_fedc,
+str_fedd,
+str_fede,
+str_fedf,
+str_fee0,
+str_fee1,
+str_fee2,
+str_fee3,
+str_fee4,
+str_fee5,
+str_fee6,
+str_fee7,
+str_fee8,
+str_fee9,
+str_feea,
+str_feeb,
+str_feec,
+str_feed,
+str_feee,
+str_feef,
+str_fef0,
+str_fef1,
+str_fef2,
+str_fef3,
+str_fef4,
+str_fef5,
+str_fef6,
+str_fef7,
+str_fef8,
+str_fef9,
+str_fefa,
+str_fefb,
+str_fefc,
+0, 0, 0, 0};
+
+static const unichar_t * const tab_ff[] = {
+0, str_ff01,
+str_ff02,
+str_ff03,
+str_ff04,
+str_ff05,
+str_ff06,
+str_ff07,
+str_ff08,
+str_ff09,
+str_ff0a,
+str_ff0b,
+str_ff0c,
+str_ff0d,
+str_ff0e,
+str_ff0f,
+str_ff10,
+str_ff11,
+str_ff12,
+str_ff13,
+str_ff14,
+str_ff15,
+str_ff16,
+str_ff17,
+str_ff18,
+str_ff19,
+str_ff1a,
+str_ff1b,
+str_ff1c,
+str_ff1d,
+str_ff1e,
+str_ff1f,
+str_ff20,
+str_ff21,
+str_ff22,
+str_ff23,
+str_ff24,
+str_ff25,
+str_ff26,
+str_ff27,
+str_ff28,
+str_ff29,
+str_ff2a,
+str_ff2b,
+str_ff2c,
+str_ff2d,
+str_ff2e,
+str_ff2f,
+str_ff30,
+str_ff31,
+str_ff32,
+str_ff33,
+str_ff34,
+str_ff35,
+str_ff36,
+str_ff37,
+str_ff38,
+str_ff39,
+str_ff3a,
+str_ff3b,
+str_ff3c,
+str_ff3d,
+str_ff3e,
+str_ff3f,
+str_ff40,
+str_ff41,
+str_ff42,
+str_ff43,
+str_ff44,
+str_ff45,
+str_ff46,
+str_ff47,
+str_ff48,
+str_ff49,
+str_ff4a,
+str_ff4b,
+str_ff4c,
+str_ff4d,
+str_ff4e,
+str_ff4f,
+str_ff50,
+str_ff51,
+str_ff52,
+str_ff53,
+str_ff54,
+str_ff55,
+str_ff56,
+str_ff57,
+str_ff58,
+str_ff59,
+str_ff5a,
+str_ff5b,
+str_ff5c,
+str_ff5d,
+str_ff5e,
+str_ff5f,
+str_ff60,
+str_ff61,
+str_ff62,
+str_ff63,
+str_ff64,
+str_ff65,
+str_ff66,
+str_ff67,
+str_ff68,
+str_ff69,
+str_ff6a,
+str_ff6b,
+str_ff6c,
+str_ff6d,
+str_ff6e,
+str_ff6f,
+str_ff70,
+str_ff71,
+str_ff72,
+str_ff73,
+str_ff74,
+str_ff75,
+str_ff76,
+str_ff77,
+str_ff78,
+str_ff79,
+str_ff7a,
+str_ff7b,
+str_ff7c,
+str_ff7d,
+str_ff7e,
+str_ff7f,
+str_ff80,
+str_ff81,
+str_ff82,
+str_ff83,
+str_ff84,
+str_ff85,
+str_ff86,
+str_ff87,
+str_ff88,
+str_ff89,
+str_ff8a,
+str_ff8b,
+str_ff8c,
+str_ff8d,
+str_ff8e,
+str_ff8f,
+str_ff90,
+str_ff91,
+str_ff92,
+str_ff93,
+str_ff94,
+str_ff95,
+str_ff96,
+str_ff97,
+str_ff98,
+str_ff99,
+str_ff9a,
+str_ff9b,
+str_ff9c,
+str_ff9d,
+str_ff9e,
+str_ff9f,
+str_ffa0,
+str_ffa1,
+str_ffa2,
+str_ffa3,
+str_ffa4,
+str_ffa5,
+str_ffa6,
+str_ffa7,
+str_ffa8,
+str_ffa9,
+str_ffaa,
+str_ffab,
+str_ffac,
+str_ffad,
+str_ffae,
+str_ffaf,
+str_ffb0,
+str_ffb1,
+str_ffb2,
+str_ffb3,
+str_ffb4,
+str_ffb5,
+str_ffb6,
+str_ffb7,
+str_ffb8,
+str_ffb9,
+str_ffba,
+str_ffbb,
+str_ffbc,
+str_ffbd,
+str_ffbe,
+0, 0, 0, str_ffc2,
+str_ffc3,
+str_ffc4,
+str_ffc5,
+str_ffc6,
+str_ffc7,
+0, 0, str_ffca,
+str_ffcb,
+str_ffcc,
+str_ffcd,
+str_ffce,
+str_ffcf,
+0, 0, str_ffd2,
+str_ffd3,
+str_ffd4,
+str_ffd5,
+str_ffd6,
+str_ffd7,
+0, 0, str_ffda,
+str_ffdb,
+str_ffdc,
+0, 0, 0, str_ffe0,
+str_ffe1,
+str_ffe2,
+str_ffe3,
+str_ffe4,
+str_ffe5,
+str_ffe6,
+0, str_ffe8,
+str_ffe9,
+str_ffea,
+str_ffeb,
+str_ffec,
+str_ffed,
+str_ffee,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+const unichar_t *const * const unicode_alternates[] = {
+tab_0,
+tab_1,
+tab_2,
+tab_3,
+tab_4,
+tab_5,
+tab_6,
+up_allzeros, up_allzeros, tab_9,
+tab_a,
+tab_b,
+tab_c,
+tab_d,
+tab_e,
+tab_f,
+tab_10,
+tab_11,
+up_allzeros, tab_13,
+up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, tab_1b,
+up_allzeros, tab_1d,
+tab_1e,
+tab_1f,
+tab_20,
+tab_21,
+tab_22,
+tab_23,
+tab_24,
+tab_25,
+tab_26,
+tab_27,
+up_allzeros, up_allzeros, tab_2a,
+up_allzeros, tab_2c,
+tab_2d,
+tab_2e,
+tab_2f,
+tab_30,
+tab_31,
+tab_32,
+tab_33,
+up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, tab_a7,
+up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, tab_f9,
+tab_fa,
+tab_fb,
+tab_fc,
+tab_fd,
+tab_fe,
+tab_ff,
+0};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ustring.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ustring.c
new file mode 100644
index 00000000000..c67cffe25cc
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ustring.c
@@ -0,0 +1,225 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#include <fontforge-config.h>
+
+#include "ustring.h"
+
+int u_strlen(register const unichar_t *str) {
+ register int len = 0;
+
+ while ( *str++!='\0' )
+ ++len;
+return( len );
+}
+
+unichar_t *utf82u_strncpy(unichar_t *ubuf,const char *utf8buf,int len) {
+ unichar_t *upt=ubuf, *uend=ubuf+len-1;
+ const uint8 *pt = (const uint8 *) utf8buf, *end = pt+strlen(utf8buf);
+ int w, w2;
+
+ while ( pt<end && *pt!='\0' && upt<uend ) {
+ if ( *pt<=127 )
+ *upt = *pt++;
+ else if ( *pt<=0xdf ) {
+ *upt = ((*pt&0x1f)<<6) | (pt[1]&0x3f);
+ pt += 2;
+ } else if ( *pt<=0xef ) {
+ *upt = ((*pt&0xf)<<12) | ((pt[1]&0x3f)<<6) | (pt[2]&0x3f);
+ pt += 3;
+ } else {
+ w = ( ((*pt&0x7)<<2) | ((pt[1]&0x30)>>4) )-1;
+ w = (w<<6) | ((pt[1]&0xf)<<2) | ((pt[2]&0x30)>>4);
+ w2 = ((pt[2]&0xf)<<6) | (pt[3]&0x3f);
+ *upt = w*0x400 + w2 + 0x10000;
+ pt += 4;
+ }
+ ++upt;
+ }
+ *upt = '\0';
+return( ubuf );
+}
+
+unichar_t *utf82u_copy(const char *utf8buf) {
+ int len;
+ unichar_t *ubuf;
+
+ if ( utf8buf==NULL )
+return( NULL );
+
+ len = strlen(utf8buf);
+ ubuf = (unichar_t *) malloc((len+1)*sizeof(unichar_t));
+return( utf82u_strncpy(ubuf,utf8buf,len+1));
+}
+
+char *latin1_2_utf8_strcpy(char *utf8buf,const char *lbuf) {
+ char *pt = utf8buf;
+ const unsigned char *lpt = (const unsigned char *) lbuf;
+
+ while ( *lpt ) {
+ if ( *lpt<0x80 )
+ *pt++ = *lpt;
+ else {
+ *pt++ = 0xc0 | (*lpt>>6);
+ *pt++ = 0x80 | (*lpt&0x3f);
+ }
+ ++lpt;
+ }
+ *pt = '\0';
+return( utf8buf );
+}
+
+char *latin1_2_utf8_copy(const char *lbuf) {
+ int len;
+ char *utf8buf;
+
+ if ( lbuf==NULL )
+return( NULL );
+
+ len = strlen(lbuf);
+ utf8buf = (char *) malloc(2*len+1);
+return( latin1_2_utf8_strcpy(utf8buf,lbuf));
+}
+
+int32 utf8_ildb(const char **_text) {
+ int32 val= -1;
+ int ch;
+ const uint8 *text = (const uint8 *) *_text;
+ /* Increment and load character */
+
+ if ( text==NULL )
+ return( val );
+ else if ( (ch = *text++)<0x80 ) {
+ val = ch;
+ } else if ( ch<=0xbf ) {
+ /* error */
+ } else if ( ch<=0xdf ) {
+ if ( *text>=0x80 && *text<0xc0 )
+ val = ((ch&0x1f)<<6) | (*text++&0x3f);
+ } else if ( ch<=0xef ) {
+ if ( *text>=0x80 && *text<0xc0 && text[1]>=0x80 && text[1]<0xc0 ) {
+ val = ((ch&0xf)<<12) | ((text[0]&0x3f)<<6) | (text[1]&0x3f);
+ text += 2;
+ }
+ } else {
+ int w = ( ((ch&0x7)<<2) | ((text[0]&0x30)>>4) )-1, w2;
+ w = (w<<6) | ((text[0]&0xf)<<2) | ((text[1]&0x30)>>4);
+ w2 = ((text[1]&0xf)<<6) | (text[2]&0x3f);
+ val = w*0x400 + w2 + 0x10000;
+ if ( *text<0x80 || text[1]<0x80 || text[2]<0x80 ||
+ *text>=0xc0 || text[1]>=0xc0 || text[2]>=0xc0 )
+ val = -1;
+ else
+ text += 3;
+ }
+ *_text = (const char *) text;
+return( val );
+}
+
+char *utf8_idpb(char *utf8_text,uint32 ch,int flags) {
+/* Increment and deposit character, no '\0' appended */
+/* NOTE: Unicode only needs range of 17x65535 values */
+/* and strings must be long enough to hold +4 chars. */
+/* ISO/IEC 10646 description of UTF8 allows encoding */
+/* character values up to U+7FFFFFFF before RFC3629. */
+
+ if ( ch>0x7fffffff || \
+ (!(flags&UTF8IDPB_OLDLIMIT) && ((ch>=0xd800 && ch<=0xdfff) || ch>=17*65536)) )
+ return( 0 ); /* Error, ch is out of range */
+
+ if ( (flags&(UTF8IDPB_UCS2|UTF8IDPB_UTF16|UTF8IDPB_UTF32)) ) {
+ if ( (flags&UTF8IDPB_UCS2) && ch>0xffff )
+ return( 0 ); /* Error, ch is out of range */
+ if ( (flags&UTF8IDPB_UTF32) ) {
+ *utf8_text++ = ((ch>>24)&0xff);
+ *utf8_text++ = ((ch>>16)&0xff);
+ ch &= 0xffff;
+ }
+ if ( ch>0xffff ) {
+ /* ...here if a utf16 encoded value */
+ unsigned long us;
+ ch -= 0x10000;
+ us = (ch>>10)+0xd800;
+ *utf8_text++ = us>>8;
+ *utf8_text++ = us&0xff;
+ ch = (ch&0x3ff)+0xdc00;
+ }
+ *utf8_text++ = ch>>8;
+ ch &= 0xff;
+ } else if ( ch>127 || (ch==0 && (flags&UTF8IDPB_NOZERO)) ) {
+ if ( ch<=0x7ff )
+ /* ch>=0x80 && ch<=0x7ff */
+ *utf8_text++ = 0xc0 | (ch>>6);
+ else {
+ if ( ch<=0xffff )
+ /* ch>=0x800 && ch<=0xffff */
+ *utf8_text++ = 0xe0 | (ch>>12);
+ else {
+ if ( ch<=0x1fffff )
+ /* ch>=0x10000 && ch<=0x1fffff */
+ *utf8_text++ = 0xf0 | (ch>>18);
+ else {
+ if ( ch<=0x3ffffff )
+ /* ch>=0x200000 && ch<=0x3ffffff */
+ *utf8_text++ = 0xf8 | (ch>>24);
+ else {
+ /* ch>=0x4000000 && ch<=0x7fffffff */
+ *utf8_text++ = 0xfc | (ch>>30);
+ *utf8_text++ = 0x80 | ((ch>>24)&0x3f);
+ }
+ *utf8_text++ = 0x80 | ((ch>>18)&0x3f);
+ }
+ *utf8_text++ = 0x80 | ((ch>>12)&0x3f);
+ }
+ *utf8_text++ = 0x80 | ((ch>>6)&0x3f);
+ }
+ ch = 0x80 | (ch&0x3f);
+ }
+ *utf8_text++ = ch;
+ return( utf8_text );
+}
+
+int utf8_valid(const char *str) {
+ /* Is this a valid utf8 string? */
+ int ch;
+
+ while ( (ch=utf8_ildb(&str))!='\0' )
+ if ( ch==-1 )
+return( false );
+
+return( true );
+}
+
+long utf82u_strlen(const char *utf8_str) {
+/* Count how many shorts needed to represent in UCS2 */
+ int32 ch;
+ long len = 0;
+
+ while ( (ch = utf8_ildb(&utf8_str))>0 && ++len>0 )
+ if ( ch>=0x10000 )
+ ++len;
+ return( len );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/utils.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/utils.c
new file mode 100644
index 00000000000..7f3e5a41e45
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/utils.c
@@ -0,0 +1,85 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#ifdef _WIN32
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <windows.h>
+#ifdef _MSC_VER
+#include <io.h>
+#endif
+
+FILE* tmpfile2() {
+ FILE *fp = 0;
+ char tmpdir[MAX_PATH];
+ char fname[MAX_PATH-14];
+ if (!GetTempPath(MAX_PATH, tmpdir))
+ strcpy(tmpdir, ".");
+ if (GetTempFileName(tmpdir, "tmp", 0, fname)) {
+ int fd = _open(fname, _O_CREAT | _O_TEMPORARY | _O_RDWR | _O_BINARY, _S_IREAD | _S_IWRITE);
+ if (fd >= 0) {
+ fp = _fdopen(fd, "w+b");
+ if (fp == NULL) {
+ int saved_errno = errno;
+ _close(fd);
+ errno = saved_errno;
+ }
+ }
+ }
+ return fp;
+}
+
+#endif
+
+#if 0
+
+struct library_version_configuration exe_library_version_configuration = {
+ FONTFORGE_LIBFFE_VERSION_MAJOR,
+ FONTFORGE_LIBFFE_VERSION_MINOR,
+ LibFF_ModTime, /* Seconds since 1970 (standard unix time) */
+ LibFF_ModTime_Str, /* Version date (in char string format) */
+ LibFF_VersionDate, /* Version as long value, Year, month, day */
+ sizeof(struct library_version_configuration),
+ sizeof(struct splinefont),
+ sizeof(struct splinechar),
+ sizeof(struct fontviewbase),
+ sizeof(struct charviewbase),
+ sizeof(struct cvcontainer),
+ 1,
+ 1,
+
+#ifdef _NO_PYTHON
+ 0,
+#else
+ 1,
+#endif
+ 0xff /* Not currently defined */
+};
+#endif // 0
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/utype.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/utype.c
new file mode 100644
index 00000000000..a438d4536a0
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/utype.c
@@ -0,0 +1,24592 @@
+/* Copyright: 2001 George Williams */
+/* License: BSD-3-clause */
+/* Contributions: Werner Lemberg, Khaled Hosny, Joe Da Silva */
+
+#include "utype.h"
+
+/* This file was generated using the program 'makeutype' */
+
+const unsigned short ____tolower[]= { 0,
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, /* 0x0000 */
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 0x0040 */
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, /* 0x0080 */
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, /* 0x00c0 */
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00d7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff,
+ 0x0101, 0x0101, 0x0103, 0x0103, 0x0105, 0x0105, 0x0107, 0x0107, /* 0x0100 */
+ 0x0109, 0x0109, 0x010b, 0x010b, 0x010d, 0x010d, 0x010f, 0x010f,
+ 0x0111, 0x0111, 0x0113, 0x0113, 0x0115, 0x0115, 0x0117, 0x0117,
+ 0x0119, 0x0119, 0x011b, 0x011b, 0x011d, 0x011d, 0x011f, 0x011f,
+ 0x0121, 0x0121, 0x0123, 0x0123, 0x0125, 0x0125, 0x0127, 0x0127,
+ 0x0129, 0x0129, 0x012b, 0x012b, 0x012d, 0x012d, 0x012f, 0x012f,
+ 0x0069, 0x0131, 0x0133, 0x0133, 0x0135, 0x0135, 0x0137, 0x0137,
+ 0x0138, 0x013a, 0x013a, 0x013c, 0x013c, 0x013e, 0x013e, 0x0140,
+ 0x0140, 0x0142, 0x0142, 0x0144, 0x0144, 0x0146, 0x0146, 0x0148, /* 0x0140 */
+ 0x0148, 0x0149, 0x014b, 0x014b, 0x014d, 0x014d, 0x014f, 0x014f,
+ 0x0151, 0x0151, 0x0153, 0x0153, 0x0155, 0x0155, 0x0157, 0x0157,
+ 0x0159, 0x0159, 0x015b, 0x015b, 0x015d, 0x015d, 0x015f, 0x015f,
+ 0x0161, 0x0161, 0x0163, 0x0163, 0x0165, 0x0165, 0x0167, 0x0167,
+ 0x0169, 0x0169, 0x016b, 0x016b, 0x016d, 0x016d, 0x016f, 0x016f,
+ 0x0171, 0x0171, 0x0173, 0x0173, 0x0175, 0x0175, 0x0177, 0x0177,
+ 0x00ff, 0x017a, 0x017a, 0x017c, 0x017c, 0x017e, 0x017e, 0x017f,
+ 0x0180, 0x0253, 0x0183, 0x0183, 0x0185, 0x0185, 0x0254, 0x0188, /* 0x0180 */
+ 0x0188, 0x0256, 0x0257, 0x018c, 0x018c, 0x018d, 0x01dd, 0x0259,
+ 0x025b, 0x0192, 0x0192, 0x0260, 0x0263, 0x0195, 0x0269, 0x0268,
+ 0x0199, 0x0199, 0x019a, 0x019b, 0x026f, 0x0272, 0x019e, 0x0275,
+ 0x01a1, 0x01a1, 0x01a3, 0x01a3, 0x01a5, 0x01a5, 0x0280, 0x01a8,
+ 0x01a8, 0x0283, 0x01aa, 0x01ab, 0x01ad, 0x01ad, 0x0288, 0x01b0,
+ 0x01b0, 0x028a, 0x028b, 0x01b4, 0x01b4, 0x01b6, 0x01b6, 0x0292,
+ 0x01b9, 0x01b9, 0x01ba, 0x01bb, 0x01bd, 0x01bd, 0x01be, 0x01bf,
+ 0x01c0, 0x01c1, 0x01c2, 0x01c3, 0x01c6, 0x01c6, 0x01c6, 0x01c9, /* 0x01c0 */
+ 0x01c9, 0x01c9, 0x01cc, 0x01cc, 0x01cc, 0x01ce, 0x01ce, 0x01d0,
+ 0x01d0, 0x01d2, 0x01d2, 0x01d4, 0x01d4, 0x01d6, 0x01d6, 0x01d8,
+ 0x01d8, 0x01da, 0x01da, 0x01dc, 0x01dc, 0x01dd, 0x01df, 0x01df,
+ 0x01e1, 0x01e1, 0x01e3, 0x01e3, 0x01e5, 0x01e5, 0x01e7, 0x01e7,
+ 0x01e9, 0x01e9, 0x01eb, 0x01eb, 0x01ed, 0x01ed, 0x01ef, 0x01ef,
+ 0x01f0, 0x01f3, 0x01f3, 0x01f3, 0x01f5, 0x01f5, 0x0195, 0x01bf,
+ 0x01f9, 0x01f9, 0x01fb, 0x01fb, 0x01fd, 0x01fd, 0x01ff, 0x01ff,
+ 0x0201, 0x0201, 0x0203, 0x0203, 0x0205, 0x0205, 0x0207, 0x0207, /* 0x0200 */
+ 0x0209, 0x0209, 0x020b, 0x020b, 0x020d, 0x020d, 0x020f, 0x020f,
+ 0x0211, 0x0211, 0x0213, 0x0213, 0x0215, 0x0215, 0x0217, 0x0217,
+ 0x0219, 0x0219, 0x021b, 0x021b, 0x021d, 0x021d, 0x021f, 0x021f,
+ 0x019e, 0x0221, 0x0223, 0x0223, 0x0225, 0x0225, 0x0227, 0x0227,
+ 0x0229, 0x0229, 0x022b, 0x022b, 0x022d, 0x022d, 0x022f, 0x022f,
+ 0x0231, 0x0231, 0x0233, 0x0233, 0x0234, 0x0235, 0x0236, 0x0237,
+ 0x0238, 0x0239, 0x2c65, 0x023c, 0x023c, 0x019a, 0x2c66, 0x023f,
+ 0x0240, 0x0242, 0x0242, 0x0180, 0x0289, 0x028c, 0x0247, 0x0247, /* 0x0240 */
+ 0x0249, 0x0249, 0x024b, 0x024b, 0x024d, 0x024d, 0x024f, 0x024f,
+ 0x0250, 0x0251, 0x0252, 0x0253, 0x0254, 0x0255, 0x0256, 0x0257,
+ 0x0258, 0x0259, 0x025a, 0x025b, 0x025c, 0x025d, 0x025e, 0x025f,
+ 0x0260, 0x0261, 0x0262, 0x0263, 0x0264, 0x0265, 0x0266, 0x0267,
+ 0x0268, 0x0269, 0x026a, 0x026b, 0x026c, 0x026d, 0x026e, 0x026f,
+ 0x0270, 0x0271, 0x0272, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277,
+ 0x0278, 0x0279, 0x027a, 0x027b, 0x027c, 0x027d, 0x027e, 0x027f,
+ 0x0280, 0x0281, 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0287, /* 0x0280 */
+ 0x0288, 0x0289, 0x028a, 0x028b, 0x028c, 0x028d, 0x028e, 0x028f,
+ 0x0290, 0x0291, 0x0292, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297,
+ 0x0298, 0x0299, 0x029a, 0x029b, 0x029c, 0x029d, 0x029e, 0x029f,
+ 0x02a0, 0x02a1, 0x02a2, 0x02a3, 0x02a4, 0x02a5, 0x02a6, 0x02a7,
+ 0x02a8, 0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad, 0x02ae, 0x02af,
+ 0x02b0, 0x02b1, 0x02b2, 0x02b3, 0x02b4, 0x02b5, 0x02b6, 0x02b7,
+ 0x02b8, 0x02b9, 0x02ba, 0x02bb, 0x02bc, 0x02bd, 0x02be, 0x02bf,
+ 0x02c0, 0x02c1, 0x02c2, 0x02c3, 0x02c4, 0x02c5, 0x02c6, 0x02c7, /* 0x02c0 */
+ 0x02c8, 0x02c9, 0x02ca, 0x02cb, 0x02cc, 0x02cd, 0x02ce, 0x02cf,
+ 0x02d0, 0x02d1, 0x02d2, 0x02d3, 0x02d4, 0x02d5, 0x02d6, 0x02d7,
+ 0x02d8, 0x02d9, 0x02da, 0x02db, 0x02dc, 0x02dd, 0x02de, 0x02df,
+ 0x02e0, 0x02e1, 0x02e2, 0x02e3, 0x02e4, 0x02e5, 0x02e6, 0x02e7,
+ 0x02e8, 0x02e9, 0x02ea, 0x02eb, 0x02ec, 0x02ed, 0x02ee, 0x02ef,
+ 0x02f0, 0x02f1, 0x02f2, 0x02f3, 0x02f4, 0x02f5, 0x02f6, 0x02f7,
+ 0x02f8, 0x02f9, 0x02fa, 0x02fb, 0x02fc, 0x02fd, 0x02fe, 0x02ff,
+ 0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307, /* 0x0300 */
+ 0x0308, 0x0309, 0x030a, 0x030b, 0x030c, 0x030d, 0x030e, 0x030f,
+ 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317,
+ 0x0318, 0x0319, 0x031a, 0x031b, 0x031c, 0x031d, 0x031e, 0x031f,
+ 0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327,
+ 0x0328, 0x0329, 0x032a, 0x032b, 0x032c, 0x032d, 0x032e, 0x032f,
+ 0x0330, 0x0331, 0x0332, 0x0333, 0x0334, 0x0335, 0x0336, 0x0337,
+ 0x0338, 0x0339, 0x033a, 0x033b, 0x033c, 0x033d, 0x033e, 0x033f,
+ 0x0340, 0x0341, 0x0342, 0x0343, 0x0344, 0x0345, 0x0346, 0x0347, /* 0x0340 */
+ 0x0348, 0x0349, 0x034a, 0x034b, 0x034c, 0x034d, 0x034e, 0x034f,
+ 0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356, 0x0357,
+ 0x0358, 0x0359, 0x035a, 0x035b, 0x035c, 0x035d, 0x035e, 0x035f,
+ 0x0360, 0x0361, 0x0362, 0x0363, 0x0364, 0x0365, 0x0366, 0x0367,
+ 0x0368, 0x0369, 0x036a, 0x036b, 0x036c, 0x036d, 0x036e, 0x036f,
+ 0x0371, 0x0371, 0x0373, 0x0373, 0x0374, 0x0375, 0x0377, 0x0377,
+ 0x0000, 0x0000, 0x037a, 0x037b, 0x037c, 0x037d, 0x037e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0384, 0x0385, 0x03ac, 0x0387, /* 0x0380 */
+ 0x03ad, 0x03ae, 0x03af, 0x0000, 0x03cc, 0x0000, 0x03cd, 0x03ce,
+ 0x0390, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+ 0x03c0, 0x03c1, 0x0000, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
+ 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03ac, 0x03ad, 0x03ae, 0x03af,
+ 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+ 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, /* 0x03c0 */
+ 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x03d7,
+ 0x03d0, 0x03d1, 0x03d2, 0x03d3, 0x03d4, 0x03d5, 0x03d6, 0x03d7,
+ 0x03d9, 0x03d9, 0x03db, 0x03db, 0x03dd, 0x03dd, 0x03df, 0x03df,
+ 0x03e1, 0x03e1, 0x03e3, 0x03e3, 0x03e5, 0x03e5, 0x03e7, 0x03e7,
+ 0x03e9, 0x03e9, 0x03eb, 0x03eb, 0x03ed, 0x03ed, 0x03ef, 0x03ef,
+ 0x03f0, 0x03f1, 0x03f2, 0x03f3, 0x03b8, 0x03f5, 0x03f6, 0x03f8,
+ 0x03f8, 0x03f2, 0x03fb, 0x03fb, 0x03fc, 0x037b, 0x037c, 0x037d,
+ 0x0450, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, /* 0x0400 */
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x045d, 0x045e, 0x045f,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0x0440 */
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+ 0x0450, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x045d, 0x045e, 0x045f,
+ 0x0461, 0x0461, 0x0463, 0x0463, 0x0465, 0x0465, 0x0467, 0x0467,
+ 0x0469, 0x0469, 0x046b, 0x046b, 0x046d, 0x046d, 0x046f, 0x046f,
+ 0x0471, 0x0471, 0x0473, 0x0473, 0x0475, 0x0475, 0x0477, 0x0477,
+ 0x0479, 0x0479, 0x047b, 0x047b, 0x047d, 0x047d, 0x047f, 0x047f,
+ 0x0481, 0x0481, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487, /* 0x0480 */
+ 0x0488, 0x0489, 0x048b, 0x048b, 0x048d, 0x048d, 0x048f, 0x048f,
+ 0x0491, 0x0491, 0x0493, 0x0493, 0x0495, 0x0495, 0x0497, 0x0497,
+ 0x0499, 0x0499, 0x049b, 0x049b, 0x049d, 0x049d, 0x049f, 0x049f,
+ 0x04a1, 0x04a1, 0x04a3, 0x04a3, 0x04a5, 0x04a5, 0x04a7, 0x04a7,
+ 0x04a9, 0x04a9, 0x04ab, 0x04ab, 0x04ad, 0x04ad, 0x04af, 0x04af,
+ 0x04b1, 0x04b1, 0x04b3, 0x04b3, 0x04b5, 0x04b5, 0x04b7, 0x04b7,
+ 0x04b9, 0x04b9, 0x04bb, 0x04bb, 0x04bd, 0x04bd, 0x04bf, 0x04bf,
+ 0x04cf, 0x04c2, 0x04c2, 0x04c4, 0x04c4, 0x04c6, 0x04c6, 0x04c8, /* 0x04c0 */
+ 0x04c8, 0x04ca, 0x04ca, 0x04cc, 0x04cc, 0x04ce, 0x04ce, 0x04cf,
+ 0x04d1, 0x04d1, 0x04d3, 0x04d3, 0x04d5, 0x04d5, 0x04d7, 0x04d7,
+ 0x04d9, 0x04d9, 0x04db, 0x04db, 0x04dd, 0x04dd, 0x04df, 0x04df,
+ 0x04e1, 0x04e1, 0x04e3, 0x04e3, 0x04e5, 0x04e5, 0x04e7, 0x04e7,
+ 0x04e9, 0x04e9, 0x04eb, 0x04eb, 0x04ed, 0x04ed, 0x04ef, 0x04ef,
+ 0x04f1, 0x04f1, 0x04f3, 0x04f3, 0x04f5, 0x04f5, 0x04f7, 0x04f7,
+ 0x04f9, 0x04f9, 0x04fb, 0x04fb, 0x04fd, 0x04fd, 0x04ff, 0x04ff,
+ 0x0501, 0x0501, 0x0503, 0x0503, 0x0505, 0x0505, 0x0507, 0x0507, /* 0x0500 */
+ 0x0509, 0x0509, 0x050b, 0x050b, 0x050d, 0x050d, 0x050f, 0x050f,
+ 0x0511, 0x0511, 0x0513, 0x0513, 0x0515, 0x0515, 0x0517, 0x0517,
+ 0x0519, 0x0519, 0x051b, 0x051b, 0x051d, 0x051d, 0x051f, 0x051f,
+ 0x0521, 0x0521, 0x0523, 0x0523, 0x0525, 0x0525, 0x0527, 0x0527,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0561, 0x0562, 0x0563, 0x0564, 0x0565, 0x0566, 0x0567,
+ 0x0568, 0x0569, 0x056a, 0x056b, 0x056c, 0x056d, 0x056e, 0x056f,
+ 0x0570, 0x0571, 0x0572, 0x0573, 0x0574, 0x0575, 0x0576, 0x0577, /* 0x0540 */
+ 0x0578, 0x0579, 0x057a, 0x057b, 0x057c, 0x057d, 0x057e, 0x057f,
+ 0x0580, 0x0581, 0x0582, 0x0583, 0x0584, 0x0585, 0x0586, 0x0000,
+ 0x0000, 0x0559, 0x055a, 0x055b, 0x055c, 0x055d, 0x055e, 0x055f,
+ 0x0000, 0x0561, 0x0562, 0x0563, 0x0564, 0x0565, 0x0566, 0x0567,
+ 0x0568, 0x0569, 0x056a, 0x056b, 0x056c, 0x056d, 0x056e, 0x056f,
+ 0x0570, 0x0571, 0x0572, 0x0573, 0x0574, 0x0575, 0x0576, 0x0577,
+ 0x0578, 0x0579, 0x057a, 0x057b, 0x057c, 0x057d, 0x057e, 0x057f,
+ 0x0580, 0x0581, 0x0582, 0x0583, 0x0584, 0x0585, 0x0586, 0x0587, /* 0x0580 */
+ 0x0000, 0x0589, 0x058a, 0x0000, 0x0000, 0x0000, 0x0000, 0x058f,
+ 0x0000, 0x0591, 0x0592, 0x0593, 0x0594, 0x0595, 0x0596, 0x0597,
+ 0x0598, 0x0599, 0x059a, 0x059b, 0x059c, 0x059d, 0x059e, 0x059f,
+ 0x05a0, 0x05a1, 0x05a2, 0x05a3, 0x05a4, 0x05a5, 0x05a6, 0x05a7,
+ 0x05a8, 0x05a9, 0x05aa, 0x05ab, 0x05ac, 0x05ad, 0x05ae, 0x05af,
+ 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7,
+ 0x05b8, 0x05b9, 0x05ba, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf,
+ 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05c4, 0x05c5, 0x05c6, 0x05c7, /* 0x05c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+ 0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x05f0, 0x05f1, 0x05f2, 0x05f3, 0x05f4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0600, 0x0601, 0x0602, 0x0603, 0x0604, 0x0000, 0x0606, 0x0607, /* 0x0600 */
+ 0x0608, 0x0609, 0x060a, 0x060b, 0x060c, 0x060d, 0x060e, 0x060f,
+ 0x0610, 0x0611, 0x0612, 0x0613, 0x0614, 0x0615, 0x0616, 0x0617,
+ 0x0618, 0x0619, 0x061a, 0x061b, 0x061c, 0x0000, 0x061e, 0x061f,
+ 0x0620, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
+ 0x0638, 0x0639, 0x063a, 0x063b, 0x063c, 0x063d, 0x063e, 0x063f,
+ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, /* 0x0640 */
+ 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
+ 0x0650, 0x0651, 0x0652, 0x0653, 0x0654, 0x0655, 0x0656, 0x0657,
+ 0x0658, 0x0659, 0x065a, 0x065b, 0x065c, 0x065d, 0x065e, 0x065f,
+ 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667,
+ 0x0668, 0x0669, 0x066a, 0x066b, 0x066c, 0x066d, 0x066e, 0x066f,
+ 0x0670, 0x0671, 0x0672, 0x0673, 0x0674, 0x0675, 0x0676, 0x0677,
+ 0x0678, 0x0679, 0x067a, 0x067b, 0x067c, 0x067d, 0x067e, 0x067f,
+ 0x0680, 0x0681, 0x0682, 0x0683, 0x0684, 0x0685, 0x0686, 0x0687, /* 0x0680 */
+ 0x0688, 0x0689, 0x068a, 0x068b, 0x068c, 0x068d, 0x068e, 0x068f,
+ 0x0690, 0x0691, 0x0692, 0x0693, 0x0694, 0x0695, 0x0696, 0x0697,
+ 0x0698, 0x0699, 0x069a, 0x069b, 0x069c, 0x069d, 0x069e, 0x069f,
+ 0x06a0, 0x06a1, 0x06a2, 0x06a3, 0x06a4, 0x06a5, 0x06a6, 0x06a7,
+ 0x06a8, 0x06a9, 0x06aa, 0x06ab, 0x06ac, 0x06ad, 0x06ae, 0x06af,
+ 0x06b0, 0x06b1, 0x06b2, 0x06b3, 0x06b4, 0x06b5, 0x06b6, 0x06b7,
+ 0x06b8, 0x06b9, 0x06ba, 0x06bb, 0x06bc, 0x06bd, 0x06be, 0x06bf,
+ 0x06c0, 0x06c1, 0x06c2, 0x06c3, 0x06c4, 0x06c5, 0x06c6, 0x06c7, /* 0x06c0 */
+ 0x06c8, 0x06c9, 0x06ca, 0x06cb, 0x06cc, 0x06cd, 0x06ce, 0x06cf,
+ 0x06d0, 0x06d1, 0x06d2, 0x06d3, 0x06d4, 0x06d5, 0x06d6, 0x06d7,
+ 0x06d8, 0x06d9, 0x06da, 0x06db, 0x06dc, 0x06dd, 0x06de, 0x06df,
+ 0x06e0, 0x06e1, 0x06e2, 0x06e3, 0x06e4, 0x06e5, 0x06e6, 0x06e7,
+ 0x06e8, 0x06e9, 0x06ea, 0x06eb, 0x06ec, 0x06ed, 0x06ee, 0x06ef,
+ 0x06f0, 0x06f1, 0x06f2, 0x06f3, 0x06f4, 0x06f5, 0x06f6, 0x06f7,
+ 0x06f8, 0x06f9, 0x06fa, 0x06fb, 0x06fc, 0x06fd, 0x06fe, 0x06ff,
+ 0x0700, 0x0701, 0x0702, 0x0703, 0x0704, 0x0705, 0x0706, 0x0707, /* 0x0700 */
+ 0x0708, 0x0709, 0x070a, 0x070b, 0x070c, 0x070d, 0x0000, 0x070f,
+ 0x0710, 0x0711, 0x0712, 0x0713, 0x0714, 0x0715, 0x0716, 0x0717,
+ 0x0718, 0x0719, 0x071a, 0x071b, 0x071c, 0x071d, 0x071e, 0x071f,
+ 0x0720, 0x0721, 0x0722, 0x0723, 0x0724, 0x0725, 0x0726, 0x0727,
+ 0x0728, 0x0729, 0x072a, 0x072b, 0x072c, 0x072d, 0x072e, 0x072f,
+ 0x0730, 0x0731, 0x0732, 0x0733, 0x0734, 0x0735, 0x0736, 0x0737,
+ 0x0738, 0x0739, 0x073a, 0x073b, 0x073c, 0x073d, 0x073e, 0x073f,
+ 0x0740, 0x0741, 0x0742, 0x0743, 0x0744, 0x0745, 0x0746, 0x0747, /* 0x0740 */
+ 0x0748, 0x0749, 0x074a, 0x0000, 0x0000, 0x074d, 0x074e, 0x074f,
+ 0x0750, 0x0751, 0x0752, 0x0753, 0x0754, 0x0755, 0x0756, 0x0757,
+ 0x0758, 0x0759, 0x075a, 0x075b, 0x075c, 0x075d, 0x075e, 0x075f,
+ 0x0760, 0x0761, 0x0762, 0x0763, 0x0764, 0x0765, 0x0766, 0x0767,
+ 0x0768, 0x0769, 0x076a, 0x076b, 0x076c, 0x076d, 0x076e, 0x076f,
+ 0x0770, 0x0771, 0x0772, 0x0773, 0x0774, 0x0775, 0x0776, 0x0777,
+ 0x0778, 0x0779, 0x077a, 0x077b, 0x077c, 0x077d, 0x077e, 0x077f,
+ 0x0780, 0x0781, 0x0782, 0x0783, 0x0784, 0x0785, 0x0786, 0x0787, /* 0x0780 */
+ 0x0788, 0x0789, 0x078a, 0x078b, 0x078c, 0x078d, 0x078e, 0x078f,
+ 0x0790, 0x0791, 0x0792, 0x0793, 0x0794, 0x0795, 0x0796, 0x0797,
+ 0x0798, 0x0799, 0x079a, 0x079b, 0x079c, 0x079d, 0x079e, 0x079f,
+ 0x07a0, 0x07a1, 0x07a2, 0x07a3, 0x07a4, 0x07a5, 0x07a6, 0x07a7,
+ 0x07a8, 0x07a9, 0x07aa, 0x07ab, 0x07ac, 0x07ad, 0x07ae, 0x07af,
+ 0x07b0, 0x07b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x07c0, 0x07c1, 0x07c2, 0x07c3, 0x07c4, 0x07c5, 0x07c6, 0x07c7, /* 0x07c0 */
+ 0x07c8, 0x07c9, 0x07ca, 0x07cb, 0x07cc, 0x07cd, 0x07ce, 0x07cf,
+ 0x07d0, 0x07d1, 0x07d2, 0x07d3, 0x07d4, 0x07d5, 0x07d6, 0x07d7,
+ 0x07d8, 0x07d9, 0x07da, 0x07db, 0x07dc, 0x07dd, 0x07de, 0x07df,
+ 0x07e0, 0x07e1, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, 0x07e7,
+ 0x07e8, 0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, 0x07ef,
+ 0x07f0, 0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, 0x07f7,
+ 0x07f8, 0x07f9, 0x07fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0800, 0x0801, 0x0802, 0x0803, 0x0804, 0x0805, 0x0806, 0x0807, /* 0x0800 */
+ 0x0808, 0x0809, 0x080a, 0x080b, 0x080c, 0x080d, 0x080e, 0x080f,
+ 0x0810, 0x0811, 0x0812, 0x0813, 0x0814, 0x0815, 0x0816, 0x0817,
+ 0x0818, 0x0819, 0x081a, 0x081b, 0x081c, 0x081d, 0x081e, 0x081f,
+ 0x0820, 0x0821, 0x0822, 0x0823, 0x0824, 0x0825, 0x0826, 0x0827,
+ 0x0828, 0x0829, 0x082a, 0x082b, 0x082c, 0x082d, 0x0000, 0x0000,
+ 0x0830, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0836, 0x0837,
+ 0x0838, 0x0839, 0x083a, 0x083b, 0x083c, 0x083d, 0x083e, 0x0000,
+ 0x0840, 0x0841, 0x0842, 0x0843, 0x0844, 0x0845, 0x0846, 0x0847, /* 0x0840 */
+ 0x0848, 0x0849, 0x084a, 0x084b, 0x084c, 0x084d, 0x084e, 0x084f,
+ 0x0850, 0x0851, 0x0852, 0x0853, 0x0854, 0x0855, 0x0856, 0x0857,
+ 0x0858, 0x0859, 0x085a, 0x085b, 0x0000, 0x0000, 0x085e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x08a0, 0x0000, 0x08a2, 0x08a3, 0x08a4, 0x08a5, 0x08a6, 0x08a7,
+ 0x08a8, 0x08a9, 0x08aa, 0x08ab, 0x08ac, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x08e4, 0x08e5, 0x08e6, 0x08e7,
+ 0x08e8, 0x08e9, 0x08ea, 0x08eb, 0x08ec, 0x08ed, 0x08ee, 0x08ef,
+ 0x08f0, 0x08f1, 0x08f2, 0x08f3, 0x08f4, 0x08f5, 0x08f6, 0x08f7,
+ 0x08f8, 0x08f9, 0x08fa, 0x08fb, 0x08fc, 0x08fd, 0x08fe, 0x0000,
+ 0x0900, 0x0901, 0x0902, 0x0903, 0x0904, 0x0905, 0x0906, 0x0907, /* 0x0900 */
+ 0x0908, 0x0909, 0x090a, 0x090b, 0x090c, 0x090d, 0x090e, 0x090f,
+ 0x0910, 0x0911, 0x0912, 0x0913, 0x0914, 0x0915, 0x0916, 0x0917,
+ 0x0918, 0x0919, 0x091a, 0x091b, 0x091c, 0x091d, 0x091e, 0x091f,
+ 0x0920, 0x0921, 0x0922, 0x0923, 0x0924, 0x0925, 0x0926, 0x0927,
+ 0x0928, 0x0929, 0x092a, 0x092b, 0x092c, 0x092d, 0x092e, 0x092f,
+ 0x0930, 0x0931, 0x0932, 0x0933, 0x0934, 0x0935, 0x0936, 0x0937,
+ 0x0938, 0x0939, 0x093a, 0x093b, 0x093c, 0x093d, 0x093e, 0x093f,
+ 0x0940, 0x0941, 0x0942, 0x0943, 0x0944, 0x0945, 0x0946, 0x0947, /* 0x0940 */
+ 0x0948, 0x0949, 0x094a, 0x094b, 0x094c, 0x094d, 0x094e, 0x094f,
+ 0x0950, 0x0951, 0x0952, 0x0953, 0x0954, 0x0955, 0x0956, 0x0957,
+ 0x0958, 0x0959, 0x095a, 0x095b, 0x095c, 0x095d, 0x095e, 0x095f,
+ 0x0960, 0x0961, 0x0962, 0x0963, 0x0964, 0x0965, 0x0966, 0x0967,
+ 0x0968, 0x0969, 0x096a, 0x096b, 0x096c, 0x096d, 0x096e, 0x096f,
+ 0x0970, 0x0971, 0x0972, 0x0973, 0x0974, 0x0975, 0x0976, 0x0977,
+ 0x0000, 0x0979, 0x097a, 0x097b, 0x097c, 0x097d, 0x097e, 0x097f,
+ 0x0000, 0x0981, 0x0982, 0x0983, 0x0000, 0x0985, 0x0986, 0x0987, /* 0x0980 */
+ 0x0988, 0x0989, 0x098a, 0x098b, 0x098c, 0x0000, 0x0000, 0x098f,
+ 0x0990, 0x0000, 0x0000, 0x0993, 0x0994, 0x0995, 0x0996, 0x0997,
+ 0x0998, 0x0999, 0x099a, 0x099b, 0x099c, 0x099d, 0x099e, 0x099f,
+ 0x09a0, 0x09a1, 0x09a2, 0x09a3, 0x09a4, 0x09a5, 0x09a6, 0x09a7,
+ 0x09a8, 0x0000, 0x09aa, 0x09ab, 0x09ac, 0x09ad, 0x09ae, 0x09af,
+ 0x09b0, 0x0000, 0x09b2, 0x0000, 0x0000, 0x0000, 0x09b6, 0x09b7,
+ 0x09b8, 0x09b9, 0x0000, 0x0000, 0x09bc, 0x09bd, 0x09be, 0x09bf,
+ 0x09c0, 0x09c1, 0x09c2, 0x09c3, 0x09c4, 0x0000, 0x0000, 0x09c7, /* 0x09c0 */
+ 0x09c8, 0x0000, 0x0000, 0x09cb, 0x09cc, 0x09cd, 0x09ce, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x09d7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x09dc, 0x09dd, 0x0000, 0x09df,
+ 0x09e0, 0x09e1, 0x09e2, 0x09e3, 0x0000, 0x0000, 0x09e6, 0x09e7,
+ 0x09e8, 0x09e9, 0x09ea, 0x09eb, 0x09ec, 0x09ed, 0x09ee, 0x09ef,
+ 0x09f0, 0x09f1, 0x09f2, 0x09f3, 0x09f4, 0x09f5, 0x09f6, 0x09f7,
+ 0x09f8, 0x09f9, 0x09fa, 0x09fb, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0a01, 0x0a02, 0x0a03, 0x0000, 0x0a05, 0x0a06, 0x0a07, /* 0x0a00 */
+ 0x0a08, 0x0a09, 0x0a0a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a0f,
+ 0x0a10, 0x0000, 0x0000, 0x0a13, 0x0a14, 0x0a15, 0x0a16, 0x0a17,
+ 0x0a18, 0x0a19, 0x0a1a, 0x0a1b, 0x0a1c, 0x0a1d, 0x0a1e, 0x0a1f,
+ 0x0a20, 0x0a21, 0x0a22, 0x0a23, 0x0a24, 0x0a25, 0x0a26, 0x0a27,
+ 0x0a28, 0x0000, 0x0a2a, 0x0a2b, 0x0a2c, 0x0a2d, 0x0a2e, 0x0a2f,
+ 0x0a30, 0x0000, 0x0a32, 0x0a33, 0x0000, 0x0a35, 0x0a36, 0x0000,
+ 0x0a38, 0x0a39, 0x0000, 0x0000, 0x0a3c, 0x0000, 0x0a3e, 0x0a3f,
+ 0x0a40, 0x0a41, 0x0a42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a47, /* 0x0a40 */
+ 0x0a48, 0x0000, 0x0000, 0x0a4b, 0x0a4c, 0x0a4d, 0x0000, 0x0000,
+ 0x0000, 0x0a51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0a59, 0x0a5a, 0x0a5b, 0x0a5c, 0x0000, 0x0a5e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a66, 0x0a67,
+ 0x0a68, 0x0a69, 0x0a6a, 0x0a6b, 0x0a6c, 0x0a6d, 0x0a6e, 0x0a6f,
+ 0x0a70, 0x0a71, 0x0a72, 0x0a73, 0x0a74, 0x0a75, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0a81, 0x0a82, 0x0a83, 0x0000, 0x0a85, 0x0a86, 0x0a87, /* 0x0a80 */
+ 0x0a88, 0x0a89, 0x0a8a, 0x0a8b, 0x0a8c, 0x0a8d, 0x0000, 0x0a8f,
+ 0x0a90, 0x0a91, 0x0000, 0x0a93, 0x0a94, 0x0a95, 0x0a96, 0x0a97,
+ 0x0a98, 0x0a99, 0x0a9a, 0x0a9b, 0x0a9c, 0x0a9d, 0x0a9e, 0x0a9f,
+ 0x0aa0, 0x0aa1, 0x0aa2, 0x0aa3, 0x0aa4, 0x0aa5, 0x0aa6, 0x0aa7,
+ 0x0aa8, 0x0000, 0x0aaa, 0x0aab, 0x0aac, 0x0aad, 0x0aae, 0x0aaf,
+ 0x0ab0, 0x0000, 0x0ab2, 0x0ab3, 0x0000, 0x0ab5, 0x0ab6, 0x0ab7,
+ 0x0ab8, 0x0ab9, 0x0000, 0x0000, 0x0abc, 0x0abd, 0x0abe, 0x0abf,
+ 0x0ac0, 0x0ac1, 0x0ac2, 0x0ac3, 0x0ac4, 0x0ac5, 0x0000, 0x0ac7, /* 0x0ac0 */
+ 0x0ac8, 0x0ac9, 0x0000, 0x0acb, 0x0acc, 0x0acd, 0x0000, 0x0000,
+ 0x0ad0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0ae0, 0x0ae1, 0x0ae2, 0x0ae3, 0x0000, 0x0000, 0x0ae6, 0x0ae7,
+ 0x0ae8, 0x0ae9, 0x0aea, 0x0aeb, 0x0aec, 0x0aed, 0x0aee, 0x0aef,
+ 0x0af0, 0x0af1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0b01, 0x0b02, 0x0b03, 0x0000, 0x0b05, 0x0b06, 0x0b07, /* 0x0b00 */
+ 0x0b08, 0x0b09, 0x0b0a, 0x0b0b, 0x0b0c, 0x0000, 0x0000, 0x0b0f,
+ 0x0b10, 0x0000, 0x0000, 0x0b13, 0x0b14, 0x0b15, 0x0b16, 0x0b17,
+ 0x0b18, 0x0b19, 0x0b1a, 0x0b1b, 0x0b1c, 0x0b1d, 0x0b1e, 0x0b1f,
+ 0x0b20, 0x0b21, 0x0b22, 0x0b23, 0x0b24, 0x0b25, 0x0b26, 0x0b27,
+ 0x0b28, 0x0000, 0x0b2a, 0x0b2b, 0x0b2c, 0x0b2d, 0x0b2e, 0x0b2f,
+ 0x0b30, 0x0000, 0x0b32, 0x0b33, 0x0000, 0x0b35, 0x0b36, 0x0b37,
+ 0x0b38, 0x0b39, 0x0000, 0x0000, 0x0b3c, 0x0b3d, 0x0b3e, 0x0b3f,
+ 0x0b40, 0x0b41, 0x0b42, 0x0b43, 0x0b44, 0x0000, 0x0000, 0x0b47, /* 0x0b40 */
+ 0x0b48, 0x0000, 0x0000, 0x0b4b, 0x0b4c, 0x0b4d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b56, 0x0b57,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0b5c, 0x0b5d, 0x0000, 0x0b5f,
+ 0x0b60, 0x0b61, 0x0b62, 0x0b63, 0x0000, 0x0000, 0x0b66, 0x0b67,
+ 0x0b68, 0x0b69, 0x0b6a, 0x0b6b, 0x0b6c, 0x0b6d, 0x0b6e, 0x0b6f,
+ 0x0b70, 0x0b71, 0x0b72, 0x0b73, 0x0b74, 0x0b75, 0x0b76, 0x0b77,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0b82, 0x0b83, 0x0000, 0x0b85, 0x0b86, 0x0b87, /* 0x0b80 */
+ 0x0b88, 0x0b89, 0x0b8a, 0x0000, 0x0000, 0x0000, 0x0b8e, 0x0b8f,
+ 0x0b90, 0x0000, 0x0b92, 0x0b93, 0x0b94, 0x0b95, 0x0000, 0x0000,
+ 0x0000, 0x0b99, 0x0b9a, 0x0000, 0x0b9c, 0x0000, 0x0b9e, 0x0b9f,
+ 0x0000, 0x0000, 0x0000, 0x0ba3, 0x0ba4, 0x0000, 0x0000, 0x0000,
+ 0x0ba8, 0x0ba9, 0x0baa, 0x0000, 0x0000, 0x0000, 0x0bae, 0x0baf,
+ 0x0bb0, 0x0bb1, 0x0bb2, 0x0bb3, 0x0bb4, 0x0bb5, 0x0bb6, 0x0bb7,
+ 0x0bb8, 0x0bb9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0bbe, 0x0bbf,
+ 0x0bc0, 0x0bc1, 0x0bc2, 0x0000, 0x0000, 0x0000, 0x0bc6, 0x0bc7, /* 0x0bc0 */
+ 0x0bc8, 0x0000, 0x0bca, 0x0bcb, 0x0bcc, 0x0bcd, 0x0000, 0x0000,
+ 0x0bd0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0bd7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0be6, 0x0be7,
+ 0x0be8, 0x0be9, 0x0bea, 0x0beb, 0x0bec, 0x0bed, 0x0bee, 0x0bef,
+ 0x0bf0, 0x0bf1, 0x0bf2, 0x0bf3, 0x0bf4, 0x0bf5, 0x0bf6, 0x0bf7,
+ 0x0bf8, 0x0bf9, 0x0bfa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0c01, 0x0c02, 0x0c03, 0x0000, 0x0c05, 0x0c06, 0x0c07, /* 0x0c00 */
+ 0x0c08, 0x0c09, 0x0c0a, 0x0c0b, 0x0c0c, 0x0000, 0x0c0e, 0x0c0f,
+ 0x0c10, 0x0000, 0x0c12, 0x0c13, 0x0c14, 0x0c15, 0x0c16, 0x0c17,
+ 0x0c18, 0x0c19, 0x0c1a, 0x0c1b, 0x0c1c, 0x0c1d, 0x0c1e, 0x0c1f,
+ 0x0c20, 0x0c21, 0x0c22, 0x0c23, 0x0c24, 0x0c25, 0x0c26, 0x0c27,
+ 0x0c28, 0x0000, 0x0c2a, 0x0c2b, 0x0c2c, 0x0c2d, 0x0c2e, 0x0c2f,
+ 0x0c30, 0x0c31, 0x0c32, 0x0c33, 0x0000, 0x0c35, 0x0c36, 0x0c37,
+ 0x0c38, 0x0c39, 0x0000, 0x0000, 0x0000, 0x0c3d, 0x0c3e, 0x0c3f,
+ 0x0c40, 0x0c41, 0x0c42, 0x0c43, 0x0c44, 0x0000, 0x0c46, 0x0c47, /* 0x0c40 */
+ 0x0c48, 0x0000, 0x0c4a, 0x0c4b, 0x0c4c, 0x0c4d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c55, 0x0c56, 0x0000,
+ 0x0c58, 0x0c59, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0c60, 0x0c61, 0x0c62, 0x0c63, 0x0000, 0x0000, 0x0c66, 0x0c67,
+ 0x0c68, 0x0c69, 0x0c6a, 0x0c6b, 0x0c6c, 0x0c6d, 0x0c6e, 0x0c6f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0c78, 0x0c79, 0x0c7a, 0x0c7b, 0x0c7c, 0x0c7d, 0x0c7e, 0x0c7f,
+ 0x0000, 0x0000, 0x0c82, 0x0c83, 0x0000, 0x0c85, 0x0c86, 0x0c87, /* 0x0c80 */
+ 0x0c88, 0x0c89, 0x0c8a, 0x0c8b, 0x0c8c, 0x0000, 0x0c8e, 0x0c8f,
+ 0x0c90, 0x0000, 0x0c92, 0x0c93, 0x0c94, 0x0c95, 0x0c96, 0x0c97,
+ 0x0c98, 0x0c99, 0x0c9a, 0x0c9b, 0x0c9c, 0x0c9d, 0x0c9e, 0x0c9f,
+ 0x0ca0, 0x0ca1, 0x0ca2, 0x0ca3, 0x0ca4, 0x0ca5, 0x0ca6, 0x0ca7,
+ 0x0ca8, 0x0000, 0x0caa, 0x0cab, 0x0cac, 0x0cad, 0x0cae, 0x0caf,
+ 0x0cb0, 0x0cb1, 0x0cb2, 0x0cb3, 0x0000, 0x0cb5, 0x0cb6, 0x0cb7,
+ 0x0cb8, 0x0cb9, 0x0000, 0x0000, 0x0cbc, 0x0cbd, 0x0cbe, 0x0cbf,
+ 0x0cc0, 0x0cc1, 0x0cc2, 0x0cc3, 0x0cc4, 0x0000, 0x0cc6, 0x0cc7, /* 0x0cc0 */
+ 0x0cc8, 0x0000, 0x0cca, 0x0ccb, 0x0ccc, 0x0ccd, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0cd5, 0x0cd6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0cde, 0x0000,
+ 0x0ce0, 0x0ce1, 0x0ce2, 0x0ce3, 0x0000, 0x0000, 0x0ce6, 0x0ce7,
+ 0x0ce8, 0x0ce9, 0x0cea, 0x0ceb, 0x0cec, 0x0ced, 0x0cee, 0x0cef,
+ 0x0000, 0x0cf1, 0x0cf2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0d02, 0x0d03, 0x0000, 0x0d05, 0x0d06, 0x0d07, /* 0x0d00 */
+ 0x0d08, 0x0d09, 0x0d0a, 0x0d0b, 0x0d0c, 0x0000, 0x0d0e, 0x0d0f,
+ 0x0d10, 0x0000, 0x0d12, 0x0d13, 0x0d14, 0x0d15, 0x0d16, 0x0d17,
+ 0x0d18, 0x0d19, 0x0d1a, 0x0d1b, 0x0d1c, 0x0d1d, 0x0d1e, 0x0d1f,
+ 0x0d20, 0x0d21, 0x0d22, 0x0d23, 0x0d24, 0x0d25, 0x0d26, 0x0d27,
+ 0x0d28, 0x0d29, 0x0d2a, 0x0d2b, 0x0d2c, 0x0d2d, 0x0d2e, 0x0d2f,
+ 0x0d30, 0x0d31, 0x0d32, 0x0d33, 0x0d34, 0x0d35, 0x0d36, 0x0d37,
+ 0x0d38, 0x0d39, 0x0d3a, 0x0000, 0x0000, 0x0d3d, 0x0d3e, 0x0d3f,
+ 0x0d40, 0x0d41, 0x0d42, 0x0d43, 0x0d44, 0x0000, 0x0d46, 0x0d47, /* 0x0d40 */
+ 0x0d48, 0x0000, 0x0d4a, 0x0d4b, 0x0d4c, 0x0d4d, 0x0d4e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0d57,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0d60, 0x0d61, 0x0d62, 0x0d63, 0x0000, 0x0000, 0x0d66, 0x0d67,
+ 0x0d68, 0x0d69, 0x0d6a, 0x0d6b, 0x0d6c, 0x0d6d, 0x0d6e, 0x0d6f,
+ 0x0d70, 0x0d71, 0x0d72, 0x0d73, 0x0d74, 0x0d75, 0x0000, 0x0000,
+ 0x0000, 0x0d79, 0x0d7a, 0x0d7b, 0x0d7c, 0x0d7d, 0x0d7e, 0x0d7f,
+ 0x0000, 0x0000, 0x0d82, 0x0d83, 0x0000, 0x0d85, 0x0d86, 0x0d87, /* 0x0d80 */
+ 0x0d88, 0x0d89, 0x0d8a, 0x0d8b, 0x0d8c, 0x0d8d, 0x0d8e, 0x0d8f,
+ 0x0d90, 0x0d91, 0x0d92, 0x0d93, 0x0d94, 0x0d95, 0x0d96, 0x0000,
+ 0x0000, 0x0000, 0x0d9a, 0x0d9b, 0x0d9c, 0x0d9d, 0x0d9e, 0x0d9f,
+ 0x0da0, 0x0da1, 0x0da2, 0x0da3, 0x0da4, 0x0da5, 0x0da6, 0x0da7,
+ 0x0da8, 0x0da9, 0x0daa, 0x0dab, 0x0dac, 0x0dad, 0x0dae, 0x0daf,
+ 0x0db0, 0x0db1, 0x0000, 0x0db3, 0x0db4, 0x0db5, 0x0db6, 0x0db7,
+ 0x0db8, 0x0db9, 0x0dba, 0x0dbb, 0x0000, 0x0dbd, 0x0000, 0x0000,
+ 0x0dc0, 0x0dc1, 0x0dc2, 0x0dc3, 0x0dc4, 0x0dc5, 0x0dc6, 0x0000, /* 0x0dc0 */
+ 0x0000, 0x0000, 0x0dca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0dcf,
+ 0x0dd0, 0x0dd1, 0x0dd2, 0x0dd3, 0x0dd4, 0x0000, 0x0dd6, 0x0000,
+ 0x0dd8, 0x0dd9, 0x0dda, 0x0ddb, 0x0ddc, 0x0ddd, 0x0dde, 0x0ddf,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0df2, 0x0df3, 0x0df4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, /* 0x0e00 */
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e3f,
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, /* 0x0e40 */
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+ 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0e81, 0x0e82, 0x0000, 0x0e84, 0x0000, 0x0000, 0x0e87, /* 0x0e80 */
+ 0x0e88, 0x0000, 0x0e8a, 0x0000, 0x0000, 0x0e8d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0e94, 0x0e95, 0x0e96, 0x0e97,
+ 0x0000, 0x0e99, 0x0e9a, 0x0e9b, 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f,
+ 0x0000, 0x0ea1, 0x0ea2, 0x0ea3, 0x0000, 0x0ea5, 0x0000, 0x0ea7,
+ 0x0000, 0x0000, 0x0eaa, 0x0eab, 0x0000, 0x0ead, 0x0eae, 0x0eaf,
+ 0x0eb0, 0x0eb1, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7,
+ 0x0eb8, 0x0eb9, 0x0000, 0x0ebb, 0x0ebc, 0x0ebd, 0x0000, 0x0000,
+ 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0000, 0x0ec6, 0x0000, /* 0x0ec0 */
+ 0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc, 0x0ecd, 0x0000, 0x0000,
+ 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
+ 0x0ed8, 0x0ed9, 0x0000, 0x0000, 0x0edc, 0x0edd, 0x0ede, 0x0edf,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0f00, 0x0f01, 0x0f02, 0x0f03, 0x0f04, 0x0f05, 0x0f06, 0x0f07, /* 0x0f00 */
+ 0x0f08, 0x0f09, 0x0f0a, 0x0f0b, 0x0f0c, 0x0f0d, 0x0f0e, 0x0f0f,
+ 0x0f10, 0x0f11, 0x0f12, 0x0f13, 0x0f14, 0x0f15, 0x0f16, 0x0f17,
+ 0x0f18, 0x0f19, 0x0f1a, 0x0f1b, 0x0f1c, 0x0f1d, 0x0f1e, 0x0f1f,
+ 0x0f20, 0x0f21, 0x0f22, 0x0f23, 0x0f24, 0x0f25, 0x0f26, 0x0f27,
+ 0x0f28, 0x0f29, 0x0f2a, 0x0f2b, 0x0f2c, 0x0f2d, 0x0f2e, 0x0f2f,
+ 0x0f30, 0x0f31, 0x0f32, 0x0f33, 0x0f34, 0x0f35, 0x0f36, 0x0f37,
+ 0x0f38, 0x0f39, 0x0f3a, 0x0f3b, 0x0f3c, 0x0f3d, 0x0f3e, 0x0f3f,
+ 0x0f40, 0x0f41, 0x0f42, 0x0f43, 0x0f44, 0x0f45, 0x0f46, 0x0f47, /* 0x0f40 */
+ 0x0000, 0x0f49, 0x0f4a, 0x0f4b, 0x0f4c, 0x0f4d, 0x0f4e, 0x0f4f,
+ 0x0f50, 0x0f51, 0x0f52, 0x0f53, 0x0f54, 0x0f55, 0x0f56, 0x0f57,
+ 0x0f58, 0x0f59, 0x0f5a, 0x0f5b, 0x0f5c, 0x0f5d, 0x0f5e, 0x0f5f,
+ 0x0f60, 0x0f61, 0x0f62, 0x0f63, 0x0f64, 0x0f65, 0x0f66, 0x0f67,
+ 0x0f68, 0x0f69, 0x0f6a, 0x0f6b, 0x0f6c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0f71, 0x0f72, 0x0f73, 0x0f74, 0x0f75, 0x0f76, 0x0f77,
+ 0x0f78, 0x0f79, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f7e, 0x0f7f,
+ 0x0f80, 0x0f81, 0x0f82, 0x0f83, 0x0f84, 0x0f85, 0x0f86, 0x0f87, /* 0x0f80 */
+ 0x0f88, 0x0f89, 0x0f8a, 0x0f8b, 0x0f8c, 0x0f8d, 0x0f8e, 0x0f8f,
+ 0x0f90, 0x0f91, 0x0f92, 0x0f93, 0x0f94, 0x0f95, 0x0f96, 0x0f97,
+ 0x0000, 0x0f99, 0x0f9a, 0x0f9b, 0x0f9c, 0x0f9d, 0x0f9e, 0x0f9f,
+ 0x0fa0, 0x0fa1, 0x0fa2, 0x0fa3, 0x0fa4, 0x0fa5, 0x0fa6, 0x0fa7,
+ 0x0fa8, 0x0fa9, 0x0faa, 0x0fab, 0x0fac, 0x0fad, 0x0fae, 0x0faf,
+ 0x0fb0, 0x0fb1, 0x0fb2, 0x0fb3, 0x0fb4, 0x0fb5, 0x0fb6, 0x0fb7,
+ 0x0fb8, 0x0fb9, 0x0fba, 0x0fbb, 0x0fbc, 0x0000, 0x0fbe, 0x0fbf,
+ 0x0fc0, 0x0fc1, 0x0fc2, 0x0fc3, 0x0fc4, 0x0fc5, 0x0fc6, 0x0fc7, /* 0x0fc0 */
+ 0x0fc8, 0x0fc9, 0x0fca, 0x0fcb, 0x0fcc, 0x0000, 0x0fce, 0x0fcf,
+ 0x0fd0, 0x0fd1, 0x0fd2, 0x0fd3, 0x0fd4, 0x0fd5, 0x0fd6, 0x0fd7,
+ 0x0fd8, 0x0fd9, 0x0fda, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1000, 0x1001, 0x1002, 0x1003, 0x1004, 0x1005, 0x1006, 0x1007, /* 0x1000 */
+ 0x1008, 0x1009, 0x100a, 0x100b, 0x100c, 0x100d, 0x100e, 0x100f,
+ 0x1010, 0x1011, 0x1012, 0x1013, 0x1014, 0x1015, 0x1016, 0x1017,
+ 0x1018, 0x1019, 0x101a, 0x101b, 0x101c, 0x101d, 0x101e, 0x101f,
+ 0x1020, 0x1021, 0x1022, 0x1023, 0x1024, 0x1025, 0x1026, 0x1027,
+ 0x1028, 0x1029, 0x102a, 0x102b, 0x102c, 0x102d, 0x102e, 0x102f,
+ 0x1030, 0x1031, 0x1032, 0x1033, 0x1034, 0x1035, 0x1036, 0x1037,
+ 0x1038, 0x1039, 0x103a, 0x103b, 0x103c, 0x103d, 0x103e, 0x103f,
+ 0x1040, 0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1047, /* 0x1040 */
+ 0x1048, 0x1049, 0x104a, 0x104b, 0x104c, 0x104d, 0x104e, 0x104f,
+ 0x1050, 0x1051, 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057,
+ 0x1058, 0x1059, 0x105a, 0x105b, 0x105c, 0x105d, 0x105e, 0x105f,
+ 0x1060, 0x1061, 0x1062, 0x1063, 0x1064, 0x1065, 0x1066, 0x1067,
+ 0x1068, 0x1069, 0x106a, 0x106b, 0x106c, 0x106d, 0x106e, 0x106f,
+ 0x1070, 0x1071, 0x1072, 0x1073, 0x1074, 0x1075, 0x1076, 0x1077,
+ 0x1078, 0x1079, 0x107a, 0x107b, 0x107c, 0x107d, 0x107e, 0x107f,
+ 0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086, 0x1087, /* 0x1080 */
+ 0x1088, 0x1089, 0x108a, 0x108b, 0x108c, 0x108d, 0x108e, 0x108f,
+ 0x1090, 0x1091, 0x1092, 0x1093, 0x1094, 0x1095, 0x1096, 0x1097,
+ 0x1098, 0x1099, 0x109a, 0x109b, 0x109c, 0x109d, 0x109e, 0x109f,
+ 0x2d00, 0x2d01, 0x2d02, 0x2d03, 0x2d04, 0x2d05, 0x2d06, 0x2d07,
+ 0x2d08, 0x2d09, 0x2d0a, 0x2d0b, 0x2d0c, 0x2d0d, 0x2d0e, 0x2d0f,
+ 0x2d10, 0x2d11, 0x2d12, 0x2d13, 0x2d14, 0x2d15, 0x2d16, 0x2d17,
+ 0x2d18, 0x2d19, 0x2d1a, 0x2d1b, 0x2d1c, 0x2d1d, 0x2d1e, 0x2d1f,
+ 0x2d20, 0x2d21, 0x2d22, 0x2d23, 0x2d24, 0x2d25, 0x0000, 0x2d27, /* 0x10c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d2d, 0x0000, 0x0000,
+ 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7,
+ 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df,
+ 0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7,
+ 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef,
+ 0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0x10f6, 0x10f7,
+ 0x10f8, 0x10f9, 0x10fa, 0x10fb, 0x10fc, 0x10fd, 0x10fe, 0x10ff,
+ 0x1100, 0x1101, 0x1102, 0x1103, 0x1104, 0x1105, 0x1106, 0x1107, /* 0x1100 */
+ 0x1108, 0x1109, 0x110a, 0x110b, 0x110c, 0x110d, 0x110e, 0x110f,
+ 0x1110, 0x1111, 0x1112, 0x1113, 0x1114, 0x1115, 0x1116, 0x1117,
+ 0x1118, 0x1119, 0x111a, 0x111b, 0x111c, 0x111d, 0x111e, 0x111f,
+ 0x1120, 0x1121, 0x1122, 0x1123, 0x1124, 0x1125, 0x1126, 0x1127,
+ 0x1128, 0x1129, 0x112a, 0x112b, 0x112c, 0x112d, 0x112e, 0x112f,
+ 0x1130, 0x1131, 0x1132, 0x1133, 0x1134, 0x1135, 0x1136, 0x1137,
+ 0x1138, 0x1139, 0x113a, 0x113b, 0x113c, 0x113d, 0x113e, 0x113f,
+ 0x1140, 0x1141, 0x1142, 0x1143, 0x1144, 0x1145, 0x1146, 0x1147, /* 0x1140 */
+ 0x1148, 0x1149, 0x114a, 0x114b, 0x114c, 0x114d, 0x114e, 0x114f,
+ 0x1150, 0x1151, 0x1152, 0x1153, 0x1154, 0x1155, 0x1156, 0x1157,
+ 0x1158, 0x1159, 0x115a, 0x115b, 0x115c, 0x115d, 0x115e, 0x115f,
+ 0x1160, 0x1161, 0x1162, 0x1163, 0x1164, 0x1165, 0x1166, 0x1167,
+ 0x1168, 0x1169, 0x116a, 0x116b, 0x116c, 0x116d, 0x116e, 0x116f,
+ 0x1170, 0x1171, 0x1172, 0x1173, 0x1174, 0x1175, 0x1176, 0x1177,
+ 0x1178, 0x1179, 0x117a, 0x117b, 0x117c, 0x117d, 0x117e, 0x117f,
+ 0x1180, 0x1181, 0x1182, 0x1183, 0x1184, 0x1185, 0x1186, 0x1187, /* 0x1180 */
+ 0x1188, 0x1189, 0x118a, 0x118b, 0x118c, 0x118d, 0x118e, 0x118f,
+ 0x1190, 0x1191, 0x1192, 0x1193, 0x1194, 0x1195, 0x1196, 0x1197,
+ 0x1198, 0x1199, 0x119a, 0x119b, 0x119c, 0x119d, 0x119e, 0x119f,
+ 0x11a0, 0x11a1, 0x11a2, 0x11a3, 0x11a4, 0x11a5, 0x11a6, 0x11a7,
+ 0x11a8, 0x11a9, 0x11aa, 0x11ab, 0x11ac, 0x11ad, 0x11ae, 0x11af,
+ 0x11b0, 0x11b1, 0x11b2, 0x11b3, 0x11b4, 0x11b5, 0x11b6, 0x11b7,
+ 0x11b8, 0x11b9, 0x11ba, 0x11bb, 0x11bc, 0x11bd, 0x11be, 0x11bf,
+ 0x11c0, 0x11c1, 0x11c2, 0x11c3, 0x11c4, 0x11c5, 0x11c6, 0x11c7, /* 0x11c0 */
+ 0x11c8, 0x11c9, 0x11ca, 0x11cb, 0x11cc, 0x11cd, 0x11ce, 0x11cf,
+ 0x11d0, 0x11d1, 0x11d2, 0x11d3, 0x11d4, 0x11d5, 0x11d6, 0x11d7,
+ 0x11d8, 0x11d9, 0x11da, 0x11db, 0x11dc, 0x11dd, 0x11de, 0x11df,
+ 0x11e0, 0x11e1, 0x11e2, 0x11e3, 0x11e4, 0x11e5, 0x11e6, 0x11e7,
+ 0x11e8, 0x11e9, 0x11ea, 0x11eb, 0x11ec, 0x11ed, 0x11ee, 0x11ef,
+ 0x11f0, 0x11f1, 0x11f2, 0x11f3, 0x11f4, 0x11f5, 0x11f6, 0x11f7,
+ 0x11f8, 0x11f9, 0x11fa, 0x11fb, 0x11fc, 0x11fd, 0x11fe, 0x11ff,
+ 0x1200, 0x1201, 0x1202, 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, /* 0x1200 */
+ 0x1208, 0x1209, 0x120a, 0x120b, 0x120c, 0x120d, 0x120e, 0x120f,
+ 0x1210, 0x1211, 0x1212, 0x1213, 0x1214, 0x1215, 0x1216, 0x1217,
+ 0x1218, 0x1219, 0x121a, 0x121b, 0x121c, 0x121d, 0x121e, 0x121f,
+ 0x1220, 0x1221, 0x1222, 0x1223, 0x1224, 0x1225, 0x1226, 0x1227,
+ 0x1228, 0x1229, 0x122a, 0x122b, 0x122c, 0x122d, 0x122e, 0x122f,
+ 0x1230, 0x1231, 0x1232, 0x1233, 0x1234, 0x1235, 0x1236, 0x1237,
+ 0x1238, 0x1239, 0x123a, 0x123b, 0x123c, 0x123d, 0x123e, 0x123f,
+ 0x1240, 0x1241, 0x1242, 0x1243, 0x1244, 0x1245, 0x1246, 0x1247, /* 0x1240 */
+ 0x1248, 0x0000, 0x124a, 0x124b, 0x124c, 0x124d, 0x0000, 0x0000,
+ 0x1250, 0x1251, 0x1252, 0x1253, 0x1254, 0x1255, 0x1256, 0x0000,
+ 0x1258, 0x0000, 0x125a, 0x125b, 0x125c, 0x125d, 0x0000, 0x0000,
+ 0x1260, 0x1261, 0x1262, 0x1263, 0x1264, 0x1265, 0x1266, 0x1267,
+ 0x1268, 0x1269, 0x126a, 0x126b, 0x126c, 0x126d, 0x126e, 0x126f,
+ 0x1270, 0x1271, 0x1272, 0x1273, 0x1274, 0x1275, 0x1276, 0x1277,
+ 0x1278, 0x1279, 0x127a, 0x127b, 0x127c, 0x127d, 0x127e, 0x127f,
+ 0x1280, 0x1281, 0x1282, 0x1283, 0x1284, 0x1285, 0x1286, 0x1287, /* 0x1280 */
+ 0x1288, 0x0000, 0x128a, 0x128b, 0x128c, 0x128d, 0x0000, 0x0000,
+ 0x1290, 0x1291, 0x1292, 0x1293, 0x1294, 0x1295, 0x1296, 0x1297,
+ 0x1298, 0x1299, 0x129a, 0x129b, 0x129c, 0x129d, 0x129e, 0x129f,
+ 0x12a0, 0x12a1, 0x12a2, 0x12a3, 0x12a4, 0x12a5, 0x12a6, 0x12a7,
+ 0x12a8, 0x12a9, 0x12aa, 0x12ab, 0x12ac, 0x12ad, 0x12ae, 0x12af,
+ 0x12b0, 0x0000, 0x12b2, 0x12b3, 0x12b4, 0x12b5, 0x0000, 0x0000,
+ 0x12b8, 0x12b9, 0x12ba, 0x12bb, 0x12bc, 0x12bd, 0x12be, 0x0000,
+ 0x12c0, 0x0000, 0x12c2, 0x12c3, 0x12c4, 0x12c5, 0x0000, 0x0000, /* 0x12c0 */
+ 0x12c8, 0x12c9, 0x12ca, 0x12cb, 0x12cc, 0x12cd, 0x12ce, 0x12cf,
+ 0x12d0, 0x12d1, 0x12d2, 0x12d3, 0x12d4, 0x12d5, 0x12d6, 0x0000,
+ 0x12d8, 0x12d9, 0x12da, 0x12db, 0x12dc, 0x12dd, 0x12de, 0x12df,
+ 0x12e0, 0x12e1, 0x12e2, 0x12e3, 0x12e4, 0x12e5, 0x12e6, 0x12e7,
+ 0x12e8, 0x12e9, 0x12ea, 0x12eb, 0x12ec, 0x12ed, 0x12ee, 0x12ef,
+ 0x12f0, 0x12f1, 0x12f2, 0x12f3, 0x12f4, 0x12f5, 0x12f6, 0x12f7,
+ 0x12f8, 0x12f9, 0x12fa, 0x12fb, 0x12fc, 0x12fd, 0x12fe, 0x12ff,
+ 0x1300, 0x1301, 0x1302, 0x1303, 0x1304, 0x1305, 0x1306, 0x1307, /* 0x1300 */
+ 0x1308, 0x1309, 0x130a, 0x130b, 0x130c, 0x130d, 0x130e, 0x130f,
+ 0x1310, 0x0000, 0x1312, 0x1313, 0x1314, 0x1315, 0x0000, 0x0000,
+ 0x1318, 0x1319, 0x131a, 0x131b, 0x131c, 0x131d, 0x131e, 0x131f,
+ 0x1320, 0x1321, 0x1322, 0x1323, 0x1324, 0x1325, 0x1326, 0x1327,
+ 0x1328, 0x1329, 0x132a, 0x132b, 0x132c, 0x132d, 0x132e, 0x132f,
+ 0x1330, 0x1331, 0x1332, 0x1333, 0x1334, 0x1335, 0x1336, 0x1337,
+ 0x1338, 0x1339, 0x133a, 0x133b, 0x133c, 0x133d, 0x133e, 0x133f,
+ 0x1340, 0x1341, 0x1342, 0x1343, 0x1344, 0x1345, 0x1346, 0x1347, /* 0x1340 */
+ 0x1348, 0x1349, 0x134a, 0x134b, 0x134c, 0x134d, 0x134e, 0x134f,
+ 0x1350, 0x1351, 0x1352, 0x1353, 0x1354, 0x1355, 0x1356, 0x1357,
+ 0x1358, 0x1359, 0x135a, 0x0000, 0x0000, 0x135d, 0x135e, 0x135f,
+ 0x1360, 0x1361, 0x1362, 0x1363, 0x1364, 0x1365, 0x1366, 0x1367,
+ 0x1368, 0x1369, 0x136a, 0x136b, 0x136c, 0x136d, 0x136e, 0x136f,
+ 0x1370, 0x1371, 0x1372, 0x1373, 0x1374, 0x1375, 0x1376, 0x1377,
+ 0x1378, 0x1379, 0x137a, 0x137b, 0x137c, 0x0000, 0x0000, 0x0000,
+ 0x1380, 0x1381, 0x1382, 0x1383, 0x1384, 0x1385, 0x1386, 0x1387, /* 0x1380 */
+ 0x1388, 0x1389, 0x138a, 0x138b, 0x138c, 0x138d, 0x138e, 0x138f,
+ 0x1390, 0x1391, 0x1392, 0x1393, 0x1394, 0x1395, 0x1396, 0x1397,
+ 0x1398, 0x1399, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x13a0, 0x13a1, 0x13a2, 0x13a3, 0x13a4, 0x13a5, 0x13a6, 0x13a7,
+ 0x13a8, 0x13a9, 0x13aa, 0x13ab, 0x13ac, 0x13ad, 0x13ae, 0x13af,
+ 0x13b0, 0x13b1, 0x13b2, 0x13b3, 0x13b4, 0x13b5, 0x13b6, 0x13b7,
+ 0x13b8, 0x13b9, 0x13ba, 0x13bb, 0x13bc, 0x13bd, 0x13be, 0x13bf,
+ 0x13c0, 0x13c1, 0x13c2, 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, /* 0x13c0 */
+ 0x13c8, 0x13c9, 0x13ca, 0x13cb, 0x13cc, 0x13cd, 0x13ce, 0x13cf,
+ 0x13d0, 0x13d1, 0x13d2, 0x13d3, 0x13d4, 0x13d5, 0x13d6, 0x13d7,
+ 0x13d8, 0x13d9, 0x13da, 0x13db, 0x13dc, 0x13dd, 0x13de, 0x13df,
+ 0x13e0, 0x13e1, 0x13e2, 0x13e3, 0x13e4, 0x13e5, 0x13e6, 0x13e7,
+ 0x13e8, 0x13e9, 0x13ea, 0x13eb, 0x13ec, 0x13ed, 0x13ee, 0x13ef,
+ 0x13f0, 0x13f1, 0x13f2, 0x13f3, 0x13f4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1400, 0x1401, 0x1402, 0x1403, 0x1404, 0x1405, 0x1406, 0x1407, /* 0x1400 */
+ 0x1408, 0x1409, 0x140a, 0x140b, 0x140c, 0x140d, 0x140e, 0x140f,
+ 0x1410, 0x1411, 0x1412, 0x1413, 0x1414, 0x1415, 0x1416, 0x1417,
+ 0x1418, 0x1419, 0x141a, 0x141b, 0x141c, 0x141d, 0x141e, 0x141f,
+ 0x1420, 0x1421, 0x1422, 0x1423, 0x1424, 0x1425, 0x1426, 0x1427,
+ 0x1428, 0x1429, 0x142a, 0x142b, 0x142c, 0x142d, 0x142e, 0x142f,
+ 0x1430, 0x1431, 0x1432, 0x1433, 0x1434, 0x1435, 0x1436, 0x1437,
+ 0x1438, 0x1439, 0x143a, 0x143b, 0x143c, 0x143d, 0x143e, 0x143f,
+ 0x1440, 0x1441, 0x1442, 0x1443, 0x1444, 0x1445, 0x1446, 0x1447, /* 0x1440 */
+ 0x1448, 0x1449, 0x144a, 0x144b, 0x144c, 0x144d, 0x144e, 0x144f,
+ 0x1450, 0x1451, 0x1452, 0x1453, 0x1454, 0x1455, 0x1456, 0x1457,
+ 0x1458, 0x1459, 0x145a, 0x145b, 0x145c, 0x145d, 0x145e, 0x145f,
+ 0x1460, 0x1461, 0x1462, 0x1463, 0x1464, 0x1465, 0x1466, 0x1467,
+ 0x1468, 0x1469, 0x146a, 0x146b, 0x146c, 0x146d, 0x146e, 0x146f,
+ 0x1470, 0x1471, 0x1472, 0x1473, 0x1474, 0x1475, 0x1476, 0x1477,
+ 0x1478, 0x1479, 0x147a, 0x147b, 0x147c, 0x147d, 0x147e, 0x147f,
+ 0x1480, 0x1481, 0x1482, 0x1483, 0x1484, 0x1485, 0x1486, 0x1487, /* 0x1480 */
+ 0x1488, 0x1489, 0x148a, 0x148b, 0x148c, 0x148d, 0x148e, 0x148f,
+ 0x1490, 0x1491, 0x1492, 0x1493, 0x1494, 0x1495, 0x1496, 0x1497,
+ 0x1498, 0x1499, 0x149a, 0x149b, 0x149c, 0x149d, 0x149e, 0x149f,
+ 0x14a0, 0x14a1, 0x14a2, 0x14a3, 0x14a4, 0x14a5, 0x14a6, 0x14a7,
+ 0x14a8, 0x14a9, 0x14aa, 0x14ab, 0x14ac, 0x14ad, 0x14ae, 0x14af,
+ 0x14b0, 0x14b1, 0x14b2, 0x14b3, 0x14b4, 0x14b5, 0x14b6, 0x14b7,
+ 0x14b8, 0x14b9, 0x14ba, 0x14bb, 0x14bc, 0x14bd, 0x14be, 0x14bf,
+ 0x14c0, 0x14c1, 0x14c2, 0x14c3, 0x14c4, 0x14c5, 0x14c6, 0x14c7, /* 0x14c0 */
+ 0x14c8, 0x14c9, 0x14ca, 0x14cb, 0x14cc, 0x14cd, 0x14ce, 0x14cf,
+ 0x14d0, 0x14d1, 0x14d2, 0x14d3, 0x14d4, 0x14d5, 0x14d6, 0x14d7,
+ 0x14d8, 0x14d9, 0x14da, 0x14db, 0x14dc, 0x14dd, 0x14de, 0x14df,
+ 0x14e0, 0x14e1, 0x14e2, 0x14e3, 0x14e4, 0x14e5, 0x14e6, 0x14e7,
+ 0x14e8, 0x14e9, 0x14ea, 0x14eb, 0x14ec, 0x14ed, 0x14ee, 0x14ef,
+ 0x14f0, 0x14f1, 0x14f2, 0x14f3, 0x14f4, 0x14f5, 0x14f6, 0x14f7,
+ 0x14f8, 0x14f9, 0x14fa, 0x14fb, 0x14fc, 0x14fd, 0x14fe, 0x14ff,
+ 0x1500, 0x1501, 0x1502, 0x1503, 0x1504, 0x1505, 0x1506, 0x1507, /* 0x1500 */
+ 0x1508, 0x1509, 0x150a, 0x150b, 0x150c, 0x150d, 0x150e, 0x150f,
+ 0x1510, 0x1511, 0x1512, 0x1513, 0x1514, 0x1515, 0x1516, 0x1517,
+ 0x1518, 0x1519, 0x151a, 0x151b, 0x151c, 0x151d, 0x151e, 0x151f,
+ 0x1520, 0x1521, 0x1522, 0x1523, 0x1524, 0x1525, 0x1526, 0x1527,
+ 0x1528, 0x1529, 0x152a, 0x152b, 0x152c, 0x152d, 0x152e, 0x152f,
+ 0x1530, 0x1531, 0x1532, 0x1533, 0x1534, 0x1535, 0x1536, 0x1537,
+ 0x1538, 0x1539, 0x153a, 0x153b, 0x153c, 0x153d, 0x153e, 0x153f,
+ 0x1540, 0x1541, 0x1542, 0x1543, 0x1544, 0x1545, 0x1546, 0x1547, /* 0x1540 */
+ 0x1548, 0x1549, 0x154a, 0x154b, 0x154c, 0x154d, 0x154e, 0x154f,
+ 0x1550, 0x1551, 0x1552, 0x1553, 0x1554, 0x1555, 0x1556, 0x1557,
+ 0x1558, 0x1559, 0x155a, 0x155b, 0x155c, 0x155d, 0x155e, 0x155f,
+ 0x1560, 0x1561, 0x1562, 0x1563, 0x1564, 0x1565, 0x1566, 0x1567,
+ 0x1568, 0x1569, 0x156a, 0x156b, 0x156c, 0x156d, 0x156e, 0x156f,
+ 0x1570, 0x1571, 0x1572, 0x1573, 0x1574, 0x1575, 0x1576, 0x1577,
+ 0x1578, 0x1579, 0x157a, 0x157b, 0x157c, 0x157d, 0x157e, 0x157f,
+ 0x1580, 0x1581, 0x1582, 0x1583, 0x1584, 0x1585, 0x1586, 0x1587, /* 0x1580 */
+ 0x1588, 0x1589, 0x158a, 0x158b, 0x158c, 0x158d, 0x158e, 0x158f,
+ 0x1590, 0x1591, 0x1592, 0x1593, 0x1594, 0x1595, 0x1596, 0x1597,
+ 0x1598, 0x1599, 0x159a, 0x159b, 0x159c, 0x159d, 0x159e, 0x159f,
+ 0x15a0, 0x15a1, 0x15a2, 0x15a3, 0x15a4, 0x15a5, 0x15a6, 0x15a7,
+ 0x15a8, 0x15a9, 0x15aa, 0x15ab, 0x15ac, 0x15ad, 0x15ae, 0x15af,
+ 0x15b0, 0x15b1, 0x15b2, 0x15b3, 0x15b4, 0x15b5, 0x15b6, 0x15b7,
+ 0x15b8, 0x15b9, 0x15ba, 0x15bb, 0x15bc, 0x15bd, 0x15be, 0x15bf,
+ 0x15c0, 0x15c1, 0x15c2, 0x15c3, 0x15c4, 0x15c5, 0x15c6, 0x15c7, /* 0x15c0 */
+ 0x15c8, 0x15c9, 0x15ca, 0x15cb, 0x15cc, 0x15cd, 0x15ce, 0x15cf,
+ 0x15d0, 0x15d1, 0x15d2, 0x15d3, 0x15d4, 0x15d5, 0x15d6, 0x15d7,
+ 0x15d8, 0x15d9, 0x15da, 0x15db, 0x15dc, 0x15dd, 0x15de, 0x15df,
+ 0x15e0, 0x15e1, 0x15e2, 0x15e3, 0x15e4, 0x15e5, 0x15e6, 0x15e7,
+ 0x15e8, 0x15e9, 0x15ea, 0x15eb, 0x15ec, 0x15ed, 0x15ee, 0x15ef,
+ 0x15f0, 0x15f1, 0x15f2, 0x15f3, 0x15f4, 0x15f5, 0x15f6, 0x15f7,
+ 0x15f8, 0x15f9, 0x15fa, 0x15fb, 0x15fc, 0x15fd, 0x15fe, 0x15ff,
+ 0x1600, 0x1601, 0x1602, 0x1603, 0x1604, 0x1605, 0x1606, 0x1607, /* 0x1600 */
+ 0x1608, 0x1609, 0x160a, 0x160b, 0x160c, 0x160d, 0x160e, 0x160f,
+ 0x1610, 0x1611, 0x1612, 0x1613, 0x1614, 0x1615, 0x1616, 0x1617,
+ 0x1618, 0x1619, 0x161a, 0x161b, 0x161c, 0x161d, 0x161e, 0x161f,
+ 0x1620, 0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627,
+ 0x1628, 0x1629, 0x162a, 0x162b, 0x162c, 0x162d, 0x162e, 0x162f,
+ 0x1630, 0x1631, 0x1632, 0x1633, 0x1634, 0x1635, 0x1636, 0x1637,
+ 0x1638, 0x1639, 0x163a, 0x163b, 0x163c, 0x163d, 0x163e, 0x163f,
+ 0x1640, 0x1641, 0x1642, 0x1643, 0x1644, 0x1645, 0x1646, 0x1647, /* 0x1640 */
+ 0x1648, 0x1649, 0x164a, 0x164b, 0x164c, 0x164d, 0x164e, 0x164f,
+ 0x1650, 0x1651, 0x1652, 0x1653, 0x1654, 0x1655, 0x1656, 0x1657,
+ 0x1658, 0x1659, 0x165a, 0x165b, 0x165c, 0x165d, 0x165e, 0x165f,
+ 0x1660, 0x1661, 0x1662, 0x1663, 0x1664, 0x1665, 0x1666, 0x1667,
+ 0x1668, 0x1669, 0x166a, 0x166b, 0x166c, 0x166d, 0x166e, 0x166f,
+ 0x1670, 0x1671, 0x1672, 0x1673, 0x1674, 0x1675, 0x1676, 0x1677,
+ 0x1678, 0x1679, 0x167a, 0x167b, 0x167c, 0x167d, 0x167e, 0x167f,
+ 0x1680, 0x1681, 0x1682, 0x1683, 0x1684, 0x1685, 0x1686, 0x1687, /* 0x1680 */
+ 0x1688, 0x1689, 0x168a, 0x168b, 0x168c, 0x168d, 0x168e, 0x168f,
+ 0x1690, 0x1691, 0x1692, 0x1693, 0x1694, 0x1695, 0x1696, 0x1697,
+ 0x1698, 0x1699, 0x169a, 0x169b, 0x169c, 0x0000, 0x0000, 0x0000,
+ 0x16a0, 0x16a1, 0x16a2, 0x16a3, 0x16a4, 0x16a5, 0x16a6, 0x16a7,
+ 0x16a8, 0x16a9, 0x16aa, 0x16ab, 0x16ac, 0x16ad, 0x16ae, 0x16af,
+ 0x16b0, 0x16b1, 0x16b2, 0x16b3, 0x16b4, 0x16b5, 0x16b6, 0x16b7,
+ 0x16b8, 0x16b9, 0x16ba, 0x16bb, 0x16bc, 0x16bd, 0x16be, 0x16bf,
+ 0x16c0, 0x16c1, 0x16c2, 0x16c3, 0x16c4, 0x16c5, 0x16c6, 0x16c7, /* 0x16c0 */
+ 0x16c8, 0x16c9, 0x16ca, 0x16cb, 0x16cc, 0x16cd, 0x16ce, 0x16cf,
+ 0x16d0, 0x16d1, 0x16d2, 0x16d3, 0x16d4, 0x16d5, 0x16d6, 0x16d7,
+ 0x16d8, 0x16d9, 0x16da, 0x16db, 0x16dc, 0x16dd, 0x16de, 0x16df,
+ 0x16e0, 0x16e1, 0x16e2, 0x16e3, 0x16e4, 0x16e5, 0x16e6, 0x16e7,
+ 0x16e8, 0x16e9, 0x16ea, 0x16eb, 0x16ec, 0x16ed, 0x16ee, 0x16ef,
+ 0x16f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1700, 0x1701, 0x1702, 0x1703, 0x1704, 0x1705, 0x1706, 0x1707, /* 0x1700 */
+ 0x1708, 0x1709, 0x170a, 0x170b, 0x170c, 0x0000, 0x170e, 0x170f,
+ 0x1710, 0x1711, 0x1712, 0x1713, 0x1714, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1720, 0x1721, 0x1722, 0x1723, 0x1724, 0x1725, 0x1726, 0x1727,
+ 0x1728, 0x1729, 0x172a, 0x172b, 0x172c, 0x172d, 0x172e, 0x172f,
+ 0x1730, 0x1731, 0x1732, 0x1733, 0x1734, 0x1735, 0x1736, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1740, 0x1741, 0x1742, 0x1743, 0x1744, 0x1745, 0x1746, 0x1747, /* 0x1740 */
+ 0x1748, 0x1749, 0x174a, 0x174b, 0x174c, 0x174d, 0x174e, 0x174f,
+ 0x1750, 0x1751, 0x1752, 0x1753, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1760, 0x1761, 0x1762, 0x1763, 0x1764, 0x1765, 0x1766, 0x1767,
+ 0x1768, 0x1769, 0x176a, 0x176b, 0x176c, 0x0000, 0x176e, 0x176f,
+ 0x1770, 0x0000, 0x1772, 0x1773, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1780, 0x1781, 0x1782, 0x1783, 0x1784, 0x1785, 0x1786, 0x1787, /* 0x1780 */
+ 0x1788, 0x1789, 0x178a, 0x178b, 0x178c, 0x178d, 0x178e, 0x178f,
+ 0x1790, 0x1791, 0x1792, 0x1793, 0x1794, 0x1795, 0x1796, 0x1797,
+ 0x1798, 0x1799, 0x179a, 0x179b, 0x179c, 0x179d, 0x179e, 0x179f,
+ 0x17a0, 0x17a1, 0x17a2, 0x17a3, 0x17a4, 0x17a5, 0x17a6, 0x17a7,
+ 0x17a8, 0x17a9, 0x17aa, 0x17ab, 0x17ac, 0x17ad, 0x17ae, 0x17af,
+ 0x17b0, 0x17b1, 0x17b2, 0x17b3, 0x17b4, 0x17b5, 0x17b6, 0x17b7,
+ 0x17b8, 0x17b9, 0x17ba, 0x17bb, 0x17bc, 0x17bd, 0x17be, 0x17bf,
+ 0x17c0, 0x17c1, 0x17c2, 0x17c3, 0x17c4, 0x17c5, 0x17c6, 0x17c7, /* 0x17c0 */
+ 0x17c8, 0x17c9, 0x17ca, 0x17cb, 0x17cc, 0x17cd, 0x17ce, 0x17cf,
+ 0x17d0, 0x17d1, 0x17d2, 0x17d3, 0x17d4, 0x17d5, 0x17d6, 0x17d7,
+ 0x17d8, 0x17d9, 0x17da, 0x17db, 0x17dc, 0x17dd, 0x0000, 0x0000,
+ 0x17e0, 0x17e1, 0x17e2, 0x17e3, 0x17e4, 0x17e5, 0x17e6, 0x17e7,
+ 0x17e8, 0x17e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x17f0, 0x17f1, 0x17f2, 0x17f3, 0x17f4, 0x17f5, 0x17f6, 0x17f7,
+ 0x17f8, 0x17f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1800, 0x1801, 0x1802, 0x1803, 0x1804, 0x1805, 0x1806, 0x1807, /* 0x1800 */
+ 0x1808, 0x1809, 0x180a, 0x180b, 0x180c, 0x180d, 0x180e, 0x0000,
+ 0x1810, 0x1811, 0x1812, 0x1813, 0x1814, 0x1815, 0x1816, 0x1817,
+ 0x1818, 0x1819, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1820, 0x1821, 0x1822, 0x1823, 0x1824, 0x1825, 0x1826, 0x1827,
+ 0x1828, 0x1829, 0x182a, 0x182b, 0x182c, 0x182d, 0x182e, 0x182f,
+ 0x1830, 0x1831, 0x1832, 0x1833, 0x1834, 0x1835, 0x1836, 0x1837,
+ 0x1838, 0x1839, 0x183a, 0x183b, 0x183c, 0x183d, 0x183e, 0x183f,
+ 0x1840, 0x1841, 0x1842, 0x1843, 0x1844, 0x1845, 0x1846, 0x1847, /* 0x1840 */
+ 0x1848, 0x1849, 0x184a, 0x184b, 0x184c, 0x184d, 0x184e, 0x184f,
+ 0x1850, 0x1851, 0x1852, 0x1853, 0x1854, 0x1855, 0x1856, 0x1857,
+ 0x1858, 0x1859, 0x185a, 0x185b, 0x185c, 0x185d, 0x185e, 0x185f,
+ 0x1860, 0x1861, 0x1862, 0x1863, 0x1864, 0x1865, 0x1866, 0x1867,
+ 0x1868, 0x1869, 0x186a, 0x186b, 0x186c, 0x186d, 0x186e, 0x186f,
+ 0x1870, 0x1871, 0x1872, 0x1873, 0x1874, 0x1875, 0x1876, 0x1877,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1880, 0x1881, 0x1882, 0x1883, 0x1884, 0x1885, 0x1886, 0x1887, /* 0x1880 */
+ 0x1888, 0x1889, 0x188a, 0x188b, 0x188c, 0x188d, 0x188e, 0x188f,
+ 0x1890, 0x1891, 0x1892, 0x1893, 0x1894, 0x1895, 0x1896, 0x1897,
+ 0x1898, 0x1899, 0x189a, 0x189b, 0x189c, 0x189d, 0x189e, 0x189f,
+ 0x18a0, 0x18a1, 0x18a2, 0x18a3, 0x18a4, 0x18a5, 0x18a6, 0x18a7,
+ 0x18a8, 0x18a9, 0x18aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x18b0, 0x18b1, 0x18b2, 0x18b3, 0x18b4, 0x18b5, 0x18b6, 0x18b7,
+ 0x18b8, 0x18b9, 0x18ba, 0x18bb, 0x18bc, 0x18bd, 0x18be, 0x18bf,
+ 0x18c0, 0x18c1, 0x18c2, 0x18c3, 0x18c4, 0x18c5, 0x18c6, 0x18c7, /* 0x18c0 */
+ 0x18c8, 0x18c9, 0x18ca, 0x18cb, 0x18cc, 0x18cd, 0x18ce, 0x18cf,
+ 0x18d0, 0x18d1, 0x18d2, 0x18d3, 0x18d4, 0x18d5, 0x18d6, 0x18d7,
+ 0x18d8, 0x18d9, 0x18da, 0x18db, 0x18dc, 0x18dd, 0x18de, 0x18df,
+ 0x18e0, 0x18e1, 0x18e2, 0x18e3, 0x18e4, 0x18e5, 0x18e6, 0x18e7,
+ 0x18e8, 0x18e9, 0x18ea, 0x18eb, 0x18ec, 0x18ed, 0x18ee, 0x18ef,
+ 0x18f0, 0x18f1, 0x18f2, 0x18f3, 0x18f4, 0x18f5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1900, 0x1901, 0x1902, 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, /* 0x1900 */
+ 0x1908, 0x1909, 0x190a, 0x190b, 0x190c, 0x190d, 0x190e, 0x190f,
+ 0x1910, 0x1911, 0x1912, 0x1913, 0x1914, 0x1915, 0x1916, 0x1917,
+ 0x1918, 0x1919, 0x191a, 0x191b, 0x191c, 0x0000, 0x0000, 0x0000,
+ 0x1920, 0x1921, 0x1922, 0x1923, 0x1924, 0x1925, 0x1926, 0x1927,
+ 0x1928, 0x1929, 0x192a, 0x192b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1930, 0x1931, 0x1932, 0x1933, 0x1934, 0x1935, 0x1936, 0x1937,
+ 0x1938, 0x1939, 0x193a, 0x193b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1940, 0x0000, 0x0000, 0x0000, 0x1944, 0x1945, 0x1946, 0x1947, /* 0x1940 */
+ 0x1948, 0x1949, 0x194a, 0x194b, 0x194c, 0x194d, 0x194e, 0x194f,
+ 0x1950, 0x1951, 0x1952, 0x1953, 0x1954, 0x1955, 0x1956, 0x1957,
+ 0x1958, 0x1959, 0x195a, 0x195b, 0x195c, 0x195d, 0x195e, 0x195f,
+ 0x1960, 0x1961, 0x1962, 0x1963, 0x1964, 0x1965, 0x1966, 0x1967,
+ 0x1968, 0x1969, 0x196a, 0x196b, 0x196c, 0x196d, 0x0000, 0x0000,
+ 0x1970, 0x1971, 0x1972, 0x1973, 0x1974, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1980, 0x1981, 0x1982, 0x1983, 0x1984, 0x1985, 0x1986, 0x1987, /* 0x1980 */
+ 0x1988, 0x1989, 0x198a, 0x198b, 0x198c, 0x198d, 0x198e, 0x198f,
+ 0x1990, 0x1991, 0x1992, 0x1993, 0x1994, 0x1995, 0x1996, 0x1997,
+ 0x1998, 0x1999, 0x199a, 0x199b, 0x199c, 0x199d, 0x199e, 0x199f,
+ 0x19a0, 0x19a1, 0x19a2, 0x19a3, 0x19a4, 0x19a5, 0x19a6, 0x19a7,
+ 0x19a8, 0x19a9, 0x19aa, 0x19ab, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x19b0, 0x19b1, 0x19b2, 0x19b3, 0x19b4, 0x19b5, 0x19b6, 0x19b7,
+ 0x19b8, 0x19b9, 0x19ba, 0x19bb, 0x19bc, 0x19bd, 0x19be, 0x19bf,
+ 0x19c0, 0x19c1, 0x19c2, 0x19c3, 0x19c4, 0x19c5, 0x19c6, 0x19c7, /* 0x19c0 */
+ 0x19c8, 0x19c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x19d0, 0x19d1, 0x19d2, 0x19d3, 0x19d4, 0x19d5, 0x19d6, 0x19d7,
+ 0x19d8, 0x19d9, 0x19da, 0x0000, 0x0000, 0x0000, 0x19de, 0x19df,
+ 0x19e0, 0x19e1, 0x19e2, 0x19e3, 0x19e4, 0x19e5, 0x19e6, 0x19e7,
+ 0x19e8, 0x19e9, 0x19ea, 0x19eb, 0x19ec, 0x19ed, 0x19ee, 0x19ef,
+ 0x19f0, 0x19f1, 0x19f2, 0x19f3, 0x19f4, 0x19f5, 0x19f6, 0x19f7,
+ 0x19f8, 0x19f9, 0x19fa, 0x19fb, 0x19fc, 0x19fd, 0x19fe, 0x19ff,
+ 0x1a00, 0x1a01, 0x1a02, 0x1a03, 0x1a04, 0x1a05, 0x1a06, 0x1a07, /* 0x1a00 */
+ 0x1a08, 0x1a09, 0x1a0a, 0x1a0b, 0x1a0c, 0x1a0d, 0x1a0e, 0x1a0f,
+ 0x1a10, 0x1a11, 0x1a12, 0x1a13, 0x1a14, 0x1a15, 0x1a16, 0x1a17,
+ 0x1a18, 0x1a19, 0x1a1a, 0x1a1b, 0x0000, 0x0000, 0x1a1e, 0x1a1f,
+ 0x1a20, 0x1a21, 0x1a22, 0x1a23, 0x1a24, 0x1a25, 0x1a26, 0x1a27,
+ 0x1a28, 0x1a29, 0x1a2a, 0x1a2b, 0x1a2c, 0x1a2d, 0x1a2e, 0x1a2f,
+ 0x1a30, 0x1a31, 0x1a32, 0x1a33, 0x1a34, 0x1a35, 0x1a36, 0x1a37,
+ 0x1a38, 0x1a39, 0x1a3a, 0x1a3b, 0x1a3c, 0x1a3d, 0x1a3e, 0x1a3f,
+ 0x1a40, 0x1a41, 0x1a42, 0x1a43, 0x1a44, 0x1a45, 0x1a46, 0x1a47, /* 0x1a40 */
+ 0x1a48, 0x1a49, 0x1a4a, 0x1a4b, 0x1a4c, 0x1a4d, 0x1a4e, 0x1a4f,
+ 0x1a50, 0x1a51, 0x1a52, 0x1a53, 0x1a54, 0x1a55, 0x1a56, 0x1a57,
+ 0x1a58, 0x1a59, 0x1a5a, 0x1a5b, 0x1a5c, 0x1a5d, 0x1a5e, 0x0000,
+ 0x1a60, 0x1a61, 0x1a62, 0x1a63, 0x1a64, 0x1a65, 0x1a66, 0x1a67,
+ 0x1a68, 0x1a69, 0x1a6a, 0x1a6b, 0x1a6c, 0x1a6d, 0x1a6e, 0x1a6f,
+ 0x1a70, 0x1a71, 0x1a72, 0x1a73, 0x1a74, 0x1a75, 0x1a76, 0x1a77,
+ 0x1a78, 0x1a79, 0x1a7a, 0x1a7b, 0x1a7c, 0x0000, 0x0000, 0x1a7f,
+ 0x1a80, 0x1a81, 0x1a82, 0x1a83, 0x1a84, 0x1a85, 0x1a86, 0x1a87, /* 0x1a80 */
+ 0x1a88, 0x1a89, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1a90, 0x1a91, 0x1a92, 0x1a93, 0x1a94, 0x1a95, 0x1a96, 0x1a97,
+ 0x1a98, 0x1a99, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1aa0, 0x1aa1, 0x1aa2, 0x1aa3, 0x1aa4, 0x1aa5, 0x1aa6, 0x1aa7,
+ 0x1aa8, 0x1aa9, 0x1aaa, 0x1aab, 0x1aac, 0x1aad, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1ac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1b00, 0x1b01, 0x1b02, 0x1b03, 0x1b04, 0x1b05, 0x1b06, 0x1b07, /* 0x1b00 */
+ 0x1b08, 0x1b09, 0x1b0a, 0x1b0b, 0x1b0c, 0x1b0d, 0x1b0e, 0x1b0f,
+ 0x1b10, 0x1b11, 0x1b12, 0x1b13, 0x1b14, 0x1b15, 0x1b16, 0x1b17,
+ 0x1b18, 0x1b19, 0x1b1a, 0x1b1b, 0x1b1c, 0x1b1d, 0x1b1e, 0x1b1f,
+ 0x1b20, 0x1b21, 0x1b22, 0x1b23, 0x1b24, 0x1b25, 0x1b26, 0x1b27,
+ 0x1b28, 0x1b29, 0x1b2a, 0x1b2b, 0x1b2c, 0x1b2d, 0x1b2e, 0x1b2f,
+ 0x1b30, 0x1b31, 0x1b32, 0x1b33, 0x1b34, 0x1b35, 0x1b36, 0x1b37,
+ 0x1b38, 0x1b39, 0x1b3a, 0x1b3b, 0x1b3c, 0x1b3d, 0x1b3e, 0x1b3f,
+ 0x1b40, 0x1b41, 0x1b42, 0x1b43, 0x1b44, 0x1b45, 0x1b46, 0x1b47, /* 0x1b40 */
+ 0x1b48, 0x1b49, 0x1b4a, 0x1b4b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1b50, 0x1b51, 0x1b52, 0x1b53, 0x1b54, 0x1b55, 0x1b56, 0x1b57,
+ 0x1b58, 0x1b59, 0x1b5a, 0x1b5b, 0x1b5c, 0x1b5d, 0x1b5e, 0x1b5f,
+ 0x1b60, 0x1b61, 0x1b62, 0x1b63, 0x1b64, 0x1b65, 0x1b66, 0x1b67,
+ 0x1b68, 0x1b69, 0x1b6a, 0x1b6b, 0x1b6c, 0x1b6d, 0x1b6e, 0x1b6f,
+ 0x1b70, 0x1b71, 0x1b72, 0x1b73, 0x1b74, 0x1b75, 0x1b76, 0x1b77,
+ 0x1b78, 0x1b79, 0x1b7a, 0x1b7b, 0x1b7c, 0x0000, 0x0000, 0x0000,
+ 0x1b80, 0x1b81, 0x1b82, 0x1b83, 0x1b84, 0x1b85, 0x1b86, 0x1b87, /* 0x1b80 */
+ 0x1b88, 0x1b89, 0x1b8a, 0x1b8b, 0x1b8c, 0x1b8d, 0x1b8e, 0x1b8f,
+ 0x1b90, 0x1b91, 0x1b92, 0x1b93, 0x1b94, 0x1b95, 0x1b96, 0x1b97,
+ 0x1b98, 0x1b99, 0x1b9a, 0x1b9b, 0x1b9c, 0x1b9d, 0x1b9e, 0x1b9f,
+ 0x1ba0, 0x1ba1, 0x1ba2, 0x1ba3, 0x1ba4, 0x1ba5, 0x1ba6, 0x1ba7,
+ 0x1ba8, 0x1ba9, 0x1baa, 0x1bab, 0x1bac, 0x1bad, 0x1bae, 0x1baf,
+ 0x1bb0, 0x1bb1, 0x1bb2, 0x1bb3, 0x1bb4, 0x1bb5, 0x1bb6, 0x1bb7,
+ 0x1bb8, 0x1bb9, 0x1bba, 0x1bbb, 0x1bbc, 0x1bbd, 0x1bbe, 0x1bbf,
+ 0x1bc0, 0x1bc1, 0x1bc2, 0x1bc3, 0x1bc4, 0x1bc5, 0x1bc6, 0x1bc7, /* 0x1bc0 */
+ 0x1bc8, 0x1bc9, 0x1bca, 0x1bcb, 0x1bcc, 0x1bcd, 0x1bce, 0x1bcf,
+ 0x1bd0, 0x1bd1, 0x1bd2, 0x1bd3, 0x1bd4, 0x1bd5, 0x1bd6, 0x1bd7,
+ 0x1bd8, 0x1bd9, 0x1bda, 0x1bdb, 0x1bdc, 0x1bdd, 0x1bde, 0x1bdf,
+ 0x1be0, 0x1be1, 0x1be2, 0x1be3, 0x1be4, 0x1be5, 0x1be6, 0x1be7,
+ 0x1be8, 0x1be9, 0x1bea, 0x1beb, 0x1bec, 0x1bed, 0x1bee, 0x1bef,
+ 0x1bf0, 0x1bf1, 0x1bf2, 0x1bf3, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1bfc, 0x1bfd, 0x1bfe, 0x1bff,
+ 0x1c00, 0x1c01, 0x1c02, 0x1c03, 0x1c04, 0x1c05, 0x1c06, 0x1c07, /* 0x1c00 */
+ 0x1c08, 0x1c09, 0x1c0a, 0x1c0b, 0x1c0c, 0x1c0d, 0x1c0e, 0x1c0f,
+ 0x1c10, 0x1c11, 0x1c12, 0x1c13, 0x1c14, 0x1c15, 0x1c16, 0x1c17,
+ 0x1c18, 0x1c19, 0x1c1a, 0x1c1b, 0x1c1c, 0x1c1d, 0x1c1e, 0x1c1f,
+ 0x1c20, 0x1c21, 0x1c22, 0x1c23, 0x1c24, 0x1c25, 0x1c26, 0x1c27,
+ 0x1c28, 0x1c29, 0x1c2a, 0x1c2b, 0x1c2c, 0x1c2d, 0x1c2e, 0x1c2f,
+ 0x1c30, 0x1c31, 0x1c32, 0x1c33, 0x1c34, 0x1c35, 0x1c36, 0x1c37,
+ 0x0000, 0x0000, 0x0000, 0x1c3b, 0x1c3c, 0x1c3d, 0x1c3e, 0x1c3f,
+ 0x1c40, 0x1c41, 0x1c42, 0x1c43, 0x1c44, 0x1c45, 0x1c46, 0x1c47, /* 0x1c40 */
+ 0x1c48, 0x1c49, 0x0000, 0x0000, 0x0000, 0x1c4d, 0x1c4e, 0x1c4f,
+ 0x1c50, 0x1c51, 0x1c52, 0x1c53, 0x1c54, 0x1c55, 0x1c56, 0x1c57,
+ 0x1c58, 0x1c59, 0x1c5a, 0x1c5b, 0x1c5c, 0x1c5d, 0x1c5e, 0x1c5f,
+ 0x1c60, 0x1c61, 0x1c62, 0x1c63, 0x1c64, 0x1c65, 0x1c66, 0x1c67,
+ 0x1c68, 0x1c69, 0x1c6a, 0x1c6b, 0x1c6c, 0x1c6d, 0x1c6e, 0x1c6f,
+ 0x1c70, 0x1c71, 0x1c72, 0x1c73, 0x1c74, 0x1c75, 0x1c76, 0x1c77,
+ 0x1c78, 0x1c79, 0x1c7a, 0x1c7b, 0x1c7c, 0x1c7d, 0x1c7e, 0x1c7f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1c80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1cc0, 0x1cc1, 0x1cc2, 0x1cc3, 0x1cc4, 0x1cc5, 0x1cc6, 0x1cc7, /* 0x1cc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1cd0, 0x1cd1, 0x1cd2, 0x1cd3, 0x1cd4, 0x1cd5, 0x1cd6, 0x1cd7,
+ 0x1cd8, 0x1cd9, 0x1cda, 0x1cdb, 0x1cdc, 0x1cdd, 0x1cde, 0x1cdf,
+ 0x1ce0, 0x1ce1, 0x1ce2, 0x1ce3, 0x1ce4, 0x1ce5, 0x1ce6, 0x1ce7,
+ 0x1ce8, 0x1ce9, 0x1cea, 0x1ceb, 0x1cec, 0x1ced, 0x1cee, 0x1cef,
+ 0x1cf0, 0x1cf1, 0x1cf2, 0x1cf3, 0x1cf4, 0x1cf5, 0x1cf6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1d00, 0x1d01, 0x1d02, 0x1d03, 0x1d04, 0x1d05, 0x1d06, 0x1d07, /* 0x1d00 */
+ 0x1d08, 0x1d09, 0x1d0a, 0x1d0b, 0x1d0c, 0x1d0d, 0x1d0e, 0x1d0f,
+ 0x1d10, 0x1d11, 0x1d12, 0x1d13, 0x1d14, 0x1d15, 0x1d16, 0x1d17,
+ 0x1d18, 0x1d19, 0x1d1a, 0x1d1b, 0x1d1c, 0x1d1d, 0x1d1e, 0x1d1f,
+ 0x1d20, 0x1d21, 0x1d22, 0x1d23, 0x1d24, 0x1d25, 0x1d26, 0x1d27,
+ 0x1d28, 0x1d29, 0x1d2a, 0x1d2b, 0x1d2c, 0x1d2d, 0x1d2e, 0x1d2f,
+ 0x1d30, 0x1d31, 0x1d32, 0x1d33, 0x1d34, 0x1d35, 0x1d36, 0x1d37,
+ 0x1d38, 0x1d39, 0x1d3a, 0x1d3b, 0x1d3c, 0x1d3d, 0x1d3e, 0x1d3f,
+ 0x1d40, 0x1d41, 0x1d42, 0x1d43, 0x1d44, 0x1d45, 0x1d46, 0x1d47, /* 0x1d40 */
+ 0x1d48, 0x1d49, 0x1d4a, 0x1d4b, 0x1d4c, 0x1d4d, 0x1d4e, 0x1d4f,
+ 0x1d50, 0x1d51, 0x1d52, 0x1d53, 0x1d54, 0x1d55, 0x1d56, 0x1d57,
+ 0x1d58, 0x1d59, 0x1d5a, 0x1d5b, 0x1d5c, 0x1d5d, 0x1d5e, 0x1d5f,
+ 0x1d60, 0x1d61, 0x1d62, 0x1d63, 0x1d64, 0x1d65, 0x1d66, 0x1d67,
+ 0x1d68, 0x1d69, 0x1d6a, 0x1d6b, 0x1d6c, 0x1d6d, 0x1d6e, 0x1d6f,
+ 0x1d70, 0x1d71, 0x1d72, 0x1d73, 0x1d74, 0x1d75, 0x1d76, 0x1d77,
+ 0x1d78, 0x1d79, 0x1d7a, 0x1d7b, 0x1d7c, 0x1d7d, 0x1d7e, 0x1d7f,
+ 0x1d80, 0x1d81, 0x1d82, 0x1d83, 0x1d84, 0x1d85, 0x1d86, 0x1d87, /* 0x1d80 */
+ 0x1d88, 0x1d89, 0x1d8a, 0x1d8b, 0x1d8c, 0x1d8d, 0x1d8e, 0x1d8f,
+ 0x1d90, 0x1d91, 0x1d92, 0x1d93, 0x1d94, 0x1d95, 0x1d96, 0x1d97,
+ 0x1d98, 0x1d99, 0x1d9a, 0x1d9b, 0x1d9c, 0x1d9d, 0x1d9e, 0x1d9f,
+ 0x1da0, 0x1da1, 0x1da2, 0x1da3, 0x1da4, 0x1da5, 0x1da6, 0x1da7,
+ 0x1da8, 0x1da9, 0x1daa, 0x1dab, 0x1dac, 0x1dad, 0x1dae, 0x1daf,
+ 0x1db0, 0x1db1, 0x1db2, 0x1db3, 0x1db4, 0x1db5, 0x1db6, 0x1db7,
+ 0x1db8, 0x1db9, 0x1dba, 0x1dbb, 0x1dbc, 0x1dbd, 0x1dbe, 0x1dbf,
+ 0x1dc0, 0x1dc1, 0x1dc2, 0x1dc3, 0x1dc4, 0x1dc5, 0x1dc6, 0x1dc7, /* 0x1dc0 */
+ 0x1dc8, 0x1dc9, 0x1dca, 0x1dcb, 0x1dcc, 0x1dcd, 0x1dce, 0x1dcf,
+ 0x1dd0, 0x1dd1, 0x1dd2, 0x1dd3, 0x1dd4, 0x1dd5, 0x1dd6, 0x1dd7,
+ 0x1dd8, 0x1dd9, 0x1dda, 0x1ddb, 0x1ddc, 0x1ddd, 0x1dde, 0x1ddf,
+ 0x1de0, 0x1de1, 0x1de2, 0x1de3, 0x1de4, 0x1de5, 0x1de6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1dfc, 0x1dfd, 0x1dfe, 0x1dff,
+ 0x1e01, 0x1e01, 0x1e03, 0x1e03, 0x1e05, 0x1e05, 0x1e07, 0x1e07, /* 0x1e00 */
+ 0x1e09, 0x1e09, 0x1e0b, 0x1e0b, 0x1e0d, 0x1e0d, 0x1e0f, 0x1e0f,
+ 0x1e11, 0x1e11, 0x1e13, 0x1e13, 0x1e15, 0x1e15, 0x1e17, 0x1e17,
+ 0x1e19, 0x1e19, 0x1e1b, 0x1e1b, 0x1e1d, 0x1e1d, 0x1e1f, 0x1e1f,
+ 0x1e21, 0x1e21, 0x1e23, 0x1e23, 0x1e25, 0x1e25, 0x1e27, 0x1e27,
+ 0x1e29, 0x1e29, 0x1e2b, 0x1e2b, 0x1e2d, 0x1e2d, 0x1e2f, 0x1e2f,
+ 0x1e31, 0x1e31, 0x1e33, 0x1e33, 0x1e35, 0x1e35, 0x1e37, 0x1e37,
+ 0x1e39, 0x1e39, 0x1e3b, 0x1e3b, 0x1e3d, 0x1e3d, 0x1e3f, 0x1e3f,
+ 0x1e41, 0x1e41, 0x1e43, 0x1e43, 0x1e45, 0x1e45, 0x1e47, 0x1e47, /* 0x1e40 */
+ 0x1e49, 0x1e49, 0x1e4b, 0x1e4b, 0x1e4d, 0x1e4d, 0x1e4f, 0x1e4f,
+ 0x1e51, 0x1e51, 0x1e53, 0x1e53, 0x1e55, 0x1e55, 0x1e57, 0x1e57,
+ 0x1e59, 0x1e59, 0x1e5b, 0x1e5b, 0x1e5d, 0x1e5d, 0x1e5f, 0x1e5f,
+ 0x1e61, 0x1e61, 0x1e63, 0x1e63, 0x1e65, 0x1e65, 0x1e67, 0x1e67,
+ 0x1e69, 0x1e69, 0x1e6b, 0x1e6b, 0x1e6d, 0x1e6d, 0x1e6f, 0x1e6f,
+ 0x1e71, 0x1e71, 0x1e73, 0x1e73, 0x1e75, 0x1e75, 0x1e77, 0x1e77,
+ 0x1e79, 0x1e79, 0x1e7b, 0x1e7b, 0x1e7d, 0x1e7d, 0x1e7f, 0x1e7f,
+ 0x1e81, 0x1e81, 0x1e83, 0x1e83, 0x1e85, 0x1e85, 0x1e87, 0x1e87, /* 0x1e80 */
+ 0x1e89, 0x1e89, 0x1e8b, 0x1e8b, 0x1e8d, 0x1e8d, 0x1e8f, 0x1e8f,
+ 0x1e91, 0x1e91, 0x1e93, 0x1e93, 0x1e95, 0x1e95, 0x1e96, 0x1e97,
+ 0x1e98, 0x1e99, 0x1e9a, 0x1e9b, 0x1e9c, 0x1e9d, 0x00df, 0x1e9f,
+ 0x1ea1, 0x1ea1, 0x1ea3, 0x1ea3, 0x1ea5, 0x1ea5, 0x1ea7, 0x1ea7,
+ 0x1ea9, 0x1ea9, 0x1eab, 0x1eab, 0x1ead, 0x1ead, 0x1eaf, 0x1eaf,
+ 0x1eb1, 0x1eb1, 0x1eb3, 0x1eb3, 0x1eb5, 0x1eb5, 0x1eb7, 0x1eb7,
+ 0x1eb9, 0x1eb9, 0x1ebb, 0x1ebb, 0x1ebd, 0x1ebd, 0x1ebf, 0x1ebf,
+ 0x1ec1, 0x1ec1, 0x1ec3, 0x1ec3, 0x1ec5, 0x1ec5, 0x1ec7, 0x1ec7, /* 0x1ec0 */
+ 0x1ec9, 0x1ec9, 0x1ecb, 0x1ecb, 0x1ecd, 0x1ecd, 0x1ecf, 0x1ecf,
+ 0x1ed1, 0x1ed1, 0x1ed3, 0x1ed3, 0x1ed5, 0x1ed5, 0x1ed7, 0x1ed7,
+ 0x1ed9, 0x1ed9, 0x1edb, 0x1edb, 0x1edd, 0x1edd, 0x1edf, 0x1edf,
+ 0x1ee1, 0x1ee1, 0x1ee3, 0x1ee3, 0x1ee5, 0x1ee5, 0x1ee7, 0x1ee7,
+ 0x1ee9, 0x1ee9, 0x1eeb, 0x1eeb, 0x1eed, 0x1eed, 0x1eef, 0x1eef,
+ 0x1ef1, 0x1ef1, 0x1ef3, 0x1ef3, 0x1ef5, 0x1ef5, 0x1ef7, 0x1ef7,
+ 0x1ef9, 0x1ef9, 0x1efb, 0x1efb, 0x1efd, 0x1efd, 0x1eff, 0x1eff,
+ 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, /* 0x1f00 */
+ 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07,
+ 0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, 0x0000, 0x0000,
+ 0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, 0x0000, 0x0000,
+ 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27,
+ 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27,
+ 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 0x1f37,
+ 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 0x1f37,
+ 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0x0000, 0x0000, /* 0x1f40 */
+ 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0x0000, 0x0000,
+ 0x1f50, 0x1f51, 0x1f52, 0x1f53, 0x1f54, 0x1f55, 0x1f56, 0x1f57,
+ 0x0000, 0x1f51, 0x0000, 0x1f53, 0x0000, 0x1f55, 0x0000, 0x1f57,
+ 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67,
+ 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67,
+ 0x1f70, 0x1f71, 0x1f72, 0x1f73, 0x1f74, 0x1f75, 0x1f76, 0x1f77,
+ 0x1f78, 0x1f79, 0x1f7a, 0x1f7b, 0x1f7c, 0x1f7d, 0x0000, 0x0000,
+ 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87, /* 0x1f80 */
+ 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87,
+ 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97,
+ 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97,
+ 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7,
+ 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7,
+ 0x1fb0, 0x1fb1, 0x1fb2, 0x1fb3, 0x1fb4, 0x0000, 0x1fb6, 0x1fb7,
+ 0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 0x1fb3, 0x1fbd, 0x1fbe, 0x1fbf,
+ 0x1fc0, 0x1fc1, 0x1fc2, 0x1fc3, 0x1fc4, 0x0000, 0x1fc6, 0x1fc7, /* 0x1fc0 */
+ 0x1f72, 0x1f73, 0x1f74, 0x1f75, 0x1fc3, 0x1fcd, 0x1fce, 0x1fcf,
+ 0x1fd0, 0x1fd1, 0x1fd2, 0x1fd3, 0x0000, 0x0000, 0x1fd6, 0x1fd7,
+ 0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 0x0000, 0x1fdd, 0x1fde, 0x1fdf,
+ 0x1fe0, 0x1fe1, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fe5, 0x1fe6, 0x1fe7,
+ 0x1fe0, 0x1fe1, 0x1f7a, 0x1f7b, 0x1fe5, 0x1fed, 0x1fee, 0x1fef,
+ 0x0000, 0x0000, 0x1ff2, 0x1ff3, 0x1ff4, 0x0000, 0x1ff6, 0x1ff7,
+ 0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 0x1ff3, 0x1ffd, 0x1ffe, 0x0000,
+ 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, /* 0x2000 */
+ 0x2008, 0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x200e, 0x200f,
+ 0x2010, 0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2016, 0x2017,
+ 0x2018, 0x2019, 0x201a, 0x201b, 0x201c, 0x201d, 0x201e, 0x201f,
+ 0x2020, 0x2021, 0x2022, 0x2023, 0x2024, 0x2025, 0x2026, 0x2027,
+ 0x2028, 0x2029, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x202f,
+ 0x2030, 0x2031, 0x2032, 0x2033, 0x2034, 0x2035, 0x2036, 0x2037,
+ 0x2038, 0x2039, 0x203a, 0x203b, 0x203c, 0x203d, 0x203e, 0x203f,
+ 0x2040, 0x2041, 0x2042, 0x2043, 0x2044, 0x2045, 0x2046, 0x2047, /* 0x2040 */
+ 0x2048, 0x2049, 0x204a, 0x204b, 0x204c, 0x204d, 0x204e, 0x204f,
+ 0x2050, 0x2051, 0x2052, 0x2053, 0x2054, 0x2055, 0x2056, 0x2057,
+ 0x2058, 0x2059, 0x205a, 0x205b, 0x205c, 0x205d, 0x205e, 0x205f,
+ 0x2060, 0x2061, 0x2062, 0x2063, 0x2064, 0x0000, 0x2066, 0x2067,
+ 0x2068, 0x2069, 0x206a, 0x206b, 0x206c, 0x206d, 0x206e, 0x206f,
+ 0x2070, 0x2071, 0x0000, 0x0000, 0x2074, 0x2075, 0x2076, 0x2077,
+ 0x2078, 0x2079, 0x207a, 0x207b, 0x207c, 0x207d, 0x207e, 0x207f,
+ 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, /* 0x2080 */
+ 0x2088, 0x2089, 0x208a, 0x208b, 0x208c, 0x208d, 0x208e, 0x0000,
+ 0x2090, 0x2091, 0x2092, 0x2093, 0x2094, 0x2095, 0x2096, 0x2097,
+ 0x2098, 0x2099, 0x209a, 0x209b, 0x209c, 0x0000, 0x0000, 0x0000,
+ 0x20a0, 0x20a1, 0x20a2, 0x20a3, 0x20a4, 0x20a5, 0x20a6, 0x20a7,
+ 0x20a8, 0x20a9, 0x20aa, 0x20ab, 0x20ac, 0x20ad, 0x20ae, 0x20af,
+ 0x20b0, 0x20b1, 0x20b2, 0x20b3, 0x20b4, 0x20b5, 0x20b6, 0x20b7,
+ 0x20b8, 0x20b9, 0x20ba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x20c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x20d0, 0x20d1, 0x20d2, 0x20d3, 0x20d4, 0x20d5, 0x20d6, 0x20d7,
+ 0x20d8, 0x20d9, 0x20da, 0x20db, 0x20dc, 0x20dd, 0x20de, 0x20df,
+ 0x20e0, 0x20e1, 0x20e2, 0x20e3, 0x20e4, 0x20e5, 0x20e6, 0x20e7,
+ 0x20e8, 0x20e9, 0x20ea, 0x20eb, 0x20ec, 0x20ed, 0x20ee, 0x20ef,
+ 0x20f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2100, 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107, /* 0x2100 */
+ 0x2108, 0x2109, 0x210a, 0x210b, 0x210c, 0x210d, 0x210e, 0x210f,
+ 0x2110, 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117,
+ 0x2118, 0x2119, 0x211a, 0x211b, 0x211c, 0x211d, 0x211e, 0x211f,
+ 0x2120, 0x2121, 0x2122, 0x2123, 0x2124, 0x2125, 0x03c9, 0x2127,
+ 0x2128, 0x2129, 0x006b, 0x00e5, 0x212c, 0x212d, 0x212e, 0x212f,
+ 0x2130, 0x2131, 0x214e, 0x2133, 0x2134, 0x2135, 0x2136, 0x2137,
+ 0x2138, 0x2139, 0x213a, 0x213b, 0x213c, 0x213d, 0x213e, 0x213f,
+ 0x2140, 0x2141, 0x2142, 0x2143, 0x2144, 0x2145, 0x2146, 0x2147, /* 0x2140 */
+ 0x2148, 0x2149, 0x214a, 0x214b, 0x214c, 0x214d, 0x214e, 0x214f,
+ 0x2150, 0x2151, 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157,
+ 0x2158, 0x2159, 0x215a, 0x215b, 0x215c, 0x215d, 0x215e, 0x215f,
+ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ 0x2178, 0x2179, 0x217a, 0x217b, 0x217c, 0x217d, 0x217e, 0x217f,
+ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ 0x2178, 0x2179, 0x217a, 0x217b, 0x217c, 0x217d, 0x217e, 0x217f,
+ 0x2180, 0x2181, 0x2182, 0x2184, 0x2184, 0x2185, 0x2186, 0x2187, /* 0x2180 */
+ 0x2188, 0x2189, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2190, 0x2191, 0x2192, 0x2193, 0x2194, 0x2195, 0x2196, 0x2197,
+ 0x2198, 0x2199, 0x219a, 0x219b, 0x219c, 0x219d, 0x219e, 0x219f,
+ 0x21a0, 0x21a1, 0x21a2, 0x21a3, 0x21a4, 0x21a5, 0x21a6, 0x21a7,
+ 0x21a8, 0x21a9, 0x21aa, 0x21ab, 0x21ac, 0x21ad, 0x21ae, 0x21af,
+ 0x21b0, 0x21b1, 0x21b2, 0x21b3, 0x21b4, 0x21b5, 0x21b6, 0x21b7,
+ 0x21b8, 0x21b9, 0x21ba, 0x21bb, 0x21bc, 0x21bd, 0x21be, 0x21bf,
+ 0x21c0, 0x21c1, 0x21c2, 0x21c3, 0x21c4, 0x21c5, 0x21c6, 0x21c7, /* 0x21c0 */
+ 0x21c8, 0x21c9, 0x21ca, 0x21cb, 0x21cc, 0x21cd, 0x21ce, 0x21cf,
+ 0x21d0, 0x21d1, 0x21d2, 0x21d3, 0x21d4, 0x21d5, 0x21d6, 0x21d7,
+ 0x21d8, 0x21d9, 0x21da, 0x21db, 0x21dc, 0x21dd, 0x21de, 0x21df,
+ 0x21e0, 0x21e1, 0x21e2, 0x21e3, 0x21e4, 0x21e5, 0x21e6, 0x21e7,
+ 0x21e8, 0x21e9, 0x21ea, 0x21eb, 0x21ec, 0x21ed, 0x21ee, 0x21ef,
+ 0x21f0, 0x21f1, 0x21f2, 0x21f3, 0x21f4, 0x21f5, 0x21f6, 0x21f7,
+ 0x21f8, 0x21f9, 0x21fa, 0x21fb, 0x21fc, 0x21fd, 0x21fe, 0x21ff,
+ 0x2200, 0x2201, 0x2202, 0x2203, 0x2204, 0x2205, 0x2206, 0x2207, /* 0x2200 */
+ 0x2208, 0x2209, 0x220a, 0x220b, 0x220c, 0x220d, 0x220e, 0x220f,
+ 0x2210, 0x2211, 0x2212, 0x2213, 0x2214, 0x2215, 0x2216, 0x2217,
+ 0x2218, 0x2219, 0x221a, 0x221b, 0x221c, 0x221d, 0x221e, 0x221f,
+ 0x2220, 0x2221, 0x2222, 0x2223, 0x2224, 0x2225, 0x2226, 0x2227,
+ 0x2228, 0x2229, 0x222a, 0x222b, 0x222c, 0x222d, 0x222e, 0x222f,
+ 0x2230, 0x2231, 0x2232, 0x2233, 0x2234, 0x2235, 0x2236, 0x2237,
+ 0x2238, 0x2239, 0x223a, 0x223b, 0x223c, 0x223d, 0x223e, 0x223f,
+ 0x2240, 0x2241, 0x2242, 0x2243, 0x2244, 0x2245, 0x2246, 0x2247, /* 0x2240 */
+ 0x2248, 0x2249, 0x224a, 0x224b, 0x224c, 0x224d, 0x224e, 0x224f,
+ 0x2250, 0x2251, 0x2252, 0x2253, 0x2254, 0x2255, 0x2256, 0x2257,
+ 0x2258, 0x2259, 0x225a, 0x225b, 0x225c, 0x225d, 0x225e, 0x225f,
+ 0x2260, 0x2261, 0x2262, 0x2263, 0x2264, 0x2265, 0x2266, 0x2267,
+ 0x2268, 0x2269, 0x226a, 0x226b, 0x226c, 0x226d, 0x226e, 0x226f,
+ 0x2270, 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0x2276, 0x2277,
+ 0x2278, 0x2279, 0x227a, 0x227b, 0x227c, 0x227d, 0x227e, 0x227f,
+ 0x2280, 0x2281, 0x2282, 0x2283, 0x2284, 0x2285, 0x2286, 0x2287, /* 0x2280 */
+ 0x2288, 0x2289, 0x228a, 0x228b, 0x228c, 0x228d, 0x228e, 0x228f,
+ 0x2290, 0x2291, 0x2292, 0x2293, 0x2294, 0x2295, 0x2296, 0x2297,
+ 0x2298, 0x2299, 0x229a, 0x229b, 0x229c, 0x229d, 0x229e, 0x229f,
+ 0x22a0, 0x22a1, 0x22a2, 0x22a3, 0x22a4, 0x22a5, 0x22a6, 0x22a7,
+ 0x22a8, 0x22a9, 0x22aa, 0x22ab, 0x22ac, 0x22ad, 0x22ae, 0x22af,
+ 0x22b0, 0x22b1, 0x22b2, 0x22b3, 0x22b4, 0x22b5, 0x22b6, 0x22b7,
+ 0x22b8, 0x22b9, 0x22ba, 0x22bb, 0x22bc, 0x22bd, 0x22be, 0x22bf,
+ 0x22c0, 0x22c1, 0x22c2, 0x22c3, 0x22c4, 0x22c5, 0x22c6, 0x22c7, /* 0x22c0 */
+ 0x22c8, 0x22c9, 0x22ca, 0x22cb, 0x22cc, 0x22cd, 0x22ce, 0x22cf,
+ 0x22d0, 0x22d1, 0x22d2, 0x22d3, 0x22d4, 0x22d5, 0x22d6, 0x22d7,
+ 0x22d8, 0x22d9, 0x22da, 0x22db, 0x22dc, 0x22dd, 0x22de, 0x22df,
+ 0x22e0, 0x22e1, 0x22e2, 0x22e3, 0x22e4, 0x22e5, 0x22e6, 0x22e7,
+ 0x22e8, 0x22e9, 0x22ea, 0x22eb, 0x22ec, 0x22ed, 0x22ee, 0x22ef,
+ 0x22f0, 0x22f1, 0x22f2, 0x22f3, 0x22f4, 0x22f5, 0x22f6, 0x22f7,
+ 0x22f8, 0x22f9, 0x22fa, 0x22fb, 0x22fc, 0x22fd, 0x22fe, 0x22ff,
+ 0x2300, 0x2301, 0x2302, 0x2303, 0x2304, 0x2305, 0x2306, 0x2307, /* 0x2300 */
+ 0x2308, 0x2309, 0x230a, 0x230b, 0x230c, 0x230d, 0x230e, 0x230f,
+ 0x2310, 0x2311, 0x2312, 0x2313, 0x2314, 0x2315, 0x2316, 0x2317,
+ 0x2318, 0x2319, 0x231a, 0x231b, 0x231c, 0x231d, 0x231e, 0x231f,
+ 0x2320, 0x2321, 0x2322, 0x2323, 0x2324, 0x2325, 0x2326, 0x2327,
+ 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, 0x232d, 0x232e, 0x232f,
+ 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337,
+ 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d, 0x233e, 0x233f,
+ 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, /* 0x2340 */
+ 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f,
+ 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357,
+ 0x2358, 0x2359, 0x235a, 0x235b, 0x235c, 0x235d, 0x235e, 0x235f,
+ 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367,
+ 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f,
+ 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377,
+ 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d, 0x237e, 0x237f,
+ 0x2380, 0x2381, 0x2382, 0x2383, 0x2384, 0x2385, 0x2386, 0x2387, /* 0x2380 */
+ 0x2388, 0x2389, 0x238a, 0x238b, 0x238c, 0x238d, 0x238e, 0x238f,
+ 0x2390, 0x2391, 0x2392, 0x2393, 0x2394, 0x2395, 0x2396, 0x2397,
+ 0x2398, 0x2399, 0x239a, 0x239b, 0x239c, 0x239d, 0x239e, 0x239f,
+ 0x23a0, 0x23a1, 0x23a2, 0x23a3, 0x23a4, 0x23a5, 0x23a6, 0x23a7,
+ 0x23a8, 0x23a9, 0x23aa, 0x23ab, 0x23ac, 0x23ad, 0x23ae, 0x23af,
+ 0x23b0, 0x23b1, 0x23b2, 0x23b3, 0x23b4, 0x23b5, 0x23b6, 0x23b7,
+ 0x23b8, 0x23b9, 0x23ba, 0x23bb, 0x23bc, 0x23bd, 0x23be, 0x23bf,
+ 0x23c0, 0x23c1, 0x23c2, 0x23c3, 0x23c4, 0x23c5, 0x23c6, 0x23c7, /* 0x23c0 */
+ 0x23c8, 0x23c9, 0x23ca, 0x23cb, 0x23cc, 0x23cd, 0x23ce, 0x23cf,
+ 0x23d0, 0x23d1, 0x23d2, 0x23d3, 0x23d4, 0x23d5, 0x23d6, 0x23d7,
+ 0x23d8, 0x23d9, 0x23da, 0x23db, 0x23dc, 0x23dd, 0x23de, 0x23df,
+ 0x23e0, 0x23e1, 0x23e2, 0x23e3, 0x23e4, 0x23e5, 0x23e6, 0x23e7,
+ 0x23e8, 0x23e9, 0x23ea, 0x23eb, 0x23ec, 0x23ed, 0x23ee, 0x23ef,
+ 0x23f0, 0x23f1, 0x23f2, 0x23f3, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407, /* 0x2400 */
+ 0x2408, 0x2409, 0x240a, 0x240b, 0x240c, 0x240d, 0x240e, 0x240f,
+ 0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, 0x2417,
+ 0x2418, 0x2419, 0x241a, 0x241b, 0x241c, 0x241d, 0x241e, 0x241f,
+ 0x2420, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, /* 0x2440 */
+ 0x2448, 0x2449, 0x244a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
+ 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f,
+ 0x2470, 0x2471, 0x2472, 0x2473, 0x2474, 0x2475, 0x2476, 0x2477,
+ 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f,
+ 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, /* 0x2480 */
+ 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f,
+ 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497,
+ 0x2498, 0x2499, 0x249a, 0x249b, 0x249c, 0x249d, 0x249e, 0x249f,
+ 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7,
+ 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af,
+ 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x24d0, 0x24d1,
+ 0x24d2, 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9,
+ 0x24da, 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, /* 0x24c0 */
+ 0x24e2, 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9,
+ 0x24d0, 0x24d1, 0x24d2, 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7,
+ 0x24d8, 0x24d9, 0x24da, 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df,
+ 0x24e0, 0x24e1, 0x24e2, 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7,
+ 0x24e8, 0x24e9, 0x24ea, 0x24eb, 0x24ec, 0x24ed, 0x24ee, 0x24ef,
+ 0x24f0, 0x24f1, 0x24f2, 0x24f3, 0x24f4, 0x24f5, 0x24f6, 0x24f7,
+ 0x24f8, 0x24f9, 0x24fa, 0x24fb, 0x24fc, 0x24fd, 0x24fe, 0x24ff,
+ 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, /* 0x2500 */
+ 0x2508, 0x2509, 0x250a, 0x250b, 0x250c, 0x250d, 0x250e, 0x250f,
+ 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517,
+ 0x2518, 0x2519, 0x251a, 0x251b, 0x251c, 0x251d, 0x251e, 0x251f,
+ 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527,
+ 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f,
+ 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537,
+ 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f,
+ 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, /* 0x2540 */
+ 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f,
+ 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557,
+ 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f,
+ 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567,
+ 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f,
+ 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2577,
+ 0x2578, 0x2579, 0x257a, 0x257b, 0x257c, 0x257d, 0x257e, 0x257f,
+ 0x2580, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, /* 0x2580 */
+ 0x2588, 0x2589, 0x258a, 0x258b, 0x258c, 0x258d, 0x258e, 0x258f,
+ 0x2590, 0x2591, 0x2592, 0x2593, 0x2594, 0x2595, 0x2596, 0x2597,
+ 0x2598, 0x2599, 0x259a, 0x259b, 0x259c, 0x259d, 0x259e, 0x259f,
+ 0x25a0, 0x25a1, 0x25a2, 0x25a3, 0x25a4, 0x25a5, 0x25a6, 0x25a7,
+ 0x25a8, 0x25a9, 0x25aa, 0x25ab, 0x25ac, 0x25ad, 0x25ae, 0x25af,
+ 0x25b0, 0x25b1, 0x25b2, 0x25b3, 0x25b4, 0x25b5, 0x25b6, 0x25b7,
+ 0x25b8, 0x25b9, 0x25ba, 0x25bb, 0x25bc, 0x25bd, 0x25be, 0x25bf,
+ 0x25c0, 0x25c1, 0x25c2, 0x25c3, 0x25c4, 0x25c5, 0x25c6, 0x25c7, /* 0x25c0 */
+ 0x25c8, 0x25c9, 0x25ca, 0x25cb, 0x25cc, 0x25cd, 0x25ce, 0x25cf,
+ 0x25d0, 0x25d1, 0x25d2, 0x25d3, 0x25d4, 0x25d5, 0x25d6, 0x25d7,
+ 0x25d8, 0x25d9, 0x25da, 0x25db, 0x25dc, 0x25dd, 0x25de, 0x25df,
+ 0x25e0, 0x25e1, 0x25e2, 0x25e3, 0x25e4, 0x25e5, 0x25e6, 0x25e7,
+ 0x25e8, 0x25e9, 0x25ea, 0x25eb, 0x25ec, 0x25ed, 0x25ee, 0x25ef,
+ 0x25f0, 0x25f1, 0x25f2, 0x25f3, 0x25f4, 0x25f5, 0x25f6, 0x25f7,
+ 0x25f8, 0x25f9, 0x25fa, 0x25fb, 0x25fc, 0x25fd, 0x25fe, 0x25ff,
+ 0x2600, 0x2601, 0x2602, 0x2603, 0x2604, 0x2605, 0x2606, 0x2607, /* 0x2600 */
+ 0x2608, 0x2609, 0x260a, 0x260b, 0x260c, 0x260d, 0x260e, 0x260f,
+ 0x2610, 0x2611, 0x2612, 0x2613, 0x2614, 0x2615, 0x2616, 0x2617,
+ 0x2618, 0x2619, 0x261a, 0x261b, 0x261c, 0x261d, 0x261e, 0x261f,
+ 0x2620, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627,
+ 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d, 0x262e, 0x262f,
+ 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2635, 0x2636, 0x2637,
+ 0x2638, 0x2639, 0x263a, 0x263b, 0x263c, 0x263d, 0x263e, 0x263f,
+ 0x2640, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645, 0x2646, 0x2647, /* 0x2640 */
+ 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d, 0x264e, 0x264f,
+ 0x2650, 0x2651, 0x2652, 0x2653, 0x2654, 0x2655, 0x2656, 0x2657,
+ 0x2658, 0x2659, 0x265a, 0x265b, 0x265c, 0x265d, 0x265e, 0x265f,
+ 0x2660, 0x2661, 0x2662, 0x2663, 0x2664, 0x2665, 0x2666, 0x2667,
+ 0x2668, 0x2669, 0x266a, 0x266b, 0x266c, 0x266d, 0x266e, 0x266f,
+ 0x2670, 0x2671, 0x2672, 0x2673, 0x2674, 0x2675, 0x2676, 0x2677,
+ 0x2678, 0x2679, 0x267a, 0x267b, 0x267c, 0x267d, 0x267e, 0x267f,
+ 0x2680, 0x2681, 0x2682, 0x2683, 0x2684, 0x2685, 0x2686, 0x2687, /* 0x2680 */
+ 0x2688, 0x2689, 0x268a, 0x268b, 0x268c, 0x268d, 0x268e, 0x268f,
+ 0x2690, 0x2691, 0x2692, 0x2693, 0x2694, 0x2695, 0x2696, 0x2697,
+ 0x2698, 0x2699, 0x269a, 0x269b, 0x269c, 0x269d, 0x269e, 0x269f,
+ 0x26a0, 0x26a1, 0x26a2, 0x26a3, 0x26a4, 0x26a5, 0x26a6, 0x26a7,
+ 0x26a8, 0x26a9, 0x26aa, 0x26ab, 0x26ac, 0x26ad, 0x26ae, 0x26af,
+ 0x26b0, 0x26b1, 0x26b2, 0x26b3, 0x26b4, 0x26b5, 0x26b6, 0x26b7,
+ 0x26b8, 0x26b9, 0x26ba, 0x26bb, 0x26bc, 0x26bd, 0x26be, 0x26bf,
+ 0x26c0, 0x26c1, 0x26c2, 0x26c3, 0x26c4, 0x26c5, 0x26c6, 0x26c7, /* 0x26c0 */
+ 0x26c8, 0x26c9, 0x26ca, 0x26cb, 0x26cc, 0x26cd, 0x26ce, 0x26cf,
+ 0x26d0, 0x26d1, 0x26d2, 0x26d3, 0x26d4, 0x26d5, 0x26d6, 0x26d7,
+ 0x26d8, 0x26d9, 0x26da, 0x26db, 0x26dc, 0x26dd, 0x26de, 0x26df,
+ 0x26e0, 0x26e1, 0x26e2, 0x26e3, 0x26e4, 0x26e5, 0x26e6, 0x26e7,
+ 0x26e8, 0x26e9, 0x26ea, 0x26eb, 0x26ec, 0x26ed, 0x26ee, 0x26ef,
+ 0x26f0, 0x26f1, 0x26f2, 0x26f3, 0x26f4, 0x26f5, 0x26f6, 0x26f7,
+ 0x26f8, 0x26f9, 0x26fa, 0x26fb, 0x26fc, 0x26fd, 0x26fe, 0x26ff,
+ 0x0000, 0x2701, 0x2702, 0x2703, 0x2704, 0x2705, 0x2706, 0x2707, /* 0x2700 */
+ 0x2708, 0x2709, 0x270a, 0x270b, 0x270c, 0x270d, 0x270e, 0x270f,
+ 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717,
+ 0x2718, 0x2719, 0x271a, 0x271b, 0x271c, 0x271d, 0x271e, 0x271f,
+ 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727,
+ 0x2728, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f,
+ 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737,
+ 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f,
+ 0x2740, 0x2741, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, /* 0x2740 */
+ 0x2748, 0x2749, 0x274a, 0x274b, 0x274c, 0x274d, 0x274e, 0x274f,
+ 0x2750, 0x2751, 0x2752, 0x2753, 0x2754, 0x2755, 0x2756, 0x2757,
+ 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x275f,
+ 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767,
+ 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d, 0x276e, 0x276f,
+ 0x2770, 0x2771, 0x2772, 0x2773, 0x2774, 0x2775, 0x2776, 0x2777,
+ 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e, 0x277f,
+ 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787, /* 0x2780 */
+ 0x2788, 0x2789, 0x278a, 0x278b, 0x278c, 0x278d, 0x278e, 0x278f,
+ 0x2790, 0x2791, 0x2792, 0x2793, 0x2794, 0x2795, 0x2796, 0x2797,
+ 0x2798, 0x2799, 0x279a, 0x279b, 0x279c, 0x279d, 0x279e, 0x279f,
+ 0x27a0, 0x27a1, 0x27a2, 0x27a3, 0x27a4, 0x27a5, 0x27a6, 0x27a7,
+ 0x27a8, 0x27a9, 0x27aa, 0x27ab, 0x27ac, 0x27ad, 0x27ae, 0x27af,
+ 0x27b0, 0x27b1, 0x27b2, 0x27b3, 0x27b4, 0x27b5, 0x27b6, 0x27b7,
+ 0x27b8, 0x27b9, 0x27ba, 0x27bb, 0x27bc, 0x27bd, 0x27be, 0x27bf,
+ 0x27c0, 0x27c1, 0x27c2, 0x27c3, 0x27c4, 0x27c5, 0x27c6, 0x27c7, /* 0x27c0 */
+ 0x27c8, 0x27c9, 0x27ca, 0x27cb, 0x27cc, 0x27cd, 0x27ce, 0x27cf,
+ 0x27d0, 0x27d1, 0x27d2, 0x27d3, 0x27d4, 0x27d5, 0x27d6, 0x27d7,
+ 0x27d8, 0x27d9, 0x27da, 0x27db, 0x27dc, 0x27dd, 0x27de, 0x27df,
+ 0x27e0, 0x27e1, 0x27e2, 0x27e3, 0x27e4, 0x27e5, 0x27e6, 0x27e7,
+ 0x27e8, 0x27e9, 0x27ea, 0x27eb, 0x27ec, 0x27ed, 0x27ee, 0x27ef,
+ 0x27f0, 0x27f1, 0x27f2, 0x27f3, 0x27f4, 0x27f5, 0x27f6, 0x27f7,
+ 0x27f8, 0x27f9, 0x27fa, 0x27fb, 0x27fc, 0x27fd, 0x27fe, 0x27ff,
+ 0x2800, 0x2801, 0x2802, 0x2803, 0x2804, 0x2805, 0x2806, 0x2807, /* 0x2800 */
+ 0x2808, 0x2809, 0x280a, 0x280b, 0x280c, 0x280d, 0x280e, 0x280f,
+ 0x2810, 0x2811, 0x2812, 0x2813, 0x2814, 0x2815, 0x2816, 0x2817,
+ 0x2818, 0x2819, 0x281a, 0x281b, 0x281c, 0x281d, 0x281e, 0x281f,
+ 0x2820, 0x2821, 0x2822, 0x2823, 0x2824, 0x2825, 0x2826, 0x2827,
+ 0x2828, 0x2829, 0x282a, 0x282b, 0x282c, 0x282d, 0x282e, 0x282f,
+ 0x2830, 0x2831, 0x2832, 0x2833, 0x2834, 0x2835, 0x2836, 0x2837,
+ 0x2838, 0x2839, 0x283a, 0x283b, 0x283c, 0x283d, 0x283e, 0x283f,
+ 0x2840, 0x2841, 0x2842, 0x2843, 0x2844, 0x2845, 0x2846, 0x2847, /* 0x2840 */
+ 0x2848, 0x2849, 0x284a, 0x284b, 0x284c, 0x284d, 0x284e, 0x284f,
+ 0x2850, 0x2851, 0x2852, 0x2853, 0x2854, 0x2855, 0x2856, 0x2857,
+ 0x2858, 0x2859, 0x285a, 0x285b, 0x285c, 0x285d, 0x285e, 0x285f,
+ 0x2860, 0x2861, 0x2862, 0x2863, 0x2864, 0x2865, 0x2866, 0x2867,
+ 0x2868, 0x2869, 0x286a, 0x286b, 0x286c, 0x286d, 0x286e, 0x286f,
+ 0x2870, 0x2871, 0x2872, 0x2873, 0x2874, 0x2875, 0x2876, 0x2877,
+ 0x2878, 0x2879, 0x287a, 0x287b, 0x287c, 0x287d, 0x287e, 0x287f,
+ 0x2880, 0x2881, 0x2882, 0x2883, 0x2884, 0x2885, 0x2886, 0x2887, /* 0x2880 */
+ 0x2888, 0x2889, 0x288a, 0x288b, 0x288c, 0x288d, 0x288e, 0x288f,
+ 0x2890, 0x2891, 0x2892, 0x2893, 0x2894, 0x2895, 0x2896, 0x2897,
+ 0x2898, 0x2899, 0x289a, 0x289b, 0x289c, 0x289d, 0x289e, 0x289f,
+ 0x28a0, 0x28a1, 0x28a2, 0x28a3, 0x28a4, 0x28a5, 0x28a6, 0x28a7,
+ 0x28a8, 0x28a9, 0x28aa, 0x28ab, 0x28ac, 0x28ad, 0x28ae, 0x28af,
+ 0x28b0, 0x28b1, 0x28b2, 0x28b3, 0x28b4, 0x28b5, 0x28b6, 0x28b7,
+ 0x28b8, 0x28b9, 0x28ba, 0x28bb, 0x28bc, 0x28bd, 0x28be, 0x28bf,
+ 0x28c0, 0x28c1, 0x28c2, 0x28c3, 0x28c4, 0x28c5, 0x28c6, 0x28c7, /* 0x28c0 */
+ 0x28c8, 0x28c9, 0x28ca, 0x28cb, 0x28cc, 0x28cd, 0x28ce, 0x28cf,
+ 0x28d0, 0x28d1, 0x28d2, 0x28d3, 0x28d4, 0x28d5, 0x28d6, 0x28d7,
+ 0x28d8, 0x28d9, 0x28da, 0x28db, 0x28dc, 0x28dd, 0x28de, 0x28df,
+ 0x28e0, 0x28e1, 0x28e2, 0x28e3, 0x28e4, 0x28e5, 0x28e6, 0x28e7,
+ 0x28e8, 0x28e9, 0x28ea, 0x28eb, 0x28ec, 0x28ed, 0x28ee, 0x28ef,
+ 0x28f0, 0x28f1, 0x28f2, 0x28f3, 0x28f4, 0x28f5, 0x28f6, 0x28f7,
+ 0x28f8, 0x28f9, 0x28fa, 0x28fb, 0x28fc, 0x28fd, 0x28fe, 0x28ff,
+ 0x2900, 0x2901, 0x2902, 0x2903, 0x2904, 0x2905, 0x2906, 0x2907, /* 0x2900 */
+ 0x2908, 0x2909, 0x290a, 0x290b, 0x290c, 0x290d, 0x290e, 0x290f,
+ 0x2910, 0x2911, 0x2912, 0x2913, 0x2914, 0x2915, 0x2916, 0x2917,
+ 0x2918, 0x2919, 0x291a, 0x291b, 0x291c, 0x291d, 0x291e, 0x291f,
+ 0x2920, 0x2921, 0x2922, 0x2923, 0x2924, 0x2925, 0x2926, 0x2927,
+ 0x2928, 0x2929, 0x292a, 0x292b, 0x292c, 0x292d, 0x292e, 0x292f,
+ 0x2930, 0x2931, 0x2932, 0x2933, 0x2934, 0x2935, 0x2936, 0x2937,
+ 0x2938, 0x2939, 0x293a, 0x293b, 0x293c, 0x293d, 0x293e, 0x293f,
+ 0x2940, 0x2941, 0x2942, 0x2943, 0x2944, 0x2945, 0x2946, 0x2947, /* 0x2940 */
+ 0x2948, 0x2949, 0x294a, 0x294b, 0x294c, 0x294d, 0x294e, 0x294f,
+ 0x2950, 0x2951, 0x2952, 0x2953, 0x2954, 0x2955, 0x2956, 0x2957,
+ 0x2958, 0x2959, 0x295a, 0x295b, 0x295c, 0x295d, 0x295e, 0x295f,
+ 0x2960, 0x2961, 0x2962, 0x2963, 0x2964, 0x2965, 0x2966, 0x2967,
+ 0x2968, 0x2969, 0x296a, 0x296b, 0x296c, 0x296d, 0x296e, 0x296f,
+ 0x2970, 0x2971, 0x2972, 0x2973, 0x2974, 0x2975, 0x2976, 0x2977,
+ 0x2978, 0x2979, 0x297a, 0x297b, 0x297c, 0x297d, 0x297e, 0x297f,
+ 0x2980, 0x2981, 0x2982, 0x2983, 0x2984, 0x2985, 0x2986, 0x2987, /* 0x2980 */
+ 0x2988, 0x2989, 0x298a, 0x298b, 0x298c, 0x298d, 0x298e, 0x298f,
+ 0x2990, 0x2991, 0x2992, 0x2993, 0x2994, 0x2995, 0x2996, 0x2997,
+ 0x2998, 0x2999, 0x299a, 0x299b, 0x299c, 0x299d, 0x299e, 0x299f,
+ 0x29a0, 0x29a1, 0x29a2, 0x29a3, 0x29a4, 0x29a5, 0x29a6, 0x29a7,
+ 0x29a8, 0x29a9, 0x29aa, 0x29ab, 0x29ac, 0x29ad, 0x29ae, 0x29af,
+ 0x29b0, 0x29b1, 0x29b2, 0x29b3, 0x29b4, 0x29b5, 0x29b6, 0x29b7,
+ 0x29b8, 0x29b9, 0x29ba, 0x29bb, 0x29bc, 0x29bd, 0x29be, 0x29bf,
+ 0x29c0, 0x29c1, 0x29c2, 0x29c3, 0x29c4, 0x29c5, 0x29c6, 0x29c7, /* 0x29c0 */
+ 0x29c8, 0x29c9, 0x29ca, 0x29cb, 0x29cc, 0x29cd, 0x29ce, 0x29cf,
+ 0x29d0, 0x29d1, 0x29d2, 0x29d3, 0x29d4, 0x29d5, 0x29d6, 0x29d7,
+ 0x29d8, 0x29d9, 0x29da, 0x29db, 0x29dc, 0x29dd, 0x29de, 0x29df,
+ 0x29e0, 0x29e1, 0x29e2, 0x29e3, 0x29e4, 0x29e5, 0x29e6, 0x29e7,
+ 0x29e8, 0x29e9, 0x29ea, 0x29eb, 0x29ec, 0x29ed, 0x29ee, 0x29ef,
+ 0x29f0, 0x29f1, 0x29f2, 0x29f3, 0x29f4, 0x29f5, 0x29f6, 0x29f7,
+ 0x29f8, 0x29f9, 0x29fa, 0x29fb, 0x29fc, 0x29fd, 0x29fe, 0x29ff,
+ 0x2a00, 0x2a01, 0x2a02, 0x2a03, 0x2a04, 0x2a05, 0x2a06, 0x2a07, /* 0x2a00 */
+ 0x2a08, 0x2a09, 0x2a0a, 0x2a0b, 0x2a0c, 0x2a0d, 0x2a0e, 0x2a0f,
+ 0x2a10, 0x2a11, 0x2a12, 0x2a13, 0x2a14, 0x2a15, 0x2a16, 0x2a17,
+ 0x2a18, 0x2a19, 0x2a1a, 0x2a1b, 0x2a1c, 0x2a1d, 0x2a1e, 0x2a1f,
+ 0x2a20, 0x2a21, 0x2a22, 0x2a23, 0x2a24, 0x2a25, 0x2a26, 0x2a27,
+ 0x2a28, 0x2a29, 0x2a2a, 0x2a2b, 0x2a2c, 0x2a2d, 0x2a2e, 0x2a2f,
+ 0x2a30, 0x2a31, 0x2a32, 0x2a33, 0x2a34, 0x2a35, 0x2a36, 0x2a37,
+ 0x2a38, 0x2a39, 0x2a3a, 0x2a3b, 0x2a3c, 0x2a3d, 0x2a3e, 0x2a3f,
+ 0x2a40, 0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, /* 0x2a40 */
+ 0x2a48, 0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f,
+ 0x2a50, 0x2a51, 0x2a52, 0x2a53, 0x2a54, 0x2a55, 0x2a56, 0x2a57,
+ 0x2a58, 0x2a59, 0x2a5a, 0x2a5b, 0x2a5c, 0x2a5d, 0x2a5e, 0x2a5f,
+ 0x2a60, 0x2a61, 0x2a62, 0x2a63, 0x2a64, 0x2a65, 0x2a66, 0x2a67,
+ 0x2a68, 0x2a69, 0x2a6a, 0x2a6b, 0x2a6c, 0x2a6d, 0x2a6e, 0x2a6f,
+ 0x2a70, 0x2a71, 0x2a72, 0x2a73, 0x2a74, 0x2a75, 0x2a76, 0x2a77,
+ 0x2a78, 0x2a79, 0x2a7a, 0x2a7b, 0x2a7c, 0x2a7d, 0x2a7e, 0x2a7f,
+ 0x2a80, 0x2a81, 0x2a82, 0x2a83, 0x2a84, 0x2a85, 0x2a86, 0x2a87, /* 0x2a80 */
+ 0x2a88, 0x2a89, 0x2a8a, 0x2a8b, 0x2a8c, 0x2a8d, 0x2a8e, 0x2a8f,
+ 0x2a90, 0x2a91, 0x2a92, 0x2a93, 0x2a94, 0x2a95, 0x2a96, 0x2a97,
+ 0x2a98, 0x2a99, 0x2a9a, 0x2a9b, 0x2a9c, 0x2a9d, 0x2a9e, 0x2a9f,
+ 0x2aa0, 0x2aa1, 0x2aa2, 0x2aa3, 0x2aa4, 0x2aa5, 0x2aa6, 0x2aa7,
+ 0x2aa8, 0x2aa9, 0x2aaa, 0x2aab, 0x2aac, 0x2aad, 0x2aae, 0x2aaf,
+ 0x2ab0, 0x2ab1, 0x2ab2, 0x2ab3, 0x2ab4, 0x2ab5, 0x2ab6, 0x2ab7,
+ 0x2ab8, 0x2ab9, 0x2aba, 0x2abb, 0x2abc, 0x2abd, 0x2abe, 0x2abf,
+ 0x2ac0, 0x2ac1, 0x2ac2, 0x2ac3, 0x2ac4, 0x2ac5, 0x2ac6, 0x2ac7, /* 0x2ac0 */
+ 0x2ac8, 0x2ac9, 0x2aca, 0x2acb, 0x2acc, 0x2acd, 0x2ace, 0x2acf,
+ 0x2ad0, 0x2ad1, 0x2ad2, 0x2ad3, 0x2ad4, 0x2ad5, 0x2ad6, 0x2ad7,
+ 0x2ad8, 0x2ad9, 0x2ada, 0x2adb, 0x2adc, 0x2add, 0x2ade, 0x2adf,
+ 0x2ae0, 0x2ae1, 0x2ae2, 0x2ae3, 0x2ae4, 0x2ae5, 0x2ae6, 0x2ae7,
+ 0x2ae8, 0x2ae9, 0x2aea, 0x2aeb, 0x2aec, 0x2aed, 0x2aee, 0x2aef,
+ 0x2af0, 0x2af1, 0x2af2, 0x2af3, 0x2af4, 0x2af5, 0x2af6, 0x2af7,
+ 0x2af8, 0x2af9, 0x2afa, 0x2afb, 0x2afc, 0x2afd, 0x2afe, 0x2aff,
+ 0x2b00, 0x2b01, 0x2b02, 0x2b03, 0x2b04, 0x2b05, 0x2b06, 0x2b07, /* 0x2b00 */
+ 0x2b08, 0x2b09, 0x2b0a, 0x2b0b, 0x2b0c, 0x2b0d, 0x2b0e, 0x2b0f,
+ 0x2b10, 0x2b11, 0x2b12, 0x2b13, 0x2b14, 0x2b15, 0x2b16, 0x2b17,
+ 0x2b18, 0x2b19, 0x2b1a, 0x2b1b, 0x2b1c, 0x2b1d, 0x2b1e, 0x2b1f,
+ 0x2b20, 0x2b21, 0x2b22, 0x2b23, 0x2b24, 0x2b25, 0x2b26, 0x2b27,
+ 0x2b28, 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e, 0x2b2f,
+ 0x2b30, 0x2b31, 0x2b32, 0x2b33, 0x2b34, 0x2b35, 0x2b36, 0x2b37,
+ 0x2b38, 0x2b39, 0x2b3a, 0x2b3b, 0x2b3c, 0x2b3d, 0x2b3e, 0x2b3f,
+ 0x2b40, 0x2b41, 0x2b42, 0x2b43, 0x2b44, 0x2b45, 0x2b46, 0x2b47, /* 0x2b40 */
+ 0x2b48, 0x2b49, 0x2b4a, 0x2b4b, 0x2b4c, 0x0000, 0x0000, 0x0000,
+ 0x2b50, 0x2b51, 0x2b52, 0x2b53, 0x2b54, 0x2b55, 0x2b56, 0x2b57,
+ 0x2b58, 0x2b59, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2b80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2bc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2c30, 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, /* 0x2c00 */
+ 0x2c38, 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f,
+ 0x2c40, 0x2c41, 0x2c42, 0x2c43, 0x2c44, 0x2c45, 0x2c46, 0x2c47,
+ 0x2c48, 0x2c49, 0x2c4a, 0x2c4b, 0x2c4c, 0x2c4d, 0x2c4e, 0x2c4f,
+ 0x2c50, 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c57,
+ 0x2c58, 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x0000,
+ 0x2c30, 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37,
+ 0x2c38, 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f,
+ 0x2c40, 0x2c41, 0x2c42, 0x2c43, 0x2c44, 0x2c45, 0x2c46, 0x2c47, /* 0x2c40 */
+ 0x2c48, 0x2c49, 0x2c4a, 0x2c4b, 0x2c4c, 0x2c4d, 0x2c4e, 0x2c4f,
+ 0x2c50, 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c57,
+ 0x2c58, 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x0000,
+ 0x2c61, 0x2c61, 0x026b, 0x1d7d, 0x027d, 0x2c65, 0x2c66, 0x2c68,
+ 0x2c68, 0x2c6a, 0x2c6a, 0x2c6c, 0x2c6c, 0x0251, 0x0271, 0x0250,
+ 0x0252, 0x2c71, 0x2c73, 0x2c73, 0x2c74, 0x2c76, 0x2c76, 0x2c77,
+ 0x2c78, 0x2c79, 0x2c7a, 0x2c7b, 0x2c7c, 0x2c7d, 0x023f, 0x0240,
+ 0x2c81, 0x2c81, 0x2c83, 0x2c83, 0x2c85, 0x2c85, 0x2c87, 0x2c87, /* 0x2c80 */
+ 0x2c89, 0x2c89, 0x2c8b, 0x2c8b, 0x2c8d, 0x2c8d, 0x2c8f, 0x2c8f,
+ 0x2c91, 0x2c91, 0x2c93, 0x2c93, 0x2c95, 0x2c95, 0x2c97, 0x2c97,
+ 0x2c99, 0x2c99, 0x2c9b, 0x2c9b, 0x2c9d, 0x2c9d, 0x2c9f, 0x2c9f,
+ 0x2ca1, 0x2ca1, 0x2ca3, 0x2ca3, 0x2ca5, 0x2ca5, 0x2ca7, 0x2ca7,
+ 0x2ca9, 0x2ca9, 0x2cab, 0x2cab, 0x2cad, 0x2cad, 0x2caf, 0x2caf,
+ 0x2cb1, 0x2cb1, 0x2cb3, 0x2cb3, 0x2cb5, 0x2cb5, 0x2cb7, 0x2cb7,
+ 0x2cb9, 0x2cb9, 0x2cbb, 0x2cbb, 0x2cbd, 0x2cbd, 0x2cbf, 0x2cbf,
+ 0x2cc1, 0x2cc1, 0x2cc3, 0x2cc3, 0x2cc5, 0x2cc5, 0x2cc7, 0x2cc7, /* 0x2cc0 */
+ 0x2cc9, 0x2cc9, 0x2ccb, 0x2ccb, 0x2ccd, 0x2ccd, 0x2ccf, 0x2ccf,
+ 0x2cd1, 0x2cd1, 0x2cd3, 0x2cd3, 0x2cd5, 0x2cd5, 0x2cd7, 0x2cd7,
+ 0x2cd9, 0x2cd9, 0x2cdb, 0x2cdb, 0x2cdd, 0x2cdd, 0x2cdf, 0x2cdf,
+ 0x2ce1, 0x2ce1, 0x2ce3, 0x2ce3, 0x2ce4, 0x2ce5, 0x2ce6, 0x2ce7,
+ 0x2ce8, 0x2ce9, 0x2cea, 0x2cec, 0x2cec, 0x2cee, 0x2cee, 0x2cef,
+ 0x2cf0, 0x2cf1, 0x2cf3, 0x2cf3, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2cf9, 0x2cfa, 0x2cfb, 0x2cfc, 0x2cfd, 0x2cfe, 0x2cff,
+ 0x2d00, 0x2d01, 0x2d02, 0x2d03, 0x2d04, 0x2d05, 0x2d06, 0x2d07, /* 0x2d00 */
+ 0x2d08, 0x2d09, 0x2d0a, 0x2d0b, 0x2d0c, 0x2d0d, 0x2d0e, 0x2d0f,
+ 0x2d10, 0x2d11, 0x2d12, 0x2d13, 0x2d14, 0x2d15, 0x2d16, 0x2d17,
+ 0x2d18, 0x2d19, 0x2d1a, 0x2d1b, 0x2d1c, 0x2d1d, 0x2d1e, 0x2d1f,
+ 0x2d20, 0x2d21, 0x2d22, 0x2d23, 0x2d24, 0x2d25, 0x0000, 0x2d27,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d2d, 0x0000, 0x0000,
+ 0x2d30, 0x2d31, 0x2d32, 0x2d33, 0x2d34, 0x2d35, 0x2d36, 0x2d37,
+ 0x2d38, 0x2d39, 0x2d3a, 0x2d3b, 0x2d3c, 0x2d3d, 0x2d3e, 0x2d3f,
+ 0x2d40, 0x2d41, 0x2d42, 0x2d43, 0x2d44, 0x2d45, 0x2d46, 0x2d47, /* 0x2d40 */
+ 0x2d48, 0x2d49, 0x2d4a, 0x2d4b, 0x2d4c, 0x2d4d, 0x2d4e, 0x2d4f,
+ 0x2d50, 0x2d51, 0x2d52, 0x2d53, 0x2d54, 0x2d55, 0x2d56, 0x2d57,
+ 0x2d58, 0x2d59, 0x2d5a, 0x2d5b, 0x2d5c, 0x2d5d, 0x2d5e, 0x2d5f,
+ 0x2d60, 0x2d61, 0x2d62, 0x2d63, 0x2d64, 0x2d65, 0x2d66, 0x2d67,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d6f,
+ 0x2d70, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d7f,
+ 0x2d80, 0x2d81, 0x2d82, 0x2d83, 0x2d84, 0x2d85, 0x2d86, 0x2d87, /* 0x2d80 */
+ 0x2d88, 0x2d89, 0x2d8a, 0x2d8b, 0x2d8c, 0x2d8d, 0x2d8e, 0x2d8f,
+ 0x2d90, 0x2d91, 0x2d92, 0x2d93, 0x2d94, 0x2d95, 0x2d96, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2da0, 0x2da1, 0x2da2, 0x2da3, 0x2da4, 0x2da5, 0x2da6, 0x0000,
+ 0x2da8, 0x2da9, 0x2daa, 0x2dab, 0x2dac, 0x2dad, 0x2dae, 0x0000,
+ 0x2db0, 0x2db1, 0x2db2, 0x2db3, 0x2db4, 0x2db5, 0x2db6, 0x0000,
+ 0x2db8, 0x2db9, 0x2dba, 0x2dbb, 0x2dbc, 0x2dbd, 0x2dbe, 0x0000,
+ 0x2dc0, 0x2dc1, 0x2dc2, 0x2dc3, 0x2dc4, 0x2dc5, 0x2dc6, 0x0000, /* 0x2dc0 */
+ 0x2dc8, 0x2dc9, 0x2dca, 0x2dcb, 0x2dcc, 0x2dcd, 0x2dce, 0x0000,
+ 0x2dd0, 0x2dd1, 0x2dd2, 0x2dd3, 0x2dd4, 0x2dd5, 0x2dd6, 0x0000,
+ 0x2dd8, 0x2dd9, 0x2dda, 0x2ddb, 0x2ddc, 0x2ddd, 0x2dde, 0x0000,
+ 0x2de0, 0x2de1, 0x2de2, 0x2de3, 0x2de4, 0x2de5, 0x2de6, 0x2de7,
+ 0x2de8, 0x2de9, 0x2dea, 0x2deb, 0x2dec, 0x2ded, 0x2dee, 0x2def,
+ 0x2df0, 0x2df1, 0x2df2, 0x2df3, 0x2df4, 0x2df5, 0x2df6, 0x2df7,
+ 0x2df8, 0x2df9, 0x2dfa, 0x2dfb, 0x2dfc, 0x2dfd, 0x2dfe, 0x2dff,
+ 0x2e00, 0x2e01, 0x2e02, 0x2e03, 0x2e04, 0x2e05, 0x2e06, 0x2e07, /* 0x2e00 */
+ 0x2e08, 0x2e09, 0x2e0a, 0x2e0b, 0x2e0c, 0x2e0d, 0x2e0e, 0x2e0f,
+ 0x2e10, 0x2e11, 0x2e12, 0x2e13, 0x2e14, 0x2e15, 0x2e16, 0x2e17,
+ 0x2e18, 0x2e19, 0x2e1a, 0x2e1b, 0x2e1c, 0x2e1d, 0x2e1e, 0x2e1f,
+ 0x2e20, 0x2e21, 0x2e22, 0x2e23, 0x2e24, 0x2e25, 0x2e26, 0x2e27,
+ 0x2e28, 0x2e29, 0x2e2a, 0x2e2b, 0x2e2c, 0x2e2d, 0x2e2e, 0x2e2f,
+ 0x2e30, 0x2e31, 0x2e32, 0x2e33, 0x2e34, 0x2e35, 0x2e36, 0x2e37,
+ 0x2e38, 0x2e39, 0x2e3a, 0x2e3b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2e40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2e80, 0x2e81, 0x2e82, 0x2e83, 0x2e84, 0x2e85, 0x2e86, 0x2e87, /* 0x2e80 */
+ 0x2e88, 0x2e89, 0x2e8a, 0x2e8b, 0x2e8c, 0x2e8d, 0x2e8e, 0x2e8f,
+ 0x2e90, 0x2e91, 0x2e92, 0x2e93, 0x2e94, 0x2e95, 0x2e96, 0x2e97,
+ 0x2e98, 0x2e99, 0x0000, 0x2e9b, 0x2e9c, 0x2e9d, 0x2e9e, 0x2e9f,
+ 0x2ea0, 0x2ea1, 0x2ea2, 0x2ea3, 0x2ea4, 0x2ea5, 0x2ea6, 0x2ea7,
+ 0x2ea8, 0x2ea9, 0x2eaa, 0x2eab, 0x2eac, 0x2ead, 0x2eae, 0x2eaf,
+ 0x2eb0, 0x2eb1, 0x2eb2, 0x2eb3, 0x2eb4, 0x2eb5, 0x2eb6, 0x2eb7,
+ 0x2eb8, 0x2eb9, 0x2eba, 0x2ebb, 0x2ebc, 0x2ebd, 0x2ebe, 0x2ebf,
+ 0x2ec0, 0x2ec1, 0x2ec2, 0x2ec3, 0x2ec4, 0x2ec5, 0x2ec6, 0x2ec7, /* 0x2ec0 */
+ 0x2ec8, 0x2ec9, 0x2eca, 0x2ecb, 0x2ecc, 0x2ecd, 0x2ece, 0x2ecf,
+ 0x2ed0, 0x2ed1, 0x2ed2, 0x2ed3, 0x2ed4, 0x2ed5, 0x2ed6, 0x2ed7,
+ 0x2ed8, 0x2ed9, 0x2eda, 0x2edb, 0x2edc, 0x2edd, 0x2ede, 0x2edf,
+ 0x2ee0, 0x2ee1, 0x2ee2, 0x2ee3, 0x2ee4, 0x2ee5, 0x2ee6, 0x2ee7,
+ 0x2ee8, 0x2ee9, 0x2eea, 0x2eeb, 0x2eec, 0x2eed, 0x2eee, 0x2eef,
+ 0x2ef0, 0x2ef1, 0x2ef2, 0x2ef3, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2f00, 0x2f01, 0x2f02, 0x2f03, 0x2f04, 0x2f05, 0x2f06, 0x2f07, /* 0x2f00 */
+ 0x2f08, 0x2f09, 0x2f0a, 0x2f0b, 0x2f0c, 0x2f0d, 0x2f0e, 0x2f0f,
+ 0x2f10, 0x2f11, 0x2f12, 0x2f13, 0x2f14, 0x2f15, 0x2f16, 0x2f17,
+ 0x2f18, 0x2f19, 0x2f1a, 0x2f1b, 0x2f1c, 0x2f1d, 0x2f1e, 0x2f1f,
+ 0x2f20, 0x2f21, 0x2f22, 0x2f23, 0x2f24, 0x2f25, 0x2f26, 0x2f27,
+ 0x2f28, 0x2f29, 0x2f2a, 0x2f2b, 0x2f2c, 0x2f2d, 0x2f2e, 0x2f2f,
+ 0x2f30, 0x2f31, 0x2f32, 0x2f33, 0x2f34, 0x2f35, 0x2f36, 0x2f37,
+ 0x2f38, 0x2f39, 0x2f3a, 0x2f3b, 0x2f3c, 0x2f3d, 0x2f3e, 0x2f3f,
+ 0x2f40, 0x2f41, 0x2f42, 0x2f43, 0x2f44, 0x2f45, 0x2f46, 0x2f47, /* 0x2f40 */
+ 0x2f48, 0x2f49, 0x2f4a, 0x2f4b, 0x2f4c, 0x2f4d, 0x2f4e, 0x2f4f,
+ 0x2f50, 0x2f51, 0x2f52, 0x2f53, 0x2f54, 0x2f55, 0x2f56, 0x2f57,
+ 0x2f58, 0x2f59, 0x2f5a, 0x2f5b, 0x2f5c, 0x2f5d, 0x2f5e, 0x2f5f,
+ 0x2f60, 0x2f61, 0x2f62, 0x2f63, 0x2f64, 0x2f65, 0x2f66, 0x2f67,
+ 0x2f68, 0x2f69, 0x2f6a, 0x2f6b, 0x2f6c, 0x2f6d, 0x2f6e, 0x2f6f,
+ 0x2f70, 0x2f71, 0x2f72, 0x2f73, 0x2f74, 0x2f75, 0x2f76, 0x2f77,
+ 0x2f78, 0x2f79, 0x2f7a, 0x2f7b, 0x2f7c, 0x2f7d, 0x2f7e, 0x2f7f,
+ 0x2f80, 0x2f81, 0x2f82, 0x2f83, 0x2f84, 0x2f85, 0x2f86, 0x2f87, /* 0x2f80 */
+ 0x2f88, 0x2f89, 0x2f8a, 0x2f8b, 0x2f8c, 0x2f8d, 0x2f8e, 0x2f8f,
+ 0x2f90, 0x2f91, 0x2f92, 0x2f93, 0x2f94, 0x2f95, 0x2f96, 0x2f97,
+ 0x2f98, 0x2f99, 0x2f9a, 0x2f9b, 0x2f9c, 0x2f9d, 0x2f9e, 0x2f9f,
+ 0x2fa0, 0x2fa1, 0x2fa2, 0x2fa3, 0x2fa4, 0x2fa5, 0x2fa6, 0x2fa7,
+ 0x2fa8, 0x2fa9, 0x2faa, 0x2fab, 0x2fac, 0x2fad, 0x2fae, 0x2faf,
+ 0x2fb0, 0x2fb1, 0x2fb2, 0x2fb3, 0x2fb4, 0x2fb5, 0x2fb6, 0x2fb7,
+ 0x2fb8, 0x2fb9, 0x2fba, 0x2fbb, 0x2fbc, 0x2fbd, 0x2fbe, 0x2fbf,
+ 0x2fc0, 0x2fc1, 0x2fc2, 0x2fc3, 0x2fc4, 0x2fc5, 0x2fc6, 0x2fc7, /* 0x2fc0 */
+ 0x2fc8, 0x2fc9, 0x2fca, 0x2fcb, 0x2fcc, 0x2fcd, 0x2fce, 0x2fcf,
+ 0x2fd0, 0x2fd1, 0x2fd2, 0x2fd3, 0x2fd4, 0x2fd5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2ff0, 0x2ff1, 0x2ff2, 0x2ff3, 0x2ff4, 0x2ff5, 0x2ff6, 0x2ff7,
+ 0x2ff8, 0x2ff9, 0x2ffa, 0x2ffb, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3000, 0x3001, 0x3002, 0x3003, 0x3004, 0x3005, 0x3006, 0x3007, /* 0x3000 */
+ 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e, 0x300f,
+ 0x3010, 0x3011, 0x3012, 0x3013, 0x3014, 0x3015, 0x3016, 0x3017,
+ 0x3018, 0x3019, 0x301a, 0x301b, 0x301c, 0x301d, 0x301e, 0x301f,
+ 0x3020, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
+ 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e, 0x302f,
+ 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036, 0x3037,
+ 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e, 0x303f,
+ 0x0000, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, /* 0x3040 */
+ 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f,
+ 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057,
+ 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f,
+ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
+ 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
+ 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077,
+ 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f,
+ 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, /* 0x3080 */
+ 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f,
+ 0x3090, 0x3091, 0x3092, 0x3093, 0x3094, 0x3095, 0x3096, 0x0000,
+ 0x0000, 0x3099, 0x309a, 0x309b, 0x309c, 0x309d, 0x309e, 0x309f,
+ 0x30a0, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
+ 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
+ 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
+ 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
+ 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, /* 0x30c0 */
+ 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
+ 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
+ 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
+ 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
+ 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef,
+ 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x30f7,
+ 0x30f8, 0x30f9, 0x30fa, 0x30fb, 0x30fc, 0x30fd, 0x30fe, 0x30ff,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3105, 0x3106, 0x3107, /* 0x3100 */
+ 0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f,
+ 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117,
+ 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f,
+ 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127,
+ 0x3128, 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x0000, 0x0000,
+ 0x0000, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137,
+ 0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f,
+ 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, /* 0x3140 */
+ 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f,
+ 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157,
+ 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f,
+ 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167,
+ 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f,
+ 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177,
+ 0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x317f,
+ 0x3180, 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, 0x3187, /* 0x3180 */
+ 0x3188, 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e, 0x0000,
+ 0x3190, 0x3191, 0x3192, 0x3193, 0x3194, 0x3195, 0x3196, 0x3197,
+ 0x3198, 0x3199, 0x319a, 0x319b, 0x319c, 0x319d, 0x319e, 0x319f,
+ 0x31a0, 0x31a1, 0x31a2, 0x31a3, 0x31a4, 0x31a5, 0x31a6, 0x31a7,
+ 0x31a8, 0x31a9, 0x31aa, 0x31ab, 0x31ac, 0x31ad, 0x31ae, 0x31af,
+ 0x31b0, 0x31b1, 0x31b2, 0x31b3, 0x31b4, 0x31b5, 0x31b6, 0x31b7,
+ 0x31b8, 0x31b9, 0x31ba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x31c0, 0x31c1, 0x31c2, 0x31c3, 0x31c4, 0x31c5, 0x31c6, 0x31c7, /* 0x31c0 */
+ 0x31c8, 0x31c9, 0x31ca, 0x31cb, 0x31cc, 0x31cd, 0x31ce, 0x31cf,
+ 0x31d0, 0x31d1, 0x31d2, 0x31d3, 0x31d4, 0x31d5, 0x31d6, 0x31d7,
+ 0x31d8, 0x31d9, 0x31da, 0x31db, 0x31dc, 0x31dd, 0x31de, 0x31df,
+ 0x31e0, 0x31e1, 0x31e2, 0x31e3, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x31f0, 0x31f1, 0x31f2, 0x31f3, 0x31f4, 0x31f5, 0x31f6, 0x31f7,
+ 0x31f8, 0x31f9, 0x31fa, 0x31fb, 0x31fc, 0x31fd, 0x31fe, 0x31ff,
+ 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207, /* 0x3200 */
+ 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f,
+ 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217,
+ 0x3218, 0x3219, 0x321a, 0x321b, 0x321c, 0x321d, 0x321e, 0x0000,
+ 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227,
+ 0x3228, 0x3229, 0x322a, 0x322b, 0x322c, 0x322d, 0x322e, 0x322f,
+ 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x3236, 0x3237,
+ 0x3238, 0x3239, 0x323a, 0x323b, 0x323c, 0x323d, 0x323e, 0x323f,
+ 0x3240, 0x3241, 0x3242, 0x3243, 0x3244, 0x3245, 0x3246, 0x3247, /* 0x3240 */
+ 0x3248, 0x3249, 0x324a, 0x324b, 0x324c, 0x324d, 0x324e, 0x324f,
+ 0x3250, 0x3251, 0x3252, 0x3253, 0x3254, 0x3255, 0x3256, 0x3257,
+ 0x3258, 0x3259, 0x325a, 0x325b, 0x325c, 0x325d, 0x325e, 0x325f,
+ 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266, 0x3267,
+ 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e, 0x326f,
+ 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, 0x3277,
+ 0x3278, 0x3279, 0x327a, 0x327b, 0x327c, 0x327d, 0x327e, 0x327f,
+ 0x3280, 0x3281, 0x3282, 0x3283, 0x3284, 0x3285, 0x3286, 0x3287, /* 0x3280 */
+ 0x3288, 0x3289, 0x328a, 0x328b, 0x328c, 0x328d, 0x328e, 0x328f,
+ 0x3290, 0x3291, 0x3292, 0x3293, 0x3294, 0x3295, 0x3296, 0x3297,
+ 0x3298, 0x3299, 0x329a, 0x329b, 0x329c, 0x329d, 0x329e, 0x329f,
+ 0x32a0, 0x32a1, 0x32a2, 0x32a3, 0x32a4, 0x32a5, 0x32a6, 0x32a7,
+ 0x32a8, 0x32a9, 0x32aa, 0x32ab, 0x32ac, 0x32ad, 0x32ae, 0x32af,
+ 0x32b0, 0x32b1, 0x32b2, 0x32b3, 0x32b4, 0x32b5, 0x32b6, 0x32b7,
+ 0x32b8, 0x32b9, 0x32ba, 0x32bb, 0x32bc, 0x32bd, 0x32be, 0x32bf,
+ 0x32c0, 0x32c1, 0x32c2, 0x32c3, 0x32c4, 0x32c5, 0x32c6, 0x32c7, /* 0x32c0 */
+ 0x32c8, 0x32c9, 0x32ca, 0x32cb, 0x32cc, 0x32cd, 0x32ce, 0x32cf,
+ 0x32d0, 0x32d1, 0x32d2, 0x32d3, 0x32d4, 0x32d5, 0x32d6, 0x32d7,
+ 0x32d8, 0x32d9, 0x32da, 0x32db, 0x32dc, 0x32dd, 0x32de, 0x32df,
+ 0x32e0, 0x32e1, 0x32e2, 0x32e3, 0x32e4, 0x32e5, 0x32e6, 0x32e7,
+ 0x32e8, 0x32e9, 0x32ea, 0x32eb, 0x32ec, 0x32ed, 0x32ee, 0x32ef,
+ 0x32f0, 0x32f1, 0x32f2, 0x32f3, 0x32f4, 0x32f5, 0x32f6, 0x32f7,
+ 0x32f8, 0x32f9, 0x32fa, 0x32fb, 0x32fc, 0x32fd, 0x32fe, 0x0000,
+ 0x3300, 0x3301, 0x3302, 0x3303, 0x3304, 0x3305, 0x3306, 0x3307, /* 0x3300 */
+ 0x3308, 0x3309, 0x330a, 0x330b, 0x330c, 0x330d, 0x330e, 0x330f,
+ 0x3310, 0x3311, 0x3312, 0x3313, 0x3314, 0x3315, 0x3316, 0x3317,
+ 0x3318, 0x3319, 0x331a, 0x331b, 0x331c, 0x331d, 0x331e, 0x331f,
+ 0x3320, 0x3321, 0x3322, 0x3323, 0x3324, 0x3325, 0x3326, 0x3327,
+ 0x3328, 0x3329, 0x332a, 0x332b, 0x332c, 0x332d, 0x332e, 0x332f,
+ 0x3330, 0x3331, 0x3332, 0x3333, 0x3334, 0x3335, 0x3336, 0x3337,
+ 0x3338, 0x3339, 0x333a, 0x333b, 0x333c, 0x333d, 0x333e, 0x333f,
+ 0x3340, 0x3341, 0x3342, 0x3343, 0x3344, 0x3345, 0x3346, 0x3347, /* 0x3340 */
+ 0x3348, 0x3349, 0x334a, 0x334b, 0x334c, 0x334d, 0x334e, 0x334f,
+ 0x3350, 0x3351, 0x3352, 0x3353, 0x3354, 0x3355, 0x3356, 0x3357,
+ 0x3358, 0x3359, 0x335a, 0x335b, 0x335c, 0x335d, 0x335e, 0x335f,
+ 0x3360, 0x3361, 0x3362, 0x3363, 0x3364, 0x3365, 0x3366, 0x3367,
+ 0x3368, 0x3369, 0x336a, 0x336b, 0x336c, 0x336d, 0x336e, 0x336f,
+ 0x3370, 0x3371, 0x3372, 0x3373, 0x3374, 0x3375, 0x3376, 0x3377,
+ 0x3378, 0x3379, 0x337a, 0x337b, 0x337c, 0x337d, 0x337e, 0x337f,
+ 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x3385, 0x3386, 0x3387, /* 0x3380 */
+ 0x3388, 0x3389, 0x338a, 0x338b, 0x338c, 0x338d, 0x338e, 0x338f,
+ 0x3390, 0x3391, 0x3392, 0x3393, 0x3394, 0x3395, 0x3396, 0x3397,
+ 0x3398, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d, 0x339e, 0x339f,
+ 0x33a0, 0x33a1, 0x33a2, 0x33a3, 0x33a4, 0x33a5, 0x33a6, 0x33a7,
+ 0x33a8, 0x33a9, 0x33aa, 0x33ab, 0x33ac, 0x33ad, 0x33ae, 0x33af,
+ 0x33b0, 0x33b1, 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7,
+ 0x33b8, 0x33b9, 0x33ba, 0x33bb, 0x33bc, 0x33bd, 0x33be, 0x33bf,
+ 0x33c0, 0x33c1, 0x33c2, 0x33c3, 0x33c4, 0x33c5, 0x33c6, 0x33c7, /* 0x33c0 */
+ 0x33c8, 0x33c9, 0x33ca, 0x33cb, 0x33cc, 0x33cd, 0x33ce, 0x33cf,
+ 0x33d0, 0x33d1, 0x33d2, 0x33d3, 0x33d4, 0x33d5, 0x33d6, 0x33d7,
+ 0x33d8, 0x33d9, 0x33da, 0x33db, 0x33dc, 0x33dd, 0x33de, 0x33df,
+ 0x33e0, 0x33e1, 0x33e2, 0x33e3, 0x33e4, 0x33e5, 0x33e6, 0x33e7,
+ 0x33e8, 0x33e9, 0x33ea, 0x33eb, 0x33ec, 0x33ed, 0x33ee, 0x33ef,
+ 0x33f0, 0x33f1, 0x33f2, 0x33f3, 0x33f4, 0x33f5, 0x33f6, 0x33f7,
+ 0x33f8, 0x33f9, 0x33fa, 0x33fb, 0x33fc, 0x33fd, 0x33fe, 0x33ff,
+ 0x3400, 0x3401, 0x3402, 0x3403, 0x3404, 0x3405, 0x3406, 0x3407, /* 0x3400 */
+ 0x3408, 0x3409, 0x340a, 0x340b, 0x340c, 0x340d, 0x340e, 0x340f,
+ 0x3410, 0x3411, 0x3412, 0x3413, 0x3414, 0x3415, 0x3416, 0x3417,
+ 0x3418, 0x3419, 0x341a, 0x341b, 0x341c, 0x341d, 0x341e, 0x341f,
+ 0x3420, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426, 0x3427,
+ 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e, 0x342f,
+ 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436, 0x3437,
+ 0x3438, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e, 0x343f,
+ 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446, 0x3447, /* 0x3440 */
+ 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e, 0x344f,
+ 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456, 0x3457,
+ 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e, 0x345f,
+ 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466, 0x3467,
+ 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e, 0x346f,
+ 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476, 0x3477,
+ 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e, 0x347f,
+ 0x3480, 0x3481, 0x3482, 0x3483, 0x3484, 0x3485, 0x3486, 0x3487, /* 0x3480 */
+ 0x3488, 0x3489, 0x348a, 0x348b, 0x348c, 0x348d, 0x348e, 0x348f,
+ 0x3490, 0x3491, 0x3492, 0x3493, 0x3494, 0x3495, 0x3496, 0x3497,
+ 0x3498, 0x3499, 0x349a, 0x349b, 0x349c, 0x349d, 0x349e, 0x349f,
+ 0x34a0, 0x34a1, 0x34a2, 0x34a3, 0x34a4, 0x34a5, 0x34a6, 0x34a7,
+ 0x34a8, 0x34a9, 0x34aa, 0x34ab, 0x34ac, 0x34ad, 0x34ae, 0x34af,
+ 0x34b0, 0x34b1, 0x34b2, 0x34b3, 0x34b4, 0x34b5, 0x34b6, 0x34b7,
+ 0x34b8, 0x34b9, 0x34ba, 0x34bb, 0x34bc, 0x34bd, 0x34be, 0x34bf,
+ 0x34c0, 0x34c1, 0x34c2, 0x34c3, 0x34c4, 0x34c5, 0x34c6, 0x34c7, /* 0x34c0 */
+ 0x34c8, 0x34c9, 0x34ca, 0x34cb, 0x34cc, 0x34cd, 0x34ce, 0x34cf,
+ 0x34d0, 0x34d1, 0x34d2, 0x34d3, 0x34d4, 0x34d5, 0x34d6, 0x34d7,
+ 0x34d8, 0x34d9, 0x34da, 0x34db, 0x34dc, 0x34dd, 0x34de, 0x34df,
+ 0x34e0, 0x34e1, 0x34e2, 0x34e3, 0x34e4, 0x34e5, 0x34e6, 0x34e7,
+ 0x34e8, 0x34e9, 0x34ea, 0x34eb, 0x34ec, 0x34ed, 0x34ee, 0x34ef,
+ 0x34f0, 0x34f1, 0x34f2, 0x34f3, 0x34f4, 0x34f5, 0x34f6, 0x34f7,
+ 0x34f8, 0x34f9, 0x34fa, 0x34fb, 0x34fc, 0x34fd, 0x34fe, 0x34ff,
+ 0x3500, 0x3501, 0x3502, 0x3503, 0x3504, 0x3505, 0x3506, 0x3507, /* 0x3500 */
+ 0x3508, 0x3509, 0x350a, 0x350b, 0x350c, 0x350d, 0x350e, 0x350f,
+ 0x3510, 0x3511, 0x3512, 0x3513, 0x3514, 0x3515, 0x3516, 0x3517,
+ 0x3518, 0x3519, 0x351a, 0x351b, 0x351c, 0x351d, 0x351e, 0x351f,
+ 0x3520, 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527,
+ 0x3528, 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f,
+ 0x3530, 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537,
+ 0x3538, 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f,
+ 0x3540, 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, /* 0x3540 */
+ 0x3548, 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f,
+ 0x3550, 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557,
+ 0x3558, 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f,
+ 0x3560, 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567,
+ 0x3568, 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f,
+ 0x3570, 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577,
+ 0x3578, 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x357f,
+ 0x3580, 0x3581, 0x3582, 0x3583, 0x3584, 0x3585, 0x3586, 0x3587, /* 0x3580 */
+ 0x3588, 0x3589, 0x358a, 0x358b, 0x358c, 0x358d, 0x358e, 0x358f,
+ 0x3590, 0x3591, 0x3592, 0x3593, 0x3594, 0x3595, 0x3596, 0x3597,
+ 0x3598, 0x3599, 0x359a, 0x359b, 0x359c, 0x359d, 0x359e, 0x359f,
+ 0x35a0, 0x35a1, 0x35a2, 0x35a3, 0x35a4, 0x35a5, 0x35a6, 0x35a7,
+ 0x35a8, 0x35a9, 0x35aa, 0x35ab, 0x35ac, 0x35ad, 0x35ae, 0x35af,
+ 0x35b0, 0x35b1, 0x35b2, 0x35b3, 0x35b4, 0x35b5, 0x35b6, 0x35b7,
+ 0x35b8, 0x35b9, 0x35ba, 0x35bb, 0x35bc, 0x35bd, 0x35be, 0x35bf,
+ 0x35c0, 0x35c1, 0x35c2, 0x35c3, 0x35c4, 0x35c5, 0x35c6, 0x35c7, /* 0x35c0 */
+ 0x35c8, 0x35c9, 0x35ca, 0x35cb, 0x35cc, 0x35cd, 0x35ce, 0x35cf,
+ 0x35d0, 0x35d1, 0x35d2, 0x35d3, 0x35d4, 0x35d5, 0x35d6, 0x35d7,
+ 0x35d8, 0x35d9, 0x35da, 0x35db, 0x35dc, 0x35dd, 0x35de, 0x35df,
+ 0x35e0, 0x35e1, 0x35e2, 0x35e3, 0x35e4, 0x35e5, 0x35e6, 0x35e7,
+ 0x35e8, 0x35e9, 0x35ea, 0x35eb, 0x35ec, 0x35ed, 0x35ee, 0x35ef,
+ 0x35f0, 0x35f1, 0x35f2, 0x35f3, 0x35f4, 0x35f5, 0x35f6, 0x35f7,
+ 0x35f8, 0x35f9, 0x35fa, 0x35fb, 0x35fc, 0x35fd, 0x35fe, 0x35ff,
+ 0x3600, 0x3601, 0x3602, 0x3603, 0x3604, 0x3605, 0x3606, 0x3607, /* 0x3600 */
+ 0x3608, 0x3609, 0x360a, 0x360b, 0x360c, 0x360d, 0x360e, 0x360f,
+ 0x3610, 0x3611, 0x3612, 0x3613, 0x3614, 0x3615, 0x3616, 0x3617,
+ 0x3618, 0x3619, 0x361a, 0x361b, 0x361c, 0x361d, 0x361e, 0x361f,
+ 0x3620, 0x3621, 0x3622, 0x3623, 0x3624, 0x3625, 0x3626, 0x3627,
+ 0x3628, 0x3629, 0x362a, 0x362b, 0x362c, 0x362d, 0x362e, 0x362f,
+ 0x3630, 0x3631, 0x3632, 0x3633, 0x3634, 0x3635, 0x3636, 0x3637,
+ 0x3638, 0x3639, 0x363a, 0x363b, 0x363c, 0x363d, 0x363e, 0x363f,
+ 0x3640, 0x3641, 0x3642, 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, /* 0x3640 */
+ 0x3648, 0x3649, 0x364a, 0x364b, 0x364c, 0x364d, 0x364e, 0x364f,
+ 0x3650, 0x3651, 0x3652, 0x3653, 0x3654, 0x3655, 0x3656, 0x3657,
+ 0x3658, 0x3659, 0x365a, 0x365b, 0x365c, 0x365d, 0x365e, 0x365f,
+ 0x3660, 0x3661, 0x3662, 0x3663, 0x3664, 0x3665, 0x3666, 0x3667,
+ 0x3668, 0x3669, 0x366a, 0x366b, 0x366c, 0x366d, 0x366e, 0x366f,
+ 0x3670, 0x3671, 0x3672, 0x3673, 0x3674, 0x3675, 0x3676, 0x3677,
+ 0x3678, 0x3679, 0x367a, 0x367b, 0x367c, 0x367d, 0x367e, 0x367f,
+ 0x3680, 0x3681, 0x3682, 0x3683, 0x3684, 0x3685, 0x3686, 0x3687, /* 0x3680 */
+ 0x3688, 0x3689, 0x368a, 0x368b, 0x368c, 0x368d, 0x368e, 0x368f,
+ 0x3690, 0x3691, 0x3692, 0x3693, 0x3694, 0x3695, 0x3696, 0x3697,
+ 0x3698, 0x3699, 0x369a, 0x369b, 0x369c, 0x369d, 0x369e, 0x369f,
+ 0x36a0, 0x36a1, 0x36a2, 0x36a3, 0x36a4, 0x36a5, 0x36a6, 0x36a7,
+ 0x36a8, 0x36a9, 0x36aa, 0x36ab, 0x36ac, 0x36ad, 0x36ae, 0x36af,
+ 0x36b0, 0x36b1, 0x36b2, 0x36b3, 0x36b4, 0x36b5, 0x36b6, 0x36b7,
+ 0x36b8, 0x36b9, 0x36ba, 0x36bb, 0x36bc, 0x36bd, 0x36be, 0x36bf,
+ 0x36c0, 0x36c1, 0x36c2, 0x36c3, 0x36c4, 0x36c5, 0x36c6, 0x36c7, /* 0x36c0 */
+ 0x36c8, 0x36c9, 0x36ca, 0x36cb, 0x36cc, 0x36cd, 0x36ce, 0x36cf,
+ 0x36d0, 0x36d1, 0x36d2, 0x36d3, 0x36d4, 0x36d5, 0x36d6, 0x36d7,
+ 0x36d8, 0x36d9, 0x36da, 0x36db, 0x36dc, 0x36dd, 0x36de, 0x36df,
+ 0x36e0, 0x36e1, 0x36e2, 0x36e3, 0x36e4, 0x36e5, 0x36e6, 0x36e7,
+ 0x36e8, 0x36e9, 0x36ea, 0x36eb, 0x36ec, 0x36ed, 0x36ee, 0x36ef,
+ 0x36f0, 0x36f1, 0x36f2, 0x36f3, 0x36f4, 0x36f5, 0x36f6, 0x36f7,
+ 0x36f8, 0x36f9, 0x36fa, 0x36fb, 0x36fc, 0x36fd, 0x36fe, 0x36ff,
+ 0x3700, 0x3701, 0x3702, 0x3703, 0x3704, 0x3705, 0x3706, 0x3707, /* 0x3700 */
+ 0x3708, 0x3709, 0x370a, 0x370b, 0x370c, 0x370d, 0x370e, 0x370f,
+ 0x3710, 0x3711, 0x3712, 0x3713, 0x3714, 0x3715, 0x3716, 0x3717,
+ 0x3718, 0x3719, 0x371a, 0x371b, 0x371c, 0x371d, 0x371e, 0x371f,
+ 0x3720, 0x3721, 0x3722, 0x3723, 0x3724, 0x3725, 0x3726, 0x3727,
+ 0x3728, 0x3729, 0x372a, 0x372b, 0x372c, 0x372d, 0x372e, 0x372f,
+ 0x3730, 0x3731, 0x3732, 0x3733, 0x3734, 0x3735, 0x3736, 0x3737,
+ 0x3738, 0x3739, 0x373a, 0x373b, 0x373c, 0x373d, 0x373e, 0x373f,
+ 0x3740, 0x3741, 0x3742, 0x3743, 0x3744, 0x3745, 0x3746, 0x3747, /* 0x3740 */
+ 0x3748, 0x3749, 0x374a, 0x374b, 0x374c, 0x374d, 0x374e, 0x374f,
+ 0x3750, 0x3751, 0x3752, 0x3753, 0x3754, 0x3755, 0x3756, 0x3757,
+ 0x3758, 0x3759, 0x375a, 0x375b, 0x375c, 0x375d, 0x375e, 0x375f,
+ 0x3760, 0x3761, 0x3762, 0x3763, 0x3764, 0x3765, 0x3766, 0x3767,
+ 0x3768, 0x3769, 0x376a, 0x376b, 0x376c, 0x376d, 0x376e, 0x376f,
+ 0x3770, 0x3771, 0x3772, 0x3773, 0x3774, 0x3775, 0x3776, 0x3777,
+ 0x3778, 0x3779, 0x377a, 0x377b, 0x377c, 0x377d, 0x377e, 0x377f,
+ 0x3780, 0x3781, 0x3782, 0x3783, 0x3784, 0x3785, 0x3786, 0x3787, /* 0x3780 */
+ 0x3788, 0x3789, 0x378a, 0x378b, 0x378c, 0x378d, 0x378e, 0x378f,
+ 0x3790, 0x3791, 0x3792, 0x3793, 0x3794, 0x3795, 0x3796, 0x3797,
+ 0x3798, 0x3799, 0x379a, 0x379b, 0x379c, 0x379d, 0x379e, 0x379f,
+ 0x37a0, 0x37a1, 0x37a2, 0x37a3, 0x37a4, 0x37a5, 0x37a6, 0x37a7,
+ 0x37a8, 0x37a9, 0x37aa, 0x37ab, 0x37ac, 0x37ad, 0x37ae, 0x37af,
+ 0x37b0, 0x37b1, 0x37b2, 0x37b3, 0x37b4, 0x37b5, 0x37b6, 0x37b7,
+ 0x37b8, 0x37b9, 0x37ba, 0x37bb, 0x37bc, 0x37bd, 0x37be, 0x37bf,
+ 0x37c0, 0x37c1, 0x37c2, 0x37c3, 0x37c4, 0x37c5, 0x37c6, 0x37c7, /* 0x37c0 */
+ 0x37c8, 0x37c9, 0x37ca, 0x37cb, 0x37cc, 0x37cd, 0x37ce, 0x37cf,
+ 0x37d0, 0x37d1, 0x37d2, 0x37d3, 0x37d4, 0x37d5, 0x37d6, 0x37d7,
+ 0x37d8, 0x37d9, 0x37da, 0x37db, 0x37dc, 0x37dd, 0x37de, 0x37df,
+ 0x37e0, 0x37e1, 0x37e2, 0x37e3, 0x37e4, 0x37e5, 0x37e6, 0x37e7,
+ 0x37e8, 0x37e9, 0x37ea, 0x37eb, 0x37ec, 0x37ed, 0x37ee, 0x37ef,
+ 0x37f0, 0x37f1, 0x37f2, 0x37f3, 0x37f4, 0x37f5, 0x37f6, 0x37f7,
+ 0x37f8, 0x37f9, 0x37fa, 0x37fb, 0x37fc, 0x37fd, 0x37fe, 0x37ff,
+ 0x3800, 0x3801, 0x3802, 0x3803, 0x3804, 0x3805, 0x3806, 0x3807, /* 0x3800 */
+ 0x3808, 0x3809, 0x380a, 0x380b, 0x380c, 0x380d, 0x380e, 0x380f,
+ 0x3810, 0x3811, 0x3812, 0x3813, 0x3814, 0x3815, 0x3816, 0x3817,
+ 0x3818, 0x3819, 0x381a, 0x381b, 0x381c, 0x381d, 0x381e, 0x381f,
+ 0x3820, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826, 0x3827,
+ 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e, 0x382f,
+ 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836, 0x3837,
+ 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e, 0x383f,
+ 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846, 0x3847, /* 0x3840 */
+ 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e, 0x384f,
+ 0x3850, 0x3851, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856, 0x3857,
+ 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e, 0x385f,
+ 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3866, 0x3867,
+ 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e, 0x386f,
+ 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877,
+ 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e, 0x387f,
+ 0x3880, 0x3881, 0x3882, 0x3883, 0x3884, 0x3885, 0x3886, 0x3887, /* 0x3880 */
+ 0x3888, 0x3889, 0x388a, 0x388b, 0x388c, 0x388d, 0x388e, 0x388f,
+ 0x3890, 0x3891, 0x3892, 0x3893, 0x3894, 0x3895, 0x3896, 0x3897,
+ 0x3898, 0x3899, 0x389a, 0x389b, 0x389c, 0x389d, 0x389e, 0x389f,
+ 0x38a0, 0x38a1, 0x38a2, 0x38a3, 0x38a4, 0x38a5, 0x38a6, 0x38a7,
+ 0x38a8, 0x38a9, 0x38aa, 0x38ab, 0x38ac, 0x38ad, 0x38ae, 0x38af,
+ 0x38b0, 0x38b1, 0x38b2, 0x38b3, 0x38b4, 0x38b5, 0x38b6, 0x38b7,
+ 0x38b8, 0x38b9, 0x38ba, 0x38bb, 0x38bc, 0x38bd, 0x38be, 0x38bf,
+ 0x38c0, 0x38c1, 0x38c2, 0x38c3, 0x38c4, 0x38c5, 0x38c6, 0x38c7, /* 0x38c0 */
+ 0x38c8, 0x38c9, 0x38ca, 0x38cb, 0x38cc, 0x38cd, 0x38ce, 0x38cf,
+ 0x38d0, 0x38d1, 0x38d2, 0x38d3, 0x38d4, 0x38d5, 0x38d6, 0x38d7,
+ 0x38d8, 0x38d9, 0x38da, 0x38db, 0x38dc, 0x38dd, 0x38de, 0x38df,
+ 0x38e0, 0x38e1, 0x38e2, 0x38e3, 0x38e4, 0x38e5, 0x38e6, 0x38e7,
+ 0x38e8, 0x38e9, 0x38ea, 0x38eb, 0x38ec, 0x38ed, 0x38ee, 0x38ef,
+ 0x38f0, 0x38f1, 0x38f2, 0x38f3, 0x38f4, 0x38f5, 0x38f6, 0x38f7,
+ 0x38f8, 0x38f9, 0x38fa, 0x38fb, 0x38fc, 0x38fd, 0x38fe, 0x38ff,
+ 0x3900, 0x3901, 0x3902, 0x3903, 0x3904, 0x3905, 0x3906, 0x3907, /* 0x3900 */
+ 0x3908, 0x3909, 0x390a, 0x390b, 0x390c, 0x390d, 0x390e, 0x390f,
+ 0x3910, 0x3911, 0x3912, 0x3913, 0x3914, 0x3915, 0x3916, 0x3917,
+ 0x3918, 0x3919, 0x391a, 0x391b, 0x391c, 0x391d, 0x391e, 0x391f,
+ 0x3920, 0x3921, 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927,
+ 0x3928, 0x3929, 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f,
+ 0x3930, 0x3931, 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937,
+ 0x3938, 0x3939, 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f,
+ 0x3940, 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, /* 0x3940 */
+ 0x3948, 0x3949, 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f,
+ 0x3950, 0x3951, 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957,
+ 0x3958, 0x3959, 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f,
+ 0x3960, 0x3961, 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967,
+ 0x3968, 0x3969, 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f,
+ 0x3970, 0x3971, 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977,
+ 0x3978, 0x3979, 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x397f,
+ 0x3980, 0x3981, 0x3982, 0x3983, 0x3984, 0x3985, 0x3986, 0x3987, /* 0x3980 */
+ 0x3988, 0x3989, 0x398a, 0x398b, 0x398c, 0x398d, 0x398e, 0x398f,
+ 0x3990, 0x3991, 0x3992, 0x3993, 0x3994, 0x3995, 0x3996, 0x3997,
+ 0x3998, 0x3999, 0x399a, 0x399b, 0x399c, 0x399d, 0x399e, 0x399f,
+ 0x39a0, 0x39a1, 0x39a2, 0x39a3, 0x39a4, 0x39a5, 0x39a6, 0x39a7,
+ 0x39a8, 0x39a9, 0x39aa, 0x39ab, 0x39ac, 0x39ad, 0x39ae, 0x39af,
+ 0x39b0, 0x39b1, 0x39b2, 0x39b3, 0x39b4, 0x39b5, 0x39b6, 0x39b7,
+ 0x39b8, 0x39b9, 0x39ba, 0x39bb, 0x39bc, 0x39bd, 0x39be, 0x39bf,
+ 0x39c0, 0x39c1, 0x39c2, 0x39c3, 0x39c4, 0x39c5, 0x39c6, 0x39c7, /* 0x39c0 */
+ 0x39c8, 0x39c9, 0x39ca, 0x39cb, 0x39cc, 0x39cd, 0x39ce, 0x39cf,
+ 0x39d0, 0x39d1, 0x39d2, 0x39d3, 0x39d4, 0x39d5, 0x39d6, 0x39d7,
+ 0x39d8, 0x39d9, 0x39da, 0x39db, 0x39dc, 0x39dd, 0x39de, 0x39df,
+ 0x39e0, 0x39e1, 0x39e2, 0x39e3, 0x39e4, 0x39e5, 0x39e6, 0x39e7,
+ 0x39e8, 0x39e9, 0x39ea, 0x39eb, 0x39ec, 0x39ed, 0x39ee, 0x39ef,
+ 0x39f0, 0x39f1, 0x39f2, 0x39f3, 0x39f4, 0x39f5, 0x39f6, 0x39f7,
+ 0x39f8, 0x39f9, 0x39fa, 0x39fb, 0x39fc, 0x39fd, 0x39fe, 0x39ff,
+ 0x3a00, 0x3a01, 0x3a02, 0x3a03, 0x3a04, 0x3a05, 0x3a06, 0x3a07, /* 0x3a00 */
+ 0x3a08, 0x3a09, 0x3a0a, 0x3a0b, 0x3a0c, 0x3a0d, 0x3a0e, 0x3a0f,
+ 0x3a10, 0x3a11, 0x3a12, 0x3a13, 0x3a14, 0x3a15, 0x3a16, 0x3a17,
+ 0x3a18, 0x3a19, 0x3a1a, 0x3a1b, 0x3a1c, 0x3a1d, 0x3a1e, 0x3a1f,
+ 0x3a20, 0x3a21, 0x3a22, 0x3a23, 0x3a24, 0x3a25, 0x3a26, 0x3a27,
+ 0x3a28, 0x3a29, 0x3a2a, 0x3a2b, 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f,
+ 0x3a30, 0x3a31, 0x3a32, 0x3a33, 0x3a34, 0x3a35, 0x3a36, 0x3a37,
+ 0x3a38, 0x3a39, 0x3a3a, 0x3a3b, 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f,
+ 0x3a40, 0x3a41, 0x3a42, 0x3a43, 0x3a44, 0x3a45, 0x3a46, 0x3a47, /* 0x3a40 */
+ 0x3a48, 0x3a49, 0x3a4a, 0x3a4b, 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f,
+ 0x3a50, 0x3a51, 0x3a52, 0x3a53, 0x3a54, 0x3a55, 0x3a56, 0x3a57,
+ 0x3a58, 0x3a59, 0x3a5a, 0x3a5b, 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f,
+ 0x3a60, 0x3a61, 0x3a62, 0x3a63, 0x3a64, 0x3a65, 0x3a66, 0x3a67,
+ 0x3a68, 0x3a69, 0x3a6a, 0x3a6b, 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f,
+ 0x3a70, 0x3a71, 0x3a72, 0x3a73, 0x3a74, 0x3a75, 0x3a76, 0x3a77,
+ 0x3a78, 0x3a79, 0x3a7a, 0x3a7b, 0x3a7c, 0x3a7d, 0x3a7e, 0x3a7f,
+ 0x3a80, 0x3a81, 0x3a82, 0x3a83, 0x3a84, 0x3a85, 0x3a86, 0x3a87, /* 0x3a80 */
+ 0x3a88, 0x3a89, 0x3a8a, 0x3a8b, 0x3a8c, 0x3a8d, 0x3a8e, 0x3a8f,
+ 0x3a90, 0x3a91, 0x3a92, 0x3a93, 0x3a94, 0x3a95, 0x3a96, 0x3a97,
+ 0x3a98, 0x3a99, 0x3a9a, 0x3a9b, 0x3a9c, 0x3a9d, 0x3a9e, 0x3a9f,
+ 0x3aa0, 0x3aa1, 0x3aa2, 0x3aa3, 0x3aa4, 0x3aa5, 0x3aa6, 0x3aa7,
+ 0x3aa8, 0x3aa9, 0x3aaa, 0x3aab, 0x3aac, 0x3aad, 0x3aae, 0x3aaf,
+ 0x3ab0, 0x3ab1, 0x3ab2, 0x3ab3, 0x3ab4, 0x3ab5, 0x3ab6, 0x3ab7,
+ 0x3ab8, 0x3ab9, 0x3aba, 0x3abb, 0x3abc, 0x3abd, 0x3abe, 0x3abf,
+ 0x3ac0, 0x3ac1, 0x3ac2, 0x3ac3, 0x3ac4, 0x3ac5, 0x3ac6, 0x3ac7, /* 0x3ac0 */
+ 0x3ac8, 0x3ac9, 0x3aca, 0x3acb, 0x3acc, 0x3acd, 0x3ace, 0x3acf,
+ 0x3ad0, 0x3ad1, 0x3ad2, 0x3ad3, 0x3ad4, 0x3ad5, 0x3ad6, 0x3ad7,
+ 0x3ad8, 0x3ad9, 0x3ada, 0x3adb, 0x3adc, 0x3add, 0x3ade, 0x3adf,
+ 0x3ae0, 0x3ae1, 0x3ae2, 0x3ae3, 0x3ae4, 0x3ae5, 0x3ae6, 0x3ae7,
+ 0x3ae8, 0x3ae9, 0x3aea, 0x3aeb, 0x3aec, 0x3aed, 0x3aee, 0x3aef,
+ 0x3af0, 0x3af1, 0x3af2, 0x3af3, 0x3af4, 0x3af5, 0x3af6, 0x3af7,
+ 0x3af8, 0x3af9, 0x3afa, 0x3afb, 0x3afc, 0x3afd, 0x3afe, 0x3aff,
+ 0x3b00, 0x3b01, 0x3b02, 0x3b03, 0x3b04, 0x3b05, 0x3b06, 0x3b07, /* 0x3b00 */
+ 0x3b08, 0x3b09, 0x3b0a, 0x3b0b, 0x3b0c, 0x3b0d, 0x3b0e, 0x3b0f,
+ 0x3b10, 0x3b11, 0x3b12, 0x3b13, 0x3b14, 0x3b15, 0x3b16, 0x3b17,
+ 0x3b18, 0x3b19, 0x3b1a, 0x3b1b, 0x3b1c, 0x3b1d, 0x3b1e, 0x3b1f,
+ 0x3b20, 0x3b21, 0x3b22, 0x3b23, 0x3b24, 0x3b25, 0x3b26, 0x3b27,
+ 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c, 0x3b2d, 0x3b2e, 0x3b2f,
+ 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34, 0x3b35, 0x3b36, 0x3b37,
+ 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3c, 0x3b3d, 0x3b3e, 0x3b3f,
+ 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44, 0x3b45, 0x3b46, 0x3b47, /* 0x3b40 */
+ 0x3b48, 0x3b49, 0x3b4a, 0x3b4b, 0x3b4c, 0x3b4d, 0x3b4e, 0x3b4f,
+ 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b54, 0x3b55, 0x3b56, 0x3b57,
+ 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c, 0x3b5d, 0x3b5e, 0x3b5f,
+ 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64, 0x3b65, 0x3b66, 0x3b67,
+ 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c, 0x3b6d, 0x3b6e, 0x3b6f,
+ 0x3b70, 0x3b71, 0x3b72, 0x3b73, 0x3b74, 0x3b75, 0x3b76, 0x3b77,
+ 0x3b78, 0x3b79, 0x3b7a, 0x3b7b, 0x3b7c, 0x3b7d, 0x3b7e, 0x3b7f,
+ 0x3b80, 0x3b81, 0x3b82, 0x3b83, 0x3b84, 0x3b85, 0x3b86, 0x3b87, /* 0x3b80 */
+ 0x3b88, 0x3b89, 0x3b8a, 0x3b8b, 0x3b8c, 0x3b8d, 0x3b8e, 0x3b8f,
+ 0x3b90, 0x3b91, 0x3b92, 0x3b93, 0x3b94, 0x3b95, 0x3b96, 0x3b97,
+ 0x3b98, 0x3b99, 0x3b9a, 0x3b9b, 0x3b9c, 0x3b9d, 0x3b9e, 0x3b9f,
+ 0x3ba0, 0x3ba1, 0x3ba2, 0x3ba3, 0x3ba4, 0x3ba5, 0x3ba6, 0x3ba7,
+ 0x3ba8, 0x3ba9, 0x3baa, 0x3bab, 0x3bac, 0x3bad, 0x3bae, 0x3baf,
+ 0x3bb0, 0x3bb1, 0x3bb2, 0x3bb3, 0x3bb4, 0x3bb5, 0x3bb6, 0x3bb7,
+ 0x3bb8, 0x3bb9, 0x3bba, 0x3bbb, 0x3bbc, 0x3bbd, 0x3bbe, 0x3bbf,
+ 0x3bc0, 0x3bc1, 0x3bc2, 0x3bc3, 0x3bc4, 0x3bc5, 0x3bc6, 0x3bc7, /* 0x3bc0 */
+ 0x3bc8, 0x3bc9, 0x3bca, 0x3bcb, 0x3bcc, 0x3bcd, 0x3bce, 0x3bcf,
+ 0x3bd0, 0x3bd1, 0x3bd2, 0x3bd3, 0x3bd4, 0x3bd5, 0x3bd6, 0x3bd7,
+ 0x3bd8, 0x3bd9, 0x3bda, 0x3bdb, 0x3bdc, 0x3bdd, 0x3bde, 0x3bdf,
+ 0x3be0, 0x3be1, 0x3be2, 0x3be3, 0x3be4, 0x3be5, 0x3be6, 0x3be7,
+ 0x3be8, 0x3be9, 0x3bea, 0x3beb, 0x3bec, 0x3bed, 0x3bee, 0x3bef,
+ 0x3bf0, 0x3bf1, 0x3bf2, 0x3bf3, 0x3bf4, 0x3bf5, 0x3bf6, 0x3bf7,
+ 0x3bf8, 0x3bf9, 0x3bfa, 0x3bfb, 0x3bfc, 0x3bfd, 0x3bfe, 0x3bff,
+ 0x3c00, 0x3c01, 0x3c02, 0x3c03, 0x3c04, 0x3c05, 0x3c06, 0x3c07, /* 0x3c00 */
+ 0x3c08, 0x3c09, 0x3c0a, 0x3c0b, 0x3c0c, 0x3c0d, 0x3c0e, 0x3c0f,
+ 0x3c10, 0x3c11, 0x3c12, 0x3c13, 0x3c14, 0x3c15, 0x3c16, 0x3c17,
+ 0x3c18, 0x3c19, 0x3c1a, 0x3c1b, 0x3c1c, 0x3c1d, 0x3c1e, 0x3c1f,
+ 0x3c20, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26, 0x3c27,
+ 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2d, 0x3c2e, 0x3c2f,
+ 0x3c30, 0x3c31, 0x3c32, 0x3c33, 0x3c34, 0x3c35, 0x3c36, 0x3c37,
+ 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e, 0x3c3f,
+ 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46, 0x3c47, /* 0x3c40 */
+ 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e, 0x3c4f,
+ 0x3c50, 0x3c51, 0x3c52, 0x3c53, 0x3c54, 0x3c55, 0x3c56, 0x3c57,
+ 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e, 0x3c5f,
+ 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66, 0x3c67,
+ 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e, 0x3c6f,
+ 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76, 0x3c77,
+ 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e, 0x3c7f,
+ 0x3c80, 0x3c81, 0x3c82, 0x3c83, 0x3c84, 0x3c85, 0x3c86, 0x3c87, /* 0x3c80 */
+ 0x3c88, 0x3c89, 0x3c8a, 0x3c8b, 0x3c8c, 0x3c8d, 0x3c8e, 0x3c8f,
+ 0x3c90, 0x3c91, 0x3c92, 0x3c93, 0x3c94, 0x3c95, 0x3c96, 0x3c97,
+ 0x3c98, 0x3c99, 0x3c9a, 0x3c9b, 0x3c9c, 0x3c9d, 0x3c9e, 0x3c9f,
+ 0x3ca0, 0x3ca1, 0x3ca2, 0x3ca3, 0x3ca4, 0x3ca5, 0x3ca6, 0x3ca7,
+ 0x3ca8, 0x3ca9, 0x3caa, 0x3cab, 0x3cac, 0x3cad, 0x3cae, 0x3caf,
+ 0x3cb0, 0x3cb1, 0x3cb2, 0x3cb3, 0x3cb4, 0x3cb5, 0x3cb6, 0x3cb7,
+ 0x3cb8, 0x3cb9, 0x3cba, 0x3cbb, 0x3cbc, 0x3cbd, 0x3cbe, 0x3cbf,
+ 0x3cc0, 0x3cc1, 0x3cc2, 0x3cc3, 0x3cc4, 0x3cc5, 0x3cc6, 0x3cc7, /* 0x3cc0 */
+ 0x3cc8, 0x3cc9, 0x3cca, 0x3ccb, 0x3ccc, 0x3ccd, 0x3cce, 0x3ccf,
+ 0x3cd0, 0x3cd1, 0x3cd2, 0x3cd3, 0x3cd4, 0x3cd5, 0x3cd6, 0x3cd7,
+ 0x3cd8, 0x3cd9, 0x3cda, 0x3cdb, 0x3cdc, 0x3cdd, 0x3cde, 0x3cdf,
+ 0x3ce0, 0x3ce1, 0x3ce2, 0x3ce3, 0x3ce4, 0x3ce5, 0x3ce6, 0x3ce7,
+ 0x3ce8, 0x3ce9, 0x3cea, 0x3ceb, 0x3cec, 0x3ced, 0x3cee, 0x3cef,
+ 0x3cf0, 0x3cf1, 0x3cf2, 0x3cf3, 0x3cf4, 0x3cf5, 0x3cf6, 0x3cf7,
+ 0x3cf8, 0x3cf9, 0x3cfa, 0x3cfb, 0x3cfc, 0x3cfd, 0x3cfe, 0x3cff,
+ 0x3d00, 0x3d01, 0x3d02, 0x3d03, 0x3d04, 0x3d05, 0x3d06, 0x3d07, /* 0x3d00 */
+ 0x3d08, 0x3d09, 0x3d0a, 0x3d0b, 0x3d0c, 0x3d0d, 0x3d0e, 0x3d0f,
+ 0x3d10, 0x3d11, 0x3d12, 0x3d13, 0x3d14, 0x3d15, 0x3d16, 0x3d17,
+ 0x3d18, 0x3d19, 0x3d1a, 0x3d1b, 0x3d1c, 0x3d1d, 0x3d1e, 0x3d1f,
+ 0x3d20, 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27,
+ 0x3d28, 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f,
+ 0x3d30, 0x3d31, 0x3d32, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37,
+ 0x3d38, 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f,
+ 0x3d40, 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, /* 0x3d40 */
+ 0x3d48, 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f,
+ 0x3d50, 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57,
+ 0x3d58, 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f,
+ 0x3d60, 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67,
+ 0x3d68, 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f,
+ 0x3d70, 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77,
+ 0x3d78, 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3d7f,
+ 0x3d80, 0x3d81, 0x3d82, 0x3d83, 0x3d84, 0x3d85, 0x3d86, 0x3d87, /* 0x3d80 */
+ 0x3d88, 0x3d89, 0x3d8a, 0x3d8b, 0x3d8c, 0x3d8d, 0x3d8e, 0x3d8f,
+ 0x3d90, 0x3d91, 0x3d92, 0x3d93, 0x3d94, 0x3d95, 0x3d96, 0x3d97,
+ 0x3d98, 0x3d99, 0x3d9a, 0x3d9b, 0x3d9c, 0x3d9d, 0x3d9e, 0x3d9f,
+ 0x3da0, 0x3da1, 0x3da2, 0x3da3, 0x3da4, 0x3da5, 0x3da6, 0x3da7,
+ 0x3da8, 0x3da9, 0x3daa, 0x3dab, 0x3dac, 0x3dad, 0x3dae, 0x3daf,
+ 0x3db0, 0x3db1, 0x3db2, 0x3db3, 0x3db4, 0x3db5, 0x3db6, 0x3db7,
+ 0x3db8, 0x3db9, 0x3dba, 0x3dbb, 0x3dbc, 0x3dbd, 0x3dbe, 0x3dbf,
+ 0x3dc0, 0x3dc1, 0x3dc2, 0x3dc3, 0x3dc4, 0x3dc5, 0x3dc6, 0x3dc7, /* 0x3dc0 */
+ 0x3dc8, 0x3dc9, 0x3dca, 0x3dcb, 0x3dcc, 0x3dcd, 0x3dce, 0x3dcf,
+ 0x3dd0, 0x3dd1, 0x3dd2, 0x3dd3, 0x3dd4, 0x3dd5, 0x3dd6, 0x3dd7,
+ 0x3dd8, 0x3dd9, 0x3dda, 0x3ddb, 0x3ddc, 0x3ddd, 0x3dde, 0x3ddf,
+ 0x3de0, 0x3de1, 0x3de2, 0x3de3, 0x3de4, 0x3de5, 0x3de6, 0x3de7,
+ 0x3de8, 0x3de9, 0x3dea, 0x3deb, 0x3dec, 0x3ded, 0x3dee, 0x3def,
+ 0x3df0, 0x3df1, 0x3df2, 0x3df3, 0x3df4, 0x3df5, 0x3df6, 0x3df7,
+ 0x3df8, 0x3df9, 0x3dfa, 0x3dfb, 0x3dfc, 0x3dfd, 0x3dfe, 0x3dff,
+ 0x3e00, 0x3e01, 0x3e02, 0x3e03, 0x3e04, 0x3e05, 0x3e06, 0x3e07, /* 0x3e00 */
+ 0x3e08, 0x3e09, 0x3e0a, 0x3e0b, 0x3e0c, 0x3e0d, 0x3e0e, 0x3e0f,
+ 0x3e10, 0x3e11, 0x3e12, 0x3e13, 0x3e14, 0x3e15, 0x3e16, 0x3e17,
+ 0x3e18, 0x3e19, 0x3e1a, 0x3e1b, 0x3e1c, 0x3e1d, 0x3e1e, 0x3e1f,
+ 0x3e20, 0x3e21, 0x3e22, 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27,
+ 0x3e28, 0x3e29, 0x3e2a, 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f,
+ 0x3e30, 0x3e31, 0x3e32, 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37,
+ 0x3e38, 0x3e39, 0x3e3a, 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f,
+ 0x3e40, 0x3e41, 0x3e42, 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, /* 0x3e40 */
+ 0x3e48, 0x3e49, 0x3e4a, 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f,
+ 0x3e50, 0x3e51, 0x3e52, 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57,
+ 0x3e58, 0x3e59, 0x3e5a, 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f,
+ 0x3e60, 0x3e61, 0x3e62, 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67,
+ 0x3e68, 0x3e69, 0x3e6a, 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f,
+ 0x3e70, 0x3e71, 0x3e72, 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77,
+ 0x3e78, 0x3e79, 0x3e7a, 0x3e7b, 0x3e7c, 0x3e7d, 0x3e7e, 0x3e7f,
+ 0x3e80, 0x3e81, 0x3e82, 0x3e83, 0x3e84, 0x3e85, 0x3e86, 0x3e87, /* 0x3e80 */
+ 0x3e88, 0x3e89, 0x3e8a, 0x3e8b, 0x3e8c, 0x3e8d, 0x3e8e, 0x3e8f,
+ 0x3e90, 0x3e91, 0x3e92, 0x3e93, 0x3e94, 0x3e95, 0x3e96, 0x3e97,
+ 0x3e98, 0x3e99, 0x3e9a, 0x3e9b, 0x3e9c, 0x3e9d, 0x3e9e, 0x3e9f,
+ 0x3ea0, 0x3ea1, 0x3ea2, 0x3ea3, 0x3ea4, 0x3ea5, 0x3ea6, 0x3ea7,
+ 0x3ea8, 0x3ea9, 0x3eaa, 0x3eab, 0x3eac, 0x3ead, 0x3eae, 0x3eaf,
+ 0x3eb0, 0x3eb1, 0x3eb2, 0x3eb3, 0x3eb4, 0x3eb5, 0x3eb6, 0x3eb7,
+ 0x3eb8, 0x3eb9, 0x3eba, 0x3ebb, 0x3ebc, 0x3ebd, 0x3ebe, 0x3ebf,
+ 0x3ec0, 0x3ec1, 0x3ec2, 0x3ec3, 0x3ec4, 0x3ec5, 0x3ec6, 0x3ec7, /* 0x3ec0 */
+ 0x3ec8, 0x3ec9, 0x3eca, 0x3ecb, 0x3ecc, 0x3ecd, 0x3ece, 0x3ecf,
+ 0x3ed0, 0x3ed1, 0x3ed2, 0x3ed3, 0x3ed4, 0x3ed5, 0x3ed6, 0x3ed7,
+ 0x3ed8, 0x3ed9, 0x3eda, 0x3edb, 0x3edc, 0x3edd, 0x3ede, 0x3edf,
+ 0x3ee0, 0x3ee1, 0x3ee2, 0x3ee3, 0x3ee4, 0x3ee5, 0x3ee6, 0x3ee7,
+ 0x3ee8, 0x3ee9, 0x3eea, 0x3eeb, 0x3eec, 0x3eed, 0x3eee, 0x3eef,
+ 0x3ef0, 0x3ef1, 0x3ef2, 0x3ef3, 0x3ef4, 0x3ef5, 0x3ef6, 0x3ef7,
+ 0x3ef8, 0x3ef9, 0x3efa, 0x3efb, 0x3efc, 0x3efd, 0x3efe, 0x3eff,
+ 0x3f00, 0x3f01, 0x3f02, 0x3f03, 0x3f04, 0x3f05, 0x3f06, 0x3f07, /* 0x3f00 */
+ 0x3f08, 0x3f09, 0x3f0a, 0x3f0b, 0x3f0c, 0x3f0d, 0x3f0e, 0x3f0f,
+ 0x3f10, 0x3f11, 0x3f12, 0x3f13, 0x3f14, 0x3f15, 0x3f16, 0x3f17,
+ 0x3f18, 0x3f19, 0x3f1a, 0x3f1b, 0x3f1c, 0x3f1d, 0x3f1e, 0x3f1f,
+ 0x3f20, 0x3f21, 0x3f22, 0x3f23, 0x3f24, 0x3f25, 0x3f26, 0x3f27,
+ 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c, 0x3f2d, 0x3f2e, 0x3f2f,
+ 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34, 0x3f35, 0x3f36, 0x3f37,
+ 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c, 0x3f3d, 0x3f3e, 0x3f3f,
+ 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44, 0x3f45, 0x3f46, 0x3f47, /* 0x3f40 */
+ 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c, 0x3f4d, 0x3f4e, 0x3f4f,
+ 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54, 0x3f55, 0x3f56, 0x3f57,
+ 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c, 0x3f5d, 0x3f5e, 0x3f5f,
+ 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64, 0x3f65, 0x3f66, 0x3f67,
+ 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c, 0x3f6d, 0x3f6e, 0x3f6f,
+ 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74, 0x3f75, 0x3f76, 0x3f77,
+ 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c, 0x3f7d, 0x3f7e, 0x3f7f,
+ 0x3f80, 0x3f81, 0x3f82, 0x3f83, 0x3f84, 0x3f85, 0x3f86, 0x3f87, /* 0x3f80 */
+ 0x3f88, 0x3f89, 0x3f8a, 0x3f8b, 0x3f8c, 0x3f8d, 0x3f8e, 0x3f8f,
+ 0x3f90, 0x3f91, 0x3f92, 0x3f93, 0x3f94, 0x3f95, 0x3f96, 0x3f97,
+ 0x3f98, 0x3f99, 0x3f9a, 0x3f9b, 0x3f9c, 0x3f9d, 0x3f9e, 0x3f9f,
+ 0x3fa0, 0x3fa1, 0x3fa2, 0x3fa3, 0x3fa4, 0x3fa5, 0x3fa6, 0x3fa7,
+ 0x3fa8, 0x3fa9, 0x3faa, 0x3fab, 0x3fac, 0x3fad, 0x3fae, 0x3faf,
+ 0x3fb0, 0x3fb1, 0x3fb2, 0x3fb3, 0x3fb4, 0x3fb5, 0x3fb6, 0x3fb7,
+ 0x3fb8, 0x3fb9, 0x3fba, 0x3fbb, 0x3fbc, 0x3fbd, 0x3fbe, 0x3fbf,
+ 0x3fc0, 0x3fc1, 0x3fc2, 0x3fc3, 0x3fc4, 0x3fc5, 0x3fc6, 0x3fc7, /* 0x3fc0 */
+ 0x3fc8, 0x3fc9, 0x3fca, 0x3fcb, 0x3fcc, 0x3fcd, 0x3fce, 0x3fcf,
+ 0x3fd0, 0x3fd1, 0x3fd2, 0x3fd3, 0x3fd4, 0x3fd5, 0x3fd6, 0x3fd7,
+ 0x3fd8, 0x3fd9, 0x3fda, 0x3fdb, 0x3fdc, 0x3fdd, 0x3fde, 0x3fdf,
+ 0x3fe0, 0x3fe1, 0x3fe2, 0x3fe3, 0x3fe4, 0x3fe5, 0x3fe6, 0x3fe7,
+ 0x3fe8, 0x3fe9, 0x3fea, 0x3feb, 0x3fec, 0x3fed, 0x3fee, 0x3fef,
+ 0x3ff0, 0x3ff1, 0x3ff2, 0x3ff3, 0x3ff4, 0x3ff5, 0x3ff6, 0x3ff7,
+ 0x3ff8, 0x3ff9, 0x3ffa, 0x3ffb, 0x3ffc, 0x3ffd, 0x3ffe, 0x3fff,
+ 0x4000, 0x4001, 0x4002, 0x4003, 0x4004, 0x4005, 0x4006, 0x4007, /* 0x4000 */
+ 0x4008, 0x4009, 0x400a, 0x400b, 0x400c, 0x400d, 0x400e, 0x400f,
+ 0x4010, 0x4011, 0x4012, 0x4013, 0x4014, 0x4015, 0x4016, 0x4017,
+ 0x4018, 0x4019, 0x401a, 0x401b, 0x401c, 0x401d, 0x401e, 0x401f,
+ 0x4020, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026, 0x4027,
+ 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e, 0x402f,
+ 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036, 0x4037,
+ 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e, 0x403f,
+ 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046, 0x4047, /* 0x4040 */
+ 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e, 0x404f,
+ 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056, 0x4057,
+ 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e, 0x405f,
+ 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066, 0x4067,
+ 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e, 0x406f,
+ 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076, 0x4077,
+ 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e, 0x407f,
+ 0x4080, 0x4081, 0x4082, 0x4083, 0x4084, 0x4085, 0x4086, 0x4087, /* 0x4080 */
+ 0x4088, 0x4089, 0x408a, 0x408b, 0x408c, 0x408d, 0x408e, 0x408f,
+ 0x4090, 0x4091, 0x4092, 0x4093, 0x4094, 0x4095, 0x4096, 0x4097,
+ 0x4098, 0x4099, 0x409a, 0x409b, 0x409c, 0x409d, 0x409e, 0x409f,
+ 0x40a0, 0x40a1, 0x40a2, 0x40a3, 0x40a4, 0x40a5, 0x40a6, 0x40a7,
+ 0x40a8, 0x40a9, 0x40aa, 0x40ab, 0x40ac, 0x40ad, 0x40ae, 0x40af,
+ 0x40b0, 0x40b1, 0x40b2, 0x40b3, 0x40b4, 0x40b5, 0x40b6, 0x40b7,
+ 0x40b8, 0x40b9, 0x40ba, 0x40bb, 0x40bc, 0x40bd, 0x40be, 0x40bf,
+ 0x40c0, 0x40c1, 0x40c2, 0x40c3, 0x40c4, 0x40c5, 0x40c6, 0x40c7, /* 0x40c0 */
+ 0x40c8, 0x40c9, 0x40ca, 0x40cb, 0x40cc, 0x40cd, 0x40ce, 0x40cf,
+ 0x40d0, 0x40d1, 0x40d2, 0x40d3, 0x40d4, 0x40d5, 0x40d6, 0x40d7,
+ 0x40d8, 0x40d9, 0x40da, 0x40db, 0x40dc, 0x40dd, 0x40de, 0x40df,
+ 0x40e0, 0x40e1, 0x40e2, 0x40e3, 0x40e4, 0x40e5, 0x40e6, 0x40e7,
+ 0x40e8, 0x40e9, 0x40ea, 0x40eb, 0x40ec, 0x40ed, 0x40ee, 0x40ef,
+ 0x40f0, 0x40f1, 0x40f2, 0x40f3, 0x40f4, 0x40f5, 0x40f6, 0x40f7,
+ 0x40f8, 0x40f9, 0x40fa, 0x40fb, 0x40fc, 0x40fd, 0x40fe, 0x40ff,
+ 0x4100, 0x4101, 0x4102, 0x4103, 0x4104, 0x4105, 0x4106, 0x4107, /* 0x4100 */
+ 0x4108, 0x4109, 0x410a, 0x410b, 0x410c, 0x410d, 0x410e, 0x410f,
+ 0x4110, 0x4111, 0x4112, 0x4113, 0x4114, 0x4115, 0x4116, 0x4117,
+ 0x4118, 0x4119, 0x411a, 0x411b, 0x411c, 0x411d, 0x411e, 0x411f,
+ 0x4120, 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127,
+ 0x4128, 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f,
+ 0x4130, 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137,
+ 0x4138, 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f,
+ 0x4140, 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, /* 0x4140 */
+ 0x4148, 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f,
+ 0x4150, 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157,
+ 0x4158, 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f,
+ 0x4160, 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167,
+ 0x4168, 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f,
+ 0x4170, 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177,
+ 0x4178, 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x417f,
+ 0x4180, 0x4181, 0x4182, 0x4183, 0x4184, 0x4185, 0x4186, 0x4187, /* 0x4180 */
+ 0x4188, 0x4189, 0x418a, 0x418b, 0x418c, 0x418d, 0x418e, 0x418f,
+ 0x4190, 0x4191, 0x4192, 0x4193, 0x4194, 0x4195, 0x4196, 0x4197,
+ 0x4198, 0x4199, 0x419a, 0x419b, 0x419c, 0x419d, 0x419e, 0x419f,
+ 0x41a0, 0x41a1, 0x41a2, 0x41a3, 0x41a4, 0x41a5, 0x41a6, 0x41a7,
+ 0x41a8, 0x41a9, 0x41aa, 0x41ab, 0x41ac, 0x41ad, 0x41ae, 0x41af,
+ 0x41b0, 0x41b1, 0x41b2, 0x41b3, 0x41b4, 0x41b5, 0x41b6, 0x41b7,
+ 0x41b8, 0x41b9, 0x41ba, 0x41bb, 0x41bc, 0x41bd, 0x41be, 0x41bf,
+ 0x41c0, 0x41c1, 0x41c2, 0x41c3, 0x41c4, 0x41c5, 0x41c6, 0x41c7, /* 0x41c0 */
+ 0x41c8, 0x41c9, 0x41ca, 0x41cb, 0x41cc, 0x41cd, 0x41ce, 0x41cf,
+ 0x41d0, 0x41d1, 0x41d2, 0x41d3, 0x41d4, 0x41d5, 0x41d6, 0x41d7,
+ 0x41d8, 0x41d9, 0x41da, 0x41db, 0x41dc, 0x41dd, 0x41de, 0x41df,
+ 0x41e0, 0x41e1, 0x41e2, 0x41e3, 0x41e4, 0x41e5, 0x41e6, 0x41e7,
+ 0x41e8, 0x41e9, 0x41ea, 0x41eb, 0x41ec, 0x41ed, 0x41ee, 0x41ef,
+ 0x41f0, 0x41f1, 0x41f2, 0x41f3, 0x41f4, 0x41f5, 0x41f6, 0x41f7,
+ 0x41f8, 0x41f9, 0x41fa, 0x41fb, 0x41fc, 0x41fd, 0x41fe, 0x41ff,
+ 0x4200, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205, 0x4206, 0x4207, /* 0x4200 */
+ 0x4208, 0x4209, 0x420a, 0x420b, 0x420c, 0x420d, 0x420e, 0x420f,
+ 0x4210, 0x4211, 0x4212, 0x4213, 0x4214, 0x4215, 0x4216, 0x4217,
+ 0x4218, 0x4219, 0x421a, 0x421b, 0x421c, 0x421d, 0x421e, 0x421f,
+ 0x4220, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, 0x4227,
+ 0x4228, 0x4229, 0x422a, 0x422b, 0x422c, 0x422d, 0x422e, 0x422f,
+ 0x4230, 0x4231, 0x4232, 0x4233, 0x4234, 0x4235, 0x4236, 0x4237,
+ 0x4238, 0x4239, 0x423a, 0x423b, 0x423c, 0x423d, 0x423e, 0x423f,
+ 0x4240, 0x4241, 0x4242, 0x4243, 0x4244, 0x4245, 0x4246, 0x4247, /* 0x4240 */
+ 0x4248, 0x4249, 0x424a, 0x424b, 0x424c, 0x424d, 0x424e, 0x424f,
+ 0x4250, 0x4251, 0x4252, 0x4253, 0x4254, 0x4255, 0x4256, 0x4257,
+ 0x4258, 0x4259, 0x425a, 0x425b, 0x425c, 0x425d, 0x425e, 0x425f,
+ 0x4260, 0x4261, 0x4262, 0x4263, 0x4264, 0x4265, 0x4266, 0x4267,
+ 0x4268, 0x4269, 0x426a, 0x426b, 0x426c, 0x426d, 0x426e, 0x426f,
+ 0x4270, 0x4271, 0x4272, 0x4273, 0x4274, 0x4275, 0x4276, 0x4277,
+ 0x4278, 0x4279, 0x427a, 0x427b, 0x427c, 0x427d, 0x427e, 0x427f,
+ 0x4280, 0x4281, 0x4282, 0x4283, 0x4284, 0x4285, 0x4286, 0x4287, /* 0x4280 */
+ 0x4288, 0x4289, 0x428a, 0x428b, 0x428c, 0x428d, 0x428e, 0x428f,
+ 0x4290, 0x4291, 0x4292, 0x4293, 0x4294, 0x4295, 0x4296, 0x4297,
+ 0x4298, 0x4299, 0x429a, 0x429b, 0x429c, 0x429d, 0x429e, 0x429f,
+ 0x42a0, 0x42a1, 0x42a2, 0x42a3, 0x42a4, 0x42a5, 0x42a6, 0x42a7,
+ 0x42a8, 0x42a9, 0x42aa, 0x42ab, 0x42ac, 0x42ad, 0x42ae, 0x42af,
+ 0x42b0, 0x42b1, 0x42b2, 0x42b3, 0x42b4, 0x42b5, 0x42b6, 0x42b7,
+ 0x42b8, 0x42b9, 0x42ba, 0x42bb, 0x42bc, 0x42bd, 0x42be, 0x42bf,
+ 0x42c0, 0x42c1, 0x42c2, 0x42c3, 0x42c4, 0x42c5, 0x42c6, 0x42c7, /* 0x42c0 */
+ 0x42c8, 0x42c9, 0x42ca, 0x42cb, 0x42cc, 0x42cd, 0x42ce, 0x42cf,
+ 0x42d0, 0x42d1, 0x42d2, 0x42d3, 0x42d4, 0x42d5, 0x42d6, 0x42d7,
+ 0x42d8, 0x42d9, 0x42da, 0x42db, 0x42dc, 0x42dd, 0x42de, 0x42df,
+ 0x42e0, 0x42e1, 0x42e2, 0x42e3, 0x42e4, 0x42e5, 0x42e6, 0x42e7,
+ 0x42e8, 0x42e9, 0x42ea, 0x42eb, 0x42ec, 0x42ed, 0x42ee, 0x42ef,
+ 0x42f0, 0x42f1, 0x42f2, 0x42f3, 0x42f4, 0x42f5, 0x42f6, 0x42f7,
+ 0x42f8, 0x42f9, 0x42fa, 0x42fb, 0x42fc, 0x42fd, 0x42fe, 0x42ff,
+ 0x4300, 0x4301, 0x4302, 0x4303, 0x4304, 0x4305, 0x4306, 0x4307, /* 0x4300 */
+ 0x4308, 0x4309, 0x430a, 0x430b, 0x430c, 0x430d, 0x430e, 0x430f,
+ 0x4310, 0x4311, 0x4312, 0x4313, 0x4314, 0x4315, 0x4316, 0x4317,
+ 0x4318, 0x4319, 0x431a, 0x431b, 0x431c, 0x431d, 0x431e, 0x431f,
+ 0x4320, 0x4321, 0x4322, 0x4323, 0x4324, 0x4325, 0x4326, 0x4327,
+ 0x4328, 0x4329, 0x432a, 0x432b, 0x432c, 0x432d, 0x432e, 0x432f,
+ 0x4330, 0x4331, 0x4332, 0x4333, 0x4334, 0x4335, 0x4336, 0x4337,
+ 0x4338, 0x4339, 0x433a, 0x433b, 0x433c, 0x433d, 0x433e, 0x433f,
+ 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345, 0x4346, 0x4347, /* 0x4340 */
+ 0x4348, 0x4349, 0x434a, 0x434b, 0x434c, 0x434d, 0x434e, 0x434f,
+ 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, 0x4355, 0x4356, 0x4357,
+ 0x4358, 0x4359, 0x435a, 0x435b, 0x435c, 0x435d, 0x435e, 0x435f,
+ 0x4360, 0x4361, 0x4362, 0x4363, 0x4364, 0x4365, 0x4366, 0x4367,
+ 0x4368, 0x4369, 0x436a, 0x436b, 0x436c, 0x436d, 0x436e, 0x436f,
+ 0x4370, 0x4371, 0x4372, 0x4373, 0x4374, 0x4375, 0x4376, 0x4377,
+ 0x4378, 0x4379, 0x437a, 0x437b, 0x437c, 0x437d, 0x437e, 0x437f,
+ 0x4380, 0x4381, 0x4382, 0x4383, 0x4384, 0x4385, 0x4386, 0x4387, /* 0x4380 */
+ 0x4388, 0x4389, 0x438a, 0x438b, 0x438c, 0x438d, 0x438e, 0x438f,
+ 0x4390, 0x4391, 0x4392, 0x4393, 0x4394, 0x4395, 0x4396, 0x4397,
+ 0x4398, 0x4399, 0x439a, 0x439b, 0x439c, 0x439d, 0x439e, 0x439f,
+ 0x43a0, 0x43a1, 0x43a2, 0x43a3, 0x43a4, 0x43a5, 0x43a6, 0x43a7,
+ 0x43a8, 0x43a9, 0x43aa, 0x43ab, 0x43ac, 0x43ad, 0x43ae, 0x43af,
+ 0x43b0, 0x43b1, 0x43b2, 0x43b3, 0x43b4, 0x43b5, 0x43b6, 0x43b7,
+ 0x43b8, 0x43b9, 0x43ba, 0x43bb, 0x43bc, 0x43bd, 0x43be, 0x43bf,
+ 0x43c0, 0x43c1, 0x43c2, 0x43c3, 0x43c4, 0x43c5, 0x43c6, 0x43c7, /* 0x43c0 */
+ 0x43c8, 0x43c9, 0x43ca, 0x43cb, 0x43cc, 0x43cd, 0x43ce, 0x43cf,
+ 0x43d0, 0x43d1, 0x43d2, 0x43d3, 0x43d4, 0x43d5, 0x43d6, 0x43d7,
+ 0x43d8, 0x43d9, 0x43da, 0x43db, 0x43dc, 0x43dd, 0x43de, 0x43df,
+ 0x43e0, 0x43e1, 0x43e2, 0x43e3, 0x43e4, 0x43e5, 0x43e6, 0x43e7,
+ 0x43e8, 0x43e9, 0x43ea, 0x43eb, 0x43ec, 0x43ed, 0x43ee, 0x43ef,
+ 0x43f0, 0x43f1, 0x43f2, 0x43f3, 0x43f4, 0x43f5, 0x43f6, 0x43f7,
+ 0x43f8, 0x43f9, 0x43fa, 0x43fb, 0x43fc, 0x43fd, 0x43fe, 0x43ff,
+ 0x4400, 0x4401, 0x4402, 0x4403, 0x4404, 0x4405, 0x4406, 0x4407, /* 0x4400 */
+ 0x4408, 0x4409, 0x440a, 0x440b, 0x440c, 0x440d, 0x440e, 0x440f,
+ 0x4410, 0x4411, 0x4412, 0x4413, 0x4414, 0x4415, 0x4416, 0x4417,
+ 0x4418, 0x4419, 0x441a, 0x441b, 0x441c, 0x441d, 0x441e, 0x441f,
+ 0x4420, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426, 0x4427,
+ 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e, 0x442f,
+ 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436, 0x4437,
+ 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e, 0x443f,
+ 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446, 0x4447, /* 0x4440 */
+ 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e, 0x444f,
+ 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456, 0x4457,
+ 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e, 0x445f,
+ 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466, 0x4467,
+ 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e, 0x446f,
+ 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476, 0x4477,
+ 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e, 0x447f,
+ 0x4480, 0x4481, 0x4482, 0x4483, 0x4484, 0x4485, 0x4486, 0x4487, /* 0x4480 */
+ 0x4488, 0x4489, 0x448a, 0x448b, 0x448c, 0x448d, 0x448e, 0x448f,
+ 0x4490, 0x4491, 0x4492, 0x4493, 0x4494, 0x4495, 0x4496, 0x4497,
+ 0x4498, 0x4499, 0x449a, 0x449b, 0x449c, 0x449d, 0x449e, 0x449f,
+ 0x44a0, 0x44a1, 0x44a2, 0x44a3, 0x44a4, 0x44a5, 0x44a6, 0x44a7,
+ 0x44a8, 0x44a9, 0x44aa, 0x44ab, 0x44ac, 0x44ad, 0x44ae, 0x44af,
+ 0x44b0, 0x44b1, 0x44b2, 0x44b3, 0x44b4, 0x44b5, 0x44b6, 0x44b7,
+ 0x44b8, 0x44b9, 0x44ba, 0x44bb, 0x44bc, 0x44bd, 0x44be, 0x44bf,
+ 0x44c0, 0x44c1, 0x44c2, 0x44c3, 0x44c4, 0x44c5, 0x44c6, 0x44c7, /* 0x44c0 */
+ 0x44c8, 0x44c9, 0x44ca, 0x44cb, 0x44cc, 0x44cd, 0x44ce, 0x44cf,
+ 0x44d0, 0x44d1, 0x44d2, 0x44d3, 0x44d4, 0x44d5, 0x44d6, 0x44d7,
+ 0x44d8, 0x44d9, 0x44da, 0x44db, 0x44dc, 0x44dd, 0x44de, 0x44df,
+ 0x44e0, 0x44e1, 0x44e2, 0x44e3, 0x44e4, 0x44e5, 0x44e6, 0x44e7,
+ 0x44e8, 0x44e9, 0x44ea, 0x44eb, 0x44ec, 0x44ed, 0x44ee, 0x44ef,
+ 0x44f0, 0x44f1, 0x44f2, 0x44f3, 0x44f4, 0x44f5, 0x44f6, 0x44f7,
+ 0x44f8, 0x44f9, 0x44fa, 0x44fb, 0x44fc, 0x44fd, 0x44fe, 0x44ff,
+ 0x4500, 0x4501, 0x4502, 0x4503, 0x4504, 0x4505, 0x4506, 0x4507, /* 0x4500 */
+ 0x4508, 0x4509, 0x450a, 0x450b, 0x450c, 0x450d, 0x450e, 0x450f,
+ 0x4510, 0x4511, 0x4512, 0x4513, 0x4514, 0x4515, 0x4516, 0x4517,
+ 0x4518, 0x4519, 0x451a, 0x451b, 0x451c, 0x451d, 0x451e, 0x451f,
+ 0x4520, 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527,
+ 0x4528, 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f,
+ 0x4530, 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537,
+ 0x4538, 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f,
+ 0x4540, 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, /* 0x4540 */
+ 0x4548, 0x4549, 0x454a, 0x454b, 0x454c, 0x454d, 0x454e, 0x454f,
+ 0x4550, 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557,
+ 0x4558, 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f,
+ 0x4560, 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567,
+ 0x4568, 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f,
+ 0x4570, 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577,
+ 0x4578, 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x457f,
+ 0x4580, 0x4581, 0x4582, 0x4583, 0x4584, 0x4585, 0x4586, 0x4587, /* 0x4580 */
+ 0x4588, 0x4589, 0x458a, 0x458b, 0x458c, 0x458d, 0x458e, 0x458f,
+ 0x4590, 0x4591, 0x4592, 0x4593, 0x4594, 0x4595, 0x4596, 0x4597,
+ 0x4598, 0x4599, 0x459a, 0x459b, 0x459c, 0x459d, 0x459e, 0x459f,
+ 0x45a0, 0x45a1, 0x45a2, 0x45a3, 0x45a4, 0x45a5, 0x45a6, 0x45a7,
+ 0x45a8, 0x45a9, 0x45aa, 0x45ab, 0x45ac, 0x45ad, 0x45ae, 0x45af,
+ 0x45b0, 0x45b1, 0x45b2, 0x45b3, 0x45b4, 0x45b5, 0x45b6, 0x45b7,
+ 0x45b8, 0x45b9, 0x45ba, 0x45bb, 0x45bc, 0x45bd, 0x45be, 0x45bf,
+ 0x45c0, 0x45c1, 0x45c2, 0x45c3, 0x45c4, 0x45c5, 0x45c6, 0x45c7, /* 0x45c0 */
+ 0x45c8, 0x45c9, 0x45ca, 0x45cb, 0x45cc, 0x45cd, 0x45ce, 0x45cf,
+ 0x45d0, 0x45d1, 0x45d2, 0x45d3, 0x45d4, 0x45d5, 0x45d6, 0x45d7,
+ 0x45d8, 0x45d9, 0x45da, 0x45db, 0x45dc, 0x45dd, 0x45de, 0x45df,
+ 0x45e0, 0x45e1, 0x45e2, 0x45e3, 0x45e4, 0x45e5, 0x45e6, 0x45e7,
+ 0x45e8, 0x45e9, 0x45ea, 0x45eb, 0x45ec, 0x45ed, 0x45ee, 0x45ef,
+ 0x45f0, 0x45f1, 0x45f2, 0x45f3, 0x45f4, 0x45f5, 0x45f6, 0x45f7,
+ 0x45f8, 0x45f9, 0x45fa, 0x45fb, 0x45fc, 0x45fd, 0x45fe, 0x45ff,
+ 0x4600, 0x4601, 0x4602, 0x4603, 0x4604, 0x4605, 0x4606, 0x4607, /* 0x4600 */
+ 0x4608, 0x4609, 0x460a, 0x460b, 0x460c, 0x460d, 0x460e, 0x460f,
+ 0x4610, 0x4611, 0x4612, 0x4613, 0x4614, 0x4615, 0x4616, 0x4617,
+ 0x4618, 0x4619, 0x461a, 0x461b, 0x461c, 0x461d, 0x461e, 0x461f,
+ 0x4620, 0x4621, 0x4622, 0x4623, 0x4624, 0x4625, 0x4626, 0x4627,
+ 0x4628, 0x4629, 0x462a, 0x462b, 0x462c, 0x462d, 0x462e, 0x462f,
+ 0x4630, 0x4631, 0x4632, 0x4633, 0x4634, 0x4635, 0x4636, 0x4637,
+ 0x4638, 0x4639, 0x463a, 0x463b, 0x463c, 0x463d, 0x463e, 0x463f,
+ 0x4640, 0x4641, 0x4642, 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, /* 0x4640 */
+ 0x4648, 0x4649, 0x464a, 0x464b, 0x464c, 0x464d, 0x464e, 0x464f,
+ 0x4650, 0x4651, 0x4652, 0x4653, 0x4654, 0x4655, 0x4656, 0x4657,
+ 0x4658, 0x4659, 0x465a, 0x465b, 0x465c, 0x465d, 0x465e, 0x465f,
+ 0x4660, 0x4661, 0x4662, 0x4663, 0x4664, 0x4665, 0x4666, 0x4667,
+ 0x4668, 0x4669, 0x466a, 0x466b, 0x466c, 0x466d, 0x466e, 0x466f,
+ 0x4670, 0x4671, 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677,
+ 0x4678, 0x4679, 0x467a, 0x467b, 0x467c, 0x467d, 0x467e, 0x467f,
+ 0x4680, 0x4681, 0x4682, 0x4683, 0x4684, 0x4685, 0x4686, 0x4687, /* 0x4680 */
+ 0x4688, 0x4689, 0x468a, 0x468b, 0x468c, 0x468d, 0x468e, 0x468f,
+ 0x4690, 0x4691, 0x4692, 0x4693, 0x4694, 0x4695, 0x4696, 0x4697,
+ 0x4698, 0x4699, 0x469a, 0x469b, 0x469c, 0x469d, 0x469e, 0x469f,
+ 0x46a0, 0x46a1, 0x46a2, 0x46a3, 0x46a4, 0x46a5, 0x46a6, 0x46a7,
+ 0x46a8, 0x46a9, 0x46aa, 0x46ab, 0x46ac, 0x46ad, 0x46ae, 0x46af,
+ 0x46b0, 0x46b1, 0x46b2, 0x46b3, 0x46b4, 0x46b5, 0x46b6, 0x46b7,
+ 0x46b8, 0x46b9, 0x46ba, 0x46bb, 0x46bc, 0x46bd, 0x46be, 0x46bf,
+ 0x46c0, 0x46c1, 0x46c2, 0x46c3, 0x46c4, 0x46c5, 0x46c6, 0x46c7, /* 0x46c0 */
+ 0x46c8, 0x46c9, 0x46ca, 0x46cb, 0x46cc, 0x46cd, 0x46ce, 0x46cf,
+ 0x46d0, 0x46d1, 0x46d2, 0x46d3, 0x46d4, 0x46d5, 0x46d6, 0x46d7,
+ 0x46d8, 0x46d9, 0x46da, 0x46db, 0x46dc, 0x46dd, 0x46de, 0x46df,
+ 0x46e0, 0x46e1, 0x46e2, 0x46e3, 0x46e4, 0x46e5, 0x46e6, 0x46e7,
+ 0x46e8, 0x46e9, 0x46ea, 0x46eb, 0x46ec, 0x46ed, 0x46ee, 0x46ef,
+ 0x46f0, 0x46f1, 0x46f2, 0x46f3, 0x46f4, 0x46f5, 0x46f6, 0x46f7,
+ 0x46f8, 0x46f9, 0x46fa, 0x46fb, 0x46fc, 0x46fd, 0x46fe, 0x46ff,
+ 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706, 0x4707, /* 0x4700 */
+ 0x4708, 0x4709, 0x470a, 0x470b, 0x470c, 0x470d, 0x470e, 0x470f,
+ 0x4710, 0x4711, 0x4712, 0x4713, 0x4714, 0x4715, 0x4716, 0x4717,
+ 0x4718, 0x4719, 0x471a, 0x471b, 0x471c, 0x471d, 0x471e, 0x471f,
+ 0x4720, 0x4721, 0x4722, 0x4723, 0x4724, 0x4725, 0x4726, 0x4727,
+ 0x4728, 0x4729, 0x472a, 0x472b, 0x472c, 0x472d, 0x472e, 0x472f,
+ 0x4730, 0x4731, 0x4732, 0x4733, 0x4734, 0x4735, 0x4736, 0x4737,
+ 0x4738, 0x4739, 0x473a, 0x473b, 0x473c, 0x473d, 0x473e, 0x473f,
+ 0x4740, 0x4741, 0x4742, 0x4743, 0x4744, 0x4745, 0x4746, 0x4747, /* 0x4740 */
+ 0x4748, 0x4749, 0x474a, 0x474b, 0x474c, 0x474d, 0x474e, 0x474f,
+ 0x4750, 0x4751, 0x4752, 0x4753, 0x4754, 0x4755, 0x4756, 0x4757,
+ 0x4758, 0x4759, 0x475a, 0x475b, 0x475c, 0x475d, 0x475e, 0x475f,
+ 0x4760, 0x4761, 0x4762, 0x4763, 0x4764, 0x4765, 0x4766, 0x4767,
+ 0x4768, 0x4769, 0x476a, 0x476b, 0x476c, 0x476d, 0x476e, 0x476f,
+ 0x4770, 0x4771, 0x4772, 0x4773, 0x4774, 0x4775, 0x4776, 0x4777,
+ 0x4778, 0x4779, 0x477a, 0x477b, 0x477c, 0x477d, 0x477e, 0x477f,
+ 0x4780, 0x4781, 0x4782, 0x4783, 0x4784, 0x4785, 0x4786, 0x4787, /* 0x4780 */
+ 0x4788, 0x4789, 0x478a, 0x478b, 0x478c, 0x478d, 0x478e, 0x478f,
+ 0x4790, 0x4791, 0x4792, 0x4793, 0x4794, 0x4795, 0x4796, 0x4797,
+ 0x4798, 0x4799, 0x479a, 0x479b, 0x479c, 0x479d, 0x479e, 0x479f,
+ 0x47a0, 0x47a1, 0x47a2, 0x47a3, 0x47a4, 0x47a5, 0x47a6, 0x47a7,
+ 0x47a8, 0x47a9, 0x47aa, 0x47ab, 0x47ac, 0x47ad, 0x47ae, 0x47af,
+ 0x47b0, 0x47b1, 0x47b2, 0x47b3, 0x47b4, 0x47b5, 0x47b6, 0x47b7,
+ 0x47b8, 0x47b9, 0x47ba, 0x47bb, 0x47bc, 0x47bd, 0x47be, 0x47bf,
+ 0x47c0, 0x47c1, 0x47c2, 0x47c3, 0x47c4, 0x47c5, 0x47c6, 0x47c7, /* 0x47c0 */
+ 0x47c8, 0x47c9, 0x47ca, 0x47cb, 0x47cc, 0x47cd, 0x47ce, 0x47cf,
+ 0x47d0, 0x47d1, 0x47d2, 0x47d3, 0x47d4, 0x47d5, 0x47d6, 0x47d7,
+ 0x47d8, 0x47d9, 0x47da, 0x47db, 0x47dc, 0x47dd, 0x47de, 0x47df,
+ 0x47e0, 0x47e1, 0x47e2, 0x47e3, 0x47e4, 0x47e5, 0x47e6, 0x47e7,
+ 0x47e8, 0x47e9, 0x47ea, 0x47eb, 0x47ec, 0x47ed, 0x47ee, 0x47ef,
+ 0x47f0, 0x47f1, 0x47f2, 0x47f3, 0x47f4, 0x47f5, 0x47f6, 0x47f7,
+ 0x47f8, 0x47f9, 0x47fa, 0x47fb, 0x47fc, 0x47fd, 0x47fe, 0x47ff,
+ 0x4800, 0x4801, 0x4802, 0x4803, 0x4804, 0x4805, 0x4806, 0x4807, /* 0x4800 */
+ 0x4808, 0x4809, 0x480a, 0x480b, 0x480c, 0x480d, 0x480e, 0x480f,
+ 0x4810, 0x4811, 0x4812, 0x4813, 0x4814, 0x4815, 0x4816, 0x4817,
+ 0x4818, 0x4819, 0x481a, 0x481b, 0x481c, 0x481d, 0x481e, 0x481f,
+ 0x4820, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826, 0x4827,
+ 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e, 0x482f,
+ 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836, 0x4837,
+ 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e, 0x483f,
+ 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846, 0x4847, /* 0x4840 */
+ 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x484d, 0x484e, 0x484f,
+ 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, 0x4856, 0x4857,
+ 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e, 0x485f,
+ 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866, 0x4867,
+ 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e, 0x486f,
+ 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876, 0x4877,
+ 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e, 0x487f,
+ 0x4880, 0x4881, 0x4882, 0x4883, 0x4884, 0x4885, 0x4886, 0x4887, /* 0x4880 */
+ 0x4888, 0x4889, 0x488a, 0x488b, 0x488c, 0x488d, 0x488e, 0x488f,
+ 0x4890, 0x4891, 0x4892, 0x4893, 0x4894, 0x4895, 0x4896, 0x4897,
+ 0x4898, 0x4899, 0x489a, 0x489b, 0x489c, 0x489d, 0x489e, 0x489f,
+ 0x48a0, 0x48a1, 0x48a2, 0x48a3, 0x48a4, 0x48a5, 0x48a6, 0x48a7,
+ 0x48a8, 0x48a9, 0x48aa, 0x48ab, 0x48ac, 0x48ad, 0x48ae, 0x48af,
+ 0x48b0, 0x48b1, 0x48b2, 0x48b3, 0x48b4, 0x48b5, 0x48b6, 0x48b7,
+ 0x48b8, 0x48b9, 0x48ba, 0x48bb, 0x48bc, 0x48bd, 0x48be, 0x48bf,
+ 0x48c0, 0x48c1, 0x48c2, 0x48c3, 0x48c4, 0x48c5, 0x48c6, 0x48c7, /* 0x48c0 */
+ 0x48c8, 0x48c9, 0x48ca, 0x48cb, 0x48cc, 0x48cd, 0x48ce, 0x48cf,
+ 0x48d0, 0x48d1, 0x48d2, 0x48d3, 0x48d4, 0x48d5, 0x48d6, 0x48d7,
+ 0x48d8, 0x48d9, 0x48da, 0x48db, 0x48dc, 0x48dd, 0x48de, 0x48df,
+ 0x48e0, 0x48e1, 0x48e2, 0x48e3, 0x48e4, 0x48e5, 0x48e6, 0x48e7,
+ 0x48e8, 0x48e9, 0x48ea, 0x48eb, 0x48ec, 0x48ed, 0x48ee, 0x48ef,
+ 0x48f0, 0x48f1, 0x48f2, 0x48f3, 0x48f4, 0x48f5, 0x48f6, 0x48f7,
+ 0x48f8, 0x48f9, 0x48fa, 0x48fb, 0x48fc, 0x48fd, 0x48fe, 0x48ff,
+ 0x4900, 0x4901, 0x4902, 0x4903, 0x4904, 0x4905, 0x4906, 0x4907, /* 0x4900 */
+ 0x4908, 0x4909, 0x490a, 0x490b, 0x490c, 0x490d, 0x490e, 0x490f,
+ 0x4910, 0x4911, 0x4912, 0x4913, 0x4914, 0x4915, 0x4916, 0x4917,
+ 0x4918, 0x4919, 0x491a, 0x491b, 0x491c, 0x491d, 0x491e, 0x491f,
+ 0x4920, 0x4921, 0x4922, 0x4923, 0x4924, 0x4925, 0x4926, 0x4927,
+ 0x4928, 0x4929, 0x492a, 0x492b, 0x492c, 0x492d, 0x492e, 0x492f,
+ 0x4930, 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937,
+ 0x4938, 0x4939, 0x493a, 0x493b, 0x493c, 0x493d, 0x493e, 0x493f,
+ 0x4940, 0x4941, 0x4942, 0x4943, 0x4944, 0x4945, 0x4946, 0x4947, /* 0x4940 */
+ 0x4948, 0x4949, 0x494a, 0x494b, 0x494c, 0x494d, 0x494e, 0x494f,
+ 0x4950, 0x4951, 0x4952, 0x4953, 0x4954, 0x4955, 0x4956, 0x4957,
+ 0x4958, 0x4959, 0x495a, 0x495b, 0x495c, 0x495d, 0x495e, 0x495f,
+ 0x4960, 0x4961, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966, 0x4967,
+ 0x4968, 0x4969, 0x496a, 0x496b, 0x496c, 0x496d, 0x496e, 0x496f,
+ 0x4970, 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977,
+ 0x4978, 0x4979, 0x497a, 0x497b, 0x497c, 0x497d, 0x497e, 0x497f,
+ 0x4980, 0x4981, 0x4982, 0x4983, 0x4984, 0x4985, 0x4986, 0x4987, /* 0x4980 */
+ 0x4988, 0x4989, 0x498a, 0x498b, 0x498c, 0x498d, 0x498e, 0x498f,
+ 0x4990, 0x4991, 0x4992, 0x4993, 0x4994, 0x4995, 0x4996, 0x4997,
+ 0x4998, 0x4999, 0x499a, 0x499b, 0x499c, 0x499d, 0x499e, 0x499f,
+ 0x49a0, 0x49a1, 0x49a2, 0x49a3, 0x49a4, 0x49a5, 0x49a6, 0x49a7,
+ 0x49a8, 0x49a9, 0x49aa, 0x49ab, 0x49ac, 0x49ad, 0x49ae, 0x49af,
+ 0x49b0, 0x49b1, 0x49b2, 0x49b3, 0x49b4, 0x49b5, 0x49b6, 0x49b7,
+ 0x49b8, 0x49b9, 0x49ba, 0x49bb, 0x49bc, 0x49bd, 0x49be, 0x49bf,
+ 0x49c0, 0x49c1, 0x49c2, 0x49c3, 0x49c4, 0x49c5, 0x49c6, 0x49c7, /* 0x49c0 */
+ 0x49c8, 0x49c9, 0x49ca, 0x49cb, 0x49cc, 0x49cd, 0x49ce, 0x49cf,
+ 0x49d0, 0x49d1, 0x49d2, 0x49d3, 0x49d4, 0x49d5, 0x49d6, 0x49d7,
+ 0x49d8, 0x49d9, 0x49da, 0x49db, 0x49dc, 0x49dd, 0x49de, 0x49df,
+ 0x49e0, 0x49e1, 0x49e2, 0x49e3, 0x49e4, 0x49e5, 0x49e6, 0x49e7,
+ 0x49e8, 0x49e9, 0x49ea, 0x49eb, 0x49ec, 0x49ed, 0x49ee, 0x49ef,
+ 0x49f0, 0x49f1, 0x49f2, 0x49f3, 0x49f4, 0x49f5, 0x49f6, 0x49f7,
+ 0x49f8, 0x49f9, 0x49fa, 0x49fb, 0x49fc, 0x49fd, 0x49fe, 0x49ff,
+ 0x4a00, 0x4a01, 0x4a02, 0x4a03, 0x4a04, 0x4a05, 0x4a06, 0x4a07, /* 0x4a00 */
+ 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0x4a0f,
+ 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17,
+ 0x4a18, 0x4a19, 0x4a1a, 0x4a1b, 0x4a1c, 0x4a1d, 0x4a1e, 0x4a1f,
+ 0x4a20, 0x4a21, 0x4a22, 0x4a23, 0x4a24, 0x4a25, 0x4a26, 0x4a27,
+ 0x4a28, 0x4a29, 0x4a2a, 0x4a2b, 0x4a2c, 0x4a2d, 0x4a2e, 0x4a2f,
+ 0x4a30, 0x4a31, 0x4a32, 0x4a33, 0x4a34, 0x4a35, 0x4a36, 0x4a37,
+ 0x4a38, 0x4a39, 0x4a3a, 0x4a3b, 0x4a3c, 0x4a3d, 0x4a3e, 0x4a3f,
+ 0x4a40, 0x4a41, 0x4a42, 0x4a43, 0x4a44, 0x4a45, 0x4a46, 0x4a47, /* 0x4a40 */
+ 0x4a48, 0x4a49, 0x4a4a, 0x4a4b, 0x4a4c, 0x4a4d, 0x4a4e, 0x4a4f,
+ 0x4a50, 0x4a51, 0x4a52, 0x4a53, 0x4a54, 0x4a55, 0x4a56, 0x4a57,
+ 0x4a58, 0x4a59, 0x4a5a, 0x4a5b, 0x4a5c, 0x4a5d, 0x4a5e, 0x4a5f,
+ 0x4a60, 0x4a61, 0x4a62, 0x4a63, 0x4a64, 0x4a65, 0x4a66, 0x4a67,
+ 0x4a68, 0x4a69, 0x4a6a, 0x4a6b, 0x4a6c, 0x4a6d, 0x4a6e, 0x4a6f,
+ 0x4a70, 0x4a71, 0x4a72, 0x4a73, 0x4a74, 0x4a75, 0x4a76, 0x4a77,
+ 0x4a78, 0x4a79, 0x4a7a, 0x4a7b, 0x4a7c, 0x4a7d, 0x4a7e, 0x4a7f,
+ 0x4a80, 0x4a81, 0x4a82, 0x4a83, 0x4a84, 0x4a85, 0x4a86, 0x4a87, /* 0x4a80 */
+ 0x4a88, 0x4a89, 0x4a8a, 0x4a8b, 0x4a8c, 0x4a8d, 0x4a8e, 0x4a8f,
+ 0x4a90, 0x4a91, 0x4a92, 0x4a93, 0x4a94, 0x4a95, 0x4a96, 0x4a97,
+ 0x4a98, 0x4a99, 0x4a9a, 0x4a9b, 0x4a9c, 0x4a9d, 0x4a9e, 0x4a9f,
+ 0x4aa0, 0x4aa1, 0x4aa2, 0x4aa3, 0x4aa4, 0x4aa5, 0x4aa6, 0x4aa7,
+ 0x4aa8, 0x4aa9, 0x4aaa, 0x4aab, 0x4aac, 0x4aad, 0x4aae, 0x4aaf,
+ 0x4ab0, 0x4ab1, 0x4ab2, 0x4ab3, 0x4ab4, 0x4ab5, 0x4ab6, 0x4ab7,
+ 0x4ab8, 0x4ab9, 0x4aba, 0x4abb, 0x4abc, 0x4abd, 0x4abe, 0x4abf,
+ 0x4ac0, 0x4ac1, 0x4ac2, 0x4ac3, 0x4ac4, 0x4ac5, 0x4ac6, 0x4ac7, /* 0x4ac0 */
+ 0x4ac8, 0x4ac9, 0x4aca, 0x4acb, 0x4acc, 0x4acd, 0x4ace, 0x4acf,
+ 0x4ad0, 0x4ad1, 0x4ad2, 0x4ad3, 0x4ad4, 0x4ad5, 0x4ad6, 0x4ad7,
+ 0x4ad8, 0x4ad9, 0x4ada, 0x4adb, 0x4adc, 0x4add, 0x4ade, 0x4adf,
+ 0x4ae0, 0x4ae1, 0x4ae2, 0x4ae3, 0x4ae4, 0x4ae5, 0x4ae6, 0x4ae7,
+ 0x4ae8, 0x4ae9, 0x4aea, 0x4aeb, 0x4aec, 0x4aed, 0x4aee, 0x4aef,
+ 0x4af0, 0x4af1, 0x4af2, 0x4af3, 0x4af4, 0x4af5, 0x4af6, 0x4af7,
+ 0x4af8, 0x4af9, 0x4afa, 0x4afb, 0x4afc, 0x4afd, 0x4afe, 0x4aff,
+ 0x4b00, 0x4b01, 0x4b02, 0x4b03, 0x4b04, 0x4b05, 0x4b06, 0x4b07, /* 0x4b00 */
+ 0x4b08, 0x4b09, 0x4b0a, 0x4b0b, 0x4b0c, 0x4b0d, 0x4b0e, 0x4b0f,
+ 0x4b10, 0x4b11, 0x4b12, 0x4b13, 0x4b14, 0x4b15, 0x4b16, 0x4b17,
+ 0x4b18, 0x4b19, 0x4b1a, 0x4b1b, 0x4b1c, 0x4b1d, 0x4b1e, 0x4b1f,
+ 0x4b20, 0x4b21, 0x4b22, 0x4b23, 0x4b24, 0x4b25, 0x4b26, 0x4b27,
+ 0x4b28, 0x4b29, 0x4b2a, 0x4b2b, 0x4b2c, 0x4b2d, 0x4b2e, 0x4b2f,
+ 0x4b30, 0x4b31, 0x4b32, 0x4b33, 0x4b34, 0x4b35, 0x4b36, 0x4b37,
+ 0x4b38, 0x4b39, 0x4b3a, 0x4b3b, 0x4b3c, 0x4b3d, 0x4b3e, 0x4b3f,
+ 0x4b40, 0x4b41, 0x4b42, 0x4b43, 0x4b44, 0x4b45, 0x4b46, 0x4b47, /* 0x4b40 */
+ 0x4b48, 0x4b49, 0x4b4a, 0x4b4b, 0x4b4c, 0x4b4d, 0x4b4e, 0x4b4f,
+ 0x4b50, 0x4b51, 0x4b52, 0x4b53, 0x4b54, 0x4b55, 0x4b56, 0x4b57,
+ 0x4b58, 0x4b59, 0x4b5a, 0x4b5b, 0x4b5c, 0x4b5d, 0x4b5e, 0x4b5f,
+ 0x4b60, 0x4b61, 0x4b62, 0x4b63, 0x4b64, 0x4b65, 0x4b66, 0x4b67,
+ 0x4b68, 0x4b69, 0x4b6a, 0x4b6b, 0x4b6c, 0x4b6d, 0x4b6e, 0x4b6f,
+ 0x4b70, 0x4b71, 0x4b72, 0x4b73, 0x4b74, 0x4b75, 0x4b76, 0x4b77,
+ 0x4b78, 0x4b79, 0x4b7a, 0x4b7b, 0x4b7c, 0x4b7d, 0x4b7e, 0x4b7f,
+ 0x4b80, 0x4b81, 0x4b82, 0x4b83, 0x4b84, 0x4b85, 0x4b86, 0x4b87, /* 0x4b80 */
+ 0x4b88, 0x4b89, 0x4b8a, 0x4b8b, 0x4b8c, 0x4b8d, 0x4b8e, 0x4b8f,
+ 0x4b90, 0x4b91, 0x4b92, 0x4b93, 0x4b94, 0x4b95, 0x4b96, 0x4b97,
+ 0x4b98, 0x4b99, 0x4b9a, 0x4b9b, 0x4b9c, 0x4b9d, 0x4b9e, 0x4b9f,
+ 0x4ba0, 0x4ba1, 0x4ba2, 0x4ba3, 0x4ba4, 0x4ba5, 0x4ba6, 0x4ba7,
+ 0x4ba8, 0x4ba9, 0x4baa, 0x4bab, 0x4bac, 0x4bad, 0x4bae, 0x4baf,
+ 0x4bb0, 0x4bb1, 0x4bb2, 0x4bb3, 0x4bb4, 0x4bb5, 0x4bb6, 0x4bb7,
+ 0x4bb8, 0x4bb9, 0x4bba, 0x4bbb, 0x4bbc, 0x4bbd, 0x4bbe, 0x4bbf,
+ 0x4bc0, 0x4bc1, 0x4bc2, 0x4bc3, 0x4bc4, 0x4bc5, 0x4bc6, 0x4bc7, /* 0x4bc0 */
+ 0x4bc8, 0x4bc9, 0x4bca, 0x4bcb, 0x4bcc, 0x4bcd, 0x4bce, 0x4bcf,
+ 0x4bd0, 0x4bd1, 0x4bd2, 0x4bd3, 0x4bd4, 0x4bd5, 0x4bd6, 0x4bd7,
+ 0x4bd8, 0x4bd9, 0x4bda, 0x4bdb, 0x4bdc, 0x4bdd, 0x4bde, 0x4bdf,
+ 0x4be0, 0x4be1, 0x4be2, 0x4be3, 0x4be4, 0x4be5, 0x4be6, 0x4be7,
+ 0x4be8, 0x4be9, 0x4bea, 0x4beb, 0x4bec, 0x4bed, 0x4bee, 0x4bef,
+ 0x4bf0, 0x4bf1, 0x4bf2, 0x4bf3, 0x4bf4, 0x4bf5, 0x4bf6, 0x4bf7,
+ 0x4bf8, 0x4bf9, 0x4bfa, 0x4bfb, 0x4bfc, 0x4bfd, 0x4bfe, 0x4bff,
+ 0x4c00, 0x4c01, 0x4c02, 0x4c03, 0x4c04, 0x4c05, 0x4c06, 0x4c07, /* 0x4c00 */
+ 0x4c08, 0x4c09, 0x4c0a, 0x4c0b, 0x4c0c, 0x4c0d, 0x4c0e, 0x4c0f,
+ 0x4c10, 0x4c11, 0x4c12, 0x4c13, 0x4c14, 0x4c15, 0x4c16, 0x4c17,
+ 0x4c18, 0x4c19, 0x4c1a, 0x4c1b, 0x4c1c, 0x4c1d, 0x4c1e, 0x4c1f,
+ 0x4c20, 0x4c21, 0x4c22, 0x4c23, 0x4c24, 0x4c25, 0x4c26, 0x4c27,
+ 0x4c28, 0x4c29, 0x4c2a, 0x4c2b, 0x4c2c, 0x4c2d, 0x4c2e, 0x4c2f,
+ 0x4c30, 0x4c31, 0x4c32, 0x4c33, 0x4c34, 0x4c35, 0x4c36, 0x4c37,
+ 0x4c38, 0x4c39, 0x4c3a, 0x4c3b, 0x4c3c, 0x4c3d, 0x4c3e, 0x4c3f,
+ 0x4c40, 0x4c41, 0x4c42, 0x4c43, 0x4c44, 0x4c45, 0x4c46, 0x4c47, /* 0x4c40 */
+ 0x4c48, 0x4c49, 0x4c4a, 0x4c4b, 0x4c4c, 0x4c4d, 0x4c4e, 0x4c4f,
+ 0x4c50, 0x4c51, 0x4c52, 0x4c53, 0x4c54, 0x4c55, 0x4c56, 0x4c57,
+ 0x4c58, 0x4c59, 0x4c5a, 0x4c5b, 0x4c5c, 0x4c5d, 0x4c5e, 0x4c5f,
+ 0x4c60, 0x4c61, 0x4c62, 0x4c63, 0x4c64, 0x4c65, 0x4c66, 0x4c67,
+ 0x4c68, 0x4c69, 0x4c6a, 0x4c6b, 0x4c6c, 0x4c6d, 0x4c6e, 0x4c6f,
+ 0x4c70, 0x4c71, 0x4c72, 0x4c73, 0x4c74, 0x4c75, 0x4c76, 0x4c77,
+ 0x4c78, 0x4c79, 0x4c7a, 0x4c7b, 0x4c7c, 0x4c7d, 0x4c7e, 0x4c7f,
+ 0x4c80, 0x4c81, 0x4c82, 0x4c83, 0x4c84, 0x4c85, 0x4c86, 0x4c87, /* 0x4c80 */
+ 0x4c88, 0x4c89, 0x4c8a, 0x4c8b, 0x4c8c, 0x4c8d, 0x4c8e, 0x4c8f,
+ 0x4c90, 0x4c91, 0x4c92, 0x4c93, 0x4c94, 0x4c95, 0x4c96, 0x4c97,
+ 0x4c98, 0x4c99, 0x4c9a, 0x4c9b, 0x4c9c, 0x4c9d, 0x4c9e, 0x4c9f,
+ 0x4ca0, 0x4ca1, 0x4ca2, 0x4ca3, 0x4ca4, 0x4ca5, 0x4ca6, 0x4ca7,
+ 0x4ca8, 0x4ca9, 0x4caa, 0x4cab, 0x4cac, 0x4cad, 0x4cae, 0x4caf,
+ 0x4cb0, 0x4cb1, 0x4cb2, 0x4cb3, 0x4cb4, 0x4cb5, 0x4cb6, 0x4cb7,
+ 0x4cb8, 0x4cb9, 0x4cba, 0x4cbb, 0x4cbc, 0x4cbd, 0x4cbe, 0x4cbf,
+ 0x4cc0, 0x4cc1, 0x4cc2, 0x4cc3, 0x4cc4, 0x4cc5, 0x4cc6, 0x4cc7, /* 0x4cc0 */
+ 0x4cc8, 0x4cc9, 0x4cca, 0x4ccb, 0x4ccc, 0x4ccd, 0x4cce, 0x4ccf,
+ 0x4cd0, 0x4cd1, 0x4cd2, 0x4cd3, 0x4cd4, 0x4cd5, 0x4cd6, 0x4cd7,
+ 0x4cd8, 0x4cd9, 0x4cda, 0x4cdb, 0x4cdc, 0x4cdd, 0x4cde, 0x4cdf,
+ 0x4ce0, 0x4ce1, 0x4ce2, 0x4ce3, 0x4ce4, 0x4ce5, 0x4ce6, 0x4ce7,
+ 0x4ce8, 0x4ce9, 0x4cea, 0x4ceb, 0x4cec, 0x4ced, 0x4cee, 0x4cef,
+ 0x4cf0, 0x4cf1, 0x4cf2, 0x4cf3, 0x4cf4, 0x4cf5, 0x4cf6, 0x4cf7,
+ 0x4cf8, 0x4cf9, 0x4cfa, 0x4cfb, 0x4cfc, 0x4cfd, 0x4cfe, 0x4cff,
+ 0x4d00, 0x4d01, 0x4d02, 0x4d03, 0x4d04, 0x4d05, 0x4d06, 0x4d07, /* 0x4d00 */
+ 0x4d08, 0x4d09, 0x4d0a, 0x4d0b, 0x4d0c, 0x4d0d, 0x4d0e, 0x4d0f,
+ 0x4d10, 0x4d11, 0x4d12, 0x4d13, 0x4d14, 0x4d15, 0x4d16, 0x4d17,
+ 0x4d18, 0x4d19, 0x4d1a, 0x4d1b, 0x4d1c, 0x4d1d, 0x4d1e, 0x4d1f,
+ 0x4d20, 0x4d21, 0x4d22, 0x4d23, 0x4d24, 0x4d25, 0x4d26, 0x4d27,
+ 0x4d28, 0x4d29, 0x4d2a, 0x4d2b, 0x4d2c, 0x4d2d, 0x4d2e, 0x4d2f,
+ 0x4d30, 0x4d31, 0x4d32, 0x4d33, 0x4d34, 0x4d35, 0x4d36, 0x4d37,
+ 0x4d38, 0x4d39, 0x4d3a, 0x4d3b, 0x4d3c, 0x4d3d, 0x4d3e, 0x4d3f,
+ 0x4d40, 0x4d41, 0x4d42, 0x4d43, 0x4d44, 0x4d45, 0x4d46, 0x4d47, /* 0x4d40 */
+ 0x4d48, 0x4d49, 0x4d4a, 0x4d4b, 0x4d4c, 0x4d4d, 0x4d4e, 0x4d4f,
+ 0x4d50, 0x4d51, 0x4d52, 0x4d53, 0x4d54, 0x4d55, 0x4d56, 0x4d57,
+ 0x4d58, 0x4d59, 0x4d5a, 0x4d5b, 0x4d5c, 0x4d5d, 0x4d5e, 0x4d5f,
+ 0x4d60, 0x4d61, 0x4d62, 0x4d63, 0x4d64, 0x4d65, 0x4d66, 0x4d67,
+ 0x4d68, 0x4d69, 0x4d6a, 0x4d6b, 0x4d6c, 0x4d6d, 0x4d6e, 0x4d6f,
+ 0x4d70, 0x4d71, 0x4d72, 0x4d73, 0x4d74, 0x4d75, 0x4d76, 0x4d77,
+ 0x4d78, 0x4d79, 0x4d7a, 0x4d7b, 0x4d7c, 0x4d7d, 0x4d7e, 0x4d7f,
+ 0x4d80, 0x4d81, 0x4d82, 0x4d83, 0x4d84, 0x4d85, 0x4d86, 0x4d87, /* 0x4d80 */
+ 0x4d88, 0x4d89, 0x4d8a, 0x4d8b, 0x4d8c, 0x4d8d, 0x4d8e, 0x4d8f,
+ 0x4d90, 0x4d91, 0x4d92, 0x4d93, 0x4d94, 0x4d95, 0x4d96, 0x4d97,
+ 0x4d98, 0x4d99, 0x4d9a, 0x4d9b, 0x4d9c, 0x4d9d, 0x4d9e, 0x4d9f,
+ 0x4da0, 0x4da1, 0x4da2, 0x4da3, 0x4da4, 0x4da5, 0x4da6, 0x4da7,
+ 0x4da8, 0x4da9, 0x4daa, 0x4dab, 0x4dac, 0x4dad, 0x4dae, 0x4daf,
+ 0x4db0, 0x4db1, 0x4db2, 0x4db3, 0x4db4, 0x4db5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4dc0, 0x4dc1, 0x4dc2, 0x4dc3, 0x4dc4, 0x4dc5, 0x4dc6, 0x4dc7, /* 0x4dc0 */
+ 0x4dc8, 0x4dc9, 0x4dca, 0x4dcb, 0x4dcc, 0x4dcd, 0x4dce, 0x4dcf,
+ 0x4dd0, 0x4dd1, 0x4dd2, 0x4dd3, 0x4dd4, 0x4dd5, 0x4dd6, 0x4dd7,
+ 0x4dd8, 0x4dd9, 0x4dda, 0x4ddb, 0x4ddc, 0x4ddd, 0x4dde, 0x4ddf,
+ 0x4de0, 0x4de1, 0x4de2, 0x4de3, 0x4de4, 0x4de5, 0x4de6, 0x4de7,
+ 0x4de8, 0x4de9, 0x4dea, 0x4deb, 0x4dec, 0x4ded, 0x4dee, 0x4def,
+ 0x4df0, 0x4df1, 0x4df2, 0x4df3, 0x4df4, 0x4df5, 0x4df6, 0x4df7,
+ 0x4df8, 0x4df9, 0x4dfa, 0x4dfb, 0x4dfc, 0x4dfd, 0x4dfe, 0x4dff,
+ 0x4e00, 0x4e01, 0x4e02, 0x4e03, 0x4e04, 0x4e05, 0x4e06, 0x4e07, /* 0x4e00 */
+ 0x4e08, 0x4e09, 0x4e0a, 0x4e0b, 0x4e0c, 0x4e0d, 0x4e0e, 0x4e0f,
+ 0x4e10, 0x4e11, 0x4e12, 0x4e13, 0x4e14, 0x4e15, 0x4e16, 0x4e17,
+ 0x4e18, 0x4e19, 0x4e1a, 0x4e1b, 0x4e1c, 0x4e1d, 0x4e1e, 0x4e1f,
+ 0x4e20, 0x4e21, 0x4e22, 0x4e23, 0x4e24, 0x4e25, 0x4e26, 0x4e27,
+ 0x4e28, 0x4e29, 0x4e2a, 0x4e2b, 0x4e2c, 0x4e2d, 0x4e2e, 0x4e2f,
+ 0x4e30, 0x4e31, 0x4e32, 0x4e33, 0x4e34, 0x4e35, 0x4e36, 0x4e37,
+ 0x4e38, 0x4e39, 0x4e3a, 0x4e3b, 0x4e3c, 0x4e3d, 0x4e3e, 0x4e3f,
+ 0x4e40, 0x4e41, 0x4e42, 0x4e43, 0x4e44, 0x4e45, 0x4e46, 0x4e47, /* 0x4e40 */
+ 0x4e48, 0x4e49, 0x4e4a, 0x4e4b, 0x4e4c, 0x4e4d, 0x4e4e, 0x4e4f,
+ 0x4e50, 0x4e51, 0x4e52, 0x4e53, 0x4e54, 0x4e55, 0x4e56, 0x4e57,
+ 0x4e58, 0x4e59, 0x4e5a, 0x4e5b, 0x4e5c, 0x4e5d, 0x4e5e, 0x4e5f,
+ 0x4e60, 0x4e61, 0x4e62, 0x4e63, 0x4e64, 0x4e65, 0x4e66, 0x4e67,
+ 0x4e68, 0x4e69, 0x4e6a, 0x4e6b, 0x4e6c, 0x4e6d, 0x4e6e, 0x4e6f,
+ 0x4e70, 0x4e71, 0x4e72, 0x4e73, 0x4e74, 0x4e75, 0x4e76, 0x4e77,
+ 0x4e78, 0x4e79, 0x4e7a, 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7e, 0x4e7f,
+ 0x4e80, 0x4e81, 0x4e82, 0x4e83, 0x4e84, 0x4e85, 0x4e86, 0x4e87, /* 0x4e80 */
+ 0x4e88, 0x4e89, 0x4e8a, 0x4e8b, 0x4e8c, 0x4e8d, 0x4e8e, 0x4e8f,
+ 0x4e90, 0x4e91, 0x4e92, 0x4e93, 0x4e94, 0x4e95, 0x4e96, 0x4e97,
+ 0x4e98, 0x4e99, 0x4e9a, 0x4e9b, 0x4e9c, 0x4e9d, 0x4e9e, 0x4e9f,
+ 0x4ea0, 0x4ea1, 0x4ea2, 0x4ea3, 0x4ea4, 0x4ea5, 0x4ea6, 0x4ea7,
+ 0x4ea8, 0x4ea9, 0x4eaa, 0x4eab, 0x4eac, 0x4ead, 0x4eae, 0x4eaf,
+ 0x4eb0, 0x4eb1, 0x4eb2, 0x4eb3, 0x4eb4, 0x4eb5, 0x4eb6, 0x4eb7,
+ 0x4eb8, 0x4eb9, 0x4eba, 0x4ebb, 0x4ebc, 0x4ebd, 0x4ebe, 0x4ebf,
+ 0x4ec0, 0x4ec1, 0x4ec2, 0x4ec3, 0x4ec4, 0x4ec5, 0x4ec6, 0x4ec7, /* 0x4ec0 */
+ 0x4ec8, 0x4ec9, 0x4eca, 0x4ecb, 0x4ecc, 0x4ecd, 0x4ece, 0x4ecf,
+ 0x4ed0, 0x4ed1, 0x4ed2, 0x4ed3, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7,
+ 0x4ed8, 0x4ed9, 0x4eda, 0x4edb, 0x4edc, 0x4edd, 0x4ede, 0x4edf,
+ 0x4ee0, 0x4ee1, 0x4ee2, 0x4ee3, 0x4ee4, 0x4ee5, 0x4ee6, 0x4ee7,
+ 0x4ee8, 0x4ee9, 0x4eea, 0x4eeb, 0x4eec, 0x4eed, 0x4eee, 0x4eef,
+ 0x4ef0, 0x4ef1, 0x4ef2, 0x4ef3, 0x4ef4, 0x4ef5, 0x4ef6, 0x4ef7,
+ 0x4ef8, 0x4ef9, 0x4efa, 0x4efb, 0x4efc, 0x4efd, 0x4efe, 0x4eff,
+ 0x4f00, 0x4f01, 0x4f02, 0x4f03, 0x4f04, 0x4f05, 0x4f06, 0x4f07, /* 0x4f00 */
+ 0x4f08, 0x4f09, 0x4f0a, 0x4f0b, 0x4f0c, 0x4f0d, 0x4f0e, 0x4f0f,
+ 0x4f10, 0x4f11, 0x4f12, 0x4f13, 0x4f14, 0x4f15, 0x4f16, 0x4f17,
+ 0x4f18, 0x4f19, 0x4f1a, 0x4f1b, 0x4f1c, 0x4f1d, 0x4f1e, 0x4f1f,
+ 0x4f20, 0x4f21, 0x4f22, 0x4f23, 0x4f24, 0x4f25, 0x4f26, 0x4f27,
+ 0x4f28, 0x4f29, 0x4f2a, 0x4f2b, 0x4f2c, 0x4f2d, 0x4f2e, 0x4f2f,
+ 0x4f30, 0x4f31, 0x4f32, 0x4f33, 0x4f34, 0x4f35, 0x4f36, 0x4f37,
+ 0x4f38, 0x4f39, 0x4f3a, 0x4f3b, 0x4f3c, 0x4f3d, 0x4f3e, 0x4f3f,
+ 0x4f40, 0x4f41, 0x4f42, 0x4f43, 0x4f44, 0x4f45, 0x4f46, 0x4f47, /* 0x4f40 */
+ 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c, 0x4f4d, 0x4f4e, 0x4f4f,
+ 0x4f50, 0x4f51, 0x4f52, 0x4f53, 0x4f54, 0x4f55, 0x4f56, 0x4f57,
+ 0x4f58, 0x4f59, 0x4f5a, 0x4f5b, 0x4f5c, 0x4f5d, 0x4f5e, 0x4f5f,
+ 0x4f60, 0x4f61, 0x4f62, 0x4f63, 0x4f64, 0x4f65, 0x4f66, 0x4f67,
+ 0x4f68, 0x4f69, 0x4f6a, 0x4f6b, 0x4f6c, 0x4f6d, 0x4f6e, 0x4f6f,
+ 0x4f70, 0x4f71, 0x4f72, 0x4f73, 0x4f74, 0x4f75, 0x4f76, 0x4f77,
+ 0x4f78, 0x4f79, 0x4f7a, 0x4f7b, 0x4f7c, 0x4f7d, 0x4f7e, 0x4f7f,
+ 0x4f80, 0x4f81, 0x4f82, 0x4f83, 0x4f84, 0x4f85, 0x4f86, 0x4f87, /* 0x4f80 */
+ 0x4f88, 0x4f89, 0x4f8a, 0x4f8b, 0x4f8c, 0x4f8d, 0x4f8e, 0x4f8f,
+ 0x4f90, 0x4f91, 0x4f92, 0x4f93, 0x4f94, 0x4f95, 0x4f96, 0x4f97,
+ 0x4f98, 0x4f99, 0x4f9a, 0x4f9b, 0x4f9c, 0x4f9d, 0x4f9e, 0x4f9f,
+ 0x4fa0, 0x4fa1, 0x4fa2, 0x4fa3, 0x4fa4, 0x4fa5, 0x4fa6, 0x4fa7,
+ 0x4fa8, 0x4fa9, 0x4faa, 0x4fab, 0x4fac, 0x4fad, 0x4fae, 0x4faf,
+ 0x4fb0, 0x4fb1, 0x4fb2, 0x4fb3, 0x4fb4, 0x4fb5, 0x4fb6, 0x4fb7,
+ 0x4fb8, 0x4fb9, 0x4fba, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fbf,
+ 0x4fc0, 0x4fc1, 0x4fc2, 0x4fc3, 0x4fc4, 0x4fc5, 0x4fc6, 0x4fc7, /* 0x4fc0 */
+ 0x4fc8, 0x4fc9, 0x4fca, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fce, 0x4fcf,
+ 0x4fd0, 0x4fd1, 0x4fd2, 0x4fd3, 0x4fd4, 0x4fd5, 0x4fd6, 0x4fd7,
+ 0x4fd8, 0x4fd9, 0x4fda, 0x4fdb, 0x4fdc, 0x4fdd, 0x4fde, 0x4fdf,
+ 0x4fe0, 0x4fe1, 0x4fe2, 0x4fe3, 0x4fe4, 0x4fe5, 0x4fe6, 0x4fe7,
+ 0x4fe8, 0x4fe9, 0x4fea, 0x4feb, 0x4fec, 0x4fed, 0x4fee, 0x4fef,
+ 0x4ff0, 0x4ff1, 0x4ff2, 0x4ff3, 0x4ff4, 0x4ff5, 0x4ff6, 0x4ff7,
+ 0x4ff8, 0x4ff9, 0x4ffa, 0x4ffb, 0x4ffc, 0x4ffd, 0x4ffe, 0x4fff,
+ 0x5000, 0x5001, 0x5002, 0x5003, 0x5004, 0x5005, 0x5006, 0x5007, /* 0x5000 */
+ 0x5008, 0x5009, 0x500a, 0x500b, 0x500c, 0x500d, 0x500e, 0x500f,
+ 0x5010, 0x5011, 0x5012, 0x5013, 0x5014, 0x5015, 0x5016, 0x5017,
+ 0x5018, 0x5019, 0x501a, 0x501b, 0x501c, 0x501d, 0x501e, 0x501f,
+ 0x5020, 0x5021, 0x5022, 0x5023, 0x5024, 0x5025, 0x5026, 0x5027,
+ 0x5028, 0x5029, 0x502a, 0x502b, 0x502c, 0x502d, 0x502e, 0x502f,
+ 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036, 0x5037,
+ 0x5038, 0x5039, 0x503a, 0x503b, 0x503c, 0x503d, 0x503e, 0x503f,
+ 0x5040, 0x5041, 0x5042, 0x5043, 0x5044, 0x5045, 0x5046, 0x5047, /* 0x5040 */
+ 0x5048, 0x5049, 0x504a, 0x504b, 0x504c, 0x504d, 0x504e, 0x504f,
+ 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5055, 0x5056, 0x5057,
+ 0x5058, 0x5059, 0x505a, 0x505b, 0x505c, 0x505d, 0x505e, 0x505f,
+ 0x5060, 0x5061, 0x5062, 0x5063, 0x5064, 0x5065, 0x5066, 0x5067,
+ 0x5068, 0x5069, 0x506a, 0x506b, 0x506c, 0x506d, 0x506e, 0x506f,
+ 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5076, 0x5077,
+ 0x5078, 0x5079, 0x507a, 0x507b, 0x507c, 0x507d, 0x507e, 0x507f,
+ 0x5080, 0x5081, 0x5082, 0x5083, 0x5084, 0x5085, 0x5086, 0x5087, /* 0x5080 */
+ 0x5088, 0x5089, 0x508a, 0x508b, 0x508c, 0x508d, 0x508e, 0x508f,
+ 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 0x5095, 0x5096, 0x5097,
+ 0x5098, 0x5099, 0x509a, 0x509b, 0x509c, 0x509d, 0x509e, 0x509f,
+ 0x50a0, 0x50a1, 0x50a2, 0x50a3, 0x50a4, 0x50a5, 0x50a6, 0x50a7,
+ 0x50a8, 0x50a9, 0x50aa, 0x50ab, 0x50ac, 0x50ad, 0x50ae, 0x50af,
+ 0x50b0, 0x50b1, 0x50b2, 0x50b3, 0x50b4, 0x50b5, 0x50b6, 0x50b7,
+ 0x50b8, 0x50b9, 0x50ba, 0x50bb, 0x50bc, 0x50bd, 0x50be, 0x50bf,
+ 0x50c0, 0x50c1, 0x50c2, 0x50c3, 0x50c4, 0x50c5, 0x50c6, 0x50c7, /* 0x50c0 */
+ 0x50c8, 0x50c9, 0x50ca, 0x50cb, 0x50cc, 0x50cd, 0x50ce, 0x50cf,
+ 0x50d0, 0x50d1, 0x50d2, 0x50d3, 0x50d4, 0x50d5, 0x50d6, 0x50d7,
+ 0x50d8, 0x50d9, 0x50da, 0x50db, 0x50dc, 0x50dd, 0x50de, 0x50df,
+ 0x50e0, 0x50e1, 0x50e2, 0x50e3, 0x50e4, 0x50e5, 0x50e6, 0x50e7,
+ 0x50e8, 0x50e9, 0x50ea, 0x50eb, 0x50ec, 0x50ed, 0x50ee, 0x50ef,
+ 0x50f0, 0x50f1, 0x50f2, 0x50f3, 0x50f4, 0x50f5, 0x50f6, 0x50f7,
+ 0x50f8, 0x50f9, 0x50fa, 0x50fb, 0x50fc, 0x50fd, 0x50fe, 0x50ff,
+ 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5106, 0x5107, /* 0x5100 */
+ 0x5108, 0x5109, 0x510a, 0x510b, 0x510c, 0x510d, 0x510e, 0x510f,
+ 0x5110, 0x5111, 0x5112, 0x5113, 0x5114, 0x5115, 0x5116, 0x5117,
+ 0x5118, 0x5119, 0x511a, 0x511b, 0x511c, 0x511d, 0x511e, 0x511f,
+ 0x5120, 0x5121, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127,
+ 0x5128, 0x5129, 0x512a, 0x512b, 0x512c, 0x512d, 0x512e, 0x512f,
+ 0x5130, 0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137,
+ 0x5138, 0x5139, 0x513a, 0x513b, 0x513c, 0x513d, 0x513e, 0x513f,
+ 0x5140, 0x5141, 0x5142, 0x5143, 0x5144, 0x5145, 0x5146, 0x5147, /* 0x5140 */
+ 0x5148, 0x5149, 0x514a, 0x514b, 0x514c, 0x514d, 0x514e, 0x514f,
+ 0x5150, 0x5151, 0x5152, 0x5153, 0x5154, 0x5155, 0x5156, 0x5157,
+ 0x5158, 0x5159, 0x515a, 0x515b, 0x515c, 0x515d, 0x515e, 0x515f,
+ 0x5160, 0x5161, 0x5162, 0x5163, 0x5164, 0x5165, 0x5166, 0x5167,
+ 0x5168, 0x5169, 0x516a, 0x516b, 0x516c, 0x516d, 0x516e, 0x516f,
+ 0x5170, 0x5171, 0x5172, 0x5173, 0x5174, 0x5175, 0x5176, 0x5177,
+ 0x5178, 0x5179, 0x517a, 0x517b, 0x517c, 0x517d, 0x517e, 0x517f,
+ 0x5180, 0x5181, 0x5182, 0x5183, 0x5184, 0x5185, 0x5186, 0x5187, /* 0x5180 */
+ 0x5188, 0x5189, 0x518a, 0x518b, 0x518c, 0x518d, 0x518e, 0x518f,
+ 0x5190, 0x5191, 0x5192, 0x5193, 0x5194, 0x5195, 0x5196, 0x5197,
+ 0x5198, 0x5199, 0x519a, 0x519b, 0x519c, 0x519d, 0x519e, 0x519f,
+ 0x51a0, 0x51a1, 0x51a2, 0x51a3, 0x51a4, 0x51a5, 0x51a6, 0x51a7,
+ 0x51a8, 0x51a9, 0x51aa, 0x51ab, 0x51ac, 0x51ad, 0x51ae, 0x51af,
+ 0x51b0, 0x51b1, 0x51b2, 0x51b3, 0x51b4, 0x51b5, 0x51b6, 0x51b7,
+ 0x51b8, 0x51b9, 0x51ba, 0x51bb, 0x51bc, 0x51bd, 0x51be, 0x51bf,
+ 0x51c0, 0x51c1, 0x51c2, 0x51c3, 0x51c4, 0x51c5, 0x51c6, 0x51c7, /* 0x51c0 */
+ 0x51c8, 0x51c9, 0x51ca, 0x51cb, 0x51cc, 0x51cd, 0x51ce, 0x51cf,
+ 0x51d0, 0x51d1, 0x51d2, 0x51d3, 0x51d4, 0x51d5, 0x51d6, 0x51d7,
+ 0x51d8, 0x51d9, 0x51da, 0x51db, 0x51dc, 0x51dd, 0x51de, 0x51df,
+ 0x51e0, 0x51e1, 0x51e2, 0x51e3, 0x51e4, 0x51e5, 0x51e6, 0x51e7,
+ 0x51e8, 0x51e9, 0x51ea, 0x51eb, 0x51ec, 0x51ed, 0x51ee, 0x51ef,
+ 0x51f0, 0x51f1, 0x51f2, 0x51f3, 0x51f4, 0x51f5, 0x51f6, 0x51f7,
+ 0x51f8, 0x51f9, 0x51fa, 0x51fb, 0x51fc, 0x51fd, 0x51fe, 0x51ff,
+ 0x5200, 0x5201, 0x5202, 0x5203, 0x5204, 0x5205, 0x5206, 0x5207, /* 0x5200 */
+ 0x5208, 0x5209, 0x520a, 0x520b, 0x520c, 0x520d, 0x520e, 0x520f,
+ 0x5210, 0x5211, 0x5212, 0x5213, 0x5214, 0x5215, 0x5216, 0x5217,
+ 0x5218, 0x5219, 0x521a, 0x521b, 0x521c, 0x521d, 0x521e, 0x521f,
+ 0x5220, 0x5221, 0x5222, 0x5223, 0x5224, 0x5225, 0x5226, 0x5227,
+ 0x5228, 0x5229, 0x522a, 0x522b, 0x522c, 0x522d, 0x522e, 0x522f,
+ 0x5230, 0x5231, 0x5232, 0x5233, 0x5234, 0x5235, 0x5236, 0x5237,
+ 0x5238, 0x5239, 0x523a, 0x523b, 0x523c, 0x523d, 0x523e, 0x523f,
+ 0x5240, 0x5241, 0x5242, 0x5243, 0x5244, 0x5245, 0x5246, 0x5247, /* 0x5240 */
+ 0x5248, 0x5249, 0x524a, 0x524b, 0x524c, 0x524d, 0x524e, 0x524f,
+ 0x5250, 0x5251, 0x5252, 0x5253, 0x5254, 0x5255, 0x5256, 0x5257,
+ 0x5258, 0x5259, 0x525a, 0x525b, 0x525c, 0x525d, 0x525e, 0x525f,
+ 0x5260, 0x5261, 0x5262, 0x5263, 0x5264, 0x5265, 0x5266, 0x5267,
+ 0x5268, 0x5269, 0x526a, 0x526b, 0x526c, 0x526d, 0x526e, 0x526f,
+ 0x5270, 0x5271, 0x5272, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277,
+ 0x5278, 0x5279, 0x527a, 0x527b, 0x527c, 0x527d, 0x527e, 0x527f,
+ 0x5280, 0x5281, 0x5282, 0x5283, 0x5284, 0x5285, 0x5286, 0x5287, /* 0x5280 */
+ 0x5288, 0x5289, 0x528a, 0x528b, 0x528c, 0x528d, 0x528e, 0x528f,
+ 0x5290, 0x5291, 0x5292, 0x5293, 0x5294, 0x5295, 0x5296, 0x5297,
+ 0x5298, 0x5299, 0x529a, 0x529b, 0x529c, 0x529d, 0x529e, 0x529f,
+ 0x52a0, 0x52a1, 0x52a2, 0x52a3, 0x52a4, 0x52a5, 0x52a6, 0x52a7,
+ 0x52a8, 0x52a9, 0x52aa, 0x52ab, 0x52ac, 0x52ad, 0x52ae, 0x52af,
+ 0x52b0, 0x52b1, 0x52b2, 0x52b3, 0x52b4, 0x52b5, 0x52b6, 0x52b7,
+ 0x52b8, 0x52b9, 0x52ba, 0x52bb, 0x52bc, 0x52bd, 0x52be, 0x52bf,
+ 0x52c0, 0x52c1, 0x52c2, 0x52c3, 0x52c4, 0x52c5, 0x52c6, 0x52c7, /* 0x52c0 */
+ 0x52c8, 0x52c9, 0x52ca, 0x52cb, 0x52cc, 0x52cd, 0x52ce, 0x52cf,
+ 0x52d0, 0x52d1, 0x52d2, 0x52d3, 0x52d4, 0x52d5, 0x52d6, 0x52d7,
+ 0x52d8, 0x52d9, 0x52da, 0x52db, 0x52dc, 0x52dd, 0x52de, 0x52df,
+ 0x52e0, 0x52e1, 0x52e2, 0x52e3, 0x52e4, 0x52e5, 0x52e6, 0x52e7,
+ 0x52e8, 0x52e9, 0x52ea, 0x52eb, 0x52ec, 0x52ed, 0x52ee, 0x52ef,
+ 0x52f0, 0x52f1, 0x52f2, 0x52f3, 0x52f4, 0x52f5, 0x52f6, 0x52f7,
+ 0x52f8, 0x52f9, 0x52fa, 0x52fb, 0x52fc, 0x52fd, 0x52fe, 0x52ff,
+ 0x5300, 0x5301, 0x5302, 0x5303, 0x5304, 0x5305, 0x5306, 0x5307, /* 0x5300 */
+ 0x5308, 0x5309, 0x530a, 0x530b, 0x530c, 0x530d, 0x530e, 0x530f,
+ 0x5310, 0x5311, 0x5312, 0x5313, 0x5314, 0x5315, 0x5316, 0x5317,
+ 0x5318, 0x5319, 0x531a, 0x531b, 0x531c, 0x531d, 0x531e, 0x531f,
+ 0x5320, 0x5321, 0x5322, 0x5323, 0x5324, 0x5325, 0x5326, 0x5327,
+ 0x5328, 0x5329, 0x532a, 0x532b, 0x532c, 0x532d, 0x532e, 0x532f,
+ 0x5330, 0x5331, 0x5332, 0x5333, 0x5334, 0x5335, 0x5336, 0x5337,
+ 0x5338, 0x5339, 0x533a, 0x533b, 0x533c, 0x533d, 0x533e, 0x533f,
+ 0x5340, 0x5341, 0x5342, 0x5343, 0x5344, 0x5345, 0x5346, 0x5347, /* 0x5340 */
+ 0x5348, 0x5349, 0x534a, 0x534b, 0x534c, 0x534d, 0x534e, 0x534f,
+ 0x5350, 0x5351, 0x5352, 0x5353, 0x5354, 0x5355, 0x5356, 0x5357,
+ 0x5358, 0x5359, 0x535a, 0x535b, 0x535c, 0x535d, 0x535e, 0x535f,
+ 0x5360, 0x5361, 0x5362, 0x5363, 0x5364, 0x5365, 0x5366, 0x5367,
+ 0x5368, 0x5369, 0x536a, 0x536b, 0x536c, 0x536d, 0x536e, 0x536f,
+ 0x5370, 0x5371, 0x5372, 0x5373, 0x5374, 0x5375, 0x5376, 0x5377,
+ 0x5378, 0x5379, 0x537a, 0x537b, 0x537c, 0x537d, 0x537e, 0x537f,
+ 0x5380, 0x5381, 0x5382, 0x5383, 0x5384, 0x5385, 0x5386, 0x5387, /* 0x5380 */
+ 0x5388, 0x5389, 0x538a, 0x538b, 0x538c, 0x538d, 0x538e, 0x538f,
+ 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5395, 0x5396, 0x5397,
+ 0x5398, 0x5399, 0x539a, 0x539b, 0x539c, 0x539d, 0x539e, 0x539f,
+ 0x53a0, 0x53a1, 0x53a2, 0x53a3, 0x53a4, 0x53a5, 0x53a6, 0x53a7,
+ 0x53a8, 0x53a9, 0x53aa, 0x53ab, 0x53ac, 0x53ad, 0x53ae, 0x53af,
+ 0x53b0, 0x53b1, 0x53b2, 0x53b3, 0x53b4, 0x53b5, 0x53b6, 0x53b7,
+ 0x53b8, 0x53b9, 0x53ba, 0x53bb, 0x53bc, 0x53bd, 0x53be, 0x53bf,
+ 0x53c0, 0x53c1, 0x53c2, 0x53c3, 0x53c4, 0x53c5, 0x53c6, 0x53c7, /* 0x53c0 */
+ 0x53c8, 0x53c9, 0x53ca, 0x53cb, 0x53cc, 0x53cd, 0x53ce, 0x53cf,
+ 0x53d0, 0x53d1, 0x53d2, 0x53d3, 0x53d4, 0x53d5, 0x53d6, 0x53d7,
+ 0x53d8, 0x53d9, 0x53da, 0x53db, 0x53dc, 0x53dd, 0x53de, 0x53df,
+ 0x53e0, 0x53e1, 0x53e2, 0x53e3, 0x53e4, 0x53e5, 0x53e6, 0x53e7,
+ 0x53e8, 0x53e9, 0x53ea, 0x53eb, 0x53ec, 0x53ed, 0x53ee, 0x53ef,
+ 0x53f0, 0x53f1, 0x53f2, 0x53f3, 0x53f4, 0x53f5, 0x53f6, 0x53f7,
+ 0x53f8, 0x53f9, 0x53fa, 0x53fb, 0x53fc, 0x53fd, 0x53fe, 0x53ff,
+ 0x5400, 0x5401, 0x5402, 0x5403, 0x5404, 0x5405, 0x5406, 0x5407, /* 0x5400 */
+ 0x5408, 0x5409, 0x540a, 0x540b, 0x540c, 0x540d, 0x540e, 0x540f,
+ 0x5410, 0x5411, 0x5412, 0x5413, 0x5414, 0x5415, 0x5416, 0x5417,
+ 0x5418, 0x5419, 0x541a, 0x541b, 0x541c, 0x541d, 0x541e, 0x541f,
+ 0x5420, 0x5421, 0x5422, 0x5423, 0x5424, 0x5425, 0x5426, 0x5427,
+ 0x5428, 0x5429, 0x542a, 0x542b, 0x542c, 0x542d, 0x542e, 0x542f,
+ 0x5430, 0x5431, 0x5432, 0x5433, 0x5434, 0x5435, 0x5436, 0x5437,
+ 0x5438, 0x5439, 0x543a, 0x543b, 0x543c, 0x543d, 0x543e, 0x543f,
+ 0x5440, 0x5441, 0x5442, 0x5443, 0x5444, 0x5445, 0x5446, 0x5447, /* 0x5440 */
+ 0x5448, 0x5449, 0x544a, 0x544b, 0x544c, 0x544d, 0x544e, 0x544f,
+ 0x5450, 0x5451, 0x5452, 0x5453, 0x5454, 0x5455, 0x5456, 0x5457,
+ 0x5458, 0x5459, 0x545a, 0x545b, 0x545c, 0x545d, 0x545e, 0x545f,
+ 0x5460, 0x5461, 0x5462, 0x5463, 0x5464, 0x5465, 0x5466, 0x5467,
+ 0x5468, 0x5469, 0x546a, 0x546b, 0x546c, 0x546d, 0x546e, 0x546f,
+ 0x5470, 0x5471, 0x5472, 0x5473, 0x5474, 0x5475, 0x5476, 0x5477,
+ 0x5478, 0x5479, 0x547a, 0x547b, 0x547c, 0x547d, 0x547e, 0x547f,
+ 0x5480, 0x5481, 0x5482, 0x5483, 0x5484, 0x5485, 0x5486, 0x5487, /* 0x5480 */
+ 0x5488, 0x5489, 0x548a, 0x548b, 0x548c, 0x548d, 0x548e, 0x548f,
+ 0x5490, 0x5491, 0x5492, 0x5493, 0x5494, 0x5495, 0x5496, 0x5497,
+ 0x5498, 0x5499, 0x549a, 0x549b, 0x549c, 0x549d, 0x549e, 0x549f,
+ 0x54a0, 0x54a1, 0x54a2, 0x54a3, 0x54a4, 0x54a5, 0x54a6, 0x54a7,
+ 0x54a8, 0x54a9, 0x54aa, 0x54ab, 0x54ac, 0x54ad, 0x54ae, 0x54af,
+ 0x54b0, 0x54b1, 0x54b2, 0x54b3, 0x54b4, 0x54b5, 0x54b6, 0x54b7,
+ 0x54b8, 0x54b9, 0x54ba, 0x54bb, 0x54bc, 0x54bd, 0x54be, 0x54bf,
+ 0x54c0, 0x54c1, 0x54c2, 0x54c3, 0x54c4, 0x54c5, 0x54c6, 0x54c7, /* 0x54c0 */
+ 0x54c8, 0x54c9, 0x54ca, 0x54cb, 0x54cc, 0x54cd, 0x54ce, 0x54cf,
+ 0x54d0, 0x54d1, 0x54d2, 0x54d3, 0x54d4, 0x54d5, 0x54d6, 0x54d7,
+ 0x54d8, 0x54d9, 0x54da, 0x54db, 0x54dc, 0x54dd, 0x54de, 0x54df,
+ 0x54e0, 0x54e1, 0x54e2, 0x54e3, 0x54e4, 0x54e5, 0x54e6, 0x54e7,
+ 0x54e8, 0x54e9, 0x54ea, 0x54eb, 0x54ec, 0x54ed, 0x54ee, 0x54ef,
+ 0x54f0, 0x54f1, 0x54f2, 0x54f3, 0x54f4, 0x54f5, 0x54f6, 0x54f7,
+ 0x54f8, 0x54f9, 0x54fa, 0x54fb, 0x54fc, 0x54fd, 0x54fe, 0x54ff,
+ 0x5500, 0x5501, 0x5502, 0x5503, 0x5504, 0x5505, 0x5506, 0x5507, /* 0x5500 */
+ 0x5508, 0x5509, 0x550a, 0x550b, 0x550c, 0x550d, 0x550e, 0x550f,
+ 0x5510, 0x5511, 0x5512, 0x5513, 0x5514, 0x5515, 0x5516, 0x5517,
+ 0x5518, 0x5519, 0x551a, 0x551b, 0x551c, 0x551d, 0x551e, 0x551f,
+ 0x5520, 0x5521, 0x5522, 0x5523, 0x5524, 0x5525, 0x5526, 0x5527,
+ 0x5528, 0x5529, 0x552a, 0x552b, 0x552c, 0x552d, 0x552e, 0x552f,
+ 0x5530, 0x5531, 0x5532, 0x5533, 0x5534, 0x5535, 0x5536, 0x5537,
+ 0x5538, 0x5539, 0x553a, 0x553b, 0x553c, 0x553d, 0x553e, 0x553f,
+ 0x5540, 0x5541, 0x5542, 0x5543, 0x5544, 0x5545, 0x5546, 0x5547, /* 0x5540 */
+ 0x5548, 0x5549, 0x554a, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f,
+ 0x5550, 0x5551, 0x5552, 0x5553, 0x5554, 0x5555, 0x5556, 0x5557,
+ 0x5558, 0x5559, 0x555a, 0x555b, 0x555c, 0x555d, 0x555e, 0x555f,
+ 0x5560, 0x5561, 0x5562, 0x5563, 0x5564, 0x5565, 0x5566, 0x5567,
+ 0x5568, 0x5569, 0x556a, 0x556b, 0x556c, 0x556d, 0x556e, 0x556f,
+ 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5575, 0x5576, 0x5577,
+ 0x5578, 0x5579, 0x557a, 0x557b, 0x557c, 0x557d, 0x557e, 0x557f,
+ 0x5580, 0x5581, 0x5582, 0x5583, 0x5584, 0x5585, 0x5586, 0x5587, /* 0x5580 */
+ 0x5588, 0x5589, 0x558a, 0x558b, 0x558c, 0x558d, 0x558e, 0x558f,
+ 0x5590, 0x5591, 0x5592, 0x5593, 0x5594, 0x5595, 0x5596, 0x5597,
+ 0x5598, 0x5599, 0x559a, 0x559b, 0x559c, 0x559d, 0x559e, 0x559f,
+ 0x55a0, 0x55a1, 0x55a2, 0x55a3, 0x55a4, 0x55a5, 0x55a6, 0x55a7,
+ 0x55a8, 0x55a9, 0x55aa, 0x55ab, 0x55ac, 0x55ad, 0x55ae, 0x55af,
+ 0x55b0, 0x55b1, 0x55b2, 0x55b3, 0x55b4, 0x55b5, 0x55b6, 0x55b7,
+ 0x55b8, 0x55b9, 0x55ba, 0x55bb, 0x55bc, 0x55bd, 0x55be, 0x55bf,
+ 0x55c0, 0x55c1, 0x55c2, 0x55c3, 0x55c4, 0x55c5, 0x55c6, 0x55c7, /* 0x55c0 */
+ 0x55c8, 0x55c9, 0x55ca, 0x55cb, 0x55cc, 0x55cd, 0x55ce, 0x55cf,
+ 0x55d0, 0x55d1, 0x55d2, 0x55d3, 0x55d4, 0x55d5, 0x55d6, 0x55d7,
+ 0x55d8, 0x55d9, 0x55da, 0x55db, 0x55dc, 0x55dd, 0x55de, 0x55df,
+ 0x55e0, 0x55e1, 0x55e2, 0x55e3, 0x55e4, 0x55e5, 0x55e6, 0x55e7,
+ 0x55e8, 0x55e9, 0x55ea, 0x55eb, 0x55ec, 0x55ed, 0x55ee, 0x55ef,
+ 0x55f0, 0x55f1, 0x55f2, 0x55f3, 0x55f4, 0x55f5, 0x55f6, 0x55f7,
+ 0x55f8, 0x55f9, 0x55fa, 0x55fb, 0x55fc, 0x55fd, 0x55fe, 0x55ff,
+ 0x5600, 0x5601, 0x5602, 0x5603, 0x5604, 0x5605, 0x5606, 0x5607, /* 0x5600 */
+ 0x5608, 0x5609, 0x560a, 0x560b, 0x560c, 0x560d, 0x560e, 0x560f,
+ 0x5610, 0x5611, 0x5612, 0x5613, 0x5614, 0x5615, 0x5616, 0x5617,
+ 0x5618, 0x5619, 0x561a, 0x561b, 0x561c, 0x561d, 0x561e, 0x561f,
+ 0x5620, 0x5621, 0x5622, 0x5623, 0x5624, 0x5625, 0x5626, 0x5627,
+ 0x5628, 0x5629, 0x562a, 0x562b, 0x562c, 0x562d, 0x562e, 0x562f,
+ 0x5630, 0x5631, 0x5632, 0x5633, 0x5634, 0x5635, 0x5636, 0x5637,
+ 0x5638, 0x5639, 0x563a, 0x563b, 0x563c, 0x563d, 0x563e, 0x563f,
+ 0x5640, 0x5641, 0x5642, 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, /* 0x5640 */
+ 0x5648, 0x5649, 0x564a, 0x564b, 0x564c, 0x564d, 0x564e, 0x564f,
+ 0x5650, 0x5651, 0x5652, 0x5653, 0x5654, 0x5655, 0x5656, 0x5657,
+ 0x5658, 0x5659, 0x565a, 0x565b, 0x565c, 0x565d, 0x565e, 0x565f,
+ 0x5660, 0x5661, 0x5662, 0x5663, 0x5664, 0x5665, 0x5666, 0x5667,
+ 0x5668, 0x5669, 0x566a, 0x566b, 0x566c, 0x566d, 0x566e, 0x566f,
+ 0x5670, 0x5671, 0x5672, 0x5673, 0x5674, 0x5675, 0x5676, 0x5677,
+ 0x5678, 0x5679, 0x567a, 0x567b, 0x567c, 0x567d, 0x567e, 0x567f,
+ 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 0x5685, 0x5686, 0x5687, /* 0x5680 */
+ 0x5688, 0x5689, 0x568a, 0x568b, 0x568c, 0x568d, 0x568e, 0x568f,
+ 0x5690, 0x5691, 0x5692, 0x5693, 0x5694, 0x5695, 0x5696, 0x5697,
+ 0x5698, 0x5699, 0x569a, 0x569b, 0x569c, 0x569d, 0x569e, 0x569f,
+ 0x56a0, 0x56a1, 0x56a2, 0x56a3, 0x56a4, 0x56a5, 0x56a6, 0x56a7,
+ 0x56a8, 0x56a9, 0x56aa, 0x56ab, 0x56ac, 0x56ad, 0x56ae, 0x56af,
+ 0x56b0, 0x56b1, 0x56b2, 0x56b3, 0x56b4, 0x56b5, 0x56b6, 0x56b7,
+ 0x56b8, 0x56b9, 0x56ba, 0x56bb, 0x56bc, 0x56bd, 0x56be, 0x56bf,
+ 0x56c0, 0x56c1, 0x56c2, 0x56c3, 0x56c4, 0x56c5, 0x56c6, 0x56c7, /* 0x56c0 */
+ 0x56c8, 0x56c9, 0x56ca, 0x56cb, 0x56cc, 0x56cd, 0x56ce, 0x56cf,
+ 0x56d0, 0x56d1, 0x56d2, 0x56d3, 0x56d4, 0x56d5, 0x56d6, 0x56d7,
+ 0x56d8, 0x56d9, 0x56da, 0x56db, 0x56dc, 0x56dd, 0x56de, 0x56df,
+ 0x56e0, 0x56e1, 0x56e2, 0x56e3, 0x56e4, 0x56e5, 0x56e6, 0x56e7,
+ 0x56e8, 0x56e9, 0x56ea, 0x56eb, 0x56ec, 0x56ed, 0x56ee, 0x56ef,
+ 0x56f0, 0x56f1, 0x56f2, 0x56f3, 0x56f4, 0x56f5, 0x56f6, 0x56f7,
+ 0x56f8, 0x56f9, 0x56fa, 0x56fb, 0x56fc, 0x56fd, 0x56fe, 0x56ff,
+ 0x5700, 0x5701, 0x5702, 0x5703, 0x5704, 0x5705, 0x5706, 0x5707, /* 0x5700 */
+ 0x5708, 0x5709, 0x570a, 0x570b, 0x570c, 0x570d, 0x570e, 0x570f,
+ 0x5710, 0x5711, 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717,
+ 0x5718, 0x5719, 0x571a, 0x571b, 0x571c, 0x571d, 0x571e, 0x571f,
+ 0x5720, 0x5721, 0x5722, 0x5723, 0x5724, 0x5725, 0x5726, 0x5727,
+ 0x5728, 0x5729, 0x572a, 0x572b, 0x572c, 0x572d, 0x572e, 0x572f,
+ 0x5730, 0x5731, 0x5732, 0x5733, 0x5734, 0x5735, 0x5736, 0x5737,
+ 0x5738, 0x5739, 0x573a, 0x573b, 0x573c, 0x573d, 0x573e, 0x573f,
+ 0x5740, 0x5741, 0x5742, 0x5743, 0x5744, 0x5745, 0x5746, 0x5747, /* 0x5740 */
+ 0x5748, 0x5749, 0x574a, 0x574b, 0x574c, 0x574d, 0x574e, 0x574f,
+ 0x5750, 0x5751, 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5757,
+ 0x5758, 0x5759, 0x575a, 0x575b, 0x575c, 0x575d, 0x575e, 0x575f,
+ 0x5760, 0x5761, 0x5762, 0x5763, 0x5764, 0x5765, 0x5766, 0x5767,
+ 0x5768, 0x5769, 0x576a, 0x576b, 0x576c, 0x576d, 0x576e, 0x576f,
+ 0x5770, 0x5771, 0x5772, 0x5773, 0x5774, 0x5775, 0x5776, 0x5777,
+ 0x5778, 0x5779, 0x577a, 0x577b, 0x577c, 0x577d, 0x577e, 0x577f,
+ 0x5780, 0x5781, 0x5782, 0x5783, 0x5784, 0x5785, 0x5786, 0x5787, /* 0x5780 */
+ 0x5788, 0x5789, 0x578a, 0x578b, 0x578c, 0x578d, 0x578e, 0x578f,
+ 0x5790, 0x5791, 0x5792, 0x5793, 0x5794, 0x5795, 0x5796, 0x5797,
+ 0x5798, 0x5799, 0x579a, 0x579b, 0x579c, 0x579d, 0x579e, 0x579f,
+ 0x57a0, 0x57a1, 0x57a2, 0x57a3, 0x57a4, 0x57a5, 0x57a6, 0x57a7,
+ 0x57a8, 0x57a9, 0x57aa, 0x57ab, 0x57ac, 0x57ad, 0x57ae, 0x57af,
+ 0x57b0, 0x57b1, 0x57b2, 0x57b3, 0x57b4, 0x57b5, 0x57b6, 0x57b7,
+ 0x57b8, 0x57b9, 0x57ba, 0x57bb, 0x57bc, 0x57bd, 0x57be, 0x57bf,
+ 0x57c0, 0x57c1, 0x57c2, 0x57c3, 0x57c4, 0x57c5, 0x57c6, 0x57c7, /* 0x57c0 */
+ 0x57c8, 0x57c9, 0x57ca, 0x57cb, 0x57cc, 0x57cd, 0x57ce, 0x57cf,
+ 0x57d0, 0x57d1, 0x57d2, 0x57d3, 0x57d4, 0x57d5, 0x57d6, 0x57d7,
+ 0x57d8, 0x57d9, 0x57da, 0x57db, 0x57dc, 0x57dd, 0x57de, 0x57df,
+ 0x57e0, 0x57e1, 0x57e2, 0x57e3, 0x57e4, 0x57e5, 0x57e6, 0x57e7,
+ 0x57e8, 0x57e9, 0x57ea, 0x57eb, 0x57ec, 0x57ed, 0x57ee, 0x57ef,
+ 0x57f0, 0x57f1, 0x57f2, 0x57f3, 0x57f4, 0x57f5, 0x57f6, 0x57f7,
+ 0x57f8, 0x57f9, 0x57fa, 0x57fb, 0x57fc, 0x57fd, 0x57fe, 0x57ff,
+ 0x5800, 0x5801, 0x5802, 0x5803, 0x5804, 0x5805, 0x5806, 0x5807, /* 0x5800 */
+ 0x5808, 0x5809, 0x580a, 0x580b, 0x580c, 0x580d, 0x580e, 0x580f,
+ 0x5810, 0x5811, 0x5812, 0x5813, 0x5814, 0x5815, 0x5816, 0x5817,
+ 0x5818, 0x5819, 0x581a, 0x581b, 0x581c, 0x581d, 0x581e, 0x581f,
+ 0x5820, 0x5821, 0x5822, 0x5823, 0x5824, 0x5825, 0x5826, 0x5827,
+ 0x5828, 0x5829, 0x582a, 0x582b, 0x582c, 0x582d, 0x582e, 0x582f,
+ 0x5830, 0x5831, 0x5832, 0x5833, 0x5834, 0x5835, 0x5836, 0x5837,
+ 0x5838, 0x5839, 0x583a, 0x583b, 0x583c, 0x583d, 0x583e, 0x583f,
+ 0x5840, 0x5841, 0x5842, 0x5843, 0x5844, 0x5845, 0x5846, 0x5847, /* 0x5840 */
+ 0x5848, 0x5849, 0x584a, 0x584b, 0x584c, 0x584d, 0x584e, 0x584f,
+ 0x5850, 0x5851, 0x5852, 0x5853, 0x5854, 0x5855, 0x5856, 0x5857,
+ 0x5858, 0x5859, 0x585a, 0x585b, 0x585c, 0x585d, 0x585e, 0x585f,
+ 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, 0x5865, 0x5866, 0x5867,
+ 0x5868, 0x5869, 0x586a, 0x586b, 0x586c, 0x586d, 0x586e, 0x586f,
+ 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877,
+ 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587e, 0x587f,
+ 0x5880, 0x5881, 0x5882, 0x5883, 0x5884, 0x5885, 0x5886, 0x5887, /* 0x5880 */
+ 0x5888, 0x5889, 0x588a, 0x588b, 0x588c, 0x588d, 0x588e, 0x588f,
+ 0x5890, 0x5891, 0x5892, 0x5893, 0x5894, 0x5895, 0x5896, 0x5897,
+ 0x5898, 0x5899, 0x589a, 0x589b, 0x589c, 0x589d, 0x589e, 0x589f,
+ 0x58a0, 0x58a1, 0x58a2, 0x58a3, 0x58a4, 0x58a5, 0x58a6, 0x58a7,
+ 0x58a8, 0x58a9, 0x58aa, 0x58ab, 0x58ac, 0x58ad, 0x58ae, 0x58af,
+ 0x58b0, 0x58b1, 0x58b2, 0x58b3, 0x58b4, 0x58b5, 0x58b6, 0x58b7,
+ 0x58b8, 0x58b9, 0x58ba, 0x58bb, 0x58bc, 0x58bd, 0x58be, 0x58bf,
+ 0x58c0, 0x58c1, 0x58c2, 0x58c3, 0x58c4, 0x58c5, 0x58c6, 0x58c7, /* 0x58c0 */
+ 0x58c8, 0x58c9, 0x58ca, 0x58cb, 0x58cc, 0x58cd, 0x58ce, 0x58cf,
+ 0x58d0, 0x58d1, 0x58d2, 0x58d3, 0x58d4, 0x58d5, 0x58d6, 0x58d7,
+ 0x58d8, 0x58d9, 0x58da, 0x58db, 0x58dc, 0x58dd, 0x58de, 0x58df,
+ 0x58e0, 0x58e1, 0x58e2, 0x58e3, 0x58e4, 0x58e5, 0x58e6, 0x58e7,
+ 0x58e8, 0x58e9, 0x58ea, 0x58eb, 0x58ec, 0x58ed, 0x58ee, 0x58ef,
+ 0x58f0, 0x58f1, 0x58f2, 0x58f3, 0x58f4, 0x58f5, 0x58f6, 0x58f7,
+ 0x58f8, 0x58f9, 0x58fa, 0x58fb, 0x58fc, 0x58fd, 0x58fe, 0x58ff,
+ 0x5900, 0x5901, 0x5902, 0x5903, 0x5904, 0x5905, 0x5906, 0x5907, /* 0x5900 */
+ 0x5908, 0x5909, 0x590a, 0x590b, 0x590c, 0x590d, 0x590e, 0x590f,
+ 0x5910, 0x5911, 0x5912, 0x5913, 0x5914, 0x5915, 0x5916, 0x5917,
+ 0x5918, 0x5919, 0x591a, 0x591b, 0x591c, 0x591d, 0x591e, 0x591f,
+ 0x5920, 0x5921, 0x5922, 0x5923, 0x5924, 0x5925, 0x5926, 0x5927,
+ 0x5928, 0x5929, 0x592a, 0x592b, 0x592c, 0x592d, 0x592e, 0x592f,
+ 0x5930, 0x5931, 0x5932, 0x5933, 0x5934, 0x5935, 0x5936, 0x5937,
+ 0x5938, 0x5939, 0x593a, 0x593b, 0x593c, 0x593d, 0x593e, 0x593f,
+ 0x5940, 0x5941, 0x5942, 0x5943, 0x5944, 0x5945, 0x5946, 0x5947, /* 0x5940 */
+ 0x5948, 0x5949, 0x594a, 0x594b, 0x594c, 0x594d, 0x594e, 0x594f,
+ 0x5950, 0x5951, 0x5952, 0x5953, 0x5954, 0x5955, 0x5956, 0x5957,
+ 0x5958, 0x5959, 0x595a, 0x595b, 0x595c, 0x595d, 0x595e, 0x595f,
+ 0x5960, 0x5961, 0x5962, 0x5963, 0x5964, 0x5965, 0x5966, 0x5967,
+ 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f,
+ 0x5970, 0x5971, 0x5972, 0x5973, 0x5974, 0x5975, 0x5976, 0x5977,
+ 0x5978, 0x5979, 0x597a, 0x597b, 0x597c, 0x597d, 0x597e, 0x597f,
+ 0x5980, 0x5981, 0x5982, 0x5983, 0x5984, 0x5985, 0x5986, 0x5987, /* 0x5980 */
+ 0x5988, 0x5989, 0x598a, 0x598b, 0x598c, 0x598d, 0x598e, 0x598f,
+ 0x5990, 0x5991, 0x5992, 0x5993, 0x5994, 0x5995, 0x5996, 0x5997,
+ 0x5998, 0x5999, 0x599a, 0x599b, 0x599c, 0x599d, 0x599e, 0x599f,
+ 0x59a0, 0x59a1, 0x59a2, 0x59a3, 0x59a4, 0x59a5, 0x59a6, 0x59a7,
+ 0x59a8, 0x59a9, 0x59aa, 0x59ab, 0x59ac, 0x59ad, 0x59ae, 0x59af,
+ 0x59b0, 0x59b1, 0x59b2, 0x59b3, 0x59b4, 0x59b5, 0x59b6, 0x59b7,
+ 0x59b8, 0x59b9, 0x59ba, 0x59bb, 0x59bc, 0x59bd, 0x59be, 0x59bf,
+ 0x59c0, 0x59c1, 0x59c2, 0x59c3, 0x59c4, 0x59c5, 0x59c6, 0x59c7, /* 0x59c0 */
+ 0x59c8, 0x59c9, 0x59ca, 0x59cb, 0x59cc, 0x59cd, 0x59ce, 0x59cf,
+ 0x59d0, 0x59d1, 0x59d2, 0x59d3, 0x59d4, 0x59d5, 0x59d6, 0x59d7,
+ 0x59d8, 0x59d9, 0x59da, 0x59db, 0x59dc, 0x59dd, 0x59de, 0x59df,
+ 0x59e0, 0x59e1, 0x59e2, 0x59e3, 0x59e4, 0x59e5, 0x59e6, 0x59e7,
+ 0x59e8, 0x59e9, 0x59ea, 0x59eb, 0x59ec, 0x59ed, 0x59ee, 0x59ef,
+ 0x59f0, 0x59f1, 0x59f2, 0x59f3, 0x59f4, 0x59f5, 0x59f6, 0x59f7,
+ 0x59f8, 0x59f9, 0x59fa, 0x59fb, 0x59fc, 0x59fd, 0x59fe, 0x59ff,
+ 0x5a00, 0x5a01, 0x5a02, 0x5a03, 0x5a04, 0x5a05, 0x5a06, 0x5a07, /* 0x5a00 */
+ 0x5a08, 0x5a09, 0x5a0a, 0x5a0b, 0x5a0c, 0x5a0d, 0x5a0e, 0x5a0f,
+ 0x5a10, 0x5a11, 0x5a12, 0x5a13, 0x5a14, 0x5a15, 0x5a16, 0x5a17,
+ 0x5a18, 0x5a19, 0x5a1a, 0x5a1b, 0x5a1c, 0x5a1d, 0x5a1e, 0x5a1f,
+ 0x5a20, 0x5a21, 0x5a22, 0x5a23, 0x5a24, 0x5a25, 0x5a26, 0x5a27,
+ 0x5a28, 0x5a29, 0x5a2a, 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f,
+ 0x5a30, 0x5a31, 0x5a32, 0x5a33, 0x5a34, 0x5a35, 0x5a36, 0x5a37,
+ 0x5a38, 0x5a39, 0x5a3a, 0x5a3b, 0x5a3c, 0x5a3d, 0x5a3e, 0x5a3f,
+ 0x5a40, 0x5a41, 0x5a42, 0x5a43, 0x5a44, 0x5a45, 0x5a46, 0x5a47, /* 0x5a40 */
+ 0x5a48, 0x5a49, 0x5a4a, 0x5a4b, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f,
+ 0x5a50, 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a55, 0x5a56, 0x5a57,
+ 0x5a58, 0x5a59, 0x5a5a, 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f,
+ 0x5a60, 0x5a61, 0x5a62, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a67,
+ 0x5a68, 0x5a69, 0x5a6a, 0x5a6b, 0x5a6c, 0x5a6d, 0x5a6e, 0x5a6f,
+ 0x5a70, 0x5a71, 0x5a72, 0x5a73, 0x5a74, 0x5a75, 0x5a76, 0x5a77,
+ 0x5a78, 0x5a79, 0x5a7a, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5a7f,
+ 0x5a80, 0x5a81, 0x5a82, 0x5a83, 0x5a84, 0x5a85, 0x5a86, 0x5a87, /* 0x5a80 */
+ 0x5a88, 0x5a89, 0x5a8a, 0x5a8b, 0x5a8c, 0x5a8d, 0x5a8e, 0x5a8f,
+ 0x5a90, 0x5a91, 0x5a92, 0x5a93, 0x5a94, 0x5a95, 0x5a96, 0x5a97,
+ 0x5a98, 0x5a99, 0x5a9a, 0x5a9b, 0x5a9c, 0x5a9d, 0x5a9e, 0x5a9f,
+ 0x5aa0, 0x5aa1, 0x5aa2, 0x5aa3, 0x5aa4, 0x5aa5, 0x5aa6, 0x5aa7,
+ 0x5aa8, 0x5aa9, 0x5aaa, 0x5aab, 0x5aac, 0x5aad, 0x5aae, 0x5aaf,
+ 0x5ab0, 0x5ab1, 0x5ab2, 0x5ab3, 0x5ab4, 0x5ab5, 0x5ab6, 0x5ab7,
+ 0x5ab8, 0x5ab9, 0x5aba, 0x5abb, 0x5abc, 0x5abd, 0x5abe, 0x5abf,
+ 0x5ac0, 0x5ac1, 0x5ac2, 0x5ac3, 0x5ac4, 0x5ac5, 0x5ac6, 0x5ac7, /* 0x5ac0 */
+ 0x5ac8, 0x5ac9, 0x5aca, 0x5acb, 0x5acc, 0x5acd, 0x5ace, 0x5acf,
+ 0x5ad0, 0x5ad1, 0x5ad2, 0x5ad3, 0x5ad4, 0x5ad5, 0x5ad6, 0x5ad7,
+ 0x5ad8, 0x5ad9, 0x5ada, 0x5adb, 0x5adc, 0x5add, 0x5ade, 0x5adf,
+ 0x5ae0, 0x5ae1, 0x5ae2, 0x5ae3, 0x5ae4, 0x5ae5, 0x5ae6, 0x5ae7,
+ 0x5ae8, 0x5ae9, 0x5aea, 0x5aeb, 0x5aec, 0x5aed, 0x5aee, 0x5aef,
+ 0x5af0, 0x5af1, 0x5af2, 0x5af3, 0x5af4, 0x5af5, 0x5af6, 0x5af7,
+ 0x5af8, 0x5af9, 0x5afa, 0x5afb, 0x5afc, 0x5afd, 0x5afe, 0x5aff,
+ 0x5b00, 0x5b01, 0x5b02, 0x5b03, 0x5b04, 0x5b05, 0x5b06, 0x5b07, /* 0x5b00 */
+ 0x5b08, 0x5b09, 0x5b0a, 0x5b0b, 0x5b0c, 0x5b0d, 0x5b0e, 0x5b0f,
+ 0x5b10, 0x5b11, 0x5b12, 0x5b13, 0x5b14, 0x5b15, 0x5b16, 0x5b17,
+ 0x5b18, 0x5b19, 0x5b1a, 0x5b1b, 0x5b1c, 0x5b1d, 0x5b1e, 0x5b1f,
+ 0x5b20, 0x5b21, 0x5b22, 0x5b23, 0x5b24, 0x5b25, 0x5b26, 0x5b27,
+ 0x5b28, 0x5b29, 0x5b2a, 0x5b2b, 0x5b2c, 0x5b2d, 0x5b2e, 0x5b2f,
+ 0x5b30, 0x5b31, 0x5b32, 0x5b33, 0x5b34, 0x5b35, 0x5b36, 0x5b37,
+ 0x5b38, 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f,
+ 0x5b40, 0x5b41, 0x5b42, 0x5b43, 0x5b44, 0x5b45, 0x5b46, 0x5b47, /* 0x5b40 */
+ 0x5b48, 0x5b49, 0x5b4a, 0x5b4b, 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f,
+ 0x5b50, 0x5b51, 0x5b52, 0x5b53, 0x5b54, 0x5b55, 0x5b56, 0x5b57,
+ 0x5b58, 0x5b59, 0x5b5a, 0x5b5b, 0x5b5c, 0x5b5d, 0x5b5e, 0x5b5f,
+ 0x5b60, 0x5b61, 0x5b62, 0x5b63, 0x5b64, 0x5b65, 0x5b66, 0x5b67,
+ 0x5b68, 0x5b69, 0x5b6a, 0x5b6b, 0x5b6c, 0x5b6d, 0x5b6e, 0x5b6f,
+ 0x5b70, 0x5b71, 0x5b72, 0x5b73, 0x5b74, 0x5b75, 0x5b76, 0x5b77,
+ 0x5b78, 0x5b79, 0x5b7a, 0x5b7b, 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f,
+ 0x5b80, 0x5b81, 0x5b82, 0x5b83, 0x5b84, 0x5b85, 0x5b86, 0x5b87, /* 0x5b80 */
+ 0x5b88, 0x5b89, 0x5b8a, 0x5b8b, 0x5b8c, 0x5b8d, 0x5b8e, 0x5b8f,
+ 0x5b90, 0x5b91, 0x5b92, 0x5b93, 0x5b94, 0x5b95, 0x5b96, 0x5b97,
+ 0x5b98, 0x5b99, 0x5b9a, 0x5b9b, 0x5b9c, 0x5b9d, 0x5b9e, 0x5b9f,
+ 0x5ba0, 0x5ba1, 0x5ba2, 0x5ba3, 0x5ba4, 0x5ba5, 0x5ba6, 0x5ba7,
+ 0x5ba8, 0x5ba9, 0x5baa, 0x5bab, 0x5bac, 0x5bad, 0x5bae, 0x5baf,
+ 0x5bb0, 0x5bb1, 0x5bb2, 0x5bb3, 0x5bb4, 0x5bb5, 0x5bb6, 0x5bb7,
+ 0x5bb8, 0x5bb9, 0x5bba, 0x5bbb, 0x5bbc, 0x5bbd, 0x5bbe, 0x5bbf,
+ 0x5bc0, 0x5bc1, 0x5bc2, 0x5bc3, 0x5bc4, 0x5bc5, 0x5bc6, 0x5bc7, /* 0x5bc0 */
+ 0x5bc8, 0x5bc9, 0x5bca, 0x5bcb, 0x5bcc, 0x5bcd, 0x5bce, 0x5bcf,
+ 0x5bd0, 0x5bd1, 0x5bd2, 0x5bd3, 0x5bd4, 0x5bd5, 0x5bd6, 0x5bd7,
+ 0x5bd8, 0x5bd9, 0x5bda, 0x5bdb, 0x5bdc, 0x5bdd, 0x5bde, 0x5bdf,
+ 0x5be0, 0x5be1, 0x5be2, 0x5be3, 0x5be4, 0x5be5, 0x5be6, 0x5be7,
+ 0x5be8, 0x5be9, 0x5bea, 0x5beb, 0x5bec, 0x5bed, 0x5bee, 0x5bef,
+ 0x5bf0, 0x5bf1, 0x5bf2, 0x5bf3, 0x5bf4, 0x5bf5, 0x5bf6, 0x5bf7,
+ 0x5bf8, 0x5bf9, 0x5bfa, 0x5bfb, 0x5bfc, 0x5bfd, 0x5bfe, 0x5bff,
+ 0x5c00, 0x5c01, 0x5c02, 0x5c03, 0x5c04, 0x5c05, 0x5c06, 0x5c07, /* 0x5c00 */
+ 0x5c08, 0x5c09, 0x5c0a, 0x5c0b, 0x5c0c, 0x5c0d, 0x5c0e, 0x5c0f,
+ 0x5c10, 0x5c11, 0x5c12, 0x5c13, 0x5c14, 0x5c15, 0x5c16, 0x5c17,
+ 0x5c18, 0x5c19, 0x5c1a, 0x5c1b, 0x5c1c, 0x5c1d, 0x5c1e, 0x5c1f,
+ 0x5c20, 0x5c21, 0x5c22, 0x5c23, 0x5c24, 0x5c25, 0x5c26, 0x5c27,
+ 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2c, 0x5c2d, 0x5c2e, 0x5c2f,
+ 0x5c30, 0x5c31, 0x5c32, 0x5c33, 0x5c34, 0x5c35, 0x5c36, 0x5c37,
+ 0x5c38, 0x5c39, 0x5c3a, 0x5c3b, 0x5c3c, 0x5c3d, 0x5c3e, 0x5c3f,
+ 0x5c40, 0x5c41, 0x5c42, 0x5c43, 0x5c44, 0x5c45, 0x5c46, 0x5c47, /* 0x5c40 */
+ 0x5c48, 0x5c49, 0x5c4a, 0x5c4b, 0x5c4c, 0x5c4d, 0x5c4e, 0x5c4f,
+ 0x5c50, 0x5c51, 0x5c52, 0x5c53, 0x5c54, 0x5c55, 0x5c56, 0x5c57,
+ 0x5c58, 0x5c59, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d, 0x5c5e, 0x5c5f,
+ 0x5c60, 0x5c61, 0x5c62, 0x5c63, 0x5c64, 0x5c65, 0x5c66, 0x5c67,
+ 0x5c68, 0x5c69, 0x5c6a, 0x5c6b, 0x5c6c, 0x5c6d, 0x5c6e, 0x5c6f,
+ 0x5c70, 0x5c71, 0x5c72, 0x5c73, 0x5c74, 0x5c75, 0x5c76, 0x5c77,
+ 0x5c78, 0x5c79, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c7e, 0x5c7f,
+ 0x5c80, 0x5c81, 0x5c82, 0x5c83, 0x5c84, 0x5c85, 0x5c86, 0x5c87, /* 0x5c80 */
+ 0x5c88, 0x5c89, 0x5c8a, 0x5c8b, 0x5c8c, 0x5c8d, 0x5c8e, 0x5c8f,
+ 0x5c90, 0x5c91, 0x5c92, 0x5c93, 0x5c94, 0x5c95, 0x5c96, 0x5c97,
+ 0x5c98, 0x5c99, 0x5c9a, 0x5c9b, 0x5c9c, 0x5c9d, 0x5c9e, 0x5c9f,
+ 0x5ca0, 0x5ca1, 0x5ca2, 0x5ca3, 0x5ca4, 0x5ca5, 0x5ca6, 0x5ca7,
+ 0x5ca8, 0x5ca9, 0x5caa, 0x5cab, 0x5cac, 0x5cad, 0x5cae, 0x5caf,
+ 0x5cb0, 0x5cb1, 0x5cb2, 0x5cb3, 0x5cb4, 0x5cb5, 0x5cb6, 0x5cb7,
+ 0x5cb8, 0x5cb9, 0x5cba, 0x5cbb, 0x5cbc, 0x5cbd, 0x5cbe, 0x5cbf,
+ 0x5cc0, 0x5cc1, 0x5cc2, 0x5cc3, 0x5cc4, 0x5cc5, 0x5cc6, 0x5cc7, /* 0x5cc0 */
+ 0x5cc8, 0x5cc9, 0x5cca, 0x5ccb, 0x5ccc, 0x5ccd, 0x5cce, 0x5ccf,
+ 0x5cd0, 0x5cd1, 0x5cd2, 0x5cd3, 0x5cd4, 0x5cd5, 0x5cd6, 0x5cd7,
+ 0x5cd8, 0x5cd9, 0x5cda, 0x5cdb, 0x5cdc, 0x5cdd, 0x5cde, 0x5cdf,
+ 0x5ce0, 0x5ce1, 0x5ce2, 0x5ce3, 0x5ce4, 0x5ce5, 0x5ce6, 0x5ce7,
+ 0x5ce8, 0x5ce9, 0x5cea, 0x5ceb, 0x5cec, 0x5ced, 0x5cee, 0x5cef,
+ 0x5cf0, 0x5cf1, 0x5cf2, 0x5cf3, 0x5cf4, 0x5cf5, 0x5cf6, 0x5cf7,
+ 0x5cf8, 0x5cf9, 0x5cfa, 0x5cfb, 0x5cfc, 0x5cfd, 0x5cfe, 0x5cff,
+ 0x5d00, 0x5d01, 0x5d02, 0x5d03, 0x5d04, 0x5d05, 0x5d06, 0x5d07, /* 0x5d00 */
+ 0x5d08, 0x5d09, 0x5d0a, 0x5d0b, 0x5d0c, 0x5d0d, 0x5d0e, 0x5d0f,
+ 0x5d10, 0x5d11, 0x5d12, 0x5d13, 0x5d14, 0x5d15, 0x5d16, 0x5d17,
+ 0x5d18, 0x5d19, 0x5d1a, 0x5d1b, 0x5d1c, 0x5d1d, 0x5d1e, 0x5d1f,
+ 0x5d20, 0x5d21, 0x5d22, 0x5d23, 0x5d24, 0x5d25, 0x5d26, 0x5d27,
+ 0x5d28, 0x5d29, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2d, 0x5d2e, 0x5d2f,
+ 0x5d30, 0x5d31, 0x5d32, 0x5d33, 0x5d34, 0x5d35, 0x5d36, 0x5d37,
+ 0x5d38, 0x5d39, 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3d, 0x5d3e, 0x5d3f,
+ 0x5d40, 0x5d41, 0x5d42, 0x5d43, 0x5d44, 0x5d45, 0x5d46, 0x5d47, /* 0x5d40 */
+ 0x5d48, 0x5d49, 0x5d4a, 0x5d4b, 0x5d4c, 0x5d4d, 0x5d4e, 0x5d4f,
+ 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57,
+ 0x5d58, 0x5d59, 0x5d5a, 0x5d5b, 0x5d5c, 0x5d5d, 0x5d5e, 0x5d5f,
+ 0x5d60, 0x5d61, 0x5d62, 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67,
+ 0x5d68, 0x5d69, 0x5d6a, 0x5d6b, 0x5d6c, 0x5d6d, 0x5d6e, 0x5d6f,
+ 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d74, 0x5d75, 0x5d76, 0x5d77,
+ 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5d7f,
+ 0x5d80, 0x5d81, 0x5d82, 0x5d83, 0x5d84, 0x5d85, 0x5d86, 0x5d87, /* 0x5d80 */
+ 0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c, 0x5d8d, 0x5d8e, 0x5d8f,
+ 0x5d90, 0x5d91, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d96, 0x5d97,
+ 0x5d98, 0x5d99, 0x5d9a, 0x5d9b, 0x5d9c, 0x5d9d, 0x5d9e, 0x5d9f,
+ 0x5da0, 0x5da1, 0x5da2, 0x5da3, 0x5da4, 0x5da5, 0x5da6, 0x5da7,
+ 0x5da8, 0x5da9, 0x5daa, 0x5dab, 0x5dac, 0x5dad, 0x5dae, 0x5daf,
+ 0x5db0, 0x5db1, 0x5db2, 0x5db3, 0x5db4, 0x5db5, 0x5db6, 0x5db7,
+ 0x5db8, 0x5db9, 0x5dba, 0x5dbb, 0x5dbc, 0x5dbd, 0x5dbe, 0x5dbf,
+ 0x5dc0, 0x5dc1, 0x5dc2, 0x5dc3, 0x5dc4, 0x5dc5, 0x5dc6, 0x5dc7, /* 0x5dc0 */
+ 0x5dc8, 0x5dc9, 0x5dca, 0x5dcb, 0x5dcc, 0x5dcd, 0x5dce, 0x5dcf,
+ 0x5dd0, 0x5dd1, 0x5dd2, 0x5dd3, 0x5dd4, 0x5dd5, 0x5dd6, 0x5dd7,
+ 0x5dd8, 0x5dd9, 0x5dda, 0x5ddb, 0x5ddc, 0x5ddd, 0x5dde, 0x5ddf,
+ 0x5de0, 0x5de1, 0x5de2, 0x5de3, 0x5de4, 0x5de5, 0x5de6, 0x5de7,
+ 0x5de8, 0x5de9, 0x5dea, 0x5deb, 0x5dec, 0x5ded, 0x5dee, 0x5def,
+ 0x5df0, 0x5df1, 0x5df2, 0x5df3, 0x5df4, 0x5df5, 0x5df6, 0x5df7,
+ 0x5df8, 0x5df9, 0x5dfa, 0x5dfb, 0x5dfc, 0x5dfd, 0x5dfe, 0x5dff,
+ 0x5e00, 0x5e01, 0x5e02, 0x5e03, 0x5e04, 0x5e05, 0x5e06, 0x5e07, /* 0x5e00 */
+ 0x5e08, 0x5e09, 0x5e0a, 0x5e0b, 0x5e0c, 0x5e0d, 0x5e0e, 0x5e0f,
+ 0x5e10, 0x5e11, 0x5e12, 0x5e13, 0x5e14, 0x5e15, 0x5e16, 0x5e17,
+ 0x5e18, 0x5e19, 0x5e1a, 0x5e1b, 0x5e1c, 0x5e1d, 0x5e1e, 0x5e1f,
+ 0x5e20, 0x5e21, 0x5e22, 0x5e23, 0x5e24, 0x5e25, 0x5e26, 0x5e27,
+ 0x5e28, 0x5e29, 0x5e2a, 0x5e2b, 0x5e2c, 0x5e2d, 0x5e2e, 0x5e2f,
+ 0x5e30, 0x5e31, 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e37,
+ 0x5e38, 0x5e39, 0x5e3a, 0x5e3b, 0x5e3c, 0x5e3d, 0x5e3e, 0x5e3f,
+ 0x5e40, 0x5e41, 0x5e42, 0x5e43, 0x5e44, 0x5e45, 0x5e46, 0x5e47, /* 0x5e40 */
+ 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4c, 0x5e4d, 0x5e4e, 0x5e4f,
+ 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e54, 0x5e55, 0x5e56, 0x5e57,
+ 0x5e58, 0x5e59, 0x5e5a, 0x5e5b, 0x5e5c, 0x5e5d, 0x5e5e, 0x5e5f,
+ 0x5e60, 0x5e61, 0x5e62, 0x5e63, 0x5e64, 0x5e65, 0x5e66, 0x5e67,
+ 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e, 0x5e6f,
+ 0x5e70, 0x5e71, 0x5e72, 0x5e73, 0x5e74, 0x5e75, 0x5e76, 0x5e77,
+ 0x5e78, 0x5e79, 0x5e7a, 0x5e7b, 0x5e7c, 0x5e7d, 0x5e7e, 0x5e7f,
+ 0x5e80, 0x5e81, 0x5e82, 0x5e83, 0x5e84, 0x5e85, 0x5e86, 0x5e87, /* 0x5e80 */
+ 0x5e88, 0x5e89, 0x5e8a, 0x5e8b, 0x5e8c, 0x5e8d, 0x5e8e, 0x5e8f,
+ 0x5e90, 0x5e91, 0x5e92, 0x5e93, 0x5e94, 0x5e95, 0x5e96, 0x5e97,
+ 0x5e98, 0x5e99, 0x5e9a, 0x5e9b, 0x5e9c, 0x5e9d, 0x5e9e, 0x5e9f,
+ 0x5ea0, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4, 0x5ea5, 0x5ea6, 0x5ea7,
+ 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac, 0x5ead, 0x5eae, 0x5eaf,
+ 0x5eb0, 0x5eb1, 0x5eb2, 0x5eb3, 0x5eb4, 0x5eb5, 0x5eb6, 0x5eb7,
+ 0x5eb8, 0x5eb9, 0x5eba, 0x5ebb, 0x5ebc, 0x5ebd, 0x5ebe, 0x5ebf,
+ 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4, 0x5ec5, 0x5ec6, 0x5ec7, /* 0x5ec0 */
+ 0x5ec8, 0x5ec9, 0x5eca, 0x5ecb, 0x5ecc, 0x5ecd, 0x5ece, 0x5ecf,
+ 0x5ed0, 0x5ed1, 0x5ed2, 0x5ed3, 0x5ed4, 0x5ed5, 0x5ed6, 0x5ed7,
+ 0x5ed8, 0x5ed9, 0x5eda, 0x5edb, 0x5edc, 0x5edd, 0x5ede, 0x5edf,
+ 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4, 0x5ee5, 0x5ee6, 0x5ee7,
+ 0x5ee8, 0x5ee9, 0x5eea, 0x5eeb, 0x5eec, 0x5eed, 0x5eee, 0x5eef,
+ 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef4, 0x5ef5, 0x5ef6, 0x5ef7,
+ 0x5ef8, 0x5ef9, 0x5efa, 0x5efb, 0x5efc, 0x5efd, 0x5efe, 0x5eff,
+ 0x5f00, 0x5f01, 0x5f02, 0x5f03, 0x5f04, 0x5f05, 0x5f06, 0x5f07, /* 0x5f00 */
+ 0x5f08, 0x5f09, 0x5f0a, 0x5f0b, 0x5f0c, 0x5f0d, 0x5f0e, 0x5f0f,
+ 0x5f10, 0x5f11, 0x5f12, 0x5f13, 0x5f14, 0x5f15, 0x5f16, 0x5f17,
+ 0x5f18, 0x5f19, 0x5f1a, 0x5f1b, 0x5f1c, 0x5f1d, 0x5f1e, 0x5f1f,
+ 0x5f20, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f25, 0x5f26, 0x5f27,
+ 0x5f28, 0x5f29, 0x5f2a, 0x5f2b, 0x5f2c, 0x5f2d, 0x5f2e, 0x5f2f,
+ 0x5f30, 0x5f31, 0x5f32, 0x5f33, 0x5f34, 0x5f35, 0x5f36, 0x5f37,
+ 0x5f38, 0x5f39, 0x5f3a, 0x5f3b, 0x5f3c, 0x5f3d, 0x5f3e, 0x5f3f,
+ 0x5f40, 0x5f41, 0x5f42, 0x5f43, 0x5f44, 0x5f45, 0x5f46, 0x5f47, /* 0x5f40 */
+ 0x5f48, 0x5f49, 0x5f4a, 0x5f4b, 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f,
+ 0x5f50, 0x5f51, 0x5f52, 0x5f53, 0x5f54, 0x5f55, 0x5f56, 0x5f57,
+ 0x5f58, 0x5f59, 0x5f5a, 0x5f5b, 0x5f5c, 0x5f5d, 0x5f5e, 0x5f5f,
+ 0x5f60, 0x5f61, 0x5f62, 0x5f63, 0x5f64, 0x5f65, 0x5f66, 0x5f67,
+ 0x5f68, 0x5f69, 0x5f6a, 0x5f6b, 0x5f6c, 0x5f6d, 0x5f6e, 0x5f6f,
+ 0x5f70, 0x5f71, 0x5f72, 0x5f73, 0x5f74, 0x5f75, 0x5f76, 0x5f77,
+ 0x5f78, 0x5f79, 0x5f7a, 0x5f7b, 0x5f7c, 0x5f7d, 0x5f7e, 0x5f7f,
+ 0x5f80, 0x5f81, 0x5f82, 0x5f83, 0x5f84, 0x5f85, 0x5f86, 0x5f87, /* 0x5f80 */
+ 0x5f88, 0x5f89, 0x5f8a, 0x5f8b, 0x5f8c, 0x5f8d, 0x5f8e, 0x5f8f,
+ 0x5f90, 0x5f91, 0x5f92, 0x5f93, 0x5f94, 0x5f95, 0x5f96, 0x5f97,
+ 0x5f98, 0x5f99, 0x5f9a, 0x5f9b, 0x5f9c, 0x5f9d, 0x5f9e, 0x5f9f,
+ 0x5fa0, 0x5fa1, 0x5fa2, 0x5fa3, 0x5fa4, 0x5fa5, 0x5fa6, 0x5fa7,
+ 0x5fa8, 0x5fa9, 0x5faa, 0x5fab, 0x5fac, 0x5fad, 0x5fae, 0x5faf,
+ 0x5fb0, 0x5fb1, 0x5fb2, 0x5fb3, 0x5fb4, 0x5fb5, 0x5fb6, 0x5fb7,
+ 0x5fb8, 0x5fb9, 0x5fba, 0x5fbb, 0x5fbc, 0x5fbd, 0x5fbe, 0x5fbf,
+ 0x5fc0, 0x5fc1, 0x5fc2, 0x5fc3, 0x5fc4, 0x5fc5, 0x5fc6, 0x5fc7, /* 0x5fc0 */
+ 0x5fc8, 0x5fc9, 0x5fca, 0x5fcb, 0x5fcc, 0x5fcd, 0x5fce, 0x5fcf,
+ 0x5fd0, 0x5fd1, 0x5fd2, 0x5fd3, 0x5fd4, 0x5fd5, 0x5fd6, 0x5fd7,
+ 0x5fd8, 0x5fd9, 0x5fda, 0x5fdb, 0x5fdc, 0x5fdd, 0x5fde, 0x5fdf,
+ 0x5fe0, 0x5fe1, 0x5fe2, 0x5fe3, 0x5fe4, 0x5fe5, 0x5fe6, 0x5fe7,
+ 0x5fe8, 0x5fe9, 0x5fea, 0x5feb, 0x5fec, 0x5fed, 0x5fee, 0x5fef,
+ 0x5ff0, 0x5ff1, 0x5ff2, 0x5ff3, 0x5ff4, 0x5ff5, 0x5ff6, 0x5ff7,
+ 0x5ff8, 0x5ff9, 0x5ffa, 0x5ffb, 0x5ffc, 0x5ffd, 0x5ffe, 0x5fff,
+ 0x6000, 0x6001, 0x6002, 0x6003, 0x6004, 0x6005, 0x6006, 0x6007, /* 0x6000 */
+ 0x6008, 0x6009, 0x600a, 0x600b, 0x600c, 0x600d, 0x600e, 0x600f,
+ 0x6010, 0x6011, 0x6012, 0x6013, 0x6014, 0x6015, 0x6016, 0x6017,
+ 0x6018, 0x6019, 0x601a, 0x601b, 0x601c, 0x601d, 0x601e, 0x601f,
+ 0x6020, 0x6021, 0x6022, 0x6023, 0x6024, 0x6025, 0x6026, 0x6027,
+ 0x6028, 0x6029, 0x602a, 0x602b, 0x602c, 0x602d, 0x602e, 0x602f,
+ 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6035, 0x6036, 0x6037,
+ 0x6038, 0x6039, 0x603a, 0x603b, 0x603c, 0x603d, 0x603e, 0x603f,
+ 0x6040, 0x6041, 0x6042, 0x6043, 0x6044, 0x6045, 0x6046, 0x6047, /* 0x6040 */
+ 0x6048, 0x6049, 0x604a, 0x604b, 0x604c, 0x604d, 0x604e, 0x604f,
+ 0x6050, 0x6051, 0x6052, 0x6053, 0x6054, 0x6055, 0x6056, 0x6057,
+ 0x6058, 0x6059, 0x605a, 0x605b, 0x605c, 0x605d, 0x605e, 0x605f,
+ 0x6060, 0x6061, 0x6062, 0x6063, 0x6064, 0x6065, 0x6066, 0x6067,
+ 0x6068, 0x6069, 0x606a, 0x606b, 0x606c, 0x606d, 0x606e, 0x606f,
+ 0x6070, 0x6071, 0x6072, 0x6073, 0x6074, 0x6075, 0x6076, 0x6077,
+ 0x6078, 0x6079, 0x607a, 0x607b, 0x607c, 0x607d, 0x607e, 0x607f,
+ 0x6080, 0x6081, 0x6082, 0x6083, 0x6084, 0x6085, 0x6086, 0x6087, /* 0x6080 */
+ 0x6088, 0x6089, 0x608a, 0x608b, 0x608c, 0x608d, 0x608e, 0x608f,
+ 0x6090, 0x6091, 0x6092, 0x6093, 0x6094, 0x6095, 0x6096, 0x6097,
+ 0x6098, 0x6099, 0x609a, 0x609b, 0x609c, 0x609d, 0x609e, 0x609f,
+ 0x60a0, 0x60a1, 0x60a2, 0x60a3, 0x60a4, 0x60a5, 0x60a6, 0x60a7,
+ 0x60a8, 0x60a9, 0x60aa, 0x60ab, 0x60ac, 0x60ad, 0x60ae, 0x60af,
+ 0x60b0, 0x60b1, 0x60b2, 0x60b3, 0x60b4, 0x60b5, 0x60b6, 0x60b7,
+ 0x60b8, 0x60b9, 0x60ba, 0x60bb, 0x60bc, 0x60bd, 0x60be, 0x60bf,
+ 0x60c0, 0x60c1, 0x60c2, 0x60c3, 0x60c4, 0x60c5, 0x60c6, 0x60c7, /* 0x60c0 */
+ 0x60c8, 0x60c9, 0x60ca, 0x60cb, 0x60cc, 0x60cd, 0x60ce, 0x60cf,
+ 0x60d0, 0x60d1, 0x60d2, 0x60d3, 0x60d4, 0x60d5, 0x60d6, 0x60d7,
+ 0x60d8, 0x60d9, 0x60da, 0x60db, 0x60dc, 0x60dd, 0x60de, 0x60df,
+ 0x60e0, 0x60e1, 0x60e2, 0x60e3, 0x60e4, 0x60e5, 0x60e6, 0x60e7,
+ 0x60e8, 0x60e9, 0x60ea, 0x60eb, 0x60ec, 0x60ed, 0x60ee, 0x60ef,
+ 0x60f0, 0x60f1, 0x60f2, 0x60f3, 0x60f4, 0x60f5, 0x60f6, 0x60f7,
+ 0x60f8, 0x60f9, 0x60fa, 0x60fb, 0x60fc, 0x60fd, 0x60fe, 0x60ff,
+ 0x6100, 0x6101, 0x6102, 0x6103, 0x6104, 0x6105, 0x6106, 0x6107, /* 0x6100 */
+ 0x6108, 0x6109, 0x610a, 0x610b, 0x610c, 0x610d, 0x610e, 0x610f,
+ 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6115, 0x6116, 0x6117,
+ 0x6118, 0x6119, 0x611a, 0x611b, 0x611c, 0x611d, 0x611e, 0x611f,
+ 0x6120, 0x6121, 0x6122, 0x6123, 0x6124, 0x6125, 0x6126, 0x6127,
+ 0x6128, 0x6129, 0x612a, 0x612b, 0x612c, 0x612d, 0x612e, 0x612f,
+ 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137,
+ 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x613f,
+ 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, 0x6147, /* 0x6140 */
+ 0x6148, 0x6149, 0x614a, 0x614b, 0x614c, 0x614d, 0x614e, 0x614f,
+ 0x6150, 0x6151, 0x6152, 0x6153, 0x6154, 0x6155, 0x6156, 0x6157,
+ 0x6158, 0x6159, 0x615a, 0x615b, 0x615c, 0x615d, 0x615e, 0x615f,
+ 0x6160, 0x6161, 0x6162, 0x6163, 0x6164, 0x6165, 0x6166, 0x6167,
+ 0x6168, 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f,
+ 0x6170, 0x6171, 0x6172, 0x6173, 0x6174, 0x6175, 0x6176, 0x6177,
+ 0x6178, 0x6179, 0x617a, 0x617b, 0x617c, 0x617d, 0x617e, 0x617f,
+ 0x6180, 0x6181, 0x6182, 0x6183, 0x6184, 0x6185, 0x6186, 0x6187, /* 0x6180 */
+ 0x6188, 0x6189, 0x618a, 0x618b, 0x618c, 0x618d, 0x618e, 0x618f,
+ 0x6190, 0x6191, 0x6192, 0x6193, 0x6194, 0x6195, 0x6196, 0x6197,
+ 0x6198, 0x6199, 0x619a, 0x619b, 0x619c, 0x619d, 0x619e, 0x619f,
+ 0x61a0, 0x61a1, 0x61a2, 0x61a3, 0x61a4, 0x61a5, 0x61a6, 0x61a7,
+ 0x61a8, 0x61a9, 0x61aa, 0x61ab, 0x61ac, 0x61ad, 0x61ae, 0x61af,
+ 0x61b0, 0x61b1, 0x61b2, 0x61b3, 0x61b4, 0x61b5, 0x61b6, 0x61b7,
+ 0x61b8, 0x61b9, 0x61ba, 0x61bb, 0x61bc, 0x61bd, 0x61be, 0x61bf,
+ 0x61c0, 0x61c1, 0x61c2, 0x61c3, 0x61c4, 0x61c5, 0x61c6, 0x61c7, /* 0x61c0 */
+ 0x61c8, 0x61c9, 0x61ca, 0x61cb, 0x61cc, 0x61cd, 0x61ce, 0x61cf,
+ 0x61d0, 0x61d1, 0x61d2, 0x61d3, 0x61d4, 0x61d5, 0x61d6, 0x61d7,
+ 0x61d8, 0x61d9, 0x61da, 0x61db, 0x61dc, 0x61dd, 0x61de, 0x61df,
+ 0x61e0, 0x61e1, 0x61e2, 0x61e3, 0x61e4, 0x61e5, 0x61e6, 0x61e7,
+ 0x61e8, 0x61e9, 0x61ea, 0x61eb, 0x61ec, 0x61ed, 0x61ee, 0x61ef,
+ 0x61f0, 0x61f1, 0x61f2, 0x61f3, 0x61f4, 0x61f5, 0x61f6, 0x61f7,
+ 0x61f8, 0x61f9, 0x61fa, 0x61fb, 0x61fc, 0x61fd, 0x61fe, 0x61ff,
+ 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6206, 0x6207, /* 0x6200 */
+ 0x6208, 0x6209, 0x620a, 0x620b, 0x620c, 0x620d, 0x620e, 0x620f,
+ 0x6210, 0x6211, 0x6212, 0x6213, 0x6214, 0x6215, 0x6216, 0x6217,
+ 0x6218, 0x6219, 0x621a, 0x621b, 0x621c, 0x621d, 0x621e, 0x621f,
+ 0x6220, 0x6221, 0x6222, 0x6223, 0x6224, 0x6225, 0x6226, 0x6227,
+ 0x6228, 0x6229, 0x622a, 0x622b, 0x622c, 0x622d, 0x622e, 0x622f,
+ 0x6230, 0x6231, 0x6232, 0x6233, 0x6234, 0x6235, 0x6236, 0x6237,
+ 0x6238, 0x6239, 0x623a, 0x623b, 0x623c, 0x623d, 0x623e, 0x623f,
+ 0x6240, 0x6241, 0x6242, 0x6243, 0x6244, 0x6245, 0x6246, 0x6247, /* 0x6240 */
+ 0x6248, 0x6249, 0x624a, 0x624b, 0x624c, 0x624d, 0x624e, 0x624f,
+ 0x6250, 0x6251, 0x6252, 0x6253, 0x6254, 0x6255, 0x6256, 0x6257,
+ 0x6258, 0x6259, 0x625a, 0x625b, 0x625c, 0x625d, 0x625e, 0x625f,
+ 0x6260, 0x6261, 0x6262, 0x6263, 0x6264, 0x6265, 0x6266, 0x6267,
+ 0x6268, 0x6269, 0x626a, 0x626b, 0x626c, 0x626d, 0x626e, 0x626f,
+ 0x6270, 0x6271, 0x6272, 0x6273, 0x6274, 0x6275, 0x6276, 0x6277,
+ 0x6278, 0x6279, 0x627a, 0x627b, 0x627c, 0x627d, 0x627e, 0x627f,
+ 0x6280, 0x6281, 0x6282, 0x6283, 0x6284, 0x6285, 0x6286, 0x6287, /* 0x6280 */
+ 0x6288, 0x6289, 0x628a, 0x628b, 0x628c, 0x628d, 0x628e, 0x628f,
+ 0x6290, 0x6291, 0x6292, 0x6293, 0x6294, 0x6295, 0x6296, 0x6297,
+ 0x6298, 0x6299, 0x629a, 0x629b, 0x629c, 0x629d, 0x629e, 0x629f,
+ 0x62a0, 0x62a1, 0x62a2, 0x62a3, 0x62a4, 0x62a5, 0x62a6, 0x62a7,
+ 0x62a8, 0x62a9, 0x62aa, 0x62ab, 0x62ac, 0x62ad, 0x62ae, 0x62af,
+ 0x62b0, 0x62b1, 0x62b2, 0x62b3, 0x62b4, 0x62b5, 0x62b6, 0x62b7,
+ 0x62b8, 0x62b9, 0x62ba, 0x62bb, 0x62bc, 0x62bd, 0x62be, 0x62bf,
+ 0x62c0, 0x62c1, 0x62c2, 0x62c3, 0x62c4, 0x62c5, 0x62c6, 0x62c7, /* 0x62c0 */
+ 0x62c8, 0x62c9, 0x62ca, 0x62cb, 0x62cc, 0x62cd, 0x62ce, 0x62cf,
+ 0x62d0, 0x62d1, 0x62d2, 0x62d3, 0x62d4, 0x62d5, 0x62d6, 0x62d7,
+ 0x62d8, 0x62d9, 0x62da, 0x62db, 0x62dc, 0x62dd, 0x62de, 0x62df,
+ 0x62e0, 0x62e1, 0x62e2, 0x62e3, 0x62e4, 0x62e5, 0x62e6, 0x62e7,
+ 0x62e8, 0x62e9, 0x62ea, 0x62eb, 0x62ec, 0x62ed, 0x62ee, 0x62ef,
+ 0x62f0, 0x62f1, 0x62f2, 0x62f3, 0x62f4, 0x62f5, 0x62f6, 0x62f7,
+ 0x62f8, 0x62f9, 0x62fa, 0x62fb, 0x62fc, 0x62fd, 0x62fe, 0x62ff,
+ 0x6300, 0x6301, 0x6302, 0x6303, 0x6304, 0x6305, 0x6306, 0x6307, /* 0x6300 */
+ 0x6308, 0x6309, 0x630a, 0x630b, 0x630c, 0x630d, 0x630e, 0x630f,
+ 0x6310, 0x6311, 0x6312, 0x6313, 0x6314, 0x6315, 0x6316, 0x6317,
+ 0x6318, 0x6319, 0x631a, 0x631b, 0x631c, 0x631d, 0x631e, 0x631f,
+ 0x6320, 0x6321, 0x6322, 0x6323, 0x6324, 0x6325, 0x6326, 0x6327,
+ 0x6328, 0x6329, 0x632a, 0x632b, 0x632c, 0x632d, 0x632e, 0x632f,
+ 0x6330, 0x6331, 0x6332, 0x6333, 0x6334, 0x6335, 0x6336, 0x6337,
+ 0x6338, 0x6339, 0x633a, 0x633b, 0x633c, 0x633d, 0x633e, 0x633f,
+ 0x6340, 0x6341, 0x6342, 0x6343, 0x6344, 0x6345, 0x6346, 0x6347, /* 0x6340 */
+ 0x6348, 0x6349, 0x634a, 0x634b, 0x634c, 0x634d, 0x634e, 0x634f,
+ 0x6350, 0x6351, 0x6352, 0x6353, 0x6354, 0x6355, 0x6356, 0x6357,
+ 0x6358, 0x6359, 0x635a, 0x635b, 0x635c, 0x635d, 0x635e, 0x635f,
+ 0x6360, 0x6361, 0x6362, 0x6363, 0x6364, 0x6365, 0x6366, 0x6367,
+ 0x6368, 0x6369, 0x636a, 0x636b, 0x636c, 0x636d, 0x636e, 0x636f,
+ 0x6370, 0x6371, 0x6372, 0x6373, 0x6374, 0x6375, 0x6376, 0x6377,
+ 0x6378, 0x6379, 0x637a, 0x637b, 0x637c, 0x637d, 0x637e, 0x637f,
+ 0x6380, 0x6381, 0x6382, 0x6383, 0x6384, 0x6385, 0x6386, 0x6387, /* 0x6380 */
+ 0x6388, 0x6389, 0x638a, 0x638b, 0x638c, 0x638d, 0x638e, 0x638f,
+ 0x6390, 0x6391, 0x6392, 0x6393, 0x6394, 0x6395, 0x6396, 0x6397,
+ 0x6398, 0x6399, 0x639a, 0x639b, 0x639c, 0x639d, 0x639e, 0x639f,
+ 0x63a0, 0x63a1, 0x63a2, 0x63a3, 0x63a4, 0x63a5, 0x63a6, 0x63a7,
+ 0x63a8, 0x63a9, 0x63aa, 0x63ab, 0x63ac, 0x63ad, 0x63ae, 0x63af,
+ 0x63b0, 0x63b1, 0x63b2, 0x63b3, 0x63b4, 0x63b5, 0x63b6, 0x63b7,
+ 0x63b8, 0x63b9, 0x63ba, 0x63bb, 0x63bc, 0x63bd, 0x63be, 0x63bf,
+ 0x63c0, 0x63c1, 0x63c2, 0x63c3, 0x63c4, 0x63c5, 0x63c6, 0x63c7, /* 0x63c0 */
+ 0x63c8, 0x63c9, 0x63ca, 0x63cb, 0x63cc, 0x63cd, 0x63ce, 0x63cf,
+ 0x63d0, 0x63d1, 0x63d2, 0x63d3, 0x63d4, 0x63d5, 0x63d6, 0x63d7,
+ 0x63d8, 0x63d9, 0x63da, 0x63db, 0x63dc, 0x63dd, 0x63de, 0x63df,
+ 0x63e0, 0x63e1, 0x63e2, 0x63e3, 0x63e4, 0x63e5, 0x63e6, 0x63e7,
+ 0x63e8, 0x63e9, 0x63ea, 0x63eb, 0x63ec, 0x63ed, 0x63ee, 0x63ef,
+ 0x63f0, 0x63f1, 0x63f2, 0x63f3, 0x63f4, 0x63f5, 0x63f6, 0x63f7,
+ 0x63f8, 0x63f9, 0x63fa, 0x63fb, 0x63fc, 0x63fd, 0x63fe, 0x63ff,
+ 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406, 0x6407, /* 0x6400 */
+ 0x6408, 0x6409, 0x640a, 0x640b, 0x640c, 0x640d, 0x640e, 0x640f,
+ 0x6410, 0x6411, 0x6412, 0x6413, 0x6414, 0x6415, 0x6416, 0x6417,
+ 0x6418, 0x6419, 0x641a, 0x641b, 0x641c, 0x641d, 0x641e, 0x641f,
+ 0x6420, 0x6421, 0x6422, 0x6423, 0x6424, 0x6425, 0x6426, 0x6427,
+ 0x6428, 0x6429, 0x642a, 0x642b, 0x642c, 0x642d, 0x642e, 0x642f,
+ 0x6430, 0x6431, 0x6432, 0x6433, 0x6434, 0x6435, 0x6436, 0x6437,
+ 0x6438, 0x6439, 0x643a, 0x643b, 0x643c, 0x643d, 0x643e, 0x643f,
+ 0x6440, 0x6441, 0x6442, 0x6443, 0x6444, 0x6445, 0x6446, 0x6447, /* 0x6440 */
+ 0x6448, 0x6449, 0x644a, 0x644b, 0x644c, 0x644d, 0x644e, 0x644f,
+ 0x6450, 0x6451, 0x6452, 0x6453, 0x6454, 0x6455, 0x6456, 0x6457,
+ 0x6458, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d, 0x645e, 0x645f,
+ 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6467,
+ 0x6468, 0x6469, 0x646a, 0x646b, 0x646c, 0x646d, 0x646e, 0x646f,
+ 0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475, 0x6476, 0x6477,
+ 0x6478, 0x6479, 0x647a, 0x647b, 0x647c, 0x647d, 0x647e, 0x647f,
+ 0x6480, 0x6481, 0x6482, 0x6483, 0x6484, 0x6485, 0x6486, 0x6487, /* 0x6480 */
+ 0x6488, 0x6489, 0x648a, 0x648b, 0x648c, 0x648d, 0x648e, 0x648f,
+ 0x6490, 0x6491, 0x6492, 0x6493, 0x6494, 0x6495, 0x6496, 0x6497,
+ 0x6498, 0x6499, 0x649a, 0x649b, 0x649c, 0x649d, 0x649e, 0x649f,
+ 0x64a0, 0x64a1, 0x64a2, 0x64a3, 0x64a4, 0x64a5, 0x64a6, 0x64a7,
+ 0x64a8, 0x64a9, 0x64aa, 0x64ab, 0x64ac, 0x64ad, 0x64ae, 0x64af,
+ 0x64b0, 0x64b1, 0x64b2, 0x64b3, 0x64b4, 0x64b5, 0x64b6, 0x64b7,
+ 0x64b8, 0x64b9, 0x64ba, 0x64bb, 0x64bc, 0x64bd, 0x64be, 0x64bf,
+ 0x64c0, 0x64c1, 0x64c2, 0x64c3, 0x64c4, 0x64c5, 0x64c6, 0x64c7, /* 0x64c0 */
+ 0x64c8, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64cd, 0x64ce, 0x64cf,
+ 0x64d0, 0x64d1, 0x64d2, 0x64d3, 0x64d4, 0x64d5, 0x64d6, 0x64d7,
+ 0x64d8, 0x64d9, 0x64da, 0x64db, 0x64dc, 0x64dd, 0x64de, 0x64df,
+ 0x64e0, 0x64e1, 0x64e2, 0x64e3, 0x64e4, 0x64e5, 0x64e6, 0x64e7,
+ 0x64e8, 0x64e9, 0x64ea, 0x64eb, 0x64ec, 0x64ed, 0x64ee, 0x64ef,
+ 0x64f0, 0x64f1, 0x64f2, 0x64f3, 0x64f4, 0x64f5, 0x64f6, 0x64f7,
+ 0x64f8, 0x64f9, 0x64fa, 0x64fb, 0x64fc, 0x64fd, 0x64fe, 0x64ff,
+ 0x6500, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507, /* 0x6500 */
+ 0x6508, 0x6509, 0x650a, 0x650b, 0x650c, 0x650d, 0x650e, 0x650f,
+ 0x6510, 0x6511, 0x6512, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517,
+ 0x6518, 0x6519, 0x651a, 0x651b, 0x651c, 0x651d, 0x651e, 0x651f,
+ 0x6520, 0x6521, 0x6522, 0x6523, 0x6524, 0x6525, 0x6526, 0x6527,
+ 0x6528, 0x6529, 0x652a, 0x652b, 0x652c, 0x652d, 0x652e, 0x652f,
+ 0x6530, 0x6531, 0x6532, 0x6533, 0x6534, 0x6535, 0x6536, 0x6537,
+ 0x6538, 0x6539, 0x653a, 0x653b, 0x653c, 0x653d, 0x653e, 0x653f,
+ 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6545, 0x6546, 0x6547, /* 0x6540 */
+ 0x6548, 0x6549, 0x654a, 0x654b, 0x654c, 0x654d, 0x654e, 0x654f,
+ 0x6550, 0x6551, 0x6552, 0x6553, 0x6554, 0x6555, 0x6556, 0x6557,
+ 0x6558, 0x6559, 0x655a, 0x655b, 0x655c, 0x655d, 0x655e, 0x655f,
+ 0x6560, 0x6561, 0x6562, 0x6563, 0x6564, 0x6565, 0x6566, 0x6567,
+ 0x6568, 0x6569, 0x656a, 0x656b, 0x656c, 0x656d, 0x656e, 0x656f,
+ 0x6570, 0x6571, 0x6572, 0x6573, 0x6574, 0x6575, 0x6576, 0x6577,
+ 0x6578, 0x6579, 0x657a, 0x657b, 0x657c, 0x657d, 0x657e, 0x657f,
+ 0x6580, 0x6581, 0x6582, 0x6583, 0x6584, 0x6585, 0x6586, 0x6587, /* 0x6580 */
+ 0x6588, 0x6589, 0x658a, 0x658b, 0x658c, 0x658d, 0x658e, 0x658f,
+ 0x6590, 0x6591, 0x6592, 0x6593, 0x6594, 0x6595, 0x6596, 0x6597,
+ 0x6598, 0x6599, 0x659a, 0x659b, 0x659c, 0x659d, 0x659e, 0x659f,
+ 0x65a0, 0x65a1, 0x65a2, 0x65a3, 0x65a4, 0x65a5, 0x65a6, 0x65a7,
+ 0x65a8, 0x65a9, 0x65aa, 0x65ab, 0x65ac, 0x65ad, 0x65ae, 0x65af,
+ 0x65b0, 0x65b1, 0x65b2, 0x65b3, 0x65b4, 0x65b5, 0x65b6, 0x65b7,
+ 0x65b8, 0x65b9, 0x65ba, 0x65bb, 0x65bc, 0x65bd, 0x65be, 0x65bf,
+ 0x65c0, 0x65c1, 0x65c2, 0x65c3, 0x65c4, 0x65c5, 0x65c6, 0x65c7, /* 0x65c0 */
+ 0x65c8, 0x65c9, 0x65ca, 0x65cb, 0x65cc, 0x65cd, 0x65ce, 0x65cf,
+ 0x65d0, 0x65d1, 0x65d2, 0x65d3, 0x65d4, 0x65d5, 0x65d6, 0x65d7,
+ 0x65d8, 0x65d9, 0x65da, 0x65db, 0x65dc, 0x65dd, 0x65de, 0x65df,
+ 0x65e0, 0x65e1, 0x65e2, 0x65e3, 0x65e4, 0x65e5, 0x65e6, 0x65e7,
+ 0x65e8, 0x65e9, 0x65ea, 0x65eb, 0x65ec, 0x65ed, 0x65ee, 0x65ef,
+ 0x65f0, 0x65f1, 0x65f2, 0x65f3, 0x65f4, 0x65f5, 0x65f6, 0x65f7,
+ 0x65f8, 0x65f9, 0x65fa, 0x65fb, 0x65fc, 0x65fd, 0x65fe, 0x65ff,
+ 0x6600, 0x6601, 0x6602, 0x6603, 0x6604, 0x6605, 0x6606, 0x6607, /* 0x6600 */
+ 0x6608, 0x6609, 0x660a, 0x660b, 0x660c, 0x660d, 0x660e, 0x660f,
+ 0x6610, 0x6611, 0x6612, 0x6613, 0x6614, 0x6615, 0x6616, 0x6617,
+ 0x6618, 0x6619, 0x661a, 0x661b, 0x661c, 0x661d, 0x661e, 0x661f,
+ 0x6620, 0x6621, 0x6622, 0x6623, 0x6624, 0x6625, 0x6626, 0x6627,
+ 0x6628, 0x6629, 0x662a, 0x662b, 0x662c, 0x662d, 0x662e, 0x662f,
+ 0x6630, 0x6631, 0x6632, 0x6633, 0x6634, 0x6635, 0x6636, 0x6637,
+ 0x6638, 0x6639, 0x663a, 0x663b, 0x663c, 0x663d, 0x663e, 0x663f,
+ 0x6640, 0x6641, 0x6642, 0x6643, 0x6644, 0x6645, 0x6646, 0x6647, /* 0x6640 */
+ 0x6648, 0x6649, 0x664a, 0x664b, 0x664c, 0x664d, 0x664e, 0x664f,
+ 0x6650, 0x6651, 0x6652, 0x6653, 0x6654, 0x6655, 0x6656, 0x6657,
+ 0x6658, 0x6659, 0x665a, 0x665b, 0x665c, 0x665d, 0x665e, 0x665f,
+ 0x6660, 0x6661, 0x6662, 0x6663, 0x6664, 0x6665, 0x6666, 0x6667,
+ 0x6668, 0x6669, 0x666a, 0x666b, 0x666c, 0x666d, 0x666e, 0x666f,
+ 0x6670, 0x6671, 0x6672, 0x6673, 0x6674, 0x6675, 0x6676, 0x6677,
+ 0x6678, 0x6679, 0x667a, 0x667b, 0x667c, 0x667d, 0x667e, 0x667f,
+ 0x6680, 0x6681, 0x6682, 0x6683, 0x6684, 0x6685, 0x6686, 0x6687, /* 0x6680 */
+ 0x6688, 0x6689, 0x668a, 0x668b, 0x668c, 0x668d, 0x668e, 0x668f,
+ 0x6690, 0x6691, 0x6692, 0x6693, 0x6694, 0x6695, 0x6696, 0x6697,
+ 0x6698, 0x6699, 0x669a, 0x669b, 0x669c, 0x669d, 0x669e, 0x669f,
+ 0x66a0, 0x66a1, 0x66a2, 0x66a3, 0x66a4, 0x66a5, 0x66a6, 0x66a7,
+ 0x66a8, 0x66a9, 0x66aa, 0x66ab, 0x66ac, 0x66ad, 0x66ae, 0x66af,
+ 0x66b0, 0x66b1, 0x66b2, 0x66b3, 0x66b4, 0x66b5, 0x66b6, 0x66b7,
+ 0x66b8, 0x66b9, 0x66ba, 0x66bb, 0x66bc, 0x66bd, 0x66be, 0x66bf,
+ 0x66c0, 0x66c1, 0x66c2, 0x66c3, 0x66c4, 0x66c5, 0x66c6, 0x66c7, /* 0x66c0 */
+ 0x66c8, 0x66c9, 0x66ca, 0x66cb, 0x66cc, 0x66cd, 0x66ce, 0x66cf,
+ 0x66d0, 0x66d1, 0x66d2, 0x66d3, 0x66d4, 0x66d5, 0x66d6, 0x66d7,
+ 0x66d8, 0x66d9, 0x66da, 0x66db, 0x66dc, 0x66dd, 0x66de, 0x66df,
+ 0x66e0, 0x66e1, 0x66e2, 0x66e3, 0x66e4, 0x66e5, 0x66e6, 0x66e7,
+ 0x66e8, 0x66e9, 0x66ea, 0x66eb, 0x66ec, 0x66ed, 0x66ee, 0x66ef,
+ 0x66f0, 0x66f1, 0x66f2, 0x66f3, 0x66f4, 0x66f5, 0x66f6, 0x66f7,
+ 0x66f8, 0x66f9, 0x66fa, 0x66fb, 0x66fc, 0x66fd, 0x66fe, 0x66ff,
+ 0x6700, 0x6701, 0x6702, 0x6703, 0x6704, 0x6705, 0x6706, 0x6707, /* 0x6700 */
+ 0x6708, 0x6709, 0x670a, 0x670b, 0x670c, 0x670d, 0x670e, 0x670f,
+ 0x6710, 0x6711, 0x6712, 0x6713, 0x6714, 0x6715, 0x6716, 0x6717,
+ 0x6718, 0x6719, 0x671a, 0x671b, 0x671c, 0x671d, 0x671e, 0x671f,
+ 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6726, 0x6727,
+ 0x6728, 0x6729, 0x672a, 0x672b, 0x672c, 0x672d, 0x672e, 0x672f,
+ 0x6730, 0x6731, 0x6732, 0x6733, 0x6734, 0x6735, 0x6736, 0x6737,
+ 0x6738, 0x6739, 0x673a, 0x673b, 0x673c, 0x673d, 0x673e, 0x673f,
+ 0x6740, 0x6741, 0x6742, 0x6743, 0x6744, 0x6745, 0x6746, 0x6747, /* 0x6740 */
+ 0x6748, 0x6749, 0x674a, 0x674b, 0x674c, 0x674d, 0x674e, 0x674f,
+ 0x6750, 0x6751, 0x6752, 0x6753, 0x6754, 0x6755, 0x6756, 0x6757,
+ 0x6758, 0x6759, 0x675a, 0x675b, 0x675c, 0x675d, 0x675e, 0x675f,
+ 0x6760, 0x6761, 0x6762, 0x6763, 0x6764, 0x6765, 0x6766, 0x6767,
+ 0x6768, 0x6769, 0x676a, 0x676b, 0x676c, 0x676d, 0x676e, 0x676f,
+ 0x6770, 0x6771, 0x6772, 0x6773, 0x6774, 0x6775, 0x6776, 0x6777,
+ 0x6778, 0x6779, 0x677a, 0x677b, 0x677c, 0x677d, 0x677e, 0x677f,
+ 0x6780, 0x6781, 0x6782, 0x6783, 0x6784, 0x6785, 0x6786, 0x6787, /* 0x6780 */
+ 0x6788, 0x6789, 0x678a, 0x678b, 0x678c, 0x678d, 0x678e, 0x678f,
+ 0x6790, 0x6791, 0x6792, 0x6793, 0x6794, 0x6795, 0x6796, 0x6797,
+ 0x6798, 0x6799, 0x679a, 0x679b, 0x679c, 0x679d, 0x679e, 0x679f,
+ 0x67a0, 0x67a1, 0x67a2, 0x67a3, 0x67a4, 0x67a5, 0x67a6, 0x67a7,
+ 0x67a8, 0x67a9, 0x67aa, 0x67ab, 0x67ac, 0x67ad, 0x67ae, 0x67af,
+ 0x67b0, 0x67b1, 0x67b2, 0x67b3, 0x67b4, 0x67b5, 0x67b6, 0x67b7,
+ 0x67b8, 0x67b9, 0x67ba, 0x67bb, 0x67bc, 0x67bd, 0x67be, 0x67bf,
+ 0x67c0, 0x67c1, 0x67c2, 0x67c3, 0x67c4, 0x67c5, 0x67c6, 0x67c7, /* 0x67c0 */
+ 0x67c8, 0x67c9, 0x67ca, 0x67cb, 0x67cc, 0x67cd, 0x67ce, 0x67cf,
+ 0x67d0, 0x67d1, 0x67d2, 0x67d3, 0x67d4, 0x67d5, 0x67d6, 0x67d7,
+ 0x67d8, 0x67d9, 0x67da, 0x67db, 0x67dc, 0x67dd, 0x67de, 0x67df,
+ 0x67e0, 0x67e1, 0x67e2, 0x67e3, 0x67e4, 0x67e5, 0x67e6, 0x67e7,
+ 0x67e8, 0x67e9, 0x67ea, 0x67eb, 0x67ec, 0x67ed, 0x67ee, 0x67ef,
+ 0x67f0, 0x67f1, 0x67f2, 0x67f3, 0x67f4, 0x67f5, 0x67f6, 0x67f7,
+ 0x67f8, 0x67f9, 0x67fa, 0x67fb, 0x67fc, 0x67fd, 0x67fe, 0x67ff,
+ 0x6800, 0x6801, 0x6802, 0x6803, 0x6804, 0x6805, 0x6806, 0x6807, /* 0x6800 */
+ 0x6808, 0x6809, 0x680a, 0x680b, 0x680c, 0x680d, 0x680e, 0x680f,
+ 0x6810, 0x6811, 0x6812, 0x6813, 0x6814, 0x6815, 0x6816, 0x6817,
+ 0x6818, 0x6819, 0x681a, 0x681b, 0x681c, 0x681d, 0x681e, 0x681f,
+ 0x6820, 0x6821, 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827,
+ 0x6828, 0x6829, 0x682a, 0x682b, 0x682c, 0x682d, 0x682e, 0x682f,
+ 0x6830, 0x6831, 0x6832, 0x6833, 0x6834, 0x6835, 0x6836, 0x6837,
+ 0x6838, 0x6839, 0x683a, 0x683b, 0x683c, 0x683d, 0x683e, 0x683f,
+ 0x6840, 0x6841, 0x6842, 0x6843, 0x6844, 0x6845, 0x6846, 0x6847, /* 0x6840 */
+ 0x6848, 0x6849, 0x684a, 0x684b, 0x684c, 0x684d, 0x684e, 0x684f,
+ 0x6850, 0x6851, 0x6852, 0x6853, 0x6854, 0x6855, 0x6856, 0x6857,
+ 0x6858, 0x6859, 0x685a, 0x685b, 0x685c, 0x685d, 0x685e, 0x685f,
+ 0x6860, 0x6861, 0x6862, 0x6863, 0x6864, 0x6865, 0x6866, 0x6867,
+ 0x6868, 0x6869, 0x686a, 0x686b, 0x686c, 0x686d, 0x686e, 0x686f,
+ 0x6870, 0x6871, 0x6872, 0x6873, 0x6874, 0x6875, 0x6876, 0x6877,
+ 0x6878, 0x6879, 0x687a, 0x687b, 0x687c, 0x687d, 0x687e, 0x687f,
+ 0x6880, 0x6881, 0x6882, 0x6883, 0x6884, 0x6885, 0x6886, 0x6887, /* 0x6880 */
+ 0x6888, 0x6889, 0x688a, 0x688b, 0x688c, 0x688d, 0x688e, 0x688f,
+ 0x6890, 0x6891, 0x6892, 0x6893, 0x6894, 0x6895, 0x6896, 0x6897,
+ 0x6898, 0x6899, 0x689a, 0x689b, 0x689c, 0x689d, 0x689e, 0x689f,
+ 0x68a0, 0x68a1, 0x68a2, 0x68a3, 0x68a4, 0x68a5, 0x68a6, 0x68a7,
+ 0x68a8, 0x68a9, 0x68aa, 0x68ab, 0x68ac, 0x68ad, 0x68ae, 0x68af,
+ 0x68b0, 0x68b1, 0x68b2, 0x68b3, 0x68b4, 0x68b5, 0x68b6, 0x68b7,
+ 0x68b8, 0x68b9, 0x68ba, 0x68bb, 0x68bc, 0x68bd, 0x68be, 0x68bf,
+ 0x68c0, 0x68c1, 0x68c2, 0x68c3, 0x68c4, 0x68c5, 0x68c6, 0x68c7, /* 0x68c0 */
+ 0x68c8, 0x68c9, 0x68ca, 0x68cb, 0x68cc, 0x68cd, 0x68ce, 0x68cf,
+ 0x68d0, 0x68d1, 0x68d2, 0x68d3, 0x68d4, 0x68d5, 0x68d6, 0x68d7,
+ 0x68d8, 0x68d9, 0x68da, 0x68db, 0x68dc, 0x68dd, 0x68de, 0x68df,
+ 0x68e0, 0x68e1, 0x68e2, 0x68e3, 0x68e4, 0x68e5, 0x68e6, 0x68e7,
+ 0x68e8, 0x68e9, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68ee, 0x68ef,
+ 0x68f0, 0x68f1, 0x68f2, 0x68f3, 0x68f4, 0x68f5, 0x68f6, 0x68f7,
+ 0x68f8, 0x68f9, 0x68fa, 0x68fb, 0x68fc, 0x68fd, 0x68fe, 0x68ff,
+ 0x6900, 0x6901, 0x6902, 0x6903, 0x6904, 0x6905, 0x6906, 0x6907, /* 0x6900 */
+ 0x6908, 0x6909, 0x690a, 0x690b, 0x690c, 0x690d, 0x690e, 0x690f,
+ 0x6910, 0x6911, 0x6912, 0x6913, 0x6914, 0x6915, 0x6916, 0x6917,
+ 0x6918, 0x6919, 0x691a, 0x691b, 0x691c, 0x691d, 0x691e, 0x691f,
+ 0x6920, 0x6921, 0x6922, 0x6923, 0x6924, 0x6925, 0x6926, 0x6927,
+ 0x6928, 0x6929, 0x692a, 0x692b, 0x692c, 0x692d, 0x692e, 0x692f,
+ 0x6930, 0x6931, 0x6932, 0x6933, 0x6934, 0x6935, 0x6936, 0x6937,
+ 0x6938, 0x6939, 0x693a, 0x693b, 0x693c, 0x693d, 0x693e, 0x693f,
+ 0x6940, 0x6941, 0x6942, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, /* 0x6940 */
+ 0x6948, 0x6949, 0x694a, 0x694b, 0x694c, 0x694d, 0x694e, 0x694f,
+ 0x6950, 0x6951, 0x6952, 0x6953, 0x6954, 0x6955, 0x6956, 0x6957,
+ 0x6958, 0x6959, 0x695a, 0x695b, 0x695c, 0x695d, 0x695e, 0x695f,
+ 0x6960, 0x6961, 0x6962, 0x6963, 0x6964, 0x6965, 0x6966, 0x6967,
+ 0x6968, 0x6969, 0x696a, 0x696b, 0x696c, 0x696d, 0x696e, 0x696f,
+ 0x6970, 0x6971, 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x6977,
+ 0x6978, 0x6979, 0x697a, 0x697b, 0x697c, 0x697d, 0x697e, 0x697f,
+ 0x6980, 0x6981, 0x6982, 0x6983, 0x6984, 0x6985, 0x6986, 0x6987, /* 0x6980 */
+ 0x6988, 0x6989, 0x698a, 0x698b, 0x698c, 0x698d, 0x698e, 0x698f,
+ 0x6990, 0x6991, 0x6992, 0x6993, 0x6994, 0x6995, 0x6996, 0x6997,
+ 0x6998, 0x6999, 0x699a, 0x699b, 0x699c, 0x699d, 0x699e, 0x699f,
+ 0x69a0, 0x69a1, 0x69a2, 0x69a3, 0x69a4, 0x69a5, 0x69a6, 0x69a7,
+ 0x69a8, 0x69a9, 0x69aa, 0x69ab, 0x69ac, 0x69ad, 0x69ae, 0x69af,
+ 0x69b0, 0x69b1, 0x69b2, 0x69b3, 0x69b4, 0x69b5, 0x69b6, 0x69b7,
+ 0x69b8, 0x69b9, 0x69ba, 0x69bb, 0x69bc, 0x69bd, 0x69be, 0x69bf,
+ 0x69c0, 0x69c1, 0x69c2, 0x69c3, 0x69c4, 0x69c5, 0x69c6, 0x69c7, /* 0x69c0 */
+ 0x69c8, 0x69c9, 0x69ca, 0x69cb, 0x69cc, 0x69cd, 0x69ce, 0x69cf,
+ 0x69d0, 0x69d1, 0x69d2, 0x69d3, 0x69d4, 0x69d5, 0x69d6, 0x69d7,
+ 0x69d8, 0x69d9, 0x69da, 0x69db, 0x69dc, 0x69dd, 0x69de, 0x69df,
+ 0x69e0, 0x69e1, 0x69e2, 0x69e3, 0x69e4, 0x69e5, 0x69e6, 0x69e7,
+ 0x69e8, 0x69e9, 0x69ea, 0x69eb, 0x69ec, 0x69ed, 0x69ee, 0x69ef,
+ 0x69f0, 0x69f1, 0x69f2, 0x69f3, 0x69f4, 0x69f5, 0x69f6, 0x69f7,
+ 0x69f8, 0x69f9, 0x69fa, 0x69fb, 0x69fc, 0x69fd, 0x69fe, 0x69ff,
+ 0x6a00, 0x6a01, 0x6a02, 0x6a03, 0x6a04, 0x6a05, 0x6a06, 0x6a07, /* 0x6a00 */
+ 0x6a08, 0x6a09, 0x6a0a, 0x6a0b, 0x6a0c, 0x6a0d, 0x6a0e, 0x6a0f,
+ 0x6a10, 0x6a11, 0x6a12, 0x6a13, 0x6a14, 0x6a15, 0x6a16, 0x6a17,
+ 0x6a18, 0x6a19, 0x6a1a, 0x6a1b, 0x6a1c, 0x6a1d, 0x6a1e, 0x6a1f,
+ 0x6a20, 0x6a21, 0x6a22, 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27,
+ 0x6a28, 0x6a29, 0x6a2a, 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a2f,
+ 0x6a30, 0x6a31, 0x6a32, 0x6a33, 0x6a34, 0x6a35, 0x6a36, 0x6a37,
+ 0x6a38, 0x6a39, 0x6a3a, 0x6a3b, 0x6a3c, 0x6a3d, 0x6a3e, 0x6a3f,
+ 0x6a40, 0x6a41, 0x6a42, 0x6a43, 0x6a44, 0x6a45, 0x6a46, 0x6a47, /* 0x6a40 */
+ 0x6a48, 0x6a49, 0x6a4a, 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f,
+ 0x6a50, 0x6a51, 0x6a52, 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57,
+ 0x6a58, 0x6a59, 0x6a5a, 0x6a5b, 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f,
+ 0x6a60, 0x6a61, 0x6a62, 0x6a63, 0x6a64, 0x6a65, 0x6a66, 0x6a67,
+ 0x6a68, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e, 0x6a6f,
+ 0x6a70, 0x6a71, 0x6a72, 0x6a73, 0x6a74, 0x6a75, 0x6a76, 0x6a77,
+ 0x6a78, 0x6a79, 0x6a7a, 0x6a7b, 0x6a7c, 0x6a7d, 0x6a7e, 0x6a7f,
+ 0x6a80, 0x6a81, 0x6a82, 0x6a83, 0x6a84, 0x6a85, 0x6a86, 0x6a87, /* 0x6a80 */
+ 0x6a88, 0x6a89, 0x6a8a, 0x6a8b, 0x6a8c, 0x6a8d, 0x6a8e, 0x6a8f,
+ 0x6a90, 0x6a91, 0x6a92, 0x6a93, 0x6a94, 0x6a95, 0x6a96, 0x6a97,
+ 0x6a98, 0x6a99, 0x6a9a, 0x6a9b, 0x6a9c, 0x6a9d, 0x6a9e, 0x6a9f,
+ 0x6aa0, 0x6aa1, 0x6aa2, 0x6aa3, 0x6aa4, 0x6aa5, 0x6aa6, 0x6aa7,
+ 0x6aa8, 0x6aa9, 0x6aaa, 0x6aab, 0x6aac, 0x6aad, 0x6aae, 0x6aaf,
+ 0x6ab0, 0x6ab1, 0x6ab2, 0x6ab3, 0x6ab4, 0x6ab5, 0x6ab6, 0x6ab7,
+ 0x6ab8, 0x6ab9, 0x6aba, 0x6abb, 0x6abc, 0x6abd, 0x6abe, 0x6abf,
+ 0x6ac0, 0x6ac1, 0x6ac2, 0x6ac3, 0x6ac4, 0x6ac5, 0x6ac6, 0x6ac7, /* 0x6ac0 */
+ 0x6ac8, 0x6ac9, 0x6aca, 0x6acb, 0x6acc, 0x6acd, 0x6ace, 0x6acf,
+ 0x6ad0, 0x6ad1, 0x6ad2, 0x6ad3, 0x6ad4, 0x6ad5, 0x6ad6, 0x6ad7,
+ 0x6ad8, 0x6ad9, 0x6ada, 0x6adb, 0x6adc, 0x6add, 0x6ade, 0x6adf,
+ 0x6ae0, 0x6ae1, 0x6ae2, 0x6ae3, 0x6ae4, 0x6ae5, 0x6ae6, 0x6ae7,
+ 0x6ae8, 0x6ae9, 0x6aea, 0x6aeb, 0x6aec, 0x6aed, 0x6aee, 0x6aef,
+ 0x6af0, 0x6af1, 0x6af2, 0x6af3, 0x6af4, 0x6af5, 0x6af6, 0x6af7,
+ 0x6af8, 0x6af9, 0x6afa, 0x6afb, 0x6afc, 0x6afd, 0x6afe, 0x6aff,
+ 0x6b00, 0x6b01, 0x6b02, 0x6b03, 0x6b04, 0x6b05, 0x6b06, 0x6b07, /* 0x6b00 */
+ 0x6b08, 0x6b09, 0x6b0a, 0x6b0b, 0x6b0c, 0x6b0d, 0x6b0e, 0x6b0f,
+ 0x6b10, 0x6b11, 0x6b12, 0x6b13, 0x6b14, 0x6b15, 0x6b16, 0x6b17,
+ 0x6b18, 0x6b19, 0x6b1a, 0x6b1b, 0x6b1c, 0x6b1d, 0x6b1e, 0x6b1f,
+ 0x6b20, 0x6b21, 0x6b22, 0x6b23, 0x6b24, 0x6b25, 0x6b26, 0x6b27,
+ 0x6b28, 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c, 0x6b2d, 0x6b2e, 0x6b2f,
+ 0x6b30, 0x6b31, 0x6b32, 0x6b33, 0x6b34, 0x6b35, 0x6b36, 0x6b37,
+ 0x6b38, 0x6b39, 0x6b3a, 0x6b3b, 0x6b3c, 0x6b3d, 0x6b3e, 0x6b3f,
+ 0x6b40, 0x6b41, 0x6b42, 0x6b43, 0x6b44, 0x6b45, 0x6b46, 0x6b47, /* 0x6b40 */
+ 0x6b48, 0x6b49, 0x6b4a, 0x6b4b, 0x6b4c, 0x6b4d, 0x6b4e, 0x6b4f,
+ 0x6b50, 0x6b51, 0x6b52, 0x6b53, 0x6b54, 0x6b55, 0x6b56, 0x6b57,
+ 0x6b58, 0x6b59, 0x6b5a, 0x6b5b, 0x6b5c, 0x6b5d, 0x6b5e, 0x6b5f,
+ 0x6b60, 0x6b61, 0x6b62, 0x6b63, 0x6b64, 0x6b65, 0x6b66, 0x6b67,
+ 0x6b68, 0x6b69, 0x6b6a, 0x6b6b, 0x6b6c, 0x6b6d, 0x6b6e, 0x6b6f,
+ 0x6b70, 0x6b71, 0x6b72, 0x6b73, 0x6b74, 0x6b75, 0x6b76, 0x6b77,
+ 0x6b78, 0x6b79, 0x6b7a, 0x6b7b, 0x6b7c, 0x6b7d, 0x6b7e, 0x6b7f,
+ 0x6b80, 0x6b81, 0x6b82, 0x6b83, 0x6b84, 0x6b85, 0x6b86, 0x6b87, /* 0x6b80 */
+ 0x6b88, 0x6b89, 0x6b8a, 0x6b8b, 0x6b8c, 0x6b8d, 0x6b8e, 0x6b8f,
+ 0x6b90, 0x6b91, 0x6b92, 0x6b93, 0x6b94, 0x6b95, 0x6b96, 0x6b97,
+ 0x6b98, 0x6b99, 0x6b9a, 0x6b9b, 0x6b9c, 0x6b9d, 0x6b9e, 0x6b9f,
+ 0x6ba0, 0x6ba1, 0x6ba2, 0x6ba3, 0x6ba4, 0x6ba5, 0x6ba6, 0x6ba7,
+ 0x6ba8, 0x6ba9, 0x6baa, 0x6bab, 0x6bac, 0x6bad, 0x6bae, 0x6baf,
+ 0x6bb0, 0x6bb1, 0x6bb2, 0x6bb3, 0x6bb4, 0x6bb5, 0x6bb6, 0x6bb7,
+ 0x6bb8, 0x6bb9, 0x6bba, 0x6bbb, 0x6bbc, 0x6bbd, 0x6bbe, 0x6bbf,
+ 0x6bc0, 0x6bc1, 0x6bc2, 0x6bc3, 0x6bc4, 0x6bc5, 0x6bc6, 0x6bc7, /* 0x6bc0 */
+ 0x6bc8, 0x6bc9, 0x6bca, 0x6bcb, 0x6bcc, 0x6bcd, 0x6bce, 0x6bcf,
+ 0x6bd0, 0x6bd1, 0x6bd2, 0x6bd3, 0x6bd4, 0x6bd5, 0x6bd6, 0x6bd7,
+ 0x6bd8, 0x6bd9, 0x6bda, 0x6bdb, 0x6bdc, 0x6bdd, 0x6bde, 0x6bdf,
+ 0x6be0, 0x6be1, 0x6be2, 0x6be3, 0x6be4, 0x6be5, 0x6be6, 0x6be7,
+ 0x6be8, 0x6be9, 0x6bea, 0x6beb, 0x6bec, 0x6bed, 0x6bee, 0x6bef,
+ 0x6bf0, 0x6bf1, 0x6bf2, 0x6bf3, 0x6bf4, 0x6bf5, 0x6bf6, 0x6bf7,
+ 0x6bf8, 0x6bf9, 0x6bfa, 0x6bfb, 0x6bfc, 0x6bfd, 0x6bfe, 0x6bff,
+ 0x6c00, 0x6c01, 0x6c02, 0x6c03, 0x6c04, 0x6c05, 0x6c06, 0x6c07, /* 0x6c00 */
+ 0x6c08, 0x6c09, 0x6c0a, 0x6c0b, 0x6c0c, 0x6c0d, 0x6c0e, 0x6c0f,
+ 0x6c10, 0x6c11, 0x6c12, 0x6c13, 0x6c14, 0x6c15, 0x6c16, 0x6c17,
+ 0x6c18, 0x6c19, 0x6c1a, 0x6c1b, 0x6c1c, 0x6c1d, 0x6c1e, 0x6c1f,
+ 0x6c20, 0x6c21, 0x6c22, 0x6c23, 0x6c24, 0x6c25, 0x6c26, 0x6c27,
+ 0x6c28, 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c2e, 0x6c2f,
+ 0x6c30, 0x6c31, 0x6c32, 0x6c33, 0x6c34, 0x6c35, 0x6c36, 0x6c37,
+ 0x6c38, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3d, 0x6c3e, 0x6c3f,
+ 0x6c40, 0x6c41, 0x6c42, 0x6c43, 0x6c44, 0x6c45, 0x6c46, 0x6c47, /* 0x6c40 */
+ 0x6c48, 0x6c49, 0x6c4a, 0x6c4b, 0x6c4c, 0x6c4d, 0x6c4e, 0x6c4f,
+ 0x6c50, 0x6c51, 0x6c52, 0x6c53, 0x6c54, 0x6c55, 0x6c56, 0x6c57,
+ 0x6c58, 0x6c59, 0x6c5a, 0x6c5b, 0x6c5c, 0x6c5d, 0x6c5e, 0x6c5f,
+ 0x6c60, 0x6c61, 0x6c62, 0x6c63, 0x6c64, 0x6c65, 0x6c66, 0x6c67,
+ 0x6c68, 0x6c69, 0x6c6a, 0x6c6b, 0x6c6c, 0x6c6d, 0x6c6e, 0x6c6f,
+ 0x6c70, 0x6c71, 0x6c72, 0x6c73, 0x6c74, 0x6c75, 0x6c76, 0x6c77,
+ 0x6c78, 0x6c79, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7d, 0x6c7e, 0x6c7f,
+ 0x6c80, 0x6c81, 0x6c82, 0x6c83, 0x6c84, 0x6c85, 0x6c86, 0x6c87, /* 0x6c80 */
+ 0x6c88, 0x6c89, 0x6c8a, 0x6c8b, 0x6c8c, 0x6c8d, 0x6c8e, 0x6c8f,
+ 0x6c90, 0x6c91, 0x6c92, 0x6c93, 0x6c94, 0x6c95, 0x6c96, 0x6c97,
+ 0x6c98, 0x6c99, 0x6c9a, 0x6c9b, 0x6c9c, 0x6c9d, 0x6c9e, 0x6c9f,
+ 0x6ca0, 0x6ca1, 0x6ca2, 0x6ca3, 0x6ca4, 0x6ca5, 0x6ca6, 0x6ca7,
+ 0x6ca8, 0x6ca9, 0x6caa, 0x6cab, 0x6cac, 0x6cad, 0x6cae, 0x6caf,
+ 0x6cb0, 0x6cb1, 0x6cb2, 0x6cb3, 0x6cb4, 0x6cb5, 0x6cb6, 0x6cb7,
+ 0x6cb8, 0x6cb9, 0x6cba, 0x6cbb, 0x6cbc, 0x6cbd, 0x6cbe, 0x6cbf,
+ 0x6cc0, 0x6cc1, 0x6cc2, 0x6cc3, 0x6cc4, 0x6cc5, 0x6cc6, 0x6cc7, /* 0x6cc0 */
+ 0x6cc8, 0x6cc9, 0x6cca, 0x6ccb, 0x6ccc, 0x6ccd, 0x6cce, 0x6ccf,
+ 0x6cd0, 0x6cd1, 0x6cd2, 0x6cd3, 0x6cd4, 0x6cd5, 0x6cd6, 0x6cd7,
+ 0x6cd8, 0x6cd9, 0x6cda, 0x6cdb, 0x6cdc, 0x6cdd, 0x6cde, 0x6cdf,
+ 0x6ce0, 0x6ce1, 0x6ce2, 0x6ce3, 0x6ce4, 0x6ce5, 0x6ce6, 0x6ce7,
+ 0x6ce8, 0x6ce9, 0x6cea, 0x6ceb, 0x6cec, 0x6ced, 0x6cee, 0x6cef,
+ 0x6cf0, 0x6cf1, 0x6cf2, 0x6cf3, 0x6cf4, 0x6cf5, 0x6cf6, 0x6cf7,
+ 0x6cf8, 0x6cf9, 0x6cfa, 0x6cfb, 0x6cfc, 0x6cfd, 0x6cfe, 0x6cff,
+ 0x6d00, 0x6d01, 0x6d02, 0x6d03, 0x6d04, 0x6d05, 0x6d06, 0x6d07, /* 0x6d00 */
+ 0x6d08, 0x6d09, 0x6d0a, 0x6d0b, 0x6d0c, 0x6d0d, 0x6d0e, 0x6d0f,
+ 0x6d10, 0x6d11, 0x6d12, 0x6d13, 0x6d14, 0x6d15, 0x6d16, 0x6d17,
+ 0x6d18, 0x6d19, 0x6d1a, 0x6d1b, 0x6d1c, 0x6d1d, 0x6d1e, 0x6d1f,
+ 0x6d20, 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d25, 0x6d26, 0x6d27,
+ 0x6d28, 0x6d29, 0x6d2a, 0x6d2b, 0x6d2c, 0x6d2d, 0x6d2e, 0x6d2f,
+ 0x6d30, 0x6d31, 0x6d32, 0x6d33, 0x6d34, 0x6d35, 0x6d36, 0x6d37,
+ 0x6d38, 0x6d39, 0x6d3a, 0x6d3b, 0x6d3c, 0x6d3d, 0x6d3e, 0x6d3f,
+ 0x6d40, 0x6d41, 0x6d42, 0x6d43, 0x6d44, 0x6d45, 0x6d46, 0x6d47, /* 0x6d40 */
+ 0x6d48, 0x6d49, 0x6d4a, 0x6d4b, 0x6d4c, 0x6d4d, 0x6d4e, 0x6d4f,
+ 0x6d50, 0x6d51, 0x6d52, 0x6d53, 0x6d54, 0x6d55, 0x6d56, 0x6d57,
+ 0x6d58, 0x6d59, 0x6d5a, 0x6d5b, 0x6d5c, 0x6d5d, 0x6d5e, 0x6d5f,
+ 0x6d60, 0x6d61, 0x6d62, 0x6d63, 0x6d64, 0x6d65, 0x6d66, 0x6d67,
+ 0x6d68, 0x6d69, 0x6d6a, 0x6d6b, 0x6d6c, 0x6d6d, 0x6d6e, 0x6d6f,
+ 0x6d70, 0x6d71, 0x6d72, 0x6d73, 0x6d74, 0x6d75, 0x6d76, 0x6d77,
+ 0x6d78, 0x6d79, 0x6d7a, 0x6d7b, 0x6d7c, 0x6d7d, 0x6d7e, 0x6d7f,
+ 0x6d80, 0x6d81, 0x6d82, 0x6d83, 0x6d84, 0x6d85, 0x6d86, 0x6d87, /* 0x6d80 */
+ 0x6d88, 0x6d89, 0x6d8a, 0x6d8b, 0x6d8c, 0x6d8d, 0x6d8e, 0x6d8f,
+ 0x6d90, 0x6d91, 0x6d92, 0x6d93, 0x6d94, 0x6d95, 0x6d96, 0x6d97,
+ 0x6d98, 0x6d99, 0x6d9a, 0x6d9b, 0x6d9c, 0x6d9d, 0x6d9e, 0x6d9f,
+ 0x6da0, 0x6da1, 0x6da2, 0x6da3, 0x6da4, 0x6da5, 0x6da6, 0x6da7,
+ 0x6da8, 0x6da9, 0x6daa, 0x6dab, 0x6dac, 0x6dad, 0x6dae, 0x6daf,
+ 0x6db0, 0x6db1, 0x6db2, 0x6db3, 0x6db4, 0x6db5, 0x6db6, 0x6db7,
+ 0x6db8, 0x6db9, 0x6dba, 0x6dbb, 0x6dbc, 0x6dbd, 0x6dbe, 0x6dbf,
+ 0x6dc0, 0x6dc1, 0x6dc2, 0x6dc3, 0x6dc4, 0x6dc5, 0x6dc6, 0x6dc7, /* 0x6dc0 */
+ 0x6dc8, 0x6dc9, 0x6dca, 0x6dcb, 0x6dcc, 0x6dcd, 0x6dce, 0x6dcf,
+ 0x6dd0, 0x6dd1, 0x6dd2, 0x6dd3, 0x6dd4, 0x6dd5, 0x6dd6, 0x6dd7,
+ 0x6dd8, 0x6dd9, 0x6dda, 0x6ddb, 0x6ddc, 0x6ddd, 0x6dde, 0x6ddf,
+ 0x6de0, 0x6de1, 0x6de2, 0x6de3, 0x6de4, 0x6de5, 0x6de6, 0x6de7,
+ 0x6de8, 0x6de9, 0x6dea, 0x6deb, 0x6dec, 0x6ded, 0x6dee, 0x6def,
+ 0x6df0, 0x6df1, 0x6df2, 0x6df3, 0x6df4, 0x6df5, 0x6df6, 0x6df7,
+ 0x6df8, 0x6df9, 0x6dfa, 0x6dfb, 0x6dfc, 0x6dfd, 0x6dfe, 0x6dff,
+ 0x6e00, 0x6e01, 0x6e02, 0x6e03, 0x6e04, 0x6e05, 0x6e06, 0x6e07, /* 0x6e00 */
+ 0x6e08, 0x6e09, 0x6e0a, 0x6e0b, 0x6e0c, 0x6e0d, 0x6e0e, 0x6e0f,
+ 0x6e10, 0x6e11, 0x6e12, 0x6e13, 0x6e14, 0x6e15, 0x6e16, 0x6e17,
+ 0x6e18, 0x6e19, 0x6e1a, 0x6e1b, 0x6e1c, 0x6e1d, 0x6e1e, 0x6e1f,
+ 0x6e20, 0x6e21, 0x6e22, 0x6e23, 0x6e24, 0x6e25, 0x6e26, 0x6e27,
+ 0x6e28, 0x6e29, 0x6e2a, 0x6e2b, 0x6e2c, 0x6e2d, 0x6e2e, 0x6e2f,
+ 0x6e30, 0x6e31, 0x6e32, 0x6e33, 0x6e34, 0x6e35, 0x6e36, 0x6e37,
+ 0x6e38, 0x6e39, 0x6e3a, 0x6e3b, 0x6e3c, 0x6e3d, 0x6e3e, 0x6e3f,
+ 0x6e40, 0x6e41, 0x6e42, 0x6e43, 0x6e44, 0x6e45, 0x6e46, 0x6e47, /* 0x6e40 */
+ 0x6e48, 0x6e49, 0x6e4a, 0x6e4b, 0x6e4c, 0x6e4d, 0x6e4e, 0x6e4f,
+ 0x6e50, 0x6e51, 0x6e52, 0x6e53, 0x6e54, 0x6e55, 0x6e56, 0x6e57,
+ 0x6e58, 0x6e59, 0x6e5a, 0x6e5b, 0x6e5c, 0x6e5d, 0x6e5e, 0x6e5f,
+ 0x6e60, 0x6e61, 0x6e62, 0x6e63, 0x6e64, 0x6e65, 0x6e66, 0x6e67,
+ 0x6e68, 0x6e69, 0x6e6a, 0x6e6b, 0x6e6c, 0x6e6d, 0x6e6e, 0x6e6f,
+ 0x6e70, 0x6e71, 0x6e72, 0x6e73, 0x6e74, 0x6e75, 0x6e76, 0x6e77,
+ 0x6e78, 0x6e79, 0x6e7a, 0x6e7b, 0x6e7c, 0x6e7d, 0x6e7e, 0x6e7f,
+ 0x6e80, 0x6e81, 0x6e82, 0x6e83, 0x6e84, 0x6e85, 0x6e86, 0x6e87, /* 0x6e80 */
+ 0x6e88, 0x6e89, 0x6e8a, 0x6e8b, 0x6e8c, 0x6e8d, 0x6e8e, 0x6e8f,
+ 0x6e90, 0x6e91, 0x6e92, 0x6e93, 0x6e94, 0x6e95, 0x6e96, 0x6e97,
+ 0x6e98, 0x6e99, 0x6e9a, 0x6e9b, 0x6e9c, 0x6e9d, 0x6e9e, 0x6e9f,
+ 0x6ea0, 0x6ea1, 0x6ea2, 0x6ea3, 0x6ea4, 0x6ea5, 0x6ea6, 0x6ea7,
+ 0x6ea8, 0x6ea9, 0x6eaa, 0x6eab, 0x6eac, 0x6ead, 0x6eae, 0x6eaf,
+ 0x6eb0, 0x6eb1, 0x6eb2, 0x6eb3, 0x6eb4, 0x6eb5, 0x6eb6, 0x6eb7,
+ 0x6eb8, 0x6eb9, 0x6eba, 0x6ebb, 0x6ebc, 0x6ebd, 0x6ebe, 0x6ebf,
+ 0x6ec0, 0x6ec1, 0x6ec2, 0x6ec3, 0x6ec4, 0x6ec5, 0x6ec6, 0x6ec7, /* 0x6ec0 */
+ 0x6ec8, 0x6ec9, 0x6eca, 0x6ecb, 0x6ecc, 0x6ecd, 0x6ece, 0x6ecf,
+ 0x6ed0, 0x6ed1, 0x6ed2, 0x6ed3, 0x6ed4, 0x6ed5, 0x6ed6, 0x6ed7,
+ 0x6ed8, 0x6ed9, 0x6eda, 0x6edb, 0x6edc, 0x6edd, 0x6ede, 0x6edf,
+ 0x6ee0, 0x6ee1, 0x6ee2, 0x6ee3, 0x6ee4, 0x6ee5, 0x6ee6, 0x6ee7,
+ 0x6ee8, 0x6ee9, 0x6eea, 0x6eeb, 0x6eec, 0x6eed, 0x6eee, 0x6eef,
+ 0x6ef0, 0x6ef1, 0x6ef2, 0x6ef3, 0x6ef4, 0x6ef5, 0x6ef6, 0x6ef7,
+ 0x6ef8, 0x6ef9, 0x6efa, 0x6efb, 0x6efc, 0x6efd, 0x6efe, 0x6eff,
+ 0x6f00, 0x6f01, 0x6f02, 0x6f03, 0x6f04, 0x6f05, 0x6f06, 0x6f07, /* 0x6f00 */
+ 0x6f08, 0x6f09, 0x6f0a, 0x6f0b, 0x6f0c, 0x6f0d, 0x6f0e, 0x6f0f,
+ 0x6f10, 0x6f11, 0x6f12, 0x6f13, 0x6f14, 0x6f15, 0x6f16, 0x6f17,
+ 0x6f18, 0x6f19, 0x6f1a, 0x6f1b, 0x6f1c, 0x6f1d, 0x6f1e, 0x6f1f,
+ 0x6f20, 0x6f21, 0x6f22, 0x6f23, 0x6f24, 0x6f25, 0x6f26, 0x6f27,
+ 0x6f28, 0x6f29, 0x6f2a, 0x6f2b, 0x6f2c, 0x6f2d, 0x6f2e, 0x6f2f,
+ 0x6f30, 0x6f31, 0x6f32, 0x6f33, 0x6f34, 0x6f35, 0x6f36, 0x6f37,
+ 0x6f38, 0x6f39, 0x6f3a, 0x6f3b, 0x6f3c, 0x6f3d, 0x6f3e, 0x6f3f,
+ 0x6f40, 0x6f41, 0x6f42, 0x6f43, 0x6f44, 0x6f45, 0x6f46, 0x6f47, /* 0x6f40 */
+ 0x6f48, 0x6f49, 0x6f4a, 0x6f4b, 0x6f4c, 0x6f4d, 0x6f4e, 0x6f4f,
+ 0x6f50, 0x6f51, 0x6f52, 0x6f53, 0x6f54, 0x6f55, 0x6f56, 0x6f57,
+ 0x6f58, 0x6f59, 0x6f5a, 0x6f5b, 0x6f5c, 0x6f5d, 0x6f5e, 0x6f5f,
+ 0x6f60, 0x6f61, 0x6f62, 0x6f63, 0x6f64, 0x6f65, 0x6f66, 0x6f67,
+ 0x6f68, 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c, 0x6f6d, 0x6f6e, 0x6f6f,
+ 0x6f70, 0x6f71, 0x6f72, 0x6f73, 0x6f74, 0x6f75, 0x6f76, 0x6f77,
+ 0x6f78, 0x6f79, 0x6f7a, 0x6f7b, 0x6f7c, 0x6f7d, 0x6f7e, 0x6f7f,
+ 0x6f80, 0x6f81, 0x6f82, 0x6f83, 0x6f84, 0x6f85, 0x6f86, 0x6f87, /* 0x6f80 */
+ 0x6f88, 0x6f89, 0x6f8a, 0x6f8b, 0x6f8c, 0x6f8d, 0x6f8e, 0x6f8f,
+ 0x6f90, 0x6f91, 0x6f92, 0x6f93, 0x6f94, 0x6f95, 0x6f96, 0x6f97,
+ 0x6f98, 0x6f99, 0x6f9a, 0x6f9b, 0x6f9c, 0x6f9d, 0x6f9e, 0x6f9f,
+ 0x6fa0, 0x6fa1, 0x6fa2, 0x6fa3, 0x6fa4, 0x6fa5, 0x6fa6, 0x6fa7,
+ 0x6fa8, 0x6fa9, 0x6faa, 0x6fab, 0x6fac, 0x6fad, 0x6fae, 0x6faf,
+ 0x6fb0, 0x6fb1, 0x6fb2, 0x6fb3, 0x6fb4, 0x6fb5, 0x6fb6, 0x6fb7,
+ 0x6fb8, 0x6fb9, 0x6fba, 0x6fbb, 0x6fbc, 0x6fbd, 0x6fbe, 0x6fbf,
+ 0x6fc0, 0x6fc1, 0x6fc2, 0x6fc3, 0x6fc4, 0x6fc5, 0x6fc6, 0x6fc7, /* 0x6fc0 */
+ 0x6fc8, 0x6fc9, 0x6fca, 0x6fcb, 0x6fcc, 0x6fcd, 0x6fce, 0x6fcf,
+ 0x6fd0, 0x6fd1, 0x6fd2, 0x6fd3, 0x6fd4, 0x6fd5, 0x6fd6, 0x6fd7,
+ 0x6fd8, 0x6fd9, 0x6fda, 0x6fdb, 0x6fdc, 0x6fdd, 0x6fde, 0x6fdf,
+ 0x6fe0, 0x6fe1, 0x6fe2, 0x6fe3, 0x6fe4, 0x6fe5, 0x6fe6, 0x6fe7,
+ 0x6fe8, 0x6fe9, 0x6fea, 0x6feb, 0x6fec, 0x6fed, 0x6fee, 0x6fef,
+ 0x6ff0, 0x6ff1, 0x6ff2, 0x6ff3, 0x6ff4, 0x6ff5, 0x6ff6, 0x6ff7,
+ 0x6ff8, 0x6ff9, 0x6ffa, 0x6ffb, 0x6ffc, 0x6ffd, 0x6ffe, 0x6fff,
+ 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007, /* 0x7000 */
+ 0x7008, 0x7009, 0x700a, 0x700b, 0x700c, 0x700d, 0x700e, 0x700f,
+ 0x7010, 0x7011, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017,
+ 0x7018, 0x7019, 0x701a, 0x701b, 0x701c, 0x701d, 0x701e, 0x701f,
+ 0x7020, 0x7021, 0x7022, 0x7023, 0x7024, 0x7025, 0x7026, 0x7027,
+ 0x7028, 0x7029, 0x702a, 0x702b, 0x702c, 0x702d, 0x702e, 0x702f,
+ 0x7030, 0x7031, 0x7032, 0x7033, 0x7034, 0x7035, 0x7036, 0x7037,
+ 0x7038, 0x7039, 0x703a, 0x703b, 0x703c, 0x703d, 0x703e, 0x703f,
+ 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 0x7045, 0x7046, 0x7047, /* 0x7040 */
+ 0x7048, 0x7049, 0x704a, 0x704b, 0x704c, 0x704d, 0x704e, 0x704f,
+ 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7057,
+ 0x7058, 0x7059, 0x705a, 0x705b, 0x705c, 0x705d, 0x705e, 0x705f,
+ 0x7060, 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067,
+ 0x7068, 0x7069, 0x706a, 0x706b, 0x706c, 0x706d, 0x706e, 0x706f,
+ 0x7070, 0x7071, 0x7072, 0x7073, 0x7074, 0x7075, 0x7076, 0x7077,
+ 0x7078, 0x7079, 0x707a, 0x707b, 0x707c, 0x707d, 0x707e, 0x707f,
+ 0x7080, 0x7081, 0x7082, 0x7083, 0x7084, 0x7085, 0x7086, 0x7087, /* 0x7080 */
+ 0x7088, 0x7089, 0x708a, 0x708b, 0x708c, 0x708d, 0x708e, 0x708f,
+ 0x7090, 0x7091, 0x7092, 0x7093, 0x7094, 0x7095, 0x7096, 0x7097,
+ 0x7098, 0x7099, 0x709a, 0x709b, 0x709c, 0x709d, 0x709e, 0x709f,
+ 0x70a0, 0x70a1, 0x70a2, 0x70a3, 0x70a4, 0x70a5, 0x70a6, 0x70a7,
+ 0x70a8, 0x70a9, 0x70aa, 0x70ab, 0x70ac, 0x70ad, 0x70ae, 0x70af,
+ 0x70b0, 0x70b1, 0x70b2, 0x70b3, 0x70b4, 0x70b5, 0x70b6, 0x70b7,
+ 0x70b8, 0x70b9, 0x70ba, 0x70bb, 0x70bc, 0x70bd, 0x70be, 0x70bf,
+ 0x70c0, 0x70c1, 0x70c2, 0x70c3, 0x70c4, 0x70c5, 0x70c6, 0x70c7, /* 0x70c0 */
+ 0x70c8, 0x70c9, 0x70ca, 0x70cb, 0x70cc, 0x70cd, 0x70ce, 0x70cf,
+ 0x70d0, 0x70d1, 0x70d2, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d7,
+ 0x70d8, 0x70d9, 0x70da, 0x70db, 0x70dc, 0x70dd, 0x70de, 0x70df,
+ 0x70e0, 0x70e1, 0x70e2, 0x70e3, 0x70e4, 0x70e5, 0x70e6, 0x70e7,
+ 0x70e8, 0x70e9, 0x70ea, 0x70eb, 0x70ec, 0x70ed, 0x70ee, 0x70ef,
+ 0x70f0, 0x70f1, 0x70f2, 0x70f3, 0x70f4, 0x70f5, 0x70f6, 0x70f7,
+ 0x70f8, 0x70f9, 0x70fa, 0x70fb, 0x70fc, 0x70fd, 0x70fe, 0x70ff,
+ 0x7100, 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, /* 0x7100 */
+ 0x7108, 0x7109, 0x710a, 0x710b, 0x710c, 0x710d, 0x710e, 0x710f,
+ 0x7110, 0x7111, 0x7112, 0x7113, 0x7114, 0x7115, 0x7116, 0x7117,
+ 0x7118, 0x7119, 0x711a, 0x711b, 0x711c, 0x711d, 0x711e, 0x711f,
+ 0x7120, 0x7121, 0x7122, 0x7123, 0x7124, 0x7125, 0x7126, 0x7127,
+ 0x7128, 0x7129, 0x712a, 0x712b, 0x712c, 0x712d, 0x712e, 0x712f,
+ 0x7130, 0x7131, 0x7132, 0x7133, 0x7134, 0x7135, 0x7136, 0x7137,
+ 0x7138, 0x7139, 0x713a, 0x713b, 0x713c, 0x713d, 0x713e, 0x713f,
+ 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7145, 0x7146, 0x7147, /* 0x7140 */
+ 0x7148, 0x7149, 0x714a, 0x714b, 0x714c, 0x714d, 0x714e, 0x714f,
+ 0x7150, 0x7151, 0x7152, 0x7153, 0x7154, 0x7155, 0x7156, 0x7157,
+ 0x7158, 0x7159, 0x715a, 0x715b, 0x715c, 0x715d, 0x715e, 0x715f,
+ 0x7160, 0x7161, 0x7162, 0x7163, 0x7164, 0x7165, 0x7166, 0x7167,
+ 0x7168, 0x7169, 0x716a, 0x716b, 0x716c, 0x716d, 0x716e, 0x716f,
+ 0x7170, 0x7171, 0x7172, 0x7173, 0x7174, 0x7175, 0x7176, 0x7177,
+ 0x7178, 0x7179, 0x717a, 0x717b, 0x717c, 0x717d, 0x717e, 0x717f,
+ 0x7180, 0x7181, 0x7182, 0x7183, 0x7184, 0x7185, 0x7186, 0x7187, /* 0x7180 */
+ 0x7188, 0x7189, 0x718a, 0x718b, 0x718c, 0x718d, 0x718e, 0x718f,
+ 0x7190, 0x7191, 0x7192, 0x7193, 0x7194, 0x7195, 0x7196, 0x7197,
+ 0x7198, 0x7199, 0x719a, 0x719b, 0x719c, 0x719d, 0x719e, 0x719f,
+ 0x71a0, 0x71a1, 0x71a2, 0x71a3, 0x71a4, 0x71a5, 0x71a6, 0x71a7,
+ 0x71a8, 0x71a9, 0x71aa, 0x71ab, 0x71ac, 0x71ad, 0x71ae, 0x71af,
+ 0x71b0, 0x71b1, 0x71b2, 0x71b3, 0x71b4, 0x71b5, 0x71b6, 0x71b7,
+ 0x71b8, 0x71b9, 0x71ba, 0x71bb, 0x71bc, 0x71bd, 0x71be, 0x71bf,
+ 0x71c0, 0x71c1, 0x71c2, 0x71c3, 0x71c4, 0x71c5, 0x71c6, 0x71c7, /* 0x71c0 */
+ 0x71c8, 0x71c9, 0x71ca, 0x71cb, 0x71cc, 0x71cd, 0x71ce, 0x71cf,
+ 0x71d0, 0x71d1, 0x71d2, 0x71d3, 0x71d4, 0x71d5, 0x71d6, 0x71d7,
+ 0x71d8, 0x71d9, 0x71da, 0x71db, 0x71dc, 0x71dd, 0x71de, 0x71df,
+ 0x71e0, 0x71e1, 0x71e2, 0x71e3, 0x71e4, 0x71e5, 0x71e6, 0x71e7,
+ 0x71e8, 0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ed, 0x71ee, 0x71ef,
+ 0x71f0, 0x71f1, 0x71f2, 0x71f3, 0x71f4, 0x71f5, 0x71f6, 0x71f7,
+ 0x71f8, 0x71f9, 0x71fa, 0x71fb, 0x71fc, 0x71fd, 0x71fe, 0x71ff,
+ 0x7200, 0x7201, 0x7202, 0x7203, 0x7204, 0x7205, 0x7206, 0x7207, /* 0x7200 */
+ 0x7208, 0x7209, 0x720a, 0x720b, 0x720c, 0x720d, 0x720e, 0x720f,
+ 0x7210, 0x7211, 0x7212, 0x7213, 0x7214, 0x7215, 0x7216, 0x7217,
+ 0x7218, 0x7219, 0x721a, 0x721b, 0x721c, 0x721d, 0x721e, 0x721f,
+ 0x7220, 0x7221, 0x7222, 0x7223, 0x7224, 0x7225, 0x7226, 0x7227,
+ 0x7228, 0x7229, 0x722a, 0x722b, 0x722c, 0x722d, 0x722e, 0x722f,
+ 0x7230, 0x7231, 0x7232, 0x7233, 0x7234, 0x7235, 0x7236, 0x7237,
+ 0x7238, 0x7239, 0x723a, 0x723b, 0x723c, 0x723d, 0x723e, 0x723f,
+ 0x7240, 0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7247, /* 0x7240 */
+ 0x7248, 0x7249, 0x724a, 0x724b, 0x724c, 0x724d, 0x724e, 0x724f,
+ 0x7250, 0x7251, 0x7252, 0x7253, 0x7254, 0x7255, 0x7256, 0x7257,
+ 0x7258, 0x7259, 0x725a, 0x725b, 0x725c, 0x725d, 0x725e, 0x725f,
+ 0x7260, 0x7261, 0x7262, 0x7263, 0x7264, 0x7265, 0x7266, 0x7267,
+ 0x7268, 0x7269, 0x726a, 0x726b, 0x726c, 0x726d, 0x726e, 0x726f,
+ 0x7270, 0x7271, 0x7272, 0x7273, 0x7274, 0x7275, 0x7276, 0x7277,
+ 0x7278, 0x7279, 0x727a, 0x727b, 0x727c, 0x727d, 0x727e, 0x727f,
+ 0x7280, 0x7281, 0x7282, 0x7283, 0x7284, 0x7285, 0x7286, 0x7287, /* 0x7280 */
+ 0x7288, 0x7289, 0x728a, 0x728b, 0x728c, 0x728d, 0x728e, 0x728f,
+ 0x7290, 0x7291, 0x7292, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297,
+ 0x7298, 0x7299, 0x729a, 0x729b, 0x729c, 0x729d, 0x729e, 0x729f,
+ 0x72a0, 0x72a1, 0x72a2, 0x72a3, 0x72a4, 0x72a5, 0x72a6, 0x72a7,
+ 0x72a8, 0x72a9, 0x72aa, 0x72ab, 0x72ac, 0x72ad, 0x72ae, 0x72af,
+ 0x72b0, 0x72b1, 0x72b2, 0x72b3, 0x72b4, 0x72b5, 0x72b6, 0x72b7,
+ 0x72b8, 0x72b9, 0x72ba, 0x72bb, 0x72bc, 0x72bd, 0x72be, 0x72bf,
+ 0x72c0, 0x72c1, 0x72c2, 0x72c3, 0x72c4, 0x72c5, 0x72c6, 0x72c7, /* 0x72c0 */
+ 0x72c8, 0x72c9, 0x72ca, 0x72cb, 0x72cc, 0x72cd, 0x72ce, 0x72cf,
+ 0x72d0, 0x72d1, 0x72d2, 0x72d3, 0x72d4, 0x72d5, 0x72d6, 0x72d7,
+ 0x72d8, 0x72d9, 0x72da, 0x72db, 0x72dc, 0x72dd, 0x72de, 0x72df,
+ 0x72e0, 0x72e1, 0x72e2, 0x72e3, 0x72e4, 0x72e5, 0x72e6, 0x72e7,
+ 0x72e8, 0x72e9, 0x72ea, 0x72eb, 0x72ec, 0x72ed, 0x72ee, 0x72ef,
+ 0x72f0, 0x72f1, 0x72f2, 0x72f3, 0x72f4, 0x72f5, 0x72f6, 0x72f7,
+ 0x72f8, 0x72f9, 0x72fa, 0x72fb, 0x72fc, 0x72fd, 0x72fe, 0x72ff,
+ 0x7300, 0x7301, 0x7302, 0x7303, 0x7304, 0x7305, 0x7306, 0x7307, /* 0x7300 */
+ 0x7308, 0x7309, 0x730a, 0x730b, 0x730c, 0x730d, 0x730e, 0x730f,
+ 0x7310, 0x7311, 0x7312, 0x7313, 0x7314, 0x7315, 0x7316, 0x7317,
+ 0x7318, 0x7319, 0x731a, 0x731b, 0x731c, 0x731d, 0x731e, 0x731f,
+ 0x7320, 0x7321, 0x7322, 0x7323, 0x7324, 0x7325, 0x7326, 0x7327,
+ 0x7328, 0x7329, 0x732a, 0x732b, 0x732c, 0x732d, 0x732e, 0x732f,
+ 0x7330, 0x7331, 0x7332, 0x7333, 0x7334, 0x7335, 0x7336, 0x7337,
+ 0x7338, 0x7339, 0x733a, 0x733b, 0x733c, 0x733d, 0x733e, 0x733f,
+ 0x7340, 0x7341, 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, /* 0x7340 */
+ 0x7348, 0x7349, 0x734a, 0x734b, 0x734c, 0x734d, 0x734e, 0x734f,
+ 0x7350, 0x7351, 0x7352, 0x7353, 0x7354, 0x7355, 0x7356, 0x7357,
+ 0x7358, 0x7359, 0x735a, 0x735b, 0x735c, 0x735d, 0x735e, 0x735f,
+ 0x7360, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366, 0x7367,
+ 0x7368, 0x7369, 0x736a, 0x736b, 0x736c, 0x736d, 0x736e, 0x736f,
+ 0x7370, 0x7371, 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377,
+ 0x7378, 0x7379, 0x737a, 0x737b, 0x737c, 0x737d, 0x737e, 0x737f,
+ 0x7380, 0x7381, 0x7382, 0x7383, 0x7384, 0x7385, 0x7386, 0x7387, /* 0x7380 */
+ 0x7388, 0x7389, 0x738a, 0x738b, 0x738c, 0x738d, 0x738e, 0x738f,
+ 0x7390, 0x7391, 0x7392, 0x7393, 0x7394, 0x7395, 0x7396, 0x7397,
+ 0x7398, 0x7399, 0x739a, 0x739b, 0x739c, 0x739d, 0x739e, 0x739f,
+ 0x73a0, 0x73a1, 0x73a2, 0x73a3, 0x73a4, 0x73a5, 0x73a6, 0x73a7,
+ 0x73a8, 0x73a9, 0x73aa, 0x73ab, 0x73ac, 0x73ad, 0x73ae, 0x73af,
+ 0x73b0, 0x73b1, 0x73b2, 0x73b3, 0x73b4, 0x73b5, 0x73b6, 0x73b7,
+ 0x73b8, 0x73b9, 0x73ba, 0x73bb, 0x73bc, 0x73bd, 0x73be, 0x73bf,
+ 0x73c0, 0x73c1, 0x73c2, 0x73c3, 0x73c4, 0x73c5, 0x73c6, 0x73c7, /* 0x73c0 */
+ 0x73c8, 0x73c9, 0x73ca, 0x73cb, 0x73cc, 0x73cd, 0x73ce, 0x73cf,
+ 0x73d0, 0x73d1, 0x73d2, 0x73d3, 0x73d4, 0x73d5, 0x73d6, 0x73d7,
+ 0x73d8, 0x73d9, 0x73da, 0x73db, 0x73dc, 0x73dd, 0x73de, 0x73df,
+ 0x73e0, 0x73e1, 0x73e2, 0x73e3, 0x73e4, 0x73e5, 0x73e6, 0x73e7,
+ 0x73e8, 0x73e9, 0x73ea, 0x73eb, 0x73ec, 0x73ed, 0x73ee, 0x73ef,
+ 0x73f0, 0x73f1, 0x73f2, 0x73f3, 0x73f4, 0x73f5, 0x73f6, 0x73f7,
+ 0x73f8, 0x73f9, 0x73fa, 0x73fb, 0x73fc, 0x73fd, 0x73fe, 0x73ff,
+ 0x7400, 0x7401, 0x7402, 0x7403, 0x7404, 0x7405, 0x7406, 0x7407, /* 0x7400 */
+ 0x7408, 0x7409, 0x740a, 0x740b, 0x740c, 0x740d, 0x740e, 0x740f,
+ 0x7410, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416, 0x7417,
+ 0x7418, 0x7419, 0x741a, 0x741b, 0x741c, 0x741d, 0x741e, 0x741f,
+ 0x7420, 0x7421, 0x7422, 0x7423, 0x7424, 0x7425, 0x7426, 0x7427,
+ 0x7428, 0x7429, 0x742a, 0x742b, 0x742c, 0x742d, 0x742e, 0x742f,
+ 0x7430, 0x7431, 0x7432, 0x7433, 0x7434, 0x7435, 0x7436, 0x7437,
+ 0x7438, 0x7439, 0x743a, 0x743b, 0x743c, 0x743d, 0x743e, 0x743f,
+ 0x7440, 0x7441, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446, 0x7447, /* 0x7440 */
+ 0x7448, 0x7449, 0x744a, 0x744b, 0x744c, 0x744d, 0x744e, 0x744f,
+ 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7455, 0x7456, 0x7457,
+ 0x7458, 0x7459, 0x745a, 0x745b, 0x745c, 0x745d, 0x745e, 0x745f,
+ 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465, 0x7466, 0x7467,
+ 0x7468, 0x7469, 0x746a, 0x746b, 0x746c, 0x746d, 0x746e, 0x746f,
+ 0x7470, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7476, 0x7477,
+ 0x7478, 0x7479, 0x747a, 0x747b, 0x747c, 0x747d, 0x747e, 0x747f,
+ 0x7480, 0x7481, 0x7482, 0x7483, 0x7484, 0x7485, 0x7486, 0x7487, /* 0x7480 */
+ 0x7488, 0x7489, 0x748a, 0x748b, 0x748c, 0x748d, 0x748e, 0x748f,
+ 0x7490, 0x7491, 0x7492, 0x7493, 0x7494, 0x7495, 0x7496, 0x7497,
+ 0x7498, 0x7499, 0x749a, 0x749b, 0x749c, 0x749d, 0x749e, 0x749f,
+ 0x74a0, 0x74a1, 0x74a2, 0x74a3, 0x74a4, 0x74a5, 0x74a6, 0x74a7,
+ 0x74a8, 0x74a9, 0x74aa, 0x74ab, 0x74ac, 0x74ad, 0x74ae, 0x74af,
+ 0x74b0, 0x74b1, 0x74b2, 0x74b3, 0x74b4, 0x74b5, 0x74b6, 0x74b7,
+ 0x74b8, 0x74b9, 0x74ba, 0x74bb, 0x74bc, 0x74bd, 0x74be, 0x74bf,
+ 0x74c0, 0x74c1, 0x74c2, 0x74c3, 0x74c4, 0x74c5, 0x74c6, 0x74c7, /* 0x74c0 */
+ 0x74c8, 0x74c9, 0x74ca, 0x74cb, 0x74cc, 0x74cd, 0x74ce, 0x74cf,
+ 0x74d0, 0x74d1, 0x74d2, 0x74d3, 0x74d4, 0x74d5, 0x74d6, 0x74d7,
+ 0x74d8, 0x74d9, 0x74da, 0x74db, 0x74dc, 0x74dd, 0x74de, 0x74df,
+ 0x74e0, 0x74e1, 0x74e2, 0x74e3, 0x74e4, 0x74e5, 0x74e6, 0x74e7,
+ 0x74e8, 0x74e9, 0x74ea, 0x74eb, 0x74ec, 0x74ed, 0x74ee, 0x74ef,
+ 0x74f0, 0x74f1, 0x74f2, 0x74f3, 0x74f4, 0x74f5, 0x74f6, 0x74f7,
+ 0x74f8, 0x74f9, 0x74fa, 0x74fb, 0x74fc, 0x74fd, 0x74fe, 0x74ff,
+ 0x7500, 0x7501, 0x7502, 0x7503, 0x7504, 0x7505, 0x7506, 0x7507, /* 0x7500 */
+ 0x7508, 0x7509, 0x750a, 0x750b, 0x750c, 0x750d, 0x750e, 0x750f,
+ 0x7510, 0x7511, 0x7512, 0x7513, 0x7514, 0x7515, 0x7516, 0x7517,
+ 0x7518, 0x7519, 0x751a, 0x751b, 0x751c, 0x751d, 0x751e, 0x751f,
+ 0x7520, 0x7521, 0x7522, 0x7523, 0x7524, 0x7525, 0x7526, 0x7527,
+ 0x7528, 0x7529, 0x752a, 0x752b, 0x752c, 0x752d, 0x752e, 0x752f,
+ 0x7530, 0x7531, 0x7532, 0x7533, 0x7534, 0x7535, 0x7536, 0x7537,
+ 0x7538, 0x7539, 0x753a, 0x753b, 0x753c, 0x753d, 0x753e, 0x753f,
+ 0x7540, 0x7541, 0x7542, 0x7543, 0x7544, 0x7545, 0x7546, 0x7547, /* 0x7540 */
+ 0x7548, 0x7549, 0x754a, 0x754b, 0x754c, 0x754d, 0x754e, 0x754f,
+ 0x7550, 0x7551, 0x7552, 0x7553, 0x7554, 0x7555, 0x7556, 0x7557,
+ 0x7558, 0x7559, 0x755a, 0x755b, 0x755c, 0x755d, 0x755e, 0x755f,
+ 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 0x7565, 0x7566, 0x7567,
+ 0x7568, 0x7569, 0x756a, 0x756b, 0x756c, 0x756d, 0x756e, 0x756f,
+ 0x7570, 0x7571, 0x7572, 0x7573, 0x7574, 0x7575, 0x7576, 0x7577,
+ 0x7578, 0x7579, 0x757a, 0x757b, 0x757c, 0x757d, 0x757e, 0x757f,
+ 0x7580, 0x7581, 0x7582, 0x7583, 0x7584, 0x7585, 0x7586, 0x7587, /* 0x7580 */
+ 0x7588, 0x7589, 0x758a, 0x758b, 0x758c, 0x758d, 0x758e, 0x758f,
+ 0x7590, 0x7591, 0x7592, 0x7593, 0x7594, 0x7595, 0x7596, 0x7597,
+ 0x7598, 0x7599, 0x759a, 0x759b, 0x759c, 0x759d, 0x759e, 0x759f,
+ 0x75a0, 0x75a1, 0x75a2, 0x75a3, 0x75a4, 0x75a5, 0x75a6, 0x75a7,
+ 0x75a8, 0x75a9, 0x75aa, 0x75ab, 0x75ac, 0x75ad, 0x75ae, 0x75af,
+ 0x75b0, 0x75b1, 0x75b2, 0x75b3, 0x75b4, 0x75b5, 0x75b6, 0x75b7,
+ 0x75b8, 0x75b9, 0x75ba, 0x75bb, 0x75bc, 0x75bd, 0x75be, 0x75bf,
+ 0x75c0, 0x75c1, 0x75c2, 0x75c3, 0x75c4, 0x75c5, 0x75c6, 0x75c7, /* 0x75c0 */
+ 0x75c8, 0x75c9, 0x75ca, 0x75cb, 0x75cc, 0x75cd, 0x75ce, 0x75cf,
+ 0x75d0, 0x75d1, 0x75d2, 0x75d3, 0x75d4, 0x75d5, 0x75d6, 0x75d7,
+ 0x75d8, 0x75d9, 0x75da, 0x75db, 0x75dc, 0x75dd, 0x75de, 0x75df,
+ 0x75e0, 0x75e1, 0x75e2, 0x75e3, 0x75e4, 0x75e5, 0x75e6, 0x75e7,
+ 0x75e8, 0x75e9, 0x75ea, 0x75eb, 0x75ec, 0x75ed, 0x75ee, 0x75ef,
+ 0x75f0, 0x75f1, 0x75f2, 0x75f3, 0x75f4, 0x75f5, 0x75f6, 0x75f7,
+ 0x75f8, 0x75f9, 0x75fa, 0x75fb, 0x75fc, 0x75fd, 0x75fe, 0x75ff,
+ 0x7600, 0x7601, 0x7602, 0x7603, 0x7604, 0x7605, 0x7606, 0x7607, /* 0x7600 */
+ 0x7608, 0x7609, 0x760a, 0x760b, 0x760c, 0x760d, 0x760e, 0x760f,
+ 0x7610, 0x7611, 0x7612, 0x7613, 0x7614, 0x7615, 0x7616, 0x7617,
+ 0x7618, 0x7619, 0x761a, 0x761b, 0x761c, 0x761d, 0x761e, 0x761f,
+ 0x7620, 0x7621, 0x7622, 0x7623, 0x7624, 0x7625, 0x7626, 0x7627,
+ 0x7628, 0x7629, 0x762a, 0x762b, 0x762c, 0x762d, 0x762e, 0x762f,
+ 0x7630, 0x7631, 0x7632, 0x7633, 0x7634, 0x7635, 0x7636, 0x7637,
+ 0x7638, 0x7639, 0x763a, 0x763b, 0x763c, 0x763d, 0x763e, 0x763f,
+ 0x7640, 0x7641, 0x7642, 0x7643, 0x7644, 0x7645, 0x7646, 0x7647, /* 0x7640 */
+ 0x7648, 0x7649, 0x764a, 0x764b, 0x764c, 0x764d, 0x764e, 0x764f,
+ 0x7650, 0x7651, 0x7652, 0x7653, 0x7654, 0x7655, 0x7656, 0x7657,
+ 0x7658, 0x7659, 0x765a, 0x765b, 0x765c, 0x765d, 0x765e, 0x765f,
+ 0x7660, 0x7661, 0x7662, 0x7663, 0x7664, 0x7665, 0x7666, 0x7667,
+ 0x7668, 0x7669, 0x766a, 0x766b, 0x766c, 0x766d, 0x766e, 0x766f,
+ 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675, 0x7676, 0x7677,
+ 0x7678, 0x7679, 0x767a, 0x767b, 0x767c, 0x767d, 0x767e, 0x767f,
+ 0x7680, 0x7681, 0x7682, 0x7683, 0x7684, 0x7685, 0x7686, 0x7687, /* 0x7680 */
+ 0x7688, 0x7689, 0x768a, 0x768b, 0x768c, 0x768d, 0x768e, 0x768f,
+ 0x7690, 0x7691, 0x7692, 0x7693, 0x7694, 0x7695, 0x7696, 0x7697,
+ 0x7698, 0x7699, 0x769a, 0x769b, 0x769c, 0x769d, 0x769e, 0x769f,
+ 0x76a0, 0x76a1, 0x76a2, 0x76a3, 0x76a4, 0x76a5, 0x76a6, 0x76a7,
+ 0x76a8, 0x76a9, 0x76aa, 0x76ab, 0x76ac, 0x76ad, 0x76ae, 0x76af,
+ 0x76b0, 0x76b1, 0x76b2, 0x76b3, 0x76b4, 0x76b5, 0x76b6, 0x76b7,
+ 0x76b8, 0x76b9, 0x76ba, 0x76bb, 0x76bc, 0x76bd, 0x76be, 0x76bf,
+ 0x76c0, 0x76c1, 0x76c2, 0x76c3, 0x76c4, 0x76c5, 0x76c6, 0x76c7, /* 0x76c0 */
+ 0x76c8, 0x76c9, 0x76ca, 0x76cb, 0x76cc, 0x76cd, 0x76ce, 0x76cf,
+ 0x76d0, 0x76d1, 0x76d2, 0x76d3, 0x76d4, 0x76d5, 0x76d6, 0x76d7,
+ 0x76d8, 0x76d9, 0x76da, 0x76db, 0x76dc, 0x76dd, 0x76de, 0x76df,
+ 0x76e0, 0x76e1, 0x76e2, 0x76e3, 0x76e4, 0x76e5, 0x76e6, 0x76e7,
+ 0x76e8, 0x76e9, 0x76ea, 0x76eb, 0x76ec, 0x76ed, 0x76ee, 0x76ef,
+ 0x76f0, 0x76f1, 0x76f2, 0x76f3, 0x76f4, 0x76f5, 0x76f6, 0x76f7,
+ 0x76f8, 0x76f9, 0x76fa, 0x76fb, 0x76fc, 0x76fd, 0x76fe, 0x76ff,
+ 0x7700, 0x7701, 0x7702, 0x7703, 0x7704, 0x7705, 0x7706, 0x7707, /* 0x7700 */
+ 0x7708, 0x7709, 0x770a, 0x770b, 0x770c, 0x770d, 0x770e, 0x770f,
+ 0x7710, 0x7711, 0x7712, 0x7713, 0x7714, 0x7715, 0x7716, 0x7717,
+ 0x7718, 0x7719, 0x771a, 0x771b, 0x771c, 0x771d, 0x771e, 0x771f,
+ 0x7720, 0x7721, 0x7722, 0x7723, 0x7724, 0x7725, 0x7726, 0x7727,
+ 0x7728, 0x7729, 0x772a, 0x772b, 0x772c, 0x772d, 0x772e, 0x772f,
+ 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7735, 0x7736, 0x7737,
+ 0x7738, 0x7739, 0x773a, 0x773b, 0x773c, 0x773d, 0x773e, 0x773f,
+ 0x7740, 0x7741, 0x7742, 0x7743, 0x7744, 0x7745, 0x7746, 0x7747, /* 0x7740 */
+ 0x7748, 0x7749, 0x774a, 0x774b, 0x774c, 0x774d, 0x774e, 0x774f,
+ 0x7750, 0x7751, 0x7752, 0x7753, 0x7754, 0x7755, 0x7756, 0x7757,
+ 0x7758, 0x7759, 0x775a, 0x775b, 0x775c, 0x775d, 0x775e, 0x775f,
+ 0x7760, 0x7761, 0x7762, 0x7763, 0x7764, 0x7765, 0x7766, 0x7767,
+ 0x7768, 0x7769, 0x776a, 0x776b, 0x776c, 0x776d, 0x776e, 0x776f,
+ 0x7770, 0x7771, 0x7772, 0x7773, 0x7774, 0x7775, 0x7776, 0x7777,
+ 0x7778, 0x7779, 0x777a, 0x777b, 0x777c, 0x777d, 0x777e, 0x777f,
+ 0x7780, 0x7781, 0x7782, 0x7783, 0x7784, 0x7785, 0x7786, 0x7787, /* 0x7780 */
+ 0x7788, 0x7789, 0x778a, 0x778b, 0x778c, 0x778d, 0x778e, 0x778f,
+ 0x7790, 0x7791, 0x7792, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797,
+ 0x7798, 0x7799, 0x779a, 0x779b, 0x779c, 0x779d, 0x779e, 0x779f,
+ 0x77a0, 0x77a1, 0x77a2, 0x77a3, 0x77a4, 0x77a5, 0x77a6, 0x77a7,
+ 0x77a8, 0x77a9, 0x77aa, 0x77ab, 0x77ac, 0x77ad, 0x77ae, 0x77af,
+ 0x77b0, 0x77b1, 0x77b2, 0x77b3, 0x77b4, 0x77b5, 0x77b6, 0x77b7,
+ 0x77b8, 0x77b9, 0x77ba, 0x77bb, 0x77bc, 0x77bd, 0x77be, 0x77bf,
+ 0x77c0, 0x77c1, 0x77c2, 0x77c3, 0x77c4, 0x77c5, 0x77c6, 0x77c7, /* 0x77c0 */
+ 0x77c8, 0x77c9, 0x77ca, 0x77cb, 0x77cc, 0x77cd, 0x77ce, 0x77cf,
+ 0x77d0, 0x77d1, 0x77d2, 0x77d3, 0x77d4, 0x77d5, 0x77d6, 0x77d7,
+ 0x77d8, 0x77d9, 0x77da, 0x77db, 0x77dc, 0x77dd, 0x77de, 0x77df,
+ 0x77e0, 0x77e1, 0x77e2, 0x77e3, 0x77e4, 0x77e5, 0x77e6, 0x77e7,
+ 0x77e8, 0x77e9, 0x77ea, 0x77eb, 0x77ec, 0x77ed, 0x77ee, 0x77ef,
+ 0x77f0, 0x77f1, 0x77f2, 0x77f3, 0x77f4, 0x77f5, 0x77f6, 0x77f7,
+ 0x77f8, 0x77f9, 0x77fa, 0x77fb, 0x77fc, 0x77fd, 0x77fe, 0x77ff,
+ 0x7800, 0x7801, 0x7802, 0x7803, 0x7804, 0x7805, 0x7806, 0x7807, /* 0x7800 */
+ 0x7808, 0x7809, 0x780a, 0x780b, 0x780c, 0x780d, 0x780e, 0x780f,
+ 0x7810, 0x7811, 0x7812, 0x7813, 0x7814, 0x7815, 0x7816, 0x7817,
+ 0x7818, 0x7819, 0x781a, 0x781b, 0x781c, 0x781d, 0x781e, 0x781f,
+ 0x7820, 0x7821, 0x7822, 0x7823, 0x7824, 0x7825, 0x7826, 0x7827,
+ 0x7828, 0x7829, 0x782a, 0x782b, 0x782c, 0x782d, 0x782e, 0x782f,
+ 0x7830, 0x7831, 0x7832, 0x7833, 0x7834, 0x7835, 0x7836, 0x7837,
+ 0x7838, 0x7839, 0x783a, 0x783b, 0x783c, 0x783d, 0x783e, 0x783f,
+ 0x7840, 0x7841, 0x7842, 0x7843, 0x7844, 0x7845, 0x7846, 0x7847, /* 0x7840 */
+ 0x7848, 0x7849, 0x784a, 0x784b, 0x784c, 0x784d, 0x784e, 0x784f,
+ 0x7850, 0x7851, 0x7852, 0x7853, 0x7854, 0x7855, 0x7856, 0x7857,
+ 0x7858, 0x7859, 0x785a, 0x785b, 0x785c, 0x785d, 0x785e, 0x785f,
+ 0x7860, 0x7861, 0x7862, 0x7863, 0x7864, 0x7865, 0x7866, 0x7867,
+ 0x7868, 0x7869, 0x786a, 0x786b, 0x786c, 0x786d, 0x786e, 0x786f,
+ 0x7870, 0x7871, 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7877,
+ 0x7878, 0x7879, 0x787a, 0x787b, 0x787c, 0x787d, 0x787e, 0x787f,
+ 0x7880, 0x7881, 0x7882, 0x7883, 0x7884, 0x7885, 0x7886, 0x7887, /* 0x7880 */
+ 0x7888, 0x7889, 0x788a, 0x788b, 0x788c, 0x788d, 0x788e, 0x788f,
+ 0x7890, 0x7891, 0x7892, 0x7893, 0x7894, 0x7895, 0x7896, 0x7897,
+ 0x7898, 0x7899, 0x789a, 0x789b, 0x789c, 0x789d, 0x789e, 0x789f,
+ 0x78a0, 0x78a1, 0x78a2, 0x78a3, 0x78a4, 0x78a5, 0x78a6, 0x78a7,
+ 0x78a8, 0x78a9, 0x78aa, 0x78ab, 0x78ac, 0x78ad, 0x78ae, 0x78af,
+ 0x78b0, 0x78b1, 0x78b2, 0x78b3, 0x78b4, 0x78b5, 0x78b6, 0x78b7,
+ 0x78b8, 0x78b9, 0x78ba, 0x78bb, 0x78bc, 0x78bd, 0x78be, 0x78bf,
+ 0x78c0, 0x78c1, 0x78c2, 0x78c3, 0x78c4, 0x78c5, 0x78c6, 0x78c7, /* 0x78c0 */
+ 0x78c8, 0x78c9, 0x78ca, 0x78cb, 0x78cc, 0x78cd, 0x78ce, 0x78cf,
+ 0x78d0, 0x78d1, 0x78d2, 0x78d3, 0x78d4, 0x78d5, 0x78d6, 0x78d7,
+ 0x78d8, 0x78d9, 0x78da, 0x78db, 0x78dc, 0x78dd, 0x78de, 0x78df,
+ 0x78e0, 0x78e1, 0x78e2, 0x78e3, 0x78e4, 0x78e5, 0x78e6, 0x78e7,
+ 0x78e8, 0x78e9, 0x78ea, 0x78eb, 0x78ec, 0x78ed, 0x78ee, 0x78ef,
+ 0x78f0, 0x78f1, 0x78f2, 0x78f3, 0x78f4, 0x78f5, 0x78f6, 0x78f7,
+ 0x78f8, 0x78f9, 0x78fa, 0x78fb, 0x78fc, 0x78fd, 0x78fe, 0x78ff,
+ 0x7900, 0x7901, 0x7902, 0x7903, 0x7904, 0x7905, 0x7906, 0x7907, /* 0x7900 */
+ 0x7908, 0x7909, 0x790a, 0x790b, 0x790c, 0x790d, 0x790e, 0x790f,
+ 0x7910, 0x7911, 0x7912, 0x7913, 0x7914, 0x7915, 0x7916, 0x7917,
+ 0x7918, 0x7919, 0x791a, 0x791b, 0x791c, 0x791d, 0x791e, 0x791f,
+ 0x7920, 0x7921, 0x7922, 0x7923, 0x7924, 0x7925, 0x7926, 0x7927,
+ 0x7928, 0x7929, 0x792a, 0x792b, 0x792c, 0x792d, 0x792e, 0x792f,
+ 0x7930, 0x7931, 0x7932, 0x7933, 0x7934, 0x7935, 0x7936, 0x7937,
+ 0x7938, 0x7939, 0x793a, 0x793b, 0x793c, 0x793d, 0x793e, 0x793f,
+ 0x7940, 0x7941, 0x7942, 0x7943, 0x7944, 0x7945, 0x7946, 0x7947, /* 0x7940 */
+ 0x7948, 0x7949, 0x794a, 0x794b, 0x794c, 0x794d, 0x794e, 0x794f,
+ 0x7950, 0x7951, 0x7952, 0x7953, 0x7954, 0x7955, 0x7956, 0x7957,
+ 0x7958, 0x7959, 0x795a, 0x795b, 0x795c, 0x795d, 0x795e, 0x795f,
+ 0x7960, 0x7961, 0x7962, 0x7963, 0x7964, 0x7965, 0x7966, 0x7967,
+ 0x7968, 0x7969, 0x796a, 0x796b, 0x796c, 0x796d, 0x796e, 0x796f,
+ 0x7970, 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7977,
+ 0x7978, 0x7979, 0x797a, 0x797b, 0x797c, 0x797d, 0x797e, 0x797f,
+ 0x7980, 0x7981, 0x7982, 0x7983, 0x7984, 0x7985, 0x7986, 0x7987, /* 0x7980 */
+ 0x7988, 0x7989, 0x798a, 0x798b, 0x798c, 0x798d, 0x798e, 0x798f,
+ 0x7990, 0x7991, 0x7992, 0x7993, 0x7994, 0x7995, 0x7996, 0x7997,
+ 0x7998, 0x7999, 0x799a, 0x799b, 0x799c, 0x799d, 0x799e, 0x799f,
+ 0x79a0, 0x79a1, 0x79a2, 0x79a3, 0x79a4, 0x79a5, 0x79a6, 0x79a7,
+ 0x79a8, 0x79a9, 0x79aa, 0x79ab, 0x79ac, 0x79ad, 0x79ae, 0x79af,
+ 0x79b0, 0x79b1, 0x79b2, 0x79b3, 0x79b4, 0x79b5, 0x79b6, 0x79b7,
+ 0x79b8, 0x79b9, 0x79ba, 0x79bb, 0x79bc, 0x79bd, 0x79be, 0x79bf,
+ 0x79c0, 0x79c1, 0x79c2, 0x79c3, 0x79c4, 0x79c5, 0x79c6, 0x79c7, /* 0x79c0 */
+ 0x79c8, 0x79c9, 0x79ca, 0x79cb, 0x79cc, 0x79cd, 0x79ce, 0x79cf,
+ 0x79d0, 0x79d1, 0x79d2, 0x79d3, 0x79d4, 0x79d5, 0x79d6, 0x79d7,
+ 0x79d8, 0x79d9, 0x79da, 0x79db, 0x79dc, 0x79dd, 0x79de, 0x79df,
+ 0x79e0, 0x79e1, 0x79e2, 0x79e3, 0x79e4, 0x79e5, 0x79e6, 0x79e7,
+ 0x79e8, 0x79e9, 0x79ea, 0x79eb, 0x79ec, 0x79ed, 0x79ee, 0x79ef,
+ 0x79f0, 0x79f1, 0x79f2, 0x79f3, 0x79f4, 0x79f5, 0x79f6, 0x79f7,
+ 0x79f8, 0x79f9, 0x79fa, 0x79fb, 0x79fc, 0x79fd, 0x79fe, 0x79ff,
+ 0x7a00, 0x7a01, 0x7a02, 0x7a03, 0x7a04, 0x7a05, 0x7a06, 0x7a07, /* 0x7a00 */
+ 0x7a08, 0x7a09, 0x7a0a, 0x7a0b, 0x7a0c, 0x7a0d, 0x7a0e, 0x7a0f,
+ 0x7a10, 0x7a11, 0x7a12, 0x7a13, 0x7a14, 0x7a15, 0x7a16, 0x7a17,
+ 0x7a18, 0x7a19, 0x7a1a, 0x7a1b, 0x7a1c, 0x7a1d, 0x7a1e, 0x7a1f,
+ 0x7a20, 0x7a21, 0x7a22, 0x7a23, 0x7a24, 0x7a25, 0x7a26, 0x7a27,
+ 0x7a28, 0x7a29, 0x7a2a, 0x7a2b, 0x7a2c, 0x7a2d, 0x7a2e, 0x7a2f,
+ 0x7a30, 0x7a31, 0x7a32, 0x7a33, 0x7a34, 0x7a35, 0x7a36, 0x7a37,
+ 0x7a38, 0x7a39, 0x7a3a, 0x7a3b, 0x7a3c, 0x7a3d, 0x7a3e, 0x7a3f,
+ 0x7a40, 0x7a41, 0x7a42, 0x7a43, 0x7a44, 0x7a45, 0x7a46, 0x7a47, /* 0x7a40 */
+ 0x7a48, 0x7a49, 0x7a4a, 0x7a4b, 0x7a4c, 0x7a4d, 0x7a4e, 0x7a4f,
+ 0x7a50, 0x7a51, 0x7a52, 0x7a53, 0x7a54, 0x7a55, 0x7a56, 0x7a57,
+ 0x7a58, 0x7a59, 0x7a5a, 0x7a5b, 0x7a5c, 0x7a5d, 0x7a5e, 0x7a5f,
+ 0x7a60, 0x7a61, 0x7a62, 0x7a63, 0x7a64, 0x7a65, 0x7a66, 0x7a67,
+ 0x7a68, 0x7a69, 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6d, 0x7a6e, 0x7a6f,
+ 0x7a70, 0x7a71, 0x7a72, 0x7a73, 0x7a74, 0x7a75, 0x7a76, 0x7a77,
+ 0x7a78, 0x7a79, 0x7a7a, 0x7a7b, 0x7a7c, 0x7a7d, 0x7a7e, 0x7a7f,
+ 0x7a80, 0x7a81, 0x7a82, 0x7a83, 0x7a84, 0x7a85, 0x7a86, 0x7a87, /* 0x7a80 */
+ 0x7a88, 0x7a89, 0x7a8a, 0x7a8b, 0x7a8c, 0x7a8d, 0x7a8e, 0x7a8f,
+ 0x7a90, 0x7a91, 0x7a92, 0x7a93, 0x7a94, 0x7a95, 0x7a96, 0x7a97,
+ 0x7a98, 0x7a99, 0x7a9a, 0x7a9b, 0x7a9c, 0x7a9d, 0x7a9e, 0x7a9f,
+ 0x7aa0, 0x7aa1, 0x7aa2, 0x7aa3, 0x7aa4, 0x7aa5, 0x7aa6, 0x7aa7,
+ 0x7aa8, 0x7aa9, 0x7aaa, 0x7aab, 0x7aac, 0x7aad, 0x7aae, 0x7aaf,
+ 0x7ab0, 0x7ab1, 0x7ab2, 0x7ab3, 0x7ab4, 0x7ab5, 0x7ab6, 0x7ab7,
+ 0x7ab8, 0x7ab9, 0x7aba, 0x7abb, 0x7abc, 0x7abd, 0x7abe, 0x7abf,
+ 0x7ac0, 0x7ac1, 0x7ac2, 0x7ac3, 0x7ac4, 0x7ac5, 0x7ac6, 0x7ac7, /* 0x7ac0 */
+ 0x7ac8, 0x7ac9, 0x7aca, 0x7acb, 0x7acc, 0x7acd, 0x7ace, 0x7acf,
+ 0x7ad0, 0x7ad1, 0x7ad2, 0x7ad3, 0x7ad4, 0x7ad5, 0x7ad6, 0x7ad7,
+ 0x7ad8, 0x7ad9, 0x7ada, 0x7adb, 0x7adc, 0x7add, 0x7ade, 0x7adf,
+ 0x7ae0, 0x7ae1, 0x7ae2, 0x7ae3, 0x7ae4, 0x7ae5, 0x7ae6, 0x7ae7,
+ 0x7ae8, 0x7ae9, 0x7aea, 0x7aeb, 0x7aec, 0x7aed, 0x7aee, 0x7aef,
+ 0x7af0, 0x7af1, 0x7af2, 0x7af3, 0x7af4, 0x7af5, 0x7af6, 0x7af7,
+ 0x7af8, 0x7af9, 0x7afa, 0x7afb, 0x7afc, 0x7afd, 0x7afe, 0x7aff,
+ 0x7b00, 0x7b01, 0x7b02, 0x7b03, 0x7b04, 0x7b05, 0x7b06, 0x7b07, /* 0x7b00 */
+ 0x7b08, 0x7b09, 0x7b0a, 0x7b0b, 0x7b0c, 0x7b0d, 0x7b0e, 0x7b0f,
+ 0x7b10, 0x7b11, 0x7b12, 0x7b13, 0x7b14, 0x7b15, 0x7b16, 0x7b17,
+ 0x7b18, 0x7b19, 0x7b1a, 0x7b1b, 0x7b1c, 0x7b1d, 0x7b1e, 0x7b1f,
+ 0x7b20, 0x7b21, 0x7b22, 0x7b23, 0x7b24, 0x7b25, 0x7b26, 0x7b27,
+ 0x7b28, 0x7b29, 0x7b2a, 0x7b2b, 0x7b2c, 0x7b2d, 0x7b2e, 0x7b2f,
+ 0x7b30, 0x7b31, 0x7b32, 0x7b33, 0x7b34, 0x7b35, 0x7b36, 0x7b37,
+ 0x7b38, 0x7b39, 0x7b3a, 0x7b3b, 0x7b3c, 0x7b3d, 0x7b3e, 0x7b3f,
+ 0x7b40, 0x7b41, 0x7b42, 0x7b43, 0x7b44, 0x7b45, 0x7b46, 0x7b47, /* 0x7b40 */
+ 0x7b48, 0x7b49, 0x7b4a, 0x7b4b, 0x7b4c, 0x7b4d, 0x7b4e, 0x7b4f,
+ 0x7b50, 0x7b51, 0x7b52, 0x7b53, 0x7b54, 0x7b55, 0x7b56, 0x7b57,
+ 0x7b58, 0x7b59, 0x7b5a, 0x7b5b, 0x7b5c, 0x7b5d, 0x7b5e, 0x7b5f,
+ 0x7b60, 0x7b61, 0x7b62, 0x7b63, 0x7b64, 0x7b65, 0x7b66, 0x7b67,
+ 0x7b68, 0x7b69, 0x7b6a, 0x7b6b, 0x7b6c, 0x7b6d, 0x7b6e, 0x7b6f,
+ 0x7b70, 0x7b71, 0x7b72, 0x7b73, 0x7b74, 0x7b75, 0x7b76, 0x7b77,
+ 0x7b78, 0x7b79, 0x7b7a, 0x7b7b, 0x7b7c, 0x7b7d, 0x7b7e, 0x7b7f,
+ 0x7b80, 0x7b81, 0x7b82, 0x7b83, 0x7b84, 0x7b85, 0x7b86, 0x7b87, /* 0x7b80 */
+ 0x7b88, 0x7b89, 0x7b8a, 0x7b8b, 0x7b8c, 0x7b8d, 0x7b8e, 0x7b8f,
+ 0x7b90, 0x7b91, 0x7b92, 0x7b93, 0x7b94, 0x7b95, 0x7b96, 0x7b97,
+ 0x7b98, 0x7b99, 0x7b9a, 0x7b9b, 0x7b9c, 0x7b9d, 0x7b9e, 0x7b9f,
+ 0x7ba0, 0x7ba1, 0x7ba2, 0x7ba3, 0x7ba4, 0x7ba5, 0x7ba6, 0x7ba7,
+ 0x7ba8, 0x7ba9, 0x7baa, 0x7bab, 0x7bac, 0x7bad, 0x7bae, 0x7baf,
+ 0x7bb0, 0x7bb1, 0x7bb2, 0x7bb3, 0x7bb4, 0x7bb5, 0x7bb6, 0x7bb7,
+ 0x7bb8, 0x7bb9, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bbe, 0x7bbf,
+ 0x7bc0, 0x7bc1, 0x7bc2, 0x7bc3, 0x7bc4, 0x7bc5, 0x7bc6, 0x7bc7, /* 0x7bc0 */
+ 0x7bc8, 0x7bc9, 0x7bca, 0x7bcb, 0x7bcc, 0x7bcd, 0x7bce, 0x7bcf,
+ 0x7bd0, 0x7bd1, 0x7bd2, 0x7bd3, 0x7bd4, 0x7bd5, 0x7bd6, 0x7bd7,
+ 0x7bd8, 0x7bd9, 0x7bda, 0x7bdb, 0x7bdc, 0x7bdd, 0x7bde, 0x7bdf,
+ 0x7be0, 0x7be1, 0x7be2, 0x7be3, 0x7be4, 0x7be5, 0x7be6, 0x7be7,
+ 0x7be8, 0x7be9, 0x7bea, 0x7beb, 0x7bec, 0x7bed, 0x7bee, 0x7bef,
+ 0x7bf0, 0x7bf1, 0x7bf2, 0x7bf3, 0x7bf4, 0x7bf5, 0x7bf6, 0x7bf7,
+ 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfb, 0x7bfc, 0x7bfd, 0x7bfe, 0x7bff,
+ 0x7c00, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c05, 0x7c06, 0x7c07, /* 0x7c00 */
+ 0x7c08, 0x7c09, 0x7c0a, 0x7c0b, 0x7c0c, 0x7c0d, 0x7c0e, 0x7c0f,
+ 0x7c10, 0x7c11, 0x7c12, 0x7c13, 0x7c14, 0x7c15, 0x7c16, 0x7c17,
+ 0x7c18, 0x7c19, 0x7c1a, 0x7c1b, 0x7c1c, 0x7c1d, 0x7c1e, 0x7c1f,
+ 0x7c20, 0x7c21, 0x7c22, 0x7c23, 0x7c24, 0x7c25, 0x7c26, 0x7c27,
+ 0x7c28, 0x7c29, 0x7c2a, 0x7c2b, 0x7c2c, 0x7c2d, 0x7c2e, 0x7c2f,
+ 0x7c30, 0x7c31, 0x7c32, 0x7c33, 0x7c34, 0x7c35, 0x7c36, 0x7c37,
+ 0x7c38, 0x7c39, 0x7c3a, 0x7c3b, 0x7c3c, 0x7c3d, 0x7c3e, 0x7c3f,
+ 0x7c40, 0x7c41, 0x7c42, 0x7c43, 0x7c44, 0x7c45, 0x7c46, 0x7c47, /* 0x7c40 */
+ 0x7c48, 0x7c49, 0x7c4a, 0x7c4b, 0x7c4c, 0x7c4d, 0x7c4e, 0x7c4f,
+ 0x7c50, 0x7c51, 0x7c52, 0x7c53, 0x7c54, 0x7c55, 0x7c56, 0x7c57,
+ 0x7c58, 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e, 0x7c5f,
+ 0x7c60, 0x7c61, 0x7c62, 0x7c63, 0x7c64, 0x7c65, 0x7c66, 0x7c67,
+ 0x7c68, 0x7c69, 0x7c6a, 0x7c6b, 0x7c6c, 0x7c6d, 0x7c6e, 0x7c6f,
+ 0x7c70, 0x7c71, 0x7c72, 0x7c73, 0x7c74, 0x7c75, 0x7c76, 0x7c77,
+ 0x7c78, 0x7c79, 0x7c7a, 0x7c7b, 0x7c7c, 0x7c7d, 0x7c7e, 0x7c7f,
+ 0x7c80, 0x7c81, 0x7c82, 0x7c83, 0x7c84, 0x7c85, 0x7c86, 0x7c87, /* 0x7c80 */
+ 0x7c88, 0x7c89, 0x7c8a, 0x7c8b, 0x7c8c, 0x7c8d, 0x7c8e, 0x7c8f,
+ 0x7c90, 0x7c91, 0x7c92, 0x7c93, 0x7c94, 0x7c95, 0x7c96, 0x7c97,
+ 0x7c98, 0x7c99, 0x7c9a, 0x7c9b, 0x7c9c, 0x7c9d, 0x7c9e, 0x7c9f,
+ 0x7ca0, 0x7ca1, 0x7ca2, 0x7ca3, 0x7ca4, 0x7ca5, 0x7ca6, 0x7ca7,
+ 0x7ca8, 0x7ca9, 0x7caa, 0x7cab, 0x7cac, 0x7cad, 0x7cae, 0x7caf,
+ 0x7cb0, 0x7cb1, 0x7cb2, 0x7cb3, 0x7cb4, 0x7cb5, 0x7cb6, 0x7cb7,
+ 0x7cb8, 0x7cb9, 0x7cba, 0x7cbb, 0x7cbc, 0x7cbd, 0x7cbe, 0x7cbf,
+ 0x7cc0, 0x7cc1, 0x7cc2, 0x7cc3, 0x7cc4, 0x7cc5, 0x7cc6, 0x7cc7, /* 0x7cc0 */
+ 0x7cc8, 0x7cc9, 0x7cca, 0x7ccb, 0x7ccc, 0x7ccd, 0x7cce, 0x7ccf,
+ 0x7cd0, 0x7cd1, 0x7cd2, 0x7cd3, 0x7cd4, 0x7cd5, 0x7cd6, 0x7cd7,
+ 0x7cd8, 0x7cd9, 0x7cda, 0x7cdb, 0x7cdc, 0x7cdd, 0x7cde, 0x7cdf,
+ 0x7ce0, 0x7ce1, 0x7ce2, 0x7ce3, 0x7ce4, 0x7ce5, 0x7ce6, 0x7ce7,
+ 0x7ce8, 0x7ce9, 0x7cea, 0x7ceb, 0x7cec, 0x7ced, 0x7cee, 0x7cef,
+ 0x7cf0, 0x7cf1, 0x7cf2, 0x7cf3, 0x7cf4, 0x7cf5, 0x7cf6, 0x7cf7,
+ 0x7cf8, 0x7cf9, 0x7cfa, 0x7cfb, 0x7cfc, 0x7cfd, 0x7cfe, 0x7cff,
+ 0x7d00, 0x7d01, 0x7d02, 0x7d03, 0x7d04, 0x7d05, 0x7d06, 0x7d07, /* 0x7d00 */
+ 0x7d08, 0x7d09, 0x7d0a, 0x7d0b, 0x7d0c, 0x7d0d, 0x7d0e, 0x7d0f,
+ 0x7d10, 0x7d11, 0x7d12, 0x7d13, 0x7d14, 0x7d15, 0x7d16, 0x7d17,
+ 0x7d18, 0x7d19, 0x7d1a, 0x7d1b, 0x7d1c, 0x7d1d, 0x7d1e, 0x7d1f,
+ 0x7d20, 0x7d21, 0x7d22, 0x7d23, 0x7d24, 0x7d25, 0x7d26, 0x7d27,
+ 0x7d28, 0x7d29, 0x7d2a, 0x7d2b, 0x7d2c, 0x7d2d, 0x7d2e, 0x7d2f,
+ 0x7d30, 0x7d31, 0x7d32, 0x7d33, 0x7d34, 0x7d35, 0x7d36, 0x7d37,
+ 0x7d38, 0x7d39, 0x7d3a, 0x7d3b, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d3f,
+ 0x7d40, 0x7d41, 0x7d42, 0x7d43, 0x7d44, 0x7d45, 0x7d46, 0x7d47, /* 0x7d40 */
+ 0x7d48, 0x7d49, 0x7d4a, 0x7d4b, 0x7d4c, 0x7d4d, 0x7d4e, 0x7d4f,
+ 0x7d50, 0x7d51, 0x7d52, 0x7d53, 0x7d54, 0x7d55, 0x7d56, 0x7d57,
+ 0x7d58, 0x7d59, 0x7d5a, 0x7d5b, 0x7d5c, 0x7d5d, 0x7d5e, 0x7d5f,
+ 0x7d60, 0x7d61, 0x7d62, 0x7d63, 0x7d64, 0x7d65, 0x7d66, 0x7d67,
+ 0x7d68, 0x7d69, 0x7d6a, 0x7d6b, 0x7d6c, 0x7d6d, 0x7d6e, 0x7d6f,
+ 0x7d70, 0x7d71, 0x7d72, 0x7d73, 0x7d74, 0x7d75, 0x7d76, 0x7d77,
+ 0x7d78, 0x7d79, 0x7d7a, 0x7d7b, 0x7d7c, 0x7d7d, 0x7d7e, 0x7d7f,
+ 0x7d80, 0x7d81, 0x7d82, 0x7d83, 0x7d84, 0x7d85, 0x7d86, 0x7d87, /* 0x7d80 */
+ 0x7d88, 0x7d89, 0x7d8a, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d8e, 0x7d8f,
+ 0x7d90, 0x7d91, 0x7d92, 0x7d93, 0x7d94, 0x7d95, 0x7d96, 0x7d97,
+ 0x7d98, 0x7d99, 0x7d9a, 0x7d9b, 0x7d9c, 0x7d9d, 0x7d9e, 0x7d9f,
+ 0x7da0, 0x7da1, 0x7da2, 0x7da3, 0x7da4, 0x7da5, 0x7da6, 0x7da7,
+ 0x7da8, 0x7da9, 0x7daa, 0x7dab, 0x7dac, 0x7dad, 0x7dae, 0x7daf,
+ 0x7db0, 0x7db1, 0x7db2, 0x7db3, 0x7db4, 0x7db5, 0x7db6, 0x7db7,
+ 0x7db8, 0x7db9, 0x7dba, 0x7dbb, 0x7dbc, 0x7dbd, 0x7dbe, 0x7dbf,
+ 0x7dc0, 0x7dc1, 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dc7, /* 0x7dc0 */
+ 0x7dc8, 0x7dc9, 0x7dca, 0x7dcb, 0x7dcc, 0x7dcd, 0x7dce, 0x7dcf,
+ 0x7dd0, 0x7dd1, 0x7dd2, 0x7dd3, 0x7dd4, 0x7dd5, 0x7dd6, 0x7dd7,
+ 0x7dd8, 0x7dd9, 0x7dda, 0x7ddb, 0x7ddc, 0x7ddd, 0x7dde, 0x7ddf,
+ 0x7de0, 0x7de1, 0x7de2, 0x7de3, 0x7de4, 0x7de5, 0x7de6, 0x7de7,
+ 0x7de8, 0x7de9, 0x7dea, 0x7deb, 0x7dec, 0x7ded, 0x7dee, 0x7def,
+ 0x7df0, 0x7df1, 0x7df2, 0x7df3, 0x7df4, 0x7df5, 0x7df6, 0x7df7,
+ 0x7df8, 0x7df9, 0x7dfa, 0x7dfb, 0x7dfc, 0x7dfd, 0x7dfe, 0x7dff,
+ 0x7e00, 0x7e01, 0x7e02, 0x7e03, 0x7e04, 0x7e05, 0x7e06, 0x7e07, /* 0x7e00 */
+ 0x7e08, 0x7e09, 0x7e0a, 0x7e0b, 0x7e0c, 0x7e0d, 0x7e0e, 0x7e0f,
+ 0x7e10, 0x7e11, 0x7e12, 0x7e13, 0x7e14, 0x7e15, 0x7e16, 0x7e17,
+ 0x7e18, 0x7e19, 0x7e1a, 0x7e1b, 0x7e1c, 0x7e1d, 0x7e1e, 0x7e1f,
+ 0x7e20, 0x7e21, 0x7e22, 0x7e23, 0x7e24, 0x7e25, 0x7e26, 0x7e27,
+ 0x7e28, 0x7e29, 0x7e2a, 0x7e2b, 0x7e2c, 0x7e2d, 0x7e2e, 0x7e2f,
+ 0x7e30, 0x7e31, 0x7e32, 0x7e33, 0x7e34, 0x7e35, 0x7e36, 0x7e37,
+ 0x7e38, 0x7e39, 0x7e3a, 0x7e3b, 0x7e3c, 0x7e3d, 0x7e3e, 0x7e3f,
+ 0x7e40, 0x7e41, 0x7e42, 0x7e43, 0x7e44, 0x7e45, 0x7e46, 0x7e47, /* 0x7e40 */
+ 0x7e48, 0x7e49, 0x7e4a, 0x7e4b, 0x7e4c, 0x7e4d, 0x7e4e, 0x7e4f,
+ 0x7e50, 0x7e51, 0x7e52, 0x7e53, 0x7e54, 0x7e55, 0x7e56, 0x7e57,
+ 0x7e58, 0x7e59, 0x7e5a, 0x7e5b, 0x7e5c, 0x7e5d, 0x7e5e, 0x7e5f,
+ 0x7e60, 0x7e61, 0x7e62, 0x7e63, 0x7e64, 0x7e65, 0x7e66, 0x7e67,
+ 0x7e68, 0x7e69, 0x7e6a, 0x7e6b, 0x7e6c, 0x7e6d, 0x7e6e, 0x7e6f,
+ 0x7e70, 0x7e71, 0x7e72, 0x7e73, 0x7e74, 0x7e75, 0x7e76, 0x7e77,
+ 0x7e78, 0x7e79, 0x7e7a, 0x7e7b, 0x7e7c, 0x7e7d, 0x7e7e, 0x7e7f,
+ 0x7e80, 0x7e81, 0x7e82, 0x7e83, 0x7e84, 0x7e85, 0x7e86, 0x7e87, /* 0x7e80 */
+ 0x7e88, 0x7e89, 0x7e8a, 0x7e8b, 0x7e8c, 0x7e8d, 0x7e8e, 0x7e8f,
+ 0x7e90, 0x7e91, 0x7e92, 0x7e93, 0x7e94, 0x7e95, 0x7e96, 0x7e97,
+ 0x7e98, 0x7e99, 0x7e9a, 0x7e9b, 0x7e9c, 0x7e9d, 0x7e9e, 0x7e9f,
+ 0x7ea0, 0x7ea1, 0x7ea2, 0x7ea3, 0x7ea4, 0x7ea5, 0x7ea6, 0x7ea7,
+ 0x7ea8, 0x7ea9, 0x7eaa, 0x7eab, 0x7eac, 0x7ead, 0x7eae, 0x7eaf,
+ 0x7eb0, 0x7eb1, 0x7eb2, 0x7eb3, 0x7eb4, 0x7eb5, 0x7eb6, 0x7eb7,
+ 0x7eb8, 0x7eb9, 0x7eba, 0x7ebb, 0x7ebc, 0x7ebd, 0x7ebe, 0x7ebf,
+ 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec3, 0x7ec4, 0x7ec5, 0x7ec6, 0x7ec7, /* 0x7ec0 */
+ 0x7ec8, 0x7ec9, 0x7eca, 0x7ecb, 0x7ecc, 0x7ecd, 0x7ece, 0x7ecf,
+ 0x7ed0, 0x7ed1, 0x7ed2, 0x7ed3, 0x7ed4, 0x7ed5, 0x7ed6, 0x7ed7,
+ 0x7ed8, 0x7ed9, 0x7eda, 0x7edb, 0x7edc, 0x7edd, 0x7ede, 0x7edf,
+ 0x7ee0, 0x7ee1, 0x7ee2, 0x7ee3, 0x7ee4, 0x7ee5, 0x7ee6, 0x7ee7,
+ 0x7ee8, 0x7ee9, 0x7eea, 0x7eeb, 0x7eec, 0x7eed, 0x7eee, 0x7eef,
+ 0x7ef0, 0x7ef1, 0x7ef2, 0x7ef3, 0x7ef4, 0x7ef5, 0x7ef6, 0x7ef7,
+ 0x7ef8, 0x7ef9, 0x7efa, 0x7efb, 0x7efc, 0x7efd, 0x7efe, 0x7eff,
+ 0x7f00, 0x7f01, 0x7f02, 0x7f03, 0x7f04, 0x7f05, 0x7f06, 0x7f07, /* 0x7f00 */
+ 0x7f08, 0x7f09, 0x7f0a, 0x7f0b, 0x7f0c, 0x7f0d, 0x7f0e, 0x7f0f,
+ 0x7f10, 0x7f11, 0x7f12, 0x7f13, 0x7f14, 0x7f15, 0x7f16, 0x7f17,
+ 0x7f18, 0x7f19, 0x7f1a, 0x7f1b, 0x7f1c, 0x7f1d, 0x7f1e, 0x7f1f,
+ 0x7f20, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27,
+ 0x7f28, 0x7f29, 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2e, 0x7f2f,
+ 0x7f30, 0x7f31, 0x7f32, 0x7f33, 0x7f34, 0x7f35, 0x7f36, 0x7f37,
+ 0x7f38, 0x7f39, 0x7f3a, 0x7f3b, 0x7f3c, 0x7f3d, 0x7f3e, 0x7f3f,
+ 0x7f40, 0x7f41, 0x7f42, 0x7f43, 0x7f44, 0x7f45, 0x7f46, 0x7f47, /* 0x7f40 */
+ 0x7f48, 0x7f49, 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f4f,
+ 0x7f50, 0x7f51, 0x7f52, 0x7f53, 0x7f54, 0x7f55, 0x7f56, 0x7f57,
+ 0x7f58, 0x7f59, 0x7f5a, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f5e, 0x7f5f,
+ 0x7f60, 0x7f61, 0x7f62, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f67,
+ 0x7f68, 0x7f69, 0x7f6a, 0x7f6b, 0x7f6c, 0x7f6d, 0x7f6e, 0x7f6f,
+ 0x7f70, 0x7f71, 0x7f72, 0x7f73, 0x7f74, 0x7f75, 0x7f76, 0x7f77,
+ 0x7f78, 0x7f79, 0x7f7a, 0x7f7b, 0x7f7c, 0x7f7d, 0x7f7e, 0x7f7f,
+ 0x7f80, 0x7f81, 0x7f82, 0x7f83, 0x7f84, 0x7f85, 0x7f86, 0x7f87, /* 0x7f80 */
+ 0x7f88, 0x7f89, 0x7f8a, 0x7f8b, 0x7f8c, 0x7f8d, 0x7f8e, 0x7f8f,
+ 0x7f90, 0x7f91, 0x7f92, 0x7f93, 0x7f94, 0x7f95, 0x7f96, 0x7f97,
+ 0x7f98, 0x7f99, 0x7f9a, 0x7f9b, 0x7f9c, 0x7f9d, 0x7f9e, 0x7f9f,
+ 0x7fa0, 0x7fa1, 0x7fa2, 0x7fa3, 0x7fa4, 0x7fa5, 0x7fa6, 0x7fa7,
+ 0x7fa8, 0x7fa9, 0x7faa, 0x7fab, 0x7fac, 0x7fad, 0x7fae, 0x7faf,
+ 0x7fb0, 0x7fb1, 0x7fb2, 0x7fb3, 0x7fb4, 0x7fb5, 0x7fb6, 0x7fb7,
+ 0x7fb8, 0x7fb9, 0x7fba, 0x7fbb, 0x7fbc, 0x7fbd, 0x7fbe, 0x7fbf,
+ 0x7fc0, 0x7fc1, 0x7fc2, 0x7fc3, 0x7fc4, 0x7fc5, 0x7fc6, 0x7fc7, /* 0x7fc0 */
+ 0x7fc8, 0x7fc9, 0x7fca, 0x7fcb, 0x7fcc, 0x7fcd, 0x7fce, 0x7fcf,
+ 0x7fd0, 0x7fd1, 0x7fd2, 0x7fd3, 0x7fd4, 0x7fd5, 0x7fd6, 0x7fd7,
+ 0x7fd8, 0x7fd9, 0x7fda, 0x7fdb, 0x7fdc, 0x7fdd, 0x7fde, 0x7fdf,
+ 0x7fe0, 0x7fe1, 0x7fe2, 0x7fe3, 0x7fe4, 0x7fe5, 0x7fe6, 0x7fe7,
+ 0x7fe8, 0x7fe9, 0x7fea, 0x7feb, 0x7fec, 0x7fed, 0x7fee, 0x7fef,
+ 0x7ff0, 0x7ff1, 0x7ff2, 0x7ff3, 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7,
+ 0x7ff8, 0x7ff9, 0x7ffa, 0x7ffb, 0x7ffc, 0x7ffd, 0x7ffe, 0x7fff,
+ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, /* 0x8000 */
+ 0x8008, 0x8009, 0x800a, 0x800b, 0x800c, 0x800d, 0x800e, 0x800f,
+ 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017,
+ 0x8018, 0x8019, 0x801a, 0x801b, 0x801c, 0x801d, 0x801e, 0x801f,
+ 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027,
+ 0x8028, 0x8029, 0x802a, 0x802b, 0x802c, 0x802d, 0x802e, 0x802f,
+ 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037,
+ 0x8038, 0x8039, 0x803a, 0x803b, 0x803c, 0x803d, 0x803e, 0x803f,
+ 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047, /* 0x8040 */
+ 0x8048, 0x8049, 0x804a, 0x804b, 0x804c, 0x804d, 0x804e, 0x804f,
+ 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056, 0x8057,
+ 0x8058, 0x8059, 0x805a, 0x805b, 0x805c, 0x805d, 0x805e, 0x805f,
+ 0x8060, 0x8061, 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067,
+ 0x8068, 0x8069, 0x806a, 0x806b, 0x806c, 0x806d, 0x806e, 0x806f,
+ 0x8070, 0x8071, 0x8072, 0x8073, 0x8074, 0x8075, 0x8076, 0x8077,
+ 0x8078, 0x8079, 0x807a, 0x807b, 0x807c, 0x807d, 0x807e, 0x807f,
+ 0x8080, 0x8081, 0x8082, 0x8083, 0x8084, 0x8085, 0x8086, 0x8087, /* 0x8080 */
+ 0x8088, 0x8089, 0x808a, 0x808b, 0x808c, 0x808d, 0x808e, 0x808f,
+ 0x8090, 0x8091, 0x8092, 0x8093, 0x8094, 0x8095, 0x8096, 0x8097,
+ 0x8098, 0x8099, 0x809a, 0x809b, 0x809c, 0x809d, 0x809e, 0x809f,
+ 0x80a0, 0x80a1, 0x80a2, 0x80a3, 0x80a4, 0x80a5, 0x80a6, 0x80a7,
+ 0x80a8, 0x80a9, 0x80aa, 0x80ab, 0x80ac, 0x80ad, 0x80ae, 0x80af,
+ 0x80b0, 0x80b1, 0x80b2, 0x80b3, 0x80b4, 0x80b5, 0x80b6, 0x80b7,
+ 0x80b8, 0x80b9, 0x80ba, 0x80bb, 0x80bc, 0x80bd, 0x80be, 0x80bf,
+ 0x80c0, 0x80c1, 0x80c2, 0x80c3, 0x80c4, 0x80c5, 0x80c6, 0x80c7, /* 0x80c0 */
+ 0x80c8, 0x80c9, 0x80ca, 0x80cb, 0x80cc, 0x80cd, 0x80ce, 0x80cf,
+ 0x80d0, 0x80d1, 0x80d2, 0x80d3, 0x80d4, 0x80d5, 0x80d6, 0x80d7,
+ 0x80d8, 0x80d9, 0x80da, 0x80db, 0x80dc, 0x80dd, 0x80de, 0x80df,
+ 0x80e0, 0x80e1, 0x80e2, 0x80e3, 0x80e4, 0x80e5, 0x80e6, 0x80e7,
+ 0x80e8, 0x80e9, 0x80ea, 0x80eb, 0x80ec, 0x80ed, 0x80ee, 0x80ef,
+ 0x80f0, 0x80f1, 0x80f2, 0x80f3, 0x80f4, 0x80f5, 0x80f6, 0x80f7,
+ 0x80f8, 0x80f9, 0x80fa, 0x80fb, 0x80fc, 0x80fd, 0x80fe, 0x80ff,
+ 0x8100, 0x8101, 0x8102, 0x8103, 0x8104, 0x8105, 0x8106, 0x8107, /* 0x8100 */
+ 0x8108, 0x8109, 0x810a, 0x810b, 0x810c, 0x810d, 0x810e, 0x810f,
+ 0x8110, 0x8111, 0x8112, 0x8113, 0x8114, 0x8115, 0x8116, 0x8117,
+ 0x8118, 0x8119, 0x811a, 0x811b, 0x811c, 0x811d, 0x811e, 0x811f,
+ 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127,
+ 0x8128, 0x8129, 0x812a, 0x812b, 0x812c, 0x812d, 0x812e, 0x812f,
+ 0x8130, 0x8131, 0x8132, 0x8133, 0x8134, 0x8135, 0x8136, 0x8137,
+ 0x8138, 0x8139, 0x813a, 0x813b, 0x813c, 0x813d, 0x813e, 0x813f,
+ 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8146, 0x8147, /* 0x8140 */
+ 0x8148, 0x8149, 0x814a, 0x814b, 0x814c, 0x814d, 0x814e, 0x814f,
+ 0x8150, 0x8151, 0x8152, 0x8153, 0x8154, 0x8155, 0x8156, 0x8157,
+ 0x8158, 0x8159, 0x815a, 0x815b, 0x815c, 0x815d, 0x815e, 0x815f,
+ 0x8160, 0x8161, 0x8162, 0x8163, 0x8164, 0x8165, 0x8166, 0x8167,
+ 0x8168, 0x8169, 0x816a, 0x816b, 0x816c, 0x816d, 0x816e, 0x816f,
+ 0x8170, 0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0x8176, 0x8177,
+ 0x8178, 0x8179, 0x817a, 0x817b, 0x817c, 0x817d, 0x817e, 0x817f,
+ 0x8180, 0x8181, 0x8182, 0x8183, 0x8184, 0x8185, 0x8186, 0x8187, /* 0x8180 */
+ 0x8188, 0x8189, 0x818a, 0x818b, 0x818c, 0x818d, 0x818e, 0x818f,
+ 0x8190, 0x8191, 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197,
+ 0x8198, 0x8199, 0x819a, 0x819b, 0x819c, 0x819d, 0x819e, 0x819f,
+ 0x81a0, 0x81a1, 0x81a2, 0x81a3, 0x81a4, 0x81a5, 0x81a6, 0x81a7,
+ 0x81a8, 0x81a9, 0x81aa, 0x81ab, 0x81ac, 0x81ad, 0x81ae, 0x81af,
+ 0x81b0, 0x81b1, 0x81b2, 0x81b3, 0x81b4, 0x81b5, 0x81b6, 0x81b7,
+ 0x81b8, 0x81b9, 0x81ba, 0x81bb, 0x81bc, 0x81bd, 0x81be, 0x81bf,
+ 0x81c0, 0x81c1, 0x81c2, 0x81c3, 0x81c4, 0x81c5, 0x81c6, 0x81c7, /* 0x81c0 */
+ 0x81c8, 0x81c9, 0x81ca, 0x81cb, 0x81cc, 0x81cd, 0x81ce, 0x81cf,
+ 0x81d0, 0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5, 0x81d6, 0x81d7,
+ 0x81d8, 0x81d9, 0x81da, 0x81db, 0x81dc, 0x81dd, 0x81de, 0x81df,
+ 0x81e0, 0x81e1, 0x81e2, 0x81e3, 0x81e4, 0x81e5, 0x81e6, 0x81e7,
+ 0x81e8, 0x81e9, 0x81ea, 0x81eb, 0x81ec, 0x81ed, 0x81ee, 0x81ef,
+ 0x81f0, 0x81f1, 0x81f2, 0x81f3, 0x81f4, 0x81f5, 0x81f6, 0x81f7,
+ 0x81f8, 0x81f9, 0x81fa, 0x81fb, 0x81fc, 0x81fd, 0x81fe, 0x81ff,
+ 0x8200, 0x8201, 0x8202, 0x8203, 0x8204, 0x8205, 0x8206, 0x8207, /* 0x8200 */
+ 0x8208, 0x8209, 0x820a, 0x820b, 0x820c, 0x820d, 0x820e, 0x820f,
+ 0x8210, 0x8211, 0x8212, 0x8213, 0x8214, 0x8215, 0x8216, 0x8217,
+ 0x8218, 0x8219, 0x821a, 0x821b, 0x821c, 0x821d, 0x821e, 0x821f,
+ 0x8220, 0x8221, 0x8222, 0x8223, 0x8224, 0x8225, 0x8226, 0x8227,
+ 0x8228, 0x8229, 0x822a, 0x822b, 0x822c, 0x822d, 0x822e, 0x822f,
+ 0x8230, 0x8231, 0x8232, 0x8233, 0x8234, 0x8235, 0x8236, 0x8237,
+ 0x8238, 0x8239, 0x823a, 0x823b, 0x823c, 0x823d, 0x823e, 0x823f,
+ 0x8240, 0x8241, 0x8242, 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, /* 0x8240 */
+ 0x8248, 0x8249, 0x824a, 0x824b, 0x824c, 0x824d, 0x824e, 0x824f,
+ 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257,
+ 0x8258, 0x8259, 0x825a, 0x825b, 0x825c, 0x825d, 0x825e, 0x825f,
+ 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267,
+ 0x8268, 0x8269, 0x826a, 0x826b, 0x826c, 0x826d, 0x826e, 0x826f,
+ 0x8270, 0x8271, 0x8272, 0x8273, 0x8274, 0x8275, 0x8276, 0x8277,
+ 0x8278, 0x8279, 0x827a, 0x827b, 0x827c, 0x827d, 0x827e, 0x827f,
+ 0x8280, 0x8281, 0x8282, 0x8283, 0x8284, 0x8285, 0x8286, 0x8287, /* 0x8280 */
+ 0x8288, 0x8289, 0x828a, 0x828b, 0x828c, 0x828d, 0x828e, 0x828f,
+ 0x8290, 0x8291, 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297,
+ 0x8298, 0x8299, 0x829a, 0x829b, 0x829c, 0x829d, 0x829e, 0x829f,
+ 0x82a0, 0x82a1, 0x82a2, 0x82a3, 0x82a4, 0x82a5, 0x82a6, 0x82a7,
+ 0x82a8, 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0x82ae, 0x82af,
+ 0x82b0, 0x82b1, 0x82b2, 0x82b3, 0x82b4, 0x82b5, 0x82b6, 0x82b7,
+ 0x82b8, 0x82b9, 0x82ba, 0x82bb, 0x82bc, 0x82bd, 0x82be, 0x82bf,
+ 0x82c0, 0x82c1, 0x82c2, 0x82c3, 0x82c4, 0x82c5, 0x82c6, 0x82c7, /* 0x82c0 */
+ 0x82c8, 0x82c9, 0x82ca, 0x82cb, 0x82cc, 0x82cd, 0x82ce, 0x82cf,
+ 0x82d0, 0x82d1, 0x82d2, 0x82d3, 0x82d4, 0x82d5, 0x82d6, 0x82d7,
+ 0x82d8, 0x82d9, 0x82da, 0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df,
+ 0x82e0, 0x82e1, 0x82e2, 0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7,
+ 0x82e8, 0x82e9, 0x82ea, 0x82eb, 0x82ec, 0x82ed, 0x82ee, 0x82ef,
+ 0x82f0, 0x82f1, 0x82f2, 0x82f3, 0x82f4, 0x82f5, 0x82f6, 0x82f7,
+ 0x82f8, 0x82f9, 0x82fa, 0x82fb, 0x82fc, 0x82fd, 0x82fe, 0x82ff,
+ 0x8300, 0x8301, 0x8302, 0x8303, 0x8304, 0x8305, 0x8306, 0x8307, /* 0x8300 */
+ 0x8308, 0x8309, 0x830a, 0x830b, 0x830c, 0x830d, 0x830e, 0x830f,
+ 0x8310, 0x8311, 0x8312, 0x8313, 0x8314, 0x8315, 0x8316, 0x8317,
+ 0x8318, 0x8319, 0x831a, 0x831b, 0x831c, 0x831d, 0x831e, 0x831f,
+ 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326, 0x8327,
+ 0x8328, 0x8329, 0x832a, 0x832b, 0x832c, 0x832d, 0x832e, 0x832f,
+ 0x8330, 0x8331, 0x8332, 0x8333, 0x8334, 0x8335, 0x8336, 0x8337,
+ 0x8338, 0x8339, 0x833a, 0x833b, 0x833c, 0x833d, 0x833e, 0x833f,
+ 0x8340, 0x8341, 0x8342, 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, /* 0x8340 */
+ 0x8348, 0x8349, 0x834a, 0x834b, 0x834c, 0x834d, 0x834e, 0x834f,
+ 0x8350, 0x8351, 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357,
+ 0x8358, 0x8359, 0x835a, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f,
+ 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0x8366, 0x8367,
+ 0x8368, 0x8369, 0x836a, 0x836b, 0x836c, 0x836d, 0x836e, 0x836f,
+ 0x8370, 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8377,
+ 0x8378, 0x8379, 0x837a, 0x837b, 0x837c, 0x837d, 0x837e, 0x837f,
+ 0x8380, 0x8381, 0x8382, 0x8383, 0x8384, 0x8385, 0x8386, 0x8387, /* 0x8380 */
+ 0x8388, 0x8389, 0x838a, 0x838b, 0x838c, 0x838d, 0x838e, 0x838f,
+ 0x8390, 0x8391, 0x8392, 0x8393, 0x8394, 0x8395, 0x8396, 0x8397,
+ 0x8398, 0x8399, 0x839a, 0x839b, 0x839c, 0x839d, 0x839e, 0x839f,
+ 0x83a0, 0x83a1, 0x83a2, 0x83a3, 0x83a4, 0x83a5, 0x83a6, 0x83a7,
+ 0x83a8, 0x83a9, 0x83aa, 0x83ab, 0x83ac, 0x83ad, 0x83ae, 0x83af,
+ 0x83b0, 0x83b1, 0x83b2, 0x83b3, 0x83b4, 0x83b5, 0x83b6, 0x83b7,
+ 0x83b8, 0x83b9, 0x83ba, 0x83bb, 0x83bc, 0x83bd, 0x83be, 0x83bf,
+ 0x83c0, 0x83c1, 0x83c2, 0x83c3, 0x83c4, 0x83c5, 0x83c6, 0x83c7, /* 0x83c0 */
+ 0x83c8, 0x83c9, 0x83ca, 0x83cb, 0x83cc, 0x83cd, 0x83ce, 0x83cf,
+ 0x83d0, 0x83d1, 0x83d2, 0x83d3, 0x83d4, 0x83d5, 0x83d6, 0x83d7,
+ 0x83d8, 0x83d9, 0x83da, 0x83db, 0x83dc, 0x83dd, 0x83de, 0x83df,
+ 0x83e0, 0x83e1, 0x83e2, 0x83e3, 0x83e4, 0x83e5, 0x83e6, 0x83e7,
+ 0x83e8, 0x83e9, 0x83ea, 0x83eb, 0x83ec, 0x83ed, 0x83ee, 0x83ef,
+ 0x83f0, 0x83f1, 0x83f2, 0x83f3, 0x83f4, 0x83f5, 0x83f6, 0x83f7,
+ 0x83f8, 0x83f9, 0x83fa, 0x83fb, 0x83fc, 0x83fd, 0x83fe, 0x83ff,
+ 0x8400, 0x8401, 0x8402, 0x8403, 0x8404, 0x8405, 0x8406, 0x8407, /* 0x8400 */
+ 0x8408, 0x8409, 0x840a, 0x840b, 0x840c, 0x840d, 0x840e, 0x840f,
+ 0x8410, 0x8411, 0x8412, 0x8413, 0x8414, 0x8415, 0x8416, 0x8417,
+ 0x8418, 0x8419, 0x841a, 0x841b, 0x841c, 0x841d, 0x841e, 0x841f,
+ 0x8420, 0x8421, 0x8422, 0x8423, 0x8424, 0x8425, 0x8426, 0x8427,
+ 0x8428, 0x8429, 0x842a, 0x842b, 0x842c, 0x842d, 0x842e, 0x842f,
+ 0x8430, 0x8431, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436, 0x8437,
+ 0x8438, 0x8439, 0x843a, 0x843b, 0x843c, 0x843d, 0x843e, 0x843f,
+ 0x8440, 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8446, 0x8447, /* 0x8440 */
+ 0x8448, 0x8449, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f,
+ 0x8450, 0x8451, 0x8452, 0x8453, 0x8454, 0x8455, 0x8456, 0x8457,
+ 0x8458, 0x8459, 0x845a, 0x845b, 0x845c, 0x845d, 0x845e, 0x845f,
+ 0x8460, 0x8461, 0x8462, 0x8463, 0x8464, 0x8465, 0x8466, 0x8467,
+ 0x8468, 0x8469, 0x846a, 0x846b, 0x846c, 0x846d, 0x846e, 0x846f,
+ 0x8470, 0x8471, 0x8472, 0x8473, 0x8474, 0x8475, 0x8476, 0x8477,
+ 0x8478, 0x8479, 0x847a, 0x847b, 0x847c, 0x847d, 0x847e, 0x847f,
+ 0x8480, 0x8481, 0x8482, 0x8483, 0x8484, 0x8485, 0x8486, 0x8487, /* 0x8480 */
+ 0x8488, 0x8489, 0x848a, 0x848b, 0x848c, 0x848d, 0x848e, 0x848f,
+ 0x8490, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495, 0x8496, 0x8497,
+ 0x8498, 0x8499, 0x849a, 0x849b, 0x849c, 0x849d, 0x849e, 0x849f,
+ 0x84a0, 0x84a1, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7,
+ 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae, 0x84af,
+ 0x84b0, 0x84b1, 0x84b2, 0x84b3, 0x84b4, 0x84b5, 0x84b6, 0x84b7,
+ 0x84b8, 0x84b9, 0x84ba, 0x84bb, 0x84bc, 0x84bd, 0x84be, 0x84bf,
+ 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0x84c4, 0x84c5, 0x84c6, 0x84c7, /* 0x84c0 */
+ 0x84c8, 0x84c9, 0x84ca, 0x84cb, 0x84cc, 0x84cd, 0x84ce, 0x84cf,
+ 0x84d0, 0x84d1, 0x84d2, 0x84d3, 0x84d4, 0x84d5, 0x84d6, 0x84d7,
+ 0x84d8, 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84dd, 0x84de, 0x84df,
+ 0x84e0, 0x84e1, 0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6, 0x84e7,
+ 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee, 0x84ef,
+ 0x84f0, 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7,
+ 0x84f8, 0x84f9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0x84fe, 0x84ff,
+ 0x8500, 0x8501, 0x8502, 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, /* 0x8500 */
+ 0x8508, 0x8509, 0x850a, 0x850b, 0x850c, 0x850d, 0x850e, 0x850f,
+ 0x8510, 0x8511, 0x8512, 0x8513, 0x8514, 0x8515, 0x8516, 0x8517,
+ 0x8518, 0x8519, 0x851a, 0x851b, 0x851c, 0x851d, 0x851e, 0x851f,
+ 0x8520, 0x8521, 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527,
+ 0x8528, 0x8529, 0x852a, 0x852b, 0x852c, 0x852d, 0x852e, 0x852f,
+ 0x8530, 0x8531, 0x8532, 0x8533, 0x8534, 0x8535, 0x8536, 0x8537,
+ 0x8538, 0x8539, 0x853a, 0x853b, 0x853c, 0x853d, 0x853e, 0x853f,
+ 0x8540, 0x8541, 0x8542, 0x8543, 0x8544, 0x8545, 0x8546, 0x8547, /* 0x8540 */
+ 0x8548, 0x8549, 0x854a, 0x854b, 0x854c, 0x854d, 0x854e, 0x854f,
+ 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8556, 0x8557,
+ 0x8558, 0x8559, 0x855a, 0x855b, 0x855c, 0x855d, 0x855e, 0x855f,
+ 0x8560, 0x8561, 0x8562, 0x8563, 0x8564, 0x8565, 0x8566, 0x8567,
+ 0x8568, 0x8569, 0x856a, 0x856b, 0x856c, 0x856d, 0x856e, 0x856f,
+ 0x8570, 0x8571, 0x8572, 0x8573, 0x8574, 0x8575, 0x8576, 0x8577,
+ 0x8578, 0x8579, 0x857a, 0x857b, 0x857c, 0x857d, 0x857e, 0x857f,
+ 0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0x8585, 0x8586, 0x8587, /* 0x8580 */
+ 0x8588, 0x8589, 0x858a, 0x858b, 0x858c, 0x858d, 0x858e, 0x858f,
+ 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595, 0x8596, 0x8597,
+ 0x8598, 0x8599, 0x859a, 0x859b, 0x859c, 0x859d, 0x859e, 0x859f,
+ 0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6, 0x85a7,
+ 0x85a8, 0x85a9, 0x85aa, 0x85ab, 0x85ac, 0x85ad, 0x85ae, 0x85af,
+ 0x85b0, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5, 0x85b6, 0x85b7,
+ 0x85b8, 0x85b9, 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf,
+ 0x85c0, 0x85c1, 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, /* 0x85c0 */
+ 0x85c8, 0x85c9, 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85cf,
+ 0x85d0, 0x85d1, 0x85d2, 0x85d3, 0x85d4, 0x85d5, 0x85d6, 0x85d7,
+ 0x85d8, 0x85d9, 0x85da, 0x85db, 0x85dc, 0x85dd, 0x85de, 0x85df,
+ 0x85e0, 0x85e1, 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7,
+ 0x85e8, 0x85e9, 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef,
+ 0x85f0, 0x85f1, 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7,
+ 0x85f8, 0x85f9, 0x85fa, 0x85fb, 0x85fc, 0x85fd, 0x85fe, 0x85ff,
+ 0x8600, 0x8601, 0x8602, 0x8603, 0x8604, 0x8605, 0x8606, 0x8607, /* 0x8600 */
+ 0x8608, 0x8609, 0x860a, 0x860b, 0x860c, 0x860d, 0x860e, 0x860f,
+ 0x8610, 0x8611, 0x8612, 0x8613, 0x8614, 0x8615, 0x8616, 0x8617,
+ 0x8618, 0x8619, 0x861a, 0x861b, 0x861c, 0x861d, 0x861e, 0x861f,
+ 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625, 0x8626, 0x8627,
+ 0x8628, 0x8629, 0x862a, 0x862b, 0x862c, 0x862d, 0x862e, 0x862f,
+ 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637,
+ 0x8638, 0x8639, 0x863a, 0x863b, 0x863c, 0x863d, 0x863e, 0x863f,
+ 0x8640, 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, /* 0x8640 */
+ 0x8648, 0x8649, 0x864a, 0x864b, 0x864c, 0x864d, 0x864e, 0x864f,
+ 0x8650, 0x8651, 0x8652, 0x8653, 0x8654, 0x8655, 0x8656, 0x8657,
+ 0x8658, 0x8659, 0x865a, 0x865b, 0x865c, 0x865d, 0x865e, 0x865f,
+ 0x8660, 0x8661, 0x8662, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667,
+ 0x8668, 0x8669, 0x866a, 0x866b, 0x866c, 0x866d, 0x866e, 0x866f,
+ 0x8670, 0x8671, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676, 0x8677,
+ 0x8678, 0x8679, 0x867a, 0x867b, 0x867c, 0x867d, 0x867e, 0x867f,
+ 0x8680, 0x8681, 0x8682, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, /* 0x8680 */
+ 0x8688, 0x8689, 0x868a, 0x868b, 0x868c, 0x868d, 0x868e, 0x868f,
+ 0x8690, 0x8691, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696, 0x8697,
+ 0x8698, 0x8699, 0x869a, 0x869b, 0x869c, 0x869d, 0x869e, 0x869f,
+ 0x86a0, 0x86a1, 0x86a2, 0x86a3, 0x86a4, 0x86a5, 0x86a6, 0x86a7,
+ 0x86a8, 0x86a9, 0x86aa, 0x86ab, 0x86ac, 0x86ad, 0x86ae, 0x86af,
+ 0x86b0, 0x86b1, 0x86b2, 0x86b3, 0x86b4, 0x86b5, 0x86b6, 0x86b7,
+ 0x86b8, 0x86b9, 0x86ba, 0x86bb, 0x86bc, 0x86bd, 0x86be, 0x86bf,
+ 0x86c0, 0x86c1, 0x86c2, 0x86c3, 0x86c4, 0x86c5, 0x86c6, 0x86c7, /* 0x86c0 */
+ 0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc, 0x86cd, 0x86ce, 0x86cf,
+ 0x86d0, 0x86d1, 0x86d2, 0x86d3, 0x86d4, 0x86d5, 0x86d6, 0x86d7,
+ 0x86d8, 0x86d9, 0x86da, 0x86db, 0x86dc, 0x86dd, 0x86de, 0x86df,
+ 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e4, 0x86e5, 0x86e6, 0x86e7,
+ 0x86e8, 0x86e9, 0x86ea, 0x86eb, 0x86ec, 0x86ed, 0x86ee, 0x86ef,
+ 0x86f0, 0x86f1, 0x86f2, 0x86f3, 0x86f4, 0x86f5, 0x86f6, 0x86f7,
+ 0x86f8, 0x86f9, 0x86fa, 0x86fb, 0x86fc, 0x86fd, 0x86fe, 0x86ff,
+ 0x8700, 0x8701, 0x8702, 0x8703, 0x8704, 0x8705, 0x8706, 0x8707, /* 0x8700 */
+ 0x8708, 0x8709, 0x870a, 0x870b, 0x870c, 0x870d, 0x870e, 0x870f,
+ 0x8710, 0x8711, 0x8712, 0x8713, 0x8714, 0x8715, 0x8716, 0x8717,
+ 0x8718, 0x8719, 0x871a, 0x871b, 0x871c, 0x871d, 0x871e, 0x871f,
+ 0x8720, 0x8721, 0x8722, 0x8723, 0x8724, 0x8725, 0x8726, 0x8727,
+ 0x8728, 0x8729, 0x872a, 0x872b, 0x872c, 0x872d, 0x872e, 0x872f,
+ 0x8730, 0x8731, 0x8732, 0x8733, 0x8734, 0x8735, 0x8736, 0x8737,
+ 0x8738, 0x8739, 0x873a, 0x873b, 0x873c, 0x873d, 0x873e, 0x873f,
+ 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x8747, /* 0x8740 */
+ 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, 0x874d, 0x874e, 0x874f,
+ 0x8750, 0x8751, 0x8752, 0x8753, 0x8754, 0x8755, 0x8756, 0x8757,
+ 0x8758, 0x8759, 0x875a, 0x875b, 0x875c, 0x875d, 0x875e, 0x875f,
+ 0x8760, 0x8761, 0x8762, 0x8763, 0x8764, 0x8765, 0x8766, 0x8767,
+ 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, 0x876d, 0x876e, 0x876f,
+ 0x8770, 0x8771, 0x8772, 0x8773, 0x8774, 0x8775, 0x8776, 0x8777,
+ 0x8778, 0x8779, 0x877a, 0x877b, 0x877c, 0x877d, 0x877e, 0x877f,
+ 0x8780, 0x8781, 0x8782, 0x8783, 0x8784, 0x8785, 0x8786, 0x8787, /* 0x8780 */
+ 0x8788, 0x8789, 0x878a, 0x878b, 0x878c, 0x878d, 0x878e, 0x878f,
+ 0x8790, 0x8791, 0x8792, 0x8793, 0x8794, 0x8795, 0x8796, 0x8797,
+ 0x8798, 0x8799, 0x879a, 0x879b, 0x879c, 0x879d, 0x879e, 0x879f,
+ 0x87a0, 0x87a1, 0x87a2, 0x87a3, 0x87a4, 0x87a5, 0x87a6, 0x87a7,
+ 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad, 0x87ae, 0x87af,
+ 0x87b0, 0x87b1, 0x87b2, 0x87b3, 0x87b4, 0x87b5, 0x87b6, 0x87b7,
+ 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0x87bc, 0x87bd, 0x87be, 0x87bf,
+ 0x87c0, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c6, 0x87c7, /* 0x87c0 */
+ 0x87c8, 0x87c9, 0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf,
+ 0x87d0, 0x87d1, 0x87d2, 0x87d3, 0x87d4, 0x87d5, 0x87d6, 0x87d7,
+ 0x87d8, 0x87d9, 0x87da, 0x87db, 0x87dc, 0x87dd, 0x87de, 0x87df,
+ 0x87e0, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e5, 0x87e6, 0x87e7,
+ 0x87e8, 0x87e9, 0x87ea, 0x87eb, 0x87ec, 0x87ed, 0x87ee, 0x87ef,
+ 0x87f0, 0x87f1, 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7,
+ 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc, 0x87fd, 0x87fe, 0x87ff,
+ 0x8800, 0x8801, 0x8802, 0x8803, 0x8804, 0x8805, 0x8806, 0x8807, /* 0x8800 */
+ 0x8808, 0x8809, 0x880a, 0x880b, 0x880c, 0x880d, 0x880e, 0x880f,
+ 0x8810, 0x8811, 0x8812, 0x8813, 0x8814, 0x8815, 0x8816, 0x8817,
+ 0x8818, 0x8819, 0x881a, 0x881b, 0x881c, 0x881d, 0x881e, 0x881f,
+ 0x8820, 0x8821, 0x8822, 0x8823, 0x8824, 0x8825, 0x8826, 0x8827,
+ 0x8828, 0x8829, 0x882a, 0x882b, 0x882c, 0x882d, 0x882e, 0x882f,
+ 0x8830, 0x8831, 0x8832, 0x8833, 0x8834, 0x8835, 0x8836, 0x8837,
+ 0x8838, 0x8839, 0x883a, 0x883b, 0x883c, 0x883d, 0x883e, 0x883f,
+ 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, 0x8846, 0x8847, /* 0x8840 */
+ 0x8848, 0x8849, 0x884a, 0x884b, 0x884c, 0x884d, 0x884e, 0x884f,
+ 0x8850, 0x8851, 0x8852, 0x8853, 0x8854, 0x8855, 0x8856, 0x8857,
+ 0x8858, 0x8859, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e, 0x885f,
+ 0x8860, 0x8861, 0x8862, 0x8863, 0x8864, 0x8865, 0x8866, 0x8867,
+ 0x8868, 0x8869, 0x886a, 0x886b, 0x886c, 0x886d, 0x886e, 0x886f,
+ 0x8870, 0x8871, 0x8872, 0x8873, 0x8874, 0x8875, 0x8876, 0x8877,
+ 0x8878, 0x8879, 0x887a, 0x887b, 0x887c, 0x887d, 0x887e, 0x887f,
+ 0x8880, 0x8881, 0x8882, 0x8883, 0x8884, 0x8885, 0x8886, 0x8887, /* 0x8880 */
+ 0x8888, 0x8889, 0x888a, 0x888b, 0x888c, 0x888d, 0x888e, 0x888f,
+ 0x8890, 0x8891, 0x8892, 0x8893, 0x8894, 0x8895, 0x8896, 0x8897,
+ 0x8898, 0x8899, 0x889a, 0x889b, 0x889c, 0x889d, 0x889e, 0x889f,
+ 0x88a0, 0x88a1, 0x88a2, 0x88a3, 0x88a4, 0x88a5, 0x88a6, 0x88a7,
+ 0x88a8, 0x88a9, 0x88aa, 0x88ab, 0x88ac, 0x88ad, 0x88ae, 0x88af,
+ 0x88b0, 0x88b1, 0x88b2, 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b7,
+ 0x88b8, 0x88b9, 0x88ba, 0x88bb, 0x88bc, 0x88bd, 0x88be, 0x88bf,
+ 0x88c0, 0x88c1, 0x88c2, 0x88c3, 0x88c4, 0x88c5, 0x88c6, 0x88c7, /* 0x88c0 */
+ 0x88c8, 0x88c9, 0x88ca, 0x88cb, 0x88cc, 0x88cd, 0x88ce, 0x88cf,
+ 0x88d0, 0x88d1, 0x88d2, 0x88d3, 0x88d4, 0x88d5, 0x88d6, 0x88d7,
+ 0x88d8, 0x88d9, 0x88da, 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88df,
+ 0x88e0, 0x88e1, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0x88e6, 0x88e7,
+ 0x88e8, 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef,
+ 0x88f0, 0x88f1, 0x88f2, 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0x88f7,
+ 0x88f8, 0x88f9, 0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x88ff,
+ 0x8900, 0x8901, 0x8902, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, /* 0x8900 */
+ 0x8908, 0x8909, 0x890a, 0x890b, 0x890c, 0x890d, 0x890e, 0x890f,
+ 0x8910, 0x8911, 0x8912, 0x8913, 0x8914, 0x8915, 0x8916, 0x8917,
+ 0x8918, 0x8919, 0x891a, 0x891b, 0x891c, 0x891d, 0x891e, 0x891f,
+ 0x8920, 0x8921, 0x8922, 0x8923, 0x8924, 0x8925, 0x8926, 0x8927,
+ 0x8928, 0x8929, 0x892a, 0x892b, 0x892c, 0x892d, 0x892e, 0x892f,
+ 0x8930, 0x8931, 0x8932, 0x8933, 0x8934, 0x8935, 0x8936, 0x8937,
+ 0x8938, 0x8939, 0x893a, 0x893b, 0x893c, 0x893d, 0x893e, 0x893f,
+ 0x8940, 0x8941, 0x8942, 0x8943, 0x8944, 0x8945, 0x8946, 0x8947, /* 0x8940 */
+ 0x8948, 0x8949, 0x894a, 0x894b, 0x894c, 0x894d, 0x894e, 0x894f,
+ 0x8950, 0x8951, 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957,
+ 0x8958, 0x8959, 0x895a, 0x895b, 0x895c, 0x895d, 0x895e, 0x895f,
+ 0x8960, 0x8961, 0x8962, 0x8963, 0x8964, 0x8965, 0x8966, 0x8967,
+ 0x8968, 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f,
+ 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0x8976, 0x8977,
+ 0x8978, 0x8979, 0x897a, 0x897b, 0x897c, 0x897d, 0x897e, 0x897f,
+ 0x8980, 0x8981, 0x8982, 0x8983, 0x8984, 0x8985, 0x8986, 0x8987, /* 0x8980 */
+ 0x8988, 0x8989, 0x898a, 0x898b, 0x898c, 0x898d, 0x898e, 0x898f,
+ 0x8990, 0x8991, 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997,
+ 0x8998, 0x8999, 0x899a, 0x899b, 0x899c, 0x899d, 0x899e, 0x899f,
+ 0x89a0, 0x89a1, 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7,
+ 0x89a8, 0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af,
+ 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7,
+ 0x89b8, 0x89b9, 0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89be, 0x89bf,
+ 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5, 0x89c6, 0x89c7, /* 0x89c0 */
+ 0x89c8, 0x89c9, 0x89ca, 0x89cb, 0x89cc, 0x89cd, 0x89ce, 0x89cf,
+ 0x89d0, 0x89d1, 0x89d2, 0x89d3, 0x89d4, 0x89d5, 0x89d6, 0x89d7,
+ 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd, 0x89de, 0x89df,
+ 0x89e0, 0x89e1, 0x89e2, 0x89e3, 0x89e4, 0x89e5, 0x89e6, 0x89e7,
+ 0x89e8, 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0x89ed, 0x89ee, 0x89ef,
+ 0x89f0, 0x89f1, 0x89f2, 0x89f3, 0x89f4, 0x89f5, 0x89f6, 0x89f7,
+ 0x89f8, 0x89f9, 0x89fa, 0x89fb, 0x89fc, 0x89fd, 0x89fe, 0x89ff,
+ 0x8a00, 0x8a01, 0x8a02, 0x8a03, 0x8a04, 0x8a05, 0x8a06, 0x8a07, /* 0x8a00 */
+ 0x8a08, 0x8a09, 0x8a0a, 0x8a0b, 0x8a0c, 0x8a0d, 0x8a0e, 0x8a0f,
+ 0x8a10, 0x8a11, 0x8a12, 0x8a13, 0x8a14, 0x8a15, 0x8a16, 0x8a17,
+ 0x8a18, 0x8a19, 0x8a1a, 0x8a1b, 0x8a1c, 0x8a1d, 0x8a1e, 0x8a1f,
+ 0x8a20, 0x8a21, 0x8a22, 0x8a23, 0x8a24, 0x8a25, 0x8a26, 0x8a27,
+ 0x8a28, 0x8a29, 0x8a2a, 0x8a2b, 0x8a2c, 0x8a2d, 0x8a2e, 0x8a2f,
+ 0x8a30, 0x8a31, 0x8a32, 0x8a33, 0x8a34, 0x8a35, 0x8a36, 0x8a37,
+ 0x8a38, 0x8a39, 0x8a3a, 0x8a3b, 0x8a3c, 0x8a3d, 0x8a3e, 0x8a3f,
+ 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46, 0x8a47, /* 0x8a40 */
+ 0x8a48, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e, 0x8a4f,
+ 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56, 0x8a57,
+ 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f,
+ 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67,
+ 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f,
+ 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77,
+ 0x8a78, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e, 0x8a7f,
+ 0x8a80, 0x8a81, 0x8a82, 0x8a83, 0x8a84, 0x8a85, 0x8a86, 0x8a87, /* 0x8a80 */
+ 0x8a88, 0x8a89, 0x8a8a, 0x8a8b, 0x8a8c, 0x8a8d, 0x8a8e, 0x8a8f,
+ 0x8a90, 0x8a91, 0x8a92, 0x8a93, 0x8a94, 0x8a95, 0x8a96, 0x8a97,
+ 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, 0x8a9c, 0x8a9d, 0x8a9e, 0x8a9f,
+ 0x8aa0, 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7,
+ 0x8aa8, 0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf,
+ 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7,
+ 0x8ab8, 0x8ab9, 0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8abe, 0x8abf,
+ 0x8ac0, 0x8ac1, 0x8ac2, 0x8ac3, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, /* 0x8ac0 */
+ 0x8ac8, 0x8ac9, 0x8aca, 0x8acb, 0x8acc, 0x8acd, 0x8ace, 0x8acf,
+ 0x8ad0, 0x8ad1, 0x8ad2, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7,
+ 0x8ad8, 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, 0x8ade, 0x8adf,
+ 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7,
+ 0x8ae8, 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef,
+ 0x8af0, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7,
+ 0x8af8, 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8afe, 0x8aff,
+ 0x8b00, 0x8b01, 0x8b02, 0x8b03, 0x8b04, 0x8b05, 0x8b06, 0x8b07, /* 0x8b00 */
+ 0x8b08, 0x8b09, 0x8b0a, 0x8b0b, 0x8b0c, 0x8b0d, 0x8b0e, 0x8b0f,
+ 0x8b10, 0x8b11, 0x8b12, 0x8b13, 0x8b14, 0x8b15, 0x8b16, 0x8b17,
+ 0x8b18, 0x8b19, 0x8b1a, 0x8b1b, 0x8b1c, 0x8b1d, 0x8b1e, 0x8b1f,
+ 0x8b20, 0x8b21, 0x8b22, 0x8b23, 0x8b24, 0x8b25, 0x8b26, 0x8b27,
+ 0x8b28, 0x8b29, 0x8b2a, 0x8b2b, 0x8b2c, 0x8b2d, 0x8b2e, 0x8b2f,
+ 0x8b30, 0x8b31, 0x8b32, 0x8b33, 0x8b34, 0x8b35, 0x8b36, 0x8b37,
+ 0x8b38, 0x8b39, 0x8b3a, 0x8b3b, 0x8b3c, 0x8b3d, 0x8b3e, 0x8b3f,
+ 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46, 0x8b47, /* 0x8b40 */
+ 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f,
+ 0x8b50, 0x8b51, 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0x8b56, 0x8b57,
+ 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, 0x8b5e, 0x8b5f,
+ 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b66, 0x8b67,
+ 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6c, 0x8b6d, 0x8b6e, 0x8b6f,
+ 0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77,
+ 0x8b78, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8b7f,
+ 0x8b80, 0x8b81, 0x8b82, 0x8b83, 0x8b84, 0x8b85, 0x8b86, 0x8b87, /* 0x8b80 */
+ 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8d, 0x8b8e, 0x8b8f,
+ 0x8b90, 0x8b91, 0x8b92, 0x8b93, 0x8b94, 0x8b95, 0x8b96, 0x8b97,
+ 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, 0x8b9e, 0x8b9f,
+ 0x8ba0, 0x8ba1, 0x8ba2, 0x8ba3, 0x8ba4, 0x8ba5, 0x8ba6, 0x8ba7,
+ 0x8ba8, 0x8ba9, 0x8baa, 0x8bab, 0x8bac, 0x8bad, 0x8bae, 0x8baf,
+ 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3, 0x8bb4, 0x8bb5, 0x8bb6, 0x8bb7,
+ 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb, 0x8bbc, 0x8bbd, 0x8bbe, 0x8bbf,
+ 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3, 0x8bc4, 0x8bc5, 0x8bc6, 0x8bc7, /* 0x8bc0 */
+ 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb, 0x8bcc, 0x8bcd, 0x8bce, 0x8bcf,
+ 0x8bd0, 0x8bd1, 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7,
+ 0x8bd8, 0x8bd9, 0x8bda, 0x8bdb, 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf,
+ 0x8be0, 0x8be1, 0x8be2, 0x8be3, 0x8be4, 0x8be5, 0x8be6, 0x8be7,
+ 0x8be8, 0x8be9, 0x8bea, 0x8beb, 0x8bec, 0x8bed, 0x8bee, 0x8bef,
+ 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3, 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7,
+ 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb, 0x8bfc, 0x8bfd, 0x8bfe, 0x8bff,
+ 0x8c00, 0x8c01, 0x8c02, 0x8c03, 0x8c04, 0x8c05, 0x8c06, 0x8c07, /* 0x8c00 */
+ 0x8c08, 0x8c09, 0x8c0a, 0x8c0b, 0x8c0c, 0x8c0d, 0x8c0e, 0x8c0f,
+ 0x8c10, 0x8c11, 0x8c12, 0x8c13, 0x8c14, 0x8c15, 0x8c16, 0x8c17,
+ 0x8c18, 0x8c19, 0x8c1a, 0x8c1b, 0x8c1c, 0x8c1d, 0x8c1e, 0x8c1f,
+ 0x8c20, 0x8c21, 0x8c22, 0x8c23, 0x8c24, 0x8c25, 0x8c26, 0x8c27,
+ 0x8c28, 0x8c29, 0x8c2a, 0x8c2b, 0x8c2c, 0x8c2d, 0x8c2e, 0x8c2f,
+ 0x8c30, 0x8c31, 0x8c32, 0x8c33, 0x8c34, 0x8c35, 0x8c36, 0x8c37,
+ 0x8c38, 0x8c39, 0x8c3a, 0x8c3b, 0x8c3c, 0x8c3d, 0x8c3e, 0x8c3f,
+ 0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c46, 0x8c47, /* 0x8c40 */
+ 0x8c48, 0x8c49, 0x8c4a, 0x8c4b, 0x8c4c, 0x8c4d, 0x8c4e, 0x8c4f,
+ 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54, 0x8c55, 0x8c56, 0x8c57,
+ 0x8c58, 0x8c59, 0x8c5a, 0x8c5b, 0x8c5c, 0x8c5d, 0x8c5e, 0x8c5f,
+ 0x8c60, 0x8c61, 0x8c62, 0x8c63, 0x8c64, 0x8c65, 0x8c66, 0x8c67,
+ 0x8c68, 0x8c69, 0x8c6a, 0x8c6b, 0x8c6c, 0x8c6d, 0x8c6e, 0x8c6f,
+ 0x8c70, 0x8c71, 0x8c72, 0x8c73, 0x8c74, 0x8c75, 0x8c76, 0x8c77,
+ 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0x8c7c, 0x8c7d, 0x8c7e, 0x8c7f,
+ 0x8c80, 0x8c81, 0x8c82, 0x8c83, 0x8c84, 0x8c85, 0x8c86, 0x8c87, /* 0x8c80 */
+ 0x8c88, 0x8c89, 0x8c8a, 0x8c8b, 0x8c8c, 0x8c8d, 0x8c8e, 0x8c8f,
+ 0x8c90, 0x8c91, 0x8c92, 0x8c93, 0x8c94, 0x8c95, 0x8c96, 0x8c97,
+ 0x8c98, 0x8c99, 0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d, 0x8c9e, 0x8c9f,
+ 0x8ca0, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5, 0x8ca6, 0x8ca7,
+ 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad, 0x8cae, 0x8caf,
+ 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5, 0x8cb6, 0x8cb7,
+ 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd, 0x8cbe, 0x8cbf,
+ 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6, 0x8cc7, /* 0x8cc0 */
+ 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce, 0x8ccf,
+ 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6, 0x8cd7,
+ 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8cde, 0x8cdf,
+ 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6, 0x8ce7,
+ 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced, 0x8cee, 0x8cef,
+ 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5, 0x8cf6, 0x8cf7,
+ 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, 0x8cfe, 0x8cff,
+ 0x8d00, 0x8d01, 0x8d02, 0x8d03, 0x8d04, 0x8d05, 0x8d06, 0x8d07, /* 0x8d00 */
+ 0x8d08, 0x8d09, 0x8d0a, 0x8d0b, 0x8d0c, 0x8d0d, 0x8d0e, 0x8d0f,
+ 0x8d10, 0x8d11, 0x8d12, 0x8d13, 0x8d14, 0x8d15, 0x8d16, 0x8d17,
+ 0x8d18, 0x8d19, 0x8d1a, 0x8d1b, 0x8d1c, 0x8d1d, 0x8d1e, 0x8d1f,
+ 0x8d20, 0x8d21, 0x8d22, 0x8d23, 0x8d24, 0x8d25, 0x8d26, 0x8d27,
+ 0x8d28, 0x8d29, 0x8d2a, 0x8d2b, 0x8d2c, 0x8d2d, 0x8d2e, 0x8d2f,
+ 0x8d30, 0x8d31, 0x8d32, 0x8d33, 0x8d34, 0x8d35, 0x8d36, 0x8d37,
+ 0x8d38, 0x8d39, 0x8d3a, 0x8d3b, 0x8d3c, 0x8d3d, 0x8d3e, 0x8d3f,
+ 0x8d40, 0x8d41, 0x8d42, 0x8d43, 0x8d44, 0x8d45, 0x8d46, 0x8d47, /* 0x8d40 */
+ 0x8d48, 0x8d49, 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4d, 0x8d4e, 0x8d4f,
+ 0x8d50, 0x8d51, 0x8d52, 0x8d53, 0x8d54, 0x8d55, 0x8d56, 0x8d57,
+ 0x8d58, 0x8d59, 0x8d5a, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f,
+ 0x8d60, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66, 0x8d67,
+ 0x8d68, 0x8d69, 0x8d6a, 0x8d6b, 0x8d6c, 0x8d6d, 0x8d6e, 0x8d6f,
+ 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76, 0x8d77,
+ 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8d7f,
+ 0x8d80, 0x8d81, 0x8d82, 0x8d83, 0x8d84, 0x8d85, 0x8d86, 0x8d87, /* 0x8d80 */
+ 0x8d88, 0x8d89, 0x8d8a, 0x8d8b, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f,
+ 0x8d90, 0x8d91, 0x8d92, 0x8d93, 0x8d94, 0x8d95, 0x8d96, 0x8d97,
+ 0x8d98, 0x8d99, 0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8d9e, 0x8d9f,
+ 0x8da0, 0x8da1, 0x8da2, 0x8da3, 0x8da4, 0x8da5, 0x8da6, 0x8da7,
+ 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0x8dac, 0x8dad, 0x8dae, 0x8daf,
+ 0x8db0, 0x8db1, 0x8db2, 0x8db3, 0x8db4, 0x8db5, 0x8db6, 0x8db7,
+ 0x8db8, 0x8db9, 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf,
+ 0x8dc0, 0x8dc1, 0x8dc2, 0x8dc3, 0x8dc4, 0x8dc5, 0x8dc6, 0x8dc7, /* 0x8dc0 */
+ 0x8dc8, 0x8dc9, 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, 0x8dce, 0x8dcf,
+ 0x8dd0, 0x8dd1, 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0x8dd6, 0x8dd7,
+ 0x8dd8, 0x8dd9, 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf,
+ 0x8de0, 0x8de1, 0x8de2, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7,
+ 0x8de8, 0x8de9, 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def,
+ 0x8df0, 0x8df1, 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7,
+ 0x8df8, 0x8df9, 0x8dfa, 0x8dfb, 0x8dfc, 0x8dfd, 0x8dfe, 0x8dff,
+ 0x8e00, 0x8e01, 0x8e02, 0x8e03, 0x8e04, 0x8e05, 0x8e06, 0x8e07, /* 0x8e00 */
+ 0x8e08, 0x8e09, 0x8e0a, 0x8e0b, 0x8e0c, 0x8e0d, 0x8e0e, 0x8e0f,
+ 0x8e10, 0x8e11, 0x8e12, 0x8e13, 0x8e14, 0x8e15, 0x8e16, 0x8e17,
+ 0x8e18, 0x8e19, 0x8e1a, 0x8e1b, 0x8e1c, 0x8e1d, 0x8e1e, 0x8e1f,
+ 0x8e20, 0x8e21, 0x8e22, 0x8e23, 0x8e24, 0x8e25, 0x8e26, 0x8e27,
+ 0x8e28, 0x8e29, 0x8e2a, 0x8e2b, 0x8e2c, 0x8e2d, 0x8e2e, 0x8e2f,
+ 0x8e30, 0x8e31, 0x8e32, 0x8e33, 0x8e34, 0x8e35, 0x8e36, 0x8e37,
+ 0x8e38, 0x8e39, 0x8e3a, 0x8e3b, 0x8e3c, 0x8e3d, 0x8e3e, 0x8e3f,
+ 0x8e40, 0x8e41, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46, 0x8e47, /* 0x8e40 */
+ 0x8e48, 0x8e49, 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f,
+ 0x8e50, 0x8e51, 0x8e52, 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57,
+ 0x8e58, 0x8e59, 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f,
+ 0x8e60, 0x8e61, 0x8e62, 0x8e63, 0x8e64, 0x8e65, 0x8e66, 0x8e67,
+ 0x8e68, 0x8e69, 0x8e6a, 0x8e6b, 0x8e6c, 0x8e6d, 0x8e6e, 0x8e6f,
+ 0x8e70, 0x8e71, 0x8e72, 0x8e73, 0x8e74, 0x8e75, 0x8e76, 0x8e77,
+ 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7c, 0x8e7d, 0x8e7e, 0x8e7f,
+ 0x8e80, 0x8e81, 0x8e82, 0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, /* 0x8e80 */
+ 0x8e88, 0x8e89, 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e8f,
+ 0x8e90, 0x8e91, 0x8e92, 0x8e93, 0x8e94, 0x8e95, 0x8e96, 0x8e97,
+ 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0x8e9c, 0x8e9d, 0x8e9e, 0x8e9f,
+ 0x8ea0, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6, 0x8ea7,
+ 0x8ea8, 0x8ea9, 0x8eaa, 0x8eab, 0x8eac, 0x8ead, 0x8eae, 0x8eaf,
+ 0x8eb0, 0x8eb1, 0x8eb2, 0x8eb3, 0x8eb4, 0x8eb5, 0x8eb6, 0x8eb7,
+ 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0x8ebc, 0x8ebd, 0x8ebe, 0x8ebf,
+ 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, /* 0x8ec0 */
+ 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf,
+ 0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4, 0x8ed5, 0x8ed6, 0x8ed7,
+ 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc, 0x8edd, 0x8ede, 0x8edf,
+ 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4, 0x8ee5, 0x8ee6, 0x8ee7,
+ 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec, 0x8eed, 0x8eee, 0x8eef,
+ 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4, 0x8ef5, 0x8ef6, 0x8ef7,
+ 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, 0x8efe, 0x8eff,
+ 0x8f00, 0x8f01, 0x8f02, 0x8f03, 0x8f04, 0x8f05, 0x8f06, 0x8f07, /* 0x8f00 */
+ 0x8f08, 0x8f09, 0x8f0a, 0x8f0b, 0x8f0c, 0x8f0d, 0x8f0e, 0x8f0f,
+ 0x8f10, 0x8f11, 0x8f12, 0x8f13, 0x8f14, 0x8f15, 0x8f16, 0x8f17,
+ 0x8f18, 0x8f19, 0x8f1a, 0x8f1b, 0x8f1c, 0x8f1d, 0x8f1e, 0x8f1f,
+ 0x8f20, 0x8f21, 0x8f22, 0x8f23, 0x8f24, 0x8f25, 0x8f26, 0x8f27,
+ 0x8f28, 0x8f29, 0x8f2a, 0x8f2b, 0x8f2c, 0x8f2d, 0x8f2e, 0x8f2f,
+ 0x8f30, 0x8f31, 0x8f32, 0x8f33, 0x8f34, 0x8f35, 0x8f36, 0x8f37,
+ 0x8f38, 0x8f39, 0x8f3a, 0x8f3b, 0x8f3c, 0x8f3d, 0x8f3e, 0x8f3f,
+ 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44, 0x8f45, 0x8f46, 0x8f47, /* 0x8f40 */
+ 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d, 0x8f4e, 0x8f4f,
+ 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57,
+ 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d, 0x8f5e, 0x8f5f,
+ 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0x8f65, 0x8f66, 0x8f67,
+ 0x8f68, 0x8f69, 0x8f6a, 0x8f6b, 0x8f6c, 0x8f6d, 0x8f6e, 0x8f6f,
+ 0x8f70, 0x8f71, 0x8f72, 0x8f73, 0x8f74, 0x8f75, 0x8f76, 0x8f77,
+ 0x8f78, 0x8f79, 0x8f7a, 0x8f7b, 0x8f7c, 0x8f7d, 0x8f7e, 0x8f7f,
+ 0x8f80, 0x8f81, 0x8f82, 0x8f83, 0x8f84, 0x8f85, 0x8f86, 0x8f87, /* 0x8f80 */
+ 0x8f88, 0x8f89, 0x8f8a, 0x8f8b, 0x8f8c, 0x8f8d, 0x8f8e, 0x8f8f,
+ 0x8f90, 0x8f91, 0x8f92, 0x8f93, 0x8f94, 0x8f95, 0x8f96, 0x8f97,
+ 0x8f98, 0x8f99, 0x8f9a, 0x8f9b, 0x8f9c, 0x8f9d, 0x8f9e, 0x8f9f,
+ 0x8fa0, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7,
+ 0x8fa8, 0x8fa9, 0x8faa, 0x8fab, 0x8fac, 0x8fad, 0x8fae, 0x8faf,
+ 0x8fb0, 0x8fb1, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb6, 0x8fb7,
+ 0x8fb8, 0x8fb9, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbd, 0x8fbe, 0x8fbf,
+ 0x8fc0, 0x8fc1, 0x8fc2, 0x8fc3, 0x8fc4, 0x8fc5, 0x8fc6, 0x8fc7, /* 0x8fc0 */
+ 0x8fc8, 0x8fc9, 0x8fca, 0x8fcb, 0x8fcc, 0x8fcd, 0x8fce, 0x8fcf,
+ 0x8fd0, 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0x8fd6, 0x8fd7,
+ 0x8fd8, 0x8fd9, 0x8fda, 0x8fdb, 0x8fdc, 0x8fdd, 0x8fde, 0x8fdf,
+ 0x8fe0, 0x8fe1, 0x8fe2, 0x8fe3, 0x8fe4, 0x8fe5, 0x8fe6, 0x8fe7,
+ 0x8fe8, 0x8fe9, 0x8fea, 0x8feb, 0x8fec, 0x8fed, 0x8fee, 0x8fef,
+ 0x8ff0, 0x8ff1, 0x8ff2, 0x8ff3, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ff7,
+ 0x8ff8, 0x8ff9, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffd, 0x8ffe, 0x8fff,
+ 0x9000, 0x9001, 0x9002, 0x9003, 0x9004, 0x9005, 0x9006, 0x9007, /* 0x9000 */
+ 0x9008, 0x9009, 0x900a, 0x900b, 0x900c, 0x900d, 0x900e, 0x900f,
+ 0x9010, 0x9011, 0x9012, 0x9013, 0x9014, 0x9015, 0x9016, 0x9017,
+ 0x9018, 0x9019, 0x901a, 0x901b, 0x901c, 0x901d, 0x901e, 0x901f,
+ 0x9020, 0x9021, 0x9022, 0x9023, 0x9024, 0x9025, 0x9026, 0x9027,
+ 0x9028, 0x9029, 0x902a, 0x902b, 0x902c, 0x902d, 0x902e, 0x902f,
+ 0x9030, 0x9031, 0x9032, 0x9033, 0x9034, 0x9035, 0x9036, 0x9037,
+ 0x9038, 0x9039, 0x903a, 0x903b, 0x903c, 0x903d, 0x903e, 0x903f,
+ 0x9040, 0x9041, 0x9042, 0x9043, 0x9044, 0x9045, 0x9046, 0x9047, /* 0x9040 */
+ 0x9048, 0x9049, 0x904a, 0x904b, 0x904c, 0x904d, 0x904e, 0x904f,
+ 0x9050, 0x9051, 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0x9057,
+ 0x9058, 0x9059, 0x905a, 0x905b, 0x905c, 0x905d, 0x905e, 0x905f,
+ 0x9060, 0x9061, 0x9062, 0x9063, 0x9064, 0x9065, 0x9066, 0x9067,
+ 0x9068, 0x9069, 0x906a, 0x906b, 0x906c, 0x906d, 0x906e, 0x906f,
+ 0x9070, 0x9071, 0x9072, 0x9073, 0x9074, 0x9075, 0x9076, 0x9077,
+ 0x9078, 0x9079, 0x907a, 0x907b, 0x907c, 0x907d, 0x907e, 0x907f,
+ 0x9080, 0x9081, 0x9082, 0x9083, 0x9084, 0x9085, 0x9086, 0x9087, /* 0x9080 */
+ 0x9088, 0x9089, 0x908a, 0x908b, 0x908c, 0x908d, 0x908e, 0x908f,
+ 0x9090, 0x9091, 0x9092, 0x9093, 0x9094, 0x9095, 0x9096, 0x9097,
+ 0x9098, 0x9099, 0x909a, 0x909b, 0x909c, 0x909d, 0x909e, 0x909f,
+ 0x90a0, 0x90a1, 0x90a2, 0x90a3, 0x90a4, 0x90a5, 0x90a6, 0x90a7,
+ 0x90a8, 0x90a9, 0x90aa, 0x90ab, 0x90ac, 0x90ad, 0x90ae, 0x90af,
+ 0x90b0, 0x90b1, 0x90b2, 0x90b3, 0x90b4, 0x90b5, 0x90b6, 0x90b7,
+ 0x90b8, 0x90b9, 0x90ba, 0x90bb, 0x90bc, 0x90bd, 0x90be, 0x90bf,
+ 0x90c0, 0x90c1, 0x90c2, 0x90c3, 0x90c4, 0x90c5, 0x90c6, 0x90c7, /* 0x90c0 */
+ 0x90c8, 0x90c9, 0x90ca, 0x90cb, 0x90cc, 0x90cd, 0x90ce, 0x90cf,
+ 0x90d0, 0x90d1, 0x90d2, 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0x90d7,
+ 0x90d8, 0x90d9, 0x90da, 0x90db, 0x90dc, 0x90dd, 0x90de, 0x90df,
+ 0x90e0, 0x90e1, 0x90e2, 0x90e3, 0x90e4, 0x90e5, 0x90e6, 0x90e7,
+ 0x90e8, 0x90e9, 0x90ea, 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef,
+ 0x90f0, 0x90f1, 0x90f2, 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7,
+ 0x90f8, 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x90ff,
+ 0x9100, 0x9101, 0x9102, 0x9103, 0x9104, 0x9105, 0x9106, 0x9107, /* 0x9100 */
+ 0x9108, 0x9109, 0x910a, 0x910b, 0x910c, 0x910d, 0x910e, 0x910f,
+ 0x9110, 0x9111, 0x9112, 0x9113, 0x9114, 0x9115, 0x9116, 0x9117,
+ 0x9118, 0x9119, 0x911a, 0x911b, 0x911c, 0x911d, 0x911e, 0x911f,
+ 0x9120, 0x9121, 0x9122, 0x9123, 0x9124, 0x9125, 0x9126, 0x9127,
+ 0x9128, 0x9129, 0x912a, 0x912b, 0x912c, 0x912d, 0x912e, 0x912f,
+ 0x9130, 0x9131, 0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137,
+ 0x9138, 0x9139, 0x913a, 0x913b, 0x913c, 0x913d, 0x913e, 0x913f,
+ 0x9140, 0x9141, 0x9142, 0x9143, 0x9144, 0x9145, 0x9146, 0x9147, /* 0x9140 */
+ 0x9148, 0x9149, 0x914a, 0x914b, 0x914c, 0x914d, 0x914e, 0x914f,
+ 0x9150, 0x9151, 0x9152, 0x9153, 0x9154, 0x9155, 0x9156, 0x9157,
+ 0x9158, 0x9159, 0x915a, 0x915b, 0x915c, 0x915d, 0x915e, 0x915f,
+ 0x9160, 0x9161, 0x9162, 0x9163, 0x9164, 0x9165, 0x9166, 0x9167,
+ 0x9168, 0x9169, 0x916a, 0x916b, 0x916c, 0x916d, 0x916e, 0x916f,
+ 0x9170, 0x9171, 0x9172, 0x9173, 0x9174, 0x9175, 0x9176, 0x9177,
+ 0x9178, 0x9179, 0x917a, 0x917b, 0x917c, 0x917d, 0x917e, 0x917f,
+ 0x9180, 0x9181, 0x9182, 0x9183, 0x9184, 0x9185, 0x9186, 0x9187, /* 0x9180 */
+ 0x9188, 0x9189, 0x918a, 0x918b, 0x918c, 0x918d, 0x918e, 0x918f,
+ 0x9190, 0x9191, 0x9192, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197,
+ 0x9198, 0x9199, 0x919a, 0x919b, 0x919c, 0x919d, 0x919e, 0x919f,
+ 0x91a0, 0x91a1, 0x91a2, 0x91a3, 0x91a4, 0x91a5, 0x91a6, 0x91a7,
+ 0x91a8, 0x91a9, 0x91aa, 0x91ab, 0x91ac, 0x91ad, 0x91ae, 0x91af,
+ 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b4, 0x91b5, 0x91b6, 0x91b7,
+ 0x91b8, 0x91b9, 0x91ba, 0x91bb, 0x91bc, 0x91bd, 0x91be, 0x91bf,
+ 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4, 0x91c5, 0x91c6, 0x91c7, /* 0x91c0 */
+ 0x91c8, 0x91c9, 0x91ca, 0x91cb, 0x91cc, 0x91cd, 0x91ce, 0x91cf,
+ 0x91d0, 0x91d1, 0x91d2, 0x91d3, 0x91d4, 0x91d5, 0x91d6, 0x91d7,
+ 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd, 0x91de, 0x91df,
+ 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5, 0x91e6, 0x91e7,
+ 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed, 0x91ee, 0x91ef,
+ 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5, 0x91f6, 0x91f7,
+ 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd, 0x91fe, 0x91ff,
+ 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205, 0x9206, 0x9207, /* 0x9200 */
+ 0x9208, 0x9209, 0x920a, 0x920b, 0x920c, 0x920d, 0x920e, 0x920f,
+ 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215, 0x9216, 0x9217,
+ 0x9218, 0x9219, 0x921a, 0x921b, 0x921c, 0x921d, 0x921e, 0x921f,
+ 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0x9225, 0x9226, 0x9227,
+ 0x9228, 0x9229, 0x922a, 0x922b, 0x922c, 0x922d, 0x922e, 0x922f,
+ 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 0x9235, 0x9236, 0x9237,
+ 0x9238, 0x9239, 0x923a, 0x923b, 0x923c, 0x923d, 0x923e, 0x923f,
+ 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245, 0x9246, 0x9247, /* 0x9240 */
+ 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d, 0x924e, 0x924f,
+ 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256, 0x9257,
+ 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d, 0x925e, 0x925f,
+ 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267,
+ 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e, 0x926f,
+ 0x9270, 0x9271, 0x9272, 0x9273, 0x9274, 0x9275, 0x9276, 0x9277,
+ 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e, 0x927f,
+ 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0x9286, 0x9287, /* 0x9280 */
+ 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, 0x928d, 0x928e, 0x928f,
+ 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, 0x9297,
+ 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, 0x929e, 0x929f,
+ 0x92a0, 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7,
+ 0x92a8, 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92ae, 0x92af,
+ 0x92b0, 0x92b1, 0x92b2, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7,
+ 0x92b8, 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf,
+ 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, /* 0x92c0 */
+ 0x92c8, 0x92c9, 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf,
+ 0x92d0, 0x92d1, 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7,
+ 0x92d8, 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df,
+ 0x92e0, 0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7,
+ 0x92e8, 0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef,
+ 0x92f0, 0x92f1, 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7,
+ 0x92f8, 0x92f9, 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x92ff,
+ 0x9300, 0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, /* 0x9300 */
+ 0x9308, 0x9309, 0x930a, 0x930b, 0x930c, 0x930d, 0x930e, 0x930f,
+ 0x9310, 0x9311, 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317,
+ 0x9318, 0x9319, 0x931a, 0x931b, 0x931c, 0x931d, 0x931e, 0x931f,
+ 0x9320, 0x9321, 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327,
+ 0x9328, 0x9329, 0x932a, 0x932b, 0x932c, 0x932d, 0x932e, 0x932f,
+ 0x9330, 0x9331, 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337,
+ 0x9338, 0x9339, 0x933a, 0x933b, 0x933c, 0x933d, 0x933e, 0x933f,
+ 0x9340, 0x9341, 0x9342, 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, /* 0x9340 */
+ 0x9348, 0x9349, 0x934a, 0x934b, 0x934c, 0x934d, 0x934e, 0x934f,
+ 0x9350, 0x9351, 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357,
+ 0x9358, 0x9359, 0x935a, 0x935b, 0x935c, 0x935d, 0x935e, 0x935f,
+ 0x9360, 0x9361, 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367,
+ 0x9368, 0x9369, 0x936a, 0x936b, 0x936c, 0x936d, 0x936e, 0x936f,
+ 0x9370, 0x9371, 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377,
+ 0x9378, 0x9379, 0x937a, 0x937b, 0x937c, 0x937d, 0x937e, 0x937f,
+ 0x9380, 0x9381, 0x9382, 0x9383, 0x9384, 0x9385, 0x9386, 0x9387, /* 0x9380 */
+ 0x9388, 0x9389, 0x938a, 0x938b, 0x938c, 0x938d, 0x938e, 0x938f,
+ 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395, 0x9396, 0x9397,
+ 0x9398, 0x9399, 0x939a, 0x939b, 0x939c, 0x939d, 0x939e, 0x939f,
+ 0x93a0, 0x93a1, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0x93a7,
+ 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0x93af,
+ 0x93b0, 0x93b1, 0x93b2, 0x93b3, 0x93b4, 0x93b5, 0x93b6, 0x93b7,
+ 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc, 0x93bd, 0x93be, 0x93bf,
+ 0x93c0, 0x93c1, 0x93c2, 0x93c3, 0x93c4, 0x93c5, 0x93c6, 0x93c7, /* 0x93c0 */
+ 0x93c8, 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93ce, 0x93cf,
+ 0x93d0, 0x93d1, 0x93d2, 0x93d3, 0x93d4, 0x93d5, 0x93d6, 0x93d7,
+ 0x93d8, 0x93d9, 0x93da, 0x93db, 0x93dc, 0x93dd, 0x93de, 0x93df,
+ 0x93e0, 0x93e1, 0x93e2, 0x93e3, 0x93e4, 0x93e5, 0x93e6, 0x93e7,
+ 0x93e8, 0x93e9, 0x93ea, 0x93eb, 0x93ec, 0x93ed, 0x93ee, 0x93ef,
+ 0x93f0, 0x93f1, 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6, 0x93f7,
+ 0x93f8, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0x93fd, 0x93fe, 0x93ff,
+ 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406, 0x9407, /* 0x9400 */
+ 0x9408, 0x9409, 0x940a, 0x940b, 0x940c, 0x940d, 0x940e, 0x940f,
+ 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415, 0x9416, 0x9417,
+ 0x9418, 0x9419, 0x941a, 0x941b, 0x941c, 0x941d, 0x941e, 0x941f,
+ 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9426, 0x9427,
+ 0x9428, 0x9429, 0x942a, 0x942b, 0x942c, 0x942d, 0x942e, 0x942f,
+ 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436, 0x9437,
+ 0x9438, 0x9439, 0x943a, 0x943b, 0x943c, 0x943d, 0x943e, 0x943f,
+ 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447, /* 0x9440 */
+ 0x9448, 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f,
+ 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457,
+ 0x9458, 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f,
+ 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467,
+ 0x9468, 0x9469, 0x946a, 0x946b, 0x946c, 0x946d, 0x946e, 0x946f,
+ 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477,
+ 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, 0x947d, 0x947e, 0x947f,
+ 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9485, 0x9486, 0x9487, /* 0x9480 */
+ 0x9488, 0x9489, 0x948a, 0x948b, 0x948c, 0x948d, 0x948e, 0x948f,
+ 0x9490, 0x9491, 0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0x9497,
+ 0x9498, 0x9499, 0x949a, 0x949b, 0x949c, 0x949d, 0x949e, 0x949f,
+ 0x94a0, 0x94a1, 0x94a2, 0x94a3, 0x94a4, 0x94a5, 0x94a6, 0x94a7,
+ 0x94a8, 0x94a9, 0x94aa, 0x94ab, 0x94ac, 0x94ad, 0x94ae, 0x94af,
+ 0x94b0, 0x94b1, 0x94b2, 0x94b3, 0x94b4, 0x94b5, 0x94b6, 0x94b7,
+ 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, 0x94bd, 0x94be, 0x94bf,
+ 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0x94c4, 0x94c5, 0x94c6, 0x94c7, /* 0x94c0 */
+ 0x94c8, 0x94c9, 0x94ca, 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94cf,
+ 0x94d0, 0x94d1, 0x94d2, 0x94d3, 0x94d4, 0x94d5, 0x94d6, 0x94d7,
+ 0x94d8, 0x94d9, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de, 0x94df,
+ 0x94e0, 0x94e1, 0x94e2, 0x94e3, 0x94e4, 0x94e5, 0x94e6, 0x94e7,
+ 0x94e8, 0x94e9, 0x94ea, 0x94eb, 0x94ec, 0x94ed, 0x94ee, 0x94ef,
+ 0x94f0, 0x94f1, 0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6, 0x94f7,
+ 0x94f8, 0x94f9, 0x94fa, 0x94fb, 0x94fc, 0x94fd, 0x94fe, 0x94ff,
+ 0x9500, 0x9501, 0x9502, 0x9503, 0x9504, 0x9505, 0x9506, 0x9507, /* 0x9500 */
+ 0x9508, 0x9509, 0x950a, 0x950b, 0x950c, 0x950d, 0x950e, 0x950f,
+ 0x9510, 0x9511, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9517,
+ 0x9518, 0x9519, 0x951a, 0x951b, 0x951c, 0x951d, 0x951e, 0x951f,
+ 0x9520, 0x9521, 0x9522, 0x9523, 0x9524, 0x9525, 0x9526, 0x9527,
+ 0x9528, 0x9529, 0x952a, 0x952b, 0x952c, 0x952d, 0x952e, 0x952f,
+ 0x9530, 0x9531, 0x9532, 0x9533, 0x9534, 0x9535, 0x9536, 0x9537,
+ 0x9538, 0x9539, 0x953a, 0x953b, 0x953c, 0x953d, 0x953e, 0x953f,
+ 0x9540, 0x9541, 0x9542, 0x9543, 0x9544, 0x9545, 0x9546, 0x9547, /* 0x9540 */
+ 0x9548, 0x9549, 0x954a, 0x954b, 0x954c, 0x954d, 0x954e, 0x954f,
+ 0x9550, 0x9551, 0x9552, 0x9553, 0x9554, 0x9555, 0x9556, 0x9557,
+ 0x9558, 0x9559, 0x955a, 0x955b, 0x955c, 0x955d, 0x955e, 0x955f,
+ 0x9560, 0x9561, 0x9562, 0x9563, 0x9564, 0x9565, 0x9566, 0x9567,
+ 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, 0x956d, 0x956e, 0x956f,
+ 0x9570, 0x9571, 0x9572, 0x9573, 0x9574, 0x9575, 0x9576, 0x9577,
+ 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d, 0x957e, 0x957f,
+ 0x9580, 0x9581, 0x9582, 0x9583, 0x9584, 0x9585, 0x9586, 0x9587, /* 0x9580 */
+ 0x9588, 0x9589, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0x958f,
+ 0x9590, 0x9591, 0x9592, 0x9593, 0x9594, 0x9595, 0x9596, 0x9597,
+ 0x9598, 0x9599, 0x959a, 0x959b, 0x959c, 0x959d, 0x959e, 0x959f,
+ 0x95a0, 0x95a1, 0x95a2, 0x95a3, 0x95a4, 0x95a5, 0x95a6, 0x95a7,
+ 0x95a8, 0x95a9, 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0x95af,
+ 0x95b0, 0x95b1, 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7,
+ 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0x95bd, 0x95be, 0x95bf,
+ 0x95c0, 0x95c1, 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, /* 0x95c0 */
+ 0x95c8, 0x95c9, 0x95ca, 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf,
+ 0x95d0, 0x95d1, 0x95d2, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7,
+ 0x95d8, 0x95d9, 0x95da, 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df,
+ 0x95e0, 0x95e1, 0x95e2, 0x95e3, 0x95e4, 0x95e5, 0x95e6, 0x95e7,
+ 0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec, 0x95ed, 0x95ee, 0x95ef,
+ 0x95f0, 0x95f1, 0x95f2, 0x95f3, 0x95f4, 0x95f5, 0x95f6, 0x95f7,
+ 0x95f8, 0x95f9, 0x95fa, 0x95fb, 0x95fc, 0x95fd, 0x95fe, 0x95ff,
+ 0x9600, 0x9601, 0x9602, 0x9603, 0x9604, 0x9605, 0x9606, 0x9607, /* 0x9600 */
+ 0x9608, 0x9609, 0x960a, 0x960b, 0x960c, 0x960d, 0x960e, 0x960f,
+ 0x9610, 0x9611, 0x9612, 0x9613, 0x9614, 0x9615, 0x9616, 0x9617,
+ 0x9618, 0x9619, 0x961a, 0x961b, 0x961c, 0x961d, 0x961e, 0x961f,
+ 0x9620, 0x9621, 0x9622, 0x9623, 0x9624, 0x9625, 0x9626, 0x9627,
+ 0x9628, 0x9629, 0x962a, 0x962b, 0x962c, 0x962d, 0x962e, 0x962f,
+ 0x9630, 0x9631, 0x9632, 0x9633, 0x9634, 0x9635, 0x9636, 0x9637,
+ 0x9638, 0x9639, 0x963a, 0x963b, 0x963c, 0x963d, 0x963e, 0x963f,
+ 0x9640, 0x9641, 0x9642, 0x9643, 0x9644, 0x9645, 0x9646, 0x9647, /* 0x9640 */
+ 0x9648, 0x9649, 0x964a, 0x964b, 0x964c, 0x964d, 0x964e, 0x964f,
+ 0x9650, 0x9651, 0x9652, 0x9653, 0x9654, 0x9655, 0x9656, 0x9657,
+ 0x9658, 0x9659, 0x965a, 0x965b, 0x965c, 0x965d, 0x965e, 0x965f,
+ 0x9660, 0x9661, 0x9662, 0x9663, 0x9664, 0x9665, 0x9666, 0x9667,
+ 0x9668, 0x9669, 0x966a, 0x966b, 0x966c, 0x966d, 0x966e, 0x966f,
+ 0x9670, 0x9671, 0x9672, 0x9673, 0x9674, 0x9675, 0x9676, 0x9677,
+ 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, 0x967e, 0x967f,
+ 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9685, 0x9686, 0x9687, /* 0x9680 */
+ 0x9688, 0x9689, 0x968a, 0x968b, 0x968c, 0x968d, 0x968e, 0x968f,
+ 0x9690, 0x9691, 0x9692, 0x9693, 0x9694, 0x9695, 0x9696, 0x9697,
+ 0x9698, 0x9699, 0x969a, 0x969b, 0x969c, 0x969d, 0x969e, 0x969f,
+ 0x96a0, 0x96a1, 0x96a2, 0x96a3, 0x96a4, 0x96a5, 0x96a6, 0x96a7,
+ 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac, 0x96ad, 0x96ae, 0x96af,
+ 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4, 0x96b5, 0x96b6, 0x96b7,
+ 0x96b8, 0x96b9, 0x96ba, 0x96bb, 0x96bc, 0x96bd, 0x96be, 0x96bf,
+ 0x96c0, 0x96c1, 0x96c2, 0x96c3, 0x96c4, 0x96c5, 0x96c6, 0x96c7, /* 0x96c0 */
+ 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc, 0x96cd, 0x96ce, 0x96cf,
+ 0x96d0, 0x96d1, 0x96d2, 0x96d3, 0x96d4, 0x96d5, 0x96d6, 0x96d7,
+ 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96de, 0x96df,
+ 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4, 0x96e5, 0x96e6, 0x96e7,
+ 0x96e8, 0x96e9, 0x96ea, 0x96eb, 0x96ec, 0x96ed, 0x96ee, 0x96ef,
+ 0x96f0, 0x96f1, 0x96f2, 0x96f3, 0x96f4, 0x96f5, 0x96f6, 0x96f7,
+ 0x96f8, 0x96f9, 0x96fa, 0x96fb, 0x96fc, 0x96fd, 0x96fe, 0x96ff,
+ 0x9700, 0x9701, 0x9702, 0x9703, 0x9704, 0x9705, 0x9706, 0x9707, /* 0x9700 */
+ 0x9708, 0x9709, 0x970a, 0x970b, 0x970c, 0x970d, 0x970e, 0x970f,
+ 0x9710, 0x9711, 0x9712, 0x9713, 0x9714, 0x9715, 0x9716, 0x9717,
+ 0x9718, 0x9719, 0x971a, 0x971b, 0x971c, 0x971d, 0x971e, 0x971f,
+ 0x9720, 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727,
+ 0x9728, 0x9729, 0x972a, 0x972b, 0x972c, 0x972d, 0x972e, 0x972f,
+ 0x9730, 0x9731, 0x9732, 0x9733, 0x9734, 0x9735, 0x9736, 0x9737,
+ 0x9738, 0x9739, 0x973a, 0x973b, 0x973c, 0x973d, 0x973e, 0x973f,
+ 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747, /* 0x9740 */
+ 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f,
+ 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755, 0x9756, 0x9757,
+ 0x9758, 0x9759, 0x975a, 0x975b, 0x975c, 0x975d, 0x975e, 0x975f,
+ 0x9760, 0x9761, 0x9762, 0x9763, 0x9764, 0x9765, 0x9766, 0x9767,
+ 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d, 0x976e, 0x976f,
+ 0x9770, 0x9771, 0x9772, 0x9773, 0x9774, 0x9775, 0x9776, 0x9777,
+ 0x9778, 0x9779, 0x977a, 0x977b, 0x977c, 0x977d, 0x977e, 0x977f,
+ 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786, 0x9787, /* 0x9780 */
+ 0x9788, 0x9789, 0x978a, 0x978b, 0x978c, 0x978d, 0x978e, 0x978f,
+ 0x9790, 0x9791, 0x9792, 0x9793, 0x9794, 0x9795, 0x9796, 0x9797,
+ 0x9798, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d, 0x979e, 0x979f,
+ 0x97a0, 0x97a1, 0x97a2, 0x97a3, 0x97a4, 0x97a5, 0x97a6, 0x97a7,
+ 0x97a8, 0x97a9, 0x97aa, 0x97ab, 0x97ac, 0x97ad, 0x97ae, 0x97af,
+ 0x97b0, 0x97b1, 0x97b2, 0x97b3, 0x97b4, 0x97b5, 0x97b6, 0x97b7,
+ 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, 0x97be, 0x97bf,
+ 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, 0x97c6, 0x97c7, /* 0x97c0 */
+ 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0x97cd, 0x97ce, 0x97cf,
+ 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7,
+ 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc, 0x97dd, 0x97de, 0x97df,
+ 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4, 0x97e5, 0x97e6, 0x97e7,
+ 0x97e8, 0x97e9, 0x97ea, 0x97eb, 0x97ec, 0x97ed, 0x97ee, 0x97ef,
+ 0x97f0, 0x97f1, 0x97f2, 0x97f3, 0x97f4, 0x97f5, 0x97f6, 0x97f7,
+ 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe, 0x97ff,
+ 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 0x9806, 0x9807, /* 0x9800 */
+ 0x9808, 0x9809, 0x980a, 0x980b, 0x980c, 0x980d, 0x980e, 0x980f,
+ 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816, 0x9817,
+ 0x9818, 0x9819, 0x981a, 0x981b, 0x981c, 0x981d, 0x981e, 0x981f,
+ 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826, 0x9827,
+ 0x9828, 0x9829, 0x982a, 0x982b, 0x982c, 0x982d, 0x982e, 0x982f,
+ 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, 0x9837,
+ 0x9838, 0x9839, 0x983a, 0x983b, 0x983c, 0x983d, 0x983e, 0x983f,
+ 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, /* 0x9840 */
+ 0x9848, 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e, 0x984f,
+ 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857,
+ 0x9858, 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e, 0x985f,
+ 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867,
+ 0x9868, 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f,
+ 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x9875, 0x9876, 0x9877,
+ 0x9878, 0x9879, 0x987a, 0x987b, 0x987c, 0x987d, 0x987e, 0x987f,
+ 0x9880, 0x9881, 0x9882, 0x9883, 0x9884, 0x9885, 0x9886, 0x9887, /* 0x9880 */
+ 0x9888, 0x9889, 0x988a, 0x988b, 0x988c, 0x988d, 0x988e, 0x988f,
+ 0x9890, 0x9891, 0x9892, 0x9893, 0x9894, 0x9895, 0x9896, 0x9897,
+ 0x9898, 0x9899, 0x989a, 0x989b, 0x989c, 0x989d, 0x989e, 0x989f,
+ 0x98a0, 0x98a1, 0x98a2, 0x98a3, 0x98a4, 0x98a5, 0x98a6, 0x98a7,
+ 0x98a8, 0x98a9, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af,
+ 0x98b0, 0x98b1, 0x98b2, 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7,
+ 0x98b8, 0x98b9, 0x98ba, 0x98bb, 0x98bc, 0x98bd, 0x98be, 0x98bf,
+ 0x98c0, 0x98c1, 0x98c2, 0x98c3, 0x98c4, 0x98c5, 0x98c6, 0x98c7, /* 0x98c0 */
+ 0x98c8, 0x98c9, 0x98ca, 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf,
+ 0x98d0, 0x98d1, 0x98d2, 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7,
+ 0x98d8, 0x98d9, 0x98da, 0x98db, 0x98dc, 0x98dd, 0x98de, 0x98df,
+ 0x98e0, 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7,
+ 0x98e8, 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef,
+ 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7,
+ 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x98ff,
+ 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906, 0x9907, /* 0x9900 */
+ 0x9908, 0x9909, 0x990a, 0x990b, 0x990c, 0x990d, 0x990e, 0x990f,
+ 0x9910, 0x9911, 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917,
+ 0x9918, 0x9919, 0x991a, 0x991b, 0x991c, 0x991d, 0x991e, 0x991f,
+ 0x9920, 0x9921, 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927,
+ 0x9928, 0x9929, 0x992a, 0x992b, 0x992c, 0x992d, 0x992e, 0x992f,
+ 0x9930, 0x9931, 0x9932, 0x9933, 0x9934, 0x9935, 0x9936, 0x9937,
+ 0x9938, 0x9939, 0x993a, 0x993b, 0x993c, 0x993d, 0x993e, 0x993f,
+ 0x9940, 0x9941, 0x9942, 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, /* 0x9940 */
+ 0x9948, 0x9949, 0x994a, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f,
+ 0x9950, 0x9951, 0x9952, 0x9953, 0x9954, 0x9955, 0x9956, 0x9957,
+ 0x9958, 0x9959, 0x995a, 0x995b, 0x995c, 0x995d, 0x995e, 0x995f,
+ 0x9960, 0x9961, 0x9962, 0x9963, 0x9964, 0x9965, 0x9966, 0x9967,
+ 0x9968, 0x9969, 0x996a, 0x996b, 0x996c, 0x996d, 0x996e, 0x996f,
+ 0x9970, 0x9971, 0x9972, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977,
+ 0x9978, 0x9979, 0x997a, 0x997b, 0x997c, 0x997d, 0x997e, 0x997f,
+ 0x9980, 0x9981, 0x9982, 0x9983, 0x9984, 0x9985, 0x9986, 0x9987, /* 0x9980 */
+ 0x9988, 0x9989, 0x998a, 0x998b, 0x998c, 0x998d, 0x998e, 0x998f,
+ 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995, 0x9996, 0x9997,
+ 0x9998, 0x9999, 0x999a, 0x999b, 0x999c, 0x999d, 0x999e, 0x999f,
+ 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5, 0x99a6, 0x99a7,
+ 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af,
+ 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7,
+ 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99be, 0x99bf,
+ 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5, 0x99c6, 0x99c7, /* 0x99c0 */
+ 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd, 0x99ce, 0x99cf,
+ 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5, 0x99d6, 0x99d7,
+ 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, 0x99de, 0x99df,
+ 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7,
+ 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef,
+ 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7,
+ 0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x99ff,
+ 0x9a00, 0x9a01, 0x9a02, 0x9a03, 0x9a04, 0x9a05, 0x9a06, 0x9a07, /* 0x9a00 */
+ 0x9a08, 0x9a09, 0x9a0a, 0x9a0b, 0x9a0c, 0x9a0d, 0x9a0e, 0x9a0f,
+ 0x9a10, 0x9a11, 0x9a12, 0x9a13, 0x9a14, 0x9a15, 0x9a16, 0x9a17,
+ 0x9a18, 0x9a19, 0x9a1a, 0x9a1b, 0x9a1c, 0x9a1d, 0x9a1e, 0x9a1f,
+ 0x9a20, 0x9a21, 0x9a22, 0x9a23, 0x9a24, 0x9a25, 0x9a26, 0x9a27,
+ 0x9a28, 0x9a29, 0x9a2a, 0x9a2b, 0x9a2c, 0x9a2d, 0x9a2e, 0x9a2f,
+ 0x9a30, 0x9a31, 0x9a32, 0x9a33, 0x9a34, 0x9a35, 0x9a36, 0x9a37,
+ 0x9a38, 0x9a39, 0x9a3a, 0x9a3b, 0x9a3c, 0x9a3d, 0x9a3e, 0x9a3f,
+ 0x9a40, 0x9a41, 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0x9a47, /* 0x9a40 */
+ 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e, 0x9a4f,
+ 0x9a50, 0x9a51, 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56, 0x9a57,
+ 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, 0x9a5f,
+ 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67,
+ 0x9a68, 0x9a69, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e, 0x9a6f,
+ 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76, 0x9a77,
+ 0x9a78, 0x9a79, 0x9a7a, 0x9a7b, 0x9a7c, 0x9a7d, 0x9a7e, 0x9a7f,
+ 0x9a80, 0x9a81, 0x9a82, 0x9a83, 0x9a84, 0x9a85, 0x9a86, 0x9a87, /* 0x9a80 */
+ 0x9a88, 0x9a89, 0x9a8a, 0x9a8b, 0x9a8c, 0x9a8d, 0x9a8e, 0x9a8f,
+ 0x9a90, 0x9a91, 0x9a92, 0x9a93, 0x9a94, 0x9a95, 0x9a96, 0x9a97,
+ 0x9a98, 0x9a99, 0x9a9a, 0x9a9b, 0x9a9c, 0x9a9d, 0x9a9e, 0x9a9f,
+ 0x9aa0, 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0x9aa7,
+ 0x9aa8, 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf,
+ 0x9ab0, 0x9ab1, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab7,
+ 0x9ab8, 0x9ab9, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf,
+ 0x9ac0, 0x9ac1, 0x9ac2, 0x9ac3, 0x9ac4, 0x9ac5, 0x9ac6, 0x9ac7, /* 0x9ac0 */
+ 0x9ac8, 0x9ac9, 0x9aca, 0x9acb, 0x9acc, 0x9acd, 0x9ace, 0x9acf,
+ 0x9ad0, 0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0x9ad6, 0x9ad7,
+ 0x9ad8, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add, 0x9ade, 0x9adf,
+ 0x9ae0, 0x9ae1, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae6, 0x9ae7,
+ 0x9ae8, 0x9ae9, 0x9aea, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0x9aef,
+ 0x9af0, 0x9af1, 0x9af2, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7,
+ 0x9af8, 0x9af9, 0x9afa, 0x9afb, 0x9afc, 0x9afd, 0x9afe, 0x9aff,
+ 0x9b00, 0x9b01, 0x9b02, 0x9b03, 0x9b04, 0x9b05, 0x9b06, 0x9b07, /* 0x9b00 */
+ 0x9b08, 0x9b09, 0x9b0a, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b0f,
+ 0x9b10, 0x9b11, 0x9b12, 0x9b13, 0x9b14, 0x9b15, 0x9b16, 0x9b17,
+ 0x9b18, 0x9b19, 0x9b1a, 0x9b1b, 0x9b1c, 0x9b1d, 0x9b1e, 0x9b1f,
+ 0x9b20, 0x9b21, 0x9b22, 0x9b23, 0x9b24, 0x9b25, 0x9b26, 0x9b27,
+ 0x9b28, 0x9b29, 0x9b2a, 0x9b2b, 0x9b2c, 0x9b2d, 0x9b2e, 0x9b2f,
+ 0x9b30, 0x9b31, 0x9b32, 0x9b33, 0x9b34, 0x9b35, 0x9b36, 0x9b37,
+ 0x9b38, 0x9b39, 0x9b3a, 0x9b3b, 0x9b3c, 0x9b3d, 0x9b3e, 0x9b3f,
+ 0x9b40, 0x9b41, 0x9b42, 0x9b43, 0x9b44, 0x9b45, 0x9b46, 0x9b47, /* 0x9b40 */
+ 0x9b48, 0x9b49, 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4d, 0x9b4e, 0x9b4f,
+ 0x9b50, 0x9b51, 0x9b52, 0x9b53, 0x9b54, 0x9b55, 0x9b56, 0x9b57,
+ 0x9b58, 0x9b59, 0x9b5a, 0x9b5b, 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f,
+ 0x9b60, 0x9b61, 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67,
+ 0x9b68, 0x9b69, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f,
+ 0x9b70, 0x9b71, 0x9b72, 0x9b73, 0x9b74, 0x9b75, 0x9b76, 0x9b77,
+ 0x9b78, 0x9b79, 0x9b7a, 0x9b7b, 0x9b7c, 0x9b7d, 0x9b7e, 0x9b7f,
+ 0x9b80, 0x9b81, 0x9b82, 0x9b83, 0x9b84, 0x9b85, 0x9b86, 0x9b87, /* 0x9b80 */
+ 0x9b88, 0x9b89, 0x9b8a, 0x9b8b, 0x9b8c, 0x9b8d, 0x9b8e, 0x9b8f,
+ 0x9b90, 0x9b91, 0x9b92, 0x9b93, 0x9b94, 0x9b95, 0x9b96, 0x9b97,
+ 0x9b98, 0x9b99, 0x9b9a, 0x9b9b, 0x9b9c, 0x9b9d, 0x9b9e, 0x9b9f,
+ 0x9ba0, 0x9ba1, 0x9ba2, 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7,
+ 0x9ba8, 0x9ba9, 0x9baa, 0x9bab, 0x9bac, 0x9bad, 0x9bae, 0x9baf,
+ 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3, 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7,
+ 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb, 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf,
+ 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3, 0x9bc4, 0x9bc5, 0x9bc6, 0x9bc7, /* 0x9bc0 */
+ 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb, 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf,
+ 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3, 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7,
+ 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb, 0x9bdc, 0x9bdd, 0x9bde, 0x9bdf,
+ 0x9be0, 0x9be1, 0x9be2, 0x9be3, 0x9be4, 0x9be5, 0x9be6, 0x9be7,
+ 0x9be8, 0x9be9, 0x9bea, 0x9beb, 0x9bec, 0x9bed, 0x9bee, 0x9bef,
+ 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3, 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7,
+ 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb, 0x9bfc, 0x9bfd, 0x9bfe, 0x9bff,
+ 0x9c00, 0x9c01, 0x9c02, 0x9c03, 0x9c04, 0x9c05, 0x9c06, 0x9c07, /* 0x9c00 */
+ 0x9c08, 0x9c09, 0x9c0a, 0x9c0b, 0x9c0c, 0x9c0d, 0x9c0e, 0x9c0f,
+ 0x9c10, 0x9c11, 0x9c12, 0x9c13, 0x9c14, 0x9c15, 0x9c16, 0x9c17,
+ 0x9c18, 0x9c19, 0x9c1a, 0x9c1b, 0x9c1c, 0x9c1d, 0x9c1e, 0x9c1f,
+ 0x9c20, 0x9c21, 0x9c22, 0x9c23, 0x9c24, 0x9c25, 0x9c26, 0x9c27,
+ 0x9c28, 0x9c29, 0x9c2a, 0x9c2b, 0x9c2c, 0x9c2d, 0x9c2e, 0x9c2f,
+ 0x9c30, 0x9c31, 0x9c32, 0x9c33, 0x9c34, 0x9c35, 0x9c36, 0x9c37,
+ 0x9c38, 0x9c39, 0x9c3a, 0x9c3b, 0x9c3c, 0x9c3d, 0x9c3e, 0x9c3f,
+ 0x9c40, 0x9c41, 0x9c42, 0x9c43, 0x9c44, 0x9c45, 0x9c46, 0x9c47, /* 0x9c40 */
+ 0x9c48, 0x9c49, 0x9c4a, 0x9c4b, 0x9c4c, 0x9c4d, 0x9c4e, 0x9c4f,
+ 0x9c50, 0x9c51, 0x9c52, 0x9c53, 0x9c54, 0x9c55, 0x9c56, 0x9c57,
+ 0x9c58, 0x9c59, 0x9c5a, 0x9c5b, 0x9c5c, 0x9c5d, 0x9c5e, 0x9c5f,
+ 0x9c60, 0x9c61, 0x9c62, 0x9c63, 0x9c64, 0x9c65, 0x9c66, 0x9c67,
+ 0x9c68, 0x9c69, 0x9c6a, 0x9c6b, 0x9c6c, 0x9c6d, 0x9c6e, 0x9c6f,
+ 0x9c70, 0x9c71, 0x9c72, 0x9c73, 0x9c74, 0x9c75, 0x9c76, 0x9c77,
+ 0x9c78, 0x9c79, 0x9c7a, 0x9c7b, 0x9c7c, 0x9c7d, 0x9c7e, 0x9c7f,
+ 0x9c80, 0x9c81, 0x9c82, 0x9c83, 0x9c84, 0x9c85, 0x9c86, 0x9c87, /* 0x9c80 */
+ 0x9c88, 0x9c89, 0x9c8a, 0x9c8b, 0x9c8c, 0x9c8d, 0x9c8e, 0x9c8f,
+ 0x9c90, 0x9c91, 0x9c92, 0x9c93, 0x9c94, 0x9c95, 0x9c96, 0x9c97,
+ 0x9c98, 0x9c99, 0x9c9a, 0x9c9b, 0x9c9c, 0x9c9d, 0x9c9e, 0x9c9f,
+ 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, 0x9ca6, 0x9ca7,
+ 0x9ca8, 0x9ca9, 0x9caa, 0x9cab, 0x9cac, 0x9cad, 0x9cae, 0x9caf,
+ 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7,
+ 0x9cb8, 0x9cb9, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd, 0x9cbe, 0x9cbf,
+ 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, /* 0x9cc0 */
+ 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf,
+ 0x9cd0, 0x9cd1, 0x9cd2, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6, 0x9cd7,
+ 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0x9cdc, 0x9cdd, 0x9cde, 0x9cdf,
+ 0x9ce0, 0x9ce1, 0x9ce2, 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6, 0x9ce7,
+ 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec, 0x9ced, 0x9cee, 0x9cef,
+ 0x9cf0, 0x9cf1, 0x9cf2, 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6, 0x9cf7,
+ 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9cff,
+ 0x9d00, 0x9d01, 0x9d02, 0x9d03, 0x9d04, 0x9d05, 0x9d06, 0x9d07, /* 0x9d00 */
+ 0x9d08, 0x9d09, 0x9d0a, 0x9d0b, 0x9d0c, 0x9d0d, 0x9d0e, 0x9d0f,
+ 0x9d10, 0x9d11, 0x9d12, 0x9d13, 0x9d14, 0x9d15, 0x9d16, 0x9d17,
+ 0x9d18, 0x9d19, 0x9d1a, 0x9d1b, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d1f,
+ 0x9d20, 0x9d21, 0x9d22, 0x9d23, 0x9d24, 0x9d25, 0x9d26, 0x9d27,
+ 0x9d28, 0x9d29, 0x9d2a, 0x9d2b, 0x9d2c, 0x9d2d, 0x9d2e, 0x9d2f,
+ 0x9d30, 0x9d31, 0x9d32, 0x9d33, 0x9d34, 0x9d35, 0x9d36, 0x9d37,
+ 0x9d38, 0x9d39, 0x9d3a, 0x9d3b, 0x9d3c, 0x9d3d, 0x9d3e, 0x9d3f,
+ 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, /* 0x9d40 */
+ 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f,
+ 0x9d50, 0x9d51, 0x9d52, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57,
+ 0x9d58, 0x9d59, 0x9d5a, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f,
+ 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67,
+ 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f,
+ 0x9d70, 0x9d71, 0x9d72, 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77,
+ 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9d7f,
+ 0x9d80, 0x9d81, 0x9d82, 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, /* 0x9d80 */
+ 0x9d88, 0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f,
+ 0x9d90, 0x9d91, 0x9d92, 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97,
+ 0x9d98, 0x9d99, 0x9d9a, 0x9d9b, 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f,
+ 0x9da0, 0x9da1, 0x9da2, 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7,
+ 0x9da8, 0x9da9, 0x9daa, 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf,
+ 0x9db0, 0x9db1, 0x9db2, 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7,
+ 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf,
+ 0x9dc0, 0x9dc1, 0x9dc2, 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, /* 0x9dc0 */
+ 0x9dc8, 0x9dc9, 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf,
+ 0x9dd0, 0x9dd1, 0x9dd2, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7,
+ 0x9dd8, 0x9dd9, 0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf,
+ 0x9de0, 0x9de1, 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7,
+ 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def,
+ 0x9df0, 0x9df1, 0x9df2, 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7,
+ 0x9df8, 0x9df9, 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9dff,
+ 0x9e00, 0x9e01, 0x9e02, 0x9e03, 0x9e04, 0x9e05, 0x9e06, 0x9e07, /* 0x9e00 */
+ 0x9e08, 0x9e09, 0x9e0a, 0x9e0b, 0x9e0c, 0x9e0d, 0x9e0e, 0x9e0f,
+ 0x9e10, 0x9e11, 0x9e12, 0x9e13, 0x9e14, 0x9e15, 0x9e16, 0x9e17,
+ 0x9e18, 0x9e19, 0x9e1a, 0x9e1b, 0x9e1c, 0x9e1d, 0x9e1e, 0x9e1f,
+ 0x9e20, 0x9e21, 0x9e22, 0x9e23, 0x9e24, 0x9e25, 0x9e26, 0x9e27,
+ 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e2d, 0x9e2e, 0x9e2f,
+ 0x9e30, 0x9e31, 0x9e32, 0x9e33, 0x9e34, 0x9e35, 0x9e36, 0x9e37,
+ 0x9e38, 0x9e39, 0x9e3a, 0x9e3b, 0x9e3c, 0x9e3d, 0x9e3e, 0x9e3f,
+ 0x9e40, 0x9e41, 0x9e42, 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, /* 0x9e40 */
+ 0x9e48, 0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f,
+ 0x9e50, 0x9e51, 0x9e52, 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57,
+ 0x9e58, 0x9e59, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f,
+ 0x9e60, 0x9e61, 0x9e62, 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67,
+ 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, 0x9e6f,
+ 0x9e70, 0x9e71, 0x9e72, 0x9e73, 0x9e74, 0x9e75, 0x9e76, 0x9e77,
+ 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, 0x9e7e, 0x9e7f,
+ 0x9e80, 0x9e81, 0x9e82, 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e87, /* 0x9e80 */
+ 0x9e88, 0x9e89, 0x9e8a, 0x9e8b, 0x9e8c, 0x9e8d, 0x9e8e, 0x9e8f,
+ 0x9e90, 0x9e91, 0x9e92, 0x9e93, 0x9e94, 0x9e95, 0x9e96, 0x9e97,
+ 0x9e98, 0x9e99, 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9d, 0x9e9e, 0x9e9f,
+ 0x9ea0, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea6, 0x9ea7,
+ 0x9ea8, 0x9ea9, 0x9eaa, 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0x9eaf,
+ 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4, 0x9eb5, 0x9eb6, 0x9eb7,
+ 0x9eb8, 0x9eb9, 0x9eba, 0x9ebb, 0x9ebc, 0x9ebd, 0x9ebe, 0x9ebf,
+ 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec4, 0x9ec5, 0x9ec6, 0x9ec7, /* 0x9ec0 */
+ 0x9ec8, 0x9ec9, 0x9eca, 0x9ecb, 0x9ecc, 0x9ecd, 0x9ece, 0x9ecf,
+ 0x9ed0, 0x9ed1, 0x9ed2, 0x9ed3, 0x9ed4, 0x9ed5, 0x9ed6, 0x9ed7,
+ 0x9ed8, 0x9ed9, 0x9eda, 0x9edb, 0x9edc, 0x9edd, 0x9ede, 0x9edf,
+ 0x9ee0, 0x9ee1, 0x9ee2, 0x9ee3, 0x9ee4, 0x9ee5, 0x9ee6, 0x9ee7,
+ 0x9ee8, 0x9ee9, 0x9eea, 0x9eeb, 0x9eec, 0x9eed, 0x9eee, 0x9eef,
+ 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4, 0x9ef5, 0x9ef6, 0x9ef7,
+ 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc, 0x9efd, 0x9efe, 0x9eff,
+ 0x9f00, 0x9f01, 0x9f02, 0x9f03, 0x9f04, 0x9f05, 0x9f06, 0x9f07, /* 0x9f00 */
+ 0x9f08, 0x9f09, 0x9f0a, 0x9f0b, 0x9f0c, 0x9f0d, 0x9f0e, 0x9f0f,
+ 0x9f10, 0x9f11, 0x9f12, 0x9f13, 0x9f14, 0x9f15, 0x9f16, 0x9f17,
+ 0x9f18, 0x9f19, 0x9f1a, 0x9f1b, 0x9f1c, 0x9f1d, 0x9f1e, 0x9f1f,
+ 0x9f20, 0x9f21, 0x9f22, 0x9f23, 0x9f24, 0x9f25, 0x9f26, 0x9f27,
+ 0x9f28, 0x9f29, 0x9f2a, 0x9f2b, 0x9f2c, 0x9f2d, 0x9f2e, 0x9f2f,
+ 0x9f30, 0x9f31, 0x9f32, 0x9f33, 0x9f34, 0x9f35, 0x9f36, 0x9f37,
+ 0x9f38, 0x9f39, 0x9f3a, 0x9f3b, 0x9f3c, 0x9f3d, 0x9f3e, 0x9f3f,
+ 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0x9f47, /* 0x9f40 */
+ 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f,
+ 0x9f50, 0x9f51, 0x9f52, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57,
+ 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, 0x9f5f,
+ 0x9f60, 0x9f61, 0x9f62, 0x9f63, 0x9f64, 0x9f65, 0x9f66, 0x9f67,
+ 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, 0x9f6e, 0x9f6f,
+ 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0x9f74, 0x9f75, 0x9f76, 0x9f77,
+ 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f7f,
+ 0x9f80, 0x9f81, 0x9f82, 0x9f83, 0x9f84, 0x9f85, 0x9f86, 0x9f87, /* 0x9f80 */
+ 0x9f88, 0x9f89, 0x9f8a, 0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0x9f8f,
+ 0x9f90, 0x9f91, 0x9f92, 0x9f93, 0x9f94, 0x9f95, 0x9f96, 0x9f97,
+ 0x9f98, 0x9f99, 0x9f9a, 0x9f9b, 0x9f9c, 0x9f9d, 0x9f9e, 0x9f9f,
+ 0x9fa0, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7,
+ 0x9fa8, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0x9fae, 0x9faf,
+ 0x9fb0, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4, 0x9fb5, 0x9fb6, 0x9fb7,
+ 0x9fb8, 0x9fb9, 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0x9fbe, 0x9fbf,
+ 0x9fc0, 0x9fc1, 0x9fc2, 0x9fc3, 0x9fc4, 0x9fc5, 0x9fc6, 0x9fc7, /* 0x9fc0 */
+ 0x9fc8, 0x9fc9, 0x9fca, 0x9fcb, 0x9fcc, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa000, 0xa001, 0xa002, 0xa003, 0xa004, 0xa005, 0xa006, 0xa007, /* 0xa000 */
+ 0xa008, 0xa009, 0xa00a, 0xa00b, 0xa00c, 0xa00d, 0xa00e, 0xa00f,
+ 0xa010, 0xa011, 0xa012, 0xa013, 0xa014, 0xa015, 0xa016, 0xa017,
+ 0xa018, 0xa019, 0xa01a, 0xa01b, 0xa01c, 0xa01d, 0xa01e, 0xa01f,
+ 0xa020, 0xa021, 0xa022, 0xa023, 0xa024, 0xa025, 0xa026, 0xa027,
+ 0xa028, 0xa029, 0xa02a, 0xa02b, 0xa02c, 0xa02d, 0xa02e, 0xa02f,
+ 0xa030, 0xa031, 0xa032, 0xa033, 0xa034, 0xa035, 0xa036, 0xa037,
+ 0xa038, 0xa039, 0xa03a, 0xa03b, 0xa03c, 0xa03d, 0xa03e, 0xa03f,
+ 0xa040, 0xa041, 0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, /* 0xa040 */
+ 0xa048, 0xa049, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xa04e, 0xa04f,
+ 0xa050, 0xa051, 0xa052, 0xa053, 0xa054, 0xa055, 0xa056, 0xa057,
+ 0xa058, 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d, 0xa05e, 0xa05f,
+ 0xa060, 0xa061, 0xa062, 0xa063, 0xa064, 0xa065, 0xa066, 0xa067,
+ 0xa068, 0xa069, 0xa06a, 0xa06b, 0xa06c, 0xa06d, 0xa06e, 0xa06f,
+ 0xa070, 0xa071, 0xa072, 0xa073, 0xa074, 0xa075, 0xa076, 0xa077,
+ 0xa078, 0xa079, 0xa07a, 0xa07b, 0xa07c, 0xa07d, 0xa07e, 0xa07f,
+ 0xa080, 0xa081, 0xa082, 0xa083, 0xa084, 0xa085, 0xa086, 0xa087, /* 0xa080 */
+ 0xa088, 0xa089, 0xa08a, 0xa08b, 0xa08c, 0xa08d, 0xa08e, 0xa08f,
+ 0xa090, 0xa091, 0xa092, 0xa093, 0xa094, 0xa095, 0xa096, 0xa097,
+ 0xa098, 0xa099, 0xa09a, 0xa09b, 0xa09c, 0xa09d, 0xa09e, 0xa09f,
+ 0xa0a0, 0xa0a1, 0xa0a2, 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a6, 0xa0a7,
+ 0xa0a8, 0xa0a9, 0xa0aa, 0xa0ab, 0xa0ac, 0xa0ad, 0xa0ae, 0xa0af,
+ 0xa0b0, 0xa0b1, 0xa0b2, 0xa0b3, 0xa0b4, 0xa0b5, 0xa0b6, 0xa0b7,
+ 0xa0b8, 0xa0b9, 0xa0ba, 0xa0bb, 0xa0bc, 0xa0bd, 0xa0be, 0xa0bf,
+ 0xa0c0, 0xa0c1, 0xa0c2, 0xa0c3, 0xa0c4, 0xa0c5, 0xa0c6, 0xa0c7, /* 0xa0c0 */
+ 0xa0c8, 0xa0c9, 0xa0ca, 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf,
+ 0xa0d0, 0xa0d1, 0xa0d2, 0xa0d3, 0xa0d4, 0xa0d5, 0xa0d6, 0xa0d7,
+ 0xa0d8, 0xa0d9, 0xa0da, 0xa0db, 0xa0dc, 0xa0dd, 0xa0de, 0xa0df,
+ 0xa0e0, 0xa0e1, 0xa0e2, 0xa0e3, 0xa0e4, 0xa0e5, 0xa0e6, 0xa0e7,
+ 0xa0e8, 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, 0xa0ef,
+ 0xa0f0, 0xa0f1, 0xa0f2, 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, 0xa0f7,
+ 0xa0f8, 0xa0f9, 0xa0fa, 0xa0fb, 0xa0fc, 0xa0fd, 0xa0fe, 0xa0ff,
+ 0xa100, 0xa101, 0xa102, 0xa103, 0xa104, 0xa105, 0xa106, 0xa107, /* 0xa100 */
+ 0xa108, 0xa109, 0xa10a, 0xa10b, 0xa10c, 0xa10d, 0xa10e, 0xa10f,
+ 0xa110, 0xa111, 0xa112, 0xa113, 0xa114, 0xa115, 0xa116, 0xa117,
+ 0xa118, 0xa119, 0xa11a, 0xa11b, 0xa11c, 0xa11d, 0xa11e, 0xa11f,
+ 0xa120, 0xa121, 0xa122, 0xa123, 0xa124, 0xa125, 0xa126, 0xa127,
+ 0xa128, 0xa129, 0xa12a, 0xa12b, 0xa12c, 0xa12d, 0xa12e, 0xa12f,
+ 0xa130, 0xa131, 0xa132, 0xa133, 0xa134, 0xa135, 0xa136, 0xa137,
+ 0xa138, 0xa139, 0xa13a, 0xa13b, 0xa13c, 0xa13d, 0xa13e, 0xa13f,
+ 0xa140, 0xa141, 0xa142, 0xa143, 0xa144, 0xa145, 0xa146, 0xa147, /* 0xa140 */
+ 0xa148, 0xa149, 0xa14a, 0xa14b, 0xa14c, 0xa14d, 0xa14e, 0xa14f,
+ 0xa150, 0xa151, 0xa152, 0xa153, 0xa154, 0xa155, 0xa156, 0xa157,
+ 0xa158, 0xa159, 0xa15a, 0xa15b, 0xa15c, 0xa15d, 0xa15e, 0xa15f,
+ 0xa160, 0xa161, 0xa162, 0xa163, 0xa164, 0xa165, 0xa166, 0xa167,
+ 0xa168, 0xa169, 0xa16a, 0xa16b, 0xa16c, 0xa16d, 0xa16e, 0xa16f,
+ 0xa170, 0xa171, 0xa172, 0xa173, 0xa174, 0xa175, 0xa176, 0xa177,
+ 0xa178, 0xa179, 0xa17a, 0xa17b, 0xa17c, 0xa17d, 0xa17e, 0xa17f,
+ 0xa180, 0xa181, 0xa182, 0xa183, 0xa184, 0xa185, 0xa186, 0xa187, /* 0xa180 */
+ 0xa188, 0xa189, 0xa18a, 0xa18b, 0xa18c, 0xa18d, 0xa18e, 0xa18f,
+ 0xa190, 0xa191, 0xa192, 0xa193, 0xa194, 0xa195, 0xa196, 0xa197,
+ 0xa198, 0xa199, 0xa19a, 0xa19b, 0xa19c, 0xa19d, 0xa19e, 0xa19f,
+ 0xa1a0, 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1a5, 0xa1a6, 0xa1a7,
+ 0xa1a8, 0xa1a9, 0xa1aa, 0xa1ab, 0xa1ac, 0xa1ad, 0xa1ae, 0xa1af,
+ 0xa1b0, 0xa1b1, 0xa1b2, 0xa1b3, 0xa1b4, 0xa1b5, 0xa1b6, 0xa1b7,
+ 0xa1b8, 0xa1b9, 0xa1ba, 0xa1bb, 0xa1bc, 0xa1bd, 0xa1be, 0xa1bf,
+ 0xa1c0, 0xa1c1, 0xa1c2, 0xa1c3, 0xa1c4, 0xa1c5, 0xa1c6, 0xa1c7, /* 0xa1c0 */
+ 0xa1c8, 0xa1c9, 0xa1ca, 0xa1cb, 0xa1cc, 0xa1cd, 0xa1ce, 0xa1cf,
+ 0xa1d0, 0xa1d1, 0xa1d2, 0xa1d3, 0xa1d4, 0xa1d5, 0xa1d6, 0xa1d7,
+ 0xa1d8, 0xa1d9, 0xa1da, 0xa1db, 0xa1dc, 0xa1dd, 0xa1de, 0xa1df,
+ 0xa1e0, 0xa1e1, 0xa1e2, 0xa1e3, 0xa1e4, 0xa1e5, 0xa1e6, 0xa1e7,
+ 0xa1e8, 0xa1e9, 0xa1ea, 0xa1eb, 0xa1ec, 0xa1ed, 0xa1ee, 0xa1ef,
+ 0xa1f0, 0xa1f1, 0xa1f2, 0xa1f3, 0xa1f4, 0xa1f5, 0xa1f6, 0xa1f7,
+ 0xa1f8, 0xa1f9, 0xa1fa, 0xa1fb, 0xa1fc, 0xa1fd, 0xa1fe, 0xa1ff,
+ 0xa200, 0xa201, 0xa202, 0xa203, 0xa204, 0xa205, 0xa206, 0xa207, /* 0xa200 */
+ 0xa208, 0xa209, 0xa20a, 0xa20b, 0xa20c, 0xa20d, 0xa20e, 0xa20f,
+ 0xa210, 0xa211, 0xa212, 0xa213, 0xa214, 0xa215, 0xa216, 0xa217,
+ 0xa218, 0xa219, 0xa21a, 0xa21b, 0xa21c, 0xa21d, 0xa21e, 0xa21f,
+ 0xa220, 0xa221, 0xa222, 0xa223, 0xa224, 0xa225, 0xa226, 0xa227,
+ 0xa228, 0xa229, 0xa22a, 0xa22b, 0xa22c, 0xa22d, 0xa22e, 0xa22f,
+ 0xa230, 0xa231, 0xa232, 0xa233, 0xa234, 0xa235, 0xa236, 0xa237,
+ 0xa238, 0xa239, 0xa23a, 0xa23b, 0xa23c, 0xa23d, 0xa23e, 0xa23f,
+ 0xa240, 0xa241, 0xa242, 0xa243, 0xa244, 0xa245, 0xa246, 0xa247, /* 0xa240 */
+ 0xa248, 0xa249, 0xa24a, 0xa24b, 0xa24c, 0xa24d, 0xa24e, 0xa24f,
+ 0xa250, 0xa251, 0xa252, 0xa253, 0xa254, 0xa255, 0xa256, 0xa257,
+ 0xa258, 0xa259, 0xa25a, 0xa25b, 0xa25c, 0xa25d, 0xa25e, 0xa25f,
+ 0xa260, 0xa261, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266, 0xa267,
+ 0xa268, 0xa269, 0xa26a, 0xa26b, 0xa26c, 0xa26d, 0xa26e, 0xa26f,
+ 0xa270, 0xa271, 0xa272, 0xa273, 0xa274, 0xa275, 0xa276, 0xa277,
+ 0xa278, 0xa279, 0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa27e, 0xa27f,
+ 0xa280, 0xa281, 0xa282, 0xa283, 0xa284, 0xa285, 0xa286, 0xa287, /* 0xa280 */
+ 0xa288, 0xa289, 0xa28a, 0xa28b, 0xa28c, 0xa28d, 0xa28e, 0xa28f,
+ 0xa290, 0xa291, 0xa292, 0xa293, 0xa294, 0xa295, 0xa296, 0xa297,
+ 0xa298, 0xa299, 0xa29a, 0xa29b, 0xa29c, 0xa29d, 0xa29e, 0xa29f,
+ 0xa2a0, 0xa2a1, 0xa2a2, 0xa2a3, 0xa2a4, 0xa2a5, 0xa2a6, 0xa2a7,
+ 0xa2a8, 0xa2a9, 0xa2aa, 0xa2ab, 0xa2ac, 0xa2ad, 0xa2ae, 0xa2af,
+ 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7,
+ 0xa2b8, 0xa2b9, 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf,
+ 0xa2c0, 0xa2c1, 0xa2c2, 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, /* 0xa2c0 */
+ 0xa2c8, 0xa2c9, 0xa2ca, 0xa2cb, 0xa2cc, 0xa2cd, 0xa2ce, 0xa2cf,
+ 0xa2d0, 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7,
+ 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df,
+ 0xa2e0, 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7,
+ 0xa2e8, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef,
+ 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7,
+ 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa2ff,
+ 0xa300, 0xa301, 0xa302, 0xa303, 0xa304, 0xa305, 0xa306, 0xa307, /* 0xa300 */
+ 0xa308, 0xa309, 0xa30a, 0xa30b, 0xa30c, 0xa30d, 0xa30e, 0xa30f,
+ 0xa310, 0xa311, 0xa312, 0xa313, 0xa314, 0xa315, 0xa316, 0xa317,
+ 0xa318, 0xa319, 0xa31a, 0xa31b, 0xa31c, 0xa31d, 0xa31e, 0xa31f,
+ 0xa320, 0xa321, 0xa322, 0xa323, 0xa324, 0xa325, 0xa326, 0xa327,
+ 0xa328, 0xa329, 0xa32a, 0xa32b, 0xa32c, 0xa32d, 0xa32e, 0xa32f,
+ 0xa330, 0xa331, 0xa332, 0xa333, 0xa334, 0xa335, 0xa336, 0xa337,
+ 0xa338, 0xa339, 0xa33a, 0xa33b, 0xa33c, 0xa33d, 0xa33e, 0xa33f,
+ 0xa340, 0xa341, 0xa342, 0xa343, 0xa344, 0xa345, 0xa346, 0xa347, /* 0xa340 */
+ 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c, 0xa34d, 0xa34e, 0xa34f,
+ 0xa350, 0xa351, 0xa352, 0xa353, 0xa354, 0xa355, 0xa356, 0xa357,
+ 0xa358, 0xa359, 0xa35a, 0xa35b, 0xa35c, 0xa35d, 0xa35e, 0xa35f,
+ 0xa360, 0xa361, 0xa362, 0xa363, 0xa364, 0xa365, 0xa366, 0xa367,
+ 0xa368, 0xa369, 0xa36a, 0xa36b, 0xa36c, 0xa36d, 0xa36e, 0xa36f,
+ 0xa370, 0xa371, 0xa372, 0xa373, 0xa374, 0xa375, 0xa376, 0xa377,
+ 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e, 0xa37f,
+ 0xa380, 0xa381, 0xa382, 0xa383, 0xa384, 0xa385, 0xa386, 0xa387, /* 0xa380 */
+ 0xa388, 0xa389, 0xa38a, 0xa38b, 0xa38c, 0xa38d, 0xa38e, 0xa38f,
+ 0xa390, 0xa391, 0xa392, 0xa393, 0xa394, 0xa395, 0xa396, 0xa397,
+ 0xa398, 0xa399, 0xa39a, 0xa39b, 0xa39c, 0xa39d, 0xa39e, 0xa39f,
+ 0xa3a0, 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7,
+ 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af,
+ 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7,
+ 0xa3b8, 0xa3b9, 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa3be, 0xa3bf,
+ 0xa3c0, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7, /* 0xa3c0 */
+ 0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf,
+ 0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7,
+ 0xa3d8, 0xa3d9, 0xa3da, 0xa3db, 0xa3dc, 0xa3dd, 0xa3de, 0xa3df,
+ 0xa3e0, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7,
+ 0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef,
+ 0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7,
+ 0xa3f8, 0xa3f9, 0xa3fa, 0xa3fb, 0xa3fc, 0xa3fd, 0xa3fe, 0xa3ff,
+ 0xa400, 0xa401, 0xa402, 0xa403, 0xa404, 0xa405, 0xa406, 0xa407, /* 0xa400 */
+ 0xa408, 0xa409, 0xa40a, 0xa40b, 0xa40c, 0xa40d, 0xa40e, 0xa40f,
+ 0xa410, 0xa411, 0xa412, 0xa413, 0xa414, 0xa415, 0xa416, 0xa417,
+ 0xa418, 0xa419, 0xa41a, 0xa41b, 0xa41c, 0xa41d, 0xa41e, 0xa41f,
+ 0xa420, 0xa421, 0xa422, 0xa423, 0xa424, 0xa425, 0xa426, 0xa427,
+ 0xa428, 0xa429, 0xa42a, 0xa42b, 0xa42c, 0xa42d, 0xa42e, 0xa42f,
+ 0xa430, 0xa431, 0xa432, 0xa433, 0xa434, 0xa435, 0xa436, 0xa437,
+ 0xa438, 0xa439, 0xa43a, 0xa43b, 0xa43c, 0xa43d, 0xa43e, 0xa43f,
+ 0xa440, 0xa441, 0xa442, 0xa443, 0xa444, 0xa445, 0xa446, 0xa447, /* 0xa440 */
+ 0xa448, 0xa449, 0xa44a, 0xa44b, 0xa44c, 0xa44d, 0xa44e, 0xa44f,
+ 0xa450, 0xa451, 0xa452, 0xa453, 0xa454, 0xa455, 0xa456, 0xa457,
+ 0xa458, 0xa459, 0xa45a, 0xa45b, 0xa45c, 0xa45d, 0xa45e, 0xa45f,
+ 0xa460, 0xa461, 0xa462, 0xa463, 0xa464, 0xa465, 0xa466, 0xa467,
+ 0xa468, 0xa469, 0xa46a, 0xa46b, 0xa46c, 0xa46d, 0xa46e, 0xa46f,
+ 0xa470, 0xa471, 0xa472, 0xa473, 0xa474, 0xa475, 0xa476, 0xa477,
+ 0xa478, 0xa479, 0xa47a, 0xa47b, 0xa47c, 0xa47d, 0xa47e, 0xa47f,
+ 0xa480, 0xa481, 0xa482, 0xa483, 0xa484, 0xa485, 0xa486, 0xa487, /* 0xa480 */
+ 0xa488, 0xa489, 0xa48a, 0xa48b, 0xa48c, 0x0000, 0x0000, 0x0000,
+ 0xa490, 0xa491, 0xa492, 0xa493, 0xa494, 0xa495, 0xa496, 0xa497,
+ 0xa498, 0xa499, 0xa49a, 0xa49b, 0xa49c, 0xa49d, 0xa49e, 0xa49f,
+ 0xa4a0, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, 0xa4a5, 0xa4a6, 0xa4a7,
+ 0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4ae, 0xa4af,
+ 0xa4b0, 0xa4b1, 0xa4b2, 0xa4b3, 0xa4b4, 0xa4b5, 0xa4b6, 0xa4b7,
+ 0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, 0xa4be, 0xa4bf,
+ 0xa4c0, 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0x0000, /* 0xa4c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa4d0, 0xa4d1, 0xa4d2, 0xa4d3, 0xa4d4, 0xa4d5, 0xa4d6, 0xa4d7,
+ 0xa4d8, 0xa4d9, 0xa4da, 0xa4db, 0xa4dc, 0xa4dd, 0xa4de, 0xa4df,
+ 0xa4e0, 0xa4e1, 0xa4e2, 0xa4e3, 0xa4e4, 0xa4e5, 0xa4e6, 0xa4e7,
+ 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ed, 0xa4ee, 0xa4ef,
+ 0xa4f0, 0xa4f1, 0xa4f2, 0xa4f3, 0xa4f4, 0xa4f5, 0xa4f6, 0xa4f7,
+ 0xa4f8, 0xa4f9, 0xa4fa, 0xa4fb, 0xa4fc, 0xa4fd, 0xa4fe, 0xa4ff,
+ 0xa500, 0xa501, 0xa502, 0xa503, 0xa504, 0xa505, 0xa506, 0xa507, /* 0xa500 */
+ 0xa508, 0xa509, 0xa50a, 0xa50b, 0xa50c, 0xa50d, 0xa50e, 0xa50f,
+ 0xa510, 0xa511, 0xa512, 0xa513, 0xa514, 0xa515, 0xa516, 0xa517,
+ 0xa518, 0xa519, 0xa51a, 0xa51b, 0xa51c, 0xa51d, 0xa51e, 0xa51f,
+ 0xa520, 0xa521, 0xa522, 0xa523, 0xa524, 0xa525, 0xa526, 0xa527,
+ 0xa528, 0xa529, 0xa52a, 0xa52b, 0xa52c, 0xa52d, 0xa52e, 0xa52f,
+ 0xa530, 0xa531, 0xa532, 0xa533, 0xa534, 0xa535, 0xa536, 0xa537,
+ 0xa538, 0xa539, 0xa53a, 0xa53b, 0xa53c, 0xa53d, 0xa53e, 0xa53f,
+ 0xa540, 0xa541, 0xa542, 0xa543, 0xa544, 0xa545, 0xa546, 0xa547, /* 0xa540 */
+ 0xa548, 0xa549, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa54e, 0xa54f,
+ 0xa550, 0xa551, 0xa552, 0xa553, 0xa554, 0xa555, 0xa556, 0xa557,
+ 0xa558, 0xa559, 0xa55a, 0xa55b, 0xa55c, 0xa55d, 0xa55e, 0xa55f,
+ 0xa560, 0xa561, 0xa562, 0xa563, 0xa564, 0xa565, 0xa566, 0xa567,
+ 0xa568, 0xa569, 0xa56a, 0xa56b, 0xa56c, 0xa56d, 0xa56e, 0xa56f,
+ 0xa570, 0xa571, 0xa572, 0xa573, 0xa574, 0xa575, 0xa576, 0xa577,
+ 0xa578, 0xa579, 0xa57a, 0xa57b, 0xa57c, 0xa57d, 0xa57e, 0xa57f,
+ 0xa580, 0xa581, 0xa582, 0xa583, 0xa584, 0xa585, 0xa586, 0xa587, /* 0xa580 */
+ 0xa588, 0xa589, 0xa58a, 0xa58b, 0xa58c, 0xa58d, 0xa58e, 0xa58f,
+ 0xa590, 0xa591, 0xa592, 0xa593, 0xa594, 0xa595, 0xa596, 0xa597,
+ 0xa598, 0xa599, 0xa59a, 0xa59b, 0xa59c, 0xa59d, 0xa59e, 0xa59f,
+ 0xa5a0, 0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a5, 0xa5a6, 0xa5a7,
+ 0xa5a8, 0xa5a9, 0xa5aa, 0xa5ab, 0xa5ac, 0xa5ad, 0xa5ae, 0xa5af,
+ 0xa5b0, 0xa5b1, 0xa5b2, 0xa5b3, 0xa5b4, 0xa5b5, 0xa5b6, 0xa5b7,
+ 0xa5b8, 0xa5b9, 0xa5ba, 0xa5bb, 0xa5bc, 0xa5bd, 0xa5be, 0xa5bf,
+ 0xa5c0, 0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7, /* 0xa5c0 */
+ 0xa5c8, 0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf,
+ 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6, 0xa5d7,
+ 0xa5d8, 0xa5d9, 0xa5da, 0xa5db, 0xa5dc, 0xa5dd, 0xa5de, 0xa5df,
+ 0xa5e0, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4, 0xa5e5, 0xa5e6, 0xa5e7,
+ 0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5ee, 0xa5ef,
+ 0xa5f0, 0xa5f1, 0xa5f2, 0xa5f3, 0xa5f4, 0xa5f5, 0xa5f6, 0xa5f7,
+ 0xa5f8, 0xa5f9, 0xa5fa, 0xa5fb, 0xa5fc, 0xa5fd, 0xa5fe, 0xa5ff,
+ 0xa600, 0xa601, 0xa602, 0xa603, 0xa604, 0xa605, 0xa606, 0xa607, /* 0xa600 */
+ 0xa608, 0xa609, 0xa60a, 0xa60b, 0xa60c, 0xa60d, 0xa60e, 0xa60f,
+ 0xa610, 0xa611, 0xa612, 0xa613, 0xa614, 0xa615, 0xa616, 0xa617,
+ 0xa618, 0xa619, 0xa61a, 0xa61b, 0xa61c, 0xa61d, 0xa61e, 0xa61f,
+ 0xa620, 0xa621, 0xa622, 0xa623, 0xa624, 0xa625, 0xa626, 0xa627,
+ 0xa628, 0xa629, 0xa62a, 0xa62b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa641, 0xa641, 0xa643, 0xa643, 0xa645, 0xa645, 0xa647, 0xa647, /* 0xa640 */
+ 0xa649, 0xa649, 0xa64b, 0xa64b, 0xa64d, 0xa64d, 0xa64f, 0xa64f,
+ 0xa651, 0xa651, 0xa653, 0xa653, 0xa655, 0xa655, 0xa657, 0xa657,
+ 0xa659, 0xa659, 0xa65b, 0xa65b, 0xa65d, 0xa65d, 0xa65f, 0xa65f,
+ 0xa661, 0xa661, 0xa663, 0xa663, 0xa665, 0xa665, 0xa667, 0xa667,
+ 0xa669, 0xa669, 0xa66b, 0xa66b, 0xa66d, 0xa66d, 0xa66e, 0xa66f,
+ 0xa670, 0xa671, 0xa672, 0xa673, 0xa674, 0xa675, 0xa676, 0xa677,
+ 0xa678, 0xa679, 0xa67a, 0xa67b, 0xa67c, 0xa67d, 0xa67e, 0xa67f,
+ 0xa681, 0xa681, 0xa683, 0xa683, 0xa685, 0xa685, 0xa687, 0xa687, /* 0xa680 */
+ 0xa689, 0xa689, 0xa68b, 0xa68b, 0xa68d, 0xa68d, 0xa68f, 0xa68f,
+ 0xa691, 0xa691, 0xa693, 0xa693, 0xa695, 0xa695, 0xa697, 0xa697,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa69f,
+ 0xa6a0, 0xa6a1, 0xa6a2, 0xa6a3, 0xa6a4, 0xa6a5, 0xa6a6, 0xa6a7,
+ 0xa6a8, 0xa6a9, 0xa6aa, 0xa6ab, 0xa6ac, 0xa6ad, 0xa6ae, 0xa6af,
+ 0xa6b0, 0xa6b1, 0xa6b2, 0xa6b3, 0xa6b4, 0xa6b5, 0xa6b6, 0xa6b7,
+ 0xa6b8, 0xa6b9, 0xa6ba, 0xa6bb, 0xa6bc, 0xa6bd, 0xa6be, 0xa6bf,
+ 0xa6c0, 0xa6c1, 0xa6c2, 0xa6c3, 0xa6c4, 0xa6c5, 0xa6c6, 0xa6c7, /* 0xa6c0 */
+ 0xa6c8, 0xa6c9, 0xa6ca, 0xa6cb, 0xa6cc, 0xa6cd, 0xa6ce, 0xa6cf,
+ 0xa6d0, 0xa6d1, 0xa6d2, 0xa6d3, 0xa6d4, 0xa6d5, 0xa6d6, 0xa6d7,
+ 0xa6d8, 0xa6d9, 0xa6da, 0xa6db, 0xa6dc, 0xa6dd, 0xa6de, 0xa6df,
+ 0xa6e0, 0xa6e1, 0xa6e2, 0xa6e3, 0xa6e4, 0xa6e5, 0xa6e6, 0xa6e7,
+ 0xa6e8, 0xa6e9, 0xa6ea, 0xa6eb, 0xa6ec, 0xa6ed, 0xa6ee, 0xa6ef,
+ 0xa6f0, 0xa6f1, 0xa6f2, 0xa6f3, 0xa6f4, 0xa6f5, 0xa6f6, 0xa6f7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa700, 0xa701, 0xa702, 0xa703, 0xa704, 0xa705, 0xa706, 0xa707, /* 0xa700 */
+ 0xa708, 0xa709, 0xa70a, 0xa70b, 0xa70c, 0xa70d, 0xa70e, 0xa70f,
+ 0xa710, 0xa711, 0xa712, 0xa713, 0xa714, 0xa715, 0xa716, 0xa717,
+ 0xa718, 0xa719, 0xa71a, 0xa71b, 0xa71c, 0xa71d, 0xa71e, 0xa71f,
+ 0xa720, 0xa721, 0xa723, 0xa723, 0xa725, 0xa725, 0xa727, 0xa727,
+ 0xa729, 0xa729, 0xa72b, 0xa72b, 0xa72d, 0xa72d, 0xa72f, 0xa72f,
+ 0xa730, 0xa731, 0xa733, 0xa733, 0xa735, 0xa735, 0xa737, 0xa737,
+ 0xa739, 0xa739, 0xa73b, 0xa73b, 0xa73d, 0xa73d, 0xa73f, 0xa73f,
+ 0xa741, 0xa741, 0xa743, 0xa743, 0xa745, 0xa745, 0xa747, 0xa747, /* 0xa740 */
+ 0xa749, 0xa749, 0xa74b, 0xa74b, 0xa74d, 0xa74d, 0xa74f, 0xa74f,
+ 0xa751, 0xa751, 0xa753, 0xa753, 0xa755, 0xa755, 0xa757, 0xa757,
+ 0xa759, 0xa759, 0xa75b, 0xa75b, 0xa75d, 0xa75d, 0xa75f, 0xa75f,
+ 0xa761, 0xa761, 0xa763, 0xa763, 0xa765, 0xa765, 0xa767, 0xa767,
+ 0xa769, 0xa769, 0xa76b, 0xa76b, 0xa76d, 0xa76d, 0xa76f, 0xa76f,
+ 0xa770, 0xa771, 0xa772, 0xa773, 0xa774, 0xa775, 0xa776, 0xa777,
+ 0xa778, 0xa77a, 0xa77a, 0xa77c, 0xa77c, 0x1d79, 0xa77f, 0xa77f,
+ 0xa781, 0xa781, 0xa783, 0xa783, 0xa785, 0xa785, 0xa787, 0xa787, /* 0xa780 */
+ 0xa788, 0xa789, 0xa78a, 0xa78c, 0xa78c, 0x0265, 0xa78e, 0x0000,
+ 0xa791, 0xa791, 0xa793, 0xa793, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa7a1, 0xa7a1, 0xa7a3, 0xa7a3, 0xa7a5, 0xa7a5, 0xa7a7, 0xa7a7,
+ 0xa7a9, 0xa7a9, 0x0266, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa7c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa7f8, 0xa7f9, 0xa7fa, 0xa7fb, 0xa7fc, 0xa7fd, 0xa7fe, 0xa7ff,
+ 0xa800, 0xa801, 0xa802, 0xa803, 0xa804, 0xa805, 0xa806, 0xa807, /* 0xa800 */
+ 0xa808, 0xa809, 0xa80a, 0xa80b, 0xa80c, 0xa80d, 0xa80e, 0xa80f,
+ 0xa810, 0xa811, 0xa812, 0xa813, 0xa814, 0xa815, 0xa816, 0xa817,
+ 0xa818, 0xa819, 0xa81a, 0xa81b, 0xa81c, 0xa81d, 0xa81e, 0xa81f,
+ 0xa820, 0xa821, 0xa822, 0xa823, 0xa824, 0xa825, 0xa826, 0xa827,
+ 0xa828, 0xa829, 0xa82a, 0xa82b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa830, 0xa831, 0xa832, 0xa833, 0xa834, 0xa835, 0xa836, 0xa837,
+ 0xa838, 0xa839, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa840, 0xa841, 0xa842, 0xa843, 0xa844, 0xa845, 0xa846, 0xa847, /* 0xa840 */
+ 0xa848, 0xa849, 0xa84a, 0xa84b, 0xa84c, 0xa84d, 0xa84e, 0xa84f,
+ 0xa850, 0xa851, 0xa852, 0xa853, 0xa854, 0xa855, 0xa856, 0xa857,
+ 0xa858, 0xa859, 0xa85a, 0xa85b, 0xa85c, 0xa85d, 0xa85e, 0xa85f,
+ 0xa860, 0xa861, 0xa862, 0xa863, 0xa864, 0xa865, 0xa866, 0xa867,
+ 0xa868, 0xa869, 0xa86a, 0xa86b, 0xa86c, 0xa86d, 0xa86e, 0xa86f,
+ 0xa870, 0xa871, 0xa872, 0xa873, 0xa874, 0xa875, 0xa876, 0xa877,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa880, 0xa881, 0xa882, 0xa883, 0xa884, 0xa885, 0xa886, 0xa887, /* 0xa880 */
+ 0xa888, 0xa889, 0xa88a, 0xa88b, 0xa88c, 0xa88d, 0xa88e, 0xa88f,
+ 0xa890, 0xa891, 0xa892, 0xa893, 0xa894, 0xa895, 0xa896, 0xa897,
+ 0xa898, 0xa899, 0xa89a, 0xa89b, 0xa89c, 0xa89d, 0xa89e, 0xa89f,
+ 0xa8a0, 0xa8a1, 0xa8a2, 0xa8a3, 0xa8a4, 0xa8a5, 0xa8a6, 0xa8a7,
+ 0xa8a8, 0xa8a9, 0xa8aa, 0xa8ab, 0xa8ac, 0xa8ad, 0xa8ae, 0xa8af,
+ 0xa8b0, 0xa8b1, 0xa8b2, 0xa8b3, 0xa8b4, 0xa8b5, 0xa8b6, 0xa8b7,
+ 0xa8b8, 0xa8b9, 0xa8ba, 0xa8bb, 0xa8bc, 0xa8bd, 0xa8be, 0xa8bf,
+ 0xa8c0, 0xa8c1, 0xa8c2, 0xa8c3, 0xa8c4, 0x0000, 0x0000, 0x0000, /* 0xa8c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8ce, 0xa8cf,
+ 0xa8d0, 0xa8d1, 0xa8d2, 0xa8d3, 0xa8d4, 0xa8d5, 0xa8d6, 0xa8d7,
+ 0xa8d8, 0xa8d9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa8e0, 0xa8e1, 0xa8e2, 0xa8e3, 0xa8e4, 0xa8e5, 0xa8e6, 0xa8e7,
+ 0xa8e8, 0xa8e9, 0xa8ea, 0xa8eb, 0xa8ec, 0xa8ed, 0xa8ee, 0xa8ef,
+ 0xa8f0, 0xa8f1, 0xa8f2, 0xa8f3, 0xa8f4, 0xa8f5, 0xa8f6, 0xa8f7,
+ 0xa8f8, 0xa8f9, 0xa8fa, 0xa8fb, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa900, 0xa901, 0xa902, 0xa903, 0xa904, 0xa905, 0xa906, 0xa907, /* 0xa900 */
+ 0xa908, 0xa909, 0xa90a, 0xa90b, 0xa90c, 0xa90d, 0xa90e, 0xa90f,
+ 0xa910, 0xa911, 0xa912, 0xa913, 0xa914, 0xa915, 0xa916, 0xa917,
+ 0xa918, 0xa919, 0xa91a, 0xa91b, 0xa91c, 0xa91d, 0xa91e, 0xa91f,
+ 0xa920, 0xa921, 0xa922, 0xa923, 0xa924, 0xa925, 0xa926, 0xa927,
+ 0xa928, 0xa929, 0xa92a, 0xa92b, 0xa92c, 0xa92d, 0xa92e, 0xa92f,
+ 0xa930, 0xa931, 0xa932, 0xa933, 0xa934, 0xa935, 0xa936, 0xa937,
+ 0xa938, 0xa939, 0xa93a, 0xa93b, 0xa93c, 0xa93d, 0xa93e, 0xa93f,
+ 0xa940, 0xa941, 0xa942, 0xa943, 0xa944, 0xa945, 0xa946, 0xa947, /* 0xa940 */
+ 0xa948, 0xa949, 0xa94a, 0xa94b, 0xa94c, 0xa94d, 0xa94e, 0xa94f,
+ 0xa950, 0xa951, 0xa952, 0xa953, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa95f,
+ 0xa960, 0xa961, 0xa962, 0xa963, 0xa964, 0xa965, 0xa966, 0xa967,
+ 0xa968, 0xa969, 0xa96a, 0xa96b, 0xa96c, 0xa96d, 0xa96e, 0xa96f,
+ 0xa970, 0xa971, 0xa972, 0xa973, 0xa974, 0xa975, 0xa976, 0xa977,
+ 0xa978, 0xa979, 0xa97a, 0xa97b, 0xa97c, 0x0000, 0x0000, 0x0000,
+ 0xa980, 0xa981, 0xa982, 0xa983, 0xa984, 0xa985, 0xa986, 0xa987, /* 0xa980 */
+ 0xa988, 0xa989, 0xa98a, 0xa98b, 0xa98c, 0xa98d, 0xa98e, 0xa98f,
+ 0xa990, 0xa991, 0xa992, 0xa993, 0xa994, 0xa995, 0xa996, 0xa997,
+ 0xa998, 0xa999, 0xa99a, 0xa99b, 0xa99c, 0xa99d, 0xa99e, 0xa99f,
+ 0xa9a0, 0xa9a1, 0xa9a2, 0xa9a3, 0xa9a4, 0xa9a5, 0xa9a6, 0xa9a7,
+ 0xa9a8, 0xa9a9, 0xa9aa, 0xa9ab, 0xa9ac, 0xa9ad, 0xa9ae, 0xa9af,
+ 0xa9b0, 0xa9b1, 0xa9b2, 0xa9b3, 0xa9b4, 0xa9b5, 0xa9b6, 0xa9b7,
+ 0xa9b8, 0xa9b9, 0xa9ba, 0xa9bb, 0xa9bc, 0xa9bd, 0xa9be, 0xa9bf,
+ 0xa9c0, 0xa9c1, 0xa9c2, 0xa9c3, 0xa9c4, 0xa9c5, 0xa9c6, 0xa9c7, /* 0xa9c0 */
+ 0xa9c8, 0xa9c9, 0xa9ca, 0xa9cb, 0xa9cc, 0xa9cd, 0x0000, 0xa9cf,
+ 0xa9d0, 0xa9d1, 0xa9d2, 0xa9d3, 0xa9d4, 0xa9d5, 0xa9d6, 0xa9d7,
+ 0xa9d8, 0xa9d9, 0x0000, 0x0000, 0x0000, 0x0000, 0xa9de, 0xa9df,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xaa00, 0xaa01, 0xaa02, 0xaa03, 0xaa04, 0xaa05, 0xaa06, 0xaa07, /* 0xaa00 */
+ 0xaa08, 0xaa09, 0xaa0a, 0xaa0b, 0xaa0c, 0xaa0d, 0xaa0e, 0xaa0f,
+ 0xaa10, 0xaa11, 0xaa12, 0xaa13, 0xaa14, 0xaa15, 0xaa16, 0xaa17,
+ 0xaa18, 0xaa19, 0xaa1a, 0xaa1b, 0xaa1c, 0xaa1d, 0xaa1e, 0xaa1f,
+ 0xaa20, 0xaa21, 0xaa22, 0xaa23, 0xaa24, 0xaa25, 0xaa26, 0xaa27,
+ 0xaa28, 0xaa29, 0xaa2a, 0xaa2b, 0xaa2c, 0xaa2d, 0xaa2e, 0xaa2f,
+ 0xaa30, 0xaa31, 0xaa32, 0xaa33, 0xaa34, 0xaa35, 0xaa36, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xaa40, 0xaa41, 0xaa42, 0xaa43, 0xaa44, 0xaa45, 0xaa46, 0xaa47, /* 0xaa40 */
+ 0xaa48, 0xaa49, 0xaa4a, 0xaa4b, 0xaa4c, 0xaa4d, 0x0000, 0x0000,
+ 0xaa50, 0xaa51, 0xaa52, 0xaa53, 0xaa54, 0xaa55, 0xaa56, 0xaa57,
+ 0xaa58, 0xaa59, 0x0000, 0x0000, 0xaa5c, 0xaa5d, 0xaa5e, 0xaa5f,
+ 0xaa60, 0xaa61, 0xaa62, 0xaa63, 0xaa64, 0xaa65, 0xaa66, 0xaa67,
+ 0xaa68, 0xaa69, 0xaa6a, 0xaa6b, 0xaa6c, 0xaa6d, 0xaa6e, 0xaa6f,
+ 0xaa70, 0xaa71, 0xaa72, 0xaa73, 0xaa74, 0xaa75, 0xaa76, 0xaa77,
+ 0xaa78, 0xaa79, 0xaa7a, 0xaa7b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xaa80, 0xaa81, 0xaa82, 0xaa83, 0xaa84, 0xaa85, 0xaa86, 0xaa87, /* 0xaa80 */
+ 0xaa88, 0xaa89, 0xaa8a, 0xaa8b, 0xaa8c, 0xaa8d, 0xaa8e, 0xaa8f,
+ 0xaa90, 0xaa91, 0xaa92, 0xaa93, 0xaa94, 0xaa95, 0xaa96, 0xaa97,
+ 0xaa98, 0xaa99, 0xaa9a, 0xaa9b, 0xaa9c, 0xaa9d, 0xaa9e, 0xaa9f,
+ 0xaaa0, 0xaaa1, 0xaaa2, 0xaaa3, 0xaaa4, 0xaaa5, 0xaaa6, 0xaaa7,
+ 0xaaa8, 0xaaa9, 0xaaaa, 0xaaab, 0xaaac, 0xaaad, 0xaaae, 0xaaaf,
+ 0xaab0, 0xaab1, 0xaab2, 0xaab3, 0xaab4, 0xaab5, 0xaab6, 0xaab7,
+ 0xaab8, 0xaab9, 0xaaba, 0xaabb, 0xaabc, 0xaabd, 0xaabe, 0xaabf,
+ 0xaac0, 0xaac1, 0xaac2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xaac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xaadb, 0xaadc, 0xaadd, 0xaade, 0xaadf,
+ 0xaae0, 0xaae1, 0xaae2, 0xaae3, 0xaae4, 0xaae5, 0xaae6, 0xaae7,
+ 0xaae8, 0xaae9, 0xaaea, 0xaaeb, 0xaaec, 0xaaed, 0xaaee, 0xaaef,
+ 0xaaf0, 0xaaf1, 0xaaf2, 0xaaf3, 0xaaf4, 0xaaf5, 0xaaf6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xab01, 0xab02, 0xab03, 0xab04, 0xab05, 0xab06, 0x0000, /* 0xab00 */
+ 0x0000, 0xab09, 0xab0a, 0xab0b, 0xab0c, 0xab0d, 0xab0e, 0x0000,
+ 0x0000, 0xab11, 0xab12, 0xab13, 0xab14, 0xab15, 0xab16, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xab20, 0xab21, 0xab22, 0xab23, 0xab24, 0xab25, 0xab26, 0x0000,
+ 0xab28, 0xab29, 0xab2a, 0xab2b, 0xab2c, 0xab2d, 0xab2e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xab40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xab80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xabc0, 0xabc1, 0xabc2, 0xabc3, 0xabc4, 0xabc5, 0xabc6, 0xabc7, /* 0xabc0 */
+ 0xabc8, 0xabc9, 0xabca, 0xabcb, 0xabcc, 0xabcd, 0xabce, 0xabcf,
+ 0xabd0, 0xabd1, 0xabd2, 0xabd3, 0xabd4, 0xabd5, 0xabd6, 0xabd7,
+ 0xabd8, 0xabd9, 0xabda, 0xabdb, 0xabdc, 0xabdd, 0xabde, 0xabdf,
+ 0xabe0, 0xabe1, 0xabe2, 0xabe3, 0xabe4, 0xabe5, 0xabe6, 0xabe7,
+ 0xabe8, 0xabe9, 0xabea, 0xabeb, 0xabec, 0xabed, 0x0000, 0x0000,
+ 0xabf0, 0xabf1, 0xabf2, 0xabf3, 0xabf4, 0xabf5, 0xabf6, 0xabf7,
+ 0xabf8, 0xabf9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xac00, 0xac01, 0xac02, 0xac03, 0xac04, 0xac05, 0xac06, 0xac07, /* 0xac00 */
+ 0xac08, 0xac09, 0xac0a, 0xac0b, 0xac0c, 0xac0d, 0xac0e, 0xac0f,
+ 0xac10, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17,
+ 0xac18, 0xac19, 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac1e, 0xac1f,
+ 0xac20, 0xac21, 0xac22, 0xac23, 0xac24, 0xac25, 0xac26, 0xac27,
+ 0xac28, 0xac29, 0xac2a, 0xac2b, 0xac2c, 0xac2d, 0xac2e, 0xac2f,
+ 0xac30, 0xac31, 0xac32, 0xac33, 0xac34, 0xac35, 0xac36, 0xac37,
+ 0xac38, 0xac39, 0xac3a, 0xac3b, 0xac3c, 0xac3d, 0xac3e, 0xac3f,
+ 0xac40, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, /* 0xac40 */
+ 0xac48, 0xac49, 0xac4a, 0xac4b, 0xac4c, 0xac4d, 0xac4e, 0xac4f,
+ 0xac50, 0xac51, 0xac52, 0xac53, 0xac54, 0xac55, 0xac56, 0xac57,
+ 0xac58, 0xac59, 0xac5a, 0xac5b, 0xac5c, 0xac5d, 0xac5e, 0xac5f,
+ 0xac60, 0xac61, 0xac62, 0xac63, 0xac64, 0xac65, 0xac66, 0xac67,
+ 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c, 0xac6d, 0xac6e, 0xac6f,
+ 0xac70, 0xac71, 0xac72, 0xac73, 0xac74, 0xac75, 0xac76, 0xac77,
+ 0xac78, 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac7f,
+ 0xac80, 0xac81, 0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xac87, /* 0xac80 */
+ 0xac88, 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f,
+ 0xac90, 0xac91, 0xac92, 0xac93, 0xac94, 0xac95, 0xac96, 0xac97,
+ 0xac98, 0xac99, 0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xac9e, 0xac9f,
+ 0xaca0, 0xaca1, 0xaca2, 0xaca3, 0xaca4, 0xaca5, 0xaca6, 0xaca7,
+ 0xaca8, 0xaca9, 0xacaa, 0xacab, 0xacac, 0xacad, 0xacae, 0xacaf,
+ 0xacb0, 0xacb1, 0xacb2, 0xacb3, 0xacb4, 0xacb5, 0xacb6, 0xacb7,
+ 0xacb8, 0xacb9, 0xacba, 0xacbb, 0xacbc, 0xacbd, 0xacbe, 0xacbf,
+ 0xacc0, 0xacc1, 0xacc2, 0xacc3, 0xacc4, 0xacc5, 0xacc6, 0xacc7, /* 0xacc0 */
+ 0xacc8, 0xacc9, 0xacca, 0xaccb, 0xaccc, 0xaccd, 0xacce, 0xaccf,
+ 0xacd0, 0xacd1, 0xacd2, 0xacd3, 0xacd4, 0xacd5, 0xacd6, 0xacd7,
+ 0xacd8, 0xacd9, 0xacda, 0xacdb, 0xacdc, 0xacdd, 0xacde, 0xacdf,
+ 0xace0, 0xace1, 0xace2, 0xace3, 0xace4, 0xace5, 0xace6, 0xace7,
+ 0xace8, 0xace9, 0xacea, 0xaceb, 0xacec, 0xaced, 0xacee, 0xacef,
+ 0xacf0, 0xacf1, 0xacf2, 0xacf3, 0xacf4, 0xacf5, 0xacf6, 0xacf7,
+ 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0xacfc, 0xacfd, 0xacfe, 0xacff,
+ 0xad00, 0xad01, 0xad02, 0xad03, 0xad04, 0xad05, 0xad06, 0xad07, /* 0xad00 */
+ 0xad08, 0xad09, 0xad0a, 0xad0b, 0xad0c, 0xad0d, 0xad0e, 0xad0f,
+ 0xad10, 0xad11, 0xad12, 0xad13, 0xad14, 0xad15, 0xad16, 0xad17,
+ 0xad18, 0xad19, 0xad1a, 0xad1b, 0xad1c, 0xad1d, 0xad1e, 0xad1f,
+ 0xad20, 0xad21, 0xad22, 0xad23, 0xad24, 0xad25, 0xad26, 0xad27,
+ 0xad28, 0xad29, 0xad2a, 0xad2b, 0xad2c, 0xad2d, 0xad2e, 0xad2f,
+ 0xad30, 0xad31, 0xad32, 0xad33, 0xad34, 0xad35, 0xad36, 0xad37,
+ 0xad38, 0xad39, 0xad3a, 0xad3b, 0xad3c, 0xad3d, 0xad3e, 0xad3f,
+ 0xad40, 0xad41, 0xad42, 0xad43, 0xad44, 0xad45, 0xad46, 0xad47, /* 0xad40 */
+ 0xad48, 0xad49, 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f,
+ 0xad50, 0xad51, 0xad52, 0xad53, 0xad54, 0xad55, 0xad56, 0xad57,
+ 0xad58, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f,
+ 0xad60, 0xad61, 0xad62, 0xad63, 0xad64, 0xad65, 0xad66, 0xad67,
+ 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c, 0xad6d, 0xad6e, 0xad6f,
+ 0xad70, 0xad71, 0xad72, 0xad73, 0xad74, 0xad75, 0xad76, 0xad77,
+ 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xad7d, 0xad7e, 0xad7f,
+ 0xad80, 0xad81, 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, /* 0xad80 */
+ 0xad88, 0xad89, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, 0xad8f,
+ 0xad90, 0xad91, 0xad92, 0xad93, 0xad94, 0xad95, 0xad96, 0xad97,
+ 0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xad9e, 0xad9f,
+ 0xada0, 0xada1, 0xada2, 0xada3, 0xada4, 0xada5, 0xada6, 0xada7,
+ 0xada8, 0xada9, 0xadaa, 0xadab, 0xadac, 0xadad, 0xadae, 0xadaf,
+ 0xadb0, 0xadb1, 0xadb2, 0xadb3, 0xadb4, 0xadb5, 0xadb6, 0xadb7,
+ 0xadb8, 0xadb9, 0xadba, 0xadbb, 0xadbc, 0xadbd, 0xadbe, 0xadbf,
+ 0xadc0, 0xadc1, 0xadc2, 0xadc3, 0xadc4, 0xadc5, 0xadc6, 0xadc7, /* 0xadc0 */
+ 0xadc8, 0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce, 0xadcf,
+ 0xadd0, 0xadd1, 0xadd2, 0xadd3, 0xadd4, 0xadd5, 0xadd6, 0xadd7,
+ 0xadd8, 0xadd9, 0xadda, 0xaddb, 0xaddc, 0xaddd, 0xadde, 0xaddf,
+ 0xade0, 0xade1, 0xade2, 0xade3, 0xade4, 0xade5, 0xade6, 0xade7,
+ 0xade8, 0xade9, 0xadea, 0xadeb, 0xadec, 0xaded, 0xadee, 0xadef,
+ 0xadf0, 0xadf1, 0xadf2, 0xadf3, 0xadf4, 0xadf5, 0xadf6, 0xadf7,
+ 0xadf8, 0xadf9, 0xadfa, 0xadfb, 0xadfc, 0xadfd, 0xadfe, 0xadff,
+ 0xae00, 0xae01, 0xae02, 0xae03, 0xae04, 0xae05, 0xae06, 0xae07, /* 0xae00 */
+ 0xae08, 0xae09, 0xae0a, 0xae0b, 0xae0c, 0xae0d, 0xae0e, 0xae0f,
+ 0xae10, 0xae11, 0xae12, 0xae13, 0xae14, 0xae15, 0xae16, 0xae17,
+ 0xae18, 0xae19, 0xae1a, 0xae1b, 0xae1c, 0xae1d, 0xae1e, 0xae1f,
+ 0xae20, 0xae21, 0xae22, 0xae23, 0xae24, 0xae25, 0xae26, 0xae27,
+ 0xae28, 0xae29, 0xae2a, 0xae2b, 0xae2c, 0xae2d, 0xae2e, 0xae2f,
+ 0xae30, 0xae31, 0xae32, 0xae33, 0xae34, 0xae35, 0xae36, 0xae37,
+ 0xae38, 0xae39, 0xae3a, 0xae3b, 0xae3c, 0xae3d, 0xae3e, 0xae3f,
+ 0xae40, 0xae41, 0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, /* 0xae40 */
+ 0xae48, 0xae49, 0xae4a, 0xae4b, 0xae4c, 0xae4d, 0xae4e, 0xae4f,
+ 0xae50, 0xae51, 0xae52, 0xae53, 0xae54, 0xae55, 0xae56, 0xae57,
+ 0xae58, 0xae59, 0xae5a, 0xae5b, 0xae5c, 0xae5d, 0xae5e, 0xae5f,
+ 0xae60, 0xae61, 0xae62, 0xae63, 0xae64, 0xae65, 0xae66, 0xae67,
+ 0xae68, 0xae69, 0xae6a, 0xae6b, 0xae6c, 0xae6d, 0xae6e, 0xae6f,
+ 0xae70, 0xae71, 0xae72, 0xae73, 0xae74, 0xae75, 0xae76, 0xae77,
+ 0xae78, 0xae79, 0xae7a, 0xae7b, 0xae7c, 0xae7d, 0xae7e, 0xae7f,
+ 0xae80, 0xae81, 0xae82, 0xae83, 0xae84, 0xae85, 0xae86, 0xae87, /* 0xae80 */
+ 0xae88, 0xae89, 0xae8a, 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f,
+ 0xae90, 0xae91, 0xae92, 0xae93, 0xae94, 0xae95, 0xae96, 0xae97,
+ 0xae98, 0xae99, 0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xae9e, 0xae9f,
+ 0xaea0, 0xaea1, 0xaea2, 0xaea3, 0xaea4, 0xaea5, 0xaea6, 0xaea7,
+ 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac, 0xaead, 0xaeae, 0xaeaf,
+ 0xaeb0, 0xaeb1, 0xaeb2, 0xaeb3, 0xaeb4, 0xaeb5, 0xaeb6, 0xaeb7,
+ 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0xaebc, 0xaebd, 0xaebe, 0xaebf,
+ 0xaec0, 0xaec1, 0xaec2, 0xaec3, 0xaec4, 0xaec5, 0xaec6, 0xaec7, /* 0xaec0 */
+ 0xaec8, 0xaec9, 0xaeca, 0xaecb, 0xaecc, 0xaecd, 0xaece, 0xaecf,
+ 0xaed0, 0xaed1, 0xaed2, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7,
+ 0xaed8, 0xaed9, 0xaeda, 0xaedb, 0xaedc, 0xaedd, 0xaede, 0xaedf,
+ 0xaee0, 0xaee1, 0xaee2, 0xaee3, 0xaee4, 0xaee5, 0xaee6, 0xaee7,
+ 0xaee8, 0xaee9, 0xaeea, 0xaeeb, 0xaeec, 0xaeed, 0xaeee, 0xaeef,
+ 0xaef0, 0xaef1, 0xaef2, 0xaef3, 0xaef4, 0xaef5, 0xaef6, 0xaef7,
+ 0xaef8, 0xaef9, 0xaefa, 0xaefb, 0xaefc, 0xaefd, 0xaefe, 0xaeff,
+ 0xaf00, 0xaf01, 0xaf02, 0xaf03, 0xaf04, 0xaf05, 0xaf06, 0xaf07, /* 0xaf00 */
+ 0xaf08, 0xaf09, 0xaf0a, 0xaf0b, 0xaf0c, 0xaf0d, 0xaf0e, 0xaf0f,
+ 0xaf10, 0xaf11, 0xaf12, 0xaf13, 0xaf14, 0xaf15, 0xaf16, 0xaf17,
+ 0xaf18, 0xaf19, 0xaf1a, 0xaf1b, 0xaf1c, 0xaf1d, 0xaf1e, 0xaf1f,
+ 0xaf20, 0xaf21, 0xaf22, 0xaf23, 0xaf24, 0xaf25, 0xaf26, 0xaf27,
+ 0xaf28, 0xaf29, 0xaf2a, 0xaf2b, 0xaf2c, 0xaf2d, 0xaf2e, 0xaf2f,
+ 0xaf30, 0xaf31, 0xaf32, 0xaf33, 0xaf34, 0xaf35, 0xaf36, 0xaf37,
+ 0xaf38, 0xaf39, 0xaf3a, 0xaf3b, 0xaf3c, 0xaf3d, 0xaf3e, 0xaf3f,
+ 0xaf40, 0xaf41, 0xaf42, 0xaf43, 0xaf44, 0xaf45, 0xaf46, 0xaf47, /* 0xaf40 */
+ 0xaf48, 0xaf49, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e, 0xaf4f,
+ 0xaf50, 0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57,
+ 0xaf58, 0xaf59, 0xaf5a, 0xaf5b, 0xaf5c, 0xaf5d, 0xaf5e, 0xaf5f,
+ 0xaf60, 0xaf61, 0xaf62, 0xaf63, 0xaf64, 0xaf65, 0xaf66, 0xaf67,
+ 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c, 0xaf6d, 0xaf6e, 0xaf6f,
+ 0xaf70, 0xaf71, 0xaf72, 0xaf73, 0xaf74, 0xaf75, 0xaf76, 0xaf77,
+ 0xaf78, 0xaf79, 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, 0xaf7e, 0xaf7f,
+ 0xaf80, 0xaf81, 0xaf82, 0xaf83, 0xaf84, 0xaf85, 0xaf86, 0xaf87, /* 0xaf80 */
+ 0xaf88, 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f,
+ 0xaf90, 0xaf91, 0xaf92, 0xaf93, 0xaf94, 0xaf95, 0xaf96, 0xaf97,
+ 0xaf98, 0xaf99, 0xaf9a, 0xaf9b, 0xaf9c, 0xaf9d, 0xaf9e, 0xaf9f,
+ 0xafa0, 0xafa1, 0xafa2, 0xafa3, 0xafa4, 0xafa5, 0xafa6, 0xafa7,
+ 0xafa8, 0xafa9, 0xafaa, 0xafab, 0xafac, 0xafad, 0xafae, 0xafaf,
+ 0xafb0, 0xafb1, 0xafb2, 0xafb3, 0xafb4, 0xafb5, 0xafb6, 0xafb7,
+ 0xafb8, 0xafb9, 0xafba, 0xafbb, 0xafbc, 0xafbd, 0xafbe, 0xafbf,
+ 0xafc0, 0xafc1, 0xafc2, 0xafc3, 0xafc4, 0xafc5, 0xafc6, 0xafc7, /* 0xafc0 */
+ 0xafc8, 0xafc9, 0xafca, 0xafcb, 0xafcc, 0xafcd, 0xafce, 0xafcf,
+ 0xafd0, 0xafd1, 0xafd2, 0xafd3, 0xafd4, 0xafd5, 0xafd6, 0xafd7,
+ 0xafd8, 0xafd9, 0xafda, 0xafdb, 0xafdc, 0xafdd, 0xafde, 0xafdf,
+ 0xafe0, 0xafe1, 0xafe2, 0xafe3, 0xafe4, 0xafe5, 0xafe6, 0xafe7,
+ 0xafe8, 0xafe9, 0xafea, 0xafeb, 0xafec, 0xafed, 0xafee, 0xafef,
+ 0xaff0, 0xaff1, 0xaff2, 0xaff3, 0xaff4, 0xaff5, 0xaff6, 0xaff7,
+ 0xaff8, 0xaff9, 0xaffa, 0xaffb, 0xaffc, 0xaffd, 0xaffe, 0xafff,
+ 0xb000, 0xb001, 0xb002, 0xb003, 0xb004, 0xb005, 0xb006, 0xb007, /* 0xb000 */
+ 0xb008, 0xb009, 0xb00a, 0xb00b, 0xb00c, 0xb00d, 0xb00e, 0xb00f,
+ 0xb010, 0xb011, 0xb012, 0xb013, 0xb014, 0xb015, 0xb016, 0xb017,
+ 0xb018, 0xb019, 0xb01a, 0xb01b, 0xb01c, 0xb01d, 0xb01e, 0xb01f,
+ 0xb020, 0xb021, 0xb022, 0xb023, 0xb024, 0xb025, 0xb026, 0xb027,
+ 0xb028, 0xb029, 0xb02a, 0xb02b, 0xb02c, 0xb02d, 0xb02e, 0xb02f,
+ 0xb030, 0xb031, 0xb032, 0xb033, 0xb034, 0xb035, 0xb036, 0xb037,
+ 0xb038, 0xb039, 0xb03a, 0xb03b, 0xb03c, 0xb03d, 0xb03e, 0xb03f,
+ 0xb040, 0xb041, 0xb042, 0xb043, 0xb044, 0xb045, 0xb046, 0xb047, /* 0xb040 */
+ 0xb048, 0xb049, 0xb04a, 0xb04b, 0xb04c, 0xb04d, 0xb04e, 0xb04f,
+ 0xb050, 0xb051, 0xb052, 0xb053, 0xb054, 0xb055, 0xb056, 0xb057,
+ 0xb058, 0xb059, 0xb05a, 0xb05b, 0xb05c, 0xb05d, 0xb05e, 0xb05f,
+ 0xb060, 0xb061, 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067,
+ 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, 0xb06f,
+ 0xb070, 0xb071, 0xb072, 0xb073, 0xb074, 0xb075, 0xb076, 0xb077,
+ 0xb078, 0xb079, 0xb07a, 0xb07b, 0xb07c, 0xb07d, 0xb07e, 0xb07f,
+ 0xb080, 0xb081, 0xb082, 0xb083, 0xb084, 0xb085, 0xb086, 0xb087, /* 0xb080 */
+ 0xb088, 0xb089, 0xb08a, 0xb08b, 0xb08c, 0xb08d, 0xb08e, 0xb08f,
+ 0xb090, 0xb091, 0xb092, 0xb093, 0xb094, 0xb095, 0xb096, 0xb097,
+ 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xb09e, 0xb09f,
+ 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7,
+ 0xb0a8, 0xb0a9, 0xb0aa, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af,
+ 0xb0b0, 0xb0b1, 0xb0b2, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b6, 0xb0b7,
+ 0xb0b8, 0xb0b9, 0xb0ba, 0xb0bb, 0xb0bc, 0xb0bd, 0xb0be, 0xb0bf,
+ 0xb0c0, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c4, 0xb0c5, 0xb0c6, 0xb0c7, /* 0xb0c0 */
+ 0xb0c8, 0xb0c9, 0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd, 0xb0ce, 0xb0cf,
+ 0xb0d0, 0xb0d1, 0xb0d2, 0xb0d3, 0xb0d4, 0xb0d5, 0xb0d6, 0xb0d7,
+ 0xb0d8, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, 0xb0de, 0xb0df,
+ 0xb0e0, 0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4, 0xb0e5, 0xb0e6, 0xb0e7,
+ 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef,
+ 0xb0f0, 0xb0f1, 0xb0f2, 0xb0f3, 0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7,
+ 0xb0f8, 0xb0f9, 0xb0fa, 0xb0fb, 0xb0fc, 0xb0fd, 0xb0fe, 0xb0ff,
+ 0xb100, 0xb101, 0xb102, 0xb103, 0xb104, 0xb105, 0xb106, 0xb107, /* 0xb100 */
+ 0xb108, 0xb109, 0xb10a, 0xb10b, 0xb10c, 0xb10d, 0xb10e, 0xb10f,
+ 0xb110, 0xb111, 0xb112, 0xb113, 0xb114, 0xb115, 0xb116, 0xb117,
+ 0xb118, 0xb119, 0xb11a, 0xb11b, 0xb11c, 0xb11d, 0xb11e, 0xb11f,
+ 0xb120, 0xb121, 0xb122, 0xb123, 0xb124, 0xb125, 0xb126, 0xb127,
+ 0xb128, 0xb129, 0xb12a, 0xb12b, 0xb12c, 0xb12d, 0xb12e, 0xb12f,
+ 0xb130, 0xb131, 0xb132, 0xb133, 0xb134, 0xb135, 0xb136, 0xb137,
+ 0xb138, 0xb139, 0xb13a, 0xb13b, 0xb13c, 0xb13d, 0xb13e, 0xb13f,
+ 0xb140, 0xb141, 0xb142, 0xb143, 0xb144, 0xb145, 0xb146, 0xb147, /* 0xb140 */
+ 0xb148, 0xb149, 0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e, 0xb14f,
+ 0xb150, 0xb151, 0xb152, 0xb153, 0xb154, 0xb155, 0xb156, 0xb157,
+ 0xb158, 0xb159, 0xb15a, 0xb15b, 0xb15c, 0xb15d, 0xb15e, 0xb15f,
+ 0xb160, 0xb161, 0xb162, 0xb163, 0xb164, 0xb165, 0xb166, 0xb167,
+ 0xb168, 0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f,
+ 0xb170, 0xb171, 0xb172, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177,
+ 0xb178, 0xb179, 0xb17a, 0xb17b, 0xb17c, 0xb17d, 0xb17e, 0xb17f,
+ 0xb180, 0xb181, 0xb182, 0xb183, 0xb184, 0xb185, 0xb186, 0xb187, /* 0xb180 */
+ 0xb188, 0xb189, 0xb18a, 0xb18b, 0xb18c, 0xb18d, 0xb18e, 0xb18f,
+ 0xb190, 0xb191, 0xb192, 0xb193, 0xb194, 0xb195, 0xb196, 0xb197,
+ 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d, 0xb19e, 0xb19f,
+ 0xb1a0, 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xb1a5, 0xb1a6, 0xb1a7,
+ 0xb1a8, 0xb1a9, 0xb1aa, 0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af,
+ 0xb1b0, 0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7,
+ 0xb1b8, 0xb1b9, 0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, 0xb1bf,
+ 0xb1c0, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, 0xb1c5, 0xb1c6, 0xb1c7, /* 0xb1c0 */
+ 0xb1c8, 0xb1c9, 0xb1ca, 0xb1cb, 0xb1cc, 0xb1cd, 0xb1ce, 0xb1cf,
+ 0xb1d0, 0xb1d1, 0xb1d2, 0xb1d3, 0xb1d4, 0xb1d5, 0xb1d6, 0xb1d7,
+ 0xb1d8, 0xb1d9, 0xb1da, 0xb1db, 0xb1dc, 0xb1dd, 0xb1de, 0xb1df,
+ 0xb1e0, 0xb1e1, 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7,
+ 0xb1e8, 0xb1e9, 0xb1ea, 0xb1eb, 0xb1ec, 0xb1ed, 0xb1ee, 0xb1ef,
+ 0xb1f0, 0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6, 0xb1f7,
+ 0xb1f8, 0xb1f9, 0xb1fa, 0xb1fb, 0xb1fc, 0xb1fd, 0xb1fe, 0xb1ff,
+ 0xb200, 0xb201, 0xb202, 0xb203, 0xb204, 0xb205, 0xb206, 0xb207, /* 0xb200 */
+ 0xb208, 0xb209, 0xb20a, 0xb20b, 0xb20c, 0xb20d, 0xb20e, 0xb20f,
+ 0xb210, 0xb211, 0xb212, 0xb213, 0xb214, 0xb215, 0xb216, 0xb217,
+ 0xb218, 0xb219, 0xb21a, 0xb21b, 0xb21c, 0xb21d, 0xb21e, 0xb21f,
+ 0xb220, 0xb221, 0xb222, 0xb223, 0xb224, 0xb225, 0xb226, 0xb227,
+ 0xb228, 0xb229, 0xb22a, 0xb22b, 0xb22c, 0xb22d, 0xb22e, 0xb22f,
+ 0xb230, 0xb231, 0xb232, 0xb233, 0xb234, 0xb235, 0xb236, 0xb237,
+ 0xb238, 0xb239, 0xb23a, 0xb23b, 0xb23c, 0xb23d, 0xb23e, 0xb23f,
+ 0xb240, 0xb241, 0xb242, 0xb243, 0xb244, 0xb245, 0xb246, 0xb247, /* 0xb240 */
+ 0xb248, 0xb249, 0xb24a, 0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f,
+ 0xb250, 0xb251, 0xb252, 0xb253, 0xb254, 0xb255, 0xb256, 0xb257,
+ 0xb258, 0xb259, 0xb25a, 0xb25b, 0xb25c, 0xb25d, 0xb25e, 0xb25f,
+ 0xb260, 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, 0xb267,
+ 0xb268, 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xb26e, 0xb26f,
+ 0xb270, 0xb271, 0xb272, 0xb273, 0xb274, 0xb275, 0xb276, 0xb277,
+ 0xb278, 0xb279, 0xb27a, 0xb27b, 0xb27c, 0xb27d, 0xb27e, 0xb27f,
+ 0xb280, 0xb281, 0xb282, 0xb283, 0xb284, 0xb285, 0xb286, 0xb287, /* 0xb280 */
+ 0xb288, 0xb289, 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xb28f,
+ 0xb290, 0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296, 0xb297,
+ 0xb298, 0xb299, 0xb29a, 0xb29b, 0xb29c, 0xb29d, 0xb29e, 0xb29f,
+ 0xb2a0, 0xb2a1, 0xb2a2, 0xb2a3, 0xb2a4, 0xb2a5, 0xb2a6, 0xb2a7,
+ 0xb2a8, 0xb2a9, 0xb2aa, 0xb2ab, 0xb2ac, 0xb2ad, 0xb2ae, 0xb2af,
+ 0xb2b0, 0xb2b1, 0xb2b2, 0xb2b3, 0xb2b4, 0xb2b5, 0xb2b6, 0xb2b7,
+ 0xb2b8, 0xb2b9, 0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2be, 0xb2bf,
+ 0xb2c0, 0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6, 0xb2c7, /* 0xb2c0 */
+ 0xb2c8, 0xb2c9, 0xb2ca, 0xb2cb, 0xb2cc, 0xb2cd, 0xb2ce, 0xb2cf,
+ 0xb2d0, 0xb2d1, 0xb2d2, 0xb2d3, 0xb2d4, 0xb2d5, 0xb2d6, 0xb2d7,
+ 0xb2d8, 0xb2d9, 0xb2da, 0xb2db, 0xb2dc, 0xb2dd, 0xb2de, 0xb2df,
+ 0xb2e0, 0xb2e1, 0xb2e2, 0xb2e3, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e7,
+ 0xb2e8, 0xb2e9, 0xb2ea, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef,
+ 0xb2f0, 0xb2f1, 0xb2f2, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f6, 0xb2f7,
+ 0xb2f8, 0xb2f9, 0xb2fa, 0xb2fb, 0xb2fc, 0xb2fd, 0xb2fe, 0xb2ff,
+ 0xb300, 0xb301, 0xb302, 0xb303, 0xb304, 0xb305, 0xb306, 0xb307, /* 0xb300 */
+ 0xb308, 0xb309, 0xb30a, 0xb30b, 0xb30c, 0xb30d, 0xb30e, 0xb30f,
+ 0xb310, 0xb311, 0xb312, 0xb313, 0xb314, 0xb315, 0xb316, 0xb317,
+ 0xb318, 0xb319, 0xb31a, 0xb31b, 0xb31c, 0xb31d, 0xb31e, 0xb31f,
+ 0xb320, 0xb321, 0xb322, 0xb323, 0xb324, 0xb325, 0xb326, 0xb327,
+ 0xb328, 0xb329, 0xb32a, 0xb32b, 0xb32c, 0xb32d, 0xb32e, 0xb32f,
+ 0xb330, 0xb331, 0xb332, 0xb333, 0xb334, 0xb335, 0xb336, 0xb337,
+ 0xb338, 0xb339, 0xb33a, 0xb33b, 0xb33c, 0xb33d, 0xb33e, 0xb33f,
+ 0xb340, 0xb341, 0xb342, 0xb343, 0xb344, 0xb345, 0xb346, 0xb347, /* 0xb340 */
+ 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c, 0xb34d, 0xb34e, 0xb34f,
+ 0xb350, 0xb351, 0xb352, 0xb353, 0xb354, 0xb355, 0xb356, 0xb357,
+ 0xb358, 0xb359, 0xb35a, 0xb35b, 0xb35c, 0xb35d, 0xb35e, 0xb35f,
+ 0xb360, 0xb361, 0xb362, 0xb363, 0xb364, 0xb365, 0xb366, 0xb367,
+ 0xb368, 0xb369, 0xb36a, 0xb36b, 0xb36c, 0xb36d, 0xb36e, 0xb36f,
+ 0xb370, 0xb371, 0xb372, 0xb373, 0xb374, 0xb375, 0xb376, 0xb377,
+ 0xb378, 0xb379, 0xb37a, 0xb37b, 0xb37c, 0xb37d, 0xb37e, 0xb37f,
+ 0xb380, 0xb381, 0xb382, 0xb383, 0xb384, 0xb385, 0xb386, 0xb387, /* 0xb380 */
+ 0xb388, 0xb389, 0xb38a, 0xb38b, 0xb38c, 0xb38d, 0xb38e, 0xb38f,
+ 0xb390, 0xb391, 0xb392, 0xb393, 0xb394, 0xb395, 0xb396, 0xb397,
+ 0xb398, 0xb399, 0xb39a, 0xb39b, 0xb39c, 0xb39d, 0xb39e, 0xb39f,
+ 0xb3a0, 0xb3a1, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7,
+ 0xb3a8, 0xb3a9, 0xb3aa, 0xb3ab, 0xb3ac, 0xb3ad, 0xb3ae, 0xb3af,
+ 0xb3b0, 0xb3b1, 0xb3b2, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6, 0xb3b7,
+ 0xb3b8, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd, 0xb3be, 0xb3bf,
+ 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0xb3c4, 0xb3c5, 0xb3c6, 0xb3c7, /* 0xb3c0 */
+ 0xb3c8, 0xb3c9, 0xb3ca, 0xb3cb, 0xb3cc, 0xb3cd, 0xb3ce, 0xb3cf,
+ 0xb3d0, 0xb3d1, 0xb3d2, 0xb3d3, 0xb3d4, 0xb3d5, 0xb3d6, 0xb3d7,
+ 0xb3d8, 0xb3d9, 0xb3da, 0xb3db, 0xb3dc, 0xb3dd, 0xb3de, 0xb3df,
+ 0xb3e0, 0xb3e1, 0xb3e2, 0xb3e3, 0xb3e4, 0xb3e5, 0xb3e6, 0xb3e7,
+ 0xb3e8, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee, 0xb3ef,
+ 0xb3f0, 0xb3f1, 0xb3f2, 0xb3f3, 0xb3f4, 0xb3f5, 0xb3f6, 0xb3f7,
+ 0xb3f8, 0xb3f9, 0xb3fa, 0xb3fb, 0xb3fc, 0xb3fd, 0xb3fe, 0xb3ff,
+ 0xb400, 0xb401, 0xb402, 0xb403, 0xb404, 0xb405, 0xb406, 0xb407, /* 0xb400 */
+ 0xb408, 0xb409, 0xb40a, 0xb40b, 0xb40c, 0xb40d, 0xb40e, 0xb40f,
+ 0xb410, 0xb411, 0xb412, 0xb413, 0xb414, 0xb415, 0xb416, 0xb417,
+ 0xb418, 0xb419, 0xb41a, 0xb41b, 0xb41c, 0xb41d, 0xb41e, 0xb41f,
+ 0xb420, 0xb421, 0xb422, 0xb423, 0xb424, 0xb425, 0xb426, 0xb427,
+ 0xb428, 0xb429, 0xb42a, 0xb42b, 0xb42c, 0xb42d, 0xb42e, 0xb42f,
+ 0xb430, 0xb431, 0xb432, 0xb433, 0xb434, 0xb435, 0xb436, 0xb437,
+ 0xb438, 0xb439, 0xb43a, 0xb43b, 0xb43c, 0xb43d, 0xb43e, 0xb43f,
+ 0xb440, 0xb441, 0xb442, 0xb443, 0xb444, 0xb445, 0xb446, 0xb447, /* 0xb440 */
+ 0xb448, 0xb449, 0xb44a, 0xb44b, 0xb44c, 0xb44d, 0xb44e, 0xb44f,
+ 0xb450, 0xb451, 0xb452, 0xb453, 0xb454, 0xb455, 0xb456, 0xb457,
+ 0xb458, 0xb459, 0xb45a, 0xb45b, 0xb45c, 0xb45d, 0xb45e, 0xb45f,
+ 0xb460, 0xb461, 0xb462, 0xb463, 0xb464, 0xb465, 0xb466, 0xb467,
+ 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46c, 0xb46d, 0xb46e, 0xb46f,
+ 0xb470, 0xb471, 0xb472, 0xb473, 0xb474, 0xb475, 0xb476, 0xb477,
+ 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xb47d, 0xb47e, 0xb47f,
+ 0xb480, 0xb481, 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, /* 0xb480 */
+ 0xb488, 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e, 0xb48f,
+ 0xb490, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, 0xb496, 0xb497,
+ 0xb498, 0xb499, 0xb49a, 0xb49b, 0xb49c, 0xb49d, 0xb49e, 0xb49f,
+ 0xb4a0, 0xb4a1, 0xb4a2, 0xb4a3, 0xb4a4, 0xb4a5, 0xb4a6, 0xb4a7,
+ 0xb4a8, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ac, 0xb4ad, 0xb4ae, 0xb4af,
+ 0xb4b0, 0xb4b1, 0xb4b2, 0xb4b3, 0xb4b4, 0xb4b5, 0xb4b6, 0xb4b7,
+ 0xb4b8, 0xb4b9, 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf,
+ 0xb4c0, 0xb4c1, 0xb4c2, 0xb4c3, 0xb4c4, 0xb4c5, 0xb4c6, 0xb4c7, /* 0xb4c0 */
+ 0xb4c8, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce, 0xb4cf,
+ 0xb4d0, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d5, 0xb4d6, 0xb4d7,
+ 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0xb4dc, 0xb4dd, 0xb4de, 0xb4df,
+ 0xb4e0, 0xb4e1, 0xb4e2, 0xb4e3, 0xb4e4, 0xb4e5, 0xb4e6, 0xb4e7,
+ 0xb4e8, 0xb4e9, 0xb4ea, 0xb4eb, 0xb4ec, 0xb4ed, 0xb4ee, 0xb4ef,
+ 0xb4f0, 0xb4f1, 0xb4f2, 0xb4f3, 0xb4f4, 0xb4f5, 0xb4f6, 0xb4f7,
+ 0xb4f8, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe, 0xb4ff,
+ 0xb500, 0xb501, 0xb502, 0xb503, 0xb504, 0xb505, 0xb506, 0xb507, /* 0xb500 */
+ 0xb508, 0xb509, 0xb50a, 0xb50b, 0xb50c, 0xb50d, 0xb50e, 0xb50f,
+ 0xb510, 0xb511, 0xb512, 0xb513, 0xb514, 0xb515, 0xb516, 0xb517,
+ 0xb518, 0xb519, 0xb51a, 0xb51b, 0xb51c, 0xb51d, 0xb51e, 0xb51f,
+ 0xb520, 0xb521, 0xb522, 0xb523, 0xb524, 0xb525, 0xb526, 0xb527,
+ 0xb528, 0xb529, 0xb52a, 0xb52b, 0xb52c, 0xb52d, 0xb52e, 0xb52f,
+ 0xb530, 0xb531, 0xb532, 0xb533, 0xb534, 0xb535, 0xb536, 0xb537,
+ 0xb538, 0xb539, 0xb53a, 0xb53b, 0xb53c, 0xb53d, 0xb53e, 0xb53f,
+ 0xb540, 0xb541, 0xb542, 0xb543, 0xb544, 0xb545, 0xb546, 0xb547, /* 0xb540 */
+ 0xb548, 0xb549, 0xb54a, 0xb54b, 0xb54c, 0xb54d, 0xb54e, 0xb54f,
+ 0xb550, 0xb551, 0xb552, 0xb553, 0xb554, 0xb555, 0xb556, 0xb557,
+ 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55c, 0xb55d, 0xb55e, 0xb55f,
+ 0xb560, 0xb561, 0xb562, 0xb563, 0xb564, 0xb565, 0xb566, 0xb567,
+ 0xb568, 0xb569, 0xb56a, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xb56f,
+ 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, 0xb576, 0xb577,
+ 0xb578, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d, 0xb57e, 0xb57f,
+ 0xb580, 0xb581, 0xb582, 0xb583, 0xb584, 0xb585, 0xb586, 0xb587, /* 0xb580 */
+ 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f,
+ 0xb590, 0xb591, 0xb592, 0xb593, 0xb594, 0xb595, 0xb596, 0xb597,
+ 0xb598, 0xb599, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb59e, 0xb59f,
+ 0xb5a0, 0xb5a1, 0xb5a2, 0xb5a3, 0xb5a4, 0xb5a5, 0xb5a6, 0xb5a7,
+ 0xb5a8, 0xb5a9, 0xb5aa, 0xb5ab, 0xb5ac, 0xb5ad, 0xb5ae, 0xb5af,
+ 0xb5b0, 0xb5b1, 0xb5b2, 0xb5b3, 0xb5b4, 0xb5b5, 0xb5b6, 0xb5b7,
+ 0xb5b8, 0xb5b9, 0xb5ba, 0xb5bb, 0xb5bc, 0xb5bd, 0xb5be, 0xb5bf,
+ 0xb5c0, 0xb5c1, 0xb5c2, 0xb5c3, 0xb5c4, 0xb5c5, 0xb5c6, 0xb5c7, /* 0xb5c0 */
+ 0xb5c8, 0xb5c9, 0xb5ca, 0xb5cb, 0xb5cc, 0xb5cd, 0xb5ce, 0xb5cf,
+ 0xb5d0, 0xb5d1, 0xb5d2, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7,
+ 0xb5d8, 0xb5d9, 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5de, 0xb5df,
+ 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6, 0xb5e7,
+ 0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ec, 0xb5ed, 0xb5ee, 0xb5ef,
+ 0xb5f0, 0xb5f1, 0xb5f2, 0xb5f3, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7,
+ 0xb5f8, 0xb5f9, 0xb5fa, 0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb5ff,
+ 0xb600, 0xb601, 0xb602, 0xb603, 0xb604, 0xb605, 0xb606, 0xb607, /* 0xb600 */
+ 0xb608, 0xb609, 0xb60a, 0xb60b, 0xb60c, 0xb60d, 0xb60e, 0xb60f,
+ 0xb610, 0xb611, 0xb612, 0xb613, 0xb614, 0xb615, 0xb616, 0xb617,
+ 0xb618, 0xb619, 0xb61a, 0xb61b, 0xb61c, 0xb61d, 0xb61e, 0xb61f,
+ 0xb620, 0xb621, 0xb622, 0xb623, 0xb624, 0xb625, 0xb626, 0xb627,
+ 0xb628, 0xb629, 0xb62a, 0xb62b, 0xb62c, 0xb62d, 0xb62e, 0xb62f,
+ 0xb630, 0xb631, 0xb632, 0xb633, 0xb634, 0xb635, 0xb636, 0xb637,
+ 0xb638, 0xb639, 0xb63a, 0xb63b, 0xb63c, 0xb63d, 0xb63e, 0xb63f,
+ 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, /* 0xb640 */
+ 0xb648, 0xb649, 0xb64a, 0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f,
+ 0xb650, 0xb651, 0xb652, 0xb653, 0xb654, 0xb655, 0xb656, 0xb657,
+ 0xb658, 0xb659, 0xb65a, 0xb65b, 0xb65c, 0xb65d, 0xb65e, 0xb65f,
+ 0xb660, 0xb661, 0xb662, 0xb663, 0xb664, 0xb665, 0xb666, 0xb667,
+ 0xb668, 0xb669, 0xb66a, 0xb66b, 0xb66c, 0xb66d, 0xb66e, 0xb66f,
+ 0xb670, 0xb671, 0xb672, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677,
+ 0xb678, 0xb679, 0xb67a, 0xb67b, 0xb67c, 0xb67d, 0xb67e, 0xb67f,
+ 0xb680, 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, /* 0xb680 */
+ 0xb688, 0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, 0xb68f,
+ 0xb690, 0xb691, 0xb692, 0xb693, 0xb694, 0xb695, 0xb696, 0xb697,
+ 0xb698, 0xb699, 0xb69a, 0xb69b, 0xb69c, 0xb69d, 0xb69e, 0xb69f,
+ 0xb6a0, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a4, 0xb6a5, 0xb6a6, 0xb6a7,
+ 0xb6a8, 0xb6a9, 0xb6aa, 0xb6ab, 0xb6ac, 0xb6ad, 0xb6ae, 0xb6af,
+ 0xb6b0, 0xb6b1, 0xb6b2, 0xb6b3, 0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7,
+ 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc, 0xb6bd, 0xb6be, 0xb6bf,
+ 0xb6c0, 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, 0xb6c7, /* 0xb6c0 */
+ 0xb6c8, 0xb6c9, 0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd, 0xb6ce, 0xb6cf,
+ 0xb6d0, 0xb6d1, 0xb6d2, 0xb6d3, 0xb6d4, 0xb6d5, 0xb6d6, 0xb6d7,
+ 0xb6d8, 0xb6d9, 0xb6da, 0xb6db, 0xb6dc, 0xb6dd, 0xb6de, 0xb6df,
+ 0xb6e0, 0xb6e1, 0xb6e2, 0xb6e3, 0xb6e4, 0xb6e5, 0xb6e6, 0xb6e7,
+ 0xb6e8, 0xb6e9, 0xb6ea, 0xb6eb, 0xb6ec, 0xb6ed, 0xb6ee, 0xb6ef,
+ 0xb6f0, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f4, 0xb6f5, 0xb6f6, 0xb6f7,
+ 0xb6f8, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc, 0xb6fd, 0xb6fe, 0xb6ff,
+ 0xb700, 0xb701, 0xb702, 0xb703, 0xb704, 0xb705, 0xb706, 0xb707, /* 0xb700 */
+ 0xb708, 0xb709, 0xb70a, 0xb70b, 0xb70c, 0xb70d, 0xb70e, 0xb70f,
+ 0xb710, 0xb711, 0xb712, 0xb713, 0xb714, 0xb715, 0xb716, 0xb717,
+ 0xb718, 0xb719, 0xb71a, 0xb71b, 0xb71c, 0xb71d, 0xb71e, 0xb71f,
+ 0xb720, 0xb721, 0xb722, 0xb723, 0xb724, 0xb725, 0xb726, 0xb727,
+ 0xb728, 0xb729, 0xb72a, 0xb72b, 0xb72c, 0xb72d, 0xb72e, 0xb72f,
+ 0xb730, 0xb731, 0xb732, 0xb733, 0xb734, 0xb735, 0xb736, 0xb737,
+ 0xb738, 0xb739, 0xb73a, 0xb73b, 0xb73c, 0xb73d, 0xb73e, 0xb73f,
+ 0xb740, 0xb741, 0xb742, 0xb743, 0xb744, 0xb745, 0xb746, 0xb747, /* 0xb740 */
+ 0xb748, 0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f,
+ 0xb750, 0xb751, 0xb752, 0xb753, 0xb754, 0xb755, 0xb756, 0xb757,
+ 0xb758, 0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xb75f,
+ 0xb760, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765, 0xb766, 0xb767,
+ 0xb768, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xb76e, 0xb76f,
+ 0xb770, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775, 0xb776, 0xb777,
+ 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77c, 0xb77d, 0xb77e, 0xb77f,
+ 0xb780, 0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786, 0xb787, /* 0xb780 */
+ 0xb788, 0xb789, 0xb78a, 0xb78b, 0xb78c, 0xb78d, 0xb78e, 0xb78f,
+ 0xb790, 0xb791, 0xb792, 0xb793, 0xb794, 0xb795, 0xb796, 0xb797,
+ 0xb798, 0xb799, 0xb79a, 0xb79b, 0xb79c, 0xb79d, 0xb79e, 0xb79f,
+ 0xb7a0, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6, 0xb7a7,
+ 0xb7a8, 0xb7a9, 0xb7aa, 0xb7ab, 0xb7ac, 0xb7ad, 0xb7ae, 0xb7af,
+ 0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, 0xb7b4, 0xb7b5, 0xb7b6, 0xb7b7,
+ 0xb7b8, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, 0xb7be, 0xb7bf,
+ 0xb7c0, 0xb7c1, 0xb7c2, 0xb7c3, 0xb7c4, 0xb7c5, 0xb7c6, 0xb7c7, /* 0xb7c0 */
+ 0xb7c8, 0xb7c9, 0xb7ca, 0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf,
+ 0xb7d0, 0xb7d1, 0xb7d2, 0xb7d3, 0xb7d4, 0xb7d5, 0xb7d6, 0xb7d7,
+ 0xb7d8, 0xb7d9, 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de, 0xb7df,
+ 0xb7e0, 0xb7e1, 0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5, 0xb7e6, 0xb7e7,
+ 0xb7e8, 0xb7e9, 0xb7ea, 0xb7eb, 0xb7ec, 0xb7ed, 0xb7ee, 0xb7ef,
+ 0xb7f0, 0xb7f1, 0xb7f2, 0xb7f3, 0xb7f4, 0xb7f5, 0xb7f6, 0xb7f7,
+ 0xb7f8, 0xb7f9, 0xb7fa, 0xb7fb, 0xb7fc, 0xb7fd, 0xb7fe, 0xb7ff,
+ 0xb800, 0xb801, 0xb802, 0xb803, 0xb804, 0xb805, 0xb806, 0xb807, /* 0xb800 */
+ 0xb808, 0xb809, 0xb80a, 0xb80b, 0xb80c, 0xb80d, 0xb80e, 0xb80f,
+ 0xb810, 0xb811, 0xb812, 0xb813, 0xb814, 0xb815, 0xb816, 0xb817,
+ 0xb818, 0xb819, 0xb81a, 0xb81b, 0xb81c, 0xb81d, 0xb81e, 0xb81f,
+ 0xb820, 0xb821, 0xb822, 0xb823, 0xb824, 0xb825, 0xb826, 0xb827,
+ 0xb828, 0xb829, 0xb82a, 0xb82b, 0xb82c, 0xb82d, 0xb82e, 0xb82f,
+ 0xb830, 0xb831, 0xb832, 0xb833, 0xb834, 0xb835, 0xb836, 0xb837,
+ 0xb838, 0xb839, 0xb83a, 0xb83b, 0xb83c, 0xb83d, 0xb83e, 0xb83f,
+ 0xb840, 0xb841, 0xb842, 0xb843, 0xb844, 0xb845, 0xb846, 0xb847, /* 0xb840 */
+ 0xb848, 0xb849, 0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e, 0xb84f,
+ 0xb850, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855, 0xb856, 0xb857,
+ 0xb858, 0xb859, 0xb85a, 0xb85b, 0xb85c, 0xb85d, 0xb85e, 0xb85f,
+ 0xb860, 0xb861, 0xb862, 0xb863, 0xb864, 0xb865, 0xb866, 0xb867,
+ 0xb868, 0xb869, 0xb86a, 0xb86b, 0xb86c, 0xb86d, 0xb86e, 0xb86f,
+ 0xb870, 0xb871, 0xb872, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877,
+ 0xb878, 0xb879, 0xb87a, 0xb87b, 0xb87c, 0xb87d, 0xb87e, 0xb87f,
+ 0xb880, 0xb881, 0xb882, 0xb883, 0xb884, 0xb885, 0xb886, 0xb887, /* 0xb880 */
+ 0xb888, 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88d, 0xb88e, 0xb88f,
+ 0xb890, 0xb891, 0xb892, 0xb893, 0xb894, 0xb895, 0xb896, 0xb897,
+ 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d, 0xb89e, 0xb89f,
+ 0xb8a0, 0xb8a1, 0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6, 0xb8a7,
+ 0xb8a8, 0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af,
+ 0xb8b0, 0xb8b1, 0xb8b2, 0xb8b3, 0xb8b4, 0xb8b5, 0xb8b6, 0xb8b7,
+ 0xb8b8, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8be, 0xb8bf,
+ 0xb8c0, 0xb8c1, 0xb8c2, 0xb8c3, 0xb8c4, 0xb8c5, 0xb8c6, 0xb8c7, /* 0xb8c0 */
+ 0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xb8cc, 0xb8cd, 0xb8ce, 0xb8cf,
+ 0xb8d0, 0xb8d1, 0xb8d2, 0xb8d3, 0xb8d4, 0xb8d5, 0xb8d6, 0xb8d7,
+ 0xb8d8, 0xb8d9, 0xb8da, 0xb8db, 0xb8dc, 0xb8dd, 0xb8de, 0xb8df,
+ 0xb8e0, 0xb8e1, 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7,
+ 0xb8e8, 0xb8e9, 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ed, 0xb8ee, 0xb8ef,
+ 0xb8f0, 0xb8f1, 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7,
+ 0xb8f8, 0xb8f9, 0xb8fa, 0xb8fb, 0xb8fc, 0xb8fd, 0xb8fe, 0xb8ff,
+ 0xb900, 0xb901, 0xb902, 0xb903, 0xb904, 0xb905, 0xb906, 0xb907, /* 0xb900 */
+ 0xb908, 0xb909, 0xb90a, 0xb90b, 0xb90c, 0xb90d, 0xb90e, 0xb90f,
+ 0xb910, 0xb911, 0xb912, 0xb913, 0xb914, 0xb915, 0xb916, 0xb917,
+ 0xb918, 0xb919, 0xb91a, 0xb91b, 0xb91c, 0xb91d, 0xb91e, 0xb91f,
+ 0xb920, 0xb921, 0xb922, 0xb923, 0xb924, 0xb925, 0xb926, 0xb927,
+ 0xb928, 0xb929, 0xb92a, 0xb92b, 0xb92c, 0xb92d, 0xb92e, 0xb92f,
+ 0xb930, 0xb931, 0xb932, 0xb933, 0xb934, 0xb935, 0xb936, 0xb937,
+ 0xb938, 0xb939, 0xb93a, 0xb93b, 0xb93c, 0xb93d, 0xb93e, 0xb93f,
+ 0xb940, 0xb941, 0xb942, 0xb943, 0xb944, 0xb945, 0xb946, 0xb947, /* 0xb940 */
+ 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94c, 0xb94d, 0xb94e, 0xb94f,
+ 0xb950, 0xb951, 0xb952, 0xb953, 0xb954, 0xb955, 0xb956, 0xb957,
+ 0xb958, 0xb959, 0xb95a, 0xb95b, 0xb95c, 0xb95d, 0xb95e, 0xb95f,
+ 0xb960, 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967,
+ 0xb968, 0xb969, 0xb96a, 0xb96b, 0xb96c, 0xb96d, 0xb96e, 0xb96f,
+ 0xb970, 0xb971, 0xb972, 0xb973, 0xb974, 0xb975, 0xb976, 0xb977,
+ 0xb978, 0xb979, 0xb97a, 0xb97b, 0xb97c, 0xb97d, 0xb97e, 0xb97f,
+ 0xb980, 0xb981, 0xb982, 0xb983, 0xb984, 0xb985, 0xb986, 0xb987, /* 0xb980 */
+ 0xb988, 0xb989, 0xb98a, 0xb98b, 0xb98c, 0xb98d, 0xb98e, 0xb98f,
+ 0xb990, 0xb991, 0xb992, 0xb993, 0xb994, 0xb995, 0xb996, 0xb997,
+ 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, 0xb99e, 0xb99f,
+ 0xb9a0, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5, 0xb9a6, 0xb9a7,
+ 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0xb9ac, 0xb9ad, 0xb9ae, 0xb9af,
+ 0xb9b0, 0xb9b1, 0xb9b2, 0xb9b3, 0xb9b4, 0xb9b5, 0xb9b6, 0xb9b7,
+ 0xb9b8, 0xb9b9, 0xb9ba, 0xb9bb, 0xb9bc, 0xb9bd, 0xb9be, 0xb9bf,
+ 0xb9c0, 0xb9c1, 0xb9c2, 0xb9c3, 0xb9c4, 0xb9c5, 0xb9c6, 0xb9c7, /* 0xb9c0 */
+ 0xb9c8, 0xb9c9, 0xb9ca, 0xb9cb, 0xb9cc, 0xb9cd, 0xb9ce, 0xb9cf,
+ 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d3, 0xb9d4, 0xb9d5, 0xb9d6, 0xb9d7,
+ 0xb9d8, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc, 0xb9dd, 0xb9de, 0xb9df,
+ 0xb9e0, 0xb9e1, 0xb9e2, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e6, 0xb9e7,
+ 0xb9e8, 0xb9e9, 0xb9ea, 0xb9eb, 0xb9ec, 0xb9ed, 0xb9ee, 0xb9ef,
+ 0xb9f0, 0xb9f1, 0xb9f2, 0xb9f3, 0xb9f4, 0xb9f5, 0xb9f6, 0xb9f7,
+ 0xb9f8, 0xb9f9, 0xb9fa, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe, 0xb9ff,
+ 0xba00, 0xba01, 0xba02, 0xba03, 0xba04, 0xba05, 0xba06, 0xba07, /* 0xba00 */
+ 0xba08, 0xba09, 0xba0a, 0xba0b, 0xba0c, 0xba0d, 0xba0e, 0xba0f,
+ 0xba10, 0xba11, 0xba12, 0xba13, 0xba14, 0xba15, 0xba16, 0xba17,
+ 0xba18, 0xba19, 0xba1a, 0xba1b, 0xba1c, 0xba1d, 0xba1e, 0xba1f,
+ 0xba20, 0xba21, 0xba22, 0xba23, 0xba24, 0xba25, 0xba26, 0xba27,
+ 0xba28, 0xba29, 0xba2a, 0xba2b, 0xba2c, 0xba2d, 0xba2e, 0xba2f,
+ 0xba30, 0xba31, 0xba32, 0xba33, 0xba34, 0xba35, 0xba36, 0xba37,
+ 0xba38, 0xba39, 0xba3a, 0xba3b, 0xba3c, 0xba3d, 0xba3e, 0xba3f,
+ 0xba40, 0xba41, 0xba42, 0xba43, 0xba44, 0xba45, 0xba46, 0xba47, /* 0xba40 */
+ 0xba48, 0xba49, 0xba4a, 0xba4b, 0xba4c, 0xba4d, 0xba4e, 0xba4f,
+ 0xba50, 0xba51, 0xba52, 0xba53, 0xba54, 0xba55, 0xba56, 0xba57,
+ 0xba58, 0xba59, 0xba5a, 0xba5b, 0xba5c, 0xba5d, 0xba5e, 0xba5f,
+ 0xba60, 0xba61, 0xba62, 0xba63, 0xba64, 0xba65, 0xba66, 0xba67,
+ 0xba68, 0xba69, 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f,
+ 0xba70, 0xba71, 0xba72, 0xba73, 0xba74, 0xba75, 0xba76, 0xba77,
+ 0xba78, 0xba79, 0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba7e, 0xba7f,
+ 0xba80, 0xba81, 0xba82, 0xba83, 0xba84, 0xba85, 0xba86, 0xba87, /* 0xba80 */
+ 0xba88, 0xba89, 0xba8a, 0xba8b, 0xba8c, 0xba8d, 0xba8e, 0xba8f,
+ 0xba90, 0xba91, 0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97,
+ 0xba98, 0xba99, 0xba9a, 0xba9b, 0xba9c, 0xba9d, 0xba9e, 0xba9f,
+ 0xbaa0, 0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7,
+ 0xbaa8, 0xbaa9, 0xbaaa, 0xbaab, 0xbaac, 0xbaad, 0xbaae, 0xbaaf,
+ 0xbab0, 0xbab1, 0xbab2, 0xbab3, 0xbab4, 0xbab5, 0xbab6, 0xbab7,
+ 0xbab8, 0xbab9, 0xbaba, 0xbabb, 0xbabc, 0xbabd, 0xbabe, 0xbabf,
+ 0xbac0, 0xbac1, 0xbac2, 0xbac3, 0xbac4, 0xbac5, 0xbac6, 0xbac7, /* 0xbac0 */
+ 0xbac8, 0xbac9, 0xbaca, 0xbacb, 0xbacc, 0xbacd, 0xbace, 0xbacf,
+ 0xbad0, 0xbad1, 0xbad2, 0xbad3, 0xbad4, 0xbad5, 0xbad6, 0xbad7,
+ 0xbad8, 0xbad9, 0xbada, 0xbadb, 0xbadc, 0xbadd, 0xbade, 0xbadf,
+ 0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6, 0xbae7,
+ 0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef,
+ 0xbaf0, 0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5, 0xbaf6, 0xbaf7,
+ 0xbaf8, 0xbaf9, 0xbafa, 0xbafb, 0xbafc, 0xbafd, 0xbafe, 0xbaff,
+ 0xbb00, 0xbb01, 0xbb02, 0xbb03, 0xbb04, 0xbb05, 0xbb06, 0xbb07, /* 0xbb00 */
+ 0xbb08, 0xbb09, 0xbb0a, 0xbb0b, 0xbb0c, 0xbb0d, 0xbb0e, 0xbb0f,
+ 0xbb10, 0xbb11, 0xbb12, 0xbb13, 0xbb14, 0xbb15, 0xbb16, 0xbb17,
+ 0xbb18, 0xbb19, 0xbb1a, 0xbb1b, 0xbb1c, 0xbb1d, 0xbb1e, 0xbb1f,
+ 0xbb20, 0xbb21, 0xbb22, 0xbb23, 0xbb24, 0xbb25, 0xbb26, 0xbb27,
+ 0xbb28, 0xbb29, 0xbb2a, 0xbb2b, 0xbb2c, 0xbb2d, 0xbb2e, 0xbb2f,
+ 0xbb30, 0xbb31, 0xbb32, 0xbb33, 0xbb34, 0xbb35, 0xbb36, 0xbb37,
+ 0xbb38, 0xbb39, 0xbb3a, 0xbb3b, 0xbb3c, 0xbb3d, 0xbb3e, 0xbb3f,
+ 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb44, 0xbb45, 0xbb46, 0xbb47, /* 0xbb40 */
+ 0xbb48, 0xbb49, 0xbb4a, 0xbb4b, 0xbb4c, 0xbb4d, 0xbb4e, 0xbb4f,
+ 0xbb50, 0xbb51, 0xbb52, 0xbb53, 0xbb54, 0xbb55, 0xbb56, 0xbb57,
+ 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c, 0xbb5d, 0xbb5e, 0xbb5f,
+ 0xbb60, 0xbb61, 0xbb62, 0xbb63, 0xbb64, 0xbb65, 0xbb66, 0xbb67,
+ 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0xbb6c, 0xbb6d, 0xbb6e, 0xbb6f,
+ 0xbb70, 0xbb71, 0xbb72, 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77,
+ 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb7e, 0xbb7f,
+ 0xbb80, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, 0xbb87, /* 0xbb80 */
+ 0xbb88, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8c, 0xbb8d, 0xbb8e, 0xbb8f,
+ 0xbb90, 0xbb91, 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96, 0xbb97,
+ 0xbb98, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, 0xbb9e, 0xbb9f,
+ 0xbba0, 0xbba1, 0xbba2, 0xbba3, 0xbba4, 0xbba5, 0xbba6, 0xbba7,
+ 0xbba8, 0xbba9, 0xbbaa, 0xbbab, 0xbbac, 0xbbad, 0xbbae, 0xbbaf,
+ 0xbbb0, 0xbbb1, 0xbbb2, 0xbbb3, 0xbbb4, 0xbbb5, 0xbbb6, 0xbbb7,
+ 0xbbb8, 0xbbb9, 0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf,
+ 0xbbc0, 0xbbc1, 0xbbc2, 0xbbc3, 0xbbc4, 0xbbc5, 0xbbc6, 0xbbc7, /* 0xbbc0 */
+ 0xbbc8, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce, 0xbbcf,
+ 0xbbd0, 0xbbd1, 0xbbd2, 0xbbd3, 0xbbd4, 0xbbd5, 0xbbd6, 0xbbd7,
+ 0xbbd8, 0xbbd9, 0xbbda, 0xbbdb, 0xbbdc, 0xbbdd, 0xbbde, 0xbbdf,
+ 0xbbe0, 0xbbe1, 0xbbe2, 0xbbe3, 0xbbe4, 0xbbe5, 0xbbe6, 0xbbe7,
+ 0xbbe8, 0xbbe9, 0xbbea, 0xbbeb, 0xbbec, 0xbbed, 0xbbee, 0xbbef,
+ 0xbbf0, 0xbbf1, 0xbbf2, 0xbbf3, 0xbbf4, 0xbbf5, 0xbbf6, 0xbbf7,
+ 0xbbf8, 0xbbf9, 0xbbfa, 0xbbfb, 0xbbfc, 0xbbfd, 0xbbfe, 0xbbff,
+ 0xbc00, 0xbc01, 0xbc02, 0xbc03, 0xbc04, 0xbc05, 0xbc06, 0xbc07, /* 0xbc00 */
+ 0xbc08, 0xbc09, 0xbc0a, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0e, 0xbc0f,
+ 0xbc10, 0xbc11, 0xbc12, 0xbc13, 0xbc14, 0xbc15, 0xbc16, 0xbc17,
+ 0xbc18, 0xbc19, 0xbc1a, 0xbc1b, 0xbc1c, 0xbc1d, 0xbc1e, 0xbc1f,
+ 0xbc20, 0xbc21, 0xbc22, 0xbc23, 0xbc24, 0xbc25, 0xbc26, 0xbc27,
+ 0xbc28, 0xbc29, 0xbc2a, 0xbc2b, 0xbc2c, 0xbc2d, 0xbc2e, 0xbc2f,
+ 0xbc30, 0xbc31, 0xbc32, 0xbc33, 0xbc34, 0xbc35, 0xbc36, 0xbc37,
+ 0xbc38, 0xbc39, 0xbc3a, 0xbc3b, 0xbc3c, 0xbc3d, 0xbc3e, 0xbc3f,
+ 0xbc40, 0xbc41, 0xbc42, 0xbc43, 0xbc44, 0xbc45, 0xbc46, 0xbc47, /* 0xbc40 */
+ 0xbc48, 0xbc49, 0xbc4a, 0xbc4b, 0xbc4c, 0xbc4d, 0xbc4e, 0xbc4f,
+ 0xbc50, 0xbc51, 0xbc52, 0xbc53, 0xbc54, 0xbc55, 0xbc56, 0xbc57,
+ 0xbc58, 0xbc59, 0xbc5a, 0xbc5b, 0xbc5c, 0xbc5d, 0xbc5e, 0xbc5f,
+ 0xbc60, 0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67,
+ 0xbc68, 0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, 0xbc6f,
+ 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, 0xbc77,
+ 0xbc78, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, 0xbc7e, 0xbc7f,
+ 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xbc86, 0xbc87, /* 0xbc80 */
+ 0xbc88, 0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, 0xbc8f,
+ 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbc94, 0xbc95, 0xbc96, 0xbc97,
+ 0xbc98, 0xbc99, 0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f,
+ 0xbca0, 0xbca1, 0xbca2, 0xbca3, 0xbca4, 0xbca5, 0xbca6, 0xbca7,
+ 0xbca8, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, 0xbcad, 0xbcae, 0xbcaf,
+ 0xbcb0, 0xbcb1, 0xbcb2, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcb6, 0xbcb7,
+ 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0xbcbc, 0xbcbd, 0xbcbe, 0xbcbf,
+ 0xbcc0, 0xbcc1, 0xbcc2, 0xbcc3, 0xbcc4, 0xbcc5, 0xbcc6, 0xbcc7, /* 0xbcc0 */
+ 0xbcc8, 0xbcc9, 0xbcca, 0xbccb, 0xbccc, 0xbccd, 0xbcce, 0xbccf,
+ 0xbcd0, 0xbcd1, 0xbcd2, 0xbcd3, 0xbcd4, 0xbcd5, 0xbcd6, 0xbcd7,
+ 0xbcd8, 0xbcd9, 0xbcda, 0xbcdb, 0xbcdc, 0xbcdd, 0xbcde, 0xbcdf,
+ 0xbce0, 0xbce1, 0xbce2, 0xbce3, 0xbce4, 0xbce5, 0xbce6, 0xbce7,
+ 0xbce8, 0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced, 0xbcee, 0xbcef,
+ 0xbcf0, 0xbcf1, 0xbcf2, 0xbcf3, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf7,
+ 0xbcf8, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfc, 0xbcfd, 0xbcfe, 0xbcff,
+ 0xbd00, 0xbd01, 0xbd02, 0xbd03, 0xbd04, 0xbd05, 0xbd06, 0xbd07, /* 0xbd00 */
+ 0xbd08, 0xbd09, 0xbd0a, 0xbd0b, 0xbd0c, 0xbd0d, 0xbd0e, 0xbd0f,
+ 0xbd10, 0xbd11, 0xbd12, 0xbd13, 0xbd14, 0xbd15, 0xbd16, 0xbd17,
+ 0xbd18, 0xbd19, 0xbd1a, 0xbd1b, 0xbd1c, 0xbd1d, 0xbd1e, 0xbd1f,
+ 0xbd20, 0xbd21, 0xbd22, 0xbd23, 0xbd24, 0xbd25, 0xbd26, 0xbd27,
+ 0xbd28, 0xbd29, 0xbd2a, 0xbd2b, 0xbd2c, 0xbd2d, 0xbd2e, 0xbd2f,
+ 0xbd30, 0xbd31, 0xbd32, 0xbd33, 0xbd34, 0xbd35, 0xbd36, 0xbd37,
+ 0xbd38, 0xbd39, 0xbd3a, 0xbd3b, 0xbd3c, 0xbd3d, 0xbd3e, 0xbd3f,
+ 0xbd40, 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, /* 0xbd40 */
+ 0xbd48, 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f,
+ 0xbd50, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57,
+ 0xbd58, 0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f,
+ 0xbd60, 0xbd61, 0xbd62, 0xbd63, 0xbd64, 0xbd65, 0xbd66, 0xbd67,
+ 0xbd68, 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f,
+ 0xbd70, 0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xbd77,
+ 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd7f,
+ 0xbd80, 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87, /* 0xbd80 */
+ 0xbd88, 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f,
+ 0xbd90, 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97,
+ 0xbd98, 0xbd99, 0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f,
+ 0xbda0, 0xbda1, 0xbda2, 0xbda3, 0xbda4, 0xbda5, 0xbda6, 0xbda7,
+ 0xbda8, 0xbda9, 0xbdaa, 0xbdab, 0xbdac, 0xbdad, 0xbdae, 0xbdaf,
+ 0xbdb0, 0xbdb1, 0xbdb2, 0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7,
+ 0xbdb8, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd, 0xbdbe, 0xbdbf,
+ 0xbdc0, 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, 0xbdc7, /* 0xbdc0 */
+ 0xbdc8, 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, 0xbdcd, 0xbdce, 0xbdcf,
+ 0xbdd0, 0xbdd1, 0xbdd2, 0xbdd3, 0xbdd4, 0xbdd5, 0xbdd6, 0xbdd7,
+ 0xbdd8, 0xbdd9, 0xbdda, 0xbddb, 0xbddc, 0xbddd, 0xbdde, 0xbddf,
+ 0xbde0, 0xbde1, 0xbde2, 0xbde3, 0xbde4, 0xbde5, 0xbde6, 0xbde7,
+ 0xbde8, 0xbde9, 0xbdea, 0xbdeb, 0xbdec, 0xbded, 0xbdee, 0xbdef,
+ 0xbdf0, 0xbdf1, 0xbdf2, 0xbdf3, 0xbdf4, 0xbdf5, 0xbdf6, 0xbdf7,
+ 0xbdf8, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe, 0xbdff,
+ 0xbe00, 0xbe01, 0xbe02, 0xbe03, 0xbe04, 0xbe05, 0xbe06, 0xbe07, /* 0xbe00 */
+ 0xbe08, 0xbe09, 0xbe0a, 0xbe0b, 0xbe0c, 0xbe0d, 0xbe0e, 0xbe0f,
+ 0xbe10, 0xbe11, 0xbe12, 0xbe13, 0xbe14, 0xbe15, 0xbe16, 0xbe17,
+ 0xbe18, 0xbe19, 0xbe1a, 0xbe1b, 0xbe1c, 0xbe1d, 0xbe1e, 0xbe1f,
+ 0xbe20, 0xbe21, 0xbe22, 0xbe23, 0xbe24, 0xbe25, 0xbe26, 0xbe27,
+ 0xbe28, 0xbe29, 0xbe2a, 0xbe2b, 0xbe2c, 0xbe2d, 0xbe2e, 0xbe2f,
+ 0xbe30, 0xbe31, 0xbe32, 0xbe33, 0xbe34, 0xbe35, 0xbe36, 0xbe37,
+ 0xbe38, 0xbe39, 0xbe3a, 0xbe3b, 0xbe3c, 0xbe3d, 0xbe3e, 0xbe3f,
+ 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46, 0xbe47, /* 0xbe40 */
+ 0xbe48, 0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xbe4d, 0xbe4e, 0xbe4f,
+ 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xbe54, 0xbe55, 0xbe56, 0xbe57,
+ 0xbe58, 0xbe59, 0xbe5a, 0xbe5b, 0xbe5c, 0xbe5d, 0xbe5e, 0xbe5f,
+ 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64, 0xbe65, 0xbe66, 0xbe67,
+ 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e, 0xbe6f,
+ 0xbe70, 0xbe71, 0xbe72, 0xbe73, 0xbe74, 0xbe75, 0xbe76, 0xbe77,
+ 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xbe7c, 0xbe7d, 0xbe7e, 0xbe7f,
+ 0xbe80, 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85, 0xbe86, 0xbe87, /* 0xbe80 */
+ 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8d, 0xbe8e, 0xbe8f,
+ 0xbe90, 0xbe91, 0xbe92, 0xbe93, 0xbe94, 0xbe95, 0xbe96, 0xbe97,
+ 0xbe98, 0xbe99, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e, 0xbe9f,
+ 0xbea0, 0xbea1, 0xbea2, 0xbea3, 0xbea4, 0xbea5, 0xbea6, 0xbea7,
+ 0xbea8, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead, 0xbeae, 0xbeaf,
+ 0xbeb0, 0xbeb1, 0xbeb2, 0xbeb3, 0xbeb4, 0xbeb5, 0xbeb6, 0xbeb7,
+ 0xbeb8, 0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, 0xbebe, 0xbebf,
+ 0xbec0, 0xbec1, 0xbec2, 0xbec3, 0xbec4, 0xbec5, 0xbec6, 0xbec7, /* 0xbec0 */
+ 0xbec8, 0xbec9, 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf,
+ 0xbed0, 0xbed1, 0xbed2, 0xbed3, 0xbed4, 0xbed5, 0xbed6, 0xbed7,
+ 0xbed8, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede, 0xbedf,
+ 0xbee0, 0xbee1, 0xbee2, 0xbee3, 0xbee4, 0xbee5, 0xbee6, 0xbee7,
+ 0xbee8, 0xbee9, 0xbeea, 0xbeeb, 0xbeec, 0xbeed, 0xbeee, 0xbeef,
+ 0xbef0, 0xbef1, 0xbef2, 0xbef3, 0xbef4, 0xbef5, 0xbef6, 0xbef7,
+ 0xbef8, 0xbef9, 0xbefa, 0xbefb, 0xbefc, 0xbefd, 0xbefe, 0xbeff,
+ 0xbf00, 0xbf01, 0xbf02, 0xbf03, 0xbf04, 0xbf05, 0xbf06, 0xbf07, /* 0xbf00 */
+ 0xbf08, 0xbf09, 0xbf0a, 0xbf0b, 0xbf0c, 0xbf0d, 0xbf0e, 0xbf0f,
+ 0xbf10, 0xbf11, 0xbf12, 0xbf13, 0xbf14, 0xbf15, 0xbf16, 0xbf17,
+ 0xbf18, 0xbf19, 0xbf1a, 0xbf1b, 0xbf1c, 0xbf1d, 0xbf1e, 0xbf1f,
+ 0xbf20, 0xbf21, 0xbf22, 0xbf23, 0xbf24, 0xbf25, 0xbf26, 0xbf27,
+ 0xbf28, 0xbf29, 0xbf2a, 0xbf2b, 0xbf2c, 0xbf2d, 0xbf2e, 0xbf2f,
+ 0xbf30, 0xbf31, 0xbf32, 0xbf33, 0xbf34, 0xbf35, 0xbf36, 0xbf37,
+ 0xbf38, 0xbf39, 0xbf3a, 0xbf3b, 0xbf3c, 0xbf3d, 0xbf3e, 0xbf3f,
+ 0xbf40, 0xbf41, 0xbf42, 0xbf43, 0xbf44, 0xbf45, 0xbf46, 0xbf47, /* 0xbf40 */
+ 0xbf48, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f,
+ 0xbf50, 0xbf51, 0xbf52, 0xbf53, 0xbf54, 0xbf55, 0xbf56, 0xbf57,
+ 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c, 0xbf5d, 0xbf5e, 0xbf5f,
+ 0xbf60, 0xbf61, 0xbf62, 0xbf63, 0xbf64, 0xbf65, 0xbf66, 0xbf67,
+ 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, 0xbf6d, 0xbf6e, 0xbf6f,
+ 0xbf70, 0xbf71, 0xbf72, 0xbf73, 0xbf74, 0xbf75, 0xbf76, 0xbf77,
+ 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, 0xbf7e, 0xbf7f,
+ 0xbf80, 0xbf81, 0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, /* 0xbf80 */
+ 0xbf88, 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f,
+ 0xbf90, 0xbf91, 0xbf92, 0xbf93, 0xbf94, 0xbf95, 0xbf96, 0xbf97,
+ 0xbf98, 0xbf99, 0xbf9a, 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f,
+ 0xbfa0, 0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4, 0xbfa5, 0xbfa6, 0xbfa7,
+ 0xbfa8, 0xbfa9, 0xbfaa, 0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf,
+ 0xbfb0, 0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4, 0xbfb5, 0xbfb6, 0xbfb7,
+ 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe, 0xbfbf,
+ 0xbfc0, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc5, 0xbfc6, 0xbfc7, /* 0xbfc0 */
+ 0xbfc8, 0xbfc9, 0xbfca, 0xbfcb, 0xbfcc, 0xbfcd, 0xbfce, 0xbfcf,
+ 0xbfd0, 0xbfd1, 0xbfd2, 0xbfd3, 0xbfd4, 0xbfd5, 0xbfd6, 0xbfd7,
+ 0xbfd8, 0xbfd9, 0xbfda, 0xbfdb, 0xbfdc, 0xbfdd, 0xbfde, 0xbfdf,
+ 0xbfe0, 0xbfe1, 0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5, 0xbfe6, 0xbfe7,
+ 0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee, 0xbfef,
+ 0xbff0, 0xbff1, 0xbff2, 0xbff3, 0xbff4, 0xbff5, 0xbff6, 0xbff7,
+ 0xbff8, 0xbff9, 0xbffa, 0xbffb, 0xbffc, 0xbffd, 0xbffe, 0xbfff,
+ 0xc000, 0xc001, 0xc002, 0xc003, 0xc004, 0xc005, 0xc006, 0xc007, /* 0xc000 */
+ 0xc008, 0xc009, 0xc00a, 0xc00b, 0xc00c, 0xc00d, 0xc00e, 0xc00f,
+ 0xc010, 0xc011, 0xc012, 0xc013, 0xc014, 0xc015, 0xc016, 0xc017,
+ 0xc018, 0xc019, 0xc01a, 0xc01b, 0xc01c, 0xc01d, 0xc01e, 0xc01f,
+ 0xc020, 0xc021, 0xc022, 0xc023, 0xc024, 0xc025, 0xc026, 0xc027,
+ 0xc028, 0xc029, 0xc02a, 0xc02b, 0xc02c, 0xc02d, 0xc02e, 0xc02f,
+ 0xc030, 0xc031, 0xc032, 0xc033, 0xc034, 0xc035, 0xc036, 0xc037,
+ 0xc038, 0xc039, 0xc03a, 0xc03b, 0xc03c, 0xc03d, 0xc03e, 0xc03f,
+ 0xc040, 0xc041, 0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, /* 0xc040 */
+ 0xc048, 0xc049, 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f,
+ 0xc050, 0xc051, 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057,
+ 0xc058, 0xc059, 0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e, 0xc05f,
+ 0xc060, 0xc061, 0xc062, 0xc063, 0xc064, 0xc065, 0xc066, 0xc067,
+ 0xc068, 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f,
+ 0xc070, 0xc071, 0xc072, 0xc073, 0xc074, 0xc075, 0xc076, 0xc077,
+ 0xc078, 0xc079, 0xc07a, 0xc07b, 0xc07c, 0xc07d, 0xc07e, 0xc07f,
+ 0xc080, 0xc081, 0xc082, 0xc083, 0xc084, 0xc085, 0xc086, 0xc087, /* 0xc080 */
+ 0xc088, 0xc089, 0xc08a, 0xc08b, 0xc08c, 0xc08d, 0xc08e, 0xc08f,
+ 0xc090, 0xc091, 0xc092, 0xc093, 0xc094, 0xc095, 0xc096, 0xc097,
+ 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, 0xc09f,
+ 0xc0a0, 0xc0a1, 0xc0a2, 0xc0a3, 0xc0a4, 0xc0a5, 0xc0a6, 0xc0a7,
+ 0xc0a8, 0xc0a9, 0xc0aa, 0xc0ab, 0xc0ac, 0xc0ad, 0xc0ae, 0xc0af,
+ 0xc0b0, 0xc0b1, 0xc0b2, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0b7,
+ 0xc0b8, 0xc0b9, 0xc0ba, 0xc0bb, 0xc0bc, 0xc0bd, 0xc0be, 0xc0bf,
+ 0xc0c0, 0xc0c1, 0xc0c2, 0xc0c3, 0xc0c4, 0xc0c5, 0xc0c6, 0xc0c7, /* 0xc0c0 */
+ 0xc0c8, 0xc0c9, 0xc0ca, 0xc0cb, 0xc0cc, 0xc0cd, 0xc0ce, 0xc0cf,
+ 0xc0d0, 0xc0d1, 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6, 0xc0d7,
+ 0xc0d8, 0xc0d9, 0xc0da, 0xc0db, 0xc0dc, 0xc0dd, 0xc0de, 0xc0df,
+ 0xc0e0, 0xc0e1, 0xc0e2, 0xc0e3, 0xc0e4, 0xc0e5, 0xc0e6, 0xc0e7,
+ 0xc0e8, 0xc0e9, 0xc0ea, 0xc0eb, 0xc0ec, 0xc0ed, 0xc0ee, 0xc0ef,
+ 0xc0f0, 0xc0f1, 0xc0f2, 0xc0f3, 0xc0f4, 0xc0f5, 0xc0f6, 0xc0f7,
+ 0xc0f8, 0xc0f9, 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc0ff,
+ 0xc100, 0xc101, 0xc102, 0xc103, 0xc104, 0xc105, 0xc106, 0xc107, /* 0xc100 */
+ 0xc108, 0xc109, 0xc10a, 0xc10b, 0xc10c, 0xc10d, 0xc10e, 0xc10f,
+ 0xc110, 0xc111, 0xc112, 0xc113, 0xc114, 0xc115, 0xc116, 0xc117,
+ 0xc118, 0xc119, 0xc11a, 0xc11b, 0xc11c, 0xc11d, 0xc11e, 0xc11f,
+ 0xc120, 0xc121, 0xc122, 0xc123, 0xc124, 0xc125, 0xc126, 0xc127,
+ 0xc128, 0xc129, 0xc12a, 0xc12b, 0xc12c, 0xc12d, 0xc12e, 0xc12f,
+ 0xc130, 0xc131, 0xc132, 0xc133, 0xc134, 0xc135, 0xc136, 0xc137,
+ 0xc138, 0xc139, 0xc13a, 0xc13b, 0xc13c, 0xc13d, 0xc13e, 0xc13f,
+ 0xc140, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145, 0xc146, 0xc147, /* 0xc140 */
+ 0xc148, 0xc149, 0xc14a, 0xc14b, 0xc14c, 0xc14d, 0xc14e, 0xc14f,
+ 0xc150, 0xc151, 0xc152, 0xc153, 0xc154, 0xc155, 0xc156, 0xc157,
+ 0xc158, 0xc159, 0xc15a, 0xc15b, 0xc15c, 0xc15d, 0xc15e, 0xc15f,
+ 0xc160, 0xc161, 0xc162, 0xc163, 0xc164, 0xc165, 0xc166, 0xc167,
+ 0xc168, 0xc169, 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f,
+ 0xc170, 0xc171, 0xc172, 0xc173, 0xc174, 0xc175, 0xc176, 0xc177,
+ 0xc178, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc17e, 0xc17f,
+ 0xc180, 0xc181, 0xc182, 0xc183, 0xc184, 0xc185, 0xc186, 0xc187, /* 0xc180 */
+ 0xc188, 0xc189, 0xc18a, 0xc18b, 0xc18c, 0xc18d, 0xc18e, 0xc18f,
+ 0xc190, 0xc191, 0xc192, 0xc193, 0xc194, 0xc195, 0xc196, 0xc197,
+ 0xc198, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d, 0xc19e, 0xc19f,
+ 0xc1a0, 0xc1a1, 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a5, 0xc1a6, 0xc1a7,
+ 0xc1a8, 0xc1a9, 0xc1aa, 0xc1ab, 0xc1ac, 0xc1ad, 0xc1ae, 0xc1af,
+ 0xc1b0, 0xc1b1, 0xc1b2, 0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6, 0xc1b7,
+ 0xc1b8, 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1bd, 0xc1be, 0xc1bf,
+ 0xc1c0, 0xc1c1, 0xc1c2, 0xc1c3, 0xc1c4, 0xc1c5, 0xc1c6, 0xc1c7, /* 0xc1c0 */
+ 0xc1c8, 0xc1c9, 0xc1ca, 0xc1cb, 0xc1cc, 0xc1cd, 0xc1ce, 0xc1cf,
+ 0xc1d0, 0xc1d1, 0xc1d2, 0xc1d3, 0xc1d4, 0xc1d5, 0xc1d6, 0xc1d7,
+ 0xc1d8, 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de, 0xc1df,
+ 0xc1e0, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e6, 0xc1e7,
+ 0xc1e8, 0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef,
+ 0xc1f0, 0xc1f1, 0xc1f2, 0xc1f3, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7,
+ 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0xc1fc, 0xc1fd, 0xc1fe, 0xc1ff,
+ 0xc200, 0xc201, 0xc202, 0xc203, 0xc204, 0xc205, 0xc206, 0xc207, /* 0xc200 */
+ 0xc208, 0xc209, 0xc20a, 0xc20b, 0xc20c, 0xc20d, 0xc20e, 0xc20f,
+ 0xc210, 0xc211, 0xc212, 0xc213, 0xc214, 0xc215, 0xc216, 0xc217,
+ 0xc218, 0xc219, 0xc21a, 0xc21b, 0xc21c, 0xc21d, 0xc21e, 0xc21f,
+ 0xc220, 0xc221, 0xc222, 0xc223, 0xc224, 0xc225, 0xc226, 0xc227,
+ 0xc228, 0xc229, 0xc22a, 0xc22b, 0xc22c, 0xc22d, 0xc22e, 0xc22f,
+ 0xc230, 0xc231, 0xc232, 0xc233, 0xc234, 0xc235, 0xc236, 0xc237,
+ 0xc238, 0xc239, 0xc23a, 0xc23b, 0xc23c, 0xc23d, 0xc23e, 0xc23f,
+ 0xc240, 0xc241, 0xc242, 0xc243, 0xc244, 0xc245, 0xc246, 0xc247, /* 0xc240 */
+ 0xc248, 0xc249, 0xc24a, 0xc24b, 0xc24c, 0xc24d, 0xc24e, 0xc24f,
+ 0xc250, 0xc251, 0xc252, 0xc253, 0xc254, 0xc255, 0xc256, 0xc257,
+ 0xc258, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e, 0xc25f,
+ 0xc260, 0xc261, 0xc262, 0xc263, 0xc264, 0xc265, 0xc266, 0xc267,
+ 0xc268, 0xc269, 0xc26a, 0xc26b, 0xc26c, 0xc26d, 0xc26e, 0xc26f,
+ 0xc270, 0xc271, 0xc272, 0xc273, 0xc274, 0xc275, 0xc276, 0xc277,
+ 0xc278, 0xc279, 0xc27a, 0xc27b, 0xc27c, 0xc27d, 0xc27e, 0xc27f,
+ 0xc280, 0xc281, 0xc282, 0xc283, 0xc284, 0xc285, 0xc286, 0xc287, /* 0xc280 */
+ 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d, 0xc28e, 0xc28f,
+ 0xc290, 0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296, 0xc297,
+ 0xc298, 0xc299, 0xc29a, 0xc29b, 0xc29c, 0xc29d, 0xc29e, 0xc29f,
+ 0xc2a0, 0xc2a1, 0xc2a2, 0xc2a3, 0xc2a4, 0xc2a5, 0xc2a6, 0xc2a7,
+ 0xc2a8, 0xc2a9, 0xc2aa, 0xc2ab, 0xc2ac, 0xc2ad, 0xc2ae, 0xc2af,
+ 0xc2b0, 0xc2b1, 0xc2b2, 0xc2b3, 0xc2b4, 0xc2b5, 0xc2b6, 0xc2b7,
+ 0xc2b8, 0xc2b9, 0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2be, 0xc2bf,
+ 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6, 0xc2c7, /* 0xc2c0 */
+ 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce, 0xc2cf,
+ 0xc2d0, 0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5, 0xc2d6, 0xc2d7,
+ 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0xc2dc, 0xc2dd, 0xc2de, 0xc2df,
+ 0xc2e0, 0xc2e1, 0xc2e2, 0xc2e3, 0xc2e4, 0xc2e5, 0xc2e6, 0xc2e7,
+ 0xc2e8, 0xc2e9, 0xc2ea, 0xc2eb, 0xc2ec, 0xc2ed, 0xc2ee, 0xc2ef,
+ 0xc2f0, 0xc2f1, 0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f6, 0xc2f7,
+ 0xc2f8, 0xc2f9, 0xc2fa, 0xc2fb, 0xc2fc, 0xc2fd, 0xc2fe, 0xc2ff,
+ 0xc300, 0xc301, 0xc302, 0xc303, 0xc304, 0xc305, 0xc306, 0xc307, /* 0xc300 */
+ 0xc308, 0xc309, 0xc30a, 0xc30b, 0xc30c, 0xc30d, 0xc30e, 0xc30f,
+ 0xc310, 0xc311, 0xc312, 0xc313, 0xc314, 0xc315, 0xc316, 0xc317,
+ 0xc318, 0xc319, 0xc31a, 0xc31b, 0xc31c, 0xc31d, 0xc31e, 0xc31f,
+ 0xc320, 0xc321, 0xc322, 0xc323, 0xc324, 0xc325, 0xc326, 0xc327,
+ 0xc328, 0xc329, 0xc32a, 0xc32b, 0xc32c, 0xc32d, 0xc32e, 0xc32f,
+ 0xc330, 0xc331, 0xc332, 0xc333, 0xc334, 0xc335, 0xc336, 0xc337,
+ 0xc338, 0xc339, 0xc33a, 0xc33b, 0xc33c, 0xc33d, 0xc33e, 0xc33f,
+ 0xc340, 0xc341, 0xc342, 0xc343, 0xc344, 0xc345, 0xc346, 0xc347, /* 0xc340 */
+ 0xc348, 0xc349, 0xc34a, 0xc34b, 0xc34c, 0xc34d, 0xc34e, 0xc34f,
+ 0xc350, 0xc351, 0xc352, 0xc353, 0xc354, 0xc355, 0xc356, 0xc357,
+ 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c, 0xc35d, 0xc35e, 0xc35f,
+ 0xc360, 0xc361, 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367,
+ 0xc368, 0xc369, 0xc36a, 0xc36b, 0xc36c, 0xc36d, 0xc36e, 0xc36f,
+ 0xc370, 0xc371, 0xc372, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377,
+ 0xc378, 0xc379, 0xc37a, 0xc37b, 0xc37c, 0xc37d, 0xc37e, 0xc37f,
+ 0xc380, 0xc381, 0xc382, 0xc383, 0xc384, 0xc385, 0xc386, 0xc387, /* 0xc380 */
+ 0xc388, 0xc389, 0xc38a, 0xc38b, 0xc38c, 0xc38d, 0xc38e, 0xc38f,
+ 0xc390, 0xc391, 0xc392, 0xc393, 0xc394, 0xc395, 0xc396, 0xc397,
+ 0xc398, 0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f,
+ 0xc3a0, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4, 0xc3a5, 0xc3a6, 0xc3a7,
+ 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, 0xc3af,
+ 0xc3b0, 0xc3b1, 0xc3b2, 0xc3b3, 0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7,
+ 0xc3b8, 0xc3b9, 0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf,
+ 0xc3c0, 0xc3c1, 0xc3c2, 0xc3c3, 0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, /* 0xc3c0 */
+ 0xc3c8, 0xc3c9, 0xc3ca, 0xc3cb, 0xc3cc, 0xc3cd, 0xc3ce, 0xc3cf,
+ 0xc3d0, 0xc3d1, 0xc3d2, 0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6, 0xc3d7,
+ 0xc3d8, 0xc3d9, 0xc3da, 0xc3db, 0xc3dc, 0xc3dd, 0xc3de, 0xc3df,
+ 0xc3e0, 0xc3e1, 0xc3e2, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6, 0xc3e7,
+ 0xc3e8, 0xc3e9, 0xc3ea, 0xc3eb, 0xc3ec, 0xc3ed, 0xc3ee, 0xc3ef,
+ 0xc3f0, 0xc3f1, 0xc3f2, 0xc3f3, 0xc3f4, 0xc3f5, 0xc3f6, 0xc3f7,
+ 0xc3f8, 0xc3f9, 0xc3fa, 0xc3fb, 0xc3fc, 0xc3fd, 0xc3fe, 0xc3ff,
+ 0xc400, 0xc401, 0xc402, 0xc403, 0xc404, 0xc405, 0xc406, 0xc407, /* 0xc400 */
+ 0xc408, 0xc409, 0xc40a, 0xc40b, 0xc40c, 0xc40d, 0xc40e, 0xc40f,
+ 0xc410, 0xc411, 0xc412, 0xc413, 0xc414, 0xc415, 0xc416, 0xc417,
+ 0xc418, 0xc419, 0xc41a, 0xc41b, 0xc41c, 0xc41d, 0xc41e, 0xc41f,
+ 0xc420, 0xc421, 0xc422, 0xc423, 0xc424, 0xc425, 0xc426, 0xc427,
+ 0xc428, 0xc429, 0xc42a, 0xc42b, 0xc42c, 0xc42d, 0xc42e, 0xc42f,
+ 0xc430, 0xc431, 0xc432, 0xc433, 0xc434, 0xc435, 0xc436, 0xc437,
+ 0xc438, 0xc439, 0xc43a, 0xc43b, 0xc43c, 0xc43d, 0xc43e, 0xc43f,
+ 0xc440, 0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xc446, 0xc447, /* 0xc440 */
+ 0xc448, 0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e, 0xc44f,
+ 0xc450, 0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456, 0xc457,
+ 0xc458, 0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d, 0xc45e, 0xc45f,
+ 0xc460, 0xc461, 0xc462, 0xc463, 0xc464, 0xc465, 0xc466, 0xc467,
+ 0xc468, 0xc469, 0xc46a, 0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xc46f,
+ 0xc470, 0xc471, 0xc472, 0xc473, 0xc474, 0xc475, 0xc476, 0xc477,
+ 0xc478, 0xc479, 0xc47a, 0xc47b, 0xc47c, 0xc47d, 0xc47e, 0xc47f,
+ 0xc480, 0xc481, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, 0xc487, /* 0xc480 */
+ 0xc488, 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f,
+ 0xc490, 0xc491, 0xc492, 0xc493, 0xc494, 0xc495, 0xc496, 0xc497,
+ 0xc498, 0xc499, 0xc49a, 0xc49b, 0xc49c, 0xc49d, 0xc49e, 0xc49f,
+ 0xc4a0, 0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4, 0xc4a5, 0xc4a6, 0xc4a7,
+ 0xc4a8, 0xc4a9, 0xc4aa, 0xc4ab, 0xc4ac, 0xc4ad, 0xc4ae, 0xc4af,
+ 0xc4b0, 0xc4b1, 0xc4b2, 0xc4b3, 0xc4b4, 0xc4b5, 0xc4b6, 0xc4b7,
+ 0xc4b8, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bc, 0xc4bd, 0xc4be, 0xc4bf,
+ 0xc4c0, 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c6, 0xc4c7, /* 0xc4c0 */
+ 0xc4c8, 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf,
+ 0xc4d0, 0xc4d1, 0xc4d2, 0xc4d3, 0xc4d4, 0xc4d5, 0xc4d6, 0xc4d7,
+ 0xc4d8, 0xc4d9, 0xc4da, 0xc4db, 0xc4dc, 0xc4dd, 0xc4de, 0xc4df,
+ 0xc4e0, 0xc4e1, 0xc4e2, 0xc4e3, 0xc4e4, 0xc4e5, 0xc4e6, 0xc4e7,
+ 0xc4e8, 0xc4e9, 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef,
+ 0xc4f0, 0xc4f1, 0xc4f2, 0xc4f3, 0xc4f4, 0xc4f5, 0xc4f6, 0xc4f7,
+ 0xc4f8, 0xc4f9, 0xc4fa, 0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe, 0xc4ff,
+ 0xc500, 0xc501, 0xc502, 0xc503, 0xc504, 0xc505, 0xc506, 0xc507, /* 0xc500 */
+ 0xc508, 0xc509, 0xc50a, 0xc50b, 0xc50c, 0xc50d, 0xc50e, 0xc50f,
+ 0xc510, 0xc511, 0xc512, 0xc513, 0xc514, 0xc515, 0xc516, 0xc517,
+ 0xc518, 0xc519, 0xc51a, 0xc51b, 0xc51c, 0xc51d, 0xc51e, 0xc51f,
+ 0xc520, 0xc521, 0xc522, 0xc523, 0xc524, 0xc525, 0xc526, 0xc527,
+ 0xc528, 0xc529, 0xc52a, 0xc52b, 0xc52c, 0xc52d, 0xc52e, 0xc52f,
+ 0xc530, 0xc531, 0xc532, 0xc533, 0xc534, 0xc535, 0xc536, 0xc537,
+ 0xc538, 0xc539, 0xc53a, 0xc53b, 0xc53c, 0xc53d, 0xc53e, 0xc53f,
+ 0xc540, 0xc541, 0xc542, 0xc543, 0xc544, 0xc545, 0xc546, 0xc547, /* 0xc540 */
+ 0xc548, 0xc549, 0xc54a, 0xc54b, 0xc54c, 0xc54d, 0xc54e, 0xc54f,
+ 0xc550, 0xc551, 0xc552, 0xc553, 0xc554, 0xc555, 0xc556, 0xc557,
+ 0xc558, 0xc559, 0xc55a, 0xc55b, 0xc55c, 0xc55d, 0xc55e, 0xc55f,
+ 0xc560, 0xc561, 0xc562, 0xc563, 0xc564, 0xc565, 0xc566, 0xc567,
+ 0xc568, 0xc569, 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e, 0xc56f,
+ 0xc570, 0xc571, 0xc572, 0xc573, 0xc574, 0xc575, 0xc576, 0xc577,
+ 0xc578, 0xc579, 0xc57a, 0xc57b, 0xc57c, 0xc57d, 0xc57e, 0xc57f,
+ 0xc580, 0xc581, 0xc582, 0xc583, 0xc584, 0xc585, 0xc586, 0xc587, /* 0xc580 */
+ 0xc588, 0xc589, 0xc58a, 0xc58b, 0xc58c, 0xc58d, 0xc58e, 0xc58f,
+ 0xc590, 0xc591, 0xc592, 0xc593, 0xc594, 0xc595, 0xc596, 0xc597,
+ 0xc598, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e, 0xc59f,
+ 0xc5a0, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6, 0xc5a7,
+ 0xc5a8, 0xc5a9, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad, 0xc5ae, 0xc5af,
+ 0xc5b0, 0xc5b1, 0xc5b2, 0xc5b3, 0xc5b4, 0xc5b5, 0xc5b6, 0xc5b7,
+ 0xc5b8, 0xc5b9, 0xc5ba, 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5bf,
+ 0xc5c0, 0xc5c1, 0xc5c2, 0xc5c3, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, /* 0xc5c0 */
+ 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cb, 0xc5cc, 0xc5cd, 0xc5ce, 0xc5cf,
+ 0xc5d0, 0xc5d1, 0xc5d2, 0xc5d3, 0xc5d4, 0xc5d5, 0xc5d6, 0xc5d7,
+ 0xc5d8, 0xc5d9, 0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5de, 0xc5df,
+ 0xc5e0, 0xc5e1, 0xc5e2, 0xc5e3, 0xc5e4, 0xc5e5, 0xc5e6, 0xc5e7,
+ 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5ef,
+ 0xc5f0, 0xc5f1, 0xc5f2, 0xc5f3, 0xc5f4, 0xc5f5, 0xc5f6, 0xc5f7,
+ 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc5fc, 0xc5fd, 0xc5fe, 0xc5ff,
+ 0xc600, 0xc601, 0xc602, 0xc603, 0xc604, 0xc605, 0xc606, 0xc607, /* 0xc600 */
+ 0xc608, 0xc609, 0xc60a, 0xc60b, 0xc60c, 0xc60d, 0xc60e, 0xc60f,
+ 0xc610, 0xc611, 0xc612, 0xc613, 0xc614, 0xc615, 0xc616, 0xc617,
+ 0xc618, 0xc619, 0xc61a, 0xc61b, 0xc61c, 0xc61d, 0xc61e, 0xc61f,
+ 0xc620, 0xc621, 0xc622, 0xc623, 0xc624, 0xc625, 0xc626, 0xc627,
+ 0xc628, 0xc629, 0xc62a, 0xc62b, 0xc62c, 0xc62d, 0xc62e, 0xc62f,
+ 0xc630, 0xc631, 0xc632, 0xc633, 0xc634, 0xc635, 0xc636, 0xc637,
+ 0xc638, 0xc639, 0xc63a, 0xc63b, 0xc63c, 0xc63d, 0xc63e, 0xc63f,
+ 0xc640, 0xc641, 0xc642, 0xc643, 0xc644, 0xc645, 0xc646, 0xc647, /* 0xc640 */
+ 0xc648, 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, 0xc64f,
+ 0xc650, 0xc651, 0xc652, 0xc653, 0xc654, 0xc655, 0xc656, 0xc657,
+ 0xc658, 0xc659, 0xc65a, 0xc65b, 0xc65c, 0xc65d, 0xc65e, 0xc65f,
+ 0xc660, 0xc661, 0xc662, 0xc663, 0xc664, 0xc665, 0xc666, 0xc667,
+ 0xc668, 0xc669, 0xc66a, 0xc66b, 0xc66c, 0xc66d, 0xc66e, 0xc66f,
+ 0xc670, 0xc671, 0xc672, 0xc673, 0xc674, 0xc675, 0xc676, 0xc677,
+ 0xc678, 0xc679, 0xc67a, 0xc67b, 0xc67c, 0xc67d, 0xc67e, 0xc67f,
+ 0xc680, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, 0xc687, /* 0xc680 */
+ 0xc688, 0xc689, 0xc68a, 0xc68b, 0xc68c, 0xc68d, 0xc68e, 0xc68f,
+ 0xc690, 0xc691, 0xc692, 0xc693, 0xc694, 0xc695, 0xc696, 0xc697,
+ 0xc698, 0xc699, 0xc69a, 0xc69b, 0xc69c, 0xc69d, 0xc69e, 0xc69f,
+ 0xc6a0, 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7,
+ 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af,
+ 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3, 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7,
+ 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf,
+ 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, /* 0xc6c0 */
+ 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb, 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf,
+ 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3, 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7,
+ 0xc6d8, 0xc6d9, 0xc6da, 0xc6db, 0xc6dc, 0xc6dd, 0xc6de, 0xc6df,
+ 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7,
+ 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef,
+ 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7,
+ 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, 0xc6fe, 0xc6ff,
+ 0xc700, 0xc701, 0xc702, 0xc703, 0xc704, 0xc705, 0xc706, 0xc707, /* 0xc700 */
+ 0xc708, 0xc709, 0xc70a, 0xc70b, 0xc70c, 0xc70d, 0xc70e, 0xc70f,
+ 0xc710, 0xc711, 0xc712, 0xc713, 0xc714, 0xc715, 0xc716, 0xc717,
+ 0xc718, 0xc719, 0xc71a, 0xc71b, 0xc71c, 0xc71d, 0xc71e, 0xc71f,
+ 0xc720, 0xc721, 0xc722, 0xc723, 0xc724, 0xc725, 0xc726, 0xc727,
+ 0xc728, 0xc729, 0xc72a, 0xc72b, 0xc72c, 0xc72d, 0xc72e, 0xc72f,
+ 0xc730, 0xc731, 0xc732, 0xc733, 0xc734, 0xc735, 0xc736, 0xc737,
+ 0xc738, 0xc739, 0xc73a, 0xc73b, 0xc73c, 0xc73d, 0xc73e, 0xc73f,
+ 0xc740, 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, /* 0xc740 */
+ 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f,
+ 0xc750, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757,
+ 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e, 0xc75f,
+ 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, 0xc767,
+ 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, 0xc76e, 0xc76f,
+ 0xc770, 0xc771, 0xc772, 0xc773, 0xc774, 0xc775, 0xc776, 0xc777,
+ 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc77f,
+ 0xc780, 0xc781, 0xc782, 0xc783, 0xc784, 0xc785, 0xc786, 0xc787, /* 0xc780 */
+ 0xc788, 0xc789, 0xc78a, 0xc78b, 0xc78c, 0xc78d, 0xc78e, 0xc78f,
+ 0xc790, 0xc791, 0xc792, 0xc793, 0xc794, 0xc795, 0xc796, 0xc797,
+ 0xc798, 0xc799, 0xc79a, 0xc79b, 0xc79c, 0xc79d, 0xc79e, 0xc79f,
+ 0xc7a0, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7a7,
+ 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, 0xc7ad, 0xc7ae, 0xc7af,
+ 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7,
+ 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be, 0xc7bf,
+ 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, /* 0xc7c0 */
+ 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce, 0xc7cf,
+ 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7,
+ 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd, 0xc7de, 0xc7df,
+ 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7,
+ 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee, 0xc7ef,
+ 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7,
+ 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc7ff,
+ 0xc800, 0xc801, 0xc802, 0xc803, 0xc804, 0xc805, 0xc806, 0xc807, /* 0xc800 */
+ 0xc808, 0xc809, 0xc80a, 0xc80b, 0xc80c, 0xc80d, 0xc80e, 0xc80f,
+ 0xc810, 0xc811, 0xc812, 0xc813, 0xc814, 0xc815, 0xc816, 0xc817,
+ 0xc818, 0xc819, 0xc81a, 0xc81b, 0xc81c, 0xc81d, 0xc81e, 0xc81f,
+ 0xc820, 0xc821, 0xc822, 0xc823, 0xc824, 0xc825, 0xc826, 0xc827,
+ 0xc828, 0xc829, 0xc82a, 0xc82b, 0xc82c, 0xc82d, 0xc82e, 0xc82f,
+ 0xc830, 0xc831, 0xc832, 0xc833, 0xc834, 0xc835, 0xc836, 0xc837,
+ 0xc838, 0xc839, 0xc83a, 0xc83b, 0xc83c, 0xc83d, 0xc83e, 0xc83f,
+ 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, 0xc847, /* 0xc840 */
+ 0xc848, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f,
+ 0xc850, 0xc851, 0xc852, 0xc853, 0xc854, 0xc855, 0xc856, 0xc857,
+ 0xc858, 0xc859, 0xc85a, 0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f,
+ 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867,
+ 0xc868, 0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f,
+ 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, 0xc876, 0xc877,
+ 0xc878, 0xc879, 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc87e, 0xc87f,
+ 0xc880, 0xc881, 0xc882, 0xc883, 0xc884, 0xc885, 0xc886, 0xc887, /* 0xc880 */
+ 0xc888, 0xc889, 0xc88a, 0xc88b, 0xc88c, 0xc88d, 0xc88e, 0xc88f,
+ 0xc890, 0xc891, 0xc892, 0xc893, 0xc894, 0xc895, 0xc896, 0xc897,
+ 0xc898, 0xc899, 0xc89a, 0xc89b, 0xc89c, 0xc89d, 0xc89e, 0xc89f,
+ 0xc8a0, 0xc8a1, 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7,
+ 0xc8a8, 0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af,
+ 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7,
+ 0xc8b8, 0xc8b9, 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8be, 0xc8bf,
+ 0xc8c0, 0xc8c1, 0xc8c2, 0xc8c3, 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, /* 0xc8c0 */
+ 0xc8c8, 0xc8c9, 0xc8ca, 0xc8cb, 0xc8cc, 0xc8cd, 0xc8ce, 0xc8cf,
+ 0xc8d0, 0xc8d1, 0xc8d2, 0xc8d3, 0xc8d4, 0xc8d5, 0xc8d6, 0xc8d7,
+ 0xc8d8, 0xc8d9, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df,
+ 0xc8e0, 0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7,
+ 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef,
+ 0xc8f0, 0xc8f1, 0xc8f2, 0xc8f3, 0xc8f4, 0xc8f5, 0xc8f6, 0xc8f7,
+ 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0xc8fc, 0xc8fd, 0xc8fe, 0xc8ff,
+ 0xc900, 0xc901, 0xc902, 0xc903, 0xc904, 0xc905, 0xc906, 0xc907, /* 0xc900 */
+ 0xc908, 0xc909, 0xc90a, 0xc90b, 0xc90c, 0xc90d, 0xc90e, 0xc90f,
+ 0xc910, 0xc911, 0xc912, 0xc913, 0xc914, 0xc915, 0xc916, 0xc917,
+ 0xc918, 0xc919, 0xc91a, 0xc91b, 0xc91c, 0xc91d, 0xc91e, 0xc91f,
+ 0xc920, 0xc921, 0xc922, 0xc923, 0xc924, 0xc925, 0xc926, 0xc927,
+ 0xc928, 0xc929, 0xc92a, 0xc92b, 0xc92c, 0xc92d, 0xc92e, 0xc92f,
+ 0xc930, 0xc931, 0xc932, 0xc933, 0xc934, 0xc935, 0xc936, 0xc937,
+ 0xc938, 0xc939, 0xc93a, 0xc93b, 0xc93c, 0xc93d, 0xc93e, 0xc93f,
+ 0xc940, 0xc941, 0xc942, 0xc943, 0xc944, 0xc945, 0xc946, 0xc947, /* 0xc940 */
+ 0xc948, 0xc949, 0xc94a, 0xc94b, 0xc94c, 0xc94d, 0xc94e, 0xc94f,
+ 0xc950, 0xc951, 0xc952, 0xc953, 0xc954, 0xc955, 0xc956, 0xc957,
+ 0xc958, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e, 0xc95f,
+ 0xc960, 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xc967,
+ 0xc968, 0xc969, 0xc96a, 0xc96b, 0xc96c, 0xc96d, 0xc96e, 0xc96f,
+ 0xc970, 0xc971, 0xc972, 0xc973, 0xc974, 0xc975, 0xc976, 0xc977,
+ 0xc978, 0xc979, 0xc97a, 0xc97b, 0xc97c, 0xc97d, 0xc97e, 0xc97f,
+ 0xc980, 0xc981, 0xc982, 0xc983, 0xc984, 0xc985, 0xc986, 0xc987, /* 0xc980 */
+ 0xc988, 0xc989, 0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc98e, 0xc98f,
+ 0xc990, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996, 0xc997,
+ 0xc998, 0xc999, 0xc99a, 0xc99b, 0xc99c, 0xc99d, 0xc99e, 0xc99f,
+ 0xc9a0, 0xc9a1, 0xc9a2, 0xc9a3, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7,
+ 0xc9a8, 0xc9a9, 0xc9aa, 0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af,
+ 0xc9b0, 0xc9b1, 0xc9b2, 0xc9b3, 0xc9b4, 0xc9b5, 0xc9b6, 0xc9b7,
+ 0xc9b8, 0xc9b9, 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9be, 0xc9bf,
+ 0xc9c0, 0xc9c1, 0xc9c2, 0xc9c3, 0xc9c4, 0xc9c5, 0xc9c6, 0xc9c7, /* 0xc9c0 */
+ 0xc9c8, 0xc9c9, 0xc9ca, 0xc9cb, 0xc9cc, 0xc9cd, 0xc9ce, 0xc9cf,
+ 0xc9d0, 0xc9d1, 0xc9d2, 0xc9d3, 0xc9d4, 0xc9d5, 0xc9d6, 0xc9d7,
+ 0xc9d8, 0xc9d9, 0xc9da, 0xc9db, 0xc9dc, 0xc9dd, 0xc9de, 0xc9df,
+ 0xc9e0, 0xc9e1, 0xc9e2, 0xc9e3, 0xc9e4, 0xc9e5, 0xc9e6, 0xc9e7,
+ 0xc9e8, 0xc9e9, 0xc9ea, 0xc9eb, 0xc9ec, 0xc9ed, 0xc9ee, 0xc9ef,
+ 0xc9f0, 0xc9f1, 0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7,
+ 0xc9f8, 0xc9f9, 0xc9fa, 0xc9fb, 0xc9fc, 0xc9fd, 0xc9fe, 0xc9ff,
+ 0xca00, 0xca01, 0xca02, 0xca03, 0xca04, 0xca05, 0xca06, 0xca07, /* 0xca00 */
+ 0xca08, 0xca09, 0xca0a, 0xca0b, 0xca0c, 0xca0d, 0xca0e, 0xca0f,
+ 0xca10, 0xca11, 0xca12, 0xca13, 0xca14, 0xca15, 0xca16, 0xca17,
+ 0xca18, 0xca19, 0xca1a, 0xca1b, 0xca1c, 0xca1d, 0xca1e, 0xca1f,
+ 0xca20, 0xca21, 0xca22, 0xca23, 0xca24, 0xca25, 0xca26, 0xca27,
+ 0xca28, 0xca29, 0xca2a, 0xca2b, 0xca2c, 0xca2d, 0xca2e, 0xca2f,
+ 0xca30, 0xca31, 0xca32, 0xca33, 0xca34, 0xca35, 0xca36, 0xca37,
+ 0xca38, 0xca39, 0xca3a, 0xca3b, 0xca3c, 0xca3d, 0xca3e, 0xca3f,
+ 0xca40, 0xca41, 0xca42, 0xca43, 0xca44, 0xca45, 0xca46, 0xca47, /* 0xca40 */
+ 0xca48, 0xca49, 0xca4a, 0xca4b, 0xca4c, 0xca4d, 0xca4e, 0xca4f,
+ 0xca50, 0xca51, 0xca52, 0xca53, 0xca54, 0xca55, 0xca56, 0xca57,
+ 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xca5d, 0xca5e, 0xca5f,
+ 0xca60, 0xca61, 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67,
+ 0xca68, 0xca69, 0xca6a, 0xca6b, 0xca6c, 0xca6d, 0xca6e, 0xca6f,
+ 0xca70, 0xca71, 0xca72, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77,
+ 0xca78, 0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca7e, 0xca7f,
+ 0xca80, 0xca81, 0xca82, 0xca83, 0xca84, 0xca85, 0xca86, 0xca87, /* 0xca80 */
+ 0xca88, 0xca89, 0xca8a, 0xca8b, 0xca8c, 0xca8d, 0xca8e, 0xca8f,
+ 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, 0xca95, 0xca96, 0xca97,
+ 0xca98, 0xca99, 0xca9a, 0xca9b, 0xca9c, 0xca9d, 0xca9e, 0xca9f,
+ 0xcaa0, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6, 0xcaa7,
+ 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae, 0xcaaf,
+ 0xcab0, 0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7,
+ 0xcab8, 0xcab9, 0xcaba, 0xcabb, 0xcabc, 0xcabd, 0xcabe, 0xcabf,
+ 0xcac0, 0xcac1, 0xcac2, 0xcac3, 0xcac4, 0xcac5, 0xcac6, 0xcac7, /* 0xcac0 */
+ 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcacc, 0xcacd, 0xcace, 0xcacf,
+ 0xcad0, 0xcad1, 0xcad2, 0xcad3, 0xcad4, 0xcad5, 0xcad6, 0xcad7,
+ 0xcad8, 0xcad9, 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade, 0xcadf,
+ 0xcae0, 0xcae1, 0xcae2, 0xcae3, 0xcae4, 0xcae5, 0xcae6, 0xcae7,
+ 0xcae8, 0xcae9, 0xcaea, 0xcaeb, 0xcaec, 0xcaed, 0xcaee, 0xcaef,
+ 0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0xcaf4, 0xcaf5, 0xcaf6, 0xcaf7,
+ 0xcaf8, 0xcaf9, 0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcaff,
+ 0xcb00, 0xcb01, 0xcb02, 0xcb03, 0xcb04, 0xcb05, 0xcb06, 0xcb07, /* 0xcb00 */
+ 0xcb08, 0xcb09, 0xcb0a, 0xcb0b, 0xcb0c, 0xcb0d, 0xcb0e, 0xcb0f,
+ 0xcb10, 0xcb11, 0xcb12, 0xcb13, 0xcb14, 0xcb15, 0xcb16, 0xcb17,
+ 0xcb18, 0xcb19, 0xcb1a, 0xcb1b, 0xcb1c, 0xcb1d, 0xcb1e, 0xcb1f,
+ 0xcb20, 0xcb21, 0xcb22, 0xcb23, 0xcb24, 0xcb25, 0xcb26, 0xcb27,
+ 0xcb28, 0xcb29, 0xcb2a, 0xcb2b, 0xcb2c, 0xcb2d, 0xcb2e, 0xcb2f,
+ 0xcb30, 0xcb31, 0xcb32, 0xcb33, 0xcb34, 0xcb35, 0xcb36, 0xcb37,
+ 0xcb38, 0xcb39, 0xcb3a, 0xcb3b, 0xcb3c, 0xcb3d, 0xcb3e, 0xcb3f,
+ 0xcb40, 0xcb41, 0xcb42, 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, /* 0xcb40 */
+ 0xcb48, 0xcb49, 0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e, 0xcb4f,
+ 0xcb50, 0xcb51, 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56, 0xcb57,
+ 0xcb58, 0xcb59, 0xcb5a, 0xcb5b, 0xcb5c, 0xcb5d, 0xcb5e, 0xcb5f,
+ 0xcb60, 0xcb61, 0xcb62, 0xcb63, 0xcb64, 0xcb65, 0xcb66, 0xcb67,
+ 0xcb68, 0xcb69, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f,
+ 0xcb70, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76, 0xcb77,
+ 0xcb78, 0xcb79, 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb7e, 0xcb7f,
+ 0xcb80, 0xcb81, 0xcb82, 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xcb87, /* 0xcb80 */
+ 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xcb8e, 0xcb8f,
+ 0xcb90, 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97,
+ 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9c, 0xcb9d, 0xcb9e, 0xcb9f,
+ 0xcba0, 0xcba1, 0xcba2, 0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7,
+ 0xcba8, 0xcba9, 0xcbaa, 0xcbab, 0xcbac, 0xcbad, 0xcbae, 0xcbaf,
+ 0xcbb0, 0xcbb1, 0xcbb2, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7,
+ 0xcbb8, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc, 0xcbbd, 0xcbbe, 0xcbbf,
+ 0xcbc0, 0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6, 0xcbc7, /* 0xcbc0 */
+ 0xcbc8, 0xcbc9, 0xcbca, 0xcbcb, 0xcbcc, 0xcbcd, 0xcbce, 0xcbcf,
+ 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0xcbd4, 0xcbd5, 0xcbd6, 0xcbd7,
+ 0xcbd8, 0xcbd9, 0xcbda, 0xcbdb, 0xcbdc, 0xcbdd, 0xcbde, 0xcbdf,
+ 0xcbe0, 0xcbe1, 0xcbe2, 0xcbe3, 0xcbe4, 0xcbe5, 0xcbe6, 0xcbe7,
+ 0xcbe8, 0xcbe9, 0xcbea, 0xcbeb, 0xcbec, 0xcbed, 0xcbee, 0xcbef,
+ 0xcbf0, 0xcbf1, 0xcbf2, 0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6, 0xcbf7,
+ 0xcbf8, 0xcbf9, 0xcbfa, 0xcbfb, 0xcbfc, 0xcbfd, 0xcbfe, 0xcbff,
+ 0xcc00, 0xcc01, 0xcc02, 0xcc03, 0xcc04, 0xcc05, 0xcc06, 0xcc07, /* 0xcc00 */
+ 0xcc08, 0xcc09, 0xcc0a, 0xcc0b, 0xcc0c, 0xcc0d, 0xcc0e, 0xcc0f,
+ 0xcc10, 0xcc11, 0xcc12, 0xcc13, 0xcc14, 0xcc15, 0xcc16, 0xcc17,
+ 0xcc18, 0xcc19, 0xcc1a, 0xcc1b, 0xcc1c, 0xcc1d, 0xcc1e, 0xcc1f,
+ 0xcc20, 0xcc21, 0xcc22, 0xcc23, 0xcc24, 0xcc25, 0xcc26, 0xcc27,
+ 0xcc28, 0xcc29, 0xcc2a, 0xcc2b, 0xcc2c, 0xcc2d, 0xcc2e, 0xcc2f,
+ 0xcc30, 0xcc31, 0xcc32, 0xcc33, 0xcc34, 0xcc35, 0xcc36, 0xcc37,
+ 0xcc38, 0xcc39, 0xcc3a, 0xcc3b, 0xcc3c, 0xcc3d, 0xcc3e, 0xcc3f,
+ 0xcc40, 0xcc41, 0xcc42, 0xcc43, 0xcc44, 0xcc45, 0xcc46, 0xcc47, /* 0xcc40 */
+ 0xcc48, 0xcc49, 0xcc4a, 0xcc4b, 0xcc4c, 0xcc4d, 0xcc4e, 0xcc4f,
+ 0xcc50, 0xcc51, 0xcc52, 0xcc53, 0xcc54, 0xcc55, 0xcc56, 0xcc57,
+ 0xcc58, 0xcc59, 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f,
+ 0xcc60, 0xcc61, 0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66, 0xcc67,
+ 0xcc68, 0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f,
+ 0xcc70, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75, 0xcc76, 0xcc77,
+ 0xcc78, 0xcc79, 0xcc7a, 0xcc7b, 0xcc7c, 0xcc7d, 0xcc7e, 0xcc7f,
+ 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, /* 0xcc80 */
+ 0xcc88, 0xcc89, 0xcc8a, 0xcc8b, 0xcc8c, 0xcc8d, 0xcc8e, 0xcc8f,
+ 0xcc90, 0xcc91, 0xcc92, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97,
+ 0xcc98, 0xcc99, 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, 0xcc9e, 0xcc9f,
+ 0xcca0, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6, 0xcca7,
+ 0xcca8, 0xcca9, 0xccaa, 0xccab, 0xccac, 0xccad, 0xccae, 0xccaf,
+ 0xccb0, 0xccb1, 0xccb2, 0xccb3, 0xccb4, 0xccb5, 0xccb6, 0xccb7,
+ 0xccb8, 0xccb9, 0xccba, 0xccbb, 0xccbc, 0xccbd, 0xccbe, 0xccbf,
+ 0xccc0, 0xccc1, 0xccc2, 0xccc3, 0xccc4, 0xccc5, 0xccc6, 0xccc7, /* 0xccc0 */
+ 0xccc8, 0xccc9, 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf,
+ 0xccd0, 0xccd1, 0xccd2, 0xccd3, 0xccd4, 0xccd5, 0xccd6, 0xccd7,
+ 0xccd8, 0xccd9, 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xccde, 0xccdf,
+ 0xcce0, 0xcce1, 0xcce2, 0xcce3, 0xcce4, 0xcce5, 0xcce6, 0xcce7,
+ 0xcce8, 0xcce9, 0xccea, 0xcceb, 0xccec, 0xcced, 0xccee, 0xccef,
+ 0xccf0, 0xccf1, 0xccf2, 0xccf3, 0xccf4, 0xccf5, 0xccf6, 0xccf7,
+ 0xccf8, 0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xccfd, 0xccfe, 0xccff,
+ 0xcd00, 0xcd01, 0xcd02, 0xcd03, 0xcd04, 0xcd05, 0xcd06, 0xcd07, /* 0xcd00 */
+ 0xcd08, 0xcd09, 0xcd0a, 0xcd0b, 0xcd0c, 0xcd0d, 0xcd0e, 0xcd0f,
+ 0xcd10, 0xcd11, 0xcd12, 0xcd13, 0xcd14, 0xcd15, 0xcd16, 0xcd17,
+ 0xcd18, 0xcd19, 0xcd1a, 0xcd1b, 0xcd1c, 0xcd1d, 0xcd1e, 0xcd1f,
+ 0xcd20, 0xcd21, 0xcd22, 0xcd23, 0xcd24, 0xcd25, 0xcd26, 0xcd27,
+ 0xcd28, 0xcd29, 0xcd2a, 0xcd2b, 0xcd2c, 0xcd2d, 0xcd2e, 0xcd2f,
+ 0xcd30, 0xcd31, 0xcd32, 0xcd33, 0xcd34, 0xcd35, 0xcd36, 0xcd37,
+ 0xcd38, 0xcd39, 0xcd3a, 0xcd3b, 0xcd3c, 0xcd3d, 0xcd3e, 0xcd3f,
+ 0xcd40, 0xcd41, 0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, /* 0xcd40 */
+ 0xcd48, 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, 0xcd4f,
+ 0xcd50, 0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55, 0xcd56, 0xcd57,
+ 0xcd58, 0xcd59, 0xcd5a, 0xcd5b, 0xcd5c, 0xcd5d, 0xcd5e, 0xcd5f,
+ 0xcd60, 0xcd61, 0xcd62, 0xcd63, 0xcd64, 0xcd65, 0xcd66, 0xcd67,
+ 0xcd68, 0xcd69, 0xcd6a, 0xcd6b, 0xcd6c, 0xcd6d, 0xcd6e, 0xcd6f,
+ 0xcd70, 0xcd71, 0xcd72, 0xcd73, 0xcd74, 0xcd75, 0xcd76, 0xcd77,
+ 0xcd78, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e, 0xcd7f,
+ 0xcd80, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86, 0xcd87, /* 0xcd80 */
+ 0xcd88, 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f,
+ 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xcd94, 0xcd95, 0xcd96, 0xcd97,
+ 0xcd98, 0xcd99, 0xcd9a, 0xcd9b, 0xcd9c, 0xcd9d, 0xcd9e, 0xcd9f,
+ 0xcda0, 0xcda1, 0xcda2, 0xcda3, 0xcda4, 0xcda5, 0xcda6, 0xcda7,
+ 0xcda8, 0xcda9, 0xcdaa, 0xcdab, 0xcdac, 0xcdad, 0xcdae, 0xcdaf,
+ 0xcdb0, 0xcdb1, 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6, 0xcdb7,
+ 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc, 0xcdbd, 0xcdbe, 0xcdbf,
+ 0xcdc0, 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc4, 0xcdc5, 0xcdc6, 0xcdc7, /* 0xcdc0 */
+ 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0xcdcc, 0xcdcd, 0xcdce, 0xcdcf,
+ 0xcdd0, 0xcdd1, 0xcdd2, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7,
+ 0xcdd8, 0xcdd9, 0xcdda, 0xcddb, 0xcddc, 0xcddd, 0xcdde, 0xcddf,
+ 0xcde0, 0xcde1, 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7,
+ 0xcde8, 0xcde9, 0xcdea, 0xcdeb, 0xcdec, 0xcded, 0xcdee, 0xcdef,
+ 0xcdf0, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4, 0xcdf5, 0xcdf6, 0xcdf7,
+ 0xcdf8, 0xcdf9, 0xcdfa, 0xcdfb, 0xcdfc, 0xcdfd, 0xcdfe, 0xcdff,
+ 0xce00, 0xce01, 0xce02, 0xce03, 0xce04, 0xce05, 0xce06, 0xce07, /* 0xce00 */
+ 0xce08, 0xce09, 0xce0a, 0xce0b, 0xce0c, 0xce0d, 0xce0e, 0xce0f,
+ 0xce10, 0xce11, 0xce12, 0xce13, 0xce14, 0xce15, 0xce16, 0xce17,
+ 0xce18, 0xce19, 0xce1a, 0xce1b, 0xce1c, 0xce1d, 0xce1e, 0xce1f,
+ 0xce20, 0xce21, 0xce22, 0xce23, 0xce24, 0xce25, 0xce26, 0xce27,
+ 0xce28, 0xce29, 0xce2a, 0xce2b, 0xce2c, 0xce2d, 0xce2e, 0xce2f,
+ 0xce30, 0xce31, 0xce32, 0xce33, 0xce34, 0xce35, 0xce36, 0xce37,
+ 0xce38, 0xce39, 0xce3a, 0xce3b, 0xce3c, 0xce3d, 0xce3e, 0xce3f,
+ 0xce40, 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, /* 0xce40 */
+ 0xce48, 0xce49, 0xce4a, 0xce4b, 0xce4c, 0xce4d, 0xce4e, 0xce4f,
+ 0xce50, 0xce51, 0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57,
+ 0xce58, 0xce59, 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e, 0xce5f,
+ 0xce60, 0xce61, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66, 0xce67,
+ 0xce68, 0xce69, 0xce6a, 0xce6b, 0xce6c, 0xce6d, 0xce6e, 0xce6f,
+ 0xce70, 0xce71, 0xce72, 0xce73, 0xce74, 0xce75, 0xce76, 0xce77,
+ 0xce78, 0xce79, 0xce7a, 0xce7b, 0xce7c, 0xce7d, 0xce7e, 0xce7f,
+ 0xce80, 0xce81, 0xce82, 0xce83, 0xce84, 0xce85, 0xce86, 0xce87, /* 0xce80 */
+ 0xce88, 0xce89, 0xce8a, 0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f,
+ 0xce90, 0xce91, 0xce92, 0xce93, 0xce94, 0xce95, 0xce96, 0xce97,
+ 0xce98, 0xce99, 0xce9a, 0xce9b, 0xce9c, 0xce9d, 0xce9e, 0xce9f,
+ 0xcea0, 0xcea1, 0xcea2, 0xcea3, 0xcea4, 0xcea5, 0xcea6, 0xcea7,
+ 0xcea8, 0xcea9, 0xceaa, 0xceab, 0xceac, 0xcead, 0xceae, 0xceaf,
+ 0xceb0, 0xceb1, 0xceb2, 0xceb3, 0xceb4, 0xceb5, 0xceb6, 0xceb7,
+ 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xcebd, 0xcebe, 0xcebf,
+ 0xcec0, 0xcec1, 0xcec2, 0xcec3, 0xcec4, 0xcec5, 0xcec6, 0xcec7, /* 0xcec0 */
+ 0xcec8, 0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf,
+ 0xced0, 0xced1, 0xced2, 0xced3, 0xced4, 0xced5, 0xced6, 0xced7,
+ 0xced8, 0xced9, 0xceda, 0xcedb, 0xcedc, 0xcedd, 0xcede, 0xcedf,
+ 0xcee0, 0xcee1, 0xcee2, 0xcee3, 0xcee4, 0xcee5, 0xcee6, 0xcee7,
+ 0xcee8, 0xcee9, 0xceea, 0xceeb, 0xceec, 0xceed, 0xceee, 0xceef,
+ 0xcef0, 0xcef1, 0xcef2, 0xcef3, 0xcef4, 0xcef5, 0xcef6, 0xcef7,
+ 0xcef8, 0xcef9, 0xcefa, 0xcefb, 0xcefc, 0xcefd, 0xcefe, 0xceff,
+ 0xcf00, 0xcf01, 0xcf02, 0xcf03, 0xcf04, 0xcf05, 0xcf06, 0xcf07, /* 0xcf00 */
+ 0xcf08, 0xcf09, 0xcf0a, 0xcf0b, 0xcf0c, 0xcf0d, 0xcf0e, 0xcf0f,
+ 0xcf10, 0xcf11, 0xcf12, 0xcf13, 0xcf14, 0xcf15, 0xcf16, 0xcf17,
+ 0xcf18, 0xcf19, 0xcf1a, 0xcf1b, 0xcf1c, 0xcf1d, 0xcf1e, 0xcf1f,
+ 0xcf20, 0xcf21, 0xcf22, 0xcf23, 0xcf24, 0xcf25, 0xcf26, 0xcf27,
+ 0xcf28, 0xcf29, 0xcf2a, 0xcf2b, 0xcf2c, 0xcf2d, 0xcf2e, 0xcf2f,
+ 0xcf30, 0xcf31, 0xcf32, 0xcf33, 0xcf34, 0xcf35, 0xcf36, 0xcf37,
+ 0xcf38, 0xcf39, 0xcf3a, 0xcf3b, 0xcf3c, 0xcf3d, 0xcf3e, 0xcf3f,
+ 0xcf40, 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, 0xcf47, /* 0xcf40 */
+ 0xcf48, 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f,
+ 0xcf50, 0xcf51, 0xcf52, 0xcf53, 0xcf54, 0xcf55, 0xcf56, 0xcf57,
+ 0xcf58, 0xcf59, 0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d, 0xcf5e, 0xcf5f,
+ 0xcf60, 0xcf61, 0xcf62, 0xcf63, 0xcf64, 0xcf65, 0xcf66, 0xcf67,
+ 0xcf68, 0xcf69, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, 0xcf6e, 0xcf6f,
+ 0xcf70, 0xcf71, 0xcf72, 0xcf73, 0xcf74, 0xcf75, 0xcf76, 0xcf77,
+ 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e, 0xcf7f,
+ 0xcf80, 0xcf81, 0xcf82, 0xcf83, 0xcf84, 0xcf85, 0xcf86, 0xcf87, /* 0xcf80 */
+ 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, 0xcf8c, 0xcf8d, 0xcf8e, 0xcf8f,
+ 0xcf90, 0xcf91, 0xcf92, 0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97,
+ 0xcf98, 0xcf99, 0xcf9a, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e, 0xcf9f,
+ 0xcfa0, 0xcfa1, 0xcfa2, 0xcfa3, 0xcfa4, 0xcfa5, 0xcfa6, 0xcfa7,
+ 0xcfa8, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae, 0xcfaf,
+ 0xcfb0, 0xcfb1, 0xcfb2, 0xcfb3, 0xcfb4, 0xcfb5, 0xcfb6, 0xcfb7,
+ 0xcfb8, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd, 0xcfbe, 0xcfbf,
+ 0xcfc0, 0xcfc1, 0xcfc2, 0xcfc3, 0xcfc4, 0xcfc5, 0xcfc6, 0xcfc7, /* 0xcfc0 */
+ 0xcfc8, 0xcfc9, 0xcfca, 0xcfcb, 0xcfcc, 0xcfcd, 0xcfce, 0xcfcf,
+ 0xcfd0, 0xcfd1, 0xcfd2, 0xcfd3, 0xcfd4, 0xcfd5, 0xcfd6, 0xcfd7,
+ 0xcfd8, 0xcfd9, 0xcfda, 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf,
+ 0xcfe0, 0xcfe1, 0xcfe2, 0xcfe3, 0xcfe4, 0xcfe5, 0xcfe6, 0xcfe7,
+ 0xcfe8, 0xcfe9, 0xcfea, 0xcfeb, 0xcfec, 0xcfed, 0xcfee, 0xcfef,
+ 0xcff0, 0xcff1, 0xcff2, 0xcff3, 0xcff4, 0xcff5, 0xcff6, 0xcff7,
+ 0xcff8, 0xcff9, 0xcffa, 0xcffb, 0xcffc, 0xcffd, 0xcffe, 0xcfff,
+ 0xd000, 0xd001, 0xd002, 0xd003, 0xd004, 0xd005, 0xd006, 0xd007, /* 0xd000 */
+ 0xd008, 0xd009, 0xd00a, 0xd00b, 0xd00c, 0xd00d, 0xd00e, 0xd00f,
+ 0xd010, 0xd011, 0xd012, 0xd013, 0xd014, 0xd015, 0xd016, 0xd017,
+ 0xd018, 0xd019, 0xd01a, 0xd01b, 0xd01c, 0xd01d, 0xd01e, 0xd01f,
+ 0xd020, 0xd021, 0xd022, 0xd023, 0xd024, 0xd025, 0xd026, 0xd027,
+ 0xd028, 0xd029, 0xd02a, 0xd02b, 0xd02c, 0xd02d, 0xd02e, 0xd02f,
+ 0xd030, 0xd031, 0xd032, 0xd033, 0xd034, 0xd035, 0xd036, 0xd037,
+ 0xd038, 0xd039, 0xd03a, 0xd03b, 0xd03c, 0xd03d, 0xd03e, 0xd03f,
+ 0xd040, 0xd041, 0xd042, 0xd043, 0xd044, 0xd045, 0xd046, 0xd047, /* 0xd040 */
+ 0xd048, 0xd049, 0xd04a, 0xd04b, 0xd04c, 0xd04d, 0xd04e, 0xd04f,
+ 0xd050, 0xd051, 0xd052, 0xd053, 0xd054, 0xd055, 0xd056, 0xd057,
+ 0xd058, 0xd059, 0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e, 0xd05f,
+ 0xd060, 0xd061, 0xd062, 0xd063, 0xd064, 0xd065, 0xd066, 0xd067,
+ 0xd068, 0xd069, 0xd06a, 0xd06b, 0xd06c, 0xd06d, 0xd06e, 0xd06f,
+ 0xd070, 0xd071, 0xd072, 0xd073, 0xd074, 0xd075, 0xd076, 0xd077,
+ 0xd078, 0xd079, 0xd07a, 0xd07b, 0xd07c, 0xd07d, 0xd07e, 0xd07f,
+ 0xd080, 0xd081, 0xd082, 0xd083, 0xd084, 0xd085, 0xd086, 0xd087, /* 0xd080 */
+ 0xd088, 0xd089, 0xd08a, 0xd08b, 0xd08c, 0xd08d, 0xd08e, 0xd08f,
+ 0xd090, 0xd091, 0xd092, 0xd093, 0xd094, 0xd095, 0xd096, 0xd097,
+ 0xd098, 0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d, 0xd09e, 0xd09f,
+ 0xd0a0, 0xd0a1, 0xd0a2, 0xd0a3, 0xd0a4, 0xd0a5, 0xd0a6, 0xd0a7,
+ 0xd0a8, 0xd0a9, 0xd0aa, 0xd0ab, 0xd0ac, 0xd0ad, 0xd0ae, 0xd0af,
+ 0xd0b0, 0xd0b1, 0xd0b2, 0xd0b3, 0xd0b4, 0xd0b5, 0xd0b6, 0xd0b7,
+ 0xd0b8, 0xd0b9, 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0be, 0xd0bf,
+ 0xd0c0, 0xd0c1, 0xd0c2, 0xd0c3, 0xd0c4, 0xd0c5, 0xd0c6, 0xd0c7, /* 0xd0c0 */
+ 0xd0c8, 0xd0c9, 0xd0ca, 0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce, 0xd0cf,
+ 0xd0d0, 0xd0d1, 0xd0d2, 0xd0d3, 0xd0d4, 0xd0d5, 0xd0d6, 0xd0d7,
+ 0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xd0dc, 0xd0dd, 0xd0de, 0xd0df,
+ 0xd0e0, 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e4, 0xd0e5, 0xd0e6, 0xd0e7,
+ 0xd0e8, 0xd0e9, 0xd0ea, 0xd0eb, 0xd0ec, 0xd0ed, 0xd0ee, 0xd0ef,
+ 0xd0f0, 0xd0f1, 0xd0f2, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7,
+ 0xd0f8, 0xd0f9, 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd0fe, 0xd0ff,
+ 0xd100, 0xd101, 0xd102, 0xd103, 0xd104, 0xd105, 0xd106, 0xd107, /* 0xd100 */
+ 0xd108, 0xd109, 0xd10a, 0xd10b, 0xd10c, 0xd10d, 0xd10e, 0xd10f,
+ 0xd110, 0xd111, 0xd112, 0xd113, 0xd114, 0xd115, 0xd116, 0xd117,
+ 0xd118, 0xd119, 0xd11a, 0xd11b, 0xd11c, 0xd11d, 0xd11e, 0xd11f,
+ 0xd120, 0xd121, 0xd122, 0xd123, 0xd124, 0xd125, 0xd126, 0xd127,
+ 0xd128, 0xd129, 0xd12a, 0xd12b, 0xd12c, 0xd12d, 0xd12e, 0xd12f,
+ 0xd130, 0xd131, 0xd132, 0xd133, 0xd134, 0xd135, 0xd136, 0xd137,
+ 0xd138, 0xd139, 0xd13a, 0xd13b, 0xd13c, 0xd13d, 0xd13e, 0xd13f,
+ 0xd140, 0xd141, 0xd142, 0xd143, 0xd144, 0xd145, 0xd146, 0xd147, /* 0xd140 */
+ 0xd148, 0xd149, 0xd14a, 0xd14b, 0xd14c, 0xd14d, 0xd14e, 0xd14f,
+ 0xd150, 0xd151, 0xd152, 0xd153, 0xd154, 0xd155, 0xd156, 0xd157,
+ 0xd158, 0xd159, 0xd15a, 0xd15b, 0xd15c, 0xd15d, 0xd15e, 0xd15f,
+ 0xd160, 0xd161, 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167,
+ 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, 0xd16f,
+ 0xd170, 0xd171, 0xd172, 0xd173, 0xd174, 0xd175, 0xd176, 0xd177,
+ 0xd178, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d, 0xd17e, 0xd17f,
+ 0xd180, 0xd181, 0xd182, 0xd183, 0xd184, 0xd185, 0xd186, 0xd187, /* 0xd180 */
+ 0xd188, 0xd189, 0xd18a, 0xd18b, 0xd18c, 0xd18d, 0xd18e, 0xd18f,
+ 0xd190, 0xd191, 0xd192, 0xd193, 0xd194, 0xd195, 0xd196, 0xd197,
+ 0xd198, 0xd199, 0xd19a, 0xd19b, 0xd19c, 0xd19d, 0xd19e, 0xd19f,
+ 0xd1a0, 0xd1a1, 0xd1a2, 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a6, 0xd1a7,
+ 0xd1a8, 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af,
+ 0xd1b0, 0xd1b1, 0xd1b2, 0xd1b3, 0xd1b4, 0xd1b5, 0xd1b6, 0xd1b7,
+ 0xd1b8, 0xd1b9, 0xd1ba, 0xd1bb, 0xd1bc, 0xd1bd, 0xd1be, 0xd1bf,
+ 0xd1c0, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6, 0xd1c7, /* 0xd1c0 */
+ 0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, 0xd1cd, 0xd1ce, 0xd1cf,
+ 0xd1d0, 0xd1d1, 0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6, 0xd1d7,
+ 0xd1d8, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, 0xd1de, 0xd1df,
+ 0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6, 0xd1e7,
+ 0xd1e8, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee, 0xd1ef,
+ 0xd1f0, 0xd1f1, 0xd1f2, 0xd1f3, 0xd1f4, 0xd1f5, 0xd1f6, 0xd1f7,
+ 0xd1f8, 0xd1f9, 0xd1fa, 0xd1fb, 0xd1fc, 0xd1fd, 0xd1fe, 0xd1ff,
+ 0xd200, 0xd201, 0xd202, 0xd203, 0xd204, 0xd205, 0xd206, 0xd207, /* 0xd200 */
+ 0xd208, 0xd209, 0xd20a, 0xd20b, 0xd20c, 0xd20d, 0xd20e, 0xd20f,
+ 0xd210, 0xd211, 0xd212, 0xd213, 0xd214, 0xd215, 0xd216, 0xd217,
+ 0xd218, 0xd219, 0xd21a, 0xd21b, 0xd21c, 0xd21d, 0xd21e, 0xd21f,
+ 0xd220, 0xd221, 0xd222, 0xd223, 0xd224, 0xd225, 0xd226, 0xd227,
+ 0xd228, 0xd229, 0xd22a, 0xd22b, 0xd22c, 0xd22d, 0xd22e, 0xd22f,
+ 0xd230, 0xd231, 0xd232, 0xd233, 0xd234, 0xd235, 0xd236, 0xd237,
+ 0xd238, 0xd239, 0xd23a, 0xd23b, 0xd23c, 0xd23d, 0xd23e, 0xd23f,
+ 0xd240, 0xd241, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, /* 0xd240 */
+ 0xd248, 0xd249, 0xd24a, 0xd24b, 0xd24c, 0xd24d, 0xd24e, 0xd24f,
+ 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, 0xd256, 0xd257,
+ 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d, 0xd25e, 0xd25f,
+ 0xd260, 0xd261, 0xd262, 0xd263, 0xd264, 0xd265, 0xd266, 0xd267,
+ 0xd268, 0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f,
+ 0xd270, 0xd271, 0xd272, 0xd273, 0xd274, 0xd275, 0xd276, 0xd277,
+ 0xd278, 0xd279, 0xd27a, 0xd27b, 0xd27c, 0xd27d, 0xd27e, 0xd27f,
+ 0xd280, 0xd281, 0xd282, 0xd283, 0xd284, 0xd285, 0xd286, 0xd287, /* 0xd280 */
+ 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, 0xd28f,
+ 0xd290, 0xd291, 0xd292, 0xd293, 0xd294, 0xd295, 0xd296, 0xd297,
+ 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29c, 0xd29d, 0xd29e, 0xd29f,
+ 0xd2a0, 0xd2a1, 0xd2a2, 0xd2a3, 0xd2a4, 0xd2a5, 0xd2a6, 0xd2a7,
+ 0xd2a8, 0xd2a9, 0xd2aa, 0xd2ab, 0xd2ac, 0xd2ad, 0xd2ae, 0xd2af,
+ 0xd2b0, 0xd2b1, 0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, 0xd2b7,
+ 0xd2b8, 0xd2b9, 0xd2ba, 0xd2bb, 0xd2bc, 0xd2bd, 0xd2be, 0xd2bf,
+ 0xd2c0, 0xd2c1, 0xd2c2, 0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6, 0xd2c7, /* 0xd2c0 */
+ 0xd2c8, 0xd2c9, 0xd2ca, 0xd2cb, 0xd2cc, 0xd2cd, 0xd2ce, 0xd2cf,
+ 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2d7,
+ 0xd2d8, 0xd2d9, 0xd2da, 0xd2db, 0xd2dc, 0xd2dd, 0xd2de, 0xd2df,
+ 0xd2e0, 0xd2e1, 0xd2e2, 0xd2e3, 0xd2e4, 0xd2e5, 0xd2e6, 0xd2e7,
+ 0xd2e8, 0xd2e9, 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef,
+ 0xd2f0, 0xd2f1, 0xd2f2, 0xd2f3, 0xd2f4, 0xd2f5, 0xd2f6, 0xd2f7,
+ 0xd2f8, 0xd2f9, 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe, 0xd2ff,
+ 0xd300, 0xd301, 0xd302, 0xd303, 0xd304, 0xd305, 0xd306, 0xd307, /* 0xd300 */
+ 0xd308, 0xd309, 0xd30a, 0xd30b, 0xd30c, 0xd30d, 0xd30e, 0xd30f,
+ 0xd310, 0xd311, 0xd312, 0xd313, 0xd314, 0xd315, 0xd316, 0xd317,
+ 0xd318, 0xd319, 0xd31a, 0xd31b, 0xd31c, 0xd31d, 0xd31e, 0xd31f,
+ 0xd320, 0xd321, 0xd322, 0xd323, 0xd324, 0xd325, 0xd326, 0xd327,
+ 0xd328, 0xd329, 0xd32a, 0xd32b, 0xd32c, 0xd32d, 0xd32e, 0xd32f,
+ 0xd330, 0xd331, 0xd332, 0xd333, 0xd334, 0xd335, 0xd336, 0xd337,
+ 0xd338, 0xd339, 0xd33a, 0xd33b, 0xd33c, 0xd33d, 0xd33e, 0xd33f,
+ 0xd340, 0xd341, 0xd342, 0xd343, 0xd344, 0xd345, 0xd346, 0xd347, /* 0xd340 */
+ 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, 0xd34d, 0xd34e, 0xd34f,
+ 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355, 0xd356, 0xd357,
+ 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d, 0xd35e, 0xd35f,
+ 0xd360, 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367,
+ 0xd368, 0xd369, 0xd36a, 0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f,
+ 0xd370, 0xd371, 0xd372, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377,
+ 0xd378, 0xd379, 0xd37a, 0xd37b, 0xd37c, 0xd37d, 0xd37e, 0xd37f,
+ 0xd380, 0xd381, 0xd382, 0xd383, 0xd384, 0xd385, 0xd386, 0xd387, /* 0xd380 */
+ 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38c, 0xd38d, 0xd38e, 0xd38f,
+ 0xd390, 0xd391, 0xd392, 0xd393, 0xd394, 0xd395, 0xd396, 0xd397,
+ 0xd398, 0xd399, 0xd39a, 0xd39b, 0xd39c, 0xd39d, 0xd39e, 0xd39f,
+ 0xd3a0, 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6, 0xd3a7,
+ 0xd3a8, 0xd3a9, 0xd3aa, 0xd3ab, 0xd3ac, 0xd3ad, 0xd3ae, 0xd3af,
+ 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0xd3b4, 0xd3b5, 0xd3b6, 0xd3b7,
+ 0xd3b8, 0xd3b9, 0xd3ba, 0xd3bb, 0xd3bc, 0xd3bd, 0xd3be, 0xd3bf,
+ 0xd3c0, 0xd3c1, 0xd3c2, 0xd3c3, 0xd3c4, 0xd3c5, 0xd3c6, 0xd3c7, /* 0xd3c0 */
+ 0xd3c8, 0xd3c9, 0xd3ca, 0xd3cb, 0xd3cc, 0xd3cd, 0xd3ce, 0xd3cf,
+ 0xd3d0, 0xd3d1, 0xd3d2, 0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6, 0xd3d7,
+ 0xd3d8, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc, 0xd3dd, 0xd3de, 0xd3df,
+ 0xd3e0, 0xd3e1, 0xd3e2, 0xd3e3, 0xd3e4, 0xd3e5, 0xd3e6, 0xd3e7,
+ 0xd3e8, 0xd3e9, 0xd3ea, 0xd3eb, 0xd3ec, 0xd3ed, 0xd3ee, 0xd3ef,
+ 0xd3f0, 0xd3f1, 0xd3f2, 0xd3f3, 0xd3f4, 0xd3f5, 0xd3f6, 0xd3f7,
+ 0xd3f8, 0xd3f9, 0xd3fa, 0xd3fb, 0xd3fc, 0xd3fd, 0xd3fe, 0xd3ff,
+ 0xd400, 0xd401, 0xd402, 0xd403, 0xd404, 0xd405, 0xd406, 0xd407, /* 0xd400 */
+ 0xd408, 0xd409, 0xd40a, 0xd40b, 0xd40c, 0xd40d, 0xd40e, 0xd40f,
+ 0xd410, 0xd411, 0xd412, 0xd413, 0xd414, 0xd415, 0xd416, 0xd417,
+ 0xd418, 0xd419, 0xd41a, 0xd41b, 0xd41c, 0xd41d, 0xd41e, 0xd41f,
+ 0xd420, 0xd421, 0xd422, 0xd423, 0xd424, 0xd425, 0xd426, 0xd427,
+ 0xd428, 0xd429, 0xd42a, 0xd42b, 0xd42c, 0xd42d, 0xd42e, 0xd42f,
+ 0xd430, 0xd431, 0xd432, 0xd433, 0xd434, 0xd435, 0xd436, 0xd437,
+ 0xd438, 0xd439, 0xd43a, 0xd43b, 0xd43c, 0xd43d, 0xd43e, 0xd43f,
+ 0xd440, 0xd441, 0xd442, 0xd443, 0xd444, 0xd445, 0xd446, 0xd447, /* 0xd440 */
+ 0xd448, 0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f,
+ 0xd450, 0xd451, 0xd452, 0xd453, 0xd454, 0xd455, 0xd456, 0xd457,
+ 0xd458, 0xd459, 0xd45a, 0xd45b, 0xd45c, 0xd45d, 0xd45e, 0xd45f,
+ 0xd460, 0xd461, 0xd462, 0xd463, 0xd464, 0xd465, 0xd466, 0xd467,
+ 0xd468, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46d, 0xd46e, 0xd46f,
+ 0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477,
+ 0xd478, 0xd479, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e, 0xd47f,
+ 0xd480, 0xd481, 0xd482, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, /* 0xd480 */
+ 0xd488, 0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d, 0xd48e, 0xd48f,
+ 0xd490, 0xd491, 0xd492, 0xd493, 0xd494, 0xd495, 0xd496, 0xd497,
+ 0xd498, 0xd499, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f,
+ 0xd4a0, 0xd4a1, 0xd4a2, 0xd4a3, 0xd4a4, 0xd4a5, 0xd4a6, 0xd4a7,
+ 0xd4a8, 0xd4a9, 0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad, 0xd4ae, 0xd4af,
+ 0xd4b0, 0xd4b1, 0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6, 0xd4b7,
+ 0xd4b8, 0xd4b9, 0xd4ba, 0xd4bb, 0xd4bc, 0xd4bd, 0xd4be, 0xd4bf,
+ 0xd4c0, 0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4, 0xd4c5, 0xd4c6, 0xd4c7, /* 0xd4c0 */
+ 0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0xd4cc, 0xd4cd, 0xd4ce, 0xd4cf,
+ 0xd4d0, 0xd4d1, 0xd4d2, 0xd4d3, 0xd4d4, 0xd4d5, 0xd4d6, 0xd4d7,
+ 0xd4d8, 0xd4d9, 0xd4da, 0xd4db, 0xd4dc, 0xd4dd, 0xd4de, 0xd4df,
+ 0xd4e0, 0xd4e1, 0xd4e2, 0xd4e3, 0xd4e4, 0xd4e5, 0xd4e6, 0xd4e7,
+ 0xd4e8, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ec, 0xd4ed, 0xd4ee, 0xd4ef,
+ 0xd4f0, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5, 0xd4f6, 0xd4f7,
+ 0xd4f8, 0xd4f9, 0xd4fa, 0xd4fb, 0xd4fc, 0xd4fd, 0xd4fe, 0xd4ff,
+ 0xd500, 0xd501, 0xd502, 0xd503, 0xd504, 0xd505, 0xd506, 0xd507, /* 0xd500 */
+ 0xd508, 0xd509, 0xd50a, 0xd50b, 0xd50c, 0xd50d, 0xd50e, 0xd50f,
+ 0xd510, 0xd511, 0xd512, 0xd513, 0xd514, 0xd515, 0xd516, 0xd517,
+ 0xd518, 0xd519, 0xd51a, 0xd51b, 0xd51c, 0xd51d, 0xd51e, 0xd51f,
+ 0xd520, 0xd521, 0xd522, 0xd523, 0xd524, 0xd525, 0xd526, 0xd527,
+ 0xd528, 0xd529, 0xd52a, 0xd52b, 0xd52c, 0xd52d, 0xd52e, 0xd52f,
+ 0xd530, 0xd531, 0xd532, 0xd533, 0xd534, 0xd535, 0xd536, 0xd537,
+ 0xd538, 0xd539, 0xd53a, 0xd53b, 0xd53c, 0xd53d, 0xd53e, 0xd53f,
+ 0xd540, 0xd541, 0xd542, 0xd543, 0xd544, 0xd545, 0xd546, 0xd547, /* 0xd540 */
+ 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54c, 0xd54d, 0xd54e, 0xd54f,
+ 0xd550, 0xd551, 0xd552, 0xd553, 0xd554, 0xd555, 0xd556, 0xd557,
+ 0xd558, 0xd559, 0xd55a, 0xd55b, 0xd55c, 0xd55d, 0xd55e, 0xd55f,
+ 0xd560, 0xd561, 0xd562, 0xd563, 0xd564, 0xd565, 0xd566, 0xd567,
+ 0xd568, 0xd569, 0xd56a, 0xd56b, 0xd56c, 0xd56d, 0xd56e, 0xd56f,
+ 0xd570, 0xd571, 0xd572, 0xd573, 0xd574, 0xd575, 0xd576, 0xd577,
+ 0xd578, 0xd579, 0xd57a, 0xd57b, 0xd57c, 0xd57d, 0xd57e, 0xd57f,
+ 0xd580, 0xd581, 0xd582, 0xd583, 0xd584, 0xd585, 0xd586, 0xd587, /* 0xd580 */
+ 0xd588, 0xd589, 0xd58a, 0xd58b, 0xd58c, 0xd58d, 0xd58e, 0xd58f,
+ 0xd590, 0xd591, 0xd592, 0xd593, 0xd594, 0xd595, 0xd596, 0xd597,
+ 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, 0xd59d, 0xd59e, 0xd59f,
+ 0xd5a0, 0xd5a1, 0xd5a2, 0xd5a3, 0xd5a4, 0xd5a5, 0xd5a6, 0xd5a7,
+ 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0xd5ac, 0xd5ad, 0xd5ae, 0xd5af,
+ 0xd5b0, 0xd5b1, 0xd5b2, 0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6, 0xd5b7,
+ 0xd5b8, 0xd5b9, 0xd5ba, 0xd5bb, 0xd5bc, 0xd5bd, 0xd5be, 0xd5bf,
+ 0xd5c0, 0xd5c1, 0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6, 0xd5c7, /* 0xd5c0 */
+ 0xd5c8, 0xd5c9, 0xd5ca, 0xd5cb, 0xd5cc, 0xd5cd, 0xd5ce, 0xd5cf,
+ 0xd5d0, 0xd5d1, 0xd5d2, 0xd5d3, 0xd5d4, 0xd5d5, 0xd5d6, 0xd5d7,
+ 0xd5d8, 0xd5d9, 0xd5da, 0xd5db, 0xd5dc, 0xd5dd, 0xd5de, 0xd5df,
+ 0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0xd5e4, 0xd5e5, 0xd5e6, 0xd5e7,
+ 0xd5e8, 0xd5e9, 0xd5ea, 0xd5eb, 0xd5ec, 0xd5ed, 0xd5ee, 0xd5ef,
+ 0xd5f0, 0xd5f1, 0xd5f2, 0xd5f3, 0xd5f4, 0xd5f5, 0xd5f6, 0xd5f7,
+ 0xd5f8, 0xd5f9, 0xd5fa, 0xd5fb, 0xd5fc, 0xd5fd, 0xd5fe, 0xd5ff,
+ 0xd600, 0xd601, 0xd602, 0xd603, 0xd604, 0xd605, 0xd606, 0xd607, /* 0xd600 */
+ 0xd608, 0xd609, 0xd60a, 0xd60b, 0xd60c, 0xd60d, 0xd60e, 0xd60f,
+ 0xd610, 0xd611, 0xd612, 0xd613, 0xd614, 0xd615, 0xd616, 0xd617,
+ 0xd618, 0xd619, 0xd61a, 0xd61b, 0xd61c, 0xd61d, 0xd61e, 0xd61f,
+ 0xd620, 0xd621, 0xd622, 0xd623, 0xd624, 0xd625, 0xd626, 0xd627,
+ 0xd628, 0xd629, 0xd62a, 0xd62b, 0xd62c, 0xd62d, 0xd62e, 0xd62f,
+ 0xd630, 0xd631, 0xd632, 0xd633, 0xd634, 0xd635, 0xd636, 0xd637,
+ 0xd638, 0xd639, 0xd63a, 0xd63b, 0xd63c, 0xd63d, 0xd63e, 0xd63f,
+ 0xd640, 0xd641, 0xd642, 0xd643, 0xd644, 0xd645, 0xd646, 0xd647, /* 0xd640 */
+ 0xd648, 0xd649, 0xd64a, 0xd64b, 0xd64c, 0xd64d, 0xd64e, 0xd64f,
+ 0xd650, 0xd651, 0xd652, 0xd653, 0xd654, 0xd655, 0xd656, 0xd657,
+ 0xd658, 0xd659, 0xd65a, 0xd65b, 0xd65c, 0xd65d, 0xd65e, 0xd65f,
+ 0xd660, 0xd661, 0xd662, 0xd663, 0xd664, 0xd665, 0xd666, 0xd667,
+ 0xd668, 0xd669, 0xd66a, 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f,
+ 0xd670, 0xd671, 0xd672, 0xd673, 0xd674, 0xd675, 0xd676, 0xd677,
+ 0xd678, 0xd679, 0xd67a, 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd67f,
+ 0xd680, 0xd681, 0xd682, 0xd683, 0xd684, 0xd685, 0xd686, 0xd687, /* 0xd680 */
+ 0xd688, 0xd689, 0xd68a, 0xd68b, 0xd68c, 0xd68d, 0xd68e, 0xd68f,
+ 0xd690, 0xd691, 0xd692, 0xd693, 0xd694, 0xd695, 0xd696, 0xd697,
+ 0xd698, 0xd699, 0xd69a, 0xd69b, 0xd69c, 0xd69d, 0xd69e, 0xd69f,
+ 0xd6a0, 0xd6a1, 0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7,
+ 0xd6a8, 0xd6a9, 0xd6aa, 0xd6ab, 0xd6ac, 0xd6ad, 0xd6ae, 0xd6af,
+ 0xd6b0, 0xd6b1, 0xd6b2, 0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6, 0xd6b7,
+ 0xd6b8, 0xd6b9, 0xd6ba, 0xd6bb, 0xd6bc, 0xd6bd, 0xd6be, 0xd6bf,
+ 0xd6c0, 0xd6c1, 0xd6c2, 0xd6c3, 0xd6c4, 0xd6c5, 0xd6c6, 0xd6c7, /* 0xd6c0 */
+ 0xd6c8, 0xd6c9, 0xd6ca, 0xd6cb, 0xd6cc, 0xd6cd, 0xd6ce, 0xd6cf,
+ 0xd6d0, 0xd6d1, 0xd6d2, 0xd6d3, 0xd6d4, 0xd6d5, 0xd6d6, 0xd6d7,
+ 0xd6d8, 0xd6d9, 0xd6da, 0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df,
+ 0xd6e0, 0xd6e1, 0xd6e2, 0xd6e3, 0xd6e4, 0xd6e5, 0xd6e6, 0xd6e7,
+ 0xd6e8, 0xd6e9, 0xd6ea, 0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee, 0xd6ef,
+ 0xd6f0, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f5, 0xd6f6, 0xd6f7,
+ 0xd6f8, 0xd6f9, 0xd6fa, 0xd6fb, 0xd6fc, 0xd6fd, 0xd6fe, 0xd6ff,
+ 0xd700, 0xd701, 0xd702, 0xd703, 0xd704, 0xd705, 0xd706, 0xd707, /* 0xd700 */
+ 0xd708, 0xd709, 0xd70a, 0xd70b, 0xd70c, 0xd70d, 0xd70e, 0xd70f,
+ 0xd710, 0xd711, 0xd712, 0xd713, 0xd714, 0xd715, 0xd716, 0xd717,
+ 0xd718, 0xd719, 0xd71a, 0xd71b, 0xd71c, 0xd71d, 0xd71e, 0xd71f,
+ 0xd720, 0xd721, 0xd722, 0xd723, 0xd724, 0xd725, 0xd726, 0xd727,
+ 0xd728, 0xd729, 0xd72a, 0xd72b, 0xd72c, 0xd72d, 0xd72e, 0xd72f,
+ 0xd730, 0xd731, 0xd732, 0xd733, 0xd734, 0xd735, 0xd736, 0xd737,
+ 0xd738, 0xd739, 0xd73a, 0xd73b, 0xd73c, 0xd73d, 0xd73e, 0xd73f,
+ 0xd740, 0xd741, 0xd742, 0xd743, 0xd744, 0xd745, 0xd746, 0xd747, /* 0xd740 */
+ 0xd748, 0xd749, 0xd74a, 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f,
+ 0xd750, 0xd751, 0xd752, 0xd753, 0xd754, 0xd755, 0xd756, 0xd757,
+ 0xd758, 0xd759, 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f,
+ 0xd760, 0xd761, 0xd762, 0xd763, 0xd764, 0xd765, 0xd766, 0xd767,
+ 0xd768, 0xd769, 0xd76a, 0xd76b, 0xd76c, 0xd76d, 0xd76e, 0xd76f,
+ 0xd770, 0xd771, 0xd772, 0xd773, 0xd774, 0xd775, 0xd776, 0xd777,
+ 0xd778, 0xd779, 0xd77a, 0xd77b, 0xd77c, 0xd77d, 0xd77e, 0xd77f,
+ 0xd780, 0xd781, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, /* 0xd780 */
+ 0xd788, 0xd789, 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e, 0xd78f,
+ 0xd790, 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797,
+ 0xd798, 0xd799, 0xd79a, 0xd79b, 0xd79c, 0xd79d, 0xd79e, 0xd79f,
+ 0xd7a0, 0xd7a1, 0xd7a2, 0xd7a3, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xd7b0, 0xd7b1, 0xd7b2, 0xd7b3, 0xd7b4, 0xd7b5, 0xd7b6, 0xd7b7,
+ 0xd7b8, 0xd7b9, 0xd7ba, 0xd7bb, 0xd7bc, 0xd7bd, 0xd7be, 0xd7bf,
+ 0xd7c0, 0xd7c1, 0xd7c2, 0xd7c3, 0xd7c4, 0xd7c5, 0xd7c6, 0x0000, /* 0xd7c0 */
+ 0x0000, 0x0000, 0x0000, 0xd7cb, 0xd7cc, 0xd7cd, 0xd7ce, 0xd7cf,
+ 0xd7d0, 0xd7d1, 0xd7d2, 0xd7d3, 0xd7d4, 0xd7d5, 0xd7d6, 0xd7d7,
+ 0xd7d8, 0xd7d9, 0xd7da, 0xd7db, 0xd7dc, 0xd7dd, 0xd7de, 0xd7df,
+ 0xd7e0, 0xd7e1, 0xd7e2, 0xd7e3, 0xd7e4, 0xd7e5, 0xd7e6, 0xd7e7,
+ 0xd7e8, 0xd7e9, 0xd7ea, 0xd7eb, 0xd7ec, 0xd7ed, 0xd7ee, 0xd7ef,
+ 0xd7f0, 0xd7f1, 0xd7f2, 0xd7f3, 0xd7f4, 0xd7f5, 0xd7f6, 0xd7f7,
+ 0xd7f8, 0xd7f9, 0xd7fa, 0xd7fb, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xd800, 0xd801, 0xd802, 0xd803, 0xd804, 0xd805, 0xd806, 0xd807, /* 0xd800 */
+ 0xd808, 0xd809, 0xd80a, 0xd80b, 0xd80c, 0xd80d, 0xd80e, 0xd80f,
+ 0xd810, 0xd811, 0xd812, 0xd813, 0xd814, 0xd815, 0xd816, 0xd817,
+ 0xd818, 0xd819, 0xd81a, 0xd81b, 0xd81c, 0xd81d, 0xd81e, 0xd81f,
+ 0xd820, 0xd821, 0xd822, 0xd823, 0xd824, 0xd825, 0xd826, 0xd827,
+ 0xd828, 0xd829, 0xd82a, 0xd82b, 0xd82c, 0xd82d, 0xd82e, 0xd82f,
+ 0xd830, 0xd831, 0xd832, 0xd833, 0xd834, 0xd835, 0xd836, 0xd837,
+ 0xd838, 0xd839, 0xd83a, 0xd83b, 0xd83c, 0xd83d, 0xd83e, 0xd83f,
+ 0xd840, 0xd841, 0xd842, 0xd843, 0xd844, 0xd845, 0xd846, 0xd847, /* 0xd840 */
+ 0xd848, 0xd849, 0xd84a, 0xd84b, 0xd84c, 0xd84d, 0xd84e, 0xd84f,
+ 0xd850, 0xd851, 0xd852, 0xd853, 0xd854, 0xd855, 0xd856, 0xd857,
+ 0xd858, 0xd859, 0xd85a, 0xd85b, 0xd85c, 0xd85d, 0xd85e, 0xd85f,
+ 0xd860, 0xd861, 0xd862, 0xd863, 0xd864, 0xd865, 0xd866, 0xd867,
+ 0xd868, 0xd869, 0xd86a, 0xd86b, 0xd86c, 0xd86d, 0xd86e, 0xd86f,
+ 0xd870, 0xd871, 0xd872, 0xd873, 0xd874, 0xd875, 0xd876, 0xd877,
+ 0xd878, 0xd879, 0xd87a, 0xd87b, 0xd87c, 0xd87d, 0xd87e, 0xd87f,
+ 0xd880, 0xd881, 0xd882, 0xd883, 0xd884, 0xd885, 0xd886, 0xd887, /* 0xd880 */
+ 0xd888, 0xd889, 0xd88a, 0xd88b, 0xd88c, 0xd88d, 0xd88e, 0xd88f,
+ 0xd890, 0xd891, 0xd892, 0xd893, 0xd894, 0xd895, 0xd896, 0xd897,
+ 0xd898, 0xd899, 0xd89a, 0xd89b, 0xd89c, 0xd89d, 0xd89e, 0xd89f,
+ 0xd8a0, 0xd8a1, 0xd8a2, 0xd8a3, 0xd8a4, 0xd8a5, 0xd8a6, 0xd8a7,
+ 0xd8a8, 0xd8a9, 0xd8aa, 0xd8ab, 0xd8ac, 0xd8ad, 0xd8ae, 0xd8af,
+ 0xd8b0, 0xd8b1, 0xd8b2, 0xd8b3, 0xd8b4, 0xd8b5, 0xd8b6, 0xd8b7,
+ 0xd8b8, 0xd8b9, 0xd8ba, 0xd8bb, 0xd8bc, 0xd8bd, 0xd8be, 0xd8bf,
+ 0xd8c0, 0xd8c1, 0xd8c2, 0xd8c3, 0xd8c4, 0xd8c5, 0xd8c6, 0xd8c7, /* 0xd8c0 */
+ 0xd8c8, 0xd8c9, 0xd8ca, 0xd8cb, 0xd8cc, 0xd8cd, 0xd8ce, 0xd8cf,
+ 0xd8d0, 0xd8d1, 0xd8d2, 0xd8d3, 0xd8d4, 0xd8d5, 0xd8d6, 0xd8d7,
+ 0xd8d8, 0xd8d9, 0xd8da, 0xd8db, 0xd8dc, 0xd8dd, 0xd8de, 0xd8df,
+ 0xd8e0, 0xd8e1, 0xd8e2, 0xd8e3, 0xd8e4, 0xd8e5, 0xd8e6, 0xd8e7,
+ 0xd8e8, 0xd8e9, 0xd8ea, 0xd8eb, 0xd8ec, 0xd8ed, 0xd8ee, 0xd8ef,
+ 0xd8f0, 0xd8f1, 0xd8f2, 0xd8f3, 0xd8f4, 0xd8f5, 0xd8f6, 0xd8f7,
+ 0xd8f8, 0xd8f9, 0xd8fa, 0xd8fb, 0xd8fc, 0xd8fd, 0xd8fe, 0xd8ff,
+ 0xd900, 0xd901, 0xd902, 0xd903, 0xd904, 0xd905, 0xd906, 0xd907, /* 0xd900 */
+ 0xd908, 0xd909, 0xd90a, 0xd90b, 0xd90c, 0xd90d, 0xd90e, 0xd90f,
+ 0xd910, 0xd911, 0xd912, 0xd913, 0xd914, 0xd915, 0xd916, 0xd917,
+ 0xd918, 0xd919, 0xd91a, 0xd91b, 0xd91c, 0xd91d, 0xd91e, 0xd91f,
+ 0xd920, 0xd921, 0xd922, 0xd923, 0xd924, 0xd925, 0xd926, 0xd927,
+ 0xd928, 0xd929, 0xd92a, 0xd92b, 0xd92c, 0xd92d, 0xd92e, 0xd92f,
+ 0xd930, 0xd931, 0xd932, 0xd933, 0xd934, 0xd935, 0xd936, 0xd937,
+ 0xd938, 0xd939, 0xd93a, 0xd93b, 0xd93c, 0xd93d, 0xd93e, 0xd93f,
+ 0xd940, 0xd941, 0xd942, 0xd943, 0xd944, 0xd945, 0xd946, 0xd947, /* 0xd940 */
+ 0xd948, 0xd949, 0xd94a, 0xd94b, 0xd94c, 0xd94d, 0xd94e, 0xd94f,
+ 0xd950, 0xd951, 0xd952, 0xd953, 0xd954, 0xd955, 0xd956, 0xd957,
+ 0xd958, 0xd959, 0xd95a, 0xd95b, 0xd95c, 0xd95d, 0xd95e, 0xd95f,
+ 0xd960, 0xd961, 0xd962, 0xd963, 0xd964, 0xd965, 0xd966, 0xd967,
+ 0xd968, 0xd969, 0xd96a, 0xd96b, 0xd96c, 0xd96d, 0xd96e, 0xd96f,
+ 0xd970, 0xd971, 0xd972, 0xd973, 0xd974, 0xd975, 0xd976, 0xd977,
+ 0xd978, 0xd979, 0xd97a, 0xd97b, 0xd97c, 0xd97d, 0xd97e, 0xd97f,
+ 0xd980, 0xd981, 0xd982, 0xd983, 0xd984, 0xd985, 0xd986, 0xd987, /* 0xd980 */
+ 0xd988, 0xd989, 0xd98a, 0xd98b, 0xd98c, 0xd98d, 0xd98e, 0xd98f,
+ 0xd990, 0xd991, 0xd992, 0xd993, 0xd994, 0xd995, 0xd996, 0xd997,
+ 0xd998, 0xd999, 0xd99a, 0xd99b, 0xd99c, 0xd99d, 0xd99e, 0xd99f,
+ 0xd9a0, 0xd9a1, 0xd9a2, 0xd9a3, 0xd9a4, 0xd9a5, 0xd9a6, 0xd9a7,
+ 0xd9a8, 0xd9a9, 0xd9aa, 0xd9ab, 0xd9ac, 0xd9ad, 0xd9ae, 0xd9af,
+ 0xd9b0, 0xd9b1, 0xd9b2, 0xd9b3, 0xd9b4, 0xd9b5, 0xd9b6, 0xd9b7,
+ 0xd9b8, 0xd9b9, 0xd9ba, 0xd9bb, 0xd9bc, 0xd9bd, 0xd9be, 0xd9bf,
+ 0xd9c0, 0xd9c1, 0xd9c2, 0xd9c3, 0xd9c4, 0xd9c5, 0xd9c6, 0xd9c7, /* 0xd9c0 */
+ 0xd9c8, 0xd9c9, 0xd9ca, 0xd9cb, 0xd9cc, 0xd9cd, 0xd9ce, 0xd9cf,
+ 0xd9d0, 0xd9d1, 0xd9d2, 0xd9d3, 0xd9d4, 0xd9d5, 0xd9d6, 0xd9d7,
+ 0xd9d8, 0xd9d9, 0xd9da, 0xd9db, 0xd9dc, 0xd9dd, 0xd9de, 0xd9df,
+ 0xd9e0, 0xd9e1, 0xd9e2, 0xd9e3, 0xd9e4, 0xd9e5, 0xd9e6, 0xd9e7,
+ 0xd9e8, 0xd9e9, 0xd9ea, 0xd9eb, 0xd9ec, 0xd9ed, 0xd9ee, 0xd9ef,
+ 0xd9f0, 0xd9f1, 0xd9f2, 0xd9f3, 0xd9f4, 0xd9f5, 0xd9f6, 0xd9f7,
+ 0xd9f8, 0xd9f9, 0xd9fa, 0xd9fb, 0xd9fc, 0xd9fd, 0xd9fe, 0xd9ff,
+ 0xda00, 0xda01, 0xda02, 0xda03, 0xda04, 0xda05, 0xda06, 0xda07, /* 0xda00 */
+ 0xda08, 0xda09, 0xda0a, 0xda0b, 0xda0c, 0xda0d, 0xda0e, 0xda0f,
+ 0xda10, 0xda11, 0xda12, 0xda13, 0xda14, 0xda15, 0xda16, 0xda17,
+ 0xda18, 0xda19, 0xda1a, 0xda1b, 0xda1c, 0xda1d, 0xda1e, 0xda1f,
+ 0xda20, 0xda21, 0xda22, 0xda23, 0xda24, 0xda25, 0xda26, 0xda27,
+ 0xda28, 0xda29, 0xda2a, 0xda2b, 0xda2c, 0xda2d, 0xda2e, 0xda2f,
+ 0xda30, 0xda31, 0xda32, 0xda33, 0xda34, 0xda35, 0xda36, 0xda37,
+ 0xda38, 0xda39, 0xda3a, 0xda3b, 0xda3c, 0xda3d, 0xda3e, 0xda3f,
+ 0xda40, 0xda41, 0xda42, 0xda43, 0xda44, 0xda45, 0xda46, 0xda47, /* 0xda40 */
+ 0xda48, 0xda49, 0xda4a, 0xda4b, 0xda4c, 0xda4d, 0xda4e, 0xda4f,
+ 0xda50, 0xda51, 0xda52, 0xda53, 0xda54, 0xda55, 0xda56, 0xda57,
+ 0xda58, 0xda59, 0xda5a, 0xda5b, 0xda5c, 0xda5d, 0xda5e, 0xda5f,
+ 0xda60, 0xda61, 0xda62, 0xda63, 0xda64, 0xda65, 0xda66, 0xda67,
+ 0xda68, 0xda69, 0xda6a, 0xda6b, 0xda6c, 0xda6d, 0xda6e, 0xda6f,
+ 0xda70, 0xda71, 0xda72, 0xda73, 0xda74, 0xda75, 0xda76, 0xda77,
+ 0xda78, 0xda79, 0xda7a, 0xda7b, 0xda7c, 0xda7d, 0xda7e, 0xda7f,
+ 0xda80, 0xda81, 0xda82, 0xda83, 0xda84, 0xda85, 0xda86, 0xda87, /* 0xda80 */
+ 0xda88, 0xda89, 0xda8a, 0xda8b, 0xda8c, 0xda8d, 0xda8e, 0xda8f,
+ 0xda90, 0xda91, 0xda92, 0xda93, 0xda94, 0xda95, 0xda96, 0xda97,
+ 0xda98, 0xda99, 0xda9a, 0xda9b, 0xda9c, 0xda9d, 0xda9e, 0xda9f,
+ 0xdaa0, 0xdaa1, 0xdaa2, 0xdaa3, 0xdaa4, 0xdaa5, 0xdaa6, 0xdaa7,
+ 0xdaa8, 0xdaa9, 0xdaaa, 0xdaab, 0xdaac, 0xdaad, 0xdaae, 0xdaaf,
+ 0xdab0, 0xdab1, 0xdab2, 0xdab3, 0xdab4, 0xdab5, 0xdab6, 0xdab7,
+ 0xdab8, 0xdab9, 0xdaba, 0xdabb, 0xdabc, 0xdabd, 0xdabe, 0xdabf,
+ 0xdac0, 0xdac1, 0xdac2, 0xdac3, 0xdac4, 0xdac5, 0xdac6, 0xdac7, /* 0xdac0 */
+ 0xdac8, 0xdac9, 0xdaca, 0xdacb, 0xdacc, 0xdacd, 0xdace, 0xdacf,
+ 0xdad0, 0xdad1, 0xdad2, 0xdad3, 0xdad4, 0xdad5, 0xdad6, 0xdad7,
+ 0xdad8, 0xdad9, 0xdada, 0xdadb, 0xdadc, 0xdadd, 0xdade, 0xdadf,
+ 0xdae0, 0xdae1, 0xdae2, 0xdae3, 0xdae4, 0xdae5, 0xdae6, 0xdae7,
+ 0xdae8, 0xdae9, 0xdaea, 0xdaeb, 0xdaec, 0xdaed, 0xdaee, 0xdaef,
+ 0xdaf0, 0xdaf1, 0xdaf2, 0xdaf3, 0xdaf4, 0xdaf5, 0xdaf6, 0xdaf7,
+ 0xdaf8, 0xdaf9, 0xdafa, 0xdafb, 0xdafc, 0xdafd, 0xdafe, 0xdaff,
+ 0xdb00, 0xdb01, 0xdb02, 0xdb03, 0xdb04, 0xdb05, 0xdb06, 0xdb07, /* 0xdb00 */
+ 0xdb08, 0xdb09, 0xdb0a, 0xdb0b, 0xdb0c, 0xdb0d, 0xdb0e, 0xdb0f,
+ 0xdb10, 0xdb11, 0xdb12, 0xdb13, 0xdb14, 0xdb15, 0xdb16, 0xdb17,
+ 0xdb18, 0xdb19, 0xdb1a, 0xdb1b, 0xdb1c, 0xdb1d, 0xdb1e, 0xdb1f,
+ 0xdb20, 0xdb21, 0xdb22, 0xdb23, 0xdb24, 0xdb25, 0xdb26, 0xdb27,
+ 0xdb28, 0xdb29, 0xdb2a, 0xdb2b, 0xdb2c, 0xdb2d, 0xdb2e, 0xdb2f,
+ 0xdb30, 0xdb31, 0xdb32, 0xdb33, 0xdb34, 0xdb35, 0xdb36, 0xdb37,
+ 0xdb38, 0xdb39, 0xdb3a, 0xdb3b, 0xdb3c, 0xdb3d, 0xdb3e, 0xdb3f,
+ 0xdb40, 0xdb41, 0xdb42, 0xdb43, 0xdb44, 0xdb45, 0xdb46, 0xdb47, /* 0xdb40 */
+ 0xdb48, 0xdb49, 0xdb4a, 0xdb4b, 0xdb4c, 0xdb4d, 0xdb4e, 0xdb4f,
+ 0xdb50, 0xdb51, 0xdb52, 0xdb53, 0xdb54, 0xdb55, 0xdb56, 0xdb57,
+ 0xdb58, 0xdb59, 0xdb5a, 0xdb5b, 0xdb5c, 0xdb5d, 0xdb5e, 0xdb5f,
+ 0xdb60, 0xdb61, 0xdb62, 0xdb63, 0xdb64, 0xdb65, 0xdb66, 0xdb67,
+ 0xdb68, 0xdb69, 0xdb6a, 0xdb6b, 0xdb6c, 0xdb6d, 0xdb6e, 0xdb6f,
+ 0xdb70, 0xdb71, 0xdb72, 0xdb73, 0xdb74, 0xdb75, 0xdb76, 0xdb77,
+ 0xdb78, 0xdb79, 0xdb7a, 0xdb7b, 0xdb7c, 0xdb7d, 0xdb7e, 0xdb7f,
+ 0xdb80, 0xdb81, 0xdb82, 0xdb83, 0xdb84, 0xdb85, 0xdb86, 0xdb87, /* 0xdb80 */
+ 0xdb88, 0xdb89, 0xdb8a, 0xdb8b, 0xdb8c, 0xdb8d, 0xdb8e, 0xdb8f,
+ 0xdb90, 0xdb91, 0xdb92, 0xdb93, 0xdb94, 0xdb95, 0xdb96, 0xdb97,
+ 0xdb98, 0xdb99, 0xdb9a, 0xdb9b, 0xdb9c, 0xdb9d, 0xdb9e, 0xdb9f,
+ 0xdba0, 0xdba1, 0xdba2, 0xdba3, 0xdba4, 0xdba5, 0xdba6, 0xdba7,
+ 0xdba8, 0xdba9, 0xdbaa, 0xdbab, 0xdbac, 0xdbad, 0xdbae, 0xdbaf,
+ 0xdbb0, 0xdbb1, 0xdbb2, 0xdbb3, 0xdbb4, 0xdbb5, 0xdbb6, 0xdbb7,
+ 0xdbb8, 0xdbb9, 0xdbba, 0xdbbb, 0xdbbc, 0xdbbd, 0xdbbe, 0xdbbf,
+ 0xdbc0, 0xdbc1, 0xdbc2, 0xdbc3, 0xdbc4, 0xdbc5, 0xdbc6, 0xdbc7, /* 0xdbc0 */
+ 0xdbc8, 0xdbc9, 0xdbca, 0xdbcb, 0xdbcc, 0xdbcd, 0xdbce, 0xdbcf,
+ 0xdbd0, 0xdbd1, 0xdbd2, 0xdbd3, 0xdbd4, 0xdbd5, 0xdbd6, 0xdbd7,
+ 0xdbd8, 0xdbd9, 0xdbda, 0xdbdb, 0xdbdc, 0xdbdd, 0xdbde, 0xdbdf,
+ 0xdbe0, 0xdbe1, 0xdbe2, 0xdbe3, 0xdbe4, 0xdbe5, 0xdbe6, 0xdbe7,
+ 0xdbe8, 0xdbe9, 0xdbea, 0xdbeb, 0xdbec, 0xdbed, 0xdbee, 0xdbef,
+ 0xdbf0, 0xdbf1, 0xdbf2, 0xdbf3, 0xdbf4, 0xdbf5, 0xdbf6, 0xdbf7,
+ 0xdbf8, 0xdbf9, 0xdbfa, 0xdbfb, 0xdbfc, 0xdbfd, 0xdbfe, 0xdbff,
+ 0xdc00, 0xdc01, 0xdc02, 0xdc03, 0xdc04, 0xdc05, 0xdc06, 0xdc07, /* 0xdc00 */
+ 0xdc08, 0xdc09, 0xdc0a, 0xdc0b, 0xdc0c, 0xdc0d, 0xdc0e, 0xdc0f,
+ 0xdc10, 0xdc11, 0xdc12, 0xdc13, 0xdc14, 0xdc15, 0xdc16, 0xdc17,
+ 0xdc18, 0xdc19, 0xdc1a, 0xdc1b, 0xdc1c, 0xdc1d, 0xdc1e, 0xdc1f,
+ 0xdc20, 0xdc21, 0xdc22, 0xdc23, 0xdc24, 0xdc25, 0xdc26, 0xdc27,
+ 0xdc28, 0xdc29, 0xdc2a, 0xdc2b, 0xdc2c, 0xdc2d, 0xdc2e, 0xdc2f,
+ 0xdc30, 0xdc31, 0xdc32, 0xdc33, 0xdc34, 0xdc35, 0xdc36, 0xdc37,
+ 0xdc38, 0xdc39, 0xdc3a, 0xdc3b, 0xdc3c, 0xdc3d, 0xdc3e, 0xdc3f,
+ 0xdc40, 0xdc41, 0xdc42, 0xdc43, 0xdc44, 0xdc45, 0xdc46, 0xdc47, /* 0xdc40 */
+ 0xdc48, 0xdc49, 0xdc4a, 0xdc4b, 0xdc4c, 0xdc4d, 0xdc4e, 0xdc4f,
+ 0xdc50, 0xdc51, 0xdc52, 0xdc53, 0xdc54, 0xdc55, 0xdc56, 0xdc57,
+ 0xdc58, 0xdc59, 0xdc5a, 0xdc5b, 0xdc5c, 0xdc5d, 0xdc5e, 0xdc5f,
+ 0xdc60, 0xdc61, 0xdc62, 0xdc63, 0xdc64, 0xdc65, 0xdc66, 0xdc67,
+ 0xdc68, 0xdc69, 0xdc6a, 0xdc6b, 0xdc6c, 0xdc6d, 0xdc6e, 0xdc6f,
+ 0xdc70, 0xdc71, 0xdc72, 0xdc73, 0xdc74, 0xdc75, 0xdc76, 0xdc77,
+ 0xdc78, 0xdc79, 0xdc7a, 0xdc7b, 0xdc7c, 0xdc7d, 0xdc7e, 0xdc7f,
+ 0xdc80, 0xdc81, 0xdc82, 0xdc83, 0xdc84, 0xdc85, 0xdc86, 0xdc87, /* 0xdc80 */
+ 0xdc88, 0xdc89, 0xdc8a, 0xdc8b, 0xdc8c, 0xdc8d, 0xdc8e, 0xdc8f,
+ 0xdc90, 0xdc91, 0xdc92, 0xdc93, 0xdc94, 0xdc95, 0xdc96, 0xdc97,
+ 0xdc98, 0xdc99, 0xdc9a, 0xdc9b, 0xdc9c, 0xdc9d, 0xdc9e, 0xdc9f,
+ 0xdca0, 0xdca1, 0xdca2, 0xdca3, 0xdca4, 0xdca5, 0xdca6, 0xdca7,
+ 0xdca8, 0xdca9, 0xdcaa, 0xdcab, 0xdcac, 0xdcad, 0xdcae, 0xdcaf,
+ 0xdcb0, 0xdcb1, 0xdcb2, 0xdcb3, 0xdcb4, 0xdcb5, 0xdcb6, 0xdcb7,
+ 0xdcb8, 0xdcb9, 0xdcba, 0xdcbb, 0xdcbc, 0xdcbd, 0xdcbe, 0xdcbf,
+ 0xdcc0, 0xdcc1, 0xdcc2, 0xdcc3, 0xdcc4, 0xdcc5, 0xdcc6, 0xdcc7, /* 0xdcc0 */
+ 0xdcc8, 0xdcc9, 0xdcca, 0xdccb, 0xdccc, 0xdccd, 0xdcce, 0xdccf,
+ 0xdcd0, 0xdcd1, 0xdcd2, 0xdcd3, 0xdcd4, 0xdcd5, 0xdcd6, 0xdcd7,
+ 0xdcd8, 0xdcd9, 0xdcda, 0xdcdb, 0xdcdc, 0xdcdd, 0xdcde, 0xdcdf,
+ 0xdce0, 0xdce1, 0xdce2, 0xdce3, 0xdce4, 0xdce5, 0xdce6, 0xdce7,
+ 0xdce8, 0xdce9, 0xdcea, 0xdceb, 0xdcec, 0xdced, 0xdcee, 0xdcef,
+ 0xdcf0, 0xdcf1, 0xdcf2, 0xdcf3, 0xdcf4, 0xdcf5, 0xdcf6, 0xdcf7,
+ 0xdcf8, 0xdcf9, 0xdcfa, 0xdcfb, 0xdcfc, 0xdcfd, 0xdcfe, 0xdcff,
+ 0xdd00, 0xdd01, 0xdd02, 0xdd03, 0xdd04, 0xdd05, 0xdd06, 0xdd07, /* 0xdd00 */
+ 0xdd08, 0xdd09, 0xdd0a, 0xdd0b, 0xdd0c, 0xdd0d, 0xdd0e, 0xdd0f,
+ 0xdd10, 0xdd11, 0xdd12, 0xdd13, 0xdd14, 0xdd15, 0xdd16, 0xdd17,
+ 0xdd18, 0xdd19, 0xdd1a, 0xdd1b, 0xdd1c, 0xdd1d, 0xdd1e, 0xdd1f,
+ 0xdd20, 0xdd21, 0xdd22, 0xdd23, 0xdd24, 0xdd25, 0xdd26, 0xdd27,
+ 0xdd28, 0xdd29, 0xdd2a, 0xdd2b, 0xdd2c, 0xdd2d, 0xdd2e, 0xdd2f,
+ 0xdd30, 0xdd31, 0xdd32, 0xdd33, 0xdd34, 0xdd35, 0xdd36, 0xdd37,
+ 0xdd38, 0xdd39, 0xdd3a, 0xdd3b, 0xdd3c, 0xdd3d, 0xdd3e, 0xdd3f,
+ 0xdd40, 0xdd41, 0xdd42, 0xdd43, 0xdd44, 0xdd45, 0xdd46, 0xdd47, /* 0xdd40 */
+ 0xdd48, 0xdd49, 0xdd4a, 0xdd4b, 0xdd4c, 0xdd4d, 0xdd4e, 0xdd4f,
+ 0xdd50, 0xdd51, 0xdd52, 0xdd53, 0xdd54, 0xdd55, 0xdd56, 0xdd57,
+ 0xdd58, 0xdd59, 0xdd5a, 0xdd5b, 0xdd5c, 0xdd5d, 0xdd5e, 0xdd5f,
+ 0xdd60, 0xdd61, 0xdd62, 0xdd63, 0xdd64, 0xdd65, 0xdd66, 0xdd67,
+ 0xdd68, 0xdd69, 0xdd6a, 0xdd6b, 0xdd6c, 0xdd6d, 0xdd6e, 0xdd6f,
+ 0xdd70, 0xdd71, 0xdd72, 0xdd73, 0xdd74, 0xdd75, 0xdd76, 0xdd77,
+ 0xdd78, 0xdd79, 0xdd7a, 0xdd7b, 0xdd7c, 0xdd7d, 0xdd7e, 0xdd7f,
+ 0xdd80, 0xdd81, 0xdd82, 0xdd83, 0xdd84, 0xdd85, 0xdd86, 0xdd87, /* 0xdd80 */
+ 0xdd88, 0xdd89, 0xdd8a, 0xdd8b, 0xdd8c, 0xdd8d, 0xdd8e, 0xdd8f,
+ 0xdd90, 0xdd91, 0xdd92, 0xdd93, 0xdd94, 0xdd95, 0xdd96, 0xdd97,
+ 0xdd98, 0xdd99, 0xdd9a, 0xdd9b, 0xdd9c, 0xdd9d, 0xdd9e, 0xdd9f,
+ 0xdda0, 0xdda1, 0xdda2, 0xdda3, 0xdda4, 0xdda5, 0xdda6, 0xdda7,
+ 0xdda8, 0xdda9, 0xddaa, 0xddab, 0xddac, 0xddad, 0xddae, 0xddaf,
+ 0xddb0, 0xddb1, 0xddb2, 0xddb3, 0xddb4, 0xddb5, 0xddb6, 0xddb7,
+ 0xddb8, 0xddb9, 0xddba, 0xddbb, 0xddbc, 0xddbd, 0xddbe, 0xddbf,
+ 0xddc0, 0xddc1, 0xddc2, 0xddc3, 0xddc4, 0xddc5, 0xddc6, 0xddc7, /* 0xddc0 */
+ 0xddc8, 0xddc9, 0xddca, 0xddcb, 0xddcc, 0xddcd, 0xddce, 0xddcf,
+ 0xddd0, 0xddd1, 0xddd2, 0xddd3, 0xddd4, 0xddd5, 0xddd6, 0xddd7,
+ 0xddd8, 0xddd9, 0xddda, 0xdddb, 0xdddc, 0xdddd, 0xddde, 0xdddf,
+ 0xdde0, 0xdde1, 0xdde2, 0xdde3, 0xdde4, 0xdde5, 0xdde6, 0xdde7,
+ 0xdde8, 0xdde9, 0xddea, 0xddeb, 0xddec, 0xdded, 0xddee, 0xddef,
+ 0xddf0, 0xddf1, 0xddf2, 0xddf3, 0xddf4, 0xddf5, 0xddf6, 0xddf7,
+ 0xddf8, 0xddf9, 0xddfa, 0xddfb, 0xddfc, 0xddfd, 0xddfe, 0xddff,
+ 0xde00, 0xde01, 0xde02, 0xde03, 0xde04, 0xde05, 0xde06, 0xde07, /* 0xde00 */
+ 0xde08, 0xde09, 0xde0a, 0xde0b, 0xde0c, 0xde0d, 0xde0e, 0xde0f,
+ 0xde10, 0xde11, 0xde12, 0xde13, 0xde14, 0xde15, 0xde16, 0xde17,
+ 0xde18, 0xde19, 0xde1a, 0xde1b, 0xde1c, 0xde1d, 0xde1e, 0xde1f,
+ 0xde20, 0xde21, 0xde22, 0xde23, 0xde24, 0xde25, 0xde26, 0xde27,
+ 0xde28, 0xde29, 0xde2a, 0xde2b, 0xde2c, 0xde2d, 0xde2e, 0xde2f,
+ 0xde30, 0xde31, 0xde32, 0xde33, 0xde34, 0xde35, 0xde36, 0xde37,
+ 0xde38, 0xde39, 0xde3a, 0xde3b, 0xde3c, 0xde3d, 0xde3e, 0xde3f,
+ 0xde40, 0xde41, 0xde42, 0xde43, 0xde44, 0xde45, 0xde46, 0xde47, /* 0xde40 */
+ 0xde48, 0xde49, 0xde4a, 0xde4b, 0xde4c, 0xde4d, 0xde4e, 0xde4f,
+ 0xde50, 0xde51, 0xde52, 0xde53, 0xde54, 0xde55, 0xde56, 0xde57,
+ 0xde58, 0xde59, 0xde5a, 0xde5b, 0xde5c, 0xde5d, 0xde5e, 0xde5f,
+ 0xde60, 0xde61, 0xde62, 0xde63, 0xde64, 0xde65, 0xde66, 0xde67,
+ 0xde68, 0xde69, 0xde6a, 0xde6b, 0xde6c, 0xde6d, 0xde6e, 0xde6f,
+ 0xde70, 0xde71, 0xde72, 0xde73, 0xde74, 0xde75, 0xde76, 0xde77,
+ 0xde78, 0xde79, 0xde7a, 0xde7b, 0xde7c, 0xde7d, 0xde7e, 0xde7f,
+ 0xde80, 0xde81, 0xde82, 0xde83, 0xde84, 0xde85, 0xde86, 0xde87, /* 0xde80 */
+ 0xde88, 0xde89, 0xde8a, 0xde8b, 0xde8c, 0xde8d, 0xde8e, 0xde8f,
+ 0xde90, 0xde91, 0xde92, 0xde93, 0xde94, 0xde95, 0xde96, 0xde97,
+ 0xde98, 0xde99, 0xde9a, 0xde9b, 0xde9c, 0xde9d, 0xde9e, 0xde9f,
+ 0xdea0, 0xdea1, 0xdea2, 0xdea3, 0xdea4, 0xdea5, 0xdea6, 0xdea7,
+ 0xdea8, 0xdea9, 0xdeaa, 0xdeab, 0xdeac, 0xdead, 0xdeae, 0xdeaf,
+ 0xdeb0, 0xdeb1, 0xdeb2, 0xdeb3, 0xdeb4, 0xdeb5, 0xdeb6, 0xdeb7,
+ 0xdeb8, 0xdeb9, 0xdeba, 0xdebb, 0xdebc, 0xdebd, 0xdebe, 0xdebf,
+ 0xdec0, 0xdec1, 0xdec2, 0xdec3, 0xdec4, 0xdec5, 0xdec6, 0xdec7, /* 0xdec0 */
+ 0xdec8, 0xdec9, 0xdeca, 0xdecb, 0xdecc, 0xdecd, 0xdece, 0xdecf,
+ 0xded0, 0xded1, 0xded2, 0xded3, 0xded4, 0xded5, 0xded6, 0xded7,
+ 0xded8, 0xded9, 0xdeda, 0xdedb, 0xdedc, 0xdedd, 0xdede, 0xdedf,
+ 0xdee0, 0xdee1, 0xdee2, 0xdee3, 0xdee4, 0xdee5, 0xdee6, 0xdee7,
+ 0xdee8, 0xdee9, 0xdeea, 0xdeeb, 0xdeec, 0xdeed, 0xdeee, 0xdeef,
+ 0xdef0, 0xdef1, 0xdef2, 0xdef3, 0xdef4, 0xdef5, 0xdef6, 0xdef7,
+ 0xdef8, 0xdef9, 0xdefa, 0xdefb, 0xdefc, 0xdefd, 0xdefe, 0xdeff,
+ 0xdf00, 0xdf01, 0xdf02, 0xdf03, 0xdf04, 0xdf05, 0xdf06, 0xdf07, /* 0xdf00 */
+ 0xdf08, 0xdf09, 0xdf0a, 0xdf0b, 0xdf0c, 0xdf0d, 0xdf0e, 0xdf0f,
+ 0xdf10, 0xdf11, 0xdf12, 0xdf13, 0xdf14, 0xdf15, 0xdf16, 0xdf17,
+ 0xdf18, 0xdf19, 0xdf1a, 0xdf1b, 0xdf1c, 0xdf1d, 0xdf1e, 0xdf1f,
+ 0xdf20, 0xdf21, 0xdf22, 0xdf23, 0xdf24, 0xdf25, 0xdf26, 0xdf27,
+ 0xdf28, 0xdf29, 0xdf2a, 0xdf2b, 0xdf2c, 0xdf2d, 0xdf2e, 0xdf2f,
+ 0xdf30, 0xdf31, 0xdf32, 0xdf33, 0xdf34, 0xdf35, 0xdf36, 0xdf37,
+ 0xdf38, 0xdf39, 0xdf3a, 0xdf3b, 0xdf3c, 0xdf3d, 0xdf3e, 0xdf3f,
+ 0xdf40, 0xdf41, 0xdf42, 0xdf43, 0xdf44, 0xdf45, 0xdf46, 0xdf47, /* 0xdf40 */
+ 0xdf48, 0xdf49, 0xdf4a, 0xdf4b, 0xdf4c, 0xdf4d, 0xdf4e, 0xdf4f,
+ 0xdf50, 0xdf51, 0xdf52, 0xdf53, 0xdf54, 0xdf55, 0xdf56, 0xdf57,
+ 0xdf58, 0xdf59, 0xdf5a, 0xdf5b, 0xdf5c, 0xdf5d, 0xdf5e, 0xdf5f,
+ 0xdf60, 0xdf61, 0xdf62, 0xdf63, 0xdf64, 0xdf65, 0xdf66, 0xdf67,
+ 0xdf68, 0xdf69, 0xdf6a, 0xdf6b, 0xdf6c, 0xdf6d, 0xdf6e, 0xdf6f,
+ 0xdf70, 0xdf71, 0xdf72, 0xdf73, 0xdf74, 0xdf75, 0xdf76, 0xdf77,
+ 0xdf78, 0xdf79, 0xdf7a, 0xdf7b, 0xdf7c, 0xdf7d, 0xdf7e, 0xdf7f,
+ 0xdf80, 0xdf81, 0xdf82, 0xdf83, 0xdf84, 0xdf85, 0xdf86, 0xdf87, /* 0xdf80 */
+ 0xdf88, 0xdf89, 0xdf8a, 0xdf8b, 0xdf8c, 0xdf8d, 0xdf8e, 0xdf8f,
+ 0xdf90, 0xdf91, 0xdf92, 0xdf93, 0xdf94, 0xdf95, 0xdf96, 0xdf97,
+ 0xdf98, 0xdf99, 0xdf9a, 0xdf9b, 0xdf9c, 0xdf9d, 0xdf9e, 0xdf9f,
+ 0xdfa0, 0xdfa1, 0xdfa2, 0xdfa3, 0xdfa4, 0xdfa5, 0xdfa6, 0xdfa7,
+ 0xdfa8, 0xdfa9, 0xdfaa, 0xdfab, 0xdfac, 0xdfad, 0xdfae, 0xdfaf,
+ 0xdfb0, 0xdfb1, 0xdfb2, 0xdfb3, 0xdfb4, 0xdfb5, 0xdfb6, 0xdfb7,
+ 0xdfb8, 0xdfb9, 0xdfba, 0xdfbb, 0xdfbc, 0xdfbd, 0xdfbe, 0xdfbf,
+ 0xdfc0, 0xdfc1, 0xdfc2, 0xdfc3, 0xdfc4, 0xdfc5, 0xdfc6, 0xdfc7, /* 0xdfc0 */
+ 0xdfc8, 0xdfc9, 0xdfca, 0xdfcb, 0xdfcc, 0xdfcd, 0xdfce, 0xdfcf,
+ 0xdfd0, 0xdfd1, 0xdfd2, 0xdfd3, 0xdfd4, 0xdfd5, 0xdfd6, 0xdfd7,
+ 0xdfd8, 0xdfd9, 0xdfda, 0xdfdb, 0xdfdc, 0xdfdd, 0xdfde, 0xdfdf,
+ 0xdfe0, 0xdfe1, 0xdfe2, 0xdfe3, 0xdfe4, 0xdfe5, 0xdfe6, 0xdfe7,
+ 0xdfe8, 0xdfe9, 0xdfea, 0xdfeb, 0xdfec, 0xdfed, 0xdfee, 0xdfef,
+ 0xdff0, 0xdff1, 0xdff2, 0xdff3, 0xdff4, 0xdff5, 0xdff6, 0xdff7,
+ 0xdff8, 0xdff9, 0xdffa, 0xdffb, 0xdffc, 0xdffd, 0xdffe, 0xdfff,
+ 0xe000, 0xe001, 0xe002, 0xe003, 0xe004, 0xe005, 0xe006, 0xe007, /* 0xe000 */
+ 0xe008, 0xe009, 0xe00a, 0xe00b, 0xe00c, 0xe00d, 0xe00e, 0xe00f,
+ 0xe010, 0xe011, 0xe012, 0xe013, 0xe014, 0xe015, 0xe016, 0xe017,
+ 0xe018, 0xe019, 0xe01a, 0xe01b, 0xe01c, 0xe01d, 0xe01e, 0xe01f,
+ 0xe020, 0xe021, 0xe022, 0xe023, 0xe024, 0xe025, 0xe026, 0xe027,
+ 0xe028, 0xe029, 0xe02a, 0xe02b, 0xe02c, 0xe02d, 0xe02e, 0xe02f,
+ 0xe030, 0xe031, 0xe032, 0xe033, 0xe034, 0xe035, 0xe036, 0xe037,
+ 0xe038, 0xe039, 0xe03a, 0xe03b, 0xe03c, 0xe03d, 0xe03e, 0xe03f,
+ 0xe040, 0xe041, 0xe042, 0xe043, 0xe044, 0xe045, 0xe046, 0xe047, /* 0xe040 */
+ 0xe048, 0xe049, 0xe04a, 0xe04b, 0xe04c, 0xe04d, 0xe04e, 0xe04f,
+ 0xe050, 0xe051, 0xe052, 0xe053, 0xe054, 0xe055, 0xe056, 0xe057,
+ 0xe058, 0xe059, 0xe05a, 0xe05b, 0xe05c, 0xe05d, 0xe05e, 0xe05f,
+ 0xe060, 0xe061, 0xe062, 0xe063, 0xe064, 0xe065, 0xe066, 0xe067,
+ 0xe068, 0xe069, 0xe06a, 0xe06b, 0xe06c, 0xe06d, 0xe06e, 0xe06f,
+ 0xe070, 0xe071, 0xe072, 0xe073, 0xe074, 0xe075, 0xe076, 0xe077,
+ 0xe078, 0xe079, 0xe07a, 0xe07b, 0xe07c, 0xe07d, 0xe07e, 0xe07f,
+ 0xe080, 0xe081, 0xe082, 0xe083, 0xe084, 0xe085, 0xe086, 0xe087, /* 0xe080 */
+ 0xe088, 0xe089, 0xe08a, 0xe08b, 0xe08c, 0xe08d, 0xe08e, 0xe08f,
+ 0xe090, 0xe091, 0xe092, 0xe093, 0xe094, 0xe095, 0xe096, 0xe097,
+ 0xe098, 0xe099, 0xe09a, 0xe09b, 0xe09c, 0xe09d, 0xe09e, 0xe09f,
+ 0xe0a0, 0xe0a1, 0xe0a2, 0xe0a3, 0xe0a4, 0xe0a5, 0xe0a6, 0xe0a7,
+ 0xe0a8, 0xe0a9, 0xe0aa, 0xe0ab, 0xe0ac, 0xe0ad, 0xe0ae, 0xe0af,
+ 0xe0b0, 0xe0b1, 0xe0b2, 0xe0b3, 0xe0b4, 0xe0b5, 0xe0b6, 0xe0b7,
+ 0xe0b8, 0xe0b9, 0xe0ba, 0xe0bb, 0xe0bc, 0xe0bd, 0xe0be, 0xe0bf,
+ 0xe0c0, 0xe0c1, 0xe0c2, 0xe0c3, 0xe0c4, 0xe0c5, 0xe0c6, 0xe0c7, /* 0xe0c0 */
+ 0xe0c8, 0xe0c9, 0xe0ca, 0xe0cb, 0xe0cc, 0xe0cd, 0xe0ce, 0xe0cf,
+ 0xe0d0, 0xe0d1, 0xe0d2, 0xe0d3, 0xe0d4, 0xe0d5, 0xe0d6, 0xe0d7,
+ 0xe0d8, 0xe0d9, 0xe0da, 0xe0db, 0xe0dc, 0xe0dd, 0xe0de, 0xe0df,
+ 0xe0e0, 0xe0e1, 0xe0e2, 0xe0e3, 0xe0e4, 0xe0e5, 0xe0e6, 0xe0e7,
+ 0xe0e8, 0xe0e9, 0xe0ea, 0xe0eb, 0xe0ec, 0xe0ed, 0xe0ee, 0xe0ef,
+ 0xe0f0, 0xe0f1, 0xe0f2, 0xe0f3, 0xe0f4, 0xe0f5, 0xe0f6, 0xe0f7,
+ 0xe0f8, 0xe0f9, 0xe0fa, 0xe0fb, 0xe0fc, 0xe0fd, 0xe0fe, 0xe0ff,
+ 0xe100, 0xe101, 0xe102, 0xe103, 0xe104, 0xe105, 0xe106, 0xe107, /* 0xe100 */
+ 0xe108, 0xe109, 0xe10a, 0xe10b, 0xe10c, 0xe10d, 0xe10e, 0xe10f,
+ 0xe110, 0xe111, 0xe112, 0xe113, 0xe114, 0xe115, 0xe116, 0xe117,
+ 0xe118, 0xe119, 0xe11a, 0xe11b, 0xe11c, 0xe11d, 0xe11e, 0xe11f,
+ 0xe120, 0xe121, 0xe122, 0xe123, 0xe124, 0xe125, 0xe126, 0xe127,
+ 0xe128, 0xe129, 0xe12a, 0xe12b, 0xe12c, 0xe12d, 0xe12e, 0xe12f,
+ 0xe130, 0xe131, 0xe132, 0xe133, 0xe134, 0xe135, 0xe136, 0xe137,
+ 0xe138, 0xe139, 0xe13a, 0xe13b, 0xe13c, 0xe13d, 0xe13e, 0xe13f,
+ 0xe140, 0xe141, 0xe142, 0xe143, 0xe144, 0xe145, 0xe146, 0xe147, /* 0xe140 */
+ 0xe148, 0xe149, 0xe14a, 0xe14b, 0xe14c, 0xe14d, 0xe14e, 0xe14f,
+ 0xe150, 0xe151, 0xe152, 0xe153, 0xe154, 0xe155, 0xe156, 0xe157,
+ 0xe158, 0xe159, 0xe15a, 0xe15b, 0xe15c, 0xe15d, 0xe15e, 0xe15f,
+ 0xe160, 0xe161, 0xe162, 0xe163, 0xe164, 0xe165, 0xe166, 0xe167,
+ 0xe168, 0xe169, 0xe16a, 0xe16b, 0xe16c, 0xe16d, 0xe16e, 0xe16f,
+ 0xe170, 0xe171, 0xe172, 0xe173, 0xe174, 0xe175, 0xe176, 0xe177,
+ 0xe178, 0xe179, 0xe17a, 0xe17b, 0xe17c, 0xe17d, 0xe17e, 0xe17f,
+ 0xe180, 0xe181, 0xe182, 0xe183, 0xe184, 0xe185, 0xe186, 0xe187, /* 0xe180 */
+ 0xe188, 0xe189, 0xe18a, 0xe18b, 0xe18c, 0xe18d, 0xe18e, 0xe18f,
+ 0xe190, 0xe191, 0xe192, 0xe193, 0xe194, 0xe195, 0xe196, 0xe197,
+ 0xe198, 0xe199, 0xe19a, 0xe19b, 0xe19c, 0xe19d, 0xe19e, 0xe19f,
+ 0xe1a0, 0xe1a1, 0xe1a2, 0xe1a3, 0xe1a4, 0xe1a5, 0xe1a6, 0xe1a7,
+ 0xe1a8, 0xe1a9, 0xe1aa, 0xe1ab, 0xe1ac, 0xe1ad, 0xe1ae, 0xe1af,
+ 0xe1b0, 0xe1b1, 0xe1b2, 0xe1b3, 0xe1b4, 0xe1b5, 0xe1b6, 0xe1b7,
+ 0xe1b8, 0xe1b9, 0xe1ba, 0xe1bb, 0xe1bc, 0xe1bd, 0xe1be, 0xe1bf,
+ 0xe1c0, 0xe1c1, 0xe1c2, 0xe1c3, 0xe1c4, 0xe1c5, 0xe1c6, 0xe1c7, /* 0xe1c0 */
+ 0xe1c8, 0xe1c9, 0xe1ca, 0xe1cb, 0xe1cc, 0xe1cd, 0xe1ce, 0xe1cf,
+ 0xe1d0, 0xe1d1, 0xe1d2, 0xe1d3, 0xe1d4, 0xe1d5, 0xe1d6, 0xe1d7,
+ 0xe1d8, 0xe1d9, 0xe1da, 0xe1db, 0xe1dc, 0xe1dd, 0xe1de, 0xe1df,
+ 0xe1e0, 0xe1e1, 0xe1e2, 0xe1e3, 0xe1e4, 0xe1e5, 0xe1e6, 0xe1e7,
+ 0xe1e8, 0xe1e9, 0xe1ea, 0xe1eb, 0xe1ec, 0xe1ed, 0xe1ee, 0xe1ef,
+ 0xe1f0, 0xe1f1, 0xe1f2, 0xe1f3, 0xe1f4, 0xe1f5, 0xe1f6, 0xe1f7,
+ 0xe1f8, 0xe1f9, 0xe1fa, 0xe1fb, 0xe1fc, 0xe1fd, 0xe1fe, 0xe1ff,
+ 0xe200, 0xe201, 0xe202, 0xe203, 0xe204, 0xe205, 0xe206, 0xe207, /* 0xe200 */
+ 0xe208, 0xe209, 0xe20a, 0xe20b, 0xe20c, 0xe20d, 0xe20e, 0xe20f,
+ 0xe210, 0xe211, 0xe212, 0xe213, 0xe214, 0xe215, 0xe216, 0xe217,
+ 0xe218, 0xe219, 0xe21a, 0xe21b, 0xe21c, 0xe21d, 0xe21e, 0xe21f,
+ 0xe220, 0xe221, 0xe222, 0xe223, 0xe224, 0xe225, 0xe226, 0xe227,
+ 0xe228, 0xe229, 0xe22a, 0xe22b, 0xe22c, 0xe22d, 0xe22e, 0xe22f,
+ 0xe230, 0xe231, 0xe232, 0xe233, 0xe234, 0xe235, 0xe236, 0xe237,
+ 0xe238, 0xe239, 0xe23a, 0xe23b, 0xe23c, 0xe23d, 0xe23e, 0xe23f,
+ 0xe240, 0xe241, 0xe242, 0xe243, 0xe244, 0xe245, 0xe246, 0xe247, /* 0xe240 */
+ 0xe248, 0xe249, 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e, 0xe24f,
+ 0xe250, 0xe251, 0xe252, 0xe253, 0xe254, 0xe255, 0xe256, 0xe257,
+ 0xe258, 0xe259, 0xe25a, 0xe25b, 0xe25c, 0xe25d, 0xe25e, 0xe25f,
+ 0xe260, 0xe261, 0xe262, 0xe263, 0xe264, 0xe265, 0xe266, 0xe267,
+ 0xe268, 0xe269, 0xe26a, 0xe26b, 0xe26c, 0xe26d, 0xe26e, 0xe26f,
+ 0xe270, 0xe271, 0xe272, 0xe273, 0xe274, 0xe275, 0xe276, 0xe277,
+ 0xe278, 0xe279, 0xe27a, 0xe27b, 0xe27c, 0xe27d, 0xe27e, 0xe27f,
+ 0xe280, 0xe281, 0xe282, 0xe283, 0xe284, 0xe285, 0xe286, 0xe287, /* 0xe280 */
+ 0xe288, 0xe289, 0xe28a, 0xe28b, 0xe28c, 0xe28d, 0xe28e, 0xe28f,
+ 0xe290, 0xe291, 0xe292, 0xe293, 0xe294, 0xe295, 0xe296, 0xe297,
+ 0xe298, 0xe299, 0xe29a, 0xe29b, 0xe29c, 0xe29d, 0xe29e, 0xe29f,
+ 0xe2a0, 0xe2a1, 0xe2a2, 0xe2a3, 0xe2a4, 0xe2a5, 0xe2a6, 0xe2a7,
+ 0xe2a8, 0xe2a9, 0xe2aa, 0xe2ab, 0xe2ac, 0xe2ad, 0xe2ae, 0xe2af,
+ 0xe2b0, 0xe2b1, 0xe2b2, 0xe2b3, 0xe2b4, 0xe2b5, 0xe2b6, 0xe2b7,
+ 0xe2b8, 0xe2b9, 0xe2ba, 0xe2bb, 0xe2bc, 0xe2bd, 0xe2be, 0xe2bf,
+ 0xe2c0, 0xe2c1, 0xe2c2, 0xe2c3, 0xe2c4, 0xe2c5, 0xe2c6, 0xe2c7, /* 0xe2c0 */
+ 0xe2c8, 0xe2c9, 0xe2ca, 0xe2cb, 0xe2cc, 0xe2cd, 0xe2ce, 0xe2cf,
+ 0xe2d0, 0xe2d1, 0xe2d2, 0xe2d3, 0xe2d4, 0xe2d5, 0xe2d6, 0xe2d7,
+ 0xe2d8, 0xe2d9, 0xe2da, 0xe2db, 0xe2dc, 0xe2dd, 0xe2de, 0xe2df,
+ 0xe2e0, 0xe2e1, 0xe2e2, 0xe2e3, 0xe2e4, 0xe2e5, 0xe2e6, 0xe2e7,
+ 0xe2e8, 0xe2e9, 0xe2ea, 0xe2eb, 0xe2ec, 0xe2ed, 0xe2ee, 0xe2ef,
+ 0xe2f0, 0xe2f1, 0xe2f2, 0xe2f3, 0xe2f4, 0xe2f5, 0xe2f6, 0xe2f7,
+ 0xe2f8, 0xe2f9, 0xe2fa, 0xe2fb, 0xe2fc, 0xe2fd, 0xe2fe, 0xe2ff,
+ 0xe300, 0xe301, 0xe302, 0xe303, 0xe304, 0xe305, 0xe306, 0xe307, /* 0xe300 */
+ 0xe308, 0xe309, 0xe30a, 0xe30b, 0xe30c, 0xe30d, 0xe30e, 0xe30f,
+ 0xe310, 0xe311, 0xe312, 0xe313, 0xe314, 0xe315, 0xe316, 0xe317,
+ 0xe318, 0xe319, 0xe31a, 0xe31b, 0xe31c, 0xe31d, 0xe31e, 0xe31f,
+ 0xe320, 0xe321, 0xe322, 0xe323, 0xe324, 0xe325, 0xe326, 0xe327,
+ 0xe328, 0xe329, 0xe32a, 0xe32b, 0xe32c, 0xe32d, 0xe32e, 0xe32f,
+ 0xe330, 0xe331, 0xe332, 0xe333, 0xe334, 0xe335, 0xe336, 0xe337,
+ 0xe338, 0xe339, 0xe33a, 0xe33b, 0xe33c, 0xe33d, 0xe33e, 0xe33f,
+ 0xe340, 0xe341, 0xe342, 0xe343, 0xe344, 0xe345, 0xe346, 0xe347, /* 0xe340 */
+ 0xe348, 0xe349, 0xe34a, 0xe34b, 0xe34c, 0xe34d, 0xe34e, 0xe34f,
+ 0xe350, 0xe351, 0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357,
+ 0xe358, 0xe359, 0xe35a, 0xe35b, 0xe35c, 0xe35d, 0xe35e, 0xe35f,
+ 0xe360, 0xe361, 0xe362, 0xe363, 0xe364, 0xe365, 0xe366, 0xe367,
+ 0xe368, 0xe369, 0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xe36e, 0xe36f,
+ 0xe370, 0xe371, 0xe372, 0xe373, 0xe374, 0xe375, 0xe376, 0xe377,
+ 0xe378, 0xe379, 0xe37a, 0xe37b, 0xe37c, 0xe37d, 0xe37e, 0xe37f,
+ 0xe380, 0xe381, 0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, /* 0xe380 */
+ 0xe388, 0xe389, 0xe38a, 0xe38b, 0xe38c, 0xe38d, 0xe38e, 0xe38f,
+ 0xe390, 0xe391, 0xe392, 0xe393, 0xe394, 0xe395, 0xe396, 0xe397,
+ 0xe398, 0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f,
+ 0xe3a0, 0xe3a1, 0xe3a2, 0xe3a3, 0xe3a4, 0xe3a5, 0xe3a6, 0xe3a7,
+ 0xe3a8, 0xe3a9, 0xe3aa, 0xe3ab, 0xe3ac, 0xe3ad, 0xe3ae, 0xe3af,
+ 0xe3b0, 0xe3b1, 0xe3b2, 0xe3b3, 0xe3b4, 0xe3b5, 0xe3b6, 0xe3b7,
+ 0xe3b8, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd, 0xe3be, 0xe3bf,
+ 0xe3c0, 0xe3c1, 0xe3c2, 0xe3c3, 0xe3c4, 0xe3c5, 0xe3c6, 0xe3c7, /* 0xe3c0 */
+ 0xe3c8, 0xe3c9, 0xe3ca, 0xe3cb, 0xe3cc, 0xe3cd, 0xe3ce, 0xe3cf,
+ 0xe3d0, 0xe3d1, 0xe3d2, 0xe3d3, 0xe3d4, 0xe3d5, 0xe3d6, 0xe3d7,
+ 0xe3d8, 0xe3d9, 0xe3da, 0xe3db, 0xe3dc, 0xe3dd, 0xe3de, 0xe3df,
+ 0xe3e0, 0xe3e1, 0xe3e2, 0xe3e3, 0xe3e4, 0xe3e5, 0xe3e6, 0xe3e7,
+ 0xe3e8, 0xe3e9, 0xe3ea, 0xe3eb, 0xe3ec, 0xe3ed, 0xe3ee, 0xe3ef,
+ 0xe3f0, 0xe3f1, 0xe3f2, 0xe3f3, 0xe3f4, 0xe3f5, 0xe3f6, 0xe3f7,
+ 0xe3f8, 0xe3f9, 0xe3fa, 0xe3fb, 0xe3fc, 0xe3fd, 0xe3fe, 0xe3ff,
+ 0xe400, 0xe401, 0xe402, 0xe403, 0xe404, 0xe405, 0xe406, 0xe407, /* 0xe400 */
+ 0xe408, 0xe409, 0xe40a, 0xe40b, 0xe40c, 0xe40d, 0xe40e, 0xe40f,
+ 0xe410, 0xe411, 0xe412, 0xe413, 0xe414, 0xe415, 0xe416, 0xe417,
+ 0xe418, 0xe419, 0xe41a, 0xe41b, 0xe41c, 0xe41d, 0xe41e, 0xe41f,
+ 0xe420, 0xe421, 0xe422, 0xe423, 0xe424, 0xe425, 0xe426, 0xe427,
+ 0xe428, 0xe429, 0xe42a, 0xe42b, 0xe42c, 0xe42d, 0xe42e, 0xe42f,
+ 0xe430, 0xe431, 0xe432, 0xe433, 0xe434, 0xe435, 0xe436, 0xe437,
+ 0xe438, 0xe439, 0xe43a, 0xe43b, 0xe43c, 0xe43d, 0xe43e, 0xe43f,
+ 0xe440, 0xe441, 0xe442, 0xe443, 0xe444, 0xe445, 0xe446, 0xe447, /* 0xe440 */
+ 0xe448, 0xe449, 0xe44a, 0xe44b, 0xe44c, 0xe44d, 0xe44e, 0xe44f,
+ 0xe450, 0xe451, 0xe452, 0xe453, 0xe454, 0xe455, 0xe456, 0xe457,
+ 0xe458, 0xe459, 0xe45a, 0xe45b, 0xe45c, 0xe45d, 0xe45e, 0xe45f,
+ 0xe460, 0xe461, 0xe462, 0xe463, 0xe464, 0xe465, 0xe466, 0xe467,
+ 0xe468, 0xe469, 0xe46a, 0xe46b, 0xe46c, 0xe46d, 0xe46e, 0xe46f,
+ 0xe470, 0xe471, 0xe472, 0xe473, 0xe474, 0xe475, 0xe476, 0xe477,
+ 0xe478, 0xe479, 0xe47a, 0xe47b, 0xe47c, 0xe47d, 0xe47e, 0xe47f,
+ 0xe480, 0xe481, 0xe482, 0xe483, 0xe484, 0xe485, 0xe486, 0xe487, /* 0xe480 */
+ 0xe488, 0xe489, 0xe48a, 0xe48b, 0xe48c, 0xe48d, 0xe48e, 0xe48f,
+ 0xe490, 0xe491, 0xe492, 0xe493, 0xe494, 0xe495, 0xe496, 0xe497,
+ 0xe498, 0xe499, 0xe49a, 0xe49b, 0xe49c, 0xe49d, 0xe49e, 0xe49f,
+ 0xe4a0, 0xe4a1, 0xe4a2, 0xe4a3, 0xe4a4, 0xe4a5, 0xe4a6, 0xe4a7,
+ 0xe4a8, 0xe4a9, 0xe4aa, 0xe4ab, 0xe4ac, 0xe4ad, 0xe4ae, 0xe4af,
+ 0xe4b0, 0xe4b1, 0xe4b2, 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7,
+ 0xe4b8, 0xe4b9, 0xe4ba, 0xe4bb, 0xe4bc, 0xe4bd, 0xe4be, 0xe4bf,
+ 0xe4c0, 0xe4c1, 0xe4c2, 0xe4c3, 0xe4c4, 0xe4c5, 0xe4c6, 0xe4c7, /* 0xe4c0 */
+ 0xe4c8, 0xe4c9, 0xe4ca, 0xe4cb, 0xe4cc, 0xe4cd, 0xe4ce, 0xe4cf,
+ 0xe4d0, 0xe4d1, 0xe4d2, 0xe4d3, 0xe4d4, 0xe4d5, 0xe4d6, 0xe4d7,
+ 0xe4d8, 0xe4d9, 0xe4da, 0xe4db, 0xe4dc, 0xe4dd, 0xe4de, 0xe4df,
+ 0xe4e0, 0xe4e1, 0xe4e2, 0xe4e3, 0xe4e4, 0xe4e5, 0xe4e6, 0xe4e7,
+ 0xe4e8, 0xe4e9, 0xe4ea, 0xe4eb, 0xe4ec, 0xe4ed, 0xe4ee, 0xe4ef,
+ 0xe4f0, 0xe4f1, 0xe4f2, 0xe4f3, 0xe4f4, 0xe4f5, 0xe4f6, 0xe4f7,
+ 0xe4f8, 0xe4f9, 0xe4fa, 0xe4fb, 0xe4fc, 0xe4fd, 0xe4fe, 0xe4ff,
+ 0xe500, 0xe501, 0xe502, 0xe503, 0xe504, 0xe505, 0xe506, 0xe507, /* 0xe500 */
+ 0xe508, 0xe509, 0xe50a, 0xe50b, 0xe50c, 0xe50d, 0xe50e, 0xe50f,
+ 0xe510, 0xe511, 0xe512, 0xe513, 0xe514, 0xe515, 0xe516, 0xe517,
+ 0xe518, 0xe519, 0xe51a, 0xe51b, 0xe51c, 0xe51d, 0xe51e, 0xe51f,
+ 0xe520, 0xe521, 0xe522, 0xe523, 0xe524, 0xe525, 0xe526, 0xe527,
+ 0xe528, 0xe529, 0xe52a, 0xe52b, 0xe52c, 0xe52d, 0xe52e, 0xe52f,
+ 0xe530, 0xe531, 0xe532, 0xe533, 0xe534, 0xe535, 0xe536, 0xe537,
+ 0xe538, 0xe539, 0xe53a, 0xe53b, 0xe53c, 0xe53d, 0xe53e, 0xe53f,
+ 0xe540, 0xe541, 0xe542, 0xe543, 0xe544, 0xe545, 0xe546, 0xe547, /* 0xe540 */
+ 0xe548, 0xe549, 0xe54a, 0xe54b, 0xe54c, 0xe54d, 0xe54e, 0xe54f,
+ 0xe550, 0xe551, 0xe552, 0xe553, 0xe554, 0xe555, 0xe556, 0xe557,
+ 0xe558, 0xe559, 0xe55a, 0xe55b, 0xe55c, 0xe55d, 0xe55e, 0xe55f,
+ 0xe560, 0xe561, 0xe562, 0xe563, 0xe564, 0xe565, 0xe566, 0xe567,
+ 0xe568, 0xe569, 0xe56a, 0xe56b, 0xe56c, 0xe56d, 0xe56e, 0xe56f,
+ 0xe570, 0xe571, 0xe572, 0xe573, 0xe574, 0xe575, 0xe576, 0xe577,
+ 0xe578, 0xe579, 0xe57a, 0xe57b, 0xe57c, 0xe57d, 0xe57e, 0xe57f,
+ 0xe580, 0xe581, 0xe582, 0xe583, 0xe584, 0xe585, 0xe586, 0xe587, /* 0xe580 */
+ 0xe588, 0xe589, 0xe58a, 0xe58b, 0xe58c, 0xe58d, 0xe58e, 0xe58f,
+ 0xe590, 0xe591, 0xe592, 0xe593, 0xe594, 0xe595, 0xe596, 0xe597,
+ 0xe598, 0xe599, 0xe59a, 0xe59b, 0xe59c, 0xe59d, 0xe59e, 0xe59f,
+ 0xe5a0, 0xe5a1, 0xe5a2, 0xe5a3, 0xe5a4, 0xe5a5, 0xe5a6, 0xe5a7,
+ 0xe5a8, 0xe5a9, 0xe5aa, 0xe5ab, 0xe5ac, 0xe5ad, 0xe5ae, 0xe5af,
+ 0xe5b0, 0xe5b1, 0xe5b2, 0xe5b3, 0xe5b4, 0xe5b5, 0xe5b6, 0xe5b7,
+ 0xe5b8, 0xe5b9, 0xe5ba, 0xe5bb, 0xe5bc, 0xe5bd, 0xe5be, 0xe5bf,
+ 0xe5c0, 0xe5c1, 0xe5c2, 0xe5c3, 0xe5c4, 0xe5c5, 0xe5c6, 0xe5c7, /* 0xe5c0 */
+ 0xe5c8, 0xe5c9, 0xe5ca, 0xe5cb, 0xe5cc, 0xe5cd, 0xe5ce, 0xe5cf,
+ 0xe5d0, 0xe5d1, 0xe5d2, 0xe5d3, 0xe5d4, 0xe5d5, 0xe5d6, 0xe5d7,
+ 0xe5d8, 0xe5d9, 0xe5da, 0xe5db, 0xe5dc, 0xe5dd, 0xe5de, 0xe5df,
+ 0xe5e0, 0xe5e1, 0xe5e2, 0xe5e3, 0xe5e4, 0xe5e5, 0xe5e6, 0xe5e7,
+ 0xe5e8, 0xe5e9, 0xe5ea, 0xe5eb, 0xe5ec, 0xe5ed, 0xe5ee, 0xe5ef,
+ 0xe5f0, 0xe5f1, 0xe5f2, 0xe5f3, 0xe5f4, 0xe5f5, 0xe5f6, 0xe5f7,
+ 0xe5f8, 0xe5f9, 0xe5fa, 0xe5fb, 0xe5fc, 0xe5fd, 0xe5fe, 0xe5ff,
+ 0xe600, 0xe601, 0xe602, 0xe603, 0xe604, 0xe605, 0xe606, 0xe607, /* 0xe600 */
+ 0xe608, 0xe609, 0xe60a, 0xe60b, 0xe60c, 0xe60d, 0xe60e, 0xe60f,
+ 0xe610, 0xe611, 0xe612, 0xe613, 0xe614, 0xe615, 0xe616, 0xe617,
+ 0xe618, 0xe619, 0xe61a, 0xe61b, 0xe61c, 0xe61d, 0xe61e, 0xe61f,
+ 0xe620, 0xe621, 0xe622, 0xe623, 0xe624, 0xe625, 0xe626, 0xe627,
+ 0xe628, 0xe629, 0xe62a, 0xe62b, 0xe62c, 0xe62d, 0xe62e, 0xe62f,
+ 0xe630, 0xe631, 0xe632, 0xe633, 0xe634, 0xe635, 0xe636, 0xe637,
+ 0xe638, 0xe639, 0xe63a, 0xe63b, 0xe63c, 0xe63d, 0xe63e, 0xe63f,
+ 0xe640, 0xe641, 0xe642, 0xe643, 0xe644, 0xe645, 0xe646, 0xe647, /* 0xe640 */
+ 0xe648, 0xe649, 0xe64a, 0xe64b, 0xe64c, 0xe64d, 0xe64e, 0xe64f,
+ 0xe650, 0xe651, 0xe652, 0xe653, 0xe654, 0xe655, 0xe656, 0xe657,
+ 0xe658, 0xe659, 0xe65a, 0xe65b, 0xe65c, 0xe65d, 0xe65e, 0xe65f,
+ 0xe660, 0xe661, 0xe662, 0xe663, 0xe664, 0xe665, 0xe666, 0xe667,
+ 0xe668, 0xe669, 0xe66a, 0xe66b, 0xe66c, 0xe66d, 0xe66e, 0xe66f,
+ 0xe670, 0xe671, 0xe672, 0xe673, 0xe674, 0xe675, 0xe676, 0xe677,
+ 0xe678, 0xe679, 0xe67a, 0xe67b, 0xe67c, 0xe67d, 0xe67e, 0xe67f,
+ 0xe680, 0xe681, 0xe682, 0xe683, 0xe684, 0xe685, 0xe686, 0xe687, /* 0xe680 */
+ 0xe688, 0xe689, 0xe68a, 0xe68b, 0xe68c, 0xe68d, 0xe68e, 0xe68f,
+ 0xe690, 0xe691, 0xe692, 0xe693, 0xe694, 0xe695, 0xe696, 0xe697,
+ 0xe698, 0xe699, 0xe69a, 0xe69b, 0xe69c, 0xe69d, 0xe69e, 0xe69f,
+ 0xe6a0, 0xe6a1, 0xe6a2, 0xe6a3, 0xe6a4, 0xe6a5, 0xe6a6, 0xe6a7,
+ 0xe6a8, 0xe6a9, 0xe6aa, 0xe6ab, 0xe6ac, 0xe6ad, 0xe6ae, 0xe6af,
+ 0xe6b0, 0xe6b1, 0xe6b2, 0xe6b3, 0xe6b4, 0xe6b5, 0xe6b6, 0xe6b7,
+ 0xe6b8, 0xe6b9, 0xe6ba, 0xe6bb, 0xe6bc, 0xe6bd, 0xe6be, 0xe6bf,
+ 0xe6c0, 0xe6c1, 0xe6c2, 0xe6c3, 0xe6c4, 0xe6c5, 0xe6c6, 0xe6c7, /* 0xe6c0 */
+ 0xe6c8, 0xe6c9, 0xe6ca, 0xe6cb, 0xe6cc, 0xe6cd, 0xe6ce, 0xe6cf,
+ 0xe6d0, 0xe6d1, 0xe6d2, 0xe6d3, 0xe6d4, 0xe6d5, 0xe6d6, 0xe6d7,
+ 0xe6d8, 0xe6d9, 0xe6da, 0xe6db, 0xe6dc, 0xe6dd, 0xe6de, 0xe6df,
+ 0xe6e0, 0xe6e1, 0xe6e2, 0xe6e3, 0xe6e4, 0xe6e5, 0xe6e6, 0xe6e7,
+ 0xe6e8, 0xe6e9, 0xe6ea, 0xe6eb, 0xe6ec, 0xe6ed, 0xe6ee, 0xe6ef,
+ 0xe6f0, 0xe6f1, 0xe6f2, 0xe6f3, 0xe6f4, 0xe6f5, 0xe6f6, 0xe6f7,
+ 0xe6f8, 0xe6f9, 0xe6fa, 0xe6fb, 0xe6fc, 0xe6fd, 0xe6fe, 0xe6ff,
+ 0xe700, 0xe701, 0xe702, 0xe703, 0xe704, 0xe705, 0xe706, 0xe707, /* 0xe700 */
+ 0xe708, 0xe709, 0xe70a, 0xe70b, 0xe70c, 0xe70d, 0xe70e, 0xe70f,
+ 0xe710, 0xe711, 0xe712, 0xe713, 0xe714, 0xe715, 0xe716, 0xe717,
+ 0xe718, 0xe719, 0xe71a, 0xe71b, 0xe71c, 0xe71d, 0xe71e, 0xe71f,
+ 0xe720, 0xe721, 0xe722, 0xe723, 0xe724, 0xe725, 0xe726, 0xe727,
+ 0xe728, 0xe729, 0xe72a, 0xe72b, 0xe72c, 0xe72d, 0xe72e, 0xe72f,
+ 0xe730, 0xe731, 0xe732, 0xe733, 0xe734, 0xe735, 0xe736, 0xe737,
+ 0xe738, 0xe739, 0xe73a, 0xe73b, 0xe73c, 0xe73d, 0xe73e, 0xe73f,
+ 0xe740, 0xe741, 0xe742, 0xe743, 0xe744, 0xe745, 0xe746, 0xe747, /* 0xe740 */
+ 0xe748, 0xe749, 0xe74a, 0xe74b, 0xe74c, 0xe74d, 0xe74e, 0xe74f,
+ 0xe750, 0xe751, 0xe752, 0xe753, 0xe754, 0xe755, 0xe756, 0xe757,
+ 0xe758, 0xe759, 0xe75a, 0xe75b, 0xe75c, 0xe75d, 0xe75e, 0xe75f,
+ 0xe760, 0xe761, 0xe762, 0xe763, 0xe764, 0xe765, 0xe766, 0xe767,
+ 0xe768, 0xe769, 0xe76a, 0xe76b, 0xe76c, 0xe76d, 0xe76e, 0xe76f,
+ 0xe770, 0xe771, 0xe772, 0xe773, 0xe774, 0xe775, 0xe776, 0xe777,
+ 0xe778, 0xe779, 0xe77a, 0xe77b, 0xe77c, 0xe77d, 0xe77e, 0xe77f,
+ 0xe780, 0xe781, 0xe782, 0xe783, 0xe784, 0xe785, 0xe786, 0xe787, /* 0xe780 */
+ 0xe788, 0xe789, 0xe78a, 0xe78b, 0xe78c, 0xe78d, 0xe78e, 0xe78f,
+ 0xe790, 0xe791, 0xe792, 0xe793, 0xe794, 0xe795, 0xe796, 0xe797,
+ 0xe798, 0xe799, 0xe79a, 0xe79b, 0xe79c, 0xe79d, 0xe79e, 0xe79f,
+ 0xe7a0, 0xe7a1, 0xe7a2, 0xe7a3, 0xe7a4, 0xe7a5, 0xe7a6, 0xe7a7,
+ 0xe7a8, 0xe7a9, 0xe7aa, 0xe7ab, 0xe7ac, 0xe7ad, 0xe7ae, 0xe7af,
+ 0xe7b0, 0xe7b1, 0xe7b2, 0xe7b3, 0xe7b4, 0xe7b5, 0xe7b6, 0xe7b7,
+ 0xe7b8, 0xe7b9, 0xe7ba, 0xe7bb, 0xe7bc, 0xe7bd, 0xe7be, 0xe7bf,
+ 0xe7c0, 0xe7c1, 0xe7c2, 0xe7c3, 0xe7c4, 0xe7c5, 0xe7c6, 0xe7c7, /* 0xe7c0 */
+ 0xe7c8, 0xe7c9, 0xe7ca, 0xe7cb, 0xe7cc, 0xe7cd, 0xe7ce, 0xe7cf,
+ 0xe7d0, 0xe7d1, 0xe7d2, 0xe7d3, 0xe7d4, 0xe7d5, 0xe7d6, 0xe7d7,
+ 0xe7d8, 0xe7d9, 0xe7da, 0xe7db, 0xe7dc, 0xe7dd, 0xe7de, 0xe7df,
+ 0xe7e0, 0xe7e1, 0xe7e2, 0xe7e3, 0xe7e4, 0xe7e5, 0xe7e6, 0xe7e7,
+ 0xe7e8, 0xe7e9, 0xe7ea, 0xe7eb, 0xe7ec, 0xe7ed, 0xe7ee, 0xe7ef,
+ 0xe7f0, 0xe7f1, 0xe7f2, 0xe7f3, 0xe7f4, 0xe7f5, 0xe7f6, 0xe7f7,
+ 0xe7f8, 0xe7f9, 0xe7fa, 0xe7fb, 0xe7fc, 0xe7fd, 0xe7fe, 0xe7ff,
+ 0xe800, 0xe801, 0xe802, 0xe803, 0xe804, 0xe805, 0xe806, 0xe807, /* 0xe800 */
+ 0xe808, 0xe809, 0xe80a, 0xe80b, 0xe80c, 0xe80d, 0xe80e, 0xe80f,
+ 0xe810, 0xe811, 0xe812, 0xe813, 0xe814, 0xe815, 0xe816, 0xe817,
+ 0xe818, 0xe819, 0xe81a, 0xe81b, 0xe81c, 0xe81d, 0xe81e, 0xe81f,
+ 0xe820, 0xe821, 0xe822, 0xe823, 0xe824, 0xe825, 0xe826, 0xe827,
+ 0xe828, 0xe829, 0xe82a, 0xe82b, 0xe82c, 0xe82d, 0xe82e, 0xe82f,
+ 0xe830, 0xe831, 0xe832, 0xe833, 0xe834, 0xe835, 0xe836, 0xe837,
+ 0xe838, 0xe839, 0xe83a, 0xe83b, 0xe83c, 0xe83d, 0xe83e, 0xe83f,
+ 0xe840, 0xe841, 0xe842, 0xe843, 0xe844, 0xe845, 0xe846, 0xe847, /* 0xe840 */
+ 0xe848, 0xe849, 0xe84a, 0xe84b, 0xe84c, 0xe84d, 0xe84e, 0xe84f,
+ 0xe850, 0xe851, 0xe852, 0xe853, 0xe854, 0xe855, 0xe856, 0xe857,
+ 0xe858, 0xe859, 0xe85a, 0xe85b, 0xe85c, 0xe85d, 0xe85e, 0xe85f,
+ 0xe860, 0xe861, 0xe862, 0xe863, 0xe864, 0xe865, 0xe866, 0xe867,
+ 0xe868, 0xe869, 0xe86a, 0xe86b, 0xe86c, 0xe86d, 0xe86e, 0xe86f,
+ 0xe870, 0xe871, 0xe872, 0xe873, 0xe874, 0xe875, 0xe876, 0xe877,
+ 0xe878, 0xe879, 0xe87a, 0xe87b, 0xe87c, 0xe87d, 0xe87e, 0xe87f,
+ 0xe880, 0xe881, 0xe882, 0xe883, 0xe884, 0xe885, 0xe886, 0xe887, /* 0xe880 */
+ 0xe888, 0xe889, 0xe88a, 0xe88b, 0xe88c, 0xe88d, 0xe88e, 0xe88f,
+ 0xe890, 0xe891, 0xe892, 0xe893, 0xe894, 0xe895, 0xe896, 0xe897,
+ 0xe898, 0xe899, 0xe89a, 0xe89b, 0xe89c, 0xe89d, 0xe89e, 0xe89f,
+ 0xe8a0, 0xe8a1, 0xe8a2, 0xe8a3, 0xe8a4, 0xe8a5, 0xe8a6, 0xe8a7,
+ 0xe8a8, 0xe8a9, 0xe8aa, 0xe8ab, 0xe8ac, 0xe8ad, 0xe8ae, 0xe8af,
+ 0xe8b0, 0xe8b1, 0xe8b2, 0xe8b3, 0xe8b4, 0xe8b5, 0xe8b6, 0xe8b7,
+ 0xe8b8, 0xe8b9, 0xe8ba, 0xe8bb, 0xe8bc, 0xe8bd, 0xe8be, 0xe8bf,
+ 0xe8c0, 0xe8c1, 0xe8c2, 0xe8c3, 0xe8c4, 0xe8c5, 0xe8c6, 0xe8c7, /* 0xe8c0 */
+ 0xe8c8, 0xe8c9, 0xe8ca, 0xe8cb, 0xe8cc, 0xe8cd, 0xe8ce, 0xe8cf,
+ 0xe8d0, 0xe8d1, 0xe8d2, 0xe8d3, 0xe8d4, 0xe8d5, 0xe8d6, 0xe8d7,
+ 0xe8d8, 0xe8d9, 0xe8da, 0xe8db, 0xe8dc, 0xe8dd, 0xe8de, 0xe8df,
+ 0xe8e0, 0xe8e1, 0xe8e2, 0xe8e3, 0xe8e4, 0xe8e5, 0xe8e6, 0xe8e7,
+ 0xe8e8, 0xe8e9, 0xe8ea, 0xe8eb, 0xe8ec, 0xe8ed, 0xe8ee, 0xe8ef,
+ 0xe8f0, 0xe8f1, 0xe8f2, 0xe8f3, 0xe8f4, 0xe8f5, 0xe8f6, 0xe8f7,
+ 0xe8f8, 0xe8f9, 0xe8fa, 0xe8fb, 0xe8fc, 0xe8fd, 0xe8fe, 0xe8ff,
+ 0xe900, 0xe901, 0xe902, 0xe903, 0xe904, 0xe905, 0xe906, 0xe907, /* 0xe900 */
+ 0xe908, 0xe909, 0xe90a, 0xe90b, 0xe90c, 0xe90d, 0xe90e, 0xe90f,
+ 0xe910, 0xe911, 0xe912, 0xe913, 0xe914, 0xe915, 0xe916, 0xe917,
+ 0xe918, 0xe919, 0xe91a, 0xe91b, 0xe91c, 0xe91d, 0xe91e, 0xe91f,
+ 0xe920, 0xe921, 0xe922, 0xe923, 0xe924, 0xe925, 0xe926, 0xe927,
+ 0xe928, 0xe929, 0xe92a, 0xe92b, 0xe92c, 0xe92d, 0xe92e, 0xe92f,
+ 0xe930, 0xe931, 0xe932, 0xe933, 0xe934, 0xe935, 0xe936, 0xe937,
+ 0xe938, 0xe939, 0xe93a, 0xe93b, 0xe93c, 0xe93d, 0xe93e, 0xe93f,
+ 0xe940, 0xe941, 0xe942, 0xe943, 0xe944, 0xe945, 0xe946, 0xe947, /* 0xe940 */
+ 0xe948, 0xe949, 0xe94a, 0xe94b, 0xe94c, 0xe94d, 0xe94e, 0xe94f,
+ 0xe950, 0xe951, 0xe952, 0xe953, 0xe954, 0xe955, 0xe956, 0xe957,
+ 0xe958, 0xe959, 0xe95a, 0xe95b, 0xe95c, 0xe95d, 0xe95e, 0xe95f,
+ 0xe960, 0xe961, 0xe962, 0xe963, 0xe964, 0xe965, 0xe966, 0xe967,
+ 0xe968, 0xe969, 0xe96a, 0xe96b, 0xe96c, 0xe96d, 0xe96e, 0xe96f,
+ 0xe970, 0xe971, 0xe972, 0xe973, 0xe974, 0xe975, 0xe976, 0xe977,
+ 0xe978, 0xe979, 0xe97a, 0xe97b, 0xe97c, 0xe97d, 0xe97e, 0xe97f,
+ 0xe980, 0xe981, 0xe982, 0xe983, 0xe984, 0xe985, 0xe986, 0xe987, /* 0xe980 */
+ 0xe988, 0xe989, 0xe98a, 0xe98b, 0xe98c, 0xe98d, 0xe98e, 0xe98f,
+ 0xe990, 0xe991, 0xe992, 0xe993, 0xe994, 0xe995, 0xe996, 0xe997,
+ 0xe998, 0xe999, 0xe99a, 0xe99b, 0xe99c, 0xe99d, 0xe99e, 0xe99f,
+ 0xe9a0, 0xe9a1, 0xe9a2, 0xe9a3, 0xe9a4, 0xe9a5, 0xe9a6, 0xe9a7,
+ 0xe9a8, 0xe9a9, 0xe9aa, 0xe9ab, 0xe9ac, 0xe9ad, 0xe9ae, 0xe9af,
+ 0xe9b0, 0xe9b1, 0xe9b2, 0xe9b3, 0xe9b4, 0xe9b5, 0xe9b6, 0xe9b7,
+ 0xe9b8, 0xe9b9, 0xe9ba, 0xe9bb, 0xe9bc, 0xe9bd, 0xe9be, 0xe9bf,
+ 0xe9c0, 0xe9c1, 0xe9c2, 0xe9c3, 0xe9c4, 0xe9c5, 0xe9c6, 0xe9c7, /* 0xe9c0 */
+ 0xe9c8, 0xe9c9, 0xe9ca, 0xe9cb, 0xe9cc, 0xe9cd, 0xe9ce, 0xe9cf,
+ 0xe9d0, 0xe9d1, 0xe9d2, 0xe9d3, 0xe9d4, 0xe9d5, 0xe9d6, 0xe9d7,
+ 0xe9d8, 0xe9d9, 0xe9da, 0xe9db, 0xe9dc, 0xe9dd, 0xe9de, 0xe9df,
+ 0xe9e0, 0xe9e1, 0xe9e2, 0xe9e3, 0xe9e4, 0xe9e5, 0xe9e6, 0xe9e7,
+ 0xe9e8, 0xe9e9, 0xe9ea, 0xe9eb, 0xe9ec, 0xe9ed, 0xe9ee, 0xe9ef,
+ 0xe9f0, 0xe9f1, 0xe9f2, 0xe9f3, 0xe9f4, 0xe9f5, 0xe9f6, 0xe9f7,
+ 0xe9f8, 0xe9f9, 0xe9fa, 0xe9fb, 0xe9fc, 0xe9fd, 0xe9fe, 0xe9ff,
+ 0xea00, 0xea01, 0xea02, 0xea03, 0xea04, 0xea05, 0xea06, 0xea07, /* 0xea00 */
+ 0xea08, 0xea09, 0xea0a, 0xea0b, 0xea0c, 0xea0d, 0xea0e, 0xea0f,
+ 0xea10, 0xea11, 0xea12, 0xea13, 0xea14, 0xea15, 0xea16, 0xea17,
+ 0xea18, 0xea19, 0xea1a, 0xea1b, 0xea1c, 0xea1d, 0xea1e, 0xea1f,
+ 0xea20, 0xea21, 0xea22, 0xea23, 0xea24, 0xea25, 0xea26, 0xea27,
+ 0xea28, 0xea29, 0xea2a, 0xea2b, 0xea2c, 0xea2d, 0xea2e, 0xea2f,
+ 0xea30, 0xea31, 0xea32, 0xea33, 0xea34, 0xea35, 0xea36, 0xea37,
+ 0xea38, 0xea39, 0xea3a, 0xea3b, 0xea3c, 0xea3d, 0xea3e, 0xea3f,
+ 0xea40, 0xea41, 0xea42, 0xea43, 0xea44, 0xea45, 0xea46, 0xea47, /* 0xea40 */
+ 0xea48, 0xea49, 0xea4a, 0xea4b, 0xea4c, 0xea4d, 0xea4e, 0xea4f,
+ 0xea50, 0xea51, 0xea52, 0xea53, 0xea54, 0xea55, 0xea56, 0xea57,
+ 0xea58, 0xea59, 0xea5a, 0xea5b, 0xea5c, 0xea5d, 0xea5e, 0xea5f,
+ 0xea60, 0xea61, 0xea62, 0xea63, 0xea64, 0xea65, 0xea66, 0xea67,
+ 0xea68, 0xea69, 0xea6a, 0xea6b, 0xea6c, 0xea6d, 0xea6e, 0xea6f,
+ 0xea70, 0xea71, 0xea72, 0xea73, 0xea74, 0xea75, 0xea76, 0xea77,
+ 0xea78, 0xea79, 0xea7a, 0xea7b, 0xea7c, 0xea7d, 0xea7e, 0xea7f,
+ 0xea80, 0xea81, 0xea82, 0xea83, 0xea84, 0xea85, 0xea86, 0xea87, /* 0xea80 */
+ 0xea88, 0xea89, 0xea8a, 0xea8b, 0xea8c, 0xea8d, 0xea8e, 0xea8f,
+ 0xea90, 0xea91, 0xea92, 0xea93, 0xea94, 0xea95, 0xea96, 0xea97,
+ 0xea98, 0xea99, 0xea9a, 0xea9b, 0xea9c, 0xea9d, 0xea9e, 0xea9f,
+ 0xeaa0, 0xeaa1, 0xeaa2, 0xeaa3, 0xeaa4, 0xeaa5, 0xeaa6, 0xeaa7,
+ 0xeaa8, 0xeaa9, 0xeaaa, 0xeaab, 0xeaac, 0xeaad, 0xeaae, 0xeaaf,
+ 0xeab0, 0xeab1, 0xeab2, 0xeab3, 0xeab4, 0xeab5, 0xeab6, 0xeab7,
+ 0xeab8, 0xeab9, 0xeaba, 0xeabb, 0xeabc, 0xeabd, 0xeabe, 0xeabf,
+ 0xeac0, 0xeac1, 0xeac2, 0xeac3, 0xeac4, 0xeac5, 0xeac6, 0xeac7, /* 0xeac0 */
+ 0xeac8, 0xeac9, 0xeaca, 0xeacb, 0xeacc, 0xeacd, 0xeace, 0xeacf,
+ 0xead0, 0xead1, 0xead2, 0xead3, 0xead4, 0xead5, 0xead6, 0xead7,
+ 0xead8, 0xead9, 0xeada, 0xeadb, 0xeadc, 0xeadd, 0xeade, 0xeadf,
+ 0xeae0, 0xeae1, 0xeae2, 0xeae3, 0xeae4, 0xeae5, 0xeae6, 0xeae7,
+ 0xeae8, 0xeae9, 0xeaea, 0xeaeb, 0xeaec, 0xeaed, 0xeaee, 0xeaef,
+ 0xeaf0, 0xeaf1, 0xeaf2, 0xeaf3, 0xeaf4, 0xeaf5, 0xeaf6, 0xeaf7,
+ 0xeaf8, 0xeaf9, 0xeafa, 0xeafb, 0xeafc, 0xeafd, 0xeafe, 0xeaff,
+ 0xeb00, 0xeb01, 0xeb02, 0xeb03, 0xeb04, 0xeb05, 0xeb06, 0xeb07, /* 0xeb00 */
+ 0xeb08, 0xeb09, 0xeb0a, 0xeb0b, 0xeb0c, 0xeb0d, 0xeb0e, 0xeb0f,
+ 0xeb10, 0xeb11, 0xeb12, 0xeb13, 0xeb14, 0xeb15, 0xeb16, 0xeb17,
+ 0xeb18, 0xeb19, 0xeb1a, 0xeb1b, 0xeb1c, 0xeb1d, 0xeb1e, 0xeb1f,
+ 0xeb20, 0xeb21, 0xeb22, 0xeb23, 0xeb24, 0xeb25, 0xeb26, 0xeb27,
+ 0xeb28, 0xeb29, 0xeb2a, 0xeb2b, 0xeb2c, 0xeb2d, 0xeb2e, 0xeb2f,
+ 0xeb30, 0xeb31, 0xeb32, 0xeb33, 0xeb34, 0xeb35, 0xeb36, 0xeb37,
+ 0xeb38, 0xeb39, 0xeb3a, 0xeb3b, 0xeb3c, 0xeb3d, 0xeb3e, 0xeb3f,
+ 0xeb40, 0xeb41, 0xeb42, 0xeb43, 0xeb44, 0xeb45, 0xeb46, 0xeb47, /* 0xeb40 */
+ 0xeb48, 0xeb49, 0xeb4a, 0xeb4b, 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f,
+ 0xeb50, 0xeb51, 0xeb52, 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57,
+ 0xeb58, 0xeb59, 0xeb5a, 0xeb5b, 0xeb5c, 0xeb5d, 0xeb5e, 0xeb5f,
+ 0xeb60, 0xeb61, 0xeb62, 0xeb63, 0xeb64, 0xeb65, 0xeb66, 0xeb67,
+ 0xeb68, 0xeb69, 0xeb6a, 0xeb6b, 0xeb6c, 0xeb6d, 0xeb6e, 0xeb6f,
+ 0xeb70, 0xeb71, 0xeb72, 0xeb73, 0xeb74, 0xeb75, 0xeb76, 0xeb77,
+ 0xeb78, 0xeb79, 0xeb7a, 0xeb7b, 0xeb7c, 0xeb7d, 0xeb7e, 0xeb7f,
+ 0xeb80, 0xeb81, 0xeb82, 0xeb83, 0xeb84, 0xeb85, 0xeb86, 0xeb87, /* 0xeb80 */
+ 0xeb88, 0xeb89, 0xeb8a, 0xeb8b, 0xeb8c, 0xeb8d, 0xeb8e, 0xeb8f,
+ 0xeb90, 0xeb91, 0xeb92, 0xeb93, 0xeb94, 0xeb95, 0xeb96, 0xeb97,
+ 0xeb98, 0xeb99, 0xeb9a, 0xeb9b, 0xeb9c, 0xeb9d, 0xeb9e, 0xeb9f,
+ 0xeba0, 0xeba1, 0xeba2, 0xeba3, 0xeba4, 0xeba5, 0xeba6, 0xeba7,
+ 0xeba8, 0xeba9, 0xebaa, 0xebab, 0xebac, 0xebad, 0xebae, 0xebaf,
+ 0xebb0, 0xebb1, 0xebb2, 0xebb3, 0xebb4, 0xebb5, 0xebb6, 0xebb7,
+ 0xebb8, 0xebb9, 0xebba, 0xebbb, 0xebbc, 0xebbd, 0xebbe, 0xebbf,
+ 0xebc0, 0xebc1, 0xebc2, 0xebc3, 0xebc4, 0xebc5, 0xebc6, 0xebc7, /* 0xebc0 */
+ 0xebc8, 0xebc9, 0xebca, 0xebcb, 0xebcc, 0xebcd, 0xebce, 0xebcf,
+ 0xebd0, 0xebd1, 0xebd2, 0xebd3, 0xebd4, 0xebd5, 0xebd6, 0xebd7,
+ 0xebd8, 0xebd9, 0xebda, 0xebdb, 0xebdc, 0xebdd, 0xebde, 0xebdf,
+ 0xebe0, 0xebe1, 0xebe2, 0xebe3, 0xebe4, 0xebe5, 0xebe6, 0xebe7,
+ 0xebe8, 0xebe9, 0xebea, 0xebeb, 0xebec, 0xebed, 0xebee, 0xebef,
+ 0xebf0, 0xebf1, 0xebf2, 0xebf3, 0xebf4, 0xebf5, 0xebf6, 0xebf7,
+ 0xebf8, 0xebf9, 0xebfa, 0xebfb, 0xebfc, 0xebfd, 0xebfe, 0xebff,
+ 0xec00, 0xec01, 0xec02, 0xec03, 0xec04, 0xec05, 0xec06, 0xec07, /* 0xec00 */
+ 0xec08, 0xec09, 0xec0a, 0xec0b, 0xec0c, 0xec0d, 0xec0e, 0xec0f,
+ 0xec10, 0xec11, 0xec12, 0xec13, 0xec14, 0xec15, 0xec16, 0xec17,
+ 0xec18, 0xec19, 0xec1a, 0xec1b, 0xec1c, 0xec1d, 0xec1e, 0xec1f,
+ 0xec20, 0xec21, 0xec22, 0xec23, 0xec24, 0xec25, 0xec26, 0xec27,
+ 0xec28, 0xec29, 0xec2a, 0xec2b, 0xec2c, 0xec2d, 0xec2e, 0xec2f,
+ 0xec30, 0xec31, 0xec32, 0xec33, 0xec34, 0xec35, 0xec36, 0xec37,
+ 0xec38, 0xec39, 0xec3a, 0xec3b, 0xec3c, 0xec3d, 0xec3e, 0xec3f,
+ 0xec40, 0xec41, 0xec42, 0xec43, 0xec44, 0xec45, 0xec46, 0xec47, /* 0xec40 */
+ 0xec48, 0xec49, 0xec4a, 0xec4b, 0xec4c, 0xec4d, 0xec4e, 0xec4f,
+ 0xec50, 0xec51, 0xec52, 0xec53, 0xec54, 0xec55, 0xec56, 0xec57,
+ 0xec58, 0xec59, 0xec5a, 0xec5b, 0xec5c, 0xec5d, 0xec5e, 0xec5f,
+ 0xec60, 0xec61, 0xec62, 0xec63, 0xec64, 0xec65, 0xec66, 0xec67,
+ 0xec68, 0xec69, 0xec6a, 0xec6b, 0xec6c, 0xec6d, 0xec6e, 0xec6f,
+ 0xec70, 0xec71, 0xec72, 0xec73, 0xec74, 0xec75, 0xec76, 0xec77,
+ 0xec78, 0xec79, 0xec7a, 0xec7b, 0xec7c, 0xec7d, 0xec7e, 0xec7f,
+ 0xec80, 0xec81, 0xec82, 0xec83, 0xec84, 0xec85, 0xec86, 0xec87, /* 0xec80 */
+ 0xec88, 0xec89, 0xec8a, 0xec8b, 0xec8c, 0xec8d, 0xec8e, 0xec8f,
+ 0xec90, 0xec91, 0xec92, 0xec93, 0xec94, 0xec95, 0xec96, 0xec97,
+ 0xec98, 0xec99, 0xec9a, 0xec9b, 0xec9c, 0xec9d, 0xec9e, 0xec9f,
+ 0xeca0, 0xeca1, 0xeca2, 0xeca3, 0xeca4, 0xeca5, 0xeca6, 0xeca7,
+ 0xeca8, 0xeca9, 0xecaa, 0xecab, 0xecac, 0xecad, 0xecae, 0xecaf,
+ 0xecb0, 0xecb1, 0xecb2, 0xecb3, 0xecb4, 0xecb5, 0xecb6, 0xecb7,
+ 0xecb8, 0xecb9, 0xecba, 0xecbb, 0xecbc, 0xecbd, 0xecbe, 0xecbf,
+ 0xecc0, 0xecc1, 0xecc2, 0xecc3, 0xecc4, 0xecc5, 0xecc6, 0xecc7, /* 0xecc0 */
+ 0xecc8, 0xecc9, 0xecca, 0xeccb, 0xeccc, 0xeccd, 0xecce, 0xeccf,
+ 0xecd0, 0xecd1, 0xecd2, 0xecd3, 0xecd4, 0xecd5, 0xecd6, 0xecd7,
+ 0xecd8, 0xecd9, 0xecda, 0xecdb, 0xecdc, 0xecdd, 0xecde, 0xecdf,
+ 0xece0, 0xece1, 0xece2, 0xece3, 0xece4, 0xece5, 0xece6, 0xece7,
+ 0xece8, 0xece9, 0xecea, 0xeceb, 0xecec, 0xeced, 0xecee, 0xecef,
+ 0xecf0, 0xecf1, 0xecf2, 0xecf3, 0xecf4, 0xecf5, 0xecf6, 0xecf7,
+ 0xecf8, 0xecf9, 0xecfa, 0xecfb, 0xecfc, 0xecfd, 0xecfe, 0xecff,
+ 0xed00, 0xed01, 0xed02, 0xed03, 0xed04, 0xed05, 0xed06, 0xed07, /* 0xed00 */
+ 0xed08, 0xed09, 0xed0a, 0xed0b, 0xed0c, 0xed0d, 0xed0e, 0xed0f,
+ 0xed10, 0xed11, 0xed12, 0xed13, 0xed14, 0xed15, 0xed16, 0xed17,
+ 0xed18, 0xed19, 0xed1a, 0xed1b, 0xed1c, 0xed1d, 0xed1e, 0xed1f,
+ 0xed20, 0xed21, 0xed22, 0xed23, 0xed24, 0xed25, 0xed26, 0xed27,
+ 0xed28, 0xed29, 0xed2a, 0xed2b, 0xed2c, 0xed2d, 0xed2e, 0xed2f,
+ 0xed30, 0xed31, 0xed32, 0xed33, 0xed34, 0xed35, 0xed36, 0xed37,
+ 0xed38, 0xed39, 0xed3a, 0xed3b, 0xed3c, 0xed3d, 0xed3e, 0xed3f,
+ 0xed40, 0xed41, 0xed42, 0xed43, 0xed44, 0xed45, 0xed46, 0xed47, /* 0xed40 */
+ 0xed48, 0xed49, 0xed4a, 0xed4b, 0xed4c, 0xed4d, 0xed4e, 0xed4f,
+ 0xed50, 0xed51, 0xed52, 0xed53, 0xed54, 0xed55, 0xed56, 0xed57,
+ 0xed58, 0xed59, 0xed5a, 0xed5b, 0xed5c, 0xed5d, 0xed5e, 0xed5f,
+ 0xed60, 0xed61, 0xed62, 0xed63, 0xed64, 0xed65, 0xed66, 0xed67,
+ 0xed68, 0xed69, 0xed6a, 0xed6b, 0xed6c, 0xed6d, 0xed6e, 0xed6f,
+ 0xed70, 0xed71, 0xed72, 0xed73, 0xed74, 0xed75, 0xed76, 0xed77,
+ 0xed78, 0xed79, 0xed7a, 0xed7b, 0xed7c, 0xed7d, 0xed7e, 0xed7f,
+ 0xed80, 0xed81, 0xed82, 0xed83, 0xed84, 0xed85, 0xed86, 0xed87, /* 0xed80 */
+ 0xed88, 0xed89, 0xed8a, 0xed8b, 0xed8c, 0xed8d, 0xed8e, 0xed8f,
+ 0xed90, 0xed91, 0xed92, 0xed93, 0xed94, 0xed95, 0xed96, 0xed97,
+ 0xed98, 0xed99, 0xed9a, 0xed9b, 0xed9c, 0xed9d, 0xed9e, 0xed9f,
+ 0xeda0, 0xeda1, 0xeda2, 0xeda3, 0xeda4, 0xeda5, 0xeda6, 0xeda7,
+ 0xeda8, 0xeda9, 0xedaa, 0xedab, 0xedac, 0xedad, 0xedae, 0xedaf,
+ 0xedb0, 0xedb1, 0xedb2, 0xedb3, 0xedb4, 0xedb5, 0xedb6, 0xedb7,
+ 0xedb8, 0xedb9, 0xedba, 0xedbb, 0xedbc, 0xedbd, 0xedbe, 0xedbf,
+ 0xedc0, 0xedc1, 0xedc2, 0xedc3, 0xedc4, 0xedc5, 0xedc6, 0xedc7, /* 0xedc0 */
+ 0xedc8, 0xedc9, 0xedca, 0xedcb, 0xedcc, 0xedcd, 0xedce, 0xedcf,
+ 0xedd0, 0xedd1, 0xedd2, 0xedd3, 0xedd4, 0xedd5, 0xedd6, 0xedd7,
+ 0xedd8, 0xedd9, 0xedda, 0xeddb, 0xeddc, 0xeddd, 0xedde, 0xeddf,
+ 0xede0, 0xede1, 0xede2, 0xede3, 0xede4, 0xede5, 0xede6, 0xede7,
+ 0xede8, 0xede9, 0xedea, 0xedeb, 0xedec, 0xeded, 0xedee, 0xedef,
+ 0xedf0, 0xedf1, 0xedf2, 0xedf3, 0xedf4, 0xedf5, 0xedf6, 0xedf7,
+ 0xedf8, 0xedf9, 0xedfa, 0xedfb, 0xedfc, 0xedfd, 0xedfe, 0xedff,
+ 0xee00, 0xee01, 0xee02, 0xee03, 0xee04, 0xee05, 0xee06, 0xee07, /* 0xee00 */
+ 0xee08, 0xee09, 0xee0a, 0xee0b, 0xee0c, 0xee0d, 0xee0e, 0xee0f,
+ 0xee10, 0xee11, 0xee12, 0xee13, 0xee14, 0xee15, 0xee16, 0xee17,
+ 0xee18, 0xee19, 0xee1a, 0xee1b, 0xee1c, 0xee1d, 0xee1e, 0xee1f,
+ 0xee20, 0xee21, 0xee22, 0xee23, 0xee24, 0xee25, 0xee26, 0xee27,
+ 0xee28, 0xee29, 0xee2a, 0xee2b, 0xee2c, 0xee2d, 0xee2e, 0xee2f,
+ 0xee30, 0xee31, 0xee32, 0xee33, 0xee34, 0xee35, 0xee36, 0xee37,
+ 0xee38, 0xee39, 0xee3a, 0xee3b, 0xee3c, 0xee3d, 0xee3e, 0xee3f,
+ 0xee40, 0xee41, 0xee42, 0xee43, 0xee44, 0xee45, 0xee46, 0xee47, /* 0xee40 */
+ 0xee48, 0xee49, 0xee4a, 0xee4b, 0xee4c, 0xee4d, 0xee4e, 0xee4f,
+ 0xee50, 0xee51, 0xee52, 0xee53, 0xee54, 0xee55, 0xee56, 0xee57,
+ 0xee58, 0xee59, 0xee5a, 0xee5b, 0xee5c, 0xee5d, 0xee5e, 0xee5f,
+ 0xee60, 0xee61, 0xee62, 0xee63, 0xee64, 0xee65, 0xee66, 0xee67,
+ 0xee68, 0xee69, 0xee6a, 0xee6b, 0xee6c, 0xee6d, 0xee6e, 0xee6f,
+ 0xee70, 0xee71, 0xee72, 0xee73, 0xee74, 0xee75, 0xee76, 0xee77,
+ 0xee78, 0xee79, 0xee7a, 0xee7b, 0xee7c, 0xee7d, 0xee7e, 0xee7f,
+ 0xee80, 0xee81, 0xee82, 0xee83, 0xee84, 0xee85, 0xee86, 0xee87, /* 0xee80 */
+ 0xee88, 0xee89, 0xee8a, 0xee8b, 0xee8c, 0xee8d, 0xee8e, 0xee8f,
+ 0xee90, 0xee91, 0xee92, 0xee93, 0xee94, 0xee95, 0xee96, 0xee97,
+ 0xee98, 0xee99, 0xee9a, 0xee9b, 0xee9c, 0xee9d, 0xee9e, 0xee9f,
+ 0xeea0, 0xeea1, 0xeea2, 0xeea3, 0xeea4, 0xeea5, 0xeea6, 0xeea7,
+ 0xeea8, 0xeea9, 0xeeaa, 0xeeab, 0xeeac, 0xeead, 0xeeae, 0xeeaf,
+ 0xeeb0, 0xeeb1, 0xeeb2, 0xeeb3, 0xeeb4, 0xeeb5, 0xeeb6, 0xeeb7,
+ 0xeeb8, 0xeeb9, 0xeeba, 0xeebb, 0xeebc, 0xeebd, 0xeebe, 0xeebf,
+ 0xeec0, 0xeec1, 0xeec2, 0xeec3, 0xeec4, 0xeec5, 0xeec6, 0xeec7, /* 0xeec0 */
+ 0xeec8, 0xeec9, 0xeeca, 0xeecb, 0xeecc, 0xeecd, 0xeece, 0xeecf,
+ 0xeed0, 0xeed1, 0xeed2, 0xeed3, 0xeed4, 0xeed5, 0xeed6, 0xeed7,
+ 0xeed8, 0xeed9, 0xeeda, 0xeedb, 0xeedc, 0xeedd, 0xeede, 0xeedf,
+ 0xeee0, 0xeee1, 0xeee2, 0xeee3, 0xeee4, 0xeee5, 0xeee6, 0xeee7,
+ 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xeeed, 0xeeee, 0xeeef,
+ 0xeef0, 0xeef1, 0xeef2, 0xeef3, 0xeef4, 0xeef5, 0xeef6, 0xeef7,
+ 0xeef8, 0xeef9, 0xeefa, 0xeefb, 0xeefc, 0xeefd, 0xeefe, 0xeeff,
+ 0xef00, 0xef01, 0xef02, 0xef03, 0xef04, 0xef05, 0xef06, 0xef07, /* 0xef00 */
+ 0xef08, 0xef09, 0xef0a, 0xef0b, 0xef0c, 0xef0d, 0xef0e, 0xef0f,
+ 0xef10, 0xef11, 0xef12, 0xef13, 0xef14, 0xef15, 0xef16, 0xef17,
+ 0xef18, 0xef19, 0xef1a, 0xef1b, 0xef1c, 0xef1d, 0xef1e, 0xef1f,
+ 0xef20, 0xef21, 0xef22, 0xef23, 0xef24, 0xef25, 0xef26, 0xef27,
+ 0xef28, 0xef29, 0xef2a, 0xef2b, 0xef2c, 0xef2d, 0xef2e, 0xef2f,
+ 0xef30, 0xef31, 0xef32, 0xef33, 0xef34, 0xef35, 0xef36, 0xef37,
+ 0xef38, 0xef39, 0xef3a, 0xef3b, 0xef3c, 0xef3d, 0xef3e, 0xef3f,
+ 0xef40, 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xef46, 0xef47, /* 0xef40 */
+ 0xef48, 0xef49, 0xef4a, 0xef4b, 0xef4c, 0xef4d, 0xef4e, 0xef4f,
+ 0xef50, 0xef51, 0xef52, 0xef53, 0xef54, 0xef55, 0xef56, 0xef57,
+ 0xef58, 0xef59, 0xef5a, 0xef5b, 0xef5c, 0xef5d, 0xef5e, 0xef5f,
+ 0xef60, 0xef61, 0xef62, 0xef63, 0xef64, 0xef65, 0xef66, 0xef67,
+ 0xef68, 0xef69, 0xef6a, 0xef6b, 0xef6c, 0xef6d, 0xef6e, 0xef6f,
+ 0xef70, 0xef71, 0xef72, 0xef73, 0xef74, 0xef75, 0xef76, 0xef77,
+ 0xef78, 0xef79, 0xef7a, 0xef7b, 0xef7c, 0xef7d, 0xef7e, 0xef7f,
+ 0xef80, 0xef81, 0xef82, 0xef83, 0xef84, 0xef85, 0xef86, 0xef87, /* 0xef80 */
+ 0xef88, 0xef89, 0xef8a, 0xef8b, 0xef8c, 0xef8d, 0xef8e, 0xef8f,
+ 0xef90, 0xef91, 0xef92, 0xef93, 0xef94, 0xef95, 0xef96, 0xef97,
+ 0xef98, 0xef99, 0xef9a, 0xef9b, 0xef9c, 0xef9d, 0xef9e, 0xef9f,
+ 0xefa0, 0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefa5, 0xefa6, 0xefa7,
+ 0xefa8, 0xefa9, 0xefaa, 0xefab, 0xefac, 0xefad, 0xefae, 0xefaf,
+ 0xefb0, 0xefb1, 0xefb2, 0xefb3, 0xefb4, 0xefb5, 0xefb6, 0xefb7,
+ 0xefb8, 0xefb9, 0xefba, 0xefbb, 0xefbc, 0xefbd, 0xefbe, 0xefbf,
+ 0xefc0, 0xefc1, 0xefc2, 0xefc3, 0xefc4, 0xefc5, 0xefc6, 0xefc7, /* 0xefc0 */
+ 0xefc8, 0xefc9, 0xefca, 0xefcb, 0xefcc, 0xefcd, 0xefce, 0xefcf,
+ 0xefd0, 0xefd1, 0xefd2, 0xefd3, 0xefd4, 0xefd5, 0xefd6, 0xefd7,
+ 0xefd8, 0xefd9, 0xefda, 0xefdb, 0xefdc, 0xefdd, 0xefde, 0xefdf,
+ 0xefe0, 0xefe1, 0xefe2, 0xefe3, 0xefe4, 0xefe5, 0xefe6, 0xefe7,
+ 0xefe8, 0xefe9, 0xefea, 0xefeb, 0xefec, 0xefed, 0xefee, 0xefef,
+ 0xeff0, 0xeff1, 0xeff2, 0xeff3, 0xeff4, 0xeff5, 0xeff6, 0xeff7,
+ 0xeff8, 0xeff9, 0xeffa, 0xeffb, 0xeffc, 0xeffd, 0xeffe, 0xefff,
+ 0xf000, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, /* 0xf000 */
+ 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f,
+ 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017,
+ 0xf018, 0xf019, 0xf01a, 0xf01b, 0xf01c, 0xf01d, 0xf01e, 0xf01f,
+ 0xf020, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027,
+ 0xf028, 0xf029, 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f,
+ 0xf030, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
+ 0xf038, 0xf039, 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f,
+ 0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047, /* 0xf040 */
+ 0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f,
+ 0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057,
+ 0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f,
+ 0xf060, 0xf061, 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067,
+ 0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f,
+ 0xf070, 0xf071, 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077,
+ 0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f,
+ 0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087, /* 0xf080 */
+ 0xf088, 0xf089, 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e, 0xf08f,
+ 0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096, 0xf097,
+ 0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e, 0xf09f,
+ 0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6, 0xf0a7,
+ 0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae, 0xf0af,
+ 0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6, 0xf0b7,
+ 0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be, 0xf0bf,
+ 0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6, 0xf0c7, /* 0xf0c0 */
+ 0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce, 0xf0cf,
+ 0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d7,
+ 0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, 0xf0dd, 0xf0de, 0xf0df,
+ 0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, 0xf0e5, 0xf0e6, 0xf0e7,
+ 0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, 0xf0ed, 0xf0ee, 0xf0ef,
+ 0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, 0xf0f5, 0xf0f6, 0xf0f7,
+ 0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc, 0xf0fd, 0xf0fe, 0xf0ff,
+ 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106, 0xf107, /* 0xf100 */
+ 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e, 0xf10f,
+ 0xf110, 0xf111, 0xf112, 0xf113, 0xf114, 0xf115, 0xf116, 0xf117,
+ 0xf118, 0xf119, 0xf11a, 0xf11b, 0xf11c, 0xf11d, 0xf11e, 0xf11f,
+ 0xf120, 0xf121, 0xf122, 0xf123, 0xf124, 0xf125, 0xf126, 0xf127,
+ 0xf128, 0xf129, 0xf12a, 0xf12b, 0xf12c, 0xf12d, 0xf12e, 0xf12f,
+ 0xf130, 0xf131, 0xf132, 0xf133, 0xf134, 0xf135, 0xf136, 0xf137,
+ 0xf138, 0xf139, 0xf13a, 0xf13b, 0xf13c, 0xf13d, 0xf13e, 0xf13f,
+ 0xf140, 0xf141, 0xf142, 0xf143, 0xf144, 0xf145, 0xf146, 0xf147, /* 0xf140 */
+ 0xf148, 0xf149, 0xf14a, 0xf14b, 0xf14c, 0xf14d, 0xf14e, 0xf14f,
+ 0xf150, 0xf151, 0xf152, 0xf153, 0xf154, 0xf155, 0xf156, 0xf157,
+ 0xf158, 0xf159, 0xf15a, 0xf15b, 0xf15c, 0xf15d, 0xf15e, 0xf15f,
+ 0xf160, 0xf161, 0xf162, 0xf163, 0xf164, 0xf165, 0xf166, 0xf167,
+ 0xf168, 0xf169, 0xf16a, 0xf16b, 0xf16c, 0xf16d, 0xf16e, 0xf16f,
+ 0xf170, 0xf171, 0xf172, 0xf173, 0xf174, 0xf175, 0xf176, 0xf177,
+ 0xf178, 0xf179, 0xf17a, 0xf17b, 0xf17c, 0xf17d, 0xf17e, 0xf17f,
+ 0xf180, 0xf181, 0xf182, 0xf183, 0xf184, 0xf185, 0xf186, 0xf187, /* 0xf180 */
+ 0xf188, 0xf189, 0xf18a, 0xf18b, 0xf18c, 0xf18d, 0xf18e, 0xf18f,
+ 0xf190, 0xf191, 0xf192, 0xf193, 0xf194, 0xf195, 0xf196, 0xf197,
+ 0xf198, 0xf199, 0xf19a, 0xf19b, 0xf19c, 0xf19d, 0xf19e, 0xf19f,
+ 0xf1a0, 0xf1a1, 0xf1a2, 0xf1a3, 0xf1a4, 0xf1a5, 0xf1a6, 0xf1a7,
+ 0xf1a8, 0xf1a9, 0xf1aa, 0xf1ab, 0xf1ac, 0xf1ad, 0xf1ae, 0xf1af,
+ 0xf1b0, 0xf1b1, 0xf1b2, 0xf1b3, 0xf1b4, 0xf1b5, 0xf1b6, 0xf1b7,
+ 0xf1b8, 0xf1b9, 0xf1ba, 0xf1bb, 0xf1bc, 0xf1bd, 0xf1be, 0xf1bf,
+ 0xf1c0, 0xf1c1, 0xf1c2, 0xf1c3, 0xf1c4, 0xf1c5, 0xf1c6, 0xf1c7, /* 0xf1c0 */
+ 0xf1c8, 0xf1c9, 0xf1ca, 0xf1cb, 0xf1cc, 0xf1cd, 0xf1ce, 0xf1cf,
+ 0xf1d0, 0xf1d1, 0xf1d2, 0xf1d3, 0xf1d4, 0xf1d5, 0xf1d6, 0xf1d7,
+ 0xf1d8, 0xf1d9, 0xf1da, 0xf1db, 0xf1dc, 0xf1dd, 0xf1de, 0xf1df,
+ 0xf1e0, 0xf1e1, 0xf1e2, 0xf1e3, 0xf1e4, 0xf1e5, 0xf1e6, 0xf1e7,
+ 0xf1e8, 0xf1e9, 0xf1ea, 0xf1eb, 0xf1ec, 0xf1ed, 0xf1ee, 0xf1ef,
+ 0xf1f0, 0xf1f1, 0xf1f2, 0xf1f3, 0xf1f4, 0xf1f5, 0xf1f6, 0xf1f7,
+ 0xf1f8, 0xf1f9, 0xf1fa, 0xf1fb, 0xf1fc, 0xf1fd, 0xf1fe, 0xf1ff,
+ 0xf200, 0xf201, 0xf202, 0xf203, 0xf204, 0xf205, 0xf206, 0xf207, /* 0xf200 */
+ 0xf208, 0xf209, 0xf20a, 0xf20b, 0xf20c, 0xf20d, 0xf20e, 0xf20f,
+ 0xf210, 0xf211, 0xf212, 0xf213, 0xf214, 0xf215, 0xf216, 0xf217,
+ 0xf218, 0xf219, 0xf21a, 0xf21b, 0xf21c, 0xf21d, 0xf21e, 0xf21f,
+ 0xf220, 0xf221, 0xf222, 0xf223, 0xf224, 0xf225, 0xf226, 0xf227,
+ 0xf228, 0xf229, 0xf22a, 0xf22b, 0xf22c, 0xf22d, 0xf22e, 0xf22f,
+ 0xf230, 0xf231, 0xf232, 0xf233, 0xf234, 0xf235, 0xf236, 0xf237,
+ 0xf238, 0xf239, 0xf23a, 0xf23b, 0xf23c, 0xf23d, 0xf23e, 0xf23f,
+ 0xf240, 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, 0xf246, 0xf247, /* 0xf240 */
+ 0xf248, 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, 0xf24e, 0xf24f,
+ 0xf250, 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, 0xf256, 0xf257,
+ 0xf258, 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, 0xf25e, 0xf25f,
+ 0xf260, 0xf261, 0xf262, 0xf263, 0xf264, 0xf265, 0xf266, 0xf267,
+ 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d, 0xf26e, 0xf26f,
+ 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275, 0xf276, 0xf277,
+ 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d, 0xf27e, 0xf27f,
+ 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285, 0xf286, 0xf287, /* 0xf280 */
+ 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d, 0xf28e, 0xf28f,
+ 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295, 0xf296, 0xf297,
+ 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d, 0xf29e, 0xf29f,
+ 0xf2a0, 0xf2a1, 0xf2a2, 0xf2a3, 0xf2a4, 0xf2a5, 0xf2a6, 0xf2a7,
+ 0xf2a8, 0xf2a9, 0xf2aa, 0xf2ab, 0xf2ac, 0xf2ad, 0xf2ae, 0xf2af,
+ 0xf2b0, 0xf2b1, 0xf2b2, 0xf2b3, 0xf2b4, 0xf2b5, 0xf2b6, 0xf2b7,
+ 0xf2b8, 0xf2b9, 0xf2ba, 0xf2bb, 0xf2bc, 0xf2bd, 0xf2be, 0xf2bf,
+ 0xf2c0, 0xf2c1, 0xf2c2, 0xf2c3, 0xf2c4, 0xf2c5, 0xf2c6, 0xf2c7, /* 0xf2c0 */
+ 0xf2c8, 0xf2c9, 0xf2ca, 0xf2cb, 0xf2cc, 0xf2cd, 0xf2ce, 0xf2cf,
+ 0xf2d0, 0xf2d1, 0xf2d2, 0xf2d3, 0xf2d4, 0xf2d5, 0xf2d6, 0xf2d7,
+ 0xf2d8, 0xf2d9, 0xf2da, 0xf2db, 0xf2dc, 0xf2dd, 0xf2de, 0xf2df,
+ 0xf2e0, 0xf2e1, 0xf2e2, 0xf2e3, 0xf2e4, 0xf2e5, 0xf2e6, 0xf2e7,
+ 0xf2e8, 0xf2e9, 0xf2ea, 0xf2eb, 0xf2ec, 0xf2ed, 0xf2ee, 0xf2ef,
+ 0xf2f0, 0xf2f1, 0xf2f2, 0xf2f3, 0xf2f4, 0xf2f5, 0xf2f6, 0xf2f7,
+ 0xf2f8, 0xf2f9, 0xf2fa, 0xf2fb, 0xf2fc, 0xf2fd, 0xf2fe, 0xf2ff,
+ 0xf300, 0xf301, 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, /* 0xf300 */
+ 0xf308, 0xf309, 0xf30a, 0xf30b, 0xf30c, 0xf30d, 0xf30e, 0xf30f,
+ 0xf310, 0xf311, 0xf312, 0xf313, 0xf314, 0xf315, 0xf316, 0xf317,
+ 0xf318, 0xf319, 0xf31a, 0xf31b, 0xf31c, 0xf31d, 0xf31e, 0xf31f,
+ 0xf320, 0xf321, 0xf322, 0xf323, 0xf324, 0xf325, 0xf326, 0xf327,
+ 0xf328, 0xf329, 0xf32a, 0xf32b, 0xf32c, 0xf32d, 0xf32e, 0xf32f,
+ 0xf330, 0xf331, 0xf332, 0xf333, 0xf334, 0xf335, 0xf336, 0xf337,
+ 0xf338, 0xf339, 0xf33a, 0xf33b, 0xf33c, 0xf33d, 0xf33e, 0xf33f,
+ 0xf340, 0xf341, 0xf342, 0xf343, 0xf344, 0xf345, 0xf346, 0xf347, /* 0xf340 */
+ 0xf348, 0xf349, 0xf34a, 0xf34b, 0xf34c, 0xf34d, 0xf34e, 0xf34f,
+ 0xf350, 0xf351, 0xf352, 0xf353, 0xf354, 0xf355, 0xf356, 0xf357,
+ 0xf358, 0xf359, 0xf35a, 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f,
+ 0xf360, 0xf361, 0xf362, 0xf363, 0xf364, 0xf365, 0xf366, 0xf367,
+ 0xf368, 0xf369, 0xf36a, 0xf36b, 0xf36c, 0xf36d, 0xf36e, 0xf36f,
+ 0xf370, 0xf371, 0xf372, 0xf373, 0xf374, 0xf375, 0xf376, 0xf377,
+ 0xf378, 0xf379, 0xf37a, 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf37f,
+ 0xf380, 0xf381, 0xf382, 0xf383, 0xf384, 0xf385, 0xf386, 0xf387, /* 0xf380 */
+ 0xf388, 0xf389, 0xf38a, 0xf38b, 0xf38c, 0xf38d, 0xf38e, 0xf38f,
+ 0xf390, 0xf391, 0xf392, 0xf393, 0xf394, 0xf395, 0xf396, 0xf397,
+ 0xf398, 0xf399, 0xf39a, 0xf39b, 0xf39c, 0xf39d, 0xf39e, 0xf39f,
+ 0xf3a0, 0xf3a1, 0xf3a2, 0xf3a3, 0xf3a4, 0xf3a5, 0xf3a6, 0xf3a7,
+ 0xf3a8, 0xf3a9, 0xf3aa, 0xf3ab, 0xf3ac, 0xf3ad, 0xf3ae, 0xf3af,
+ 0xf3b0, 0xf3b1, 0xf3b2, 0xf3b3, 0xf3b4, 0xf3b5, 0xf3b6, 0xf3b7,
+ 0xf3b8, 0xf3b9, 0xf3ba, 0xf3bb, 0xf3bc, 0xf3bd, 0xf3be, 0xf3bf,
+ 0xf3c0, 0xf3c1, 0xf3c2, 0xf3c3, 0xf3c4, 0xf3c5, 0xf3c6, 0xf3c7, /* 0xf3c0 */
+ 0xf3c8, 0xf3c9, 0xf3ca, 0xf3cb, 0xf3cc, 0xf3cd, 0xf3ce, 0xf3cf,
+ 0xf3d0, 0xf3d1, 0xf3d2, 0xf3d3, 0xf3d4, 0xf3d5, 0xf3d6, 0xf3d7,
+ 0xf3d8, 0xf3d9, 0xf3da, 0xf3db, 0xf3dc, 0xf3dd, 0xf3de, 0xf3df,
+ 0xf3e0, 0xf3e1, 0xf3e2, 0xf3e3, 0xf3e4, 0xf3e5, 0xf3e6, 0xf3e7,
+ 0xf3e8, 0xf3e9, 0xf3ea, 0xf3eb, 0xf3ec, 0xf3ed, 0xf3ee, 0xf3ef,
+ 0xf3f0, 0xf3f1, 0xf3f2, 0xf3f3, 0xf3f4, 0xf3f5, 0xf3f6, 0xf3f7,
+ 0xf3f8, 0xf3f9, 0xf3fa, 0xf3fb, 0xf3fc, 0xf3fd, 0xf3fe, 0xf3ff,
+ 0xf400, 0xf401, 0xf402, 0xf403, 0xf404, 0xf405, 0xf406, 0xf407, /* 0xf400 */
+ 0xf408, 0xf409, 0xf40a, 0xf40b, 0xf40c, 0xf40d, 0xf40e, 0xf40f,
+ 0xf410, 0xf411, 0xf412, 0xf413, 0xf414, 0xf415, 0xf416, 0xf417,
+ 0xf418, 0xf419, 0xf41a, 0xf41b, 0xf41c, 0xf41d, 0xf41e, 0xf41f,
+ 0xf420, 0xf421, 0xf422, 0xf423, 0xf424, 0xf425, 0xf426, 0xf427,
+ 0xf428, 0xf429, 0xf42a, 0xf42b, 0xf42c, 0xf42d, 0xf42e, 0xf42f,
+ 0xf430, 0xf431, 0xf432, 0xf433, 0xf434, 0xf435, 0xf436, 0xf437,
+ 0xf438, 0xf439, 0xf43a, 0xf43b, 0xf43c, 0xf43d, 0xf43e, 0xf43f,
+ 0xf440, 0xf441, 0xf442, 0xf443, 0xf444, 0xf445, 0xf446, 0xf447, /* 0xf440 */
+ 0xf448, 0xf449, 0xf44a, 0xf44b, 0xf44c, 0xf44d, 0xf44e, 0xf44f,
+ 0xf450, 0xf451, 0xf452, 0xf453, 0xf454, 0xf455, 0xf456, 0xf457,
+ 0xf458, 0xf459, 0xf45a, 0xf45b, 0xf45c, 0xf45d, 0xf45e, 0xf45f,
+ 0xf460, 0xf461, 0xf462, 0xf463, 0xf464, 0xf465, 0xf466, 0xf467,
+ 0xf468, 0xf469, 0xf46a, 0xf46b, 0xf46c, 0xf46d, 0xf46e, 0xf46f,
+ 0xf470, 0xf471, 0xf472, 0xf473, 0xf474, 0xf475, 0xf476, 0xf477,
+ 0xf478, 0xf479, 0xf47a, 0xf47b, 0xf47c, 0xf47d, 0xf47e, 0xf47f,
+ 0xf480, 0xf481, 0xf482, 0xf483, 0xf484, 0xf485, 0xf486, 0xf487, /* 0xf480 */
+ 0xf488, 0xf489, 0xf48a, 0xf48b, 0xf48c, 0xf48d, 0xf48e, 0xf48f,
+ 0xf490, 0xf491, 0xf492, 0xf493, 0xf494, 0xf495, 0xf496, 0xf497,
+ 0xf498, 0xf499, 0xf49a, 0xf49b, 0xf49c, 0xf49d, 0xf49e, 0xf49f,
+ 0xf4a0, 0xf4a1, 0xf4a2, 0xf4a3, 0xf4a4, 0xf4a5, 0xf4a6, 0xf4a7,
+ 0xf4a8, 0xf4a9, 0xf4aa, 0xf4ab, 0xf4ac, 0xf4ad, 0xf4ae, 0xf4af,
+ 0xf4b0, 0xf4b1, 0xf4b2, 0xf4b3, 0xf4b4, 0xf4b5, 0xf4b6, 0xf4b7,
+ 0xf4b8, 0xf4b9, 0xf4ba, 0xf4bb, 0xf4bc, 0xf4bd, 0xf4be, 0xf4bf,
+ 0xf4c0, 0xf4c1, 0xf4c2, 0xf4c3, 0xf4c4, 0xf4c5, 0xf4c6, 0xf4c7, /* 0xf4c0 */
+ 0xf4c8, 0xf4c9, 0xf4ca, 0xf4cb, 0xf4cc, 0xf4cd, 0xf4ce, 0xf4cf,
+ 0xf4d0, 0xf4d1, 0xf4d2, 0xf4d3, 0xf4d4, 0xf4d5, 0xf4d6, 0xf4d7,
+ 0xf4d8, 0xf4d9, 0xf4da, 0xf4db, 0xf4dc, 0xf4dd, 0xf4de, 0xf4df,
+ 0xf4e0, 0xf4e1, 0xf4e2, 0xf4e3, 0xf4e4, 0xf4e5, 0xf4e6, 0xf4e7,
+ 0xf4e8, 0xf4e9, 0xf4ea, 0xf4eb, 0xf4ec, 0xf4ed, 0xf4ee, 0xf4ef,
+ 0xf4f0, 0xf4f1, 0xf4f2, 0xf4f3, 0xf4f4, 0xf4f5, 0xf4f6, 0xf4f7,
+ 0xf4f8, 0xf4f9, 0xf4fa, 0xf4fb, 0xf4fc, 0xf4fd, 0xf4fe, 0xf4ff,
+ 0xf500, 0xf501, 0xf502, 0xf503, 0xf504, 0xf505, 0xf506, 0xf507, /* 0xf500 */
+ 0xf508, 0xf509, 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf50e, 0xf50f,
+ 0xf510, 0xf511, 0xf512, 0xf513, 0xf514, 0xf515, 0xf516, 0xf517,
+ 0xf518, 0xf519, 0xf51a, 0xf51b, 0xf51c, 0xf51d, 0xf51e, 0xf51f,
+ 0xf520, 0xf521, 0xf522, 0xf523, 0xf524, 0xf525, 0xf526, 0xf527,
+ 0xf528, 0xf529, 0xf52a, 0xf52b, 0xf52c, 0xf52d, 0xf52e, 0xf52f,
+ 0xf530, 0xf531, 0xf532, 0xf533, 0xf534, 0xf535, 0xf536, 0xf537,
+ 0xf538, 0xf539, 0xf53a, 0xf53b, 0xf53c, 0xf53d, 0xf53e, 0xf53f,
+ 0xf540, 0xf541, 0xf542, 0xf543, 0xf544, 0xf545, 0xf546, 0xf547, /* 0xf540 */
+ 0xf548, 0xf549, 0xf54a, 0xf54b, 0xf54c, 0xf54d, 0xf54e, 0xf54f,
+ 0xf550, 0xf551, 0xf552, 0xf553, 0xf554, 0xf555, 0xf556, 0xf557,
+ 0xf558, 0xf559, 0xf55a, 0xf55b, 0xf55c, 0xf55d, 0xf55e, 0xf55f,
+ 0xf560, 0xf561, 0xf562, 0xf563, 0xf564, 0xf565, 0xf566, 0xf567,
+ 0xf568, 0xf569, 0xf56a, 0xf56b, 0xf56c, 0xf56d, 0xf56e, 0xf56f,
+ 0xf570, 0xf571, 0xf572, 0xf573, 0xf574, 0xf575, 0xf576, 0xf577,
+ 0xf578, 0xf579, 0xf57a, 0xf57b, 0xf57c, 0xf57d, 0xf57e, 0xf57f,
+ 0xf580, 0xf581, 0xf582, 0xf583, 0xf584, 0xf585, 0xf586, 0xf587, /* 0xf580 */
+ 0xf588, 0xf589, 0xf58a, 0xf58b, 0xf58c, 0xf58d, 0xf58e, 0xf58f,
+ 0xf590, 0xf591, 0xf592, 0xf593, 0xf594, 0xf595, 0xf596, 0xf597,
+ 0xf598, 0xf599, 0xf59a, 0xf59b, 0xf59c, 0xf59d, 0xf59e, 0xf59f,
+ 0xf5a0, 0xf5a1, 0xf5a2, 0xf5a3, 0xf5a4, 0xf5a5, 0xf5a6, 0xf5a7,
+ 0xf5a8, 0xf5a9, 0xf5aa, 0xf5ab, 0xf5ac, 0xf5ad, 0xf5ae, 0xf5af,
+ 0xf5b0, 0xf5b1, 0xf5b2, 0xf5b3, 0xf5b4, 0xf5b5, 0xf5b6, 0xf5b7,
+ 0xf5b8, 0xf5b9, 0xf5ba, 0xf5bb, 0xf5bc, 0xf5bd, 0xf5be, 0xf5bf,
+ 0xf5c0, 0xf5c1, 0xf5c2, 0xf5c3, 0xf5c4, 0xf5c5, 0xf5c6, 0xf5c7, /* 0xf5c0 */
+ 0xf5c8, 0xf5c9, 0xf5ca, 0xf5cb, 0xf5cc, 0xf5cd, 0xf5ce, 0xf5cf,
+ 0xf5d0, 0xf5d1, 0xf5d2, 0xf5d3, 0xf5d4, 0xf5d5, 0xf5d6, 0xf5d7,
+ 0xf5d8, 0xf5d9, 0xf5da, 0xf5db, 0xf5dc, 0xf5dd, 0xf5de, 0xf5df,
+ 0xf5e0, 0xf5e1, 0xf5e2, 0xf5e3, 0xf5e4, 0xf5e5, 0xf5e6, 0xf5e7,
+ 0xf5e8, 0xf5e9, 0xf5ea, 0xf5eb, 0xf5ec, 0xf5ed, 0xf5ee, 0xf5ef,
+ 0xf5f0, 0xf5f1, 0xf5f2, 0xf5f3, 0xf5f4, 0xf5f5, 0xf5f6, 0xf5f7,
+ 0xf5f8, 0xf5f9, 0xf5fa, 0xf5fb, 0xf5fc, 0xf5fd, 0xf5fe, 0xf5ff,
+ 0xf600, 0xf601, 0xf602, 0xf603, 0xf604, 0xf605, 0xf606, 0xf607, /* 0xf600 */
+ 0xf608, 0xf609, 0xf60a, 0xf60b, 0xf60c, 0xf60d, 0xf60e, 0xf60f,
+ 0xf610, 0xf611, 0xf612, 0xf613, 0xf614, 0xf615, 0xf616, 0xf617,
+ 0xf618, 0xf619, 0xf61a, 0xf61b, 0xf61c, 0xf61d, 0xf61e, 0xf61f,
+ 0xf620, 0xf621, 0xf622, 0xf623, 0xf624, 0xf625, 0xf626, 0xf627,
+ 0xf628, 0xf629, 0xf62a, 0xf62b, 0xf62c, 0xf62d, 0xf62e, 0xf62f,
+ 0xf630, 0xf631, 0xf632, 0xf633, 0xf634, 0xf635, 0xf636, 0xf637,
+ 0xf638, 0xf639, 0xf63a, 0xf63b, 0xf63c, 0xf63d, 0xf63e, 0xf63f,
+ 0xf640, 0xf641, 0xf642, 0xf643, 0xf644, 0xf645, 0xf646, 0xf647, /* 0xf640 */
+ 0xf648, 0xf649, 0xf64a, 0xf64b, 0xf64c, 0xf64d, 0xf64e, 0xf64f,
+ 0xf650, 0xf651, 0xf652, 0xf653, 0xf654, 0xf655, 0xf656, 0xf657,
+ 0xf658, 0xf659, 0xf65a, 0xf65b, 0xf65c, 0xf65d, 0xf65e, 0xf65f,
+ 0xf660, 0xf661, 0xf662, 0xf663, 0xf664, 0xf665, 0xf666, 0xf667,
+ 0xf668, 0xf669, 0xf66a, 0xf66b, 0xf66c, 0xf66d, 0xf66e, 0xf66f,
+ 0xf670, 0xf671, 0xf672, 0xf673, 0xf674, 0xf675, 0xf676, 0xf677,
+ 0xf678, 0xf679, 0xf67a, 0xf67b, 0xf67c, 0xf67d, 0xf67e, 0xf67f,
+ 0xf680, 0xf681, 0xf682, 0xf683, 0xf684, 0xf685, 0xf686, 0xf687, /* 0xf680 */
+ 0xf688, 0xf689, 0xf68a, 0xf68b, 0xf68c, 0xf68d, 0xf68e, 0xf68f,
+ 0xf690, 0xf691, 0xf692, 0xf693, 0xf694, 0xf695, 0xf696, 0xf697,
+ 0xf698, 0xf699, 0xf69a, 0xf69b, 0xf69c, 0xf69d, 0xf69e, 0xf69f,
+ 0xf6a0, 0xf6a1, 0xf6a2, 0xf6a3, 0xf6a4, 0xf6a5, 0xf6a6, 0xf6a7,
+ 0xf6a8, 0xf6a9, 0xf6aa, 0xf6ab, 0xf6ac, 0xf6ad, 0xf6ae, 0xf6af,
+ 0xf6b0, 0xf6b1, 0xf6b2, 0xf6b3, 0xf6b4, 0xf6b5, 0xf6b6, 0xf6b7,
+ 0xf6b8, 0xf6b9, 0xf6ba, 0xf6bb, 0xf6bc, 0xf6bd, 0xf6be, 0xf6bf,
+ 0xf6c0, 0xf6c1, 0xf6c2, 0xf6c3, 0xf6c4, 0xf6c5, 0xf6c6, 0xf6c7, /* 0xf6c0 */
+ 0xf6c8, 0xf6c9, 0xf6ca, 0xf6cb, 0xf6cc, 0xf6cd, 0xf6ce, 0xf6cf,
+ 0xf6d0, 0xf6d1, 0xf6d2, 0xf6d3, 0xf6d4, 0xf6d5, 0xf6d6, 0xf6d7,
+ 0xf6d8, 0xf6d9, 0xf6da, 0xf6db, 0xf6dc, 0xf6dd, 0xf6de, 0xf6df,
+ 0xf6e0, 0xf6e1, 0xf6e2, 0xf6e3, 0xf6e4, 0xf6e5, 0xf6e6, 0xf6e7,
+ 0xf6e8, 0xf6e9, 0xf6ea, 0xf6eb, 0xf6ec, 0xf6ed, 0xf6ee, 0xf6ef,
+ 0xf6f0, 0xf6f1, 0xf6f2, 0xf6f3, 0xf6f4, 0xf6f5, 0xf6f6, 0xf6f7,
+ 0xf6f8, 0xf6f9, 0xf6fa, 0xf6fb, 0xf6fc, 0xf6fd, 0xf6fe, 0xf6ff,
+ 0xf700, 0xf701, 0xf702, 0xf703, 0xf704, 0xf705, 0xf706, 0xf707, /* 0xf700 */
+ 0xf708, 0xf709, 0xf70a, 0xf70b, 0xf70c, 0xf70d, 0xf70e, 0xf70f,
+ 0xf710, 0xf711, 0xf712, 0xf713, 0xf714, 0xf715, 0xf716, 0xf717,
+ 0xf718, 0xf719, 0xf71a, 0xf71b, 0xf71c, 0xf71d, 0xf71e, 0xf71f,
+ 0xf720, 0xf721, 0xf722, 0xf723, 0xf724, 0xf725, 0xf726, 0xf727,
+ 0xf728, 0xf729, 0xf72a, 0xf72b, 0xf72c, 0xf72d, 0xf72e, 0xf72f,
+ 0xf730, 0xf731, 0xf732, 0xf733, 0xf734, 0xf735, 0xf736, 0xf737,
+ 0xf738, 0xf739, 0xf73a, 0xf73b, 0xf73c, 0xf73d, 0xf73e, 0xf73f,
+ 0xf740, 0xf741, 0xf742, 0xf743, 0xf744, 0xf745, 0xf746, 0xf747, /* 0xf740 */
+ 0xf748, 0xf749, 0xf74a, 0xf74b, 0xf74c, 0xf74d, 0xf74e, 0xf74f,
+ 0xf750, 0xf751, 0xf752, 0xf753, 0xf754, 0xf755, 0xf756, 0xf757,
+ 0xf758, 0xf759, 0xf75a, 0xf75b, 0xf75c, 0xf75d, 0xf75e, 0xf75f,
+ 0xf760, 0xf761, 0xf762, 0xf763, 0xf764, 0xf765, 0xf766, 0xf767,
+ 0xf768, 0xf769, 0xf76a, 0xf76b, 0xf76c, 0xf76d, 0xf76e, 0xf76f,
+ 0xf770, 0xf771, 0xf772, 0xf773, 0xf774, 0xf775, 0xf776, 0xf777,
+ 0xf778, 0xf779, 0xf77a, 0xf77b, 0xf77c, 0xf77d, 0xf77e, 0xf77f,
+ 0xf780, 0xf781, 0xf782, 0xf783, 0xf784, 0xf785, 0xf786, 0xf787, /* 0xf780 */
+ 0xf788, 0xf789, 0xf78a, 0xf78b, 0xf78c, 0xf78d, 0xf78e, 0xf78f,
+ 0xf790, 0xf791, 0xf792, 0xf793, 0xf794, 0xf795, 0xf796, 0xf797,
+ 0xf798, 0xf799, 0xf79a, 0xf79b, 0xf79c, 0xf79d, 0xf79e, 0xf79f,
+ 0xf7a0, 0xf7a1, 0xf7a2, 0xf7a3, 0xf7a4, 0xf7a5, 0xf7a6, 0xf7a7,
+ 0xf7a8, 0xf7a9, 0xf7aa, 0xf7ab, 0xf7ac, 0xf7ad, 0xf7ae, 0xf7af,
+ 0xf7b0, 0xf7b1, 0xf7b2, 0xf7b3, 0xf7b4, 0xf7b5, 0xf7b6, 0xf7b7,
+ 0xf7b8, 0xf7b9, 0xf7ba, 0xf7bb, 0xf7bc, 0xf7bd, 0xf7be, 0xf7bf,
+ 0xf7c0, 0xf7c1, 0xf7c2, 0xf7c3, 0xf7c4, 0xf7c5, 0xf7c6, 0xf7c7, /* 0xf7c0 */
+ 0xf7c8, 0xf7c9, 0xf7ca, 0xf7cb, 0xf7cc, 0xf7cd, 0xf7ce, 0xf7cf,
+ 0xf7d0, 0xf7d1, 0xf7d2, 0xf7d3, 0xf7d4, 0xf7d5, 0xf7d6, 0xf7d7,
+ 0xf7d8, 0xf7d9, 0xf7da, 0xf7db, 0xf7dc, 0xf7dd, 0xf7de, 0xf7df,
+ 0xf7e0, 0xf7e1, 0xf7e2, 0xf7e3, 0xf7e4, 0xf7e5, 0xf7e6, 0xf7e7,
+ 0xf7e8, 0xf7e9, 0xf7ea, 0xf7eb, 0xf7ec, 0xf7ed, 0xf7ee, 0xf7ef,
+ 0xf7f0, 0xf7f1, 0xf7f2, 0xf7f3, 0xf7f4, 0xf7f5, 0xf7f6, 0xf7f7,
+ 0xf7f8, 0xf7f9, 0xf7fa, 0xf7fb, 0xf7fc, 0xf7fd, 0xf7fe, 0xf7ff,
+ 0xf800, 0xf801, 0xf802, 0xf803, 0xf804, 0xf805, 0xf806, 0xf807, /* 0xf800 */
+ 0xf808, 0xf809, 0xf80a, 0xf80b, 0xf80c, 0xf80d, 0xf80e, 0xf80f,
+ 0xf810, 0xf811, 0xf812, 0xf813, 0xf814, 0xf815, 0xf816, 0xf817,
+ 0xf818, 0xf819, 0xf81a, 0xf81b, 0xf81c, 0xf81d, 0xf81e, 0xf81f,
+ 0xf820, 0xf821, 0xf822, 0xf823, 0xf824, 0xf825, 0xf826, 0xf827,
+ 0xf828, 0xf829, 0xf82a, 0xf82b, 0xf82c, 0xf82d, 0xf82e, 0xf82f,
+ 0xf830, 0xf831, 0xf832, 0xf833, 0xf834, 0xf835, 0xf836, 0xf837,
+ 0xf838, 0xf839, 0xf83a, 0xf83b, 0xf83c, 0xf83d, 0xf83e, 0xf83f,
+ 0xf840, 0xf841, 0xf842, 0xf843, 0xf844, 0xf845, 0xf846, 0xf847, /* 0xf840 */
+ 0xf848, 0xf849, 0xf84a, 0xf84b, 0xf84c, 0xf84d, 0xf84e, 0xf84f,
+ 0xf850, 0xf851, 0xf852, 0xf853, 0xf854, 0xf855, 0xf856, 0xf857,
+ 0xf858, 0xf859, 0xf85a, 0xf85b, 0xf85c, 0xf85d, 0xf85e, 0xf85f,
+ 0xf860, 0xf861, 0xf862, 0xf863, 0xf864, 0xf865, 0xf866, 0xf867,
+ 0xf868, 0xf869, 0xf86a, 0xf86b, 0xf86c, 0xf86d, 0xf86e, 0xf86f,
+ 0xf870, 0xf871, 0xf872, 0xf873, 0xf874, 0xf875, 0xf876, 0xf877,
+ 0xf878, 0xf879, 0xf87a, 0xf87b, 0xf87c, 0xf87d, 0xf87e, 0xf87f,
+ 0xf880, 0xf881, 0xf882, 0xf883, 0xf884, 0xf885, 0xf886, 0xf887, /* 0xf880 */
+ 0xf888, 0xf889, 0xf88a, 0xf88b, 0xf88c, 0xf88d, 0xf88e, 0xf88f,
+ 0xf890, 0xf891, 0xf892, 0xf893, 0xf894, 0xf895, 0xf896, 0xf897,
+ 0xf898, 0xf899, 0xf89a, 0xf89b, 0xf89c, 0xf89d, 0xf89e, 0xf89f,
+ 0xf8a0, 0xf8a1, 0xf8a2, 0xf8a3, 0xf8a4, 0xf8a5, 0xf8a6, 0xf8a7,
+ 0xf8a8, 0xf8a9, 0xf8aa, 0xf8ab, 0xf8ac, 0xf8ad, 0xf8ae, 0xf8af,
+ 0xf8b0, 0xf8b1, 0xf8b2, 0xf8b3, 0xf8b4, 0xf8b5, 0xf8b6, 0xf8b7,
+ 0xf8b8, 0xf8b9, 0xf8ba, 0xf8bb, 0xf8bc, 0xf8bd, 0xf8be, 0xf8bf,
+ 0xf8c0, 0xf8c1, 0xf8c2, 0xf8c3, 0xf8c4, 0xf8c5, 0xf8c6, 0xf8c7, /* 0xf8c0 */
+ 0xf8c8, 0xf8c9, 0xf8ca, 0xf8cb, 0xf8cc, 0xf8cd, 0xf8ce, 0xf8cf,
+ 0xf8d0, 0xf8d1, 0xf8d2, 0xf8d3, 0xf8d4, 0xf8d5, 0xf8d6, 0xf8d7,
+ 0xf8d8, 0xf8d9, 0xf8da, 0xf8db, 0xf8dc, 0xf8dd, 0xf8de, 0xf8df,
+ 0xf8e0, 0xf8e1, 0xf8e2, 0xf8e3, 0xf8e4, 0xf8e5, 0xf8e6, 0xf8e7,
+ 0xf8e8, 0xf8e9, 0xf8ea, 0xf8eb, 0xf8ec, 0xf8ed, 0xf8ee, 0xf8ef,
+ 0xf8f0, 0xf8f1, 0xf8f2, 0xf8f3, 0xf8f4, 0xf8f5, 0xf8f6, 0xf8f7,
+ 0xf8f8, 0xf8f9, 0xf8fa, 0xf8fb, 0xf8fc, 0xf8fd, 0xf8fe, 0xf8ff,
+ 0xf900, 0xf901, 0xf902, 0xf903, 0xf904, 0xf905, 0xf906, 0xf907, /* 0xf900 */
+ 0xf908, 0xf909, 0xf90a, 0xf90b, 0xf90c, 0xf90d, 0xf90e, 0xf90f,
+ 0xf910, 0xf911, 0xf912, 0xf913, 0xf914, 0xf915, 0xf916, 0xf917,
+ 0xf918, 0xf919, 0xf91a, 0xf91b, 0xf91c, 0xf91d, 0xf91e, 0xf91f,
+ 0xf920, 0xf921, 0xf922, 0xf923, 0xf924, 0xf925, 0xf926, 0xf927,
+ 0xf928, 0xf929, 0xf92a, 0xf92b, 0xf92c, 0xf92d, 0xf92e, 0xf92f,
+ 0xf930, 0xf931, 0xf932, 0xf933, 0xf934, 0xf935, 0xf936, 0xf937,
+ 0xf938, 0xf939, 0xf93a, 0xf93b, 0xf93c, 0xf93d, 0xf93e, 0xf93f,
+ 0xf940, 0xf941, 0xf942, 0xf943, 0xf944, 0xf945, 0xf946, 0xf947, /* 0xf940 */
+ 0xf948, 0xf949, 0xf94a, 0xf94b, 0xf94c, 0xf94d, 0xf94e, 0xf94f,
+ 0xf950, 0xf951, 0xf952, 0xf953, 0xf954, 0xf955, 0xf956, 0xf957,
+ 0xf958, 0xf959, 0xf95a, 0xf95b, 0xf95c, 0xf95d, 0xf95e, 0xf95f,
+ 0xf960, 0xf961, 0xf962, 0xf963, 0xf964, 0xf965, 0xf966, 0xf967,
+ 0xf968, 0xf969, 0xf96a, 0xf96b, 0xf96c, 0xf96d, 0xf96e, 0xf96f,
+ 0xf970, 0xf971, 0xf972, 0xf973, 0xf974, 0xf975, 0xf976, 0xf977,
+ 0xf978, 0xf979, 0xf97a, 0xf97b, 0xf97c, 0xf97d, 0xf97e, 0xf97f,
+ 0xf980, 0xf981, 0xf982, 0xf983, 0xf984, 0xf985, 0xf986, 0xf987, /* 0xf980 */
+ 0xf988, 0xf989, 0xf98a, 0xf98b, 0xf98c, 0xf98d, 0xf98e, 0xf98f,
+ 0xf990, 0xf991, 0xf992, 0xf993, 0xf994, 0xf995, 0xf996, 0xf997,
+ 0xf998, 0xf999, 0xf99a, 0xf99b, 0xf99c, 0xf99d, 0xf99e, 0xf99f,
+ 0xf9a0, 0xf9a1, 0xf9a2, 0xf9a3, 0xf9a4, 0xf9a5, 0xf9a6, 0xf9a7,
+ 0xf9a8, 0xf9a9, 0xf9aa, 0xf9ab, 0xf9ac, 0xf9ad, 0xf9ae, 0xf9af,
+ 0xf9b0, 0xf9b1, 0xf9b2, 0xf9b3, 0xf9b4, 0xf9b5, 0xf9b6, 0xf9b7,
+ 0xf9b8, 0xf9b9, 0xf9ba, 0xf9bb, 0xf9bc, 0xf9bd, 0xf9be, 0xf9bf,
+ 0xf9c0, 0xf9c1, 0xf9c2, 0xf9c3, 0xf9c4, 0xf9c5, 0xf9c6, 0xf9c7, /* 0xf9c0 */
+ 0xf9c8, 0xf9c9, 0xf9ca, 0xf9cb, 0xf9cc, 0xf9cd, 0xf9ce, 0xf9cf,
+ 0xf9d0, 0xf9d1, 0xf9d2, 0xf9d3, 0xf9d4, 0xf9d5, 0xf9d6, 0xf9d7,
+ 0xf9d8, 0xf9d9, 0xf9da, 0xf9db, 0xf9dc, 0xf9dd, 0xf9de, 0xf9df,
+ 0xf9e0, 0xf9e1, 0xf9e2, 0xf9e3, 0xf9e4, 0xf9e5, 0xf9e6, 0xf9e7,
+ 0xf9e8, 0xf9e9, 0xf9ea, 0xf9eb, 0xf9ec, 0xf9ed, 0xf9ee, 0xf9ef,
+ 0xf9f0, 0xf9f1, 0xf9f2, 0xf9f3, 0xf9f4, 0xf9f5, 0xf9f6, 0xf9f7,
+ 0xf9f8, 0xf9f9, 0xf9fa, 0xf9fb, 0xf9fc, 0xf9fd, 0xf9fe, 0xf9ff,
+ 0xfa00, 0xfa01, 0xfa02, 0xfa03, 0xfa04, 0xfa05, 0xfa06, 0xfa07, /* 0xfa00 */
+ 0xfa08, 0xfa09, 0xfa0a, 0xfa0b, 0xfa0c, 0xfa0d, 0xfa0e, 0xfa0f,
+ 0xfa10, 0xfa11, 0xfa12, 0xfa13, 0xfa14, 0xfa15, 0xfa16, 0xfa17,
+ 0xfa18, 0xfa19, 0xfa1a, 0xfa1b, 0xfa1c, 0xfa1d, 0xfa1e, 0xfa1f,
+ 0xfa20, 0xfa21, 0xfa22, 0xfa23, 0xfa24, 0xfa25, 0xfa26, 0xfa27,
+ 0xfa28, 0xfa29, 0xfa2a, 0xfa2b, 0xfa2c, 0xfa2d, 0xfa2e, 0xfa2f,
+ 0xfa30, 0xfa31, 0xfa32, 0xfa33, 0xfa34, 0xfa35, 0xfa36, 0xfa37,
+ 0xfa38, 0xfa39, 0xfa3a, 0xfa3b, 0xfa3c, 0xfa3d, 0xfa3e, 0xfa3f,
+ 0xfa40, 0xfa41, 0xfa42, 0xfa43, 0xfa44, 0xfa45, 0xfa46, 0xfa47, /* 0xfa40 */
+ 0xfa48, 0xfa49, 0xfa4a, 0xfa4b, 0xfa4c, 0xfa4d, 0xfa4e, 0xfa4f,
+ 0xfa50, 0xfa51, 0xfa52, 0xfa53, 0xfa54, 0xfa55, 0xfa56, 0xfa57,
+ 0xfa58, 0xfa59, 0xfa5a, 0xfa5b, 0xfa5c, 0xfa5d, 0xfa5e, 0xfa5f,
+ 0xfa60, 0xfa61, 0xfa62, 0xfa63, 0xfa64, 0xfa65, 0xfa66, 0xfa67,
+ 0xfa68, 0xfa69, 0xfa6a, 0xfa6b, 0xfa6c, 0xfa6d, 0x0000, 0x0000,
+ 0xfa70, 0xfa71, 0xfa72, 0xfa73, 0xfa74, 0xfa75, 0xfa76, 0xfa77,
+ 0xfa78, 0xfa79, 0xfa7a, 0xfa7b, 0xfa7c, 0xfa7d, 0xfa7e, 0xfa7f,
+ 0xfa80, 0xfa81, 0xfa82, 0xfa83, 0xfa84, 0xfa85, 0xfa86, 0xfa87, /* 0xfa80 */
+ 0xfa88, 0xfa89, 0xfa8a, 0xfa8b, 0xfa8c, 0xfa8d, 0xfa8e, 0xfa8f,
+ 0xfa90, 0xfa91, 0xfa92, 0xfa93, 0xfa94, 0xfa95, 0xfa96, 0xfa97,
+ 0xfa98, 0xfa99, 0xfa9a, 0xfa9b, 0xfa9c, 0xfa9d, 0xfa9e, 0xfa9f,
+ 0xfaa0, 0xfaa1, 0xfaa2, 0xfaa3, 0xfaa4, 0xfaa5, 0xfaa6, 0xfaa7,
+ 0xfaa8, 0xfaa9, 0xfaaa, 0xfaab, 0xfaac, 0xfaad, 0xfaae, 0xfaaf,
+ 0xfab0, 0xfab1, 0xfab2, 0xfab3, 0xfab4, 0xfab5, 0xfab6, 0xfab7,
+ 0xfab8, 0xfab9, 0xfaba, 0xfabb, 0xfabc, 0xfabd, 0xfabe, 0xfabf,
+ 0xfac0, 0xfac1, 0xfac2, 0xfac3, 0xfac4, 0xfac5, 0xfac6, 0xfac7, /* 0xfac0 */
+ 0xfac8, 0xfac9, 0xfaca, 0xfacb, 0xfacc, 0xfacd, 0xface, 0xfacf,
+ 0xfad0, 0xfad1, 0xfad2, 0xfad3, 0xfad4, 0xfad5, 0xfad6, 0xfad7,
+ 0xfad8, 0xfad9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xfb00, 0xfb01, 0xfb02, 0xfb03, 0xfb04, 0xfb05, 0xfb06, 0x0000, /* 0xfb00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xfb13, 0xfb14, 0xfb15, 0xfb16, 0xfb17,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb1d, 0xfb1e, 0xfb1f,
+ 0xfb20, 0xfb21, 0xfb22, 0xfb23, 0xfb24, 0xfb25, 0xfb26, 0xfb27,
+ 0xfb28, 0xfb29, 0xfb2a, 0xfb2b, 0xfb2c, 0xfb2d, 0xfb2e, 0xfb2f,
+ 0xfb30, 0xfb31, 0xfb32, 0xfb33, 0xfb34, 0xfb35, 0xfb36, 0x0000,
+ 0xfb38, 0xfb39, 0xfb3a, 0xfb3b, 0xfb3c, 0x0000, 0xfb3e, 0x0000,
+ 0xfb40, 0xfb41, 0x0000, 0xfb43, 0xfb44, 0x0000, 0xfb46, 0xfb47, /* 0xfb40 */
+ 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e, 0xfb4f,
+ 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56, 0xfb57,
+ 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d, 0xfb5e, 0xfb5f,
+ 0xfb60, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66, 0xfb67,
+ 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e, 0xfb6f,
+ 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76, 0xfb77,
+ 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xfb7e, 0xfb7f,
+ 0xfb80, 0xfb81, 0xfb82, 0xfb83, 0xfb84, 0xfb85, 0xfb86, 0xfb87, /* 0xfb80 */
+ 0xfb88, 0xfb89, 0xfb8a, 0xfb8b, 0xfb8c, 0xfb8d, 0xfb8e, 0xfb8f,
+ 0xfb90, 0xfb91, 0xfb92, 0xfb93, 0xfb94, 0xfb95, 0xfb96, 0xfb97,
+ 0xfb98, 0xfb99, 0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d, 0xfb9e, 0xfb9f,
+ 0xfba0, 0xfba1, 0xfba2, 0xfba3, 0xfba4, 0xfba5, 0xfba6, 0xfba7,
+ 0xfba8, 0xfba9, 0xfbaa, 0xfbab, 0xfbac, 0xfbad, 0xfbae, 0xfbaf,
+ 0xfbb0, 0xfbb1, 0xfbb2, 0xfbb3, 0xfbb4, 0xfbb5, 0xfbb6, 0xfbb7,
+ 0xfbb8, 0xfbb9, 0xfbba, 0xfbbb, 0xfbbc, 0xfbbd, 0xfbbe, 0xfbbf,
+ 0xfbc0, 0xfbc1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfbc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6, 0xfbd7,
+ 0xfbd8, 0xfbd9, 0xfbda, 0xfbdb, 0xfbdc, 0xfbdd, 0xfbde, 0xfbdf,
+ 0xfbe0, 0xfbe1, 0xfbe2, 0xfbe3, 0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7,
+ 0xfbe8, 0xfbe9, 0xfbea, 0xfbeb, 0xfbec, 0xfbed, 0xfbee, 0xfbef,
+ 0xfbf0, 0xfbf1, 0xfbf2, 0xfbf3, 0xfbf4, 0xfbf5, 0xfbf6, 0xfbf7,
+ 0xfbf8, 0xfbf9, 0xfbfa, 0xfbfb, 0xfbfc, 0xfbfd, 0xfbfe, 0xfbff,
+ 0xfc00, 0xfc01, 0xfc02, 0xfc03, 0xfc04, 0xfc05, 0xfc06, 0xfc07, /* 0xfc00 */
+ 0xfc08, 0xfc09, 0xfc0a, 0xfc0b, 0xfc0c, 0xfc0d, 0xfc0e, 0xfc0f,
+ 0xfc10, 0xfc11, 0xfc12, 0xfc13, 0xfc14, 0xfc15, 0xfc16, 0xfc17,
+ 0xfc18, 0xfc19, 0xfc1a, 0xfc1b, 0xfc1c, 0xfc1d, 0xfc1e, 0xfc1f,
+ 0xfc20, 0xfc21, 0xfc22, 0xfc23, 0xfc24, 0xfc25, 0xfc26, 0xfc27,
+ 0xfc28, 0xfc29, 0xfc2a, 0xfc2b, 0xfc2c, 0xfc2d, 0xfc2e, 0xfc2f,
+ 0xfc30, 0xfc31, 0xfc32, 0xfc33, 0xfc34, 0xfc35, 0xfc36, 0xfc37,
+ 0xfc38, 0xfc39, 0xfc3a, 0xfc3b, 0xfc3c, 0xfc3d, 0xfc3e, 0xfc3f,
+ 0xfc40, 0xfc41, 0xfc42, 0xfc43, 0xfc44, 0xfc45, 0xfc46, 0xfc47, /* 0xfc40 */
+ 0xfc48, 0xfc49, 0xfc4a, 0xfc4b, 0xfc4c, 0xfc4d, 0xfc4e, 0xfc4f,
+ 0xfc50, 0xfc51, 0xfc52, 0xfc53, 0xfc54, 0xfc55, 0xfc56, 0xfc57,
+ 0xfc58, 0xfc59, 0xfc5a, 0xfc5b, 0xfc5c, 0xfc5d, 0xfc5e, 0xfc5f,
+ 0xfc60, 0xfc61, 0xfc62, 0xfc63, 0xfc64, 0xfc65, 0xfc66, 0xfc67,
+ 0xfc68, 0xfc69, 0xfc6a, 0xfc6b, 0xfc6c, 0xfc6d, 0xfc6e, 0xfc6f,
+ 0xfc70, 0xfc71, 0xfc72, 0xfc73, 0xfc74, 0xfc75, 0xfc76, 0xfc77,
+ 0xfc78, 0xfc79, 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfc7f,
+ 0xfc80, 0xfc81, 0xfc82, 0xfc83, 0xfc84, 0xfc85, 0xfc86, 0xfc87, /* 0xfc80 */
+ 0xfc88, 0xfc89, 0xfc8a, 0xfc8b, 0xfc8c, 0xfc8d, 0xfc8e, 0xfc8f,
+ 0xfc90, 0xfc91, 0xfc92, 0xfc93, 0xfc94, 0xfc95, 0xfc96, 0xfc97,
+ 0xfc98, 0xfc99, 0xfc9a, 0xfc9b, 0xfc9c, 0xfc9d, 0xfc9e, 0xfc9f,
+ 0xfca0, 0xfca1, 0xfca2, 0xfca3, 0xfca4, 0xfca5, 0xfca6, 0xfca7,
+ 0xfca8, 0xfca9, 0xfcaa, 0xfcab, 0xfcac, 0xfcad, 0xfcae, 0xfcaf,
+ 0xfcb0, 0xfcb1, 0xfcb2, 0xfcb3, 0xfcb4, 0xfcb5, 0xfcb6, 0xfcb7,
+ 0xfcb8, 0xfcb9, 0xfcba, 0xfcbb, 0xfcbc, 0xfcbd, 0xfcbe, 0xfcbf,
+ 0xfcc0, 0xfcc1, 0xfcc2, 0xfcc3, 0xfcc4, 0xfcc5, 0xfcc6, 0xfcc7, /* 0xfcc0 */
+ 0xfcc8, 0xfcc9, 0xfcca, 0xfccb, 0xfccc, 0xfccd, 0xfcce, 0xfccf,
+ 0xfcd0, 0xfcd1, 0xfcd2, 0xfcd3, 0xfcd4, 0xfcd5, 0xfcd6, 0xfcd7,
+ 0xfcd8, 0xfcd9, 0xfcda, 0xfcdb, 0xfcdc, 0xfcdd, 0xfcde, 0xfcdf,
+ 0xfce0, 0xfce1, 0xfce2, 0xfce3, 0xfce4, 0xfce5, 0xfce6, 0xfce7,
+ 0xfce8, 0xfce9, 0xfcea, 0xfceb, 0xfcec, 0xfced, 0xfcee, 0xfcef,
+ 0xfcf0, 0xfcf1, 0xfcf2, 0xfcf3, 0xfcf4, 0xfcf5, 0xfcf6, 0xfcf7,
+ 0xfcf8, 0xfcf9, 0xfcfa, 0xfcfb, 0xfcfc, 0xfcfd, 0xfcfe, 0xfcff,
+ 0xfd00, 0xfd01, 0xfd02, 0xfd03, 0xfd04, 0xfd05, 0xfd06, 0xfd07, /* 0xfd00 */
+ 0xfd08, 0xfd09, 0xfd0a, 0xfd0b, 0xfd0c, 0xfd0d, 0xfd0e, 0xfd0f,
+ 0xfd10, 0xfd11, 0xfd12, 0xfd13, 0xfd14, 0xfd15, 0xfd16, 0xfd17,
+ 0xfd18, 0xfd19, 0xfd1a, 0xfd1b, 0xfd1c, 0xfd1d, 0xfd1e, 0xfd1f,
+ 0xfd20, 0xfd21, 0xfd22, 0xfd23, 0xfd24, 0xfd25, 0xfd26, 0xfd27,
+ 0xfd28, 0xfd29, 0xfd2a, 0xfd2b, 0xfd2c, 0xfd2d, 0xfd2e, 0xfd2f,
+ 0xfd30, 0xfd31, 0xfd32, 0xfd33, 0xfd34, 0xfd35, 0xfd36, 0xfd37,
+ 0xfd38, 0xfd39, 0xfd3a, 0xfd3b, 0xfd3c, 0xfd3d, 0xfd3e, 0xfd3f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfd40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54, 0xfd55, 0xfd56, 0xfd57,
+ 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c, 0xfd5d, 0xfd5e, 0xfd5f,
+ 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64, 0xfd65, 0xfd66, 0xfd67,
+ 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c, 0xfd6d, 0xfd6e, 0xfd6f,
+ 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74, 0xfd75, 0xfd76, 0xfd77,
+ 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c, 0xfd7d, 0xfd7e, 0xfd7f,
+ 0xfd80, 0xfd81, 0xfd82, 0xfd83, 0xfd84, 0xfd85, 0xfd86, 0xfd87, /* 0xfd80 */
+ 0xfd88, 0xfd89, 0xfd8a, 0xfd8b, 0xfd8c, 0xfd8d, 0xfd8e, 0xfd8f,
+ 0x0000, 0x0000, 0xfd92, 0xfd93, 0xfd94, 0xfd95, 0xfd96, 0xfd97,
+ 0xfd98, 0xfd99, 0xfd9a, 0xfd9b, 0xfd9c, 0xfd9d, 0xfd9e, 0xfd9f,
+ 0xfda0, 0xfda1, 0xfda2, 0xfda3, 0xfda4, 0xfda5, 0xfda6, 0xfda7,
+ 0xfda8, 0xfda9, 0xfdaa, 0xfdab, 0xfdac, 0xfdad, 0xfdae, 0xfdaf,
+ 0xfdb0, 0xfdb1, 0xfdb2, 0xfdb3, 0xfdb4, 0xfdb5, 0xfdb6, 0xfdb7,
+ 0xfdb8, 0xfdb9, 0xfdba, 0xfdbb, 0xfdbc, 0xfdbd, 0xfdbe, 0xfdbf,
+ 0xfdc0, 0xfdc1, 0xfdc2, 0xfdc3, 0xfdc4, 0xfdc5, 0xfdc6, 0xfdc7, /* 0xfdc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xfdf0, 0xfdf1, 0xfdf2, 0xfdf3, 0xfdf4, 0xfdf5, 0xfdf6, 0xfdf7,
+ 0xfdf8, 0xfdf9, 0xfdfa, 0xfdfb, 0xfdfc, 0xfdfd, 0x0000, 0x0000,
+ 0xfe00, 0xfe01, 0xfe02, 0xfe03, 0xfe04, 0xfe05, 0xfe06, 0xfe07, /* 0xfe00 */
+ 0xfe08, 0xfe09, 0xfe0a, 0xfe0b, 0xfe0c, 0xfe0d, 0xfe0e, 0xfe0f,
+ 0xfe10, 0xfe11, 0xfe12, 0xfe13, 0xfe14, 0xfe15, 0xfe16, 0xfe17,
+ 0xfe18, 0xfe19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xfe20, 0xfe21, 0xfe22, 0xfe23, 0xfe24, 0xfe25, 0xfe26, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xfe30, 0xfe31, 0xfe32, 0xfe33, 0xfe34, 0xfe35, 0xfe36, 0xfe37,
+ 0xfe38, 0xfe39, 0xfe3a, 0xfe3b, 0xfe3c, 0xfe3d, 0xfe3e, 0xfe3f,
+ 0xfe40, 0xfe41, 0xfe42, 0xfe43, 0xfe44, 0xfe45, 0xfe46, 0xfe47, /* 0xfe40 */
+ 0xfe48, 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f,
+ 0xfe50, 0xfe51, 0xfe52, 0x0000, 0xfe54, 0xfe55, 0xfe56, 0xfe57,
+ 0xfe58, 0xfe59, 0xfe5a, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f,
+ 0xfe60, 0xfe61, 0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0x0000,
+ 0xfe68, 0xfe69, 0xfe6a, 0xfe6b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xfe70, 0xfe71, 0xfe72, 0xfe73, 0xfe74, 0x0000, 0xfe76, 0xfe77,
+ 0xfe78, 0xfe79, 0xfe7a, 0xfe7b, 0xfe7c, 0xfe7d, 0xfe7e, 0xfe7f,
+ 0xfe80, 0xfe81, 0xfe82, 0xfe83, 0xfe84, 0xfe85, 0xfe86, 0xfe87, /* 0xfe80 */
+ 0xfe88, 0xfe89, 0xfe8a, 0xfe8b, 0xfe8c, 0xfe8d, 0xfe8e, 0xfe8f,
+ 0xfe90, 0xfe91, 0xfe92, 0xfe93, 0xfe94, 0xfe95, 0xfe96, 0xfe97,
+ 0xfe98, 0xfe99, 0xfe9a, 0xfe9b, 0xfe9c, 0xfe9d, 0xfe9e, 0xfe9f,
+ 0xfea0, 0xfea1, 0xfea2, 0xfea3, 0xfea4, 0xfea5, 0xfea6, 0xfea7,
+ 0xfea8, 0xfea9, 0xfeaa, 0xfeab, 0xfeac, 0xfead, 0xfeae, 0xfeaf,
+ 0xfeb0, 0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4, 0xfeb5, 0xfeb6, 0xfeb7,
+ 0xfeb8, 0xfeb9, 0xfeba, 0xfebb, 0xfebc, 0xfebd, 0xfebe, 0xfebf,
+ 0xfec0, 0xfec1, 0xfec2, 0xfec3, 0xfec4, 0xfec5, 0xfec6, 0xfec7, /* 0xfec0 */
+ 0xfec8, 0xfec9, 0xfeca, 0xfecb, 0xfecc, 0xfecd, 0xfece, 0xfecf,
+ 0xfed0, 0xfed1, 0xfed2, 0xfed3, 0xfed4, 0xfed5, 0xfed6, 0xfed7,
+ 0xfed8, 0xfed9, 0xfeda, 0xfedb, 0xfedc, 0xfedd, 0xfede, 0xfedf,
+ 0xfee0, 0xfee1, 0xfee2, 0xfee3, 0xfee4, 0xfee5, 0xfee6, 0xfee7,
+ 0xfee8, 0xfee9, 0xfeea, 0xfeeb, 0xfeec, 0xfeed, 0xfeee, 0xfeef,
+ 0xfef0, 0xfef1, 0xfef2, 0xfef3, 0xfef4, 0xfef5, 0xfef6, 0xfef7,
+ 0xfef8, 0xfef9, 0xfefa, 0xfefb, 0xfefc, 0x0000, 0x0000, 0xfeff,
+ 0x0000, 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, /* 0xff00 */
+ 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f,
+ 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17,
+ 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f,
+ 0xff20, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
+ 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
+ 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57,
+ 0xff58, 0xff59, 0xff5a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f,
+ 0xff40, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, /* 0xff40 */
+ 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
+ 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57,
+ 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xff5e, 0xff5f,
+ 0xff60, 0xff61, 0xff62, 0xff63, 0xff64, 0xff65, 0xff66, 0xff67,
+ 0xff68, 0xff69, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f,
+ 0xff70, 0xff71, 0xff72, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77,
+ 0xff78, 0xff79, 0xff7a, 0xff7b, 0xff7c, 0xff7d, 0xff7e, 0xff7f,
+ 0xff80, 0xff81, 0xff82, 0xff83, 0xff84, 0xff85, 0xff86, 0xff87, /* 0xff80 */
+ 0xff88, 0xff89, 0xff8a, 0xff8b, 0xff8c, 0xff8d, 0xff8e, 0xff8f,
+ 0xff90, 0xff91, 0xff92, 0xff93, 0xff94, 0xff95, 0xff96, 0xff97,
+ 0xff98, 0xff99, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0xff9e, 0xff9f,
+ 0xffa0, 0xffa1, 0xffa2, 0xffa3, 0xffa4, 0xffa5, 0xffa6, 0xffa7,
+ 0xffa8, 0xffa9, 0xffaa, 0xffab, 0xffac, 0xffad, 0xffae, 0xffaf,
+ 0xffb0, 0xffb1, 0xffb2, 0xffb3, 0xffb4, 0xffb5, 0xffb6, 0xffb7,
+ 0xffb8, 0xffb9, 0xffba, 0xffbb, 0xffbc, 0xffbd, 0xffbe, 0x0000,
+ 0x0000, 0x0000, 0xffc2, 0xffc3, 0xffc4, 0xffc5, 0xffc6, 0xffc7, /* 0xffc0 */
+ 0x0000, 0x0000, 0xffca, 0xffcb, 0xffcc, 0xffcd, 0xffce, 0xffcf,
+ 0x0000, 0x0000, 0xffd2, 0xffd3, 0xffd4, 0xffd5, 0xffd6, 0xffd7,
+ 0x0000, 0x0000, 0xffda, 0xffdb, 0xffdc, 0x0000, 0x0000, 0x0000,
+ 0xffe0, 0xffe1, 0xffe2, 0xffe3, 0xffe4, 0xffe5, 0xffe6, 0x0000,
+ 0xffe8, 0xffe9, 0xffea, 0xffeb, 0xffec, 0xffed, 0xffee, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xfff9, 0xfffa, 0xfffb, 0xfffc, 0xfffd, 0x0000, 0x0000
+};
+
+const unsigned short ____tomirror[] = { 0,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0029, 0x0028, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x003e, 0x0000, 0x003c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x005d, 0x0000, 0x005b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x007d, 0x0000, 0x007b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x00bb, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x00ab, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x00c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x01c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x02c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x03c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x04c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x05c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x06c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x07c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x09c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0a00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0a40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0a80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0ac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0b00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0b40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0b80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0bc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0c00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0c40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0c80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0cc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0d00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0d40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0d80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0dc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0e00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0e40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0e80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0ec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0f00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0f40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0f80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0fc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x10c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x11c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x13c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x14c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x15c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x17c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x18c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x19c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1a00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1a40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1a80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1ac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1b00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1b40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1b80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1bc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1c00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1c40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1c80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1cc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1d00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1d40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1d80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1dc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1e00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1e40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1e80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1ec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1f00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1f40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1f80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x1fc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x203a, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2046, 0x2045, 0x0000, /* 0x2040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x207e, 0x207d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x208e, 0x208d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x20c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x21c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x22c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2300 */
+ 0x2309, 0x2308, 0x230b, 0x230a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x232a, 0x2329, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x23c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x24c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x25c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x26c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x27c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x28c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x29c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2a00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2a40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2a80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2ac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2b00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2b40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2b80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2bc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2c00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2c40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2c80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2cc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2d00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2d40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2d80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2dc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2e00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2e40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2e80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2ec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2f00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2f40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2f80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x2fc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3000 */
+ 0x3009, 0x3008, 0x300b, 0x300a, 0x300d, 0x300c, 0x300f, 0x300e,
+ 0x3011, 0x3010, 0x0000, 0x0000, 0x3015, 0x3014, 0x3017, 0x3016,
+ 0x3019, 0x3018, 0x301b, 0x301a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x30c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x31c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x32c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x33c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x34c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x35c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x36c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x37c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x38c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x39c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3a00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3a40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3a80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3ac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3b00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3b40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3b80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3bc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3c00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3c40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3c80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3cc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3d00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3d40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3d80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3dc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3e00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3e40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3e80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3ec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3f00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3f40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3f80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x3fc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x40c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x41c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x42c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x43c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x44c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x45c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x46c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x47c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x48c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x49c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4a00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4a40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4a80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4ac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4b00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4b40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4b80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4bc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4c00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4c40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4c80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4cc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4d00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4d40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4d80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4dc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4e00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4e40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4e80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4ec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4f00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4f40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4f80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x4fc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x50c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x51c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x52c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x53c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x54c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x55c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x56c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x57c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x58c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x59c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5a00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5a40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5a80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5ac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5b00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5b40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5b80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5bc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5c00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5c40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5c80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5cc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5d00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5d40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5d80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5dc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5e00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5e40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5e80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5ec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5f00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5f40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5f80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x5fc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x60c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x61c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x62c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x63c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x64c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x65c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x66c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x67c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x68c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x69c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6a00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6a40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6a80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6ac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6b00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6b40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6b80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6bc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6c00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6c40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6c80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6cc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6d00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6d40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6d80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6dc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6e00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6e40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6e80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6ec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6f00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6f40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6f80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x6fc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x70c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x71c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x72c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x73c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x74c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x75c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x76c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x77c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x78c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x79c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7a00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7a40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7a80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7ac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7b00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7b40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7b80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7bc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7c00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7c40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7c80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7cc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7d00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7d40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7d80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7dc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7e00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7e40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7e80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7ec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7f00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7f40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7f80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x7fc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x80c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x81c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x82c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x83c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x84c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x85c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x86c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x87c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x88c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x89c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8a00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8a40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8a80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8ac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8b00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8b40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8b80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8bc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8c00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8c40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8c80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8cc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8d00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8d40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8d80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8dc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8e00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8e40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8e80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8ec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8f00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8f40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8f80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x8fc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x90c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x91c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x92c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x93c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x94c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x95c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x96c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x97c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x98c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x99c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9a00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9a40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9a80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9ac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9b00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9b40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9b80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9bc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9c00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9c40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9c80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9cc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9d00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9d40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9d80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9dc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9e00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9e40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9e80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9ec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9f00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9f40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9f80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x9fc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa0c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa1c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa2c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa3c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa4c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa5c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa6c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa7c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa8c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xa9c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xaa00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xaa40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xaa80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xaac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xab00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xab40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xab80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xabc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xac00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xac40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xac80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xacc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xad00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xad40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xad80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xadc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xae00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xae40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xae80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xaec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xaf00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xaf40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xaf80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xafc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb0c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb1c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb2c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb3c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb4c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb5c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb6c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb7c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb8c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xb9c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xba00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xba40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xba80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbb00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbb40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbb80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbbc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbc00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbc40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbc80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbcc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbd00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbd40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbd80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbdc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbe00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbe40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbe80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbf00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbf40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbf80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xbfc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc0c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc1c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc2c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc3c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc4c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc5c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc6c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc7c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc8c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xc9c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xca00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xca40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xca80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcb00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcb40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcb80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcbc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcc00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcc40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcc80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xccc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcd00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcd40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcd80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcdc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xce00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xce40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xce80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcf00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcf40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcf80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xcfc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd0c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd1c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd2c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd3c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd4c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd5c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd6c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd7c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd8c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xd9c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xda00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xda40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xda80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdb00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdb40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdb80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdbc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdc00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdc40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdc80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdcc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdd00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdd40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdd80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xddc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xde00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xde40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xde80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdf00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdf40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdf80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xdfc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe0c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe1c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe2c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe3c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe4c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe5c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe6c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe7c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe8c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xe9c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xea00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xea40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xea80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xeac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xeb00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xeb40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xeb80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xebc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xec00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xec40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xec80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xecc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xed00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xed40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xed80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xedc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xee00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xee40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xee80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xeec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xef00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xef40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xef80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xefc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf000 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf040 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf080 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf0c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf140 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf180 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf1c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf200 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf240 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf280 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf2c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf300 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf340 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf380 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf3c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf400 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf440 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf480 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf4c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf500 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf540 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf580 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf5c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf600 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf640 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf680 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf6c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf700 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf740 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf780 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf7c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf800 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf840 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf880 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf8c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf900 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf940 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf980 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xf9c0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfa00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfa40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfa80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfac0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfb00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfb40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfb80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfbc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfc00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfc40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfc80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfcc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfd00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfd40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfd80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfdc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfe00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfe40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfe80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xfec0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xff00 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xff40 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xff80 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0xffc0 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+const uint32 ____utype[] = { 0,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, /* 0x0000 */
+ 0x00080000, 0x00020010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00020010, 0x00000020, 0x00000000, 0x00004000, 0x00004000, 0x00004000, 0x00000000, 0x00000000,
+ 0x00080000, 0x00000000, 0x00000000, 0x00001000, 0x00002020, 0x00021000, 0x00002020, 0x00102000,
+ 0x00000448, 0x00000448, 0x00000448, 0x00000448, 0x00000448, 0x00000448, 0x00000448, 0x00000448,
+ 0x00000448, 0x00000448, 0x00002020, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000020,
+ 0x00000000, 0x00200142, 0x00200142, 0x00200142, 0x00200142, 0x00200142, 0x00200142, 0x00200102, /* 0x0040 */
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00200141, 0x00200141, 0x00200141, 0x00200141, 0x00200141, 0x00200141, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00080000, 0x00020000, 0x00040000, 0x00000000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00000010, 0x00080000, 0x00080000, /* 0x0080 */
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x180c2010, 0x00080000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00000000, 0x00000000,
+ 0x10000000, 0x00000000, 0x10200100, 0x00000000, 0x00000000, 0x00020000, 0x00000000, 0x10000000,
+ 0x00004000, 0x00004000, 0x10000400, 0x10000400, 0x10010000, 0x10200101, 0x00000000, 0x00000000,
+ 0x10000000, 0x10000400, 0x10200100, 0x00000000, 0x10000000, 0x10000000, 0x10000000, 0x00080000,
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00200102, 0x10200102, /* 0x00c0 */
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102,
+ 0x00200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00000000,
+ 0x00200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00200102, 0x00200101,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00200101, 0x10200101,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101,
+ 0x00200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000,
+ 0x00200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00200101, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, /* 0x0100 */
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102,
+ 0x10200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, /* 0x0140 */
+ 0x10200101, 0x10200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200101,
+ 0x00200101, 0x00200102, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200102, /* 0x0180 */
+ 0x00200101, 0x00200102, 0x00200102, 0x00200102, 0x00200101, 0x00200101, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200101, 0x00200102, 0x00200102, 0x00200101, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200101, 0x00200101, 0x00200101, 0x00200102, 0x00200102, 0x00200101, 0x00200102,
+ 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200102,
+ 0x00200101, 0x00200102, 0x00200101, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x10200102,
+ 0x10200101, 0x00200102, 0x00200102, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102,
+ 0x00200102, 0x00200101, 0x00200101, 0x00200100, 0x00200102, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x10200102, 0x10200104, 0x10200101, 0x10200102, /* 0x01c0 */
+ 0x10200104, 0x10200101, 0x10200102, 0x10200104, 0x10200101, 0x10200102, 0x10200101, 0x10200102,
+ 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102,
+ 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200101, 0x10200102, 0x10200104, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200102,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, /* 0x0200 */
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200102, 0x00200102, 0x00200101, 0x00200102, 0x00200102, 0x00200101,
+ 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200101, /* 0x0240 */
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, /* 0x0280 */
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200100, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x00000000, 0x00000000, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x02c0 */
+ 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x00000000, 0x00010000,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, /* 0x0300 */
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x10088000, 0x10088000, 0x00088000, 0x10088000, 0x10088000, 0x00288000, 0x00088000, 0x00088000, /* 0x0340 */
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x000c8000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x000c0000, 0x000c8000, 0x000c8000, 0x000c8000,
+ 0x000c8000, 0x000c8000, 0x000c8000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x10000000, 0x00000000, 0x00200102, 0x00200101,
+ 0x00000000, 0x00000000, 0x10000100, 0x00200101, 0x00200101, 0x00200101, 0x10000020, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10200102, 0x10000020, /* 0x0380 */
+ 0x10200102, 0x10200102, 0x10200102, 0x00000000, 0x10200102, 0x00000000, 0x10200102, 0x10200102,
+ 0x10200101, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00000000, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x10200102, 0x10200102, 0x10200101, 0x10200101, 0x10200101, 0x10200101,
+ 0x10200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, /* 0x03c0 */
+ 0x00200101, 0x00200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00200102,
+ 0x10200101, 0x10200101, 0x10200102, 0x10200102, 0x10200102, 0x10200101, 0x10200101, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x10200101, 0x10200101, 0x10200101, 0x00200101, 0x10200102, 0x10200101, 0x00000000, 0x00200102,
+ 0x00200101, 0x10200102, 0x00200102, 0x00200101, 0x00200101, 0x00200102, 0x00200102, 0x00200102,
+ 0x10200102, 0x10200102, 0x00200102, 0x10200102, 0x00200102, 0x00200102, 0x00200102, 0x10200102, /* 0x0400 */
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x10200102, 0x10200102, 0x10200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x10200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x10200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, /* 0x0440 */
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x10200101, 0x10200101, 0x00200101, 0x10200101, 0x00200101, 0x00200101, 0x00200101, 0x10200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x10200101, 0x10200101, 0x10200101, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00000100, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, /* 0x0480 */
+ 0x00080000, 0x00080000, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, /* 0x04c0 */
+ 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101,
+ 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200101,
+ 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, /* 0x0500 */
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, /* 0x0540 */
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00000000,
+ 0x00000000, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000000, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x10200101, /* 0x0580 */
+ 0x00000000, 0x00000120, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00004000,
+ 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00020200, 0x00280000,
+ 0x00000200, 0x00280000, 0x00280000, 0x00000220, 0x00280000, 0x00280000, 0x00000200, 0x00280000, /* 0x05c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200200, 0x00200200, 0x00200200, 0x00000200, 0x00000200, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000800, 0x00000800, 0x00000800, 0x00000800, 0x00000800, 0x00000000, 0x00000000, 0x00000000, /* 0x0600 */
+ 0x00000200, 0x00004000, 0x00004000, 0x00000200, 0x00002020, 0x00000200, 0x00000000, 0x00000000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00000220, 0x00080200, 0x00000000, 0x00000200, 0x00000220,
+ 0x00200200, 0x00200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00000200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, /* 0x0640 */
+ 0x00200200, 0x00200200, 0x00200200, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00080000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808,
+ 0x00000808, 0x00000808, 0x00004000, 0x00000800, 0x00000800, 0x00000200, 0x00200200, 0x00200200,
+ 0x00280000, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x10200200, 0x10200200, 0x10200200,
+ 0x10200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, /* 0x0680 */
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x10200200, 0x00200200, 0x10200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, /* 0x06c0 */
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x10200200, 0x00000220, 0x00200200, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000800, 0x00000000, 0x00080000,
+ 0x00080000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000200, 0x00000200, 0x00280000,
+ 0x00280000, 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x00280000, 0x00200200, 0x00200200,
+ 0x00000408, 0x00000408, 0x00000408, 0x00000408, 0x00000408, 0x00000408, 0x00000408, 0x00000408,
+ 0x00000408, 0x00000408, 0x00200200, 0x00200200, 0x00200200, 0x00000200, 0x00000200, 0x00200200,
+ 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, /* 0x0700 */
+ 0x00000220, 0x00000220, 0x00000220, 0x00000200, 0x00000220, 0x00000200, 0x00000000, 0x00000200,
+ 0x00200200, 0x00280000, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, /* 0x0740 */
+ 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, /* 0x0780 */
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00200200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000208, 0x00000208, 0x00000208, 0x00000208, 0x00000208, 0x00000208, 0x00000208, 0x00000208, /* 0x07c0 */
+ 0x00000208, 0x00000208, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00000200, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000020, 0x00000020, 0x00000200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, /* 0x0800 */
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00280000, 0x00280000,
+ 0x00080000, 0x00080000, 0x00000200, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000200, 0x00280000, 0x00280000, 0x00280000,
+ 0x00000200, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00080000, 0x00000000, 0x00000000,
+ 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220,
+ 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000000,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, /* 0x0840 */
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00000220, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x0880 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200200, 0x00000000, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200,
+ 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x08c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x0900 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00280000, 0x00280100, 0x00080000, 0x00200100, 0x00280100, 0x00280100,
+ 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, /* 0x0940 */
+ 0x00280000, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00080000, 0x00280100, 0x00280100,
+ 0x00200100, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00280000, 0x00280000, 0x00280000,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00020120, 0x00020120, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000100, 0x00000100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000000, 0x00280000, 0x00280100, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, /* 0x0980 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00200100,
+ 0x00200100, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00080000, 0x00200100, 0x00280100, 0x00280100,
+ 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00280100, /* 0x09c0 */
+ 0x00280100, 0x00000000, 0x00000000, 0x10280100, 0x10280100, 0x00080000, 0x00200100, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x00000000, 0x10200100,
+ 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00200100, 0x00200100, 0x00004000, 0x00004000, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00280000, 0x00280000, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, /* 0x0a00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200100,
+ 0x00200100, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x10200100, 0x00000000, 0x00200100, 0x10200100, 0x00000000,
+ 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00080000, 0x00000000, 0x00280100, 0x00280100,
+ 0x00280100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280000, /* 0x0a40 */
+ 0x00280000, 0x00000000, 0x00000000, 0x00280000, 0x00280000, 0x00080000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00280000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x10200100, 0x10200100, 0x10200100, 0x00200100, 0x00000000, 0x10200100, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00280000, 0x00280000, 0x00200100, 0x00200100, 0x00200100, 0x00280000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00280000, 0x00280000, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, /* 0x0a80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100,
+ 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00080000, 0x00200100, 0x00280100, 0x00280100,
+ 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000000, 0x00280000, /* 0x0ac0 */
+ 0x00280000, 0x00280100, 0x00000000, 0x00280100, 0x00280100, 0x00080000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000100, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00280000, 0x00280100, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, /* 0x0b00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00200100,
+ 0x00200100, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00080000, 0x00200100, 0x00280100, 0x00280000,
+ 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00280100, /* 0x0b40 */
+ 0x10280100, 0x00000000, 0x00000000, 0x10280100, 0x10280100, 0x00080000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280000, 0x00280100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x00000000, 0x00200100,
+ 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000100, 0x00200100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00280000, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, /* 0x0b80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00000000, 0x00000000,
+ 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00200100, 0x00200100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280100, 0x00280100,
+ 0x00280000, 0x00280100, 0x00280100, 0x00000000, 0x00000000, 0x00000000, 0x00280100, 0x00280100, /* 0x0bc0 */
+ 0x00280100, 0x00000000, 0x10280100, 0x10280100, 0x10280100, 0x00080000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00280100, 0x00280100, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, /* 0x0c00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00000000, 0x00280000, 0x00280000, /* 0x0c40 */
+ 0x10280000, 0x00000000, 0x00280000, 0x00280000, 0x00280000, 0x00080000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280000, 0x00280000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100,
+ 0x00000000, 0x00000000, 0x00280100, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, /* 0x0c80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00080000, 0x00200100, 0x00280100, 0x00280100,
+ 0x10280100, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00000000, 0x00280100, 0x10280100, /* 0x0cc0 */
+ 0x10280100, 0x00000000, 0x10280100, 0x10280100, 0x00280000, 0x00080000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280100, 0x00280100, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00000000,
+ 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00280100, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, /* 0x0d00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00200100, 0x00280100, 0x00280100,
+ 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000000, 0x00280100, 0x00280100, /* 0x0d40 */
+ 0x00280100, 0x00000000, 0x10280100, 0x10280100, 0x10280100, 0x00080000, 0x00200100, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000000, 0x00000000, 0x00280100, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, /* 0x0d80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, /* 0x0dc0 */
+ 0x00000000, 0x00000000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280100,
+ 0x00280100, 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00000000, 0x00280000, 0x00000000,
+ 0x00280100, 0x00280100, 0x10280100, 0x00280100, 0x10280100, 0x10280100, 0x10280100, 0x00280100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00280100, 0x00280100, 0x00000100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x0e00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200000, 0x00200100, 0x10200100, 0x00200000, 0x00200000, 0x00200000, 0x00200000,
+ 0x00200000, 0x00200000, 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00004000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000100, 0x00000000, /* 0x0e40 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00000000, 0x00000100,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00020120, 0x00020120, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00000000, 0x00200100, /* 0x0e80 */
+ 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00000000, 0x00200100, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00200100,
+ 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200000, 0x00200100, 0x10200100, 0x00200000, 0x00200000, 0x00200000, 0x00200000,
+ 0x00200000, 0x00200000, 0x00000000, 0x00200000, 0x00200000, 0x00200100, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000100, 0x00000000, /* 0x0ec0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00000000, 0x00000000,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x00200100, 0x00200100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00010100, 0x00010100, 0x00010100, 0x00010100, 0x00000100, 0x00010100, 0x00010100, /* 0x0f00 */
+ 0x000c0120, 0x00010100, 0x00010100, 0x00020100, 0x100c0100, 0x00000120, 0x00000120, 0x00000120,
+ 0x00000120, 0x00000120, 0x000c0120, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00080000, 0x00080000, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00020100, 0x00080000, 0x00000100, 0x00080000,
+ 0x00000100, 0x00080000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080100, 0x00080100,
+ 0x00200100, 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x0f40 */
+ 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x10200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00280000, 0x00280000, 0x10280000, 0x00280000, 0x10280000, 0x10280000, 0x10280000,
+ 0x10280000, 0x10280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00220100,
+ 0x00280000, 0x10280000, 0x00080000, 0x00080000, 0x00080000, 0x00020100, 0x00080000, 0x00080000, /* 0x0f80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x10280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00000000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x10280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x10280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x10280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x10280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x10280000, 0x00280000, 0x00280000, 0x00280000, 0x00000000, 0x00020100, 0x00020100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00080000, 0x00000100, /* 0x0fc0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000100, 0x00000100,
+ 0x00010100, 0x00010100, 0x00020100, 0x00010100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x000c0100, 0x000c0100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1000 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x10200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200000, 0x00200000, 0x00200000,
+ 0x00200000, 0x00200100, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00000000,
+ 0x00200100, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200000, 0x00200000, 0x00200100,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, /* 0x1040 */
+ 0x00000108, 0x00000108, 0x00020120, 0x00020120, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200000, 0x00200000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200000, 0x00200000,
+ 0x00200000, 0x00200100, 0x00200100, 0x00000100, 0x00000100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200000, 0x00200100, 0x00200100, 0x00200000, 0x00200000, 0x00000100, /* 0x1080 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00200100, 0x00000100,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000100, 0x00000100, 0x00200100, 0x00200000, 0x00000100, 0x00000100,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00000000, 0x00200102, /* 0x10c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200102, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00000100, 0x10000100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1100 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1140 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1180 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x11c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1200 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1240 */
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1280 */
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, /* 0x12c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1300 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1340 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00080000, 0x00080000, 0x00280000,
+ 0x00000100, 0x00020120, 0x00000120, 0x00000120, 0x00000120, 0x00000120, 0x00000120, 0x00000120,
+ 0x00000120, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1380 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x13c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00020000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1400 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1440 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1480 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x14c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1500 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1540 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1580 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x15c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1600 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1640 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000120, 0x00000120, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00020010, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1680 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00080000, 0x00040000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x16c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00020120, 0x00020120, 0x00020120, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1700 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00080000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00080000, 0x00020100, 0x00020100, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1740 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100,
+ 0x00200100, 0x00000000, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1780 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00200100, 0x00200000,
+ 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200000, 0x00200100, /* 0x17c0 */
+ 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020120, 0x00020120, 0x00040120, 0x00000100,
+ 0x00020100, 0x00000100, 0x00020120, 0x00004000, 0x00200100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000020, 0x00000020, 0x00020020, 0x00020020, 0x00010000, 0x00000000, /* 0x1800 */
+ 0x00000020, 0x00000020, 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x000c0000, 0x00000000,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00000100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1840 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1880 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00280000, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x18c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1900 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280000,
+ 0x00280000, 0x00280100, 0x00280100, 0x00280100, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00280100, 0x00280100, 0x00280000, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280100,
+ 0x00280100, 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000020, 0x00000108, 0x00000108, /* 0x1940 */
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1980 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x19c0 */
+ 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1a00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280000,
+ 0x00280000, 0x00280100, 0x00280100, 0x00280000, 0x00000000, 0x00000000, 0x00000100, 0x00000100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1a40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200000, 0x00200100,
+ 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00000000,
+ 0x00000000, 0x00200100, 0x00200000, 0x00200100, 0x00200100, 0x00200000, 0x00200000, 0x00200000,
+ 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200000, 0x00200000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00088000,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, /* 0x1a80 */
+ 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000120, 0x00000120, 0x00000120, 0x00000120, 0x00000100, 0x00000100, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x1ac0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280100, 0x00200100, 0x10200100, 0x00200100, /* 0x1b00 */
+ 0x10200100, 0x00200100, 0x10200100, 0x00200100, 0x10200100, 0x00200100, 0x10200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00080000, 0x00280100, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x10280100, 0x00280000, 0x10280100, 0x00280100, 0x00280100,
+ 0x10280100, 0x10280100, 0x00280000, 0x10280100, 0x00080100, 0x00200100, 0x00200100, 0x00200100, /* 0x1b40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00020120, 0x00020120, 0x00000100, 0x00020120, 0x00020120, 0x00020120,
+ 0x00020100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00280000, 0x00280000, 0x00280100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1b80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280100, 0x00280100,
+ 0x00280000, 0x00280000, 0x00080100, 0x00080000, 0x00280100, 0x00280100, 0x00200100, 0x00200100,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1bc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00080000, 0x00280100,
+ 0x00280000, 0x00280000, 0x00280100, 0x00280100, 0x00280100, 0x00280000, 0x00280100, 0x00280000,
+ 0x00280000, 0x00280000, 0x00080100, 0x00080100, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x1c00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280100, 0x00280100, 0x00280100, 0x00280100,
+ 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280100, 0x00280100, 0x00080000, 0x00080000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00020120, 0x00020120, 0x00020120, 0x00020120, 0x00020120,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, /* 0x1c40 */
+ 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00020120, 0x00020120,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x1c80 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0x1cc0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00000100, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080100, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00080000, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00280100, 0x00280100, 0x00080000, 0x00200100, 0x00200100, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, /* 0x1d00 */
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x10000100, 0x10000100, 0x10000100, 0x00000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x00000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, /* 0x1d40 */
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x00000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x10000100, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, /* 0x1d80 */
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, /* 0x1dc0 */
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00088000, 0x00088000, 0x00088000,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, /* 0x1e00 */
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, /* 0x1e40 */
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, /* 0x1e80 */
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200101, 0x10200101,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00200101, 0x00200101, 0x00200102, 0x00200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, /* 0x1ec0 */
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101,
+ 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, /* 0x1f00 */
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x00000000,
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00000000, 0x00000000,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101,
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101,
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x00000000, /* 0x1f40 */
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00000000, 0x00000000,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101,
+ 0x00000000, 0x10200102, 0x00000000, 0x10200102, 0x00000000, 0x10200102, 0x00000000, 0x10200102,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101,
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x00000000,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, /* 0x1f80 */
+ 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101,
+ 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101,
+ 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x10200101, 0x10200101,
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200104, 0x10000000, 0x10200101, 0x10000000,
+ 0x10000000, 0x10000000, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x10200101, 0x10200101, /* 0x1fc0 */
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200104, 0x10000000, 0x10000000, 0x10000000,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x00000000, 0x10200101, 0x10200101,
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00000000, 0x10000000, 0x10000000, 0x10000000,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101,
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10000000, 0x10000000, 0x10000000,
+ 0x00000000, 0x00000000, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x10200101, 0x10200101,
+ 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200104, 0x10010000, 0x10000000, 0x00000000,
+ 0x10020010, 0x10020010, 0x10020010, 0x10020010, 0x10020010, 0x10020010, 0x10020010, 0x100c0010, /* 0x2000 */
+ 0x10020010, 0x10020010, 0x10020010, 0x00020080, 0x00080080, 0x00080080, 0x00080110, 0x00080210,
+ 0x00020000, 0x180c0000, 0x00020000, 0x00020000, 0x00030000, 0x00000000, 0x00000000, 0x10000000,
+ 0x00000000, 0x00000000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000, 0x00020000,
+ 0x00000010, 0x00000010, 0x00088180, 0x00080200, 0x00080000, 0x00080100, 0x00080200, 0x180c2010,
+ 0x00004000, 0x00004000, 0x00004000, 0x10004000, 0x10004000, 0x00000000, 0x10000000, 0x10000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10040020, 0x00040020, 0x10000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00002000, 0x00080000, 0x00040000, 0x10040020, /* 0x2040 */
+ 0x10040020, 0x10040020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020000, 0x10000000,
+ 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00000000, 0x00020000, 0x00020000, 0x10020010,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x10000400, 0x10000100, 0x00000000, 0x00000000, 0x10000400, 0x10000400, 0x10000400, 0x10000400,
+ 0x10000400, 0x10000400, 0x10001000, 0x10001000, 0x10000000, 0x10080000, 0x10040000, 0x10000100,
+ 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, /* 0x2080 */
+ 0x10000400, 0x10000400, 0x10001000, 0x10001000, 0x10000000, 0x10080000, 0x10040000, 0x00000000,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000,
+ 0x10004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000,
+ 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000,
+ 0x00004000, 0x00004000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x20c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00080000, 0x00080000, 0x00080000,
+ 0x00080000, 0x00088000, 0x00080000, 0x00080000, 0x00080000, 0x00088000, 0x00088000, 0x00080000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10000000, 0x10000000, 0x10200102, 0x10000000, 0x00000000, 0x10000000, 0x10000000, 0x10200102, /* 0x2100 */
+ 0x00000000, 0x10000000, 0x10200101, 0x10200102, 0x10200102, 0x10200102, 0x10200101, 0x10200101,
+ 0x10200102, 0x10200102, 0x10200102, 0x10200101, 0x00000000, 0x10200102, 0x10000000, 0x00000000,
+ 0x00000000, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00000000, 0x00000000,
+ 0x10000000, 0x10000000, 0x10000000, 0x00000000, 0x10200102, 0x00000000, 0x10200102, 0x00000000,
+ 0x10200102, 0x00000000, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00004000, 0x10200101,
+ 0x10200102, 0x10200102, 0x00200102, 0x10200102, 0x10200101, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200101, 0x00000000, 0x10000000, 0x10200101, 0x10200101, 0x10200102, 0x10200102,
+ 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10200102, 0x10200101, 0x10200101, /* 0x2140 */
+ 0x10200101, 0x10200101, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200101, 0x00000100,
+ 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000,
+ 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00200102, 0x00200101, 0x00000100, 0x00000100, 0x00000100, /* 0x2180 */
+ 0x00000100, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x21c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2200 */
+ 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00001000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x10000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x00000000, 0x10000000,
+ 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x10000000, /* 0x2240 */
+ 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000,
+ 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x00000000, 0x00000000,
+ 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x00000000, 0x00000000, /* 0x2280 */
+ 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x22c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2300 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x10080000, 0x10040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0x2340 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2380 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x23c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2400 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2440 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000,
+ 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000,
+ 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000,
+ 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000,
+ 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, /* 0x2480 */
+ 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400,
+ 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400,
+ 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100,
+ 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, /* 0x24c0 */
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2500 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2540 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2580 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x25c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2600 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030000, 0x00030000, 0x00000000, 0x00000000,
+ 0x00030000, 0x00000000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2640 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2680 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, /* 0x26c0 */
+ 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030000, 0x00000000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00000000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00030000, 0x00000000, 0x00000000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00000000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, /* 0x2700 */
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2740 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000,
+ 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2780 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00040000, 0x00000000, /* 0x27c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00040000,
+ 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0x2800 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0x2840 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0x2880 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0x28c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2900 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2940 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, /* 0x2980 */
+ 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000,
+ 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000,
+ 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x29c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00040000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2a00 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2a40 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2a80 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2ac0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2b00 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2b40 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2b80 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2bc0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, /* 0x2c00 */
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00000000,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, /* 0x2c40 */
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00000000,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200102, 0x00200102, 0x00200101, 0x00200101, 0x00200102,
+ 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200101, 0x00200102, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x10000100, 0x10000100, 0x00200102, 0x00200102,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, /* 0x2c80 */
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, /* 0x2cc0 */
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200101, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00088000,
+ 0x00088000, 0x00088000, 0x00200102, 0x00200101, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00020000, 0x00020000, 0x00020000, 0x00000000, 0x00000000, 0x00020000,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, /* 0x2d00 */
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00000000, 0x00200101,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200101, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x2d40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000100,
+ 0x00020100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0x2d80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, /* 0x2dc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2e00 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020000, 0x00020000,
+ 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00000000, 0x00020000,
+ 0x00080000, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000,
+ 0x00080000, 0x00040000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00000020, 0x00000000,
+ 0x00020000, 0x00020000, 0x00000000, 0x00020000, 0x00020000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x2e40 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, /* 0x2e80 */
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00000000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x10030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, /* 0x2ec0 */
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x10030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, /* 0x2f00 */
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, /* 0x2f40 */
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, /* 0x2f80 */
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, /* 0x2fc0 */
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10020010, 0x00040020, 0x00040020, 0x00030000, 0x00030000, 0x00040100, 0x00630100, 0x00430100, /* 0x3000 */
+ 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000,
+ 0x00080000, 0x00040000, 0x00030000, 0x00030000, 0x00080000, 0x00040000, 0x00080000, 0x00040000,
+ 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00040000, 0x00080000, 0x00040000, 0x00040000,
+ 0x00030000, 0x00430100, 0x00430100, 0x00430100, 0x00430100, 0x00430100, 0x00430100, 0x00430100,
+ 0x00430100, 0x00430100, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080100, 0x00080100,
+ 0x00030000, 0x00030100, 0x00030100, 0x00030100, 0x00030100, 0x00080100, 0x10030000, 0x00030000,
+ 0x10430100, 0x10430100, 0x10430100, 0x00040100, 0x00240100, 0x00030000, 0x00030000, 0x00030000,
+ 0x00000000, 0x00200100, 0x00230100, 0x00200100, 0x00230100, 0x00200100, 0x00230100, 0x00200100, /* 0x3040 */
+ 0x00230100, 0x00200100, 0x00230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100,
+ 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100,
+ 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100,
+ 0x10230100, 0x00230100, 0x10230100, 0x00200100, 0x00230100, 0x10230100, 0x00230100, 0x10230100,
+ 0x00230100, 0x10230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x10230100, 0x10230100, 0x00230100, 0x10230100, 0x10230100, 0x00230100, 0x10230100, 0x10230100,
+ 0x00230100, 0x10230100, 0x10230100, 0x00230100, 0x10230100, 0x10230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00200100, 0x00230100, 0x00200100, 0x00230100, 0x00200100, /* 0x3080 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00200100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x10230100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00000000, 0x00088000, 0x00088000, 0x10040000, 0x10040000, 0x00040100, 0x10040100, 0x10230100,
+ 0x00040000, 0x00200100, 0x00230100, 0x00200100, 0x00230100, 0x00200100, 0x00230100, 0x00200100,
+ 0x00230100, 0x00200100, 0x00230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100,
+ 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100,
+ 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100,
+ 0x10230100, 0x00230100, 0x10230100, 0x00200100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, /* 0x30c0 */
+ 0x00230100, 0x10230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x10230100, 0x10230100, 0x00230100, 0x10230100, 0x10230100, 0x00230100, 0x10230100, 0x10230100,
+ 0x00230100, 0x10230100, 0x10230100, 0x00230100, 0x10230100, 0x10230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00200100, 0x00230100, 0x00200100, 0x00230100, 0x00200100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00200100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x10230100, 0x00200100, 0x00200100, 0x10230100,
+ 0x10230100, 0x10230100, 0x10230100, 0x00040000, 0x00000100, 0x00040100, 0x10040100, 0x10230100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230100, 0x00230100, 0x00230100, /* 0x3100 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00000000, 0x00000000,
+ 0x00000000, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100,
+ 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100,
+ 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, /* 0x3140 */
+ 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100,
+ 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100,
+ 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100,
+ 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100,
+ 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100,
+ 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100,
+ 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100,
+ 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, /* 0x3180 */
+ 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x00000000,
+ 0x00030100, 0x00030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, /* 0x31c0 */
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, /* 0x3200 */
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030000, 0x10030000, 0x00000000,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, /* 0x3240 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030000, 0x10030000, 0x10030000, 0x00030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, /* 0x3280 */
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, /* 0x32c0 */
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x00000000,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, /* 0x3300 */
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, /* 0x3340 */
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, /* 0x3380 */
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, /* 0x33c0 */
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030000, 0x10030000,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100,
+ 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030000,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3400 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3440 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3480 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x34c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3500 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3540 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3580 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x35c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3600 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3640 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3680 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x36c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3700 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3740 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3780 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x37c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3800 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3840 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3880 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x38c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3900 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3940 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3980 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x39c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3a00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3a40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3a80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3ac0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3b00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3b40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3b80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3bc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3c00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3c40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3c80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3cc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3d00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3d40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3d80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3dc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3e00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3e40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3e80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3ec0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3f00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3f40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3f80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x3fc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4000 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4040 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4080 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x40c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4100 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4140 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4180 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x41c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4200 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4240 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4280 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x42c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4300 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4340 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4380 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x43c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4400 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4440 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4480 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x44c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4500 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4540 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4580 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x45c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4600 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4640 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4680 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x46c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4700 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4740 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4780 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x47c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4800 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4840 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4880 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x48c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4900 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4940 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4980 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x49c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4a00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4a40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4a80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4ac0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4b00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4b40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4b80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4bc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4c00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4c40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4c80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4cc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4d00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4d40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4d80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0x4dc0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4e00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4e40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4e80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4ec0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4f00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4f40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4f80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x4fc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5000 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5040 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5080 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x50c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5100 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5140 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5180 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x51c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5200 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5240 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5280 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x52c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5300 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5340 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5380 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x53c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5400 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5440 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5480 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x54c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5500 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5540 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5580 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x55c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5600 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5640 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5680 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x56c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5700 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5740 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5780 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x57c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5800 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5840 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5880 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x58c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5900 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5940 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5980 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x59c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5a00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5a40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5a80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5ac0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5b00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5b40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5b80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5bc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5c00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5c40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5c80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5cc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5d00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5d40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5d80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5dc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5e00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5e40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5e80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5ec0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5f00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5f40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5f80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x5fc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6000 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6040 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6080 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x60c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6100 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6140 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6180 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x61c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6200 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6240 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6280 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x62c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6300 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6340 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6380 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x63c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6400 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6440 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6480 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x64c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6500 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6540 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6580 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x65c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6600 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6640 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6680 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x66c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6700 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6740 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6780 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x67c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6800 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6840 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6880 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x68c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6900 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6940 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6980 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x69c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6a00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6a40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6a80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6ac0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6b00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6b40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6b80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6bc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6c00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6c40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6c80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6cc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6d00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6d40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6d80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6dc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6e00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6e40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6e80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6ec0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6f00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6f40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6f80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x6fc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7000 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7040 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7080 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x70c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7100 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7140 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7180 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x71c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7200 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7240 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7280 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x72c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7300 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7340 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7380 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x73c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7400 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7440 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7480 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x74c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7500 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7540 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7580 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x75c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7600 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7640 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7680 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x76c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7700 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7740 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7780 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x77c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7800 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7840 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7880 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x78c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7900 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7940 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7980 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x79c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7a00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7a40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7a80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7ac0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7b00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7b40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7b80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7bc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7c00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7c40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7c80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7cc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7d00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7d40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7d80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7dc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7e00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7e40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7e80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7ec0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7f00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7f40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7f80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x7fc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8000 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8040 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8080 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x80c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8100 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8140 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8180 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x81c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8200 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8240 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8280 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x82c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8300 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8340 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8380 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x83c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8400 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8440 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8480 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x84c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8500 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8540 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8580 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x85c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8600 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8640 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8680 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x86c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8700 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8740 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8780 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x87c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8800 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8840 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8880 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x88c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8900 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8940 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8980 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x89c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8a00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8a40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8a80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8ac0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8b00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8b40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8b80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8bc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8c00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8c40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8c80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8cc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8d00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8d40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8d80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8dc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8e00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8e40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8e80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8ec0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8f00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8f40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8f80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x8fc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9000 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9040 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9080 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x90c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9100 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9140 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9180 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x91c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9200 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9240 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9280 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x92c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9300 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9340 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9380 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x93c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9400 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9440 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9480 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x94c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9500 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9540 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9580 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x95c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9600 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9640 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9680 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x96c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9700 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9740 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9780 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x97c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9800 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9840 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9880 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x98c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9900 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9940 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9980 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x99c0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9a00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9a40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9a80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9ac0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9b00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9b40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9b80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9bc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9c00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9c40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9c80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9cc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9d00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9d40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9d80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9dc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9e00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9e40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9e80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9ec0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9f00 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9f40 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9f80 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, /* 0x9fc0 */
+ 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa000 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00040100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa040 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa080 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa0c0 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa100 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa140 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa180 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa1c0 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa200 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa240 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa280 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa2c0 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa300 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa340 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa380 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa3c0 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa400 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa440 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100,
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, /* 0xa480 */
+ 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, /* 0xa4c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00020120, 0x00020120,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xa500 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xa540 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xa580 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xa5c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xa600 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000100, 0x00020020, 0x00000020, 0x00020020,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, /* 0xa640 */
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200100, 0x00088000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00088000, 0x00088000, 0x00000000, 0x00000000,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, /* 0xa680 */
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xa6c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00088000, 0x00088000, 0x00000100, 0x00020120, 0x00020120, 0x00020120, 0x00020120, 0x00020120,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0xa700 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200101, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, /* 0xa740 */
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x10000100, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101,
+ 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, /* 0xa780 */
+ 0x00000000, 0x00000100, 0x00000100, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00000000,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101,
+ 0x00200102, 0x00200101, 0x00200102, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0xa7c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10000100, 0x10000100, 0x00200101, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00080000, 0x00200100, 0x00200100, 0x00200100, 0x00080000, 0x00200100, /* 0xa800 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00080000, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00280100, 0x00280100, 0x00280000, 0x00280000, 0x00280100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00004000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xa840 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00010000, 0x00010000, 0x00000020, 0x00000020,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00280100, 0x00280100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xa880 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280100, 0x00280100, 0x00280100, 0x00280100,
+ 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280100,
+ 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00080000, 0x00000000, 0x00000000, 0x00000000, /* 0xa8c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020120, 0x00020120,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000,
+ 0x00088000, 0x00088000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, /* 0xa900 */
+ 0x00000108, 0x00000108, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00080000, 0x00080000, 0x00080000, 0x00020100, 0x00020120,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280000, /* 0xa940 */
+ 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280100, 0x00080100, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00280000, 0x00280000, 0x00280000, 0x00280100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xa980 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00080000, 0x00280100, 0x00280100, 0x00280000, 0x00280000,
+ 0x00280000, 0x00280000, 0x00280100, 0x00280100, 0x00280000, 0x00280100, 0x00280100, 0x00280100,
+ 0x00080100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00020120, /* 0xa9c0 */
+ 0x00020120, 0x00020120, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000100,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000100,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xaa00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280100,
+ 0x00280100, 0x00280000, 0x00280000, 0x00280100, 0x00280100, 0x00280000, 0x00280000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00280000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xaa40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280000, 0x00280100, 0x00000000, 0x00000000,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000100, 0x00020120, 0x00020120, 0x00020120,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00000100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00200100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xaa80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200000, 0x00200100, 0x00200000, 0x00200000, 0x00200000, 0x00200100, 0x00200100, 0x00200000,
+ 0x00200000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200000, 0x00000000,
+ 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0xaac0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00000100, 0x00000100, 0x00000120,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00280100, 0x00280000, 0x00280000, 0x00280100, 0x00280100,
+ 0x00020120, 0x00020120, 0x00200100, 0x00000100, 0x00000100, 0x00280100, 0x00080000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, /* 0xab00 */
+ 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0xab40 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0xab80 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xabc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00280100, 0x00280100, 0x00280000, 0x00280100, 0x00280100,
+ 0x00280000, 0x00280100, 0x00280100, 0x00020120, 0x00080100, 0x00080000, 0x00000000, 0x00000000,
+ 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108,
+ 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xac00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xac40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xac80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xacc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xad00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xad40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xad80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xadc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xae00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xae40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xae80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xaec0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xaf00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xaf40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xaf80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xafc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb000 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb040 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb080 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb0c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb100 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb140 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb180 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb1c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb200 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb240 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb280 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb2c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb300 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb340 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb380 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb3c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb400 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb440 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb480 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb4c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb500 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb540 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb580 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb5c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb600 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb640 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb680 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb6c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb700 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb740 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb780 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb7c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb800 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb840 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb880 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb8c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb900 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb940 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb980 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xb9c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xba00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xba40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xba80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbac0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbb00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbb40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbb80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbbc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbc00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbc40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbc80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbcc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbd00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbd40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbd80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbdc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbe00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbe40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbe80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbec0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbf00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbf40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbf80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xbfc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc000 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc040 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc080 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc0c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc100 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc140 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc180 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc1c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc200 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc240 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc280 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc2c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc300 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc340 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc380 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc3c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc400 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc440 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc480 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc4c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc500 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc540 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc580 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc5c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc600 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc640 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc680 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc6c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc700 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc740 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc780 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc7c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc800 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc840 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc880 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc8c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc900 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc940 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc980 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xc9c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xca00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xca40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xca80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcac0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcb00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcb40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcb80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcbc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcc00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcc40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcc80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xccc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcd00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcd40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcd80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcdc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xce00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xce40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xce80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcec0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcf00 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcf40 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcf80 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xcfc0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd000 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd040 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd080 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd0c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd100 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd140 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd180 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd1c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd200 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd240 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd280 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd2c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd300 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd340 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd380 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd3c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd400 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd440 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd480 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd4c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd500 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd540 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd580 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd5c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd600 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd640 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd680 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd6c0 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd700 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd740 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, /* 0xd780 */
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, /* 0xd7c0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100,
+ 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xd800 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xd840 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xd880 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xd8c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xd900 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xd940 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xd980 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xd9c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xda00 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xda40 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xda80 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdac0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdb00 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdb40 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdb80 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdbc0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdc00 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdc40 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdc80 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdcc0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdd00 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdd40 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdd80 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xddc0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xde00 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xde40 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xde80 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdec0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdf00 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdf40 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdf80 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xdfc0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe000 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe040 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe080 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe0c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe100 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe140 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe180 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe1c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe200 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe240 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe280 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe2c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe300 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe340 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe380 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe3c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe400 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe440 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe480 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe4c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe500 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe540 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe580 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe5c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe600 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe640 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe680 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe6c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe700 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe740 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe780 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe7c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe800 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe840 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe880 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe8c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe900 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe940 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe980 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xe9c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xea00 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xea40 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xea80 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xeac0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xeb00 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xeb40 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xeb80 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xebc0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xec00 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xec40 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xec80 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xecc0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xed00 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xed40 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xed80 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xedc0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xee00 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xee40 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xee80 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xeec0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xef00 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xef40 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xef80 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xefc0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf000 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf040 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf080 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf0c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf100 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf140 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf180 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf1c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf200 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf240 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf280 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf2c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf300 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf340 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf380 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf3c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf400 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf440 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf480 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf4c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf500 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf540 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf580 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf5c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf600 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf640 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf680 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf6c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf700 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf740 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf780 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf7c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf800 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf840 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf880 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, /* 0xf8c0 */
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, /* 0xf900 */
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, /* 0xf940 */
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, /* 0xf980 */
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, /* 0xf9c0 */
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, /* 0xfa00 */
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x00630100, 0x00630100,
+ 0x10630100, 0x00630100, 0x10630100, 0x00630100, 0x00630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x00630100,
+ 0x10630100, 0x00630100, 0x10630100, 0x00630100, 0x00630100, 0x10630100, 0x10630100, 0x00630100,
+ 0x00630100, 0x00630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, /* 0xfa40 */
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x00030000, 0x00030000,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, /* 0xfa80 */
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, /* 0xfac0 */
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100,
+ 0x10630100, 0x10630100, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
+ 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, /* 0xfb00 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10200200, 0x00280000, 0x10200200,
+ 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200,
+ 0x10200200, 0x10001000, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200,
+ 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x00000000,
+ 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x00000000, 0x10200200, 0x00000000,
+ 0x10200200, 0x10200200, 0x00000000, 0x10200200, 0x10200200, 0x00000000, 0x10200200, 0x10200200, /* 0xfb40 */
+ 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200,
+ 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200,
+ 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200,
+ 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200,
+ 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200,
+ 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200,
+ 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200,
+ 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, /* 0xfb80 */
+ 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200,
+ 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200,
+ 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200,
+ 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200,
+ 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200,
+ 0x14200200, 0x12200200, 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0x00000200,
+ 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0x00000200,
+ 0x00000200, 0x00000200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0xfbc0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200,
+ 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x14200200, 0x12200200,
+ 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200,
+ 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200,
+ 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200,
+ 0x10a00200, 0x14200200, 0x12200200, 0x10a00200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, /* 0xfc00 */
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, /* 0xfc40 */
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, /* 0xfc80 */
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x10a00200,
+ 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200,
+ 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200,
+ 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200,
+ 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200,
+ 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200,
+ 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, /* 0xfcc0 */
+ 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200,
+ 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200,
+ 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x11200200,
+ 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200,
+ 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200,
+ 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, /* 0xfd00 */
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x10a00200, 0x10a00200, 0x10a00200,
+ 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x11200200, 0x11200200, 0x11200200, 0x11200200,
+ 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x12200200, 0x14200200, 0x00080000, 0x00040000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* 0xfd40 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10a00200, 0x12200200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200,
+ 0x12200200, 0x10a00200, 0x12200200, 0x12200200, 0x10a00200, 0x10a00200, 0x12200200, 0x12200200,
+ 0x10a00200, 0x10a00200, 0x12200200, 0x10a00200, 0x12200200, 0x10a00200, 0x12200200, 0x12200200,
+ 0x10a00200, 0x12200200, 0x12200200, 0x10a00200, 0x12200200, 0x10a00200, 0x12200200, 0x12200200,
+ 0x10a00200, 0x12200200, 0x10a00200, 0x10a00200, 0x12200200, 0x12200200, 0x12200200, 0x10a00200,
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x10a00200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x10a00200, 0x12200200, 0x12200200, 0x10a00200, 0x12200200, /* 0xfd80 */
+ 0x10a00200, 0x10a00200, 0x10a00200, 0x12200200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200,
+ 0x00000000, 0x00000000, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x12200200, 0x12200200,
+ 0x10a00200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x10a00200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x10a00200, 0x10a00200, 0x12200200, 0x12200200,
+ 0x10a00200, 0x12200200, 0x10a00200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200,
+ 0x12200200, 0x12200200, 0x12200200, 0x10a00200, 0x10a00200, 0x10a00200, 0x12200200, 0x12200200, /* 0xfdc0 */
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200,
+ 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14000200, 0x00000000, 0x00000000, 0x00000000,
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, /* 0xfe00 */
+ 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
+ 0x10000000, 0x10040000, 0x10040000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10080000,
+ 0x10040000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10080000, 0x10040000, 0x10080000,
+ 0x10040000, 0x10080000, 0x10040000, 0x10080000, 0x10040000, 0x10080000, 0x10040000, 0x10080000,
+ 0x10040000, 0x10080000, 0x10040000, 0x10080000, 0x10040000, 0x00030000, 0x00030000, 0x10080000, /* 0xfe40 */
+ 0x10040000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000,
+ 0x10042020, 0x10030020, 0x10042020, 0x00000000, 0x10040020, 0x10042020, 0x10000020, 0x10000020,
+ 0x10030000, 0x10080000, 0x10040000, 0x10080000, 0x10040000, 0x10080000, 0x10040000, 0x10034000,
+ 0x10030000, 0x10030000, 0x10031000, 0x10031000, 0x10030000, 0x10030000, 0x10030000, 0x00000000,
+ 0x10030000, 0x10004000, 0x10004000, 0x10030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x14200200, 0x11200200, 0x14200200, 0x00200200, 0x14200200, 0x00000000, 0x14200200, 0x11200200,
+ 0x14200200, 0x11200200, 0x14200200, 0x11200200, 0x14200200, 0x11200200, 0x14200200, 0x11200200,
+ 0x14200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, /* 0xfe80 */
+ 0x12200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200,
+ 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x10a00200,
+ 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200,
+ 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200,
+ 0x11200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200,
+ 0x12200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200,
+ 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200,
+ 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, /* 0xfec0 */
+ 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200,
+ 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200,
+ 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200,
+ 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200,
+ 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200,
+ 0x12200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200,
+ 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x00000000, 0x00000000, 0x08000080,
+ 0x00000000, 0x10000020, 0x10030000, 0x10034000, 0x10004000, 0x10004000, 0x10030000, 0x10030000, /* 0xff00 */
+ 0x10080000, 0x10040000, 0x10030000, 0x10031000, 0x10042020, 0x10031000, 0x10042020, 0x10032000,
+ 0x10030448, 0x10030448, 0x10030448, 0x10030448, 0x10030448, 0x10030448, 0x10030448, 0x10030448,
+ 0x10030448, 0x10030448, 0x10042020, 0x10040020, 0x10030000, 0x10030000, 0x10030000, 0x10000020,
+ 0x10030000, 0x10230142, 0x10230142, 0x10230142, 0x10230142, 0x10230142, 0x10230142, 0x10230102,
+ 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102,
+ 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102,
+ 0x10230102, 0x10230102, 0x10230102, 0x10080000, 0x10030000, 0x10040000, 0x10030000, 0x10030000,
+ 0x10030000, 0x10230141, 0x10230141, 0x10230141, 0x10230141, 0x10230141, 0x10230141, 0x10230101, /* 0xff40 */
+ 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101,
+ 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101,
+ 0x10230101, 0x10230101, 0x10230101, 0x10080000, 0x10030000, 0x10040000, 0x10030000, 0x10080000,
+ 0x10040000, 0x10040020, 0x10080000, 0x10040000, 0x10040020, 0x10040000, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10000100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, /* 0xff80 */
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10040100, 0x10040100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x00000000,
+ 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, /* 0xffc0 */
+ 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100,
+ 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x10200100, 0x00000000, 0x00000000, 0x00000000,
+ 0x10004000, 0x10004000, 0x10030000, 0x10030000, 0x10030000, 0x10004000, 0x10004000, 0x00000000,
+ 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/woff.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/woff.c
new file mode 100644
index 00000000000..7a6ca10fcc0
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/woff.c
@@ -0,0 +1,318 @@
+/* Copyright (C) 2010-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+/* Support for woff files */
+/* Which are defined here: http://people.mozilla.com/~jkew/woff/woff-2009-09-16.html */
+/* Basically sfnts with compressed tables and some more metadata */
+
+#include "fontforge.h"
+#include <math.h>
+#include <ctype.h>
+
+# include <zlib.h>
+
+static void copydata(FILE *to,int off_to,FILE *from,int off_from, int len) {
+ int ch, i;
+
+ fseek(to ,off_to ,SEEK_SET);
+ fseek(from,off_from,SEEK_SET);
+ for ( i=0; i<len; ++i ) {
+ ch = getc(from);
+ putc(ch,to);
+ }
+}
+
+#define CHUNK (128*1024)
+/* Copied with few mods from the zlib usage examples */
+
+static int compressOrNot(FILE *to,int off_to, FILE *from,int off_from,
+ int len, int forcecompress ) {
+ char in[CHUNK];
+ char out[CHUNK];
+ z_stream strm;
+ int ret, err=0;
+ int amount;
+ FILE *tmp;
+ int uncompLen = len;
+
+ /* Empty table, nothing to do */
+ if ( len==0 )
+return(0);
+
+ fseek(from,off_from,SEEK_SET);
+ memset(&strm,0,sizeof(strm));
+ ret = deflateInit(&strm,Z_DEFAULT_COMPRESSION);
+ if ( ret!=Z_OK ) {
+ fprintf( stderr,"Compression initialization failed.\n" );
+return(0);
+ }
+ tmp = tmpfile2();
+
+ do {
+ if ( len<=0 ) {
+ (void)deflateEnd(&strm);
+ break;
+ }
+ amount = len;
+ if ( amount>CHUNK )
+ amount = CHUNK;
+ strm.avail_in = fread(in, 1, amount, from);
+ len -= strm.avail_in;
+ if (ferror(from)) {
+ (void)deflateEnd(&strm);
+ fprintf( stderr, "IO error.\n" );
+ break;
+ }
+ if (strm.avail_in == 0)
+ break;
+ strm.next_in = (unsigned char*)in;
+ do {
+ strm.avail_out = CHUNK;
+ strm.next_out = (unsigned char*)out;
+ ret = deflate(&strm, len==0 ? Z_FINISH : Z_NO_FLUSH);
+ if ( ret==Z_STREAM_ERROR ) {
+ (void)deflateEnd(&strm);
+ fprintf( stderr, "Compression failed somehow.\n");
+ err = 1;
+ break;
+ }
+ amount = CHUNK - strm.avail_out;
+ if ( fwrite(out,1,amount,tmp)!= amount || ferror(tmp) ) {
+ (void)deflateEnd(&strm);
+ fprintf( stderr, "IO Error.\n");
+ err=1;
+ break;
+ }
+ } while ( strm.avail_out==0 );
+ if ( err )
+ break;
+ } while ( ret!=Z_STREAM_END );
+ (void)deflateEnd(&strm);
+
+ if ( strm.total_out>=uncompLen ) {
+ /* Didn't actually make the data smaller, so store uncompressed */
+ fclose(tmp);
+ copydata(to,off_to,from,off_from,uncompLen);
+return( uncompLen );
+ } else {
+ copydata(to,off_to,tmp,0,strm.total_out);
+ fclose(tmp);
+return( strm.total_out );
+ }
+}
+
+typedef struct {
+ int index;
+ int offset;
+} tableOrderRec;
+
+static int
+compareOffsets(const void * lhs, const void * rhs)
+{
+ const tableOrderRec * a = (const tableOrderRec *) lhs;
+ const tableOrderRec * b = (const tableOrderRec *) rhs;
+ /* don't simply return a->offset - b->offset because these are unsigned
+ offset values; could convert to int, but possible integer overflow */
+ return a->offset > b->offset ? 1 :
+ a->offset < b->offset ? -1 :
+ 0;
+}
+
+int _WriteWOFFFont(FILE *woff,SplineFont *sf, enum fontformat format,
+ int32 *bsizes, enum bitmapformat bf,int flags,EncMap *enc,int layer) {
+ int ret;
+ FILE *sfnt;
+ int major=sf->woffMajor, minor=sf->woffMinor;
+ int flavour, num_tabs;
+ int filelen, len;
+ int i;
+ int compLen, uncompLen, newoffset;
+ int tag, checksum, offset;
+ int tab_start;
+ tableOrderRec *tableOrder = NULL;
+
+ if ( major==woffUnset ) {
+ struct ttflangname *useng;
+ major = 1; minor = 0;
+ for ( useng=sf->names; useng!=NULL; useng=useng->next )
+ if ( useng->lang==0x409 )
+ break;
+ if ( useng!=NULL && useng->names[ttf_version]!=NULL &&
+ sscanf(useng->names[ttf_version], "Version %d.%d", &major, &minor)>=1 ) {
+ /* All done */
+ } else if ( sf->subfontcnt!=0 ) {
+ major = floor(sf->cidversion);
+ minor = floor(1000.*(sf->cidversion-major));
+ } else if ( sf->version!=NULL ) {
+ char *pt=sf->version;
+ char *end;
+ while ( *pt && !isdigit(*pt) && *pt!='.' ) ++pt;
+ if ( *pt ) {
+ major = strtol(pt,&end,10);
+ if ( *end=='.' )
+ minor = strtol(end+1,NULL,10);
+ }
+ }
+ }
+
+ format = sf->subfonts!=NULL ? ff_otfcid :
+ sf->layers[layer].order2 ? ff_ttf : ff_otf;
+ sfnt = tmpfile2();
+ ret = _WriteTTFFont(sfnt,sf,format,bsizes,bf,flags,enc,layer);
+ if ( !ret ) {
+ fclose(sfnt);
+return( ret );
+ }
+
+ fseek(sfnt,0,SEEK_END);
+ filelen = ftell(sfnt);
+ rewind(sfnt);
+
+ flavour = getlong(sfnt);
+ /* The woff standard says we should accept all flavours of sfnt, so can't */
+ /* test flavour to make sure we've got a valid sfnt */
+ /* But we can test the rest of the header for consistancy */
+ num_tabs = getushort(sfnt);
+ (void) getushort(sfnt);
+ (void) getushort(sfnt);
+ (void) getushort(sfnt);
+
+ /*
+ * At this point _WriteTTFFont should have generated an sfnt file with
+ * valid checksums, correct padding and no extra gaps. However, the order
+ * of the font tables in the original sfnt font must also be preserved so
+ * that WOFF consumers can recover the original offsets as well as the
+ * original font. Hence we will compress and write the font tables into
+ * the WOFF file using the original offset order. Note that the order of
+ * tables may not be the same as the one of table directory entries.
+ * See https://github.com/fontforge/fontforge/issues/926
+ */
+ tableOrder = (tableOrderRec *) malloc(num_tabs * sizeof(tableOrderRec));
+ if (!tableOrder) {
+ fclose(sfnt);
+ return false;
+ }
+ for ( i=0; i<num_tabs; ++i ) {
+ fseek(sfnt,(3 + 4*i + 2)*sizeof(int32),SEEK_SET);
+ tableOrder[i].index = i;
+ tableOrder[i].offset = getlong(sfnt);
+ }
+ qsort(tableOrder, num_tabs, sizeof(tableOrderRec), compareOffsets);
+
+ /* Now generate the WOFF file */
+ rewind(woff);
+ putlong(woff,CHR('w','O','F','F'));
+ putlong(woff,flavour);
+ putlong(woff,0); /* Off: 8. total length of file, fill in later */
+ putshort(woff,num_tabs);
+ putshort(woff,0); /* Must be zero */
+ putlong(woff,filelen);
+ putshort(woff,major); /* Major and minor version numbers of font */
+ putshort(woff,minor);
+ putlong(woff,0); /* Off: 24. Offset to metadata table */
+ putlong(woff,0); /* Off: 28. Length (compressed) of metadata */
+ putlong(woff,0); /* Off: 32. Length (uncompressed) */
+ putlong(woff,0); /* Off: 36. Offset to private data */
+ putlong(woff,0); /* Off: 40. Length of private data */
+
+ tab_start = ftell(woff);
+ for ( i=0; i<5*num_tabs; ++i )
+ putlong(woff,0);
+
+ for ( i=0; i<num_tabs; ++i ) {
+ fseek(sfnt,(3 + 4*tableOrder[i].index)*sizeof(int32),SEEK_SET);
+ tag = getlong(sfnt);
+ checksum = getlong(sfnt);
+ offset = getlong(sfnt);
+ uncompLen = getlong(sfnt);
+ newoffset = ftell(woff);
+ compLen = compressOrNot(woff,newoffset,sfnt,offset,uncompLen,false);
+ if ( (ftell(woff)&3)!=0 ) {
+ /* Pad to a 4 byte boundary */
+ if ( ftell(woff)&1 )
+ putc('\0',woff);
+ if ( ftell(woff)&2 )
+ putshort(woff,0);
+ }
+ fseek(woff,tab_start+(5*tableOrder[i].index)*sizeof(int32),SEEK_SET);
+ putlong(woff,tag);
+ putlong(woff,newoffset);
+ putlong(woff,compLen);
+ putlong(woff,uncompLen);
+ putlong(woff,checksum);
+ fseek(woff,0,SEEK_END);
+ }
+ fclose(sfnt);
+
+ if ( sf->woffMetadata!= NULL ) {
+ int uncomplen = strlen(sf->woffMetadata);
+ uLongf complen = 2*uncomplen;
+ char *temp=malloc(complen+1);
+ newoffset = ftell(woff);
+ compress((unsigned char*)temp,&complen,(unsigned char*)sf->woffMetadata,uncomplen);
+ fwrite(temp,1,complen,woff);
+ free(temp);
+ if ( (ftell(woff)&3)!=0 ) {
+ /* Pad to a 4 byte boundary */
+ if ( ftell(woff)&1 )
+ putc('\0',woff);
+ if ( ftell(woff)&2 )
+ putshort(woff,0);
+ }
+ fseek(woff,24,SEEK_SET);
+ putlong(woff,newoffset);
+ putlong(woff,complen);
+ putlong(woff,uncomplen);
+ fseek(woff,0,SEEK_END);
+ }
+
+ fseek(woff,0,SEEK_END);
+ len = ftell(woff);
+ fseek(woff,8,SEEK_SET);
+ putlong(woff,len);
+
+ free(tableOrder);
+return( true ); /* No errors */
+}
+
+int WriteWOFFFont(char *fontname,SplineFont *sf, enum fontformat format,
+ int32 *bsizes, enum bitmapformat bf,int flags,EncMap *enc,int layer) {
+ FILE *woff;
+ int ret;
+
+ if ( strstr(fontname,"://")!=NULL ) {
+ if (( woff = tmpfile2())==NULL )
+return( 0 );
+ } else {
+ if (( woff=fopen(fontname,"wb+"))==NULL )
+return( 0 );
+ }
+ ret = _WriteWOFFFont(woff,sf,format,bsizes,bf,flags,enc,layer);
+ if ( fclose(woff)==-1 )
+return( 0 );
+return( ret );
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/basics.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/basics.h
new file mode 100644
index 00000000000..e1a543d39e6
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/basics.h
@@ -0,0 +1,125 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _BASICS_H
+#define _BASICS_H
+
+#include <fontforge-config.h>
+#include <stdio.h> /* for NULL */
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#else
+#include <inttypes.h>
+#endif
+#include <stdlib.h> /* for free */
+#include <limits.h>
+#include <stdbool.h>
+
+typedef int32_t int32;
+typedef uint32_t uint32;
+typedef int16_t int16;
+typedef uint16_t uint16;
+typedef int8_t int8;
+typedef uint8_t uint8;
+
+/* An integral type which can hold a pointer */
+typedef intptr_t intpt;
+
+typedef uint32 unichar_t;
+
+/* A macro to mark unused function parameters with. We often
+ * have such parameters, because of extensive use of callbacks.
+ */
+#ifdef UNUSED
+#elif defined(__GNUC__)
+# define UNUSED(x) UNUSED_ ## x __attribute__((unused))
+#elif defined(__LCLINT__)
+# define UNUSED(x) /*@unused@*/ x
+#else
+# define UNUSED(x) x
+#endif
+
+/* A macro to print a string for debug purposes
+ */
+#ifdef FONTFORGE_DEBUG
+#define TRACE(...) printf(__VA_ARGS__)
+#else
+#define TRACE(...)
+#endif
+
+extern void NoMoreMemMessage(void);
+
+static inline int imin(int a, int b)
+{
+ return (a < b) ? a : b;
+}
+
+static inline int imax(int a, int b)
+{
+ return (a < b) ? b : a;
+}
+
+#define IS_IN_ORDER3( a, b, c ) ( ((a)<=(b)) && ((b)<=(c)) )
+
+
+/**
+ * Many lists in FontForge are singly linked. At times you might want
+ * to append to the list which, when you only have a pointer to the
+ * start of the list can be more verbose than one would like. To use
+ * this macro you must defined a null initialized variable 'last'
+ * outside of any loop that traverses the source list. The last
+ * variable is used used by this macro to quickly append to the list
+ * as you go. This macro also assumes that the 'last' and 'newitem'
+ * types have a member "->next" which contains the single linked list
+ * pointer to the next element.
+ *
+ * Efficient list append should really be a one line call in the bulk
+ * of the code :)
+ *
+ * example:
+ * MyListObjectType* newfoolast = 0;
+ * MyListObjectType* newfoolist = 0;
+ *
+ * for( ... iterate a source collection of foos ... )
+ * {
+ * MyListObjectType* foocopy = CopyIt( foo );
+ * FFLIST_SINGLE_LINKED_APPEND( newfoolist, newfoolast, foocopy );
+ * }
+ */
+#define FFLIST_SINGLE_LINKED_APPEND( head, last, newitem ) \
+ if ( !last ) \
+ { \
+ newitem->next = 0; \
+ head = last = newitem; \
+ } \
+ else \
+ { \
+ last->next = newitem; \
+ last = newitem; \
+ }
+
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/chardata.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/chardata.h
new file mode 100644
index 00000000000..39bff9487ae
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/chardata.h
@@ -0,0 +1,78 @@
+#include <basics.h>
+
+struct charmap {
+ int first, last;
+ unsigned char **table;
+ unichar_t *totable;
+};
+struct charmap2 {
+ int first, last;
+ unsigned short **table;
+ unichar_t *totable;
+};
+
+extern const unichar_t unicode_from_i8859_1[];
+extern struct charmap i8859_1_from_unicode;
+extern const unichar_t unicode_from_i8859_2[];
+extern struct charmap i8859_2_from_unicode;
+extern const unichar_t unicode_from_i8859_3[];
+extern struct charmap i8859_3_from_unicode;
+extern const unichar_t unicode_from_i8859_4[];
+extern struct charmap i8859_4_from_unicode;
+extern const unichar_t unicode_from_i8859_5[];
+extern struct charmap i8859_5_from_unicode;
+extern const unichar_t unicode_from_i8859_6[];
+extern struct charmap i8859_6_from_unicode;
+extern const unichar_t unicode_from_i8859_7[];
+extern struct charmap i8859_7_from_unicode;
+extern const unichar_t unicode_from_i8859_8[];
+extern struct charmap i8859_8_from_unicode;
+extern const unichar_t unicode_from_i8859_9[];
+extern struct charmap i8859_9_from_unicode;
+extern const unichar_t unicode_from_i8859_10[];
+extern struct charmap i8859_10_from_unicode;
+extern const unichar_t unicode_from_i8859_11[];
+extern struct charmap i8859_11_from_unicode;
+extern const unichar_t unicode_from_i8859_13[];
+extern struct charmap i8859_13_from_unicode;
+extern const unichar_t unicode_from_i8859_14[];
+extern struct charmap i8859_14_from_unicode;
+extern const unichar_t unicode_from_i8859_15[];
+extern struct charmap i8859_15_from_unicode;
+extern const unichar_t unicode_from_koi8_r[];
+extern struct charmap koi8_r_from_unicode;
+extern const unichar_t unicode_from_jis201[];
+extern struct charmap jis201_from_unicode;
+extern const unichar_t unicode_from_win[];
+extern struct charmap win_from_unicode;
+extern const unichar_t unicode_from_mac[];
+extern struct charmap mac_from_unicode;
+extern const unichar_t unicode_from_MacSymbol[];
+extern struct charmap MacSymbol_from_unicode;
+extern const unichar_t unicode_from_ZapfDingbats[];
+extern struct charmap ZapfDingbats_from_unicode;
+
+extern unichar_t *unicode_from_alphabets[];
+extern struct charmap *alphabets_from_unicode[];
+
+extern const unichar_t unicode_from_jis208[];
+extern const unichar_t unicode_from_jis212[];
+extern struct charmap2 jis_from_unicode;
+/* Subtract 0xa100 before indexing this array */
+extern const unichar_t unicode_from_big5[];
+extern struct charmap2 big5_from_unicode;
+/* Subtract 0x8100 before indexing this array */
+extern const unichar_t unicode_from_big5hkscs[];
+extern struct charmap2 big5hkscs_from_unicode;
+extern const unichar_t unicode_from_ksc5601[];
+extern struct charmap2 ksc5601_from_unicode;
+/* Subtract 0x8400 before indexing this array */
+extern const unichar_t unicode_from_johab[];
+extern struct charmap2 johab_from_unicode;
+extern const unichar_t unicode_from_gb2312[];
+extern struct charmap2 gb2312_from_unicode;
+
+/* a mask for each character saying what charset(s) it may be found in */
+extern const unsigned long * const unicode_backtrans[];
+
+extern const unichar_t *const * const unicode_alternates[];
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/charset.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/charset.h
new file mode 100644
index 00000000000..94daf0d3b4f
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/charset.h
@@ -0,0 +1,71 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _CHARSET_H
+#define _CHARSET_H
+/* ASCII is ISO 646, except the ISO version admits national alternatives */
+enum encoding { e_usascii, e_iso646_no, e_iso646_se, e_iso8859_1,
+ e_iso8859_2, e_iso8859_3, e_iso8859_4, e_iso8859_5, e_iso8859_6,
+ e_iso8859_7, e_iso8859_8, e_iso8859_9, e_iso8859_10,
+ e_iso8859_11/* same as TIS */, e_iso8859_13, e_iso8859_14, e_iso8859_15,
+ e_koi8_r, /* RFC 1489 */
+ e_jis201, /* 8 bit, ascii & katakana */
+ e_win, e_mac,
+ e_user,
+/* korean appears to fit into the jis/euc encoding schemes */
+/* the difference between jis & jis2 is what the output encoding should be (presence of '(') */
+ e_jis, e_jis2, e_jiskorean, e_jisgb, e_sjis, /* multi-byte */
+ e_euc, e_euckorean, e_eucgb,
+ e_wansung, e_johab,
+ e_big5,
+ e_big5hkscs,
+ e_unicode, e_unicode_backwards, /* wide chars */
+ e_utf7, e_utf8, /* unicode encodings */
+ e_ucs4, /* 4 byte chars */
+ e_notrans, /* _inch returns 16bits */
+ e_encodingmax, e_unknown=-1, e_first2byte=e_jis };
+
+enum charset { em_none = -1,
+ em_iso8859_1, em_iso8859_2, em_iso8859_3, em_iso8859_4, em_iso8859_5,
+ em_iso8859_6, em_iso8859_7, em_iso8859_8, em_iso8859_9, em_iso8859_10,
+ em_iso8859_11/* same as TIS */, em_iso8859_13, em_iso8859_14, em_iso8859_15,
+ em_koi8_r,
+ em_jis201,
+ em_win, em_mac, em_symbol, em_zapfding, em_user, em_adobestandard=em_user,
+ em_jis208, em_jis212, em_ksc5601, em_gb2312, em_big5, em_big5hkscs,
+ em_johab /* Korean*/,
+/* 28 */
+ em_unicode, em_unicode4, em_gb18030 , em_max, em_first2byte=em_jis208, em_last94x94=em_gb2312 };
+
+extern int /*enum charset*/ local_encoding;
+#if HAVE_ICONV
+# include <iconv.h>
+extern char *iconv_local_encoding_name;
+#else
+# include "gwwiconv.h" /* My fake iconv based on encodings in gdraw/gunicode */
+#endif
+extern struct namemap { const char *name; int map; } encodingnames[];
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/dlist.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/dlist.h
new file mode 100644
index 00000000000..eb4fcb9621b
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/dlist.h
@@ -0,0 +1,151 @@
+/* Copyright (C) 2012 by Ben Martin */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _DLIST_H
+#define _DLIST_H
+
+/**
+ * Doubly linked list abstraction. Putting a full member of this
+ * struct first in another struct means you can treat it as a
+ * dlinkedlist. You can have a struct in many lists simply by
+ * embedding another dlistnode member and handing a pointer to that
+ * member to the dlist() helper functions. Double linking has big
+ * advantages in removal of single elements where you do not need to
+ * rescan to find removeme->prev;
+ */
+struct dlistnode {
+ struct dlistnode* next;
+ struct dlistnode* prev;
+};
+
+/**
+ * DEVELOPERS: make sure the start of this struct is compatible with
+ * dlistnode. While I could use the dlistnode as a first member, using
+ * a copy of the members in the same order as dlistnode has them
+ * allows callers using this struct a bit simpler access.
+ *
+ * While one can embed a dlistnode member into a struct to create
+ * linked lists, sometimes you want to return a splice of one of those
+ * lists. For example, if you have a double linked list of all your
+ * hotkeys, you might like to return only the ones that have a
+ * modifier of the Control key. You want to leave the hotkey structs
+ * in their original list, but create a new kust that references just
+ * a desired selection of objects.
+ *
+ * In other words, if you have some data you want to return in a
+ * double linked list, then use this node type. You can build one up
+ * using dlist_pushfront_external() and the caller can free that list
+ * using dlist_free_external(). Any of the foreach() functions will
+ * work to iterate a list of dlistnodeExternal as this list is
+ * identical to a dlistnode with an extra ptr payload.
+ */
+struct dlistnodeExternal {
+ struct dlistnode* next;
+ struct dlistnode* prev;
+ void* ptr;
+};
+
+
+/**
+ * Push the node onto the head of the list
+ */
+extern void dlist_pushfront( struct dlistnode** list, struct dlistnode* node );
+
+/**
+ * Take the last node off the list and return it. If the list is empty, return 0.
+ */
+struct dlistnode* dlist_popback( struct dlistnode** list );
+
+/**
+ * the number of nodes in the list
+ */
+extern int dlist_size( struct dlistnode** list );
+
+/**
+ * is the list empty
+ */
+extern int dlist_isempty( struct dlistnode** list );
+
+/**
+ * Remove the node from the list. The node itself is not free()ed.
+ * That is still up to the caller. All this function does is preserve
+ * the list structure without the node being in it.
+ */
+extern void dlist_erase( struct dlistnode** list, struct dlistnode* node );
+typedef void (*dlist_foreach_func_type)( struct dlistnode* );
+
+/**
+ * Call func for every node in the list. This is a defensive
+ * implementation, if you want to remove a node from the list inside
+ * func() that is perfectly fine.
+ */
+extern void dlist_foreach( struct dlistnode** list, dlist_foreach_func_type func );
+typedef void (*dlist_foreach_udata_func_type)( struct dlistnode*, void* udata );
+
+/**
+ * Like dlist_foreach(), defensive coding still, but the udata pointer
+ * is passed back to your visitor function.
+ */
+extern void dlist_foreach_udata( struct dlistnode** list, dlist_foreach_udata_func_type func, void* udata );
+
+/**
+ * Like dlist_foreach_udata() but nodes are visited in reverse order.
+ */
+extern void dlist_foreach_reverse_udata( struct dlistnode** list, dlist_foreach_udata_func_type func, void* udata );
+
+/**
+ * Assuming list is an externalNode list, push a newly allocated list node with
+ * a dlistnodeExternal.ptr = ptr passed.
+ */
+extern void dlist_pushfront_external( struct dlistnode** list, void* ptr );
+
+/**
+ * Free a list of externalNode type. The externalNode memory is
+ * free()ed, whatever externalNode.ptr is pointing to is not free()ed.
+ */
+extern void dlist_free_external( struct dlistnode** list );
+
+
+typedef void (*dlist_visitor_func_type)( struct dlistnode* );
+
+/**
+ * To create a list of bounded length, use this function. Limit is the
+ * maximum length the list can reach. If list nodes have to be removed
+ * to be under this limit then "f" is used as a callback to free list
+ * nodes. This allows application specific freeing of a list node, and
+ * the ability to maintain a limit on the length of a list as a simple
+ * one line call.
+ *
+ * The current implementation expects you to only be trimming one or
+ * two entries at a time. It will still work for trimming 100 entries
+ * at a single time, but might not be quite as optimized for that case
+ * as it could be.
+ */
+extern void dlist_trim_to_limit( struct dlistnode** list, int limit, dlist_visitor_func_type f );
+
+
+#endif // _DLIST_H
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/gimage.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/gimage.h
new file mode 100644
index 00000000000..47fa1372799
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/gimage.h
@@ -0,0 +1,204 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _GIMAGE_H
+#define _GIMAGE_H
+#include <basics.h>
+
+typedef uint32 Color;
+
+#define COLOR_UNKNOWN ((Color) 0xffffffff)
+#define COLOR_TRANSPARENT ((Color) 0xffffffff)
+#define COLOR_DEFAULT ((Color) 0xfffffffe)
+#define COLOR_CREATE(r,g,b) (((r)<<16) | ((g)<<8) | (b))
+#define COLOR_ALPHA(col) (((col)>>24))
+#define COLOR_RED(col) (((col)>>16) & 0xff)
+#define COLOR_GREEN(col) (((col)>>8) & 0xff)
+#define COLOR_BLUE(col) ((col)&0xff)
+
+struct hslrgb {
+ double h,s,l,v;
+ double r,g,b;
+ uint8 rgb, hsl, hsv;
+};
+
+struct hslrgba {
+ double h,s,l,v;
+ double r,g,b;
+ uint8 rgb, hsl, hsv, has_alpha;
+ double alpha;
+};
+
+typedef struct clut {
+ int16 clut_len;
+ unsigned int is_grey: 1;
+ uint32 trans_index; /* will be ignored for cluts in images, use base->trans instead */
+ Color clut[256];
+} GClut;
+
+#define GCLUT_CLUT_EMPTY \
+{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \
+}
+
+
+typedef struct revcmap RevCMap;
+
+enum image_type { it_mono, it_bitmap=it_mono, it_index, it_true, it_rgba };
+
+struct _GImage {
+/* Format: bitmaps are stored with the most significant bit first in byte units
+ indexed images are stored in byte units
+ true color images are stored in 4 byte units, 0,red,green,blue
+ rgba images are stored in 4 byte units, alpha,red,green blue
+*/
+ enum image_type image_type: 2;
+ int16 delay; /* for animated GIFs, delay to next frame */
+ int32 width, height;
+ int32 bytes_per_line;
+ uint8 *data;
+ GClut *clut;
+ Color trans; /* PNG supports more than one transparent color, we don't */
+ /* for non-true color images this is the index, not a color */
+};
+
+/* We deal with 1 bit, 8 bit and 32 bit images internal. 1 bit images may have*/
+/* a clut (if they don't assume bw, 0==black, 1==white), 8 bit must have a */
+/* clut, 32bit are actually 24 bit RGB images, but we pad them for easy */
+/* accessing. it_screen means that we've got an image that can be drawn */
+/* directly on the screen */
+typedef struct gimage {
+ short list_len; /* length of list */
+ union { /* depends on whether has_list is set */
+ struct _GImage *image;
+ struct _GImage **images;
+ } u;
+ void *userdata;
+} GImage;
+
+enum pastetrans_type { ptt_paste_trans_to_trans, ptt_old_shines_through};
+
+typedef struct grect {
+ int32 x,y,width,height;
+} GRect;
+
+#define GRECT_EMPTY { 0, 0, 0, 0 }
+
+
+typedef struct gpoint {
+ int16 x,y;
+} GPoint;
+
+#define GPOINT_EMPTY { 0, 0 }
+
+
+extern GImage *GImageCreate(enum image_type type, int32 width, int32 height);
+extern GImage *_GImage_Create(enum image_type type, int32 width, int32 height);
+extern void GImageDestroy(GImage *gi);
+extern GImage *GImageCreateAnimation(GImage **images, int n);
+extern GImage *GImageAddImageBefore(GImage *dest, GImage *src, int pos);
+
+extern GImage *GImageBaseGetSub(struct _GImage *base, enum image_type it, GRect *src, GClut *nclut, RevCMap *rev);
+extern GImage *GImageGetSub(GImage *image,enum image_type it, GRect *src, GClut *nclut, RevCMap *rev);
+extern int GImageInsertToBase(struct _GImage *tobase, GImage *from, GRect *src, RevCMap *rev,
+ int to_x, int to_y, enum pastetrans_type ptt );
+extern int GImageInsert(GImage *to, GImage *from, GRect *src, RevCMap *rev,
+ int to_x, int to_y, enum pastetrans_type ptt );
+extern Color _GImageGetPixelColor(struct _GImage *base,int x, int y); /* Obsolete */
+extern Color GImageGetPixelColor(GImage *base,int x, int y); /* Obsolete */
+extern Color GImageGetPixelRGBA(GImage *base,int x, int y);
+extern int GImageGetWidth(GImage *);
+extern int GImageGetHeight(GImage *);
+extern void *GImageGetUserData(GImage *img);
+extern void GImageSetUserData(GImage *img,void *userdata);
+extern void GImageResize(struct _GImage *tobase, struct _GImage *fbase,
+ GRect *src, RevCMap *rev);
+extern GImage *GImageResize32(GImage *from, GRect *src, int width, int height, Color trans);
+extern GImage *GImageResizeSame(GImage *from, GRect *src, int width, int height, RevCMap *rev);
+extern RevCMap *GClutReverse(GClut *clut,int side_size);
+void GClut_RevCMapFree(RevCMap *rev);
+extern GClut *GImageFindCLUT(GImage *image,GClut *clut,int clutmax);
+extern int GImageSameClut(GClut *clut,GClut *nclut);
+extern int GImageGreyClut(GClut *clut);
+extern Color GImageColourFName(unichar_t *name);
+extern Color _GImage_ColourFName(char *name);
+extern char *GImageNameFColour(Color col);
+extern Color GDrawColorDarken(Color col, int by);
+extern Color GDrawColorBrighten(Color col, int by);
+
+extern int GImageWriteGImage(GImage *gi, char *filename);
+extern int GImageWrite_Bmp(GImage *gi, FILE *fp);
+extern int GImageWriteBmp(GImage *gi, char *filename);
+extern GImage *GImageRead_Bmp(FILE *file);
+extern GImage *GImageReadBmp(char *filename);
+extern int GImageWriteXbm(GImage *gi, char *filename);
+extern GImage *GImageReadXbm(char *filename);
+extern int GImageWriteXpm(GImage *gi, char *filename);
+extern GImage *GImageReadXpm(char *filename);
+extern int GImageWriteEps(GImage *gi, char *filename);
+extern GImage *GImageReadTiff(char *filename);
+extern GImage *GImageReadJpeg(char *filename);
+extern GImage *GImageRead_Jpeg(FILE *fp);
+extern int GImageWrite_Jpeg(GImage *gi, FILE *outfile, int quality, int progressive);
+extern int GImageWriteJpeg(GImage *gi, char *filename, int quality, int progressive);
+extern GImage *GImageRead_Png(FILE *fp);
+extern GImage *GImageReadPng(char *filename);
+extern int GImageWrite_Png(GImage *gi, FILE *fp, int progressive);
+extern int GImageWritePng(GImage *gi, char *filename, int progressive);
+extern GImage *GImageReadGif(char *filename);
+extern int GImageWriteGif(GImage *gi,char *filename,int progressive);
+extern GImage *GImageReadRas(char *filename); /* Sun Raster */
+extern GImage *GImageReadRgb(char *filename); /* SGI */
+extern GImage *GImageRead(char *filename);
+
+extern void GImageDrawRect(GImage *img,GRect *r,Color col);
+extern void GImageDrawImage(GImage *dest,GImage *src,GRect *junk,int x, int y);
+extern void GImageBlendOver(GImage *dest,GImage *src,GRect *from,int x, int y);
+
+extern void gRGB2HSL(struct hslrgb *col);
+extern void gHSL2RGB(struct hslrgb *col);
+extern void gRGB2HSV(struct hslrgb *col);
+extern void gHSV2RGB(struct hslrgb *col);
+extern void gColor2Hslrgb(struct hslrgb *col,Color from);
+extern void gColor2Hslrgba(struct hslrgba *col,Color from);
+extern Color gHslrgb2Color(struct hslrgb *col);
+extern Color gHslrgba2Color(struct hslrgba *col);
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/gnetwork.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/gnetwork.h
new file mode 100644
index 00000000000..89067924c9f
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/gnetwork.h
@@ -0,0 +1,87 @@
+/* Copyright (C) 2013 by Ben Martin */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#ifndef _ALREADY_INCLUDED_GNETWORK_H_
+#define _ALREADY_INCLUDED_GNETWORK_H_
+
+#include <fontforge-config.h>
+
+#define IPADDRESS_STRING_LENGTH_T 100
+
+/**
+ * Get a string that describes this host. It may be something
+ * like "foobar" if the user has decided to call their laptop that name.
+ * So you might not be able to resolve the returned hostname on a remote
+ * computer. Data is copied to outstring and outstring is returned.
+ */
+char* ff_gethostname( char* outstring, int outstring_sz );
+
+
+/**
+ * Get the network accessible IP address of the local machine.
+ *
+ * If the machine is multihomed you had better hope that traffic
+ * from the network can reach all NICs on the host.
+ *
+ * The output is copied to outstring which is assumed to be
+ * at least ipaddress_string_length_t bytes long. The outstring is
+ * also returned.
+ */
+extern char* getNetworkAddress( char* outstring );
+
+extern char* HostPortPack( char* hostname, int port );
+extern char* HostPortUnpack( char* packed, int* port, int port_default );
+
+/**
+ * This is ZUUID_LEN. Because that length is stable and to avoid bringing in
+ * the czmq header file it is redeclared from base form here.
+ */
+#define FF_UUID_BINARY_SIZE 16
+/**
+ * min length of a buffer that will contain an ascii string serialiation of a uuid
+ */
+#define FF_UUID_STRING_SIZE 33
+
+/**
+ * generate a new uuid and stringify it into the target area provided
+ * after the call target should contain something like
+ * 1b4e28ba-2fa1-11d2-883f-0016d3cca427
+ * with the trailing NUL. Before the call target needs to be at least
+ * FF_UUID_STRING_SIZE bytes long.
+ * the 'target' is also the return value.
+ */
+char* ff_uuid_generate( char* target );
+
+/**
+ * This test might be improved in the future.
+ * You pass a string which might have the form of a UUID (or be "\0 whatever") or
+ * just be a null pointer, and the function returns true if the uuid string
+ * you passed in conforms to being a uuid.
+ */
+extern int ff_uuid_isValid( char* uuid );
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/gwwiconv.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/gwwiconv.h
new file mode 100644
index 00000000000..ff650a6dd3d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/gwwiconv.h
@@ -0,0 +1,48 @@
+/* Copyright (C) 2004-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _GWWICONV_H
+#define _GWWICONV_H
+
+# ifndef HAVE_ICONV
+# define __need_size_t
+# include <stdlib.h> /* For size_t */
+
+typedef void *gww_iconv_t;
+
+extern gww_iconv_t gww_iconv_open(const char *toenc,const char *fromenc);
+extern void gww_iconv_close( gww_iconv_t cd);
+extern size_t gww_iconv( gww_iconv_t cd,
+ char **inbuf, size_t *inlen,
+ char **outbuf, size_t *outlen);
+
+#define iconv_t gww_iconv_t
+#define iconv_open gww_iconv_open
+#define iconv_close gww_iconv_close
+#define iconv gww_iconv
+
+# endif /* HAVE_ICONV */
+#endif /* _GWWICONV_H */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/intl.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/intl.h
new file mode 100644
index 00000000000..1154554e153
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/intl.h
@@ -0,0 +1,74 @@
+/* Copyright (C) 2005-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#ifndef _INTL_H
+#define _INTL_H
+
+#if !defined( HAVE_LIBINTL_H )
+
+# define _(str) (str)
+# define P_(str1,str_non1,n) ((n)==1?str1:str_non1)
+# define U_(str) (str)
+
+# ifdef bindtextdomain
+# undef bindtextdomain
+# endif
+# ifdef bind_textdomain_codeset
+# undef bind_textdomain_codeset
+# endif
+# ifdef textdomain
+# undef textdomain
+# endif
+
+# define bindtextdomain(domain,dir)
+# define bind_textdomain_codeset(domain,enc)
+# define textdomain(domain)
+
+# define dgettext(domain,str) (str)
+
+#else /* HAVE_LIBINTL_H */
+
+# include <libintl.h>
+# define _(str) gettext(str)
+# define P_(str1,str_non1,n) ngettext(str1,str_non1,n)
+/* For messages including utf8 characters. old xgettexts won't handle them */
+/* so we must do something special. */
+# define U_(str) gettext(str)
+
+#endif /* HAVE_LIBINTL_H */
+
+/* For messages including utf8 sequences that need gettext_noop treatment */
+#define NU_(str) (str)
+#define N_(str) (str)
+#define S_(str) (str)
+/* For messages in the shortcuts domain */
+#define H_(str) (str)
+
+extern void GResourceUseGetText(void);
+char *sgettext(const char *msgid);
+
+#endif /* _INTL_H */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/ustring.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/ustring.h
new file mode 100644
index 00000000000..3e3f1b891c1
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/ustring.h
@@ -0,0 +1,212 @@
+/* Copyright (C) 2000-2012 by George Williams */
+/*
+ * 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 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+#ifndef _UCHAR_H
+# define _UCHAR_H
+#include <stdarg.h>
+#include <string.h>
+#include <memory.h>
+#include <basics.h>
+#include <charset.h>
+
+extern char *copy(const char *);
+extern char *copyn(const char *,long);
+extern unichar_t *u_copy(const unichar_t*);
+extern unichar_t *u_copyn(const unichar_t*, long);
+extern unichar_t *u_copynallocm(const unichar_t *pt, long n, long m);
+extern unichar_t *uc_copyn(const char *, int);
+extern unichar_t *uc_copy(const char*);
+extern unichar_t *u_concat(const unichar_t*,const unichar_t*);
+extern char *cu_copyn(const unichar_t *pt,int len);
+extern char *cu_copy(const unichar_t*);
+
+extern long uc_strcmp(const unichar_t *,const char *);
+extern long u_strcmp(const unichar_t *, const unichar_t *);
+extern long uc_strncmp(const unichar_t *,const char *,int);
+extern long u_strncmp(const unichar_t *, const unichar_t *,int);
+extern long uc_strmatch(const unichar_t *,const char *);
+extern long uc_strnmatch(const unichar_t *,const char *,int);
+extern long u_strnmatch(const unichar_t *str1, const unichar_t *str2, int len);
+extern long u_strmatch(const unichar_t *, const unichar_t *);
+extern int strmatch(const char *,const char *);
+extern int strnmatch(const char *str1, const char *str2, int n);
+extern void uc_strcpy(unichar_t *, const char *);
+extern void cu_strcpy(char *, const unichar_t *);
+extern void u_strcpy(unichar_t *, const unichar_t *);
+extern void u_strncpy(unichar_t *, const unichar_t *,int);
+extern void cu_strncpy(char *to, const unichar_t *from, int len);
+extern void uc_strncpy(unichar_t *to, const char *from, int len);
+/**
+ * Like strncpy but passing a null 'from' will simply null terminate
+ * to[0] to give a blank result rather than a crash.
+ */
+extern char *cc_strncpy(char *to, const char *from, int len);
+extern void uc_strcat(unichar_t *, const char *);
+extern void uc_strncat(unichar_t *, const char *,int len);
+extern void cu_strcat(char *, const unichar_t *);
+extern void cu_strncat(char *, const unichar_t *,int len);
+extern void u_strcat(unichar_t *, const unichar_t *);
+extern void u_strncat(unichar_t *, const unichar_t *, int len);
+extern int u_strlen(const unichar_t *);
+/**
+ * Like strlen() but passing a null pointer gets a 0 length
+ */
+extern int c_strlen(const char *);
+extern unichar_t *u_strchr(const unichar_t *,unichar_t);
+extern unichar_t *u_strrchr(const unichar_t *,unichar_t);
+extern unichar_t *uc_strstr(const unichar_t *,const char *);
+extern unichar_t *u_strstr(const unichar_t *,const unichar_t *);
+extern unichar_t *uc_strstrmatch(const unichar_t *,const char *);
+extern unichar_t *u_strstrmatch(const unichar_t *,const unichar_t *);
+extern char * strstrmatch(const char *,const char *);
+
+extern char *u_to_c(const unichar_t *);
+extern unichar_t *c_to_u(const char *);
+
+extern unsigned long u_strtoul(const unichar_t *,unichar_t **,int);
+extern long u_strtol(const unichar_t *,unichar_t **,int);
+extern double u_strtod(const unichar_t *,unichar_t **);
+
+/*
+ * Convert the integer 'v' to a string and return it.
+ * You do not own the return value, it is an internal buffer
+ * so you should copy it before using the function again
+ */
+extern char* c_itostr( int v );
+
+extern char *strstart(const char *initial,const char *full);
+extern char *strstartmatch(const char *initial,const char *full);
+extern unichar_t *u_strstartmatch(const unichar_t *initial, const unichar_t *full);
+extern unichar_t *cu_strstartmatch(const char *initial, const unichar_t *full);
+
+#define utf82u_strncpy utf82U_strncpy
+extern int32 utf8_ildb(const char **utf8_text);
+#define UTF8IDPB_NOZERO 1 /* Allow for 0 encoded as a non-zero utf8 0xc0:0x80 char */
+#define UTF8IDPB_OLDLIMIT 2 /* Today's utf8 is agreed to be limited to {0..0x10FFFF} */
+#define UTF8IDPB_UCS2 8 /* Encode {0...0xffff} as 16bit ucs2 type values */
+#define UTF8IDPB_UTF16 16 /* Encode {0...0x10ffff} as 16bit utf16 type values */
+#define UTF8IDPB_UTF32 32 /* Encode {0...0x10ffff} as 32bit utf32 type values */
+extern char *utf8_idpb(char *utf8_text,uint32 ch,int flags);
+extern char *utf8_db(char *utf8_text);
+extern char *utf8_ib(char *utf8_text);
+extern int utf8_valid(const char *str);
+extern void utf8_truncatevalid(char *str);
+extern char *latin1_2_utf8_strcpy(char *utf8buf,const char *lbuf);
+extern char *latin1_2_utf8_copy(const char *lbuf);
+extern char *utf8_2_latin1_copy(const char *utf8buf);
+extern long utf8_strlen(const char *utf8_str); /* Count how many characters in the string NOT bytes */
+extern long utf82u_strlen(const char *utf8_str); /* Count how many shorts needed to represent in UCS2 */
+extern void utf8_strncpy(register char *to, const char *from, int len); /* copy n characters NOT bytes */
+extern char *def2utf8_copy(const char *from);
+extern char *utf82def_copy(const char *ufrom);
+extern char *utf8_strchr(const char *utf8_str, int search_char);
+
+extern unichar_t *utf82u_strncpy(unichar_t *ubuf,const char *utf8buf,int len);
+extern unichar_t *utf82u_strcpy(unichar_t *ubuf,const char *utf8buf);
+extern void utf82u_strcat(unichar_t *ubuf,const char *utf8buf);
+extern unichar_t *utf82u_copyn(const char *utf8buf,int len);
+extern unichar_t *utf82u_copy(const char *utf8buf);
+extern char *u2utf8_strcpy(char *utf8buf,const unichar_t *ubuf);
+extern char *u2utf8_copy(const unichar_t *ubuf);
+extern char *u2utf8_copyn(const unichar_t *ubuf,int len);
+extern unichar_t *encoding2u_strncpy(unichar_t *uto, const char *from, int n, enum encoding cs);
+extern char *u2encoding_strncpy(char *to, const unichar_t *ufrom, size_t n, enum encoding cs);
+extern unichar_t *def2u_strncpy(unichar_t *uto, const char *from, size_t n);
+extern char *u2def_strncpy(char *to, const unichar_t *ufrom, size_t n);
+extern unichar_t *def2u_copy(const char *from);
+extern char *u2def_copy(const unichar_t *ufrom);
+
+extern int uAllAscii(const unichar_t *str);
+extern int AllAscii(const char *);
+extern char *StripToASCII(const char *utf8_str);
+
+extern char *copytolower(const char *);
+extern int endswith(const char *haystack,const char *needle);
+extern int endswithi(const char *haystack,const char *needle);
+extern int endswithi_partialExtension( const char *haystack,const char *needle);
+
+/**
+ * Remove trailing \n or \r from the given string. No memory
+ * allocations are performed, null is injected over these terminators
+ * to trim the string.
+ *
+ * This function is designed to be impotent if called with a string
+ * that does not end with \n or \r. ie, you don't need to redundantly
+ * check if there is a newline at the end of string and not call here
+ * if there is no newline. You can just call here with any string and
+ * be assured that afterwards there will be no trailing newline or
+ * carrage return character found at the end of the string pointed to
+ * by 'p'.
+ */
+extern char* chomp( char* p );
+
+/**
+ * Return true if the haystack plain string ends with the string
+ * needle. Return 0 otherwise.
+ *
+ * Needles which are larger than the haystack are handled.
+ *
+ * No new strings are allocated, freed, or returned.
+ */
+int endswith(const char *haystack,const char *needle);
+
+/**
+ * Return true if the haystack unicode string ends with the string needle.
+ * Return 0 otherwise.
+ *
+ * Needles which are larger than the haystack are handled.
+ *
+ * No new strings are allocated, freed, or returned.
+ */
+extern int u_endswith(const unichar_t *haystack,const unichar_t *needle);
+
+extern int u_startswith(const unichar_t *haystack,const unichar_t *needle);
+extern int uc_startswith(const unichar_t *haystack,const char* needle);
+
+/**
+ * In the string 's' replace all occurances of 'orig' with 'replacement'.
+ * If you set free_s to true then the string 's' will be freed by this function.
+ * Normally you want to set free_s to 0 to avoid that. The case you will want to
+ * use free_s to 1 is chaining many calls like:
+ *
+ * char* s = copy( input );
+ * s = str_replace_all( s, "foo", "bar", 1 );
+ * s = str_replace_all( s, "baz", "gah", 1 );
+ * // use s
+ * free(s);
+ * // no leaks in the above.
+ *
+ * Note that 's' is first copied before the first call to replace_all in the above
+ * so it can be freed without concern. This also allows the ordering of replace_all
+ * in the above to be changed without having to worry about the free_s flag.
+ */
+extern char* str_replace_all( char* s, char* orig, char* replacement, int free_s );
+
+
+int toint( char* v );
+char* tostr( int v );
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/utype.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/utype.h
new file mode 100644
index 00000000000..d977213ff23
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/inc/utype.h
@@ -0,0 +1,155 @@
+#ifndef _UTYPE_H
+#define _UTYPE_H
+/* Copyright: 2001 George Williams */
+/* License: BSD-3-clause */
+/* Contributions: Joe Da Silva */
+
+/* This file was generated using the program 'makeutype' */
+
+#include <ctype.h> /* Include here so we can control it. If a system header includes it later bad things happen */
+#include <basics.h> /* Include here so we can use pre-defined int types to correctly size constant data arrays. */
+#ifdef tolower
+# undef tolower
+#endif
+#ifdef toupper
+# undef toupper
+#endif
+#ifdef islower
+# undef islower
+#endif
+#ifdef isupper
+# undef isupper
+#endif
+#ifdef isalpha
+# undef isalpha
+#endif
+#ifdef isdigit
+# undef isdigit
+#endif
+#ifdef isalnum
+# undef isalnum
+#endif
+#ifdef isspace
+# undef isspace
+#endif
+#ifdef ispunct
+# undef ispunct
+#endif
+#ifdef ishexdigit
+# undef ishexdigit
+#endif
+
+extern const unsigned short ____tolower[];
+extern const unsigned short ____toupper[];
+extern const unsigned short ____totitle[];
+extern const unsigned short ____tomirror[];
+extern const unsigned char ____digitval[];
+
+/* utype[] holds binary flags used for features of each unicode.org character */
+#define ____L 0x1
+#define ____U 0x2
+#define ____TITLE 0x4
+#define ____D 0x8
+#define ____S 0x10
+#define ____P 0x20
+#define ____X 0x40
+#define ____ZW 0x80
+#define ____L2R 0x100
+#define ____R2L 0x200
+#define ____ENUM 0x400
+#define ____ANUM 0x800
+#define ____ENS 0x1000
+#define ____CS 0x2000
+#define ____ENT 0x4000
+#define ____COMBINE 0x8000
+#define ____BB 0x10000
+#define ____BA 0x20000
+#define ____NS 0x40000
+#define ____NE 0x80000
+#define ____UB 0x100000
+#define ____NB 0x8000000
+#define ____AL 0x200000
+#define ____ID 0x400000
+#define ____INITIAL 0x800000
+#define ____MEDIAL 0x1000000
+#define ____FINAL 0x2000000
+#define ____ISOLATED 0x4000000
+#define ____DECOMPNORM 0x10000000
+
+#define islower(ch) (____utype[(ch)+1]&____L)
+#define isupper(ch) (____utype[(ch)+1]&____U)
+#define istitle(ch) (____utype[(ch)+1]&____TITLE)
+#define isalpha(ch) (____utype[(ch)+1]&(____L|____U|____TITLE|____AL))
+#define isdigit(ch) (____utype[(ch)+1]&____D)
+#define isalnum(ch) (____utype[(ch)+1]&(____L|____U|____TITLE|____AL|____D))
+#define isideographic(ch) (____utype[(ch)+1]&____ID)
+#define isideoalpha(ch) (____utype[(ch)+1]&(____ID|____L|____U|____TITLE|____AL))
+#define isspace(ch) (____utype[(ch)+1]&____S)
+#define ispunct(ch) (____utype[(ch)+1]&_____P)
+#define ishexdigit(ch) (____utype[(ch)+1]&____X)
+#define iszerowidth(ch) (____utype[(ch)+1]&____ZW)
+#define islefttoright(ch) (____utype[(ch)+1]&____L2R)
+#define isrighttoleft(ch) (____utype[(ch)+1]&____R2L)
+#define iseuronumeric(ch) (____utype[(ch)+1]&____ENUM)
+#define isarabnumeric(ch) (____utype[(ch)+1]&____ANUM)
+#define iseuronumsep(ch) (____utype[(ch)+1]&____ENS)
+#define iscommonsep(ch) (____utype[(ch)+1]&____CS)
+#define iseuronumterm(ch) (____utype[(ch)+1]&____ENT)
+#define iscombining(ch) (____utype[(ch)+1]&____COMBINE)
+#define isbreakbetweenok(ch1,ch2) (((____utype[(ch1)+1]&____BA) && !(____utype[(ch2)+1]&____NS)) || ((____utype[(ch2)+1]&____BB) && !(____utype[(ch1)+1]&____NE)) || (!(____utype[(ch2)+1]&____D) && ch1=='/'))
+#define isnobreak(ch) (____utype[(ch)+1]&____NB)
+#define isarabinitial(ch) (____utype[(ch)+1]&____INITIAL)
+#define isarabmedial(ch) (____utype[(ch)+1]&____MEDIAL)
+#define isarabfinal(ch) (____utype[(ch)+1]&____FINAL)
+#define isarabisolated(ch) (____utype[(ch)+1]&____ISOLATED)
+
+#define isdecompositionnormative(ch) (____utype[(ch)+1]&____DECOMPNORM)
+
+extern const uint32 ____utype[]; /* hold character type features for each Unicode.org defined character */
+
+/* utype2[] binary flags used for position/layout of each unicode.org character */
+#define ____COMBININGCLASS 0xff
+#define ____ABOVE 0x100
+#define ____BELOW 0x200
+#define ____OVERSTRIKE 0x400
+#define ____LEFT 0x800
+#define ____RIGHT 0x1000
+#define ____JOINS2 0x2000
+#define ____CENTERLEFT 0x4000
+#define ____CENTERRIGHT 0x8000
+#define ____CENTEREDOUTSIDE 0x10000
+#define ____OUTSIDE 0x20000
+#define ____LEFTEDGE 0x80000
+#define ____RIGHTEDGE 0x40000
+#define ____TOUCHING 0x100000
+#define ____COMBININGPOSMASK 0x1fff00
+#define ____NOPOSDATAGIVEN (uint32)(-1) /* -1 == no position data given */
+
+#define combiningclass(ch) (____utype2[(ch)+1]&____COMBININGCLASS)
+#define combiningposmask(ch) (____utype2[(ch)+1]&____COMBININGPOSMASK)
+
+extern const uint32 ____utype2[]; /* hold position boolean flags for each Unicode.org defined character */
+
+#define isunicodepointassigned(ch) (____codepointassigned[(ch)/32]&(1<<((ch)%32)))
+
+extern const uint32 ____codepointassigned[]; /* 1bit_boolean_flag x 32 = exists in Unicode.org character chart list. */
+
+#define tolower(ch) (____tolower[(ch)+1])
+#define toupper(ch) (____toupper[(ch)+1])
+#define totitle(ch) (____totitle[(ch)+1])
+#define tomirror(ch) (____tomirror[(ch)+1])
+#define tovalue(ch) (____digitval[(ch)+1])
+
+
+extern struct arabicforms {
+ unsigned short initial, medial, final, isolated;
+ unsigned int isletter: 1;
+ unsigned int joindual: 1;
+ unsigned int required_lig_with_alef: 1;
+} ArabicForms[256]; /* for chars 0x600-0x6ff, subtract 0x600 to use array */
+
+#define _SOFT_HYPHEN 0xad
+
+#define _DOUBLE_S 0xdf
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/LICENSE b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/LICENSE
new file mode 100644
index 00000000000..d6456956733
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) 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. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/Makefile.am
new file mode 100644
index 00000000000..322e6d449dd
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/Makefile.am
@@ -0,0 +1,36 @@
+noinst_LIBRARIES = libwoff2.a
+libwoff2_a_SOURCES = \
+ src/buffer.h \
+ src/file.h \
+ src/font.cc \
+ src/font.h \
+ src/glyph.cc \
+ src/glyph.h \
+ src/normalize.cc \
+ src/normalize.h \
+ src/port.h \
+ src/round.h \
+ src/store_bytes.h \
+ src/table_tags.cc \
+ src/table_tags.h \
+ src/transform.cc \
+ src/transform.h \
+ src/variable_length.cc \
+ src/variable_length.h \
+ src/woff2_common.cc \
+ src/woff2_common.h \
+ src/woff2_dec.h \
+ src/woff2_enc.cc \
+ src/woff2_enc.h \
+ src/woff2_out.cc \
+ src/woff2_out.h
+
+EXTRA_DIST = LICENSE
+
+AM_CXXFLAGS = -Wall -I$(srcdir)/brotli/enc
+
+SUBDIRS = brotli
+
+@CODE_COVERAGE_RULES@
+
+CLEANFILES = *.gcda *.gcno
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/Makefile.in
new file mode 100644
index 00000000000..2c5c5532c63
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/Makefile.in
@@ -0,0 +1,764 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = libs/woff2
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libwoff2_a_AR = $(AR) $(ARFLAGS)
+libwoff2_a_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libwoff2_a_OBJECTS = src/font.$(OBJEXT) src/glyph.$(OBJEXT) \
+ src/normalize.$(OBJEXT) src/table_tags.$(OBJEXT) \
+ src/transform.$(OBJEXT) src/variable_length.$(OBJEXT) \
+ src/woff2_common.$(OBJEXT) src/woff2_enc.$(OBJEXT) \
+ src/woff2_out.$(OBJEXT)
+libwoff2_a_OBJECTS = $(am_libwoff2_a_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo " CXX " $@;
+am__v_CXX_1 =
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo " CXXLD " $@;
+am__v_CXXLD_1 =
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libwoff2_a_SOURCES)
+DIST_SOURCES = $(libwoff2_a_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GCOV = @GCOV@
+GENHTML = @GENHTML@
+GREP = @GREP@
+HAVE_CXX11 = @HAVE_CXX11@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCOV = @LCOV@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ZLIB_CFLAGS = @ZLIB_CFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_LIBRARIES = libwoff2.a
+libwoff2_a_SOURCES = \
+ src/buffer.h \
+ src/file.h \
+ src/font.cc \
+ src/font.h \
+ src/glyph.cc \
+ src/glyph.h \
+ src/normalize.cc \
+ src/normalize.h \
+ src/port.h \
+ src/round.h \
+ src/store_bytes.h \
+ src/table_tags.cc \
+ src/table_tags.h \
+ src/transform.cc \
+ src/transform.h \
+ src/variable_length.cc \
+ src/variable_length.h \
+ src/woff2_common.cc \
+ src/woff2_common.h \
+ src/woff2_dec.h \
+ src/woff2_enc.cc \
+ src/woff2_enc.h \
+ src/woff2_out.cc \
+ src/woff2_out.h
+
+EXTRA_DIST = LICENSE
+AM_CXXFLAGS = -Wall -I$(srcdir)/brotli/enc
+SUBDIRS = brotli
+CLEANFILES = *.gcda *.gcno
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cc .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/woff2/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu libs/woff2/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+src/$(am__dirstamp):
+ @$(MKDIR_P) src
+ @: > src/$(am__dirstamp)
+src/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/$(DEPDIR)
+ @: > src/$(DEPDIR)/$(am__dirstamp)
+src/font.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/glyph.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/normalize.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/table_tags.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/transform.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/variable_length.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/woff2_common.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/woff2_enc.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/woff2_out.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+
+libwoff2.a: $(libwoff2_a_OBJECTS) $(libwoff2_a_DEPENDENCIES) $(EXTRA_libwoff2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libwoff2.a
+ $(AM_V_AR)$(libwoff2_a_AR) libwoff2.a $(libwoff2_a_OBJECTS) $(libwoff2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libwoff2.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f src/*.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/font.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/glyph.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/normalize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/table_tags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/transform.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/variable_length.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/woff2_common.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/woff2_enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/woff2_out.Po@am__quote@
+
+.cc.o:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LIBRARIES)
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f src/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf src/$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf src/$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic clean-noinstLIBRARIES \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am
+
+.PRECIOUS: Makefile
+
+
+@CODE_COVERAGE_RULES@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/LICENSE b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/LICENSE
new file mode 100644
index 00000000000..6298a5dc97b
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2009, 2010, 2013-2015 by the Brotli Authors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/Makefile.am
new file mode 100644
index 00000000000..0684ff2c794
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/Makefile.am
@@ -0,0 +1,57 @@
+noinst_LIBRARIES = libbrotli.a
+libbrotli_a_SOURCES = \
+ enc/backward_references.cc \
+ enc/backward_references.h \
+ enc/bit_cost.h \
+ enc/block_splitter.cc \
+ enc/block_splitter.h \
+ enc/brotli_bit_stream.cc \
+ enc/brotli_bit_stream.h \
+ enc/cluster.h \
+ enc/command.h \
+ enc/compress_fragment.cc \
+ enc/compress_fragment.h \
+ enc/compress_fragment_two_pass.cc \
+ enc/compress_fragment_two_pass.h \
+ enc/compressor.h \
+ enc/context.h \
+ enc/dictionary.cc \
+ enc/dictionary.h \
+ enc/dictionary_hash.h \
+ enc/encode.cc \
+ enc/encode.h \
+ enc/encode_parallel.cc \
+ enc/encode_parallel.h \
+ enc/entropy_encode.cc \
+ enc/entropy_encode.h \
+ enc/entropy_encode_static.h \
+ enc/fast_log.h \
+ enc/find_match_length.h \
+ enc/hash.h \
+ enc/histogram.cc \
+ enc/histogram.h \
+ enc/literal_cost.cc \
+ enc/literal_cost.h \
+ enc/metablock.cc \
+ enc/metablock.h \
+ enc/port.h \
+ enc/prefix.h \
+ enc/ringbuffer.h \
+ enc/static_dict.cc \
+ enc/static_dict.h \
+ enc/static_dict_lut.h \
+ enc/streams.cc \
+ enc/streams.h \
+ enc/transform.h \
+ enc/types.h \
+ enc/utf8_util.cc \
+ enc/utf8_util.h \
+ enc/write_bits.h
+
+EXTRA_DIST = LICENSE
+
+AM_CXXFLAGS = -Wall
+
+@CODE_COVERAGE_RULES@
+
+CLEANFILES = *.gcda *.gcno
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/Makefile.in
new file mode 100644
index 00000000000..2710fca9592
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/Makefile.in
@@ -0,0 +1,694 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = libs/woff2/brotli
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libbrotli_a_AR = $(AR) $(ARFLAGS)
+libbrotli_a_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libbrotli_a_OBJECTS = enc/backward_references.$(OBJEXT) \
+ enc/block_splitter.$(OBJEXT) enc/brotli_bit_stream.$(OBJEXT) \
+ enc/compress_fragment.$(OBJEXT) \
+ enc/compress_fragment_two_pass.$(OBJEXT) \
+ enc/dictionary.$(OBJEXT) enc/encode.$(OBJEXT) \
+ enc/encode_parallel.$(OBJEXT) enc/entropy_encode.$(OBJEXT) \
+ enc/histogram.$(OBJEXT) enc/literal_cost.$(OBJEXT) \
+ enc/metablock.$(OBJEXT) enc/static_dict.$(OBJEXT) \
+ enc/streams.$(OBJEXT) enc/utf8_util.$(OBJEXT)
+libbrotli_a_OBJECTS = $(am_libbrotli_a_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo " CXX " $@;
+am__v_CXX_1 =
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo " CXXLD " $@;
+am__v_CXXLD_1 =
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libbrotli_a_SOURCES)
+DIST_SOURCES = $(libbrotli_a_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GCOV = @GCOV@
+GENHTML = @GENHTML@
+GREP = @GREP@
+HAVE_CXX11 = @HAVE_CXX11@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCOV = @LCOV@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ZLIB_CFLAGS = @ZLIB_CFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_LIBRARIES = libbrotli.a
+libbrotli_a_SOURCES = \
+ enc/backward_references.cc \
+ enc/backward_references.h \
+ enc/bit_cost.h \
+ enc/block_splitter.cc \
+ enc/block_splitter.h \
+ enc/brotli_bit_stream.cc \
+ enc/brotli_bit_stream.h \
+ enc/cluster.h \
+ enc/command.h \
+ enc/compress_fragment.cc \
+ enc/compress_fragment.h \
+ enc/compress_fragment_two_pass.cc \
+ enc/compress_fragment_two_pass.h \
+ enc/compressor.h \
+ enc/context.h \
+ enc/dictionary.cc \
+ enc/dictionary.h \
+ enc/dictionary_hash.h \
+ enc/encode.cc \
+ enc/encode.h \
+ enc/encode_parallel.cc \
+ enc/encode_parallel.h \
+ enc/entropy_encode.cc \
+ enc/entropy_encode.h \
+ enc/entropy_encode_static.h \
+ enc/fast_log.h \
+ enc/find_match_length.h \
+ enc/hash.h \
+ enc/histogram.cc \
+ enc/histogram.h \
+ enc/literal_cost.cc \
+ enc/literal_cost.h \
+ enc/metablock.cc \
+ enc/metablock.h \
+ enc/port.h \
+ enc/prefix.h \
+ enc/ringbuffer.h \
+ enc/static_dict.cc \
+ enc/static_dict.h \
+ enc/static_dict_lut.h \
+ enc/streams.cc \
+ enc/streams.h \
+ enc/transform.h \
+ enc/types.h \
+ enc/utf8_util.cc \
+ enc/utf8_util.h \
+ enc/write_bits.h
+
+EXTRA_DIST = LICENSE
+AM_CXXFLAGS = -Wall
+CLEANFILES = *.gcda *.gcno
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/woff2/brotli/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu libs/woff2/brotli/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+enc/$(am__dirstamp):
+ @$(MKDIR_P) enc
+ @: > enc/$(am__dirstamp)
+enc/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) enc/$(DEPDIR)
+ @: > enc/$(DEPDIR)/$(am__dirstamp)
+enc/backward_references.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/block_splitter.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/brotli_bit_stream.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/compress_fragment.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/compress_fragment_two_pass.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/dictionary.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/encode.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/encode_parallel.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/entropy_encode.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/histogram.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/literal_cost.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/metablock.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/static_dict.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/streams.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+enc/utf8_util.$(OBJEXT): enc/$(am__dirstamp) \
+ enc/$(DEPDIR)/$(am__dirstamp)
+
+libbrotli.a: $(libbrotli_a_OBJECTS) $(libbrotli_a_DEPENDENCIES) $(EXTRA_libbrotli_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libbrotli.a
+ $(AM_V_AR)$(libbrotli_a_AR) libbrotli.a $(libbrotli_a_OBJECTS) $(libbrotli_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libbrotli.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f enc/*.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/backward_references.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/block_splitter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/brotli_bit_stream.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/compress_fragment.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/compress_fragment_two_pass.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/dictionary.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/encode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/encode_parallel.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/entropy_encode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/histogram.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/literal_cost.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/metablock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/static_dict.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/streams.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/utf8_util.Po@am__quote@
+
+.cc.o:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f enc/$(DEPDIR)/$(am__dirstamp)
+ -rm -f enc/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf enc/$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf enc/$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am
+
+.PRECIOUS: Makefile
+
+
+@CODE_COVERAGE_RULES@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/backward_references.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/backward_references.cc
new file mode 100644
index 00000000000..539c1e76237
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/backward_references.cc
@@ -0,0 +1,858 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Function to find backward reference copies.
+
+#include "./backward_references.h"
+
+#include <algorithm>
+#include <limits>
+#include <vector>
+
+#include "./command.h"
+#include "./fast_log.h"
+#include "./literal_cost.h"
+
+namespace brotli {
+
+// The maximum length for which the zopflification uses distinct distances.
+static const uint16_t kMaxZopfliLen = 325;
+
+// Histogram based cost model for zopflification.
+class ZopfliCostModel {
+ public:
+ ZopfliCostModel(void) : min_cost_cmd_(kInfinity) {}
+
+ void SetFromCommands(size_t num_bytes,
+ size_t position,
+ const uint8_t* ringbuffer,
+ size_t ringbuffer_mask,
+ const Command* commands,
+ size_t num_commands,
+ size_t last_insert_len) {
+ std::vector<uint32_t> histogram_literal(256, 0);
+ std::vector<uint32_t> histogram_cmd(kNumCommandPrefixes, 0);
+ std::vector<uint32_t> histogram_dist(kNumDistancePrefixes, 0);
+
+ size_t pos = position - last_insert_len;
+ for (size_t i = 0; i < num_commands; i++) {
+ size_t inslength = commands[i].insert_len_;
+ size_t copylength = commands[i].copy_len();
+ size_t distcode = commands[i].dist_prefix_;
+ size_t cmdcode = commands[i].cmd_prefix_;
+
+ histogram_cmd[cmdcode]++;
+ if (cmdcode >= 128) histogram_dist[distcode]++;
+
+ for (size_t j = 0; j < inslength; j++) {
+ histogram_literal[ringbuffer[(pos + j) & ringbuffer_mask]]++;
+ }
+
+ pos += inslength + copylength;
+ }
+
+ std::vector<float> cost_literal;
+ Set(histogram_literal, &cost_literal);
+ Set(histogram_cmd, &cost_cmd_);
+ Set(histogram_dist, &cost_dist_);
+
+ for (uint32_t i = 0; i < kNumCommandPrefixes; ++i) {
+ min_cost_cmd_ = std::min(min_cost_cmd_, cost_cmd_[i]);
+ }
+
+ literal_costs_.resize(num_bytes + 1);
+ literal_costs_[0] = 0.0;
+ for (size_t i = 0; i < num_bytes; ++i) {
+ literal_costs_[i + 1] = literal_costs_[i] +
+ cost_literal[ringbuffer[(position + i) & ringbuffer_mask]];
+ }
+ }
+
+ void SetFromLiteralCosts(size_t num_bytes,
+ size_t position,
+ const uint8_t* ringbuffer,
+ size_t ringbuffer_mask) {
+ literal_costs_.resize(num_bytes + 2);
+ EstimateBitCostsForLiterals(position, num_bytes, ringbuffer_mask,
+ ringbuffer, &literal_costs_[1]);
+ literal_costs_[0] = 0.0;
+ for (size_t i = 0; i < num_bytes; ++i) {
+ literal_costs_[i + 1] += literal_costs_[i];
+ }
+ cost_cmd_.resize(kNumCommandPrefixes);
+ cost_dist_.resize(kNumDistancePrefixes);
+ for (uint32_t i = 0; i < kNumCommandPrefixes; ++i) {
+ cost_cmd_[i] = static_cast<float>(FastLog2(11 + i));
+ }
+ for (uint32_t i = 0; i < kNumDistancePrefixes; ++i) {
+ cost_dist_[i] = static_cast<float>(FastLog2(20 + i));
+ }
+ min_cost_cmd_ = static_cast<float>(FastLog2(11));
+ }
+
+ float GetCommandCost(
+ size_t dist_code, size_t length_code, size_t insert_length) const {
+ uint16_t inscode = GetInsertLengthCode(insert_length);
+ uint16_t copycode = GetCopyLengthCode(length_code);
+ uint16_t cmdcode = CombineLengthCodes(inscode, copycode, dist_code == 0);
+ uint16_t dist_symbol;
+ uint32_t distextra;
+ PrefixEncodeCopyDistance(dist_code, 0, 0, &dist_symbol, &distextra);
+ uint32_t distnumextra = distextra >> 24;
+
+ float result = static_cast<float>(
+ GetInsertExtra(inscode) + GetCopyExtra(copycode) + distnumextra);
+ result += cost_cmd_[cmdcode];
+ if (cmdcode >= 128) result += cost_dist_[dist_symbol];
+ return result;
+ }
+
+ float GetLiteralCosts(size_t from, size_t to) const {
+ return literal_costs_[to] - literal_costs_[from];
+ }
+
+ float GetMinCostCmd(void) const {
+ return min_cost_cmd_;
+ }
+
+ private:
+ void Set(const std::vector<uint32_t>& histogram, std::vector<float>* cost) {
+ cost->resize(histogram.size());
+ size_t sum = 0;
+ for (size_t i = 0; i < histogram.size(); i++) {
+ sum += histogram[i];
+ }
+ float log2sum = static_cast<float>(FastLog2(sum));
+ for (size_t i = 0; i < histogram.size(); i++) {
+ if (histogram[i] == 0) {
+ (*cost)[i] = log2sum + 2;
+ continue;
+ }
+
+ // Shannon bits for this symbol.
+ (*cost)[i] = log2sum - static_cast<float>(FastLog2(histogram[i]));
+
+ // Cannot be coded with less than 1 bit
+ if ((*cost)[i] < 1) (*cost)[i] = 1;
+ }
+ }
+
+ std::vector<float> cost_cmd_; // The insert and copy length symbols.
+ std::vector<float> cost_dist_;
+ // Cumulative costs of literals per position in the stream.
+ std::vector<float> literal_costs_;
+ float min_cost_cmd_;
+};
+
+inline size_t ComputeDistanceCode(size_t distance,
+ size_t max_distance,
+ int quality,
+ const int* dist_cache) {
+ if (distance <= max_distance) {
+ if (distance == static_cast<size_t>(dist_cache[0])) {
+ return 0;
+ } else if (distance == static_cast<size_t>(dist_cache[1])) {
+ return 1;
+ } else if (distance == static_cast<size_t>(dist_cache[2])) {
+ return 2;
+ } else if (distance == static_cast<size_t>(dist_cache[3])) {
+ return 3;
+ } else if (quality > 3 && distance >= 6) {
+ for (size_t k = 4; k < kNumDistanceShortCodes; ++k) {
+ size_t idx = kDistanceCacheIndex[k];
+ size_t candidate =
+ static_cast<size_t>(dist_cache[idx] + kDistanceCacheOffset[k]);
+ static const size_t kLimits[16] = { 0, 0, 0, 0,
+ 6, 6, 11, 11,
+ 11, 11, 11, 11,
+ 12, 12, 12, 12 };
+ if (distance == candidate && distance >= kLimits[k]) {
+ return k;
+ }
+ }
+ }
+ }
+ return distance + 15;
+}
+
+// REQUIRES: len >= 2, start_pos <= pos
+// REQUIRES: cost < kInfinity, nodes[start_pos].cost < kInfinity
+// Maintains the "ZopfliNode array invariant".
+inline void UpdateZopfliNode(ZopfliNode* nodes, size_t pos, size_t start_pos,
+ size_t len, size_t len_code, size_t dist,
+ size_t short_code, float cost) {
+ ZopfliNode& next = nodes[pos + len];
+ next.length = static_cast<uint32_t>(len | ((len + 9u - len_code) << 24));
+ next.distance = static_cast<uint32_t>(dist | (short_code << 25));
+ next.insert_length = static_cast<uint32_t>(pos - start_pos);
+ next.cost = cost;
+}
+
+// Maintains the smallest 2^k cost difference together with their positions
+class StartPosQueue {
+ public:
+ struct PosData {
+ size_t pos;
+ int distance_cache[4];
+ float costdiff;
+ };
+
+ explicit StartPosQueue(int bits)
+ : mask_((1u << bits) - 1), q_(1 << bits), idx_(0) {}
+
+ void Clear(void) {
+ idx_ = 0;
+ }
+
+ void Push(const StartPosQueue::PosData& posdata) {
+ size_t offset = ~idx_ & mask_;
+ ++idx_;
+ size_t len = size();
+ q_[offset] = posdata;
+ /* Restore the sorted order. In the list of |len| items at most |len - 1|
+ adjacent element comparisons / swaps are required. */
+ for (size_t i = 1; i < len; ++i) {
+ if (q_[offset & mask_].costdiff > q_[(offset + 1) & mask_].costdiff) {
+ std::swap(q_[offset & mask_], q_[(offset + 1) & mask_]);
+ }
+ ++offset;
+ }
+ }
+
+ size_t size(void) const { return std::min(idx_, mask_ + 1); }
+
+ const StartPosQueue::PosData& GetStartPosData(size_t k) const {
+ return q_[(k - idx_) & mask_];
+ }
+
+ private:
+ const size_t mask_;
+ std::vector<PosData> q_;
+ size_t idx_;
+};
+
+// Returns the minimum possible copy length that can improve the cost of any
+// future position.
+static size_t ComputeMinimumCopyLength(const StartPosQueue& queue,
+ const ZopfliNode* nodes,
+ const ZopfliCostModel& model,
+ const size_t num_bytes,
+ const size_t pos) {
+ // Compute the minimum possible cost of reaching any future position.
+ const size_t start0 = queue.GetStartPosData(0).pos;
+ float min_cost = (nodes[start0].cost +
+ model.GetLiteralCosts(start0, pos) +
+ model.GetMinCostCmd());
+ size_t len = 2;
+ size_t next_len_bucket = 4;
+ size_t next_len_offset = 10;
+ while (pos + len <= num_bytes && nodes[pos + len].cost <= min_cost) {
+ // We already reached (pos + len) with no more cost than the minimum
+ // possible cost of reaching anything from this pos, so there is no point in
+ // looking for lengths <= len.
+ ++len;
+ if (len == next_len_offset) {
+ // We reached the next copy length code bucket, so we add one more
+ // extra bit to the minimum cost.
+ min_cost += static_cast<float>(1.0);
+ next_len_offset += next_len_bucket;
+ next_len_bucket *= 2;
+ }
+ }
+ return len;
+}
+
+// Fills in dist_cache[0..3] with the last four distances (as defined by
+// Section 4. of the Spec) that would be used at (block_start + pos) if we
+// used the shortest path of commands from block_start, computed from
+// nodes[0..pos]. The last four distances at block_start are in
+// starting_dist_cach[0..3].
+// REQUIRES: nodes[pos].cost < kInfinity
+// REQUIRES: nodes[0..pos] satisfies that "ZopfliNode array invariant".
+static void ComputeDistanceCache(const size_t block_start,
+ const size_t pos,
+ const size_t max_backward,
+ const int* starting_dist_cache,
+ const ZopfliNode* nodes,
+ int* dist_cache) {
+ int idx = 0;
+ size_t p = pos;
+ // Because of prerequisite, does at most (pos + 1) / 2 iterations.
+ while (idx < 4 && p > 0) {
+ const size_t clen = nodes[p].copy_length();
+ const size_t ilen = nodes[p].insert_length;
+ const size_t dist = nodes[p].copy_distance();
+ // Since block_start + p is the end position of the command, the copy part
+ // starts from block_start + p - clen. Distances that are greater than this
+ // or greater than max_backward are static dictionary references, and do
+ // not update the last distances. Also distance code 0 (last distance)
+ // does not update the last distances.
+ if (dist + clen <= block_start + p && dist <= max_backward &&
+ nodes[p].distance_code() > 0) {
+ dist_cache[idx++] = static_cast<int>(dist);
+ }
+ // Because of prerequisite, p >= clen + ilen >= 2.
+ p -= clen + ilen;
+ }
+ for (; idx < 4; ++idx) {
+ dist_cache[idx] = *starting_dist_cache++;
+ }
+}
+
+static void UpdateNodes(const size_t num_bytes,
+ const size_t block_start,
+ const size_t pos,
+ const uint8_t* ringbuffer,
+ const size_t ringbuffer_mask,
+ const size_t max_backward_limit,
+ const int* starting_dist_cache,
+ const size_t num_matches,
+ const BackwardMatch* matches,
+ const ZopfliCostModel* model,
+ StartPosQueue* queue,
+ ZopfliNode* nodes) {
+ size_t cur_ix = block_start + pos;
+ size_t cur_ix_masked = cur_ix & ringbuffer_mask;
+ size_t max_distance = std::min(cur_ix, max_backward_limit);
+
+ if (nodes[pos].cost <= model->GetLiteralCosts(0, pos)) {
+ StartPosQueue::PosData posdata;
+ posdata.pos = pos;
+ posdata.costdiff = nodes[pos].cost - model->GetLiteralCosts(0, pos);
+ ComputeDistanceCache(block_start, pos, max_backward_limit,
+ starting_dist_cache, nodes, posdata.distance_cache);
+ queue->Push(posdata);
+ }
+
+ const size_t min_len = ComputeMinimumCopyLength(
+ *queue, nodes, *model, num_bytes, pos);
+
+ // Go over the command starting positions in order of increasing cost
+ // difference.
+ for (size_t k = 0; k < 5 && k < queue->size(); ++k) {
+ const StartPosQueue::PosData& posdata = queue->GetStartPosData(k);
+ const size_t start = posdata.pos;
+ const float start_costdiff = posdata.costdiff;
+
+ // Look for last distance matches using the distance cache from this
+ // starting position.
+ size_t best_len = min_len - 1;
+ for (size_t j = 0; j < kNumDistanceShortCodes; ++j) {
+ const size_t idx = kDistanceCacheIndex[j];
+ const size_t backward = static_cast<size_t>(posdata.distance_cache[idx] +
+ kDistanceCacheOffset[j]);
+ size_t prev_ix = cur_ix - backward;
+ if (prev_ix >= cur_ix) {
+ continue;
+ }
+ if (PREDICT_FALSE(backward > max_distance)) {
+ continue;
+ }
+ prev_ix &= ringbuffer_mask;
+
+ if (cur_ix_masked + best_len > ringbuffer_mask ||
+ prev_ix + best_len > ringbuffer_mask ||
+ ringbuffer[cur_ix_masked + best_len] !=
+ ringbuffer[prev_ix + best_len]) {
+ continue;
+ }
+ const size_t len =
+ FindMatchLengthWithLimit(&ringbuffer[prev_ix],
+ &ringbuffer[cur_ix_masked],
+ num_bytes - pos);
+ for (size_t l = best_len + 1; l <= len; ++l) {
+ const size_t inslen = pos - start;
+ float cmd_cost = model->GetCommandCost(j, l, inslen);
+ float cost = start_costdiff + cmd_cost + model->GetLiteralCosts(0, pos);
+ if (cost < nodes[pos + l].cost) {
+ UpdateZopfliNode(&nodes[0], pos, start, l, l, backward, j + 1, cost);
+ }
+ best_len = l;
+ }
+ }
+
+ // At higher iterations look only for new last distance matches, since
+ // looking only for new command start positions with the same distances
+ // does not help much.
+ if (k >= 2) continue;
+
+ // Loop through all possible copy lengths at this position.
+ size_t len = min_len;
+ for (size_t j = 0; j < num_matches; ++j) {
+ BackwardMatch match = matches[j];
+ size_t dist = match.distance;
+ bool is_dictionary_match = dist > max_distance;
+ // We already tried all possible last distance matches, so we can use
+ // normal distance code here.
+ size_t dist_code = dist + 15;
+ // Try all copy lengths up until the maximum copy length corresponding
+ // to this distance. If the distance refers to the static dictionary, or
+ // the maximum length is long enough, try only one maximum length.
+ size_t max_len = match.length();
+ if (len < max_len && (is_dictionary_match || max_len > kMaxZopfliLen)) {
+ len = max_len;
+ }
+ for (; len <= max_len; ++len) {
+ size_t len_code = is_dictionary_match ? match.length_code() : len;
+ const size_t inslen = pos - start;
+ float cmd_cost = model->GetCommandCost(dist_code, len_code, inslen);
+ float cost = start_costdiff + cmd_cost + model->GetLiteralCosts(0, pos);
+ if (cost < nodes[pos + len].cost) {
+ UpdateZopfliNode(&nodes[0], pos, start, len, len_code, dist, 0, cost);
+ }
+ }
+ }
+ }
+}
+
+static void ComputeShortestPathFromNodes(size_t num_bytes,
+ const ZopfliNode* nodes,
+ std::vector<uint32_t>* path) {
+ std::vector<uint32_t> backwards(num_bytes / 2 + 1);
+ size_t index = num_bytes;
+ while (nodes[index].cost == kInfinity) --index;
+ size_t num_commands = 0;
+ while (index != 0) {
+ size_t len = nodes[index].command_length();
+ backwards[num_commands++] = static_cast<uint32_t>(len);
+ index -= len;
+ }
+ path->resize(num_commands);
+ for (size_t i = num_commands, j = 0; i > 0; --i, ++j) {
+ (*path)[j] = backwards[i - 1];
+ }
+}
+
+void ZopfliCreateCommands(const size_t num_bytes,
+ const size_t block_start,
+ const size_t max_backward_limit,
+ const std::vector<uint32_t>& path,
+ const ZopfliNode* nodes,
+ int* dist_cache,
+ size_t* last_insert_len,
+ Command* commands,
+ size_t* num_literals) {
+ size_t pos = 0;
+ for (size_t i = 0; i < path.size(); i++) {
+ const ZopfliNode& next = nodes[pos + path[i]];
+ size_t copy_length = next.copy_length();
+ size_t insert_length = next.insert_length;
+ pos += insert_length;
+ if (i == 0) {
+ insert_length += *last_insert_len;
+ *last_insert_len = 0;
+ }
+ size_t distance = next.copy_distance();
+ size_t len_code = next.length_code();
+ size_t max_distance = std::min(block_start + pos, max_backward_limit);
+ bool is_dictionary = (distance > max_distance);
+ size_t dist_code = next.distance_code();
+
+ Command cmd(insert_length, copy_length, len_code, dist_code);
+ commands[i] = cmd;
+
+ if (!is_dictionary && dist_code > 0) {
+ dist_cache[3] = dist_cache[2];
+ dist_cache[2] = dist_cache[1];
+ dist_cache[1] = dist_cache[0];
+ dist_cache[0] = static_cast<int>(distance);
+ }
+
+ *num_literals += insert_length;
+ pos += copy_length;
+ }
+ *last_insert_len += num_bytes - pos;
+}
+
+static void ZopfliIterate(size_t num_bytes,
+ size_t position,
+ const uint8_t* ringbuffer,
+ size_t ringbuffer_mask,
+ const size_t max_backward_limit,
+ const int* dist_cache,
+ const ZopfliCostModel& model,
+ const std::vector<uint32_t>& num_matches,
+ const std::vector<BackwardMatch>& matches,
+ ZopfliNode* nodes,
+ std::vector<uint32_t>* path) {
+ nodes[0].length = 0;
+ nodes[0].cost = 0;
+ StartPosQueue queue(3);
+ size_t cur_match_pos = 0;
+ for (size_t i = 0; i + 3 < num_bytes; i++) {
+ UpdateNodes(num_bytes, position, i, ringbuffer, ringbuffer_mask,
+ max_backward_limit, dist_cache, num_matches[i],
+ &matches[cur_match_pos], &model, &queue, &nodes[0]);
+ cur_match_pos += num_matches[i];
+ // The zopflification can be too slow in case of very long lengths, so in
+ // such case skip it all, it does not cost a lot of compression ratio.
+ if (num_matches[i] == 1 &&
+ matches[cur_match_pos - 1].length() > kMaxZopfliLen) {
+ i += matches[cur_match_pos - 1].length() - 1;
+ queue.Clear();
+ }
+ }
+ ComputeShortestPathFromNodes(num_bytes, &nodes[0], path);
+}
+
+
+void ZopfliComputeShortestPath(size_t num_bytes,
+ size_t position,
+ const uint8_t* ringbuffer,
+ size_t ringbuffer_mask,
+ const size_t max_backward_limit,
+ const int* dist_cache,
+ Hashers::H10* hasher,
+ ZopfliNode* nodes,
+ std::vector<uint32_t>* path) {
+ nodes[0].length = 0;
+ nodes[0].cost = 0;
+ ZopfliCostModel* model = new ZopfliCostModel;
+ model->SetFromLiteralCosts(num_bytes, position,
+ ringbuffer, ringbuffer_mask);
+ StartPosQueue queue(3);
+ BackwardMatch matches[Hashers::H10::kMaxNumMatches];
+ for (size_t i = 0; i + 3 < num_bytes; i++) {
+ const size_t max_distance = std::min(position + i, max_backward_limit);
+ size_t num_matches = hasher->FindAllMatches(
+ ringbuffer, ringbuffer_mask, position + i, num_bytes - i, max_distance,
+ matches);
+ if (num_matches > 0 &&
+ matches[num_matches - 1].length() > kMaxZopfliLen) {
+ matches[0] = matches[num_matches - 1];
+ num_matches = 1;
+ }
+ UpdateNodes(num_bytes, position, i, ringbuffer, ringbuffer_mask,
+ max_backward_limit, dist_cache, num_matches, matches,
+ model, &queue, nodes);
+ if (num_matches == 1 && matches[0].length() > kMaxZopfliLen) {
+ for (size_t j = 1; j < matches[0].length() && i + 4 < num_bytes; ++j) {
+ ++i;
+ if (matches[0].length() - j < 64 &&
+ num_bytes - i >= kMaxTreeCompLength) {
+ hasher->Store(ringbuffer, ringbuffer_mask, position + i);
+ }
+ }
+ queue.Clear();
+ }
+ }
+ delete model;
+ ComputeShortestPathFromNodes(num_bytes, nodes, path);
+}
+
+template<typename Hasher>
+void CreateBackwardReferences(size_t num_bytes,
+ size_t position,
+ bool is_last,
+ const uint8_t* ringbuffer,
+ size_t ringbuffer_mask,
+ const int quality,
+ const int lgwin,
+ Hasher* hasher,
+ int* dist_cache,
+ size_t* last_insert_len,
+ Command* commands,
+ size_t* num_commands,
+ size_t* num_literals) {
+ // Set maximum distance, see section 9.1. of the spec.
+ const size_t max_backward_limit = (1 << lgwin) - 16;
+
+ // Choose which init method is faster.
+ // memset is about 100 times faster than hasher->InitForData().
+ const size_t kMaxBytesForPartialHashInit = Hasher::kHashMapSize >> 7;
+ if (position == 0 && is_last && num_bytes <= kMaxBytesForPartialHashInit) {
+ hasher->InitForData(ringbuffer, num_bytes);
+ } else {
+ hasher->Init();
+ }
+ if (num_bytes >= 3 && position >= 3) {
+ // Prepare the hashes for three last bytes of the last write.
+ // These could not be calculated before, since they require knowledge
+ // of both the previous and the current block.
+ hasher->Store(&ringbuffer[(position - 3) & ringbuffer_mask],
+ static_cast<uint32_t>(position - 3));
+ hasher->Store(&ringbuffer[(position - 2) & ringbuffer_mask],
+ static_cast<uint32_t>(position - 2));
+ hasher->Store(&ringbuffer[(position - 1) & ringbuffer_mask],
+ static_cast<uint32_t>(position - 1));
+ }
+ const Command * const orig_commands = commands;
+ size_t insert_length = *last_insert_len;
+ size_t i = position & ringbuffer_mask;
+ const size_t i_diff = position - i;
+ const size_t i_end = i + num_bytes;
+
+ // For speed up heuristics for random data.
+ const size_t random_heuristics_window_size = quality < 9 ? 64 : 512;
+ size_t apply_random_heuristics = i + random_heuristics_window_size;
+
+ // Minimum score to accept a backward reference.
+ const double kMinScore = 4.0;
+
+ while (i + Hasher::kHashTypeLength - 1 < i_end) {
+ size_t max_length = i_end - i;
+ size_t max_distance = std::min(i + i_diff, max_backward_limit);
+ size_t best_len = 0;
+ size_t best_len_code = 0;
+ size_t best_dist = 0;
+ double best_score = kMinScore;
+ bool match_found = hasher->FindLongestMatch(
+ ringbuffer, ringbuffer_mask,
+ dist_cache, static_cast<uint32_t>(i + i_diff), max_length, max_distance,
+ &best_len, &best_len_code, &best_dist, &best_score);
+ if (match_found) {
+ // Found a match. Let's look for something even better ahead.
+ int delayed_backward_references_in_row = 0;
+ for (;;) {
+ --max_length;
+ size_t best_len_2 =
+ quality < 5 ? std::min(best_len - 1, max_length) : 0;
+ size_t best_len_code_2 = 0;
+ size_t best_dist_2 = 0;
+ double best_score_2 = kMinScore;
+ max_distance = std::min(i + i_diff + 1, max_backward_limit);
+ match_found = hasher->FindLongestMatch(
+ ringbuffer, ringbuffer_mask,
+ dist_cache, static_cast<uint32_t>(i + i_diff + 1),
+ max_length, max_distance,
+ &best_len_2, &best_len_code_2, &best_dist_2, &best_score_2);
+ double cost_diff_lazy = 7.0;
+ if (match_found && best_score_2 >= best_score + cost_diff_lazy) {
+ // Ok, let's just write one byte for now and start a match from the
+ // next byte.
+ ++i;
+ ++insert_length;
+ best_len = best_len_2;
+ best_len_code = best_len_code_2;
+ best_dist = best_dist_2;
+ best_score = best_score_2;
+ if (++delayed_backward_references_in_row < 4) {
+ continue;
+ }
+ }
+ break;
+ }
+ apply_random_heuristics =
+ i + 2 * best_len + random_heuristics_window_size;
+ max_distance = std::min(i + i_diff, max_backward_limit);
+ // The first 16 codes are special shortcodes, and the minimum offset is 1.
+ size_t distance_code =
+ ComputeDistanceCode(best_dist, max_distance, quality, dist_cache);
+ if (best_dist <= max_distance && distance_code > 0) {
+ dist_cache[3] = dist_cache[2];
+ dist_cache[2] = dist_cache[1];
+ dist_cache[1] = dist_cache[0];
+ dist_cache[0] = static_cast<int>(best_dist);
+ }
+ Command cmd(insert_length, best_len, best_len_code, distance_code);
+ *commands++ = cmd;
+ *num_literals += insert_length;
+ insert_length = 0;
+ // Put the hash keys into the table, if there are enough
+ // bytes left.
+ for (size_t j = 2; j < best_len; ++j) {
+ hasher->Store(&ringbuffer[i + j],
+ static_cast<uint32_t>(i + i_diff + j));
+ }
+ i += best_len;
+ } else {
+ ++insert_length;
+ ++i;
+ // If we have not seen matches for a long time, we can skip some
+ // match lookups. Unsuccessful match lookups are very very expensive
+ // and this kind of a heuristic speeds up compression quite
+ // a lot.
+ if (i > apply_random_heuristics) {
+ // Going through uncompressible data, jump.
+ if (i > apply_random_heuristics + 4 * random_heuristics_window_size) {
+ // It is quite a long time since we saw a copy, so we assume
+ // that this data is not compressible, and store hashes less
+ // often. Hashes of non compressible data are less likely to
+ // turn out to be useful in the future, too, so we store less of
+ // them to not to flood out the hash table of good compressible
+ // data.
+ size_t i_jump = std::min(i + 16, i_end - 4);
+ for (; i < i_jump; i += 4) {
+ hasher->Store(ringbuffer + i, static_cast<uint32_t>(i + i_diff));
+ insert_length += 4;
+ }
+ } else {
+ size_t i_jump = std::min(i + 8, i_end - 3);
+ for (; i < i_jump; i += 2) {
+ hasher->Store(ringbuffer + i, static_cast<uint32_t>(i + i_diff));
+ insert_length += 2;
+ }
+ }
+ }
+ }
+ }
+ insert_length += i_end - i;
+ *last_insert_len = insert_length;
+ *num_commands += static_cast<size_t>(commands - orig_commands);
+}
+
+void CreateBackwardReferences(size_t num_bytes,
+ size_t position,
+ bool is_last,
+ const uint8_t* ringbuffer,
+ size_t ringbuffer_mask,
+ const int quality,
+ const int lgwin,
+ Hashers* hashers,
+ int hash_type,
+ int* dist_cache,
+ size_t* last_insert_len,
+ Command* commands,
+ size_t* num_commands,
+ size_t* num_literals) {
+ bool zopflify = quality > 9;
+ if (zopflify) {
+ Hashers::H10* hasher = hashers->hash_h10;
+ hasher->Init(lgwin, position, num_bytes, is_last);
+ hasher->StitchToPreviousBlock(num_bytes, position,
+ ringbuffer, ringbuffer_mask);
+ // Set maximum distance, see section 9.1. of the spec.
+ const size_t max_backward_limit = (1 << lgwin) - 16;
+ if (quality == 10) {
+ std::vector<ZopfliNode> nodes(num_bytes + 1);
+ std::vector<uint32_t> path;
+ ZopfliComputeShortestPath(num_bytes, position,
+ ringbuffer, ringbuffer_mask,
+ max_backward_limit, dist_cache, hasher,
+ &nodes[0], &path);
+ ZopfliCreateCommands(num_bytes, position, max_backward_limit, path,
+ &nodes[0], dist_cache, last_insert_len, commands,
+ num_literals);
+ *num_commands += path.size();
+ return;
+ }
+ std::vector<uint32_t> num_matches(num_bytes);
+ std::vector<BackwardMatch> matches(4 * num_bytes);
+ size_t cur_match_pos = 0;
+ for (size_t i = 0; i + 3 < num_bytes; ++i) {
+ size_t max_distance = std::min(position + i, max_backward_limit);
+ size_t max_length = num_bytes - i;
+ // Ensure that we have enough free slots.
+ if (matches.size() < cur_match_pos + Hashers::H10::kMaxNumMatches) {
+ matches.resize(cur_match_pos + Hashers::H10::kMaxNumMatches);
+ }
+ size_t num_found_matches = hasher->FindAllMatches(
+ ringbuffer, ringbuffer_mask, position + i, max_length, max_distance,
+ &matches[cur_match_pos]);
+ const size_t cur_match_end = cur_match_pos + num_found_matches;
+ for (size_t j = cur_match_pos; j + 1 < cur_match_end; ++j) {
+ assert(matches[j].length() < matches[j + 1].length());
+ assert(matches[j].distance > max_distance ||
+ matches[j].distance <= matches[j + 1].distance);
+ }
+ num_matches[i] = static_cast<uint32_t>(num_found_matches);
+ if (num_found_matches > 0) {
+ const size_t match_len = matches[cur_match_end - 1].length();
+ if (match_len > kMaxZopfliLen) {
+ matches[cur_match_pos++] = matches[cur_match_end - 1];
+ num_matches[i] = 1;
+ for (size_t j = 1; j < match_len; ++j) {
+ ++i;
+ if (match_len - j < 64 && num_bytes - i >= kMaxTreeCompLength) {
+ hasher->Store(ringbuffer, ringbuffer_mask, position + i);
+ }
+ num_matches[i] = 0;
+ }
+ } else {
+ cur_match_pos = cur_match_end;
+ }
+ }
+ }
+ size_t orig_num_literals = *num_literals;
+ size_t orig_last_insert_len = *last_insert_len;
+ int orig_dist_cache[4] = {
+ dist_cache[0], dist_cache[1], dist_cache[2], dist_cache[3]
+ };
+ size_t orig_num_commands = *num_commands;
+ static const size_t kIterations = 2;
+ for (size_t i = 0; i < kIterations; i++) {
+ ZopfliCostModel model;
+ if (i == 0) {
+ model.SetFromLiteralCosts(num_bytes, position,
+ ringbuffer, ringbuffer_mask);
+ } else {
+ model.SetFromCommands(num_bytes, position,
+ ringbuffer, ringbuffer_mask,
+ commands, *num_commands - orig_num_commands,
+ orig_last_insert_len);
+ }
+ *num_commands = orig_num_commands;
+ *num_literals = orig_num_literals;
+ *last_insert_len = orig_last_insert_len;
+ memcpy(dist_cache, orig_dist_cache, 4 * sizeof(dist_cache[0]));
+ std::vector<ZopfliNode> nodes(num_bytes + 1);
+ std::vector<uint32_t> path;
+ ZopfliIterate(num_bytes, position, ringbuffer, ringbuffer_mask,
+ max_backward_limit, dist_cache, model, num_matches, matches,
+ &nodes[0], &path);
+ ZopfliCreateCommands(num_bytes, position, max_backward_limit, path,
+ &nodes[0], dist_cache, last_insert_len, commands,
+ num_literals);
+ *num_commands += path.size();
+ }
+ return;
+ }
+
+ switch (hash_type) {
+ case 2:
+ CreateBackwardReferences<Hashers::H2>(
+ num_bytes, position, is_last, ringbuffer, ringbuffer_mask,
+ quality, lgwin, hashers->hash_h2, dist_cache,
+ last_insert_len, commands, num_commands, num_literals);
+ break;
+ case 3:
+ CreateBackwardReferences<Hashers::H3>(
+ num_bytes, position, is_last, ringbuffer, ringbuffer_mask,
+ quality, lgwin, hashers->hash_h3, dist_cache,
+ last_insert_len, commands, num_commands, num_literals);
+ break;
+ case 4:
+ CreateBackwardReferences<Hashers::H4>(
+ num_bytes, position, is_last, ringbuffer, ringbuffer_mask,
+ quality, lgwin, hashers->hash_h4, dist_cache,
+ last_insert_len, commands, num_commands, num_literals);
+ break;
+ case 5:
+ CreateBackwardReferences<Hashers::H5>(
+ num_bytes, position, is_last, ringbuffer, ringbuffer_mask,
+ quality, lgwin, hashers->hash_h5, dist_cache,
+ last_insert_len, commands, num_commands, num_literals);
+ break;
+ case 6:
+ CreateBackwardReferences<Hashers::H6>(
+ num_bytes, position, is_last, ringbuffer, ringbuffer_mask,
+ quality, lgwin, hashers->hash_h6, dist_cache,
+ last_insert_len, commands, num_commands, num_literals);
+ break;
+ case 7:
+ CreateBackwardReferences<Hashers::H7>(
+ num_bytes, position, is_last, ringbuffer, ringbuffer_mask,
+ quality, lgwin, hashers->hash_h7, dist_cache,
+ last_insert_len, commands, num_commands, num_literals);
+ break;
+ case 8:
+ CreateBackwardReferences<Hashers::H8>(
+ num_bytes, position, is_last, ringbuffer, ringbuffer_mask,
+ quality, lgwin, hashers->hash_h8, dist_cache,
+ last_insert_len, commands, num_commands, num_literals);
+ break;
+ case 9:
+ CreateBackwardReferences<Hashers::H9>(
+ num_bytes, position, is_last, ringbuffer, ringbuffer_mask,
+ quality, lgwin, hashers->hash_h9, dist_cache,
+ last_insert_len, commands, num_commands, num_literals);
+ break;
+ default:
+ break;
+ }
+}
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/backward_references.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/backward_references.h
new file mode 100644
index 00000000000..f60667f725f
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/backward_references.h
@@ -0,0 +1,116 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Function to find backward reference copies.
+
+#ifndef BROTLI_ENC_BACKWARD_REFERENCES_H_
+#define BROTLI_ENC_BACKWARD_REFERENCES_H_
+
+#include <vector>
+
+#include "./hash.h"
+#include "./command.h"
+#include "./types.h"
+
+namespace brotli {
+
+// "commands" points to the next output command to write to, "*num_commands" is
+// initially the total amount of commands output by previous
+// CreateBackwardReferences calls, and must be incremented by the amount written
+// by this call.
+void CreateBackwardReferences(size_t num_bytes,
+ size_t position,
+ bool is_last,
+ const uint8_t* ringbuffer,
+ size_t ringbuffer_mask,
+ const int quality,
+ const int lgwin,
+ Hashers* hashers,
+ int hash_type,
+ int* dist_cache,
+ size_t* last_insert_len,
+ Command* commands,
+ size_t* num_commands,
+ size_t* num_literals);
+
+static const float kInfinity = std::numeric_limits<float>::infinity();
+
+struct ZopfliNode {
+ ZopfliNode(void) : length(1),
+ distance(0),
+ insert_length(0),
+ cost(kInfinity) {}
+
+ inline uint32_t copy_length() const {
+ return length & 0xffffff;
+ }
+
+ inline uint32_t length_code() const {
+ const uint32_t modifier = length >> 24;
+ return copy_length() + 9u - modifier;
+ }
+
+ inline uint32_t copy_distance() const {
+ return distance & 0x1ffffff;
+ }
+
+ inline uint32_t distance_code() const {
+ const uint32_t short_code = distance >> 25;
+ return short_code == 0 ? copy_distance() + 15 : short_code - 1;
+ }
+
+ inline uint32_t command_length() const {
+ return copy_length() + insert_length;
+ }
+
+ // best length to get up to this byte (not including this byte itself)
+ // highest 8 bit is used to reconstruct the length code
+ uint32_t length;
+ // distance associated with the length
+ // highest 7 bit contains distance short code + 1 (or zero if no short code)
+ uint32_t distance;
+ // number of literal inserts before this copy
+ uint32_t insert_length;
+ // smallest cost to get to this byte from the beginning, as found so far
+ float cost;
+};
+
+// Computes the shortest path of commands from position to at most
+// position + num_bytes.
+//
+// On return, path->size() is the number of commands found and path[i] is the
+// length of the ith command (copy length plus insert length).
+// Note that the sum of the lengths of all commands can be less than num_bytes.
+//
+// On return, the nodes[0..num_bytes] array will have the following
+// "ZopfliNode array invariant":
+// For each i in [1..num_bytes], if nodes[i].cost < kInfinity, then
+// (1) nodes[i].copy_length() >= 2
+// (2) nodes[i].command_length() <= i and
+// (3) nodes[i - nodes[i].command_length()].cost < kInfinity
+void ZopfliComputeShortestPath(size_t num_bytes,
+ size_t position,
+ const uint8_t* ringbuffer,
+ size_t ringbuffer_mask,
+ const size_t max_backward_limit,
+ const int* dist_cache,
+ Hashers::H10* hasher,
+ ZopfliNode* nodes,
+ std::vector<uint32_t>* path);
+
+void ZopfliCreateCommands(const size_t num_bytes,
+ const size_t block_start,
+ const size_t max_backward_limit,
+ const std::vector<uint32_t>& path,
+ const ZopfliNode* nodes,
+ int* dist_cache,
+ size_t* last_insert_len,
+ Command* commands,
+ size_t* num_literals);
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_BACKWARD_REFERENCES_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/bit_cost.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/bit_cost.h
new file mode 100644
index 00000000000..4652006864c
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/bit_cost.h
@@ -0,0 +1,161 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Functions to estimate the bit cost of Huffman trees.
+
+#ifndef BROTLI_ENC_BIT_COST_H_
+#define BROTLI_ENC_BIT_COST_H_
+
+#include "./entropy_encode.h"
+#include "./fast_log.h"
+#include "./types.h"
+
+namespace brotli {
+
+static inline double ShannonEntropy(const uint32_t *population, size_t size,
+ size_t *total) {
+ size_t sum = 0;
+ double retval = 0;
+ const uint32_t *population_end = population + size;
+ size_t p;
+ if (size & 1) {
+ goto odd_number_of_elements_left;
+ }
+ while (population < population_end) {
+ p = *population++;
+ sum += p;
+ retval -= static_cast<double>(p) * FastLog2(p);
+ odd_number_of_elements_left:
+ p = *population++;
+ sum += p;
+ retval -= static_cast<double>(p) * FastLog2(p);
+ }
+ if (sum) retval += static_cast<double>(sum) * FastLog2(sum);
+ *total = sum;
+ return retval;
+}
+
+static inline double BitsEntropy(const uint32_t *population, size_t size) {
+ size_t sum;
+ double retval = ShannonEntropy(population, size, &sum);
+ if (retval < sum) {
+ // At least one bit per literal is needed.
+ retval = static_cast<double>(sum);
+ }
+ return retval;
+}
+
+template<int kSize>
+double PopulationCost(const Histogram<kSize>& histogram) {
+ static const double kOneSymbolHistogramCost = 12;
+ static const double kTwoSymbolHistogramCost = 20;
+ static const double kThreeSymbolHistogramCost = 28;
+ static const double kFourSymbolHistogramCost = 37;
+ if (histogram.total_count_ == 0) {
+ return kOneSymbolHistogramCost;
+ }
+ int count = 0;
+ int s[5];
+ for (int i = 0; i < kSize; ++i) {
+ if (histogram.data_[i] > 0) {
+ s[count] = i;
+ ++count;
+ if (count > 4) break;
+ }
+ }
+ if (count == 1) {
+ return kOneSymbolHistogramCost;
+ }
+ if (count == 2) {
+ return (kTwoSymbolHistogramCost +
+ static_cast<double>(histogram.total_count_));
+ }
+ if (count == 3) {
+ const uint32_t histo0 = histogram.data_[s[0]];
+ const uint32_t histo1 = histogram.data_[s[1]];
+ const uint32_t histo2 = histogram.data_[s[2]];
+ const uint32_t histomax = std::max(histo0, std::max(histo1, histo2));
+ return (kThreeSymbolHistogramCost +
+ 2 * (histo0 + histo1 + histo2) - histomax);
+ }
+ if (count == 4) {
+ uint32_t histo[4];
+ for (int i = 0; i < 4; ++i) {
+ histo[i] = histogram.data_[s[i]];
+ }
+ // Sort
+ for (int i = 0; i < 4; ++i) {
+ for (int j = i + 1; j < 4; ++j) {
+ if (histo[j] > histo[i]) {
+ std::swap(histo[j], histo[i]);
+ }
+ }
+ }
+ const uint32_t h23 = histo[2] + histo[3];
+ const uint32_t histomax = std::max(h23, histo[0]);
+ return (kFourSymbolHistogramCost +
+ 3 * h23 + 2 * (histo[0] + histo[1]) - histomax);
+ }
+
+ // In this loop we compute the entropy of the histogram and simultaneously
+ // build a simplified histogram of the code length codes where we use the
+ // zero repeat code 17, but we don't use the non-zero repeat code 16.
+ double bits = 0;
+ size_t max_depth = 1;
+ uint32_t depth_histo[kCodeLengthCodes] = { 0 };
+ const double log2total = FastLog2(histogram.total_count_);
+ for (size_t i = 0; i < kSize;) {
+ if (histogram.data_[i] > 0) {
+ // Compute -log2(P(symbol)) = -log2(count(symbol)/total_count) =
+ // = log2(total_count) - log2(count(symbol))
+ double log2p = log2total - FastLog2(histogram.data_[i]);
+ // Approximate the bit depth by round(-log2(P(symbol)))
+ size_t depth = static_cast<size_t>(log2p + 0.5);
+ bits += histogram.data_[i] * log2p;
+ if (depth > 15) {
+ depth = 15;
+ }
+ if (depth > max_depth) {
+ max_depth = depth;
+ }
+ ++depth_histo[depth];
+ ++i;
+ } else {
+ // Compute the run length of zeros and add the appropriate number of 0 and
+ // 17 code length codes to the code length code histogram.
+ uint32_t reps = 1;
+ for (size_t k = i + 1; k < kSize && histogram.data_[k] == 0; ++k) {
+ ++reps;
+ }
+ i += reps;
+ if (i == kSize) {
+ // Don't add any cost for the last zero run, since these are encoded
+ // only implicitly.
+ break;
+ }
+ if (reps < 3) {
+ depth_histo[0] += reps;
+ } else {
+ reps -= 2;
+ while (reps > 0) {
+ ++depth_histo[17];
+ // Add the 3 extra bits for the 17 code length code.
+ bits += 3;
+ reps >>= 3;
+ }
+ }
+ }
+ }
+ // Add the estimated encoding cost of the code length code histogram.
+ bits += static_cast<double>(18 + 2 * max_depth);
+ // Add the entropy of the code length code histogram.
+ bits += BitsEntropy(depth_histo, kCodeLengthCodes);
+ return bits;
+}
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_BIT_COST_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/block_splitter.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/block_splitter.cc
new file mode 100644
index 00000000000..db8d9c606d6
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/block_splitter.cc
@@ -0,0 +1,505 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Block split point selection utilities.
+
+#include "./block_splitter.h"
+
+#include <assert.h>
+#include <math.h>
+
+#include <algorithm>
+#include <cstring>
+#include <vector>
+
+#include "./cluster.h"
+#include "./command.h"
+#include "./fast_log.h"
+#include "./histogram.h"
+
+namespace brotli {
+
+static const size_t kMaxLiteralHistograms = 100;
+static const size_t kMaxCommandHistograms = 50;
+static const double kLiteralBlockSwitchCost = 28.1;
+static const double kCommandBlockSwitchCost = 13.5;
+static const double kDistanceBlockSwitchCost = 14.6;
+static const size_t kLiteralStrideLength = 70;
+static const size_t kCommandStrideLength = 40;
+static const size_t kSymbolsPerLiteralHistogram = 544;
+static const size_t kSymbolsPerCommandHistogram = 530;
+static const size_t kSymbolsPerDistanceHistogram = 544;
+static const size_t kMinLengthForBlockSplitting = 128;
+static const size_t kIterMulForRefining = 2;
+static const size_t kMinItersForRefining = 100;
+
+void CopyLiteralsToByteArray(const Command* cmds,
+ const size_t num_commands,
+ const uint8_t* data,
+ const size_t offset,
+ const size_t mask,
+ std::vector<uint8_t>* literals) {
+ // Count how many we have.
+ size_t total_length = 0;
+ for (size_t i = 0; i < num_commands; ++i) {
+ total_length += cmds[i].insert_len_;
+ }
+ if (total_length == 0) {
+ return;
+ }
+
+ // Allocate.
+ literals->resize(total_length);
+
+ // Loop again, and copy this time.
+ size_t pos = 0;
+ size_t from_pos = offset & mask;
+ for (size_t i = 0; i < num_commands && pos < total_length; ++i) {
+ size_t insert_len = cmds[i].insert_len_;
+ if (from_pos + insert_len > mask) {
+ size_t head_size = mask + 1 - from_pos;
+ memcpy(&(*literals)[pos], data + from_pos, head_size);
+ from_pos = 0;
+ pos += head_size;
+ insert_len -= head_size;
+ }
+ if (insert_len > 0) {
+ memcpy(&(*literals)[pos], data + from_pos, insert_len);
+ pos += insert_len;
+ }
+ from_pos = (from_pos + insert_len + cmds[i].copy_len()) & mask;
+ }
+}
+
+inline static unsigned int MyRand(unsigned int* seed) {
+ *seed *= 16807U;
+ if (*seed == 0) {
+ *seed = 1;
+ }
+ return *seed;
+}
+
+template<typename HistogramType, typename DataType>
+void InitialEntropyCodes(const DataType* data, size_t length,
+ size_t stride,
+ size_t num_histograms,
+ HistogramType* histograms) {
+ for (size_t i = 0; i < num_histograms; ++i) {
+ histograms[i].Clear();
+ }
+ unsigned int seed = 7;
+ size_t block_length = length / num_histograms;
+ for (size_t i = 0; i < num_histograms; ++i) {
+ size_t pos = length * i / num_histograms;
+ if (i != 0) {
+ pos += MyRand(&seed) % block_length;
+ }
+ if (pos + stride >= length) {
+ pos = length - stride - 1;
+ }
+ histograms[i].Add(data + pos, stride);
+ }
+}
+
+template<typename HistogramType, typename DataType>
+void RandomSample(unsigned int* seed,
+ const DataType* data,
+ size_t length,
+ size_t stride,
+ HistogramType* sample) {
+ size_t pos = 0;
+ if (stride >= length) {
+ pos = 0;
+ stride = length;
+ } else {
+ pos = MyRand(seed) % (length - stride + 1);
+ }
+ sample->Add(data + pos, stride);
+}
+
+template<typename HistogramType, typename DataType>
+void RefineEntropyCodes(const DataType* data, size_t length,
+ size_t stride,
+ size_t num_histograms,
+ HistogramType* histograms) {
+ size_t iters =
+ kIterMulForRefining * length / stride + kMinItersForRefining;
+ unsigned int seed = 7;
+ iters = ((iters + num_histograms - 1) / num_histograms) * num_histograms;
+ for (size_t iter = 0; iter < iters; ++iter) {
+ HistogramType sample;
+ RandomSample(&seed, data, length, stride, &sample);
+ size_t ix = iter % num_histograms;
+ histograms[ix].AddHistogram(sample);
+ }
+}
+
+inline static double BitCost(size_t count) {
+ return count == 0 ? -2.0 : FastLog2(count);
+}
+
+// Assigns a block id from the range [0, vec.size()) to each data element
+// in data[0..length) and fills in block_id[0..length) with the assigned values.
+// Returns the number of blocks, i.e. one plus the number of block switches.
+template<typename DataType, int kSize>
+size_t FindBlocks(const DataType* data, const size_t length,
+ const double block_switch_bitcost,
+ const size_t num_histograms,
+ const Histogram<kSize>* histograms,
+ double* insert_cost,
+ double* cost,
+ uint8_t* switch_signal,
+ uint8_t *block_id) {
+ if (num_histograms <= 1) {
+ for (size_t i = 0; i < length; ++i) {
+ block_id[i] = 0;
+ }
+ return 1;
+ }
+ const size_t bitmaplen = (num_histograms + 7) >> 3;
+ assert(num_histograms <= 256);
+ memset(insert_cost, 0, sizeof(insert_cost[0]) * kSize * num_histograms);
+ for (size_t j = 0; j < num_histograms; ++j) {
+ insert_cost[j] = FastLog2(static_cast<uint32_t>(
+ histograms[j].total_count_));
+ }
+ for (size_t i = kSize; i != 0;) {
+ --i;
+ for (size_t j = 0; j < num_histograms; ++j) {
+ insert_cost[i * num_histograms + j] =
+ insert_cost[j] - BitCost(histograms[j].data_[i]);
+ }
+ }
+ memset(cost, 0, sizeof(cost[0]) * num_histograms);
+ memset(switch_signal, 0, sizeof(switch_signal[0]) * length * bitmaplen);
+ // After each iteration of this loop, cost[k] will contain the difference
+ // between the minimum cost of arriving at the current byte position using
+ // entropy code k, and the minimum cost of arriving at the current byte
+ // position. This difference is capped at the block switch cost, and if it
+ // reaches block switch cost, it means that when we trace back from the last
+ // position, we need to switch here.
+ for (size_t byte_ix = 0; byte_ix < length; ++byte_ix) {
+ size_t ix = byte_ix * bitmaplen;
+ size_t insert_cost_ix = data[byte_ix] * num_histograms;
+ double min_cost = 1e99;
+ for (size_t k = 0; k < num_histograms; ++k) {
+ // We are coding the symbol in data[byte_ix] with entropy code k.
+ cost[k] += insert_cost[insert_cost_ix + k];
+ if (cost[k] < min_cost) {
+ min_cost = cost[k];
+ block_id[byte_ix] = static_cast<uint8_t>(k);
+ }
+ }
+ double block_switch_cost = block_switch_bitcost;
+ // More blocks for the beginning.
+ if (byte_ix < 2000) {
+ block_switch_cost *= 0.77 + 0.07 * static_cast<double>(byte_ix) / 2000;
+ }
+ for (size_t k = 0; k < num_histograms; ++k) {
+ cost[k] -= min_cost;
+ if (cost[k] >= block_switch_cost) {
+ cost[k] = block_switch_cost;
+ const uint8_t mask = static_cast<uint8_t>(1u << (k & 7));
+ assert((k >> 3) < bitmaplen);
+ switch_signal[ix + (k >> 3)] |= mask;
+ }
+ }
+ }
+ // Now trace back from the last position and switch at the marked places.
+ size_t byte_ix = length - 1;
+ size_t ix = byte_ix * bitmaplen;
+ uint8_t cur_id = block_id[byte_ix];
+ size_t num_blocks = 1;
+ while (byte_ix > 0) {
+ --byte_ix;
+ ix -= bitmaplen;
+ const uint8_t mask = static_cast<uint8_t>(1u << (cur_id & 7));
+ assert((static_cast<size_t>(cur_id) >> 3) < bitmaplen);
+ if (switch_signal[ix + (cur_id >> 3)] & mask) {
+ if (cur_id != block_id[byte_ix]) {
+ cur_id = block_id[byte_ix];
+ ++num_blocks;
+ }
+ }
+ block_id[byte_ix] = cur_id;
+ }
+ return num_blocks;
+}
+
+static size_t RemapBlockIds(uint8_t* block_ids, const size_t length,
+ uint16_t* new_id, const size_t num_histograms) {
+ static const uint16_t kInvalidId = 256;
+ for (size_t i = 0; i < num_histograms; ++i) {
+ new_id[i] = kInvalidId;
+ }
+ uint16_t next_id = 0;
+ for (size_t i = 0; i < length; ++i) {
+ assert(block_ids[i] < num_histograms);
+ if (new_id[block_ids[i]] == kInvalidId) {
+ new_id[block_ids[i]] = next_id++;
+ }
+ }
+ for (size_t i = 0; i < length; ++i) {
+ block_ids[i] = static_cast<uint8_t>(new_id[block_ids[i]]);
+ assert(block_ids[i] < num_histograms);
+ }
+ assert(next_id <= num_histograms);
+ return next_id;
+}
+
+template<typename HistogramType, typename DataType>
+void BuildBlockHistograms(const DataType* data, const size_t length,
+ const uint8_t* block_ids,
+ const size_t num_histograms,
+ HistogramType* histograms) {
+ for (size_t i = 0; i < num_histograms; ++i) {
+ histograms[i].Clear();
+ }
+ for (size_t i = 0; i < length; ++i) {
+ histograms[block_ids[i]].Add(data[i]);
+ }
+}
+
+template<typename HistogramType, typename DataType>
+void ClusterBlocks(const DataType* data, const size_t length,
+ const size_t num_blocks,
+ uint8_t* block_ids,
+ BlockSplit* split) {
+ static const size_t kMaxNumberOfBlockTypes = 256;
+ static const size_t kHistogramsPerBatch = 64;
+ static const size_t kClustersPerBatch = 16;
+ std::vector<uint32_t> histogram_symbols(num_blocks);
+ std::vector<uint32_t> block_lengths(num_blocks);
+
+ size_t block_idx = 0;
+ for (size_t i = 0; i < length; ++i) {
+ assert(block_idx < num_blocks);
+ ++block_lengths[block_idx];
+ if (i + 1 == length || block_ids[i] != block_ids[i + 1]) {
+ ++block_idx;
+ }
+ }
+ assert(block_idx == num_blocks);
+
+ const size_t expected_num_clusters =
+ kClustersPerBatch *
+ (num_blocks + kHistogramsPerBatch - 1) / kHistogramsPerBatch;
+ std::vector<HistogramType> all_histograms;
+ std::vector<uint32_t> cluster_size;
+ all_histograms.reserve(expected_num_clusters);
+ cluster_size.reserve(expected_num_clusters);
+ size_t num_clusters = 0;
+ std::vector<HistogramType> histograms(
+ std::min(num_blocks, kHistogramsPerBatch));
+ size_t max_num_pairs = kHistogramsPerBatch * kHistogramsPerBatch / 2;
+ std::vector<HistogramPair> pairs(max_num_pairs + 1);
+ size_t pos = 0;
+ for (size_t i = 0; i < num_blocks; i += kHistogramsPerBatch) {
+ const size_t num_to_combine = std::min(num_blocks - i, kHistogramsPerBatch);
+ uint32_t sizes[kHistogramsPerBatch];
+ uint32_t clusters[kHistogramsPerBatch];
+ uint32_t symbols[kHistogramsPerBatch];
+ uint32_t remap[kHistogramsPerBatch];
+ for (size_t j = 0; j < num_to_combine; ++j) {
+ histograms[j].Clear();
+ for (size_t k = 0; k < block_lengths[i + j]; ++k) {
+ histograms[j].Add(data[pos++]);
+ }
+ histograms[j].bit_cost_ = PopulationCost(histograms[j]);
+ symbols[j] = clusters[j] = static_cast<uint32_t>(j);
+ sizes[j] = 1;
+ }
+ size_t num_new_clusters = HistogramCombine(
+ &histograms[0], sizes, symbols, clusters, &pairs[0], num_to_combine,
+ num_to_combine, kHistogramsPerBatch, max_num_pairs);
+ for (size_t j = 0; j < num_new_clusters; ++j) {
+ all_histograms.push_back(histograms[clusters[j]]);
+ cluster_size.push_back(sizes[clusters[j]]);
+ remap[clusters[j]] = static_cast<uint32_t>(j);
+ }
+ for (size_t j = 0; j < num_to_combine; ++j) {
+ histogram_symbols[i + j] =
+ static_cast<uint32_t>(num_clusters) + remap[symbols[j]];
+ }
+ num_clusters += num_new_clusters;
+ assert(num_clusters == cluster_size.size());
+ assert(num_clusters == all_histograms.size());
+ }
+
+ max_num_pairs =
+ std::min(64 * num_clusters, (num_clusters / 2) * num_clusters);
+ pairs.resize(max_num_pairs + 1);
+
+ std::vector<uint32_t> clusters(num_clusters);
+ for (size_t i = 0; i < num_clusters; ++i) {
+ clusters[i] = static_cast<uint32_t>(i);
+ }
+ size_t num_final_clusters =
+ HistogramCombine(&all_histograms[0], &cluster_size[0],
+ &histogram_symbols[0],
+ &clusters[0], &pairs[0], num_clusters,
+ num_blocks, kMaxNumberOfBlockTypes, max_num_pairs);
+
+ static const uint32_t kInvalidIndex = std::numeric_limits<uint32_t>::max();
+ std::vector<uint32_t> new_index(num_clusters, kInvalidIndex);
+ uint32_t next_index = 0;
+ pos = 0;
+ for (size_t i = 0; i < num_blocks; ++i) {
+ HistogramType histo;
+ for (size_t j = 0; j < block_lengths[i]; ++j) {
+ histo.Add(data[pos++]);
+ }
+ uint32_t best_out =
+ i == 0 ? histogram_symbols[0] : histogram_symbols[i - 1];
+ double best_bits = HistogramBitCostDistance(
+ histo, all_histograms[best_out]);
+ for (size_t j = 0; j < num_final_clusters; ++j) {
+ const double cur_bits = HistogramBitCostDistance(
+ histo, all_histograms[clusters[j]]);
+ if (cur_bits < best_bits) {
+ best_bits = cur_bits;
+ best_out = clusters[j];
+ }
+ }
+ histogram_symbols[i] = best_out;
+ if (new_index[best_out] == kInvalidIndex) {
+ new_index[best_out] = next_index++;
+ }
+ }
+ uint8_t max_type = 0;
+ uint32_t cur_length = 0;
+ block_idx = 0;
+ split->types.resize(num_blocks);
+ split->lengths.resize(num_blocks);
+ for (size_t i = 0; i < num_blocks; ++i) {
+ cur_length += block_lengths[i];
+ if (i + 1 == num_blocks ||
+ histogram_symbols[i] != histogram_symbols[i + 1]) {
+ const uint8_t id = static_cast<uint8_t>(new_index[histogram_symbols[i]]);
+ split->types[block_idx] = id;
+ split->lengths[block_idx] = cur_length;
+ max_type = std::max(max_type, id);
+ cur_length = 0;
+ ++block_idx;
+ }
+ }
+ split->types.resize(block_idx);
+ split->lengths.resize(block_idx);
+ split->num_types = static_cast<size_t>(max_type) + 1;
+}
+
+template<int kSize, typename DataType>
+void SplitByteVector(const std::vector<DataType>& data,
+ const size_t literals_per_histogram,
+ const size_t max_histograms,
+ const size_t sampling_stride_length,
+ const double block_switch_cost,
+ BlockSplit* split) {
+ if (data.empty()) {
+ split->num_types = 1;
+ return;
+ } else if (data.size() < kMinLengthForBlockSplitting) {
+ split->num_types = 1;
+ split->types.push_back(0);
+ split->lengths.push_back(static_cast<uint32_t>(data.size()));
+ return;
+ }
+ size_t num_histograms = data.size() / literals_per_histogram + 1;
+ if (num_histograms > max_histograms) {
+ num_histograms = max_histograms;
+ }
+ Histogram<kSize>* histograms = new Histogram<kSize>[num_histograms];
+ // Find good entropy codes.
+ InitialEntropyCodes(&data[0], data.size(),
+ sampling_stride_length,
+ num_histograms, histograms);
+ RefineEntropyCodes(&data[0], data.size(),
+ sampling_stride_length,
+ num_histograms, histograms);
+ // Find a good path through literals with the good entropy codes.
+ std::vector<uint8_t> block_ids(data.size());
+ size_t num_blocks;
+ const size_t bitmaplen = (num_histograms + 7) >> 3;
+ double* insert_cost = new double[kSize * num_histograms];
+ double *cost = new double[num_histograms];
+ uint8_t* switch_signal = new uint8_t[data.size() * bitmaplen];
+ uint16_t* new_id = new uint16_t[num_histograms];
+ for (size_t i = 0; i < 10; ++i) {
+ num_blocks = FindBlocks(&data[0], data.size(),
+ block_switch_cost,
+ num_histograms, histograms,
+ insert_cost, cost, switch_signal,
+ &block_ids[0]);
+ num_histograms = RemapBlockIds(&block_ids[0], data.size(),
+ new_id, num_histograms);
+ BuildBlockHistograms(&data[0], data.size(), &block_ids[0],
+ num_histograms, histograms);
+ }
+ delete[] insert_cost;
+ delete[] cost;
+ delete[] switch_signal;
+ delete[] new_id;
+ delete[] histograms;
+ ClusterBlocks<Histogram<kSize> >(&data[0], data.size(), num_blocks,
+ &block_ids[0], split);
+}
+
+void SplitBlock(const Command* cmds,
+ const size_t num_commands,
+ const uint8_t* data,
+ const size_t pos,
+ const size_t mask,
+ BlockSplit* literal_split,
+ BlockSplit* insert_and_copy_split,
+ BlockSplit* dist_split) {
+ {
+ // Create a continuous array of literals.
+ std::vector<uint8_t> literals;
+ CopyLiteralsToByteArray(cmds, num_commands, data, pos, mask, &literals);
+ // Create the block split on the array of literals.
+ // Literal histograms have alphabet size 256.
+ SplitByteVector<256>(
+ literals,
+ kSymbolsPerLiteralHistogram, kMaxLiteralHistograms,
+ kLiteralStrideLength, kLiteralBlockSwitchCost,
+ literal_split);
+ }
+
+ {
+ // Compute prefix codes for commands.
+ std::vector<uint16_t> insert_and_copy_codes(num_commands);
+ for (size_t i = 0; i < num_commands; ++i) {
+ insert_and_copy_codes[i] = cmds[i].cmd_prefix_;
+ }
+ // Create the block split on the array of command prefixes.
+ SplitByteVector<kNumCommandPrefixes>(
+ insert_and_copy_codes,
+ kSymbolsPerCommandHistogram, kMaxCommandHistograms,
+ kCommandStrideLength, kCommandBlockSwitchCost,
+ insert_and_copy_split);
+ }
+
+ {
+ // Create a continuous array of distance prefixes.
+ std::vector<uint16_t> distance_prefixes(num_commands);
+ size_t pos = 0;
+ for (size_t i = 0; i < num_commands; ++i) {
+ const Command& cmd = cmds[i];
+ if (cmd.copy_len() && cmd.cmd_prefix_ >= 128) {
+ distance_prefixes[pos++] = cmd.dist_prefix_;
+ }
+ }
+ distance_prefixes.resize(pos);
+ // Create the block split on the array of distance prefixes.
+ SplitByteVector<kNumDistancePrefixes>(
+ distance_prefixes,
+ kSymbolsPerDistanceHistogram, kMaxCommandHistograms,
+ kCommandStrideLength, kDistanceBlockSwitchCost,
+ dist_split);
+ }
+}
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/block_splitter.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/block_splitter.h
new file mode 100644
index 00000000000..4f69296808e
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/block_splitter.h
@@ -0,0 +1,61 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Block split point selection utilities.
+
+#ifndef BROTLI_ENC_BLOCK_SPLITTER_H_
+#define BROTLI_ENC_BLOCK_SPLITTER_H_
+
+#include <vector>
+
+#include "./command.h"
+#include "./metablock.h"
+#include "./types.h"
+
+namespace brotli {
+
+struct BlockSplitIterator {
+ explicit BlockSplitIterator(const BlockSplit& split)
+ : split_(split), idx_(0), type_(0), length_(0) {
+ if (!split.lengths.empty()) {
+ length_ = split.lengths[0];
+ }
+ }
+
+ void Next(void) {
+ if (length_ == 0) {
+ ++idx_;
+ type_ = split_.types[idx_];
+ length_ = split_.lengths[idx_];
+ }
+ --length_;
+ }
+
+ const BlockSplit& split_;
+ size_t idx_;
+ size_t type_;
+ size_t length_;
+};
+
+void CopyLiteralsToByteArray(const Command* cmds,
+ const size_t num_commands,
+ const uint8_t* data,
+ const size_t offset,
+ const size_t mask,
+ std::vector<uint8_t>* literals);
+
+void SplitBlock(const Command* cmds,
+ const size_t num_commands,
+ const uint8_t* data,
+ const size_t offset,
+ const size_t mask,
+ BlockSplit* literal_split,
+ BlockSplit* insert_and_copy_split,
+ BlockSplit* dist_split);
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_BLOCK_SPLITTER_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/brotli_bit_stream.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/brotli_bit_stream.cc
new file mode 100644
index 00000000000..43f12107af9
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/brotli_bit_stream.cc
@@ -0,0 +1,1181 @@
+/* Copyright 2014 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Brotli bit stream functions to support the low level format. There are no
+// compression algorithms here, just the right ordering of bits to match the
+// specs.
+
+#include "./brotli_bit_stream.h"
+
+#include <algorithm>
+#include <cstdlib> /* free, malloc */
+#include <cstring>
+#include <limits>
+#include <vector>
+
+#include "./bit_cost.h"
+#include "./context.h"
+#include "./entropy_encode.h"
+#include "./entropy_encode_static.h"
+#include "./fast_log.h"
+#include "./prefix.h"
+#include "./write_bits.h"
+
+namespace brotli {
+
+namespace {
+
+static const size_t kMaxHuffmanTreeSize = 2 * kNumCommandPrefixes + 1;
+// Context map alphabet has 256 context id symbols plus max 16 rle symbols.
+static const size_t kContextMapAlphabetSize = 256 + 16;
+// Block type alphabet has 256 block id symbols plus 2 special symbols.
+static const size_t kBlockTypeAlphabetSize = 256 + 2;
+
+// nibblesbits represents the 2 bits to encode MNIBBLES (0-3)
+// REQUIRES: length > 0
+// REQUIRES: length <= (1 << 24)
+void EncodeMlen(size_t length, uint64_t* bits,
+ size_t* numbits, uint64_t* nibblesbits) {
+ assert(length > 0);
+ assert(length <= (1 << 24));
+ length--; // MLEN - 1 is encoded
+ size_t lg = length == 0 ? 1 : Log2FloorNonZero(
+ static_cast<uint32_t>(length)) + 1;
+ assert(lg <= 24);
+ size_t mnibbles = (lg < 16 ? 16 : (lg + 3)) / 4;
+ *nibblesbits = mnibbles - 4;
+ *numbits = mnibbles * 4;
+ *bits = length;
+}
+
+static inline void StoreCommandExtra(
+ const Command& cmd, size_t* storage_ix, uint8_t* storage) {
+ uint32_t copylen_code = cmd.copy_len_code();
+ uint16_t inscode = GetInsertLengthCode(cmd.insert_len_);
+ uint16_t copycode = GetCopyLengthCode(copylen_code);
+ uint32_t insnumextra = GetInsertExtra(inscode);
+ uint64_t insextraval = cmd.insert_len_ - GetInsertBase(inscode);
+ uint64_t copyextraval = copylen_code - GetCopyBase(copycode);
+ uint64_t bits = (copyextraval << insnumextra) | insextraval;
+ WriteBits(insnumextra + GetCopyExtra(copycode), bits, storage_ix, storage);
+}
+
+} // namespace
+
+void StoreVarLenUint8(size_t n, size_t* storage_ix, uint8_t* storage) {
+ if (n == 0) {
+ WriteBits(1, 0, storage_ix, storage);
+ } else {
+ WriteBits(1, 1, storage_ix, storage);
+ size_t nbits = Log2FloorNonZero(n);
+ WriteBits(3, nbits, storage_ix, storage);
+ WriteBits(nbits, n - (1 << nbits), storage_ix, storage);
+ }
+}
+
+void StoreCompressedMetaBlockHeader(bool final_block,
+ size_t length,
+ size_t* storage_ix,
+ uint8_t* storage) {
+ // Write ISLAST bit.
+ WriteBits(1, final_block, storage_ix, storage);
+ // Write ISEMPTY bit.
+ if (final_block) {
+ WriteBits(1, 0, storage_ix, storage);
+ }
+
+ uint64_t lenbits;
+ size_t nlenbits;
+ uint64_t nibblesbits;
+ EncodeMlen(length, &lenbits, &nlenbits, &nibblesbits);
+ WriteBits(2, nibblesbits, storage_ix, storage);
+ WriteBits(nlenbits, lenbits, storage_ix, storage);
+
+ if (!final_block) {
+ // Write ISUNCOMPRESSED bit.
+ WriteBits(1, 0, storage_ix, storage);
+ }
+}
+
+void StoreUncompressedMetaBlockHeader(size_t length,
+ size_t* storage_ix,
+ uint8_t* storage) {
+ // Write ISLAST bit. Uncompressed block cannot be the last one, so set to 0.
+ WriteBits(1, 0, storage_ix, storage);
+ uint64_t lenbits;
+ size_t nlenbits;
+ uint64_t nibblesbits;
+ EncodeMlen(length, &lenbits, &nlenbits, &nibblesbits);
+ WriteBits(2, nibblesbits, storage_ix, storage);
+ WriteBits(nlenbits, lenbits, storage_ix, storage);
+ // Write ISUNCOMPRESSED bit.
+ WriteBits(1, 1, storage_ix, storage);
+}
+
+void StoreHuffmanTreeOfHuffmanTreeToBitMask(
+ const int num_codes,
+ const uint8_t *code_length_bitdepth,
+ size_t *storage_ix,
+ uint8_t *storage) {
+ static const uint8_t kStorageOrder[kCodeLengthCodes] = {
+ 1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ };
+ // The bit lengths of the Huffman code over the code length alphabet
+ // are compressed with the following static Huffman code:
+ // Symbol Code
+ // ------ ----
+ // 0 00
+ // 1 1110
+ // 2 110
+ // 3 01
+ // 4 10
+ // 5 1111
+ static const uint8_t kHuffmanBitLengthHuffmanCodeSymbols[6] = {
+ 0, 7, 3, 2, 1, 15
+ };
+ static const uint8_t kHuffmanBitLengthHuffmanCodeBitLengths[6] = {
+ 2, 4, 3, 2, 2, 4
+ };
+
+ // Throw away trailing zeros:
+ size_t codes_to_store = kCodeLengthCodes;
+ if (num_codes > 1) {
+ for (; codes_to_store > 0; --codes_to_store) {
+ if (code_length_bitdepth[kStorageOrder[codes_to_store - 1]] != 0) {
+ break;
+ }
+ }
+ }
+ size_t skip_some = 0; // skips none.
+ if (code_length_bitdepth[kStorageOrder[0]] == 0 &&
+ code_length_bitdepth[kStorageOrder[1]] == 0) {
+ skip_some = 2; // skips two.
+ if (code_length_bitdepth[kStorageOrder[2]] == 0) {
+ skip_some = 3; // skips three.
+ }
+ }
+ WriteBits(2, skip_some, storage_ix, storage);
+ for (size_t i = skip_some; i < codes_to_store; ++i) {
+ size_t l = code_length_bitdepth[kStorageOrder[i]];
+ WriteBits(kHuffmanBitLengthHuffmanCodeBitLengths[l],
+ kHuffmanBitLengthHuffmanCodeSymbols[l], storage_ix, storage);
+ }
+}
+
+static void StoreHuffmanTreeToBitMask(
+ const size_t huffman_tree_size,
+ const uint8_t* huffman_tree,
+ const uint8_t* huffman_tree_extra_bits,
+ const uint8_t* code_length_bitdepth,
+ const uint16_t* code_length_bitdepth_symbols,
+ size_t * __restrict storage_ix,
+ uint8_t * __restrict storage) {
+ for (size_t i = 0; i < huffman_tree_size; ++i) {
+ size_t ix = huffman_tree[i];
+ WriteBits(code_length_bitdepth[ix], code_length_bitdepth_symbols[ix],
+ storage_ix, storage);
+ // Extra bits
+ switch (ix) {
+ case 16:
+ WriteBits(2, huffman_tree_extra_bits[i], storage_ix, storage);
+ break;
+ case 17:
+ WriteBits(3, huffman_tree_extra_bits[i], storage_ix, storage);
+ break;
+ }
+ }
+}
+
+static void StoreSimpleHuffmanTree(const uint8_t* depths,
+ size_t symbols[4],
+ size_t num_symbols,
+ size_t max_bits,
+ size_t *storage_ix, uint8_t *storage) {
+ // value of 1 indicates a simple Huffman code
+ WriteBits(2, 1, storage_ix, storage);
+ WriteBits(2, num_symbols - 1, storage_ix, storage); // NSYM - 1
+
+ // Sort
+ for (size_t i = 0; i < num_symbols; i++) {
+ for (size_t j = i + 1; j < num_symbols; j++) {
+ if (depths[symbols[j]] < depths[symbols[i]]) {
+ std::swap(symbols[j], symbols[i]);
+ }
+ }
+ }
+
+ if (num_symbols == 2) {
+ WriteBits(max_bits, symbols[0], storage_ix, storage);
+ WriteBits(max_bits, symbols[1], storage_ix, storage);
+ } else if (num_symbols == 3) {
+ WriteBits(max_bits, symbols[0], storage_ix, storage);
+ WriteBits(max_bits, symbols[1], storage_ix, storage);
+ WriteBits(max_bits, symbols[2], storage_ix, storage);
+ } else {
+ WriteBits(max_bits, symbols[0], storage_ix, storage);
+ WriteBits(max_bits, symbols[1], storage_ix, storage);
+ WriteBits(max_bits, symbols[2], storage_ix, storage);
+ WriteBits(max_bits, symbols[3], storage_ix, storage);
+ // tree-select
+ WriteBits(1, depths[symbols[0]] == 1 ? 1 : 0, storage_ix, storage);
+ }
+}
+
+// num = alphabet size
+// depths = symbol depths
+void StoreHuffmanTree(const uint8_t* depths, size_t num,
+ HuffmanTree* tree,
+ size_t *storage_ix, uint8_t *storage) {
+ // Write the Huffman tree into the brotli-representation.
+ // The command alphabet is the largest, so this allocation will fit all
+ // alphabets.
+ assert(num <= kNumCommandPrefixes);
+ uint8_t huffman_tree[kNumCommandPrefixes];
+ uint8_t huffman_tree_extra_bits[kNumCommandPrefixes];
+ size_t huffman_tree_size = 0;
+ WriteHuffmanTree(depths, num, &huffman_tree_size, huffman_tree,
+ huffman_tree_extra_bits);
+
+ // Calculate the statistics of the Huffman tree in brotli-representation.
+ uint32_t huffman_tree_histogram[kCodeLengthCodes] = { 0 };
+ for (size_t i = 0; i < huffman_tree_size; ++i) {
+ ++huffman_tree_histogram[huffman_tree[i]];
+ }
+
+ int num_codes = 0;
+ int code = 0;
+ for (int i = 0; i < kCodeLengthCodes; ++i) {
+ if (huffman_tree_histogram[i]) {
+ if (num_codes == 0) {
+ code = i;
+ num_codes = 1;
+ } else if (num_codes == 1) {
+ num_codes = 2;
+ break;
+ }
+ }
+ }
+
+ // Calculate another Huffman tree to use for compressing both the
+ // earlier Huffman tree with.
+ uint8_t code_length_bitdepth[kCodeLengthCodes] = { 0 };
+ uint16_t code_length_bitdepth_symbols[kCodeLengthCodes] = { 0 };
+ CreateHuffmanTree(&huffman_tree_histogram[0], kCodeLengthCodes,
+ 5, tree, &code_length_bitdepth[0]);
+ ConvertBitDepthsToSymbols(code_length_bitdepth, kCodeLengthCodes,
+ &code_length_bitdepth_symbols[0]);
+
+ // Now, we have all the data, let's start storing it
+ StoreHuffmanTreeOfHuffmanTreeToBitMask(num_codes, code_length_bitdepth,
+ storage_ix, storage);
+
+ if (num_codes == 1) {
+ code_length_bitdepth[code] = 0;
+ }
+
+ // Store the real huffman tree now.
+ StoreHuffmanTreeToBitMask(huffman_tree_size,
+ huffman_tree,
+ huffman_tree_extra_bits,
+ &code_length_bitdepth[0],
+ code_length_bitdepth_symbols,
+ storage_ix, storage);
+}
+
+void BuildAndStoreHuffmanTree(const uint32_t *histogram,
+ const size_t length,
+ HuffmanTree* tree,
+ uint8_t* depth,
+ uint16_t* bits,
+ size_t* storage_ix,
+ uint8_t* storage) {
+ size_t count = 0;
+ size_t s4[4] = { 0 };
+ for (size_t i = 0; i < length; i++) {
+ if (histogram[i]) {
+ if (count < 4) {
+ s4[count] = i;
+ } else if (count > 4) {
+ break;
+ }
+ count++;
+ }
+ }
+
+ size_t max_bits_counter = length - 1;
+ size_t max_bits = 0;
+ while (max_bits_counter) {
+ max_bits_counter >>= 1;
+ ++max_bits;
+ }
+
+ if (count <= 1) {
+ WriteBits(4, 1, storage_ix, storage);
+ WriteBits(max_bits, s4[0], storage_ix, storage);
+ return;
+ }
+
+ CreateHuffmanTree(histogram, length, 15, tree, depth);
+ ConvertBitDepthsToSymbols(depth, length, bits);
+
+ if (count <= 4) {
+ StoreSimpleHuffmanTree(depth, s4, count, max_bits, storage_ix, storage);
+ } else {
+ StoreHuffmanTree(depth, length, tree, storage_ix, storage);
+ }
+}
+
+static inline bool SortHuffmanTree(const HuffmanTree& v0,
+ const HuffmanTree& v1) {
+ return v0.total_count_ < v1.total_count_;
+}
+
+void BuildAndStoreHuffmanTreeFast(const uint32_t *histogram,
+ const size_t histogram_total,
+ const size_t max_bits,
+ uint8_t* depth,
+ uint16_t* bits,
+ size_t* storage_ix,
+ uint8_t* storage) {
+ size_t count = 0;
+ size_t symbols[4] = { 0 };
+ size_t length = 0;
+ size_t total = histogram_total;
+ while (total != 0) {
+ if (histogram[length]) {
+ if (count < 4) {
+ symbols[count] = length;
+ }
+ ++count;
+ total -= histogram[length];
+ }
+ ++length;
+ }
+
+ if (count <= 1) {
+ WriteBits(4, 1, storage_ix, storage);
+ WriteBits(max_bits, symbols[0], storage_ix, storage);
+ return;
+ }
+
+ const size_t max_tree_size = 2 * length + 1;
+ HuffmanTree* const tree =
+ static_cast<HuffmanTree*>(malloc(max_tree_size * sizeof(HuffmanTree)));
+ for (uint32_t count_limit = 1; ; count_limit *= 2) {
+ HuffmanTree* node = tree;
+ for (size_t i = length; i != 0;) {
+ --i;
+ if (histogram[i]) {
+ if (PREDICT_TRUE(histogram[i] >= count_limit)) {
+ *node = HuffmanTree(histogram[i], -1, static_cast<int16_t>(i));
+ } else {
+ *node = HuffmanTree(count_limit, -1, static_cast<int16_t>(i));
+ }
+ ++node;
+ }
+ }
+ const int n = static_cast<int>(node - tree);
+ std::sort(tree, node, SortHuffmanTree);
+ // The nodes are:
+ // [0, n): the sorted leaf nodes that we start with.
+ // [n]: we add a sentinel here.
+ // [n + 1, 2n): new parent nodes are added here, starting from
+ // (n+1). These are naturally in ascending order.
+ // [2n]: we add a sentinel at the end as well.
+ // There will be (2n+1) elements at the end.
+ const HuffmanTree sentinel(std::numeric_limits<int>::max(), -1, -1);
+ *node++ = sentinel;
+ *node++ = sentinel;
+
+ int i = 0; // Points to the next leaf node.
+ int j = n + 1; // Points to the next non-leaf node.
+ for (int k = n - 1; k > 0; --k) {
+ int left, right;
+ if (tree[i].total_count_ <= tree[j].total_count_) {
+ left = i;
+ ++i;
+ } else {
+ left = j;
+ ++j;
+ }
+ if (tree[i].total_count_ <= tree[j].total_count_) {
+ right = i;
+ ++i;
+ } else {
+ right = j;
+ ++j;
+ }
+ // The sentinel node becomes the parent node.
+ node[-1].total_count_ =
+ tree[left].total_count_ + tree[right].total_count_;
+ node[-1].index_left_ = static_cast<int16_t>(left);
+ node[-1].index_right_or_value_ = static_cast<int16_t>(right);
+ // Add back the last sentinel node.
+ *node++ = sentinel;
+ }
+ SetDepth(tree[2 * n - 1], &tree[0], depth, 0);
+ // We need to pack the Huffman tree in 14 bits.
+ // If this was not successful, add fake entities to the lowest values
+ // and retry.
+ if (PREDICT_TRUE(*std::max_element(&depth[0], &depth[length]) <= 14)) {
+ break;
+ }
+ }
+ free(tree);
+ ConvertBitDepthsToSymbols(depth, length, bits);
+ if (count <= 4) {
+ // value of 1 indicates a simple Huffman code
+ WriteBits(2, 1, storage_ix, storage);
+ WriteBits(2, count - 1, storage_ix, storage); // NSYM - 1
+
+ // Sort
+ for (size_t i = 0; i < count; i++) {
+ for (size_t j = i + 1; j < count; j++) {
+ if (depth[symbols[j]] < depth[symbols[i]]) {
+ std::swap(symbols[j], symbols[i]);
+ }
+ }
+ }
+
+ if (count == 2) {
+ WriteBits(max_bits, symbols[0], storage_ix, storage);
+ WriteBits(max_bits, symbols[1], storage_ix, storage);
+ } else if (count == 3) {
+ WriteBits(max_bits, symbols[0], storage_ix, storage);
+ WriteBits(max_bits, symbols[1], storage_ix, storage);
+ WriteBits(max_bits, symbols[2], storage_ix, storage);
+ } else {
+ WriteBits(max_bits, symbols[0], storage_ix, storage);
+ WriteBits(max_bits, symbols[1], storage_ix, storage);
+ WriteBits(max_bits, symbols[2], storage_ix, storage);
+ WriteBits(max_bits, symbols[3], storage_ix, storage);
+ // tree-select
+ WriteBits(1, depth[symbols[0]] == 1 ? 1 : 0, storage_ix, storage);
+ }
+ } else {
+ // Complex Huffman Tree
+ StoreStaticCodeLengthCode(storage_ix, storage);
+
+ // Actual rle coding.
+ uint8_t previous_value = 8;
+ for (size_t i = 0; i < length;) {
+ const uint8_t value = depth[i];
+ size_t reps = 1;
+ for (size_t k = i + 1; k < length && depth[k] == value; ++k) {
+ ++reps;
+ }
+ i += reps;
+ if (value == 0) {
+ WriteBits(kZeroRepsDepth[reps], kZeroRepsBits[reps],
+ storage_ix, storage);
+ } else {
+ if (previous_value != value) {
+ WriteBits(kCodeLengthDepth[value], kCodeLengthBits[value],
+ storage_ix, storage);
+ --reps;
+ }
+ if (reps < 3) {
+ while (reps != 0) {
+ reps--;
+ WriteBits(kCodeLengthDepth[value], kCodeLengthBits[value],
+ storage_ix, storage);
+ }
+ } else {
+ reps -= 3;
+ WriteBits(kNonZeroRepsDepth[reps], kNonZeroRepsBits[reps],
+ storage_ix, storage);
+ }
+ previous_value = value;
+ }
+ }
+ }
+}
+
+static size_t IndexOf(const uint8_t* v, size_t v_size, uint8_t value) {
+ size_t i = 0;
+ for (; i < v_size; ++i) {
+ if (v[i] == value) return i;
+ }
+ return i;
+}
+
+static void MoveToFront(uint8_t* v, size_t index) {
+ uint8_t value = v[index];
+ for (size_t i = index; i != 0; --i) {
+ v[i] = v[i - 1];
+ }
+ v[0] = value;
+}
+
+static void MoveToFrontTransform(const uint32_t* __restrict v_in,
+ const size_t v_size,
+ uint32_t* v_out) {
+ if (v_size == 0) {
+ return;
+ }
+ uint32_t max_value = *std::max_element(v_in, v_in + v_size);
+ assert(max_value < 256u);
+ uint8_t mtf[256];
+ size_t mtf_size = max_value + 1;
+ for (uint32_t i = 0; i <= max_value; ++i) {
+ mtf[i] = static_cast<uint8_t>(i);
+ }
+ for (size_t i = 0; i < v_size; ++i) {
+ size_t index = IndexOf(mtf, mtf_size, static_cast<uint8_t>(v_in[i]));
+ assert(index < mtf_size);
+ v_out[i] = static_cast<uint32_t>(index);
+ MoveToFront(mtf, index);
+ }
+}
+
+// Finds runs of zeros in v[0..in_size) and replaces them with a prefix code of
+// the run length plus extra bits (lower 9 bits is the prefix code and the rest
+// are the extra bits). Non-zero values in v[] are shifted by
+// *max_length_prefix. Will not create prefix codes bigger than the initial
+// value of *max_run_length_prefix. The prefix code of run length L is simply
+// Log2Floor(L) and the number of extra bits is the same as the prefix code.
+static void RunLengthCodeZeros(const size_t in_size,
+ uint32_t* __restrict v,
+ size_t* __restrict out_size,
+ uint32_t* __restrict max_run_length_prefix) {
+ uint32_t max_reps = 0;
+ for (size_t i = 0; i < in_size;) {
+ for (; i < in_size && v[i] != 0; ++i) ;
+ uint32_t reps = 0;
+ for (; i < in_size && v[i] == 0; ++i) {
+ ++reps;
+ }
+ max_reps = std::max(reps, max_reps);
+ }
+ uint32_t max_prefix = max_reps > 0 ? Log2FloorNonZero(max_reps) : 0;
+ max_prefix = std::min(max_prefix, *max_run_length_prefix);
+ *max_run_length_prefix = max_prefix;
+ *out_size = 0;
+ for (size_t i = 0; i < in_size;) {
+ assert(*out_size <= i);
+ if (v[i] != 0) {
+ v[*out_size] = v[i] + *max_run_length_prefix;
+ ++i;
+ ++(*out_size);
+ } else {
+ uint32_t reps = 1;
+ for (size_t k = i + 1; k < in_size && v[k] == 0; ++k) {
+ ++reps;
+ }
+ i += reps;
+ while (reps != 0) {
+ if (reps < (2u << max_prefix)) {
+ uint32_t run_length_prefix = Log2FloorNonZero(reps);
+ const uint32_t extra_bits = reps - (1u << run_length_prefix);
+ v[*out_size] = run_length_prefix + (extra_bits << 9);
+ ++(*out_size);
+ break;
+ } else {
+ const uint32_t extra_bits = (1u << max_prefix) - 1u;
+ v[*out_size] = max_prefix + (extra_bits << 9);
+ reps -= (2u << max_prefix) - 1u;
+ ++(*out_size);
+ }
+ }
+ }
+ }
+}
+
+void EncodeContextMap(const std::vector<uint32_t>& context_map,
+ size_t num_clusters,
+ HuffmanTree* tree,
+ size_t* storage_ix, uint8_t* storage) {
+ StoreVarLenUint8(num_clusters - 1, storage_ix, storage);
+
+ if (num_clusters == 1) {
+ return;
+ }
+
+ uint32_t* rle_symbols = new uint32_t[context_map.size()];
+ MoveToFrontTransform(&context_map[0], context_map.size(), rle_symbols);
+ uint32_t max_run_length_prefix = 6;
+ size_t num_rle_symbols = 0;
+ RunLengthCodeZeros(context_map.size(), rle_symbols,
+ &num_rle_symbols, &max_run_length_prefix);
+ uint32_t histogram[kContextMapAlphabetSize];
+ memset(histogram, 0, sizeof(histogram));
+ static const int kSymbolBits = 9;
+ static const uint32_t kSymbolMask = (1u << kSymbolBits) - 1u;
+ for (size_t i = 0; i < num_rle_symbols; ++i) {
+ ++histogram[rle_symbols[i] & kSymbolMask];
+ }
+ bool use_rle = max_run_length_prefix > 0;
+ WriteBits(1, use_rle, storage_ix, storage);
+ if (use_rle) {
+ WriteBits(4, max_run_length_prefix - 1, storage_ix, storage);
+ }
+ uint8_t depths[kContextMapAlphabetSize];
+ uint16_t bits[kContextMapAlphabetSize];
+ memset(depths, 0, sizeof(depths));
+ memset(bits, 0, sizeof(bits));
+ BuildAndStoreHuffmanTree(histogram, num_clusters + max_run_length_prefix,
+ tree, depths, bits, storage_ix, storage);
+ for (size_t i = 0; i < num_rle_symbols; ++i) {
+ const uint32_t rle_symbol = rle_symbols[i] & kSymbolMask;
+ const uint32_t extra_bits_val = rle_symbols[i] >> kSymbolBits;
+ WriteBits(depths[rle_symbol], bits[rle_symbol], storage_ix, storage);
+ if (rle_symbol > 0 && rle_symbol <= max_run_length_prefix) {
+ WriteBits(rle_symbol, extra_bits_val, storage_ix, storage);
+ }
+ }
+ WriteBits(1, 1, storage_ix, storage); // use move-to-front
+ delete[] rle_symbols;
+}
+
+void StoreBlockSwitch(const BlockSplitCode& code,
+ const size_t block_ix,
+ size_t* storage_ix,
+ uint8_t* storage) {
+ if (block_ix > 0) {
+ size_t typecode = code.type_code[block_ix];
+ WriteBits(code.type_depths[typecode], code.type_bits[typecode],
+ storage_ix, storage);
+ }
+ size_t lencode = code.length_prefix[block_ix];
+ WriteBits(code.length_depths[lencode], code.length_bits[lencode],
+ storage_ix, storage);
+ WriteBits(code.length_nextra[block_ix], code.length_extra[block_ix],
+ storage_ix, storage);
+}
+
+static void BuildAndStoreBlockSplitCode(const std::vector<uint8_t>& types,
+ const std::vector<uint32_t>& lengths,
+ const size_t num_types,
+ HuffmanTree* tree,
+ BlockSplitCode* code,
+ size_t* storage_ix,
+ uint8_t* storage) {
+ const size_t num_blocks = types.size();
+ uint32_t type_histo[kBlockTypeAlphabetSize];
+ uint32_t length_histo[kNumBlockLenPrefixes];
+ memset(type_histo, 0, (num_types + 2) * sizeof(type_histo[0]));
+ memset(length_histo, 0, sizeof(length_histo));
+ size_t last_type = 1;
+ size_t second_last_type = 0;
+ code->type_code.resize(num_blocks);
+ code->length_prefix.resize(num_blocks);
+ code->length_nextra.resize(num_blocks);
+ code->length_extra.resize(num_blocks);
+ code->type_depths.resize(num_types + 2);
+ code->type_bits.resize(num_types + 2);
+ memset(code->length_depths, 0, sizeof(code->length_depths));
+ memset(code->length_bits, 0, sizeof(code->length_bits));
+ for (size_t i = 0; i < num_blocks; ++i) {
+ size_t type = types[i];
+ size_t type_code = (type == last_type + 1 ? 1 :
+ type == second_last_type ? 0 :
+ type + 2);
+ second_last_type = last_type;
+ last_type = type;
+ code->type_code[i] = static_cast<uint32_t>(type_code);
+ if (i != 0) ++type_histo[type_code];
+ GetBlockLengthPrefixCode(lengths[i],
+ &code->length_prefix[i],
+ &code->length_nextra[i],
+ &code->length_extra[i]);
+ ++length_histo[code->length_prefix[i]];
+ }
+ StoreVarLenUint8(num_types - 1, storage_ix, storage);
+ if (num_types > 1) {
+ BuildAndStoreHuffmanTree(&type_histo[0], num_types + 2, tree,
+ &code->type_depths[0], &code->type_bits[0],
+ storage_ix, storage);
+ BuildAndStoreHuffmanTree(&length_histo[0], kNumBlockLenPrefixes, tree,
+ &code->length_depths[0], &code->length_bits[0],
+ storage_ix, storage);
+ StoreBlockSwitch(*code, 0, storage_ix, storage);
+ }
+}
+
+void StoreTrivialContextMap(size_t num_types,
+ size_t context_bits,
+ HuffmanTree* tree,
+ size_t* storage_ix,
+ uint8_t* storage) {
+ StoreVarLenUint8(num_types - 1, storage_ix, storage);
+ if (num_types > 1) {
+ size_t repeat_code = context_bits - 1u;
+ size_t repeat_bits = (1u << repeat_code) - 1u;
+ size_t alphabet_size = num_types + repeat_code;
+ uint32_t histogram[kContextMapAlphabetSize];
+ uint8_t depths[kContextMapAlphabetSize];
+ uint16_t bits[kContextMapAlphabetSize];
+ memset(histogram, 0, alphabet_size * sizeof(histogram[0]));
+ memset(depths, 0, alphabet_size * sizeof(depths[0]));
+ memset(bits, 0, alphabet_size * sizeof(bits[0]));
+ // Write RLEMAX.
+ WriteBits(1, 1, storage_ix, storage);
+ WriteBits(4, repeat_code - 1, storage_ix, storage);
+ histogram[repeat_code] = static_cast<uint32_t>(num_types);
+ histogram[0] = 1;
+ for (size_t i = context_bits; i < alphabet_size; ++i) {
+ histogram[i] = 1;
+ }
+ BuildAndStoreHuffmanTree(&histogram[0], alphabet_size, tree,
+ &depths[0], &bits[0],
+ storage_ix, storage);
+ for (size_t i = 0; i < num_types; ++i) {
+ size_t code = (i == 0 ? 0 : i + context_bits - 1);
+ WriteBits(depths[code], bits[code], storage_ix, storage);
+ WriteBits(depths[repeat_code], bits[repeat_code], storage_ix, storage);
+ WriteBits(repeat_code, repeat_bits, storage_ix, storage);
+ }
+ // Write IMTF (inverse-move-to-front) bit.
+ WriteBits(1, 1, storage_ix, storage);
+ }
+}
+
+// Manages the encoding of one block category (literal, command or distance).
+class BlockEncoder {
+ public:
+ BlockEncoder(size_t alphabet_size,
+ size_t num_block_types,
+ const std::vector<uint8_t>& block_types,
+ const std::vector<uint32_t>& block_lengths)
+ : alphabet_size_(alphabet_size),
+ num_block_types_(num_block_types),
+ block_types_(block_types),
+ block_lengths_(block_lengths),
+ block_ix_(0),
+ block_len_(block_lengths.empty() ? 0 : block_lengths[0]),
+ entropy_ix_(0) {}
+
+ // Creates entropy codes of block lengths and block types and stores them
+ // to the bit stream.
+ void BuildAndStoreBlockSwitchEntropyCodes(HuffmanTree* tree,
+ size_t* storage_ix,
+ uint8_t* storage) {
+ BuildAndStoreBlockSplitCode(
+ block_types_, block_lengths_, num_block_types_,
+ tree, &block_split_code_, storage_ix, storage);
+ }
+
+ // Creates entropy codes for all block types and stores them to the bit
+ // stream.
+ template<int kSize>
+ void BuildAndStoreEntropyCodes(
+ const std::vector<Histogram<kSize> >& histograms,
+ HuffmanTree* tree,
+ size_t* storage_ix, uint8_t* storage) {
+ depths_.resize(histograms.size() * alphabet_size_);
+ bits_.resize(histograms.size() * alphabet_size_);
+ for (size_t i = 0; i < histograms.size(); ++i) {
+ size_t ix = i * alphabet_size_;
+ BuildAndStoreHuffmanTree(&histograms[i].data_[0], alphabet_size_,
+ tree,
+ &depths_[ix], &bits_[ix],
+ storage_ix, storage);
+ }
+ }
+
+ // Stores the next symbol with the entropy code of the current block type.
+ // Updates the block type and block length at block boundaries.
+ void StoreSymbol(size_t symbol, size_t* storage_ix, uint8_t* storage) {
+ if (block_len_ == 0) {
+ ++block_ix_;
+ block_len_ = block_lengths_[block_ix_];
+ entropy_ix_ = block_types_[block_ix_] * alphabet_size_;
+ StoreBlockSwitch(block_split_code_, block_ix_, storage_ix, storage);
+ }
+ --block_len_;
+ size_t ix = entropy_ix_ + symbol;
+ WriteBits(depths_[ix], bits_[ix], storage_ix, storage);
+ }
+
+ // Stores the next symbol with the entropy code of the current block type and
+ // context value.
+ // Updates the block type and block length at block boundaries.
+ template<int kContextBits>
+ void StoreSymbolWithContext(size_t symbol, size_t context,
+ const std::vector<uint32_t>& context_map,
+ size_t* storage_ix, uint8_t* storage) {
+ if (block_len_ == 0) {
+ ++block_ix_;
+ block_len_ = block_lengths_[block_ix_];
+ size_t block_type = block_types_[block_ix_];
+ entropy_ix_ = block_type << kContextBits;
+ StoreBlockSwitch(block_split_code_, block_ix_, storage_ix, storage);
+ }
+ --block_len_;
+ size_t histo_ix = context_map[entropy_ix_ + context];
+ size_t ix = histo_ix * alphabet_size_ + symbol;
+ WriteBits(depths_[ix], bits_[ix], storage_ix, storage);
+ }
+
+ private:
+ const size_t alphabet_size_;
+ const size_t num_block_types_;
+ const std::vector<uint8_t>& block_types_;
+ const std::vector<uint32_t>& block_lengths_;
+ BlockSplitCode block_split_code_;
+ size_t block_ix_;
+ size_t block_len_;
+ size_t entropy_ix_;
+ std::vector<uint8_t> depths_;
+ std::vector<uint16_t> bits_;
+};
+
+static void JumpToByteBoundary(size_t* storage_ix, uint8_t* storage) {
+ *storage_ix = (*storage_ix + 7u) & ~7u;
+ storage[*storage_ix >> 3] = 0;
+}
+
+void StoreMetaBlock(const uint8_t* input,
+ size_t start_pos,
+ size_t length,
+ size_t mask,
+ uint8_t prev_byte,
+ uint8_t prev_byte2,
+ bool is_last,
+ uint32_t num_direct_distance_codes,
+ uint32_t distance_postfix_bits,
+ ContextType literal_context_mode,
+ const brotli::Command *commands,
+ size_t n_commands,
+ const MetaBlockSplit& mb,
+ size_t *storage_ix,
+ uint8_t *storage) {
+ StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage);
+
+ size_t num_distance_codes =
+ kNumDistanceShortCodes + num_direct_distance_codes +
+ (48u << distance_postfix_bits);
+
+ HuffmanTree* tree = static_cast<HuffmanTree*>(
+ malloc(kMaxHuffmanTreeSize * sizeof(HuffmanTree)));
+ BlockEncoder literal_enc(256,
+ mb.literal_split.num_types,
+ mb.literal_split.types,
+ mb.literal_split.lengths);
+ BlockEncoder command_enc(kNumCommandPrefixes,
+ mb.command_split.num_types,
+ mb.command_split.types,
+ mb.command_split.lengths);
+ BlockEncoder distance_enc(num_distance_codes,
+ mb.distance_split.num_types,
+ mb.distance_split.types,
+ mb.distance_split.lengths);
+
+ literal_enc.BuildAndStoreBlockSwitchEntropyCodes(tree, storage_ix, storage);
+ command_enc.BuildAndStoreBlockSwitchEntropyCodes(tree, storage_ix, storage);
+ distance_enc.BuildAndStoreBlockSwitchEntropyCodes(tree, storage_ix, storage);
+
+ WriteBits(2, distance_postfix_bits, storage_ix, storage);
+ WriteBits(4, num_direct_distance_codes >> distance_postfix_bits,
+ storage_ix, storage);
+ for (size_t i = 0; i < mb.literal_split.num_types; ++i) {
+ WriteBits(2, literal_context_mode, storage_ix, storage);
+ }
+
+ size_t num_literal_histograms = mb.literal_histograms.size();
+ if (mb.literal_context_map.empty()) {
+ StoreTrivialContextMap(num_literal_histograms, kLiteralContextBits, tree,
+ storage_ix, storage);
+ } else {
+ EncodeContextMap(mb.literal_context_map, num_literal_histograms, tree,
+ storage_ix, storage);
+ }
+
+ size_t num_dist_histograms = mb.distance_histograms.size();
+ if (mb.distance_context_map.empty()) {
+ StoreTrivialContextMap(num_dist_histograms, kDistanceContextBits, tree,
+ storage_ix, storage);
+ } else {
+ EncodeContextMap(mb.distance_context_map, num_dist_histograms, tree,
+ storage_ix, storage);
+ }
+
+ literal_enc.BuildAndStoreEntropyCodes(mb.literal_histograms, tree,
+ storage_ix, storage);
+ command_enc.BuildAndStoreEntropyCodes(mb.command_histograms, tree,
+ storage_ix, storage);
+ distance_enc.BuildAndStoreEntropyCodes(mb.distance_histograms, tree,
+ storage_ix, storage);
+ free(tree);
+
+ size_t pos = start_pos;
+ for (size_t i = 0; i < n_commands; ++i) {
+ const Command cmd = commands[i];
+ size_t cmd_code = cmd.cmd_prefix_;
+ command_enc.StoreSymbol(cmd_code, storage_ix, storage);
+ StoreCommandExtra(cmd, storage_ix, storage);
+ if (mb.literal_context_map.empty()) {
+ for (size_t j = cmd.insert_len_; j != 0; --j) {
+ literal_enc.StoreSymbol(input[pos & mask], storage_ix, storage);
+ ++pos;
+ }
+ } else {
+ for (size_t j = cmd.insert_len_; j != 0; --j) {
+ size_t context = Context(prev_byte, prev_byte2, literal_context_mode);
+ uint8_t literal = input[pos & mask];
+ literal_enc.StoreSymbolWithContext<kLiteralContextBits>(
+ literal, context, mb.literal_context_map, storage_ix, storage);
+ prev_byte2 = prev_byte;
+ prev_byte = literal;
+ ++pos;
+ }
+ }
+ pos += cmd.copy_len();
+ if (cmd.copy_len()) {
+ prev_byte2 = input[(pos - 2) & mask];
+ prev_byte = input[(pos - 1) & mask];
+ if (cmd.cmd_prefix_ >= 128) {
+ size_t dist_code = cmd.dist_prefix_;
+ uint32_t distnumextra = cmd.dist_extra_ >> 24;
+ uint64_t distextra = cmd.dist_extra_ & 0xffffff;
+ if (mb.distance_context_map.empty()) {
+ distance_enc.StoreSymbol(dist_code, storage_ix, storage);
+ } else {
+ size_t context = cmd.DistanceContext();
+ distance_enc.StoreSymbolWithContext<kDistanceContextBits>(
+ dist_code, context, mb.distance_context_map, storage_ix, storage);
+ }
+ brotli::WriteBits(distnumextra, distextra, storage_ix, storage);
+ }
+ }
+ }
+ if (is_last) {
+ JumpToByteBoundary(storage_ix, storage);
+ }
+}
+
+static void BuildHistograms(const uint8_t* input,
+ size_t start_pos,
+ size_t mask,
+ const brotli::Command *commands,
+ size_t n_commands,
+ HistogramLiteral* lit_histo,
+ HistogramCommand* cmd_histo,
+ HistogramDistance* dist_histo) {
+ size_t pos = start_pos;
+ for (size_t i = 0; i < n_commands; ++i) {
+ const Command cmd = commands[i];
+ cmd_histo->Add(cmd.cmd_prefix_);
+ for (size_t j = cmd.insert_len_; j != 0; --j) {
+ lit_histo->Add(input[pos & mask]);
+ ++pos;
+ }
+ pos += cmd.copy_len();
+ if (cmd.copy_len() && cmd.cmd_prefix_ >= 128) {
+ dist_histo->Add(cmd.dist_prefix_);
+ }
+ }
+}
+
+static void StoreDataWithHuffmanCodes(const uint8_t* input,
+ size_t start_pos,
+ size_t mask,
+ const brotli::Command *commands,
+ size_t n_commands,
+ const uint8_t* lit_depth,
+ const uint16_t* lit_bits,
+ const uint8_t* cmd_depth,
+ const uint16_t* cmd_bits,
+ const uint8_t* dist_depth,
+ const uint16_t* dist_bits,
+ size_t* storage_ix,
+ uint8_t* storage) {
+ size_t pos = start_pos;
+ for (size_t i = 0; i < n_commands; ++i) {
+ const Command cmd = commands[i];
+ const size_t cmd_code = cmd.cmd_prefix_;
+ WriteBits(cmd_depth[cmd_code], cmd_bits[cmd_code], storage_ix, storage);
+ StoreCommandExtra(cmd, storage_ix, storage);
+ for (size_t j = cmd.insert_len_; j != 0; --j) {
+ const uint8_t literal = input[pos & mask];
+ WriteBits(lit_depth[literal], lit_bits[literal], storage_ix, storage);
+ ++pos;
+ }
+ pos += cmd.copy_len();
+ if (cmd.copy_len() && cmd.cmd_prefix_ >= 128) {
+ const size_t dist_code = cmd.dist_prefix_;
+ const uint32_t distnumextra = cmd.dist_extra_ >> 24;
+ const uint32_t distextra = cmd.dist_extra_ & 0xffffff;
+ WriteBits(dist_depth[dist_code], dist_bits[dist_code],
+ storage_ix, storage);
+ WriteBits(distnumextra, distextra, storage_ix, storage);
+ }
+ }
+}
+
+void StoreMetaBlockTrivial(const uint8_t* input,
+ size_t start_pos,
+ size_t length,
+ size_t mask,
+ bool is_last,
+ const brotli::Command *commands,
+ size_t n_commands,
+ size_t *storage_ix,
+ uint8_t *storage) {
+ StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage);
+
+ HistogramLiteral lit_histo;
+ HistogramCommand cmd_histo;
+ HistogramDistance dist_histo;
+
+ BuildHistograms(input, start_pos, mask, commands, n_commands,
+ &lit_histo, &cmd_histo, &dist_histo);
+
+ WriteBits(13, 0, storage_ix, storage);
+
+ std::vector<uint8_t> lit_depth(256);
+ std::vector<uint16_t> lit_bits(256);
+ std::vector<uint8_t> cmd_depth(kNumCommandPrefixes);
+ std::vector<uint16_t> cmd_bits(kNumCommandPrefixes);
+ std::vector<uint8_t> dist_depth(64);
+ std::vector<uint16_t> dist_bits(64);
+
+ HuffmanTree* tree = static_cast<HuffmanTree*>(
+ malloc(kMaxHuffmanTreeSize * sizeof(HuffmanTree)));
+ BuildAndStoreHuffmanTree(&lit_histo.data_[0], 256, tree,
+ &lit_depth[0], &lit_bits[0],
+ storage_ix, storage);
+ BuildAndStoreHuffmanTree(&cmd_histo.data_[0], kNumCommandPrefixes, tree,
+ &cmd_depth[0], &cmd_bits[0],
+ storage_ix, storage);
+ BuildAndStoreHuffmanTree(&dist_histo.data_[0], 64, tree,
+ &dist_depth[0], &dist_bits[0],
+ storage_ix, storage);
+ free(tree);
+ StoreDataWithHuffmanCodes(input, start_pos, mask, commands,
+ n_commands, &lit_depth[0], &lit_bits[0],
+ &cmd_depth[0], &cmd_bits[0],
+ &dist_depth[0], &dist_bits[0],
+ storage_ix, storage);
+ if (is_last) {
+ JumpToByteBoundary(storage_ix, storage);
+ }
+}
+
+void StoreMetaBlockFast(const uint8_t* input,
+ size_t start_pos,
+ size_t length,
+ size_t mask,
+ bool is_last,
+ const brotli::Command *commands,
+ size_t n_commands,
+ size_t *storage_ix,
+ uint8_t *storage) {
+ StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage);
+
+ WriteBits(13, 0, storage_ix, storage);
+
+ if (n_commands <= 128) {
+ uint32_t histogram[256] = { 0 };
+ size_t pos = start_pos;
+ size_t num_literals = 0;
+ for (size_t i = 0; i < n_commands; ++i) {
+ const Command cmd = commands[i];
+ for (size_t j = cmd.insert_len_; j != 0; --j) {
+ ++histogram[input[pos & mask]];
+ ++pos;
+ }
+ num_literals += cmd.insert_len_;
+ pos += cmd.copy_len();
+ }
+ uint8_t lit_depth[256] = { 0 };
+ uint16_t lit_bits[256] = { 0 };
+ BuildAndStoreHuffmanTreeFast(histogram, num_literals,
+ /* max_bits = */ 8,
+ lit_depth, lit_bits,
+ storage_ix, storage);
+ StoreStaticCommandHuffmanTree(storage_ix, storage);
+ StoreStaticDistanceHuffmanTree(storage_ix, storage);
+ StoreDataWithHuffmanCodes(input, start_pos, mask, commands,
+ n_commands, &lit_depth[0], &lit_bits[0],
+ kStaticCommandCodeDepth,
+ kStaticCommandCodeBits,
+ kStaticDistanceCodeDepth,
+ kStaticDistanceCodeBits,
+ storage_ix, storage);
+ } else {
+ HistogramLiteral lit_histo;
+ HistogramCommand cmd_histo;
+ HistogramDistance dist_histo;
+ BuildHistograms(input, start_pos, mask, commands, n_commands,
+ &lit_histo, &cmd_histo, &dist_histo);
+ std::vector<uint8_t> lit_depth(256);
+ std::vector<uint16_t> lit_bits(256);
+ std::vector<uint8_t> cmd_depth(kNumCommandPrefixes);
+ std::vector<uint16_t> cmd_bits(kNumCommandPrefixes);
+ std::vector<uint8_t> dist_depth(64);
+ std::vector<uint16_t> dist_bits(64);
+ BuildAndStoreHuffmanTreeFast(&lit_histo.data_[0], lit_histo.total_count_,
+ /* max_bits = */ 8,
+ &lit_depth[0], &lit_bits[0],
+ storage_ix, storage);
+ BuildAndStoreHuffmanTreeFast(&cmd_histo.data_[0], cmd_histo.total_count_,
+ /* max_bits = */ 10,
+ &cmd_depth[0], &cmd_bits[0],
+ storage_ix, storage);
+ BuildAndStoreHuffmanTreeFast(&dist_histo.data_[0], dist_histo.total_count_,
+ /* max_bits = */ 6,
+ &dist_depth[0], &dist_bits[0],
+ storage_ix, storage);
+ StoreDataWithHuffmanCodes(input, start_pos, mask, commands,
+ n_commands, &lit_depth[0], &lit_bits[0],
+ &cmd_depth[0], &cmd_bits[0],
+ &dist_depth[0], &dist_bits[0],
+ storage_ix, storage);
+ }
+
+ if (is_last) {
+ JumpToByteBoundary(storage_ix, storage);
+ }
+}
+
+// This is for storing uncompressed blocks (simple raw storage of
+// bytes-as-bytes).
+void StoreUncompressedMetaBlock(bool final_block,
+ const uint8_t * __restrict input,
+ size_t position, size_t mask,
+ size_t len,
+ size_t * __restrict storage_ix,
+ uint8_t * __restrict storage) {
+ StoreUncompressedMetaBlockHeader(len, storage_ix, storage);
+ JumpToByteBoundary(storage_ix, storage);
+
+ size_t masked_pos = position & mask;
+ if (masked_pos + len > mask + 1) {
+ size_t len1 = mask + 1 - masked_pos;
+ memcpy(&storage[*storage_ix >> 3], &input[masked_pos], len1);
+ *storage_ix += len1 << 3;
+ len -= len1;
+ masked_pos = 0;
+ }
+ memcpy(&storage[*storage_ix >> 3], &input[masked_pos], len);
+ *storage_ix += len << 3;
+
+ // We need to clear the next 4 bytes to continue to be
+ // compatible with WriteBits.
+ brotli::WriteBitsPrepareStorage(*storage_ix, storage);
+
+ // Since the uncompressed block itself may not be the final block, add an
+ // empty one after this.
+ if (final_block) {
+ brotli::WriteBits(1, 1, storage_ix, storage); // islast
+ brotli::WriteBits(1, 1, storage_ix, storage); // isempty
+ JumpToByteBoundary(storage_ix, storage);
+ }
+}
+
+void StoreSyncMetaBlock(size_t * __restrict storage_ix,
+ uint8_t * __restrict storage) {
+ // Empty metadata meta-block bit pattern:
+ // 1 bit: is_last (0)
+ // 2 bits: num nibbles (3)
+ // 1 bit: reserved (0)
+ // 2 bits: metadata length bytes (0)
+ WriteBits(6, 6, storage_ix, storage);
+ JumpToByteBoundary(storage_ix, storage);
+}
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/brotli_bit_stream.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/brotli_bit_stream.h
new file mode 100644
index 00000000000..6c706535c80
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/brotli_bit_stream.h
@@ -0,0 +1,179 @@
+/* Copyright 2014 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Functions to convert brotli-related data structures into the
+// brotli bit stream. The functions here operate under
+// assumption that there is enough space in the storage, i.e., there are
+// no out-of-range checks anywhere.
+//
+// These functions do bit addressing into a byte array. The byte array
+// is called "storage" and the index to the bit is called storage_ix
+// in function arguments.
+
+#ifndef BROTLI_ENC_BROTLI_BIT_STREAM_H_
+#define BROTLI_ENC_BROTLI_BIT_STREAM_H_
+
+#include <vector>
+
+#include "./entropy_encode.h"
+#include "./metablock.h"
+#include "./types.h"
+
+namespace brotli {
+
+// All Store functions here will use a storage_ix, which is always the bit
+// position for the current storage.
+
+// Stores a number between 0 and 255.
+void StoreVarLenUint8(size_t n, size_t* storage_ix, uint8_t* storage);
+
+// Stores the compressed meta-block header.
+// REQUIRES: length > 0
+// REQUIRES: length <= (1 << 24)
+void StoreCompressedMetaBlockHeader(bool final_block,
+ size_t length,
+ size_t* storage_ix,
+ uint8_t* storage);
+
+// Stores the uncompressed meta-block header.
+// REQUIRES: length > 0
+// REQUIRES: length <= (1 << 24)
+void StoreUncompressedMetaBlockHeader(size_t length,
+ size_t* storage_ix,
+ uint8_t* storage);
+
+// Stores a context map where the histogram type is always the block type.
+void StoreTrivialContextMap(size_t num_types,
+ size_t context_bits,
+ HuffmanTree* tree,
+ size_t* storage_ix,
+ uint8_t* storage);
+
+void StoreHuffmanTreeOfHuffmanTreeToBitMask(
+ const int num_codes,
+ const uint8_t *code_length_bitdepth,
+ size_t *storage_ix,
+ uint8_t *storage);
+
+void StoreHuffmanTree(const uint8_t* depths, size_t num, HuffmanTree* tree,
+ size_t *storage_ix, uint8_t *storage);
+
+// Builds a Huffman tree from histogram[0:length] into depth[0:length] and
+// bits[0:length] and stores the encoded tree to the bit stream.
+void BuildAndStoreHuffmanTree(const uint32_t *histogram,
+ const size_t length,
+ HuffmanTree* tree,
+ uint8_t* depth,
+ uint16_t* bits,
+ size_t* storage_ix,
+ uint8_t* storage);
+
+void BuildAndStoreHuffmanTreeFast(const uint32_t *histogram,
+ const size_t histogram_total,
+ const size_t max_bits,
+ uint8_t* depth,
+ uint16_t* bits,
+ size_t* storage_ix,
+ uint8_t* storage);
+
+// Encodes the given context map to the bit stream. The number of different
+// histogram ids is given by num_clusters.
+void EncodeContextMap(const std::vector<uint32_t>& context_map,
+ size_t num_clusters,
+ HuffmanTree* tree,
+ size_t* storage_ix, uint8_t* storage);
+
+// Data structure that stores everything that is needed to encode each block
+// switch command.
+struct BlockSplitCode {
+ std::vector<uint32_t> type_code;
+ std::vector<uint32_t> length_prefix;
+ std::vector<uint32_t> length_nextra;
+ std::vector<uint32_t> length_extra;
+ std::vector<uint8_t> type_depths;
+ std::vector<uint16_t> type_bits;
+ uint8_t length_depths[kNumBlockLenPrefixes];
+ uint16_t length_bits[kNumBlockLenPrefixes];
+};
+
+// Builds a BlockSplitCode data structure from the block split given by the
+// vector of block types and block lengths and stores it to the bit stream.
+void BuildAndStoreBlockSplitCode(const std::vector<uint8_t>& types,
+ const std::vector<uint32_t>& lengths,
+ const size_t num_types,
+ BlockSplitCode* code,
+ size_t* storage_ix,
+ uint8_t* storage);
+
+// Stores the block switch command with index block_ix to the bit stream.
+void StoreBlockSwitch(const BlockSplitCode& code,
+ const size_t block_ix,
+ size_t* storage_ix,
+ uint8_t* storage);
+
+// REQUIRES: length > 0
+// REQUIRES: length <= (1 << 24)
+void StoreMetaBlock(const uint8_t* input,
+ size_t start_pos,
+ size_t length,
+ size_t mask,
+ uint8_t prev_byte,
+ uint8_t prev_byte2,
+ bool final_block,
+ uint32_t num_direct_distance_codes,
+ uint32_t distance_postfix_bits,
+ ContextType literal_context_mode,
+ const brotli::Command *commands,
+ size_t n_commands,
+ const MetaBlockSplit& mb,
+ size_t *storage_ix,
+ uint8_t *storage);
+
+// Stores the meta-block without doing any block splitting, just collects
+// one histogram per block category and uses that for entropy coding.
+// REQUIRES: length > 0
+// REQUIRES: length <= (1 << 24)
+void StoreMetaBlockTrivial(const uint8_t* input,
+ size_t start_pos,
+ size_t length,
+ size_t mask,
+ bool is_last,
+ const brotli::Command *commands,
+ size_t n_commands,
+ size_t *storage_ix,
+ uint8_t *storage);
+
+// Same as above, but uses static prefix codes for histograms with a only a few
+// symbols, and uses static code length prefix codes for all other histograms.
+// REQUIRES: length > 0
+// REQUIRES: length <= (1 << 24)
+void StoreMetaBlockFast(const uint8_t* input,
+ size_t start_pos,
+ size_t length,
+ size_t mask,
+ bool is_last,
+ const brotli::Command *commands,
+ size_t n_commands,
+ size_t *storage_ix,
+ uint8_t *storage);
+
+// This is for storing uncompressed blocks (simple raw storage of
+// bytes-as-bytes).
+// REQUIRES: length > 0
+// REQUIRES: length <= (1 << 24)
+void StoreUncompressedMetaBlock(bool final_block,
+ const uint8_t* input,
+ size_t position, size_t mask,
+ size_t len,
+ size_t* storage_ix,
+ uint8_t* storage);
+
+// Stores an empty metadata meta-block and syncs to a byte boundary.
+void StoreSyncMetaBlock(size_t* storage_ix, uint8_t* storage);
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_BROTLI_BIT_STREAM_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/cluster.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/cluster.h
new file mode 100644
index 00000000000..5054faf791d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/cluster.h
@@ -0,0 +1,330 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Functions for clustering similar histograms together.
+
+#ifndef BROTLI_ENC_CLUSTER_H_
+#define BROTLI_ENC_CLUSTER_H_
+
+#include <math.h>
+#include <algorithm>
+#include <utility>
+#include <vector>
+
+#include "./bit_cost.h"
+#include "./entropy_encode.h"
+#include "./fast_log.h"
+#include "./histogram.h"
+#include "./port.h"
+#include "./types.h"
+
+namespace brotli {
+
+struct HistogramPair {
+ uint32_t idx1;
+ uint32_t idx2;
+ double cost_combo;
+ double cost_diff;
+};
+
+inline bool operator<(const HistogramPair& p1, const HistogramPair& p2) {
+ if (p1.cost_diff != p2.cost_diff) {
+ return p1.cost_diff > p2.cost_diff;
+ }
+ return (p1.idx2 - p1.idx1) > (p2.idx2 - p2.idx1);
+}
+
+// Returns entropy reduction of the context map when we combine two clusters.
+inline double ClusterCostDiff(size_t size_a, size_t size_b) {
+ size_t size_c = size_a + size_b;
+ return static_cast<double>(size_a) * FastLog2(size_a) +
+ static_cast<double>(size_b) * FastLog2(size_b) -
+ static_cast<double>(size_c) * FastLog2(size_c);
+}
+
+// Computes the bit cost reduction by combining out[idx1] and out[idx2] and if
+// it is below a threshold, stores the pair (idx1, idx2) in the *pairs queue.
+template<typename HistogramType>
+void CompareAndPushToQueue(const HistogramType* out,
+ const uint32_t* cluster_size,
+ uint32_t idx1, uint32_t idx2,
+ size_t max_num_pairs,
+ HistogramPair* pairs,
+ size_t* num_pairs) {
+ if (idx1 == idx2) {
+ return;
+ }
+ if (idx2 < idx1) {
+ uint32_t t = idx2;
+ idx2 = idx1;
+ idx1 = t;
+ }
+ bool store_pair = false;
+ HistogramPair p;
+ p.idx1 = idx1;
+ p.idx2 = idx2;
+ p.cost_diff = 0.5 * ClusterCostDiff(cluster_size[idx1], cluster_size[idx2]);
+ p.cost_diff -= out[idx1].bit_cost_;
+ p.cost_diff -= out[idx2].bit_cost_;
+
+ if (out[idx1].total_count_ == 0) {
+ p.cost_combo = out[idx2].bit_cost_;
+ store_pair = true;
+ } else if (out[idx2].total_count_ == 0) {
+ p.cost_combo = out[idx1].bit_cost_;
+ store_pair = true;
+ } else {
+ double threshold = *num_pairs == 0 ? 1e99 :
+ std::max(0.0, pairs[0].cost_diff);
+ HistogramType combo = out[idx1];
+ combo.AddHistogram(out[idx2]);
+ double cost_combo = PopulationCost(combo);
+ if (cost_combo < threshold - p.cost_diff) {
+ p.cost_combo = cost_combo;
+ store_pair = true;
+ }
+ }
+ if (store_pair) {
+ p.cost_diff += p.cost_combo;
+ if (*num_pairs > 0 && pairs[0] < p) {
+ // Replace the top of the queue if needed.
+ if (*num_pairs < max_num_pairs) {
+ pairs[*num_pairs] = pairs[0];
+ ++(*num_pairs);
+ }
+ pairs[0] = p;
+ } else if (*num_pairs < max_num_pairs) {
+ pairs[*num_pairs] = p;
+ ++(*num_pairs);
+ }
+ }
+}
+
+template<typename HistogramType>
+size_t HistogramCombine(HistogramType* out,
+ uint32_t* cluster_size,
+ uint32_t* symbols,
+ uint32_t* clusters,
+ HistogramPair* pairs,
+ size_t num_clusters,
+ size_t symbols_size,
+ size_t max_clusters,
+ size_t max_num_pairs) {
+ double cost_diff_threshold = 0.0;
+ size_t min_cluster_size = 1;
+
+ // We maintain a vector of histogram pairs, with the property that the pair
+ // with the maximum bit cost reduction is the first.
+ size_t num_pairs = 0;
+ for (size_t idx1 = 0; idx1 < num_clusters; ++idx1) {
+ for (size_t idx2 = idx1 + 1; idx2 < num_clusters; ++idx2) {
+ CompareAndPushToQueue(out, cluster_size, clusters[idx1], clusters[idx2],
+ max_num_pairs, &pairs[0], &num_pairs);
+ }
+ }
+
+ while (num_clusters > min_cluster_size) {
+ if (pairs[0].cost_diff >= cost_diff_threshold) {
+ cost_diff_threshold = 1e99;
+ min_cluster_size = max_clusters;
+ continue;
+ }
+ // Take the best pair from the top of heap.
+ uint32_t best_idx1 = pairs[0].idx1;
+ uint32_t best_idx2 = pairs[0].idx2;
+ out[best_idx1].AddHistogram(out[best_idx2]);
+ out[best_idx1].bit_cost_ = pairs[0].cost_combo;
+ cluster_size[best_idx1] += cluster_size[best_idx2];
+ for (size_t i = 0; i < symbols_size; ++i) {
+ if (symbols[i] == best_idx2) {
+ symbols[i] = best_idx1;
+ }
+ }
+ for (size_t i = 0; i < num_clusters; ++i) {
+ if (clusters[i] == best_idx2) {
+ memmove(&clusters[i], &clusters[i + 1],
+ (num_clusters - i - 1) * sizeof(clusters[0]));
+ break;
+ }
+ }
+ --num_clusters;
+ // Remove pairs intersecting the just combined best pair.
+ size_t copy_to_idx = 0;
+ for (size_t i = 0; i < num_pairs; ++i) {
+ HistogramPair& p = pairs[i];
+ if (p.idx1 == best_idx1 || p.idx2 == best_idx1 ||
+ p.idx1 == best_idx2 || p.idx2 == best_idx2) {
+ // Remove invalid pair from the queue.
+ continue;
+ }
+ if (pairs[0] < p) {
+ // Replace the top of the queue if needed.
+ HistogramPair front = pairs[0];
+ pairs[0] = p;
+ pairs[copy_to_idx] = front;
+ } else {
+ pairs[copy_to_idx] = p;
+ }
+ ++copy_to_idx;
+ }
+ num_pairs = copy_to_idx;
+
+ // Push new pairs formed with the combined histogram to the heap.
+ for (size_t i = 0; i < num_clusters; ++i) {
+ CompareAndPushToQueue(out, cluster_size, best_idx1, clusters[i],
+ max_num_pairs, &pairs[0], &num_pairs);
+ }
+ }
+ return num_clusters;
+}
+
+// -----------------------------------------------------------------------------
+// Histogram refinement
+
+// What is the bit cost of moving histogram from cur_symbol to candidate.
+template<typename HistogramType>
+double HistogramBitCostDistance(const HistogramType& histogram,
+ const HistogramType& candidate) {
+ if (histogram.total_count_ == 0) {
+ return 0.0;
+ }
+ HistogramType tmp = histogram;
+ tmp.AddHistogram(candidate);
+ return PopulationCost(tmp) - candidate.bit_cost_;
+}
+
+// Find the best 'out' histogram for each of the 'in' histograms.
+// When called, clusters[0..num_clusters) contains the unique values from
+// symbols[0..in_size), but this property is not preserved in this function.
+// Note: we assume that out[]->bit_cost_ is already up-to-date.
+template<typename HistogramType>
+void HistogramRemap(const HistogramType* in, size_t in_size,
+ const uint32_t* clusters, size_t num_clusters,
+ HistogramType* out, uint32_t* symbols) {
+ for (size_t i = 0; i < in_size; ++i) {
+ uint32_t best_out = i == 0 ? symbols[0] : symbols[i - 1];
+ double best_bits = HistogramBitCostDistance(in[i], out[best_out]);
+ for (size_t j = 0; j < num_clusters; ++j) {
+ const double cur_bits = HistogramBitCostDistance(in[i], out[clusters[j]]);
+ if (cur_bits < best_bits) {
+ best_bits = cur_bits;
+ best_out = clusters[j];
+ }
+ }
+ symbols[i] = best_out;
+ }
+
+ // Recompute each out based on raw and symbols.
+ for (size_t j = 0; j < num_clusters; ++j) {
+ out[clusters[j]].Clear();
+ }
+ for (size_t i = 0; i < in_size; ++i) {
+ out[symbols[i]].AddHistogram(in[i]);
+ }
+}
+
+// Reorders elements of the out[0..length) array and changes values in
+// symbols[0..length) array in the following way:
+// * when called, symbols[] contains indexes into out[], and has N unique
+// values (possibly N < length)
+// * on return, symbols'[i] = f(symbols[i]) and
+// out'[symbols'[i]] = out[symbols[i]], for each 0 <= i < length,
+// where f is a bijection between the range of symbols[] and [0..N), and
+// the first occurrences of values in symbols'[i] come in consecutive
+// increasing order.
+// Returns N, the number of unique values in symbols[].
+template<typename HistogramType>
+size_t HistogramReindex(HistogramType* out, uint32_t* symbols, size_t length) {
+ static const uint32_t kInvalidIndex = std::numeric_limits<uint32_t>::max();
+ std::vector<uint32_t> new_index(length, kInvalidIndex);
+ uint32_t next_index = 0;
+ for (size_t i = 0; i < length; ++i) {
+ if (new_index[symbols[i]] == kInvalidIndex) {
+ new_index[symbols[i]] = next_index;
+ ++next_index;
+ }
+ }
+ std::vector<HistogramType> tmp(next_index);
+ next_index = 0;
+ for (size_t i = 0; i < length; ++i) {
+ if (new_index[symbols[i]] == next_index) {
+ tmp[next_index] = out[symbols[i]];
+ ++next_index;
+ }
+ symbols[i] = new_index[symbols[i]];
+ }
+ for (size_t i = 0; i < next_index; ++i) {
+ out[i] = tmp[i];
+ }
+ return next_index;
+}
+
+// Clusters similar histograms in 'in' together, the selected histograms are
+// placed in 'out', and for each index in 'in', *histogram_symbols will
+// indicate which of the 'out' histograms is the best approximation.
+template<typename HistogramType>
+void ClusterHistograms(const std::vector<HistogramType>& in,
+ size_t num_contexts, size_t num_blocks,
+ size_t max_histograms,
+ std::vector<HistogramType>* out,
+ std::vector<uint32_t>* histogram_symbols) {
+ const size_t in_size = num_contexts * num_blocks;
+ assert(in_size == in.size());
+ std::vector<uint32_t> cluster_size(in_size, 1);
+ std::vector<uint32_t> clusters(in_size);
+ size_t num_clusters = 0;
+ out->resize(in_size);
+ histogram_symbols->resize(in_size);
+ for (size_t i = 0; i < in_size; ++i) {
+ (*out)[i] = in[i];
+ (*out)[i].bit_cost_ = PopulationCost(in[i]);
+ (*histogram_symbols)[i] = static_cast<uint32_t>(i);
+ }
+
+ const size_t max_input_histograms = 64;
+ // For the first pass of clustering, we allow all pairs.
+ size_t max_num_pairs = max_input_histograms * max_input_histograms / 2;
+ std::vector<HistogramPair> pairs(max_num_pairs + 1);
+
+ for (size_t i = 0; i < in_size; i += max_input_histograms) {
+ size_t num_to_combine = std::min(in_size - i, max_input_histograms);
+ for (size_t j = 0; j < num_to_combine; ++j) {
+ clusters[num_clusters + j] = static_cast<uint32_t>(i + j);
+ }
+ size_t num_new_clusters =
+ HistogramCombine(&(*out)[0], &cluster_size[0],
+ &(*histogram_symbols)[i],
+ &clusters[num_clusters], &pairs[0],
+ num_to_combine, num_to_combine,
+ max_histograms, max_num_pairs);
+ num_clusters += num_new_clusters;
+ }
+
+ // For the second pass, we limit the total number of histogram pairs.
+ // After this limit is reached, we only keep searching for the best pair.
+ max_num_pairs =
+ std::min(64 * num_clusters, (num_clusters / 2) * num_clusters);
+ pairs.resize(max_num_pairs + 1);
+
+ // Collapse similar histograms.
+ num_clusters = HistogramCombine(&(*out)[0], &cluster_size[0],
+ &(*histogram_symbols)[0], &clusters[0],
+ &pairs[0], num_clusters, in_size,
+ max_histograms, max_num_pairs);
+
+ // Find the optimal map from original histograms to the final ones.
+ HistogramRemap(&in[0], in_size, &clusters[0], num_clusters,
+ &(*out)[0], &(*histogram_symbols)[0]);
+
+ // Convert the context map to a canonical form.
+ size_t num_histograms =
+ HistogramReindex(&(*out)[0], &(*histogram_symbols)[0], in_size);
+ out->resize(num_histograms);
+}
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_CLUSTER_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/command.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/command.h
new file mode 100644
index 00000000000..b5cc872bfca
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/command.h
@@ -0,0 +1,156 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// This class models a sequence of literals and a backward reference copy.
+
+#ifndef BROTLI_ENC_COMMAND_H_
+#define BROTLI_ENC_COMMAND_H_
+
+#include "./fast_log.h"
+#include "./prefix.h"
+#include "./types.h"
+
+namespace brotli {
+
+static uint32_t kInsBase[] = { 0, 1, 2, 3, 4, 5, 6, 8, 10, 14, 18, 26, 34, 50,
+ 66, 98, 130, 194, 322, 578, 1090, 2114, 6210, 22594 };
+static uint32_t kInsExtra[] = { 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
+ 5, 5, 6, 7, 8, 9, 10, 12, 14, 24 };
+static uint32_t kCopyBase[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 18, 22, 30,
+ 38, 54, 70, 102, 134, 198, 326, 582, 1094, 2118 };
+static uint32_t kCopyExtra[] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3,
+ 4, 4, 5, 5, 6, 7, 8, 9, 10, 24 };
+
+static inline uint16_t GetInsertLengthCode(size_t insertlen) {
+ if (insertlen < 6) {
+ return static_cast<uint16_t>(insertlen);
+ } else if (insertlen < 130) {
+ insertlen -= 2;
+ uint32_t nbits = Log2FloorNonZero(insertlen) - 1u;
+ return static_cast<uint16_t>((nbits << 1) + (insertlen >> nbits) + 2);
+ } else if (insertlen < 2114) {
+ return static_cast<uint16_t>(Log2FloorNonZero(insertlen - 66) + 10);
+ } else if (insertlen < 6210) {
+ return 21u;
+ } else if (insertlen < 22594) {
+ return 22u;
+ } else {
+ return 23u;
+ }
+}
+
+static inline uint16_t GetCopyLengthCode(size_t copylen) {
+ if (copylen < 10) {
+ return static_cast<uint16_t>(copylen - 2);
+ } else if (copylen < 134) {
+ copylen -= 6;
+ uint32_t nbits = Log2FloorNonZero(copylen) - 1u;
+ return static_cast<uint16_t>((nbits << 1) + (copylen >> nbits) + 4);
+ } else if (copylen < 2118) {
+ return static_cast<uint16_t>(Log2FloorNonZero(copylen - 70) + 12);
+ } else {
+ return 23u;
+ }
+}
+
+static inline uint16_t CombineLengthCodes(
+ uint16_t inscode, uint16_t copycode, bool use_last_distance) {
+ uint16_t bits64 =
+ static_cast<uint16_t>((copycode & 0x7u) | ((inscode & 0x7u) << 3));
+ if (use_last_distance && inscode < 8 && copycode < 16) {
+ return (copycode < 8) ? bits64 : (bits64 | 64);
+ } else {
+ // "To convert an insert-and-copy length code to an insert length code and
+ // a copy length code, the following table can be used"
+ static const uint16_t cells[9] = { 128u, 192u, 384u, 256u, 320u, 512u,
+ 448u, 576u, 640u };
+ return cells[(copycode >> 3) + 3 * (inscode >> 3)] | bits64;
+ }
+}
+
+static inline void GetLengthCode(size_t insertlen, size_t copylen,
+ bool use_last_distance,
+ uint16_t* code) {
+ uint16_t inscode = GetInsertLengthCode(insertlen);
+ uint16_t copycode = GetCopyLengthCode(copylen);
+ *code = CombineLengthCodes(inscode, copycode, use_last_distance);
+}
+
+static inline uint32_t GetInsertBase(uint16_t inscode) {
+ return kInsBase[inscode];
+}
+
+static inline uint32_t GetInsertExtra(uint16_t inscode) {
+ return kInsExtra[inscode];
+}
+
+static inline uint32_t GetCopyBase(uint16_t copycode) {
+ return kCopyBase[copycode];
+}
+
+static inline uint32_t GetCopyExtra(uint16_t copycode) {
+ return kCopyExtra[copycode];
+}
+
+struct Command {
+ // distance_code is e.g. 0 for same-as-last short code, or 16 for offset 1.
+ Command(size_t insertlen, size_t copylen, size_t copylen_code,
+ size_t distance_code)
+ : insert_len_(static_cast<uint32_t>(insertlen)) {
+ copy_len_ = static_cast<uint32_t>(
+ copylen | ((copylen_code ^ copylen) << 24));
+ // The distance prefix and extra bits are stored in this Command as if
+ // npostfix and ndirect were 0, they are only recomputed later after the
+ // clustering if needed.
+ PrefixEncodeCopyDistance(distance_code, 0, 0, &dist_prefix_, &dist_extra_);
+ GetLengthCode(insertlen, copylen_code, dist_prefix_ == 0,
+ &cmd_prefix_);
+ }
+
+ explicit Command(size_t insertlen)
+ : insert_len_(static_cast<uint32_t>(insertlen))
+ , copy_len_(4 << 24), dist_extra_(0), dist_prefix_(16) {
+ GetLengthCode(insertlen, 4, dist_prefix_ == 0, &cmd_prefix_);
+ }
+
+ uint32_t DistanceCode(void) const {
+ if (dist_prefix_ < 16) {
+ return dist_prefix_;
+ }
+ uint32_t nbits = dist_extra_ >> 24;
+ uint32_t extra = dist_extra_ & 0xffffff;
+ uint32_t prefix = dist_prefix_ - 12 - 2 * nbits;
+ return (prefix << nbits) + extra + 12;
+ }
+
+ uint32_t DistanceContext(void) const {
+ uint32_t r = cmd_prefix_ >> 6;
+ uint32_t c = cmd_prefix_ & 7;
+ if ((r == 0 || r == 2 || r == 4 || r == 7) && (c <= 2)) {
+ return c;
+ }
+ return 3;
+ }
+
+ inline uint32_t copy_len(void) const {
+ return copy_len_ & 0xFFFFFF;
+ }
+
+ inline uint32_t copy_len_code(void) const {
+ return (copy_len_ & 0xFFFFFF) ^ (copy_len_ >> 24);
+ }
+
+ uint32_t insert_len_;
+ /* Stores copy_len in low 24 bits and copy_len XOR copy_code in high 8 bit. */
+ uint32_t copy_len_;
+ uint32_t dist_extra_;
+ uint16_t cmd_prefix_;
+ uint16_t dist_prefix_;
+};
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_COMMAND_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment.cc
new file mode 100644
index 00000000000..5620112ac02
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment.cc
@@ -0,0 +1,701 @@
+/* Copyright 2015 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Function for fast encoding of an input fragment, independently from the input
+// history. This function uses one-pass processing: when we find a backward
+// match, we immediately emit the corresponding command and literal codes to
+// the bit stream.
+//
+// Adapted from the CompressFragment() function in
+// https://github.com/google/snappy/blob/master/snappy.cc
+
+#include "./compress_fragment.h"
+
+#include <algorithm>
+#include <cstring>
+
+#include "./brotli_bit_stream.h"
+#include "./entropy_encode.h"
+#include "./fast_log.h"
+#include "./find_match_length.h"
+#include "./port.h"
+#include "./types.h"
+#include "./write_bits.h"
+
+namespace brotli {
+
+// kHashMul32 multiplier has these properties:
+// * The multiplier must be odd. Otherwise we may lose the highest bit.
+// * No long streaks of 1s or 0s.
+// * There is no effort to ensure that it is a prime, the oddity is enough
+// for this use.
+// * The number has been tuned heuristically against compression benchmarks.
+static const uint32_t kHashMul32 = 0x1e35a7bd;
+
+static inline uint32_t Hash(const uint8_t* p, size_t shift) {
+ const uint64_t h = (BROTLI_UNALIGNED_LOAD64(p) << 24) * kHashMul32;
+ return static_cast<uint32_t>(h >> shift);
+}
+
+static inline uint32_t HashBytesAtOffset(uint64_t v, int offset, size_t shift) {
+ assert(offset >= 0);
+ assert(offset <= 3);
+ const uint64_t h = ((v >> (8 * offset)) << 24) * kHashMul32;
+ return static_cast<uint32_t>(h >> shift);
+}
+
+static inline int IsMatch(const uint8_t* p1, const uint8_t* p2) {
+ return (BROTLI_UNALIGNED_LOAD32(p1) == BROTLI_UNALIGNED_LOAD32(p2) &&
+ p1[4] == p2[4]);
+}
+
+// Builds a literal prefix code into "depths" and "bits" based on the statistics
+// of the "input" string and stores it into the bit stream.
+// Note that the prefix code here is built from the pre-LZ77 input, therefore
+// we can only approximate the statistics of the actual literal stream.
+// Moreover, for long inputs we build a histogram from a sample of the input
+// and thus have to assign a non-zero depth for each literal.
+static void BuildAndStoreLiteralPrefixCode(const uint8_t* input,
+ const size_t input_size,
+ uint8_t depths[256],
+ uint16_t bits[256],
+ size_t* storage_ix,
+ uint8_t* storage) {
+ uint32_t histogram[256] = { 0 };
+ size_t histogram_total;
+ if (input_size < (1 << 15)) {
+ for (size_t i = 0; i < input_size; ++i) {
+ ++histogram[input[i]];
+ }
+ histogram_total = input_size;
+ for (size_t i = 0; i < 256; ++i) {
+ // We weigh the first 11 samples with weight 3 to account for the
+ // balancing effect of the LZ77 phase on the histogram.
+ const uint32_t adjust = 2 * std::min(histogram[i], 11u);
+ histogram[i] += adjust;
+ histogram_total += adjust;
+ }
+ } else {
+ static const size_t kSampleRate = 29;
+ for (size_t i = 0; i < input_size; i += kSampleRate) {
+ ++histogram[input[i]];
+ }
+ histogram_total = (input_size + kSampleRate - 1) / kSampleRate;
+ for (size_t i = 0; i < 256; ++i) {
+ // We add 1 to each population count to avoid 0 bit depths (since this is
+ // only a sample and we don't know if the symbol appears or not), and we
+ // weigh the first 11 samples with weight 3 to account for the balancing
+ // effect of the LZ77 phase on the histogram (more frequent symbols are
+ // more likely to be in backward references instead as literals).
+ const uint32_t adjust = 1 + 2 * std::min(histogram[i], 11u);
+ histogram[i] += adjust;
+ histogram_total += adjust;
+ }
+ }
+ BuildAndStoreHuffmanTreeFast(histogram, histogram_total,
+ /* max_bits = */ 8,
+ depths, bits, storage_ix, storage);
+}
+
+// Builds a command and distance prefix code (each 64 symbols) into "depth" and
+// "bits" based on "histogram" and stores it into the bit stream.
+static void BuildAndStoreCommandPrefixCode(const uint32_t histogram[128],
+ uint8_t depth[128],
+ uint16_t bits[128],
+ size_t* storage_ix,
+ uint8_t* storage) {
+ // Tree size for building a tree over 64 symbols is 2 * 64 + 1.
+ static const size_t kTreeSize = 129;
+ HuffmanTree tree[kTreeSize];
+ CreateHuffmanTree(histogram, 64, 15, tree, depth);
+ CreateHuffmanTree(&histogram[64], 64, 14, tree, &depth[64]);
+ // We have to jump through a few hoopes here in order to compute
+ // the command bits because the symbols are in a different order than in
+ // the full alphabet. This looks complicated, but having the symbols
+ // in this order in the command bits saves a few branches in the Emit*
+ // functions.
+ uint8_t cmd_depth[64];
+ uint16_t cmd_bits[64];
+ memcpy(cmd_depth, depth, 24);
+ memcpy(cmd_depth + 24, depth + 40, 8);
+ memcpy(cmd_depth + 32, depth + 24, 8);
+ memcpy(cmd_depth + 40, depth + 48, 8);
+ memcpy(cmd_depth + 48, depth + 32, 8);
+ memcpy(cmd_depth + 56, depth + 56, 8);
+ ConvertBitDepthsToSymbols(cmd_depth, 64, cmd_bits);
+ memcpy(bits, cmd_bits, 48);
+ memcpy(bits + 24, cmd_bits + 32, 16);
+ memcpy(bits + 32, cmd_bits + 48, 16);
+ memcpy(bits + 40, cmd_bits + 24, 16);
+ memcpy(bits + 48, cmd_bits + 40, 16);
+ memcpy(bits + 56, cmd_bits + 56, 16);
+ ConvertBitDepthsToSymbols(&depth[64], 64, &bits[64]);
+ {
+ // Create the bit length array for the full command alphabet.
+ uint8_t cmd_depth[704] = { 0 };
+ memcpy(cmd_depth, depth, 8);
+ memcpy(cmd_depth + 64, depth + 8, 8);
+ memcpy(cmd_depth + 128, depth + 16, 8);
+ memcpy(cmd_depth + 192, depth + 24, 8);
+ memcpy(cmd_depth + 384, depth + 32, 8);
+ for (size_t i = 0; i < 8; ++i) {
+ cmd_depth[128 + 8 * i] = depth[40 + i];
+ cmd_depth[256 + 8 * i] = depth[48 + i];
+ cmd_depth[448 + 8 * i] = depth[56 + i];
+ }
+ StoreHuffmanTree(cmd_depth, 704, tree, storage_ix, storage);
+ }
+ StoreHuffmanTree(&depth[64], 64, tree, storage_ix, storage);
+}
+
+// REQUIRES: insertlen < 6210
+inline void EmitInsertLen(size_t insertlen,
+ const uint8_t depth[128],
+ const uint16_t bits[128],
+ uint32_t histo[128],
+ size_t* storage_ix,
+ uint8_t* storage) {
+ if (insertlen < 6) {
+ const size_t code = insertlen + 40;
+ WriteBits(depth[code], bits[code], storage_ix, storage);
+ ++histo[code];
+ } else if (insertlen < 130) {
+ insertlen -= 2;
+ const uint32_t nbits = Log2FloorNonZero(insertlen) - 1u;
+ const size_t prefix = insertlen >> nbits;
+ const size_t inscode = (nbits << 1) + prefix + 42;
+ WriteBits(depth[inscode], bits[inscode], storage_ix, storage);
+ WriteBits(nbits, insertlen - (prefix << nbits), storage_ix, storage);
+ ++histo[inscode];
+ } else if (insertlen < 2114) {
+ insertlen -= 66;
+ const uint32_t nbits = Log2FloorNonZero(insertlen);
+ const size_t code = nbits + 50;
+ WriteBits(depth[code], bits[code], storage_ix, storage);
+ WriteBits(nbits, insertlen - (1 << nbits), storage_ix, storage);
+ ++histo[code];
+ } else {
+ WriteBits(depth[61], bits[61], storage_ix, storage);
+ WriteBits(12, insertlen - 2114, storage_ix, storage);
+ ++histo[21];
+ }
+}
+
+inline void EmitLongInsertLen(size_t insertlen,
+ const uint8_t depth[128],
+ const uint16_t bits[128],
+ uint32_t histo[128],
+ size_t* storage_ix,
+ uint8_t* storage) {
+ if (insertlen < 22594) {
+ WriteBits(depth[62], bits[62], storage_ix, storage);
+ WriteBits(14, insertlen - 6210, storage_ix, storage);
+ ++histo[22];
+ } else {
+ WriteBits(depth[63], bits[63], storage_ix, storage);
+ WriteBits(24, insertlen - 22594, storage_ix, storage);
+ ++histo[23];
+ }
+}
+
+inline void EmitCopyLen(size_t copylen,
+ const uint8_t depth[128],
+ const uint16_t bits[128],
+ uint32_t histo[128],
+ size_t* storage_ix,
+ uint8_t* storage) {
+ if (copylen < 10) {
+ WriteBits(depth[copylen + 14], bits[copylen + 14], storage_ix, storage);
+ ++histo[copylen + 14];
+ } else if (copylen < 134) {
+ copylen -= 6;
+ const uint32_t nbits = Log2FloorNonZero(copylen) - 1u;
+ const size_t prefix = copylen >> nbits;
+ const size_t code = (nbits << 1) + prefix + 20;
+ WriteBits(depth[code], bits[code], storage_ix, storage);
+ WriteBits(nbits, copylen - (prefix << nbits), storage_ix, storage);
+ ++histo[code];
+ } else if (copylen < 2118) {
+ copylen -= 70;
+ const uint32_t nbits = Log2FloorNonZero(copylen);
+ const size_t code = nbits + 28;
+ WriteBits(depth[code], bits[code], storage_ix, storage);
+ WriteBits(nbits, copylen - (1 << nbits), storage_ix, storage);
+ ++histo[code];
+ } else {
+ WriteBits(depth[39], bits[39], storage_ix, storage);
+ WriteBits(24, copylen - 2118, storage_ix, storage);
+ ++histo[47];
+ }
+}
+
+inline void EmitCopyLenLastDistance(size_t copylen,
+ const uint8_t depth[128],
+ const uint16_t bits[128],
+ uint32_t histo[128],
+ size_t* storage_ix,
+ uint8_t* storage) {
+ if (copylen < 12) {
+ WriteBits(depth[copylen - 4], bits[copylen - 4], storage_ix, storage);
+ ++histo[copylen - 4];
+ } else if (copylen < 72) {
+ copylen -= 8;
+ const uint32_t nbits = Log2FloorNonZero(copylen) - 1;
+ const size_t prefix = copylen >> nbits;
+ const size_t code = (nbits << 1) + prefix + 4;
+ WriteBits(depth[code], bits[code], storage_ix, storage);
+ WriteBits(nbits, copylen - (prefix << nbits), storage_ix, storage);
+ ++histo[code];
+ } else if (copylen < 136) {
+ copylen -= 8;
+ const size_t code = (copylen >> 5) + 30;
+ WriteBits(depth[code], bits[code], storage_ix, storage);
+ WriteBits(5, copylen & 31, storage_ix, storage);
+ WriteBits(depth[64], bits[64], storage_ix, storage);
+ ++histo[code];
+ ++histo[64];
+ } else if (copylen < 2120) {
+ copylen -= 72;
+ const uint32_t nbits = Log2FloorNonZero(copylen);
+ const size_t code = nbits + 28;
+ WriteBits(depth[code], bits[code], storage_ix, storage);
+ WriteBits(nbits, copylen - (1 << nbits), storage_ix, storage);
+ WriteBits(depth[64], bits[64], storage_ix, storage);
+ ++histo[code];
+ ++histo[64];
+ } else {
+ WriteBits(depth[39], bits[39], storage_ix, storage);
+ WriteBits(24, copylen - 2120, storage_ix, storage);
+ WriteBits(depth[64], bits[64], storage_ix, storage);
+ ++histo[47];
+ ++histo[64];
+ }
+}
+
+inline void EmitDistance(size_t distance,
+ const uint8_t depth[128],
+ const uint16_t bits[128],
+ uint32_t histo[128],
+ size_t* storage_ix, uint8_t* storage) {
+ distance += 3;
+ const uint32_t nbits = Log2FloorNonZero(distance) - 1u;
+ const size_t prefix = (distance >> nbits) & 1;
+ const size_t offset = (2 + prefix) << nbits;
+ const size_t distcode = 2 * (nbits - 1) + prefix + 80;
+ WriteBits(depth[distcode], bits[distcode], storage_ix, storage);
+ WriteBits(nbits, distance - offset, storage_ix, storage);
+ ++histo[distcode];
+}
+
+inline void EmitLiterals(const uint8_t* input, const size_t len,
+ const uint8_t depth[256], const uint16_t bits[256],
+ size_t* storage_ix, uint8_t* storage) {
+ for (size_t j = 0; j < len; j++) {
+ const uint8_t lit = input[j];
+ WriteBits(depth[lit], bits[lit], storage_ix, storage);
+ }
+}
+
+// REQUIRES: len <= 1 << 20.
+static void StoreMetaBlockHeader(
+ size_t len, bool is_uncompressed, size_t* storage_ix, uint8_t* storage) {
+ // ISLAST
+ WriteBits(1, 0, storage_ix, storage);
+ if (len <= (1U << 16)) {
+ // MNIBBLES is 4
+ WriteBits(2, 0, storage_ix, storage);
+ WriteBits(16, len - 1, storage_ix, storage);
+ } else {
+ // MNIBBLES is 5
+ WriteBits(2, 1, storage_ix, storage);
+ WriteBits(20, len - 1, storage_ix, storage);
+ }
+ // ISUNCOMPRESSED
+ WriteBits(1, is_uncompressed, storage_ix, storage);
+}
+
+static void UpdateBits(size_t n_bits,
+ uint32_t bits,
+ size_t pos,
+ uint8_t *array) {
+ while (n_bits > 0) {
+ size_t byte_pos = pos >> 3;
+ size_t n_unchanged_bits = pos & 7;
+ size_t n_changed_bits = std::min(n_bits, 8 - n_unchanged_bits);
+ size_t total_bits = n_unchanged_bits + n_changed_bits;
+ uint32_t mask = (~((1 << total_bits) - 1)) | ((1 << n_unchanged_bits) - 1);
+ uint32_t unchanged_bits = array[byte_pos] & mask;
+ uint32_t changed_bits = bits & ((1 << n_changed_bits) - 1);
+ array[byte_pos] =
+ static_cast<uint8_t>((changed_bits << n_unchanged_bits) |
+ unchanged_bits);
+ n_bits -= n_changed_bits;
+ bits >>= n_changed_bits;
+ pos += n_changed_bits;
+ }
+}
+
+static void RewindBitPosition(const size_t new_storage_ix,
+ size_t* storage_ix, uint8_t* storage) {
+ const size_t bitpos = new_storage_ix & 7;
+ const size_t mask = (1u << bitpos) - 1;
+ storage[new_storage_ix >> 3] &= static_cast<uint8_t>(mask);
+ *storage_ix = new_storage_ix;
+}
+
+static bool ShouldMergeBlock(const uint8_t* data, size_t len,
+ const uint8_t* depths) {
+ size_t histo[256] = { 0 };
+ static const size_t kSampleRate = 43;
+ for (size_t i = 0; i < len; i += kSampleRate) {
+ ++histo[data[i]];
+ }
+ const size_t total = (len + kSampleRate - 1) / kSampleRate;
+ double r = (FastLog2(total) + 0.5) * static_cast<double>(total) + 200;
+ for (size_t i = 0; i < 256; ++i) {
+ r -= static_cast<double>(histo[i]) * (depths[i] + FastLog2(histo[i]));
+ }
+ return r >= 0.0;
+}
+
+inline bool ShouldUseUncompressedMode(const uint8_t* metablock_start,
+ const uint8_t* next_emit,
+ const size_t insertlen,
+ const uint8_t literal_depths[256]) {
+ const size_t compressed = static_cast<size_t>(next_emit - metablock_start);
+ if (compressed * 50 > insertlen) {
+ return false;
+ }
+ static const double kAcceptableLossForUncompressibleSpeedup = 0.02;
+ static const double kMinEntropy =
+ 8 * (1.0 - kAcceptableLossForUncompressibleSpeedup);
+ uint32_t sum = 0;
+ for (int i = 0; i < 256; ++i) {
+ const uint32_t n = literal_depths[i];
+ sum += n << (15 - n);
+ }
+ return sum > static_cast<uint32_t>((1 << 15) * kMinEntropy);
+}
+
+static void EmitUncompressedMetaBlock(const uint8_t* begin, const uint8_t* end,
+ const size_t storage_ix_start,
+ size_t* storage_ix, uint8_t* storage) {
+ const size_t len = static_cast<size_t>(end - begin);
+ RewindBitPosition(storage_ix_start, storage_ix, storage);
+ StoreMetaBlockHeader(len, 1, storage_ix, storage);
+ *storage_ix = (*storage_ix + 7u) & ~7u;
+ memcpy(&storage[*storage_ix >> 3], begin, len);
+ *storage_ix += len << 3;
+ storage[*storage_ix >> 3] = 0;
+}
+
+void BrotliCompressFragmentFast(const uint8_t* input, size_t input_size,
+ bool is_last,
+ int* table, size_t table_size,
+ uint8_t cmd_depth[128], uint16_t cmd_bits[128],
+ size_t* cmd_code_numbits, uint8_t* cmd_code,
+ size_t* storage_ix, uint8_t* storage) {
+ if (input_size == 0) {
+ assert(is_last);
+ WriteBits(1, 1, storage_ix, storage); // islast
+ WriteBits(1, 1, storage_ix, storage); // isempty
+ *storage_ix = (*storage_ix + 7u) & ~7u;
+ return;
+ }
+
+ // "next_emit" is a pointer to the first byte that is not covered by a
+ // previous copy. Bytes between "next_emit" and the start of the next copy or
+ // the end of the input will be emitted as literal bytes.
+ const uint8_t* next_emit = input;
+ // Save the start of the first block for position and distance computations.
+ const uint8_t* base_ip = input;
+
+ static const size_t kFirstBlockSize = 3 << 15;
+ static const size_t kMergeBlockSize = 1 << 16;
+
+ const uint8_t* metablock_start = input;
+ size_t block_size = std::min(input_size, kFirstBlockSize);
+ size_t total_block_size = block_size;
+ // Save the bit position of the MLEN field of the meta-block header, so that
+ // we can update it later if we decide to extend this meta-block.
+ size_t mlen_storage_ix = *storage_ix + 3;
+ StoreMetaBlockHeader(block_size, 0, storage_ix, storage);
+ // No block splits, no contexts.
+ WriteBits(13, 0, storage_ix, storage);
+
+ uint8_t lit_depth[256] = { 0 };
+ uint16_t lit_bits[256] = { 0 };
+ BuildAndStoreLiteralPrefixCode(input, block_size, lit_depth, lit_bits,
+ storage_ix, storage);
+
+ // Store the pre-compressed command and distance prefix codes.
+ for (size_t i = 0; i + 7 < *cmd_code_numbits; i += 8) {
+ WriteBits(8, cmd_code[i >> 3], storage_ix, storage);
+ }
+ WriteBits(*cmd_code_numbits & 7, cmd_code[*cmd_code_numbits >> 3],
+ storage_ix, storage);
+
+ emit_commands:
+ // Initialize the command and distance histograms. We will gather
+ // statistics of command and distance codes during the processing
+ // of this block and use it to update the command and distance
+ // prefix codes for the next block.
+ uint32_t cmd_histo[128] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 0, 0, 0, 0,
+ };
+
+ // "ip" is the input pointer.
+ const uint8_t* ip = input;
+ assert(table_size);
+ assert(table_size <= (1u << 31));
+ assert((table_size & (table_size - 1)) == 0); // table must be power of two
+ const size_t shift = 64u - Log2FloorNonZero(table_size);
+ assert(table_size - 1 == static_cast<size_t>(
+ MAKE_UINT64_T(0xFFFFFFFF, 0xFFFFFF) >> shift));
+ const uint8_t* ip_end = input + block_size;
+
+ int last_distance = -1;
+ const size_t kInputMarginBytes = 16;
+ const size_t kMinMatchLen = 5;
+ if (PREDICT_TRUE(block_size >= kInputMarginBytes)) {
+ // For the last block, we need to keep a 16 bytes margin so that we can be
+ // sure that all distances are at most window size - 16.
+ // For all other blocks, we only need to keep a margin of 5 bytes so that
+ // we don't go over the block size with a copy.
+ const size_t len_limit = std::min(block_size - kMinMatchLen,
+ input_size - kInputMarginBytes);
+ const uint8_t* ip_limit = input + len_limit;
+
+ for (uint32_t next_hash = Hash(++ip, shift); ; ) {
+ assert(next_emit < ip);
+ // Step 1: Scan forward in the input looking for a 5-byte-long match.
+ // If we get close to exhausting the input then goto emit_remainder.
+ //
+ // Heuristic match skipping: If 32 bytes are scanned with no matches
+ // found, start looking only at every other byte. If 32 more bytes are
+ // scanned, look at every third byte, etc.. When a match is found,
+ // immediately go back to looking at every byte. This is a small loss
+ // (~5% performance, ~0.1% density) for compressible data due to more
+ // bookkeeping, but for non-compressible data (such as JPEG) it's a huge
+ // win since the compressor quickly "realizes" the data is incompressible
+ // and doesn't bother looking for matches everywhere.
+ //
+ // The "skip" variable keeps track of how many bytes there are since the
+ // last match; dividing it by 32 (ie. right-shifting by five) gives the
+ // number of bytes to move ahead for each iteration.
+ uint32_t skip = 32;
+
+ const uint8_t* next_ip = ip;
+ const uint8_t* candidate;
+ do {
+ ip = next_ip;
+ uint32_t hash = next_hash;
+ assert(hash == Hash(ip, shift));
+ uint32_t bytes_between_hash_lookups = skip++ >> 5;
+ next_ip = ip + bytes_between_hash_lookups;
+ if (PREDICT_FALSE(next_ip > ip_limit)) {
+ goto emit_remainder;
+ }
+ next_hash = Hash(next_ip, shift);
+ candidate = ip - last_distance;
+ if (IsMatch(ip, candidate)) {
+ if (PREDICT_TRUE(candidate < ip)) {
+ table[hash] = static_cast<int>(ip - base_ip);
+ break;
+ }
+ }
+ candidate = base_ip + table[hash];
+ assert(candidate >= base_ip);
+ assert(candidate < ip);
+
+ table[hash] = static_cast<int>(ip - base_ip);
+ } while (PREDICT_TRUE(!IsMatch(ip, candidate)));
+
+ // Step 2: Emit the found match together with the literal bytes from
+ // "next_emit" to the bit stream, and then see if we can find a next macth
+ // immediately afterwards. Repeat until we find no match for the input
+ // without emitting some literal bytes.
+ uint64_t input_bytes;
+
+ {
+ // We have a 5-byte match at ip, and we need to emit bytes in
+ // [next_emit, ip).
+ const uint8_t* base = ip;
+ size_t matched = 5 + FindMatchLengthWithLimit(
+ candidate + 5, ip + 5, static_cast<size_t>(ip_end - ip) - 5);
+ ip += matched;
+ int distance = static_cast<int>(base - candidate); /* > 0 */
+ size_t insert = static_cast<size_t>(base - next_emit);
+ assert(0 == memcmp(base, candidate, matched));
+ if (PREDICT_TRUE(insert < 6210)) {
+ EmitInsertLen(insert, cmd_depth, cmd_bits, cmd_histo,
+ storage_ix, storage);
+ } else if (ShouldUseUncompressedMode(metablock_start, next_emit, insert,
+ lit_depth)) {
+ EmitUncompressedMetaBlock(metablock_start, base, mlen_storage_ix - 3,
+ storage_ix, storage);
+ input_size -= static_cast<size_t>(base - input);
+ input = base;
+ next_emit = input;
+ goto next_block;
+ } else {
+ EmitLongInsertLen(insert, cmd_depth, cmd_bits, cmd_histo,
+ storage_ix, storage);
+ }
+ EmitLiterals(next_emit, insert, lit_depth, lit_bits,
+ storage_ix, storage);
+ if (distance == last_distance) {
+ WriteBits(cmd_depth[64], cmd_bits[64], storage_ix, storage);
+ ++cmd_histo[64];
+ } else {
+ EmitDistance(static_cast<size_t>(distance), cmd_depth, cmd_bits,
+ cmd_histo, storage_ix, storage);
+ last_distance = distance;
+ }
+ EmitCopyLenLastDistance(matched, cmd_depth, cmd_bits, cmd_histo,
+ storage_ix, storage);
+
+ next_emit = ip;
+ if (PREDICT_FALSE(ip >= ip_limit)) {
+ goto emit_remainder;
+ }
+ // We could immediately start working at ip now, but to improve
+ // compression we first update "table" with the hashes of some positions
+ // within the last copy.
+ input_bytes = BROTLI_UNALIGNED_LOAD64(ip - 3);
+ uint32_t prev_hash = HashBytesAtOffset(input_bytes, 0, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 3);
+ prev_hash = HashBytesAtOffset(input_bytes, 1, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 2);
+ prev_hash = HashBytesAtOffset(input_bytes, 2, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 1);
+
+ uint32_t cur_hash = HashBytesAtOffset(input_bytes, 3, shift);
+ candidate = base_ip + table[cur_hash];
+ table[cur_hash] = static_cast<int>(ip - base_ip);
+ }
+
+ while (IsMatch(ip, candidate)) {
+ // We have a 5-byte match at ip, and no need to emit any literal bytes
+ // prior to ip.
+ const uint8_t* base = ip;
+ size_t matched = 5 + FindMatchLengthWithLimit(
+ candidate + 5, ip + 5, static_cast<size_t>(ip_end - ip) - 5);
+ ip += matched;
+ last_distance = static_cast<int>(base - candidate); /* > 0 */
+ assert(0 == memcmp(base, candidate, matched));
+ EmitCopyLen(matched, cmd_depth, cmd_bits, cmd_histo,
+ storage_ix, storage);
+ EmitDistance(static_cast<size_t>(last_distance), cmd_depth, cmd_bits,
+ cmd_histo, storage_ix, storage);
+
+ next_emit = ip;
+ if (PREDICT_FALSE(ip >= ip_limit)) {
+ goto emit_remainder;
+ }
+ // We could immediately start working at ip now, but to improve
+ // compression we first update "table" with the hashes of some positions
+ // within the last copy.
+ input_bytes = BROTLI_UNALIGNED_LOAD64(ip - 3);
+ uint32_t prev_hash = HashBytesAtOffset(input_bytes, 0, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 3);
+ prev_hash = HashBytesAtOffset(input_bytes, 1, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 2);
+ prev_hash = HashBytesAtOffset(input_bytes, 2, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 1);
+
+ uint32_t cur_hash = HashBytesAtOffset(input_bytes, 3, shift);
+ candidate = base_ip + table[cur_hash];
+ table[cur_hash] = static_cast<int>(ip - base_ip);
+ }
+
+ next_hash = Hash(++ip, shift);
+ }
+ }
+
+ emit_remainder:
+ assert(next_emit <= ip_end);
+ input += block_size;
+ input_size -= block_size;
+ block_size = std::min(input_size, kMergeBlockSize);
+
+ // Decide if we want to continue this meta-block instead of emitting the
+ // last insert-only command.
+ if (input_size > 0 &&
+ total_block_size + block_size <= (1 << 20) &&
+ ShouldMergeBlock(input, block_size, lit_depth)) {
+ assert(total_block_size > (1 << 16));
+ // Update the size of the current meta-block and continue emitting commands.
+ // We can do this because the current size and the new size both have 5
+ // nibbles.
+ total_block_size += block_size;
+ UpdateBits(20, static_cast<uint32_t>(total_block_size - 1),
+ mlen_storage_ix, storage);
+ goto emit_commands;
+ }
+
+ // Emit the remaining bytes as literals.
+ if (next_emit < ip_end) {
+ const size_t insert = static_cast<size_t>(ip_end - next_emit);
+ if (PREDICT_TRUE(insert < 6210)) {
+ EmitInsertLen(insert, cmd_depth, cmd_bits, cmd_histo,
+ storage_ix, storage);
+ EmitLiterals(next_emit, insert, lit_depth, lit_bits, storage_ix, storage);
+ } else if (ShouldUseUncompressedMode(metablock_start, next_emit, insert,
+ lit_depth)) {
+ EmitUncompressedMetaBlock(metablock_start, ip_end, mlen_storage_ix - 3,
+ storage_ix, storage);
+ } else {
+ EmitLongInsertLen(insert, cmd_depth, cmd_bits, cmd_histo,
+ storage_ix, storage);
+ EmitLiterals(next_emit, insert, lit_depth, lit_bits,
+ storage_ix, storage);
+ }
+ }
+ next_emit = ip_end;
+
+next_block:
+ // If we have more data, write a new meta-block header and prefix codes and
+ // then continue emitting commands.
+ if (input_size > 0) {
+ metablock_start = input;
+ block_size = std::min(input_size, kFirstBlockSize);
+ total_block_size = block_size;
+ // Save the bit position of the MLEN field of the meta-block header, so that
+ // we can update it later if we decide to extend this meta-block.
+ mlen_storage_ix = *storage_ix + 3;
+ StoreMetaBlockHeader(block_size, 0, storage_ix, storage);
+ // No block splits, no contexts.
+ WriteBits(13, 0, storage_ix, storage);
+ memset(lit_depth, 0, sizeof(lit_depth));
+ memset(lit_bits, 0, sizeof(lit_bits));
+ BuildAndStoreLiteralPrefixCode(input, block_size, lit_depth, lit_bits,
+ storage_ix, storage);
+ BuildAndStoreCommandPrefixCode(cmd_histo, cmd_depth, cmd_bits,
+ storage_ix, storage);
+ goto emit_commands;
+ }
+
+ if (is_last) {
+ WriteBits(1, 1, storage_ix, storage); // islast
+ WriteBits(1, 1, storage_ix, storage); // isempty
+ *storage_ix = (*storage_ix + 7u) & ~7u;
+ } else {
+ // If this is not the last block, update the command and distance prefix
+ // codes for the next block and store the compressed forms.
+ cmd_code[0] = 0;
+ *cmd_code_numbits = 0;
+ BuildAndStoreCommandPrefixCode(cmd_histo, cmd_depth, cmd_bits,
+ cmd_code_numbits, cmd_code);
+ }
+}
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment.h
new file mode 100644
index 00000000000..7ce05fdfb2a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment.h
@@ -0,0 +1,47 @@
+/* Copyright 2015 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Function for fast encoding of an input fragment, independently from the input
+// history. This function uses one-pass processing: when we find a backward
+// match, we immediately emit the corresponding command and literal codes to
+// the bit stream.
+
+#ifndef BROTLI_ENC_COMPRESS_FRAGMENT_H_
+#define BROTLI_ENC_COMPRESS_FRAGMENT_H_
+
+#include "./types.h"
+
+namespace brotli {
+
+// Compresses "input" string to the "*storage" buffer as one or more complete
+// meta-blocks, and updates the "*storage_ix" bit position.
+//
+// If "is_last" is true, emits an additional empty last meta-block.
+//
+// "cmd_depth" and "cmd_bits" contain the command and distance prefix codes
+// (see comment in encode.h) used for the encoding of this input fragment.
+// If "is_last" is false, they are updated to reflect the statistics
+// of this input fragment, to be used for the encoding of the next fragment.
+//
+// "*cmd_code_numbits" is the number of bits of the compressed representation
+// of the command and distance prefix codes, and "cmd_code" is an array of
+// at least "(*cmd_code_numbits + 7) >> 3" size that contains the compressed
+// command and distance prefix codes. If "is_last" is false, these are also
+// updated to represent the updated "cmd_depth" and "cmd_bits".
+//
+// REQUIRES: "input_size" is greater than zero, or "is_last" is true.
+// REQUIRES: All elements in "table[0..table_size-1]" are initialized to zero.
+// REQUIRES: "table_size" is a power of two
+void BrotliCompressFragmentFast(const uint8_t* input, size_t input_size,
+ bool is_last,
+ int* table, size_t table_size,
+ uint8_t cmd_depth[128], uint16_t cmd_bits[128],
+ size_t* cmd_code_numbits, uint8_t* cmd_code,
+ size_t* storage_ix, uint8_t* storage);
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_COMPRESS_FRAGMENT_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment_two_pass.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment_two_pass.cc
new file mode 100644
index 00000000000..a032740d655
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment_two_pass.cc
@@ -0,0 +1,524 @@
+/* Copyright 2015 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Function for fast encoding of an input fragment, independently from the input
+// history. This function uses two-pass processing: in the first pass we save
+// the found backward matches and literal bytes into a buffer, and in the
+// second pass we emit them into the bit stream using prefix codes built based
+// on the actual command and literal byte histograms.
+
+#include "./compress_fragment_two_pass.h"
+
+#include <algorithm>
+
+#include "./brotli_bit_stream.h"
+#include "./bit_cost.h"
+#include "./entropy_encode.h"
+#include "./fast_log.h"
+#include "./find_match_length.h"
+#include "./port.h"
+#include "./types.h"
+#include "./write_bits.h"
+
+namespace brotli {
+
+// kHashMul32 multiplier has these properties:
+// * The multiplier must be odd. Otherwise we may lose the highest bit.
+// * No long streaks of 1s or 0s.
+// * There is no effort to ensure that it is a prime, the oddity is enough
+// for this use.
+// * The number has been tuned heuristically against compression benchmarks.
+static const uint32_t kHashMul32 = 0x1e35a7bd;
+
+static inline uint32_t Hash(const uint8_t* p, size_t shift) {
+ const uint64_t h = (BROTLI_UNALIGNED_LOAD64(p) << 16) * kHashMul32;
+ return static_cast<uint32_t>(h >> shift);
+}
+
+static inline uint32_t HashBytesAtOffset(uint64_t v, int offset, size_t shift) {
+ assert(offset >= 0);
+ assert(offset <= 2);
+ const uint64_t h = ((v >> (8 * offset)) << 16) * kHashMul32;
+ return static_cast<uint32_t>(h >> shift);
+}
+
+static inline int IsMatch(const uint8_t* p1, const uint8_t* p2) {
+ return (BROTLI_UNALIGNED_LOAD32(p1) == BROTLI_UNALIGNED_LOAD32(p2) &&
+ p1[4] == p2[4] &&
+ p1[5] == p2[5]);
+}
+
+// Builds a command and distance prefix code (each 64 symbols) into "depth" and
+// "bits" based on "histogram" and stores it into the bit stream.
+static void BuildAndStoreCommandPrefixCode(
+ const uint32_t histogram[128],
+ uint8_t depth[128], uint16_t bits[128],
+ size_t* storage_ix, uint8_t* storage) {
+ // Tree size for building a tree over 64 symbols is 2 * 64 + 1.
+ static const size_t kTreeSize = 129;
+ HuffmanTree tree[kTreeSize];
+ CreateHuffmanTree(histogram, 64, 15, tree, depth);
+ CreateHuffmanTree(&histogram[64], 64, 14, tree, &depth[64]);
+ // We have to jump through a few hoopes here in order to compute
+ // the command bits because the symbols are in a different order than in
+ // the full alphabet. This looks complicated, but having the symbols
+ // in this order in the command bits saves a few branches in the Emit*
+ // functions.
+ uint8_t cmd_depth[64];
+ uint16_t cmd_bits[64];
+ memcpy(cmd_depth, depth + 24, 24);
+ memcpy(cmd_depth + 24, depth, 8);
+ memcpy(cmd_depth + 32, depth + 48, 8);
+ memcpy(cmd_depth + 40, depth + 8, 8);
+ memcpy(cmd_depth + 48, depth + 56, 8);
+ memcpy(cmd_depth + 56, depth + 16, 8);
+ ConvertBitDepthsToSymbols(cmd_depth, 64, cmd_bits);
+ memcpy(bits, cmd_bits + 24, 16);
+ memcpy(bits + 8, cmd_bits + 40, 16);
+ memcpy(bits + 16, cmd_bits + 56, 16);
+ memcpy(bits + 24, cmd_bits, 48);
+ memcpy(bits + 48, cmd_bits + 32, 16);
+ memcpy(bits + 56, cmd_bits + 48, 16);
+ ConvertBitDepthsToSymbols(&depth[64], 64, &bits[64]);
+ {
+ // Create the bit length array for the full command alphabet.
+ uint8_t cmd_depth[704] = { 0 };
+ memcpy(cmd_depth, depth + 24, 8);
+ memcpy(cmd_depth + 64, depth + 32, 8);
+ memcpy(cmd_depth + 128, depth + 40, 8);
+ memcpy(cmd_depth + 192, depth + 48, 8);
+ memcpy(cmd_depth + 384, depth + 56, 8);
+ for (size_t i = 0; i < 8; ++i) {
+ cmd_depth[128 + 8 * i] = depth[i];
+ cmd_depth[256 + 8 * i] = depth[8 + i];
+ cmd_depth[448 + 8 * i] = depth[16 + i];
+ }
+ StoreHuffmanTree(cmd_depth, 704, tree, storage_ix, storage);
+ }
+ StoreHuffmanTree(&depth[64], 64, tree, storage_ix, storage);
+}
+
+inline void EmitInsertLen(uint32_t insertlen, uint32_t** commands) {
+ if (insertlen < 6) {
+ **commands = insertlen;
+ } else if (insertlen < 130) {
+ insertlen -= 2;
+ const uint32_t nbits = Log2FloorNonZero(insertlen) - 1u;
+ const uint32_t prefix = insertlen >> nbits;
+ const uint32_t inscode = (nbits << 1) + prefix + 2;
+ const uint32_t extra = insertlen - (prefix << nbits);
+ **commands = inscode | (extra << 8);
+ } else if (insertlen < 2114) {
+ insertlen -= 66;
+ const uint32_t nbits = Log2FloorNonZero(insertlen);
+ const uint32_t code = nbits + 10;
+ const uint32_t extra = insertlen - (1 << nbits);
+ **commands = code | (extra << 8);
+ } else if (insertlen < 6210) {
+ const uint32_t extra = insertlen - 2114;
+ **commands = 21 | (extra << 8);
+ } else if (insertlen < 22594) {
+ const uint32_t extra = insertlen - 6210;
+ **commands = 22 | (extra << 8);
+ } else {
+ const uint32_t extra = insertlen - 22594;
+ **commands = 23 | (extra << 8);
+ }
+ ++(*commands);
+}
+
+inline void EmitCopyLen(size_t copylen, uint32_t** commands) {
+ if (copylen < 10) {
+ **commands = static_cast<uint32_t>(copylen + 38);
+ } else if (copylen < 134) {
+ copylen -= 6;
+ const size_t nbits = Log2FloorNonZero(copylen) - 1;
+ const size_t prefix = copylen >> nbits;
+ const size_t code = (nbits << 1) + prefix + 44;
+ const size_t extra = copylen - (prefix << nbits);
+ **commands = static_cast<uint32_t>(code | (extra << 8));
+ } else if (copylen < 2118) {
+ copylen -= 70;
+ const size_t nbits = Log2FloorNonZero(copylen);
+ const size_t code = nbits + 52;
+ const size_t extra = copylen - (1 << nbits);
+ **commands = static_cast<uint32_t>(code | (extra << 8));
+ } else {
+ const size_t extra = copylen - 2118;
+ **commands = static_cast<uint32_t>(63 | (extra << 8));
+ }
+ ++(*commands);
+}
+
+inline void EmitCopyLenLastDistance(size_t copylen, uint32_t** commands) {
+ if (copylen < 12) {
+ **commands = static_cast<uint32_t>(copylen + 20);
+ ++(*commands);
+ } else if (copylen < 72) {
+ copylen -= 8;
+ const size_t nbits = Log2FloorNonZero(copylen) - 1;
+ const size_t prefix = copylen >> nbits;
+ const size_t code = (nbits << 1) + prefix + 28;
+ const size_t extra = copylen - (prefix << nbits);
+ **commands = static_cast<uint32_t>(code | (extra << 8));
+ ++(*commands);
+ } else if (copylen < 136) {
+ copylen -= 8;
+ const size_t code = (copylen >> 5) + 54;
+ const size_t extra = copylen & 31;
+ **commands = static_cast<uint32_t>(code | (extra << 8));
+ ++(*commands);
+ **commands = 64;
+ ++(*commands);
+ } else if (copylen < 2120) {
+ copylen -= 72;
+ const size_t nbits = Log2FloorNonZero(copylen);
+ const size_t code = nbits + 52;
+ const size_t extra = copylen - (1 << nbits);
+ **commands = static_cast<uint32_t>(code | (extra << 8));
+ ++(*commands);
+ **commands = 64;
+ ++(*commands);
+ } else {
+ const size_t extra = copylen - 2120;
+ **commands = static_cast<uint32_t>(63 | (extra << 8));
+ ++(*commands);
+ **commands = 64;
+ ++(*commands);
+ }
+}
+
+inline void EmitDistance(uint32_t distance, uint32_t** commands) {
+ distance += 3;
+ uint32_t nbits = Log2FloorNonZero(distance) - 1;
+ const uint32_t prefix = (distance >> nbits) & 1;
+ const uint32_t offset = (2 + prefix) << nbits;
+ const uint32_t distcode = 2 * (nbits - 1) + prefix + 80;
+ uint32_t extra = distance - offset;
+ **commands = distcode | (extra << 8);
+ ++(*commands);
+}
+
+// REQUIRES: len <= 1 << 20.
+static void StoreMetaBlockHeader(
+ size_t len, bool is_uncompressed, size_t* storage_ix, uint8_t* storage) {
+ // ISLAST
+ WriteBits(1, 0, storage_ix, storage);
+ if (len <= (1U << 16)) {
+ // MNIBBLES is 4
+ WriteBits(2, 0, storage_ix, storage);
+ WriteBits(16, len - 1, storage_ix, storage);
+ } else {
+ // MNIBBLES is 5
+ WriteBits(2, 1, storage_ix, storage);
+ WriteBits(20, len - 1, storage_ix, storage);
+ }
+ // ISUNCOMPRESSED
+ WriteBits(1, is_uncompressed, storage_ix, storage);
+}
+
+static void CreateCommands(const uint8_t* input, size_t block_size,
+ size_t input_size, const uint8_t* base_ip,
+ int* table, size_t table_size,
+ uint8_t** literals, uint32_t** commands) {
+ // "ip" is the input pointer.
+ const uint8_t* ip = input;
+ assert(table_size);
+ assert(table_size <= (1u << 31));
+ assert((table_size & (table_size - 1)) == 0); // table must be power of two
+ const size_t shift = 64u - Log2FloorNonZero(table_size);
+ assert(table_size - 1 == static_cast<size_t>(
+ MAKE_UINT64_T(0xFFFFFFFF, 0xFFFFFF) >> shift));
+ const uint8_t* ip_end = input + block_size;
+ // "next_emit" is a pointer to the first byte that is not covered by a
+ // previous copy. Bytes between "next_emit" and the start of the next copy or
+ // the end of the input will be emitted as literal bytes.
+ const uint8_t* next_emit = input;
+
+ int last_distance = -1;
+ const size_t kInputMarginBytes = 16;
+ const size_t kMinMatchLen = 6;
+ if (PREDICT_TRUE(block_size >= kInputMarginBytes)) {
+ // For the last block, we need to keep a 16 bytes margin so that we can be
+ // sure that all distances are at most window size - 16.
+ // For all other blocks, we only need to keep a margin of 5 bytes so that
+ // we don't go over the block size with a copy.
+ const size_t len_limit = std::min(block_size - kMinMatchLen,
+ input_size - kInputMarginBytes);
+ const uint8_t* ip_limit = input + len_limit;
+
+ for (uint32_t next_hash = Hash(++ip, shift); ; ) {
+ assert(next_emit < ip);
+ // Step 1: Scan forward in the input looking for a 6-byte-long match.
+ // If we get close to exhausting the input then goto emit_remainder.
+ //
+ // Heuristic match skipping: If 32 bytes are scanned with no matches
+ // found, start looking only at every other byte. If 32 more bytes are
+ // scanned, look at every third byte, etc.. When a match is found,
+ // immediately go back to looking at every byte. This is a small loss
+ // (~5% performance, ~0.1% density) for compressible data due to more
+ // bookkeeping, but for non-compressible data (such as JPEG) it's a huge
+ // win since the compressor quickly "realizes" the data is incompressible
+ // and doesn't bother looking for matches everywhere.
+ //
+ // The "skip" variable keeps track of how many bytes there are since the
+ // last match; dividing it by 32 (ie. right-shifting by five) gives the
+ // number of bytes to move ahead for each iteration.
+ uint32_t skip = 32;
+
+ const uint8_t* next_ip = ip;
+ const uint8_t* candidate;
+ do {
+ ip = next_ip;
+ uint32_t hash = next_hash;
+ assert(hash == Hash(ip, shift));
+ uint32_t bytes_between_hash_lookups = skip++ >> 5;
+ next_ip = ip + bytes_between_hash_lookups;
+ if (PREDICT_FALSE(next_ip > ip_limit)) {
+ goto emit_remainder;
+ }
+ next_hash = Hash(next_ip, shift);
+ candidate = ip - last_distance;
+ if (IsMatch(ip, candidate)) {
+ if (PREDICT_TRUE(candidate < ip)) {
+ table[hash] = static_cast<int>(ip - base_ip);
+ break;
+ }
+ }
+ candidate = base_ip + table[hash];
+ assert(candidate >= base_ip);
+ assert(candidate < ip);
+
+ table[hash] = static_cast<int>(ip - base_ip);
+ } while (PREDICT_TRUE(!IsMatch(ip, candidate)));
+
+ // Step 2: Emit the found match together with the literal bytes from
+ // "next_emit", and then see if we can find a next macth immediately
+ // afterwards. Repeat until we find no match for the input
+ // without emitting some literal bytes.
+ uint64_t input_bytes;
+
+ {
+ // We have a 6-byte match at ip, and we need to emit bytes in
+ // [next_emit, ip).
+ const uint8_t* base = ip;
+ size_t matched = 6 + FindMatchLengthWithLimit(
+ candidate + 6, ip + 6, static_cast<size_t>(ip_end - ip) - 6);
+ ip += matched;
+ int distance = static_cast<int>(base - candidate); /* > 0 */
+ int insert = static_cast<int>(base - next_emit);
+ assert(0 == memcmp(base, candidate, matched));
+ EmitInsertLen(static_cast<uint32_t>(insert), commands);
+ memcpy(*literals, next_emit, static_cast<size_t>(insert));
+ *literals += insert;
+ if (distance == last_distance) {
+ **commands = 64;
+ ++(*commands);
+ } else {
+ EmitDistance(static_cast<uint32_t>(distance), commands);
+ last_distance = distance;
+ }
+ EmitCopyLenLastDistance(matched, commands);
+
+ next_emit = ip;
+ if (PREDICT_FALSE(ip >= ip_limit)) {
+ goto emit_remainder;
+ }
+ // We could immediately start working at ip now, but to improve
+ // compression we first update "table" with the hashes of some positions
+ // within the last copy.
+ input_bytes = BROTLI_UNALIGNED_LOAD64(ip - 5);
+ uint32_t prev_hash = HashBytesAtOffset(input_bytes, 0, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 5);
+ prev_hash = HashBytesAtOffset(input_bytes, 1, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 4);
+ prev_hash = HashBytesAtOffset(input_bytes, 2, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 3);
+ input_bytes = BROTLI_UNALIGNED_LOAD64(ip - 2);
+ prev_hash = HashBytesAtOffset(input_bytes, 0, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 2);
+ prev_hash = HashBytesAtOffset(input_bytes, 1, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 1);
+
+ uint32_t cur_hash = HashBytesAtOffset(input_bytes, 2, shift);
+ candidate = base_ip + table[cur_hash];
+ table[cur_hash] = static_cast<int>(ip - base_ip);
+ }
+
+ while (IsMatch(ip, candidate)) {
+ // We have a 6-byte match at ip, and no need to emit any
+ // literal bytes prior to ip.
+ const uint8_t* base = ip;
+ size_t matched = 6 + FindMatchLengthWithLimit(
+ candidate + 6, ip + 6, static_cast<size_t>(ip_end - ip) - 6);
+ ip += matched;
+ last_distance = static_cast<int>(base - candidate); /* > 0 */
+ assert(0 == memcmp(base, candidate, matched));
+ EmitCopyLen(matched, commands);
+ EmitDistance(static_cast<uint32_t>(last_distance), commands);
+
+ next_emit = ip;
+ if (PREDICT_FALSE(ip >= ip_limit)) {
+ goto emit_remainder;
+ }
+ // We could immediately start working at ip now, but to improve
+ // compression we first update "table" with the hashes of some positions
+ // within the last copy.
+ input_bytes = BROTLI_UNALIGNED_LOAD64(ip - 5);
+ uint32_t prev_hash = HashBytesAtOffset(input_bytes, 0, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 5);
+ prev_hash = HashBytesAtOffset(input_bytes, 1, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 4);
+ prev_hash = HashBytesAtOffset(input_bytes, 2, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 3);
+ input_bytes = BROTLI_UNALIGNED_LOAD64(ip - 2);
+ prev_hash = HashBytesAtOffset(input_bytes, 0, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 2);
+ prev_hash = HashBytesAtOffset(input_bytes, 1, shift);
+ table[prev_hash] = static_cast<int>(ip - base_ip - 1);
+
+ uint32_t cur_hash = HashBytesAtOffset(input_bytes, 2, shift);
+ candidate = base_ip + table[cur_hash];
+ table[cur_hash] = static_cast<int>(ip - base_ip);
+ }
+
+ next_hash = Hash(++ip, shift);
+ }
+ }
+
+emit_remainder:
+ assert(next_emit <= ip_end);
+ // Emit the remaining bytes as literals.
+ if (next_emit < ip_end) {
+ const uint32_t insert = static_cast<uint32_t>(ip_end - next_emit);
+ EmitInsertLen(insert, commands);
+ memcpy(*literals, next_emit, insert);
+ *literals += insert;
+ }
+}
+
+static void StoreCommands(const uint8_t* literals, const size_t num_literals,
+ const uint32_t* commands, const size_t num_commands,
+ size_t* storage_ix, uint8_t* storage) {
+ uint8_t lit_depths[256] = { 0 };
+ uint16_t lit_bits[256] = { 0 };
+ uint32_t lit_histo[256] = { 0 };
+ for (size_t i = 0; i < num_literals; ++i) {
+ ++lit_histo[literals[i]];
+ }
+ BuildAndStoreHuffmanTreeFast(lit_histo, num_literals,
+ /* max_bits = */ 8,
+ lit_depths, lit_bits,
+ storage_ix, storage);
+
+ uint8_t cmd_depths[128] = { 0 };
+ uint16_t cmd_bits[128] = { 0 };
+ uint32_t cmd_histo[128] = { 0 };
+ for (size_t i = 0; i < num_commands; ++i) {
+ ++cmd_histo[commands[i] & 0xff];
+ }
+ cmd_histo[1] += 1;
+ cmd_histo[2] += 1;
+ cmd_histo[64] += 1;
+ cmd_histo[84] += 1;
+ BuildAndStoreCommandPrefixCode(cmd_histo, cmd_depths, cmd_bits,
+ storage_ix, storage);
+
+ static const uint32_t kNumExtraBits[128] = {
+ 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 12, 14, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
+ 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16,
+ 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24,
+ };
+ static const uint32_t kInsertOffset[24] = {
+ 0, 1, 2, 3, 4, 5, 6, 8, 10, 14, 18, 26, 34, 50, 66, 98, 130, 194, 322, 578,
+ 1090, 2114, 6210, 22594,
+ };
+
+ for (size_t i = 0; i < num_commands; ++i) {
+ const uint32_t cmd = commands[i];
+ const uint32_t code = cmd & 0xff;
+ const uint32_t extra = cmd >> 8;
+ WriteBits(cmd_depths[code], cmd_bits[code], storage_ix, storage);
+ WriteBits(kNumExtraBits[code], extra, storage_ix, storage);
+ if (code < 24) {
+ const uint32_t insert = kInsertOffset[code] + extra;
+ for (uint32_t j = 0; j < insert; ++j) {
+ const uint8_t lit = *literals;
+ WriteBits(lit_depths[lit], lit_bits[lit], storage_ix, storage);
+ ++literals;
+ }
+ }
+ }
+}
+
+static bool ShouldCompress(const uint8_t* input, size_t input_size,
+ size_t num_literals) {
+ static const double kAcceptableLossForUncompressibleSpeedup = 0.02;
+ static const double kMaxRatioOfLiterals =
+ 1.0 - kAcceptableLossForUncompressibleSpeedup;
+ if (num_literals < kMaxRatioOfLiterals * static_cast<double>(input_size)) {
+ return true;
+ }
+ uint32_t literal_histo[256] = { 0 };
+ static const uint32_t kSampleRate = 43;
+ static const double kMaxEntropy =
+ 8 * (1.0 - kAcceptableLossForUncompressibleSpeedup);
+ const double max_total_bit_cost =
+ static_cast<double>(input_size) * kMaxEntropy / kSampleRate;
+ for (size_t i = 0; i < input_size; i += kSampleRate) {
+ ++literal_histo[input[i]];
+ }
+ return BitsEntropy(literal_histo, 256) < max_total_bit_cost;
+}
+
+void BrotliCompressFragmentTwoPass(const uint8_t* input, size_t input_size,
+ bool is_last,
+ uint32_t* command_buf, uint8_t* literal_buf,
+ int* table, size_t table_size,
+ size_t* storage_ix, uint8_t* storage) {
+ // Save the start of the first block for position and distance computations.
+ const uint8_t* base_ip = input;
+
+ while (input_size > 0) {
+ size_t block_size = std::min(input_size, kCompressFragmentTwoPassBlockSize);
+ uint32_t* commands = command_buf;
+ uint8_t* literals = literal_buf;
+ CreateCommands(input, block_size, input_size, base_ip, table, table_size,
+ &literals, &commands);
+ const size_t num_literals = static_cast<size_t>(literals - literal_buf);
+ const size_t num_commands = static_cast<size_t>(commands - command_buf);
+ if (ShouldCompress(input, block_size, num_literals)) {
+ StoreMetaBlockHeader(block_size, 0, storage_ix, storage);
+ // No block splits, no contexts.
+ WriteBits(13, 0, storage_ix, storage);
+ StoreCommands(literal_buf, num_literals, command_buf, num_commands,
+ storage_ix, storage);
+ } else {
+ // Since we did not find many backward references and the entropy of
+ // the data is close to 8 bits, we can simply emit an uncompressed block.
+ // This makes compression speed of uncompressible data about 3x faster.
+ StoreMetaBlockHeader(block_size, 1, storage_ix, storage);
+ *storage_ix = (*storage_ix + 7u) & ~7u;
+ memcpy(&storage[*storage_ix >> 3], input, block_size);
+ *storage_ix += block_size << 3;
+ storage[*storage_ix >> 3] = 0;
+ }
+ input += block_size;
+ input_size -= block_size;
+ }
+
+ if (is_last) {
+ WriteBits(1, 1, storage_ix, storage); // islast
+ WriteBits(1, 1, storage_ix, storage); // isempty
+ *storage_ix = (*storage_ix + 7u) & ~7u;
+ }
+}
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment_two_pass.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment_two_pass.h
new file mode 100644
index 00000000000..690ed081ec6
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compress_fragment_two_pass.h
@@ -0,0 +1,40 @@
+/* Copyright 2015 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Function for fast encoding of an input fragment, independently from the input
+// history. This function uses two-pass processing: in the first pass we save
+// the found backward matches and literal bytes into a buffer, and in the
+// second pass we emit them into the bit stream using prefix codes built based
+// on the actual command and literal byte histograms.
+
+#ifndef BROTLI_ENC_COMPRESS_FRAGMENT_TWO_PASS_H_
+#define BROTLI_ENC_COMPRESS_FRAGMENT_TWO_PASS_H_
+
+#include "./types.h"
+
+namespace brotli {
+
+static const size_t kCompressFragmentTwoPassBlockSize = 1 << 17;
+
+// Compresses "input" string to the "*storage" buffer as one or more complete
+// meta-blocks, and updates the "*storage_ix" bit position.
+//
+// If "is_last" is true, emits an additional empty last meta-block.
+//
+// REQUIRES: "input_size" is greater than zero, or "is_last" is true.
+// REQUIRES: "command_buf" and "literal_buf" point to at least
+// kCompressFragmentTwoPassBlockSize long arrays.
+// REQUIRES: All elements in "table[0..table_size-1]" are initialized to zero.
+// REQUIRES: "table_size" is a power of two
+void BrotliCompressFragmentTwoPass(const uint8_t* input, size_t input_size,
+ bool is_last,
+ uint32_t* command_buf, uint8_t* literal_buf,
+ int* table, size_t table_size,
+ size_t* storage_ix, uint8_t* storage);
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_COMPRESS_FRAGMENT_TWO_PASS_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compressor.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compressor.h
new file mode 100644
index 00000000000..1dfc42e889d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/compressor.h
@@ -0,0 +1,15 @@
+/* Copyright 2016 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* C++ API for Brotli compression. */
+
+#ifndef BROTLI_ENC_COMPRESSOR_H_
+#define BROTLI_ENC_COMPRESSOR_H_
+
+#include "./encode.h"
+#include "./streams.h"
+
+#endif /* BROTLI_ENC_COMPRESSOR_H_ */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/context.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/context.h
new file mode 100644
index 00000000000..00c065bccd6
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/context.h
@@ -0,0 +1,178 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Functions to map previous bytes into a context id.
+
+#ifndef BROTLI_ENC_CONTEXT_H_
+#define BROTLI_ENC_CONTEXT_H_
+
+#include "./types.h"
+
+namespace brotli {
+
+// Second-order context lookup table for UTF8 byte streams.
+//
+// If p1 and p2 are the previous two bytes, we calculate the context as
+//
+// context = kUTF8ContextLookup[p1] | kUTF8ContextLookup[p2 + 256].
+//
+// If the previous two bytes are ASCII characters (i.e. < 128), this will be
+// equivalent to
+//
+// context = 4 * context1(p1) + context2(p2),
+//
+// where context1 is based on the previous byte in the following way:
+//
+// 0 : non-ASCII control
+// 1 : \t, \n, \r
+// 2 : space
+// 3 : other punctuation
+// 4 : " '
+// 5 : %
+// 6 : ( < [ {
+// 7 : ) > ] }
+// 8 : , ; :
+// 9 : .
+// 10 : =
+// 11 : number
+// 12 : upper-case vowel
+// 13 : upper-case consonant
+// 14 : lower-case vowel
+// 15 : lower-case consonant
+//
+// and context2 is based on the second last byte:
+//
+// 0 : control, space
+// 1 : punctuation
+// 2 : upper-case letter, number
+// 3 : lower-case letter
+//
+// If the last byte is ASCII, and the second last byte is not (in a valid UTF8
+// stream it will be a continuation byte, value between 128 and 191), the
+// context is the same as if the second last byte was an ASCII control or space.
+//
+// If the last byte is a UTF8 lead byte (value >= 192), then the next byte will
+// be a continuation byte and the context id is 2 or 3 depending on the LSB of
+// the last byte and to a lesser extent on the second last byte if it is ASCII.
+//
+// If the last byte is a UTF8 continuation byte, the second last byte can be:
+// - continuation byte: the next byte is probably ASCII or lead byte (assuming
+// 4-byte UTF8 characters are rare) and the context id is 0 or 1.
+// - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1
+// - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3
+//
+// The possible value combinations of the previous two bytes, the range of
+// context ids and the type of the next byte is summarized in the table below:
+//
+// |--------\-----------------------------------------------------------------|
+// | \ Last byte |
+// | Second \---------------------------------------------------------------|
+// | last byte \ ASCII | cont. byte | lead byte |
+// | \ (0-127) | (128-191) | (192-) |
+// |=============|===================|=====================|==================|
+// | ASCII | next: ASCII/lead | not valid | next: cont. |
+// | (0-127) | context: 4 - 63 | | context: 2 - 3 |
+// |-------------|-------------------|---------------------|------------------|
+// | cont. byte | next: ASCII/lead | next: ASCII/lead | next: cont. |
+// | (128-191) | context: 4 - 63 | context: 0 - 1 | context: 2 - 3 |
+// |-------------|-------------------|---------------------|------------------|
+// | lead byte | not valid | next: ASCII/lead | not valid |
+// | (192-207) | | context: 0 - 1 | |
+// |-------------|-------------------|---------------------|------------------|
+// | lead byte | not valid | next: cont. | not valid |
+// | (208-) | | context: 2 - 3 | |
+// |-------------|-------------------|---------------------|------------------|
+static const uint8_t kUTF8ContextLookup[512] = {
+ // Last byte.
+ //
+ // ASCII range.
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,
+ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,
+ 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,
+ 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,
+ 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,
+ 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0,
+ // UTF8 continuation byte range.
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ // UTF8 lead byte range.
+ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+ // Second last byte.
+ //
+ // ASCII range.
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
+ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
+ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,
+ // UTF8 continuation byte range.
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ // UTF8 lead byte range.
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+};
+
+// Context lookup table for small signed integers.
+static const uint8_t kSigned3BitContextLookup[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
+};
+
+enum ContextType {
+ CONTEXT_LSB6 = 0,
+ CONTEXT_MSB6 = 1,
+ CONTEXT_UTF8 = 2,
+ CONTEXT_SIGNED = 3
+};
+
+static inline uint8_t Context(uint8_t p1, uint8_t p2, ContextType mode) {
+ switch (mode) {
+ case CONTEXT_LSB6:
+ return p1 & 0x3f;
+ case CONTEXT_MSB6:
+ return static_cast<uint8_t>(p1 >> 2);
+ case CONTEXT_UTF8:
+ return kUTF8ContextLookup[p1] | kUTF8ContextLookup[p2 + 256];
+ case CONTEXT_SIGNED:
+ return static_cast<uint8_t>((kSigned3BitContextLookup[p1] << 3) +
+ kSigned3BitContextLookup[p2]);
+ default:
+ return 0;
+ }
+}
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_CONTEXT_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/dictionary.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/dictionary.cc
new file mode 100644
index 00000000000..0564bab6aba
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/dictionary.cc
@@ -0,0 +1,9466 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+#include "./dictionary.h"
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+// In case of multiple definition linker error with dictionary.c from the
+// decoder: include only one of enc/dictionary.cc or dec/dictionary.c in a
+// target using both enc and dec.
+const uint8_t kBrotliDictionary[122784] = {
+ 0x74, 0x69, 0x6d, 0x65, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x66, 0x65, 0x6c,
+ 0x65, 0x66, 0x74, 0x62, 0x61, 0x63, 0x6b, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x61,
+ 0x74, 0x61, 0x73, 0x68, 0x6f, 0x77, 0x6f, 0x6e, 0x6c, 0x79, 0x73, 0x69, 0x74,
+ 0x65, 0x63, 0x69, 0x74, 0x79, 0x6f, 0x70, 0x65, 0x6e, 0x6a, 0x75, 0x73, 0x74,
+ 0x6c, 0x69, 0x6b, 0x65, 0x66, 0x72, 0x65, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x74,
+ 0x65, 0x78, 0x74, 0x79, 0x65, 0x61, 0x72, 0x6f, 0x76, 0x65, 0x72, 0x62, 0x6f,
+ 0x64, 0x79, 0x6c, 0x6f, 0x76, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x62, 0x6f, 0x6f,
+ 0x6b, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x76, 0x65, 0x6c, 0x69, 0x6e, 0x65,
+ 0x68, 0x65, 0x6c, 0x70, 0x68, 0x6f, 0x6d, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6d,
+ 0x6f, 0x72, 0x65, 0x77, 0x6f, 0x72, 0x64, 0x6c, 0x6f, 0x6e, 0x67, 0x74, 0x68,
+ 0x65, 0x6d, 0x76, 0x69, 0x65, 0x77, 0x66, 0x69, 0x6e, 0x64, 0x70, 0x61, 0x67,
+ 0x65, 0x64, 0x61, 0x79, 0x73, 0x66, 0x75, 0x6c, 0x6c, 0x68, 0x65, 0x61, 0x64,
+ 0x74, 0x65, 0x72, 0x6d, 0x65, 0x61, 0x63, 0x68, 0x61, 0x72, 0x65, 0x61, 0x66,
+ 0x72, 0x6f, 0x6d, 0x74, 0x72, 0x75, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x62,
+ 0x6c, 0x65, 0x75, 0x70, 0x6f, 0x6e, 0x68, 0x69, 0x67, 0x68, 0x64, 0x61, 0x74,
+ 0x65, 0x6c, 0x61, 0x6e, 0x64, 0x6e, 0x65, 0x77, 0x73, 0x65, 0x76, 0x65, 0x6e,
+ 0x6e, 0x65, 0x78, 0x74, 0x63, 0x61, 0x73, 0x65, 0x62, 0x6f, 0x74, 0x68, 0x70,
+ 0x6f, 0x73, 0x74, 0x75, 0x73, 0x65, 0x64, 0x6d, 0x61, 0x64, 0x65, 0x68, 0x61,
+ 0x6e, 0x64, 0x68, 0x65, 0x72, 0x65, 0x77, 0x68, 0x61, 0x74, 0x6e, 0x61, 0x6d,
+ 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x62, 0x6c, 0x6f, 0x67, 0x73, 0x69, 0x7a, 0x65,
+ 0x62, 0x61, 0x73, 0x65, 0x68, 0x65, 0x6c, 0x64, 0x6d, 0x61, 0x6b, 0x65, 0x6d,
+ 0x61, 0x69, 0x6e, 0x75, 0x73, 0x65, 0x72, 0x27, 0x29, 0x20, 0x2b, 0x68, 0x6f,
+ 0x6c, 0x64, 0x65, 0x6e, 0x64, 0x73, 0x77, 0x69, 0x74, 0x68, 0x4e, 0x65, 0x77,
+ 0x73, 0x72, 0x65, 0x61, 0x64, 0x77, 0x65, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e,
+ 0x74, 0x61, 0x6b, 0x65, 0x68, 0x61, 0x76, 0x65, 0x67, 0x61, 0x6d, 0x65, 0x73,
+ 0x65, 0x65, 0x6e, 0x63, 0x61, 0x6c, 0x6c, 0x70, 0x61, 0x74, 0x68, 0x77, 0x65,
+ 0x6c, 0x6c, 0x70, 0x6c, 0x75, 0x73, 0x6d, 0x65, 0x6e, 0x75, 0x66, 0x69, 0x6c,
+ 0x6d, 0x70, 0x61, 0x72, 0x74, 0x6a, 0x6f, 0x69, 0x6e, 0x74, 0x68, 0x69, 0x73,
+ 0x6c, 0x69, 0x73, 0x74, 0x67, 0x6f, 0x6f, 0x64, 0x6e, 0x65, 0x65, 0x64, 0x77,
+ 0x61, 0x79, 0x73, 0x77, 0x65, 0x73, 0x74, 0x6a, 0x6f, 0x62, 0x73, 0x6d, 0x69,
+ 0x6e, 0x64, 0x61, 0x6c, 0x73, 0x6f, 0x6c, 0x6f, 0x67, 0x6f, 0x72, 0x69, 0x63,
+ 0x68, 0x75, 0x73, 0x65, 0x73, 0x6c, 0x61, 0x73, 0x74, 0x74, 0x65, 0x61, 0x6d,
+ 0x61, 0x72, 0x6d, 0x79, 0x66, 0x6f, 0x6f, 0x64, 0x6b, 0x69, 0x6e, 0x67, 0x77,
+ 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x77, 0x61, 0x72, 0x64, 0x62, 0x65,
+ 0x73, 0x74, 0x66, 0x69, 0x72, 0x65, 0x50, 0x61, 0x67, 0x65, 0x6b, 0x6e, 0x6f,
+ 0x77, 0x61, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x6e, 0x67, 0x6d, 0x6f, 0x76, 0x65,
+ 0x74, 0x68, 0x61, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x67, 0x69, 0x76, 0x65, 0x73,
+ 0x65, 0x6c, 0x66, 0x6e, 0x6f, 0x74, 0x65, 0x6d, 0x75, 0x63, 0x68, 0x66, 0x65,
+ 0x65, 0x64, 0x6d, 0x61, 0x6e, 0x79, 0x72, 0x6f, 0x63, 0x6b, 0x69, 0x63, 0x6f,
+ 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x6c, 0x6f, 0x6f, 0x6b, 0x68, 0x69, 0x64, 0x65,
+ 0x64, 0x69, 0x65, 0x64, 0x48, 0x6f, 0x6d, 0x65, 0x72, 0x75, 0x6c, 0x65, 0x68,
+ 0x6f, 0x73, 0x74, 0x61, 0x6a, 0x61, 0x78, 0x69, 0x6e, 0x66, 0x6f, 0x63, 0x6c,
+ 0x75, 0x62, 0x6c, 0x61, 0x77, 0x73, 0x6c, 0x65, 0x73, 0x73, 0x68, 0x61, 0x6c,
+ 0x66, 0x73, 0x6f, 0x6d, 0x65, 0x73, 0x75, 0x63, 0x68, 0x7a, 0x6f, 0x6e, 0x65,
+ 0x31, 0x30, 0x30, 0x25, 0x6f, 0x6e, 0x65, 0x73, 0x63, 0x61, 0x72, 0x65, 0x54,
+ 0x69, 0x6d, 0x65, 0x72, 0x61, 0x63, 0x65, 0x62, 0x6c, 0x75, 0x65, 0x66, 0x6f,
+ 0x75, 0x72, 0x77, 0x65, 0x65, 0x6b, 0x66, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x70,
+ 0x65, 0x67, 0x61, 0x76, 0x65, 0x68, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x73, 0x74,
+ 0x77, 0x68, 0x65, 0x6e, 0x70, 0x61, 0x72, 0x6b, 0x6b, 0x65, 0x70, 0x74, 0x70,
+ 0x61, 0x73, 0x73, 0x73, 0x68, 0x69, 0x70, 0x72, 0x6f, 0x6f, 0x6d, 0x48, 0x54,
+ 0x4d, 0x4c, 0x70, 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x6f, 0x6e,
+ 0x65, 0x73, 0x61, 0x76, 0x65, 0x6b, 0x65, 0x65, 0x70, 0x66, 0x6c, 0x61, 0x67,
+ 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x6f, 0x6c, 0x64, 0x66, 0x69, 0x76, 0x65, 0x74,
+ 0x6f, 0x6f, 0x6b, 0x72, 0x61, 0x74, 0x65, 0x74, 0x6f, 0x77, 0x6e, 0x6a, 0x75,
+ 0x6d, 0x70, 0x74, 0x68, 0x75, 0x73, 0x64, 0x61, 0x72, 0x6b, 0x63, 0x61, 0x72,
+ 0x64, 0x66, 0x69, 0x6c, 0x65, 0x66, 0x65, 0x61, 0x72, 0x73, 0x74, 0x61, 0x79,
+ 0x6b, 0x69, 0x6c, 0x6c, 0x74, 0x68, 0x61, 0x74, 0x66, 0x61, 0x6c, 0x6c, 0x61,
+ 0x75, 0x74, 0x6f, 0x65, 0x76, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x74, 0x61,
+ 0x6c, 0x6b, 0x73, 0x68, 0x6f, 0x70, 0x76, 0x6f, 0x74, 0x65, 0x64, 0x65, 0x65,
+ 0x70, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x65, 0x73, 0x74, 0x74, 0x75, 0x72, 0x6e,
+ 0x62, 0x6f, 0x72, 0x6e, 0x62, 0x61, 0x6e, 0x64, 0x66, 0x65, 0x6c, 0x6c, 0x72,
+ 0x6f, 0x73, 0x65, 0x75, 0x72, 0x6c, 0x28, 0x73, 0x6b, 0x69, 0x6e, 0x72, 0x6f,
+ 0x6c, 0x65, 0x63, 0x6f, 0x6d, 0x65, 0x61, 0x63, 0x74, 0x73, 0x61, 0x67, 0x65,
+ 0x73, 0x6d, 0x65, 0x65, 0x74, 0x67, 0x6f, 0x6c, 0x64, 0x2e, 0x6a, 0x70, 0x67,
+ 0x69, 0x74, 0x65, 0x6d, 0x76, 0x61, 0x72, 0x79, 0x66, 0x65, 0x6c, 0x74, 0x74,
+ 0x68, 0x65, 0x6e, 0x73, 0x65, 0x6e, 0x64, 0x64, 0x72, 0x6f, 0x70, 0x56, 0x69,
+ 0x65, 0x77, 0x63, 0x6f, 0x70, 0x79, 0x31, 0x2e, 0x30, 0x22, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x73, 0x74, 0x6f, 0x70, 0x65, 0x6c, 0x73, 0x65, 0x6c, 0x69, 0x65, 0x73,
+ 0x74, 0x6f, 0x75, 0x72, 0x70, 0x61, 0x63, 0x6b, 0x2e, 0x67, 0x69, 0x66, 0x70,
+ 0x61, 0x73, 0x74, 0x63, 0x73, 0x73, 0x3f, 0x67, 0x72, 0x61, 0x79, 0x6d, 0x65,
+ 0x61, 0x6e, 0x26, 0x67, 0x74, 0x3b, 0x72, 0x69, 0x64, 0x65, 0x73, 0x68, 0x6f,
+ 0x74, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x61, 0x69, 0x64, 0x72, 0x6f, 0x61, 0x64,
+ 0x76, 0x61, 0x72, 0x20, 0x66, 0x65, 0x65, 0x6c, 0x6a, 0x6f, 0x68, 0x6e, 0x72,
+ 0x69, 0x63, 0x6b, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x61, 0x73, 0x74, 0x27, 0x55,
+ 0x41, 0x2d, 0x64, 0x65, 0x61, 0x64, 0x3c, 0x2f, 0x62, 0x3e, 0x70, 0x6f, 0x6f,
+ 0x72, 0x62, 0x69, 0x6c, 0x6c, 0x74, 0x79, 0x70, 0x65, 0x55, 0x2e, 0x53, 0x2e,
+ 0x77, 0x6f, 0x6f, 0x64, 0x6d, 0x75, 0x73, 0x74, 0x32, 0x70, 0x78, 0x3b, 0x49,
+ 0x6e, 0x66, 0x6f, 0x72, 0x61, 0x6e, 0x6b, 0x77, 0x69, 0x64, 0x65, 0x77, 0x61,
+ 0x6e, 0x74, 0x77, 0x61, 0x6c, 0x6c, 0x6c, 0x65, 0x61, 0x64, 0x5b, 0x30, 0x5d,
+ 0x3b, 0x70, 0x61, 0x75, 0x6c, 0x77, 0x61, 0x76, 0x65, 0x73, 0x75, 0x72, 0x65,
+ 0x24, 0x28, 0x27, 0x23, 0x77, 0x61, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x73, 0x61,
+ 0x72, 0x6d, 0x73, 0x67, 0x6f, 0x65, 0x73, 0x67, 0x61, 0x69, 0x6e, 0x6c, 0x61,
+ 0x6e, 0x67, 0x70, 0x61, 0x69, 0x64, 0x21, 0x2d, 0x2d, 0x20, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x75, 0x6e, 0x69, 0x74, 0x72, 0x6f, 0x6f, 0x74, 0x77, 0x61, 0x6c, 0x6b,
+ 0x66, 0x69, 0x72, 0x6d, 0x77, 0x69, 0x66, 0x65, 0x78, 0x6d, 0x6c, 0x22, 0x73,
+ 0x6f, 0x6e, 0x67, 0x74, 0x65, 0x73, 0x74, 0x32, 0x30, 0x70, 0x78, 0x6b, 0x69,
+ 0x6e, 0x64, 0x72, 0x6f, 0x77, 0x73, 0x74, 0x6f, 0x6f, 0x6c, 0x66, 0x6f, 0x6e,
+ 0x74, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x61, 0x66, 0x65, 0x73, 0x74, 0x61, 0x72,
+ 0x6d, 0x61, 0x70, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x61, 0x69, 0x6e, 0x66,
+ 0x6c, 0x6f, 0x77, 0x62, 0x61, 0x62, 0x79, 0x73, 0x70, 0x61, 0x6e, 0x73, 0x61,
+ 0x79, 0x73, 0x34, 0x70, 0x78, 0x3b, 0x36, 0x70, 0x78, 0x3b, 0x61, 0x72, 0x74,
+ 0x73, 0x66, 0x6f, 0x6f, 0x74, 0x72, 0x65, 0x61, 0x6c, 0x77, 0x69, 0x6b, 0x69,
+ 0x68, 0x65, 0x61, 0x74, 0x73, 0x74, 0x65, 0x70, 0x74, 0x72, 0x69, 0x70, 0x6f,
+ 0x72, 0x67, 0x2f, 0x6c, 0x61, 0x6b, 0x65, 0x77, 0x65, 0x61, 0x6b, 0x74, 0x6f,
+ 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x66, 0x61, 0x6e,
+ 0x73, 0x62, 0x61, 0x6e, 0x6b, 0x76, 0x65, 0x72, 0x79, 0x72, 0x75, 0x6e, 0x73,
+ 0x6a, 0x75, 0x6c, 0x79, 0x74, 0x61, 0x73, 0x6b, 0x31, 0x70, 0x78, 0x3b, 0x67,
+ 0x6f, 0x61, 0x6c, 0x67, 0x72, 0x65, 0x77, 0x73, 0x6c, 0x6f, 0x77, 0x65, 0x64,
+ 0x67, 0x65, 0x69, 0x64, 0x3d, 0x22, 0x73, 0x65, 0x74, 0x73, 0x35, 0x70, 0x78,
+ 0x3b, 0x2e, 0x6a, 0x73, 0x3f, 0x34, 0x30, 0x70, 0x78, 0x69, 0x66, 0x20, 0x28,
+ 0x73, 0x6f, 0x6f, 0x6e, 0x73, 0x65, 0x61, 0x74, 0x6e, 0x6f, 0x6e, 0x65, 0x74,
+ 0x75, 0x62, 0x65, 0x7a, 0x65, 0x72, 0x6f, 0x73, 0x65, 0x6e, 0x74, 0x72, 0x65,
+ 0x65, 0x64, 0x66, 0x61, 0x63, 0x74, 0x69, 0x6e, 0x74, 0x6f, 0x67, 0x69, 0x66,
+ 0x74, 0x68, 0x61, 0x72, 0x6d, 0x31, 0x38, 0x70, 0x78, 0x63, 0x61, 0x6d, 0x65,
+ 0x68, 0x69, 0x6c, 0x6c, 0x62, 0x6f, 0x6c, 0x64, 0x7a, 0x6f, 0x6f, 0x6d, 0x76,
+ 0x6f, 0x69, 0x64, 0x65, 0x61, 0x73, 0x79, 0x72, 0x69, 0x6e, 0x67, 0x66, 0x69,
+ 0x6c, 0x6c, 0x70, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x69, 0x74, 0x63, 0x6f, 0x73,
+ 0x74, 0x33, 0x70, 0x78, 0x3b, 0x6a, 0x61, 0x63, 0x6b, 0x74, 0x61, 0x67, 0x73,
+ 0x62, 0x69, 0x74, 0x73, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x69, 0x74, 0x6b,
+ 0x6e, 0x65, 0x77, 0x6e, 0x65, 0x61, 0x72, 0x3c, 0x21, 0x2d, 0x2d, 0x67, 0x72,
+ 0x6f, 0x77, 0x4a, 0x53, 0x4f, 0x4e, 0x64, 0x75, 0x74, 0x79, 0x4e, 0x61, 0x6d,
+ 0x65, 0x73, 0x61, 0x6c, 0x65, 0x79, 0x6f, 0x75, 0x20, 0x6c, 0x6f, 0x74, 0x73,
+ 0x70, 0x61, 0x69, 0x6e, 0x6a, 0x61, 0x7a, 0x7a, 0x63, 0x6f, 0x6c, 0x64, 0x65,
+ 0x79, 0x65, 0x73, 0x66, 0x69, 0x73, 0x68, 0x77, 0x77, 0x77, 0x2e, 0x72, 0x69,
+ 0x73, 0x6b, 0x74, 0x61, 0x62, 0x73, 0x70, 0x72, 0x65, 0x76, 0x31, 0x30, 0x70,
+ 0x78, 0x72, 0x69, 0x73, 0x65, 0x32, 0x35, 0x70, 0x78, 0x42, 0x6c, 0x75, 0x65,
+ 0x64, 0x69, 0x6e, 0x67, 0x33, 0x30, 0x30, 0x2c, 0x62, 0x61, 0x6c, 0x6c, 0x66,
+ 0x6f, 0x72, 0x64, 0x65, 0x61, 0x72, 0x6e, 0x77, 0x69, 0x6c, 0x64, 0x62, 0x6f,
+ 0x78, 0x2e, 0x66, 0x61, 0x69, 0x72, 0x6c, 0x61, 0x63, 0x6b, 0x76, 0x65, 0x72,
+ 0x73, 0x70, 0x61, 0x69, 0x72, 0x6a, 0x75, 0x6e, 0x65, 0x74, 0x65, 0x63, 0x68,
+ 0x69, 0x66, 0x28, 0x21, 0x70, 0x69, 0x63, 0x6b, 0x65, 0x76, 0x69, 0x6c, 0x24,
+ 0x28, 0x22, 0x23, 0x77, 0x61, 0x72, 0x6d, 0x6c, 0x6f, 0x72, 0x64, 0x64, 0x6f,
+ 0x65, 0x73, 0x70, 0x75, 0x6c, 0x6c, 0x2c, 0x30, 0x30, 0x30, 0x69, 0x64, 0x65,
+ 0x61, 0x64, 0x72, 0x61, 0x77, 0x68, 0x75, 0x67, 0x65, 0x73, 0x70, 0x6f, 0x74,
+ 0x66, 0x75, 0x6e, 0x64, 0x62, 0x75, 0x72, 0x6e, 0x68, 0x72, 0x65, 0x66, 0x63,
+ 0x65, 0x6c, 0x6c, 0x6b, 0x65, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x68, 0x6f,
+ 0x75, 0x72, 0x6c, 0x6f, 0x73, 0x73, 0x66, 0x75, 0x65, 0x6c, 0x31, 0x32, 0x70,
+ 0x78, 0x73, 0x75, 0x69, 0x74, 0x64, 0x65, 0x61, 0x6c, 0x52, 0x53, 0x53, 0x22,
+ 0x61, 0x67, 0x65, 0x64, 0x67, 0x72, 0x65, 0x79, 0x47, 0x45, 0x54, 0x22, 0x65,
+ 0x61, 0x73, 0x65, 0x61, 0x69, 0x6d, 0x73, 0x67, 0x69, 0x72, 0x6c, 0x61, 0x69,
+ 0x64, 0x73, 0x38, 0x70, 0x78, 0x3b, 0x6e, 0x61, 0x76, 0x79, 0x67, 0x72, 0x69,
+ 0x64, 0x74, 0x69, 0x70, 0x73, 0x23, 0x39, 0x39, 0x39, 0x77, 0x61, 0x72, 0x73,
+ 0x6c, 0x61, 0x64, 0x79, 0x63, 0x61, 0x72, 0x73, 0x29, 0x3b, 0x20, 0x7d, 0x70,
+ 0x68, 0x70, 0x3f, 0x68, 0x65, 0x6c, 0x6c, 0x74, 0x61, 0x6c, 0x6c, 0x77, 0x68,
+ 0x6f, 0x6d, 0x7a, 0x68, 0x3a, 0xe5, 0x2a, 0x2f, 0x0d, 0x0a, 0x20, 0x31, 0x30,
+ 0x30, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x0a, 0x0a, 0x41, 0x37, 0x70, 0x78, 0x3b,
+ 0x70, 0x75, 0x73, 0x68, 0x63, 0x68, 0x61, 0x74, 0x30, 0x70, 0x78, 0x3b, 0x63,
+ 0x72, 0x65, 0x77, 0x2a, 0x2f, 0x3c, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x37, 0x35,
+ 0x70, 0x78, 0x66, 0x6c, 0x61, 0x74, 0x72, 0x61, 0x72, 0x65, 0x20, 0x26, 0x26,
+ 0x20, 0x74, 0x65, 0x6c, 0x6c, 0x63, 0x61, 0x6d, 0x70, 0x6f, 0x6e, 0x74, 0x6f,
+ 0x6c, 0x61, 0x69, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x73, 0x6b, 0x69, 0x70, 0x74,
+ 0x65, 0x6e, 0x74, 0x66, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x6c, 0x65, 0x67, 0x65,
+ 0x74, 0x73, 0x70, 0x6c, 0x6f, 0x74, 0x34, 0x30, 0x30, 0x2c, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x63, 0x6f, 0x6f, 0x6c, 0x66, 0x65, 0x65, 0x74, 0x2e, 0x70, 0x68, 0x70,
+ 0x3c, 0x62, 0x72, 0x3e, 0x65, 0x72, 0x69, 0x63, 0x6d, 0x6f, 0x73, 0x74, 0x67,
+ 0x75, 0x69, 0x64, 0x62, 0x65, 0x6c, 0x6c, 0x64, 0x65, 0x73, 0x63, 0x68, 0x61,
+ 0x69, 0x72, 0x6d, 0x61, 0x74, 0x68, 0x61, 0x74, 0x6f, 0x6d, 0x2f, 0x69, 0x6d,
+ 0x67, 0x26, 0x23, 0x38, 0x32, 0x6c, 0x75, 0x63, 0x6b, 0x63, 0x65, 0x6e, 0x74,
+ 0x30, 0x30, 0x30, 0x3b, 0x74, 0x69, 0x6e, 0x79, 0x67, 0x6f, 0x6e, 0x65, 0x68,
+ 0x74, 0x6d, 0x6c, 0x73, 0x65, 0x6c, 0x6c, 0x64, 0x72, 0x75, 0x67, 0x46, 0x52,
+ 0x45, 0x45, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x69, 0x63, 0x6b, 0x3f, 0x69, 0x64,
+ 0x3d, 0x6c, 0x6f, 0x73, 0x65, 0x6e, 0x75, 0x6c, 0x6c, 0x76, 0x61, 0x73, 0x74,
+ 0x77, 0x69, 0x6e, 0x64, 0x52, 0x53, 0x53, 0x20, 0x77, 0x65, 0x61, 0x72, 0x72,
+ 0x65, 0x6c, 0x79, 0x62, 0x65, 0x65, 0x6e, 0x73, 0x61, 0x6d, 0x65, 0x64, 0x75,
+ 0x6b, 0x65, 0x6e, 0x61, 0x73, 0x61, 0x63, 0x61, 0x70, 0x65, 0x77, 0x69, 0x73,
+ 0x68, 0x67, 0x75, 0x6c, 0x66, 0x54, 0x32, 0x33, 0x3a, 0x68, 0x69, 0x74, 0x73,
+ 0x73, 0x6c, 0x6f, 0x74, 0x67, 0x61, 0x74, 0x65, 0x6b, 0x69, 0x63, 0x6b, 0x62,
+ 0x6c, 0x75, 0x72, 0x74, 0x68, 0x65, 0x79, 0x31, 0x35, 0x70, 0x78, 0x27, 0x27,
+ 0x29, 0x3b, 0x29, 0x3b, 0x22, 0x3e, 0x6d, 0x73, 0x69, 0x65, 0x77, 0x69, 0x6e,
+ 0x73, 0x62, 0x69, 0x72, 0x64, 0x73, 0x6f, 0x72, 0x74, 0x62, 0x65, 0x74, 0x61,
+ 0x73, 0x65, 0x65, 0x6b, 0x54, 0x31, 0x38, 0x3a, 0x6f, 0x72, 0x64, 0x73, 0x74,
+ 0x72, 0x65, 0x65, 0x6d, 0x61, 0x6c, 0x6c, 0x36, 0x30, 0x70, 0x78, 0x66, 0x61,
+ 0x72, 0x6d, 0xe2, 0x80, 0x99, 0x73, 0x62, 0x6f, 0x79, 0x73, 0x5b, 0x30, 0x5d,
+ 0x2e, 0x27, 0x29, 0x3b, 0x22, 0x50, 0x4f, 0x53, 0x54, 0x62, 0x65, 0x61, 0x72,
+ 0x6b, 0x69, 0x64, 0x73, 0x29, 0x3b, 0x7d, 0x7d, 0x6d, 0x61, 0x72, 0x79, 0x74,
+ 0x65, 0x6e, 0x64, 0x28, 0x55, 0x4b, 0x29, 0x71, 0x75, 0x61, 0x64, 0x7a, 0x68,
+ 0x3a, 0xe6, 0x2d, 0x73, 0x69, 0x7a, 0x2d, 0x2d, 0x2d, 0x2d, 0x70, 0x72, 0x6f,
+ 0x70, 0x27, 0x29, 0x3b, 0x0d, 0x6c, 0x69, 0x66, 0x74, 0x54, 0x31, 0x39, 0x3a,
+ 0x76, 0x69, 0x63, 0x65, 0x61, 0x6e, 0x64, 0x79, 0x64, 0x65, 0x62, 0x74, 0x3e,
+ 0x52, 0x53, 0x53, 0x70, 0x6f, 0x6f, 0x6c, 0x6e, 0x65, 0x63, 0x6b, 0x62, 0x6c,
+ 0x6f, 0x77, 0x54, 0x31, 0x36, 0x3a, 0x64, 0x6f, 0x6f, 0x72, 0x65, 0x76, 0x61,
+ 0x6c, 0x54, 0x31, 0x37, 0x3a, 0x6c, 0x65, 0x74, 0x73, 0x66, 0x61, 0x69, 0x6c,
+ 0x6f, 0x72, 0x61, 0x6c, 0x70, 0x6f, 0x6c, 0x6c, 0x6e, 0x6f, 0x76, 0x61, 0x63,
+ 0x6f, 0x6c, 0x73, 0x67, 0x65, 0x6e, 0x65, 0x20, 0xe2, 0x80, 0x94, 0x73, 0x6f,
+ 0x66, 0x74, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x69, 0x6c, 0x6c, 0x72, 0x6f, 0x73,
+ 0x73, 0x3c, 0x68, 0x33, 0x3e, 0x70, 0x6f, 0x75, 0x72, 0x66, 0x61, 0x64, 0x65,
+ 0x70, 0x69, 0x6e, 0x6b, 0x3c, 0x74, 0x72, 0x3e, 0x6d, 0x69, 0x6e, 0x69, 0x29,
+ 0x7c, 0x21, 0x28, 0x6d, 0x69, 0x6e, 0x65, 0x7a, 0x68, 0x3a, 0xe8, 0x62, 0x61,
+ 0x72, 0x73, 0x68, 0x65, 0x61, 0x72, 0x30, 0x30, 0x29, 0x3b, 0x6d, 0x69, 0x6c,
+ 0x6b, 0x20, 0x2d, 0x2d, 0x3e, 0x69, 0x72, 0x6f, 0x6e, 0x66, 0x72, 0x65, 0x64,
+ 0x64, 0x69, 0x73, 0x6b, 0x77, 0x65, 0x6e, 0x74, 0x73, 0x6f, 0x69, 0x6c, 0x70,
+ 0x75, 0x74, 0x73, 0x2f, 0x6a, 0x73, 0x2f, 0x68, 0x6f, 0x6c, 0x79, 0x54, 0x32,
+ 0x32, 0x3a, 0x49, 0x53, 0x42, 0x4e, 0x54, 0x32, 0x30, 0x3a, 0x61, 0x64, 0x61,
+ 0x6d, 0x73, 0x65, 0x65, 0x73, 0x3c, 0x68, 0x32, 0x3e, 0x6a, 0x73, 0x6f, 0x6e,
+ 0x27, 0x2c, 0x20, 0x27, 0x63, 0x6f, 0x6e, 0x74, 0x54, 0x32, 0x31, 0x3a, 0x20,
+ 0x52, 0x53, 0x53, 0x6c, 0x6f, 0x6f, 0x70, 0x61, 0x73, 0x69, 0x61, 0x6d, 0x6f,
+ 0x6f, 0x6e, 0x3c, 0x2f, 0x70, 0x3e, 0x73, 0x6f, 0x75, 0x6c, 0x4c, 0x49, 0x4e,
+ 0x45, 0x66, 0x6f, 0x72, 0x74, 0x63, 0x61, 0x72, 0x74, 0x54, 0x31, 0x34, 0x3a,
+ 0x3c, 0x68, 0x31, 0x3e, 0x38, 0x30, 0x70, 0x78, 0x21, 0x2d, 0x2d, 0x3c, 0x39,
+ 0x70, 0x78, 0x3b, 0x54, 0x30, 0x34, 0x3a, 0x6d, 0x69, 0x6b, 0x65, 0x3a, 0x34,
+ 0x36, 0x5a, 0x6e, 0x69, 0x63, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x59, 0x6f, 0x72,
+ 0x6b, 0x72, 0x69, 0x63, 0x65, 0x7a, 0x68, 0x3a, 0xe4, 0x27, 0x29, 0x29, 0x3b,
+ 0x70, 0x75, 0x72, 0x65, 0x6d, 0x61, 0x67, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74,
+ 0x6f, 0x6e, 0x65, 0x62, 0x6f, 0x6e, 0x64, 0x3a, 0x33, 0x37, 0x5a, 0x5f, 0x6f,
+ 0x66, 0x5f, 0x27, 0x5d, 0x29, 0x3b, 0x30, 0x30, 0x30, 0x2c, 0x7a, 0x68, 0x3a,
+ 0xe7, 0x74, 0x61, 0x6e, 0x6b, 0x79, 0x61, 0x72, 0x64, 0x62, 0x6f, 0x77, 0x6c,
+ 0x62, 0x75, 0x73, 0x68, 0x3a, 0x35, 0x36, 0x5a, 0x4a, 0x61, 0x76, 0x61, 0x33,
+ 0x30, 0x70, 0x78, 0x0a, 0x7c, 0x7d, 0x0a, 0x25, 0x43, 0x33, 0x25, 0x3a, 0x33,
+ 0x34, 0x5a, 0x6a, 0x65, 0x66, 0x66, 0x45, 0x58, 0x50, 0x49, 0x63, 0x61, 0x73,
+ 0x68, 0x76, 0x69, 0x73, 0x61, 0x67, 0x6f, 0x6c, 0x66, 0x73, 0x6e, 0x6f, 0x77,
+ 0x7a, 0x68, 0x3a, 0xe9, 0x71, 0x75, 0x65, 0x72, 0x2e, 0x63, 0x73, 0x73, 0x73,
+ 0x69, 0x63, 0x6b, 0x6d, 0x65, 0x61, 0x74, 0x6d, 0x69, 0x6e, 0x2e, 0x62, 0x69,
+ 0x6e, 0x64, 0x64, 0x65, 0x6c, 0x6c, 0x68, 0x69, 0x72, 0x65, 0x70, 0x69, 0x63,
+ 0x73, 0x72, 0x65, 0x6e, 0x74, 0x3a, 0x33, 0x36, 0x5a, 0x48, 0x54, 0x54, 0x50,
+ 0x2d, 0x32, 0x30, 0x31, 0x66, 0x6f, 0x74, 0x6f, 0x77, 0x6f, 0x6c, 0x66, 0x45,
+ 0x4e, 0x44, 0x20, 0x78, 0x62, 0x6f, 0x78, 0x3a, 0x35, 0x34, 0x5a, 0x42, 0x4f,
+ 0x44, 0x59, 0x64, 0x69, 0x63, 0x6b, 0x3b, 0x0a, 0x7d, 0x0a, 0x65, 0x78, 0x69,
+ 0x74, 0x3a, 0x33, 0x35, 0x5a, 0x76, 0x61, 0x72, 0x73, 0x62, 0x65, 0x61, 0x74,
+ 0x27, 0x7d, 0x29, 0x3b, 0x64, 0x69, 0x65, 0x74, 0x39, 0x39, 0x39, 0x3b, 0x61,
+ 0x6e, 0x6e, 0x65, 0x7d, 0x7d, 0x3c, 0x2f, 0x5b, 0x69, 0x5d, 0x2e, 0x4c, 0x61,
+ 0x6e, 0x67, 0x6b, 0x6d, 0xc2, 0xb2, 0x77, 0x69, 0x72, 0x65, 0x74, 0x6f, 0x79,
+ 0x73, 0x61, 0x64, 0x64, 0x73, 0x73, 0x65, 0x61, 0x6c, 0x61, 0x6c, 0x65, 0x78,
+ 0x3b, 0x0a, 0x09, 0x7d, 0x65, 0x63, 0x68, 0x6f, 0x6e, 0x69, 0x6e, 0x65, 0x2e,
+ 0x6f, 0x72, 0x67, 0x30, 0x30, 0x35, 0x29, 0x74, 0x6f, 0x6e, 0x79, 0x6a, 0x65,
+ 0x77, 0x73, 0x73, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x67, 0x73, 0x72, 0x6f, 0x6f,
+ 0x66, 0x30, 0x30, 0x30, 0x29, 0x20, 0x32, 0x30, 0x30, 0x77, 0x69, 0x6e, 0x65,
+ 0x67, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x67, 0x73, 0x62, 0x6f, 0x6f, 0x74, 0x67,
+ 0x61, 0x72, 0x79, 0x63, 0x75, 0x74, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x74, 0x65,
+ 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x6d, 0x6c, 0x63, 0x6f, 0x63,
+ 0x6b, 0x67, 0x61, 0x6e, 0x67, 0x24, 0x28, 0x27, 0x2e, 0x35, 0x30, 0x70, 0x78,
+ 0x50, 0x68, 0x2e, 0x44, 0x6d, 0x69, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x6e, 0x6c,
+ 0x6f, 0x61, 0x6e, 0x64, 0x65, 0x73, 0x6b, 0x6d, 0x69, 0x6c, 0x65, 0x72, 0x79,
+ 0x61, 0x6e, 0x75, 0x6e, 0x69, 0x78, 0x64, 0x69, 0x73, 0x63, 0x29, 0x3b, 0x7d,
+ 0x0a, 0x64, 0x75, 0x73, 0x74, 0x63, 0x6c, 0x69, 0x70, 0x29, 0x2e, 0x0a, 0x0a,
+ 0x37, 0x30, 0x70, 0x78, 0x2d, 0x32, 0x30, 0x30, 0x44, 0x56, 0x44, 0x73, 0x37,
+ 0x5d, 0x3e, 0x3c, 0x74, 0x61, 0x70, 0x65, 0x64, 0x65, 0x6d, 0x6f, 0x69, 0x2b,
+ 0x2b, 0x29, 0x77, 0x61, 0x67, 0x65, 0x65, 0x75, 0x72, 0x6f, 0x70, 0x68, 0x69,
+ 0x6c, 0x6f, 0x70, 0x74, 0x73, 0x68, 0x6f, 0x6c, 0x65, 0x46, 0x41, 0x51, 0x73,
+ 0x61, 0x73, 0x69, 0x6e, 0x2d, 0x32, 0x36, 0x54, 0x6c, 0x61, 0x62, 0x73, 0x70,
+ 0x65, 0x74, 0x73, 0x55, 0x52, 0x4c, 0x20, 0x62, 0x75, 0x6c, 0x6b, 0x63, 0x6f,
+ 0x6f, 0x6b, 0x3b, 0x7d, 0x0d, 0x0a, 0x48, 0x45, 0x41, 0x44, 0x5b, 0x30, 0x5d,
+ 0x29, 0x61, 0x62, 0x62, 0x72, 0x6a, 0x75, 0x61, 0x6e, 0x28, 0x31, 0x39, 0x38,
+ 0x6c, 0x65, 0x73, 0x68, 0x74, 0x77, 0x69, 0x6e, 0x3c, 0x2f, 0x69, 0x3e, 0x73,
+ 0x6f, 0x6e, 0x79, 0x67, 0x75, 0x79, 0x73, 0x66, 0x75, 0x63, 0x6b, 0x70, 0x69,
+ 0x70, 0x65, 0x7c, 0x2d, 0x0a, 0x21, 0x30, 0x30, 0x32, 0x29, 0x6e, 0x64, 0x6f,
+ 0x77, 0x5b, 0x31, 0x5d, 0x3b, 0x5b, 0x5d, 0x3b, 0x0a, 0x4c, 0x6f, 0x67, 0x20,
+ 0x73, 0x61, 0x6c, 0x74, 0x0d, 0x0a, 0x09, 0x09, 0x62, 0x61, 0x6e, 0x67, 0x74,
+ 0x72, 0x69, 0x6d, 0x62, 0x61, 0x74, 0x68, 0x29, 0x7b, 0x0d, 0x0a, 0x30, 0x30,
+ 0x70, 0x78, 0x0a, 0x7d, 0x29, 0x3b, 0x6b, 0x6f, 0x3a, 0xec, 0x66, 0x65, 0x65,
+ 0x73, 0x61, 0x64, 0x3e, 0x0d, 0x73, 0x3a, 0x2f, 0x2f, 0x20, 0x5b, 0x5d, 0x3b,
+ 0x74, 0x6f, 0x6c, 0x6c, 0x70, 0x6c, 0x75, 0x67, 0x28, 0x29, 0x7b, 0x0a, 0x7b,
+ 0x0d, 0x0a, 0x20, 0x2e, 0x6a, 0x73, 0x27, 0x32, 0x30, 0x30, 0x70, 0x64, 0x75,
+ 0x61, 0x6c, 0x62, 0x6f, 0x61, 0x74, 0x2e, 0x4a, 0x50, 0x47, 0x29, 0x3b, 0x0a,
+ 0x7d, 0x71, 0x75, 0x6f, 0x74, 0x29, 0x3b, 0x0a, 0x0a, 0x27, 0x29, 0x3b, 0x0a,
+ 0x0d, 0x0a, 0x7d, 0x0d, 0x32, 0x30, 0x31, 0x34, 0x32, 0x30, 0x31, 0x35, 0x32,
+ 0x30, 0x31, 0x36, 0x32, 0x30, 0x31, 0x37, 0x32, 0x30, 0x31, 0x38, 0x32, 0x30,
+ 0x31, 0x39, 0x32, 0x30, 0x32, 0x30, 0x32, 0x30, 0x32, 0x31, 0x32, 0x30, 0x32,
+ 0x32, 0x32, 0x30, 0x32, 0x33, 0x32, 0x30, 0x32, 0x34, 0x32, 0x30, 0x32, 0x35,
+ 0x32, 0x30, 0x32, 0x36, 0x32, 0x30, 0x32, 0x37, 0x32, 0x30, 0x32, 0x38, 0x32,
+ 0x30, 0x32, 0x39, 0x32, 0x30, 0x33, 0x30, 0x32, 0x30, 0x33, 0x31, 0x32, 0x30,
+ 0x33, 0x32, 0x32, 0x30, 0x33, 0x33, 0x32, 0x30, 0x33, 0x34, 0x32, 0x30, 0x33,
+ 0x35, 0x32, 0x30, 0x33, 0x36, 0x32, 0x30, 0x33, 0x37, 0x32, 0x30, 0x31, 0x33,
+ 0x32, 0x30, 0x31, 0x32, 0x32, 0x30, 0x31, 0x31, 0x32, 0x30, 0x31, 0x30, 0x32,
+ 0x30, 0x30, 0x39, 0x32, 0x30, 0x30, 0x38, 0x32, 0x30, 0x30, 0x37, 0x32, 0x30,
+ 0x30, 0x36, 0x32, 0x30, 0x30, 0x35, 0x32, 0x30, 0x30, 0x34, 0x32, 0x30, 0x30,
+ 0x33, 0x32, 0x30, 0x30, 0x32, 0x32, 0x30, 0x30, 0x31, 0x32, 0x30, 0x30, 0x30,
+ 0x31, 0x39, 0x39, 0x39, 0x31, 0x39, 0x39, 0x38, 0x31, 0x39, 0x39, 0x37, 0x31,
+ 0x39, 0x39, 0x36, 0x31, 0x39, 0x39, 0x35, 0x31, 0x39, 0x39, 0x34, 0x31, 0x39,
+ 0x39, 0x33, 0x31, 0x39, 0x39, 0x32, 0x31, 0x39, 0x39, 0x31, 0x31, 0x39, 0x39,
+ 0x30, 0x31, 0x39, 0x38, 0x39, 0x31, 0x39, 0x38, 0x38, 0x31, 0x39, 0x38, 0x37,
+ 0x31, 0x39, 0x38, 0x36, 0x31, 0x39, 0x38, 0x35, 0x31, 0x39, 0x38, 0x34, 0x31,
+ 0x39, 0x38, 0x33, 0x31, 0x39, 0x38, 0x32, 0x31, 0x39, 0x38, 0x31, 0x31, 0x39,
+ 0x38, 0x30, 0x31, 0x39, 0x37, 0x39, 0x31, 0x39, 0x37, 0x38, 0x31, 0x39, 0x37,
+ 0x37, 0x31, 0x39, 0x37, 0x36, 0x31, 0x39, 0x37, 0x35, 0x31, 0x39, 0x37, 0x34,
+ 0x31, 0x39, 0x37, 0x33, 0x31, 0x39, 0x37, 0x32, 0x31, 0x39, 0x37, 0x31, 0x31,
+ 0x39, 0x37, 0x30, 0x31, 0x39, 0x36, 0x39, 0x31, 0x39, 0x36, 0x38, 0x31, 0x39,
+ 0x36, 0x37, 0x31, 0x39, 0x36, 0x36, 0x31, 0x39, 0x36, 0x35, 0x31, 0x39, 0x36,
+ 0x34, 0x31, 0x39, 0x36, 0x33, 0x31, 0x39, 0x36, 0x32, 0x31, 0x39, 0x36, 0x31,
+ 0x31, 0x39, 0x36, 0x30, 0x31, 0x39, 0x35, 0x39, 0x31, 0x39, 0x35, 0x38, 0x31,
+ 0x39, 0x35, 0x37, 0x31, 0x39, 0x35, 0x36, 0x31, 0x39, 0x35, 0x35, 0x31, 0x39,
+ 0x35, 0x34, 0x31, 0x39, 0x35, 0x33, 0x31, 0x39, 0x35, 0x32, 0x31, 0x39, 0x35,
+ 0x31, 0x31, 0x39, 0x35, 0x30, 0x31, 0x30, 0x30, 0x30, 0x31, 0x30, 0x32, 0x34,
+ 0x31, 0x33, 0x39, 0x34, 0x30, 0x30, 0x30, 0x30, 0x39, 0x39, 0x39, 0x39, 0x63,
+ 0x6f, 0x6d, 0x6f, 0x6d, 0xc3, 0xa1, 0x73, 0x65, 0x73, 0x74, 0x65, 0x65, 0x73,
+ 0x74, 0x61, 0x70, 0x65, 0x72, 0x6f, 0x74, 0x6f, 0x64, 0x6f, 0x68, 0x61, 0x63,
+ 0x65, 0x63, 0x61, 0x64, 0x61, 0x61, 0xc3, 0xb1, 0x6f, 0x62, 0x69, 0x65, 0x6e,
+ 0x64, 0xc3, 0xad, 0x61, 0x61, 0x73, 0xc3, 0xad, 0x76, 0x69, 0x64, 0x61, 0x63,
+ 0x61, 0x73, 0x6f, 0x6f, 0x74, 0x72, 0x6f, 0x66, 0x6f, 0x72, 0x6f, 0x73, 0x6f,
+ 0x6c, 0x6f, 0x6f, 0x74, 0x72, 0x61, 0x63, 0x75, 0x61, 0x6c, 0x64, 0x69, 0x6a,
+ 0x6f, 0x73, 0x69, 0x64, 0x6f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x69, 0x70, 0x6f,
+ 0x74, 0x65, 0x6d, 0x61, 0x64, 0x65, 0x62, 0x65, 0x61, 0x6c, 0x67, 0x6f, 0x71,
+ 0x75, 0xc3, 0xa9, 0x65, 0x73, 0x74, 0x6f, 0x6e, 0x61, 0x64, 0x61, 0x74, 0x72,
+ 0x65, 0x73, 0x70, 0x6f, 0x63, 0x6f, 0x63, 0x61, 0x73, 0x61, 0x62, 0x61, 0x6a,
+ 0x6f, 0x74, 0x6f, 0x64, 0x61, 0x73, 0x69, 0x6e, 0x6f, 0x61, 0x67, 0x75, 0x61,
+ 0x70, 0x75, 0x65, 0x73, 0x75, 0x6e, 0x6f, 0x73, 0x61, 0x6e, 0x74, 0x65, 0x64,
+ 0x69, 0x63, 0x65, 0x6c, 0x75, 0x69, 0x73, 0x65, 0x6c, 0x6c, 0x61, 0x6d, 0x61,
+ 0x79, 0x6f, 0x7a, 0x6f, 0x6e, 0x61, 0x61, 0x6d, 0x6f, 0x72, 0x70, 0x69, 0x73,
+ 0x6f, 0x6f, 0x62, 0x72, 0x61, 0x63, 0x6c, 0x69, 0x63, 0x65, 0x6c, 0x6c, 0x6f,
+ 0x64, 0x69, 0x6f, 0x73, 0x68, 0x6f, 0x72, 0x61, 0x63, 0x61, 0x73, 0x69, 0xd0,
+ 0xb7, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xb0, 0xd0, 0xbe, 0xd0, 0xbc, 0xd1, 0x80,
+ 0xd0, 0xb0, 0xd1, 0x80, 0xd1, 0x83, 0xd1, 0x82, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0,
+ 0xb5, 0xd0, 0xbf, 0xd0, 0xbe, 0xd0, 0xbe, 0xd1, 0x82, 0xd0, 0xb8, 0xd0, 0xb7,
+ 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xbe, 0xd1, 0x82, 0xd0, 0xbe, 0xd0,
+ 0xb6, 0xd0, 0xb5, 0xd0, 0xbe, 0xd0, 0xbd, 0xd0, 0xb8, 0xd1, 0x85, 0xd0, 0x9d,
+ 0xd0, 0xb0, 0xd0, 0xb5, 0xd0, 0xb5, 0xd0, 0xb1, 0xd1, 0x8b, 0xd0, 0xbc, 0xd1,
+ 0x8b, 0xd0, 0x92, 0xd1, 0x8b, 0xd1, 0x81, 0xd0, 0xbe, 0xd0, 0xb2, 0xd1, 0x8b,
+ 0xd0, 0xb2, 0xd0, 0xbe, 0xd0, 0x9d, 0xd0, 0xbe, 0xd0, 0xbe, 0xd0, 0xb1, 0xd0,
+ 0x9f, 0xd0, 0xbe, 0xd0, 0xbb, 0xd0, 0xb8, 0xd0, 0xbd, 0xd0, 0xb8, 0xd0, 0xa0,
+ 0xd0, 0xa4, 0xd0, 0x9d, 0xd0, 0xb5, 0xd0, 0x9c, 0xd1, 0x8b, 0xd1, 0x82, 0xd1,
+ 0x8b, 0xd0, 0x9e, 0xd0, 0xbd, 0xd0, 0xb8, 0xd0, 0xbc, 0xd0, 0xb4, 0xd0, 0xb0,
+ 0xd0, 0x97, 0xd0, 0xb0, 0xd0, 0x94, 0xd0, 0xb0, 0xd0, 0x9d, 0xd1, 0x83, 0xd0,
+ 0x9e, 0xd0, 0xb1, 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0x98, 0xd0, 0xb7, 0xd0, 0xb5,
+ 0xd0, 0xb9, 0xd0, 0xbd, 0xd1, 0x83, 0xd0, 0xbc, 0xd0, 0xbc, 0xd0, 0xa2, 0xd1,
+ 0x8b, 0xd1, 0x83, 0xd0, 0xb6, 0xd9, 0x81, 0xd9, 0x8a, 0xd8, 0xa3, 0xd9, 0x86,
+ 0xd9, 0x85, 0xd8, 0xa7, 0xd9, 0x85, 0xd8, 0xb9, 0xd9, 0x83, 0xd9, 0x84, 0xd8,
+ 0xa3, 0xd9, 0x88, 0xd8, 0xb1, 0xd8, 0xaf, 0xd9, 0x8a, 0xd8, 0xa7, 0xd9, 0x81,
+ 0xd9, 0x89, 0xd9, 0x87, 0xd9, 0x88, 0xd9, 0x84, 0xd9, 0x85, 0xd9, 0x84, 0xd9,
+ 0x83, 0xd8, 0xa7, 0xd9, 0x88, 0xd9, 0x84, 0xd9, 0x87, 0xd8, 0xa8, 0xd8, 0xb3,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa5, 0xd9, 0x86, 0xd9, 0x87, 0xd9, 0x8a, 0xd8,
+ 0xa3, 0xd9, 0x8a, 0xd9, 0x82, 0xd8, 0xaf, 0xd9, 0x87, 0xd9, 0x84, 0xd8, 0xab,
+ 0xd9, 0x85, 0xd8, 0xa8, 0xd9, 0x87, 0xd9, 0x84, 0xd9, 0x88, 0xd9, 0x84, 0xd9,
+ 0x8a, 0xd8, 0xa8, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x8a, 0xd8, 0xa8, 0xd9, 0x83,
+ 0xd8, 0xb4, 0xd9, 0x8a, 0xd8, 0xa7, 0xd9, 0x85, 0xd8, 0xa3, 0xd9, 0x85, 0xd9,
+ 0x86, 0xd8, 0xaa, 0xd8, 0xa8, 0xd9, 0x8a, 0xd9, 0x84, 0xd9, 0x86, 0xd8, 0xad,
+ 0xd8, 0xa8, 0xd9, 0x87, 0xd9, 0x85, 0xd9, 0x85, 0xd8, 0xb4, 0xd9, 0x88, 0xd8,
+ 0xb4, 0x66, 0x69, 0x72, 0x73, 0x74, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x6c, 0x69,
+ 0x67, 0x68, 0x74, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x6d, 0x65, 0x64, 0x69, 0x61,
+ 0x77, 0x68, 0x69, 0x74, 0x65, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x62, 0x6c, 0x61,
+ 0x63, 0x6b, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x62,
+ 0x6f, 0x6f, 0x6b, 0x73, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x75, 0x73, 0x69,
+ 0x63, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6c,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x68, 0x6f, 0x75,
+ 0x73, 0x65, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x79,
+ 0x65, 0x61, 0x72, 0x73, 0x73, 0x74, 0x61, 0x74, 0x65, 0x74, 0x6f, 0x64, 0x61,
+ 0x79, 0x77, 0x61, 0x74, 0x65, 0x72, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x64, 0x65, 0x61, 0x74, 0x68, 0x70, 0x6f, 0x77, 0x65, 0x72,
+ 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x6e, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x74,
+ 0x65, 0x72, 0x6d, 0x73, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x74, 0x6f, 0x6f, 0x6c,
+ 0x73, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x74, 0x69,
+ 0x6d, 0x65, 0x73, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x77, 0x6f, 0x72, 0x64, 0x73,
+ 0x67, 0x61, 0x6d, 0x65, 0x73, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x6d,
+ 0x6f, 0x64, 0x65, 0x6c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x67, 0x75, 0x69, 0x64,
+ 0x65, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x77, 0x6f,
+ 0x6d, 0x65, 0x6e, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x6d, 0x6f, 0x6e, 0x65, 0x79,
+ 0x69, 0x6d, 0x61, 0x67, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x79, 0x6f, 0x75,
+ 0x6e, 0x67, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x66, 0x72, 0x6f, 0x6e,
+ 0x74, 0x26, 0x61, 0x6d, 0x70, 0x3b, 0x77, 0x61, 0x74, 0x63, 0x68, 0x66, 0x6f,
+ 0x72, 0x63, 0x65, 0x70, 0x72, 0x69, 0x63, 0x65, 0x72, 0x75, 0x6c, 0x65, 0x73,
+ 0x62, 0x65, 0x67, 0x69, 0x6e, 0x61, 0x66, 0x74, 0x65, 0x72, 0x76, 0x69, 0x73,
+ 0x69, 0x74, 0x69, 0x73, 0x73, 0x75, 0x65, 0x61, 0x72, 0x65, 0x61, 0x73, 0x62,
+ 0x65, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x74, 0x6f, 0x74, 0x61,
+ 0x6c, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x70, 0x72,
+ 0x69, 0x6e, 0x74, 0x70, 0x72, 0x65, 0x73, 0x73, 0x62, 0x75, 0x69, 0x6c, 0x74,
+ 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x73, 0x70, 0x65, 0x65, 0x64, 0x73, 0x74, 0x75,
+ 0x64, 0x79, 0x74, 0x72, 0x61, 0x64, 0x65, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x73,
+ 0x65, 0x6e, 0x73, 0x65, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x68, 0x6f, 0x77,
+ 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x61, 0x64,
+ 0x64, 0x65, 0x64, 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x74, 0x61, 0x6b, 0x65, 0x6e, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x66, 0x6c, 0x61,
+ 0x73, 0x68, 0x66, 0x69, 0x78, 0x65, 0x64, 0x6f, 0x66, 0x74, 0x65, 0x6e, 0x6f,
+ 0x74, 0x68, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x73, 0x63, 0x68, 0x65, 0x63,
+ 0x6b, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x72, 0x69, 0x76, 0x65, 0x72, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x73, 0x68, 0x61, 0x70, 0x65,
+ 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x65, 0x78, 0x69, 0x73, 0x74, 0x67, 0x6f, 0x69,
+ 0x6e, 0x67, 0x6d, 0x6f, 0x76, 0x69, 0x65, 0x74, 0x68, 0x69, 0x72, 0x64, 0x62,
+ 0x61, 0x73, 0x69, 0x63, 0x70, 0x65, 0x61, 0x63, 0x65, 0x73, 0x74, 0x61, 0x67,
+ 0x65, 0x77, 0x69, 0x64, 0x74, 0x68, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x69, 0x64,
+ 0x65, 0x61, 0x73, 0x77, 0x72, 0x6f, 0x74, 0x65, 0x70, 0x61, 0x67, 0x65, 0x73,
+ 0x75, 0x73, 0x65, 0x72, 0x73, 0x64, 0x72, 0x69, 0x76, 0x65, 0x73, 0x74, 0x6f,
+ 0x72, 0x65, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x76,
+ 0x6f, 0x69, 0x63, 0x65, 0x73, 0x69, 0x74, 0x65, 0x73, 0x6d, 0x6f, 0x6e, 0x74,
+ 0x68, 0x77, 0x68, 0x65, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x77, 0x68,
+ 0x69, 0x63, 0x68, 0x65, 0x61, 0x72, 0x74, 0x68, 0x66, 0x6f, 0x72, 0x75, 0x6d,
+ 0x74, 0x68, 0x72, 0x65, 0x65, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x70, 0x61, 0x72,
+ 0x74, 0x79, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x6c,
+ 0x69, 0x76, 0x65, 0x73, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6c, 0x61, 0x79, 0x65,
+ 0x72, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x75, 0x73,
+ 0x61, 0x67, 0x65, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x63, 0x6f, 0x75, 0x72, 0x74,
+ 0x79, 0x6f, 0x75, 0x72, 0x20, 0x62, 0x69, 0x72, 0x74, 0x68, 0x70, 0x6f, 0x70,
+ 0x75, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x49,
+ 0x6d, 0x61, 0x67, 0x65, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x75, 0x70, 0x70, 0x65,
+ 0x72, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x65, 0x76, 0x65, 0x72, 0x79, 0x73, 0x68,
+ 0x6f, 0x77, 0x73, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x65, 0x78, 0x74, 0x72, 0x61,
+ 0x6d, 0x61, 0x74, 0x63, 0x68, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x6b, 0x6e, 0x6f,
+ 0x77, 0x6e, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x62, 0x65, 0x67, 0x61, 0x6e, 0x73,
+ 0x75, 0x70, 0x65, 0x72, 0x70, 0x61, 0x70, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x74,
+ 0x68, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x6e, 0x61,
+ 0x6d, 0x65, 0x64, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x65, 0x72, 0x6d, 0x73,
+ 0x70, 0x61, 0x72, 0x74, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x62, 0x72, 0x61,
+ 0x6e, 0x64, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x77, 0x6f, 0x6d, 0x61, 0x6e, 0x66,
+ 0x61, 0x6c, 0x73, 0x65, 0x72, 0x65, 0x61, 0x64, 0x79, 0x61, 0x75, 0x64, 0x69,
+ 0x6f, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x64, 0x63, 0x61, 0x73, 0x65, 0x73,
+ 0x64, 0x61, 0x69, 0x6c, 0x79, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x67, 0x72, 0x65,
+ 0x61, 0x74, 0x6a, 0x75, 0x64, 0x67, 0x65, 0x74, 0x68, 0x6f, 0x73, 0x65, 0x75,
+ 0x6e, 0x69, 0x74, 0x73, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x62, 0x72, 0x6f, 0x61,
+ 0x64, 0x63, 0x6f, 0x61, 0x73, 0x74, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x70,
+ 0x70, 0x6c, 0x65, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x63, 0x79, 0x63, 0x6c, 0x65,
+ 0x73, 0x63, 0x65, 0x6e, 0x65, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x63, 0x6c, 0x69,
+ 0x63, 0x6b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x71, 0x75, 0x65, 0x65, 0x6e, 0x70,
+ 0x69, 0x65, 0x63, 0x65, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x66, 0x72, 0x61, 0x6d,
+ 0x65, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x6c, 0x69,
+ 0x6d, 0x69, 0x74, 0x63, 0x61, 0x63, 0x68, 0x65, 0x63, 0x69, 0x76, 0x69, 0x6c,
+ 0x73, 0x63, 0x61, 0x6c, 0x65, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x74, 0x68, 0x65,
+ 0x6d, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x62,
+ 0x6f, 0x75, 0x6e, 0x64, 0x72, 0x6f, 0x79, 0x61, 0x6c, 0x61, 0x73, 0x6b, 0x65,
+ 0x64, 0x77, 0x68, 0x6f, 0x6c, 0x65, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x73, 0x74,
+ 0x6f, 0x63, 0x6b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x66, 0x61, 0x69, 0x74, 0x68,
+ 0x68, 0x65, 0x61, 0x72, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x6f, 0x66, 0x66,
+ 0x65, 0x72, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x6f, 0x77, 0x6e, 0x65, 0x64, 0x6d,
+ 0x69, 0x67, 0x68, 0x74, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x74, 0x68, 0x69, 0x6e,
+ 0x6b, 0x62, 0x6c, 0x6f, 0x6f, 0x64, 0x61, 0x72, 0x72, 0x61, 0x79, 0x6d, 0x61,
+ 0x6a, 0x6f, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x63, 0x61, 0x6e, 0x6f, 0x6e,
+ 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x76, 0x61, 0x6c,
+ 0x69, 0x64, 0x73, 0x74, 0x6f, 0x6e, 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x4c,
+ 0x6f, 0x67, 0x69, 0x6e, 0x68, 0x61, 0x70, 0x70, 0x79, 0x6f, 0x63, 0x63, 0x75,
+ 0x72, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x66, 0x72, 0x65, 0x73, 0x68, 0x71, 0x75,
+ 0x69, 0x74, 0x65, 0x66, 0x69, 0x6c, 0x6d, 0x73, 0x67, 0x72, 0x61, 0x64, 0x65,
+ 0x6e, 0x65, 0x65, 0x64, 0x73, 0x75, 0x72, 0x62, 0x61, 0x6e, 0x66, 0x69, 0x67,
+ 0x68, 0x74, 0x62, 0x61, 0x73, 0x69, 0x73, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x61,
+ 0x75, 0x74, 0x6f, 0x3b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x68, 0x74, 0x6d,
+ 0x6c, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x59, 0x6f,
+ 0x75, 0x72, 0x20, 0x73, 0x6c, 0x69, 0x64, 0x65, 0x74, 0x6f, 0x70, 0x69, 0x63,
+ 0x62, 0x72, 0x6f, 0x77, 0x6e, 0x61, 0x6c, 0x6f, 0x6e, 0x65, 0x64, 0x72, 0x61,
+ 0x77, 0x6e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x72, 0x65, 0x61, 0x63, 0x68, 0x52,
+ 0x69, 0x67, 0x68, 0x74, 0x64, 0x61, 0x74, 0x65, 0x73, 0x6d, 0x61, 0x72, 0x63,
+ 0x68, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x67, 0x6f, 0x6f, 0x64, 0x73, 0x4c, 0x69,
+ 0x6e, 0x6b, 0x73, 0x64, 0x6f, 0x75, 0x62, 0x74, 0x61, 0x73, 0x79, 0x6e, 0x63,
+ 0x74, 0x68, 0x75, 0x6d, 0x62, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x63, 0x68, 0x69,
+ 0x65, 0x66, 0x79, 0x6f, 0x75, 0x74, 0x68, 0x6e, 0x6f, 0x76, 0x65, 0x6c, 0x31,
+ 0x30, 0x70, 0x78, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x75, 0x6e, 0x74, 0x69,
+ 0x6c, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x70,
+ 0x61, 0x63, 0x65, 0x71, 0x75, 0x65, 0x72, 0x79, 0x6a, 0x61, 0x6d, 0x65, 0x73,
+ 0x65, 0x71, 0x75, 0x61, 0x6c, 0x74, 0x77, 0x69, 0x63, 0x65, 0x30, 0x2c, 0x30,
+ 0x30, 0x30, 0x53, 0x74, 0x61, 0x72, 0x74, 0x70, 0x61, 0x6e, 0x65, 0x6c, 0x73,
+ 0x6f, 0x6e, 0x67, 0x73, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x73, 0x68, 0x69, 0x66, 0x74, 0x77, 0x6f, 0x72, 0x74, 0x68, 0x70, 0x6f,
+ 0x73, 0x74, 0x73, 0x6c, 0x65, 0x61, 0x64, 0x73, 0x77, 0x65, 0x65, 0x6b, 0x73,
+ 0x61, 0x76, 0x6f, 0x69, 0x64, 0x74, 0x68, 0x65, 0x73, 0x65, 0x6d, 0x69, 0x6c,
+ 0x65, 0x73, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x6d, 0x61, 0x72, 0x6b,
+ 0x73, 0x72, 0x61, 0x74, 0x65, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x73, 0x63, 0x6c,
+ 0x61, 0x69, 0x6d, 0x73, 0x61, 0x6c, 0x65, 0x73, 0x74, 0x65, 0x78, 0x74, 0x73,
+ 0x73, 0x74, 0x61, 0x72, 0x73, 0x77, 0x72, 0x6f, 0x6e, 0x67, 0x3c, 0x2f, 0x68,
+ 0x33, 0x3e, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6d,
+ 0x75, 0x6c, 0x74, 0x69, 0x68, 0x65, 0x61, 0x72, 0x64, 0x50, 0x6f, 0x77, 0x65,
+ 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x6f,
+ 0x6c, 0x69, 0x64, 0x28, 0x74, 0x68, 0x69, 0x73, 0x62, 0x72, 0x69, 0x6e, 0x67,
+ 0x73, 0x68, 0x69, 0x70, 0x73, 0x73, 0x74, 0x61, 0x66, 0x66, 0x74, 0x72, 0x69,
+ 0x65, 0x64, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x66,
+ 0x61, 0x63, 0x74, 0x73, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x69, 0x73,
+ 0x20, 0x2f, 0x2f, 0x2d, 0x2d, 0x3e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x65, 0x67,
+ 0x79, 0x70, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x31, 0x35, 0x70, 0x78, 0x3b,
+ 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x74, 0x72, 0x75, 0x65, 0x22, 0x63, 0x72, 0x6f,
+ 0x73, 0x73, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x62, 0x6c, 0x6f, 0x67, 0x73, 0x62,
+ 0x6f, 0x78, 0x22, 0x3e, 0x6e, 0x6f, 0x74, 0x65, 0x64, 0x6c, 0x65, 0x61, 0x76,
+ 0x65, 0x63, 0x68, 0x69, 0x6e, 0x61, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x67, 0x75,
+ 0x65, 0x73, 0x74, 0x3c, 0x2f, 0x68, 0x34, 0x3e, 0x72, 0x6f, 0x62, 0x6f, 0x74,
+ 0x68, 0x65, 0x61, 0x76, 0x79, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x73, 0x65, 0x76,
+ 0x65, 0x6e, 0x67, 0x72, 0x61, 0x6e, 0x64, 0x63, 0x72, 0x69, 0x6d, 0x65, 0x73,
+ 0x69, 0x67, 0x6e, 0x73, 0x61, 0x77, 0x61, 0x72, 0x65, 0x64, 0x61, 0x6e, 0x63,
+ 0x65, 0x70, 0x68, 0x61, 0x73, 0x65, 0x3e, 0x3c, 0x21, 0x2d, 0x2d, 0x65, 0x6e,
+ 0x5f, 0x55, 0x53, 0x26, 0x23, 0x33, 0x39, 0x3b, 0x32, 0x30, 0x30, 0x70, 0x78,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x65, 0x6e, 0x6a,
+ 0x6f, 0x79, 0x61, 0x6a, 0x61, 0x78, 0x2e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x6d, 0x69, 0x74, 0x68, 0x55, 0x2e, 0x53, 0x2e, 0x20, 0x68, 0x6f, 0x6c, 0x64,
+ 0x73, 0x70, 0x65, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61,
+ 0x76, 0x22, 0x3e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x63, 0x6f, 0x72, 0x65,
+ 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x64, 0x6f, 0x69, 0x6e, 0x67, 0x70, 0x72, 0x69,
+ 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x31, 0x39, 0x39, 0x30, 0x73, 0x72,
+ 0x6f, 0x6d, 0x61, 0x6e, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x6a, 0x61, 0x70, 0x61,
+ 0x6e, 0x66, 0x61, 0x6c, 0x6c, 0x73, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x6f, 0x77,
+ 0x6e, 0x65, 0x72, 0x61, 0x67, 0x72, 0x65, 0x65, 0x3c, 0x2f, 0x68, 0x32, 0x3e,
+ 0x61, 0x62, 0x75, 0x73, 0x65, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x6f, 0x70, 0x65,
+ 0x72, 0x61, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x63, 0x61, 0x72, 0x64, 0x73, 0x68,
+ 0x69, 0x6c, 0x6c, 0x73, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x50, 0x68, 0x6f, 0x74,
+ 0x6f, 0x74, 0x72, 0x75, 0x74, 0x68, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x2e, 0x70,
+ 0x68, 0x70, 0x3f, 0x73, 0x61, 0x69, 0x6e, 0x74, 0x6d, 0x65, 0x74, 0x61, 0x6c,
+ 0x6c, 0x6f, 0x75, 0x69, 0x73, 0x6d, 0x65, 0x61, 0x6e, 0x74, 0x70, 0x72, 0x6f,
+ 0x6f, 0x66, 0x62, 0x72, 0x69, 0x65, 0x66, 0x72, 0x6f, 0x77, 0x22, 0x3e, 0x67,
+ 0x65, 0x6e, 0x72, 0x65, 0x74, 0x72, 0x75, 0x63, 0x6b, 0x6c, 0x6f, 0x6f, 0x6b,
+ 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x6e,
+ 0x65, 0x74, 0x2f, 0x2d, 0x2d, 0x3e, 0x0a, 0x3c, 0x74, 0x72, 0x79, 0x20, 0x7b,
+ 0x0a, 0x76, 0x61, 0x72, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x63, 0x6f, 0x73,
+ 0x74, 0x73, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x61, 0x64, 0x75, 0x6c, 0x74, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x6c, 0x61, 0x62, 0x6f,
+ 0x72, 0x68, 0x65, 0x6c, 0x70, 0x73, 0x63, 0x61, 0x75, 0x73, 0x65, 0x6d, 0x61,
+ 0x67, 0x69, 0x63, 0x6d, 0x6f, 0x74, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x69, 0x72,
+ 0x32, 0x35, 0x30, 0x70, 0x78, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x73, 0x74, 0x65,
+ 0x70, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x67,
+ 0x6c, 0x61, 0x73, 0x73, 0x73, 0x69, 0x64, 0x65, 0x73, 0x66, 0x75, 0x6e, 0x64,
+ 0x73, 0x68, 0x6f, 0x74, 0x65, 0x6c, 0x61, 0x77, 0x61, 0x72, 0x64, 0x6d, 0x6f,
+ 0x75, 0x74, 0x68, 0x6d, 0x6f, 0x76, 0x65, 0x73, 0x70, 0x61, 0x72, 0x69, 0x73,
+ 0x67, 0x69, 0x76, 0x65, 0x73, 0x64, 0x75, 0x74, 0x63, 0x68, 0x74, 0x65, 0x78,
+ 0x61, 0x73, 0x66, 0x72, 0x75, 0x69, 0x74, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x7c,
+ 0x7c, 0x5b, 0x5d, 0x3b, 0x74, 0x6f, 0x70, 0x22, 0x3e, 0x0a, 0x3c, 0x21, 0x2d,
+ 0x2d, 0x50, 0x4f, 0x53, 0x54, 0x22, 0x6f, 0x63, 0x65, 0x61, 0x6e, 0x3c, 0x62,
+ 0x72, 0x2f, 0x3e, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x73, 0x70, 0x65, 0x61, 0x6b,
+ 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x62, 0x61, 0x6e,
+ 0x6b, 0x73, 0x63, 0x61, 0x74, 0x63, 0x68, 0x63, 0x68, 0x61, 0x72, 0x74, 0x32,
+ 0x30, 0x70, 0x78, 0x3b, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x64, 0x65, 0x61, 0x6c,
+ 0x73, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x35, 0x30, 0x70, 0x78, 0x3b, 0x75, 0x72,
+ 0x6c, 0x3d, 0x22, 0x70, 0x61, 0x72, 0x6b, 0x73, 0x6d, 0x6f, 0x75, 0x73, 0x65,
+ 0x4d, 0x6f, 0x73, 0x74, 0x20, 0x2e, 0x2e, 0x2e, 0x3c, 0x2f, 0x61, 0x6d, 0x6f,
+ 0x6e, 0x67, 0x62, 0x72, 0x61, 0x69, 0x6e, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x6e,
+ 0x6f, 0x6e, 0x65, 0x3b, 0x62, 0x61, 0x73, 0x65, 0x64, 0x63, 0x61, 0x72, 0x72,
+ 0x79, 0x64, 0x72, 0x61, 0x66, 0x74, 0x72, 0x65, 0x66, 0x65, 0x72, 0x70, 0x61,
+ 0x67, 0x65, 0x5f, 0x68, 0x6f, 0x6d, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x65, 0x72,
+ 0x64, 0x65, 0x6c, 0x61, 0x79, 0x64, 0x72, 0x65, 0x61, 0x6d, 0x70, 0x72, 0x6f,
+ 0x76, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x74, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x64,
+ 0x72, 0x75, 0x67, 0x73, 0x3c, 0x21, 0x2d, 0x2d, 0x20, 0x61, 0x70, 0x72, 0x69,
+ 0x6c, 0x69, 0x64, 0x65, 0x61, 0x6c, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x65, 0x78,
+ 0x61, 0x63, 0x74, 0x66, 0x6f, 0x72, 0x74, 0x68, 0x63, 0x6f, 0x64, 0x65, 0x73,
+ 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x56, 0x69, 0x65, 0x77, 0x20, 0x73, 0x65, 0x65,
+ 0x6d, 0x73, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x20,
+ 0x28, 0x32, 0x30, 0x30, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e,
+ 0x6b, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x67, 0x72,
+ 0x65, 0x65, 0x6b, 0x68, 0x6f, 0x6d, 0x65, 0x73, 0x72, 0x69, 0x6e, 0x67, 0x73,
+ 0x72, 0x61, 0x74, 0x65, 0x64, 0x33, 0x30, 0x70, 0x78, 0x3b, 0x77, 0x68, 0x6f,
+ 0x73, 0x65, 0x70, 0x61, 0x72, 0x73, 0x65, 0x28, 0x29, 0x3b, 0x22, 0x20, 0x42,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x6a, 0x6f, 0x6e, 0x65,
+ 0x73, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x27, 0x29, 0x3b, 0x22, 0x3e, 0x29, 0x3b,
+ 0x69, 0x66, 0x28, 0x2d, 0x6c, 0x65, 0x66, 0x74, 0x64, 0x61, 0x76, 0x69, 0x64,
+ 0x68, 0x6f, 0x72, 0x73, 0x65, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x72, 0x61, 0x69,
+ 0x73, 0x65, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x3c, 0x2f, 0x65, 0x6d, 0x3e, 0x62, 0x61, 0x72, 0x22,
+ 0x3e, 0x2e, 0x73, 0x72, 0x63, 0x3d, 0x74, 0x6f, 0x77, 0x65, 0x72, 0x61, 0x6c,
+ 0x74, 0x3d, 0x22, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x68, 0x65, 0x6e, 0x72, 0x79,
+ 0x32, 0x34, 0x70, 0x78, 0x3b, 0x73, 0x65, 0x74, 0x75, 0x70, 0x69, 0x74, 0x61,
+ 0x6c, 0x79, 0x73, 0x68, 0x61, 0x72, 0x70, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x74,
+ 0x61, 0x73, 0x74, 0x65, 0x77, 0x61, 0x6e, 0x74, 0x73, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x72, 0x65, 0x73, 0x65, 0x74, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x67, 0x69,
+ 0x72, 0x6c, 0x73, 0x2f, 0x63, 0x73, 0x73, 0x2f, 0x31, 0x30, 0x30, 0x25, 0x3b,
+ 0x63, 0x6c, 0x75, 0x62, 0x73, 0x73, 0x74, 0x75, 0x66, 0x66, 0x62, 0x69, 0x62,
+ 0x6c, 0x65, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x20, 0x31, 0x30, 0x30, 0x30, 0x6b,
+ 0x6f, 0x72, 0x65, 0x61, 0x7d, 0x29, 0x3b, 0x0d, 0x0a, 0x62, 0x61, 0x6e, 0x64,
+ 0x73, 0x71, 0x75, 0x65, 0x75, 0x65, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x38, 0x30,
+ 0x70, 0x78, 0x3b, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x7b, 0x0d, 0x0a, 0x09, 0x09,
+ 0x61, 0x68, 0x65, 0x61, 0x64, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x72, 0x69,
+ 0x73, 0x68, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x73,
+ 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x79, 0x61, 0x68, 0x6f,
+ 0x6f, 0x29, 0x5b, 0x30, 0x5d, 0x3b, 0x41, 0x62, 0x6f, 0x75, 0x74, 0x66, 0x69,
+ 0x6e, 0x64, 0x73, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x64, 0x65, 0x62, 0x75, 0x67,
+ 0x74, 0x61, 0x73, 0x6b, 0x73, 0x55, 0x52, 0x4c, 0x20, 0x3d, 0x63, 0x65, 0x6c,
+ 0x6c, 0x73, 0x7d, 0x29, 0x28, 0x29, 0x3b, 0x31, 0x32, 0x70, 0x78, 0x3b, 0x70,
+ 0x72, 0x69, 0x6d, 0x65, 0x74, 0x65, 0x6c, 0x6c, 0x73, 0x74, 0x75, 0x72, 0x6e,
+ 0x73, 0x30, 0x78, 0x36, 0x30, 0x30, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x73, 0x70,
+ 0x61, 0x69, 0x6e, 0x62, 0x65, 0x61, 0x63, 0x68, 0x74, 0x61, 0x78, 0x65, 0x73,
+ 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x2d, 0x2d, 0x3e,
+ 0x3c, 0x2f, 0x67, 0x69, 0x66, 0x74, 0x73, 0x73, 0x74, 0x65, 0x76, 0x65, 0x2d,
+ 0x6c, 0x69, 0x6e, 0x6b, 0x62, 0x6f, 0x64, 0x79, 0x2e, 0x7d, 0x29, 0x3b, 0x0a,
+ 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x28, 0x31, 0x39, 0x39, 0x46, 0x41,
+ 0x51, 0x3c, 0x2f, 0x72, 0x6f, 0x67, 0x65, 0x72, 0x66, 0x72, 0x61, 0x6e, 0x6b,
+ 0x43, 0x6c, 0x61, 0x73, 0x73, 0x32, 0x38, 0x70, 0x78, 0x3b, 0x66, 0x65, 0x65,
+ 0x64, 0x73, 0x3c, 0x68, 0x31, 0x3e, 0x3c, 0x73, 0x63, 0x6f, 0x74, 0x74, 0x74,
+ 0x65, 0x73, 0x74, 0x73, 0x32, 0x32, 0x70, 0x78, 0x3b, 0x64, 0x72, 0x69, 0x6e,
+ 0x6b, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x6c, 0x65, 0x77, 0x69, 0x73, 0x73, 0x68,
+ 0x61, 0x6c, 0x6c, 0x23, 0x30, 0x33, 0x39, 0x3b, 0x20, 0x66, 0x6f, 0x72, 0x20,
+ 0x6c, 0x6f, 0x76, 0x65, 0x64, 0x77, 0x61, 0x73, 0x74, 0x65, 0x30, 0x30, 0x70,
+ 0x78, 0x3b, 0x6a, 0x61, 0x3a, 0xe3, 0x82, 0x73, 0x69, 0x6d, 0x6f, 0x6e, 0x3c,
+ 0x66, 0x6f, 0x6e, 0x74, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x6d, 0x65, 0x65, 0x74,
+ 0x73, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x68, 0x65, 0x61, 0x70, 0x74, 0x69,
+ 0x67, 0x68, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x29, 0x20, 0x21, 0x3d, 0x20,
+ 0x64, 0x72, 0x65, 0x73, 0x73, 0x63, 0x6c, 0x69, 0x70, 0x73, 0x72, 0x6f, 0x6f,
+ 0x6d, 0x73, 0x6f, 0x6e, 0x6b, 0x65, 0x79, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x6d,
+ 0x61, 0x69, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x74,
+ 0x65, 0x66, 0x75, 0x6e, 0x6e, 0x79, 0x74, 0x72, 0x65, 0x65, 0x73, 0x63, 0x6f,
+ 0x6d, 0x2f, 0x22, 0x31, 0x2e, 0x6a, 0x70, 0x67, 0x77, 0x6d, 0x6f, 0x64, 0x65,
+ 0x70, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x6c, 0x65, 0x66,
+ 0x74, 0x20, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x2c, 0x20, 0x32, 0x30, 0x31, 0x29,
+ 0x3b, 0x0a, 0x7d, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x69, 0x72, 0x75,
+ 0x73, 0x63, 0x68, 0x61, 0x69, 0x72, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x77, 0x6f,
+ 0x72, 0x73, 0x74, 0x50, 0x61, 0x67, 0x65, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x70, 0x61, 0x74, 0x63, 0x68, 0x3c, 0x21, 0x2d, 0x2d, 0x0a, 0x6f, 0x2d, 0x63,
+ 0x61, 0x63, 0x66, 0x69, 0x72, 0x6d, 0x73, 0x74, 0x6f, 0x75, 0x72, 0x73, 0x2c,
+ 0x30, 0x30, 0x30, 0x20, 0x61, 0x73, 0x69, 0x61, 0x6e, 0x69, 0x2b, 0x2b, 0x29,
+ 0x7b, 0x61, 0x64, 0x6f, 0x62, 0x65, 0x27, 0x29, 0x5b, 0x30, 0x5d, 0x69, 0x64,
+ 0x3d, 0x31, 0x30, 0x62, 0x6f, 0x74, 0x68, 0x3b, 0x6d, 0x65, 0x6e, 0x75, 0x20,
+ 0x2e, 0x32, 0x2e, 0x6d, 0x69, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x6b, 0x65, 0x76,
+ 0x69, 0x6e, 0x63, 0x6f, 0x61, 0x63, 0x68, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x62,
+ 0x72, 0x75, 0x63, 0x65, 0x32, 0x2e, 0x6a, 0x70, 0x67, 0x55, 0x52, 0x4c, 0x29,
+ 0x2b, 0x2e, 0x6a, 0x70, 0x67, 0x7c, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x6c,
+ 0x69, 0x63, 0x65, 0x68, 0x61, 0x72, 0x72, 0x79, 0x31, 0x32, 0x30, 0x22, 0x20,
+ 0x73, 0x77, 0x65, 0x65, 0x74, 0x74, 0x72, 0x3e, 0x0d, 0x0a, 0x6e, 0x61, 0x6d,
+ 0x65, 0x3d, 0x64, 0x69, 0x65, 0x67, 0x6f, 0x70, 0x61, 0x67, 0x65, 0x20, 0x73,
+ 0x77, 0x69, 0x73, 0x73, 0x2d, 0x2d, 0x3e, 0x0a, 0x0a, 0x23, 0x66, 0x66, 0x66,
+ 0x3b, 0x22, 0x3e, 0x4c, 0x6f, 0x67, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0x74, 0x72,
+ 0x65, 0x61, 0x74, 0x73, 0x68, 0x65, 0x65, 0x74, 0x29, 0x20, 0x26, 0x26, 0x20,
+ 0x31, 0x34, 0x70, 0x78, 0x3b, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x6e, 0x74, 0x65,
+ 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x64, 0x6a, 0x61, 0x3a, 0xe3, 0x83, 0x69,
+ 0x64, 0x3d, 0x22, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x77, 0x6f, 0x72, 0x73,
+ 0x65, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x2d, 0x62, 0x6f, 0x78, 0x2d, 0x64, 0x65,
+ 0x6c, 0x74, 0x61, 0x0a, 0x26, 0x6c, 0x74, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x73,
+ 0x3a, 0x34, 0x38, 0x5a, 0x3c, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x72, 0x75, 0x72,
+ 0x61, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x62,
+ 0x61, 0x6b, 0x65, 0x72, 0x73, 0x68, 0x6f, 0x70, 0x73, 0x3d, 0x20, 0x22, 0x22,
+ 0x3b, 0x70, 0x68, 0x70, 0x22, 0x3e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x33,
+ 0x70, 0x78, 0x3b, 0x62, 0x72, 0x69, 0x61, 0x6e, 0x68, 0x65, 0x6c, 0x6c, 0x6f,
+ 0x73, 0x69, 0x7a, 0x65, 0x3d, 0x6f, 0x3d, 0x25, 0x32, 0x46, 0x20, 0x6a, 0x6f,
+ 0x69, 0x6e, 0x6d, 0x61, 0x79, 0x62, 0x65, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x69,
+ 0x6d, 0x67, 0x22, 0x3e, 0x2c, 0x20, 0x66, 0x6a, 0x73, 0x69, 0x6d, 0x67, 0x22,
+ 0x20, 0x22, 0x29, 0x5b, 0x30, 0x5d, 0x4d, 0x54, 0x6f, 0x70, 0x42, 0x54, 0x79,
+ 0x70, 0x65, 0x22, 0x6e, 0x65, 0x77, 0x6c, 0x79, 0x44, 0x61, 0x6e, 0x73, 0x6b,
+ 0x63, 0x7a, 0x65, 0x63, 0x68, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x6b, 0x6e, 0x6f,
+ 0x77, 0x73, 0x3c, 0x2f, 0x68, 0x35, 0x3e, 0x66, 0x61, 0x71, 0x22, 0x3e, 0x7a,
+ 0x68, 0x2d, 0x63, 0x6e, 0x31, 0x30, 0x29, 0x3b, 0x0a, 0x2d, 0x31, 0x22, 0x29,
+ 0x3b, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x74, 0x72,
+ 0x75, 0x6c, 0x79, 0x64, 0x61, 0x76, 0x69, 0x73, 0x2e, 0x6a, 0x73, 0x27, 0x3b,
+ 0x3e, 0x0d, 0x0a, 0x3c, 0x21, 0x73, 0x74, 0x65, 0x65, 0x6c, 0x20, 0x79, 0x6f,
+ 0x75, 0x20, 0x68, 0x32, 0x3e, 0x0d, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6a,
+ 0x65, 0x73, 0x75, 0x73, 0x31, 0x30, 0x30, 0x25, 0x20, 0x6d, 0x65, 0x6e, 0x75,
+ 0x2e, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x77, 0x61, 0x6c, 0x65, 0x73, 0x72, 0x69,
+ 0x73, 0x6b, 0x73, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x64, 0x64, 0x69, 0x6e, 0x67,
+ 0x62, 0x2d, 0x6c, 0x69, 0x6b, 0x74, 0x65, 0x61, 0x63, 0x68, 0x67, 0x69, 0x66,
+ 0x22, 0x20, 0x76, 0x65, 0x67, 0x61, 0x73, 0x64, 0x61, 0x6e, 0x73, 0x6b, 0x65,
+ 0x65, 0x73, 0x74, 0x69, 0x73, 0x68, 0x71, 0x69, 0x70, 0x73, 0x75, 0x6f, 0x6d,
+ 0x69, 0x73, 0x6f, 0x62, 0x72, 0x65, 0x64, 0x65, 0x73, 0x64, 0x65, 0x65, 0x6e,
+ 0x74, 0x72, 0x65, 0x74, 0x6f, 0x64, 0x6f, 0x73, 0x70, 0x75, 0x65, 0x64, 0x65,
+ 0x61, 0xc3, 0xb1, 0x6f, 0x73, 0x65, 0x73, 0x74, 0xc3, 0xa1, 0x74, 0x69, 0x65,
+ 0x6e, 0x65, 0x68, 0x61, 0x73, 0x74, 0x61, 0x6f, 0x74, 0x72, 0x6f, 0x73, 0x70,
+ 0x61, 0x72, 0x74, 0x65, 0x64, 0x6f, 0x6e, 0x64, 0x65, 0x6e, 0x75, 0x65, 0x76,
+ 0x6f, 0x68, 0x61, 0x63, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6d, 0x69,
+ 0x73, 0x6d, 0x6f, 0x6d, 0x65, 0x6a, 0x6f, 0x72, 0x6d, 0x75, 0x6e, 0x64, 0x6f,
+ 0x61, 0x71, 0x75, 0xc3, 0xad, 0x64, 0xc3, 0xad, 0x61, 0x73, 0x73, 0xc3, 0xb3,
+ 0x6c, 0x6f, 0x61, 0x79, 0x75, 0x64, 0x61, 0x66, 0x65, 0x63, 0x68, 0x61, 0x74,
+ 0x6f, 0x64, 0x61, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x6f, 0x6d, 0x65, 0x6e, 0x6f,
+ 0x73, 0x64, 0x61, 0x74, 0x6f, 0x73, 0x6f, 0x74, 0x72, 0x61, 0x73, 0x73, 0x69,
+ 0x74, 0x69, 0x6f, 0x6d, 0x75, 0x63, 0x68, 0x6f, 0x61, 0x68, 0x6f, 0x72, 0x61,
+ 0x6c, 0x75, 0x67, 0x61, 0x72, 0x6d, 0x61, 0x79, 0x6f, 0x72, 0x65, 0x73, 0x74,
+ 0x6f, 0x73, 0x68, 0x6f, 0x72, 0x61, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x61,
+ 0x6e, 0x74, 0x65, 0x73, 0x66, 0x6f, 0x74, 0x6f, 0x73, 0x65, 0x73, 0x74, 0x61,
+ 0x73, 0x70, 0x61, 0xc3, 0xad, 0x73, 0x6e, 0x75, 0x65, 0x76, 0x61, 0x73, 0x61,
+ 0x6c, 0x75, 0x64, 0x66, 0x6f, 0x72, 0x6f, 0x73, 0x6d, 0x65, 0x64, 0x69, 0x6f,
+ 0x71, 0x75, 0x69, 0x65, 0x6e, 0x6d, 0x65, 0x73, 0x65, 0x73, 0x70, 0x6f, 0x64,
+ 0x65, 0x72, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x73, 0x65, 0x72, 0xc3, 0xa1, 0x76,
+ 0x65, 0x63, 0x65, 0x73, 0x64, 0x65, 0x63, 0x69, 0x72, 0x6a, 0x6f, 0x73, 0xc3,
+ 0xa9, 0x65, 0x73, 0x74, 0x61, 0x72, 0x76, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x72,
+ 0x75, 0x70, 0x6f, 0x68, 0x65, 0x63, 0x68, 0x6f, 0x65, 0x6c, 0x6c, 0x6f, 0x73,
+ 0x74, 0x65, 0x6e, 0x67, 0x6f, 0x61, 0x6d, 0x69, 0x67, 0x6f, 0x63, 0x6f, 0x73,
+ 0x61, 0x73, 0x6e, 0x69, 0x76, 0x65, 0x6c, 0x67, 0x65, 0x6e, 0x74, 0x65, 0x6d,
+ 0x69, 0x73, 0x6d, 0x61, 0x61, 0x69, 0x72, 0x65, 0x73, 0x6a, 0x75, 0x6c, 0x69,
+ 0x6f, 0x74, 0x65, 0x6d, 0x61, 0x73, 0x68, 0x61, 0x63, 0x69, 0x61, 0x66, 0x61,
+ 0x76, 0x6f, 0x72, 0x6a, 0x75, 0x6e, 0x69, 0x6f, 0x6c, 0x69, 0x62, 0x72, 0x65,
+ 0x70, 0x75, 0x6e, 0x74, 0x6f, 0x62, 0x75, 0x65, 0x6e, 0x6f, 0x61, 0x75, 0x74,
+ 0x6f, 0x72, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x62, 0x75, 0x65, 0x6e, 0x61, 0x74,
+ 0x65, 0x78, 0x74, 0x6f, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x73, 0x61, 0x62, 0x65,
+ 0x72, 0x6c, 0x69, 0x73, 0x74, 0x61, 0x6c, 0x75, 0x65, 0x67, 0x6f, 0x63, 0xc3,
+ 0xb3, 0x6d, 0x6f, 0x65, 0x6e, 0x65, 0x72, 0x6f, 0x6a, 0x75, 0x65, 0x67, 0x6f,
+ 0x70, 0x65, 0x72, 0xc3, 0xba, 0x68, 0x61, 0x62, 0x65, 0x72, 0x65, 0x73, 0x74,
+ 0x6f, 0x79, 0x6e, 0x75, 0x6e, 0x63, 0x61, 0x6d, 0x75, 0x6a, 0x65, 0x72, 0x76,
+ 0x61, 0x6c, 0x6f, 0x72, 0x66, 0x75, 0x65, 0x72, 0x61, 0x6c, 0x69, 0x62, 0x72,
+ 0x6f, 0x67, 0x75, 0x73, 0x74, 0x61, 0x69, 0x67, 0x75, 0x61, 0x6c, 0x76, 0x6f,
+ 0x74, 0x6f, 0x73, 0x63, 0x61, 0x73, 0x6f, 0x73, 0x67, 0x75, 0xc3, 0xad, 0x61,
+ 0x70, 0x75, 0x65, 0x64, 0x6f, 0x73, 0x6f, 0x6d, 0x6f, 0x73, 0x61, 0x76, 0x69,
+ 0x73, 0x6f, 0x75, 0x73, 0x74, 0x65, 0x64, 0x64, 0x65, 0x62, 0x65, 0x6e, 0x6e,
+ 0x6f, 0x63, 0x68, 0x65, 0x62, 0x75, 0x73, 0x63, 0x61, 0x66, 0x61, 0x6c, 0x74,
+ 0x61, 0x65, 0x75, 0x72, 0x6f, 0x73, 0x73, 0x65, 0x72, 0x69, 0x65, 0x64, 0x69,
+ 0x63, 0x68, 0x6f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x63, 0x6c, 0x61, 0x76, 0x65,
+ 0x63, 0x61, 0x73, 0x61, 0x73, 0x6c, 0x65, 0xc3, 0xb3, 0x6e, 0x70, 0x6c, 0x61,
+ 0x7a, 0x6f, 0x6c, 0x61, 0x72, 0x67, 0x6f, 0x6f, 0x62, 0x72, 0x61, 0x73, 0x76,
+ 0x69, 0x73, 0x74, 0x61, 0x61, 0x70, 0x6f, 0x79, 0x6f, 0x6a, 0x75, 0x6e, 0x74,
+ 0x6f, 0x74, 0x72, 0x61, 0x74, 0x61, 0x76, 0x69, 0x73, 0x74, 0x6f, 0x63, 0x72,
+ 0x65, 0x61, 0x72, 0x63, 0x61, 0x6d, 0x70, 0x6f, 0x68, 0x65, 0x6d, 0x6f, 0x73,
+ 0x63, 0x69, 0x6e, 0x63, 0x6f, 0x63, 0x61, 0x72, 0x67, 0x6f, 0x70, 0x69, 0x73,
+ 0x6f, 0x73, 0x6f, 0x72, 0x64, 0x65, 0x6e, 0x68, 0x61, 0x63, 0x65, 0x6e, 0xc3,
+ 0xa1, 0x72, 0x65, 0x61, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x72,
+ 0x6f, 0x63, 0x65, 0x72, 0x63, 0x61, 0x70, 0x75, 0x65, 0x64, 0x61, 0x70, 0x61,
+ 0x70, 0x65, 0x6c, 0x6d, 0x65, 0x6e, 0x6f, 0x72, 0xc3, 0xba, 0x74, 0x69, 0x6c,
+ 0x63, 0x6c, 0x61, 0x72, 0x6f, 0x6a, 0x6f, 0x72, 0x67, 0x65, 0x63, 0x61, 0x6c,
+ 0x6c, 0x65, 0x70, 0x6f, 0x6e, 0x65, 0x72, 0x74, 0x61, 0x72, 0x64, 0x65, 0x6e,
+ 0x61, 0x64, 0x69, 0x65, 0x6d, 0x61, 0x72, 0x63, 0x61, 0x73, 0x69, 0x67, 0x75,
+ 0x65, 0x65, 0x6c, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6c, 0x6f, 0x63, 0x6f,
+ 0x63, 0x68, 0x65, 0x6d, 0x6f, 0x74, 0x6f, 0x73, 0x6d, 0x61, 0x64, 0x72, 0x65,
+ 0x63, 0x6c, 0x61, 0x73, 0x65, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x6e, 0x69, 0xc3,
+ 0xb1, 0x6f, 0x71, 0x75, 0x65, 0x64, 0x61, 0x70, 0x61, 0x73, 0x61, 0x72, 0x62,
+ 0x61, 0x6e, 0x63, 0x6f, 0x68, 0x69, 0x6a, 0x6f, 0x73, 0x76, 0x69, 0x61, 0x6a,
+ 0x65, 0x70, 0x61, 0x62, 0x6c, 0x6f, 0xc3, 0xa9, 0x73, 0x74, 0x65, 0x76, 0x69,
+ 0x65, 0x6e, 0x65, 0x72, 0x65, 0x69, 0x6e, 0x6f, 0x64, 0x65, 0x6a, 0x61, 0x72,
+ 0x66, 0x6f, 0x6e, 0x64, 0x6f, 0x63, 0x61, 0x6e, 0x61, 0x6c, 0x6e, 0x6f, 0x72,
+ 0x74, 0x65, 0x6c, 0x65, 0x74, 0x72, 0x61, 0x63, 0x61, 0x75, 0x73, 0x61, 0x74,
+ 0x6f, 0x6d, 0x61, 0x72, 0x6d, 0x61, 0x6e, 0x6f, 0x73, 0x6c, 0x75, 0x6e, 0x65,
+ 0x73, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x76, 0x69, 0x6c, 0x6c, 0x61, 0x76, 0x65,
+ 0x6e, 0x64, 0x6f, 0x70, 0x65, 0x73, 0x61, 0x72, 0x74, 0x69, 0x70, 0x6f, 0x73,
+ 0x74, 0x65, 0x6e, 0x67, 0x61, 0x6d, 0x61, 0x72, 0x63, 0x6f, 0x6c, 0x6c, 0x65,
+ 0x76, 0x61, 0x70, 0x61, 0x64, 0x72, 0x65, 0x75, 0x6e, 0x69, 0x64, 0x6f, 0x76,
+ 0x61, 0x6d, 0x6f, 0x73, 0x7a, 0x6f, 0x6e, 0x61, 0x73, 0x61, 0x6d, 0x62, 0x6f,
+ 0x73, 0x62, 0x61, 0x6e, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x69, 0x61, 0x61, 0x62,
+ 0x75, 0x73, 0x6f, 0x6d, 0x75, 0x63, 0x68, 0x61, 0x73, 0x75, 0x62, 0x69, 0x72,
+ 0x72, 0x69, 0x6f, 0x6a, 0x61, 0x76, 0x69, 0x76, 0x69, 0x72, 0x67, 0x72, 0x61,
+ 0x64, 0x6f, 0x63, 0x68, 0x69, 0x63, 0x61, 0x61, 0x6c, 0x6c, 0xc3, 0xad, 0x6a,
+ 0x6f, 0x76, 0x65, 0x6e, 0x64, 0x69, 0x63, 0x68, 0x61, 0x65, 0x73, 0x74, 0x61,
+ 0x6e, 0x74, 0x61, 0x6c, 0x65, 0x73, 0x73, 0x61, 0x6c, 0x69, 0x72, 0x73, 0x75,
+ 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x66, 0x69, 0x6e, 0x65, 0x73,
+ 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x62, 0x75, 0x73, 0x63, 0x6f, 0xc3, 0xa9, 0x73,
+ 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6e, 0x65, 0x67, 0x72, 0x6f, 0x70,
+ 0x6c, 0x61, 0x7a, 0x61, 0x68, 0x75, 0x6d, 0x6f, 0x72, 0x70, 0x61, 0x67, 0x61,
+ 0x72, 0x6a, 0x75, 0x6e, 0x74, 0x61, 0x64, 0x6f, 0x62, 0x6c, 0x65, 0x69, 0x73,
+ 0x6c, 0x61, 0x73, 0x62, 0x6f, 0x6c, 0x73, 0x61, 0x62, 0x61, 0xc3, 0xb1, 0x6f,
+ 0x68, 0x61, 0x62, 0x6c, 0x61, 0x6c, 0x75, 0x63, 0x68, 0x61, 0xc3, 0x81, 0x72,
+ 0x65, 0x61, 0x64, 0x69, 0x63, 0x65, 0x6e, 0x6a, 0x75, 0x67, 0x61, 0x72, 0x6e,
+ 0x6f, 0x74, 0x61, 0x73, 0x76, 0x61, 0x6c, 0x6c, 0x65, 0x61, 0x6c, 0x6c, 0xc3,
+ 0xa1, 0x63, 0x61, 0x72, 0x67, 0x61, 0x64, 0x6f, 0x6c, 0x6f, 0x72, 0x61, 0x62,
+ 0x61, 0x6a, 0x6f, 0x65, 0x73, 0x74, 0xc3, 0xa9, 0x67, 0x75, 0x73, 0x74, 0x6f,
+ 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x6d, 0x61, 0x72, 0x69, 0x6f, 0x66, 0x69, 0x72,
+ 0x6d, 0x61, 0x63, 0x6f, 0x73, 0x74, 0x6f, 0x66, 0x69, 0x63, 0x68, 0x61, 0x70,
+ 0x6c, 0x61, 0x74, 0x61, 0x68, 0x6f, 0x67, 0x61, 0x72, 0x61, 0x72, 0x74, 0x65,
+ 0x73, 0x6c, 0x65, 0x79, 0x65, 0x73, 0x61, 0x71, 0x75, 0x65, 0x6c, 0x6d, 0x75,
+ 0x73, 0x65, 0x6f, 0x62, 0x61, 0x73, 0x65, 0x73, 0x70, 0x6f, 0x63, 0x6f, 0x73,
+ 0x6d, 0x69, 0x74, 0x61, 0x64, 0x63, 0x69, 0x65, 0x6c, 0x6f, 0x63, 0x68, 0x69,
+ 0x63, 0x6f, 0x6d, 0x69, 0x65, 0x64, 0x6f, 0x67, 0x61, 0x6e, 0x61, 0x72, 0x73,
+ 0x61, 0x6e, 0x74, 0x6f, 0x65, 0x74, 0x61, 0x70, 0x61, 0x64, 0x65, 0x62, 0x65,
+ 0x73, 0x70, 0x6c, 0x61, 0x79, 0x61, 0x72, 0x65, 0x64, 0x65, 0x73, 0x73, 0x69,
+ 0x65, 0x74, 0x65, 0x63, 0x6f, 0x72, 0x74, 0x65, 0x63, 0x6f, 0x72, 0x65, 0x61,
+ 0x64, 0x75, 0x64, 0x61, 0x73, 0x64, 0x65, 0x73, 0x65, 0x6f, 0x76, 0x69, 0x65,
+ 0x6a, 0x6f, 0x64, 0x65, 0x73, 0x65, 0x61, 0x61, 0x67, 0x75, 0x61, 0x73, 0x26,
+ 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x76, 0x65,
+ 0x6e, 0x74, 0x73, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x73, 0x79, 0x73, 0x74,
+ 0x65, 0x6d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x61, 0x6e, 0x6e, 0x65,
+ 0x72, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x73, 0x63, 0x72, 0x6f, 0x6c, 0x6c,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x6d,
+ 0x65, 0x64, 0x69, 0x75, 0x6d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x75,
+ 0x6d, 0x62, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x73, 0x63, 0x72, 0x65,
+ 0x65, 0x6e, 0x63, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
+ 0x6c, 0x74, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73,
+ 0x70, 0x72, 0x69, 0x6e, 0x67, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x6d, 0x6f,
+ 0x62, 0x69, 0x6c, 0x65, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x70, 0x68, 0x6f,
+ 0x74, 0x6f, 0x73, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x72, 0x65, 0x67, 0x69,
+ 0x6f, 0x6e, 0x69, 0x74, 0x73, 0x65, 0x6c, 0x66, 0x73, 0x6f, 0x63, 0x69, 0x61,
+ 0x6c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
+ 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x74,
+ 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x65,
+ 0x6e, 0x67, 0x74, 0x68, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x66, 0x72, 0x69,
+ 0x65, 0x6e, 0x64, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x61, 0x75, 0x74, 0x68,
+ 0x6f, 0x72, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x65, 0x76, 0x69, 0x65,
+ 0x77, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x72, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+ 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x65,
+ 0x78, 0x70, 0x61, 0x6e, 0x64, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x66, 0x6f,
+ 0x72, 0x6d, 0x61, 0x74, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x73, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x70, 0x65, 0x72, 0x73,
+ 0x6f, 0x6e, 0x6c, 0x69, 0x76, 0x69, 0x6e, 0x67, 0x64, 0x65, 0x73, 0x69, 0x67,
+ 0x6e, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x73,
+ 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x70,
+ 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x65, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x6e, 0x61,
+ 0x74, 0x75, 0x72, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x66, 0x69, 0x67,
+ 0x75, 0x72, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x63, 0x75, 0x73, 0x74,
+ 0x6f, 0x6d, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x6c, 0x65, 0x74, 0x74, 0x65,
+ 0x72, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74,
+ 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x75,
+ 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x6d, 0x65,
+ 0x74, 0x68, 0x6f, 0x64, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x73, 0x63, 0x68,
+ 0x6f, 0x6f, 0x6c, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x73, 0x68, 0x61, 0x64,
+ 0x6f, 0x77, 0x64, 0x65, 0x62, 0x61, 0x74, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x73,
+ 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x6c, 0x65, 0x61, 0x67, 0x75, 0x65, 0x63,
+ 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6e, 0x6f,
+ 0x74, 0x69, 0x63, 0x65, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x72, 0x65, 0x70, 0x6f,
+ 0x72, 0x74, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x71, 0x75, 0x61, 0x72,
+ 0x65, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73,
+ 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x6d, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x6c,
+ 0x61, 0x74, 0x65, 0x73, 0x74, 0x77, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x46, 0x72,
+ 0x61, 0x6e, 0x63, 0x65, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x74, 0x72,
+ 0x6f, 0x6e, 0x67, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x4c, 0x6f, 0x6e, 0x64,
+ 0x6f, 0x6e, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x66, 0x6f, 0x72, 0x6d, 0x65,
+ 0x64, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65,
+ 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x70,
+ 0x6c, 0x61, 0x63, 0x65, 0x73, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x74,
+ 0x61, 0x74, 0x69, 0x63, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x73, 0x74, 0x72,
+ 0x65, 0x61, 0x6d, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x74, 0x74, 0x61,
+ 0x63, 0x6b, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x66, 0x6c, 0x69, 0x67, 0x68,
+ 0x74, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x3e,
+ 0x6f, 0x70, 0x65, 0x6e, 0x65, 0x64, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x76,
+ 0x61, 0x6c, 0x6c, 0x65, 0x79, 0x63, 0x61, 0x75, 0x73, 0x65, 0x73, 0x6c, 0x65,
+ 0x61, 0x64, 0x65, 0x72, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x65, 0x63,
+ 0x6f, 0x6e, 0x64, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x70, 0x6f, 0x72,
+ 0x74, 0x73, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6e,
+ 0x67, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73,
+ 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x73,
+ 0x74, 0x61, 0x74, 0x65, 0x73, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x65, 0x76, 0x69,
+ 0x73, 0x75, 0x61, 0x6c, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x76, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x6d, 0x75, 0x73, 0x65,
+ 0x75, 0x6d, 0x6d, 0x6f, 0x76, 0x69, 0x65, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e,
+ 0x74, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6d, 0x6f, 0x73, 0x74, 0x6c, 0x79,
+ 0x6d, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6d,
+ 0x61, 0x72, 0x6b, 0x65, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x63, 0x68,
+ 0x61, 0x6e, 0x63, 0x65, 0x73, 0x75, 0x72, 0x76, 0x65, 0x79, 0x62, 0x65, 0x66,
+ 0x6f, 0x72, 0x65, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x6d, 0x6f, 0x6d, 0x65,
+ 0x6e, 0x74, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x6d, 0x6f, 0x74, 0x69, 0x6f,
+ 0x6e, 0x69, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72,
+ 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x65,
+ 0x78, 0x69, 0x73, 0x74, 0x73, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x45, 0x75,
+ 0x72, 0x6f, 0x70, 0x65, 0x67, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x6c, 0x65, 0x67,
+ 0x61, 0x63, 0x79, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x65, 0x6e, 0x6f, 0x75,
+ 0x67, 0x68, 0x63, 0x61, 0x72, 0x65, 0x65, 0x72, 0x61, 0x6e, 0x73, 0x77, 0x65,
+ 0x72, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c,
+ 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72,
+ 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x74, 0x6f,
+ 0x70, 0x69, 0x63, 0x73, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x66, 0x61, 0x74,
+ 0x68, 0x65, 0x72, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x69, 0x6d, 0x70,
+ 0x6c, 0x79, 0x72, 0x61, 0x69, 0x73, 0x65, 0x64, 0x65, 0x73, 0x63, 0x61, 0x70,
+ 0x65, 0x63, 0x68, 0x6f, 0x73, 0x65, 0x6e, 0x63, 0x68, 0x75, 0x72, 0x63, 0x68,
+ 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x63,
+ 0x6f, 0x72, 0x6e, 0x65, 0x72, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x6d, 0x65,
+ 0x6d, 0x6f, 0x72, 0x79, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x4e, 0x75, 0x6d, 0x62,
+ 0x65, 0x72, 0x64, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x6f, 0x66, 0x66, 0x65, 0x72,
+ 0x73, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64,
+ 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x73,
+ 0x69, 0x6c, 0x76, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x64, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x62, 0x65, 0x74, 0x74, 0x65, 0x72, 0x62, 0x72, 0x6f,
+ 0x77, 0x73, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x47, 0x6c, 0x6f, 0x62,
+ 0x61, 0x6c, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x77, 0x69, 0x64, 0x67, 0x65,
+ 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74,
+ 0x6e, 0x6f, 0x77, 0x72, 0x61, 0x70, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x63,
+ 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x61,
+ 0x66, 0x65, 0x74, 0x79, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x70, 0x69,
+ 0x72, 0x69, 0x74, 0x2d, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x70, 0x72, 0x65,
+ 0x61, 0x64, 0x6d, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x6e, 0x65, 0x65, 0x64, 0x65,
+ 0x64, 0x72, 0x75, 0x73, 0x73, 0x69, 0x61, 0x70, 0x6c, 0x65, 0x61, 0x73, 0x65,
+ 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x62,
+ 0x72, 0x6f, 0x6b, 0x65, 0x6e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x63, 0x68,
+ 0x61, 0x72, 0x67, 0x65, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x66, 0x61, 0x63,
+ 0x74, 0x6f, 0x72, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x2d, 0x62, 0x61, 0x73,
+ 0x65, 0x64, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x79, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x64,
+ 0x68, 0x65, 0x6c, 0x70, 0x65, 0x64, 0x43, 0x68, 0x75, 0x72, 0x63, 0x68, 0x69,
+ 0x6d, 0x70, 0x61, 0x63, 0x74, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x61, 0x6c,
+ 0x77, 0x61, 0x79, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x22, 0x20, 0x62, 0x6f, 0x74,
+ 0x74, 0x6f, 0x6d, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x3e, 0x29, 0x7b, 0x76, 0x61,
+ 0x72, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x6f, 0x72, 0x61, 0x6e, 0x67,
+ 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x28,
+ 0x63, 0x6f, 0x75, 0x70, 0x6c, 0x65, 0x67, 0x61, 0x72, 0x64, 0x65, 0x6e, 0x62,
+ 0x72, 0x69, 0x64, 0x67, 0x65, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x52, 0x65,
+ 0x76, 0x69, 0x65, 0x77, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x69, 0x73,
+ 0x69, 0x6f, 0x6e, 0x6c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x61, 0x74, 0x69,
+ 0x6e, 0x67, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x62, 0x65, 0x61, 0x75, 0x74,
+ 0x79, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x66, 0x6f, 0x72, 0x67, 0x6f, 0x74,
+ 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x61,
+ 0x6c, 0x6d, 0x6f, 0x73, 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x74, 0x72,
+ 0x69, 0x6e, 0x67, 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x62, 0x69,
+ 0x6c, 0x65, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6c,
+ 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73,
+ 0x76, 0x69, 0x65, 0x77, 0x65, 0x64, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x63,
+ 0x6f, 0x75, 0x72, 0x73, 0x65, 0x41, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x69, 0x73,
+ 0x6c, 0x61, 0x6e, 0x64, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x63, 0x6f, 0x6f,
+ 0x6b, 0x69, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x6d, 0x61, 0x7a,
+ 0x6f, 0x6e, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x6e, 0x61, 0x64, 0x76, 0x69, 0x63,
+ 0x65, 0x69, 0x6e, 0x3c, 0x2f, 0x61, 0x3e, 0x3a, 0x20, 0x54, 0x68, 0x65, 0x20,
+ 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x42,
+ 0x45, 0x47, 0x49, 0x4e, 0x20, 0x4d, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x73, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x65, 0x68, 0x65, 0x69,
+ 0x67, 0x68, 0x74, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x73, 0x6c, 0x61,
+ 0x6e, 0x64, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x45, 0x6d, 0x70, 0x69, 0x72,
+ 0x65, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x65, 0x66, 0x66, 0x6f, 0x72, 0x74,
+ 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x6d,
+ 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x2e, 0x0a,
+ 0x0a, 0x4f, 0x6e, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x6d, 0x65, 0x6e,
+ 0x75, 0x22, 0x3e, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x61, 0x77, 0x61, 0x72,
+ 0x64, 0x73, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x69, 0x6d, 0x70, 0x6f, 0x72,
+ 0x74, 0x4f, 0x66, 0x66, 0x69, 0x63, 0x65, 0x72, 0x65, 0x67, 0x61, 0x72, 0x64,
+ 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
+ 0x70, 0x6f, 0x72, 0x74, 0x73, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x77, 0x65,
+ 0x65, 0x6b, 0x6c, 0x79, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x62, 0x65, 0x68,
+ 0x69, 0x6e, 0x64, 0x64, 0x6f, 0x63, 0x74, 0x6f, 0x72, 0x6c, 0x6f, 0x67, 0x67,
+ 0x65, 0x64, 0x75, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x3c, 0x2f, 0x62, 0x3e, 0x3c,
+ 0x2f, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x73, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73,
+ 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69,
+ 0x73, 0x73, 0x75, 0x65, 0x64, 0x33, 0x30, 0x30, 0x70, 0x78, 0x7c, 0x63, 0x61,
+ 0x6e, 0x61, 0x64, 0x61, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x73, 0x63, 0x68,
+ 0x65, 0x6d, 0x65, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x72, 0x61, 0x7a,
+ 0x69, 0x6c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x6c, 0x6f, 0x67, 0x6f, 0x22,
+ 0x3e, 0x62, 0x65, 0x79, 0x6f, 0x6e, 0x64, 0x2d, 0x73, 0x63, 0x61, 0x6c, 0x65,
+ 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x6d,
+ 0x61, 0x72, 0x69, 0x6e, 0x65, 0x46, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x63, 0x61,
+ 0x6d, 0x65, 0x72, 0x61, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x0a, 0x5f, 0x66, 0x6f,
+ 0x72, 0x6d, 0x22, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x73, 0x74, 0x72, 0x65,
+ 0x73, 0x73, 0x22, 0x20, 0x2f, 0x3e, 0x0d, 0x0a, 0x2e, 0x67, 0x69, 0x66, 0x22,
+ 0x20, 0x6f, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72,
+ 0x4f, 0x78, 0x66, 0x6f, 0x72, 0x64, 0x73, 0x69, 0x73, 0x74, 0x65, 0x72, 0x73,
+ 0x75, 0x72, 0x76, 0x69, 0x76, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x66, 0x65,
+ 0x6d, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x73, 0x69, 0x7a,
+ 0x65, 0x3d, 0x22, 0x61, 0x70, 0x70, 0x65, 0x61, 0x6c, 0x74, 0x65, 0x78, 0x74,
+ 0x22, 0x3e, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x74, 0x68, 0x61, 0x6e, 0x6b,
+ 0x73, 0x68, 0x69, 0x67, 0x68, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64,
+ 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x61, 0x6e, 0x79, 0x6f, 0x6e, 0x65, 0x41,
+ 0x66, 0x72, 0x69, 0x63, 0x61, 0x61, 0x67, 0x72, 0x65, 0x65, 0x64, 0x72, 0x65,
+ 0x63, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x3c, 0x62, 0x72,
+ 0x20, 0x2f, 0x3e, 0x77, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x70, 0x72, 0x69, 0x63,
+ 0x65, 0x73, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x7c, 0x7c, 0x20, 0x7b, 0x7d,
+ 0x3b, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x3e, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
+ 0x73, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x77, 0x72, 0x61, 0x70, 0x22, 0x3e, 0x66,
+ 0x61, 0x69, 0x6c, 0x65, 0x64, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x6d, 0x69,
+ 0x6e, 0x75, 0x74, 0x65, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x71, 0x75, 0x6f,
+ 0x74, 0x65, 0x73, 0x31, 0x35, 0x30, 0x70, 0x78, 0x7c, 0x65, 0x73, 0x74, 0x61,
+ 0x74, 0x65, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x65, 0x6d, 0x61, 0x69, 0x6c,
+ 0x22, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3b,
+ 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x31,
+ 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x70, 0x72,
+ 0x69, 0x6e, 0x63, 0x65, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x2e, 0x70, 0x6e,
+ 0x67, 0x22, 0x20, 0x66, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x65,
+ 0x73, 0x73, 0x70, 0x61, 0x70, 0x65, 0x72, 0x73, 0x73, 0x6f, 0x75, 0x6e, 0x64,
+ 0x73, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x73, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x55, 0x54, 0x46, 0x2d, 0x38, 0x22, 0x26,
+ 0x61, 0x6d, 0x70, 0x3b, 0x20, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x2e, 0x20,
+ 0x57, 0x69, 0x74, 0x68, 0x73, 0x74, 0x75, 0x64, 0x69, 0x6f, 0x6f, 0x77, 0x6e,
+ 0x65, 0x72, 0x73, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x70, 0x72, 0x6f, 0x66,
+ 0x69, 0x74, 0x6a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x61, 0x6e, 0x6e, 0x75, 0x61,
+ 0x6c, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x62, 0x6f, 0x75, 0x67, 0x68, 0x74,
+ 0x66, 0x61, 0x6d, 0x6f, 0x75, 0x73, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x6c,
+ 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x69, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x69, 0x73,
+ 0x72, 0x61, 0x65, 0x6c, 0x73, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x64, 0x65, 0x63,
+ 0x69, 0x64, 0x65, 0x68, 0x6f, 0x6d, 0x65, 0x22, 0x3e, 0x68, 0x65, 0x61, 0x64,
+ 0x65, 0x72, 0x65, 0x6e, 0x73, 0x75, 0x72, 0x65, 0x62, 0x72, 0x61, 0x6e, 0x63,
+ 0x68, 0x70, 0x69, 0x65, 0x63, 0x65, 0x73, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3b,
+ 0x73, 0x74, 0x61, 0x74, 0x65, 0x64, 0x74, 0x6f, 0x70, 0x22, 0x3e, 0x3c, 0x72,
+ 0x61, 0x63, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x2d, 0x2d,
+ 0x26, 0x67, 0x74, 0x3b, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x73, 0x65, 0x78,
+ 0x75, 0x61, 0x6c, 0x62, 0x75, 0x72, 0x65, 0x61, 0x75, 0x2e, 0x6a, 0x70, 0x67,
+ 0x22, 0x20, 0x31, 0x30, 0x2c, 0x30, 0x30, 0x30, 0x6f, 0x62, 0x74, 0x61, 0x69,
+ 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x73, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
+ 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x63, 0x6f, 0x6d, 0x65, 0x64, 0x79, 0x6d,
+ 0x65, 0x6e, 0x75, 0x22, 0x20, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x73, 0x74, 0x6f,
+ 0x64, 0x61, 0x79, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x65, 0x64, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x79, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x46, 0x61, 0x6d, 0x69,
+ 0x6c, 0x79, 0x6c, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x4d, 0x61, 0x72, 0x6b, 0x65,
+ 0x74, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
+ 0x74, 0x75, 0x72, 0x6b, 0x65, 0x79, 0x29, 0x3b, 0x76, 0x61, 0x72, 0x20, 0x66,
+ 0x6f, 0x72, 0x65, 0x73, 0x74, 0x67, 0x69, 0x76, 0x69, 0x6e, 0x67, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x73, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x65, 0x6c,
+ 0x73, 0x65, 0x7b, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x42, 0x6c, 0x6f, 0x67,
+ 0x3c, 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e,
+ 0x2e, 0x66, 0x61, 0x73, 0x74, 0x65, 0x72, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73,
+ 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x31, 0x30, 0x70, 0x78, 0x20, 0x30, 0x70,
+ 0x72, 0x61, 0x67, 0x6d, 0x61, 0x66, 0x72, 0x69, 0x64, 0x61, 0x79, 0x6a, 0x75,
+ 0x6e, 0x69, 0x6f, 0x72, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x70, 0x6c, 0x61,
+ 0x63, 0x65, 0x64, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x70, 0x6c, 0x75, 0x67,
+ 0x69, 0x6e, 0x35, 0x2c, 0x30, 0x30, 0x30, 0x20, 0x70, 0x61, 0x67, 0x65, 0x22,
+ 0x3e, 0x62, 0x6f, 0x73, 0x74, 0x6f, 0x6e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x28,
+ 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x66, 0x6f, 0x72, 0x75, 0x6d, 0x73, 0x73, 0x63,
+ 0x68, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x66, 0x69, 0x6c,
+ 0x6c, 0x65, 0x64, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x72, 0x65, 0x61, 0x64,
+ 0x65, 0x72, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x28, 0x61, 0x70, 0x70, 0x65, 0x61,
+ 0x72, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0x3e,
+ 0x62, 0x6f, 0x64, 0x79, 0x22, 0x3e, 0x0a, 0x2a, 0x20, 0x54, 0x68, 0x65, 0x54,
+ 0x68, 0x6f, 0x75, 0x67, 0x68, 0x73, 0x65, 0x65, 0x69, 0x6e, 0x67, 0x6a, 0x65,
+ 0x72, 0x73, 0x65, 0x79, 0x4e, 0x65, 0x77, 0x73, 0x3c, 0x2f, 0x76, 0x65, 0x72,
+ 0x69, 0x66, 0x79, 0x65, 0x78, 0x70, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x6a, 0x75,
+ 0x72, 0x79, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x43, 0x6f, 0x6f, 0x6b, 0x69,
+ 0x65, 0x53, 0x54, 0x41, 0x52, 0x54, 0x20, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73,
+ 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x6e,
+ 0x61, 0x74, 0x69, 0x76, 0x65, 0x70, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x62, 0x6f,
+ 0x78, 0x22, 0x3e, 0x0a, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x44, 0x61,
+ 0x76, 0x69, 0x64, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x74, 0x61, 0x62, 0x6c,
+ 0x65, 0x73, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x41, 0x70, 0x72, 0x69, 0x6c,
+ 0x20, 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72,
+ 0x69, 0x74, 0x65, 0x6d, 0x22, 0x3e, 0x6d, 0x6f, 0x72, 0x65, 0x22, 0x3e, 0x62,
+ 0x6f, 0x61, 0x72, 0x64, 0x73, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x63, 0x61,
+ 0x6d, 0x70, 0x75, 0x73, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x7c, 0x7c, 0x20,
+ 0x5b, 0x5d, 0x3b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x2e, 0x67, 0x75, 0x69, 0x74,
+ 0x61, 0x72, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x77, 0x69, 0x64, 0x74, 0x68,
+ 0x3a, 0x73, 0x68, 0x6f, 0x77, 0x65, 0x64, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x20,
+ 0x2e, 0x70, 0x68, 0x70, 0x22, 0x20, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x6c,
+ 0x61, 0x79, 0x65, 0x72, 0x73, 0x77, 0x69, 0x6c, 0x73, 0x6f, 0x6e, 0x73, 0x74,
+ 0x6f, 0x72, 0x65, 0x73, 0x72, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x73, 0x77, 0x65,
+ 0x64, 0x65, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x61, 0x73, 0x69,
+ 0x6c, 0x79, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x53, 0x74, 0x72, 0x69, 0x6e,
+ 0x67, 0x0a, 0x0a, 0x57, 0x68, 0x69, 0x6c, 0x74, 0x61, 0x79, 0x6c, 0x6f, 0x72,
+ 0x63, 0x6c, 0x65, 0x61, 0x72, 0x3a, 0x72, 0x65, 0x73, 0x6f, 0x72, 0x74, 0x66,
+ 0x72, 0x65, 0x6e, 0x63, 0x68, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x22, 0x29,
+ 0x20, 0x2b, 0x20, 0x22, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x62, 0x75, 0x79,
+ 0x69, 0x6e, 0x67, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x4d, 0x65, 0x6d, 0x62,
+ 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3e, 0x6f, 0x70, 0x70, 0x69, 0x6e,
+ 0x67, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x35, 0x70, 0x78, 0x3b, 0x22, 0x3e,
+ 0x76, 0x73, 0x70, 0x61, 0x63, 0x65, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x6d,
+ 0x61, 0x6a, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x66, 0x66, 0x65, 0x65, 0x6d, 0x61,
+ 0x72, 0x74, 0x69, 0x6e, 0x6d, 0x61, 0x74, 0x75, 0x72, 0x65, 0x68, 0x61, 0x70,
+ 0x70, 0x65, 0x6e, 0x3c, 0x2f, 0x6e, 0x61, 0x76, 0x3e, 0x6b, 0x61, 0x6e, 0x73,
+ 0x61, 0x73, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x3e, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x73, 0x3d, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20,
+ 0x68, 0x73, 0x70, 0x61, 0x63, 0x65, 0x30, 0x26, 0x61, 0x6d, 0x70, 0x3b, 0x20,
+ 0x0a, 0x0a, 0x49, 0x6e, 0x20, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x50, 0x6f,
+ 0x6c, 0x73, 0x6b, 0x69, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x6a, 0x6f, 0x72,
+ 0x64, 0x61, 0x6e, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x72,
+ 0x74, 0x20, 0x2d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0x2e, 0x68, 0x74, 0x6d,
+ 0x6c, 0x6e, 0x65, 0x77, 0x73, 0x22, 0x3e, 0x30, 0x31, 0x2e, 0x6a, 0x70, 0x67,
+ 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6d,
+ 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x73, 0x65, 0x6e, 0x69, 0x6f, 0x72, 0x49, 0x53,
+ 0x42, 0x4e, 0x20, 0x30, 0x30, 0x2c, 0x30, 0x30, 0x30, 0x20, 0x67, 0x75, 0x69,
+ 0x64, 0x65, 0x73, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x29, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x72, 0x65, 0x70, 0x61, 0x69, 0x72, 0x2e, 0x78, 0x6d, 0x6c, 0x22,
+ 0x20, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x68, 0x74, 0x6d, 0x6c,
+ 0x2d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x72, 0x65, 0x67, 0x45, 0x78, 0x70, 0x3a,
+ 0x68, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x76, 0x69,
+ 0x72, 0x67, 0x69, 0x6e, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x73, 0x3c, 0x2f, 0x74,
+ 0x72, 0x3e, 0x0d, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x0a, 0x09, 0x76, 0x61,
+ 0x72, 0x20, 0x3e, 0x27, 0x29, 0x3b, 0x0a, 0x09, 0x3c, 0x2f, 0x74, 0x64, 0x3e,
+ 0x0a, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x0a, 0x62, 0x61, 0x68, 0x61, 0x73, 0x61,
+ 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x67, 0x61, 0x6c, 0x65, 0x67, 0x6f, 0x6d,
+ 0x61, 0x67, 0x79, 0x61, 0x72, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x73, 0x72,
+ 0x70, 0x73, 0x6b, 0x69, 0xd8, 0xb1, 0xd8, 0xaf, 0xd9, 0x88, 0xe4, 0xb8, 0xad,
+ 0xe6, 0x96, 0x87, 0xe7, 0xae, 0x80, 0xe4, 0xbd, 0x93, 0xe7, 0xb9, 0x81, 0xe9,
+ 0xab, 0x94, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0xe4, 0xb8, 0xad, 0xe5, 0x9b,
+ 0xbd, 0xe6, 0x88, 0x91, 0xe4, 0xbb, 0xac, 0xe4, 0xb8, 0x80, 0xe4, 0xb8, 0xaa,
+ 0xe5, 0x85, 0xac, 0xe5, 0x8f, 0xb8, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0xe8,
+ 0xae, 0xba, 0xe5, 0x9d, 0x9b, 0xe5, 0x8f, 0xaf, 0xe4, 0xbb, 0xa5, 0xe6, 0x9c,
+ 0x8d, 0xe5, 0x8a, 0xa1, 0xe6, 0x97, 0xb6, 0xe9, 0x97, 0xb4, 0xe4, 0xb8, 0xaa,
+ 0xe4, 0xba, 0xba, 0xe4, 0xba, 0xa7, 0xe5, 0x93, 0x81, 0xe8, 0x87, 0xaa, 0xe5,
+ 0xb7, 0xb1, 0xe4, 0xbc, 0x81, 0xe4, 0xb8, 0x9a, 0xe6, 0x9f, 0xa5, 0xe7, 0x9c,
+ 0x8b, 0xe5, 0xb7, 0xa5, 0xe4, 0xbd, 0x9c, 0xe8, 0x81, 0x94, 0xe7, 0xb3, 0xbb,
+ 0xe6, 0xb2, 0xa1, 0xe6, 0x9c, 0x89, 0xe7, 0xbd, 0x91, 0xe7, 0xab, 0x99, 0xe6,
+ 0x89, 0x80, 0xe6, 0x9c, 0x89, 0xe8, 0xaf, 0x84, 0xe8, 0xae, 0xba, 0xe4, 0xb8,
+ 0xad, 0xe5, 0xbf, 0x83, 0xe6, 0x96, 0x87, 0xe7, 0xab, 0xa0, 0xe7, 0x94, 0xa8,
+ 0xe6, 0x88, 0xb7, 0xe9, 0xa6, 0x96, 0xe9, 0xa1, 0xb5, 0xe4, 0xbd, 0x9c, 0xe8,
+ 0x80, 0x85, 0xe6, 0x8a, 0x80, 0xe6, 0x9c, 0xaf, 0xe9, 0x97, 0xae, 0xe9, 0xa2,
+ 0x98, 0xe7, 0x9b, 0xb8, 0xe5, 0x85, 0xb3, 0xe4, 0xb8, 0x8b, 0xe8, 0xbd, 0xbd,
+ 0xe6, 0x90, 0x9c, 0xe7, 0xb4, 0xa2, 0xe4, 0xbd, 0xbf, 0xe7, 0x94, 0xa8, 0xe8,
+ 0xbd, 0xaf, 0xe4, 0xbb, 0xb6, 0xe5, 0x9c, 0xa8, 0xe7, 0xba, 0xbf, 0xe4, 0xb8,
+ 0xbb, 0xe9, 0xa2, 0x98, 0xe8, 0xb5, 0x84, 0xe6, 0x96, 0x99, 0xe8, 0xa7, 0x86,
+ 0xe9, 0xa2, 0x91, 0xe5, 0x9b, 0x9e, 0xe5, 0xa4, 0x8d, 0xe6, 0xb3, 0xa8, 0xe5,
+ 0x86, 0x8c, 0xe7, 0xbd, 0x91, 0xe7, 0xbb, 0x9c, 0xe6, 0x94, 0xb6, 0xe8, 0x97,
+ 0x8f, 0xe5, 0x86, 0x85, 0xe5, 0xae, 0xb9, 0xe6, 0x8e, 0xa8, 0xe8, 0x8d, 0x90,
+ 0xe5, 0xb8, 0x82, 0xe5, 0x9c, 0xba, 0xe6, 0xb6, 0x88, 0xe6, 0x81, 0xaf, 0xe7,
+ 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xe5, 0x8f, 0x91, 0xe5, 0xb8, 0x83, 0xe4, 0xbb,
+ 0x80, 0xe4, 0xb9, 0x88, 0xe5, 0xa5, 0xbd, 0xe5, 0x8f, 0x8b, 0xe7, 0x94, 0x9f,
+ 0xe6, 0xb4, 0xbb, 0xe5, 0x9b, 0xbe, 0xe7, 0x89, 0x87, 0xe5, 0x8f, 0x91, 0xe5,
+ 0xb1, 0x95, 0xe5, 0xa6, 0x82, 0xe6, 0x9e, 0x9c, 0xe6, 0x89, 0x8b, 0xe6, 0x9c,
+ 0xba, 0xe6, 0x96, 0xb0, 0xe9, 0x97, 0xbb, 0xe6, 0x9c, 0x80, 0xe6, 0x96, 0xb0,
+ 0xe6, 0x96, 0xb9, 0xe5, 0xbc, 0x8f, 0xe5, 0x8c, 0x97, 0xe4, 0xba, 0xac, 0xe6,
+ 0x8f, 0x90, 0xe4, 0xbe, 0x9b, 0xe5, 0x85, 0xb3, 0xe4, 0xba, 0x8e, 0xe6, 0x9b,
+ 0xb4, 0xe5, 0xa4, 0x9a, 0xe8, 0xbf, 0x99, 0xe4, 0xb8, 0xaa, 0xe7, 0xb3, 0xbb,
+ 0xe7, 0xbb, 0x9f, 0xe7, 0x9f, 0xa5, 0xe9, 0x81, 0x93, 0xe6, 0xb8, 0xb8, 0xe6,
+ 0x88, 0x8f, 0xe5, 0xb9, 0xbf, 0xe5, 0x91, 0x8a, 0xe5, 0x85, 0xb6, 0xe4, 0xbb,
+ 0x96, 0xe5, 0x8f, 0x91, 0xe8, 0xa1, 0xa8, 0xe5, 0xae, 0x89, 0xe5, 0x85, 0xa8,
+ 0xe7, 0xac, 0xac, 0xe4, 0xb8, 0x80, 0xe4, 0xbc, 0x9a, 0xe5, 0x91, 0x98, 0xe8,
+ 0xbf, 0x9b, 0xe8, 0xa1, 0x8c, 0xe7, 0x82, 0xb9, 0xe5, 0x87, 0xbb, 0xe7, 0x89,
+ 0x88, 0xe6, 0x9d, 0x83, 0xe7, 0x94, 0xb5, 0xe5, 0xad, 0x90, 0xe4, 0xb8, 0x96,
+ 0xe7, 0x95, 0x8c, 0xe8, 0xae, 0xbe, 0xe8, 0xae, 0xa1, 0xe5, 0x85, 0x8d, 0xe8,
+ 0xb4, 0xb9, 0xe6, 0x95, 0x99, 0xe8, 0x82, 0xb2, 0xe5, 0x8a, 0xa0, 0xe5, 0x85,
+ 0xa5, 0xe6, 0xb4, 0xbb, 0xe5, 0x8a, 0xa8, 0xe4, 0xbb, 0x96, 0xe4, 0xbb, 0xac,
+ 0xe5, 0x95, 0x86, 0xe5, 0x93, 0x81, 0xe5, 0x8d, 0x9a, 0xe5, 0xae, 0xa2, 0xe7,
+ 0x8e, 0xb0, 0xe5, 0x9c, 0xa8, 0xe4, 0xb8, 0x8a, 0xe6, 0xb5, 0xb7, 0xe5, 0xa6,
+ 0x82, 0xe4, 0xbd, 0x95, 0xe5, 0xb7, 0xb2, 0xe7, 0xbb, 0x8f, 0xe7, 0x95, 0x99,
+ 0xe8, 0xa8, 0x80, 0xe8, 0xaf, 0xa6, 0xe7, 0xbb, 0x86, 0xe7, 0xa4, 0xbe, 0xe5,
+ 0x8c, 0xba, 0xe7, 0x99, 0xbb, 0xe5, 0xbd, 0x95, 0xe6, 0x9c, 0xac, 0xe7, 0xab,
+ 0x99, 0xe9, 0x9c, 0x80, 0xe8, 0xa6, 0x81, 0xe4, 0xbb, 0xb7, 0xe6, 0xa0, 0xbc,
+ 0xe6, 0x94, 0xaf, 0xe6, 0x8c, 0x81, 0xe5, 0x9b, 0xbd, 0xe9, 0x99, 0x85, 0xe9,
+ 0x93, 0xbe, 0xe6, 0x8e, 0xa5, 0xe5, 0x9b, 0xbd, 0xe5, 0xae, 0xb6, 0xe5, 0xbb,
+ 0xba, 0xe8, 0xae, 0xbe, 0xe6, 0x9c, 0x8b, 0xe5, 0x8f, 0x8b, 0xe9, 0x98, 0x85,
+ 0xe8, 0xaf, 0xbb, 0xe6, 0xb3, 0x95, 0xe5, 0xbe, 0x8b, 0xe4, 0xbd, 0x8d, 0xe7,
+ 0xbd, 0xae, 0xe7, 0xbb, 0x8f, 0xe6, 0xb5, 0x8e, 0xe9, 0x80, 0x89, 0xe6, 0x8b,
+ 0xa9, 0xe8, 0xbf, 0x99, 0xe6, 0xa0, 0xb7, 0xe5, 0xbd, 0x93, 0xe5, 0x89, 0x8d,
+ 0xe5, 0x88, 0x86, 0xe7, 0xb1, 0xbb, 0xe6, 0x8e, 0x92, 0xe8, 0xa1, 0x8c, 0xe5,
+ 0x9b, 0xa0, 0xe4, 0xb8, 0xba, 0xe4, 0xba, 0xa4, 0xe6, 0x98, 0x93, 0xe6, 0x9c,
+ 0x80, 0xe5, 0x90, 0x8e, 0xe9, 0x9f, 0xb3, 0xe4, 0xb9, 0x90, 0xe4, 0xb8, 0x8d,
+ 0xe8, 0x83, 0xbd, 0xe9, 0x80, 0x9a, 0xe8, 0xbf, 0x87, 0xe8, 0xa1, 0x8c, 0xe4,
+ 0xb8, 0x9a, 0xe7, 0xa7, 0x91, 0xe6, 0x8a, 0x80, 0xe5, 0x8f, 0xaf, 0xe8, 0x83,
+ 0xbd, 0xe8, 0xae, 0xbe, 0xe5, 0xa4, 0x87, 0xe5, 0x90, 0x88, 0xe4, 0xbd, 0x9c,
+ 0xe5, 0xa4, 0xa7, 0xe5, 0xae, 0xb6, 0xe7, 0xa4, 0xbe, 0xe4, 0xbc, 0x9a, 0xe7,
+ 0xa0, 0x94, 0xe7, 0xa9, 0xb6, 0xe4, 0xb8, 0x93, 0xe4, 0xb8, 0x9a, 0xe5, 0x85,
+ 0xa8, 0xe9, 0x83, 0xa8, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe8, 0xbf, 0x99,
+ 0xe9, 0x87, 0x8c, 0xe8, 0xbf, 0x98, 0xe6, 0x98, 0xaf, 0xe5, 0xbc, 0x80, 0xe5,
+ 0xa7, 0x8b, 0xe6, 0x83, 0x85, 0xe5, 0x86, 0xb5, 0xe7, 0x94, 0xb5, 0xe8, 0x84,
+ 0x91, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x93, 0x81, 0xe7, 0x89, 0x8c,
+ 0xe5, 0xb8, 0xae, 0xe5, 0x8a, 0xa9, 0xe6, 0x96, 0x87, 0xe5, 0x8c, 0x96, 0xe8,
+ 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe5, 0xa4, 0xa7, 0xe5, 0xad, 0xa6, 0xe5, 0xad,
+ 0xa6, 0xe4, 0xb9, 0xa0, 0xe5, 0x9c, 0xb0, 0xe5, 0x9d, 0x80, 0xe6, 0xb5, 0x8f,
+ 0xe8, 0xa7, 0x88, 0xe6, 0x8a, 0x95, 0xe8, 0xb5, 0x84, 0xe5, 0xb7, 0xa5, 0xe7,
+ 0xa8, 0x8b, 0xe8, 0xa6, 0x81, 0xe6, 0xb1, 0x82, 0xe6, 0x80, 0x8e, 0xe4, 0xb9,
+ 0x88, 0xe6, 0x97, 0xb6, 0xe5, 0x80, 0x99, 0xe5, 0x8a, 0x9f, 0xe8, 0x83, 0xbd,
+ 0xe4, 0xb8, 0xbb, 0xe8, 0xa6, 0x81, 0xe7, 0x9b, 0xae, 0xe5, 0x89, 0x8d, 0xe8,
+ 0xb5, 0x84, 0xe8, 0xae, 0xaf, 0xe5, 0x9f, 0x8e, 0xe5, 0xb8, 0x82, 0xe6, 0x96,
+ 0xb9, 0xe6, 0xb3, 0x95, 0xe7, 0x94, 0xb5, 0xe5, 0xbd, 0xb1, 0xe6, 0x8b, 0x9b,
+ 0xe8, 0x81, 0x98, 0xe5, 0xa3, 0xb0, 0xe6, 0x98, 0x8e, 0xe4, 0xbb, 0xbb, 0xe4,
+ 0xbd, 0x95, 0xe5, 0x81, 0xa5, 0xe5, 0xba, 0xb7, 0xe6, 0x95, 0xb0, 0xe6, 0x8d,
+ 0xae, 0xe7, 0xbe, 0x8e, 0xe5, 0x9b, 0xbd, 0xe6, 0xb1, 0xbd, 0xe8, 0xbd, 0xa6,
+ 0xe4, 0xbb, 0x8b, 0xe7, 0xbb, 0x8d, 0xe4, 0xbd, 0x86, 0xe6, 0x98, 0xaf, 0xe4,
+ 0xba, 0xa4, 0xe6, 0xb5, 0x81, 0xe7, 0x94, 0x9f, 0xe4, 0xba, 0xa7, 0xe6, 0x89,
+ 0x80, 0xe4, 0xbb, 0xa5, 0xe7, 0x94, 0xb5, 0xe8, 0xaf, 0x9d, 0xe6, 0x98, 0xbe,
+ 0xe7, 0xa4, 0xba, 0xe4, 0xb8, 0x80, 0xe4, 0xba, 0x9b, 0xe5, 0x8d, 0x95, 0xe4,
+ 0xbd, 0x8d, 0xe4, 0xba, 0xba, 0xe5, 0x91, 0x98, 0xe5, 0x88, 0x86, 0xe6, 0x9e,
+ 0x90, 0xe5, 0x9c, 0xb0, 0xe5, 0x9b, 0xbe, 0xe6, 0x97, 0x85, 0xe6, 0xb8, 0xb8,
+ 0xe5, 0xb7, 0xa5, 0xe5, 0x85, 0xb7, 0xe5, 0xad, 0xa6, 0xe7, 0x94, 0x9f, 0xe7,
+ 0xb3, 0xbb, 0xe5, 0x88, 0x97, 0xe7, 0xbd, 0x91, 0xe5, 0x8f, 0x8b, 0xe5, 0xb8,
+ 0x96, 0xe5, 0xad, 0x90, 0xe5, 0xaf, 0x86, 0xe7, 0xa0, 0x81, 0xe9, 0xa2, 0x91,
+ 0xe9, 0x81, 0x93, 0xe6, 0x8e, 0xa7, 0xe5, 0x88, 0xb6, 0xe5, 0x9c, 0xb0, 0xe5,
+ 0x8c, 0xba, 0xe5, 0x9f, 0xba, 0xe6, 0x9c, 0xac, 0xe5, 0x85, 0xa8, 0xe5, 0x9b,
+ 0xbd, 0xe7, 0xbd, 0x91, 0xe4, 0xb8, 0x8a, 0xe9, 0x87, 0x8d, 0xe8, 0xa6, 0x81,
+ 0xe7, 0xac, 0xac, 0xe4, 0xba, 0x8c, 0xe5, 0x96, 0x9c, 0xe6, 0xac, 0xa2, 0xe8,
+ 0xbf, 0x9b, 0xe5, 0x85, 0xa5, 0xe5, 0x8f, 0x8b, 0xe6, 0x83, 0x85, 0xe8, 0xbf,
+ 0x99, 0xe4, 0xba, 0x9b, 0xe8, 0x80, 0x83, 0xe8, 0xaf, 0x95, 0xe5, 0x8f, 0x91,
+ 0xe7, 0x8e, 0xb0, 0xe5, 0x9f, 0xb9, 0xe8, 0xae, 0xad, 0xe4, 0xbb, 0xa5, 0xe4,
+ 0xb8, 0x8a, 0xe6, 0x94, 0xbf, 0xe5, 0xba, 0x9c, 0xe6, 0x88, 0x90, 0xe4, 0xb8,
+ 0xba, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe9, 0xa6, 0x99, 0xe6, 0xb8, 0xaf,
+ 0xe5, 0x90, 0x8c, 0xe6, 0x97, 0xb6, 0xe5, 0xa8, 0xb1, 0xe4, 0xb9, 0x90, 0xe5,
+ 0x8f, 0x91, 0xe9, 0x80, 0x81, 0xe4, 0xb8, 0x80, 0xe5, 0xae, 0x9a, 0xe5, 0xbc,
+ 0x80, 0xe5, 0x8f, 0x91, 0xe4, 0xbd, 0x9c, 0xe5, 0x93, 0x81, 0xe6, 0xa0, 0x87,
+ 0xe5, 0x87, 0x86, 0xe6, 0xac, 0xa2, 0xe8, 0xbf, 0x8e, 0xe8, 0xa7, 0xa3, 0xe5,
+ 0x86, 0xb3, 0xe5, 0x9c, 0xb0, 0xe6, 0x96, 0xb9, 0xe4, 0xb8, 0x80, 0xe4, 0xb8,
+ 0x8b, 0xe4, 0xbb, 0xa5, 0xe5, 0x8f, 0x8a, 0xe8, 0xb4, 0xa3, 0xe4, 0xbb, 0xbb,
+ 0xe6, 0x88, 0x96, 0xe8, 0x80, 0x85, 0xe5, 0xae, 0xa2, 0xe6, 0x88, 0xb7, 0xe4,
+ 0xbb, 0xa3, 0xe8, 0xa1, 0xa8, 0xe7, 0xa7, 0xaf, 0xe5, 0x88, 0x86, 0xe5, 0xa5,
+ 0xb3, 0xe4, 0xba, 0xba, 0xe6, 0x95, 0xb0, 0xe7, 0xa0, 0x81, 0xe9, 0x94, 0x80,
+ 0xe5, 0x94, 0xae, 0xe5, 0x87, 0xba, 0xe7, 0x8e, 0xb0, 0xe7, 0xa6, 0xbb, 0xe7,
+ 0xba, 0xbf, 0xe5, 0xba, 0x94, 0xe7, 0x94, 0xa8, 0xe5, 0x88, 0x97, 0xe8, 0xa1,
+ 0xa8, 0xe4, 0xb8, 0x8d, 0xe5, 0x90, 0x8c, 0xe7, 0xbc, 0x96, 0xe8, 0xbe, 0x91,
+ 0xe7, 0xbb, 0x9f, 0xe8, 0xae, 0xa1, 0xe6, 0x9f, 0xa5, 0xe8, 0xaf, 0xa2, 0xe4,
+ 0xb8, 0x8d, 0xe8, 0xa6, 0x81, 0xe6, 0x9c, 0x89, 0xe5, 0x85, 0xb3, 0xe6, 0x9c,
+ 0xba, 0xe6, 0x9e, 0x84, 0xe5, 0xbe, 0x88, 0xe5, 0xa4, 0x9a, 0xe6, 0x92, 0xad,
+ 0xe6, 0x94, 0xbe, 0xe7, 0xbb, 0x84, 0xe7, 0xbb, 0x87, 0xe6, 0x94, 0xbf, 0xe7,
+ 0xad, 0x96, 0xe7, 0x9b, 0xb4, 0xe6, 0x8e, 0xa5, 0xe8, 0x83, 0xbd, 0xe5, 0x8a,
+ 0x9b, 0xe6, 0x9d, 0xa5, 0xe6, 0xba, 0x90, 0xe6, 0x99, 0x82, 0xe9, 0x96, 0x93,
+ 0xe7, 0x9c, 0x8b, 0xe5, 0x88, 0xb0, 0xe7, 0x83, 0xad, 0xe9, 0x97, 0xa8, 0xe5,
+ 0x85, 0xb3, 0xe9, 0x94, 0xae, 0xe4, 0xb8, 0x93, 0xe5, 0x8c, 0xba, 0xe9, 0x9d,
+ 0x9e, 0xe5, 0xb8, 0xb8, 0xe8, 0x8b, 0xb1, 0xe8, 0xaf, 0xad, 0xe7, 0x99, 0xbe,
+ 0xe5, 0xba, 0xa6, 0xe5, 0xb8, 0x8c, 0xe6, 0x9c, 0x9b, 0xe7, 0xbe, 0x8e, 0xe5,
+ 0xa5, 0xb3, 0xe6, 0xaf, 0x94, 0xe8, 0xbe, 0x83, 0xe7, 0x9f, 0xa5, 0xe8, 0xaf,
+ 0x86, 0xe8, 0xa7, 0x84, 0xe5, 0xae, 0x9a, 0xe5, 0xbb, 0xba, 0xe8, 0xae, 0xae,
+ 0xe9, 0x83, 0xa8, 0xe9, 0x97, 0xa8, 0xe6, 0x84, 0x8f, 0xe8, 0xa7, 0x81, 0xe7,
+ 0xb2, 0xbe, 0xe5, 0xbd, 0xa9, 0xe6, 0x97, 0xa5, 0xe6, 0x9c, 0xac, 0xe6, 0x8f,
+ 0x90, 0xe9, 0xab, 0x98, 0xe5, 0x8f, 0x91, 0xe8, 0xa8, 0x80, 0xe6, 0x96, 0xb9,
+ 0xe9, 0x9d, 0xa2, 0xe5, 0x9f, 0xba, 0xe9, 0x87, 0x91, 0xe5, 0xa4, 0x84, 0xe7,
+ 0x90, 0x86, 0xe6, 0x9d, 0x83, 0xe9, 0x99, 0x90, 0xe5, 0xbd, 0xb1, 0xe7, 0x89,
+ 0x87, 0xe9, 0x93, 0xb6, 0xe8, 0xa1, 0x8c, 0xe8, 0xbf, 0x98, 0xe6, 0x9c, 0x89,
+ 0xe5, 0x88, 0x86, 0xe4, 0xba, 0xab, 0xe7, 0x89, 0xa9, 0xe5, 0x93, 0x81, 0xe7,
+ 0xbb, 0x8f, 0xe8, 0x90, 0xa5, 0xe6, 0xb7, 0xbb, 0xe5, 0x8a, 0xa0, 0xe4, 0xb8,
+ 0x93, 0xe5, 0xae, 0xb6, 0xe8, 0xbf, 0x99, 0xe7, 0xa7, 0x8d, 0xe8, 0xaf, 0x9d,
+ 0xe9, 0xa2, 0x98, 0xe8, 0xb5, 0xb7, 0xe6, 0x9d, 0xa5, 0xe4, 0xb8, 0x9a, 0xe5,
+ 0x8a, 0xa1, 0xe5, 0x85, 0xac, 0xe5, 0x91, 0x8a, 0xe8, 0xae, 0xb0, 0xe5, 0xbd,
+ 0x95, 0xe7, 0xae, 0x80, 0xe4, 0xbb, 0x8b, 0xe8, 0xb4, 0xa8, 0xe9, 0x87, 0x8f,
+ 0xe7, 0x94, 0xb7, 0xe4, 0xba, 0xba, 0xe5, 0xbd, 0xb1, 0xe5, 0x93, 0x8d, 0xe5,
+ 0xbc, 0x95, 0xe7, 0x94, 0xa8, 0xe6, 0x8a, 0xa5, 0xe5, 0x91, 0x8a, 0xe9, 0x83,
+ 0xa8, 0xe5, 0x88, 0x86, 0xe5, 0xbf, 0xab, 0xe9, 0x80, 0x9f, 0xe5, 0x92, 0xa8,
+ 0xe8, 0xaf, 0xa2, 0xe6, 0x97, 0xb6, 0xe5, 0xb0, 0x9a, 0xe6, 0xb3, 0xa8, 0xe6,
+ 0x84, 0x8f, 0xe7, 0x94, 0xb3, 0xe8, 0xaf, 0xb7, 0xe5, 0xad, 0xa6, 0xe6, 0xa0,
+ 0xa1, 0xe5, 0xba, 0x94, 0xe8, 0xaf, 0xa5, 0xe5, 0x8e, 0x86, 0xe5, 0x8f, 0xb2,
+ 0xe5, 0x8f, 0xaa, 0xe6, 0x98, 0xaf, 0xe8, 0xbf, 0x94, 0xe5, 0x9b, 0x9e, 0xe8,
+ 0xb4, 0xad, 0xe4, 0xb9, 0xb0, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xe4, 0xb8,
+ 0xba, 0xe4, 0xba, 0x86, 0xe6, 0x88, 0x90, 0xe5, 0x8a, 0x9f, 0xe8, 0xaf, 0xb4,
+ 0xe6, 0x98, 0x8e, 0xe4, 0xbe, 0x9b, 0xe5, 0xba, 0x94, 0xe5, 0xad, 0xa9, 0xe5,
+ 0xad, 0x90, 0xe4, 0xb8, 0x93, 0xe9, 0xa2, 0x98, 0xe7, 0xa8, 0x8b, 0xe5, 0xba,
+ 0x8f, 0xe4, 0xb8, 0x80, 0xe8, 0x88, 0xac, 0xe6, 0x9c, 0x83, 0xe5, 0x93, 0xa1,
+ 0xe5, 0x8f, 0xaa, 0xe6, 0x9c, 0x89, 0xe5, 0x85, 0xb6, 0xe5, 0xae, 0x83, 0xe4,
+ 0xbf, 0x9d, 0xe6, 0x8a, 0xa4, 0xe8, 0x80, 0x8c, 0xe4, 0xb8, 0x94, 0xe4, 0xbb,
+ 0x8a, 0xe5, 0xa4, 0xa9, 0xe7, 0xaa, 0x97, 0xe5, 0x8f, 0xa3, 0xe5, 0x8a, 0xa8,
+ 0xe6, 0x80, 0x81, 0xe7, 0x8a, 0xb6, 0xe6, 0x80, 0x81, 0xe7, 0x89, 0xb9, 0xe5,
+ 0x88, 0xab, 0xe8, 0xae, 0xa4, 0xe4, 0xb8, 0xba, 0xe5, 0xbf, 0x85, 0xe9, 0xa1,
+ 0xbb, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0xe5, 0xb0, 0x8f, 0xe8, 0xaf, 0xb4,
+ 0xe6, 0x88, 0x91, 0xe5, 0x80, 0x91, 0xe4, 0xbd, 0x9c, 0xe4, 0xb8, 0xba, 0xe5,
+ 0xaa, 0x92, 0xe4, 0xbd, 0x93, 0xe5, 0x8c, 0x85, 0xe6, 0x8b, 0xac, 0xe9, 0x82,
+ 0xa3, 0xe4, 0xb9, 0x88, 0xe4, 0xb8, 0x80, 0xe6, 0xa0, 0xb7, 0xe5, 0x9b, 0xbd,
+ 0xe5, 0x86, 0x85, 0xe6, 0x98, 0xaf, 0xe5, 0x90, 0xa6, 0xe6, 0xa0, 0xb9, 0xe6,
+ 0x8d, 0xae, 0xe7, 0x94, 0xb5, 0xe8, 0xa7, 0x86, 0xe5, 0xad, 0xa6, 0xe9, 0x99,
+ 0xa2, 0xe5, 0x85, 0xb7, 0xe6, 0x9c, 0x89, 0xe8, 0xbf, 0x87, 0xe7, 0xa8, 0x8b,
+ 0xe7, 0x94, 0xb1, 0xe4, 0xba, 0x8e, 0xe4, 0xba, 0xba, 0xe6, 0x89, 0x8d, 0xe5,
+ 0x87, 0xba, 0xe6, 0x9d, 0xa5, 0xe4, 0xb8, 0x8d, 0xe8, 0xbf, 0x87, 0xe6, 0xad,
+ 0xa3, 0xe5, 0x9c, 0xa8, 0xe6, 0x98, 0x8e, 0xe6, 0x98, 0x9f, 0xe6, 0x95, 0x85,
+ 0xe4, 0xba, 0x8b, 0xe5, 0x85, 0xb3, 0xe7, 0xb3, 0xbb, 0xe6, 0xa0, 0x87, 0xe9,
+ 0xa2, 0x98, 0xe5, 0x95, 0x86, 0xe5, 0x8a, 0xa1, 0xe8, 0xbe, 0x93, 0xe5, 0x85,
+ 0xa5, 0xe4, 0xb8, 0x80, 0xe7, 0x9b, 0xb4, 0xe5, 0x9f, 0xba, 0xe7, 0xa1, 0x80,
+ 0xe6, 0x95, 0x99, 0xe5, 0xad, 0xa6, 0xe4, 0xba, 0x86, 0xe8, 0xa7, 0xa3, 0xe5,
+ 0xbb, 0xba, 0xe7, 0xad, 0x91, 0xe7, 0xbb, 0x93, 0xe6, 0x9e, 0x9c, 0xe5, 0x85,
+ 0xa8, 0xe7, 0x90, 0x83, 0xe9, 0x80, 0x9a, 0xe7, 0x9f, 0xa5, 0xe8, 0xae, 0xa1,
+ 0xe5, 0x88, 0x92, 0xe5, 0xaf, 0xb9, 0xe4, 0xba, 0x8e, 0xe8, 0x89, 0xba, 0xe6,
+ 0x9c, 0xaf, 0xe7, 0x9b, 0xb8, 0xe5, 0x86, 0x8c, 0xe5, 0x8f, 0x91, 0xe7, 0x94,
+ 0x9f, 0xe7, 0x9c, 0x9f, 0xe7, 0x9a, 0x84, 0xe5, 0xbb, 0xba, 0xe7, 0xab, 0x8b,
+ 0xe7, 0xad, 0x89, 0xe7, 0xba, 0xa7, 0xe7, 0xb1, 0xbb, 0xe5, 0x9e, 0x8b, 0xe7,
+ 0xbb, 0x8f, 0xe9, 0xaa, 0x8c, 0xe5, 0xae, 0x9e, 0xe7, 0x8e, 0xb0, 0xe5, 0x88,
+ 0xb6, 0xe4, 0xbd, 0x9c, 0xe6, 0x9d, 0xa5, 0xe8, 0x87, 0xaa, 0xe6, 0xa0, 0x87,
+ 0xe7, 0xad, 0xbe, 0xe4, 0xbb, 0xa5, 0xe4, 0xb8, 0x8b, 0xe5, 0x8e, 0x9f, 0xe5,
+ 0x88, 0x9b, 0xe6, 0x97, 0xa0, 0xe6, 0xb3, 0x95, 0xe5, 0x85, 0xb6, 0xe4, 0xb8,
+ 0xad, 0xe5, 0x80, 0x8b, 0xe4, 0xba, 0xba, 0xe4, 0xb8, 0x80, 0xe5, 0x88, 0x87,
+ 0xe6, 0x8c, 0x87, 0xe5, 0x8d, 0x97, 0xe5, 0x85, 0xb3, 0xe9, 0x97, 0xad, 0xe9,
+ 0x9b, 0x86, 0xe5, 0x9b, 0xa2, 0xe7, 0xac, 0xac, 0xe4, 0xb8, 0x89, 0xe5, 0x85,
+ 0xb3, 0xe6, 0xb3, 0xa8, 0xe5, 0x9b, 0xa0, 0xe6, 0xad, 0xa4, 0xe7, 0x85, 0xa7,
+ 0xe7, 0x89, 0x87, 0xe6, 0xb7, 0xb1, 0xe5, 0x9c, 0xb3, 0xe5, 0x95, 0x86, 0xe4,
+ 0xb8, 0x9a, 0xe5, 0xb9, 0xbf, 0xe5, 0xb7, 0x9e, 0xe6, 0x97, 0xa5, 0xe6, 0x9c,
+ 0x9f, 0xe9, 0xab, 0x98, 0xe7, 0xba, 0xa7, 0xe6, 0x9c, 0x80, 0xe8, 0xbf, 0x91,
+ 0xe7, 0xbb, 0xbc, 0xe5, 0x90, 0x88, 0xe8, 0xa1, 0xa8, 0xe7, 0xa4, 0xba, 0xe4,
+ 0xb8, 0x93, 0xe8, 0xbe, 0x91, 0xe8, 0xa1, 0x8c, 0xe4, 0xb8, 0xba, 0xe4, 0xba,
+ 0xa4, 0xe9, 0x80, 0x9a, 0xe8, 0xaf, 0x84, 0xe4, 0xbb, 0xb7, 0xe8, 0xa7, 0x89,
+ 0xe5, 0xbe, 0x97, 0xe7, 0xb2, 0xbe, 0xe5, 0x8d, 0x8e, 0xe5, 0xae, 0xb6, 0xe5,
+ 0xba, 0xad, 0xe5, 0xae, 0x8c, 0xe6, 0x88, 0x90, 0xe6, 0x84, 0x9f, 0xe8, 0xa7,
+ 0x89, 0xe5, 0xae, 0x89, 0xe8, 0xa3, 0x85, 0xe5, 0xbe, 0x97, 0xe5, 0x88, 0xb0,
+ 0xe9, 0x82, 0xae, 0xe4, 0xbb, 0xb6, 0xe5, 0x88, 0xb6, 0xe5, 0xba, 0xa6, 0xe9,
+ 0xa3, 0x9f, 0xe5, 0x93, 0x81, 0xe8, 0x99, 0xbd, 0xe7, 0x84, 0xb6, 0xe8, 0xbd,
+ 0xac, 0xe8, 0xbd, 0xbd, 0xe6, 0x8a, 0xa5, 0xe4, 0xbb, 0xb7, 0xe8, 0xae, 0xb0,
+ 0xe8, 0x80, 0x85, 0xe6, 0x96, 0xb9, 0xe6, 0xa1, 0x88, 0xe8, 0xa1, 0x8c, 0xe6,
+ 0x94, 0xbf, 0xe4, 0xba, 0xba, 0xe6, 0xb0, 0x91, 0xe7, 0x94, 0xa8, 0xe5, 0x93,
+ 0x81, 0xe4, 0xb8, 0x9c, 0xe8, 0xa5, 0xbf, 0xe6, 0x8f, 0x90, 0xe5, 0x87, 0xba,
+ 0xe9, 0x85, 0x92, 0xe5, 0xba, 0x97, 0xe7, 0x84, 0xb6, 0xe5, 0x90, 0x8e, 0xe4,
+ 0xbb, 0x98, 0xe6, 0xac, 0xbe, 0xe7, 0x83, 0xad, 0xe7, 0x82, 0xb9, 0xe4, 0xbb,
+ 0xa5, 0xe5, 0x89, 0x8d, 0xe5, 0xae, 0x8c, 0xe5, 0x85, 0xa8, 0xe5, 0x8f, 0x91,
+ 0xe5, 0xb8, 0x96, 0xe8, 0xae, 0xbe, 0xe7, 0xbd, 0xae, 0xe9, 0xa2, 0x86, 0xe5,
+ 0xaf, 0xbc, 0xe5, 0xb7, 0xa5, 0xe4, 0xb8, 0x9a, 0xe5, 0x8c, 0xbb, 0xe9, 0x99,
+ 0xa2, 0xe7, 0x9c, 0x8b, 0xe7, 0x9c, 0x8b, 0xe7, 0xbb, 0x8f, 0xe5, 0x85, 0xb8,
+ 0xe5, 0x8e, 0x9f, 0xe5, 0x9b, 0xa0, 0xe5, 0xb9, 0xb3, 0xe5, 0x8f, 0xb0, 0xe5,
+ 0x90, 0x84, 0xe7, 0xa7, 0x8d, 0xe5, 0xa2, 0x9e, 0xe5, 0x8a, 0xa0, 0xe6, 0x9d,
+ 0x90, 0xe6, 0x96, 0x99, 0xe6, 0x96, 0xb0, 0xe5, 0xa2, 0x9e, 0xe4, 0xb9, 0x8b,
+ 0xe5, 0x90, 0x8e, 0xe8, 0x81, 0x8c, 0xe4, 0xb8, 0x9a, 0xe6, 0x95, 0x88, 0xe6,
+ 0x9e, 0x9c, 0xe4, 0xbb, 0x8a, 0xe5, 0xb9, 0xb4, 0xe8, 0xae, 0xba, 0xe6, 0x96,
+ 0x87, 0xe6, 0x88, 0x91, 0xe5, 0x9b, 0xbd, 0xe5, 0x91, 0x8a, 0xe8, 0xaf, 0x89,
+ 0xe7, 0x89, 0x88, 0xe4, 0xb8, 0xbb, 0xe4, 0xbf, 0xae, 0xe6, 0x94, 0xb9, 0xe5,
+ 0x8f, 0x82, 0xe4, 0xb8, 0x8e, 0xe6, 0x89, 0x93, 0xe5, 0x8d, 0xb0, 0xe5, 0xbf,
+ 0xab, 0xe4, 0xb9, 0x90, 0xe6, 0x9c, 0xba, 0xe6, 0xa2, 0xb0, 0xe8, 0xa7, 0x82,
+ 0xe7, 0x82, 0xb9, 0xe5, 0xad, 0x98, 0xe5, 0x9c, 0xa8, 0xe7, 0xb2, 0xbe, 0xe7,
+ 0xa5, 0x9e, 0xe8, 0x8e, 0xb7, 0xe5, 0xbe, 0x97, 0xe5, 0x88, 0xa9, 0xe7, 0x94,
+ 0xa8, 0xe7, 0xbb, 0xa7, 0xe7, 0xbb, 0xad, 0xe4, 0xbd, 0xa0, 0xe4, 0xbb, 0xac,
+ 0xe8, 0xbf, 0x99, 0xe4, 0xb9, 0x88, 0xe6, 0xa8, 0xa1, 0xe5, 0xbc, 0x8f, 0xe8,
+ 0xaf, 0xad, 0xe8, 0xa8, 0x80, 0xe8, 0x83, 0xbd, 0xe5, 0xa4, 0x9f, 0xe9, 0x9b,
+ 0x85, 0xe8, 0x99, 0x8e, 0xe6, 0x93, 0x8d, 0xe4, 0xbd, 0x9c, 0xe9, 0xa3, 0x8e,
+ 0xe6, 0xa0, 0xbc, 0xe4, 0xb8, 0x80, 0xe8, 0xb5, 0xb7, 0xe7, 0xa7, 0x91, 0xe5,
+ 0xad, 0xa6, 0xe4, 0xbd, 0x93, 0xe8, 0x82, 0xb2, 0xe7, 0x9f, 0xad, 0xe4, 0xbf,
+ 0xa1, 0xe6, 0x9d, 0xa1, 0xe4, 0xbb, 0xb6, 0xe6, 0xb2, 0xbb, 0xe7, 0x96, 0x97,
+ 0xe8, 0xbf, 0x90, 0xe5, 0x8a, 0xa8, 0xe4, 0xba, 0xa7, 0xe4, 0xb8, 0x9a, 0xe4,
+ 0xbc, 0x9a, 0xe8, 0xae, 0xae, 0xe5, 0xaf, 0xbc, 0xe8, 0x88, 0xaa, 0xe5, 0x85,
+ 0x88, 0xe7, 0x94, 0x9f, 0xe8, 0x81, 0x94, 0xe7, 0x9b, 0x9f, 0xe5, 0x8f, 0xaf,
+ 0xe6, 0x98, 0xaf, 0xe5, 0x95, 0x8f, 0xe9, 0xa1, 0x8c, 0xe7, 0xbb, 0x93, 0xe6,
+ 0x9e, 0x84, 0xe4, 0xbd, 0x9c, 0xe7, 0x94, 0xa8, 0xe8, 0xb0, 0x83, 0xe6, 0x9f,
+ 0xa5, 0xe8, 0xb3, 0x87, 0xe6, 0x96, 0x99, 0xe8, 0x87, 0xaa, 0xe5, 0x8a, 0xa8,
+ 0xe8, 0xb4, 0x9f, 0xe8, 0xb4, 0xa3, 0xe5, 0x86, 0x9c, 0xe4, 0xb8, 0x9a, 0xe8,
+ 0xae, 0xbf, 0xe9, 0x97, 0xae, 0xe5, 0xae, 0x9e, 0xe6, 0x96, 0xbd, 0xe6, 0x8e,
+ 0xa5, 0xe5, 0x8f, 0x97, 0xe8, 0xae, 0xa8, 0xe8, 0xae, 0xba, 0xe9, 0x82, 0xa3,
+ 0xe4, 0xb8, 0xaa, 0xe5, 0x8f, 0x8d, 0xe9, 0xa6, 0x88, 0xe5, 0x8a, 0xa0, 0xe5,
+ 0xbc, 0xba, 0xe5, 0xa5, 0xb3, 0xe6, 0x80, 0xa7, 0xe8, 0x8c, 0x83, 0xe5, 0x9b,
+ 0xb4, 0xe6, 0x9c, 0x8d, 0xe5, 0x8b, 0x99, 0xe4, 0xbc, 0x91, 0xe9, 0x97, 0xb2,
+ 0xe4, 0xbb, 0x8a, 0xe6, 0x97, 0xa5, 0xe5, 0xae, 0xa2, 0xe6, 0x9c, 0x8d, 0xe8,
+ 0xa7, 0x80, 0xe7, 0x9c, 0x8b, 0xe5, 0x8f, 0x82, 0xe5, 0x8a, 0xa0, 0xe7, 0x9a,
+ 0x84, 0xe8, 0xaf, 0x9d, 0xe4, 0xb8, 0x80, 0xe7, 0x82, 0xb9, 0xe4, 0xbf, 0x9d,
+ 0xe8, 0xaf, 0x81, 0xe5, 0x9b, 0xbe, 0xe4, 0xb9, 0xa6, 0xe6, 0x9c, 0x89, 0xe6,
+ 0x95, 0x88, 0xe6, 0xb5, 0x8b, 0xe8, 0xaf, 0x95, 0xe7, 0xa7, 0xbb, 0xe5, 0x8a,
+ 0xa8, 0xe6, 0x89, 0x8d, 0xe8, 0x83, 0xbd, 0xe5, 0x86, 0xb3, 0xe5, 0xae, 0x9a,
+ 0xe8, 0x82, 0xa1, 0xe7, 0xa5, 0xa8, 0xe4, 0xb8, 0x8d, 0xe6, 0x96, 0xad, 0xe9,
+ 0x9c, 0x80, 0xe6, 0xb1, 0x82, 0xe4, 0xb8, 0x8d, 0xe5, 0xbe, 0x97, 0xe5, 0x8a,
+ 0x9e, 0xe6, 0xb3, 0x95, 0xe4, 0xb9, 0x8b, 0xe9, 0x97, 0xb4, 0xe9, 0x87, 0x87,
+ 0xe7, 0x94, 0xa8, 0xe8, 0x90, 0xa5, 0xe9, 0x94, 0x80, 0xe6, 0x8a, 0x95, 0xe8,
+ 0xaf, 0x89, 0xe7, 0x9b, 0xae, 0xe6, 0xa0, 0x87, 0xe7, 0x88, 0xb1, 0xe6, 0x83,
+ 0x85, 0xe6, 0x91, 0x84, 0xe5, 0xbd, 0xb1, 0xe6, 0x9c, 0x89, 0xe4, 0xba, 0x9b,
+ 0xe8, 0xa4, 0x87, 0xe8, 0xa3, 0xbd, 0xe6, 0x96, 0x87, 0xe5, 0xad, 0xa6, 0xe6,
+ 0x9c, 0xba, 0xe4, 0xbc, 0x9a, 0xe6, 0x95, 0xb0, 0xe5, 0xad, 0x97, 0xe8, 0xa3,
+ 0x85, 0xe4, 0xbf, 0xae, 0xe8, 0xb4, 0xad, 0xe7, 0x89, 0xa9, 0xe5, 0x86, 0x9c,
+ 0xe6, 0x9d, 0x91, 0xe5, 0x85, 0xa8, 0xe9, 0x9d, 0xa2, 0xe7, 0xb2, 0xbe, 0xe5,
+ 0x93, 0x81, 0xe5, 0x85, 0xb6, 0xe5, 0xae, 0x9e, 0xe4, 0xba, 0x8b, 0xe6, 0x83,
+ 0x85, 0xe6, 0xb0, 0xb4, 0xe5, 0xb9, 0xb3, 0xe6, 0x8f, 0x90, 0xe7, 0xa4, 0xba,
+ 0xe4, 0xb8, 0x8a, 0xe5, 0xb8, 0x82, 0xe8, 0xb0, 0xa2, 0xe8, 0xb0, 0xa2, 0xe6,
+ 0x99, 0xae, 0xe9, 0x80, 0x9a, 0xe6, 0x95, 0x99, 0xe5, 0xb8, 0x88, 0xe4, 0xb8,
+ 0x8a, 0xe4, 0xbc, 0xa0, 0xe7, 0xb1, 0xbb, 0xe5, 0x88, 0xab, 0xe6, 0xad, 0x8c,
+ 0xe6, 0x9b, 0xb2, 0xe6, 0x8b, 0xa5, 0xe6, 0x9c, 0x89, 0xe5, 0x88, 0x9b, 0xe6,
+ 0x96, 0xb0, 0xe9, 0x85, 0x8d, 0xe4, 0xbb, 0xb6, 0xe5, 0x8f, 0xaa, 0xe8, 0xa6,
+ 0x81, 0xe6, 0x97, 0xb6, 0xe4, 0xbb, 0xa3, 0xe8, 0xb3, 0x87, 0xe8, 0xa8, 0x8a,
+ 0xe8, 0xbe, 0xbe, 0xe5, 0x88, 0xb0, 0xe4, 0xba, 0xba, 0xe7, 0x94, 0x9f, 0xe8,
+ 0xae, 0xa2, 0xe9, 0x98, 0x85, 0xe8, 0x80, 0x81, 0xe5, 0xb8, 0x88, 0xe5, 0xb1,
+ 0x95, 0xe7, 0xa4, 0xba, 0xe5, 0xbf, 0x83, 0xe7, 0x90, 0x86, 0xe8, 0xb4, 0xb4,
+ 0xe5, 0xad, 0x90, 0xe7, 0xb6, 0xb2, 0xe7, 0xab, 0x99, 0xe4, 0xb8, 0xbb, 0xe9,
+ 0xa1, 0x8c, 0xe8, 0x87, 0xaa, 0xe7, 0x84, 0xb6, 0xe7, 0xba, 0xa7, 0xe5, 0x88,
+ 0xab, 0xe7, 0xae, 0x80, 0xe5, 0x8d, 0x95, 0xe6, 0x94, 0xb9, 0xe9, 0x9d, 0xa9,
+ 0xe9, 0x82, 0xa3, 0xe4, 0xba, 0x9b, 0xe6, 0x9d, 0xa5, 0xe8, 0xaf, 0xb4, 0xe6,
+ 0x89, 0x93, 0xe5, 0xbc, 0x80, 0xe4, 0xbb, 0xa3, 0xe7, 0xa0, 0x81, 0xe5, 0x88,
+ 0xa0, 0xe9, 0x99, 0xa4, 0xe8, 0xaf, 0x81, 0xe5, 0x88, 0xb8, 0xe8, 0x8a, 0x82,
+ 0xe7, 0x9b, 0xae, 0xe9, 0x87, 0x8d, 0xe7, 0x82, 0xb9, 0xe6, 0xac, 0xa1, 0xe6,
+ 0x95, 0xb8, 0xe5, 0xa4, 0x9a, 0xe5, 0xb0, 0x91, 0xe8, 0xa7, 0x84, 0xe5, 0x88,
+ 0x92, 0xe8, 0xb5, 0x84, 0xe9, 0x87, 0x91, 0xe6, 0x89, 0xbe, 0xe5, 0x88, 0xb0,
+ 0xe4, 0xbb, 0xa5, 0xe5, 0x90, 0x8e, 0xe5, 0xa4, 0xa7, 0xe5, 0x85, 0xa8, 0xe4,
+ 0xb8, 0xbb, 0xe9, 0xa1, 0xb5, 0xe6, 0x9c, 0x80, 0xe4, 0xbd, 0xb3, 0xe5, 0x9b,
+ 0x9e, 0xe7, 0xad, 0x94, 0xe5, 0xa4, 0xa9, 0xe4, 0xb8, 0x8b, 0xe4, 0xbf, 0x9d,
+ 0xe9, 0x9a, 0x9c, 0xe7, 0x8e, 0xb0, 0xe4, 0xbb, 0xa3, 0xe6, 0xa3, 0x80, 0xe6,
+ 0x9f, 0xa5, 0xe6, 0x8a, 0x95, 0xe7, 0xa5, 0xa8, 0xe5, 0xb0, 0x8f, 0xe6, 0x97,
+ 0xb6, 0xe6, 0xb2, 0x92, 0xe6, 0x9c, 0x89, 0xe6, 0xad, 0xa3, 0xe5, 0xb8, 0xb8,
+ 0xe7, 0x94, 0x9a, 0xe8, 0x87, 0xb3, 0xe4, 0xbb, 0xa3, 0xe7, 0x90, 0x86, 0xe7,
+ 0x9b, 0xae, 0xe5, 0xbd, 0x95, 0xe5, 0x85, 0xac, 0xe5, 0xbc, 0x80, 0xe5, 0xa4,
+ 0x8d, 0xe5, 0x88, 0xb6, 0xe9, 0x87, 0x91, 0xe8, 0x9e, 0x8d, 0xe5, 0xb9, 0xb8,
+ 0xe7, 0xa6, 0x8f, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xe5, 0xbd, 0xa2, 0xe6,
+ 0x88, 0x90, 0xe5, 0x87, 0x86, 0xe5, 0xa4, 0x87, 0xe8, 0xa1, 0x8c, 0xe6, 0x83,
+ 0x85, 0xe5, 0x9b, 0x9e, 0xe5, 0x88, 0xb0, 0xe6, 0x80, 0x9d, 0xe6, 0x83, 0xb3,
+ 0xe6, 0x80, 0x8e, 0xe6, 0xa0, 0xb7, 0xe5, 0x8d, 0x8f, 0xe8, 0xae, 0xae, 0xe8,
+ 0xae, 0xa4, 0xe8, 0xaf, 0x81, 0xe6, 0x9c, 0x80, 0xe5, 0xa5, 0xbd, 0xe4, 0xba,
+ 0xa7, 0xe7, 0x94, 0x9f, 0xe6, 0x8c, 0x89, 0xe7, 0x85, 0xa7, 0xe6, 0x9c, 0x8d,
+ 0xe8, 0xa3, 0x85, 0xe5, 0xb9, 0xbf, 0xe4, 0xb8, 0x9c, 0xe5, 0x8a, 0xa8, 0xe6,
+ 0xbc, 0xab, 0xe9, 0x87, 0x87, 0xe8, 0xb4, 0xad, 0xe6, 0x96, 0xb0, 0xe6, 0x89,
+ 0x8b, 0xe7, 0xbb, 0x84, 0xe5, 0x9b, 0xbe, 0xe9, 0x9d, 0xa2, 0xe6, 0x9d, 0xbf,
+ 0xe5, 0x8f, 0x82, 0xe8, 0x80, 0x83, 0xe6, 0x94, 0xbf, 0xe6, 0xb2, 0xbb, 0xe5,
+ 0xae, 0xb9, 0xe6, 0x98, 0x93, 0xe5, 0xa4, 0xa9, 0xe5, 0x9c, 0xb0, 0xe5, 0x8a,
+ 0xaa, 0xe5, 0x8a, 0x9b, 0xe4, 0xba, 0xba, 0xe4, 0xbb, 0xac, 0xe5, 0x8d, 0x87,
+ 0xe7, 0xba, 0xa7, 0xe9, 0x80, 0x9f, 0xe5, 0xba, 0xa6, 0xe4, 0xba, 0xba, 0xe7,
+ 0x89, 0xa9, 0xe8, 0xb0, 0x83, 0xe6, 0x95, 0xb4, 0xe6, 0xb5, 0x81, 0xe8, 0xa1,
+ 0x8c, 0xe9, 0x80, 0xa0, 0xe6, 0x88, 0x90, 0xe6, 0x96, 0x87, 0xe5, 0xad, 0x97,
+ 0xe9, 0x9f, 0xa9, 0xe5, 0x9b, 0xbd, 0xe8, 0xb4, 0xb8, 0xe6, 0x98, 0x93, 0xe5,
+ 0xbc, 0x80, 0xe5, 0xb1, 0x95, 0xe7, 0x9b, 0xb8, 0xe9, 0x97, 0x9c, 0xe8, 0xa1,
+ 0xa8, 0xe7, 0x8e, 0xb0, 0xe5, 0xbd, 0xb1, 0xe8, 0xa7, 0x86, 0xe5, 0xa6, 0x82,
+ 0xe6, 0xad, 0xa4, 0xe7, 0xbe, 0x8e, 0xe5, 0xae, 0xb9, 0xe5, 0xa4, 0xa7, 0xe5,
+ 0xb0, 0x8f, 0xe6, 0x8a, 0xa5, 0xe9, 0x81, 0x93, 0xe6, 0x9d, 0xa1, 0xe6, 0xac,
+ 0xbe, 0xe5, 0xbf, 0x83, 0xe6, 0x83, 0x85, 0xe8, 0xae, 0xb8, 0xe5, 0xa4, 0x9a,
+ 0xe6, 0xb3, 0x95, 0xe8, 0xa7, 0x84, 0xe5, 0xae, 0xb6, 0xe5, 0xb1, 0x85, 0xe4,
+ 0xb9, 0xa6, 0xe5, 0xba, 0x97, 0xe8, 0xbf, 0x9e, 0xe6, 0x8e, 0xa5, 0xe7, 0xab,
+ 0x8b, 0xe5, 0x8d, 0xb3, 0xe4, 0xb8, 0xbe, 0xe6, 0x8a, 0xa5, 0xe6, 0x8a, 0x80,
+ 0xe5, 0xb7, 0xa7, 0xe5, 0xa5, 0xa5, 0xe8, 0xbf, 0x90, 0xe7, 0x99, 0xbb, 0xe5,
+ 0x85, 0xa5, 0xe4, 0xbb, 0xa5, 0xe6, 0x9d, 0xa5, 0xe7, 0x90, 0x86, 0xe8, 0xae,
+ 0xba, 0xe4, 0xba, 0x8b, 0xe4, 0xbb, 0xb6, 0xe8, 0x87, 0xaa, 0xe7, 0x94, 0xb1,
+ 0xe4, 0xb8, 0xad, 0xe5, 0x8d, 0x8e, 0xe5, 0x8a, 0x9e, 0xe5, 0x85, 0xac, 0xe5,
+ 0xa6, 0x88, 0xe5, 0xa6, 0x88, 0xe7, 0x9c, 0x9f, 0xe6, 0xad, 0xa3, 0xe4, 0xb8,
+ 0x8d, 0xe9, 0x94, 0x99, 0xe5, 0x85, 0xa8, 0xe6, 0x96, 0x87, 0xe5, 0x90, 0x88,
+ 0xe5, 0x90, 0x8c, 0xe4, 0xbb, 0xb7, 0xe5, 0x80, 0xbc, 0xe5, 0x88, 0xab, 0xe4,
+ 0xba, 0xba, 0xe7, 0x9b, 0x91, 0xe7, 0x9d, 0xa3, 0xe5, 0x85, 0xb7, 0xe4, 0xbd,
+ 0x93, 0xe4, 0xb8, 0x96, 0xe7, 0xba, 0xaa, 0xe5, 0x9b, 0xa2, 0xe9, 0x98, 0x9f,
+ 0xe5, 0x88, 0x9b, 0xe4, 0xb8, 0x9a, 0xe6, 0x89, 0xbf, 0xe6, 0x8b, 0x85, 0xe5,
+ 0xa2, 0x9e, 0xe9, 0x95, 0xbf, 0xe6, 0x9c, 0x89, 0xe4, 0xba, 0xba, 0xe4, 0xbf,
+ 0x9d, 0xe6, 0x8c, 0x81, 0xe5, 0x95, 0x86, 0xe5, 0xae, 0xb6, 0xe7, 0xbb, 0xb4,
+ 0xe4, 0xbf, 0xae, 0xe5, 0x8f, 0xb0, 0xe6, 0xb9, 0xbe, 0xe5, 0xb7, 0xa6, 0xe5,
+ 0x8f, 0xb3, 0xe8, 0x82, 0xa1, 0xe4, 0xbb, 0xbd, 0xe7, 0xad, 0x94, 0xe6, 0xa1,
+ 0x88, 0xe5, 0xae, 0x9e, 0xe9, 0x99, 0x85, 0xe7, 0x94, 0xb5, 0xe4, 0xbf, 0xa1,
+ 0xe7, 0xbb, 0x8f, 0xe7, 0x90, 0x86, 0xe7, 0x94, 0x9f, 0xe5, 0x91, 0xbd, 0xe5,
+ 0xae, 0xa3, 0xe4, 0xbc, 0xa0, 0xe4, 0xbb, 0xbb, 0xe5, 0x8a, 0xa1, 0xe6, 0xad,
+ 0xa3, 0xe5, 0xbc, 0x8f, 0xe7, 0x89, 0xb9, 0xe8, 0x89, 0xb2, 0xe4, 0xb8, 0x8b,
+ 0xe6, 0x9d, 0xa5, 0xe5, 0x8d, 0x8f, 0xe4, 0xbc, 0x9a, 0xe5, 0x8f, 0xaa, 0xe8,
+ 0x83, 0xbd, 0xe5, 0xbd, 0x93, 0xe7, 0x84, 0xb6, 0xe9, 0x87, 0x8d, 0xe6, 0x96,
+ 0xb0, 0xe5, 0x85, 0xa7, 0xe5, 0xae, 0xb9, 0xe6, 0x8c, 0x87, 0xe5, 0xaf, 0xbc,
+ 0xe8, 0xbf, 0x90, 0xe8, 0xa1, 0x8c, 0xe6, 0x97, 0xa5, 0xe5, 0xbf, 0x97, 0xe8,
+ 0xb3, 0xa3, 0xe5, 0xae, 0xb6, 0xe8, 0xb6, 0x85, 0xe8, 0xbf, 0x87, 0xe5, 0x9c,
+ 0x9f, 0xe5, 0x9c, 0xb0, 0xe6, 0xb5, 0x99, 0xe6, 0xb1, 0x9f, 0xe6, 0x94, 0xaf,
+ 0xe4, 0xbb, 0x98, 0xe6, 0x8e, 0xa8, 0xe5, 0x87, 0xba, 0xe7, 0xab, 0x99, 0xe9,
+ 0x95, 0xbf, 0xe6, 0x9d, 0xad, 0xe5, 0xb7, 0x9e, 0xe6, 0x89, 0xa7, 0xe8, 0xa1,
+ 0x8c, 0xe5, 0x88, 0xb6, 0xe9, 0x80, 0xa0, 0xe4, 0xb9, 0x8b, 0xe4, 0xb8, 0x80,
+ 0xe6, 0x8e, 0xa8, 0xe5, 0xb9, 0xbf, 0xe7, 0x8e, 0xb0, 0xe5, 0x9c, 0xba, 0xe6,
+ 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, 0xe5, 0x8f, 0x98, 0xe5, 0x8c, 0x96, 0xe4, 0xbc,
+ 0xa0, 0xe7, 0xbb, 0x9f, 0xe6, 0xad, 0x8c, 0xe6, 0x89, 0x8b, 0xe4, 0xbf, 0x9d,
+ 0xe9, 0x99, 0xa9, 0xe8, 0xaf, 0xbe, 0xe7, 0xa8, 0x8b, 0xe5, 0x8c, 0xbb, 0xe7,
+ 0x96, 0x97, 0xe7, 0xbb, 0x8f, 0xe8, 0xbf, 0x87, 0xe8, 0xbf, 0x87, 0xe5, 0x8e,
+ 0xbb, 0xe4, 0xb9, 0x8b, 0xe5, 0x89, 0x8d, 0xe6, 0x94, 0xb6, 0xe5, 0x85, 0xa5,
+ 0xe5, 0xb9, 0xb4, 0xe5, 0xba, 0xa6, 0xe6, 0x9d, 0x82, 0xe5, 0xbf, 0x97, 0xe7,
+ 0xbe, 0x8e, 0xe4, 0xb8, 0xbd, 0xe6, 0x9c, 0x80, 0xe9, 0xab, 0x98, 0xe7, 0x99,
+ 0xbb, 0xe9, 0x99, 0x86, 0xe6, 0x9c, 0xaa, 0xe6, 0x9d, 0xa5, 0xe5, 0x8a, 0xa0,
+ 0xe5, 0xb7, 0xa5, 0xe5, 0x85, 0x8d, 0xe8, 0xb4, 0xa3, 0xe6, 0x95, 0x99, 0xe7,
+ 0xa8, 0x8b, 0xe7, 0x89, 0x88, 0xe5, 0x9d, 0x97, 0xe8, 0xba, 0xab, 0xe4, 0xbd,
+ 0x93, 0xe9, 0x87, 0x8d, 0xe5, 0xba, 0x86, 0xe5, 0x87, 0xba, 0xe5, 0x94, 0xae,
+ 0xe6, 0x88, 0x90, 0xe6, 0x9c, 0xac, 0xe5, 0xbd, 0xa2, 0xe5, 0xbc, 0x8f, 0xe5,
+ 0x9c, 0x9f, 0xe8, 0xb1, 0x86, 0xe5, 0x87, 0xba, 0xe5, 0x83, 0xb9, 0xe4, 0xb8,
+ 0x9c, 0xe6, 0x96, 0xb9, 0xe9, 0x82, 0xae, 0xe7, 0xae, 0xb1, 0xe5, 0x8d, 0x97,
+ 0xe4, 0xba, 0xac, 0xe6, 0xb1, 0x82, 0xe8, 0x81, 0x8c, 0xe5, 0x8f, 0x96, 0xe5,
+ 0xbe, 0x97, 0xe8, 0x81, 0x8c, 0xe4, 0xbd, 0x8d, 0xe7, 0x9b, 0xb8, 0xe4, 0xbf,
+ 0xa1, 0xe9, 0xa1, 0xb5, 0xe9, 0x9d, 0xa2, 0xe5, 0x88, 0x86, 0xe9, 0x92, 0x9f,
+ 0xe7, 0xbd, 0x91, 0xe9, 0xa1, 0xb5, 0xe7, 0xa1, 0xae, 0xe5, 0xae, 0x9a, 0xe5,
+ 0x9b, 0xbe, 0xe4, 0xbe, 0x8b, 0xe7, 0xbd, 0x91, 0xe5, 0x9d, 0x80, 0xe7, 0xa7,
+ 0xaf, 0xe6, 0x9e, 0x81, 0xe9, 0x94, 0x99, 0xe8, 0xaf, 0xaf, 0xe7, 0x9b, 0xae,
+ 0xe7, 0x9a, 0x84, 0xe5, 0xae, 0x9d, 0xe8, 0xb4, 0x9d, 0xe6, 0x9c, 0xba, 0xe5,
+ 0x85, 0xb3, 0xe9, 0xa3, 0x8e, 0xe9, 0x99, 0xa9, 0xe6, 0x8e, 0x88, 0xe6, 0x9d,
+ 0x83, 0xe7, 0x97, 0x85, 0xe6, 0xaf, 0x92, 0xe5, 0xae, 0xa0, 0xe7, 0x89, 0xa9,
+ 0xe9, 0x99, 0xa4, 0xe4, 0xba, 0x86, 0xe8, 0xa9, 0x95, 0xe8, 0xab, 0x96, 0xe7,
+ 0x96, 0xbe, 0xe7, 0x97, 0x85, 0xe5, 0x8f, 0x8a, 0xe6, 0x97, 0xb6, 0xe6, 0xb1,
+ 0x82, 0xe8, 0xb4, 0xad, 0xe7, 0xab, 0x99, 0xe7, 0x82, 0xb9, 0xe5, 0x84, 0xbf,
+ 0xe7, 0xab, 0xa5, 0xe6, 0xaf, 0x8f, 0xe5, 0xa4, 0xa9, 0xe4, 0xb8, 0xad, 0xe5,
+ 0xa4, 0xae, 0xe8, 0xae, 0xa4, 0xe8, 0xaf, 0x86, 0xe6, 0xaf, 0x8f, 0xe4, 0xb8,
+ 0xaa, 0xe5, 0xa4, 0xa9, 0xe6, 0xb4, 0xa5, 0xe5, 0xad, 0x97, 0xe4, 0xbd, 0x93,
+ 0xe5, 0x8f, 0xb0, 0xe7, 0x81, 0xa3, 0xe7, 0xbb, 0xb4, 0xe6, 0x8a, 0xa4, 0xe6,
+ 0x9c, 0xac, 0xe9, 0xa1, 0xb5, 0xe4, 0xb8, 0xaa, 0xe6, 0x80, 0xa7, 0xe5, 0xae,
+ 0x98, 0xe6, 0x96, 0xb9, 0xe5, 0xb8, 0xb8, 0xe8, 0xa7, 0x81, 0xe7, 0x9b, 0xb8,
+ 0xe6, 0x9c, 0xba, 0xe6, 0x88, 0x98, 0xe7, 0x95, 0xa5, 0xe5, 0xba, 0x94, 0xe5,
+ 0xbd, 0x93, 0xe5, 0xbe, 0x8b, 0xe5, 0xb8, 0x88, 0xe6, 0x96, 0xb9, 0xe4, 0xbe,
+ 0xbf, 0xe6, 0xa0, 0xa1, 0xe5, 0x9b, 0xad, 0xe8, 0x82, 0xa1, 0xe5, 0xb8, 0x82,
+ 0xe6, 0x88, 0xbf, 0xe5, 0xb1, 0x8b, 0xe6, 0xa0, 0x8f, 0xe7, 0x9b, 0xae, 0xe5,
+ 0x91, 0x98, 0xe5, 0xb7, 0xa5, 0xe5, 0xaf, 0xbc, 0xe8, 0x87, 0xb4, 0xe7, 0xaa,
+ 0x81, 0xe7, 0x84, 0xb6, 0xe9, 0x81, 0x93, 0xe5, 0x85, 0xb7, 0xe6, 0x9c, 0xac,
+ 0xe7, 0xbd, 0x91, 0xe7, 0xbb, 0x93, 0xe5, 0x90, 0x88, 0xe6, 0xa1, 0xa3, 0xe6,
+ 0xa1, 0x88, 0xe5, 0x8a, 0xb3, 0xe5, 0x8a, 0xa8, 0xe5, 0x8f, 0xa6, 0xe5, 0xa4,
+ 0x96, 0xe7, 0xbe, 0x8e, 0xe5, 0x85, 0x83, 0xe5, 0xbc, 0x95, 0xe8, 0xb5, 0xb7,
+ 0xe6, 0x94, 0xb9, 0xe5, 0x8f, 0x98, 0xe7, 0xac, 0xac, 0xe5, 0x9b, 0x9b, 0xe4,
+ 0xbc, 0x9a, 0xe8, 0xae, 0xa1, 0xe8, 0xaa, 0xaa, 0xe6, 0x98, 0x8e, 0xe9, 0x9a,
+ 0x90, 0xe7, 0xa7, 0x81, 0xe5, 0xae, 0x9d, 0xe5, 0xae, 0x9d, 0xe8, 0xa7, 0x84,
+ 0xe8, 0x8c, 0x83, 0xe6, 0xb6, 0x88, 0xe8, 0xb4, 0xb9, 0xe5, 0x85, 0xb1, 0xe5,
+ 0x90, 0x8c, 0xe5, 0xbf, 0x98, 0xe8, 0xae, 0xb0, 0xe4, 0xbd, 0x93, 0xe7, 0xb3,
+ 0xbb, 0xe5, 0xb8, 0xa6, 0xe6, 0x9d, 0xa5, 0xe5, 0x90, 0x8d, 0xe5, 0xad, 0x97,
+ 0xe7, 0x99, 0xbc, 0xe8, 0xa1, 0xa8, 0xe5, 0xbc, 0x80, 0xe6, 0x94, 0xbe, 0xe5,
+ 0x8a, 0xa0, 0xe7, 0x9b, 0x9f, 0xe5, 0x8f, 0x97, 0xe5, 0x88, 0xb0, 0xe4, 0xba,
+ 0x8c, 0xe6, 0x89, 0x8b, 0xe5, 0xa4, 0xa7, 0xe9, 0x87, 0x8f, 0xe6, 0x88, 0x90,
+ 0xe4, 0xba, 0xba, 0xe6, 0x95, 0xb0, 0xe9, 0x87, 0x8f, 0xe5, 0x85, 0xb1, 0xe4,
+ 0xba, 0xab, 0xe5, 0x8c, 0xba, 0xe5, 0x9f, 0x9f, 0xe5, 0xa5, 0xb3, 0xe5, 0xad,
+ 0xa9, 0xe5, 0x8e, 0x9f, 0xe5, 0x88, 0x99, 0xe6, 0x89, 0x80, 0xe5, 0x9c, 0xa8,
+ 0xe7, 0xbb, 0x93, 0xe6, 0x9d, 0x9f, 0xe9, 0x80, 0x9a, 0xe4, 0xbf, 0xa1, 0xe8,
+ 0xb6, 0x85, 0xe7, 0xba, 0xa7, 0xe9, 0x85, 0x8d, 0xe7, 0xbd, 0xae, 0xe5, 0xbd,
+ 0x93, 0xe6, 0x97, 0xb6, 0xe4, 0xbc, 0x98, 0xe7, 0xa7, 0x80, 0xe6, 0x80, 0xa7,
+ 0xe6, 0x84, 0x9f, 0xe6, 0x88, 0xbf, 0xe4, 0xba, 0xa7, 0xe9, 0x81, 0x8a, 0xe6,
+ 0x88, 0xb2, 0xe5, 0x87, 0xba, 0xe5, 0x8f, 0xa3, 0xe6, 0x8f, 0x90, 0xe4, 0xba,
+ 0xa4, 0xe5, 0xb0, 0xb1, 0xe4, 0xb8, 0x9a, 0xe4, 0xbf, 0x9d, 0xe5, 0x81, 0xa5,
+ 0xe7, 0xa8, 0x8b, 0xe5, 0xba, 0xa6, 0xe5, 0x8f, 0x82, 0xe6, 0x95, 0xb0, 0xe4,
+ 0xba, 0x8b, 0xe4, 0xb8, 0x9a, 0xe6, 0x95, 0xb4, 0xe4, 0xb8, 0xaa, 0xe5, 0xb1,
+ 0xb1, 0xe4, 0xb8, 0x9c, 0xe6, 0x83, 0x85, 0xe6, 0x84, 0x9f, 0xe7, 0x89, 0xb9,
+ 0xe6, 0xae, 0x8a, 0xe5, 0x88, 0x86, 0xe9, 0xa1, 0x9e, 0xe6, 0x90, 0x9c, 0xe5,
+ 0xb0, 0x8b, 0xe5, 0xb1, 0x9e, 0xe4, 0xba, 0x8e, 0xe9, 0x97, 0xa8, 0xe6, 0x88,
+ 0xb7, 0xe8, 0xb4, 0xa2, 0xe5, 0x8a, 0xa1, 0xe5, 0xa3, 0xb0, 0xe9, 0x9f, 0xb3,
+ 0xe5, 0x8f, 0x8a, 0xe5, 0x85, 0xb6, 0xe8, 0xb4, 0xa2, 0xe7, 0xbb, 0x8f, 0xe5,
+ 0x9d, 0x9a, 0xe6, 0x8c, 0x81, 0xe5, 0xb9, 0xb2, 0xe9, 0x83, 0xa8, 0xe6, 0x88,
+ 0x90, 0xe7, 0xab, 0x8b, 0xe5, 0x88, 0xa9, 0xe7, 0x9b, 0x8a, 0xe8, 0x80, 0x83,
+ 0xe8, 0x99, 0x91, 0xe6, 0x88, 0x90, 0xe9, 0x83, 0xbd, 0xe5, 0x8c, 0x85, 0xe8,
+ 0xa3, 0x85, 0xe7, 0x94, 0xa8, 0xe6, 0x88, 0xb6, 0xe6, 0xaf, 0x94, 0xe8, 0xb5,
+ 0x9b, 0xe6, 0x96, 0x87, 0xe6, 0x98, 0x8e, 0xe6, 0x8b, 0x9b, 0xe5, 0x95, 0x86,
+ 0xe5, 0xae, 0x8c, 0xe6, 0x95, 0xb4, 0xe7, 0x9c, 0x9f, 0xe6, 0x98, 0xaf, 0xe7,
+ 0x9c, 0xbc, 0xe7, 0x9d, 0x9b, 0xe4, 0xbc, 0x99, 0xe4, 0xbc, 0xb4, 0xe5, 0xa8,
+ 0x81, 0xe6, 0x9c, 0x9b, 0xe9, 0xa2, 0x86, 0xe5, 0x9f, 0x9f, 0xe5, 0x8d, 0xab,
+ 0xe7, 0x94, 0x9f, 0xe4, 0xbc, 0x98, 0xe6, 0x83, 0xa0, 0xe8, 0xab, 0x96, 0xe5,
+ 0xa3, 0x87, 0xe5, 0x85, 0xac, 0xe5, 0x85, 0xb1, 0xe8, 0x89, 0xaf, 0xe5, 0xa5,
+ 0xbd, 0xe5, 0x85, 0x85, 0xe5, 0x88, 0x86, 0xe7, 0xac, 0xa6, 0xe5, 0x90, 0x88,
+ 0xe9, 0x99, 0x84, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0xb9, 0xe7, 0x82, 0xb9, 0xe4,
+ 0xb8, 0x8d, 0xe5, 0x8f, 0xaf, 0xe8, 0x8b, 0xb1, 0xe6, 0x96, 0x87, 0xe8, 0xb5,
+ 0x84, 0xe4, 0xba, 0xa7, 0xe6, 0xa0, 0xb9, 0xe6, 0x9c, 0xac, 0xe6, 0x98, 0x8e,
+ 0xe6, 0x98, 0xbe, 0xe5, 0xaf, 0x86, 0xe7, 0xa2, 0xbc, 0xe5, 0x85, 0xac, 0xe4,
+ 0xbc, 0x97, 0xe6, 0xb0, 0x91, 0xe6, 0x97, 0x8f, 0xe6, 0x9b, 0xb4, 0xe5, 0x8a,
+ 0xa0, 0xe4, 0xba, 0xab, 0xe5, 0x8f, 0x97, 0xe5, 0x90, 0x8c, 0xe5, 0xad, 0xa6,
+ 0xe5, 0x90, 0xaf, 0xe5, 0x8a, 0xa8, 0xe9, 0x80, 0x82, 0xe5, 0x90, 0x88, 0xe5,
+ 0x8e, 0x9f, 0xe6, 0x9d, 0xa5, 0xe9, 0x97, 0xae, 0xe7, 0xad, 0x94, 0xe6, 0x9c,
+ 0xac, 0xe6, 0x96, 0x87, 0xe7, 0xbe, 0x8e, 0xe9, 0xa3, 0x9f, 0xe7, 0xbb, 0xbf,
+ 0xe8, 0x89, 0xb2, 0xe7, 0xa8, 0xb3, 0xe5, 0xae, 0x9a, 0xe7, 0xbb, 0x88, 0xe4,
+ 0xba, 0x8e, 0xe7, 0x94, 0x9f, 0xe7, 0x89, 0xa9, 0xe4, 0xbe, 0x9b, 0xe6, 0xb1,
+ 0x82, 0xe6, 0x90, 0x9c, 0xe7, 0x8b, 0x90, 0xe5, 0x8a, 0x9b, 0xe9, 0x87, 0x8f,
+ 0xe4, 0xb8, 0xa5, 0xe9, 0x87, 0x8d, 0xe6, 0xb0, 0xb8, 0xe8, 0xbf, 0x9c, 0xe5,
+ 0x86, 0x99, 0xe7, 0x9c, 0x9f, 0xe6, 0x9c, 0x89, 0xe9, 0x99, 0x90, 0xe7, 0xab,
+ 0x9e, 0xe4, 0xba, 0x89, 0xe5, 0xaf, 0xb9, 0xe8, 0xb1, 0xa1, 0xe8, 0xb4, 0xb9,
+ 0xe7, 0x94, 0xa8, 0xe4, 0xb8, 0x8d, 0xe5, 0xa5, 0xbd, 0xe7, 0xbb, 0x9d, 0xe5,
+ 0xaf, 0xb9, 0xe5, 0x8d, 0x81, 0xe5, 0x88, 0x86, 0xe4, 0xbf, 0x83, 0xe8, 0xbf,
+ 0x9b, 0xe7, 0x82, 0xb9, 0xe8, 0xaf, 0x84, 0xe5, 0xbd, 0xb1, 0xe9, 0x9f, 0xb3,
+ 0xe4, 0xbc, 0x98, 0xe5, 0x8a, 0xbf, 0xe4, 0xb8, 0x8d, 0xe5, 0xb0, 0x91, 0xe6,
+ 0xac, 0xa3, 0xe8, 0xb5, 0x8f, 0xe5, 0xb9, 0xb6, 0xe4, 0xb8, 0x94, 0xe6, 0x9c,
+ 0x89, 0xe7, 0x82, 0xb9, 0xe6, 0x96, 0xb9, 0xe5, 0x90, 0x91, 0xe5, 0x85, 0xa8,
+ 0xe6, 0x96, 0xb0, 0xe4, 0xbf, 0xa1, 0xe7, 0x94, 0xa8, 0xe8, 0xae, 0xbe, 0xe6,
+ 0x96, 0xbd, 0xe5, 0xbd, 0xa2, 0xe8, 0xb1, 0xa1, 0xe8, 0xb5, 0x84, 0xe6, 0xa0,
+ 0xbc, 0xe7, 0xaa, 0x81, 0xe7, 0xa0, 0xb4, 0xe9, 0x9a, 0x8f, 0xe7, 0x9d, 0x80,
+ 0xe9, 0x87, 0x8d, 0xe5, 0xa4, 0xa7, 0xe4, 0xba, 0x8e, 0xe6, 0x98, 0xaf, 0xe6,
+ 0xaf, 0x95, 0xe4, 0xb8, 0x9a, 0xe6, 0x99, 0xba, 0xe8, 0x83, 0xbd, 0xe5, 0x8c,
+ 0x96, 0xe5, 0xb7, 0xa5, 0xe5, 0xae, 0x8c, 0xe7, 0xbe, 0x8e, 0xe5, 0x95, 0x86,
+ 0xe5, 0x9f, 0x8e, 0xe7, 0xbb, 0x9f, 0xe4, 0xb8, 0x80, 0xe5, 0x87, 0xba, 0xe7,
+ 0x89, 0x88, 0xe6, 0x89, 0x93, 0xe9, 0x80, 0xa0, 0xe7, 0x94, 0xa2, 0xe5, 0x93,
+ 0x81, 0xe6, 0xa6, 0x82, 0xe5, 0x86, 0xb5, 0xe7, 0x94, 0xa8, 0xe4, 0xba, 0x8e,
+ 0xe4, 0xbf, 0x9d, 0xe7, 0x95, 0x99, 0xe5, 0x9b, 0xa0, 0xe7, 0xb4, 0xa0, 0xe4,
+ 0xb8, 0xad, 0xe5, 0x9c, 0x8b, 0xe5, 0xad, 0x98, 0xe5, 0x82, 0xa8, 0xe8, 0xb4,
+ 0xb4, 0xe5, 0x9b, 0xbe, 0xe6, 0x9c, 0x80, 0xe6, 0x84, 0x9b, 0xe9, 0x95, 0xbf,
+ 0xe6, 0x9c, 0x9f, 0xe5, 0x8f, 0xa3, 0xe4, 0xbb, 0xb7, 0xe7, 0x90, 0x86, 0xe8,
+ 0xb4, 0xa2, 0xe5, 0x9f, 0xba, 0xe5, 0x9c, 0xb0, 0xe5, 0xae, 0x89, 0xe6, 0x8e,
+ 0x92, 0xe6, 0xad, 0xa6, 0xe6, 0xb1, 0x89, 0xe9, 0x87, 0x8c, 0xe9, 0x9d, 0xa2,
+ 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe5, 0xa4, 0xa9, 0xe7, 0xa9, 0xba, 0xe9,
+ 0xa6, 0x96, 0xe5, 0x85, 0x88, 0xe5, 0xae, 0x8c, 0xe5, 0x96, 0x84, 0xe9, 0xa9,
+ 0xb1, 0xe5, 0x8a, 0xa8, 0xe4, 0xb8, 0x8b, 0xe9, 0x9d, 0xa2, 0xe4, 0xb8, 0x8d,
+ 0xe5, 0x86, 0x8d, 0xe8, 0xaf, 0x9a, 0xe4, 0xbf, 0xa1, 0xe6, 0x84, 0x8f, 0xe4,
+ 0xb9, 0x89, 0xe9, 0x98, 0xb3, 0xe5, 0x85, 0x89, 0xe8, 0x8b, 0xb1, 0xe5, 0x9b,
+ 0xbd, 0xe6, 0xbc, 0x82, 0xe4, 0xba, 0xae, 0xe5, 0x86, 0x9b, 0xe4, 0xba, 0x8b,
+ 0xe7, 0x8e, 0xa9, 0xe5, 0xae, 0xb6, 0xe7, 0xbe, 0xa4, 0xe4, 0xbc, 0x97, 0xe5,
+ 0x86, 0x9c, 0xe6, 0xb0, 0x91, 0xe5, 0x8d, 0xb3, 0xe5, 0x8f, 0xaf, 0xe5, 0x90,
+ 0x8d, 0xe7, 0xa8, 0xb1, 0xe5, 0xae, 0xb6, 0xe5, 0x85, 0xb7, 0xe5, 0x8a, 0xa8,
+ 0xe7, 0x94, 0xbb, 0xe6, 0x83, 0xb3, 0xe5, 0x88, 0xb0, 0xe6, 0xb3, 0xa8, 0xe6,
+ 0x98, 0x8e, 0xe5, 0xb0, 0x8f, 0xe5, 0xad, 0xa6, 0xe6, 0x80, 0xa7, 0xe8, 0x83,
+ 0xbd, 0xe8, 0x80, 0x83, 0xe7, 0xa0, 0x94, 0xe7, 0xa1, 0xac, 0xe4, 0xbb, 0xb6,
+ 0xe8, 0xa7, 0x82, 0xe7, 0x9c, 0x8b, 0xe6, 0xb8, 0x85, 0xe6, 0xa5, 0x9a, 0xe6,
+ 0x90, 0x9e, 0xe7, 0xac, 0x91, 0xe9, 0xa6, 0x96, 0xe9, 0xa0, 0x81, 0xe9, 0xbb,
+ 0x84, 0xe9, 0x87, 0x91, 0xe9, 0x80, 0x82, 0xe7, 0x94, 0xa8, 0xe6, 0xb1, 0x9f,
+ 0xe8, 0x8b, 0x8f, 0xe7, 0x9c, 0x9f, 0xe5, 0xae, 0x9e, 0xe4, 0xb8, 0xbb, 0xe7,
+ 0xae, 0xa1, 0xe9, 0x98, 0xb6, 0xe6, 0xae, 0xb5, 0xe8, 0xa8, 0xbb, 0xe5, 0x86,
+ 0x8a, 0xe7, 0xbf, 0xbb, 0xe8, 0xaf, 0x91, 0xe6, 0x9d, 0x83, 0xe5, 0x88, 0xa9,
+ 0xe5, 0x81, 0x9a, 0xe5, 0xa5, 0xbd, 0xe4, 0xbc, 0xbc, 0xe4, 0xb9, 0x8e, 0xe9,
+ 0x80, 0x9a, 0xe8, 0xae, 0xaf, 0xe6, 0x96, 0xbd, 0xe5, 0xb7, 0xa5, 0xe7, 0x8b,
+ 0x80, 0xe6, 0x85, 0x8b, 0xe4, 0xb9, 0x9f, 0xe8, 0xae, 0xb8, 0xe7, 0x8e, 0xaf,
+ 0xe4, 0xbf, 0x9d, 0xe5, 0x9f, 0xb9, 0xe5, 0x85, 0xbb, 0xe6, 0xa6, 0x82, 0xe5,
+ 0xbf, 0xb5, 0xe5, 0xa4, 0xa7, 0xe5, 0x9e, 0x8b, 0xe6, 0x9c, 0xba, 0xe7, 0xa5,
+ 0xa8, 0xe7, 0x90, 0x86, 0xe8, 0xa7, 0xa3, 0xe5, 0x8c, 0xbf, 0xe5, 0x90, 0x8d,
+ 0x63, 0x75, 0x61, 0x6e, 0x64, 0x6f, 0x65, 0x6e, 0x76, 0x69, 0x61, 0x72, 0x6d,
+ 0x61, 0x64, 0x72, 0x69, 0x64, 0x62, 0x75, 0x73, 0x63, 0x61, 0x72, 0x69, 0x6e,
+ 0x69, 0x63, 0x69, 0x6f, 0x74, 0x69, 0x65, 0x6d, 0x70, 0x6f, 0x70, 0x6f, 0x72,
+ 0x71, 0x75, 0x65, 0x63, 0x75, 0x65, 0x6e, 0x74, 0x61, 0x65, 0x73, 0x74, 0x61,
+ 0x64, 0x6f, 0x70, 0x75, 0x65, 0x64, 0x65, 0x6e, 0x6a, 0x75, 0x65, 0x67, 0x6f,
+ 0x73, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x73, 0x74, 0xc3, 0xa1, 0x6e,
+ 0x6e, 0x6f, 0x6d, 0x62, 0x72, 0x65, 0x74, 0x69, 0x65, 0x6e, 0x65, 0x6e, 0x70,
+ 0x65, 0x72, 0x66, 0x69, 0x6c, 0x6d, 0x61, 0x6e, 0x65, 0x72, 0x61, 0x61, 0x6d,
+ 0x69, 0x67, 0x6f, 0x73, 0x63, 0x69, 0x75, 0x64, 0x61, 0x64, 0x63, 0x65, 0x6e,
+ 0x74, 0x72, 0x6f, 0x61, 0x75, 0x6e, 0x71, 0x75, 0x65, 0x70, 0x75, 0x65, 0x64,
+ 0x65, 0x73, 0x64, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x70, 0x72, 0x69, 0x6d, 0x65,
+ 0x72, 0x70, 0x72, 0x65, 0x63, 0x69, 0x6f, 0x73, 0x65, 0x67, 0xc3, 0xba, 0x6e,
+ 0x62, 0x75, 0x65, 0x6e, 0x6f, 0x73, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x70,
+ 0x75, 0x6e, 0x74, 0x6f, 0x73, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x68, 0x61,
+ 0x62, 0xc3, 0xad, 0x61, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x6e, 0x75, 0x65,
+ 0x76, 0x6f, 0x73, 0x75, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x63, 0x61, 0x72, 0x6c,
+ 0x6f, 0x73, 0x65, 0x71, 0x75, 0x69, 0x70, 0x6f, 0x6e, 0x69, 0xc3, 0xb1, 0x6f,
+ 0x73, 0x6d, 0x75, 0x63, 0x68, 0x6f, 0x73, 0x61, 0x6c, 0x67, 0x75, 0x6e, 0x61,
+ 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x6e, 0x70,
+ 0x61, 0x72, 0x74, 0x69, 0x72, 0x61, 0x72, 0x72, 0x69, 0x62, 0x61, 0x6d, 0x61,
+ 0x72, 0xc3, 0xad, 0x61, 0x68, 0x6f, 0x6d, 0x62, 0x72, 0x65, 0x65, 0x6d, 0x70,
+ 0x6c, 0x65, 0x6f, 0x76, 0x65, 0x72, 0x64, 0x61, 0x64, 0x63, 0x61, 0x6d, 0x62,
+ 0x69, 0x6f, 0x6d, 0x75, 0x63, 0x68, 0x61, 0x73, 0x66, 0x75, 0x65, 0x72, 0x6f,
+ 0x6e, 0x70, 0x61, 0x73, 0x61, 0x64, 0x6f, 0x6c, 0xc3, 0xad, 0x6e, 0x65, 0x61,
+ 0x70, 0x61, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x75, 0x65, 0x76, 0x61, 0x73, 0x63,
+ 0x75, 0x72, 0x73, 0x6f, 0x73, 0x65, 0x73, 0x74, 0x61, 0x62, 0x61, 0x71, 0x75,
+ 0x69, 0x65, 0x72, 0x6f, 0x6c, 0x69, 0x62, 0x72, 0x6f, 0x73, 0x63, 0x75, 0x61,
+ 0x6e, 0x74, 0x6f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x6f, 0x6d, 0x69, 0x67, 0x75,
+ 0x65, 0x6c, 0x76, 0x61, 0x72, 0x69, 0x6f, 0x73, 0x63, 0x75, 0x61, 0x74, 0x72,
+ 0x6f, 0x74, 0x69, 0x65, 0x6e, 0x65, 0x73, 0x67, 0x72, 0x75, 0x70, 0x6f, 0x73,
+ 0x73, 0x65, 0x72, 0xc3, 0xa1, 0x6e, 0x65, 0x75, 0x72, 0x6f, 0x70, 0x61, 0x6d,
+ 0x65, 0x64, 0x69, 0x6f, 0x73, 0x66, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x61, 0x63,
+ 0x65, 0x72, 0x63, 0x61, 0x64, 0x65, 0x6d, 0xc3, 0xa1, 0x73, 0x6f, 0x66, 0x65,
+ 0x72, 0x74, 0x61, 0x63, 0x6f, 0x63, 0x68, 0x65, 0x73, 0x6d, 0x6f, 0x64, 0x65,
+ 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x61, 0x6c, 0x65, 0x74, 0x72, 0x61,
+ 0x73, 0x61, 0x6c, 0x67, 0xc3, 0xba, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x61,
+ 0x63, 0x75, 0x61, 0x6c, 0x65, 0x73, 0x65, 0x78, 0x69, 0x73, 0x74, 0x65, 0x63,
+ 0x75, 0x65, 0x72, 0x70, 0x6f, 0x73, 0x69, 0x65, 0x6e, 0x64, 0x6f, 0x70, 0x72,
+ 0x65, 0x6e, 0x73, 0x61, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x72, 0x76, 0x69, 0x61,
+ 0x6a, 0x65, 0x73, 0x64, 0x69, 0x6e, 0x65, 0x72, 0x6f, 0x6d, 0x75, 0x72, 0x63,
+ 0x69, 0x61, 0x70, 0x6f, 0x64, 0x72, 0xc3, 0xa1, 0x70, 0x75, 0x65, 0x73, 0x74,
+ 0x6f, 0x64, 0x69, 0x61, 0x72, 0x69, 0x6f, 0x70, 0x75, 0x65, 0x62, 0x6c, 0x6f,
+ 0x71, 0x75, 0x69, 0x65, 0x72, 0x65, 0x6d, 0x61, 0x6e, 0x75, 0x65, 0x6c, 0x70,
+ 0x72, 0x6f, 0x70, 0x69, 0x6f, 0x63, 0x72, 0x69, 0x73, 0x69, 0x73, 0x63, 0x69,
+ 0x65, 0x72, 0x74, 0x6f, 0x73, 0x65, 0x67, 0x75, 0x72, 0x6f, 0x6d, 0x75, 0x65,
+ 0x72, 0x74, 0x65, 0x66, 0x75, 0x65, 0x6e, 0x74, 0x65, 0x63, 0x65, 0x72, 0x72,
+ 0x61, 0x72, 0x67, 0x72, 0x61, 0x6e, 0x64, 0x65, 0x65, 0x66, 0x65, 0x63, 0x74,
+ 0x6f, 0x70, 0x61, 0x72, 0x74, 0x65, 0x73, 0x6d, 0x65, 0x64, 0x69, 0x64, 0x61,
+ 0x70, 0x72, 0x6f, 0x70, 0x69, 0x61, 0x6f, 0x66, 0x72, 0x65, 0x63, 0x65, 0x74,
+ 0x69, 0x65, 0x72, 0x72, 0x61, 0x65, 0x2d, 0x6d, 0x61, 0x69, 0x6c, 0x76, 0x61,
+ 0x72, 0x69, 0x61, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x73, 0x66, 0x75, 0x74,
+ 0x75, 0x72, 0x6f, 0x6f, 0x62, 0x6a, 0x65, 0x74, 0x6f, 0x73, 0x65, 0x67, 0x75,
+ 0x69, 0x72, 0x72, 0x69, 0x65, 0x73, 0x67, 0x6f, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
+ 0x73, 0x6d, 0x69, 0x73, 0x6d, 0x6f, 0x73, 0xc3, 0xba, 0x6e, 0x69, 0x63, 0x6f,
+ 0x63, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x73, 0x72,
+ 0x61, 0x7a, 0xc3, 0xb3, 0x6e, 0x64, 0x65, 0x62, 0x69, 0x64, 0x6f, 0x70, 0x72,
+ 0x75, 0x65, 0x62, 0x61, 0x74, 0x6f, 0x6c, 0x65, 0x64, 0x6f, 0x74, 0x65, 0x6e,
+ 0xc3, 0xad, 0x61, 0x6a, 0x65, 0x73, 0xc3, 0xba, 0x73, 0x65, 0x73, 0x70, 0x65,
+ 0x72, 0x6f, 0x63, 0x6f, 0x63, 0x69, 0x6e, 0x61, 0x6f, 0x72, 0x69, 0x67, 0x65,
+ 0x6e, 0x74, 0x69, 0x65, 0x6e, 0x64, 0x61, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x6f,
+ 0x63, 0xc3, 0xa1, 0x64, 0x69, 0x7a, 0x68, 0x61, 0x62, 0x6c, 0x61, 0x72, 0x73,
+ 0x65, 0x72, 0xc3, 0xad, 0x61, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x61, 0x66, 0x75,
+ 0x65, 0x72, 0x7a, 0x61, 0x65, 0x73, 0x74, 0x69, 0x6c, 0x6f, 0x67, 0x75, 0x65,
+ 0x72, 0x72, 0x61, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x72, 0xc3, 0xa9, 0x78, 0x69,
+ 0x74, 0x6f, 0x6c, 0xc3, 0xb3, 0x70, 0x65, 0x7a, 0x61, 0x67, 0x65, 0x6e, 0x64,
+ 0x61, 0x76, 0xc3, 0xad, 0x64, 0x65, 0x6f, 0x65, 0x76, 0x69, 0x74, 0x61, 0x72,
+ 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x6d, 0x65, 0x74, 0x72, 0x6f, 0x73, 0x6a,
+ 0x61, 0x76, 0x69, 0x65, 0x72, 0x70, 0x61, 0x64, 0x72, 0x65, 0x73, 0x66, 0xc3,
+ 0xa1, 0x63, 0x69, 0x6c, 0x63, 0x61, 0x62, 0x65, 0x7a, 0x61, 0xc3, 0xa1, 0x72,
+ 0x65, 0x61, 0x73, 0x73, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x65, 0x6e, 0x76, 0xc3,
+ 0xad, 0x6f, 0x6a, 0x61, 0x70, 0xc3, 0xb3, 0x6e, 0x61, 0x62, 0x75, 0x73, 0x6f,
+ 0x73, 0x62, 0x69, 0x65, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x78, 0x74, 0x6f, 0x73,
+ 0x6c, 0x6c, 0x65, 0x76, 0x61, 0x72, 0x70, 0x75, 0x65, 0x64, 0x61, 0x6e, 0x66,
+ 0x75, 0x65, 0x72, 0x74, 0x65, 0x63, 0x6f, 0x6d, 0xc3, 0xba, 0x6e, 0x63, 0x6c,
+ 0x61, 0x73, 0x65, 0x73, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x6f, 0x74, 0x65, 0x6e,
+ 0x69, 0x64, 0x6f, 0x62, 0x69, 0x6c, 0x62, 0x61, 0x6f, 0x75, 0x6e, 0x69, 0x64,
+ 0x61, 0x64, 0x65, 0x73, 0x74, 0xc3, 0xa1, 0x73, 0x65, 0x64, 0x69, 0x74, 0x61,
+ 0x72, 0x63, 0x72, 0x65, 0x61, 0x64, 0x6f, 0xd0, 0xb4, 0xd0, 0xbb, 0xd1, 0x8f,
+ 0xd1, 0x87, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xba, 0xd0, 0xb0, 0xd0, 0xba, 0xd0,
+ 0xb8, 0xd0, 0xbb, 0xd0, 0xb8, 0xd1, 0x8d, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xb2,
+ 0xd1, 0x81, 0xd0, 0xb5, 0xd0, 0xb5, 0xd0, 0xb3, 0xd0, 0xbe, 0xd0, 0xbf, 0xd1,
+ 0x80, 0xd0, 0xb8, 0xd1, 0x82, 0xd0, 0xb0, 0xd0, 0xba, 0xd0, 0xb5, 0xd1, 0x89,
+ 0xd0, 0xb5, 0xd1, 0x83, 0xd0, 0xb6, 0xd0, 0xb5, 0xd0, 0x9a, 0xd0, 0xb0, 0xd0,
+ 0xba, 0xd0, 0xb1, 0xd0, 0xb5, 0xd0, 0xb7, 0xd0, 0xb1, 0xd1, 0x8b, 0xd0, 0xbb,
+ 0xd0, 0xbe, 0xd0, 0xbd, 0xd0, 0xb8, 0xd0, 0x92, 0xd1, 0x81, 0xd0, 0xb5, 0xd0,
+ 0xbf, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xad, 0xd1, 0x82, 0xd0, 0xbe, 0xd1, 0x82,
+ 0xd0, 0xbe, 0xd0, 0xbc, 0xd1, 0x87, 0xd0, 0xb5, 0xd0, 0xbc, 0xd0, 0xbd, 0xd0,
+ 0xb5, 0xd1, 0x82, 0xd0, 0xbb, 0xd0, 0xb5, 0xd1, 0x82, 0xd1, 0x80, 0xd0, 0xb0,
+ 0xd0, 0xb7, 0xd0, 0xbe, 0xd0, 0xbd, 0xd0, 0xb0, 0xd0, 0xb3, 0xd0, 0xb4, 0xd0,
+ 0xb5, 0xd0, 0xbc, 0xd0, 0xbd, 0xd0, 0xb5, 0xd0, 0x94, 0xd0, 0xbb, 0xd1, 0x8f,
+ 0xd0, 0x9f, 0xd1, 0x80, 0xd0, 0xb8, 0xd0, 0xbd, 0xd0, 0xb0, 0xd1, 0x81, 0xd0,
+ 0xbd, 0xd0, 0xb8, 0xd1, 0x85, 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xbc, 0xd0, 0xba,
+ 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xb3, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xb2, 0xd0,
+ 0xbe, 0xd1, 0x82, 0xd1, 0x82, 0xd0, 0xb0, 0xd0, 0xbc, 0xd0, 0xa1, 0xd0, 0xa8,
+ 0xd0, 0x90, 0xd0, 0xbc, 0xd0, 0xb0, 0xd1, 0x8f, 0xd0, 0xa7, 0xd1, 0x82, 0xd0,
+ 0xbe, 0xd0, 0xb2, 0xd0, 0xb0, 0xd1, 0x81, 0xd0, 0xb2, 0xd0, 0xb0, 0xd0, 0xbc,
+ 0xd0, 0xb5, 0xd0, 0xbc, 0xd1, 0x83, 0xd0, 0xa2, 0xd0, 0xb0, 0xd0, 0xba, 0xd0,
+ 0xb4, 0xd0, 0xb2, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xb0, 0xd0, 0xbc, 0xd1, 0x8d,
+ 0xd1, 0x82, 0xd0, 0xb8, 0xd1, 0x8d, 0xd1, 0x82, 0xd1, 0x83, 0xd0, 0x92, 0xd0,
+ 0xb0, 0xd0, 0xbc, 0xd1, 0x82, 0xd0, 0xb5, 0xd1, 0x85, 0xd0, 0xbf, 0xd1, 0x80,
+ 0xd0, 0xbe, 0xd1, 0x82, 0xd1, 0x83, 0xd1, 0x82, 0xd0, 0xbd, 0xd0, 0xb0, 0xd0,
+ 0xb4, 0xd0, 0xb4, 0xd0, 0xbd, 0xd1, 0x8f, 0xd0, 0x92, 0xd0, 0xbe, 0xd1, 0x82,
+ 0xd1, 0x82, 0xd1, 0x80, 0xd0, 0xb8, 0xd0, 0xbd, 0xd0, 0xb5, 0xd0, 0xb9, 0xd0,
+ 0x92, 0xd0, 0xb0, 0xd1, 0x81, 0xd0, 0xbd, 0xd0, 0xb8, 0xd0, 0xbc, 0xd1, 0x81,
+ 0xd0, 0xb0, 0xd0, 0xbc, 0xd1, 0x82, 0xd0, 0xbe, 0xd1, 0x82, 0xd1, 0x80, 0xd1,
+ 0x83, 0xd0, 0xb1, 0xd0, 0x9e, 0xd0, 0xbd, 0xd0, 0xb8, 0xd0, 0xbc, 0xd0, 0xb8,
+ 0xd1, 0x80, 0xd0, 0xbd, 0xd0, 0xb5, 0xd0, 0xb5, 0xd0, 0x9e, 0xd0, 0x9e, 0xd0,
+ 0x9e, 0xd0, 0xbb, 0xd0, 0xb8, 0xd1, 0x86, 0xd1, 0x8d, 0xd1, 0x82, 0xd0, 0xb0,
+ 0xd0, 0x9e, 0xd0, 0xbd, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xb5, 0xd0, 0xbc, 0xd0,
+ 0xb4, 0xd0, 0xbe, 0xd0, 0xbc, 0xd0, 0xbc, 0xd0, 0xbe, 0xd0, 0xb9, 0xd0, 0xb4,
+ 0xd0, 0xb2, 0xd0, 0xb5, 0xd0, 0xbe, 0xd0, 0xbd, 0xd0, 0xbe, 0xd1, 0x81, 0xd1,
+ 0x83, 0xd0, 0xb4, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb9, 0xe0,
+ 0xa5, 0x88, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5,
+ 0x87, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8b,
+ 0xe0, 0xa4, 0x94, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa4, 0xa8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x8f, 0xe0, 0xa4, 0x95, 0xe0, 0xa4,
+ 0x95, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xad, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x87,
+ 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa4, 0xe0,
+ 0xa5, 0x8b, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x86, 0xe0, 0xa4,
+ 0xaa, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xb9,
+ 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0x95, 0xe0,
+ 0xa4, 0xa5, 0xe0, 0xa4, 0xbe, 0x6a, 0x61, 0x67, 0x72, 0x61, 0x6e, 0xe0, 0xa4,
+ 0x86, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0x9c, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x85,
+ 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x97, 0xe0,
+ 0xa4, 0x88, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x97, 0xe0, 0xa4,
+ 0x8f, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0x87, 0xe0, 0xa4, 0xa8,
+ 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xaf, 0xe0, 0xa5, 0x87, 0xe0,
+ 0xa4, 0xa5, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xa5, 0xe0, 0xa5, 0x80, 0xe0, 0xa4,
+ 0x98, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xa6,
+ 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0x88, 0xe0, 0xa4, 0x9c, 0xe0,
+ 0xa5, 0x80, 0xe0, 0xa4, 0xb5, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4,
+ 0x88, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0x8f, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xb0,
+ 0xe0, 0xa4, 0x89, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x87, 0xe0,
+ 0xa4, 0x95, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xb5, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4,
+ 0xb2, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xae,
+ 0xe0, 0xa4, 0x88, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x93, 0xe0,
+ 0xa4, 0xb0, 0xe0, 0xa4, 0x86, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xac, 0xe0, 0xa4,
+ 0xb8, 0xe0, 0xa4, 0xad, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xa8,
+ 0xe0, 0xa4, 0x9a, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xa8, 0xe0,
+ 0xa4, 0x86, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x80, 0xe0, 0xa4,
+ 0xb2, 0xe0, 0xa5, 0x80, 0xd8, 0xb9, 0xd9, 0x84, 0xd9, 0x89, 0xd8, 0xa5, 0xd9,
+ 0x84, 0xd9, 0x89, 0xd9, 0x87, 0xd8, 0xb0, 0xd8, 0xa7, 0xd8, 0xa2, 0xd8, 0xae,
+ 0xd8, 0xb1, 0xd8, 0xb9, 0xd8, 0xaf, 0xd8, 0xaf, 0xd8, 0xa7, 0xd9, 0x84, 0xd9,
+ 0x89, 0xd9, 0x87, 0xd8, 0xb0, 0xd9, 0x87, 0xd8, 0xb5, 0xd9, 0x88, 0xd8, 0xb1,
+ 0xd8, 0xba, 0xd9, 0x8a, 0xd8, 0xb1, 0xd9, 0x83, 0xd8, 0xa7, 0xd9, 0x86, 0xd9,
+ 0x88, 0xd9, 0x84, 0xd8, 0xa7, 0xd8, 0xa8, 0xd9, 0x8a, 0xd9, 0x86, 0xd8, 0xb9,
+ 0xd8, 0xb1, 0xd8, 0xb6, 0xd8, 0xb0, 0xd9, 0x84, 0xd9, 0x83, 0xd9, 0x87, 0xd9,
+ 0x86, 0xd8, 0xa7, 0xd9, 0x8a, 0xd9, 0x88, 0xd9, 0x85, 0xd9, 0x82, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd8, 0xb9, 0xd9, 0x84, 0xd9, 0x8a, 0xd8, 0xa7, 0xd9, 0x86, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd9, 0x83, 0xd9, 0x86, 0xd8, 0xad, 0xd8, 0xaa, 0xd9, 0x89,
+ 0xd9, 0x82, 0xd8, 0xa8, 0xd9, 0x84, 0xd9, 0x88, 0xd8, 0xad, 0xd8, 0xa9, 0xd8,
+ 0xa7, 0xd8, 0xae, 0xd8, 0xb1, 0xd9, 0x81, 0xd9, 0x82, 0xd8, 0xb7, 0xd8, 0xb9,
+ 0xd8, 0xa8, 0xd8, 0xaf, 0xd8, 0xb1, 0xd9, 0x83, 0xd9, 0x86, 0xd8, 0xa5, 0xd8,
+ 0xb0, 0xd8, 0xa7, 0xd9, 0x83, 0xd9, 0x85, 0xd8, 0xa7, 0xd8, 0xa7, 0xd8, 0xad,
+ 0xd8, 0xaf, 0xd8, 0xa5, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x81, 0xd9, 0x8a, 0xd9,
+ 0x87, 0xd8, 0xa8, 0xd8, 0xb9, 0xd8, 0xb6, 0xd9, 0x83, 0xd9, 0x8a, 0xd9, 0x81,
+ 0xd8, 0xa8, 0xd8, 0xad, 0xd8, 0xab, 0xd9, 0x88, 0xd9, 0x85, 0xd9, 0x86, 0xd9,
+ 0x88, 0xd9, 0x87, 0xd9, 0x88, 0xd8, 0xa3, 0xd9, 0x86, 0xd8, 0xa7, 0xd8, 0xac,
+ 0xd8, 0xaf, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x87, 0xd8, 0xa7, 0xd8, 0xb3, 0xd9,
+ 0x84, 0xd9, 0x85, 0xd8, 0xb9, 0xd9, 0x86, 0xd8, 0xaf, 0xd9, 0x84, 0xd9, 0x8a,
+ 0xd8, 0xb3, 0xd8, 0xb9, 0xd8, 0xa8, 0xd8, 0xb1, 0xd8, 0xb5, 0xd9, 0x84, 0xd9,
+ 0x89, 0xd9, 0x85, 0xd9, 0x86, 0xd8, 0xb0, 0xd8, 0xa8, 0xd9, 0x87, 0xd8, 0xa7,
+ 0xd8, 0xa3, 0xd9, 0x86, 0xd9, 0x87, 0xd9, 0x85, 0xd8, 0xab, 0xd9, 0x84, 0xd9,
+ 0x83, 0xd9, 0x86, 0xd8, 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa7, 0xd8, 0xad,
+ 0xd9, 0x8a, 0xd8, 0xab, 0xd9, 0x85, 0xd8, 0xb5, 0xd8, 0xb1, 0xd8, 0xb4, 0xd8,
+ 0xb1, 0xd8, 0xad, 0xd8, 0xad, 0xd9, 0x88, 0xd9, 0x84, 0xd9, 0x88, 0xd9, 0x81,
+ 0xd9, 0x8a, 0xd8, 0xa7, 0xd8, 0xb0, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x83, 0xd9,
+ 0x84, 0xd9, 0x85, 0xd8, 0xb1, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x86, 0xd8, 0xaa,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x81, 0xd8, 0xa3, 0xd8, 0xa8, 0xd9, 0x88, 0xd8,
+ 0xae, 0xd8, 0xa7, 0xd8, 0xb5, 0xd8, 0xa3, 0xd9, 0x86, 0xd8, 0xaa, 0xd8, 0xa7,
+ 0xd9, 0x86, 0xd9, 0x87, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x8a, 0xd8, 0xb9, 0xd8,
+ 0xb6, 0xd9, 0x88, 0xd9, 0x88, 0xd9, 0x82, 0xd8, 0xaf, 0xd8, 0xa7, 0xd8, 0xa8,
+ 0xd9, 0x86, 0xd8, 0xae, 0xd9, 0x8a, 0xd8, 0xb1, 0xd8, 0xa8, 0xd9, 0x86, 0xd8,
+ 0xaa, 0xd9, 0x84, 0xd9, 0x83, 0xd9, 0x85, 0xd8, 0xb4, 0xd8, 0xa7, 0xd8, 0xa1,
+ 0xd9, 0x88, 0xd9, 0x87, 0xd9, 0x8a, 0xd8, 0xa7, 0xd8, 0xa8, 0xd9, 0x88, 0xd9,
+ 0x82, 0xd8, 0xb5, 0xd8, 0xb5, 0xd9, 0x88, 0xd9, 0x85, 0xd8, 0xa7, 0xd8, 0xb1,
+ 0xd9, 0x82, 0xd9, 0x85, 0xd8, 0xa3, 0xd8, 0xad, 0xd8, 0xaf, 0xd9, 0x86, 0xd8,
+ 0xad, 0xd9, 0x86, 0xd8, 0xb9, 0xd8, 0xaf, 0xd9, 0x85, 0xd8, 0xb1, 0xd8, 0xa3,
+ 0xd9, 0x8a, 0xd8, 0xa7, 0xd8, 0xad, 0xd8, 0xa9, 0xd9, 0x83, 0xd8, 0xaa, 0xd8,
+ 0xa8, 0xd8, 0xaf, 0xd9, 0x88, 0xd9, 0x86, 0xd9, 0x8a, 0xd8, 0xac, 0xd8, 0xa8,
+ 0xd9, 0x85, 0xd9, 0x86, 0xd9, 0x87, 0xd8, 0xaa, 0xd8, 0xad, 0xd8, 0xaa, 0xd8,
+ 0xac, 0xd9, 0x87, 0xd8, 0xa9, 0xd8, 0xb3, 0xd9, 0x86, 0xd8, 0xa9, 0xd9, 0x8a,
+ 0xd8, 0xaa, 0xd9, 0x85, 0xd9, 0x83, 0xd8, 0xb1, 0xd8, 0xa9, 0xd8, 0xba, 0xd8,
+ 0xb2, 0xd8, 0xa9, 0xd9, 0x86, 0xd9, 0x81, 0xd8, 0xb3, 0xd8, 0xa8, 0xd9, 0x8a,
+ 0xd8, 0xaa, 0xd9, 0x84, 0xd9, 0x84, 0xd9, 0x87, 0xd9, 0x84, 0xd9, 0x86, 0xd8,
+ 0xa7, 0xd8, 0xaa, 0xd9, 0x84, 0xd9, 0x83, 0xd9, 0x82, 0xd9, 0x84, 0xd8, 0xa8,
+ 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xa7, 0xd8, 0xb9, 0xd9, 0x86, 0xd9, 0x87, 0xd8,
+ 0xa3, 0xd9, 0x88, 0xd9, 0x84, 0xd8, 0xb4, 0xd9, 0x8a, 0xd8, 0xa1, 0xd9, 0x86,
+ 0xd9, 0x88, 0xd8, 0xb1, 0xd8, 0xa3, 0xd9, 0x85, 0xd8, 0xa7, 0xd9, 0x81, 0xd9,
+ 0x8a, 0xd9, 0x83, 0xd8, 0xa8, 0xd9, 0x83, 0xd9, 0x84, 0xd8, 0xb0, 0xd8, 0xa7,
+ 0xd8, 0xaa, 0xd8, 0xb1, 0xd8, 0xaa, 0xd8, 0xa8, 0xd8, 0xa8, 0xd8, 0xa3, 0xd9,
+ 0x86, 0xd9, 0x87, 0xd9, 0x85, 0xd8, 0xb3, 0xd8, 0xa7, 0xd9, 0x86, 0xd9, 0x83,
+ 0xd8, 0xa8, 0xd9, 0x8a, 0xd8, 0xb9, 0xd9, 0x81, 0xd9, 0x82, 0xd8, 0xaf, 0xd8,
+ 0xad, 0xd8, 0xb3, 0xd9, 0x86, 0xd9, 0x84, 0xd9, 0x87, 0xd9, 0x85, 0xd8, 0xb4,
+ 0xd8, 0xb9, 0xd8, 0xb1, 0xd8, 0xa3, 0xd9, 0x87, 0xd9, 0x84, 0xd8, 0xb4, 0xd9,
+ 0x87, 0xd8, 0xb1, 0xd9, 0x82, 0xd8, 0xb7, 0xd8, 0xb1, 0xd8, 0xb7, 0xd9, 0x84,
+ 0xd8, 0xa8, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x68, 0x69, 0x6d,
+ 0x73, 0x65, 0x6c, 0x66, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x63, 0x6f,
+ 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73,
+ 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+ 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x61, 0x73, 0x68, 0x69, 0x6f,
+ 0x6e, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x72, 0x79, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x72, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x73, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x70, 0x72,
+ 0x6f, 0x63, 0x65, 0x73, 0x73, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x6f,
+ 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65,
+ 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c,
+ 0x65, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x6e, 0x65, 0x74, 0x77, 0x6f,
+ 0x72, 0x6b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x64, 0x79, 0x6e, 0x61,
+ 0x6d, 0x69, 0x63, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x70, 0x72, 0x69,
+ 0x76, 0x61, 0x63, 0x79, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x53, 0x65,
+ 0x72, 0x76, 0x69, 0x63, 0x65, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x64,
+ 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74,
+ 0x65, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x66, 0x72, 0x69, 0x65, 0x6e,
+ 0x64, 0x73, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x77, 0x6f, 0x72, 0x6b,
+ 0x69, 0x6e, 0x67, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x6d, 0x69, 0x6c,
+ 0x6c, 0x69, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x77, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x76,
+ 0x69, 0x73, 0x69, 0x74, 0x65, 0x64, 0x77, 0x65, 0x61, 0x74, 0x68, 0x65, 0x72,
+ 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
+ 0x74, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x66, 0x6f, 0x72, 0x77, 0x61,
+ 0x72, 0x64, 0x79, 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x72, 0x65, 0x6d, 0x6f,
+ 0x76, 0x65, 0x64, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x6f, 0x6e,
+ 0x74, 0x72, 0x6f, 0x6c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x63, 0x75,
+ 0x72, 0x72, 0x65, 0x6e, 0x74, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x6c,
+ 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64,
+ 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65,
+ 0x72, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x6d, 0x61, 0x63, 0x68, 0x69,
+ 0x6e, 0x65, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x70, 0x72, 0x69, 0x76,
+ 0x61, 0x74, 0x65, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f,
+ 0x67, 0x72, 0x61, 0x6d, 0x73, 0x6f, 0x63, 0x69, 0x65, 0x74, 0x79, 0x6e, 0x75,
+ 0x6d, 0x62, 0x65, 0x72, 0x73, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x65,
+ 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e,
+ 0x67, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x61, 0x72, 0x74, 0x6e,
+ 0x65, 0x72, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x70, 0x65, 0x72, 0x66,
+ 0x65, 0x63, 0x74, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x79, 0x73,
+ 0x74, 0x65, 0x6d, 0x73, 0x6b, 0x65, 0x65, 0x70, 0x69, 0x6e, 0x67, 0x63, 0x75,
+ 0x6c, 0x74, 0x75, 0x72, 0x65, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x6a,
+ 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+ 0x73, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x26, 0x71, 0x75, 0x6f, 0x74,
+ 0x3b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x72, 0x65, 0x76, 0x69, 0x65,
+ 0x77, 0x73, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x6e, 0x67, 0x6c,
+ 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x74, 0x68, 0x72,
+ 0x6f, 0x75, 0x67, 0x68, 0x50, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x6f, 0x70,
+ 0x69, 0x6e, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x61,
+ 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79,
+ 0x76, 0x69, 0x6c, 0x6c, 0x61, 0x67, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x69, 0x73,
+ 0x68, 0x67, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x79, 0x64, 0x65, 0x63, 0x6c, 0x69,
+ 0x6e, 0x65, 0x6d, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x6d, 0x69, 0x73, 0x73,
+ 0x69, 0x6f, 0x6e, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x71, 0x75, 0x61,
+ 0x6c, 0x69, 0x74, 0x79, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x67, 0x65,
+ 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x73,
+ 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65,
+ 0x72, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x72, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x73, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x73, 0x6d, 0x65, 0x6d, 0x62,
+ 0x65, 0x72, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x64, 0x69, 0x73,
+ 0x70, 0x75, 0x74, 0x65, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x65, 0x78,
+ 0x70, 0x72, 0x65, 0x73, 0x73, 0x64, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x70,
+ 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x41, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72,
+ 0x6d, 0x61, 0x72, 0x72, 0x69, 0x65, 0x64, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69,
+ 0x63, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x63, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x64, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x76, 0x69, 0x63, 0x74,
+ 0x6f, 0x72, 0x79, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x73, 0x73, 0x74, 0x75, 0x64, 0x69, 0x65, 0x73, 0x66, 0x65,
+ 0x61, 0x74, 0x75, 0x72, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x6d,
+ 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x73,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x75, 0x73, 0x75, 0x61, 0x6c, 0x6c,
+ 0x79, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x69,
+ 0x6e, 0x67, 0x67, 0x72, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x6f, 0x62, 0x76, 0x69,
+ 0x6f, 0x75, 0x73, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x70, 0x72, 0x65,
+ 0x73, 0x65, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f,
+ 0x75, 0x6c, 0x3e, 0x0d, 0x0a, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x61,
+ 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e,
+ 0x72, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67,
+ 0x65, 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x64, 0x65, 0x73, 0x6b, 0x74,
+ 0x6f, 0x70, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x70, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x75, 0x6e, 0x75, 0x73, 0x75, 0x61, 0x6c, 0x44, 0x69, 0x67,
+ 0x69, 0x74, 0x61, 0x6c, 0x63, 0x61, 0x70, 0x69, 0x74, 0x61, 0x6c, 0x57, 0x65,
+ 0x62, 0x73, 0x69, 0x74, 0x65, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x63,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x64,
+ 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x64, 0x65, 0x63, 0x61, 0x64, 0x65,
+ 0x73, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x26, 0x61, 0x6d, 0x70,
+ 0x3b, 0x20, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x72, 0x65, 0x6c, 0x65,
+ 0x61, 0x73, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x67, 0x65, 0x74,
+ 0x74, 0x69, 0x6e, 0x67, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x6e, 0x6f,
+ 0x74, 0x68, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x63,
+ 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x74, 0x74, 0x65, 0x72, 0x73,
+ 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x63, 0x69, 0x65, 0x6e, 0x63,
+ 0x65, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x73, 0x45, 0x6e, 0x67, 0x6c, 0x61, 0x6e, 0x64, 0x3d, 0x31, 0x26, 0x61,
+ 0x6d, 0x70, 0x3b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x3d, 0x20,
+ 0x6e, 0x65, 0x77, 0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x75, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x4e,
+ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e,
+ 0x67, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x67, 0x65, 0x74, 0x6f, 0x6f, 0x6c, 0x62,
+ 0x61, 0x72, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x62, 0x65, 0x63, 0x61,
+ 0x75, 0x73, 0x65, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x65, 0x75,
+ 0x74, 0x73, 0x63, 0x68, 0x66, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x77, 0x6f,
+ 0x72, 0x6b, 0x65, 0x72, 0x73, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x6c, 0x79, 0x62,
+ 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x65, 0x78, 0x61, 0x63, 0x74, 0x6c, 0x79,
+ 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x64, 0x69, 0x73, 0x65, 0x61, 0x73,
+ 0x65, 0x53, 0x6f, 0x63, 0x69, 0x65, 0x74, 0x79, 0x77, 0x65, 0x61, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x78, 0x68, 0x69, 0x62, 0x69, 0x74, 0x26, 0x6c, 0x74, 0x3b,
+ 0x21, 0x2d, 0x2d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x65, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x6f, 0x75,
+ 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x73, 0x64,
+ 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x28, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77,
+ 0x70, 0x75, 0x72, 0x70, 0x6f, 0x73, 0x65, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3d,
+ 0x22, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x20, 0x6b, 0x69, 0x6c, 0x6c, 0x69,
+ 0x6e, 0x67, 0x73, 0x68, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x49, 0x74, 0x61, 0x6c,
+ 0x69, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x68, 0x65, 0x61,
+ 0x76, 0x69, 0x6c, 0x79, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x2d, 0x31,
+ 0x27, 0x5d, 0x29, 0x3b, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x43,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65,
+ 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6e,
+ 0x67, 0x64, 0x72, 0x61, 0x77, 0x69, 0x6e, 0x67, 0x62, 0x69, 0x6c, 0x6c, 0x69,
+ 0x6f, 0x6e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x47, 0x65, 0x72, 0x6d,
+ 0x61, 0x6e, 0x79, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x3c, 0x2f, 0x66,
+ 0x6f, 0x72, 0x6d, 0x3e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x77, 0x68,
+ 0x65, 0x74, 0x68, 0x65, 0x72, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x53,
+ 0x63, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67,
+ 0x41, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e,
+ 0x73, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x73, 0x74, 0x75, 0x6e, 0x69, 0x66, 0x6f,
+ 0x72, 0x6d, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x73, 0x69, 0x64, 0x65,
+ 0x62, 0x61, 0x72, 0x43, 0x68, 0x69, 0x63, 0x61, 0x67, 0x6f, 0x68, 0x6f, 0x6c,
+ 0x69, 0x64, 0x61, 0x79, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x70, 0x61,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x2c, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x61,
+ 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x66, 0x65, 0x65, 0x6c, 0x69, 0x6e, 0x67,
+ 0x61, 0x72, 0x72, 0x69, 0x76, 0x65, 0x64, 0x70, 0x61, 0x73, 0x73, 0x69, 0x6e,
+ 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x72, 0x6f, 0x75, 0x67, 0x68,
+ 0x6c, 0x79, 0x2e, 0x0a, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x62, 0x75, 0x74, 0x20,
+ 0x6e, 0x6f, 0x74, 0x64, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x42, 0x72, 0x69,
+ 0x74, 0x61, 0x69, 0x6e, 0x43, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x65, 0x6c, 0x61,
+ 0x63, 0x6b, 0x20, 0x6f, 0x66, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49,
+ 0x72, 0x65, 0x6c, 0x61, 0x6e, 0x64, 0x22, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2d,
+ 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76,
+ 0x65, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x4c, 0x69, 0x62, 0x72, 0x61,
+ 0x72, 0x79, 0x68, 0x75, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x20, 0x66,
+ 0x61, 0x63, 0x74, 0x61, 0x66, 0x66, 0x61, 0x69, 0x72, 0x73, 0x43, 0x68, 0x61,
+ 0x72, 0x6c, 0x65, 0x73, 0x72, 0x61, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x62, 0x72,
+ 0x6f, 0x75, 0x67, 0x68, 0x74, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x6c,
+ 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22,
+ 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72,
+ 0x73, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x70, 0x72, 0x65, 0x6d, 0x69,
+ 0x75, 0x6d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x6d, 0x65, 0x72,
+ 0x69, 0x63, 0x61, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x26, 0x71,
+ 0x75, 0x6f, 0x74, 0x3b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x6e, 0x65,
+ 0x65, 0x64, 0x20, 0x74, 0x6f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x63,
+ 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x6c, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67,
+ 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x65, 0x6c, 0x69, 0x65, 0x76,
+ 0x65, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x2d, 0x6d, 0x6f, 0x62, 0x69,
+ 0x6c, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x77, 0x61, 0x6e, 0x74,
+ 0x20, 0x74, 0x6f, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x46, 0x69, 0x72,
+ 0x65, 0x66, 0x6f, 0x78, 0x79, 0x6f, 0x75, 0x20, 0x61, 0x72, 0x65, 0x73, 0x69,
+ 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x73, 0x74, 0x75, 0x64, 0x69, 0x65, 0x64, 0x6d,
+ 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67,
+ 0x72, 0x61, 0x70, 0x69, 0x64, 0x6c, 0x79, 0x63, 0x6c, 0x69, 0x6d, 0x61, 0x74,
+ 0x65, 0x6b, 0x69, 0x6e, 0x67, 0x64, 0x6f, 0x6d, 0x65, 0x6d, 0x65, 0x72, 0x67,
+ 0x65, 0x64, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x66, 0x6f, 0x75, 0x6e,
+ 0x64, 0x65, 0x64, 0x70, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x66, 0x6f, 0x72,
+ 0x6d, 0x75, 0x6c, 0x61, 0x64, 0x79, 0x6e, 0x61, 0x73, 0x74, 0x79, 0x68, 0x6f,
+ 0x77, 0x20, 0x74, 0x6f, 0x20, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x72,
+ 0x65, 0x76, 0x65, 0x6e, 0x75, 0x65, 0x65, 0x63, 0x6f, 0x6e, 0x6f, 0x6d, 0x79,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x62, 0x72, 0x6f, 0x74, 0x68, 0x65,
+ 0x72, 0x73, 0x6f, 0x6c, 0x64, 0x69, 0x65, 0x72, 0x6c, 0x61, 0x72, 0x67, 0x65,
+ 0x6c, 0x79, 0x63, 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x26, 0x71, 0x75,
+ 0x6f, 0x74, 0x3b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x64, 0x77,
+ 0x61, 0x72, 0x64, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f,
+ 0x62, 0x65, 0x72, 0x74, 0x20, 0x65, 0x66, 0x66, 0x6f, 0x72, 0x74, 0x73, 0x50,
+ 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64,
+ 0x75, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x3a, 0x77, 0x65, 0x20, 0x68, 0x61, 0x76, 0x65, 0x41, 0x6e, 0x67, 0x65, 0x6c,
+ 0x65, 0x73, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x61,
+ 0x72, 0x63, 0x68, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x61, 0x63, 0x71,
+ 0x75, 0x69, 0x72, 0x65, 0x6d, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x67, 0x72,
+ 0x61, 0x6e, 0x74, 0x65, 0x64, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x74,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x62, 0x69, 0x67, 0x67, 0x65, 0x73, 0x74,
+ 0x62, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x64, 0x72, 0x69, 0x76, 0x69, 0x6e,
+ 0x67, 0x53, 0x74, 0x75, 0x64, 0x69, 0x65, 0x73, 0x6d, 0x69, 0x6e, 0x69, 0x6d,
+ 0x75, 0x6d, 0x70, 0x65, 0x72, 0x68, 0x61, 0x70, 0x73, 0x6d, 0x6f, 0x72, 0x6e,
+ 0x69, 0x6e, 0x67, 0x73, 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x73, 0x20,
+ 0x75, 0x73, 0x65, 0x64, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x76, 0x61,
+ 0x72, 0x69, 0x61, 0x6e, 0x74, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x3d, 0x22, 0x6d,
+ 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x61, 0x63, 0x68, 0x69, 0x65, 0x76, 0x65,
+ 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e,
+ 0x74, 0x73, 0x6f, 0x6d, 0x65, 0x6f, 0x6e, 0x65, 0x65, 0x78, 0x74, 0x72, 0x65,
+ 0x6d, 0x65, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x62, 0x6f, 0x74, 0x74,
+ 0x6f, 0x6d, 0x3a, 0x65, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x61, 0x6c, 0x6c,
+ 0x20, 0x74, 0x68, 0x65, 0x73, 0x69, 0x74, 0x65, 0x6d, 0x61, 0x70, 0x65, 0x6e,
+ 0x67, 0x6c, 0x69, 0x73, 0x68, 0x77, 0x61, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x20,
+ 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73,
+ 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72,
+ 0x73, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x61, 0x67, 0x61, 0x69, 0x6e,
+ 0x73, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x7d, 0x29, 0x28, 0x29,
+ 0x3b, 0x0d, 0x0a, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x74, 0x72, 0x6f,
+ 0x75, 0x62, 0x6c, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x70, 0x74, 0x63, 0x6f,
+ 0x6d, 0x70, 0x61, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x70,
+ 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73,
+ 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x20, 0x27, 0x27, 0x54, 0x68, 0x65,
+ 0x20, 0x77, 0x69, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x65, 0x78, 0x70, 0x6c, 0x6f,
+ 0x72, 0x65, 0x61, 0x64, 0x61, 0x70, 0x74, 0x65, 0x64, 0x47, 0x61, 0x6c, 0x6c,
+ 0x65, 0x72, 0x79, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x61, 0x62, 0x69,
+ 0x6c, 0x69, 0x74, 0x79, 0x65, 0x6e, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x63, 0x61,
+ 0x72, 0x65, 0x65, 0x72, 0x73, 0x29, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63,
+ 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20,
+ 0x61, 0x6e, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x65, 0x78, 0x69, 0x73, 0x74, 0x65,
+ 0x64, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c,
+ 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x65, 0x64, 0x63, 0x6f, 0x6e, 0x73,
+ 0x6f, 0x6c, 0x65, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x78, 0x70,
+ 0x6f, 0x72, 0x74, 0x73, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x43, 0x68,
+ 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x69, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x6e,
+ 0x65, 0x75, 0x74, 0x72, 0x61, 0x6c, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74,
+ 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e,
+ 0x67, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x73, 0x65, 0x74, 0x74, 0x6c,
+ 0x65, 0x64, 0x77, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x63, 0x61, 0x75, 0x73,
+ 0x69, 0x6e, 0x67, 0x2d, 0x77, 0x65, 0x62, 0x6b, 0x69, 0x74, 0x63, 0x6c, 0x61,
+ 0x69, 0x6d, 0x65, 0x64, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x63, 0x65, 0x63, 0x68,
+ 0x61, 0x70, 0x74, 0x65, 0x72, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6d, 0x73, 0x54,
+ 0x68, 0x6f, 0x6d, 0x61, 0x73, 0x20, 0x6d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c, 0x61,
+ 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65,
+ 0x73, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x6f, 0x75, 0x74, 0x73, 0x69,
+ 0x64, 0x65, 0x3a, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x68, 0x75, 0x6e, 0x64,
+ 0x72, 0x65, 0x64, 0x4f, 0x6c, 0x79, 0x6d, 0x70, 0x69, 0x63, 0x5f, 0x62, 0x75,
+ 0x74, 0x74, 0x6f, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x72, 0x65,
+ 0x61, 0x63, 0x68, 0x65, 0x64, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x64,
+ 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
+ 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x61, 0x64, 0x6f, 0x70, 0x74, 0x65,
+ 0x64, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x65, 0x69, 0x74, 0x68,
+ 0x65, 0x72, 0x67, 0x72, 0x65, 0x61, 0x74, 0x6c, 0x79, 0x67, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x72, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x69, 0x6d, 0x70,
+ 0x72, 0x6f, 0x76, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x70,
+ 0x65, 0x63, 0x69, 0x61, 0x6c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x77,
+ 0x6f, 0x72, 0x73, 0x68, 0x69, 0x70, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73,
+ 0x74, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x75, 0x74, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x71, 0x75, 0x61, 0x72, 0x74, 0x65, 0x72, 0x43, 0x75, 0x6c, 0x74,
+ 0x75, 0x72, 0x65, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6c, 0x65,
+ 0x61, 0x72, 0x6c, 0x79, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x42, 0x72,
+ 0x6f, 0x77, 0x73, 0x65, 0x72, 0x6c, 0x69, 0x62, 0x65, 0x72, 0x61, 0x6c, 0x7d,
+ 0x20, 0x63, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+ 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x68, 0x69, 0x64, 0x65, 0x28, 0x29,
+ 0x3b, 0x46, 0x6c, 0x6f, 0x72, 0x69, 0x64, 0x61, 0x61, 0x6e, 0x73, 0x77, 0x65,
+ 0x72, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x65,
+ 0x72, 0x6f, 0x72, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x65, 0x72,
+ 0x69, 0x6f, 0x75, 0x73, 0x66, 0x72, 0x65, 0x65, 0x64, 0x6f, 0x6d, 0x53, 0x65,
+ 0x76, 0x65, 0x72, 0x61, 0x6c, 0x2d, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x46,
+ 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20,
+ 0x21, 0x3d, 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x65,
+ 0x64, 0x44, 0x65, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x76, 0x6f, 0x69, 0x64, 0x28,
+ 0x30, 0x29, 0x2f, 0x61, 0x6c, 0x6c, 0x2e, 0x6a, 0x73, 0x70, 0x72, 0x65, 0x76,
+ 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x65,
+ 0x70, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x6f, 0x62,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x0d, 0x0a, 0x4d,
+ 0x6f, 0x64, 0x65, 0x72, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
+ 0x22, 0x20, 0x61, 0x6c, 0x74, 0x3d, 0x22, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72,
+ 0x73, 0x2e, 0x0a, 0x0a, 0x46, 0x6f, 0x72, 0x20, 0x0a, 0x0a, 0x4d, 0x61, 0x6e,
+ 0x79, 0x20, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x73, 0x70, 0x6f, 0x77, 0x65,
+ 0x72, 0x65, 0x64, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x66, 0x69, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6f, 0x66, 0x6d, 0x65,
+ 0x64, 0x69, 0x63, 0x61, 0x6c, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x6f,
+ 0x70, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x63, 0x69, 0x6c,
+ 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x63,
+ 0x65, 0x47, 0x65, 0x6f, 0x72, 0x67, 0x65, 0x20, 0x42, 0x65, 0x6c, 0x67, 0x69,
+ 0x75, 0x6d, 0x2e, 0x2e, 0x2e, 0x3c, 0x2f, 0x61, 0x3e, 0x74, 0x77, 0x69, 0x74,
+ 0x74, 0x65, 0x72, 0x6e, 0x6f, 0x74, 0x61, 0x62, 0x6c, 0x79, 0x77, 0x61, 0x69,
+ 0x74, 0x69, 0x6e, 0x67, 0x77, 0x61, 0x72, 0x66, 0x61, 0x72, 0x65, 0x20, 0x4f,
+ 0x74, 0x68, 0x65, 0x72, 0x20, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x70,
+ 0x68, 0x72, 0x61, 0x73, 0x65, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x75, 0x72, 0x76, 0x69, 0x76, 0x65, 0x73, 0x63, 0x68, 0x6f, 0x6c, 0x61,
+ 0x72, 0x3c, 0x2f, 0x70, 0x3e, 0x0d, 0x0a, 0x20, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+ 0x72, 0x79, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x6c, 0x6f, 0x73, 0x73,
+ 0x20, 0x6f, 0x66, 0x6a, 0x75, 0x73, 0x74, 0x20, 0x61, 0x73, 0x47, 0x65, 0x6f,
+ 0x72, 0x67, 0x69, 0x61, 0x73, 0x74, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x3c, 0x68,
+ 0x65, 0x61, 0x64, 0x3e, 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x31,
+ 0x27, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x69, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73,
+ 0x6e, 0x6f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72,
+ 0x3a, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x63, 0x61, 0x72, 0x72, 0x69,
+ 0x65, 0x64, 0x31, 0x30, 0x30, 0x2c, 0x30, 0x30, 0x30, 0x3c, 0x2f, 0x68, 0x33,
+ 0x3e, 0x0a, 0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x62, 0x65, 0x63,
+ 0x6f, 0x6d, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x77, 0x65,
+ 0x64, 0x64, 0x69, 0x6e, 0x67, 0x30, 0x30, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x6d,
+ 0x6f, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x79,
+ 0x20, 0x62, 0x69, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x6c, 0x69, 0x66, 0x65, 0x20,
+ 0x6f, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x72, 0x69, 0x73, 0x65,
+ 0x20, 0x6f, 0x66, 0x26, 0x72, 0x61, 0x71, 0x75, 0x6f, 0x3b, 0x70, 0x6c, 0x75,
+ 0x73, 0x6f, 0x6e, 0x65, 0x68, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x28, 0x74,
+ 0x68, 0x6f, 0x75, 0x67, 0x68, 0x44, 0x6f, 0x75, 0x67, 0x6c, 0x61, 0x73, 0x6a,
+ 0x6f, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x63, 0x69, 0x72, 0x63, 0x6c, 0x65, 0x73,
+ 0x46, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x41, 0x6e, 0x63, 0x69, 0x65, 0x6e,
+ 0x74, 0x56, 0x69, 0x65, 0x74, 0x6e, 0x61, 0x6d, 0x76, 0x65, 0x68, 0x69, 0x63,
+ 0x6c, 0x65, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x63, 0x72, 0x79, 0x73,
+ 0x74, 0x61, 0x6c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x57, 0x69, 0x6e,
+ 0x64, 0x6f, 0x77, 0x73, 0x65, 0x6e, 0x6a, 0x6f, 0x79, 0x65, 0x64, 0x61, 0x20,
+ 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x3c,
+ 0x61, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+ 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x72, 0x69, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68,
+ 0x65, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x72, 0x65, 0x74, 0x69, 0x72,
+ 0x65, 0x64, 0x68, 0x6f, 0x77, 0x65, 0x76, 0x65, 0x72, 0x68, 0x69, 0x64, 0x64,
+ 0x65, 0x6e, 0x3b, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x73, 0x73, 0x65, 0x65,
+ 0x6b, 0x69, 0x6e, 0x67, 0x63, 0x61, 0x62, 0x69, 0x6e, 0x65, 0x74, 0x77, 0x61,
+ 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x6c, 0x6f, 0x6f, 0x6b, 0x20, 0x61, 0x74, 0x63,
+ 0x6f, 0x6e, 0x64, 0x75, 0x63, 0x74, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65,
+ 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x79, 0x68, 0x61, 0x70, 0x70, 0x65, 0x6e,
+ 0x73, 0x74, 0x75, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x61, 0x3a, 0x68, 0x6f, 0x76,
+ 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x46, 0x72, 0x65, 0x6e,
+ 0x63, 0x68, 0x20, 0x6c, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x74, 0x79, 0x70,
+ 0x69, 0x63, 0x61, 0x6c, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x6e,
+ 0x65, 0x6d, 0x69, 0x65, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x20, 0x69, 0x66, 0x67,
+ 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x64, 0x65, 0x63, 0x69, 0x64, 0x65, 0x64,
+ 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63,
+ 0x68, 0x62, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x73, 0x2d, 0x69, 0x6d, 0x61, 0x67,
+ 0x65, 0x3a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x73, 0x74, 0x61, 0x74,
+ 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x22, 0x3e, 0x63, 0x6f, 0x6e,
+ 0x76, 0x65, 0x72, 0x74, 0x76, 0x69, 0x6f, 0x6c, 0x65, 0x6e, 0x74, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x65, 0x64, 0x66, 0x69, 0x72, 0x73, 0x74, 0x22, 0x3e, 0x63,
+ 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x46, 0x69, 0x6e, 0x6c, 0x61, 0x6e, 0x64,
+ 0x63, 0x68, 0x65, 0x6d, 0x69, 0x73, 0x74, 0x73, 0x68, 0x65, 0x20, 0x77, 0x61,
+ 0x73, 0x31, 0x30, 0x70, 0x78, 0x3b, 0x22, 0x3e, 0x61, 0x73, 0x20, 0x73, 0x75,
+ 0x63, 0x68, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x64, 0x3c, 0x2f, 0x73, 0x70,
+ 0x61, 0x6e, 0x3e, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x6e,
+ 0x65, 0x20, 0x6f, 0x66, 0x61, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x6d, 0x79,
+ 0x73, 0x74, 0x65, 0x72, 0x79, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x66,
+ 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x75, 0x65, 0x20, 0x74, 0x6f, 0x20,
+ 0x72, 0x61, 0x69, 0x6c, 0x77, 0x61, 0x79, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x67,
+ 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x72, 0x64, 0x65, 0x73, 0x63, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6e, 0x75, 0x63, 0x6c,
+ 0x65, 0x61, 0x72, 0x4a, 0x65, 0x77, 0x69, 0x73, 0x68, 0x20, 0x70, 0x72, 0x6f,
+ 0x74, 0x65, 0x73, 0x74, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x66, 0x6c,
+ 0x6f, 0x77, 0x65, 0x72, 0x73, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x72,
+ 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x20,
+ 0x77, 0x68, 0x6f, 0x20, 0x77, 0x61, 0x73, 0x6c, 0x65, 0x63, 0x74, 0x75, 0x72,
+ 0x65, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x75, 0x69, 0x63, 0x69,
+ 0x64, 0x65, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x70, 0x65, 0x72, 0x69,
+ 0x6f, 0x64, 0x73, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x53, 0x6f, 0x63,
+ 0x69, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x63, 0x6f,
+ 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x77,
+ 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x3c, 0x62, 0x72, 0x20, 0x2f, 0x3e, 0x3c,
+ 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x61,
+ 0x6c, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x63, 0x6f, 0x6f, 0x6b, 0x69,
+ 0x65, 0x73, 0x6f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x65, 0x73, 0x6f,
+ 0x6c, 0x76, 0x65, 0x53, 0x77, 0x65, 0x64, 0x69, 0x73, 0x68, 0x62, 0x72, 0x69,
+ 0x65, 0x66, 0x6c, 0x79, 0x50, 0x65, 0x72, 0x73, 0x69, 0x61, 0x6e, 0x73, 0x6f,
+ 0x20, 0x6d, 0x75, 0x63, 0x68, 0x43, 0x65, 0x6e, 0x74, 0x75, 0x72, 0x79, 0x64,
+ 0x65, 0x70, 0x69, 0x63, 0x74, 0x73, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73,
+ 0x68, 0x6f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x73, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x62, 0x65, 0x61, 0x72, 0x69,
+ 0x6e, 0x67, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x76, 0x69,
+ 0x73, 0x65, 0x64, 0x6a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x28, 0x2d, 0x77, 0x69,
+ 0x64, 0x74, 0x68, 0x3a, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x3e, 0x74, 0x6f,
+ 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x64,
+ 0x65, 0x73, 0x69, 0x67, 0x6e, 0x73, 0x54, 0x75, 0x72, 0x6b, 0x69, 0x73, 0x68,
+ 0x79, 0x6f, 0x75, 0x6e, 0x67, 0x65, 0x72, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68,
+ 0x28, 0x7d, 0x29, 0x28, 0x29, 0x3b, 0x0a, 0x0a, 0x62, 0x75, 0x72, 0x6e, 0x69,
+ 0x6e, 0x67, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x65, 0x67, 0x72,
+ 0x65, 0x65, 0x73, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x52, 0x69, 0x63,
+ 0x68, 0x61, 0x72, 0x64, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x6c, 0x79, 0x70, 0x6c,
+ 0x61, 0x73, 0x74, 0x69, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3c,
+ 0x2f, 0x74, 0x72, 0x3e, 0x0d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23,
+ 0x75, 0x6c, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x70, 0x6f, 0x73, 0x73, 0x65, 0x73,
+ 0x73, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x70, 0x68, 0x79, 0x73, 0x69,
+ 0x63, 0x73, 0x66, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x65, 0x78, 0x65, 0x63,
+ 0x75, 0x74, 0x65, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x6c, 0x69, 0x6e,
+ 0x6b, 0x20, 0x74, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3c, 0x62,
+ 0x72, 0x20, 0x2f, 0x3e, 0x0a, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x63,
+ 0x68, 0x61, 0x72, 0x74, 0x65, 0x72, 0x74, 0x6f, 0x75, 0x72, 0x69, 0x73, 0x6d,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x63, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x65,
+ 0x64, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x3c, 0x2f, 0x68, 0x31, 0x3e,
+ 0x0d, 0x0a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x3f, 0x78, 0x6d, 0x6c,
+ 0x20, 0x76, 0x65, 0x68, 0x65, 0x6c, 0x70, 0x69, 0x6e, 0x67, 0x64, 0x69, 0x61,
+ 0x6d, 0x6f, 0x6e, 0x64, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x61, 0x69,
+ 0x72, 0x6c, 0x69, 0x6e, 0x65, 0x65, 0x6e, 0x64, 0x20, 0x2d, 0x2d, 0x3e, 0x29,
+ 0x2e, 0x61, 0x74, 0x74, 0x72, 0x28, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
+ 0x68, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x23, 0x66, 0x66, 0x66, 0x66, 0x66,
+ 0x66, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x56, 0x69, 0x6e, 0x63, 0x65,
+ 0x6e, 0x74, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x20, 0x73, 0x72, 0x63,
+ 0x3d, 0x22, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x64, 0x65, 0x73,
+ 0x70, 0x69, 0x74, 0x65, 0x64, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x74, 0x65,
+ 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x68,
+ 0x65, 0x6c, 0x64, 0x20, 0x69, 0x6e, 0x4a, 0x6f, 0x73, 0x65, 0x70, 0x68, 0x20,
+ 0x74, 0x68, 0x65, 0x61, 0x74, 0x72, 0x65, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74,
+ 0x73, 0x3c, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3e, 0x61, 0x20, 0x6c, 0x61, 0x72,
+ 0x67, 0x65, 0x64, 0x6f, 0x65, 0x73, 0x6e, 0x27, 0x74, 0x6c, 0x61, 0x74, 0x65,
+ 0x72, 0x2c, 0x20, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x66, 0x61, 0x76,
+ 0x69, 0x63, 0x6f, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x75,
+ 0x6e, 0x67, 0x61, 0x72, 0x79, 0x41, 0x69, 0x72, 0x70, 0x6f, 0x72, 0x74, 0x73,
+ 0x65, 0x65, 0x20, 0x74, 0x68, 0x65, 0x73, 0x6f, 0x20, 0x74, 0x68, 0x61, 0x74,
+ 0x4d, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d,
+ 0x73, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x61, 0x6e,
+ 0x64, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x65, 0x26, 0x71, 0x75,
+ 0x6f, 0x74, 0x3b, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x66,
+ 0x74, 0x22, 0x3e, 0x0a, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x47, 0x6f,
+ 0x6c, 0x64, 0x65, 0x6e, 0x20, 0x41, 0x66, 0x66, 0x61, 0x69, 0x72, 0x73, 0x67,
+ 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x69, 0x6e, 0x67,
+ 0x64, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x69, 0x64, 0x65, 0x61, 0x20, 0x6f,
+ 0x66, 0x63, 0x61, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x73,
+ 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x2e, 0x73, 0x72, 0x63,
+ 0x20, 0x3d, 0x20, 0x63, 0x61, 0x72, 0x74, 0x6f, 0x6f, 0x6e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x73, 0x4d, 0x75,
+ 0x73, 0x6c, 0x69, 0x6d, 0x73, 0x57, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x69,
+ 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x6d, 0x61, 0x72, 0x6b, 0x69, 0x6e, 0x67,
+ 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x73, 0x49, 0x6e, 0x64, 0x65, 0x65, 0x64,
+ 0x2c, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x2f, 0x73, 0x68, 0x6f, 0x77,
+ 0x5f, 0x61, 0x6f, 0x75, 0x74, 0x64, 0x6f, 0x6f, 0x72, 0x65, 0x73, 0x63, 0x61,
+ 0x70, 0x65, 0x28, 0x41, 0x75, 0x73, 0x74, 0x72, 0x69, 0x61, 0x67, 0x65, 0x6e,
+ 0x65, 0x74, 0x69, 0x63, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2c, 0x49, 0x6e,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48,
+ 0x65, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73,
+ 0x41, 0x63, 0x61, 0x64, 0x65, 0x6d, 0x79, 0x0a, 0x09, 0x09, 0x3c, 0x21, 0x2d,
+ 0x2d, 0x44, 0x61, 0x6e, 0x69, 0x65, 0x6c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0x69, 0x6d, 0x70, 0x6f,
+ 0x73, 0x65, 0x64, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x65, 0x41, 0x62, 0x72,
+ 0x61, 0x68, 0x61, 0x6d, 0x28, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x7b, 0x77,
+ 0x69, 0x64, 0x74, 0x68, 0x3a, 0x70, 0x75, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x29,
+ 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x7c, 0x7c, 0x20, 0x5b, 0x5d, 0x3b, 0x0a,
+ 0x44, 0x41, 0x54, 0x41, 0x5b, 0x20, 0x2a, 0x6b, 0x69, 0x74, 0x63, 0x68, 0x65,
+ 0x6e, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x64, 0x61, 0x63, 0x74, 0x75, 0x61,
+ 0x6c, 0x20, 0x64, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x6d, 0x61, 0x69, 0x6e,
+ 0x6c, 0x79, 0x20, 0x5f, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x27, 0x69, 0x6e, 0x73,
+ 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x78, 0x70, 0x65, 0x72, 0x74, 0x73, 0x69, 0x66,
+ 0x28, 0x74, 0x79, 0x70, 0x65, 0x49, 0x74, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x26,
+ 0x63, 0x6f, 0x70, 0x79, 0x3b, 0x20, 0x22, 0x3e, 0x54, 0x65, 0x72, 0x6d, 0x73,
+ 0x62, 0x6f, 0x72, 0x6e, 0x20, 0x69, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x65, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x74, 0x61, 0x6c, 0x6b, 0x69,
+ 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x72, 0x6e, 0x67, 0x61, 0x69, 0x6e,
+ 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x6a, 0x75, 0x73,
+ 0x74, 0x69, 0x66, 0x79, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x73, 0x66, 0x61,
+ 0x63, 0x74, 0x6f, 0x72, 0x79, 0x69, 0x74, 0x73, 0x20, 0x6f, 0x77, 0x6e, 0x61,
+ 0x73, 0x73, 0x61, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64,
+ 0x6c, 0x61, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x68, 0x69, 0x73, 0x20, 0x6f, 0x77,
+ 0x6e, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x20, 0x72, 0x65, 0x6c,
+ 0x3d, 0x22, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x63, 0x6f, 0x6e, 0x63,
+ 0x65, 0x72, 0x74, 0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x64, 0x6f, 0x6c,
+ 0x6c, 0x61, 0x72, 0x73, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x70, 0x68,
+ 0x70, 0x3f, 0x69, 0x64, 0x3d, 0x61, 0x6c, 0x63, 0x6f, 0x68, 0x6f, 0x6c, 0x29,
+ 0x3b, 0x7d, 0x29, 0x28, 0x29, 0x3b, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61,
+ 0x3e, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x76, 0x65, 0x73, 0x73, 0x65, 0x6c,
+ 0x73, 0x72, 0x65, 0x76, 0x69, 0x76, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65,
+ 0x73, 0x73, 0x61, 0x6d, 0x61, 0x74, 0x65, 0x75, 0x72, 0x61, 0x6e, 0x64, 0x72,
+ 0x6f, 0x69, 0x64, 0x61, 0x6c, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x69, 0x6c, 0x6c,
+ 0x6e, 0x65, 0x73, 0x73, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x63, 0x65,
+ 0x6e, 0x74, 0x65, 0x72, 0x73, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x79, 0x6d,
+ 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x75, 0x6e, 0x69, 0x66, 0x69, 0x65, 0x64,
+ 0x65, 0x78, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x73,
+ 0x65, 0x64, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x0a, 0x09, 0x3c, 0x21, 0x2d,
+ 0x2d, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x73, 0x6c, 0x69, 0x6e, 0x6b,
+ 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x20, 0x42, 0x6f, 0x6f,
+ 0x6b, 0x20, 0x6f, 0x66, 0x65, 0x76, 0x65, 0x6e, 0x69, 0x6e, 0x67, 0x6d, 0x69,
+ 0x6e, 0x2e, 0x6a, 0x73, 0x3f, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6b,
+ 0x6f, 0x6e, 0x74, 0x61, 0x6b, 0x74, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x27, 0x73,
+ 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x3d, 0x77, 0x65, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x6c, 0x6c, 0x20, 0x52,
+ 0x69, 0x67, 0x3b, 0x0a, 0x7d, 0x29, 0x28, 0x29, 0x3b, 0x72, 0x61, 0x69, 0x73,
+ 0x69, 0x6e, 0x67, 0x20, 0x41, 0x6c, 0x73, 0x6f, 0x2c, 0x20, 0x63, 0x72, 0x75,
+ 0x63, 0x69, 0x61, 0x6c, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x22, 0x3e, 0x64, 0x65,
+ 0x63, 0x6c, 0x61, 0x72, 0x65, 0x2d, 0x2d, 0x3e, 0x0a, 0x3c, 0x73, 0x63, 0x66,
+ 0x69, 0x72, 0x65, 0x66, 0x6f, 0x78, 0x61, 0x73, 0x20, 0x6d, 0x75, 0x63, 0x68,
+ 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c,
+ 0x20, 0x73, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20,
+ 0x3d, 0x20, 0x0a, 0x0d, 0x0a, 0x3c, 0x21, 0x2d, 0x2d, 0x74, 0x6f, 0x77, 0x61,
+ 0x72, 0x64, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x50, 0x72, 0x69,
+ 0x76, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x50, 0x72,
+ 0x65, 0x6d, 0x69, 0x65, 0x72, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x56,
+ 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x65,
+ 0x64, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x3b, 0x70, 0x6f, 0x76, 0x65, 0x72,
+ 0x74, 0x79, 0x63, 0x68, 0x61, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x76, 0x69,
+ 0x6e, 0x67, 0x20, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x41, 0x6e, 0x74,
+ 0x68, 0x6f, 0x6e, 0x79, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x22, 0x20, 0x52, 0x65,
+ 0x6c, 0x61, 0x74, 0x65, 0x64, 0x45, 0x63, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x72,
+ 0x65, 0x61, 0x63, 0x68, 0x65, 0x73, 0x63, 0x75, 0x74, 0x74, 0x69, 0x6e, 0x67,
+ 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x79, 0x6c, 0x69, 0x66, 0x65, 0x20, 0x69,
+ 0x6e, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x2d, 0x73, 0x68, 0x61, 0x64,
+ 0x6f, 0x77, 0x4e, 0x6f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3c, 0x2f, 0x74, 0x64,
+ 0x3e, 0x0d, 0x0a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x74, 0x61,
+ 0x64, 0x69, 0x75, 0x6d, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x76, 0x61,
+ 0x72, 0x79, 0x69, 0x6e, 0x67, 0x74, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x73, 0x68,
+ 0x65, 0x6c, 0x64, 0x20, 0x62, 0x79, 0x77, 0x68, 0x6f, 0x20, 0x61, 0x72, 0x65,
+ 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x69, 0x6e, 0x66, 0x61, 0x63, 0x75, 0x6c, 0x74,
+ 0x79, 0x61, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x77, 0x68, 0x6f, 0x20, 0x68,
+ 0x61, 0x64, 0x61, 0x69, 0x72, 0x70, 0x6f, 0x72, 0x74, 0x74, 0x6f, 0x77, 0x6e,
+ 0x20, 0x6f, 0x66, 0x0a, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x20, 0x27, 0x63, 0x6c,
+ 0x69, 0x63, 0x6b, 0x27, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x6b, 0x65,
+ 0x79, 0x77, 0x6f, 0x72, 0x64, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x63,
+ 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x3b,
+ 0x41, 0x6e, 0x64, 0x72, 0x65, 0x77, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65,
+ 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x6f, 0x72, 0x20, 0x6d, 0x6f,
+ 0x72, 0x65, 0x33, 0x30, 0x30, 0x70, 0x78, 0x3b, 0x20, 0x72, 0x65, 0x74, 0x75,
+ 0x72, 0x6e, 0x3b, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x70, 0x6c, 0x75,
+ 0x67, 0x69, 0x6e, 0x73, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x68, 0x65,
+ 0x72, 0x73, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46,
+ 0x65, 0x64, 0x65, 0x72, 0x61, 0x6c, 0x76, 0x65, 0x6e, 0x74, 0x75, 0x72, 0x65,
+ 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x74,
+ 0x6f, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x63, 0x74, 0x72, 0x65,
+ 0x73, 0x73, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x66, 0x69, 0x6e, 0x67,
+ 0x65, 0x72, 0x73, 0x44, 0x75, 0x6b, 0x65, 0x20, 0x6f, 0x66, 0x70, 0x65, 0x6f,
+ 0x70, 0x6c, 0x65, 0x2c, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x77, 0x68,
+ 0x61, 0x74, 0x20, 0x69, 0x73, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x61,
+ 0x20, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x22, 0x3a, 0x22, 0x68, 0x74, 0x74, 0x70,
+ 0x69, 0x6e, 0x20, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x65, 0x6e, 0x75, 0x22, 0x3e,
+ 0x0a, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x6f, 0x66, 0x66, 0x69, 0x63,
+ 0x65, 0x72, 0x63, 0x6f, 0x75, 0x6e, 0x63, 0x69, 0x6c, 0x67, 0x61, 0x69, 0x6e,
+ 0x69, 0x6e, 0x67, 0x65, 0x76, 0x65, 0x6e, 0x20, 0x69, 0x6e, 0x53, 0x75, 0x6d,
+ 0x6d, 0x61, 0x72, 0x79, 0x64, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x66, 0x6c, 0x6f,
+ 0x79, 0x61, 0x6c, 0x74, 0x79, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x61,
+ 0x6e, 0x64, 0x20, 0x77, 0x61, 0x73, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x6f, 0x72,
+ 0x73, 0x75, 0x70, 0x72, 0x65, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+ 0x20, 0x68, 0x65, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x73, 0x73, 0x69,
+ 0x61, 0x6e, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x62, 0x65,
+ 0x72, 0x74, 0x61, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x65, 0x74,
+ 0x20, 0x6f, 0x66, 0x20, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x22, 0x3e, 0x2e, 0x61,
+ 0x70, 0x70, 0x65, 0x6e, 0x64, 0x64, 0x6f, 0x20, 0x77, 0x69, 0x74, 0x68, 0x66,
+ 0x65, 0x64, 0x65, 0x72, 0x61, 0x6c, 0x62, 0x61, 0x6e, 0x6b, 0x20, 0x6f, 0x66,
+ 0x62, 0x65, 0x6e, 0x65, 0x61, 0x74, 0x68, 0x44, 0x65, 0x73, 0x70, 0x69, 0x74,
+ 0x65, 0x43, 0x61, 0x70, 0x69, 0x74, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x6e,
+ 0x64, 0x73, 0x29, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x65, 0x72, 0x63,
+ 0x65, 0x6e, 0x74, 0x69, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x63, 0x6c, 0x6f,
+ 0x73, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x49, 0x6e,
+ 0x73, 0x74, 0x65, 0x61, 0x64, 0x66, 0x69, 0x66, 0x74, 0x65, 0x65, 0x6e, 0x61,
+ 0x73, 0x20, 0x77, 0x65, 0x6c, 0x6c, 0x2e, 0x79, 0x61, 0x68, 0x6f, 0x6f, 0x2e,
+ 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x66, 0x69, 0x67, 0x68, 0x74, 0x65,
+ 0x72, 0x6f, 0x62, 0x73, 0x63, 0x75, 0x72, 0x65, 0x72, 0x65, 0x66, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x63, 0x3d, 0x20, 0x4d, 0x61,
+ 0x74, 0x68, 0x2e, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x6f, 0x6e, 0x6c,
+ 0x69, 0x6e, 0x65, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x61, 0x20,
+ 0x77, 0x68, 0x6f, 0x6c, 0x65, 0x6f, 0x6e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x79,
+ 0x65, 0x61, 0x72, 0x20, 0x6f, 0x66, 0x65, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20,
+ 0x62, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x69,
+ 0x74, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x68, 0x6f, 0x6d, 0x65, 0x20,
+ 0x6f, 0x66, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x72, 0x65, 0x6e, 0x61,
+ 0x6d, 0x65, 0x64, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x3e, 0x68, 0x65, 0x61,
+ 0x74, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x63, 0x6c,
+ 0x6f, 0x75, 0x64, 0x66, 0x72, 0x77, 0x61, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x4d,
+ 0x61, 0x72, 0x63, 0x68, 0x20, 0x31, 0x6b, 0x6e, 0x6f, 0x77, 0x69, 0x6e, 0x67,
+ 0x69, 0x6e, 0x20, 0x70, 0x61, 0x72, 0x74, 0x42, 0x65, 0x74, 0x77, 0x65, 0x65,
+ 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x6f, 0x6e, 0x73, 0x63, 0x6c, 0x6f, 0x73, 0x65,
+ 0x73, 0x74, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x6b,
+ 0x73, 0x22, 0x3e, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x65, 0x64, 0x45, 0x4e, 0x44,
+ 0x20, 0x2d, 0x2d, 0x3e, 0x66, 0x61, 0x6d, 0x6f, 0x75, 0x73, 0x20, 0x61, 0x77,
+ 0x61, 0x72, 0x64, 0x65, 0x64, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x48,
+ 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x66, 0x61, 0x69, 0x72, 0x6c, 0x79, 0x20,
+ 0x77, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x61,
+ 0x6c, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x65,
+ 0x74, 0x65, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x3e, 0x73, 0x69, 0x6e, 0x67,
+ 0x69, 0x6e, 0x67, 0x66, 0x61, 0x72, 0x6d, 0x65, 0x72, 0x73, 0x42, 0x72, 0x61,
+ 0x73, 0x69, 0x6c, 0x29, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x72, 0x65,
+ 0x70, 0x6c, 0x61, 0x63, 0x65, 0x47, 0x72, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x66,
+ 0x6f, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x70, 0x75, 0x72, 0x73, 0x75, 0x65, 0x64,
+ 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x73, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x75,
+ 0x70, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x62, 0x6f, 0x74, 0x68, 0x20,
+ 0x6f, 0x66, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x73, 0x61, 0x77, 0x20,
+ 0x74, 0x68, 0x65, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x65, 0x73, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x75, 0x72, 0x73, 0x69, 0x66, 0x28, 0x64, 0x6f, 0x63, 0x75, 0x77, 0x68,
+ 0x65, 0x6e, 0x20, 0x68, 0x65, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x70,
+ 0x75, 0x73, 0x68, 0x28, 0x66, 0x75, 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x20,
+ 0x55, 0x54, 0x46, 0x2d, 0x38, 0x22, 0x3e, 0x46, 0x61, 0x6e, 0x74, 0x61, 0x73,
+ 0x79, 0x69, 0x6e, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x6a, 0x75, 0x72,
+ 0x65, 0x64, 0x55, 0x73, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x66, 0x61, 0x72, 0x6d,
+ 0x69, 0x6e, 0x67, 0x63, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x6f, 0x62, 0x6a,
+ 0x65, 0x63, 0x74, 0x20, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x63, 0x65, 0x75, 0x73,
+ 0x65, 0x20, 0x6f, 0x66, 0x20, 0x4d, 0x65, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x3c,
+ 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0a, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x74,
+ 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x6b, 0x65, 0x79, 0x43, 0x6f, 0x64,
+ 0x65, 0x73, 0x69, 0x78, 0x74, 0x65, 0x65, 0x6e, 0x49, 0x73, 0x6c, 0x61, 0x6d,
+ 0x69, 0x63, 0x23, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x65, 0x6e, 0x74, 0x69,
+ 0x72, 0x65, 0x20, 0x77, 0x69, 0x64, 0x65, 0x6c, 0x79, 0x20, 0x61, 0x63, 0x74,
+ 0x69, 0x76, 0x65, 0x20, 0x28, 0x74, 0x79, 0x70, 0x65, 0x6f, 0x66, 0x6f, 0x6e,
+ 0x65, 0x20, 0x63, 0x61, 0x6e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x73,
+ 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x73,
+ 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x73, 0x74, 0x65, 0x72, 0x72, 0x61, 0x69,
+ 0x6e, 0x3c, 0x74, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x66, 0x75, 0x6e, 0x65, 0x72,
+ 0x61, 0x6c, 0x76, 0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x6d, 0x69, 0x64, 0x64,
+ 0x6c, 0x65, 0x20, 0x63, 0x72, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x70, 0x72, 0x6f,
+ 0x70, 0x68, 0x65, 0x74, 0x73, 0x68, 0x69, 0x66, 0x74, 0x65, 0x64, 0x64, 0x6f,
+ 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x75, 0x73, 0x73, 0x65, 0x6c, 0x6c, 0x20,
+ 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74,
+ 0x61, 0x6c, 0x67, 0x65, 0x62, 0x72, 0x61, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c,
+ 0x2d, 0x62, 0x75, 0x6c, 0x6b, 0x20, 0x6f, 0x66, 0x6d, 0x61, 0x6e, 0x20, 0x61,
+ 0x6e, 0x64, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x0a, 0x20, 0x68, 0x65, 0x20, 0x6c,
+ 0x65, 0x66, 0x74, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, 0x66, 0x61, 0x6c,
+ 0x73, 0x65, 0x29, 0x3b, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x62, 0x61,
+ 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x68, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x6e,
+ 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x20, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61,
+ 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b,
+ 0x0a, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x20, 0x74, 0x75,
+ 0x72, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x73, 0x62, 0x65, 0x66, 0x6f,
+ 0x72, 0x65, 0x20, 0x42, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x63, 0x68, 0x61,
+ 0x72, 0x67, 0x65, 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x3e, 0x43, 0x61,
+ 0x70, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x6c, 0x6c, 0x65, 0x64, 0x67,
+ 0x6f, 0x64, 0x64, 0x65, 0x73, 0x73, 0x54, 0x61, 0x67, 0x20, 0x2d, 0x2d, 0x3e,
+ 0x41, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x62, 0x75, 0x74, 0x20, 0x77, 0x61,
+ 0x73, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x74, 0x69, 0x65,
+ 0x6e, 0x74, 0x62, 0x61, 0x63, 0x6b, 0x20, 0x69, 0x6e, 0x3d, 0x66, 0x61, 0x6c,
+ 0x73, 0x65, 0x26, 0x4c, 0x69, 0x6e, 0x63, 0x6f, 0x6c, 0x6e, 0x77, 0x65, 0x20,
+ 0x6b, 0x6e, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4a, 0x75,
+ 0x64, 0x61, 0x69, 0x73, 0x6d, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x61,
+ 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x27, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+ 0x68, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x75, 0x6e, 0x63, 0x6c, 0x65, 0x61,
+ 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x27, 0x2c, 0x62, 0x6f, 0x74, 0x68, 0x20,
+ 0x69, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x0a, 0x0a, 0x3c, 0x21,
+ 0x2d, 0x2d, 0x20, 0x70, 0x6c, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x68, 0x61, 0x72,
+ 0x64, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x6f,
+ 0x72, 0x74, 0x20, 0x6f, 0x66, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x73,
+ 0x74, 0x72, 0x65, 0x65, 0x74, 0x73, 0x42, 0x65, 0x72, 0x6e, 0x61, 0x72, 0x64,
+ 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x73, 0x74, 0x65, 0x6e, 0x64, 0x20, 0x74,
+ 0x6f, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x64, 0x6f, 0x77, 0x6e, 0x20,
+ 0x69, 0x6e, 0x68, 0x61, 0x72, 0x62, 0x6f, 0x75, 0x72, 0x46, 0x72, 0x65, 0x65,
+ 0x64, 0x6f, 0x6d, 0x6a, 0x65, 0x77, 0x65, 0x6c, 0x72, 0x79, 0x2f, 0x61, 0x62,
+ 0x6f, 0x75, 0x74, 0x2e, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x6c, 0x65,
+ 0x67, 0x65, 0x6e, 0x64, 0x73, 0x69, 0x73, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x6d,
+ 0x6f, 0x64, 0x65, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x6f, 0x6e,
+ 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x74, 0x6f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22,
+ 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x20, 0x70, 0x61, 0x69, 0x6e, 0x74,
+ 0x65, 0x72, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x72, 0x61, 0x72, 0x65,
+ 0x6c, 0x79, 0x20, 0x61, 0x63, 0x72, 0x6f, 0x6e, 0x79, 0x6d, 0x64, 0x65, 0x6c,
+ 0x69, 0x76, 0x65, 0x72, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x30, 0x30,
+ 0x26, 0x61, 0x6d, 0x70, 0x3b, 0x61, 0x73, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x77,
+ 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x2f, 0x2a, 0x20, 0x3c, 0x21, 0x5b, 0x43,
+ 0x74, 0x69, 0x74, 0x6c, 0x65, 0x20, 0x3d, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x20, 0x70, 0x69, 0x63, 0x6b, 0x65,
+ 0x64, 0x20, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x64, 0x75, 0x73, 0x65, 0x73,
+ 0x20, 0x6f, 0x66, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x50, 0x75,
+ 0x62, 0x6c, 0x69, 0x63, 0x4d, 0x61, 0x74, 0x74, 0x68, 0x65, 0x77, 0x74, 0x61,
+ 0x63, 0x74, 0x69, 0x63, 0x73, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x64, 0x77,
+ 0x61, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x6c, 0x61, 0x77, 0x73, 0x20, 0x6f, 0x66,
+ 0x65, 0x61, 0x73, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f,
+ 0x77, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x20, 0x73, 0x69, 0x6d, 0x70,
+ 0x6c, 0x65, 0x7d, 0x63, 0x61, 0x74, 0x63, 0x68, 0x28, 0x73, 0x65, 0x76, 0x65,
+ 0x6e, 0x74, 0x68, 0x69, 0x6e, 0x66, 0x6f, 0x62, 0x6f, 0x78, 0x77, 0x65, 0x6e,
+ 0x74, 0x20, 0x74, 0x6f, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x64, 0x63, 0x69,
+ 0x74, 0x69, 0x7a, 0x65, 0x6e, 0x49, 0x20, 0x64, 0x6f, 0x6e, 0x27, 0x74, 0x72,
+ 0x65, 0x74, 0x72, 0x65, 0x61, 0x74, 0x2e, 0x20, 0x53, 0x6f, 0x6d, 0x65, 0x20,
+ 0x77, 0x77, 0x2e, 0x22, 0x29, 0x3b, 0x0a, 0x62, 0x6f, 0x6d, 0x62, 0x69, 0x6e,
+ 0x67, 0x6d, 0x61, 0x69, 0x6c, 0x74, 0x6f, 0x3a, 0x6d, 0x61, 0x64, 0x65, 0x20,
+ 0x69, 0x6e, 0x2e, 0x20, 0x4d, 0x61, 0x6e, 0x79, 0x20, 0x63, 0x61, 0x72, 0x72,
+ 0x69, 0x65, 0x73, 0x7c, 0x7c, 0x7b, 0x7d, 0x3b, 0x77, 0x69, 0x77, 0x6f, 0x72,
+ 0x6b, 0x20, 0x6f, 0x66, 0x73, 0x79, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x64, 0x65,
+ 0x66, 0x65, 0x61, 0x74, 0x73, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x65, 0x64, 0x6f,
+ 0x70, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x70, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61,
+ 0x75, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x6c, 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x63, 0x6f, 0x6d, 0x53, 0x63,
+ 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x6a, 0x51, 0x75, 0x65,
+ 0x72, 0x79, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x61,
+ 0x73, 0x73, 0x69, 0x63, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x22, 0x20, 0x57, 0x69,
+ 0x6c, 0x68, 0x65, 0x6c, 0x6d, 0x73, 0x75, 0x62, 0x75, 0x72, 0x62, 0x73, 0x67,
+ 0x65, 0x6e, 0x75, 0x69, 0x6e, 0x65, 0x62, 0x69, 0x73, 0x68, 0x6f, 0x70, 0x73,
+ 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+ 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x62, 0x6f, 0x64, 0x79, 0x20,
+ 0x6f, 0x66, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74,
+ 0x61, 0x63, 0x74, 0x73, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x6c, 0x65, 0x66,
+ 0x74, 0x20, 0x74, 0x6f, 0x63, 0x68, 0x69, 0x65, 0x66, 0x6c, 0x79, 0x2d, 0x68,
+ 0x69, 0x64, 0x64, 0x65, 0x6e, 0x2d, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3c,
+ 0x2f, 0x6c, 0x69, 0x3e, 0x0a, 0x0a, 0x2e, 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20,
+ 0x69, 0x6e, 0x20, 0x62, 0x6f, 0x74, 0x68, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73,
+ 0x73, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x61, 0x6c, 0x77, 0x61, 0x79,
+ 0x73, 0x20, 0x76, 0x69, 0x61, 0x20, 0x74, 0x68, 0x65, 0x73, 0x70, 0x61, 0xc3,
+ 0xb1, 0x6f, 0x6c, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x72, 0x75, 0x6c,
+ 0x69, 0x6e, 0x67, 0x20, 0x61, 0x72, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x63, 0x61,
+ 0x70, 0x74, 0x61, 0x69, 0x6e, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x6e, 0x72,
+ 0x75, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x6f, 0x6b,
+ 0x69, 0x74, 0x73, 0x65, 0x6c, 0x66, 0x2c, 0x3d, 0x30, 0x26, 0x61, 0x6d, 0x70,
+ 0x3b, 0x28, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x73, 0x61, 0x6d, 0x70, 0x6c,
+ 0x65, 0x73, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x63, 0x6f, 0x6d, 0x2f,
+ 0x70, 0x61, 0x67, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x20, 0x4b, 0x65, 0x6e,
+ 0x6e, 0x65, 0x64, 0x79, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x66, 0x75,
+ 0x6c, 0x6c, 0x20, 0x6f, 0x66, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x42,
+ 0x65, 0x73, 0x69, 0x64, 0x65, 0x73, 0x2f, 0x2f, 0x2d, 0x2d, 0x3e, 0x3c, 0x2f,
+ 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x73, 0x65, 0x73, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x68, 0x69, 0x6d, 0x20, 0x74,
+ 0x6f, 0x20, 0x69, 0x74, 0x73, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x74, 0x6f, 0x20,
+ 0x74, 0x61, 0x6b, 0x65, 0x77, 0x61, 0x79, 0x73, 0x20, 0x74, 0x6f, 0x73, 0x2e,
+ 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x61, 0x64, 0x76, 0x69, 0x73, 0x65, 0x64, 0x70,
+ 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x3a,
+ 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x79, 0x4c, 0x65, 0x74, 0x74, 0x65, 0x72,
+ 0x73, 0x61, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x48, 0x65, 0x72, 0x62, 0x65,
+ 0x72, 0x74, 0x73, 0x74, 0x72, 0x69, 0x6b, 0x65, 0x73, 0x20, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x73, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x66, 0x6c, 0x69,
+ 0x67, 0x68, 0x74, 0x73, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x70, 0x73, 0x6c,
+ 0x6f, 0x77, 0x6c, 0x79, 0x20, 0x6c, 0x65, 0x73, 0x73, 0x65, 0x72, 0x20, 0x73,
+ 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0x0a, 0x09, 0x09,
+ 0x69, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x64,
+ 0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x66, 0x75, 0x6c, 0x3e, 0x0d, 0x0a,
+ 0x20, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x70, 0x61, 0x69, 0x72,
+ 0x20, 0x6f, 0x66, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x69, 0x74, 0x4b, 0x6f, 0x6e,
+ 0x74, 0x61, 0x6b, 0x74, 0x41, 0x6e, 0x74, 0x6f, 0x6e, 0x69, 0x6f, 0x68, 0x61,
+ 0x76, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x20,
+ 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73,
+ 0x74, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x22, 0x29, 0x2e, 0x63, 0x73, 0x73,
+ 0x28, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x6c, 0x65, 0x6c, 0x65, 0x61, 0x64, 0x20,
+ 0x74, 0x6f, 0x6c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x20, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x73, 0x2c, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2d, 0x2d, 0x3e,
+ 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x72, 0x6f, 0x77, 0x73, 0x3d, 0x22, 0x20, 0x6f,
+ 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x65, 0x3c,
+ 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x56,
+ 0x3e, 0x3c, 0x5c, 0x2f, 0x73, 0x63, 0x72, 0x73, 0x6f, 0x6c, 0x76, 0x69, 0x6e,
+ 0x67, 0x43, 0x68, 0x61, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x6c, 0x61, 0x76, 0x65,
+ 0x72, 0x79, 0x77, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x77, 0x68, 0x65, 0x72,
+ 0x65, 0x61, 0x73, 0x21, 0x3d, 0x20, 0x27, 0x75, 0x6e, 0x64, 0x66, 0x6f, 0x72,
+ 0x20, 0x61, 0x6c, 0x6c, 0x70, 0x61, 0x72, 0x74, 0x6c, 0x79, 0x20, 0x2d, 0x72,
+ 0x69, 0x67, 0x68, 0x74, 0x3a, 0x41, 0x72, 0x61, 0x62, 0x69, 0x61, 0x6e, 0x62,
+ 0x61, 0x63, 0x6b, 0x65, 0x64, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x75, 0x72, 0x79,
+ 0x75, 0x6e, 0x69, 0x74, 0x20, 0x6f, 0x66, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65,
+ 0x2d, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2c, 0x69, 0x73, 0x20, 0x68, 0x6f,
+ 0x6d, 0x65, 0x72, 0x69, 0x73, 0x6b, 0x20, 0x6f, 0x66, 0x64, 0x65, 0x73, 0x69,
+ 0x72, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x6e, 0x74, 0x6f, 0x6e, 0x63, 0x6f, 0x73,
+ 0x74, 0x20, 0x6f, 0x66, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x62, 0x65,
+ 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x6e, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x70,
+ 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x20,
+ 0x65, 0x61, 0x64, 0x27, 0x29, 0x5b, 0x30, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63,
+ 0x73, 0x73, 0x74, 0x75, 0x64, 0x69, 0x6f, 0x73, 0x3e, 0x26, 0x63, 0x6f, 0x70,
+ 0x79, 0x3b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x3e, 0x61, 0x73, 0x73, 0x65,
+ 0x6d, 0x62, 0x6c, 0x6d, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x65,
+ 0x73, 0x73, 0x65, 0x64, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x2e, 0x70, 0x73,
+ 0x3a, 0x22, 0x20, 0x3f, 0x20, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x62,
+ 0x79, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x20,
+ 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x65,
+ 0x64, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x68, 0x61, 0x64, 0x20, 0x74,
+ 0x68, 0x65, 0x70, 0x75, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x62, 0x75, 0x74, 0x20, 0x61, 0x72, 0x65, 0x70, 0x61, 0x72,
+ 0x74, 0x69, 0x61, 0x6c, 0x42, 0x61, 0x62, 0x79, 0x6c, 0x6f, 0x6e, 0x62, 0x6f,
+ 0x74, 0x74, 0x6f, 0x6d, 0x20, 0x63, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x43,
+ 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x69, 0x74, 0x73, 0x20, 0x75, 0x73, 0x65,
+ 0x41, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65,
+ 0x73, 0x61, 0x20, 0x74, 0x68, 0x69, 0x72, 0x64, 0x64, 0x65, 0x6e, 0x6f, 0x74,
+ 0x65, 0x73, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x69, 0x6e, 0x48, 0x6f, 0x75, 0x73,
+ 0x74, 0x6f, 0x6e, 0x32, 0x30, 0x70, 0x78, 0x3b, 0x22, 0x3e, 0x61, 0x63, 0x63,
+ 0x75, 0x73, 0x65, 0x64, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x67, 0x6f,
+ 0x61, 0x6c, 0x20, 0x6f, 0x66, 0x46, 0x61, 0x6d, 0x6f, 0x75, 0x73, 0x20, 0x29,
+ 0x2e, 0x62, 0x69, 0x6e, 0x64, 0x28, 0x70, 0x72, 0x69, 0x65, 0x73, 0x74, 0x73,
+ 0x20, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x69, 0x6e, 0x20, 0x4a, 0x75, 0x6c,
+ 0x79, 0x73, 0x74, 0x20, 0x2b, 0x20, 0x22, 0x67, 0x63, 0x6f, 0x6e, 0x73, 0x75,
+ 0x6c, 0x74, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x68, 0x65, 0x6c, 0x70,
+ 0x66, 0x75, 0x6c, 0x72, 0x65, 0x76, 0x69, 0x76, 0x65, 0x64, 0x69, 0x73, 0x20,
+ 0x76, 0x65, 0x72, 0x79, 0x72, 0x27, 0x2b, 0x27, 0x69, 0x70, 0x74, 0x6c, 0x6f,
+ 0x73, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x65, 0x6d, 0x61, 0x6c, 0x65, 0x73, 0x69,
+ 0x73, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73,
+ 0x64, 0x61, 0x79, 0x73, 0x20, 0x6f, 0x66, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61,
+ 0x6c, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x20, 0x3c, 0x6f, 0x62, 0x6a, 0x65,
+ 0x63, 0x74, 0x66, 0x6f, 0x72, 0x63, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69,
+ 0x6e, 0x67, 0x28, 0x22, 0x20, 0x2f, 0x3e, 0x0a, 0x09, 0x09, 0x68, 0x65, 0x72,
+ 0x65, 0x20, 0x69, 0x73, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x2e, 0x20,
+ 0x20, 0x54, 0x68, 0x65, 0x20, 0x62, 0x61, 0x6c, 0x6c, 0x6f, 0x6f, 0x6e, 0x64,
+ 0x6f, 0x6e, 0x65, 0x20, 0x62, 0x79, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
+ 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x6c, 0x61, 0x77, 0x20, 0x6f, 0x66,
+ 0x20, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x61, 0x76, 0x6f, 0x69, 0x64,
+ 0x65, 0x64, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x32, 0x70, 0x78, 0x20,
+ 0x33, 0x70, 0x78, 0x6a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x66, 0x74,
+ 0x65, 0x72, 0x20, 0x61, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6d, 0x65,
+ 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2d, 0x3d,
+ 0x20, 0x74, 0x72, 0x75, 0x65, 0x3b, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x73, 0x65,
+ 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e,
+ 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x66, 0x61, 0x6d, 0x69, 0x6c,
+ 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x20, 0x26, 0x6e, 0x62,
+ 0x73, 0x70, 0x3b, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x74, 0x65,
+ 0x72, 0x6e, 0x61, 0x6c, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x61, 0x73, 0x6e, 0x6f,
+ 0x74, 0x69, 0x63, 0x65, 0x64, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x73, 0x7d,
+ 0x29, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x69, 0x73, 0x20, 0x6d, 0x6f, 0x72, 0x65,
+ 0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x77, 0x69, 0x73, 0x20, 0x6a, 0x75,
+ 0x73, 0x74, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x53, 0x65, 0x61,
+ 0x72, 0x63, 0x68, 0x77, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x77, 0x68, 0x79,
+ 0x20, 0x74, 0x68, 0x65, 0x73, 0x68, 0x69, 0x70, 0x70, 0x65, 0x64, 0x62, 0x72,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x68,
+ 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x6f, 0x66,
+ 0x63, 0x75, 0x69, 0x73, 0x69, 0x6e, 0x65, 0x69, 0x73, 0x20, 0x74, 0x68, 0x61,
+ 0x74, 0x61, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x41, 0x64, 0x6d, 0x69, 0x72,
+ 0x61, 0x6c, 0x20, 0x66, 0x69, 0x78, 0x65, 0x64, 0x3b, 0x6e, 0x6f, 0x72, 0x6d,
+ 0x61, 0x6c, 0x20, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65,
+ 0x73, 0x73, 0x2c, 0x20, 0x6f, 0x6e, 0x74, 0x61, 0x72, 0x69, 0x6f, 0x63, 0x68,
+ 0x61, 0x72, 0x73, 0x65, 0x74, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x69,
+ 0x6e, 0x76, 0x61, 0x64, 0x65, 0x64, 0x3d, 0x22, 0x74, 0x72, 0x75, 0x65, 0x22,
+ 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x69, 0x73, 0x20, 0x6d, 0x6f, 0x73,
+ 0x74, 0x61, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x6c, 0x79, 0x66, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x66, 0x7d, 0x29, 0x3b, 0x0d,
+ 0x0a, 0x20, 0x20, 0x69, 0x6d, 0x6d, 0x65, 0x6e, 0x73, 0x65, 0x74, 0x69, 0x6d,
+ 0x65, 0x20, 0x69, 0x6e, 0x73, 0x65, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x73, 0x61,
+ 0x74, 0x69, 0x73, 0x66, 0x79, 0x74, 0x6f, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x64,
+ 0x6f, 0x77, 0x6e, 0x20, 0x74, 0x6f, 0x6c, 0x6f, 0x74, 0x20, 0x6f, 0x66, 0x20,
+ 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x69, 0x6e, 0x20, 0x4a, 0x75, 0x6e,
+ 0x65, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x6e, 0x6f, 0x74, 0x20, 0x74,
+ 0x68, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x64, 0x69, 0x73, 0x74,
+ 0x61, 0x6e, 0x74, 0x46, 0x69, 0x6e, 0x6e, 0x69, 0x73, 0x68, 0x73, 0x72, 0x63,
+ 0x20, 0x3d, 0x20, 0x28, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x68, 0x65,
+ 0x6c, 0x70, 0x20, 0x6f, 0x66, 0x47, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x20, 0x6c,
+ 0x61, 0x77, 0x20, 0x61, 0x6e, 0x64, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x64,
+ 0x66, 0x6f, 0x72, 0x65, 0x73, 0x74, 0x73, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x6e,
+ 0x67, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x3e, 0x68, 0x65, 0x61, 0x64, 0x65,
+ 0x72, 0x2d, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x61, 0x73, 0x53, 0x74, 0x61, 0x6e,
+ 0x6c, 0x65, 0x79, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x2f, 0x67, 0x6c,
+ 0x6f, 0x62, 0x61, 0x6c, 0x43, 0x72, 0x6f, 0x61, 0x74, 0x69, 0x61, 0x20, 0x41,
+ 0x62, 0x6f, 0x75, 0x74, 0x20, 0x5b, 0x30, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x69,
+ 0x74, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x65, 0x64,
+ 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x29, 0x7b, 0x74, 0x68, 0x72, 0x6f,
+ 0x77, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74,
+ 0x65, 0x72, 0x65, 0x74, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x46, 0x46, 0x46, 0x46,
+ 0x46, 0x46, 0x22, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x22, 0x6c, 0x69, 0x6b,
+ 0x65, 0x20, 0x61, 0x20, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x73, 0x6c, 0x69,
+ 0x76, 0x65, 0x20, 0x69, 0x6e, 0x61, 0x73, 0x20, 0x73, 0x65, 0x65, 0x6e, 0x70,
+ 0x72, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x6f, 0x66,
+ 0x75, 0x62, 0x2d, 0x6c, 0x69, 0x6e, 0x6b, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74,
+ 0x73, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x73, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65,
+ 0x22, 0x3e, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x66, 0x65, 0x65, 0x64,
+ 0x69, 0x6e, 0x67, 0x4e, 0x75, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x69, 0x6e, 0x66,
+ 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x6f, 0x20, 0x68, 0x65, 0x6c, 0x70, 0x57, 0x6f,
+ 0x6d, 0x65, 0x6e, 0x27, 0x73, 0x4e, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x4d,
+ 0x65, 0x78, 0x69, 0x63, 0x61, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x69, 0x6e,
+ 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x79, 0x20, 0x6d, 0x61, 0x6e,
+ 0x79, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x6c, 0x61, 0x77, 0x73, 0x75,
+ 0x69, 0x74, 0x64, 0x65, 0x76, 0x69, 0x73, 0x65, 0x64, 0x2e, 0x70, 0x75, 0x73,
+ 0x68, 0x28, 0x7b, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x73, 0x73, 0x69, 0x6d,
+ 0x70, 0x6c, 0x79, 0x20, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x2e, 0x63,
+ 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x20, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x28, 0x6f,
+ 0x6c, 0x64, 0x65, 0x72, 0x22, 0x3e, 0x75, 0x73, 0x2e, 0x6a, 0x73, 0x22, 0x3e,
+ 0x20, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x20, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72,
+ 0x73, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x20,
+ 0x74, 0x6f, 0x21, 0x2d, 0x2d, 0x20, 0x65, 0x6e, 0x64, 0x6c, 0x69, 0x65, 0x73,
+ 0x20, 0x69, 0x6e, 0x27, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x6d, 0x61,
+ 0x72, 0x6b, 0x65, 0x74, 0x77, 0x68, 0x6f, 0x20, 0x69, 0x73, 0x20, 0x28, 0x22,
+ 0x44, 0x4f, 0x4d, 0x43, 0x6f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x6f,
+ 0x6e, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x74, 0x79, 0x70, 0x65, 0x6f, 0x66, 0x20,
+ 0x4b, 0x69, 0x6e, 0x67, 0x64, 0x6f, 0x6d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x74,
+ 0x73, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x74, 0x6f, 0x20, 0x73, 0x68,
+ 0x6f, 0x77, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x64, 0x65,
+ 0x20, 0x69, 0x74, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x77, 0x65, 0x72,
+ 0x65, 0x20, 0x69, 0x6e, 0x6d, 0x69, 0x78, 0x74, 0x75, 0x72, 0x65, 0x70, 0x72,
+ 0x65, 0x63, 0x69, 0x73, 0x65, 0x61, 0x72, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x73,
+ 0x72, 0x63, 0x20, 0x3d, 0x20, 0x27, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x61, 0x20,
+ 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x64, 0x42, 0x61, 0x70, 0x74, 0x69, 0x73,
+ 0x74, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x0a, 0x09, 0x09, 0x76, 0x61,
+ 0x72, 0x20, 0x4d, 0x61, 0x72, 0x63, 0x68, 0x20, 0x32, 0x67, 0x72, 0x65, 0x77,
+ 0x20, 0x75, 0x70, 0x43, 0x6c, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x2e, 0x72, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x77, 0x61,
+ 0x79, 0x20, 0x74, 0x68, 0x65, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x66,
+ 0x61, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x61, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x20,
+ 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0x74, 0x6f, 0x20, 0x77, 0x6f, 0x72,
+ 0x6b, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x73, 0x68, 0x61, 0x73, 0x20, 0x68,
+ 0x61, 0x64, 0x65, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x73, 0x68, 0x6f, 0x77,
+ 0x28, 0x29, 0x3b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x62, 0x6f, 0x6f,
+ 0x6b, 0x20, 0x6f, 0x66, 0x61, 0x6e, 0x20, 0x61, 0x72, 0x65, 0x61, 0x3d, 0x3d,
+ 0x20, 0x22, 0x68, 0x74, 0x74, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x0a,
+ 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d,
+ 0x66, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65,
+ 0x2e, 0x72, 0x65, 0x6c, 0x79, 0x20, 0x6f, 0x6e, 0x68, 0x6f, 0x73, 0x74, 0x65,
+ 0x64, 0x20, 0x2e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x68, 0x65, 0x20, 0x77,
+ 0x65, 0x6e, 0x74, 0x62, 0x75, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x73, 0x70, 0x72,
+ 0x65, 0x61, 0x64, 0x20, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x20, 0x61, 0x20,
+ 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x66,
+ 0x6f, 0x72, 0x75, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x6f, 0x74, 0x61, 0x67, 0x65,
+ 0x22, 0x3e, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x43, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x73, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x61, 0x73, 0x20, 0x68, 0x69,
+ 0x67, 0x68, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x65, 0x2d, 0x2d, 0x3e, 0x3c,
+ 0x21, 0x2d, 0x2d, 0x66, 0x65, 0x6d, 0x61, 0x6c, 0x65, 0x20, 0x69, 0x73, 0x20,
+ 0x73, 0x65, 0x65, 0x6e, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x73, 0x65,
+ 0x74, 0x20, 0x74, 0x68, 0x65, 0x61, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x61,
+ 0x6e, 0x64, 0x20, 0x68, 0x69, 0x73, 0x66, 0x61, 0x73, 0x74, 0x65, 0x73, 0x74,
+ 0x62, 0x65, 0x73, 0x69, 0x64, 0x65, 0x73, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e,
+ 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x22, 0x3e, 0x3c, 0x69, 0x6d,
+ 0x67, 0x20, 0x49, 0x6e, 0x66, 0x6f, 0x62, 0x6f, 0x78, 0x65, 0x76, 0x65, 0x6e,
+ 0x74, 0x73, 0x2c, 0x61, 0x20, 0x79, 0x6f, 0x75, 0x6e, 0x67, 0x61, 0x6e, 0x64,
+ 0x20, 0x61, 0x72, 0x65, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x68,
+ 0x65, 0x61, 0x70, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x61,
+ 0x6e, 0x64, 0x20, 0x68, 0x61, 0x73, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73,
+ 0x77, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x28, 0x6d, 0x6f, 0x73, 0x74, 0x6c,
+ 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x20,
+ 0x61, 0x20, 0x2d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x50, 0x72, 0x69, 0x6e,
+ 0x63, 0x65, 0x20, 0x61, 0x72, 0x65, 0x61, 0x20, 0x6f, 0x66, 0x6d, 0x6f, 0x72,
+ 0x65, 0x20, 0x6f, 0x66, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6e, 0x61,
+ 0x74, 0x75, 0x72, 0x65, 0x2c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x6c, 0x79, 0x70,
+ 0x65, 0x72, 0x69, 0x6f, 0x64, 0x2c, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x66,
+ 0x6f, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x64, 0x75, 0x63, 0x65,
+ 0x64, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x6d, 0x69, 0x73, 0x73, 0x69,
+ 0x6c, 0x65, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x41, 0x67, 0x61, 0x69,
+ 0x6e, 0x73, 0x74, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, 0x79, 0x6b, 0x26, 0x71,
+ 0x75, 0x6f, 0x74, 0x3b, 0x70, 0x78, 0x3b, 0x22, 0x3e, 0x0d, 0x0a, 0x70, 0x75,
+ 0x73, 0x68, 0x65, 0x64, 0x20, 0x61, 0x62, 0x61, 0x6e, 0x64, 0x6f, 0x6e, 0x6e,
+ 0x75, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e,
+ 0x49, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x69,
+ 0x6e, 0x6f, 0x72, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20,
+ 0x69, 0x73, 0x61, 0x6e, 0x64, 0x2c, 0x20, 0x69, 0x6e, 0x63, 0x72, 0x6f, 0x77,
+ 0x6e, 0x65, 0x64, 0x49, 0x53, 0x42, 0x4e, 0x20, 0x30, 0x2d, 0x63, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x73, 0x4f, 0x63, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x6d, 0x61,
+ 0x79, 0x20, 0x6e, 0x6f, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x6c,
+ 0x61, 0x74, 0x65, 0x20, 0x69, 0x6e, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x63, 0x65,
+ 0x65, 0x6e, 0x61, 0x63, 0x74, 0x65, 0x64, 0x77, 0x69, 0x73, 0x68, 0x20, 0x74,
+ 0x6f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x6c, 0x79, 0x63, 0x6f, 0x6f, 0x6c, 0x69,
+ 0x6e, 0x67, 0x6f, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x3d, 0x69, 0x74, 0x2e, 0x20,
+ 0x54, 0x68, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x6d,
+ 0x62, 0x65, 0x72, 0x73, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x61, 0x73,
+ 0x73, 0x75, 0x6d, 0x65, 0x73, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0a, 0x70,
+ 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x20, 0x6f, 0x6e, 0x65, 0x20,
+ 0x3d, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72,
+ 0x5f, 0x61, 0x20, 0x67, 0x6f, 0x6f, 0x64, 0x20, 0x72, 0x65, 0x6b, 0x6c, 0x61,
+ 0x6d, 0x61, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x73, 0x2c, 0x74, 0x6f, 0x20, 0x74,
+ 0x68, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x70, 0x61, 0x6e,
+ 0x65, 0x6c, 0x22, 0x3e, 0x4c, 0x6f, 0x6e, 0x64, 0x6f, 0x6e, 0x2c, 0x64, 0x65,
+ 0x66, 0x69, 0x6e, 0x65, 0x73, 0x63, 0x72, 0x75, 0x73, 0x68, 0x65, 0x64, 0x62,
+ 0x61, 0x70, 0x74, 0x69, 0x73, 0x6d, 0x63, 0x6f, 0x61, 0x73, 0x74, 0x61, 0x6c,
+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22,
+ 0x20, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x74, 0x6f, 0x6c, 0x6f, 0x73, 0x74, 0x20,
+ 0x69, 0x6e, 0x62, 0x65, 0x74, 0x74, 0x65, 0x72, 0x20, 0x69, 0x6d, 0x70, 0x6c,
+ 0x69, 0x65, 0x73, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x72, 0x79, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x73, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x65,
+ 0x72, 0x68, 0x61, 0x70, 0x73, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63,
+ 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x66, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67,
+ 0x6c, 0x61, 0x73, 0x74, 0x65, 0x64, 0x20, 0x72, 0x69, 0x73, 0x65, 0x20, 0x69,
+ 0x6e, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x76, 0x69, 0x65, 0x77, 0x20,
+ 0x6f, 0x66, 0x72, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x65, 0x65, 0x6d,
+ 0x20, 0x74, 0x6f, 0x62, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x62, 0x61, 0x63,
+ 0x6b, 0x69, 0x6e, 0x67, 0x68, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x67, 0x69,
+ 0x76, 0x65, 0x6e, 0x20, 0x61, 0x67, 0x69, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x63,
+ 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x20, 0x6f, 0x66,
+ 0x20, 0x4c, 0x61, 0x74, 0x65, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x62, 0x75,
+ 0x74, 0x48, 0x69, 0x67, 0x68, 0x77, 0x61, 0x79, 0x6f, 0x6e, 0x6c, 0x79, 0x20,
+ 0x62, 0x79, 0x73, 0x69, 0x67, 0x6e, 0x20, 0x6f, 0x66, 0x68, 0x65, 0x20, 0x64,
+ 0x6f, 0x65, 0x73, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x73, 0x62, 0x61, 0x74,
+ 0x74, 0x65, 0x72, 0x79, 0x26, 0x61, 0x6d, 0x70, 0x3b, 0x6c, 0x61, 0x73, 0x69,
+ 0x6e, 0x67, 0x6c, 0x65, 0x73, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x73, 0x69,
+ 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x74, 0x61, 0x6b, 0x65, 0x20, 0x6f, 0x6e,
+ 0x72, 0x65, 0x66, 0x75, 0x73, 0x65, 0x64, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64,
+ 0x20, 0x3d, 0x55, 0x53, 0x26, 0x61, 0x6d, 0x70, 0x53, 0x65, 0x65, 0x20, 0x74,
+ 0x68, 0x65, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x62, 0x79, 0x20, 0x74,
+ 0x68, 0x69, 0x73, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x68, 0x65, 0x61,
+ 0x64, 0x20, 0x6f, 0x66, 0x3a, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x2c, 0x6c, 0x65,
+ 0x73, 0x62, 0x69, 0x61, 0x6e, 0x73, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x61,
+ 0x6e, 0x64, 0x20, 0x61, 0x6c, 0x6c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f,
+ 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d,
+ 0x73, 0x48, 0x61, 0x72, 0x76, 0x61, 0x72, 0x64, 0x2f, 0x70, 0x69, 0x78, 0x65,
+ 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x6c,
+ 0x6f, 0x6e, 0x67, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x6a, 0x6f, 0x69,
+ 0x6e, 0x74, 0x6c, 0x79, 0x73, 0x6b, 0x79, 0x73, 0x63, 0x72, 0x61, 0x55, 0x6e,
+ 0x69, 0x63, 0x6f, 0x64, 0x65, 0x62, 0x72, 0x20, 0x2f, 0x3e, 0x0d, 0x0a, 0x41,
+ 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x61, 0x6e, 0x75, 0x63, 0x6c, 0x65, 0x75, 0x73,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x79, 0x2c, 0x70, 0x75, 0x72, 0x65, 0x6c, 0x79,
+ 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3e, 0x65, 0x61, 0x73, 0x69, 0x6c,
+ 0x79, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x61, 0x6f, 0x6e, 0x63, 0x6c,
+ 0x69, 0x63, 0x6b, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x65, 0x72, 0x68, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x65, 0x76,
+ 0x65, 0x6e, 0x74, 0x73, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x64,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x6e, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65,
+ 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6d, 0x61, 0x6e, 0x20, 0x77, 0x68,
+ 0x6f, 0x6f, 0x72, 0x67, 0x2f, 0x57, 0x65, 0x62, 0x6f, 0x6e, 0x65, 0x20, 0x61,
+ 0x6e, 0x64, 0x63, 0x61, 0x76, 0x61, 0x6c, 0x72, 0x79, 0x48, 0x65, 0x20, 0x64,
+ 0x69, 0x65, 0x64, 0x73, 0x65, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x30, 0x30, 0x2c,
+ 0x30, 0x30, 0x30, 0x20, 0x7b, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x68, 0x61,
+ 0x76, 0x65, 0x20, 0x74, 0x6f, 0x69, 0x66, 0x28, 0x77, 0x69, 0x6e, 0x64, 0x61,
+ 0x6e, 0x64, 0x20, 0x69, 0x74, 0x73, 0x73, 0x6f, 0x6c, 0x65, 0x6c, 0x79, 0x20,
+ 0x6d, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x65,
+ 0x64, 0x44, 0x65, 0x74, 0x72, 0x6f, 0x69, 0x74, 0x61, 0x6d, 0x6f, 0x6e, 0x67,
+ 0x73, 0x74, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6d,
+ 0x20, 0x69, 0x6e, 0x53, 0x65, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x3c,
+ 0x2f, 0x61, 0x3e, 0x3c, 0x4b, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x46, 0x72,
+ 0x61, 0x6e, 0x63, 0x69, 0x73, 0x2d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x68,
+ 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x61, 0x72, 0x74, 0x20, 0x61, 0x6e, 0x64,
+ 0x68, 0x69, 0x6d, 0x20, 0x61, 0x6e, 0x64, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62,
+ 0x79, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x61, 0x74, 0x20, 0x68, 0x6f,
+ 0x6d, 0x65, 0x74, 0x6f, 0x20, 0x68, 0x61, 0x76, 0x65, 0x72, 0x65, 0x6c, 0x61,
+ 0x74, 0x65, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x66, 0x61, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x61, 0x6c, 0x6f, 0x6c, 0x69,
+ 0x6e, 0x6b, 0x22, 0x3e, 0x3c, 0x77, 0x68, 0x61, 0x74, 0x20, 0x68, 0x65, 0x66,
+ 0x72, 0x65, 0x65, 0x20, 0x74, 0x6f, 0x43, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66,
+ 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x64, 0x6f, 0x6e, 0x65, 0x20, 0x64,
+ 0x61, 0x79, 0x6e, 0x65, 0x72, 0x76, 0x6f, 0x75, 0x73, 0x73, 0x71, 0x75, 0x61,
+ 0x72, 0x65, 0x20, 0x7d, 0x3b, 0x69, 0x66, 0x28, 0x67, 0x6f, 0x69, 0x6e, 0x20,
+ 0x77, 0x68, 0x61, 0x74, 0x69, 0x6d, 0x67, 0x22, 0x20, 0x61, 0x6c, 0x69, 0x73,
+ 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x74,
+ 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x6c, 0x79,
+ 0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x78, 0x75, 0x61, 0x6c,
+ 0x20, 0x2d, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x75,
+ 0x6d, 0x22, 0x44, 0x4f, 0x20, 0x4e, 0x4f, 0x54, 0x20, 0x46, 0x72, 0x61, 0x6e,
+ 0x63, 0x65, 0x2c, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x77, 0x61, 0x72,
+ 0x20, 0x61, 0x6e, 0x64, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x20, 0x74, 0x61,
+ 0x6b, 0x65, 0x20, 0x61, 0x20, 0x3e, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, 0x6d,
+ 0x61, 0x72, 0x6b, 0x65, 0x74, 0x2e, 0x68, 0x69, 0x67, 0x68, 0x77, 0x61, 0x79,
+ 0x64, 0x6f, 0x6e, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74,
+ 0x79, 0x22, 0x6c, 0x61, 0x73, 0x74, 0x22, 0x3e, 0x6f, 0x62, 0x6c, 0x69, 0x67,
+ 0x65, 0x64, 0x72, 0x69, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x22, 0x75, 0x6e, 0x64,
+ 0x65, 0x66, 0x69, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x45, 0x61,
+ 0x72, 0x6c, 0x79, 0x20, 0x70, 0x72, 0x61, 0x69, 0x73, 0x65, 0x64, 0x69, 0x6e,
+ 0x20, 0x69, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x68, 0x69, 0x73, 0x61,
+ 0x74, 0x68, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x75, 0x70, 0x69, 0x74, 0x65, 0x72,
+ 0x59, 0x61, 0x68, 0x6f, 0x6f, 0x21, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64,
+ 0x20, 0x73, 0x6f, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x72, 0x65, 0x61, 0x6c, 0x6c,
+ 0x79, 0x20, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 0x20, 0x77, 0x6f,
+ 0x6d, 0x61, 0x6e, 0x3f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x64, 0x69, 0x72,
+ 0x65, 0x63, 0x74, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x20, 0x62, 0x69,
+ 0x63, 0x79, 0x63, 0x6c, 0x65, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x22, 0x64,
+ 0x61, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6e, 0x67,
+ 0x52, 0x61, 0x74, 0x68, 0x65, 0x72, 0x2c, 0x68, 0x69, 0x67, 0x68, 0x65, 0x72,
+ 0x20, 0x4f, 0x66, 0x66, 0x69, 0x63, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e,
+ 0x6f, 0x77, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x2c, 0x20, 0x77, 0x68, 0x65, 0x6e,
+ 0x20, 0x61, 0x20, 0x70, 0x61, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x6f, 0x6e, 0x20,
+ 0x74, 0x68, 0x69, 0x73, 0x2d, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x3e, 0x3b, 0x62,
+ 0x6f, 0x72, 0x64, 0x65, 0x72, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x61,
+ 0x6e, 0x6e, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4e, 0x65, 0x77,
+ 0x70, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0x20,
+ 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x20, 0x74, 0x6f, 0x61, 0x20, 0x62, 0x72, 0x69,
+ 0x65, 0x66, 0x28, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x73, 0x2e, 0x3b, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x65, 0x6e, 0x7a,
+ 0x79, 0x6d, 0x65, 0x73, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x69, 0x6e,
+ 0x20, 0x6c, 0x61, 0x74, 0x65, 0x7b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x74,
+ 0x68, 0x65, 0x72, 0x61, 0x70, 0x79, 0x61, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x62, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x6b, 0x73, 0x22, 0x3e,
+ 0x0a, 0x28, 0x29, 0x3b, 0x22, 0x20, 0x72, 0x65, 0x61, 0x20, 0x70, 0x6c, 0x61,
+ 0x63, 0x65, 0x5c, 0x75, 0x30, 0x30, 0x33, 0x43, 0x61, 0x61, 0x62, 0x6f, 0x75,
+ 0x74, 0x20, 0x61, 0x74, 0x72, 0x3e, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x20, 0x67, 0x69, 0x76, 0x65, 0x73, 0x20, 0x61, 0x3c, 0x53,
+ 0x43, 0x52, 0x49, 0x50, 0x54, 0x52, 0x61, 0x69, 0x6c, 0x77, 0x61, 0x79, 0x74,
+ 0x68, 0x65, 0x6d, 0x65, 0x73, 0x2f, 0x74, 0x6f, 0x6f, 0x6c, 0x62, 0x6f, 0x78,
+ 0x42, 0x79, 0x49, 0x64, 0x28, 0x22, 0x78, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x73,
+ 0x2c, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x69, 0x6e, 0x20, 0x73, 0x6f,
+ 0x6d, 0x65, 0x20, 0x69, 0x66, 0x20, 0x28, 0x77, 0x69, 0x63, 0x6f, 0x6d, 0x69,
+ 0x6e, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x20, 0x55, 0x6e,
+ 0x64, 0x65, 0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 0x68, 0x61, 0x73, 0x68, 0x61,
+ 0x6e, 0x64, 0x65, 0x64, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x62, 0x79, 0x74,
+ 0x68, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x66, 0x65, 0x61, 0x72, 0x20, 0x6f, 0x66,
+ 0x64, 0x65, 0x6e, 0x6f, 0x74, 0x65, 0x64, 0x2f, 0x69, 0x66, 0x72, 0x61, 0x6d,
+ 0x65, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x74, 0x61,
+ 0x67, 0x65, 0x69, 0x6e, 0x20, 0x65, 0x61, 0x63, 0x68, 0x61, 0x26, 0x71, 0x75,
+ 0x6f, 0x74, 0x3b, 0x62, 0x61, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x49, 0x6e, 0x20,
+ 0x6d, 0x61, 0x6e, 0x79, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x67, 0x6f, 0x72, 0x65,
+ 0x67, 0x69, 0x6d, 0x65, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3c,
+ 0x2f, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x56, 0x61,
+ 0x3b, 0x26, 0x67, 0x74, 0x3b, 0x3c, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74,
+ 0x73, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x6d, 0x6f, 0x73, 0x74, 0x6c,
+ 0x79, 0x20, 0x26, 0x61, 0x6d, 0x70, 0x3b, 0x72, 0x65, 0x20, 0x73, 0x69, 0x7a,
+ 0x65, 0x3d, 0x22, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x68, 0x61, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x70, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x48, 0x6f,
+ 0x73, 0x74, 0x20, 0x3d, 0x20, 0x57, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x66,
+ 0x65, 0x72, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x72, 0x69, 0x6f, 0x75, 0x73,
+ 0x3d, 0x5b, 0x5d, 0x3b, 0x28, 0x66, 0x75, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61,
+ 0x73, 0x2f, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x61, 0x63, 0x74, 0x73, 0x20,
+ 0x61, 0x73, 0x49, 0x6e, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x3e, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x3c, 0x21, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x73, 0x20, 0x3c, 0x62,
+ 0x72, 0x20, 0x2f, 0x3e, 0x42, 0x65, 0x69, 0x6a, 0x69, 0x6e, 0x67, 0x63, 0x61,
+ 0x74, 0x61, 0x6c, 0xc3, 0xa0, 0x64, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x65,
+ 0x75, 0x72, 0x6f, 0x70, 0x65, 0x75, 0x65, 0x75, 0x73, 0x6b, 0x61, 0x72, 0x61,
+ 0x67, 0x61, 0x65, 0x69, 0x6c, 0x67, 0x65, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b,
+ 0x61, 0x65, 0x73, 0x70, 0x61, 0xc3, 0xb1, 0x61, 0x6d, 0x65, 0x6e, 0x73, 0x61,
+ 0x6a, 0x65, 0x75, 0x73, 0x75, 0x61, 0x72, 0x69, 0x6f, 0x74, 0x72, 0x61, 0x62,
+ 0x61, 0x6a, 0x6f, 0x6d, 0xc3, 0xa9, 0x78, 0x69, 0x63, 0x6f, 0x70, 0xc3, 0xa1,
+ 0x67, 0x69, 0x6e, 0x61, 0x73, 0x69, 0x65, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x69,
+ 0x73, 0x74, 0x65, 0x6d, 0x61, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x64,
+ 0x75, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x61, 0xc3, 0xb1, 0x61, 0x64, 0x69, 0x72,
+ 0x65, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x61, 0x6d, 0x6f, 0x6d, 0x65, 0x6e, 0x74,
+ 0x6f, 0x6e, 0x75, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x70, 0x72, 0x69, 0x6d, 0x65,
+ 0x72, 0x61, 0x74, 0x72, 0x61, 0x76, 0xc3, 0xa9, 0x73, 0x67, 0x72, 0x61, 0x63,
+ 0x69, 0x61, 0x73, 0x6e, 0x75, 0x65, 0x73, 0x74, 0x72, 0x61, 0x70, 0x72, 0x6f,
+ 0x63, 0x65, 0x73, 0x6f, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x63, 0x61,
+ 0x6c, 0x69, 0x64, 0x61, 0x64, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6e,
+ 0xc3, 0xba, 0x6d, 0x65, 0x72, 0x6f, 0x61, 0x63, 0x75, 0x65, 0x72, 0x64, 0x6f,
+ 0x6d, 0xc3, 0xba, 0x73, 0x69, 0x63, 0x61, 0x6d, 0x69, 0x65, 0x6d, 0x62, 0x72,
+ 0x6f, 0x6f, 0x66, 0x65, 0x72, 0x74, 0x61, 0x73, 0x61, 0x6c, 0x67, 0x75, 0x6e,
+ 0x6f, 0x73, 0x70, 0x61, 0xc3, 0xad, 0x73, 0x65, 0x73, 0x65, 0x6a, 0x65, 0x6d,
+ 0x70, 0x6c, 0x6f, 0x64, 0x65, 0x72, 0x65, 0x63, 0x68, 0x6f, 0x61, 0x64, 0x65,
+ 0x6d, 0xc3, 0xa1, 0x73, 0x70, 0x72, 0x69, 0x76, 0x61, 0x64, 0x6f, 0x61, 0x67,
+ 0x72, 0x65, 0x67, 0x61, 0x72, 0x65, 0x6e, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x70,
+ 0x6f, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x68, 0x6f, 0x74, 0x65, 0x6c, 0x65, 0x73,
+ 0x73, 0x65, 0x76, 0x69, 0x6c, 0x6c, 0x61, 0x70, 0x72, 0x69, 0x6d, 0x65, 0x72,
+ 0x6f, 0xc3, 0xba, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x65, 0x76, 0x65, 0x6e, 0x74,
+ 0x6f, 0x73, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x6f, 0x63, 0x75, 0x6c, 0x74,
+ 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6a, 0x65, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74,
+ 0x72, 0x61, 0x64, 0x61, 0x61, 0x6e, 0x75, 0x6e, 0x63, 0x69, 0x6f, 0x65, 0x6d,
+ 0x62, 0x61, 0x72, 0x67, 0x6f, 0x6d, 0x65, 0x72, 0x63, 0x61, 0x64, 0x6f, 0x67,
+ 0x72, 0x61, 0x6e, 0x64, 0x65, 0x73, 0x65, 0x73, 0x74, 0x75, 0x64, 0x69, 0x6f,
+ 0x6d, 0x65, 0x6a, 0x6f, 0x72, 0x65, 0x73, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72,
+ 0x6f, 0x64, 0x69, 0x73, 0x65, 0xc3, 0xb1, 0x6f, 0x74, 0x75, 0x72, 0x69, 0x73,
+ 0x6d, 0x6f, 0x63, 0xc3, 0xb3, 0x64, 0x69, 0x67, 0x6f, 0x70, 0x6f, 0x72, 0x74,
+ 0x61, 0x64, 0x61, 0x65, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6f, 0x66, 0x61, 0x6d,
+ 0x69, 0x6c, 0x69, 0x61, 0x61, 0x6e, 0x74, 0x6f, 0x6e, 0x69, 0x6f, 0x70, 0x65,
+ 0x72, 0x6d, 0x69, 0x74, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x61, 0x72, 0x61,
+ 0x6c, 0x67, 0x75, 0x6e, 0x61, 0x73, 0x70, 0x72, 0x65, 0x63, 0x69, 0x6f, 0x73,
+ 0x61, 0x6c, 0x67, 0x75, 0x69, 0x65, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x64,
+ 0x6f, 0x76, 0x69, 0x73, 0x69, 0x74, 0x61, 0x73, 0x74, 0xc3, 0xad, 0x74, 0x75,
+ 0x6c, 0x6f, 0x63, 0x6f, 0x6e, 0x6f, 0x63, 0x65, 0x72, 0x73, 0x65, 0x67, 0x75,
+ 0x6e, 0x64, 0x6f, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6a, 0x6f, 0x66, 0x72, 0x61,
+ 0x6e, 0x63, 0x69, 0x61, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x6f, 0x73, 0x73, 0x65,
+ 0x67, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x65, 0x6e, 0x65, 0x6d, 0x6f, 0x73, 0x65,
+ 0x66, 0x65, 0x63, 0x74, 0x6f, 0x73, 0x6d, 0xc3, 0xa1, 0x6c, 0x61, 0x67, 0x61,
+ 0x73, 0x65, 0x73, 0x69, 0xc3, 0xb3, 0x6e, 0x72, 0x65, 0x76, 0x69, 0x73, 0x74,
+ 0x61, 0x67, 0x72, 0x61, 0x6e, 0x61, 0x64, 0x61, 0x63, 0x6f, 0x6d, 0x70, 0x72,
+ 0x61, 0x72, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x6f, 0x67, 0x61, 0x72, 0x63,
+ 0xc3, 0xad, 0x61, 0x61, 0x63, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x65, 0x63, 0x75,
+ 0x61, 0x64, 0x6f, 0x72, 0x71, 0x75, 0x69, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x6e,
+ 0x63, 0x6c, 0x75, 0x73, 0x6f, 0x64, 0x65, 0x62, 0x65, 0x72, 0xc3, 0xa1, 0x6d,
+ 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x68, 0x6f, 0x6d, 0x62, 0x72, 0x65, 0x73,
+ 0x6d, 0x75, 0x65, 0x73, 0x74, 0x72, 0x61, 0x70, 0x6f, 0x64, 0x72, 0xc3, 0xad,
+ 0x61, 0x6d, 0x61, 0xc3, 0xb1, 0x61, 0x6e, 0x61, 0xc3, 0xba, 0x6c, 0x74, 0x69,
+ 0x6d, 0x61, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x6f, 0x73, 0x6f, 0x66, 0x69, 0x63,
+ 0x69, 0x61, 0x6c, 0x74, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x6e, 0x69, 0x6e,
+ 0x67, 0xc3, 0xba, 0x6e, 0x73, 0x61, 0x6c, 0x75, 0x64, 0x6f, 0x73, 0x70, 0x6f,
+ 0x64, 0x65, 0x6d, 0x6f, 0x73, 0x6d, 0x65, 0x6a, 0x6f, 0x72, 0x61, 0x72, 0x70,
+ 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x75, 0x73, 0x69, 0x6e, 0x65,
+ 0x73, 0x73, 0x68, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, 0x65, 0x63,
+ 0x75, 0x72, 0x69, 0x74, 0x79, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65,
+ 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x63, 0x61, 0x6d, 0x70, 0x61,
+ 0x69, 0x67, 0x6e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x63, 0x61,
+ 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61,
+ 0x6c, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x64, 0x72, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65,
+ 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69,
+ 0x74, 0x65, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x6d, 0x69, 0x6c,
+ 0x69, 0x74, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79,
+ 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x6d, 0x61, 0x74, 0x65, 0x72,
+ 0x69, 0x61, 0x6c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x7a, 0x2d,
+ 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74,
+ 0x73, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x70,
+ 0x6c, 0x65, 0x74, 0x65, 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c,
+ 0x65, 0x73, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x6d, 0x6f, 0x76,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e,
+ 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x70, 0x6f, 0x6c, 0x69, 0x74,
+ 0x69, 0x63, 0x73, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x72, 0x65,
+ 0x6c, 0x69, 0x67, 0x69, 0x6f, 0x6e, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61,
+ 0x6c, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x65, 0x72, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x64,
+ 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
+ 0x6f, 0x6c, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x65, 0x74,
+ 0x74, 0x69, 0x6e, 0x67, 0x73, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79,
+ 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x6c, 0x65, 0x61, 0x72, 0x6e,
+ 0x69, 0x6e, 0x67, 0x61, 0x6e, 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x61, 0x62,
+ 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73,
+ 0x73, 0x6f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x6d, 0x61, 0x67, 0x61,
+ 0x7a, 0x69, 0x6e, 0x65, 0x65, 0x63, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x63, 0x74,
+ 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x70, 0x72, 0x65, 0x73, 0x73, 0x75,
+ 0x72, 0x65, 0x76, 0x61, 0x72, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x3c, 0x73, 0x74,
+ 0x72, 0x6f, 0x6e, 0x67, 0x3e, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
+ 0x73, 0x68, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x67, 0x65, 0x74,
+ 0x68, 0x65, 0x72, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x62, 0x65,
+ 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
+ 0x64, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x66, 0x6f, 0x6f, 0x74,
+ 0x62, 0x61, 0x6c, 0x6c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4c,
+ 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x72, 0x65, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x74, 0x72, 0x61,
+ 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64,
+ 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x73, 0x74, 0x75, 0x64, 0x65,
+ 0x6e, 0x74, 0x73, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x66, 0x69,
+ 0x67, 0x68, 0x74, 0x69, 0x6e, 0x67, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x72,
+ 0x6e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x66, 0x65, 0x73, 0x74,
+ 0x69, 0x76, 0x61, 0x6c, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x6c,
+ 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
+ 0x65, 0x74, 0x64, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x70, 0x72, 0x61,
+ 0x63, 0x74, 0x69, 0x63, 0x65, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65,
+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x6d, 0x61, 0x72, 0x72, 0x69,
+ 0x61, 0x67, 0x65, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x70, 0x72,
+ 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76,
+ 0x65, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x61, 0x6e, 0x61, 0x6c,
+ 0x79, 0x73, 0x69, 0x73, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x62,
+ 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x22, 0x3e, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61,
+ 0x73, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x72, 0x65, 0x67,
+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x76, 0x65,
+ 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x6f, 0x6f, 0x6b, 0x6d,
+ 0x61, 0x72, 0x6b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x63, 0x68,
+ 0x65, 0x6d, 0x69, 0x63, 0x61, 0x6c, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f,
+ 0x6e, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x73, 0x65, 0x70, 0x61,
+ 0x72, 0x61, 0x74, 0x65, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x63,
+ 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61,
+ 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x64, 0x65, 0x6c,
+ 0x69, 0x76, 0x65, 0x72, 0x79, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x6f, 0x62, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x3d, 0x20, 0x66, 0x61, 0x6c,
+ 0x73, 0x65, 0x3b, 0x66, 0x6f, 0x72, 0x28, 0x76, 0x61, 0x72, 0x20, 0x61, 0x63,
+ 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74,
+ 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x69, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x74, 0x79, 0x61, 0x69, 0x72, 0x63, 0x72, 0x61, 0x66, 0x74, 0x65,
+ 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73,
+ 0x65, 0x64, 0x64, 0x6f, 0x6d, 0x65, 0x73, 0x74, 0x69, 0x63, 0x69, 0x6e, 0x63,
+ 0x6c, 0x75, 0x64, 0x65, 0x73, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64,
+ 0x68, 0x6f, 0x73, 0x70, 0x69, 0x74, 0x61, 0x6c, 0x76, 0x65, 0x72, 0x74, 0x69,
+ 0x63, 0x61, 0x6c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x61, 0x70,
+ 0x70, 0x72, 0x6f, 0x61, 0x63, 0x68, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72,
+ 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x22, 0x3e, 0x3c, 0x61, 0x64, 0x61, 0x75, 0x67,
+ 0x68, 0x74, 0x65, 0x72, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x22, 0x20, 0x63,
+ 0x75, 0x6c, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69,
+ 0x65, 0x73, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73,
+ 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x66, 0x75, 0x6c,
+ 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x66, 0x69, 0x6e, 0x69, 0x73,
+ 0x68, 0x65, 0x64, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x63, 0x72,
+ 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x63, 0x67, 0x69, 0x2d, 0x62, 0x69, 0x6e,
+ 0x2f, 0x70, 0x75, 0x72, 0x70, 0x6f, 0x73, 0x65, 0x73, 0x72, 0x65, 0x71, 0x75,
+ 0x69, 0x72, 0x65, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x62,
+ 0x65, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
+ 0x65, 0x73, 0x61, 0x63, 0x61, 0x64, 0x65, 0x6d, 0x69, 0x63, 0x65, 0x78, 0x65,
+ 0x72, 0x63, 0x69, 0x73, 0x65, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79,
+ 0x6d, 0x65, 0x64, 0x69, 0x63, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x74, 0x61, 0x63, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x4d, 0x61,
+ 0x67, 0x61, 0x7a, 0x69, 0x6e, 0x65, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
+ 0x74, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x6f, 0x74, 0x74,
+ 0x6f, 0x6d, 0x22, 0x3e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x3a,
+ 0x20, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64,
+ 0x65, 0x64, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x53, 0x6f, 0x66,
+ 0x74, 0x77, 0x61, 0x72, 0x65, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72,
+ 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x6e,
+ 0x67, 0x74, 0x68, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x73, 0x6c,
+ 0x69, 0x67, 0x68, 0x74, 0x6c, 0x79, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x69, 0x6e,
+ 0x67, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61, 0x63, 0x75, 0x72, 0x72,
+ 0x65, 0x6e, 0x63, 0x79, 0x65, 0x76, 0x65, 0x72, 0x79, 0x6f, 0x6e, 0x65, 0x73,
+ 0x74, 0x72, 0x61, 0x69, 0x67, 0x68, 0x74, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66,
+ 0x65, 0x72, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x70, 0x72, 0x6f,
+ 0x64, 0x75, 0x63, 0x65, 0x64, 0x68, 0x65, 0x72, 0x69, 0x74, 0x61, 0x67, 0x65,
+ 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x61, 0x62, 0x73, 0x6f, 0x6c,
+ 0x75, 0x74, 0x65, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x72, 0x65,
+ 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x74, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22,
+ 0x20, 0x76, 0x69, 0x6f, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x61, 0x6e, 0x79, 0x77,
+ 0x68, 0x65, 0x72, 0x65, 0x62, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x73, 0x6c,
+ 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x64, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74,
+ 0x6c, 0x79, 0x61, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x66, 0x6f, 0x6c,
+ 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65,
+ 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x69, 0x6e, 0x63, 0x6c, 0x75,
+ 0x64, 0x65, 0x64, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x69, 0x6e,
+ 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x24, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29,
+ 0x2e, 0x72, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x3e, 0x3c, 0x74, 0x72,
+ 0x3e, 0x3c, 0x74, 0x64, 0x63, 0x6f, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x72,
+ 0x65, 0x63, 0x6f, 0x72, 0x64, 0x65, 0x64, 0x75, 0x6c, 0x74, 0x69, 0x6d, 0x61,
+ 0x74, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x3c, 0x75, 0x6c,
+ 0x20, 0x69, 0x64, 0x3d, 0x22, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
+ 0x48, 0x6f, 0x6d, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x77, 0x65, 0x62, 0x73, 0x69,
+ 0x74, 0x65, 0x73, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x61, 0x6c,
+ 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x72, 0x65, 0x6c,
+ 0x79, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x6d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x73, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x61,
+ 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x3e, 0x73, 0x6f, 0x6d, 0x65, 0x77, 0x68,
+ 0x61, 0x74, 0x76, 0x69, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x57, 0x65, 0x73,
+ 0x74, 0x65, 0x72, 0x6e, 0x20, 0x20, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3d, 0x22,
+ 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6e, 0x74, 0x72,
+ 0x61, 0x63, 0x74, 0x76, 0x69, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x73, 0x44, 0x6f,
+ 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74,
+ 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0x0a, 0x6d, 0x65, 0x61, 0x73,
+ 0x75, 0x72, 0x65, 0x73, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x76,
+ 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76,
+ 0x65, 0x64, 0x76, 0x69, 0x72, 0x67, 0x69, 0x6e, 0x69, 0x61, 0x6e, 0x6f, 0x72,
+ 0x6d, 0x61, 0x6c, 0x6c, 0x79, 0x68, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x65, 0x64,
+ 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x73, 0x74, 0x61, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65,
+ 0x64, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x61, 0x63, 0x63, 0x75,
+ 0x72, 0x61, 0x74, 0x65, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x73,
+ 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69,
+ 0x61, 0x6c, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x63, 0x72, 0x69,
+ 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x79,
+ 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x6f,
+ 0x6e, 0x61, 0x6c, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x61,
+ 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x65, 0x76, 0x65,
+ 0x64, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x20, 0x2f, 0x3e, 0x6d, 0x61, 0x63, 0x68,
+ 0x69, 0x6e, 0x65, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x0a, 0x20, 0x20, 0x6b,
+ 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64,
+ 0x6c, 0x79, 0x62, 0x72, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x6d,
+ 0x62, 0x69, 0x6e, 0x65, 0x64, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c,
+ 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x65, 0x78, 0x70, 0x65, 0x63,
+ 0x74, 0x65, 0x64, 0x61, 0x64, 0x65, 0x71, 0x75, 0x61, 0x74, 0x65, 0x70, 0x61,
+ 0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x22,
+ 0x20, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x62, 0x6c, 0x65, 0x3c, 0x2f, 0x6c, 0x61,
+ 0x62, 0x65, 0x6c, 0x3e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x62,
+ 0x72, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61,
+ 0x73, 0x65, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x70, 0x6c, 0x75,
+ 0x67, 0x69, 0x6e, 0x73, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20,
+ 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3e, 0x22, 0x20, 0x6e, 0x61, 0x6d,
+ 0x65, 0x3d, 0x22, 0x20, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x67, 0x72,
+ 0x61, 0x64, 0x75, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e,
+ 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6c, 0x61,
+ 0x79, 0x73, 0x69, 0x61, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x6d,
+ 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x3b, 0x68, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x62, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x6f, 0x20,
+ 0x63, 0x61, 0x74, 0x68, 0x6f, 0x6c, 0x69, 0x63, 0x70, 0x61, 0x74, 0x74, 0x65,
+ 0x72, 0x6e, 0x73, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x67, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x73, 0x74, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65,
+ 0x73, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x3c, 0x2f, 0x75, 0x6c,
+ 0x3e, 0x0a, 0x09, 0x09, 0x3c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x63,
+ 0x69, 0x74, 0x69, 0x7a, 0x65, 0x6e, 0x73, 0x63, 0x6c, 0x6f, 0x74, 0x68, 0x69,
+ 0x6e, 0x67, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x3c, 0x6c, 0x69,
+ 0x20, 0x69, 0x64, 0x3d, 0x22, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63,
+ 0x63, 0x61, 0x72, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x73, 0x65, 0x6e, 0x74, 0x65,
+ 0x6e, 0x63, 0x65, 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0x63, 0x6f,
+ 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x74, 0x68, 0x69, 0x6e, 0x6b, 0x69, 0x6e,
+ 0x67, 0x63, 0x61, 0x74, 0x63, 0x68, 0x28, 0x65, 0x29, 0x73, 0x6f, 0x75, 0x74,
+ 0x68, 0x65, 0x72, 0x6e, 0x4d, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6c, 0x20, 0x6d,
+ 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x63, 0x61, 0x72, 0x6f, 0x75, 0x73,
+ 0x65, 0x6c, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x69, 0x6e, 0x74,
+ 0x65, 0x72, 0x69, 0x6f, 0x72, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22,
+ 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x63, 0x74, 0x6f, 0x62,
+ 0x65, 0x72, 0x20, 0x29, 0x7b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x69, 0x6d,
+ 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x2d, 0x2d, 0x26, 0x67, 0x74, 0x3b, 0x0a,
+ 0x0a, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x63, 0x68, 0x61, 0x69,
+ 0x72, 0x6d, 0x61, 0x6e, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x2f, 0x3e, 0x73,
+ 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x69, 0x63, 0x68, 0x61, 0x72,
+ 0x64, 0x20, 0x77, 0x68, 0x61, 0x74, 0x65, 0x76, 0x65, 0x72, 0x70, 0x72, 0x6f,
+ 0x62, 0x61, 0x62, 0x6c, 0x79, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
+ 0x62, 0x61, 0x73, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x6a, 0x75, 0x64, 0x67, 0x6d,
+ 0x65, 0x6e, 0x74, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x2e, 0x63,
+ 0x73, 0x73, 0x22, 0x20, 0x2f, 0x3e, 0x20, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74,
+ 0x65, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x64, 0x65, 0x66, 0x61,
+ 0x75, 0x6c, 0x74, 0x22, 0x2f, 0x3e, 0x3c, 0x2f, 0x61, 0x3e, 0x0d, 0x0a, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x72, 0x69, 0x63, 0x73, 0x63, 0x6f, 0x74, 0x6c, 0x61,
+ 0x6e, 0x64, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x71, 0x75, 0x61,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x20, 0x49, 0x53, 0x42, 0x4e, 0x20, 0x30,
+ 0x64, 0x69, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2d, 0x22, 0x20,
+ 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72,
+ 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x73, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x6d,
+ 0x69, 0x6e, 0x69, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x74, 0x61,
+ 0x6c, 0x69, 0x61, 0x6e, 0x6f, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61,
+ 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x6c, 0x79, 0x3a, 0x20, 0x27, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x27, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x27, 0x63, 0x6f,
+ 0x76, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x69, 0x6e,
+ 0x67, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x65, 0x64, 0x42, 0x72, 0x69, 0x74,
+ 0x69, 0x73, 0x68, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x46,
+ 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x6f,
+ 0x75, 0x73, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x73, 0x63, 0x6f, 0x6e,
+ 0x63, 0x65, 0x72, 0x6e, 0x73, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e,
+ 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x69, 0x76, 0x20, 0x69,
+ 0x64, 0x3d, 0x22, 0x57, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6d, 0x20, 0x70, 0x72,
+ 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
+ 0x74, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x73, 0x65, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x66,
+ 0x6c, 0x65, 0x78, 0x69, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f,
+ 0x72, 0x79, 0x6c, 0x61, 0x77, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x3c, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x3e, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x3d, 0x22,
+ 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x6d, 0x61, 0x78, 0x69,
+ 0x6d, 0x75, 0x6d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x2f,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+ 0x73, 0x68, 0x61, 0x6d, 0x69, 0x6c, 0x74, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72,
+ 0x65, 0x6e, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x63,
+ 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x74, 0x68, 0x65, 0x6d, 0x65,
+ 0x73, 0x2f, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x6f, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x61, 0x6c,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x22, 0x69, 0x6e, 0x74, 0x65, 0x72,
+ 0x76, 0x61, 0x6c, 0x77, 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x65, 0x6e,
+ 0x74, 0x69, 0x74, 0x6c, 0x65, 0x64, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x69, 0x65,
+ 0x73, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x22, 0x20, 0x6d, 0x65, 0x61, 0x73,
+ 0x75, 0x72, 0x65, 0x64, 0x74, 0x68, 0x6f, 0x75, 0x73, 0x61, 0x6e, 0x64, 0x73,
+ 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x26, 0x68, 0x65, 0x6c, 0x6c, 0x69,
+ 0x70, 0x3b, 0x6e, 0x65, 0x77, 0x20, 0x44, 0x61, 0x74, 0x65, 0x22, 0x20, 0x73,
+ 0x69, 0x7a, 0x65, 0x3d, 0x22, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65,
+ 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x22, 0x20, 0x22, 0x20, 0x2f, 0x3e, 0x3c,
+ 0x2f, 0x61, 0x3e, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x22, 0x3e, 0x73, 0x65,
+ 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61,
+ 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x6f, 0x70, 0x69, 0x6e,
+ 0x69, 0x6f, 0x6e, 0x73, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x6f, 0x69, 0x73, 0x6c,
+ 0x69, 0x6e, 0x6b, 0x73, 0x22, 0x3e, 0x0a, 0x09, 0x3c, 0x74, 0x69, 0x74, 0x6c,
+ 0x65, 0x3e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x73, 0x61, 0x74,
+ 0x75, 0x72, 0x64, 0x61, 0x79, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c,
+ 0x69, 0x74, 0x65, 0x6d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+ 0x65, 0x65, 0x72, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x64, 0x65,
+ 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61,
+ 0x6c, 0x3d, 0x22, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x22, 0x45, 0x73, 0x70, 0x61,
+ 0xc3, 0xb1, 0x6f, 0x6c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x73,
+ 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x65, 0x72, 0x26, 0x71, 0x75, 0x6f,
+ 0x74, 0x3b, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x79, 0x6d,
+ 0x70, 0x74, 0x6f, 0x6d, 0x73, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x65, 0x64,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x72, 0x69, 0x67, 0x68, 0x74,
+ 0x22, 0x3e, 0x3c, 0x70, 0x6c, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
+ 0x2e, 0x6c, 0x65, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x20, 0x62, 0x6f, 0x72,
+ 0x64, 0x65, 0x72, 0x3d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x63,
+ 0x65, 0x6e, 0x74, 0x65, 0x72, 0x22, 0x3e, 0x2e, 0x0a, 0x0a, 0x53, 0x6f, 0x6d,
+ 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x73, 0x75, 0x69,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x62, 0x75, 0x6c, 0x67, 0x61, 0x72, 0x69, 0x61,
+ 0x2e, 0x73, 0x68, 0x6f, 0x77, 0x28, 0x29, 0x3b, 0x64, 0x65, 0x73, 0x69, 0x67,
+ 0x6e, 0x65, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x63, 0x6f,
+ 0x6e, 0x63, 0x65, 0x70, 0x74, 0x73, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
+ 0x73, 0x77, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6d, 0x73, 0x4f, 0x72, 0x69, 0x67,
+ 0x69, 0x6e, 0x61, 0x6c, 0x22, 0x3e, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x73,
+ 0x65, 0x61, 0x72, 0x63, 0x68, 0x22, 0x3e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74,
+ 0x6f, 0x72, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x61, 0x20, 0x26,
+ 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67,
+ 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x72, 0x65, 0x76, 0x69, 0x73,
+ 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x0a, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x79, 0x6f,
+ 0x75, 0x72, 0x73, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74,
+ 0x20, 0x6d, 0x69, 0x63, 0x68, 0x69, 0x67, 0x61, 0x6e, 0x45, 0x6e, 0x67, 0x6c,
+ 0x69, 0x73, 0x68, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x62, 0x69, 0x61, 0x70,
+ 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x69,
+ 0x6e, 0x67, 0x64, 0x72, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x66, 0x61, 0x63,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64,
+ 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x69, 0x63,
+ 0x65, 0x72, 0x73, 0x52, 0x75, 0x73, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x67, 0x65,
+ 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x38, 0x38, 0x35, 0x39, 0x2d, 0x31,
+ 0x22, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x66, 0x61, 0x6d, 0x69,
+ 0x6c, 0x69, 0x61, 0x72, 0x20, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x6d,
+ 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x30, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65,
+ 0x6e, 0x74, 0x76, 0x69, 0x65, 0x77, 0x70, 0x6f, 0x72, 0x74, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x63, 0x74, 0x73, 0x2d, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x3e,
+ 0x70, 0x6f, 0x72, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x6c, 0x65, 0x6e, 0x67,
+ 0x74, 0x68, 0x20, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x69, 0x6e,
+ 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x73, 0x61, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69,
+ 0x63, 0x6f, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x64, 0x65, 0x66, 0x61,
+ 0x75, 0x6c, 0x74, 0x2e, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x70,
+ 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x67, 0x6c, 0x6f, 0x73, 0x73, 0x61,
+ 0x72, 0x79, 0x0a, 0x0a, 0x41, 0x66, 0x74, 0x65, 0x72, 0x20, 0x67, 0x75, 0x69,
+ 0x64, 0x61, 0x6e, 0x63, 0x65, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64,
+ 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x6d, 0x69, 0x64, 0x64, 0x6c,
+ 0x65, 0x22, 0x3e, 0x63, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69,
+ 0x73, 0x70, 0x6c, 0x61, 0x79, 0x73, 0x73, 0x63, 0x6f, 0x74, 0x74, 0x69, 0x73,
+ 0x68, 0x6a, 0x6f, 0x6e, 0x61, 0x74, 0x68, 0x61, 0x6e, 0x6d, 0x61, 0x6a, 0x6f,
+ 0x72, 0x69, 0x74, 0x79, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2e, 0x63,
+ 0x6c, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x74, 0x68, 0x61, 0x69, 0x6c, 0x61,
+ 0x6e, 0x64, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x73, 0x3c, 0x68, 0x65,
+ 0x61, 0x64, 0x3e, 0x0a, 0x09, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64,
+ 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x65, 0x72, 0x3b, 0x74, 0x6f, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3c, 0x2f,
+ 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x3e, 0x6f, 0x6b, 0x6c, 0x61, 0x68, 0x6f, 0x6d,
+ 0x61, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6e, 0x76, 0x65,
+ 0x73, 0x74, 0x6f, 0x72, 0x30, 0x22, 0x20, 0x61, 0x6c, 0x74, 0x3d, 0x22, 0x68,
+ 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x64, 0x20, 0x28, 0x77,
+ 0x68, 0x69, 0x63, 0x68, 0x20, 0x2e, 0x20, 0x41, 0x66, 0x74, 0x65, 0x72, 0x20,
+ 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x74,
+ 0x69, 0x6e, 0x67, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x70, 0x72,
+ 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x22,
+ 0x20, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x22, 0x71, 0x75, 0x69, 0x63,
+ 0x6b, 0x6c, 0x79, 0x20, 0x6d, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x65,
+ 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x3b, 0x72, 0x65, 0x74, 0x75, 0x72,
+ 0x6e, 0x20, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x20, 0x68, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x3d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c,
+ 0x2c, 0x20, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x20, 0x63, 0x68, 0x65, 0x63,
+ 0x6b, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x6e, 0x2e, 0x6a, 0x73, 0x22, 0x6d, 0x61,
+ 0x67, 0x6e, 0x65, 0x74, 0x69, 0x63, 0x3e, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f,
+ 0x68, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x2e, 0x20, 0x57, 0x68,
+ 0x69, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x64,
+ 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x26, 0x65, 0x61, 0x63, 0x75, 0x74,
+ 0x65, 0x3b, 0x68, 0x61, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x76, 0x61,
+ 0x6c, 0x75, 0x61, 0x74, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67,
+ 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x70, 0x61, 0x74, 0x69, 0x65,
+ 0x6e, 0x74, 0x73, 0x20, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x63, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x61, 0x64, 0x6f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x22, 0x63, 0x61, 0x6d, 0x70, 0x62, 0x65, 0x6c, 0x6c, 0x3c, 0x21, 0x2d, 0x2d,
+ 0x20, 0x65, 0x6e, 0x64, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c, 0x3c,
+ 0x62, 0x72, 0x20, 0x2f, 0x3e, 0x0d, 0x0a, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x70,
+ 0x73, 0x7c, 0x73, 0x63, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2c, 0x26, 0x71,
+ 0x75, 0x6f, 0x74, 0x3b, 0x20, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x20,
+ 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x61, 0x73, 0x73, 0x69, 0x67,
+ 0x6e, 0x65, 0x64, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20, 0x3c, 0x62,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6c, 0x65, 0x26, 0x71, 0x75, 0x6f, 0x74,
+ 0x3b, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x20, 0x43, 0x6f, 0x6d,
+ 0x70, 0x61, 0x6e, 0x79, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x3c,
+ 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x65, 0x76,
+ 0x65, 0x73, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x73, 0x6d, 0x61, 0x72,
+ 0x73, 0x68, 0x61, 0x6c, 0x6c, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20,
+ 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x6c, 0x79, 0x29, 0x2e, 0x0a, 0x0a, 0x54,
+ 0x68, 0x65, 0x20, 0x74, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x6d, 0x75,
+ 0x63, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e,
+ 0x0a, 0x22, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x73, 0x72, 0x74, 0x75, 0x67,
+ 0x75, 0xc3, 0xaa, 0x73, 0x73, 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x54, 0x6f, 0x20,
+ 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
+ 0x0d, 0x0a, 0x61, 0x74, 0x74, 0x6f, 0x72, 0x6e, 0x65, 0x79, 0x65, 0x6d, 0x70,
+ 0x68, 0x61, 0x73, 0x69, 0x73, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x6f, 0x72, 0x73,
+ 0x66, 0x61, 0x6e, 0x63, 0x79, 0x62, 0x6f, 0x78, 0x77, 0x6f, 0x72, 0x6c, 0x64,
+ 0x27, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x64, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x68,
+ 0x65, 0x63, 0x6b, 0x65, 0x64, 0x3d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
+ 0x73, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x70, 0x78, 0x3b, 0x66,
+ 0x6f, 0x6e, 0x74, 0x2d, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x6a,
+ 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x73, 0x62, 0x65, 0x6c, 0x69, 0x65, 0x76,
+ 0x65, 0x64, 0x76, 0x61, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x68, 0x6f,
+ 0x6d, 0x70, 0x73, 0x6f, 0x6e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x69, 0x6e, 0x67,
+ 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69,
+ 0x61, 0x6c, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x30, 0x63, 0x68,
+ 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x3c, 0x2f, 0x74, 0x62, 0x6f, 0x64, 0x79,
+ 0x3e, 0x3c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x20, 0x43, 0x6f, 0x6d, 0x70,
+ 0x6c, 0x65, 0x74, 0x65, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x66, 0x69, 0x78, 0x0a,
+ 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c,
+ 0x65, 0x20, 0x3c, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x73, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x69, 0x6e, 0x20,
+ 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x20, 0x4f, 0x63, 0x74, 0x6f,
+ 0x62, 0x65, 0x72, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x20, 0x65, 0x78,
+ 0x70, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f,
+ 0x20, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x6f, 0x70, 0x65, 0x72,
+ 0x61, 0x74, 0x65, 0x64, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x65,
+ 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
+ 0x64, 0x73, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x20, 0x6e, 0x75,
+ 0x6d, 0x62, 0x65, 0x72, 0x73, 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x6f, 0x6e, 0x53, 0x75, 0x62,
+ 0x6d, 0x69, 0x74, 0x6d, 0x61, 0x72, 0x79, 0x6c, 0x61, 0x6e, 0x64, 0x63, 0x6f,
+ 0x6c, 0x6c, 0x65, 0x67, 0x65, 0x73, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
+ 0x63, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x63, 0x74, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x64, 0x49, 0x6e, 0x61,
+ 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x73, 0x69, 0x62, 0x6c, 0x69, 0x6e,
+ 0x67, 0x73, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x73, 0x26, 0x71,
+ 0x75, 0x6f, 0x74, 0x3b, 0x29, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20,
+ 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x63, 0x68, 0x65, 0x63, 0x6b,
+ 0x62, 0x6f, 0x78, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x73, 0x70, 0x72,
+ 0x65, 0x67, 0x6e, 0x61, 0x6e, 0x74, 0x74, 0x6f, 0x6d, 0x6f, 0x72, 0x72, 0x6f,
+ 0x77, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x69, 0x63, 0x6f, 0x6e,
+ 0x2e, 0x70, 0x6e, 0x67, 0x6a, 0x61, 0x70, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x63,
+ 0x6f, 0x64, 0x65, 0x62, 0x61, 0x73, 0x65, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e,
+ 0x22, 0x3e, 0x67, 0x61, 0x6d, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x75, 0x63,
+ 0x68, 0x20, 0x61, 0x73, 0x20, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20,
+ 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x6f,
+ 0x75, 0x72, 0x69, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x74, 0x6f,
+ 0x70, 0x3a, 0x31, 0x70, 0x78, 0x20, 0x2e, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e,
+ 0x3e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x3d, 0x22, 0x32, 0x6c, 0x61, 0x7a, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x6e,
+ 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69,
+ 0x6e, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x22, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x22, 0x3e, 0x0a, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f,
+ 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3a, 0x32, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
+ 0x20, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x22, 0x20, 0x26, 0x6c, 0x74, 0x3b,
+ 0x21, 0x2d, 0x2d, 0x20, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x3e, 0x3c, 0x2f,
+ 0x6a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d,
+ 0x3e, 0x0a, 0x28, 0xe7, 0xae, 0x80, 0xe4, 0xbd, 0x93, 0x29, 0x28, 0xe7, 0xb9,
+ 0x81, 0xe9, 0xab, 0x94, 0x29, 0x68, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b, 0x69,
+ 0x69, 0x74, 0x61, 0x6c, 0x69, 0x61, 0x6e, 0x6f, 0x72, 0x6f, 0x6d, 0xc3, 0xa2,
+ 0x6e, 0xc4, 0x83, 0x74, 0xc3, 0xbc, 0x72, 0x6b, 0xc3, 0xa7, 0x65, 0xd8, 0xa7,
+ 0xd8, 0xb1, 0xd8, 0xaf, 0xd9, 0x88, 0x74, 0x61, 0x6d, 0x62, 0x69, 0xc3, 0xa9,
+ 0x6e, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x69, 0x61, 0x73, 0x6d, 0x65, 0x6e, 0x73,
+ 0x61, 0x6a, 0x65, 0x73, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x73, 0x64,
+ 0x65, 0x72, 0x65, 0x63, 0x68, 0x6f, 0x73, 0x6e, 0x61, 0x63, 0x69, 0x6f, 0x6e,
+ 0x61, 0x6c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x69, 0x6f, 0x63, 0x6f, 0x6e,
+ 0x74, 0x61, 0x63, 0x74, 0x6f, 0x75, 0x73, 0x75, 0x61, 0x72, 0x69, 0x6f, 0x73,
+ 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x61, 0x67, 0x6f, 0x62, 0x69, 0x65,
+ 0x72, 0x6e, 0x6f, 0x65, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x61, 0x73, 0x61, 0x6e,
+ 0x75, 0x6e, 0x63, 0x69, 0x6f, 0x73, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x69,
+ 0x61, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x64, 0x65, 0x73, 0x70,
+ 0x75, 0xc3, 0xa9, 0x73, 0x64, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x73, 0x70,
+ 0x72, 0x6f, 0x79, 0x65, 0x63, 0x74, 0x6f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
+ 0x74, 0x6f, 0x70, 0xc3, 0xba, 0x62, 0x6c, 0x69, 0x63, 0x6f, 0x6e, 0x6f, 0x73,
+ 0x6f, 0x74, 0x72, 0x6f, 0x73, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x61,
+ 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x6d, 0x69, 0x6c, 0x6c, 0x6f,
+ 0x6e, 0x65, 0x73, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x74, 0x65, 0x70, 0x72,
+ 0x65, 0x67, 0x75, 0x6e, 0x74, 0x61, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6f,
+ 0x72, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x62,
+ 0x6c, 0x65, 0x6d, 0x61, 0x73, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x67, 0x6f, 0x6e,
+ 0x75, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x73, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0xc3,
+ 0xb3, 0x6e, 0x69, 0x6d, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x72, 0x6d, 0x69, 0x65,
+ 0x6e, 0x74, 0x72, 0x61, 0x73, 0x61, 0x6d, 0xc3, 0xa9, 0x72, 0x69, 0x63, 0x61,
+ 0x76, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x6f, 0x72, 0x73, 0x6f, 0x63, 0x69, 0x65,
+ 0x64, 0x61, 0x64, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x65,
+ 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x72, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x6f, 0x70, 0x61, 0x6c, 0x61, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6e, 0x74, 0x65,
+ 0x72, 0xc3, 0xa9, 0x73, 0x65, 0x6e, 0x74, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x65,
+ 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x6d, 0x69, 0x65, 0x6d, 0x62, 0x72,
+ 0x6f, 0x73, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x64, 0x63, 0xc3, 0xb3,
+ 0x72, 0x64, 0x6f, 0x62, 0x61, 0x7a, 0x61, 0x72, 0x61, 0x67, 0x6f, 0x7a, 0x61,
+ 0x70, 0xc3, 0xa1, 0x67, 0x69, 0x6e, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61,
+ 0x6c, 0x65, 0x73, 0x62, 0x6c, 0x6f, 0x71, 0x75, 0x65, 0x61, 0x72, 0x67, 0x65,
+ 0x73, 0x74, 0x69, 0xc3, 0xb3, 0x6e, 0x61, 0x6c, 0x71, 0x75, 0x69, 0x6c, 0x65,
+ 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6d, 0x61, 0x73, 0x63, 0x69, 0x65, 0x6e,
+ 0x63, 0x69, 0x61, 0x73, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x6f, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0xc3, 0xb3, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
+ 0x74, 0x61, 0x65, 0x73, 0x74, 0x75, 0x64, 0x69, 0x6f, 0x73, 0x70, 0xc3, 0xba,
+ 0x62, 0x6c, 0x69, 0x63, 0x61, 0x6f, 0x62, 0x6a, 0x65, 0x74, 0x69, 0x76, 0x6f,
+ 0x61, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x65, 0x62, 0x75, 0x73, 0x63, 0x61,
+ 0x64, 0x6f, 0x72, 0x63, 0x61, 0x6e, 0x74, 0x69, 0x64, 0x61, 0x64, 0x65, 0x6e,
+ 0x74, 0x72, 0x61, 0x64, 0x61, 0x73, 0x61, 0x63, 0x63, 0x69, 0x6f, 0x6e, 0x65,
+ 0x73, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x6f, 0x73, 0x73, 0x75, 0x70, 0x65,
+ 0x72, 0x69, 0x6f, 0x72, 0x6d, 0x61, 0x79, 0x6f, 0x72, 0xc3, 0xad, 0x61, 0x61,
+ 0x6c, 0x65, 0x6d, 0x61, 0x6e, 0x69, 0x61, 0x66, 0x75, 0x6e, 0x63, 0x69, 0xc3,
+ 0xb3, 0x6e, 0xc3, 0xba, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x73, 0x68, 0x61, 0x63,
+ 0x69, 0x65, 0x6e, 0x64, 0x6f, 0x61, 0x71, 0x75, 0x65, 0x6c, 0x6c, 0x6f, 0x73,
+ 0x65, 0x64, 0x69, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x66, 0x65, 0x72, 0x6e, 0x61,
+ 0x6e, 0x64, 0x6f, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x65, 0x66, 0x61,
+ 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x6e, 0x75, 0x65, 0x73, 0x74, 0x72, 0x61,
+ 0x73, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x65, 0x73, 0x70, 0x72, 0x6f, 0x63,
+ 0x65, 0x73, 0x6f, 0x73, 0x62, 0x61, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x65, 0x70,
+ 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74,
+ 0x61, 0x72, 0x63, 0x6f, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x6f, 0x70, 0x75, 0x62,
+ 0x6c, 0x69, 0x63, 0x61, 0x72, 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x63, 0x69, 0x6f,
+ 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x6a, 0xc3, 0xb3, 0x76, 0x65,
+ 0x6e, 0x65, 0x73, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x74, 0x6f, 0x74, 0xc3,
+ 0xa9, 0x63, 0x6e, 0x69, 0x63, 0x61, 0x63, 0x6f, 0x6e, 0x6a, 0x75, 0x6e, 0x74,
+ 0x6f, 0x65, 0x6e, 0x65, 0x72, 0x67, 0xc3, 0xad, 0x61, 0x74, 0x72, 0x61, 0x62,
+ 0x61, 0x6a, 0x61, 0x72, 0x61, 0x73, 0x74, 0x75, 0x72, 0x69, 0x61, 0x73, 0x72,
+ 0x65, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x65, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a,
+ 0x61, 0x72, 0x62, 0x6f, 0x6c, 0x65, 0x74, 0xc3, 0xad, 0x6e, 0x73, 0x61, 0x6c,
+ 0x76, 0x61, 0x64, 0x6f, 0x72, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x61,
+ 0x74, 0x72, 0x61, 0x62, 0x61, 0x6a, 0x6f, 0x73, 0x70, 0x72, 0x69, 0x6d, 0x65,
+ 0x72, 0x6f, 0x73, 0x6e, 0x65, 0x67, 0x6f, 0x63, 0x69, 0x6f, 0x73, 0x6c, 0x69,
+ 0x62, 0x65, 0x72, 0x74, 0x61, 0x64, 0x64, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x65,
+ 0x73, 0x70, 0x61, 0x6e, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x70, 0x72, 0xc3, 0xb3,
+ 0x78, 0x69, 0x6d, 0x6f, 0x61, 0x6c, 0x6d, 0x65, 0x72, 0xc3, 0xad, 0x61, 0x61,
+ 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x65, 0x73, 0x71, 0x75, 0x69, 0xc3, 0xa9, 0x6e,
+ 0x65, 0x73, 0x63, 0x6f, 0x72, 0x61, 0x7a, 0xc3, 0xb3, 0x6e, 0x73, 0x65, 0x63,
+ 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x62, 0x75, 0x73, 0x63, 0x61, 0x6e, 0x64, 0x6f,
+ 0x6f, 0x70, 0x63, 0x69, 0x6f, 0x6e, 0x65, 0x73, 0x65, 0x78, 0x74, 0x65, 0x72,
+ 0x69, 0x6f, 0x72, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x74, 0x6f,
+ 0x64, 0x61, 0x76, 0xc3, 0xad, 0x61, 0x67, 0x61, 0x6c, 0x65, 0x72, 0xc3, 0xad,
+ 0x61, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x69,
+ 0x63, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x63, 0x69, 0x61, 0x63,
+ 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x74, 0x61, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74,
+ 0x6f, 0x73, 0x63, 0x72, 0xc3, 0xad, 0x74, 0x69, 0x63, 0x61, 0x64, 0xc3, 0xb3,
+ 0x6c, 0x61, 0x72, 0x65, 0x73, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x63, 0x69, 0x61,
+ 0x64, 0x65, 0x62, 0x65, 0x72, 0xc3, 0xa1, 0x6e, 0x70, 0x65, 0x72, 0xc3, 0xad,
+ 0x6f, 0x64, 0x6f, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x69, 0x74, 0x61, 0x6d, 0x61,
+ 0x6e, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x70, 0x65, 0x71, 0x75, 0x65, 0xc3, 0xb1,
+ 0x6f, 0x72, 0x65, 0x63, 0x69, 0x62, 0x69, 0x64, 0x61, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x6e, 0x61, 0x6c, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x66, 0x65, 0x63,
+ 0x61, 0x6e, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x63, 0x61, 0x6e, 0x61, 0x72, 0x69,
+ 0x61, 0x73, 0x64, 0x65, 0x73, 0x63, 0x61, 0x72, 0x67, 0x61, 0x64, 0x69, 0x76,
+ 0x65, 0x72, 0x73, 0x6f, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x63, 0x61,
+ 0x72, 0x65, 0x71, 0x75, 0x69, 0x65, 0x72, 0x65, 0x74, 0xc3, 0xa9, 0x63, 0x6e,
+ 0x69, 0x63, 0x6f, 0x64, 0x65, 0x62, 0x65, 0x72, 0xc3, 0xad, 0x61, 0x76, 0x69,
+ 0x76, 0x69, 0x65, 0x6e, 0x64, 0x61, 0x66, 0x69, 0x6e, 0x61, 0x6e, 0x7a, 0x61,
+ 0x73, 0x61, 0x64, 0x65, 0x6c, 0x61, 0x6e, 0x74, 0x65, 0x66, 0x75, 0x6e, 0x63,
+ 0x69, 0x6f, 0x6e, 0x61, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6a, 0x6f, 0x73, 0x64,
+ 0x69, 0x66, 0xc3, 0xad, 0x63, 0x69, 0x6c, 0x63, 0x69, 0x75, 0x64, 0x61, 0x64,
+ 0x65, 0x73, 0x61, 0x6e, 0x74, 0x69, 0x67, 0x75, 0x61, 0x73, 0x61, 0x76, 0x61,
+ 0x6e, 0x7a, 0x61, 0x64, 0x61, 0x74, 0xc3, 0xa9, 0x72, 0x6d, 0x69, 0x6e, 0x6f,
+ 0x75, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x65, 0x73, 0x73, 0xc3, 0xa1, 0x6e, 0x63,
+ 0x68, 0x65, 0x7a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0xc3, 0xb1, 0x61, 0x73, 0x6f,
+ 0x66, 0x74, 0x6f, 0x6e, 0x69, 0x63, 0x72, 0x65, 0x76, 0x69, 0x73, 0x74, 0x61,
+ 0x73, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x65, 0x73, 0x6d, 0x6f, 0x6d, 0x65, 0x6e, 0x74, 0x6f, 0x73, 0x66,
+ 0x61, 0x63, 0x75, 0x6c, 0x74, 0x61, 0x64, 0x63, 0x72, 0xc3, 0xa9, 0x64, 0x69,
+ 0x74, 0x6f, 0x64, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x73, 0x73, 0x75, 0x70,
+ 0x75, 0x65, 0x73, 0x74, 0x6f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x65, 0x73,
+ 0x73, 0x65, 0x67, 0x75, 0x6e, 0x64, 0x6f, 0x73, 0x70, 0x65, 0x71, 0x75, 0x65,
+ 0xc3, 0xb1, 0x61, 0xd0, 0xb3, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xb0, 0xd0, 0xb5,
+ 0xd1, 0x81, 0xd0, 0xbb, 0xd0, 0xb8, 0xd0, 0xb5, 0xd1, 0x81, 0xd1, 0x82, 0xd1,
+ 0x8c, 0xd0, 0xb1, 0xd1, 0x8b, 0xd0, 0xbb, 0xd0, 0xbe, 0xd0, 0xb1, 0xd1, 0x8b,
+ 0xd1, 0x82, 0xd1, 0x8c, 0xd1, 0x8d, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xbc, 0xd0,
+ 0x95, 0xd1, 0x81, 0xd0, 0xbb, 0xd0, 0xb8, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xb3,
+ 0xd0, 0xbe, 0xd0, 0xbc, 0xd0, 0xb5, 0xd0, 0xbd, 0xd1, 0x8f, 0xd0, 0xb2, 0xd1,
+ 0x81, 0xd0, 0xb5, 0xd1, 0x85, 0xd1, 0x8d, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xb9,
+ 0xd0, 0xb4, 0xd0, 0xb0, 0xd0, 0xb6, 0xd0, 0xb5, 0xd0, 0xb1, 0xd1, 0x8b, 0xd0,
+ 0xbb, 0xd0, 0xb8, 0xd0, 0xb3, 0xd0, 0xbe, 0xd0, 0xb4, 0xd1, 0x83, 0xd0, 0xb4,
+ 0xd0, 0xb5, 0xd0, 0xbd, 0xd1, 0x8c, 0xd1, 0x8d, 0xd1, 0x82, 0xd0, 0xbe, 0xd1,
+ 0x82, 0xd0, 0xb1, 0xd1, 0x8b, 0xd0, 0xbb, 0xd0, 0xb0, 0xd1, 0x81, 0xd0, 0xb5,
+ 0xd0, 0xb1, 0xd1, 0x8f, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xb8, 0xd0, 0xbd, 0xd1,
+ 0x81, 0xd0, 0xb5, 0xd0, 0xb1, 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb0, 0xd0, 0xb4,
+ 0xd0, 0xbe, 0xd1, 0x81, 0xd0, 0xb0, 0xd0, 0xb9, 0xd1, 0x82, 0xd1, 0x84, 0xd0,
+ 0xbe, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xbd, 0xd0, 0xb5, 0xd0, 0xb3, 0xd0, 0xbe,
+ 0xd1, 0x81, 0xd0, 0xb2, 0xd0, 0xbe, 0xd0, 0xb8, 0xd1, 0x81, 0xd0, 0xb2, 0xd0,
+ 0xbe, 0xd0, 0xb9, 0xd0, 0xb8, 0xd0, 0xb3, 0xd1, 0x80, 0xd1, 0x8b, 0xd1, 0x82,
+ 0xd0, 0xbe, 0xd0, 0xb6, 0xd0, 0xb5, 0xd0, 0xb2, 0xd1, 0x81, 0xd0, 0xb5, 0xd0,
+ 0xbc, 0xd1, 0x81, 0xd0, 0xb2, 0xd0, 0xbe, 0xd1, 0x8e, 0xd0, 0xbb, 0xd0, 0xb8,
+ 0xd1, 0x88, 0xd1, 0x8c, 0xd1, 0x8d, 0xd1, 0x82, 0xd0, 0xb8, 0xd1, 0x85, 0xd0,
+ 0xbf, 0xd0, 0xbe, 0xd0, 0xba, 0xd0, 0xb0, 0xd0, 0xb4, 0xd0, 0xbd, 0xd0, 0xb5,
+ 0xd0, 0xb9, 0xd0, 0xb4, 0xd0, 0xbe, 0xd0, 0xbc, 0xd0, 0xb0, 0xd0, 0xbc, 0xd0,
+ 0xb8, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xbb, 0xd0, 0xb8, 0xd0, 0xb1, 0xd0, 0xbe,
+ 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xbc, 0xd1, 0x83, 0xd1, 0x85, 0xd0, 0xbe, 0xd1,
+ 0x82, 0xd1, 0x8f, 0xd0, 0xb4, 0xd0, 0xb2, 0xd1, 0x83, 0xd1, 0x85, 0xd1, 0x81,
+ 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xb8, 0xd0, 0xbb, 0xd1, 0x8e, 0xd0, 0xb4, 0xd0,
+ 0xb8, 0xd0, 0xb4, 0xd0, 0xb5, 0xd0, 0xbb, 0xd0, 0xbe, 0xd0, 0xbc, 0xd0, 0xb8,
+ 0xd1, 0x80, 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xb1, 0xd1, 0x8f, 0xd1,
+ 0x81, 0xd0, 0xb2, 0xd0, 0xbe, 0xd0, 0xb5, 0xd0, 0xb2, 0xd0, 0xb8, 0xd0, 0xb4,
+ 0xd0, 0xb5, 0xd1, 0x87, 0xd0, 0xb5, 0xd0, 0xb3, 0xd0, 0xbe, 0xd1, 0x8d, 0xd1,
+ 0x82, 0xd0, 0xb8, 0xd0, 0xbc, 0xd1, 0x81, 0xd1, 0x87, 0xd0, 0xb5, 0xd1, 0x82,
+ 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xbc, 0xd1, 0x8b, 0xd1, 0x86, 0xd0, 0xb5, 0xd0,
+ 0xbd, 0xd1, 0x8b, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb0, 0xd0, 0xbb, 0xd0, 0xb2,
+ 0xd0, 0xb5, 0xd0, 0xb4, 0xd1, 0x8c, 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xbc, 0xd0,
+ 0xb5, 0xd0, 0xb2, 0xd0, 0xbe, 0xd0, 0xb4, 0xd1, 0x8b, 0xd1, 0x82, 0xd0, 0xb5,
+ 0xd0, 0xb1, 0xd0, 0xb5, 0xd0, 0xb2, 0xd1, 0x8b, 0xd1, 0x88, 0xd0, 0xb5, 0xd0,
+ 0xbd, 0xd0, 0xb0, 0xd0, 0xbc, 0xd0, 0xb8, 0xd1, 0x82, 0xd0, 0xb8, 0xd0, 0xbf,
+ 0xd0, 0xb0, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xbc, 0xd1, 0x83, 0xd0, 0xbf, 0xd1,
+ 0x80, 0xd0, 0xb0, 0xd0, 0xb2, 0xd0, 0xbb, 0xd0, 0xb8, 0xd1, 0x86, 0xd0, 0xb0,
+ 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xbd, 0xd0, 0xb0, 0xd0, 0xb3, 0xd0, 0xbe, 0xd0,
+ 0xb4, 0xd1, 0x8b, 0xd0, 0xb7, 0xd0, 0xbd, 0xd0, 0xb0, 0xd1, 0x8e, 0xd0, 0xbc,
+ 0xd0, 0xbe, 0xd0, 0xb3, 0xd1, 0x83, 0xd0, 0xb4, 0xd1, 0x80, 0xd1, 0x83, 0xd0,
+ 0xb3, 0xd0, 0xb2, 0xd1, 0x81, 0xd0, 0xb5, 0xd0, 0xb9, 0xd0, 0xb8, 0xd0, 0xb4,
+ 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xba, 0xd0, 0xb8, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0,
+ 0xbe, 0xd0, 0xb4, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xb5, 0xd0, 0xbb,
+ 0xd0, 0xb0, 0xd0, 0xb4, 0xd0, 0xb5, 0xd0, 0xbb, 0xd0, 0xb5, 0xd1, 0x81, 0xd1,
+ 0x80, 0xd0, 0xbe, 0xd0, 0xba, 0xd0, 0xb8, 0xd1, 0x8e, 0xd0, 0xbd, 0xd1, 0x8f,
+ 0xd0, 0xb2, 0xd0, 0xb5, 0xd1, 0x81, 0xd1, 0x8c, 0xd0, 0x95, 0xd1, 0x81, 0xd1,
+ 0x82, 0xd1, 0x8c, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xb7, 0xd0, 0xb0, 0xd0, 0xbd,
+ 0xd0, 0xb0, 0xd1, 0x88, 0xd0, 0xb8, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x84, 0xd9,
+ 0x87, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xaa, 0xd9, 0x8a, 0xd8, 0xac, 0xd9, 0x85,
+ 0xd9, 0x8a, 0xd8, 0xb9, 0xd8, 0xae, 0xd8, 0xa7, 0xd8, 0xb5, 0xd8, 0xa9, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd8, 0xb0, 0xd9, 0x8a, 0xd8, 0xb9, 0xd9, 0x84, 0xd9, 0x8a,
+ 0xd9, 0x87, 0xd8, 0xac, 0xd8, 0xaf, 0xd9, 0x8a, 0xd8, 0xaf, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd8, 0xa2, 0xd9, 0x86, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb1, 0xd8, 0xaf,
+ 0xd8, 0xaa, 0xd8, 0xad, 0xd9, 0x83, 0xd9, 0x85, 0xd8, 0xb5, 0xd9, 0x81, 0xd8,
+ 0xad, 0xd8, 0xa9, 0xd9, 0x83, 0xd8, 0xa7, 0xd9, 0x86, 0xd8, 0xaa, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd9, 0x84, 0xd9, 0x8a, 0xd9, 0x8a, 0xd9, 0x83, 0xd9, 0x88, 0xd9,
+ 0x86, 0xd8, 0xb4, 0xd8, 0xa8, 0xd9, 0x83, 0xd8, 0xa9, 0xd9, 0x81, 0xd9, 0x8a,
+ 0xd9, 0x87, 0xd8, 0xa7, 0xd8, 0xa8, 0xd9, 0x86, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8,
+ 0xad, 0xd9, 0x88, 0xd8, 0xa7, 0xd8, 0xa1, 0xd8, 0xa3, 0xd9, 0x83, 0xd8, 0xab,
+ 0xd8, 0xb1, 0xd8, 0xae, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd8, 0xad, 0xd8, 0xa8, 0xd8, 0xaf, 0xd9, 0x84, 0xd9, 0x8a, 0xd9, 0x84,
+ 0xd8, 0xaf, 0xd8, 0xb1, 0xd9, 0x88, 0xd8, 0xb3, 0xd8, 0xa7, 0xd8, 0xb6, 0xd8,
+ 0xba, 0xd8, 0xb7, 0xd8, 0xaa, 0xd9, 0x83, 0xd9, 0x88, 0xd9, 0x86, 0xd9, 0x87,
+ 0xd9, 0x86, 0xd8, 0xa7, 0xd9, 0x83, 0xd8, 0xb3, 0xd8, 0xa7, 0xd8, 0xad, 0xd8,
+ 0xa9, 0xd9, 0x86, 0xd8, 0xa7, 0xd8, 0xaf, 0xd9, 0x8a, 0xd8, 0xa7, 0xd9, 0x84,
+ 0xd8, 0xb7, 0xd8, 0xa8, 0xd8, 0xb9, 0xd9, 0x84, 0xd9, 0x8a, 0xd9, 0x83, 0xd8,
+ 0xb4, 0xd9, 0x83, 0xd8, 0xb1, 0xd8, 0xa7, 0xd9, 0x8a, 0xd9, 0x85, 0xd9, 0x83,
+ 0xd9, 0x86, 0xd9, 0x85, 0xd9, 0x86, 0xd9, 0x87, 0xd8, 0xa7, 0xd8, 0xb4, 0xd8,
+ 0xb1, 0xd9, 0x83, 0xd8, 0xa9, 0xd8, 0xb1, 0xd8, 0xa6, 0xd9, 0x8a, 0xd8, 0xb3,
+ 0xd9, 0x86, 0xd8, 0xb4, 0xd9, 0x8a, 0xd8, 0xb7, 0xd9, 0x85, 0xd8, 0xa7, 0xd8,
+ 0xb0, 0xd8, 0xa7, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x81, 0xd9, 0x86, 0xd8, 0xb4,
+ 0xd8, 0xa8, 0xd8, 0xa7, 0xd8, 0xa8, 0xd8, 0xaa, 0xd8, 0xb9, 0xd8, 0xa8, 0xd8,
+ 0xb1, 0xd8, 0xb1, 0xd8, 0xad, 0xd9, 0x85, 0xd8, 0xa9, 0xd9, 0x83, 0xd8, 0xa7,
+ 0xd9, 0x81, 0xd8, 0xa9, 0xd9, 0x8a, 0xd9, 0x82, 0xd9, 0x88, 0xd9, 0x84, 0xd9,
+ 0x85, 0xd8, 0xb1, 0xd9, 0x83, 0xd8, 0xb2, 0xd9, 0x83, 0xd9, 0x84, 0xd9, 0x85,
+ 0xd8, 0xa9, 0xd8, 0xa3, 0xd8, 0xad, 0xd9, 0x85, 0xd8, 0xaf, 0xd9, 0x82, 0xd9,
+ 0x84, 0xd8, 0xa8, 0xd9, 0x8a, 0xd9, 0x8a, 0xd8, 0xb9, 0xd9, 0x86, 0xd9, 0x8a,
+ 0xd8, 0xb5, 0xd9, 0x88, 0xd8, 0xb1, 0xd8, 0xa9, 0xd8, 0xb7, 0xd8, 0xb1, 0xd9,
+ 0x8a, 0xd9, 0x82, 0xd8, 0xb4, 0xd8, 0xa7, 0xd8, 0xb1, 0xd9, 0x83, 0xd8, 0xac,
+ 0xd9, 0x88, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa3, 0xd8, 0xae, 0xd8, 0xb1, 0xd9,
+ 0x89, 0xd9, 0x85, 0xd8, 0xb9, 0xd9, 0x86, 0xd8, 0xa7, 0xd8, 0xa7, 0xd8, 0xa8,
+ 0xd8, 0xad, 0xd8, 0xab, 0xd8, 0xb9, 0xd8, 0xb1, 0xd9, 0x88, 0xd8, 0xb6, 0xd8,
+ 0xa8, 0xd8, 0xb4, 0xd9, 0x83, 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xb3, 0xd8, 0xac,
+ 0xd9, 0x84, 0xd8, 0xa8, 0xd9, 0x86, 0xd8, 0xa7, 0xd9, 0x86, 0xd8, 0xae, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd8, 0xaf, 0xd9, 0x83, 0xd8, 0xaa, 0xd8, 0xa7, 0xd8, 0xa8,
+ 0xd9, 0x83, 0xd9, 0x84, 0xd9, 0x8a, 0xd8, 0xa9, 0xd8, 0xa8, 0xd8, 0xaf, 0xd9,
+ 0x88, 0xd9, 0x86, 0xd8, 0xa3, 0xd9, 0x8a, 0xd8, 0xb6, 0xd8, 0xa7, 0xd9, 0x8a,
+ 0xd9, 0x88, 0xd8, 0xac, 0xd8, 0xaf, 0xd9, 0x81, 0xd8, 0xb1, 0xd9, 0x8a, 0xd9,
+ 0x82, 0xd9, 0x83, 0xd8, 0xaa, 0xd8, 0xa8, 0xd8, 0xaa, 0xd8, 0xa3, 0xd9, 0x81,
+ 0xd8, 0xb6, 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xb7, 0xd8, 0xa8, 0xd8, 0xae, 0xd8,
+ 0xa7, 0xd9, 0x83, 0xd8, 0xab, 0xd8, 0xb1, 0xd8, 0xa8, 0xd8, 0xa7, 0xd8, 0xb1,
+ 0xd9, 0x83, 0xd8, 0xa7, 0xd9, 0x81, 0xd8, 0xb6, 0xd9, 0x84, 0xd8, 0xa7, 0xd8,
+ 0xad, 0xd9, 0x84, 0xd9, 0x89, 0xd9, 0x86, 0xd9, 0x81, 0xd8, 0xb3, 0xd9, 0x87,
+ 0xd8, 0xa3, 0xd9, 0x8a, 0xd8, 0xa7, 0xd9, 0x85, 0xd8, 0xb1, 0xd8, 0xaf, 0xd9,
+ 0x88, 0xd8, 0xaf, 0xd8, 0xa3, 0xd9, 0x86, 0xd9, 0x87, 0xd8, 0xa7, 0xd8, 0xaf,
+ 0xd9, 0x8a, 0xd9, 0x86, 0xd8, 0xa7, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa7, 0xd9,
+ 0x86, 0xd9, 0x85, 0xd8, 0xb9, 0xd8, 0xb1, 0xd8, 0xb6, 0xd8, 0xaa, 0xd8, 0xb9,
+ 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xaf, 0xd8, 0xa7, 0xd8, 0xae, 0xd9, 0x84, 0xd9,
+ 0x85, 0xd9, 0x85, 0xd9, 0x83, 0xd9, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00,
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x04, 0x03,
+ 0x02, 0x01, 0x00, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x0e,
+ 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
+ 0x17, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x18, 0x19, 0x1a, 0x1b,
+ 0x1c, 0x1d, 0x1e, 0x1f, 0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a, 0x19, 0x18, 0xff,
+ 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+ 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xff, 0xff, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00,
+ 0x07, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x65, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61,
+ 0x62, 0x6c, 0x65, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44,
+ 0x54, 0x44, 0x2f, 0x78, 0x68, 0x74, 0x6d, 0x6c, 0x6d, 0x61, 0x72, 0x6b, 0x65,
+ 0x74, 0x69, 0x6e, 0x67, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65,
+ 0x73, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x61, 0x64, 0x76,
+ 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74,
+ 0x65, 0x72, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x3c, 0x2f,
+ 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x3e, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61,
+ 0x6c, 0x69, 0x61, 0x22, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73,
+ 0x69, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x6f,
+ 0x72, 0x69, 0x74, 0x79, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67,
+ 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x69, 0x6c, 0x79, 0x6f, 0x70, 0x65, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67,
+ 0x65, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x61, 0x6e, 0x6f,
+ 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x63, 0x6f,
+ 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
+ 0x75, 0x72, 0x65, 0x61, 0x67, 0x72, 0x65, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22,
+ 0x20, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3d, 0x22, 0x70, 0x6f, 0x74, 0x65, 0x6e,
+ 0x74, 0x69, 0x61, 0x6c, 0x65, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x73, 0x65, 0x63, 0x6f,
+ 0x6e, 0x64, 0x61, 0x72, 0x79, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68,
+ 0x74, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x65, 0x78, 0x63,
+ 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, 0x0d, 0x0a, 0x73, 0x74,
+ 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x74,
+ 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x7d,
+ 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x73, 0x6f, 0x6c, 0x75, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x74, 0x65, 0x6d, 0x70,
+ 0x6c, 0x61, 0x74, 0x65, 0x73, 0x64, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x6f, 0x75,
+ 0x73, 0x73, 0x61, 0x74, 0x65, 0x6c, 0x6c, 0x69, 0x74, 0x65, 0x64, 0x6f, 0x63,
+ 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68,
+ 0x65, 0x72, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x65,
+ 0x6e, 0x63, 0x65, 0x26, 0x72, 0x61, 0x71, 0x75, 0x6f, 0x3b, 0x3c, 0x2f, 0x65,
+ 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x67, 0x65, 0x6e, 0x65, 0x72,
+ 0x61, 0x6c, 0x6c, 0x79, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d,
+ 0x62, 0x65, 0x61, 0x75, 0x74, 0x69, 0x66, 0x75, 0x6c, 0x74, 0x72, 0x61, 0x6e,
+ 0x73, 0x70, 0x6f, 0x72, 0x74, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x65,
+ 0x64, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x70, 0x72, 0x6f,
+ 0x6d, 0x69, 0x6e, 0x65, 0x6e, 0x74, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x20, 0x74,
+ 0x68, 0x65, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x4e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x2e, 0x66, 0x6f, 0x63, 0x75, 0x73,
+ 0x28, 0x29, 0x3b, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d,
+ 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6e, 0x6e, 0x6f, 0x75,
+ 0x6e, 0x63, 0x65, 0x64, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x22, 0x3e, 0x0a,
+ 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x73, 0x73,
+ 0x20, 0x74, 0x68, 0x61, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x69, 0x76,
+ 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x72, 0x61,
+ 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x74, 0x65, 0x72, 0x72, 0x69, 0x74, 0x6f,
+ 0x72, 0x79, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x75,
+ 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e,
+ 0x61, 0x6d, 0x65, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x69, 0x73, 0x6d, 0x74,
+ 0x72, 0x61, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x6c, 0x73, 0x65, 0x77,
+ 0x68, 0x65, 0x72, 0x65, 0x41, 0x6c, 0x65, 0x78, 0x61, 0x6e, 0x64, 0x65, 0x72,
+ 0x61, 0x70, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x64, 0x6d, 0x61, 0x74, 0x65,
+ 0x72, 0x69, 0x61, 0x6c, 0x73, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73,
+ 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x61, 0x66, 0x66,
+ 0x69, 0x6c, 0x69, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x3e, 0x74, 0x72, 0x65, 0x61, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x64, 0x69,
+ 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75,
+ 0x6c, 0x74, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x6f,
+ 0x6e, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x3d, 0x22, 0x62, 0x69, 0x6f, 0x67, 0x72,
+ 0x61, 0x70, 0x68, 0x79, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65,
+ 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x46, 0x72, 0x61, 0x6e,
+ 0xc3, 0xa7, 0x61, 0x69, 0x73, 0x48, 0x6f, 0x6c, 0x6c, 0x79, 0x77, 0x6f, 0x6f,
+ 0x64, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x64, 0x61, 0x72, 0x64, 0x73, 0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65,
+ 0x3e, 0x0a, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65,
+ 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72,
+ 0x72, 0x65, 0x64, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x6f,
+ 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x75, 0x73, 0x69, 0x6e,
+ 0x65, 0x73, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x75, 0x73, 0x69, 0x6f, 0x6e,
+ 0x3e, 0x0a, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x70, 0x72, 0x65, 0x73,
+ 0x65, 0x6e, 0x74, 0x65, 0x64, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x65,
+ 0x64, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x77, 0x6f, 0x72,
+ 0x6c, 0x64, 0x77, 0x69, 0x64, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61,
+ 0x63, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x6e, 0x65,
+ 0x77, 0x73, 0x70, 0x61, 0x70, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c,
+ 0x65, 0x3e, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x6c,
+ 0x69, 0x6b, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x73, 0x73, 0x65, 0x6e,
+ 0x74, 0x69, 0x61, 0x6c, 0x66, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c,
+ 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x61, 0x62, 0x61, 0x6e, 0x64, 0x6f, 0x6e, 0x65,
+ 0x64, 0x45, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x61, 0x72,
+ 0x73, 0x65, 0x49, 0x6e, 0x74, 0x28, 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x75, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x3c, 0x2f,
+ 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x4e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x65,
+ 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x65, 0x72, 0x66, 0x6f,
+ 0x72, 0x6d, 0x65, 0x64, 0x74, 0x77, 0x6f, 0x20, 0x79, 0x65, 0x61, 0x72, 0x73,
+ 0x53, 0x69, 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72,
+ 0x65, 0x66, 0x6f, 0x72, 0x65, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x22,
+ 0x3e, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x69, 0x6e, 0x63,
+ 0x72, 0x65, 0x61, 0x73, 0x65, 0x64, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x20,
+ 0x6f, 0x66, 0x70, 0x65, 0x72, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x74, 0x72,
+ 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73,
+ 0x61, 0x72, 0x79, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x79, 0x65, 0x64, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6c, 0x69, 0x7a, 0x61,
+ 0x62, 0x65, 0x74, 0x68, 0x3c, 0x2f, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x3e,
+ 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x73, 0x75,
+ 0x72, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68,
+ 0x3b, 0x6c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x47, 0x65, 0x6f,
+ 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61,
+ 0x74, 0x65, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x73, 0x6f,
+ 0x6d, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+ 0x65, 0x73, 0x2e, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, 0x3c,
+ 0x2f, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x3e, 0x43, 0x6f, 0x6d, 0x6d, 0x75,
+ 0x6e, 0x69, 0x74, 0x79, 0x72, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x6f, 0x75, 0x73,
+ 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d,
+ 0x69, 0x74, 0x74, 0x65, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67,
+ 0x73, 0x74, 0x68, 0x65, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x6e, 0x6f, 0x20,
+ 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x6e, 0x69,
+ 0x6e, 0x67, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x63, 0x61,
+ 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65,
+ 0x6e, 0x63, 0x79, 0x74, 0x79, 0x70, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x69,
+ 0x6e, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74,
+ 0x69, 0x76, 0x65, 0x3b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67,
+ 0x70, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x69, 0x74,
+ 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x71, 0x75,
+ 0x65, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x69, 0x74, 0x20,
+ 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x65, 0x78, 0x69, 0x73, 0x74, 0x65, 0x6e,
+ 0x63, 0x65, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x65, 0x74, 0x68,
+ 0x69, 0x73, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x68,
+ 0x6f, 0x6e, 0x65, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x70,
+ 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x73, 0x61, 0x64, 0x76, 0x61, 0x6e,
+ 0x74, 0x61, 0x67, 0x65, 0x29, 0x3b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+ 0x46, 0x6f, 0x72, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x70, 0x72, 0x6f, 0x76,
+ 0x69, 0x64, 0x69, 0x6e, 0x67, 0x64, 0x65, 0x6d, 0x6f, 0x63, 0x72, 0x61, 0x63,
+ 0x79, 0x62, 0x6f, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x74,
+ 0x65, 0x6e, 0x73, 0x69, 0x76, 0x65, 0x73, 0x75, 0x66, 0x66, 0x65, 0x72, 0x69,
+ 0x6e, 0x67, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x63, 0x6f,
+ 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x73, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x70, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x73,
+ 0x61, 0x69, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x69, 0x74, 0x20, 0x6d, 0x61,
+ 0x79, 0x20, 0x62, 0x65, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x3c, 0x2f,
+ 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65,
+ 0x64, 0x75, 0x6c, 0x65, 0x64, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64,
+ 0x73, 0x3c, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x3e, 0x0a, 0x73, 0x75, 0x73,
+ 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a,
+ 0x20, 0x30, 0x73, 0x70, 0x69, 0x72, 0x69, 0x74, 0x75, 0x61, 0x6c, 0x3c, 0x2f,
+ 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0a, 0x0a, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73,
+ 0x6f, 0x66, 0x74, 0x67, 0x72, 0x61, 0x64, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x64,
+ 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x65, 0x64, 0x68, 0x65, 0x20, 0x62, 0x65,
+ 0x63, 0x61, 0x6d, 0x65, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65,
+ 0x6a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x6a, 0x73, 0x68, 0x6f, 0x75, 0x73,
+ 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65,
+ 0x64, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x64, 0x6c, 0x69, 0x74,
+ 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x79, 0x64, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79,
+ 0x65, 0x64, 0x75, 0x70, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x76, 0x61,
+ 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e,
+ 0x69, 0x6e, 0x67, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x63,
+ 0x65, 0x6e, 0x74, 0x75, 0x72, 0x69, 0x65, 0x73, 0x4a, 0x61, 0x70, 0x61, 0x6e,
+ 0x65, 0x73, 0x65, 0x20, 0x61, 0x6d, 0x6f, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65,
+ 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x61, 0x6c, 0x67, 0x6f,
+ 0x72, 0x69, 0x74, 0x68, 0x6d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74,
+ 0x73, 0x72, 0x65, 0x62, 0x65, 0x6c, 0x6c, 0x69, 0x6f, 0x6e, 0x75, 0x6e, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x6f, 0x75, 0x72, 0x61,
+ 0x67, 0x65, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x69, 0x6e,
+ 0x76, 0x6f, 0x6c, 0x76, 0x69, 0x6e, 0x67, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74,
+ 0x69, 0x76, 0x65, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x70,
+ 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x28, 0x61, 0x6c, 0x74, 0x68,
+ 0x6f, 0x75, 0x67, 0x68, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x69, 0x6e, 0x67,
+ 0x63, 0x6f, 0x6e, 0x64, 0x75, 0x63, 0x74, 0x65, 0x64, 0x29, 0x2c, 0x20, 0x77,
+ 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65,
+ 0x64, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3e, 0x46, 0x65, 0x62,
+ 0x72, 0x75, 0x61, 0x72, 0x79, 0x20, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x6f, 0x75,
+ 0x73, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x3a, 0x63, 0x6f,
+ 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65,
+ 0x6e, 0x74, 0x73, 0x65, 0x78, 0x63, 0x65, 0x6c, 0x6c, 0x65, 0x6e, 0x74, 0x63,
+ 0x6f, 0x6c, 0x73, 0x70, 0x61, 0x6e, 0x3d, 0x22, 0x74, 0x65, 0x63, 0x68, 0x6e,
+ 0x69, 0x63, 0x61, 0x6c, 0x6e, 0x65, 0x61, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x20, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x20, 0x6f, 0x66, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65,
+ 0x64, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x46, 0x61,
+ 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c,
+ 0x65, 0x20, 0x6d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x65, 0x6c,
+ 0x65, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x73,
+ 0x69, 0x76, 0x65, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, 0x0a, 0x09, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x6f, 0x72, 0x65, 0x64, 0x64, 0x6f, 0x63, 0x75, 0x6d,
+ 0x65, 0x6e, 0x74, 0x2e, 0x6f, 0x72, 0x20, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b,
+ 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x74, 0x68, 0x6f, 0x73,
+ 0x65, 0x20, 0x77, 0x68, 0x6f, 0x6d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x73, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x64, 0x69, 0x66,
+ 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74,
+ 0x65, 0x64, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x63, 0x6f,
+ 0x6e, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x64, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
+ 0x69, 0x6e, 0x67, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x2e,
+ 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x28, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x69, 0x63, 0x61, 0x6c, 0x63, 0x6f, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x64, 0x65, 0x63, 0x69,
+ 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e,
+ 0x74, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x65, 0x76, 0x6f,
+ 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65,
+ 0x72, 0x22, 0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x74, 0x6f, 0x61, 0x6c,
+ 0x6f, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65,
+ 0x72, 0x65, 0x64, 0x2d, 0x2d, 0x3e, 0x0d, 0x0a, 0x3c, 0x21, 0x2d, 0x2d, 0x41,
+ 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x65,
+ 0x63, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x20,
+ 0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3e, 0x3c, 0x66, 0x75, 0x72, 0x6e,
+ 0x69, 0x74, 0x75, 0x72, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74,
+ 0x20, 0x20, 0x6f, 0x6e, 0x62, 0x6c, 0x75, 0x72, 0x3d, 0x22, 0x73, 0x75, 0x73,
+ 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65,
+ 0x6e, 0x74, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x4d, 0x6f,
+ 0x72, 0x65, 0x6f, 0x76, 0x65, 0x72, 0x2c, 0x61, 0x62, 0x6f, 0x6c, 0x69, 0x73,
+ 0x68, 0x65, 0x64, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x77,
+ 0x65, 0x72, 0x65, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x65, 0x6d, 0x6f, 0x74, 0x69,
+ 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x79,
+ 0x6e, 0x61, 0x72, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x61, 0x64, 0x76, 0x6f,
+ 0x63, 0x61, 0x74, 0x65, 0x73, 0x70, 0x78, 0x3b, 0x62, 0x6f, 0x72, 0x64, 0x65,
+ 0x72, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x64, 0x69, 0x72,
+ 0x3d, 0x22, 0x6c, 0x74, 0x72, 0x22, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65,
+ 0x65, 0x73, 0x72, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x20, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
+ 0x73, 0x6f, 0x72, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x64,
+ 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x53, 0x65, 0x70, 0x74, 0x65,
+ 0x6d, 0x62, 0x65, 0x72, 0x61, 0x64, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x28,
+ 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x20, 0x73, 0x75, 0x67, 0x67,
+ 0x65, 0x73, 0x74, 0x65, 0x64, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x61, 0x74, 0x65,
+ 0x72, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x65, 0x6c, 0x61,
+ 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x6d, 0x65, 0x74, 0x69, 0x6d,
+ 0x65, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x63, 0x65,
+ 0x72, 0x74, 0x61, 0x69, 0x6e, 0x6c, 0x79, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c,
+ 0x6c, 0x65, 0x64, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x4a,
+ 0x65, 0x72, 0x75, 0x73, 0x61, 0x6c, 0x65, 0x6d, 0x74, 0x68, 0x65, 0x79, 0x20,
+ 0x68, 0x61, 0x76, 0x65, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x69, 0x6e, 0x67,
+ 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x70, 0x72, 0x6f, 0x76,
+ 0x69, 0x6e, 0x63, 0x65, 0x73, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65,
+ 0x65, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x72, 0x79, 0x72, 0x65, 0x63,
+ 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x77, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x20,
+ 0x74, 0x6f, 0x70, 0x78, 0x3b, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x74, 0x68,
+ 0x65, 0x6f, 0x72, 0x79, 0x20, 0x6f, 0x66, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69,
+ 0x6f, 0x75, 0x72, 0x57, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x65, 0x65,
+ 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x62, 0x65, 0x67, 0x61, 0x6e,
+ 0x20, 0x74, 0x6f, 0x20, 0x69, 0x74, 0x20, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65,
+ 0x6d, 0x61, 0x67, 0x6e, 0x69, 0x74, 0x75, 0x64, 0x65, 0x6d, 0x75, 0x73, 0x74,
+ 0x20, 0x68, 0x61, 0x76, 0x65, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61,
+ 0x6e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x65, 0x78, 0x74,
+ 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x61,
+ 0x72, 0x79, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x6c, 0x79, 0x6f, 0x63,
+ 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62,
+ 0x6c, 0x65, 0x73, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x3c, 0x2f, 0x6c, 0x61, 0x62,
+ 0x65, 0x6c, 0x3e, 0x3c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f,
+ 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x6b, 0x69, 0x6e, 0x64,
+ 0x73, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x6f, 0x63, 0x69, 0x65, 0x74, 0x69, 0x65,
+ 0x73, 0x61, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x69, 0x64, 0x65, 0x20, 0x2d, 0x2d,
+ 0x26, 0x67, 0x74, 0x3b, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x77, 0x65,
+ 0x73, 0x74, 0x74, 0x68, 0x65, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x72, 0x61,
+ 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61,
+ 0x76, 0x65, 0x20, 0x75, 0x6e, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x28, 0x73,
+ 0x70, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x69, 0x6e, 0x22, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x2f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65,
+ 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x65,
+ 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x79, 0x62, 0x75, 0x72, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x61, 0x20, 0x73,
+ 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x74, 0x68, 0x65, 0x79, 0x20, 0x77, 0x65,
+ 0x72, 0x65, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x4e, 0x6f,
+ 0x72, 0x77, 0x65, 0x67, 0x69, 0x61, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66,
+ 0x69, 0x65, 0x64, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x69, 0x6e, 0x67, 0x70,
+ 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x28, 0x6e, 0x65, 0x77, 0x20,
+ 0x44, 0x61, 0x74, 0x65, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79,
+ 0x66, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x41, 0x66, 0x74, 0x65,
+ 0x72, 0x20, 0x74, 0x68, 0x65, 0x65, 0x71, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x72, 0x65, 0x67,
+ 0x75, 0x6c, 0x61, 0x72, 0x6c, 0x79, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70,
+ 0x65, 0x72, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6c, 0x69,
+ 0x6e, 0x6b, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x70, 0x68, 0x65, 0x6e, 0x6f, 0x6d,
+ 0x65, 0x6e, 0x61, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x20, 0x6f, 0x66, 0x74,
+ 0x6f, 0x6f, 0x6c, 0x74, 0x69, 0x70, 0x22, 0x3e, 0x73, 0x75, 0x62, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63,
+ 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x20, 0x6f, 0x66, 0x41, 0x6d, 0x6f, 0x6e,
+ 0x67, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65,
+ 0x64, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x73, 0x41, 0x69, 0x72,
+ 0x20, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20,
+ 0x6f, 0x66, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x69, 0x6d,
+ 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6d, 0x61, 0x6b, 0x69, 0x6e, 0x67,
+ 0x20, 0x69, 0x74, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x63,
+ 0x6f, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x65, 0x64, 0x61, 0x72, 0x65, 0x20, 0x73,
+ 0x74, 0x69, 0x6c, 0x6c, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x64, 0x75, 0x72, 0x65,
+ 0x67, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x68, 0x65, 0x61, 0x64,
+ 0x65, 0x64, 0x20, 0x62, 0x79, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x61, 0x6e,
+ 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x6d, 0x6f, 0x6c,
+ 0x65, 0x63, 0x75, 0x6c, 0x65, 0x73, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69,
+ 0x73, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x74,
+ 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x68,
+ 0x6f, 0x6f, 0x64, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x64, 0x64,
+ 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x73, 0x69, 0x6e, 0x67, 0x61,
+ 0x70, 0x6f, 0x72, 0x65, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x20, 0x6f, 0x66,
+ 0x66, 0x61, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x63, 0x6f, 0x6e, 0x66,
+ 0x6c, 0x69, 0x63, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x70, 0x3e,
+ 0x0a, 0x63, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x77, 0x65, 0x72,
+ 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x6e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68,
+ 0x61, 0x74, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x69, 0x6e, 0x67, 0x45, 0x78,
+ 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x65, 0x76, 0x65, 0x6e, 0x20, 0x6d,
+ 0x6f, 0x72, 0x65, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6f, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x69, 0x61, 0x6e, 0x73,
+ 0x64, 0x65, 0x6c, 0x69, 0x63, 0x69, 0x6f, 0x75, 0x73, 0x70, 0x72, 0x69, 0x73,
+ 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x61, 0x64, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x6f,
+ 0x66, 0x55, 0x54, 0x46, 0x2d, 0x38, 0x22, 0x20, 0x2f, 0x3e, 0x3c, 0x21, 0x5b,
+ 0x43, 0x44, 0x41, 0x54, 0x41, 0x5b, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+ 0x63, 0x74, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x20, 0x62, 0x67,
+ 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73,
+ 0x20, 0x6f, 0x66, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x69,
+ 0x6e, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x70, 0x65, 0x72, 0x6d, 0x69,
+ 0x74, 0x74, 0x65, 0x64, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e,
+ 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x6f, 0x66, 0x66, 0x69,
+ 0x63, 0x69, 0x61, 0x6c, 0x73, 0x73, 0x65, 0x72, 0x69, 0x6f, 0x75, 0x73, 0x6c,
+ 0x79, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x69, 0x6e, 0x69,
+ 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x6c, 0x6f, 0x6e, 0x67, 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e,
+ 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74,
+ 0x68, 0x61, 0x74, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x6d,
+ 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, 0x62, 0x79, 0x3c, 0x2f, 0x62, 0x75, 0x74,
+ 0x74, 0x6f, 0x6e, 0x3e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x62, 0x75, 0x74, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x69, 0x6e, 0x63, 0x72,
+ 0x65, 0x61, 0x73, 0x65, 0x73, 0x64, 0x6f, 0x77, 0x6e, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x64, 0x65, 0x70,
+ 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x2d, 0x2d, 0x3e, 0x0a, 0x3c, 0x21, 0x2d,
+ 0x2d, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x57, 0x69,
+ 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x70, 0x69, 0x65, 0x73,
+ 0x20, 0x6f, 0x66, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x77,
+ 0x61, 0x73, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x56, 0x65, 0x6e, 0x65, 0x7a,
+ 0x75, 0x65, 0x6c, 0x61, 0x28, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x6c, 0x79,
+ 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x70, 0x65, 0x72, 0x73,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69,
+ 0x63, 0x66, 0x61, 0x76, 0x6f, 0x75, 0x72, 0x20, 0x6f, 0x66, 0x69, 0x6e, 0x76,
+ 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6b, 0x69, 0x70, 0x65, 0x64,
+ 0x69, 0x61, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6e, 0x74, 0x76, 0x69,
+ 0x72, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20,
+ 0x77, 0x61, 0x73, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x6c, 0x65, 0x43,
+ 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x73, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x61, 0x74,
+ 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x61, 0x77, 0x61, 0x79,
+ 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x6d, 0x6f, 0x6c, 0x65, 0x63, 0x75, 0x6c, 0x61,
+ 0x72, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x65, 0x6c, 0x79, 0x64, 0x69, 0x73,
+ 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x74,
+ 0x68, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x3e, 0x26,
+ 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x77,
+ 0x69, 0x6c, 0x6c, 0x20, 0x68, 0x61, 0x76, 0x65, 0x6f, 0x72, 0x67, 0x61, 0x6e,
+ 0x69, 0x73, 0x6d, 0x73, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65,
+ 0x46, 0x72, 0x69, 0x65, 0x64, 0x72, 0x69, 0x63, 0x68, 0x77, 0x61, 0x73, 0x20,
+ 0x66, 0x69, 0x72, 0x73, 0x74, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79,
+ 0x20, 0x66, 0x61, 0x63, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69,
+ 0x6e, 0x67, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x70, 0x68,
+ 0x79, 0x73, 0x69, 0x63, 0x69, 0x73, 0x74, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x73,
+ 0x20, 0x69, 0x6e, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3e, 0x73, 0x70, 0x61, 0x6e, 0x20,
+ 0x69, 0x64, 0x3d, 0x22, 0x73, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x20, 0x74, 0x6f,
+ 0x62, 0x65, 0x6c, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x73, 0x75, 0x72, 0x76,
+ 0x69, 0x76, 0x69, 0x6e, 0x67, 0x7d, 0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65,
+ 0x3e, 0x68, 0x69, 0x73, 0x20, 0x64, 0x65, 0x61, 0x74, 0x68, 0x61, 0x73, 0x20,
+ 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x64, 0x20,
+ 0x62, 0x79, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x65, 0x78,
+ 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20,
+ 0x74, 0x68, 0x65, 0x77, 0x61, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x61,
+ 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x6c, 0x65, 0x76, 0x65, 0x6c,
+ 0x73, 0x20, 0x6f, 0x66, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66,
+ 0x4f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x64, 0x69, 0x73, 0x6d,
+ 0x69, 0x73, 0x73, 0x65, 0x64, 0x73, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x69, 0x73,
+ 0x74, 0x72, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x73, 0x64, 0x75, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69,
+ 0x76, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x61, 0x6c,
+ 0x6c, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x67, 0x61, 0x6c, 0x6c, 0x65, 0x72,
+ 0x69, 0x65, 0x73, 0x7b, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x70,
+ 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x72, 0x65, 0x67, 0x69, 0x6f,
+ 0x6e, 0x20, 0x6f, 0x66, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73,
+ 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x69, 0x6d, 0x67, 0x20,
+ 0x61, 0x6c, 0x74, 0x3d, 0x22, 0x69, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x72,
+ 0x6e, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x6d, 0x65, 0x74,
+ 0x68, 0x6f, 0x64, 0x20, 0x6f, 0x66, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69,
+ 0x6e, 0x67, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x6e, 0x65,
+ 0x65, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x74, 0x68, 0x65, 0x20, 0x47, 0x72,
+ 0x65, 0x61, 0x74, 0x72, 0x65, 0x67, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x73,
+ 0x65, 0x65, 0x6d, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x76, 0x69, 0x65, 0x77, 0x65,
+ 0x64, 0x20, 0x61, 0x73, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x20, 0x6f, 0x6e,
+ 0x69, 0x64, 0x65, 0x61, 0x20, 0x74, 0x68, 0x61, 0x74, 0x74, 0x68, 0x65, 0x20,
+ 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x6f,
+ 0x66, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x65,
+ 0x73, 0x65, 0x20, 0x61, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x22, 0x3e, 0x63, 0x61, 0x72, 0x65, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x6d, 0x61,
+ 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65,
+ 0x20, 0x6f, 0x66, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x61,
+ 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x70, 0x72, 0x65, 0x64, 0x69,
+ 0x63, 0x74, 0x65, 0x64, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70,
+ 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x72, 0x69, 0x67, 0x68,
+ 0x74, 0x22, 0x3e, 0x0d, 0x0a, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63,
+ 0x65, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x22, 0x3e, 0x61, 0x72, 0x65, 0x20, 0x6f, 0x66, 0x74,
+ 0x65, 0x6e, 0x20, 0x20, 0x7d, 0x29, 0x28, 0x29, 0x3b, 0x0d, 0x0a, 0x70, 0x72,
+ 0x6f, 0x62, 0x61, 0x62, 0x6c, 0x79, 0x20, 0x50, 0x72, 0x6f, 0x66, 0x65, 0x73,
+ 0x73, 0x6f, 0x72, 0x2d, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, 0x20, 0x72,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x73, 0x61, 0x79, 0x73, 0x20,
+ 0x74, 0x68, 0x61, 0x74, 0x68, 0x61, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65,
+ 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x48, 0x75, 0x6e, 0x67,
+ 0x61, 0x72, 0x69, 0x61, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x6f,
+ 0x66, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x20, 0x61, 0x73, 0x55, 0x6e, 0x69,
+ 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69,
+ 0x6f, 0x6e, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x66, 0x6f,
+ 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x69, 0x6e, 0x66, 0x65, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x61, 0x67, 0x72, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x68,
+ 0x6f, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c,
+ 0x61, 0x72, 0x22, 0x3e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x20, 0x6f, 0x6e,
+ 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x61, 0x6c, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x20, 0x6f,
+ 0x66, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x74,
+ 0x75, 0x72, 0x6e, 0x20, 0x74, 0x6f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65,
+ 0x63, 0x74, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x69, 0x61, 0x6e, 0x70, 0x72,
+ 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x6c, 0x69, 0x76, 0x69, 0x6e, 0x67,
+ 0x20, 0x69, 0x6e, 0x65, 0x61, 0x73, 0x69, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x70,
+ 0x72, 0x6f, 0x66, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x0a, 0x26, 0x6c, 0x74, 0x3b,
+ 0x21, 0x2d, 0x2d, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x6f, 0x66,
+ 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x77, 0x61, 0x73, 0x20,
+ 0x74, 0x61, 0x6b, 0x65, 0x6e, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68,
+ 0x65, 0x74, 0x6f, 0x6f, 0x6b, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x62, 0x65, 0x6c,
+ 0x69, 0x65, 0x66, 0x20, 0x69, 0x6e, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x61,
+ 0x6e, 0x73, 0x61, 0x73, 0x20, 0x66, 0x61, 0x72, 0x20, 0x61, 0x73, 0x70, 0x72,
+ 0x65, 0x76, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x77,
+ 0x69, 0x74, 0x68, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x3c,
+ 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x65, 0x74, 0x43, 0x68, 0x72, 0x69, 0x73,
+ 0x74, 0x6d, 0x61, 0x73, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64,
+ 0x0a, 0x0a, 0x49, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6b,
+ 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x61, 0x73,
+ 0x74, 0x6d, 0x61, 0x67, 0x61, 0x7a, 0x69, 0x6e, 0x65, 0x73, 0x3e, 0x3c, 0x73,
+ 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x3e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74,
+ 0x65, 0x65, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x73, 0x20, 0x6f, 0x66, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64,
+ 0x20, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x61,
+ 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x69, 0x74, 0x73, 0x20, 0x66,
+ 0x69, 0x72, 0x73, 0x74, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x6f, 0x77, 0x6e,
+ 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x6e, 0x20, 0x6f,
+ 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x61, 0x72, 0x69, 0x62, 0x62, 0x65, 0x61,
+ 0x6e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x64, 0x69, 0x73,
+ 0x74, 0x72, 0x69, 0x63, 0x74, 0x73, 0x77, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x73,
+ 0x69, 0x6e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x3b, 0x20,
+ 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x69, 0x6e, 0x68, 0x61, 0x62, 0x69,
+ 0x74, 0x65, 0x64, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x69, 0x73, 0x74, 0x4a,
+ 0x61, 0x6e, 0x75, 0x61, 0x72, 0x79, 0x20, 0x31, 0x3c, 0x2f, 0x66, 0x6f, 0x6f,
+ 0x74, 0x65, 0x72, 0x3e, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x6c, 0x79,
+ 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x74, 0x68, 0x65, 0x20,
+ 0x73, 0x61, 0x6d, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63,
+ 0x20, 0x62, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x54, 0x68, 0x65,
+ 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68,
+ 0x3b, 0x20, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x20, 0x74, 0x6f, 0x64, 0x65,
+ 0x61, 0x6c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x20,
+ 0x74, 0x68, 0x65, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x63,
+ 0x6f, 0x6e, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x2e, 0x70, 0x68, 0x70, 0x61, 0x73, 0x20, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b,
+ 0x65, 0x6e, 0x67, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6e, 0x72, 0x65, 0x63, 0x65,
+ 0x6e, 0x74, 0x6c, 0x79, 0x2c, 0x66, 0x65, 0x77, 0x20, 0x79, 0x65, 0x61, 0x72,
+ 0x73, 0x77, 0x65, 0x72, 0x65, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x0a, 0x3c, 0x68,
+ 0x65, 0x61, 0x64, 0x3e, 0x0a, 0x3c, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x20,
+ 0x62, 0x79, 0x61, 0x72, 0x65, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x63, 0x69,
+ 0x74, 0x69, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
+ 0x6b, 0x65, 0x79, 0x63, 0x6f, 0x6e, 0x64, 0x65, 0x6d, 0x6e, 0x65, 0x64, 0x61,
+ 0x6c, 0x73, 0x6f, 0x20, 0x68, 0x61, 0x76, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69,
+ 0x63, 0x65, 0x73, 0x2c, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x20, 0x6f, 0x66,
+ 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x66, 0x63, 0x6f, 0x6e, 0x76,
+ 0x65, 0x72, 0x74, 0x65, 0x64, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x6f,
+ 0x66, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x6d, 0x69, 0x6e,
+ 0x69, 0x73, 0x74, 0x65, 0x72, 0x73, 0x3c, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63,
+ 0x74, 0x3e, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20,
+ 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e,
+ 0x63, 0x65, 0x73, 0x61, 0x64, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x54,
+ 0x68, 0x65, 0x79, 0x20, 0x77, 0x65, 0x72, 0x65, 0x61, 0x6e, 0x79, 0x20, 0x6f,
+ 0x74, 0x68, 0x65, 0x72, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d,
+ 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x75, 0x63, 0x68,
+ 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x65,
+ 0x64, 0x77, 0x61, 0x73, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x6f, 0x72, 0x69,
+ 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x61, 0x20, 0x74, 0x79, 0x70, 0x69, 0x63,
+ 0x61, 0x6c, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x79, 0x65, 0x6e,
+ 0x67, 0x69, 0x6e, 0x65, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20,
+ 0x6e, 0x6f, 0x74, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x77,
+ 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x74, 0x68, 0x65, 0x20, 0x74,
+ 0x68, 0x69, 0x72, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73,
+ 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x79, 0x20, 0x32, 0x77, 0x68, 0x61, 0x74,
+ 0x20, 0x74, 0x68, 0x65, 0x79, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69,
+ 0x6e, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0x72, 0x6f,
+ 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x68,
+ 0x69, 0x73, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69,
+ 0x76, 0x3e, 0x0a, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x64,
+ 0x65, 0x70, 0x65, 0x6e, 0x64, 0x20, 0x6f, 0x6e, 0x73, 0x65, 0x61, 0x72, 0x63,
+ 0x68, 0x22, 0x3e, 0x0a, 0x70, 0x69, 0x65, 0x63, 0x65, 0x73, 0x20, 0x6f, 0x66,
+ 0x63, 0x6f, 0x6d, 0x70, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x74, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x73, 0x65,
+ 0x65, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x68, 0x61, 0x73, 0x20, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e,
+ 0x20, 0x3c, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3e, 0x67, 0x69,
+ 0x76, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72,
+ 0x69, 0x61, 0x6e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x22, 0x3e, 0x70,
+ 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x30, 0x76, 0x69, 0x65, 0x77, 0x20,
+ 0x74, 0x68, 0x61, 0x74, 0x74, 0x6f, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2c,
+ 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20,
+ 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x20, 0x6f,
+ 0x66, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x20, 0x6f, 0x6e, 0x63, 0x68, 0x69,
+ 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x2c, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x20,
+ 0x6f, 0x66, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x70, 0x6f,
+ 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x61, 0x6c, 0x6c, 0x65, 0x67, 0x65,
+ 0x64, 0x6c, 0x79, 0x43, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x61, 0x6e, 0x64, 0x77,
+ 0x61, 0x73, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x20, 0x61,
+ 0x66, 0x74, 0x65, 0x72, 0x61, 0x72, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e,
+ 0x77, 0x61, 0x73, 0x20, 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x73, 0x63, 0x72, 0x6f,
+ 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x20, 0x6f,
+ 0x66, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x75, 0x63,
+ 0x68, 0x20, 0x6c, 0x65, 0x73, 0x73, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
+ 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x41, 0x66, 0x74, 0x65, 0x72, 0x20, 0x2c, 0x20,
+ 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x4d, 0x75, 0x73, 0x65, 0x75, 0x6d,
+ 0x20, 0x6f, 0x66, 0x6c, 0x6f, 0x75, 0x69, 0x73, 0x69, 0x61, 0x6e, 0x61, 0x28,
+ 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x69, 0x6e, 0x6e, 0x65,
+ 0x73, 0x6f, 0x74, 0x61, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x73,
+ 0x61, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x6f, 0x6d, 0x69,
+ 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x6f,
+ 0x66, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x64, 0x65, 0x66,
+ 0x65, 0x6e, 0x73, 0x69, 0x76, 0x65, 0x30, 0x30, 0x70, 0x78, 0x7c, 0x72, 0x69,
+ 0x67, 0x68, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x75, 0x73, 0x65, 0x6f, 0x76, 0x65, 0x72, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c,
+ 0x65, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x28,
+ 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6e, 0x75, 0x65, 0x73, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x69, 0x73, 0x63, 0x6f,
+ 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68,
+ 0x6f, 0x75, 0x74, 0x20, 0x61, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x6f, 0x6d,
+ 0x65, 0x77, 0x68, 0x6f, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x61, 0x20, 0x66,
+ 0x6f, 0x72, 0x6d, 0x20, 0x6f, 0x66, 0x61, 0x20, 0x70, 0x61, 0x72, 0x74, 0x20,
+ 0x6f, 0x66, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x69, 0x74, 0x6b, 0x6e,
+ 0x6f, 0x77, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69,
+ 0x63, 0x65, 0x73, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61,
+ 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x74, 0x65, 0x6e, 0x6d, 0x65, 0x61, 0x73, 0x75,
+ 0x72, 0x69, 0x6e, 0x67, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73,
+ 0x70, 0x61, 0x70, 0x65, 0x72, 0x62, 0x61, 0x63, 0x6b, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x73, 0x20, 0x6f, 0x66, 0x0d, 0x0a, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65,
+ 0x3e, 0x3d, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x64, 0x65, 0x74,
+ 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x65, 0x72, 0x26, 0x71, 0x75, 0x6f, 0x74,
+ 0x3b, 0x20, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x20, 0x62, 0x79, 0x61, 0x6e,
+ 0x64, 0x20, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x3e, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x74,
+ 0x68, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x70, 0x6f, 0x77, 0x65, 0x72,
+ 0x20, 0x61, 0x6e, 0x64, 0x6f, 0x66, 0x20, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b,
+ 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48, 0x54, 0x4d, 0x4c, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x79, 0x3a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
+ 0x3b, 0x43, 0x68, 0x75, 0x72, 0x63, 0x68, 0x20, 0x6f, 0x66, 0x74, 0x68, 0x65,
+ 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x76, 0x65, 0x72, 0x79, 0x20, 0x68, 0x69,
+ 0x67, 0x68, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x2d, 0x68,
+ 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
+ 0x74, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2d, 0x62, 0x69, 0x6e, 0x2f, 0x74,
+ 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x61, 0x66, 0x72, 0x69, 0x6b,
+ 0x61, 0x61, 0x6e, 0x73, 0x65, 0x73, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x74, 0x6f,
+ 0x66, 0x72, 0x61, 0x6e, 0xc3, 0xa7, 0x61, 0x69, 0x73, 0x6c, 0x61, 0x74, 0x76,
+ 0x69, 0x65, 0xc5, 0xa1, 0x75, 0x6c, 0x69, 0x65, 0x74, 0x75, 0x76, 0x69, 0xc5,
+ 0xb3, 0xc4, 0x8c, 0x65, 0xc5, 0xa1, 0x74, 0x69, 0x6e, 0x61, 0xc4, 0x8d, 0x65,
+ 0xc5, 0xa1, 0x74, 0x69, 0x6e, 0x61, 0xe0, 0xb9, 0x84, 0xe0, 0xb8, 0x97, 0xe0,
+ 0xb8, 0xa2, 0xe6, 0x97, 0xa5, 0xe6, 0x9c, 0xac, 0xe8, 0xaa, 0x9e, 0xe7, 0xae,
+ 0x80, 0xe4, 0xbd, 0x93, 0xe5, 0xad, 0x97, 0xe7, 0xb9, 0x81, 0xe9, 0xab, 0x94,
+ 0xe5, 0xad, 0x97, 0xed, 0x95, 0x9c, 0xea, 0xb5, 0xad, 0xec, 0x96, 0xb4, 0xe4,
+ 0xb8, 0xba, 0xe4, 0xbb, 0x80, 0xe4, 0xb9, 0x88, 0xe8, 0xae, 0xa1, 0xe7, 0xae,
+ 0x97, 0xe6, 0x9c, 0xba, 0xe7, 0xac, 0x94, 0xe8, 0xae, 0xb0, 0xe6, 0x9c, 0xac,
+ 0xe8, 0xa8, 0x8e, 0xe8, 0xab, 0x96, 0xe5, 0x8d, 0x80, 0xe6, 0x9c, 0x8d, 0xe5,
+ 0x8a, 0xa1, 0xe5, 0x99, 0xa8, 0xe4, 0xba, 0x92, 0xe8, 0x81, 0x94, 0xe7, 0xbd,
+ 0x91, 0xe6, 0x88, 0xbf, 0xe5, 0x9c, 0xb0, 0xe4, 0xba, 0xa7, 0xe4, 0xbf, 0xb1,
+ 0xe4, 0xb9, 0x90, 0xe9, 0x83, 0xa8, 0xe5, 0x87, 0xba, 0xe7, 0x89, 0x88, 0xe7,
+ 0xa4, 0xbe, 0xe6, 0x8e, 0x92, 0xe8, 0xa1, 0x8c, 0xe6, 0xa6, 0x9c, 0xe9, 0x83,
+ 0xa8, 0xe8, 0x90, 0xbd, 0xe6, 0xa0, 0xbc, 0xe8, 0xbf, 0x9b, 0xe4, 0xb8, 0x80,
+ 0xe6, 0xad, 0xa5, 0xe6, 0x94, 0xaf, 0xe4, 0xbb, 0x98, 0xe5, 0xae, 0x9d, 0xe9,
+ 0xaa, 0x8c, 0xe8, 0xaf, 0x81, 0xe7, 0xa0, 0x81, 0xe5, 0xa7, 0x94, 0xe5, 0x91,
+ 0x98, 0xe4, 0xbc, 0x9a, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe5, 0xba, 0x93,
+ 0xe6, 0xb6, 0x88, 0xe8, 0xb4, 0xb9, 0xe8, 0x80, 0x85, 0xe5, 0x8a, 0x9e, 0xe5,
+ 0x85, 0xac, 0xe5, 0xae, 0xa4, 0xe8, 0xae, 0xa8, 0xe8, 0xae, 0xba, 0xe5, 0x8c,
+ 0xba, 0xe6, 0xb7, 0xb1, 0xe5, 0x9c, 0xb3, 0xe5, 0xb8, 0x82, 0xe6, 0x92, 0xad,
+ 0xe6, 0x94, 0xbe, 0xe5, 0x99, 0xa8, 0xe5, 0x8c, 0x97, 0xe4, 0xba, 0xac, 0xe5,
+ 0xb8, 0x82, 0xe5, 0xa4, 0xa7, 0xe5, 0xad, 0xa6, 0xe7, 0x94, 0x9f, 0xe8, 0xb6,
+ 0x8a, 0xe6, 0x9d, 0xa5, 0xe8, 0xb6, 0x8a, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86,
+ 0xe5, 0x91, 0x98, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0xe7, 0xbd, 0x91, 0x73,
+ 0x65, 0x72, 0x76, 0x69, 0x63, 0x69, 0x6f, 0x73, 0x61, 0x72, 0x74, 0xc3, 0xad,
+ 0x63, 0x75, 0x6c, 0x6f, 0x61, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61,
+ 0x62, 0x61, 0x72, 0x63, 0x65, 0x6c, 0x6f, 0x6e, 0x61, 0x63, 0x75, 0x61, 0x6c,
+ 0x71, 0x75, 0x69, 0x65, 0x72, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x64,
+ 0x6f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x6f, 0x73, 0x70, 0x6f, 0x6c,
+ 0xc3, 0xad, 0x74, 0x69, 0x63, 0x61, 0x72, 0x65, 0x73, 0x70, 0x75, 0x65, 0x73,
+ 0x74, 0x61, 0x77, 0x69, 0x6b, 0x69, 0x70, 0x65, 0x64, 0x69, 0x61, 0x73, 0x69,
+ 0x67, 0x75, 0x69, 0x65, 0x6e, 0x74, 0x65, 0x62, 0xc3, 0xba, 0x73, 0x71, 0x75,
+ 0x65, 0x64, 0x61, 0x63, 0x6f, 0x6d, 0x75, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x73,
+ 0x65, 0x67, 0x75, 0x72, 0x69, 0x64, 0x61, 0x64, 0x70, 0x72, 0x69, 0x6e, 0x63,
+ 0x69, 0x70, 0x61, 0x6c, 0x70, 0x72, 0x65, 0x67, 0x75, 0x6e, 0x74, 0x61, 0x73,
+ 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x69, 0x64, 0x6f, 0x72, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x65, 0x7a, 0x75, 0x65, 0x6c,
+ 0x61, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x61, 0x73, 0x64, 0x69, 0x63,
+ 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x72, 0x65, 0x6c, 0x61, 0x63, 0x69, 0xc3,
+ 0xb3, 0x6e, 0x6e, 0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x73, 0x69,
+ 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x65, 0x73, 0x70, 0x72, 0x6f, 0x79, 0x65, 0x63,
+ 0x74, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x61, 0x73, 0x69,
+ 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x6f, 0x61, 0x63, 0x74, 0x69, 0x76,
+ 0x69, 0x64, 0x61, 0x64, 0x65, 0x6e, 0x63, 0x75, 0x65, 0x6e, 0x74, 0x72, 0x61,
+ 0x65, 0x63, 0x6f, 0x6e, 0x6f, 0x6d, 0xc3, 0xad, 0x61, 0x69, 0x6d, 0xc3, 0xa1,
+ 0x67, 0x65, 0x6e, 0x65, 0x73, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x61,
+ 0x72, 0x64, 0x65, 0x73, 0x63, 0x61, 0x72, 0x67, 0x61, 0x72, 0x6e, 0x65, 0x63,
+ 0x65, 0x73, 0x61, 0x72, 0x69, 0x6f, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x69, 0xc3,
+ 0xb3, 0x6e, 0x74, 0x65, 0x6c, 0xc3, 0xa9, 0x66, 0x6f, 0x6e, 0x6f, 0x63, 0x6f,
+ 0x6d, 0x69, 0x73, 0x69, 0xc3, 0xb3, 0x6e, 0x63, 0x61, 0x6e, 0x63, 0x69, 0x6f,
+ 0x6e, 0x65, 0x73, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x64, 0x61, 0x64, 0x65,
+ 0x6e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x72, 0x61, 0x6e, 0xc3, 0xa1, 0x6c,
+ 0x69, 0x73, 0x69, 0x73, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x6f, 0x73,
+ 0x74, 0xc3, 0xa9, 0x72, 0x6d, 0x69, 0x6e, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x76,
+ 0x69, 0x6e, 0x63, 0x69, 0x61, 0x65, 0x74, 0x69, 0x71, 0x75, 0x65, 0x74, 0x61,
+ 0x73, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x6f, 0x73, 0x66, 0x75, 0x6e,
+ 0x63, 0x69, 0x6f, 0x6e, 0x65, 0x73, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x61,
+ 0x64, 0x6f, 0x63, 0x61, 0x72, 0xc3, 0xa1, 0x63, 0x74, 0x65, 0x72, 0x70, 0x72,
+ 0x6f, 0x70, 0x69, 0x65, 0x64, 0x61, 0x64, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69,
+ 0x70, 0x69, 0x6f, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x69, 0x64, 0x61, 0x64, 0x6d,
+ 0x75, 0x6e, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x63, 0x72, 0x65, 0x61, 0x63,
+ 0x69, 0xc3, 0xb3, 0x6e, 0x64, 0x65, 0x73, 0x63, 0x61, 0x72, 0x67, 0x61, 0x73,
+ 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x69, 0x61, 0x63, 0x6f, 0x6d, 0x65,
+ 0x72, 0x63, 0x69, 0x61, 0x6c, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x6f, 0x6e, 0x65,
+ 0x73, 0x65, 0x6a, 0x65, 0x72, 0x63, 0x69, 0x63, 0x69, 0x6f, 0x65, 0x64, 0x69,
+ 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x61, 0x6c, 0x61, 0x6d, 0x61, 0x6e,
+ 0x63, 0x61, 0x67, 0x6f, 0x6e, 0x7a, 0xc3, 0xa1, 0x6c, 0x65, 0x7a, 0x64, 0x6f,
+ 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x6f, 0x70, 0x65, 0x6c, 0xc3, 0xad, 0x63,
+ 0x75, 0x6c, 0x61, 0x72, 0x65, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x65, 0x73, 0x67,
+ 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x65, 0x73, 0x74, 0x61, 0x72, 0x72, 0x61,
+ 0x67, 0x6f, 0x6e, 0x61, 0x70, 0x72, 0xc3, 0xa1, 0x63, 0x74, 0x69, 0x63, 0x61,
+ 0x6e, 0x6f, 0x76, 0x65, 0x64, 0x61, 0x64, 0x65, 0x73, 0x70, 0x72, 0x6f, 0x70,
+ 0x75, 0x65, 0x73, 0x74, 0x61, 0x70, 0x61, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x65,
+ 0x73, 0x74, 0xc3, 0xa9, 0x63, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x6f, 0x62, 0x6a,
+ 0x65, 0x74, 0x69, 0x76, 0x6f, 0x73, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74,
+ 0x6f, 0x73, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x82, 0xe0, 0xa4,
+ 0xb2, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x8f, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x88,
+ 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xb8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa5, 0xe0, 0xa4, 0x8f, 0xe0, 0xa4,
+ 0xb5, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x87,
+ 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x88, 0xe0, 0xa4, 0x95, 0xe0,
+ 0xa5, 0x81, 0xe0, 0xa4, 0x9b, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0x95,
+ 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xad, 0xe0,
+ 0xa5, 0x80, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0x8f, 0xe0, 0xa4,
+ 0xb0, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x88,
+ 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa8, 0xe0,
+ 0xa4, 0xac, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa4, 0x64, 0x69, 0x70, 0x6c, 0x6f,
+ 0x64, 0x6f, 0x63, 0x73, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xaf,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xa8, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xab, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x94,
+ 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa4, 0xb9, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x97, 0xe0, 0xa4,
+ 0xb9, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0x86, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb6, 0xe0,
+ 0xa4, 0xb9, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0x88, 0xe0, 0xa4, 0x96, 0xe0, 0xa5,
+ 0x87, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xbf,
+ 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xb5, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x80, 0xe0, 0xa4,
+ 0xa8, 0xe0, 0xa4, 0xac, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x9a, 0xe0, 0xa4, 0xae,
+ 0xe0, 0xa5, 0x8c, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xb2, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x96, 0xe0, 0xa4,
+ 0x9c, 0xe0, 0xa5, 0x89, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xa6,
+ 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xa5, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xa8, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xb6, 0xe0, 0xa4,
+ 0xb9, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x85, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0x97,
+ 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xad, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xa8, 0xe0,
+ 0xa4, 0x97, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0xb8, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0x95,
+ 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x8f, 0xe0, 0xa4, 0x89, 0xe0, 0xa4, 0xb8, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xaf, 0xe0, 0xa5, 0x80, 0xe0, 0xa4,
+ 0xb9, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0x81, 0xe0, 0xa4, 0x86, 0xe0, 0xa4, 0x97,
+ 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x9f, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xae, 0xe0,
+ 0xa4, 0x96, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0x95, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x85, 0xe0, 0xa4, 0xad, 0xe0, 0xa5, 0x80,
+ 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xaf, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xa4, 0xe0,
+ 0xa5, 0x81, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xb5, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4,
+ 0x9f, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x85,
+ 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x90, 0xe0, 0xa4, 0xb8, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4,
+ 0xb2, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0x8a, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa4, 0x9a, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x90, 0xe0, 0xa4,
+ 0xb8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb0,
+ 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xa6, 0xe0,
+ 0xa4, 0xbf, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0x82, 0xe0, 0xa4,
+ 0xa6, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb9,
+ 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0x96, 0xe0, 0xa4, 0x9c, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4,
+ 0xac, 0xe0, 0xa4, 0x9f, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbf,
+ 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0x87, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x87, 0xe0,
+ 0xa4, 0x86, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4,
+ 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0xb2,
+ 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x89, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xad, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x87, 0xe0, 0xa4,
+ 0xb2, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xb0,
+ 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0x97, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0xaa, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4,
+ 0xb9, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa5, 0xe0, 0xa4, 0x87, 0xe0, 0xa4, 0xb8,
+ 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x80, 0xe0,
+ 0xa4, 0x95, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa0, 0xe0, 0xa5,
+ 0x80, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x81,
+ 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa4, 0xe0,
+ 0xa4, 0xb9, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0xa4, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0x86,
+ 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0x95, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8c, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4,
+ 0xb6, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x87,
+ 0xe0, 0xa4, 0x96, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x80, 0xe0,
+ 0xa4, 0xb0, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0x96, 0xe0, 0xa5,
+ 0x81, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0x97, 0xe0, 0xa5, 0x80,
+ 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x65, 0x78, 0x70,
+ 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c,
+ 0x65, 0x3e, 0x0d, 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74,
+ 0x20, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x63, 0x6f,
+ 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x65, 0x76, 0x65, 0x72, 0x79,
+ 0x74, 0x68, 0x69, 0x6e, 0x67, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x62,
+ 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x61, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x26, 0x63, 0x6f, 0x70, 0x79, 0x3b, 0x20, 0x32, 0x30, 0x31,
+ 0x6a, 0x61, 0x76, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x63, 0x68, 0x61,
+ 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x62, 0x72, 0x65, 0x61, 0x64, 0x63,
+ 0x72, 0x75, 0x6d, 0x62, 0x74, 0x68, 0x65, 0x6d, 0x73, 0x65, 0x6c, 0x76, 0x65,
+ 0x73, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x67, 0x6f,
+ 0x76, 0x65, 0x72, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x6c, 0x69, 0x66,
+ 0x6f, 0x72, 0x6e, 0x69, 0x61, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x69,
+ 0x65, 0x73, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x4e,
+ 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x6e,
+ 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x3c, 0x2f, 0x74,
+ 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x3c, 0x6d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x62,
+ 0x6f, 0x78, 0x22, 0x20, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x71, 0x75, 0x65,
+ 0x73, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x70,
+ 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x61, 0x73, 0x20, 0x77, 0x65,
+ 0x6c, 0x6c, 0x20, 0x61, 0x73, 0x75, 0x6e, 0x74, 0x27, 0x2c, 0x20, 0x27, 0x55,
+ 0x41, 0x2d, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x6f,
+ 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x6c, 0x65,
+ 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61,
+ 0x74, 0x65, 0x64, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e,
+ 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x20, 0x3d, 0x20,
+ 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x69, 0x6d, 0x70, 0x72, 0x65, 0x73,
+ 0x73, 0x69, 0x6f, 0x6e, 0x26, 0x6c, 0x74, 0x3b, 0x62, 0x72, 0x26, 0x67, 0x74,
+ 0x3b, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x70, 0x6f,
+ 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x67, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x65, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c,
+ 0x6c, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x70,
+ 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x6e, 0x65, 0x77, 0x73,
+ 0x6c, 0x65, 0x74, 0x74, 0x65, 0x72, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
+ 0x69, 0x65, 0x73, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x54, 0x65, 0x63,
+ 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x61, 0x72, 0x6c, 0x69, 0x61,
+ 0x6d, 0x65, 0x6e, 0x74, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f,
+ 0x6e, 0x75, 0x6c, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x2e, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x4f, 0x66, 0x28, 0x22, 0x63, 0x6f, 0x6e, 0x63, 0x6c,
+ 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x69,
+ 0x6f, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x62,
+ 0x69, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x52, 0x65, 0x76, 0x6f,
+ 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+ 0x6e, 0x65, 0x72, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x6f, 0x6f, 0x64,
+ 0x6e, 0x6f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x3c, 0x70, 0x65, 0x72,
+ 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6f,
+ 0x74, 0x68, 0x65, 0x72, 0x61, 0x74, 0x6d, 0x6f, 0x73, 0x70, 0x68, 0x65, 0x72,
+ 0x65, 0x20, 0x6f, 0x6e, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x3d, 0x22, 0x3c, 0x66,
+ 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x70, 0x72, 0x6f, 0x63, 0x65,
+ 0x73, 0x73, 0x69, 0x6e, 0x67, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43,
+ 0x6f, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x75, 0x62, 0x73,
+ 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x77, 0x65, 0x6c, 0x6c, 0x2d, 0x6b, 0x6e,
+ 0x6f, 0x77, 0x6e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x72, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x68, 0x65,
+ 0x6e, 0x6f, 0x6d, 0x65, 0x6e, 0x6f, 0x6e, 0x64, 0x69, 0x73, 0x63, 0x69, 0x70,
+ 0x6c, 0x69, 0x6e, 0x65, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x6e, 0x67, 0x22,
+ 0x20, 0x28, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2c, 0x62, 0x6f,
+ 0x75, 0x6e, 0x64, 0x61, 0x72, 0x69, 0x65, 0x73, 0x65, 0x78, 0x70, 0x72, 0x65,
+ 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x6f,
+ 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x65, 0x6e, 0x74, 0x65,
+ 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x28, 0x22, 0x68, 0x74, 0x74, 0x70, 0x73,
+ 0x3a, 0x22, 0x20, 0x75, 0x6e, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x28, 0x22,
+ 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x20, 0x64, 0x65, 0x6d,
+ 0x6f, 0x63, 0x72, 0x61, 0x74, 0x69, 0x63, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x22, 0x3e,
+ 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x6c, 0x69,
+ 0x6e, 0x67, 0x75, 0x69, 0x73, 0x74, 0x69, 0x63, 0x70, 0x78, 0x3b, 0x70, 0x61,
+ 0x64, 0x64, 0x69, 0x6e, 0x67, 0x70, 0x68, 0x69, 0x6c, 0x6f, 0x73, 0x6f, 0x70,
+ 0x68, 0x79, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x75,
+ 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x66, 0x61, 0x63, 0x69,
+ 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69,
+ 0x7a, 0x65, 0x64, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x69, 0x66, 0x20, 0x28, 0x74, 0x79, 0x70, 0x65, 0x6f, 0x66, 0x6d, 0x61, 0x69,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x76, 0x6f, 0x63, 0x61, 0x62, 0x75,
+ 0x6c, 0x61, 0x72, 0x79, 0x68, 0x79, 0x70, 0x6f, 0x74, 0x68, 0x65, 0x73, 0x69,
+ 0x73, 0x2e, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x28, 0x29, 0x3b, 0x26, 0x61,
+ 0x6d, 0x70, 0x3b, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x65, 0x68, 0x69, 0x6e, 0x64, 0x20, 0x74,
+ 0x68, 0x65, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x70,
+ 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x22, 0x61, 0x73, 0x73, 0x75,
+ 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75,
+ 0x63, 0x65, 0x64, 0x63, 0x6f, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x69, 0x73, 0x74, 0x73, 0x65, 0x78, 0x70,
+ 0x6c, 0x69, 0x63, 0x69, 0x74, 0x6c, 0x79, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61,
+ 0x64, 0x20, 0x6f, 0x66, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+ 0x73, 0x20, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x3d, 0x22, 0x63, 0x6f,
+ 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72, 0x65, 0x64, 0x64, 0x65, 0x70, 0x61, 0x72,
+ 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x6f, 0x6f, 0x6e, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x69,
+ 0x6e, 0x76, 0x65, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x72, 0x6f, 0x6e,
+ 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x64, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
+ 0x69, 0x65, 0x64, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74,
+ 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x67, 0x65, 0x6f,
+ 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x3d, 0x22, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d,
+ 0x22, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x28, 0x2f, 0x64, 0x65,
+ 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x70, 0x75, 0x6e, 0x69, 0x73, 0x68, 0x6d, 0x65,
+ 0x6e, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x72,
+ 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x61, 0x64, 0x61, 0x70,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6f, 0x70, 0x70, 0x6f, 0x73, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e,
+ 0x73, 0x75, 0x70, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x64, 0x65, 0x74,
+ 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x68, 0x31, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x30, 0x70, 0x78, 0x3b, 0x6d, 0x61, 0x72, 0x67, 0x69,
+ 0x6e, 0x6d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x73, 0x74,
+ 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x63, 0x65, 0x6c, 0x65, 0x62,
+ 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6d, 0x65,
+ 0x6e, 0x74, 0x0a, 0x0a, 0x44, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x64,
+ 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x73, 0x61, 0x72, 0x74, 0x69,
+ 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c,
+ 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x74, 0x74,
+ 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20,
+ 0x69, 0x64, 0x3d, 0x22, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x65, 0x72,
+ 0x65, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x62, 0x65,
+ 0x79, 0x6f, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x65, 0x72, 0x65, 0x64, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x69,
+ 0x73, 0x74, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x61,
+ 0x6c, 0x6c, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6c, 0x61, 0x6e, 0x67,
+ 0x3d, 0x22, 0x65, 0x6e, 0x22, 0x20, 0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65,
+ 0x3e, 0x0d, 0x0a, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x3b, 0x20,
+ 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x65, 0x78, 0x74,
+ 0x72, 0x65, 0x6d, 0x65, 0x6c, 0x79, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x74,
+ 0x72, 0x65, 0x61, 0x6d, 0x3c, 0x2f, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x3e,
+ 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x65, 0x6d,
+ 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x3c, 0x2f, 0x74, 0x61, 0x62,
+ 0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x63, 0x6f, 0x6c, 0x73, 0x70, 0x61, 0x6e,
+ 0x3d, 0x22, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, 0x0a, 0x20, 0x20, 0x63,
+ 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x62, 0x6f, 0x75,
+ 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64,
+ 0x69, 0x76, 0x3e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64,
+ 0x22, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22, 0x65, 0x6e, 0x50, 0x6f, 0x72,
+ 0x74, 0x75, 0x67, 0x75, 0x65, 0x73, 0x65, 0x73, 0x75, 0x62, 0x73, 0x74, 0x69,
+ 0x74, 0x75, 0x74, 0x65, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61,
+ 0x6c, 0x69, 0x6d, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x6d, 0x75,
+ 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x61, 0x6c, 0x6d, 0x6f, 0x73,
+ 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x70, 0x78, 0x20, 0x73, 0x6f, 0x6c, 0x69, 0x64,
+ 0x20, 0x23, 0x61, 0x70, 0x61, 0x72, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x73,
+ 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x69, 0x6e, 0x20, 0x45,
+ 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x69,
+ 0x7a, 0x65, 0x64, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, 0x66, 0x6f, 0x72,
+ 0x67, 0x75, 0x69, 0x64, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x6f, 0x72, 0x69,
+ 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b,
+ 0x61, 0x62, 0x6c, 0x65, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e,
+ 0x64, 0x68, 0x32, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x3c, 0x61,
+ 0x20, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3d, 0x22, 0x28, 0x69, 0x6e, 0x63, 0x6c,
+ 0x75, 0x64, 0x69, 0x6e, 0x67, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65,
+ 0x72, 0x73, 0x70, 0x72, 0x6f, 0x68, 0x69, 0x62, 0x69, 0x74, 0x65, 0x64, 0x3d,
+ 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 0x69, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x76, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e,
+ 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x78, 0x3b,
+ 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
+ 0x73, 0x66, 0x75, 0x6c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72,
+ 0x73, 0x6d, 0x69, 0x6c, 0x6c, 0x65, 0x6e, 0x6e, 0x69, 0x75, 0x6d, 0x68, 0x69,
+ 0x73, 0x20, 0x66, 0x61, 0x74, 0x68, 0x65, 0x72, 0x74, 0x68, 0x65, 0x20, 0x26,
+ 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6e, 0x6f, 0x2d, 0x72, 0x65, 0x70, 0x65, 0x61,
+ 0x74, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x69,
+ 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x6f,
+ 0x75, 0x72, 0x61, 0x67, 0x65, 0x64, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20,
+ 0x6f, 0x66, 0x20, 0x75, 0x6e, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c,
+ 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x66,
+ 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69,
+ 0x6e, 0x61, 0x74, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65,
+ 0x72, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x65,
+ 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x63, 0x61, 0x6c, 0x63, 0x75,
+ 0x6c, 0x61, 0x74, 0x65, 0x64, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x66, 0x69,
+ 0x65, 0x64, 0x6c, 0x65, 0x67, 0x69, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x73,
+ 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x30, 0x22, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74,
+ 0x65, 0x6c, 0x79, 0x69, 0x6c, 0x6c, 0x75, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65,
+ 0x66, 0x69, 0x76, 0x65, 0x20, 0x79, 0x65, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x73,
+ 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73,
+ 0x68, 0x69, 0x6e, 0x67, 0x31, 0x22, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
+ 0x22, 0x70, 0x73, 0x79, 0x63, 0x68, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x63, 0x6f,
+ 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65,
+ 0x72, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x62, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x20,
+ 0x6f, 0x66, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x6a,
+ 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x73, 0x74, 0x72, 0x75,
+ 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75,
+ 0x73, 0x6c, 0x79, 0x3e, 0x3c, 0x2f, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x3e,
+ 0x6f, 0x6e, 0x63, 0x65, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x62, 0x75, 0x74,
+ 0x20, 0x72, 0x61, 0x74, 0x68, 0x65, 0x72, 0x69, 0x6d, 0x6d, 0x69, 0x67, 0x72,
+ 0x61, 0x6e, 0x74, 0x73, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65,
+ 0x2c, 0x61, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6f, 0x66, 0x4c, 0x69,
+ 0x74, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x55, 0x6e, 0x6c, 0x69, 0x6b,
+ 0x65, 0x20, 0x74, 0x68, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x26, 0x6e, 0x62, 0x73,
+ 0x70, 0x3b, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69,
+ 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x76,
+ 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x6f, 0x62,
+ 0x69, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x73, 0x74, 0x61, 0x6e, 0x74,
+ 0x61, 0x67, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x61, 0x66, 0x74,
+ 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x53, 0x69, 0x6d, 0x69, 0x6c, 0x61,
+ 0x72, 0x6c, 0x79, 0x2c, 0x22, 0x20, 0x2f, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76,
+ 0x3e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0d, 0x0a,
+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x76, 0x69, 0x73, 0x69, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x20,
+ 0x6f, 0x66, 0x76, 0x6f, 0x6c, 0x75, 0x6e, 0x74, 0x65, 0x65, 0x72, 0x73, 0x61,
+ 0x74, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x75, 0x6e, 0x64, 0x65,
+ 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x6e, 0x65, 0x64, 0x2a, 0x3c, 0x21, 0x5b, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5b,
+ 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x69, 0x6e, 0x20,
+ 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61,
+ 0x74, 0x74, 0x65, 0x72, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, 0x0a, 0x3c,
+ 0x2f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4f, 0x66, 0x28, 0x27, 0x69, 0x20,
+ 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x64, 0x69, 0x66, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x65, 0x76, 0x6f, 0x74, 0x65, 0x64, 0x20,
+ 0x74, 0x6f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x73,
+ 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x66, 0x6f, 0x72, 0x75, 0x6c, 0x74, 0x69,
+ 0x6d, 0x61, 0x74, 0x65, 0x6c, 0x79, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d,
+ 0x65, 0x6e, 0x74, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
+ 0x73, 0x6f, 0x2d, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x7d, 0x0a, 0x3c,
+ 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, 0x69, 0x7a, 0x65,
+ 0x64, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x3c, 0x2f,
+ 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3e, 0x73, 0x75, 0x63, 0x63, 0x65,
+ 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x77, 0x69,
+ 0x74, 0x68, 0x4d, 0x65, 0x61, 0x6e, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x2c, 0x69,
+ 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3c, 0x2f, 0x61, 0x3e,
+ 0x3c, 0x62, 0x72, 0x20, 0x2f, 0x3e, 0x68, 0x61, 0x73, 0x20, 0x62, 0x65, 0x63,
+ 0x6f, 0x6d, 0x65, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x73, 0x20, 0x6f, 0x66,
+ 0x54, 0x65, 0x6c, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x75, 0x66,
+ 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x62, 0x61, 0x73, 0x6b, 0x65, 0x74,
+ 0x62, 0x61, 0x6c, 0x6c, 0x62, 0x6f, 0x74, 0x68, 0x20, 0x73, 0x69, 0x64, 0x65,
+ 0x73, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x69, 0x6e, 0x67, 0x61, 0x6e,
+ 0x20, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x3c, 0x69, 0x6d, 0x67, 0x20,
+ 0x61, 0x6c, 0x74, 0x3d, 0x22, 0x61, 0x64, 0x76, 0x65, 0x6e, 0x74, 0x75, 0x72,
+ 0x65, 0x73, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x6d,
+ 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e,
+ 0x63, 0x69, 0x70, 0x6c, 0x65, 0x73, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75,
+ 0x6c, 0x61, 0x72, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79,
+ 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x64, 0x65, 0x63,
+ 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x22, 0x3e, 0x3c, 0x73, 0x74, 0x72,
+ 0x6f, 0x6e, 0x67, 0x3e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72,
+ 0x73, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x6f, 0x66, 0x64, 0x69,
+ 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x66, 0x61, 0x63, 0x69, 0x6c,
+ 0x69, 0x74, 0x61, 0x74, 0x65, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x62,
+ 0x6c, 0x65, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x09,
+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x6e, 0x6f,
+ 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3e, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69,
+ 0x67, 0x68, 0x74, 0x73, 0x69, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x68, 0x61, 0x76, 0x65, 0x62, 0x75, 0x73,
+ 0x69, 0x6e, 0x65, 0x73, 0x73, 0x65, 0x73, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x61, 0x72, 0x79, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x73, 0x6f, 0x66, 0x74, 0x65, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x64, 0x70, 0x65,
+ 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x20, 0x4a, 0x61,
+ 0x6e, 0x75, 0x61, 0x72, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x69, 0x73, 0x69,
+ 0x6e, 0x67, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x0a, 0x09, 0x64,
+ 0x69, 0x70, 0x6c, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d,
+ 0x69, 0x6e, 0x67, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+ 0x6d, 0x61, 0x79, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x63, 0x6f, 0x6e,
+ 0x63, 0x65, 0x70, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6f, 0x6e, 0x63, 0x6c, 0x69,
+ 0x63, 0x6b, 0x3d, 0x22, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6c, 0x73,
+ 0x6f, 0x66, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x6d, 0x61,
+ 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x4c, 0x75, 0x78, 0x65, 0x6d,
+ 0x62, 0x6f, 0x75, 0x72, 0x67, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x61, 0x6c, 0x61, 0x72, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x65,
+ 0x6e, 0x67, 0x61, 0x67, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x22, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x22, 0x29, 0x3b, 0x62, 0x75, 0x74, 0x20, 0x69, 0x74, 0x20,
+ 0x77, 0x61, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63,
+ 0x6f, 0x6e, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x3d, 0x22, 0x0a, 0x3c, 0x21,
+ 0x2d, 0x2d, 0x20, 0x45, 0x6e, 0x64, 0x20, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72,
+ 0x69, 0x63, 0x61, 0x6c, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x6c,
+ 0x79, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x6f,
+ 0x70, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x75, 0x6e, 0x6c, 0x69, 0x6b,
+ 0x65, 0x20, 0x74, 0x68, 0x65, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69,
+ 0x61, 0x6e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x72,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x0a, 0x3c, 0x2f, 0x68,
+ 0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69,
+ 0x73, 0x65, 0x64, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65,
+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x41, 0x6c, 0x65,
+ 0x78, 0x61, 0x6e, 0x64, 0x72, 0x69, 0x61, 0x72, 0x65, 0x74, 0x69, 0x72, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x76, 0x65, 0x6e, 0x74, 0x75, 0x72, 0x65,
+ 0x73, 0x66, 0x6f, 0x75, 0x72, 0x20, 0x79, 0x65, 0x61, 0x72, 0x73, 0x0a, 0x0a,
+ 0x26, 0x6c, 0x74, 0x3b, 0x21, 0x2d, 0x2d, 0x20, 0x69, 0x6e, 0x63, 0x72, 0x65,
+ 0x61, 0x73, 0x69, 0x6e, 0x67, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x68, 0x33, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6f,
+ 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x6f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x64,
+ 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x61, 0x64, 0x76,
+ 0x61, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x73, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6e,
+ 0x73, 0x3c, 0x62, 0x61, 0x73, 0x65, 0x20, 0x68, 0x72, 0x65, 0x66, 0x72, 0x65,
+ 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x6c, 0x79, 0x77, 0x69, 0x6c, 0x6c, 0x69,
+ 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x6e,
+ 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x75, 0x6e, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x20,
+ 0x74, 0x68, 0x65, 0x72, 0x65, 0x76, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x65, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x20, 0x66,
+ 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72,
+ 0x69, 0x7a, 0x65, 0x64, 0x72, 0x65, 0x66, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74,
+ 0x6f, 0x74, 0x61, 0x6b, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x61, 0x75,
+ 0x74, 0x6f, 0x6e, 0x6f, 0x6d, 0x6f, 0x75, 0x73, 0x63, 0x6f, 0x6d, 0x70, 0x72,
+ 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x74, 0x69, 0x63, 0x61,
+ 0x6c, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61, 0x75, 0x72, 0x61, 0x6e, 0x74, 0x74,
+ 0x77, 0x6f, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x46, 0x65, 0x62, 0x72,
+ 0x75, 0x61, 0x72, 0x79, 0x20, 0x32, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79,
+ 0x20, 0x6f, 0x66, 0x73, 0x77, 0x66, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e,
+ 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x6e, 0x65, 0x61,
+ 0x72, 0x6c, 0x79, 0x20, 0x61, 0x6c, 0x6c, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65,
+ 0x6e, 0x20, 0x62, 0x79, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77,
+ 0x73, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x31, 0x77, 0x69,
+ 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+ 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x69, 0x73, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6c,
+ 0x6c, 0x79, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x6e,
+ 0x65, 0x77, 0x73, 0x70, 0x61, 0x70, 0x65, 0x72, 0x73, 0x6d, 0x79, 0x73, 0x74,
+ 0x65, 0x72, 0x69, 0x6f, 0x75, 0x73, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d,
+ 0x65, 0x6e, 0x74, 0x62, 0x65, 0x73, 0x74, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e,
+ 0x70, 0x61, 0x72, 0x6c, 0x69, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x75, 0x70,
+ 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x6e,
+ 0x69, 0x65, 0x6e, 0x74, 0x72, 0x65, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x65,
+ 0x64, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x79,
+ 0x73, 0x74, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x68, 0x61, 0x73, 0x20, 0x6c,
+ 0x65, 0x64, 0x20, 0x74, 0x6f, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x6e,
+ 0x64, 0x61, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x69,
+ 0x6e, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x63, 0x65, 0x72, 0x65,
+ 0x6d, 0x6f, 0x6e, 0x69, 0x61, 0x6c, 0x70, 0x72, 0x6f, 0x63, 0x6c, 0x61, 0x69,
+ 0x6d, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x6c, 0x69, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x53, 0x63, 0x69,
+ 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
+ 0x22, 0x6e, 0x6f, 0x2d, 0x74, 0x72, 0x61, 0x64, 0x65, 0x6d, 0x61, 0x72, 0x6b,
+ 0x73, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x77, 0x69,
+ 0x64, 0x65, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x69, 0x62, 0x65, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x6f, 0x6f, 0x6b, 0x20, 0x70, 0x6c, 0x61,
+ 0x63, 0x65, 0x64, 0x61, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x61,
+ 0x73, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x61, 0x73, 0x69, 0x6d, 0x70, 0x72,
+ 0x69, 0x73, 0x6f, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x61, 0x6c, 0x0a, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0a, 0x3c, 0x6d,
+ 0x4c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x76,
+ 0x65, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x32, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x61,
+ 0x6c, 0x76, 0x61, 0x72, 0x69, 0x65, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x66, 0x6c,
+ 0x6f, 0x61, 0x74, 0x3a, 0x20, 0x6c, 0x65, 0x66, 0x44, 0x75, 0x72, 0x69, 0x6e,
+ 0x67, 0x20, 0x74, 0x68, 0x65, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65,
+ 0x6e, 0x74, 0x68, 0x61, 0x76, 0x65, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x64,
+ 0x65, 0x61, 0x6c, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74,
+ 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x2f, 0x75, 0x6c, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
+ 0x63, 0x6c, 0x65, 0x61, 0x72, 0x66, 0x69, 0x78, 0x22, 0x3e, 0x74, 0x68, 0x65,
+ 0x20, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x79,
+ 0x65, 0x61, 0x72, 0x73, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x65, 0x72,
+ 0x65, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2c, 0x73, 0x79,
+ 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x63, 0x6f, 0x6e, 0x74, 0x65,
+ 0x6e, 0x74, 0x22, 0x3e, 0x0a, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62,
+ 0x6c, 0x79, 0x68, 0x69, 0x73, 0x20, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x75,
+ 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x75, 0x6e, 0x65, 0x78,
+ 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69,
+ 0x6e, 0x67, 0x20, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x64,
+ 0x61, 0x20, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x75, 0x6e, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x22, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67,
+ 0x73, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6b, 0x65, 0x6e, 0x20, 0x66, 0x72, 0x6f,
+ 0x6d, 0x69, 0x6e, 0x20, 0x4f, 0x63, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x70, 0x6f,
+ 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x73, 0x61, 0x69, 0x64, 0x20,
+ 0x74, 0x6f, 0x20, 0x62, 0x65, 0x72, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x6f, 0x75,
+ 0x73, 0x20, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x72, 0x6f, 0x77, 0x73, 0x70, 0x61, 0x6e, 0x3d, 0x22, 0x6f, 0x6e, 0x6c, 0x79,
+ 0x20, 0x61, 0x20, 0x66, 0x65, 0x77, 0x6d, 0x65, 0x61, 0x6e, 0x74, 0x20, 0x74,
+ 0x68, 0x61, 0x74, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65,
+ 0x2d, 0x2d, 0x3e, 0x0d, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x3c, 0x66, 0x69,
+ 0x65, 0x6c, 0x64, 0x73, 0x65, 0x74, 0x3e, 0x41, 0x72, 0x63, 0x68, 0x62, 0x69,
+ 0x73, 0x68, 0x6f, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6e,
+ 0x6f, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, 0x64, 0x61, 0x70,
+ 0x70, 0x72, 0x6f, 0x61, 0x63, 0x68, 0x65, 0x73, 0x70, 0x72, 0x69, 0x76, 0x69,
+ 0x6c, 0x65, 0x67, 0x65, 0x73, 0x6e, 0x6f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x3e, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x6d,
+ 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x45, 0x61, 0x73, 0x74,
+ 0x65, 0x72, 0x20, 0x65, 0x67, 0x67, 0x6d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69,
+ 0x73, 0x6d, 0x73, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61, 0x62, 0x6c, 0x65,
+ 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c,
+ 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x65, 0x64, 0x22, 0x3e, 0x6e, 0x6f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e,
+ 0x0d, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x70, 0x68, 0x70, 0x61, 0x72,
+ 0x72, 0x69, 0x76, 0x61, 0x6c, 0x20, 0x6f, 0x66, 0x2d, 0x6a, 0x73, 0x73, 0x64,
+ 0x6b, 0x27, 0x29, 0x29, 0x3b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x20,
+ 0x74, 0x6f, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x63,
+ 0x61, 0x73, 0x75, 0x61, 0x6c, 0x74, 0x69, 0x65, 0x73, 0x63, 0x6f, 0x6d, 0x70,
+ 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x69,
+ 0x61, 0x6e, 0x73, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x20,
+ 0x61, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x70, 0x72, 0x6f,
+ 0x63, 0x65, 0x64, 0x75, 0x72, 0x65, 0x73, 0x6d, 0x69, 0x67, 0x68, 0x74, 0x20,
+ 0x68, 0x61, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x69, 0x74, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x73, 0x50, 0x68,
+ 0x69, 0x6c, 0x6f, 0x73, 0x6f, 0x70, 0x68, 0x79, 0x66, 0x72, 0x69, 0x65, 0x6e,
+ 0x64, 0x73, 0x68, 0x69, 0x70, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20,
+ 0x74, 0x6f, 0x67, 0x69, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x74,
+ 0x6f, 0x77, 0x61, 0x72, 0x64, 0x20, 0x74, 0x68, 0x65, 0x67, 0x75, 0x61, 0x72,
+ 0x61, 0x6e, 0x74, 0x65, 0x65, 0x64, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
+ 0x74, 0x65, 0x64, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x30, 0x30, 0x30,
+ 0x76, 0x69, 0x64, 0x65, 0x6f, 0x20, 0x67, 0x61, 0x6d, 0x65, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63,
+ 0x74, 0x69, 0x6e, 0x67, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x74, 0x68,
+ 0x65, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x73, 0x61,
+ 0x6e, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x69, 0x66, 0x6f, 0x6e, 0x6b, 0x65, 0x79,
+ 0x70, 0x72, 0x65, 0x73, 0x73, 0x3b, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e,
+ 0x67, 0x3a, 0x48, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x75,
+ 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x74, 0x79, 0x70, 0x69,
+ 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x73, 0x72, 0x63, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x73, 0x69, 0x6e,
+ 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64,
+ 0x20, 0x62, 0x65, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
+ 0x67, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x73,
+ 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6c, 0x6f, 0x77, 0x65, 0x72,
+ 0x20, 0x74, 0x68, 0x61, 0x6e, 0x73, 0x68, 0x6f, 0x77, 0x73, 0x20, 0x74, 0x68,
+ 0x61, 0x74, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x0a, 0x09, 0x09, 0x63,
+ 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x63, 0x6f, 0x6e, 0x74,
+ 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74,
+ 0x69, 0x65, 0x73, 0x61, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x6f, 0x6d, 0x65, 0x72,
+ 0x68, 0x65, 0x20, 0x64, 0x69, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x64, 0x75, 0x65,
+ 0x20, 0x74, 0x6f, 0x20, 0x69, 0x74, 0x73, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65,
+ 0x64, 0x20, 0x74, 0x6f, 0x61, 0x6e, 0x20, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67,
+ 0x65, 0x65, 0x66, 0x66, 0x6f, 0x72, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x74, 0x68,
+ 0x65, 0x20, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x61, 0x74, 0x74, 0x65, 0x6d,
+ 0x70, 0x74, 0x20, 0x74, 0x6f, 0x54, 0x68, 0x65, 0x72, 0x65, 0x66, 0x6f, 0x72,
+ 0x65, 0x2c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52,
+ 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x77, 0x61, 0x73, 0x20,
+ 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f,
+ 0x6e, 0x69, 0x63, 0x6b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
+ 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x70, 0x75, 0x62,
+ 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f,
+ 0x72, 0x6d, 0x65, 0x72, 0x69, 0x6e, 0x64, 0x69, 0x67, 0x65, 0x6e, 0x6f, 0x75,
+ 0x73, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x73, 0x75,
+ 0x62, 0x73, 0x69, 0x64, 0x69, 0x61, 0x72, 0x79, 0x63, 0x6f, 0x6e, 0x73, 0x70,
+ 0x69, 0x72, 0x61, 0x63, 0x79, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20,
+ 0x6f, 0x66, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x61,
+ 0x66, 0x66, 0x6f, 0x72, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x75, 0x62, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x20,
+ 0x66, 0x6f, 0x72, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e,
+ 0x69, 0x74, 0x65, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x61, 0x62, 0x73,
+ 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x6c, 0x79, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x73,
+ 0x65, 0x64, 0x6c, 0x79, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x20,
+ 0x61, 0x61, 0x74, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x74, 0x72,
+ 0x61, 0x76, 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x65, 0x70, 0x61, 0x72,
+ 0x61, 0x74, 0x65, 0x6c, 0x79, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x65, 0x73, 0x20,
+ 0x6f, 0x6e, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x61,
+ 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x66, 0x6f, 0x75, 0x6e,
+ 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68,
+ 0x65, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x75, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x73, 0x74, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f,
+ 0x2d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x28, 0x73, 0x6f, 0x6d, 0x65, 0x74,
+ 0x69, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63, 0x69, 0x61,
+ 0x6c, 0x69, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x75, 0x6e,
+ 0x64, 0x65, 0x72, 0x74, 0x61, 0x6b, 0x65, 0x6e, 0x71, 0x75, 0x61, 0x72, 0x74,
+ 0x65, 0x72, 0x20, 0x6f, 0x66, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70,
+ 0x6c, 0x65, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x70, 0x68, 0x70, 0x3f, 0x3c, 0x2f, 0x62, 0x75,
+ 0x74, 0x74, 0x6f, 0x6e, 0x3e, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x61, 0x67, 0x65, 0x62, 0x65, 0x73, 0x74, 0x2d, 0x6b, 0x6e, 0x6f, 0x77, 0x6e,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x22, 0x20, 0x64,
+ 0x69, 0x72, 0x3d, 0x22, 0x6c, 0x74, 0x72, 0x4c, 0x69, 0x65, 0x75, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d,
+ 0x22, 0x74, 0x68, 0x65, 0x79, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x6d, 0x61, 0x64, 0x65, 0x20,
+ 0x75, 0x70, 0x20, 0x6f, 0x66, 0x6e, 0x6f, 0x74, 0x65, 0x64, 0x20, 0x74, 0x68,
+ 0x61, 0x74, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x61,
+ 0x72, 0x67, 0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x74, 0x6f, 0x20, 0x61,
+ 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65,
+ 0x6e, 0x27, 0x73, 0x70, 0x75, 0x72, 0x70, 0x6f, 0x73, 0x65, 0x20, 0x6f, 0x66,
+ 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x62, 0x61, 0x73,
+ 0x65, 0x64, 0x20, 0x75, 0x70, 0x6f, 0x6e, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65,
+ 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x6f,
+ 0x66, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x73, 0x70, 0x6f,
+ 0x73, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x49, 0x6e,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x74,
+ 0x68, 0x65, 0x61, 0x66, 0x74, 0x65, 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x20, 0x61, 0x63, 0x72, 0x6f,
+ 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x73, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x69,
+ 0x66, 0x69, 0x63, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x2e,
+ 0x63, 0x61, 0x70, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x73, 0x6d, 0x69, 0x6e, 0x20,
+ 0x47, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2d,
+ 0x77, 0x69, 0x6e, 0x67, 0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65,
+ 0x6d, 0x53, 0x6f, 0x63, 0x69, 0x65, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x70, 0x6f,
+ 0x6c, 0x69, 0x74, 0x69, 0x63, 0x69, 0x61, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x77, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x6e, 0x20,
+ 0x74, 0x6f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x20, 0x6f, 0x66, 0x20,
+ 0x4e, 0x65, 0x77, 0x20, 0x59, 0x6f, 0x72, 0x6b, 0x20, 0x61, 0x70, 0x61, 0x72,
+ 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65,
+ 0x75, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x68, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x68, 0x61, 0x64, 0x20, 0x62, 0x65,
+ 0x65, 0x6e, 0x20, 0x61, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x76,
+ 0x65, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74,
+ 0x74, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x65, 0x6e, 0x74, 0x65,
+ 0x72, 0x20, 0x66, 0x6f, 0x72, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x6e, 0x65, 0x6e,
+ 0x63, 0x65, 0x72, 0x65, 0x61, 0x64, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73,
+ 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x62, 0x75, 0x74, 0x20,
+ 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x61, 0x73, 0x20, 0x70, 0x61, 0x72, 0x74,
+ 0x20, 0x6f, 0x66, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65,
+ 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x20, 0x74, 0x68, 0x61, 0x74, 0x6c, 0x61, 0x62,
+ 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74,
+ 0x69, 0x62, 0x6c, 0x65, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x20, 0x6f,
+ 0x66, 0x2c, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x62, 0x65,
+ 0x67, 0x61, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x75, 0x73, 0x69, 0x6e, 0x67,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69,
+ 0x64, 0x65, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x6f, 0x66, 0x66,
+ 0x72, 0x6f, 0x6d, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x2f, 0x22, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x67, 0x69,
+ 0x63, 0x61, 0x6c, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x6f, 0x66,
+ 0x64, 0x65, 0x6c, 0x69, 0x62, 0x65, 0x72, 0x61, 0x74, 0x65, 0x69, 0x6d, 0x70,
+ 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20,
+ 0x74, 0x68, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b,
+ 0x20, 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x74, 0x6f, 0x70, 0x74, 0x68,
+ 0x65, 0x20, 0x47, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x6f, 0x75, 0x74, 0x73, 0x69,
+ 0x64, 0x65, 0x20, 0x6f, 0x66, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74,
+ 0x65, 0x64, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x72, 0x65, 0x65, 0x72, 0x73,
+ 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x64, 0x3d, 0x22,
+ 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x77, 0x61, 0x73, 0x20, 0x63, 0x61, 0x6c,
+ 0x6c, 0x65, 0x64, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x74, 0x68,
+ 0x72, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6f, 0x74, 0x68,
+ 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e,
+ 0x74, 0x69, 0x6f, 0x6e, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x65, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x63, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x61, 0x63, 0x63, 0x75, 0x72,
+ 0x61, 0x74, 0x65, 0x6c, 0x79, 0x77, 0x65, 0x72, 0x65, 0x20, 0x62, 0x75, 0x69,
+ 0x6c, 0x74, 0x77, 0x61, 0x73, 0x20, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x61,
+ 0x67, 0x72, 0x65, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x6d, 0x75, 0x63, 0x68,
+ 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x44, 0x75, 0x65, 0x20, 0x74, 0x6f, 0x20,
+ 0x74, 0x68, 0x65, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x31, 0x30, 0x30,
+ 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x4b, 0x69, 0x6e,
+ 0x67, 0x64, 0x6f, 0x6d, 0x20, 0x6f, 0x66, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e,
+ 0x74, 0x69, 0x72, 0x65, 0x66, 0x61, 0x6d, 0x6f, 0x75, 0x73, 0x20, 0x66, 0x6f,
+ 0x72, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x62,
+ 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x74, 0x68, 0x65, 0x20, 0x46,
+ 0x72, 0x65, 0x6e, 0x63, 0x68, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x20, 0x61,
+ 0x6e, 0x64, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x22, 0x3e, 0x69,
+ 0x73, 0x20, 0x73, 0x61, 0x69, 0x64, 0x20, 0x74, 0x6f, 0x73, 0x74, 0x72, 0x75,
+ 0x63, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x64, 0x75, 0x6d, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x74, 0x65, 0x6e,
+ 0x61, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x0a,
+ 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x20, 0x4f, 0x66, 0x66, 0x69, 0x63,
+ 0x69, 0x61, 0x6c, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x77, 0x69, 0x64, 0x65,
+ 0x2e, 0x61, 0x72, 0x69, 0x61, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x74, 0x68,
+ 0x65, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x74, 0x61, 0x6e, 0x64, 0x20, 0x69,
+ 0x74, 0x20, 0x77, 0x61, 0x73, 0x64, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3d, 0x22, 0x6c, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x74, 0x62,
+ 0x65, 0x6e, 0x65, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x61, 0x72, 0x65, 0x20,
+ 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72,
+ 0x69, 0x6e, 0x67, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x6c, 0x79,
+ 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x6e, 0x77, 0x6f, 0x72,
+ 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65,
+ 0x64, 0x20, 0x74, 0x6f, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x69, 0x6e, 0x6e, 0x6f, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3c, 0x2f,
+ 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x73, 0x6f, 0x75, 0x6e, 0x64,
+ 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x6f,
+ 0x72, 0x6d, 0x74, 0x65, 0x6e, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x69,
+ 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6f, 0x70, 0x65, 0x6e,
+ 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63,
+ 0x74, 0x65, 0x64, 0x61, 0x64, 0x6f, 0x70, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79,
+ 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x74, 0x68, 0x65,
+ 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x61, 0x6e, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,
+ 0x73, 0x20, 0x6f, 0x66, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x20, 0x6f,
+ 0x66, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x69, 0x61, 0x6e, 0x20, 0x76, 0x65,
+ 0x72, 0x79, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x61, 0x75, 0x74, 0x6f, 0x6d,
+ 0x6f, 0x74, 0x69, 0x76, 0x65, 0x62, 0x79, 0x20, 0x66, 0x61, 0x72, 0x20, 0x74,
+ 0x68, 0x65, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x70,
+ 0x75, 0x72, 0x73, 0x75, 0x69, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x6f, 0x6c, 0x6c,
+ 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x62, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x74,
+ 0x20, 0x74, 0x6f, 0x69, 0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x61, 0x6e, 0x64,
+ 0x61, 0x67, 0x72, 0x65, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x61, 0x63, 0x63,
+ 0x75, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x66, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20,
+ 0x66, 0x72, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6e,
+ 0x67, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x68, 0x69,
+ 0x73, 0x20, 0x6f, 0x72, 0x20, 0x68, 0x65, 0x72, 0x74, 0x72, 0x65, 0x6d, 0x65,
+ 0x6e, 0x64, 0x6f, 0x75, 0x73, 0x66, 0x72, 0x65, 0x65, 0x64, 0x6f, 0x6d, 0x20,
+ 0x6f, 0x66, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x30,
+ 0x20, 0x31, 0x65, 0x6d, 0x20, 0x31, 0x65, 0x6d, 0x3b, 0x42, 0x61, 0x73, 0x6b,
+ 0x65, 0x74, 0x62, 0x61, 0x6c, 0x6c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x2e,
+ 0x63, 0x73, 0x73, 0x61, 0x6e, 0x20, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72,
+ 0x65, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x2f, 0x22, 0x20,
+ 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3d, 0x22, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68,
+ 0x65, 0x70, 0x69, 0x74, 0x74, 0x73, 0x62, 0x75, 0x72, 0x67, 0x68, 0x63, 0x6f,
+ 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x3e, 0x0d, 0x3c, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x3e, 0x28, 0x66, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x6f,
+ 0x75, 0x74, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x3c,
+ 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x0d, 0x0a, 0x20, 0x6f, 0x63, 0x63, 0x61,
+ 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x62, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65,
+ 0x20, 0x69, 0x74, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f,
+ 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x3e, 0x3c, 0x2f,
+ 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x20, 0x62, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, 0x79,
+ 0x2c, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x74, 0x61,
+ 0x62, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3d, 0x22, 0x64, 0x69, 0x73, 0x61, 0x73,
+ 0x74, 0x72, 0x6f, 0x75, 0x73, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63,
+ 0x73, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x3e,
+ 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x3c, 0x2f, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x3e, 0x0a, 0x3c, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x20,
+ 0x66, 0x6f, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x64,
+ 0x2e, 0x73, 0x72, 0x63, 0x20, 0x3d, 0x20, 0x22, 0x2f, 0x2f, 0x76, 0x69, 0x6f,
+ 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x74, 0x68, 0x69, 0x73, 0x20, 0x70,
+ 0x6f, 0x69, 0x6e, 0x74, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x6c,
+ 0x79, 0x69, 0x73, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x72, 0x65,
+ 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x64, 0x20, 0x66, 0x72, 0x6f,
+ 0x6d, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e,
+ 0x64, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xc3, 0xaa, 0x73, 0xd7,
+ 0xa2, 0xd7, 0x91, 0xd7, 0xa8, 0xd7, 0x99, 0xd7, 0xaa, 0xd9, 0x81, 0xd8, 0xa7,
+ 0xd8, 0xb1, 0xd8, 0xb3, 0xdb, 0x8c, 0x64, 0x65, 0x73, 0x61, 0x72, 0x72, 0x6f,
+ 0x6c, 0x6c, 0x6f, 0x63, 0x6f, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x69, 0x6f,
+ 0x65, 0x64, 0x75, 0x63, 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x73, 0x65, 0x70,
+ 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x61, 0x64, 0x6f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x63, 0x69, 0xc3, 0xb3,
+ 0x6e, 0x75, 0x62, 0x69, 0x63, 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x70, 0x75,
+ 0x62, 0x6c, 0x69, 0x63, 0x69, 0x64, 0x61, 0x64, 0x72, 0x65, 0x73, 0x70, 0x75,
+ 0x65, 0x73, 0x74, 0x61, 0x73, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x61, 0x64,
+ 0x6f, 0x73, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, 0x65, 0x72,
+ 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x64, 0x6f, 0x73, 0x61, 0x72, 0x74, 0xc3,
+ 0xad, 0x63, 0x75, 0x6c, 0x6f, 0x73, 0x64, 0x69, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x74, 0x65, 0x73, 0x73, 0x69, 0x67, 0x75, 0x69, 0x65, 0x6e, 0x74, 0x65, 0x73,
+ 0x72, 0x65, 0x70, 0xc3, 0xba, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x69, 0x74,
+ 0x75, 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x69, 0x6f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x69, 0x64, 0x61,
+ 0x64, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x6f, 0x66, 0x6f,
+ 0x72, 0x6d, 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x70, 0x6f, 0x62, 0x6c, 0x61,
+ 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x70, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e,
+ 0x74, 0x65, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x61,
+ 0x63, 0x63, 0x65, 0x73, 0x6f, 0x72, 0x69, 0x6f, 0x73, 0x74, 0x65, 0x63, 0x68,
+ 0x6e, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61,
+ 0x6c, 0x65, 0x73, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0xc3, 0xad, 0x61,
+ 0x65, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x65, 0x73, 0x64, 0x69, 0x73,
+ 0x70, 0x6f, 0x6e, 0x69, 0x62, 0x6c, 0x65, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c,
+ 0x69, 0x64, 0x61, 0x64, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x69,
+ 0x61, 0x76, 0x61, 0x6c, 0x6c, 0x61, 0x64, 0x6f, 0x6c, 0x69, 0x64, 0x62, 0x69,
+ 0x62, 0x6c, 0x69, 0x6f, 0x74, 0x65, 0x63, 0x61, 0x72, 0x65, 0x6c, 0x61, 0x63,
+ 0x69, 0x6f, 0x6e, 0x65, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72,
+ 0x69, 0x6f, 0x70, 0x6f, 0x6c, 0xc3, 0xad, 0x74, 0x69, 0x63, 0x61, 0x73, 0x61,
+ 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x65, 0x73, 0x64, 0x6f, 0x63, 0x75,
+ 0x6d, 0x65, 0x6e, 0x74, 0x6f, 0x73, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c,
+ 0x65, 0x7a, 0x61, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x65, 0x73,
+ 0x64, 0x69, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x69, 0x61, 0x65, 0x63, 0x6f,
+ 0x6e, 0xc3, 0xb3, 0x6d, 0x69, 0x63, 0x61, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70,
+ 0x6f, 0x72, 0x74, 0x65, 0x72, 0x6f, 0x64, 0x72, 0xc3, 0xad, 0x67, 0x75, 0x65,
+ 0x7a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x72, 0x65, 0x6e,
+ 0x63, 0x75, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x64, 0x69, 0x73, 0x63, 0x75,
+ 0x73, 0x69, 0xc3, 0xb3, 0x6e, 0x65, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75,
+ 0x72, 0x61, 0x66, 0x75, 0x6e, 0x64, 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x66,
+ 0x72, 0x65, 0x63, 0x75, 0x65, 0x6e, 0x74, 0x65, 0x73, 0x70, 0x65, 0x72, 0x6d,
+ 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x65, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x6d, 0x65,
+ 0x6e, 0x74, 0x65, 0xd0, 0xbc, 0xd0, 0xbe, 0xd0, 0xb6, 0xd0, 0xbd, 0xd0, 0xbe,
+ 0xd0, 0xb1, 0xd1, 0x83, 0xd0, 0xb4, 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xbc, 0xd0,
+ 0xbe, 0xd0, 0xb6, 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xb2, 0xd1, 0x80, 0xd0, 0xb5,
+ 0xd0, 0xbc, 0xd1, 0x8f, 0xd1, 0x82, 0xd0, 0xb0, 0xd0, 0xba, 0xd0, 0xb6, 0xd0,
+ 0xb5, 0xd1, 0x87, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xb1, 0xd1, 0x8b, 0xd0, 0xb1,
+ 0xd0, 0xbe, 0xd0, 0xbb, 0xd0, 0xb5, 0xd0, 0xb5, 0xd0, 0xbe, 0xd1, 0x87, 0xd0,
+ 0xb5, 0xd0, 0xbd, 0xd1, 0x8c, 0xd1, 0x8d, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xb3,
+ 0xd0, 0xbe, 0xd0, 0xba, 0xd0, 0xbe, 0xd0, 0xb3, 0xd0, 0xb4, 0xd0, 0xb0, 0xd0,
+ 0xbf, 0xd0, 0xbe, 0xd1, 0x81, 0xd0, 0xbb, 0xd0, 0xb5, 0xd0, 0xb2, 0xd1, 0x81,
+ 0xd0, 0xb5, 0xd0, 0xb3, 0xd0, 0xbe, 0xd1, 0x81, 0xd0, 0xb0, 0xd0, 0xb9, 0xd1,
+ 0x82, 0xd0, 0xb5, 0xd1, 0x87, 0xd0, 0xb5, 0xd1, 0x80, 0xd0, 0xb5, 0xd0, 0xb7,
+ 0xd0, 0xbc, 0xd0, 0xbe, 0xd0, 0xb3, 0xd1, 0x83, 0xd1, 0x82, 0xd1, 0x81, 0xd0,
+ 0xb0, 0xd0, 0xb9, 0xd1, 0x82, 0xd0, 0xb0, 0xd0, 0xb6, 0xd0, 0xb8, 0xd0, 0xb7,
+ 0xd0, 0xbd, 0xd0, 0xb8, 0xd0, 0xbc, 0xd0, 0xb5, 0xd0, 0xb6, 0xd0, 0xb4, 0xd1,
+ 0x83, 0xd0, 0xb1, 0xd1, 0x83, 0xd0, 0xb4, 0xd1, 0x83, 0xd1, 0x82, 0xd0, 0x9f,
+ 0xd0, 0xbe, 0xd0, 0xb8, 0xd1, 0x81, 0xd0, 0xba, 0xd0, 0xb7, 0xd0, 0xb4, 0xd0,
+ 0xb5, 0xd1, 0x81, 0xd1, 0x8c, 0xd0, 0xb2, 0xd0, 0xb8, 0xd0, 0xb4, 0xd0, 0xb5,
+ 0xd0, 0xbe, 0xd1, 0x81, 0xd0, 0xb2, 0xd1, 0x8f, 0xd0, 0xb7, 0xd0, 0xb8, 0xd0,
+ 0xbd, 0xd1, 0x83, 0xd0, 0xb6, 0xd0, 0xbd, 0xd0, 0xbe, 0xd1, 0x81, 0xd0, 0xb2,
+ 0xd0, 0xbe, 0xd0, 0xb5, 0xd0, 0xb9, 0xd0, 0xbb, 0xd1, 0x8e, 0xd0, 0xb4, 0xd0,
+ 0xb5, 0xd0, 0xb9, 0xd0, 0xbf, 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xbd, 0xd0, 0xbe,
+ 0xd0, 0xbc, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0xb3, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0,
+ 0xb5, 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xb9, 0xd1, 0x81, 0xd0, 0xb2, 0xd0, 0xbe,
+ 0xd0, 0xb8, 0xd1, 0x85, 0xd0, 0xbf, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xb2, 0xd0,
+ 0xb0, 0xd1, 0x82, 0xd0, 0xb0, 0xd0, 0xba, 0xd0, 0xbe, 0xd0, 0xb9, 0xd0, 0xbc,
+ 0xd0, 0xb5, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xb8, 0xd0, 0xbc, 0xd0,
+ 0xb5, 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xb6, 0xd0, 0xb8, 0xd0, 0xb7, 0xd0, 0xbd,
+ 0xd1, 0x8c, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0xb9, 0xd0,
+ 0xbb, 0xd1, 0x83, 0xd1, 0x87, 0xd1, 0x88, 0xd0, 0xb5, 0xd0, 0xbf, 0xd0, 0xb5,
+ 0xd1, 0x80, 0xd0, 0xb5, 0xd0, 0xb4, 0xd1, 0x87, 0xd0, 0xb0, 0xd1, 0x81, 0xd1,
+ 0x82, 0xd0, 0xb8, 0xd1, 0x87, 0xd0, 0xb0, 0xd1, 0x81, 0xd1, 0x82, 0xd1, 0x8c,
+ 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xb1, 0xd0, 0xbe, 0xd1, 0x82, 0xd0, 0xbd, 0xd0,
+ 0xbe, 0xd0, 0xb2, 0xd1, 0x8b, 0xd1, 0x85, 0xd0, 0xbf, 0xd1, 0x80, 0xd0, 0xb0,
+ 0xd0, 0xb2, 0xd0, 0xbe, 0xd1, 0x81, 0xd0, 0xbe, 0xd0, 0xb1, 0xd0, 0xbe, 0xd0,
+ 0xb9, 0xd0, 0xbf, 0xd0, 0xbe, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xbc, 0xd0, 0xbc,
+ 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb5, 0xd0, 0xb5, 0xd1, 0x87, 0xd0, 0xb8, 0xd1,
+ 0x81, 0xd0, 0xbb, 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0xb2, 0xd1, 0x8b,
+ 0xd0, 0xb5, 0xd1, 0x83, 0xd1, 0x81, 0xd0, 0xbb, 0xd1, 0x83, 0xd0, 0xb3, 0xd0,
+ 0xbe, 0xd0, 0xba, 0xd0, 0xbe, 0xd0, 0xbb, 0xd0, 0xbe, 0xd0, 0xbd, 0xd0, 0xb0,
+ 0xd0, 0xb7, 0xd0, 0xb0, 0xd0, 0xb4, 0xd1, 0x82, 0xd0, 0xb0, 0xd0, 0xba, 0xd0,
+ 0xbe, 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xb3, 0xd0, 0xb4, 0xd0, 0xb0,
+ 0xd0, 0xbf, 0xd0, 0xbe, 0xd1, 0x87, 0xd1, 0x82, 0xd0, 0xb8, 0xd0, 0x9f, 0xd0,
+ 0xbe, 0xd1, 0x81, 0xd0, 0xbb, 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xb0, 0xd0, 0xba,
+ 0xd0, 0xb8, 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0xb2, 0xd1, 0x8b, 0xd0,
+ 0xb9, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xb8, 0xd1, 0x82, 0xd1, 0x82,
+ 0xd0, 0xb0, 0xd0, 0xba, 0xd0, 0xb8, 0xd1, 0x85, 0xd1, 0x81, 0xd1, 0x80, 0xd0,
+ 0xb0, 0xd0, 0xb7, 0xd1, 0x83, 0xd0, 0xa1, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xba,
+ 0xd1, 0x82, 0xd1, 0x84, 0xd0, 0xbe, 0xd1, 0x80, 0xd1, 0x83, 0xd0, 0xbc, 0xd0,
+ 0x9a, 0xd0, 0xbe, 0xd0, 0xb3, 0xd0, 0xb4, 0xd0, 0xb0, 0xd0, 0xba, 0xd0, 0xbd,
+ 0xd0, 0xb8, 0xd0, 0xb3, 0xd0, 0xb8, 0xd1, 0x81, 0xd0, 0xbb, 0xd0, 0xbe, 0xd0,
+ 0xb2, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xb0, 0xd1, 0x88, 0xd0, 0xb5, 0xd0, 0xb9,
+ 0xd0, 0xbd, 0xd0, 0xb0, 0xd0, 0xb9, 0xd1, 0x82, 0xd0, 0xb8, 0xd1, 0x81, 0xd0,
+ 0xb2, 0xd0, 0xbe, 0xd0, 0xb8, 0xd0, 0xbc, 0xd1, 0x81, 0xd0, 0xb2, 0xd1, 0x8f,
+ 0xd0, 0xb7, 0xd1, 0x8c, 0xd0, 0xbb, 0xd1, 0x8e, 0xd0, 0xb1, 0xd0, 0xbe, 0xd0,
+ 0xb9, 0xd1, 0x87, 0xd0, 0xb0, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xbe, 0xd1, 0x81,
+ 0xd1, 0x80, 0xd0, 0xb5, 0xd0, 0xb4, 0xd0, 0xb8, 0xd0, 0x9a, 0xd1, 0x80, 0xd0,
+ 0xbe, 0xd0, 0xbc, 0xd0, 0xb5, 0xd0, 0xa4, 0xd0, 0xbe, 0xd1, 0x80, 0xd1, 0x83,
+ 0xd0, 0xbc, 0xd1, 0x80, 0xd1, 0x8b, 0xd0, 0xbd, 0xd0, 0xba, 0xd0, 0xb5, 0xd1,
+ 0x81, 0xd1, 0x82, 0xd0, 0xb0, 0xd0, 0xbb, 0xd0, 0xb8, 0xd0, 0xbf, 0xd0, 0xbe,
+ 0xd0, 0xb8, 0xd1, 0x81, 0xd0, 0xba, 0xd1, 0x82, 0xd1, 0x8b, 0xd1, 0x81, 0xd1,
+ 0x8f, 0xd1, 0x87, 0xd0, 0xbc, 0xd0, 0xb5, 0xd1, 0x81, 0xd1, 0x8f, 0xd1, 0x86,
+ 0xd1, 0x86, 0xd0, 0xb5, 0xd0, 0xbd, 0xd1, 0x82, 0xd1, 0x80, 0xd1, 0x82, 0xd1,
+ 0x80, 0xd1, 0x83, 0xd0, 0xb4, 0xd0, 0xb0, 0xd1, 0x81, 0xd0, 0xb0, 0xd0, 0xbc,
+ 0xd1, 0x8b, 0xd1, 0x85, 0xd1, 0x80, 0xd1, 0x8b, 0xd0, 0xbd, 0xd0, 0xba, 0xd0,
+ 0xb0, 0xd0, 0x9d, 0xd0, 0xbe, 0xd0, 0xb2, 0xd1, 0x8b, 0xd0, 0xb9, 0xd1, 0x87,
+ 0xd0, 0xb0, 0xd1, 0x81, 0xd0, 0xbe, 0xd0, 0xb2, 0xd0, 0xbc, 0xd0, 0xb5, 0xd1,
+ 0x81, 0xd1, 0x82, 0xd0, 0xb0, 0xd1, 0x84, 0xd0, 0xb8, 0xd0, 0xbb, 0xd1, 0x8c,
+ 0xd0, 0xbc, 0xd0, 0xbc, 0xd0, 0xb0, 0xd1, 0x80, 0xd1, 0x82, 0xd0, 0xb0, 0xd1,
+ 0x81, 0xd1, 0x82, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xbc, 0xd0, 0xb5,
+ 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xba, 0xd1,
+ 0x81, 0xd1, 0x82, 0xd0, 0xbd, 0xd0, 0xb0, 0xd1, 0x88, 0xd0, 0xb8, 0xd1, 0x85,
+ 0xd0, 0xbc, 0xd0, 0xb8, 0xd0, 0xbd, 0xd1, 0x83, 0xd1, 0x82, 0xd0, 0xb8, 0xd0,
+ 0xbc, 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb8, 0xd0, 0xb8, 0xd0, 0xbc, 0xd0, 0xb5,
+ 0xd1, 0x8e, 0xd1, 0x82, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0xbc, 0xd0, 0xb5, 0xd1,
+ 0x80, 0xd0, 0xb3, 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xbe, 0xd0, 0xb4, 0xd1, 0x81,
+ 0xd0, 0xb0, 0xd0, 0xbc, 0xd0, 0xbe, 0xd0, 0xbc, 0xd1, 0x8d, 0xd1, 0x82, 0xd0,
+ 0xbe, 0xd0, 0xbc, 0xd1, 0x83, 0xd0, 0xba, 0xd0, 0xbe, 0xd0, 0xbd, 0xd1, 0x86,
+ 0xd0, 0xb5, 0xd1, 0x81, 0xd0, 0xb2, 0xd0, 0xbe, 0xd0, 0xb5, 0xd0, 0xbc, 0xd0,
+ 0xba, 0xd0, 0xb0, 0xd0, 0xba, 0xd0, 0xbe, 0xd0, 0xb9, 0xd0, 0x90, 0xd1, 0x80,
+ 0xd1, 0x85, 0xd0, 0xb8, 0xd0, 0xb2, 0xd9, 0x85, 0xd9, 0x86, 0xd8, 0xaa, 0xd8,
+ 0xaf, 0xd9, 0x89, 0xd8, 0xa5, 0xd8, 0xb1, 0xd8, 0xb3, 0xd8, 0xa7, 0xd9, 0x84,
+ 0xd8, 0xb1, 0xd8, 0xb3, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd8, 0xb9, 0xd8, 0xa7, 0xd9, 0x85, 0xd9, 0x83, 0xd8, 0xaa, 0xd8, 0xa8,
+ 0xd9, 0x87, 0xd8, 0xa7, 0xd8, 0xa8, 0xd8, 0xb1, 0xd8, 0xa7, 0xd9, 0x85, 0xd8,
+ 0xac, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x8a, 0xd9, 0x88, 0xd9, 0x85, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd8, 0xb5, 0xd9, 0x88, 0xd8, 0xb1, 0xd8, 0xac, 0xd8, 0xaf, 0xd9,
+ 0x8a, 0xd8, 0xaf, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb9, 0xd8, 0xb6,
+ 0xd9, 0x88, 0xd8, 0xa5, 0xd8, 0xb6, 0xd8, 0xa7, 0xd9, 0x81, 0xd8, 0xa9, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd9, 0x82, 0xd8, 0xb3, 0xd9, 0x85, 0xd8, 0xa7, 0xd9, 0x84,
+ 0xd8, 0xb9, 0xd8, 0xa7, 0xd8, 0xa8, 0xd8, 0xaa, 0xd8, 0xad, 0xd9, 0x85, 0xd9,
+ 0x8a, 0xd9, 0x84, 0xd9, 0x85, 0xd9, 0x84, 0xd9, 0x81, 0xd8, 0xa7, 0xd8, 0xaa,
+ 0xd9, 0x85, 0xd9, 0x84, 0xd8, 0xaa, 0xd9, 0x82, 0xd9, 0x89, 0xd8, 0xaa, 0xd8,
+ 0xb9, 0xd8, 0xaf, 0xd9, 0x8a, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb4,
+ 0xd8, 0xb9, 0xd8, 0xb1, 0xd8, 0xa3, 0xd8, 0xae, 0xd8, 0xa8, 0xd8, 0xa7, 0xd8,
+ 0xb1, 0xd8, 0xaa, 0xd8, 0xb7, 0xd9, 0x88, 0xd9, 0x8a, 0xd8, 0xb1, 0xd8, 0xb9,
+ 0xd9, 0x84, 0xd9, 0x8a, 0xd9, 0x83, 0xd9, 0x85, 0xd8, 0xa5, 0xd8, 0xb1, 0xd9,
+ 0x81, 0xd8, 0xa7, 0xd9, 0x82, 0xd8, 0xb7, 0xd9, 0x84, 0xd8, 0xa8, 0xd8, 0xa7,
+ 0xd8, 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x84, 0xd8, 0xba, 0xd8, 0xa9, 0xd8,
+ 0xaa, 0xd8, 0xb1, 0xd8, 0xaa, 0xd9, 0x8a, 0xd8, 0xa8, 0xd8, 0xa7, 0xd9, 0x84,
+ 0xd9, 0x86, 0xd8, 0xa7, 0xd8, 0xb3, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb4, 0xd9,
+ 0x8a, 0xd8, 0xae, 0xd9, 0x85, 0xd9, 0x86, 0xd8, 0xaa, 0xd8, 0xaf, 0xd9, 0x8a,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb9, 0xd8, 0xb1, 0xd8, 0xa8, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd9, 0x82, 0xd8, 0xb5, 0xd8, 0xb5, 0xd8, 0xa7, 0xd9, 0x81, 0xd9, 0x84,
+ 0xd8, 0xa7, 0xd9, 0x85, 0xd8, 0xb9, 0xd9, 0x84, 0xd9, 0x8a, 0xd9, 0x87, 0xd8,
+ 0xa7, 0xd8, 0xaa, 0xd8, 0xad, 0xd8, 0xaf, 0xd9, 0x8a, 0xd8, 0xab, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd9, 0x84, 0xd9, 0x87, 0xd9, 0x85, 0xd8, 0xa7, 0xd9, 0x84, 0xd8,
+ 0xb9, 0xd9, 0x85, 0xd9, 0x84, 0xd9, 0x85, 0xd9, 0x83, 0xd8, 0xaa, 0xd8, 0xa8,
+ 0xd8, 0xa9, 0xd9, 0x8a, 0xd9, 0x85, 0xd9, 0x83, 0xd9, 0x86, 0xd9, 0x83, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd8, 0xb7, 0xd9, 0x81, 0xd9, 0x84, 0xd9, 0x81, 0xd9, 0x8a,
+ 0xd8, 0xaf, 0xd9, 0x8a, 0xd9, 0x88, 0xd8, 0xa5, 0xd8, 0xaf, 0xd8, 0xa7, 0xd8,
+ 0xb1, 0xd8, 0xa9, 0xd8, 0xaa, 0xd8, 0xa7, 0xd8, 0xb1, 0xd9, 0x8a, 0xd8, 0xae,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb5, 0xd8, 0xad, 0xd8, 0xa9, 0xd8, 0xaa, 0xd8,
+ 0xb3, 0xd8, 0xac, 0xd9, 0x8a, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x88,
+ 0xd9, 0x82, 0xd8, 0xaa, 0xd8, 0xb9, 0xd9, 0x86, 0xd8, 0xaf, 0xd9, 0x85, 0xd8,
+ 0xa7, 0xd9, 0x85, 0xd8, 0xaf, 0xd9, 0x8a, 0xd9, 0x86, 0xd8, 0xa9, 0xd8, 0xaa,
+ 0xd8, 0xb5, 0xd9, 0x85, 0xd9, 0x8a, 0xd9, 0x85, 0xd8, 0xa3, 0xd8, 0xb1, 0xd8,
+ 0xb4, 0xd9, 0x8a, 0xd9, 0x81, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb0, 0xd9, 0x8a,
+ 0xd9, 0x86, 0xd8, 0xb9, 0xd8, 0xb1, 0xd8, 0xa8, 0xd9, 0x8a, 0xd8, 0xa9, 0xd8,
+ 0xa8, 0xd9, 0x88, 0xd8, 0xa7, 0xd8, 0xa8, 0xd8, 0xa9, 0xd8, 0xa3, 0xd9, 0x84,
+ 0xd8, 0xb9, 0xd8, 0xa7, 0xd8, 0xa8, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb3, 0xd9,
+ 0x81, 0xd8, 0xb1, 0xd9, 0x85, 0xd8, 0xb4, 0xd8, 0xa7, 0xd9, 0x83, 0xd9, 0x84,
+ 0xd8, 0xaa, 0xd8, 0xb9, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x89, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd8, 0xa3, 0xd9, 0x88, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb3,
+ 0xd9, 0x86, 0xd8, 0xa9, 0xd8, 0xac, 0xd8, 0xa7, 0xd9, 0x85, 0xd8, 0xb9, 0xd8,
+ 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb5, 0xd8, 0xad, 0xd9, 0x81, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd8, 0xaf, 0xd9, 0x8a, 0xd9, 0x86, 0xd9, 0x83, 0xd9, 0x84, 0xd9,
+ 0x85, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xae, 0xd8, 0xa7,
+ 0xd8, 0xb5, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd9, 0x84, 0xd9, 0x81, 0xd8,
+ 0xa3, 0xd8, 0xb9, 0xd8, 0xb6, 0xd8, 0xa7, 0xd8, 0xa1, 0xd9, 0x83, 0xd8, 0xaa,
+ 0xd8, 0xa7, 0xd8, 0xa8, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xae, 0xd9,
+ 0x8a, 0xd8, 0xb1, 0xd8, 0xb1, 0xd8, 0xb3, 0xd8, 0xa7, 0xd8, 0xa6, 0xd9, 0x84,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x82, 0xd9, 0x84, 0xd8, 0xa8, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd8, 0xa3, 0xd8, 0xaf, 0xd8, 0xa8, 0xd9, 0x85, 0xd9, 0x82, 0xd8, 0xa7,
+ 0xd8, 0xb7, 0xd8, 0xb9, 0xd9, 0x85, 0xd8, 0xb1, 0xd8, 0xa7, 0xd8, 0xb3, 0xd9,
+ 0x84, 0xd9, 0x85, 0xd9, 0x86, 0xd8, 0xb7, 0xd9, 0x82, 0xd8, 0xa9, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd9, 0x83, 0xd8, 0xaa, 0xd8, 0xa8, 0xd8, 0xa7, 0xd9, 0x84, 0xd8,
+ 0xb1, 0xd8, 0xac, 0xd9, 0x84, 0xd8, 0xa7, 0xd8, 0xb4, 0xd8, 0xaa, 0xd8, 0xb1,
+ 0xd9, 0x83, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x82, 0xd8, 0xaf, 0xd9, 0x85, 0xd9,
+ 0x8a, 0xd8, 0xb9, 0xd8, 0xb7, 0xd9, 0x8a, 0xd9, 0x83, 0x73, 0x42, 0x79, 0x54,
+ 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x28, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x20,
+ 0x61, 0x6c, 0x74, 0x3d, 0x22, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6f, 0x6c, 0x69,
+ 0x64, 0x20, 0x23, 0x2e, 0x67, 0x69, 0x66, 0x22, 0x20, 0x61, 0x6c, 0x74, 0x3d,
+ 0x22, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x69,
+ 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x70, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x20, 0x6f, 0x6e, 0x63,
+ 0x6c, 0x69, 0x63, 0x6b, 0x3d, 0x22, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69,
+ 0x73, 0x68, 0x65, 0x64, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x69,
+ 0x6e, 0x67, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x61, 0x6c, 0x74, 0x3d, 0x22,
+ 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x65,
+ 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x61, 0x70, 0x70, 0x72,
+ 0x6f, 0x70, 0x72, 0x69, 0x61, 0x74, 0x65, 0x26, 0x61, 0x6d, 0x70, 0x3b, 0x6d,
+ 0x64, 0x61, 0x73, 0x68, 0x3b, 0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74,
+ 0x65, 0x6c, 0x79, 0x3c, 0x2f, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x3e, 0x3c,
+ 0x2f, 0x72, 0x61, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x74,
+ 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x65, 0x76,
+ 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x63, 0x6f, 0x6d, 0x70, 0x65,
+ 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f,
+ 0x6c, 0x64, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74,
+ 0x79, 0x3a, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e,
+ 0x30, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x22, 0x65, 0x76,
+ 0x65, 0x6e, 0x20, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x72, 0x65, 0x70, 0x6c,
+ 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x3c, 0x75, 0x6c, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
+ 0x22, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x69,
+ 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x73, 0x70, 0x65, 0x72,
+ 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x65, 0x74, 0x54, 0x69,
+ 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, 0x75, 0x72, 0x6c, 0x28, 0x68, 0x74, 0x74,
+ 0x70, 0x3a, 0x2f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69,
+ 0x63, 0x73, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x70, 0x3a,
+ 0x65, 0x76, 0x65, 0x6e, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x64, 0x65,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x6e, 0x6f,
+ 0x2d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4a, 0x50, 0x47, 0x7c, 0x74, 0x68, 0x75,
+ 0x6d, 0x62, 0x7c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74,
+ 0x65, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x66,
+ 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x3c, 0x6c, 0x69,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x68, 0x75, 0x6e, 0x64, 0x72,
+ 0x65, 0x64, 0x73, 0x20, 0x6f, 0x66, 0x0a, 0x0a, 0x48, 0x6f, 0x77, 0x65, 0x76,
+ 0x65, 0x72, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x3a, 0x62, 0x6f, 0x74, 0x68, 0x3b,
+ 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x77, 0x69,
+ 0x74, 0x68, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x62, 0x65,
+ 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x3d, 0x22, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72,
+ 0x2d, 0x74, 0x6f, 0x70, 0x3a, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c,
+ 0x61, 0x6e, 0x64, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65,
+ 0x64, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x69,
+ 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x26, 0x6c, 0x74,
+ 0x3b, 0x73, 0x75, 0x70, 0x26, 0x67, 0x74, 0x3b, 0x63, 0x6f, 0x6e, 0x74, 0x72,
+ 0x6f, 0x76, 0x65, 0x72, 0x73, 0x79, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c,
+ 0x61, 0x6e, 0x64, 0x73, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69,
+ 0x76, 0x65, 0x6d, 0x61, 0x78, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3d, 0x22,
+ 0x73, 0x77, 0x69, 0x74, 0x7a, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x44, 0x65,
+ 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x73, 0x73, 0x65,
+ 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x0a, 0x0a, 0x41, 0x6c, 0x74, 0x68,
+ 0x6f, 0x75, 0x67, 0x68, 0x20, 0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72,
+ 0x65, 0x61, 0x3e, 0x74, 0x68, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x62, 0x69, 0x72,
+ 0x64, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x26,
+ 0x61, 0x6d, 0x70, 0x3b, 0x6e, 0x64, 0x61, 0x73, 0x68, 0x3b, 0x73, 0x70, 0x65,
+ 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x75,
+ 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x6c, 0x65, 0x67, 0x69, 0x73, 0x6c, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69,
+ 0x63, 0x73, 0x0a, 0x09, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22,
+ 0x69, 0x6c, 0x6c, 0x75, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x64, 0x65, 0x6e,
+ 0x67, 0x69, 0x6e, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x74, 0x65, 0x72, 0x72,
+ 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72,
+ 0x69, 0x74, 0x69, 0x65, 0x73, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75,
+ 0x74, 0x65, 0x64, 0x36, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d,
+ 0x22, 0x73, 0x61, 0x6e, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x69, 0x66, 0x3b, 0x63,
+ 0x61, 0x70, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x64, 0x69, 0x73,
+ 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x65, 0x64, 0x69, 0x6e, 0x74, 0x65, 0x72,
+ 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6c, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67,
+ 0x20, 0x66, 0x6f, 0x72, 0x69, 0x74, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20,
+ 0x62, 0x65, 0x41, 0x66, 0x67, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x6e,
+ 0x77, 0x61, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x61,
+ 0x74, 0x68, 0x2e, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x28, 0x73, 0x75, 0x72, 0x72,
+ 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x63, 0x61, 0x6e, 0x20, 0x61, 0x6c,
+ 0x73, 0x6f, 0x20, 0x62, 0x65, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63,
+ 0x65, 0x65, 0x6e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x64, 0x3c,
+ 0x68, 0x32, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x6f, 0x72,
+ 0x65, 0x20, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x20, 0x68, 0x61,
+ 0x73, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x69, 0x6e, 0x76, 0x61, 0x73, 0x69, 0x6f,
+ 0x6e, 0x20, 0x6f, 0x66, 0x29, 0x2e, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65,
+ 0x28, 0x29, 0x66, 0x75, 0x6e, 0x64, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c,
+ 0x44, 0x65, 0x73, 0x70, 0x69, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x22, 0x3e,
+ 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x69, 0x6e, 0x73, 0x70,
+ 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x78, 0x61, 0x6d, 0x69, 0x6e,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x3c,
+ 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x69, 0x6e, 0x73, 0x74, 0x72,
+ 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x27, 0x68, 0x74, 0x74, 0x70, 0x3a,
+ 0x2f, 0x2f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x6c, 0x79, 0x20, 0x2e, 0x73,
+ 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x65, 0x61, 0x63, 0x68,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69,
+ 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x74,
+ 0x69, 0x61, 0x6c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x64,
+ 0x75, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6d,
+ 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x6f, 0x20, 0x6e, 0x6f,
+ 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x20,
+ 0x45, 0x61, 0x73, 0x74, 0x3c, 0x6e, 0x6f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x3e, 0x3c, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x20,
+ 0x70, 0x65, 0x72, 0x68, 0x61, 0x70, 0x73, 0x20, 0x74, 0x68, 0x65, 0x69, 0x6e,
+ 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x20, 0x44,
+ 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x61, 0x72, 0x72, 0x61, 0x6e, 0x67,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x66, 0x61, 0x6d,
+ 0x6f, 0x75, 0x73, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74,
+ 0x79, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x6c,
+ 0x69, 0x6d, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x65, 0x78, 0x63,
+ 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x6c, 0x79, 0x73, 0x6f, 0x76, 0x65, 0x72,
+ 0x65, 0x69, 0x67, 0x6e, 0x74, 0x79, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
+ 0x74, 0x22, 0x3e, 0x0a, 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64,
+ 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x20, 0x74, 0x6f, 0x64, 0x6f,
+ 0x63, 0x74, 0x72, 0x69, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x6f, 0x63, 0x63, 0x75,
+ 0x70, 0x69, 0x65, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e,
+ 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x6e, 0x61, 0x69, 0x73, 0x73, 0x61,
+ 0x6e, 0x63, 0x65, 0x61, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f,
+ 0x66, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x65,
+ 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x63,
+ 0x6f, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x72, 0x65, 0x64, 0x65,
+ 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72,
+ 0x63, 0x3d, 0x22, 0x2f, 0x3c, 0x68, 0x31, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x6d, 0x61, 0x79, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x62, 0x65, 0x73, 0x70,
+ 0x65, 0x63, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x3c, 0x2f, 0x66, 0x69,
+ 0x65, 0x6c, 0x64, 0x73, 0x65, 0x74, 0x3e, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65,
+ 0x73, 0x73, 0x69, 0x76, 0x65, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x6f, 0x6e, 0x73,
+ 0x20, 0x6f, 0x66, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61,
+ 0x74, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61,
+ 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x6e, 0x65,
+ 0x20, 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x2e, 0x70, 0x61, 0x72, 0x65,
+ 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x61, 0x67, 0x72, 0x69, 0x63, 0x75, 0x6c,
+ 0x74, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69,
+ 0x76, 0x65, 0x72, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x72, 0x73,
+ 0x74, 0x6f, 0x77, 0x61, 0x72, 0x64, 0x73, 0x20, 0x74, 0x68, 0x65, 0x4d, 0x6f,
+ 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x61, 0x6e, 0x79,
+ 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x28, 0x65, 0x73, 0x70, 0x65, 0x63,
+ 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x3c, 0x74, 0x64, 0x20, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x3d, 0x22, 0x3b, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x30, 0x30,
+ 0x25, 0x69, 0x6e, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x3c,
+ 0x68, 0x33, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x20, 0x6f, 0x6e,
+ 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3d, 0x22, 0x29, 0x2e, 0x61, 0x64, 0x64,
+ 0x43, 0x6c, 0x61, 0x73, 0x73, 0x28, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x64, 0x61, 0x75, 0x67, 0x68, 0x74, 0x65, 0x72, 0x20, 0x6f, 0x66,
+ 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x62, 0x72,
+ 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x0d, 0x0a, 0x3c, 0x64,
+ 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61,
+ 0x72, 0x67, 0x65, 0x73, 0x74, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74,
+ 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x6f, 0x63,
+ 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x20, 0x6f, 0x72,
+ 0x64, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x22, 0x3e, 0x0a, 0x3c, 0x68, 0x65, 0x61,
+ 0x64, 0x3e, 0x0a, 0x3c, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d,
+ 0x22, 0x31, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b,
+ 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x69, 0x6d, 0x70, 0x6c,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65,
+ 0x20, 0x73, 0x65, 0x65, 0x6e, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61,
+ 0x73, 0x20, 0x61, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x74,
+ 0x65, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x22, 0x3e, 0x63,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x74, 0x68, 0x65,
+ 0x20, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x77, 0x61, 0x73, 0x20, 0x77,
+ 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x21, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74,
+ 0x61, 0x6e, 0x74, 0x3b, 0x70, 0x78, 0x3b, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69,
+ 0x6e, 0x2d, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f,
+ 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x64, 0x75, 0x72, 0x69,
+ 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6d, 0x6d, 0x69, 0x67, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x63, 0x61, 0x6c,
+ 0x6c, 0x65, 0x64, 0x3c, 0x68, 0x34, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
+ 0x22, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x72,
+ 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x20, 0x62, 0x79, 0x67, 0x6f, 0x76,
+ 0x65, 0x72, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x69, 0x6e, 0x20, 0x4e, 0x6f, 0x76, 0x65,
+ 0x6d, 0x62, 0x65, 0x72, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74,
+ 0x68, 0x65, 0x3c, 0x2f, 0x70, 0x3e, 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
+ 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x61,
+ 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x65, 0x72, 0x73,
+ 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7b, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69,
+ 0x7a, 0x65, 0x3a, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x65, 0x64, 0x20, 0x69,
+ 0x6e, 0x69, 0x6e, 0x76, 0x65, 0x73, 0x74, 0x69, 0x67, 0x61, 0x74, 0x65, 0x65,
+ 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x6d, 0x6f, 0x73,
+ 0x74, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x6c, 0x79, 0x77, 0x69, 0x64, 0x65, 0x6c,
+ 0x79, 0x20, 0x75, 0x73, 0x65, 0x64, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73,
+ 0x69, 0x6f, 0x6e, 0x73, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x20,
+ 0x6f, 0x66, 0x20, 0x28, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
+ 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x76, 0x65, 0x6c, 0x79, 0x49, 0x74,
+ 0x20, 0x68, 0x61, 0x73, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x69, 0x74, 0x20, 0x64,
+ 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61,
+ 0x72, 0x79, 0x20, 0x74, 0x6f, 0x69, 0x6e, 0x68, 0x61, 0x62, 0x69, 0x74, 0x61,
+ 0x6e, 0x74, 0x73, 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x73, 0x63, 0x68, 0x6f, 0x6c, 0x61, 0x72, 0x73, 0x68, 0x69, 0x70, 0x63,
+ 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x73,
+ 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x20, 0x65,
+ 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20,
+ 0x6d, 0x6f, 0x72, 0x65, 0x70, 0x78, 0x3b, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69,
+ 0x6e, 0x67, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+ 0x61, 0x20, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x61, 0x72,
+ 0x65, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x72, 0x6f, 0x6c, 0x65,
+ 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
+ 0x75, 0x73, 0x6c, 0x79, 0x20, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69,
+ 0x76, 0x65, 0x73, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x6f,
+ 0x66, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x74, 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x63, 0x65, 0x72, 0x74, 0x69,
+ 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64,
+ 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64,
+ 0x3d, 0x22, 0x68, 0x69, 0x67, 0x68, 0x20, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c,
+ 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x63, 0x6f,
+ 0x6d, 0x66, 0x6f, 0x72, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x64, 0x6f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x74, 0x68, 0x72, 0x65, 0x65, 0x20,
+ 0x79, 0x65, 0x61, 0x72, 0x73, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x72, 0x79, 0x69, 0x6e, 0x20, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72,
+ 0x79, 0x73, 0x6f, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x70,
+ 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x20, 0x77, 0x68, 0x6f, 0x20, 0x70, 0x72, 0x6f,
+ 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x3c, 0x70, 0x61, 0x72, 0x61,
+ 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65,
+ 0x64, 0x20, 0x62, 0x79, 0x69, 0x6e, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x20,
+ 0x6f, 0x66, 0x61, 0x70, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x6d, 0x65, 0x6e, 0x74,
+ 0x49, 0x53, 0x4f, 0x2d, 0x38, 0x38, 0x35, 0x39, 0x2d, 0x31, 0x22, 0x77, 0x61,
+ 0x73, 0x20, 0x62, 0x6f, 0x72, 0x6e, 0x20, 0x69, 0x6e, 0x68, 0x69, 0x73, 0x74,
+ 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x67, 0x61, 0x72, 0x64,
+ 0x65, 0x64, 0x20, 0x61, 0x73, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x69, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f,
+ 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x3a,
+ 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x73, 0x69, 0x67,
+ 0x6e, 0x69, 0x66, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x63, 0x65, 0x6c, 0x65, 0x62,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69,
+ 0x74, 0x74, 0x65, 0x64, 0x2f, 0x6a, 0x73, 0x2f, 0x6a, 0x71, 0x75, 0x65, 0x72,
+ 0x79, 0x2e, 0x69, 0x73, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61, 0x73,
+ 0x74, 0x68, 0x65, 0x6f, 0x72, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x74,
+ 0x61, 0x62, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3d, 0x22, 0x69, 0x74, 0x20, 0x63,
+ 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x3c, 0x6e, 0x6f, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x62,
+ 0x65, 0x65, 0x6e, 0x0d, 0x0a, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a,
+ 0x3c, 0x20, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x54, 0x68, 0x65, 0x20, 0x63,
+ 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x68, 0x65, 0x20,
+ 0x68, 0x61, 0x64, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x64, 0x75,
+ 0x63, 0x65, 0x64, 0x20, 0x62, 0x79, 0x70, 0x68, 0x69, 0x6c, 0x6f, 0x73, 0x6f,
+ 0x70, 0x68, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
+ 0x65, 0x64, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6f,
+ 0x61, 0x6d, 0x6f, 0x6e, 0x67, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x63, 0x6f,
+ 0x6d, 0x70, 0x61, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x74, 0x6f, 0x20, 0x73,
+ 0x61, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+ 0x65, 0x72, 0x69, 0x6e, 0x67, 0x61, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x74, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x74,
+ 0x6f, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x62,
+ 0x65, 0x6c, 0x69, 0x65, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x70, 0x68, 0x6f,
+ 0x74, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74,
+ 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
+ 0x20, 0x6f, 0x66, 0x20, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20,
+ 0x6f, 0x66, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x69, 0x6c, 0x79,
+ 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x74, 0x65,
+ 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x6c, 0x65, 0x61, 0x76,
+ 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x61,
+ 0x63, 0x75, 0x6c, 0x61, 0x72, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x6f, 0x66, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x69, 0x63, 0x69, 0x74,
+ 0x79, 0x68, 0x65, 0x61, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72,
+ 0x65, 0x73, 0x74, 0x61, 0x75, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x70, 0x61, 0x72,
+ 0x74, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x65, 0x6d, 0x70, 0x68, 0x61,
+ 0x73, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x72, 0x65,
+ 0x63, 0x65, 0x6e, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x77, 0x69, 0x74,
+ 0x68, 0x20, 0x73, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74,
+ 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x64, 0x65,
+ 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x69, 0x74, 0x20, 0x69,
+ 0x73, 0x20, 0x6f, 0x66, 0x74, 0x65, 0x6e, 0x22, 0x3e, 0x3c, 0x2f, 0x69, 0x66,
+ 0x72, 0x61, 0x6d, 0x65, 0x3e, 0x61, 0x73, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x73, 0x3a, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74,
+ 0x68, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x74, 0x68, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x6f, 0x70, 0x70, 0x6f, 0x72,
+ 0x74, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x76, 0x69, 0x65, 0x77, 0x20, 0x6f, 0x66,
+ 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66,
+ 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x68, 0x65,
+ 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x73, 0x65, 0x74, 0x49,
+ 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x70,
+ 0x61, 0x6e, 0x3e, 0x3c, 0x2f, 0x69, 0x6e, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x59,
+ 0x6f, 0x72, 0x6b, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+ 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x0a,
+ 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x69, 0x6e, 0x63,
+ 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x3b, 0x3c, 0x2f, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x3e, 0x3c, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x22, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f,
+ 0x63, 0x61, 0x72, 0x72, 0x69, 0x65, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x53, 0x6f,
+ 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x63, 0x69, 0x65,
+ 0x6e, 0x63, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69,
+ 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x72, 0x22, 0x3e, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e,
+ 0x67, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x68, 0x65, 0x72, 0x4d,
+ 0x75, 0x63, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x77, 0x72, 0x69,
+ 0x74, 0x69, 0x6e, 0x67, 0x73, 0x20, 0x6f, 0x66, 0x22, 0x20, 0x68, 0x65, 0x69,
+ 0x67, 0x68, 0x74, 0x3d, 0x22, 0x32, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6f, 0x66,
+ 0x20, 0x74, 0x68, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f,
+ 0x66, 0x20, 0x6d, 0x69, 0x78, 0x74, 0x75, 0x72, 0x65, 0x20, 0x6f, 0x66, 0x20,
+ 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x45, 0x78,
+ 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x65, 0x64, 0x75, 0x63,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x63, 0x6f, 0x6d, 0x70, 0x65, 0x74,
+ 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6f, 0x6e, 0x73, 0x75, 0x62, 0x6d, 0x69,
+ 0x74, 0x3d, 0x22, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x6f,
+ 0x66, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x69, 0x76, 0x65, 0x2f,
+ 0x44, 0x54, 0x44, 0x20, 0x58, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x72, 0x65, 0x6c,
+ 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x74, 0x65, 0x6e, 0x64, 0x65,
+ 0x6e, 0x63, 0x79, 0x20, 0x74, 0x6f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63,
+ 0x65, 0x20, 0x6f, 0x66, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x6f, 0x75,
+ 0x6c, 0x64, 0x64, 0x65, 0x73, 0x70, 0x69, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65,
+ 0x73, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x20, 0x6c, 0x65,
+ 0x67, 0x69, 0x73, 0x6c, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x69, 0x6e, 0x6e,
+ 0x65, 0x72, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x61, 0x6c, 0x6c, 0x65, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x67, 0x72, 0x69, 0x63, 0x75, 0x6c, 0x74,
+ 0x75, 0x72, 0x65, 0x77, 0x61, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69,
+ 0x6e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x61, 0x63, 0x68, 0x20, 0x74, 0x6f, 0x69,
+ 0x6e, 0x74, 0x65, 0x6c, 0x6c, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x79, 0x65, 0x61,
+ 0x72, 0x73, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x2c, 0x73, 0x61, 0x6e, 0x73,
+ 0x2d, 0x73, 0x65, 0x72, 0x69, 0x66, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69,
+ 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e,
+ 0x63, 0x65, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x73,
+ 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6f,
+ 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0x62, 0x62, 0x72,
+ 0x65, 0x76, 0x69, 0x61, 0x74, 0x65, 0x64, 0x68, 0x69, 0x67, 0x68, 0x65, 0x72,
+ 0x20, 0x74, 0x68, 0x61, 0x6e, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c,
+ 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x66, 0x73,
+ 0x75, 0x70, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x63, 0x6c, 0x61,
+ 0x69, 0x6d, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x61, 0x74, 0x74, 0x72, 0x69,
+ 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69,
+ 0x7a, 0x65, 0x3a, 0x31, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20,
+ 0x6f, 0x66, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x20,
+ 0x68, 0x69, 0x73, 0x20, 0x62, 0x72, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x61, 0x74,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x61, 0x6e, 0x6e, 0x69,
+ 0x76, 0x65, 0x72, 0x73, 0x61, 0x72, 0x79, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e,
+ 0x65, 0x64, 0x20, 0x62, 0x79, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20,
+ 0x74, 0x6f, 0x20, 0x75, 0x6c, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x6c, 0x79,
+ 0x20, 0x69, 0x6e, 0x6e, 0x6f, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x69,
+ 0x74, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x63, 0x61, 0x6e,
+ 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x62, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x74, 0x6f, 0x47, 0x4d, 0x54, 0x53, 0x74,
+ 0x72, 0x69, 0x6e, 0x67, 0x41, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20,
+ 0x6f, 0x66, 0x69, 0x6d, 0x67, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x2c, 0x77, 0x61,
+ 0x73, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x6f, 0x63, 0x63, 0x75,
+ 0x72, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62,
+ 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75,
+ 0x69, 0x73, 0x68, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x68, 0x65, 0x20, 0x77, 0x61,
+ 0x73, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x69, 0x6e, 0x67, 0x74,
+ 0x65, 0x72, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x4d, 0x61, 0x6e,
+ 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x61, 0x72, 0x67, 0x75, 0x65,
+ 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x61, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72,
+ 0x69, 0x63, 0x61, 0x6e, 0x63, 0x6f, 0x6e, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20,
+ 0x6f, 0x66, 0x77, 0x69, 0x64, 0x65, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x20,
+ 0x77, 0x65, 0x72, 0x65, 0x20, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x73, 0x63,
+ 0x72, 0x65, 0x65, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x6e, 0x20, 0x6f,
+ 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74,
+ 0x65, 0x64, 0x20, 0x74, 0x6f, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61,
+ 0x6e, 0x74, 0x73, 0x61, 0x72, 0x65, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65,
+ 0x64, 0x6c, 0x65, 0x67, 0x69, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x67,
+ 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x62, 0x61,
+ 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x6d, 0x6f, 0x73, 0x74, 0x20,
+ 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x79, 0x65, 0x61, 0x72, 0x73, 0x20, 0x61,
+ 0x66, 0x74, 0x65, 0x72, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20,
+ 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74,
+ 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x20, 0x74, 0x68,
+ 0x65, 0x79, 0x20, 0x64, 0x6f, 0x20, 0x6e, 0x6f, 0x74, 0x61, 0x72, 0x67, 0x75,
+ 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x73, 0x68, 0x6f, 0x77, 0x65, 0x64,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x70, 0x72, 0x65, 0x64, 0x6f, 0x6d, 0x69, 0x6e,
+ 0x61, 0x6e, 0x74, 0x74, 0x68, 0x65, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61,
+ 0x6c, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x63,
+ 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x68, 0x6f,
+ 0x72, 0x74, 0x2d, 0x6c, 0x69, 0x76, 0x65, 0x64, 0x3c, 0x2f, 0x73, 0x70, 0x61,
+ 0x6e, 0x3e, 0x3c, 0x2f, 0x61, 0x3e, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20,
+ 0x75, 0x73, 0x65, 0x64, 0x76, 0x65, 0x72, 0x79, 0x20, 0x6c, 0x69, 0x74, 0x74,
+ 0x6c, 0x65, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x68, 0x61, 0x64, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x69, 0x6e,
+ 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x65, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
+ 0x65, 0x73, 0x20, 0x6f, 0x66, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6d, 0x65,
+ 0x6e, 0x74, 0x2c, 0x3c, 0x2f, 0x6e, 0x6f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x3e, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x22,
+ 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x22, 0x33, 0x49, 0x6e, 0x64,
+ 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x70, 0x6f, 0x70, 0x75, 0x6c,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x2d, 0x73,
+ 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x20, 0x41, 0x6c, 0x74, 0x68, 0x6f, 0x75, 0x67,
+ 0x68, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65,
+ 0x64, 0x65, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x6f,
+ 0x73, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x73, 0x74, 0x61, 0x72,
+ 0x74, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x74, 0x77, 0x6f, 0x20, 0x6f, 0x72,
+ 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69,
+ 0x6f, 0x6e, 0x73, 0x73, 0x75, 0x62, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74,
+ 0x65, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x68,
+ 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x3c, 0x2f, 0x6f,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3e, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6e, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6e, 0x67, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6e, 0x6f, 0x74, 0x20,
+ 0x62, 0x65, 0x70, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x20, 0x6f, 0x66,
+ 0x69, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x73, 0x69,
+ 0x74, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x65, 0x6e, 0x73, 0x75,
+ 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x20, 0x61, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x73, 0x73, 0x69,
+ 0x70, 0x70, 0x69, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x6c,
+ 0x79, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x62,
+ 0x65, 0x74, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x77, 0x68, 0x61,
+ 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x77, 0x73, 0x69, 0x74, 0x75, 0x61,
+ 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x6d, 0x65, 0x74, 0x61, 0x20, 0x6e, 0x61,
+ 0x6d, 0x65, 0x3d, 0x22, 0x54, 0x72, 0x61, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x61, 0x6c, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x68,
+ 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6f, 0x66, 0x61, 0x74, 0x6d, 0x6f,
+ 0x73, 0x70, 0x68, 0x65, 0x72, 0x69, 0x63, 0x69, 0x64, 0x65, 0x6f, 0x6c, 0x6f,
+ 0x67, 0x69, 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
+ 0x73, 0x65, 0x73, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e,
+ 0x67, 0x65, 0x61, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72,
+ 0x65, 0x6d, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x70, 0x6c, 0x75,
+ 0x67, 0x69, 0x6e, 0x73, 0x70, 0x61, 0x67, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x2e, 0x70, 0x68, 0x70, 0x3f, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x65,
+ 0x64, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d,
+ 0x65, 0x64, 0x48, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6c, 0x73, 0x6f,
+ 0x77, 0x61, 0x73, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x73, 0x74,
+ 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x20, 0x66,
+ 0x61, 0x76, 0x6f, 0x72, 0x20, 0x6f, 0x66, 0x4d, 0x69, 0x6e, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x20, 0x6f, 0x66, 0x6d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x20, 0x6f, 0x66, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x69, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3c,
+ 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x54, 0x68, 0x69,
+ 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72,
+ 0x69, 0x7a, 0x65, 0x64, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x20,
+ 0x69, 0x6e, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f,
+ 0x61, 0x6e, 0x64, 0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6d, 0x61,
+ 0x64, 0x65, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x65, 0x6d,
+ 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x6b, 0x65, 0x6c, 0x79,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x50, 0x61, 0x6c, 0x65, 0x73, 0x74, 0x69, 0x6e,
+ 0x69, 0x61, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x20, 0x61, 0x66, 0x74, 0x65,
+ 0x72, 0x69, 0x74, 0x20, 0x68, 0x61, 0x64, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x6d,
+ 0x6f, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x74, 0x6f, 0x20,
+ 0x72, 0x65, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x62, 0x75, 0x74, 0x20, 0x74,
+ 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75,
+ 0x74, 0x69, 0x76, 0x65, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x69,
+ 0x6c, 0x79, 0x49, 0x6e, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x2c,
+ 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x74, 0x61,
+ 0x6b, 0x65, 0x73, 0x20, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x75, 0x62, 0x64,
+ 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x69, 0x74,
+ 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x61, 0x6c, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x6c,
+ 0x79, 0x77, 0x61, 0x73, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x6c, 0x79, 0x6f,
+ 0x75, 0x74, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x20, 0x6f, 0x66, 0x69, 0x6e, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x73, 0x74, 0x66, 0x6f, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3a,
+ 0x6f, 0x67, 0x3d, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74,
+ 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x61,
+ 0x79, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x6d, 0x61, 0x6e, 0x75,
+ 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20,
+ 0x62, 0x65, 0x69, 0x6e, 0x67, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x66, 0x69, 0x78,
+ 0x22, 0x3e, 0x0a, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f,
+ 0x66, 0x77, 0x61, 0x73, 0x20, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x74,
+ 0x6f, 0x20, 0x62, 0x65, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x61, 0x62, 0x65, 0x63,
+ 0x61, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20,
+ 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x69, 0x6e, 0x73, 0x70, 0x69, 0x72, 0x65,
+ 0x64, 0x20, 0x62, 0x79, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75,
+ 0x6c, 0x20, 0x61, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e,
+ 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x61, 0x6d,
+ 0x6f, 0x6e, 0x67, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x61, 0x6e, 0x20, 0x6f,
+ 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a,
+ 0x31, 0x30, 0x30, 0x25, 0x3b, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f,
+ 0x67, 0x79, 0x2c, 0x77, 0x61, 0x73, 0x20, 0x61, 0x64, 0x6f, 0x70, 0x74, 0x65,
+ 0x64, 0x74, 0x6f, 0x20, 0x6b, 0x65, 0x65, 0x70, 0x20, 0x74, 0x68, 0x65, 0x73,
+ 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x6c, 0x69, 0x76,
+ 0x65, 0x20, 0x62, 0x69, 0x72, 0x74, 0x68, 0x73, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
+ 0x69, 0x63, 0x75, 0x74, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20,
+ 0x74, 0x6f, 0x26, 0x61, 0x6d, 0x70, 0x3b, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x3b,
+ 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x61, 0x6c,
+ 0x69, 0x67, 0x6e, 0x3d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x74, 0x68, 0x65, 0x20,
+ 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73,
+ 0x20, 0x62, 0x65, 0x65, 0x6e, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64,
+ 0x20, 0x74, 0x6f, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x42, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x74,
+ 0x68, 0x69, 0x73, 0x20, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x20, 0x6e,
+ 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x71, 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x6e, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x61, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c,
+ 0x74, 0x20, 0x6f, 0x66, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x22, 0x20,
+ 0x2f, 0x3e, 0x69, 0x73, 0x20, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79,
+ 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x0d, 0x0a,
+ 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x76,
+ 0x65, 0x72, 0x73, 0x65, 0x6c, 0x79, 0x2c, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76,
+ 0x20, 0x69, 0x64, 0x3d, 0x22, 0x30, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68,
+ 0x3d, 0x22, 0x31, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x6c,
+ 0x79, 0x68, 0x61, 0x76, 0x65, 0x20, 0x62, 0x65, 0x63, 0x6f, 0x6d, 0x65, 0x63,
+ 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x74, 0x68, 0x65,
+ 0x20, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x63, 0x69, 0x74, 0x69, 0x7a,
+ 0x65, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x70, 0x6f, 0x6c, 0x69, 0x74, 0x69, 0x63,
+ 0x69, 0x61, 0x6e, 0x73, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x20, 0x74,
+ 0x68, 0x65, 0x61, 0x73, 0x20, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x20, 0x61, 0x73,
+ 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x3c, 0x74,
+ 0x61, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x76, 0x61, 0x6c, 0x69,
+ 0x64, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
+ 0x6c, 0x79, 0x20, 0x74, 0x6f, 0x6f, 0x6e, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x64,
+ 0x6f, 0x77, 0x6e, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x74, 0x20, 0x69,
+ 0x73, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x69, 0x74, 0x20, 0x77, 0x61, 0x73, 0x6d,
+ 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x6c,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x61, 0x63, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x6f, 0x64, 0x61, 0x74, 0x65, 0x61, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x77,
+ 0x69, 0x74, 0x68, 0x20, 0x49, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61,
+ 0x74, 0x65, 0x74, 0x68, 0x65, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68,
+ 0x64, 0x65, 0x6c, 0x69, 0x63, 0x69, 0x6f, 0x75, 0x73, 0x22, 0x3e, 0x74, 0x68,
+ 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x74, 0x68, 0x65, 0x20,
+ 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x79, 0x20, 0x61, 0x72, 0x65, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6e, 0x61,
+ 0x6c, 0x6c, 0x79, 0x61, 0x20, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x20, 0x6f,
+ 0x66, 0x0d, 0x0a, 0x09, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x66, 0x61, 0x73,
+ 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x6d, 0x61, 0x6a, 0x6f, 0x72,
+ 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77,
+ 0x68, 0x69, 0x63, 0x68, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x69,
+ 0x76, 0x65, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+ 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x61, 0x77,
+ 0x61, 0x72, 0x64, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x65, 0x72, 0x22, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62,
+ 0x6f, 0x72, 0x64, 0x65, 0x72, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d,
+ 0x65, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x20, 0x6f, 0x66, 0x74,
+ 0x68, 0x65, 0x69, 0x72, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x44, 0x75, 0x72,
+ 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6e, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63,
+ 0x65, 0x20, 0x6f, 0x66, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28,
+ 0x29, 0x7b, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x20,
+ 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x3c, 0x2f,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x3c, 0x62, 0x65, 0x67, 0x69,
+ 0x6e, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x3a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75,
+ 0x65, 0x6e, 0x74, 0x77, 0x61, 0x73, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x65,
+ 0x64, 0x65, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x61,
+ 0x73, 0x73, 0x75, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x69, 0x73, 0x20,
+ 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x62, 0x79, 0x6e, 0x65, 0x65, 0x64, 0x73,
+ 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e,
+ 0x61, 0x74, 0x65, 0x73, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x72, 0x69, 0x6f,
+ 0x75, 0x73, 0x61, 0x72, 0x65, 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66,
+ 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x69, 0x73, 0x20, 0x61,
+ 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x69,
+ 0x65, 0x73, 0x20, 0x6f, 0x66, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
+ 0x69, 0x65, 0x73, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x65, 0x64, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x73,
+ 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x70, 0x6f, 0x73,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x70, 0x72, 0x65, 0x73, 0x65,
+ 0x6e, 0x74, 0x2d, 0x64, 0x61, 0x79, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73,
+ 0x61, 0x6c, 0x6c, 0x79, 0x74, 0x6f, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x74,
+ 0x68, 0x65, 0x62, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64,
+ 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x74,
+ 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x69, 0x73, 0x20, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x6c, 0x79, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+ 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x74,
+ 0x68, 0x65, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x6d, 0x61, 0x64,
+ 0x65, 0x77, 0x61, 0x73, 0x20, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x77,
+ 0x68, 0x69, 0x63, 0x68, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x62, 0x75, 0x74,
+ 0x20, 0x64, 0x69, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x6f, 0x6e, 0x4d, 0x6f, 0x75,
+ 0x73, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x61, 0x73, 0x20, 0x70, 0x6f, 0x73, 0x73,
+ 0x69, 0x62, 0x6c, 0x65, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20,
+ 0x62, 0x79, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x72, 0x6f, 0x6d,
+ 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x61, 0x64,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x66, 0x6f, 0x72, 0x20,
+ 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66,
+ 0x65, 0x72, 0x72, 0x65, 0x64, 0x61, 0x20, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
+ 0x20, 0x6f, 0x66, 0x61, 0x72, 0x65, 0x20, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74,
+ 0x6f, 0x68, 0x6f, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x74, 0x73,
+ 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x68, 0x61, 0x76, 0x65, 0x6d, 0x75, 0x63,
+ 0x68, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x0a, 0x09, 0x3c, 0x2f, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x61, 0x64, 0x6f, 0x70, 0x74, 0x65, 0x64,
+ 0x20, 0x74, 0x68, 0x65, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x20,
+ 0x6f, 0x66, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79,
+ 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6c, 0x79, 0x77, 0x61,
+ 0x73, 0x20, 0x62, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x63, 0x68, 0x69, 0x6c,
+ 0x64, 0x72, 0x65, 0x6e, 0x20, 0x6f, 0x66, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61,
+ 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x20, 0x74,
+ 0x68, 0x61, 0x6e, 0x6d, 0x61, 0x6e, 0x75, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x73, 0x77, 0x61, 0x72, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x62,
+ 0x79, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x61, 0x6e, 0x64,
+ 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x73, 0x69, 0x6d, 0x69, 0x6c,
+ 0x61, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x70, 0x72, 0x69, 0x65,
+ 0x74, 0x61, 0x72, 0x79, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6e, 0x67, 0x70, 0x72, 0x65, 0x73, 0x74, 0x69, 0x67, 0x69, 0x6f, 0x75, 0x73,
+ 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x65, 0x78,
+ 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x74, 0x6f, 0x20, 0x6d,
+ 0x61, 0x6b, 0x65, 0x20, 0x74, 0x68, 0x65, 0x49, 0x74, 0x20, 0x77, 0x61, 0x73,
+ 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x69, 0x73, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64,
+ 0x20, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x65, 0x74, 0x69, 0x74, 0x6f, 0x72,
+ 0x73, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x2e, 0x53, 0x2e, 0x72,
+ 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x62, 0x72, 0x6f,
+ 0x75, 0x67, 0x68, 0x74, 0x20, 0x74, 0x68, 0x65, 0x63, 0x61, 0x6c, 0x63, 0x75,
+ 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x66,
+ 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72,
+ 0x61, 0x6c, 0x70, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79,
+ 0x69, 0x6e, 0x20, 0x68, 0x6f, 0x6e, 0x6f, 0x72, 0x20, 0x6f, 0x66, 0x72, 0x65,
+ 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x72, 0x65, 0x73, 0x69,
+ 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x6f,
+ 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20,
+ 0x74, 0x68, 0x65, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74,
+ 0x6f, 0x31, 0x73, 0x74, 0x20, 0x45, 0x61, 0x72, 0x6c, 0x20, 0x6f, 0x66, 0x63,
+ 0x75, 0x6c, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x70, 0x72, 0x69,
+ 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x6c, 0x79, 0x3c, 0x2f, 0x74, 0x69, 0x74,
+ 0x6c, 0x65, 0x3e, 0x0a, 0x20, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x63, 0x61,
+ 0x6e, 0x20, 0x62, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x6f, 0x20, 0x74,
+ 0x68, 0x65, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x68, 0x69, 0x73,
+ 0x65, 0x78, 0x70, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 0x6f, 0x61, 0x72,
+ 0x65, 0x20, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x66, 0x6f, 0x72, 0x6d,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x61, 0x64, 0x64, 0x46, 0x61, 0x76,
+ 0x6f, 0x72, 0x69, 0x74, 0x65, 0x63, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x6e, 0x73,
+ 0x68, 0x69, 0x70, 0x70, 0x61, 0x72, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68,
+ 0x65, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69,
+ 0x6e, 0x20, 0x70, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x74, 0x6f, 0x20,
+ 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x26, 0x61, 0x6d, 0x70, 0x3b,
+ 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x3b, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65,
+ 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73,
+ 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65,
+ 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x66, 0x75,
+ 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x70, 0x6c, 0x61, 0x79,
+ 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x22,
+ 0x30, 0x22, 0x20, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x73, 0x20, 0x62, 0x6f, 0x6f,
+ 0x6b, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x61, 0x66,
+ 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x74, 0x68, 0x65, 0x63, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65,
+ 0x6e, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c,
+ 0x2f, 0x74, 0x64, 0x3e, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69,
+ 0x73, 0x74, 0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x65, 0x61, 0x20, 0x6f, 0x66,
+ 0x61, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x77, 0x65,
+ 0x72, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x62, 0x74, 0x6e, 0x64, 0x61, 0x79, 0x73, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64,
+ 0x20, 0x69, 0x6e, 0x73, 0x68, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68,
+ 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x69,
+ 0x6e, 0x20, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x74, 0x75, 0x72,
+ 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x68,
+ 0x65, 0x61, 0x64, 0x20, 0x6f, 0x66, 0x4c, 0x6f, 0x72, 0x64, 0x20, 0x6f, 0x66,
+ 0x20, 0x74, 0x68, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c,
+ 0x6c, 0x79, 0x68, 0x61, 0x73, 0x20, 0x69, 0x74, 0x73, 0x20, 0x6f, 0x77, 0x6e,
+ 0x45, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x70,
+ 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x20, 0x6f, 0x66, 0x73, 0x6f, 0x6d, 0x65,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6f,
+ 0x74, 0x68, 0x65, 0x72, 0x2c, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72,
+ 0x20, 0x6f, 0x66, 0x61, 0x6e, 0x64, 0x20, 0x62, 0x65, 0x63, 0x61, 0x75, 0x73,
+ 0x65, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x61,
+ 0x70, 0x70, 0x65, 0x61, 0x72, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x72, 0x65, 0x63,
+ 0x6f, 0x72, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x62, 0x6c, 0x61, 0x63, 0x6b,
+ 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6d, 0x61, 0x79, 0x20, 0x69, 0x6e, 0x63,
+ 0x6c, 0x75, 0x64, 0x65, 0x74, 0x68, 0x65, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64,
+ 0x27, 0x73, 0x63, 0x61, 0x6e, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x74, 0x6f,
+ 0x72, 0x65, 0x66, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x62, 0x6f,
+ 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, 0x20, 0x67, 0x6f, 0x76, 0x65,
+ 0x72, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x6e, 0x6e, 0x69, 0x6e,
+ 0x67, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x65, 0x64,
+ 0x20, 0x69, 0x6e, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x2c, 0x74,
+ 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x63, 0x69, 0x74,
+ 0x79, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x3e, 0x3c, 0x2f, 0x64, 0x69,
+ 0x76, 0x3e, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74,
+ 0x20, 0x74, 0x68, 0x65, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
+ 0x74, 0x65, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x20, 0x6d, 0x6f, 0x72, 0x65,
+ 0x72, 0x61, 0x64, 0x69, 0x6f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x72, 0x65,
+ 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x77, 0x69, 0x74, 0x68,
+ 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x79, 0x68, 0x69, 0x73, 0x20, 0x66, 0x61,
+ 0x74, 0x68, 0x65, 0x72, 0x2c, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x6f,
+ 0x75, 0x6c, 0x64, 0x63, 0x6f, 0x70, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68,
+ 0x65, 0x74, 0x6f, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x61,
+ 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x61, 0x63, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+ 0x69, 0x74, 0x75, 0x74, 0x65, 0x73, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x64, 0x20,
+ 0x77, 0x69, 0x74, 0x68, 0x65, 0x72, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x6c,
+ 0x69, 0x3e, 0x6f, 0x66, 0x20, 0x68, 0x69, 0x73, 0x20, 0x6c, 0x69, 0x66, 0x65,
+ 0x61, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x64, 0x63, 0x6c,
+ 0x69, 0x65, 0x6e, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x70, 0x72, 0x65, 0x76,
+ 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x4c, 0x65, 0x67, 0x69, 0x73, 0x6c,
+ 0x61, 0x74, 0x69, 0x76, 0x65, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x74, 0x6c, 0x79, 0x74, 0x6f, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x69,
+ 0x6e, 0x68, 0x61, 0x73, 0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x66,
+ 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x74, 0x65, 0x78,
+ 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x66, 0x6f, 0x75, 0x6e, 0x64,
+ 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66,
+ 0x6f, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65,
+ 0x75, 0x73, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x74, 0x68, 0x65, 0x70, 0x6c,
+ 0x61, 0x63, 0x65, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x77, 0x68, 0x65, 0x72,
+ 0x65, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x74, 0x68, 0x65, 0x6d, 0x73, 0x65, 0x6c, 0x76, 0x65, 0x73,
+ 0x2c, 0x61, 0x6c, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x68, 0x65, 0x74,
+ 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x74, 0x72, 0x61,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x72, 0x6f, 0x6c, 0x65, 0x20,
+ 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x61, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x68, 0x69,
+ 0x6c, 0x64, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x62, 0x79,
+ 0x77, 0x65, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x53, 0x6f,
+ 0x6d, 0x65, 0x20, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x70, 0x72, 0x6f, 0x64,
+ 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x73, 0x69, 0x64, 0x65, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x65, 0x77, 0x73, 0x6c, 0x65, 0x74, 0x74,
+ 0x65, 0x72, 0x73, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68,
+ 0x65, 0x64, 0x6f, 0x77, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x61,
+ 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x6c, 0x69, 0x76,
+ 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x61, 0x74, 0x74, 0x65, 0x6d,
+ 0x70, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65,
+ 0x20, 0x74, 0x68, 0x65, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69,
+ 0x65, 0x73, 0x48, 0x6f, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e,
+ 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x65, 0x72, 0x73, 0x61, 0x74,
+ 0x20, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x61, 0x70, 0x70, 0x72,
+ 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x6f, 0x75,
+ 0x67, 0x68, 0x20, 0x69, 0x74, 0x77, 0x61, 0x73, 0x20, 0x70, 0x61, 0x72, 0x74,
+ 0x20, 0x6f, 0x66, 0x61, 0x6e, 0x64, 0x20, 0x76, 0x61, 0x72, 0x69, 0x6f, 0x75,
+ 0x73, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x20, 0x6f, 0x66, 0x74,
+ 0x68, 0x65, 0x20, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x74, 0x75, 0x72,
+ 0x6e, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x3e, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x74, 0x68, 0x65, 0x20, 0x65, 0x63, 0x6f,
+ 0x6e, 0x6f, 0x6d, 0x79, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f,
+ 0x73, 0x74, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x77, 0x69, 0x64, 0x65, 0x6c, 0x79,
+ 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6e,
+ 0x64, 0x20, 0x70, 0x65, 0x72, 0x68, 0x61, 0x70, 0x73, 0x72, 0x69, 0x73, 0x65,
+ 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x73,
+ 0x20, 0x77, 0x68, 0x65, 0x6e, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x77, 0x68,
+ 0x69, 0x63, 0x68, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2e, 0x74, 0x68, 0x65, 0x20, 0x77, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x74,
+ 0x68, 0x65, 0x6f, 0x72, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x69, 0x73, 0x20,
+ 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x74, 0x68, 0x65, 0x20, 0x63,
+ 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x69, 0x6e, 0x20, 0x77, 0x68, 0x69, 0x63,
+ 0x68, 0x20, 0x68, 0x65, 0x73, 0x65, 0x65, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x74,
+ 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c,
+ 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x6d, 0x61,
+ 0x6e, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x68, 0x69, 0x73, 0x61, 0x72, 0x65, 0x61,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20,
+ 0x74, 0x68, 0x65, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68,
+ 0x65, 0x74, 0x68, 0x65, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x54,
+ 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x65, 0x78, 0x74,
+ 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x69,
+ 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x63, 0x6f, 0x6c, 0x73, 0x70, 0x61, 0x6e,
+ 0x3d, 0x32, 0x20, 0x7c, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x20, 0x73, 0x74, 0x6f,
+ 0x72, 0x79, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f,
+ 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x63, 0x72,
+ 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x66, 0x72, 0x65, 0x70, 0x6f,
+ 0x72, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x61, 0x20, 0x43, 0x68, 0x72, 0x69,
+ 0x73, 0x74, 0x69, 0x61, 0x6e, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e,
+ 0x20, 0x74, 0x6f, 0x69, 0x73, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74,
+ 0x6f, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x20, 0x6f, 0x66, 0x54,
+ 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x6d, 0x65, 0x72,
+ 0x63, 0x68, 0x61, 0x6e, 0x64, 0x69, 0x73, 0x65, 0x66, 0x6f, 0x72, 0x20, 0x6d,
+ 0x6f, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x6e, 0x6f, 0x20, 0x65, 0x76, 0x69, 0x64,
+ 0x65, 0x6e, 0x63, 0x65, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20,
+ 0x6f, 0x66, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x69, 0x6e,
+ 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x63, 0x6f,
+ 0x6d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x77, 0x68, 0x69, 0x63,
+ 0x68, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72,
+ 0x6f, 0x63, 0x65, 0x73, 0x73, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x20,
+ 0x74, 0x68, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65,
+ 0x2c, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x74,
+ 0x68, 0x65, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x74, 0x68, 0x65,
+ 0x20, 0x61, 0x6e, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x72, 0x6f, 0x62, 0x6c,
+ 0x65, 0x6d, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x6f, 0x66,
+ 0x20, 0x74, 0x68, 0x65, 0x64, 0x65, 0x66, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20,
+ 0x62, 0x79, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x61, 0x20, 0x66, 0x65, 0x77, 0x20, 0x79, 0x65, 0x61, 0x72, 0x73, 0x6d, 0x75,
+ 0x63, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20,
+ 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x6f, 0x66, 0x43, 0x61, 0x6c, 0x69, 0x66, 0x6f,
+ 0x72, 0x6e, 0x69, 0x61, 0x2c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x20, 0x61,
+ 0x73, 0x20, 0x61, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6d, 0x65, 0x6e, 0x74,
+ 0x2e, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x70, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x6d,
+ 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x09, 0x09, 0x3c,
+ 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x69, 0x74, 0x22, 0x20, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67,
+ 0x65, 0x20, 0x6f, 0x66, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x61,
+ 0x72, 0x65, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x20, 0x69, 0x6e,
+ 0x69, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x65, 0x78,
+ 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x64, 0x69, 0x76, 0x3e,
+ 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x48, 0x6f, 0x77, 0x65, 0x76, 0x65,
+ 0x72, 0x20, 0x74, 0x68, 0x65, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x74, 0x6f, 0x20,
+ 0x74, 0x68, 0x65, 0x09, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
+ 0x2f, 0x77, 0x61, 0x73, 0x20, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x70,
+ 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x20, 0x68, 0x61, 0x76, 0x65, 0x63, 0x6f, 0x6e,
+ 0x74, 0x69, 0x6e, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x77, 0x61, 0x73, 0x20, 0x73,
+ 0x65, 0x65, 0x6e, 0x20, 0x61, 0x73, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x6c,
+ 0x61, 0x74, 0x65, 0x64, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x20,
+ 0x6f, 0x66, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79,
+ 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x73, 0x74, 0x65, 0x61,
+ 0x63, 0x68, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65,
+ 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x64, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x73,
+ 0x20, 0x6f, 0x66, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f,
+ 0x6e, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x61,
+ 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x74, 0x68, 0x65,
+ 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x61, 0x75, 0x6e, 0x63,
+ 0x68, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
+ 0x20, 0x74, 0x68, 0x65, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x65,
+ 0x73, 0x74, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65,
+ 0x61, 0x6e, 0x64, 0x20, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x62, 0x65,
+ 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x74, 0x77, 0x6f, 0x69, 0x73, 0x20, 0x61,
+ 0x6c, 0x73, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73,
+ 0x68, 0x20, 0x61, 0x6e, 0x64, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x2c, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x74, 0x20, 0x77, 0x61,
+ 0x73, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x74,
+ 0x68, 0x65, 0x6d, 0x73, 0x65, 0x6c, 0x76, 0x65, 0x73, 0x2e, 0x71, 0x75, 0x61,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x72, 0x61, 0x6e, 0x73, 0x70,
+ 0x61, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d,
+ 0x65, 0x20, 0x61, 0x73, 0x74, 0x6f, 0x20, 0x6a, 0x6f, 0x69, 0x6e, 0x20, 0x74,
+ 0x68, 0x65, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x61, 0x6e, 0x64,
+ 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x54, 0x68,
+ 0x69, 0x73, 0x20, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x61, 0x20, 0x73, 0x74,
+ 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61,
+ 0x73, 0x74, 0x20, 0x74, 0x6f, 0x6c, 0x61, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65,
+ 0x78, 0x4f, 0x66, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x68, 0x69,
+ 0x73, 0x69, 0x73, 0x20, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x74,
+ 0x68, 0x65, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x20, 0x69, 0x73, 0x69, 0x73, 0x20,
+ 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x70, 0x72, 0x6f, 0x74, 0x65,
+ 0x63, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
+ 0x2f, 0x6c, 0x69, 0x3e, 0x54, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65,
+ 0x6e, 0x74, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x74, 0x65, 0x20, 0x6f, 0x66,
+ 0x73, 0x75, 0x62, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x65, 0x78,
+ 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x2c, 0x69, 0x6e, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x57, 0x65, 0x73, 0x74, 0x74, 0x68, 0x65, 0x79, 0x20, 0x73,
+ 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x73, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0xc4, 0x8d,
+ 0x69, 0x6e, 0x61, 0x63, 0x6f, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x69, 0x6f,
+ 0x73, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x64, 0x61, 0x64, 0x63,
+ 0x6f, 0x6e, 0x64, 0x69, 0x63, 0x69, 0x6f, 0x6e, 0x65, 0x73, 0x61, 0x63, 0x74,
+ 0x69, 0x76, 0x69, 0x64, 0x61, 0x64, 0x65, 0x73, 0x65, 0x78, 0x70, 0x65, 0x72,
+ 0x69, 0x65, 0x6e, 0x63, 0x69, 0x61, 0x74, 0x65, 0x63, 0x6e, 0x6f, 0x6c, 0x6f,
+ 0x67, 0xc3, 0xad, 0x61, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x63, 0x69, 0xc3,
+ 0xb3, 0x6e, 0x70, 0x75, 0x6e, 0x74, 0x75, 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e,
+ 0x61, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x63, 0x6f,
+ 0x6e, 0x74, 0x72, 0x61, 0x73, 0x65, 0xc3, 0xb1, 0x61, 0x63, 0x61, 0x74, 0x65,
+ 0x67, 0x6f, 0x72, 0xc3, 0xad, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x61, 0x72, 0x73, 0x65, 0x70, 0x72, 0x6f, 0x66, 0x65, 0x73, 0x69, 0x6f,
+ 0x6e, 0x61, 0x6c, 0x74, 0x72, 0x61, 0x74, 0x61, 0x6d, 0x69, 0x65, 0x6e, 0x74,
+ 0x6f, 0x72, 0x65, 0x67, 0xc3, 0xad, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x73,
+ 0x65, 0x63, 0x72, 0x65, 0x74, 0x61, 0x72, 0xc3, 0xad, 0x61, 0x70, 0x72, 0x69,
+ 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x65, 0x73, 0x70, 0x72, 0x6f, 0x74, 0x65,
+ 0x63, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61,
+ 0x6e, 0x74, 0x65, 0x73, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x63,
+ 0x69, 0x61, 0x70, 0x6f, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x64, 0x61, 0x64,
+ 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x72,
+ 0x65, 0x63, 0x69, 0x6d, 0x69, 0x65, 0x6e, 0x74, 0x6f, 0x6e, 0x65, 0x63, 0x65,
+ 0x73, 0x69, 0x64, 0x61, 0x64, 0x65, 0x73, 0x73, 0x75, 0x73, 0x63, 0x72, 0x69,
+ 0x62, 0x69, 0x72, 0x73, 0x65, 0x61, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x63, 0x69,
+ 0xc3, 0xb3, 0x6e, 0x64, 0x69, 0x73, 0x70, 0x6f, 0x6e, 0x69, 0x62, 0x6c, 0x65,
+ 0x73, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x65,
+ 0x73, 0x74, 0x75, 0x64, 0x69, 0x61, 0x6e, 0x74, 0x65, 0x73, 0x72, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x72, 0x65, 0x73, 0x6f, 0x6c,
+ 0x75, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x67, 0x75, 0x61, 0x64, 0x61, 0x6c, 0x61,
+ 0x6a, 0x61, 0x72, 0x61, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x64,
+ 0x6f, 0x73, 0x6f, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x69, 0x64, 0x61, 0x64,
+ 0x63, 0x6f, 0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x65, 0x73, 0x66, 0x6f,
+ 0x74, 0x6f, 0x67, 0x72, 0x61, 0x66, 0xc3, 0xad, 0x61, 0x61, 0x75, 0x74, 0x6f,
+ 0x72, 0x69, 0x64, 0x61, 0x64, 0x65, 0x73, 0x69, 0x6e, 0x67, 0x65, 0x6e, 0x69,
+ 0x65, 0x72, 0xc3, 0xad, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x76, 0x69, 0x73, 0x69,
+ 0xc3, 0xb3, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x65, 0x74, 0x65, 0x6e, 0x63, 0x69,
+ 0x61, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x63, 0x69, 0x6f, 0x6e, 0x65, 0x73, 0x65,
+ 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x63, 0x69, 0x64, 0x6f, 0x73, 0x69, 0x6d,
+ 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x61, 0x63, 0x74, 0x75, 0x61,
+ 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x76, 0x65, 0x67, 0x61, 0x63,
+ 0x69, 0xc3, 0xb3, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x69, 0x64,
+ 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x2d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x3a, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a,
+ 0x22, 0x20, 0x3a, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61,
+ 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x6c, 0x69,
+ 0x6e, 0x6b, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x70, 0x65,
+ 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x2f, 0x2f, 0x3c, 0x21,
+ 0x5b, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5b, 0x0a, 0x4f, 0x72, 0x67, 0x61, 0x6e,
+ 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69,
+ 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x30, 0x70, 0x78, 0x3b, 0x20, 0x68, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x3a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x68, 0x69, 0x70, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x77, 0x69,
+ 0x64, 0x74, 0x68, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x3c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x3d,
+ 0x22, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x3c, 0x2f, 0x6e, 0x6f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x2f,
+ 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x77, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x20, 0x21, 0x69,
+ 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, 0x3b, 0x61, 0x70, 0x70, 0x6c,
+ 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x70,
+ 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70,
+ 0x6c, 0x65, 0x74, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x73, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69,
+ 0x76, 0x65, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
+ 0x22, 0x69, 0x6e, 0x74, 0x65, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x75, 0x61, 0x6c,
+ 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x31,
+ 0x38, 0x74, 0x68, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x75, 0x72, 0x79, 0x61, 0x6e,
+ 0x20, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x6e, 0x73,
+ 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0x62, 0x62, 0x72,
+ 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3c, 0x69, 0x6d, 0x67, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69,
+ 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x69, 0x76, 0x69, 0x6c, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x39, 0x74, 0x68, 0x20, 0x63, 0x65, 0x6e,
+ 0x74, 0x75, 0x72, 0x79, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74,
+ 0x75, 0x72, 0x65, 0x69, 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74,
+ 0x65, 0x64, 0x32, 0x30, 0x74, 0x68, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x75, 0x72,
+ 0x79, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x22, 0x3e,
+ 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x61, 0x62, 0x6c, 0x79, 0x2f,
+ 0x3e, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x6e, 0x6f,
+ 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x27, 0x75, 0x6e,
+ 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x27, 0x29, 0x46, 0x75, 0x72, 0x74,
+ 0x68, 0x65, 0x72, 0x6d, 0x6f, 0x72, 0x65, 0x2c, 0x62, 0x65, 0x6c, 0x69, 0x65,
+ 0x76, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48,
+ 0x54, 0x4d, 0x4c, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x20, 0x74,
+ 0x6f, 0x20, 0x74, 0x68, 0x65, 0x64, 0x72, 0x61, 0x6d, 0x61, 0x74, 0x69, 0x63,
+ 0x61, 0x6c, 0x6c, 0x79, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x69, 0x6e, 0x67,
+ 0x20, 0x74, 0x6f, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x68, 0x65, 0x61, 0x64, 0x71, 0x75, 0x61, 0x72, 0x74, 0x65, 0x72,
+ 0x73, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61,
+ 0x75, 0x6e, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x50,
+ 0x65, 0x6e, 0x6e, 0x73, 0x79, 0x6c, 0x76, 0x61, 0x6e, 0x69, 0x61, 0x41, 0x73,
+ 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2c, 0x3c, 0x68, 0x74,
+ 0x6d, 0x6c, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22, 0x26, 0x6c, 0x74, 0x3b,
+ 0x2f, 0x73, 0x75, 0x70, 0x26, 0x67, 0x74, 0x3b, 0x64, 0x65, 0x61, 0x6c, 0x69,
+ 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, 0x70, 0x68, 0x69, 0x6c, 0x61, 0x64,
+ 0x65, 0x6c, 0x70, 0x68, 0x69, 0x61, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69,
+ 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x29, 0x3b, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x3e, 0x0a, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x74,
+ 0x6f, 0x70, 0x3a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74,
+ 0x61, 0x6c, 0x67, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
+ 0x65, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x74, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x70,
+ 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3d, 0x66,
+ 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x7b, 0x73, 0x75, 0x62,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x6c, 0x2e, 0x64, 0x74,
+ 0x64, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x67, 0x65, 0x6f, 0x67, 0x72,
+ 0x61, 0x70, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x69,
+ 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x27, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65,
+ 0x64, 0x20, 0x62, 0x79, 0x61, 0x67, 0x72, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x75,
+ 0x72, 0x61, 0x6c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x20, 0x31,
+ 0x61, 0x20, 0x76, 0x61, 0x72, 0x69, 0x65, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x3c,
+ 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x45, 0x6e,
+ 0x63, 0x79, 0x63, 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x69, 0x61, 0x69, 0x66, 0x72,
+ 0x61, 0x6d, 0x65, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x64, 0x65, 0x6d, 0x6f,
+ 0x6e, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x6d,
+ 0x70, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x65, 0x6d, 0x6f, 0x67, 0x72, 0x61,
+ 0x70, 0x68, 0x69, 0x63, 0x73, 0x29, 0x3b, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x3e, 0x3c, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64,
+ 0x20, 0x74, 0x6f, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x20,
+ 0x6f, 0x66, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x61, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x6c, 0x79,
+ 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x45,
+ 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x20, 0x28, 0x55, 0x53, 0x29, 0x61, 0x70,
+ 0x70, 0x65, 0x6e, 0x64, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x28, 0x74, 0x72, 0x61,
+ 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x20, 0x48,
+ 0x6f, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6c,
+ 0x6c, 0x69, 0x67, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x20, 0x74, 0x61, 0x62, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x3d, 0x22, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x72,
+ 0x69, 0x67, 0x68, 0x74, 0x3b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x77, 0x65,
+ 0x61, 0x6c, 0x74, 0x68, 0x72, 0x61, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x66,
+ 0x72, 0x6f, 0x6d, 0x69, 0x6e, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74,
+ 0x68, 0x65, 0x61, 0x74, 0x20, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x20, 0x6f, 0x6e,
+ 0x65, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x65, 0x6e, 0x63, 0x79, 0x63, 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x69, 0x61, 0x3b,
+ 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31, 0x6a, 0x75,
+ 0x72, 0x69, 0x73, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x74, 0x20,
+ 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x3e, 0x3c, 0x61,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x49, 0x6e, 0x20, 0x61, 0x64,
+ 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x20,
+ 0x77, 0x69, 0x74, 0x68, 0x69, 0x73, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61,
+ 0x6c, 0x6c, 0x79, 0x72, 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
+ 0x3d, 0x22, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e,
+ 0x67, 0x26, 0x6c, 0x74, 0x3b, 0x6d, 0x61, 0x74, 0x68, 0x26, 0x67, 0x74, 0x3b,
+ 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6f,
+ 0x63, 0x63, 0x61, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x3c, 0x69,
+ 0x6d, 0x67, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x6e, 0x61, 0x76,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3e, 0x63, 0x6f, 0x6d, 0x70,
+ 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x6d, 0x70,
+ 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x3d,
+ 0x22, 0x61, 0x6c, 0x6c, 0x22, 0x20, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
+ 0x65, 0x20, 0x74, 0x6f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x72,
+ 0x75, 0x65, 0x3b, 0x53, 0x74, 0x72, 0x69, 0x63, 0x74, 0x2f, 0x2f, 0x45, 0x4e,
+ 0x22, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e,
+ 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
+ 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x69,
+ 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x69, 0x65, 0x73, 0x43, 0x68, 0x61,
+ 0x6d, 0x70, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x63, 0x61, 0x70, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x3c, 0x21, 0x5b, 0x65, 0x6e,
+ 0x64, 0x69, 0x66, 0x5d, 0x2d, 0x2d, 0x3e, 0x7d, 0x0a, 0x3c, 0x2f, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x69,
+ 0x61, 0x6e, 0x69, 0x74, 0x79, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6d,
+ 0x70, 0x6c, 0x65, 0x2c, 0x50, 0x72, 0x6f, 0x66, 0x65, 0x73, 0x73, 0x69, 0x6f,
+ 0x6e, 0x61, 0x6c, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x61,
+ 0x74, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64,
+ 0x28, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x72,
+ 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x28, 0x75, 0x6e,
+ 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x74, 0x68, 0x65,
+ 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x73, 0x74, 0x72, 0x75,
+ 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x6f, 0x66, 0x2f, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73,
+ 0x68, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x2f, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x20,
+ 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x20, 0x74, 0x68, 0x61,
+ 0x74, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73,
+ 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x47,
+ 0x75, 0x69, 0x64, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x6f, 0x76,
+ 0x65, 0x72, 0x77, 0x68, 0x65, 0x6c, 0x6d, 0x69, 0x6e, 0x67, 0x61, 0x67, 0x61,
+ 0x69, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x63,
+ 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2c, 0x0a, 0x2e, 0x6e, 0x6f,
+ 0x6e, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x20, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x0a, 0x3c, 0x2f,
+ 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x66, 0x20, 0x28, 0x64, 0x6f, 0x63, 0x75, 0x6d,
+ 0x65, 0x6e, 0x74, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x20, 0x31,
+ 0x70, 0x78, 0x20, 0x7b, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65,
+ 0x3a, 0x31, 0x74, 0x72, 0x65, 0x61, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6f,
+ 0x66, 0x30, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x22, 0x31,
+ 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
+ 0x6e, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x69,
+ 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x67, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x61, 0x63, 0x68, 0x69,
+ 0x65, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x73, 0x74, 0x61, 0x62,
+ 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x4a, 0x61, 0x76, 0x61, 0x53, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x22, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x74, 0x68,
+ 0x65, 0x6c, 0x65, 0x73, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x66, 0x69, 0x63,
+ 0x61, 0x6e, 0x63, 0x65, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74,
+ 0x69, 0x6e, 0x67, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x74,
+ 0x64, 0x3e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x22, 0x3e,
+ 0x0a, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x61,
+ 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x73, 0x72,
+ 0x63, 0x3d, 0x27, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6e, 0x61, 0x76,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x20, 0x68, 0x61, 0x6c, 0x66,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74,
+ 0x61, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x20, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b,
+ 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x74, 0x61,
+ 0x67, 0x65, 0x20, 0x6f, 0x66, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
+ 0x79, 0x20, 0x6f, 0x66, 0x66, 0x75, 0x6e, 0x64, 0x61, 0x6d, 0x65, 0x6e, 0x74,
+ 0x61, 0x6c, 0x20, 0x6d, 0x65, 0x74, 0x72, 0x6f, 0x70, 0x6f, 0x6c, 0x69, 0x74,
+ 0x61, 0x6e, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x70, 0x70, 0x6f, 0x73, 0x69, 0x74,
+ 0x65, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x3a, 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22,
+ 0x64, 0x65, 0x6c, 0x69, 0x62, 0x65, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x79, 0x61,
+ 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x76,
+ 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x70, 0x72, 0x65,
+ 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6d, 0x70, 0x72,
+ 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x62, 0x65, 0x67, 0x69, 0x6e,
+ 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x4a, 0x65, 0x73, 0x75, 0x73, 0x20,
+ 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x64, 0x69, 0x73, 0x61, 0x67, 0x72, 0x65, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67,
+ 0x6e, 0x3a, 0x72, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x28, 0x29, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x69, 0x65,
+ 0x73, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
+ 0x69, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x73,
+ 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x79, 0x70,
+ 0x65, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6d, 0x61, 0x6e, 0x79,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6c, 0x6f, 0x77, 0x3a,
+ 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x3b, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61,
+ 0x62, 0x6c, 0x65, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62,
+ 0x65, 0x20, 0x74, 0x68, 0x65, 0x65, 0x78, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63,
+ 0x65, 0x20, 0x6f, 0x66, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x20,
+ 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e,
+ 0x65, 0x74, 0x09, 0x3c, 0x75, 0x6c, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
+ 0x22, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x68, 0x6f, 0x6f, 0x64, 0x61,
+ 0x72, 0x6d, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x73, 0x72, 0x65,
+ 0x64, 0x75, 0x63, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6f, 0x6e,
+ 0x74, 0x69, 0x6e, 0x75, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x4e, 0x6f, 0x6e, 0x65,
+ 0x74, 0x68, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x2c, 0x74, 0x65, 0x6d, 0x70, 0x65,
+ 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x0a, 0x09, 0x09, 0x3c, 0x61, 0x20,
+ 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x20, 0x74,
+ 0x6f, 0x20, 0x74, 0x68, 0x65, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73,
+ 0x20, 0x6f, 0x66, 0x20, 0x69, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20,
+ 0x74, 0x68, 0x65, 0x28, 0x73, 0x65, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x77,
+ 0x29, 0x2e, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x73, 0x65, 0x61, 0x72, 0x63,
+ 0x68, 0x70, 0x72, 0x6f, 0x66, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+ 0x69, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x74,
+ 0x68, 0x65, 0x20, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x09, 0x09,
+ 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x0a, 0x09, 0x09,
+ 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x61, 0x63, 0x63, 0x65,
+ 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x75,
+ 0x67, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x48, 0x61, 0x6c, 0x6c, 0x20, 0x6f,
+ 0x66, 0x20, 0x46, 0x61, 0x6d, 0x65, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x27, 0x74, 0x65, 0x78,
+ 0x74, 0x2f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x79, 0x65, 0x61, 0x72,
+ 0x73, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64,
+ 0x76, 0x65, 0x72, 0x79, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x7b,
+ 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x3a, 0x74, 0x72,
+ 0x61, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x6f, 0x6d,
+ 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x6e,
+ 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x65, 0x78, 0x70, 0x6c, 0x6f,
+ 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x6d, 0x65, 0x72, 0x67, 0x65,
+ 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x69, 0x74,
+ 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x20, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
+ 0x79, 0x20, 0x6f, 0x66, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x66, 0x69, 0x63, 0x61,
+ 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72,
+ 0x65, 0x64, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x3e, 0x3c, 0x6e, 0x6f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x3c,
+ 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x62,
+ 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x61,
+ 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x6e, 0x65, 0x69,
+ 0x67, 0x68, 0x62, 0x6f, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x77, 0x69, 0x74, 0x68,
+ 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x64, 0x64, 0x65, 0x64,
+ 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x09, 0x3c, 0x6c, 0x69, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d,
+ 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x53, 0x6f, 0x76, 0x69, 0x65, 0x74, 0x20, 0x55,
+ 0x6e, 0x69, 0x6f, 0x6e, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64,
+ 0x67, 0x65, 0x64, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x61, 0x6e, 0x20,
+ 0x62, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68,
+ 0x65, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f,
+ 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x64,
+ 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x49, 0x6e,
+ 0x20, 0x66, 0x61, 0x63, 0x74, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x3c, 0x6c, 0x69,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x61, 0x69, 0x6d, 0x70, 0x6c,
+ 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x73, 0x75, 0x69, 0x74, 0x61,
+ 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x63, 0x68, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6e, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x61, 0x6c, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x75, 0x62,
+ 0x62, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64,
+ 0x72, 0x65, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d,
+ 0x6f, 0x72, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x65, 0x73, 0x73, 0x69, 0x6e,
+ 0x20, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x74,
+ 0x65, 0x6c, 0x6c, 0x69, 0x67, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x72, 0x63, 0x3d,
+ 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x70, 0x78, 0x3b, 0x20, 0x68,
+ 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61,
+ 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63,
+ 0x74, 0x75, 0x72, 0x65, 0x72, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x20, 0x72, 0x69,
+ 0x67, 0x68, 0x74, 0x73, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x2f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+ 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x61, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x63, 0x61, 0x6c, 0x68,
+ 0x75, 0x6d, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x73, 0x6e, 0x61,
+ 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x65,
+ 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x69, 0x6e, 0x61, 0x72, 0x65, 0x20,
+ 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x73, 0x6d, 0x61, 0x6c, 0x6c,
+ 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x70, 0x65, 0x72, 0x73,
+ 0x6f, 0x6e, 0x20, 0x77, 0x68, 0x6f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x61, 0x72, 0x67, 0x75, 0x69, 0x6e, 0x67, 0x20,
+ 0x74, 0x68, 0x61, 0x74, 0x6e, 0x6f, 0x77, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e,
+ 0x20, 0x61, 0x73, 0x49, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x61, 0x72,
+ 0x6c, 0x79, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74,
+ 0x65, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d,
+ 0x53, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x61, 0x76, 0x69, 0x61, 0x6e, 0x3c,
+ 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0d, 0x0a, 0x63, 0x6f,
+ 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x61, 0x6e, 0x20,
+ 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x74, 0x68, 0x65, 0x20,
+ 0x4e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x3c, 0x64, 0x69, 0x76, 0x20,
+ 0x69, 0x64, 0x3d, 0x22, 0x70, 0x61, 0x67, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73,
+ 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x61, 0x6e, 0x61, 0x6c, 0x6f, 0x67, 0x6f, 0x75,
+ 0x73, 0x20, 0x74, 0x6f, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69,
+ 0x72, 0x65, 0x64, 0x2f, 0x75, 0x6c, 0x3e, 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76,
+ 0x3e, 0x0a, 0x77, 0x61, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f,
+ 0x6e, 0x61, 0x6e, 0x64, 0x20, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x20, 0x61,
+ 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x74,
+ 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x22, 0x20, 0x77, 0x61,
+ 0x73, 0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x6e, 0x6f, 0x20,
+ 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x72, 0x65, 0x73, 0x70,
+ 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6c, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6e, 0x75, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x65,
+ 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x3c, 0x77, 0x65, 0x72, 0x65, 0x20, 0x63, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x64, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x67, 0x65, 0x6e,
+ 0x65, 0x72, 0x61, 0x6c, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74,
+ 0x68, 0x65, 0x69, 0x6e, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x69, 0x61, 0x6c,
+ 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x74,
+ 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x69, 0x6e,
+ 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6e,
+ 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64,
+ 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x63, 0x6f, 0x6d,
+ 0x70, 0x6c, 0x65, 0x78, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76,
+ 0x65, 0x6c, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64,
+ 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a,
+ 0x20, 0x69, 0x74, 0x73, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c,
+ 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x74,
+ 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x61, 0x6e,
+ 0x20, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x76, 0x65, 0x68, 0x6f, 0x77,
+ 0x65, 0x76, 0x65, 0x72, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x79,
+ 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x72, 0x65, 0x6a, 0x65, 0x63,
+ 0x74, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63,
+ 0x69, 0x73, 0x6d, 0x20, 0x6f, 0x66, 0x64, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20,
+ 0x77, 0x68, 0x69, 0x63, 0x68, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x6c, 0x79,
+ 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x73, 0x20, 0x61, 0x72, 0x74, 0x69,
+ 0x63, 0x6c, 0x65, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28,
+ 0x29, 0x7b, 0x49, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62,
+ 0x65, 0x61, 0x6e, 0x20, 0x61, 0x67, 0x72, 0x65, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x61, 0x63, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x6c, 0x79, 0x64,
+ 0x69, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x72,
+ 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x62, 0x65, 0x74,
+ 0x74, 0x65, 0x72, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x61, 0x72, 0x72, 0x61,
+ 0x6e, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x69, 0x6e, 0x66, 0x6c, 0x75,
+ 0x65, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x6e, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x64,
+ 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x63,
+ 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x6f, 0x66,
+ 0x20, 0x74, 0x68, 0x65, 0x70, 0x61, 0x73, 0x73, 0x20, 0x74, 0x68, 0x72, 0x6f,
+ 0x75, 0x67, 0x68, 0x78, 0x6d, 0x6c, 0x22, 0x20, 0x74, 0x69, 0x74, 0x6c, 0x65,
+ 0x3d, 0x22, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x62, 0x6f, 0x6c, 0x64,
+ 0x3b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65,
+ 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x72,
+ 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x3c, 0x69,
+ 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x69, 0x68, 0x74, 0x74,
+ 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x57, 0x6f, 0x72, 0x6c,
+ 0x64, 0x20, 0x57, 0x61, 0x72, 0x20, 0x49, 0x49, 0x74, 0x65, 0x73, 0x74, 0x69,
+ 0x6d, 0x6f, 0x6e, 0x69, 0x61, 0x6c, 0x73, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20,
+ 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+ 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74,
+ 0x20, 0x74, 0x68, 0x65, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e,
+ 0x65, 0x64, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x73, 0x20, 0x6f, 0x66,
+ 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x79,
+ 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x62, 0x79, 0x74,
+ 0x68, 0x65, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6e,
+ 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x66, 0x72, 0x65, 0x66, 0x65,
+ 0x72, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x20,
+ 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x73, 0x73, 0x22, 0x20, 0x6d,
+ 0x65, 0x64, 0x69, 0x61, 0x3d, 0x22, 0x50, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x20,
+ 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c,
+ 0x65, 0x20, 0x6f, 0x6e, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x74, 0x6f,
+ 0x20, 0x62, 0x65, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x22, 0x77, 0x61, 0x73, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61,
+ 0x73, 0x76, 0x61, 0x72, 0x69, 0x65, 0x74, 0x69, 0x65, 0x73, 0x20, 0x6f, 0x66,
+ 0x6c, 0x69, 0x6b, 0x65, 0x6c, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x63,
+ 0x6f, 0x6d, 0x70, 0x72, 0x69, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x66, 0x73, 0x75,
+ 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x61, 0x6e,
+ 0x64, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6f, 0x75, 0x70,
+ 0x6c, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
+ 0x63, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72,
+ 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d,
+ 0x61, 0x6e, 0x63, 0x65, 0x73, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62,
+ 0x65, 0x69, 0x6e, 0x67, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x20, 0x62, 0x65, 0x63,
+ 0x61, 0x6d, 0x65, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x6f, 0x66, 0x74, 0x65, 0x6e, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65,
+ 0x64, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x6f, 0x66,
+ 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x3e,
+ 0x3c, 0x6c, 0x69, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x65, 0x76,
+ 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x65, 0x78, 0x70,
+ 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x76, 0x69,
+ 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x3e, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20,
+ 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65,
+ 0x64, 0x20, 0x62, 0x79, 0x61, 0x20, 0x77, 0x69, 0x64, 0x65, 0x20, 0x72, 0x61,
+ 0x6e, 0x67, 0x65, 0x6f, 0x6e, 0x20, 0x62, 0x65, 0x68, 0x61, 0x6c, 0x66, 0x20,
+ 0x6f, 0x66, 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70,
+ 0x22, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x6f, 0x66,
+ 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2c, 0x3c,
+ 0x2f, 0x6e, 0x6f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0d, 0x73, 0x61,
+ 0x69, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x68, 0x61, 0x76, 0x65, 0x69, 0x6e, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x77, 0x68, 0x69, 0x6c,
+ 0x65, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x73, 0x68, 0x79, 0x70, 0x6f, 0x74,
+ 0x68, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x70, 0x68, 0x69, 0x6c, 0x6f, 0x73,
+ 0x6f, 0x70, 0x68, 0x65, 0x72, 0x73, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+ 0x64, 0x20, 0x69, 0x6e, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64,
+ 0x20, 0x62, 0x79, 0x69, 0x6e, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x20,
+ 0x74, 0x6f, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65,
+ 0x6e, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22,
+ 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x74,
+ 0x68, 0x65, 0x20, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e,
+ 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x72, 0x65, 0x6a,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x69, 0x6d, 0x70, 0x6c,
+ 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x69, 0x6e, 0x76, 0x65, 0x6e,
+ 0x74, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74,
+ 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x77, 0x61, 0x73, 0x20, 0x70, 0x72, 0x6f,
+ 0x62, 0x61, 0x62, 0x6c, 0x79, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x62, 0x65, 0x74,
+ 0x77, 0x65, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x66, 0x65, 0x73, 0x73, 0x6f, 0x72,
+ 0x20, 0x6f, 0x66, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68,
+ 0x65, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x4f, 0x63, 0x65, 0x61, 0x6e,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6c, 0x61, 0x73, 0x74, 0x77,
+ 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, 0x27, 0x68,
+ 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x79, 0x65, 0x61,
+ 0x72, 0x73, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x69, 0x73,
+ 0x20, 0x77, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x63, 0x72, 0x65,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69,
+ 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x74, 0x72, 0x65,
+ 0x6d, 0x65, 0x6c, 0x79, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6f, 0x66, 0x20,
+ 0x74, 0x68, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74,
+ 0x68, 0x65, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a,
+ 0x0a, 0x61, 0x6e, 0x20, 0x65, 0x66, 0x66, 0x6f, 0x72, 0x74, 0x20, 0x74, 0x6f,
+ 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x74,
+ 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x73, 0x70,
+ 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x22, 0x30, 0x22, 0x3e, 0x73, 0x75, 0x66,
+ 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x74, 0x68, 0x65, 0x20,
+ 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x61, 0x6e, 0x63, 0x6f, 0x6e, 0x76, 0x65,
+ 0x72, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x54,
+ 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x64, 0x69, 0x64, 0x20, 0x6e, 0x6f, 0x74,
+ 0x20, 0x68, 0x61, 0x76, 0x65, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x71, 0x75, 0x65,
+ 0x6e, 0x74, 0x6c, 0x79, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e,
+ 0x65, 0x78, 0x74, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20,
+ 0x6f, 0x66, 0x65, 0x63, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x63, 0x20, 0x61, 0x6e,
+ 0x64, 0x61, 0x6c, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x74, 0x68, 0x65,
+ 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x61,
+ 0x6e, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x69, 0x6e,
+ 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x67, 0x69, 0x76,
+ 0x65, 0x6e, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x73, 0x74, 0x61, 0x74,
+ 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x65, 0x78, 0x70, 0x65, 0x6e,
+ 0x64, 0x69, 0x74, 0x75, 0x72, 0x65, 0x73, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e,
+ 0x3e, 0x3c, 0x2f, 0x61, 0x3e, 0x0a, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x74,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62,
+ 0x61, 0x73, 0x69, 0x73, 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64, 0x64, 0x69,
+ 0x6e, 0x67, 0x3d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74,
+ 0x68, 0x65, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74,
+ 0x6f, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c,
+ 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x61,
+ 0x73, 0x73, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x73, 0x22,
+ 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x61, 0x75, 0x74,
+ 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x6e, 0x6f, 0x72, 0x74,
+ 0x68, 0x77, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x3c, 0x2f, 0x64, 0x69, 0x76,
+ 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69,
+ 0x76, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74,
+ 0x79, 0x20, 0x6f, 0x66, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20,
+ 0x62, 0x65, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
+ 0x73, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74,
+ 0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x74, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x73, 0x75,
+ 0x70, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x64, 0x65, 0x70,
+ 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x6e, 0x69, 0x73, 0x20, 0x6d,
+ 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
+ 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x77, 0x61, 0x73, 0x20, 0x69, 0x6e,
+ 0x76, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x61,
+ 0x6e, 0x79, 0x69, 0x6e, 0x67, 0x68, 0x69, 0x73, 0x20, 0x70, 0x65, 0x72, 0x73,
+ 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65,
+ 0x20, 0x61, 0x74, 0x73, 0x74, 0x75, 0x64, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74,
+ 0x68, 0x65, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x74, 0x68, 0x65,
+ 0x72, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66,
+ 0x48, 0x75, 0x6d, 0x61, 0x6e, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x74,
+ 0x65, 0x72, 0x6d, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x61, 0x73,
+ 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x72, 0x65, 0x73,
+ 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x61, 0x6e, 0x64, 0x73, 0x75, 0x63, 0x63,
+ 0x65, 0x65, 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x64, 0x65, 0x66, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x72,
+ 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65,
+ 0x79, 0x20, 0x61, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65,
+ 0x72, 0x20, 0x6f, 0x66, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x66, 0x20,
+ 0x74, 0x68, 0x65, 0x79, 0x65, 0x61, 0x72, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x61,
+ 0x67, 0x65, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x75, 0x64, 0x79, 0x20, 0x6f,
+ 0x66, 0x3c, 0x75, 0x6c, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73,
+ 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x77,
+ 0x68, 0x65, 0x72, 0x65, 0x20, 0x68, 0x65, 0x20, 0x77, 0x61, 0x73, 0x3c, 0x6c,
+ 0x69, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x74, 0x68, 0x65,
+ 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x77, 0x68, 0x69, 0x63,
+ 0x68, 0x20, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x68, 0x65, 0x20, 0x70, 0x75,
+ 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73,
+ 0x73, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x77, 0x68, 0x69, 0x63,
+ 0x68, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69,
+ 0x6f, 0x6e, 0x65, 0x72, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x3a, 0x74, 0x65, 0x72, 0x72, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x20,
+ 0x6f, 0x66, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22,
+ 0x3e, 0x52, 0x6f, 0x6d, 0x61, 0x6e, 0x20, 0x45, 0x6d, 0x70, 0x69, 0x72, 0x65,
+ 0x65, 0x71, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x49,
+ 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x2c, 0x68, 0x6f,
+ 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x69, 0x73, 0x20,
+ 0x74, 0x79, 0x70, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x61, 0x6e, 0x64, 0x20,
+ 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, 0x66, 0x65, 0x28, 0x61, 0x6c, 0x73, 0x6f,
+ 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x3e, 0x3c, 0x75, 0x6c, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69,
+ 0x76, 0x65, 0x6c, 0x79, 0x20, 0x65, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x20,
+ 0x69, 0x6e, 0x74, 0x6f, 0x73, 0x65, 0x65, 0x6d, 0x20, 0x74, 0x6f, 0x20, 0x68,
+ 0x61, 0x76, 0x65, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x74,
+ 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x6e,
+ 0x6f, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x63, 0x65, 0x6c, 0x6c, 0x65, 0x6e, 0x74,
+ 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x64,
+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x20, 0x62, 0x79, 0x49, 0x6e,
+ 0x20, 0x70, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x2c, 0x62, 0x72, 0x6f,
+ 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x68, 0x61, 0x72,
+ 0x67, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x72, 0x65, 0x66, 0x6c, 0x65,
+ 0x63, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
+ 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x6d, 0x69, 0x6c, 0x69, 0x74, 0x61, 0x72,
+ 0x79, 0x20, 0x61, 0x6e, 0x64, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70,
+ 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x63, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x63, 0x61,
+ 0x6c, 0x6c, 0x79, 0x73, 0x65, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69,
+ 0x6e, 0x67, 0x61, 0x72, 0x65, 0x20, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x6c,
+ 0x79, 0x76, 0x69, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x6f, 0x76, 0x65, 0x72,
+ 0x28, 0x29, 0x3b, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x63,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x6c, 0x79, 0x72, 0x65,
+ 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x65, 0x76, 0x6f,
+ 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x61, 0x6e, 0x20, 0x65,
+ 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6e, 0x6f, 0x72, 0x74, 0x68,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63,
+ 0x68, 0x20, 0x77, 0x61, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72,
+ 0x77, 0x69, 0x73, 0x65, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d,
+ 0x20, 0x6f, 0x66, 0x68, 0x61, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65,
+ 0x65, 0x6e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62,
+ 0x79, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
+ 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x69,
+ 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x64, 0x65,
+ 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2c, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x74, 0x68, 0x65, 0x20,
+ 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x63, 0x6f, 0x6e, 0x73, 0x69,
+ 0x73, 0x74, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x61, 0x72, 0x65, 0x20, 0x6b, 0x6e,
+ 0x6f, 0x77, 0x6e, 0x20, 0x61, 0x73, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x65,
+ 0x6c, 0x64, 0x20, 0x6f, 0x66, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x79, 0x70,
+ 0x65, 0x20, 0x6f, 0x66, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20,
+ 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x20,
+ 0x6f, 0x66, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x74, 0x68,
+ 0x65, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x6f, 0x66,
+ 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x64,
+ 0x75, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x61, 0x72,
+ 0x65, 0x20, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x63, 0x6f, 0x72,
+ 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x77, 0x61, 0x73, 0x20,
+ 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6f, 0x6e, 0x65, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x70,
+ 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64,
+ 0x65, 0x64, 0x20, 0x69, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20,
+ 0x66, 0x72, 0x6f, 0x6d, 0x69, 0x6e, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x74, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x20,
+ 0x62, 0x79, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f,
+ 0x72, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x20, 0x6f, 0x66,
+ 0x61, 0x6e, 0x64, 0x20, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x79, 0x73,
+ 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x69, 0x7a, 0x65, 0x64, 0x72, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x65, 0x78, 0x74, 0x77, 0x61, 0x73,
+ 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x72, 0x65, 0x63, 0x65,
+ 0x69, 0x76, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x61, 0x73, 0x73, 0x75, 0x6d,
+ 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x61, 0x72, 0x65, 0x61, 0x73, 0x20,
+ 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x69,
+ 0x6c, 0x79, 0x20, 0x69, 0x6e, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x73, 0x69,
+ 0x73, 0x20, 0x6f, 0x66, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65,
+ 0x6e, 0x73, 0x65, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x20, 0x66,
+ 0x6f, 0x72, 0x64, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x65, 0x64, 0x20, 0x62,
+ 0x79, 0x61, 0x74, 0x20, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x20, 0x74, 0x77, 0x6f,
+ 0x77, 0x61, 0x73, 0x20, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x64, 0x63,
+ 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x53, 0x65,
+ 0x63, 0x72, 0x65, 0x74, 0x61, 0x72, 0x79, 0x20, 0x6f, 0x66, 0x61, 0x70, 0x70,
+ 0x65, 0x61, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x6d, 0x61, 0x72, 0x67,
+ 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x70, 0x3a, 0x31, 0x2f, 0x5e, 0x5c, 0x73, 0x2b,
+ 0x7c, 0x5c, 0x73, 0x2b, 0x24, 0x2f, 0x67, 0x65, 0x29, 0x7b, 0x74, 0x68, 0x72,
+ 0x6f, 0x77, 0x20, 0x65, 0x7d, 0x3b, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61,
+ 0x72, 0x74, 0x20, 0x6f, 0x66, 0x74, 0x77, 0x6f, 0x20, 0x73, 0x65, 0x70, 0x61,
+ 0x72, 0x61, 0x74, 0x65, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x20,
+ 0x61, 0x6e, 0x64, 0x77, 0x68, 0x6f, 0x20, 0x68, 0x61, 0x64, 0x20, 0x62, 0x65,
+ 0x65, 0x6e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f,
+ 0x66, 0x64, 0x65, 0x61, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x72, 0x65, 0x61, 0x6c, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x09,
+ 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x70, 0x72,
+ 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65,
+ 0x20, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x6f, 0x66, 0x63, 0x6f, 0x6d, 0x70,
+ 0x65, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x67, 0x6c, 0x69,
+ 0x73, 0x68, 0x20, 0x28, 0x55, 0x4b, 0x29, 0x65, 0x6e, 0x67, 0x6c, 0x69, 0x73,
+ 0x68, 0x20, 0x28, 0x55, 0x53, 0x29, 0xd0, 0x9c, 0xd0, 0xbe, 0xd0, 0xbd, 0xd0,
+ 0xb3, 0xd0, 0xbe, 0xd0, 0xbb, 0xd0, 0xa1, 0xd1, 0x80, 0xd0, 0xbf, 0xd1, 0x81,
+ 0xd0, 0xba, 0xd0, 0xb8, 0xd1, 0x81, 0xd1, 0x80, 0xd0, 0xbf, 0xd1, 0x81, 0xd0,
+ 0xba, 0xd0, 0xb8, 0xd1, 0x81, 0xd1, 0x80, 0xd0, 0xbf, 0xd1, 0x81, 0xd0, 0xba,
+ 0xd0, 0xbe, 0xd9, 0x84, 0xd8, 0xb9, 0xd8, 0xb1, 0xd8, 0xa8, 0xd9, 0x8a, 0xd8,
+ 0xa9, 0xe6, 0xad, 0xa3, 0xe9, 0xab, 0x94, 0xe4, 0xb8, 0xad, 0xe6, 0x96, 0x87,
+ 0xe7, 0xae, 0x80, 0xe4, 0xbd, 0x93, 0xe4, 0xb8, 0xad, 0xe6, 0x96, 0x87, 0xe7,
+ 0xb9, 0x81, 0xe4, 0xbd, 0x93, 0xe4, 0xb8, 0xad, 0xe6, 0x96, 0x87, 0xe6, 0x9c,
+ 0x89, 0xe9, 0x99, 0x90, 0xe5, 0x85, 0xac, 0xe5, 0x8f, 0xb8, 0xe4, 0xba, 0xba,
+ 0xe6, 0xb0, 0x91, 0xe6, 0x94, 0xbf, 0xe5, 0xba, 0x9c, 0xe9, 0x98, 0xbf, 0xe9,
+ 0x87, 0x8c, 0xe5, 0xb7, 0xb4, 0xe5, 0xb7, 0xb4, 0xe7, 0xa4, 0xbe, 0xe4, 0xbc,
+ 0x9a, 0xe4, 0xb8, 0xbb, 0xe4, 0xb9, 0x89, 0xe6, 0x93, 0x8d, 0xe4, 0xbd, 0x9c,
+ 0xe7, 0xb3, 0xbb, 0xe7, 0xbb, 0x9f, 0xe6, 0x94, 0xbf, 0xe7, 0xad, 0x96, 0xe6,
+ 0xb3, 0x95, 0xe8, 0xa7, 0x84, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x63,
+ 0x69, 0xc3, 0xb3, 0x6e, 0x68, 0x65, 0x72, 0x72, 0x61, 0x6d, 0x69, 0x65, 0x6e,
+ 0x74, 0x61, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0xc3, 0xb3, 0x6e, 0x69,
+ 0x63, 0x6f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x63, 0x69, 0xc3, 0xb3,
+ 0x6e, 0x63, 0x6c, 0x61, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x64, 0x6f, 0x73,
+ 0x63, 0x6f, 0x6e, 0x6f, 0x63, 0x69, 0x6d, 0x69, 0x65, 0x6e, 0x74, 0x6f, 0x70,
+ 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x72, 0x65,
+ 0x6c, 0x61, 0x63, 0x69, 0x6f, 0x6e, 0x61, 0x64, 0x61, 0x73, 0x69, 0x6e, 0x66,
+ 0x6f, 0x72, 0x6d, 0xc3, 0xa1, 0x74, 0x69, 0x63, 0x61, 0x72, 0x65, 0x6c, 0x61,
+ 0x63, 0x69, 0x6f, 0x6e, 0x61, 0x64, 0x6f, 0x73, 0x64, 0x65, 0x70, 0x61, 0x72,
+ 0x74, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x6f, 0x74, 0x72, 0x61, 0x62, 0x61, 0x6a,
+ 0x61, 0x64, 0x6f, 0x72, 0x65, 0x73, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x61,
+ 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x61, 0x79, 0x75, 0x6e, 0x74, 0x61, 0x6d, 0x69,
+ 0x65, 0x6e, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x63, 0x61, 0x64, 0x6f, 0x4c, 0x69,
+ 0x62, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x74, 0xc3, 0xa1, 0x63, 0x74, 0x65, 0x6e,
+ 0x6f, 0x73, 0x68, 0x61, 0x62, 0x69, 0x74, 0x61, 0x63, 0x69, 0x6f, 0x6e, 0x65,
+ 0x73, 0x63, 0x75, 0x6d, 0x70, 0x6c, 0x69, 0x6d, 0x69, 0x65, 0x6e, 0x74, 0x6f,
+ 0x72, 0x65, 0x73, 0x74, 0x61, 0x75, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x73, 0x64,
+ 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x63, 0x6f,
+ 0x6e, 0x73, 0x65, 0x63, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x61, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x72, 0xc3, 0xb3, 0x6e, 0x69, 0x63, 0x61, 0x61, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x63, 0x69, 0x6f, 0x6e, 0x65, 0x73, 0x64, 0x65, 0x73, 0x63, 0x6f,
+ 0x6e, 0x65, 0x63, 0x74, 0x61, 0x64, 0x6f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c,
+ 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x7a, 0x61,
+ 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x63,
+ 0x69, 0xc3, 0xb3, 0x6e, 0x65, 0x6e, 0x63, 0x69, 0x63, 0x6c, 0x6f, 0x70, 0x65,
+ 0x64, 0x69, 0x61, 0x65, 0x6e, 0x66, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x61, 0x64,
+ 0x65, 0x73, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x6f,
+ 0x73, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x69, 0x61, 0x73,
+ 0x69, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x70,
+ 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x65, 0x73, 0x73, 0x75,
+ 0x62, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x61, 0xd1, 0x82, 0xd0,
+ 0xbe, 0xd0, 0xbb, 0xd1, 0x8c, 0xd0, 0xba, 0xd0, 0xbe, 0xd0, 0xa0, 0xd0, 0xbe,
+ 0xd1, 0x81, 0xd1, 0x81, 0xd0, 0xb8, 0xd0, 0xb8, 0xd1, 0x80, 0xd0, 0xb0, 0xd0,
+ 0xb1, 0xd0, 0xbe, 0xd1, 0x82, 0xd1, 0x8b, 0xd0, 0xb1, 0xd0, 0xbe, 0xd0, 0xbb,
+ 0xd1, 0x8c, 0xd1, 0x88, 0xd0, 0xb5, 0xd0, 0xbf, 0xd1, 0x80, 0xd0, 0xbe, 0xd1,
+ 0x81, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xbc, 0xd0, 0xbe, 0xd0, 0xb6, 0xd0, 0xb5,
+ 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xb4, 0xd1, 0x80, 0xd1, 0x83, 0xd0, 0xb3, 0xd0,
+ 0xb8, 0xd1, 0x85, 0xd1, 0x81, 0xd0, 0xbb, 0xd1, 0x83, 0xd1, 0x87, 0xd0, 0xb0,
+ 0xd0, 0xb5, 0xd1, 0x81, 0xd0, 0xb5, 0xd0, 0xb9, 0xd1, 0x87, 0xd0, 0xb0, 0xd1,
+ 0x81, 0xd0, 0xb2, 0xd1, 0x81, 0xd0, 0xb5, 0xd0, 0xb3, 0xd0, 0xb4, 0xd0, 0xb0,
+ 0xd0, 0xa0, 0xd0, 0xbe, 0xd1, 0x81, 0xd1, 0x81, 0xd0, 0xb8, 0xd1, 0x8f, 0xd0,
+ 0x9c, 0xd0, 0xbe, 0xd1, 0x81, 0xd0, 0xba, 0xd0, 0xb2, 0xd0, 0xb5, 0xd0, 0xb4,
+ 0xd1, 0x80, 0xd1, 0x83, 0xd0, 0xb3, 0xd0, 0xb8, 0xd0, 0xb5, 0xd0, 0xb3, 0xd0,
+ 0xbe, 0xd1, 0x80, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xb0, 0xd0, 0xb2, 0xd0, 0xbe,
+ 0xd0, 0xbf, 0xd1, 0x80, 0xd0, 0xbe, 0xd1, 0x81, 0xd0, 0xb4, 0xd0, 0xb0, 0xd0,
+ 0xbd, 0xd0, 0xbd, 0xd1, 0x8b, 0xd1, 0x85, 0xd0, 0xb4, 0xd0, 0xbe, 0xd0, 0xbb,
+ 0xd0, 0xb6, 0xd0, 0xbd, 0xd1, 0x8b, 0xd0, 0xb8, 0xd0, 0xbc, 0xd0, 0xb5, 0xd0,
+ 0xbd, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0x9c, 0xd0, 0xbe, 0xd1, 0x81, 0xd0, 0xba,
+ 0xd0, 0xb2, 0xd1, 0x8b, 0xd1, 0x80, 0xd1, 0x83, 0xd0, 0xb1, 0xd0, 0xbb, 0xd0,
+ 0xb5, 0xd0, 0xb9, 0xd0, 0x9c, 0xd0, 0xbe, 0xd1, 0x81, 0xd0, 0xba, 0xd0, 0xb2,
+ 0xd0, 0xb0, 0xd1, 0x81, 0xd1, 0x82, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xbd, 0xd1,
+ 0x8b, 0xd0, 0xbd, 0xd0, 0xb8, 0xd1, 0x87, 0xd0, 0xb5, 0xd0, 0xb3, 0xd0, 0xbe,
+ 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xb1, 0xd0, 0xbe, 0xd1, 0x82, 0xd0, 0xb5, 0xd0,
+ 0xb4, 0xd0, 0xbe, 0xd0, 0xbb, 0xd0, 0xb6, 0xd0, 0xb5, 0xd0, 0xbd, 0xd1, 0x83,
+ 0xd1, 0x81, 0xd0, 0xbb, 0xd1, 0x83, 0xd0, 0xb3, 0xd0, 0xb8, 0xd1, 0x82, 0xd0,
+ 0xb5, 0xd0, 0xbf, 0xd0, 0xb5, 0xd1, 0x80, 0xd1, 0x8c, 0xd0, 0x9e, 0xd0, 0xb4,
+ 0xd0, 0xbd, 0xd0, 0xb0, 0xd0, 0xba, 0xd0, 0xbe, 0xd0, 0xbf, 0xd0, 0xbe, 0xd1,
+ 0x82, 0xd0, 0xbe, 0xd0, 0xbc, 0xd1, 0x83, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xb1,
+ 0xd0, 0xbe, 0xd1, 0x82, 0xd1, 0x83, 0xd0, 0xb0, 0xd0, 0xbf, 0xd1, 0x80, 0xd0,
+ 0xb5, 0xd0, 0xbb, 0xd1, 0x8f, 0xd0, 0xb2, 0xd0, 0xbe, 0xd0, 0xbe, 0xd0, 0xb1,
+ 0xd1, 0x89, 0xd0, 0xb5, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0,
+ 0xb3, 0xd0, 0xbe, 0xd1, 0x81, 0xd0, 0xb2, 0xd0, 0xbe, 0xd0, 0xb5, 0xd0, 0xb3,
+ 0xd0, 0xbe, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb0, 0xd1, 0x82, 0xd1, 0x8c, 0xd0,
+ 0xb8, 0xd0, 0xb4, 0xd1, 0x80, 0xd1, 0x83, 0xd0, 0xb3, 0xd0, 0xbe, 0xd0, 0xb9,
+ 0xd1, 0x84, 0xd0, 0xbe, 0xd1, 0x80, 0xd1, 0x83, 0xd0, 0xbc, 0xd0, 0xb5, 0xd1,
+ 0x85, 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xbe, 0xd1, 0x88, 0xd0, 0xbe, 0xd0, 0xbf,
+ 0xd1, 0x80, 0xd0, 0xbe, 0xd1, 0x82, 0xd0, 0xb8, 0xd0, 0xb2, 0xd1, 0x81, 0xd1,
+ 0x81, 0xd1, 0x8b, 0xd0, 0xbb, 0xd0, 0xba, 0xd0, 0xb0, 0xd0, 0xba, 0xd0, 0xb0,
+ 0xd0, 0xb6, 0xd0, 0xb4, 0xd1, 0x8b, 0xd0, 0xb9, 0xd0, 0xb2, 0xd0, 0xbb, 0xd0,
+ 0xb0, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb8, 0xd0, 0xb3, 0xd1, 0x80, 0xd1, 0x83,
+ 0xd0, 0xbf, 0xd0, 0xbf, 0xd1, 0x8b, 0xd0, 0xb2, 0xd0, 0xbc, 0xd0, 0xb5, 0xd1,
+ 0x81, 0xd1, 0x82, 0xd0, 0xb5, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xb1, 0xd0, 0xbe,
+ 0xd1, 0x82, 0xd0, 0xb0, 0xd1, 0x81, 0xd0, 0xba, 0xd0, 0xb0, 0xd0, 0xb7, 0xd0,
+ 0xb0, 0xd0, 0xbb, 0xd0, 0xbf, 0xd0, 0xb5, 0xd1, 0x80, 0xd0, 0xb2, 0xd1, 0x8b,
+ 0xd0, 0xb9, 0xd0, 0xb4, 0xd0, 0xb5, 0xd0, 0xbb, 0xd0, 0xb0, 0xd1, 0x82, 0xd1,
+ 0x8c, 0xd0, 0xb4, 0xd0, 0xb5, 0xd0, 0xbd, 0xd1, 0x8c, 0xd0, 0xb3, 0xd0, 0xb8,
+ 0xd0, 0xbf, 0xd0, 0xb5, 0xd1, 0x80, 0xd0, 0xb8, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0,
+ 0xb1, 0xd0, 0xb8, 0xd0, 0xb7, 0xd0, 0xbd, 0xd0, 0xb5, 0xd1, 0x81, 0xd0, 0xbe,
+ 0xd1, 0x81, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0xb2, 0xd0, 0xb5, 0xd0, 0xbc, 0xd0,
+ 0xbe, 0xd0, 0xbc, 0xd0, 0xb5, 0xd0, 0xbd, 0xd1, 0x82, 0xd0, 0xba, 0xd1, 0x83,
+ 0xd0, 0xbf, 0xd0, 0xb8, 0xd1, 0x82, 0xd1, 0x8c, 0xd0, 0xb4, 0xd0, 0xbe, 0xd0,
+ 0xbb, 0xd0, 0xb6, 0xd0, 0xbd, 0xd0, 0xb0, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xbc,
+ 0xd0, 0xba, 0xd0, 0xb0, 0xd1, 0x85, 0xd0, 0xbd, 0xd0, 0xb0, 0xd1, 0x87, 0xd0,
+ 0xb0, 0xd0, 0xbb, 0xd0, 0xbe, 0xd0, 0xa0, 0xd0, 0xb0, 0xd0, 0xb1, 0xd0, 0xbe,
+ 0xd1, 0x82, 0xd0, 0xb0, 0xd0, 0xa2, 0xd0, 0xbe, 0xd0, 0xbb, 0xd1, 0x8c, 0xd0,
+ 0xba, 0xd0, 0xbe, 0xd1, 0x81, 0xd0, 0xbe, 0xd0, 0xb2, 0xd1, 0x81, 0xd0, 0xb5,
+ 0xd0, 0xbc, 0xd0, 0xb2, 0xd1, 0x82, 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xbe, 0xd0,
+ 0xb9, 0xd0, 0xbd, 0xd0, 0xb0, 0xd1, 0x87, 0xd0, 0xb0, 0xd0, 0xbb, 0xd0, 0xb0,
+ 0xd1, 0x81, 0xd0, 0xbf, 0xd0, 0xb8, 0xd1, 0x81, 0xd0, 0xbe, 0xd0, 0xba, 0xd1,
+ 0x81, 0xd0, 0xbb, 0xd1, 0x83, 0xd0, 0xb6, 0xd0, 0xb1, 0xd1, 0x8b, 0xd1, 0x81,
+ 0xd0, 0xb8, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xbc, 0xd0, 0xbf, 0xd0,
+ 0xb5, 0xd1, 0x87, 0xd0, 0xb0, 0xd1, 0x82, 0xd0, 0xb8, 0xd0, 0xbd, 0xd0, 0xbe,
+ 0xd0, 0xb2, 0xd0, 0xbe, 0xd0, 0xb3, 0xd0, 0xbe, 0xd0, 0xbf, 0xd0, 0xbe, 0xd0,
+ 0xbc, 0xd0, 0xbe, 0xd1, 0x89, 0xd0, 0xb8, 0xd1, 0x81, 0xd0, 0xb0, 0xd0, 0xb9,
+ 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xb2, 0xd0, 0xbf, 0xd0, 0xbe, 0xd1, 0x87, 0xd0,
+ 0xb5, 0xd0, 0xbc, 0xd1, 0x83, 0xd0, 0xbf, 0xd0, 0xbe, 0xd0, 0xbc, 0xd0, 0xbe,
+ 0xd1, 0x89, 0xd1, 0x8c, 0xd0, 0xb4, 0xd0, 0xbe, 0xd0, 0xbb, 0xd0, 0xb6, 0xd0,
+ 0xbd, 0xd0, 0xbe, 0xd1, 0x81, 0xd1, 0x81, 0xd1, 0x8b, 0xd0, 0xbb, 0xd0, 0xba,
+ 0xd0, 0xb8, 0xd0, 0xb1, 0xd1, 0x8b, 0xd1, 0x81, 0xd1, 0x82, 0xd1, 0x80, 0xd0,
+ 0xbe, 0xd0, 0xb4, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xbd, 0xd1, 0x8b, 0xd0, 0xb5,
+ 0xd0, 0xbc, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0xb3, 0xd0, 0xb8, 0xd0, 0xb5, 0xd0,
+ 0xbf, 0xd1, 0x80, 0xd0, 0xbe, 0xd0, 0xb5, 0xd0, 0xba, 0xd1, 0x82, 0xd0, 0xa1,
+ 0xd0, 0xb5, 0xd0, 0xb9, 0xd1, 0x87, 0xd0, 0xb0, 0xd1, 0x81, 0xd0, 0xbc, 0xd0,
+ 0xbe, 0xd0, 0xb4, 0xd0, 0xb5, 0xd0, 0xbb, 0xd0, 0xb8, 0xd1, 0x82, 0xd0, 0xb0,
+ 0xd0, 0xba, 0xd0, 0xbe, 0xd0, 0xb3, 0xd0, 0xbe, 0xd0, 0xbe, 0xd0, 0xbd, 0xd0,
+ 0xbb, 0xd0, 0xb0, 0xd0, 0xb9, 0xd0, 0xbd, 0xd0, 0xb3, 0xd0, 0xbe, 0xd1, 0x80,
+ 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xb5, 0xd0, 0xb2, 0xd0, 0xb5, 0xd1, 0x80, 0xd1,
+ 0x81, 0xd0, 0xb8, 0xd1, 0x8f, 0xd1, 0x81, 0xd1, 0x82, 0xd1, 0x80, 0xd0, 0xb0,
+ 0xd0, 0xbd, 0xd0, 0xb5, 0xd1, 0x84, 0xd0, 0xb8, 0xd0, 0xbb, 0xd1, 0x8c, 0xd0,
+ 0xbc, 0xd1, 0x8b, 0xd1, 0x83, 0xd1, 0x80, 0xd0, 0xbe, 0xd0, 0xb2, 0xd0, 0xbd,
+ 0xd1, 0x8f, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xb7, 0xd0, 0xbd, 0xd1, 0x8b, 0xd1,
+ 0x85, 0xd0, 0xb8, 0xd1, 0x81, 0xd0, 0xba, 0xd0, 0xb0, 0xd1, 0x82, 0xd1, 0x8c,
+ 0xd0, 0xbd, 0xd0, 0xb5, 0xd0, 0xb4, 0xd0, 0xb5, 0xd0, 0xbb, 0xd1, 0x8e, 0xd1,
+ 0x8f, 0xd0, 0xbd, 0xd0, 0xb2, 0xd0, 0xb0, 0xd1, 0x80, 0xd1, 0x8f, 0xd0, 0xbc,
+ 0xd0, 0xb5, 0xd0, 0xbd, 0xd1, 0x8c, 0xd1, 0x88, 0xd0, 0xb5, 0xd0, 0xbc, 0xd0,
+ 0xbd, 0xd0, 0xbe, 0xd0, 0xb3, 0xd0, 0xb8, 0xd1, 0x85, 0xd0, 0xb4, 0xd0, 0xb0,
+ 0xd0, 0xbd, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0xb9, 0xd0, 0xb7, 0xd0, 0xbd, 0xd0,
+ 0xb0, 0xd1, 0x87, 0xd0, 0xb8, 0xd1, 0x82, 0xd0, 0xbd, 0xd0, 0xb5, 0xd0, 0xbb,
+ 0xd1, 0x8c, 0xd0, 0xb7, 0xd1, 0x8f, 0xd1, 0x84, 0xd0, 0xbe, 0xd1, 0x80, 0xd1,
+ 0x83, 0xd0, 0xbc, 0xd0, 0xb0, 0xd0, 0xa2, 0xd0, 0xb5, 0xd0, 0xbf, 0xd0, 0xb5,
+ 0xd1, 0x80, 0xd1, 0x8c, 0xd0, 0xbc, 0xd0, 0xb5, 0xd1, 0x81, 0xd1, 0x8f, 0xd1,
+ 0x86, 0xd0, 0xb0, 0xd0, 0xb7, 0xd0, 0xb0, 0xd1, 0x89, 0xd0, 0xb8, 0xd1, 0x82,
+ 0xd1, 0x8b, 0xd0, 0x9b, 0xd1, 0x83, 0xd1, 0x87, 0xd1, 0x88, 0xd0, 0xb8, 0xd0,
+ 0xb5, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x82,
+ 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x87, 0xe0,
+ 0xa4, 0x85, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4,
+ 0x95, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x95,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x85, 0xe0,
+ 0xa4, 0xa8, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0x95, 0xe0, 0xa5,
+ 0x8d, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0x87, 0xe0, 0xa4, 0xa1, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xb0, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4,
+ 0xb8, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xaf,
+ 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xb2, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x82, 0xe0, 0xa4,
+ 0xb9, 0xe0, 0xa4, 0xad, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa4,
+ 0xe0, 0xa4, 0x85, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x80, 0xe0,
+ 0xa4, 0xb5, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x87, 0xe0, 0xa4,
+ 0xb8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x95,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xae, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5,
+ 0x8b, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x95,
+ 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xb9, 0xe0,
+ 0xa5, 0x81, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0x87, 0xe0, 0xa4, 0x9f, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x97,
+ 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa8, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4,
+ 0x9f, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0x89, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x87, 0xe0, 0xa4,
+ 0xaf, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x81, 0xe0, 0xa4, 0xb8,
+ 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xad, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0xb7, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x86, 0xe0, 0xa4,
+ 0xaa, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xbf,
+ 0xe0, 0xa4, 0xaf, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb6, 0xe0, 0xa5, 0x81, 0xe0,
+ 0xa4, 0xb0, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0x87, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4,
+ 0x95, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x98, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x9f,
+ 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa5, 0x80, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa4, 0x85, 0xe0, 0xa4, 0xa7, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x95, 0xe0, 0xa4,
+ 0x85, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb8,
+ 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xae, 0xe0,
+ 0xa5, 0x81, 0xe0, 0xa4, 0x9d, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x95, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa3, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x8b,
+ 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xa1, 0xe0,
+ 0xa4, 0xbc, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x9f,
+ 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xb6, 0xe0, 0xa4, 0xac, 0xe0, 0xa5, 0x8d, 0xe0,
+ 0xa4, 0xa6, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0x9c, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xa8,
+ 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0x95, 0xe0, 0xa5, 0x88, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4,
+ 0x86, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb5,
+ 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xa6, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xaa, 0xe0, 0xa5,
+ 0x82, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x89, 0xe0, 0xa4, 0xb8, 0xe0,
+ 0xa4, 0x95, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4,
+ 0x97, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xac, 0xe0, 0xa5, 0x88, 0xe0, 0xa4, 0xa0,
+ 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0x86, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0x95, 0xe0,
+ 0xa5, 0x80, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4,
+ 0xb7, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb5,
+ 0xe0, 0xa4, 0x86, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8b, 0xe0,
+ 0xa4, 0x9c, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0x9c, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb8,
+ 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xb9, 0xe0,
+ 0xa4, 0xae, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x89, 0xe0, 0xa4,
+ 0xa8, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa5, 0x8d, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x82, 0xe0, 0xa4,
+ 0x9a, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x82,
+ 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xb2, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x80,
+ 0xe0, 0xa4, 0x9c, 0xe0, 0xa5, 0x88, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x87, 0xe0,
+ 0xa4, 0xb5, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4,
+ 0x9c, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa8,
+ 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x9c, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x98, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbf,
+ 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x80, 0xe0,
+ 0xa4, 0x9a, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0x82, 0xe0, 0xa4, 0x9a, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x97, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0x97, 0xe0,
+ 0xa4, 0xb2, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5,
+ 0x87, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xb0,
+ 0xe0, 0xa4, 0x86, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x87, 0xe0,
+ 0xa4, 0xb5, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4,
+ 0x87, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb8,
+ 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa4, 0xb9, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x87, 0xe0, 0xa4,
+ 0xb8, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xb9,
+ 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xa1, 0xe0,
+ 0xa4, 0xbc, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x98, 0xe0, 0xa4, 0x9f, 0xe0, 0xa4,
+ 0xa8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0xb6, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x82, 0xe0,
+ 0xa4, 0x9a, 0xe0, 0xa4, 0xb6, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5,
+ 0x80, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xa1, 0xe0, 0xa4, 0xbc, 0xe0, 0xa5, 0x80,
+ 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x87, 0xe0,
+ 0xa4, 0xb8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x88, 0xe0, 0xa4, 0x9f, 0xe0, 0xa4,
+ 0xb6, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xb8,
+ 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x9c, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0x9c,
+ 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0x9f, 0xe0,
+ 0xa4, 0xa8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x96, 0xe0, 0xa4,
+ 0xa8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xa1, 0xe0, 0xa4, 0xbc,
+ 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xb2, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0x89, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x95, 0xe0, 0xa5,
+ 0x80, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xb2,
+ 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0x96, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0x85, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa5, 0xe0, 0xa4, 0x9c,
+ 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xa6, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0x96, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4,
+ 0xb9, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xbf,
+ 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xbf, 0xe0,
+ 0xa4, 0xa8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xac, 0xe0, 0xa5, 0x88, 0xe0, 0xa4,
+ 0x82, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x80,
+ 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xa8, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x87,
+ 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xab, 0xe0, 0xa5, 0x80, 0xe0,
+ 0xa4, 0x9c, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4,
+ 0xa4, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xae,
+ 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xb5, 0xe0,
+ 0xa4, 0xb9, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5,
+ 0x8b, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbc, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbf,
+ 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x86, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa5, 0x8b, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4,
+ 0xa8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa6,
+ 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xa8, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0x96, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xac,
+ 0xe0, 0xa4, 0x89, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0x9c, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xac, 0xe0, 0xa4,
+ 0xaa, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xac,
+ 0xe0, 0xa4, 0xa1, 0xe0, 0xa4, 0xbc, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb8, 0xe0,
+ 0xa5, 0x8c, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb6, 0xe0, 0xa5,
+ 0x87, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbf,
+ 0xe0, 0xa4, 0xaf, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb9, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x85, 0xe0, 0xa4, 0x95, 0xe0, 0xa4,
+ 0xb8, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0x8f, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0x82, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa5, 0xe0, 0xa4,
+ 0xb2, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x87,
+ 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x96, 0xe0, 0xa4, 0x95, 0xe0,
+ 0xa4, 0xb5, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xb7, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4,
+ 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb8,
+ 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xa5, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xbe, 0xd8, 0xaa, 0xd8, 0xb3, 0xd8,
+ 0xaa, 0xd8, 0xb7, 0xd9, 0x8a, 0xd8, 0xb9, 0xd9, 0x85, 0xd8, 0xb4, 0xd8, 0xa7,
+ 0xd8, 0xb1, 0xd9, 0x83, 0xd8, 0xa9, 0xd8, 0xa8, 0xd9, 0x88, 0xd8, 0xa7, 0xd8,
+ 0xb3, 0xd8, 0xb7, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb5, 0xd9, 0x81,
+ 0xd8, 0xad, 0xd8, 0xa9, 0xd9, 0x85, 0xd9, 0x88, 0xd8, 0xa7, 0xd8, 0xb6, 0xd9,
+ 0x8a, 0xd8, 0xb9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xae, 0xd8, 0xa7, 0xd8, 0xb5,
+ 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xb2, 0xd9, 0x8a, 0xd8,
+ 0xaf, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb9, 0xd8, 0xa7, 0xd9, 0x85, 0xd8, 0xa9,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x83, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8, 0xa8, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd8, 0xb1, 0xd8, 0xaf, 0xd9, 0x88, 0xd8, 0xaf, 0xd8, 0xa8,
+ 0xd8, 0xb1, 0xd9, 0x86, 0xd8, 0xa7, 0xd9, 0x85, 0xd8, 0xac, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd8, 0xaf, 0xd9, 0x88, 0xd9, 0x84, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84,
+ 0xd8, 0xb9, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xa7, 0xd9, 0x84, 0xd9,
+ 0x85, 0xd9, 0x88, 0xd9, 0x82, 0xd8, 0xb9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb9,
+ 0xd8, 0xb1, 0xd8, 0xa8, 0xd9, 0x8a, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb3, 0xd8,
+ 0xb1, 0xd9, 0x8a, 0xd8, 0xb9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xac, 0xd9, 0x88,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb0, 0xd9, 0x87, 0xd8,
+ 0xa7, 0xd8, 0xa8, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xad, 0xd9, 0x8a, 0xd8, 0xa7,
+ 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xad, 0xd9, 0x82, 0xd9, 0x88, 0xd9,
+ 0x82, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x83, 0xd8, 0xb1, 0xd9, 0x8a, 0xd9, 0x85,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb9, 0xd8, 0xb1, 0xd8, 0xa7, 0xd9, 0x82, 0xd9,
+ 0x85, 0xd8, 0xad, 0xd9, 0x81, 0xd9, 0x88, 0xd8, 0xb8, 0xd8, 0xa9, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd8, 0xab, 0xd8, 0xa7, 0xd9, 0x86, 0xd9, 0x8a, 0xd9, 0x85, 0xd8,
+ 0xb4, 0xd8, 0xa7, 0xd9, 0x87, 0xd8, 0xaf, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84,
+ 0xd9, 0x85, 0xd8, 0xb1, 0xd8, 0xa3, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd9,
+ 0x82, 0xd8, 0xb1, 0xd8, 0xa2, 0xd9, 0x86, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb4,
+ 0xd8, 0xa8, 0xd8, 0xa7, 0xd8, 0xa8, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xad, 0xd9,
+ 0x88, 0xd8, 0xa7, 0xd8, 0xb1, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xac, 0xd8, 0xaf,
+ 0xd9, 0x8a, 0xd8, 0xaf, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa3, 0xd8, 0xb3, 0xd8,
+ 0xb1, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb9, 0xd9, 0x84, 0xd9, 0x88,
+ 0xd9, 0x85, 0xd9, 0x85, 0xd8, 0xac, 0xd9, 0x85, 0xd9, 0x88, 0xd8, 0xb9, 0xd8,
+ 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb1, 0xd8, 0xad, 0xd9, 0x85, 0xd9, 0x86,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x86, 0xd9, 0x82, 0xd8, 0xa7, 0xd8, 0xb7, 0xd9,
+ 0x81, 0xd9, 0x84, 0xd8, 0xb3, 0xd8, 0xb7, 0xd9, 0x8a, 0xd9, 0x86, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd9, 0x83, 0xd9, 0x88, 0xd9, 0x8a, 0xd8, 0xaa, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd8, 0xaf, 0xd9, 0x86, 0xd9, 0x8a, 0xd8, 0xa7, 0xd8, 0xa8, 0xd8, 0xb1,
+ 0xd9, 0x83, 0xd8, 0xa7, 0xd8, 0xaa, 0xd9, 0x87, 0xd8, 0xa7, 0xd9, 0x84, 0xd8,
+ 0xb1, 0xd9, 0x8a, 0xd8, 0xa7, 0xd8, 0xb6, 0xd8, 0xaa, 0xd8, 0xad, 0xd9, 0x8a,
+ 0xd8, 0xa7, 0xd8, 0xaa, 0xd9, 0x8a, 0xd8, 0xa8, 0xd8, 0xaa, 0xd9, 0x88, 0xd9,
+ 0x82, 0xd9, 0x8a, 0xd8, 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa3, 0xd9, 0x88,
+ 0xd9, 0x84, 0xd9, 0x89, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa8, 0xd8, 0xb1, 0xd9,
+ 0x8a, 0xd8, 0xaf, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x83, 0xd9, 0x84, 0xd8, 0xa7,
+ 0xd9, 0x85, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb1, 0xd8, 0xa7, 0xd8, 0xa8, 0xd8,
+ 0xb7, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb4, 0xd8, 0xae, 0xd8, 0xb5, 0xd9, 0x8a,
+ 0xd8, 0xb3, 0xd9, 0x8a, 0xd8, 0xa7, 0xd8, 0xb1, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd8, 0xab, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xab, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd8, 0xb5, 0xd9, 0x84, 0xd8, 0xa7, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd8, 0xad, 0xd8, 0xaf, 0xd9, 0x8a, 0xd8, 0xab, 0xd8, 0xa7, 0xd9, 0x84,
+ 0xd8, 0xb2, 0xd9, 0x88, 0xd8, 0xa7, 0xd8, 0xb1, 0xd8, 0xa7, 0xd9, 0x84, 0xd8,
+ 0xae, 0xd9, 0x84, 0xd9, 0x8a, 0xd8, 0xac, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xac,
+ 0xd9, 0x85, 0xd9, 0x8a, 0xd8, 0xb9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb9, 0xd8,
+ 0xa7, 0xd9, 0x85, 0xd9, 0x87, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xac, 0xd9, 0x85,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb3, 0xd8, 0xa7, 0xd8,
+ 0xb9, 0xd8, 0xa9, 0xd9, 0x85, 0xd8, 0xb4, 0xd8, 0xa7, 0xd9, 0x87, 0xd8, 0xaf,
+ 0xd9, 0x87, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb1, 0xd8, 0xa6, 0xd9, 0x8a, 0xd8,
+ 0xb3, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xaf, 0xd8, 0xae, 0xd9, 0x88, 0xd9, 0x84,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x81, 0xd9, 0x86, 0xd9, 0x8a, 0xd8, 0xa9, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd9, 0x83, 0xd8, 0xaa, 0xd8, 0xa7, 0xd8, 0xa8, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd8, 0xaf, 0xd9, 0x88, 0xd8, 0xb1, 0xd9, 0x8a, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd8, 0xaf, 0xd8, 0xb1, 0xd9, 0x88, 0xd8, 0xb3, 0xd8, 0xa7, 0xd8, 0xb3,
+ 0xd8, 0xaa, 0xd8, 0xba, 0xd8, 0xb1, 0xd9, 0x82, 0xd8, 0xaa, 0xd8, 0xb5, 0xd8,
+ 0xa7, 0xd9, 0x85, 0xd9, 0x8a, 0xd9, 0x85, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa8,
+ 0xd9, 0x86, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb9, 0xd8,
+ 0xb8, 0xd9, 0x8a, 0xd9, 0x85, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x74, 0x61, 0x69,
+ 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61,
+ 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x20, 0x77, 0x69,
+ 0x64, 0x74, 0x68, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x77, 0x69,
+ 0x64, 0x74, 0x68, 0x3d, 0x22, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x72, 0x61, 0x6e,
+ 0x64, 0x6f, 0x6d, 0x28, 0x29, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6d, 0x70, 0x6f,
+ 0x72, 0x61, 0x72, 0x79, 0x20, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x53,
+ 0x74, 0x61, 0x74, 0x65, 0x73, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6d, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x43,
+ 0x68, 0x69, 0x6c, 0x64, 0x28, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x22, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73,
+ 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75,
+ 0x69, 0x73, 0x68, 0x65, 0x64, 0x74, 0x68, 0x6f, 0x75, 0x73, 0x61, 0x6e, 0x64,
+ 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x22, 0x3e, 0x3c,
+ 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x69, 0x6e, 0x76, 0x65, 0x73, 0x74, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x2e,
+ 0x69, 0x63, 0x6f, 0x22, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x72,
+ 0x69, 0x67, 0x68, 0x74, 0x3a, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x4d, 0x61, 0x73, 0x73, 0x61, 0x63, 0x68, 0x75,
+ 0x73, 0x65, 0x74, 0x74, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x6f,
+ 0x72, 0x64, 0x65, 0x72, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x6b, 0x6e, 0x6f,
+ 0x77, 0x6e, 0x20, 0x61, 0x73, 0x70, 0x72, 0x6f, 0x6e, 0x75, 0x6e, 0x63, 0x69,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75,
+ 0x6e, 0x64, 0x3a, 0x23, 0x66, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d,
+ 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x46, 0x6f, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6d,
+ 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x6d, 0x69, 0x73, 0x63, 0x65, 0x6c, 0x6c, 0x61,
+ 0x6e, 0x65, 0x6f, 0x75, 0x73, 0x26, 0x6c, 0x74, 0x3b, 0x2f, 0x6d, 0x61, 0x74,
+ 0x68, 0x26, 0x67, 0x74, 0x3b, 0x70, 0x73, 0x79, 0x63, 0x68, 0x6f, 0x6c, 0x6f,
+ 0x67, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69,
+ 0x63, 0x75, 0x6c, 0x61, 0x72, 0x65, 0x61, 0x72, 0x63, 0x68, 0x22, 0x20, 0x74,
+ 0x79, 0x70, 0x65, 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x74,
+ 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x61, 0x73, 0x20, 0x6f, 0x70, 0x70, 0x6f, 0x73,
+ 0x65, 0x64, 0x20, 0x74, 0x6f, 0x53, 0x75, 0x70, 0x72, 0x65, 0x6d, 0x65, 0x20,
+ 0x43, 0x6f, 0x75, 0x72, 0x74, 0x6f, 0x63, 0x63, 0x61, 0x73, 0x69, 0x6f, 0x6e,
+ 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x61, 0x6c, 0x6c, 0x79, 0x2c, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x20, 0x41, 0x6d,
+ 0x65, 0x72, 0x69, 0x63, 0x61, 0x70, 0x78, 0x3b, 0x62, 0x61, 0x63, 0x6b, 0x67,
+ 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x6f, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x6e,
+ 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x74, 0x61, 0x69,
+ 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x74, 0x6f, 0x4c, 0x6f, 0x77, 0x65, 0x72,
+ 0x43, 0x61, 0x73, 0x65, 0x28, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74,
+ 0x75, 0x72, 0x69, 0x6e, 0x67, 0x70, 0x72, 0x6f, 0x66, 0x65, 0x73, 0x73, 0x69,
+ 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x64,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x46, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x2c, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x69,
+ 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x22, 0x20, 0x6d, 0x61, 0x78, 0x6c, 0x65, 0x6e,
+ 0x67, 0x74, 0x68, 0x3d, 0x22, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66,
+ 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x63, 0x6f, 0x6e, 0x73, 0x63, 0x69, 0x6f, 0x75,
+ 0x73, 0x6e, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x64, 0x69, 0x74, 0x65, 0x72, 0x72,
+ 0x61, 0x6e, 0x65, 0x61, 0x6e, 0x65, 0x78, 0x74, 0x72, 0x61, 0x6f, 0x72, 0x64,
+ 0x69, 0x6e, 0x61, 0x72, 0x79, 0x61, 0x73, 0x73, 0x61, 0x73, 0x73, 0x69, 0x6e,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65,
+ 0x6e, 0x74, 0x6c, 0x79, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x20, 0x74,
+ 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62,
+ 0x65, 0x72, 0x20, 0x6f, 0x66, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x69, 0x67,
+ 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x68, 0x65,
+ 0x6e, 0x73, 0x69, 0x76, 0x65, 0x72, 0x65, 0x66, 0x65, 0x72, 0x73, 0x20, 0x74,
+ 0x6f, 0x20, 0x74, 0x68, 0x65, 0x3c, 0x2f, 0x75, 0x6c, 0x3e, 0x0a, 0x3c, 0x2f,
+ 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x70, 0x68, 0x69, 0x6c, 0x6f, 0x73, 0x6f, 0x70,
+ 0x68, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x2e, 0x68, 0x72, 0x65, 0x66, 0x77, 0x61, 0x73, 0x20, 0x70, 0x75, 0x62, 0x6c,
+ 0x69, 0x73, 0x68, 0x65, 0x64, 0x53, 0x61, 0x6e, 0x20, 0x46, 0x72, 0x61, 0x6e,
+ 0x63, 0x69, 0x73, 0x63, 0x6f, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x28, 0x29, 0x7b, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d,
+ 0x22, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x6f, 0x70, 0x68, 0x69, 0x73, 0x74, 0x69,
+ 0x63, 0x61, 0x74, 0x65, 0x64, 0x6d, 0x61, 0x74, 0x68, 0x65, 0x6d, 0x61, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a,
+ 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x73,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x68, 0x69, 0x70, 0x73, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65,
+ 0x20, 0x62, 0x65, 0x65, 0x6e, 0x28, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x78, 0x61,
+ 0x6d, 0x70, 0x6c, 0x65, 0x2c, 0x54, 0x68, 0x69, 0x73, 0x20, 0x61, 0x72, 0x74,
+ 0x69, 0x63, 0x6c, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20,
+ 0x63, 0x61, 0x73, 0x65, 0x73, 0x70, 0x61, 0x72, 0x74, 0x73, 0x20, 0x6f, 0x66,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x47, 0x72, 0x65, 0x61, 0x74, 0x20, 0x42, 0x72,
+ 0x69, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64,
+ 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65,
+ 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c,
+ 0x64, 0x65, 0x72, 0x3d, 0x22, 0x3b, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73,
+ 0x69, 0x7a, 0x65, 0x3a, 0x20, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x65, 0x6c, 0x69, 0x65, 0x76, 0x65, 0x64,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x73, 0x75, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64,
+ 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x65,
+ 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x20, 0x73,
+ 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69,
+ 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x09, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20,
+ 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x27, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74,
+ 0x65, 0x64, 0x20, 0x69, 0x6e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x69,
+ 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x22, 0x20, 0x61, 0x6c, 0x74, 0x3d, 0x22, 0x22,
+ 0x20, 0x2f, 0x3e, 0x3c, 0x2f, 0x61, 0x72, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65,
+ 0x72, 0x61, 0x6c, 0x6c, 0x79, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6c, 0x73, 0x6f,
+ 0x20, 0x62, 0x65, 0x65, 0x6e, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x70, 0x6f, 0x70,
+ 0x75, 0x6c, 0x61, 0x72, 0x20, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x62, 0x6f,
+ 0x72, 0x64, 0x65, 0x72, 0x3a, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x73, 0x70,
+ 0x61, 0x6e, 0x3e, 0x3c, 0x2f, 0x2e, 0x67, 0x69, 0x66, 0x22, 0x20, 0x77, 0x69,
+ 0x64, 0x74, 0x68, 0x3d, 0x22, 0x3c, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20,
+ 0x73, 0x72, 0x63, 0x3d, 0x22, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x2d, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e,
+ 0x67, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x6f, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d,
+ 0x61, 0x74, 0x65, 0x6c, 0x79, 0x70, 0x61, 0x72, 0x6c, 0x69, 0x61, 0x6d, 0x65,
+ 0x6e, 0x74, 0x61, 0x72, 0x79, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x61, 0x6e, 0x64,
+ 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a,
+ 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x74, 0x72, 0x61, 0x64, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x70, 0x72, 0x65, 0x64, 0x6f, 0x6d, 0x69, 0x6e,
+ 0x61, 0x6e, 0x74, 0x6c, 0x79, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x7c, 0x26,
+ 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f,
+ 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x70, 0x61,
+ 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x6e,
+ 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x6f, 0x72, 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x74,
+ 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x61, 0x6c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
+ 0x3d, 0x22, 0x6f, 0x67, 0x3a, 0x2f, 0x78, 0x2d, 0x73, 0x68, 0x6f, 0x63, 0x6b,
+ 0x77, 0x61, 0x76, 0x65, 0x2d, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x74, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x75, 0x72, 0x72, 0x6f, 0x75, 0x6e, 0x64,
+ 0x65, 0x64, 0x20, 0x62, 0x79, 0x4e, 0x65, 0x76, 0x65, 0x72, 0x74, 0x68, 0x65,
+ 0x6c, 0x65, 0x73, 0x73, 0x2c, 0x77, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x66, 0x69, 0x72, 0x73, 0x74, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72,
+ 0x61, 0x62, 0x6c, 0x65, 0x20, 0x41, 0x6c, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e,
+ 0x6f, 0x74, 0x20, 0x62, 0x65, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x72, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61, 0x73,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x6c, 0x79, 0x20,
+ 0x61, 0x66, 0x74, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x2c, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
+ 0x64, 0x20, 0x61, 0x73, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0a, 0x3c,
+ 0x62, 0x6f, 0x64, 0x79, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x69,
+ 0x6e, 0x67, 0x6c, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x61, 0x63, 0x74,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x76,
+ 0x69, 0x64, 0x75, 0x61, 0x6c, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c,
+ 0x74, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x66,
+ 0x20, 0x76, 0x69, 0x65, 0x77, 0x68, 0x6f, 0x6d, 0x6f, 0x73, 0x65, 0x78, 0x75,
+ 0x61, 0x6c, 0x69, 0x74, 0x79, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x20, 0x6f, 0x66, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c,
+ 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74,
+ 0x75, 0x72, 0x65, 0x72, 0x73, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x6c, 0x79,
+ 0x20, 0x75, 0x73, 0x65, 0x64, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x20, 0x6f, 0x66, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75,
+ 0x6e, 0x64, 0x3a, 0x20, 0x23, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x66,
+ 0x69, 0x63, 0x61, 0x6e, 0x74, 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72,
+ 0x3d, 0x22, 0x30, 0x22, 0x3e, 0x72, 0x65, 0x76, 0x6f, 0x6c, 0x75, 0x74, 0x69,
+ 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x6c,
+ 0x65, 0x73, 0x20, 0x6f, 0x66, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69,
+ 0x64, 0x65, 0x72, 0x65, 0x64, 0x77, 0x61, 0x73, 0x20, 0x64, 0x65, 0x76, 0x65,
+ 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x6f, 0x2d, 0x45, 0x75, 0x72,
+ 0x6f, 0x70, 0x65, 0x61, 0x6e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x6e, 0x65, 0x6e,
+ 0x74, 0x73, 0x20, 0x6f, 0x66, 0x61, 0x72, 0x65, 0x20, 0x73, 0x6f, 0x6d, 0x65,
+ 0x74, 0x69, 0x6d, 0x65, 0x73, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x72, 0x20, 0x74,
+ 0x6f, 0x20, 0x74, 0x68, 0x65, 0x4e, 0x65, 0x77, 0x20, 0x59, 0x6f, 0x72, 0x6b,
+ 0x20, 0x43, 0x69, 0x74, 0x79, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x73,
+ 0x65, 0x61, 0x72, 0x63, 0x68, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
+ 0x65, 0x64, 0x20, 0x74, 0x6f, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x68, 0x65, 0x6d, 0x61, 0x74,
+ 0x69, 0x63, 0x69, 0x61, 0x6e, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65,
+ 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65,
+ 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72,
+ 0x3d, 0x22, 0x30, 0x22, 0x20, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f,
+ 0x67, 0x69, 0x63, 0x61, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43,
+ 0x6c, 0x61, 0x73, 0x73, 0x28, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x21, 0x5b, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x5d,
+ 0x2d, 0x2d, 0x3e, 0x0d, 0x0a, 0x49, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74,
+ 0x65, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x73,
+ 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69,
+ 0x76, 0x65, 0x6c, 0x79, 0x2e, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x72,
+ 0x65, 0x66, 0x6f, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69,
+ 0x65, 0x73, 0x20, 0x6f, 0x66, 0x69, 0x73, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+ 0x65, 0x64, 0x20, 0x69, 0x6e, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20,
+ 0x77, 0x68, 0x69, 0x63, 0x68, 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73,
+ 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65,
+ 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x61, 0x6e,
+ 0x63, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x26, 0x61, 0x6d, 0x70, 0x3b, 0x6e, 0x64,
+ 0x61, 0x73, 0x68, 0x3b, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
+ 0x73, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x69, 0x6e, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64,
+ 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x65, 0x71, 0x75, 0x69, 0x70, 0x70, 0x65, 0x64,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74,
+ 0x20, 0x68, 0x61, 0x76, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x75, 0x73, 0x65, 0x64,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61,
+ 0x67, 0x65, 0x20, 0x6f, 0x66, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x20, 0x69,
+ 0x6e, 0x20, 0x74, 0x68, 0x65, 0x54, 0x68, 0x65, 0x73, 0x65, 0x20, 0x69, 0x6e,
+ 0x63, 0x6c, 0x75, 0x64, 0x65, 0x72, 0x65, 0x67, 0x61, 0x72, 0x64, 0x6c, 0x65,
+ 0x73, 0x73, 0x20, 0x6f, 0x66, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65,
+ 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x26,
+ 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x20,
+ 0x74, 0x69, 0x6d, 0x65, 0x73, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e,
+ 0x74, 0x20, 0x74, 0x68, 0x65, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0a, 0x3c, 0x2f,
+ 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x20,
+ 0x74, 0x6f, 0x20, 0x62, 0x65, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x69, 0x6c,
+ 0x69, 0x74, 0x69, 0x65, 0x73, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61,
+ 0x67, 0x65, 0x20, 0x6f, 0x66, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74,
+ 0x6f, 0x20, 0x74, 0x68, 0x65, 0x61, 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d,
+ 0x70, 0x74, 0x20, 0x74, 0x6f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x6a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x6a,
+ 0x71, 0x75, 0x65, 0x72, 0x79, 0x74, 0x77, 0x6f, 0x20, 0x64, 0x69, 0x66, 0x66,
+ 0x65, 0x72, 0x65, 0x6e, 0x74, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x74,
+ 0x6f, 0x20, 0x74, 0x68, 0x65, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73,
+ 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x69, 0x6e,
+ 0x67, 0x20, 0x74, 0x68, 0x65, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x22, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e,
+ 0x65, 0x20, 0x74, 0x68, 0x65, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c,
+ 0x65, 0x20, 0x66, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e,
+ 0x67, 0x20, 0x74, 0x6f, 0x20, 0x77, 0x69, 0x64, 0x65, 0x20, 0x72, 0x61, 0x6e,
+ 0x67, 0x65, 0x20, 0x6f, 0x66, 0x09, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x6f, 0x6e, 0x6c, 0x79, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x73, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x61, 0x6c, 0x69, 0x74, 0x79, 0x77, 0x61, 0x73, 0x20, 0x63, 0x6f, 0x6d, 0x70,
+ 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x26, 0x61, 0x6d, 0x70, 0x3b, 0x6d, 0x64,
+ 0x61, 0x73, 0x68, 0x3b, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x72,
+ 0x61, 0x63, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x73, 0x20,
+ 0x74, 0x6f, 0x20, 0x62, 0x65, 0x66, 0x61, 0x63, 0x74, 0x20, 0x74, 0x68, 0x61,
+ 0x74, 0x20, 0x74, 0x68, 0x65, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70,
+ 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x66, 0x69, 0x63,
+ 0x61, 0x6e, 0x74, 0x6c, 0x79, 0x6f, 0x6e, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x6f,
+ 0x76, 0x65, 0x72, 0x3d, 0x22, 0x62, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20,
+ 0x74, 0x68, 0x65, 0x79, 0x20, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x3d, 0x20,
+ 0x74, 0x72, 0x75, 0x65, 0x3b, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x73, 0x65, 0x65, 0x6d, 0x73, 0x20, 0x74, 0x6f,
+ 0x20, 0x68, 0x61, 0x76, 0x65, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x61, 0x72,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x70, 0x6f, 0x73, 0x73, 0x65, 0x73, 0x73, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x28, 0x29, 0x20, 0x7b, 0x74, 0x6f, 0x6f, 0x6b, 0x20, 0x70, 0x6c, 0x61,
+ 0x63, 0x65, 0x20, 0x69, 0x6e, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x6f, 0x6d, 0x65,
+ 0x74, 0x69, 0x6d, 0x65, 0x73, 0x73, 0x75, 0x62, 0x73, 0x74, 0x61, 0x6e, 0x74,
+ 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c, 0x2f,
+ 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x69, 0x73, 0x20, 0x6f, 0x66, 0x74, 0x65, 0x6e,
+ 0x20, 0x75, 0x73, 0x65, 0x64, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x74,
+ 0x74, 0x65, 0x6d, 0x70, 0x74, 0x67, 0x72, 0x65, 0x61, 0x74, 0x20, 0x64, 0x65,
+ 0x61, 0x6c, 0x20, 0x6f, 0x66, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d,
+ 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66,
+ 0x75, 0x6c, 0x6c, 0x79, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x6c,
+ 0x79, 0x20, 0x61, 0x6c, 0x6c, 0x32, 0x30, 0x74, 0x68, 0x20, 0x63, 0x65, 0x6e,
+ 0x74, 0x75, 0x72, 0x79, 0x2c, 0x70, 0x72, 0x6f, 0x66, 0x65, 0x73, 0x73, 0x69,
+ 0x6f, 0x6e, 0x61, 0x6c, 0x73, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72,
+ 0x79, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e,
+ 0x65, 0x64, 0x20, 0x62, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x62, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20,
+ 0x69, 0x74, 0x20, 0x69, 0x73, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+ 0x72, 0x79, 0x20, 0x6f, 0x66, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c,
+ 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x6d, 0x61, 0x79, 0x20, 0x72, 0x65, 0x66, 0x65,
+ 0x72, 0x20, 0x74, 0x6f, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x71, 0x75, 0x65,
+ 0x6e, 0x74, 0x6c, 0x79, 0x2c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x6c, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68,
+ 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x6f, 0x75,
+ 0x6c, 0x64, 0x20, 0x62, 0x65, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x27, 0x73, 0x20,
+ 0x66, 0x69, 0x72, 0x73, 0x74, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69,
+ 0x65, 0x64, 0x20, 0x61, 0x73, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x28, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75,
+ 0x6c, 0x61, 0x72, 0x6c, 0x79, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c,
+ 0x65, 0x66, 0x74, 0x22, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x6f, 0x6e, 0x6c, 0x79, 0x62, 0x61, 0x73, 0x69, 0x73, 0x20, 0x66, 0x6f,
+ 0x72, 0x20, 0x74, 0x68, 0x65, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69,
+ 0x74, 0x79, 0x20, 0x6f, 0x66, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x64, 0x75, 0x63,
+ 0x65, 0x20, 0x74, 0x68, 0x65, 0x6a, 0x75, 0x72, 0x69, 0x73, 0x64, 0x69, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x6e, 0x6d, 0x6f, 0x75, 0x73, 0x65,
+ 0x6f, 0x75, 0x74, 0x3d, 0x22, 0x4e, 0x65, 0x77, 0x20, 0x54, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c,
+ 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55,
+ 0x6e, 0x69, 0x74, 0x65, 0x64, 0x66, 0x69, 0x6c, 0x6d, 0x20, 0x64, 0x69, 0x72,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2d, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x2e,
+ 0x64, 0x74, 0x64, 0x22, 0x3e, 0x68, 0x61, 0x73, 0x20, 0x62, 0x65, 0x65, 0x6e,
+ 0x20, 0x75, 0x73, 0x65, 0x64, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74,
+ 0x6f, 0x20, 0x74, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68,
+ 0x20, 0x74, 0x68, 0x69, 0x73, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x69,
+ 0x6e, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x20,
+ 0x6f, 0x74, 0x68, 0x65, 0x72, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x72,
+ 0x65, 0x20, 0x61, 0x72, 0x65, 0x75, 0x6e, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64,
+ 0x65, 0x6e, 0x74, 0x65, 0x64, 0x69, 0x73, 0x20, 0x73, 0x69, 0x6d, 0x69, 0x6c,
+ 0x61, 0x72, 0x20, 0x74, 0x6f, 0x65, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c,
+ 0x6c, 0x79, 0x20, 0x69, 0x6e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20,
+ 0x62, 0x6f, 0x6c, 0x64, 0x3b, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65,
+ 0x64, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74,
+ 0x65, 0x64, 0x20, 0x74, 0x6f, 0x09, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20, 0x6e,
+ 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x65, 0x20, 0x74, 0x79, 0x70, 0x69,
+ 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x48, 0x6f, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x41, 0x6e, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70,
+ 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x64,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x69,
+ 0x65, 0x73, 0x20, 0x6f, 0x66, 0x72, 0x61, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74,
+ 0x68, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x6c, 0x6c,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72,
+ 0x79, 0x20, 0x66, 0x6f, 0x72, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x6f, 0x6c, 0x69, 0x74, 0x69, 0x63, 0x61,
+ 0x6c, 0x20, 0x61, 0x6e, 0x64, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x26, 0x6e,
+ 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
+ 0x65, 0x73, 0x20, 0x74, 0x6f, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65,
+ 0x20, 0x79, 0x65, 0x61, 0x72, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6d, 0x65,
+ 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6e, 0x6f, 0x74,
+ 0x20, 0x62, 0x65, 0x65, 0x6e, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x20,
+ 0x79, 0x65, 0x61, 0x72, 0x73, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65,
+ 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x09, 0x09, 0x3c, 0x75, 0x6c, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x76, 0x69, 0x73, 0x75, 0x61, 0x6c, 0x69, 0x7a,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x39, 0x74, 0x68, 0x20, 0x63, 0x65, 0x6e,
+ 0x74, 0x75, 0x72, 0x79, 0x2c, 0x70, 0x72, 0x61, 0x63, 0x74, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x65, 0x20,
+ 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x74,
+ 0x69, 0x6e, 0x75, 0x65, 0x64, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x69, 0x73, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e,
+ 0x65, 0x64, 0x20, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x65, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x61, 0x6d, 0x6f, 0x75,
+ 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65,
+ 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x74, 0x69, 0x61, 0x74, 0x65, 0x62, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x20,
+ 0x61, 0x62, 0x6f, 0x75, 0x74, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x6c,
+ 0x65, 0x66, 0x74, 0x3a, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69,
+ 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x20,
+ 0x6f, 0x66, 0x20, 0x61, 0x73, 0x53, 0x6f, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20,
+ 0x74, 0x68, 0x65, 0x73, 0x65, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x65, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63,
+ 0x65, 0x64, 0x20, 0x62, 0x79, 0x72, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x0a, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20, 0x6e,
+ 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x63, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c,
+ 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x20, 0x70, 0x61,
+ 0x72, 0x74, 0x20, 0x6f, 0x66, 0x49, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74,
+ 0x65, 0x20, 0x66, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6f, 0x2d, 0x63,
+ 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20,
+ 0x63, 0x61, 0x73, 0x65, 0x2c, 0x77, 0x61, 0x73, 0x20, 0x61, 0x70, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x65, 0x64, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x20,
+ 0x74, 0x6f, 0x20, 0x62, 0x65, 0x48, 0x6f, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c,
+ 0x20, 0x74, 0x68, 0x69, 0x73, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65,
+ 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6d, 0x61,
+ 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x6f,
+ 0x6e, 0x20, 0x74, 0x68, 0x65, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c,
+ 0x61, 0x72, 0x6c, 0x79, 0x20, 0x64, 0x65, 0x61, 0x6c, 0x20, 0x77, 0x69, 0x74,
+ 0x68, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x61, 0x6c, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x61,
+ 0x6c, 0x77, 0x61, 0x79, 0x73, 0x61, 0x72, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72,
+ 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x70, 0x68, 0x69, 0x6c, 0x6f, 0x73, 0x6f, 0x70,
+ 0x68, 0x79, 0x20, 0x6f, 0x66, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65,
+ 0x20, 0x74, 0x68, 0x61, 0x6e, 0x63, 0x69, 0x76, 0x69, 0x6c, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69,
+ 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64,
+ 0x49, 0x6e, 0x64, 0x65, 0x78, 0x63, 0x61, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x20, 0x69, 0x6e, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d,
+ 0x22, 0x22, 0x20, 0x2f, 0x3e, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x75,
+ 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x2f, 0x3e, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
+ 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x4d, 0x61, 0x6e, 0x79, 0x20, 0x6f, 0x66, 0x20,
+ 0x74, 0x68, 0x65, 0x73, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62,
+ 0x79, 0x20, 0x74, 0x68, 0x65, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55,
+ 0x6e, 0x69, 0x74, 0x65, 0x64, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x74,
+ 0x72, 0x61, 0x63, 0x65, 0x64, 0x69, 0x73, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74,
+ 0x65, 0x64, 0x20, 0x74, 0x6f, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x20, 0x6f,
+ 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x69, 0x73, 0x20, 0x66, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x6c, 0x69, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x69,
+ 0x6e, 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x65, 0x74, 0x69,
+ 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e,
+ 0x67, 0x20, 0x74, 0x68, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x6c, 0x75, 0x74, 0x69,
+ 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6d, 0x65,
+ 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x69, 0x73, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72,
+ 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69,
+ 0x74, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63,
+ 0x65, 0x64, 0x20, 0x69, 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65,
+ 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x22, 0x3e, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x20, 0x73, 0x74,
+ 0x6f, 0x72, 0x69, 0x65, 0x73, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x61, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x77, 0x68,
+ 0x65, 0x74, 0x68, 0x65, 0x72, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x66, 0x6f,
+ 0x72, 0x20, 0x69, 0x74, 0x73, 0x77, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x69, 0x74,
+ 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78,
+ 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6e,
+ 0x63, 0x69, 0x70, 0x61, 0x6c, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x73,
+ 0x20, 0x6f, 0x66, 0x20, 0x61, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a,
+ 0x65, 0x64, 0x20, 0x61, 0x73, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c, 0x2f,
+ 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x61,
+ 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72,
+ 0x75, 0x63, 0x74, 0x65, 0x64, 0x68, 0x65, 0x61, 0x64, 0x20, 0x6f, 0x66, 0x20,
+ 0x73, 0x74, 0x61, 0x74, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x20, 0x74, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x67, 0x72, 0x61,
+ 0x64, 0x75, 0x61, 0x74, 0x65, 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72,
+ 0x65, 0x20, 0x74, 0x77, 0x6f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x72, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63,
+ 0x72, 0x69, 0x62, 0x65, 0x64, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f,
+ 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x20, 0x61,
+ 0x73, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x68,
+ 0x65, 0x61, 0x64, 0x65, 0x72, 0x6f, 0x70, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x66, 0x75, 0x6e, 0x64, 0x61, 0x6d, 0x65, 0x6e,
+ 0x74, 0x61, 0x6c, 0x6c, 0x79, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65,
+ 0x64, 0x20, 0x74, 0x68, 0x65, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x6f, 0x74, 0x68, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x77, 0x61, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x63,
+ 0x65, 0x64, 0x20, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69,
+ 0x76, 0x65, 0x6c, 0x79, 0x2c, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x6f, 0x6c, 0x69,
+ 0x74, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f,
+ 0x72, 0x74, 0x20, 0x6f, 0x66, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x20, 0x69,
+ 0x6e, 0x20, 0x74, 0x68, 0x65, 0x32, 0x30, 0x74, 0x68, 0x20, 0x63, 0x65, 0x6e,
+ 0x74, 0x75, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x75, 0x62, 0x6c,
+ 0x69, 0x73, 0x68, 0x65, 0x64, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x68, 0x61, 0x72,
+ 0x74, 0x62, 0x65, 0x61, 0x74, 0x74, 0x6f, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72,
+ 0x73, 0x74, 0x61, 0x6e, 0x64, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x73,
+ 0x74, 0x61, 0x74, 0x65, 0x73, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d,
+ 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x68, 0x61,
+ 0x6c, 0x66, 0x20, 0x6f, 0x66, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65,
+ 0x73, 0x20, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63,
+ 0x74, 0x75, 0x72, 0x61, 0x6c, 0x62, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69,
+ 0x64, 0x65, 0x72, 0x65, 0x64, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65,
+ 0x72, 0x69, 0x7a, 0x65, 0x64, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x49, 0x6e, 0x74,
+ 0x65, 0x72, 0x76, 0x61, 0x6c, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
+ 0x61, 0x74, 0x69, 0x76, 0x65, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x77, 0x61, 0x73, 0x20, 0x73, 0x75, 0x63, 0x63,
+ 0x65, 0x65, 0x64, 0x65, 0x64, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x72,
+ 0x65, 0x20, 0x61, 0x72, 0x65, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x71,
+ 0x75, 0x65, 0x6e, 0x63, 0x65, 0x74, 0x68, 0x65, 0x20, 0x50, 0x72, 0x65, 0x73,
+ 0x69, 0x64, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x69, 0x6e, 0x63,
+ 0x6c, 0x75, 0x64, 0x65, 0x64, 0x66, 0x72, 0x65, 0x65, 0x20, 0x73, 0x6f, 0x66,
+ 0x74, 0x77, 0x61, 0x72, 0x65, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65,
+ 0x64, 0x20, 0x74, 0x68, 0x65, 0x77, 0x61, 0x73, 0x20, 0x64, 0x65, 0x73, 0x74,
+ 0x72, 0x6f, 0x79, 0x65, 0x64, 0x61, 0x77, 0x61, 0x79, 0x20, 0x66, 0x72, 0x6f,
+ 0x6d, 0x20, 0x74, 0x68, 0x65, 0x3b, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x3e, 0x0a, 0x3c, 0x61, 0x6c, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68,
+ 0x20, 0x74, 0x68, 0x65, 0x79, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64,
+ 0x20, 0x62, 0x79, 0x20, 0x61, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x70, 0x6f, 0x77,
+ 0x65, 0x72, 0x66, 0x75, 0x6c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x65, 0x64,
+ 0x20, 0x69, 0x6e, 0x20, 0x61, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x74, 0x79, 0x20, 0x6f, 0x66, 0x48, 0x6f, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c,
+ 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x73,
+ 0x69, 0x64, 0x65, 0x6e, 0x74, 0x48, 0x6f, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c,
+ 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x69, 0x73, 0x20, 0x74, 0x68, 0x6f, 0x75, 0x67,
+ 0x68, 0x74, 0x20, 0x74, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x65, 0x6e, 0x64, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x75, 0x6e, 0x63, 0x65, 0x64, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6d, 0x70, 0x6f,
+ 0x72, 0x74, 0x61, 0x6e, 0x74, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x69, 0x6e, 0x63,
+ 0x6c, 0x75, 0x64, 0x65, 0x73, 0x3e, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20,
+ 0x74, 0x79, 0x70, 0x65, 0x3d, 0x74, 0x68, 0x65, 0x20, 0x63, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x4f, 0x20, 0x4e, 0x4f, 0x54, 0x20,
+ 0x41, 0x4c, 0x54, 0x45, 0x52, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20,
+ 0x72, 0x65, 0x66, 0x65, 0x72, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x2f, 0x3f,
+ 0x73, 0x6f, 0x72, 0x74, 0x3d, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x64,
+ 0x20, 0x62, 0x65, 0x65, 0x6e, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x73, 0x69,
+ 0x73, 0x20, 0x66, 0x6f, 0x72, 0x68, 0x61, 0x73, 0x20, 0x64, 0x65, 0x76, 0x65,
+ 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73,
+ 0x75, 0x6d, 0x6d, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74,
+ 0x69, 0x76, 0x65, 0x6c, 0x79, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
+ 0x64, 0x20, 0x74, 0x68, 0x65, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20,
+ 0x74, 0x68, 0x6f, 0x73, 0x65, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x69, 0x73, 0x20, 0x69, 0x6d, 0x70, 0x6f, 0x73,
+ 0x73, 0x69, 0x62, 0x6c, 0x65, 0x76, 0x61, 0x72, 0x69, 0x6f, 0x75, 0x73, 0x20,
+ 0x6f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66,
+ 0x72, 0x69, 0x63, 0x61, 0x6e, 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x73, 0x61, 0x6d, 0x65, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76,
+ 0x65, 0x6e, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68,
+ 0x20, 0x63, 0x61, 0x73, 0x65, 0x3b, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61,
+ 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72,
+ 0x65, 0x20, 0x61, 0x6e, 0x64, 0x3b, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72,
+ 0x6f, 0x75, 0x6e, 0x64, 0x3a, 0x72, 0x65, 0x67, 0x61, 0x72, 0x64, 0x69, 0x6e,
+ 0x67, 0x20, 0x74, 0x68, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65,
+ 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, 0x73, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20,
+ 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6d,
+ 0x61, 0x72, 0x67, 0x69, 0x6e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e,
+ 0x67, 0x20, 0x74, 0x68, 0x65, 0x62, 0x61, 0x68, 0x61, 0x73, 0x61, 0x20, 0x4d,
+ 0x65, 0x6c, 0x61, 0x79, 0x75, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x62, 0x6f,
+ 0x6b, 0x6d, 0xc3, 0xa5, 0x6c, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x6e, 0x79,
+ 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x73, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0xc5, 0xa1,
+ 0xc4, 0x8d, 0x69, 0x6e, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x63,
+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x63, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x63, 0x61,
+ 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x63, 0x6f, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61,
+ 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63,
+ 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x22, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x64, 0x69, 0x73, 0x61, 0x6d, 0x62, 0x69,
+ 0x67, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e,
+ 0x4e, 0x61, 0x6d, 0x65, 0x27, 0x2c, 0x20, 0x27, 0x61, 0x64, 0x6d, 0x69, 0x6e,
+ 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x69, 0x6d, 0x75,
+ 0x6c, 0x74, 0x61, 0x6e, 0x65, 0x6f, 0x75, 0x73, 0x6c, 0x79, 0x74, 0x72, 0x61,
+ 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e,
+ 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x6d,
+ 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x3a,
+ 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74,
+ 0x79, 0x3c, 0x21, 0x5b, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x5d, 0x2d, 0x2d, 0x3e,
+ 0x0a, 0x3c, 0x2f, 0x3e, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20, 0x6e, 0x61, 0x6d,
+ 0x65, 0x3d, 0x22, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x73, 0x74, 0x72, 0x75,
+ 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d,
+ 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64,
+ 0x3e, 0x0a, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3d, 0x68, 0x74, 0x74, 0x70,
+ 0x25, 0x33, 0x41, 0x25, 0x32, 0x46, 0x25, 0x32, 0x46, 0x3c, 0x66, 0x6f, 0x72,
+ 0x6d, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x6d, 0x65, 0x74,
+ 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x70, 0x6f, 0x73, 0x74, 0x22, 0x20, 0x2f, 0x66,
+ 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x2e, 0x69, 0x63, 0x6f, 0x22, 0x20, 0x7d,
+ 0x29, 0x3b, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a,
+ 0x2e, 0x73, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
+ 0x28, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79,
+ 0x28, 0x29, 0x3b, 0x3c, 0x21, 0x5b, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x5d, 0x2d,
+ 0x2d, 0x3e, 0x0d, 0x0a, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x3b, 0x55, 0x6e, 0x66, 0x6f, 0x72, 0x74, 0x75, 0x6e,
+ 0x61, 0x74, 0x65, 0x6c, 0x79, 0x2c, 0x22, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70,
+ 0x3b, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x2f, 0x66, 0x61, 0x76, 0x69, 0x63,
+ 0x6f, 0x6e, 0x2e, 0x69, 0x63, 0x6f, 0x22, 0x3e, 0x3d, 0x27, 0x73, 0x74, 0x79,
+ 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x27, 0x20, 0x69, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x66,
+ 0x6f, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2c, 0x3c, 0x6c,
+ 0x69, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x61,
+ 0x6e, 0x20, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65,
+ 0x61, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x6f,
+ 0x66, 0x70, 0x74, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x3e, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, 0x69,
+ 0x74, 0x22, 0x20, 0x0a, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x28, 0x29, 0x20, 0x7b, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x61, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f,
+ 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x73,
+ 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x73, 0x74, 0x79, 0x6c,
+ 0x65, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x41, 0x63, 0x63,
+ 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x68, 0x69, 0x64,
+ 0x64, 0x65, 0x6e, 0x22, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x6c,
+ 0x6f, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x64,
+ 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x62, 0x6f, 0x64, 0x79, 0x2e,
+ 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x6c, 0x79,
+ 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x74, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x3d, 0x22, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x26, 0x71,
+ 0x75, 0x6f, 0x74, 0x3b, 0x2d, 0x2d, 0x3c, 0x21, 0x5b, 0x65, 0x6e, 0x64, 0x69,
+ 0x66, 0x5d, 0x2d, 0x2d, 0x3e, 0x50, 0x72, 0x69, 0x6d, 0x65, 0x20, 0x4d, 0x69,
+ 0x6e, 0x69, 0x73, 0x74, 0x65, 0x72, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74,
+ 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c,
+ 0x61, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x74, 0x68, 0x65, 0x20, 0x68,
+ 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x6f, 0x6e, 0x6d,
+ 0x6f, 0x75, 0x73, 0x65, 0x6f, 0x76, 0x65, 0x72, 0x3d, 0x22, 0x74, 0x68, 0x65,
+ 0x20, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77,
+ 0x61, 0x73, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x6c, 0x79,
+ 0x77, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65,
+ 0x64, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74,
+ 0x69, 0x76, 0x65, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64,
+ 0x65, 0x72, 0x65, 0x64, 0x3c, 0x21, 0x5b, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x5d,
+ 0x2d, 0x2d, 0x3e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x20,
+ 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73,
+ 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6e,
+ 0x74, 0x72, 0x61, 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x6c, 0x61, 0x63,
+ 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x69, 0x6e, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x69, 0x6e, 0x74,
+ 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x63, 0x6f,
+ 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x73,
+ 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d,
+ 0x3a, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20,
+ 0x7b, 0x42, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74,
+ 0x68, 0x65, 0x2d, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x2e, 0x64, 0x74, 0x64,
+ 0x22, 0x3e, 0x0a, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x61, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69,
+ 0x65, 0x64, 0x20, 0x62, 0x79, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20,
+ 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70,
+ 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x61,
+ 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x73, 0x29, 0x3b,
+ 0x20, 0x6a, 0x73, 0x2e, 0x69, 0x64, 0x20, 0x3d, 0x20, 0x69, 0x64, 0x22, 0x20,
+ 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x72,
+ 0x65, 0x67, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x52, 0x6f, 0x6d, 0x61, 0x6e, 0x20, 0x43, 0x61, 0x74, 0x68, 0x6f, 0x6c, 0x69,
+ 0x63, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65,
+ 0x6e, 0x74, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x2e, 0x67, 0x69, 0x66, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x3d, 0x22, 0x31, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69,
+ 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x61, 0x65, 0x6f,
+ 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x70, 0x72, 0x69, 0x6d, 0x65, 0x20,
+ 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6a, 0x73, 0x22, 0x3e,
+ 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x63, 0x6f, 0x6d, 0x62,
+ 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x61,
+ 0x72, 0x67, 0x69, 0x6e, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x63, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x28, 0x77,
+ 0x2e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x28,
+ 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72,
+ 0x3e, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
+ 0x2f, 0x61, 0x49, 0x6e, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c,
+ 0x61, 0x72, 0x2c, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65,
+ 0x66, 0x74, 0x22, 0x20, 0x43, 0x7a, 0x65, 0x63, 0x68, 0x20, 0x52, 0x65, 0x70,
+ 0x75, 0x62, 0x6c, 0x69, 0x63, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x4b,
+ 0x69, 0x6e, 0x67, 0x64, 0x6f, 0x6d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x6c, 0x75,
+ 0x64, 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x2e, 0x68, 0x74, 0x6d, 0x6c,
+ 0x22, 0x20, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3d, 0x22, 0x28, 0x66, 0x75, 0x6e,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0x63, 0x6f, 0x6d,
+ 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x61, 0x70,
+ 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x3c,
+ 0x73, 0x70, 0x61, 0x6e, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73,
+ 0x62, 0x65, 0x6c, 0x69, 0x65, 0x76, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x62,
+ 0x65, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x28, 0x27, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x27, 0x3c, 0x2f, 0x61, 0x3e, 0x0a, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0x0a,
+ 0x3c, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x74, 0x3e, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x28, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x6b,
+ 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61, 0x73, 0x09, 0x3c, 0x6c, 0x69, 0x3e, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x3e, 0x3c, 0x69, 0x6e, 0x70,
+ 0x75, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x73, 0x65, 0x70, 0x61,
+ 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x72, 0x65, 0x66,
+ 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x73, 0x20, 0x76,
+ 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70, 0x22, 0x3e, 0x66,
+ 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f,
+ 0x20, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x20, 0x64, 0x69, 0x6f, 0x78, 0x69,
+ 0x64, 0x65, 0x0a, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x65, 0x61,
+ 0x72, 0x63, 0x68, 0x2d, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0a, 0x3c, 0x2f,
+ 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x6f, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x6e,
+ 0x69, 0x74, 0x79, 0x20, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64,
+ 0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x73, 0x74, 0x79, 0x6c,
+ 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x54, 0x69, 0xe1, 0xba,
+ 0xbf, 0x6e, 0x67, 0x20, 0x56, 0x69, 0xe1, 0xbb, 0x87, 0x74, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x62, 0x6f,
+ 0x72, 0x64, 0x65, 0x72, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x30,
+ 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, 0x20,
+ 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
+ 0x3c, 0x77, 0x61, 0x73, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
+ 0x65, 0x64, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78,
+ 0x74, 0x22, 0x20, 0x29, 0x3b, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x3e, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e,
+ 0x74, 0x20, 0x6f, 0x66, 0x20, 0x65, 0x63, 0x63, 0x6c, 0x65, 0x73, 0x69, 0x61,
+ 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x68,
+ 0x61, 0x73, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x69, 0x6e, 0x67, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x3c, 0x2f, 0x62, 0x6f, 0x64,
+ 0x79, 0x3e, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x68, 0x61, 0x73, 0x20,
+ 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x74, 0x68, 0x65,
+ 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x69, 0x6e,
+ 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x61,
+ 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20,
+ 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20,
+ 0x69, 0x77, 0x61, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72,
+ 0x65, 0x64, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20,
+ 0x74, 0x68, 0x65, 0x22, 0x20, 0x2f, 0x3e, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f,
+ 0x64, 0x69, 0x76, 0x3e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x65,
+ 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74,
+ 0x2d, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x74, 0x6f, 0x20, 0x62, 0x65,
+ 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x75, 0x73, 0x65, 0x64, 0x6d, 0x65, 0x6d, 0x62,
+ 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x64,
+ 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x74, 0x72,
+ 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x69,
+ 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
+ 0x2f, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6f, 0x72, 0x20, 0x6e,
+ 0x6f, 0x74, 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61,
+ 0x6c, 0x73, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20,
+ 0x6d, 0x61, 0x6e, 0x79, 0x61, 0x20, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x20, 0x6e,
+ 0x75, 0x6d, 0x62, 0x65, 0x72, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x61,
+ 0x72, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x69, 0x6d, 0x70, 0x6f, 0x73, 0x73, 0x69,
+ 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+ 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x2e, 0x20, 0x48, 0x6f,
+ 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x61, 0x6e, 0x64,
+ 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x41, 0x74,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x62,
+ 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x74, 0x73,
+ 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68,
+ 0x65, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x3d, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x70, 0x6f,
+ 0x73, 0x74, 0x22, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x70, 0x6f, 0x73, 0x73,
+ 0x69, 0x62, 0x6c, 0x65, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x6c, 0x69, 0x6b, 0x65,
+ 0x6c, 0x79, 0x20, 0x74, 0x6f, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x63, 0x72, 0x65,
+ 0x61, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6c,
+ 0x73, 0x6f, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x61, 0x6e, 0x6e, 0x6f, 0x75,
+ 0x6e, 0x63, 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x61, 0x6c, 0x69, 0x67,
+ 0x6e, 0x3d, 0x22, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0x6d, 0x61, 0x6e,
+ 0x79, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x66, 0x6f,
+ 0x72, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x79, 0x65, 0x61, 0x72, 0x73, 0x65,
+ 0x61, 0x72, 0x6c, 0x69, 0x65, 0x73, 0x74, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e,
+ 0x62, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x69, 0x74, 0x20, 0x77, 0x61,
+ 0x73, 0x70, 0x74, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x3e, 0x0d, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f,
+ 0x70, 0x22, 0x20, 0x69, 0x6e, 0x68, 0x61, 0x62, 0x69, 0x74, 0x61, 0x6e, 0x74,
+ 0x73, 0x20, 0x6f, 0x66, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67,
+ 0x20, 0x79, 0x65, 0x61, 0x72, 0x0d, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x6f, 0x6e,
+ 0x20, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
+ 0x76, 0x65, 0x72, 0x73, 0x69, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x63, 0x65,
+ 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x61, 0x72, 0x67, 0x75,
+ 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x67, 0x6f, 0x76,
+ 0x65, 0x72, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x61, 0x20,
+ 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x74, 0x6f, 0x74,
+ 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f,
+ 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x3a, 0x61, 0x6c, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x74, 0x68,
+ 0x65, 0x72, 0x65, 0x62, 0x65, 0x73, 0x74, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e,
+ 0x20, 0x66, 0x6f, 0x72, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x6e,
+ 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68,
+ 0x61, 0x6e, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x63,
+ 0x69, 0x6c, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x65, 0x64, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x3c,
+ 0x6d, 0x65, 0x74, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x45, 0x6e,
+ 0x74, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x61,
+ 0x77, 0x61, 0x79, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x3b, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74,
+ 0x3a, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20,
+ 0x6f, 0x66, 0x69, 0x6e, 0x76, 0x65, 0x73, 0x74, 0x69, 0x67, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20,
+ 0x77, 0x69, 0x74, 0x68, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20,
+ 0x6f, 0x74, 0x68, 0x65, 0x72, 0x61, 0x6c, 0x74, 0x68, 0x6f, 0x75, 0x67, 0x68,
+ 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x6e, 0x69,
+ 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x3c, 0x73, 0x70, 0x61, 0x6e,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x64, 0x65, 0x73, 0x63, 0x65,
+ 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x3c, 0x73, 0x70, 0x61,
+ 0x6e, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x20, 0x61, 0x6c,
+ 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3c, 0x2f,
+ 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0a, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x61,
+ 0x73, 0x70, 0x65, 0x63, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x68, 0x61, 0x73, 0x20, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x20, 0x62, 0x65, 0x65,
+ 0x6e, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x61, 0x6e, 0x20, 0x55, 0x6e, 0x69,
+ 0x6f, 0x6e, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x63, 0x65, 0x6e, 0x74,
+ 0x20, 0x6f, 0x66, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x64, 0x69, 0x66, 0x66, 0x69,
+ 0x63, 0x75, 0x6c, 0x74, 0x56, 0x69, 0x63, 0x65, 0x20, 0x50, 0x72, 0x65, 0x73,
+ 0x69, 0x64, 0x65, 0x6e, 0x74, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20,
+ 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x69,
+ 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, 0x66, 0x6f, 0x6e, 0x74, 0x2d,
+ 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31, 0x31, 0x70, 0x78, 0x65, 0x78, 0x70, 0x6c,
+ 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x74, 0x68, 0x65,
+ 0x20, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x70, 0x74, 0x20, 0x6f, 0x66, 0x77, 0x72,
+ 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x09,
+ 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
+ 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x72, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x20,
+ 0x74, 0x6f, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x6f, 0x75,
+ 0x6e, 0x64, 0x73, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x73, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20,
+ 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20,
+ 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x69,
+ 0x64, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x75, 0x70, 0x70,
+ 0x6f, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x3c, 0x69, 0x6e,
+ 0x70, 0x75, 0x74, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x3c, 0x73,
+ 0x70, 0x61, 0x6e, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x74, 0x28,
+ 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x28, 0x29,
+ 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x6e, 0x65, 0x6e,
+ 0x74, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x6f, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x6e, 0x6f,
+ 0x70, 0x6c, 0x65, 0x77, 0x65, 0x72, 0x65, 0x20, 0x70, 0x75, 0x62, 0x6c, 0x69,
+ 0x73, 0x68, 0x65, 0x64, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x73, 0x65, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x73, 0x20,
+ 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x31, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x3d, 0x22, 0x31, 0x22, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x69,
+ 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, 0x77, 0x68, 0x69, 0x63, 0x68,
+ 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x77, 0x68, 0x69, 0x63,
+ 0x68, 0x20, 0x68, 0x61, 0x64, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x64, 0x65, 0x73,
+ 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x74, 0x68,
+ 0x65, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a,
+ 0x09, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
+ 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x20, 0x6f,
+ 0x66, 0x73, 0x6f, 0x6d, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x20, 0x75, 0x73,
+ 0x65, 0x64, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x68,
+ 0x61, 0x76, 0x65, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x6f, 0x66,
+ 0x20, 0x74, 0x68, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20,
+ 0x74, 0x6f, 0x20, 0x62, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x20,
+ 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22,
+ 0x63, 0x6c, 0x65, 0x61, 0x72, 0x3a, 0x62, 0x0d, 0x0a, 0x3c, 0x2f, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0d, 0x0a, 0x3c, 0x77, 0x61, 0x73, 0x20, 0x66,
+ 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x69, 0x6e, 0x74, 0x65,
+ 0x72, 0x76, 0x69, 0x65, 0x77, 0x20, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x69, 0x64,
+ 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x63, 0x61,
+ 0x70, 0x69, 0x74, 0x61, 0x6c, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x0d,
+ 0x0a, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x73,
+ 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68,
+ 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68,
+ 0x61, 0x74, 0x78, 0x4d, 0x4c, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71,
+ 0x75, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x20, 0x6c, 0x61,
+ 0x72, 0x67, 0x65, 0x73, 0x74, 0x76, 0x65, 0x72, 0x79, 0x20, 0x69, 0x6d, 0x70,
+ 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x73, 0x75, 0x72, 0x66, 0x61, 0x63,
+ 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x61, 0x70, 0x70, 0x6c, 0x69,
+ 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x66, 0x6f, 0x72, 0x65,
+ 0x69, 0x67, 0x6e, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x73, 0x65,
+ 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x65, 0x73,
+ 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x69,
+ 0x73, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x65, 0x76, 0x65, 0x64, 0x20, 0x74, 0x6f,
+ 0x49, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74,
+ 0x6f, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, 0x74,
+ 0x68, 0x65, 0x69, 0x73, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x20, 0x61, 0x66,
+ 0x74, 0x65, 0x72, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74,
+ 0x20, 0x74, 0x68, 0x65, 0x69, 0x73, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73,
+ 0x65, 0x6e, 0x74, 0x65, 0x64, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x65, 0x66,
+ 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69,
+ 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72,
+ 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x6f, 0x66, 0x68, 0x65, 0x20, 0x72,
+ 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x3c, 0x73, 0x70,
+ 0x61, 0x6e, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x70, 0x65,
+ 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x28,
+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0d,
+ 0x69, 0x66, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69,
+ 0x66, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74,
+ 0x68, 0x65, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20,
+ 0x74, 0x68, 0x65, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20,
+ 0x77, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x4e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x68,
+ 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74,
+ 0x68, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x79, 0x70, 0x65, 0x22, 0x20, 0x63,
+ 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x41, 0x73, 0x73, 0x6f, 0x63,
+ 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x0a, 0x3c, 0x2f, 0x68,
+ 0x65, 0x61, 0x64, 0x3e, 0x0a, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x6c, 0x6f, 0x63,
+ 0x61, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x69, 0x73,
+ 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x28,
+ 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65,
+ 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75,
+ 0x61, 0x6c, 0x61, 0x6d, 0x6f, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d,
+ 0x6f, 0x73, 0x74, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6f,
+ 0x74, 0x68, 0x65, 0x72, 0x2f, 0x3e, 0x0a, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20,
+ 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+ 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x74, 0x68, 0x65, 0x20, 0x70, 0x75, 0x72,
+ 0x70, 0x6f, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x74, 0x68, 0x65, 0x20, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x20, 0x74, 0x6f, 0x3b, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x3a, 0x23, 0x66, 0x66, 0x66, 0x7d, 0x0a, 0x2e, 0x0a, 0x3c, 0x73, 0x70,
+ 0x61, 0x6e, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x74, 0x68, 0x65,
+ 0x20, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x6f, 0x66, 0x64, 0x65,
+ 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x3e,
+ 0x0d, 0x0a, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22,
+ 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68,
+ 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70,
+ 0x65, 0x64, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x3d, 0x22, 0x63, 0x65, 0x6c, 0x65, 0x62, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x20, 0x6f, 0x66, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, 0x73, 0x74, 0x69,
+ 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x62, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x20,
+ 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x75, 0x6e, 0x64, 0x65, 0x72,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x6f, 0x74, 0x65,
+ 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x3e, 0x3c, 0x21,
+ 0x5b, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x5d, 0x2d, 0x2d, 0x3e, 0x0a, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x69,
+ 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x20, 0x74, 0x68,
+ 0x65, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x20,
+ 0x6f, 0x66, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x20,
+ 0x74, 0x68, 0x65, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x73, 0x20, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x65, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c,
+ 0x6c, 0x79, 0x20, 0x74, 0x68, 0x65, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64,
+ 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x77, 0x61, 0x73, 0x20, 0x65, 0x76,
+ 0x65, 0x6e, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x74, 0x68, 0x72, 0x6f, 0x75,
+ 0x67, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x68, 0x69, 0x73, 0x74, 0x68, 0x65, 0x20,
+ 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x6f, 0x6d,
+ 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x73, 0x70,
+ 0x61, 0x6e, 0x3e, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c, 0x2f, 0x73,
+ 0x69, 0x67, 0x6e, 0x69, 0x66, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x6c, 0x79, 0x20,
+ 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x61,
+ 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20,
+ 0x74, 0x68, 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20,
+ 0x75, 0x73, 0x65, 0x64, 0x65, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x6c,
+ 0x79, 0x20, 0x66, 0x6f, 0x72, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61,
+ 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, 0x73, 0x20, 0x65, 0x73, 0x73, 0x65,
+ 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x77, 0x65, 0x72, 0x65, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x69, 0x73, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x73, 0x74, 0x68, 0x61, 0x76, 0x65,
+ 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x22, 0x20, 0x73,
+ 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x69, 0x6e,
+ 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x73,
+ 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x6f, 0x66,
+ 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3d, 0x22, 0x6e, 0x6f, 0x22,
+ 0x20, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x20,
+ 0x6f, 0x66, 0x49, 0x49, 0x2c, 0x20, 0x48, 0x6f, 0x6c, 0x79, 0x20, 0x52, 0x6f,
+ 0x6d, 0x61, 0x6e, 0x69, 0x73, 0x20, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65,
+ 0x64, 0x20, 0x74, 0x6f, 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x69,
+ 0x72, 0x20, 0x6f, 0x77, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20,
+ 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x74, 0x72, 0x61, 0x64, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x64,
+ 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x72, 0x65, 0x20, 0x6f,
+ 0x66, 0x74, 0x65, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x64, 0x74, 0x6f, 0x20, 0x65,
+ 0x6e, 0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x61, 0x67, 0x72,
+ 0x65, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x63, 0x6f,
+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x61,
+ 0x72, 0x65, 0x20, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x6c, 0x79,
+ 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f,
+ 0x6e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74,
+ 0x68, 0x65, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x69,
+ 0x6e, 0x20, 0x61, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0x3c,
+ 0x2f, 0x75, 0x6c, 0x3e, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66,
+ 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x73, 0x70, 0x65,
+ 0x63, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x62,
+ 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, 0x20, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e,
+ 0x3e, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x77, 0x68, 0x69, 0x63, 0x68,
+ 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x3e, 0x0a, 0x3c, 0x6d,
+ 0x65, 0x74, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x6e,
+ 0x73, 0x69, 0x64, 0x65, 0x72, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x63, 0x61,
+ 0x72, 0x72, 0x69, 0x65, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x62, 0x79, 0x48,
+ 0x6f, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73,
+ 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6f,
+ 0x66, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x74, 0x6f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x69, 0x6e, 0x20,
+ 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x70, 0x69, 0x74, 0x61,
+ 0x6c, 0x20, 0x6f, 0x66, 0x77, 0x61, 0x73, 0x20, 0x6f, 0x66, 0x66, 0x69, 0x63,
+ 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x68, 0x61,
+ 0x73, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x74, 0x68, 0x65, 0x20, 0x48, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x20, 0x6f, 0x66, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e,
+ 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6f, 0x64, 0x69, 0x66, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x74, 0x6f, 0x20, 0x73,
+ 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0x73, 0x75, 0x67,
+ 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x69, 0x6e,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x20,
+ 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
+ 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x62, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x68,
+ 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77,
+ 0x69, 0x74, 0x68, 0x74, 0x68, 0x65, 0x20, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x74, 0x79, 0x6f, 0x70, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x74,
+ 0x6f, 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74,
+ 0x65, 0x78, 0x74, 0x20, 0x6f, 0x66, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x70, 0x74, 0x65, 0x78, 0x74, 0x22, 0x20,
+ 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x71, 0x22, 0x09, 0x09, 0x3c, 0x64, 0x69,
+ 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x74, 0x68, 0x65, 0x20,
+ 0x73, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x72, 0x65, 0x70,
+ 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x6d, 0x61,
+ 0x74, 0x68, 0x65, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x69, 0x61, 0x6e, 0x73, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65,
+ 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x62, 0x65, 0x65,
+ 0x6e, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
+ 0x22, 0x63, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x68, 0x65, 0x61,
+ 0x64, 0x65, 0x72, 0x69, 0x6e, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75,
+ 0x6c, 0x61, 0x72, 0x2c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64,
+ 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x29, 0x3b, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x3c, 0x70, 0x68, 0x69, 0x6c, 0x6f, 0x73, 0x6f,
+ 0x70, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x6f,
+ 0x68, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b, 0x69, 0x74, 0x69, 0xe1, 0xba, 0xbf,
+ 0x6e, 0x67, 0x20, 0x56, 0x69, 0xe1, 0xbb, 0x87, 0x74, 0xd0, 0xa0, 0xd1, 0x83,
+ 0xd1, 0x81, 0xd1, 0x81, 0xd0, 0xba, 0xd0, 0xb8, 0xd0, 0xb9, 0xd1, 0x80, 0xd1,
+ 0x83, 0xd1, 0x81, 0xd1, 0x81, 0xd0, 0xba, 0xd0, 0xb8, 0xd0, 0xb9, 0x69, 0x6e,
+ 0x76, 0x65, 0x73, 0x74, 0x69, 0x67, 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x70,
+ 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e,
+ 0xd0, 0xba, 0xd0, 0xbe, 0xd1, 0x82, 0xd0, 0xbe, 0xd1, 0x80, 0xd1, 0x8b, 0xd0,
+ 0xb5, 0xd0, 0xbe, 0xd0, 0xb1, 0xd0, 0xbb, 0xd0, 0xb0, 0xd1, 0x81, 0xd1, 0x82,
+ 0xd0, 0xb8, 0xd0, 0xba, 0xd0, 0xbe, 0xd1, 0x82, 0xd0, 0xbe, 0xd1, 0x80, 0xd1,
+ 0x8b, 0xd0, 0xb9, 0xd1, 0x87, 0xd0, 0xb5, 0xd0, 0xbb, 0xd0, 0xbe, 0xd0, 0xb2,
+ 0xd0, 0xb5, 0xd0, 0xba, 0xd1, 0x81, 0xd0, 0xb8, 0xd1, 0x81, 0xd1, 0x82, 0xd0,
+ 0xb5, 0xd0, 0xbc, 0xd1, 0x8b, 0xd0, 0x9d, 0xd0, 0xbe, 0xd0, 0xb2, 0xd0, 0xbe,
+ 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb8, 0xd0, 0xba, 0xd0, 0xbe, 0xd1, 0x82, 0xd0,
+ 0xbe, 0xd1, 0x80, 0xd1, 0x8b, 0xd1, 0x85, 0xd0, 0xbe, 0xd0, 0xb1, 0xd0, 0xbb,
+ 0xd0, 0xb0, 0xd1, 0x81, 0xd1, 0x82, 0xd1, 0x8c, 0xd0, 0xb2, 0xd1, 0x80, 0xd0,
+ 0xb5, 0xd0, 0xbc, 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb8, 0xd0, 0xba, 0xd0, 0xbe,
+ 0xd1, 0x82, 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xb0, 0xd1, 0x8f, 0xd1, 0x81, 0xd0,
+ 0xb5, 0xd0, 0xb3, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xbd, 0xd1, 0x8f, 0xd1, 0x81,
+ 0xd0, 0xba, 0xd0, 0xb0, 0xd1, 0x87, 0xd0, 0xb0, 0xd1, 0x82, 0xd1, 0x8c, 0xd0,
+ 0xbd, 0xd0, 0xbe, 0xd0, 0xb2, 0xd0, 0xbe, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb8,
+ 0xd0, 0xa3, 0xd0, 0xba, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xb8, 0xd0, 0xbd, 0xd1,
+ 0x8b, 0xd0, 0xb2, 0xd0, 0xbe, 0xd0, 0xbf, 0xd1, 0x80, 0xd0, 0xbe, 0xd1, 0x81,
+ 0xd1, 0x8b, 0xd0, 0xba, 0xd0, 0xbe, 0xd1, 0x82, 0xd0, 0xbe, 0xd1, 0x80, 0xd0,
+ 0xbe, 0xd0, 0xb9, 0xd1, 0x81, 0xd0, 0xb4, 0xd0, 0xb5, 0xd0, 0xbb, 0xd0, 0xb0,
+ 0xd1, 0x82, 0xd1, 0x8c, 0xd0, 0xbf, 0xd0, 0xbe, 0xd0, 0xbc, 0xd0, 0xbe, 0xd1,
+ 0x89, 0xd1, 0x8c, 0xd1, 0x8e, 0xd1, 0x81, 0xd1, 0x80, 0xd0, 0xb5, 0xd0, 0xb4,
+ 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb2, 0xd0, 0xbe, 0xd0, 0xb1, 0xd1, 0x80, 0xd0,
+ 0xb0, 0xd0, 0xb7, 0xd0, 0xbe, 0xd0, 0xbc, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xbe,
+ 0xd1, 0x80, 0xd0, 0xbe, 0xd0, 0xbd, 0xd1, 0x8b, 0xd1, 0x83, 0xd1, 0x87, 0xd0,
+ 0xb0, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb8, 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xb5,
+ 0xd1, 0x87, 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb8, 0xd0, 0xb5, 0xd0, 0x93, 0xd0,
+ 0xbb, 0xd0, 0xb0, 0xd0, 0xb2, 0xd0, 0xbd, 0xd0, 0xb0, 0xd1, 0x8f, 0xd0, 0xb8,
+ 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xb8, 0xd0, 0xb8, 0xd1,
+ 0x81, 0xd0, 0xb8, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xbc, 0xd0, 0xb0,
+ 0xd1, 0x80, 0xd0, 0xb5, 0xd1, 0x88, 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb8, 0xd1,
+ 0x8f, 0xd0, 0xa1, 0xd0, 0xba, 0xd0, 0xb0, 0xd1, 0x87, 0xd0, 0xb0, 0xd1, 0x82,
+ 0xd1, 0x8c, 0xd0, 0xbf, 0xd0, 0xbe, 0xd1, 0x8d, 0xd1, 0x82, 0xd0, 0xbe, 0xd0,
+ 0xbc, 0xd1, 0x83, 0xd1, 0x81, 0xd0, 0xbb, 0xd0, 0xb5, 0xd0, 0xb4, 0xd1, 0x83,
+ 0xd0, 0xb5, 0xd1, 0x82, 0xd1, 0x81, 0xd0, 0xba, 0xd0, 0xb0, 0xd0, 0xb7, 0xd0,
+ 0xb0, 0xd1, 0x82, 0xd1, 0x8c, 0xd1, 0x82, 0xd0, 0xbe, 0xd0, 0xb2, 0xd0, 0xb0,
+ 0xd1, 0x80, 0xd0, 0xbe, 0xd0, 0xb2, 0xd0, 0xba, 0xd0, 0xbe, 0xd0, 0xbd, 0xd0,
+ 0xb5, 0xd1, 0x87, 0xd0, 0xbd, 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xb5, 0xd1, 0x88,
+ 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb8, 0xd0, 0xb5, 0xd0, 0xba, 0xd0, 0xbe, 0xd1,
+ 0x82, 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xbe, 0xd0, 0xb5, 0xd0, 0xbe, 0xd1, 0x80,
+ 0xd0, 0xb3, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0xb2, 0xd0, 0xba, 0xd0,
+ 0xbe, 0xd1, 0x82, 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xbe, 0xd0, 0xbc, 0xd0, 0xa0,
+ 0xd0, 0xb5, 0xd0, 0xba, 0xd0, 0xbb, 0xd0, 0xb0, 0xd0, 0xbc, 0xd0, 0xb0, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd9, 0x86, 0xd8, 0xaa, 0xd8, 0xaf, 0xd9, 0x89,
+ 0xd9, 0x85, 0xd9, 0x86, 0xd8, 0xaa, 0xd8, 0xaf, 0xd9, 0x8a, 0xd8, 0xa7, 0xd8,
+ 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd9, 0x88, 0xd8, 0xb6, 0xd9, 0x88,
+ 0xd8, 0xb9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa8, 0xd8, 0xb1, 0xd8, 0xa7, 0xd9,
+ 0x85, 0xd8, 0xac, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd9, 0x88, 0xd8, 0xa7,
+ 0xd9, 0x82, 0xd8, 0xb9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb1, 0xd8, 0xb3, 0xd8,
+ 0xa7, 0xd8, 0xa6, 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xb4, 0xd8, 0xa7, 0xd8, 0xb1,
+ 0xd9, 0x83, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa3, 0xd8,
+ 0xb9, 0xd8, 0xb6, 0xd8, 0xa7, 0xd8, 0xa1, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb1,
+ 0xd9, 0x8a, 0xd8, 0xa7, 0xd8, 0xb6, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8,
+ 0xaa, 0xd8, 0xb5, 0xd9, 0x85, 0xd9, 0x8a, 0xd9, 0x85, 0xd8, 0xa7, 0xd9, 0x84,
+ 0xd8, 0xa7, 0xd8, 0xb9, 0xd8, 0xb6, 0xd8, 0xa7, 0xd8, 0xa1, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd9, 0x86, 0xd8, 0xaa, 0xd8, 0xa7, 0xd8, 0xa6, 0xd8, 0xac, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd8, 0xa3, 0xd9, 0x84, 0xd8, 0xb9, 0xd8, 0xa7, 0xd8, 0xa8, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd8, 0xaa, 0xd8, 0xb3, 0xd8, 0xac, 0xd9, 0x8a, 0xd9, 0x84,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa3, 0xd9, 0x82, 0xd8, 0xb3, 0xd8, 0xa7, 0xd9,
+ 0x85, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb6, 0xd8, 0xba, 0xd8, 0xb7, 0xd8, 0xa7,
+ 0xd8, 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x81, 0xd9, 0x8a, 0xd8, 0xaf, 0xd9,
+ 0x8a, 0xd9, 0x88, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xaa, 0xd8, 0xb1, 0xd8, 0xad,
+ 0xd9, 0x8a, 0xd8, 0xa8, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xac, 0xd8, 0xaf, 0xd9,
+ 0x8a, 0xd8, 0xaf, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xaa, 0xd8, 0xb9,
+ 0xd9, 0x84, 0xd9, 0x8a, 0xd9, 0x85, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa3, 0xd8,
+ 0xae, 0xd8, 0xa8, 0xd8, 0xa7, 0xd8, 0xb1, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa7,
+ 0xd9, 0x81, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x85, 0xd8, 0xa7, 0xd9, 0x84, 0xd8,
+ 0xa3, 0xd9, 0x81, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x85, 0xd8, 0xa7, 0xd9, 0x84,
+ 0xd8, 0xaa, 0xd8, 0xa7, 0xd8, 0xb1, 0xd9, 0x8a, 0xd8, 0xae, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd8, 0xaa, 0xd9, 0x82, 0xd9, 0x86, 0xd9, 0x8a, 0xd8, 0xa9, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb9, 0xd8, 0xa7, 0xd8, 0xa8, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd8, 0xae, 0xd9, 0x88, 0xd8, 0xa7, 0xd8, 0xb7, 0xd8, 0xb1,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xac, 0xd8, 0xaa, 0xd9, 0x85, 0xd8,
+ 0xb9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xaf, 0xd9, 0x8a, 0xd9, 0x83, 0xd9, 0x88,
+ 0xd8, 0xb1, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb3, 0xd9, 0x8a, 0xd8, 0xa7, 0xd8,
+ 0xad, 0xd8, 0xa9, 0xd8, 0xb9, 0xd8, 0xa8, 0xd8, 0xaf, 0xd8, 0xa7, 0xd9, 0x84,
+ 0xd9, 0x84, 0xd9, 0x87, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xaa, 0xd8, 0xb1, 0xd8,
+ 0xa8, 0xd9, 0x8a, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb1, 0xd9, 0x88,
+ 0xd8, 0xa7, 0xd8, 0xa8, 0xd8, 0xb7, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa3, 0xd8,
+ 0xaf, 0xd8, 0xa8, 0xd9, 0x8a, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa7,
+ 0xd8, 0xae, 0xd8, 0xa8, 0xd8, 0xa7, 0xd8, 0xb1, 0xd8, 0xa7, 0xd9, 0x84, 0xd9,
+ 0x85, 0xd8, 0xaa, 0xd8, 0xad, 0xd8, 0xaf, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84,
+ 0xd8, 0xa7, 0xd8, 0xba, 0xd8, 0xa7, 0xd9, 0x86, 0xd9, 0x8a, 0x63, 0x75, 0x72,
+ 0x73, 0x6f, 0x72, 0x3a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0x3c,
+ 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x0a, 0x3c, 0x6d, 0x65, 0x74, 0x61,
+ 0x20, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
+ 0x3a, 0x2f, 0x2f, 0x22, 0x3e, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x20,
+ 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77,
+ 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74,
+ 0x69, 0x63, 0x61, 0x6c, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x2f, 0x61,
+ 0x3e, 0x20, 0x7c, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
+ 0x3c, 0x21, 0x64, 0x6f, 0x63, 0x74, 0x79, 0x70, 0x65, 0x20, 0x68, 0x74, 0x6d,
+ 0x6c, 0x3e, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x3d, 0x22, 0x73, 0x63, 0x72, 0x65,
+ 0x65, 0x6e, 0x22, 0x20, 0x3c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e,
+ 0x2e, 0x69, 0x63, 0x6f, 0x22, 0x20, 0x2f, 0x3e, 0x0a, 0x09, 0x09, 0x3c, 0x64,
+ 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x68, 0x61,
+ 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x22,
+ 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22,
+ 0x20, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d,
+ 0x6c, 0x3e, 0x0a, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x63, 0x75, 0x74, 0x20, 0x69,
+ 0x63, 0x6f, 0x6e, 0x22, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
+ 0x2e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x28, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e,
+ 0x67, 0x2d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x72, 0x65, 0x70, 0x72,
+ 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x73, 0x75,
+ 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22,
+ 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
+ 0x22, 0x20, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x6f, 0x75, 0x74, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x66,
+ 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, 0x69,
+ 0x74, 0x22, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6f, 0x6e, 0x65,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x20,
+ 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70, 0x22, 0x3e,
+ 0x3c, 0x77, 0x61, 0x73, 0x20, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73,
+ 0x68, 0x65, 0x64, 0x29, 0x3b, 0x0d, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x3e, 0x0d, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66,
+ 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x22, 0x3e, 0x29, 0x2e, 0x73, 0x74, 0x79, 0x6c,
+ 0x65, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x62, 0x65, 0x63, 0x61,
+ 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x6f,
+ 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65,
+ 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d,
+ 0x22, 0x2f, 0x7d, 0x62, 0x6f, 0x64, 0x79, 0x7b, 0x6d, 0x61, 0x72, 0x67, 0x69,
+ 0x6e, 0x3a, 0x30, 0x3b, 0x45, 0x6e, 0x63, 0x79, 0x63, 0x6c, 0x6f, 0x70, 0x65,
+ 0x64, 0x69, 0x61, 0x20, 0x6f, 0x66, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x2e, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x28, 0x6e, 0x61, 0x6d,
+ 0x65, 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x3c,
+ 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a,
+ 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69,
+ 0x76, 0x65, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0a, 0x3c, 0x2f,
+ 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x20,
+ 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x22, 0x3e, 0x3c, 0x69, 0x6e, 0x70,
+ 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x70, 0x6f, 0x72, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73,
+ 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x72, 0x69, 0x65, 0x73, 0x22, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e,
+ 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c, 0x49, 0x6e, 0x20, 0x6f, 0x74,
+ 0x68, 0x65, 0x72, 0x20, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x2c, 0x64, 0x69, 0x73,
+ 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3b, 0x63,
+ 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x6f, 0x66, 0x2f, 0x3e, 0x0a, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20, 0x6e,
+ 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6c, 0x6c, 0x20,
+ 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x63,
+ 0x65, 0x6e, 0x74, 0x20, 0x79, 0x65, 0x61, 0x72, 0x73, 0x0d, 0x0a, 0x09, 0x3c,
+ 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x3c, 0x2f,
+ 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x09, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a,
+ 0x69, 0x6e, 0x73, 0x70, 0x69, 0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74,
+ 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c,
+ 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x20,
+ 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x73, 0x74, 0x79, 0x6c,
+ 0x65, 0x3d, 0x22, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x2e, 0x6a, 0x73,
+ 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x3c, 0x20,
+ 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+ 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x62,
+ 0x65, 0x65, 0x6e, 0x47, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x20, 0x6c, 0x61, 0x6e,
+ 0x67, 0x75, 0x61, 0x67, 0x65, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22,
+ 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e,
+ 0x69, 0x73, 0x74, 0x20, 0x50, 0x61, 0x72, 0x74, 0x79, 0x63, 0x6f, 0x6e, 0x73,
+ 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x62, 0x6f,
+ 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, 0x20, 0x63, 0x65, 0x6c, 0x6c,
+ 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x3d, 0x22, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x69, 0x74,
+ 0x79, 0x20, 0x6f, 0x66, 0x22, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22,
+ 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64,
+ 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20,
+ 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x4f, 0x72, 0x74,
+ 0x68, 0x6f, 0x64, 0x6f, 0x78, 0x20, 0x43, 0x68, 0x75, 0x72, 0x63, 0x68, 0x73,
+ 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x2f, 0x3e, 0x0a, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c,
+ 0x3d, 0x22, 0x73, 0x77, 0x61, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x66,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x20, 0x68, 0x69,
+ 0x73, 0x20, 0x64, 0x65, 0x61, 0x74, 0x68, 0x7d, 0x29, 0x28, 0x29, 0x3b, 0x0a,
+ 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x6f, 0x74, 0x68, 0x65,
+ 0x72, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x63, 0x6f,
+ 0x6d, 0x70, 0x61, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65,
+ 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74,
+ 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c,
+ 0x61, 0x6e, 0x64, 0x73, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x20,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f,
+ 0x75, 0x6e, 0x64, 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x61, 0x72, 0x67, 0x75, 0x65,
+ 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x73, 0x63, 0x72,
+ 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3d, 0x22, 0x6e, 0x6f, 0x22, 0x20, 0x69,
+ 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68,
+ 0x65, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
+ 0x61, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x74, 0x68, 0x65, 0x20, 0x74, 0x72,
+ 0x61, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x64, 0x65, 0x76, 0x65,
+ 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x72,
+ 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x20, 0x75, 0x73, 0x65, 0x64,
+ 0x61, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x6f, 0x66, 0x76, 0x65, 0x72, 0x79, 0x20, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61,
+ 0x72, 0x20, 0x74, 0x6f, 0x73, 0x75, 0x72, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x61, 0x6c, 0x69, 0x67, 0x6e,
+ 0x3d, 0x22, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x22, 0x3e, 0x77, 0x6f, 0x75,
+ 0x6c, 0x64, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x69,
+ 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x3d, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20,
+ 0x74, 0x68, 0x65, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66,
+ 0x6f, 0x72, 0x6d, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76,
+ 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x69, 0x73, 0x20, 0x64,
+ 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x6e, 0x61,
+ 0x6d, 0x65, 0x64, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65,
+ 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x74, 0x6f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x77,
+ 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20,
+ 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63,
+ 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x6d, 0x6f, 0x73,
+ 0x74, 0x20, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69,
+ 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e,
+ 0x64, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20,
+ 0x74, 0x68, 0x65, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x65, 0x61,
+ 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x77, 0x61, 0x73, 0x20,
+ 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x20, 0x62, 0x79, 0x61, 0x6e,
+ 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x69, 0x6e, 0x73, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66,
+ 0x6f, 0x72, 0x72, 0x65, 0x67, 0x61, 0x72, 0x64, 0x65, 0x64, 0x20, 0x61, 0x73,
+ 0x20, 0x74, 0x68, 0x65, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x73, 0x75, 0x63, 0x63,
+ 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61,
+ 0x73, 0x20, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x61, 0x20, 0x63, 0x6f, 0x6d,
+ 0x70, 0x72, 0x65, 0x68, 0x65, 0x6e, 0x73, 0x69, 0x76, 0x65, 0x48, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77,
+ 0x65, 0x72, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72, 0x65,
+ 0x64, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20,
+ 0x74, 0x68, 0x65, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72,
+ 0x65, 0x64, 0x20, 0x74, 0x6f, 0x55, 0x6e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x64, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3e, 0x0a, 0x09, 0x3c, 0x64, 0x69,
+ 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x73,
+ 0x69, 0x73, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x74,
+ 0x6f, 0x70, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x74,
+ 0x68, 0x65, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
+ 0x79, 0x20, 0x6f, 0x66, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x73, 0x20, 0x74,
+ 0x6f, 0x20, 0x68, 0x61, 0x76, 0x65, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f,
+ 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x69, 0x63, 0x65, 0x6e, 0x61, 0x62, 0x6c,
+ 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x28, 0x66, 0x75, 0x6e,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x49,
+ 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e,
+ 0x74, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x3c, 0x2f, 0x64,
+ 0x69, 0x76, 0x3e, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29,
+ 0x7b, 0x76, 0x61, 0x72, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65,
+ 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x61, 0x73, 0x20, 0x61, 0x20, 0x72,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x46, 0x6f,
+ 0x72, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x69, 0x6e,
+ 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x70, 0x6f, 0x73, 0x74,
+ 0x22, 0x20, 0x77, 0x61, 0x73, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65,
+ 0x64, 0x20, 0x62, 0x79, 0x26, 0x61, 0x6d, 0x70, 0x3b, 0x6d, 0x64, 0x61, 0x73,
+ 0x68, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x61, 0x70, 0x70,
+ 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6a, 0x73, 0x22, 0x3e, 0x3c,
+ 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0d, 0x0a, 0x75, 0x6c, 0x3e,
+ 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x61,
+ 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x61, 0x74,
+ 0x68, 0x77, 0x69, 0x74, 0x68, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74,
+ 0x20, 0x74, 0x6f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x70, 0x61, 0x64,
+ 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x69, 0x73, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69,
+ 0x63, 0x75, 0x6c, 0x61, 0x72, 0x6c, 0x79, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
+ 0x79, 0x3a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x3b, 0x20, 0x74, 0x79, 0x70,
+ 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x69, 0x73,
+ 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x74, 0x6f,
+ 0xe4, 0xb8, 0xad, 0xe6, 0x96, 0x87, 0x20, 0x28, 0xe7, 0xae, 0x80, 0xe4, 0xbd,
+ 0x93, 0x29, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x61, 0x62, 0x69, 0x6c,
+ 0x69, 0x64, 0x61, 0x64, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72,
+ 0x61, 0x63, 0x69, 0xc3, 0xb3, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61,
+ 0x63, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x6f, 0x72, 0x72, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x65, 0xe0, 0xa4, 0x89,
+ 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xaf, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x97, 0xe0,
+ 0xa4, 0xaa, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4,
+ 0xb5, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0,
+ 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x97, 0xe0,
+ 0xa5, 0x8b, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x9a, 0xe0, 0xa5, 0x81, 0xe0, 0xa4,
+ 0xa8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x87,
+ 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xb8, 0xe0,
+ 0xa4, 0xb0, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4,
+ 0xaa, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xb8,
+ 0xe0, 0xa4, 0x96, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x9c, 0xe0, 0xa5, 0x87, 0xe0,
+ 0xa4, 0x82, 0xe0, 0xa4, 0x9a, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4,
+ 0xbf, 0xe0, 0xa4, 0x8f, 0xe0, 0xa4, 0xad, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x9c,
+ 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb6, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xae, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4,
+ 0xae, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x9c,
+ 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa3, 0xe0,
+ 0xa4, 0xac, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5,
+ 0x87, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xac, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb2, 0xe0,
+ 0xa5, 0x89, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0xb2, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xb9,
+ 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaa, 0xe0,
+ 0xa5, 0x83, 0xe0, 0xa4, 0xb7, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa0, 0xe0, 0xa4,
+ 0xac, 0xe0, 0xa4, 0xa2, 0xe0, 0xa4, 0xbc, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x87,
+ 0xe0, 0xa4, 0xad, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xaa, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4,
+ 0xbf, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0x9f, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0,
+ 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0x96, 0xe0, 0xa4, 0xbf, 0xe0,
+ 0xa4, 0xb2, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xab, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5,
+ 0x8c, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xae,
+ 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x87, 0xe0,
+ 0xa4, 0xae, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0xa8, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x95, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4,
+ 0xaf, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x9a, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xaa, 0xe0,
+ 0xa4, 0xb9, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0x81, 0xe0, 0xa4, 0x9a, 0xe0, 0xa4,
+ 0xac, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xa6, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x96, 0xe0, 0xa4,
+ 0xa8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x9b,
+ 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbf, 0xe0,
+ 0xa4, 0xb6, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb7, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0x9c, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0x89,
+ 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa4, 0xae, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xac, 0xe0, 0xa4,
+ 0x88, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x8b,
+ 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x89, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0x95, 0xe0,
+ 0xa4, 0xb0, 0xe0, 0xa4, 0xa3, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xa2, 0xe0, 0xa4,
+ 0xbc, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xa5, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xab, 0xe0,
+ 0xa4, 0xbf, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xae, 0xe0, 0xa4,
+ 0xae, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0x96, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xaf,
+ 0xe0, 0xa4, 0x85, 0xe0, 0xa4, 0x9a, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0x9b, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0x9b, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0x9f, 0xe0, 0xa4,
+ 0xa4, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x97,
+ 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0x8f, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4,
+ 0xbf, 0xe0, 0xa4, 0xad, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0x98,
+ 0xe0, 0xa4, 0xa3, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0x9f, 0xe0, 0xa5, 0x87, 0xe0,
+ 0xa4, 0xa6, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5,
+ 0x87, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x8b,
+ 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x8d, 0xe0,
+ 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4,
+ 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xa7, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xb5, 0xe0,
+ 0xa4, 0xbf, 0xe0, 0xa4, 0xb6, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4,
+ 0xb0, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x82,
+ 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x88, 0xe0, 0xa4, 0x9f, 0xe0, 0xa5, 0x8d, 0xe0,
+ 0xa4, 0xb8, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4,
+ 0xb6, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xae,
+ 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x85, 0xe0, 0xa4, 0xa6, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xac, 0xe0, 0xa4,
+ 0xbf, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xaa,
+ 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0xb7, 0xe0,
+ 0xa4, 0xb9, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5,
+ 0x80, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbf, 0xe0,
+ 0xa4, 0xa4, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x81, 0xe0, 0xa4,
+ 0xaa, 0xe0, 0xa4, 0xaf, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xa5, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0x95, 0xe0,
+ 0xa4, 0xb0, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0xa1, 0xe0, 0xa4, 0xbc, 0xe0, 0xa4,
+ 0xae, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa4,
+ 0xe0, 0xa4, 0xaf, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xa8, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x83, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4,
+ 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaa, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0xb8,
+ 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0x9f, 0xe0, 0xa4, 0x98, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0x95, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xb5,
+ 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x9a, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa4, 0xb8, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0x9a, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x96, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xae, 0xe0, 0xa5,
+ 0x87, 0xe0, 0xa4, 0xb6, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x82, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xae, 0xe0,
+ 0xa5, 0x88, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x87, 0xe0, 0xa4,
+ 0xa4, 0xe0, 0xa5, 0x88, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0,
+ 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x95, 0xe0,
+ 0xa5, 0x87, 0x72, 0x73, 0x73, 0x2b, 0x78, 0x6d, 0x6c, 0x22, 0x20, 0x74, 0x69,
+ 0x74, 0x6c, 0x65, 0x3d, 0x22, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x22, 0x20, 0x63,
+ 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x74, 0x69, 0x74, 0x6c, 0x65,
+ 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x61, 0x74,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x69, 0x6d,
+ 0x65, 0x2e, 0x6a, 0x73, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x3e, 0x0a, 0x3c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d,
+ 0x22, 0x70, 0x6f, 0x73, 0x74, 0x22, 0x20, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e,
+ 0x3e, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0x76, 0x65, 0x72,
+ 0x74, 0x69, 0x63, 0x61, 0x6c, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x74,
+ 0x2f, 0x6a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x6d, 0x69, 0x6e, 0x2e, 0x6a,
+ 0x73, 0x22, 0x3e, 0x2e, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x28, 0x66, 0x75, 0x6e,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d,
+ 0x22, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x7d, 0x29, 0x28, 0x29,
+ 0x3b, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x3c,
+ 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x29, 0x3b, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
+ 0x6e, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x74, 0x65, 0x78, 0x74, 0x2d,
+ 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x73,
+ 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3d, 0x22, 0x6e, 0x6f, 0x22,
+ 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x63, 0x6f, 0x6c, 0x6c, 0x61,
+ 0x70, 0x73, 0x65, 0x3a, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65,
+ 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x42, 0x61, 0x68, 0x61, 0x73, 0x61,
+ 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x45, 0x6e, 0x67,
+ 0x6c, 0x69, 0x73, 0x68, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65,
+ 0x3c, 0x74, 0x65, 0x78, 0x74, 0x20, 0x78, 0x6d, 0x6c, 0x3a, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x3d, 0x2e, 0x67, 0x69, 0x66, 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64,
+ 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
+ 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0a, 0x6f, 0x76, 0x65, 0x72,
+ 0x66, 0x6c, 0x6f, 0x77, 0x3a, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x3b, 0x69,
+ 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a,
+ 0x2f, 0x2f, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73,
+ 0x74, 0x65, 0x6e, 0x65, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69,
+ 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x2e, 0x6a, 0x73, 0x22,
+ 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x2f, 0x66,
+ 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x2e, 0x69, 0x63, 0x6f, 0x22, 0x20, 0x2f,
+ 0x3e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x79,
+ 0x73, 0x74, 0x65, 0x6d, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22,
+ 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x22, 0x3e, 0x53, 0x74, 0x61,
+ 0x74, 0x65, 0x20, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79,
+ 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x6c, 0x65,
+ 0x66, 0x74, 0x3b, 0x0a, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
+ 0x77, 0x72, 0x69, 0x74, 0x65, 0x28, 0x2c, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75,
+ 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x6f, 0x75,
+ 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x29,
+ 0x3b, 0x0d, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0d,
+ 0x0a, 0x3c, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x68, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x3a, 0x3b, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f,
+ 0x77, 0x3a, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x6d, 0x6f, 0x72, 0x65, 0x20,
+ 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6e,
+ 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+ 0x6c, 0x61, 0x20, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65,
+ 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x3c, 0x2f, 0x64,
+ 0x69, 0x76, 0x3e, 0x0a, 0x09, 0x09, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a,
+ 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x20, 0x6e, 0x6f, 0x6e, 0x65,
+ 0x3b, 0x22, 0x3e, 0x22, 0x20, 0x2f, 0x3e, 0x0a, 0x3c, 0x6c, 0x69, 0x6e, 0x6b,
+ 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x0a, 0x20, 0x20, 0x28, 0x66, 0x75, 0x6e,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x74, 0x68, 0x65, 0x20,
+ 0x31, 0x35, 0x74, 0x68, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x75, 0x72, 0x79, 0x2e,
+ 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c,
+ 0x74, 0x28, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65,
+ 0x72, 0x20, 0x6f, 0x66, 0x20, 0x42, 0x79, 0x7a, 0x61, 0x6e, 0x74, 0x69, 0x6e,
+ 0x65, 0x20, 0x45, 0x6d, 0x70, 0x69, 0x72, 0x65, 0x2e, 0x6a, 0x70, 0x67, 0x7c,
+ 0x74, 0x68, 0x75, 0x6d, 0x62, 0x7c, 0x6c, 0x65, 0x66, 0x74, 0x7c, 0x76, 0x61,
+ 0x73, 0x74, 0x20, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6f,
+ 0x66, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x63,
+ 0x65, 0x6e, 0x74, 0x65, 0x72, 0x22, 0x3e, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x74, 0x79, 0x20, 0x50, 0x72, 0x65, 0x73, 0x73, 0x64, 0x6f, 0x6d,
+ 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65,
+ 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x20,
+ 0x57, 0x61, 0x72, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22,
+ 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x74, 0x68, 0x65, 0x20,
+ 0x72, 0x65, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63,
+ 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20,
+ 0x62, 0x79, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x6e, 0x6f, 0x66, 0x6f, 0x6c,
+ 0x6c, 0x6f, 0x77, 0x22, 0x3e, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x73, 0x20,
+ 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x72, 0x61, 0x74, 0x68, 0x65,
+ 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x20,
+ 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f,
+ 0x66, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68,
+ 0x3a, 0x31, 0x30, 0x30, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x2d, 0x73,
+ 0x70, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74,
+ 0x65, 0x72, 0x20, 0x73, 0x63, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x62, 0x6f, 0x72,
+ 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, 0x20, 0x61, 0x6c, 0x74, 0x3d, 0x22,
+ 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x65,
+ 0x20, 0x6f, 0x66, 0x44, 0x65, 0x6d, 0x6f, 0x63, 0x72, 0x61, 0x74, 0x69, 0x63,
+ 0x20, 0x50, 0x61, 0x72, 0x74, 0x79, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65,
+ 0x3d, 0x22, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x46, 0x6f, 0x72, 0x20,
+ 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2c, 0x2e,
+ 0x6a, 0x73, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e,
+ 0x0a, 0x09, 0x73, 0x42, 0x79, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x28,
+ 0x73, 0x29, 0x5b, 0x30, 0x5d, 0x6a, 0x73, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0d, 0x0a, 0x3c, 0x2e, 0x6a, 0x73, 0x22, 0x3e,
+ 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0d, 0x0a, 0x6c, 0x69,
+ 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x69, 0x63, 0x6f, 0x6e, 0x22,
+ 0x20, 0x27, 0x20, 0x61, 0x6c, 0x74, 0x3d, 0x27, 0x27, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x27, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
+ 0x2f, 0x70, 0x61, 0x67, 0x65, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x70, 0x61, 0x67,
+ 0x65, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x62, 0x61, 0x68, 0x61,
+ 0x73, 0x61, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x65,
+ 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x20, 0x28, 0x73, 0x69, 0x6d, 0x70, 0x6c,
+ 0x65, 0x29, 0xce, 0x95, 0xce, 0xbb, 0xce, 0xbb, 0xce, 0xb7, 0xce, 0xbd, 0xce,
+ 0xb9, 0xce, 0xba, 0xce, 0xac, 0xd1, 0x85, 0xd1, 0x80, 0xd0, 0xb2, 0xd0, 0xb0,
+ 0xd1, 0x82, 0xd1, 0x81, 0xd0, 0xba, 0xd0, 0xb8, 0xd0, 0xba, 0xd0, 0xbe, 0xd0,
+ 0xbc, 0xd0, 0xbf, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xb8, 0xd0, 0xb8, 0xd1, 0x8f,
+ 0xd0, 0xb2, 0xd0, 0xbb, 0xd1, 0x8f, 0xd0, 0xb5, 0xd1, 0x82, 0xd1, 0x81, 0xd1,
+ 0x8f, 0xd0, 0x94, 0xd0, 0xbe, 0xd0, 0xb1, 0xd0, 0xb0, 0xd0, 0xb2, 0xd0, 0xb8,
+ 0xd1, 0x82, 0xd1, 0x8c, 0xd1, 0x87, 0xd0, 0xb5, 0xd0, 0xbb, 0xd0, 0xbe, 0xd0,
+ 0xb2, 0xd0, 0xb5, 0xd0, 0xba, 0xd0, 0xb0, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xb7,
+ 0xd0, 0xb2, 0xd0, 0xb8, 0xd1, 0x82, 0xd0, 0xb8, 0xd1, 0x8f, 0xd0, 0x98, 0xd0,
+ 0xbd, 0xd1, 0x82, 0xd0, 0xb5, 0xd1, 0x80, 0xd0, 0xbd, 0xd0, 0xb5, 0xd1, 0x82,
+ 0xd0, 0x9e, 0xd1, 0x82, 0xd0, 0xb2, 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xb8, 0xd1,
+ 0x82, 0xd1, 0x8c, 0xd0, 0xbd, 0xd0, 0xb0, 0xd0, 0xbf, 0xd1, 0x80, 0xd0, 0xb8,
+ 0xd0, 0xbc, 0xd0, 0xb5, 0xd1, 0x80, 0xd0, 0xb8, 0xd0, 0xbd, 0xd1, 0x82, 0xd0,
+ 0xb5, 0xd1, 0x80, 0xd0, 0xbd, 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xba, 0xd0, 0xbe,
+ 0xd1, 0x82, 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xbe, 0xd0, 0xb3, 0xd0, 0xbe, 0xd1,
+ 0x81, 0xd1, 0x82, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xb8, 0xd1, 0x86,
+ 0xd1, 0x8b, 0xd0, 0xba, 0xd0, 0xb0, 0xd1, 0x87, 0xd0, 0xb5, 0xd1, 0x81, 0xd1,
+ 0x82, 0xd0, 0xb2, 0xd0, 0xb5, 0xd1, 0x83, 0xd1, 0x81, 0xd0, 0xbb, 0xd0, 0xbe,
+ 0xd0, 0xb2, 0xd0, 0xb8, 0xd1, 0x8f, 0xd1, 0x85, 0xd0, 0xbf, 0xd1, 0x80, 0xd0,
+ 0xbe, 0xd0, 0xb1, 0xd0, 0xbb, 0xd0, 0xb5, 0xd0, 0xbc, 0xd1, 0x8b, 0xd0, 0xbf,
+ 0xd0, 0xbe, 0xd0, 0xbb, 0xd1, 0x83, 0xd1, 0x87, 0xd0, 0xb8, 0xd1, 0x82, 0xd1,
+ 0x8c, 0xd1, 0x8f, 0xd0, 0xb2, 0xd0, 0xbb, 0xd1, 0x8f, 0xd1, 0x8e, 0xd1, 0x82,
+ 0xd1, 0x81, 0xd1, 0x8f, 0xd0, 0xbd, 0xd0, 0xb0, 0xd0, 0xb8, 0xd0, 0xb1, 0xd0,
+ 0xbe, 0xd0, 0xbb, 0xd0, 0xb5, 0xd0, 0xb5, 0xd0, 0xba, 0xd0, 0xbe, 0xd0, 0xbc,
+ 0xd0, 0xbf, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xb8, 0xd1, 0x8f, 0xd0, 0xb2, 0xd0,
+ 0xbd, 0xd0, 0xb8, 0xd0, 0xbc, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xb8, 0xd0, 0xb5,
+ 0xd1, 0x81, 0xd1, 0x80, 0xd0, 0xb5, 0xd0, 0xb4, 0xd1, 0x81, 0xd1, 0x82, 0xd0,
+ 0xb2, 0xd0, 0xb0, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd9, 0x88, 0xd8, 0xa7,
+ 0xd8, 0xb6, 0xd9, 0x8a, 0xd8, 0xb9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb1, 0xd8,
+ 0xa6, 0xd9, 0x8a, 0xd8, 0xb3, 0xd9, 0x8a, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84,
+ 0xd8, 0xa7, 0xd9, 0x86, 0xd8, 0xaa, 0xd9, 0x82, 0xd8, 0xa7, 0xd9, 0x84, 0xd9,
+ 0x85, 0xd8, 0xb4, 0xd8, 0xa7, 0xd8, 0xb1, 0xd9, 0x83, 0xd8, 0xa7, 0xd8, 0xaa,
+ 0xd9, 0x83, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb3, 0xd9, 0x8a, 0xd8, 0xa7, 0xd8,
+ 0xb1, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd9, 0x83,
+ 0xd8, 0xaa, 0xd9, 0x88, 0xd8, 0xa8, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8,
+ 0xb3, 0xd8, 0xb9, 0xd9, 0x88, 0xd8, 0xaf, 0xd9, 0x8a, 0xd8, 0xa9, 0xd8, 0xa7,
+ 0xd8, 0xad, 0xd8, 0xb5, 0xd8, 0xa7, 0xd8, 0xa6, 0xd9, 0x8a, 0xd8, 0xa7, 0xd8,
+ 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb9, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85,
+ 0xd9, 0x8a, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb5, 0xd9, 0x88, 0xd8,
+ 0xaa, 0xd9, 0x8a, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa7,
+ 0xd9, 0x86, 0xd8, 0xaa, 0xd8, 0xb1, 0xd9, 0x86, 0xd8, 0xaa, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd8, 0xaa, 0xd8, 0xb5, 0xd8, 0xa7, 0xd9, 0x85, 0xd9, 0x8a, 0xd9, 0x85,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa5, 0xd8, 0xb3, 0xd9, 0x84, 0xd8, 0xa7, 0xd9,
+ 0x85, 0xd9, 0x8a, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xb4, 0xd8, 0xa7,
+ 0xd8, 0xb1, 0xd9, 0x83, 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd8,
+ 0xb1, 0xd8, 0xa6, 0xd9, 0x8a, 0xd8, 0xa7, 0xd8, 0xaa, 0x72, 0x6f, 0x62, 0x6f,
+ 0x74, 0x73, 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22,
+ 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x66, 0x6f, 0x6f, 0x74,
+ 0x65, 0x72, 0x22, 0x3e, 0x74, 0x68, 0x65, 0x20, 0x55, 0x6e, 0x69, 0x74, 0x65,
+ 0x64, 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x3c, 0x69, 0x6d, 0x67, 0x20,
+ 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x2e,
+ 0x6a, 0x70, 0x67, 0x7c, 0x72, 0x69, 0x67, 0x68, 0x74, 0x7c, 0x74, 0x68, 0x75,
+ 0x6d, 0x62, 0x7c, 0x2e, 0x6a, 0x73, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x3e, 0x0d, 0x0a, 0x3c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x66, 0x72,
+ 0x61, 0x6d, 0x65, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22,
+ 0x20, 0x73, 0x22, 0x20, 0x2f, 0x3e, 0x0a, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20,
+ 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64,
+ 0x69, 0x76, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x66, 0x6f, 0x6e,
+ 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x62, 0x6f, 0x6c, 0x64,
+ 0x3b, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x26,
+ 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x67,
+ 0x69, 0x6e, 0x3a, 0x30, 0x3b, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a,
+ 0x22, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x6e, 0x6f, 0x66, 0x6f, 0x6c, 0x6c,
+ 0x6f, 0x77, 0x22, 0x20, 0x50, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x77, 0x65, 0x6e, 0x74,
+ 0x69, 0x65, 0x74, 0x68, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x75, 0x72, 0x79, 0x65,
+ 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x70,
+ 0x61, 0x67, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x45,
+ 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x61, 0x2e, 0x61, 0x73, 0x79, 0x6e,
+ 0x63, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x3b, 0x0d, 0x0a, 0x69, 0x6e,
+ 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f,
+ 0x75, 0x74, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x68, 0x65,
+ 0x61, 0x64, 0x65, 0x72, 0x22, 0x3e, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x3c, 0x61, 0x20,
+ 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
+ 0x2f, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x63, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x22, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0d, 0x0a,
+ 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0d, 0x0a, 0x3c, 0x64, 0x65, 0x72, 0x69,
+ 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x27, 0x68, 0x74, 0x74,
+ 0x70, 0x3a, 0x2f, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67,
+ 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x0a, 0x3c, 0x2f, 0x62, 0x6f,
+ 0x64, 0x79, 0x3e, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0a, 0x73,
+ 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69,
+ 0x7a, 0x65, 0x3a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x6c, 0x61, 0x6e,
+ 0x67, 0x75, 0x61, 0x67, 0x65, 0x3d, 0x22, 0x41, 0x72, 0x69, 0x61, 0x6c, 0x2c,
+ 0x20, 0x48, 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, 0x2c, 0x3c, 0x2f,
+ 0x61, 0x3e, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x3c, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x74, 0x69, 0x63,
+ 0x61, 0x6c, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x74, 0x64, 0x3e,
+ 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e,
+ 0x3c, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
+ 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x72, 0x65, 0x6c, 0x3d,
+ 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x22, 0x20,
+ 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x77, 0x72, 0x69, 0x74,
+ 0x65, 0x28, 0x27, 0x3c, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x22,
+ 0x75, 0x74, 0x66, 0x2d, 0x38, 0x22, 0x3e, 0x0a, 0x62, 0x65, 0x67, 0x69, 0x6e,
+ 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72,
+ 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20,
+ 0x74, 0x68, 0x65, 0x74, 0x65, 0x6c, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
+ 0x20, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x22, 0x20, 0x72, 0x65, 0x6c, 0x3d,
+ 0x22, 0x6e, 0x6f, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x22, 0x3e, 0x20, 0x74,
+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61, 0x6e, 0x6b,
+ 0x22, 0x3e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68,
+ 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x68, 0x74, 0x74, 0x70, 0x25, 0x33, 0x41,
+ 0x25, 0x32, 0x46, 0x25, 0x32, 0x46, 0x77, 0x77, 0x77, 0x2e, 0x6d, 0x61, 0x6e,
+ 0x69, 0x66, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f,
+ 0x66, 0x50, 0x72, 0x69, 0x6d, 0x65, 0x20, 0x4d, 0x69, 0x6e, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x20, 0x6f, 0x66, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63,
+ 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x66, 0x69, 0x78, 0x22, 0x3e,
+ 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
+ 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x68, 0x72, 0x65, 0x65, 0x2d, 0x64, 0x69, 0x6d,
+ 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x68, 0x75, 0x72, 0x63,
+ 0x68, 0x20, 0x6f, 0x66, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x61, 0x6e, 0x64, 0x6f,
+ 0x66, 0x20, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x20, 0x43, 0x61, 0x72, 0x6f, 0x6c,
+ 0x69, 0x6e, 0x61, 0x73, 0x71, 0x75, 0x61, 0x72, 0x65, 0x20, 0x6b, 0x69, 0x6c,
+ 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x65, 0x73, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76,
+ 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x64, 0x69,
+ 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74,
+ 0x68, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x6b, 0x6e,
+ 0x6f, 0x77, 0x6e, 0x20, 0x61, 0x73, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x74, 0x69,
+ 0x63, 0x20, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x64, 0x65, 0x63,
+ 0x6c, 0x61, 0x72, 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68,
+ 0x65, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x62,
+ 0x79, 0x20, 0x74, 0x68, 0x65, 0x42, 0x65, 0x6e, 0x6a, 0x61, 0x6d, 0x69, 0x6e,
+ 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x6c, 0x69, 0x6e, 0x72, 0x6f, 0x6c, 0x65,
+ 0x2d, 0x70, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x67, 0x61, 0x6d, 0x65,
+ 0x74, 0x68, 0x65, 0x20, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74,
+ 0x79, 0x20, 0x6f, 0x66, 0x69, 0x6e, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72,
+ 0x6e, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x70, 0x65, 0x72, 0x73, 0x6f,
+ 0x6e, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x50,
+ 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x47, 0x75, 0x74, 0x65, 0x6e, 0x62,
+ 0x65, 0x72, 0x67, 0x72, 0x65, 0x67, 0x61, 0x72, 0x64, 0x6c, 0x65, 0x73, 0x73,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x68, 0x61, 0x73, 0x20, 0x62, 0x65,
+ 0x65, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x74, 0x6f,
+ 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74,
+ 0x68, 0x65, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0x3c, 0x6c, 0x69, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x6e, 0x20, 0x73, 0x6f, 0x6d, 0x65,
+ 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x6d, 0x69, 0x6e,
+ 0x2e, 0x6a, 0x73, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x3e, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c,
+ 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3c, 0x69, 0x6d, 0x67,
+ 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f,
+ 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x79,
+ 0x20, 0x74, 0x68, 0x65, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x20, 0x72,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x63,
+ 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65,
+ 0x72, 0x65, 0x64, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x20, 0x6d, 0x65,
+ 0x63, 0x68, 0x61, 0x6e, 0x69, 0x63, 0x73, 0x4e, 0x65, 0x76, 0x65, 0x72, 0x74,
+ 0x68, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x69,
+ 0x6c, 0x6c, 0x69, 0x6f, 0x6e, 0x20, 0x79, 0x65, 0x61, 0x72, 0x73, 0x20, 0x61,
+ 0x67, 0x6f, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f,
+ 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, 0xce, 0x95, 0xce, 0xbb, 0xce, 0xbb, 0xce,
+ 0xb7, 0xce, 0xbd, 0xce, 0xb9, 0xce, 0xba, 0xce, 0xac, 0x0a, 0x74, 0x61, 0x6b,
+ 0x65, 0x20, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x20, 0x6f,
+ 0x66, 0x61, 0x6e, 0x64, 0x2c, 0x20, 0x61, 0x63, 0x63, 0x6f, 0x72, 0x64, 0x69,
+ 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
+ 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x4d, 0x69, 0x63, 0x72,
+ 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73,
+ 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x63, 0x65, 0x6e,
+ 0x74, 0x75, 0x72, 0x79, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x64, 0x69, 0x76, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
+ 0x68, 0x6f, 0x72, 0x74, 0x6c, 0x79, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20,
+ 0x74, 0x68, 0x65, 0x6e, 0x6f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x78,
+ 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x6f, 0x75, 0x73, 0x61, 0x6e, 0x64, 0x73, 0x73, 0x65,
+ 0x76, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x74, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x2e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e,
+ 0x67, 0x20, 0x6d, 0x69, 0x6c, 0x69, 0x74, 0x61, 0x72, 0x79, 0x69, 0x73, 0x6f,
+ 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68,
+ 0x65, 0x6f, 0x70, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74,
+ 0x6f, 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x4f, 0x6c, 0x64, 0x20,
+ 0x54, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x66, 0x72, 0x69,
+ 0x63, 0x61, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x73,
+ 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x74, 0x6f,
+ 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x20,
+ 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x6f,
+ 0x70, 0x6f, 0x6c, 0x69, 0x74, 0x61, 0x6e, 0x20, 0x61, 0x72, 0x65, 0x61, 0x6d,
+ 0x61, 0x6b, 0x65, 0x73, 0x20, 0x69, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x73, 0x69,
+ 0x62, 0x6c, 0x65, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67,
+ 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x61, 0x72, 0x67, 0x75, 0x61, 0x62,
+ 0x6c, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x74, 0x79,
+ 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22,
+ 0x3e, 0x0a, 0x74, 0x68, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x72, 0x64, 0x69,
+ 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x65, 0x3d,
+ 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x2f, 0x3e,
+ 0x0a, 0x63, 0x6f, 0x69, 0x6e, 0x63, 0x69, 0x64, 0x65, 0x20, 0x77, 0x69, 0x74,
+ 0x68, 0x20, 0x74, 0x68, 0x65, 0x74, 0x77, 0x6f, 0x2d, 0x74, 0x68, 0x69, 0x72,
+ 0x64, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x44, 0x75, 0x72, 0x69,
+ 0x6e, 0x67, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2c,
+ 0x64, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x65,
+ 0x72, 0x69, 0x6f, 0x64, 0x61, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x64,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x69,
+ 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61,
+ 0x6e, 0x64, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x72, 0x65, 0x63, 0x65, 0x6e,
+ 0x74, 0x6c, 0x79, 0x62, 0x65, 0x6c, 0x69, 0x65, 0x76, 0x65, 0x64, 0x20, 0x74,
+ 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6f, 0x6e, 0x73, 0x63, 0x69,
+ 0x6f, 0x75, 0x73, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x66, 0x6f,
+ 0x72, 0x6d, 0x65, 0x72, 0x6c, 0x79, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20,
+ 0x61, 0x73, 0x73, 0x75, 0x72, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x20,
+ 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61,
+ 0x70, 0x70, 0x65, 0x61, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x6f, 0x63, 0x63,
+ 0x61, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x75, 0x73, 0x65,
+ 0x64, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x61, 0x62, 0x73,
+ 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x3b, 0x22, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x22, 0x20, 0x70, 0x6f,
+ 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69,
+ 0x76, 0x65, 0x3b, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e,
+ 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x78, 0x2f, 0x6c,
+ 0x69, 0x62, 0x73, 0x2f, 0x6a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x31, 0x2e,
+ 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x61, 0x70,
+ 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x67,
+ 0x75, 0x61, 0x67, 0x65, 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
+ 0x3d, 0x22, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d,
+ 0x65, 0x71, 0x75, 0x69, 0x76, 0x3d, 0x22, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63,
+ 0x79, 0x20, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3c, 0x2f, 0x61, 0x3e, 0x65,
+ 0x28, 0x22, 0x25, 0x33, 0x43, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x73,
+ 0x72, 0x63, 0x3d, 0x27, 0x22, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d,
+ 0x22, 0x5f, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x22, 0x3e, 0x4f, 0x6e, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x68, 0x61, 0x6e, 0x64,
+ 0x2c, 0x2e, 0x6a, 0x70, 0x67, 0x7c, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x7c, 0x72,
+ 0x69, 0x67, 0x68, 0x74, 0x7c, 0x32, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c,
+ 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x3c, 0x64,
+ 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x66, 0x6c, 0x6f,
+ 0x61, 0x74, 0x3a, 0x6e, 0x69, 0x6e, 0x65, 0x74, 0x65, 0x65, 0x6e, 0x74, 0x68,
+ 0x20, 0x63, 0x65, 0x6e, 0x74, 0x75, 0x72, 0x79, 0x3c, 0x2f, 0x62, 0x6f, 0x64,
+ 0x79, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, 0x0a,
+ 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74,
+ 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x3b, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c,
+ 0x69, 0x67, 0x6e, 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x6f, 0x6e,
+ 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20, 0x62, 0x6f, 0x6c,
+ 0x64, 0x3b, 0x20, 0x41, 0x63, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20,
+ 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x22,
+ 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d,
+ 0x22, 0x30, 0x22, 0x20, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22,
+ 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x6c, 0x69, 0x6e, 0x6b,
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
+ 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e,
+ 0x64, 0x74, 0x64, 0x22, 0x3e, 0x0a, 0x64, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20,
+ 0x74, 0x68, 0x69, 0x73, 0x20, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x3c, 0x2f,
+ 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62,
+ 0x6c, 0x65, 0x3e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x6c, 0x79, 0x20, 0x72, 0x65,
+ 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x66, 0x6f, 0x72, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65,
+ 0x3b, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a,
+ 0x62, 0x6f, 0x6c, 0x64, 0x3b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79,
+ 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x22, 0x20, 0x3c, 0x73, 0x70,
+ 0x61, 0x6e, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x66, 0x6f, 0x6e,
+ 0x74, 0x2d, 0x6f, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x79, 0x73, 0x74, 0x61, 0x74,
+ 0x65, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x09, 0x3c, 0x64, 0x69, 0x76, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x64,
+ 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6d,
+ 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x20, 0x77, 0x69,
+ 0x64, 0x65, 0x20, 0x76, 0x61, 0x72, 0x69, 0x65, 0x74, 0x79, 0x20, 0x6f, 0x66,
+ 0x20, 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, 0x68, 0x74,
+ 0x6d, 0x6c, 0x3e, 0x0d, 0x0a, 0x3c, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x26,
+ 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x22, 0x3e,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
+ 0x3a, 0x2f, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x66, 0x6c, 0x6f,
+ 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f, 0x6e, 0x63, 0x65,
+ 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65,
+ 0x3d, 0x68, 0x74, 0x74, 0x70, 0x25, 0x33, 0x41, 0x25, 0x32, 0x46, 0x25, 0x32,
+ 0x46, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x6e, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c,
+ 0x61, 0x72, 0x20, 0x63, 0x75, 0x6c, 0x74, 0x75, 0x72, 0x65, 0x74, 0x79, 0x70,
+ 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20,
+ 0x2f, 0x3e, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x70, 0x6f, 0x73, 0x73, 0x69,
+ 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x48, 0x61, 0x72, 0x76, 0x61, 0x72,
+ 0x64, 0x20, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x74,
+ 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x22, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x2f, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20,
+ 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4f, 0x78, 0x66, 0x6f,
+ 0x72, 0x64, 0x20, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79,
+ 0x20, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x6b, 0x65, 0x79, 0x77, 0x6f,
+ 0x72, 0x64, 0x73, 0x22, 0x20, 0x63, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22,
+ 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x74, 0x68,
+ 0x65, 0x20, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x4b, 0x69, 0x6e, 0x67,
+ 0x64, 0x6f, 0x6d, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x67, 0x6f,
+ 0x76, 0x65, 0x72, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x3c, 0x64, 0x69, 0x76, 0x20,
+ 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e,
+ 0x20, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x3c, 0x64, 0x69,
+ 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x68, 0x65, 0x61, 0x64,
+ 0x65, 0x72, 0x2e, 0x6d, 0x69, 0x6e, 0x2e, 0x6a, 0x73, 0x22, 0x3e, 0x3c, 0x2f,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x64, 0x65, 0x73, 0x74, 0x72, 0x75,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x73,
+ 0x6c, 0x69, 0x67, 0x68, 0x74, 0x6c, 0x79, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x20, 0x61, 0x63, 0x63, 0x6f, 0x72, 0x64,
+ 0x61, 0x6e, 0x63, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x74, 0x65, 0x6c, 0x65,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68,
+ 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x6c, 0x79,
+ 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x61, 0x66, 0x74, 0x65, 0x72, 0x65, 0x73,
+ 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x69, 0x6e, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x61, 0x6e, 0x20, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x48, 0x6f, 0x77, 0x65, 0x76,
+ 0x65, 0x72, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65,
+ 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73,
+ 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65,
+ 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x22, 0x20, 0x73,
+ 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
+ 0x77, 0x2e, 0x61, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x20, 0x6e, 0x75, 0x6d,
+ 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x54, 0x65, 0x6c, 0x65, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22,
+ 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x6e, 0x6f, 0x66, 0x6f, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x22, 0x20, 0x74, 0x48, 0x6f, 0x6c, 0x79, 0x20, 0x52, 0x6f, 0x6d, 0x61,
+ 0x6e, 0x20, 0x45, 0x6d, 0x70, 0x65, 0x72, 0x6f, 0x72, 0x61, 0x6c, 0x6d, 0x6f,
+ 0x73, 0x74, 0x20, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x6c,
+ 0x79, 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22,
+ 0x20, 0x61, 0x6c, 0x74, 0x3d, 0x22, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x61,
+ 0x72, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x63, 0x75,
+ 0x6c, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20,
+ 0x74, 0x68, 0x65, 0x43, 0x49, 0x41, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x20,
+ 0x46, 0x61, 0x63, 0x74, 0x62, 0x6f, 0x6f, 0x6b, 0x74, 0x68, 0x65, 0x20, 0x6d,
+ 0x6f, 0x73, 0x74, 0x20, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74,
+ 0x61, 0x6e, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x72, 0x79, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x62,
+ 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x3c, 0x6c, 0x69,
+ 0x3e, 0x3c, 0x65, 0x6d, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
+ 0x22, 0x2f, 0x74, 0x68, 0x65, 0x20, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69,
+ 0x63, 0x20, 0x4f, 0x63, 0x65, 0x61, 0x6e, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74,
+ 0x6c, 0x79, 0x20, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2c, 0x73,
+ 0x68, 0x6f, 0x72, 0x74, 0x6c, 0x79, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65,
+ 0x20, 0x74, 0x68, 0x65, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74,
+ 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x74, 0x68, 0x65, 0x20,
+ 0x4f, 0x74, 0x74, 0x6f, 0x6d, 0x61, 0x6e, 0x20, 0x45, 0x6d, 0x70, 0x69, 0x72,
+ 0x65, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68,
+ 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x41, 0x6e, 0x20, 0x49, 0x6e, 0x74, 0x72,
+ 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x63, 0x6f,
+ 0x6e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x20,
+ 0x74, 0x68, 0x65, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x20,
+ 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x65,
+ 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73,
+ 0x69, 0x6e, 0x64, 0x69, 0x67, 0x65, 0x6e, 0x6f, 0x75, 0x73, 0x20, 0x70, 0x65,
+ 0x6f, 0x70, 0x6c, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x65, 0x64, 0x69,
+ 0x6e, 0x67, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x69, 0x6e, 0x66,
+ 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x74,
+ 0x68, 0x65, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x20, 0x68, 0x61,
+ 0x76, 0x65, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x64,
+ 0x69, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x74,
+ 0x68, 0x72, 0x65, 0x65, 0x61, 0x64, 0x6a, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x20,
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x69, 0x73, 0x20, 0x72,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f,
+ 0x72, 0x64, 0x69, 0x73, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x77, 0x69,
+ 0x64, 0x65, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x67, 0x61, 0x72, 0x64, 0x65, 0x64,
+ 0x20, 0x61, 0x73, 0x68, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6d,
+ 0x70, 0x6f, 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x66, 0x6f, 0x75, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66,
+ 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x65, 0x70,
+ 0x75, 0x62, 0x6c, 0x69, 0x63, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x6c,
+ 0x79, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x74, 0x68, 0x65,
+ 0x20, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x20,
+ 0x6f, 0x66, 0x61, 0x72, 0x65, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x61, 0x76,
+ 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20,
+ 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x72,
+ 0x65, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66,
+ 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72,
+ 0x61, 0x6c, 0x20, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x69, 0x73, 0x20, 0x61,
+ 0x6c, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x72, 0x65, 0x6c,
+ 0x79, 0x70, 0x61, 0x73, 0x73, 0x65, 0x73, 0x20, 0x74, 0x68, 0x72, 0x6f, 0x75,
+ 0x67, 0x68, 0x20, 0x74, 0x68, 0x65, 0x68, 0x61, 0x73, 0x20, 0x62, 0x65, 0x65,
+ 0x6e, 0x20, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x63, 0x6f,
+ 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x76, 0x69,
+ 0x64, 0x65, 0x6f, 0x47, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x69, 0x63, 0x20, 0x6c,
+ 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x20, 0x61, 0x63, 0x63, 0x6f,
+ 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x66, 0x72, 0x6f,
+ 0x6d, 0x20, 0x74, 0x68, 0x65, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x6c, 0x79, 0x20,
+ 0x61, 0x66, 0x74, 0x65, 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
+ 0x77, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x64, 0x65, 0x76, 0x65,
+ 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x20,
+ 0x6f, 0x66, 0x20, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x3c,
+ 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x65,
+ 0x61, 0x72, 0x63, 0x68, 0x7c, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x49, 0x6e, 0x20, 0x70,
+ 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x2c, 0x20, 0x74, 0x68,
+ 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x6f,
+ 0x74, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x6f, 0x72, 0x20, 0x6f, 0x74, 0x68, 0x65,
+ 0x72, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x74, 0x68,
+ 0x6f, 0x75, 0x73, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x79, 0x65,
+ 0x61, 0x72, 0x73, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x3c, 0x2f, 0x64, 0x69, 0x76,
+ 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0d, 0x0a, 0x0d, 0x0a,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x2e, 0x70, 0x68, 0x70, 0x77, 0x61, 0x73, 0x20, 0x65, 0x73, 0x74, 0x61,
+ 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x6d, 0x69, 0x6e,
+ 0x2e, 0x6a, 0x73, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x3e, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
+ 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x61, 0x20, 0x73, 0x74, 0x72, 0x6f,
+ 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73,
+ 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d,
+ 0x74, 0x6f, 0x70, 0x3a, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74,
+ 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x67, 0x72, 0x61, 0x64,
+ 0x75, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68,
+ 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x6c,
+ 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x28, 0x22, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x29, 0x3b, 0x48, 0x6f,
+ 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c, 0x20, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x20,
+ 0x74, 0x68, 0x65, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x2f, 0x64, 0x69,
+ 0x76, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x3b,
+ 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x6c, 0x65, 0x66, 0x74, 0x3a,
+ 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x67,
+ 0x61, 0x69, 0x6e, 0x73, 0x74, 0x30, 0x3b, 0x20, 0x76, 0x65, 0x72, 0x74, 0x69,
+ 0x63, 0x61, 0x6c, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x55, 0x6e, 0x66,
+ 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x61, 0x74, 0x65, 0x6c, 0x79, 0x2c, 0x20, 0x74,
+ 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65,
+ 0x2f, 0x78, 0x2d, 0x69, 0x63, 0x6f, 0x6e, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a,
+ 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x66,
+ 0x69, 0x78, 0x22, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x09, 0x09, 0x3c, 0x2f,
+ 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x09, 0x09, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
+ 0x0a, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70,
+ 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0xd0, 0x91, 0xd1, 0x8a, 0xd0, 0xbb, 0xd0,
+ 0xb3, 0xd0, 0xb0, 0xd1, 0x80, 0xd1, 0x81, 0xd0, 0xba, 0xd0, 0xb8, 0xd0, 0xb1,
+ 0xd1, 0x8a, 0xd0, 0xbb, 0xd0, 0xb3, 0xd0, 0xb0, 0xd1, 0x80, 0xd1, 0x81, 0xd0,
+ 0xba, 0xd0, 0xb8, 0xd0, 0xa4, 0xd0, 0xb5, 0xd0, 0xb4, 0xd0, 0xb5, 0xd1, 0x80,
+ 0xd0, 0xb0, 0xd1, 0x86, 0xd0, 0xb8, 0xd0, 0xb8, 0xd0, 0xbd, 0xd0, 0xb5, 0xd1,
+ 0x81, 0xd0, 0xba, 0xd0, 0xbe, 0xd0, 0xbb, 0xd1, 0x8c, 0xd0, 0xba, 0xd0, 0xbe,
+ 0xd1, 0x81, 0xd0, 0xbe, 0xd0, 0xbe, 0xd0, 0xb1, 0xd1, 0x89, 0xd0, 0xb5, 0xd0,
+ 0xbd, 0xd0, 0xb8, 0xd0, 0xb5, 0xd1, 0x81, 0xd0, 0xbe, 0xd0, 0xbe, 0xd0, 0xb1,
+ 0xd1, 0x89, 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb8, 0xd1, 0x8f, 0xd0, 0xbf, 0xd1,
+ 0x80, 0xd0, 0xbe, 0xd0, 0xb3, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xbc, 0xd0, 0xbc,
+ 0xd1, 0x8b, 0xd0, 0x9e, 0xd1, 0x82, 0xd0, 0xbf, 0xd1, 0x80, 0xd0, 0xb0, 0xd0,
+ 0xb2, 0xd0, 0xb8, 0xd1, 0x82, 0xd1, 0x8c, 0xd0, 0xb1, 0xd0, 0xb5, 0xd1, 0x81,
+ 0xd0, 0xbf, 0xd0, 0xbb, 0xd0, 0xb0, 0xd1, 0x82, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0,
+ 0xbc, 0xd0, 0xb0, 0xd1, 0x82, 0xd0, 0xb5, 0xd1, 0x80, 0xd0, 0xb8, 0xd0, 0xb0,
+ 0xd0, 0xbb, 0xd1, 0x8b, 0xd0, 0xbf, 0xd0, 0xbe, 0xd0, 0xb7, 0xd0, 0xb2, 0xd0,
+ 0xbe, 0xd0, 0xbb, 0xd1, 0x8f, 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xbf, 0xd0, 0xbe,
+ 0xd1, 0x81, 0xd0, 0xbb, 0xd0, 0xb5, 0xd0, 0xb4, 0xd0, 0xbd, 0xd0, 0xb8, 0xd0,
+ 0xb5, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xb7, 0xd0, 0xbb, 0xd0, 0xb8, 0xd1, 0x87,
+ 0xd0, 0xbd, 0xd1, 0x8b, 0xd1, 0x85, 0xd0, 0xbf, 0xd1, 0x80, 0xd0, 0xbe, 0xd0,
+ 0xb4, 0xd1, 0x83, 0xd0, 0xba, 0xd1, 0x86, 0xd0, 0xb8, 0xd0, 0xb8, 0xd0, 0xbf,
+ 0xd1, 0x80, 0xd0, 0xbe, 0xd0, 0xb3, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xbc, 0xd0,
+ 0xbc, 0xd0, 0xb0, 0xd0, 0xbf, 0xd0, 0xbe, 0xd0, 0xbb, 0xd0, 0xbd, 0xd0, 0xbe,
+ 0xd1, 0x81, 0xd1, 0x82, 0xd1, 0x8c, 0xd1, 0x8e, 0xd0, 0xbd, 0xd0, 0xb0, 0xd1,
+ 0x85, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xb8, 0xd1, 0x82, 0xd1, 0x81, 0xd1, 0x8f,
+ 0xd0, 0xb8, 0xd0, 0xb7, 0xd0, 0xb1, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0,
+ 0xbd, 0xd0, 0xbe, 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb0, 0xd1, 0x81, 0xd0, 0xb5,
+ 0xd0, 0xbb, 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb8, 0xd1, 0x8f, 0xd0, 0xb8, 0xd0,
+ 0xb7, 0xd0, 0xbc, 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb8,
+ 0xd1, 0x8f, 0xd0, 0xba, 0xd0, 0xb0, 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xb3, 0xd0,
+ 0xbe, 0xd1, 0x80, 0xd0, 0xb8, 0xd0, 0xb8, 0xd0, 0x90, 0xd0, 0xbb, 0xd0, 0xb5,
+ 0xd0, 0xba, 0xd1, 0x81, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xb4, 0xd1, 0x80, 0xe0,
+ 0xa4, 0xa6, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0xb0, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x88, 0xe0, 0xa4, 0xa8,
+ 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0x85, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xaa, 0xe0,
+ 0xa5, 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0xa8, 0xe0, 0xa4, 0xad, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa4,
+ 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0x85, 0xe0, 0xa4, 0xa8, 0xe0,
+ 0xa5, 0x81, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb6, 0xe0, 0xa4,
+ 0xb9, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa6,
+ 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x87, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xa1, 0xe0,
+ 0xa4, 0xbf, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4,
+ 0xbf, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x80,
+ 0xe0, 0xa4, 0x85, 0xe0, 0xa4, 0xa7, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x95, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xb5, 0xe0, 0xa5, 0x80, 0xe0, 0xa4,
+ 0xa1, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xaf, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x9a,
+ 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x9f, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa0, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0x9a, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0x82,
+ 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb6, 0xe0, 0xa4, 0xa8, 0xe0,
+ 0xa4, 0xa6, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4,
+ 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaa, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0,
+ 0xe0, 0xa4, 0xaf, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0x85, 0xe0,
+ 0xa4, 0xa8, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0xb0, 0xe0, 0xa4, 0x91, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0x87, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xb0, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0x9f, 0xe0, 0xa5, 0x80, 0xe0, 0xa4,
+ 0xb6, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x8b,
+ 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x95, 0xe0,
+ 0xa4, 0xb8, 0xe0, 0xa4, 0xad, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xab, 0xe0, 0xa4,
+ 0xbc, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x88, 0xe0, 0xa4, 0xb6,
+ 0xe0, 0xa4, 0xb6, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa4, 0xe0,
+ 0xa5, 0x87, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xaa, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4,
+ 0xb0, 0xe0, 0xa4, 0xa6, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb6, 0xe0, 0xa4, 0xaa,
+ 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xaf, 0xe0,
+ 0xa4, 0xb0, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x82, 0xe0, 0xa4,
+ 0xa6, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xa5, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xbf, 0xe0,
+ 0xa4, 0x89, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0x89, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x9a, 0xe0,
+ 0xa4, 0xbf, 0xe0, 0xa4, 0x9f, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa0, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x9c, 0xe0, 0xa5, 0x8d, 0xe0,
+ 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0xaa, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa8,
+ 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x9c, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0xa1, 0xe0,
+ 0xa4, 0xbc, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x85, 0xe0, 0xa4,
+ 0xa8, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa6,
+ 0xe0, 0xa4, 0xb6, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x87, 0xe0,
+ 0xa4, 0xa3, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xb6, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4,
+ 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb7, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb8,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa5, 0x80, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x97, 0xe0, 0xa5,
+ 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xb9, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xb0,
+ 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa3, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xae, 0xe0,
+ 0xa4, 0xac, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0x82, 0xe0, 0xa4, 0xa1, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0x9a, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0x9a, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x89, 0xe0,
+ 0xa4, 0xaa, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xac, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4,
+ 0xa7, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x82, 0xe0,
+ 0xa4, 0xaa, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0x95, 0xe0, 0xa4,
+ 0x89, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x80,
+ 0xe0, 0xa4, 0xa6, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa7, 0xe0,
+ 0xa5, 0x8d, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4,
+ 0xb9, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0xb6, 0xe0, 0xa4, 0xac, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa6, 0xe0,
+ 0xa5, 0x8b, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x80, 0xe0, 0xa4,
+ 0xa1, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x86,
+ 0xe0, 0xa4, 0x88, 0xe0, 0xa4, 0xaa, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x8f, 0xe0,
+ 0xa4, 0xb2, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0xac, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0x87, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x82,
+ 0xe0, 0xa4, 0x96, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0x86, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x87, 0xe0, 0xa4,
+ 0xb6, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0x85, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x81,
+ 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xa7, 0xe0, 0xa4, 0xac, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbc, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0xb0, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xb5, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xa8,
+ 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xaa, 0xe0, 0xa5, 0x8d, 0xe0,
+ 0xa4, 0xb0, 0xe0, 0xa4, 0xae, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0x96, 0xe0, 0xa4,
+ 0xaa, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xb6, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xaa, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xbf, 0xe0,
+ 0xa4, 0xb5, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5,
+ 0x81, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa8,
+ 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x8d, 0xe0,
+ 0xa4, 0xa5, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0x86, 0xe0, 0xa4, 0xaf, 0xe0, 0xa5,
+ 0x8b, 0xe0, 0xa4, 0x9c, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xb8,
+ 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xb0, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xb4, 0xd8, 0xa7, 0xd8,
+ 0xb1, 0xd9, 0x83, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85,
+ 0xd9, 0x86, 0xd8, 0xaa, 0xd8, 0xaf, 0xd9, 0x8a, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd9, 0x83, 0xd9, 0x85, 0xd8, 0xa8, 0xd9, 0x8a, 0xd9, 0x88,
+ 0xd8, 0xaa, 0xd8, 0xb1, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xb4, 0xd8,
+ 0xa7, 0xd9, 0x87, 0xd8, 0xaf, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8, 0xb9, 0xd8, 0xaf,
+ 0xd8, 0xaf, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb2, 0xd9, 0x88, 0xd8, 0xa7, 0xd8,
+ 0xb1, 0xd8, 0xb9, 0xd8, 0xaf, 0xd8, 0xaf, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xb1,
+ 0xd8, 0xaf, 0xd9, 0x88, 0xd8, 0xaf, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa5, 0xd8,
+ 0xb3, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x85, 0xd9, 0x8a, 0xd8, 0xa9, 0xd8, 0xa7,
+ 0xd9, 0x84, 0xd9, 0x81, 0xd9, 0x88, 0xd8, 0xaa, 0xd9, 0x88, 0xd8, 0xb4, 0xd9,
+ 0x88, 0xd8, 0xa8, 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xb3, 0xd8, 0xa7,
+ 0xd8, 0xa8, 0xd9, 0x82, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd9,
+ 0x85, 0xd8, 0xb9, 0xd9, 0x84, 0xd9, 0x88, 0xd9, 0x85, 0xd8, 0xa7, 0xd8, 0xaa,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xb3, 0xd9, 0x84, 0xd8, 0xb3, 0xd9,
+ 0x84, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xac, 0xd8, 0xb1,
+ 0xd8, 0xa7, 0xd9, 0x81, 0xd9, 0x8a, 0xd9, 0x83, 0xd8, 0xb3, 0xd8, 0xa7, 0xd9,
+ 0x84, 0xd8, 0xa7, 0xd8, 0xb3, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x85, 0xd9, 0x8a,
+ 0xd8, 0xa9, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa7, 0xd8, 0xaa, 0xd8, 0xb5, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd8, 0xa7, 0xd8, 0xaa, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72,
+ 0x64, 0x73, 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22,
+ 0x77, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x31, 0x39, 0x39, 0x39, 0x2f, 0x78,
+ 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x22, 0x20, 0x74,
+ 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3b, 0x20, 0x63, 0x68, 0x61,
+ 0x72, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x22, 0x3e, 0x3c, 0x74, 0x61,
+ 0x62, 0x6c, 0x65, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64, 0x64, 0x69,
+ 0x6e, 0x67, 0x3d, 0x22, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
+ 0x65, 0x74, 0x65, 0x3d, 0x22, 0x6f, 0x66, 0x66, 0x22, 0x20, 0x74, 0x65, 0x78,
+ 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x20, 0x63, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x3b, 0x74, 0x6f, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x62, 0x79, 0x20, 0x62, 0x61, 0x63, 0x6b,
+ 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a,
+ 0x20, 0x23, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74,
+ 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x2f, 0x64, 0x69, 0x76, 0x3e,
+ 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64,
+ 0x3d, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x23, 0x22, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x22, 0x3e, 0x3c, 0x69, 0x6d, 0x67,
+ 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68,
+ 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x0a, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3d, 0x22, 0x2f,
+ 0x2f, 0x45, 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
+ 0x77, 0x77, 0x77, 0x2e, 0x77, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x52,
+ 0x49, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x28, 0x22, 0x20,
+ 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x3a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x6f, 0x63,
+ 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x28, 0x27,
+ 0x3c, 0x73, 0x63, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20,
+ 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x3b, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a,
+ 0x2f, 0x2f, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6d, 0x61, 0x72,
+ 0x67, 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x70, 0x3a, 0x2e, 0x6d, 0x69, 0x6e, 0x2e,
+ 0x6a, 0x73, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e,
+ 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x77, 0x33, 0x2e, 0x6f, 0x72, 0x67,
+ 0x2f, 0x31, 0x39, 0x39, 0x39, 0x2f, 0x78, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20,
+ 0x0a, 0x0d, 0x0a, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0d, 0x0a, 0x3c,
+ 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x2f,
+ 0x22, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62, 0x6c,
+ 0x61, 0x6e, 0x6b, 0x22, 0x3e, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x65, 0x6e,
+ 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x22, 0x75, 0x74, 0x66, 0x2d, 0x38,
+ 0x22, 0x3f, 0x3e, 0x0a, 0x77, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e,
+ 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x3f, 0x61, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
+ 0x77, 0x77, 0x2e, 0x69, 0x63, 0x6f, 0x6e, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x20, 0x73, 0x74, 0x79,
+ 0x6c, 0x65, 0x3d, 0x22, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e,
+ 0x64, 0x3a, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f,
+ 0x63, 0x73, 0x73, 0x22, 0x20, 0x2f, 0x3e, 0x0a, 0x6d, 0x65, 0x74, 0x61, 0x20,
+ 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x3d, 0x22, 0x6f, 0x67, 0x3a,
+ 0x74, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d,
+ 0x22, 0x74, 0x65, 0x78, 0x74, 0x22, 0x20, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65,
+ 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a,
+ 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65,
+ 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65,
+ 0x65, 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x68,
+ 0x74, 0x6d, 0x6c, 0x3b, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d,
+ 0x75, 0x74, 0x66, 0x2d, 0x38, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69,
+ 0x64, 0x65, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x74, 0x61,
+ 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x31, 0x30,
+ 0x30, 0x25, 0x22, 0x20, 0x49, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e,
+ 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x64, 0x65, 0x76, 0x65,
+ 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6d, 0x70, 0x6f, 0x72,
+ 0x74, 0x61, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x3c, 0x2f, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x0a, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x20, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x66, 0x6f, 0x6e, 0x74,
+ 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31, 0x3e, 0x3c, 0x2f, 0x73, 0x70, 0x61,
+ 0x6e, 0x3e, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x3d, 0x67, 0x62,
+ 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x43, 0x6f,
+ 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72,
+ 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x69, 0x6d, 0x45,
+ 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x61, 0x64, 0x65, 0x6d, 0x79, 0x20,
+ 0x6f, 0x66, 0x20, 0x53, 0x63, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x64, 0x69,
+ 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x64, 0x69, 0x73, 0x70,
+ 0x6c, 0x61, 0x79, 0x3a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x2e, 0x67, 0x65,
+ 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x28,
+ 0x69, 0x64, 0x29, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x6a, 0x75, 0x6e, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x28, 0x27, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x27, 0x29,
+ 0x3b, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x70, 0x65,
+ 0x72, 0x74, 0x79, 0x3d, 0x22, 0x6f, 0x67, 0x3a, 0xd0, 0x91, 0xd1, 0x8a, 0xd0,
+ 0xbb, 0xd0, 0xb3, 0xd0, 0xb0, 0xd1, 0x80, 0xd1, 0x81, 0xd0, 0xba, 0xd0, 0xb8,
+ 0x0a, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x22,
+ 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x3e, 0x50, 0x72, 0x69, 0x76, 0x61,
+ 0x63, 0x79, 0x20, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3c, 0x2f, 0x61, 0x3e,
+ 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20,
+ 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53,
+ 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73,
+ 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6d, 0x61,
+ 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x2f,
+ 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x3e, 0x3c,
+ 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
+ 0x3a, 0x2f, 0x2f, 0x69, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x26, 0x71,
+ 0x75, 0x6f, 0x74, 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x72, 0x65, 0x66,
+ 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x73, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x70, 0x6f, 0x70, 0x75,
+ 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x69, 0x6e, 0x20, 0x57,
+ 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x2c, 0x20, 0x44, 0x2e,
+ 0x43, 0x2e, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x62, 0x61, 0x63,
+ 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x61, 0x6d, 0x6f, 0x6e, 0x67,
+ 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73,
+ 0x2c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63,
+ 0x69, 0x70, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65,
+ 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
+ 0x69, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x66,
+ 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x63, 0x68, 0x61, 0x72,
+ 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x4f, 0x78, 0x66, 0x6f, 0x72, 0x64, 0x20,
+ 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x20, 0x6d, 0x69,
+ 0x73, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x20, 0x6f, 0x66, 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65,
+ 0x2c, 0x20, 0x68, 0x6f, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c, 0x73, 0x74, 0x79,
+ 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x2f, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x62, 0x69, 0x61, 0x20, 0x55,
+ 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x65, 0x78, 0x70, 0x61,
+ 0x6e, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75,
+ 0x64, 0x65, 0x75, 0x73, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x66,
+ 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x69, 0x6e, 0x64, 0x69, 0x63,
+ 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68,
+ 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74,
+ 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x61, 0x66, 0x66, 0x69, 0x6c, 0x69,
+ 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65,
+ 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x62,
+ 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20,
+ 0x6f, 0x66, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x3e,
+ 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x3c, 0x2f, 0x74,
+ 0x61, 0x62, 0x6c, 0x65, 0x3e, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
+ 0x20, 0x6f, 0x66, 0x20, 0x49, 0x72, 0x65, 0x6c, 0x61, 0x6e, 0x64, 0x0a, 0x3c,
+ 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x3c, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x63, 0x6f, 0x6e,
+ 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20,
+ 0x74, 0x68, 0x65, 0x4f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x77,
+ 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x20, 0x6f, 0x66, 0x68, 0x65, 0x61, 0x64,
+ 0x71, 0x75, 0x61, 0x72, 0x74, 0x65, 0x72, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74,
+ 0x68, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x61, 0x72,
+ 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, 0x6d, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68,
+ 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x64, 0x65,
+ 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61,
+ 0x6c, 0x20, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x6f, 0x66,
+ 0x62, 0x65, 0x63, 0x61, 0x6d, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61,
+ 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x4e,
+ 0x6f, 0x74, 0x65, 0x2c, 0x20, 0x68, 0x6f, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2c,
+ 0x20, 0x74, 0x68, 0x61, 0x74, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x20,
+ 0x74, 0x6f, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x61,
+ 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x20, 0x6f, 0x66,
+ 0x20, 0x74, 0x68, 0x65, 0x61, 0x63, 0x63, 0x6f, 0x72, 0x64, 0x61, 0x6e, 0x63,
+ 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x70, 0x61, 0x72,
+ 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20,
+ 0x74, 0x68, 0x65, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, 0x20, 0x64, 0x65,
+ 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x75, 0x6e, 0x64, 0x65,
+ 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x69, 0x73, 0x20, 0x6f, 0x66, 0x74, 0x65, 0x6e, 0x20, 0x63, 0x6f,
+ 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72, 0x65, 0x64, 0x68, 0x69, 0x73, 0x20, 0x79,
+ 0x6f, 0x75, 0x6e, 0x67, 0x65, 0x72, 0x20, 0x62, 0x72, 0x6f, 0x74, 0x68, 0x65,
+ 0x72, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x3c, 0x2f,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70,
+ 0x2d, 0x65, 0x71, 0x75, 0x69, 0x76, 0x3d, 0x22, 0x58, 0x2d, 0x55, 0x41, 0x2d,
+ 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x72, 0x6f, 0x70,
+ 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x6f, 0x66, 0x20, 0x42, 0x72, 0x69, 0x74,
+ 0x69, 0x73, 0x68, 0x20, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x62, 0x69, 0x61, 0x68,
+ 0x61, 0x73, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x63, 0x72, 0x69, 0x74, 0x69,
+ 0x63, 0x69, 0x7a, 0x65, 0x64, 0x28, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74,
+ 0x20, 0x74, 0x68, 0x65, 0x70, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74,
+ 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x74, 0x68, 0x65, 0x30, 0x22, 0x20,
+ 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x22,
+ 0x30, 0x22, 0x20, 0x74, 0x68, 0x6f, 0x75, 0x73, 0x61, 0x6e, 0x64, 0x73, 0x20,
+ 0x6f, 0x66, 0x20, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x72, 0x65, 0x64, 0x69,
+ 0x72, 0x65, 0x63, 0x74, 0x73, 0x20, 0x68, 0x65, 0x72, 0x65, 0x2e, 0x20, 0x46,
+ 0x6f, 0x72, 0x68, 0x61, 0x76, 0x65, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72,
+ 0x65, 0x6e, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x25, 0x33, 0x45, 0x25, 0x33,
+ 0x43, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x25, 0x33, 0x45, 0x22, 0x29,
+ 0x29, 0x3b, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x3c, 0x6c, 0x69, 0x3e,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
+ 0x3a, 0x2f, 0x2f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22,
+ 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x74, 0x65, 0x78,
+ 0x74, 0x2d, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a,
+ 0x6e, 0x6f, 0x6e, 0x65, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x64, 0x69,
+ 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x20, 0x6e, 0x6f, 0x6e, 0x65, 0x3c, 0x6d,
+ 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d, 0x65, 0x71, 0x75, 0x69,
+ 0x76, 0x3d, 0x22, 0x58, 0x2d, 0x6e, 0x65, 0x77, 0x20, 0x44, 0x61, 0x74, 0x65,
+ 0x28, 0x29, 0x2e, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x28, 0x29, 0x20,
+ 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x78,
+ 0x2d, 0x69, 0x63, 0x6f, 0x6e, 0x22, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e,
+ 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
+ 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3d, 0x22, 0x6a, 0x61, 0x76,
+ 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77,
+ 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65,
+ 0x66, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6a, 0x61, 0x76,
+ 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3a, 0x2d, 0x2d, 0x3e, 0x0d, 0x0a,
+ 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d,
+ 0x22, 0x74, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x68, 0x6f, 0x72, 0x74,
+ 0x63, 0x75, 0x74, 0x20, 0x69, 0x63, 0x6f, 0x6e, 0x22, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0d, 0x0a, 0x3c, 0x64,
+ 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x3c, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74,
+ 0x70, 0x3a, 0x2f, 0x2f, 0x22, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x22, 0x20, 0x74, 0x3c, 0x2f,
+ 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20,
+ 0x74, 0x79, 0x70, 0x65, 0x3d, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x20,
+ 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72,
+ 0x65, 0x6e, 0x63, 0x79, 0x3d, 0x22, 0x58, 0x2d, 0x55, 0x41, 0x2d, 0x43, 0x6f,
+ 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x22, 0x20, 0x63, 0x6f, 0x6e,
+ 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20,
+ 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x3e, 0x0d, 0x0a, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x20, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0x3c, 0x2f, 0x75,
+ 0x6c, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x61, 0x73, 0x73, 0x6f, 0x63,
+ 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x69, 0x6e, 0x67,
+ 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
+ 0x3a, 0x2f, 0x2f, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0x3c,
+ 0x6c, 0x69, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72,
+ 0x6d, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x68, 0x74, 0x74,
+ 0x70, 0x3a, 0x2f, 0x2f, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c,
+ 0x65, 0x3d, 0x22, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x74, 0x79,
+ 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x22, 0x20, 0x6e, 0x61, 0x6d,
+ 0x65, 0x3d, 0x22, 0x71, 0x22, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77,
+ 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x20, 0x62,
+ 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x70, 0x6f, 0x73,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65,
+ 0x72, 0x3d, 0x22, 0x30, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22,
+ 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x63, 0x75, 0x74,
+ 0x20, 0x69, 0x63, 0x6f, 0x6e, 0x22, 0x20, 0x68, 0x36, 0x3e, 0x3c, 0x75, 0x6c,
+ 0x3e, 0x3c, 0x6c, 0x69, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
+ 0x22, 0x20, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70,
+ 0x2d, 0x65, 0x71, 0x75, 0x69, 0x76, 0x3d, 0x22, 0x63, 0x73, 0x73, 0x22, 0x20,
+ 0x6d, 0x65, 0x64, 0x69, 0x61, 0x3d, 0x22, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e,
+ 0x22, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, 0x6c, 0x65,
+ 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x22, 0x20, 0x74, 0x79,
+ 0x70, 0x65, 0x3d, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x2f, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x62,
+ 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x68, 0x74, 0x6d,
+ 0x6c, 0x3b, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x75, 0x74,
+ 0x66, 0x2d, 0x38, 0x22, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x74, 0x72, 0x61,
+ 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x3d, 0x22, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x22, 0x20, 0x74, 0x79, 0x70,
+ 0x65, 0x3d, 0x22, 0x74, 0x65, 0x0d, 0x0a, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20,
+ 0x68, 0x74, 0x74, 0x70, 0x2d, 0x65, 0x71, 0x75, 0x69, 0x76, 0x3d, 0x22, 0x3e,
+ 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x30, 0x22, 0x20, 0x63, 0x65, 0x6c,
+ 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x22, 0x30, 0x22, 0x3e,
+ 0x3b, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x3c,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x74, 0x69,
+ 0x6d, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x68,
+ 0x65, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6e, 0x65, 0x63,
+ 0x65, 0x73, 0x73, 0x61, 0x72, 0x69, 0x6c, 0x79, 0x46, 0x6f, 0x72, 0x20, 0x6d,
+ 0x6f, 0x72, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x67, 0x69,
+ 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, 0x3c, 0x21, 0x44, 0x4f,
+ 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x3c, 0x68,
+ 0x74, 0x6d, 0x6c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72,
+ 0x6c, 0x79, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70,
+ 0x65, 0x3d, 0x22, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x22, 0x20, 0x6e, 0x61,
+ 0x6d, 0x65, 0x3d, 0x22, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x3a, 0x76, 0x6f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b, 0x22, 0x65, 0x66,
+ 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x6f,
+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d,
+ 0x70, 0x6c, 0x65, 0x74, 0x65, 0x3d, 0x22, 0x6f, 0x66, 0x66, 0x22, 0x20, 0x67,
+ 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x73,
+ 0x69, 0x64, 0x65, 0x72, 0x65, 0x64, 0x3e, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74,
+ 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x22, 0x20,
+ 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0d, 0x0a,
+ 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67,
+ 0x68, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x6f, 0x72, 0x6c,
+ 0x64, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x6d, 0x69, 0x73, 0x63, 0x6f,
+ 0x6e, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x73, 0x73, 0x6f, 0x63,
+ 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74,
+ 0x68, 0x65, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x2f, 0x64, 0x69,
+ 0x76, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x64, 0x75, 0x72, 0x69,
+ 0x6e, 0x67, 0x20, 0x68, 0x69, 0x73, 0x20, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69,
+ 0x6d, 0x65, 0x2c, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x74, 0x79, 0x70,
+ 0x65, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x78, 0x2d, 0x69, 0x63,
+ 0x6f, 0x6e, 0x22, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61,
+ 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x64, 0x69,
+ 0x70, 0x6c, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x20, 0x72, 0x65, 0x6c, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0x72, 0x65, 0x20, 0x6f, 0x66, 0x74, 0x65,
+ 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72, 0x65, 0x64, 0x6d,
+ 0x65, 0x74, 0x61, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x22,
+ 0x75, 0x74, 0x66, 0x2d, 0x38, 0x22, 0x20, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74,
+ 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x22, 0x20,
+ 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x22, 0x3e, 0x3c, 0x69, 0x6d, 0x67,
+ 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
+ 0x69, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x74, 0x68, 0x65, 0x20, 0x65,
+ 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x20,
+ 0x6f, 0x66, 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x64, 0x69,
+ 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x26, 0x61, 0x6d, 0x70,
+ 0x3b, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x26, 0x61, 0x6d, 0x70, 0x3b, 0x6e, 0x62,
+ 0x73, 0x70, 0x3b, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69,
+ 0x6e, 0x65, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x71, 0x75, 0x69,
+ 0x74, 0x65, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20,
+ 0x66, 0x72, 0x6f, 0x6d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x64, 0x69,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65,
+ 0x6e, 0x20, 0x74, 0x68, 0x65, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x63,
+ 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65,
+ 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x77, 0x69, 0x64, 0x65, 0x6c, 0x79, 0x20,
+ 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f,
+ 0x77, 0x61, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x77, 0x69, 0x74, 0x68, 0x20, 0x76,
+ 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65,
+ 0x73, 0x68, 0x61, 0x76, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61,
+ 0x74, 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x28, 0x64, 0x6f, 0x63, 0x75,
+ 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69,
+ 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x69, 0x67,
+ 0x69, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f,
+ 0x70, 0x65, 0x64, 0x65, 0x74, 0x61, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65,
+ 0x74, 0x3d, 0x22, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x22, 0x3e, 0x20, 0x74, 0x79,
+ 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22,
+ 0x20, 0x2f, 0x3e, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x61, 0x62, 0x6c, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6d, 0x6f,
+ 0x72, 0x65, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x6c, 0x79, 0x20, 0x72, 0x65,
+ 0x6c, 0x61, 0x74, 0x65, 0x64, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x61,
+ 0x6e, 0x64, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x74,
+ 0x68, 0x61, 0x74, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6f, 0x74, 0x68,
+ 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x70, 0x65, 0x72, 0x70, 0x65, 0x6e, 0x64,
+ 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65,
+ 0x73, 0x74, 0x79, 0x6c, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74,
+ 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22,
+ 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
+ 0x22, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x20, 0x72, 0x65, 0x73,
+ 0x69, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x76, 0x65, 0x6c,
+ 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69,
+ 0x65, 0x73, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x20, 0x70, 0x72,
+ 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x65, 0x63, 0x6f, 0x6e,
+ 0x6f, 0x6d, 0x69, 0x63, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d,
+ 0x65, 0x6e, 0x74, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x66, 0x6f, 0x72,
+ 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x6f, 0x6e, 0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61,
+ 0x6c, 0x20, 0x6f, 0x63, 0x63, 0x61, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0x6f,
+ 0x72, 0x74, 0x75, 0x67, 0x75, 0xc3, 0xaa, 0x73, 0x20, 0x28, 0x45, 0x75, 0x72,
+ 0x6f, 0x70, 0x65, 0x75, 0x29, 0xd0, 0xa3, 0xd0, 0xba, 0xd1, 0x80, 0xd0, 0xb0,
+ 0xd1, 0x97, 0xd0, 0xbd, 0xd1, 0x81, 0xd1, 0x8c, 0xd0, 0xba, 0xd0, 0xb0, 0xd1,
+ 0x83, 0xd0, 0xba, 0xd1, 0x80, 0xd0, 0xb0, 0xd1, 0x97, 0xd0, 0xbd, 0xd1, 0x81,
+ 0xd1, 0x8c, 0xd0, 0xba, 0xd0, 0xb0, 0xd0, 0xa0, 0xd0, 0xbe, 0xd1, 0x81, 0xd1,
+ 0x81, 0xd0, 0xb8, 0xd0, 0xb9, 0xd1, 0x81, 0xd0, 0xba, 0xd0, 0xbe, 0xd0, 0xb9,
+ 0xd0, 0xbc, 0xd0, 0xb0, 0xd1, 0x82, 0xd0, 0xb5, 0xd1, 0x80, 0xd0, 0xb8, 0xd0,
+ 0xb0, 0xd0, 0xbb, 0xd0, 0xbe, 0xd0, 0xb2, 0xd0, 0xb8, 0xd0, 0xbd, 0xd1, 0x84,
+ 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xbc, 0xd0, 0xb0, 0xd1, 0x86, 0xd0, 0xb8, 0xd0,
+ 0xb8, 0xd1, 0x83, 0xd0, 0xbf, 0xd1, 0x80, 0xd0, 0xb0, 0xd0, 0xb2, 0xd0, 0xbb,
+ 0xd0, 0xb5, 0xd0, 0xbd, 0xd0, 0xb8, 0xd1, 0x8f, 0xd0, 0xbd, 0xd0, 0xb5, 0xd0,
+ 0xbe, 0xd0, 0xb1, 0xd1, 0x85, 0xd0, 0xbe, 0xd0, 0xb4, 0xd0, 0xb8, 0xd0, 0xbc,
+ 0xd0, 0xbe, 0xd0, 0xb8, 0xd0, 0xbd, 0xd1, 0x84, 0xd0, 0xbe, 0xd1, 0x80, 0xd0,
+ 0xbc, 0xd0, 0xb0, 0xd1, 0x86, 0xd0, 0xb8, 0xd1, 0x8f, 0xd0, 0x98, 0xd0, 0xbd,
+ 0xd1, 0x84, 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xbc, 0xd0, 0xb0, 0xd1, 0x86, 0xd0,
+ 0xb8, 0xd1, 0x8f, 0xd0, 0xa0, 0xd0, 0xb5, 0xd1, 0x81, 0xd0, 0xbf, 0xd1, 0x83,
+ 0xd0, 0xb1, 0xd0, 0xbb, 0xd0, 0xb8, 0xd0, 0xba, 0xd0, 0xb8, 0xd0, 0xba, 0xd0,
+ 0xbe, 0xd0, 0xbb, 0xd0, 0xb8, 0xd1, 0x87, 0xd0, 0xb5, 0xd1, 0x81, 0xd1, 0x82,
+ 0xd0, 0xb2, 0xd0, 0xbe, 0xd0, 0xb8, 0xd0, 0xbd, 0xd1, 0x84, 0xd0, 0xbe, 0xd1,
+ 0x80, 0xd0, 0xbc, 0xd0, 0xb0, 0xd1, 0x86, 0xd0, 0xb8, 0xd1, 0x8e, 0xd1, 0x82,
+ 0xd0, 0xb5, 0xd1, 0x80, 0xd1, 0x80, 0xd0, 0xb8, 0xd1, 0x82, 0xd0, 0xbe, 0xd1,
+ 0x80, 0xd0, 0xb8, 0xd0, 0xb8, 0xd0, 0xb4, 0xd0, 0xbe, 0xd1, 0x81, 0xd1, 0x82,
+ 0xd0, 0xb0, 0xd1, 0x82, 0xd0, 0xbe, 0xd1, 0x87, 0xd0, 0xbd, 0xd0, 0xbe, 0xd8,
+ 0xa7, 0xd9, 0x84, 0xd9, 0x85, 0xd8, 0xaa, 0xd9, 0x88, 0xd8, 0xa7, 0xd8, 0xac,
+ 0xd8, 0xaf, 0xd9, 0x88, 0xd9, 0x86, 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa7, 0xd8,
+ 0xb4, 0xd8, 0xaa, 0xd8, 0xb1, 0xd8, 0xa7, 0xd9, 0x83, 0xd8, 0xa7, 0xd8, 0xaa,
+ 0xd8, 0xa7, 0xd9, 0x84, 0xd8, 0xa7, 0xd9, 0x82, 0xd8, 0xaa, 0xd8, 0xb1, 0xd8,
+ 0xa7, 0xd8, 0xad, 0xd8, 0xa7, 0xd8, 0xaa, 0x68, 0x74, 0x6d, 0x6c, 0x3b, 0x20,
+ 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x55, 0x54, 0x46, 0x2d, 0x38,
+ 0x22, 0x20, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28,
+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x64, 0x69, 0x73,
+ 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x2d, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x3b, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74,
+ 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20,
+ 0x74, 0x79, 0x70, 0x65, 0x20, 0x3d, 0x20, 0x27, 0x74, 0x65, 0x78, 0x74, 0x2f,
+ 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x3c, 0x69, 0x6d, 0x67, 0x20,
+ 0x73, 0x72, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
+ 0x77, 0x77, 0x2e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
+ 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x73, 0x68,
+ 0x6f, 0x72, 0x74, 0x63, 0x75, 0x74, 0x20, 0x69, 0x63, 0x6f, 0x6e, 0x22, 0x20,
+ 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x22, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x63,
+ 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x3d, 0x22, 0x6f, 0x66, 0x66, 0x22,
+ 0x20, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64,
+ 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x3c, 0x2f, 0x61, 0x3e,
+ 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0x0a, 0x3c, 0x6c, 0x69, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x63, 0x73, 0x73, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65,
+ 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x3c,
+ 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22,
+ 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73,
+ 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a,
+ 0x2f, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x61,
+ 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x22, 0x20, 0x0d, 0x0a, 0x3c,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22,
+ 0x74, 0x65, 0x78, 0x74, 0x2f, 0x20, 0x6f, 0x6e, 0x63, 0x6c, 0x69, 0x63, 0x6b,
+ 0x3d, 0x22, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3a,
+ 0x28, 0x6e, 0x65, 0x77, 0x20, 0x44, 0x61, 0x74, 0x65, 0x29, 0x2e, 0x67, 0x65,
+ 0x74, 0x54, 0x69, 0x6d, 0x65, 0x28, 0x29, 0x7d, 0x68, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3d, 0x22, 0x31, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22,
+ 0x31, 0x22, 0x20, 0x50, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x27, 0x73, 0x20, 0x52,
+ 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x6f, 0x66, 0x20, 0x20, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a,
+ 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x64, 0x65,
+ 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x75, 0x6e, 0x64, 0x65,
+ 0x72, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x6e, 0x69, 0x6e,
+ 0x67, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x2f, 0x64, 0x69,
+ 0x76, 0x3e, 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x2f, 0x64,
+ 0x69, 0x76, 0x3e, 0x0a, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68,
+ 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c,
+ 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x2f,
+ 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x2f, 0x64, 0x23, 0x76, 0x69, 0x65, 0x77, 0x70,
+ 0x6f, 0x72, 0x74, 0x7b, 0x6d, 0x69, 0x6e, 0x2d, 0x68, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3a, 0x0a, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x73, 0x72,
+ 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x3e, 0x3c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x6f, 0x66, 0x74, 0x65, 0x6e, 0x20, 0x72, 0x65,
+ 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x73, 0x20,
+ 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3e, 0x0a, 0x3c, 0x6f, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x3c, 0x21, 0x44, 0x4f, 0x43,
+ 0x54, 0x59, 0x50, 0x45, 0x20, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0a, 0x3c, 0x21,
+ 0x2d, 0x2d, 0x5b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x61, 0x6c, 0x20, 0x41, 0x69, 0x72, 0x70, 0x6f, 0x72, 0x74, 0x3e, 0x0a,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
+ 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x61, 0x20,
+ 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
+ 0x77, 0xe0, 0xb8, 0xa0, 0xe0, 0xb8, 0xb2, 0xe0, 0xb8, 0xa9, 0xe0, 0xb8, 0xb2,
+ 0xe0, 0xb9, 0x84, 0xe0, 0xb8, 0x97, 0xe0, 0xb8, 0xa2, 0xe1, 0x83, 0xa5, 0xe1,
+ 0x83, 0x90, 0xe1, 0x83, 0xa0, 0xe1, 0x83, 0x97, 0xe1, 0x83, 0xa3, 0xe1, 0x83,
+ 0x9a, 0xe1, 0x83, 0x98, 0xe6, 0xad, 0xa3, 0xe9, 0xab, 0x94, 0xe4, 0xb8, 0xad,
+ 0xe6, 0x96, 0x87, 0x20, 0x28, 0xe7, 0xb9, 0x81, 0xe9, 0xab, 0x94, 0x29, 0xe0,
+ 0xa4, 0xa8, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4,
+ 0xa6, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb6, 0xe0, 0xa4, 0xa1, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0x89, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xb2, 0xe0, 0xa5, 0x8b, 0xe0,
+ 0xa4, 0xa1, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb7, 0xe0, 0xa5,
+ 0x87, 0xe0, 0xa4, 0xa4, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x9c,
+ 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xb0, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x82, 0xe0, 0xa4,
+ 0xac, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xa7, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa4,
+ 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa5, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xaa, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5,
+ 0x8d, 0xe0, 0xa4, 0xb5, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbe,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xb8, 0xe0,
+ 0xa5, 0x8d, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa3, 0xe0, 0xa4,
+ 0xb8, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0x97, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x9a, 0xe0, 0xa4, 0xbf, 0xe0,
+ 0xa4, 0x9f, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa0, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4,
+ 0x82, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x9c, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0x9e, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0x85, 0xe0,
+ 0xa4, 0xae, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4,
+ 0x95, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xad,
+ 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa8, 0xe0,
+ 0xa4, 0x97, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xa1, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4,
+ 0xaf, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x81, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xaf, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x95, 0xe0,
+ 0xa4, 0xbf, 0xe0, 0xa4, 0xb8, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4,
+ 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb7, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaa,
+ 0xe0, 0xa4, 0xb9, 0xe0, 0xa5, 0x81, 0xe0, 0xa4, 0x81, 0xe0, 0xa4, 0x9a, 0xe0,
+ 0xa4, 0xa4, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xaa, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4,
+ 0xb0, 0xe0, 0xa4, 0xac, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xa7, 0xe0, 0xa4, 0xa8,
+ 0xe0, 0xa4, 0x9f, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xaa, 0xe0, 0xa5, 0x8d, 0xe0,
+ 0xa4, 0xaa, 0xe0, 0xa4, 0xa3, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0x95, 0xe0, 0xa5,
+ 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x87,
+ 0xe0, 0xa4, 0x9f, 0xe0, 0xa4, 0xaa, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xad, 0xe0, 0xa4,
+ 0xaa, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaa,
+ 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xae, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xb2, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4,
+ 0x82, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xab, 0xe0, 0xa4, 0xbc, 0xe0, 0xa5, 0x8d,
+ 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xa8, 0xe0,
+ 0xa4, 0xbf, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xae, 0xe0, 0xa4,
+ 0xbe, 0xe0, 0xa4, 0xa3, 0xe0, 0xa4, 0xb2, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xae,
+ 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x9f, 0xe0, 0xa5, 0x87, 0xe0, 0xa4, 0xa1, 0x64,
+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x20, 0x63,
+ 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d,
+ 0x65, 0x6e, 0x74, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x73, 0x42, 0x79, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x28,
+ 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, 0x68, 0x74, 0x6d,
+ 0x6c, 0x3e, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x3c, 0x6d, 0x65, 0x74,
+ 0x61, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x75, 0x74,
+ 0x66, 0x2d, 0x38, 0x22, 0x3e, 0x3a, 0x75, 0x72, 0x6c, 0x22, 0x20, 0x63, 0x6f,
+ 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
+ 0x2f, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x73,
+ 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x22, 0x73, 0x74, 0x79,
+ 0x6c, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74,
+ 0x2f, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74,
+ 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x77, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x31, 0x39, 0x39, 0x39,
+ 0x2f, 0x78, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x74, 0x79,
+ 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f,
+ 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x3d, 0x22, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22,
+ 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x22, 0x20, 0x20,
+ 0x3d, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65,
+ 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x74, 0x79, 0x70, 0x65, 0x3d,
+ 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x78, 0x2d, 0x69, 0x63, 0x6f, 0x6e,
+ 0x22, 0x20, 0x2f, 0x3e, 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64, 0x64, 0x69,
+ 0x6e, 0x67, 0x3d, 0x22, 0x30, 0x22, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x70,
+ 0x2e, 0x63, 0x73, 0x73, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74,
+ 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x3c, 0x2f, 0x61, 0x3e,
+ 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0x3c, 0x6c, 0x69, 0x3e, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d,
+ 0x22, 0x31, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x22, 0x31,
+ 0x22, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68,
+ 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x74, 0x79,
+ 0x6c, 0x65, 0x3d, 0x22, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x6e,
+ 0x6f, 0x6e, 0x65, 0x3b, 0x22, 0x3e, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61,
+ 0x74, 0x65, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x61, 0x70, 0x70,
+ 0x6c, 0x69, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, 0x2f, 0x44, 0x54, 0x44,
+ 0x20, 0x58, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x65, 0x6c,
+ 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x22, 0x30, 0x22, 0x20,
+ 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d,
+ 0x22, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x3d, 0x22, 0x2f, 0x61, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c,
+ 0x73, 0x70, 0x61, 0x6e, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x0a,
+ 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22,
+ 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x22, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x75,
+ 0x61, 0x67, 0x65, 0x3d, 0x22, 0x4a, 0x61, 0x76, 0x61, 0x53, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x22, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
+ 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x42,
+ 0x67, 0x3d, 0x22, 0x30, 0x22, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x70, 0x61,
+ 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x22, 0x30, 0x22, 0x20, 0x79, 0x70, 0x65, 0x3d,
+ 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x6d, 0x65,
+ 0x64, 0x69, 0x61, 0x3d, 0x22, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x27, 0x74, 0x65,
+ 0x78, 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x27, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x63,
+ 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x79, 0x70, 0x65,
+ 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x72,
+ 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x74, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x3d, 0x22, 0x31, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x31,
+ 0x22, 0x20, 0x3d, 0x27, 0x2b, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x52,
+ 0x49, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x28, 0x3c, 0x6c,
+ 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x61, 0x6c, 0x74, 0x65,
+ 0x72, 0x6e, 0x61, 0x74, 0x65, 0x22, 0x20, 0x0a, 0x62, 0x6f, 0x64, 0x79, 0x2c,
+ 0x20, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2c, 0x20, 0x74,
+ 0x65, 0x78, 0x74, 0x6d, 0x65, 0x74, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
+ 0x22, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x6d,
+ 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x70, 0x6f, 0x73, 0x74, 0x22, 0x20,
+ 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x3e, 0x0a, 0x3c, 0x61, 0x20,
+ 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
+ 0x77, 0x77, 0x77, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x20, 0x72, 0x65, 0x6c, 0x3d,
+ 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x22, 0x20,
+ 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c,
+ 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6c, 0x61, 0x6e, 0x67,
+ 0x75, 0x61, 0x67, 0x65, 0x3d, 0x22, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x22, 0x3e, 0x61, 0x72, 0x69, 0x61, 0x2d, 0x68, 0x69, 0x64,
+ 0x64, 0x65, 0x6e, 0x3d, 0x22, 0x74, 0x72, 0x75, 0x65, 0x22, 0x3e, 0xc2, 0xb7,
+ 0x3c, 0x72, 0x69, 0x70, 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22,
+ 0x74, 0x65, 0x78, 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x6c, 0x3d, 0x30,
+ 0x3b, 0x7d, 0x29, 0x28, 0x29, 0x3b, 0x0a, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x7b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f,
+ 0x75, 0x6e, 0x64, 0x2d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x20, 0x75, 0x72,
+ 0x6c, 0x28, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0x3c, 0x6c, 0x69,
+ 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x09, 0x09,
+ 0x3c, 0x6c, 0x69, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
+ 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x20,
+ 0x61, 0x72, 0x69, 0x61, 0x2d, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x3d, 0x22,
+ 0x74, 0x72, 0x75, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
+ 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6c,
+ 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3d, 0x22, 0x6a, 0x61, 0x76, 0x61,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x20, 0x2f, 0x6f, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x3e, 0x0a, 0x3c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x2f, 0x64, 0x69,
+ 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
+ 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x20, 0x61, 0x72, 0x69, 0x61, 0x2d, 0x68,
+ 0x69, 0x64, 0x64, 0x65, 0x6e, 0x3d, 0x22, 0x74, 0x72, 0x65, 0x3d, 0x28, 0x6e,
+ 0x65, 0x77, 0x20, 0x44, 0x61, 0x74, 0x65, 0x29, 0x2e, 0x67, 0x65, 0x74, 0x54,
+ 0x69, 0x6d, 0x65, 0x28, 0x29, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xc3,
+ 0xaa, 0x73, 0x20, 0x28, 0x64, 0x6f, 0x20, 0x42, 0x72, 0x61, 0x73, 0x69, 0x6c,
+ 0x29, 0xd0, 0xbe, 0xd1, 0x80, 0xd0, 0xb3, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xb8,
+ 0xd0, 0xb7, 0xd0, 0xb0, 0xd1, 0x86, 0xd0, 0xb8, 0xd0, 0xb8, 0xd0, 0xb2, 0xd0,
+ 0xbe, 0xd0, 0xb7, 0xd0, 0xbc, 0xd0, 0xbe, 0xd0, 0xb6, 0xd0, 0xbd, 0xd0, 0xbe,
+ 0xd1, 0x81, 0xd1, 0x82, 0xd1, 0x8c, 0xd0, 0xbe, 0xd0, 0xb1, 0xd1, 0x80, 0xd0,
+ 0xb0, 0xd0, 0xb7, 0xd0, 0xbe, 0xd0, 0xb2, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xb8,
+ 0xd1, 0x8f, 0xd1, 0x80, 0xd0, 0xb5, 0xd0, 0xb3, 0xd0, 0xb8, 0xd1, 0x81, 0xd1,
+ 0x82, 0xd1, 0x80, 0xd0, 0xb0, 0xd1, 0x86, 0xd0, 0xb8, 0xd0, 0xb8, 0xd0, 0xb2,
+ 0xd0, 0xbe, 0xd0, 0xb7, 0xd0, 0xbc, 0xd0, 0xbe, 0xd0, 0xb6, 0xd0, 0xbd, 0xd0,
+ 0xbe, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb8, 0xd0, 0xbe, 0xd0, 0xb1, 0xd1, 0x8f,
+ 0xd0, 0xb7, 0xd0, 0xb0, 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xbb, 0xd1, 0x8c, 0xd0,
+ 0xbd, 0xd0, 0xb0, 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
+ 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x22,
+ 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x74,
+ 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x3c, 0x6d, 0x65,
+ 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d, 0x65, 0x71, 0x75, 0x69, 0x76,
+ 0x3d, 0x22, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, 0x4e, 0x22, 0x20, 0x22, 0x68,
+ 0x74, 0x74, 0x70, 0x3a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x78, 0x6d, 0x6c,
+ 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
+ 0x77, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, 0x2f, 0x44, 0x54, 0x44, 0x20,
+ 0x58, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x54, 0x44, 0x54,
+ 0x44, 0x2f, 0x78, 0x68, 0x74, 0x6d, 0x6c, 0x31, 0x2d, 0x74, 0x72, 0x61, 0x6e,
+ 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x77, 0x77, 0x77,
+ 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x78, 0x68,
+ 0x74, 0x6d, 0x6c, 0x31, 0x2f, 0x70, 0x65, 0x20, 0x3d, 0x20, 0x27, 0x74, 0x65,
+ 0x78, 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x27, 0x3b, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
+ 0x22, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x70,
+ 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x69, 0x6e, 0x73,
+ 0x65, 0x72, 0x74, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x3c, 0x69, 0x6e, 0x70,
+ 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x68, 0x69, 0x64, 0x64,
+ 0x65, 0x6e, 0x22, 0x20, 0x6e, 0x61, 0x6a, 0x73, 0x22, 0x20, 0x74, 0x79, 0x70,
+ 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73,
+ 0x63, 0x72, 0x69, 0x28, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x29,
+ 0x2e, 0x72, 0x65, 0x61, 0x64, 0x79, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22,
+ 0x74, 0x65, 0x78, 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x69, 0x6d, 0x61,
+ 0x67, 0x65, 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22,
+ 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x55, 0x41, 0x2d, 0x43, 0x6f, 0x6d,
+ 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x22, 0x20, 0x63, 0x6f, 0x6e, 0x74,
+ 0x65, 0x6e, 0x74, 0x3d, 0x74, 0x6d, 0x6c, 0x3b, 0x20, 0x63, 0x68, 0x61, 0x72,
+ 0x73, 0x65, 0x74, 0x3d, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x22, 0x20, 0x2f, 0x3e,
+ 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x68,
+ 0x6f, 0x72, 0x74, 0x63, 0x75, 0x74, 0x20, 0x69, 0x63, 0x6f, 0x6e, 0x3c, 0x6c,
+ 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x74, 0x79, 0x6c,
+ 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x22, 0x20, 0x3c, 0x2f, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20,
+ 0x74, 0x79, 0x70, 0x65, 0x3d, 0x3d, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
+ 0x6e, 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6c, 0x65, 0x6d,
+ 0x65, 0x6e, 0x3c, 0x61, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22,
+ 0x5f, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
+ 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74,
+ 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x69, 0x6e, 0x70, 0x75,
+ 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x22,
+ 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x61, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x20,
+ 0x3d, 0x20, 0x27, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73,
+ 0x63, 0x72, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d,
+ 0x22, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x22, 0x20, 0x6e, 0x61, 0x6d, 0x65,
+ 0x68, 0x74, 0x6d, 0x6c, 0x3b, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74,
+ 0x3d, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x22, 0x20, 0x2f, 0x3e, 0x64, 0x74, 0x64,
+ 0x22, 0x3e, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x78, 0x6d, 0x6c, 0x6e,
+ 0x73, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43,
+ 0x2f, 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x34, 0x2e,
+ 0x30, 0x31, 0x20, 0x54, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x54, 0x61, 0x67,
+ 0x4e, 0x61, 0x6d, 0x65, 0x28, 0x27, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x27,
+ 0x29, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22,
+ 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x22, 0x20, 0x6e, 0x61, 0x6d, 0x3c, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74,
+ 0x65, 0x78, 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x22, 0x20, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a,
+ 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x22, 0x3e, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
+ 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x42, 0x79, 0x49, 0x64, 0x28, 0x3d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
+ 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x28, 0x27, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x27, 0x74, 0x65,
+ 0x78, 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22,
+ 0x74, 0x65, 0x78, 0x74, 0x22, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x64,
+ 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x42,
+ 0x79, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x28, 0x73, 0x6e, 0x69, 0x63,
+ 0x61, 0x6c, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74,
+ 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x43, 0x2f, 0x2f, 0x44, 0x54,
+ 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54,
+ 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x3c, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x20,
+ 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73,
+ 0x73, 0x22, 0x3e, 0x0a, 0x0a, 0x3c, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x20, 0x74,
+ 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73,
+ 0x22, 0x3e, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x64, 0x74, 0x64, 0x22, 0x3e,
+ 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3d,
+ 0x68, 0x74, 0x74, 0x70, 0x2d, 0x65, 0x71, 0x75, 0x69, 0x76, 0x3d, 0x22, 0x43,
+ 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x64, 0x69,
+ 0x6e, 0x67, 0x3d, 0x22, 0x30, 0x22, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x70,
+ 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x22, 0x30, 0x22, 0x68, 0x74, 0x6d, 0x6c,
+ 0x3b, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x75, 0x74, 0x66,
+ 0x2d, 0x38, 0x22, 0x20, 0x2f, 0x3e, 0x0a, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65,
+ 0x3d, 0x22, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x6e, 0x6f, 0x6e,
+ 0x65, 0x3b, 0x22, 0x3e, 0x3c, 0x3c, 0x6c, 0x69, 0x3e, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
+ 0x77, 0x77, 0x2e, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x27, 0x74, 0x65, 0x78,
+ 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x27,
+ 0x3e, 0xd0, 0xb4, 0xd0, 0xb5, 0xd1, 0x8f, 0xd1, 0x82, 0xd0, 0xb5, 0xd0, 0xbb,
+ 0xd1, 0x8c, 0xd0, 0xbd, 0xd0, 0xbe, 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb8, 0xd1,
+ 0x81, 0xd0, 0xbe, 0xd0, 0xbe, 0xd1, 0x82, 0xd0, 0xb2, 0xd0, 0xb5, 0xd1, 0x82,
+ 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb2, 0xd0, 0xb8, 0xd0, 0xb8, 0xd0, 0xbf, 0xd1,
+ 0x80, 0xd0, 0xbe, 0xd0, 0xb8, 0xd0, 0xb7, 0xd0, 0xb2, 0xd0, 0xbe, 0xd0, 0xb4,
+ 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb2, 0xd0, 0xb0, 0xd0, 0xb1, 0xd0, 0xb5, 0xd0,
+ 0xb7, 0xd0, 0xbe, 0xd0, 0xbf, 0xd0, 0xb0, 0xd1, 0x81, 0xd0, 0xbd, 0xd0, 0xbe,
+ 0xd1, 0x81, 0xd1, 0x82, 0xd0, 0xb8, 0xe0, 0xa4, 0xaa, 0xe0, 0xa5, 0x81, 0xe0,
+ 0xa4, 0xb8, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4,
+ 0x95, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0x82,
+ 0xe0, 0xa4, 0x97, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa5, 0x87, 0xe0,
+ 0xa4, 0xb8, 0xe0, 0xa4, 0x89, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4,
+ 0xb9, 0xe0, 0xa5, 0x8b, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0xa8, 0xe0, 0xa5, 0x87,
+ 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa7, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0xa8, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0xad, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0xab, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb8,
+ 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0x82, 0xe0, 0xa4, 0x97, 0xe0, 0xa4, 0xb8, 0xe0,
+ 0xa5, 0x81, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4,
+ 0xb7, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x89,
+ 0xe0, 0xa4, 0xaa, 0xe0, 0xa5, 0x80, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xbe, 0xe0,
+ 0xa4, 0x87, 0xe0, 0xa4, 0x9f, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbf, 0xe0, 0xa4,
+ 0x9c, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0x9e, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xaa,
+ 0xe0, 0xa4, 0xa8, 0xe0, 0xa4, 0x95, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4, 0xb0, 0xe0,
+ 0xa5, 0x8d, 0xe0, 0xa4, 0xb0, 0xe0, 0xa4, 0xb5, 0xe0, 0xa4, 0xbe, 0xe0, 0xa4,
+ 0x88, 0xe0, 0xa4, 0xb8, 0xe0, 0xa4, 0x95, 0xe0, 0xa5, 0x8d, 0xe0, 0xa4, 0xb0,
+ 0xe0, 0xa4, 0xbf, 0xe0, 0xa4, 0xaf, 0xe0, 0xa4, 0xa4, 0xe0, 0xa4, 0xbe,
+};
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/dictionary.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/dictionary.h
new file mode 100644
index 00000000000..c9c6362da8d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/dictionary.h
@@ -0,0 +1,41 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Collection of static dictionary words.
+
+#ifndef BROTLI_ENC_DICTIONARY_H_
+#define BROTLI_ENC_DICTIONARY_H_
+
+#include "./types.h"
+
+// No namespace, use same identifier as for the C decoder.
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+extern const uint8_t kBrotliDictionary[122784];
+
+static const uint32_t kBrotliDictionaryOffsetsByLength[] = {
+ 0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032,
+ 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,
+ 115968, 118528, 119872, 121280, 122016,
+};
+
+static const uint8_t kBrotliDictionarySizeBitsByLength[] = {
+ 0, 0, 0, 0, 10, 10, 11, 11, 10, 10,
+ 10, 10, 10, 9, 9, 8, 7, 7, 8, 7,
+ 7, 6, 6, 5, 5,
+};
+
+static const int kBrotliMinDictionaryWordLength = 4;
+static const int kBrotliMaxDictionaryWordLength = 24;
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
+
+#endif // BROTLI_ENC_DICTIONARY_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/dictionary_hash.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/dictionary_hash.h
new file mode 100644
index 00000000000..afbb1f1e678
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/dictionary_hash.h
@@ -0,0 +1,4117 @@
+/* Copyright 2015 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Hash table on the 4-byte prefixes of static dictionary words.
+
+#ifndef BROTLI_ENC_DICTIONARY_HASH_H_
+#define BROTLI_ENC_DICTIONARY_HASH_H_
+
+#include "./types.h"
+
+namespace brotli {
+
+static const uint16_t kStaticDictionaryHash[] = {
+ 0x7d48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5564, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9e26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb2e6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x050c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1364, 0x0116, 0x5ca5, 0x0000, 0x4e04,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x084e, 0x3ee6, 0x0000, 0x0000,
+ 0x0000, 0x3865, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6867, 0x08cd, 0x0000, 0x0000, 0x4364, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e26,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x59c8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4107, 0x0000, 0x85c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xbd66, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x09cf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4c4c, 0x0000, 0x0000, 0x5dc4,
+ 0x0000, 0x0000, 0x0000, 0x2664, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7885, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7ce6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x50aa, 0x0964,
+ 0x0000, 0x5125, 0x068d, 0x2347, 0x0000, 0x1904, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xcaa7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1a69, 0x1c26, 0x0000, 0x0000, 0x55e8, 0x59c7, 0x0000, 0x0000,
+ 0x0dc9, 0x0000, 0x0748, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2b26, 0x0000, 0x0000, 0x25a9, 0x0000, 0x0000, 0x0000,
+ 0x196b, 0x0000, 0x0000, 0x9046, 0x5448, 0xf3a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2066,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9f67,
+ 0x0000, 0x0000, 0x0000, 0x99e6, 0x1fc8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x22ab, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1f05, 0x0000, 0x0000, 0x6409, 0x0000, 0x0000, 0x0000,
+ 0x03a8, 0x0e84, 0x0c8d, 0x3d47, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xcd27, 0x0000, 0x43e5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0528, 0x16a5, 0x0000, 0x5225, 0x0000, 0x0000, 0x1948, 0x0327,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x34e9, 0x0000, 0x0000, 0x0000, 0x0e28, 0x0000,
+ 0x0000, 0x0000, 0x73ea, 0x7864, 0x0000, 0x7a05, 0x0000, 0x19c4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xfa46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5706, 0x0000, 0x9246,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1c48, 0x01a7, 0x0000, 0x6024,
+ 0x54c9, 0x44e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0729, 0x0000, 0x0000, 0x0000, 0x0148, 0x1785, 0x0000, 0x0000,
+ 0x0000, 0x4e06, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xf2a7, 0x1052, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2f44, 0x21a9, 0x0000, 0x0000, 0x4204, 0x0000, 0x8f46,
+ 0x0000, 0x0000, 0x0000, 0x8a26, 0x0000, 0xca06, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5206, 0x0000, 0xf286,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x15a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3925, 0x2ac8, 0x6547, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4d89, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x78e8, 0x0be6, 0x37ea, 0x32c6, 0x0000, 0x0000, 0x0000, 0x3ba4,
+ 0x0000, 0x9e86, 0x7608, 0xf2a6, 0x0000, 0x0000, 0x0000, 0x4ea4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2ee5, 0x0000, 0x0000,
+ 0x0000, 0xcc86, 0x0000, 0x0000, 0x0000, 0x0000, 0x60ca, 0x0000,
+ 0x002c, 0x8147, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6704,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0ec5, 0x0000, 0x0000,
+ 0x4608, 0x2507, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7e29, 0x6fc5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb846, 0x2dcb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x09e8, 0xd767, 0x0000, 0x0000,
+ 0x190a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xdbe6, 0x2e8a, 0x0000, 0x0211, 0x0000, 0x75e8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2045, 0x0000, 0x0000, 0x7088, 0xe5e6, 0x5869, 0x03c5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xfa87, 0x0000, 0x0000, 0x014b, 0x0e64,
+ 0x0000, 0x0645, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x410a, 0x0025, 0x0000, 0x5c46,
+ 0x0c48, 0x3c45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x57ab, 0x0045, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x45a8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2b69, 0x0000, 0x0000, 0x0000, 0x0000, 0x4785, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6806,
+ 0x0000, 0x0000, 0x63a8, 0x6527, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4205,
+ 0x0000, 0x0000, 0x0000, 0x6ba6, 0x0000, 0x0000, 0x24ca, 0x0000,
+ 0x0000, 0x0000, 0x0db4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x9466, 0x2449, 0x2145, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x062a, 0x0644, 0x5d88, 0x0000, 0x0000, 0x3a44,
+ 0x31ed, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2f49, 0x0000, 0x40e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5364,
+ 0x2be8, 0x70c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x168c, 0x0000, 0x0000, 0x6ca4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2084,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x416c, 0x0485, 0x0000, 0x0000, 0x496a, 0x3fc4,
+ 0x652a, 0x03a7, 0x208d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4746, 0x0000, 0x46a6, 0x0000, 0xb706,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0153, 0x0000,
+ 0x0000, 0x6264, 0x31ec, 0x2f86, 0x1909, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4084, 0x0000, 0x6984, 0x6eeb, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x058c, 0x0000, 0x0000, 0x0000,
+ 0x2628, 0xcee7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x624b, 0x0144, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xfde6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5585, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb906,
+ 0x0000, 0x0000, 0x0000, 0x0366, 0x0000, 0x0000, 0x0000, 0x3166,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x65a4, 0x3fe8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0711, 0x0000, 0x0000, 0x0000,
+ 0x19c9, 0x3e06, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x71a4,
+ 0x0000, 0x6f64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x55e4, 0x0000, 0x0000, 0x0000, 0xa7c6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x140d, 0x0526, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd6c6,
+ 0x6148, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xc946, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0e65, 0x0000, 0x0000, 0x0000, 0x0000, 0x274e, 0x24c4,
+ 0x0000, 0x0000, 0x0000, 0x7ae4, 0x164c, 0x1825, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x15c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6a08, 0xe086, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1bac, 0x0000, 0x55e9, 0xcf86, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x20cd, 0x0000, 0x0000, 0x1665, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0844, 0x0000, 0x60a6, 0x0000, 0x2c07,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x046d, 0x0000, 0x1309, 0x0000, 0x0000, 0x95a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x460c, 0x0000, 0x0000, 0x4685, 0x0000, 0x0000,
+ 0x0000, 0x63a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4586, 0x0000, 0x6666, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x59e8, 0x4407, 0x4fa8, 0x00a4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0ca7, 0x0000, 0xb427, 0x0000, 0x0000,
+ 0x0000, 0x6fa4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1dc5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xa206, 0x0000, 0x0000, 0x7928, 0xd826,
+ 0x2748, 0x0784, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8f06,
+ 0x0000, 0x8f67, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x36aa, 0xe7a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6785, 0x0000, 0x1607,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3649, 0x04e5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x13e7, 0x0000, 0x0000,
+ 0x0000, 0x70c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x21c6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6429, 0x4584, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3404, 0x026c, 0x18a5, 0x2e2b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0388, 0x0447,
+ 0x0000, 0x5ea5, 0x0000, 0x0000, 0x7048, 0xc227, 0x0000, 0x5a25,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7e88, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x89c7, 0x0000, 0x7044, 0x16ea, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1109, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1eed, 0x22a5, 0x0000, 0x0000, 0x0000, 0x3664, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xa3e6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1a6e, 0x36a5, 0x0000, 0x0000, 0x0000, 0x0387,
+ 0x0000, 0x0000, 0x5dca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb86,
+ 0x0000, 0x57c4, 0x0000, 0x6505, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5c68, 0x14c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x59e9, 0x1545, 0x3e89, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xbb86, 0x28e9, 0x0000, 0x0000, 0x3844,
+ 0x0000, 0x0000, 0x0000, 0xa4c7, 0x0000, 0x0000, 0x0000, 0xc846,
+ 0x0000, 0x0000, 0x296a, 0x5e44, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xab06, 0x0000, 0x0000, 0x45aa, 0x0000, 0x0000, 0x0000,
+ 0x63e8, 0x6a45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x718a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0272, 0x07c4, 0x396c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe146,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xaea6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f08, 0x1dc7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xa586, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4b48, 0x1924, 0x0000, 0x0000,
+ 0x1488, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4ce5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9b67, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7908, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6e46, 0x0000, 0x0000, 0x0000, 0x7164, 0x292a, 0x0c85,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1604, 0x0348, 0x0127, 0x0000, 0x0000,
+ 0x2128, 0x2006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5064, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0fea, 0x4c46,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x79a8, 0xfa26, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x414c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x452a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc5c6,
+ 0x0000, 0xc547, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6366, 0x0000, 0x0000,
+ 0x0000, 0x3607, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0a88, 0x0fc7, 0x0000, 0x0000, 0x0000, 0x0000, 0x62c8, 0x0000,
+ 0x2f2c, 0x0806, 0x0000, 0xbf26, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4249, 0xe827, 0x436b, 0x8a07, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7a2b, 0x0000, 0x0000, 0x0000, 0x0449, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0308, 0x0347, 0x0000, 0x0000, 0x72ca, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x16e8, 0x2f66, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6305, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf007,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6066, 0x0000, 0x0000, 0x0000, 0xf767, 0x0000, 0x70a4,
+ 0x1fce, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x118e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3708, 0x04a4, 0x0000, 0x3f84, 0x0000, 0x0000,
+ 0x0000, 0x4025, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0114, 0x0000, 0x0000, 0x42a4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e0c, 0x7305,
+ 0x0000, 0x8307, 0x0000, 0x1325, 0x0000, 0x0000, 0x30ea, 0x0000,
+ 0x0000, 0xf407, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0fce, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5006, 0x0000, 0x3c64, 0x08a9, 0xca07, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5bc7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3c0a, 0x0000, 0x3de9, 0x0000, 0x3b09, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d44,
+ 0x1ca9, 0x0000, 0x0000, 0x0000, 0x0000, 0x7686, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7e2b, 0x5d84,
+ 0x0000, 0x4566, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1828, 0x0000, 0x51a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7b04, 0x0000, 0x0000,
+ 0x0000, 0x1585, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0a6d, 0xc406, 0x0000, 0x0000, 0x300b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1489, 0x6e07,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2de6, 0x0f32, 0x0000, 0x0000, 0x6784,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc0a6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2ae5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4629, 0x0727, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x73c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x6769, 0x0000,
+ 0x1848, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x700b, 0x9c27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc9c6,
+ 0x0000, 0x0000, 0x0000, 0x6b87, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x788b, 0x0cc4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7064, 0x0000, 0x4724,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6368, 0xffa6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0d09, 0x0686, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4b84, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6168, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0413, 0x0000, 0x0000, 0x0000, 0x0000, 0x3dc6, 0x0000, 0x54a6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f87,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7ec6, 0x0000, 0x77a6, 0x0000, 0x0000, 0x4eca, 0x26c6,
+ 0x0000, 0x0000, 0x0000, 0x4747, 0x0000, 0x0000, 0x3828, 0x0000,
+ 0x0808, 0x4327, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1e84, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x57ca, 0xce46, 0x0634, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2a49, 0x0000, 0x0000, 0x0000, 0x0000, 0x9fe6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7005, 0x0000, 0x0000,
+ 0x1652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6509, 0x56e6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4368, 0x8ba7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x202c, 0x0000,
+ 0x7d6c, 0x0000, 0x0000, 0x0000, 0x002b, 0x3806, 0x0000, 0x4085,
+ 0x0000, 0x0000, 0x780c, 0x0000, 0x0fac, 0x0085, 0x0000, 0x9e87,
+ 0x03cb, 0x5d86, 0x0000, 0x0000, 0x6a8b, 0x0000, 0x0000, 0x0000,
+ 0x00cc, 0x0000, 0x0000, 0x6a04, 0x1d8c, 0xad27, 0x6bc8, 0xe266,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5748, 0x6465, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c44, 0x7c0b, 0x0000,
+ 0x0000, 0x6dc6, 0x0000, 0xe6e7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2fe5, 0x0000, 0xaf86, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7b48, 0x0000, 0x2b6a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a09, 0x4787, 0x0000, 0xb067, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x080b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4bc7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x578b, 0x5d87, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2daa, 0x0000, 0x0000, 0x0fe5, 0x0000, 0x0000,
+ 0x0a6c, 0x18c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6c0a, 0x06e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ac8, 0xdb06,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8547, 0x0000, 0x5f85,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x556b, 0x0000, 0x44ca, 0x26a6,
+ 0x0000, 0x0000, 0x6d48, 0x9786, 0x0000, 0x0000, 0x0000, 0xaa86,
+ 0x0000, 0x7b47, 0x2faa, 0x5a66, 0x0000, 0x0000, 0x0000, 0xc4a7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8026, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc2e7, 0x0000, 0x0000, 0x0000, 0x0000, 0x3daa, 0x10a7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x128a, 0x0ee6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4328, 0x01c5, 0x43ab, 0x0000,
+ 0x4f68, 0x0fc4, 0x0000, 0x0000, 0x0000, 0x3de4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6ba9, 0x7cc4, 0x7e28, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2ceb, 0x2e06, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x260a, 0xc527, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8a66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7426,
+ 0x0000, 0x0000, 0x0000, 0x8ec7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2429, 0x15e6, 0x0000, 0x3605, 0x0000, 0x1b67, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6227, 0x0000, 0x0000, 0x4a6b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0a0c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7465, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa566,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x244d, 0x0000, 0x45e8, 0xdae6,
+ 0x0fed, 0x0000, 0x0000, 0x0000, 0x74cb, 0x91e7, 0x0000, 0x7867,
+ 0x0000, 0x2086, 0x0000, 0x0000, 0x0000, 0x47a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4889, 0xd326,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9186, 0x0000, 0x0000, 0x7ac9, 0xf046, 0x0000, 0x07e6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6325, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0865, 0x62c9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30e4,
+ 0x3769, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x21e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8e86, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2a89, 0x2587, 0x0000, 0x7027, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6f4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x6645, 0x282b, 0x06a5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3a84, 0x0000, 0x1e67, 0x0000, 0x6cc6, 0x0000, 0x0000,
+ 0x0000, 0xdca6, 0x0f34, 0x0000, 0x0000, 0x0000, 0x168a, 0x40c7,
+ 0x0000, 0x66c5, 0x346e, 0x4f44, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7046, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x38c8, 0x0486, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x64c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa5c6, 0x0000, 0x0d04,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2087, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x43c9, 0x05a7,
+ 0x0000, 0x0000, 0x20eb, 0xbd86, 0x054f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3a8a, 0x0000, 0x7da8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x240e, 0x0ae7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3ec9, 0x7b87, 0x10ad, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x11a7, 0x0000, 0x0000, 0x6d08, 0xe646, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20a9, 0x4d64,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x17a8, 0x1ec5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x54c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x23a8, 0x0465,
+ 0x0000, 0x40a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x438c, 0x1ac6, 0x5368, 0x0000,
+ 0x094c, 0x0000, 0x0000, 0x0fa7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f25, 0x106a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x29a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa747, 0x0bce, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3825, 0x0000, 0x50c5, 0x0ce8, 0x0ac7,
+ 0x502a, 0xfd87, 0x0000, 0x0000, 0x0000, 0x0026, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6ca6, 0x0af2, 0x22a6, 0x0eae, 0x04e7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x754b, 0x2526,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x45c8, 0x3a07, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5b6c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc906,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb2a6,
+ 0x0000, 0x0000, 0x5bab, 0x7e47, 0x0000, 0x0000, 0x2a4a, 0xcf07,
+ 0x0000, 0x0000, 0x0000, 0x81c6, 0x7a68, 0xfb46, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7da6, 0x0000, 0x0000,
+ 0x0f33, 0x0000, 0x0000, 0x0000, 0x1b69, 0x0285, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6d0b, 0xb407, 0x0000, 0x0000,
+ 0x0000, 0x5567, 0x0000, 0x85c6, 0x0000, 0x0000, 0x414b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x36e4, 0x53a8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9ba6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x9846, 0x0000, 0x0000, 0x4468, 0x1d24,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3c44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6ec4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6365, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2e67,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4dc7, 0x0000, 0x4e27,
+ 0x0000, 0x0000, 0x0000, 0x2a67, 0x03af, 0x0000, 0x0000, 0x2a45,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x104a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x266c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xff87, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2689, 0x6046, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9e47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3204, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x564b, 0x5c67, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7bc6, 0x0000, 0x0000,
+ 0x0000, 0xe4e7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4ca4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f65, 0x0000, 0x6dc4,
+ 0x0000, 0x0000, 0x0000, 0x7a24, 0x0000, 0x0c84, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x39e6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4deb, 0x27c6, 0x0000, 0x0000,
+ 0x2508, 0x39e5, 0x112e, 0x0000, 0x0000, 0x38c4, 0x0000, 0x0000,
+ 0x0000, 0xbee7, 0x0751, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x024d, 0x0605, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5b25, 0x0000, 0x0000, 0x0000, 0x3745, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0510, 0x3826, 0x0000, 0x6aa4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1c6c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xba66, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x142c, 0x06e5,
+ 0x0000, 0x3845, 0x0000, 0x92c6, 0x07ca, 0x0000, 0x19ec, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6ca7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0a08, 0x1aa4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2c48, 0x6687, 0x0000, 0x0000, 0x5d68, 0x0000, 0x0000, 0x0000,
+ 0x7748, 0x0000, 0x0000, 0x8626, 0x0000, 0x4587, 0x0000, 0x0000,
+ 0x0000, 0x5685, 0x0000, 0x17e6, 0x0000, 0x6484, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x67e8, 0x1446,
+ 0x0000, 0x0000, 0x0476, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x9a67, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9a46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0c0d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x12b2, 0x0000, 0x0000, 0x0000,
+ 0x70c9, 0x1984, 0x0000, 0x0000, 0x6828, 0x0000, 0x23e9, 0x2dc7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7c08, 0xfc86,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2c85, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6206, 0x0000, 0x0000, 0x46e9, 0x4ec7,
+ 0x0000, 0x0000, 0x0000, 0x4366, 0x0000, 0x0000, 0x036e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5e66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x65cb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7b68, 0x0000, 0x0000, 0x1fe7,
+ 0x5f2a, 0x1844, 0x0000, 0x87c6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7f08, 0x0000, 0x0000, 0xae87, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4645, 0x21e9, 0x7226, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x280b, 0x1326, 0x05ac, 0x3b67,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5926,
+ 0x0000, 0x28e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4b89, 0x4506, 0x006b, 0x2ce6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6aa9, 0x0a05, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xfc06, 0x00c8, 0x6ee5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x79e8, 0x0000, 0x782a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7289, 0xec66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c89, 0x0ca5,
+ 0x30ca, 0x5887, 0x0000, 0x0000, 0x0000, 0x4965, 0x7ae8, 0x4007,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x50a6, 0x0000, 0x0000, 0x0000, 0x6a66,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e44, 0x1188, 0x1b27,
+ 0x0000, 0x0000, 0x0000, 0xb506, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7125, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5068, 0x0d27, 0x0000, 0x6306,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0716, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x42e5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xda87,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e45, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0b71, 0x0000, 0x0000, 0xc3a6, 0x0000, 0x0b66,
+ 0x630c, 0x7564, 0x0073, 0x2e46, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0bf0, 0x0000, 0x0000, 0x0000, 0x0000, 0x44e7, 0x00ef, 0x4d67,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8fc6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x53e7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f04, 0x2e0a, 0x12a4,
+ 0x0000, 0x0000, 0x0d28, 0x8dc7, 0x0000, 0x7ae7, 0x0000, 0x0000,
+ 0x3949, 0x03e4, 0x0000, 0x5066, 0x0000, 0x0000, 0x0000, 0x2704,
+ 0x0000, 0x5c85, 0x0000, 0x0000, 0x0000, 0xcd47, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1d84, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0767, 0x088a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6c6b, 0x6367, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x794c, 0xf726, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8f86, 0x0000, 0x60e4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7948, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x532a, 0x08e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x676b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3be4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0c68, 0x4be7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xf506, 0x0000, 0x0000, 0x0000, 0x6324,
+ 0x0000, 0x0000, 0x6ceb, 0x0524, 0x0000, 0x0000, 0x1e2c, 0x0bc7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1a29, 0x0000, 0x0000, 0xbb26,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0c45, 0x0000, 0x0000, 0x0000, 0x39e4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x246e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7b05, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x19a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x19a9, 0x0544, 0x0000, 0x6426, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4f64, 0x0000, 0x0000, 0x42ab, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2e64, 0x0000, 0xa046,
+ 0x0000, 0x0000, 0x0000, 0x6725, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2ca7, 0x6de9, 0x3a66,
+ 0x0000, 0x27a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7386, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a28, 0xe066,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6fea, 0xe0e6, 0x056b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe387, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x41a5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0dc6,
+ 0x0000, 0x3da5, 0x0000, 0x15c4, 0x3428, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x48e9, 0x5ba7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3c2d, 0x1ae5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3ba8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2685, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2528, 0x0fc5, 0x0000, 0x0000, 0x2d2b, 0xc1e7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6ce8, 0xe1e6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa367, 0x0000, 0x55a4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x63a5,
+ 0x0000, 0x6b46, 0x0000, 0x46a5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x364a, 0x1f84, 0x6749, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x62e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x3faa, 0x1ce5,
+ 0x164a, 0x4b27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0570, 0xc6e7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd267, 0x0000, 0x0000, 0x0000, 0x0000, 0x05ab, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8c07, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4589, 0x3dc5, 0x0000, 0x31c4,
+ 0x0000, 0x0000, 0x0000, 0x80c7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x150d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x79a7, 0x0000, 0x5044,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc9e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2f4d, 0x4a47, 0x0000, 0x88a7, 0x0000, 0x54e4,
+ 0x0e10, 0x0000, 0x0000, 0x0000, 0x0000, 0xba86, 0x4388, 0xabc7,
+ 0x5949, 0xb9c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x6728, 0xbce6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7706, 0x0000, 0x0000,
+ 0x5c08, 0x11e5, 0x0000, 0x5784, 0x0000, 0xc086, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc2a7, 0x0000, 0x0000, 0x0000, 0x6b85, 0x7bcb, 0x0007,
+ 0x0000, 0x0000, 0x64eb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1069, 0x4065, 0x0000, 0x50c4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0ea9, 0x5b07, 0x3f88, 0x0f26, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2caa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1da5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xdf07, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5924,
+ 0x2b8a, 0xc006, 0x0000, 0x5c47, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3645, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2dca, 0xeaa7, 0x04ea, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4884, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6d29, 0x0000, 0x0000, 0x0000, 0x0000, 0x1567,
+ 0x0000, 0x4e26, 0x44c8, 0x0d67, 0x2aec, 0x75e4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6005, 0x000e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x63e4, 0x0000, 0x0000,
+ 0x0000, 0x6fc4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xd127, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8386,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2206,
+ 0x0000, 0x3724, 0x0000, 0x0000, 0x0074, 0x0124, 0x0000, 0x0000,
+ 0x0000, 0x93c7, 0x0000, 0xa846, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5548, 0x0000, 0x0000, 0x7d86,
+ 0x030f, 0x0000, 0x0000, 0x7906, 0x0000, 0x0000, 0x0000, 0x0044,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x172c, 0x0000,
+ 0x0000, 0x0000, 0x4849, 0x3b47, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0e2e, 0x4245, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4585, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0208, 0xa4a6, 0x0000, 0x0000, 0x0c32, 0x0000, 0x0000, 0x0000,
+ 0x57ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6f86, 0x0000, 0x0000, 0x0000, 0xc466, 0x0000, 0x0000,
+ 0x3549, 0x1746, 0x0000, 0x89a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7529, 0x4924, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x508b, 0x2467,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5da9, 0x0000, 0x1449, 0x0000,
+ 0x0000, 0x2fa4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5f46, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4e89, 0x02a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x72eb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4f2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x2987, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xba27,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6804, 0x31c8, 0x0000, 0x50a8, 0x0000, 0x0000, 0x0000,
+ 0x01b0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0286, 0x0000, 0x6404, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xf926, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6028, 0x0000, 0x0000, 0x0000, 0x532b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb246,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x078b, 0x0000, 0x0000, 0x0000,
+ 0x5029, 0xea47, 0x0000, 0x5086, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xdba7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7527, 0x0000, 0xce87, 0x0000, 0x51c6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x41e7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1c45, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb9c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x28a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa826, 0x0000, 0x0000,
+ 0x0b72, 0x0000, 0x3288, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x79a5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9307,
+ 0x0000, 0x44a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7a08, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x02b0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0670, 0x0000, 0x0000, 0x0000, 0x0000, 0x2747, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0092, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x18c9, 0x00c7, 0x0000, 0x88a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xde07, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbf06,
+ 0x0000, 0x3464, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0989, 0x1144, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4fcc, 0x03a5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb147, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd5c6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x428c, 0x02e5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6bc5, 0x0000, 0x0000, 0x764a, 0x4a06,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x08c8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6589, 0x0000, 0x0000, 0x0000,
+ 0x098b, 0x0000, 0x0000, 0x7b86, 0x0000, 0x3746, 0x0000, 0x0000,
+ 0x0000, 0x7007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3c68, 0x0000, 0x0000, 0x0000, 0x0000, 0xd5a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0ef3, 0x0000, 0x0000, 0x0000,
+ 0x0eac, 0x0000, 0x26a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a8a, 0x7a07, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6004, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x40c4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6be9, 0x0000,
+ 0x0000, 0x0000, 0x0310, 0x1227, 0x7f8c, 0x0000, 0x0000, 0xf806,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5246,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0d4c, 0xe466, 0x0000, 0x7e45, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x48ca, 0x0ae5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2164,
+ 0x0000, 0x0000, 0x0000, 0x57e5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3e09, 0x0000, 0x0000, 0x0000, 0x0000, 0x8c27,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1f2a, 0x4624, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5f04, 0x0000, 0x0000, 0x1349, 0x0000,
+ 0x0000, 0x0000, 0x1fe8, 0x0000, 0x346c, 0x2864, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2e04, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4148, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x44e8, 0x4647,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0b89, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x238c, 0x41a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x77cb, 0x0000, 0x0000, 0x4a45,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00cd, 0x3be6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07b1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6688, 0xcd26,
+ 0x0000, 0xc286, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x25c4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1286,
+ 0x0000, 0x0000, 0x5489, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd146, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x164b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0bca, 0x30a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b68, 0x0106,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0e09, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d66, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xda47, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0307, 0x0000, 0xa906, 0x13ca, 0xbf47,
+ 0x0000, 0x0000, 0x59ca, 0x1045, 0x230b, 0xaf26, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xf347, 0x0110, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc8e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6e4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3425, 0x0000, 0x0000,
+ 0x0000, 0xc7a7, 0x4f29, 0x3625, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0249, 0x1d46,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5508, 0xf3c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x1f2b, 0x00a6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9806, 0x0000, 0xdda6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3fa8, 0x1687, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7d44, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7464, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5d6c, 0x75e7, 0x0000, 0xe5a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5026, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2309, 0x0000, 0x0000, 0x0000, 0x00b7, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x090a, 0x4425, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5cc4,
+ 0x0000, 0x0000, 0x1fcb, 0x12e7, 0x6d0a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7326, 0x0000, 0x0000, 0x40a8, 0x6827, 0x0000, 0xd207,
+ 0x0000, 0x0000, 0x3688, 0x1f67, 0x4908, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x030e, 0x3e85, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1872, 0xdde6, 0x4048, 0x30a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ce4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x248b, 0x0000, 0x0000, 0x0000,
+ 0x1c69, 0xa067, 0x60cc, 0xe1a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0eec, 0x0a25,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7229, 0xeec6,
+ 0x0000, 0x0000, 0x0000, 0xe447, 0x3d4b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9146, 0x5788, 0x03c7,
+ 0x0000, 0x0000, 0x0000, 0x5a26, 0x68ea, 0x0000, 0x0000, 0x0000,
+ 0x4d29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1528, 0x3586, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xce06, 0x4faa, 0x96a7, 0x0000, 0x0000, 0x0000, 0xc787,
+ 0x0000, 0x0000, 0x0088, 0x2144, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6bc4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0213, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x22e8, 0x13a7, 0x30e8, 0x4b86,
+ 0x0000, 0x0000, 0x592b, 0x7627, 0x6daa, 0x79a4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6b69, 0x46e4, 0x4e88, 0xe6c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f45, 0x0000, 0x0000, 0x17ed, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2545, 0x0000, 0x0000, 0x5fe9, 0x71a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6364, 0x0000, 0x0000,
+ 0x25ab, 0x0000, 0x0000, 0xf647, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9a86, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x508c, 0x2e27, 0x01f3, 0x0000,
+ 0x1408, 0x08e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb4e6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5bea, 0x9ce6, 0x0988, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b46, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x692a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6886, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xcac7, 0x0000, 0x0000, 0x5bec, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc826, 0x6489, 0xadc6, 0x314e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0c06, 0x0000, 0x2425, 0x0000, 0x0000,
+ 0x0468, 0x5607, 0x0000, 0x0000, 0x0000, 0x5366, 0x0000, 0x4024,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe46,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5804, 0x0000, 0xbe86,
+ 0x0000, 0x86c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2645, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x35e5, 0x0000, 0x9587, 0x0000, 0x0000, 0x06ca, 0x0000,
+ 0x01e9, 0xb507, 0x0000, 0xb146, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7166, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x184c, 0xdce6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6905, 0x0000, 0x7086, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb386, 0x0000, 0x0000, 0x0000, 0x0000, 0x5049, 0xc307,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0bcb, 0x3046,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x67cb, 0x3407, 0x0000, 0x0000, 0x028d, 0x5b67,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x572c, 0x0000, 0x0000, 0x52c4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6ba4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6ce6, 0x53eb, 0x6c05,
+ 0x0000, 0x7405, 0x00ed, 0x0000, 0x2988, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x83e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7b4b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0588, 0x0987,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x258b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x15eb, 0x40c5, 0x67e9, 0x8a86, 0x0000, 0x0000,
+ 0x0000, 0x6884, 0x0000, 0xe787, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6968, 0xe186,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1eca, 0x0000, 0x0000, 0x0000, 0x4c48, 0x1945, 0x0000, 0x0000,
+ 0x0489, 0x0000, 0x0000, 0x0000, 0x1e08, 0x51c7, 0x01a9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30e7,
+ 0x0000, 0x3266, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x096b, 0x0000, 0x2dcd, 0x65e6,
+ 0x0000, 0x0000, 0x4ee9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2b25, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7707, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5425,
+ 0x0475, 0x52c6, 0x0000, 0x23e4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x00b8, 0x0445, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x12ea, 0x0000, 0x3568, 0x0000,
+ 0x0000, 0x2fc6, 0x0000, 0x0000, 0x0000, 0x2924, 0x0000, 0x0000,
+ 0x22e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7144, 0x0000, 0x0000, 0x2dc8, 0x6966,
+ 0x0000, 0xb466, 0x0000, 0xab87, 0x7c0a, 0x0000, 0x0488, 0x0f64,
+ 0x0000, 0x5124, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5fe5,
+ 0x0000, 0x7f46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7c65, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0906, 0x2e0c, 0x0000, 0x0000, 0xa827,
+ 0x0000, 0x0000, 0x0000, 0x49a5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf886, 0x0000, 0x0000,
+ 0x1b88, 0x43a6, 0x0000, 0x0000, 0x0000, 0x55c5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x040f, 0x1887,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2fa5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb586,
+ 0x0000, 0x0000, 0x0018, 0x4d07, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x99a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5369, 0x0f06, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8f47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2c04, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x24a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x74e6, 0x0000, 0x8346, 0x0000, 0x1264, 0x0b0c, 0x0000,
+ 0x0000, 0x7367, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x74c5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0e4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2aa8, 0x1bc7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x24a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4fa4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90e6, 0x0000, 0x0000,
+ 0x0000, 0x69e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5569, 0x0000, 0x6c69, 0x7606, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe227, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3168, 0x1546, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4d48, 0x42e4, 0x0000, 0xcb27, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x02f6, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6144,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05c4, 0x0000, 0xfe07,
+ 0x0000, 0x0000, 0x04b5, 0xb647, 0x0000, 0x7547, 0x2d69, 0x0446,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x274a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f27, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x39c4, 0x0000, 0x0000, 0x0000, 0x0000, 0x41a8, 0x0000,
+ 0x0000, 0x02e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5484, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3e48, 0x5aa7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00f7, 0x0000, 0x0000, 0x0000, 0x0000, 0x60a7, 0x0000, 0x0000,
+ 0x0000, 0x1484, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7509, 0x48e4, 0x526b, 0xb6c7, 0x0000, 0x1b85,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x646b, 0x0000, 0x0000, 0x4404,
+ 0x0ef4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x16ab, 0x1605, 0x0000, 0x9507,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeac7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0355, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7607, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2225, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6ae6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00ab, 0x0fe6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5e09, 0x1cc6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0888, 0x1445,
+ 0x0000, 0x51c4, 0x0609, 0x1384, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e04, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x18a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x786a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6b47, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5488, 0xf747,
+ 0x0000, 0x0000, 0x0ccb, 0x7987, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2d24, 0x0000, 0x39a4, 0x0000, 0x0000,
+ 0x0000, 0x3b04, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5d6a, 0x7126, 0x0000, 0x0000, 0x0000, 0x1365, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x27e8, 0x1467, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6a06, 0x0000, 0x0000, 0x0495, 0x4ee6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdd26, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1204, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2e2e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4569, 0x1ee6,
+ 0x0000, 0x0000, 0x7c88, 0x0000, 0x0000, 0x17a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x230a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x41c8, 0x5d47, 0x0000, 0x0000,
+ 0x2b2b, 0x0000, 0x0000, 0x0000, 0x7f28, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x516a, 0x3585, 0x0000, 0x0000,
+ 0x0000, 0x9147, 0x1ccd, 0x28e7, 0x444a, 0x6304, 0x0000, 0x0000,
+ 0x0000, 0x9666, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5405, 0x17aa, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0c65, 0x0000, 0x0000, 0x0000, 0x2547,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4568, 0x31a4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x31cc, 0xbe67, 0x0000, 0x2dc6, 0x0000, 0x0000, 0x626a, 0x0000,
+ 0x0000, 0x0000, 0x2349, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x13a4, 0x0000, 0x75a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xa707, 0x0000, 0x0000, 0x0e88, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6266, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x154a, 0x1405,
+ 0x0000, 0xe2e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c44,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5624, 0x0000, 0x0000, 0x0000, 0x0000, 0x6689, 0x0000,
+ 0x3e4b, 0x0d84, 0x0000, 0x0000, 0x0000, 0x8be6, 0x0000, 0x0000,
+ 0x0000, 0x1e85, 0x4c2c, 0x7da7, 0x0000, 0x48a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6fe4, 0x0000, 0x0000, 0x0000, 0xed47,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x73c4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4344, 0x3e0d, 0x24c6, 0x25aa, 0x0000,
+ 0x0000, 0x0000, 0x0251, 0x0000, 0x0000, 0x5ea4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x9de6, 0x0000, 0x6684, 0x0000, 0x5a45,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xfd86, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0f8b, 0xea67, 0x0000, 0x0000, 0x0000, 0x6e27, 0x0000, 0x0000,
+ 0x0000, 0xa886, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x71e6, 0x0000, 0x7744, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x33c8, 0x0000, 0x0000, 0x0000, 0x0000, 0x40a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6604, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5929, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0429, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4a29, 0x12c5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4526, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0d8c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3487, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xde27, 0x0000, 0x0000,
+ 0x06f0, 0x3da4, 0x0000, 0x0000, 0x0a2b, 0x0000, 0x2828, 0x7a86,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d48, 0x0e07,
+ 0x0000, 0x0944, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4e24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2f28, 0x0206, 0x0000, 0x0000, 0x07a8, 0x2327, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1c0a, 0x80e7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0669, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1a6c, 0x26a5, 0x01ea, 0x0fa5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x62aa, 0x15a5, 0x0000, 0x36e5, 0x0132, 0x5107, 0x0000, 0x0000,
+ 0x24ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2ec9, 0x0104, 0x0000, 0x8967, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x47e5, 0x0000, 0x0000, 0x0000, 0x40c6,
+ 0x0000, 0x0000, 0x0000, 0x57c6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0ae8, 0x0000, 0x0000, 0x0000, 0x36ca, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3a0a, 0x0f45, 0x0000, 0x0000, 0x0000, 0xe147, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3e6b, 0x0000, 0x0000, 0x0000,
+ 0x0aea, 0x3b87, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6904, 0x236e, 0x0000, 0x0000, 0x0000, 0x0000, 0xca86,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c2b, 0x9107,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b05,
+ 0x286e, 0x2e86, 0x0000, 0x0000, 0x0000, 0x0000, 0x3aeb, 0x5a44,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3baa, 0xa307, 0x0000, 0xddc6,
+ 0x0000, 0x0000, 0x0b09, 0x0000, 0x36c9, 0x0185, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x53ea, 0x7ca6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4fe8, 0x02c6,
+ 0x0000, 0x0000, 0x61c8, 0x5525, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7eab, 0x5304,
+ 0x0000, 0x75c6, 0x0000, 0xa8a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2c8b, 0x0000, 0x0000, 0x0405, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1aec, 0x2424, 0x0000, 0xf6e6, 0x0da8, 0x3846,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5828, 0x0000, 0x0000, 0x5305, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9ac7, 0x0000, 0x0000,
+ 0x27cd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7809, 0xea06,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0ce9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1dec, 0x6127, 0x0000, 0x0346, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2eed, 0x33c4, 0x0000, 0x0227, 0x0000, 0x0000, 0x0000, 0xa8c7,
+ 0x0000, 0x7767, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6eea, 0x7804, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5889, 0x58c5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x72e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x3eca, 0x2306,
+ 0x00f5, 0x05a5, 0x0000, 0x0000, 0x0000, 0x0000, 0x6128, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3344, 0x0000, 0x8ac7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x33cb, 0x2aa5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6267, 0x0000, 0x0000, 0x0000, 0x3684, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd567, 0x4ca9, 0x2f26,
+ 0x0c0b, 0x0000, 0x0000, 0x0000, 0x0000, 0x3864, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5506, 0x0000, 0x3c67, 0x728a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7526, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c65,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0a53, 0x0000, 0x0000, 0x52e7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1012, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x87e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3ee7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0129, 0x0e24, 0x0d0a, 0x2884, 0x0000, 0x3987, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x74e4, 0x57c9, 0x3647,
+ 0x3ca9, 0x7ec7, 0x76aa, 0x34e4, 0x0000, 0x7087, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfc46, 0x47cc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x96c6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x04d4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7fc6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x11ee, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfda7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4168, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4e25, 0x0000, 0x0000, 0x3528, 0x04a7,
+ 0x0000, 0x0000, 0x0000, 0xf2e7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5fa4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x44eb, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1504, 0x0000, 0x0000, 0x7e48, 0x0000, 0x0000, 0xf946,
+ 0x0000, 0x0000, 0x0000, 0x0b67, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x428a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeb87,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1e0a, 0x01e6, 0x0000, 0x0000, 0x0000, 0x9966, 0x0000, 0xbfc6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x310b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x51e7, 0x4649, 0x3167, 0x0000, 0x0000,
+ 0x0000, 0x3ea4, 0x7f68, 0x0000, 0x0000, 0x0000, 0x0000, 0x3fa6,
+ 0x216b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8966, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x768a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x39cd, 0x0e44, 0x0000, 0x0000,
+ 0x204c, 0x3286, 0x0000, 0xd6a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0a48, 0x84a7, 0x0000, 0x5a87, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8da6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7fac, 0x6926, 0x0000, 0x7fa4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d09, 0x2ea7,
+ 0x04b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x4684, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4026, 0x0000, 0x0000, 0x0000, 0x6724,
+ 0x0000, 0x0000, 0x7069, 0x0000, 0x0000, 0x6146, 0x0000, 0x0000,
+ 0x0198, 0xb127, 0x0000, 0x8b87, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0e4a, 0x4426, 0x0000, 0x00a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1807, 0x0000, 0x0000,
+ 0x5f68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5e6a, 0x5ee5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2e47, 0x0000, 0x9aa7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x254d, 0x0ae4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x03f2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x65c7, 0x7bec, 0x0000, 0x5ea9, 0x0724, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4384,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4c08, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7ec4, 0x0000, 0x0000,
+ 0x0000, 0x70c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x4528, 0xd087,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x45e4, 0x0792, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3fea, 0x0000, 0x0000, 0x5465, 0x0000, 0x0000, 0x138b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x58a5, 0x0000, 0x5746,
+ 0x0000, 0x0000, 0x0000, 0xda26, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5945, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x19c8, 0x0107,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6104,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9f07, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8466,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x32c8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7664, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x150a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6cc4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x454c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6205, 0x7188, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3188, 0x2cc6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0054, 0x1c87,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x69a4, 0x01c9, 0x0000, 0x598c, 0xe386,
+ 0x4a48, 0x0000, 0x0a2e, 0xb287, 0x0000, 0x1425, 0x0000, 0x61c4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0811, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7cca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8266,
+ 0x0000, 0xbb06, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x61ac, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6629, 0x8b46, 0x0000, 0xe2c7, 0x77cc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6584, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1168, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1d88, 0x5067, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9286, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa746,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x06c5, 0x0000, 0x0000, 0x0000, 0x2004,
+ 0x0000, 0x0000, 0x2be9, 0x0000, 0x776c, 0xeba6, 0x0000, 0x3aa5,
+ 0x0000, 0x0000, 0x0000, 0x9ec6, 0x0000, 0x5d04, 0x0000, 0x2726,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x324a, 0x7927, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0648, 0x0000, 0x0000, 0x0000, 0x0000, 0x4784, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x69ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1f08, 0x0566, 0x0000, 0x2e25, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5fc5, 0x0000, 0x2d65, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x54c6, 0x0000, 0x0000, 0x332c, 0x2046, 0x0a54, 0x1f25,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0409, 0x3125, 0x0000, 0x6285,
+ 0x0000, 0x0000, 0x0000, 0xa026, 0x3fad, 0xf607, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x04ef, 0x2466, 0x0000, 0x0000, 0x0000, 0x49a6,
+ 0x0000, 0x0000, 0x06cd, 0x8467, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6709, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7da5, 0x0000, 0xc7c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x72e4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x068a, 0x1086,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2906, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x15a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0833, 0xb066, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x374d, 0x0000, 0x694b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x42c8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x69aa, 0x1a46,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6f8a, 0x0000, 0x0000, 0x1be6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4228, 0x0000, 0x0000, 0x0000, 0x64e9, 0x0000, 0x112f, 0x1b44,
+ 0x0000, 0xb486, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2986,
+ 0x52ac, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x098e, 0xbda7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3445, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c28, 0x2f67,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x12a6, 0x024a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5cc7,
+ 0x2608, 0x11c4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x63e9, 0x73a7, 0x186a, 0x0665, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5608, 0x0000, 0x0000, 0x0000, 0x0000, 0x5724, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9226, 0x5dec, 0x0000,
+ 0x0000, 0x0000, 0x388a, 0x7427, 0x0000, 0x1ba5, 0x0000, 0xb3a6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7768, 0x9c67, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1806, 0x0000, 0x1084, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6c27, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5fe4, 0x5409, 0x0546, 0x0000, 0x0000,
+ 0x0000, 0x8347, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2e08, 0x0586, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4744, 0x03ac, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1c66, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4145, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xbf27, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5c6c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd066, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x108c, 0x3fe6, 0x0000, 0x1146, 0x1a09, 0x7f84, 0x0000, 0x0000,
+ 0x02e8, 0x46a4, 0x0000, 0x2b06, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7344, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1e06, 0x0000, 0x0000, 0x33e9, 0x1566, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3248, 0x0000, 0x0000, 0x5e46, 0x03ed, 0x5984, 0x0000, 0x7ac5,
+ 0x5b68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6f08, 0x0000, 0x0000, 0x0000, 0x646a, 0x69e5, 0x0000, 0x0000,
+ 0x66e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6226,
+ 0x0000, 0x0000, 0x0058, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4288, 0x0000, 0x0000, 0x5527, 0x0000, 0x0000,
+ 0x274c, 0x0000, 0x3008, 0x5584, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5129, 0x37e7,
+ 0x0000, 0xe346, 0x7de8, 0x0000, 0x282a, 0x0000, 0x0849, 0x2d07,
+ 0x0000, 0x0000, 0x0000, 0x3025, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7084, 0x0928, 0x1fc5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5568, 0xf4e7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0ad3, 0x0000, 0x0000, 0x5aa4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1886, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x67e5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5a68, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7c48, 0x4e66, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f88, 0x0846,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x19aa, 0x0484, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x76c6, 0x0000, 0x0000,
+ 0x0000, 0x6ee4, 0x0df4, 0x0000, 0x0000, 0x67e7, 0x308a, 0x14a6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1367, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x618a, 0x5e67, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7049, 0x1246, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x05a4, 0x00ec, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4be4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x082c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b0b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4da9, 0x4b04, 0x0000, 0x2de5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4626,
+ 0x0000, 0x45e6, 0x0000, 0x4926, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x23e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5406,
+ 0x13a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x5947, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3906, 0x0000, 0x73a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0269, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xb826, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e2b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x08b1, 0x39e7, 0x0000, 0x0000,
+ 0x0a4d, 0x1826, 0x004e, 0x3ae6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4f28, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8f87,
+ 0x102c, 0xae07, 0x43c8, 0x6467, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x36c8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d64,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1da4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0827, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x466c, 0x0000, 0x0000, 0x0000, 0x012c, 0x3784, 0x0000, 0x0000,
+ 0x056a, 0x9d87, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x796a, 0x0000, 0x0000, 0x5766, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8b86, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x67a4,
+ 0x1e4c, 0x0000, 0x0000, 0x4a26, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1928, 0x0487, 0x1c0c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb2c6, 0x0000, 0xe1c6,
+ 0x0000, 0x4164, 0x0000, 0x0000, 0x1a92, 0xec26, 0x0000, 0x0000,
+ 0x0000, 0x6766, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xff66,
+ 0x110a, 0x1e46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2388, 0x1287, 0x014e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9c26, 0x0000, 0x0000, 0x0000, 0x64e4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0bd3, 0x0000, 0x0000, 0x0000, 0x3dc8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbcc7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3f28, 0xa347, 0x0000, 0x0000, 0x5f8a, 0x2185, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3004, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd4e7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x13e9, 0x7884, 0x48e8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4064, 0x0000, 0x0000, 0x6ac9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8c66, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1104, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xdec6, 0x0000, 0x0000, 0x0589, 0xa0e7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5b85, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2728, 0x54e7, 0x0000, 0x0000, 0x278e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4a66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5e29, 0x1266, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x112a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x33c5, 0x0000, 0xdc47, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4ae6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xdaa6, 0x0000, 0x0000, 0x0000, 0xcb66, 0x0000, 0x3d04,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a64, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x548c, 0x0000, 0x0000, 0xcce7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x22c6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c2c, 0x0000,
+ 0x01d0, 0x87a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x61ab, 0x3087, 0x0000, 0x6a24, 0x0768, 0x1ca7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8b66, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0d90, 0x0000, 0x0000, 0x0000, 0x0000, 0x5786, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb0c6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5284, 0x5c2a, 0x8167,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x412c, 0x5647,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x220a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xda06,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x100d, 0x5ba4,
+ 0x0000, 0x0000, 0x22aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0093, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7508, 0xf7a6, 0x0516, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x60e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2647,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7a65,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c65, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1645, 0x0000, 0x0000, 0x0000, 0xf626,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5306,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30c4,
+ 0x0000, 0x0000, 0x0000, 0xbcc6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3da7,
+ 0x0000, 0x0000, 0x04b2, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a86,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c0e, 0xc027,
+ 0x0000, 0x0000, 0x150b, 0x3b25, 0x0000, 0x0000, 0x0000, 0x0d25,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4e6c, 0x36c5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0178, 0x9d06, 0x0000, 0x0000, 0x0000, 0xcb47, 0x0000, 0x6164,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0328, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2684, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5ca7, 0x0000, 0x53e4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5128, 0x12c7, 0x0000, 0x0000, 0x0c69, 0x4126, 0x0000, 0x0000,
+ 0x006e, 0x2a65, 0x0000, 0x0000, 0x0000, 0x43e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa9c6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1d4c, 0x1366,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcb86,
+ 0x0000, 0x5fc4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x67a7,
+ 0x0000, 0x0000, 0x0000, 0xb4a7, 0x0000, 0x0000, 0x0000, 0x3cc5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x004c, 0xcc67, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x45ca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb6a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4ae5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xac06, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0ba9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x37e6,
+ 0x0000, 0x0000, 0x084d, 0xb307, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x266e, 0x0000, 0x33ab, 0x4c24, 0x0000, 0x0000,
+ 0x0000, 0x7444, 0x0000, 0x0000, 0x0000, 0x0000, 0x02ae, 0x7565,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7845, 0x008b, 0x5165,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x01f6, 0x4865, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4aa7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7aa4, 0x0000, 0x0000, 0x0000, 0x4424, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc2c6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x640a, 0x0226, 0x0000, 0x0000,
+ 0x0231, 0x0000, 0x716a, 0x0000, 0x0000, 0x0000, 0x0dc8, 0x0000,
+ 0x0000, 0x0000, 0x06b3, 0x3945, 0x0012, 0xf7e7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x376a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x738a, 0xe686, 0x0000, 0x9a06,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x08ca, 0x40e4, 0x0000, 0x7c24,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01ce, 0x4247,
+ 0x0000, 0x7165, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ba6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x06e8, 0x0000, 0x1789, 0x4266, 0x070c, 0x0000, 0x0000, 0xd3a6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x372c, 0x0000, 0x180a, 0x7406, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1e24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbea7, 0x0000, 0x2064,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4005, 0x172d, 0x0000, 0x3a09, 0xc867,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8b27, 0x2389, 0x5a07, 0x0000, 0x0000,
+ 0x5a48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01b6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0097, 0x2426,
+ 0x056e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd3c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x182b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3327, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x268a, 0x0000,
+ 0x0000, 0xe8e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x62c6, 0x0000, 0x0000, 0x5d28, 0x7d45,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2427, 0x088b, 0x3ba6, 0x01b5, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c25,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2de4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4206,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x56c4, 0x0749, 0x4487, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x55ec, 0x0000, 0x0000, 0x0000, 0x0000, 0xdaa7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7d8a, 0x52a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x37a9, 0x0000, 0x0000, 0x0000, 0x0954, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1aa7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6846,
+ 0x0000, 0x0000, 0x17ab, 0xd107, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xc186, 0x180f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x040c, 0x5de4, 0x0000, 0x09c5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x440b, 0xc847, 0x0d31, 0x3b26,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x138f, 0xf3a6,
+ 0x0000, 0xde67, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f66, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03ae, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6e67, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3d06, 0x0000, 0x4d25, 0x0000, 0x0000, 0x064b, 0x0000,
+ 0x56cb, 0xbdc7, 0x6229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4444,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x02d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x7f06,
+ 0x0000, 0x0000, 0x0000, 0x4825, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1708, 0x74e7, 0x0e49, 0x5a06, 0x0000, 0x0000,
+ 0x0c8e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0070, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0be8, 0x01c7, 0x0000, 0x7924, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5ae6, 0x0000, 0x7fa5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x94c6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1324, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x63c5, 0x0000, 0x4964, 0x0000, 0x0000,
+ 0x56e8, 0x0547, 0x0000, 0xf126, 0x11ac, 0x77a5, 0x0000, 0x3a27,
+ 0x00f2, 0x7187, 0x0000, 0x0000, 0x3848, 0x1285, 0x0000, 0x0000,
+ 0x0000, 0x91c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1faa, 0x0000,
+ 0x7d6b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x05c9, 0x0000, 0x0000, 0x6de4,
+ 0x0000, 0x64c6, 0x0000, 0xe987, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe6c6, 0x0000, 0x0000, 0x0000, 0x5b46, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x78a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3f48, 0x0000, 0x0000, 0x0000, 0x014f, 0x0000,
+ 0x0000, 0x0000, 0x02ca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x780a, 0x2506, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4966, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0297, 0x0000, 0x0000, 0x0000, 0x040a, 0x7ac7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x75a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x3665,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x08e8, 0x3466,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x560c, 0x5c87,
+ 0x0bc9, 0x2b27, 0x0000, 0x0000, 0x54ea, 0x48c6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7626, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4369, 0x0000, 0x5588, 0xf927, 0x0000, 0x0000,
+ 0x0000, 0x5266, 0x0000, 0x48e6, 0x0000, 0x6464, 0x0000, 0x5805,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18c5, 0x16a8, 0x2b67,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3c27, 0x32aa, 0x1965, 0x0000, 0x0000,
+ 0x0c6b, 0x6746, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3d86, 0x0000, 0x3306, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x008e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5324, 0x2ba9, 0x1127, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4c8b, 0x9ec7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2e65, 0x0000, 0x0000, 0x0000, 0x6747, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x02b7, 0xbfe6, 0x6b4b, 0x2ec4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x26e9, 0x0000, 0x0000, 0x0000,
+ 0x7bea, 0xf606, 0x0000, 0x0000, 0x0000, 0x0000, 0x3dc9, 0xcde6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6026, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5046, 0x0000, 0x0000, 0x13aa, 0x0f66, 0x0000, 0x0000,
+ 0x0000, 0xb367, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x09f4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xb226, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0d4d, 0x3126, 0x3ccb, 0xd347, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5e8a, 0x1705, 0x0000, 0x0000, 0x0000, 0xacc6,
+ 0x0000, 0x0000, 0x0000, 0x15e5, 0x0000, 0xbaa6, 0x0000, 0x7de6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1b66, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4068, 0x0c67, 0x0000, 0x6a65, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9fc6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7d04, 0x7aca, 0x0000, 0x5f48, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x71ca, 0xe366,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x714a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd846, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9426, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x050a, 0x0000,
+ 0x0000, 0x0000, 0x1269, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x514c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x070b, 0x03c6, 0x0000, 0x4524, 0x0000, 0x0000, 0x028e, 0x4aa5,
+ 0x0000, 0xc9c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x28e6,
+ 0x0630, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x09ca, 0x0000, 0x0000, 0x6247, 0x10cf, 0x0000, 0x0000, 0x0000,
+ 0x018b, 0x3e07, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0548, 0x1987, 0x0000, 0x4cc4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1272, 0x1ee5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x75c8, 0x0000, 0x0000, 0xfce6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0869, 0x23a5,
+ 0x0000, 0x0000, 0x0117, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa3a6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0530, 0x4286,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd387,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x06ef, 0xd507, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7b88, 0x0000, 0x0000, 0x0000, 0x1bee, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0730, 0x8c67,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdc87, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfbe6,
+ 0x0000, 0x0000, 0x0000, 0xc7e6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1026, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x42c4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x000c, 0x3f06, 0x4dab, 0x9c07, 0x2829, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xaea7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x372d, 0x0967, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6929, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x56ac, 0x0000,
+ 0x514a, 0x2745, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7224,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e0a, 0x0000,
+ 0x3b68, 0x0000, 0x0000, 0x7f05, 0x1668, 0x4b47, 0x0dea, 0x2926,
+ 0x0000, 0x0000, 0x0000, 0xe907, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x69cc, 0xec06, 0x0000, 0x0000, 0x6189, 0x0000, 0x0000, 0x0000,
+ 0x0a4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x66a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7784, 0x0e0a, 0x0000, 0x0000, 0x0000, 0x20aa, 0x38e5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2a29, 0x3026,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1712, 0xe926,
+ 0x0000, 0x0000, 0x5a29, 0x0205, 0x0000, 0x3cc4, 0x0000, 0x0000,
+ 0x0000, 0x2126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4da5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1d49, 0x0000,
+ 0x0000, 0x65e5, 0x0000, 0x0000, 0x5ce8, 0xf867, 0x19a8, 0x18a6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2746, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1b6a, 0x3886, 0x49aa, 0x0000, 0x1609, 0x29a4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ac6, 0x05eb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6c08, 0x0000, 0x0000, 0x2586, 0x0000, 0x9aa6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xd2a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x00e8, 0x10e7, 0x3169, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4ee7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x686a, 0x0000, 0x0000, 0x0000, 0x4bc8, 0x3967, 0x0000, 0x7a66,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c85, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x13c8, 0x2e84,
+ 0x0000, 0x6ac5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xba87, 0x0000, 0x0000, 0x0000, 0x6826, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd967, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1865, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5b48, 0xf9a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07b6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2148, 0x5de5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x66a7,
+ 0x0000, 0x0000, 0x0000, 0x5966, 0x0000, 0x0000, 0x0000, 0x6c86,
+ 0x0000, 0x77e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x83a7, 0x0000, 0x0000,
+ 0x0000, 0x76c5, 0x0000, 0x8726, 0x0000, 0xc767, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0774, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05e7, 0x5589, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc8c6, 0x0000, 0x6126,
+ 0x0000, 0x7f87, 0x0000, 0x0000, 0x0000, 0x88c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2bc4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1e4e, 0xe287, 0x0000, 0x0000,
+ 0x0000, 0x78e5, 0x0000, 0x0000, 0x0016, 0x3b24, 0x23ca, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x63c4, 0x4ea8, 0x1bc4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x402b, 0x2a25, 0x264d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1248, 0x0000,
+ 0x0000, 0xcdc7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a24,
+ 0x0000, 0x0000, 0x0000, 0x41a4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x256a, 0x14a7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8506, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4a84, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1dcb, 0xd9a7, 0x0000, 0x9a27, 0x386e, 0xe406, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5ba9, 0x3de5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9686, 0x0000, 0x0000, 0x0000, 0x45e5, 0x2aaa, 0x0000,
+ 0x1c08, 0x02a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0c29, 0xb4c7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5b26, 0x0000, 0x0000, 0x46a8, 0x5ae4,
+ 0x0000, 0xf386, 0x0000, 0x0000, 0x0000, 0x40e5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9526,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x62cc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2868, 0x0047, 0x192e, 0x0000, 0x0000, 0x0765, 0x0000, 0x0000,
+ 0x0452, 0x0000, 0x7008, 0x7824, 0x0000, 0xa0a6, 0x0000, 0x0000,
+ 0x05d4, 0x0000, 0x3bed, 0x0000, 0x0000, 0x0000, 0x0000, 0x44a7,
+ 0x0000, 0x52e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x61e4,
+ 0x0828, 0x5544, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0166,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4144, 0x0000, 0x0000,
+ 0x0000, 0x0684, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2fe4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0fee, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x31a9, 0x1847,
+ 0x0000, 0x0000, 0x4f69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x79e4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0e94, 0x0000, 0x066e, 0x0000, 0x0000, 0x6b44, 0x0000, 0x8666,
+ 0x42e8, 0x3805, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c47,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x17e8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2167,
+ 0x542a, 0x27e4, 0x0bcc, 0x0b87, 0x0000, 0x44e6, 0x0000, 0x0000,
+ 0x1b49, 0xafc7, 0x08aa, 0x2005, 0x0000, 0x0000, 0x7708, 0xf786,
+ 0x0000, 0x6824, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04f1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a32, 0x0000,
+ 0x0000, 0x0000, 0x2c0e, 0x4f47, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4d44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0931, 0x2a64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x152d, 0x5ee4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8667,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c48, 0x5126,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3048, 0x2a05, 0x0000, 0x0000, 0x0000, 0x8166, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7385, 0x0000, 0x0927, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xf667, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xa807, 0x0000, 0x3ea6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05c8, 0x63e5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2287,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6045,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x13c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xb306, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0337, 0x0000,
+ 0x0000, 0xfa27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3bc4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b6c, 0xb6a7,
+ 0x1a68, 0x4b44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8586, 0x0000, 0x0000, 0x0f89, 0x46e5,
+ 0x0000, 0x0000, 0x0000, 0x7dc7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5be4, 0x658a, 0x0000,
+ 0x0000, 0x2867, 0x0000, 0x0000, 0x0000, 0x2605, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1284,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4165, 0x0000, 0x0000, 0x1212, 0x5b47, 0x0000, 0x0000,
+ 0x7aa8, 0x0000, 0x0000, 0x0de5, 0x0000, 0x0000, 0x108a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f46, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3785, 0x0000, 0xdf67, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00f0, 0x0000, 0x0000, 0x0000, 0x0000, 0xff26, 0x7488, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7525, 0x0000, 0x7c66, 0x0000, 0x0000, 0x1fea, 0x0000,
+ 0x0000, 0x1145, 0x6bea, 0x78a4, 0x0000, 0x0000, 0x4eec, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xae46, 0x0216, 0x5184, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7026, 0x0000, 0x2825, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7347, 0x0000, 0x4d65, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x698c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xcf66, 0x0000, 0x8987, 0x0000, 0x0000, 0x0000, 0x92a6,
+ 0x0000, 0xf146, 0x2188, 0x1f65, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30c8, 0x58e5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d06, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e05,
+ 0x0000, 0x0000, 0x0000, 0xf9c7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ca6,
+ 0x0000, 0x0000, 0x0000, 0x4a44, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2184,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4665,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0050, 0x04e6, 0x0000, 0x0000, 0x0000, 0xa686, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f86, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x084c, 0x6387,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x41e9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0c46, 0x0000, 0x0000, 0x480b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0f4d, 0x0000, 0x2289, 0x04a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x50a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2444, 0x0000, 0x0000, 0x5f4a, 0xa187, 0x0000, 0x0000,
+ 0x0000, 0xa467, 0x0000, 0xf466, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1a48, 0x1067,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x63ab, 0x0000, 0x04cf, 0x0000,
+ 0x0176, 0x3d07, 0x0000, 0x7504, 0x0000, 0x3726, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a67, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7be6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x51a4,
+ 0x0000, 0x4167, 0x0000, 0x0000, 0x0000, 0x70e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0a12, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x360e, 0x0000, 0x0000, 0x2744,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1d08, 0xab07, 0x42c9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0369, 0x0000, 0x0000, 0x0000,
+ 0x018e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x210b, 0x5c07, 0x0000, 0xcf26, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ba6, 0x0000, 0x0fe7,
+ 0x0000, 0x0000, 0x0000, 0x9706, 0x0000, 0xa1c6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2d88, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0fab, 0xa6c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6309, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6a29, 0x5764, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7904,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb4c6, 0x0f88, 0x31a7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5025,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0fe8, 0x2b46, 0x0000, 0x0000,
+ 0x40a9, 0x0965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0a6e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x80e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb7c6, 0x0000, 0x7745, 0x0000, 0x0000, 0x2b2a, 0x2606,
+ 0x3349, 0x0000, 0x0000, 0x0000, 0x0000, 0x5bc6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xe3c6, 0x0000, 0x0000, 0x0000, 0xe0c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01c6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x142b, 0xe927, 0x08ac, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7346, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x43a4, 0x0000, 0x4e65, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x14c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a26,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x59a5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b08, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x51c5, 0x0000, 0x0000,
+ 0x178a, 0x2226, 0x0000, 0x0000, 0x0000, 0x43e4, 0x0000, 0x3347,
+ 0x0aed, 0x0000, 0x0000, 0x75a4, 0x0000, 0x0000, 0x174b, 0x1f44,
+ 0x0000, 0xdf26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa766,
+ 0x39c8, 0x7827, 0x0000, 0x6184, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4225, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3b48, 0x9f87, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0314, 0x7685, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x522c, 0x5e26, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x75ab, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5845, 0x7b2b, 0x68a5, 0x0000, 0xe8a7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2488, 0x74a7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5fe7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5024, 0x0000, 0x0000, 0x0000, 0x9a26, 0x0e51, 0x0000,
+ 0x6e69, 0x0000, 0x224a, 0xfb06, 0x0000, 0xe046, 0x23ac, 0x0000,
+ 0x0000, 0x4764, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x66e8, 0x7805, 0x020c, 0x4d27,
+ 0x0000, 0x35e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x46eb, 0x0000, 0x3229, 0x0000,
+ 0x004a, 0x61a6, 0x350b, 0x0425, 0x0000, 0xfac7, 0x0000, 0x0000,
+ 0x2248, 0x0000, 0x0000, 0xeb47, 0x0000, 0x6344, 0x0000, 0x0000,
+ 0x0000, 0xe707, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3808, 0x05e6, 0x0000, 0x0000, 0x0000, 0x95e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3429, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x24e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7f65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d84,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3a0b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1a06, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x374a, 0x0000, 0x744a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4088, 0x0886, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8d06, 0x0d0c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6265, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3d68, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x58e6, 0x0000, 0x0000, 0x0130, 0x0000,
+ 0x0cab, 0x3725, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x140a, 0x3187, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x54e5, 0x28c9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8d07,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c26, 0x0000, 0xe087,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2a48, 0x47c4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8906, 0x3d6a, 0x32a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8727, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd187, 0x0000, 0x96e6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7929, 0x2c45, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4ac8, 0x0000, 0x2529, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xdd87, 0x5dea, 0x0000, 0x04ad, 0x0000,
+ 0x0000, 0xe486, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2026, 0x17e9, 0x48c4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x62ca, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x05ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x382a, 0x2646, 0x7e6b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2569, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x68a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x014a, 0x2925, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa506,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x13d2, 0x5224,
+ 0x0000, 0x94e7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00f8, 0x0000, 0x79c8, 0xf266, 0x0000, 0xd027, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x010f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2408, 0x0845, 0x0000, 0x0000, 0x0000, 0x0000, 0x3dca, 0x15e7,
+ 0x0000, 0xcd66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4748, 0x5dc5, 0x59ea, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x01ab, 0x0000, 0x0000, 0x9be6, 0x0000, 0x0000,
+ 0x1ba8, 0x2c87, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x56cc, 0xe226, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3364, 0x0000, 0x0585,
+ 0x03ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x53a7, 0x0000, 0x5427,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xa2e6, 0x580a, 0x2565, 0x0000, 0x0000, 0x0000, 0x2266,
+ 0x0000, 0x0000, 0x1b08, 0xdc27, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa4e7,
+ 0x0000, 0x0000, 0x358c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4045, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x062e, 0x06e4, 0x0cd2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d85, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2f6b, 0x0000, 0x732a, 0x7964, 0x0689, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9d46, 0x0000, 0x0000,
+ 0x0000, 0x8446, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5204,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1207, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xaba7, 0x014d, 0x4ba7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x68c5, 0x0000, 0x7e85, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1348, 0x2da7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2a85,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6546, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3deb, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20a8, 0x0000,
+ 0x42ea, 0x1f06, 0x0000, 0x2cc4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x46e6, 0x37a8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5726, 0x0000, 0x0000, 0x0000, 0xa706, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x72aa, 0x15c6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7985, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2be4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x23c4, 0x0000, 0x0000, 0x0709, 0x36c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf3c6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c44, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x792a, 0xffe6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6646, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6c45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb766, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7984,
+ 0x0000, 0x2c66, 0x0000, 0x0000, 0x0000, 0x0e85, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2168, 0x17a6, 0x0d0b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xc9a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0e86, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6ec6, 0x0000, 0x0ac4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x05b6, 0x0000, 0x0000, 0x6be6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xf426, 0x384a, 0xdda7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2fae, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8ec6, 0x0000, 0x94a6, 0x0000, 0x0000, 0x0000, 0x52e5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x69c5,
+ 0x0000, 0x0000, 0x420a, 0x0000, 0x312b, 0x2f45, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x28ae, 0x7067, 0x5509, 0xeb07,
+ 0x0000, 0xdd46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5104,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x172b, 0x14e7,
+ 0x0000, 0xffc6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1f29, 0xcda7, 0x0000, 0x1304, 0x0000, 0x0000, 0x0000, 0xd8a7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7dc5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3485, 0x0000, 0x0000, 0x0000, 0x6807,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2be5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x00d1, 0x0505, 0x0000, 0x0000, 0x0788, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xa946, 0x5d29, 0x5a84, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6088, 0xf3e7,
+ 0x226b, 0x0d87, 0x4fe9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3e88, 0xdbc7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xebc6, 0x58e9, 0x19a5, 0x0000, 0x0000, 0x78a8, 0x6c26,
+ 0x0000, 0x0000, 0x0000, 0x42c5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5669, 0x0000, 0x0000, 0x0000, 0x1da9, 0x3766, 0x0000, 0x6dc7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb046, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7c64, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4844, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e2a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x66c4,
+ 0x0000, 0x7365, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7384, 0x0000, 0x0000,
+ 0x0000, 0x5325, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeda7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x76c7, 0x3e4d, 0x0ba5,
+ 0x0000, 0x0000, 0x0000, 0xb567, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5d67, 0x6789, 0x6286, 0x320b, 0x1707, 0x0000, 0x18c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7c47, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4ce8, 0x2805, 0x0000, 0x0000,
+ 0x0000, 0x7a45, 0x6969, 0x7124, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6a48, 0x79c4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x00d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3fa4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2227,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1926, 0x0000, 0x0000,
+ 0x0000, 0x8227, 0x0000, 0x0000, 0x0000, 0x8206, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x56a5,
+ 0x1d4b, 0x60c6, 0x0000, 0x2a04, 0x0000, 0xaee7, 0x02d4, 0x0000,
+ 0x64a8, 0x6445, 0x6129, 0x14e5, 0x62a9, 0x0000, 0x0000, 0xd526,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0147, 0x01b7, 0x0165, 0x0000, 0x0000,
+ 0x1988, 0x2104, 0x0000, 0x0000, 0x070a, 0x0000, 0x0000, 0xefa6,
+ 0x0000, 0x3ac5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x95c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7eeb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5965,
+ 0x0000, 0x0000, 0x7d49, 0x0000, 0x0000, 0x0000, 0x254a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c64,
+ 0x0000, 0x0000, 0x5a88, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6007,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8546, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x086e, 0x0000, 0x15d2, 0x7684, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5f84, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0969, 0x1126, 0x0000, 0x5e84, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7e08, 0x6944, 0x506b, 0x0000, 0x0000, 0x0000,
+ 0x086b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x10e8, 0x66a4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c0c, 0x0000,
+ 0x30aa, 0x2c67, 0x0000, 0x0000, 0x624a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xff86, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x80c6, 0x0000, 0x0000, 0x0000, 0x8766, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x9946, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2c88, 0x27e6, 0x010a, 0x30a4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b45,
+ 0x0000, 0x0000, 0x0000, 0x3564, 0x0000, 0x33a6, 0x0000, 0x5b44,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2ea5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x63e7,
+ 0x0000, 0x0000, 0x0000, 0xe027, 0x0000, 0x0000, 0x0000, 0x2844,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0b31, 0x2447, 0x004b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5404, 0x576c, 0xe886, 0x0000, 0x0000, 0x0000, 0x5c25,
+ 0x0000, 0x0000, 0x0000, 0xc986, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1225,
+ 0x0f8c, 0x6e87, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3064,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x54e6, 0x0000, 0x44c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa327, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4804, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x55c6, 0x0000, 0x4be6,
+ 0x0000, 0x0000, 0x04b4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0ca8, 0xd7c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x77c4, 0x0000, 0x0000, 0x0000, 0x70e5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x126c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2dea, 0x0000, 0x0000, 0x0000, 0x0000, 0x5646, 0x0000, 0x5824,
+ 0x222d, 0x0000, 0x0000, 0x6ee7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b46,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7186,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9da6,
+ 0x0000, 0x0000, 0x3e2c, 0x9a66, 0x0000, 0x35a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x710a, 0x0000, 0x0197, 0x0fa6, 0x0000, 0x0000,
+ 0x0000, 0x6924, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b86,
+ 0x7648, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x600a, 0x0000, 0x6049, 0x1406, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x21ec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x59eb, 0x0000, 0x5769, 0x48a7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6bc9, 0x2607,
+ 0x0000, 0x4ee4, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e08, 0xbd27,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7aa7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3644, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x44c6, 0x0000, 0x0000, 0x3b8a, 0x7447,
+ 0x670a, 0x4525, 0x0000, 0x0000, 0x3888, 0x0000, 0x12e8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6084, 0x0000, 0x2485,
+ 0x10ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3f09, 0x0000, 0x0000, 0x8826, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x61e7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x19cb, 0x3127,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1d09, 0x7204, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7a26,
+ 0x0000, 0x0000, 0x5988, 0x0c47, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5ba5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x026a, 0x0000, 0x0000, 0x0000, 0x0000, 0x5385,
+ 0x0000, 0x2d04, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x520c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0138, 0x5ac7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0909, 0x0000,
+ 0x0000, 0x9ea6, 0x0000, 0x0000, 0x39e9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xb5c7, 0x0000, 0xa0e6, 0x1ead, 0x0000,
+ 0x7ba8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0d69, 0x1487, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x84a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0048, 0x3c85, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8ce6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3984, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7484,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4986,
+ 0x4e28, 0x0000, 0x0000, 0x0000, 0x0000, 0x0986, 0x0b88, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0d0e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5f64, 0x0000, 0x4dc4, 0x0000, 0x0000,
+ 0x0000, 0x1fa5, 0x0000, 0x4447, 0x0000, 0x0000, 0x0dca, 0x0000,
+ 0x200a, 0x7287, 0x0000, 0x0000, 0x046c, 0x1a85, 0x0000, 0x0000,
+ 0x5d49, 0x0000, 0x0000, 0x0000, 0x12ca, 0x0000, 0x0000, 0xb746,
+ 0x0000, 0x0000, 0x0000, 0xa266, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbdc6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x99a6, 0x0000, 0x0000, 0x0000, 0x6605,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x13ec, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5bc8, 0x6ca5, 0x0fcd, 0xd686,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1949, 0x1d04,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1a88, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0de8, 0x7d67, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd606,
+ 0x0000, 0x0000, 0x1b0e, 0x0000, 0x0000, 0x0000, 0x0000, 0x4086,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5146, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0731, 0x0c66, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x258c, 0x47c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x7fe8, 0x0000,
+ 0x0000, 0x25c7, 0x0000, 0xe9e7, 0x0000, 0x5b04, 0x1f89, 0x0000,
+ 0x0000, 0x39a6, 0x0000, 0x0000, 0x0000, 0x2866, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x60e8, 0x39a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x158b, 0x0000, 0x0000, 0x3a04,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0932, 0x5ae7, 0x0000, 0x7fe4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4828, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x81a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x230c, 0x54a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x63e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x13e8, 0x0000,
+ 0x37cb, 0xd847, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3164, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x122b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0295, 0x0000, 0x0000, 0x3546, 0x4c0a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7a29, 0x0000, 0x1f4a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0c8b, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7c6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b85, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4a4a, 0x0985, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x37e8, 0x0000, 0x0000, 0x0000, 0x0000, 0x41c4, 0x0000, 0x0000,
+ 0x01d7, 0x8c87, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1787, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d49, 0x25a7,
+ 0x0000, 0x0000, 0x0000, 0xd9e7, 0x0000, 0x1644, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d04,
+ 0x0000, 0x67e6, 0x0000, 0x0000, 0x1a0b, 0x1946, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf446, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x408a, 0x6d07, 0x0000, 0x0000, 0x2729, 0x1c04,
+ 0x0000, 0x0000, 0x030b, 0x0000, 0x0168, 0x4445, 0x0000, 0x0000,
+ 0x0000, 0xf227, 0x1e48, 0x1e25, 0x05d6, 0x0000, 0x0000, 0x0000,
+ 0x67c9, 0x9f26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6726, 0x28ea, 0x7dc4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc587, 0x4089, 0x2dc4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd906, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf1e6, 0x0000, 0x6744,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x116b, 0x2966, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2407, 0x0000, 0x7286, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xec07, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb7e6, 0x0000, 0xc446, 0x0000, 0x3144, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf167, 0x0000, 0xd6e7,
+ 0x0000, 0x5244, 0x1c8d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2ec8, 0x0000, 0x0000, 0x0000, 0x0000, 0x5be7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x286b, 0x3e46, 0x0000, 0x84e7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1369, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7145, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8e66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0d8a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4d04, 0x70c8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5688, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x66e6,
+ 0x0000, 0x0000, 0x0000, 0x2624, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5526, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x000d, 0x1ac5, 0x7d88, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x02ee, 0x0000, 0x0000, 0xd4e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb467,
+ 0x0000, 0x0000, 0x0271, 0x5946, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x080d, 0x5c24, 0x0000, 0x0000, 0x2b29, 0xdbc6, 0x0000, 0x0000,
+ 0x486a, 0x05e5, 0x0000, 0x0000, 0x436a, 0x1165, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x308d, 0x0000, 0x0000, 0x0000, 0x0000, 0x1fa6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1f8a, 0x0000,
+ 0x5d2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3f08, 0x0d64, 0x0000, 0x6ce4,
+ 0x0000, 0x0000, 0x0000, 0x1ca4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x70e4, 0x0000, 0x0000, 0x08ec, 0x0000, 0x0000, 0x44a5,
+ 0x00c9, 0x05e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7a85, 0x6c28, 0x5825, 0x0000, 0x0000,
+ 0x0000, 0x1427, 0x0000, 0x0000, 0x0000, 0x0000, 0x11e8, 0xa667,
+ 0x0000, 0x0000, 0x0000, 0xad86, 0x042c, 0x5a85, 0x0000, 0x0000,
+ 0x0000, 0x0265, 0x0000, 0x0000, 0x0000, 0x3165, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x69c4, 0x1a4c, 0x0000, 0x0000, 0x0000,
+ 0x0f49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x56e4, 0x7528, 0x3e27, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x59c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc5a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1429, 0x0626, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4aa4, 0x0000, 0x0000, 0x0000, 0x88c6,
+ 0x0000, 0x0000, 0x0000, 0x6564, 0x718b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb7e7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x054c, 0xf1e7, 0x0000, 0x0000, 0x0000, 0xfbc7,
+ 0x084a, 0xfae7, 0x0000, 0x0000, 0x494b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x038b, 0x86a7,
+ 0x0000, 0x0000, 0x0000, 0x98a6, 0x0000, 0x0000, 0x07cb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xdcc6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0336, 0x0000,
+ 0x3e6a, 0xad87, 0x0000, 0x0000, 0x0c28, 0x0145, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3c25, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04a9, 0x10c6,
+ 0x1368, 0x3cc7, 0x0000, 0xb446, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x49e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x26c8, 0x92a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x3329, 0x9087,
+ 0x0000, 0x0000, 0x0000, 0x3c46, 0x0000, 0x0000, 0x20e8, 0x73c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6486, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x9e27, 0x0000, 0x33e4, 0x0000, 0x2b85,
+ 0x0000, 0x0000, 0x0000, 0x7e84, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x14b2, 0xe166, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3304, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2029, 0xa526, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8e46,
+ 0x0000, 0x0000, 0x0000, 0x1f24, 0x0000, 0x0000, 0x0000, 0x4805,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1cee, 0x0000, 0x0000, 0x0000,
+ 0x2409, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3629, 0xb9e7, 0x472c, 0xd1c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0aec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x616c, 0x4347, 0x0000, 0x0000, 0x0000, 0x33a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3de8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x17ea, 0x06c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4248, 0x46e7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb986, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x65e9, 0x4c26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c86,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7089, 0x0000, 0x0000, 0x0000, 0x0000, 0xa6e7,
+ 0x0000, 0xd786, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5005, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe4e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b44,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x89e6, 0x0000, 0xbc07, 0x51ec, 0x8146, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2625, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9a87, 0x0000, 0x0000,
+ 0x35a8, 0x1b26, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c6a, 0x22c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5886,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe606, 0x1d2c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfc26,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xba06, 0x0000, 0x0000,
+ 0x0000, 0xc6c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe106,
+ 0x0390, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x05a9, 0x0000, 0x0491, 0x0000, 0x02ce, 0xb447,
+ 0x2f48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbc66,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x04eb, 0x0000, 0x0000, 0x83c6, 0x5aa8, 0xf467,
+ 0x0000, 0xfe86, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x700c, 0xe9e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x64a9, 0x0000, 0x0000, 0x0000, 0x0000, 0xffc7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x022b, 0x5905, 0x0000, 0x4d24, 0x06e9, 0x2806,
+ 0x21e8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x37aa, 0x0000, 0x170b, 0x0ce7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5269, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5486, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2a2b, 0x0000, 0x0000, 0x0000,
+ 0x3f4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x696a, 0x09a5,
+ 0x0000, 0x3944, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb187,
+ 0x2fca, 0x0da6, 0x11cb, 0x2946, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0af1, 0x0000, 0x0000, 0x0000, 0x3d8b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9ae6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1a6b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8326, 0x0000, 0x2827, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xf827, 0x0000, 0x0000, 0x0f48, 0x0000,
+ 0x0000, 0x1d44, 0x0000, 0x0000, 0x0000, 0x8946, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x44a8, 0x1fa7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4149, 0x1066,
+ 0x0000, 0x0000, 0x12ae, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3f64, 0x0000, 0x0000, 0x0000, 0x0000, 0x6569, 0x4ec6,
+ 0x0000, 0x0000, 0x0000, 0x2ae4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3804, 0x49ea, 0x38e7, 0x0000, 0xaca7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x47e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x92e6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x51a6, 0x0000, 0x0000,
+ 0x0000, 0xdc26, 0x0000, 0x95c6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x252a, 0x8ce7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x54c4, 0x0000, 0x0000, 0x1492, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x046e, 0x0000, 0x05ad, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0f2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0fa4, 0x0000, 0x0000, 0x0000, 0xcac6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a24, 0x1228, 0x0000,
+ 0x0000, 0x0000, 0x794b, 0x6307, 0x0000, 0x0000, 0x0000, 0x5964,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9e7, 0x0000, 0x0000,
+ 0x0948, 0x4265, 0x0000, 0x0000, 0x0830, 0x0000, 0x0000, 0x0000,
+ 0x0d2d, 0x1b86, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7806, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000,
+ 0x358b, 0x0266, 0x0000, 0x0000, 0x3228, 0x0c07, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xc766, 0x0e91, 0x0000, 0x7fa8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5dc8, 0xf527, 0x0000, 0x0000,
+ 0x1289, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x096e, 0x0000,
+ 0x0000, 0xace6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4ac4, 0x0000, 0x3507, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x98c6, 0x0000, 0x0000, 0x0000, 0x6d84,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x10a5, 0x0000, 0x0000, 0x0000, 0x0000, 0x1768, 0x0000,
+ 0x0108, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x35ab, 0x0000, 0x55a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1088, 0x3b06,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7546, 0x0000, 0x0000, 0x6d49, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x60c8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0b92, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x67c4,
+ 0x57a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3548, 0x2bc5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b69, 0x0766,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x24ad, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3727, 0x1468, 0x0087, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x64c4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1d2e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xf947, 0x0000, 0xd966, 0x0000, 0x0000, 0x3128, 0x0000,
+ 0x05f4, 0x81c7, 0x0000, 0x0000, 0x0000, 0x26a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2d68, 0x0000, 0x0000, 0x0000,
+ 0x15ee, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5348, 0x0000, 0x0000, 0xd167, 0x0000, 0xc806, 0x0000, 0x0000,
+ 0x0000, 0x6507, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2304, 0x06cc, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x34a4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1f27, 0x0000, 0x0000, 0x0cea, 0x1fc6,
+ 0x0000, 0x20c5, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x64a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcbc6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x53e5, 0x7988, 0x7ba4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f24, 0x0000, 0x0000,
+ 0x0000, 0xacc7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x60e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x308c, 0x1947, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x020d, 0x4606, 0x0000, 0x0000, 0x0000, 0x6927,
+ 0x0000, 0x0000, 0x46c8, 0x0000, 0x0000, 0x0000, 0x7548, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7205, 0x0000, 0x0000, 0x0000, 0xaa27, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4d4b, 0x1d85, 0x0000, 0xe7c6,
+ 0x0000, 0x0000, 0x27c8, 0x17c5, 0x0000, 0xac07, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2ba7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x76e8, 0xf686, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2b09, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6a44, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x71c6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x026e, 0x0000,
+ 0x146a, 0x0aa7, 0x0000, 0x3ce4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x122a, 0x0000, 0x0a73, 0x0000, 0x0000, 0x7ea4,
+ 0x0000, 0x0000, 0x0000, 0xf047, 0x0000, 0x0000, 0x152b, 0x45a5,
+ 0x084b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9527,
+ 0x0a50, 0x0000, 0x2c0a, 0x38c5, 0x0732, 0x0000, 0x0000, 0xa6a7,
+ 0x3189, 0x0d66, 0x0000, 0x2e45, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1985, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xd546, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3148, 0x9687, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7de5,
+ 0x0000, 0x0000, 0x0000, 0xd407, 0x0000, 0xbde6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7aa9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8606, 0x0000, 0x0000, 0x0000, 0x5904, 0x0000, 0xcba6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b06,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x9ee6, 0x0000, 0x0000, 0x0000, 0xc907,
+ 0x0217, 0x0000, 0x0000, 0x0000, 0x0000, 0x3ca5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1328, 0x0365, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xf8e6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x068e, 0x0000, 0x02b4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6668, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x72ab, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6207, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x10ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x38ca, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6a89, 0xd6e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a87,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7704, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x470a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3809, 0x0000, 0x0000, 0x0000, 0x0868, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xe446, 0x522a, 0x0000, 0x5b2b, 0x5346,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x53a4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3245,
+ 0x0000, 0x0000, 0x130b, 0x0000, 0x0000, 0x0000, 0x0000, 0x7207,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0668, 0x2807,
+ 0x0000, 0x37a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x268b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x304b, 0x0000, 0x0000, 0x1de5,
+ 0x0000, 0x0000, 0x1048, 0x0a67, 0x0000, 0x11e4, 0x0000, 0x2b87,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x77c6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1a44, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x35c4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x00ea, 0x1aa5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6427, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7506, 0x0000, 0x0d85,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6ea4, 0x496b, 0x1b65, 0x31ca, 0x2d87, 0x0000, 0x91a7,
+ 0x0000, 0x0000, 0x2ac9, 0x1e26, 0x25e9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb5c6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1fc9, 0x4644, 0x0000, 0x6244, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3da8, 0x1b06, 0x0000, 0x0000, 0x0000, 0x0000, 0x1b6b, 0x2aa7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x104b, 0xd8c7, 0x134c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x57a8, 0x4b85,
+ 0x0000, 0x0000, 0x6de8, 0x0000, 0x1869, 0x5345, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd0a6, 0x0000, 0x0000, 0x0000, 0xdfe6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x9987, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4de4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x63c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0a8a, 0x0f47, 0x0000, 0x0000,
+ 0x0000, 0x68a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7ea8, 0x0000, 0x0000, 0x4826, 0x0000, 0x0000, 0x0000, 0x3986,
+ 0x748a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x03e8, 0x1065, 0x0000, 0x0000,
+ 0x0000, 0x4ba6, 0x0000, 0x0000, 0x0000, 0x9bc6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0889, 0x22c5, 0x14a8, 0x2665, 0x61a8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0426, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8b26, 0x0000, 0x0000, 0x5a08, 0xf427, 0x196a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3529, 0x28c6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1e2b, 0xa487, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3405, 0x0000, 0x0000, 0x0000, 0xa286, 0x0000, 0x69e7,
+ 0x0000, 0x0000, 0x52ca, 0x2cc5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x68e8, 0xe3e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x51cc, 0xbe46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x146b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x274d, 0x7a44,
+ 0x0000, 0x0000, 0x0000, 0x4b24, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7645, 0x3648, 0x0000, 0x0000, 0x0000, 0x324c, 0x3367,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x01ac, 0xb767, 0x334e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3c66, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x54a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x08c9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xafa7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0d89, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6124, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d65,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x088e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3f24, 0x0000, 0x28c5, 0x0000, 0x0000,
+ 0x148f, 0x4e86, 0x51ca, 0x0000, 0x0000, 0x0000, 0x04a8, 0x0406,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5389, 0x1306, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x48a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x058e, 0x0fc6,
+ 0x0b2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xbf66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x196c, 0x91e6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4269, 0x9a07, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x75e6, 0x0000, 0x53c5, 0x1ceb, 0x6e04,
+ 0x0000, 0xca26, 0x0000, 0x0000, 0x0000, 0xf4a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x79e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1e47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x34a5, 0x0000, 0x0000, 0x01c8, 0x6845,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3a2a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6849, 0x5606, 0x33a9, 0x6ae4, 0x0000, 0x0000,
+ 0x0000, 0x49c4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0e4b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05a8, 0x1525,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x18c4, 0x0000, 0x0000, 0x46ab, 0x4925,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5666, 0x0000, 0x0000,
+ 0x0000, 0x4a25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7227, 0x0e8c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xaa06, 0x0000, 0x0000, 0x0000, 0x6444, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5429, 0x2686, 0x0000, 0x58a4,
+ 0x7dc9, 0xece6, 0x0000, 0x1c84, 0x0000, 0x0000, 0x0000, 0xe607,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4c04, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc4a6, 0x0000, 0xfee7,
+ 0x1108, 0x4386, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7024, 0x0000, 0x0000, 0x7549, 0xeac6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb7a6,
+ 0x0000, 0x7ce5, 0x0000, 0x2564, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4845, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3905, 0x0000, 0x0000, 0x0000, 0xd1e7, 0x146c, 0x56a7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0612, 0x5e64,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2a4b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8866, 0x0000, 0x0000, 0x0000, 0x0000, 0x56ec, 0x0000,
+ 0x0000, 0xb707, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x79e7,
+ 0x0000, 0x0000, 0x29ed, 0x0000, 0x0000, 0xf766, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x21a8, 0xc3c7, 0x4ec9, 0x3186, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe2e7, 0x4f4a, 0x0005, 0x0000, 0x0000, 0x78c8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0128, 0x3386,
+ 0x0000, 0x77c7, 0x0000, 0x0000, 0x4868, 0x2fc4, 0x0000, 0x1a84,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x78aa, 0x5524, 0x0000, 0x0000,
+ 0x020e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x51e5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0871, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5de6, 0x0000, 0x0000, 0x0000, 0x0000, 0x34e8, 0x1ce6,
+ 0x0000, 0x0000, 0x7f0a, 0x2585, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0c88, 0x1da6, 0x0000, 0x0000, 0x0000, 0xab46, 0x0000, 0x0000,
+ 0x0000, 0x9707, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9866,
+ 0x102e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18e5,
+ 0x0000, 0x0000, 0x356c, 0x0000, 0x0000, 0x0000, 0x0000, 0x76a6,
+ 0x5328, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5907, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x9446, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x24ec, 0x2706,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x12e9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4984, 0x0098, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x33cc, 0x0d06, 0x0000, 0x0000, 0x5eaa, 0x20e6,
+ 0x0000, 0x4625, 0x0000, 0x0000, 0x0000, 0x2804, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1c24, 0x0000, 0x0000, 0x0000, 0x0000, 0x04b1, 0x6627,
+ 0x0000, 0x79c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd46,
+ 0x106b, 0x1d65, 0x0209, 0x0000, 0x49c8, 0x90a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1baa, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x118a, 0x30c7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8f07, 0x0000, 0x0000, 0x0000, 0x3a06,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x198b, 0x32e5, 0x25e8, 0x9847,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x00a8, 0x28a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x018a, 0x6407, 0x0000, 0xdee7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3f0d, 0x4da6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7306, 0x0000, 0x2f04, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1b46, 0x488c, 0x0000, 0x6008, 0x38c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0010, 0x0000, 0x548a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1486, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0656, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0f0d, 0x23a6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1c49, 0x2ae6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x03b6, 0x0000, 0x0000, 0xe286,
+ 0x0000, 0x0000, 0x0115, 0x0000, 0x0000, 0x0000, 0x02b6, 0x8ca7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa5e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x47e9, 0xc7c6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6fe6, 0x0000, 0x0000,
+ 0x0000, 0x77e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdbe7,
+ 0x15a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x2146, 0x20ae, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb266, 0x0000, 0x0000, 0x2588, 0x8126, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4906, 0x0000, 0x0000, 0x0000, 0x0000, 0x0688, 0x5bc5,
+ 0x0000, 0x0000, 0x1b2b, 0x1de7, 0x0000, 0x8d26, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b88, 0x0287,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3446, 0x0000, 0x0000, 0x0000, 0x4ca5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4f04, 0x0000, 0x0000, 0x0aa8, 0x7b07, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x71a8, 0x56c5, 0x00eb, 0x8aa7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x14e4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2308, 0x07c5, 0x0000, 0x0000, 0x042a, 0x0000,
+ 0x0000, 0x2ce4, 0x174d, 0x7a87, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4927,
+ 0x0000, 0x0000, 0x0000, 0x1a65, 0x0000, 0x0000, 0x2a0d, 0x1226,
+ 0x0000, 0x8d46, 0x0000, 0x6d27, 0x0000, 0x0000, 0x6908, 0x20e4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7284, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x136f, 0x0000, 0x0000, 0x0000,
+ 0x39aa, 0x0c27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa987,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a24,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xae06, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0fd3, 0x0000, 0x0000, 0x0000, 0x0000, 0x9366,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1444, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5fa6, 0x0000, 0x1765, 0x0000, 0xa0c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4f66, 0x0000, 0x0000, 0x02eb, 0x1ae4, 0x0000, 0x0000,
+ 0x0000, 0xa346, 0x0000, 0x0000, 0x0c2d, 0x5987, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5228, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2566, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x10ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x524c, 0x8746,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfa47, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x682b, 0x1f07, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xcec6, 0x0000, 0x0000, 0x426a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f46, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6aa5,
+ 0x47ab, 0x1f26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x41ea, 0x0000, 0x0000, 0x0000, 0x0000, 0xb166,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0288, 0x0627,
+ 0x0000, 0x0000, 0x0000, 0x7c05, 0x0000, 0x0000, 0x0000, 0x5b05,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3e28, 0xc567, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x07c9, 0x2186, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x9626, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3dea, 0x1827, 0x0000, 0x0000, 0x0000, 0x0000, 0x0d4a, 0x0000,
+ 0x0000, 0x6b66, 0x0000, 0x0000, 0x02ed, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x65a9, 0x73a6, 0x0000, 0x0000,
+ 0x1be8, 0x4ca6, 0x7728, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5344, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x53c4, 0x0000, 0x0000,
+ 0x0509, 0x1b07, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x206b, 0x0000, 0x0000, 0x0000, 0x370a, 0x8b47, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0949, 0x3b66,
+ 0x0000, 0x0000, 0x178c, 0x1164, 0x0000, 0x63a4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc486, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x04f5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc746,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2446,
+ 0x0000, 0x1d05, 0x0000, 0x0000, 0x6ee9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4128, 0x01c4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ca6,
+ 0x0000, 0x0000, 0x0000, 0x7c06, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0df0, 0x0000, 0x0000, 0x3524,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x62a7, 0x0000, 0x0000,
+ 0x0000, 0xc726, 0x0000, 0xdd06, 0x0000, 0x0000, 0x1d2b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x75e5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7764, 0x1c28, 0x1ea5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1e2e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xf2e6, 0x0000, 0x0000, 0x0000, 0xa086, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x58a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4548, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc386, 0x0000, 0x0000,
+ 0x0000, 0x3764, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x230e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5b24, 0x0000, 0x0000, 0x0000, 0x2b84, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ec6, 0x6a09, 0x2544,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x67a9, 0xb1c6,
+ 0x17ae, 0x0f27, 0x0000, 0x0000, 0x4f09, 0x6587, 0x0000, 0x0000,
+ 0x458b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x368a, 0x1584,
+ 0x424b, 0x6985, 0x1d0d, 0x7b06, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x126a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4325,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b64, 0x0000, 0x0000,
+ 0x6949, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xa167, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb946,
+ 0x4c8c, 0x3105, 0x0000, 0x0000, 0x0000, 0x20c6, 0x03ee, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5e24, 0x44a9, 0x0004, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5705, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6844, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6064,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7325, 0x0000, 0x0000,
+ 0x0000, 0x5445, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2688, 0x3786, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x64ab, 0x1686, 0x0000, 0x0000,
+ 0x22cd, 0x21e7, 0x0000, 0x0000, 0x1acd, 0x3f26, 0x0000, 0x97e7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3068, 0x21e6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcda6, 0x054a, 0x0b86,
+ 0x0000, 0x3964, 0x0000, 0x0000, 0x294c, 0xc2a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e2a, 0x0246,
+ 0x0000, 0x0000, 0x0000, 0xd9c6, 0x0000, 0x0000, 0x0000, 0x78a5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x16c6, 0x0000, 0x0000,
+ 0x082a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x79a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2907, 0x0000, 0x0000, 0x4989, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xdf46, 0x0000, 0x0000, 0x7848, 0xf826, 0x0000, 0x0000,
+ 0x0000, 0x2687, 0x3f8b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4988, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4cc5, 0x632c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x244c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8e06, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6388, 0x59e7, 0x0000, 0x0000, 0x28c8, 0x1a45, 0x0000, 0x0000,
+ 0x0000, 0x57a4, 0x5ec9, 0x3b05, 0x0000, 0x0000, 0x0000, 0xf367,
+ 0x22ca, 0x86e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3e29, 0x0527, 0x0000, 0x0000, 0x4f48, 0x05c5, 0x7828, 0x0000,
+ 0x6548, 0x4184, 0x0000, 0x0000, 0x042d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4285, 0x0000, 0x7ca5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa2a6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xa246, 0x0000, 0x53e6, 0x0000, 0x0000,
+ 0x0000, 0x2644, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x56ab, 0xe3e7, 0x0000, 0x0000,
+ 0x0000, 0x5ee7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf187,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b11, 0x16c5,
+ 0x0000, 0x0000, 0x0000, 0xf587, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4124,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3509, 0x6b27,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x53e8, 0x2905, 0x0000, 0x4224,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5986, 0x0000, 0xbca6,
+ 0x0a0e, 0x0866, 0x0000, 0x0000, 0x0000, 0x0000, 0x0769, 0x11a6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x61e8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbb46,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2aee, 0x35c7, 0x6469, 0x93e7,
+ 0x54a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa9a6, 0x06b0, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x49c6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2927, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3aa4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x398e, 0x0000, 0x0000, 0xd9e6,
+ 0x0000, 0x0000, 0x7868, 0x2a86, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc866, 0x0000, 0x0000, 0x1f4c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x50c8, 0x1b45, 0x0000, 0xe047, 0x000b, 0x0000,
+ 0x0000, 0x4765, 0x0000, 0x38e4, 0x0000, 0x0000, 0x0000, 0x7e86,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4aa9, 0x1426, 0x0000, 0x2ba4,
+ 0x0000, 0x4186, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x284b, 0x3606,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x28aa, 0x1be5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x46c4, 0x0000, 0x0000,
+ 0x0000, 0xae47, 0x3c2b, 0x3686, 0x0000, 0x0604, 0x3928, 0x4c45,
+ 0x5e89, 0x4d45, 0x0000, 0x0000, 0x0000, 0x5e65, 0x0000, 0x9827,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18a4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4408, 0x3d85, 0x0d6e, 0x33c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7de4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00b0, 0x0000, 0x0000, 0xc586, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5424, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe666, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x14a4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6529, 0x6ea6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3e49, 0x0000, 0x0000, 0x0000,
+ 0x264c, 0x0125, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x36a4, 0x5a2a, 0x1245, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1626,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xac26,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1905, 0x0000, 0x77e4,
+ 0x0000, 0x0000, 0x0000, 0xf106, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xb366, 0x0000, 0x3c26, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x11ca, 0x0a84, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7ee5, 0x0000, 0x0000, 0x0000, 0x2764,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ee9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5906,
+ 0x0000, 0x0000, 0x0000, 0xd746, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1bc8, 0x0000, 0x7b2a, 0xb0c7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9f27,
+ 0x434a, 0x5847, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0e6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdea7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x35e7, 0x0c2a, 0x5327, 0x0549, 0x1da7,
+ 0x0000, 0x0000, 0x0000, 0x2107, 0x0000, 0x0000, 0x1aa8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x38e9, 0x0000,
+ 0x0000, 0x0000, 0x7148, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4e0b, 0x0000, 0x47c8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2c44, 0x0000, 0x0000, 0x0000, 0xc2c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x088f, 0x1d67, 0x5a6c, 0xe2a6,
+ 0x0000, 0x0000, 0x0000, 0x77a7, 0x0000, 0x67c5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x02f2, 0x0000, 0x0000, 0x3e05, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4466, 0x1de9, 0x0b05,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xa3c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0a09, 0x8687, 0x0000, 0x0000, 0x0ece, 0x0000,
+ 0x0000, 0x0000, 0x3beb, 0x2247, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e24,
+ 0x0000, 0x0000, 0x53ab, 0x20a7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x01a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x62e6,
+ 0x1f48, 0x5047, 0x0000, 0x0000, 0x0000, 0xb2a7, 0x756a, 0x76a4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6644, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7ac8, 0x2947, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x442a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7666,
+ 0x0000, 0x9486, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7104,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xab86, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x56a4, 0x2f2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x56e7, 0x0000, 0x0000, 0x592a, 0x3047, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1009, 0xc4e7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x350d, 0x6fa7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7108, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4509, 0x2846,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0389, 0xe206, 0x062c, 0x0000, 0x0000, 0x0000, 0x0000, 0xe506,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x34a7, 0x0000, 0x0000, 0x3749, 0x33e6, 0x0000, 0x0000,
+ 0x242b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x19ce, 0x0dc4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x19a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0277, 0xc067,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa786, 0x0000, 0x9547,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x44ac, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd706, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x27e5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0e14, 0x9387, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x78e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf287,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5be8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x702b, 0x1085, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x04ca, 0x68c4, 0x0000, 0x0000, 0x0000, 0x2f65, 0x1b48, 0x0105,
+ 0x528a, 0x7f24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0ded, 0x3066, 0x50e9, 0x6da7, 0x0000, 0x0000, 0x06aa, 0x62c7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x394e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7746,
+ 0x0000, 0x0000, 0x0000, 0x3147, 0x0000, 0xaae6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e44, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb027, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04c8, 0x0f87,
+ 0x2aca, 0x18e7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5a8c, 0x4e84, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6488, 0x2147, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1a07, 0x0000, 0x09e6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5ca8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4bc6,
+ 0x0000, 0xbac6, 0x66a9, 0xc226, 0x0000, 0x0000, 0x10ec, 0x32a5,
+ 0x0000, 0x0000, 0x1648, 0x0c86, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3c24, 0x0000, 0x0000, 0x0000, 0xac46, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x62e5, 0x0428, 0x9967, 0x6b29, 0x0000,
+ 0x3a68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x37e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0acb, 0x1004, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4968, 0x0000, 0x0000, 0x0000, 0x568a, 0x7f47, 0x0000, 0x1864,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc146,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5586, 0x0000, 0x0000, 0x2b28, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2da5, 0x0000, 0xd266,
+ 0x0000, 0x0000, 0x3b0a, 0x0000, 0x362e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0397, 0x0000, 0x0000, 0x0000,
+ 0x7cac, 0x0000, 0x582a, 0x0065, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1ca5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0cc8, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c46,
+ 0x7fc8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x06f6, 0x0000, 0x0e68, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x74a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x57c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd806, 0x0352, 0x3c84, 0x0000, 0x0000, 0x0000, 0x1727,
+ 0x4d4a, 0x3426, 0x0000, 0x6466, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9dc6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f24, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3be7, 0x20ca, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x67c6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x034b, 0x08c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1b2f, 0x0000, 0x5008, 0x0666, 0x0000, 0x0000,
+ 0x2d0d, 0xc647, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5187,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5fc7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2548, 0x5c27, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x51e9, 0x1bc5,
+ 0x7149, 0x0000, 0x0000, 0x7ea6, 0x7be8, 0xfb26, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3eea, 0x0000, 0x0000, 0x0000, 0x1b12, 0x1345,
+ 0x0000, 0x0000, 0x0000, 0x5985, 0x0000, 0x6987, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4da8, 0x1f86, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5d89, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0cee, 0x0000, 0x0057, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4807, 0x0000, 0x0000,
+ 0x0000, 0x5106, 0x0000, 0x0000, 0x0000, 0x2965, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4f0c, 0x0000, 0x0000, 0x0000, 0x40c8, 0x0d65,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6a69, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f04, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x00f4, 0x6e65, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7345, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0b69, 0x7c25, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1908, 0x1064, 0x0158, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2da9, 0xb327, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x038a, 0x0ce5, 0x0000, 0x0000, 0x63c8, 0x7ea5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x04ec, 0xf0a7, 0x0000, 0x6aa6, 0x0000, 0x0000, 0x21ea, 0x40e6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2a4e, 0x0000, 0x0000, 0x2584,
+ 0x3ac9, 0x3465, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6889, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf226,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3124, 0x0000, 0x0000,
+ 0x2ca8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x57eb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3065, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0968, 0x5885, 0x38ab, 0xa8e7,
+ 0x0000, 0x25e4, 0x0000, 0x0000, 0x608a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5da4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8526, 0x0000, 0x0000, 0x59ab, 0x1c46,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f45, 0x35ee, 0x4e46,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x584a, 0x0000, 0x0000, 0x0000,
+ 0x066d, 0x5744, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6786, 0x0000, 0x0000,
+ 0x022a, 0x0000, 0x0000, 0x0000, 0x0000, 0xf127, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a86,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0373, 0x6ce7,
+ 0x3e4c, 0x0000, 0x0caa, 0xe026, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x366a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x78ca, 0x0000, 0x1029, 0xcd87, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7ca7, 0x3ec8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x66e4,
+ 0x0000, 0xf0e7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c49, 0xdb87,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0118, 0x0000, 0x140b, 0x82c7,
+ 0x0000, 0x3d87, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1028, 0x05a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2c28, 0x45c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6225,
+ 0x0000, 0x0000, 0x0000, 0x8f26, 0x17a9, 0x0000, 0x0000, 0x0000,
+ 0x0357, 0x2c25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd06,
+ 0x0000, 0x0000, 0x0000, 0x4bc5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0410, 0x6ae7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xfb66, 0x0000, 0x0000, 0x00b2, 0x0084,
+ 0x0000, 0x0000, 0x39ab, 0x5f87, 0x0000, 0x0000, 0x0000, 0xb526,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb4a6,
+ 0x0000, 0x0000, 0x0000, 0x9206, 0x0000, 0x0000, 0x0000, 0x1d26,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1fe6, 0x0000, 0x0000, 0x1b09, 0x0000, 0x0000, 0x0000,
+ 0x23cb, 0x0000, 0x0000, 0x0000, 0x0077, 0x0000, 0x0000, 0x0000,
+ 0x5a6a, 0x4304, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x23a7,
+ 0x0000, 0x0000, 0x0000, 0x4607, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5644, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9bc7,
+ 0x0000, 0x0000, 0x07f3, 0x0000, 0x042b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x410c, 0xe8c7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4ecb, 0x0000, 0x0000, 0x0000, 0x0000, 0x4545, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7d25, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x37c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xa426, 0x0000, 0x0000, 0x68a9, 0x4f86, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x22cb, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c84,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7e4a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x99e7, 0x0000, 0x2604, 0x0000, 0x3f47,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0356, 0x0000,
+ 0x0ba8, 0xb007, 0x634a, 0x6964, 0x580b, 0x0000, 0x23ad, 0x0e45,
+ 0x3ca8, 0x7047, 0x1229, 0x0000, 0x0268, 0xfe67, 0x0000, 0x0000,
+ 0x0000, 0xf1a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd807, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5d48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7c68, 0xf586, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc1c6,
+ 0x0000, 0x6d46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7f44,
+ 0x0000, 0x0000, 0x0000, 0x65c4, 0x0fcb, 0x0000, 0x0000, 0x9e06,
+ 0x0000, 0x0000, 0x65c8, 0x7765, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7aa6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7268, 0x0705, 0x0000, 0x0000,
+ 0x0c94, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4fcb, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c45,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5ec5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8b07, 0x0000, 0x0000, 0x1ace, 0x0000,
+ 0x0000, 0x0000, 0x10a9, 0x0000, 0x188d, 0x1507, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x9006, 0x0000, 0x9ba7, 0x0000, 0x0000,
+ 0x4348, 0x1526, 0x6cea, 0xe306, 0x0000, 0x0000, 0x33a8, 0x10a6,
+ 0x0000, 0x0000, 0x0000, 0x7a46, 0x0000, 0x0000, 0x056c, 0x0ba6,
+ 0x2e69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x41c5,
+ 0x0329, 0x0000, 0x5e4c, 0x29e4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x16cb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x04e8, 0x4b25, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x16a4, 0x2e48, 0x0000,
+ 0x0000, 0xce86, 0x2cc8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x160d, 0x23c6, 0x0000, 0x6287,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x98e6, 0x6188, 0x1fc7,
+ 0x7d68, 0x7006, 0x0000, 0x0000, 0x0000, 0xb4e7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5d0c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0fd2, 0x0000,
+ 0x052b, 0x6284, 0x0000, 0x0000, 0x0000, 0x4ea5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x24a5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3484, 0x04ae, 0xed86,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x43cc, 0xc447, 0x77a8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2ea8, 0x03e7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0faa, 0x28a4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x286a, 0x0000, 0x0000, 0xc166,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9807, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x18cf, 0xee26, 0x4ea9, 0x01e7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x028f, 0x0966,
+ 0x43eb, 0xa927, 0x0000, 0x0000, 0x0000, 0x42a7, 0x0000, 0x0000,
+ 0x00d5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4345,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2a44, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0171, 0x0006, 0x0000, 0x0000, 0x238a, 0x5265, 0x0000, 0x7ba5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6a07, 0x0000, 0x0000, 0x3f6a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1784, 0x7beb, 0x6e85,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0790, 0x77e7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xcea6, 0x0000, 0x0000, 0x7348, 0x2a27,
+ 0x0000, 0x4fc4, 0x0000, 0x0000, 0x3e8a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x14cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3447, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5f08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9fa6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6048, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1e6a, 0x0b24, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xae86, 0x0000, 0x4605,
+ 0x0000, 0x0000, 0x0069, 0xcf46, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x494a, 0x0000, 0x0000, 0x9ee7,
+ 0x0000, 0x0000, 0x0000, 0x3f25, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4fa6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf366, 0x052a, 0x37a7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0728, 0x17a4, 0x0000, 0x0000, 0x2e6a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4504, 0x0000, 0x6e66, 0x0000, 0x7366, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6d67, 0x0000, 0x0000, 0x0000, 0xdf87, 0x0631, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x52aa, 0x0000, 0x0000, 0xf327, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6346, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8de6, 0x0000, 0x0000, 0x0000, 0x5d25,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a85,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3345,
+ 0x0000, 0x7a04, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x57e6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x176a, 0x2845,
+ 0x0000, 0x0000, 0x0000, 0x1c65, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4609, 0x0000, 0x03f3, 0xae67, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3a47, 0x0000, 0x0000, 0x0000, 0x0000, 0x506a, 0x14e6,
+ 0x0000, 0x0000, 0x0000, 0xb286, 0x0000, 0x3385, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8bc6,
+ 0x4648, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x200b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdd66, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x94c7, 0x1089, 0x0000, 0x084f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x27a4, 0x0000, 0x0000, 0x0000, 0x07e5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb866, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2404, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4c09, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x9926, 0x0000, 0x94a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb786, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5626, 0x0f0a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0037, 0x0000, 0x292e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1c47, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe7e7, 0x0000, 0x0000, 0x39a9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xa847, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0aa6,
+ 0x0000, 0x0000, 0x256e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9266, 0x0000, 0x0000,
+ 0x0000, 0x7a84, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4fa9, 0x22e5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x24a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x4209, 0x0225,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x00b6, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0616, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b2a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6165, 0x0000, 0x1884,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa546, 0x5c2b, 0x5e04,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3387,
+ 0x180e, 0x0a07, 0x0000, 0x0000, 0x010c, 0xb7c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d24,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6866, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2008, 0x04c6, 0x7b4a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b6a, 0x2027,
+ 0x22c8, 0x71e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5da8, 0x12e4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7baa, 0x0000, 0x0000, 0x7bc5, 0x0000, 0x0000, 0x0b49, 0x1845,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3525, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x60c4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x50cc, 0x6764,
+ 0x5e0b, 0x0000, 0x0000, 0x0000, 0x52c9, 0x0000, 0x02cb, 0x02a7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0bea, 0x1de6,
+ 0x0000, 0x0000, 0x0000, 0x35e6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x000f, 0x6d45, 0x0000, 0x0000, 0x212b, 0x0826, 0x0000, 0x0000,
+ 0x0000, 0xa8c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xebe7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6524, 0x0000, 0x5704,
+ 0x0000, 0x8646, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4ec5, 0x0000, 0x0000,
+ 0x6448, 0x0000, 0x0000, 0x0000, 0x0713, 0x6107, 0x0000, 0x7944,
+ 0x0000, 0x0000, 0x63a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x320a, 0x0000, 0x0000, 0xf3e6, 0x0000, 0x0000, 0x052d, 0x0000,
+ 0x016c, 0x0ec6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1f6a, 0x4ce7, 0x0000, 0x0000, 0x0000, 0x8287,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1c25, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2e44, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0d0d, 0x0607, 0x1a2a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7446, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa0c6, 0x0000, 0x5ee6,
+ 0x0000, 0x0f04, 0x3029, 0x0000, 0x0000, 0x0000, 0x35aa, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6685,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18ea, 0x0000,
+ 0x0157, 0x12e6, 0x0000, 0x0000, 0x0000, 0x5f26, 0x2da8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x05d1, 0x87c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x016b, 0xcb06,
+ 0x0756, 0x2b05, 0x0000, 0x0000, 0x7e09, 0xe986, 0x0000, 0x0000,
+ 0x0000, 0x6f05, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x58e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3709, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7249, 0xef26, 0x0000, 0x77c5, 0x0000, 0x6ea7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x69e4, 0x228b, 0x0000, 0x25c9, 0x0824,
+ 0x0000, 0x0000, 0x0000, 0x3fc7, 0x0000, 0xbd47, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x130c, 0x2464, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x234b, 0x49a4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1044, 0x0000, 0x0000, 0x39eb, 0x0545, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2e85, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5505, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7a28, 0xf9a6,
+ 0x0000, 0x0000, 0x0000, 0x6544, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xadc7, 0x0000, 0x0000,
+ 0x0000, 0x5084, 0x0000, 0x0000, 0x6c6a, 0x7ac4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4387, 0x0000, 0x0f67,
+ 0x0000, 0x0000, 0x0000, 0xf746, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x62a8, 0x4de6, 0x0000, 0xd766, 0x0000, 0x9886, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c07, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6f06, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2568, 0xf967,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x628a, 0x1666,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x35e9, 0x1385,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xaba6, 0x04f6, 0x0a06, 0x188c, 0x0000,
+ 0x0000, 0x3f66, 0x0000, 0x0000, 0x0000, 0x50c6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x97c7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x73cb, 0x0000, 0x0000, 0x0000, 0x0029, 0x0e47, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x37c4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d46,
+ 0x0000, 0x0000, 0x0000, 0x3d66, 0x0000, 0xc606, 0x0000, 0x0000,
+ 0x3f68, 0x1f47, 0x0000, 0x0000, 0x0000, 0x13c4, 0x0149, 0x2d47,
+ 0x0033, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3309, 0x1c86, 0x6b8a, 0x3c06, 0x0000, 0x6166,
+ 0x0000, 0x0000, 0x0000, 0x45a4, 0x0000, 0x0000, 0x11c8, 0x18a7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xba46, 0x0170, 0x2f47, 0x278a, 0x8426,
+ 0x0000, 0x0000, 0x0257, 0x4866, 0x256b, 0xc147, 0x0000, 0x1624,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3365, 0x0000, 0x0000, 0x0000, 0x0000, 0x5aea, 0x36e7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbf07, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x074f, 0x0000, 0x3c4a, 0x0000,
+ 0x0000, 0x0000, 0x3f2e, 0xf406, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e45,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7725,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x644b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2445,
+ 0x0000, 0x0000, 0x62eb, 0x0685, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e04,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8086, 0x0000, 0x0000,
+ 0x114a, 0x0000, 0x0000, 0x0000, 0x0000, 0xe267, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x74ca, 0xe3a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2e68, 0x04c4, 0x0000, 0x0000, 0x0000, 0xa207,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a65,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa646, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9ce7, 0x250c, 0x0da5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5286, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x21c9, 0x49e6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8846, 0x0a29, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x30e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x1f28, 0x2847,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb086,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x41ca, 0x4f05, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1d68, 0x1206, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7586, 0x0000, 0x0000, 0x0000, 0x0687, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x26a8, 0x1885, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xef07, 0x0000, 0xa147, 0x0000, 0x55c4,
+ 0x0000, 0x0000, 0x4e2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x338b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0565, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x016d, 0x78e7, 0x5ecc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1b84, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6d28, 0x0167, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6f47, 0x0000, 0x0000, 0x004d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xddc7,
+ 0x312a, 0x20e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6649, 0x3907, 0x0000, 0x0000, 0x1f68, 0x1646, 0x3129, 0x0c25,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5446, 0x150c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x13f2, 0xcce6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0773, 0x74c7, 0x0000, 0x17e4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2b49, 0x14a5, 0x0000, 0x6da5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xa227, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x148e, 0x0000, 0x0000, 0x0000, 0x01f7, 0x1087, 0x1e28, 0x8627,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1c88, 0x2886, 0x06b6, 0x0000, 0x0000, 0x71c7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5bc9, 0x5827,
+ 0x1b28, 0x0924, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4f88, 0x30a5, 0x0000, 0xb026, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6fa6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x02a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a2c, 0x0000,
+ 0x0000, 0x0000, 0x77e8, 0x0000, 0x0000, 0x0000, 0x0000, 0xb326,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x15cc, 0x17a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x02c8, 0x0046, 0x0000, 0x0000, 0x65eb, 0x2c47, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x352c, 0x0000, 0x3368, 0x0786, 0x01b3, 0xc967,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb8c6, 0x4a8b, 0x0000,
+ 0x0000, 0x31c6, 0x0000, 0x0647, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x180b, 0x90e7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a04, 0x1bea, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1ea8, 0x0807,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x22ce, 0x0000, 0x4b88, 0x0000,
+ 0x0000, 0xbbc6, 0x212a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x26cc, 0xdc67, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1025, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa986,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3f2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7d0b, 0x0000, 0x0000, 0x78c6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x68e6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4fa5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x49c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x2305, 0x0000, 0x0000,
+ 0x0000, 0xad46, 0x0000, 0x0000, 0x0000, 0x2325, 0x0000, 0x8507,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x72a6, 0x0000, 0x0000,
+ 0x01f5, 0x4567, 0x0000, 0x0000, 0x7ec9, 0xeb66, 0x0000, 0x0000,
+ 0x0000, 0x78a6, 0x0000, 0x0000, 0x0ead, 0x0427, 0x0000, 0x0000,
+ 0x0000, 0x6425, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6da4,
+ 0x0000, 0x6706, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2da4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x60cb, 0x00e5, 0x0000, 0x35c6,
+ 0x0000, 0x0000, 0x1cea, 0x2d05, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x66c9, 0x5c86, 0x0000, 0x0000,
+ 0x7428, 0xb9a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a84, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7d26, 0x0000, 0x0000, 0x0000, 0x0000, 0x046f, 0x67e4,
+ 0x0000, 0x0000, 0x300c, 0x3927, 0x0000, 0x0000, 0x0000, 0xa8e6,
+ 0x0000, 0x0367, 0x0000, 0x0000, 0x7b08, 0x0000, 0x2109, 0x4505,
+ 0x0000, 0x3224, 0x0000, 0x0000, 0x0000, 0x58c6, 0x0000, 0x9766,
+ 0x0000, 0x0000, 0x0177, 0x19a4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00aa, 0x4867, 0x0000, 0x59a4, 0x0000, 0x0000, 0x7e68, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x64a4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3d24, 0x0000, 0x0000, 0x0000, 0x8006, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f87,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3b29, 0x0000, 0x0000, 0x0000,
+ 0x526c, 0x6c06, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x130a, 0x6667, 0x0000, 0x0667, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1049, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1ca8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5444, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6044, 0x068b, 0x09e5, 0x0000, 0x0000,
+ 0x0000, 0xd046, 0x0000, 0x3326, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1866, 0x0000, 0x5604, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6f25, 0x15c8, 0x1404, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6d06, 0x0000, 0x72c6, 0x4728, 0x2187, 0x0000, 0x0000,
+ 0x0000, 0x9906, 0x0000, 0xaa26, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2ec5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5b65, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x17cb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x194a, 0x3f45, 0x3789, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6868, 0x0000, 0x0237, 0xbec7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3ba7, 0x0000, 0x0000, 0x7c4a, 0xabc6, 0x0992, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2c68, 0x23e7,
+ 0x0000, 0xada6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x38e8, 0x3005, 0x0000, 0x0000, 0x0000, 0x2105, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7d28, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0386,
+ 0x0000, 0x0000, 0x0000, 0x6a64, 0x15ec, 0x2ce7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x23ea, 0x5c84,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6b26, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6669, 0xaf46, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x15cd, 0x1c05, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xce27, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x51e8, 0x47a4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x100b, 0x2be7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x72c5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x55e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xbea6, 0x0000, 0x0000, 0x0000, 0x7e24,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2a84,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6baa, 0x0000, 0x160b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c11, 0x7b25,
+ 0x0000, 0x4ce4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xefe7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8d66,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1ee4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0368, 0x02e7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04cd, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7ee4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8806, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc626,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1c6a, 0x0000, 0x0000, 0x0000,
+ 0x3bc8, 0x2d06, 0x0000, 0x0000, 0x0000, 0x0be7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5768, 0x0000, 0x0000, 0x0000,
+ 0x034e, 0x0000, 0x0000, 0x0000, 0x0000, 0x8be7, 0x0000, 0x0000,
+ 0x0000, 0x5c64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5ca9, 0x0864, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3a08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x054e, 0x0000, 0x0c0a, 0x0000, 0x0000, 0x0000, 0x0350, 0x2ac5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1968, 0x0000,
+ 0x0000, 0x3824, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2009, 0x26e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5eca, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6765, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x48ac, 0x0805, 0x0000, 0x82e7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2406, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xabe6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa3a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2f0c, 0x0186,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1347, 0x0000, 0xbe06,
+ 0x0000, 0xdb26, 0x0bec, 0x3ec6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x21a4, 0x2468, 0x95a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x01f4, 0x0000, 0x0000, 0x0000, 0x0000, 0xa7a6, 0x0000, 0x7f26,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6b2a, 0xe246, 0x42a8, 0x0000, 0x0000, 0xb5a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6888, 0x1a64, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0270, 0x0000, 0x1388, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7e25, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6686, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0017, 0x1c85, 0x0000, 0x0000, 0x0000, 0x8d67,
+ 0x0000, 0x9f86, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a2a, 0xe006,
+ 0x0000, 0x0000, 0x30a9, 0x2465, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x41aa, 0x0000,
+ 0x0000, 0x0000, 0x38ae, 0x0000, 0x0000, 0x0000, 0x0000, 0x5347,
+ 0x0000, 0x0000, 0x0000, 0x34c4, 0x0011, 0x2c65, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x14ab, 0x0000, 0x2089, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c25, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcb26, 0x0000, 0x0000,
+ 0x0000, 0x1d45, 0x0000, 0xace7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2648, 0x0000, 0x0000, 0x0000,
+ 0x644c, 0xf026, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x168d, 0x0000, 0x0000, 0x0000, 0x0000, 0xa407, 0x65c9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5865, 0x0000, 0x0000, 0x0000, 0xbaa7, 0x016a, 0x07a7,
+ 0x5bac, 0x0000, 0x0000, 0x0000, 0x2aa9, 0x0000, 0x0000, 0x0000,
+ 0x0c4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7ec8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x11cf, 0x0cc6, 0x0000, 0x0000,
+ 0x03d7, 0x0000, 0x0000, 0x66e7, 0x0000, 0x82a6, 0x0000, 0x0000,
+ 0x0000, 0xf147, 0x0000, 0xbd06, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0ae6, 0x0000, 0x9b66, 0x1ea9, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0608, 0x0887,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0fc8, 0x09a7, 0x4e29, 0x7544, 0x0000, 0x0000, 0x2bea, 0x0000,
+ 0x0000, 0x0000, 0x15ca, 0xd086, 0x0000, 0x5867, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3265, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d7, 0x0000,
+ 0x0000, 0x2346, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0109, 0x0584, 0x0000, 0x0000, 0x2d6a, 0x0e67, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4429, 0x5f27, 0x0000, 0x0000, 0x6869, 0x9cc6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7448, 0xf206, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x51ac, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2b08, 0x0000, 0x0000, 0xb966,
+ 0x542b, 0x1726, 0x0000, 0x0000, 0x3988, 0x0ba7, 0x5e28, 0x3bc5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7f85, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0ce4, 0x0000, 0x0000,
+ 0x0000, 0x3e64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x19ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c04,
+ 0x0000, 0x7907, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x006a, 0x0000, 0x0000, 0x0000, 0x0000, 0x31e7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1c09, 0x4666, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5806, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc2e6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6ba8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7646, 0x29ac, 0x5d45, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x71c4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5186, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xae26, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbd46, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x192a, 0x0000, 0x3fca, 0x59a7, 0x0000, 0x0000,
+ 0x4208, 0x0000, 0x0000, 0x0000, 0x0000, 0x0284, 0x0000, 0x0000,
+ 0x0000, 0x9c66, 0x0000, 0x0000, 0x0000, 0x9166, 0x0000, 0x0000,
+ 0x0000, 0x2666, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8867,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x35a5, 0x0000, 0x0000, 0x0000, 0x6e24,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4da4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c06, 0x0000, 0x2b86,
+ 0x0000, 0x6c85, 0x0000, 0x0000, 0x0000, 0x0000, 0x3628, 0x0000,
+ 0x0000, 0x0000, 0x606a, 0xbae7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1aea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f8d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x06ec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0e13, 0x07c7, 0x0000, 0x6b04, 0x21cc, 0x0000,
+ 0x4788, 0x0000, 0x0000, 0x0000, 0x0000, 0x7566, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2c06, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x50e4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0152, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1b8a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3a0e, 0x0000, 0x0000, 0x0da4, 0x0000, 0x0000,
+ 0x0000, 0xda46, 0x0000, 0x0000, 0x0000, 0x4066, 0x0000, 0x0000,
+ 0x0000, 0x46c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x086a, 0x0504, 0x0000, 0x0000, 0x5a49, 0x7c07, 0x0000, 0x0000,
+ 0x736b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8f27,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4707, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1ee9, 0x0000, 0x0000, 0x0000, 0x0000, 0x50a4,
+ 0x0000, 0x0000, 0x290c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaa66,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa006, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00f6, 0x0385, 0x2d09, 0x1447, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f86,
+ 0x0000, 0x0000, 0x6829, 0x6bc6, 0x0000, 0x6b05, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5c0a, 0x0b85, 0x0000, 0x0000,
+ 0x7688, 0xf306, 0x0000, 0xb8e6, 0x07ea, 0x49c5, 0x0000, 0x0000,
+ 0x0000, 0xbe26, 0x0000, 0x0000, 0x0000, 0x58a6, 0x0000, 0x0000,
+ 0x07b4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3c69, 0x0000, 0x0000, 0x0000, 0x0000, 0x97a6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x03b1, 0x7fc4, 0x0000, 0xd607,
+ 0x0000, 0x3a46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b64,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x156e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1e2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7888, 0xfaa6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8986, 0x0000, 0x0000,
+ 0x0000, 0x7747, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xf4c7, 0x0000, 0x0000, 0x0448, 0x44a6,
+ 0x7c4c, 0x0000, 0x0000, 0x3827, 0x1132, 0x6a47, 0x0000, 0x0000,
+ 0x53c8, 0x1244, 0x0000, 0x0000, 0x0000, 0x0000, 0x40c9, 0x13e6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x12ed, 0x0000, 0x0000, 0x8066, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7aea, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7c27, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x11aa, 0x3ea7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3885, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1d28, 0x12a5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x48cc, 0x0000, 0x0000, 0x0000, 0x6428, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x08c4, 0x0000, 0x0000,
+ 0x2e2a, 0x0000, 0x0490, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x198c, 0x5a27, 0x35ca, 0x1e27, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xe326, 0x0210, 0x86c6, 0x7faa, 0x0000, 0x0000, 0x32c5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x08a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xe4c7, 0x0000, 0x0000, 0x0000, 0x6707,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6745, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6609, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d05, 0x59a8, 0xe6a7,
+ 0x0000, 0x34e7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3fc8, 0x0000, 0x0000, 0x8306, 0x0000, 0x0000,
+ 0x0000, 0x4d46, 0x0000, 0x0000, 0x0000, 0x4104, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7bc8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2824, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8de7, 0x0000, 0x0000, 0x7328, 0x0000,
+ 0x0000, 0x0000, 0x0309, 0x31a5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6b06, 0x0000, 0x0000, 0x0000, 0x1167,
+ 0x234d, 0x7aa5, 0x0000, 0x2405, 0x0000, 0x0000, 0x0000, 0xec47,
+ 0x5168, 0x0704, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x20ac, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d28, 0xaf66,
+ 0x0000, 0x96a6, 0x0000, 0x0000, 0x466b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x29a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2e24, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4dc6, 0x0000, 0x0000,
+ 0x0000, 0xafe6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e0a, 0x1407,
+ 0x0000, 0x2d64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4d69, 0x0000, 0x15cb, 0x2486,
+ 0x0000, 0x0000, 0x520a, 0x4d06, 0x0000, 0x0000, 0x0000, 0x55a6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x50e7, 0x0000, 0x0000,
+ 0x0000, 0x4ee5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9e66, 0x0000, 0x0000,
+ 0x0000, 0xe0a6, 0x0000, 0x0000, 0x0000, 0xd287, 0x0000, 0x0000,
+ 0x3aa9, 0x0000, 0x4268, 0x99c7, 0x092b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x218c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0cc9, 0x45c6, 0x0daa, 0x0825,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4a68, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2eca, 0xe507, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x020b, 0x0000, 0x32a9, 0x00c6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e25,
+ 0x0000, 0xbae6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x11c5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02af, 0x3a45,
+ 0x02ec, 0x2025, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x09ac, 0x3287, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5908, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6b88, 0xe706, 0x0000, 0x0000, 0x518c, 0x4ea6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x01b8, 0x2f24, 0x0000, 0xe647,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xbba6, 0x0000, 0x0000, 0x0000, 0xee47, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3d64, 0x1d4a, 0x1564, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4eea, 0x9447, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7469, 0x0000, 0x154b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc666, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5fa5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3505, 0x0000, 0x0000,
+ 0x5948, 0x0000, 0x0000, 0x0000, 0x0000, 0x55a7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x23aa, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x35a4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x08ea, 0x0247,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0e8e, 0x6787, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x242a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5464, 0x0000, 0x0000, 0x0000, 0xb206,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x50e6, 0x0000, 0x0000,
+ 0x0000, 0xa6c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x048b, 0x1a26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2ac4, 0x0000, 0x0000, 0x0000, 0x7404, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xe5c7, 0x0ed4, 0x6b07, 0x51cb, 0x27c4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x7267,
+ 0x6fe9, 0x38c6, 0x0000, 0x0000, 0x402c, 0xb227, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x62ea, 0x0000, 0x132c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6384, 0x71a9, 0x37a6,
+ 0x2b2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4846, 0x0000, 0x0000, 0x0000, 0xad66, 0x0000, 0x0000,
+ 0x0000, 0x4565, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5fc8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x43a7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6e06, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbc46,
+ 0x0000, 0x0000, 0x7aeb, 0x0000, 0x6009, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4904, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5c2c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1c44, 0x03c8, 0x3545, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0eb3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x39c7, 0x0000, 0x0000, 0x0000, 0x3024, 0x0000, 0x31c5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2b64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0fa9, 0x9d67,
+ 0x5088, 0x1105, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3aa7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaae7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x59e5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb1e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5da6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4448, 0x50a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x22ac, 0x0000, 0x0000, 0x9f66, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x38a6, 0x4308, 0x4564, 0x0000, 0x0000,
+ 0x7b6a, 0x8a67, 0x0000, 0x0000, 0x0b4a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b84, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2024, 0x0000, 0xdd07,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x85e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a66,
+ 0x0000, 0x6864, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xfac6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5709, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0be9, 0xd6c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0345, 0x0000, 0x44c4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x70a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x66c8, 0x0000, 0x0000, 0x0f46, 0x0000, 0x0000, 0x0000, 0x64e6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20c7, 0x0000, 0x4d85,
+ 0x4b28, 0x0444, 0x0000, 0x0000, 0x1549, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4324, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2985, 0x0000, 0x0000, 0x1a0f, 0xeea6,
+ 0x16c8, 0x20a6, 0x0000, 0x0000, 0x0000, 0xd726, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x74a4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc926, 0x0000, 0x6fe7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6585,
+ 0x0000, 0x0000, 0x75c9, 0xef86, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6147, 0x0000, 0x0000, 0x0000, 0x1124,
+ 0x0000, 0xa446, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xcfa6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc6e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x668b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1729, 0x0b25,
+ 0x0000, 0x9106, 0x1ccc, 0x00c5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x07eb, 0x03a6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xd986, 0x0000, 0x0000, 0x1628, 0x1547,
+ 0x0000, 0xf526, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b6b, 0x0000,
+ 0x022c, 0x0587, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x21c5, 0x0000, 0x2505, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbe66, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5eab, 0x00e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x424a, 0x4987, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6246,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4887, 0x4e68, 0x0b07,
+ 0x37e9, 0x0726, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x69a8, 0x5be6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x03e5, 0x01ec, 0x0000, 0x398a, 0x4125, 0x018c, 0x3506,
+ 0x0000, 0x0000, 0x0000, 0xa2c7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a65, 0x0000, 0x0000, 0x0000, 0x01a5,
+ 0x4489, 0x0c26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb807, 0x388b, 0xdce7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e71, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc0e6, 0x0000, 0x8ae7,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0028, 0x0000, 0x2ce8, 0x3d05,
+ 0x0000, 0x2166, 0x0000, 0x0000, 0x0000, 0xf7e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9066, 0x0000, 0xc4e6,
+ 0x0000, 0xb3c6, 0x03e9, 0x0000, 0x0000, 0x2f25, 0x0cb1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3b89, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfce7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xe587, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0470, 0x6965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4544, 0x0000, 0x0000, 0x0000, 0x4305, 0x4e2b, 0x19e5,
+ 0x0000, 0xab67, 0x0000, 0x0000, 0x0000, 0x3504, 0x6228, 0x2a07,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7004, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x036b, 0x5dc7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1dcc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2fec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4b64, 0x5aaa, 0x0164, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b84, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xc206, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5504, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x366b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb2e7, 0x0000, 0x0000,
+ 0x01b4, 0x0e05, 0x0000, 0x0000, 0x2c8a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf566,
+ 0x0000, 0x0000, 0x0000, 0x9b86, 0x024c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6c66, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0649, 0x5884, 0x092a, 0x4a07, 0x0000, 0x3ec4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x142a, 0x2b66,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3ac8, 0x0424, 0x0000, 0x1ec7,
+ 0x4768, 0x0146, 0x0000, 0x3a26, 0x4cc8, 0x0000, 0x1daa, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x030d, 0x0245, 0x0000, 0x3f46,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0436, 0x26a4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1189, 0x0000, 0x0000, 0x0000, 0x0000, 0x8406,
+ 0x0000, 0x0000, 0x0000, 0xd506, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8186, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa466, 0x360a, 0x0ac5,
+ 0x2108, 0x4185, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0d6a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0f6a, 0x73e4, 0x0000, 0x0000, 0x77aa, 0x8fa7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6145, 0x0000, 0x3ec5, 0x1888, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xa406, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6ae5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05aa, 0xaf07,
+ 0x0000, 0x0000, 0x0000, 0x7d64, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8926, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4428, 0x4c87, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x06cb, 0x0000, 0x0000, 0x0000, 0x0000, 0x1587, 0x0000, 0x0000,
+ 0x0000, 0x80a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4704, 0x0000, 0x0000, 0x0000, 0x5b84,
+ 0x4d2a, 0x0000, 0x0000, 0x79c6, 0x0bcd, 0x7ba7, 0x5ba8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdfa7, 0x0000, 0x0000,
+ 0x532c, 0xfbe7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x64ca, 0x23e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc066,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x16cd, 0xc367, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c87, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xcae6, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6dc8, 0xe526, 0x0000, 0xc426,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0bac, 0x0000, 0x5968, 0x7c44, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x07e4, 0x0000, 0x49e4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5da5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x446c, 0x2dc5, 0x0000, 0x0000, 0x0000, 0xda67, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b27, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb6e6,
+ 0x0000, 0x6086, 0x6faa, 0x0000, 0x0000, 0x0000, 0x0614, 0x0000,
+ 0x0000, 0x75a5, 0x0000, 0x0000, 0x564a, 0xdf27, 0x0d4b, 0x3707,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0411, 0x0000, 0x2989, 0x1b04, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a85, 0x0000, 0x0000,
+ 0x340a, 0x4687, 0x0000, 0x72c4, 0x0000, 0xdc86, 0x0000, 0x0000,
+ 0x0078, 0x0000, 0x0000, 0x2245, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3ea8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6a6a, 0x5ce5, 0x0000, 0x0624, 0x0000, 0x6de6, 0x0000, 0x0000,
+ 0x05e8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c24,
+ 0x0000, 0x9646, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x05e9, 0x2205, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb5e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6f69, 0xeee7, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f24, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x32e4,
+ 0x0000, 0x16e7, 0x0000, 0x0000, 0x3d4d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x046b, 0x5b66, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6664, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x47e4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x05b1, 0x6647, 0x0000, 0x0000, 0x09ab, 0x1bc6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6a2c, 0xeb06, 0x0000, 0x0000, 0x0000, 0x4f26,
+ 0x0000, 0xa386, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0aca, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6624, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e45, 0x0000, 0x0000,
+ 0x0000, 0x7246, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6c2a, 0x0000, 0x0000, 0x3544,
+ 0x31e8, 0x0746, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4349, 0x0cc7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6d87, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1169, 0x46c5, 0x0000, 0x07e7,
+ 0x0192, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0068, 0x0e46,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x74a5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5686, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5e0a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2ee4, 0x0000, 0x7e66, 0x0000, 0x0000,
+ 0x0c09, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x128d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2a28, 0x0707,
+ 0x534a, 0x0000, 0x1ec8, 0x3145, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x36a9, 0x0000, 0x0000, 0x0000,
+ 0x3f4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d66, 0x0000, 0x9167,
+ 0x0000, 0x2904, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7d08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5d08, 0x0ca4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ac5,
+ 0x0000, 0x0000, 0x160a, 0x0000, 0x124c, 0x0126, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x68e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1bec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1ed2, 0xf166, 0x03ab, 0x0000, 0x0000, 0xdd67,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x69c6, 0x00ca, 0x13a5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6d65, 0x0000, 0x0000, 0x3ba9, 0x60a5, 0x162c, 0x4fe4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xda66,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x13cd, 0x6d26, 0x0000, 0x5264,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x30e5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5388, 0x6e64, 0x0000, 0x09c6, 0x4e8c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb686, 0x0000, 0x7846, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3985, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x044b, 0x18e4, 0x0000, 0x0000, 0x0000, 0x3086, 0x3b4e, 0x0000,
+ 0x21eb, 0x0000, 0x29a9, 0x4c06, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0636, 0x0000, 0x7b8c, 0x0000, 0x5868, 0x4d26,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e86,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc5e6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x23ab, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2b07,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x406a, 0xd5a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3289, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e84,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0885, 0x1b0b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3d08, 0x2c26, 0x0000, 0x0000, 0x1629, 0x1d87,
+ 0x0000, 0x0000, 0x394c, 0x3d44, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5e8c, 0xbc06, 0x0000, 0x5ea6, 0x0000, 0xd8e7,
+ 0x0000, 0x0000, 0x0d88, 0x4ac5, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_DICTIONARY_HASH_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode.cc
new file mode 100644
index 00000000000..3e1c79ad56c
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode.cc
@@ -0,0 +1,1175 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Implementation of Brotli compressor.
+
+#include "./encode.h"
+
+#include <algorithm>
+#include <cstdlib> /* free, malloc */
+#include <cstring> /* memset */
+#include <limits>
+
+#include "./backward_references.h"
+#include "./bit_cost.h"
+#include "./block_splitter.h"
+#include "./brotli_bit_stream.h"
+#include "./cluster.h"
+#include "./context.h"
+#include "./metablock.h"
+#include "./transform.h"
+#include "./compress_fragment.h"
+#include "./compress_fragment_two_pass.h"
+#include "./entropy_encode.h"
+#include "./fast_log.h"
+#include "./hash.h"
+#include "./histogram.h"
+#include "./prefix.h"
+#include "./utf8_util.h"
+#include "./write_bits.h"
+
+namespace brotli {
+
+static const int kMinQualityForBlockSplit = 4;
+static const int kMinQualityForContextModeling = 5;
+static const int kMinQualityForOptimizeHistograms = 4;
+// For quality 2 there is no block splitting, so we buffer at most this much
+// literals and commands.
+static const size_t kMaxNumDelayedSymbols = 0x2fff;
+
+#define COPY_ARRAY(dst, src) memcpy(dst, src, sizeof(src));
+
+static void RecomputeDistancePrefixes(Command* cmds,
+ size_t num_commands,
+ uint32_t num_direct_distance_codes,
+ uint32_t distance_postfix_bits) {
+ if (num_direct_distance_codes == 0 && distance_postfix_bits == 0) {
+ return;
+ }
+ for (size_t i = 0; i < num_commands; ++i) {
+ Command* cmd = &cmds[i];
+ if (cmd->copy_len() && cmd->cmd_prefix_ >= 128) {
+ PrefixEncodeCopyDistance(cmd->DistanceCode(),
+ num_direct_distance_codes,
+ distance_postfix_bits,
+ &cmd->dist_prefix_,
+ &cmd->dist_extra_);
+ }
+ }
+}
+
+/* Wraps 64-bit input position to 32-bit ringbuffer position preserving
+ "not-a-first-lap" feature. */
+static uint32_t WrapPosition(uint64_t position) {
+ uint32_t result = static_cast<uint32_t>(position);
+ if (position > (1u << 30)) {
+ result = (result & ((1u << 30) - 1)) | (1u << 30);
+ }
+ return result;
+}
+
+uint8_t* BrotliCompressor::GetBrotliStorage(size_t size) {
+ if (storage_size_ < size) {
+ delete[] storage_;
+ storage_ = new uint8_t[size];
+ storage_size_ = size;
+ }
+ return storage_;
+}
+
+static size_t MaxHashTableSize(int quality) {
+ return quality == 0 ? 1 << 15 : 1 << 17;
+}
+
+static size_t HashTableSize(size_t max_table_size, size_t input_size) {
+ size_t htsize = 256;
+ while (htsize < max_table_size && htsize < input_size) {
+ htsize <<= 1;
+ }
+ return htsize;
+}
+
+int* BrotliCompressor::GetHashTable(int quality,
+ size_t input_size,
+ size_t* table_size) {
+ // Use smaller hash table when input.size() is smaller, since we
+ // fill the table, incurring O(hash table size) overhead for
+ // compression, and if the input is short, we won't need that
+ // many hash table entries anyway.
+ const size_t max_table_size = MaxHashTableSize(quality);
+ assert(max_table_size >= 256);
+ size_t htsize = HashTableSize(max_table_size, input_size);
+
+ int* table;
+ if (htsize <= sizeof(small_table_) / sizeof(small_table_[0])) {
+ table = small_table_;
+ } else {
+ if (large_table_ == NULL) {
+ large_table_ = new int[max_table_size];
+ }
+ table = large_table_;
+ }
+
+ *table_size = htsize;
+ memset(table, 0, htsize * sizeof(*table));
+ return table;
+}
+
+static void EncodeWindowBits(int lgwin, uint8_t* last_byte,
+ uint8_t* last_byte_bits) {
+ if (lgwin == 16) {
+ *last_byte = 0;
+ *last_byte_bits = 1;
+ } else if (lgwin == 17) {
+ *last_byte = 1;
+ *last_byte_bits = 7;
+ } else if (lgwin > 17) {
+ *last_byte = static_cast<uint8_t>(((lgwin - 17) << 1) | 1);
+ *last_byte_bits = 4;
+ } else {
+ *last_byte = static_cast<uint8_t>(((lgwin - 8) << 4) | 1);
+ *last_byte_bits = 7;
+ }
+}
+
+// Initializes the command and distance prefix codes for the first block.
+static void InitCommandPrefixCodes(uint8_t cmd_depths[128],
+ uint16_t cmd_bits[128],
+ uint8_t cmd_code[512],
+ size_t* cmd_code_numbits) {
+ static const uint8_t kDefaultCommandDepths[128] = {
+ 0, 4, 4, 5, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
+ 0, 0, 0, 4, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7,
+ 7, 7, 10, 10, 10, 10, 10, 10, 0, 4, 4, 5, 5, 5, 6, 6,
+ 7, 8, 8, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4,
+ 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 7, 7, 7, 8, 10,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ };
+ static const uint16_t kDefaultCommandBits[128] = {
+ 0, 0, 8, 9, 3, 35, 7, 71,
+ 39, 103, 23, 47, 175, 111, 239, 31,
+ 0, 0, 0, 4, 12, 2, 10, 6,
+ 13, 29, 11, 43, 27, 59, 87, 55,
+ 15, 79, 319, 831, 191, 703, 447, 959,
+ 0, 14, 1, 25, 5, 21, 19, 51,
+ 119, 159, 95, 223, 479, 991, 63, 575,
+ 127, 639, 383, 895, 255, 767, 511, 1023,
+ 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 27, 59, 7, 39, 23, 55, 30, 1, 17, 9, 25, 5, 0, 8, 4, 12,
+ 2, 10, 6, 21, 13, 29, 3, 19, 11, 15, 47, 31, 95, 63, 127, 255,
+ 767, 2815, 1791, 3839, 511, 2559, 1535, 3583, 1023, 3071, 2047, 4095,
+ };
+ COPY_ARRAY(cmd_depths, kDefaultCommandDepths);
+ COPY_ARRAY(cmd_bits, kDefaultCommandBits);
+
+ // Initialize the pre-compressed form of the command and distance prefix
+ // codes.
+ static const uint8_t kDefaultCommandCode[] = {
+ 0xff, 0x77, 0xd5, 0xbf, 0xe7, 0xde, 0xea, 0x9e, 0x51, 0x5d, 0xde, 0xc6,
+ 0x70, 0x57, 0xbc, 0x58, 0x58, 0x58, 0xd8, 0xd8, 0x58, 0xd5, 0xcb, 0x8c,
+ 0xea, 0xe0, 0xc3, 0x87, 0x1f, 0x83, 0xc1, 0x60, 0x1c, 0x67, 0xb2, 0xaa,
+ 0x06, 0x83, 0xc1, 0x60, 0x30, 0x18, 0xcc, 0xa1, 0xce, 0x88, 0x54, 0x94,
+ 0x46, 0xe1, 0xb0, 0xd0, 0x4e, 0xb2, 0xf7, 0x04, 0x00,
+ };
+ static const int kDefaultCommandCodeNumBits = 448;
+ COPY_ARRAY(cmd_code, kDefaultCommandCode);
+ *cmd_code_numbits = kDefaultCommandCodeNumBits;
+}
+
+// Decide about the context map based on the ability of the prediction
+// ability of the previous byte UTF8-prefix on the next byte. The
+// prediction ability is calculated as shannon entropy. Here we need
+// shannon entropy instead of 'BitsEntropy' since the prefix will be
+// encoded with the remaining 6 bits of the following byte, and
+// BitsEntropy will assume that symbol to be stored alone using Huffman
+// coding.
+static void ChooseContextMap(int quality,
+ uint32_t* bigram_histo,
+ size_t* num_literal_contexts,
+ const uint32_t** literal_context_map) {
+ uint32_t monogram_histo[3] = { 0 };
+ uint32_t two_prefix_histo[6] = { 0 };
+ size_t total = 0;
+ for (size_t i = 0; i < 9; ++i) {
+ total += bigram_histo[i];
+ monogram_histo[i % 3] += bigram_histo[i];
+ size_t j = i;
+ if (j >= 6) {
+ j -= 6;
+ }
+ two_prefix_histo[j] += bigram_histo[i];
+ }
+ size_t dummy;
+ double entropy1 = ShannonEntropy(monogram_histo, 3, &dummy);
+ double entropy2 = (ShannonEntropy(two_prefix_histo, 3, &dummy) +
+ ShannonEntropy(two_prefix_histo + 3, 3, &dummy));
+ double entropy3 = 0;
+ for (size_t k = 0; k < 3; ++k) {
+ entropy3 += ShannonEntropy(bigram_histo + 3 * k, 3, &dummy);
+ }
+
+ assert(total != 0);
+ double scale = 1.0 / static_cast<double>(total);
+ entropy1 *= scale;
+ entropy2 *= scale;
+ entropy3 *= scale;
+
+ static const uint32_t kStaticContextMapContinuation[64] = {
+ 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+ static const uint32_t kStaticContextMapSimpleUTF8[64] = {
+ 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+ if (quality < 7) {
+ // 3 context models is a bit slower, don't use it at lower qualities.
+ entropy3 = entropy1 * 10;
+ }
+ // If expected savings by symbol are less than 0.2 bits, skip the
+ // context modeling -- in exchange for faster decoding speed.
+ if (entropy1 - entropy2 < 0.2 &&
+ entropy1 - entropy3 < 0.2) {
+ *num_literal_contexts = 1;
+ } else if (entropy2 - entropy3 < 0.02) {
+ *num_literal_contexts = 2;
+ *literal_context_map = kStaticContextMapSimpleUTF8;
+ } else {
+ *num_literal_contexts = 3;
+ *literal_context_map = kStaticContextMapContinuation;
+ }
+}
+
+static void DecideOverLiteralContextModeling(
+ const uint8_t* input,
+ size_t start_pos,
+ size_t length,
+ size_t mask,
+ int quality,
+ ContextType* literal_context_mode,
+ size_t* num_literal_contexts,
+ const uint32_t** literal_context_map) {
+ if (quality < kMinQualityForContextModeling || length < 64) {
+ return;
+ }
+ // Gather bigram data of the UTF8 byte prefixes. To make the analysis of
+ // UTF8 data faster we only examine 64 byte long strides at every 4kB
+ // intervals.
+ const size_t end_pos = start_pos + length;
+ uint32_t bigram_prefix_histo[9] = { 0 };
+ for (; start_pos + 64 <= end_pos; start_pos += 4096) {
+ static const int lut[4] = { 0, 0, 1, 2 };
+ const size_t stride_end_pos = start_pos + 64;
+ int prev = lut[input[start_pos & mask] >> 6] * 3;
+ for (size_t pos = start_pos + 1; pos < stride_end_pos; ++pos) {
+ const uint8_t literal = input[pos & mask];
+ ++bigram_prefix_histo[prev + lut[literal >> 6]];
+ prev = lut[literal >> 6] * 3;
+ }
+ }
+ *literal_context_mode = CONTEXT_UTF8;
+ ChooseContextMap(quality, &bigram_prefix_histo[0], num_literal_contexts,
+ literal_context_map);
+}
+
+static bool ShouldCompress(const uint8_t* data,
+ const size_t mask,
+ const uint64_t last_flush_pos,
+ const size_t bytes,
+ const size_t num_literals,
+ const size_t num_commands) {
+ if (num_commands < (bytes >> 8) + 2) {
+ if (num_literals > 0.99 * static_cast<double>(bytes)) {
+ uint32_t literal_histo[256] = { 0 };
+ static const uint32_t kSampleRate = 13;
+ static const double kMinEntropy = 7.92;
+ const double bit_cost_threshold =
+ static_cast<double>(bytes) * kMinEntropy / kSampleRate;
+ size_t t = (bytes + kSampleRate - 1) / kSampleRate;
+ uint32_t pos = static_cast<uint32_t>(last_flush_pos);
+ for (size_t i = 0; i < t; i++) {
+ ++literal_histo[data[pos & mask]];
+ pos += kSampleRate;
+ }
+ if (BitsEntropy(literal_histo, 256) > bit_cost_threshold) {
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+static void WriteMetaBlockInternal(const uint8_t* data,
+ const size_t mask,
+ const uint64_t last_flush_pos,
+ const size_t bytes,
+ const bool is_last,
+ const int quality,
+ const bool font_mode,
+ const uint8_t prev_byte,
+ const uint8_t prev_byte2,
+ const size_t num_literals,
+ const size_t num_commands,
+ Command* commands,
+ const int* saved_dist_cache,
+ int* dist_cache,
+ size_t* storage_ix,
+ uint8_t* storage) {
+ if (bytes == 0) {
+ // Write the ISLAST and ISEMPTY bits.
+ WriteBits(2, 3, storage_ix, storage);
+ *storage_ix = (*storage_ix + 7u) & ~7u;
+ return;
+ }
+
+ if (!ShouldCompress(data, mask, last_flush_pos, bytes,
+ num_literals, num_commands)) {
+ // Restore the distance cache, as its last update by
+ // CreateBackwardReferences is now unused.
+ memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0]));
+ StoreUncompressedMetaBlock(is_last, data,
+ WrapPosition(last_flush_pos), mask, bytes,
+ storage_ix, storage);
+ return;
+ }
+
+ const uint8_t last_byte = storage[0];
+ const uint8_t last_byte_bits = static_cast<uint8_t>(*storage_ix & 0xff);
+ uint32_t num_direct_distance_codes = 0;
+ uint32_t distance_postfix_bits = 0;
+ if (quality > 9 && font_mode) {
+ num_direct_distance_codes = 12;
+ distance_postfix_bits = 1;
+ RecomputeDistancePrefixes(commands,
+ num_commands,
+ num_direct_distance_codes,
+ distance_postfix_bits);
+ }
+ if (quality == 2) {
+ StoreMetaBlockFast(data, WrapPosition(last_flush_pos),
+ bytes, mask, is_last,
+ commands, num_commands,
+ storage_ix, storage);
+ } else if (quality < kMinQualityForBlockSplit) {
+ StoreMetaBlockTrivial(data, WrapPosition(last_flush_pos),
+ bytes, mask, is_last,
+ commands, num_commands,
+ storage_ix, storage);
+ } else {
+ MetaBlockSplit mb;
+ ContextType literal_context_mode = CONTEXT_UTF8;
+ if (quality <= 9) {
+ size_t num_literal_contexts = 1;
+ const uint32_t* literal_context_map = NULL;
+ DecideOverLiteralContextModeling(data, WrapPosition(last_flush_pos),
+ bytes, mask,
+ quality,
+ &literal_context_mode,
+ &num_literal_contexts,
+ &literal_context_map);
+ if (literal_context_map == NULL) {
+ BuildMetaBlockGreedy(data, WrapPosition(last_flush_pos), mask,
+ commands, num_commands, &mb);
+ } else {
+ BuildMetaBlockGreedyWithContexts(data, WrapPosition(last_flush_pos),
+ mask,
+ prev_byte, prev_byte2,
+ literal_context_mode,
+ num_literal_contexts,
+ literal_context_map,
+ commands, num_commands,
+ &mb);
+ }
+ } else {
+ if (!IsMostlyUTF8(data, WrapPosition(last_flush_pos), mask, bytes,
+ kMinUTF8Ratio)) {
+ literal_context_mode = CONTEXT_SIGNED;
+ }
+ BuildMetaBlock(data, WrapPosition(last_flush_pos), mask,
+ prev_byte, prev_byte2,
+ commands, num_commands,
+ literal_context_mode,
+ &mb);
+ }
+ if (quality >= kMinQualityForOptimizeHistograms) {
+ OptimizeHistograms(num_direct_distance_codes,
+ distance_postfix_bits,
+ &mb);
+ }
+ StoreMetaBlock(data, WrapPosition(last_flush_pos), bytes, mask,
+ prev_byte, prev_byte2,
+ is_last,
+ num_direct_distance_codes,
+ distance_postfix_bits,
+ literal_context_mode,
+ commands, num_commands,
+ mb,
+ storage_ix, storage);
+ }
+ if (bytes + 4 < (*storage_ix >> 3)) {
+ // Restore the distance cache and last byte.
+ memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0]));
+ storage[0] = last_byte;
+ *storage_ix = last_byte_bits;
+ StoreUncompressedMetaBlock(is_last, data,
+ WrapPosition(last_flush_pos), mask,
+ bytes, storage_ix, storage);
+ }
+}
+
+BrotliCompressor::BrotliCompressor(BrotliParams params)
+ : params_(params),
+ hashers_(new Hashers()),
+ input_pos_(0),
+ num_commands_(0),
+ num_literals_(0),
+ last_insert_len_(0),
+ last_flush_pos_(0),
+ last_processed_pos_(0),
+ prev_byte_(0),
+ prev_byte2_(0),
+ storage_size_(0),
+ storage_(0),
+ large_table_(NULL),
+ cmd_code_numbits_(0),
+ command_buf_(NULL),
+ literal_buf_(NULL) {
+ // Sanitize params.
+ params_.quality = std::max(0, params_.quality);
+ if (params_.lgwin < kMinWindowBits) {
+ params_.lgwin = kMinWindowBits;
+ } else if (params_.lgwin > kMaxWindowBits) {
+ params_.lgwin = kMaxWindowBits;
+ }
+ if (params_.quality <= 1) {
+ params_.lgblock = params_.lgwin;
+ } else if (params_.quality < kMinQualityForBlockSplit) {
+ params_.lgblock = 14;
+ } else if (params_.lgblock == 0) {
+ params_.lgblock = 16;
+ if (params_.quality >= 9 && params_.lgwin > params_.lgblock) {
+ params_.lgblock = std::min(18, params_.lgwin);
+ }
+ } else {
+ params_.lgblock = std::min(kMaxInputBlockBits,
+ std::max(kMinInputBlockBits, params_.lgblock));
+ }
+
+ // Initialize input and literal cost ring buffers.
+ // We allocate at least lgwin + 1 bits for the ring buffer so that the newly
+ // added block fits there completely and we still get lgwin bits and at least
+ // read_block_size_bits + 1 bits because the copy tail length needs to be
+ // smaller than ringbuffer size.
+ int ringbuffer_bits = std::max(params_.lgwin + 1, params_.lgblock + 1);
+ ringbuffer_ = new RingBuffer(ringbuffer_bits, params_.lgblock);
+
+ commands_ = 0;
+ cmd_alloc_size_ = 0;
+
+ // Initialize last byte with stream header.
+ EncodeWindowBits(params_.lgwin, &last_byte_, &last_byte_bits_);
+
+ // Initialize distance cache.
+ dist_cache_[0] = 4;
+ dist_cache_[1] = 11;
+ dist_cache_[2] = 15;
+ dist_cache_[3] = 16;
+ // Save the state of the distance cache in case we need to restore it for
+ // emitting an uncompressed block.
+ memcpy(saved_dist_cache_, dist_cache_, sizeof(dist_cache_));
+
+ if (params_.quality == 0) {
+ InitCommandPrefixCodes(cmd_depths_, cmd_bits_,
+ cmd_code_, &cmd_code_numbits_);
+ } else if (params_.quality == 1) {
+ command_buf_ = new uint32_t[kCompressFragmentTwoPassBlockSize];
+ literal_buf_ = new uint8_t[kCompressFragmentTwoPassBlockSize];
+ }
+
+ // Initialize hashers.
+ hash_type_ = std::min(10, params_.quality);
+ hashers_->Init(hash_type_);
+}
+
+BrotliCompressor::~BrotliCompressor(void) {
+ delete[] storage_;
+ free(commands_);
+ delete ringbuffer_;
+ delete hashers_;
+ delete[] large_table_;
+ delete[] command_buf_;
+ delete[] literal_buf_;
+}
+
+void BrotliCompressor::CopyInputToRingBuffer(const size_t input_size,
+ const uint8_t* input_buffer) {
+ ringbuffer_->Write(input_buffer, input_size);
+ input_pos_ += input_size;
+
+ // TL;DR: If needed, initialize 7 more bytes in the ring buffer to make the
+ // hashing not depend on uninitialized data. This makes compression
+ // deterministic and it prevents uninitialized memory warnings in Valgrind.
+ // Even without erasing, the output would be valid (but nondeterministic).
+ //
+ // Background information: The compressor stores short (at most 8 bytes)
+ // substrings of the input already read in a hash table, and detects
+ // repetitions by looking up such substrings in the hash table. If it
+ // can find a substring, it checks whether the substring is really there
+ // in the ring buffer (or it's just a hash collision). Should the hash
+ // table become corrupt, this check makes sure that the output is
+ // still valid, albeit the compression ratio would be bad.
+ //
+ // The compressor populates the hash table from the ring buffer as it's
+ // reading new bytes from the input. However, at the last few indexes of
+ // the ring buffer, there are not enough bytes to build full-length
+ // substrings from. Since the hash table always contains full-length
+ // substrings, we erase with dummy 0s here to make sure that those
+ // substrings will contain 0s at the end instead of uninitialized
+ // data.
+ //
+ // Please note that erasing is not necessary (because the
+ // memory region is already initialized since he ring buffer
+ // has a `tail' that holds a copy of the beginning,) so we
+ // skip erasing if we have already gone around at least once in
+ // the ring buffer.
+ size_t pos = ringbuffer_->position();
+ // Only clear during the first round of ringbuffer writes. On
+ // subsequent rounds data in the ringbuffer would be affected.
+ if (pos <= ringbuffer_->mask()) {
+ // This is the first time when the ring buffer is being written.
+ // We clear 7 bytes just after the bytes that have been copied from
+ // the input buffer.
+ //
+ // The ringbuffer has a "tail" that holds a copy of the beginning,
+ // but only once the ring buffer has been fully written once, i.e.,
+ // pos <= mask. For the first time, we need to write values
+ // in this tail (where index may be larger than mask), so that
+ // we have exactly defined behavior and don't read un-initialized
+ // memory. Due to performance reasons, hashing reads data using a
+ // LOAD64, which can go 7 bytes beyond the bytes written in the
+ // ringbuffer.
+ memset(ringbuffer_->start() + pos, 0, 7);
+ }
+}
+
+void BrotliCompressor::BrotliSetCustomDictionary(
+ const size_t size, const uint8_t* dict) {
+ CopyInputToRingBuffer(size, dict);
+ last_flush_pos_ = size;
+ last_processed_pos_ = size;
+ if (size > 0) {
+ prev_byte_ = dict[size - 1];
+ }
+ if (size > 1) {
+ prev_byte2_ = dict[size - 2];
+ }
+ hashers_->PrependCustomDictionary(hash_type_, params_.lgwin, size, dict);
+}
+
+bool BrotliCompressor::WriteBrotliData(const bool is_last,
+ const bool force_flush,
+ size_t* out_size,
+ uint8_t** output) {
+ const uint64_t delta = input_pos_ - last_processed_pos_;
+ const uint8_t* data = ringbuffer_->start();
+ const uint32_t mask = ringbuffer_->mask();
+
+ if (delta > input_block_size()) {
+ return false;
+ }
+ const uint32_t bytes = static_cast<uint32_t>(delta);
+
+ if (params_.quality <= 1) {
+ if (delta == 0 && !is_last) {
+ // We have no new input data and we don't have to finish the stream, so
+ // nothing to do.
+ *out_size = 0;
+ return true;
+ }
+ const size_t max_out_size = 2 * bytes + 500;
+ uint8_t* storage = GetBrotliStorage(max_out_size);
+ storage[0] = last_byte_;
+ size_t storage_ix = last_byte_bits_;
+ size_t table_size;
+ int* table = GetHashTable(params_.quality, bytes, &table_size);
+ if (params_.quality == 0) {
+ BrotliCompressFragmentFast(
+ &data[WrapPosition(last_processed_pos_) & mask],
+ bytes, is_last,
+ table, table_size,
+ cmd_depths_, cmd_bits_,
+ &cmd_code_numbits_, cmd_code_,
+ &storage_ix, storage);
+ } else {
+ BrotliCompressFragmentTwoPass(
+ &data[WrapPosition(last_processed_pos_) & mask],
+ bytes, is_last,
+ command_buf_, literal_buf_,
+ table, table_size,
+ &storage_ix, storage);
+ }
+ last_byte_ = storage[storage_ix >> 3];
+ last_byte_bits_ = storage_ix & 7u;
+ last_processed_pos_ = input_pos_;
+ *output = &storage[0];
+ *out_size = storage_ix >> 3;
+ return true;
+ }
+
+ // Theoretical max number of commands is 1 per 2 bytes.
+ size_t newsize = num_commands_ + bytes / 2 + 1;
+ if (newsize > cmd_alloc_size_) {
+ // Reserve a bit more memory to allow merging with a next block
+ // without realloc: that would impact speed.
+ newsize += (bytes / 4) + 16;
+ cmd_alloc_size_ = newsize;
+ commands_ =
+ static_cast<Command*>(realloc(commands_, sizeof(Command) * newsize));
+ }
+
+ CreateBackwardReferences(bytes, WrapPosition(last_processed_pos_),
+ is_last, data, mask,
+ params_.quality,
+ params_.lgwin,
+ hashers_,
+ hash_type_,
+ dist_cache_,
+ &last_insert_len_,
+ &commands_[num_commands_],
+ &num_commands_,
+ &num_literals_);
+
+ size_t max_length = std::min<size_t>(mask + 1, 1u << kMaxInputBlockBits);
+ const size_t max_literals = max_length / 8;
+ const size_t max_commands = max_length / 8;
+ if (!is_last && !force_flush &&
+ (params_.quality >= kMinQualityForBlockSplit ||
+ (num_literals_ + num_commands_ < kMaxNumDelayedSymbols)) &&
+ num_literals_ < max_literals &&
+ num_commands_ < max_commands &&
+ input_pos_ + input_block_size() <= last_flush_pos_ + max_length) {
+ // Merge with next input block. Everything will happen later.
+ last_processed_pos_ = input_pos_;
+ *out_size = 0;
+ return true;
+ }
+
+ // Create the last insert-only command.
+ if (last_insert_len_ > 0) {
+ brotli::Command cmd(last_insert_len_);
+ commands_[num_commands_++] = cmd;
+ num_literals_ += last_insert_len_;
+ last_insert_len_ = 0;
+ }
+
+ if (!is_last && input_pos_ == last_flush_pos_) {
+ // We have no new input data and we don't have to finish the stream, so
+ // nothing to do.
+ *out_size = 0;
+ return true;
+ }
+ assert(input_pos_ >= last_flush_pos_);
+ assert(input_pos_ > last_flush_pos_ || is_last);
+ assert(input_pos_ - last_flush_pos_ <= 1u << 24);
+ const uint32_t metablock_size =
+ static_cast<uint32_t>(input_pos_ - last_flush_pos_);
+ const size_t max_out_size = 2 * metablock_size + 500;
+ uint8_t* storage = GetBrotliStorage(max_out_size);
+ storage[0] = last_byte_;
+ size_t storage_ix = last_byte_bits_;
+ bool font_mode = params_.mode == BrotliParams::MODE_FONT;
+ WriteMetaBlockInternal(
+ data, mask, last_flush_pos_, metablock_size, is_last, params_.quality,
+ font_mode, prev_byte_, prev_byte2_, num_literals_, num_commands_,
+ commands_, saved_dist_cache_, dist_cache_, &storage_ix, storage);
+ last_byte_ = storage[storage_ix >> 3];
+ last_byte_bits_ = storage_ix & 7u;
+ last_flush_pos_ = input_pos_;
+ last_processed_pos_ = input_pos_;
+ if (last_flush_pos_ > 0) {
+ prev_byte_ = data[(static_cast<uint32_t>(last_flush_pos_) - 1) & mask];
+ }
+ if (last_flush_pos_ > 1) {
+ prev_byte2_ = data[(static_cast<uint32_t>(last_flush_pos_) - 2) & mask];
+ }
+ num_commands_ = 0;
+ num_literals_ = 0;
+ // Save the state of the distance cache in case we need to restore it for
+ // emitting an uncompressed block.
+ memcpy(saved_dist_cache_, dist_cache_, sizeof(dist_cache_));
+ *output = &storage[0];
+ *out_size = storage_ix >> 3;
+ return true;
+}
+
+bool BrotliCompressor::WriteMetaBlock(const size_t input_size,
+ const uint8_t* input_buffer,
+ const bool is_last,
+ size_t* encoded_size,
+ uint8_t* encoded_buffer) {
+ CopyInputToRingBuffer(input_size, input_buffer);
+ size_t out_size = 0;
+ uint8_t* output;
+ if (!WriteBrotliData(is_last, /* force_flush = */ true, &out_size, &output) ||
+ out_size > *encoded_size) {
+ return false;
+ }
+ if (out_size > 0) {
+ memcpy(encoded_buffer, output, out_size);
+ }
+ *encoded_size = out_size;
+ return true;
+}
+
+bool BrotliCompressor::WriteMetadata(const size_t input_size,
+ const uint8_t* input_buffer,
+ const bool is_last,
+ size_t* encoded_size,
+ uint8_t* encoded_buffer) {
+ if (input_size > (1 << 24) || input_size + 6 > *encoded_size) {
+ return false;
+ }
+ uint64_t hdr_buffer_data[2];
+ uint8_t* hdr_buffer = reinterpret_cast<uint8_t*>(&hdr_buffer_data[0]);
+ size_t storage_ix = last_byte_bits_;
+ hdr_buffer[0] = last_byte_;
+ WriteBits(1, 0, &storage_ix, hdr_buffer);
+ WriteBits(2, 3, &storage_ix, hdr_buffer);
+ WriteBits(1, 0, &storage_ix, hdr_buffer);
+ if (input_size == 0) {
+ WriteBits(2, 0, &storage_ix, hdr_buffer);
+ *encoded_size = (storage_ix + 7u) >> 3;
+ memcpy(encoded_buffer, hdr_buffer, *encoded_size);
+ } else {
+ uint32_t nbits = (input_size == 1) ? 0 : (Log2FloorNonZero(
+ static_cast<uint32_t>(input_size) - 1) + 1);
+ uint32_t nbytes = (nbits + 7) / 8;
+ WriteBits(2, nbytes, &storage_ix, hdr_buffer);
+ WriteBits(8 * nbytes, input_size - 1, &storage_ix, hdr_buffer);
+ size_t hdr_size = (storage_ix + 7u) >> 3;
+ memcpy(encoded_buffer, hdr_buffer, hdr_size);
+ memcpy(&encoded_buffer[hdr_size], input_buffer, input_size);
+ *encoded_size = hdr_size + input_size;
+ }
+ if (is_last) {
+ encoded_buffer[(*encoded_size)++] = 3;
+ }
+ last_byte_ = 0;
+ last_byte_bits_ = 0;
+ return true;
+}
+
+bool BrotliCompressor::FinishStream(
+ size_t* encoded_size, uint8_t* encoded_buffer) {
+ return WriteMetaBlock(0, NULL, true, encoded_size, encoded_buffer);
+}
+
+static int BrotliCompressBufferQuality10(int lgwin,
+ size_t input_size,
+ const uint8_t* input_buffer,
+ size_t* encoded_size,
+ uint8_t* encoded_buffer) {
+ const size_t mask = std::numeric_limits<size_t>::max() >> 1;
+ assert(input_size <= mask + 1);
+ const size_t max_backward_limit = (1 << lgwin) - 16;
+ int dist_cache[4] = { 4, 11, 15, 16 };
+ int saved_dist_cache[4] = { 4, 11, 15, 16 };
+ int ok = 1;
+ const size_t max_out_size = *encoded_size;
+ size_t total_out_size = 0;
+ uint8_t last_byte;
+ uint8_t last_byte_bits;
+ EncodeWindowBits(lgwin, &last_byte, &last_byte_bits);
+
+ Hashers::H10* hasher = new Hashers::H10;
+ const size_t hasher_eff_size = std::min(input_size, max_backward_limit + 16);
+ hasher->Init(lgwin, 0, hasher_eff_size, true);
+
+ const int lgblock = std::min(18, lgwin);
+ const int lgmetablock = std::min(24, lgwin + 1);
+ const size_t max_block_size = static_cast<size_t>(1) << lgblock;
+ const size_t max_metablock_size = static_cast<size_t>(1) << lgmetablock;
+ const size_t max_literals_per_metablock = max_metablock_size / 8;
+ const size_t max_commands_per_metablock = max_metablock_size / 8;
+ size_t metablock_start = 0;
+ uint8_t prev_byte = 0;
+ uint8_t prev_byte2 = 0;
+ while (ok && metablock_start < input_size) {
+ const size_t metablock_end =
+ std::min(input_size, metablock_start + max_metablock_size);
+ const size_t expected_num_commands =
+ (metablock_end - metablock_start) / 12 + 16;
+ Command* commands = 0;
+ size_t num_commands = 0;
+ size_t last_insert_len = 0;
+ size_t num_literals = 0;
+ size_t metablock_size = 0;
+ size_t cmd_alloc_size = 0;
+
+ for (size_t block_start = metablock_start; block_start < metablock_end; ) {
+ size_t block_size = std::min(metablock_end - block_start, max_block_size);
+ ZopfliNode* nodes = new ZopfliNode[block_size + 1];
+ std::vector<uint32_t> path;
+ hasher->StitchToPreviousBlock(block_size, block_start,
+ input_buffer, mask);
+ ZopfliComputeShortestPath(block_size, block_start, input_buffer, mask,
+ max_backward_limit, dist_cache,
+ hasher, nodes, &path);
+ // We allocate a command buffer in the first iteration of this loop that
+ // will be likely big enough for the whole metablock, so that for most
+ // inputs we will not have to reallocate in later iterations. We do the
+ // allocation here and not before the loop, because if the input is small,
+ // this will be allocated after the zopfli cost model is freed, so this
+ // will not increase peak memory usage.
+ // TODO: If the first allocation is too small, increase command
+ // buffer size exponentially.
+ size_t new_cmd_alloc_size = std::max(expected_num_commands,
+ num_commands + path.size() + 1);
+ if (cmd_alloc_size != new_cmd_alloc_size) {
+ cmd_alloc_size = new_cmd_alloc_size;
+ commands = static_cast<Command*>(
+ realloc(commands, cmd_alloc_size * sizeof(Command)));
+ }
+ ZopfliCreateCommands(block_size, block_start, max_backward_limit, path,
+ &nodes[0], dist_cache, &last_insert_len,
+ &commands[num_commands], &num_literals);
+ num_commands += path.size();
+ block_start += block_size;
+ metablock_size += block_size;
+ delete[] nodes;
+ if (num_literals > max_literals_per_metablock ||
+ num_commands > max_commands_per_metablock) {
+ break;
+ }
+ }
+
+ if (last_insert_len > 0) {
+ Command cmd(last_insert_len);
+ commands[num_commands++] = cmd;
+ num_literals += last_insert_len;
+ }
+
+ const bool is_last = (metablock_start + metablock_size == input_size);
+ uint8_t* storage = NULL;
+ size_t storage_ix = last_byte_bits;
+
+ if (metablock_size == 0) {
+ // Write the ISLAST and ISEMPTY bits.
+ storage = new uint8_t[16];
+ storage[0] = last_byte;
+ WriteBits(2, 3, &storage_ix, storage);
+ storage_ix = (storage_ix + 7u) & ~7u;
+ } else if (!ShouldCompress(input_buffer, mask, metablock_start,
+ metablock_size, num_literals, num_commands)) {
+ // Restore the distance cache, as its last update by
+ // CreateBackwardReferences is now unused.
+ memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0]));
+ storage = new uint8_t[metablock_size + 16];
+ storage[0] = last_byte;
+ StoreUncompressedMetaBlock(is_last, input_buffer,
+ metablock_start, mask, metablock_size,
+ &storage_ix, storage);
+ } else {
+ uint32_t num_direct_distance_codes = 0;
+ uint32_t distance_postfix_bits = 0;
+ MetaBlockSplit mb;
+ ContextType literal_context_mode = CONTEXT_UTF8;
+ if (!IsMostlyUTF8(
+ input_buffer, metablock_start, mask, metablock_size,
+ kMinUTF8Ratio)) {
+ literal_context_mode = CONTEXT_SIGNED;
+ }
+ BuildMetaBlock(input_buffer, metablock_start, mask,
+ prev_byte, prev_byte2,
+ commands, num_commands,
+ literal_context_mode,
+ &mb);
+ OptimizeHistograms(num_direct_distance_codes,
+ distance_postfix_bits,
+ &mb);
+ const size_t max_out_metablock_size = 2 * metablock_size + 500;
+ storage = new uint8_t[max_out_metablock_size];
+ storage[0] = last_byte;
+ StoreMetaBlock(input_buffer, metablock_start, metablock_size, mask,
+ prev_byte, prev_byte2,
+ is_last,
+ num_direct_distance_codes,
+ distance_postfix_bits,
+ literal_context_mode,
+ commands, num_commands,
+ mb,
+ &storage_ix, storage);
+ if (metablock_size + 4 < (storage_ix >> 3)) {
+ // Restore the distance cache and last byte.
+ memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0]));
+ storage[0] = last_byte;
+ storage_ix = last_byte_bits;
+ StoreUncompressedMetaBlock(is_last, input_buffer,
+ metablock_start, mask,
+ metablock_size, &storage_ix, storage);
+ }
+ }
+ last_byte = storage[storage_ix >> 3];
+ last_byte_bits = storage_ix & 7u;
+ metablock_start += metablock_size;
+ prev_byte = input_buffer[metablock_start - 1];
+ prev_byte2 = input_buffer[metablock_start - 2];
+ // Save the state of the distance cache in case we need to restore it for
+ // emitting an uncompressed block.
+ memcpy(saved_dist_cache, dist_cache, 4 * sizeof(dist_cache[0]));
+
+ const size_t out_size = storage_ix >> 3;
+ total_out_size += out_size;
+ if (total_out_size <= max_out_size) {
+ memcpy(encoded_buffer, storage, out_size);
+ encoded_buffer += out_size;
+ } else {
+ ok = 0;
+ }
+ delete[] storage;
+ free(commands);
+ }
+
+ *encoded_size = total_out_size;
+ delete hasher;
+ return ok;
+}
+
+int BrotliCompressBuffer(BrotliParams params,
+ size_t input_size,
+ const uint8_t* input_buffer,
+ size_t* encoded_size,
+ uint8_t* encoded_buffer) {
+ if (*encoded_size == 0) {
+ // Output buffer needs at least one byte.
+ return 0;
+ }
+ if (input_size == 0) {
+ // Handle the special case of empty input.
+ *encoded_size = 1;
+ *encoded_buffer = 6;
+ return 1;
+ }
+ if (params.quality == 10) {
+ // TODO: Implement this direct path for all quality levels.
+ const int lgwin = std::min(24, std::max(16, params.lgwin));
+ return BrotliCompressBufferQuality10(lgwin, input_size, input_buffer,
+ encoded_size, encoded_buffer);
+ }
+ BrotliMemIn in(input_buffer, input_size);
+ BrotliMemOut out(encoded_buffer, *encoded_size);
+ if (!BrotliCompress(params, &in, &out)) {
+ return 0;
+ }
+ *encoded_size = out.position();
+ return 1;
+}
+
+static bool BrotliInIsFinished(BrotliIn* r) {
+ size_t read_bytes;
+ return r->Read(0, &read_bytes) == NULL;
+}
+
+static const uint8_t* BrotliInReadAndCheckEnd(const size_t block_size,
+ BrotliIn* r,
+ size_t* bytes_read,
+ bool* is_last) {
+ *bytes_read = 0;
+ const uint8_t* data = reinterpret_cast<const uint8_t*>(
+ r->Read(block_size, bytes_read));
+ assert((data == NULL) == (*bytes_read == 0));
+ *is_last = BrotliInIsFinished(r);
+ return data;
+}
+
+static bool CopyOneBlockToRingBuffer(BrotliIn* r,
+ BrotliCompressor* compressor,
+ size_t* bytes_read,
+ bool* is_last) {
+ const size_t block_size = compressor->input_block_size();
+ const uint8_t* data = BrotliInReadAndCheckEnd(block_size, r,
+ bytes_read, is_last);
+ if (data == NULL) {
+ return *is_last;
+ }
+ compressor->CopyInputToRingBuffer(*bytes_read, data);
+
+ // Read more bytes until block_size is filled or an EOF (data == NULL) is
+ // received. This is useful to get deterministic compressed output for the
+ // same input no matter how r->Read splits the input to chunks.
+ for (size_t remaining = block_size - *bytes_read; remaining > 0; ) {
+ size_t more_bytes_read = 0;
+ data = BrotliInReadAndCheckEnd(remaining, r, &more_bytes_read, is_last);
+ if (data == NULL) {
+ return *is_last;
+ }
+ compressor->CopyInputToRingBuffer(more_bytes_read, data);
+ *bytes_read += more_bytes_read;
+ remaining -= more_bytes_read;
+ }
+ return true;
+}
+
+
+int BrotliCompress(BrotliParams params, BrotliIn* in, BrotliOut* out) {
+ return BrotliCompressWithCustomDictionary(0, 0, params, in, out);
+}
+
+// Reads the provided input in 'block_size' blocks. Only the last read can be
+// smaller than 'block_size'.
+class BrotliBlockReader {
+ public:
+ explicit BrotliBlockReader(size_t block_size)
+ : block_size_(block_size), buf_(NULL) {}
+ ~BrotliBlockReader(void) { delete[] buf_; }
+
+ const uint8_t* Read(BrotliIn* in, size_t* bytes_read, bool* is_last) {
+ *bytes_read = 0;
+ const uint8_t* data = BrotliInReadAndCheckEnd(block_size_, in,
+ bytes_read, is_last);
+ if (data == NULL || *bytes_read == block_size_ || *is_last) {
+ // If we could get the whole block in one read, or it is the last block,
+ // we just return the pointer to the data without copying.
+ return data;
+ }
+ // If the data comes in smaller chunks, we need to copy it into an internal
+ // buffer until we get a whole block or reach the last chunk.
+ if (buf_ == NULL) {
+ buf_ = new uint8_t[block_size_];
+ }
+ memcpy(buf_, data, *bytes_read);
+ do {
+ size_t cur_bytes_read = 0;
+ data = BrotliInReadAndCheckEnd(block_size_ - *bytes_read, in,
+ &cur_bytes_read, is_last);
+ if (data == NULL) {
+ return *is_last ? buf_ : NULL;
+ }
+ memcpy(&buf_[*bytes_read], data, cur_bytes_read);
+ *bytes_read += cur_bytes_read;
+ } while (*bytes_read < block_size_ && !*is_last);
+ return buf_;
+ }
+
+ private:
+ const size_t block_size_;
+ uint8_t* buf_;
+};
+
+int BrotliCompressWithCustomDictionary(size_t dictsize, const uint8_t* dict,
+ BrotliParams params,
+ BrotliIn* in, BrotliOut* out) {
+ if (params.quality <= 1) {
+ const int quality = std::max(0, params.quality);
+ const int lgwin = std::min(kMaxWindowBits,
+ std::max(kMinWindowBits, params.lgwin));
+ uint8_t* storage = NULL;
+ int* table = NULL;
+ uint32_t* command_buf = NULL;
+ uint8_t* literal_buf = NULL;
+ uint8_t cmd_depths[128];
+ uint16_t cmd_bits[128];
+ uint8_t cmd_code[512];
+ size_t cmd_code_numbits;
+ if (quality == 0) {
+ InitCommandPrefixCodes(cmd_depths, cmd_bits, cmd_code, &cmd_code_numbits);
+ }
+ uint8_t last_byte;
+ uint8_t last_byte_bits;
+ EncodeWindowBits(lgwin, &last_byte, &last_byte_bits);
+ BrotliBlockReader r(1u << lgwin);
+ int ok = 1;
+ bool is_last = false;
+ while (ok && !is_last) {
+ // Read next block of input.
+ size_t bytes;
+ const uint8_t* data = r.Read(in, &bytes, &is_last);
+ if (data == NULL) {
+ if (!is_last) {
+ ok = 0;
+ break;
+ }
+ assert(bytes == 0);
+ }
+ // Set up output storage.
+ const size_t max_out_size = 2 * bytes + 500;
+ if (storage == NULL) {
+ storage = new uint8_t[max_out_size];
+ }
+ storage[0] = last_byte;
+ size_t storage_ix = last_byte_bits;
+ // Set up hash table.
+ size_t htsize = HashTableSize(MaxHashTableSize(quality), bytes);
+ if (table == NULL) {
+ table = new int[htsize];
+ }
+ memset(table, 0, htsize * sizeof(table[0]));
+ // Set up command and literal buffers for two pass mode.
+ if (quality == 1 && command_buf == NULL) {
+ size_t buf_size = std::min(bytes, kCompressFragmentTwoPassBlockSize);
+ command_buf = new uint32_t[buf_size];
+ literal_buf = new uint8_t[buf_size];
+ }
+ // Do the actual compression.
+ if (quality == 0) {
+ BrotliCompressFragmentFast(data, bytes, is_last, table, htsize,
+ cmd_depths, cmd_bits,
+ &cmd_code_numbits, cmd_code,
+ &storage_ix, storage);
+ } else {
+ BrotliCompressFragmentTwoPass(data, bytes, is_last,
+ command_buf, literal_buf,
+ table, htsize,
+ &storage_ix, storage);
+ }
+ // Save last bytes to stitch it together with the next output block.
+ last_byte = storage[storage_ix >> 3];
+ last_byte_bits = storage_ix & 7u;
+ // Write output block.
+ size_t out_bytes = storage_ix >> 3;
+ if (out_bytes > 0 && !out->Write(storage, out_bytes)) {
+ ok = 0;
+ break;
+ }
+ }
+ delete[] storage;
+ delete[] table;
+ delete[] command_buf;
+ delete[] literal_buf;
+ return ok;
+ }
+
+ size_t in_bytes = 0;
+ size_t out_bytes = 0;
+ uint8_t* output;
+ bool final_block = false;
+ BrotliCompressor compressor(params);
+ if (dictsize != 0) compressor.BrotliSetCustomDictionary(dictsize, dict);
+ while (!final_block) {
+ if (!CopyOneBlockToRingBuffer(in, &compressor, &in_bytes, &final_block)) {
+ return false;
+ }
+ out_bytes = 0;
+ if (!compressor.WriteBrotliData(final_block,
+ /* force_flush = */ false,
+ &out_bytes, &output)) {
+ return false;
+ }
+ if (out_bytes > 0 && !out->Write(output, out_bytes)) {
+ return false;
+ }
+ }
+ return true;
+}
+
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode.h
new file mode 100644
index 00000000000..a06aa4085fb
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode.h
@@ -0,0 +1,207 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// API for Brotli compression
+
+#ifndef BROTLI_ENC_ENCODE_H_
+#define BROTLI_ENC_ENCODE_H_
+
+#include <string>
+#include <vector>
+#include "./command.h"
+#include "./hash.h"
+#include "./ringbuffer.h"
+#include "./static_dict.h"
+#include "./streams.h"
+#include "./types.h"
+
+namespace brotli {
+
+static const int kMaxWindowBits = 24;
+static const int kMinWindowBits = 10;
+static const int kMinInputBlockBits = 16;
+static const int kMaxInputBlockBits = 24;
+
+struct BrotliParams {
+ BrotliParams(void)
+ : mode(MODE_GENERIC),
+ quality(11),
+ lgwin(22),
+ lgblock(0),
+ enable_dictionary(true),
+ enable_transforms(false),
+ greedy_block_split(false),
+ enable_context_modeling(true) {}
+
+ enum Mode {
+ // Default compression mode. The compressor does not know anything in
+ // advance about the properties of the input.
+ MODE_GENERIC = 0,
+ // Compression mode for UTF-8 format text input.
+ MODE_TEXT = 1,
+ // Compression mode used in WOFF 2.0.
+ MODE_FONT = 2
+ };
+ Mode mode;
+
+ // Controls the compression-speed vs compression-density tradeoffs. The higher
+ // the quality, the slower the compression. Range is 0 to 11.
+ int quality;
+ // Base 2 logarithm of the sliding window size. Range is 10 to 24.
+ int lgwin;
+ // Base 2 logarithm of the maximum input block size. Range is 16 to 24.
+ // If set to 0, the value will be set based on the quality.
+ int lgblock;
+
+ // These settings are deprecated and will be ignored.
+ // All speed vs. size compromises are controlled by the quality param.
+ bool enable_dictionary;
+ bool enable_transforms;
+ bool greedy_block_split;
+ bool enable_context_modeling;
+};
+
+// An instance can not be reused for multiple brotli streams.
+class BrotliCompressor {
+ public:
+ explicit BrotliCompressor(BrotliParams params);
+ ~BrotliCompressor(void);
+
+ // The maximum input size that can be processed at once.
+ size_t input_block_size(void) const { return size_t(1) << params_.lgblock; }
+
+ // Encodes the data in input_buffer as a meta-block and writes it to
+ // encoded_buffer (*encoded_size should be set to the size of
+ // encoded_buffer) and sets *encoded_size to the number of bytes that
+ // was written. The input_size must be <= input_block_size().
+ // Returns 0 if there was an error and 1 otherwise.
+ bool WriteMetaBlock(const size_t input_size,
+ const uint8_t* input_buffer,
+ const bool is_last,
+ size_t* encoded_size,
+ uint8_t* encoded_buffer);
+
+ // Writes a metadata meta-block containing the given input to encoded_buffer.
+ // *encoded_size should be set to the size of the encoded_buffer.
+ // Sets *encoded_size to the number of bytes that was written.
+ // Note that the given input data will not be part of the sliding window and
+ // thus no backward references can be made to this data from subsequent
+ // metablocks.
+ bool WriteMetadata(const size_t input_size,
+ const uint8_t* input_buffer,
+ const bool is_last,
+ size_t* encoded_size,
+ uint8_t* encoded_buffer);
+
+ // Writes a zero-length meta-block with end-of-input bit set to the
+ // internal output buffer and copies the output buffer to encoded_buffer
+ // (*encoded_size should be set to the size of encoded_buffer) and sets
+ // *encoded_size to the number of bytes written. Returns false if there was
+ // an error and true otherwise.
+ bool FinishStream(size_t* encoded_size, uint8_t* encoded_buffer);
+
+ // Copies the given input data to the internal ring buffer of the compressor.
+ // No processing of the data occurs at this time and this function can be
+ // called multiple times before calling WriteBrotliData() to process the
+ // accumulated input. At most input_block_size() bytes of input data can be
+ // copied to the ring buffer, otherwise the next WriteBrotliData() will fail.
+ void CopyInputToRingBuffer(const size_t input_size,
+ const uint8_t* input_buffer);
+
+ // Processes the accumulated input data and sets *out_size to the length of
+ // the new output meta-block, or to zero if no new output meta-block was
+ // created (in this case the processed input data is buffered internally).
+ // If *out_size is positive, *output points to the start of the output data.
+ // If is_last or force_flush is true, an output meta-block is always created.
+ // Returns false if the size of the input data is larger than
+ // input_block_size().
+ bool WriteBrotliData(const bool is_last, const bool force_flush,
+ size_t* out_size, uint8_t** output);
+
+ // Fills the new state with a dictionary for LZ77, warming up the ringbuffer,
+ // e.g. for custom static dictionaries for data formats.
+ // Not to be confused with the built-in transformable dictionary of Brotli.
+ // To decode, use BrotliSetCustomDictionary of the decoder with the same
+ // dictionary.
+ void BrotliSetCustomDictionary(size_t size, const uint8_t* dict);
+
+ // No-op, but we keep it here for API backward-compatibility.
+ void WriteStreamHeader(void) {}
+
+ private:
+ uint8_t* GetBrotliStorage(size_t size);
+
+ // Allocates and clears a hash table using memory in "*this",
+ // stores the number of buckets in "*table_size" and returns a pointer to
+ // the base of the hash table.
+ int* GetHashTable(int quality,
+ size_t input_size, size_t* table_size);
+
+ BrotliParams params_;
+ Hashers* hashers_;
+ int hash_type_;
+ uint64_t input_pos_;
+ RingBuffer* ringbuffer_;
+ size_t cmd_alloc_size_;
+ Command* commands_;
+ size_t num_commands_;
+ size_t num_literals_;
+ size_t last_insert_len_;
+ uint64_t last_flush_pos_;
+ uint64_t last_processed_pos_;
+ int dist_cache_[4];
+ int saved_dist_cache_[4];
+ uint8_t last_byte_;
+ uint8_t last_byte_bits_;
+ uint8_t prev_byte_;
+ uint8_t prev_byte2_;
+ size_t storage_size_;
+ uint8_t* storage_;
+ // Hash table for quality 0 mode.
+ int small_table_[1 << 10]; // 2KB
+ int* large_table_; // Allocated only when needed
+ // Command and distance prefix codes (each 64 symbols, stored back-to-back)
+ // used for the next block in quality 0. The command prefix code is over a
+ // smaller alphabet with the following 64 symbols:
+ // 0 - 15: insert length code 0, copy length code 0 - 15, same distance
+ // 16 - 39: insert length code 0, copy length code 0 - 23
+ // 40 - 63: insert length code 0 - 23, copy length code 0
+ // Note that symbols 16 and 40 represent the same code in the full alphabet,
+ // but we do not use either of them in quality 0.
+ uint8_t cmd_depths_[128];
+ uint16_t cmd_bits_[128];
+ // The compressed form of the command and distance prefix codes for the next
+ // block in quality 0.
+ uint8_t cmd_code_[512];
+ size_t cmd_code_numbits_;
+ // Command and literal buffers for quality 1.
+ uint32_t* command_buf_;
+ uint8_t* literal_buf_;
+};
+
+// Compresses the data in input_buffer into encoded_buffer, and sets
+// *encoded_size to the compressed length.
+// Returns 0 if there was an error and 1 otherwise.
+int BrotliCompressBuffer(BrotliParams params,
+ size_t input_size,
+ const uint8_t* input_buffer,
+ size_t* encoded_size,
+ uint8_t* encoded_buffer);
+
+// Same as above, but uses the specified input and output classes instead
+// of reading from and writing to pre-allocated memory buffers.
+int BrotliCompress(BrotliParams params, BrotliIn* in, BrotliOut* out);
+
+// Before compressing the data, sets a custom LZ77 dictionary with
+// BrotliCompressor::BrotliSetCustomDictionary.
+int BrotliCompressWithCustomDictionary(size_t dictsize, const uint8_t* dict,
+ BrotliParams params,
+ BrotliIn* in, BrotliOut* out);
+
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_ENCODE_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode_parallel.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode_parallel.cc
new file mode 100644
index 00000000000..cbad975415d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode_parallel.cc
@@ -0,0 +1,279 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Implementation of parallel Brotli compressor.
+
+#include "./encode_parallel.h"
+
+#include <algorithm>
+#include <limits>
+
+#include "./backward_references.h"
+#include "./bit_cost.h"
+#include "./block_splitter.h"
+#include "./brotli_bit_stream.h"
+#include "./cluster.h"
+#include "./context.h"
+#include "./metablock.h"
+#include "./transform.h"
+#include "./entropy_encode.h"
+#include "./fast_log.h"
+#include "./hash.h"
+#include "./histogram.h"
+#include "./prefix.h"
+#include "./utf8_util.h"
+#include "./write_bits.h"
+
+namespace brotli {
+
+namespace {
+
+void RecomputeDistancePrefixes(Command* cmds, size_t num_commands,
+ uint32_t num_direct_distance_codes,
+ uint32_t distance_postfix_bits) {
+ if (num_direct_distance_codes == 0 &&
+ distance_postfix_bits == 0) {
+ return;
+ }
+ for (size_t i = 0; i < num_commands; ++i) {
+ Command* cmd = &cmds[i];
+ if (cmd->copy_len() && cmd->cmd_prefix_ >= 128) {
+ PrefixEncodeCopyDistance(cmd->DistanceCode(),
+ num_direct_distance_codes,
+ distance_postfix_bits,
+ &cmd->dist_prefix_,
+ &cmd->dist_extra_);
+ }
+ }
+}
+
+bool WriteMetaBlockParallel(const BrotliParams& params,
+ const uint32_t input_size,
+ const uint8_t* input_buffer,
+ const uint32_t prefix_size,
+ const uint8_t* prefix_buffer,
+ const bool is_first,
+ const bool is_last,
+ size_t* encoded_size,
+ uint8_t* encoded_buffer) {
+ if (input_size == 0) {
+ return false;
+ }
+
+ // Copy prefix + next input block into a continuous area.
+ uint32_t input_pos = prefix_size;
+ // CreateBackwardReferences reads up to 3 bytes past the end of input if the
+ // mask points past the end of input.
+ // FindMatchLengthWithLimit could do another 8 bytes look-forward.
+ std::vector<uint8_t> input(prefix_size + input_size + 4 + 8);
+ memcpy(&input[0], prefix_buffer, prefix_size);
+ memcpy(&input[input_pos], input_buffer, input_size);
+ // Since we don't have a ringbuffer, masking is a no-op.
+ // We use one less bit than the full range because some of the code uses
+ // mask + 1 as the size of the ringbuffer.
+ const uint32_t mask = std::numeric_limits<uint32_t>::max() >> 1;
+
+ uint8_t prev_byte = input_pos > 0 ? input[(input_pos - 1) & mask] : 0;
+ uint8_t prev_byte2 = input_pos > 1 ? input[(input_pos - 2) & mask] : 0;
+
+ // Decide about UTF8 mode.
+ static const double kMinUTF8Ratio = 0.75;
+ bool utf8_mode = IsMostlyUTF8(&input[0], input_pos, mask, input_size,
+ kMinUTF8Ratio);
+
+ // Initialize hashers.
+ int hash_type = std::min(10, params.quality);
+ Hashers* hashers = new Hashers();
+ hashers->Init(hash_type);
+
+ // Compute backward references.
+ size_t last_insert_len = 0;
+ size_t num_commands = 0;
+ size_t num_literals = 0;
+ int dist_cache[4] = { -4, -4, -4, -4 };
+ Command* commands = static_cast<Command*>(
+ malloc(sizeof(Command) * ((input_size + 1) >> 1)));
+ if (commands == 0) {
+ delete hashers;
+ return false;
+ }
+ CreateBackwardReferences(
+ input_size, input_pos, is_last,
+ &input[0], mask,
+ params.quality,
+ params.lgwin,
+ hashers,
+ hash_type,
+ dist_cache,
+ &last_insert_len,
+ commands,
+ &num_commands,
+ &num_literals);
+ delete hashers;
+ if (last_insert_len > 0) {
+ commands[num_commands++] = Command(last_insert_len);
+ num_literals += last_insert_len;
+ }
+ assert(num_commands != 0);
+
+ // Build the meta-block.
+ MetaBlockSplit mb;
+ uint32_t num_direct_distance_codes =
+ params.mode == BrotliParams::MODE_FONT ? 12 : 0;
+ uint32_t distance_postfix_bits =
+ params.mode == BrotliParams::MODE_FONT ? 1 : 0;
+ ContextType literal_context_mode = utf8_mode ? CONTEXT_UTF8 : CONTEXT_SIGNED;
+ RecomputeDistancePrefixes(commands, num_commands,
+ num_direct_distance_codes,
+ distance_postfix_bits);
+ if (params.quality <= 9) {
+ BuildMetaBlockGreedy(&input[0], input_pos, mask,
+ commands, num_commands,
+ &mb);
+ } else {
+ BuildMetaBlock(&input[0], input_pos, mask,
+ prev_byte, prev_byte2,
+ commands, num_commands,
+ literal_context_mode,
+ &mb);
+ }
+
+ // Set up the temporary output storage.
+ const size_t max_out_size = 2 * input_size + 500;
+ std::vector<uint8_t> storage(max_out_size);
+ uint8_t first_byte = 0;
+ size_t first_byte_bits = 0;
+ if (is_first) {
+ if (params.lgwin == 16) {
+ first_byte = 0;
+ first_byte_bits = 1;
+ } else if (params.lgwin == 17) {
+ first_byte = 1;
+ first_byte_bits = 7;
+ } else {
+ first_byte = static_cast<uint8_t>(((params.lgwin - 17) << 1) | 1);
+ first_byte_bits = 4;
+ }
+ }
+ storage[0] = static_cast<uint8_t>(first_byte);
+ size_t storage_ix = first_byte_bits;
+
+ // Store the meta-block to the temporary output.
+ StoreMetaBlock(&input[0], input_pos, input_size, mask,
+ prev_byte, prev_byte2,
+ is_last,
+ num_direct_distance_codes,
+ distance_postfix_bits,
+ literal_context_mode,
+ commands, num_commands,
+ mb,
+ &storage_ix, &storage[0]);
+ free(commands);
+
+ // If this is not the last meta-block, store an empty metadata
+ // meta-block so that the meta-block will end at a byte boundary.
+ if (!is_last) {
+ StoreSyncMetaBlock(&storage_ix, &storage[0]);
+ }
+
+ // If the compressed data is too large, fall back to an uncompressed
+ // meta-block.
+ size_t output_size = storage_ix >> 3;
+ if (input_size + 4 < output_size) {
+ storage[0] = static_cast<uint8_t>(first_byte);
+ storage_ix = first_byte_bits;
+ StoreUncompressedMetaBlock(is_last, &input[0], input_pos, mask,
+ input_size,
+ &storage_ix, &storage[0]);
+ output_size = storage_ix >> 3;
+ }
+
+ // Copy the temporary output with size-check to the output.
+ if (output_size > *encoded_size) {
+ return false;
+ }
+ memcpy(encoded_buffer, &storage[0], output_size);
+ *encoded_size = output_size;
+ return true;
+}
+
+} // namespace
+
+int BrotliCompressBufferParallel(BrotliParams params,
+ size_t input_size,
+ const uint8_t* input_buffer,
+ size_t* encoded_size,
+ uint8_t* encoded_buffer) {
+ if (*encoded_size == 0) {
+ // Output buffer needs at least one byte.
+ return 0;
+ } else if (input_size == 0) {
+ encoded_buffer[0] = 6;
+ *encoded_size = 1;
+ return 1;
+ }
+
+ // Sanitize params.
+ if (params.lgwin < kMinWindowBits) {
+ params.lgwin = kMinWindowBits;
+ } else if (params.lgwin > kMaxWindowBits) {
+ params.lgwin = kMaxWindowBits;
+ }
+ if (params.lgblock == 0) {
+ params.lgblock = 16;
+ if (params.quality >= 9 && params.lgwin > params.lgblock) {
+ params.lgblock = std::min(21, params.lgwin);
+ }
+ } else if (params.lgblock < kMinInputBlockBits) {
+ params.lgblock = kMinInputBlockBits;
+ } else if (params.lgblock > kMaxInputBlockBits) {
+ params.lgblock = kMaxInputBlockBits;
+ }
+ size_t max_input_block_size = 1 << params.lgblock;
+ size_t max_prefix_size = 1u << params.lgwin;
+
+ std::vector<std::vector<uint8_t> > compressed_pieces;
+
+ // Compress block-by-block independently.
+ for (size_t pos = 0; pos < input_size; ) {
+ uint32_t input_block_size =
+ static_cast<uint32_t>(std::min(max_input_block_size, input_size - pos));
+ uint32_t prefix_size =
+ static_cast<uint32_t>(std::min(max_prefix_size, pos));
+ size_t out_size = input_block_size + (input_block_size >> 3) + 1024;
+ std::vector<uint8_t> out(out_size);
+ if (!WriteMetaBlockParallel(params,
+ input_block_size,
+ &input_buffer[pos],
+ prefix_size,
+ &input_buffer[pos - prefix_size],
+ pos == 0,
+ pos + input_block_size == input_size,
+ &out_size,
+ &out[0])) {
+ return false;
+ }
+ out.resize(out_size);
+ compressed_pieces.push_back(out);
+ pos += input_block_size;
+ }
+
+ // Piece together the output.
+ size_t out_pos = 0;
+ for (size_t i = 0; i < compressed_pieces.size(); ++i) {
+ const std::vector<uint8_t>& out = compressed_pieces[i];
+ if (out_pos + out.size() > *encoded_size) {
+ return false;
+ }
+ memcpy(&encoded_buffer[out_pos], &out[0], out.size());
+ out_pos += out.size();
+ }
+ *encoded_size = out_pos;
+
+ return true;
+}
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode_parallel.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode_parallel.h
new file mode 100644
index 00000000000..8d637b7c02e
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/encode_parallel.h
@@ -0,0 +1,28 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// API for parallel Brotli compression
+// Note that this is only a proof of concept currently and not part of the
+// final API yet.
+
+#ifndef BROTLI_ENC_ENCODE_PARALLEL_H_
+#define BROTLI_ENC_ENCODE_PARALLEL_H_
+
+
+#include "./encode.h"
+#include "./types.h"
+
+namespace brotli {
+
+int BrotliCompressBufferParallel(BrotliParams params,
+ size_t input_size,
+ const uint8_t* input_buffer,
+ size_t* encoded_size,
+ uint8_t* encoded_buffer);
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_ENCODE_PARALLEL_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/entropy_encode.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/entropy_encode.cc
new file mode 100644
index 00000000000..f18355d88db
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/entropy_encode.cc
@@ -0,0 +1,480 @@
+/* Copyright 2010 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Entropy encoding (Huffman) utilities.
+
+#include "./entropy_encode.h"
+
+#include <algorithm>
+#include <limits>
+#include <cstdlib>
+
+#include "./histogram.h"
+#include "./port.h"
+#include "./types.h"
+
+namespace brotli {
+
+void SetDepth(const HuffmanTree &p,
+ HuffmanTree *pool,
+ uint8_t *depth,
+ uint8_t level) {
+ if (p.index_left_ >= 0) {
+ ++level;
+ SetDepth(pool[p.index_left_], pool, depth, level);
+ SetDepth(pool[p.index_right_or_value_], pool, depth, level);
+ } else {
+ depth[p.index_right_or_value_] = level;
+ }
+}
+
+// Sort the root nodes, least popular first.
+static inline bool SortHuffmanTree(const HuffmanTree& v0,
+ const HuffmanTree& v1) {
+ if (v0.total_count_ != v1.total_count_) {
+ return v0.total_count_ < v1.total_count_;
+ }
+ return v0.index_right_or_value_ > v1.index_right_or_value_;
+}
+
+// This function will create a Huffman tree.
+//
+// The catch here is that the tree cannot be arbitrarily deep.
+// Brotli specifies a maximum depth of 15 bits for "code trees"
+// and 7 bits for "code length code trees."
+//
+// count_limit is the value that is to be faked as the minimum value
+// and this minimum value is raised until the tree matches the
+// maximum length requirement.
+//
+// This algorithm is not of excellent performance for very long data blocks,
+// especially when population counts are longer than 2**tree_limit, but
+// we are not planning to use this with extremely long blocks.
+//
+// See http://en.wikipedia.org/wiki/Huffman_coding
+void CreateHuffmanTree(const uint32_t *data,
+ const size_t length,
+ const int tree_limit,
+ HuffmanTree* tree,
+ uint8_t *depth) {
+ // For block sizes below 64 kB, we never need to do a second iteration
+ // of this loop. Probably all of our block sizes will be smaller than
+ // that, so this loop is mostly of academic interest. If we actually
+ // would need this, we would be better off with the Katajainen algorithm.
+ for (uint32_t count_limit = 1; ; count_limit *= 2) {
+ size_t n = 0;
+ for (size_t i = length; i != 0;) {
+ --i;
+ if (data[i]) {
+ const uint32_t count = std::max(data[i], count_limit);
+ tree[n++] = HuffmanTree(count, -1, static_cast<int16_t>(i));
+ }
+ }
+
+ if (n == 1) {
+ depth[tree[0].index_right_or_value_] = 1; // Only one element.
+ break;
+ }
+
+ std::sort(tree, tree + n, SortHuffmanTree);
+
+ // The nodes are:
+ // [0, n): the sorted leaf nodes that we start with.
+ // [n]: we add a sentinel here.
+ // [n + 1, 2n): new parent nodes are added here, starting from
+ // (n+1). These are naturally in ascending order.
+ // [2n]: we add a sentinel at the end as well.
+ // There will be (2n+1) elements at the end.
+ const HuffmanTree sentinel(std::numeric_limits<uint32_t>::max(), -1, -1);
+ tree[n] = sentinel;
+ tree[n + 1] = sentinel;
+
+ size_t i = 0; // Points to the next leaf node.
+ size_t j = n + 1; // Points to the next non-leaf node.
+ for (size_t k = n - 1; k != 0; --k) {
+ size_t left, right;
+ if (tree[i].total_count_ <= tree[j].total_count_) {
+ left = i;
+ ++i;
+ } else {
+ left = j;
+ ++j;
+ }
+ if (tree[i].total_count_ <= tree[j].total_count_) {
+ right = i;
+ ++i;
+ } else {
+ right = j;
+ ++j;
+ }
+
+ // The sentinel node becomes the parent node.
+ size_t j_end = 2 * n - k;
+ tree[j_end].total_count_ =
+ tree[left].total_count_ + tree[right].total_count_;
+ tree[j_end].index_left_ = static_cast<int16_t>(left);
+ tree[j_end].index_right_or_value_ = static_cast<int16_t>(right);
+
+ // Add back the last sentinel node.
+ tree[j_end + 1] = sentinel;
+ }
+ SetDepth(tree[2 * n - 1], &tree[0], depth, 0);
+
+ // We need to pack the Huffman tree in tree_limit bits.
+ // If this was not successful, add fake entities to the lowest values
+ // and retry.
+ if (*std::max_element(&depth[0], &depth[length]) <= tree_limit) {
+ break;
+ }
+ }
+}
+
+static void Reverse(uint8_t* v, size_t start, size_t end) {
+ --end;
+ while (start < end) {
+ uint8_t tmp = v[start];
+ v[start] = v[end];
+ v[end] = tmp;
+ ++start;
+ --end;
+ }
+}
+
+static void WriteHuffmanTreeRepetitions(
+ const uint8_t previous_value,
+ const uint8_t value,
+ size_t repetitions,
+ size_t* tree_size,
+ uint8_t* tree,
+ uint8_t* extra_bits_data) {
+ assert(repetitions > 0);
+ if (previous_value != value) {
+ tree[*tree_size] = value;
+ extra_bits_data[*tree_size] = 0;
+ ++(*tree_size);
+ --repetitions;
+ }
+ if (repetitions == 7) {
+ tree[*tree_size] = value;
+ extra_bits_data[*tree_size] = 0;
+ ++(*tree_size);
+ --repetitions;
+ }
+ if (repetitions < 3) {
+ for (size_t i = 0; i < repetitions; ++i) {
+ tree[*tree_size] = value;
+ extra_bits_data[*tree_size] = 0;
+ ++(*tree_size);
+ }
+ } else {
+ repetitions -= 3;
+ size_t start = *tree_size;
+ while (true) {
+ tree[*tree_size] = 16;
+ extra_bits_data[*tree_size] = repetitions & 0x3;
+ ++(*tree_size);
+ repetitions >>= 2;
+ if (repetitions == 0) {
+ break;
+ }
+ --repetitions;
+ }
+ Reverse(tree, start, *tree_size);
+ Reverse(extra_bits_data, start, *tree_size);
+ }
+}
+
+static void WriteHuffmanTreeRepetitionsZeros(
+ size_t repetitions,
+ size_t* tree_size,
+ uint8_t* tree,
+ uint8_t* extra_bits_data) {
+ if (repetitions == 11) {
+ tree[*tree_size] = 0;
+ extra_bits_data[*tree_size] = 0;
+ ++(*tree_size);
+ --repetitions;
+ }
+ if (repetitions < 3) {
+ for (size_t i = 0; i < repetitions; ++i) {
+ tree[*tree_size] = 0;
+ extra_bits_data[*tree_size] = 0;
+ ++(*tree_size);
+ }
+ } else {
+ repetitions -= 3;
+ size_t start = *tree_size;
+ while (true) {
+ tree[*tree_size] = 17;
+ extra_bits_data[*tree_size] = repetitions & 0x7;
+ ++(*tree_size);
+ repetitions >>= 3;
+ if (repetitions == 0) {
+ break;
+ }
+ --repetitions;
+ }
+ Reverse(tree, start, *tree_size);
+ Reverse(extra_bits_data, start, *tree_size);
+ }
+}
+
+void OptimizeHuffmanCountsForRle(size_t length, uint32_t* counts,
+ uint8_t* good_for_rle) {
+ size_t nonzero_count = 0;
+ size_t stride;
+ size_t limit;
+ size_t sum;
+ const size_t streak_limit = 1240;
+ // Let's make the Huffman code more compatible with rle encoding.
+ size_t i;
+ for (i = 0; i < length; i++) {
+ if (counts[i]) {
+ ++nonzero_count;
+ }
+ }
+ if (nonzero_count < 16) {
+ return;
+ }
+ while (length != 0 && counts[length - 1] == 0) {
+ --length;
+ }
+ if (length == 0) {
+ return; // All zeros.
+ }
+ // Now counts[0..length - 1] does not have trailing zeros.
+ {
+ size_t nonzeros = 0;
+ uint32_t smallest_nonzero = 1 << 30;
+ for (i = 0; i < length; ++i) {
+ if (counts[i] != 0) {
+ ++nonzeros;
+ if (smallest_nonzero > counts[i]) {
+ smallest_nonzero = counts[i];
+ }
+ }
+ }
+ if (nonzeros < 5) {
+ // Small histogram will model it well.
+ return;
+ }
+ size_t zeros = length - nonzeros;
+ if (smallest_nonzero < 4) {
+ if (zeros < 6) {
+ for (i = 1; i < length - 1; ++i) {
+ if (counts[i - 1] != 0 && counts[i] == 0 && counts[i + 1] != 0) {
+ counts[i] = 1;
+ }
+ }
+ }
+ }
+ if (nonzeros < 28) {
+ return;
+ }
+ }
+ // 2) Let's mark all population counts that already can be encoded
+ // with an rle code.
+ memset(good_for_rle, 0, length);
+ {
+ // Let's not spoil any of the existing good rle codes.
+ // Mark any seq of 0's that is longer as 5 as a good_for_rle.
+ // Mark any seq of non-0's that is longer as 7 as a good_for_rle.
+ uint32_t symbol = counts[0];
+ size_t step = 0;
+ for (i = 0; i <= length; ++i) {
+ if (i == length || counts[i] != symbol) {
+ if ((symbol == 0 && step >= 5) ||
+ (symbol != 0 && step >= 7)) {
+ size_t k;
+ for (k = 0; k < step; ++k) {
+ good_for_rle[i - k - 1] = 1;
+ }
+ }
+ step = 1;
+ if (i != length) {
+ symbol = counts[i];
+ }
+ } else {
+ ++step;
+ }
+ }
+ }
+ // 3) Let's replace those population counts that lead to more rle codes.
+ // Math here is in 24.8 fixed point representation.
+ stride = 0;
+ limit = 256 * (counts[0] + counts[1] + counts[2]) / 3 + 420;
+ sum = 0;
+ for (i = 0; i <= length; ++i) {
+ if (i == length || good_for_rle[i] ||
+ (i != 0 && good_for_rle[i - 1]) ||
+ (256 * counts[i] - limit + streak_limit) >= 2 * streak_limit) {
+ if (stride >= 4 || (stride >= 3 && sum == 0)) {
+ size_t k;
+ // The stride must end, collapse what we have, if we have enough (4).
+ size_t count = (sum + stride / 2) / stride;
+ if (count == 0) {
+ count = 1;
+ }
+ if (sum == 0) {
+ // Don't make an all zeros stride to be upgraded to ones.
+ count = 0;
+ }
+ for (k = 0; k < stride; ++k) {
+ // We don't want to change value at counts[i],
+ // that is already belonging to the next stride. Thus - 1.
+ counts[i - k - 1] = static_cast<uint32_t>(count);
+ }
+ }
+ stride = 0;
+ sum = 0;
+ if (i < length - 2) {
+ // All interesting strides have a count of at least 4,
+ // at least when non-zeros.
+ limit = 256 * (counts[i] + counts[i + 1] + counts[i + 2]) / 3 + 420;
+ } else if (i < length) {
+ limit = 256 * counts[i];
+ } else {
+ limit = 0;
+ }
+ }
+ ++stride;
+ if (i != length) {
+ sum += counts[i];
+ if (stride >= 4) {
+ limit = (256 * sum + stride / 2) / stride;
+ }
+ if (stride == 4) {
+ limit += 120;
+ }
+ }
+ }
+}
+
+static void DecideOverRleUse(const uint8_t* depth, const size_t length,
+ bool *use_rle_for_non_zero,
+ bool *use_rle_for_zero) {
+ size_t total_reps_zero = 0;
+ size_t total_reps_non_zero = 0;
+ size_t count_reps_zero = 1;
+ size_t count_reps_non_zero = 1;
+ for (size_t i = 0; i < length;) {
+ const uint8_t value = depth[i];
+ size_t reps = 1;
+ for (size_t k = i + 1; k < length && depth[k] == value; ++k) {
+ ++reps;
+ }
+ if (reps >= 3 && value == 0) {
+ total_reps_zero += reps;
+ ++count_reps_zero;
+ }
+ if (reps >= 4 && value != 0) {
+ total_reps_non_zero += reps;
+ ++count_reps_non_zero;
+ }
+ i += reps;
+ }
+ *use_rle_for_non_zero = total_reps_non_zero > count_reps_non_zero * 2;
+ *use_rle_for_zero = total_reps_zero > count_reps_zero * 2;
+}
+
+void WriteHuffmanTree(const uint8_t* depth,
+ size_t length,
+ size_t* tree_size,
+ uint8_t* tree,
+ uint8_t* extra_bits_data) {
+ uint8_t previous_value = 8;
+
+ // Throw away trailing zeros.
+ size_t new_length = length;
+ for (size_t i = 0; i < length; ++i) {
+ if (depth[length - i - 1] == 0) {
+ --new_length;
+ } else {
+ break;
+ }
+ }
+
+ // First gather statistics on if it is a good idea to do rle.
+ bool use_rle_for_non_zero = false;
+ bool use_rle_for_zero = false;
+ if (length > 50) {
+ // Find rle coding for longer codes.
+ // Shorter codes seem not to benefit from rle.
+ DecideOverRleUse(depth, new_length,
+ &use_rle_for_non_zero, &use_rle_for_zero);
+ }
+
+ // Actual rle coding.
+ for (size_t i = 0; i < new_length;) {
+ const uint8_t value = depth[i];
+ size_t reps = 1;
+ if ((value != 0 && use_rle_for_non_zero) ||
+ (value == 0 && use_rle_for_zero)) {
+ for (size_t k = i + 1; k < new_length && depth[k] == value; ++k) {
+ ++reps;
+ }
+ }
+ if (value == 0) {
+ WriteHuffmanTreeRepetitionsZeros(reps, tree_size, tree, extra_bits_data);
+ } else {
+ WriteHuffmanTreeRepetitions(previous_value,
+ value, reps, tree_size,
+ tree, extra_bits_data);
+ previous_value = value;
+ }
+ i += reps;
+ }
+}
+
+namespace {
+
+uint16_t ReverseBits(int num_bits, uint16_t bits) {
+ static const size_t kLut[16] = { // Pre-reversed 4-bit values.
+ 0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe,
+ 0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf
+ };
+ size_t retval = kLut[bits & 0xf];
+ for (int i = 4; i < num_bits; i += 4) {
+ retval <<= 4;
+ bits = static_cast<uint16_t>(bits >> 4);
+ retval |= kLut[bits & 0xf];
+ }
+ retval >>= (-num_bits & 0x3);
+ return static_cast<uint16_t>(retval);
+}
+
+} // namespace
+
+void ConvertBitDepthsToSymbols(const uint8_t *depth,
+ size_t len,
+ uint16_t *bits) {
+ // In Brotli, all bit depths are [1..15]
+ // 0 bit depth means that the symbol does not exist.
+ const int kMaxBits = 16; // 0..15 are values for bits
+ uint16_t bl_count[kMaxBits] = { 0 };
+ {
+ for (size_t i = 0; i < len; ++i) {
+ ++bl_count[depth[i]];
+ }
+ bl_count[0] = 0;
+ }
+ uint16_t next_code[kMaxBits];
+ next_code[0] = 0;
+ {
+ int code = 0;
+ for (int bits = 1; bits < kMaxBits; ++bits) {
+ code = (code + bl_count[bits - 1]) << 1;
+ next_code[bits] = static_cast<uint16_t>(code);
+ }
+ }
+ for (size_t i = 0; i < len; ++i) {
+ if (depth[i]) {
+ bits[i] = ReverseBits(depth[i], next_code[depth[i]]++);
+ }
+ }
+}
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/entropy_encode.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/entropy_encode.h
new file mode 100644
index 00000000000..090f9546c1b
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/entropy_encode.h
@@ -0,0 +1,104 @@
+/* Copyright 2010 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Entropy encoding (Huffman) utilities.
+
+#ifndef BROTLI_ENC_ENTROPY_ENCODE_H_
+#define BROTLI_ENC_ENTROPY_ENCODE_H_
+
+#include <string.h>
+#include "./histogram.h"
+#include "./prefix.h"
+#include "./types.h"
+
+namespace brotli {
+
+// A node of a Huffman tree.
+struct HuffmanTree {
+ HuffmanTree() {}
+ HuffmanTree(uint32_t count, int16_t left, int16_t right)
+ : total_count_(count),
+ index_left_(left),
+ index_right_or_value_(right) {
+ }
+ uint32_t total_count_;
+ int16_t index_left_;
+ int16_t index_right_or_value_;
+};
+
+void SetDepth(const HuffmanTree &p, HuffmanTree *pool,
+ uint8_t *depth, uint8_t level);
+
+// This function will create a Huffman tree.
+//
+// The (data,length) contains the population counts.
+// The tree_limit is the maximum bit depth of the Huffman codes.
+//
+// The depth contains the tree, i.e., how many bits are used for
+// the symbol.
+//
+// The actual Huffman tree is constructed in the tree[] array, which has to
+// be at least 2 * length + 1 long.
+//
+// See http://en.wikipedia.org/wiki/Huffman_coding
+void CreateHuffmanTree(const uint32_t *data,
+ const size_t length,
+ const int tree_limit,
+ HuffmanTree* tree,
+ uint8_t *depth);
+
+// Change the population counts in a way that the consequent
+// Huffman tree compression, especially its rle-part will be more
+// likely to compress this data more efficiently.
+//
+// length contains the size of the histogram.
+// counts contains the population counts.
+// good_for_rle is a buffer of at least length size
+void OptimizeHuffmanCountsForRle(size_t length, uint32_t* counts,
+ uint8_t* good_for_rle);
+
+// Write a Huffman tree from bit depths into the bitstream representation
+// of a Huffman tree. The generated Huffman tree is to be compressed once
+// more using a Huffman tree
+void WriteHuffmanTree(const uint8_t* depth,
+ size_t num,
+ size_t* tree_size,
+ uint8_t* tree,
+ uint8_t* extra_bits_data);
+
+// Get the actual bit values for a tree of bit depths.
+void ConvertBitDepthsToSymbols(const uint8_t *depth,
+ size_t len,
+ uint16_t *bits);
+
+template<int kSize>
+struct EntropyCode {
+ // How many bits for symbol.
+ uint8_t depth_[kSize];
+ // Actual bits used to represent the symbol.
+ uint16_t bits_[kSize];
+ // How many non-zero depth.
+ int count_;
+ // First four symbols with non-zero depth.
+ int symbols_[4];
+};
+
+static const int kCodeLengthCodes = 18;
+
+// Literal entropy code.
+typedef EntropyCode<256> EntropyCodeLiteral;
+// Prefix entropy codes.
+typedef EntropyCode<kNumCommandPrefixes> EntropyCodeCommand;
+typedef EntropyCode<kNumDistancePrefixes> EntropyCodeDistance;
+typedef EntropyCode<kNumBlockLenPrefixes> EntropyCodeBlockLength;
+// Context map entropy code, 256 Huffman tree indexes + 16 run length codes.
+typedef EntropyCode<272> EntropyCodeContextMap;
+// Block type entropy code, 256 block types + 2 special symbols.
+typedef EntropyCode<258> EntropyCodeBlockType;
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_ENTROPY_ENCODE_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/entropy_encode_static.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/entropy_encode_static.h
new file mode 100644
index 00000000000..d21f3b51744
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/entropy_encode_static.h
@@ -0,0 +1,572 @@
+/* Copyright 2015 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Static entropy codes used for faster meta-block encoding.
+
+#ifndef BROTLI_ENC_ENTROPY_ENCODE_STATIC_H_
+#define BROTLI_ENC_ENTROPY_ENCODE_STATIC_H_
+
+#include "./prefix.h"
+#include "./types.h"
+#include "./write_bits.h"
+
+namespace brotli {
+
+static const uint8_t kCodeLengthDepth[18] = {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 0, 4, 4,
+};
+
+static const uint8_t kStaticCommandCodeDepth[kNumCommandPrefixes] = {
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+};
+
+static const uint8_t kStaticDistanceCodeDepth[64] = {
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+};
+
+static const uint32_t kCodeLengthBits[18] = {
+ 0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 15, 31, 0, 11, 7,
+};
+
+inline void StoreStaticCodeLengthCode(size_t* storage_ix, uint8_t* storage) {
+ WriteBits(40, MAKE_UINT64_T(0xff, 0x55555554), storage_ix, storage);
+}
+
+static const uint64_t kZeroRepsBits[704] = {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000007, 0x00000017, 0x00000027,
+ 0x00000037, 0x00000047, 0x00000057, 0x00000067, 0x00000077, 0x00000770,
+ 0x00000b87, 0x00001387, 0x00001b87, 0x00002387, 0x00002b87, 0x00003387,
+ 0x00003b87, 0x00000397, 0x00000b97, 0x00001397, 0x00001b97, 0x00002397,
+ 0x00002b97, 0x00003397, 0x00003b97, 0x000003a7, 0x00000ba7, 0x000013a7,
+ 0x00001ba7, 0x000023a7, 0x00002ba7, 0x000033a7, 0x00003ba7, 0x000003b7,
+ 0x00000bb7, 0x000013b7, 0x00001bb7, 0x000023b7, 0x00002bb7, 0x000033b7,
+ 0x00003bb7, 0x000003c7, 0x00000bc7, 0x000013c7, 0x00001bc7, 0x000023c7,
+ 0x00002bc7, 0x000033c7, 0x00003bc7, 0x000003d7, 0x00000bd7, 0x000013d7,
+ 0x00001bd7, 0x000023d7, 0x00002bd7, 0x000033d7, 0x00003bd7, 0x000003e7,
+ 0x00000be7, 0x000013e7, 0x00001be7, 0x000023e7, 0x00002be7, 0x000033e7,
+ 0x00003be7, 0x000003f7, 0x00000bf7, 0x000013f7, 0x00001bf7, 0x000023f7,
+ 0x00002bf7, 0x000033f7, 0x00003bf7, 0x0001c387, 0x0005c387, 0x0009c387,
+ 0x000dc387, 0x0011c387, 0x0015c387, 0x0019c387, 0x001dc387, 0x0001cb87,
+ 0x0005cb87, 0x0009cb87, 0x000dcb87, 0x0011cb87, 0x0015cb87, 0x0019cb87,
+ 0x001dcb87, 0x0001d387, 0x0005d387, 0x0009d387, 0x000dd387, 0x0011d387,
+ 0x0015d387, 0x0019d387, 0x001dd387, 0x0001db87, 0x0005db87, 0x0009db87,
+ 0x000ddb87, 0x0011db87, 0x0015db87, 0x0019db87, 0x001ddb87, 0x0001e387,
+ 0x0005e387, 0x0009e387, 0x000de387, 0x0011e387, 0x0015e387, 0x0019e387,
+ 0x001de387, 0x0001eb87, 0x0005eb87, 0x0009eb87, 0x000deb87, 0x0011eb87,
+ 0x0015eb87, 0x0019eb87, 0x001deb87, 0x0001f387, 0x0005f387, 0x0009f387,
+ 0x000df387, 0x0011f387, 0x0015f387, 0x0019f387, 0x001df387, 0x0001fb87,
+ 0x0005fb87, 0x0009fb87, 0x000dfb87, 0x0011fb87, 0x0015fb87, 0x0019fb87,
+ 0x001dfb87, 0x0001c397, 0x0005c397, 0x0009c397, 0x000dc397, 0x0011c397,
+ 0x0015c397, 0x0019c397, 0x001dc397, 0x0001cb97, 0x0005cb97, 0x0009cb97,
+ 0x000dcb97, 0x0011cb97, 0x0015cb97, 0x0019cb97, 0x001dcb97, 0x0001d397,
+ 0x0005d397, 0x0009d397, 0x000dd397, 0x0011d397, 0x0015d397, 0x0019d397,
+ 0x001dd397, 0x0001db97, 0x0005db97, 0x0009db97, 0x000ddb97, 0x0011db97,
+ 0x0015db97, 0x0019db97, 0x001ddb97, 0x0001e397, 0x0005e397, 0x0009e397,
+ 0x000de397, 0x0011e397, 0x0015e397, 0x0019e397, 0x001de397, 0x0001eb97,
+ 0x0005eb97, 0x0009eb97, 0x000deb97, 0x0011eb97, 0x0015eb97, 0x0019eb97,
+ 0x001deb97, 0x0001f397, 0x0005f397, 0x0009f397, 0x000df397, 0x0011f397,
+ 0x0015f397, 0x0019f397, 0x001df397, 0x0001fb97, 0x0005fb97, 0x0009fb97,
+ 0x000dfb97, 0x0011fb97, 0x0015fb97, 0x0019fb97, 0x001dfb97, 0x0001c3a7,
+ 0x0005c3a7, 0x0009c3a7, 0x000dc3a7, 0x0011c3a7, 0x0015c3a7, 0x0019c3a7,
+ 0x001dc3a7, 0x0001cba7, 0x0005cba7, 0x0009cba7, 0x000dcba7, 0x0011cba7,
+ 0x0015cba7, 0x0019cba7, 0x001dcba7, 0x0001d3a7, 0x0005d3a7, 0x0009d3a7,
+ 0x000dd3a7, 0x0011d3a7, 0x0015d3a7, 0x0019d3a7, 0x001dd3a7, 0x0001dba7,
+ 0x0005dba7, 0x0009dba7, 0x000ddba7, 0x0011dba7, 0x0015dba7, 0x0019dba7,
+ 0x001ddba7, 0x0001e3a7, 0x0005e3a7, 0x0009e3a7, 0x000de3a7, 0x0011e3a7,
+ 0x0015e3a7, 0x0019e3a7, 0x001de3a7, 0x0001eba7, 0x0005eba7, 0x0009eba7,
+ 0x000deba7, 0x0011eba7, 0x0015eba7, 0x0019eba7, 0x001deba7, 0x0001f3a7,
+ 0x0005f3a7, 0x0009f3a7, 0x000df3a7, 0x0011f3a7, 0x0015f3a7, 0x0019f3a7,
+ 0x001df3a7, 0x0001fba7, 0x0005fba7, 0x0009fba7, 0x000dfba7, 0x0011fba7,
+ 0x0015fba7, 0x0019fba7, 0x001dfba7, 0x0001c3b7, 0x0005c3b7, 0x0009c3b7,
+ 0x000dc3b7, 0x0011c3b7, 0x0015c3b7, 0x0019c3b7, 0x001dc3b7, 0x0001cbb7,
+ 0x0005cbb7, 0x0009cbb7, 0x000dcbb7, 0x0011cbb7, 0x0015cbb7, 0x0019cbb7,
+ 0x001dcbb7, 0x0001d3b7, 0x0005d3b7, 0x0009d3b7, 0x000dd3b7, 0x0011d3b7,
+ 0x0015d3b7, 0x0019d3b7, 0x001dd3b7, 0x0001dbb7, 0x0005dbb7, 0x0009dbb7,
+ 0x000ddbb7, 0x0011dbb7, 0x0015dbb7, 0x0019dbb7, 0x001ddbb7, 0x0001e3b7,
+ 0x0005e3b7, 0x0009e3b7, 0x000de3b7, 0x0011e3b7, 0x0015e3b7, 0x0019e3b7,
+ 0x001de3b7, 0x0001ebb7, 0x0005ebb7, 0x0009ebb7, 0x000debb7, 0x0011ebb7,
+ 0x0015ebb7, 0x0019ebb7, 0x001debb7, 0x0001f3b7, 0x0005f3b7, 0x0009f3b7,
+ 0x000df3b7, 0x0011f3b7, 0x0015f3b7, 0x0019f3b7, 0x001df3b7, 0x0001fbb7,
+ 0x0005fbb7, 0x0009fbb7, 0x000dfbb7, 0x0011fbb7, 0x0015fbb7, 0x0019fbb7,
+ 0x001dfbb7, 0x0001c3c7, 0x0005c3c7, 0x0009c3c7, 0x000dc3c7, 0x0011c3c7,
+ 0x0015c3c7, 0x0019c3c7, 0x001dc3c7, 0x0001cbc7, 0x0005cbc7, 0x0009cbc7,
+ 0x000dcbc7, 0x0011cbc7, 0x0015cbc7, 0x0019cbc7, 0x001dcbc7, 0x0001d3c7,
+ 0x0005d3c7, 0x0009d3c7, 0x000dd3c7, 0x0011d3c7, 0x0015d3c7, 0x0019d3c7,
+ 0x001dd3c7, 0x0001dbc7, 0x0005dbc7, 0x0009dbc7, 0x000ddbc7, 0x0011dbc7,
+ 0x0015dbc7, 0x0019dbc7, 0x001ddbc7, 0x0001e3c7, 0x0005e3c7, 0x0009e3c7,
+ 0x000de3c7, 0x0011e3c7, 0x0015e3c7, 0x0019e3c7, 0x001de3c7, 0x0001ebc7,
+ 0x0005ebc7, 0x0009ebc7, 0x000debc7, 0x0011ebc7, 0x0015ebc7, 0x0019ebc7,
+ 0x001debc7, 0x0001f3c7, 0x0005f3c7, 0x0009f3c7, 0x000df3c7, 0x0011f3c7,
+ 0x0015f3c7, 0x0019f3c7, 0x001df3c7, 0x0001fbc7, 0x0005fbc7, 0x0009fbc7,
+ 0x000dfbc7, 0x0011fbc7, 0x0015fbc7, 0x0019fbc7, 0x001dfbc7, 0x0001c3d7,
+ 0x0005c3d7, 0x0009c3d7, 0x000dc3d7, 0x0011c3d7, 0x0015c3d7, 0x0019c3d7,
+ 0x001dc3d7, 0x0001cbd7, 0x0005cbd7, 0x0009cbd7, 0x000dcbd7, 0x0011cbd7,
+ 0x0015cbd7, 0x0019cbd7, 0x001dcbd7, 0x0001d3d7, 0x0005d3d7, 0x0009d3d7,
+ 0x000dd3d7, 0x0011d3d7, 0x0015d3d7, 0x0019d3d7, 0x001dd3d7, 0x0001dbd7,
+ 0x0005dbd7, 0x0009dbd7, 0x000ddbd7, 0x0011dbd7, 0x0015dbd7, 0x0019dbd7,
+ 0x001ddbd7, 0x0001e3d7, 0x0005e3d7, 0x0009e3d7, 0x000de3d7, 0x0011e3d7,
+ 0x0015e3d7, 0x0019e3d7, 0x001de3d7, 0x0001ebd7, 0x0005ebd7, 0x0009ebd7,
+ 0x000debd7, 0x0011ebd7, 0x0015ebd7, 0x0019ebd7, 0x001debd7, 0x0001f3d7,
+ 0x0005f3d7, 0x0009f3d7, 0x000df3d7, 0x0011f3d7, 0x0015f3d7, 0x0019f3d7,
+ 0x001df3d7, 0x0001fbd7, 0x0005fbd7, 0x0009fbd7, 0x000dfbd7, 0x0011fbd7,
+ 0x0015fbd7, 0x0019fbd7, 0x001dfbd7, 0x0001c3e7, 0x0005c3e7, 0x0009c3e7,
+ 0x000dc3e7, 0x0011c3e7, 0x0015c3e7, 0x0019c3e7, 0x001dc3e7, 0x0001cbe7,
+ 0x0005cbe7, 0x0009cbe7, 0x000dcbe7, 0x0011cbe7, 0x0015cbe7, 0x0019cbe7,
+ 0x001dcbe7, 0x0001d3e7, 0x0005d3e7, 0x0009d3e7, 0x000dd3e7, 0x0011d3e7,
+ 0x0015d3e7, 0x0019d3e7, 0x001dd3e7, 0x0001dbe7, 0x0005dbe7, 0x0009dbe7,
+ 0x000ddbe7, 0x0011dbe7, 0x0015dbe7, 0x0019dbe7, 0x001ddbe7, 0x0001e3e7,
+ 0x0005e3e7, 0x0009e3e7, 0x000de3e7, 0x0011e3e7, 0x0015e3e7, 0x0019e3e7,
+ 0x001de3e7, 0x0001ebe7, 0x0005ebe7, 0x0009ebe7, 0x000debe7, 0x0011ebe7,
+ 0x0015ebe7, 0x0019ebe7, 0x001debe7, 0x0001f3e7, 0x0005f3e7, 0x0009f3e7,
+ 0x000df3e7, 0x0011f3e7, 0x0015f3e7, 0x0019f3e7, 0x001df3e7, 0x0001fbe7,
+ 0x0005fbe7, 0x0009fbe7, 0x000dfbe7, 0x0011fbe7, 0x0015fbe7, 0x0019fbe7,
+ 0x001dfbe7, 0x0001c3f7, 0x0005c3f7, 0x0009c3f7, 0x000dc3f7, 0x0011c3f7,
+ 0x0015c3f7, 0x0019c3f7, 0x001dc3f7, 0x0001cbf7, 0x0005cbf7, 0x0009cbf7,
+ 0x000dcbf7, 0x0011cbf7, 0x0015cbf7, 0x0019cbf7, 0x001dcbf7, 0x0001d3f7,
+ 0x0005d3f7, 0x0009d3f7, 0x000dd3f7, 0x0011d3f7, 0x0015d3f7, 0x0019d3f7,
+ 0x001dd3f7, 0x0001dbf7, 0x0005dbf7, 0x0009dbf7, 0x000ddbf7, 0x0011dbf7,
+ 0x0015dbf7, 0x0019dbf7, 0x001ddbf7, 0x0001e3f7, 0x0005e3f7, 0x0009e3f7,
+ 0x000de3f7, 0x0011e3f7, 0x0015e3f7, 0x0019e3f7, 0x001de3f7, 0x0001ebf7,
+ 0x0005ebf7, 0x0009ebf7, 0x000debf7, 0x0011ebf7, 0x0015ebf7, 0x0019ebf7,
+ 0x001debf7, 0x0001f3f7, 0x0005f3f7, 0x0009f3f7, 0x000df3f7, 0x0011f3f7,
+ 0x0015f3f7, 0x0019f3f7, 0x001df3f7, 0x0001fbf7, 0x0005fbf7, 0x0009fbf7,
+ 0x000dfbf7, 0x0011fbf7, 0x0015fbf7, 0x0019fbf7, 0x001dfbf7, 0x00e1c387,
+ 0x02e1c387, 0x04e1c387, 0x06e1c387, 0x08e1c387, 0x0ae1c387, 0x0ce1c387,
+ 0x0ee1c387, 0x00e5c387, 0x02e5c387, 0x04e5c387, 0x06e5c387, 0x08e5c387,
+ 0x0ae5c387, 0x0ce5c387, 0x0ee5c387, 0x00e9c387, 0x02e9c387, 0x04e9c387,
+ 0x06e9c387, 0x08e9c387, 0x0ae9c387, 0x0ce9c387, 0x0ee9c387, 0x00edc387,
+ 0x02edc387, 0x04edc387, 0x06edc387, 0x08edc387, 0x0aedc387, 0x0cedc387,
+ 0x0eedc387, 0x00f1c387, 0x02f1c387, 0x04f1c387, 0x06f1c387, 0x08f1c387,
+ 0x0af1c387, 0x0cf1c387, 0x0ef1c387, 0x00f5c387, 0x02f5c387, 0x04f5c387,
+ 0x06f5c387, 0x08f5c387, 0x0af5c387, 0x0cf5c387, 0x0ef5c387, 0x00f9c387,
+ 0x02f9c387, 0x04f9c387, 0x06f9c387, 0x08f9c387, 0x0af9c387, 0x0cf9c387,
+ 0x0ef9c387, 0x00fdc387, 0x02fdc387, 0x04fdc387, 0x06fdc387, 0x08fdc387,
+ 0x0afdc387, 0x0cfdc387, 0x0efdc387, 0x00e1cb87, 0x02e1cb87, 0x04e1cb87,
+ 0x06e1cb87, 0x08e1cb87, 0x0ae1cb87, 0x0ce1cb87, 0x0ee1cb87, 0x00e5cb87,
+ 0x02e5cb87, 0x04e5cb87, 0x06e5cb87, 0x08e5cb87, 0x0ae5cb87, 0x0ce5cb87,
+ 0x0ee5cb87, 0x00e9cb87, 0x02e9cb87, 0x04e9cb87, 0x06e9cb87, 0x08e9cb87,
+ 0x0ae9cb87, 0x0ce9cb87, 0x0ee9cb87, 0x00edcb87, 0x02edcb87, 0x04edcb87,
+ 0x06edcb87, 0x08edcb87, 0x0aedcb87, 0x0cedcb87, 0x0eedcb87, 0x00f1cb87,
+ 0x02f1cb87, 0x04f1cb87, 0x06f1cb87, 0x08f1cb87, 0x0af1cb87, 0x0cf1cb87,
+ 0x0ef1cb87, 0x00f5cb87, 0x02f5cb87, 0x04f5cb87, 0x06f5cb87, 0x08f5cb87,
+ 0x0af5cb87, 0x0cf5cb87, 0x0ef5cb87, 0x00f9cb87, 0x02f9cb87, 0x04f9cb87,
+ 0x06f9cb87, 0x08f9cb87,
+};
+
+static const uint32_t kZeroRepsDepth[704] = {
+ 0, 4, 8, 7, 7, 7, 7, 7, 7, 7, 7, 11, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+};
+
+static const uint64_t kNonZeroRepsBits[704] = {
+ 0x0000000b, 0x0000001b, 0x0000002b, 0x0000003b, 0x000002cb, 0x000006cb,
+ 0x00000acb, 0x00000ecb, 0x000002db, 0x000006db, 0x00000adb, 0x00000edb,
+ 0x000002eb, 0x000006eb, 0x00000aeb, 0x00000eeb, 0x000002fb, 0x000006fb,
+ 0x00000afb, 0x00000efb, 0x0000b2cb, 0x0001b2cb, 0x0002b2cb, 0x0003b2cb,
+ 0x0000b6cb, 0x0001b6cb, 0x0002b6cb, 0x0003b6cb, 0x0000bacb, 0x0001bacb,
+ 0x0002bacb, 0x0003bacb, 0x0000becb, 0x0001becb, 0x0002becb, 0x0003becb,
+ 0x0000b2db, 0x0001b2db, 0x0002b2db, 0x0003b2db, 0x0000b6db, 0x0001b6db,
+ 0x0002b6db, 0x0003b6db, 0x0000badb, 0x0001badb, 0x0002badb, 0x0003badb,
+ 0x0000bedb, 0x0001bedb, 0x0002bedb, 0x0003bedb, 0x0000b2eb, 0x0001b2eb,
+ 0x0002b2eb, 0x0003b2eb, 0x0000b6eb, 0x0001b6eb, 0x0002b6eb, 0x0003b6eb,
+ 0x0000baeb, 0x0001baeb, 0x0002baeb, 0x0003baeb, 0x0000beeb, 0x0001beeb,
+ 0x0002beeb, 0x0003beeb, 0x0000b2fb, 0x0001b2fb, 0x0002b2fb, 0x0003b2fb,
+ 0x0000b6fb, 0x0001b6fb, 0x0002b6fb, 0x0003b6fb, 0x0000bafb, 0x0001bafb,
+ 0x0002bafb, 0x0003bafb, 0x0000befb, 0x0001befb, 0x0002befb, 0x0003befb,
+ 0x002cb2cb, 0x006cb2cb, 0x00acb2cb, 0x00ecb2cb, 0x002db2cb, 0x006db2cb,
+ 0x00adb2cb, 0x00edb2cb, 0x002eb2cb, 0x006eb2cb, 0x00aeb2cb, 0x00eeb2cb,
+ 0x002fb2cb, 0x006fb2cb, 0x00afb2cb, 0x00efb2cb, 0x002cb6cb, 0x006cb6cb,
+ 0x00acb6cb, 0x00ecb6cb, 0x002db6cb, 0x006db6cb, 0x00adb6cb, 0x00edb6cb,
+ 0x002eb6cb, 0x006eb6cb, 0x00aeb6cb, 0x00eeb6cb, 0x002fb6cb, 0x006fb6cb,
+ 0x00afb6cb, 0x00efb6cb, 0x002cbacb, 0x006cbacb, 0x00acbacb, 0x00ecbacb,
+ 0x002dbacb, 0x006dbacb, 0x00adbacb, 0x00edbacb, 0x002ebacb, 0x006ebacb,
+ 0x00aebacb, 0x00eebacb, 0x002fbacb, 0x006fbacb, 0x00afbacb, 0x00efbacb,
+ 0x002cbecb, 0x006cbecb, 0x00acbecb, 0x00ecbecb, 0x002dbecb, 0x006dbecb,
+ 0x00adbecb, 0x00edbecb, 0x002ebecb, 0x006ebecb, 0x00aebecb, 0x00eebecb,
+ 0x002fbecb, 0x006fbecb, 0x00afbecb, 0x00efbecb, 0x002cb2db, 0x006cb2db,
+ 0x00acb2db, 0x00ecb2db, 0x002db2db, 0x006db2db, 0x00adb2db, 0x00edb2db,
+ 0x002eb2db, 0x006eb2db, 0x00aeb2db, 0x00eeb2db, 0x002fb2db, 0x006fb2db,
+ 0x00afb2db, 0x00efb2db, 0x002cb6db, 0x006cb6db, 0x00acb6db, 0x00ecb6db,
+ 0x002db6db, 0x006db6db, 0x00adb6db, 0x00edb6db, 0x002eb6db, 0x006eb6db,
+ 0x00aeb6db, 0x00eeb6db, 0x002fb6db, 0x006fb6db, 0x00afb6db, 0x00efb6db,
+ 0x002cbadb, 0x006cbadb, 0x00acbadb, 0x00ecbadb, 0x002dbadb, 0x006dbadb,
+ 0x00adbadb, 0x00edbadb, 0x002ebadb, 0x006ebadb, 0x00aebadb, 0x00eebadb,
+ 0x002fbadb, 0x006fbadb, 0x00afbadb, 0x00efbadb, 0x002cbedb, 0x006cbedb,
+ 0x00acbedb, 0x00ecbedb, 0x002dbedb, 0x006dbedb, 0x00adbedb, 0x00edbedb,
+ 0x002ebedb, 0x006ebedb, 0x00aebedb, 0x00eebedb, 0x002fbedb, 0x006fbedb,
+ 0x00afbedb, 0x00efbedb, 0x002cb2eb, 0x006cb2eb, 0x00acb2eb, 0x00ecb2eb,
+ 0x002db2eb, 0x006db2eb, 0x00adb2eb, 0x00edb2eb, 0x002eb2eb, 0x006eb2eb,
+ 0x00aeb2eb, 0x00eeb2eb, 0x002fb2eb, 0x006fb2eb, 0x00afb2eb, 0x00efb2eb,
+ 0x002cb6eb, 0x006cb6eb, 0x00acb6eb, 0x00ecb6eb, 0x002db6eb, 0x006db6eb,
+ 0x00adb6eb, 0x00edb6eb, 0x002eb6eb, 0x006eb6eb, 0x00aeb6eb, 0x00eeb6eb,
+ 0x002fb6eb, 0x006fb6eb, 0x00afb6eb, 0x00efb6eb, 0x002cbaeb, 0x006cbaeb,
+ 0x00acbaeb, 0x00ecbaeb, 0x002dbaeb, 0x006dbaeb, 0x00adbaeb, 0x00edbaeb,
+ 0x002ebaeb, 0x006ebaeb, 0x00aebaeb, 0x00eebaeb, 0x002fbaeb, 0x006fbaeb,
+ 0x00afbaeb, 0x00efbaeb, 0x002cbeeb, 0x006cbeeb, 0x00acbeeb, 0x00ecbeeb,
+ 0x002dbeeb, 0x006dbeeb, 0x00adbeeb, 0x00edbeeb, 0x002ebeeb, 0x006ebeeb,
+ 0x00aebeeb, 0x00eebeeb, 0x002fbeeb, 0x006fbeeb, 0x00afbeeb, 0x00efbeeb,
+ 0x002cb2fb, 0x006cb2fb, 0x00acb2fb, 0x00ecb2fb, 0x002db2fb, 0x006db2fb,
+ 0x00adb2fb, 0x00edb2fb, 0x002eb2fb, 0x006eb2fb, 0x00aeb2fb, 0x00eeb2fb,
+ 0x002fb2fb, 0x006fb2fb, 0x00afb2fb, 0x00efb2fb, 0x002cb6fb, 0x006cb6fb,
+ 0x00acb6fb, 0x00ecb6fb, 0x002db6fb, 0x006db6fb, 0x00adb6fb, 0x00edb6fb,
+ 0x002eb6fb, 0x006eb6fb, 0x00aeb6fb, 0x00eeb6fb, 0x002fb6fb, 0x006fb6fb,
+ 0x00afb6fb, 0x00efb6fb, 0x002cbafb, 0x006cbafb, 0x00acbafb, 0x00ecbafb,
+ 0x002dbafb, 0x006dbafb, 0x00adbafb, 0x00edbafb, 0x002ebafb, 0x006ebafb,
+ 0x00aebafb, 0x00eebafb, 0x002fbafb, 0x006fbafb, 0x00afbafb, 0x00efbafb,
+ 0x002cbefb, 0x006cbefb, 0x00acbefb, 0x00ecbefb, 0x002dbefb, 0x006dbefb,
+ 0x00adbefb, 0x00edbefb, 0x002ebefb, 0x006ebefb, 0x00aebefb, 0x00eebefb,
+ 0x002fbefb, 0x006fbefb, 0x00afbefb, 0x00efbefb, 0x0b2cb2cb, 0x1b2cb2cb,
+ 0x2b2cb2cb, 0x3b2cb2cb, 0x0b6cb2cb, 0x1b6cb2cb, 0x2b6cb2cb, 0x3b6cb2cb,
+ 0x0bacb2cb, 0x1bacb2cb, 0x2bacb2cb, 0x3bacb2cb, 0x0becb2cb, 0x1becb2cb,
+ 0x2becb2cb, 0x3becb2cb, 0x0b2db2cb, 0x1b2db2cb, 0x2b2db2cb, 0x3b2db2cb,
+ 0x0b6db2cb, 0x1b6db2cb, 0x2b6db2cb, 0x3b6db2cb, 0x0badb2cb, 0x1badb2cb,
+ 0x2badb2cb, 0x3badb2cb, 0x0bedb2cb, 0x1bedb2cb, 0x2bedb2cb, 0x3bedb2cb,
+ 0x0b2eb2cb, 0x1b2eb2cb, 0x2b2eb2cb, 0x3b2eb2cb, 0x0b6eb2cb, 0x1b6eb2cb,
+ 0x2b6eb2cb, 0x3b6eb2cb, 0x0baeb2cb, 0x1baeb2cb, 0x2baeb2cb, 0x3baeb2cb,
+ 0x0beeb2cb, 0x1beeb2cb, 0x2beeb2cb, 0x3beeb2cb, 0x0b2fb2cb, 0x1b2fb2cb,
+ 0x2b2fb2cb, 0x3b2fb2cb, 0x0b6fb2cb, 0x1b6fb2cb, 0x2b6fb2cb, 0x3b6fb2cb,
+ 0x0bafb2cb, 0x1bafb2cb, 0x2bafb2cb, 0x3bafb2cb, 0x0befb2cb, 0x1befb2cb,
+ 0x2befb2cb, 0x3befb2cb, 0x0b2cb6cb, 0x1b2cb6cb, 0x2b2cb6cb, 0x3b2cb6cb,
+ 0x0b6cb6cb, 0x1b6cb6cb, 0x2b6cb6cb, 0x3b6cb6cb, 0x0bacb6cb, 0x1bacb6cb,
+ 0x2bacb6cb, 0x3bacb6cb, 0x0becb6cb, 0x1becb6cb, 0x2becb6cb, 0x3becb6cb,
+ 0x0b2db6cb, 0x1b2db6cb, 0x2b2db6cb, 0x3b2db6cb, 0x0b6db6cb, 0x1b6db6cb,
+ 0x2b6db6cb, 0x3b6db6cb, 0x0badb6cb, 0x1badb6cb, 0x2badb6cb, 0x3badb6cb,
+ 0x0bedb6cb, 0x1bedb6cb, 0x2bedb6cb, 0x3bedb6cb, 0x0b2eb6cb, 0x1b2eb6cb,
+ 0x2b2eb6cb, 0x3b2eb6cb, 0x0b6eb6cb, 0x1b6eb6cb, 0x2b6eb6cb, 0x3b6eb6cb,
+ 0x0baeb6cb, 0x1baeb6cb, 0x2baeb6cb, 0x3baeb6cb, 0x0beeb6cb, 0x1beeb6cb,
+ 0x2beeb6cb, 0x3beeb6cb, 0x0b2fb6cb, 0x1b2fb6cb, 0x2b2fb6cb, 0x3b2fb6cb,
+ 0x0b6fb6cb, 0x1b6fb6cb, 0x2b6fb6cb, 0x3b6fb6cb, 0x0bafb6cb, 0x1bafb6cb,
+ 0x2bafb6cb, 0x3bafb6cb, 0x0befb6cb, 0x1befb6cb, 0x2befb6cb, 0x3befb6cb,
+ 0x0b2cbacb, 0x1b2cbacb, 0x2b2cbacb, 0x3b2cbacb, 0x0b6cbacb, 0x1b6cbacb,
+ 0x2b6cbacb, 0x3b6cbacb, 0x0bacbacb, 0x1bacbacb, 0x2bacbacb, 0x3bacbacb,
+ 0x0becbacb, 0x1becbacb, 0x2becbacb, 0x3becbacb, 0x0b2dbacb, 0x1b2dbacb,
+ 0x2b2dbacb, 0x3b2dbacb, 0x0b6dbacb, 0x1b6dbacb, 0x2b6dbacb, 0x3b6dbacb,
+ 0x0badbacb, 0x1badbacb, 0x2badbacb, 0x3badbacb, 0x0bedbacb, 0x1bedbacb,
+ 0x2bedbacb, 0x3bedbacb, 0x0b2ebacb, 0x1b2ebacb, 0x2b2ebacb, 0x3b2ebacb,
+ 0x0b6ebacb, 0x1b6ebacb, 0x2b6ebacb, 0x3b6ebacb, 0x0baebacb, 0x1baebacb,
+ 0x2baebacb, 0x3baebacb, 0x0beebacb, 0x1beebacb, 0x2beebacb, 0x3beebacb,
+ 0x0b2fbacb, 0x1b2fbacb, 0x2b2fbacb, 0x3b2fbacb, 0x0b6fbacb, 0x1b6fbacb,
+ 0x2b6fbacb, 0x3b6fbacb, 0x0bafbacb, 0x1bafbacb, 0x2bafbacb, 0x3bafbacb,
+ 0x0befbacb, 0x1befbacb, 0x2befbacb, 0x3befbacb, 0x0b2cbecb, 0x1b2cbecb,
+ 0x2b2cbecb, 0x3b2cbecb, 0x0b6cbecb, 0x1b6cbecb, 0x2b6cbecb, 0x3b6cbecb,
+ 0x0bacbecb, 0x1bacbecb, 0x2bacbecb, 0x3bacbecb, 0x0becbecb, 0x1becbecb,
+ 0x2becbecb, 0x3becbecb, 0x0b2dbecb, 0x1b2dbecb, 0x2b2dbecb, 0x3b2dbecb,
+ 0x0b6dbecb, 0x1b6dbecb, 0x2b6dbecb, 0x3b6dbecb, 0x0badbecb, 0x1badbecb,
+ 0x2badbecb, 0x3badbecb, 0x0bedbecb, 0x1bedbecb, 0x2bedbecb, 0x3bedbecb,
+ 0x0b2ebecb, 0x1b2ebecb, 0x2b2ebecb, 0x3b2ebecb, 0x0b6ebecb, 0x1b6ebecb,
+ 0x2b6ebecb, 0x3b6ebecb, 0x0baebecb, 0x1baebecb, 0x2baebecb, 0x3baebecb,
+ 0x0beebecb, 0x1beebecb, 0x2beebecb, 0x3beebecb, 0x0b2fbecb, 0x1b2fbecb,
+ 0x2b2fbecb, 0x3b2fbecb, 0x0b6fbecb, 0x1b6fbecb, 0x2b6fbecb, 0x3b6fbecb,
+ 0x0bafbecb, 0x1bafbecb, 0x2bafbecb, 0x3bafbecb, 0x0befbecb, 0x1befbecb,
+ 0x2befbecb, 0x3befbecb, 0x0b2cb2db, 0x1b2cb2db, 0x2b2cb2db, 0x3b2cb2db,
+ 0x0b6cb2db, 0x1b6cb2db, 0x2b6cb2db, 0x3b6cb2db, 0x0bacb2db, 0x1bacb2db,
+ 0x2bacb2db, 0x3bacb2db, 0x0becb2db, 0x1becb2db, 0x2becb2db, 0x3becb2db,
+ 0x0b2db2db, 0x1b2db2db, 0x2b2db2db, 0x3b2db2db, 0x0b6db2db, 0x1b6db2db,
+ 0x2b6db2db, 0x3b6db2db, 0x0badb2db, 0x1badb2db, 0x2badb2db, 0x3badb2db,
+ 0x0bedb2db, 0x1bedb2db, 0x2bedb2db, 0x3bedb2db, 0x0b2eb2db, 0x1b2eb2db,
+ 0x2b2eb2db, 0x3b2eb2db, 0x0b6eb2db, 0x1b6eb2db, 0x2b6eb2db, 0x3b6eb2db,
+ 0x0baeb2db, 0x1baeb2db, 0x2baeb2db, 0x3baeb2db, 0x0beeb2db, 0x1beeb2db,
+ 0x2beeb2db, 0x3beeb2db, 0x0b2fb2db, 0x1b2fb2db, 0x2b2fb2db, 0x3b2fb2db,
+ 0x0b6fb2db, 0x1b6fb2db, 0x2b6fb2db, 0x3b6fb2db, 0x0bafb2db, 0x1bafb2db,
+ 0x2bafb2db, 0x3bafb2db, 0x0befb2db, 0x1befb2db, 0x2befb2db, 0x3befb2db,
+ 0x0b2cb6db, 0x1b2cb6db, 0x2b2cb6db, 0x3b2cb6db, 0x0b6cb6db, 0x1b6cb6db,
+ 0x2b6cb6db, 0x3b6cb6db, 0x0bacb6db, 0x1bacb6db, 0x2bacb6db, 0x3bacb6db,
+ 0x0becb6db, 0x1becb6db, 0x2becb6db, 0x3becb6db, 0x0b2db6db, 0x1b2db6db,
+ 0x2b2db6db, 0x3b2db6db, 0x0b6db6db, 0x1b6db6db, 0x2b6db6db, 0x3b6db6db,
+ 0x0badb6db, 0x1badb6db, 0x2badb6db, 0x3badb6db, 0x0bedb6db, 0x1bedb6db,
+ 0x2bedb6db, 0x3bedb6db, 0x0b2eb6db, 0x1b2eb6db, 0x2b2eb6db, 0x3b2eb6db,
+ 0x0b6eb6db, 0x1b6eb6db, 0x2b6eb6db, 0x3b6eb6db, 0x0baeb6db, 0x1baeb6db,
+ 0x2baeb6db, 0x3baeb6db,
+};
+
+static const uint32_t kNonZeroRepsDepth[704] = {
+ 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+ 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+ 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+ 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+ 18, 18, 18, 18, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+};
+
+static const uint16_t kStaticLiteralCodeBits[256] = {
+ 0, 128, 64, 192, 32, 160, 96, 224,
+ 16, 144, 80, 208, 48, 176, 112, 240,
+ 8, 136, 72, 200, 40, 168, 104, 232,
+ 24, 152, 88, 216, 56, 184, 120, 248,
+ 4, 132, 68, 196, 36, 164, 100, 228,
+ 20, 148, 84, 212, 52, 180, 116, 244,
+ 12, 140, 76, 204, 44, 172, 108, 236,
+ 28, 156, 92, 220, 60, 188, 124, 252,
+ 2, 130, 66, 194, 34, 162, 98, 226,
+ 18, 146, 82, 210, 50, 178, 114, 242,
+ 10, 138, 74, 202, 42, 170, 106, 234,
+ 26, 154, 90, 218, 58, 186, 122, 250,
+ 6, 134, 70, 198, 38, 166, 102, 230,
+ 22, 150, 86, 214, 54, 182, 118, 246,
+ 14, 142, 78, 206, 46, 174, 110, 238,
+ 30, 158, 94, 222, 62, 190, 126, 254,
+ 1, 129, 65, 193, 33, 161, 97, 225,
+ 17, 145, 81, 209, 49, 177, 113, 241,
+ 9, 137, 73, 201, 41, 169, 105, 233,
+ 25, 153, 89, 217, 57, 185, 121, 249,
+ 5, 133, 69, 197, 37, 165, 101, 229,
+ 21, 149, 85, 213, 53, 181, 117, 245,
+ 13, 141, 77, 205, 45, 173, 109, 237,
+ 29, 157, 93, 221, 61, 189, 125, 253,
+ 3, 131, 67, 195, 35, 163, 99, 227,
+ 19, 147, 83, 211, 51, 179, 115, 243,
+ 11, 139, 75, 203, 43, 171, 107, 235,
+ 27, 155, 91, 219, 59, 187, 123, 251,
+ 7, 135, 71, 199, 39, 167, 103, 231,
+ 23, 151, 87, 215, 55, 183, 119, 247,
+ 15, 143, 79, 207, 47, 175, 111, 239,
+ 31, 159, 95, 223, 63, 191, 127, 255,
+};
+
+inline void StoreStaticLiteralHuffmanTree(size_t* storage_ix,
+ uint8_t* storage) {
+ WriteBits(32, 0x00010003U, storage_ix, storage);
+}
+
+static const uint16_t kStaticCommandCodeBits[kNumCommandPrefixes] = {
+ 0, 256, 128, 384, 64, 320, 192, 448,
+ 32, 288, 160, 416, 96, 352, 224, 480,
+ 16, 272, 144, 400, 80, 336, 208, 464,
+ 48, 304, 176, 432, 112, 368, 240, 496,
+ 8, 264, 136, 392, 72, 328, 200, 456,
+ 40, 296, 168, 424, 104, 360, 232, 488,
+ 24, 280, 152, 408, 88, 344, 216, 472,
+ 56, 312, 184, 440, 120, 376, 248, 504,
+ 4, 260, 132, 388, 68, 324, 196, 452,
+ 36, 292, 164, 420, 100, 356, 228, 484,
+ 20, 276, 148, 404, 84, 340, 212, 468,
+ 52, 308, 180, 436, 116, 372, 244, 500,
+ 12, 268, 140, 396, 76, 332, 204, 460,
+ 44, 300, 172, 428, 108, 364, 236, 492,
+ 28, 284, 156, 412, 92, 348, 220, 476,
+ 60, 316, 188, 444, 124, 380, 252, 508,
+ 2, 258, 130, 386, 66, 322, 194, 450,
+ 34, 290, 162, 418, 98, 354, 226, 482,
+ 18, 274, 146, 402, 82, 338, 210, 466,
+ 50, 306, 178, 434, 114, 370, 242, 498,
+ 10, 266, 138, 394, 74, 330, 202, 458,
+ 42, 298, 170, 426, 106, 362, 234, 490,
+ 26, 282, 154, 410, 90, 346, 218, 474,
+ 58, 314, 186, 442, 122, 378, 250, 506,
+ 6, 262, 134, 390, 70, 326, 198, 454,
+ 38, 294, 166, 422, 102, 358, 230, 486,
+ 22, 278, 150, 406, 86, 342, 214, 470,
+ 54, 310, 182, 438, 118, 374, 246, 502,
+ 14, 270, 142, 398, 78, 334, 206, 462,
+ 46, 302, 174, 430, 110, 366, 238, 494,
+ 30, 286, 158, 414, 94, 350, 222, 478,
+ 62, 318, 190, 446, 126, 382, 254, 510,
+ 1, 257, 129, 385, 65, 321, 193, 449,
+ 33, 289, 161, 417, 97, 353, 225, 481,
+ 17, 273, 145, 401, 81, 337, 209, 465,
+ 49, 305, 177, 433, 113, 369, 241, 497,
+ 9, 265, 137, 393, 73, 329, 201, 457,
+ 41, 297, 169, 425, 105, 361, 233, 489,
+ 25, 281, 153, 409, 89, 345, 217, 473,
+ 57, 313, 185, 441, 121, 377, 249, 505,
+ 5, 261, 133, 389, 69, 325, 197, 453,
+ 37, 293, 165, 421, 101, 357, 229, 485,
+ 21, 277, 149, 405, 85, 341, 213, 469,
+ 53, 309, 181, 437, 117, 373, 245, 501,
+ 13, 269, 141, 397, 77, 333, 205, 461,
+ 45, 301, 173, 429, 109, 365, 237, 493,
+ 29, 285, 157, 413, 93, 349, 221, 477,
+ 61, 317, 189, 445, 125, 381, 253, 509,
+ 3, 259, 131, 387, 67, 323, 195, 451,
+ 35, 291, 163, 419, 99, 355, 227, 483,
+ 19, 275, 147, 403, 83, 339, 211, 467,
+ 51, 307, 179, 435, 115, 371, 243, 499,
+ 11, 267, 139, 395, 75, 331, 203, 459,
+ 43, 299, 171, 427, 107, 363, 235, 491,
+ 27, 283, 155, 411, 91, 347, 219, 475,
+ 59, 315, 187, 443, 123, 379, 251, 507,
+ 7, 1031, 519, 1543, 263, 1287, 775, 1799,
+ 135, 1159, 647, 1671, 391, 1415, 903, 1927,
+ 71, 1095, 583, 1607, 327, 1351, 839, 1863,
+ 199, 1223, 711, 1735, 455, 1479, 967, 1991,
+ 39, 1063, 551, 1575, 295, 1319, 807, 1831,
+ 167, 1191, 679, 1703, 423, 1447, 935, 1959,
+ 103, 1127, 615, 1639, 359, 1383, 871, 1895,
+ 231, 1255, 743, 1767, 487, 1511, 999, 2023,
+ 23, 1047, 535, 1559, 279, 1303, 791, 1815,
+ 151, 1175, 663, 1687, 407, 1431, 919, 1943,
+ 87, 1111, 599, 1623, 343, 1367, 855, 1879,
+ 215, 1239, 727, 1751, 471, 1495, 983, 2007,
+ 55, 1079, 567, 1591, 311, 1335, 823, 1847,
+ 183, 1207, 695, 1719, 439, 1463, 951, 1975,
+ 119, 1143, 631, 1655, 375, 1399, 887, 1911,
+ 247, 1271, 759, 1783, 503, 1527, 1015, 2039,
+ 15, 1039, 527, 1551, 271, 1295, 783, 1807,
+ 143, 1167, 655, 1679, 399, 1423, 911, 1935,
+ 79, 1103, 591, 1615, 335, 1359, 847, 1871,
+ 207, 1231, 719, 1743, 463, 1487, 975, 1999,
+ 47, 1071, 559, 1583, 303, 1327, 815, 1839,
+ 175, 1199, 687, 1711, 431, 1455, 943, 1967,
+ 111, 1135, 623, 1647, 367, 1391, 879, 1903,
+ 239, 1263, 751, 1775, 495, 1519, 1007, 2031,
+ 31, 1055, 543, 1567, 287, 1311, 799, 1823,
+ 159, 1183, 671, 1695, 415, 1439, 927, 1951,
+ 95, 1119, 607, 1631, 351, 1375, 863, 1887,
+ 223, 1247, 735, 1759, 479, 1503, 991, 2015,
+ 63, 1087, 575, 1599, 319, 1343, 831, 1855,
+ 191, 1215, 703, 1727, 447, 1471, 959, 1983,
+ 127, 1151, 639, 1663, 383, 1407, 895, 1919,
+ 255, 1279, 767, 1791, 511, 1535, 1023, 2047,
+};
+
+inline void StoreStaticCommandHuffmanTree(size_t* storage_ix,
+ uint8_t* storage) {
+ WriteBits(28, 0x0000000006307003U, storage_ix, storage);
+ WriteBits(31, 0x0000000009262441U, storage_ix, storage);
+}
+
+static const uint16_t kStaticDistanceCodeBits[64] = {
+ 0, 32, 16, 48, 8, 40, 24, 56, 4, 36, 20, 52, 12, 44, 28, 60,
+ 2, 34, 18, 50, 10, 42, 26, 58, 6, 38, 22, 54, 14, 46, 30, 62,
+ 1, 33, 17, 49, 9, 41, 25, 57, 5, 37, 21, 53, 13, 45, 29, 61,
+ 3, 35, 19, 51, 11, 43, 27, 59, 7, 39, 23, 55, 15, 47, 31, 63,
+};
+
+inline void StoreStaticDistanceHuffmanTree(size_t* storage_ix,
+ uint8_t* storage) {
+ WriteBits(18, 0x000000000001dc03U, storage_ix, storage);
+ WriteBits(10, 0x00000000000000daU, storage_ix, storage);
+}
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_ENTROPY_ENCODE_STATIC_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/fast_log.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/fast_log.h
new file mode 100644
index 00000000000..f9450ed5891
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/fast_log.h
@@ -0,0 +1,139 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Utilities for fast computation of logarithms.
+
+#ifndef BROTLI_ENC_FAST_LOG_H_
+#define BROTLI_ENC_FAST_LOG_H_
+
+#include <assert.h>
+#include <math.h>
+
+#include "./types.h"
+
+namespace brotli {
+
+static inline uint32_t Log2FloorNonZero(size_t n) {
+#ifdef __GNUC__
+ return 31u ^ static_cast<uint32_t>(__builtin_clz(static_cast<uint32_t>(n)));
+#else
+ uint32_t result = 0;
+ while (n >>= 1) result++;
+ return result;
+#endif
+}
+
+// A lookup table for small values of log2(int) to be used in entropy
+// computation.
+//
+// ", ".join(["%.16ff" % x for x in [0.0]+[log2(x) for x in range(1, 256)]])
+static const float kLog2Table[] = {
+ 0.0000000000000000f, 0.0000000000000000f, 1.0000000000000000f,
+ 1.5849625007211563f, 2.0000000000000000f, 2.3219280948873622f,
+ 2.5849625007211561f, 2.8073549220576042f, 3.0000000000000000f,
+ 3.1699250014423126f, 3.3219280948873626f, 3.4594316186372978f,
+ 3.5849625007211565f, 3.7004397181410922f, 3.8073549220576037f,
+ 3.9068905956085187f, 4.0000000000000000f, 4.0874628412503400f,
+ 4.1699250014423122f, 4.2479275134435852f, 4.3219280948873626f,
+ 4.3923174227787607f, 4.4594316186372973f, 4.5235619560570131f,
+ 4.5849625007211570f, 4.6438561897747244f, 4.7004397181410926f,
+ 4.7548875021634691f, 4.8073549220576037f, 4.8579809951275728f,
+ 4.9068905956085187f, 4.9541963103868758f, 5.0000000000000000f,
+ 5.0443941193584534f, 5.0874628412503400f, 5.1292830169449664f,
+ 5.1699250014423122f, 5.2094533656289501f, 5.2479275134435852f,
+ 5.2854022188622487f, 5.3219280948873626f, 5.3575520046180838f,
+ 5.3923174227787607f, 5.4262647547020979f, 5.4594316186372973f,
+ 5.4918530963296748f, 5.5235619560570131f, 5.5545888516776376f,
+ 5.5849625007211570f, 5.6147098441152083f, 5.6438561897747244f,
+ 5.6724253419714961f, 5.7004397181410926f, 5.7279204545631996f,
+ 5.7548875021634691f, 5.7813597135246599f, 5.8073549220576046f,
+ 5.8328900141647422f, 5.8579809951275719f, 5.8826430493618416f,
+ 5.9068905956085187f, 5.9307373375628867f, 5.9541963103868758f,
+ 5.9772799234999168f, 6.0000000000000000f, 6.0223678130284544f,
+ 6.0443941193584534f, 6.0660891904577721f, 6.0874628412503400f,
+ 6.1085244567781700f, 6.1292830169449672f, 6.1497471195046822f,
+ 6.1699250014423122f, 6.1898245588800176f, 6.2094533656289510f,
+ 6.2288186904958804f, 6.2479275134435861f, 6.2667865406949019f,
+ 6.2854022188622487f, 6.3037807481771031f, 6.3219280948873617f,
+ 6.3398500028846252f, 6.3575520046180847f, 6.3750394313469254f,
+ 6.3923174227787598f, 6.4093909361377026f, 6.4262647547020979f,
+ 6.4429434958487288f, 6.4594316186372982f, 6.4757334309663976f,
+ 6.4918530963296748f, 6.5077946401986964f, 6.5235619560570131f,
+ 6.5391588111080319f, 6.5545888516776376f, 6.5698556083309478f,
+ 6.5849625007211561f, 6.5999128421871278f, 6.6147098441152092f,
+ 6.6293566200796095f, 6.6438561897747253f, 6.6582114827517955f,
+ 6.6724253419714952f, 6.6865005271832185f, 6.7004397181410917f,
+ 6.7142455176661224f, 6.7279204545631988f, 6.7414669864011465f,
+ 6.7548875021634691f, 6.7681843247769260f, 6.7813597135246599f,
+ 6.7944158663501062f, 6.8073549220576037f, 6.8201789624151887f,
+ 6.8328900141647422f, 6.8454900509443757f, 6.8579809951275719f,
+ 6.8703647195834048f, 6.8826430493618416f, 6.8948177633079437f,
+ 6.9068905956085187f, 6.9188632372745955f, 6.9307373375628867f,
+ 6.9425145053392399f, 6.9541963103868758f, 6.9657842846620879f,
+ 6.9772799234999168f, 6.9886846867721664f, 7.0000000000000000f,
+ 7.0112272554232540f, 7.0223678130284544f, 7.0334230015374501f,
+ 7.0443941193584534f, 7.0552824355011898f, 7.0660891904577721f,
+ 7.0768155970508317f, 7.0874628412503400f, 7.0980320829605272f,
+ 7.1085244567781700f, 7.1189410727235076f, 7.1292830169449664f,
+ 7.1395513523987937f, 7.1497471195046822f, 7.1598713367783891f,
+ 7.1699250014423130f, 7.1799090900149345f, 7.1898245588800176f,
+ 7.1996723448363644f, 7.2094533656289492f, 7.2191685204621621f,
+ 7.2288186904958804f, 7.2384047393250794f, 7.2479275134435861f,
+ 7.2573878426926521f, 7.2667865406949019f, 7.2761244052742384f,
+ 7.2854022188622487f, 7.2946207488916270f, 7.3037807481771031f,
+ 7.3128829552843557f, 7.3219280948873617f, 7.3309168781146177f,
+ 7.3398500028846243f, 7.3487281542310781f, 7.3575520046180847f,
+ 7.3663222142458151f, 7.3750394313469254f, 7.3837042924740528f,
+ 7.3923174227787607f, 7.4008794362821844f, 7.4093909361377026f,
+ 7.4178525148858991f, 7.4262647547020979f, 7.4346282276367255f,
+ 7.4429434958487288f, 7.4512111118323299f, 7.4594316186372973f,
+ 7.4676055500829976f, 7.4757334309663976f, 7.4838157772642564f,
+ 7.4918530963296748f, 7.4998458870832057f, 7.5077946401986964f,
+ 7.5156998382840436f, 7.5235619560570131f, 7.5313814605163119f,
+ 7.5391588111080319f, 7.5468944598876373f, 7.5545888516776376f,
+ 7.5622424242210728f, 7.5698556083309478f, 7.5774288280357487f,
+ 7.5849625007211561f, 7.5924570372680806f, 7.5999128421871278f,
+ 7.6073303137496113f, 7.6147098441152075f, 7.6220518194563764f,
+ 7.6293566200796095f, 7.6366246205436488f, 7.6438561897747244f,
+ 7.6510516911789290f, 7.6582114827517955f, 7.6653359171851765f,
+ 7.6724253419714952f, 7.6794800995054464f, 7.6865005271832185f,
+ 7.6934869574993252f, 7.7004397181410926f, 7.7073591320808825f,
+ 7.7142455176661224f, 7.7210991887071856f, 7.7279204545631996f,
+ 7.7347096202258392f, 7.7414669864011465f, 7.7481928495894596f,
+ 7.7548875021634691f, 7.7615512324444795f, 7.7681843247769260f,
+ 7.7747870596011737f, 7.7813597135246608f, 7.7879025593914317f,
+ 7.7944158663501062f, 7.8008998999203047f, 7.8073549220576037f,
+ 7.8137811912170374f, 7.8201789624151887f, 7.8265484872909159f,
+ 7.8328900141647422f, 7.8392037880969445f, 7.8454900509443757f,
+ 7.8517490414160571f, 7.8579809951275719f, 7.8641861446542798f,
+ 7.8703647195834048f, 7.8765169465650002f, 7.8826430493618425f,
+ 7.8887432488982601f, 7.8948177633079446f, 7.9008668079807496f,
+ 7.9068905956085187f, 7.9128893362299619f, 7.9188632372745955f,
+ 7.9248125036057813f, 7.9307373375628867f, 7.9366379390025719f,
+ 7.9425145053392399f, 7.9483672315846778f, 7.9541963103868758f,
+ 7.9600019320680806f, 7.9657842846620870f, 7.9715435539507720f,
+ 7.9772799234999168f, 7.9829935746943104f, 7.9886846867721664f,
+ 7.9943534368588578f
+};
+
+// Faster logarithm for small integers, with the property of log2(0) == 0.
+static inline double FastLog2(size_t v) {
+ if (v < sizeof(kLog2Table) / sizeof(kLog2Table[0])) {
+ return kLog2Table[v];
+ }
+#if defined(_MSC_VER) && _MSC_VER <= 1600
+ // Visual Studio 2010 does not have the log2() function defined, so we use
+ // log() and a multiplication instead.
+ static const double kLog2Inv = 1.4426950408889634f;
+ return log(static_cast<double>(v)) * kLog2Inv;
+#else
+ return log2(static_cast<double>(v));
+#endif
+}
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_FAST_LOG_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/find_match_length.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/find_match_length.h
new file mode 100644
index 00000000000..1337ec36861
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/find_match_length.h
@@ -0,0 +1,77 @@
+/* Copyright 2010 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Function to find maximal matching prefixes of strings.
+
+#ifndef BROTLI_ENC_FIND_MATCH_LENGTH_H_
+#define BROTLI_ENC_FIND_MATCH_LENGTH_H_
+
+
+#include "./port.h"
+#include "./types.h"
+
+namespace brotli {
+
+// Separate implementation for little-endian 64-bit targets, for speed.
+#if defined(__GNUC__) && defined(_LP64) && defined(IS_LITTLE_ENDIAN)
+
+static inline size_t FindMatchLengthWithLimit(const uint8_t* s1,
+ const uint8_t* s2,
+ size_t limit) {
+ size_t matched = 0;
+ size_t limit2 = (limit >> 3) + 1; // + 1 is for pre-decrement in while
+ while (PREDICT_TRUE(--limit2)) {
+ if (PREDICT_FALSE(BROTLI_UNALIGNED_LOAD64(s2) ==
+ BROTLI_UNALIGNED_LOAD64(s1 + matched))) {
+ s2 += 8;
+ matched += 8;
+ } else {
+ uint64_t x =
+ BROTLI_UNALIGNED_LOAD64(s2) ^ BROTLI_UNALIGNED_LOAD64(s1 + matched);
+ size_t matching_bits = static_cast<size_t>(__builtin_ctzll(x));
+ matched += matching_bits >> 3;
+ return matched;
+ }
+ }
+ limit = (limit & 7) + 1; // + 1 is for pre-decrement in while
+ while (--limit) {
+ if (PREDICT_TRUE(s1[matched] == *s2)) {
+ ++s2;
+ ++matched;
+ } else {
+ return matched;
+ }
+ }
+ return matched;
+}
+#else
+static inline size_t FindMatchLengthWithLimit(const uint8_t* s1,
+ const uint8_t* s2,
+ size_t limit) {
+ size_t matched = 0;
+ const uint8_t* s2_limit = s2 + limit;
+ const uint8_t* s2_ptr = s2;
+ // Find out how long the match is. We loop over the data 32 bits at a
+ // time until we find a 32-bit block that doesn't match; then we find
+ // the first non-matching bit and use that to calculate the total
+ // length of the match.
+ while (s2_ptr <= s2_limit - 4 &&
+ BROTLI_UNALIGNED_LOAD32(s2_ptr) ==
+ BROTLI_UNALIGNED_LOAD32(s1 + matched)) {
+ s2_ptr += 4;
+ matched += 4;
+ }
+ while ((s2_ptr < s2_limit) && (s1[matched] == *s2_ptr)) {
+ ++s2_ptr;
+ ++matched;
+ }
+ return matched;
+}
+#endif
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_FIND_MATCH_LENGTH_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/hash.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/hash.h
new file mode 100644
index 00000000000..8716863bff0
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/hash.h
@@ -0,0 +1,974 @@
+/* Copyright 2010 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// A (forgetful) hash table to the data seen by the compressor, to
+// help create backward references to previous data.
+
+#ifndef BROTLI_ENC_HASH_H_
+#define BROTLI_ENC_HASH_H_
+
+#include <sys/types.h>
+#include <algorithm>
+#include <cstring>
+#include <limits>
+
+#include "./dictionary_hash.h"
+#include "./fast_log.h"
+#include "./find_match_length.h"
+#include "./port.h"
+#include "./prefix.h"
+#include "./static_dict.h"
+#include "./transform.h"
+#include "./types.h"
+
+namespace brotli {
+
+static const size_t kMaxTreeSearchDepth = 64;
+static const size_t kMaxTreeCompLength = 128;
+
+static const uint32_t kDistanceCacheIndex[] = {
+ 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
+};
+static const int kDistanceCacheOffset[] = {
+ 0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3
+};
+
+static const uint32_t kCutoffTransformsCount = 10;
+static const uint8_t kCutoffTransforms[] = {
+ 0, 12, 27, 23, 42, 63, 56, 48, 59, 64
+};
+
+// kHashMul32 multiplier has these properties:
+// * The multiplier must be odd. Otherwise we may lose the highest bit.
+// * No long streaks of 1s or 0s.
+// * There is no effort to ensure that it is a prime, the oddity is enough
+// for this use.
+// * The number has been tuned heuristically against compression benchmarks.
+static const uint32_t kHashMul32 = 0x1e35a7bd;
+
+template<int kShiftBits>
+inline uint32_t Hash(const uint8_t *data) {
+ uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kHashMul32;
+ // The higher bits contain more mixture from the multiplication,
+ // so we take our results from there.
+ return h >> (32 - kShiftBits);
+}
+
+// Usually, we always choose the longest backward reference. This function
+// allows for the exception of that rule.
+//
+// If we choose a backward reference that is further away, it will
+// usually be coded with more bits. We approximate this by assuming
+// log2(distance). If the distance can be expressed in terms of the
+// last four distances, we use some heuristic constants to estimate
+// the bits cost. For the first up to four literals we use the bit
+// cost of the literals from the literal cost model, after that we
+// use the average bit cost of the cost model.
+//
+// This function is used to sometimes discard a longer backward reference
+// when it is not much longer and the bit cost for encoding it is more
+// than the saved literals.
+//
+// backward_reference_offset MUST be positive.
+inline double BackwardReferenceScore(size_t copy_length,
+ size_t backward_reference_offset) {
+ return 5.4 * static_cast<double>(copy_length) -
+ 1.20 * Log2FloorNonZero(backward_reference_offset);
+}
+
+inline double BackwardReferenceScoreUsingLastDistance(size_t copy_length,
+ size_t distance_short_code) {
+ static const double kDistanceShortCodeBitCost[16] = {
+ -0.6, 0.95, 1.17, 1.27,
+ 0.93, 0.93, 0.96, 0.96, 0.99, 0.99,
+ 1.05, 1.05, 1.15, 1.15, 1.25, 1.25
+ };
+ return 5.4 * static_cast<double>(copy_length) -
+ kDistanceShortCodeBitCost[distance_short_code];
+}
+
+struct BackwardMatch {
+ BackwardMatch(void) : distance(0), length_and_code(0) {}
+
+ BackwardMatch(size_t dist, size_t len)
+ : distance(static_cast<uint32_t>(dist))
+ , length_and_code(static_cast<uint32_t>(len << 5)) {}
+
+ BackwardMatch(size_t dist, size_t len, size_t len_code)
+ : distance(static_cast<uint32_t>(dist))
+ , length_and_code(static_cast<uint32_t>(
+ (len << 5) | (len == len_code ? 0 : len_code))) {}
+
+ size_t length(void) const {
+ return length_and_code >> 5;
+ }
+ size_t length_code(void) const {
+ size_t code = length_and_code & 31;
+ return code ? code : length();
+ }
+
+ uint32_t distance;
+ uint32_t length_and_code;
+};
+
+// A (forgetful) hash table to the data seen by the compressor, to
+// help create backward references to previous data.
+//
+// This is a hash map of fixed size (kBucketSize). Starting from the
+// given index, kBucketSweep buckets are used to store values of a key.
+template <int kBucketBits, int kBucketSweep, bool kUseDictionary>
+class HashLongestMatchQuickly {
+ public:
+ HashLongestMatchQuickly(void) {
+ Reset();
+ }
+ void Reset(void) {
+ need_init_ = true;
+ num_dict_lookups_ = 0;
+ num_dict_matches_ = 0;
+ }
+ void Init(void) {
+ if (need_init_) {
+ // It is not strictly necessary to fill this buffer here, but
+ // not filling will make the results of the compression stochastic
+ // (but correct). This is because random data would cause the
+ // system to find accidentally good backward references here and there.
+ memset(&buckets_[0], 0, sizeof(buckets_));
+ need_init_ = false;
+ }
+ }
+ void InitForData(const uint8_t* data, size_t num) {
+ for (size_t i = 0; i < num; ++i) {
+ const uint32_t key = HashBytes(&data[i]);
+ memset(&buckets_[key], 0, kBucketSweep * sizeof(buckets_[0]));
+ need_init_ = false;
+ }
+ }
+ // Look at 4 bytes at data.
+ // Compute a hash from these, and store the value somewhere within
+ // [ix .. ix+3].
+ inline void Store(const uint8_t *data, const uint32_t ix) {
+ const uint32_t key = HashBytes(data);
+ // Wiggle the value with the bucket sweep range.
+ const uint32_t off = (ix >> 3) % kBucketSweep;
+ buckets_[key + off] = ix;
+ }
+
+ // Find a longest backward match of &ring_buffer[cur_ix & ring_buffer_mask]
+ // up to the length of max_length and stores the position cur_ix in the
+ // hash table.
+ //
+ // Does not look for matches longer than max_length.
+ // Does not look for matches further away than max_backward.
+ // Writes the best found match length into best_len_out.
+ // Writes the index (&data[index]) of the start of the best match into
+ // best_distance_out.
+ inline bool FindLongestMatch(const uint8_t * __restrict ring_buffer,
+ const size_t ring_buffer_mask,
+ const int* __restrict distance_cache,
+ const size_t cur_ix,
+ const size_t max_length,
+ const size_t max_backward,
+ size_t * __restrict best_len_out,
+ size_t * __restrict best_len_code_out,
+ size_t * __restrict best_distance_out,
+ double* __restrict best_score_out) {
+ const size_t best_len_in = *best_len_out;
+ const size_t cur_ix_masked = cur_ix & ring_buffer_mask;
+ const uint32_t key = HashBytes(&ring_buffer[cur_ix_masked]);
+ int compare_char = ring_buffer[cur_ix_masked + best_len_in];
+ double best_score = *best_score_out;
+ size_t best_len = best_len_in;
+ size_t cached_backward = static_cast<size_t>(distance_cache[0]);
+ size_t prev_ix = cur_ix - cached_backward;
+ bool match_found = false;
+ if (prev_ix < cur_ix) {
+ prev_ix &= static_cast<uint32_t>(ring_buffer_mask);
+ if (compare_char == ring_buffer[prev_ix + best_len]) {
+ size_t len = FindMatchLengthWithLimit(&ring_buffer[prev_ix],
+ &ring_buffer[cur_ix_masked],
+ max_length);
+ if (len >= 4) {
+ best_score = BackwardReferenceScoreUsingLastDistance(len, 0);
+ best_len = len;
+ *best_len_out = len;
+ *best_len_code_out = len;
+ *best_distance_out = cached_backward;
+ *best_score_out = best_score;
+ compare_char = ring_buffer[cur_ix_masked + best_len];
+ if (kBucketSweep == 1) {
+ buckets_[key] = static_cast<uint32_t>(cur_ix);
+ return true;
+ } else {
+ match_found = true;
+ }
+ }
+ }
+ }
+ if (kBucketSweep == 1) {
+ // Only one to look for, don't bother to prepare for a loop.
+ prev_ix = buckets_[key];
+ buckets_[key] = static_cast<uint32_t>(cur_ix);
+ size_t backward = cur_ix - prev_ix;
+ prev_ix &= static_cast<uint32_t>(ring_buffer_mask);
+ if (compare_char != ring_buffer[prev_ix + best_len_in]) {
+ return false;
+ }
+ if (PREDICT_FALSE(backward == 0 || backward > max_backward)) {
+ return false;
+ }
+ const size_t len = FindMatchLengthWithLimit(&ring_buffer[prev_ix],
+ &ring_buffer[cur_ix_masked],
+ max_length);
+ if (len >= 4) {
+ *best_len_out = len;
+ *best_len_code_out = len;
+ *best_distance_out = backward;
+ *best_score_out = BackwardReferenceScore(len, backward);
+ return true;
+ }
+ } else {
+ uint32_t *bucket = buckets_ + key;
+ prev_ix = *bucket++;
+ for (int i = 0; i < kBucketSweep; ++i, prev_ix = *bucket++) {
+ const size_t backward = cur_ix - prev_ix;
+ prev_ix &= static_cast<uint32_t>(ring_buffer_mask);
+ if (compare_char != ring_buffer[prev_ix + best_len]) {
+ continue;
+ }
+ if (PREDICT_FALSE(backward == 0 || backward > max_backward)) {
+ continue;
+ }
+ const size_t len = FindMatchLengthWithLimit(&ring_buffer[prev_ix],
+ &ring_buffer[cur_ix_masked],
+ max_length);
+ if (len >= 4) {
+ const double score = BackwardReferenceScore(len, backward);
+ if (best_score < score) {
+ best_score = score;
+ best_len = len;
+ *best_len_out = best_len;
+ *best_len_code_out = best_len;
+ *best_distance_out = backward;
+ *best_score_out = score;
+ compare_char = ring_buffer[cur_ix_masked + best_len];
+ match_found = true;
+ }
+ }
+ }
+ }
+ if (kUseDictionary && !match_found &&
+ num_dict_matches_ >= (num_dict_lookups_ >> 7)) {
+ ++num_dict_lookups_;
+ const uint32_t dict_key = Hash<14>(&ring_buffer[cur_ix_masked]) << 1;
+ const uint16_t v = kStaticDictionaryHash[dict_key];
+ if (v > 0) {
+ const uint32_t len = v & 31;
+ const uint32_t dist = v >> 5;
+ const size_t offset =
+ kBrotliDictionaryOffsetsByLength[len] + len * dist;
+ if (len <= max_length) {
+ const size_t matchlen =
+ FindMatchLengthWithLimit(&ring_buffer[cur_ix_masked],
+ &kBrotliDictionary[offset], len);
+ if (matchlen + kCutoffTransformsCount > len && matchlen > 0) {
+ const size_t transform_id = kCutoffTransforms[len - matchlen];
+ const size_t word_id =
+ transform_id * (1u << kBrotliDictionarySizeBitsByLength[len]) +
+ dist;
+ const size_t backward = max_backward + word_id + 1;
+ const double score = BackwardReferenceScore(matchlen, backward);
+ if (best_score < score) {
+ ++num_dict_matches_;
+ best_score = score;
+ best_len = matchlen;
+ *best_len_out = best_len;
+ *best_len_code_out = len;
+ *best_distance_out = backward;
+ *best_score_out = best_score;
+ match_found = true;
+ }
+ }
+ }
+ }
+ }
+ const uint32_t off = (cur_ix >> 3) % kBucketSweep;
+ buckets_[key + off] = static_cast<uint32_t>(cur_ix);
+ return match_found;
+ }
+
+ enum { kHashLength = 5 };
+ enum { kHashTypeLength = 8 };
+ // HashBytes is the function that chooses the bucket to place
+ // the address in. The HashLongestMatch and HashLongestMatchQuickly
+ // classes have separate, different implementations of hashing.
+ static uint32_t HashBytes(const uint8_t *data) {
+ // Computing a hash based on 5 bytes works much better for
+ // qualities 1 and 3, where the next hash value is likely to replace
+ uint64_t h = (BROTLI_UNALIGNED_LOAD64(data) << 24) * kHashMul32;
+ // The higher bits contain more mixture from the multiplication,
+ // so we take our results from there.
+ return static_cast<uint32_t>(h >> (64 - kBucketBits));
+ }
+
+ enum { kHashMapSize = 4 << kBucketBits };
+
+ private:
+ static const uint32_t kBucketSize = 1 << kBucketBits;
+ uint32_t buckets_[kBucketSize + kBucketSweep];
+ // True if buckets_ array needs to be initialized.
+ bool need_init_;
+ size_t num_dict_lookups_;
+ size_t num_dict_matches_;
+};
+
+// A (forgetful) hash table to the data seen by the compressor, to
+// help create backward references to previous data.
+//
+// This is a hash map of fixed size (kBucketSize) to a ring buffer of
+// fixed size (kBlockSize). The ring buffer contains the last kBlockSize
+// index positions of the given hash key in the compressed data.
+template <int kBucketBits,
+ int kBlockBits,
+ int kNumLastDistancesToCheck>
+class HashLongestMatch {
+ public:
+ HashLongestMatch(void) {
+ Reset();
+ }
+
+ void Reset(void) {
+ need_init_ = true;
+ num_dict_lookups_ = 0;
+ num_dict_matches_ = 0;
+ }
+
+ void Init(void) {
+ if (need_init_) {
+ memset(&num_[0], 0, sizeof(num_));
+ need_init_ = false;
+ }
+ }
+
+ void InitForData(const uint8_t* data, size_t num) {
+ for (size_t i = 0; i < num; ++i) {
+ const uint32_t key = HashBytes(&data[i]);
+ num_[key] = 0;
+ need_init_ = false;
+ }
+ }
+
+ // Look at 3 bytes at data.
+ // Compute a hash from these, and store the value of ix at that position.
+ inline void Store(const uint8_t *data, const uint32_t ix) {
+ const uint32_t key = HashBytes(data);
+ const int minor_ix = num_[key] & kBlockMask;
+ buckets_[key][minor_ix] = ix;
+ ++num_[key];
+ }
+
+ // Find a longest backward match of &data[cur_ix] up to the length of
+ // max_length and stores the position cur_ix in the hash table.
+ //
+ // Does not look for matches longer than max_length.
+ // Does not look for matches further away than max_backward.
+ // Writes the best found match length into best_len_out.
+ // Writes the index (&data[index]) offset from the start of the best match
+ // into best_distance_out.
+ // Write the score of the best match into best_score_out.
+ bool FindLongestMatch(const uint8_t * __restrict data,
+ const size_t ring_buffer_mask,
+ const int* __restrict distance_cache,
+ const size_t cur_ix,
+ const size_t max_length,
+ const size_t max_backward,
+ size_t * __restrict best_len_out,
+ size_t * __restrict best_len_code_out,
+ size_t * __restrict best_distance_out,
+ double * __restrict best_score_out) {
+ *best_len_code_out = 0;
+ const size_t cur_ix_masked = cur_ix & ring_buffer_mask;
+ bool match_found = false;
+ // Don't accept a short copy from far away.
+ double best_score = *best_score_out;
+ size_t best_len = *best_len_out;
+ *best_len_out = 0;
+ // Try last distance first.
+ for (size_t i = 0; i < kNumLastDistancesToCheck; ++i) {
+ const size_t idx = kDistanceCacheIndex[i];
+ const size_t backward =
+ static_cast<size_t>(distance_cache[idx] + kDistanceCacheOffset[i]);
+ size_t prev_ix = static_cast<size_t>(cur_ix - backward);
+ if (prev_ix >= cur_ix) {
+ continue;
+ }
+ if (PREDICT_FALSE(backward > max_backward)) {
+ continue;
+ }
+ prev_ix &= ring_buffer_mask;
+
+ if (cur_ix_masked + best_len > ring_buffer_mask ||
+ prev_ix + best_len > ring_buffer_mask ||
+ data[cur_ix_masked + best_len] != data[prev_ix + best_len]) {
+ continue;
+ }
+ const size_t len = FindMatchLengthWithLimit(&data[prev_ix],
+ &data[cur_ix_masked],
+ max_length);
+ if (len >= 3 || (len == 2 && i < 2)) {
+ // Comparing for >= 2 does not change the semantics, but just saves for
+ // a few unnecessary binary logarithms in backward reference score,
+ // since we are not interested in such short matches.
+ double score = BackwardReferenceScoreUsingLastDistance(len, i);
+ if (best_score < score) {
+ best_score = score;
+ best_len = len;
+ *best_len_out = best_len;
+ *best_len_code_out = best_len;
+ *best_distance_out = backward;
+ *best_score_out = best_score;
+ match_found = true;
+ }
+ }
+ }
+ const uint32_t key = HashBytes(&data[cur_ix_masked]);
+ const uint32_t * __restrict const bucket = &buckets_[key][0];
+ const size_t down = (num_[key] > kBlockSize) ? (num_[key] - kBlockSize) : 0;
+ for (size_t i = num_[key]; i > down;) {
+ --i;
+ size_t prev_ix = bucket[i & kBlockMask];
+ const size_t backward = cur_ix - prev_ix;
+ if (PREDICT_FALSE(backward == 0 || backward > max_backward)) {
+ break;
+ }
+ prev_ix &= ring_buffer_mask;
+ if (cur_ix_masked + best_len > ring_buffer_mask ||
+ prev_ix + best_len > ring_buffer_mask ||
+ data[cur_ix_masked + best_len] != data[prev_ix + best_len]) {
+ continue;
+ }
+ const size_t len = FindMatchLengthWithLimit(&data[prev_ix],
+ &data[cur_ix_masked],
+ max_length);
+ if (len >= 4) {
+ // Comparing for >= 3 does not change the semantics, but just saves
+ // for a few unnecessary binary logarithms in backward reference
+ // score, since we are not interested in such short matches.
+ double score = BackwardReferenceScore(len, backward);
+ if (best_score < score) {
+ best_score = score;
+ best_len = len;
+ *best_len_out = best_len;
+ *best_len_code_out = best_len;
+ *best_distance_out = backward;
+ *best_score_out = best_score;
+ match_found = true;
+ }
+ }
+ }
+ buckets_[key][num_[key] & kBlockMask] = static_cast<uint32_t>(cur_ix);
+ ++num_[key];
+ if (!match_found && num_dict_matches_ >= (num_dict_lookups_ >> 7)) {
+ size_t dict_key = Hash<14>(&data[cur_ix_masked]) << 1;
+ for (int k = 0; k < 2; ++k, ++dict_key) {
+ ++num_dict_lookups_;
+ const uint16_t v = kStaticDictionaryHash[dict_key];
+ if (v > 0) {
+ const size_t len = v & 31;
+ const size_t dist = v >> 5;
+ const size_t offset =
+ kBrotliDictionaryOffsetsByLength[len] + len * dist;
+ if (len <= max_length) {
+ const size_t matchlen =
+ FindMatchLengthWithLimit(&data[cur_ix_masked],
+ &kBrotliDictionary[offset], len);
+ if (matchlen + kCutoffTransformsCount > len && matchlen > 0) {
+ const size_t transform_id = kCutoffTransforms[len - matchlen];
+ const size_t word_id =
+ transform_id * (1 << kBrotliDictionarySizeBitsByLength[len]) +
+ dist;
+ const size_t backward = max_backward + word_id + 1;
+ double score = BackwardReferenceScore(matchlen, backward);
+ if (best_score < score) {
+ ++num_dict_matches_;
+ best_score = score;
+ best_len = matchlen;
+ *best_len_out = best_len;
+ *best_len_code_out = len;
+ *best_distance_out = backward;
+ *best_score_out = best_score;
+ match_found = true;
+ }
+ }
+ }
+ }
+ }
+ }
+ return match_found;
+ }
+
+ // Finds all backward matches of &data[cur_ix & ring_buffer_mask] up to the
+ // length of max_length and stores the position cur_ix in the hash table.
+ //
+ // Sets *num_matches to the number of matches found, and stores the found
+ // matches in matches[0] to matches[*num_matches - 1]. The matches will be
+ // sorted by strictly increasing length and (non-strictly) increasing
+ // distance.
+ size_t FindAllMatches(const uint8_t* data,
+ const size_t ring_buffer_mask,
+ const size_t cur_ix,
+ const size_t max_length,
+ const size_t max_backward,
+ BackwardMatch* matches) {
+ BackwardMatch* const orig_matches = matches;
+ const size_t cur_ix_masked = cur_ix & ring_buffer_mask;
+ size_t best_len = 1;
+ size_t stop = cur_ix - 64;
+ if (cur_ix < 64) { stop = 0; }
+ for (size_t i = cur_ix - 1; i > stop && best_len <= 2; --i) {
+ size_t prev_ix = i;
+ const size_t backward = cur_ix - prev_ix;
+ if (PREDICT_FALSE(backward > max_backward)) {
+ break;
+ }
+ prev_ix &= ring_buffer_mask;
+ if (data[cur_ix_masked] != data[prev_ix] ||
+ data[cur_ix_masked + 1] != data[prev_ix + 1]) {
+ continue;
+ }
+ const size_t len =
+ FindMatchLengthWithLimit(&data[prev_ix], &data[cur_ix_masked],
+ max_length);
+ if (len > best_len) {
+ best_len = len;
+ *matches++ = BackwardMatch(backward, len);
+ }
+ }
+ const uint32_t key = HashBytes(&data[cur_ix_masked]);
+ const uint32_t * __restrict const bucket = &buckets_[key][0];
+ const size_t down = (num_[key] > kBlockSize) ? (num_[key] - kBlockSize) : 0;
+ for (size_t i = num_[key]; i > down;) {
+ --i;
+ size_t prev_ix = bucket[i & kBlockMask];
+ const size_t backward = cur_ix - prev_ix;
+ if (PREDICT_FALSE(backward == 0 || backward > max_backward)) {
+ break;
+ }
+ prev_ix &= ring_buffer_mask;
+ if (cur_ix_masked + best_len > ring_buffer_mask ||
+ prev_ix + best_len > ring_buffer_mask ||
+ data[cur_ix_masked + best_len] != data[prev_ix + best_len]) {
+ continue;
+ }
+ const size_t len =
+ FindMatchLengthWithLimit(&data[prev_ix], &data[cur_ix_masked],
+ max_length);
+ if (len > best_len) {
+ best_len = len;
+ *matches++ = BackwardMatch(backward, len);
+ }
+ }
+ buckets_[key][num_[key] & kBlockMask] = static_cast<uint32_t>(cur_ix);
+ ++num_[key];
+ uint32_t dict_matches[kMaxDictionaryMatchLen + 1];
+ for (size_t i = 0; i <= kMaxDictionaryMatchLen; ++i) {
+ dict_matches[i] = kInvalidMatch;
+ }
+ size_t minlen = std::max<size_t>(4, best_len + 1);
+ if (FindAllStaticDictionaryMatches(&data[cur_ix_masked], minlen, max_length,
+ &dict_matches[0])) {
+ size_t maxlen = std::min<size_t>(kMaxDictionaryMatchLen, max_length);
+ for (size_t l = minlen; l <= maxlen; ++l) {
+ uint32_t dict_id = dict_matches[l];
+ if (dict_id < kInvalidMatch) {
+ *matches++ = BackwardMatch(max_backward + (dict_id >> 5) + 1, l,
+ dict_id & 31);
+ }
+ }
+ }
+ return static_cast<size_t>(matches - orig_matches);
+ }
+
+ enum { kHashLength = 4 };
+ enum { kHashTypeLength = 4 };
+
+ // HashBytes is the function that chooses the bucket to place
+ // the address in. The HashLongestMatch and HashLongestMatchQuickly
+ // classes have separate, different implementations of hashing.
+ static uint32_t HashBytes(const uint8_t *data) {
+ uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kHashMul32;
+ // The higher bits contain more mixture from the multiplication,
+ // so we take our results from there.
+ return h >> (32 - kBucketBits);
+ }
+
+ enum { kHashMapSize = 2 << kBucketBits };
+
+ static const size_t kMaxNumMatches = 64 + (1 << kBlockBits);
+
+ private:
+ // Number of hash buckets.
+ static const uint32_t kBucketSize = 1 << kBucketBits;
+
+ // Only kBlockSize newest backward references are kept,
+ // and the older are forgotten.
+ static const uint32_t kBlockSize = 1 << kBlockBits;
+
+ // Mask for accessing entries in a block (in a ringbuffer manner).
+ static const uint32_t kBlockMask = (1 << kBlockBits) - 1;
+
+ // Number of entries in a particular bucket.
+ uint16_t num_[kBucketSize];
+
+ // Buckets containing kBlockSize of backward references.
+ uint32_t buckets_[kBucketSize][kBlockSize];
+
+ // True if num_ array needs to be initialized.
+ bool need_init_;
+
+ size_t num_dict_lookups_;
+ size_t num_dict_matches_;
+};
+
+// A (forgetful) hash table where each hash bucket contains a binary tree of
+// sequences whose first 4 bytes share the same hash code.
+// Each sequence is kMaxTreeCompLength long and is identified by its starting
+// position in the input data. The binary tree is sorted by the lexicographic
+// order of the sequences, and it is also a max-heap with respect to the
+// starting positions.
+class HashToBinaryTree {
+ public:
+ HashToBinaryTree() : forest_(NULL) {
+ Reset();
+ }
+
+ ~HashToBinaryTree() {
+ delete[] forest_;
+ }
+
+ void Reset() {
+ need_init_ = true;
+ }
+
+ void Init(int lgwin, size_t position, size_t bytes, bool is_last) {
+ if (need_init_) {
+ window_mask_ = (1u << lgwin) - 1u;
+ invalid_pos_ = static_cast<uint32_t>(-window_mask_);
+ for (uint32_t i = 0; i < kBucketSize; i++) {
+ buckets_[i] = invalid_pos_;
+ }
+ size_t num_nodes = (position == 0 && is_last) ? bytes : window_mask_ + 1;
+ forest_ = new uint32_t[2 * num_nodes];
+ need_init_ = false;
+ }
+ }
+
+ // Finds all backward matches of &data[cur_ix & ring_buffer_mask] up to the
+ // length of max_length and stores the position cur_ix in the hash table.
+ //
+ // Sets *num_matches to the number of matches found, and stores the found
+ // matches in matches[0] to matches[*num_matches - 1]. The matches will be
+ // sorted by strictly increasing length and (non-strictly) increasing
+ // distance.
+ size_t FindAllMatches(const uint8_t* data,
+ const size_t ring_buffer_mask,
+ const size_t cur_ix,
+ const size_t max_length,
+ const size_t max_backward,
+ BackwardMatch* matches) {
+ BackwardMatch* const orig_matches = matches;
+ const size_t cur_ix_masked = cur_ix & ring_buffer_mask;
+ size_t best_len = 1;
+ size_t stop = cur_ix - 64;
+ if (cur_ix < 64) { stop = 0; }
+ for (size_t i = cur_ix - 1; i > stop && best_len <= 2; --i) {
+ size_t prev_ix = i;
+ const size_t backward = cur_ix - prev_ix;
+ if (PREDICT_FALSE(backward > max_backward)) {
+ break;
+ }
+ prev_ix &= ring_buffer_mask;
+ if (data[cur_ix_masked] != data[prev_ix] ||
+ data[cur_ix_masked + 1] != data[prev_ix + 1]) {
+ continue;
+ }
+ const size_t len =
+ FindMatchLengthWithLimit(&data[prev_ix], &data[cur_ix_masked],
+ max_length);
+ if (len > best_len) {
+ best_len = len;
+ *matches++ = BackwardMatch(backward, len);
+ }
+ }
+ if (best_len < max_length) {
+ matches = StoreAndFindMatches(data, cur_ix, ring_buffer_mask,
+ max_length, &best_len, matches);
+ }
+ uint32_t dict_matches[kMaxDictionaryMatchLen + 1];
+ for (size_t i = 0; i <= kMaxDictionaryMatchLen; ++i) {
+ dict_matches[i] = kInvalidMatch;
+ }
+ size_t minlen = std::max<size_t>(4, best_len + 1);
+ if (FindAllStaticDictionaryMatches(&data[cur_ix_masked], minlen, max_length,
+ &dict_matches[0])) {
+ size_t maxlen = std::min<size_t>(kMaxDictionaryMatchLen, max_length);
+ for (size_t l = minlen; l <= maxlen; ++l) {
+ uint32_t dict_id = dict_matches[l];
+ if (dict_id < kInvalidMatch) {
+ *matches++ = BackwardMatch(max_backward + (dict_id >> 5) + 1, l,
+ dict_id & 31);
+ }
+ }
+ }
+ return static_cast<size_t>(matches - orig_matches);
+ }
+
+ // Stores the hash of the next 4 bytes and re-roots the binary tree at the
+ // current sequence, without returning any matches.
+ // REQUIRES: cur_ix + kMaxTreeCompLength <= end-of-current-block
+ void Store(const uint8_t* data,
+ const size_t ring_buffer_mask,
+ const size_t cur_ix) {
+ size_t best_len = 0;
+ StoreAndFindMatches(data, cur_ix, ring_buffer_mask, kMaxTreeCompLength,
+ &best_len, NULL);
+ }
+
+ void StitchToPreviousBlock(size_t num_bytes,
+ size_t position,
+ const uint8_t* ringbuffer,
+ size_t ringbuffer_mask) {
+ if (num_bytes >= 3 && position >= kMaxTreeCompLength) {
+ // Store the last `kMaxTreeCompLength - 1` positions in the hasher.
+ // These could not be calculated before, since they require knowledge
+ // of both the previous and the current block.
+ const size_t i_start = position - kMaxTreeCompLength + 1;
+ const size_t i_end = std::min(position, i_start + num_bytes);
+ for (size_t i = i_start; i < i_end; ++i) {
+ // We know that i + kMaxTreeCompLength <= position + num_bytes, i.e. the
+ // end of the current block and that we have at least
+ // kMaxTreeCompLength tail in the ringbuffer.
+ Store(ringbuffer, ringbuffer_mask, i);
+ }
+ }
+ }
+
+ static const size_t kMaxNumMatches = 64 + kMaxTreeSearchDepth;
+
+ private:
+ // Stores the hash of the next 4 bytes and in a single tree-traversal, the
+ // hash bucket's binary tree is searched for matches and is re-rooted at the
+ // current position.
+ //
+ // If less than kMaxTreeCompLength data is available, the hash bucket of the
+ // current position is searched for matches, but the state of the hash table
+ // is not changed, since we can not know the final sorting order of the
+ // current (incomplete) sequence.
+ //
+ // This function must be called with increasing cur_ix positions.
+ BackwardMatch* StoreAndFindMatches(const uint8_t* const __restrict data,
+ const size_t cur_ix,
+ const size_t ring_buffer_mask,
+ const size_t max_length,
+ size_t* const __restrict best_len,
+ BackwardMatch* __restrict matches) {
+ const size_t cur_ix_masked = cur_ix & ring_buffer_mask;
+ const size_t max_backward = window_mask_ - 15;
+ const size_t max_comp_len = std::min(max_length, kMaxTreeCompLength);
+ const bool reroot_tree = max_length >= kMaxTreeCompLength;
+ const uint32_t key = HashBytes(&data[cur_ix_masked]);
+ size_t prev_ix = buckets_[key];
+ // The forest index of the rightmost node of the left subtree of the new
+ // root, updated as we traverse and reroot the tree of the hash bucket.
+ size_t node_left = LeftChildIndex(cur_ix);
+ // The forest index of the leftmost node of the right subtree of the new
+ // root, updated as we traverse and reroot the tree of the hash bucket.
+ size_t node_right = RightChildIndex(cur_ix);
+ // The match length of the rightmost node of the left subtree of the new
+ // root, updated as we traverse and reroot the tree of the hash bucket.
+ size_t best_len_left = 0;
+ // The match length of the leftmost node of the right subtree of the new
+ // root, updated as we traverse and reroot the tree of the hash bucket.
+ size_t best_len_right = 0;
+ if (reroot_tree) {
+ buckets_[key] = static_cast<uint32_t>(cur_ix);
+ }
+ for (size_t depth_remaining = kMaxTreeSearchDepth; ; --depth_remaining) {
+ const size_t backward = cur_ix - prev_ix;
+ const size_t prev_ix_masked = prev_ix & ring_buffer_mask;
+ if (backward == 0 || backward > max_backward || depth_remaining == 0) {
+ if (reroot_tree) {
+ forest_[node_left] = invalid_pos_;
+ forest_[node_right] = invalid_pos_;
+ }
+ break;
+ }
+ const size_t cur_len = std::min(best_len_left, best_len_right);
+ const size_t len = cur_len +
+ FindMatchLengthWithLimit(&data[cur_ix_masked + cur_len],
+ &data[prev_ix_masked + cur_len],
+ max_length - cur_len);
+ if (len > *best_len) {
+ *best_len = len;
+ if (matches) {
+ *matches++ = BackwardMatch(backward, len);
+ }
+ if (len >= max_comp_len) {
+ if (reroot_tree) {
+ forest_[node_left] = forest_[LeftChildIndex(prev_ix)];
+ forest_[node_right] = forest_[RightChildIndex(prev_ix)];
+ }
+ break;
+ }
+ }
+ if (data[cur_ix_masked + len] > data[prev_ix_masked + len]) {
+ best_len_left = len;
+ if (reroot_tree) {
+ forest_[node_left] = static_cast<uint32_t>(prev_ix);
+ }
+ node_left = RightChildIndex(prev_ix);
+ prev_ix = forest_[node_left];
+ } else {
+ best_len_right = len;
+ if (reroot_tree) {
+ forest_[node_right] = static_cast<uint32_t>(prev_ix);
+ }
+ node_right = LeftChildIndex(prev_ix);
+ prev_ix = forest_[node_right];
+ }
+ }
+ return matches;
+ }
+
+ inline size_t LeftChildIndex(const size_t pos) {
+ return 2 * (pos & window_mask_);
+ }
+
+ inline size_t RightChildIndex(const size_t pos) {
+ return 2 * (pos & window_mask_) + 1;
+ }
+
+ static uint32_t HashBytes(const uint8_t *data) {
+ uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kHashMul32;
+ // The higher bits contain more mixture from the multiplication,
+ // so we take our results from there.
+ return h >> (32 - kBucketBits);
+ }
+
+ static const int kBucketBits = 17;
+ static const size_t kBucketSize = 1 << kBucketBits;
+
+ // The window size minus 1
+ size_t window_mask_;
+
+ // Hash table that maps the 4-byte hashes of the sequence to the last
+ // position where this hash was found, which is the root of the binary
+ // tree of sequences that share this hash bucket.
+ uint32_t buckets_[kBucketSize];
+
+ // The union of the binary trees of each hash bucket. The root of the tree
+ // corresponding to a hash is a sequence starting at buckets_[hash] and
+ // the left and right children of a sequence starting at pos are
+ // forest_[2 * pos] and forest_[2 * pos + 1].
+ uint32_t* forest_;
+
+ // A position used to mark a non-existent sequence, i.e. a tree is empty if
+ // its root is at invalid_pos_ and a node is a leaf if both its children
+ // are at invalid_pos_.
+ uint32_t invalid_pos_;
+
+ bool need_init_;
+};
+
+struct Hashers {
+ // For kBucketSweep == 1, enabling the dictionary lookup makes compression
+ // a little faster (0.5% - 1%) and it compresses 0.15% better on small text
+ // and html inputs.
+ typedef HashLongestMatchQuickly<16, 1, true> H2;
+ typedef HashLongestMatchQuickly<16, 2, false> H3;
+ typedef HashLongestMatchQuickly<17, 4, true> H4;
+ typedef HashLongestMatch<14, 4, 4> H5;
+ typedef HashLongestMatch<14, 5, 4> H6;
+ typedef HashLongestMatch<15, 6, 10> H7;
+ typedef HashLongestMatch<15, 7, 10> H8;
+ typedef HashLongestMatch<15, 8, 16> H9;
+ typedef HashToBinaryTree H10;
+
+ Hashers(void) : hash_h2(0), hash_h3(0), hash_h4(0), hash_h5(0),
+ hash_h6(0), hash_h7(0), hash_h8(0), hash_h9(0), hash_h10(0) {}
+
+ ~Hashers(void) {
+ delete hash_h2;
+ delete hash_h3;
+ delete hash_h4;
+ delete hash_h5;
+ delete hash_h6;
+ delete hash_h7;
+ delete hash_h8;
+ delete hash_h9;
+ delete hash_h10;
+ }
+
+ void Init(int type) {
+ switch (type) {
+ case 2: hash_h2 = new H2; break;
+ case 3: hash_h3 = new H3; break;
+ case 4: hash_h4 = new H4; break;
+ case 5: hash_h5 = new H5; break;
+ case 6: hash_h6 = new H6; break;
+ case 7: hash_h7 = new H7; break;
+ case 8: hash_h8 = new H8; break;
+ case 9: hash_h9 = new H9; break;
+ case 10: hash_h10 = new H10; break;
+ default: break;
+ }
+ }
+
+ template<typename Hasher>
+ void WarmupHash(const size_t size, const uint8_t* dict, Hasher* hasher) {
+ hasher->Init();
+ for (size_t i = 0; i + Hasher::kHashTypeLength - 1 < size; i++) {
+ hasher->Store(&dict[i], static_cast<uint32_t>(i));
+ }
+ }
+
+ // Custom LZ77 window.
+ void PrependCustomDictionary(
+ int type, int lgwin, const size_t size, const uint8_t* dict) {
+ switch (type) {
+ case 2: WarmupHash(size, dict, hash_h2); break;
+ case 3: WarmupHash(size, dict, hash_h3); break;
+ case 4: WarmupHash(size, dict, hash_h4); break;
+ case 5: WarmupHash(size, dict, hash_h5); break;
+ case 6: WarmupHash(size, dict, hash_h6); break;
+ case 7: WarmupHash(size, dict, hash_h7); break;
+ case 8: WarmupHash(size, dict, hash_h8); break;
+ case 9: WarmupHash(size, dict, hash_h9); break;
+ case 10:
+ hash_h10->Init(lgwin, 0, size, false);
+ for (size_t i = 0; i + kMaxTreeCompLength - 1 < size; ++i) {
+ hash_h10->Store(dict, std::numeric_limits<size_t>::max(), i);
+ }
+ break;
+ default: break;
+ }
+ }
+
+
+ H2* hash_h2;
+ H3* hash_h3;
+ H4* hash_h4;
+ H5* hash_h5;
+ H6* hash_h6;
+ H7* hash_h7;
+ H8* hash_h8;
+ H9* hash_h9;
+ H10* hash_h10;
+};
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_HASH_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/histogram.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/histogram.cc
new file mode 100644
index 00000000000..9d733d80554
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/histogram.cc
@@ -0,0 +1,67 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Build per-context histograms of literals, commands and distance codes.
+
+#include "./histogram.h"
+
+#include <cmath>
+
+#include "./block_splitter.h"
+#include "./command.h"
+#include "./context.h"
+#include "./prefix.h"
+
+namespace brotli {
+
+void BuildHistograms(
+ const Command* cmds,
+ const size_t num_commands,
+ const BlockSplit& literal_split,
+ const BlockSplit& insert_and_copy_split,
+ const BlockSplit& dist_split,
+ const uint8_t* ringbuffer,
+ size_t start_pos,
+ size_t mask,
+ uint8_t prev_byte,
+ uint8_t prev_byte2,
+ const std::vector<ContextType>& context_modes,
+ std::vector<HistogramLiteral>* literal_histograms,
+ std::vector<HistogramCommand>* insert_and_copy_histograms,
+ std::vector<HistogramDistance>* copy_dist_histograms) {
+ size_t pos = start_pos;
+ BlockSplitIterator literal_it(literal_split);
+ BlockSplitIterator insert_and_copy_it(insert_and_copy_split);
+ BlockSplitIterator dist_it(dist_split);
+ for (size_t i = 0; i < num_commands; ++i) {
+ const Command &cmd = cmds[i];
+ insert_and_copy_it.Next();
+ (*insert_and_copy_histograms)[insert_and_copy_it.type_].Add(
+ cmd.cmd_prefix_);
+ for (size_t j = cmd.insert_len_; j != 0; --j) {
+ literal_it.Next();
+ size_t context = (literal_it.type_ << kLiteralContextBits) +
+ Context(prev_byte, prev_byte2, context_modes[literal_it.type_]);
+ (*literal_histograms)[context].Add(ringbuffer[pos & mask]);
+ prev_byte2 = prev_byte;
+ prev_byte = ringbuffer[pos & mask];
+ ++pos;
+ }
+ pos += cmd.copy_len();
+ if (cmd.copy_len()) {
+ prev_byte2 = ringbuffer[(pos - 2) & mask];
+ prev_byte = ringbuffer[(pos - 1) & mask];
+ if (cmd.cmd_prefix_ >= 128) {
+ dist_it.Next();
+ size_t context = (dist_it.type_ << kDistanceContextBits) +
+ cmd.DistanceContext();
+ (*copy_dist_histograms)[context].Add(cmd.dist_prefix_);
+ }
+ }
+ }
+}
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/histogram.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/histogram.h
new file mode 100644
index 00000000000..a1153c859a4
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/histogram.h
@@ -0,0 +1,94 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Models the histograms of literals, commands and distance codes.
+
+#ifndef BROTLI_ENC_HISTOGRAM_H_
+#define BROTLI_ENC_HISTOGRAM_H_
+
+#include <cstring>
+#include <limits>
+#include <vector>
+#include "./context.h"
+#include "./command.h"
+#include "./fast_log.h"
+#include "./prefix.h"
+#include "./types.h"
+
+namespace brotli {
+
+struct BlockSplit;
+
+// A simple container for histograms of data in blocks.
+template<int kDataSize>
+struct Histogram {
+ Histogram(void) {
+ Clear();
+ }
+ void Clear(void) {
+ memset(data_, 0, sizeof(data_));
+ total_count_ = 0;
+ bit_cost_ = std::numeric_limits<double>::infinity();
+ }
+ void Add(size_t val) {
+ ++data_[val];
+ ++total_count_;
+ }
+ void Remove(size_t val) {
+ --data_[val];
+ --total_count_;
+ }
+ template<typename DataType>
+ void Add(const DataType *p, size_t n) {
+ total_count_ += n;
+ n += 1;
+ while(--n) ++data_[*p++];
+ }
+ void AddHistogram(const Histogram& v) {
+ total_count_ += v.total_count_;
+ for (size_t i = 0; i < kDataSize; ++i) {
+ data_[i] += v.data_[i];
+ }
+ }
+
+ uint32_t data_[kDataSize];
+ size_t total_count_;
+ double bit_cost_;
+};
+
+// Literal histogram.
+typedef Histogram<256> HistogramLiteral;
+// Prefix histograms.
+typedef Histogram<kNumCommandPrefixes> HistogramCommand;
+typedef Histogram<kNumDistancePrefixes> HistogramDistance;
+typedef Histogram<kNumBlockLenPrefixes> HistogramBlockLength;
+// Context map histogram, 256 Huffman tree indexes + 16 run length codes.
+typedef Histogram<272> HistogramContextMap;
+// Block type histogram, 256 block types + 2 special symbols.
+typedef Histogram<258> HistogramBlockType;
+
+static const size_t kLiteralContextBits = 6;
+static const size_t kDistanceContextBits = 2;
+
+void BuildHistograms(
+ const Command* cmds,
+ const size_t num_commands,
+ const BlockSplit& literal_split,
+ const BlockSplit& insert_and_copy_split,
+ const BlockSplit& dist_split,
+ const uint8_t* ringbuffer,
+ size_t pos,
+ size_t mask,
+ uint8_t prev_byte,
+ uint8_t prev_byte2,
+ const std::vector<ContextType>& context_modes,
+ std::vector<HistogramLiteral>* literal_histograms,
+ std::vector<HistogramCommand>* insert_and_copy_histograms,
+ std::vector<HistogramDistance>* copy_dist_histograms);
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_HISTOGRAM_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/literal_cost.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/literal_cost.cc
new file mode 100644
index 00000000000..e6be86fc64e
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/literal_cost.cc
@@ -0,0 +1,165 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Literal cost model to allow backward reference replacement to be efficient.
+
+#include "./literal_cost.h"
+
+#include <math.h>
+#include <algorithm>
+
+#include "./fast_log.h"
+#include "./types.h"
+#include "./utf8_util.h"
+
+namespace brotli {
+
+static size_t UTF8Position(size_t last, size_t c, size_t clamp) {
+ if (c < 128) {
+ return 0; // Next one is the 'Byte 1' again.
+ } else if (c >= 192) { // Next one is the 'Byte 2' of utf-8 encoding.
+ return std::min<size_t>(1, clamp);
+ } else {
+ // Let's decide over the last byte if this ends the sequence.
+ if (last < 0xe0) {
+ return 0; // Completed two or three byte coding.
+ } else { // Next one is the 'Byte 3' of utf-8 encoding.
+ return std::min<size_t>(2, clamp);
+ }
+ }
+}
+
+static size_t DecideMultiByteStatsLevel(size_t pos, size_t len, size_t mask,
+ const uint8_t *data) {
+ size_t counts[3] = { 0 };
+ size_t max_utf8 = 1; // should be 2, but 1 compresses better.
+ size_t last_c = 0;
+ size_t utf8_pos = 0;
+ for (size_t i = 0; i < len; ++i) {
+ size_t c = data[(pos + i) & mask];
+ utf8_pos = UTF8Position(last_c, c, 2);
+ ++counts[utf8_pos];
+ last_c = c;
+ }
+ if (counts[2] < 500) {
+ max_utf8 = 1;
+ }
+ if (counts[1] + counts[2] < 25) {
+ max_utf8 = 0;
+ }
+ return max_utf8;
+}
+
+static void EstimateBitCostsForLiteralsUTF8(size_t pos, size_t len, size_t mask,
+ const uint8_t *data, float *cost) {
+
+ // max_utf8 is 0 (normal ascii single byte modeling),
+ // 1 (for 2-byte utf-8 modeling), or 2 (for 3-byte utf-8 modeling).
+ const size_t max_utf8 = DecideMultiByteStatsLevel(pos, len, mask, data);
+ size_t histogram[3][256] = { { 0 } };
+ size_t window_half = 495;
+ size_t in_window = std::min(window_half, len);
+ size_t in_window_utf8[3] = { 0 };
+
+ // Bootstrap histograms.
+ size_t last_c = 0;
+ size_t utf8_pos = 0;
+ for (size_t i = 0; i < in_window; ++i) {
+ size_t c = data[(pos + i) & mask];
+ ++histogram[utf8_pos][c];
+ ++in_window_utf8[utf8_pos];
+ utf8_pos = UTF8Position(last_c, c, max_utf8);
+ last_c = c;
+ }
+
+ // Compute bit costs with sliding window.
+ for (size_t i = 0; i < len; ++i) {
+ if (i >= window_half) {
+ // Remove a byte in the past.
+ size_t c = i < window_half + 1 ?
+ 0 : data[(pos + i - window_half - 1) & mask];
+ size_t last_c = i < window_half + 2 ?
+ 0 : data[(pos + i - window_half - 2) & mask];
+ size_t utf8_pos2 = UTF8Position(last_c, c, max_utf8);
+ --histogram[utf8_pos2][data[(pos + i - window_half) & mask]];
+ --in_window_utf8[utf8_pos2];
+ }
+ if (i + window_half < len) {
+ // Add a byte in the future.
+ size_t c = data[(pos + i + window_half - 1) & mask];
+ size_t last_c = data[(pos + i + window_half - 2) & mask];
+ size_t utf8_pos2 = UTF8Position(last_c, c, max_utf8);
+ ++histogram[utf8_pos2][data[(pos + i + window_half) & mask]];
+ ++in_window_utf8[utf8_pos2];
+ }
+ size_t c = i < 1 ? 0 : data[(pos + i - 1) & mask];
+ size_t last_c = i < 2 ? 0 : data[(pos + i - 2) & mask];
+ size_t utf8_pos = UTF8Position(last_c, c, max_utf8);
+ size_t masked_pos = (pos + i) & mask;
+ size_t histo = histogram[utf8_pos][data[masked_pos]];
+ if (histo == 0) {
+ histo = 1;
+ }
+ double lit_cost = FastLog2(in_window_utf8[utf8_pos]) - FastLog2(histo);
+ lit_cost += 0.02905;
+ if (lit_cost < 1.0) {
+ lit_cost *= 0.5;
+ lit_cost += 0.5;
+ }
+ // Make the first bytes more expensive -- seems to help, not sure why.
+ // Perhaps because the entropy source is changing its properties
+ // rapidly in the beginning of the file, perhaps because the beginning
+ // of the data is a statistical "anomaly".
+ if (i < 2000) {
+ lit_cost += 0.7 - (static_cast<double>(2000 - i) / 2000.0 * 0.35);
+ }
+ cost[i] = static_cast<float>(lit_cost);
+ }
+}
+
+void EstimateBitCostsForLiterals(size_t pos, size_t len, size_t mask,
+ const uint8_t *data, float *cost) {
+ if (IsMostlyUTF8(data, pos, mask, len, kMinUTF8Ratio)) {
+ EstimateBitCostsForLiteralsUTF8(pos, len, mask, data, cost);
+ return;
+ }
+ size_t histogram[256] = { 0 };
+ size_t window_half = 2000;
+ size_t in_window = std::min(window_half, len);
+
+ // Bootstrap histogram.
+ for (size_t i = 0; i < in_window; ++i) {
+ ++histogram[data[(pos + i) & mask]];
+ }
+
+ // Compute bit costs with sliding window.
+ for (size_t i = 0; i < len; ++i) {
+ if (i >= window_half) {
+ // Remove a byte in the past.
+ --histogram[data[(pos + i - window_half) & mask]];
+ --in_window;
+ }
+ if (i + window_half < len) {
+ // Add a byte in the future.
+ ++histogram[data[(pos + i + window_half) & mask]];
+ ++in_window;
+ }
+ size_t histo = histogram[data[(pos + i) & mask]];
+ if (histo == 0) {
+ histo = 1;
+ }
+ double lit_cost = FastLog2(in_window) - FastLog2(histo);
+ lit_cost += 0.029;
+ if (lit_cost < 1.0) {
+ lit_cost *= 0.5;
+ lit_cost += 0.5;
+ }
+ cost[i] = static_cast<float>(lit_cost);
+ }
+}
+
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/literal_cost.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/literal_cost.h
new file mode 100644
index 00000000000..291aa8a1d70
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/literal_cost.h
@@ -0,0 +1,24 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Literal cost model to allow backward reference replacement to be efficient.
+
+#ifndef BROTLI_ENC_LITERAL_COST_H_
+#define BROTLI_ENC_LITERAL_COST_H_
+
+#include "./types.h"
+
+namespace brotli {
+
+// Estimates how many bits the literals in the interval [pos, pos + len) in the
+// ringbuffer (data, mask) will take entropy coded and writes these estimates
+// to the cost[0..len) array.
+void EstimateBitCostsForLiterals(size_t pos, size_t len, size_t mask,
+ const uint8_t *data, float *cost);
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_LITERAL_COST_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/metablock.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/metablock.cc
new file mode 100644
index 00000000000..fc962c5c8e3
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/metablock.cc
@@ -0,0 +1,539 @@
+/* Copyright 2015 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Algorithms for distributing the literals and commands of a metablock between
+// block types and contexts.
+
+#include "./metablock.h"
+
+#include "./block_splitter.h"
+#include "./context.h"
+#include "./cluster.h"
+#include "./histogram.h"
+
+namespace brotli {
+
+void BuildMetaBlock(const uint8_t* ringbuffer,
+ const size_t pos,
+ const size_t mask,
+ uint8_t prev_byte,
+ uint8_t prev_byte2,
+ const Command* cmds,
+ size_t num_commands,
+ ContextType literal_context_mode,
+ MetaBlockSplit* mb) {
+ SplitBlock(cmds, num_commands,
+ ringbuffer, pos, mask,
+ &mb->literal_split,
+ &mb->command_split,
+ &mb->distance_split);
+
+ std::vector<ContextType> literal_context_modes(mb->literal_split.num_types,
+ literal_context_mode);
+
+ size_t num_literal_contexts =
+ mb->literal_split.num_types << kLiteralContextBits;
+ size_t num_distance_contexts =
+ mb->distance_split.num_types << kDistanceContextBits;
+ std::vector<HistogramLiteral> literal_histograms(num_literal_contexts);
+ mb->command_histograms.resize(mb->command_split.num_types);
+ std::vector<HistogramDistance> distance_histograms(num_distance_contexts);
+ BuildHistograms(cmds, num_commands,
+ mb->literal_split,
+ mb->command_split,
+ mb->distance_split,
+ ringbuffer,
+ pos,
+ mask,
+ prev_byte,
+ prev_byte2,
+ literal_context_modes,
+ &literal_histograms,
+ &mb->command_histograms,
+ &distance_histograms);
+
+ // Histogram ids need to fit in one byte.
+ static const size_t kMaxNumberOfHistograms = 256;
+
+ ClusterHistograms(literal_histograms,
+ 1u << kLiteralContextBits,
+ mb->literal_split.num_types,
+ kMaxNumberOfHistograms,
+ &mb->literal_histograms,
+ &mb->literal_context_map);
+
+ ClusterHistograms(distance_histograms,
+ 1u << kDistanceContextBits,
+ mb->distance_split.num_types,
+ kMaxNumberOfHistograms,
+ &mb->distance_histograms,
+ &mb->distance_context_map);
+}
+
+// Greedy block splitter for one block category (literal, command or distance).
+template<typename HistogramType>
+class BlockSplitter {
+ public:
+ BlockSplitter(size_t alphabet_size,
+ size_t min_block_size,
+ double split_threshold,
+ size_t num_symbols,
+ BlockSplit* split,
+ std::vector<HistogramType>* histograms)
+ : alphabet_size_(alphabet_size),
+ min_block_size_(min_block_size),
+ split_threshold_(split_threshold),
+ num_blocks_(0),
+ split_(split),
+ histograms_(histograms),
+ target_block_size_(min_block_size),
+ block_size_(0),
+ curr_histogram_ix_(0),
+ merge_last_count_(0) {
+ size_t max_num_blocks = num_symbols / min_block_size + 1;
+ // We have to allocate one more histogram than the maximum number of block
+ // types for the current histogram when the meta-block is too big.
+ size_t max_num_types = std::min<size_t>(max_num_blocks, kMaxBlockTypes + 1);
+ split_->lengths.resize(max_num_blocks);
+ split_->types.resize(max_num_blocks);
+ histograms_->resize(max_num_types);
+ last_histogram_ix_[0] = last_histogram_ix_[1] = 0;
+ }
+
+ // Adds the next symbol to the current histogram. When the current histogram
+ // reaches the target size, decides on merging the block.
+ void AddSymbol(size_t symbol) {
+ (*histograms_)[curr_histogram_ix_].Add(symbol);
+ ++block_size_;
+ if (block_size_ == target_block_size_) {
+ FinishBlock(/* is_final = */ false);
+ }
+ }
+
+ // Does either of three things:
+ // (1) emits the current block with a new block type;
+ // (2) emits the current block with the type of the second last block;
+ // (3) merges the current block with the last block.
+ void FinishBlock(bool is_final) {
+ if (block_size_ < min_block_size_) {
+ block_size_ = min_block_size_;
+ }
+ if (num_blocks_ == 0) {
+ // Create first block.
+ split_->lengths[0] = static_cast<uint32_t>(block_size_);
+ split_->types[0] = 0;
+ last_entropy_[0] =
+ BitsEntropy(&(*histograms_)[0].data_[0], alphabet_size_);
+ last_entropy_[1] = last_entropy_[0];
+ ++num_blocks_;
+ ++split_->num_types;
+ ++curr_histogram_ix_;
+ block_size_ = 0;
+ } else if (block_size_ > 0) {
+ double entropy = BitsEntropy(&(*histograms_)[curr_histogram_ix_].data_[0],
+ alphabet_size_);
+ HistogramType combined_histo[2];
+ double combined_entropy[2];
+ double diff[2];
+ for (size_t j = 0; j < 2; ++j) {
+ size_t last_histogram_ix = last_histogram_ix_[j];
+ combined_histo[j] = (*histograms_)[curr_histogram_ix_];
+ combined_histo[j].AddHistogram((*histograms_)[last_histogram_ix]);
+ combined_entropy[j] = BitsEntropy(
+ &combined_histo[j].data_[0], alphabet_size_);
+ diff[j] = combined_entropy[j] - entropy - last_entropy_[j];
+ }
+
+ if (split_->num_types < kMaxBlockTypes &&
+ diff[0] > split_threshold_ &&
+ diff[1] > split_threshold_) {
+ // Create new block.
+ split_->lengths[num_blocks_] = static_cast<uint32_t>(block_size_);
+ split_->types[num_blocks_] = static_cast<uint8_t>(split_->num_types);
+ last_histogram_ix_[1] = last_histogram_ix_[0];
+ last_histogram_ix_[0] = static_cast<uint8_t>(split_->num_types);
+ last_entropy_[1] = last_entropy_[0];
+ last_entropy_[0] = entropy;
+ ++num_blocks_;
+ ++split_->num_types;
+ ++curr_histogram_ix_;
+ block_size_ = 0;
+ merge_last_count_ = 0;
+ target_block_size_ = min_block_size_;
+ } else if (diff[1] < diff[0] - 20.0) {
+ // Combine this block with second last block.
+ split_->lengths[num_blocks_] = static_cast<uint32_t>(block_size_);
+ split_->types[num_blocks_] = split_->types[num_blocks_ - 2];
+ std::swap(last_histogram_ix_[0], last_histogram_ix_[1]);
+ (*histograms_)[last_histogram_ix_[0]] = combined_histo[1];
+ last_entropy_[1] = last_entropy_[0];
+ last_entropy_[0] = combined_entropy[1];
+ ++num_blocks_;
+ block_size_ = 0;
+ (*histograms_)[curr_histogram_ix_].Clear();
+ merge_last_count_ = 0;
+ target_block_size_ = min_block_size_;
+ } else {
+ // Combine this block with last block.
+ split_->lengths[num_blocks_ - 1] += static_cast<uint32_t>(block_size_);
+ (*histograms_)[last_histogram_ix_[0]] = combined_histo[0];
+ last_entropy_[0] = combined_entropy[0];
+ if (split_->num_types == 1) {
+ last_entropy_[1] = last_entropy_[0];
+ }
+ block_size_ = 0;
+ (*histograms_)[curr_histogram_ix_].Clear();
+ if (++merge_last_count_ > 1) {
+ target_block_size_ += min_block_size_;
+ }
+ }
+ }
+ if (is_final) {
+ (*histograms_).resize(split_->num_types);
+ split_->types.resize(num_blocks_);
+ split_->lengths.resize(num_blocks_);
+ }
+ }
+
+ private:
+ static const uint16_t kMaxBlockTypes = 256;
+
+ // Alphabet size of particular block category.
+ const size_t alphabet_size_;
+ // We collect at least this many symbols for each block.
+ const size_t min_block_size_;
+ // We merge histograms A and B if
+ // entropy(A+B) < entropy(A) + entropy(B) + split_threshold_,
+ // where A is the current histogram and B is the histogram of the last or the
+ // second last block type.
+ const double split_threshold_;
+
+ size_t num_blocks_;
+ BlockSplit* split_; // not owned
+ std::vector<HistogramType>* histograms_; // not owned
+
+ // The number of symbols that we want to collect before deciding on whether
+ // or not to merge the block with a previous one or emit a new block.
+ size_t target_block_size_;
+ // The number of symbols in the current histogram.
+ size_t block_size_;
+ // Offset of the current histogram.
+ size_t curr_histogram_ix_;
+ // Offset of the histograms of the previous two block types.
+ size_t last_histogram_ix_[2];
+ // Entropy of the previous two block types.
+ double last_entropy_[2];
+ // The number of times we merged the current block with the last one.
+ size_t merge_last_count_;
+};
+
+void BuildMetaBlockGreedy(const uint8_t* ringbuffer,
+ size_t pos,
+ size_t mask,
+ const Command *commands,
+ size_t n_commands,
+ MetaBlockSplit* mb) {
+ size_t num_literals = 0;
+ for (size_t i = 0; i < n_commands; ++i) {
+ num_literals += commands[i].insert_len_;
+ }
+
+ BlockSplitter<HistogramLiteral> lit_blocks(
+ 256, 512, 400.0, num_literals,
+ &mb->literal_split, &mb->literal_histograms);
+ BlockSplitter<HistogramCommand> cmd_blocks(
+ kNumCommandPrefixes, 1024, 500.0, n_commands,
+ &mb->command_split, &mb->command_histograms);
+ BlockSplitter<HistogramDistance> dist_blocks(
+ 64, 512, 100.0, n_commands,
+ &mb->distance_split, &mb->distance_histograms);
+
+ for (size_t i = 0; i < n_commands; ++i) {
+ const Command cmd = commands[i];
+ cmd_blocks.AddSymbol(cmd.cmd_prefix_);
+ for (size_t j = cmd.insert_len_; j != 0; --j) {
+ lit_blocks.AddSymbol(ringbuffer[pos & mask]);
+ ++pos;
+ }
+ pos += cmd.copy_len();
+ if (cmd.copy_len() && cmd.cmd_prefix_ >= 128) {
+ dist_blocks.AddSymbol(cmd.dist_prefix_);
+ }
+ }
+
+ lit_blocks.FinishBlock(/* is_final = */ true);
+ cmd_blocks.FinishBlock(/* is_final = */ true);
+ dist_blocks.FinishBlock(/* is_final = */ true);
+}
+
+// Greedy block splitter for one block category (literal, command or distance).
+// Gathers histograms for all context buckets.
+template<typename HistogramType>
+class ContextBlockSplitter {
+ public:
+ ContextBlockSplitter(size_t alphabet_size,
+ size_t num_contexts,
+ size_t min_block_size,
+ double split_threshold,
+ size_t num_symbols,
+ BlockSplit* split,
+ std::vector<HistogramType>* histograms)
+ : alphabet_size_(alphabet_size),
+ num_contexts_(num_contexts),
+ max_block_types_(kMaxBlockTypes / num_contexts),
+ min_block_size_(min_block_size),
+ split_threshold_(split_threshold),
+ num_blocks_(0),
+ split_(split),
+ histograms_(histograms),
+ target_block_size_(min_block_size),
+ block_size_(0),
+ curr_histogram_ix_(0),
+ last_entropy_(2 * num_contexts),
+ merge_last_count_(0) {
+ size_t max_num_blocks = num_symbols / min_block_size + 1;
+ // We have to allocate one more histogram than the maximum number of block
+ // types for the current histogram when the meta-block is too big.
+ size_t max_num_types = std::min(max_num_blocks, max_block_types_ + 1);
+ split_->lengths.resize(max_num_blocks);
+ split_->types.resize(max_num_blocks);
+ histograms_->resize(max_num_types * num_contexts);
+ last_histogram_ix_[0] = last_histogram_ix_[1] = 0;
+ }
+
+ // Adds the next symbol to the current block type and context. When the
+ // current block reaches the target size, decides on merging the block.
+ void AddSymbol(size_t symbol, size_t context) {
+ (*histograms_)[curr_histogram_ix_ + context].Add(symbol);
+ ++block_size_;
+ if (block_size_ == target_block_size_) {
+ FinishBlock(/* is_final = */ false);
+ }
+ }
+
+ // Does either of three things:
+ // (1) emits the current block with a new block type;
+ // (2) emits the current block with the type of the second last block;
+ // (3) merges the current block with the last block.
+ void FinishBlock(bool is_final) {
+ if (block_size_ < min_block_size_) {
+ block_size_ = min_block_size_;
+ }
+ if (num_blocks_ == 0) {
+ // Create first block.
+ split_->lengths[0] = static_cast<uint32_t>(block_size_);
+ split_->types[0] = 0;
+ for (size_t i = 0; i < num_contexts_; ++i) {
+ last_entropy_[i] =
+ BitsEntropy(&(*histograms_)[i].data_[0], alphabet_size_);
+ last_entropy_[num_contexts_ + i] = last_entropy_[i];
+ }
+ ++num_blocks_;
+ ++split_->num_types;
+ curr_histogram_ix_ += num_contexts_;
+ block_size_ = 0;
+ } else if (block_size_ > 0) {
+ // Try merging the set of histograms for the current block type with the
+ // respective set of histograms for the last and second last block types.
+ // Decide over the split based on the total reduction of entropy across
+ // all contexts.
+ std::vector<double> entropy(num_contexts_);
+ std::vector<HistogramType> combined_histo(2 * num_contexts_);
+ std::vector<double> combined_entropy(2 * num_contexts_);
+ double diff[2] = { 0.0 };
+ for (size_t i = 0; i < num_contexts_; ++i) {
+ size_t curr_histo_ix = curr_histogram_ix_ + i;
+ entropy[i] = BitsEntropy(&(*histograms_)[curr_histo_ix].data_[0],
+ alphabet_size_);
+ for (size_t j = 0; j < 2; ++j) {
+ size_t jx = j * num_contexts_ + i;
+ size_t last_histogram_ix = last_histogram_ix_[j] + i;
+ combined_histo[jx] = (*histograms_)[curr_histo_ix];
+ combined_histo[jx].AddHistogram((*histograms_)[last_histogram_ix]);
+ combined_entropy[jx] = BitsEntropy(
+ &combined_histo[jx].data_[0], alphabet_size_);
+ diff[j] += combined_entropy[jx] - entropy[i] - last_entropy_[jx];
+ }
+ }
+
+ if (split_->num_types < max_block_types_ &&
+ diff[0] > split_threshold_ &&
+ diff[1] > split_threshold_) {
+ // Create new block.
+ split_->lengths[num_blocks_] = static_cast<uint32_t>(block_size_);
+ split_->types[num_blocks_] = static_cast<uint8_t>(split_->num_types);
+ last_histogram_ix_[1] = last_histogram_ix_[0];
+ last_histogram_ix_[0] = split_->num_types * num_contexts_;
+ for (size_t i = 0; i < num_contexts_; ++i) {
+ last_entropy_[num_contexts_ + i] = last_entropy_[i];
+ last_entropy_[i] = entropy[i];
+ }
+ ++num_blocks_;
+ ++split_->num_types;
+ curr_histogram_ix_ += num_contexts_;
+ block_size_ = 0;
+ merge_last_count_ = 0;
+ target_block_size_ = min_block_size_;
+ } else if (diff[1] < diff[0] - 20.0) {
+ // Combine this block with second last block.
+ split_->lengths[num_blocks_] = static_cast<uint32_t>(block_size_);
+ split_->types[num_blocks_] = split_->types[num_blocks_ - 2];
+ std::swap(last_histogram_ix_[0], last_histogram_ix_[1]);
+ for (size_t i = 0; i < num_contexts_; ++i) {
+ (*histograms_)[last_histogram_ix_[0] + i] =
+ combined_histo[num_contexts_ + i];
+ last_entropy_[num_contexts_ + i] = last_entropy_[i];
+ last_entropy_[i] = combined_entropy[num_contexts_ + i];
+ (*histograms_)[curr_histogram_ix_ + i].Clear();
+ }
+ ++num_blocks_;
+ block_size_ = 0;
+ merge_last_count_ = 0;
+ target_block_size_ = min_block_size_;
+ } else {
+ // Combine this block with last block.
+ split_->lengths[num_blocks_ - 1] += static_cast<uint32_t>(block_size_);
+ for (size_t i = 0; i < num_contexts_; ++i) {
+ (*histograms_)[last_histogram_ix_[0] + i] = combined_histo[i];
+ last_entropy_[i] = combined_entropy[i];
+ if (split_->num_types == 1) {
+ last_entropy_[num_contexts_ + i] = last_entropy_[i];
+ }
+ (*histograms_)[curr_histogram_ix_ + i].Clear();
+ }
+ block_size_ = 0;
+ if (++merge_last_count_ > 1) {
+ target_block_size_ += min_block_size_;
+ }
+ }
+ }
+ if (is_final) {
+ (*histograms_).resize(split_->num_types * num_contexts_);
+ split_->types.resize(num_blocks_);
+ split_->lengths.resize(num_blocks_);
+ }
+ }
+
+ private:
+ static const int kMaxBlockTypes = 256;
+
+ // Alphabet size of particular block category.
+ const size_t alphabet_size_;
+ const size_t num_contexts_;
+ const size_t max_block_types_;
+ // We collect at least this many symbols for each block.
+ const size_t min_block_size_;
+ // We merge histograms A and B if
+ // entropy(A+B) < entropy(A) + entropy(B) + split_threshold_,
+ // where A is the current histogram and B is the histogram of the last or the
+ // second last block type.
+ const double split_threshold_;
+
+ size_t num_blocks_;
+ BlockSplit* split_; // not owned
+ std::vector<HistogramType>* histograms_; // not owned
+
+ // The number of symbols that we want to collect before deciding on whether
+ // or not to merge the block with a previous one or emit a new block.
+ size_t target_block_size_;
+ // The number of symbols in the current histogram.
+ size_t block_size_;
+ // Offset of the current histogram.
+ size_t curr_histogram_ix_;
+ // Offset of the histograms of the previous two block types.
+ size_t last_histogram_ix_[2];
+ // Entropy of the previous two block types.
+ std::vector<double> last_entropy_;
+ // The number of times we merged the current block with the last one.
+ size_t merge_last_count_;
+};
+
+void BuildMetaBlockGreedyWithContexts(const uint8_t* ringbuffer,
+ size_t pos,
+ size_t mask,
+ uint8_t prev_byte,
+ uint8_t prev_byte2,
+ ContextType literal_context_mode,
+ size_t num_contexts,
+ const uint32_t* static_context_map,
+ const Command *commands,
+ size_t n_commands,
+ MetaBlockSplit* mb) {
+ size_t num_literals = 0;
+ for (size_t i = 0; i < n_commands; ++i) {
+ num_literals += commands[i].insert_len_;
+ }
+
+ ContextBlockSplitter<HistogramLiteral> lit_blocks(
+ 256, num_contexts, 512, 400.0, num_literals,
+ &mb->literal_split, &mb->literal_histograms);
+ BlockSplitter<HistogramCommand> cmd_blocks(
+ kNumCommandPrefixes, 1024, 500.0, n_commands,
+ &mb->command_split, &mb->command_histograms);
+ BlockSplitter<HistogramDistance> dist_blocks(
+ 64, 512, 100.0, n_commands,
+ &mb->distance_split, &mb->distance_histograms);
+
+ for (size_t i = 0; i < n_commands; ++i) {
+ const Command cmd = commands[i];
+ cmd_blocks.AddSymbol(cmd.cmd_prefix_);
+ for (size_t j = cmd.insert_len_; j != 0; --j) {
+ size_t context = Context(prev_byte, prev_byte2, literal_context_mode);
+ uint8_t literal = ringbuffer[pos & mask];
+ lit_blocks.AddSymbol(literal, static_context_map[context]);
+ prev_byte2 = prev_byte;
+ prev_byte = literal;
+ ++pos;
+ }
+ pos += cmd.copy_len();
+ if (cmd.copy_len()) {
+ prev_byte2 = ringbuffer[(pos - 2) & mask];
+ prev_byte = ringbuffer[(pos - 1) & mask];
+ if (cmd.cmd_prefix_ >= 128) {
+ dist_blocks.AddSymbol(cmd.dist_prefix_);
+ }
+ }
+ }
+
+ lit_blocks.FinishBlock(/* is_final = */ true);
+ cmd_blocks.FinishBlock(/* is_final = */ true);
+ dist_blocks.FinishBlock(/* is_final = */ true);
+
+ mb->literal_context_map.resize(
+ mb->literal_split.num_types << kLiteralContextBits);
+ for (size_t i = 0; i < mb->literal_split.num_types; ++i) {
+ for (size_t j = 0; j < (1u << kLiteralContextBits); ++j) {
+ mb->literal_context_map[(i << kLiteralContextBits) + j] =
+ static_cast<uint32_t>(i * num_contexts) + static_context_map[j];
+ }
+ }
+}
+
+void OptimizeHistograms(size_t num_direct_distance_codes,
+ size_t distance_postfix_bits,
+ MetaBlockSplit* mb) {
+ uint8_t* good_for_rle = new uint8_t[kNumCommandPrefixes];
+ for (size_t i = 0; i < mb->literal_histograms.size(); ++i) {
+ OptimizeHuffmanCountsForRle(256, &mb->literal_histograms[i].data_[0],
+ good_for_rle);
+ }
+ for (size_t i = 0; i < mb->command_histograms.size(); ++i) {
+ OptimizeHuffmanCountsForRle(kNumCommandPrefixes,
+ &mb->command_histograms[i].data_[0],
+ good_for_rle);
+ }
+ size_t num_distance_codes =
+ kNumDistanceShortCodes + num_direct_distance_codes +
+ (48u << distance_postfix_bits);
+ for (size_t i = 0; i < mb->distance_histograms.size(); ++i) {
+ OptimizeHuffmanCountsForRle(num_distance_codes,
+ &mb->distance_histograms[i].data_[0],
+ good_for_rle);
+ }
+ delete[] good_for_rle;
+}
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/metablock.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/metablock.h
new file mode 100644
index 00000000000..d1928850590
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/metablock.h
@@ -0,0 +1,80 @@
+/* Copyright 2015 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Algorithms for distributing the literals and commands of a metablock between
+// block types and contexts.
+
+#ifndef BROTLI_ENC_METABLOCK_H_
+#define BROTLI_ENC_METABLOCK_H_
+
+#include <vector>
+
+#include "./command.h"
+#include "./histogram.h"
+
+namespace brotli {
+
+struct BlockSplit {
+ BlockSplit(void) : num_types(0) {}
+
+ size_t num_types;
+ std::vector<uint8_t> types;
+ std::vector<uint32_t> lengths;
+};
+
+struct MetaBlockSplit {
+ BlockSplit literal_split;
+ BlockSplit command_split;
+ BlockSplit distance_split;
+ std::vector<uint32_t> literal_context_map;
+ std::vector<uint32_t> distance_context_map;
+ std::vector<HistogramLiteral> literal_histograms;
+ std::vector<HistogramCommand> command_histograms;
+ std::vector<HistogramDistance> distance_histograms;
+};
+
+// Uses the slow shortest-path block splitter and does context clustering.
+void BuildMetaBlock(const uint8_t* ringbuffer,
+ const size_t pos,
+ const size_t mask,
+ uint8_t prev_byte,
+ uint8_t prev_byte2,
+ const Command* cmds,
+ size_t num_commands,
+ ContextType literal_context_mode,
+ MetaBlockSplit* mb);
+
+// Uses a fast greedy block splitter that tries to merge current block with the
+// last or the second last block and does not do any context modeling.
+void BuildMetaBlockGreedy(const uint8_t* ringbuffer,
+ size_t pos,
+ size_t mask,
+ const Command *commands,
+ size_t n_commands,
+ MetaBlockSplit* mb);
+
+// Uses a fast greedy block splitter that tries to merge current block with the
+// last or the second last block and uses a static context clustering which
+// is the same for all block types.
+void BuildMetaBlockGreedyWithContexts(const uint8_t* ringbuffer,
+ size_t pos,
+ size_t mask,
+ uint8_t prev_byte,
+ uint8_t prev_byte2,
+ ContextType literal_context_mode,
+ size_t num_contexts,
+ const uint32_t* static_context_map,
+ const Command *commands,
+ size_t n_commands,
+ MetaBlockSplit* mb);
+
+void OptimizeHistograms(size_t num_direct_distance_codes,
+ size_t distance_postfix_bits,
+ MetaBlockSplit* mb);
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_METABLOCK_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/port.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/port.h
new file mode 100644
index 00000000000..e73df63a8fe
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/port.h
@@ -0,0 +1,142 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Macros for endianness, branch prediction and unaligned loads and stores.
+
+#ifndef BROTLI_ENC_PORT_H_
+#define BROTLI_ENC_PORT_H_
+
+#include <assert.h>
+#include <string.h>
+#include "./types.h"
+
+#if defined OS_LINUX || defined OS_CYGWIN
+#include <endian.h>
+#elif defined OS_FREEBSD
+#include <machine/endian.h>
+#elif defined OS_MACOSX
+#include <machine/endian.h>
+/* Let's try and follow the Linux convention */
+#define __BYTE_ORDER BYTE_ORDER
+#define __LITTLE_ENDIAN LITTLE_ENDIAN
+#endif
+
+// define the macro IS_LITTLE_ENDIAN
+// using the above endian definitions from endian.h if
+// endian.h was included
+#ifdef __BYTE_ORDER
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define IS_LITTLE_ENDIAN
+#endif
+
+#else
+
+#if defined(__LITTLE_ENDIAN__)
+#define IS_LITTLE_ENDIAN
+#endif
+#endif // __BYTE_ORDER
+
+#if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
+#define IS_LITTLE_ENDIAN
+#endif
+
+// Enable little-endian optimization for x64 architecture on Windows.
+#if (defined(_WIN32) || defined(_WIN64)) && defined(_M_X64)
+#define IS_LITTLE_ENDIAN
+#endif
+
+/* Compatibility with non-clang compilers. */
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
+
+#if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ > 95) || \
+ (defined(__llvm__) && __has_builtin(__builtin_expect))
+#define PREDICT_FALSE(x) (__builtin_expect(x, 0))
+#define PREDICT_TRUE(x) (__builtin_expect(!!(x), 1))
+#else
+#define PREDICT_FALSE(x) (x)
+#define PREDICT_TRUE(x) (x)
+#endif
+
+// Portable handling of unaligned loads, stores, and copies.
+// On some platforms, like ARM, the copy functions can be more efficient
+// then a load and a store.
+
+#if defined(ARCH_PIII) || \
+ defined(ARCH_ATHLON) || defined(ARCH_K8) || defined(_ARCH_PPC)
+
+// x86 and x86-64 can perform unaligned loads/stores directly;
+// modern PowerPC hardware can also do unaligned integer loads and stores;
+// but note: the FPU still sends unaligned loads and stores to a trap handler!
+
+#define BROTLI_UNALIGNED_LOAD32(_p) (*reinterpret_cast<const uint32_t *>(_p))
+#define BROTLI_UNALIGNED_LOAD64(_p) (*reinterpret_cast<const uint64_t *>(_p))
+
+#define BROTLI_UNALIGNED_STORE32(_p, _val) \
+ (*reinterpret_cast<uint32_t *>(_p) = (_val))
+#define BROTLI_UNALIGNED_STORE64(_p, _val) \
+ (*reinterpret_cast<uint64_t *>(_p) = (_val))
+
+#elif defined(__arm__) && \
+ !defined(__ARM_ARCH_5__) && \
+ !defined(__ARM_ARCH_5T__) && \
+ !defined(__ARM_ARCH_5TE__) && \
+ !defined(__ARM_ARCH_5TEJ__) && \
+ !defined(__ARM_ARCH_6__) && \
+ !defined(__ARM_ARCH_6J__) && \
+ !defined(__ARM_ARCH_6K__) && \
+ !defined(__ARM_ARCH_6Z__) && \
+ !defined(__ARM_ARCH_6ZK__) && \
+ !defined(__ARM_ARCH_6T2__)
+
+// ARMv7 and newer support native unaligned accesses, but only of 16-bit
+// and 32-bit values (not 64-bit); older versions either raise a fatal signal,
+// do an unaligned read and rotate the words around a bit, or do the reads very
+// slowly (trip through kernel mode).
+
+#define BROTLI_UNALIGNED_LOAD32(_p) (*reinterpret_cast<const uint32_t *>(_p))
+#define BROTLI_UNALIGNED_STORE32(_p, _val) \
+ (*reinterpret_cast<uint32_t *>(_p) = (_val))
+
+inline uint64_t BROTLI_UNALIGNED_LOAD64(const void *p) {
+ uint64_t t;
+ memcpy(&t, p, sizeof t);
+ return t;
+}
+
+inline void BROTLI_UNALIGNED_STORE64(void *p, uint64_t v) {
+ memcpy(p, &v, sizeof v);
+}
+
+#else
+
+// These functions are provided for architectures that don't support
+// unaligned loads and stores.
+
+inline uint32_t BROTLI_UNALIGNED_LOAD32(const void *p) {
+ uint32_t t;
+ memcpy(&t, p, sizeof t);
+ return t;
+}
+
+inline uint64_t BROTLI_UNALIGNED_LOAD64(const void *p) {
+ uint64_t t;
+ memcpy(&t, p, sizeof t);
+ return t;
+}
+
+inline void BROTLI_UNALIGNED_STORE32(void *p, uint32_t v) {
+ memcpy(p, &v, sizeof v);
+}
+
+inline void BROTLI_UNALIGNED_STORE64(void *p, uint64_t v) {
+ memcpy(p, &v, sizeof v);
+}
+
+#endif
+
+#endif // BROTLI_ENC_PORT_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/prefix.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/prefix.h
new file mode 100644
index 00000000000..86fff8d522d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/prefix.h
@@ -0,0 +1,79 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Functions for encoding of integers into prefix codes the amount of extra
+// bits, and the actual values of the extra bits.
+
+#ifndef BROTLI_ENC_PREFIX_H_
+#define BROTLI_ENC_PREFIX_H_
+
+#include "./fast_log.h"
+#include "./types.h"
+
+namespace brotli {
+
+static const uint32_t kNumInsertLenPrefixes = 24;
+static const uint32_t kNumCopyLenPrefixes = 24;
+static const uint32_t kNumCommandPrefixes = 704;
+static const uint32_t kNumBlockLenPrefixes = 26;
+static const uint32_t kNumDistanceShortCodes = 16;
+static const uint32_t kNumDistancePrefixes = 520;
+
+// Represents the range of values belonging to a prefix code:
+// [offset, offset + 2^nbits)
+struct PrefixCodeRange {
+ uint32_t offset;
+ uint32_t nbits;
+};
+
+static const PrefixCodeRange kBlockLengthPrefixCode[kNumBlockLenPrefixes] = {
+ { 1, 2}, { 5, 2}, { 9, 2}, { 13, 2},
+ { 17, 3}, { 25, 3}, { 33, 3}, { 41, 3},
+ { 49, 4}, { 65, 4}, { 81, 4}, { 97, 4},
+ { 113, 5}, { 145, 5}, { 177, 5}, { 209, 5},
+ { 241, 6}, { 305, 6}, { 369, 7}, { 497, 8},
+ { 753, 9}, { 1265, 10}, {2289, 11}, {4337, 12},
+ {8433, 13}, {16625, 24}
+};
+
+inline void GetBlockLengthPrefixCode(uint32_t len, uint32_t* code,
+ uint32_t* n_extra, uint32_t* extra) {
+ *code = 0;
+ while (*code < 25 && len >= kBlockLengthPrefixCode[*code + 1].offset) {
+ ++(*code);
+ }
+ *n_extra = kBlockLengthPrefixCode[*code].nbits;
+ *extra = len - kBlockLengthPrefixCode[*code].offset;
+}
+
+inline void PrefixEncodeCopyDistance(size_t distance_code,
+ size_t num_direct_codes,
+ size_t postfix_bits,
+ uint16_t* code,
+ uint32_t* extra_bits) {
+ if (distance_code < kNumDistanceShortCodes + num_direct_codes) {
+ *code = static_cast<uint16_t>(distance_code);
+ *extra_bits = 0;
+ return;
+ }
+ distance_code -= kNumDistanceShortCodes + num_direct_codes; /* >= 0 */
+ distance_code += (1u << (postfix_bits + 2u)); /* > 0 */
+ size_t bucket = Log2FloorNonZero(distance_code) - 1;
+ size_t postfix_mask = (1 << postfix_bits) - 1;
+ size_t postfix = distance_code & postfix_mask;
+ size_t prefix = (distance_code >> bucket) & 1;
+ size_t offset = (2 + prefix) << bucket;
+ size_t nbits = bucket - postfix_bits;
+ *code = static_cast<uint16_t>(
+ (kNumDistanceShortCodes + num_direct_codes +
+ ((2 * (nbits - 1) + prefix) << postfix_bits) + postfix));
+ *extra_bits = static_cast<uint32_t>(
+ (nbits << 24) | ((distance_code - offset) >> postfix_bits));
+}
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_PREFIX_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/ringbuffer.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/ringbuffer.h
new file mode 100644
index 00000000000..13e1b8360e2
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/ringbuffer.h
@@ -0,0 +1,145 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Sliding window over the input data.
+
+#ifndef BROTLI_ENC_RINGBUFFER_H_
+#define BROTLI_ENC_RINGBUFFER_H_
+
+#include <cstdlib> /* free, realloc */
+
+#include "./port.h"
+#include "./types.h"
+
+namespace brotli {
+
+// A RingBuffer(window_bits, tail_bits) contains `1 << window_bits' bytes of
+// data in a circular manner: writing a byte writes it to:
+// `position() % (1 << window_bits)'.
+// For convenience, the RingBuffer array contains another copy of the
+// first `1 << tail_bits' bytes:
+// buffer_[i] == buffer_[i + (1 << window_bits)], if i < (1 << tail_bits),
+// and another copy of the last two bytes:
+// buffer_[-1] == buffer_[(1 << window_bits) - 1] and
+// buffer_[-2] == buffer_[(1 << window_bits) - 2].
+class RingBuffer {
+ public:
+ RingBuffer(int window_bits, int tail_bits)
+ : size_(1u << window_bits),
+ mask_((1u << window_bits) - 1),
+ tail_size_(1u << tail_bits),
+ total_size_(size_ + tail_size_),
+ cur_size_(0),
+ pos_(0),
+ data_(0),
+ buffer_(0) {}
+
+ ~RingBuffer(void) {
+ free(data_);
+ }
+
+ // Allocates or re-allocates data_ to the given length + plus some slack
+ // region before and after. Fills the slack regions with zeros.
+ inline void InitBuffer(const uint32_t buflen) {
+ static const size_t kSlackForEightByteHashingEverywhere = 7;
+ cur_size_ = buflen;
+ data_ = static_cast<uint8_t*>(realloc(
+ data_, 2 + buflen + kSlackForEightByteHashingEverywhere));
+ buffer_ = data_ + 2;
+ buffer_[-2] = buffer_[-1] = 0;
+ for (size_t i = 0; i < kSlackForEightByteHashingEverywhere; ++i) {
+ buffer_[cur_size_ + i] = 0;
+ }
+ }
+
+ // Push bytes into the ring buffer.
+ void Write(const uint8_t *bytes, size_t n) {
+ if (pos_ == 0 && n < tail_size_) {
+ // Special case for the first write: to process the first block, we don't
+ // need to allocate the whole ringbuffer and we don't need the tail
+ // either. However, we do this memory usage optimization only if the
+ // first write is less than the tail size, which is also the input block
+ // size, otherwise it is likely that other blocks will follow and we
+ // will need to reallocate to the full size anyway.
+ pos_ = static_cast<uint32_t>(n);
+ InitBuffer(pos_);
+ memcpy(buffer_, bytes, n);
+ return;
+ }
+ if (cur_size_ < total_size_) {
+ // Lazily allocate the full buffer.
+ InitBuffer(total_size_);
+ // Initialize the last two bytes to zero, so that we don't have to worry
+ // later when we copy the last two bytes to the first two positions.
+ buffer_[size_ - 2] = 0;
+ buffer_[size_ - 1] = 0;
+ }
+ const size_t masked_pos = pos_ & mask_;
+ // The length of the writes is limited so that we do not need to worry
+ // about a write
+ WriteTail(bytes, n);
+ if (PREDICT_TRUE(masked_pos + n <= size_)) {
+ // A single write fits.
+ memcpy(&buffer_[masked_pos], bytes, n);
+ } else {
+ // Split into two writes.
+ // Copy into the end of the buffer, including the tail buffer.
+ memcpy(&buffer_[masked_pos], bytes,
+ std::min(n, total_size_ - masked_pos));
+ // Copy into the beginning of the buffer
+ memcpy(&buffer_[0], bytes + (size_ - masked_pos),
+ n - (size_ - masked_pos));
+ }
+ buffer_[-2] = buffer_[size_ - 2];
+ buffer_[-1] = buffer_[size_ - 1];
+ pos_ += static_cast<uint32_t>(n);
+ if (pos_ > (1u << 30)) { /* Wrap, but preserve not-a-first-lap feature. */
+ pos_ = (pos_ & ((1u << 30) - 1)) | (1u << 30);
+ }
+ }
+
+ void Reset(void) {
+ pos_ = 0;
+ }
+
+ // Logical cursor position in the ring buffer.
+ uint32_t position(void) const { return pos_; }
+
+ // Bit mask for getting the physical position for a logical position.
+ uint32_t mask(void) const { return mask_; }
+
+ uint8_t *start(void) { return &buffer_[0]; }
+ const uint8_t *start(void) const { return &buffer_[0]; }
+
+ private:
+ void WriteTail(const uint8_t *bytes, size_t n) {
+ const size_t masked_pos = pos_ & mask_;
+ if (PREDICT_FALSE(masked_pos < tail_size_)) {
+ // Just fill the tail buffer with the beginning data.
+ const size_t p = size_ + masked_pos;
+ memcpy(&buffer_[p], bytes, std::min(n, tail_size_ - masked_pos));
+ }
+ }
+
+ // Size of the ringbuffer is (1 << window_bits) + tail_size_.
+ const uint32_t size_;
+ const uint32_t mask_;
+ const uint32_t tail_size_;
+ const uint32_t total_size_;
+
+ uint32_t cur_size_;
+ // Position to write in the ring buffer.
+ uint32_t pos_;
+ // The actual ring buffer containing the copy of the last two bytes, the data,
+ // and the copy of the beginning as a tail.
+ uint8_t *data_;
+ // The start of the ringbuffer.
+ uint8_t *buffer_;
+};
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_RINGBUFFER_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/static_dict.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/static_dict.cc
new file mode 100644
index 00000000000..27177b1b6d4
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/static_dict.cc
@@ -0,0 +1,455 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+#include "./static_dict.h"
+
+#include <algorithm>
+
+#include "./dictionary.h"
+#include "./find_match_length.h"
+#include "./static_dict_lut.h"
+#include "./transform.h"
+
+namespace brotli {
+
+inline uint32_t Hash(const uint8_t *data) {
+ uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kDictHashMul32;
+ // The higher bits contain more mixture from the multiplication,
+ // so we take our results from there.
+ return h >> (32 - kDictNumBits);
+}
+
+inline void AddMatch(size_t distance, size_t len, size_t len_code,
+ uint32_t* matches) {
+ uint32_t match = static_cast<uint32_t>((distance << 5) + len_code);
+ matches[len] = std::min(matches[len], match);
+}
+
+inline size_t DictMatchLength(const uint8_t* data,
+ size_t id,
+ size_t len,
+ size_t maxlen) {
+ const size_t offset = kBrotliDictionaryOffsetsByLength[len] + len * id;
+ return FindMatchLengthWithLimit(&kBrotliDictionary[offset], data,
+ std::min(len, maxlen));
+}
+
+inline bool IsMatch(DictWord w, const uint8_t* data, size_t max_length) {
+ if (w.len > max_length) return false;
+ const size_t offset = kBrotliDictionaryOffsetsByLength[w.len] + w.len * w.idx;
+ const uint8_t* dict = &kBrotliDictionary[offset];
+ if (w.transform == 0) {
+ // Match against base dictionary word.
+ return FindMatchLengthWithLimit(dict, data, w.len) == w.len;
+ } else if (w.transform == 10) {
+ // Match against uppercase first transform.
+ // Note that there are only ASCII uppercase words in the lookup table.
+ return (dict[0] >= 'a' && dict[0] <= 'z' &&
+ (dict[0] ^ 32) == data[0] &&
+ FindMatchLengthWithLimit(&dict[1], &data[1], w.len - 1u) ==
+ w.len - 1u);
+ } else {
+ // Match against uppercase all transform.
+ // Note that there are only ASCII uppercase words in the lookup table.
+ for (size_t i = 0; i < w.len; ++i) {
+ if (dict[i] >= 'a' && dict[i] <= 'z') {
+ if ((dict[i] ^ 32) != data[i]) return false;
+ } else {
+ if (dict[i] != data[i]) return false;
+ }
+ }
+ return true;
+ }
+}
+
+bool FindAllStaticDictionaryMatches(const uint8_t* data,
+ size_t min_length,
+ size_t max_length,
+ uint32_t* matches) {
+ bool found_match = false;
+ size_t key = Hash(data);
+ size_t bucket = kStaticDictionaryBuckets[key];
+ if (bucket != 0) {
+ size_t num = bucket & 0xff;
+ size_t offset = bucket >> 8;
+ for (size_t i = 0; i < num; ++i) {
+ const DictWord w = kStaticDictionaryWords[offset + i];
+ const size_t l = w.len;
+ const size_t n = 1u << kBrotliDictionarySizeBitsByLength[l];
+ const size_t id = w.idx;
+ if (w.transform == 0) {
+ const size_t matchlen = DictMatchLength(data, id, l, max_length);
+ // Transform "" + kIdentity + ""
+ if (matchlen == l) {
+ AddMatch(id, l, l, matches);
+ found_match = true;
+ }
+ // Transforms "" + kOmitLast1 + "" and "" + kOmitLast1 + "ing "
+ if (matchlen >= l - 1) {
+ AddMatch(id + 12 * n, l - 1, l, matches);
+ if (l + 2 < max_length &&
+ data[l - 1] == 'i' && data[l] == 'n' && data[l + 1] == 'g' &&
+ data[l + 2] == ' ') {
+ AddMatch(id + 49 * n, l + 3, l, matches);
+ }
+ found_match = true;
+ }
+ // Transform "" + kOmitLastN + "" (N = 2 .. 9)
+ size_t minlen = min_length;
+ if (l > 9) minlen = std::max(minlen, l - 9);
+ size_t maxlen = std::min(matchlen, l - 2);
+ for (size_t len = minlen; len <= maxlen; ++len) {
+ AddMatch(id + kOmitLastNTransforms[l - len] * n, len, l, matches);
+ found_match = true;
+ }
+ if (matchlen < l || l + 6 >= max_length) {
+ continue;
+ }
+ const uint8_t* s = &data[l];
+ // Transforms "" + kIdentity + <suffix>
+ if (s[0] == ' ') {
+ AddMatch(id + n, l + 1, l, matches);
+ if (s[1] == 'a') {
+ if (s[2] == ' ') {
+ AddMatch(id + 28 * n, l + 3, l, matches);
+ } else if (s[2] == 's') {
+ if (s[3] == ' ') AddMatch(id + 46 * n, l + 4, l, matches);
+ } else if (s[2] == 't') {
+ if (s[3] == ' ') AddMatch(id + 60 * n, l + 4, l, matches);
+ } else if (s[2] == 'n') {
+ if (s[3] == 'd' && s[4] == ' ') {
+ AddMatch(id + 10 * n, l + 5, l, matches);
+ }
+ }
+ } else if (s[1] == 'b') {
+ if (s[2] == 'y' && s[3] == ' ') {
+ AddMatch(id + 38 * n, l + 4, l, matches);
+ }
+ } else if (s[1] == 'i') {
+ if (s[2] == 'n') {
+ if (s[3] == ' ') AddMatch(id + 16 * n, l + 4, l, matches);
+ } else if (s[2] == 's') {
+ if (s[3] == ' ') AddMatch(id + 47 * n, l + 4, l, matches);
+ }
+ } else if (s[1] == 'f') {
+ if (s[2] == 'o') {
+ if (s[3] == 'r' && s[4] == ' ') {
+ AddMatch(id + 25 * n, l + 5, l, matches);
+ }
+ } else if (s[2] == 'r') {
+ if (s[3] == 'o' && s[4] == 'm' && s[5] == ' ') {
+ AddMatch(id + 37 * n, l + 6, l, matches);
+ }
+ }
+ } else if (s[1] == 'o') {
+ if (s[2] == 'f') {
+ if (s[3] == ' ') AddMatch(id + 8 * n, l + 4, l, matches);
+ } else if (s[2] == 'n') {
+ if (s[3] == ' ') AddMatch(id + 45 * n, l + 4, l, matches);
+ }
+ } else if (s[1] == 'n') {
+ if (s[2] == 'o' && s[3] == 't' && s[4] == ' ') {
+ AddMatch(id + 80 * n, l + 5, l, matches);
+ }
+ } else if (s[1] == 't') {
+ if (s[2] == 'h') {
+ if (s[3] == 'e') {
+ if (s[4] == ' ') AddMatch(id + 5 * n, l + 5, l, matches);
+ } else if (s[3] == 'a') {
+ if (s[4] == 't' && s[5] == ' ') {
+ AddMatch(id + 29 * n, l + 6, l, matches);
+ }
+ }
+ } else if (s[2] == 'o') {
+ if (s[3] == ' ') AddMatch(id + 17 * n, l + 4, l, matches);
+ }
+ } else if (s[1] == 'w') {
+ if (s[2] == 'i' && s[3] == 't' && s[4] == 'h' && s[5] == ' ') {
+ AddMatch(id + 35 * n, l + 6, l, matches);
+ }
+ }
+ } else if (s[0] == '"') {
+ AddMatch(id + 19 * n, l + 1, l, matches);
+ if (s[1] == '>') {
+ AddMatch(id + 21 * n, l + 2, l, matches);
+ }
+ } else if (s[0] == '.') {
+ AddMatch(id + 20 * n, l + 1, l, matches);
+ if (s[1] == ' ') {
+ AddMatch(id + 31 * n, l + 2, l, matches);
+ if (s[2] == 'T' && s[3] == 'h') {
+ if (s[4] == 'e') {
+ if (s[5] == ' ') AddMatch(id + 43 * n, l + 6, l, matches);
+ } else if (s[4] == 'i') {
+ if (s[5] == 's' && s[6] == ' ') {
+ AddMatch(id + 75 * n, l + 7, l, matches);
+ }
+ }
+ }
+ }
+ } else if (s[0] == ',') {
+ AddMatch(id + 76 * n, l + 1, l, matches);
+ if (s[1] == ' ') {
+ AddMatch(id + 14 * n, l + 2, l, matches);
+ }
+ } else if (s[0] == '\n') {
+ AddMatch(id + 22 * n, l + 1, l, matches);
+ if (s[1] == '\t') {
+ AddMatch(id + 50 * n, l + 2, l, matches);
+ }
+ } else if (s[0] == ']') {
+ AddMatch(id + 24 * n, l + 1, l, matches);
+ } else if (s[0] == '\'') {
+ AddMatch(id + 36 * n, l + 1, l, matches);
+ } else if (s[0] == ':') {
+ AddMatch(id + 51 * n, l + 1, l, matches);
+ } else if (s[0] == '(') {
+ AddMatch(id + 57 * n, l + 1, l, matches);
+ } else if (s[0] == '=') {
+ if (s[1] == '"') {
+ AddMatch(id + 70 * n, l + 2, l, matches);
+ } else if (s[1] == '\'') {
+ AddMatch(id + 86 * n, l + 2, l, matches);
+ }
+ } else if (s[0] == 'a') {
+ if (s[1] == 'l' && s[2] == ' ') {
+ AddMatch(id + 84 * n, l + 3, l, matches);
+ }
+ } else if (s[0] == 'e') {
+ if (s[1] == 'd') {
+ if (s[2] == ' ') AddMatch(id + 53 * n, l + 3, l, matches);
+ } else if (s[1] == 'r') {
+ if (s[2] == ' ') AddMatch(id + 82 * n, l + 3, l, matches);
+ } else if (s[1] == 's') {
+ if (s[2] == 't' && s[3] == ' ') {
+ AddMatch(id + 95 * n, l + 4, l, matches);
+ }
+ }
+ } else if (s[0] == 'f') {
+ if (s[1] == 'u' && s[2] == 'l' && s[3] == ' ') {
+ AddMatch(id + 90 * n, l + 4, l, matches);
+ }
+ } else if (s[0] == 'i') {
+ if (s[1] == 'v') {
+ if (s[2] == 'e' && s[3] == ' ') {
+ AddMatch(id + 92 * n, l + 4, l, matches);
+ }
+ } else if (s[1] == 'z') {
+ if (s[2] == 'e' && s[3] == ' ') {
+ AddMatch(id + 100 * n, l + 4, l, matches);
+ }
+ }
+ } else if (s[0] == 'l') {
+ if (s[1] == 'e') {
+ if (s[2] == 's' && s[3] == 's' && s[4] == ' ') {
+ AddMatch(id + 93 * n, l + 5, l, matches);
+ }
+ } else if (s[1] == 'y') {
+ if (s[2] == ' ') AddMatch(id + 61 * n, l + 3, l, matches);
+ }
+ } else if (s[0] == 'o') {
+ if (s[1] == 'u' && s[2] == 's' && s[3] == ' ') {
+ AddMatch(id + 106 * n, l + 4, l, matches);
+ }
+ }
+ } else {
+ // Set t=false for kUppercaseFirst and
+ // t=true otherwise (kUppercaseAll) transform.
+ const bool t = w.transform != kUppercaseFirst;
+ if (!IsMatch(w, data, max_length)) {
+ continue;
+ }
+ // Transform "" + kUppercase{First,All} + ""
+ AddMatch(id + (t ? 44 : 9) * n, l, l, matches);
+ found_match = true;
+ if (l + 1 >= max_length) {
+ continue;
+ }
+ // Transforms "" + kUppercase{First,All} + <suffix>
+ const uint8_t* s = &data[l];
+ if (s[0] == ' ') {
+ AddMatch(id + (t ? 68 : 4) * n, l + 1, l, matches);
+ } else if (s[0] == '"') {
+ AddMatch(id + (t ? 87 : 66) * n, l + 1, l, matches);
+ if (s[1] == '>') {
+ AddMatch(id + (t ? 97 : 69) * n, l + 2, l, matches);
+ }
+ } else if (s[0] == '.') {
+ AddMatch(id + (t ? 101 : 79) * n, l + 1, l, matches);
+ if (s[1] == ' ') {
+ AddMatch(id + (t ? 114 : 88) * n, l + 2, l, matches);
+ }
+ } else if (s[0] == ',') {
+ AddMatch(id + (t ? 112 : 99) * n, l + 1, l, matches);
+ if (s[1] == ' ') {
+ AddMatch(id + (t ? 107 : 58) * n, l + 2, l, matches);
+ }
+ } else if (s[0] == '\'') {
+ AddMatch(id + (t ? 94 : 74) * n, l + 1, l, matches);
+ } else if (s[0] == '(') {
+ AddMatch(id + (t ? 113 : 78) * n, l + 1, l, matches);
+ } else if (s[0] == '=') {
+ if (s[1] == '"') {
+ AddMatch(id + (t ? 105 : 104) * n, l + 2, l, matches);
+ } else if (s[1] == '\'') {
+ AddMatch(id + (t ? 116 : 108) * n, l + 2, l, matches);
+ }
+ }
+ }
+ }
+ }
+ // Transforms with prefixes " " and "."
+ if (max_length >= 5 && (data[0] == ' ' || data[0] == '.')) {
+ bool is_space = (data[0] == ' ');
+ key = Hash(&data[1]);
+ bucket = kStaticDictionaryBuckets[key];
+ size_t num = bucket & 0xff;
+ size_t offset = bucket >> 8;
+ for (size_t i = 0; i < num; ++i) {
+ const DictWord w = kStaticDictionaryWords[offset + i];
+ const size_t l = w.len;
+ const size_t n = 1u << kBrotliDictionarySizeBitsByLength[l];
+ const size_t id = w.idx;
+ if (w.transform == 0) {
+ if (!IsMatch(w, &data[1], max_length - 1)) {
+ continue;
+ }
+ // Transforms " " + kIdentity + "" and "." + kIdentity + ""
+ AddMatch(id + (is_space ? 6 : 32) * n, l + 1, l, matches);
+ found_match = true;
+ if (l + 2 >= max_length) {
+ continue;
+ }
+ // Transforms " " + kIdentity + <suffix> and "." + kIdentity + <suffix>
+ const uint8_t* s = &data[l + 1];
+ if (s[0] == ' ') {
+ AddMatch(id + (is_space ? 2 : 77) * n, l + 2, l, matches);
+ } else if (s[0] == '(') {
+ AddMatch(id + (is_space ? 89 : 67) * n, l + 2, l, matches);
+ } else if (is_space) {
+ if (s[0] == ',') {
+ AddMatch(id + 103 * n, l + 2, l, matches);
+ if (s[1] == ' ') {
+ AddMatch(id + 33 * n, l + 3, l, matches);
+ }
+ } else if (s[0] == '.') {
+ AddMatch(id + 71 * n, l + 2, l, matches);
+ if (s[1] == ' ') {
+ AddMatch(id + 52 * n, l + 3, l, matches);
+ }
+ } else if (s[0] == '=') {
+ if (s[1] == '"') {
+ AddMatch(id + 81 * n, l + 3, l, matches);
+ } else if (s[1] == '\'') {
+ AddMatch(id + 98 * n, l + 3, l, matches);
+ }
+ }
+ }
+ } else if (is_space) {
+ // Set t=false for kUppercaseFirst and
+ // t=true otherwise (kUppercaseAll) transform.
+ const bool t = w.transform != kUppercaseFirst;
+ if (!IsMatch(w, &data[1], max_length - 1)) {
+ continue;
+ }
+ // Transforms " " + kUppercase{First,All} + ""
+ AddMatch(id + (t ? 85 : 30) * n, l + 1, l, matches);
+ found_match = true;
+ if (l + 2 >= max_length) {
+ continue;
+ }
+ // Transforms " " + kUppercase{First,All} + <suffix>
+ const uint8_t* s = &data[l + 1];
+ if (s[0] == ' ') {
+ AddMatch(id + (t ? 83 : 15) * n, l + 2, l, matches);
+ } else if (s[0] == ',') {
+ if (!t) {
+ AddMatch(id + 109 * n, l + 2, l, matches);
+ }
+ if (s[1] == ' ') {
+ AddMatch(id + (t ? 111 : 65) * n, l + 3, l, matches);
+ }
+ } else if (s[0] == '.') {
+ AddMatch(id + (t ? 115 : 96) * n, l + 2, l, matches);
+ if (s[1] == ' ') {
+ AddMatch(id + (t ? 117 : 91) * n, l + 3, l, matches);
+ }
+ } else if (s[0] == '=') {
+ if (s[1] == '"') {
+ AddMatch(id + (t ? 110 : 118) * n, l + 3, l, matches);
+ } else if (s[1] == '\'') {
+ AddMatch(id + (t ? 119 : 120) * n, l + 3, l, matches);
+ }
+ }
+ }
+ }
+ }
+ if (max_length >= 6) {
+ // Transforms with prefixes "e ", "s ", ", " and "\xc2\xa0"
+ if ((data[1] == ' ' &&
+ (data[0] == 'e' || data[0] == 's' || data[0] == ',')) ||
+ (data[0] == 0xc2 && data[1] == 0xa0)) {
+ key = Hash(&data[2]);
+ bucket = kStaticDictionaryBuckets[key];
+ size_t num = bucket & 0xff;
+ size_t offset = bucket >> 8;
+ for (size_t i = 0; i < num; ++i) {
+ const DictWord w = kStaticDictionaryWords[offset + i];
+ const size_t l = w.len;
+ const size_t n = 1u << kBrotliDictionarySizeBitsByLength[l];
+ const size_t id = w.idx;
+ if (w.transform == 0 && IsMatch(w, &data[2], max_length - 2)) {
+ if (data[0] == 0xc2) {
+ AddMatch(id + 102 * n, l + 2, l, matches);
+ found_match = true;
+ } else if (l + 2 < max_length && data[l + 2] == ' ') {
+ size_t t = data[0] == 'e' ? 18 : (data[0] == 's' ? 7 : 13);
+ AddMatch(id + t * n, l + 3, l, matches);
+ found_match = true;
+ }
+ }
+ }
+ }
+ }
+ if (max_length >= 9) {
+ // Transforms with prefixes " the " and ".com/"
+ if ((data[0] == ' ' && data[1] == 't' && data[2] == 'h' &&
+ data[3] == 'e' && data[4] == ' ') ||
+ (data[0] == '.' && data[1] == 'c' && data[2] == 'o' &&
+ data[3] == 'm' && data[4] == '/')) {
+ key = Hash(&data[5]);
+ bucket = kStaticDictionaryBuckets[key];
+ size_t num = bucket & 0xff;
+ size_t offset = bucket >> 8;
+ for (size_t i = 0; i < num; ++i) {
+ const DictWord w = kStaticDictionaryWords[offset + i];
+ const size_t l = w.len;
+ const size_t n = 1u << kBrotliDictionarySizeBitsByLength[l];
+ const size_t id = w.idx;
+ if (w.transform == 0 && IsMatch(w, &data[5], max_length - 5)) {
+ AddMatch(id + (data[0] == ' ' ? 41 : 72) * n, l + 5, l, matches);
+ found_match = true;
+ if (l + 5 < max_length) {
+ const uint8_t* s = &data[l + 5];
+ if (data[0] == ' ') {
+ if (l + 8 < max_length &&
+ s[0] == ' ' && s[1] == 'o' && s[2] == 'f' && s[3] == ' ') {
+ AddMatch(id + 62 * n, l + 9, l, matches);
+ if (l + 12 < max_length &&
+ s[4] == 't' && s[5] == 'h' && s[6] == 'e' && s[7] == ' ') {
+ AddMatch(id + 73 * n, l + 13, l, matches);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return found_match;
+}
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/static_dict.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/static_dict.h
new file mode 100644
index 00000000000..d293934dfb7
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/static_dict.h
@@ -0,0 +1,32 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Class to model the static dictionary.
+
+#ifndef BROTLI_ENC_STATIC_DICT_H_
+#define BROTLI_ENC_STATIC_DICT_H_
+
+#include "./types.h"
+
+namespace brotli {
+
+static const size_t kMaxDictionaryMatchLen = 37;
+static const uint32_t kInvalidMatch = 0xfffffff;
+
+// Matches data against static dictionary words, and for each length l,
+// for which a match is found, updates matches[l] to be the minimum possible
+// (distance << 5) + len_code.
+// Prerequisites:
+// matches array is at least kMaxDictionaryMatchLen + 1 long
+// all elements are initialized to kInvalidMatch
+bool FindAllStaticDictionaryMatches(const uint8_t* data,
+ size_t min_length,
+ size_t max_length,
+ uint32_t* matches);
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_STATIC_DICT_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/static_dict_lut.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/static_dict_lut.h
new file mode 100644
index 00000000000..489c03a1be1
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/static_dict_lut.h
@@ -0,0 +1,12055 @@
+/* Copyright 2015 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Lookup table for static dictionary and transforms.
+
+#ifndef BROTLI_ENC_DICTIONARY_LUT_H_
+#define BROTLI_ENC_DICTIONARY_LUT_H_
+
+#include "./types.h"
+
+namespace brotli {
+
+static const int kDictNumBits = 15
+;static const uint32_t kDictHashMul32 = 0x1e35a7bd;
+
+struct DictWord {
+ uint8_t len;
+ uint8_t transform;
+ uint16_t idx;
+};
+
+static const uint32_t kStaticDictionaryBuckets[] = {
+ 0x000002, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000203, 0x00050e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x001301, 0x000000, 0x000000, 0x000000, 0x001401, 0x000000, 0x001501, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x001602,
+ 0x000000, 0x000000, 0x001804, 0x000000, 0x001c18, 0x000000, 0x003402, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x003606, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x003c0f, 0x004b12, 0x000000, 0x000000,
+ 0x000000, 0x005d02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x005f01, 0x000000, 0x006001, 0x000000, 0x006101, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x006202, 0x006405, 0x006902, 0x006b02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x006d01, 0x000000, 0x006e01,
+ 0x006f01, 0x000000, 0x007005, 0x007506, 0x007b01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x007c03, 0x007f01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x008002, 0x000000, 0x000000, 0x008201, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x008303, 0x000000, 0x000000, 0x008602, 0x000000, 0x000000,
+ 0x000000, 0x008801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x008901,
+ 0x008a03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x008d01, 0x008e01, 0x008f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x009001, 0x000000, 0x000000, 0x000000, 0x009103, 0x009402, 0x009601, 0x009701,
+ 0x000000, 0x000000, 0x009801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x009901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x009a05, 0x000000, 0x000000, 0x000000, 0x000000, 0x009f16, 0x00b501,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x00b605, 0x000000,
+ 0x000000, 0x000000, 0x00bb01, 0x00bc03, 0x000000, 0x000000, 0x00bf02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x00c103, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x00c405, 0x00c907,
+ 0x00d001, 0x000000, 0x000000, 0x00d10e, 0x000000, 0x00df01, 0x000000, 0x000000,
+ 0x000000, 0x00e006, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x00e601, 0x000000, 0x000000, 0x000000,
+ 0x00e708, 0x000000, 0x00ef02, 0x000000, 0x000000, 0x00f102, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x00f302, 0x000000, 0x000000, 0x000000, 0x00f503, 0x000000, 0x000000,
+ 0x00f802, 0x00fa02, 0x00fc05, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x010103, 0x000000, 0x000000, 0x010402, 0x010604, 0x000000, 0x000000, 0x000000,
+ 0x010a01, 0x000000, 0x000000, 0x010b01, 0x000000, 0x010c02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x010e01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x010f01, 0x000000,
+ 0x011004, 0x000000, 0x011401, 0x000000, 0x011508, 0x011d01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x011e02, 0x000000, 0x012001, 0x012101, 0x012204, 0x000000,
+ 0x000000, 0x000000, 0x012601, 0x000000, 0x000000, 0x012701, 0x012801, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x012901, 0x000000, 0x000000, 0x000000, 0x012a06, 0x000000, 0x000000,
+ 0x013013, 0x000000, 0x014303, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x014601, 0x000000, 0x014701, 0x014807, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x014f04, 0x000000, 0x000000, 0x015301, 0x000000, 0x015401, 0x015501, 0x015603,
+ 0x000000, 0x000000, 0x015902, 0x000000, 0x015b01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x015c02, 0x015e04, 0x000000, 0x000000, 0x016208,
+ 0x000000, 0x016a01, 0x000000, 0x016b04, 0x000000, 0x016f01, 0x017001, 0x000000,
+ 0x017102, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x017301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x017402, 0x000000, 0x017601, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x017701, 0x017811, 0x000000, 0x000000, 0x018901,
+ 0x018a01, 0x018b02, 0x000000, 0x000000, 0x018d02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x018f08, 0x000000, 0x000000, 0x01970c, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x01a301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x01a401, 0x000000, 0x000000, 0x01a501, 0x01a606, 0x000000, 0x000000, 0x01ac06,
+ 0x01b201, 0x01b306, 0x01b901, 0x000000, 0x000000, 0x01ba01, 0x000000, 0x01bb01,
+ 0x01bc08, 0x01c403, 0x01c701, 0x000000, 0x01c801, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x01c901, 0x000000, 0x000000, 0x000000, 0x01ca01, 0x000000,
+ 0x000000, 0x000000, 0x01cb02, 0x000000, 0x01cd01, 0x01ce02, 0x01d001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x01d103, 0x01d401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x01d504, 0x000000, 0x000000,
+ 0x000000, 0x01d902, 0x000000, 0x01db07, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x01e202, 0x000000, 0x01e401, 0x000000, 0x000000, 0x000000, 0x01e502, 0x000000,
+ 0x000000, 0x01e703, 0x01ea01, 0x01eb05, 0x000000, 0x000000, 0x01f002, 0x01f201,
+ 0x01f301, 0x000000, 0x01f404, 0x000000, 0x000000, 0x000000, 0x01f801, 0x000000,
+ 0x000000, 0x01f901, 0x000000, 0x000000, 0x000000, 0x01fa02, 0x000000, 0x000000,
+ 0x000000, 0x01fc02, 0x000000, 0x000000, 0x000000, 0x000000, 0x01fe01, 0x01ff07,
+ 0x02060a, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x021001,
+ 0x021104, 0x000000, 0x000000, 0x000000, 0x021509, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x021e0a, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x022804, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x022c03, 0x022f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x023003, 0x000000, 0x023301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x023401, 0x023509, 0x000000, 0x023e2c, 0x000000, 0x026a01, 0x000000,
+ 0x026b03, 0x000000, 0x000000, 0x026e01, 0x026f01, 0x000000, 0x000000, 0x000000,
+ 0x027001, 0x000000, 0x000000, 0x027101, 0x027201, 0x000000, 0x000000, 0x027302,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x027501, 0x000000, 0x02760a, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x028002, 0x000000, 0x000000, 0x000000, 0x000000, 0x02820d, 0x028f0c, 0x029b05,
+ 0x000000, 0x000000, 0x000000, 0x02a001, 0x000000, 0x000000, 0x000000, 0x02a108,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x02a905, 0x000000, 0x02ae03, 0x000000, 0x02b103, 0x000000, 0x02b406, 0x02ba01,
+ 0x02bb04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x02bf01,
+ 0x02c002, 0x000000, 0x000000, 0x000000, 0x000000, 0x02c203, 0x02c501, 0x000000,
+ 0x02c60f, 0x000000, 0x000000, 0x000000, 0x000000, 0x02d503, 0x000000, 0x000000,
+ 0x02d801, 0x000000, 0x000000, 0x000000, 0x02d901, 0x02da15, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x02ef0a, 0x000000, 0x000000, 0x000000, 0x02f901,
+ 0x000000, 0x02fa04, 0x000000, 0x000000, 0x02fe03, 0x000000, 0x000000, 0x000000,
+ 0x030104, 0x030501, 0x000000, 0x000000, 0x030601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x030701,
+ 0x000000, 0x000000, 0x000000, 0x030806, 0x030e02, 0x000000, 0x000000, 0x000000,
+ 0x031003, 0x031302, 0x000000, 0x000000, 0x000000, 0x000000, 0x031503, 0x000000,
+ 0x000000, 0x000000, 0x031801, 0x000000, 0x000000, 0x000000, 0x000000, 0x03190a,
+ 0x000000, 0x000000, 0x03230f, 0x033202, 0x033406, 0x000000, 0x033a07, 0x000000,
+ 0x000000, 0x000000, 0x034101, 0x000000, 0x000000, 0x034206, 0x000000, 0x000000,
+ 0x000000, 0x034803, 0x000000, 0x034b06, 0x000000, 0x035101, 0x035208, 0x035a01,
+ 0x000000, 0x035b0e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x036902, 0x000000, 0x036b01, 0x000000, 0x036c0d, 0x037903, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x037c01,
+ 0x037d04, 0x038101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x038201, 0x000000, 0x000000, 0x000000, 0x038304, 0x038702, 0x038901,
+ 0x000000, 0x000000, 0x000000, 0x038a01, 0x000000, 0x038b01, 0x038c01, 0x000000,
+ 0x038d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x038e05, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x039306, 0x000000, 0x000000, 0x000000, 0x039903,
+ 0x039c05, 0x000000, 0x03a104, 0x000000, 0x03a509, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x03ae01, 0x000000, 0x000000, 0x03af09, 0x000000, 0x03b801,
+ 0x03b901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x03ba07,
+ 0x000000, 0x03c101, 0x03c20d, 0x000000, 0x000000, 0x03cf01, 0x000000, 0x000000,
+ 0x03d001, 0x03d101, 0x03d201, 0x03d301, 0x000000, 0x03d403, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x03d701, 0x000000, 0x000000, 0x03d802, 0x000000, 0x000000,
+ 0x03da02, 0x03dc02, 0x03de01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x03df01, 0x000000, 0x000000, 0x000000,
+ 0x03e003, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x03e304,
+ 0x000000, 0x000000, 0x000000, 0x03e702, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x03e903, 0x000000, 0x000000, 0x000000, 0x000000, 0x03ec02, 0x03ee02,
+ 0x000000, 0x000000, 0x000000, 0x03f001, 0x000000, 0x000000, 0x000000, 0x03f101,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x03f201, 0x000000,
+ 0x03f302, 0x000000, 0x000000, 0x000000, 0x000000, 0x03f502, 0x03f704, 0x000000,
+ 0x000000, 0x000000, 0x03fb01, 0x000000, 0x03fc01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x03fd02, 0x000000, 0x000000, 0x000000, 0x03ff01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x040001, 0x000000, 0x000000, 0x040101,
+ 0x040204, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x040602, 0x000000,
+ 0x040801, 0x000000, 0x000000, 0x000000, 0x000000, 0x040903, 0x000000, 0x000000,
+ 0x000000, 0x040c03, 0x040f02, 0x000000, 0x000000, 0x000000, 0x041101, 0x04120a,
+ 0x000000, 0x000000, 0x041c01, 0x000000, 0x041d03, 0x000000, 0x000000, 0x042001,
+ 0x000000, 0x000000, 0x000000, 0x042102, 0x000000, 0x000000, 0x042301, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x042401, 0x000000,
+ 0x000000, 0x042501, 0x000000, 0x000000, 0x000000, 0x000000, 0x042601, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x042701, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x042801, 0x000000, 0x000000, 0x000000, 0x000000, 0x042901, 0x042a02,
+ 0x000000, 0x000000, 0x000000, 0x042c01, 0x042d02, 0x042f01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x043002, 0x000000, 0x043205, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x043704, 0x043b04, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x043f06, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x044501, 0x000000, 0x04460c, 0x000000, 0x045205, 0x000000,
+ 0x000000, 0x000000, 0x045702, 0x045905, 0x000000, 0x045e03, 0x000000, 0x046104,
+ 0x000000, 0x000000, 0x046503, 0x000000, 0x046801, 0x000000, 0x046902, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x046b0c, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x047701, 0x000000, 0x000000, 0x047801, 0x047902,
+ 0x000000, 0x047b01, 0x047c01, 0x000000, 0x000000, 0x047d01, 0x047e01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x047f01, 0x000000, 0x048001, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x048109, 0x000000, 0x048a01, 0x000000, 0x000000,
+ 0x000000, 0x048b01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x048c02,
+ 0x000000, 0x048e03, 0x000000, 0x049101, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x049201, 0x049301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x049402, 0x049602, 0x049809, 0x000000, 0x04a109,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x04aa1a, 0x000000, 0x000000, 0x04c403, 0x000000, 0x000000,
+ 0x04c703, 0x000000, 0x000000, 0x04ca01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x04cb01, 0x04cc01, 0x000000, 0x000000, 0x04cd01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x04ce02,
+ 0x000000, 0x000000, 0x000000, 0x04d00a, 0x000000, 0x000000, 0x04da01, 0x04db02,
+ 0x04dd02, 0x04df06, 0x000000, 0x000000, 0x000000, 0x000000, 0x04e501, 0x04e603,
+ 0x04e901, 0x04ea01, 0x000000, 0x000000, 0x000000, 0x04eb01, 0x000000, 0x000000,
+ 0x04ec01, 0x000000, 0x000000, 0x000000, 0x04ed02, 0x04ef01, 0x000000, 0x000000,
+ 0x04f001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x04f101, 0x000000, 0x04f206,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x04f801, 0x04f902, 0x04fb0d, 0x050802,
+ 0x000000, 0x000000, 0x050a01, 0x050b01, 0x050c01, 0x000000, 0x000000, 0x050d01,
+ 0x050e01, 0x050f06, 0x000000, 0x000000, 0x000000, 0x000000, 0x051502, 0x000000,
+ 0x051707, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x051e01, 0x051f02, 0x000000, 0x052102, 0x000000, 0x052304,
+ 0x052701, 0x052801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x052901, 0x052a01, 0x052b0b, 0x000000, 0x053601, 0x000000, 0x053705,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x053c01, 0x053d04, 0x000000, 0x05410b,
+ 0x000000, 0x054c01, 0x000000, 0x000000, 0x000000, 0x054d02, 0x054f01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x055001, 0x000000, 0x000000,
+ 0x000000, 0x055103, 0x055401, 0x000000, 0x05550d, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x056207, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x056902, 0x000000, 0x056b07, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x057208, 0x000000, 0x000000, 0x000000, 0x000000, 0x057a02,
+ 0x000000, 0x057c02, 0x000000, 0x000000, 0x057e01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x057f01, 0x058001, 0x000000, 0x058102, 0x000000, 0x000000,
+ 0x000000, 0x058301, 0x058403, 0x05870d, 0x000000, 0x000000, 0x059416, 0x05aa03,
+ 0x000000, 0x000000, 0x05ad01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x05ae01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x05af03, 0x000000, 0x000000, 0x000000, 0x000000, 0x05b201,
+ 0x05b301, 0x05b40e, 0x05c202, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x05c403, 0x000000, 0x05c701, 0x000000, 0x05c805, 0x000000, 0x000000,
+ 0x05cd09, 0x000000, 0x000000, 0x05d601, 0x000000, 0x000000, 0x000000, 0x05d702,
+ 0x000000, 0x000000, 0x05d901, 0x05da02, 0x05dc13, 0x05ef01, 0x05f005, 0x000000,
+ 0x000000, 0x000000, 0x05f502, 0x000000, 0x000000, 0x000000, 0x000000, 0x05f701,
+ 0x05f804, 0x000000, 0x05fc03, 0x05ff01, 0x000000, 0x000000, 0x000000, 0x060001,
+ 0x06010b, 0x060c01, 0x000000, 0x060d08, 0x061501, 0x06160d, 0x062301, 0x000000,
+ 0x062402, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x062604, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x062a14, 0x000000, 0x063e04, 0x000000, 0x064201, 0x000000, 0x064301, 0x000000,
+ 0x064403, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x064702, 0x064901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x064a04, 0x000000, 0x064e01, 0x000000,
+ 0x064f02, 0x065101, 0x000000, 0x065203, 0x000000, 0x000000, 0x06550c, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x066101, 0x000000, 0x000000, 0x000000, 0x066206,
+ 0x000000, 0x000000, 0x000000, 0x066802, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x066a07, 0x000000, 0x000000,
+ 0x000000, 0x067102, 0x000000, 0x000000, 0x067301, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x067401, 0x000000, 0x000000, 0x000000, 0x067501, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x067607, 0x000000, 0x067d01, 0x000000, 0x000000,
+ 0x067e01, 0x067f04, 0x000000, 0x000000, 0x068301, 0x000000, 0x000000, 0x068401,
+ 0x068502, 0x000000, 0x068701, 0x068801, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x068901, 0x000000, 0x000000, 0x000000, 0x068a01, 0x068b04, 0x068f02,
+ 0x000000, 0x069105, 0x000000, 0x000000, 0x069611, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x06a701, 0x000000, 0x000000, 0x06a810, 0x000000, 0x000000,
+ 0x06b80d, 0x000000, 0x000000, 0x000000, 0x000000, 0x06c501, 0x06c602, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x06c802, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x06ca01, 0x000000, 0x000000, 0x06cb01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x06cc02, 0x06ce02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x06d004, 0x000000, 0x000000, 0x000000,
+ 0x06d402, 0x000000, 0x000000, 0x000000, 0x06d609, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x06df05, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x06e413, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x06f701, 0x000000,
+ 0x06f802, 0x06fa01, 0x000000, 0x000000, 0x000000, 0x000000, 0x06fb01, 0x06fc01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x06fd01, 0x06fe02, 0x070005, 0x000000,
+ 0x070501, 0x070602, 0x000000, 0x000000, 0x000000, 0x000000, 0x070802, 0x000000,
+ 0x070a02, 0x070c01, 0x000000, 0x000000, 0x000000, 0x070d05, 0x071201, 0x000000,
+ 0x071302, 0x071507, 0x000000, 0x071c01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x071d0b, 0x07280f, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x073709, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x074002, 0x000000, 0x000000, 0x000000, 0x074202, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x074405, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x074937, 0x000000, 0x078004, 0x078404, 0x000000, 0x000000, 0x000000,
+ 0x078801, 0x078901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x078a01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x078b02, 0x000000, 0x000000, 0x000000, 0x078d0c, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x079902, 0x000000, 0x000000,
+ 0x079b02, 0x000000, 0x000000, 0x000000, 0x000000, 0x079d07, 0x000000, 0x07a401,
+ 0x000000, 0x07a507, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x07ac02,
+ 0x07ae01, 0x000000, 0x000000, 0x000000, 0x000000, 0x07af01, 0x000000, 0x07b002,
+ 0x000000, 0x07b201, 0x07b301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x07b402, 0x000000, 0x000000, 0x000000, 0x000000, 0x07b601,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x07b703, 0x07ba03, 0x000000, 0x07bd02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x07bf04, 0x07c302, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x07c50e, 0x07d304, 0x07d704, 0x000000, 0x000000, 0x000000,
+ 0x07db01, 0x07dc02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x07de01, 0x000000, 0x07df01, 0x07e004,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x07e404, 0x000000, 0x000000, 0x07e804,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x07ec07, 0x07f304, 0x07f702,
+ 0x000000, 0x07f901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x07fa02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x07fc01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x07fd01, 0x07fe01,
+ 0x000000, 0x07ff01, 0x08000a, 0x000000, 0x080a04, 0x000000, 0x000000, 0x080e01,
+ 0x000000, 0x080f01, 0x081001, 0x000000, 0x000000, 0x081103, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x081401, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x081501, 0x000000, 0x081601, 0x000000, 0x081708, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x081f02, 0x082101, 0x082202, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x082401, 0x000000, 0x082502, 0x082701, 0x082810, 0x083802,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x083a09, 0x000000, 0x000000, 0x084301,
+ 0x084403, 0x000000, 0x084702, 0x000000, 0x000000, 0x084901, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x084a02, 0x000000, 0x000000, 0x084c02, 0x084e01,
+ 0x084f02, 0x000000, 0x000000, 0x000000, 0x085107, 0x000000, 0x000000, 0x000000,
+ 0x085802, 0x085a01, 0x085b01, 0x085c03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x085f01, 0x086001, 0x000000,
+ 0x000000, 0x086103, 0x086401, 0x000000, 0x000000, 0x000000, 0x000000, 0x086501,
+ 0x000000, 0x000000, 0x086607, 0x086d01, 0x000000, 0x086e01, 0x000000, 0x086f01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x087001, 0x087120,
+ 0x000000, 0x000000, 0x089108, 0x089903, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x089c0c, 0x08a803, 0x000000, 0x08ab01, 0x000000, 0x08ac01,
+ 0x000000, 0x08ad02, 0x08af0d, 0x000000, 0x000000, 0x000000, 0x000000, 0x08bc01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x08bd01, 0x000000, 0x08be02,
+ 0x08c001, 0x000000, 0x000000, 0x08c101, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x08c209, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x08cb01, 0x000000, 0x000000, 0x08cc04, 0x000000, 0x000000, 0x000000, 0x08d001,
+ 0x08d102, 0x000000, 0x000000, 0x000000, 0x08d302, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x08d502, 0x000000, 0x08d705, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x08dc01, 0x08dd01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x08de02,
+ 0x000000, 0x08e004, 0x000000, 0x000000, 0x000000, 0x000000, 0x08e401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x08e501, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x08e601, 0x000000, 0x08e703, 0x000000, 0x08ea04, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x08ee02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x08f001,
+ 0x08f101, 0x000000, 0x000000, 0x000000, 0x000000, 0x08f201, 0x000000, 0x08f301,
+ 0x000000, 0x000000, 0x000000, 0x08f402, 0x08f601, 0x08f702, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x08f905, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x08fe02, 0x000000, 0x090001, 0x000000, 0x000000,
+ 0x090101, 0x000000, 0x090206, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x090801,
+ 0x090901, 0x090a01, 0x090b02, 0x000000, 0x000000, 0x090d01, 0x000000, 0x090e03,
+ 0x000000, 0x091101, 0x000000, 0x000000, 0x091201, 0x000000, 0x091302, 0x000000,
+ 0x091509, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x091e01, 0x000000, 0x091f02, 0x092101, 0x092201, 0x000000, 0x09230f, 0x000000,
+ 0x000000, 0x000000, 0x093214, 0x000000, 0x094607, 0x000000, 0x094d04, 0x095101,
+ 0x000000, 0x095207, 0x000000, 0x000000, 0x095901, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x095a02, 0x000000, 0x095c01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x095d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x095e03, 0x096102, 0x096304, 0x096703, 0x096a02, 0x000000, 0x000000,
+ 0x000000, 0x096c02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x096e01, 0x000000, 0x000000, 0x096f01, 0x097002, 0x097201, 0x000000, 0x097305,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x097801, 0x000000, 0x000000,
+ 0x000000, 0x097901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x097a01, 0x097b01,
+ 0x000000, 0x097c01, 0x000000, 0x000000, 0x097d04, 0x098102, 0x000000, 0x098305,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x098801, 0x098903,
+ 0x000000, 0x098c01, 0x000000, 0x000000, 0x098d0b, 0x099802, 0x000000, 0x099a03,
+ 0x000000, 0x000000, 0x099d02, 0x000000, 0x099f0d, 0x000000, 0x09ac01, 0x000000,
+ 0x09ad08, 0x09b505, 0x000000, 0x000000, 0x000000, 0x09ba02, 0x000000, 0x000000,
+ 0x09bc01, 0x000000, 0x000000, 0x09bd01, 0x000000, 0x09be12, 0x000000, 0x09d00a,
+ 0x09da01, 0x000000, 0x000000, 0x000000, 0x000000, 0x09db04, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x09df01, 0x09e001, 0x09e101, 0x000000,
+ 0x000000, 0x09e202, 0x000000, 0x09e401, 0x000000, 0x000000, 0x09e501, 0x09e601,
+ 0x000000, 0x09e701, 0x09e801, 0x000000, 0x09e901, 0x000000, 0x09ea01, 0x09eb05,
+ 0x000000, 0x000000, 0x000000, 0x09f001, 0x09f102, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x09f301, 0x000000, 0x000000, 0x09f401,
+ 0x000000, 0x09f505, 0x09fa02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x09fc03, 0x000000, 0x09ff01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0a000f, 0x000000,
+ 0x0a0f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0a1001, 0x0a1101, 0x000000, 0x000000, 0x000000, 0x0a1201,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0a1301,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0a1402, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x0a1601, 0x000000, 0x0a1704, 0x000000, 0x0a1b02, 0x0a1d01, 0x000000,
+ 0x000000, 0x000000, 0x0a1e02, 0x000000, 0x000000, 0x000000, 0x000000, 0x0a2001,
+ 0x0a2101, 0x000000, 0x0a2206, 0x000000, 0x0a2801, 0x0a2901, 0x000000, 0x000000,
+ 0x0a2a02, 0x000000, 0x0a2c01, 0x000000, 0x000000, 0x000000, 0x0a2d01, 0x0a2e04,
+ 0x0a3204, 0x000000, 0x0a3602, 0x000000, 0x000000, 0x000000, 0x0a3802, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0a3a01, 0x000000, 0x000000, 0x0a3b01,
+ 0x000000, 0x000000, 0x000000, 0x0a3c02, 0x000000, 0x0a3e02, 0x000000, 0x0a4003,
+ 0x000000, 0x000000, 0x0a4301, 0x0a4406, 0x000000, 0x000000, 0x0a4a01, 0x0a4b01,
+ 0x0a4c02, 0x000000, 0x000000, 0x0a4e03, 0x000000, 0x000000, 0x000000, 0x0a5101,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0a5201, 0x000000, 0x0a5305, 0x000000,
+ 0x0a5806, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0a5e01,
+ 0x0a5f01, 0x000000, 0x000000, 0x0a6001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x0a6101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0a6205,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0a6715, 0x0a7c02, 0x000000, 0x0a7e01,
+ 0x000000, 0x0a7f01, 0x000000, 0x000000, 0x0a8005, 0x000000, 0x000000, 0x0a8501,
+ 0x000000, 0x0a8603, 0x000000, 0x000000, 0x0a8903, 0x000000, 0x0a8c05, 0x0a9101,
+ 0x000000, 0x000000, 0x000000, 0x0a9202, 0x000000, 0x0a9401, 0x0a9501, 0x0a9609,
+ 0x000000, 0x000000, 0x000000, 0x0a9f0a, 0x0aa905, 0x0aae03, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0ab102, 0x0ab307, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0aba01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0abb01,
+ 0x000000, 0x000000, 0x0abc01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0abd02, 0x000000, 0x000000, 0x0abf02, 0x0ac104, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0ac504, 0x000000, 0x000000, 0x000000, 0x000000, 0x0ac901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0aca01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0acb03, 0x0ace01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0acf02, 0x000000, 0x000000, 0x0ad101, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0ad201, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0ad301,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0ad403, 0x0ad707, 0x000000,
+ 0x000000, 0x0ade01, 0x000000, 0x000000, 0x0adf05, 0x000000, 0x0ae401, 0x000000,
+ 0x0ae502, 0x000000, 0x000000, 0x000000, 0x0ae701, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0ae802,
+ 0x0aea01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0aeb01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0aec02, 0x0aee04,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0af203, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x0af501, 0x000000, 0x0af601, 0x0af709, 0x0b0002, 0x0b0202, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0b0401, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x0b0501, 0x0b0601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0b0704, 0x000000, 0x000000, 0x0b0b06, 0x000000, 0x0b1102,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0b1302, 0x000000,
+ 0x0b1501, 0x000000, 0x000000, 0x0b1602, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0b1801, 0x000000, 0x000000,
+ 0x000000, 0x0b1901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0b1a01,
+ 0x0b1b02, 0x000000, 0x000000, 0x000000, 0x000000, 0x0b1d01, 0x000000, 0x000000,
+ 0x0b1e02, 0x000000, 0x0b2004, 0x000000, 0x0b2404, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0b2801, 0x000000, 0x000000, 0x000000, 0x000000, 0x0b2901,
+ 0x000000, 0x0b2a01, 0x000000, 0x000000, 0x0b2b02, 0x000000, 0x0b2d06, 0x0b3307,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0b3a01, 0x000000, 0x0b3b01, 0x000000,
+ 0x000000, 0x0b3c01, 0x0b3d06, 0x0b4305, 0x0b4801, 0x0b4901, 0x000000, 0x000000,
+ 0x0b4a01, 0x000000, 0x000000, 0x0b4b0e, 0x000000, 0x000000, 0x000000, 0x0b5906,
+ 0x0b5f01, 0x000000, 0x0b6003, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x0b6312, 0x000000, 0x0b7501, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x0b7604, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0b7a01, 0x000000, 0x0b7b01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0b7c05, 0x000000, 0x000000, 0x000000, 0x0b8103, 0x000000,
+ 0x0b8401, 0x000000, 0x000000, 0x0b8504, 0x0b8901, 0x0b8a04, 0x000000, 0x000000,
+ 0x000000, 0x0b8e02, 0x0b9001, 0x000000, 0x000000, 0x0b9101, 0x000000, 0x0b9201,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0b9301, 0x0b9401,
+ 0x0b9501, 0x0b9602, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x0b9801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0b9905,
+ 0x0b9e07, 0x000000, 0x0ba501, 0x0ba601, 0x0ba705, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0bac01, 0x000000, 0x000000, 0x0bad01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0bae07, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0bb502, 0x000000,
+ 0x0bb701, 0x0bb801, 0x000000, 0x000000, 0x0bb901, 0x000000, 0x000000, 0x000000,
+ 0x0bba09, 0x000000, 0x000000, 0x0bc30a, 0x000000, 0x000000, 0x0bcd02, 0x000000,
+ 0x000000, 0x0bcf01, 0x000000, 0x000000, 0x0bd002, 0x0bd203, 0x000000, 0x000000,
+ 0x000000, 0x0bd504, 0x000000, 0x000000, 0x000000, 0x000000, 0x0bd901, 0x0bda01,
+ 0x000000, 0x000000, 0x0bdb03, 0x000000, 0x0bde0a, 0x000000, 0x0be801, 0x000000,
+ 0x000000, 0x0be901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0bea02, 0x000000, 0x0bec04, 0x000000, 0x000000, 0x000000, 0x000000, 0x0bf001,
+ 0x000000, 0x0bf105, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0bf60a, 0x000000, 0x000000, 0x0c0001, 0x0c0104, 0x0c0501,
+ 0x0c0601, 0x000000, 0x0c0706, 0x0c0d01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0c0e05, 0x000000, 0x0c1303, 0x000000,
+ 0x0c1604, 0x000000, 0x0c1a01, 0x000000, 0x000000, 0x000000, 0x0c1b01, 0x000000,
+ 0x0c1c01, 0x0c1d14, 0x000000, 0x0c3102, 0x000000, 0x000000, 0x000000, 0x0c3301,
+ 0x000000, 0x0c3407, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0c3b02, 0x0c3d02, 0x000000, 0x000000, 0x0c3f0b, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0c4a02, 0x000000, 0x000000, 0x0c4c01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0c4d01, 0x0c4e01, 0x0c4f06,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0c5502, 0x000000, 0x000000, 0x0c5701,
+ 0x000000, 0x000000, 0x0c5801, 0x000000, 0x000000, 0x0c5901, 0x000000, 0x0c5a03,
+ 0x0c5d02, 0x0c5f01, 0x000000, 0x000000, 0x0c6001, 0x0c6101, 0x000000, 0x000000,
+ 0x0c620b, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0c6d02, 0x000000, 0x0c6f04, 0x000000, 0x000000, 0x0c7306, 0x000000, 0x000000,
+ 0x0c790a, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0c8305,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0c8807, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0c8f01, 0x0c9002, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x0c9201, 0x000000, 0x000000, 0x0c9302, 0x0c9501, 0x000000, 0x0c9601,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0c9701, 0x000000, 0x0c9801, 0x0c9902,
+ 0x000000, 0x0c9b05, 0x0ca006, 0x000000, 0x0ca602, 0x0ca801, 0x0ca909, 0x000000,
+ 0x000000, 0x0cb201, 0x0cb301, 0x0cb402, 0x0cb605, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0cbb01, 0x000000, 0x000000,
+ 0x0cbc06, 0x000000, 0x000000, 0x000000, 0x0cc204, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0cc607, 0x000000, 0x000000,
+ 0x000000, 0x0ccd04, 0x000000, 0x0cd102, 0x000000, 0x000000, 0x000000, 0x0cd301,
+ 0x000000, 0x000000, 0x000000, 0x0cd401, 0x0cd501, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0cd605, 0x0cdb02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0cdd02, 0x0cdf03, 0x000000, 0x000000, 0x0ce201, 0x0ce301,
+ 0x0ce401, 0x000000, 0x0ce502, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0ce702, 0x0ce902, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0ceb03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0cee01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x0cef02, 0x0cf101, 0x0cf203, 0x000000, 0x0cf501,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0cf602, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0cf801, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0cf902, 0x000000, 0x000000, 0x0cfb01, 0x0cfc01, 0x000000, 0x000000, 0x0cfd02,
+ 0x000000, 0x000000, 0x0cff01, 0x0d0002, 0x0d0204, 0x000000, 0x000000, 0x0d0602,
+ 0x000000, 0x000000, 0x0d0801, 0x000000, 0x0d0905, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x0d0e04, 0x0d1201, 0x000000, 0x000000, 0x000000, 0x0d1303, 0x000000,
+ 0x000000, 0x0d1603, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0d1901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x0d1a0a, 0x000000, 0x000000, 0x0d2401, 0x0d2501,
+ 0x0d2601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0d2701,
+ 0x0d2801, 0x000000, 0x0d2903, 0x000000, 0x000000, 0x0d2c03, 0x000000, 0x000000,
+ 0x0d2f01, 0x000000, 0x000000, 0x0d3002, 0x000000, 0x0d3208, 0x0d3a03, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0d3d0c, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0d4901, 0x000000, 0x0d4a21, 0x0d6b01,
+ 0x0d6c02, 0x0d6e02, 0x000000, 0x000000, 0x0d7001, 0x000000, 0x000000, 0x000000,
+ 0x0d7107, 0x000000, 0x000000, 0x0d7801, 0x000000, 0x000000, 0x000000, 0x0d7901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0d7a01,
+ 0x000000, 0x000000, 0x0d7b01, 0x000000, 0x0d7c03, 0x0d7f01, 0x000000, 0x0d8001,
+ 0x000000, 0x000000, 0x0d8101, 0x000000, 0x0d8201, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0d8309, 0x000000,
+ 0x000000, 0x0d8c01, 0x0d8d05, 0x000000, 0x000000, 0x0d9205, 0x000000, 0x000000,
+ 0x000000, 0x0d9707, 0x0d9e02, 0x0da001, 0x000000, 0x0da101, 0x000000, 0x000000,
+ 0x0da208, 0x0daa01, 0x000000, 0x0dab01, 0x000000, 0x000000, 0x0dac01, 0x000000,
+ 0x000000, 0x000000, 0x0dad0c, 0x000000, 0x0db902, 0x000000, 0x000000, 0x000000,
+ 0x0dbb01, 0x0dbc01, 0x000000, 0x000000, 0x000000, 0x0dbd02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0dbf01, 0x0dc001, 0x0dc104, 0x000000, 0x000000, 0x0dc504,
+ 0x0dc901, 0x000000, 0x000000, 0x000000, 0x000000, 0x0dca05, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0dcf03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0dd202, 0x0dd401, 0x000000, 0x000000, 0x0dd502, 0x0dd703,
+ 0x000000, 0x0dda01, 0x0ddb02, 0x000000, 0x000000, 0x0ddd03, 0x000000, 0x0de001,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0de101,
+ 0x000000, 0x0de203, 0x000000, 0x0de501, 0x000000, 0x0de604, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0dea12, 0x000000,
+ 0x0dfc12, 0x000000, 0x000000, 0x000000, 0x0e0e01, 0x000000, 0x000000, 0x000000,
+ 0x0e0f01, 0x000000, 0x0e1001, 0x000000, 0x0e1101, 0x0e1203, 0x000000, 0x000000,
+ 0x0e1502, 0x0e1702, 0x000000, 0x0e1901, 0x0e1a01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e1b04, 0x0e1f03,
+ 0x0e2205, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e2704, 0x0e2b01,
+ 0x000000, 0x0e2c05, 0x0e3101, 0x0e3201, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0e3301, 0x000000, 0x0e3401, 0x000000, 0x000000, 0x0e350d,
+ 0x0e4201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e4301,
+ 0x0e4403, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e4701, 0x0e4801, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0e4901, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x0e4a02, 0x000000, 0x0e4c02, 0x0e4e01, 0x0e4f01, 0x000000, 0x0e501b,
+ 0x000000, 0x0e6b02, 0x000000, 0x000000, 0x000000, 0x0e6d02, 0x0e6f02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x0e7102, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x0e7301, 0x000000, 0x000000, 0x0e7407, 0x000000,
+ 0x000000, 0x000000, 0x0e7b01, 0x0e7c02, 0x000000, 0x000000, 0x000000, 0x0e7e01,
+ 0x0e7f0b, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e8a01, 0x000000,
+ 0x0e8b01, 0x0e8c01, 0x000000, 0x000000, 0x0e8d02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x0e8f01, 0x0e9005, 0x000000, 0x0e9501, 0x0e9602,
+ 0x0e9806, 0x000000, 0x000000, 0x000000, 0x0e9e02, 0x000000, 0x0ea001, 0x000000,
+ 0x000000, 0x0ea101, 0x000000, 0x000000, 0x0ea201, 0x0ea309, 0x000000, 0x0eac02,
+ 0x000000, 0x0eae07, 0x0eb501, 0x0eb601, 0x000000, 0x0eb701, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0eb802, 0x000000, 0x000000, 0x0eba03, 0x000000, 0x0ebd01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0ebe01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0ebf01, 0x000000, 0x0ec009,
+ 0x0ec902, 0x000000, 0x0ecb01, 0x0ecc02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0ece14, 0x000000, 0x0ee203,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0ee501, 0x0ee601, 0x0ee704,
+ 0x0eeb01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0eec04, 0x000000, 0x000000, 0x0ef00a, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0efa0d, 0x000000, 0x000000, 0x0f0701, 0x0f0801, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x0f0901, 0x0f0a02, 0x0f0c06, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0f1201, 0x000000, 0x0f1302, 0x0f1501, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x0f160a, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0f2001, 0x000000, 0x0f2101, 0x000000, 0x0f220b, 0x0f2d01,
+ 0x000000, 0x0f2e05, 0x000000, 0x000000, 0x000000, 0x000000, 0x0f3315, 0x0f4801,
+ 0x000000, 0x0f490b, 0x000000, 0x000000, 0x000000, 0x0f5406, 0x0f5a03, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x0f5d07, 0x0f6401, 0x0f6501, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x0f6601, 0x000000, 0x000000, 0x000000, 0x0f6701, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0f6802, 0x000000, 0x0f6a09, 0x000000,
+ 0x000000, 0x000000, 0x0f7301, 0x0f7401, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0f7501, 0x000000, 0x0f7606,
+ 0x0f7c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x0f7d01, 0x000000, 0x000000,
+ 0x000000, 0x0f7e01, 0x000000, 0x000000, 0x000000, 0x0f7f06, 0x0f8501, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x0f8602, 0x0f8801, 0x0f8902, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x0f8b05, 0x000000, 0x0f9001, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0f9119, 0x0faa06,
+ 0x000000, 0x000000, 0x0fb001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0fb101, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x0fb204, 0x000000, 0x0fb604, 0x000000, 0x000000,
+ 0x000000, 0x0fba01, 0x0fbb03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x0fbe03, 0x0fc101, 0x000000, 0x000000, 0x0fc202,
+ 0x0fc402, 0x0fc601, 0x0fc713, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0fda01, 0x000000, 0x0fdb01, 0x0fdc01, 0x000000, 0x0fdd01, 0x0fde03, 0x0fe106,
+ 0x000000, 0x000000, 0x0fe710, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x0ff703, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0ffa03, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x0ffd01, 0x0ffe01, 0x000000, 0x000000, 0x0fff02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x100101, 0x100202, 0x000000,
+ 0x000000, 0x000000, 0x100403, 0x000000, 0x100701, 0x000000, 0x000000, 0x000000,
+ 0x100803, 0x100b05, 0x000000, 0x101002, 0x000000, 0x000000, 0x101201, 0x10130a,
+ 0x000000, 0x101d01, 0x000000, 0x000000, 0x101e01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x101f04, 0x102301, 0x102401, 0x000000,
+ 0x102503, 0x000000, 0x000000, 0x000000, 0x102804, 0x000000, 0x000000, 0x102c03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x102f02, 0x103101, 0x103201, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1033a3, 0x000000, 0x000000, 0x10d603, 0x000000,
+ 0x000000, 0x000000, 0x10d90f, 0x10e802, 0x000000, 0x10ea01, 0x10eb01, 0x000000,
+ 0x10ec01, 0x000000, 0x10ed01, 0x000000, 0x000000, 0x000000, 0x10ee01, 0x000000,
+ 0x10ef01, 0x000000, 0x000000, 0x000000, 0x10f005, 0x000000, 0x000000, 0x000000,
+ 0x10f503, 0x10f801, 0x10f904, 0x10fd01, 0x000000, 0x10fe01, 0x10ff02, 0x000000,
+ 0x110101, 0x110209, 0x000000, 0x000000, 0x110b05, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x111004, 0x000000, 0x000000, 0x000000, 0x111401, 0x000000, 0x111503,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x111801, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x111902, 0x000000, 0x000000, 0x000000, 0x111b01, 0x000000, 0x000000,
+ 0x000000, 0x111c01, 0x111d02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x111f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x112001,
+ 0x000000, 0x000000, 0x000000, 0x112105, 0x000000, 0x000000, 0x000000, 0x112607,
+ 0x112d09, 0x000000, 0x000000, 0x000000, 0x000000, 0x113602, 0x113801, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x113901, 0x000000, 0x000000, 0x113a03, 0x000000,
+ 0x113d01, 0x113e03, 0x114109, 0x000000, 0x114a01, 0x114b02, 0x114d01, 0x000000,
+ 0x114e11, 0x000000, 0x115f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x116002, 0x000000, 0x000000, 0x000000, 0x116201, 0x116301, 0x000000, 0x116401,
+ 0x116502, 0x000000, 0x116703, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x116a04, 0x000000, 0x116e03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x117101, 0x000000, 0x117202, 0x000000, 0x117401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x117501, 0x117602, 0x000000, 0x117802,
+ 0x000000, 0x000000, 0x117a02, 0x000000, 0x000000, 0x000000, 0x000000, 0x117c01,
+ 0x117d01, 0x000000, 0x000000, 0x000000, 0x117e02, 0x118001, 0x000000, 0x118102,
+ 0x000000, 0x118302, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x118502, 0x000000, 0x000000, 0x118709, 0x000000, 0x000000, 0x11900b,
+ 0x000000, 0x119b02, 0x000000, 0x000000, 0x119d01, 0x119e09, 0x000000, 0x11a703,
+ 0x11aa01, 0x000000, 0x11ab01, 0x000000, 0x11ac02, 0x000000, 0x11ae01, 0x000000,
+ 0x000000, 0x11af02, 0x000000, 0x000000, 0x000000, 0x000000, 0x11b101, 0x000000,
+ 0x11b201, 0x000000, 0x000000, 0x11b301, 0x000000, 0x000000, 0x000000, 0x11b402,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x11b601, 0x000000, 0x000000,
+ 0x000000, 0x11b705, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x11bc02,
+ 0x11be01, 0x11bf01, 0x11c002, 0x11c201, 0x000000, 0x11c302, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x11c501, 0x11c602, 0x000000, 0x11c809, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x11d109, 0x000000, 0x000000, 0x11da03, 0x000000, 0x000000,
+ 0x000000, 0x11dd01, 0x000000, 0x000000, 0x000000, 0x11de01, 0x000000, 0x11df01,
+ 0x000000, 0x11e004, 0x000000, 0x000000, 0x000000, 0x11e401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x11e504, 0x000000, 0x000000, 0x11e902, 0x000000,
+ 0x000000, 0x000000, 0x11eb09, 0x000000, 0x000000, 0x11f401, 0x000000, 0x11f512,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x120701, 0x120801, 0x000000, 0x120901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x120a01, 0x000000, 0x120b01, 0x000000,
+ 0x000000, 0x120c03, 0x000000, 0x120f01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x121020, 0x000000, 0x000000, 0x000000, 0x000000, 0x123002, 0x000000,
+ 0x123208, 0x000000, 0x123a01, 0x000000, 0x000000, 0x000000, 0x123b02, 0x123d02,
+ 0x000000, 0x123f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x124003,
+ 0x12430b, 0x000000, 0x000000, 0x000000, 0x000000, 0x124e0a, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x125802, 0x000000, 0x000000, 0x000000, 0x000000, 0x125a02,
+ 0x000000, 0x125c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x125d04, 0x000000,
+ 0x000000, 0x126107, 0x000000, 0x000000, 0x126801, 0x000000, 0x000000, 0x000000,
+ 0x126901, 0x126a01, 0x126b01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x126c03,
+ 0x000000, 0x000000, 0x126f01, 0x000000, 0x127008, 0x127806, 0x127e02, 0x000000,
+ 0x000000, 0x000000, 0x128002, 0x000000, 0x000000, 0x000000, 0x128201, 0x000000,
+ 0x000000, 0x000000, 0x128301, 0x000000, 0x000000, 0x000000, 0x128401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x128503, 0x000000, 0x128801, 0x128901,
+ 0x128a01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x128b01, 0x000000, 0x000000, 0x000000, 0x128c02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x128e23, 0x12b101, 0x000000, 0x12b201, 0x000000,
+ 0x12b308, 0x12bb01, 0x000000, 0x000000, 0x12bc01, 0x12bd01, 0x000000, 0x12be07,
+ 0x12c501, 0x12c602, 0x000000, 0x000000, 0x000000, 0x000000, 0x12c801, 0x12c901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x12ca01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x12cb01, 0x000000, 0x12cc02, 0x000000,
+ 0x000000, 0x12ce06, 0x000000, 0x12d401, 0x12d501, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x12d601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x12d702, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x12d902, 0x000000, 0x000000, 0x000000, 0x12db01, 0x000000, 0x12dc0e,
+ 0x000000, 0x000000, 0x000000, 0x12ea04, 0x000000, 0x000000, 0x12ee06, 0x000000,
+ 0x12f402, 0x12f603, 0x12f901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x12fa05, 0x000000, 0x12ff0f, 0x000000, 0x000000, 0x130e01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x130f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x131001,
+ 0x000000, 0x131101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x131201, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x131302, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x131501, 0x131601,
+ 0x131706, 0x131d02, 0x131f06, 0x000000, 0x132503, 0x000000, 0x000000, 0x13280a,
+ 0x000000, 0x000000, 0x133201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x133301, 0x133402, 0x133602, 0x133805, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x133d01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x133e02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x134001, 0x000000, 0x134101, 0x134207, 0x000000, 0x13490e, 0x000000,
+ 0x135701, 0x000000, 0x135804, 0x135c03, 0x135f04, 0x136337, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x139a01, 0x139b02, 0x139d01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x139e01, 0x000000, 0x000000,
+ 0x000000, 0x139f01, 0x000000, 0x000000, 0x000000, 0x13a003, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x13a301, 0x000000, 0x000000, 0x000000, 0x000000, 0x13a401,
+ 0x13a501, 0x13a602, 0x000000, 0x13a801, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x13a901, 0x13aa01, 0x000000,
+ 0x13ab01, 0x000000, 0x000000, 0x13ac01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x13ad01, 0x000000, 0x000000, 0x13ae02, 0x000000, 0x000000, 0x000000, 0x13b001,
+ 0x13b102, 0x000000, 0x000000, 0x000000, 0x000000, 0x13b305, 0x13b805, 0x13bd01,
+ 0x000000, 0x13be02, 0x000000, 0x13c003, 0x000000, 0x000000, 0x000000, 0x13c303,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x13c601, 0x000000, 0x13c701,
+ 0x13c802, 0x000000, 0x13ca01, 0x000000, 0x000000, 0x000000, 0x13cb08, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x13d301, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x13d401, 0x000000, 0x000000, 0x13d502, 0x13d703,
+ 0x000000, 0x000000, 0x13da02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x13dc0d, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x13e901, 0x13ea02, 0x13ec04, 0x13f002, 0x13f201, 0x000000,
+ 0x13f301, 0x000000, 0x13f401, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x13f507, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x13fc01, 0x13fd03, 0x000000, 0x140001, 0x000000, 0x140108, 0x000000, 0x000000,
+ 0x140907, 0x000000, 0x000000, 0x000000, 0x14100b, 0x000000, 0x000000, 0x000000,
+ 0x141b03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x141e03, 0x142101, 0x000000, 0x000000, 0x000000, 0x142201, 0x000000, 0x000000,
+ 0x142303, 0x142602, 0x142801, 0x000000, 0x000000, 0x000000, 0x000000, 0x142901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x142a01, 0x142b02, 0x000000, 0x142d01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x142e05, 0x000000, 0x000000, 0x000000, 0x143306, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x143901, 0x143a0b, 0x000000,
+ 0x000000, 0x144501, 0x000000, 0x000000, 0x144601, 0x144702, 0x144904, 0x000000,
+ 0x000000, 0x144d03, 0x145002, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x145203, 0x000000, 0x145503, 0x145804, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x145c01, 0x000000, 0x145d02, 0x145f01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x146001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x146101, 0x14620c, 0x000000, 0x146e0d,
+ 0x000000, 0x000000, 0x147b05, 0x148005, 0x000000, 0x148501, 0x000000, 0x148602,
+ 0x000000, 0x000000, 0x148801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x148902, 0x000000, 0x148b0a, 0x149507, 0x000000, 0x149c03, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x149f01, 0x14a001, 0x14a101, 0x14a201,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x14a301, 0x000000, 0x14a402,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x14a601, 0x14a701, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x14a802, 0x14aa03, 0x000000, 0x000000, 0x14ad01, 0x000000, 0x000000,
+ 0x14ae09, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x14b702, 0x000000, 0x000000, 0x14b901, 0x14ba01, 0x14bb01, 0x000000, 0x14bc01,
+ 0x000000, 0x000000, 0x14bd01, 0x000000, 0x000000, 0x000000, 0x000000, 0x14be01,
+ 0x14bf01, 0x000000, 0x14c003, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x14c301, 0x000000, 0x000000, 0x000000, 0x14c408, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x14cc01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x14cd01, 0x000000, 0x14ce02,
+ 0x14d003, 0x000000, 0x14d306, 0x000000, 0x000000, 0x000000, 0x000000, 0x14d902,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x14db01, 0x000000, 0x000000, 0x14dc01, 0x000000, 0x000000, 0x000000, 0x14dd01,
+ 0x000000, 0x14de01, 0x14df01, 0x000000, 0x000000, 0x14e002, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x14e201, 0x14e301, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x14e401,
+ 0x000000, 0x14e504, 0x000000, 0x14e904, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x14ed01, 0x000000, 0x000000, 0x14ee02, 0x000000, 0x000000, 0x14f004, 0x000000,
+ 0x000000, 0x14f402, 0x000000, 0x14f606, 0x000000, 0x14fc06, 0x000000, 0x000000,
+ 0x000000, 0x150201, 0x000000, 0x000000, 0x000000, 0x150302, 0x000000, 0x000000,
+ 0x000000, 0x150502, 0x000000, 0x150701, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x150802, 0x000000, 0x000000, 0x000000, 0x000000, 0x150a01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x150b02, 0x150d03,
+ 0x151003, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x151301, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x151405, 0x151901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x151a01, 0x000000, 0x000000, 0x000000, 0x151b01, 0x151c01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x151d04, 0x000000, 0x000000, 0x000000, 0x000000, 0x152101,
+ 0x000000, 0x000000, 0x152204, 0x000000, 0x152601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x152712, 0x153904, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x153d02, 0x000000,
+ 0x153f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x154001,
+ 0x154101, 0x000000, 0x000000, 0x000000, 0x154201, 0x154303, 0x154601, 0x000000,
+ 0x000000, 0x154701, 0x154802, 0x154a05, 0x000000, 0x000000, 0x000000, 0x154f01,
+ 0x155002, 0x000000, 0x000000, 0x000000, 0x155202, 0x000000, 0x000000, 0x000000,
+ 0x155403, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x155702,
+ 0x000000, 0x155901, 0x000000, 0x000000, 0x155a03, 0x000000, 0x155d03, 0x000000,
+ 0x000000, 0x156001, 0x000000, 0x000000, 0x156102, 0x000000, 0x000000, 0x156301,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x156407, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x156b01, 0x000000, 0x000000, 0x156c01, 0x156d02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x156f01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x157012, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x158203, 0x000000, 0x000000, 0x000000, 0x158501,
+ 0x000000, 0x158601, 0x000000, 0x000000, 0x158701, 0x000000, 0x000000, 0x000000,
+ 0x158802, 0x000000, 0x158a01, 0x000000, 0x000000, 0x158b01, 0x158c01, 0x000000,
+ 0x158d04, 0x000000, 0x000000, 0x15910c, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x159d01, 0x159e01, 0x000000, 0x000000, 0x159f02, 0x000000, 0x15a105,
+ 0x000000, 0x000000, 0x15a601, 0x000000, 0x15a701, 0x000000, 0x000000, 0x15a802,
+ 0x000000, 0x15aa0a, 0x000000, 0x15b401, 0x000000, 0x000000, 0x15b502, 0x000000,
+ 0x15b707, 0x15be01, 0x000000, 0x000000, 0x000000, 0x000000, 0x15bf03, 0x000000,
+ 0x000000, 0x000000, 0x15c202, 0x15c401, 0x000000, 0x15c501, 0x000000, 0x15c602,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x15c815, 0x000000, 0x000000, 0x15dd02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x15df09, 0x15e801, 0x000000, 0x000000, 0x000000, 0x000000, 0x15e902,
+ 0x000000, 0x000000, 0x15eb0c, 0x000000, 0x15f701, 0x000000, 0x15f804, 0x000000,
+ 0x000000, 0x000000, 0x15fc0c, 0x000000, 0x160801, 0x000000, 0x160901, 0x160a08,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x161201, 0x000000,
+ 0x000000, 0x000000, 0x161301, 0x161408, 0x000000, 0x161c01, 0x161d10, 0x162d01,
+ 0x000000, 0x162e06, 0x000000, 0x000000, 0x000000, 0x000000, 0x163401, 0x163504,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x163902, 0x163b0b, 0x000000,
+ 0x164603, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x164901, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x164a01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x164b01, 0x000000, 0x000000, 0x164c01, 0x000000, 0x164d02,
+ 0x000000, 0x000000, 0x000000, 0x164f15, 0x000000, 0x166401, 0x000000, 0x166501,
+ 0x166609, 0x000000, 0x000000, 0x166f07, 0x167601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x167702, 0x000000, 0x167903, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x167c01, 0x167d02, 0x000000, 0x167f01, 0x168002, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x168201, 0x168301, 0x168401, 0x000000, 0x168501,
+ 0x000000, 0x168601, 0x168702, 0x000000, 0x168906, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x168f04, 0x169302, 0x000000, 0x000000, 0x000000, 0x000000, 0x169502,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x169704, 0x000000, 0x000000, 0x169b09,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x16a402, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x16a602, 0x000000, 0x000000, 0x16a80a, 0x000000,
+ 0x000000, 0x000000, 0x16b205, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x16b70b, 0x000000, 0x000000, 0x16c203, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x16c501, 0x16c601, 0x000000,
+ 0x000000, 0x16c701, 0x000000, 0x000000, 0x16c802, 0x000000, 0x16ca09, 0x16d301,
+ 0x16d401, 0x000000, 0x16d504, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x16d902, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x16db03, 0x000000,
+ 0x16de02, 0x16e002, 0x000000, 0x000000, 0x16e202, 0x000000, 0x16e402, 0x000000,
+ 0x000000, 0x16e602, 0x000000, 0x16e808, 0x000000, 0x000000, 0x000000, 0x16f002,
+ 0x16f202, 0x000000, 0x000000, 0x000000, 0x16f402, 0x000000, 0x16f609, 0x000000,
+ 0x000000, 0x000000, 0x16ff01, 0x000000, 0x000000, 0x170002, 0x170203, 0x000000,
+ 0x170501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x170602,
+ 0x000000, 0x17080a, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x171204, 0x000000, 0x171601, 0x000000, 0x000000, 0x171701, 0x000000, 0x171809,
+ 0x172102, 0x172303, 0x000000, 0x172601, 0x172701, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x172801, 0x172903, 0x000000, 0x172c10, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x173c02, 0x000000, 0x000000, 0x173e02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x174001, 0x000000, 0x000000,
+ 0x174105, 0x000000, 0x174601, 0x174701, 0x174803, 0x000000, 0x174b0c, 0x000000,
+ 0x000000, 0x000000, 0x175702, 0x175909, 0x176203, 0x176501, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x176601, 0x000000, 0x176702, 0x000000, 0x000000,
+ 0x000000, 0x176901, 0x176a01, 0x000000, 0x000000, 0x176b05, 0x000000, 0x000000,
+ 0x177002, 0x177204, 0x000000, 0x000000, 0x000000, 0x000000, 0x177601, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x177701, 0x000000, 0x000000, 0x177801,
+ 0x000000, 0x177901, 0x000000, 0x000000, 0x000000, 0x177a04, 0x177e02, 0x000000,
+ 0x178002, 0x000000, 0x178204, 0x000000, 0x178602, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x178801, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x178904,
+ 0x000000, 0x178d02, 0x000000, 0x000000, 0x178f01, 0x000000, 0x000000, 0x000000,
+ 0x179005, 0x179502, 0x179701, 0x000000, 0x000000, 0x000000, 0x179804, 0x179c01,
+ 0x000000, 0x000000, 0x179d07, 0x000000, 0x000000, 0x17a401, 0x000000, 0x000000,
+ 0x17a501, 0x000000, 0x17a602, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x17a806, 0x000000, 0x17ae01, 0x000000, 0x000000, 0x000000, 0x17af02,
+ 0x000000, 0x17b105, 0x17b601, 0x17b703, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x17ba01, 0x17bb01, 0x000000, 0x000000, 0x17bc01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x17bd01, 0x17be01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x17bf03, 0x000000, 0x17c201, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x17c304, 0x000000, 0x000000, 0x17c701, 0x000000, 0x17c804,
+ 0x000000, 0x000000, 0x17cc0c, 0x17d802, 0x000000, 0x000000, 0x17da03, 0x000000,
+ 0x17dd01, 0x000000, 0x000000, 0x000000, 0x17de0e, 0x17ec01, 0x17ed03, 0x000000,
+ 0x000000, 0x000000, 0x17f001, 0x000000, 0x000000, 0x000000, 0x000000, 0x17f101,
+ 0x000000, 0x000000, 0x000000, 0x17f203, 0x17f508, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x17fd02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x17ff02, 0x000000, 0x000000, 0x180105, 0x180602, 0x180803, 0x000000,
+ 0x180b07, 0x000000, 0x181211, 0x000000, 0x182301, 0x182401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x182502, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x18270b, 0x18320b, 0x000000, 0x000000, 0x183d02, 0x000000, 0x183f04, 0x000000,
+ 0x000000, 0x184301, 0x184401, 0x184501, 0x000000, 0x18460d, 0x000000, 0x000000,
+ 0x000000, 0x185306, 0x000000, 0x000000, 0x000000, 0x185901, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x185a05, 0x185f02, 0x000000, 0x186101,
+ 0x186201, 0x186306, 0x000000, 0x186905, 0x186e02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x187001, 0x000000, 0x000000, 0x000000, 0x187114, 0x188506,
+ 0x000000, 0x188b01, 0x000000, 0x000000, 0x000000, 0x188c01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x188d22, 0x000000,
+ 0x000000, 0x000000, 0x18af02, 0x000000, 0x000000, 0x18b10a, 0x18bb02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x18bd01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x18be02,
+ 0x000000, 0x000000, 0x18c001, 0x000000, 0x18c101, 0x000000, 0x18c201, 0x18c310,
+ 0x000000, 0x000000, 0x18d301, 0x18d40c, 0x18e001, 0x000000, 0x000000, 0x000000,
+ 0x18e101, 0x18e201, 0x18e301, 0x000000, 0x18e403, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x18e706, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x18ed01, 0x18ee01, 0x18ef02, 0x000000, 0x000000, 0x000000, 0x000000, 0x18f103,
+ 0x000000, 0x18f408, 0x18fc03, 0x18ff0b, 0x190a03, 0x000000, 0x190d01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x190e01, 0x190f01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x191001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x191102, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x191301, 0x000000, 0x191402, 0x191602, 0x191804,
+ 0x000000, 0x191c01, 0x191d03, 0x000000, 0x192005, 0x192501, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x192601, 0x192701, 0x000000, 0x000000, 0x192803, 0x000000, 0x000000, 0x192b02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x192d01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x192e01, 0x192f02, 0x000000, 0x000000, 0x193104, 0x000000, 0x000000,
+ 0x000000, 0x193501, 0x000000, 0x000000, 0x193606, 0x000000, 0x193c01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x193d01, 0x000000, 0x000000,
+ 0x193e01, 0x000000, 0x193f01, 0x000000, 0x194002, 0x194201, 0x000000, 0x000000,
+ 0x000000, 0x19430b, 0x000000, 0x194e01, 0x194f01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x195004, 0x000000, 0x000000, 0x195402,
+ 0x195606, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x195c01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x195d01, 0x195e01, 0x195f02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x196109, 0x000000, 0x000000, 0x000000, 0x196a01, 0x196b03, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x196e01, 0x196f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x197001, 0x000000,
+ 0x000000, 0x000000, 0x197102, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x197301, 0x000000, 0x000000, 0x197401, 0x197501, 0x000000, 0x000000, 0x000000,
+ 0x197601, 0x197701, 0x197802, 0x000000, 0x197a01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x197b04, 0x197f02, 0x000000, 0x198102, 0x000000, 0x000000, 0x19832e,
+ 0x000000, 0x19b105, 0x000000, 0x000000, 0x000000, 0x19b601, 0x000000, 0x19b703,
+ 0x000000, 0x000000, 0x000000, 0x19ba03, 0x000000, 0x000000, 0x000000, 0x19bd01,
+ 0x000000, 0x19be01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x19bf01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x19c001, 0x19c105, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x19c601, 0x19c701, 0x000000, 0x000000, 0x19c801,
+ 0x19c902, 0x19cb04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x19cf02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x19d101, 0x19d204, 0x000000, 0x19d601, 0x000000, 0x19d702, 0x19d902,
+ 0x19db11, 0x000000, 0x19ec02, 0x000000, 0x000000, 0x000000, 0x000000, 0x19ee02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x19f001, 0x000000, 0x19f105, 0x000000,
+ 0x000000, 0x000000, 0x19f60d, 0x000000, 0x1a0303, 0x1a0601, 0x000000, 0x1a0702,
+ 0x000000, 0x1a0903, 0x1a0c06, 0x000000, 0x1a1201, 0x1a1301, 0x1a1401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x1a1501, 0x000000, 0x000000, 0x000000, 0x1a1601, 0x000000, 0x1a170d, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1a240b, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x1a2f01, 0x1a3001, 0x1a3105, 0x000000, 0x000000, 0x1a3602, 0x1a3803, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x1a3b01, 0x000000, 0x000000, 0x000000,
+ 0x1a3c02, 0x000000, 0x1a3e05, 0x1a4301, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x1a4401, 0x1a4502, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1a4701, 0x1a4806, 0x1a4e02, 0x000000, 0x1a5005,
+ 0x1a5501, 0x000000, 0x000000, 0x1a5607, 0x1a5d01, 0x000000, 0x1a5e01, 0x000000,
+ 0x000000, 0x1a5f01, 0x1a6001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x1a6102, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1a6307,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1a6a01, 0x000000,
+ 0x000000, 0x1a6b01, 0x1a6c05, 0x000000, 0x000000, 0x000000, 0x1a7106, 0x000000,
+ 0x000000, 0x000000, 0x1a7704, 0x1a7b01, 0x000000, 0x1a7c02, 0x000000, 0x000000,
+ 0x000000, 0x1a7e01, 0x000000, 0x1a7f01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1a8007,
+ 0x000000, 0x000000, 0x000000, 0x1a8701, 0x000000, 0x000000, 0x000000, 0x1a8809,
+ 0x000000, 0x000000, 0x1a9101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x1a9201, 0x000000, 0x000000, 0x000000, 0x1a9308, 0x000000, 0x000000, 0x000000,
+ 0x1a9b0b, 0x000000, 0x000000, 0x1aa601, 0x000000, 0x1aa70f, 0x1ab60d, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1ac302, 0x000000, 0x000000, 0x1ac502, 0x000000,
+ 0x1ac701, 0x1ac80a, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1ad201, 0x000000, 0x1ad302, 0x1ad502, 0x1ad701,
+ 0x000000, 0x000000, 0x000000, 0x1ad801, 0x1ad901, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1ada02, 0x000000, 0x000000, 0x1adc01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1add01, 0x000000, 0x000000,
+ 0x000000, 0x1ade01, 0x000000, 0x1adf07, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1ae601, 0x000000,
+ 0x1ae703, 0x1aea02, 0x1aec02, 0x000000, 0x1aee04, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1af202, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1af409, 0x000000, 0x000000, 0x000000, 0x000000, 0x1afd01,
+ 0x000000, 0x1afe01, 0x000000, 0x000000, 0x1aff01, 0x000000, 0x000000, 0x1b0001,
+ 0x1b0101, 0x000000, 0x000000, 0x000000, 0x1b0201, 0x000000, 0x000000, 0x000000,
+ 0x1b0303, 0x1b0605, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x1b0b01, 0x000000, 0x1b0c01, 0x000000, 0x000000, 0x000000, 0x1b0d01, 0x1b0e01,
+ 0x1b0f01, 0x000000, 0x1b1001, 0x000000, 0x1b1101, 0x000000, 0x000000, 0x1b1204,
+ 0x1b1601, 0x000000, 0x1b1703, 0x000000, 0x000000, 0x000000, 0x000000, 0x1b1a01,
+ 0x1b1b01, 0x1b1c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x1b1d06, 0x1b2301, 0x1b2403, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1b2702, 0x1b2909, 0x1b3202, 0x1b3401, 0x1b3501,
+ 0x000000, 0x000000, 0x1b3601, 0x1b3701, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1b3801, 0x000000, 0x000000,
+ 0x1b3909, 0x1b4201, 0x000000, 0x000000, 0x1b4303, 0x000000, 0x000000, 0x1b4601,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1b4704, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1b4b02, 0x1b4d02, 0x1b4f03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1b5211,
+ 0x000000, 0x000000, 0x000000, 0x1b6307, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1b6a02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1b6c01, 0x000000,
+ 0x000000, 0x1b6d01, 0x1b6e05, 0x1b7302, 0x000000, 0x1b7503, 0x1b7805, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1b7d01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x1b7e07, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1b8501, 0x000000,
+ 0x1b8601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x1b8704, 0x1b8b02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1b8d06, 0x000000, 0x1b9301, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1b9404, 0x000000, 0x1b9802, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x1b9a02, 0x1b9c01, 0x000000, 0x1b9d01, 0x1b9e01, 0x1b9f06, 0x000000,
+ 0x000000, 0x1ba502, 0x000000, 0x1ba701, 0x1ba802, 0x000000, 0x1baa01, 0x000000,
+ 0x000000, 0x000000, 0x1bab03, 0x1bae01, 0x1baf02, 0x000000, 0x000000, 0x1bb103,
+ 0x000000, 0x1bb40e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x1bc201, 0x000000, 0x000000, 0x1bc302, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1bc504, 0x000000, 0x1bc901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1bca01,
+ 0x000000, 0x1bcb01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1bcc01,
+ 0x000000, 0x000000, 0x1bcd06, 0x000000, 0x000000, 0x1bd301, 0x000000, 0x1bd401,
+ 0x000000, 0x000000, 0x1bd502, 0x000000, 0x000000, 0x000000, 0x000000, 0x1bd701,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1bd801, 0x000000, 0x1bd902,
+ 0x000000, 0x1bdb01, 0x1bdc01, 0x000000, 0x000000, 0x1bdd05, 0x000000, 0x000000,
+ 0x1be209, 0x000000, 0x1beb02, 0x1bed02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x1bef01, 0x000000, 0x000000, 0x000000, 0x1bf003, 0x1bf301, 0x1bf401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x1bf505, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1bfa02,
+ 0x1bfc04, 0x1c0002, 0x000000, 0x1c0201, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1c0301, 0x000000, 0x1c0408,
+ 0x1c0c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1c0d03, 0x1c1002,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x1c120e, 0x000000, 0x1c2003, 0x1c2302,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1c2501, 0x1c2604, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1c2a05, 0x1c2f02, 0x000000, 0x1c3108, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1c3902, 0x1c3b02, 0x1c3d02, 0x1c3f01, 0x1c4002,
+ 0x1c4202, 0x1c4401, 0x000000, 0x000000, 0x000000, 0x000000, 0x1c4503, 0x1c4801,
+ 0x000000, 0x1c4905, 0x000000, 0x000000, 0x1c4e13, 0x000000, 0x000000, 0x000000,
+ 0x1c6117, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x1c7801, 0x000000, 0x000000, 0x1c7901, 0x1c7a01, 0x000000, 0x000000, 0x1c7b05,
+ 0x000000, 0x1c8003, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x1c8301, 0x000000, 0x1c8401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1c8503, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x1c8802, 0x000000, 0x000000, 0x000000, 0x000000, 0x1c8a01, 0x000000, 0x1c8b02,
+ 0x000000, 0x1c8d19, 0x000000, 0x1ca602, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1ca806, 0x000000, 0x1cae04, 0x1cb201, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x1cb301, 0x000000, 0x1cb401, 0x1cb502,
+ 0x1cb702, 0x1cb903, 0x000000, 0x000000, 0x000000, 0x000000, 0x1cbc01, 0x000000,
+ 0x1cbd08, 0x1cc501, 0x000000, 0x1cc601, 0x1cc705, 0x000000, 0x000000, 0x1ccc01,
+ 0x000000, 0x000000, 0x000000, 0x1ccd02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1ccf01, 0x000000, 0x000000, 0x000000, 0x1cd001,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1cd101, 0x000000, 0x1cd201,
+ 0x1cd303, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1cd603, 0x000000,
+ 0x000000, 0x1cd90c, 0x000000, 0x000000, 0x000000, 0x000000, 0x1ce501, 0x000000,
+ 0x000000, 0x000000, 0x1ce601, 0x1ce701, 0x000000, 0x1ce801, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1ce903, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1cec01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x1ced0f, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1cfc06, 0x1d0202, 0x1d0406, 0x000000, 0x000000, 0x000000,
+ 0x1d0a01, 0x000000, 0x000000, 0x1d0b01, 0x000000, 0x000000, 0x000000, 0x1d0c01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1d0d05, 0x1d1203,
+ 0x000000, 0x1d1502, 0x000000, 0x1d1708, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1d1f01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x1d2004, 0x000000, 0x000000, 0x1d2401,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1d2501, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x1d2603, 0x1d2906, 0x1d2f04, 0x000000,
+ 0x1d330e, 0x000000, 0x000000, 0x1d4101, 0x000000, 0x1d4202, 0x000000, 0x000000,
+ 0x1d4405, 0x000000, 0x000000, 0x000000, 0x1d4901, 0x1d4a09, 0x000000, 0x000000,
+ 0x1d5304, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1d5701, 0x000000,
+ 0x000000, 0x000000, 0x1d5801, 0x1d5902, 0x1d5b02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x1d5d01, 0x000000, 0x000000, 0x1d5e02, 0x1d6001, 0x1d6104, 0x000000,
+ 0x000000, 0x000000, 0x1d6503, 0x000000, 0x000000, 0x1d6802, 0x000000, 0x000000,
+ 0x1d6a05, 0x000000, 0x1d6f02, 0x000000, 0x1d7101, 0x000000, 0x1d7202, 0x000000,
+ 0x000000, 0x1d7401, 0x1d7504, 0x1d7901, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x1d7a01, 0x000000, 0x1d7b02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x1d7d02, 0x000000, 0x000000, 0x1d7f01, 0x1d8001, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x1d8109, 0x1d8a0a, 0x000000, 0x1d9401, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1d9502, 0x1d9702, 0x000000, 0x1d9903, 0x1d9c02, 0x1d9e01,
+ 0x000000, 0x000000, 0x000000, 0x1d9f03, 0x000000, 0x1da202, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1da405, 0x000000, 0x000000, 0x000000, 0x1da901,
+ 0x000000, 0x000000, 0x1daa05, 0x000000, 0x000000, 0x1daf02, 0x1db108, 0x1db902,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1dbb01, 0x000000, 0x1dbc01,
+ 0x1dbd01, 0x000000, 0x000000, 0x1dbe01, 0x000000, 0x000000, 0x1dbf04, 0x000000,
+ 0x1dc301, 0x000000, 0x1dc401, 0x1dc501, 0x000000, 0x1dc603, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1dc901, 0x000000, 0x000000, 0x000000, 0x000000, 0x1dca02,
+ 0x1dcc02, 0x1dce02, 0x000000, 0x000000, 0x1dd006, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1dd601, 0x000000, 0x1dd702, 0x1dd901, 0x000000, 0x000000,
+ 0x1dda01, 0x000000, 0x000000, 0x000000, 0x000000, 0x1ddb01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1ddc10, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1dec01, 0x1ded01, 0x1dee02, 0x1df001, 0x000000,
+ 0x1df101, 0x000000, 0x1df211, 0x000000, 0x1e0304, 0x1e0702, 0x1e0901, 0x000000,
+ 0x1e0a01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1e0b08,
+ 0x000000, 0x000000, 0x1e1307, 0x000000, 0x1e1a01, 0x000000, 0x1e1b01, 0x000000,
+ 0x1e1c0c, 0x000000, 0x1e2801, 0x000000, 0x000000, 0x000000, 0x1e2902, 0x000000,
+ 0x1e2b05, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1e3002,
+ 0x1e3201, 0x000000, 0x1e3301, 0x000000, 0x1e3402, 0x1e3604, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1e3a02, 0x000000, 0x000000,
+ 0x1e3c04, 0x1e4003, 0x000000, 0x1e4303, 0x000000, 0x000000, 0x000000, 0x1e4601,
+ 0x000000, 0x000000, 0x000000, 0x1e4701, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1e4803, 0x000000, 0x000000, 0x1e4b01, 0x000000,
+ 0x1e4c02, 0x000000, 0x1e4e01, 0x000000, 0x1e4f01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x1e5007, 0x1e5701, 0x000000, 0x000000, 0x1e5801, 0x000000, 0x000000,
+ 0x1e5901, 0x000000, 0x000000, 0x1e5a01, 0x000000, 0x000000, 0x1e5b01, 0x000000,
+ 0x000000, 0x1e5c05, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1e6105,
+ 0x1e6601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1e6701, 0x1e6805,
+ 0x000000, 0x1e6d02, 0x000000, 0x000000, 0x000000, 0x000000, 0x1e6f06, 0x000000,
+ 0x1e7501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1e760b, 0x000000,
+ 0x1e8103, 0x000000, 0x000000, 0x1e8401, 0x000000, 0x1e8502, 0x000000, 0x1e8702,
+ 0x000000, 0x1e8906, 0x1e8f01, 0x1e9001, 0x1e9102, 0x000000, 0x1e9302, 0x1e950a,
+ 0x000000, 0x000000, 0x000000, 0x1e9f02, 0x000000, 0x1ea101, 0x000000, 0x1ea201,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x1ea302, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x1ea50a, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1eaf01, 0x1eb001, 0x1eb104, 0x1eb503, 0x000000, 0x1eb801,
+ 0x000000, 0x000000, 0x1eb92f, 0x000000, 0x000000, 0x1ee801, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1ee901, 0x000000, 0x000000, 0x1eea02, 0x1eec01, 0x1eed01,
+ 0x1eee01, 0x000000, 0x1eef01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1ef001, 0x1ef102, 0x000000, 0x1ef301, 0x000000, 0x000000,
+ 0x1ef402, 0x000000, 0x000000, 0x1ef603, 0x000000, 0x1ef905, 0x1efe02, 0x000000,
+ 0x000000, 0x1f0002, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x1f0201, 0x000000, 0x1f0301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x1f0404, 0x000000, 0x000000, 0x000000, 0x000000, 0x1f0804, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1f0c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1f0d03, 0x000000, 0x1f100f, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1f1f01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1f2003, 0x1f2314, 0x1f3701, 0x000000, 0x1f3801, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1f390d, 0x000000, 0x000000, 0x000000, 0x000000, 0x1f4601,
+ 0x1f4702, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1f4902, 0x000000, 0x000000,
+ 0x000000, 0x1f4b06, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x1f510a, 0x000000, 0x1f5b01, 0x1f5c01, 0x000000, 0x000000,
+ 0x1f5d02, 0x000000, 0x000000, 0x1f5f01, 0x1f6001, 0x000000, 0x000000, 0x1f6102,
+ 0x1f6301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1f6406, 0x000000, 0x000000, 0x000000, 0x1f6a09,
+ 0x1f7307, 0x1f7a01, 0x1f7b01, 0x000000, 0x000000, 0x1f7c01, 0x000000, 0x000000,
+ 0x000000, 0x1f7d01, 0x000000, 0x1f7e01, 0x000000, 0x1f7f02, 0x000000, 0x1f8102,
+ 0x1f830c, 0x000000, 0x000000, 0x000000, 0x1f8f01, 0x1f9008, 0x000000, 0x1f9803,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1f9b01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x1f9c11, 0x1fad01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1fae01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1faf03, 0x1fb202, 0x000000, 0x1fb403, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1fb701,
+ 0x1fb801, 0x1fb906, 0x1fbf01, 0x1fc001, 0x1fc101, 0x1fc208, 0x000000, 0x000000,
+ 0x1fca05, 0x000000, 0x000000, 0x1fcf01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x1fd001, 0x1fd107, 0x1fd801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x1fd903, 0x000000, 0x1fdc03, 0x1fdf02, 0x1fe102,
+ 0x000000, 0x1fe301, 0x1fe401, 0x000000, 0x000000, 0x000000, 0x000000, 0x1fe501,
+ 0x1fe60c, 0x000000, 0x000000, 0x1ff206, 0x000000, 0x000000, 0x000000, 0x1ff801,
+ 0x000000, 0x000000, 0x000000, 0x1ff901, 0x000000, 0x000000, 0x1ffa01, 0x000000,
+ 0x000000, 0x000000, 0x1ffb10, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x200b06, 0x000000, 0x000000, 0x000000, 0x000000, 0x201103, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x201401, 0x000000, 0x201501, 0x000000, 0x000000,
+ 0x201603, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x201901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x201a02, 0x000000, 0x201c01, 0x000000, 0x000000, 0x201d03, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x202008,
+ 0x000000, 0x000000, 0x000000, 0x202809, 0x000000, 0x000000, 0x203105, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x203601, 0x000000, 0x203704, 0x203b04, 0x000000, 0x203f01,
+ 0x204004, 0x000000, 0x000000, 0x204403, 0x000000, 0x204701, 0x204802, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x204a02, 0x000000, 0x000000, 0x000000, 0x204c01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x204d08, 0x000000, 0x000000, 0x000000, 0x205501, 0x000000, 0x205604,
+ 0x205a02, 0x000000, 0x000000, 0x205c01, 0x205d03, 0x206003, 0x206301, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x206402, 0x206604, 0x206a01, 0x206b01, 0x206c03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x206f03, 0x20720e,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x208001,
+ 0x000000, 0x000000, 0x000000, 0x208101, 0x208202, 0x208401, 0x208501, 0x208605,
+ 0x000000, 0x000000, 0x208b06, 0x209102, 0x000000, 0x000000, 0x20930a, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x209d01, 0x000000, 0x000000, 0x209e03,
+ 0x000000, 0x20a101, 0x20a205, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x20a70c, 0x20b305, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x20b803, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x20bb03, 0x000000, 0x000000, 0x000000, 0x20be01, 0x000000, 0x20bf02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x20c106, 0x20c702, 0x000000, 0x000000, 0x20c902,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x20cb01,
+ 0x20cc01, 0x000000, 0x20cd01, 0x000000, 0x20ce01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x20cf01, 0x000000, 0x20d009, 0x20d901, 0x20da01, 0x000000,
+ 0x20db01, 0x20dc09, 0x20e501, 0x000000, 0x000000, 0x000000, 0x000000, 0x20e601,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x20e701, 0x000000, 0x000000, 0x20e810,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x20f801,
+ 0x20f901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x20fa01,
+ 0x000000, 0x000000, 0x20fb03, 0x000000, 0x20fe04, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x210207, 0x000000, 0x210904, 0x000000, 0x210d06, 0x000000, 0x000000,
+ 0x211301, 0x000000, 0x211401, 0x000000, 0x000000, 0x000000, 0x211503, 0x000000,
+ 0x211806, 0x211e01, 0x211f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x212002,
+ 0x212201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x212306, 0x000000, 0x000000, 0x212901, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x212a02, 0x212c01, 0x212d22, 0x000000,
+ 0x214f02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x215104, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x215504, 0x215902, 0x215b01, 0x000000, 0x000000, 0x215c04, 0x000000,
+ 0x000000, 0x21600c, 0x000000, 0x216c0c, 0x000000, 0x000000, 0x217801, 0x217901,
+ 0x000000, 0x000000, 0x217a03, 0x217d01, 0x217e04, 0x218204, 0x000000, 0x218608,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x218e0f, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x219d01, 0x000000, 0x219e01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x219f01, 0x000000, 0x000000, 0x21a001, 0x000000, 0x000000, 0x000000,
+ 0x21a101, 0x000000, 0x000000, 0x000000, 0x21a202, 0x000000, 0x000000, 0x21a404,
+ 0x21a804, 0x21ac01, 0x000000, 0x000000, 0x21ad01, 0x000000, 0x21ae01, 0x000000,
+ 0x21af01, 0x21b00c, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x21bc01, 0x21bd01, 0x21be0b, 0x21c902, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x21cb02, 0x21cd01, 0x21ce01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x21cf01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x21d001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x21d101, 0x000000, 0x000000, 0x21d201, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x21d301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x21d402,
+ 0x21d601, 0x21d701, 0x000000, 0x000000, 0x000000, 0x000000, 0x21d804, 0x000000,
+ 0x21dc02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x21de03, 0x21e10a, 0x000000, 0x21eb02, 0x000000, 0x21ed03, 0x000000, 0x000000,
+ 0x000000, 0x21f001, 0x000000, 0x000000, 0x000000, 0x21f110, 0x000000, 0x220104,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x220501, 0x000000, 0x220602, 0x220801, 0x22090a,
+ 0x221303, 0x221601, 0x221705, 0x221c03, 0x221f01, 0x000000, 0x222002, 0x222203,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x222501, 0x222602, 0x222809, 0x223102,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x223301, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x223403, 0x223702, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x223901, 0x223a01, 0x223b02, 0x000000, 0x223d03, 0x224001,
+ 0x224103, 0x224401, 0x000000, 0x224505, 0x000000, 0x224a01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x224b01, 0x000000, 0x000000, 0x224c02, 0x000000, 0x000000,
+ 0x224e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x224f01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x225001, 0x000000, 0x000000, 0x000000, 0x000000, 0x225102, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x225302, 0x22550d, 0x000000, 0x000000, 0x000000, 0x22620a,
+ 0x000000, 0x226c01, 0x226d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x226e01, 0x226f02, 0x000000, 0x000000, 0x000000, 0x000000, 0x227104, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x227506, 0x227b01, 0x227c02, 0x000000, 0x227e02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x228001, 0x000000, 0x000000, 0x000000,
+ 0x228101, 0x000000, 0x000000, 0x000000, 0x228201, 0x000000, 0x228301, 0x000000,
+ 0x000000, 0x000000, 0x228401, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x228501, 0x228601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x228701, 0x000000,
+ 0x000000, 0x000000, 0x228801, 0x000000, 0x228904, 0x000000, 0x000000, 0x000000,
+ 0x228d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x228e01, 0x000000, 0x228f10, 0x000000, 0x000000, 0x229f02, 0x000000, 0x000000,
+ 0x22a104, 0x000000, 0x000000, 0x22a502, 0x22a701, 0x000000, 0x000000, 0x22a801,
+ 0x22a901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x22aa01,
+ 0x000000, 0x22ab14, 0x000000, 0x000000, 0x000000, 0x000000, 0x22bf04, 0x22c301,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x22c403, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x22c703, 0x000000, 0x22ca04, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x22ce01, 0x22cf01, 0x22d001, 0x000000, 0x000000, 0x000000, 0x22d101,
+ 0x000000, 0x22d201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x22d30d, 0x000000,
+ 0x000000, 0x000000, 0x22e001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x22e102, 0x000000, 0x22e30b,
+ 0x000000, 0x22ee02, 0x000000, 0x000000, 0x000000, 0x22f002, 0x22f202, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x22f401, 0x000000, 0x22f504, 0x000000, 0x22f903,
+ 0x22fc0d, 0x000000, 0x000000, 0x230901, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x230a19, 0x000000, 0x232301, 0x000000, 0x000000, 0x000000, 0x000000, 0x232403,
+ 0x232701, 0x000000, 0x000000, 0x000000, 0x000000, 0x232801, 0x232902, 0x000000,
+ 0x232b05, 0x23300f, 0x233f03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x234237,
+ 0x237901, 0x000000, 0x000000, 0x237a06, 0x238001, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x238102, 0x000000, 0x000000, 0x000000, 0x238301,
+ 0x000000, 0x000000, 0x238402, 0x000000, 0x238601, 0x000000, 0x000000, 0x238701,
+ 0x238804, 0x238c01, 0x238d0a, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x239702, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x239906, 0x000000, 0x000000, 0x239f01, 0x000000, 0x23a001,
+ 0x23a101, 0x000000, 0x000000, 0x000000, 0x23a201, 0x23a301, 0x000000, 0x000000,
+ 0x23a401, 0x000000, 0x000000, 0x23a501, 0x000000, 0x23a602, 0x000000, 0x000000,
+ 0x23a802, 0x23aa01, 0x000000, 0x000000, 0x000000, 0x23ab04, 0x000000, 0x000000,
+ 0x23af08, 0x000000, 0x23b704, 0x000000, 0x000000, 0x23bb01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x23bc03, 0x000000, 0x23bf0b, 0x23ca02,
+ 0x000000, 0x000000, 0x23cc01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x23cd03, 0x000000, 0x23d001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x23d102, 0x000000, 0x000000, 0x000000, 0x000000, 0x23d302,
+ 0x000000, 0x23d501, 0x23d601, 0x23d701, 0x000000, 0x23d809, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x23e101, 0x000000,
+ 0x23e201, 0x000000, 0x000000, 0x000000, 0x23e301, 0x23e401, 0x000000, 0x000000,
+ 0x23e501, 0x000000, 0x000000, 0x000000, 0x000000, 0x23e602, 0x000000, 0x000000,
+ 0x000000, 0x23e804, 0x000000, 0x000000, 0x000000, 0x000000, 0x23ec01, 0x23ed0a,
+ 0x000000, 0x000000, 0x000000, 0x23f703, 0x23fa05, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x23ff01, 0x240003, 0x000000, 0x240301, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x240401, 0x240501, 0x240601, 0x000000, 0x240701, 0x240802, 0x000000,
+ 0x000000, 0x240a01, 0x000000, 0x240b01, 0x240c01, 0x000000, 0x000000, 0x240d02,
+ 0x000000, 0x240f01, 0x000000, 0x241001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x241101, 0x241202, 0x000000, 0x000000, 0x241401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x241502, 0x241701,
+ 0x000000, 0x000000, 0x241803, 0x000000, 0x000000, 0x000000, 0x000000, 0x241b03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x241e01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x241f01,
+ 0x000000, 0x000000, 0x000000, 0x242001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x242101, 0x000000, 0x000000, 0x000000, 0x000000, 0x242201, 0x000000,
+ 0x000000, 0x242303, 0x242601, 0x000000, 0x000000, 0x000000, 0x242701, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x242801, 0x000000,
+ 0x000000, 0x242901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x242a03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x242d01, 0x242e02,
+ 0x000000, 0x000000, 0x243001, 0x243102, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x243303, 0x243602, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x243803,
+ 0x000000, 0x000000, 0x000000, 0x243b01, 0x243c02, 0x243e01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x243f0d, 0x000000, 0x000000,
+ 0x244c04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x245004, 0x245407,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x245b01, 0x245c04, 0x246008, 0x246801, 0x246904,
+ 0x000000, 0x246d01, 0x246e96, 0x000000, 0x000000, 0x250402, 0x000000, 0x250603,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x250901, 0x000000, 0x000000, 0x000000,
+ 0x250a01, 0x000000, 0x250b01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x250c01, 0x000000, 0x000000, 0x250d03,
+ 0x000000, 0x000000, 0x000000, 0x251001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x251101, 0x251202, 0x000000, 0x000000, 0x000000, 0x000000, 0x251402, 0x000000,
+ 0x251601, 0x251704, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x251b02, 0x000000, 0x251d02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x251f03, 0x252202, 0x000000, 0x252402, 0x000000, 0x252602,
+ 0x000000, 0x000000, 0x252802, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x252a01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x252b01, 0x252c0f, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x253b01, 0x000000, 0x000000, 0x253c05, 0x000000, 0x000000, 0x254101, 0x000000,
+ 0x254201, 0x254301, 0x000000, 0x000000, 0x000000, 0x000000, 0x254401, 0x000000,
+ 0x000000, 0x000000, 0x254502, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x254701, 0x254801, 0x000000, 0x254901, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x254a01, 0x254b02, 0x000000,
+ 0x000000, 0x000000, 0x254d07, 0x000000, 0x255401, 0x000000, 0x255503, 0x000000,
+ 0x255802, 0x000000, 0x255a07, 0x256102, 0x000000, 0x256302, 0x256501, 0x256602,
+ 0x000000, 0x000000, 0x000000, 0x25680f, 0x257704, 0x000000, 0x000000, 0x257b02,
+ 0x000000, 0x000000, 0x000000, 0x257d02, 0x000000, 0x257f01, 0x000000, 0x258007,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x25871e, 0x000000,
+ 0x25a501, 0x25a602, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x25a802, 0x000000, 0x000000, 0x25aa01, 0x25ab01, 0x25ac01, 0x25ad02,
+ 0x000000, 0x000000, 0x000000, 0x25af02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x25b104, 0x25b501, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x25b601, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x25b701, 0x000000, 0x25b801, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x25b901, 0x000000, 0x000000, 0x25ba05, 0x000000, 0x000000,
+ 0x25bf01, 0x000000, 0x000000, 0x25c002, 0x000000, 0x25c202, 0x25c402, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x25c602, 0x000000, 0x25c808, 0x25d001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x25d101, 0x25d201, 0x25d302, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x25d50c, 0x25e102, 0x000000, 0x000000, 0x25e301, 0x25e401,
+ 0x25e501, 0x000000, 0x25e60e, 0x25f401, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x25f508, 0x000000, 0x25fd01, 0x000000, 0x000000, 0x000000, 0x000000, 0x25fe01,
+ 0x000000, 0x000000, 0x000000, 0x25ff0e, 0x000000, 0x260d02, 0x000000, 0x260f06,
+ 0x000000, 0x000000, 0x000000, 0x261504, 0x000000, 0x261901, 0x261a01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x261b01, 0x000000, 0x261c0b, 0x262701,
+ 0x000000, 0x262801, 0x000000, 0x000000, 0x000000, 0x262901, 0x262a02, 0x000000,
+ 0x262c01, 0x000000, 0x262d01, 0x000000, 0x262e01, 0x000000, 0x000000, 0x000000,
+ 0x262f01, 0x263007, 0x263702, 0x000000, 0x000000, 0x000000, 0x263903, 0x000000,
+ 0x263c04, 0x000000, 0x000000, 0x000000, 0x000000, 0x264001, 0x26410e, 0x000000,
+ 0x000000, 0x000000, 0x264f03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x265201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x265308, 0x000000, 0x265b03,
+ 0x000000, 0x265e05, 0x000000, 0x266302, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x266503, 0x000000, 0x000000, 0x266803, 0x266b04, 0x000000, 0x000000, 0x000000,
+ 0x266f01, 0x000000, 0x000000, 0x000000, 0x267001, 0x000000, 0x000000, 0x267103,
+ 0x000000, 0x267402, 0x000000, 0x000000, 0x000000, 0x267601, 0x267707, 0x000000,
+ 0x000000, 0x267e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x267f07, 0x268602, 0x268801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x268901, 0x268a01, 0x268b05, 0x269002, 0x269205,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x269706, 0x000000,
+ 0x269d01, 0x000000, 0x000000, 0x000000, 0x269e04, 0x000000, 0x000000, 0x26a20f,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x26b101,
+ 0x26b201, 0x26b301, 0x000000, 0x000000, 0x000000, 0x26b401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x26b503, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x26b801, 0x000000, 0x000000, 0x000000, 0x000000, 0x26b908, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x26c101, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x26c202, 0x26c405, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x26c901, 0x000000, 0x000000, 0x000000, 0x26ca01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x26cb07, 0x000000, 0x26d201,
+ 0x000000, 0x000000, 0x26d316, 0x26e904, 0x26ed03, 0x000000, 0x26f001, 0x26f104,
+ 0x000000, 0x000000, 0x26f505, 0x000000, 0x26fa02, 0x26fc01, 0x26fd03, 0x000000,
+ 0x000000, 0x000000, 0x270002, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x270201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x270305, 0x270801, 0x000000, 0x000000, 0x270903, 0x000000, 0x000000,
+ 0x000000, 0x270c07, 0x000000, 0x271303, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x27160c, 0x272201, 0x272302, 0x272509, 0x000000, 0x000000, 0x000000,
+ 0x272e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x272f02, 0x000000,
+ 0x000000, 0x273102, 0x000000, 0x273302, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x273501, 0x000000, 0x273601, 0x273701, 0x273801, 0x273901, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x273a02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x273c09, 0x274501, 0x000000, 0x000000, 0x000000, 0x000000, 0x274602,
+ 0x000000, 0x000000, 0x274801, 0x274901, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x274a01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x274b03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x274e03, 0x000000, 0x275104, 0x000000, 0x000000, 0x000000,
+ 0x275502, 0x000000, 0x275704, 0x000000, 0x000000, 0x275b01, 0x275c07, 0x000000,
+ 0x000000, 0x276303, 0x000000, 0x276603, 0x276901, 0x276a03, 0x000000, 0x000000,
+ 0x000000, 0x276d03, 0x277001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x277105, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x277601, 0x000000, 0x277704, 0x000000, 0x277b0c, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x278702, 0x000000, 0x000000,
+ 0x000000, 0x278903, 0x000000, 0x000000, 0x278c02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x278e01, 0x278f06, 0x000000, 0x000000, 0x279501, 0x000000, 0x279601,
+ 0x279701, 0x000000, 0x27980a, 0x000000, 0x000000, 0x27a202, 0x000000, 0x27a401,
+ 0x27a506, 0x000000, 0x000000, 0x27ab02, 0x000000, 0x27ad01, 0x27ae01, 0x27af08,
+ 0x27b703, 0x000000, 0x000000, 0x27ba02, 0x000000, 0x27bc03, 0x000000, 0x000000,
+ 0x000000, 0x27bf01, 0x000000, 0x000000, 0x000000, 0x000000, 0x27c001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x27c110, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x27d108, 0x000000, 0x27d901, 0x000000, 0x000000, 0x27da01, 0x27db01, 0x000000,
+ 0x27dc01, 0x27dd01, 0x000000, 0x27de02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x27e004, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x27e404, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x27e80c,
+ 0x000000, 0x27f401, 0x000000, 0x27f501, 0x27f601, 0x000000, 0x000000, 0x27f705,
+ 0x000000, 0x000000, 0x27fc01, 0x27fd06, 0x280306, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x280902, 0x000000, 0x280b03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x280e02, 0x000000, 0x000000, 0x281001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x281101, 0x000000, 0x281201,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x281318, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x282b04, 0x282f01, 0x283001, 0x000000, 0x000000, 0x000000, 0x283106, 0x000000,
+ 0x283701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x283801, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x283901, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x283a04, 0x283e03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x284101, 0x000000, 0x000000, 0x000000, 0x284201, 0x000000, 0x284303,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x284604, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x284a02, 0x284c01, 0x000000, 0x000000,
+ 0x000000, 0x284d01, 0x284e02, 0x000000, 0x285005, 0x000000, 0x285502, 0x000000,
+ 0x285701, 0x000000, 0x000000, 0x000000, 0x000000, 0x285802, 0x000000, 0x000000,
+ 0x285a01, 0x000000, 0x285b02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x285d01, 0x000000, 0x000000, 0x285e03, 0x286101, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x28620a, 0x286c02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x286e02, 0x000000, 0x287009, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x287906, 0x000000, 0x287f01, 0x000000,
+ 0x288003, 0x000000, 0x000000, 0x000000, 0x288301, 0x288401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x288501, 0x000000, 0x000000, 0x000000, 0x288601,
+ 0x000000, 0x28870a, 0x000000, 0x000000, 0x289102, 0x289302, 0x289501, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x289601, 0x000000,
+ 0x000000, 0x289702, 0x289902, 0x000000, 0x000000, 0x289b01, 0x000000, 0x289c06,
+ 0x000000, 0x28a201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x28a301, 0x000000, 0x28a405, 0x28a901, 0x000000, 0x000000,
+ 0x28aa01, 0x000000, 0x28ab09, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x28b401, 0x28b501, 0x28b602, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x28b802, 0x000000,
+ 0x000000, 0x28ba03, 0x000000, 0x000000, 0x28bd02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x28bf01, 0x000000, 0x28c001, 0x28c102, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x28c301, 0x28c401, 0x000000, 0x28c501, 0x000000, 0x28c605,
+ 0x000000, 0x28cb02, 0x28cd02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x28cf01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x28d002, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x28d202, 0x000000,
+ 0x28d401, 0x000000, 0x000000, 0x000000, 0x28d503, 0x28d802, 0x000000, 0x000000,
+ 0x28da0a, 0x000000, 0x28e403, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x28e709, 0x28f001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x28f101,
+ 0x28f209, 0x000000, 0x28fb07, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x290203, 0x000000, 0x000000,
+ 0x000000, 0x290508, 0x000000, 0x000000, 0x290d0b, 0x000000, 0x291803, 0x291b01,
+ 0x000000, 0x000000, 0x291c01, 0x291d02, 0x291f02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x292103, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x292401, 0x000000, 0x292501, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x292601,
+ 0x292708, 0x000000, 0x000000, 0x292f09, 0x000000, 0x293803, 0x293b01, 0x000000,
+ 0x293c02, 0x293e03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x294101,
+ 0x294201, 0x294301, 0x000000, 0x294401, 0x000000, 0x000000, 0x000000, 0x294501,
+ 0x000000, 0x294608, 0x000000, 0x000000, 0x000000, 0x000000, 0x294e01, 0x000000,
+ 0x000000, 0x294f02, 0x000000, 0x295107, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x295801, 0x295901,
+ 0x295a02, 0x295c01, 0x000000, 0x295d04, 0x000000, 0x000000, 0x296104, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x296503, 0x000000, 0x000000, 0x296801,
+ 0x000000, 0x000000, 0x000000, 0x296901, 0x000000, 0x296a01, 0x000000, 0x296b01,
+ 0x000000, 0x296c02, 0x000000, 0x000000, 0x296e13, 0x000000, 0x298101, 0x000000,
+ 0x298202, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x298401, 0x298501,
+ 0x29860f, 0x000000, 0x000000, 0x000000, 0x299501, 0x000000, 0x000000, 0x000000,
+ 0x299603, 0x000000, 0x299901, 0x000000, 0x299a01, 0x000000, 0x000000, 0x000000,
+ 0x299b01, 0x299c02, 0x299e03, 0x000000, 0x29a101, 0x000000, 0x000000, 0x29a208,
+ 0x000000, 0x29aa02, 0x000000, 0x000000, 0x000000, 0x000000, 0x29ac01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x29ad01, 0x000000, 0x000000, 0x000000, 0x29ae01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x29af01, 0x29b001, 0x000000, 0x29b102, 0x000000, 0x000000, 0x000000,
+ 0x29b302, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x29b504,
+ 0x000000, 0x29b90a, 0x000000, 0x000000, 0x29c305, 0x000000, 0x29c801, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x29c902, 0x000000, 0x000000, 0x000000, 0x29cb03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x29ce01, 0x000000, 0x29cf01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x29d00a,
+ 0x000000, 0x29da03, 0x29dd02, 0x29df02, 0x000000, 0x000000, 0x29e101, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x29e203,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x29e501, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x29e603, 0x29e90d, 0x29f601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x29f701, 0x000000, 0x000000, 0x29f803, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x29fb02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x29fd02, 0x000000, 0x000000, 0x29ff01, 0x2a0003, 0x000000,
+ 0x000000, 0x000000, 0x2a0302, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2a0501, 0x000000, 0x000000, 0x000000, 0x2a060a, 0x000000, 0x2a1003,
+ 0x000000, 0x000000, 0x2a1301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2a1404, 0x000000, 0x000000, 0x000000, 0x2a1802, 0x000000, 0x000000,
+ 0x2a1a01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2a1b04, 0x2a1f05, 0x000000, 0x000000, 0x000000, 0x2a2402, 0x000000,
+ 0x000000, 0x000000, 0x2a2604, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x2a2a01, 0x000000, 0x000000, 0x2a2b0c,
+ 0x000000, 0x2a3701, 0x000000, 0x2a3801, 0x000000, 0x000000, 0x000000, 0x2a3902,
+ 0x000000, 0x000000, 0x000000, 0x2a3b02, 0x000000, 0x000000, 0x2a3d01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2a3e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x2a3f01, 0x2a4002, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2a4201, 0x000000, 0x2a4301, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2a4401, 0x2a4501, 0x2a4603, 0x000000, 0x2a4917, 0x2a6001,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x2a6102, 0x000000, 0x000000, 0x2a6301,
+ 0x000000, 0x2a6403, 0x000000, 0x000000, 0x2a6701, 0x000000, 0x000000, 0x2a6801,
+ 0x2a6901, 0x2a6a01, 0x2a6b03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2a6e03, 0x000000, 0x2a7101, 0x2a7205, 0x2a7712, 0x2a8901, 0x000000,
+ 0x000000, 0x2a8a01, 0x2a8b01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2a8c03, 0x000000, 0x000000, 0x000000, 0x2a8f03, 0x2a9201, 0x000000, 0x000000,
+ 0x2a9302, 0x2a9501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2a9602,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x2a9801, 0x000000, 0x2a9902, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2a9b03, 0x2a9e01, 0x000000, 0x2a9f04, 0x000000,
+ 0x000000, 0x2aa301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2aa401,
+ 0x000000, 0x2aa505, 0x000000, 0x000000, 0x000000, 0x2aaa01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2aab04, 0x000000, 0x000000, 0x2aaf01, 0x2ab001,
+ 0x000000, 0x000000, 0x2ab102, 0x000000, 0x000000, 0x000000, 0x2ab307, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2aba06, 0x000000, 0x000000, 0x2ac002, 0x000000,
+ 0x000000, 0x000000, 0x2ac201, 0x000000, 0x000000, 0x2ac30a, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2acd02, 0x000000, 0x2acf02, 0x2ad102, 0x000000, 0x000000,
+ 0x2ad302, 0x000000, 0x000000, 0x000000, 0x2ad501, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2ad601,
+ 0x000000, 0x000000, 0x000000, 0x2ad705, 0x000000, 0x000000, 0x000000, 0x2adc02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2ade01, 0x000000, 0x000000,
+ 0x000000, 0x2adf02, 0x2ae104, 0x000000, 0x000000, 0x2ae502, 0x2ae703, 0x2aea01,
+ 0x000000, 0x000000, 0x2aeb01, 0x000000, 0x2aec02, 0x000000, 0x000000, 0x2aee01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x2aef01, 0x000000, 0x000000, 0x000000,
+ 0x2af002, 0x000000, 0x2af201, 0x000000, 0x000000, 0x000000, 0x2af301, 0x2af401,
+ 0x000000, 0x000000, 0x000000, 0x2af501, 0x000000, 0x2af602, 0x000000, 0x2af809,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2b0102, 0x2b0301,
+ 0x000000, 0x2b0403, 0x2b0701, 0x2b0802, 0x000000, 0x000000, 0x2b0a01, 0x2b0b01,
+ 0x2b0c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2b0d01, 0x000000, 0x000000,
+ 0x2b0e06, 0x2b1402, 0x000000, 0x000000, 0x000000, 0x000000, 0x2b1603, 0x000000,
+ 0x000000, 0x000000, 0x2b1915, 0x000000, 0x000000, 0x000000, 0x000000, 0x2b2e01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2b2f04, 0x2b3301, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2b3403, 0x000000, 0x000000,
+ 0x2b3701, 0x2b3801, 0x000000, 0x2b3903, 0x000000, 0x2b3c10, 0x000000, 0x2b4c01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2b4d02, 0x000000, 0x000000,
+ 0x000000, 0x2b4f06, 0x000000, 0x000000, 0x000000, 0x2b5501, 0x000000, 0x000000,
+ 0x000000, 0x2b5601, 0x2b5701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2b5801, 0x2b5901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2b5a03, 0x000000, 0x000000, 0x2b5d06, 0x2b6301, 0x000000, 0x000000,
+ 0x000000, 0x2b6405, 0x000000, 0x2b6905, 0x2b6e0c, 0x000000, 0x2b7a0b, 0x000000,
+ 0x000000, 0x000000, 0x2b8501, 0x000000, 0x000000, 0x2b8603, 0x000000, 0x2b8901,
+ 0x000000, 0x2b8a01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2b8b01, 0x000000, 0x2b8c03, 0x2b8f01, 0x2b9001, 0x2b9102, 0x000000,
+ 0x2b9301, 0x000000, 0x2b9401, 0x000000, 0x000000, 0x000000, 0x2b9501, 0x000000,
+ 0x000000, 0x2b9601, 0x2b9703, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2b9a01,
+ 0x000000, 0x000000, 0x2b9b02, 0x2b9d06, 0x000000, 0x000000, 0x000000, 0x2ba302,
+ 0x2ba502, 0x000000, 0x000000, 0x000000, 0x2ba706, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2bad01, 0x2bae01, 0x000000, 0x000000, 0x000000, 0x2baf03,
+ 0x2bb201, 0x000000, 0x000000, 0x2bb301, 0x2bb405, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2bb906, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2bbf02, 0x2bc101, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2bc201, 0x000000, 0x2bc301, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2bc401, 0x000000, 0x000000, 0x000000, 0x2bc501,
+ 0x000000, 0x2bc602, 0x000000, 0x000000, 0x2bc802, 0x000000, 0x2bca03, 0x000000,
+ 0x2bcd11, 0x000000, 0x000000, 0x2bde3e, 0x000000, 0x000000, 0x000000, 0x2c1c02,
+ 0x2c1e01, 0x000000, 0x000000, 0x2c1f01, 0x2c2005, 0x2c2505, 0x000000, 0x000000,
+ 0x000000, 0x2c2a02, 0x000000, 0x000000, 0x000000, 0x000000, 0x2c2c01, 0x2c2d01,
+ 0x000000, 0x2c2e02, 0x000000, 0x000000, 0x000000, 0x2c3001, 0x000000, 0x2c3114,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x2c4504, 0x000000, 0x2c4901, 0x000000,
+ 0x000000, 0x000000, 0x2c4a01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2c4b01, 0x000000, 0x2c4c01, 0x2c4d02, 0x000000, 0x2c4f01, 0x000000, 0x2c5003,
+ 0x000000, 0x000000, 0x000000, 0x2c5301, 0x2c5401, 0x000000, 0x000000, 0x2c5505,
+ 0x000000, 0x000000, 0x000000, 0x2c5a01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2c5b01, 0x000000, 0x2c5c0d, 0x2c6901, 0x000000, 0x000000,
+ 0x2c6a03, 0x000000, 0x2c6d02, 0x2c6f01, 0x000000, 0x000000, 0x000000, 0x2c7001,
+ 0x000000, 0x000000, 0x2c7105, 0x2c7603, 0x000000, 0x2c790d, 0x2c8601, 0x000000,
+ 0x2c8706, 0x2c8d02, 0x000000, 0x000000, 0x000000, 0x2c8f01, 0x000000, 0x000000,
+ 0x2c9003, 0x2c9305, 0x000000, 0x000000, 0x000000, 0x000000, 0x2c9801, 0x000000,
+ 0x000000, 0x000000, 0x2c9903, 0x000000, 0x2c9c05, 0x000000, 0x2ca103, 0x2ca401,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2ca507, 0x000000, 0x2cac01,
+ 0x000000, 0x2cad02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2caf0d,
+ 0x2cbc01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2cbd01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x2cbe01, 0x000000, 0x000000, 0x2cbf04,
+ 0x2cc301, 0x2cc402, 0x2cc606, 0x000000, 0x2ccc04, 0x000000, 0x2cd001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2cd101, 0x000000, 0x000000, 0x000000, 0x2cd201,
+ 0x000000, 0x2cd301, 0x2cd403, 0x2cd701, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2cd803, 0x000000, 0x000000, 0x2cdb03, 0x000000, 0x000000, 0x2cde0a, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2ce805, 0x000000, 0x000000, 0x2ced07, 0x000000, 0x2cf401, 0x000000,
+ 0x000000, 0x2cf501, 0x2cf602, 0x2cf802, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2cfa01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2cfb04, 0x000000, 0x2cff01, 0x2d0008, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2d0801, 0x2d0901, 0x2d0a03, 0x2d0d09, 0x000000, 0x000000,
+ 0x2d1604, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2d1a01, 0x000000,
+ 0x2d1b04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2d1f04, 0x2d2301,
+ 0x000000, 0x2d2402, 0x000000, 0x000000, 0x2d2601, 0x000000, 0x2d2701, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2d2802, 0x000000, 0x000000,
+ 0x2d2a01, 0x2d2b01, 0x000000, 0x2d2c02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2d2e02, 0x000000, 0x000000, 0x000000, 0x2d3005, 0x000000, 0x2d3501, 0x000000,
+ 0x2d3602, 0x000000, 0x000000, 0x000000, 0x2d3801, 0x000000, 0x2d3902, 0x000000,
+ 0x000000, 0x000000, 0x2d3b01, 0x2d3c01, 0x000000, 0x000000, 0x000000, 0x2d3d02,
+ 0x2d3f03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2d4201, 0x000000, 0x2d4303, 0x2d4604, 0x000000, 0x2d4a01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2d4b01, 0x000000,
+ 0x2d4c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x2d4d03, 0x2d5001, 0x000000,
+ 0x000000, 0x000000, 0x2d5101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2d5201, 0x2d5302, 0x000000,
+ 0x2d5502, 0x000000, 0x000000, 0x2d5702, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2d5901, 0x000000, 0x000000, 0x2d5a02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2d5c09, 0x000000, 0x2d6501, 0x000000, 0x000000, 0x000000, 0x2d6602, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2d6801, 0x000000, 0x000000, 0x2d6901, 0x2d6a01,
+ 0x2d6b02, 0x2d6d09, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2d7607, 0x000000, 0x000000, 0x2d7d02, 0x000000, 0x2d7f01, 0x2d8001, 0x000000,
+ 0x2d8101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2d8201, 0x000000, 0x000000, 0x2d8301, 0x2d8403, 0x2d8715,
+ 0x000000, 0x000000, 0x2d9c02, 0x2d9e01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2d9f01, 0x000000, 0x000000, 0x2da004, 0x000000, 0x2da403, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2da71c, 0x000000,
+ 0x000000, 0x000000, 0x2dc303, 0x000000, 0x2dc602, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2dc803, 0x000000, 0x000000, 0x2dcb13, 0x2dde02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2de003,
+ 0x2de302, 0x2de501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2de601,
+ 0x000000, 0x000000, 0x000000, 0x2de702, 0x2de901, 0x000000, 0x2dea04, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2dee01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2def01, 0x000000, 0x000000,
+ 0x000000, 0x2df005, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2df501, 0x2df605, 0x000000, 0x2dfb01, 0x2dfc01, 0x000000, 0x2dfd01, 0x000000,
+ 0x000000, 0x2dfe02, 0x000000, 0x2e0001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2e0102,
+ 0x2e0303, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2e0601, 0x000000, 0x2e0701, 0x000000, 0x000000, 0x000000, 0x2e0801, 0x000000,
+ 0x000000, 0x000000, 0x2e0902, 0x000000, 0x000000, 0x000000, 0x000000, 0x2e0b01,
+ 0x000000, 0x000000, 0x2e0c02, 0x2e0e01, 0x2e0f03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2e1227, 0x2e3901, 0x2e3a01, 0x2e3b01, 0x000000, 0x000000, 0x2e3c01,
+ 0x000000, 0x000000, 0x000000, 0x2e3d08, 0x000000, 0x000000, 0x2e4505, 0x2e4a01,
+ 0x000000, 0x2e4b11, 0x000000, 0x2e5c02, 0x000000, 0x000000, 0x000000, 0x2e5e01,
+ 0x000000, 0x000000, 0x000000, 0x2e5f02, 0x2e6101, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2e6201, 0x000000, 0x2e6301, 0x2e6406, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2e6a01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2e6b01, 0x000000, 0x2e6c01, 0x000000, 0x2e6d01, 0x000000, 0x000000,
+ 0x2e6e07, 0x000000, 0x2e7501, 0x2e7602, 0x2e780c, 0x2e8401, 0x2e8502, 0x000000,
+ 0x2e8706, 0x2e8d02, 0x000000, 0x000000, 0x2e8f02, 0x000000, 0x2e9102, 0x2e9303,
+ 0x2e9601, 0x2e9701, 0x000000, 0x000000, 0x000000, 0x000000, 0x2e9805, 0x000000,
+ 0x2e9d07, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2ea402, 0x2ea601,
+ 0x2ea701, 0x000000, 0x2ea803, 0x000000, 0x000000, 0x000000, 0x000000, 0x2eab01,
+ 0x2eac04, 0x000000, 0x000000, 0x000000, 0x000000, 0x2eb001, 0x000000, 0x2eb101,
+ 0x000000, 0x2eb201, 0x000000, 0x2eb301, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2eb402, 0x000000, 0x000000, 0x2eb602, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2eb811, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2ec901, 0x000000, 0x000000, 0x000000, 0x2eca01,
+ 0x2ecb06, 0x2ed101, 0x2ed205, 0x000000, 0x2ed701, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2ed801, 0x000000, 0x000000, 0x000000, 0x2ed905, 0x000000,
+ 0x2ede05, 0x2ee301, 0x2ee401, 0x2ee505, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2eea01, 0x000000, 0x000000, 0x2eeb02, 0x2eed01, 0x000000, 0x000000,
+ 0x2eee04, 0x000000, 0x000000, 0x2ef209, 0x2efb01, 0x000000, 0x000000, 0x2efc03,
+ 0x000000, 0x000000, 0x2eff01, 0x2f0001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2f0107, 0x000000, 0x2f0802, 0x2f0a01, 0x000000, 0x000000, 0x2f0b02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2f0d08, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2f1501, 0x2f1601,
+ 0x000000, 0x2f1704, 0x000000, 0x000000, 0x000000, 0x2f1b04, 0x2f1f01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x2f2002, 0x2f2201, 0x2f2306, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2f2901,
+ 0x000000, 0x000000, 0x000000, 0x2f2a01, 0x2f2b03, 0x000000, 0x000000, 0x000000,
+ 0x2f2e02, 0x000000, 0x2f3005, 0x2f3501, 0x2f3601, 0x000000, 0x000000, 0x2f3701,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x2f3803, 0x000000, 0x2f3b05, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2f4001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x2f4104, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2f4501, 0x2f4601, 0x2f4707, 0x2f4e03, 0x000000, 0x000000,
+ 0x2f5102, 0x2f5302, 0x000000, 0x000000, 0x000000, 0x2f5501, 0x000000, 0x000000,
+ 0x000000, 0x2f5601, 0x2f5708, 0x2f5f02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2f6101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2f6201,
+ 0x000000, 0x000000, 0x000000, 0x2f6302, 0x2f6503, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2f6802, 0x000000, 0x2f6a02, 0x000000, 0x2f6c01, 0x000000, 0x000000,
+ 0x2f6d02, 0x000000, 0x000000, 0x000000, 0x2f6f01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2f7003, 0x000000, 0x2f7305, 0x000000, 0x2f7801, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2f7911, 0x2f8a02, 0x2f8c02, 0x000000, 0x000000,
+ 0x000000, 0x2f8e03, 0x000000, 0x000000, 0x000000, 0x000000, 0x2f9105, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2f9601, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x2f9702,
+ 0x000000, 0x000000, 0x000000, 0x2f9901, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x2f9a01, 0x2f9b01, 0x000000, 0x000000, 0x2f9c07, 0x000000, 0x2fa301,
+ 0x000000, 0x2fa401, 0x000000, 0x000000, 0x2fa503, 0x000000, 0x2fa802, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x2faa06, 0x000000, 0x2fb001, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2fb101, 0x2fb201, 0x2fb301, 0x2fb404, 0x000000, 0x2fb801,
+ 0x2fb904, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2fbd01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2fbe06, 0x000000, 0x000000, 0x2fc404, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2fc801, 0x000000, 0x000000, 0x000000, 0x000000, 0x2fc902,
+ 0x000000, 0x000000, 0x2fcb06, 0x2fd101, 0x000000, 0x000000, 0x000000, 0x2fd201,
+ 0x000000, 0x000000, 0x000000, 0x2fd309, 0x2fdc01, 0x000000, 0x2fdd02, 0x2fdf01,
+ 0x000000, 0x2fe012, 0x000000, 0x000000, 0x2ff202, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x2ff401, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x2ff50b, 0x000000, 0x300001, 0x000000, 0x000000, 0x300102, 0x000000, 0x300301,
+ 0x300401, 0x000000, 0x000000, 0x300501, 0x000000, 0x300601, 0x000000, 0x000000,
+ 0x300701, 0x000000, 0x300801, 0x000000, 0x300903, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x300c08, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x30141d,
+ 0x000000, 0x303102, 0x303301, 0x000000, 0x000000, 0x000000, 0x000000, 0x303401,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x303501, 0x303601, 0x000000, 0x303701, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x303801, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x303902, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x303b02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x303d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x303e04, 0x000000, 0x304201, 0x304301, 0x30440a, 0x000000, 0x000000, 0x304e03,
+ 0x305101, 0x305201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x305304,
+ 0x305703, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x305a03, 0x000000, 0x305d01, 0x000000, 0x305e01, 0x000000, 0x000000,
+ 0x305f09, 0x000000, 0x000000, 0x000000, 0x000000, 0x306801, 0x000000, 0x000000,
+ 0x306904, 0x000000, 0x000000, 0x000000, 0x000000, 0x306d05, 0x307201, 0x000000,
+ 0x000000, 0x307306, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x307901,
+ 0x000000, 0x000000, 0x000000, 0x307a01, 0x000000, 0x000000, 0x000000, 0x307b08,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x308301, 0x000000, 0x308402, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x308602, 0x000000, 0x308804, 0x308c02,
+ 0x000000, 0x000000, 0x000000, 0x308e01, 0x308f02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x309101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x309201,
+ 0x309301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x309401, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x309507,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x309c05, 0x000000, 0x000000, 0x000000, 0x30a101, 0x30a201, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x30a317, 0x30ba12,
+ 0x000000, 0x000000, 0x30cc01, 0x30cd01, 0x000000, 0x000000, 0x000000, 0x30ce01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x30cf06, 0x30d507, 0x30dc01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x30dd02, 0x000000, 0x30df01, 0x30e001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x30e101, 0x000000, 0x000000, 0x000000, 0x30e205,
+ 0x000000, 0x30e704, 0x000000, 0x000000, 0x000000, 0x30eb03, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x30ee01, 0x000000,
+ 0x000000, 0x000000, 0x30ef01, 0x000000, 0x000000, 0x000000, 0x30f001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x30f105, 0x000000, 0x30f601, 0x000000,
+ 0x000000, 0x30f702, 0x000000, 0x30f902, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x30fb08, 0x000000, 0x310302, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x310501, 0x000000, 0x000000, 0x000000, 0x310601, 0x310702, 0x000000, 0x000000,
+ 0x000000, 0x310901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x310a07, 0x000000, 0x000000, 0x311103, 0x000000, 0x311401,
+ 0x000000, 0x311503, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x311802, 0x000000,
+ 0x000000, 0x000000, 0x311a03, 0x311d03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x312001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x312101, 0x312218, 0x313a05, 0x000000, 0x313f03,
+ 0x000000, 0x000000, 0x314201, 0x000000, 0x314303, 0x000000, 0x31460a, 0x000000,
+ 0x315002, 0x000000, 0x000000, 0x000000, 0x000000, 0x315213, 0x316502, 0x000000,
+ 0x316709, 0x000000, 0x000000, 0x31700d, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x317d01, 0x000000, 0x000000, 0x317e02, 0x000000, 0x318004,
+ 0x318402, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x318602, 0x000000, 0x318801, 0x000000,
+ 0x31890b, 0x319401, 0x000000, 0x319503, 0x000000, 0x319804, 0x000000, 0x319c02,
+ 0x000000, 0x000000, 0x000000, 0x319e01, 0x319f03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x31a21e, 0x31c002, 0x000000, 0x000000, 0x31c201, 0x000000, 0x000000,
+ 0x31c302, 0x000000, 0x000000, 0x31c501, 0x31c602, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x31c801, 0x000000,
+ 0x31c901, 0x31ca01, 0x000000, 0x31cb0b, 0x000000, 0x000000, 0x31d608, 0x31de06,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x31e401, 0x000000, 0x31e504, 0x31e901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x31ea01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x31eb0d, 0x31f81f, 0x000000,
+ 0x321701, 0x000000, 0x32180b, 0x000000, 0x322303, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x322603, 0x000000, 0x322901, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x322a02, 0x322c01, 0x000000, 0x322d01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x322e03, 0x000000, 0x000000, 0x323102, 0x323301, 0x323401, 0x000000, 0x000000,
+ 0x000000, 0x323501, 0x000000, 0x000000, 0x000000, 0x323601, 0x000000, 0x323702,
+ 0x000000, 0x323901, 0x000000, 0x000000, 0x323a03, 0x000000, 0x323d01, 0x000000,
+ 0x323e03, 0x000000, 0x000000, 0x324103, 0x000000, 0x324403, 0x324701, 0x324802,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x324a02, 0x000000, 0x324c01, 0x000000, 0x000000, 0x324d06, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x325301, 0x325403, 0x325701, 0x000000, 0x325804, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x325c02, 0x000000, 0x000000, 0x000000, 0x325e01, 0x325f02, 0x326104,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x326507,
+ 0x000000, 0x326c01, 0x326d10, 0x000000, 0x327d02, 0x000000, 0x327f01, 0x000000,
+ 0x000000, 0x000000, 0x328001, 0x000000, 0x328101, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x328201, 0x000000, 0x328301, 0x328401, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x328508, 0x000000, 0x328d02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x328f02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x329102, 0x000000, 0x000000,
+ 0x329301, 0x000000, 0x000000, 0x329401, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x329501, 0x000000, 0x000000, 0x000000, 0x000000, 0x329601, 0x000000, 0x329701,
+ 0x000000, 0x329801, 0x000000, 0x000000, 0x000000, 0x329904, 0x329d01, 0x329e01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x329f04, 0x32a302, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x32a504, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x32a901, 0x000000, 0x32aa01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x32ab0a, 0x000000,
+ 0x000000, 0x32b502, 0x000000, 0x000000, 0x000000, 0x32b701, 0x32b801, 0x000000,
+ 0x32b90a, 0x32c301, 0x32c404, 0x32c801, 0x32c902, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x32cb01, 0x000000, 0x000000, 0x32cc02, 0x000000, 0x000000, 0x32ce02,
+ 0x32d008, 0x000000, 0x32d803, 0x000000, 0x000000, 0x000000, 0x32db01, 0x000000,
+ 0x32dc01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x32dd02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x32df03, 0x32e201, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x32e301, 0x000000, 0x000000, 0x32e403, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x32e705, 0x000000,
+ 0x32ec03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x32ef01,
+ 0x000000, 0x000000, 0x32f002, 0x000000, 0x000000, 0x000000, 0x32f201, 0x32f302,
+ 0x32f501, 0x000000, 0x000000, 0x000000, 0x000000, 0x32f602, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x32f805, 0x32fd02, 0x000000,
+ 0x32ff04, 0x000000, 0x000000, 0x330301, 0x330406, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x330a01, 0x000000, 0x000000, 0x330b03, 0x000000, 0x330e06,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x331401, 0x331501, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x331601, 0x331701, 0x331801, 0x000000,
+ 0x331903, 0x000000, 0x000000, 0x000000, 0x331c01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x331d01, 0x000000, 0x331e01, 0x331f06,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x332505, 0x000000, 0x332a01,
+ 0x000000, 0x332b01, 0x000000, 0x000000, 0x000000, 0x332c18, 0x000000, 0x334401,
+ 0x334502, 0x334701, 0x334801, 0x000000, 0x000000, 0x334901, 0x000000, 0x334a03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x334d10, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x335d12, 0x000000, 0x336f01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x337001, 0x000000,
+ 0x000000, 0x337104, 0x000000, 0x000000, 0x000000, 0x000000, 0x337502, 0x000000,
+ 0x000000, 0x000000, 0x337701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x337801, 0x000000, 0x337905, 0x337e04, 0x338202, 0x000000, 0x000000, 0x000000,
+ 0x338401, 0x000000, 0x000000, 0x338501, 0x000000, 0x000000, 0x33860f, 0x000000,
+ 0x000000, 0x339501, 0x000000, 0x000000, 0x000000, 0x339605, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x339b07, 0x000000, 0x000000, 0x33a20d, 0x33af09, 0x000000, 0x000000, 0x000000,
+ 0x33b808, 0x000000, 0x33c004, 0x33c402, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x33c604, 0x33ca01, 0x000000, 0x33cb01, 0x33cc01, 0x000000, 0x33cd0a,
+ 0x000000, 0x33d704, 0x000000, 0x000000, 0x000000, 0x000000, 0x33db01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x33dc16, 0x33f202, 0x000000, 0x000000, 0x33f401,
+ 0x33f501, 0x000000, 0x000000, 0x33f602, 0x000000, 0x000000, 0x33f805, 0x000000,
+ 0x33fd01, 0x000000, 0x000000, 0x000000, 0x33fe0e, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x340c03, 0x000000, 0x340f01, 0x000000, 0x000000, 0x000000, 0x341001,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x341101, 0x000000,
+ 0x000000, 0x341204, 0x000000, 0x341607, 0x000000, 0x000000, 0x341d01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x341e0b, 0x000000, 0x342908, 0x000000,
+ 0x343104, 0x000000, 0x343501, 0x343602, 0x343802, 0x000000, 0x000000, 0x343a01,
+ 0x343b01, 0x000000, 0x343c01, 0x343d02, 0x000000, 0x343f04, 0x000000, 0x344301,
+ 0x344405, 0x344901, 0x000000, 0x344a01, 0x344b01, 0x000000, 0x344c02, 0x344e04,
+ 0x345206, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x345808, 0x346001,
+ 0x000000, 0x34610a, 0x000000, 0x000000, 0x000000, 0x000000, 0x346b02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x346d01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x346e02, 0x000000, 0x000000, 0x000000, 0x000000, 0x347002, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x347201, 0x000000, 0x000000, 0x000000,
+ 0x347302, 0x000000, 0x000000, 0x347508, 0x347d01, 0x000000, 0x347e06, 0x000000,
+ 0x348403, 0x000000, 0x348701, 0x348802, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x348a06, 0x000000, 0x349001, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x349101, 0x349201, 0x000000, 0x349304, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x349701, 0x349801, 0x349904, 0x349d01, 0x000000, 0x349e01, 0x349f02,
+ 0x34a101, 0x34a201, 0x000000, 0x34a302, 0x000000, 0x000000, 0x34a501, 0x34a602,
+ 0x000000, 0x34a806, 0x000000, 0x000000, 0x000000, 0x000000, 0x34ae03, 0x000000,
+ 0x34b103, 0x000000, 0x34b401, 0x000000, 0x000000, 0x34b501, 0x000000, 0x000000,
+ 0x34b601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x34b701,
+ 0x34b803, 0x000000, 0x34bb10, 0x000000, 0x000000, 0x34cb06, 0x34d103, 0x000000,
+ 0x000000, 0x34d403, 0x34d702, 0x000000, 0x000000, 0x000000, 0x34d905, 0x34de02,
+ 0x000000, 0x34e002, 0x34e201, 0x000000, 0x34e303, 0x000000, 0x34e601, 0x000000,
+ 0x34e701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x34e802,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x34ea02, 0x000000,
+ 0x000000, 0x000000, 0x34ec06, 0x34f201, 0x000000, 0x000000, 0x000000, 0x34f301,
+ 0x34f401, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x34f505, 0x000000, 0x34fa01, 0x000000, 0x000000, 0x000000, 0x000000, 0x34fb02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x34fd03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x350002,
+ 0x000000, 0x000000, 0x350202, 0x000000, 0x000000, 0x000000, 0x000000, 0x350405,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x350903, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x350c05, 0x000000, 0x351109, 0x000000, 0x351a05, 0x000000, 0x351f01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x352002, 0x352201, 0x000000, 0x352301, 0x352401, 0x352501, 0x35260a, 0x000000,
+ 0x000000, 0x353001, 0x353105, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x353602, 0x000000, 0x353802, 0x353a02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x353c05, 0x000000,
+ 0x000000, 0x000000, 0x354104, 0x000000, 0x000000, 0x000000, 0x354510, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x355502,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x355703, 0x000000, 0x355a01, 0x000000, 0x000000, 0x355b02,
+ 0x000000, 0x000000, 0x355d01, 0x000000, 0x000000, 0x000000, 0x355e01, 0x000000,
+ 0x355f04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x356301, 0x000000,
+ 0x356402, 0x356601, 0x000000, 0x000000, 0x356703, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x356a0a, 0x357401, 0x000000, 0x357501, 0x000000,
+ 0x000000, 0x000000, 0x357605, 0x000000, 0x000000, 0x000000, 0x357b02, 0x357d03,
+ 0x358005, 0x000000, 0x000000, 0x000000, 0x358503, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x358802, 0x000000, 0x000000, 0x000000, 0x000000, 0x358a07,
+ 0x000000, 0x000000, 0x000000, 0x359101, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x359201, 0x000000, 0x359301,
+ 0x359402, 0x000000, 0x000000, 0x359605, 0x359b06, 0x35a101, 0x35a201, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x35a302,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x35a502,
+ 0x000000, 0x35a701, 0x000000, 0x000000, 0x35a801, 0x35a909, 0x35b204, 0x000000,
+ 0x35b601, 0x000000, 0x000000, 0x35b701, 0x000000, 0x000000, 0x000000, 0x35b804,
+ 0x000000, 0x35bc05, 0x000000, 0x000000, 0x35c101, 0x35c201, 0x000000, 0x35c301,
+ 0x35c401, 0x000000, 0x35c501, 0x000000, 0x000000, 0x35c601, 0x000000, 0x000000,
+ 0x000000, 0x35c701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x35c803, 0x000000, 0x000000, 0x35cb03, 0x000000, 0x35ce01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x35cf02, 0x35d109, 0x35da0a, 0x000000, 0x000000, 0x000000, 0x35e401,
+ 0x000000, 0x35e503, 0x000000, 0x35e803, 0x000000, 0x35eb02, 0x35ed0a, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x35f701, 0x35f811, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x360902, 0x000000, 0x360b02, 0x000000, 0x000000, 0x360d01,
+ 0x000000, 0x000000, 0x360e01, 0x000000, 0x360f02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x361101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x361202, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x36140d, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x362102, 0x000000, 0x000000, 0x362301, 0x000000, 0x000000, 0x362401, 0x000000,
+ 0x000000, 0x362501, 0x362605, 0x000000, 0x362b01, 0x000000, 0x362c01, 0x362d02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x362f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x363005,
+ 0x363508, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x363d02, 0x000000, 0x363f01, 0x364001, 0x364101,
+ 0x000000, 0x000000, 0x364203, 0x364503, 0x000000, 0x364802, 0x364a01, 0x364b04,
+ 0x364f02, 0x000000, 0x000000, 0x365103, 0x000000, 0x000000, 0x000000, 0x365401,
+ 0x000000, 0x000000, 0x000000, 0x365501, 0x000000, 0x000000, 0x000000, 0x365601,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x365705, 0x365c01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x365d01, 0x000000, 0x365e01, 0x000000, 0x000000,
+ 0x365f01, 0x000000, 0x000000, 0x000000, 0x366001, 0x000000, 0x000000, 0x366102,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x366303,
+ 0x000000, 0x366605, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x366b01,
+ 0x000000, 0x366c01, 0x000000, 0x366d01, 0x000000, 0x000000, 0x366e09, 0x000000,
+ 0x36770a, 0x000000, 0x000000, 0x000000, 0x368101, 0x000000, 0x000000, 0x368201,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x368301, 0x000000, 0x36840a, 0x000000,
+ 0x368e02, 0x369001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x369114, 0x36a501,
+ 0x000000, 0x36a603, 0x36a901, 0x000000, 0x36aa01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x36ab03, 0x000000, 0x000000, 0x36ae13, 0x000000, 0x000000, 0x000000,
+ 0x36c101, 0x000000, 0x36c202, 0x000000, 0x36c414, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x36d802, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x36da03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x36dd02, 0x000000, 0x000000, 0x000000, 0x36df01, 0x36e002, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x36e201, 0x000000, 0x000000, 0x36e304, 0x36e707, 0x000000, 0x36ee01,
+ 0x000000, 0x36ef02, 0x36f101, 0x000000, 0x000000, 0x36f201, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x36f304,
+ 0x000000, 0x000000, 0x000000, 0x36f702, 0x000000, 0x36f901, 0x36fa01, 0x000000,
+ 0x36fb03, 0x36fe06, 0x370401, 0x370501, 0x370606, 0x370c02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x370e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x370f01, 0x371001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x371104, 0x000000, 0x371501, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x371601, 0x000000, 0x000000, 0x000000, 0x371701, 0x000000,
+ 0x000000, 0x371802, 0x000000, 0x000000, 0x000000, 0x371a01, 0x371b01, 0x000000,
+ 0x000000, 0x371c08, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x372401, 0x000000, 0x000000, 0x000000, 0x000000, 0x372501,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x372601, 0x000000, 0x000000, 0x372701,
+ 0x000000, 0x000000, 0x372801, 0x000000, 0x372905, 0x372e01, 0x000000, 0x372f08,
+ 0x373702, 0x000000, 0x000000, 0x373902, 0x000000, 0x373b01, 0x000000, 0x000000,
+ 0x000000, 0x373c01, 0x373d04, 0x000000, 0x000000, 0x000000, 0x000000, 0x374103,
+ 0x000000, 0x000000, 0x374402, 0x000000, 0x374601, 0x000000, 0x000000, 0x000000,
+ 0x374701, 0x000000, 0x000000, 0x374801, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x374902, 0x000000, 0x374b01,
+ 0x374c02, 0x000000, 0x000000, 0x374e02, 0x000000, 0x375001, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x375101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x37520a, 0x000000, 0x000000, 0x375c01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x375d02, 0x000000, 0x000000, 0x375f02, 0x000000,
+ 0x000000, 0x376101, 0x000000, 0x000000, 0x376202, 0x376401, 0x000000, 0x000000,
+ 0x376503, 0x376802, 0x376a03, 0x000000, 0x376d07, 0x000000, 0x000000, 0x377401,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x377501, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x377601, 0x377704, 0x000000, 0x000000, 0x000000,
+ 0x377b04, 0x000000, 0x000000, 0x377f17, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x379603,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x379901, 0x000000, 0x000000, 0x379a05, 0x000000, 0x000000, 0x000000,
+ 0x379f01, 0x37a005, 0x000000, 0x000000, 0x000000, 0x37a501, 0x000000, 0x000000,
+ 0x000000, 0x37a603, 0x000000, 0x37a901, 0x000000, 0x000000, 0x37aa03, 0x000000,
+ 0x000000, 0x37ad02, 0x000000, 0x000000, 0x37af04, 0x000000, 0x000000, 0x000000,
+ 0x37b301, 0x000000, 0x37b401, 0x000000, 0x000000, 0x000000, 0x000000, 0x37b505,
+ 0x37ba02, 0x37bc08, 0x000000, 0x000000, 0x37c401, 0x000000, 0x000000, 0x37c501,
+ 0x000000, 0x37c603, 0x37c901, 0x000000, 0x000000, 0x000000, 0x37ca01, 0x000000,
+ 0x000000, 0x000000, 0x37cb01, 0x37cc01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x37cd02, 0x000000, 0x000000, 0x000000, 0x37cf01, 0x000000, 0x000000, 0x000000,
+ 0x37d001, 0x000000, 0x37d103, 0x000000, 0x37d408, 0x37dc01, 0x37dd02, 0x37df01,
+ 0x37e002, 0x000000, 0x37e201, 0x000000, 0x37e301, 0x37e402, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x37e601, 0x37e705, 0x000000, 0x000000, 0x37ec01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x37ed02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x37ef01, 0x000000, 0x000000, 0x000000, 0x000000, 0x37f001,
+ 0x37f104, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x37f503, 0x37f801,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x37f901, 0x37fa01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x37fb01, 0x000000, 0x000000, 0x000000,
+ 0x37fc04, 0x000000, 0x000000, 0x380003, 0x380301, 0x000000, 0x380401, 0x000000,
+ 0x000000, 0x380503, 0x000000, 0x380801, 0x380901, 0x000000, 0x000000, 0x380a0f,
+ 0x000000, 0x381902, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x381b01,
+ 0x381c06, 0x382202, 0x000000, 0x382401, 0x000000, 0x000000, 0x382505, 0x000000,
+ 0x382a15, 0x000000, 0x383f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x384004, 0x000000, 0x000000, 0x384401, 0x000000, 0x384502, 0x000000, 0x384701,
+ 0x384808, 0x000000, 0x000000, 0x000000, 0x385007, 0x000000, 0x000000, 0x385706,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x385d01, 0x000000, 0x000000, 0x000000, 0x385e04, 0x000000, 0x000000,
+ 0x386205, 0x000000, 0x386702, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x386901, 0x000000, 0x000000, 0x386a03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x386d08, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x387503, 0x000000, 0x387803, 0x000000, 0x387b06, 0x000000,
+ 0x000000, 0x388101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x388202,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x388408, 0x000000,
+ 0x388c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x388d04,
+ 0x389101, 0x000000, 0x000000, 0x000000, 0x389202, 0x000000, 0x000000, 0x000000,
+ 0x389401, 0x389501, 0x000000, 0x000000, 0x000000, 0x389601, 0x389701, 0x389803,
+ 0x389b01, 0x389c01, 0x389d01, 0x389e01, 0x389f01, 0x38a002, 0x000000, 0x38a202,
+ 0x000000, 0x38a401, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x38a505, 0x000000, 0x38aa05, 0x38af01,
+ 0x38b001, 0x38b101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x38b20b, 0x38bd04, 0x38c107,
+ 0x000000, 0x38c807, 0x000000, 0x38cf03, 0x000000, 0x38d201, 0x000000, 0x000000,
+ 0x38d302, 0x38d501, 0x38d601, 0x000000, 0x000000, 0x38d701, 0x000000, 0x000000,
+ 0x000000, 0x38d801, 0x000000, 0x38d902, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x38db08, 0x38e301, 0x000000, 0x000000, 0x38e401, 0x38e502, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x38e701, 0x000000, 0x000000, 0x38e802,
+ 0x000000, 0x000000, 0x000000, 0x38ea05, 0x38ef01, 0x000000, 0x000000, 0x38f001,
+ 0x38f101, 0x38f201, 0x000000, 0x000000, 0x38f302, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x38f501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x38f604, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x38fa01, 0x000000, 0x38fb0c, 0x000000,
+ 0x000000, 0x390701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x390803, 0x000000,
+ 0x000000, 0x390b01, 0x390c06, 0x391202, 0x000000, 0x391402, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x39160c, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x392201, 0x000000, 0x392303, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x392602, 0x000000, 0x392801, 0x392901, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x392a01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x392b03, 0x000000, 0x000000, 0x392e03, 0x393102, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x393301, 0x000000, 0x000000, 0x000000, 0x000000, 0x393401,
+ 0x393507, 0x000000, 0x393c01, 0x000000, 0x000000, 0x393d04, 0x000000, 0x394103,
+ 0x000000, 0x394404, 0x000000, 0x000000, 0x000000, 0x394803, 0x000000, 0x000000,
+ 0x000000, 0x394b01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x394c01, 0x000000, 0x000000, 0x394d0a, 0x000000,
+ 0x000000, 0x000000, 0x395701, 0x000000, 0x000000, 0x395801, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x395901, 0x395a03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x395d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x395e0a, 0x396802,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x396a06, 0x397006, 0x397601, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x397701, 0x000000, 0x000000, 0x000000, 0x397806, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x397e01, 0x000000, 0x397f01, 0x398005, 0x398502, 0x000000,
+ 0x000000, 0x000000, 0x398701, 0x398802, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x398a02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x398c03, 0x398f01, 0x399003, 0x000000, 0x000000, 0x399302, 0x399502, 0x000000,
+ 0x000000, 0x000000, 0x399709, 0x39a002, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x39a203, 0x39a502, 0x39a701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x39a801, 0x39a903, 0x39ac06, 0x39b201, 0x000000, 0x39b301, 0x000000, 0x39b401,
+ 0x39b501, 0x000000, 0x000000, 0x39b601, 0x000000, 0x000000, 0x39b701, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x39b802, 0x000000, 0x39ba03, 0x000000, 0x000000,
+ 0x39bd03, 0x000000, 0x000000, 0x39c001, 0x39c102, 0x39c307, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x39ca03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x39cd05, 0x000000, 0x39d201, 0x39d302, 0x39d503, 0x000000,
+ 0x000000, 0x000000, 0x39d801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x39d901, 0x000000, 0x000000, 0x000000, 0x000000, 0x39da01, 0x000000,
+ 0x39db03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x39de01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x39df02,
+ 0x000000, 0x39e101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x39e201, 0x000000, 0x39e303, 0x000000, 0x39e601, 0x000000, 0x000000, 0x000000,
+ 0x39e702, 0x000000, 0x000000, 0x39e901, 0x39ea03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x39ed03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x39f00c,
+ 0x000000, 0x39fc01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x39fd01,
+ 0x000000, 0x000000, 0x39fe18, 0x3a1602, 0x000000, 0x3a1803, 0x000000, 0x3a1b01,
+ 0x000000, 0x3a1c01, 0x3a1d02, 0x3a1f01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x3a2001, 0x000000, 0x3a210c, 0x3a2d01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x3a2e0c, 0x000000, 0x3a3a01, 0x000000, 0x3a3b03, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3a3e09, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3a470b, 0x000000, 0x000000, 0x3a5201, 0x000000, 0x3a5302,
+ 0x3a5501, 0x3a5601, 0x000000, 0x000000, 0x3a5709, 0x000000, 0x3a6002, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3a6201, 0x000000,
+ 0x000000, 0x3a6301, 0x3a6402, 0x3a6601, 0x000000, 0x000000, 0x3a670c, 0x000000,
+ 0x000000, 0x000000, 0x3a7309, 0x3a7c11, 0x000000, 0x000000, 0x3a8d05, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3a9203, 0x000000, 0x000000, 0x3a9503, 0x3a9801,
+ 0x000000, 0x000000, 0x3a9912, 0x3aab01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3aac01, 0x000000, 0x3aad01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x3aae02, 0x000000, 0x000000, 0x3ab004, 0x3ab404, 0x3ab801, 0x000000,
+ 0x000000, 0x000000, 0x3ab901, 0x000000, 0x000000, 0x000000, 0x3aba08, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x3ac201, 0x3ac301, 0x000000, 0x000000,
+ 0x000000, 0x3ac401, 0x3ac502, 0x3ac702, 0x3ac90f, 0x000000, 0x3ad801, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3ad909, 0x000000, 0x000000, 0x3ae207, 0x3ae902,
+ 0x3aeb01, 0x000000, 0x000000, 0x3aec01, 0x3aed02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3aef01, 0x000000, 0x000000,
+ 0x000000, 0x3af005, 0x000000, 0x000000, 0x000000, 0x000000, 0x3af502, 0x000000,
+ 0x3af701, 0x000000, 0x3af803, 0x000000, 0x3afb02, 0x000000, 0x000000, 0x3afd03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3b0001, 0x000000, 0x000000, 0x3b0103, 0x000000, 0x3b0404, 0x3b0802, 0x000000,
+ 0x000000, 0x000000, 0x3b0a03, 0x000000, 0x3b0d01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3b0e01, 0x000000, 0x000000, 0x3b0f03, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x3b1206, 0x3b1801, 0x000000, 0x000000,
+ 0x000000, 0x3b1901, 0x000000, 0x3b1a03, 0x000000, 0x000000, 0x3b1d01, 0x000000,
+ 0x3b1e02, 0x000000, 0x000000, 0x000000, 0x3b2001, 0x3b2101, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x3b2201, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3b230e, 0x000000, 0x000000, 0x3b3108, 0x3b3907, 0x000000,
+ 0x3b4001, 0x3b4105, 0x000000, 0x3b4602, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3b4801, 0x000000, 0x3b4901, 0x3b4a04, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x3b4e02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x3b5002, 0x3b5207, 0x000000, 0x3b5901, 0x3b5a01, 0x3b5b08, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3b6302, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3b6501, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x3b6606, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3b6c01, 0x000000, 0x3b6d12, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3b7f02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3b8104, 0x000000, 0x3b8502, 0x3b8708, 0x000000, 0x3b8f02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x3b9101, 0x3b9201, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3b9303, 0x000000, 0x000000,
+ 0x000000, 0x3b9607, 0x3b9d04, 0x3ba101, 0x000000, 0x000000, 0x000000, 0x3ba20a,
+ 0x000000, 0x000000, 0x000000, 0x3bac02, 0x3bae01, 0x000000, 0x000000, 0x000000,
+ 0x3baf01, 0x3bb001, 0x3bb103, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3bb404, 0x000000, 0x000000, 0x000000, 0x000000, 0x3bb802, 0x000000, 0x000000,
+ 0x3bba05, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3bbf01, 0x3bc007, 0x000000, 0x000000, 0x3bc702, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x3bc901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3bca01, 0x3bcb01, 0x000000, 0x3bcc02, 0x000000, 0x000000, 0x3bce01, 0x000000,
+ 0x000000, 0x3bcf01, 0x3bd001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3bd103,
+ 0x3bd401, 0x000000, 0x000000, 0x000000, 0x3bd501, 0x3bd601, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3bd701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3bd803, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x3bdb01, 0x000000, 0x3bdc01, 0x3bdd04, 0x000000, 0x3be104, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3be501, 0x000000, 0x3be606, 0x000000, 0x3bec01,
+ 0x000000, 0x000000, 0x3bed01, 0x000000, 0x000000, 0x3bee01, 0x3bef01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3bf002, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3bf201, 0x000000, 0x000000, 0x3bf301, 0x3bf401, 0x3bf506, 0x000000, 0x3bfb01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3bfc01, 0x000000, 0x3bfd01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3bfe01, 0x3bff04, 0x3c0310, 0x000000, 0x3c130c, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x3c1f01, 0x000000, 0x000000, 0x3c2002,
+ 0x000000, 0x3c2201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3c2301, 0x000000, 0x000000, 0x3c2401, 0x3c2501, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3c2601, 0x000000, 0x3c2702, 0x000000, 0x000000, 0x000000, 0x3c2903, 0x000000,
+ 0x3c2c05, 0x3c3101, 0x000000, 0x000000, 0x000000, 0x000000, 0x3c3201, 0x000000,
+ 0x000000, 0x000000, 0x3c3304, 0x000000, 0x3c370c, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x3c4307, 0x000000, 0x3c4a03, 0x000000,
+ 0x000000, 0x3c4d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x3c4e01, 0x000000,
+ 0x000000, 0x000000, 0x3c4f01, 0x000000, 0x000000, 0x000000, 0x3c5008, 0x3c5802,
+ 0x3c5a01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3c5b03, 0x000000, 0x000000, 0x3c5e01, 0x000000, 0x000000, 0x000000, 0x3c5f02,
+ 0x000000, 0x000000, 0x3c6102, 0x000000, 0x3c6301, 0x3c6401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3c6502, 0x3c6701, 0x000000, 0x3c6801, 0x000000,
+ 0x000000, 0x3c6901, 0x000000, 0x000000, 0x3c6a01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3c6b0d, 0x000000, 0x000000, 0x000000, 0x000000, 0x3c7803,
+ 0x000000, 0x000000, 0x3c7b01, 0x000000, 0x3c7c01, 0x3c7d01, 0x000000, 0x000000,
+ 0x000000, 0x3c7e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3c7f04,
+ 0x000000, 0x3c8306, 0x3c8901, 0x000000, 0x000000, 0x000000, 0x3c8a01, 0x000000,
+ 0x000000, 0x000000, 0x3c8b01, 0x000000, 0x3c8c0b, 0x000000, 0x000000, 0x3c970a,
+ 0x000000, 0x3ca102, 0x000000, 0x000000, 0x000000, 0x3ca301, 0x000000, 0x3ca401,
+ 0x3ca501, 0x000000, 0x000000, 0x3ca612, 0x000000, 0x000000, 0x3cb801, 0x3cb902,
+ 0x000000, 0x3cbb04, 0x3cbf01, 0x000000, 0x3cc001, 0x000000, 0x000000, 0x000000,
+ 0x3cc101, 0x000000, 0x3cc202, 0x000000, 0x3cc408, 0x3ccc08, 0x3cd404, 0x3cd801,
+ 0x3cd904, 0x000000, 0x3cdd01, 0x000000, 0x3cde03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3ce102, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x3ce301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3ce404,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3ce801,
+ 0x3ce901, 0x000000, 0x000000, 0x000000, 0x000000, 0x3cea01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x3ceb01, 0x000000, 0x000000, 0x000000,
+ 0x3cec03, 0x000000, 0x000000, 0x000000, 0x000000, 0x3cef01, 0x000000, 0x000000,
+ 0x3cf001, 0x000000, 0x000000, 0x000000, 0x000000, 0x3cf101, 0x3cf201, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3cf305, 0x000000, 0x3cf803,
+ 0x000000, 0x000000, 0x3cfb01, 0x000000, 0x000000, 0x3cfc02, 0x000000, 0x000000,
+ 0x3cfe02, 0x3d0001, 0x3d0102, 0x000000, 0x000000, 0x3d0310, 0x000000, 0x3d1301,
+ 0x3d140c, 0x000000, 0x000000, 0x3d2001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3d2101, 0x000000, 0x000000, 0x3d2205, 0x000000,
+ 0x000000, 0x000000, 0x3d2702, 0x000000, 0x3d2906, 0x000000, 0x000000, 0x000000,
+ 0x3d2f01, 0x000000, 0x000000, 0x3d3003, 0x000000, 0x000000, 0x3d3301, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x3d3405, 0x000000, 0x000000, 0x3d3901,
+ 0x000000, 0x000000, 0x3d3a01, 0x000000, 0x000000, 0x000000, 0x000000, 0x3d3b01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3d3c01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3d3d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3d3e02, 0x000000,
+ 0x000000, 0x3d4005, 0x000000, 0x3d4501, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3d4601, 0x000000, 0x3d4702, 0x000000, 0x000000, 0x3d4907, 0x000000, 0x000000,
+ 0x000000, 0x3d5002, 0x000000, 0x3d5201, 0x3d5301, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3d5401, 0x000000,
+ 0x3d5501, 0x3d5601, 0x000000, 0x3d5701, 0x000000, 0x3d5802, 0x000000, 0x3d5a02,
+ 0x000000, 0x3d5c03, 0x000000, 0x3d5f04, 0x3d6301, 0x000000, 0x3d6401, 0x000000,
+ 0x3d6502, 0x3d6704, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3d6b01,
+ 0x000000, 0x000000, 0x000000, 0x3d6c01, 0x000000, 0x3d6d0e, 0x000000, 0x000000,
+ 0x000000, 0x3d7b05, 0x000000, 0x3d8001, 0x3d8101, 0x000000, 0x000000, 0x3d8201,
+ 0x000000, 0x3d8301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3d8403,
+ 0x000000, 0x000000, 0x000000, 0x3d8701, 0x000000, 0x3d8806, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x3d8e06, 0x000000, 0x000000, 0x000000,
+ 0x3d9402, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3d9604, 0x000000, 0x000000, 0x000000, 0x3d9a0d, 0x000000,
+ 0x000000, 0x3da701, 0x000000, 0x000000, 0x000000, 0x000000, 0x3da805, 0x3dad01,
+ 0x3dae01, 0x000000, 0x000000, 0x3daf0f, 0x000000, 0x000000, 0x000000, 0x3dbe04,
+ 0x000000, 0x3dc207, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3dc901, 0x000000,
+ 0x000000, 0x000000, 0x3dca02, 0x000000, 0x000000, 0x000000, 0x000000, 0x3dcc01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3dcd02, 0x3dcf03, 0x000000,
+ 0x000000, 0x3dd202, 0x000000, 0x000000, 0x3dd402, 0x3dd601, 0x000000, 0x3dd701,
+ 0x000000, 0x000000, 0x3dd802, 0x000000, 0x3dda03, 0x3ddd01, 0x3dde04, 0x3de201,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3de301, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3de406, 0x3dea05, 0x3def02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3df102, 0x3df301, 0x000000, 0x3df403, 0x000000, 0x000000,
+ 0x000000, 0x3df701, 0x000000, 0x000000, 0x000000, 0x000000, 0x3df801, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3df906, 0x000000, 0x3dff04,
+ 0x000000, 0x000000, 0x3e0301, 0x000000, 0x000000, 0x000000, 0x000000, 0x3e0401,
+ 0x3e0505, 0x3e0a02, 0x3e0c03, 0x000000, 0x000000, 0x3e0f01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3e1001, 0x3e1102, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3e1301, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3e1401, 0x000000, 0x000000,
+ 0x3e1501, 0x000000, 0x000000, 0x000000, 0x3e1601, 0x000000, 0x3e1701, 0x3e1801,
+ 0x000000, 0x3e1903, 0x3e1c01, 0x3e1d09, 0x000000, 0x3e2604, 0x3e2a01, 0x000000,
+ 0x3e2b08, 0x000000, 0x3e330b, 0x3e3e02, 0x000000, 0x3e400d, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3e4d08, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3e5503, 0x000000, 0x000000, 0x000000, 0x3e5805,
+ 0x000000, 0x000000, 0x3e5d01, 0x000000, 0x3e5e0a, 0x000000, 0x000000, 0x3e6801,
+ 0x000000, 0x000000, 0x3e6903, 0x000000, 0x000000, 0x3e6c01, 0x3e6d01, 0x3e6e03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3e7104,
+ 0x000000, 0x000000, 0x000000, 0x3e7501, 0x000000, 0x3e7604, 0x3e7a03, 0x3e7d01,
+ 0x000000, 0x3e7e01, 0x000000, 0x3e7f08, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3e8701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x3e8802, 0x3e8a02, 0x000000, 0x3e8c01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3e8d01, 0x000000, 0x000000, 0x3e8e08, 0x3e9601, 0x3e9701, 0x3e9801, 0x000000,
+ 0x000000, 0x3e9904, 0x000000, 0x3e9d02, 0x000000, 0x3e9f01, 0x000000, 0x3ea002,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3ea201, 0x3ea301,
+ 0x3ea402, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3ea602, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3ea802, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x3eaa01, 0x3eab03, 0x000000, 0x000000, 0x3eae01, 0x000000, 0x000000,
+ 0x000000, 0x3eaf01, 0x000000, 0x000000, 0x3eb001, 0x3eb102, 0x3eb303, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x3eb601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3eb702, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3eb902, 0x3ebb01, 0x3ebc02,
+ 0x000000, 0x000000, 0x3ebe01, 0x000000, 0x000000, 0x3ebf03, 0x000000, 0x000000,
+ 0x000000, 0x3ec201, 0x3ec301, 0x000000, 0x000000, 0x3ec409, 0x3ecd01, 0x000000,
+ 0x000000, 0x000000, 0x3ece01, 0x000000, 0x000000, 0x000000, 0x3ecf01, 0x000000,
+ 0x3ed007, 0x000000, 0x000000, 0x000000, 0x3ed701, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3ed804, 0x3edc04, 0x000000, 0x3ee006, 0x000000, 0x3ee601, 0x000000, 0x3ee701,
+ 0x3ee897, 0x000000, 0x000000, 0x3f7f03, 0x000000, 0x000000, 0x3f8201, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3f8301, 0x3f8401,
+ 0x000000, 0x000000, 0x3f8501, 0x000000, 0x000000, 0x3f8605, 0x000000, 0x3f8b01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3f8c01,
+ 0x000000, 0x000000, 0x3f8d03, 0x3f9001, 0x000000, 0x3f9101, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3f9201, 0x3f9301, 0x3f9403, 0x3f9701, 0x000000, 0x000000,
+ 0x000000, 0x3f9803, 0x3f9b02, 0x000000, 0x000000, 0x000000, 0x3f9d03, 0x000000,
+ 0x3fa001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3fa101, 0x000000, 0x000000, 0x000000, 0x000000, 0x3fa201,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3fa301,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3fa402, 0x3fa602, 0x3fa805, 0x000000, 0x3fad02, 0x000000, 0x3faf01, 0x000000,
+ 0x3fb001, 0x000000, 0x3fb101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3fb201,
+ 0x3fb304, 0x3fb701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x3fb802, 0x3fba03, 0x000000, 0x3fbd03, 0x000000, 0x000000, 0x000000, 0x3fc005,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3fc507,
+ 0x3fcc03, 0x3fcf01, 0x000000, 0x000000, 0x000000, 0x000000, 0x3fd003, 0x3fd305,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x3fd801, 0x000000, 0x000000,
+ 0x3fd901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3fda01, 0x000000, 0x000000, 0x3fdb01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3fdc01, 0x000000, 0x000000, 0x000000, 0x3fdd07, 0x000000,
+ 0x3fe402, 0x000000, 0x000000, 0x000000, 0x000000, 0x3fe601, 0x3fe702, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x3fe901, 0x3fea01, 0x3feb01, 0x3fec01, 0x000000,
+ 0x000000, 0x3fed01, 0x000000, 0x000000, 0x000000, 0x000000, 0x3fee01, 0x3fef01,
+ 0x000000, 0x3ff005, 0x3ff502, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x3ff702, 0x000000, 0x000000, 0x000000, 0x000000, 0x3ff901,
+ 0x3ffa01, 0x000000, 0x3ffb01, 0x000000, 0x000000, 0x000000, 0x3ffc02, 0x3ffe07,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x400509, 0x000000, 0x000000,
+ 0x000000, 0x400e03, 0x000000, 0x401102, 0x401302, 0x401501, 0x401602, 0x000000,
+ 0x000000, 0x000000, 0x401802, 0x401a01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x401b01, 0x000000, 0x401c02, 0x401e08, 0x402601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x402704, 0x000000, 0x000000, 0x000000, 0x402b06, 0x403101,
+ 0x40320e, 0x404001, 0x000000, 0x404101, 0x404202, 0x000000, 0x000000, 0x000000,
+ 0x404401, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x404502, 0x000000, 0x000000, 0x404702, 0x404901, 0x000000, 0x000000, 0x404a01,
+ 0x000000, 0x000000, 0x404b02, 0x000000, 0x000000, 0x000000, 0x000000, 0x404d01,
+ 0x000000, 0x404e03, 0x000000, 0x000000, 0x40510d, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x405e01, 0x000000, 0x000000, 0x405f01, 0x000000, 0x406003,
+ 0x406301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x406404, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x406802, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x406a07, 0x000000, 0x000000, 0x407105, 0x000000, 0x000000, 0x407602, 0x000000,
+ 0x407801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x407902, 0x000000, 0x000000, 0x000000, 0x407b01, 0x407c02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x407e02,
+ 0x408003, 0x000000, 0x000000, 0x000000, 0x408301, 0x000000, 0x408402, 0x000000,
+ 0x40860a, 0x000000, 0x409002, 0x000000, 0x000000, 0x409203, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x409507, 0x000000, 0x000000, 0x409c01,
+ 0x409d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x409e04, 0x40a201, 0x40a303, 0x000000, 0x000000, 0x000000,
+ 0x40a601, 0x000000, 0x40a701, 0x000000, 0x000000, 0x000000, 0x40a805, 0x000000,
+ 0x000000, 0x40ad04, 0x000000, 0x000000, 0x40b103, 0x40b405, 0x000000, 0x000000,
+ 0x000000, 0x40b903, 0x000000, 0x000000, 0x000000, 0x40bc0c, 0x40c801, 0x000000,
+ 0x000000, 0x000000, 0x40c901, 0x40ca08, 0x40d201, 0x000000, 0x40d302, 0x000000,
+ 0x40d502, 0x000000, 0x000000, 0x000000, 0x40d701, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x40d802, 0x000000, 0x000000, 0x000000, 0x000000, 0x40da01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x40db08,
+ 0x40e301, 0x000000, 0x000000, 0x000000, 0x000000, 0x40e405, 0x000000, 0x40e916,
+ 0x000000, 0x000000, 0x000000, 0x40ff01, 0x000000, 0x000000, 0x410004, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x410401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x410505, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x410a02, 0x000000, 0x000000, 0x000000, 0x000000, 0x410c01, 0x410d01,
+ 0x000000, 0x000000, 0x000000, 0x410e01, 0x000000, 0x000000, 0x410f0b, 0x411a04,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x411e01, 0x000000, 0x411f01, 0x000000,
+ 0x000000, 0x000000, 0x412003, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x41230a, 0x000000, 0x412d03, 0x000000, 0x000000, 0x000000, 0x000000, 0x413001,
+ 0x000000, 0x413102, 0x000000, 0x413301, 0x000000, 0x413401, 0x000000, 0x413502,
+ 0x000000, 0x413709, 0x000000, 0x000000, 0x000000, 0x414002, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x414202, 0x000000, 0x000000, 0x000000,
+ 0x414402, 0x000000, 0x000000, 0x000000, 0x000000, 0x414601, 0x000000, 0x414701,
+ 0x414802, 0x000000, 0x000000, 0x000000, 0x414a01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x414b02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x414d06, 0x415302, 0x000000, 0x000000, 0x415501,
+ 0x415601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x415701, 0x000000, 0x415801, 0x000000, 0x000000, 0x415901, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x415a01, 0x000000, 0x000000, 0x000000, 0x415b02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x415d04, 0x416105, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x416602, 0x000000,
+ 0x000000, 0x416804, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x416c03,
+ 0x000000, 0x416f04, 0x000000, 0x000000, 0x000000, 0x000000, 0x417302, 0x000000,
+ 0x000000, 0x417501, 0x000000, 0x417601, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x417702, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x417907, 0x000000, 0x418001, 0x000000, 0x418102, 0x000000, 0x418305,
+ 0x000000, 0x000000, 0x000000, 0x418803, 0x418b01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x418c01, 0x000000, 0x000000, 0x418d02, 0x000000,
+ 0x418f01, 0x000000, 0x000000, 0x419002, 0x419205, 0x419702, 0x000000, 0x000000,
+ 0x419904, 0x000000, 0x000000, 0x000000, 0x419d0b, 0x000000, 0x000000, 0x41a805,
+ 0x000000, 0x000000, 0x41ad02, 0x41af01, 0x41b002, 0x000000, 0x41b201, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x41b310, 0x000000, 0x000000, 0x41c303, 0x41c602, 0x000000, 0x000000,
+ 0x41c80a, 0x41d206, 0x41d801, 0x000000, 0x000000, 0x41d901, 0x41da01, 0x000000,
+ 0x000000, 0x41db02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x41dd01, 0x000000, 0x41de01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x41df0c, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x41eb05, 0x000000, 0x41f001, 0x41f103,
+ 0x000000, 0x41f401, 0x41f501, 0x000000, 0x41f602, 0x000000, 0x000000, 0x000000,
+ 0x41f802, 0x41fa03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x41fd01,
+ 0x41fe02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x420001, 0x000000, 0x42010f, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x42100b, 0x000000, 0x000000, 0x421b01,
+ 0x421c01, 0x421d01, 0x000000, 0x000000, 0x421e0a, 0x000000, 0x000000, 0x000000,
+ 0x422801, 0x422902, 0x000000, 0x000000, 0x000000, 0x422b01, 0x422c01, 0x000000,
+ 0x000000, 0x000000, 0x422d03, 0x423001, 0x000000, 0x423103, 0x423401, 0x423502,
+ 0x000000, 0x000000, 0x000000, 0x423703, 0x423a0a, 0x000000, 0x000000, 0x000000,
+ 0x424404, 0x000000, 0x424806, 0x000000, 0x000000, 0x424e01, 0x000000, 0x000000,
+ 0x424f02, 0x000000, 0x000000, 0x000000, 0x000000, 0x425103, 0x000000, 0x000000,
+ 0x425402, 0x000000, 0x425606, 0x425c01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x425d01, 0x000000, 0x000000, 0x425e02, 0x000000, 0x000000, 0x000000, 0x426001,
+ 0x000000, 0x426102, 0x426304, 0x426702, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x426902, 0x426b02, 0x000000, 0x426d01, 0x000000, 0x000000, 0x426e01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x426f05, 0x427401, 0x427507, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x427c0a, 0x000000, 0x428602, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x428803, 0x428b02, 0x000000, 0x428d01, 0x000000, 0x000000, 0x428e06, 0x000000,
+ 0x429401, 0x000000, 0x000000, 0x429501, 0x429601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x429701, 0x000000, 0x429801, 0x429901, 0x000000, 0x429a02, 0x429c01,
+ 0x000000, 0x429d01, 0x000000, 0x429e08, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x42a601, 0x000000, 0x000000, 0x42a701, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x42a803, 0x000000, 0x000000, 0x42ab04,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x42af01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x42b001, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x42b106,
+ 0x000000, 0x42b701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x42b802,
+ 0x42ba01, 0x42bb01, 0x000000, 0x000000, 0x000000, 0x42bc07, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x42c301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x42c402, 0x000000, 0x42c607, 0x42cd01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x42ce02, 0x000000,
+ 0x000000, 0x42d002, 0x000000, 0x42d207, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x42d901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x42da0a, 0x42e402,
+ 0x42e601, 0x000000, 0x000000, 0x42e701, 0x000000, 0x000000, 0x000000, 0x42e801,
+ 0x42e901, 0x000000, 0x42ea01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x42eb03, 0x42ee0a, 0x42f801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x42f901, 0x000000, 0x42fa01, 0x000000, 0x42fb01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x42fc01, 0x42fd01,
+ 0x000000, 0x42fe02, 0x430002, 0x000000, 0x430208, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x430a08, 0x431203, 0x000000, 0x431505, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x431a03, 0x000000, 0x000000, 0x431d03, 0x432001, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x432102, 0x000000, 0x000000, 0x432301, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x432402, 0x432603,
+ 0x000000, 0x432901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x432a01, 0x432b07, 0x433201, 0x433301, 0x000000,
+ 0x000000, 0x43340c, 0x434001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x434101, 0x000000, 0x000000, 0x000000, 0x000000, 0x434201, 0x000000, 0x434301,
+ 0x000000, 0x434409, 0x000000, 0x000000, 0x434d06, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x435302, 0x000000, 0x435501, 0x435602, 0x000000, 0x000000,
+ 0x000000, 0x435803, 0x435b01, 0x000000, 0x000000, 0x435c03, 0x000000, 0x435f03,
+ 0x000000, 0x000000, 0x436201, 0x000000, 0x43630c, 0x000000, 0x000000, 0x436f02,
+ 0x000000, 0x437102, 0x000000, 0x000000, 0x000000, 0x437303, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x437601, 0x437701, 0x000000, 0x437816, 0x000000, 0x438e07,
+ 0x000000, 0x439503, 0x000000, 0x439801, 0x000000, 0x000000, 0x000000, 0x439902,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x439b01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x439c01, 0x000000, 0x439d03, 0x43a001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x43a101, 0x43a202, 0x000000, 0x43a401, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x43a502, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x43a70e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x43b50a,
+ 0x000000, 0x43bf04, 0x43c302, 0x000000, 0x000000, 0x000000, 0x43c501, 0x43c602,
+ 0x000000, 0x000000, 0x43c801, 0x000000, 0x000000, 0x43c901, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x43ca01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x43cb01, 0x43cc02,
+ 0x000000, 0x000000, 0x43ce0c, 0x000000, 0x000000, 0x000000, 0x43da01, 0x000000,
+ 0x43db15, 0x000000, 0x000000, 0x000000, 0x43f001, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x43f101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x43f204,
+ 0x000000, 0x000000, 0x43f602, 0x000000, 0x000000, 0x000000, 0x43f810, 0x440801,
+ 0x000000, 0x440901, 0x000000, 0x440a03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x440d01, 0x440e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x440f04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x441301, 0x441404,
+ 0x441804, 0x000000, 0x000000, 0x000000, 0x441c04, 0x000000, 0x000000, 0x442001,
+ 0x000000, 0x000000, 0x44210b, 0x000000, 0x000000, 0x442c01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x442d02, 0x442f06,
+ 0x443504, 0x000000, 0x000000, 0x443902, 0x000000, 0x000000, 0x443b01, 0x000000,
+ 0x000000, 0x443c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x443d05, 0x000000,
+ 0x444204, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x444604, 0x000000,
+ 0x000000, 0x000000, 0x444a01, 0x444b01, 0x000000, 0x444c01, 0x000000, 0x444d05,
+ 0x000000, 0x445201, 0x445301, 0x000000, 0x000000, 0x445401, 0x000000, 0x445501,
+ 0x445601, 0x000000, 0x000000, 0x000000, 0x445701, 0x000000, 0x000000, 0x000000,
+ 0x445805, 0x000000, 0x000000, 0x000000, 0x445d01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x445e02, 0x000000, 0x446002, 0x000000, 0x446205, 0x000000,
+ 0x000000, 0x000000, 0x446701, 0x446801, 0x446901, 0x000000, 0x000000, 0x446a04,
+ 0x000000, 0x000000, 0x000000, 0x446e03, 0x000000, 0x000000, 0x000000, 0x447101,
+ 0x000000, 0x000000, 0x447204, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x447601, 0x000000, 0x000000, 0x000000,
+ 0x447706, 0x000000, 0x000000, 0x000000, 0x447d02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x447f03, 0x000000, 0x000000, 0x000000, 0x448201, 0x000000, 0x448303,
+ 0x448606, 0x448c07, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x449302, 0x000000, 0x000000, 0x449501, 0x000000, 0x449601,
+ 0x000000, 0x000000, 0x449703, 0x000000, 0x000000, 0x000000, 0x449a01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x449b01, 0x000000, 0x000000,
+ 0x449c01, 0x449d01, 0x000000, 0x449e02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x44a001, 0x44a105, 0x000000, 0x44a606, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x44ac01, 0x000000, 0x000000, 0x000000, 0x44ad01, 0x44ae03, 0x000000,
+ 0x44b101, 0x000000, 0x000000, 0x44b201, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x44b308, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x44bb01, 0x44bc01, 0x000000, 0x000000, 0x44bd02, 0x44bf01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x44c003, 0x000000, 0x000000, 0x000000,
+ 0x44c301, 0x000000, 0x000000, 0x44c402, 0x000000, 0x000000, 0x44c605, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x44cb06, 0x000000, 0x000000, 0x44d103, 0x000000, 0x44d401,
+ 0x44d501, 0x000000, 0x000000, 0x000000, 0x000000, 0x44d601, 0x000000, 0x000000,
+ 0x44d706, 0x000000, 0x000000, 0x44dd01, 0x000000, 0x000000, 0x44de02, 0x44e001,
+ 0x44e101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x44e201, 0x000000, 0x000000, 0x44e301, 0x000000, 0x000000, 0x44e401, 0x000000,
+ 0x44e502, 0x000000, 0x44e701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x44e802, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x44ea02, 0x000000, 0x000000, 0x000000, 0x000000, 0x44ec01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x44ed10, 0x44fd01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x44fe01, 0x44ff01, 0x000000, 0x450001, 0x450103, 0x000000, 0x000000,
+ 0x000000, 0x450402, 0x450602, 0x450806, 0x000000, 0x450e05, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x451302, 0x000000, 0x000000,
+ 0x000000, 0x45151c, 0x000000, 0x453106, 0x000000, 0x000000, 0x453702, 0x453904,
+ 0x453d02, 0x000000, 0x000000, 0x453f01, 0x000000, 0x000000, 0x454003, 0x000000,
+ 0x000000, 0x000000, 0x454301, 0x000000, 0x454401, 0x000000, 0x454501, 0x000000,
+ 0x000000, 0x000000, 0x454602, 0x000000, 0x000000, 0x000000, 0x000000, 0x454802,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x454a02, 0x000000, 0x000000, 0x000000,
+ 0x454c01, 0x454d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x454e01, 0x454f01,
+ 0x455004, 0x000000, 0x000000, 0x000000, 0x455401, 0x000000, 0x455501, 0x455601,
+ 0x455702, 0x455907, 0x456001, 0x456101, 0x000000, 0x456203, 0x000000, 0x456506,
+ 0x000000, 0x456b03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x456e01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x456f01,
+ 0x000000, 0x000000, 0x457001, 0x000000, 0x000000, 0x457101, 0x457203, 0x000000,
+ 0x457501, 0x457601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x457725, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x459c01, 0x000000, 0x000000, 0x000000,
+ 0x459d01, 0x000000, 0x000000, 0x000000, 0x459e02, 0x45a001, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x45a105, 0x45a601, 0x45a701, 0x45a80c, 0x000000,
+ 0x000000, 0x45b401, 0x000000, 0x000000, 0x000000, 0x45b502, 0x000000, 0x000000,
+ 0x000000, 0x45b702, 0x45b904, 0x45bd01, 0x000000, 0x45be04, 0x000000, 0x000000,
+ 0x45c201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x45c301,
+ 0x45c409, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x45cd01, 0x45ce01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x45cf07, 0x000000, 0x000000, 0x000000,
+ 0x45d602, 0x000000, 0x000000, 0x000000, 0x45d802, 0x45da01, 0x000000, 0x45db01,
+ 0x000000, 0x45dc01, 0x000000, 0x000000, 0x45dd01, 0x000000, 0x000000, 0x45de04,
+ 0x45e23e, 0x462001, 0x000000, 0x000000, 0x000000, 0x000000, 0x462101, 0x000000,
+ 0x000000, 0x46220d, 0x000000, 0x462f04, 0x000000, 0x000000, 0x463302, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x463502, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x463702, 0x463905, 0x000000, 0x000000, 0x463e14, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x465204, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x465602, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x465801, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x465902, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x465b02, 0x000000, 0x000000,
+ 0x465d01, 0x000000, 0x000000, 0x000000, 0x465e01, 0x000000, 0x000000, 0x000000,
+ 0x465f01, 0x000000, 0x46600d, 0x000000, 0x000000, 0x000000, 0x466d01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x466e05, 0x000000,
+ 0x000000, 0x467301, 0x467401, 0x46750b, 0x000000, 0x000000, 0x468007, 0x468701,
+ 0x000000, 0x468801, 0x468901, 0x000000, 0x468a03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x468d02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x468f03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x469201, 0x000000, 0x000000, 0x000000, 0x469307,
+ 0x000000, 0x000000, 0x469a03, 0x000000, 0x000000, 0x469d0f, 0x46ac01, 0x46ad03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x46b001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x46b102, 0x46b308,
+ 0x000000, 0x000000, 0x000000, 0x46bb03, 0x000000, 0x46be01, 0x000000, 0x000000,
+ 0x46bf01, 0x000000, 0x46c002, 0x000000, 0x000000, 0x46c201, 0x46c302, 0x000000,
+ 0x46c503, 0x000000, 0x000000, 0x000000, 0x000000, 0x46c802, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x46ca01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x46cb01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x46cc01, 0x46cd01, 0x000000, 0x46ce01, 0x000000, 0x000000, 0x46cf07,
+ 0x46d60f, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x46e501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x46e601, 0x46e704, 0x000000, 0x000000, 0x46eb08, 0x46f302, 0x000000, 0x46f505,
+ 0x46fa01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x46fb0b, 0x470601, 0x000000, 0x470701, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x470802, 0x000000, 0x470a01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x470b01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x470c01, 0x000000, 0x000000, 0x470d01, 0x000000,
+ 0x000000, 0x470e01, 0x470f02, 0x000000, 0x000000, 0x471101, 0x471201, 0x471301,
+ 0x000000, 0x000000, 0x000000, 0x471406, 0x000000, 0x471a01, 0x000000, 0x471b01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x471c02, 0x000000, 0x000000, 0x000000,
+ 0x471e01, 0x471f06, 0x000000, 0x000000, 0x472501, 0x000000, 0x000000, 0x000000,
+ 0x472601, 0x472704, 0x000000, 0x000000, 0x000000, 0x472b02, 0x000000, 0x000000,
+ 0x472d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x472e02, 0x000000,
+ 0x473006, 0x473603, 0x000000, 0x473901, 0x000000, 0x473a05, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x473f01, 0x000000, 0x000000, 0x474001, 0x474101, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x474208, 0x474a02, 0x000000, 0x474c01,
+ 0x000000, 0x474d0c, 0x000000, 0x000000, 0x000000, 0x475903, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x475c01, 0x475d01, 0x475e02, 0x476008,
+ 0x476801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x476901, 0x000000, 0x476a01,
+ 0x000000, 0x476b01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x476c02, 0x000000, 0x476e02, 0x477001, 0x000000, 0x000000, 0x477112, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x478302, 0x000000, 0x000000, 0x000000, 0x478501,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x478601, 0x000000, 0x478701, 0x478802,
+ 0x000000, 0x478a01, 0x000000, 0x000000, 0x478b04, 0x478f0b, 0x000000, 0x479a01,
+ 0x000000, 0x479b04, 0x000000, 0x479f01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x47a003, 0x000000, 0x47a301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x47a403, 0x000000, 0x47a701, 0x47a801,
+ 0x000000, 0x47a902, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x47ab03,
+ 0x000000, 0x47ae05, 0x000000, 0x000000, 0x47b301, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x47b40a, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x47be01, 0x000000, 0x000000, 0x000000, 0x47bf01, 0x000000, 0x47c001,
+ 0x000000, 0x47c101, 0x47c242, 0x000000, 0x000000, 0x000000, 0x480407, 0x480b01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x480c05, 0x481101,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x481201, 0x000000, 0x481301, 0x000000,
+ 0x000000, 0x000000, 0x481402, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x481601, 0x000000, 0x000000, 0x000000, 0x481701, 0x000000, 0x481803, 0x000000,
+ 0x481b01, 0x000000, 0x000000, 0x481c05, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x482101, 0x000000, 0x000000, 0x482206,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x482803, 0x000000, 0x000000, 0x000000,
+ 0x482b01, 0x000000, 0x482c01, 0x000000, 0x000000, 0x000000, 0x482d01, 0x482e01,
+ 0x482f05, 0x000000, 0x000000, 0x000000, 0x483401, 0x000000, 0x000000, 0x000000,
+ 0x483502, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x483702,
+ 0x483901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x483a04,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x483e01, 0x000000, 0x000000,
+ 0x483f09, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x484810,
+ 0x000000, 0x485801, 0x000000, 0x485901, 0x485a02, 0x000000, 0x000000, 0x000000,
+ 0x485c01, 0x485d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x485e05,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x486301, 0x486401, 0x000000, 0x486501,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x486602, 0x486801,
+ 0x000000, 0x486902, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x486b01, 0x486c01, 0x486d01, 0x486e03, 0x000000, 0x487107, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x487803, 0x487b02, 0x000000, 0x000000, 0x487d0b, 0x000000,
+ 0x000000, 0x488802, 0x488a01, 0x000000, 0x000000, 0x000000, 0x488b02, 0x000000,
+ 0x488d0c, 0x000000, 0x000000, 0x000000, 0x000000, 0x489902, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x489b01, 0x000000, 0x000000, 0x489c01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x489d02, 0x000000, 0x489f02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x48a102, 0x000000, 0x000000, 0x000000,
+ 0x48a301, 0x000000, 0x000000, 0x48a401, 0x48a503, 0x000000, 0x000000, 0x48a801,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x48a901, 0x000000, 0x000000, 0x000000,
+ 0x48aa01, 0x48ab01, 0x000000, 0x48ac03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x48af03, 0x000000, 0x000000, 0x48b201, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x48b304, 0x000000, 0x48b701,
+ 0x000000, 0x000000, 0x48b802, 0x48ba09, 0x000000, 0x000000, 0x000000, 0x48c301,
+ 0x000000, 0x000000, 0x000000, 0x48c401, 0x000000, 0x000000, 0x48c501, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x48c601, 0x000000,
+ 0x48c703, 0x000000, 0x000000, 0x48ca02, 0x48cc04, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x48d002, 0x48d205, 0x48d704, 0x000000, 0x48db01,
+ 0x000000, 0x000000, 0x48dc02, 0x000000, 0x48de01, 0x48df01, 0x000000, 0x000000,
+ 0x000000, 0x48e009, 0x000000, 0x000000, 0x48e908, 0x48f103, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x48f407, 0x48fb01, 0x48fc01, 0x000000, 0x000000, 0x48fd04,
+ 0x000000, 0x000000, 0x490105, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x490601, 0x490701, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x490803, 0x000000,
+ 0x000000, 0x490b02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x490d06, 0x000000, 0x491301, 0x000000, 0x000000, 0x491401, 0x000000, 0x491501,
+ 0x000000, 0x000000, 0x491603, 0x000000, 0x491904, 0x000000, 0x000000, 0x491d01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x491e03, 0x000000,
+ 0x000000, 0x492104, 0x000000, 0x492505, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x492a08, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x493202,
+ 0x493401, 0x000000, 0x000000, 0x493501, 0x000000, 0x493601, 0x493702, 0x493902,
+ 0x493b04, 0x000000, 0x493f01, 0x494001, 0x000000, 0x000000, 0x494109, 0x494a02,
+ 0x000000, 0x494c01, 0x000000, 0x000000, 0x000000, 0x494d03, 0x000000, 0x000000,
+ 0x000000, 0x495004, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x495405,
+ 0x495901, 0x495a02, 0x495c03, 0x000000, 0x000000, 0x495f03, 0x496201, 0x000000,
+ 0x496305, 0x000000, 0x496802, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x496a05, 0x000000, 0x000000, 0x496f01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x497003, 0x497302, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x497505, 0x000000, 0x000000, 0x000000, 0x497a04,
+ 0x497e01, 0x497f09, 0x000000, 0x000000, 0x000000, 0x000000, 0x498802, 0x000000,
+ 0x000000, 0x498a02, 0x498c01, 0x000000, 0x000000, 0x498d01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x498e01, 0x000000, 0x000000, 0x498f01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x499007, 0x000000, 0x499701, 0x000000, 0x499801, 0x000000,
+ 0x499901, 0x000000, 0x000000, 0x000000, 0x000000, 0x499a01, 0x000000, 0x499b01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x499c01, 0x499d02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x499f05, 0x000000, 0x000000, 0x000000, 0x49a407,
+ 0x49ab02, 0x000000, 0x000000, 0x49ad04, 0x49b101, 0x000000, 0x000000, 0x49b202,
+ 0x49b405, 0x000000, 0x000000, 0x49b907, 0x49c00a, 0x49ca01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x49cb03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x49ce01, 0x000000, 0x49cf04, 0x000000, 0x000000, 0x000000, 0x49d301,
+ 0x000000, 0x000000, 0x000000, 0x49d401, 0x000000, 0x49d50d, 0x49e201, 0x49e303,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x49e601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x49e701, 0x000000,
+ 0x000000, 0x000000, 0x49e808, 0x49f001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x49f102, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x49f302,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x49f508, 0x49fd09, 0x000000, 0x000000,
+ 0x000000, 0x4a0606, 0x4a0c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x4a0d01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4a0e01, 0x4a0f01, 0x000000, 0x000000,
+ 0x4a1001, 0x000000, 0x000000, 0x4a1101, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4a1201, 0x4a1301, 0x000000, 0x000000, 0x000000, 0x4a1402, 0x000000, 0x4a1601,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x4a1701, 0x000000, 0x4a1801, 0x000000, 0x4a1903, 0x4a1c03, 0x4a1f01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4a2004, 0x000000,
+ 0x000000, 0x000000, 0x4a2409, 0x000000, 0x000000, 0x000000, 0x4a2d08, 0x000000,
+ 0x4a3501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4a3604, 0x4a3a02,
+ 0x000000, 0x000000, 0x4a3c01, 0x000000, 0x000000, 0x000000, 0x4a3d02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4a3f03, 0x4a4207, 0x000000,
+ 0x000000, 0x4a4901, 0x000000, 0x000000, 0x4a4a05, 0x000000, 0x4a4f07, 0x000000,
+ 0x4a5601, 0x4a5707, 0x000000, 0x4a5e02, 0x000000, 0x4a6009, 0x4a6901, 0x000000,
+ 0x000000, 0x000000, 0x4a6a04, 0x4a6e01, 0x4a6f03, 0x000000, 0x4a7204, 0x4a7601,
+ 0x4a7718, 0x000000, 0x000000, 0x4a8f05, 0x000000, 0x000000, 0x000000, 0x4a9401,
+ 0x4a9501, 0x000000, 0x000000, 0x000000, 0x000000, 0x4a9601, 0x000000, 0x4a9701,
+ 0x000000, 0x000000, 0x000000, 0x4a9801, 0x000000, 0x000000, 0x4a9901, 0x000000,
+ 0x4a9a01, 0x4a9b03, 0x000000, 0x000000, 0x4a9e08, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4aa601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4aa704, 0x000000, 0x000000, 0x000000, 0x4aab01,
+ 0x4aac04, 0x000000, 0x4ab001, 0x4ab101, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4ab201, 0x4ab301, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4ab401, 0x4ab502, 0x000000, 0x4ab701, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x4ab801, 0x4ab901, 0x4aba01, 0x4abb0e, 0x000000, 0x000000, 0x4ac901,
+ 0x000000, 0x000000, 0x4aca09, 0x4ad302, 0x4ad518, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4aed03, 0x4af002, 0x000000,
+ 0x000000, 0x4af206, 0x000000, 0x000000, 0x000000, 0x4af801, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4af903, 0x000000, 0x4afc01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4afd04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4b0101, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4b0202, 0x000000,
+ 0x4b0405, 0x4b0903, 0x000000, 0x000000, 0x000000, 0x4b0c05, 0x000000, 0x4b1105,
+ 0x000000, 0x000000, 0x000000, 0x4b1606, 0x4b1c01, 0x000000, 0x000000, 0x4b1d01,
+ 0x000000, 0x000000, 0x4b1e01, 0x4b1f01, 0x4b2006, 0x4b2601, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4b2708, 0x000000, 0x4b2f01, 0x4b3005, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4b3502, 0x000000, 0x4b3702, 0x4b3901, 0x4b3a02,
+ 0x000000, 0x000000, 0x4b3c05, 0x000000, 0x4b4106, 0x000000, 0x000000, 0x000000,
+ 0x4b4706, 0x000000, 0x4b4d03, 0x4b5001, 0x4b5101, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x4b5201, 0x000000, 0x000000, 0x4b5301, 0x000000, 0x000000, 0x4b5402,
+ 0x4b5601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4b5703,
+ 0x4b5a01, 0x000000, 0x4b5b05, 0x000000, 0x000000, 0x000000, 0x000000, 0x4b6001,
+ 0x000000, 0x4b6104, 0x000000, 0x000000, 0x000000, 0x000000, 0x4b6501, 0x4b6601,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4b6701, 0x4b6809, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4b7101, 0x000000, 0x000000, 0x4b7206, 0x000000, 0x000000,
+ 0x4b7801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4b790b, 0x000000, 0x4b8401, 0x000000, 0x4b8501, 0x4b8601, 0x000000, 0x4b8701,
+ 0x4b8809, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4b9107, 0x000000, 0x000000, 0x4b9801,
+ 0x000000, 0x4b9908, 0x4ba104, 0x000000, 0x4ba501, 0x4ba602, 0x000000, 0x000000,
+ 0x4ba806, 0x000000, 0x4bae02, 0x000000, 0x4bb003, 0x4bb308, 0x4bbb01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4bbc01, 0x4bbd02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4bbf0a, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4bc90a, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x4bd301, 0x000000, 0x000000, 0x4bd409, 0x4bdd02, 0x000000, 0x4bdf01,
+ 0x000000, 0x000000, 0x000000, 0x4be003, 0x000000, 0x000000, 0x000000, 0x4be303,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4be601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4be710, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4bf70b, 0x4c0202, 0x000000, 0x000000, 0x4c0401, 0x000000, 0x4c0501, 0x4c0604,
+ 0x000000, 0x4c0a07, 0x4c1108, 0x4c190c, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4c2507, 0x000000, 0x000000, 0x000000, 0x000000, 0x4c2c01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4c2d02, 0x4c2f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x4c3001, 0x000000, 0x000000, 0x000000, 0x000000, 0x4c3101, 0x4c3201,
+ 0x000000, 0x000000, 0x000000, 0x4c3303, 0x000000, 0x000000, 0x4c3603, 0x000000,
+ 0x000000, 0x4c3901, 0x000000, 0x4c3a01, 0x000000, 0x4c3b02, 0x000000, 0x4c3d0c,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4c4907, 0x000000, 0x4c5001, 0x4c5105, 0x000000, 0x4c5603,
+ 0x4c5901, 0x000000, 0x4c5a04, 0x4c5e01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4c5f01, 0x4c6002, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4c6201, 0x000000, 0x000000, 0x4c6304, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4c6701, 0x4c6801, 0x000000, 0x000000, 0x4c6903, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4c6c02, 0x4c6e01, 0x000000, 0x4c6f01, 0x000000,
+ 0x000000, 0x000000, 0x4c7001, 0x4c7108, 0x000000, 0x4c7902, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4c7b01, 0x000000, 0x000000, 0x000000, 0x000000, 0x4c7c03,
+ 0x4c7f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4c8001, 0x4c8101, 0x000000, 0x000000, 0x000000, 0x4c8201, 0x4c8301, 0x000000,
+ 0x4c8403, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4c8701,
+ 0x4c8806, 0x4c8e01, 0x000000, 0x4c8f04, 0x000000, 0x000000, 0x4c9301, 0x000000,
+ 0x000000, 0x4c9401, 0x000000, 0x4c9502, 0x4c9702, 0x4c9903, 0x000000, 0x4c9c01,
+ 0x4c9d02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4c9f01,
+ 0x4ca001, 0x000000, 0x000000, 0x4ca101, 0x000000, 0x000000, 0x4ca201, 0x000000,
+ 0x000000, 0x000000, 0x4ca301, 0x4ca40a, 0x4cae01, 0x000000, 0x000000, 0x4caf02,
+ 0x4cb102, 0x4cb307, 0x000000, 0x4cba01, 0x000000, 0x000000, 0x4cbb0e, 0x4cc901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4cca10, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4cda02, 0x4cdc02, 0x000000, 0x000000, 0x000000, 0x000000, 0x4cde04, 0x000000,
+ 0x4ce201, 0x000000, 0x4ce303, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x4ce601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4ce701, 0x4ce803, 0x4ceb03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4cee02, 0x4cf001, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4cf101, 0x4cf201, 0x000000, 0x000000, 0x4cf302,
+ 0x000000, 0x4cf501, 0x000000, 0x000000, 0x4cf601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4cf704, 0x4cfb02, 0x000000, 0x4cfd03, 0x000000,
+ 0x4d0002, 0x000000, 0x000000, 0x000000, 0x4d0203, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x4d0502, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x4d0702, 0x000000, 0x4d0903, 0x000000, 0x000000, 0x4d0c05, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4d1101, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4d1203, 0x000000, 0x4d1501, 0x4d1604, 0x4d1a01, 0x000000,
+ 0x000000, 0x4d1b01, 0x000000, 0x4d1c05, 0x000000, 0x000000, 0x000000, 0x4d2101,
+ 0x000000, 0x000000, 0x4d2218, 0x000000, 0x4d3a01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4d3b03, 0x4d3e03, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4d4101, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4d4201, 0x000000, 0x000000, 0x4d430a, 0x4d4d01,
+ 0x000000, 0x4d4e01, 0x000000, 0x000000, 0x4d4f01, 0x000000, 0x000000, 0x000000,
+ 0x4d5003, 0x000000, 0x000000, 0x4d5301, 0x4d5402, 0x000000, 0x000000, 0x000000,
+ 0x4d5602, 0x000000, 0x000000, 0x000000, 0x4d5802, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x4d5a01, 0x000000, 0x4d5b01, 0x000000, 0x4d5c02, 0x000000, 0x000000,
+ 0x4d5e01, 0x000000, 0x000000, 0x000000, 0x4d5f01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4d6007, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4d6705, 0x000000, 0x4d6c01,
+ 0x000000, 0x4d6d08, 0x4d7501, 0x4d7602, 0x000000, 0x000000, 0x000000, 0x4d7805,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4d7d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x4d7e04,
+ 0x000000, 0x000000, 0x4d8202, 0x000000, 0x000000, 0x000000, 0x000000, 0x4d8402,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4d8601, 0x000000, 0x000000, 0x4d8701,
+ 0x000000, 0x4d8802, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x4d8a03, 0x000000, 0x000000, 0x000000, 0x4d8d0a, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4d9701,
+ 0x000000, 0x4d9801, 0x000000, 0x4d9902, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4d9b02, 0x000000, 0x000000, 0x4d9d01, 0x000000,
+ 0x000000, 0x4d9e01, 0x000000, 0x000000, 0x4d9f01, 0x4da002, 0x4da205, 0x000000,
+ 0x4da702, 0x4da902, 0x4dab01, 0x000000, 0x000000, 0x4dac01, 0x4dad02, 0x4daf02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4db102, 0x4db301, 0x4db401, 0x000000,
+ 0x000000, 0x4db501, 0x000000, 0x000000, 0x000000, 0x4db601, 0x000000, 0x4db706,
+ 0x4dbd01, 0x000000, 0x000000, 0x4dbe02, 0x000000, 0x000000, 0x4dc001, 0x000000,
+ 0x000000, 0x000000, 0x4dc102, 0x000000, 0x4dc301, 0x000000, 0x4dc402, 0x4dc602,
+ 0x000000, 0x000000, 0x000000, 0x4dc807, 0x4dcf12, 0x000000, 0x4de101, 0x4de201,
+ 0x4de302, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4de501, 0x000000, 0x4de602, 0x000000, 0x4de806, 0x000000, 0x000000, 0x000000,
+ 0x4dee01, 0x4def02, 0x4df106, 0x4df705, 0x000000, 0x4dfc06, 0x000000, 0x4e0204,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4e0601, 0x000000, 0x4e070e,
+ 0x000000, 0x4e1501, 0x000000, 0x000000, 0x4e1602, 0x000000, 0x4e1802, 0x000000,
+ 0x4e1a03, 0x000000, 0x000000, 0x000000, 0x4e1d01, 0x4e1e02, 0x4e2002, 0x000000,
+ 0x4e2202, 0x4e2406, 0x000000, 0x4e2a01, 0x4e2b02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4e2d06, 0x000000, 0x4e3301, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4e3402, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4e3601, 0x4e3701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4e3802,
+ 0x000000, 0x000000, 0x4e3a02, 0x000000, 0x000000, 0x4e3c03, 0x000000, 0x000000,
+ 0x4e3f0c, 0x000000, 0x000000, 0x000000, 0x000000, 0x4e4b01, 0x4e4c03, 0x000000,
+ 0x4e4f01, 0x4e5001, 0x000000, 0x000000, 0x4e5102, 0x000000, 0x4e5302, 0x000000,
+ 0x000000, 0x4e5503, 0x4e5802, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4e5a02, 0x000000, 0x000000, 0x4e5c01,
+ 0x000000, 0x4e5d02, 0x000000, 0x4e5f02, 0x000000, 0x000000, 0x4e6101, 0x000000,
+ 0x000000, 0x4e6202, 0x000000, 0x000000, 0x000000, 0x000000, 0x4e6401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4e6501, 0x4e6601, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4e6701, 0x000000, 0x000000, 0x4e6801, 0x4e6901, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4e6a03, 0x000000, 0x4e6d02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4e6f01, 0x000000, 0x4e700e, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4e7e03, 0x000000, 0x4e8109, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4e8a05, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4e8f01,
+ 0x000000, 0x000000, 0x000000, 0x4e9001, 0x4e9101, 0x000000, 0x000000, 0x000000,
+ 0x4e9208, 0x4e9a01, 0x4e9b07, 0x000000, 0x000000, 0x000000, 0x4ea202, 0x4ea401,
+ 0x4ea502, 0x000000, 0x000000, 0x000000, 0x000000, 0x4ea701, 0x000000, 0x000000,
+ 0x4ea801, 0x4ea90c, 0x4eb502, 0x000000, 0x4eb701, 0x000000, 0x000000, 0x000000,
+ 0x4eb801, 0x000000, 0x000000, 0x4eb904, 0x000000, 0x000000, 0x000000, 0x4ebd05,
+ 0x000000, 0x4ec201, 0x000000, 0x000000, 0x4ec302, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4ec502, 0x000000, 0x4ec702, 0x000000,
+ 0x4ec905, 0x000000, 0x4ece03, 0x000000, 0x000000, 0x4ed12d, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4efe01, 0x000000, 0x000000, 0x000000, 0x000000, 0x4eff02,
+ 0x000000, 0x4f0104, 0x000000, 0x000000, 0x4f0501, 0x000000, 0x4f0601, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4f0701, 0x000000, 0x000000, 0x4f0801, 0x4f090a,
+ 0x000000, 0x4f1303, 0x000000, 0x4f1602, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4f1801, 0x000000, 0x000000, 0x000000, 0x4f1901, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4f1a02, 0x000000, 0x4f1c01, 0x000000, 0x4f1d02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4f1f08, 0x000000, 0x000000, 0x4f2702,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4f290c, 0x000000, 0x000000, 0x000000,
+ 0x4f3501, 0x000000, 0x000000, 0x4f3603, 0x4f3901, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4f3a01, 0x000000, 0x4f3b01, 0x000000, 0x4f3c02, 0x000000,
+ 0x4f3e03, 0x4f4102, 0x000000, 0x000000, 0x000000, 0x000000, 0x4f4301, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4f4404, 0x4f4802, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4f4a01, 0x000000, 0x4f4b03, 0x4f4e04, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4f5201, 0x000000, 0x000000,
+ 0x4f5301, 0x000000, 0x4f5401, 0x000000, 0x4f5502, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4f5702, 0x000000, 0x000000, 0x000000, 0x4f5901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4f5a01, 0x4f5b06, 0x000000, 0x4f6111,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4f7203, 0x000000,
+ 0x000000, 0x000000, 0x4f750a, 0x000000, 0x000000, 0x000000, 0x000000, 0x4f7f0a,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4f8903, 0x000000, 0x000000, 0x4f8c0a, 0x000000, 0x4f9602,
+ 0x4f9801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4f9901, 0x4f9a01, 0x000000, 0x4f9b01,
+ 0x000000, 0x000000, 0x4f9c01, 0x000000, 0x4f9d01, 0x000000, 0x4f9e05, 0x000000,
+ 0x4fa302, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4fa502,
+ 0x4fa701, 0x4fa802, 0x000000, 0x000000, 0x4faa01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x4fab02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4fad11, 0x4fbe02, 0x000000, 0x000000, 0x000000,
+ 0x4fc003, 0x000000, 0x000000, 0x4fc306, 0x000000, 0x000000, 0x4fc902, 0x4fcb03,
+ 0x000000, 0x4fce01, 0x000000, 0x000000, 0x4fcf01, 0x000000, 0x4fd001, 0x4fd101,
+ 0x4fd205, 0x000000, 0x000000, 0x000000, 0x000000, 0x4fd702, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4fd901, 0x000000, 0x4fda03, 0x000000, 0x4fdd02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x4fdf03, 0x000000, 0x4fe201, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x4fe301, 0x4fe401, 0x000000, 0x000000, 0x4fe503, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x4fe801, 0x000000, 0x4fe907, 0x000000, 0x000000,
+ 0x000000, 0x4ff004, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4ff404,
+ 0x000000, 0x000000, 0x000000, 0x4ff803, 0x000000, 0x4ffb01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4ffc08, 0x000000,
+ 0x000000, 0x500401, 0x000000, 0x000000, 0x500501, 0x000000, 0x000000, 0x500609,
+ 0x000000, 0x500f01, 0x000000, 0x501001, 0x000000, 0x000000, 0x501101, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x501201, 0x501301, 0x000000, 0x501413, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x502707, 0x502e02, 0x000000, 0x50300a, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x503a01, 0x000000, 0x000000, 0x503b03, 0x000000, 0x000000,
+ 0x000000, 0x503e03, 0x000000, 0x000000, 0x000000, 0x504102, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x50430f, 0x000000, 0x000000, 0x505201, 0x000000,
+ 0x000000, 0x505302, 0x000000, 0x505517, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x506c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x506d03, 0x000000,
+ 0x000000, 0x507001, 0x507101, 0x000000, 0x000000, 0x000000, 0x000000, 0x507202,
+ 0x000000, 0x507401, 0x507514, 0x000000, 0x000000, 0x000000, 0x508902, 0x508b01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x508c06, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x509201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x509301,
+ 0x000000, 0x000000, 0x000000, 0x509401, 0x000000, 0x509509, 0x000000, 0x000000,
+ 0x509e44, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x50e202, 0x000000,
+ 0x000000, 0x50e404, 0x000000, 0x000000, 0x000000, 0x50e801, 0x50e90a, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x50f301, 0x50f401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x50f502, 0x50f701, 0x50f804, 0x000000, 0x50fc01, 0x000000,
+ 0x50fd01, 0x000000, 0x50fe01, 0x50ff01, 0x000000, 0x510007, 0x000000, 0x000000,
+ 0x510701, 0x000000, 0x510803, 0x000000, 0x510b01, 0x000000, 0x000000, 0x510c01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x510d04, 0x000000, 0x000000, 0x000000, 0x000000, 0x511107, 0x000000, 0x000000,
+ 0x000000, 0x511802, 0x000000, 0x000000, 0x511a03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x511d01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x511e01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x511f01, 0x000000, 0x512008, 0x512808, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x513001, 0x000000, 0x000000, 0x000000, 0x513109, 0x513a06,
+ 0x514001, 0x000000, 0x514105, 0x000000, 0x514601, 0x000000, 0x000000, 0x514702,
+ 0x000000, 0x000000, 0x514901, 0x000000, 0x000000, 0x514a01, 0x000000, 0x514b01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x514c05, 0x000000, 0x000000,
+ 0x515102, 0x515301, 0x515401, 0x000000, 0x000000, 0x000000, 0x515501, 0x000000,
+ 0x515603, 0x000000, 0x000000, 0x000000, 0x515903, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x515c01, 0x515d01, 0x515e01, 0x000000,
+ 0x515f04, 0x516303, 0x000000, 0x000000, 0x516601, 0x000000, 0x000000, 0x516702,
+ 0x516901, 0x000000, 0x516a01, 0x000000, 0x516b0a, 0x000000, 0x517501, 0x000000,
+ 0x000000, 0x000000, 0x517601, 0x000000, 0x000000, 0x000000, 0x000000, 0x51770d,
+ 0x000000, 0x000000, 0x000000, 0x518402, 0x000000, 0x000000, 0x518602, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x518803, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x518b04, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x518f02, 0x000000, 0x000000, 0x519101, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x519201, 0x519306, 0x000000, 0x000000, 0x519901, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x519a0e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x51a801, 0x000000,
+ 0x51a904, 0x51ad02, 0x000000, 0x000000, 0x51af03, 0x51b201, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x51b301, 0x000000, 0x51b402, 0x000000, 0x51b601,
+ 0x51b702, 0x51b905, 0x000000, 0x51be01, 0x000000, 0x51bf01, 0x51c001, 0x51c105,
+ 0x000000, 0x000000, 0x51c604, 0x000000, 0x000000, 0x51ca02, 0x000000, 0x000000,
+ 0x51cc02, 0x000000, 0x000000, 0x000000, 0x51ce03, 0x000000, 0x000000, 0x000000,
+ 0x51d101, 0x51d203, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x51d504,
+ 0x000000, 0x51d901, 0x000000, 0x000000, 0x51da09, 0x51e303, 0x000000, 0x000000,
+ 0x51e606, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x51ec02, 0x51ee09,
+ 0x000000, 0x000000, 0x000000, 0x51f703, 0x000000, 0x51fa01, 0x51fb01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x51fc06, 0x000000, 0x000000, 0x000000,
+ 0x520203, 0x000000, 0x520501, 0x000000, 0x520601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x520701, 0x520807, 0x000000, 0x000000, 0x000000, 0x000000, 0x520f02,
+ 0x000000, 0x521106, 0x000000, 0x521701, 0x000000, 0x000000, 0x000000, 0x521801,
+ 0x521903, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x521c05, 0x522101,
+ 0x522201, 0x522301, 0x000000, 0x000000, 0x522401, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x522501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x522601, 0x522705, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x522c01,
+ 0x000000, 0x000000, 0x522d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x522e02, 0x000000, 0x523005, 0x000000,
+ 0x523501, 0x523602, 0x000000, 0x000000, 0x000000, 0x523804, 0x523c04, 0x000000,
+ 0x000000, 0x524007, 0x524701, 0x524801, 0x000000, 0x000000, 0x524901, 0x524a02,
+ 0x000000, 0x000000, 0x000000, 0x524c02, 0x000000, 0x000000, 0x000000, 0x524e01,
+ 0x524f01, 0x000000, 0x000000, 0x525001, 0x000000, 0x525104, 0x000000, 0x000000,
+ 0x525501, 0x000000, 0x000000, 0x000000, 0x000000, 0x525601, 0x000000, 0x000000,
+ 0x525701, 0x525805, 0x000000, 0x000000, 0x525d01, 0x525e02, 0x000000, 0x526002,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x526202,
+ 0x000000, 0x526401, 0x000000, 0x526501, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x526601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x526702, 0x000000, 0x526901, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x526a01, 0x000000, 0x000000, 0x526b01,
+ 0x526c01, 0x526d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x526e01,
+ 0x000000, 0x526f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x527003,
+ 0x527301, 0x527403, 0x000000, 0x000000, 0x527701, 0x527802, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x527a07, 0x528101, 0x528202, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x528404, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x528802, 0x528a03, 0x000000,
+ 0x000000, 0x528d03, 0x000000, 0x000000, 0x000000, 0x529005, 0x529501, 0x000000,
+ 0x529601, 0x000000, 0x000000, 0x529701, 0x000000, 0x529801, 0x529906, 0x000000,
+ 0x529f02, 0x52a101, 0x52a201, 0x52a304, 0x000000, 0x000000, 0x000000, 0x52a701,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x52a803, 0x000000,
+ 0x52ab02, 0x000000, 0x52ad04, 0x000000, 0x000000, 0x000000, 0x000000, 0x52b101,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x52b201, 0x000000, 0x000000, 0x52b302,
+ 0x000000, 0x52b501, 0x000000, 0x52b601, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x52b703, 0x52ba09, 0x52c301, 0x000000, 0x000000, 0x000000, 0x52c401,
+ 0x000000, 0x000000, 0x52c502, 0x000000, 0x000000, 0x000000, 0x52c701, 0x000000,
+ 0x000000, 0x52c805, 0x000000, 0x000000, 0x000000, 0x52cd0e, 0x000000, 0x52db01,
+ 0x000000, 0x000000, 0x52dc02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x52de01, 0x52df07, 0x000000, 0x000000, 0x52e602, 0x52e801, 0x000000,
+ 0x52e901, 0x000000, 0x000000, 0x000000, 0x000000, 0x52ea01, 0x52eb01, 0x000000,
+ 0x000000, 0x52ec01, 0x000000, 0x000000, 0x000000, 0x000000, 0x52ed06, 0x52f301,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x52f401, 0x000000, 0x000000,
+ 0x52f501, 0x52f611, 0x000000, 0x000000, 0x000000, 0x000000, 0x530701, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x530802, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x530a04, 0x000000, 0x000000, 0x000000,
+ 0x530e09, 0x000000, 0x531702, 0x000000, 0x531908, 0x000000, 0x532101, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x53220b,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x532d03, 0x000000, 0x000000, 0x533001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x533101, 0x000000, 0x000000, 0x000000, 0x533201, 0x000000, 0x533302, 0x53350e,
+ 0x000000, 0x534302, 0x000000, 0x534504, 0x534901, 0x534a01, 0x000000, 0x534b02,
+ 0x000000, 0x534d01, 0x000000, 0x000000, 0x000000, 0x534e01, 0x534f18, 0x000000,
+ 0x000000, 0x000000, 0x536702, 0x000000, 0x000000, 0x536907, 0x537001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x537101, 0x000000, 0x000000, 0x000000,
+ 0x537203, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x537501, 0x000000, 0x000000, 0x537605, 0x537b02, 0x537d01,
+ 0x000000, 0x000000, 0x000000, 0x537e02, 0x538001, 0x000000, 0x538102, 0x000000,
+ 0x000000, 0x000000, 0x538301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x538401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x538501, 0x000000, 0x538601, 0x000000,
+ 0x000000, 0x538701, 0x000000, 0x000000, 0x538804, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x538c01, 0x538d07, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x539401, 0x539501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x539601, 0x000000, 0x539702, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x539901, 0x000000, 0x000000, 0x000000, 0x539a01,
+ 0x539b01, 0x000000, 0x539c01, 0x539d01, 0x000000, 0x000000, 0x000000, 0x539e01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x539f01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x53a00c, 0x000000, 0x53ac01, 0x000000, 0x53ad03, 0x000000, 0x000000,
+ 0x000000, 0x53b003, 0x53b301, 0x000000, 0x000000, 0x000000, 0x000000, 0x53b404,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x53b801, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x53b909, 0x000000, 0x53c201, 0x000000, 0x53c305, 0x53c803, 0x000000, 0x53cb01,
+ 0x000000, 0x53cc01, 0x53cd03, 0x000000, 0x000000, 0x000000, 0x53d001, 0x000000,
+ 0x000000, 0x53d102, 0x000000, 0x000000, 0x000000, 0x53d301, 0x53d403, 0x000000,
+ 0x000000, 0x53d709, 0x000000, 0x000000, 0x000000, 0x53e005, 0x53e501, 0x000000,
+ 0x000000, 0x53e602, 0x000000, 0x000000, 0x53e802, 0x53ea01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x53eb01, 0x000000,
+ 0x000000, 0x53ec01, 0x53ed02, 0x000000, 0x000000, 0x53ef23, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x541202, 0x000000, 0x000000, 0x541401,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x541503,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x541801, 0x541901,
+ 0x000000, 0x000000, 0x541a02, 0x000000, 0x000000, 0x541c06, 0x000000, 0x000000,
+ 0x542219, 0x543b03, 0x000000, 0x543e08, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x544602, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x54480e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x54560d,
+ 0x000000, 0x000000, 0x546301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x546401, 0x000000, 0x54650b, 0x000000,
+ 0x000000, 0x547001, 0x547101, 0x547201, 0x547303, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x547608, 0x000000, 0x000000, 0x000000, 0x000000, 0x547e04,
+ 0x000000, 0x548204, 0x000000, 0x000000, 0x000000, 0x000000, 0x548607, 0x548d07,
+ 0x549409, 0x549d01, 0x000000, 0x000000, 0x549e01, 0x549f02, 0x000000, 0x54a101,
+ 0x000000, 0x000000, 0x54a203, 0x000000, 0x54a502, 0x54a701, 0x54a801, 0x000000,
+ 0x54a909, 0x54b201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x54b30a,
+ 0x000000, 0x54bd01, 0x000000, 0x000000, 0x000000, 0x000000, 0x54be05, 0x54c303,
+ 0x000000, 0x54c601, 0x000000, 0x54c705, 0x000000, 0x000000, 0x54cc01, 0x000000,
+ 0x000000, 0x000000, 0x54cd01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x54ce01, 0x000000, 0x000000, 0x000000, 0x54cf05,
+ 0x000000, 0x54d40d, 0x000000, 0x54e101, 0x000000, 0x000000, 0x000000, 0x54e202,
+ 0x54e404, 0x000000, 0x000000, 0x000000, 0x000000, 0x54e804, 0x54ec01, 0x54ed05,
+ 0x000000, 0x54f202, 0x000000, 0x000000, 0x000000, 0x54f401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x54f502, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x54f701, 0x000000, 0x000000, 0x000000, 0x000000, 0x54f802, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x54fa01, 0x54fb01, 0x000000,
+ 0x54fc03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x54ff03,
+ 0x000000, 0x000000, 0x550201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x550302, 0x000000, 0x000000, 0x550501,
+ 0x000000, 0x000000, 0x550606, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x550c01, 0x000000, 0x550d01, 0x000000,
+ 0x000000, 0x550e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x550f01, 0x000000,
+ 0x000000, 0x551003, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x551307, 0x551a01, 0x551b03, 0x551e06, 0x000000,
+ 0x000000, 0x000000, 0x552408, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x552c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x552d01, 0x000000, 0x552e02,
+ 0x553001, 0x000000, 0x553101, 0x553206, 0x000000, 0x553802, 0x553a01, 0x553b03,
+ 0x000000, 0x553e01, 0x000000, 0x553f01, 0x000000, 0x000000, 0x554001, 0x000000,
+ 0x000000, 0x554106, 0x554701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x55480f, 0x555701, 0x555812, 0x000000, 0x000000, 0x556a03, 0x556d01, 0x556e02,
+ 0x557001, 0x000000, 0x000000, 0x000000, 0x557101, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x557203, 0x000000,
+ 0x557501, 0x000000, 0x000000, 0x000000, 0x557602, 0x000000, 0x557805, 0x557d01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x557e01, 0x000000, 0x000000, 0x557f06,
+ 0x558501, 0x558602, 0x558804, 0x000000, 0x558c03, 0x000000, 0x558f02, 0x000000,
+ 0x000000, 0x559103, 0x000000, 0x000000, 0x000000, 0x559401, 0x559501, 0x559601,
+ 0x000000, 0x000000, 0x559701, 0x000000, 0x000000, 0x559801, 0x559901, 0x559a04,
+ 0x000000, 0x559e02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x55a001, 0x000000, 0x000000, 0x55a10b, 0x55ac06, 0x55b205, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x55b701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x55b802, 0x000000, 0x55ba02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x55bc01, 0x000000, 0x000000,
+ 0x000000, 0x55bd01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x55be01,
+ 0x000000, 0x55bf02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x55c103, 0x55c401, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x55c501, 0x000000, 0x55c603, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x55c901, 0x55ca01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x55cb01, 0x55cc04, 0x000000, 0x000000,
+ 0x55d001, 0x55d104, 0x000000, 0x000000, 0x000000, 0x55d506, 0x000000, 0x000000,
+ 0x55db01, 0x55dc01, 0x000000, 0x55dd03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x55e003, 0x000000, 0x55e304, 0x000000, 0x55e707, 0x000000, 0x55ee02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x55f001, 0x000000,
+ 0x55f101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x55f201,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x55f304, 0x000000, 0x000000,
+ 0x000000, 0x55f701, 0x000000, 0x55f806, 0x55fe01, 0x000000, 0x000000, 0x55ff01,
+ 0x000000, 0x000000, 0x000000, 0x560002, 0x560201, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x560301, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x560410, 0x561402, 0x000000, 0x561601, 0x000000, 0x000000, 0x000000,
+ 0x561708, 0x000000, 0x000000, 0x000000, 0x561f01, 0x562004, 0x000000, 0x000000,
+ 0x562402, 0x562601, 0x562703, 0x562a01, 0x000000, 0x000000, 0x562b01, 0x562c03,
+ 0x000000, 0x000000, 0x562f02, 0x000000, 0x000000, 0x000000, 0x000000, 0x563107,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x563801,
+ 0x000000, 0x000000, 0x000000, 0x563901, 0x563a01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x563b01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x563c07, 0x56430f, 0x565205, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x565703, 0x000000, 0x000000, 0x565a01, 0x000000,
+ 0x565b01, 0x000000, 0x565c01, 0x000000, 0x565d01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x565e08, 0x566601, 0x000000, 0x566702,
+ 0x566903, 0x000000, 0x000000, 0x000000, 0x000000, 0x566c03, 0x000000, 0x000000,
+ 0x000000, 0x566f01, 0x56700c, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x567c01, 0x000000, 0x000000, 0x000000, 0x567d02, 0x000000, 0x000000,
+ 0x567f02, 0x568102, 0x000000, 0x568301, 0x568402, 0x568603, 0x568908, 0x000000,
+ 0x000000, 0x000000, 0x569102, 0x000000, 0x000000, 0x000000, 0x000000, 0x56930d,
+ 0x56a002, 0x000000, 0x000000, 0x000000, 0x000000, 0x56a203, 0x000000, 0x56a501,
+ 0x56a601, 0x000000, 0x000000, 0x56a704, 0x56ab02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x56ad04, 0x000000, 0x56b107,
+ 0x56b807, 0x000000, 0x000000, 0x56bf01, 0x000000, 0x56c003, 0x000000, 0x56c303,
+ 0x000000, 0x000000, 0x56c608, 0x000000, 0x56ce08, 0x56d601, 0x000000, 0x000000,
+ 0x56d702, 0x000000, 0x56d901, 0x000000, 0x000000, 0x56da01, 0x56db01, 0x000000,
+ 0x56dc03, 0x000000, 0x56df01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x56e001, 0x000000, 0x000000, 0x000000, 0x56e104, 0x56e501, 0x56e60c, 0x000000,
+ 0x000000, 0x000000, 0x56f209, 0x56fb01, 0x000000, 0x56fc01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x56fd01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x56fe01, 0x000000, 0x56ff05, 0x000000, 0x570401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x570502, 0x570703, 0x570a03, 0x570d01,
+ 0x000000, 0x000000, 0x570e02, 0x571001, 0x000000, 0x000000, 0x571103, 0x000000,
+ 0x571402, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x571606, 0x000000, 0x571c01, 0x571d03, 0x000000,
+ 0x000000, 0x000000, 0x572003, 0x000000, 0x572307, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x572a02,
+ 0x000000, 0x000000, 0x000000, 0x572c11, 0x000000, 0x573d01, 0x000000, 0x000000,
+ 0x000000, 0x573e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x573f02,
+ 0x000000, 0x574106, 0x574703, 0x000000, 0x574a02, 0x574c01, 0x000000, 0x574d07,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x575401,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x575501, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x575601, 0x575701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x575805, 0x575d03, 0x000000, 0x000000, 0x576001, 0x000000,
+ 0x576103, 0x576402, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x576602,
+ 0x000000, 0x576801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x576903,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x576c01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x576d01, 0x000000, 0x576e08, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x577601, 0x000000, 0x000000,
+ 0x577703, 0x577a01, 0x577b06, 0x578103, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x578401, 0x000000, 0x000000, 0x578502, 0x000000, 0x000000, 0x578701,
+ 0x000000, 0x000000, 0x578801, 0x57890e, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x579702, 0x000000, 0x000000, 0x000000, 0x000000, 0x579901,
+ 0x000000, 0x000000, 0x000000, 0x579a01, 0x000000, 0x579b04, 0x000000, 0x579f03,
+ 0x000000, 0x57a207, 0x57a901, 0x57aa01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x57ab02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x57ad08, 0x000000,
+ 0x57b501, 0x000000, 0x57b60a, 0x000000, 0x000000, 0x000000, 0x57c005, 0x000000,
+ 0x57c501, 0x000000, 0x57c601, 0x000000, 0x000000, 0x000000, 0x000000, 0x57c701,
+ 0x57c80e, 0x000000, 0x57d601, 0x000000, 0x000000, 0x000000, 0x57d701, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x57d80a, 0x000000, 0x000000, 0x57e20f, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x57f101, 0x000000, 0x000000,
+ 0x57f201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x57f301, 0x000000, 0x000000, 0x000000, 0x57f403, 0x57f70e, 0x000000, 0x000000,
+ 0x000000, 0x580501, 0x000000, 0x000000, 0x580601, 0x000000, 0x000000, 0x580704,
+ 0x000000, 0x580b0d, 0x581802, 0x000000, 0x581a06, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x582001, 0x000000, 0x000000, 0x582104, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x582501, 0x000000, 0x000000, 0x000000, 0x000000, 0x582601, 0x582707, 0x000000,
+ 0x000000, 0x582e04, 0x000000, 0x583203, 0x000000, 0x583501, 0x583602, 0x583801,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x583901, 0x000000, 0x000000,
+ 0x583a03, 0x000000, 0x000000, 0x583d01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x583e01, 0x000000, 0x583f01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x584009, 0x000000, 0x584902, 0x000000, 0x000000, 0x584b05, 0x000000,
+ 0x000000, 0x585009, 0x000000, 0x000000, 0x585901, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x585a05, 0x000000, 0x585f01, 0x58600d, 0x000000,
+ 0x000000, 0x586d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x586e01,
+ 0x000000, 0x000000, 0x586f04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x587301, 0x000000, 0x587402, 0x587605, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x587b01, 0x587c01, 0x000000, 0x000000, 0x000000, 0x587d01,
+ 0x000000, 0x587e01, 0x000000, 0x000000, 0x000000, 0x587f11, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x589002, 0x589201, 0x589302, 0x000000, 0x000000, 0x589501, 0x58960c, 0x000000,
+ 0x58a202, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x58a403, 0x000000, 0x000000, 0x58a703, 0x000000, 0x58aa08, 0x58b201, 0x58b30a,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x58bd01, 0x000000, 0x58be04, 0x000000, 0x000000, 0x000000, 0x000000, 0x58c201,
+ 0x000000, 0x000000, 0x000000, 0x58c301, 0x58c401, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x58c502, 0x58c701, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x58c802, 0x000000, 0x000000,
+ 0x58ca01, 0x000000, 0x000000, 0x000000, 0x000000, 0x58cb03, 0x58ce01, 0x58cf03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x58d20a, 0x000000, 0x58dc02, 0x000000,
+ 0x000000, 0x58de07, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x58e502, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x58e704, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x58eb01, 0x58ec01, 0x58ed02, 0x000000, 0x58ef01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x58f001, 0x58f101, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x58f201, 0x000000, 0x000000, 0x58f303, 0x58f601,
+ 0x000000, 0x58f701, 0x58f803, 0x58fb02, 0x000000, 0x000000, 0x58fd02, 0x58ff03,
+ 0x000000, 0x590202, 0x000000, 0x590407, 0x590b02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x590d04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x591101, 0x000000, 0x591201, 0x591301, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x591405,
+ 0x000000, 0x000000, 0x591901, 0x591a03, 0x591d02, 0x591f09, 0x000000, 0x592801,
+ 0x592905, 0x000000, 0x592e02, 0x593001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x593102, 0x000000, 0x593302,
+ 0x593501, 0x000000, 0x593601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x593707, 0x000000, 0x593e09, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x594701, 0x594801, 0x000000, 0x594901, 0x594a03, 0x000000, 0x000000, 0x594d02,
+ 0x000000, 0x000000, 0x594f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x595001,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x595101, 0x000000, 0x595201, 0x595301, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x595402, 0x000000, 0x595601, 0x000000, 0x595701,
+ 0x000000, 0x595808, 0x596001, 0x596102, 0x596301, 0x596401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x596501, 0x596607, 0x000000,
+ 0x596d01, 0x000000, 0x596e05, 0x000000, 0x000000, 0x000000, 0x597301, 0x000000,
+ 0x597403, 0x000000, 0x000000, 0x000000, 0x000000, 0x597701, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x597802, 0x597a08, 0x000000, 0x000000, 0x000000, 0x598202,
+ 0x598401, 0x000000, 0x000000, 0x598502, 0x000000, 0x000000, 0x000000, 0x598709,
+ 0x000000, 0x000000, 0x000000, 0x599001, 0x59910b, 0x000000, 0x000000, 0x000000,
+ 0x599c01, 0x599d01, 0x000000, 0x000000, 0x000000, 0x599e01, 0x000000, 0x000000,
+ 0x000000, 0x599f02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x59a101, 0x000000, 0x59a207, 0x000000, 0x000000, 0x59a902, 0x000000,
+ 0x59ab06, 0x000000, 0x000000, 0x59b101, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x59b201, 0x000000, 0x000000, 0x59b301, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x59b403, 0x000000,
+ 0x59b701, 0x000000, 0x000000, 0x000000, 0x59b801, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x59b901, 0x000000, 0x59ba07, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x59c101, 0x000000, 0x000000, 0x59c208, 0x000000, 0x59ca02,
+ 0x000000, 0x000000, 0x59cc01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x59cd0f, 0x000000, 0x59dc01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x59dd01, 0x59de01, 0x59df0f, 0x000000, 0x000000,
+ 0x59ee01, 0x59ef05, 0x59f401, 0x000000, 0x000000, 0x000000, 0x000000, 0x59f502,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x59f703, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x59fa03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x59fd0a, 0x000000, 0x000000, 0x000000, 0x5a0701, 0x000000, 0x5a0803, 0x5a0b01,
+ 0x5a0c07, 0x5a1301, 0x5a1402, 0x000000, 0x5a1604, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x5a1a01, 0x5a1b01, 0x000000, 0x000000, 0x000000, 0x5a1c04, 0x5a2036,
+ 0x000000, 0x000000, 0x000000, 0x5a5601, 0x000000, 0x5a5701, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x5a5809, 0x000000, 0x5a6103, 0x5a6408, 0x000000,
+ 0x5a6c01, 0x000000, 0x000000, 0x5a6d02, 0x000000, 0x000000, 0x000000, 0x5a6f02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x5a7103, 0x000000, 0x000000, 0x000000, 0x000000, 0x5a7402, 0x5a7601, 0x5a7714,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5a8b01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x5a8c07, 0x000000, 0x000000, 0x5a9301, 0x000000, 0x5a9406, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x5a9a01, 0x000000, 0x000000, 0x5a9b03, 0x5a9e03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x5aa102, 0x000000, 0x5aa303, 0x000000, 0x5aa602, 0x000000, 0x5aa801,
+ 0x5aa911, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5aba02,
+ 0x5abc01, 0x000000, 0x000000, 0x5abd04, 0x5ac104, 0x5ac507, 0x000000, 0x000000,
+ 0x000000, 0x5acc01, 0x5acd02, 0x5acf01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x5ad005, 0x5ad50b, 0x000000, 0x000000, 0x000000, 0x5ae003, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5ae308, 0x000000, 0x5aeb01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5aec14, 0x000000, 0x5b0001, 0x000000,
+ 0x5b0101, 0x000000, 0x000000, 0x000000, 0x000000, 0x5b0203, 0x000000, 0x5b0501,
+ 0x000000, 0x000000, 0x5b0609, 0x5b0f02, 0x000000, 0x000000, 0x5b1106, 0x000000,
+ 0x5b1704, 0x000000, 0x000000, 0x000000, 0x000000, 0x5b1b01, 0x000000, 0x5b1c03,
+ 0x000000, 0x5b1f06, 0x000000, 0x5b2503, 0x000000, 0x000000, 0x000000, 0x5b2806,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5b2e01, 0x5b2f02, 0x5b3102, 0x000000,
+ 0x5b3305, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x5b3802, 0x000000, 0x000000, 0x000000, 0x000000, 0x5b3a01, 0x000000,
+ 0x5b3b02, 0x5b3d01, 0x000000, 0x000000, 0x000000, 0x5b3e01, 0x5b3f01, 0x000000,
+ 0x5b4006, 0x000000, 0x5b4602, 0x000000, 0x5b4804, 0x000000, 0x000000, 0x5b4c05,
+ 0x000000, 0x5b5101, 0x5b5203, 0x000000, 0x5b5501, 0x5b5604, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5b5a01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x5b5b02, 0x5b5d03, 0x000000, 0x000000, 0x5b6005,
+ 0x5b6501, 0x000000, 0x000000, 0x000000, 0x5b6601, 0x000000, 0x000000, 0x000000,
+ 0x5b6701, 0x000000, 0x000000, 0x000000, 0x000000, 0x5b680e, 0x000000, 0x000000,
+ 0x000000, 0x5b7601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5b7706, 0x000000, 0x5b7d15, 0x000000, 0x5b9201, 0x5b9304,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5b9706, 0x000000, 0x5b9d02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5b9f02, 0x000000, 0x000000,
+ 0x5ba106, 0x5ba701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x5ba805, 0x000000, 0x000000, 0x000000, 0x5bad01, 0x5bae01, 0x000000, 0x000000,
+ 0x5baf01, 0x000000, 0x000000, 0x000000, 0x5bb017, 0x5bc701, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5bc802, 0x000000,
+ 0x5bca03, 0x000000, 0x000000, 0x5bcd01, 0x000000, 0x000000, 0x5bce0a, 0x000000,
+ 0x000000, 0x5bd802, 0x000000, 0x000000, 0x5bda02, 0x000000, 0x000000, 0x000000,
+ 0x5bdc01, 0x000000, 0x000000, 0x000000, 0x000000, 0x5bdd01, 0x5bde02, 0x5be003,
+ 0x5be301, 0x000000, 0x5be403, 0x5be70b, 0x5bf202, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5bf403, 0x000000, 0x000000, 0x5bf70c, 0x000000, 0x000000,
+ 0x5c0301, 0x000000, 0x000000, 0x5c0402, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x5c0601, 0x000000, 0x5c0701, 0x000000, 0x000000, 0x5c0805, 0x000000,
+ 0x000000, 0x5c0d02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5c0f01,
+ 0x5c1001, 0x5c1101, 0x000000, 0x000000, 0x000000, 0x000000, 0x5c1203, 0x000000,
+ 0x5c1501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5c1604, 0x000000, 0x5c1a02, 0x000000,
+ 0x000000, 0x5c1c06, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x5c2209, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x5c2b02, 0x5c2d04, 0x000000, 0x000000, 0x000000, 0x000000, 0x5c3104, 0x5c3501,
+ 0x000000, 0x000000, 0x5c3601, 0x000000, 0x5c3706, 0x000000, 0x000000, 0x000000,
+ 0x5c3d02, 0x5c3f02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5c4101,
+ 0x000000, 0x000000, 0x5c4202, 0x000000, 0x000000, 0x000000, 0x000000, 0x5c4405,
+ 0x5c4901, 0x000000, 0x5c4a02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5c4c01, 0x000000, 0x5c4d04, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x5c5102, 0x000000, 0x5c5302, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5c5502, 0x000000, 0x000000, 0x000000, 0x000000, 0x5c571b,
+ 0x5c7202, 0x000000, 0x5c740c, 0x000000, 0x000000, 0x000000, 0x5c8001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5c8101, 0x000000,
+ 0x5c8201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5c8301, 0x000000,
+ 0x000000, 0x000000, 0x5c8404, 0x5c8804, 0x000000, 0x5c8c01, 0x5c8d06, 0x5c9302,
+ 0x000000, 0x5c9507, 0x000000, 0x5c9c03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x5c9f02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x5ca101, 0x000000, 0x000000, 0x5ca203, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x5ca502, 0x000000, 0x000000, 0x5ca702, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x5ca904, 0x000000, 0x000000, 0x000000, 0x5cad03, 0x5cb00c, 0x000000,
+ 0x5cbc05, 0x5cc102, 0x000000, 0x5cc301, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x5cc401, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5cc501, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x5cc602, 0x000000, 0x5cc804, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5ccc08, 0x5cd405, 0x000000, 0x000000, 0x000000, 0x5cd901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5cda01,
+ 0x000000, 0x5cdb09, 0x5ce40f, 0x000000, 0x000000, 0x5cf302, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5cf501, 0x000000, 0x5cf603, 0x000000, 0x000000, 0x000000,
+ 0x5cf904, 0x000000, 0x000000, 0x5cfd01, 0x000000, 0x5cfe01, 0x000000, 0x000000,
+ 0x5cff01, 0x000000, 0x5d000a, 0x000000, 0x5d0a02, 0x000000, 0x000000, 0x000000,
+ 0x5d0c06, 0x000000, 0x5d1202, 0x000000, 0x000000, 0x000000, 0x5d1401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5d1502, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5d1701, 0x5d1801, 0x5d1901,
+ 0x5d1a02, 0x000000, 0x000000, 0x000000, 0x000000, 0x5d1c01, 0x5d1d08, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5d2501, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x5d2620, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x5d4602, 0x5d4801, 0x000000, 0x000000, 0x5d4901, 0x5d4a0c, 0x5d5604,
+ 0x000000, 0x5d5a02, 0x000000, 0x000000, 0x000000, 0x000000, 0x5d5c01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5d5d01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x5d5e02, 0x5d6001, 0x000000, 0x5d6101, 0x000000,
+ 0x5d620b, 0x5d6d01, 0x5d6e01, 0x5d6f02, 0x000000, 0x5d7102, 0x000000, 0x5d7303,
+ 0x000000, 0x5d7607, 0x000000, 0x5d7d03, 0x000000, 0x5d8004, 0x5d8401, 0x000000,
+ 0x5d8504, 0x5d8909, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5d9201,
+ 0x5d9302, 0x5d9501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x5d9603, 0x000000, 0x5d9903, 0x5d9c01, 0x000000, 0x5d9d01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5d9e01, 0x5d9f05, 0x000000, 0x000000, 0x5da401, 0x000000,
+ 0x000000, 0x5da501, 0x000000, 0x000000, 0x000000, 0x000000, 0x5da601, 0x000000,
+ 0x5da701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5da803, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5dab04,
+ 0x000000, 0x000000, 0x5daf01, 0x000000, 0x5db002, 0x000000, 0x000000, 0x5db201,
+ 0x000000, 0x000000, 0x5db302, 0x5db501, 0x5db601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x5db702, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5db904, 0x000000, 0x000000, 0x000000,
+ 0x5dbd01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5dbe04, 0x000000, 0x000000, 0x5dc201, 0x000000, 0x5dc302,
+ 0x000000, 0x5dc501, 0x000000, 0x000000, 0x000000, 0x5dc601, 0x000000, 0x000000,
+ 0x5dc701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x5dc801, 0x000000, 0x000000, 0x5dc901, 0x000000, 0x000000, 0x5dca02, 0x000000,
+ 0x000000, 0x5dcc01, 0x5dcd01, 0x000000, 0x000000, 0x5dce01, 0x5dcf0b, 0x5dda01,
+ 0x000000, 0x5ddb01, 0x5ddc01, 0x000000, 0x5ddd03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5de001, 0x5de101, 0x000000, 0x5de201, 0x000000, 0x000000,
+ 0x5de308, 0x000000, 0x000000, 0x5deb04, 0x000000, 0x5def01, 0x5df00e, 0x5dfe04,
+ 0x5e0201, 0x000000, 0x5e0302, 0x5e0501, 0x000000, 0x000000, 0x5e0607, 0x5e0d09,
+ 0x5e1603, 0x000000, 0x5e1905, 0x000000, 0x000000, 0x000000, 0x5e1e03, 0x000000,
+ 0x5e2103, 0x5e2403, 0x5e2702, 0x5e2901, 0x000000, 0x5e2a01, 0x000000, 0x000000,
+ 0x000000, 0x5e2b02, 0x000000, 0x000000, 0x000000, 0x000000, 0x5e2d01, 0x5e2e02,
+ 0x000000, 0x5e3002, 0x000000, 0x000000, 0x5e3205, 0x5e3704, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5e3b01, 0x000000, 0x5e3c01, 0x000000,
+ 0x5e3d01, 0x000000, 0x5e3e08, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x5e4601, 0x000000, 0x000000, 0x5e4701, 0x000000, 0x5e4805, 0x5e4d04, 0x000000,
+ 0x000000, 0x000000, 0x5e5101, 0x000000, 0x000000, 0x5e5202, 0x5e5405, 0x5e5909,
+ 0x000000, 0x5e6202, 0x000000, 0x000000, 0x000000, 0x5e6401, 0x5e6501, 0x5e6602,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5e6801, 0x5e6905, 0x5e6e03, 0x000000, 0x000000, 0x000000,
+ 0x5e7101, 0x000000, 0x000000, 0x5e7202, 0x000000, 0x000000, 0x5e7403, 0x000000,
+ 0x5e770d, 0x5e8404, 0x000000, 0x5e8803, 0x5e8b02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x5e8d06, 0x5e9308, 0x5e9b04, 0x000000, 0x000000,
+ 0x000000, 0x5e9f02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5ea108, 0x000000, 0x5ea901, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5eaa01, 0x000000, 0x5eab03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5eae01, 0x5eaf01, 0x5eb007,
+ 0x000000, 0x000000, 0x5eb701, 0x000000, 0x000000, 0x5eb802, 0x000000, 0x5eba02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5ebc0f, 0x000000,
+ 0x5ecb01, 0x000000, 0x000000, 0x000000, 0x5ecc02, 0x000000, 0x5ece01, 0x5ecf01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5ed001, 0x000000, 0x000000, 0x5ed105,
+ 0x000000, 0x000000, 0x5ed601, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5ed70d, 0x000000, 0x5ee401, 0x5ee502, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5ee71b, 0x000000, 0x000000, 0x5f0206,
+ 0x000000, 0x000000, 0x000000, 0x5f0801, 0x5f0901, 0x5f0a08, 0x5f120c, 0x000000,
+ 0x5f1e12, 0x000000, 0x000000, 0x5f3001, 0x5f3101, 0x000000, 0x000000, 0x000000,
+ 0x5f3201, 0x000000, 0x000000, 0x000000, 0x000000, 0x5f3301, 0x5f3401, 0x5f3504,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5f3901, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5f3a02, 0x000000, 0x5f3c02, 0x000000, 0x5f3e06, 0x5f4401,
+ 0x000000, 0x5f4504, 0x000000, 0x000000, 0x5f4901, 0x5f4a05, 0x5f4f01, 0x000000,
+ 0x000000, 0x000000, 0x5f5001, 0x5f5104, 0x000000, 0x5f5505, 0x000000, 0x000000,
+ 0x000000, 0x5f5a04, 0x000000, 0x000000, 0x000000, 0x5f5e01, 0x000000, 0x5f5f01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5f6002, 0x000000, 0x5f6203,
+ 0x000000, 0x5f6501, 0x000000, 0x5f6605, 0x5f6b07, 0x000000, 0x5f7204, 0x000000,
+ 0x000000, 0x000000, 0x5f7601, 0x000000, 0x000000, 0x000000, 0x5f7702, 0x5f7904,
+ 0x5f7d01, 0x000000, 0x000000, 0x000000, 0x5f7e01, 0x5f7f01, 0x5f8003, 0x5f8301,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5f8404, 0x5f8801, 0x000000, 0x000000,
+ 0x5f8901, 0x5f8a01, 0x5f8b05, 0x000000, 0x5f9005, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5f9501, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5f9602,
+ 0x000000, 0x5f9801, 0x5f9901, 0x5f9a01, 0x5f9b02, 0x000000, 0x5f9d02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x5f9f01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5fa001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x5fa103, 0x5fa401, 0x000000, 0x000000, 0x000000, 0x000000, 0x5fa502,
+ 0x000000, 0x000000, 0x000000, 0x5fa706, 0x000000, 0x000000, 0x000000, 0x5fad03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5fb001, 0x000000, 0x000000, 0x5fb101,
+ 0x000000, 0x000000, 0x000000, 0x5fb207, 0x5fb901, 0x000000, 0x000000, 0x000000,
+ 0x5fba04, 0x000000, 0x000000, 0x5fbe02, 0x000000, 0x000000, 0x5fc001, 0x5fc103,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5fc401, 0x000000, 0x5fc502,
+ 0x000000, 0x5fc701, 0x000000, 0x5fc803, 0x5fcb01, 0x5fcc02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x5fce01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5fcf09, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x5fd802, 0x5fda01, 0x000000, 0x5fdb08, 0x000000,
+ 0x000000, 0x000000, 0x5fe301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x5fe401, 0x5fe503, 0x000000, 0x000000, 0x000000, 0x5fe801, 0x5fe901, 0x000000,
+ 0x5fea01, 0x000000, 0x5feb02, 0x000000, 0x5fed02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5fef01, 0x000000, 0x000000, 0x000000, 0x5ff001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x5ff105, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x5ff602, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x5ff805, 0x000000, 0x000000, 0x000000, 0x5ffd01, 0x000000, 0x5ffe02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x600004, 0x600403, 0x000000, 0x600701, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x600801, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x600901, 0x000000, 0x000000, 0x600a01, 0x000000, 0x600b02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x600d01, 0x600e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x600f02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x601102,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x601301,
+ 0x601405, 0x000000, 0x000000, 0x000000, 0x000000, 0x601901, 0x601a01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x601b01, 0x000000, 0x000000, 0x601c05, 0x000000,
+ 0x602101, 0x000000, 0x000000, 0x602201, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x602303, 0x602601, 0x602708, 0x602f03, 0x000000, 0x000000, 0x000000, 0x60320b,
+ 0x000000, 0x603d01, 0x603e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x603f0f,
+ 0x000000, 0x000000, 0x000000, 0x604e01, 0x604f01, 0x605005, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x605501, 0x000000,
+ 0x605601, 0x605701, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x605802,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x605a01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x605b01, 0x605c01, 0x000000, 0x605d04, 0x606101,
+ 0x000000, 0x000000, 0x000000, 0x606203, 0x000000, 0x606501, 0x000000, 0x000000,
+ 0x606602, 0x000000, 0x000000, 0x000000, 0x606802, 0x000000, 0x606a01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x606b01, 0x000000, 0x606c01, 0x000000, 0x000000,
+ 0x606d02, 0x000000, 0x000000, 0x606f01, 0x607001, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x607101, 0x607206, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x607801, 0x000000, 0x60790b, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x608401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x608502, 0x000000, 0x608701, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x608801, 0x608901, 0x000000, 0x608a01,
+ 0x000000, 0x608b02, 0x608d01, 0x000000, 0x608e01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x608f05, 0x000000, 0x000000, 0x60940d, 0x000000, 0x000000, 0x60a10b,
+ 0x000000, 0x60ac01, 0x60ad02, 0x000000, 0x000000, 0x000000, 0x60af01, 0x000000,
+ 0x000000, 0x000000, 0x60b005, 0x000000, 0x000000, 0x000000, 0x60b504, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x60b901, 0x000000, 0x60ba01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x60bb01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x60bc02, 0x60be01, 0x60bf04, 0x000000,
+ 0x60c301, 0x000000, 0x000000, 0x000000, 0x000000, 0x60c404, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x60c808, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x60d001, 0x000000, 0x60d102, 0x60d301, 0x000000, 0x000000, 0x000000, 0x60d405,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x60d904, 0x60dd01, 0x000000, 0x60de01,
+ 0x60df03, 0x000000, 0x000000, 0x000000, 0x60e201, 0x000000, 0x60e302, 0x60e501,
+ 0x000000, 0x60e603, 0x000000, 0x000000, 0x000000, 0x60e911, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x60fa01, 0x60fb07, 0x000000, 0x610201,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x610303, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x610604, 0x000000, 0x610a01, 0x610b03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x610e01, 0x000000, 0x000000, 0x610f01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x611001, 0x000000, 0x611101, 0x611201,
+ 0x000000, 0x000000, 0x000000, 0x611301, 0x000000, 0x611401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x611501,
+ 0x000000, 0x61160d, 0x000000, 0x000000, 0x61230f, 0x000000, 0x000000, 0x000000,
+ 0x613201, 0x000000, 0x000000, 0x000000, 0x61330b, 0x000000, 0x613e02, 0x614002,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x614201, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x61430d, 0x000000, 0x615001, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x615103, 0x000000, 0x000000, 0x61540d,
+ 0x616101, 0x616201, 0x000000, 0x000000, 0x000000, 0x616307, 0x000000, 0x000000,
+ 0x616a03, 0x000000, 0x000000, 0x616d03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x617005, 0x617501, 0x000000,
+ 0x617602, 0x000000, 0x000000, 0x617801, 0x000000, 0x000000, 0x000000, 0x617905,
+ 0x000000, 0x617e02, 0x000000, 0x000000, 0x000000, 0x618001, 0x000000, 0x000000,
+ 0x618102, 0x000000, 0x618304, 0x618702, 0x618902, 0x618b04, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x618f01, 0x000000, 0x000000, 0x000000, 0x619005,
+ 0x000000, 0x619501, 0x000000, 0x000000, 0x619601, 0x000000, 0x000000, 0x619709,
+ 0x000000, 0x000000, 0x000000, 0x61a001, 0x000000, 0x000000, 0x000000, 0x61a107,
+ 0x000000, 0x000000, 0x61a802, 0x000000, 0x000000, 0x000000, 0x61aa0f, 0x000000,
+ 0x000000, 0x61b905, 0x000000, 0x000000, 0x61be0b, 0x000000, 0x000000, 0x000000,
+ 0x61c901, 0x000000, 0x000000, 0x61ca01, 0x61cb01, 0x000000, 0x61cc02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x61ce01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x61cf02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x61d101, 0x000000, 0x000000, 0x61d202,
+ 0x61d404, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x61d802,
+ 0x000000, 0x000000, 0x61da01, 0x000000, 0x61db01, 0x61dc01, 0x000000, 0x000000,
+ 0x61dd01, 0x000000, 0x000000, 0x000000, 0x61de02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x61e002, 0x61e201, 0x000000, 0x000000, 0x61e304, 0x61e701, 0x000000,
+ 0x61e804, 0x61ec01, 0x61ed02, 0x000000, 0x000000, 0x000000, 0x000000, 0x61ef01,
+ 0x000000, 0x61f011, 0x000000, 0x620102, 0x000000, 0x000000, 0x620301, 0x620408,
+ 0x620c04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x621003,
+ 0x621305, 0x000000, 0x000000, 0x621802, 0x000000, 0x000000, 0x621a01, 0x621b01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x621c03, 0x000000,
+ 0x000000, 0x000000, 0x621f01, 0x622004, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x622401, 0x000000, 0x000000, 0x000000, 0x622504,
+ 0x000000, 0x622904, 0x622d05, 0x000000, 0x623204, 0x000000, 0x623608, 0x000000,
+ 0x000000, 0x000000, 0x623e0a, 0x000000, 0x624802, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x624a0b, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x625501, 0x000000, 0x625620, 0x000000, 0x627602, 0x000000, 0x000000, 0x000000,
+ 0x627804, 0x000000, 0x000000, 0x000000, 0x000000, 0x627c06, 0x000000, 0x628204,
+ 0x000000, 0x628602, 0x000000, 0x628802, 0x000000, 0x000000, 0x000000, 0x628a01,
+ 0x000000, 0x000000, 0x000000, 0x628b01, 0x000000, 0x000000, 0x000000, 0x628c02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x628e02,
+ 0x629004, 0x000000, 0x000000, 0x000000, 0x000000, 0x629402, 0x629604, 0x000000,
+ 0x000000, 0x000000, 0x629a09, 0x000000, 0x000000, 0x000000, 0x62a305, 0x000000,
+ 0x62a801, 0x62a902, 0x000000, 0x000000, 0x000000, 0x000000, 0x62ab05, 0x62b003,
+ 0x000000, 0x62b305, 0x000000, 0x000000, 0x62b833, 0x62eb01, 0x000000, 0x62ec01,
+ 0x000000, 0x62ed01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x62ee01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x62ef04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x62f301,
+ 0x000000, 0x000000, 0x000000, 0x62f403, 0x000000, 0x000000, 0x000000, 0x62f701,
+ 0x62f801, 0x62f905, 0x000000, 0x000000, 0x62fe07, 0x000000, 0x630502, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x630702, 0x000000,
+ 0x630915, 0x000000, 0x631e04, 0x000000, 0x632205, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x632702, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x632902, 0x000000, 0x632b02, 0x000000, 0x632d09,
+ 0x000000, 0x000000, 0x633602, 0x000000, 0x000000, 0x633801, 0x000000, 0x000000,
+ 0x000000, 0x633905, 0x000000, 0x000000, 0x000000, 0x633e06, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x634402, 0x634602, 0x000000, 0x000000, 0x634802, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x634a02, 0x000000, 0x000000,
+ 0x000000, 0x634c03, 0x000000, 0x000000, 0x000000, 0x634f09, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x635802, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x635a01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x635b01, 0x000000, 0x000000, 0x000000, 0x635c03,
+ 0x000000, 0x000000, 0x635f02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x636101, 0x000000, 0x000000, 0x636203, 0x000000, 0x636503, 0x000000,
+ 0x000000, 0x636801, 0x000000, 0x000000, 0x000000, 0x636902, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x636b01, 0x000000, 0x636c01, 0x636d01, 0x636e01, 0x000000,
+ 0x000000, 0x000000, 0x636f01, 0x000000, 0x637002, 0x000000, 0x000000, 0x000000,
+ 0x637202, 0x000000, 0x637407, 0x000000, 0x637b01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x637c02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x637e03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x638101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x638202, 0x000000, 0x000000, 0x000000, 0x000000, 0x638406,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x638a01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x638b01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x638c0c,
+ 0x000000, 0x639801, 0x000000, 0x000000, 0x639906, 0x000000, 0x639f06, 0x000000,
+ 0x63a502, 0x000000, 0x63a701, 0x000000, 0x000000, 0x63a801, 0x63a903, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x63ac01, 0x63ad01, 0x63ae01,
+ 0x000000, 0x63af01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x63b001, 0x000000, 0x63b105, 0x63b607, 0x63bd02, 0x000000, 0x63bf01,
+ 0x000000, 0x63c00b, 0x000000, 0x000000, 0x63cb02, 0x63cd01, 0x000000, 0x000000,
+ 0x63ce01, 0x000000, 0x63cf02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x63d101, 0x000000, 0x63d201, 0x000000, 0x63d301, 0x63d40b, 0x63df02, 0x000000,
+ 0x000000, 0x000000, 0x63e101, 0x63e203, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x63e505, 0x000000, 0x000000, 0x000000, 0x000000, 0x63ea02,
+ 0x000000, 0x000000, 0x000000, 0x63ec01, 0x000000, 0x000000, 0x000000, 0x63ed06,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x63f301, 0x000000, 0x000000, 0x000000, 0x000000, 0x63f401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x63f501, 0x000000, 0x63f601, 0x63f701, 0x63f801,
+ 0x000000, 0x63f902, 0x000000, 0x000000, 0x000000, 0x63fb01, 0x000000, 0x63fc12,
+ 0x640e03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x641101, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x641204, 0x641606, 0x000000, 0x000000, 0x641c02,
+ 0x000000, 0x000000, 0x641e04, 0x000000, 0x000000, 0x000000, 0x642201, 0x64230d,
+ 0x000000, 0x000000, 0x643005, 0x000000, 0x000000, 0x000000, 0x000000, 0x643507,
+ 0x000000, 0x000000, 0x000000, 0x643c02, 0x643e08, 0x000000, 0x000000, 0x644607,
+ 0x000000, 0x000000, 0x644d14, 0x646101, 0x000000, 0x646203, 0x646501, 0x646601,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x646702, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x646904, 0x000000,
+ 0x000000, 0x646d01, 0x000000, 0x646e01, 0x000000, 0x646f03, 0x000000, 0x647201,
+ 0x647301, 0x647401, 0x000000, 0x000000, 0x64750a, 0x647f04, 0x648302, 0x000000,
+ 0x000000, 0x000000, 0x648503, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x648802, 0x000000, 0x000000, 0x648a01,
+ 0x000000, 0x000000, 0x000000, 0x648b01, 0x000000, 0x648c04, 0x649001, 0x000000,
+ 0x649102, 0x000000, 0x649318, 0x64ab06, 0x64b102, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x64b301, 0x000000, 0x000000, 0x000000, 0x000000, 0x64b401,
+ 0x000000, 0x64b502, 0x64b701, 0x64b804, 0x000000, 0x000000, 0x000000, 0x64bc08,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x64c404, 0x64c807,
+ 0x000000, 0x000000, 0x000000, 0x64cf01, 0x64d002, 0x000000, 0x000000, 0x64d203,
+ 0x64d501, 0x64d602, 0x000000, 0x000000, 0x64d803, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x64db0c, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x64e701, 0x64e80d, 0x000000, 0x000000, 0x000000, 0x64f501,
+ 0x000000, 0x000000, 0x000000, 0x64f601, 0x64f701, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x64f801, 0x64f901,
+ 0x000000, 0x000000, 0x64fa01, 0x000000, 0x000000, 0x64fb0a, 0x000000, 0x650501,
+ 0x000000, 0x000000, 0x000000, 0x650602, 0x650802, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x650a01, 0x650b01, 0x000000, 0x650c05,
+ 0x651101, 0x000000, 0x651201, 0x000000, 0x651301, 0x651401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x651518, 0x652d01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x652e01, 0x652f01, 0x653003, 0x000000, 0x000000,
+ 0x000000, 0x653301, 0x653401, 0x000000, 0x000000, 0x000000, 0x000000, 0x653502,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x653701,
+ 0x000000, 0x653801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x653902, 0x000000, 0x000000, 0x653b01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x653c0a, 0x654601, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x654702, 0x000000, 0x000000, 0x654903, 0x000000, 0x000000, 0x000000,
+ 0x654c05, 0x000000, 0x000000, 0x655104, 0x655503, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x655805, 0x000000, 0x655d06, 0x000000,
+ 0x656305, 0x000000, 0x000000, 0x656801, 0x656901, 0x000000, 0x000000, 0x656a01,
+ 0x000000, 0x656b01, 0x656c01, 0x656d01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x656e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x656f01, 0x000000,
+ 0x000000, 0x000000, 0x657002, 0x657202, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x657402, 0x657603, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x657903, 0x000000, 0x657c01, 0x000000, 0x000000, 0x000000,
+ 0x657d02, 0x000000, 0x000000, 0x000000, 0x657f09, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x658809, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x659103, 0x000000, 0x000000, 0x000000, 0x659401, 0x000000,
+ 0x000000, 0x000000, 0x659501, 0x659607, 0x000000, 0x000000, 0x659d01, 0x659e01,
+ 0x659f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x65a001,
+ 0x65a102, 0x65a302, 0x000000, 0x65a501, 0x65a601, 0x000000, 0x000000, 0x000000,
+ 0x65a704, 0x65ab01, 0x000000, 0x65ac04, 0x65b001, 0x65b10a, 0x65bb02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x65bd01, 0x000000, 0x000000, 0x65be02,
+ 0x000000, 0x000000, 0x65c001, 0x000000, 0x65c101, 0x000000, 0x65c202, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x65c401, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x65c505, 0x65ca01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x65cb06, 0x000000, 0x65d101, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x65d202, 0x000000, 0x65d402, 0x000000, 0x000000, 0x65d602, 0x000000, 0x000000,
+ 0x000000, 0x65d801, 0x000000, 0x65d903, 0x65dc01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x65dd01, 0x000000, 0x000000, 0x000000, 0x65de0b, 0x000000, 0x65e904,
+ 0x000000, 0x000000, 0x65ed01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x65ee01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x65ef05,
+ 0x65f406, 0x000000, 0x65fa0f, 0x660902, 0x000000, 0x660b01, 0x000000, 0x000000,
+ 0x660c0b, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x661705,
+ 0x661c0e, 0x662a09, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x663302, 0x663501, 0x000000, 0x000000, 0x000000,
+ 0x663603, 0x000000, 0x663901, 0x663a01, 0x000000, 0x000000, 0x663b02, 0x000000,
+ 0x000000, 0x663d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x663e01,
+ 0x000000, 0x000000, 0x000000, 0x663f01, 0x664090, 0x000000, 0x66d001, 0x66d101,
+ 0x000000, 0x66d201, 0x000000, 0x000000, 0x66d301, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x66d406, 0x000000, 0x66da04, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x66de0f, 0x000000, 0x000000,
+ 0x000000, 0x66ed1d, 0x000000, 0x000000, 0x000000, 0x670a03, 0x000000, 0x000000,
+ 0x670d01, 0x670e02, 0x671007, 0x000000, 0x000000, 0x67170e, 0x672505, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x672a01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x672b08, 0x000000, 0x000000, 0x673303, 0x000000, 0x000000, 0x673601,
+ 0x000000, 0x673702, 0x673906, 0x673f03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x674201, 0x000000, 0x674305, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x674803, 0x000000, 0x674b02, 0x000000,
+ 0x000000, 0x000000, 0x674d01, 0x000000, 0x000000, 0x000000, 0x000000, 0x674e02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x675001, 0x000000, 0x675102, 0x675301,
+ 0x000000, 0x675401, 0x675501, 0x000000, 0x000000, 0x000000, 0x675601, 0x000000,
+ 0x000000, 0x000000, 0x675702, 0x000000, 0x000000, 0x675902, 0x000000, 0x000000,
+ 0x675b03, 0x000000, 0x675e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x675f06, 0x676503, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x676801, 0x000000,
+ 0x000000, 0x676901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x676a02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x676c08, 0x000000, 0x677401, 0x000000, 0x000000, 0x677501, 0x000000,
+ 0x677601, 0x000000, 0x000000, 0x677705, 0x677c01, 0x677d01, 0x000000, 0x000000,
+ 0x677e02, 0x000000, 0x678007, 0x678702, 0x678901, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x678a02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x678c01, 0x000000, 0x000000, 0x678d02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x678f01, 0x000000, 0x679002, 0x679203, 0x000000, 0x000000, 0x000000,
+ 0x679501, 0x000000, 0x000000, 0x000000, 0x679605, 0x000000, 0x679b02, 0x679d01,
+ 0x000000, 0x000000, 0x000000, 0x679e05, 0x000000, 0x67a301, 0x000000, 0x67a404,
+ 0x67a815, 0x67bd01, 0x000000, 0x000000, 0x000000, 0x67be0c, 0x000000, 0x000000,
+ 0x000000, 0x67ca02, 0x000000, 0x000000, 0x67cc0f, 0x000000, 0x67db05, 0x000000,
+ 0x67e00a, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x67ea01,
+ 0x000000, 0x67eb02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x67ed01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x67ee02, 0x67f002, 0x67f203, 0x67f502,
+ 0x000000, 0x000000, 0x000000, 0x67f704, 0x67fb01, 0x000000, 0x67fc06, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x680202, 0x000000, 0x680401, 0x000000,
+ 0x000000, 0x680502, 0x000000, 0x000000, 0x68070b, 0x681201, 0x000000, 0x000000,
+ 0x000000, 0x681302, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x681501, 0x681603, 0x000000, 0x000000, 0x000000,
+ 0x681906, 0x000000, 0x000000, 0x681f07, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x682607, 0x682d01, 0x682e0e, 0x000000, 0x000000, 0x000000, 0x683c01, 0x683d01,
+ 0x683e02, 0x000000, 0x684037, 0x000000, 0x000000, 0x000000, 0x000000, 0x687701,
+ 0x000000, 0x687802, 0x000000, 0x687a01, 0x687b01, 0x000000, 0x687c01, 0x687d01,
+ 0x687e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x687f03, 0x688201, 0x000000,
+ 0x000000, 0x000000, 0x68830d, 0x689005, 0x000000, 0x000000, 0x000000, 0x689501,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x689602, 0x000000, 0x689801,
+ 0x689908, 0x000000, 0x68a101, 0x000000, 0x000000, 0x000000, 0x68a201, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x68a301, 0x000000, 0x000000, 0x68a402,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x68a601, 0x000000, 0x68a701,
+ 0x68a801, 0x000000, 0x000000, 0x000000, 0x68a903, 0x000000, 0x68ac01, 0x68ad02,
+ 0x000000, 0x000000, 0x000000, 0x68af03, 0x000000, 0x000000, 0x68b201, 0x000000,
+ 0x68b301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x68b403, 0x000000, 0x000000, 0x68b701, 0x000000, 0x000000,
+ 0x68b803, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x68bb0d, 0x000000, 0x68c801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x68c901, 0x000000, 0x000000, 0x68ca02, 0x68cc05, 0x68d101,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x68d20e, 0x000000, 0x000000, 0x68e002,
+ 0x000000, 0x68e201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x68e301, 0x000000, 0x68e404, 0x68e801, 0x000000,
+ 0x68e901, 0x000000, 0x68ea11, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x68fb02, 0x000000, 0x68fd04, 0x690101, 0x690207, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x690904, 0x690d01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x690e01, 0x690f04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x69130b, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x691e02, 0x692001, 0x692101, 0x692201, 0x692303, 0x692602, 0x000000, 0x000000,
+ 0x000000, 0x692801, 0x692903, 0x000000, 0x000000, 0x692c03, 0x000000, 0x000000,
+ 0x000000, 0x692f01, 0x000000, 0x000000, 0x693001, 0x693101, 0x000000, 0x000000,
+ 0x000000, 0x693201, 0x000000, 0x693301, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x693404, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x693806, 0x000000, 0x000000, 0x693e01, 0x000000, 0x000000, 0x693f02, 0x000000,
+ 0x000000, 0x000000, 0x69410a, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x694b02, 0x000000, 0x694d05, 0x000000, 0x000000, 0x695202,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x695404,
+ 0x000000, 0x695801, 0x695902, 0x695b01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x695c01, 0x000000, 0x695d04, 0x000000, 0x696102, 0x000000, 0x696302,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x696504, 0x000000,
+ 0x696901, 0x696a03, 0x000000, 0x696d0d, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x697a03, 0x697d01, 0x000000, 0x000000, 0x697e03, 0x698102, 0x698301, 0x698401,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x698501, 0x698603, 0x698901, 0x000000, 0x698a06, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x699001, 0x000000, 0x000000, 0x000000, 0x699103, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x699401, 0x699501, 0x699603, 0x699902, 0x000000,
+ 0x000000, 0x699b01, 0x699c01, 0x000000, 0x000000, 0x000000, 0x699d04, 0x69a102,
+ 0x000000, 0x000000, 0x000000, 0x69a301, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x69a401, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x69a501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x69a602, 0x69a801, 0x000000, 0x69a901, 0x000000, 0x000000,
+ 0x000000, 0x69aa01, 0x69ab03, 0x000000, 0x69ae01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x69af02, 0x69b101, 0x69b202, 0x000000, 0x69b403, 0x000000, 0x69b705, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x69bc01, 0x000000, 0x000000, 0x69bd02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x69bf04,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x69c302, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x69c501, 0x000000,
+ 0x69c602, 0x000000, 0x000000, 0x000000, 0x69c801, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x69c901, 0x000000, 0x69ca03, 0x69cd01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x69ce01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x69cf02, 0x69d104, 0x000000, 0x69d501, 0x000000, 0x000000, 0x69d604,
+ 0x000000, 0x69da03, 0x69dd01, 0x000000, 0x000000, 0x000000, 0x69de02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x69e001, 0x000000, 0x000000, 0x000000, 0x69e101,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x69e201, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x69e309, 0x69ec01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x69ed06, 0x000000, 0x000000, 0x69f302, 0x000000, 0x69f504, 0x000000,
+ 0x000000, 0x69f901, 0x69fa10, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x6a0a01, 0x000000, 0x000000, 0x000000, 0x000000, 0x6a0b01, 0x6a0c01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x6a0d01, 0x6a0e01, 0x000000, 0x6a0f07,
+ 0x000000, 0x6a1605, 0x000000, 0x000000, 0x000000, 0x6a1b0b, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6a260e, 0x000000, 0x6a3402,
+ 0x000000, 0x000000, 0x6a3602, 0x000000, 0x6a3802, 0x000000, 0x6a3a03, 0x000000,
+ 0x6a3d02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6a3f02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6a4101, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6a4201, 0x000000, 0x000000, 0x6a4302, 0x000000, 0x000000, 0x6a4501, 0x000000,
+ 0x6a4602, 0x000000, 0x000000, 0x000000, 0x000000, 0x6a4804, 0x000000, 0x000000,
+ 0x000000, 0x6a4c03, 0x000000, 0x000000, 0x6a4f03, 0x6a5201, 0x6a5302, 0x6a5501,
+ 0x6a5601, 0x000000, 0x6a5701, 0x000000, 0x6a5801, 0x6a5907, 0x000000, 0x000000,
+ 0x6a6002, 0x000000, 0x000000, 0x000000, 0x000000, 0x6a6202, 0x000000, 0x6a6401,
+ 0x000000, 0x6a6501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6a6603, 0x000000, 0x6a6901, 0x6a6a07, 0x000000, 0x6a7101, 0x000000, 0x000000,
+ 0x000000, 0x6a7202, 0x000000, 0x6a7401, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x6a7501, 0x6a7603, 0x6a7901, 0x000000, 0x000000, 0x000000, 0x6a7a08,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6a8209, 0x000000,
+ 0x6a8b02, 0x6a8d12, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6a9f01, 0x6aa004, 0x6aa401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x6aa50a, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6aaf01, 0x6ab005, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x6ab502, 0x000000, 0x6ab709, 0x000000, 0x6ac001, 0x000000,
+ 0x6ac101, 0x6ac201, 0x000000, 0x6ac308, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6acb08, 0x000000, 0x000000, 0x000000, 0x6ad302, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6ad501, 0x000000, 0x6ad604, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x6ada03, 0x000000, 0x000000, 0x6add01, 0x6ade02, 0x6ae004,
+ 0x000000, 0x000000, 0x000000, 0x6ae402, 0x000000, 0x6ae609, 0x000000, 0x6aef02,
+ 0x6af101, 0x000000, 0x000000, 0x6af211, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x6b0301, 0x000000, 0x6b0407, 0x6b0b04, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6b0f2d, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6b3c03, 0x000000, 0x000000, 0x000000, 0x6b3f02, 0x000000, 0x000000, 0x000000,
+ 0x6b4101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6b4201, 0x000000, 0x000000, 0x000000, 0x6b4301, 0x000000, 0x000000, 0x6b4404,
+ 0x000000, 0x6b4802, 0x6b4a02, 0x000000, 0x000000, 0x6b4c01, 0x000000, 0x6b4d01,
+ 0x000000, 0x6b4e06, 0x000000, 0x6b5405, 0x6b5902, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6b5b01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x6b5c08, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6b6401, 0x000000, 0x6b6508, 0x6b6d09, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6b7615, 0x6b8b01, 0x000000, 0x000000, 0x000000, 0x6b8c0c, 0x6b9801, 0x000000,
+ 0x000000, 0x000000, 0x6b9901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6b9a02, 0x000000, 0x000000,
+ 0x6b9c01, 0x6b9d01, 0x000000, 0x6b9e04, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6ba210, 0x000000, 0x000000, 0x6bb202, 0x000000,
+ 0x6bb401, 0x6bb501, 0x6bb602, 0x6bb801, 0x000000, 0x6bb901, 0x000000, 0x000000,
+ 0x6bba06, 0x6bc001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6bc102,
+ 0x000000, 0x000000, 0x6bc301, 0x6bc407, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6bcb04, 0x000000, 0x000000, 0x6bcf08, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6bd702,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6bd908, 0x000000, 0x000000, 0x000000, 0x6be102,
+ 0x000000, 0x000000, 0x6be30b, 0x000000, 0x000000, 0x000000, 0x6bee01, 0x000000,
+ 0x000000, 0x6bef02, 0x6bf102, 0x000000, 0x6bf302, 0x6bf505, 0x000000, 0x000000,
+ 0x000000, 0x6bfa01, 0x000000, 0x6bfb05, 0x6c0002, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x6c0209, 0x6c0b01, 0x000000, 0x6c0c01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6c0d02, 0x000000, 0x000000,
+ 0x6c0f01, 0x000000, 0x6c1004, 0x000000, 0x000000, 0x000000, 0x6c1402, 0x000000,
+ 0x6c1602, 0x000000, 0x000000, 0x000000, 0x6c1801, 0x6c1908, 0x000000, 0x000000,
+ 0x000000, 0x6c211d, 0x000000, 0x000000, 0x000000, 0x6c3e01, 0x000000, 0x6c3f01,
+ 0x6c4006, 0x6c4601, 0x6c4708, 0x000000, 0x000000, 0x6c4f01, 0x000000, 0x6c5002,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x6c5201, 0x000000, 0x000000, 0x6c5301, 0x000000, 0x6c5405, 0x000000,
+ 0x6c5904, 0x000000, 0x000000, 0x000000, 0x6c5d01, 0x000000, 0x000000, 0x000000,
+ 0x6c5e01, 0x6c5f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6c6001, 0x6c6101, 0x000000, 0x000000, 0x000000, 0x6c6201, 0x6c6303, 0x6c6601,
+ 0x6c6710, 0x000000, 0x000000, 0x000000, 0x6c7702, 0x6c7904, 0x000000, 0x000000,
+ 0x000000, 0x6c7d01, 0x6c7e01, 0x000000, 0x6c7f01, 0x6c8004, 0x000000, 0x000000,
+ 0x6c8403, 0x000000, 0x6c8702, 0x000000, 0x6c8905, 0x000000, 0x000000, 0x6c8e01,
+ 0x000000, 0x6c8f01, 0x6c900b, 0x6c9b08, 0x000000, 0x6ca301, 0x6ca401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6ca50b,
+ 0x000000, 0x6cb002, 0x000000, 0x6cb201, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6cb321, 0x6cd401, 0x6cd502, 0x000000, 0x000000, 0x000000, 0x6cd701, 0x000000,
+ 0x000000, 0x000000, 0x6cd813, 0x6ceb05, 0x000000, 0x6cf001, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6cf101, 0x000000, 0x6cf201, 0x000000, 0x000000,
+ 0x000000, 0x6cf305, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6cf801,
+ 0x6cf901, 0x000000, 0x000000, 0x6cfa02, 0x000000, 0x000000, 0x000000, 0x6cfc04,
+ 0x6d000f, 0x000000, 0x000000, 0x6d0f01, 0x000000, 0x000000, 0x6d1001, 0x000000,
+ 0x6d1109, 0x000000, 0x000000, 0x000000, 0x6d1a03, 0x6d1d07, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6d2401, 0x000000, 0x6d2503, 0x000000, 0x6d2802, 0x000000, 0x6d2a07, 0x6d3106,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x6d3703, 0x6d3a01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6d3b01, 0x6d3c02,
+ 0x000000, 0x000000, 0x000000, 0x6d3e02, 0x000000, 0x6d4006, 0x6d4601, 0x000000,
+ 0x6d4701, 0x6d4804, 0x000000, 0x6d4c02, 0x000000, 0x6d4e44, 0x6d9201, 0x6d9304,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6d9702, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x6d9901, 0x6d9a02, 0x000000, 0x000000,
+ 0x6d9c02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6d9e03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6da103,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6da401, 0x6da502,
+ 0x6da701, 0x000000, 0x6da801, 0x000000, 0x000000, 0x6da901, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x6daa03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x6dad07, 0x000000, 0x000000, 0x000000, 0x000000, 0x6db401,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x6db502, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6db702, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x6db907, 0x000000, 0x6dc011, 0x6dd101,
+ 0x6dd201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6dd302, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6dd50b, 0x000000,
+ 0x6de002, 0x000000, 0x6de204, 0x000000, 0x000000, 0x6de605, 0x000000, 0x000000,
+ 0x000000, 0x6deb01, 0x6dec05, 0x000000, 0x000000, 0x000000, 0x6df106, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6df703, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6dfa02, 0x6dfc04, 0x6e0005, 0x000000, 0x000000, 0x000000, 0x000000, 0x6e0501,
+ 0x000000, 0x6e0605, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6e0b01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x6e0c02, 0x000000, 0x000000, 0x6e0e03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x6e110a, 0x6e1b02, 0x000000, 0x6e1d01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x6e1e02, 0x000000, 0x6e200d, 0x6e2d01, 0x000000, 0x000000,
+ 0x6e2e02, 0x6e3002, 0x000000, 0x6e3202, 0x000000, 0x6e3402, 0x000000, 0x000000,
+ 0x000000, 0x6e3601, 0x6e3701, 0x6e3805, 0x000000, 0x6e3d01, 0x000000, 0x6e3e02,
+ 0x6e4001, 0x000000, 0x000000, 0x000000, 0x6e4101, 0x000000, 0x6e4202, 0x6e4403,
+ 0x6e4703, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x6e4a06, 0x000000, 0x6e5001, 0x000000, 0x000000, 0x6e5101,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x6e5202, 0x000000, 0x000000, 0x000000,
+ 0x6e5403, 0x000000, 0x000000, 0x000000, 0x6e5702, 0x6e5901, 0x000000, 0x6e5a01,
+ 0x6e5b01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6e5c01,
+ 0x000000, 0x000000, 0x6e5d01, 0x6e5e01, 0x000000, 0x000000, 0x6e5f02, 0x000000,
+ 0x000000, 0x6e6101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6e6201,
+ 0x000000, 0x000000, 0x6e6301, 0x000000, 0x000000, 0x6e6401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x6e6501, 0x6e6601, 0x000000, 0x000000, 0x6e6702, 0x000000,
+ 0x000000, 0x000000, 0x6e6902, 0x000000, 0x6e6b01, 0x6e6c01, 0x000000, 0x6e6d02,
+ 0x6e6f02, 0x6e7103, 0x000000, 0x6e7401, 0x6e7501, 0x000000, 0x000000, 0x000000,
+ 0x6e7601, 0x000000, 0x6e7701, 0x6e7802, 0x6e7a09, 0x000000, 0x6e8302, 0x000000,
+ 0x6e8503, 0x000000, 0x6e8802, 0x000000, 0x000000, 0x000000, 0x000000, 0x6e8a01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6e8b01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6e8c01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6e8d01, 0x6e8e01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x6e8f01, 0x000000, 0x000000, 0x6e9007, 0x000000, 0x6e9701, 0x000000,
+ 0x6e9801, 0x6e9901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x6e9a05, 0x000000, 0x000000, 0x000000, 0x6e9f01, 0x6ea007, 0x000000, 0x000000,
+ 0x6ea701, 0x000000, 0x000000, 0x000000, 0x6ea809, 0x6eb101, 0x000000, 0x6eb205,
+ 0x000000, 0x000000, 0x6eb703, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6eba01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x6ebb3f, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x6efa01, 0x000000, 0x6efb01, 0x6efc03, 0x000000, 0x6eff04,
+ 0x000000, 0x000000, 0x000000, 0x6f0301, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x6f0402, 0x000000, 0x000000, 0x000000, 0x000000, 0x6f0601, 0x000000,
+ 0x000000, 0x000000, 0x6f0704, 0x000000, 0x000000, 0x6f0b01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6f0c02, 0x000000, 0x000000, 0x000000, 0x6f0e03,
+ 0x6f1118, 0x000000, 0x6f2906, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6f2f01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6f3002, 0x000000, 0x6f3204, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x6f3603, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x6f3906, 0x000000, 0x6f3f01, 0x000000, 0x6f4004, 0x000000, 0x000000,
+ 0x6f4401, 0x000000, 0x000000, 0x000000, 0x000000, 0x6f4502, 0x6f4701, 0x000000,
+ 0x000000, 0x6f4803, 0x000000, 0x000000, 0x000000, 0x000000, 0x6f4b03, 0x000000,
+ 0x000000, 0x000000, 0x6f4e02, 0x000000, 0x6f5002, 0x000000, 0x6f5201, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x6f5302, 0x000000, 0x000000, 0x6f5501, 0x6f5605,
+ 0x000000, 0x000000, 0x000000, 0x6f5b02, 0x000000, 0x000000, 0x000000, 0x6f5d02,
+ 0x000000, 0x000000, 0x6f5f01, 0x6f6001, 0x6f6107, 0x6f6805, 0x000000, 0x6f6d01,
+ 0x000000, 0x6f6e01, 0x6f6f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x6f7003,
+ 0x000000, 0x000000, 0x6f7305, 0x000000, 0x000000, 0x6f7801, 0x6f7901, 0x000000,
+ 0x000000, 0x000000, 0x6f7a09, 0x000000, 0x6f8305, 0x000000, 0x6f8801, 0x6f8906,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x6f8f03, 0x6f9201, 0x000000, 0x000000,
+ 0x6f9301, 0x000000, 0x000000, 0x000000, 0x000000, 0x6f9401, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6f9502, 0x6f9701, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6f9801, 0x000000, 0x000000,
+ 0x000000, 0x6f9902, 0x000000, 0x6f9b01, 0x6f9c02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x6f9e01, 0x000000, 0x000000, 0x000000, 0x000000, 0x6f9f05, 0x6fa407,
+ 0x6fab01, 0x000000, 0x000000, 0x6fac01, 0x000000, 0x000000, 0x000000, 0x6fad05,
+ 0x6fb203, 0x000000, 0x6fb503, 0x000000, 0x000000, 0x6fb804, 0x000000, 0x000000,
+ 0x6fbc09, 0x000000, 0x000000, 0x000000, 0x000000, 0x6fc501, 0x6fc604, 0x6fca01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6fcb06, 0x000000,
+ 0x6fd102, 0x000000, 0x000000, 0x6fd303, 0x000000, 0x6fd601, 0x000000, 0x6fd703,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6fda02, 0x000000,
+ 0x000000, 0x000000, 0x6fdc01, 0x6fdd01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x6fde04, 0x000000, 0x6fe209, 0x000000, 0x000000, 0x6feb0a, 0x000000,
+ 0x000000, 0x000000, 0x6ff508, 0x000000, 0x6ffd01, 0x6ffe01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6fff01,
+ 0x700002, 0x700201, 0x70030f, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x701204, 0x000000, 0x000000, 0x000000, 0x701601, 0x000000,
+ 0x000000, 0x000000, 0x701701, 0x000000, 0x701801, 0x701907, 0x000000, 0x702002,
+ 0x000000, 0x702201, 0x702302, 0x702501, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x702611, 0x703708, 0x000000, 0x000000, 0x000000,
+ 0x703f01, 0x000000, 0x000000, 0x000000, 0x704001, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x704101, 0x000000,
+ 0x704202, 0x000000, 0x704401, 0x000000, 0x000000, 0x704503, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x704804, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x704c01, 0x704d02, 0x704f02, 0x705102, 0x705301, 0x000000, 0x705402, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x705601, 0x705702, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x705902, 0x000000, 0x000000, 0x000000, 0x705b02,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x705d01, 0x000000,
+ 0x705e01, 0x705f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x706001, 0x706101,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x706201, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x706301, 0x000000, 0x706409,
+ 0x000000, 0x706d02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x706f01, 0x000000, 0x707001, 0x000000, 0x707101, 0x000000, 0x000000, 0x000000,
+ 0x70720a, 0x000000, 0x000000, 0x000000, 0x707c02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x707e02, 0x000000, 0x000000, 0x708001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x708103, 0x000000, 0x708401, 0x000000, 0x000000,
+ 0x708501, 0x000000, 0x000000, 0x708601, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x708702, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x708902, 0x708b04, 0x000000, 0x000000, 0x708f03, 0x709202, 0x000000,
+ 0x000000, 0x709405, 0x000000, 0x709910, 0x000000, 0x000000, 0x000000, 0x70a90a,
+ 0x70b301, 0x000000, 0x000000, 0x70b401, 0x000000, 0x70b501, 0x70b602, 0x000000,
+ 0x000000, 0x000000, 0x70b801, 0x000000, 0x000000, 0x000000, 0x70b909, 0x000000,
+ 0x70c201, 0x70c301, 0x70c405, 0x000000, 0x000000, 0x000000, 0x70c906, 0x70cf02,
+ 0x70d108, 0x70d902, 0x70db03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x70de03, 0x000000, 0x000000, 0x000000, 0x70e101, 0x70e201,
+ 0x000000, 0x000000, 0x000000, 0x70e304, 0x000000, 0x000000, 0x70e702, 0x000000,
+ 0x70e901, 0x000000, 0x000000, 0x000000, 0x000000, 0x70ea01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x70eb02, 0x000000, 0x000000, 0x000000,
+ 0x70ed04, 0x000000, 0x70f101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x70f201, 0x70f303, 0x70f601, 0x000000, 0x000000, 0x70f701,
+ 0x000000, 0x70f803, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x70fb02, 0x000000, 0x000000, 0x000000, 0x000000, 0x70fd03,
+ 0x710001, 0x000000, 0x000000, 0x000000, 0x710106, 0x000000, 0x710703, 0x000000,
+ 0x710a03, 0x000000, 0x000000, 0x000000, 0x000000, 0x710d0e, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x711b0a, 0x000000, 0x000000, 0x000000,
+ 0x712501, 0x000000, 0x000000, 0x000000, 0x000000, 0x712601, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x712703,
+ 0x000000, 0x712a04, 0x000000, 0x712e01, 0x712f06, 0x000000, 0x713501, 0x713601,
+ 0x000000, 0x000000, 0x713705, 0x713c07, 0x714301, 0x714401, 0x714501, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x714601, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x714701, 0x000000, 0x714808, 0x000000, 0x000000,
+ 0x000000, 0x715002, 0x000000, 0x000000, 0x71520a, 0x000000, 0x000000, 0x715c03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x715f01, 0x000000, 0x716001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x71610a, 0x000000, 0x000000, 0x000000,
+ 0x716b01, 0x000000, 0x000000, 0x000000, 0x716c01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x716d07, 0x000000, 0x717402, 0x000000, 0x717604, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x717a03,
+ 0x000000, 0x000000, 0x000000, 0x717d02, 0x717f06, 0x718508, 0x000000, 0x718d0c,
+ 0x719901, 0x000000, 0x000000, 0x000000, 0x719a01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x719b01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x719c03, 0x719f02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x71a107, 0x71a806, 0x000000, 0x000000, 0x000000,
+ 0x71ae02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x71b002, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x71b202,
+ 0x000000, 0x71b406, 0x000000, 0x000000, 0x000000, 0x71ba05, 0x000000, 0x000000,
+ 0x71bf12, 0x000000, 0x000000, 0x71d102, 0x71d30c, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x71df08, 0x000000,
+ 0x71e70e, 0x71f502, 0x000000, 0x71f704, 0x000000, 0x000000, 0x71fb01, 0x000000,
+ 0x71fc2f, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x722b01, 0x000000, 0x000000, 0x722c01, 0x000000, 0x000000, 0x722d04,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x723107, 0x000000, 0x000000, 0x000000, 0x723804, 0x000000,
+ 0x723c03, 0x000000, 0x723f02, 0x000000, 0x724106, 0x724718, 0x725f02, 0x000000,
+ 0x726103, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x726401, 0x000000, 0x000000, 0x726505, 0x726a01, 0x726b02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x726d01, 0x000000, 0x726e01, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x726f01, 0x727001, 0x727102, 0x727302, 0x000000, 0x727502,
+ 0x000000, 0x000000, 0x727703, 0x727a05, 0x000000, 0x727f0a, 0x000000, 0x000000,
+ 0x000000, 0x728901, 0x000000, 0x000000, 0x728a01, 0x000000, 0x000000, 0x728b02,
+ 0x728d02, 0x728f07, 0x000000, 0x729603, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x729901, 0x729a02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x729c02, 0x729e01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x729f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x72a001, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x72a101, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x72a201, 0x72a301, 0x72a405, 0x000000,
+ 0x000000, 0x72a901, 0x000000, 0x000000, 0x72aa02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x72ac07, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x72b301, 0x000000, 0x72b401, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x72b502, 0x000000, 0x000000, 0x72b70a,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x72c103, 0x000000, 0x72c405, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x72c903, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x72cc01, 0x000000, 0x000000, 0x000000, 0x72cd01, 0x000000,
+ 0x000000, 0x72ce06, 0x72d401, 0x000000, 0x72d50e, 0x72e302, 0x72e504, 0x72e901,
+ 0x72ea01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x72eb03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x72ee0c, 0x000000, 0x000000, 0x000000, 0x72fa02, 0x000000, 0x000000, 0x000000,
+ 0x72fc02, 0x000000, 0x000000, 0x72fe02, 0x000000, 0x730002, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x730203, 0x000000, 0x730504, 0x730902, 0x730b04, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x730f05, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x731403, 0x000000, 0x000000, 0x000000, 0x731704, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x731b05,
+ 0x000000, 0x73200d, 0x000000, 0x000000, 0x000000, 0x732d04, 0x000000, 0x000000,
+ 0x000000, 0x733101, 0x000000, 0x000000, 0x000000, 0x733201, 0x733305, 0x000000,
+ 0x000000, 0x733801, 0x000000, 0x000000, 0x000000, 0x733901, 0x000000, 0x733a03,
+ 0x000000, 0x733d03, 0x734004, 0x000000, 0x734401, 0x000000, 0x000000, 0x000000,
+ 0x734502, 0x000000, 0x000000, 0x000000, 0x734704, 0x000000, 0x000000, 0x000000,
+ 0x734b02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x734d01, 0x000000, 0x734e01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x734f01, 0x735008, 0x735801, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x735901, 0x000000, 0x000000, 0x735a07,
+ 0x736102, 0x000000, 0x736302, 0x000000, 0x000000, 0x000000, 0x736501, 0x000000,
+ 0x736601, 0x736703, 0x736a01, 0x000000, 0x000000, 0x736b01, 0x000000, 0x000000,
+ 0x000000, 0x736c01, 0x000000, 0x000000, 0x000000, 0x736d02, 0x000000, 0x000000,
+ 0x736f06, 0x000000, 0x000000, 0x000000, 0x000000, 0x737503, 0x737801, 0x000000,
+ 0x737902, 0x737b01, 0x000000, 0x000000, 0x737c01, 0x000000, 0x000000, 0x737d0c,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x738906, 0x738f02, 0x739105, 0x739602, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x739801, 0x739903, 0x000000, 0x000000, 0x739c10, 0x000000,
+ 0x000000, 0x73ac01, 0x000000, 0x73ad01, 0x000000, 0x73ae01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x73af01, 0x73b008, 0x000000, 0x000000, 0x73b807, 0x000000,
+ 0x000000, 0x000000, 0x73bf01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x73c001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x73c101, 0x73c202, 0x73c401, 0x000000, 0x73c503, 0x000000, 0x73c802, 0x73ca01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x73cb01, 0x000000,
+ 0x73cc04, 0x000000, 0x73d001, 0x000000, 0x000000, 0x000000, 0x73d103, 0x000000,
+ 0x73d403, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x73d703,
+ 0x73da01, 0x000000, 0x000000, 0x73db01, 0x000000, 0x000000, 0x000000, 0x73dc03,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x73df07, 0x000000, 0x000000,
+ 0x000000, 0x73e602, 0x73e802, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x73ea02, 0x000000, 0x73ec02, 0x73ee05, 0x000000, 0x000000,
+ 0x73f301, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x73f402, 0x000000,
+ 0x000000, 0x000000, 0x73f601, 0x000000, 0x000000, 0x000000, 0x73f701, 0x000000,
+ 0x73f801, 0x73f90a, 0x740301, 0x000000, 0x740401, 0x000000, 0x000000, 0x000000,
+ 0x740504, 0x000000, 0x74090e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x741701, 0x000000, 0x741806, 0x000000, 0x741e06, 0x000000,
+ 0x742401, 0x742510, 0x000000, 0x74350b, 0x744002, 0x000000, 0x744201, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x744301, 0x000000, 0x000000, 0x744406,
+ 0x000000, 0x000000, 0x000000, 0x744a01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x744b01, 0x000000, 0x000000, 0x000000, 0x744c01, 0x744d01, 0x744e2f, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x747d02, 0x000000, 0x000000, 0x000000, 0x747f01, 0x000000,
+ 0x748002, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x748202, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x748403,
+ 0x000000, 0x748702, 0x748901, 0x000000, 0x000000, 0x748a02, 0x000000, 0x000000,
+ 0x748c01, 0x748d05, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x749201, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x749301, 0x749404, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x749814, 0x000000, 0x000000, 0x74ac03,
+ 0x74af12, 0x74c10f, 0x74d002, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x74d20e, 0x74e001, 0x000000, 0x74e101, 0x000000, 0x000000, 0x74e203, 0x74e512,
+ 0x74f702, 0x74f901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x74fa01, 0x74fb03, 0x000000, 0x000000, 0x000000, 0x74fe02, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x750003, 0x000000, 0x000000, 0x750301,
+ 0x000000, 0x750405, 0x000000, 0x000000, 0x750909, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x751201, 0x000000, 0x000000, 0x000000, 0x751306, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x751901, 0x000000, 0x751a0d, 0x75270f, 0x753601,
+ 0x753702, 0x753903, 0x000000, 0x000000, 0x000000, 0x753c01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x753d02, 0x753f01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x754006,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x754608, 0x754e02, 0x000000,
+ 0x000000, 0x755001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x755104, 0x000000, 0x755501, 0x000000,
+ 0x755601, 0x000000, 0x75571b, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x757201, 0x757301, 0x000000, 0x000000, 0x000000, 0x757403, 0x000000,
+ 0x757701, 0x000000, 0x000000, 0x000000, 0x757802, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x757a04, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x757e01, 0x000000, 0x000000, 0x757f02, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x758102, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x758306, 0x758901, 0x000000,
+ 0x000000, 0x758a07, 0x000000, 0x000000, 0x000000, 0x000000, 0x759114, 0x75a501,
+ 0x000000, 0x75a602, 0x000000, 0x75a809, 0x75b101, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x75b201, 0x75b301, 0x75b402, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x75b601, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x75b701,
+ 0x000000, 0x000000, 0x75b801, 0x75b901, 0x000000, 0x000000, 0x000000, 0x75ba07,
+ 0x75c101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x75c201, 0x000000,
+ 0x000000, 0x75c303, 0x75c611, 0x000000, 0x000000, 0x000000, 0x75d704, 0x000000,
+ 0x75db01, 0x75dc07, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x75e301, 0x75e40b, 0x000000, 0x75ef02, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x75f102, 0x75f303, 0x000000,
+ 0x000000, 0x75f603, 0x000000, 0x000000, 0x75f901, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x75fa0a, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x760403, 0x000000, 0x000000, 0x000000,
+ 0x760701, 0x000000, 0x000000, 0x760801, 0x000000, 0x000000, 0x000000, 0x760901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x760a01, 0x000000, 0x760b02, 0x000000,
+ 0x760d05, 0x761204, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x761602,
+ 0x000000, 0x000000, 0x761802, 0x761a03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x761d02, 0x000000, 0x761f03, 0x762202, 0x762405, 0x000000, 0x762902, 0x762b11,
+ 0x000000, 0x000000, 0x000000, 0x763c02, 0x000000, 0x000000, 0x763e01, 0x763f06,
+ 0x000000, 0x000000, 0x000000, 0x764502, 0x764702, 0x000000, 0x000000, 0x764902,
+ 0x000000, 0x764b0a, 0x000000, 0x765501, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x765601, 0x765702, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x765901,
+ 0x765a03, 0x765d02, 0x765f02, 0x76610a, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x766b01, 0x766c01, 0x000000, 0x000000, 0x000000, 0x766d01,
+ 0x000000, 0x000000, 0x000000, 0x766e01, 0x000000, 0x766f02, 0x767104, 0x767501,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x767605, 0x000000, 0x767b10,
+ 0x768b01, 0x768c07, 0x000000, 0x000000, 0x769301, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x769401, 0x000000, 0x769501,
+ 0x000000, 0x769601, 0x769705, 0x000000, 0x000000, 0x769c01, 0x769d0c, 0x76a901,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x76aa02, 0x000000, 0x000000, 0x76ac04,
+ 0x000000, 0x76b003, 0x000000, 0x76b309, 0x76bc04, 0x000000, 0x000000, 0x000000,
+ 0x76c002, 0x000000, 0x000000, 0x000000, 0x000000, 0x76c201, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x76c301, 0x000000, 0x000000, 0x76c401, 0x000000,
+ 0x76c502, 0x76c701, 0x000000, 0x76c801, 0x000000, 0x76c907, 0x000000, 0x000000,
+ 0x000000, 0x76d001, 0x000000, 0x000000, 0x76d101, 0x76d201, 0x000000, 0x76d304,
+ 0x000000, 0x76d703, 0x000000, 0x000000, 0x000000, 0x76da03, 0x76dd02, 0x76df01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x76e003, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x76e301, 0x000000, 0x76e401, 0x76e503, 0x000000,
+ 0x76e801, 0x76e903, 0x000000, 0x000000, 0x000000, 0x76ec07, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x76f304, 0x76f701, 0x76f801, 0x000000, 0x000000, 0x000000,
+ 0x76f906, 0x000000, 0x76ff03, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x770202, 0x000000, 0x770408, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x770c07, 0x000000, 0x000000, 0x771301, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x771401, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x771501, 0x77160a, 0x772001, 0x772107, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x772803, 0x000000,
+ 0x772b01, 0x000000, 0x000000, 0x000000, 0x772c01, 0x772d04, 0x000000, 0x773102,
+ 0x773307, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x773a01, 0x000000, 0x773b01, 0x000000,
+ 0x773c0c, 0x000000, 0x000000, 0x000000, 0x000000, 0x774801, 0x000000, 0x000000,
+ 0x77490f, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x775802, 0x000000,
+ 0x000000, 0x775a01, 0x775b02, 0x775d01, 0x775e01, 0x775f01, 0x000000, 0x000000,
+ 0x776001, 0x000000, 0x776101, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x776207, 0x776901, 0x776a0f, 0x000000, 0x777901,
+ 0x777a03, 0x000000, 0x000000, 0x777d04, 0x000000, 0x000000, 0x778111, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x779201, 0x77930b, 0x779e0b, 0x77a902, 0x000000,
+ 0x000000, 0x77ab04, 0x77af0f, 0x77be01, 0x77bf01, 0x000000, 0x77c001, 0x000000,
+ 0x000000, 0x77c10b, 0x77cc01, 0x000000, 0x77cd06, 0x000000, 0x77d302, 0x77d501,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x77d610,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x77e603, 0x000000, 0x000000, 0x77e902, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x77eb01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x77ec01, 0x000000, 0x77ed01, 0x77ee04, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x77f202, 0x000000, 0x000000, 0x000000, 0x77f401, 0x000000, 0x000000, 0x77f509,
+ 0x77fe0a, 0x780802, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x780a02, 0x000000, 0x000000, 0x780c01, 0x000000,
+ 0x000000, 0x000000, 0x780d02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x780f01, 0x781003, 0x000000, 0x000000, 0x000000, 0x781303, 0x000000, 0x000000,
+ 0x000000, 0x781603, 0x000000, 0x781901, 0x000000, 0x781a01, 0x781b03, 0x000000,
+ 0x000000, 0x781e01, 0x781f01, 0x782001, 0x000000, 0x000000, 0x000000, 0x782106,
+ 0x000000, 0x000000, 0x782703, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x782a01, 0x000000, 0x782b02, 0x000000, 0x000000, 0x782d03,
+ 0x000000, 0x783001, 0x783101, 0x783203, 0x783503, 0x783802, 0x000000, 0x000000,
+ 0x783a01, 0x783b01, 0x783c09, 0x000000, 0x000000, 0x000000, 0x000000, 0x784502,
+ 0x000000, 0x000000, 0x000000, 0x784712, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x785902, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x785b07, 0x786204, 0x000000, 0x000000, 0x786601, 0x786701, 0x000000, 0x786802,
+ 0x000000, 0x786a01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x786b02, 0x000000, 0x000000, 0x786d04, 0x000000, 0x000000, 0x000000, 0x787101,
+ 0x000000, 0x787202, 0x000000, 0x787401, 0x787507, 0x000000, 0x787c01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x787d01, 0x787e02, 0x000000, 0x000000,
+ 0x788002, 0x000000, 0x788201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x788306, 0x788901, 0x000000, 0x000000, 0x788a06, 0x000000, 0x789001, 0x000000,
+ 0x000000, 0x789102, 0x000000, 0x000000, 0x789301, 0x000000, 0x000000, 0x78940c,
+ 0x000000, 0x000000, 0x000000, 0x78a002, 0x78a206, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x78a802, 0x000000, 0x78aa03, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x78ad01, 0x000000, 0x78ae02, 0x000000, 0x78b001, 0x000000, 0x78b106,
+ 0x000000, 0x000000, 0x000000, 0x78b702, 0x78b903, 0x000000, 0x78bc01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x78bd05, 0x000000, 0x000000,
+ 0x000000, 0x78c212, 0x78d409, 0x78dd01, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x78de02, 0x000000, 0x000000, 0x78e001, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x78e101, 0x000000, 0x000000, 0x78e208, 0x000000, 0x000000,
+ 0x78ea01, 0x78eb04, 0x000000, 0x000000, 0x78ef01, 0x000000, 0x000000, 0x78f001,
+ 0x78f104, 0x78f503, 0x000000, 0x000000, 0x78f805, 0x78fd02, 0x000000, 0x000000,
+ 0x000000, 0x78ff01, 0x000000, 0x000000, 0x790001, 0x000000, 0x790104, 0x79050c,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x791101,
+ 0x791203, 0x791502, 0x000000, 0x791701, 0x000000, 0x000000, 0x791802, 0x000000,
+ 0x000000, 0x791a02, 0x791c01, 0x000000, 0x000000, 0x791d05, 0x792203, 0x000000,
+ 0x000000, 0x792502, 0x000000, 0x792702, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x792902, 0x000000, 0x000000, 0x792b03, 0x792e01, 0x792f01, 0x793002, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x793201, 0x793301, 0x793403,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x793704, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x793b01, 0x793c01, 0x793d03, 0x000000, 0x000000, 0x000000,
+ 0x794002, 0x794202, 0x794402, 0x000000, 0x794601, 0x000000, 0x000000, 0x000000,
+ 0x794701, 0x000000, 0x794804, 0x000000, 0x000000, 0x000000, 0x794c01, 0x794d01,
+ 0x794e08, 0x000000, 0x000000, 0x795603, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x795902, 0x000000, 0x795b03, 0x795e01, 0x000000, 0x000000, 0x000000,
+ 0x795f01, 0x796002, 0x000000, 0x000000, 0x000000, 0x000000, 0x796201, 0x000000,
+ 0x000000, 0x796301, 0x000000, 0x000000, 0x000000, 0x796402, 0x796601, 0x000000,
+ 0x796707, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x796e37, 0x000000, 0x79a502, 0x000000, 0x79a701,
+ 0x000000, 0x000000, 0x79a801, 0x79a901, 0x79aa02, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x79ac02, 0x000000, 0x79ae01, 0x79af0a, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x79b909, 0x79c203,
+ 0x79c501, 0x79c601, 0x000000, 0x000000, 0x000000, 0x79c703, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x79ca07, 0x000000, 0x000000,
+ 0x000000, 0x79d106, 0x000000, 0x000000, 0x000000, 0x79d703, 0x79da01, 0x000000,
+ 0x000000, 0x79db02, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x79dd01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x79de06, 0x000000, 0x000000, 0x000000, 0x79e406, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x79ea04, 0x79ee10, 0x000000, 0x000000, 0x000000, 0x000000, 0x79fe01,
+ 0x000000, 0x79ff01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x7a0003, 0x7a0311, 0x7a1401, 0x000000,
+ 0x7a1501, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7a1602,
+ 0x000000, 0x000000, 0x7a1801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x7a1901, 0x7a1a01, 0x000000, 0x000000,
+ 0x7a1b01, 0x000000, 0x7a1c01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x7a1d01, 0x7a1e01, 0x000000, 0x000000, 0x7a1f02, 0x000000, 0x7a2101, 0x000000,
+ 0x7a220e, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7a3001, 0x000000,
+ 0x7a3102, 0x000000, 0x7a3301, 0x000000, 0x000000, 0x7a3402, 0x7a3601, 0x7a3702,
+ 0x000000, 0x000000, 0x7a3902, 0x000000, 0x000000, 0x000000, 0x7a3b03, 0x7a3e04,
+ 0x000000, 0x7a4201, 0x000000, 0x7a4302, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x7a4501, 0x000000, 0x000000, 0x000000, 0x000000, 0x7a4601, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7a4701, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x7a4803, 0x7a4b01, 0x7a4c06, 0x7a5202, 0x000000,
+ 0x7a5406, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7a5a01, 0x000000,
+ 0x7a5b01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7a5c02, 0x7a5e04,
+ 0x000000, 0x000000, 0x7a6202, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x7a6403, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7a6701, 0x000000,
+ 0x000000, 0x7a6801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x7a6901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7a6a03, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7a6d03, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x7a7002, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x7a7201, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x7a7302, 0x000000, 0x000000, 0x7a7501, 0x7a7601, 0x000000,
+ 0x7a7702, 0x000000, 0x000000, 0x7a7901, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x7a7a01, 0x000000, 0x000000, 0x7a7b07, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7a8209, 0x000000,
+ 0x7a8b01, 0x000000, 0x000000, 0x7a8c03, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7a8f0c, 0x000000, 0x7a9b01,
+ 0x000000, 0x7a9c03, 0x000000, 0x7a9f09, 0x000000, 0x7aa804, 0x000000, 0x7aac02,
+ 0x7aae01, 0x7aaf01, 0x000000, 0x7ab004, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x7ab402, 0x7ab601, 0x000000, 0x000000, 0x000000, 0x7ab702,
+ 0x7ab904, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7abd01,
+ 0x7abe01, 0x000000, 0x000000, 0x7abf01, 0x000000, 0x7ac007, 0x7ac701, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x7ac801, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x7ac901, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x7aca03, 0x000000, 0x000000, 0x000000, 0x000000, 0x7acd04, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x7ad102, 0x000000, 0x7ad304, 0x000000, 0x7ad703, 0x000000, 0x000000, 0x7ada01,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x7adb09, 0x000000, 0x7ae404, 0x7ae801,
+ 0x000000, 0x000000, 0x7ae901, 0x000000, 0x000000, 0x7aea01, 0x000000, 0x000000,
+ 0x7aeb01, 0x000000, 0x000000, 0x000000, 0x7aec04, 0x7af003, 0x000000, 0x7af30d,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x7b0001, 0x7b0102, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7b0301, 0x7b0401, 0x7b0507,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x7b0c03, 0x7b0f01, 0x7b1004, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x7b1401, 0x000000, 0x000000, 0x000000, 0x000000, 0x7b1501, 0x000000, 0x000000,
+ 0x7b1602, 0x000000, 0x000000, 0x7b1801, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7b1908, 0x000000, 0x7b210e,
+ 0x7b2f03, 0x7b3201, 0x7b3301, 0x000000, 0x7b3405, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x7b3907, 0x7b4006, 0x7b4601, 0x000000, 0x000000,
+ 0x000000, 0x7b4701, 0x7b4801, 0x7b4902, 0x000000, 0x000000, 0x7b4b03, 0x7b4e02,
+ 0x000000, 0x7b5001, 0x000000, 0x000000, 0x000000, 0x7b5101, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x7b5201, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x7b5302, 0x7b5506, 0x7b5b01, 0x7b5c01, 0x000000, 0x000000, 0x7b5d02,
+ 0x7b5f01, 0x7b6001, 0x7b6109, 0x7b6a01, 0x000000, 0x7b6b01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x7b6c02, 0x000000, 0x7b6e01, 0x000000, 0x7b6f01, 0x7b7002,
+ 0x000000, 0x000000, 0x7b7201, 0x7b7304, 0x000000, 0x000000, 0x7b7702, 0x7b7901,
+ 0x000000, 0x000000, 0x000000, 0x7b7a04, 0x000000, 0x7b7e01, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x7b7f01, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x7b8001, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7b8103,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7b8401, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x7b8503, 0x7b8802, 0x000000, 0x000000, 0x000000, 0x000000, 0x7b8a0e, 0x000000,
+ 0x7b9801, 0x000000, 0x000000, 0x7b9901, 0x000000, 0x000000, 0x7b9a01, 0x000000,
+ 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x7b9b02, 0x000000, 0x7b9d02, 0x000000, 0x000000, 0x000000, 0x000000, 0x7b9f04,
+ 0x000000, 0x000000, 0x000000, 0x7ba305, 0x000000, 0x000000, 0x000000, 0x7ba813,
+ 0x000000, 0x000000, 0x7bbb0d, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
+ 0x000000, 0x000000, 0x7bc802, 0x7bca01, 0x7bcb02, 0x000000, 0x7bcd02, 0x000000,
+ 0x000000, 0x000000, 0x7bcf06, 0x000000, 0x7bd501, 0x000000, 0x7bd602, 0x000000,
+};
+
+static const DictWord kStaticDictionaryWords[] = {
+ { 8, 0, 1002 }, { 8, 0, 1015 }, { 4, 0, 683 }, { 4, 10, 325 },
+ { 10, 10, 125 }, { 7, 11, 572 }, { 9, 11, 592 }, { 11, 11, 680 },
+ { 11, 11, 842 }, { 11, 11, 924 }, { 12, 11, 356 }, { 12, 11, 550 },
+ { 13, 11, 317 }, { 13, 11, 370 }, { 13, 11, 469 }, { 13, 11, 471 },
+ { 14, 11, 397 }, { 18, 11, 69 }, { 18, 11, 145 }, { 6, 0, 1265 },
+ { 8, 11, 534 }, { 6, 0, 1431 }, { 11, 0, 138 }, { 12, 0, 40 },
+ { 4, 0, 155 }, { 7, 0, 1689 }, { 4, 10, 718 }, { 7, 10, 1216 },
+ { 4, 0, 245 }, { 5, 0, 151 }, { 5, 0, 741 }, { 6, 0, 1147 },
+ { 7, 0, 498 }, { 7, 0, 870 }, { 7, 0, 1542 }, { 12, 0, 213 },
+ { 14, 0, 36 }, { 14, 0, 391 }, { 17, 0, 111 }, { 18, 0, 6 },
+ { 18, 0, 46 }, { 18, 0, 151 }, { 19, 0, 36 }, { 20, 0, 32 },
+ { 20, 0, 56 }, { 20, 0, 69 }, { 20, 0, 102 }, { 21, 0, 4 },
+ { 22, 0, 8 }, { 22, 0, 10 }, { 22, 0, 14 }, { 22, 0, 31 },
+ { 4, 0, 624 }, { 7, 0, 1752 }, { 5, 10, 124 }, { 5, 10, 144 },
+ { 6, 10, 548 }, { 7, 10, 15 }, { 7, 10, 153 }, { 9, 10, 629 },
+ { 6, 0, 503 }, { 9, 0, 586 }, { 13, 0, 468 }, { 14, 0, 66 },
+ { 16, 0, 58 }, { 7, 10, 1531 }, { 8, 10, 416 }, { 9, 10, 275 },
+ { 10, 10, 100 }, { 11, 10, 658 }, { 11, 10, 979 }, { 12, 10, 86 },
+ { 14, 10, 207 }, { 15, 10, 20 }, { 15, 10, 25 }, { 5, 0, 603 },
+ { 7, 0, 1212 }, { 9, 0, 565 }, { 14, 0, 301 }, { 5, 10, 915 },
+ { 6, 10, 1783 }, { 7, 10, 211 }, { 7, 10, 1353 }, { 9, 10, 83 },
+ { 10, 10, 376 }, { 10, 10, 431 }, { 11, 10, 543 }, { 12, 10, 664 },
+ { 13, 10, 280 }, { 13, 10, 428 }, { 14, 10, 128 }, { 17, 10, 52 },
+ { 17, 10, 81 }, { 4, 0, 492 }, { 5, 0, 451 }, { 7, 0, 835 },
+ { 13, 0, 70 }, { 4, 0, 539 }, { 7, 11, 748 }, { 11, 11, 700 },
+ { 7, 11, 1517 }, { 11, 11, 597 }, { 14, 11, 76 }, { 14, 11, 335 },
+ { 20, 11, 33 }, { 6, 0, 113 }, { 7, 0, 436 }, { 4, 10, 338 },
+ { 5, 10, 400 }, { 8, 0, 718 }, { 5, 11, 127 }, { 5, 11, 418 },
+ { 6, 0, 1505 }, { 7, 0, 520 }, { 6, 11, 198 }, { 11, 10, 892 },
+ { 12, 11, 83 }, { 4, 10, 221 }, { 5, 10, 659 }, { 5, 10, 989 },
+ { 7, 10, 697 }, { 7, 10, 1211 }, { 10, 10, 284 }, { 7, 0, 1070 },
+ { 5, 11, 276 }, { 6, 11, 55 }, { 7, 11, 1369 }, { 6, 0, 1515 },
+ { 6, 11, 1752 }, { 8, 11, 726 }, { 10, 10, 507 }, { 15, 0, 78 },
+ { 4, 10, 188 }, { 7, 10, 805 }, { 5, 10, 884 }, { 11, 10, 991 },
+ { 5, 11, 764 }, { 6, 10, 1653 }, { 6, 11, 309 }, { 7, 11, 331 },
+ { 10, 11, 550 }, { 7, 11, 1861 }, { 4, 11, 348 }, { 7, 11, 986 },
+ { 7, 11, 1573 }, { 12, 0, 610 }, { 13, 0, 431 }, { 16, 0, 59 },
+ { 9, 11, 799 }, { 12, 10, 166 }, { 6, 0, 1530 }, { 4, 0, 750 },
+ { 4, 0, 307 }, { 5, 0, 964 }, { 6, 11, 194 }, { 7, 11, 133 },
+ { 10, 11, 493 }, { 10, 11, 570 }, { 11, 11, 664 }, { 5, 11, 24 },
+ { 5, 11, 569 }, { 6, 11, 3 }, { 6, 11, 119 }, { 6, 11, 143 },
+ { 6, 11, 440 }, { 7, 11, 295 }, { 7, 11, 599 }, { 7, 11, 1686 },
+ { 7, 11, 1854 }, { 8, 11, 424 }, { 9, 11, 43 }, { 9, 11, 584 },
+ { 9, 11, 760 }, { 10, 11, 148 }, { 10, 11, 328 }, { 11, 11, 159 },
+ { 11, 11, 253 }, { 11, 11, 506 }, { 12, 11, 487 }, { 12, 11, 531 },
+ { 16, 11, 33 }, { 8, 10, 760 }, { 5, 11, 14 }, { 5, 11, 892 },
+ { 6, 11, 283 }, { 7, 11, 234 }, { 8, 11, 537 }, { 7, 11, 1251 },
+ { 4, 11, 126 }, { 8, 11, 635 }, { 19, 11, 34 }, { 4, 11, 316 },
+ { 7, 11, 1561 }, { 6, 0, 999 }, { 6, 0, 1310 }, { 9, 11, 861 },
+ { 4, 11, 64 }, { 5, 11, 352 }, { 5, 11, 720 }, { 6, 11, 368 },
+ { 11, 11, 359 }, { 4, 0, 75 }, { 5, 0, 180 }, { 6, 0, 500 },
+ { 7, 0, 58 }, { 7, 0, 710 }, { 10, 0, 645 }, { 8, 10, 770 },
+ { 5, 0, 649 }, { 6, 0, 276 }, { 7, 0, 282 }, { 7, 0, 879 },
+ { 7, 0, 924 }, { 8, 0, 459 }, { 9, 0, 599 }, { 9, 0, 754 },
+ { 11, 0, 574 }, { 12, 0, 128 }, { 12, 0, 494 }, { 13, 0, 52 },
+ { 13, 0, 301 }, { 15, 0, 30 }, { 15, 0, 132 }, { 4, 0, 200 },
+ { 4, 10, 89 }, { 5, 10, 489 }, { 6, 10, 315 }, { 7, 10, 553 },
+ { 7, 10, 1745 }, { 10, 10, 243 }, { 7, 11, 1050 }, { 7, 0, 1621 },
+ { 6, 10, 1658 }, { 9, 10, 3 }, { 10, 10, 154 }, { 11, 10, 641 },
+ { 13, 10, 85 }, { 13, 10, 201 }, { 13, 10, 346 }, { 6, 11, 175 },
+ { 9, 11, 289 }, { 5, 11, 432 }, { 5, 11, 913 }, { 6, 0, 225 },
+ { 9, 0, 211 }, { 7, 0, 718 }, { 8, 0, 687 }, { 11, 0, 374 },
+ { 4, 10, 166 }, { 5, 10, 505 }, { 9, 0, 110 }, { 6, 10, 1670 },
+ { 8, 0, 58 }, { 9, 0, 724 }, { 11, 0, 809 }, { 13, 0, 113 },
+ { 17, 0, 72 }, { 6, 0, 345 }, { 7, 0, 1247 }, { 16, 11, 82 },
+ { 5, 11, 931 }, { 6, 11, 1698 }, { 8, 0, 767 }, { 8, 0, 803 },
+ { 9, 0, 301 }, { 9, 0, 903 }, { 11, 0, 203 }, { 6, 0, 1154 },
+ { 7, 0, 1949 }, { 8, 0, 674 }, { 6, 0, 259 }, { 7, 0, 1275 },
+ { 5, 11, 774 }, { 6, 11, 1637 }, { 6, 11, 1686 }, { 6, 11, 1751 },
+ { 6, 0, 1231 }, { 7, 10, 445 }, { 8, 10, 307 }, { 8, 10, 704 },
+ { 10, 10, 41 }, { 10, 10, 439 }, { 11, 10, 237 }, { 11, 10, 622 },
+ { 12, 10, 201 }, { 8, 0, 254 }, { 6, 11, 260 }, { 7, 11, 1484 },
+ { 11, 0, 277 }, { 7, 10, 1977 }, { 4, 10, 189 }, { 5, 10, 713 },
+ { 6, 11, 573 }, { 8, 10, 57 }, { 10, 10, 371 }, { 4, 10, 552 },
+ { 6, 11, 344 }, { 5, 0, 248 }, { 9, 0, 800 }, { 10, 0, 693 },
+ { 11, 0, 482 }, { 11, 0, 734 }, { 11, 0, 789 }, { 6, 11, 240 },
+ { 4, 0, 116 }, { 5, 0, 95 }, { 5, 0, 445 }, { 7, 0, 1688 },
+ { 8, 0, 29 }, { 9, 0, 272 }, { 11, 0, 509 }, { 11, 0, 915 },
+ { 4, 11, 292 }, { 4, 11, 736 }, { 5, 11, 871 }, { 6, 11, 171 },
+ { 6, 11, 1689 }, { 7, 11, 1324 }, { 7, 11, 1944 }, { 9, 11, 415 },
+ { 9, 11, 580 }, { 14, 11, 230 }, { 18, 11, 68 }, { 7, 0, 490 },
+ { 13, 0, 100 }, { 15, 0, 75 }, { 7, 0, 1641 }, { 5, 0, 543 },
+ { 7, 11, 209 }, { 8, 11, 661 }, { 10, 11, 42 }, { 11, 11, 58 },
+ { 12, 11, 58 }, { 12, 11, 118 }, { 13, 11, 32 }, { 5, 0, 181 },
+ { 8, 0, 41 }, { 6, 11, 63 }, { 7, 11, 920 }, { 5, 0, 657 },
+ { 5, 11, 793 }, { 10, 0, 709 }, { 7, 0, 25 }, { 8, 0, 202 },
+ { 10, 0, 536 }, { 5, 11, 665 }, { 7, 10, 1788 }, { 17, 10, 49 },
+ { 9, 0, 423 }, { 12, 0, 89 }, { 5, 11, 67 }, { 6, 11, 62 },
+ { 6, 11, 374 }, { 7, 11, 1391 }, { 8, 0, 113 }, { 9, 0, 877 },
+ { 10, 0, 554 }, { 11, 0, 83 }, { 12, 0, 136 }, { 19, 0, 109 },
+ { 9, 11, 790 }, { 12, 11, 47 }, { 10, 10, 661 }, { 4, 0, 963 },
+ { 10, 0, 927 }, { 14, 0, 442 }, { 7, 10, 1945 }, { 5, 0, 976 },
+ { 4, 0, 206 }, { 4, 11, 391 }, { 7, 11, 1169 }, { 6, 0, 2002 },
+ { 6, 0, 696 }, { 6, 0, 1008 }, { 6, 0, 1170 }, { 4, 11, 271 },
+ { 7, 0, 13 }, { 8, 0, 226 }, { 10, 0, 537 }, { 11, 0, 570 },
+ { 11, 0, 605 }, { 11, 0, 799 }, { 11, 0, 804 }, { 12, 0, 85 },
+ { 12, 0, 516 }, { 12, 0, 623 }, { 13, 0, 112 }, { 13, 0, 361 },
+ { 14, 0, 77 }, { 14, 0, 78 }, { 17, 0, 28 }, { 19, 0, 110 },
+ { 12, 11, 314 }, { 4, 0, 769 }, { 6, 0, 1544 }, { 4, 0, 551 },
+ { 9, 0, 678 }, { 5, 10, 84 }, { 6, 10, 163 }, { 9, 0, 57 },
+ { 9, 0, 459 }, { 10, 0, 425 }, { 11, 0, 119 }, { 12, 0, 184 },
+ { 12, 0, 371 }, { 13, 0, 358 }, { 17, 0, 51 }, { 5, 0, 188 },
+ { 5, 0, 814 }, { 8, 0, 10 }, { 9, 0, 421 }, { 9, 0, 729 },
+ { 10, 0, 609 }, { 11, 0, 689 }, { 4, 11, 253 }, { 5, 10, 410 },
+ { 5, 11, 544 }, { 7, 11, 300 }, { 9, 11, 340 }, { 6, 0, 624 },
+ { 10, 11, 321 }, { 7, 0, 1941 }, { 18, 0, 130 }, { 5, 10, 322 },
+ { 8, 10, 186 }, { 9, 10, 262 }, { 10, 10, 187 }, { 14, 10, 208 },
+ { 5, 11, 53 }, { 5, 11, 541 }, { 6, 11, 94 }, { 6, 11, 499 },
+ { 7, 11, 230 }, { 11, 11, 321 }, { 5, 10, 227 }, { 4, 0, 378 },
+ { 4, 11, 920 }, { 5, 11, 25 }, { 5, 11, 790 }, { 6, 11, 457 },
+ { 7, 11, 853 }, { 9, 0, 269 }, { 4, 0, 528 }, { 6, 0, 1146 },
+ { 7, 10, 1395 }, { 8, 10, 486 }, { 9, 10, 236 }, { 9, 10, 878 },
+ { 10, 10, 218 }, { 11, 10, 95 }, { 19, 10, 17 }, { 19, 10, 31 },
+ { 7, 10, 2043 }, { 8, 10, 672 }, { 13, 10, 448 }, { 6, 0, 1105 },
+ { 6, 0, 1616 }, { 6, 11, 1765 }, { 12, 11, 163 }, { 5, 10, 412 },
+ { 5, 11, 822 }, { 4, 11, 634 }, { 6, 0, 656 }, { 6, 11, 1730 },
+ { 6, 0, 1940 }, { 5, 0, 104 }, { 6, 0, 173 }, { 7, 0, 1631 },
+ { 8, 10, 562 }, { 6, 11, 36 }, { 7, 11, 658 }, { 8, 11, 454 },
+ { 19, 11, 86 }, { 5, 0, 457 }, { 6, 10, 1771 }, { 7, 0, 810 },
+ { 8, 0, 138 }, { 8, 0, 342 }, { 9, 0, 84 }, { 10, 0, 193 },
+ { 11, 0, 883 }, { 12, 0, 359 }, { 9, 0, 620 }, { 7, 10, 1190 },
+ { 9, 10, 132 }, { 7, 11, 975 }, { 9, 11, 789 }, { 6, 0, 95 },
+ { 6, 0, 1934 }, { 8, 0, 967 }, { 13, 11, 335 }, { 6, 0, 406 },
+ { 10, 0, 409 }, { 10, 0, 447 }, { 11, 0, 44 }, { 12, 0, 100 },
+ { 4, 10, 317 }, { 7, 10, 1279 }, { 4, 0, 477 }, { 6, 0, 1268 },
+ { 6, 0, 1941 }, { 8, 0, 944 }, { 5, 10, 63 }, { 5, 10, 509 },
+ { 4, 0, 629 }, { 4, 11, 104 }, { 4, 0, 246 }, { 5, 0, 375 },
+ { 6, 0, 1636 }, { 4, 10, 288 }, { 7, 11, 1614 }, { 9, 0, 49 },
+ { 10, 0, 774 }, { 8, 10, 89 }, { 8, 10, 620 }, { 11, 10, 628 },
+ { 12, 10, 322 }, { 15, 10, 124 }, { 4, 0, 282 }, { 7, 0, 1034 },
+ { 11, 0, 398 }, { 11, 0, 634 }, { 12, 0, 1 }, { 12, 0, 79 },
+ { 12, 0, 544 }, { 14, 0, 237 }, { 17, 0, 10 }, { 18, 0, 20 },
+ { 4, 0, 824 }, { 7, 11, 45 }, { 9, 11, 542 }, { 9, 11, 566 },
+ { 10, 11, 728 }, { 5, 0, 118 }, { 5, 0, 499 }, { 6, 0, 476 },
+ { 6, 0, 665 }, { 6, 0, 1176 }, { 6, 0, 1196 }, { 7, 0, 600 },
+ { 7, 0, 888 }, { 7, 0, 1096 }, { 7, 0, 296 }, { 7, 0, 596 },
+ { 8, 0, 560 }, { 8, 0, 586 }, { 9, 0, 612 }, { 11, 0, 304 },
+ { 12, 0, 46 }, { 13, 0, 89 }, { 14, 0, 112 }, { 17, 0, 122 },
+ { 5, 0, 894 }, { 6, 0, 1772 }, { 9, 0, 1009 }, { 10, 10, 120 },
+ { 5, 11, 533 }, { 7, 11, 755 }, { 10, 11, 780 }, { 23, 10, 1 },
+ { 6, 0, 1474 }, { 7, 11, 87 }, { 14, 11, 288 }, { 11, 0, 366 },
+ { 9, 10, 461 }, { 7, 11, 988 }, { 7, 11, 1939 }, { 9, 11, 64 },
+ { 9, 11, 502 }, { 12, 11, 7 }, { 12, 11, 34 }, { 13, 11, 12 },
+ { 13, 11, 234 }, { 19, 11, 77 }, { 7, 0, 1599 }, { 7, 0, 1723 },
+ { 8, 0, 79 }, { 8, 0, 106 }, { 8, 0, 190 }, { 8, 0, 302 },
+ { 8, 0, 383 }, { 8, 0, 713 }, { 9, 0, 119 }, { 9, 0, 233 },
+ { 9, 0, 419 }, { 9, 0, 471 }, { 10, 0, 181 }, { 10, 0, 406 },
+ { 11, 0, 57 }, { 11, 0, 85 }, { 11, 0, 120 }, { 11, 0, 177 },
+ { 11, 0, 296 }, { 11, 0, 382 }, { 11, 0, 454 }, { 11, 0, 758 },
+ { 11, 0, 999 }, { 12, 0, 27 }, { 12, 0, 98 }, { 12, 0, 131 },
+ { 12, 0, 245 }, { 12, 0, 312 }, { 12, 0, 446 }, { 12, 0, 454 },
+ { 13, 0, 25 }, { 13, 0, 98 }, { 13, 0, 426 }, { 13, 0, 508 },
+ { 14, 0, 70 }, { 14, 0, 163 }, { 14, 0, 272 }, { 14, 0, 277 },
+ { 14, 0, 370 }, { 15, 0, 95 }, { 15, 0, 138 }, { 15, 0, 167 },
+ { 17, 0, 38 }, { 20, 0, 96 }, { 7, 10, 1346 }, { 10, 0, 200 },
+ { 19, 0, 2 }, { 23, 0, 22 }, { 7, 11, 141 }, { 6, 10, 85 },
+ { 6, 0, 1759 }, { 10, 0, 372 }, { 17, 0, 16 }, { 8, 0, 943 },
+ { 4, 11, 619 }, { 11, 11, 88 }, { 5, 11, 246 }, { 8, 11, 189 },
+ { 9, 11, 355 }, { 9, 11, 512 }, { 10, 11, 124 }, { 10, 11, 453 },
+ { 11, 11, 143 }, { 11, 11, 416 }, { 11, 11, 859 }, { 13, 11, 341 },
+ { 5, 0, 258 }, { 6, 0, 719 }, { 6, 0, 1798 }, { 6, 0, 1839 },
+ { 8, 0, 900 }, { 10, 0, 874 }, { 10, 0, 886 }, { 12, 0, 698 },
+ { 12, 0, 732 }, { 12, 0, 770 }, { 16, 0, 106 }, { 18, 0, 163 },
+ { 18, 0, 170 }, { 18, 0, 171 }, { 24, 0, 20 }, { 9, 0, 707 },
+ { 11, 0, 326 }, { 11, 0, 339 }, { 12, 0, 423 }, { 12, 0, 502 },
+ { 20, 0, 62 }, { 9, 11, 707 }, { 11, 11, 326 }, { 11, 11, 339 },
+ { 12, 11, 423 }, { 12, 11, 502 }, { 20, 11, 62 }, { 5, 0, 30 },
+ { 7, 0, 495 }, { 8, 0, 134 }, { 9, 0, 788 }, { 12, 0, 438 },
+ { 5, 11, 678 }, { 5, 10, 279 }, { 6, 10, 235 }, { 7, 10, 468 },
+ { 8, 10, 446 }, { 9, 10, 637 }, { 10, 10, 717 }, { 11, 10, 738 },
+ { 12, 10, 514 }, { 5, 11, 35 }, { 6, 11, 287 }, { 7, 11, 862 },
+ { 7, 11, 1886 }, { 10, 11, 179 }, { 7, 0, 1948 }, { 7, 0, 2004 },
+ { 4, 11, 517 }, { 5, 10, 17 }, { 6, 10, 371 }, { 9, 10, 528 },
+ { 4, 0, 115 }, { 5, 0, 669 }, { 6, 0, 407 }, { 8, 0, 311 },
+ { 11, 0, 10 }, { 13, 0, 5 }, { 9, 0, 381 }, { 5, 0, 50 },
+ { 6, 0, 439 }, { 7, 0, 780 }, { 7, 0, 1040 }, { 8, 11, 667 },
+ { 11, 11, 403 }, { 18, 11, 83 }, { 5, 0, 1 }, { 6, 0, 81 },
+ { 10, 0, 520 }, { 6, 0, 738 }, { 5, 0, 482 }, { 8, 0, 98 },
+ { 9, 0, 172 }, { 10, 0, 360 }, { 10, 0, 700 }, { 10, 0, 822 },
+ { 11, 0, 302 }, { 11, 0, 778 }, { 12, 0, 50 }, { 12, 0, 127 },
+ { 12, 0, 396 }, { 13, 0, 62 }, { 13, 0, 328 }, { 14, 0, 122 },
+ { 19, 0, 72 }, { 9, 11, 157 }, { 10, 11, 131 }, { 12, 11, 72 },
+ { 7, 11, 714 }, { 7, 11, 539 }, { 5, 0, 2 }, { 6, 0, 512 },
+ { 7, 0, 797 }, { 7, 0, 1494 }, { 8, 0, 253 }, { 8, 0, 589 },
+ { 9, 0, 77 }, { 10, 0, 1 }, { 10, 0, 129 }, { 10, 0, 225 },
+ { 11, 0, 118 }, { 11, 0, 226 }, { 11, 0, 251 }, { 11, 0, 430 },
+ { 11, 0, 701 }, { 11, 0, 974 }, { 11, 0, 982 }, { 12, 0, 64 },
+ { 12, 0, 260 }, { 12, 0, 488 }, { 12, 0, 690 }, { 5, 11, 394 },
+ { 7, 11, 367 }, { 7, 11, 487 }, { 7, 11, 857 }, { 7, 11, 1713 },
+ { 8, 11, 246 }, { 9, 11, 537 }, { 10, 11, 165 }, { 12, 11, 219 },
+ { 12, 11, 561 }, { 8, 0, 557 }, { 5, 10, 779 }, { 5, 10, 807 },
+ { 6, 10, 1655 }, { 6, 10, 1676 }, { 4, 10, 196 }, { 5, 10, 558 },
+ { 5, 10, 949 }, { 11, 11, 827 }, { 12, 11, 56 }, { 14, 11, 34 },
+ { 15, 11, 148 }, { 9, 0, 347 }, { 5, 0, 572 }, { 6, 0, 832 },
+ { 4, 0, 12 }, { 7, 0, 504 }, { 7, 0, 522 }, { 7, 0, 809 },
+ { 8, 0, 797 }, { 13, 0, 88 }, { 4, 10, 752 }, { 5, 11, 449 },
+ { 7, 11, 86 }, { 8, 11, 103 }, { 17, 11, 69 }, { 7, 11, 2028 },
+ { 10, 11, 641 }, { 5, 0, 528 }, { 6, 11, 1 }, { 14, 11, 2 },
+ { 6, 0, 861 }, { 10, 0, 294 }, { 4, 10, 227 }, { 5, 10, 159 },
+ { 5, 10, 409 }, { 7, 10, 80 }, { 10, 10, 479 }, { 12, 10, 418 },
+ { 14, 10, 50 }, { 14, 10, 249 }, { 14, 10, 295 }, { 7, 10, 1470 },
+ { 8, 10, 66 }, { 8, 10, 137 }, { 8, 10, 761 }, { 9, 10, 638 },
+ { 11, 10, 80 }, { 11, 10, 212 }, { 11, 10, 368 }, { 11, 10, 418 },
+ { 12, 10, 8 }, { 13, 10, 15 }, { 16, 10, 61 }, { 17, 10, 59 },
+ { 19, 10, 28 }, { 20, 10, 84 }, { 20, 0, 109 }, { 7, 11, 1148 },
+ { 6, 11, 277 }, { 7, 11, 1274 }, { 7, 11, 1386 }, { 7, 11, 1392 },
+ { 12, 11, 129 }, { 18, 11, 87 }, { 6, 11, 187 }, { 7, 11, 39 },
+ { 7, 11, 1203 }, { 8, 11, 380 }, { 8, 11, 542 }, { 14, 11, 117 },
+ { 21, 11, 28 }, { 6, 0, 1187 }, { 5, 0, 266 }, { 9, 0, 290 },
+ { 9, 0, 364 }, { 10, 0, 293 }, { 11, 0, 606 }, { 14, 0, 45 },
+ { 6, 11, 297 }, { 7, 11, 793 }, { 11, 11, 938 }, { 4, 0, 50 },
+ { 6, 0, 594 }, { 9, 0, 121 }, { 10, 0, 49 }, { 10, 0, 412 },
+ { 11, 0, 834 }, { 8, 0, 748 }, { 7, 11, 464 }, { 8, 11, 438 },
+ { 11, 11, 105 }, { 11, 11, 363 }, { 12, 11, 231 }, { 14, 11, 386 },
+ { 15, 11, 102 }, { 20, 11, 75 }, { 4, 0, 466 }, { 13, 0, 399 },
+ { 14, 0, 337 }, { 6, 10, 38 }, { 7, 10, 1220 }, { 8, 10, 185 },
+ { 8, 10, 256 }, { 9, 10, 22 }, { 9, 10, 331 }, { 10, 10, 738 },
+ { 11, 10, 205 }, { 11, 10, 540 }, { 11, 10, 746 }, { 13, 10, 465 },
+ { 14, 10, 194 }, { 9, 0, 378 }, { 13, 0, 162 }, { 9, 0, 519 },
+ { 4, 10, 159 }, { 6, 10, 115 }, { 7, 10, 252 }, { 7, 10, 257 },
+ { 7, 10, 1928 }, { 8, 10, 69 }, { 9, 10, 384 }, { 10, 10, 91 },
+ { 10, 10, 615 }, { 12, 10, 375 }, { 14, 10, 235 }, { 18, 10, 117 },
+ { 19, 10, 123 }, { 5, 11, 604 }, { 5, 10, 911 }, { 8, 10, 278 },
+ { 4, 0, 667 }, { 8, 0, 351 }, { 9, 0, 322 }, { 4, 10, 151 },
+ { 7, 10, 1567 }, { 6, 0, 902 }, { 5, 10, 990 }, { 12, 0, 180 },
+ { 5, 10, 194 }, { 7, 10, 1662 }, { 9, 10, 90 }, { 4, 0, 869 },
+ { 6, 0, 1996 }, { 6, 0, 813 }, { 5, 10, 425 }, { 9, 11, 761 },
+ { 4, 0, 260 }, { 5, 10, 971 }, { 5, 11, 20 }, { 6, 11, 298 },
+ { 7, 11, 659 }, { 7, 11, 1366 }, { 9, 11, 219 }, { 4, 0, 39 },
+ { 5, 0, 36 }, { 7, 0, 1843 }, { 8, 0, 407 }, { 11, 0, 144 },
+ { 12, 0, 523 }, { 4, 0, 510 }, { 10, 0, 587 }, { 11, 10, 752 },
+ { 7, 0, 29 }, { 7, 0, 66 }, { 7, 0, 1980 }, { 10, 0, 487 },
+ { 10, 0, 809 }, { 13, 0, 260 }, { 14, 0, 82 }, { 18, 0, 63 },
+ { 9, 10, 662 }, { 5, 10, 72 }, { 6, 10, 264 }, { 7, 10, 21 },
+ { 7, 10, 46 }, { 7, 10, 2013 }, { 8, 10, 215 }, { 8, 10, 513 },
+ { 10, 10, 266 }, { 11, 10, 22 }, { 6, 0, 570 }, { 6, 0, 565 },
+ { 7, 0, 1667 }, { 4, 11, 439 }, { 10, 10, 95 }, { 11, 10, 603 },
+ { 12, 11, 242 }, { 13, 10, 443 }, { 14, 10, 160 }, { 15, 10, 4 },
+ { 6, 0, 1464 }, { 6, 10, 431 }, { 9, 0, 372 }, { 15, 0, 2 },
+ { 19, 0, 10 }, { 19, 0, 18 }, { 5, 10, 874 }, { 6, 10, 1677 },
+ { 15, 10, 0 }, { 4, 0, 787 }, { 6, 0, 380 }, { 12, 0, 399 },
+ { 21, 0, 19 }, { 7, 10, 939 }, { 7, 10, 1172 }, { 7, 10, 1671 },
+ { 9, 10, 540 }, { 10, 10, 696 }, { 11, 10, 265 }, { 11, 10, 732 },
+ { 11, 10, 928 }, { 11, 10, 937 }, { 13, 10, 438 }, { 9, 0, 200 },
+ { 4, 11, 233 }, { 4, 0, 516 }, { 6, 11, 577 }, { 4, 0, 844 },
+ { 11, 0, 887 }, { 14, 0, 365 }, { 14, 0, 375 }, { 4, 11, 482 },
+ { 8, 0, 821 }, { 12, 0, 44 }, { 7, 0, 1655 }, { 8, 0, 305 },
+ { 5, 10, 682 }, { 7, 10, 1887 }, { 7, 11, 346 }, { 4, 10, 696 },
+ { 4, 0, 10 }, { 7, 0, 917 }, { 11, 0, 786 }, { 5, 11, 795 },
+ { 6, 11, 1741 }, { 8, 11, 417 }, { 9, 11, 782 }, { 4, 0, 1016 },
+ { 6, 0, 2031 }, { 5, 0, 684 }, { 4, 10, 726 }, { 5, 10, 630 },
+ { 6, 0, 1021 }, { 6, 0, 1480 }, { 8, 10, 802 }, { 8, 10, 838 },
+ { 6, 0, 27 }, { 6, 0, 395 }, { 7, 11, 622 }, { 7, 11, 625 },
+ { 7, 11, 1750 }, { 4, 11, 203 }, { 7, 11, 1936 }, { 6, 10, 118 },
+ { 7, 10, 215 }, { 7, 10, 1521 }, { 12, 10, 11 }, { 4, 0, 813 },
+ { 8, 0, 511 }, { 7, 10, 615 }, { 10, 10, 251 }, { 7, 10, 1044 },
+ { 17, 0, 56 }, { 5, 10, 225 }, { 6, 0, 342 }, { 6, 0, 496 },
+ { 8, 0, 275 }, { 9, 0, 206 }, { 4, 0, 909 }, { 5, 0, 940 },
+ { 4, 0, 891 }, { 7, 11, 311 }, { 9, 11, 308 }, { 12, 11, 255 },
+ { 4, 10, 370 }, { 5, 10, 756 }, { 7, 10, 1326 }, { 4, 0, 687 },
+ { 6, 0, 1596 }, { 6, 0, 1342 }, { 6, 10, 1662 }, { 7, 10, 48 },
+ { 8, 10, 771 }, { 10, 10, 116 }, { 13, 10, 104 }, { 14, 10, 105 },
+ { 14, 10, 184 }, { 15, 10, 168 }, { 19, 10, 92 }, { 20, 10, 68 },
+ { 10, 10, 209 }, { 4, 11, 400 }, { 5, 11, 267 }, { 7, 11, 232 },
+ { 23, 11, 12 }, { 6, 0, 41 }, { 13, 0, 160 }, { 13, 11, 314 },
+ { 6, 0, 1718 }, { 8, 0, 778 }, { 14, 11, 261 }, { 6, 0, 1610 },
+ { 5, 0, 115 }, { 4, 0, 294 }, { 14, 0, 314 }, { 4, 10, 120 },
+ { 4, 0, 983 }, { 5, 0, 193 }, { 12, 0, 178 }, { 10, 10, 429 },
+ { 5, 10, 820 }, { 7, 10, 931 }, { 6, 0, 994 }, { 6, 0, 1051 },
+ { 6, 0, 1439 }, { 7, 0, 174 }, { 5, 11, 732 }, { 4, 11, 100 },
+ { 7, 11, 679 }, { 8, 11, 313 }, { 10, 10, 199 }, { 6, 10, 151 },
+ { 6, 10, 1675 }, { 7, 10, 383 }, { 23, 10, 10 }, { 6, 0, 1796 },
+ { 8, 0, 848 }, { 8, 0, 867 }, { 8, 0, 907 }, { 10, 0, 855 },
+ { 12, 0, 703 }, { 12, 0, 221 }, { 4, 0, 122 }, { 5, 0, 796 },
+ { 5, 0, 952 }, { 6, 0, 1660 }, { 6, 0, 1671 }, { 8, 0, 567 },
+ { 9, 0, 687 }, { 9, 0, 742 }, { 10, 0, 686 }, { 11, 0, 682 },
+ { 11, 0, 909 }, { 12, 0, 281 }, { 5, 11, 362 }, { 5, 11, 443 },
+ { 6, 11, 318 }, { 7, 11, 1019 }, { 11, 11, 623 }, { 5, 11, 463 },
+ { 8, 11, 296 }, { 11, 0, 583 }, { 13, 0, 262 }, { 6, 10, 1624 },
+ { 12, 10, 422 }, { 14, 10, 360 }, { 5, 0, 179 }, { 7, 0, 1095 },
+ { 7, 0, 1213 }, { 4, 10, 43 }, { 4, 11, 454 }, { 5, 10, 344 },
+ { 5, 10, 357 }, { 4, 0, 66 }, { 7, 0, 722 }, { 7, 0, 904 },
+ { 6, 0, 773 }, { 7, 0, 352 }, { 5, 10, 888 }, { 5, 11, 48 },
+ { 5, 11, 404 }, { 6, 11, 557 }, { 7, 11, 458 }, { 8, 11, 597 },
+ { 10, 11, 455 }, { 10, 11, 606 }, { 11, 11, 49 }, { 11, 11, 548 },
+ { 12, 11, 476 }, { 13, 11, 18 }, { 13, 11, 450 }, { 6, 11, 418 },
+ { 4, 10, 711 }, { 5, 11, 442 }, { 7, 11, 1984 }, { 13, 0, 35 },
+ { 9, 0, 152 }, { 6, 0, 1197 }, { 7, 11, 1093 }, { 9, 11, 203 },
+ { 9, 10, 440 }, { 10, 0, 592 }, { 10, 0, 753 }, { 12, 0, 317 },
+ { 12, 0, 355 }, { 12, 0, 465 }, { 12, 0, 469 }, { 12, 0, 560 },
+ { 12, 0, 578 }, { 13, 0, 243 }, { 5, 0, 564 }, { 6, 0, 797 },
+ { 5, 10, 958 }, { 5, 10, 987 }, { 5, 11, 55 }, { 7, 11, 376 },
+ { 12, 11, 161 }, { 5, 11, 450 }, { 6, 0, 556 }, { 6, 0, 819 },
+ { 11, 10, 276 }, { 14, 10, 293 }, { 7, 0, 544 }, { 10, 0, 61 },
+ { 8, 0, 719 }, { 4, 10, 65 }, { 5, 10, 479 }, { 5, 10, 1004 },
+ { 7, 10, 1913 }, { 8, 10, 317 }, { 9, 10, 302 }, { 10, 10, 612 },
+ { 13, 10, 22 }, { 4, 0, 5 }, { 5, 0, 498 }, { 8, 0, 637 },
+ { 9, 0, 521 }, { 4, 11, 213 }, { 4, 10, 261 }, { 7, 11, 223 },
+ { 7, 10, 510 }, { 8, 11, 80 }, { 5, 0, 927 }, { 7, 0, 101 },
+ { 4, 10, 291 }, { 7, 11, 381 }, { 7, 11, 806 }, { 7, 11, 820 },
+ { 8, 11, 354 }, { 8, 11, 437 }, { 8, 11, 787 }, { 9, 10, 515 },
+ { 9, 11, 657 }, { 10, 11, 58 }, { 10, 11, 339 }, { 10, 11, 749 },
+ { 11, 11, 914 }, { 12, 10, 152 }, { 12, 11, 162 }, { 12, 10, 443 },
+ { 13, 11, 75 }, { 13, 10, 392 }, { 14, 11, 106 }, { 14, 11, 198 },
+ { 14, 11, 320 }, { 14, 10, 357 }, { 14, 11, 413 }, { 18, 11, 43 },
+ { 6, 0, 1153 }, { 7, 0, 1441 }, { 8, 11, 747 }, { 4, 0, 893 },
+ { 5, 0, 780 }, { 5, 0, 893 }, { 10, 11, 654 }, { 5, 11, 692 },
+ { 5, 0, 238 }, { 6, 11, 191 }, { 4, 10, 130 }, { 7, 10, 843 },
+ { 6, 0, 1296 }, { 5, 10, 42 }, { 5, 10, 879 }, { 7, 10, 245 },
+ { 7, 10, 324 }, { 7, 10, 1532 }, { 11, 10, 463 }, { 11, 10, 472 },
+ { 13, 10, 363 }, { 16, 10, 52 }, { 6, 0, 1729 }, { 6, 0, 1999 },
+ { 8, 0, 969 }, { 4, 10, 134 }, { 5, 10, 372 }, { 4, 0, 60 },
+ { 7, 0, 941 }, { 7, 0, 1800 }, { 8, 0, 314 }, { 9, 0, 700 },
+ { 11, 0, 487 }, { 6, 0, 1144 }, { 6, 11, 162 }, { 7, 11, 1960 },
+ { 8, 11, 831 }, { 4, 11, 706 }, { 7, 0, 1147 }, { 10, 11, 426 },
+ { 10, 11, 89 }, { 7, 0, 1853 }, { 10, 0, 437 }, { 8, 0, 419 },
+ { 7, 10, 1634 }, { 5, 0, 828 }, { 5, 0, 806 }, { 7, 0, 176 },
+ { 7, 0, 178 }, { 7, 0, 1240 }, { 7, 0, 1976 }, { 4, 10, 644 },
+ { 7, 11, 1877 }, { 5, 11, 420 }, { 7, 11, 1449 }, { 4, 0, 51 },
+ { 5, 0, 39 }, { 6, 0, 4 }, { 7, 0, 591 }, { 7, 0, 849 },
+ { 7, 0, 951 }, { 7, 0, 1613 }, { 7, 0, 1760 }, { 7, 0, 1988 },
+ { 9, 0, 434 }, { 10, 0, 754 }, { 11, 0, 25 }, { 11, 0, 37 },
+ { 10, 11, 57 }, { 10, 11, 277 }, { 7, 10, 540 }, { 4, 11, 204 },
+ { 7, 0, 159 }, { 11, 11, 231 }, { 5, 0, 902 }, { 7, 0, 928 },
+ { 7, 11, 366 }, { 9, 11, 287 }, { 12, 11, 199 }, { 12, 11, 556 },
+ { 12, 11, 577 }, { 6, 10, 623 }, { 8, 10, 789 }, { 4, 10, 908 },
+ { 5, 10, 359 }, { 5, 10, 508 }, { 6, 10, 1723 }, { 7, 10, 343 },
+ { 7, 10, 1996 }, { 7, 10, 2026 }, { 6, 0, 270 }, { 4, 10, 341 },
+ { 7, 10, 480 }, { 5, 11, 356 }, { 7, 11, 224 }, { 11, 11, 588 },
+ { 11, 11, 864 }, { 11, 11, 968 }, { 15, 11, 160 }, { 4, 0, 556 },
+ { 9, 0, 801 }, { 4, 0, 416 }, { 14, 0, 372 }, { 5, 0, 152 },
+ { 5, 0, 197 }, { 7, 0, 340 }, { 7, 0, 867 }, { 10, 0, 548 },
+ { 10, 0, 581 }, { 11, 0, 6 }, { 12, 0, 3 }, { 12, 0, 19 },
+ { 14, 0, 110 }, { 14, 0, 289 }, { 11, 0, 369 }, { 7, 11, 630 },
+ { 9, 11, 567 }, { 11, 11, 150 }, { 11, 11, 444 }, { 13, 11, 119 },
+ { 6, 11, 539 }, { 7, 10, 1995 }, { 8, 10, 299 }, { 11, 10, 890 },
+ { 12, 10, 674 }, { 7, 0, 34 }, { 7, 0, 190 }, { 8, 0, 28 },
+ { 8, 0, 141 }, { 8, 0, 444 }, { 8, 0, 811 }, { 9, 0, 468 },
+ { 11, 0, 334 }, { 12, 0, 24 }, { 12, 0, 386 }, { 12, 0, 576 },
+ { 5, 0, 757 }, { 7, 0, 1553 }, { 8, 0, 898 }, { 5, 0, 721 },
+ { 8, 0, 1012 }, { 4, 0, 789 }, { 5, 0, 647 }, { 7, 0, 1102 },
+ { 4, 0, 898 }, { 10, 0, 183 }, { 4, 10, 238 }, { 5, 10, 503 },
+ { 6, 10, 179 }, { 7, 10, 2003 }, { 8, 10, 381 }, { 8, 10, 473 },
+ { 9, 10, 149 }, { 10, 10, 788 }, { 15, 10, 45 }, { 15, 10, 86 },
+ { 20, 10, 110 }, { 22, 10, 57 }, { 9, 0, 136 }, { 19, 0, 107 },
+ { 4, 10, 121 }, { 5, 10, 156 }, { 5, 10, 349 }, { 10, 10, 605 },
+ { 14, 10, 342 }, { 4, 11, 235 }, { 7, 11, 255 }, { 4, 11, 194 },
+ { 5, 11, 584 }, { 6, 11, 384 }, { 7, 11, 583 }, { 10, 11, 761 },
+ { 11, 11, 760 }, { 11, 11, 851 }, { 6, 10, 80 }, { 6, 10, 1694 },
+ { 7, 10, 173 }, { 7, 10, 1974 }, { 9, 10, 547 }, { 10, 10, 730 },
+ { 14, 10, 18 }, { 22, 10, 39 }, { 4, 10, 923 }, { 6, 10, 1711 },
+ { 5, 0, 277 }, { 13, 0, 247 }, { 4, 0, 435 }, { 5, 11, 562 },
+ { 6, 0, 1311 }, { 5, 11, 191 }, { 9, 11, 271 }, { 4, 10, 595 },
+ { 7, 11, 1537 }, { 14, 11, 96 }, { 15, 11, 73 }, { 5, 0, 437 },
+ { 7, 0, 502 }, { 7, 0, 519 }, { 7, 0, 1122 }, { 7, 0, 1751 },
+ { 14, 0, 211 }, { 6, 10, 459 }, { 7, 10, 1753 }, { 7, 10, 1805 },
+ { 8, 10, 658 }, { 9, 10, 1 }, { 11, 10, 959 }, { 13, 10, 446 },
+ { 6, 0, 814 }, { 4, 11, 470 }, { 5, 11, 473 }, { 6, 11, 153 },
+ { 7, 11, 1503 }, { 7, 11, 1923 }, { 10, 11, 701 }, { 11, 11, 132 },
+ { 11, 11, 168 }, { 11, 11, 227 }, { 11, 11, 320 }, { 11, 11, 436 },
+ { 11, 11, 525 }, { 11, 11, 855 }, { 12, 11, 41 }, { 12, 11, 286 },
+ { 13, 11, 103 }, { 13, 11, 284 }, { 14, 11, 255 }, { 14, 11, 262 },
+ { 15, 11, 117 }, { 15, 11, 127 }, { 5, 0, 265 }, { 6, 0, 212 },
+ { 7, 0, 28 }, { 10, 0, 750 }, { 5, 11, 327 }, { 6, 11, 552 },
+ { 7, 11, 1754 }, { 9, 11, 604 }, { 6, 0, 2012 }, { 4, 0, 702 },
+ { 5, 11, 80 }, { 6, 11, 405 }, { 7, 11, 403 }, { 7, 11, 1502 },
+ { 7, 11, 1626 }, { 8, 11, 456 }, { 9, 11, 487 }, { 9, 11, 853 },
+ { 9, 11, 889 }, { 10, 11, 309 }, { 11, 11, 721 }, { 11, 11, 994 },
+ { 12, 11, 430 }, { 13, 11, 165 }, { 5, 0, 808 }, { 7, 0, 2045 },
+ { 5, 0, 166 }, { 8, 0, 739 }, { 12, 0, 511 }, { 6, 10, 490 },
+ { 4, 11, 453 }, { 5, 11, 887 }, { 6, 11, 535 }, { 8, 11, 6 },
+ { 8, 11, 543 }, { 4, 0, 119 }, { 5, 0, 170 }, { 5, 0, 447 },
+ { 7, 0, 1708 }, { 7, 0, 1889 }, { 9, 0, 357 }, { 9, 0, 719 },
+ { 12, 0, 486 }, { 12, 0, 596 }, { 9, 0, 500 }, { 7, 10, 250 },
+ { 8, 10, 507 }, { 4, 10, 158 }, { 6, 0, 809 }, { 6, 0, 1500 },
+ { 9, 0, 327 }, { 11, 0, 350 }, { 11, 0, 831 }, { 13, 0, 352 },
+ { 4, 10, 140 }, { 7, 10, 362 }, { 8, 10, 209 }, { 9, 10, 10 },
+ { 9, 10, 503 }, { 9, 10, 614 }, { 10, 10, 689 }, { 11, 10, 327 },
+ { 11, 10, 725 }, { 12, 10, 252 }, { 12, 10, 583 }, { 13, 10, 192 },
+ { 14, 10, 269 }, { 14, 10, 356 }, { 20, 10, 50 }, { 7, 11, 741 },
+ { 4, 0, 450 }, { 7, 0, 1158 }, { 19, 10, 1 }, { 19, 10, 26 },
+ { 22, 10, 9 }, { 6, 0, 597 }, { 7, 0, 1318 }, { 6, 0, 1602 },
+ { 6, 10, 228 }, { 7, 10, 1341 }, { 9, 10, 408 }, { 10, 10, 343 },
+ { 7, 0, 1375 }, { 7, 0, 1466 }, { 10, 0, 331 }, { 4, 0, 754 },
+ { 4, 10, 557 }, { 5, 11, 101 }, { 6, 11, 88 }, { 6, 11, 543 },
+ { 7, 11, 1677 }, { 9, 11, 100 }, { 10, 11, 677 }, { 14, 11, 169 },
+ { 14, 11, 302 }, { 14, 11, 313 }, { 15, 11, 48 }, { 15, 11, 84 },
+ { 6, 0, 1368 }, { 4, 11, 310 }, { 9, 11, 795 }, { 10, 11, 733 },
+ { 11, 11, 451 }, { 12, 11, 249 }, { 14, 11, 115 }, { 14, 11, 286 },
+ { 15, 11, 100 }, { 4, 10, 548 }, { 10, 0, 557 }, { 7, 10, 197 },
+ { 8, 10, 142 }, { 8, 10, 325 }, { 9, 10, 150 }, { 9, 10, 596 },
+ { 10, 10, 353 }, { 11, 10, 74 }, { 11, 10, 315 }, { 12, 10, 662 },
+ { 12, 10, 681 }, { 14, 10, 423 }, { 15, 10, 141 }, { 5, 11, 587 },
+ { 5, 0, 850 }, { 8, 0, 799 }, { 10, 0, 908 }, { 12, 0, 701 },
+ { 12, 0, 757 }, { 14, 0, 466 }, { 4, 0, 62 }, { 5, 0, 275 },
+ { 18, 0, 19 }, { 6, 10, 399 }, { 6, 10, 579 }, { 7, 10, 692 },
+ { 7, 10, 846 }, { 7, 10, 1015 }, { 7, 10, 1799 }, { 8, 10, 403 },
+ { 9, 10, 394 }, { 10, 10, 133 }, { 12, 10, 4 }, { 12, 10, 297 },
+ { 12, 10, 452 }, { 16, 10, 81 }, { 18, 10, 25 }, { 21, 10, 14 },
+ { 22, 10, 12 }, { 23, 10, 18 }, { 12, 0, 459 }, { 7, 10, 1546 },
+ { 11, 10, 299 }, { 14, 10, 407 }, { 4, 10, 177 }, { 4, 11, 498 },
+ { 7, 11, 217 }, { 8, 11, 140 }, { 10, 11, 610 }, { 5, 10, 411 },
+ { 7, 10, 653 }, { 6, 0, 1802 }, { 7, 10, 439 }, { 10, 10, 727 },
+ { 11, 10, 260 }, { 11, 10, 684 }, { 5, 11, 905 }, { 11, 11, 580 },
+ { 14, 11, 201 }, { 6, 0, 1397 }, { 5, 10, 208 }, { 7, 10, 753 },
+ { 7, 10, 1528 }, { 7, 0, 238 }, { 7, 0, 2033 }, { 8, 0, 120 },
+ { 8, 0, 188 }, { 8, 0, 659 }, { 9, 0, 598 }, { 10, 0, 466 },
+ { 12, 0, 342 }, { 12, 0, 588 }, { 13, 0, 503 }, { 14, 0, 246 },
+ { 15, 0, 92 }, { 7, 11, 1041 }, { 4, 11, 456 }, { 7, 11, 105 },
+ { 7, 11, 358 }, { 7, 11, 1637 }, { 8, 11, 643 }, { 11, 11, 483 },
+ { 6, 0, 1318 }, { 6, 0, 1324 }, { 4, 0, 201 }, { 7, 0, 1744 },
+ { 8, 0, 602 }, { 11, 0, 247 }, { 11, 0, 826 }, { 17, 0, 65 },
+ { 5, 10, 242 }, { 8, 0, 164 }, { 18, 0, 62 }, { 5, 10, 953 },
+ { 11, 10, 802 }, { 5, 0, 615 }, { 7, 11, 1566 }, { 8, 11, 269 },
+ { 9, 11, 212 }, { 9, 11, 718 }, { 14, 11, 15 }, { 14, 11, 132 },
+ { 14, 11, 227 }, { 5, 10, 290 }, { 4, 10, 380 }, { 5, 10, 52 },
+ { 7, 10, 277 }, { 9, 10, 368 }, { 11, 10, 791 }, { 7, 0, 1243 },
+ { 5, 11, 539 }, { 11, 11, 919 }, { 13, 11, 409 }, { 8, 0, 968 },
+ { 5, 11, 470 }, { 6, 0, 882 }, { 4, 0, 907 }, { 5, 0, 100 },
+ { 10, 0, 329 }, { 12, 0, 416 }, { 21, 0, 29 }, { 10, 10, 138 },
+ { 11, 10, 476 }, { 5, 10, 725 }, { 5, 10, 727 }, { 6, 11, 91 },
+ { 7, 11, 435 }, { 7, 10, 1811 }, { 4, 11, 16 }, { 5, 11, 316 },
+ { 5, 11, 842 }, { 6, 11, 370 }, { 6, 11, 1778 }, { 8, 11, 166 },
+ { 11, 11, 812 }, { 12, 11, 206 }, { 12, 11, 351 }, { 14, 11, 418 },
+ { 16, 11, 15 }, { 16, 11, 34 }, { 18, 11, 3 }, { 19, 11, 3 },
+ { 19, 11, 7 }, { 20, 11, 4 }, { 21, 11, 21 }, { 4, 0, 176 },
+ { 5, 0, 636 }, { 5, 0, 998 }, { 7, 0, 9 }, { 7, 0, 1508 },
+ { 8, 0, 26 }, { 9, 0, 317 }, { 9, 0, 358 }, { 10, 0, 210 },
+ { 10, 0, 292 }, { 10, 0, 533 }, { 11, 0, 555 }, { 12, 0, 526 },
+ { 12, 0, 607 }, { 13, 0, 263 }, { 13, 0, 459 }, { 14, 0, 271 },
+ { 6, 0, 256 }, { 8, 0, 265 }, { 4, 10, 38 }, { 7, 10, 307 },
+ { 7, 10, 999 }, { 7, 10, 1481 }, { 7, 10, 1732 }, { 7, 10, 1738 },
+ { 9, 10, 414 }, { 11, 10, 316 }, { 12, 10, 52 }, { 13, 10, 420 },
+ { 19, 10, 100 }, { 7, 10, 1296 }, { 4, 11, 611 }, { 5, 11, 606 },
+ { 4, 0, 643 }, { 14, 11, 21 }, { 5, 11, 715 }, { 5, 10, 723 },
+ { 6, 0, 610 }, { 7, 11, 597 }, { 10, 0, 127 }, { 13, 0, 27 },
+ { 6, 0, 1995 }, { 6, 0, 2001 }, { 8, 0, 119 }, { 8, 0, 973 },
+ { 4, 11, 149 }, { 10, 11, 368 }, { 12, 0, 522 }, { 4, 11, 154 },
+ { 5, 10, 109 }, { 6, 10, 1784 }, { 7, 11, 1134 }, { 7, 10, 1895 },
+ { 8, 11, 105 }, { 12, 10, 296 }, { 12, 10, 302 }, { 4, 11, 31 },
+ { 6, 11, 429 }, { 7, 11, 962 }, { 9, 11, 458 }, { 11, 11, 691 },
+ { 10, 0, 553 }, { 11, 0, 876 }, { 13, 0, 193 }, { 13, 0, 423 },
+ { 14, 0, 166 }, { 19, 0, 84 }, { 4, 11, 312 }, { 5, 10, 216 },
+ { 7, 10, 1879 }, { 9, 10, 141 }, { 9, 10, 270 }, { 9, 10, 679 },
+ { 10, 10, 159 }, { 11, 10, 197 }, { 12, 10, 538 }, { 12, 10, 559 },
+ { 14, 10, 144 }, { 14, 10, 167 }, { 15, 10, 67 }, { 6, 0, 1582 },
+ { 7, 0, 1578 }, { 7, 11, 1578 }, { 9, 10, 81 }, { 4, 11, 236 },
+ { 6, 10, 391 }, { 6, 0, 795 }, { 7, 10, 322 }, { 8, 10, 249 },
+ { 5, 11, 836 }, { 5, 11, 857 }, { 6, 11, 1680 }, { 7, 11, 59 },
+ { 19, 11, 53 }, { 7, 0, 432 }, { 10, 11, 68 }, { 11, 11, 494 },
+ { 4, 11, 81 }, { 11, 11, 867 }, { 7, 0, 126 }, { 8, 0, 84 },
+ { 14, 11, 280 }, { 5, 11, 282 }, { 8, 11, 650 }, { 9, 11, 295 },
+ { 9, 11, 907 }, { 10, 11, 443 }, { 8, 0, 790 }, { 5, 10, 632 },
+ { 10, 10, 526 }, { 6, 0, 64 }, { 12, 0, 377 }, { 13, 0, 309 },
+ { 14, 0, 141 }, { 14, 0, 429 }, { 14, 11, 141 }, { 14, 11, 429 },
+ { 6, 0, 1529 }, { 6, 0, 321 }, { 7, 0, 1857 }, { 9, 0, 530 },
+ { 19, 0, 99 }, { 7, 10, 948 }, { 7, 10, 1042 }, { 8, 10, 235 },
+ { 8, 10, 461 }, { 9, 10, 453 }, { 10, 10, 354 }, { 17, 10, 77 },
+ { 7, 0, 1104 }, { 11, 0, 269 }, { 11, 0, 539 }, { 11, 0, 627 },
+ { 11, 0, 706 }, { 11, 0, 975 }, { 12, 0, 248 }, { 12, 0, 434 },
+ { 12, 0, 600 }, { 12, 0, 622 }, { 13, 0, 297 }, { 13, 0, 485 },
+ { 14, 0, 69 }, { 14, 0, 409 }, { 15, 0, 108 }, { 4, 10, 362 },
+ { 7, 10, 52 }, { 7, 10, 303 }, { 10, 11, 70 }, { 12, 11, 26 },
+ { 14, 11, 17 }, { 14, 11, 178 }, { 15, 11, 34 }, { 21, 11, 12 },
+ { 11, 0, 977 }, { 13, 0, 507 }, { 9, 0, 34 }, { 11, 0, 484 },
+ { 5, 10, 196 }, { 6, 10, 486 }, { 7, 10, 212 }, { 8, 10, 309 },
+ { 8, 10, 346 }, { 6, 0, 1700 }, { 7, 0, 26 }, { 7, 0, 293 },
+ { 7, 0, 382 }, { 7, 0, 1026 }, { 7, 0, 1087 }, { 7, 0, 2027 },
+ { 8, 0, 24 }, { 8, 0, 114 }, { 8, 0, 252 }, { 8, 0, 727 },
+ { 8, 0, 729 }, { 9, 0, 30 }, { 9, 0, 199 }, { 9, 0, 231 },
+ { 9, 0, 251 }, { 9, 0, 334 }, { 9, 0, 361 }, { 9, 0, 712 },
+ { 10, 0, 55 }, { 10, 0, 60 }, { 10, 0, 232 }, { 10, 0, 332 },
+ { 10, 0, 384 }, { 10, 0, 396 }, { 10, 0, 504 }, { 10, 0, 542 },
+ { 10, 0, 652 }, { 11, 0, 20 }, { 11, 0, 48 }, { 11, 0, 207 },
+ { 11, 0, 291 }, { 11, 0, 298 }, { 11, 0, 342 }, { 11, 0, 365 },
+ { 11, 0, 394 }, { 11, 0, 620 }, { 11, 0, 705 }, { 11, 0, 1017 },
+ { 12, 0, 123 }, { 12, 0, 340 }, { 12, 0, 406 }, { 12, 0, 643 },
+ { 13, 0, 61 }, { 13, 0, 269 }, { 13, 0, 311 }, { 13, 0, 319 },
+ { 13, 0, 486 }, { 14, 0, 234 }, { 15, 0, 62 }, { 15, 0, 85 },
+ { 16, 0, 71 }, { 18, 0, 119 }, { 20, 0, 105 }, { 7, 10, 1912 },
+ { 4, 11, 71 }, { 5, 11, 376 }, { 7, 11, 119 }, { 10, 11, 665 },
+ { 10, 0, 918 }, { 10, 0, 926 }, { 4, 10, 686 }, { 8, 11, 55 },
+ { 10, 10, 625 }, { 8, 10, 706 }, { 4, 11, 479 }, { 4, 10, 30 },
+ { 5, 10, 43 }, { 6, 0, 379 }, { 7, 0, 270 }, { 8, 0, 176 },
+ { 8, 0, 183 }, { 9, 0, 432 }, { 9, 0, 661 }, { 12, 0, 247 },
+ { 12, 0, 617 }, { 18, 0, 125 }, { 7, 11, 607 }, { 8, 11, 99 },
+ { 24, 11, 4 }, { 5, 0, 792 }, { 5, 0, 900 }, { 4, 11, 612 },
+ { 5, 11, 561 }, { 4, 11, 41 }, { 4, 10, 220 }, { 5, 11, 74 },
+ { 7, 10, 1535 }, { 7, 11, 1627 }, { 11, 11, 871 }, { 12, 11, 619 },
+ { 7, 0, 1920 }, { 7, 11, 94 }, { 11, 11, 329 }, { 11, 11, 965 },
+ { 12, 11, 241 }, { 14, 11, 354 }, { 15, 11, 22 }, { 20, 11, 63 },
+ { 9, 11, 209 }, { 9, 11, 300 }, { 6, 0, 771 }, { 7, 0, 1979 },
+ { 4, 0, 901 }, { 5, 0, 776 }, { 14, 0, 254 }, { 5, 11, 98 },
+ { 9, 11, 16 }, { 13, 11, 386 }, { 5, 11, 984 }, { 4, 11, 182 },
+ { 6, 11, 205 }, { 7, 11, 220 }, { 7, 10, 1725 }, { 7, 10, 1774 },
+ { 10, 10, 393 }, { 5, 10, 263 }, { 6, 10, 414 }, { 4, 11, 42 },
+ { 9, 11, 205 }, { 9, 11, 786 }, { 10, 11, 659 }, { 14, 0, 140 },
+ { 20, 0, 41 }, { 8, 0, 440 }, { 10, 0, 359 }, { 6, 10, 178 },
+ { 6, 11, 289 }, { 6, 10, 1750 }, { 7, 11, 1670 }, { 9, 10, 690 },
+ { 10, 10, 155 }, { 10, 10, 373 }, { 11, 10, 698 }, { 12, 11, 57 },
+ { 13, 10, 155 }, { 20, 10, 93 }, { 23, 11, 4 }, { 4, 0, 37 },
+ { 5, 0, 334 }, { 7, 0, 1253 }, { 23, 11, 25 }, { 4, 0, 508 },
+ { 4, 11, 635 }, { 5, 10, 97 }, { 9, 10, 393 }, { 11, 11, 533 },
+ { 4, 0, 640 }, { 5, 0, 513 }, { 6, 10, 1639 }, { 4, 11, 371 },
+ { 4, 11, 272 }, { 7, 11, 836 }, { 7, 11, 1651 }, { 17, 11, 89 },
+ { 5, 11, 825 }, { 6, 11, 444 }, { 6, 11, 1640 }, { 8, 11, 308 },
+ { 4, 10, 191 }, { 7, 10, 934 }, { 8, 10, 647 }, { 17, 10, 97 },
+ { 12, 0, 246 }, { 15, 0, 162 }, { 19, 0, 64 }, { 20, 0, 8 },
+ { 20, 0, 95 }, { 22, 0, 24 }, { 24, 0, 17 }, { 4, 0, 533 },
+ { 5, 10, 165 }, { 9, 10, 346 }, { 10, 10, 655 }, { 5, 11, 737 },
+ { 11, 10, 885 }, { 5, 10, 877 }, { 8, 10, 128 }, { 11, 10, 179 },
+ { 9, 11, 307 }, { 12, 0, 752 }, { 5, 0, 920 }, { 7, 0, 1048 },
+ { 5, 0, 153 }, { 6, 0, 580 }, { 6, 10, 1663 }, { 7, 10, 132 },
+ { 7, 10, 1154 }, { 7, 10, 1415 }, { 7, 10, 1507 }, { 12, 10, 493 },
+ { 15, 10, 105 }, { 23, 10, 15 }, { 5, 10, 459 }, { 7, 10, 1073 },
+ { 8, 10, 241 }, { 8, 10, 334 }, { 10, 0, 391 }, { 7, 0, 1952 },
+ { 5, 11, 525 }, { 8, 11, 641 }, { 11, 11, 388 }, { 12, 11, 580 },
+ { 14, 0, 126 }, { 6, 0, 640 }, { 4, 0, 483 }, { 7, 0, 1616 },
+ { 9, 0, 69 }, { 6, 10, 324 }, { 6, 10, 520 }, { 7, 10, 338 },
+ { 7, 10, 1729 }, { 8, 10, 228 }, { 11, 10, 750 }, { 5, 11, 493 },
+ { 6, 11, 528 }, { 7, 0, 734 }, { 4, 11, 174 }, { 7, 11, 911 },
+ { 10, 0, 480 }, { 9, 0, 495 }, { 18, 0, 104 }, { 7, 10, 705 },
+ { 9, 0, 472 }, { 4, 10, 73 }, { 6, 10, 612 }, { 7, 10, 927 },
+ { 7, 10, 1330 }, { 7, 10, 1822 }, { 8, 10, 217 }, { 9, 10, 765 },
+ { 9, 10, 766 }, { 10, 10, 408 }, { 11, 10, 51 }, { 11, 10, 793 },
+ { 12, 10, 266 }, { 15, 10, 158 }, { 20, 10, 89 }, { 22, 10, 32 },
+ { 7, 11, 548 }, { 9, 11, 58 }, { 4, 11, 32 }, { 5, 11, 215 },
+ { 6, 11, 269 }, { 7, 11, 1782 }, { 7, 11, 1892 }, { 10, 11, 16 },
+ { 11, 11, 822 }, { 11, 11, 954 }, { 13, 11, 481 }, { 4, 0, 874 },
+ { 9, 0, 229 }, { 5, 10, 389 }, { 8, 10, 636 }, { 7, 11, 1749 },
+ { 8, 11, 477 }, { 6, 0, 948 }, { 5, 11, 308 }, { 7, 11, 1088 },
+ { 4, 0, 748 }, { 11, 0, 1009 }, { 8, 10, 21 }, { 6, 0, 555 },
+ { 7, 0, 485 }, { 5, 11, 126 }, { 8, 11, 297 }, { 9, 11, 366 },
+ { 9, 11, 445 }, { 12, 11, 53 }, { 12, 11, 374 }, { 13, 11, 492 },
+ { 7, 11, 1551 }, { 11, 11, 361 }, { 8, 0, 193 }, { 8, 0, 472 },
+ { 8, 0, 653 }, { 13, 0, 93 }, { 19, 0, 14 }, { 4, 0, 984 },
+ { 4, 11, 175 }, { 5, 0, 172 }, { 6, 0, 1971 }, { 4, 11, 685 },
+ { 21, 11, 8 }, { 5, 11, 797 }, { 13, 0, 83 }, { 5, 10, 189 },
+ { 7, 10, 442 }, { 7, 10, 443 }, { 8, 10, 281 }, { 12, 10, 174 },
+ { 13, 10, 261 }, { 6, 0, 1568 }, { 5, 11, 565 }, { 11, 0, 384 },
+ { 5, 0, 260 }, { 7, 0, 758 }, { 7, 0, 880 }, { 7, 0, 1359 },
+ { 9, 0, 164 }, { 9, 0, 167 }, { 10, 0, 156 }, { 10, 0, 588 },
+ { 12, 0, 101 }, { 14, 0, 48 }, { 15, 0, 70 }, { 6, 10, 2 },
+ { 7, 10, 1262 }, { 7, 10, 1737 }, { 8, 10, 22 }, { 8, 10, 270 },
+ { 8, 10, 612 }, { 9, 10, 312 }, { 9, 10, 436 }, { 10, 10, 311 },
+ { 10, 10, 623 }, { 11, 10, 72 }, { 11, 10, 330 }, { 11, 10, 455 },
+ { 12, 10, 321 }, { 12, 10, 504 }, { 12, 10, 530 }, { 12, 10, 543 },
+ { 13, 10, 17 }, { 13, 10, 156 }, { 13, 10, 334 }, { 17, 10, 60 },
+ { 20, 10, 64 }, { 4, 11, 252 }, { 7, 11, 1068 }, { 10, 11, 434 },
+ { 11, 11, 228 }, { 11, 11, 426 }, { 13, 11, 231 }, { 18, 11, 106 },
+ { 20, 11, 87 }, { 7, 10, 354 }, { 10, 10, 410 }, { 11, 10, 815 },
+ { 6, 0, 367 }, { 7, 10, 670 }, { 7, 10, 1327 }, { 8, 10, 411 },
+ { 8, 10, 435 }, { 9, 10, 653 }, { 9, 10, 740 }, { 10, 10, 385 },
+ { 11, 10, 222 }, { 11, 10, 324 }, { 11, 10, 829 }, { 12, 10, 611 },
+ { 7, 0, 1174 }, { 6, 10, 166 }, { 7, 10, 374 }, { 18, 0, 121 },
+ { 4, 0, 828 }, { 5, 11, 231 }, { 10, 11, 509 }, { 7, 11, 601 },
+ { 9, 11, 277 }, { 9, 11, 674 }, { 10, 11, 178 }, { 10, 11, 257 },
+ { 10, 11, 418 }, { 11, 11, 531 }, { 11, 11, 544 }, { 11, 11, 585 },
+ { 12, 11, 113 }, { 12, 11, 475 }, { 13, 11, 99 }, { 14, 11, 428 },
+ { 6, 0, 1541 }, { 7, 11, 1779 }, { 5, 0, 343 }, { 6, 10, 398 },
+ { 7, 10, 50 }, { 7, 11, 1683 }, { 4, 0, 440 }, { 7, 0, 57 },
+ { 8, 0, 167 }, { 8, 0, 375 }, { 9, 0, 82 }, { 9, 0, 561 },
+ { 9, 0, 744 }, { 10, 0, 620 }, { 9, 11, 744 }, { 6, 0, 926 },
+ { 6, 10, 517 }, { 7, 10, 1159 }, { 10, 10, 621 }, { 11, 10, 192 },
+ { 9, 0, 827 }, { 8, 0, 194 }, { 8, 0, 756 }, { 10, 10, 223 },
+ { 11, 10, 645 }, { 7, 10, 64 }, { 8, 10, 245 }, { 4, 11, 399 },
+ { 5, 11, 119 }, { 5, 11, 494 }, { 7, 11, 751 }, { 9, 11, 556 },
+ { 4, 0, 808 }, { 7, 0, 22 }, { 7, 10, 1763 }, { 12, 10, 310 },
+ { 5, 0, 639 }, { 7, 0, 1249 }, { 11, 0, 896 }, { 6, 11, 584 },
+ { 6, 0, 1614 }, { 7, 0, 860 }, { 7, 11, 1121 }, { 5, 10, 129 },
+ { 6, 10, 61 }, { 7, 10, 947 }, { 4, 0, 102 }, { 7, 0, 815 },
+ { 7, 0, 1699 }, { 11, 0, 964 }, { 13, 10, 505 }, { 13, 10, 506 },
+ { 11, 10, 1000 }, { 4, 11, 679 }, { 4, 0, 899 }, { 4, 0, 569 },
+ { 5, 11, 694 }, { 9, 11, 714 }, { 8, 0, 795 }, { 6, 0, 2045 },
+ { 11, 11, 7 }, { 6, 0, 52 }, { 9, 0, 104 }, { 9, 0, 559 },
+ { 12, 0, 308 }, { 19, 0, 87 }, { 4, 0, 301 }, { 4, 0, 604 },
+ { 5, 10, 637 }, { 8, 0, 779 }, { 5, 11, 143 }, { 5, 11, 769 },
+ { 6, 11, 1760 }, { 7, 11, 682 }, { 7, 11, 1992 }, { 8, 11, 736 },
+ { 9, 10, 590 }, { 19, 0, 32 }, { 9, 11, 527 }, { 5, 10, 280 },
+ { 7, 10, 1226 }, { 6, 0, 494 }, { 6, 0, 677 }, { 6, 0, 682 },
+ { 6, 0, 1044 }, { 5, 10, 281 }, { 7, 10, 1064 }, { 7, 0, 508 },
+ { 5, 11, 860 }, { 6, 11, 422 }, { 7, 11, 0 }, { 7, 11, 1544 },
+ { 9, 11, 577 }, { 11, 11, 990 }, { 12, 11, 141 }, { 12, 11, 453 },
+ { 13, 11, 47 }, { 13, 11, 266 }, { 6, 0, 1014 }, { 5, 11, 515 },
+ { 9, 11, 131 }, { 6, 0, 957 }, { 4, 11, 646 }, { 6, 0, 310 },
+ { 7, 0, 1849 }, { 8, 0, 72 }, { 8, 0, 272 }, { 8, 0, 431 },
+ { 9, 0, 12 }, { 9, 0, 376 }, { 10, 0, 563 }, { 10, 0, 630 },
+ { 10, 0, 796 }, { 10, 0, 810 }, { 11, 0, 367 }, { 11, 0, 599 },
+ { 11, 0, 686 }, { 12, 0, 672 }, { 7, 0, 570 }, { 4, 11, 396 },
+ { 7, 10, 120 }, { 7, 11, 728 }, { 8, 10, 489 }, { 9, 11, 117 },
+ { 9, 10, 319 }, { 10, 10, 820 }, { 11, 10, 1004 }, { 12, 10, 379 },
+ { 12, 10, 679 }, { 13, 10, 117 }, { 13, 11, 202 }, { 13, 10, 412 },
+ { 14, 10, 25 }, { 15, 10, 52 }, { 15, 10, 161 }, { 16, 10, 47 },
+ { 20, 11, 51 }, { 21, 10, 2 }, { 6, 11, 121 }, { 6, 11, 124 },
+ { 6, 11, 357 }, { 7, 11, 1138 }, { 7, 11, 1295 }, { 8, 11, 162 },
+ { 11, 11, 655 }, { 8, 0, 449 }, { 4, 10, 937 }, { 5, 10, 801 },
+ { 8, 11, 449 }, { 11, 11, 958 }, { 6, 0, 181 }, { 7, 0, 537 },
+ { 8, 0, 64 }, { 9, 0, 127 }, { 10, 0, 496 }, { 12, 0, 510 },
+ { 13, 0, 384 }, { 10, 11, 253 }, { 4, 0, 244 }, { 7, 0, 233 },
+ { 5, 11, 237 }, { 4, 10, 365 }, { 6, 0, 1650 }, { 10, 0, 702 },
+ { 11, 0, 245 }, { 5, 10, 7 }, { 11, 10, 774 }, { 13, 0, 463 },
+ { 20, 0, 49 }, { 13, 11, 463 }, { 20, 11, 49 }, { 4, 10, 734 },
+ { 5, 10, 662 }, { 6, 10, 430 }, { 4, 10, 746 }, { 7, 10, 1090 },
+ { 5, 10, 360 }, { 8, 10, 237 }, { 9, 0, 338 }, { 15, 11, 10 },
+ { 7, 11, 571 }, { 10, 11, 366 }, { 6, 0, 1279 }, { 9, 11, 513 },
+ { 10, 11, 22 }, { 10, 11, 39 }, { 12, 11, 122 }, { 12, 11, 187 },
+ { 5, 0, 896 }, { 18, 0, 178 }, { 6, 0, 695 }, { 9, 0, 808 },
+ { 6, 11, 587 }, { 7, 11, 107 }, { 7, 11, 838 }, { 8, 11, 550 },
+ { 10, 11, 401 }, { 7, 0, 1117 }, { 8, 0, 539 }, { 4, 10, 277 },
+ { 5, 10, 608 }, { 6, 10, 493 }, { 7, 10, 457 }, { 12, 10, 384 },
+ { 5, 11, 768 }, { 12, 0, 257 }, { 7, 10, 27 }, { 7, 10, 316 },
+ { 12, 0, 1003 }, { 4, 0, 207 }, { 5, 0, 586 }, { 5, 0, 676 },
+ { 6, 0, 448 }, { 8, 0, 244 }, { 11, 0, 1 }, { 13, 0, 3 },
+ { 16, 0, 54 }, { 17, 0, 4 }, { 18, 0, 13 }, { 5, 10, 552 },
+ { 4, 10, 401 }, { 9, 10, 264 }, { 5, 0, 516 }, { 7, 0, 1883 },
+ { 7, 11, 1883 }, { 12, 0, 960 }, { 4, 11, 894 }, { 5, 0, 4 },
+ { 5, 0, 810 }, { 6, 0, 13 }, { 6, 0, 538 }, { 6, 0, 1690 },
+ { 6, 0, 1726 }, { 7, 0, 499 }, { 7, 0, 1819 }, { 8, 0, 148 },
+ { 8, 0, 696 }, { 8, 0, 791 }, { 12, 0, 125 }, { 15, 0, 9 },
+ { 7, 0, 1268 }, { 11, 0, 30 }, { 14, 0, 315 }, { 9, 10, 543 },
+ { 10, 10, 524 }, { 12, 10, 524 }, { 16, 10, 18 }, { 20, 10, 26 },
+ { 20, 10, 65 }, { 6, 0, 748 }, { 4, 10, 205 }, { 5, 10, 623 },
+ { 7, 10, 104 }, { 8, 10, 519 }, { 11, 0, 542 }, { 11, 0, 852 },
+ { 12, 0, 6 }, { 4, 0, 848 }, { 7, 0, 1385 }, { 11, 0, 582 },
+ { 11, 0, 650 }, { 11, 0, 901 }, { 11, 0, 949 }, { 12, 0, 232 },
+ { 12, 0, 236 }, { 13, 0, 413 }, { 13, 0, 501 }, { 18, 0, 116 },
+ { 7, 10, 579 }, { 9, 10, 41 }, { 9, 10, 244 }, { 9, 10, 669 },
+ { 10, 10, 5 }, { 11, 10, 861 }, { 11, 10, 951 }, { 11, 10, 980 },
+ { 4, 0, 945 }, { 6, 0, 1811 }, { 6, 0, 1845 }, { 6, 0, 1853 },
+ { 6, 0, 1858 }, { 8, 0, 862 }, { 12, 0, 782 }, { 12, 0, 788 },
+ { 18, 0, 160 }, { 20, 0, 117 }, { 4, 10, 717 }, { 4, 0, 925 },
+ { 5, 0, 803 }, { 8, 0, 698 }, { 10, 0, 828 }, { 6, 0, 1416 },
+ { 4, 0, 610 }, { 11, 0, 992 }, { 6, 0, 878 }, { 6, 0, 1477 },
+ { 7, 0, 1847 }, { 10, 11, 531 }, { 9, 11, 539 }, { 6, 11, 272 },
+ { 5, 0, 383 }, { 6, 0, 1404 }, { 4, 10, 489 }, { 4, 11, 9 },
+ { 5, 11, 128 }, { 7, 11, 368 }, { 11, 11, 480 }, { 20, 11, 3 },
+ { 8, 0, 986 }, { 9, 0, 660 }, { 10, 0, 347 }, { 7, 10, 892 },
+ { 8, 11, 682 }, { 7, 0, 572 }, { 9, 0, 592 }, { 11, 0, 680 },
+ { 12, 0, 356 }, { 12, 0, 550 }, { 7, 0, 1411 }, { 10, 11, 527 },
+ { 4, 11, 2 }, { 7, 11, 545 }, { 7, 11, 894 }, { 9, 10, 473 },
+ { 11, 0, 64 }, { 7, 11, 481 }, { 7, 10, 819 }, { 9, 10, 26 },
+ { 9, 10, 392 }, { 9, 11, 792 }, { 10, 10, 152 }, { 10, 10, 226 },
+ { 12, 10, 276 }, { 12, 10, 426 }, { 12, 10, 589 }, { 13, 10, 460 },
+ { 15, 10, 97 }, { 19, 10, 48 }, { 20, 10, 104 }, { 7, 10, 51 },
+ { 8, 11, 445 }, { 8, 11, 646 }, { 7, 0, 606 }, { 4, 10, 674 },
+ { 6, 0, 1829 }, { 6, 0, 1830 }, { 4, 10, 770 }, { 5, 10, 79 },
+ { 7, 10, 1027 }, { 7, 10, 1477 }, { 11, 10, 52 }, { 5, 11, 530 },
+ { 14, 11, 113 }, { 6, 10, 1666 }, { 7, 0, 748 }, { 11, 0, 700 },
+ { 6, 10, 195 }, { 5, 10, 789 }, { 9, 0, 87 }, { 10, 0, 365 },
+ { 4, 10, 251 }, { 4, 10, 688 }, { 7, 10, 513 }, { 7, 10, 1284 },
+ { 8, 11, 111 }, { 5, 0, 127 }, { 6, 0, 198 }, { 12, 0, 83 },
+ { 5, 11, 556 }, { 5, 10, 889 }, { 4, 10, 160 }, { 5, 10, 330 },
+ { 7, 10, 1434 }, { 8, 10, 174 }, { 5, 0, 276 }, { 6, 0, 55 },
+ { 7, 0, 1369 }, { 10, 0, 864 }, { 8, 11, 16 }, { 12, 11, 568 },
+ { 6, 0, 1752 }, { 8, 0, 726 }, { 7, 0, 1066 }, { 5, 0, 764 },
+ { 6, 11, 186 }, { 9, 11, 426 }, { 11, 0, 683 }, { 11, 11, 683 },
+ { 6, 0, 309 }, { 7, 0, 331 }, { 10, 0, 550 }, { 5, 10, 374 },
+ { 6, 0, 1212 }, { 6, 0, 1852 }, { 7, 0, 1062 }, { 8, 0, 874 },
+ { 8, 0, 882 }, { 10, 0, 936 }, { 4, 11, 585 }, { 6, 0, 1364 },
+ { 7, 0, 986 }, { 5, 10, 731 }, { 6, 0, 723 }, { 6, 0, 1408 },
+ { 10, 0, 381 }, { 7, 0, 1573 }, { 6, 0, 1025 }, { 4, 10, 626 },
+ { 5, 10, 642 }, { 6, 10, 425 }, { 10, 10, 202 }, { 11, 10, 141 },
+ { 4, 11, 93 }, { 5, 11, 252 }, { 6, 11, 229 }, { 7, 11, 291 },
+ { 9, 11, 550 }, { 11, 11, 644 }, { 9, 11, 749 }, { 9, 11, 162 },
+ { 4, 11, 381 }, { 7, 0, 1559 }, { 6, 0, 194 }, { 7, 0, 133 },
+ { 10, 0, 493 }, { 10, 0, 570 }, { 11, 0, 664 }, { 5, 0, 24 },
+ { 5, 0, 569 }, { 6, 0, 3 }, { 6, 0, 119 }, { 6, 0, 143 },
+ { 6, 0, 440 }, { 7, 0, 295 }, { 7, 0, 599 }, { 7, 0, 1686 },
+ { 7, 0, 1854 }, { 8, 0, 424 }, { 9, 0, 43 }, { 9, 0, 584 },
+ { 9, 0, 760 }, { 10, 0, 148 }, { 10, 0, 328 }, { 11, 0, 159 },
+ { 11, 0, 253 }, { 11, 0, 506 }, { 12, 0, 487 }, { 12, 0, 531 },
+ { 6, 0, 661 }, { 6, 0, 1517 }, { 8, 10, 835 }, { 23, 10, 17 },
+ { 5, 0, 14 }, { 5, 0, 892 }, { 6, 0, 283 }, { 7, 0, 234 },
+ { 8, 0, 537 }, { 11, 0, 541 }, { 4, 0, 126 }, { 8, 0, 635 },
+ { 19, 0, 34 }, { 4, 0, 316 }, { 4, 0, 495 }, { 7, 0, 1561 },
+ { 4, 11, 187 }, { 5, 11, 184 }, { 5, 11, 690 }, { 7, 11, 1869 },
+ { 10, 11, 756 }, { 11, 11, 783 }, { 4, 0, 998 }, { 9, 0, 861 },
+ { 8, 0, 1009 }, { 11, 11, 292 }, { 5, 11, 21 }, { 6, 11, 77 },
+ { 6, 11, 157 }, { 7, 11, 974 }, { 7, 11, 1301 }, { 7, 11, 1339 },
+ { 7, 11, 1490 }, { 7, 11, 1873 }, { 9, 11, 628 }, { 7, 11, 1283 },
+ { 9, 11, 227 }, { 9, 11, 499 }, { 10, 11, 341 }, { 11, 11, 325 },
+ { 11, 11, 408 }, { 14, 11, 180 }, { 15, 11, 144 }, { 18, 11, 47 },
+ { 19, 11, 49 }, { 4, 0, 64 }, { 5, 0, 352 }, { 5, 0, 720 },
+ { 6, 0, 368 }, { 11, 0, 359 }, { 5, 10, 384 }, { 8, 10, 455 },
+ { 12, 10, 48 }, { 5, 10, 264 }, { 6, 10, 184 }, { 7, 0, 1577 },
+ { 10, 0, 304 }, { 10, 0, 549 }, { 12, 0, 365 }, { 13, 0, 220 },
+ { 13, 0, 240 }, { 14, 0, 33 }, { 6, 0, 1107 }, { 6, 0, 929 },
+ { 7, 0, 1142 }, { 6, 0, 175 }, { 9, 0, 289 }, { 5, 0, 432 },
+ { 5, 0, 913 }, { 6, 0, 279 }, { 7, 0, 219 }, { 5, 10, 633 },
+ { 7, 10, 1323 }, { 7, 0, 785 }, { 7, 10, 359 }, { 8, 10, 243 },
+ { 12, 10, 175 }, { 11, 0, 595 }, { 4, 10, 105 }, { 8, 11, 398 },
+ { 9, 11, 681 }, { 11, 11, 632 }, { 12, 0, 80 }, { 5, 0, 931 },
+ { 6, 0, 1698 }, { 14, 11, 241 }, { 6, 11, 20 }, { 6, 0, 1323 },
+ { 11, 0, 526 }, { 11, 0, 939 }, { 13, 0, 290 }, { 5, 0, 774 },
+ { 6, 0, 780 }, { 6, 0, 1637 }, { 6, 0, 1686 }, { 6, 0, 1751 },
+ { 8, 0, 559 }, { 13, 0, 109 }, { 13, 0, 127 }, { 7, 0, 1167 },
+ { 11, 0, 934 }, { 13, 0, 391 }, { 17, 0, 76 }, { 7, 11, 709 },
+ { 7, 0, 963 }, { 6, 0, 260 }, { 7, 0, 1484 }, { 6, 0, 573 },
+ { 4, 10, 758 }, { 11, 11, 941 }, { 7, 10, 1649 }, { 17, 11, 36 },
+ { 4, 0, 292 }, { 9, 0, 580 }, { 4, 0, 736 }, { 5, 0, 871 },
+ { 6, 0, 1689 }, { 7, 0, 1944 }, { 7, 11, 945 }, { 11, 11, 713 },
+ { 11, 11, 744 }, { 6, 0, 1164 }, { 7, 11, 937 }, { 6, 0, 1922 },
+ { 9, 0, 982 }, { 15, 0, 173 }, { 15, 0, 178 }, { 15, 0, 200 },
+ { 18, 0, 189 }, { 18, 0, 207 }, { 21, 0, 47 }, { 7, 11, 1652 },
+ { 7, 0, 1695 }, { 11, 10, 128 }, { 6, 0, 63 }, { 7, 0, 920 },
+ { 5, 0, 793 }, { 15, 11, 134 }, { 5, 10, 918 }, { 5, 0, 67 },
+ { 6, 0, 62 }, { 6, 0, 374 }, { 7, 0, 1391 }, { 9, 0, 790 },
+ { 12, 0, 47 }, { 4, 11, 579 }, { 5, 11, 226 }, { 5, 11, 323 },
+ { 7, 11, 960 }, { 10, 11, 784 }, { 13, 11, 191 }, { 4, 0, 391 },
+ { 7, 0, 1169 }, { 9, 0, 443 }, { 13, 11, 232 }, { 18, 11, 35 },
+ { 4, 10, 340 }, { 4, 0, 271 }, { 9, 11, 313 }, { 5, 11, 973 },
+ { 9, 11, 659 }, { 6, 0, 1140 }, { 6, 11, 135 }, { 7, 11, 1176 },
+ { 4, 0, 253 }, { 5, 0, 544 }, { 7, 0, 300 }, { 9, 0, 340 },
+ { 7, 0, 897 }, { 5, 10, 985 }, { 7, 10, 509 }, { 17, 10, 96 },
+ { 10, 11, 735 }, { 7, 10, 1919 }, { 10, 0, 890 }, { 5, 0, 818 },
+ { 6, 0, 1122 }, { 5, 0, 53 }, { 5, 0, 541 }, { 6, 0, 94 },
+ { 6, 0, 499 }, { 7, 0, 230 }, { 11, 0, 321 }, { 4, 0, 920 },
+ { 5, 0, 25 }, { 5, 0, 790 }, { 6, 0, 457 }, { 7, 0, 853 },
+ { 8, 0, 788 }, { 14, 11, 31 }, { 4, 10, 247 }, { 7, 11, 314 },
+ { 4, 0, 468 }, { 7, 0, 243 }, { 6, 10, 337 }, { 7, 10, 494 },
+ { 8, 10, 27 }, { 8, 10, 599 }, { 10, 10, 153 }, { 4, 10, 184 },
+ { 5, 10, 390 }, { 7, 10, 618 }, { 7, 10, 1456 }, { 11, 10, 710 },
+ { 6, 0, 870 }, { 6, 0, 1238 }, { 6, 0, 1765 }, { 10, 0, 853 },
+ { 10, 0, 943 }, { 14, 0, 437 }, { 14, 0, 439 }, { 14, 0, 443 },
+ { 14, 0, 446 }, { 14, 0, 452 }, { 14, 0, 469 }, { 14, 0, 471 },
+ { 14, 0, 473 }, { 16, 0, 93 }, { 16, 0, 102 }, { 16, 0, 110 },
+ { 20, 0, 121 }, { 4, 0, 605 }, { 7, 0, 518 }, { 7, 0, 1282 },
+ { 7, 0, 1918 }, { 10, 0, 180 }, { 11, 0, 218 }, { 5, 0, 822 },
+ { 4, 0, 634 }, { 11, 0, 916 }, { 14, 0, 419 }, { 6, 11, 281 },
+ { 7, 11, 6 }, { 8, 11, 282 }, { 8, 11, 480 }, { 8, 11, 499 },
+ { 9, 11, 198 }, { 10, 11, 143 }, { 10, 11, 169 }, { 10, 11, 211 },
+ { 10, 11, 417 }, { 10, 11, 574 }, { 11, 11, 147 }, { 11, 11, 395 },
+ { 12, 11, 75 }, { 12, 11, 407 }, { 12, 11, 608 }, { 13, 11, 500 },
+ { 14, 11, 251 }, { 6, 0, 898 }, { 6, 0, 36 }, { 7, 0, 658 },
+ { 8, 0, 454 }, { 22, 11, 48 }, { 5, 11, 674 }, { 7, 11, 1776 },
+ { 4, 11, 419 }, { 10, 10, 227 }, { 11, 10, 497 }, { 11, 10, 709 },
+ { 12, 10, 415 }, { 6, 10, 360 }, { 7, 10, 1664 }, { 8, 10, 478 },
+ { 9, 0, 806 }, { 12, 11, 508 }, { 14, 11, 102 }, { 14, 11, 226 },
+ { 16, 11, 57 }, { 7, 11, 1123 }, { 4, 11, 138 }, { 7, 11, 1012 },
+ { 7, 11, 1280 }, { 9, 11, 76 }, { 5, 11, 29 }, { 12, 11, 638 },
+ { 8, 10, 699 }, { 6, 0, 1326 }, { 4, 0, 104 }, { 7, 11, 735 },
+ { 4, 10, 739 }, { 6, 0, 1331 }, { 7, 0, 260 }, { 7, 11, 260 },
+ { 7, 11, 1063 }, { 7, 0, 45 }, { 9, 0, 542 }, { 9, 0, 566 },
+ { 10, 0, 728 }, { 9, 10, 869 }, { 4, 10, 67 }, { 5, 10, 422 },
+ { 7, 10, 1037 }, { 7, 10, 1289 }, { 7, 10, 1555 }, { 9, 10, 741 },
+ { 17, 10, 108 }, { 11, 0, 263 }, { 6, 0, 1516 }, { 14, 0, 146 },
+ { 15, 0, 42 }, { 16, 0, 23 }, { 17, 0, 86 }, { 18, 0, 17 },
+ { 10, 0, 468 }, { 8, 0, 1005 }, { 4, 11, 17 }, { 5, 11, 23 },
+ { 7, 11, 995 }, { 11, 11, 383 }, { 11, 11, 437 }, { 12, 11, 460 },
+ { 12, 11, 532 }, { 7, 0, 87 }, { 14, 0, 288 }, { 10, 10, 96 },
+ { 7, 11, 626 }, { 16, 10, 26 }, { 7, 0, 988 }, { 7, 0, 1939 },
+ { 9, 0, 64 }, { 9, 0, 502 }, { 12, 0, 22 }, { 12, 0, 34 },
+ { 13, 0, 12 }, { 13, 0, 234 }, { 19, 0, 77 }, { 13, 0, 133 },
+ { 8, 10, 203 }, { 11, 10, 823 }, { 11, 10, 846 }, { 12, 10, 482 },
+ { 13, 10, 277 }, { 13, 10, 302 }, { 13, 10, 464 }, { 14, 10, 205 },
+ { 14, 10, 221 }, { 4, 10, 449 }, { 5, 10, 718 }, { 7, 0, 141 },
+ { 6, 0, 1842 }, { 8, 0, 872 }, { 8, 11, 70 }, { 12, 11, 171 },
+ { 13, 11, 272 }, { 4, 10, 355 }, { 6, 10, 311 }, { 9, 10, 256 },
+ { 10, 10, 404 }, { 4, 0, 619 }, { 9, 0, 261 }, { 10, 11, 233 },
+ { 10, 10, 758 }, { 11, 11, 76 }, { 5, 0, 246 }, { 8, 0, 189 },
+ { 9, 0, 355 }, { 9, 0, 512 }, { 10, 0, 124 }, { 10, 0, 453 },
+ { 11, 0, 143 }, { 11, 0, 416 }, { 11, 0, 859 }, { 13, 0, 341 },
+ { 6, 11, 442 }, { 5, 10, 827 }, { 5, 10, 64 }, { 12, 10, 581 },
+ { 4, 10, 442 }, { 7, 10, 1047 }, { 7, 10, 1352 }, { 7, 10, 1643 },
+ { 6, 11, 1709 }, { 5, 0, 678 }, { 6, 0, 305 }, { 7, 0, 775 },
+ { 7, 0, 1065 }, { 5, 10, 977 }, { 11, 11, 69 }, { 12, 11, 105 },
+ { 12, 11, 117 }, { 13, 11, 213 }, { 14, 11, 13 }, { 14, 11, 62 },
+ { 14, 11, 177 }, { 14, 11, 421 }, { 15, 11, 19 }, { 18, 11, 141 },
+ { 9, 11, 309 }, { 5, 0, 35 }, { 7, 0, 862 }, { 7, 0, 1886 },
+ { 10, 0, 179 }, { 8, 0, 285 }, { 4, 0, 517 }, { 7, 11, 976 },
+ { 9, 11, 146 }, { 10, 11, 206 }, { 10, 11, 596 }, { 13, 11, 218 },
+ { 14, 11, 153 }, { 4, 10, 254 }, { 6, 0, 214 }, { 12, 0, 540 },
+ { 4, 10, 275 }, { 7, 10, 1219 }, { 12, 10, 376 }, { 8, 0, 667 },
+ { 11, 0, 403 }, { 18, 0, 83 }, { 12, 0, 74 }, { 10, 11, 648 },
+ { 11, 11, 671 }, { 15, 11, 46 }, { 7, 0, 125 }, { 6, 10, 1753 },
+ { 5, 0, 761 }, { 6, 0, 912 }, { 4, 11, 518 }, { 6, 10, 369 },
+ { 6, 10, 502 }, { 7, 10, 1036 }, { 7, 11, 1136 }, { 8, 10, 348 },
+ { 9, 10, 452 }, { 10, 10, 26 }, { 11, 10, 224 }, { 11, 10, 387 },
+ { 11, 10, 772 }, { 12, 10, 95 }, { 12, 10, 629 }, { 13, 10, 195 },
+ { 13, 10, 207 }, { 13, 10, 241 }, { 14, 10, 260 }, { 14, 10, 270 },
+ { 15, 10, 140 }, { 10, 0, 131 }, { 12, 0, 72 }, { 4, 10, 269 },
+ { 5, 10, 480 }, { 7, 10, 532 }, { 7, 10, 1197 }, { 7, 10, 1358 },
+ { 8, 10, 291 }, { 11, 10, 349 }, { 14, 10, 396 }, { 8, 11, 689 },
+ { 9, 11, 863 }, { 8, 0, 333 }, { 10, 0, 182 }, { 4, 11, 18 },
+ { 7, 11, 145 }, { 7, 11, 444 }, { 7, 11, 1278 }, { 8, 11, 49 },
+ { 8, 11, 400 }, { 9, 11, 71 }, { 9, 11, 250 }, { 10, 11, 459 },
+ { 12, 11, 160 }, { 16, 11, 24 }, { 14, 11, 35 }, { 14, 11, 191 },
+ { 7, 11, 1864 }, { 7, 0, 1338 }, { 20, 10, 15 }, { 14, 0, 94 },
+ { 15, 0, 65 }, { 16, 0, 4 }, { 16, 0, 77 }, { 16, 0, 80 },
+ { 17, 0, 5 }, { 12, 11, 82 }, { 15, 11, 36 }, { 5, 11, 1010 },
+ { 5, 0, 449 }, { 5, 0, 646 }, { 7, 0, 86 }, { 8, 0, 103 },
+ { 7, 10, 657 }, { 7, 0, 2028 }, { 10, 0, 641 }, { 8, 10, 533 },
+ { 6, 0, 1 }, { 11, 11, 970 }, { 5, 11, 87 }, { 7, 11, 313 },
+ { 7, 11, 1103 }, { 10, 11, 112 }, { 10, 11, 582 }, { 11, 11, 389 },
+ { 11, 11, 813 }, { 12, 11, 385 }, { 13, 11, 286 }, { 14, 11, 124 },
+ { 18, 11, 108 }, { 6, 0, 869 }, { 4, 11, 267 }, { 6, 0, 277 },
+ { 7, 0, 1274 }, { 7, 0, 1386 }, { 18, 0, 87 }, { 6, 0, 187 },
+ { 7, 0, 39 }, { 7, 0, 1203 }, { 8, 0, 380 }, { 14, 0, 117 },
+ { 21, 0, 28 }, { 4, 10, 211 }, { 4, 10, 332 }, { 5, 10, 335 },
+ { 6, 10, 238 }, { 7, 10, 269 }, { 7, 10, 811 }, { 7, 10, 1797 },
+ { 8, 10, 836 }, { 9, 10, 507 }, { 13, 10, 242 }, { 4, 0, 785 },
+ { 5, 0, 368 }, { 6, 0, 297 }, { 7, 0, 793 }, { 11, 0, 938 },
+ { 7, 0, 464 }, { 8, 0, 558 }, { 11, 0, 105 }, { 12, 0, 231 },
+ { 14, 0, 386 }, { 15, 0, 102 }, { 20, 0, 75 }, { 5, 10, 1009 },
+ { 8, 0, 877 }, { 12, 0, 731 }, { 11, 11, 289 }, { 10, 11, 249 },
+ { 11, 11, 209 }, { 4, 11, 561 }, { 6, 0, 1608 }, { 4, 11, 760 },
+ { 6, 0, 1429 }, { 9, 11, 154 }, { 12, 11, 485 }, { 5, 10, 228 },
+ { 6, 10, 203 }, { 7, 10, 156 }, { 8, 10, 347 }, { 9, 10, 265 },
+ { 7, 0, 1010 }, { 11, 0, 733 }, { 11, 0, 759 }, { 13, 0, 34 },
+ { 14, 0, 427 }, { 18, 0, 45 }, { 7, 10, 1131 }, { 7, 10, 1468 },
+ { 8, 11, 255 }, { 7, 0, 1656 }, { 9, 0, 369 }, { 10, 0, 338 },
+ { 10, 0, 490 }, { 11, 0, 154 }, { 11, 0, 545 }, { 11, 0, 775 },
+ { 13, 0, 77 }, { 13, 0, 274 }, { 5, 11, 621 }, { 6, 0, 1038 },
+ { 4, 11, 368 }, { 7, 11, 641 }, { 6, 0, 2010 }, { 8, 0, 979 },
+ { 8, 0, 985 }, { 10, 0, 951 }, { 10, 0, 1011 }, { 6, 0, 1005 },
+ { 19, 0, 121 }, { 5, 10, 291 }, { 5, 10, 318 }, { 7, 10, 765 },
+ { 9, 10, 389 }, { 12, 10, 548 }, { 5, 0, 20 }, { 6, 0, 298 },
+ { 7, 0, 659 }, { 9, 0, 219 }, { 7, 0, 1440 }, { 11, 0, 854 },
+ { 11, 0, 872 }, { 11, 0, 921 }, { 12, 0, 551 }, { 13, 0, 472 },
+ { 14, 0, 367 }, { 5, 0, 490 }, { 6, 0, 615 }, { 6, 0, 620 },
+ { 7, 0, 683 }, { 6, 0, 1070 }, { 6, 0, 1597 }, { 11, 0, 522 },
+ { 4, 0, 439 }, { 8, 0, 669 }, { 6, 0, 766 }, { 6, 0, 1143 },
+ { 6, 0, 1245 }, { 10, 10, 525 }, { 11, 10, 82 }, { 9, 11, 92 },
+ { 19, 11, 91 }, { 6, 0, 668 }, { 6, 0, 1218 }, { 6, 11, 525 },
+ { 9, 11, 876 }, { 12, 11, 284 }, { 4, 0, 233 }, { 8, 0, 547 },
+ { 4, 10, 422 }, { 5, 10, 355 }, { 17, 10, 0 }, { 6, 11, 300 },
+ { 7, 11, 1515 }, { 4, 0, 482 }, { 9, 10, 905 }, { 4, 0, 886 },
+ { 7, 0, 346 }, { 5, 11, 594 }, { 5, 10, 865 }, { 5, 10, 914 },
+ { 6, 10, 1625 }, { 7, 0, 334 }, { 5, 0, 795 }, { 6, 0, 1741 },
+ { 5, 10, 234 }, { 7, 10, 1383 }, { 6, 11, 1641 }, { 8, 11, 820 },
+ { 7, 0, 371 }, { 7, 11, 1313 }, { 10, 11, 660 }, { 7, 10, 1312 },
+ { 7, 0, 622 }, { 7, 0, 625 }, { 7, 0, 1750 }, { 7, 0, 339 },
+ { 4, 0, 203 }, { 7, 0, 1936 }, { 15, 0, 29 }, { 16, 0, 38 },
+ { 15, 11, 29 }, { 16, 11, 38 }, { 5, 0, 338 }, { 7, 0, 1256 },
+ { 7, 10, 1493 }, { 10, 0, 130 }, { 6, 10, 421 }, { 7, 10, 61 },
+ { 7, 10, 1540 }, { 10, 10, 501 }, { 6, 11, 389 }, { 7, 11, 149 },
+ { 9, 11, 142 }, { 10, 11, 94 }, { 9, 10, 341 }, { 11, 0, 678 },
+ { 12, 0, 307 }, { 14, 10, 98 }, { 6, 11, 8 }, { 7, 11, 1881 },
+ { 8, 11, 91 }, { 7, 0, 2044 }, { 6, 0, 770 }, { 6, 0, 802 },
+ { 6, 0, 812 }, { 7, 0, 311 }, { 9, 0, 308 }, { 12, 0, 255 },
+ { 6, 10, 102 }, { 7, 10, 72 }, { 15, 10, 142 }, { 19, 10, 67 },
+ { 23, 10, 30 }, { 7, 10, 823 }, { 7, 0, 1266 }, { 7, 11, 1746 },
+ { 7, 10, 1870 }, { 4, 0, 400 }, { 5, 0, 267 }, { 7, 0, 232 },
+ { 7, 11, 24 }, { 11, 11, 542 }, { 11, 11, 852 }, { 7, 11, 1739 },
+ { 4, 11, 503 }, { 7, 11, 1661 }, { 5, 11, 130 }, { 7, 11, 1314 },
+ { 9, 11, 610 }, { 10, 11, 718 }, { 11, 11, 601 }, { 11, 11, 819 },
+ { 11, 11, 946 }, { 12, 11, 536 }, { 10, 11, 149 }, { 11, 11, 280 },
+ { 14, 11, 336 }, { 7, 0, 739 }, { 11, 0, 690 }, { 7, 11, 1946 },
+ { 8, 10, 48 }, { 8, 10, 88 }, { 8, 10, 582 }, { 8, 10, 681 },
+ { 9, 10, 373 }, { 9, 10, 864 }, { 11, 10, 157 }, { 11, 10, 843 },
+ { 20, 10, 27 }, { 6, 0, 990 }, { 4, 10, 88 }, { 5, 10, 137 },
+ { 5, 10, 174 }, { 5, 10, 777 }, { 6, 10, 1664 }, { 6, 10, 1725 },
+ { 7, 10, 77 }, { 7, 10, 426 }, { 7, 10, 1317 }, { 7, 10, 1355 },
+ { 8, 10, 126 }, { 8, 10, 563 }, { 9, 10, 523 }, { 9, 10, 750 },
+ { 10, 10, 310 }, { 10, 10, 836 }, { 11, 10, 42 }, { 11, 10, 318 },
+ { 11, 10, 731 }, { 12, 10, 68 }, { 12, 10, 92 }, { 12, 10, 507 },
+ { 12, 10, 692 }, { 13, 10, 81 }, { 13, 10, 238 }, { 13, 10, 374 },
+ { 14, 10, 436 }, { 18, 10, 138 }, { 19, 10, 78 }, { 19, 10, 111 },
+ { 20, 10, 55 }, { 20, 10, 77 }, { 20, 10, 92 }, { 13, 10, 418 },
+ { 7, 0, 1831 }, { 4, 10, 938 }, { 6, 0, 776 }, { 6, 0, 915 },
+ { 10, 10, 351 }, { 5, 11, 348 }, { 6, 11, 522 }, { 6, 10, 1668 },
+ { 7, 10, 1499 }, { 8, 10, 117 }, { 9, 10, 314 }, { 10, 10, 174 },
+ { 7, 10, 707 }, { 4, 0, 613 }, { 5, 10, 403 }, { 4, 11, 392 },
+ { 5, 11, 433 }, { 9, 11, 633 }, { 11, 11, 629 }, { 5, 0, 763 },
+ { 4, 0, 878 }, { 4, 0, 977 }, { 4, 0, 100 }, { 6, 0, 463 },
+ { 4, 10, 44 }, { 5, 10, 311 }, { 7, 10, 639 }, { 7, 10, 762 },
+ { 7, 10, 1827 }, { 9, 10, 8 }, { 9, 10, 462 }, { 20, 10, 83 },
+ { 6, 11, 234 }, { 4, 10, 346 }, { 7, 10, 115 }, { 9, 10, 180 },
+ { 9, 10, 456 }, { 10, 10, 363 }, { 5, 0, 362 }, { 5, 0, 443 },
+ { 6, 0, 318 }, { 7, 0, 1019 }, { 11, 0, 623 }, { 5, 0, 463 },
+ { 8, 0, 296 }, { 7, 11, 140 }, { 7, 11, 1950 }, { 8, 11, 680 },
+ { 11, 11, 817 }, { 19, 11, 88 }, { 7, 11, 1222 }, { 10, 11, 386 },
+ { 14, 0, 137 }, { 4, 0, 454 }, { 7, 0, 1914 }, { 6, 11, 5 },
+ { 7, 10, 1051 }, { 9, 10, 545 }, { 11, 11, 249 }, { 12, 11, 313 },
+ { 16, 11, 66 }, { 17, 11, 26 }, { 7, 0, 1527 }, { 17, 0, 58 },
+ { 20, 11, 59 }, { 5, 0, 48 }, { 5, 0, 404 }, { 6, 0, 557 },
+ { 7, 0, 458 }, { 8, 0, 597 }, { 10, 0, 455 }, { 10, 0, 606 },
+ { 11, 0, 49 }, { 11, 0, 548 }, { 12, 0, 476 }, { 13, 0, 18 },
+ { 13, 0, 450 }, { 5, 11, 963 }, { 6, 11, 1773 }, { 5, 0, 729 },
+ { 10, 11, 586 }, { 5, 0, 442 }, { 7, 0, 1984 }, { 6, 0, 449 },
+ { 16, 0, 40 }, { 4, 0, 853 }, { 7, 11, 180 }, { 8, 11, 509 },
+ { 8, 11, 792 }, { 6, 10, 185 }, { 7, 10, 1899 }, { 9, 10, 875 },
+ { 11, 10, 673 }, { 6, 11, 524 }, { 12, 0, 227 }, { 4, 10, 327 },
+ { 5, 10, 478 }, { 7, 10, 1332 }, { 8, 10, 753 }, { 6, 0, 1491 },
+ { 5, 10, 1020 }, { 5, 10, 1022 }, { 4, 10, 103 }, { 5, 10, 401 },
+ { 4, 11, 931 }, { 4, 10, 499 }, { 7, 10, 1421 }, { 5, 0, 55 },
+ { 7, 0, 376 }, { 12, 0, 161 }, { 5, 0, 450 }, { 6, 0, 1174 },
+ { 6, 0, 1562 }, { 10, 0, 62 }, { 13, 0, 400 }, { 7, 11, 1837 },
+ { 12, 0, 207 }, { 7, 0, 869 }, { 4, 11, 773 }, { 5, 11, 618 },
+ { 9, 11, 756 }, { 4, 10, 96 }, { 4, 0, 213 }, { 7, 0, 223 },
+ { 8, 0, 80 }, { 7, 10, 968 }, { 4, 11, 90 }, { 5, 11, 337 },
+ { 5, 11, 545 }, { 7, 11, 754 }, { 9, 11, 186 }, { 10, 11, 72 },
+ { 10, 11, 782 }, { 11, 11, 513 }, { 11, 11, 577 }, { 11, 11, 610 },
+ { 11, 11, 889 }, { 11, 11, 961 }, { 12, 11, 354 }, { 12, 11, 362 },
+ { 12, 11, 461 }, { 12, 11, 595 }, { 13, 11, 79 }, { 15, 11, 121 },
+ { 7, 0, 381 }, { 7, 0, 806 }, { 7, 0, 820 }, { 8, 0, 354 },
+ { 8, 0, 437 }, { 8, 0, 787 }, { 9, 0, 657 }, { 10, 0, 58 },
+ { 10, 0, 339 }, { 10, 0, 749 }, { 11, 0, 914 }, { 12, 0, 162 },
+ { 13, 0, 75 }, { 14, 0, 106 }, { 14, 0, 198 }, { 14, 0, 320 },
+ { 14, 0, 413 }, { 18, 0, 43 }, { 8, 0, 747 }, { 8, 0, 954 },
+ { 6, 0, 1073 }, { 7, 0, 556 }, { 7, 11, 151 }, { 9, 11, 329 },
+ { 11, 11, 254 }, { 5, 0, 692 }, { 6, 0, 1395 }, { 6, 10, 563 },
+ { 9, 10, 224 }, { 6, 0, 191 }, { 4, 0, 804 }, { 9, 11, 187 },
+ { 10, 11, 36 }, { 17, 11, 44 }, { 18, 11, 64 }, { 7, 11, 165 },
+ { 7, 11, 919 }, { 8, 11, 517 }, { 4, 11, 506 }, { 5, 11, 295 },
+ { 7, 11, 1680 }, { 15, 11, 14 }, { 16, 11, 5 }, { 4, 0, 706 },
+ { 6, 0, 162 }, { 7, 0, 1960 }, { 8, 0, 831 }, { 7, 11, 1376 },
+ { 7, 11, 987 }, { 9, 11, 688 }, { 10, 11, 522 }, { 11, 11, 788 },
+ { 12, 11, 566 }, { 22, 0, 35 }, { 10, 0, 426 }, { 7, 0, 1235 },
+ { 7, 11, 1741 }, { 7, 11, 389 }, { 7, 11, 700 }, { 7, 11, 940 },
+ { 8, 11, 514 }, { 9, 11, 116 }, { 9, 11, 535 }, { 10, 11, 118 },
+ { 11, 11, 107 }, { 11, 11, 148 }, { 11, 11, 922 }, { 12, 11, 254 },
+ { 12, 11, 421 }, { 14, 11, 238 }, { 6, 0, 1234 }, { 4, 11, 743 },
+ { 4, 10, 910 }, { 5, 10, 832 }, { 7, 11, 1335 }, { 13, 0, 96 },
+ { 7, 11, 185 }, { 18, 0, 149 }, { 4, 0, 204 }, { 9, 0, 902 },
+ { 4, 11, 784 }, { 5, 11, 745 }, { 8, 0, 833 }, { 8, 0, 949 },
+ { 7, 0, 366 }, { 9, 0, 287 }, { 12, 0, 199 }, { 12, 0, 556 },
+ { 12, 0, 577 }, { 5, 11, 81 }, { 7, 11, 146 }, { 7, 11, 1342 },
+ { 7, 11, 1446 }, { 8, 11, 53 }, { 8, 11, 561 }, { 8, 11, 694 },
+ { 8, 11, 754 }, { 9, 11, 97 }, { 9, 11, 115 }, { 9, 11, 894 },
+ { 10, 11, 462 }, { 10, 11, 813 }, { 11, 11, 230 }, { 11, 11, 657 },
+ { 11, 11, 699 }, { 11, 11, 748 }, { 12, 11, 119 }, { 12, 11, 200 },
+ { 12, 11, 283 }, { 14, 11, 273 }, { 17, 11, 15 }, { 5, 11, 408 },
+ { 9, 11, 747 }, { 9, 11, 498 }, { 12, 11, 181 }, { 6, 0, 2020 },
+ { 8, 0, 992 }, { 5, 0, 356 }, { 7, 0, 224 }, { 6, 0, 784 },
+ { 7, 0, 630 }, { 9, 0, 567 }, { 11, 0, 150 }, { 11, 0, 444 },
+ { 13, 0, 119 }, { 8, 10, 528 }, { 9, 10, 348 }, { 6, 0, 539 },
+ { 4, 10, 20 }, { 5, 10, 616 }, { 14, 0, 27 }, { 7, 11, 30 },
+ { 8, 11, 86 }, { 8, 11, 315 }, { 8, 11, 700 }, { 9, 11, 576 },
+ { 9, 11, 858 }, { 11, 11, 310 }, { 11, 11, 888 }, { 11, 11, 904 },
+ { 12, 11, 361 }, { 13, 11, 248 }, { 10, 11, 839 }, { 6, 0, 755 },
+ { 6, 0, 1063 }, { 7, 10, 1091 }, { 7, 10, 1765 }, { 6, 11, 428 },
+ { 7, 11, 524 }, { 8, 11, 169 }, { 8, 11, 234 }, { 9, 11, 480 },
+ { 10, 11, 646 }, { 11, 0, 814 }, { 7, 11, 1462 }, { 11, 11, 659 },
+ { 4, 10, 26 }, { 5, 10, 429 }, { 6, 10, 245 }, { 7, 10, 704 },
+ { 7, 10, 1379 }, { 7, 10, 1474 }, { 7, 11, 1205 }, { 10, 11, 637 },
+ { 11, 11, 803 }, { 4, 10, 621 }, { 8, 0, 987 }, { 4, 11, 266 },
+ { 8, 11, 4 }, { 9, 11, 39 }, { 10, 11, 166 }, { 11, 11, 918 },
+ { 12, 11, 635 }, { 20, 11, 10 }, { 22, 11, 27 }, { 22, 11, 43 },
+ { 4, 0, 235 }, { 7, 0, 255 }, { 4, 0, 194 }, { 5, 0, 584 },
+ { 6, 0, 384 }, { 7, 0, 583 }, { 10, 0, 761 }, { 11, 0, 760 },
+ { 11, 0, 851 }, { 5, 10, 542 }, { 6, 0, 1086 }, { 5, 10, 868 },
+ { 8, 0, 1016 }, { 8, 0, 1018 }, { 7, 0, 1396 }, { 7, 11, 1396 },
+ { 8, 10, 433 }, { 7, 10, 1495 }, { 10, 10, 215 }, { 13, 10, 124 },
+ { 7, 11, 157 }, { 8, 11, 279 }, { 9, 11, 759 }, { 16, 11, 31 },
+ { 16, 11, 39 }, { 16, 11, 75 }, { 18, 11, 24 }, { 20, 11, 42 },
+ { 24, 11, 1 }, { 5, 0, 562 }, { 6, 11, 604 }, { 6, 0, 913 },
+ { 5, 0, 191 }, { 9, 0, 271 }, { 4, 0, 470 }, { 6, 0, 153 },
+ { 7, 0, 1503 }, { 7, 0, 1923 }, { 10, 0, 701 }, { 11, 0, 132 },
+ { 11, 0, 227 }, { 11, 0, 320 }, { 11, 0, 436 }, { 11, 0, 525 },
+ { 11, 0, 855 }, { 11, 0, 873 }, { 12, 0, 41 }, { 12, 0, 286 },
+ { 13, 0, 103 }, { 13, 0, 284 }, { 14, 0, 255 }, { 14, 0, 262 },
+ { 15, 0, 117 }, { 15, 0, 127 }, { 7, 0, 475 }, { 12, 0, 45 },
+ { 19, 10, 112 }, { 4, 11, 567 }, { 9, 11, 859 }, { 6, 0, 713 },
+ { 6, 0, 969 }, { 6, 0, 1290 }, { 6, 0, 1551 }, { 5, 0, 327 },
+ { 6, 0, 552 }, { 6, 0, 1292 }, { 7, 0, 1754 }, { 9, 0, 604 },
+ { 4, 0, 223 }, { 6, 0, 359 }, { 11, 0, 3 }, { 13, 0, 108 },
+ { 14, 0, 89 }, { 16, 0, 22 }, { 5, 11, 762 }, { 7, 11, 1880 },
+ { 9, 11, 680 }, { 11, 11, 798 }, { 5, 0, 80 }, { 6, 0, 405 },
+ { 7, 0, 403 }, { 7, 0, 1502 }, { 8, 0, 456 }, { 9, 0, 487 },
+ { 9, 0, 853 }, { 9, 0, 889 }, { 10, 0, 309 }, { 11, 0, 721 },
+ { 11, 0, 994 }, { 12, 0, 430 }, { 13, 0, 165 }, { 5, 11, 298 },
+ { 4, 10, 647 }, { 6, 0, 2016 }, { 18, 10, 10 }, { 18, 11, 10 },
+ { 4, 0, 453 }, { 5, 0, 887 }, { 6, 0, 535 }, { 8, 0, 6 },
+ { 8, 0, 543 }, { 8, 0, 826 }, { 8, 0, 975 }, { 10, 0, 961 },
+ { 10, 0, 962 }, { 10, 10, 220 }, { 6, 0, 1891 }, { 6, 0, 1893 },
+ { 9, 0, 916 }, { 9, 0, 965 }, { 9, 0, 972 }, { 12, 0, 801 },
+ { 12, 0, 859 }, { 12, 0, 883 }, { 15, 0, 226 }, { 21, 0, 51 },
+ { 4, 10, 109 }, { 7, 11, 267 }, { 7, 11, 92 }, { 7, 11, 182 },
+ { 8, 11, 453 }, { 9, 11, 204 }, { 11, 11, 950 }, { 12, 11, 94 },
+ { 12, 11, 644 }, { 16, 11, 20 }, { 16, 11, 70 }, { 16, 11, 90 },
+ { 19, 11, 55 }, { 6, 10, 1746 }, { 6, 11, 71 }, { 7, 11, 845 },
+ { 7, 11, 1308 }, { 8, 11, 160 }, { 9, 11, 318 }, { 5, 0, 101 },
+ { 6, 0, 88 }, { 7, 0, 263 }, { 7, 0, 628 }, { 7, 0, 1677 },
+ { 8, 0, 349 }, { 9, 0, 100 }, { 10, 0, 677 }, { 14, 0, 169 },
+ { 14, 0, 302 }, { 14, 0, 313 }, { 15, 0, 48 }, { 15, 0, 84 },
+ { 7, 11, 237 }, { 8, 11, 664 }, { 9, 11, 42 }, { 9, 11, 266 },
+ { 9, 11, 380 }, { 9, 11, 645 }, { 10, 11, 177 }, { 10, 11, 276 },
+ { 10, 11, 69 }, { 4, 0, 310 }, { 7, 0, 708 }, { 7, 0, 996 },
+ { 9, 0, 795 }, { 10, 0, 390 }, { 10, 0, 733 }, { 11, 0, 451 },
+ { 12, 0, 249 }, { 14, 0, 115 }, { 14, 0, 286 }, { 15, 0, 100 },
+ { 5, 0, 587 }, { 4, 10, 40 }, { 10, 10, 67 }, { 11, 10, 117 },
+ { 11, 10, 768 }, { 11, 10, 935 }, { 6, 0, 1942 }, { 7, 0, 512 },
+ { 8, 0, 983 }, { 7, 10, 992 }, { 8, 10, 301 }, { 9, 10, 722 },
+ { 12, 10, 63 }, { 13, 10, 29 }, { 14, 10, 161 }, { 15, 10, 18 },
+ { 8, 11, 76 }, { 11, 10, 923 }, { 6, 0, 645 }, { 6, 0, 851 },
+ { 4, 0, 498 }, { 4, 11, 293 }, { 7, 0, 217 }, { 8, 0, 140 },
+ { 10, 0, 610 }, { 14, 11, 352 }, { 17, 11, 53 }, { 18, 11, 146 },
+ { 18, 11, 152 }, { 19, 11, 11 }, { 22, 11, 54 }, { 6, 0, 1448 },
+ { 10, 11, 841 }, { 5, 0, 905 }, { 4, 11, 605 }, { 7, 11, 518 },
+ { 7, 11, 1282 }, { 7, 11, 1918 }, { 10, 11, 180 }, { 11, 11, 218 },
+ { 11, 11, 917 }, { 7, 10, 825 }, { 12, 10, 328 }, { 4, 0, 456 },
+ { 7, 0, 105 }, { 7, 0, 358 }, { 7, 0, 1637 }, { 8, 0, 643 },
+ { 11, 0, 483 }, { 6, 0, 792 }, { 6, 11, 96 }, { 7, 11, 1426 },
+ { 9, 11, 691 }, { 4, 11, 651 }, { 5, 11, 289 }, { 7, 11, 688 },
+ { 8, 11, 35 }, { 9, 11, 511 }, { 10, 11, 767 }, { 19, 11, 118 },
+ { 22, 0, 56 }, { 5, 0, 243 }, { 5, 0, 535 }, { 6, 10, 204 },
+ { 10, 10, 320 }, { 10, 10, 583 }, { 13, 10, 502 }, { 14, 10, 72 },
+ { 14, 10, 274 }, { 14, 10, 312 }, { 14, 10, 344 }, { 15, 10, 159 },
+ { 16, 10, 62 }, { 16, 10, 69 }, { 17, 10, 30 }, { 18, 10, 42 },
+ { 18, 10, 53 }, { 18, 10, 84 }, { 18, 10, 140 }, { 19, 10, 68 },
+ { 19, 10, 85 }, { 20, 10, 5 }, { 20, 10, 45 }, { 20, 10, 101 },
+ { 22, 10, 7 }, { 22, 10, 20 }, { 4, 10, 558 }, { 6, 10, 390 },
+ { 7, 10, 162 }, { 7, 10, 689 }, { 9, 10, 360 }, { 10, 10, 653 },
+ { 18, 11, 23 }, { 7, 0, 1748 }, { 5, 10, 856 }, { 6, 10, 1672 },
+ { 6, 10, 1757 }, { 6, 10, 1781 }, { 5, 0, 539 }, { 5, 0, 754 },
+ { 6, 0, 876 }, { 4, 11, 704 }, { 7, 11, 1078 }, { 5, 10, 92 },
+ { 10, 10, 736 }, { 12, 10, 102 }, { 17, 0, 91 }, { 5, 10, 590 },
+ { 9, 10, 213 }, { 6, 0, 1565 }, { 6, 0, 91 }, { 7, 0, 435 },
+ { 4, 0, 939 }, { 12, 0, 792 }, { 6, 0, 1399 }, { 4, 0, 16 },
+ { 5, 0, 316 }, { 5, 0, 842 }, { 6, 0, 370 }, { 6, 0, 1778 },
+ { 8, 0, 166 }, { 11, 0, 812 }, { 12, 0, 206 }, { 12, 0, 351 },
+ { 14, 0, 418 }, { 16, 0, 15 }, { 16, 0, 34 }, { 18, 0, 3 },
+ { 19, 0, 3 }, { 19, 0, 7 }, { 20, 0, 4 }, { 21, 0, 21 },
+ { 4, 11, 720 }, { 5, 11, 306 }, { 16, 0, 95 }, { 5, 11, 431 },
+ { 4, 11, 234 }, { 7, 0, 551 }, { 4, 0, 999 }, { 6, 0, 1966 },
+ { 6, 0, 2042 }, { 7, 0, 619 }, { 10, 0, 547 }, { 11, 0, 122 },
+ { 12, 0, 601 }, { 15, 0, 7 }, { 20, 0, 20 }, { 5, 11, 464 },
+ { 6, 11, 236 }, { 7, 11, 276 }, { 7, 11, 696 }, { 7, 11, 914 },
+ { 7, 11, 1108 }, { 7, 11, 1448 }, { 9, 11, 15 }, { 9, 11, 564 },
+ { 10, 11, 14 }, { 12, 11, 565 }, { 13, 11, 449 }, { 14, 11, 53 },
+ { 15, 11, 13 }, { 16, 11, 64 }, { 17, 11, 41 }, { 6, 0, 884 },
+ { 6, 0, 1019 }, { 6, 0, 1150 }, { 6, 11, 1767 }, { 12, 11, 194 },
+ { 17, 11, 107 }, { 8, 10, 503 }, { 5, 11, 840 }, { 7, 0, 671 },
+ { 6, 10, 466 }, { 4, 0, 888 }, { 4, 0, 149 }, { 10, 0, 368 },
+ { 4, 0, 154 }, { 7, 0, 1134 }, { 8, 0, 105 }, { 7, 0, 983 },
+ { 9, 11, 642 }, { 11, 11, 236 }, { 14, 11, 193 }, { 4, 0, 31 },
+ { 6, 0, 429 }, { 7, 0, 962 }, { 9, 0, 458 }, { 11, 0, 691 },
+ { 6, 0, 643 }, { 6, 0, 1102 }, { 4, 0, 312 }, { 4, 11, 68 },
+ { 5, 11, 634 }, { 6, 11, 386 }, { 7, 11, 794 }, { 8, 11, 273 },
+ { 9, 11, 563 }, { 10, 11, 105 }, { 10, 11, 171 }, { 11, 11, 94 },
+ { 11, 11, 354 }, { 5, 0, 740 }, { 7, 0, 1642 }, { 4, 11, 95 },
+ { 7, 11, 416 }, { 8, 11, 211 }, { 11, 11, 830 }, { 4, 0, 236 },
+ { 10, 10, 241 }, { 7, 11, 731 }, { 13, 11, 20 }, { 15, 11, 11 },
+ { 5, 0, 836 }, { 5, 0, 857 }, { 6, 0, 1680 }, { 7, 0, 59 },
+ { 10, 0, 68 }, { 11, 0, 494 }, { 24, 11, 6 }, { 4, 0, 81 },
+ { 11, 0, 867 }, { 7, 0, 795 }, { 5, 11, 689 }, { 4, 0, 1001 },
+ { 5, 0, 282 }, { 6, 0, 1932 }, { 6, 0, 1977 }, { 6, 0, 1987 },
+ { 6, 0, 1992 }, { 8, 0, 650 }, { 8, 0, 919 }, { 8, 0, 920 },
+ { 8, 0, 923 }, { 8, 0, 926 }, { 8, 0, 927 }, { 8, 0, 931 },
+ { 8, 0, 939 }, { 8, 0, 947 }, { 8, 0, 956 }, { 8, 0, 997 },
+ { 9, 0, 907 }, { 10, 0, 950 }, { 10, 0, 953 }, { 10, 0, 954 },
+ { 10, 0, 956 }, { 10, 0, 958 }, { 10, 0, 959 }, { 10, 0, 964 },
+ { 10, 0, 970 }, { 10, 0, 972 }, { 10, 0, 973 }, { 10, 0, 975 },
+ { 10, 0, 976 }, { 10, 0, 980 }, { 10, 0, 981 }, { 10, 0, 984 },
+ { 10, 0, 988 }, { 10, 0, 990 }, { 10, 0, 995 }, { 10, 0, 999 },
+ { 10, 0, 1002 }, { 10, 0, 1003 }, { 10, 0, 1005 }, { 10, 0, 1006 },
+ { 10, 0, 1008 }, { 10, 0, 1009 }, { 10, 0, 1012 }, { 10, 0, 1014 },
+ { 10, 0, 1015 }, { 10, 0, 1019 }, { 10, 0, 1020 }, { 10, 0, 1022 },
+ { 12, 0, 959 }, { 12, 0, 961 }, { 12, 0, 962 }, { 12, 0, 963 },
+ { 12, 0, 964 }, { 12, 0, 965 }, { 12, 0, 967 }, { 12, 0, 968 },
+ { 12, 0, 969 }, { 12, 0, 970 }, { 12, 0, 971 }, { 12, 0, 972 },
+ { 12, 0, 973 }, { 12, 0, 974 }, { 12, 0, 975 }, { 12, 0, 976 },
+ { 12, 0, 977 }, { 12, 0, 979 }, { 12, 0, 981 }, { 12, 0, 982 },
+ { 12, 0, 983 }, { 12, 0, 984 }, { 12, 0, 985 }, { 12, 0, 986 },
+ { 12, 0, 987 }, { 12, 0, 989 }, { 12, 0, 990 }, { 12, 0, 992 },
+ { 12, 0, 993 }, { 12, 0, 995 }, { 12, 0, 998 }, { 12, 0, 999 },
+ { 12, 0, 1000 }, { 12, 0, 1001 }, { 12, 0, 1002 }, { 12, 0, 1004 },
+ { 12, 0, 1005 }, { 12, 0, 1006 }, { 12, 0, 1007 }, { 12, 0, 1008 },
+ { 12, 0, 1009 }, { 12, 0, 1010 }, { 12, 0, 1011 }, { 12, 0, 1012 },
+ { 12, 0, 1014 }, { 12, 0, 1015 }, { 12, 0, 1016 }, { 12, 0, 1017 },
+ { 12, 0, 1018 }, { 12, 0, 1019 }, { 12, 0, 1022 }, { 12, 0, 1023 },
+ { 14, 0, 475 }, { 14, 0, 477 }, { 14, 0, 478 }, { 14, 0, 479 },
+ { 14, 0, 480 }, { 14, 0, 482 }, { 14, 0, 483 }, { 14, 0, 484 },
+ { 14, 0, 485 }, { 14, 0, 486 }, { 14, 0, 487 }, { 14, 0, 488 },
+ { 14, 0, 489 }, { 14, 0, 490 }, { 14, 0, 491 }, { 14, 0, 492 },
+ { 14, 0, 493 }, { 14, 0, 494 }, { 14, 0, 495 }, { 14, 0, 496 },
+ { 14, 0, 497 }, { 14, 0, 498 }, { 14, 0, 499 }, { 14, 0, 500 },
+ { 14, 0, 501 }, { 14, 0, 502 }, { 14, 0, 503 }, { 14, 0, 504 },
+ { 14, 0, 506 }, { 14, 0, 507 }, { 14, 0, 508 }, { 14, 0, 509 },
+ { 14, 0, 510 }, { 14, 0, 511 }, { 16, 0, 113 }, { 16, 0, 114 },
+ { 16, 0, 115 }, { 16, 0, 117 }, { 16, 0, 118 }, { 16, 0, 119 },
+ { 16, 0, 121 }, { 16, 0, 122 }, { 16, 0, 123 }, { 16, 0, 124 },
+ { 16, 0, 125 }, { 16, 0, 126 }, { 16, 0, 127 }, { 18, 0, 242 },
+ { 18, 0, 243 }, { 18, 0, 244 }, { 18, 0, 245 }, { 18, 0, 248 },
+ { 18, 0, 249 }, { 18, 0, 250 }, { 18, 0, 251 }, { 18, 0, 252 },
+ { 18, 0, 253 }, { 18, 0, 254 }, { 18, 0, 255 }, { 20, 0, 125 },
+ { 20, 0, 126 }, { 20, 0, 127 }, { 7, 11, 1717 }, { 7, 11, 1769 },
+ { 10, 11, 546 }, { 7, 11, 1127 }, { 7, 11, 1572 }, { 10, 11, 297 },
+ { 10, 11, 422 }, { 11, 11, 764 }, { 11, 11, 810 }, { 12, 11, 264 },
+ { 13, 11, 102 }, { 13, 11, 300 }, { 13, 11, 484 }, { 14, 11, 147 },
+ { 14, 11, 229 }, { 17, 11, 71 }, { 18, 11, 118 }, { 19, 11, 120 },
+ { 6, 0, 1148 }, { 6, 0, 1586 }, { 4, 0, 775 }, { 7, 10, 954 },
+ { 5, 11, 864 }, { 5, 11, 928 }, { 10, 11, 189 }, { 7, 10, 1958 },
+ { 6, 10, 549 }, { 8, 10, 34 }, { 8, 10, 283 }, { 9, 10, 165 },
+ { 10, 10, 475 }, { 5, 10, 652 }, { 5, 10, 701 }, { 7, 10, 449 },
+ { 7, 11, 695 }, { 4, 10, 655 }, { 7, 10, 850 }, { 17, 10, 75 },
+ { 18, 10, 137 }, { 12, 11, 682 }, { 5, 11, 523 }, { 8, 0, 970 },
+ { 8, 10, 670 }, { 8, 11, 555 }, { 7, 11, 76 }, { 8, 11, 44 },
+ { 9, 11, 884 }, { 10, 11, 580 }, { 11, 11, 399 }, { 11, 11, 894 },
+ { 15, 11, 122 }, { 18, 11, 144 }, { 19, 11, 61 }, { 6, 10, 159 },
+ { 6, 10, 364 }, { 7, 10, 516 }, { 7, 10, 1439 }, { 9, 10, 518 },
+ { 4, 0, 71 }, { 5, 0, 376 }, { 7, 0, 119 }, { 10, 0, 665 },
+ { 13, 10, 151 }, { 11, 0, 827 }, { 14, 0, 34 }, { 15, 0, 148 },
+ { 5, 11, 518 }, { 4, 0, 479 }, { 7, 11, 1787 }, { 7, 11, 1852 },
+ { 7, 10, 993 }, { 7, 0, 607 }, { 8, 0, 99 }, { 6, 0, 1960 },
+ { 4, 0, 793 }, { 4, 0, 41 }, { 5, 0, 74 }, { 7, 0, 1627 },
+ { 11, 0, 871 }, { 12, 0, 619 }, { 7, 0, 94 }, { 11, 0, 329 },
+ { 11, 0, 965 }, { 12, 0, 241 }, { 14, 0, 354 }, { 15, 0, 22 },
+ { 20, 0, 63 }, { 7, 10, 501 }, { 9, 10, 111 }, { 10, 10, 141 },
+ { 11, 10, 332 }, { 13, 10, 43 }, { 13, 10, 429 }, { 14, 10, 130 },
+ { 14, 10, 415 }, { 17, 10, 102 }, { 9, 0, 209 }, { 9, 0, 300 },
+ { 6, 0, 1497 }, { 10, 11, 255 }, { 4, 11, 934 }, { 5, 11, 138 },
+ { 8, 11, 610 }, { 5, 0, 98 }, { 6, 0, 1316 }, { 10, 11, 804 },
+ { 10, 11, 832 }, { 8, 11, 96 }, { 9, 11, 36 }, { 10, 11, 607 },
+ { 11, 11, 423 }, { 11, 11, 442 }, { 12, 11, 309 }, { 14, 11, 199 },
+ { 15, 11, 90 }, { 17, 11, 110 }, { 4, 0, 463 }, { 5, 10, 149 },
+ { 8, 10, 233 }, { 5, 10, 935 }, { 4, 11, 652 }, { 8, 11, 320 },
+ { 9, 11, 13 }, { 9, 11, 398 }, { 9, 11, 727 }, { 10, 11, 75 },
+ { 10, 11, 184 }, { 10, 11, 230 }, { 10, 11, 564 }, { 10, 11, 569 },
+ { 11, 11, 973 }, { 12, 11, 70 }, { 12, 11, 189 }, { 13, 11, 57 },
+ { 13, 11, 257 }, { 22, 11, 6 }, { 22, 11, 16 }, { 14, 0, 291 },
+ { 12, 10, 582 }, { 18, 10, 131 }, { 8, 10, 801 }, { 5, 0, 984 },
+ { 17, 11, 116 }, { 4, 11, 692 }, { 5, 11, 321 }, { 4, 0, 182 },
+ { 6, 0, 205 }, { 7, 0, 220 }, { 4, 0, 42 }, { 9, 0, 205 },
+ { 9, 0, 786 }, { 10, 0, 659 }, { 6, 0, 801 }, { 11, 11, 130 },
+ { 12, 11, 609 }, { 4, 0, 635 }, { 5, 11, 345 }, { 7, 11, 1016 },
+ { 11, 0, 533 }, { 4, 0, 371 }, { 4, 0, 272 }, { 7, 0, 836 },
+ { 6, 0, 1282 }, { 7, 11, 1100 }, { 5, 0, 825 }, { 6, 0, 1640 },
+ { 7, 11, 1325 }, { 5, 11, 673 }, { 4, 11, 287 }, { 5, 11, 1018 },
+ { 7, 0, 357 }, { 6, 0, 467 }, { 9, 0, 879 }, { 7, 0, 317 },
+ { 7, 0, 569 }, { 6, 0, 924 }, { 6, 0, 1588 }, { 5, 11, 34 },
+ { 5, 10, 406 }, { 10, 11, 724 }, { 12, 11, 444 }, { 13, 11, 354 },
+ { 18, 11, 32 }, { 23, 11, 24 }, { 23, 11, 31 }, { 24, 11, 5 },
+ { 6, 0, 1795 }, { 6, 0, 1835 }, { 6, 0, 1836 }, { 6, 0, 1856 },
+ { 8, 0, 844 }, { 8, 0, 849 }, { 8, 0, 854 }, { 8, 0, 870 },
+ { 8, 0, 887 }, { 10, 0, 852 }, { 10, 0, 942 }, { 6, 10, 69 },
+ { 7, 10, 117 }, { 9, 0, 307 }, { 4, 0, 944 }, { 6, 0, 1799 },
+ { 6, 0, 1825 }, { 10, 0, 848 }, { 10, 0, 875 }, { 10, 0, 895 },
+ { 10, 0, 899 }, { 10, 0, 902 }, { 12, 0, 773 }, { 11, 0, 43 },
+ { 13, 0, 72 }, { 13, 0, 142 }, { 7, 10, 1830 }, { 6, 11, 382 },
+ { 4, 10, 432 }, { 7, 10, 824 }, { 4, 11, 329 }, { 7, 0, 1820 },
+ { 11, 11, 124 }, { 5, 10, 826 }, { 5, 0, 525 }, { 4, 11, 906 },
+ { 7, 11, 1940 }, { 8, 11, 366 }, { 10, 11, 10 }, { 4, 11, 123 },
+ { 4, 11, 649 }, { 5, 11, 605 }, { 7, 11, 1509 }, { 8, 11, 36 },
+ { 6, 0, 110 }, { 7, 0, 1681 }, { 5, 0, 493 }, { 5, 11, 767 },
+ { 4, 0, 174 }, { 7, 0, 911 }, { 10, 11, 786 }, { 8, 0, 417 },
+ { 9, 0, 782 }, { 5, 10, 1000 }, { 7, 0, 733 }, { 9, 0, 583 },
+ { 4, 10, 297 }, { 6, 10, 529 }, { 7, 10, 152 }, { 7, 10, 713 },
+ { 7, 10, 1845 }, { 8, 10, 710 }, { 8, 10, 717 }, { 12, 10, 639 },
+ { 12, 10, 685 }, { 4, 0, 32 }, { 5, 0, 215 }, { 6, 0, 269 },
+ { 7, 0, 1782 }, { 7, 0, 1892 }, { 10, 0, 16 }, { 11, 0, 822 },
+ { 11, 0, 954 }, { 13, 0, 481 }, { 4, 11, 273 }, { 5, 11, 658 },
+ { 5, 11, 995 }, { 8, 0, 477 }, { 6, 11, 72 }, { 7, 11, 1345 },
+ { 5, 0, 308 }, { 7, 0, 1088 }, { 4, 10, 520 }, { 7, 10, 575 },
+ { 5, 11, 589 }, { 5, 0, 126 }, { 8, 0, 297 }, { 9, 0, 366 },
+ { 12, 0, 374 }, { 7, 0, 1551 }, { 11, 0, 361 }, { 5, 11, 117 },
+ { 6, 11, 514 }, { 6, 11, 541 }, { 7, 11, 1164 }, { 7, 11, 1436 },
+ { 8, 11, 220 }, { 8, 11, 648 }, { 10, 11, 688 }, { 11, 11, 560 },
+ { 5, 11, 686 }, { 4, 0, 946 }, { 6, 0, 1807 }, { 8, 0, 871 },
+ { 10, 0, 854 }, { 10, 0, 870 }, { 10, 0, 888 }, { 10, 0, 897 },
+ { 10, 0, 920 }, { 12, 0, 722 }, { 12, 0, 761 }, { 12, 0, 763 },
+ { 12, 0, 764 }, { 14, 0, 454 }, { 14, 0, 465 }, { 16, 0, 107 },
+ { 18, 0, 167 }, { 18, 0, 168 }, { 18, 0, 172 }, { 4, 0, 175 },
+ { 7, 0, 1307 }, { 4, 0, 685 }, { 7, 11, 1834 }, { 5, 0, 797 },
+ { 6, 0, 745 }, { 6, 0, 858 }, { 6, 0, 963 }, { 5, 0, 565 },
+ { 5, 10, 397 }, { 6, 10, 154 }, { 7, 11, 196 }, { 7, 10, 676 },
+ { 8, 10, 443 }, { 8, 10, 609 }, { 9, 10, 24 }, { 9, 10, 325 },
+ { 10, 10, 35 }, { 10, 11, 765 }, { 11, 11, 347 }, { 11, 10, 535 },
+ { 11, 11, 552 }, { 11, 11, 576 }, { 11, 10, 672 }, { 11, 11, 790 },
+ { 11, 10, 1018 }, { 12, 11, 263 }, { 12, 10, 637 }, { 13, 11, 246 },
+ { 13, 11, 270 }, { 13, 11, 395 }, { 14, 11, 74 }, { 14, 11, 176 },
+ { 14, 11, 190 }, { 14, 11, 398 }, { 14, 11, 412 }, { 15, 11, 32 },
+ { 15, 11, 63 }, { 16, 10, 30 }, { 16, 11, 88 }, { 19, 11, 105 },
+ { 13, 11, 84 }, { 13, 11, 122 }, { 4, 0, 252 }, { 7, 0, 1068 },
+ { 10, 0, 434 }, { 11, 0, 228 }, { 11, 0, 426 }, { 13, 0, 231 },
+ { 18, 0, 106 }, { 20, 0, 87 }, { 9, 0, 826 }, { 4, 11, 589 },
+ { 11, 11, 282 }, { 5, 11, 381 }, { 7, 11, 1792 }, { 4, 0, 791 },
+ { 5, 0, 231 }, { 10, 0, 509 }, { 5, 10, 981 }, { 7, 0, 601 },
+ { 9, 0, 277 }, { 9, 0, 674 }, { 10, 0, 178 }, { 10, 0, 418 },
+ { 10, 0, 571 }, { 11, 0, 531 }, { 12, 0, 113 }, { 12, 0, 475 },
+ { 13, 0, 99 }, { 14, 0, 428 }, { 4, 10, 56 }, { 7, 11, 616 },
+ { 7, 10, 1791 }, { 8, 10, 607 }, { 8, 10, 651 }, { 10, 11, 413 },
+ { 11, 10, 465 }, { 11, 10, 835 }, { 12, 10, 337 }, { 13, 10, 480 },
+ { 7, 0, 1591 }, { 16, 0, 43 }, { 9, 10, 158 }, { 10, 10, 411 },
+ { 7, 0, 1683 }, { 8, 0, 289 }, { 11, 0, 45 }, { 12, 0, 278 },
+ { 12, 0, 537 }, { 6, 11, 120 }, { 7, 11, 1188 }, { 7, 11, 1710 },
+ { 8, 11, 286 }, { 9, 11, 667 }, { 11, 11, 592 }, { 11, 11, 730 },
+ { 8, 10, 617 }, { 7, 0, 1120 }, { 7, 11, 1146 }, { 11, 10, 563 },
+ { 4, 11, 352 }, { 4, 10, 369 }, { 7, 11, 687 }, { 15, 11, 38 },
+ { 4, 0, 399 }, { 5, 0, 119 }, { 5, 0, 494 }, { 7, 0, 751 },
+ { 9, 0, 556 }, { 14, 11, 179 }, { 15, 11, 151 }, { 22, 11, 11 },
+ { 4, 11, 192 }, { 5, 11, 49 }, { 6, 11, 200 }, { 6, 11, 293 },
+ { 6, 11, 1696 }, { 7, 11, 488 }, { 4, 0, 398 }, { 5, 0, 660 },
+ { 7, 0, 1030 }, { 6, 10, 622 }, { 7, 11, 595 }, { 13, 0, 168 },
+ { 4, 11, 147 }, { 7, 0, 973 }, { 10, 10, 624 }, { 14, 10, 279 },
+ { 4, 10, 363 }, { 4, 0, 642 }, { 5, 11, 934 }, { 6, 0, 1615 },
+ { 7, 11, 505 }, { 7, 11, 523 }, { 7, 0, 594 }, { 7, 0, 851 },
+ { 7, 0, 1858 }, { 9, 0, 411 }, { 9, 0, 574 }, { 9, 0, 666 },
+ { 9, 0, 737 }, { 10, 0, 346 }, { 10, 0, 712 }, { 11, 0, 246 },
+ { 11, 0, 432 }, { 11, 0, 517 }, { 11, 0, 647 }, { 11, 0, 679 },
+ { 11, 0, 727 }, { 12, 0, 304 }, { 12, 0, 305 }, { 12, 0, 323 },
+ { 12, 0, 483 }, { 12, 0, 572 }, { 12, 0, 593 }, { 12, 0, 602 },
+ { 13, 0, 95 }, { 13, 0, 101 }, { 13, 0, 171 }, { 13, 0, 315 },
+ { 13, 0, 378 }, { 13, 0, 425 }, { 13, 0, 475 }, { 14, 0, 63 },
+ { 14, 0, 380 }, { 14, 0, 384 }, { 15, 0, 133 }, { 18, 0, 112 },
+ { 20, 0, 72 }, { 7, 0, 1093 }, { 4, 0, 679 }, { 8, 0, 913 },
+ { 10, 0, 903 }, { 10, 0, 915 }, { 12, 0, 648 }, { 12, 0, 649 },
+ { 14, 0, 455 }, { 16, 0, 112 }, { 10, 11, 438 }, { 9, 0, 203 },
+ { 6, 10, 292 }, { 6, 0, 1492 }, { 7, 0, 1374 }, { 8, 0, 540 },
+ { 5, 10, 177 }, { 6, 10, 616 }, { 7, 10, 827 }, { 9, 10, 525 },
+ { 10, 10, 656 }, { 7, 0, 1486 }, { 9, 0, 714 }, { 10, 10, 31 },
+ { 8, 0, 825 }, { 6, 0, 1511 }, { 4, 11, 637 }, { 6, 0, 952 },
+ { 4, 10, 161 }, { 5, 10, 631 }, { 5, 0, 143 }, { 5, 0, 769 },
+ { 6, 0, 1760 }, { 7, 0, 682 }, { 7, 0, 1992 }, { 8, 0, 736 },
+ { 4, 0, 700 }, { 6, 0, 1540 }, { 4, 11, 777 }, { 9, 11, 867 },
+ { 10, 11, 837 }, { 7, 0, 1557 }, { 7, 10, 1684 }, { 5, 0, 860 },
+ { 6, 0, 422 }, { 7, 0, 0 }, { 7, 0, 1544 }, { 9, 0, 605 },
+ { 11, 0, 990 }, { 12, 0, 235 }, { 12, 0, 453 }, { 13, 0, 47 },
+ { 13, 0, 266 }, { 9, 10, 469 }, { 9, 10, 709 }, { 12, 10, 512 },
+ { 14, 10, 65 }, { 17, 10, 12 }, { 11, 0, 807 }, { 10, 10, 229 },
+ { 11, 10, 73 }, { 11, 10, 376 }, { 6, 11, 170 }, { 7, 11, 1080 },
+ { 8, 11, 395 }, { 8, 11, 487 }, { 11, 11, 125 }, { 13, 11, 147 },
+ { 5, 0, 515 }, { 9, 0, 131 }, { 7, 0, 1605 }, { 11, 0, 962 },
+ { 18, 0, 139 }, { 4, 0, 646 }, { 4, 0, 396 }, { 7, 0, 728 },
+ { 9, 0, 117 }, { 13, 0, 202 }, { 20, 0, 51 }, { 6, 0, 121 },
+ { 6, 0, 124 }, { 6, 0, 357 }, { 7, 0, 1138 }, { 7, 0, 1295 },
+ { 8, 0, 162 }, { 8, 0, 508 }, { 11, 0, 655 }, { 4, 11, 535 },
+ { 6, 10, 558 }, { 7, 10, 651 }, { 8, 11, 618 }, { 9, 10, 0 },
+ { 10, 10, 34 }, { 11, 10, 1008 }, { 7, 11, 1245 }, { 10, 0, 357 },
+ { 22, 11, 23 }, { 5, 0, 237 }, { 7, 0, 1784 }, { 7, 10, 1832 },
+ { 10, 10, 374 }, { 4, 0, 713 }, { 4, 11, 46 }, { 6, 0, 1536 },
+ { 10, 0, 348 }, { 5, 11, 811 }, { 6, 11, 1679 }, { 6, 11, 1714 },
+ { 7, 11, 2032 }, { 11, 11, 182 }, { 14, 11, 195 }, { 6, 0, 523 },
+ { 7, 0, 738 }, { 7, 10, 771 }, { 7, 10, 1731 }, { 9, 10, 405 },
+ { 10, 10, 421 }, { 7, 11, 1458 }, { 9, 11, 407 }, { 11, 11, 15 },
+ { 6, 11, 34 }, { 7, 11, 69 }, { 7, 11, 640 }, { 7, 11, 1089 },
+ { 8, 11, 708 }, { 8, 11, 721 }, { 9, 11, 363 }, { 9, 11, 643 },
+ { 10, 11, 628 }, { 20, 11, 98 }, { 5, 0, 434 }, { 7, 0, 1877 },
+ { 7, 0, 571 }, { 10, 0, 366 }, { 5, 10, 881 }, { 5, 10, 885 },
+ { 9, 0, 513 }, { 10, 0, 25 }, { 10, 0, 39 }, { 12, 0, 122 },
+ { 12, 0, 187 }, { 4, 0, 580 }, { 5, 10, 142 }, { 6, 10, 546 },
+ { 4, 11, 462 }, { 9, 0, 873 }, { 5, 10, 466 }, { 11, 10, 571 },
+ { 12, 10, 198 }, { 13, 10, 283 }, { 14, 10, 186 }, { 15, 10, 21 },
+ { 15, 10, 103 }, { 7, 0, 171 }, { 4, 10, 185 }, { 5, 10, 257 },
+ { 5, 10, 839 }, { 5, 10, 936 }, { 9, 10, 399 }, { 10, 10, 258 },
+ { 10, 10, 395 }, { 10, 10, 734 }, { 11, 10, 1014 }, { 12, 10, 23 },
+ { 13, 10, 350 }, { 14, 10, 150 }, { 19, 10, 6 }, { 6, 0, 625 },
+ { 7, 0, 107 }, { 7, 0, 838 }, { 8, 0, 550 }, { 10, 0, 401 },
+ { 5, 11, 73 }, { 6, 11, 23 }, { 6, 11, 338 }, { 4, 0, 943 },
+ { 6, 0, 1850 }, { 12, 0, 713 }, { 14, 0, 434 }, { 11, 0, 588 },
+ { 11, 0, 864 }, { 11, 0, 936 }, { 11, 0, 968 }, { 12, 0, 73 },
+ { 12, 0, 343 }, { 12, 0, 394 }, { 13, 0, 275 }, { 14, 0, 257 },
+ { 15, 0, 160 }, { 7, 10, 404 }, { 7, 10, 1377 }, { 7, 10, 1430 },
+ { 7, 10, 2017 }, { 8, 10, 149 }, { 8, 10, 239 }, { 8, 10, 512 },
+ { 8, 10, 793 }, { 8, 10, 818 }, { 9, 10, 474 }, { 9, 10, 595 },
+ { 10, 10, 122 }, { 10, 10, 565 }, { 10, 10, 649 }, { 10, 10, 783 },
+ { 11, 10, 239 }, { 11, 10, 295 }, { 11, 10, 447 }, { 11, 10, 528 },
+ { 11, 10, 639 }, { 11, 10, 800 }, { 12, 10, 25 }, { 12, 10, 157 },
+ { 12, 10, 316 }, { 12, 10, 390 }, { 12, 10, 391 }, { 12, 10, 395 },
+ { 12, 10, 478 }, { 12, 10, 503 }, { 12, 10, 592 }, { 12, 10, 680 },
+ { 13, 10, 50 }, { 13, 10, 53 }, { 13, 10, 132 }, { 13, 10, 198 },
+ { 13, 10, 322 }, { 13, 10, 415 }, { 13, 10, 511 }, { 14, 10, 71 },
+ { 14, 10, 395 }, { 15, 10, 71 }, { 15, 10, 136 }, { 17, 10, 123 },
+ { 18, 10, 93 }, { 19, 10, 58 }, { 5, 0, 768 }, { 11, 0, 103 },
+ { 14, 0, 0 }, { 8, 10, 712 }, { 4, 0, 799 }, { 4, 0, 894 },
+ { 7, 11, 725 }, { 8, 11, 498 }, { 11, 11, 268 }, { 7, 11, 1798 },
+ { 7, 11, 773 }, { 13, 11, 360 }, { 4, 10, 377 }, { 24, 10, 13 },
+ { 7, 0, 1673 }, { 4, 11, 583 }, { 6, 0, 1052 }, { 5, 11, 220 },
+ { 12, 11, 69 }, { 4, 11, 544 }, { 4, 10, 180 }, { 7, 10, 1906 },
+ { 6, 0, 272 }, { 4, 0, 441 }, { 6, 0, 1421 }, { 4, 0, 9 },
+ { 5, 0, 128 }, { 7, 0, 368 }, { 11, 0, 480 }, { 20, 0, 3 },
+ { 5, 11, 176 }, { 6, 11, 437 }, { 6, 11, 564 }, { 11, 11, 181 },
+ { 13, 11, 183 }, { 4, 10, 491 }, { 7, 0, 1182 }, { 13, 11, 67 },
+ { 6, 0, 1346 }, { 4, 10, 171 }, { 10, 10, 234 }, { 4, 10, 586 },
+ { 7, 10, 1186 }, { 10, 10, 631 }, { 8, 0, 682 }, { 6, 0, 1004 },
+ { 15, 0, 24 }, { 15, 11, 24 }, { 6, 0, 968 }, { 4, 0, 2 },
+ { 6, 0, 742 }, { 6, 0, 793 }, { 7, 0, 545 }, { 7, 0, 894 },
+ { 9, 10, 931 }, { 10, 10, 334 }, { 20, 10, 71 }, { 8, 11, 600 },
+ { 5, 10, 765 }, { 9, 0, 769 }, { 12, 0, 185 }, { 4, 11, 790 },
+ { 5, 11, 273 }, { 6, 11, 394 }, { 7, 0, 474 }, { 9, 0, 578 },
+ { 4, 11, 135 }, { 6, 11, 127 }, { 7, 11, 1185 }, { 7, 11, 1511 },
+ { 8, 11, 613 }, { 11, 11, 5 }, { 12, 11, 133 }, { 12, 11, 495 },
+ { 12, 11, 586 }, { 14, 11, 385 }, { 15, 11, 118 }, { 17, 11, 20 },
+ { 18, 11, 98 }, { 5, 10, 424 }, { 5, 0, 530 }, { 14, 0, 113 },
+ { 6, 11, 230 }, { 7, 11, 961 }, { 7, 11, 1085 }, { 8, 11, 462 },
+ { 7, 11, 1954 }, { 9, 11, 636 }, { 8, 10, 714 }, { 21, 11, 6 },
+ { 7, 10, 685 }, { 9, 10, 420 }, { 10, 10, 269 }, { 10, 10, 285 },
+ { 10, 10, 576 }, { 11, 10, 397 }, { 13, 10, 175 }, { 17, 10, 90 },
+ { 4, 10, 429 }, { 5, 0, 556 }, { 5, 11, 162 }, { 8, 11, 68 },
+ { 4, 11, 654 }, { 4, 11, 156 }, { 7, 11, 998 }, { 7, 11, 1045 },
+ { 7, 11, 1860 }, { 9, 11, 48 }, { 9, 11, 692 }, { 11, 11, 419 },
+ { 11, 11, 602 }, { 6, 0, 1317 }, { 8, 0, 16 }, { 9, 0, 825 },
+ { 12, 0, 568 }, { 7, 11, 1276 }, { 8, 11, 474 }, { 9, 11, 652 },
+ { 18, 0, 97 }, { 7, 10, 18 }, { 7, 10, 699 }, { 7, 10, 1966 },
+ { 8, 10, 752 }, { 9, 10, 273 }, { 9, 10, 412 }, { 9, 10, 703 },
+ { 10, 10, 71 }, { 10, 10, 427 }, { 10, 10, 508 }, { 10, 0, 703 },
+ { 7, 11, 1454 }, { 10, 11, 703 }, { 4, 10, 53 }, { 5, 10, 186 },
+ { 7, 10, 752 }, { 6, 0, 892 }, { 6, 0, 1571 }, { 8, 10, 575 },
+ { 10, 10, 289 }, { 11, 10, 319 }, { 6, 0, 186 }, { 9, 0, 426 },
+ { 6, 0, 1101 }, { 4, 10, 675 }, { 4, 0, 585 }, { 6, 0, 1870 },
+ { 9, 0, 937 }, { 24, 11, 10 }, { 9, 11, 197 }, { 10, 11, 300 },
+ { 12, 11, 473 }, { 13, 11, 90 }, { 13, 11, 405 }, { 4, 0, 93 },
+ { 5, 0, 252 }, { 6, 0, 229 }, { 7, 0, 291 }, { 9, 0, 550 },
+ { 11, 0, 644 }, { 9, 0, 749 }, { 9, 0, 162 }, { 6, 10, 209 },
+ { 8, 10, 468 }, { 9, 10, 210 }, { 11, 10, 36 }, { 12, 10, 28 },
+ { 12, 10, 630 }, { 13, 10, 21 }, { 13, 10, 349 }, { 14, 10, 7 },
+ { 17, 10, 13 }, { 4, 0, 381 }, { 4, 11, 606 }, { 4, 10, 342 },
+ { 7, 10, 1179 }, { 7, 11, 1587 }, { 7, 11, 1707 }, { 10, 11, 528 },
+ { 11, 11, 504 }, { 12, 11, 39 }, { 13, 11, 265 }, { 13, 11, 439 },
+ { 4, 10, 928 }, { 5, 10, 910 }, { 7, 10, 1838 }, { 7, 11, 1978 },
+ { 8, 11, 676 }, { 6, 0, 762 }, { 6, 0, 796 }, { 6, 0, 956 },
+ { 4, 10, 318 }, { 4, 10, 496 }, { 7, 10, 856 }, { 11, 10, 654 },
+ { 9, 11, 242 }, { 4, 11, 361 }, { 5, 11, 315 }, { 4, 11, 461 },
+ { 4, 11, 472 }, { 4, 0, 857 }, { 5, 0, 21 }, { 6, 0, 77 },
+ { 6, 0, 157 }, { 7, 0, 974 }, { 7, 0, 1301 }, { 7, 0, 1339 },
+ { 7, 0, 1490 }, { 7, 0, 1873 }, { 9, 0, 628 }, { 7, 10, 915 },
+ { 8, 10, 247 }, { 19, 10, 0 }, { 4, 10, 202 }, { 5, 10, 382 },
+ { 6, 10, 454 }, { 7, 10, 936 }, { 7, 10, 1803 }, { 8, 10, 758 },
+ { 9, 10, 375 }, { 9, 10, 895 }, { 10, 10, 743 }, { 10, 10, 792 },
+ { 11, 10, 978 }, { 11, 10, 1012 }, { 14, 10, 109 }, { 7, 11, 617 },
+ { 10, 11, 498 }, { 11, 11, 501 }, { 12, 11, 16 }, { 12, 11, 150 },
+ { 7, 10, 1150 }, { 7, 10, 1425 }, { 7, 10, 1453 }, { 10, 11, 747 },
+ { 12, 10, 513 }, { 5, 11, 155 }, { 11, 0, 919 }, { 13, 0, 409 },
+ { 10, 10, 791 }, { 10, 0, 633 }, { 11, 11, 729 }, { 7, 11, 163 },
+ { 8, 11, 319 }, { 9, 11, 402 }, { 10, 11, 24 }, { 10, 11, 681 },
+ { 11, 11, 200 }, { 11, 11, 567 }, { 12, 11, 253 }, { 12, 11, 410 },
+ { 14, 11, 219 }, { 5, 11, 475 }, { 7, 11, 1780 }, { 9, 11, 230 },
+ { 11, 11, 297 }, { 11, 11, 558 }, { 14, 11, 322 }, { 19, 11, 76 },
+ { 7, 0, 332 }, { 6, 10, 445 }, { 9, 10, 909 }, { 7, 11, 1956 },
+ { 8, 11, 274 }, { 6, 10, 578 }, { 7, 0, 1489 }, { 7, 11, 1848 },
+ { 5, 11, 944 }, { 6, 11, 1769 }, { 4, 11, 144 }, { 8, 10, 766 },
+ { 4, 0, 832 }, { 7, 10, 541 }, { 8, 0, 398 }, { 9, 0, 681 },
+ { 11, 0, 632 }, { 8, 0, 645 }, { 9, 0, 791 }, { 10, 0, 93 },
+ { 16, 0, 13 }, { 17, 0, 23 }, { 18, 0, 135 }, { 19, 0, 12 },
+ { 20, 0, 1 }, { 20, 0, 12 }, { 20, 0, 14 }, { 6, 11, 247 },
+ { 9, 11, 555 }, { 6, 0, 20 }, { 4, 0, 800 }, { 7, 0, 1841 },
+ { 11, 10, 983 }, { 9, 10, 768 }, { 4, 10, 584 }, { 13, 11, 51 },
+ { 6, 0, 1993 }, { 4, 11, 620 }, { 10, 11, 280 }, { 8, 0, 769 },
+ { 11, 0, 290 }, { 11, 0, 665 }, { 7, 11, 1810 }, { 11, 11, 866 },
+ { 12, 11, 103 }, { 13, 11, 495 }, { 17, 11, 67 }, { 19, 11, 74 },
+ { 6, 0, 1426 }, { 11, 0, 60 }, { 4, 10, 326 }, { 7, 10, 1770 },
+ { 7, 0, 1874 }, { 9, 0, 641 }, { 4, 10, 226 }, { 6, 0, 644 },
+ { 5, 10, 426 }, { 8, 10, 30 }, { 9, 10, 2 }, { 11, 10, 549 },
+ { 19, 10, 122 }, { 5, 11, 428 }, { 10, 11, 442 }, { 7, 11, 1871 },
+ { 7, 0, 1757 }, { 19, 10, 117 }, { 7, 0, 937 }, { 7, 0, 1652 },
+ { 6, 0, 654 }, { 6, 0, 1476 }, { 5, 11, 99 }, { 7, 0, 527 },
+ { 4, 10, 345 }, { 4, 10, 385 }, { 4, 11, 397 }, { 7, 10, 265 },
+ { 7, 10, 587 }, { 4, 0, 579 }, { 5, 0, 226 }, { 5, 0, 323 },
+ { 7, 0, 960 }, { 6, 0, 1486 }, { 8, 11, 502 }, { 16, 11, 9 },
+ { 4, 10, 347 }, { 5, 10, 423 }, { 5, 10, 996 }, { 7, 10, 1329 },
+ { 7, 11, 727 }, { 18, 11, 73 }, { 4, 11, 485 }, { 7, 11, 353 },
+ { 7, 10, 1259 }, { 7, 11, 1523 }, { 9, 10, 125 }, { 11, 10, 65 },
+ { 6, 0, 325 }, { 5, 10, 136 }, { 6, 11, 366 }, { 7, 11, 1384 },
+ { 7, 11, 1601 }, { 8, 10, 644 }, { 10, 11, 160 }, { 6, 0, 1345 },
+ { 9, 11, 282 }, { 18, 0, 91 }, { 19, 0, 70 }, { 8, 0, 404 },
+ { 4, 11, 157 }, { 5, 11, 471 }, { 5, 0, 973 }, { 6, 0, 135 },
+ { 7, 0, 1176 }, { 8, 11, 116 }, { 11, 11, 551 }, { 14, 11, 159 },
+ { 4, 0, 549 }, { 4, 10, 433 }, { 5, 10, 719 }, { 8, 0, 976 },
+ { 5, 11, 160 }, { 7, 11, 363 }, { 7, 11, 589 }, { 10, 11, 170 },
+ { 13, 11, 55 }, { 16, 0, 21 }, { 16, 0, 51 }, { 7, 0, 314 },
+ { 7, 10, 1363 }, { 4, 11, 108 }, { 7, 11, 405 }, { 10, 11, 491 },
+ { 11, 11, 498 }, { 18, 0, 4 }, { 4, 10, 555 }, { 8, 10, 536 },
+ { 10, 10, 288 }, { 11, 10, 1005 }, { 7, 11, 1005 }, { 6, 0, 281 },
+ { 7, 0, 6 }, { 8, 0, 282 }, { 8, 0, 480 }, { 8, 0, 499 },
+ { 9, 0, 198 }, { 10, 0, 143 }, { 10, 0, 169 }, { 10, 0, 211 },
+ { 10, 0, 417 }, { 10, 0, 574 }, { 11, 0, 147 }, { 11, 0, 395 },
+ { 12, 0, 75 }, { 12, 0, 407 }, { 12, 0, 608 }, { 13, 0, 500 },
+ { 14, 0, 251 }, { 6, 0, 1093 }, { 6, 0, 1405 }, { 9, 10, 370 },
+ { 10, 10, 90 }, { 4, 11, 926 }, { 5, 11, 983 }, { 7, 0, 1776 },
+ { 6, 0, 1528 }, { 4, 0, 419 }, { 4, 11, 538 }, { 6, 11, 294 },
+ { 7, 11, 1267 }, { 8, 11, 624 }, { 7, 11, 1772 }, { 10, 11, 301 },
+ { 4, 10, 257 }, { 7, 10, 2031 }, { 4, 0, 138 }, { 7, 0, 1012 },
+ { 7, 0, 1280 }, { 9, 0, 76 }, { 7, 10, 1768 }, { 4, 11, 757 },
+ { 5, 0, 29 }, { 12, 0, 638 }, { 7, 11, 655 }, { 7, 11, 1844 },
+ { 7, 0, 1418 }, { 6, 11, 257 }, { 7, 11, 1522 }, { 8, 11, 469 },
+ { 10, 11, 47 }, { 14, 11, 278 }, { 6, 10, 83 }, { 6, 10, 1733 },
+ { 7, 10, 1389 }, { 11, 11, 204 }, { 11, 11, 243 }, { 12, 11, 293 },
+ { 7, 11, 1875 }, { 6, 0, 1710 }, { 7, 0, 2038 }, { 9, 11, 299 },
+ { 4, 0, 17 }, { 5, 0, 23 }, { 7, 0, 995 }, { 11, 0, 383 },
+ { 11, 0, 437 }, { 12, 0, 460 }, { 12, 0, 532 }, { 5, 0, 862 },
+ { 9, 10, 696 }, { 6, 0, 592 }, { 10, 0, 946 }, { 10, 11, 599 },
+ { 7, 10, 1718 }, { 9, 10, 95 }, { 9, 10, 274 }, { 10, 10, 279 },
+ { 10, 10, 317 }, { 10, 10, 420 }, { 11, 10, 303 }, { 11, 10, 808 },
+ { 12, 10, 134 }, { 12, 10, 367 }, { 13, 10, 149 }, { 13, 10, 347 },
+ { 14, 10, 349 }, { 14, 10, 406 }, { 18, 10, 22 }, { 18, 10, 89 },
+ { 18, 10, 122 }, { 19, 10, 47 }, { 8, 0, 70 }, { 12, 0, 171 },
+ { 13, 0, 272 }, { 5, 10, 26 }, { 4, 10, 550 }, { 9, 0, 812 },
+ { 10, 0, 233 }, { 11, 0, 76 }, { 6, 0, 988 }, { 6, 0, 442 },
+ { 8, 10, 822 }, { 7, 0, 896 }, { 4, 10, 902 }, { 5, 10, 809 },
+ { 6, 10, 122 }, { 5, 11, 150 }, { 7, 11, 106 }, { 8, 11, 603 },
+ { 9, 11, 593 }, { 9, 11, 634 }, { 10, 11, 44 }, { 10, 11, 173 },
+ { 11, 11, 462 }, { 11, 11, 515 }, { 13, 11, 216 }, { 13, 11, 288 },
+ { 14, 11, 400 }, { 8, 0, 483 }, { 7, 10, 262 }, { 6, 0, 1709 },
+ { 5, 10, 620 }, { 4, 10, 34 }, { 5, 10, 574 }, { 7, 10, 279 },
+ { 7, 10, 1624 }, { 8, 10, 601 }, { 9, 10, 170 }, { 19, 0, 119 },
+ { 12, 11, 108 }, { 13, 11, 291 }, { 11, 0, 69 }, { 12, 0, 105 },
+ { 12, 0, 117 }, { 13, 0, 213 }, { 14, 0, 13 }, { 14, 0, 62 },
+ { 14, 0, 177 }, { 14, 0, 421 }, { 15, 0, 19 }, { 18, 0, 141 },
+ { 9, 0, 309 }, { 11, 11, 278 }, { 14, 11, 73 }, { 7, 0, 608 },
+ { 7, 0, 976 }, { 9, 0, 146 }, { 10, 0, 206 }, { 10, 0, 596 },
+ { 13, 0, 218 }, { 14, 0, 153 }, { 5, 10, 332 }, { 6, 10, 261 },
+ { 8, 10, 182 }, { 11, 10, 943 }, { 4, 11, 493 }, { 16, 11, 55 },
+ { 6, 10, 1721 }, { 4, 0, 768 }, { 4, 10, 933 }, { 5, 10, 880 },
+ { 7, 11, 555 }, { 7, 11, 1316 }, { 7, 11, 1412 }, { 7, 11, 1839 },
+ { 9, 11, 192 }, { 9, 11, 589 }, { 11, 11, 241 }, { 11, 11, 676 },
+ { 11, 11, 811 }, { 11, 11, 891 }, { 12, 11, 140 }, { 12, 11, 346 },
+ { 12, 11, 479 }, { 13, 11, 30 }, { 13, 11, 49 }, { 13, 11, 381 },
+ { 14, 11, 188 }, { 15, 11, 150 }, { 16, 11, 76 }, { 18, 11, 30 },
+ { 20, 11, 52 }, { 4, 0, 518 }, { 7, 0, 1136 }, { 6, 11, 568 },
+ { 7, 11, 112 }, { 7, 11, 1804 }, { 8, 11, 362 }, { 8, 11, 410 },
+ { 8, 11, 830 }, { 9, 11, 514 }, { 11, 11, 649 }, { 14, 11, 157 },
+ { 7, 11, 673 }, { 8, 0, 689 }, { 9, 0, 863 }, { 4, 0, 18 },
+ { 7, 0, 145 }, { 7, 0, 444 }, { 7, 0, 1278 }, { 8, 0, 49 },
+ { 8, 0, 400 }, { 9, 0, 71 }, { 9, 0, 250 }, { 10, 0, 459 },
+ { 12, 0, 160 }, { 16, 0, 24 }, { 4, 11, 625 }, { 12, 0, 1020 },
+ { 4, 0, 997 }, { 6, 0, 1946 }, { 6, 0, 1984 }, { 6, 0, 1998 },
+ { 6, 11, 16 }, { 6, 11, 158 }, { 7, 11, 43 }, { 7, 11, 129 },
+ { 7, 11, 181 }, { 8, 11, 276 }, { 8, 11, 377 }, { 10, 11, 523 },
+ { 11, 11, 816 }, { 12, 11, 455 }, { 13, 11, 303 }, { 14, 11, 135 },
+ { 5, 10, 812 }, { 6, 0, 658 }, { 4, 11, 1 }, { 7, 11, 1143 },
+ { 7, 11, 1463 }, { 8, 11, 61 }, { 9, 11, 207 }, { 9, 11, 390 },
+ { 9, 11, 467 }, { 11, 11, 836 }, { 22, 11, 26 }, { 12, 0, 106 },
+ { 6, 0, 1827 }, { 10, 0, 931 }, { 18, 0, 166 }, { 20, 0, 114 },
+ { 4, 10, 137 }, { 7, 10, 1178 }, { 7, 11, 1319 }, { 7, 10, 1520 },
+ { 5, 0, 1010 }, { 4, 11, 723 }, { 5, 11, 895 }, { 7, 11, 1031 },
+ { 8, 11, 199 }, { 8, 11, 340 }, { 9, 11, 153 }, { 9, 11, 215 },
+ { 10, 11, 21 }, { 10, 11, 59 }, { 10, 11, 80 }, { 10, 11, 224 },
+ { 11, 11, 229 }, { 11, 11, 652 }, { 12, 11, 192 }, { 13, 11, 146 },
+ { 14, 11, 91 }, { 4, 11, 295 }, { 6, 11, 619 }, { 7, 11, 898 },
+ { 7, 11, 1092 }, { 8, 11, 485 }, { 18, 11, 28 }, { 19, 11, 116 },
+ { 9, 11, 51 }, { 6, 10, 1661 }, { 7, 10, 1975 }, { 7, 10, 2009 },
+ { 7, 10, 2011 }, { 5, 11, 309 }, { 12, 11, 211 }, { 5, 0, 87 },
+ { 7, 0, 313 }, { 7, 0, 1103 }, { 10, 0, 208 }, { 10, 0, 582 },
+ { 11, 0, 389 }, { 11, 0, 813 }, { 12, 0, 385 }, { 13, 0, 286 },
+ { 14, 0, 124 }, { 18, 0, 108 }, { 5, 11, 125 }, { 8, 11, 77 },
+ { 10, 11, 15 }, { 4, 0, 267 }, { 5, 0, 703 }, { 9, 11, 155 },
+ { 5, 11, 439 }, { 11, 11, 164 }, { 12, 11, 76 }, { 9, 0, 496 },
+ { 5, 10, 89 }, { 7, 10, 1915 }, { 9, 10, 185 }, { 9, 10, 235 },
+ { 10, 10, 64 }, { 10, 10, 270 }, { 10, 10, 403 }, { 10, 10, 469 },
+ { 10, 10, 529 }, { 10, 10, 590 }, { 11, 10, 140 }, { 11, 10, 860 },
+ { 13, 10, 1 }, { 13, 10, 422 }, { 14, 10, 341 }, { 14, 10, 364 },
+ { 17, 10, 93 }, { 18, 10, 113 }, { 19, 10, 97 }, { 19, 10, 113 },
+ { 5, 10, 695 }, { 7, 0, 1121 }, { 5, 10, 6 }, { 6, 10, 183 },
+ { 7, 10, 680 }, { 7, 10, 978 }, { 7, 10, 1013 }, { 7, 10, 1055 },
+ { 12, 10, 230 }, { 13, 10, 172 }, { 18, 10, 29 }, { 4, 11, 8 },
+ { 7, 11, 1152 }, { 7, 11, 1153 }, { 7, 11, 1715 }, { 9, 11, 374 },
+ { 10, 11, 478 }, { 11, 11, 648 }, { 7, 11, 1099 }, { 6, 10, 29 },
+ { 11, 10, 63 }, { 4, 0, 561 }, { 10, 0, 249 }, { 11, 0, 209 },
+ { 4, 0, 760 }, { 7, 11, 799 }, { 10, 11, 511 }, { 8, 11, 87 },
+ { 9, 0, 154 }, { 12, 0, 485 }, { 8, 0, 255 }, { 4, 0, 323 },
+ { 12, 0, 419 }, { 4, 10, 311 }, { 6, 10, 1740 }, { 4, 0, 368 },
+ { 7, 0, 641 }, { 7, 10, 170 }, { 8, 10, 90 }, { 8, 10, 177 },
+ { 8, 10, 415 }, { 11, 10, 714 }, { 14, 10, 281 }, { 4, 11, 69 },
+ { 5, 11, 122 }, { 9, 11, 656 }, { 10, 11, 464 }, { 5, 11, 849 },
+ { 6, 11, 1633 }, { 8, 0, 522 }, { 14, 0, 328 }, { 11, 10, 91 },
+ { 13, 10, 129 }, { 15, 10, 101 }, { 17, 10, 125 }, { 7, 0, 562 },
+ { 8, 0, 551 }, { 4, 10, 494 }, { 6, 10, 74 }, { 7, 10, 44 },
+ { 11, 11, 499 }, { 12, 10, 17 }, { 15, 10, 5 }, { 20, 10, 11 },
+ { 4, 10, 276 }, { 5, 10, 296 }, { 9, 0, 92 }, { 19, 0, 91 },
+ { 4, 10, 7 }, { 5, 10, 90 }, { 5, 10, 158 }, { 6, 10, 542 },
+ { 7, 10, 221 }, { 7, 10, 1574 }, { 9, 10, 490 }, { 10, 10, 540 },
+ { 11, 10, 443 }, { 11, 10, 757 }, { 6, 0, 525 }, { 6, 0, 1976 },
+ { 8, 0, 806 }, { 9, 0, 876 }, { 12, 0, 284 }, { 5, 11, 859 },
+ { 7, 10, 588 }, { 7, 11, 1160 }, { 8, 11, 107 }, { 9, 10, 175 },
+ { 9, 11, 291 }, { 9, 11, 439 }, { 10, 10, 530 }, { 10, 11, 663 },
+ { 11, 11, 609 }, { 12, 11, 197 }, { 7, 11, 168 }, { 13, 11, 196 },
+ { 13, 11, 237 }, { 11, 0, 958 }, { 5, 0, 594 }, { 7, 10, 580 },
+ { 7, 10, 88 }, { 8, 10, 627 }, { 6, 0, 479 }, { 6, 0, 562 },
+ { 7, 0, 1060 }, { 13, 0, 6 }, { 5, 10, 872 }, { 6, 10, 57 },
+ { 7, 10, 471 }, { 9, 10, 447 }, { 9, 10, 454 }, { 8, 11, 413 },
+ { 17, 11, 19 }, { 4, 11, 117 }, { 6, 11, 372 }, { 7, 11, 1905 },
+ { 14, 11, 323 }, { 4, 11, 722 }, { 11, 11, 471 }, { 17, 0, 61 },
+ { 5, 10, 31 }, { 6, 10, 614 }, { 8, 10, 330 }, { 12, 10, 477 },
+ { 7, 10, 1200 }, { 10, 10, 460 }, { 6, 10, 424 }, { 7, 10, 1866 },
+ { 6, 0, 1641 }, { 8, 0, 820 }, { 6, 0, 1556 }, { 6, 0, 1618 },
+ { 9, 11, 5 }, { 12, 11, 216 }, { 12, 11, 294 }, { 12, 11, 298 },
+ { 12, 11, 400 }, { 12, 11, 518 }, { 13, 11, 229 }, { 15, 11, 139 },
+ { 15, 11, 155 }, { 16, 11, 79 }, { 4, 0, 302 }, { 7, 0, 1766 },
+ { 5, 10, 13 }, { 6, 10, 142 }, { 6, 0, 148 }, { 7, 0, 1313 },
+ { 7, 10, 116 }, { 8, 10, 322 }, { 8, 10, 755 }, { 9, 10, 548 },
+ { 10, 10, 714 }, { 11, 10, 884 }, { 13, 10, 324 }, { 9, 0, 676 },
+ { 9, 11, 88 }, { 11, 11, 270 }, { 5, 11, 12 }, { 7, 11, 375 },
+ { 9, 11, 438 }, { 6, 0, 1674 }, { 7, 10, 1472 }, { 7, 10, 1554 },
+ { 11, 0, 178 }, { 7, 10, 1071 }, { 7, 10, 1541 }, { 7, 10, 1767 },
+ { 7, 10, 1806 }, { 11, 10, 162 }, { 11, 10, 242 }, { 12, 10, 605 },
+ { 15, 10, 26 }, { 16, 10, 44 }, { 6, 0, 389 }, { 7, 0, 149 },
+ { 9, 0, 142 }, { 10, 0, 94 }, { 12, 11, 71 }, { 17, 10, 115 },
+ { 6, 0, 8 }, { 7, 0, 1881 }, { 8, 0, 91 }, { 11, 11, 966 },
+ { 12, 11, 287 }, { 13, 11, 342 }, { 13, 11, 402 }, { 15, 11, 110 },
+ { 15, 11, 163 }, { 4, 11, 258 }, { 8, 11, 639 }, { 6, 11, 22 },
+ { 7, 11, 903 }, { 10, 11, 577 }, { 5, 11, 681 }, { 7, 10, 1111 },
+ { 7, 11, 1286 }, { 9, 0, 112 }, { 8, 10, 1 }, { 10, 10, 326 },
+ { 5, 10, 488 }, { 6, 10, 527 }, { 7, 10, 489 }, { 7, 10, 1636 },
+ { 8, 10, 121 }, { 8, 10, 144 }, { 8, 10, 359 }, { 9, 10, 193 },
+ { 9, 10, 241 }, { 9, 10, 336 }, { 9, 10, 882 }, { 11, 10, 266 },
+ { 11, 10, 372 }, { 11, 10, 944 }, { 12, 10, 401 }, { 12, 10, 641 },
+ { 4, 11, 664 }, { 5, 11, 804 }, { 6, 0, 747 }, { 6, 0, 1015 },
+ { 7, 0, 1746 }, { 9, 10, 31 }, { 10, 10, 244 }, { 10, 10, 699 },
+ { 12, 10, 149 }, { 13, 10, 497 }, { 5, 10, 377 }, { 7, 0, 24 },
+ { 6, 0, 1352 }, { 5, 11, 32 }, { 17, 10, 101 }, { 7, 0, 1530 },
+ { 10, 0, 158 }, { 13, 0, 13 }, { 13, 0, 137 }, { 13, 0, 258 },
+ { 14, 0, 111 }, { 14, 0, 225 }, { 14, 0, 253 }, { 14, 0, 304 },
+ { 14, 0, 339 }, { 14, 0, 417 }, { 18, 0, 33 }, { 4, 0, 503 },
+ { 7, 0, 1661 }, { 5, 0, 130 }, { 6, 0, 845 }, { 7, 0, 1314 },
+ { 9, 0, 610 }, { 10, 0, 718 }, { 11, 0, 601 }, { 11, 0, 819 },
+ { 11, 0, 946 }, { 12, 0, 536 }, { 10, 0, 149 }, { 11, 0, 280 },
+ { 14, 0, 336 }, { 6, 0, 1401 }, { 7, 0, 1946 }, { 8, 0, 663 },
+ { 16, 0, 8 }, { 6, 0, 1607 }, { 7, 10, 2023 }, { 4, 11, 289 },
+ { 7, 11, 629 }, { 7, 11, 1698 }, { 7, 11, 1711 }, { 12, 11, 215 },
+ { 6, 11, 450 }, { 8, 11, 109 }, { 10, 0, 882 }, { 10, 0, 883 },
+ { 10, 0, 914 }, { 10, 0, 928 }, { 5, 10, 843 }, { 8, 11, 705 },
+ { 4, 10, 554 }, { 5, 10, 536 }, { 5, 0, 417 }, { 9, 10, 79 },
+ { 11, 10, 625 }, { 17, 10, 7 }, { 7, 11, 1238 }, { 14, 11, 37 },
+ { 4, 0, 392 }, { 7, 0, 1597 }, { 5, 0, 433 }, { 9, 0, 633 },
+ { 11, 0, 629 }, { 4, 10, 424 }, { 7, 10, 336 }, { 8, 10, 785 },
+ { 6, 11, 355 }, { 6, 0, 234 }, { 7, 0, 769 }, { 9, 0, 18 },
+ { 10, 0, 358 }, { 4, 10, 896 }, { 6, 10, 1777 }, { 10, 11, 323 },
+ { 7, 0, 140 }, { 7, 0, 1950 }, { 8, 0, 680 }, { 11, 0, 817 },
+ { 19, 0, 88 }, { 7, 0, 1222 }, { 10, 0, 386 }, { 11, 11, 908 },
+ { 11, 0, 249 }, { 12, 0, 313 }, { 16, 0, 66 }, { 17, 0, 26 },
+ { 6, 0, 5 }, { 7, 10, 750 }, { 9, 10, 223 }, { 11, 10, 27 },
+ { 11, 10, 466 }, { 12, 10, 624 }, { 14, 10, 265 }, { 18, 10, 61 },
+ { 6, 11, 26 }, { 6, 0, 1216 }, { 5, 0, 963 }, { 6, 0, 1773 },
+ { 4, 11, 414 }, { 5, 11, 467 }, { 9, 11, 654 }, { 10, 11, 451 },
+ { 12, 11, 59 }, { 13, 11, 375 }, { 7, 11, 17 }, { 4, 10, 603 },
+ { 5, 10, 661 }, { 4, 10, 11 }, { 6, 10, 128 }, { 7, 10, 231 },
+ { 7, 10, 1533 }, { 10, 10, 725 }, { 7, 11, 955 }, { 7, 0, 180 },
+ { 8, 0, 509 }, { 8, 0, 792 }, { 4, 10, 476 }, { 4, 0, 1002 },
+ { 5, 11, 538 }, { 7, 10, 1807 }, { 4, 0, 931 }, { 7, 0, 943 },
+ { 11, 0, 614 }, { 12, 0, 747 }, { 7, 0, 1837 }, { 9, 10, 20 },
+ { 10, 10, 324 }, { 10, 10, 807 }, { 11, 10, 488 }, { 6, 0, 641 },
+ { 6, 11, 280 }, { 10, 11, 502 }, { 11, 11, 344 }, { 12, 11, 38 },
+ { 5, 11, 45 }, { 7, 11, 1161 }, { 11, 11, 448 }, { 11, 11, 880 },
+ { 13, 11, 139 }, { 13, 11, 407 }, { 15, 11, 16 }, { 17, 11, 95 },
+ { 18, 11, 66 }, { 18, 11, 88 }, { 18, 11, 123 }, { 21, 11, 7 },
+ { 9, 0, 280 }, { 10, 0, 134 }, { 22, 0, 22 }, { 23, 0, 5 },
+ { 23, 0, 29 }, { 8, 11, 777 }, { 4, 0, 90 }, { 5, 0, 545 },
+ { 7, 0, 754 }, { 9, 0, 186 }, { 10, 0, 72 }, { 10, 0, 782 },
+ { 11, 0, 577 }, { 11, 0, 610 }, { 11, 0, 960 }, { 12, 0, 354 },
+ { 12, 0, 362 }, { 12, 0, 595 }, { 4, 11, 410 }, { 7, 11, 521 },
+ { 7, 11, 1778 }, { 5, 10, 112 }, { 6, 10, 103 }, { 6, 10, 150 },
+ { 10, 10, 356 }, { 4, 0, 742 }, { 7, 0, 151 }, { 9, 0, 329 },
+ { 11, 0, 254 }, { 8, 0, 853 }, { 8, 0, 881 }, { 8, 0, 911 },
+ { 8, 0, 912 }, { 10, 0, 872 }, { 12, 0, 741 }, { 12, 0, 742 },
+ { 24, 0, 18 }, { 4, 11, 573 }, { 8, 11, 655 }, { 6, 0, 921 },
+ { 6, 0, 934 }, { 9, 0, 187 }, { 10, 0, 36 }, { 11, 0, 1016 },
+ { 17, 0, 44 }, { 18, 0, 64 }, { 7, 0, 833 }, { 8, 0, 517 },
+ { 4, 0, 506 }, { 5, 0, 295 }, { 7, 0, 1680 }, { 4, 10, 708 },
+ { 8, 10, 15 }, { 9, 10, 50 }, { 9, 10, 386 }, { 11, 10, 18 },
+ { 11, 10, 529 }, { 12, 10, 228 }, { 7, 0, 251 }, { 7, 0, 1701 },
+ { 8, 0, 436 }, { 4, 10, 563 }, { 7, 10, 592 }, { 7, 10, 637 },
+ { 7, 10, 770 }, { 8, 10, 463 }, { 9, 10, 60 }, { 9, 10, 335 },
+ { 9, 10, 904 }, { 10, 10, 73 }, { 11, 10, 434 }, { 12, 10, 585 },
+ { 13, 10, 331 }, { 18, 10, 110 }, { 20, 10, 60 }, { 4, 10, 502 },
+ { 8, 0, 584 }, { 6, 10, 347 }, { 10, 10, 161 }, { 7, 0, 987 },
+ { 9, 0, 688 }, { 10, 0, 522 }, { 11, 0, 788 }, { 12, 0, 137 },
+ { 12, 0, 566 }, { 14, 0, 9 }, { 14, 0, 24 }, { 14, 0, 64 },
+ { 7, 11, 899 }, { 14, 11, 325 }, { 4, 0, 214 }, { 5, 0, 500 },
+ { 5, 10, 102 }, { 6, 10, 284 }, { 7, 10, 1079 }, { 7, 10, 1423 },
+ { 7, 10, 1702 }, { 8, 10, 470 }, { 9, 10, 554 }, { 9, 10, 723 },
+ { 11, 10, 333 }, { 7, 10, 246 }, { 7, 10, 840 }, { 6, 10, 10 },
+ { 8, 10, 571 }, { 9, 10, 739 }, { 15, 10, 91 }, { 5, 10, 626 },
+ { 18, 0, 195 }, { 6, 0, 1775 }, { 7, 0, 389 }, { 7, 0, 700 },
+ { 7, 0, 940 }, { 8, 0, 514 }, { 9, 0, 116 }, { 9, 0, 535 },
+ { 10, 0, 118 }, { 11, 0, 107 }, { 11, 0, 148 }, { 11, 0, 922 },
+ { 12, 0, 254 }, { 12, 0, 421 }, { 14, 0, 238 }, { 5, 10, 18 },
+ { 6, 10, 526 }, { 13, 10, 24 }, { 13, 10, 110 }, { 19, 10, 5 },
+ { 19, 10, 44 }, { 4, 0, 743 }, { 11, 0, 292 }, { 4, 10, 309 },
+ { 5, 10, 462 }, { 7, 10, 970 }, { 7, 10, 1097 }, { 22, 10, 30 },
+ { 22, 10, 33 }, { 11, 11, 338 }, { 7, 11, 1598 }, { 7, 0, 1283 },
+ { 9, 0, 227 }, { 11, 0, 325 }, { 11, 0, 408 }, { 14, 0, 180 },
+ { 18, 0, 47 }, { 4, 0, 953 }, { 6, 0, 1805 }, { 6, 0, 1814 },
+ { 6, 0, 1862 }, { 12, 0, 774 }, { 6, 11, 611 }, { 7, 11, 1733 },
+ { 7, 11, 1464 }, { 5, 0, 81 }, { 7, 0, 146 }, { 7, 0, 1342 },
+ { 8, 0, 53 }, { 8, 0, 561 }, { 8, 0, 694 }, { 8, 0, 754 },
+ { 9, 0, 115 }, { 9, 0, 179 }, { 9, 0, 894 }, { 10, 0, 462 },
+ { 10, 0, 813 }, { 11, 0, 230 }, { 11, 0, 657 }, { 11, 0, 699 },
+ { 11, 0, 748 }, { 12, 0, 119 }, { 12, 0, 200 }, { 12, 0, 283 },
+ { 14, 0, 273 }, { 5, 0, 408 }, { 6, 0, 789 }, { 6, 0, 877 },
+ { 6, 0, 1253 }, { 6, 0, 1413 }, { 9, 0, 747 }, { 6, 10, 1704 },
+ { 7, 11, 663 }, { 6, 0, 1910 }, { 6, 0, 1915 }, { 6, 0, 1923 },
+ { 9, 0, 913 }, { 9, 0, 928 }, { 9, 0, 950 }, { 9, 0, 954 },
+ { 9, 0, 978 }, { 9, 0, 993 }, { 12, 0, 812 }, { 12, 0, 819 },
+ { 12, 0, 831 }, { 12, 0, 833 }, { 12, 0, 838 }, { 12, 0, 909 },
+ { 12, 0, 928 }, { 12, 0, 931 }, { 12, 0, 950 }, { 15, 0, 186 },
+ { 15, 0, 187 }, { 15, 0, 195 }, { 15, 0, 196 }, { 15, 0, 209 },
+ { 15, 0, 215 }, { 15, 0, 236 }, { 15, 0, 241 }, { 15, 0, 249 },
+ { 15, 0, 253 }, { 18, 0, 180 }, { 18, 0, 221 }, { 18, 0, 224 },
+ { 18, 0, 227 }, { 18, 0, 229 }, { 21, 0, 60 }, { 7, 0, 1826 },
+ { 7, 0, 1938 }, { 11, 0, 490 }, { 18, 0, 143 }, { 5, 10, 86 },
+ { 7, 10, 743 }, { 9, 10, 85 }, { 10, 10, 281 }, { 10, 10, 432 },
+ { 12, 10, 251 }, { 13, 10, 118 }, { 14, 10, 378 }, { 5, 10, 524 },
+ { 5, 10, 744 }, { 13, 11, 442 }, { 10, 10, 107 }, { 12, 10, 436 },
+ { 7, 11, 503 }, { 6, 0, 1162 }, { 4, 10, 927 }, { 7, 0, 30 },
+ { 8, 0, 86 }, { 8, 0, 315 }, { 8, 0, 700 }, { 9, 0, 576 },
+ { 9, 0, 858 }, { 10, 0, 414 }, { 11, 0, 310 }, { 11, 0, 888 },
+ { 11, 0, 904 }, { 12, 0, 361 }, { 13, 0, 248 }, { 13, 0, 371 },
+ { 14, 0, 142 }, { 12, 10, 670 }, { 18, 10, 94 }, { 6, 0, 721 },
+ { 4, 11, 113 }, { 5, 11, 163 }, { 5, 11, 735 }, { 7, 11, 1009 },
+ { 7, 10, 1149 }, { 9, 11, 9 }, { 9, 10, 156 }, { 9, 11, 771 },
+ { 12, 11, 90 }, { 13, 11, 138 }, { 13, 11, 410 }, { 15, 11, 128 },
+ { 10, 0, 839 }, { 5, 10, 778 }, { 9, 0, 617 }, { 5, 10, 502 },
+ { 8, 10, 196 }, { 10, 10, 283 }, { 11, 10, 406 }, { 6, 0, 428 },
+ { 7, 0, 524 }, { 8, 0, 169 }, { 8, 0, 234 }, { 9, 0, 480 },
+ { 10, 0, 646 }, { 5, 10, 855 }, { 6, 0, 1648 }, { 7, 0, 1205 },
+ { 10, 0, 637 }, { 7, 0, 1596 }, { 4, 11, 935 }, { 5, 11, 823 },
+ { 5, 11, 269 }, { 7, 11, 434 }, { 7, 11, 891 }, { 8, 11, 339 },
+ { 9, 11, 702 }, { 11, 11, 594 }, { 11, 11, 718 }, { 17, 11, 100 },
+ { 7, 11, 878 }, { 9, 11, 485 }, { 13, 11, 264 }, { 4, 0, 266 },
+ { 8, 0, 4 }, { 9, 0, 39 }, { 10, 0, 166 }, { 11, 0, 918 },
+ { 12, 0, 635 }, { 20, 0, 10 }, { 22, 0, 27 }, { 22, 0, 43 },
+ { 22, 0, 52 }, { 6, 11, 1713 }, { 7, 10, 1400 }, { 9, 10, 446 },
+ { 10, 10, 45 }, { 7, 11, 900 }, { 4, 0, 862 }, { 6, 0, 1554 },
+ { 7, 11, 1033 }, { 19, 0, 16 }, { 19, 11, 16 }, { 7, 11, 1208 },
+ { 7, 0, 157 }, { 8, 0, 279 }, { 6, 0, 604 }, { 8, 0, 391 },
+ { 13, 10, 455 }, { 15, 10, 99 }, { 15, 10, 129 }, { 16, 10, 68 },
+ { 7, 10, 172 }, { 7, 0, 945 }, { 11, 0, 713 }, { 11, 0, 744 },
+ { 4, 0, 973 }, { 10, 0, 877 }, { 10, 0, 937 }, { 10, 0, 938 },
+ { 12, 0, 711 }, { 11, 0, 1022 }, { 4, 10, 568 }, { 14, 11, 143 },
+ { 4, 0, 567 }, { 9, 0, 859 }, { 4, 10, 732 }, { 7, 0, 1846 },
+ { 8, 0, 628 }, { 8, 10, 733 }, { 5, 0, 762 }, { 4, 10, 428 },
+ { 7, 10, 1789 }, { 10, 0, 784 }, { 13, 0, 191 }, { 7, 10, 2015 },
+ { 12, 10, 665 }, { 5, 0, 298 }, { 7, 0, 633 }, { 7, 0, 905 },
+ { 7, 0, 909 }, { 7, 0, 1538 }, { 9, 0, 767 }, { 12, 0, 636 },
+ { 10, 10, 806 }, { 4, 0, 795 }, { 11, 0, 301 }, { 7, 0, 1970 },
+ { 5, 11, 625 }, { 7, 11, 1617 }, { 7, 11, 275 }, { 7, 11, 37 },
+ { 8, 11, 425 }, { 8, 11, 693 }, { 9, 11, 720 }, { 10, 11, 380 },
+ { 10, 11, 638 }, { 11, 11, 273 }, { 11, 11, 307 }, { 11, 11, 473 },
+ { 12, 11, 61 }, { 15, 11, 43 }, { 7, 11, 198 }, { 6, 0, 1236 },
+ { 7, 0, 369 }, { 12, 0, 644 }, { 12, 0, 645 }, { 16, 0, 90 },
+ { 19, 0, 15 }, { 21, 0, 27 }, { 6, 0, 71 }, { 7, 0, 845 },
+ { 8, 0, 160 }, { 9, 0, 318 }, { 6, 10, 1623 }, { 6, 10, 1681 },
+ { 6, 0, 1447 }, { 6, 0, 1255 }, { 10, 0, 735 }, { 8, 0, 76 },
+ { 4, 11, 168 }, { 6, 10, 1748 }, { 8, 10, 715 }, { 9, 10, 802 },
+ { 10, 10, 46 }, { 10, 10, 819 }, { 13, 10, 308 }, { 14, 10, 351 },
+ { 14, 10, 363 }, { 18, 10, 67 }, { 7, 11, 91 }, { 6, 0, 474 },
+ { 4, 10, 63 }, { 5, 10, 347 }, { 5, 10, 749 }, { 10, 0, 841 },
+ { 5, 10, 366 }, { 6, 0, 836 }, { 4, 11, 225 }, { 7, 0, 1622 },
+ { 7, 10, 89 }, { 12, 0, 735 }, { 6, 0, 1601 }, { 10, 11, 145 },
+ { 6, 0, 1390 }, { 9, 0, 804 }, { 14, 0, 394 }, { 6, 11, 15 },
+ { 7, 11, 70 }, { 10, 11, 240 }, { 19, 11, 93 }, { 6, 0, 96 },
+ { 7, 0, 1426 }, { 4, 0, 651 }, { 5, 0, 289 }, { 7, 11, 956 },
+ { 7, 10, 977 }, { 7, 11, 1157 }, { 7, 11, 1506 }, { 7, 11, 1606 },
+ { 7, 11, 1615 }, { 7, 11, 1619 }, { 7, 11, 1736 }, { 7, 11, 1775 },
+ { 8, 11, 590 }, { 9, 11, 324 }, { 9, 11, 736 }, { 9, 11, 774 },
+ { 9, 11, 776 }, { 9, 11, 784 }, { 10, 11, 567 }, { 10, 11, 708 },
+ { 11, 11, 518 }, { 11, 11, 613 }, { 11, 11, 695 }, { 11, 11, 716 },
+ { 11, 11, 739 }, { 11, 11, 770 }, { 11, 11, 771 }, { 11, 11, 848 },
+ { 11, 11, 857 }, { 11, 11, 931 }, { 11, 11, 947 }, { 12, 11, 326 },
+ { 12, 11, 387 }, { 12, 11, 484 }, { 12, 11, 528 }, { 12, 11, 552 },
+ { 12, 11, 613 }, { 13, 11, 189 }, { 13, 11, 256 }, { 13, 11, 340 },
+ { 13, 11, 432 }, { 13, 11, 436 }, { 13, 11, 440 }, { 13, 11, 454 },
+ { 14, 11, 174 }, { 14, 11, 220 }, { 14, 11, 284 }, { 14, 11, 390 },
+ { 17, 11, 121 }, { 7, 0, 688 }, { 8, 0, 35 }, { 9, 0, 511 },
+ { 10, 0, 767 }, { 19, 0, 118 }, { 6, 0, 667 }, { 4, 0, 513 },
+ { 5, 10, 824 }, { 5, 10, 941 }, { 7, 10, 440 }, { 8, 10, 230 },
+ { 11, 10, 106 }, { 6, 0, 2034 }, { 7, 11, 1399 }, { 15, 11, 66 },
+ { 7, 11, 1529 }, { 4, 11, 145 }, { 6, 11, 176 }, { 7, 11, 395 },
+ { 9, 11, 562 }, { 16, 11, 28 }, { 4, 11, 501 }, { 4, 0, 704 },
+ { 6, 0, 1524 }, { 7, 0, 1078 }, { 6, 11, 464 }, { 6, 11, 509 },
+ { 10, 11, 82 }, { 20, 11, 91 }, { 23, 11, 13 }, { 4, 0, 720 },
+ { 5, 0, 306 }, { 5, 0, 431 }, { 7, 0, 1196 }, { 4, 10, 914 },
+ { 5, 10, 800 }, { 5, 10, 852 }, { 7, 11, 1189 }, { 10, 0, 54 },
+ { 13, 10, 115 }, { 7, 10, 564 }, { 14, 10, 168 }, { 5, 0, 464 },
+ { 6, 0, 236 }, { 7, 0, 696 }, { 7, 0, 914 }, { 7, 0, 1108 },
+ { 7, 0, 1448 }, { 9, 0, 15 }, { 9, 0, 564 }, { 10, 0, 14 },
+ { 12, 0, 565 }, { 13, 0, 449 }, { 14, 0, 53 }, { 15, 0, 13 },
+ { 16, 0, 64 }, { 17, 0, 41 }, { 4, 10, 918 }, { 5, 10, 876 },
+ { 6, 0, 1418 }, { 6, 10, 1764 }, { 4, 10, 92 }, { 5, 10, 274 },
+ { 6, 0, 907 }, { 4, 11, 114 }, { 8, 10, 501 }, { 9, 11, 492 },
+ { 13, 11, 462 }, { 14, 11, 215 }, { 4, 11, 77 }, { 5, 11, 361 },
+ { 6, 11, 139 }, { 6, 11, 401 }, { 6, 11, 404 }, { 7, 11, 413 },
+ { 7, 11, 715 }, { 7, 11, 1716 }, { 11, 11, 279 }, { 12, 11, 179 },
+ { 12, 11, 258 }, { 13, 11, 244 }, { 14, 11, 358 }, { 6, 0, 1767 },
+ { 12, 0, 194 }, { 17, 0, 107 }, { 6, 11, 1717 }, { 5, 10, 743 },
+ { 14, 11, 329 }, { 4, 10, 49 }, { 7, 10, 280 }, { 7, 10, 1633 },
+ { 5, 0, 840 }, { 7, 11, 1061 }, { 8, 11, 82 }, { 11, 11, 250 },
+ { 12, 11, 420 }, { 13, 11, 184 }, { 7, 11, 724 }, { 6, 0, 900 },
+ { 8, 10, 47 }, { 6, 0, 1436 }, { 16, 11, 0 }, { 6, 0, 675 },
+ { 7, 0, 1008 }, { 7, 0, 1560 }, { 9, 0, 642 }, { 11, 0, 236 },
+ { 14, 0, 193 }, { 5, 10, 272 }, { 5, 10, 908 }, { 5, 10, 942 },
+ { 8, 10, 197 }, { 9, 10, 47 }, { 11, 10, 538 }, { 11, 10, 742 },
+ { 4, 0, 68 }, { 5, 0, 628 }, { 5, 0, 634 }, { 6, 0, 386 },
+ { 7, 0, 794 }, { 8, 0, 273 }, { 9, 0, 563 }, { 10, 0, 105 },
+ { 10, 0, 171 }, { 11, 0, 94 }, { 11, 0, 354 }, { 7, 10, 1911 },
+ { 9, 10, 891 }, { 4, 0, 95 }, { 6, 0, 1297 }, { 6, 0, 1604 },
+ { 7, 0, 416 }, { 11, 0, 830 }, { 6, 11, 513 }, { 7, 11, 1052 },
+ { 7, 0, 731 }, { 13, 0, 20 }, { 15, 0, 11 }, { 9, 11, 899 },
+ { 10, 0, 850 }, { 12, 0, 697 }, { 4, 0, 662 }, { 7, 11, 1417 },
+ { 12, 11, 382 }, { 17, 11, 48 }, { 24, 11, 12 }, { 5, 0, 736 },
+ { 4, 0, 861 }, { 4, 10, 407 }, { 4, 10, 560 }, { 13, 10, 490 },
+ { 6, 11, 545 }, { 7, 11, 565 }, { 7, 11, 1669 }, { 10, 11, 114 },
+ { 11, 11, 642 }, { 12, 11, 618 }, { 6, 0, 871 }, { 6, 0, 1000 },
+ { 5, 0, 864 }, { 10, 0, 648 }, { 11, 0, 671 }, { 15, 0, 46 },
+ { 5, 11, 5 }, { 5, 0, 928 }, { 11, 0, 90 }, { 13, 0, 7 },
+ { 4, 10, 475 }, { 11, 10, 35 }, { 13, 10, 71 }, { 13, 10, 177 },
+ { 14, 10, 422 }, { 8, 0, 332 }, { 7, 11, 192 }, { 6, 0, 1055 },
+ { 8, 11, 763 }, { 11, 0, 986 }, { 12, 0, 682 }, { 7, 0, 76 },
+ { 8, 0, 44 }, { 9, 0, 884 }, { 10, 0, 580 }, { 11, 0, 399 },
+ { 11, 0, 894 }, { 15, 0, 122 }, { 7, 11, 1237 }, { 7, 10, 636 },
+ { 11, 0, 300 }, { 6, 10, 222 }, { 7, 10, 1620 }, { 8, 10, 409 },
+ { 9, 10, 693 }, { 4, 11, 87 }, { 5, 11, 250 }, { 10, 11, 601 },
+ { 13, 11, 298 }, { 13, 11, 353 }, { 13, 11, 376 }, { 5, 0, 518 },
+ { 10, 0, 340 }, { 11, 0, 175 }, { 21, 0, 16 }, { 12, 0, 771 },
+ { 6, 0, 1108 }, { 9, 0, 831 }, { 4, 0, 836 }, { 7, 0, 1852 },
+ { 4, 0, 957 }, { 6, 0, 1804 }, { 8, 0, 842 }, { 8, 0, 843 },
+ { 8, 0, 851 }, { 8, 0, 855 }, { 12, 0, 767 }, { 7, 11, 814 },
+ { 4, 11, 57 }, { 7, 11, 1195 }, { 7, 11, 1438 }, { 7, 11, 1548 },
+ { 7, 11, 1835 }, { 7, 11, 1904 }, { 9, 11, 757 }, { 10, 11, 604 },
+ { 11, 11, 519 }, { 5, 10, 882 }, { 10, 0, 246 }, { 4, 0, 934 },
+ { 5, 0, 202 }, { 8, 0, 610 }, { 7, 11, 1897 }, { 12, 11, 290 },
+ { 13, 11, 80 }, { 13, 11, 437 }, { 17, 11, 74 }, { 8, 0, 96 },
+ { 9, 0, 36 }, { 10, 0, 607 }, { 10, 0, 804 }, { 10, 0, 832 },
+ { 11, 0, 423 }, { 11, 0, 442 }, { 12, 0, 309 }, { 14, 0, 199 },
+ { 15, 0, 90 }, { 17, 0, 110 }, { 4, 10, 426 }, { 7, 0, 654 },
+ { 8, 0, 240 }, { 6, 10, 58 }, { 7, 10, 745 }, { 7, 10, 1969 },
+ { 8, 10, 675 }, { 9, 10, 479 }, { 9, 10, 731 }, { 10, 10, 330 },
+ { 10, 10, 593 }, { 10, 10, 817 }, { 11, 10, 32 }, { 11, 10, 133 },
+ { 11, 10, 221 }, { 17, 10, 68 }, { 9, 0, 13 }, { 9, 0, 398 },
+ { 9, 0, 727 }, { 10, 0, 75 }, { 10, 0, 184 }, { 10, 0, 230 },
+ { 10, 0, 564 }, { 10, 0, 569 }, { 11, 0, 973 }, { 12, 0, 70 },
+ { 12, 0, 189 }, { 13, 0, 57 }, { 13, 0, 257 }, { 4, 11, 209 },
+ { 7, 11, 902 }, { 7, 0, 391 }, { 9, 10, 538 }, { 6, 0, 403 },
+ { 6, 11, 303 }, { 7, 11, 335 }, { 7, 11, 1437 }, { 7, 11, 1668 },
+ { 8, 11, 553 }, { 8, 11, 652 }, { 8, 11, 656 }, { 9, 11, 558 },
+ { 11, 11, 743 }, { 21, 11, 18 }, { 4, 11, 559 }, { 11, 0, 75 },
+ { 14, 0, 267 }, { 6, 0, 815 }, { 13, 11, 2 }, { 13, 0, 366 },
+ { 9, 0, 631 }, { 5, 11, 1017 }, { 5, 0, 345 }, { 7, 0, 1016 },
+ { 5, 11, 709 }, { 6, 11, 1745 }, { 5, 10, 566 }, { 7, 0, 952 },
+ { 6, 10, 48 }, { 9, 10, 139 }, { 10, 10, 399 }, { 11, 10, 469 },
+ { 12, 10, 634 }, { 13, 10, 223 }, { 5, 0, 673 }, { 9, 0, 850 },
+ { 7, 11, 8 }, { 8, 11, 206 }, { 6, 0, 662 }, { 21, 0, 35 },
+ { 4, 0, 287 }, { 5, 0, 1018 }, { 6, 10, 114 }, { 7, 10, 1224 },
+ { 7, 10, 1556 }, { 8, 10, 3 }, { 8, 10, 576 }, { 9, 10, 267 },
+ { 4, 0, 884 }, { 5, 0, 34 }, { 10, 0, 724 }, { 12, 0, 444 },
+ { 13, 0, 354 }, { 18, 0, 32 }, { 23, 0, 24 }, { 23, 0, 31 },
+ { 24, 0, 5 }, { 5, 10, 933 }, { 4, 11, 776 }, { 10, 0, 151 },
+ { 8, 0, 427 }, { 6, 0, 382 }, { 4, 0, 329 }, { 9, 0, 846 },
+ { 10, 0, 827 }, { 10, 11, 33 }, { 9, 0, 279 }, { 10, 0, 407 },
+ { 14, 0, 84 }, { 22, 0, 18 }, { 7, 11, 1297 }, { 8, 11, 406 },
+ { 4, 0, 906 }, { 8, 0, 366 }, { 6, 0, 843 }, { 6, 0, 1443 },
+ { 7, 0, 1372 }, { 10, 0, 992 }, { 4, 0, 123 }, { 5, 0, 605 },
+ { 7, 0, 1509 }, { 8, 0, 36 }, { 4, 0, 649 }, { 8, 11, 175 },
+ { 10, 11, 168 }, { 10, 11, 573 }, { 5, 0, 767 }, { 6, 0, 1018 },
+ { 7, 11, 1305 }, { 12, 10, 30 }, { 13, 10, 148 }, { 14, 10, 87 },
+ { 14, 10, 182 }, { 16, 10, 42 }, { 20, 10, 70 }, { 6, 11, 607 },
+ { 4, 0, 273 }, { 5, 0, 658 }, { 5, 0, 995 }, { 6, 0, 72 },
+ { 11, 11, 174 }, { 10, 0, 483 }, { 12, 0, 368 }, { 7, 10, 56 },
+ { 7, 10, 1989 }, { 8, 10, 337 }, { 8, 10, 738 }, { 9, 10, 600 },
+ { 13, 10, 447 }, { 14, 10, 92 }, { 5, 11, 784 }, { 10, 10, 666 },
+ { 7, 0, 1345 }, { 11, 11, 882 }, { 6, 0, 1293 }, { 5, 0, 589 },
+ { 6, 0, 1988 }, { 5, 0, 117 }, { 6, 0, 514 }, { 6, 0, 541 },
+ { 7, 0, 1164 }, { 7, 0, 1436 }, { 8, 0, 220 }, { 8, 0, 648 },
+ { 10, 0, 688 }, { 11, 0, 560 }, { 8, 0, 379 }, { 5, 0, 686 },
+ { 7, 10, 866 }, { 7, 10, 1163 }, { 4, 10, 328 }, { 9, 11, 14 },
+ { 9, 11, 441 }, { 10, 11, 306 }, { 11, 11, 9 }, { 4, 10, 101 },
+ { 7, 10, 1171 }, { 5, 10, 833 }, { 8, 10, 744 }, { 5, 11, 161 },
+ { 7, 11, 839 }, { 7, 11, 887 }, { 7, 0, 196 }, { 10, 0, 765 },
+ { 11, 0, 347 }, { 11, 0, 552 }, { 11, 0, 790 }, { 12, 0, 263 },
+ { 13, 0, 246 }, { 13, 0, 270 }, { 13, 0, 395 }, { 14, 0, 176 },
+ { 14, 0, 190 }, { 14, 0, 398 }, { 14, 0, 412 }, { 15, 0, 32 },
+ { 15, 0, 63 }, { 16, 0, 88 }, { 19, 0, 105 }, { 6, 10, 9 },
+ { 6, 10, 397 }, { 7, 10, 53 }, { 7, 10, 1742 }, { 10, 10, 632 },
+ { 11, 10, 828 }, { 12, 10, 146 }, { 5, 0, 381 }, { 7, 0, 1792 },
+ { 6, 0, 1452 }, { 7, 11, 429 }, { 8, 0, 367 }, { 10, 0, 760 },
+ { 14, 0, 79 }, { 20, 0, 17 }, { 24, 0, 0 }, { 7, 0, 616 },
+ { 10, 0, 413 }, { 11, 10, 417 }, { 12, 10, 223 }, { 12, 10, 265 },
+ { 7, 11, 1611 }, { 13, 11, 14 }, { 15, 11, 44 }, { 19, 11, 13 },
+ { 20, 11, 76 }, { 7, 0, 1229 }, { 6, 0, 120 }, { 7, 0, 1188 },
+ { 7, 0, 1710 }, { 8, 0, 286 }, { 9, 0, 667 }, { 11, 0, 592 },
+ { 11, 0, 730 }, { 7, 11, 1814 }, { 7, 0, 1146 }, { 4, 10, 186 },
+ { 5, 10, 157 }, { 8, 10, 168 }, { 10, 10, 6 }, { 4, 0, 352 },
+ { 7, 0, 687 }, { 4, 0, 192 }, { 5, 0, 49 }, { 6, 0, 200 },
+ { 6, 0, 293 }, { 6, 0, 1696 }, { 7, 0, 1151 }, { 5, 10, 875 },
+ { 5, 10, 773 }, { 5, 10, 991 }, { 6, 10, 1635 }, { 6, 10, 1788 },
+ { 7, 10, 111 }, { 8, 10, 581 }, { 6, 0, 935 }, { 6, 0, 1151 },
+ { 6, 0, 1050 }, { 4, 0, 650 }, { 4, 0, 147 }, { 11, 0, 194 },
+ { 12, 0, 62 }, { 12, 0, 88 }, { 11, 11, 194 }, { 12, 11, 62 },
+ { 12, 11, 88 }, { 6, 0, 339 }, { 7, 0, 923 }, { 6, 10, 1747 },
+ { 7, 11, 643 }, { 8, 11, 236 }, { 5, 0, 934 }, { 7, 10, 1364 },
+ { 7, 10, 1907 }, { 13, 10, 158 }, { 4, 10, 659 }, { 4, 10, 404 },
+ { 7, 10, 675 }, { 7, 11, 581 }, { 9, 11, 644 }, { 9, 11, 699 },
+ { 13, 0, 211 }, { 14, 0, 133 }, { 14, 0, 204 }, { 15, 0, 64 },
+ { 15, 0, 69 }, { 15, 0, 114 }, { 16, 0, 10 }, { 19, 0, 23 },
+ { 19, 0, 35 }, { 19, 0, 39 }, { 19, 0, 51 }, { 19, 0, 71 },
+ { 19, 0, 75 }, { 24, 0, 15 }, { 5, 10, 391 }, { 5, 11, 54 },
+ { 7, 11, 1513 }, { 7, 0, 222 }, { 8, 0, 341 }, { 5, 10, 540 },
+ { 6, 10, 1697 }, { 6, 10, 78 }, { 4, 11, 744 }, { 8, 0, 293 },
+ { 9, 11, 701 }, { 7, 11, 930 }, { 10, 11, 402 }, { 10, 11, 476 },
+ { 13, 11, 452 }, { 18, 11, 55 }, { 19, 11, 104 }, { 4, 0, 637 },
+ { 5, 10, 460 }, { 8, 11, 50 }, { 9, 11, 624 }, { 4, 11, 572 },
+ { 6, 0, 1159 }, { 4, 10, 199 }, { 11, 10, 34 }, { 6, 0, 847 },
+ { 6, 10, 388 }, { 6, 11, 43 }, { 7, 11, 38 }, { 8, 11, 248 },
+ { 9, 11, 504 }, { 10, 11, 513 }, { 9, 0, 683 }, { 4, 10, 511 },
+ { 6, 10, 608 }, { 9, 10, 333 }, { 10, 10, 602 }, { 11, 10, 441 },
+ { 11, 10, 723 }, { 11, 10, 976 }, { 12, 10, 357 }, { 9, 0, 867 },
+ { 10, 0, 837 }, { 6, 0, 944 }, { 7, 11, 326 }, { 7, 0, 1809 },
+ { 5, 10, 938 }, { 7, 11, 783 }, { 8, 10, 707 }, { 5, 11, 766 },
+ { 5, 11, 363 }, { 6, 0, 170 }, { 7, 0, 1080 }, { 8, 0, 395 },
+ { 8, 0, 487 }, { 13, 0, 147 }, { 6, 11, 258 }, { 12, 11, 409 },
+ { 4, 0, 535 }, { 8, 0, 618 }, { 5, 11, 249 }, { 20, 11, 82 },
+ { 6, 0, 1379 }, { 21, 11, 15 }, { 7, 0, 1625 }, { 22, 0, 23 },
+ { 5, 11, 393 }, { 6, 11, 378 }, { 7, 11, 1981 }, { 9, 11, 32 },
+ { 9, 11, 591 }, { 10, 11, 685 }, { 10, 11, 741 }, { 14, 11, 382 },
+ { 5, 11, 788 }, { 7, 11, 1968 }, { 10, 11, 19 }, { 11, 11, 911 },
+ { 7, 11, 1401 }, { 7, 11, 1476 }, { 4, 11, 61 }, { 5, 11, 58 },
+ { 5, 11, 171 }, { 5, 11, 635 }, { 5, 11, 683 }, { 5, 11, 700 },
+ { 6, 11, 291 }, { 6, 11, 566 }, { 7, 11, 1650 }, { 11, 11, 523 },
+ { 12, 11, 273 }, { 12, 11, 303 }, { 15, 11, 39 }, { 15, 11, 111 },
+ { 6, 10, 469 }, { 7, 10, 1709 }, { 10, 10, 515 }, { 4, 0, 778 },
+ { 6, 11, 589 }, { 4, 0, 46 }, { 5, 0, 811 }, { 6, 0, 1679 },
+ { 6, 0, 1714 }, { 7, 0, 2032 }, { 7, 0, 1458 }, { 9, 0, 407 },
+ { 11, 0, 15 }, { 12, 0, 651 }, { 21, 0, 37 }, { 7, 0, 938 },
+ { 4, 10, 500 }, { 6, 0, 34 }, { 7, 0, 69 }, { 7, 0, 1089 },
+ { 7, 0, 1281 }, { 8, 0, 708 }, { 8, 0, 721 }, { 9, 0, 363 },
+ { 20, 0, 98 }, { 10, 11, 231 }, { 19, 11, 124 }, { 7, 11, 726 },
+ { 24, 11, 9 }, { 5, 10, 68 }, { 6, 10, 383 }, { 8, 11, 583 },
+ { 4, 11, 917 }, { 5, 11, 1005 }, { 11, 10, 216 }, { 11, 10, 340 },
+ { 7, 11, 1675 }, { 8, 0, 441 }, { 10, 0, 314 }, { 15, 0, 3 },
+ { 4, 11, 919 }, { 4, 10, 337 }, { 6, 10, 353 }, { 7, 10, 1934 },
+ { 8, 10, 488 }, { 9, 10, 429 }, { 7, 0, 889 }, { 7, 10, 1795 },
+ { 8, 10, 259 }, { 9, 10, 135 }, { 9, 10, 177 }, { 9, 10, 860 },
+ { 10, 10, 825 }, { 11, 10, 115 }, { 11, 10, 370 }, { 11, 10, 405 },
+ { 11, 10, 604 }, { 12, 10, 10 }, { 12, 10, 667 }, { 12, 10, 669 },
+ { 13, 10, 76 }, { 14, 10, 310 }, { 15, 10, 76 }, { 15, 10, 147 },
+ { 20, 10, 23 }, { 4, 10, 15 }, { 4, 11, 255 }, { 5, 10, 22 },
+ { 5, 11, 302 }, { 6, 11, 132 }, { 6, 10, 244 }, { 7, 10, 40 },
+ { 7, 11, 128 }, { 7, 10, 200 }, { 7, 11, 283 }, { 7, 10, 906 },
+ { 7, 10, 1199 }, { 7, 11, 1299 }, { 9, 10, 616 }, { 10, 11, 52 },
+ { 10, 11, 514 }, { 10, 10, 716 }, { 11, 10, 635 }, { 11, 10, 801 },
+ { 11, 11, 925 }, { 12, 10, 458 }, { 13, 11, 92 }, { 14, 11, 309 },
+ { 4, 0, 462 }, { 9, 11, 173 }, { 7, 10, 1735 }, { 8, 0, 525 },
+ { 5, 10, 598 }, { 7, 10, 791 }, { 8, 10, 108 }, { 9, 10, 123 },
+ { 5, 0, 73 }, { 6, 0, 23 }, { 6, 0, 338 }, { 4, 0, 676 },
+ { 4, 10, 683 }, { 7, 0, 725 }, { 8, 0, 498 }, { 11, 0, 268 },
+ { 12, 0, 21 }, { 23, 0, 7 }, { 7, 0, 773 }, { 4, 10, 155 },
+ { 7, 10, 1689 }, { 4, 0, 164 }, { 5, 0, 730 }, { 5, 10, 151 },
+ { 5, 10, 741 }, { 6, 11, 210 }, { 7, 10, 498 }, { 7, 10, 870 },
+ { 7, 10, 1542 }, { 12, 10, 213 }, { 14, 10, 36 }, { 14, 10, 391 },
+ { 17, 10, 111 }, { 18, 10, 6 }, { 18, 10, 46 }, { 18, 10, 151 },
+ { 19, 10, 36 }, { 20, 10, 32 }, { 20, 10, 56 }, { 20, 10, 69 },
+ { 20, 10, 102 }, { 21, 10, 4 }, { 22, 10, 8 }, { 22, 10, 10 },
+ { 22, 10, 14 }, { 22, 10, 31 }, { 4, 10, 624 }, { 7, 10, 1752 },
+ { 4, 0, 583 }, { 9, 0, 936 }, { 15, 0, 214 }, { 18, 0, 199 },
+ { 24, 0, 26 }, { 6, 11, 588 }, { 7, 0, 1462 }, { 11, 0, 659 },
+ { 4, 11, 284 }, { 6, 11, 223 }, { 5, 0, 220 }, { 11, 0, 803 },
+ { 4, 0, 544 }, { 4, 10, 492 }, { 5, 10, 451 }, { 16, 0, 98 },
+ { 20, 0, 119 }, { 4, 11, 218 }, { 7, 11, 526 }, { 15, 11, 137 },
+ { 7, 10, 835 }, { 4, 11, 270 }, { 5, 11, 192 }, { 6, 11, 332 },
+ { 7, 11, 1322 }, { 13, 11, 9 }, { 13, 10, 70 }, { 14, 11, 104 },
+ { 14, 11, 311 }, { 4, 10, 539 }, { 12, 11, 661 }, { 5, 0, 176 },
+ { 6, 0, 437 }, { 6, 0, 564 }, { 11, 0, 181 }, { 13, 0, 183 },
+ { 7, 0, 1192 }, { 6, 10, 113 }, { 7, 10, 436 }, { 8, 10, 718 },
+ { 7, 10, 520 }, { 7, 0, 1878 }, { 12, 11, 196 }, { 7, 11, 379 },
+ { 8, 11, 481 }, { 9, 11, 377 }, { 5, 11, 1003 }, { 6, 11, 149 },
+ { 9, 11, 746 }, { 8, 11, 262 }, { 9, 11, 627 }, { 10, 11, 18 },
+ { 11, 11, 214 }, { 11, 11, 404 }, { 11, 11, 457 }, { 11, 11, 780 },
+ { 11, 11, 849 }, { 11, 11, 913 }, { 13, 11, 330 }, { 13, 11, 401 },
+ { 14, 11, 200 }, { 21, 0, 26 }, { 8, 11, 304 }, { 4, 11, 142 },
+ { 7, 0, 944 }, { 4, 0, 790 }, { 5, 0, 273 }, { 6, 0, 394 },
+ { 6, 0, 855 }, { 4, 0, 135 }, { 6, 0, 127 }, { 7, 0, 1185 },
+ { 7, 0, 1511 }, { 8, 0, 613 }, { 11, 0, 5 }, { 12, 0, 336 },
+ { 12, 0, 495 }, { 12, 0, 586 }, { 12, 0, 660 }, { 12, 0, 668 },
+ { 14, 0, 385 }, { 15, 0, 118 }, { 17, 0, 20 }, { 18, 0, 98 },
+ { 6, 0, 230 }, { 9, 0, 752 }, { 18, 0, 109 }, { 12, 10, 610 },
+ { 13, 10, 431 }, { 16, 10, 59 }, { 7, 0, 1954 }, { 7, 11, 925 },
+ { 4, 11, 471 }, { 5, 11, 51 }, { 6, 11, 602 }, { 8, 11, 484 },
+ { 10, 11, 195 }, { 12, 11, 159 }, { 4, 10, 307 }, { 8, 11, 688 },
+ { 4, 11, 697 }, { 7, 11, 812 }, { 7, 11, 1261 }, { 7, 11, 1360 },
+ { 9, 11, 632 }, { 12, 11, 352 }, { 5, 0, 162 }, { 8, 0, 68 },
+ { 5, 10, 964 }, { 4, 0, 654 }, { 8, 11, 212 }, { 4, 0, 156 },
+ { 7, 0, 998 }, { 7, 0, 1045 }, { 7, 0, 1860 }, { 9, 0, 48 },
+ { 9, 0, 692 }, { 11, 0, 419 }, { 11, 0, 602 }, { 5, 11, 221 },
+ { 4, 11, 373 }, { 5, 11, 283 }, { 6, 11, 480 }, { 7, 11, 609 },
+ { 14, 11, 216 }, { 4, 0, 240 }, { 6, 11, 192 }, { 9, 11, 793 },
+ { 17, 11, 55 }, { 4, 10, 75 }, { 5, 10, 180 }, { 6, 10, 500 },
+ { 7, 10, 58 }, { 7, 10, 710 }, { 10, 10, 645 }, { 4, 11, 132 },
+ { 5, 11, 69 }, { 5, 10, 649 }, { 7, 11, 1242 }, { 6, 10, 276 },
+ { 7, 10, 282 }, { 7, 10, 879 }, { 7, 10, 924 }, { 8, 10, 459 },
+ { 9, 10, 599 }, { 9, 10, 754 }, { 11, 10, 574 }, { 12, 10, 128 },
+ { 12, 10, 494 }, { 13, 10, 52 }, { 13, 10, 301 }, { 15, 10, 30 },
+ { 15, 10, 132 }, { 4, 10, 200 }, { 4, 11, 111 }, { 7, 11, 302 },
+ { 9, 0, 197 }, { 10, 0, 300 }, { 12, 0, 473 }, { 13, 0, 90 },
+ { 13, 0, 405 }, { 4, 11, 767 }, { 6, 11, 42 }, { 7, 11, 1416 },
+ { 7, 11, 1590 }, { 7, 11, 2005 }, { 8, 11, 131 }, { 8, 11, 466 },
+ { 9, 11, 672 }, { 13, 11, 252 }, { 20, 11, 103 }, { 8, 0, 958 },
+ { 8, 0, 999 }, { 10, 0, 963 }, { 10, 0, 1001 }, { 7, 10, 1621 },
+ { 7, 0, 858 }, { 4, 0, 606 }, { 9, 11, 444 }, { 6, 11, 44 },
+ { 8, 11, 368 }, { 11, 11, 172 }, { 4, 11, 570 }, { 5, 11, 120 },
+ { 11, 11, 624 }, { 7, 0, 1978 }, { 8, 0, 676 }, { 6, 10, 225 },
+ { 9, 10, 211 }, { 7, 0, 972 }, { 11, 0, 102 }, { 8, 10, 687 },
+ { 6, 11, 227 }, { 7, 11, 1589 }, { 8, 10, 58 }, { 9, 10, 724 },
+ { 11, 10, 809 }, { 13, 10, 113 }, { 17, 10, 72 }, { 4, 0, 361 },
+ { 5, 0, 315 }, { 4, 0, 461 }, { 6, 10, 345 }, { 7, 10, 1247 },
+ { 4, 0, 472 }, { 8, 10, 767 }, { 8, 10, 803 }, { 9, 10, 301 },
+ { 9, 10, 903 }, { 7, 11, 1333 }, { 7, 11, 477 }, { 7, 10, 1949 },
+ { 8, 10, 674 }, { 6, 0, 905 }, { 10, 0, 747 }, { 5, 0, 155 },
+ { 6, 10, 259 }, { 7, 0, 163 }, { 8, 0, 319 }, { 9, 0, 402 },
+ { 10, 0, 24 }, { 10, 0, 681 }, { 11, 0, 200 }, { 12, 0, 253 },
+ { 12, 0, 410 }, { 14, 0, 219 }, { 5, 0, 475 }, { 7, 0, 1780 },
+ { 9, 0, 230 }, { 11, 0, 297 }, { 11, 0, 558 }, { 14, 0, 322 },
+ { 19, 0, 76 }, { 6, 11, 1667 }, { 7, 11, 2036 }, { 10, 11, 600 },
+ { 8, 10, 254 }, { 6, 0, 848 }, { 7, 0, 1956 }, { 6, 11, 511 },
+ { 12, 11, 132 }, { 5, 11, 568 }, { 6, 11, 138 }, { 7, 11, 1293 },
+ { 6, 0, 631 }, { 9, 0, 838 }, { 21, 0, 36 }, { 4, 11, 565 },
+ { 8, 11, 23 }, { 8, 11, 827 }, { 5, 0, 944 }, { 6, 0, 1769 },
+ { 4, 0, 144 }, { 6, 0, 842 }, { 6, 0, 1400 }, { 4, 11, 922 },
+ { 5, 11, 1023 }, { 5, 10, 248 }, { 9, 10, 800 }, { 10, 10, 693 },
+ { 11, 10, 482 }, { 11, 10, 734 }, { 11, 10, 789 }, { 7, 11, 1002 },
+ { 11, 11, 145 }, { 4, 10, 116 }, { 5, 10, 95 }, { 5, 10, 445 },
+ { 7, 10, 1688 }, { 8, 10, 29 }, { 9, 10, 272 }, { 11, 10, 509 },
+ { 11, 10, 915 }, { 14, 0, 369 }, { 18, 0, 72 }, { 7, 10, 1641 },
+ { 4, 11, 740 }, { 5, 10, 543 }, { 12, 11, 116 }, { 6, 0, 247 },
+ { 9, 0, 555 }, { 5, 10, 181 }, { 8, 10, 41 }, { 5, 10, 657 },
+ { 8, 0, 996 }, { 10, 10, 709 }, { 7, 0, 189 }, { 8, 10, 202 },
+ { 10, 10, 536 }, { 8, 11, 402 }, { 4, 11, 716 }, { 13, 11, 31 },
+ { 10, 0, 280 }, { 10, 0, 797 }, { 9, 10, 423 }, { 12, 10, 89 },
+ { 8, 10, 113 }, { 9, 10, 877 }, { 10, 10, 554 }, { 11, 10, 83 },
+ { 12, 10, 136 }, { 19, 10, 109 }, { 5, 10, 976 }, { 7, 0, 746 },
+ { 4, 10, 206 }, { 8, 0, 526 }, { 11, 0, 345 }, { 8, 0, 1017 },
+ { 8, 11, 152 }, { 9, 11, 53 }, { 9, 11, 268 }, { 9, 11, 901 },
+ { 10, 11, 518 }, { 10, 11, 829 }, { 11, 11, 188 }, { 13, 11, 74 },
+ { 14, 11, 46 }, { 15, 11, 17 }, { 15, 11, 33 }, { 17, 11, 40 },
+ { 18, 11, 36 }, { 19, 11, 20 }, { 22, 11, 1 }, { 24, 11, 2 },
+ { 5, 11, 736 }, { 8, 11, 532 }, { 5, 0, 428 }, { 10, 0, 651 },
+ { 7, 11, 681 }, { 7, 0, 1162 }, { 7, 0, 327 }, { 13, 0, 230 },
+ { 17, 0, 113 }, { 8, 10, 226 }, { 10, 10, 537 }, { 11, 10, 570 },
+ { 11, 10, 605 }, { 11, 10, 799 }, { 11, 10, 804 }, { 12, 10, 85 },
+ { 12, 10, 516 }, { 12, 10, 623 }, { 12, 11, 677 }, { 13, 10, 361 },
+ { 14, 10, 77 }, { 14, 10, 78 }, { 19, 10, 110 }, { 4, 0, 792 },
+ { 7, 0, 1717 }, { 10, 0, 546 }, { 4, 10, 769 }, { 4, 11, 684 },
+ { 8, 11, 384 }, { 4, 10, 551 }, { 6, 0, 1203 }, { 9, 10, 57 },
+ { 9, 10, 459 }, { 10, 10, 425 }, { 11, 10, 119 }, { 12, 10, 184 },
+ { 12, 10, 371 }, { 13, 10, 358 }, { 17, 10, 51 }, { 5, 0, 672 },
+ { 5, 10, 814 }, { 8, 10, 10 }, { 9, 10, 421 }, { 9, 10, 729 },
+ { 10, 10, 609 }, { 11, 10, 689 }, { 10, 0, 189 }, { 6, 10, 624 },
+ { 7, 11, 110 }, { 7, 11, 188 }, { 8, 11, 290 }, { 8, 11, 591 },
+ { 9, 11, 382 }, { 9, 11, 649 }, { 11, 11, 71 }, { 11, 11, 155 },
+ { 11, 11, 313 }, { 12, 11, 5 }, { 13, 11, 325 }, { 14, 11, 287 },
+ { 5, 0, 99 }, { 6, 0, 1053 }, { 7, 0, 298 }, { 7, 11, 360 },
+ { 7, 11, 425 }, { 9, 11, 66 }, { 9, 11, 278 }, { 10, 11, 644 },
+ { 4, 0, 397 }, { 8, 0, 555 }, { 9, 10, 269 }, { 4, 10, 528 },
+ { 4, 11, 900 }, { 5, 11, 861 }, { 6, 0, 1157 }, { 5, 11, 254 },
+ { 7, 11, 985 }, { 8, 11, 73 }, { 7, 11, 1959 }, { 8, 11, 683 },
+ { 12, 0, 398 }, { 20, 0, 39 }, { 21, 0, 11 }, { 22, 0, 41 },
+ { 4, 0, 485 }, { 7, 0, 353 }, { 7, 0, 1523 }, { 6, 0, 366 },
+ { 7, 0, 1384 }, { 7, 0, 1601 }, { 10, 0, 787 }, { 9, 0, 282 },
+ { 5, 10, 104 }, { 6, 10, 173 }, { 7, 10, 1631 }, { 11, 11, 146 },
+ { 4, 0, 157 }, { 5, 0, 471 }, { 6, 0, 941 }, { 4, 11, 725 },
+ { 7, 0, 1336 }, { 8, 10, 138 }, { 8, 10, 342 }, { 9, 10, 84 },
+ { 10, 10, 193 }, { 11, 10, 883 }, { 12, 10, 359 }, { 6, 11, 196 },
+ { 8, 0, 116 }, { 5, 11, 831 }, { 6, 0, 787 }, { 6, 10, 95 },
+ { 6, 10, 406 }, { 10, 10, 409 }, { 10, 10, 447 }, { 11, 10, 44 },
+ { 12, 10, 100 }, { 5, 0, 160 }, { 7, 0, 363 }, { 7, 0, 589 },
+ { 10, 0, 170 }, { 13, 0, 55 }, { 6, 0, 1815 }, { 4, 0, 866 },
+ { 6, 0, 889 }, { 6, 0, 1067 }, { 6, 0, 1183 }, { 4, 11, 321 },
+ { 6, 11, 569 }, { 5, 11, 848 }, { 6, 11, 66 }, { 4, 11, 36 },
+ { 6, 10, 1636 }, { 7, 11, 1387 }, { 10, 11, 205 }, { 11, 11, 755 },
+ { 13, 11, 271 }, { 4, 0, 689 }, { 9, 0, 820 }, { 4, 10, 282 },
+ { 7, 10, 1034 }, { 11, 10, 398 }, { 11, 10, 634 }, { 12, 10, 1 },
+ { 12, 10, 79 }, { 12, 10, 544 }, { 14, 10, 237 }, { 17, 10, 10 },
+ { 18, 10, 20 }, { 4, 0, 108 }, { 7, 0, 804 }, { 11, 0, 498 },
+ { 4, 11, 887 }, { 6, 0, 1119 }, { 7, 11, 620 }, { 6, 11, 165 },
+ { 10, 11, 388 }, { 5, 0, 244 }, { 5, 10, 499 }, { 6, 10, 476 },
+ { 7, 10, 600 }, { 7, 10, 888 }, { 7, 10, 1096 }, { 12, 0, 609 },
+ { 7, 0, 1005 }, { 4, 0, 412 }, { 5, 0, 581 }, { 4, 11, 719 },
+ { 7, 11, 155 }, { 7, 10, 296 }, { 7, 10, 596 }, { 8, 10, 560 },
+ { 8, 10, 586 }, { 9, 10, 612 }, { 11, 10, 304 }, { 12, 10, 46 },
+ { 13, 10, 89 }, { 14, 10, 112 }, { 17, 10, 122 }, { 4, 0, 895 },
+ { 5, 0, 772 }, { 14, 11, 307 }, { 7, 0, 1898 }, { 4, 0, 926 },
+ { 5, 0, 983 }, { 4, 11, 353 }, { 6, 11, 146 }, { 6, 11, 1789 },
+ { 7, 11, 288 }, { 7, 11, 990 }, { 7, 11, 1348 }, { 9, 11, 665 },
+ { 9, 11, 898 }, { 11, 11, 893 }, { 14, 11, 212 }, { 4, 0, 538 },
+ { 5, 11, 532 }, { 6, 0, 294 }, { 7, 0, 1267 }, { 8, 0, 624 },
+ { 13, 0, 496 }, { 7, 0, 1325 }, { 4, 11, 45 }, { 7, 11, 1257 },
+ { 10, 0, 301 }, { 9, 0, 298 }, { 12, 0, 291 }, { 13, 0, 276 },
+ { 14, 0, 6 }, { 17, 0, 18 }, { 21, 0, 32 }, { 7, 10, 1599 },
+ { 7, 10, 1723 }, { 8, 10, 79 }, { 8, 10, 106 }, { 8, 10, 190 },
+ { 8, 10, 302 }, { 8, 10, 383 }, { 8, 10, 713 }, { 9, 10, 119 },
+ { 9, 10, 233 }, { 9, 10, 419 }, { 9, 10, 471 }, { 10, 10, 181 },
+ { 10, 10, 406 }, { 11, 10, 57 }, { 11, 10, 85 }, { 11, 10, 120 },
+ { 11, 10, 177 }, { 11, 10, 296 }, { 11, 10, 382 }, { 11, 10, 454 },
+ { 11, 10, 758 }, { 11, 10, 999 }, { 12, 10, 27 }, { 12, 10, 131 },
+ { 12, 10, 245 }, { 12, 10, 312 }, { 12, 10, 446 }, { 12, 10, 454 },
+ { 13, 10, 98 }, { 13, 10, 426 }, { 13, 10, 508 }, { 14, 10, 163 },
+ { 14, 10, 272 }, { 14, 10, 277 }, { 14, 10, 370 }, { 15, 10, 95 },
+ { 15, 10, 138 }, { 15, 10, 167 }, { 17, 10, 38 }, { 20, 10, 96 },
+ { 4, 0, 757 }, { 6, 0, 1263 }, { 4, 0, 820 }, { 6, 10, 1759 },
+ { 5, 0, 722 }, { 8, 11, 816 }, { 10, 10, 372 }, { 17, 10, 16 },
+ { 6, 0, 1039 }, { 4, 0, 991 }, { 6, 0, 2028 }, { 5, 10, 258 },
+ { 7, 0, 1875 }, { 11, 0, 124 }, { 6, 11, 559 }, { 6, 11, 1691 },
+ { 7, 11, 586 }, { 5, 0, 324 }, { 7, 0, 881 }, { 8, 10, 134 },
+ { 9, 10, 788 }, { 12, 10, 438 }, { 7, 11, 1823 }, { 11, 11, 693 },
+ { 6, 0, 1348 }, { 6, 0, 1545 }, { 6, 0, 911 }, { 4, 0, 954 },
+ { 8, 0, 329 }, { 8, 0, 414 }, { 7, 10, 1948 }, { 7, 10, 2004 },
+ { 5, 0, 517 }, { 6, 10, 439 }, { 7, 10, 780 }, { 7, 10, 1040 },
+ { 4, 0, 816 }, { 5, 10, 1 }, { 6, 10, 81 }, { 10, 10, 520 },
+ { 9, 0, 713 }, { 10, 0, 222 }, { 5, 10, 482 }, { 8, 10, 98 },
+ { 10, 10, 700 }, { 10, 10, 822 }, { 11, 10, 302 }, { 11, 10, 778 },
+ { 12, 10, 50 }, { 12, 10, 127 }, { 12, 10, 396 }, { 13, 10, 62 },
+ { 13, 10, 328 }, { 14, 10, 122 }, { 19, 10, 72 }, { 9, 0, 33 },
+ { 5, 10, 2 }, { 7, 10, 1494 }, { 8, 10, 589 }, { 6, 10, 512 },
+ { 7, 10, 797 }, { 8, 10, 253 }, { 9, 10, 77 }, { 10, 10, 1 },
+ { 10, 11, 108 }, { 10, 10, 129 }, { 10, 10, 225 }, { 11, 11, 116 },
+ { 11, 10, 118 }, { 11, 10, 226 }, { 11, 10, 251 }, { 11, 10, 430 },
+ { 11, 10, 701 }, { 11, 10, 974 }, { 11, 10, 982 }, { 12, 10, 64 },
+ { 12, 10, 260 }, { 12, 10, 488 }, { 12, 10, 690 }, { 6, 11, 456 },
+ { 5, 11, 925 }, { 5, 0, 150 }, { 7, 0, 106 }, { 7, 0, 774 },
+ { 8, 0, 603 }, { 9, 0, 593 }, { 9, 0, 634 }, { 10, 0, 44 },
+ { 10, 0, 173 }, { 11, 0, 462 }, { 11, 0, 515 }, { 13, 0, 216 },
+ { 13, 0, 288 }, { 14, 0, 400 }, { 9, 10, 347 }, { 5, 0, 748 },
+ { 6, 0, 553 }, { 12, 0, 108 }, { 13, 0, 291 }, { 7, 0, 420 },
+ { 4, 10, 12 }, { 7, 10, 522 }, { 7, 10, 809 }, { 8, 10, 797 },
+ { 13, 10, 88 }, { 6, 11, 193 }, { 7, 11, 240 }, { 7, 11, 1682 },
+ { 10, 11, 51 }, { 10, 11, 640 }, { 11, 11, 410 }, { 13, 11, 82 },
+ { 14, 11, 247 }, { 14, 11, 331 }, { 14, 11, 377 }, { 5, 10, 528 },
+ { 7, 0, 1777 }, { 4, 0, 493 }, { 16, 0, 55 }, { 8, 11, 633 },
+ { 11, 0, 81 }, { 6, 0, 980 }, { 8, 0, 321 }, { 20, 10, 109 },
+ { 5, 10, 266 }, { 9, 10, 290 }, { 9, 10, 364 }, { 10, 10, 293 },
+ { 11, 10, 606 }, { 14, 10, 45 }, { 6, 0, 568 }, { 7, 0, 112 },
+ { 7, 0, 1804 }, { 8, 0, 362 }, { 8, 0, 410 }, { 8, 0, 830 },
+ { 9, 0, 514 }, { 11, 0, 649 }, { 14, 0, 157 }, { 4, 0, 74 },
+ { 6, 0, 510 }, { 6, 10, 594 }, { 9, 10, 121 }, { 10, 10, 49 },
+ { 10, 10, 412 }, { 11, 10, 834 }, { 6, 0, 838 }, { 8, 10, 748 },
+ { 4, 10, 466 }, { 4, 0, 625 }, { 7, 11, 1443 }, { 4, 11, 237 },
+ { 7, 11, 514 }, { 9, 10, 378 }, { 13, 10, 162 }, { 6, 0, 16 },
+ { 6, 0, 158 }, { 7, 0, 43 }, { 7, 0, 129 }, { 7, 0, 181 },
+ { 8, 0, 276 }, { 8, 0, 377 }, { 10, 0, 523 }, { 11, 0, 816 },
+ { 12, 0, 455 }, { 13, 0, 303 }, { 14, 0, 135 }, { 7, 0, 281 },
+ { 4, 0, 1 }, { 7, 0, 1143 }, { 7, 0, 1463 }, { 8, 0, 61 },
+ { 9, 0, 207 }, { 9, 0, 390 }, { 9, 0, 467 }, { 11, 0, 836 },
+ { 6, 11, 392 }, { 7, 11, 65 }, { 7, 11, 2019 }, { 4, 10, 667 },
+ { 4, 0, 723 }, { 5, 0, 895 }, { 7, 0, 1031 }, { 8, 0, 199 },
+ { 8, 0, 340 }, { 9, 0, 153 }, { 9, 0, 215 }, { 10, 0, 21 },
+ { 10, 0, 59 }, { 10, 0, 80 }, { 10, 0, 224 }, { 10, 0, 838 },
+ { 11, 0, 229 }, { 11, 0, 652 }, { 12, 0, 192 }, { 13, 0, 146 },
+ { 14, 0, 91 }, { 4, 0, 295 }, { 9, 0, 51 }, { 9, 11, 222 },
+ { 10, 11, 43 }, { 11, 11, 900 }, { 5, 0, 309 }, { 12, 0, 211 },
+ { 5, 0, 125 }, { 8, 0, 77 }, { 10, 0, 15 }, { 8, 11, 604 },
+ { 10, 0, 789 }, { 5, 0, 173 }, { 4, 10, 39 }, { 7, 10, 1843 },
+ { 8, 10, 407 }, { 11, 10, 144 }, { 12, 10, 523 }, { 10, 11, 265 },
+ { 5, 0, 439 }, { 4, 10, 510 }, { 7, 0, 648 }, { 7, 0, 874 },
+ { 11, 0, 164 }, { 12, 0, 76 }, { 18, 0, 9 }, { 7, 10, 1980 },
+ { 10, 10, 487 }, { 10, 10, 809 }, { 12, 0, 111 }, { 14, 0, 294 },
+ { 19, 0, 45 }, { 13, 10, 260 }, { 18, 10, 63 }, { 5, 11, 549 },
+ { 6, 10, 570 }, { 4, 0, 8 }, { 7, 0, 1152 }, { 7, 0, 1153 },
+ { 7, 0, 1715 }, { 9, 0, 374 }, { 10, 0, 478 }, { 11, 0, 648 },
+ { 7, 0, 1099 }, { 5, 0, 575 }, { 6, 0, 354 }, { 7, 0, 701 },
+ { 7, 11, 36 }, { 8, 11, 201 }, { 8, 11, 605 }, { 4, 10, 787 },
+ { 8, 11, 156 }, { 6, 0, 518 }, { 21, 11, 13 }, { 12, 11, 224 },
+ { 6, 0, 702 }, { 4, 10, 516 }, { 5, 11, 724 }, { 10, 11, 305 },
+ { 11, 11, 151 }, { 12, 11, 33 }, { 12, 11, 121 }, { 12, 11, 381 },
+ { 17, 11, 3 }, { 17, 11, 27 }, { 17, 11, 78 }, { 18, 11, 18 },
+ { 19, 11, 54 }, { 21, 11, 5 }, { 8, 0, 87 }, { 4, 11, 523 },
+ { 5, 11, 638 }, { 11, 10, 887 }, { 14, 10, 365 }, { 14, 10, 375 },
+ { 10, 0, 438 }, { 8, 10, 821 }, { 7, 11, 1908 }, { 6, 11, 242 },
+ { 7, 11, 227 }, { 7, 11, 1581 }, { 8, 11, 104 }, { 9, 11, 113 },
+ { 9, 11, 220 }, { 9, 11, 427 }, { 10, 11, 74 }, { 10, 11, 239 },
+ { 11, 11, 579 }, { 11, 11, 1023 }, { 13, 11, 4 }, { 13, 11, 204 },
+ { 13, 11, 316 }, { 18, 11, 95 }, { 20, 11, 86 }, { 4, 0, 69 },
+ { 5, 0, 122 }, { 5, 0, 849 }, { 6, 0, 1633 }, { 9, 0, 656 },
+ { 10, 0, 464 }, { 7, 0, 1802 }, { 4, 10, 10 }, { 11, 10, 786 },
+ { 7, 11, 861 }, { 11, 0, 499 }, { 7, 0, 476 }, { 7, 0, 1592 },
+ { 10, 0, 87 }, { 5, 10, 684 }, { 4, 0, 840 }, { 6, 10, 27 },
+ { 14, 0, 283 }, { 6, 0, 1620 }, { 7, 11, 1328 }, { 8, 11, 494 },
+ { 5, 0, 859 }, { 7, 0, 1160 }, { 8, 0, 107 }, { 9, 0, 291 },
+ { 9, 0, 439 }, { 10, 0, 663 }, { 11, 0, 609 }, { 12, 0, 197 },
+ { 7, 11, 1306 }, { 8, 11, 505 }, { 9, 11, 482 }, { 10, 11, 126 },
+ { 11, 11, 225 }, { 12, 11, 347 }, { 12, 11, 449 }, { 13, 11, 19 },
+ { 14, 11, 218 }, { 5, 11, 268 }, { 10, 11, 764 }, { 12, 11, 120 },
+ { 13, 11, 39 }, { 17, 11, 127 }, { 17, 10, 56 }, { 7, 11, 1672 },
+ { 10, 11, 472 }, { 11, 11, 189 }, { 15, 11, 51 }, { 6, 10, 342 },
+ { 6, 10, 496 }, { 8, 10, 275 }, { 9, 10, 206 }, { 5, 0, 600 },
+ { 4, 0, 117 }, { 6, 0, 372 }, { 7, 0, 1905 }, { 14, 0, 323 },
+ { 4, 10, 909 }, { 5, 10, 940 }, { 7, 11, 1471 }, { 4, 10, 891 },
+ { 4, 0, 722 }, { 11, 0, 471 }, { 4, 11, 384 }, { 7, 11, 1022 },
+ { 4, 10, 687 }, { 9, 0, 5 }, { 12, 0, 216 }, { 12, 0, 294 },
+ { 12, 0, 298 }, { 12, 0, 400 }, { 12, 0, 518 }, { 13, 0, 229 },
+ { 15, 0, 139 }, { 7, 11, 1703 }, { 7, 11, 1602 }, { 10, 11, 698 },
+ { 12, 11, 212 }, { 13, 11, 307 }, { 6, 10, 41 }, { 13, 10, 160 },
+ { 7, 11, 1077 }, { 9, 11, 159 }, { 11, 11, 28 }, { 12, 11, 603 },
+ { 4, 0, 514 }, { 7, 0, 1304 }, { 10, 0, 477 }, { 6, 0, 1774 },
+ { 9, 0, 88 }, { 11, 0, 270 }, { 5, 0, 12 }, { 7, 0, 375 },
+ { 9, 0, 438 }, { 6, 10, 1718 }, { 4, 11, 515 }, { 8, 10, 778 },
+ { 8, 11, 632 }, { 8, 11, 697 }, { 9, 11, 854 }, { 6, 0, 362 },
+ { 6, 0, 997 }, { 18, 0, 51 }, { 7, 0, 816 }, { 7, 0, 1241 },
+ { 9, 0, 283 }, { 9, 0, 520 }, { 10, 0, 213 }, { 10, 0, 307 },
+ { 10, 0, 463 }, { 10, 0, 671 }, { 10, 0, 746 }, { 11, 0, 401 },
+ { 11, 0, 794 }, { 12, 0, 517 }, { 18, 0, 107 }, { 19, 0, 115 },
+ { 5, 10, 115 }, { 22, 11, 28 }, { 4, 11, 136 }, { 5, 11, 551 },
+ { 14, 10, 314 }, { 4, 0, 258 }, { 6, 0, 22 }, { 7, 0, 903 },
+ { 7, 0, 1963 }, { 8, 0, 639 }, { 10, 0, 577 }, { 5, 0, 681 },
+ { 8, 0, 782 }, { 13, 0, 130 }, { 17, 0, 84 }, { 5, 10, 193 },
+ { 12, 10, 178 }, { 9, 11, 17 }, { 10, 11, 291 }, { 7, 11, 1287 },
+ { 9, 11, 44 }, { 10, 11, 552 }, { 10, 11, 642 }, { 11, 11, 839 },
+ { 12, 11, 274 }, { 12, 11, 275 }, { 12, 11, 372 }, { 13, 11, 91 },
+ { 14, 11, 125 }, { 7, 10, 174 }, { 4, 0, 664 }, { 5, 0, 804 },
+ { 11, 0, 1013 }, { 6, 0, 942 }, { 6, 0, 1349 }, { 6, 0, 1353 },
+ { 6, 0, 1450 }, { 7, 11, 1518 }, { 11, 11, 694 }, { 11, 0, 356 },
+ { 4, 10, 122 }, { 5, 10, 796 }, { 5, 10, 952 }, { 6, 10, 1660 },
+ { 6, 10, 1671 }, { 8, 10, 567 }, { 9, 10, 687 }, { 9, 10, 742 },
+ { 10, 10, 686 }, { 11, 10, 682 }, { 12, 10, 281 }, { 5, 0, 32 },
+ { 6, 11, 147 }, { 7, 11, 886 }, { 9, 11, 753 }, { 10, 11, 268 },
+ { 5, 10, 179 }, { 7, 10, 1095 }, { 7, 10, 1213 }, { 4, 10, 66 },
+ { 7, 10, 722 }, { 7, 10, 904 }, { 7, 10, 352 }, { 9, 11, 245 },
+ { 10, 11, 137 }, { 4, 0, 289 }, { 7, 0, 629 }, { 7, 0, 1698 },
+ { 7, 0, 1711 }, { 12, 0, 215 }, { 5, 11, 414 }, { 6, 0, 1975 },
+ { 7, 11, 1762 }, { 6, 0, 450 }, { 8, 0, 109 }, { 13, 10, 35 },
+ { 6, 11, 599 }, { 8, 0, 705 }, { 5, 0, 664 }, { 6, 11, 1749 },
+ { 11, 11, 402 }, { 12, 11, 109 }, { 12, 11, 431 }, { 13, 11, 179 },
+ { 13, 11, 206 }, { 14, 11, 175 }, { 14, 11, 217 }, { 16, 11, 3 },
+ { 20, 11, 53 }, { 7, 0, 1238 }, { 6, 11, 1627 }, { 4, 11, 488 },
+ { 13, 0, 318 }, { 10, 10, 592 }, { 10, 10, 753 }, { 12, 10, 317 },
+ { 12, 10, 355 }, { 12, 10, 465 }, { 12, 10, 469 }, { 12, 10, 560 },
+ { 12, 10, 578 }, { 5, 10, 564 }, { 4, 11, 83 }, { 12, 11, 676 },
+ { 6, 0, 1872 }, { 6, 0, 1906 }, { 6, 0, 1907 }, { 9, 0, 934 },
+ { 9, 0, 956 }, { 9, 0, 960 }, { 9, 0, 996 }, { 12, 0, 794 },
+ { 12, 0, 876 }, { 12, 0, 880 }, { 12, 0, 918 }, { 15, 0, 230 },
+ { 18, 0, 234 }, { 18, 0, 238 }, { 21, 0, 38 }, { 21, 0, 62 },
+ { 6, 10, 556 }, { 6, 11, 278 }, { 9, 0, 103 }, { 7, 10, 544 },
+ { 8, 10, 719 }, { 10, 10, 61 }, { 4, 10, 5 }, { 5, 10, 498 },
+ { 8, 10, 637 }, { 9, 10, 521 }, { 7, 0, 777 }, { 12, 0, 229 },
+ { 12, 0, 239 }, { 15, 0, 12 }, { 12, 11, 229 }, { 12, 11, 239 },
+ { 15, 11, 12 }, { 6, 0, 26 }, { 7, 11, 388 }, { 7, 11, 644 },
+ { 11, 11, 781 }, { 7, 11, 229 }, { 8, 11, 59 }, { 9, 11, 190 },
+ { 9, 11, 257 }, { 10, 11, 378 }, { 12, 11, 191 }, { 5, 10, 927 },
+ { 7, 10, 1441 }, { 4, 10, 893 }, { 5, 10, 780 }, { 5, 10, 893 },
+ { 4, 0, 414 }, { 5, 0, 467 }, { 9, 0, 654 }, { 10, 0, 451 },
+ { 12, 0, 59 }, { 13, 0, 375 }, { 14, 0, 173 }, { 7, 0, 17 },
+ { 7, 0, 1350 }, { 5, 10, 238 }, { 7, 0, 955 }, { 4, 0, 960 },
+ { 10, 0, 887 }, { 12, 0, 753 }, { 18, 0, 161 }, { 18, 0, 162 },
+ { 24, 0, 19 }, { 8, 11, 344 }, { 6, 10, 1729 }, { 9, 11, 288 },
+ { 4, 11, 660 }, { 4, 0, 217 }, { 5, 0, 710 }, { 7, 0, 760 },
+ { 7, 0, 1926 }, { 9, 0, 428 }, { 9, 0, 708 }, { 10, 0, 254 },
+ { 10, 0, 296 }, { 10, 0, 720 }, { 11, 0, 109 }, { 11, 0, 255 },
+ { 12, 0, 165 }, { 12, 0, 315 }, { 13, 0, 107 }, { 13, 0, 203 },
+ { 14, 0, 54 }, { 14, 0, 99 }, { 14, 0, 114 }, { 14, 0, 388 },
+ { 16, 0, 85 }, { 17, 0, 9 }, { 17, 0, 33 }, { 20, 0, 25 },
+ { 20, 0, 28 }, { 20, 0, 29 }, { 21, 0, 9 }, { 21, 0, 10 },
+ { 21, 0, 34 }, { 22, 0, 17 }, { 4, 10, 60 }, { 7, 10, 1800 },
+ { 8, 10, 314 }, { 9, 10, 700 }, { 11, 10, 487 }, { 7, 11, 1035 },
+ { 10, 11, 737 }, { 7, 11, 690 }, { 9, 11, 217 }, { 9, 11, 587 },
+ { 12, 11, 521 }, { 6, 0, 919 }, { 7, 11, 706 }, { 7, 11, 1058 },
+ { 10, 11, 538 }, { 7, 10, 1853 }, { 10, 10, 437 }, { 8, 10, 419 },
+ { 6, 0, 280 }, { 10, 0, 502 }, { 11, 0, 344 }, { 12, 0, 38 },
+ { 5, 0, 45 }, { 7, 0, 1161 }, { 11, 0, 448 }, { 11, 0, 880 },
+ { 13, 0, 139 }, { 13, 0, 407 }, { 15, 0, 16 }, { 17, 0, 95 },
+ { 18, 0, 66 }, { 18, 0, 88 }, { 18, 0, 123 }, { 21, 0, 7 },
+ { 11, 11, 92 }, { 11, 11, 196 }, { 11, 11, 409 }, { 11, 11, 450 },
+ { 11, 11, 666 }, { 11, 11, 777 }, { 12, 11, 262 }, { 13, 11, 385 },
+ { 13, 11, 393 }, { 15, 11, 115 }, { 16, 11, 45 }, { 17, 11, 82 },
+ { 8, 0, 777 }, { 6, 11, 1744 }, { 4, 0, 410 }, { 7, 0, 521 },
+ { 5, 10, 828 }, { 6, 0, 673 }, { 7, 0, 1110 }, { 7, 0, 1778 },
+ { 7, 10, 176 }, { 7, 10, 178 }, { 5, 10, 806 }, { 7, 11, 268 },
+ { 7, 10, 1976 }, { 8, 11, 569 }, { 4, 11, 733 }, { 9, 11, 194 },
+ { 10, 11, 92 }, { 11, 11, 198 }, { 12, 11, 84 }, { 12, 11, 87 },
+ { 13, 11, 128 }, { 16, 11, 74 }, { 5, 0, 341 }, { 7, 0, 1129 },
+ { 11, 0, 414 }, { 4, 10, 51 }, { 6, 10, 4 }, { 7, 10, 591 },
+ { 7, 10, 849 }, { 7, 10, 951 }, { 7, 10, 1613 }, { 7, 10, 1760 },
+ { 7, 10, 1988 }, { 9, 10, 434 }, { 10, 10, 754 }, { 11, 10, 25 },
+ { 11, 10, 37 }, { 5, 10, 902 }, { 7, 10, 928 }, { 7, 0, 787 },
+ { 4, 0, 436 }, { 6, 10, 270 }, { 7, 0, 1587 }, { 7, 0, 1707 },
+ { 6, 0, 377 }, { 7, 0, 1025 }, { 9, 0, 613 }, { 17, 0, 104 },
+ { 7, 11, 982 }, { 7, 11, 1361 }, { 10, 11, 32 }, { 15, 11, 56 },
+ { 11, 0, 96 }, { 4, 0, 451 }, { 4, 10, 416 }, { 14, 10, 372 },
+ { 5, 10, 152 }, { 5, 10, 197 }, { 7, 11, 306 }, { 7, 10, 340 },
+ { 7, 10, 867 }, { 10, 10, 548 }, { 10, 10, 581 }, { 11, 10, 6 },
+ { 12, 10, 3 }, { 12, 10, 19 }, { 14, 10, 110 }, { 14, 10, 289 },
+ { 6, 0, 680 }, { 6, 11, 609 }, { 7, 0, 483 }, { 7, 10, 190 },
+ { 8, 10, 28 }, { 8, 10, 141 }, { 8, 10, 444 }, { 8, 10, 811 },
+ { 9, 10, 468 }, { 11, 10, 334 }, { 12, 10, 24 }, { 12, 10, 386 },
+ { 12, 10, 576 }, { 10, 0, 916 }, { 5, 10, 757 }, { 5, 10, 721 },
+ { 7, 10, 1553 }, { 5, 11, 178 }, { 6, 0, 937 }, { 4, 10, 898 },
+ { 5, 0, 739 }, { 19, 0, 82 }, { 7, 0, 663 }, { 18, 0, 128 },
+ { 5, 10, 277 }, { 13, 10, 247 }, { 6, 0, 1087 }, { 4, 10, 435 },
+ { 6, 11, 381 }, { 7, 11, 645 }, { 7, 11, 694 }, { 8, 11, 546 },
+ { 7, 0, 503 }, { 7, 0, 1885 }, { 6, 0, 1965 }, { 8, 0, 925 },
+ { 10, 0, 955 }, { 4, 0, 113 }, { 5, 0, 163 }, { 5, 0, 735 },
+ { 7, 0, 1009 }, { 9, 0, 9 }, { 9, 0, 771 }, { 12, 0, 90 },
+ { 13, 0, 138 }, { 13, 0, 410 }, { 15, 0, 128 }, { 4, 0, 324 },
+ { 10, 0, 104 }, { 7, 0, 460 }, { 5, 10, 265 }, { 6, 10, 212 },
+ { 5, 11, 105 }, { 7, 11, 261 }, { 7, 11, 1107 }, { 7, 11, 1115 },
+ { 7, 11, 1354 }, { 7, 11, 1588 }, { 7, 11, 1705 }, { 7, 11, 1902 },
+ { 9, 11, 465 }, { 10, 11, 248 }, { 10, 11, 349 }, { 10, 11, 647 },
+ { 11, 11, 527 }, { 11, 11, 660 }, { 11, 11, 669 }, { 12, 11, 529 },
+ { 13, 11, 305 }, { 5, 11, 438 }, { 9, 11, 694 }, { 12, 11, 627 },
+ { 13, 11, 210 }, { 24, 11, 11 }, { 4, 0, 935 }, { 5, 0, 823 },
+ { 4, 10, 702 }, { 5, 0, 269 }, { 7, 0, 434 }, { 7, 0, 891 },
+ { 8, 0, 339 }, { 9, 0, 702 }, { 11, 0, 594 }, { 11, 0, 718 },
+ { 17, 0, 100 }, { 5, 10, 808 }, { 7, 10, 2045 }, { 7, 0, 1014 },
+ { 9, 0, 485 }, { 13, 0, 264 }, { 6, 0, 1713 }, { 7, 0, 1810 },
+ { 11, 0, 866 }, { 12, 0, 103 }, { 13, 0, 495 }, { 12, 11, 233 },
+ { 4, 0, 423 }, { 10, 0, 949 }, { 10, 0, 1013 }, { 7, 0, 900 },
+ { 8, 11, 25 }, { 10, 11, 826 }, { 5, 10, 166 }, { 8, 10, 739 },
+ { 12, 10, 511 }, { 6, 0, 2018 }, { 7, 11, 1270 }, { 11, 11, 612 },
+ { 4, 10, 119 }, { 5, 10, 170 }, { 5, 10, 447 }, { 7, 10, 1708 },
+ { 7, 10, 1889 }, { 9, 10, 357 }, { 9, 10, 719 }, { 12, 10, 486 },
+ { 12, 10, 596 }, { 12, 0, 574 }, { 12, 11, 574 }, { 4, 11, 308 },
+ { 6, 0, 964 }, { 6, 0, 1206 }, { 6, 0, 1302 }, { 4, 10, 450 },
+ { 7, 10, 1158 }, { 7, 11, 150 }, { 8, 11, 649 }, { 14, 0, 213 },
+ { 20, 0, 38 }, { 9, 11, 45 }, { 9, 11, 311 }, { 13, 11, 42 },
+ { 6, 11, 521 }, { 7, 10, 1375 }, { 7, 10, 1466 }, { 10, 10, 331 },
+ { 4, 10, 754 }, { 5, 11, 339 }, { 7, 11, 1442 }, { 14, 11, 3 },
+ { 15, 11, 41 }, { 19, 11, 66 }, { 8, 11, 378 }, { 6, 0, 1022 },
+ { 5, 10, 850 }, { 8, 10, 799 }, { 14, 0, 143 }, { 7, 0, 2029 },
+ { 6, 11, 1628 }, { 8, 0, 523 }, { 22, 0, 34 }, { 5, 0, 625 },
+ { 7, 0, 1617 }, { 7, 0, 275 }, { 7, 10, 238 }, { 7, 10, 2033 },
+ { 8, 10, 120 }, { 8, 10, 188 }, { 8, 10, 659 }, { 9, 10, 598 },
+ { 10, 10, 466 }, { 12, 10, 342 }, { 12, 10, 588 }, { 13, 10, 503 },
+ { 14, 10, 246 }, { 15, 10, 92 }, { 7, 0, 37 }, { 8, 0, 425 },
+ { 8, 0, 693 }, { 9, 0, 720 }, { 10, 0, 380 }, { 10, 0, 638 },
+ { 11, 0, 273 }, { 11, 0, 473 }, { 12, 0, 61 }, { 15, 0, 43 },
+ { 7, 11, 829 }, { 7, 0, 1943 }, { 4, 0, 765 }, { 5, 11, 486 },
+ { 7, 11, 1349 }, { 7, 11, 1635 }, { 8, 11, 17 }, { 10, 11, 217 },
+ { 10, 11, 295 }, { 4, 10, 201 }, { 7, 10, 1744 }, { 8, 10, 602 },
+ { 11, 10, 247 }, { 11, 10, 826 }, { 17, 10, 65 }, { 10, 11, 558 },
+ { 11, 0, 551 }, { 14, 0, 159 }, { 8, 10, 164 }, { 18, 10, 62 },
+ { 11, 11, 176 }, { 4, 0, 168 }, { 8, 0, 1010 }, { 6, 0, 1994 },
+ { 7, 0, 91 }, { 10, 0, 532 }, { 7, 10, 1243 }, { 7, 0, 1884 },
+ { 4, 10, 907 }, { 5, 10, 100 }, { 10, 10, 329 }, { 12, 10, 416 },
+ { 21, 10, 29 }, { 6, 11, 447 }, { 4, 10, 176 }, { 5, 10, 636 },
+ { 5, 10, 998 }, { 7, 10, 9 }, { 7, 10, 1508 }, { 8, 10, 26 },
+ { 9, 10, 317 }, { 9, 10, 358 }, { 10, 10, 210 }, { 10, 10, 292 },
+ { 10, 10, 533 }, { 11, 10, 555 }, { 12, 10, 526 }, { 12, 10, 607 },
+ { 13, 10, 263 }, { 13, 10, 459 }, { 14, 10, 271 }, { 4, 11, 609 },
+ { 7, 11, 756 }, { 6, 0, 15 }, { 7, 0, 70 }, { 10, 0, 240 },
+ { 19, 0, 93 }, { 4, 11, 930 }, { 5, 11, 947 }, { 6, 0, 1227 },
+ { 6, 0, 1534 }, { 5, 11, 939 }, { 5, 11, 962 }, { 5, 11, 651 },
+ { 8, 11, 170 }, { 9, 11, 61 }, { 9, 11, 63 }, { 10, 11, 23 },
+ { 10, 11, 37 }, { 10, 11, 834 }, { 11, 11, 4 }, { 11, 11, 187 },
+ { 11, 11, 281 }, { 11, 11, 503 }, { 11, 11, 677 }, { 12, 11, 96 },
+ { 12, 11, 130 }, { 12, 11, 244 }, { 14, 11, 5 }, { 14, 11, 40 },
+ { 14, 11, 162 }, { 14, 11, 202 }, { 18, 11, 133 }, { 4, 11, 406 },
+ { 5, 11, 579 }, { 12, 11, 492 }, { 22, 11, 15 }, { 11, 0, 392 },
+ { 6, 10, 610 }, { 10, 10, 127 }, { 13, 10, 27 }, { 7, 0, 655 },
+ { 7, 0, 1844 }, { 8, 10, 119 }, { 4, 0, 145 }, { 6, 0, 176 },
+ { 7, 0, 395 }, { 9, 0, 562 }, { 4, 0, 501 }, { 12, 11, 145 },
+ { 8, 0, 1019 }, { 6, 0, 509 }, { 11, 0, 267 }, { 6, 11, 17 },
+ { 7, 11, 16 }, { 7, 11, 1001 }, { 7, 11, 1982 }, { 9, 11, 886 },
+ { 10, 11, 489 }, { 10, 11, 800 }, { 11, 11, 782 }, { 12, 11, 320 },
+ { 13, 11, 467 }, { 14, 11, 145 }, { 14, 11, 387 }, { 15, 11, 119 },
+ { 17, 11, 17 }, { 6, 0, 1099 }, { 5, 11, 458 }, { 7, 11, 1983 },
+ { 8, 11, 0 }, { 8, 11, 171 }, { 9, 11, 120 }, { 9, 11, 732 },
+ { 10, 11, 473 }, { 11, 11, 656 }, { 11, 11, 998 }, { 18, 11, 0 },
+ { 18, 11, 2 }, { 19, 11, 21 }, { 12, 11, 427 }, { 18, 11, 38 },
+ { 10, 0, 948 }, { 10, 0, 968 }, { 7, 10, 126 }, { 8, 10, 84 },
+ { 8, 10, 790 }, { 4, 0, 114 }, { 9, 0, 492 }, { 13, 0, 462 },
+ { 14, 0, 215 }, { 6, 10, 64 }, { 12, 10, 377 }, { 13, 10, 309 },
+ { 4, 0, 77 }, { 5, 0, 361 }, { 6, 0, 139 }, { 6, 0, 401 },
+ { 6, 0, 404 }, { 7, 0, 413 }, { 7, 0, 715 }, { 7, 0, 1716 },
+ { 11, 0, 279 }, { 12, 0, 179 }, { 12, 0, 258 }, { 13, 0, 244 },
+ { 14, 0, 358 }, { 6, 0, 1717 }, { 7, 0, 772 }, { 7, 0, 1061 },
+ { 7, 0, 1647 }, { 8, 0, 82 }, { 11, 0, 250 }, { 11, 0, 607 },
+ { 12, 0, 311 }, { 12, 0, 420 }, { 13, 0, 184 }, { 13, 0, 367 },
+ { 7, 10, 1104 }, { 11, 10, 269 }, { 11, 10, 539 }, { 11, 10, 627 },
+ { 11, 10, 706 }, { 11, 10, 975 }, { 12, 10, 248 }, { 12, 10, 434 },
+ { 12, 10, 600 }, { 12, 10, 622 }, { 13, 10, 297 }, { 13, 10, 485 },
+ { 14, 10, 69 }, { 14, 10, 409 }, { 15, 10, 108 }, { 7, 0, 724 },
+ { 4, 11, 512 }, { 4, 11, 519 }, { 5, 11, 342 }, { 6, 0, 1133 },
+ { 17, 11, 29 }, { 11, 10, 977 }, { 13, 10, 507 }, { 6, 0, 841 },
+ { 6, 0, 1042 }, { 6, 0, 1194 }, { 10, 0, 993 }, { 12, 0, 1021 },
+ { 6, 11, 31 }, { 7, 11, 491 }, { 7, 11, 530 }, { 8, 11, 592 },
+ { 9, 10, 34 }, { 11, 11, 53 }, { 11, 10, 484 }, { 11, 11, 779 },
+ { 12, 11, 167 }, { 12, 11, 411 }, { 14, 11, 14 }, { 14, 11, 136 },
+ { 15, 11, 72 }, { 16, 11, 17 }, { 16, 11, 72 }, { 4, 0, 1021 },
+ { 6, 0, 2037 }, { 5, 11, 907 }, { 7, 0, 373 }, { 8, 0, 335 },
+ { 8, 0, 596 }, { 9, 0, 488 }, { 6, 10, 1700 }, { 7, 10, 293 },
+ { 7, 10, 382 }, { 7, 10, 1026 }, { 7, 10, 1087 }, { 7, 10, 2027 },
+ { 8, 10, 252 }, { 8, 10, 727 }, { 8, 10, 729 }, { 9, 10, 30 },
+ { 9, 10, 199 }, { 9, 10, 231 }, { 9, 10, 251 }, { 9, 10, 334 },
+ { 9, 10, 361 }, { 9, 10, 712 }, { 10, 10, 55 }, { 10, 10, 60 },
+ { 10, 10, 232 }, { 10, 10, 332 }, { 10, 10, 384 }, { 10, 10, 396 },
+ { 10, 10, 504 }, { 10, 10, 542 }, { 10, 10, 652 }, { 11, 10, 20 },
+ { 11, 10, 48 }, { 11, 10, 207 }, { 11, 10, 291 }, { 11, 10, 298 },
+ { 11, 10, 342 }, { 11, 10, 365 }, { 11, 10, 394 }, { 11, 10, 620 },
+ { 11, 10, 705 }, { 11, 10, 1017 }, { 12, 10, 123 }, { 12, 10, 340 },
+ { 12, 10, 406 }, { 12, 10, 643 }, { 13, 10, 61 }, { 13, 10, 269 },
+ { 13, 10, 311 }, { 13, 10, 319 }, { 13, 10, 486 }, { 14, 10, 234 },
+ { 15, 10, 62 }, { 15, 10, 85 }, { 16, 10, 71 }, { 18, 10, 119 },
+ { 20, 10, 105 }, { 22, 0, 37 }, { 4, 11, 208 }, { 5, 11, 106 },
+ { 6, 11, 531 }, { 8, 11, 408 }, { 9, 11, 188 }, { 10, 11, 572 },
+ { 4, 0, 564 }, { 6, 0, 513 }, { 7, 0, 1052 }, { 4, 0, 825 },
+ { 9, 0, 899 }, { 12, 11, 441 }, { 6, 0, 778 }, { 5, 11, 379 },
+ { 7, 0, 1417 }, { 12, 0, 382 }, { 17, 0, 48 }, { 24, 0, 12 },
+ { 4, 11, 241 }, { 7, 0, 1116 }, { 6, 10, 379 }, { 7, 10, 270 },
+ { 8, 10, 176 }, { 8, 10, 183 }, { 9, 10, 432 }, { 9, 10, 661 },
+ { 12, 10, 247 }, { 12, 10, 617 }, { 18, 10, 125 }, { 5, 10, 792 },
+ { 5, 10, 900 }, { 6, 0, 545 }, { 7, 0, 565 }, { 7, 0, 1669 },
+ { 10, 0, 114 }, { 11, 0, 642 }, { 12, 0, 618 }, { 5, 0, 5 },
+ { 10, 11, 7 }, { 4, 11, 259 }, { 7, 0, 192 }, { 6, 0, 701 },
+ { 8, 0, 763 }, { 7, 10, 1979 }, { 4, 10, 901 }, { 5, 10, 776 },
+ { 10, 0, 755 }, { 19, 0, 29 }, { 5, 0, 759 }, { 4, 11, 173 },
+ { 5, 11, 312 }, { 5, 11, 512 }, { 7, 11, 1285 }, { 7, 11, 1603 },
+ { 7, 11, 1691 }, { 9, 11, 464 }, { 11, 11, 195 }, { 12, 11, 279 },
+ { 12, 11, 448 }, { 14, 11, 11 }, { 19, 11, 102 }, { 7, 0, 370 },
+ { 7, 0, 1007 }, { 7, 0, 1177 }, { 7, 0, 1565 }, { 7, 0, 1237 },
+ { 4, 0, 87 }, { 5, 0, 250 }, { 13, 0, 298 }, { 4, 11, 452 },
+ { 5, 11, 583 }, { 5, 11, 817 }, { 6, 11, 433 }, { 7, 11, 593 },
+ { 7, 11, 720 }, { 7, 11, 1378 }, { 8, 11, 161 }, { 9, 11, 284 },
+ { 10, 11, 313 }, { 11, 11, 886 }, { 4, 11, 547 }, { 7, 11, 1409 },
+ { 8, 11, 722 }, { 4, 10, 37 }, { 5, 10, 334 }, { 7, 10, 1253 },
+ { 4, 10, 508 }, { 12, 0, 107 }, { 18, 0, 31 }, { 8, 11, 420 },
+ { 11, 11, 193 }, { 7, 0, 814 }, { 7, 11, 409 }, { 12, 0, 991 },
+ { 4, 0, 57 }, { 7, 0, 1195 }, { 7, 0, 1438 }, { 7, 0, 1548 },
+ { 7, 0, 1835 }, { 7, 0, 1904 }, { 9, 0, 757 }, { 10, 0, 604 },
+ { 11, 0, 519 }, { 4, 0, 540 }, { 10, 11, 308 }, { 4, 10, 533 },
+ { 8, 0, 608 }, { 16, 11, 65 }, { 4, 0, 1014 }, { 6, 0, 2029 },
+ { 4, 0, 209 }, { 7, 0, 902 }, { 5, 11, 1002 }, { 8, 11, 745 },
+ { 6, 0, 2030 }, { 6, 0, 303 }, { 7, 0, 335 }, { 7, 0, 1437 },
+ { 7, 0, 1668 }, { 8, 0, 553 }, { 8, 0, 652 }, { 8, 0, 656 },
+ { 9, 0, 558 }, { 11, 0, 743 }, { 21, 0, 18 }, { 5, 11, 575 },
+ { 6, 11, 354 }, { 7, 11, 701 }, { 4, 11, 239 }, { 6, 11, 477 },
+ { 7, 11, 1607 }, { 11, 11, 68 }, { 11, 11, 617 }, { 4, 0, 559 },
+ { 8, 0, 527 }, { 18, 0, 60 }, { 19, 0, 24 }, { 5, 10, 920 },
+ { 10, 0, 511 }, { 5, 0, 1017 }, { 5, 0, 675 }, { 10, 10, 391 },
+ { 11, 0, 156 }, { 7, 10, 1952 }, { 10, 11, 369 }, { 4, 11, 367 },
+ { 5, 0, 709 }, { 6, 0, 698 }, { 6, 0, 887 }, { 14, 10, 126 },
+ { 6, 0, 1745 }, { 4, 10, 483 }, { 13, 11, 299 }, { 14, 11, 75 },
+ { 5, 0, 714 }, { 7, 0, 8 }, { 8, 0, 206 }, { 10, 10, 480 },
+ { 4, 11, 694 }, { 9, 10, 495 }, { 18, 10, 104 }, { 7, 11, 1248 },
+ { 11, 11, 621 }, { 11, 11, 702 }, { 12, 11, 687 }, { 4, 0, 776 },
+ { 11, 10, 1009 }, { 7, 0, 1272 }, { 6, 0, 1059 }, { 8, 10, 653 },
+ { 13, 10, 93 }, { 19, 10, 14 }, { 7, 11, 213 }, { 8, 0, 406 },
+ { 5, 10, 172 }, { 4, 0, 947 }, { 8, 0, 175 }, { 10, 0, 168 },
+ { 10, 0, 573 }, { 4, 0, 870 }, { 6, 0, 1567 }, { 23, 11, 28 },
+ { 6, 11, 472 }, { 5, 10, 260 }, { 8, 11, 132 }, { 4, 11, 751 },
+ { 11, 11, 390 }, { 12, 11, 32 }, { 4, 11, 409 }, { 5, 11, 78 },
+ { 12, 0, 554 }, { 6, 11, 473 }, { 17, 11, 105 }, { 5, 0, 784 },
+ { 8, 0, 908 }, { 8, 11, 306 }, { 11, 0, 882 }, { 6, 0, 358 },
+ { 7, 0, 1393 }, { 8, 0, 396 }, { 10, 0, 263 }, { 14, 0, 154 },
+ { 16, 0, 48 }, { 17, 0, 8 }, { 7, 11, 1759 }, { 8, 11, 396 },
+ { 10, 11, 263 }, { 14, 11, 154 }, { 16, 11, 48 }, { 17, 11, 8 },
+ { 13, 11, 163 }, { 13, 11, 180 }, { 18, 11, 78 }, { 20, 11, 35 },
+ { 14, 0, 32 }, { 18, 0, 85 }, { 20, 0, 2 }, { 24, 0, 16 },
+ { 7, 0, 228 }, { 10, 0, 770 }, { 8, 10, 167 }, { 8, 10, 375 },
+ { 9, 10, 82 }, { 9, 10, 561 }, { 10, 10, 620 }, { 4, 0, 845 },
+ { 9, 0, 14 }, { 9, 0, 441 }, { 10, 0, 306 }, { 11, 0, 9 },
+ { 11, 0, 966 }, { 12, 0, 287 }, { 13, 0, 342 }, { 13, 0, 402 },
+ { 15, 0, 110 }, { 15, 0, 163 }, { 8, 10, 194 }, { 8, 10, 756 },
+ { 6, 0, 1578 }, { 4, 0, 967 }, { 6, 0, 1820 }, { 6, 0, 1847 },
+ { 12, 0, 716 }, { 8, 0, 594 }, { 7, 0, 1428 }, { 7, 0, 1640 },
+ { 7, 0, 1867 }, { 9, 0, 169 }, { 9, 0, 182 }, { 9, 0, 367 },
+ { 9, 0, 478 }, { 9, 0, 506 }, { 9, 0, 551 }, { 9, 0, 557 },
+ { 9, 0, 648 }, { 9, 0, 697 }, { 9, 0, 705 }, { 9, 0, 725 },
+ { 9, 0, 787 }, { 9, 0, 794 }, { 10, 0, 198 }, { 10, 0, 214 },
+ { 10, 0, 267 }, { 10, 0, 275 }, { 10, 0, 456 }, { 10, 0, 551 },
+ { 10, 0, 561 }, { 10, 0, 613 }, { 10, 0, 627 }, { 10, 0, 668 },
+ { 10, 0, 675 }, { 10, 0, 691 }, { 10, 0, 695 }, { 10, 0, 707 },
+ { 10, 0, 715 }, { 11, 0, 183 }, { 11, 0, 201 }, { 11, 0, 244 },
+ { 11, 0, 262 }, { 11, 0, 352 }, { 11, 0, 439 }, { 11, 0, 493 },
+ { 11, 0, 572 }, { 11, 0, 591 }, { 11, 0, 608 }, { 11, 0, 611 },
+ { 11, 0, 646 }, { 11, 0, 674 }, { 11, 0, 711 }, { 11, 0, 751 },
+ { 11, 0, 761 }, { 11, 0, 776 }, { 11, 0, 785 }, { 11, 0, 850 },
+ { 11, 0, 853 }, { 11, 0, 862 }, { 11, 0, 865 }, { 11, 0, 868 },
+ { 11, 0, 875 }, { 11, 0, 898 }, { 11, 0, 902 }, { 11, 0, 903 },
+ { 11, 0, 910 }, { 11, 0, 932 }, { 11, 0, 942 }, { 11, 0, 957 },
+ { 11, 0, 967 }, { 11, 0, 972 }, { 12, 0, 148 }, { 12, 0, 195 },
+ { 12, 0, 220 }, { 12, 0, 237 }, { 12, 0, 318 }, { 12, 0, 339 },
+ { 12, 0, 393 }, { 12, 0, 445 }, { 12, 0, 450 }, { 12, 0, 474 },
+ { 12, 0, 505 }, { 12, 0, 509 }, { 12, 0, 533 }, { 12, 0, 591 },
+ { 12, 0, 594 }, { 12, 0, 597 }, { 12, 0, 621 }, { 12, 0, 633 },
+ { 12, 0, 642 }, { 13, 0, 59 }, { 13, 0, 60 }, { 13, 0, 145 },
+ { 13, 0, 239 }, { 13, 0, 250 }, { 13, 0, 329 }, { 13, 0, 344 },
+ { 13, 0, 365 }, { 13, 0, 372 }, { 13, 0, 387 }, { 13, 0, 403 },
+ { 13, 0, 414 }, { 13, 0, 456 }, { 13, 0, 470 }, { 13, 0, 478 },
+ { 13, 0, 483 }, { 13, 0, 489 }, { 14, 0, 55 }, { 14, 0, 57 },
+ { 14, 0, 81 }, { 14, 0, 90 }, { 14, 0, 148 }, { 14, 0, 239 },
+ { 14, 0, 266 }, { 14, 0, 321 }, { 14, 0, 326 }, { 14, 0, 327 },
+ { 14, 0, 330 }, { 14, 0, 347 }, { 14, 0, 355 }, { 14, 0, 401 },
+ { 14, 0, 404 }, { 14, 0, 411 }, { 14, 0, 414 }, { 14, 0, 416 },
+ { 14, 0, 420 }, { 15, 0, 61 }, { 15, 0, 74 }, { 15, 0, 87 },
+ { 15, 0, 88 }, { 15, 0, 94 }, { 15, 0, 96 }, { 15, 0, 116 },
+ { 15, 0, 149 }, { 15, 0, 154 }, { 16, 0, 50 }, { 16, 0, 63 },
+ { 16, 0, 73 }, { 17, 0, 2 }, { 17, 0, 66 }, { 17, 0, 92 },
+ { 17, 0, 103 }, { 17, 0, 112 }, { 17, 0, 120 }, { 18, 0, 50 },
+ { 18, 0, 54 }, { 18, 0, 82 }, { 18, 0, 86 }, { 18, 0, 90 },
+ { 18, 0, 111 }, { 18, 0, 115 }, { 18, 0, 156 }, { 19, 0, 40 },
+ { 19, 0, 79 }, { 20, 0, 78 }, { 21, 0, 22 }, { 7, 11, 883 },
+ { 5, 0, 161 }, { 7, 0, 839 }, { 4, 0, 782 }, { 13, 11, 293 },
+ { 14, 11, 56 }, { 5, 11, 617 }, { 11, 11, 50 }, { 7, 10, 22 },
+ { 17, 0, 64 }, { 5, 10, 639 }, { 7, 10, 1249 }, { 11, 10, 896 },
+ { 10, 0, 998 }, { 7, 11, 2042 }, { 4, 11, 546 }, { 14, 11, 233 },
+ { 6, 0, 1043 }, { 6, 0, 1574 }, { 6, 0, 1496 }, { 4, 10, 102 },
+ { 7, 10, 815 }, { 7, 10, 1699 }, { 11, 10, 964 }, { 12, 0, 781 },
+ { 14, 0, 461 }, { 4, 11, 313 }, { 5, 11, 577 }, { 6, 0, 639 },
+ { 6, 0, 1114 }, { 9, 0, 817 }, { 8, 11, 184 }, { 13, 11, 433 },
+ { 7, 0, 1814 }, { 7, 11, 935 }, { 10, 0, 997 }, { 12, 0, 958 },
+ { 4, 0, 812 }, { 9, 11, 625 }, { 4, 10, 899 }, { 8, 10, 795 },
+ { 5, 11, 886 }, { 6, 11, 46 }, { 6, 11, 1790 }, { 7, 11, 14 },
+ { 7, 11, 732 }, { 7, 11, 1654 }, { 8, 11, 95 }, { 8, 11, 327 },
+ { 8, 11, 616 }, { 10, 11, 598 }, { 10, 11, 769 }, { 11, 11, 134 },
+ { 11, 11, 747 }, { 12, 11, 378 }, { 14, 11, 97 }, { 8, 0, 139 },
+ { 6, 10, 52 }, { 9, 10, 104 }, { 9, 10, 559 }, { 12, 10, 308 },
+ { 19, 10, 87 }, { 5, 11, 1021 }, { 4, 10, 604 }, { 4, 10, 301 },
+ { 8, 10, 779 }, { 7, 0, 643 }, { 8, 0, 236 }, { 4, 11, 153 },
+ { 6, 0, 1172 }, { 19, 10, 32 }, { 5, 11, 798 }, { 6, 0, 1338 },
+ { 4, 11, 587 }, { 6, 11, 598 }, { 7, 11, 42 }, { 8, 11, 695 },
+ { 10, 11, 212 }, { 11, 11, 158 }, { 14, 11, 196 }, { 17, 11, 85 },
+ { 7, 10, 508 }, { 5, 11, 957 }, { 5, 11, 1008 }, { 7, 11, 249 },
+ { 4, 11, 129 }, { 7, 11, 465 }, { 5, 0, 54 }, { 7, 11, 470 },
+ { 7, 11, 1057 }, { 7, 11, 1201 }, { 9, 11, 755 }, { 11, 11, 906 },
+ { 12, 11, 527 }, { 7, 11, 908 }, { 18, 11, 7 }, { 5, 11, 148 },
+ { 8, 11, 450 }, { 16, 11, 1 }, { 4, 0, 256 }, { 7, 0, 1488 },
+ { 9, 0, 351 }, { 6, 10, 310 }, { 7, 10, 1849 }, { 8, 10, 72 },
+ { 8, 10, 272 }, { 8, 10, 431 }, { 9, 10, 12 }, { 10, 10, 563 },
+ { 10, 10, 630 }, { 10, 10, 796 }, { 10, 10, 810 }, { 11, 10, 367 },
+ { 11, 10, 599 }, { 11, 10, 686 }, { 12, 10, 672 }, { 6, 0, 1885 },
+ { 6, 0, 1898 }, { 6, 0, 1899 }, { 12, 0, 955 }, { 4, 0, 714 },
+ { 5, 0, 469 }, { 6, 0, 1270 }, { 6, 0, 1456 }, { 4, 0, 744 },
+ { 6, 0, 313 }, { 7, 10, 537 }, { 8, 10, 64 }, { 9, 10, 127 },
+ { 10, 10, 496 }, { 12, 10, 510 }, { 13, 10, 384 }, { 4, 11, 217 },
+ { 4, 10, 244 }, { 5, 11, 710 }, { 7, 10, 233 }, { 7, 11, 1926 },
+ { 9, 11, 428 }, { 9, 11, 708 }, { 10, 11, 254 }, { 10, 11, 296 },
+ { 10, 11, 720 }, { 11, 11, 109 }, { 11, 11, 255 }, { 12, 11, 165 },
+ { 12, 11, 315 }, { 13, 11, 107 }, { 13, 11, 203 }, { 14, 11, 54 },
+ { 14, 11, 99 }, { 14, 11, 114 }, { 14, 11, 388 }, { 16, 11, 85 },
+ { 17, 11, 9 }, { 17, 11, 33 }, { 20, 11, 25 }, { 20, 11, 28 },
+ { 20, 11, 29 }, { 21, 11, 9 }, { 21, 11, 10 }, { 21, 11, 34 },
+ { 22, 11, 17 }, { 10, 0, 402 }, { 7, 0, 969 }, { 18, 0, 55 },
+ { 8, 0, 50 }, { 9, 0, 624 }, { 6, 0, 1355 }, { 4, 0, 572 },
+ { 6, 10, 1650 }, { 10, 10, 702 }, { 11, 10, 245 }, { 10, 0, 847 },
+ { 14, 0, 445 }, { 6, 0, 43 }, { 7, 0, 38 }, { 8, 0, 248 },
+ { 10, 0, 513 }, { 5, 0, 369 }, { 9, 10, 338 }, { 5, 0, 766 },
+ { 5, 0, 363 }, { 5, 10, 896 }, { 8, 11, 392 }, { 11, 11, 54 },
+ { 13, 11, 173 }, { 13, 11, 294 }, { 20, 11, 7 }, { 6, 0, 678 },
+ { 7, 11, 1230 }, { 8, 11, 531 }, { 6, 0, 258 }, { 12, 0, 409 },
+ { 5, 0, 249 }, { 20, 0, 82 }, { 7, 10, 1117 }, { 8, 10, 539 },
+ { 5, 0, 393 }, { 6, 0, 378 }, { 7, 0, 1981 }, { 9, 0, 32 },
+ { 9, 0, 591 }, { 10, 0, 685 }, { 10, 0, 741 }, { 14, 0, 382 },
+ { 5, 0, 788 }, { 6, 0, 1281 }, { 6, 0, 1295 }, { 7, 0, 1968 },
+ { 13, 0, 509 }, { 4, 0, 61 }, { 5, 0, 58 }, { 5, 0, 171 },
+ { 5, 0, 683 }, { 6, 0, 291 }, { 6, 0, 566 }, { 7, 0, 1650 },
+ { 11, 0, 523 }, { 12, 0, 273 }, { 12, 0, 303 }, { 15, 0, 39 },
+ { 15, 0, 111 }, { 6, 0, 706 }, { 6, 0, 1283 }, { 6, 0, 589 },
+ { 7, 11, 1433 }, { 5, 11, 435 }, { 7, 0, 1059 }, { 13, 0, 54 },
+ { 5, 10, 4 }, { 5, 10, 810 }, { 6, 10, 13 }, { 6, 10, 538 },
+ { 6, 10, 1690 }, { 6, 10, 1726 }, { 7, 10, 1819 }, { 8, 10, 148 },
+ { 8, 10, 696 }, { 8, 10, 791 }, { 12, 10, 125 }, { 15, 10, 9 },
+ { 7, 10, 1268 }, { 5, 11, 85 }, { 6, 11, 419 }, { 7, 11, 134 },
+ { 7, 11, 305 }, { 7, 11, 361 }, { 7, 11, 1337 }, { 8, 11, 71 },
+ { 12, 11, 519 }, { 9, 0, 824 }, { 12, 11, 688 }, { 5, 11, 691 },
+ { 7, 11, 345 }, { 7, 10, 1385 }, { 9, 11, 94 }, { 11, 10, 582 },
+ { 11, 10, 650 }, { 11, 10, 901 }, { 11, 10, 949 }, { 12, 11, 169 },
+ { 12, 10, 232 }, { 12, 10, 236 }, { 13, 10, 413 }, { 13, 10, 501 },
+ { 18, 10, 116 }, { 4, 0, 917 }, { 5, 0, 1005 }, { 7, 0, 1598 },
+ { 5, 11, 183 }, { 6, 11, 582 }, { 9, 11, 344 }, { 10, 11, 679 },
+ { 12, 11, 435 }, { 4, 10, 925 }, { 5, 10, 803 }, { 8, 10, 698 },
+ { 10, 10, 828 }, { 4, 0, 919 }, { 7, 11, 511 }, { 11, 10, 992 },
+ { 4, 0, 255 }, { 5, 0, 302 }, { 6, 0, 132 }, { 7, 0, 128 },
+ { 7, 0, 283 }, { 7, 0, 1299 }, { 10, 0, 52 }, { 10, 0, 514 },
+ { 11, 0, 925 }, { 13, 0, 92 }, { 14, 0, 309 }, { 6, 0, 1369 },
+ { 7, 10, 1847 }, { 6, 0, 328 }, { 7, 11, 1993 }, { 8, 11, 684 },
+ { 5, 10, 383 }, { 9, 0, 173 }, { 6, 11, 583 }, { 6, 0, 1411 },
+ { 19, 0, 65 }, { 5, 11, 704 }, { 8, 11, 357 }, { 10, 11, 745 },
+ { 14, 11, 426 }, { 17, 11, 94 }, { 19, 11, 57 }, { 9, 10, 660 },
+ { 10, 10, 347 }, { 4, 11, 179 }, { 5, 11, 198 }, { 5, 11, 697 },
+ { 7, 11, 347 }, { 7, 11, 971 }, { 8, 11, 181 }, { 10, 11, 711 },
+ { 13, 0, 442 }, { 11, 0, 842 }, { 11, 0, 924 }, { 13, 0, 317 },
+ { 13, 0, 370 }, { 13, 0, 469 }, { 13, 0, 471 }, { 14, 0, 397 },
+ { 18, 0, 69 }, { 18, 0, 145 }, { 7, 10, 572 }, { 9, 10, 592 },
+ { 11, 10, 680 }, { 12, 10, 356 }, { 12, 10, 550 }, { 14, 11, 19 },
+ { 14, 11, 28 }, { 16, 11, 29 }, { 8, 0, 534 }, { 4, 11, 243 },
+ { 5, 11, 203 }, { 7, 11, 19 }, { 7, 11, 71 }, { 7, 11, 113 },
+ { 10, 11, 405 }, { 11, 11, 357 }, { 14, 11, 240 }, { 6, 0, 210 },
+ { 10, 0, 845 }, { 10, 0, 862 }, { 7, 11, 1351 }, { 9, 11, 581 },
+ { 10, 11, 639 }, { 11, 11, 453 }, { 12, 11, 584 }, { 7, 11, 1450 },
+ { 11, 11, 99 }, { 10, 0, 892 }, { 12, 0, 719 }, { 16, 0, 105 },
+ { 4, 0, 284 }, { 6, 0, 223 }, { 6, 11, 492 }, { 5, 11, 134 },
+ { 6, 11, 408 }, { 6, 11, 495 }, { 7, 11, 1593 }, { 8, 0, 529 },
+ { 9, 0, 807 }, { 4, 0, 218 }, { 7, 0, 526 }, { 15, 0, 137 },
+ { 6, 0, 1444 }, { 14, 11, 4 }, { 4, 11, 665 }, { 4, 0, 270 },
+ { 5, 0, 192 }, { 6, 0, 332 }, { 7, 0, 1322 }, { 4, 11, 248 },
+ { 7, 11, 137 }, { 9, 11, 349 }, { 12, 0, 661 }, { 7, 0, 1517 },
+ { 11, 0, 597 }, { 14, 0, 76 }, { 14, 0, 335 }, { 20, 0, 33 },
+ { 7, 10, 748 }, { 11, 10, 700 }, { 5, 11, 371 }, { 7, 11, 563 },
+ { 18, 11, 57 }, { 5, 10, 127 }, { 5, 0, 418 }, { 4, 11, 374 },
+ { 7, 11, 547 }, { 7, 11, 1700 }, { 7, 11, 1833 }, { 11, 11, 858 },
+ { 6, 10, 198 }, { 12, 10, 83 }, { 7, 11, 1812 }, { 13, 11, 259 },
+ { 13, 11, 356 }, { 14, 11, 242 }, { 19, 11, 114 }, { 7, 0, 379 },
+ { 8, 0, 481 }, { 9, 0, 377 }, { 5, 10, 276 }, { 6, 10, 55 },
+ { 7, 10, 1369 }, { 10, 11, 286 }, { 5, 0, 1003 }, { 6, 0, 149 },
+ { 6, 10, 1752 }, { 8, 10, 726 }, { 8, 0, 262 }, { 9, 0, 627 },
+ { 10, 0, 18 }, { 11, 0, 214 }, { 11, 0, 404 }, { 11, 0, 457 },
+ { 11, 0, 780 }, { 11, 0, 913 }, { 13, 0, 401 }, { 14, 0, 200 },
+ { 6, 11, 1647 }, { 7, 11, 1552 }, { 7, 11, 2010 }, { 9, 11, 494 },
+ { 9, 11, 509 }, { 7, 0, 742 }, { 8, 0, 304 }, { 4, 0, 142 },
+ { 5, 10, 764 }, { 6, 10, 309 }, { 7, 10, 331 }, { 10, 10, 550 },
+ { 7, 10, 1062 }, { 6, 11, 123 }, { 7, 11, 214 }, { 7, 10, 986 },
+ { 9, 11, 728 }, { 10, 11, 157 }, { 11, 11, 346 }, { 11, 11, 662 },
+ { 15, 11, 106 }, { 7, 10, 1573 }, { 7, 0, 925 }, { 9, 0, 799 },
+ { 4, 0, 471 }, { 5, 0, 51 }, { 6, 0, 602 }, { 8, 0, 484 },
+ { 10, 0, 195 }, { 8, 0, 688 }, { 4, 0, 697 }, { 6, 0, 1169 },
+ { 6, 0, 1241 }, { 6, 10, 194 }, { 7, 10, 133 }, { 10, 10, 493 },
+ { 10, 10, 570 }, { 11, 10, 664 }, { 12, 0, 751 }, { 7, 0, 929 },
+ { 10, 0, 452 }, { 11, 0, 878 }, { 16, 0, 33 }, { 5, 10, 24 },
+ { 5, 10, 569 }, { 6, 10, 3 }, { 6, 10, 119 }, { 6, 10, 143 },
+ { 6, 10, 440 }, { 7, 10, 599 }, { 7, 10, 1686 }, { 7, 10, 1854 },
+ { 8, 10, 424 }, { 9, 10, 43 }, { 9, 10, 584 }, { 9, 10, 760 },
+ { 10, 10, 328 }, { 11, 10, 159 }, { 11, 10, 253 }, { 12, 10, 487 },
+ { 12, 10, 531 }, { 4, 11, 707 }, { 13, 11, 106 }, { 18, 11, 49 },
+ { 19, 11, 41 }, { 5, 0, 221 }, { 5, 11, 588 }, { 6, 11, 393 },
+ { 6, 0, 1437 }, { 6, 11, 211 }, { 7, 11, 1690 }, { 11, 11, 486 },
+ { 12, 11, 369 }, { 5, 10, 14 }, { 5, 10, 892 }, { 6, 10, 283 },
+ { 7, 10, 234 }, { 8, 10, 537 }, { 4, 0, 988 }, { 8, 0, 955 },
+ { 7, 0, 1251 }, { 4, 10, 126 }, { 8, 10, 635 }, { 19, 10, 34 },
+ { 4, 10, 316 }, { 7, 10, 1561 }, { 9, 10, 861 }, { 4, 10, 64 },
+ { 5, 10, 352 }, { 5, 10, 720 }, { 6, 10, 368 }, { 11, 10, 359 },
+ { 6, 0, 192 }, { 4, 0, 132 }, { 5, 0, 69 }, { 7, 0, 1242 },
+ { 7, 10, 1577 }, { 10, 10, 304 }, { 10, 10, 549 }, { 12, 10, 365 },
+ { 13, 10, 220 }, { 13, 10, 240 }, { 14, 10, 33 }, { 4, 0, 111 },
+ { 7, 0, 865 }, { 6, 11, 219 }, { 5, 11, 582 }, { 6, 11, 1646 },
+ { 7, 11, 99 }, { 7, 11, 1962 }, { 7, 11, 1986 }, { 8, 11, 515 },
+ { 8, 11, 773 }, { 9, 11, 23 }, { 9, 11, 491 }, { 12, 11, 620 },
+ { 14, 11, 52 }, { 17, 11, 50 }, { 4, 0, 767 }, { 7, 11, 568 },
+ { 20, 11, 21 }, { 6, 0, 42 }, { 7, 0, 1416 }, { 7, 0, 2005 },
+ { 8, 0, 131 }, { 8, 0, 466 }, { 9, 0, 672 }, { 13, 0, 252 },
+ { 20, 0, 103 }, { 5, 11, 851 }, { 7, 0, 1050 }, { 6, 10, 175 },
+ { 9, 10, 289 }, { 5, 10, 432 }, { 5, 10, 913 }, { 6, 0, 44 },
+ { 8, 0, 368 }, { 7, 11, 784 }, { 4, 0, 570 }, { 5, 0, 120 },
+ { 11, 10, 595 }, { 12, 0, 29 }, { 6, 0, 227 }, { 7, 0, 1589 },
+ { 4, 11, 98 }, { 7, 11, 1365 }, { 9, 11, 422 }, { 9, 11, 670 },
+ { 10, 11, 775 }, { 11, 11, 210 }, { 13, 11, 26 }, { 13, 11, 457 },
+ { 13, 11, 476 }, { 12, 10, 80 }, { 5, 10, 931 }, { 6, 10, 1698 },
+ { 5, 0, 522 }, { 6, 0, 1120 }, { 7, 0, 1529 }, { 12, 0, 739 },
+ { 14, 0, 448 }, { 14, 0, 467 }, { 11, 10, 526 }, { 11, 10, 939 },
+ { 13, 10, 290 }, { 5, 10, 774 }, { 6, 10, 1637 }, { 6, 10, 1686 },
+ { 6, 10, 1751 }, { 6, 0, 1667 }, { 7, 0, 2036 }, { 7, 10, 1167 },
+ { 11, 10, 934 }, { 13, 10, 391 }, { 17, 10, 76 }, { 9, 11, 147 },
+ { 6, 10, 260 }, { 7, 10, 1484 }, { 11, 11, 821 }, { 12, 11, 110 },
+ { 12, 11, 153 }, { 18, 11, 41 }, { 22, 11, 19 }, { 6, 0, 511 },
+ { 12, 0, 132 }, { 6, 10, 573 }, { 5, 0, 568 }, { 6, 0, 138 },
+ { 7, 0, 1293 }, { 4, 0, 1020 }, { 8, 0, 258 }, { 9, 0, 208 },
+ { 9, 0, 359 }, { 4, 0, 565 }, { 8, 0, 23 }, { 8, 0, 827 },
+ { 6, 0, 344 }, { 4, 0, 922 }, { 5, 0, 1023 }, { 13, 11, 477 },
+ { 14, 11, 120 }, { 20, 11, 61 }, { 6, 0, 240 }, { 5, 11, 209 },
+ { 6, 11, 30 }, { 11, 11, 56 }, { 11, 11, 305 }, { 6, 0, 171 },
+ { 7, 0, 1002 }, { 7, 0, 1324 }, { 9, 0, 415 }, { 14, 0, 230 },
+ { 18, 0, 68 }, { 4, 10, 292 }, { 4, 10, 736 }, { 5, 10, 871 },
+ { 6, 10, 1689 }, { 7, 10, 1944 }, { 9, 10, 580 }, { 9, 11, 635 },
+ { 11, 11, 559 }, { 4, 11, 150 }, { 5, 11, 303 }, { 6, 11, 327 },
+ { 6, 10, 63 }, { 7, 10, 920 }, { 5, 10, 793 }, { 8, 11, 192 },
+ { 10, 11, 78 }, { 10, 11, 555 }, { 11, 11, 308 }, { 13, 11, 359 },
+ { 19, 11, 95 }, { 7, 11, 786 }, { 7, 11, 1712 }, { 8, 0, 402 },
+ { 6, 0, 754 }, { 6, 11, 1638 }, { 7, 11, 79 }, { 7, 11, 496 },
+ { 9, 11, 138 }, { 10, 11, 336 }, { 11, 11, 12 }, { 12, 11, 412 },
+ { 12, 11, 440 }, { 14, 11, 305 }, { 4, 0, 716 }, { 13, 0, 31 },
+ { 5, 0, 982 }, { 8, 0, 691 }, { 8, 0, 731 }, { 5, 10, 67 },
+ { 6, 10, 62 }, { 6, 10, 374 }, { 7, 10, 1391 }, { 9, 10, 790 },
+ { 12, 10, 47 }, { 11, 11, 556 }, { 23, 11, 1 }, { 7, 11, 204 },
+ { 7, 11, 415 }, { 8, 11, 42 }, { 10, 11, 85 }, { 11, 11, 33 },
+ { 11, 11, 564 }, { 12, 11, 571 }, { 21, 11, 1 }, { 8, 0, 888 },
+ { 7, 11, 610 }, { 7, 11, 1501 }, { 4, 10, 391 }, { 7, 10, 1169 },
+ { 5, 0, 847 }, { 9, 0, 840 }, { 10, 0, 803 }, { 9, 0, 823 },
+ { 6, 0, 785 }, { 8, 0, 152 }, { 9, 0, 53 }, { 9, 0, 268 },
+ { 9, 0, 901 }, { 10, 0, 518 }, { 10, 0, 829 }, { 11, 0, 188 },
+ { 13, 0, 74 }, { 14, 0, 46 }, { 15, 0, 17 }, { 15, 0, 33 },
+ { 17, 0, 40 }, { 18, 0, 36 }, { 19, 0, 20 }, { 22, 0, 1 },
+ { 24, 0, 2 }, { 4, 11, 3 }, { 5, 11, 247 }, { 5, 11, 644 },
+ { 7, 11, 744 }, { 7, 11, 1207 }, { 7, 11, 1225 }, { 7, 11, 1909 },
+ { 18, 11, 147 }, { 8, 0, 532 }, { 7, 0, 681 }, { 4, 10, 271 },
+ { 12, 0, 314 }, { 12, 0, 677 }, { 4, 0, 684 }, { 8, 0, 384 },
+ { 5, 11, 285 }, { 9, 11, 67 }, { 13, 11, 473 }, { 15, 11, 82 },
+ { 4, 10, 253 }, { 5, 10, 544 }, { 7, 10, 300 }, { 9, 10, 340 },
+ { 7, 0, 110 }, { 7, 0, 447 }, { 8, 0, 290 }, { 8, 0, 591 },
+ { 9, 0, 382 }, { 9, 0, 649 }, { 11, 0, 71 }, { 11, 0, 155 },
+ { 11, 0, 313 }, { 12, 0, 5 }, { 13, 0, 325 }, { 14, 0, 287 },
+ { 6, 0, 1818 }, { 8, 0, 1007 }, { 10, 0, 321 }, { 7, 0, 360 },
+ { 7, 0, 425 }, { 9, 0, 66 }, { 9, 0, 278 }, { 10, 0, 644 },
+ { 5, 10, 818 }, { 5, 0, 385 }, { 5, 10, 541 }, { 6, 10, 94 },
+ { 6, 10, 499 }, { 7, 10, 230 }, { 11, 10, 321 }, { 4, 10, 920 },
+ { 5, 10, 25 }, { 5, 10, 790 }, { 6, 10, 457 }, { 7, 10, 853 },
+ { 8, 10, 788 }, { 4, 0, 900 }, { 5, 0, 861 }, { 5, 0, 254 },
+ { 7, 0, 985 }, { 8, 0, 73 }, { 7, 0, 1959 }, { 8, 0, 683 },
+ { 6, 10, 1765 }, { 5, 10, 822 }, { 4, 10, 634 }, { 4, 11, 29 },
+ { 6, 11, 532 }, { 7, 11, 1628 }, { 7, 11, 1648 }, { 9, 11, 303 },
+ { 9, 11, 350 }, { 10, 11, 433 }, { 11, 11, 97 }, { 11, 11, 557 },
+ { 11, 11, 745 }, { 12, 11, 289 }, { 12, 11, 335 }, { 12, 11, 348 },
+ { 12, 11, 606 }, { 13, 11, 116 }, { 13, 11, 233 }, { 13, 11, 466 },
+ { 14, 11, 181 }, { 14, 11, 209 }, { 14, 11, 232 }, { 14, 11, 236 },
+ { 14, 11, 300 }, { 16, 11, 41 }, { 20, 11, 97 }, { 19, 0, 86 },
+ { 6, 10, 36 }, { 7, 10, 658 }, { 8, 10, 454 }, { 7, 11, 1692 },
+ { 4, 0, 725 }, { 5, 11, 501 }, { 7, 11, 1704 }, { 9, 11, 553 },
+ { 11, 11, 520 }, { 12, 11, 557 }, { 13, 11, 249 }, { 6, 0, 196 },
+ { 5, 0, 831 }, { 8, 0, 723 }, { 7, 0, 1897 }, { 13, 0, 80 },
+ { 13, 0, 437 }, { 17, 0, 74 }, { 4, 0, 992 }, { 6, 0, 627 },
+ { 8, 0, 994 }, { 7, 11, 1294 }, { 4, 10, 104 }, { 5, 0, 848 },
+ { 6, 0, 66 }, { 8, 0, 764 }, { 4, 0, 36 }, { 7, 0, 1387 },
+ { 10, 0, 205 }, { 11, 0, 755 }, { 6, 0, 1046 }, { 6, 0, 1485 },
+ { 6, 0, 950 }, { 4, 0, 887 }, { 14, 0, 450 }, { 20, 0, 111 },
+ { 7, 0, 620 }, { 7, 0, 831 }, { 9, 10, 542 }, { 9, 10, 566 },
+ { 10, 10, 728 }, { 6, 0, 165 }, { 10, 0, 388 }, { 11, 10, 263 },
+ { 4, 0, 719 }, { 7, 0, 155 }, { 10, 10, 468 }, { 6, 11, 453 },
+ { 16, 11, 36 }, { 6, 11, 129 }, { 5, 0, 533 }, { 7, 0, 755 },
+ { 10, 0, 780 }, { 6, 0, 1465 }, { 4, 0, 353 }, { 6, 0, 146 },
+ { 6, 0, 1789 }, { 7, 0, 427 }, { 7, 0, 990 }, { 7, 0, 1348 },
+ { 9, 0, 665 }, { 9, 0, 898 }, { 11, 0, 893 }, { 14, 0, 212 },
+ { 7, 10, 87 }, { 14, 10, 288 }, { 4, 0, 45 }, { 7, 0, 1257 },
+ { 12, 0, 7 }, { 7, 10, 988 }, { 7, 10, 1939 }, { 9, 10, 64 },
+ { 9, 10, 502 }, { 12, 10, 34 }, { 13, 10, 12 }, { 13, 10, 234 },
+ { 19, 10, 77 }, { 4, 0, 607 }, { 5, 11, 60 }, { 6, 11, 504 },
+ { 7, 11, 614 }, { 7, 11, 1155 }, { 12, 11, 0 }, { 7, 10, 141 },
+ { 8, 11, 198 }, { 11, 11, 29 }, { 12, 11, 534 }, { 12, 0, 65 },
+ { 8, 0, 816 }, { 4, 10, 619 }, { 11, 0, 88 }, { 5, 10, 246 },
+ { 8, 10, 189 }, { 9, 10, 355 }, { 9, 10, 512 }, { 10, 10, 124 },
+ { 10, 10, 453 }, { 11, 10, 143 }, { 11, 10, 416 }, { 11, 10, 859 },
+ { 13, 10, 341 }, { 4, 11, 379 }, { 7, 11, 1397 }, { 4, 0, 600 },
+ { 9, 0, 621 }, { 5, 0, 367 }, { 6, 0, 561 }, { 6, 0, 559 },
+ { 6, 0, 1691 }, { 6, 0, 585 }, { 6, 11, 585 }, { 7, 11, 1228 },
+ { 4, 11, 118 }, { 5, 10, 678 }, { 6, 11, 274 }, { 6, 11, 361 },
+ { 7, 11, 75 }, { 13, 11, 441 }, { 7, 11, 1818 }, { 9, 11, 841 },
+ { 5, 0, 573 }, { 6, 0, 287 }, { 7, 10, 862 }, { 7, 10, 1886 },
+ { 10, 10, 179 }, { 4, 10, 517 }, { 12, 11, 693 }, { 5, 11, 314 },
+ { 6, 11, 221 }, { 7, 11, 419 }, { 10, 11, 650 }, { 11, 11, 396 },
+ { 12, 11, 156 }, { 13, 11, 369 }, { 14, 11, 333 }, { 17, 11, 47 },
+ { 12, 10, 540 }, { 8, 10, 667 }, { 11, 10, 403 }, { 18, 10, 83 },
+ { 6, 0, 672 }, { 5, 10, 761 }, { 9, 0, 157 }, { 10, 10, 131 },
+ { 12, 10, 72 }, { 7, 0, 714 }, { 6, 11, 460 }, { 6, 0, 456 },
+ { 5, 0, 925 }, { 5, 11, 682 }, { 7, 11, 1887 }, { 8, 11, 510 },
+ { 8, 11, 475 }, { 5, 11, 1016 }, { 9, 0, 19 }, { 7, 11, 602 },
+ { 8, 11, 179 }, { 10, 11, 781 }, { 12, 11, 126 }, { 6, 11, 329 },
+ { 10, 11, 111 }, { 6, 0, 822 }, { 6, 0, 1473 }, { 16, 11, 86 },
+ { 11, 0, 113 }, { 11, 11, 113 }, { 5, 11, 821 }, { 6, 11, 1687 },
+ { 5, 10, 449 }, { 7, 0, 463 }, { 17, 0, 69 }, { 8, 10, 103 },
+ { 7, 10, 2028 }, { 10, 10, 641 }, { 6, 0, 193 }, { 7, 0, 240 },
+ { 7, 0, 1682 }, { 10, 0, 51 }, { 10, 0, 640 }, { 11, 0, 410 },
+ { 13, 0, 82 }, { 14, 0, 247 }, { 14, 0, 331 }, { 14, 0, 377 },
+ { 6, 0, 471 }, { 11, 0, 411 }, { 14, 0, 2 }, { 5, 11, 71 },
+ { 7, 11, 1407 }, { 9, 11, 388 }, { 9, 11, 704 }, { 10, 11, 261 },
+ { 10, 11, 619 }, { 11, 11, 547 }, { 11, 11, 619 }, { 15, 11, 157 },
+ { 8, 0, 633 }, { 7, 0, 1148 }, { 6, 0, 554 }, { 7, 0, 1392 },
+ { 12, 0, 129 }, { 7, 10, 1274 }, { 7, 10, 1386 }, { 7, 11, 2008 },
+ { 9, 11, 337 }, { 10, 11, 517 }, { 18, 10, 87 }, { 7, 0, 803 },
+ { 8, 0, 542 }, { 6, 10, 187 }, { 7, 10, 1203 }, { 8, 10, 380 },
+ { 14, 10, 117 }, { 21, 10, 28 }, { 6, 10, 297 }, { 7, 10, 793 },
+ { 11, 10, 938 }, { 8, 0, 438 }, { 11, 0, 363 }, { 7, 10, 464 },
+ { 11, 10, 105 }, { 12, 10, 231 }, { 14, 10, 386 }, { 15, 10, 102 },
+ { 20, 10, 75 }, { 5, 11, 16 }, { 6, 11, 86 }, { 6, 11, 603 },
+ { 7, 11, 292 }, { 7, 11, 561 }, { 8, 11, 257 }, { 8, 11, 382 },
+ { 9, 11, 721 }, { 9, 11, 778 }, { 11, 11, 581 }, { 12, 11, 466 },
+ { 6, 0, 717 }, { 4, 11, 486 }, { 5, 11, 491 }, { 4, 0, 875 },
+ { 4, 11, 72 }, { 6, 11, 265 }, { 7, 11, 847 }, { 4, 0, 237 },
+ { 7, 0, 514 }, { 6, 0, 392 }, { 7, 0, 65 }, { 7, 0, 2019 },
+ { 12, 11, 261 }, { 7, 11, 922 }, { 9, 11, 404 }, { 12, 0, 563 },
+ { 14, 0, 101 }, { 18, 0, 129 }, { 7, 10, 1010 }, { 11, 10, 733 },
+ { 11, 10, 759 }, { 13, 10, 34 }, { 18, 10, 45 }, { 7, 10, 1656 },
+ { 9, 10, 369 }, { 10, 10, 338 }, { 10, 10, 490 }, { 11, 10, 154 },
+ { 11, 10, 545 }, { 11, 10, 775 }, { 13, 10, 77 }, { 13, 10, 274 },
+ { 4, 0, 444 }, { 10, 0, 146 }, { 12, 0, 9 }, { 11, 11, 163 },
+ { 7, 0, 1260 }, { 7, 0, 1790 }, { 9, 0, 222 }, { 10, 0, 43 },
+ { 11, 0, 900 }, { 9, 11, 234 }, { 10, 0, 971 }, { 9, 0, 761 },
+ { 6, 0, 699 }, { 8, 11, 434 }, { 6, 0, 1116 }, { 7, 0, 1366 },
+ { 5, 10, 20 }, { 6, 11, 197 }, { 6, 10, 298 }, { 7, 10, 659 },
+ { 8, 11, 205 }, { 9, 10, 219 }, { 4, 11, 490 }, { 11, 11, 820 },
+ { 22, 11, 51 }, { 7, 10, 1440 }, { 11, 10, 854 }, { 11, 10, 872 },
+ { 11, 10, 921 }, { 12, 10, 551 }, { 13, 10, 472 }, { 14, 10, 367 },
+ { 12, 11, 13 }, { 4, 0, 829 }, { 12, 0, 242 }, { 4, 10, 439 },
+ { 8, 10, 669 }, { 6, 0, 593 }, { 6, 11, 452 }, { 7, 11, 312 },
+ { 10, 11, 219 }, { 4, 11, 333 }, { 9, 11, 176 }, { 12, 11, 353 },
+ { 13, 11, 187 }, { 7, 0, 36 }, { 8, 0, 201 }, { 8, 0, 605 },
+ { 12, 0, 224 }, { 4, 10, 233 }, { 6, 0, 1430 }, { 6, 0, 1806 },
+ { 4, 0, 523 }, { 5, 0, 638 }, { 6, 0, 1889 }, { 9, 0, 958 },
+ { 9, 0, 971 }, { 9, 0, 976 }, { 12, 0, 796 }, { 12, 0, 799 },
+ { 12, 0, 808 }, { 12, 0, 835 }, { 12, 0, 836 }, { 12, 0, 914 },
+ { 12, 0, 946 }, { 15, 0, 216 }, { 15, 0, 232 }, { 18, 0, 183 },
+ { 18, 0, 187 }, { 18, 0, 194 }, { 18, 0, 212 }, { 18, 0, 232 },
+ { 21, 0, 49 }, { 4, 10, 482 }, { 6, 0, 827 }, { 6, 0, 1434 },
+ { 7, 10, 346 }, { 6, 0, 2043 }, { 6, 0, 242 }, { 7, 0, 227 },
+ { 7, 0, 1581 }, { 8, 0, 104 }, { 9, 0, 113 }, { 9, 0, 220 },
+ { 9, 0, 427 }, { 10, 0, 136 }, { 10, 0, 239 }, { 11, 0, 579 },
+ { 11, 0, 1023 }, { 13, 0, 4 }, { 13, 0, 204 }, { 13, 0, 316 },
+ { 20, 0, 86 }, { 6, 11, 1685 }, { 7, 0, 148 }, { 8, 0, 284 },
+ { 13, 0, 63 }, { 14, 0, 10 }, { 7, 11, 584 }, { 6, 0, 1249 },
+ { 7, 0, 861 }, { 7, 10, 334 }, { 5, 10, 795 }, { 6, 10, 1741 },
+ { 9, 11, 70 }, { 4, 0, 807 }, { 7, 11, 135 }, { 8, 11, 7 },
+ { 8, 11, 62 }, { 9, 11, 243 }, { 10, 11, 658 }, { 10, 11, 697 },
+ { 11, 11, 456 }, { 11, 11, 756 }, { 9, 11, 395 }, { 10, 11, 79 },
+ { 9, 11, 108 }, { 19, 0, 94 }, { 8, 0, 494 }, { 7, 11, 631 },
+ { 7, 10, 622 }, { 7, 0, 1510 }, { 7, 10, 1750 }, { 4, 10, 203 },
+ { 7, 10, 1936 }, { 7, 11, 406 }, { 7, 11, 459 }, { 8, 11, 606 },
+ { 11, 11, 726 }, { 7, 0, 1306 }, { 8, 0, 505 }, { 9, 0, 482 },
+ { 10, 0, 126 }, { 11, 0, 225 }, { 12, 0, 347 }, { 12, 0, 449 },
+ { 13, 0, 19 }, { 14, 0, 218 }, { 14, 0, 435 }, { 5, 0, 268 },
+ { 10, 0, 764 }, { 12, 0, 120 }, { 13, 0, 39 }, { 17, 0, 127 },
+ { 14, 11, 68 }, { 11, 10, 678 }, { 12, 10, 307 }, { 12, 11, 268 },
+ { 12, 11, 640 }, { 14, 11, 119 }, { 7, 10, 2044 }, { 5, 11, 612 },
+ { 4, 11, 372 }, { 7, 11, 482 }, { 8, 11, 158 }, { 9, 11, 602 },
+ { 9, 11, 615 }, { 10, 11, 245 }, { 10, 11, 678 }, { 10, 11, 744 },
+ { 11, 11, 248 }, { 11, 11, 806 }, { 7, 10, 311 }, { 9, 10, 308 },
+ { 12, 10, 255 }, { 4, 0, 384 }, { 7, 0, 1022 }, { 5, 11, 854 },
+ { 7, 11, 1991 }, { 7, 10, 1266 }, { 4, 10, 400 }, { 5, 10, 267 },
+ { 7, 10, 232 }, { 7, 0, 1703 }, { 9, 0, 159 }, { 11, 0, 661 },
+ { 12, 0, 603 }, { 4, 0, 964 }, { 14, 0, 438 }, { 14, 0, 444 },
+ { 14, 0, 456 }, { 22, 0, 60 }, { 22, 0, 63 }, { 9, 11, 106 },
+ { 9, 11, 163 }, { 9, 11, 296 }, { 10, 11, 167 }, { 10, 11, 172 },
+ { 10, 11, 777 }, { 11, 11, 16 }, { 8, 0, 583 }, { 4, 0, 515 },
+ { 8, 0, 632 }, { 8, 0, 697 }, { 9, 0, 854 }, { 5, 11, 195 },
+ { 7, 11, 1685 }, { 6, 0, 1123 }, { 6, 0, 1365 }, { 6, 11, 328 },
+ { 7, 11, 1997 }, { 8, 11, 730 }, { 11, 11, 1006 }, { 4, 0, 136 },
+ { 5, 0, 551 }, { 6, 0, 1782 }, { 7, 0, 1287 }, { 9, 0, 44 },
+ { 10, 0, 552 }, { 10, 0, 642 }, { 11, 0, 839 }, { 12, 0, 274 },
+ { 12, 0, 275 }, { 12, 0, 372 }, { 13, 0, 91 }, { 14, 0, 125 },
+ { 5, 11, 751 }, { 11, 11, 797 }, { 12, 11, 203 }, { 5, 0, 732 },
+ { 7, 0, 679 }, { 8, 0, 313 }, { 4, 10, 100 }, { 7, 11, 821 },
+ { 10, 0, 361 }, { 14, 0, 316 }, { 6, 0, 595 }, { 6, 0, 147 },
+ { 7, 0, 886 }, { 9, 0, 753 }, { 10, 0, 268 }, { 5, 10, 362 },
+ { 5, 10, 443 }, { 6, 10, 318 }, { 7, 10, 1019 }, { 11, 10, 623 },
+ { 5, 10, 463 }, { 8, 10, 296 }, { 4, 10, 454 }, { 5, 11, 950 },
+ { 5, 11, 994 }, { 6, 11, 351 }, { 10, 0, 137 }, { 5, 10, 48 },
+ { 5, 10, 404 }, { 6, 10, 557 }, { 7, 10, 458 }, { 8, 10, 597 },
+ { 10, 10, 455 }, { 10, 10, 606 }, { 11, 10, 49 }, { 11, 10, 548 },
+ { 12, 10, 476 }, { 13, 10, 18 }, { 13, 10, 450 }, { 5, 0, 414 },
+ { 7, 0, 1762 }, { 5, 11, 421 }, { 7, 11, 47 }, { 5, 10, 442 },
+ { 7, 10, 1984 }, { 6, 0, 599 }, { 6, 0, 1749 }, { 6, 0, 1627 },
+ { 4, 0, 488 }, { 4, 11, 350 }, { 9, 11, 751 }, { 4, 0, 83 },
+ { 12, 0, 676 }, { 5, 11, 967 }, { 7, 0, 1639 }, { 5, 10, 55 },
+ { 12, 10, 161 }, { 4, 11, 473 }, { 7, 11, 623 }, { 8, 11, 808 },
+ { 9, 11, 871 }, { 9, 11, 893 }, { 11, 11, 38 }, { 11, 11, 431 },
+ { 12, 11, 112 }, { 12, 11, 217 }, { 12, 11, 243 }, { 12, 11, 562 },
+ { 12, 11, 683 }, { 13, 11, 141 }, { 13, 11, 197 }, { 13, 11, 227 },
+ { 13, 11, 406 }, { 13, 11, 487 }, { 14, 11, 156 }, { 14, 11, 203 },
+ { 14, 11, 224 }, { 14, 11, 256 }, { 18, 11, 58 }, { 22, 11, 0 },
+ { 5, 10, 450 }, { 7, 11, 736 }, { 11, 11, 264 }, { 6, 0, 278 },
+ { 4, 11, 222 }, { 7, 11, 286 }, { 8, 11, 629 }, { 7, 10, 869 },
+ { 12, 0, 97 }, { 16, 0, 14 }, { 6, 0, 1085 }, { 4, 10, 213 },
+ { 7, 10, 223 }, { 8, 10, 80 }, { 7, 0, 388 }, { 7, 0, 644 },
+ { 11, 0, 781 }, { 4, 0, 849 }, { 7, 0, 229 }, { 8, 0, 59 },
+ { 9, 0, 190 }, { 10, 0, 378 }, { 12, 0, 191 }, { 7, 10, 381 },
+ { 7, 10, 806 }, { 7, 10, 820 }, { 8, 10, 354 }, { 8, 10, 437 },
+ { 8, 10, 787 }, { 9, 10, 657 }, { 10, 10, 58 }, { 10, 10, 339 },
+ { 10, 10, 749 }, { 11, 10, 914 }, { 12, 10, 162 }, { 13, 10, 75 },
+ { 14, 10, 106 }, { 14, 10, 198 }, { 14, 10, 320 }, { 14, 10, 413 },
+ { 18, 10, 43 }, { 13, 11, 306 }, { 8, 10, 747 }, { 6, 0, 1115 },
+ { 16, 0, 94 }, { 16, 0, 108 }, { 8, 11, 146 }, { 6, 0, 700 },
+ { 6, 0, 817 }, { 6, 0, 1002 }, { 5, 10, 692 }, { 4, 11, 465 },
+ { 7, 11, 1663 }, { 6, 10, 191 }, { 6, 0, 1414 }, { 7, 11, 913 },
+ { 4, 0, 660 }, { 7, 0, 1035 }, { 10, 0, 737 }, { 6, 10, 162 },
+ { 7, 10, 1960 }, { 8, 10, 831 }, { 4, 10, 706 }, { 7, 0, 690 },
+ { 9, 0, 217 }, { 9, 0, 587 }, { 12, 0, 521 }, { 10, 10, 426 },
+ { 7, 10, 1235 }, { 6, 11, 82 }, { 7, 11, 138 }, { 7, 11, 517 },
+ { 9, 11, 673 }, { 11, 11, 238 }, { 10, 0, 272 }, { 5, 11, 495 },
+ { 7, 11, 834 }, { 9, 11, 733 }, { 11, 11, 378 }, { 6, 0, 1744 },
+ { 4, 0, 1011 }, { 7, 11, 828 }, { 14, 11, 116 }, { 4, 0, 733 },
+ { 9, 0, 194 }, { 10, 0, 92 }, { 11, 0, 198 }, { 12, 0, 84 },
+ { 13, 0, 128 }, { 5, 11, 559 }, { 10, 0, 57 }, { 10, 0, 277 },
+ { 6, 11, 21 }, { 6, 11, 1737 }, { 7, 11, 1444 }, { 8, 11, 224 },
+ { 4, 10, 204 }, { 9, 10, 902 }, { 8, 10, 833 }, { 11, 0, 348 },
+ { 12, 0, 99 }, { 18, 0, 1 }, { 18, 0, 11 }, { 19, 0, 4 },
+ { 7, 10, 366 }, { 9, 10, 287 }, { 12, 10, 199 }, { 12, 10, 556 },
+ { 12, 10, 577 }, { 6, 0, 1981 }, { 8, 0, 936 }, { 21, 0, 33 },
+ { 22, 0, 40 }, { 5, 11, 519 }, { 10, 11, 204 }, { 5, 10, 356 },
+ { 7, 10, 224 }, { 6, 0, 775 }, { 7, 0, 306 }, { 7, 10, 630 },
+ { 9, 10, 567 }, { 11, 10, 150 }, { 11, 10, 444 }, { 13, 10, 119 },
+ { 5, 0, 979 }, { 6, 10, 539 }, { 5, 0, 611 }, { 4, 11, 402 },
+ { 7, 11, 1679 }, { 5, 0, 178 }, { 7, 11, 2 }, { 8, 11, 323 },
+ { 8, 11, 479 }, { 5, 11, 59 }, { 7, 11, 672 }, { 4, 0, 1010 },
+ { 6, 0, 1969 }, { 10, 11, 237 }, { 5, 11, 412 }, { 18, 11, 34 },
+ { 7, 11, 1740 }, { 18, 11, 48 }, { 6, 0, 664 }, { 11, 10, 814 },
+ { 4, 11, 85 }, { 7, 11, 549 }, { 5, 11, 94 }, { 5, 11, 457 },
+ { 4, 0, 390 }, { 6, 0, 1510 }, { 4, 10, 235 }, { 7, 10, 255 },
+ { 4, 10, 194 }, { 5, 10, 584 }, { 6, 11, 11 }, { 6, 10, 384 },
+ { 7, 11, 187 }, { 7, 10, 583 }, { 10, 10, 761 }, { 11, 10, 760 },
+ { 11, 10, 851 }, { 4, 11, 522 }, { 11, 11, 802 }, { 7, 0, 493 },
+ { 10, 11, 776 }, { 13, 11, 345 }, { 14, 11, 425 }, { 18, 0, 37 },
+ { 4, 11, 52 }, { 7, 11, 661 }, { 6, 0, 724 }, { 6, 0, 829 },
+ { 5, 11, 520 }, { 5, 10, 562 }, { 4, 11, 281 }, { 5, 11, 38 },
+ { 7, 11, 194 }, { 7, 11, 668 }, { 7, 11, 1893 }, { 9, 11, 397 },
+ { 5, 10, 191 }, { 9, 10, 271 }, { 7, 0, 1537 }, { 14, 0, 96 },
+ { 15, 0, 73 }, { 5, 0, 473 }, { 11, 0, 168 }, { 4, 10, 470 },
+ { 6, 10, 153 }, { 7, 10, 1503 }, { 7, 10, 1923 }, { 10, 10, 701 },
+ { 11, 10, 132 }, { 11, 10, 227 }, { 11, 10, 320 }, { 11, 10, 436 },
+ { 11, 10, 525 }, { 11, 10, 855 }, { 12, 10, 41 }, { 12, 10, 286 },
+ { 13, 10, 103 }, { 13, 10, 284 }, { 14, 10, 255 }, { 14, 10, 262 },
+ { 15, 10, 117 }, { 15, 10, 127 }, { 5, 0, 105 }, { 5, 0, 438 },
+ { 9, 0, 694 }, { 12, 0, 627 }, { 13, 0, 210 }, { 5, 10, 327 },
+ { 6, 10, 552 }, { 7, 10, 1754 }, { 9, 10, 604 }, { 6, 0, 1256 },
+ { 24, 0, 11 }, { 5, 11, 448 }, { 11, 11, 98 }, { 11, 11, 524 },
+ { 7, 0, 1626 }, { 5, 10, 80 }, { 6, 10, 405 }, { 7, 10, 403 },
+ { 7, 10, 1502 }, { 8, 10, 456 }, { 9, 10, 487 }, { 9, 10, 853 },
+ { 9, 10, 889 }, { 10, 10, 309 }, { 11, 10, 721 }, { 11, 10, 994 },
+ { 12, 10, 430 }, { 13, 10, 165 }, { 14, 11, 16 }, { 18, 11, 44 },
+ { 4, 0, 779 }, { 8, 0, 25 }, { 10, 0, 826 }, { 4, 10, 453 },
+ { 5, 10, 887 }, { 6, 10, 535 }, { 8, 10, 6 }, { 8, 10, 543 },
+ { 8, 10, 826 }, { 9, 11, 461 }, { 12, 11, 632 }, { 4, 0, 308 },
+ { 7, 0, 741 }, { 4, 0, 671 }, { 7, 0, 150 }, { 8, 0, 649 },
+ { 8, 0, 1020 }, { 9, 0, 99 }, { 6, 11, 336 }, { 8, 11, 552 },
+ { 9, 11, 285 }, { 10, 11, 99 }, { 11, 11, 568 }, { 6, 0, 521 },
+ { 5, 0, 339 }, { 14, 0, 3 }, { 15, 0, 41 }, { 15, 0, 166 },
+ { 19, 0, 66 }, { 6, 11, 423 }, { 7, 11, 665 }, { 7, 11, 1210 },
+ { 9, 11, 218 }, { 13, 11, 222 }, { 6, 0, 543 }, { 5, 10, 101 },
+ { 5, 11, 256 }, { 6, 10, 88 }, { 7, 10, 1677 }, { 9, 10, 100 },
+ { 10, 10, 677 }, { 14, 10, 169 }, { 14, 10, 302 }, { 14, 10, 313 },
+ { 15, 10, 48 }, { 15, 10, 84 }, { 4, 10, 310 }, { 7, 10, 708 },
+ { 7, 10, 996 }, { 9, 10, 795 }, { 10, 10, 390 }, { 10, 10, 733 },
+ { 11, 10, 451 }, { 12, 10, 249 }, { 14, 10, 115 }, { 14, 10, 286 },
+ { 15, 10, 100 }, { 5, 10, 587 }, { 13, 11, 417 }, { 14, 11, 129 },
+ { 15, 11, 15 }, { 6, 0, 1358 }, { 8, 11, 554 }, { 4, 10, 498 },
+ { 7, 10, 217 }, { 8, 10, 140 }, { 10, 10, 610 }, { 7, 11, 989 },
+ { 7, 11, 634 }, { 6, 0, 155 }, { 12, 0, 234 }, { 7, 11, 462 },
+ { 4, 11, 618 }, { 6, 0, 1628 }, { 4, 0, 766 }, { 4, 11, 339 },
+ { 5, 10, 905 }, { 7, 11, 259 }, { 7, 0, 829 }, { 4, 11, 759 },
+ { 13, 11, 169 }, { 7, 0, 1445 }, { 4, 10, 456 }, { 7, 10, 358 },
+ { 7, 10, 1637 }, { 8, 10, 643 }, { 11, 10, 483 }, { 5, 0, 486 },
+ { 7, 0, 1349 }, { 5, 11, 688 }, { 7, 11, 712 }, { 7, 0, 1635 },
+ { 8, 0, 17 }, { 10, 0, 217 }, { 10, 0, 295 }, { 12, 0, 2 },
+ { 12, 11, 2 }, { 10, 0, 558 }, { 22, 10, 56 }, { 4, 11, 278 },
+ { 5, 11, 465 }, { 7, 11, 1367 }, { 8, 11, 482 }, { 5, 10, 535 },
+ { 6, 0, 1362 }, { 6, 0, 1461 }, { 10, 11, 274 }, { 10, 11, 625 },
+ { 11, 11, 530 }, { 5, 0, 599 }, { 5, 11, 336 }, { 6, 11, 341 },
+ { 6, 11, 478 }, { 6, 11, 1763 }, { 8, 11, 386 }, { 7, 10, 1748 },
+ { 9, 11, 151 }, { 6, 0, 1376 }, { 5, 10, 539 }, { 7, 11, 73 },
+ { 7, 11, 1971 }, { 11, 11, 283 }, { 9, 0, 93 }, { 11, 0, 474 },
+ { 6, 10, 91 }, { 7, 10, 435 }, { 6, 0, 447 }, { 5, 11, 396 },
+ { 6, 11, 501 }, { 4, 10, 16 }, { 5, 10, 316 }, { 5, 10, 842 },
+ { 6, 10, 370 }, { 6, 10, 1778 }, { 8, 10, 166 }, { 11, 10, 812 },
+ { 12, 10, 206 }, { 12, 10, 351 }, { 14, 10, 418 }, { 16, 10, 15 },
+ { 16, 10, 34 }, { 18, 10, 3 }, { 19, 10, 3 }, { 19, 10, 7 },
+ { 20, 10, 4 }, { 21, 10, 21 }, { 7, 0, 577 }, { 7, 0, 1432 },
+ { 9, 0, 475 }, { 9, 0, 505 }, { 9, 0, 526 }, { 9, 0, 609 },
+ { 9, 0, 689 }, { 9, 0, 726 }, { 9, 0, 735 }, { 9, 0, 738 },
+ { 10, 0, 556 }, { 10, 0, 674 }, { 10, 0, 684 }, { 11, 0, 89 },
+ { 11, 0, 202 }, { 11, 0, 272 }, { 11, 0, 380 }, { 11, 0, 415 },
+ { 11, 0, 505 }, { 11, 0, 537 }, { 11, 0, 550 }, { 11, 0, 562 },
+ { 11, 0, 640 }, { 11, 0, 667 }, { 11, 0, 688 }, { 11, 0, 847 },
+ { 11, 0, 927 }, { 11, 0, 930 }, { 11, 0, 940 }, { 12, 0, 144 },
+ { 12, 0, 325 }, { 12, 0, 329 }, { 12, 0, 389 }, { 12, 0, 403 },
+ { 12, 0, 451 }, { 12, 0, 515 }, { 12, 0, 604 }, { 12, 0, 616 },
+ { 12, 0, 626 }, { 13, 0, 66 }, { 13, 0, 131 }, { 13, 0, 167 },
+ { 13, 0, 236 }, { 13, 0, 368 }, { 13, 0, 411 }, { 13, 0, 434 },
+ { 13, 0, 453 }, { 13, 0, 461 }, { 13, 0, 474 }, { 14, 0, 59 },
+ { 14, 0, 60 }, { 14, 0, 139 }, { 14, 0, 152 }, { 14, 0, 276 },
+ { 14, 0, 353 }, { 14, 0, 402 }, { 15, 0, 28 }, { 15, 0, 81 },
+ { 15, 0, 123 }, { 15, 0, 152 }, { 18, 0, 136 }, { 20, 0, 88 },
+ { 4, 11, 929 }, { 5, 11, 799 }, { 8, 11, 46 }, { 14, 0, 307 },
+ { 4, 0, 609 }, { 7, 0, 756 }, { 9, 0, 544 }, { 11, 0, 413 },
+ { 16, 0, 25 }, { 10, 0, 687 }, { 7, 10, 619 }, { 10, 10, 547 },
+ { 11, 10, 122 }, { 12, 10, 601 }, { 4, 0, 930 }, { 5, 0, 947 },
+ { 5, 0, 939 }, { 14, 0, 21 }, { 4, 11, 892 }, { 5, 11, 770 },
+ { 5, 0, 962 }, { 5, 0, 651 }, { 8, 0, 170 }, { 9, 0, 61 },
+ { 9, 0, 63 }, { 10, 0, 23 }, { 10, 0, 37 }, { 10, 0, 834 },
+ { 11, 0, 4 }, { 11, 0, 187 }, { 11, 0, 281 }, { 11, 0, 503 },
+ { 11, 0, 677 }, { 12, 0, 96 }, { 12, 0, 130 }, { 12, 0, 244 },
+ { 14, 0, 5 }, { 14, 0, 40 }, { 14, 0, 162 }, { 14, 0, 202 },
+ { 18, 0, 133 }, { 4, 0, 406 }, { 5, 0, 579 }, { 12, 0, 492 },
+ { 22, 0, 15 }, { 7, 11, 158 }, { 7, 0, 597 }, { 4, 0, 981 },
+ { 4, 10, 888 }, { 4, 10, 149 }, { 10, 10, 368 }, { 4, 0, 545 },
+ { 4, 10, 154 }, { 7, 10, 1134 }, { 8, 10, 105 }, { 7, 11, 2001 },
+ { 6, 0, 1558 }, { 4, 10, 31 }, { 6, 10, 429 }, { 7, 10, 962 },
+ { 9, 10, 458 }, { 11, 10, 691 }, { 4, 10, 312 }, { 7, 10, 1642 },
+ { 6, 0, 17 }, { 6, 0, 1304 }, { 7, 0, 16 }, { 7, 0, 1001 },
+ { 9, 0, 886 }, { 10, 0, 489 }, { 10, 0, 800 }, { 11, 0, 782 },
+ { 12, 0, 320 }, { 13, 0, 467 }, { 14, 0, 145 }, { 14, 0, 387 },
+ { 15, 0, 119 }, { 7, 0, 1982 }, { 17, 0, 17 }, { 7, 11, 1461 },
+ { 12, 11, 91 }, { 4, 10, 236 }, { 4, 11, 602 }, { 10, 0, 907 },
+ { 8, 0, 110 }, { 7, 0, 272 }, { 19, 0, 53 }, { 5, 10, 836 },
+ { 5, 10, 857 }, { 6, 10, 1680 }, { 5, 0, 458 }, { 7, 11, 1218 },
+ { 8, 11, 303 }, { 7, 0, 1983 }, { 8, 0, 0 }, { 8, 0, 171 },
+ { 9, 0, 120 }, { 9, 0, 732 }, { 10, 0, 473 }, { 11, 0, 656 },
+ { 11, 0, 998 }, { 18, 0, 0 }, { 18, 0, 2 }, { 19, 0, 21 },
+ { 10, 10, 68 }, { 11, 10, 494 }, { 9, 11, 662 }, { 4, 11, 13 },
+ { 5, 11, 567 }, { 7, 11, 1498 }, { 9, 11, 124 }, { 11, 11, 521 },
+ { 12, 11, 405 }, { 4, 10, 81 }, { 11, 10, 867 }, { 7, 11, 1006 },
+ { 7, 11, 800 }, { 7, 11, 1783 }, { 10, 11, 12 }, { 9, 0, 295 },
+ { 10, 0, 443 }, { 5, 10, 282 }, { 8, 10, 650 }, { 9, 10, 907 },
+ { 4, 11, 735 }, { 4, 11, 170 }, { 4, 10, 775 }, { 7, 11, 323 },
+ { 6, 0, 1844 }, { 10, 0, 924 }, { 11, 11, 844 }, { 12, 11, 104 },
+ { 12, 11, 625 }, { 5, 11, 304 }, { 7, 11, 1403 }, { 12, 11, 498 },
+ { 6, 0, 1232 }, { 4, 0, 519 }, { 10, 0, 70 }, { 12, 0, 26 },
+ { 14, 0, 17 }, { 14, 0, 178 }, { 15, 0, 34 }, { 21, 0, 12 },
+ { 4, 0, 993 }, { 4, 11, 148 }, { 5, 11, 742 }, { 6, 0, 31 },
+ { 7, 0, 491 }, { 7, 0, 530 }, { 8, 0, 592 }, { 11, 0, 53 },
+ { 11, 0, 779 }, { 12, 0, 167 }, { 12, 0, 411 }, { 14, 0, 14 },
+ { 14, 0, 136 }, { 15, 0, 72 }, { 16, 0, 17 }, { 16, 0, 72 },
+ { 5, 0, 907 }, { 6, 0, 733 }, { 5, 11, 111 }, { 4, 10, 71 },
+ { 5, 10, 376 }, { 7, 10, 119 }, { 10, 10, 665 }, { 8, 0, 55 },
+ { 8, 0, 430 }, { 8, 11, 430 }, { 4, 0, 208 }, { 5, 0, 106 },
+ { 6, 0, 531 }, { 8, 0, 408 }, { 9, 0, 188 }, { 10, 0, 572 },
+ { 12, 0, 56 }, { 11, 10, 827 }, { 14, 10, 34 }, { 15, 10, 148 },
+ { 6, 0, 1693 }, { 5, 11, 444 }, { 4, 10, 479 }, { 12, 0, 441 },
+ { 9, 0, 449 }, { 10, 0, 192 }, { 10, 0, 740 }, { 6, 0, 928 },
+ { 4, 0, 241 }, { 7, 10, 607 }, { 8, 10, 99 }, { 8, 11, 123 },
+ { 15, 11, 6 }, { 16, 11, 7 }, { 6, 11, 285 }, { 8, 11, 654 },
+ { 11, 11, 749 }, { 12, 11, 190 }, { 12, 11, 327 }, { 13, 11, 120 },
+ { 13, 11, 121 }, { 13, 11, 327 }, { 15, 11, 47 }, { 18, 11, 40 },
+ { 4, 10, 41 }, { 5, 10, 74 }, { 7, 10, 1627 }, { 11, 10, 871 },
+ { 12, 10, 619 }, { 7, 0, 1525 }, { 11, 10, 329 }, { 11, 10, 965 },
+ { 12, 10, 241 }, { 14, 10, 354 }, { 15, 10, 22 }, { 20, 10, 63 },
+ { 4, 0, 259 }, { 7, 11, 183 }, { 9, 10, 209 }, { 9, 10, 300 },
+ { 5, 11, 937 }, { 7, 11, 100 }, { 5, 10, 98 }, { 4, 0, 173 },
+ { 5, 0, 312 }, { 5, 0, 512 }, { 7, 0, 1285 }, { 13, 0, 185 },
+ { 7, 0, 1603 }, { 7, 0, 1691 }, { 9, 0, 464 }, { 11, 0, 195 },
+ { 12, 0, 279 }, { 12, 0, 448 }, { 14, 0, 11 }, { 19, 0, 102 },
+ { 7, 0, 1113 }, { 5, 10, 984 }, { 4, 0, 452 }, { 5, 0, 583 },
+ { 7, 0, 720 }, { 4, 0, 547 }, { 5, 0, 817 }, { 6, 0, 433 },
+ { 7, 0, 593 }, { 7, 0, 1378 }, { 8, 0, 161 }, { 9, 0, 284 },
+ { 10, 0, 313 }, { 11, 0, 886 }, { 8, 0, 722 }, { 4, 10, 182 },
+ { 6, 10, 205 }, { 7, 10, 220 }, { 22, 0, 13 }, { 4, 10, 42 },
+ { 9, 10, 205 }, { 9, 10, 786 }, { 10, 10, 659 }, { 6, 0, 289 },
+ { 7, 0, 1670 }, { 12, 0, 57 }, { 23, 0, 4 }, { 4, 10, 635 },
+ { 14, 0, 43 }, { 18, 0, 21 }, { 11, 10, 533 }, { 7, 0, 1694 },
+ { 8, 0, 420 }, { 11, 0, 193 }, { 7, 0, 409 }, { 4, 10, 371 },
+ { 4, 10, 272 }, { 7, 10, 836 }, { 5, 10, 825 }, { 6, 10, 1640 },
+ { 5, 11, 251 }, { 5, 11, 956 }, { 8, 11, 268 }, { 9, 11, 214 },
+ { 18, 11, 142 }, { 10, 0, 308 }, { 6, 0, 1863 }, { 13, 11, 37 },
+ { 9, 10, 879 }, { 7, 10, 317 }, { 7, 10, 569 }, { 4, 11, 294 },
+ { 6, 0, 790 }, { 5, 0, 1002 }, { 8, 0, 745 }, { 5, 11, 346 },
+ { 5, 11, 711 }, { 8, 11, 390 }, { 7, 0, 289 }, { 5, 0, 504 },
+ { 11, 0, 68 }, { 9, 10, 307 }, { 4, 0, 239 }, { 6, 0, 477 },
+ { 7, 0, 1607 }, { 11, 0, 617 }, { 21, 0, 13 }, { 5, 0, 609 },
+ { 5, 11, 624 }, { 5, 11, 783 }, { 7, 11, 1998 }, { 7, 11, 2047 },
+ { 5, 10, 525 }, { 4, 0, 367 }, { 4, 11, 594 }, { 6, 0, 528 },
+ { 5, 10, 493 }, { 4, 10, 174 }, { 7, 10, 911 }, { 8, 10, 417 },
+ { 9, 10, 782 }, { 4, 0, 694 }, { 7, 0, 548 }, { 9, 0, 58 },
+ { 4, 10, 32 }, { 5, 10, 215 }, { 6, 10, 269 }, { 7, 10, 1782 },
+ { 7, 10, 1892 }, { 10, 10, 16 }, { 11, 10, 822 }, { 11, 10, 954 },
+ { 13, 10, 481 }, { 12, 0, 687 }, { 7, 0, 1749 }, { 8, 10, 477 },
+ { 4, 11, 569 }, { 5, 10, 308 }, { 7, 10, 1088 }, { 4, 0, 661 },
+ { 10, 0, 1004 }, { 5, 11, 37 }, { 6, 11, 39 }, { 6, 11, 451 },
+ { 7, 11, 218 }, { 7, 11, 667 }, { 7, 11, 1166 }, { 7, 11, 1687 },
+ { 8, 11, 662 }, { 16, 11, 2 }, { 9, 0, 445 }, { 12, 0, 53 },
+ { 13, 0, 492 }, { 5, 10, 126 }, { 8, 10, 297 }, { 9, 10, 366 },
+ { 12, 10, 374 }, { 7, 10, 1551 }, { 11, 10, 361 }, { 20, 0, 74 },
+ { 6, 11, 508 }, { 7, 0, 213 }, { 4, 10, 175 }, { 4, 10, 685 },
+ { 6, 0, 760 }, { 6, 0, 834 }, { 6, 0, 1248 }, { 7, 11, 453 },
+ { 7, 11, 635 }, { 7, 11, 796 }, { 8, 11, 331 }, { 9, 11, 328 },
+ { 9, 11, 330 }, { 9, 11, 865 }, { 10, 11, 119 }, { 10, 11, 235 },
+ { 11, 11, 111 }, { 11, 11, 129 }, { 11, 11, 240 }, { 12, 11, 31 },
+ { 12, 11, 66 }, { 12, 11, 222 }, { 12, 11, 269 }, { 12, 11, 599 },
+ { 12, 11, 689 }, { 13, 11, 186 }, { 13, 11, 364 }, { 14, 11, 345 },
+ { 7, 0, 1672 }, { 11, 0, 189 }, { 5, 10, 797 }, { 5, 10, 565 },
+ { 6, 0, 1548 }, { 6, 11, 98 }, { 7, 11, 585 }, { 7, 11, 702 },
+ { 9, 0, 968 }, { 15, 0, 192 }, { 21, 0, 56 }, { 4, 10, 252 },
+ { 6, 11, 37 }, { 7, 11, 299 }, { 7, 10, 1068 }, { 7, 11, 1666 },
+ { 8, 11, 195 }, { 8, 11, 316 }, { 9, 11, 178 }, { 9, 11, 276 },
+ { 9, 11, 339 }, { 9, 11, 536 }, { 10, 11, 102 }, { 10, 11, 362 },
+ { 10, 10, 434 }, { 10, 11, 785 }, { 11, 11, 55 }, { 11, 11, 149 },
+ { 11, 10, 228 }, { 11, 10, 426 }, { 11, 11, 773 }, { 13, 10, 231 },
+ { 13, 11, 416 }, { 13, 11, 419 }, { 14, 11, 38 }, { 14, 11, 41 },
+ { 14, 11, 210 }, { 18, 10, 106 }, { 20, 10, 87 }, { 4, 0, 751 },
+ { 11, 0, 390 }, { 12, 0, 32 }, { 4, 0, 409 }, { 5, 0, 78 },
+ { 11, 11, 458 }, { 12, 11, 15 }, { 12, 11, 432 }, { 7, 0, 1602 },
+ { 10, 0, 257 }, { 10, 0, 698 }, { 11, 0, 544 }, { 11, 0, 585 },
+ { 12, 0, 212 }, { 13, 0, 307 }, { 5, 10, 231 }, { 7, 10, 601 },
+ { 9, 10, 277 }, { 9, 10, 674 }, { 10, 10, 178 }, { 10, 10, 418 },
+ { 10, 10, 509 }, { 11, 10, 531 }, { 12, 10, 113 }, { 12, 10, 475 },
+ { 13, 10, 99 }, { 14, 10, 428 }, { 6, 0, 473 }, { 17, 0, 105 },
+ { 6, 0, 1949 }, { 15, 0, 156 }, { 5, 11, 645 }, { 7, 10, 1591 },
+ { 16, 10, 43 }, { 7, 0, 1779 }, { 7, 10, 1683 }, { 4, 11, 290 },
+ { 7, 11, 1356 }, { 6, 0, 763 }, { 6, 11, 70 }, { 7, 11, 1292 },
+ { 10, 11, 762 }, { 11, 11, 288 }, { 14, 0, 29 }, { 12, 11, 428 },
+ { 7, 0, 883 }, { 7, 11, 131 }, { 7, 11, 422 }, { 8, 11, 210 },
+ { 12, 11, 573 }, { 6, 0, 488 }, { 4, 10, 399 }, { 5, 10, 119 },
+ { 5, 10, 494 }, { 7, 10, 751 }, { 9, 10, 556 }, { 5, 0, 617 },
+ { 4, 11, 936 }, { 11, 0, 50 }, { 7, 0, 1518 }, { 11, 0, 694 },
+ { 9, 0, 785 }, { 4, 0, 546 }, { 7, 0, 2042 }, { 7, 11, 716 },
+ { 13, 11, 97 }, { 13, 11, 251 }, { 4, 11, 653 }, { 17, 0, 22 },
+ { 6, 0, 1016 }, { 4, 0, 313 }, { 5, 0, 577 }, { 8, 11, 657 },
+ { 8, 0, 184 }, { 13, 0, 433 }, { 7, 0, 935 }, { 6, 0, 720 },
+ { 9, 0, 114 }, { 18, 11, 80 }, { 12, 0, 186 }, { 12, 0, 292 },
+ { 14, 0, 100 }, { 18, 0, 70 }, { 7, 10, 594 }, { 7, 10, 851 },
+ { 7, 10, 1858 }, { 9, 10, 411 }, { 9, 10, 574 }, { 9, 10, 666 },
+ { 9, 10, 737 }, { 10, 10, 346 }, { 10, 10, 712 }, { 11, 10, 246 },
+ { 11, 10, 432 }, { 11, 10, 517 }, { 11, 10, 647 }, { 11, 10, 679 },
+ { 11, 10, 727 }, { 12, 10, 304 }, { 12, 10, 305 }, { 12, 10, 323 },
+ { 12, 10, 483 }, { 12, 10, 572 }, { 12, 10, 593 }, { 12, 10, 602 },
+ { 13, 10, 95 }, { 13, 10, 101 }, { 13, 10, 171 }, { 13, 10, 315 },
+ { 13, 10, 378 }, { 13, 10, 425 }, { 13, 10, 475 }, { 14, 10, 63 },
+ { 14, 10, 380 }, { 14, 10, 384 }, { 15, 10, 133 }, { 18, 10, 112 },
+ { 20, 10, 72 }, { 7, 10, 1093 }, { 7, 11, 1836 }, { 4, 10, 679 },
+ { 9, 10, 203 }, { 11, 0, 402 }, { 12, 0, 109 }, { 12, 0, 431 },
+ { 13, 0, 179 }, { 13, 0, 206 }, { 14, 0, 217 }, { 16, 0, 3 },
+ { 20, 0, 53 }, { 7, 11, 1368 }, { 8, 11, 232 }, { 8, 11, 361 },
+ { 10, 11, 682 }, { 10, 11, 742 }, { 9, 10, 714 }, { 5, 0, 886 },
+ { 6, 0, 46 }, { 6, 0, 1790 }, { 7, 0, 14 }, { 7, 0, 732 },
+ { 7, 0, 1654 }, { 8, 0, 95 }, { 8, 0, 327 }, { 8, 0, 616 },
+ { 9, 0, 892 }, { 10, 0, 598 }, { 10, 0, 769 }, { 11, 0, 134 },
+ { 11, 0, 747 }, { 12, 0, 378 }, { 14, 0, 97 }, { 9, 11, 534 },
+ { 4, 0, 969 }, { 8, 10, 825 }, { 9, 11, 27 }, { 6, 0, 727 },
+ { 14, 11, 12 }, { 5, 0, 1021 }, { 6, 0, 1190 }, { 6, 11, 1657 },
+ { 5, 10, 143 }, { 5, 10, 769 }, { 6, 10, 1760 }, { 7, 10, 682 },
+ { 7, 10, 1992 }, { 8, 10, 736 }, { 4, 0, 153 }, { 7, 11, 127 },
+ { 5, 0, 798 }, { 4, 0, 587 }, { 6, 0, 598 }, { 7, 0, 42 },
+ { 8, 0, 695 }, { 10, 0, 212 }, { 11, 0, 158 }, { 14, 0, 196 },
+ { 17, 0, 85 }, { 5, 10, 860 }, { 6, 0, 1929 }, { 6, 0, 1933 },
+ { 5, 0, 957 }, { 5, 0, 1008 }, { 9, 0, 577 }, { 12, 0, 141 },
+ { 6, 10, 422 }, { 7, 10, 0 }, { 7, 10, 1544 }, { 8, 11, 364 },
+ { 11, 10, 990 }, { 12, 10, 453 }, { 13, 10, 47 }, { 13, 10, 266 },
+ { 6, 0, 1319 }, { 4, 0, 129 }, { 7, 0, 465 }, { 7, 0, 470 },
+ { 7, 0, 1057 }, { 7, 0, 1201 }, { 9, 0, 755 }, { 11, 0, 906 },
+ { 12, 0, 527 }, { 7, 0, 908 }, { 18, 0, 7 }, { 5, 0, 148 },
+ { 8, 0, 450 }, { 5, 10, 515 }, { 9, 10, 131 }, { 7, 10, 1605 },
+ { 11, 10, 962 }, { 18, 10, 139 }, { 4, 10, 646 }, { 6, 0, 1166 },
+ { 4, 10, 396 }, { 7, 10, 728 }, { 9, 10, 117 }, { 13, 10, 202 },
+ { 20, 10, 51 }, { 6, 10, 121 }, { 6, 10, 124 }, { 6, 10, 357 },
+ { 7, 10, 1138 }, { 7, 10, 1295 }, { 8, 10, 162 }, { 11, 10, 655 },
+ { 14, 0, 374 }, { 14, 11, 374 }, { 10, 0, 253 }, { 11, 0, 1003 },
+ { 5, 11, 909 }, { 9, 11, 849 }, { 10, 11, 805 }, { 5, 10, 237 },
+ { 7, 11, 525 }, { 7, 11, 1579 }, { 8, 11, 497 }, { 8, 11, 573 },
+ { 9, 0, 46 }, { 4, 0, 879 }, { 6, 0, 806 }, { 7, 0, 1868 },
+ { 6, 0, 1837 }, { 6, 0, 1846 }, { 6, 0, 730 }, { 6, 0, 881 },
+ { 7, 0, 965 }, { 7, 0, 1460 }, { 7, 0, 1604 }, { 7, 11, 193 },
+ { 7, 11, 397 }, { 7, 11, 1105 }, { 8, 11, 124 }, { 8, 11, 619 },
+ { 9, 11, 305 }, { 10, 11, 264 }, { 11, 11, 40 }, { 12, 11, 349 },
+ { 13, 11, 134 }, { 13, 11, 295 }, { 14, 11, 155 }, { 15, 11, 120 },
+ { 18, 11, 105 }, { 8, 0, 506 }, { 15, 0, 10 }, { 4, 11, 262 },
+ { 7, 11, 342 }, { 7, 10, 571 }, { 7, 10, 1877 }, { 10, 10, 366 },
+ { 13, 11, 23 }, { 5, 11, 641 }, { 10, 0, 22 }, { 9, 10, 513 },
+ { 10, 10, 39 }, { 12, 10, 122 }, { 12, 10, 187 }, { 7, 11, 1431 },
+ { 22, 11, 49 }, { 4, 11, 99 }, { 6, 11, 250 }, { 6, 11, 346 },
+ { 8, 11, 127 }, { 10, 11, 81 }, { 6, 0, 2014 }, { 8, 0, 928 },
+ { 10, 0, 960 }, { 10, 0, 979 }, { 12, 0, 996 }, { 6, 0, 296 },
+ { 4, 11, 915 }, { 5, 11, 75 }, { 9, 11, 517 }, { 10, 11, 470 },
+ { 12, 11, 155 }, { 13, 11, 224 }, { 9, 10, 873 }, { 4, 0, 854 },
+ { 12, 11, 18 }, { 6, 0, 587 }, { 7, 10, 107 }, { 7, 10, 838 },
+ { 8, 10, 550 }, { 10, 10, 401 }, { 11, 0, 636 }, { 15, 0, 145 },
+ { 17, 0, 34 }, { 19, 0, 50 }, { 23, 0, 20 }, { 11, 10, 588 },
+ { 11, 10, 864 }, { 11, 10, 968 }, { 15, 10, 160 }, { 7, 11, 216 },
+ { 7, 0, 982 }, { 10, 0, 32 }, { 15, 0, 56 }, { 5, 10, 768 },
+ { 5, 11, 954 }, { 6, 11, 304 }, { 7, 11, 1114 }, { 8, 11, 418 },
+ { 10, 11, 345 }, { 11, 11, 341 }, { 11, 11, 675 }, { 13, 11, 40 },
+ { 9, 11, 410 }, { 11, 11, 425 }, { 8, 0, 941 }, { 5, 0, 435 },
+ { 4, 10, 894 }, { 5, 0, 85 }, { 6, 0, 419 }, { 7, 0, 134 },
+ { 7, 0, 305 }, { 7, 0, 361 }, { 7, 0, 1337 }, { 8, 0, 71 },
+ { 12, 0, 519 }, { 12, 0, 688 }, { 7, 0, 740 }, { 5, 0, 691 },
+ { 7, 0, 345 }, { 9, 0, 94 }, { 12, 0, 169 }, { 5, 0, 183 },
+ { 6, 0, 582 }, { 10, 0, 679 }, { 12, 0, 435 }, { 6, 11, 14 },
+ { 6, 0, 945 }, { 7, 0, 511 }, { 6, 11, 1708 }, { 5, 11, 113 },
+ { 6, 11, 243 }, { 7, 11, 1865 }, { 11, 11, 161 }, { 16, 11, 37 },
+ { 17, 11, 99 }, { 4, 11, 274 }, { 9, 0, 539 }, { 7, 0, 1993 },
+ { 8, 0, 684 }, { 6, 10, 272 }, { 6, 0, 659 }, { 6, 0, 982 },
+ { 4, 10, 9 }, { 5, 10, 128 }, { 7, 10, 368 }, { 11, 10, 480 },
+ { 20, 10, 3 }, { 6, 0, 583 }, { 4, 0, 803 }, { 5, 0, 704 },
+ { 4, 0, 179 }, { 5, 0, 198 }, { 5, 0, 697 }, { 7, 0, 347 },
+ { 7, 0, 971 }, { 8, 0, 181 }, { 10, 0, 711 }, { 7, 11, 166 },
+ { 8, 10, 682 }, { 4, 10, 2 }, { 7, 10, 545 }, { 7, 10, 894 },
+ { 8, 11, 521 }, { 7, 0, 481 }, { 4, 0, 243 }, { 5, 0, 203 },
+ { 7, 0, 19 }, { 7, 0, 71 }, { 7, 0, 113 }, { 10, 0, 405 },
+ { 11, 0, 357 }, { 14, 0, 240 }, { 5, 11, 725 }, { 5, 11, 727 },
+ { 7, 11, 1811 }, { 6, 0, 826 }, { 9, 11, 304 }, { 7, 0, 1450 },
+ { 11, 0, 99 }, { 5, 11, 654 }, { 6, 0, 492 }, { 5, 0, 134 },
+ { 6, 0, 408 }, { 6, 0, 495 }, { 7, 0, 1593 }, { 6, 11, 273 },
+ { 10, 11, 188 }, { 13, 11, 377 }, { 18, 11, 77 }, { 9, 10, 769 },
+ { 12, 10, 185 }, { 7, 11, 410 }, { 14, 0, 4 }, { 4, 0, 665 },
+ { 6, 11, 1785 }, { 4, 0, 248 }, { 7, 0, 137 }, { 9, 0, 349 },
+ { 5, 10, 530 }, { 14, 10, 113 }, { 7, 0, 1270 }, { 11, 0, 612 },
+ { 4, 11, 780 }, { 5, 0, 371 }, { 7, 0, 563 }, { 7, 0, 826 },
+ { 6, 0, 1535 }, { 23, 0, 21 }, { 23, 0, 23 }, { 4, 0, 374 },
+ { 7, 0, 547 }, { 7, 0, 1700 }, { 7, 0, 1833 }, { 11, 0, 858 },
+ { 5, 10, 556 }, { 7, 11, 612 }, { 8, 11, 545 }, { 8, 11, 568 },
+ { 8, 11, 642 }, { 9, 11, 717 }, { 10, 11, 541 }, { 10, 11, 763 },
+ { 11, 11, 449 }, { 12, 11, 489 }, { 13, 11, 153 }, { 13, 11, 296 },
+ { 14, 11, 138 }, { 14, 11, 392 }, { 15, 11, 50 }, { 16, 11, 6 },
+ { 16, 11, 12 }, { 20, 11, 9 }, { 9, 0, 311 }, { 13, 0, 42 },
+ { 8, 10, 16 }, { 12, 10, 568 }, { 6, 0, 1968 }, { 6, 0, 2027 },
+ { 10, 0, 991 }, { 6, 0, 1647 }, { 7, 0, 1552 }, { 7, 0, 2010 },
+ { 9, 0, 494 }, { 9, 0, 509 }, { 5, 11, 948 }, { 6, 10, 186 },
+ { 9, 10, 426 }, { 6, 0, 769 }, { 6, 0, 642 }, { 4, 10, 585 },
+ { 6, 0, 123 }, { 7, 0, 214 }, { 9, 0, 728 }, { 10, 0, 157 },
+ { 11, 0, 346 }, { 11, 0, 662 }, { 15, 0, 106 }, { 14, 11, 381 },
+ { 7, 0, 1435 }, { 4, 11, 532 }, { 5, 11, 706 }, { 7, 11, 662 },
+ { 5, 11, 837 }, { 6, 11, 1651 }, { 4, 10, 93 }, { 5, 10, 252 },
+ { 6, 10, 229 }, { 7, 10, 291 }, { 9, 10, 550 }, { 11, 10, 644 },
+ { 20, 0, 79 }, { 9, 10, 749 }, { 6, 0, 1425 }, { 9, 10, 162 },
+ { 4, 11, 362 }, { 7, 11, 52 }, { 7, 11, 303 }, { 12, 11, 166 },
+ { 4, 10, 381 }, { 4, 11, 330 }, { 7, 11, 933 }, { 7, 11, 2012 },
+ { 8, 11, 292 }, { 7, 11, 767 }, { 4, 0, 707 }, { 5, 0, 588 },
+ { 6, 0, 393 }, { 13, 0, 106 }, { 18, 0, 49 }, { 19, 0, 41 },
+ { 6, 0, 211 }, { 7, 0, 1690 }, { 11, 0, 486 }, { 12, 0, 369 },
+ { 9, 11, 883 }, { 4, 11, 703 }, { 7, 11, 207 }, { 4, 0, 187 },
+ { 5, 0, 184 }, { 5, 0, 690 }, { 7, 0, 1869 }, { 10, 0, 756 },
+ { 11, 0, 783 }, { 4, 11, 571 }, { 6, 0, 1382 }, { 5, 0, 175 },
+ { 6, 10, 77 }, { 6, 10, 157 }, { 7, 10, 974 }, { 7, 10, 1301 },
+ { 7, 10, 1339 }, { 7, 10, 1490 }, { 7, 10, 1873 }, { 9, 10, 628 },
+ { 6, 0, 1493 }, { 5, 11, 873 }, { 5, 11, 960 }, { 6, 0, 1007 },
+ { 12, 11, 93 }, { 12, 11, 501 }, { 13, 11, 362 }, { 14, 11, 151 },
+ { 15, 11, 40 }, { 15, 11, 59 }, { 16, 11, 46 }, { 17, 11, 25 },
+ { 18, 11, 14 }, { 18, 11, 134 }, { 19, 11, 25 }, { 19, 11, 69 },
+ { 20, 11, 16 }, { 20, 11, 19 }, { 20, 11, 66 }, { 21, 11, 23 },
+ { 21, 11, 25 }, { 22, 11, 42 }, { 11, 10, 919 }, { 13, 10, 409 },
+ { 6, 0, 219 }, { 5, 0, 582 }, { 6, 0, 1646 }, { 7, 0, 99 },
+ { 7, 0, 1962 }, { 7, 0, 1986 }, { 8, 0, 515 }, { 8, 0, 773 },
+ { 9, 0, 23 }, { 9, 0, 491 }, { 12, 0, 620 }, { 14, 0, 93 },
+ { 5, 0, 851 }, { 5, 11, 33 }, { 6, 11, 470 }, { 7, 11, 1291 },
+ { 6, 0, 1278 }, { 7, 11, 1882 }, { 7, 10, 1489 }, { 4, 0, 1000 },
+ { 10, 0, 982 }, { 8, 0, 762 }, { 8, 0, 812 }, { 9, 0, 910 },
+ { 6, 11, 47 }, { 7, 11, 90 }, { 7, 11, 664 }, { 7, 11, 830 },
+ { 7, 11, 1380 }, { 7, 11, 2025 }, { 8, 11, 448 }, { 8, 11, 828 },
+ { 4, 0, 98 }, { 4, 0, 940 }, { 6, 0, 1819 }, { 6, 0, 1834 },
+ { 6, 0, 1841 }, { 7, 0, 1365 }, { 8, 0, 859 }, { 8, 0, 897 },
+ { 8, 0, 918 }, { 9, 0, 422 }, { 9, 0, 670 }, { 10, 0, 775 },
+ { 10, 0, 894 }, { 10, 0, 909 }, { 10, 0, 910 }, { 10, 0, 935 },
+ { 11, 0, 210 }, { 12, 0, 750 }, { 12, 0, 755 }, { 13, 0, 26 },
+ { 13, 0, 457 }, { 13, 0, 476 }, { 16, 0, 100 }, { 16, 0, 109 },
+ { 18, 0, 173 }, { 18, 0, 175 }, { 8, 10, 398 }, { 9, 10, 681 },
+ { 11, 10, 632 }, { 9, 11, 417 }, { 9, 11, 493 }, { 8, 10, 645 },
+ { 10, 0, 906 }, { 6, 0, 1730 }, { 6, 10, 20 }, { 5, 11, 1019 },
+ { 6, 0, 1185 }, { 10, 0, 40 }, { 8, 10, 769 }, { 9, 0, 147 },
+ { 6, 11, 208 }, { 12, 0, 650 }, { 5, 0, 209 }, { 6, 0, 30 },
+ { 11, 0, 56 }, { 11, 0, 305 }, { 4, 0, 553 }, { 10, 11, 344 },
+ { 6, 11, 68 }, { 7, 11, 398 }, { 7, 11, 448 }, { 7, 11, 1629 },
+ { 7, 11, 1813 }, { 8, 11, 387 }, { 8, 11, 442 }, { 9, 11, 710 },
+ { 10, 11, 282 }, { 10, 11, 722 }, { 5, 0, 597 }, { 14, 0, 20 },
+ { 14, 11, 20 }, { 7, 0, 1614 }, { 7, 10, 1757 }, { 4, 0, 150 },
+ { 5, 0, 303 }, { 6, 0, 327 }, { 7, 10, 937 }, { 16, 0, 49 },
+ { 7, 10, 1652 }, { 16, 11, 49 }, { 8, 0, 192 }, { 10, 0, 78 },
+ { 13, 0, 359 }, { 7, 0, 786 }, { 15, 0, 134 }, { 6, 0, 1638 },
+ { 7, 0, 79 }, { 7, 0, 496 }, { 9, 0, 138 }, { 10, 0, 336 },
+ { 11, 0, 12 }, { 12, 0, 412 }, { 12, 0, 440 }, { 14, 0, 305 },
+ { 8, 11, 491 }, { 4, 10, 579 }, { 5, 10, 226 }, { 5, 10, 323 },
+ { 7, 10, 960 }, { 7, 0, 204 }, { 7, 0, 415 }, { 8, 0, 42 },
+ { 10, 0, 85 }, { 11, 0, 564 }, { 4, 0, 614 }, { 4, 11, 403 },
+ { 5, 11, 441 }, { 7, 11, 450 }, { 11, 11, 101 }, { 12, 11, 193 },
+ { 13, 11, 430 }, { 7, 11, 1927 }, { 7, 11, 1330 }, { 4, 0, 3 },
+ { 5, 0, 247 }, { 5, 0, 644 }, { 7, 0, 744 }, { 7, 0, 1207 },
+ { 7, 0, 1225 }, { 7, 0, 1909 }, { 18, 0, 147 }, { 8, 0, 942 },
+ { 4, 0, 1019 }, { 6, 0, 2023 }, { 5, 11, 679 }, { 5, 10, 973 },
+ { 5, 0, 285 }, { 9, 0, 67 }, { 13, 0, 473 }, { 15, 0, 82 },
+ { 7, 11, 328 }, { 9, 11, 326 }, { 23, 0, 8 }, { 6, 10, 135 },
+ { 7, 10, 1176 }, { 7, 11, 1128 }, { 6, 0, 1309 }, { 7, 11, 1796 },
+ { 7, 10, 314 }, { 4, 11, 574 }, { 7, 11, 350 }, { 7, 11, 1024 },
+ { 8, 11, 338 }, { 9, 11, 677 }, { 10, 11, 808 }, { 11, 11, 508 },
+ { 7, 11, 818 }, { 17, 11, 14 }, { 17, 11, 45 }, { 18, 11, 75 },
+ { 20, 11, 18 }, { 18, 10, 4 }, { 7, 11, 1081 }, { 4, 0, 29 },
+ { 6, 0, 532 }, { 7, 0, 1628 }, { 7, 0, 1648 }, { 9, 0, 350 },
+ { 10, 0, 433 }, { 11, 0, 97 }, { 11, 0, 557 }, { 11, 0, 745 },
+ { 12, 0, 289 }, { 12, 0, 335 }, { 12, 0, 348 }, { 12, 0, 606 },
+ { 13, 0, 116 }, { 13, 0, 233 }, { 13, 0, 466 }, { 14, 0, 181 },
+ { 14, 0, 209 }, { 14, 0, 232 }, { 14, 0, 236 }, { 14, 0, 300 },
+ { 16, 0, 41 }, { 20, 0, 97 }, { 7, 0, 318 }, { 6, 10, 281 },
+ { 8, 10, 282 }, { 8, 10, 480 }, { 8, 10, 499 }, { 9, 10, 198 },
+ { 10, 10, 143 }, { 10, 10, 169 }, { 10, 10, 211 }, { 10, 10, 417 },
+ { 10, 10, 574 }, { 11, 10, 147 }, { 11, 10, 395 }, { 12, 10, 75 },
+ { 12, 10, 407 }, { 12, 10, 608 }, { 13, 10, 500 }, { 14, 10, 251 },
+ { 7, 11, 1676 }, { 7, 11, 2037 }, { 7, 0, 1692 }, { 5, 0, 501 },
+ { 7, 0, 1704 }, { 9, 0, 553 }, { 11, 0, 520 }, { 12, 0, 557 },
+ { 13, 0, 249 }, { 6, 0, 1527 }, { 14, 0, 324 }, { 15, 0, 55 },
+ { 15, 0, 80 }, { 14, 11, 324 }, { 15, 11, 55 }, { 15, 11, 80 },
+ { 7, 10, 1776 }, { 8, 0, 988 }, { 9, 11, 297 }, { 4, 10, 419 },
+ { 14, 0, 223 }, { 11, 11, 234 }, { 7, 0, 1123 }, { 12, 0, 508 },
+ { 14, 0, 102 }, { 14, 0, 226 }, { 16, 0, 57 }, { 4, 10, 138 },
+ { 7, 10, 1012 }, { 7, 10, 1280 }, { 9, 10, 76 }, { 7, 0, 1764 },
+ { 5, 10, 29 }, { 12, 10, 638 }, { 6, 0, 2015 }, { 6, 0, 1599 },
+ { 10, 11, 56 }, { 6, 11, 306 }, { 7, 11, 1140 }, { 7, 11, 1340 },
+ { 8, 11, 133 }, { 10, 11, 449 }, { 11, 11, 1011 }, { 6, 10, 1710 },
+ { 7, 10, 2038 }, { 7, 11, 1763 }, { 12, 11, 310 }, { 6, 0, 129 },
+ { 4, 10, 17 }, { 5, 10, 23 }, { 7, 10, 995 }, { 11, 10, 383 },
+ { 11, 10, 437 }, { 12, 10, 460 }, { 12, 10, 532 }, { 5, 11, 329 },
+ { 8, 11, 260 }, { 5, 10, 862 }, { 4, 0, 534 }, { 6, 0, 811 },
+ { 7, 0, 626 }, { 4, 11, 657 }, { 4, 0, 25 }, { 5, 0, 60 },
+ { 6, 0, 504 }, { 7, 0, 614 }, { 7, 0, 1155 }, { 12, 0, 0 },
+ { 24, 11, 7 }, { 7, 0, 1248 }, { 11, 0, 621 }, { 11, 0, 702 },
+ { 9, 0, 321 }, { 8, 10, 70 }, { 12, 10, 171 }, { 13, 10, 272 },
+ { 10, 10, 233 }, { 11, 10, 76 }, { 4, 0, 379 }, { 7, 0, 1397 },
+ { 6, 10, 442 }, { 5, 11, 66 }, { 7, 11, 1896 }, { 8, 11, 288 },
+ { 6, 11, 1643 }, { 6, 10, 1709 }, { 4, 11, 21 }, { 5, 11, 91 },
+ { 5, 11, 570 }, { 5, 11, 648 }, { 5, 11, 750 }, { 5, 11, 781 },
+ { 6, 11, 54 }, { 6, 11, 112 }, { 6, 11, 402 }, { 6, 11, 1732 },
+ { 7, 11, 315 }, { 7, 11, 749 }, { 7, 11, 1347 }, { 7, 11, 1900 },
+ { 9, 11, 78 }, { 9, 11, 508 }, { 10, 11, 611 }, { 11, 11, 510 },
+ { 11, 11, 728 }, { 13, 11, 36 }, { 14, 11, 39 }, { 16, 11, 83 },
+ { 17, 11, 124 }, { 20, 11, 30 }, { 4, 0, 118 }, { 6, 0, 274 },
+ { 6, 0, 361 }, { 7, 0, 75 }, { 13, 0, 441 }, { 10, 11, 322 },
+ { 10, 11, 719 }, { 11, 11, 407 }, { 19, 10, 119 }, { 12, 11, 549 },
+ { 14, 11, 67 }, { 19, 11, 60 }, { 11, 10, 69 }, { 12, 10, 105 },
+ { 12, 10, 117 }, { 13, 10, 213 }, { 14, 10, 13 }, { 14, 10, 62 },
+ { 14, 10, 177 }, { 14, 10, 421 }, { 15, 10, 19 }, { 18, 10, 141 },
+ { 9, 0, 841 }, { 9, 10, 309 }, { 7, 10, 608 }, { 7, 10, 976 },
+ { 8, 11, 125 }, { 8, 11, 369 }, { 8, 11, 524 }, { 9, 10, 146 },
+ { 10, 10, 206 }, { 10, 11, 486 }, { 10, 10, 596 }, { 11, 11, 13 },
+ { 11, 11, 381 }, { 11, 11, 736 }, { 11, 11, 766 }, { 11, 11, 845 },
+ { 13, 11, 114 }, { 13, 10, 218 }, { 13, 11, 292 }, { 14, 11, 47 },
+ { 14, 10, 153 }, { 12, 0, 693 }, { 7, 11, 759 }, { 5, 0, 314 },
+ { 6, 0, 221 }, { 7, 0, 419 }, { 10, 0, 650 }, { 11, 0, 396 },
+ { 12, 0, 156 }, { 13, 0, 369 }, { 14, 0, 333 }, { 17, 0, 47 },
+ { 6, 11, 1684 }, { 6, 11, 1731 }, { 7, 11, 356 }, { 7, 11, 1932 },
+ { 8, 11, 54 }, { 8, 11, 221 }, { 9, 11, 225 }, { 9, 11, 356 },
+ { 10, 11, 77 }, { 10, 11, 446 }, { 10, 11, 731 }, { 12, 11, 404 },
+ { 13, 11, 491 }, { 4, 11, 375 }, { 4, 10, 518 }, { 7, 10, 1136 },
+ { 4, 0, 913 }, { 4, 11, 411 }, { 11, 11, 643 }, { 12, 11, 115 },
+ { 4, 11, 80 }, { 5, 11, 44 }, { 8, 10, 689 }, { 9, 10, 863 },
+ { 10, 0, 880 }, { 4, 10, 18 }, { 7, 10, 145 }, { 7, 10, 444 },
+ { 7, 10, 1278 }, { 8, 10, 49 }, { 8, 10, 400 }, { 9, 10, 71 },
+ { 9, 10, 250 }, { 10, 10, 459 }, { 12, 10, 160 }, { 16, 10, 24 },
+ { 8, 0, 475 }, { 5, 0, 1016 }, { 5, 11, 299 }, { 7, 11, 1083 },
+ { 7, 0, 602 }, { 8, 0, 179 }, { 10, 0, 781 }, { 12, 0, 126 },
+ { 6, 0, 329 }, { 10, 0, 111 }, { 7, 0, 1864 }, { 4, 11, 219 },
+ { 7, 11, 1761 }, { 9, 11, 86 }, { 6, 0, 1888 }, { 6, 0, 1892 },
+ { 6, 0, 1901 }, { 6, 0, 1904 }, { 9, 0, 953 }, { 9, 0, 985 },
+ { 9, 0, 991 }, { 9, 0, 1001 }, { 12, 0, 818 }, { 12, 0, 846 },
+ { 12, 0, 847 }, { 12, 0, 861 }, { 12, 0, 862 }, { 12, 0, 873 },
+ { 12, 0, 875 }, { 12, 0, 877 }, { 12, 0, 879 }, { 12, 0, 881 },
+ { 12, 0, 884 }, { 12, 0, 903 }, { 12, 0, 915 }, { 12, 0, 926 },
+ { 12, 0, 939 }, { 15, 0, 182 }, { 15, 0, 219 }, { 15, 0, 255 },
+ { 18, 0, 191 }, { 18, 0, 209 }, { 18, 0, 211 }, { 21, 0, 41 },
+ { 5, 11, 328 }, { 7, 11, 918 }, { 9, 0, 780 }, { 12, 0, 82 },
+ { 15, 0, 36 }, { 5, 10, 1010 }, { 5, 0, 821 }, { 6, 0, 1687 },
+ { 5, 11, 514 }, { 4, 0, 956 }, { 6, 0, 1180 }, { 10, 0, 112 },
+ { 5, 10, 87 }, { 7, 10, 313 }, { 7, 10, 1103 }, { 10, 10, 582 },
+ { 11, 10, 389 }, { 11, 10, 813 }, { 12, 10, 385 }, { 13, 10, 286 },
+ { 14, 10, 124 }, { 18, 10, 108 }, { 5, 0, 71 }, { 7, 0, 1407 },
+ { 9, 0, 704 }, { 10, 0, 261 }, { 10, 0, 619 }, { 11, 0, 547 },
+ { 11, 0, 619 }, { 15, 0, 157 }, { 4, 0, 531 }, { 5, 0, 455 },
+ { 5, 11, 301 }, { 6, 11, 571 }, { 14, 11, 49 }, { 18, 11, 102 },
+ { 4, 10, 267 }, { 6, 0, 385 }, { 7, 0, 2008 }, { 9, 0, 337 },
+ { 10, 0, 517 }, { 5, 11, 726 }, { 5, 11, 364 }, { 4, 11, 76 },
+ { 7, 11, 1550 }, { 9, 11, 306 }, { 9, 11, 430 }, { 9, 11, 663 },
+ { 10, 11, 683 }, { 11, 11, 427 }, { 11, 11, 753 }, { 12, 11, 334 },
+ { 12, 11, 442 }, { 14, 11, 258 }, { 14, 11, 366 }, { 15, 11, 131 },
+ { 6, 0, 1865 }, { 6, 0, 1879 }, { 6, 0, 1881 }, { 6, 0, 1894 },
+ { 6, 0, 1908 }, { 9, 0, 915 }, { 9, 0, 926 }, { 9, 0, 940 },
+ { 9, 0, 943 }, { 9, 0, 966 }, { 9, 0, 980 }, { 9, 0, 989 },
+ { 9, 0, 1005 }, { 9, 0, 1010 }, { 12, 0, 813 }, { 12, 0, 817 },
+ { 12, 0, 840 }, { 12, 0, 843 }, { 12, 0, 855 }, { 12, 0, 864 },
+ { 12, 0, 871 }, { 12, 0, 872 }, { 12, 0, 899 }, { 12, 0, 905 },
+ { 12, 0, 924 }, { 15, 0, 171 }, { 15, 0, 181 }, { 15, 0, 224 },
+ { 15, 0, 235 }, { 15, 0, 251 }, { 18, 0, 184 }, { 9, 11, 52 },
+ { 5, 0, 16 }, { 6, 0, 86 }, { 6, 0, 603 }, { 7, 0, 292 },
+ { 7, 0, 561 }, { 8, 0, 257 }, { 8, 0, 382 }, { 9, 0, 721 },
+ { 9, 0, 778 }, { 11, 0, 581 }, { 12, 0, 466 }, { 4, 0, 486 },
+ { 5, 0, 491 }, { 7, 10, 1121 }, { 4, 0, 72 }, { 6, 0, 265 },
+ { 7, 0, 1300 }, { 7, 11, 1183 }, { 10, 10, 249 }, { 11, 10, 209 },
+ { 4, 10, 561 }, { 9, 11, 519 }, { 4, 11, 656 }, { 4, 10, 760 },
+ { 7, 11, 779 }, { 9, 10, 154 }, { 12, 10, 485 }, { 7, 11, 1793 },
+ { 7, 11, 144 }, { 8, 10, 255 }, { 5, 0, 621 }, { 4, 10, 368 },
+ { 7, 10, 641 }, { 7, 11, 1373 }, { 7, 11, 554 }, { 7, 11, 605 },
+ { 13, 11, 10 }, { 9, 0, 234 }, { 5, 0, 815 }, { 6, 0, 1688 },
+ { 6, 0, 1755 }, { 5, 11, 838 }, { 5, 11, 841 }, { 6, 11, 1649 },
+ { 7, 0, 1987 }, { 7, 0, 2040 }, { 8, 0, 743 }, { 5, 11, 1012 },
+ { 6, 0, 197 }, { 8, 0, 205 }, { 6, 0, 314 }, { 6, 11, 314 },
+ { 16, 11, 53 }, { 6, 11, 251 }, { 7, 11, 365 }, { 7, 11, 1357 },
+ { 7, 11, 1497 }, { 8, 11, 154 }, { 13, 11, 281 }, { 5, 11, 340 },
+ { 6, 0, 452 }, { 7, 0, 312 }, { 10, 0, 219 }, { 10, 0, 589 },
+ { 4, 0, 333 }, { 9, 0, 176 }, { 12, 0, 353 }, { 13, 0, 187 },
+ { 9, 10, 92 }, { 19, 10, 91 }, { 6, 0, 1110 }, { 11, 0, 47 },
+ { 11, 11, 495 }, { 6, 10, 525 }, { 8, 10, 806 }, { 9, 10, 876 },
+ { 12, 10, 284 }, { 8, 11, 261 }, { 9, 11, 144 }, { 9, 11, 466 },
+ { 10, 11, 370 }, { 12, 11, 470 }, { 13, 11, 144 }, { 14, 11, 348 },
+ { 9, 11, 897 }, { 8, 0, 863 }, { 8, 0, 864 }, { 8, 0, 868 },
+ { 8, 0, 884 }, { 10, 0, 866 }, { 10, 0, 868 }, { 10, 0, 873 },
+ { 10, 0, 911 }, { 10, 0, 912 }, { 10, 0, 944 }, { 12, 0, 727 },
+ { 6, 11, 248 }, { 9, 11, 546 }, { 10, 11, 535 }, { 11, 11, 681 },
+ { 13, 11, 135 }, { 6, 0, 300 }, { 7, 0, 1515 }, { 6, 0, 1237 },
+ { 11, 10, 958 }, { 5, 10, 594 }, { 12, 11, 250 }, { 6, 0, 1685 },
+ { 6, 11, 567 }, { 7, 0, 135 }, { 8, 0, 7 }, { 8, 0, 62 },
+ { 9, 0, 243 }, { 10, 0, 658 }, { 10, 0, 697 }, { 11, 0, 456 },
+ { 11, 0, 756 }, { 9, 0, 395 }, { 10, 0, 79 }, { 6, 10, 1641 },
+ { 8, 10, 820 }, { 4, 10, 302 }, { 7, 10, 1766 }, { 6, 11, 174 },
+ { 7, 10, 1313 }, { 7, 0, 631 }, { 6, 10, 1674 }, { 6, 11, 395 },
+ { 10, 0, 835 }, { 7, 0, 406 }, { 7, 0, 459 }, { 8, 0, 606 },
+ { 11, 0, 726 }, { 6, 11, 617 }, { 6, 0, 979 }, { 6, 10, 389 },
+ { 7, 10, 149 }, { 9, 10, 142 }, { 10, 10, 94 }, { 5, 11, 878 },
+ { 5, 11, 972 }, { 6, 10, 8 }, { 7, 10, 1881 }, { 8, 10, 91 },
+ { 8, 11, 511 }, { 5, 0, 612 }, { 4, 11, 351 }, { 4, 0, 372 },
+ { 7, 0, 482 }, { 8, 0, 158 }, { 9, 0, 602 }, { 9, 0, 615 },
+ { 10, 0, 245 }, { 10, 0, 678 }, { 10, 0, 744 }, { 11, 0, 248 },
+ { 11, 0, 806 }, { 5, 0, 854 }, { 7, 0, 1991 }, { 4, 11, 286 },
+ { 7, 11, 344 }, { 7, 11, 438 }, { 7, 11, 627 }, { 7, 11, 1516 },
+ { 8, 11, 40 }, { 9, 11, 56 }, { 9, 11, 294 }, { 10, 11, 30 },
+ { 10, 11, 259 }, { 11, 11, 969 }, { 18, 11, 148 }, { 7, 0, 1492 },
+ { 5, 11, 259 }, { 7, 11, 414 }, { 7, 11, 854 }, { 14, 11, 107 },
+ { 7, 10, 1746 }, { 6, 0, 833 }, { 6, 0, 998 }, { 7, 10, 24 },
+ { 6, 0, 750 }, { 7, 0, 1739 }, { 4, 10, 503 }, { 7, 10, 1661 },
+ { 5, 10, 130 }, { 7, 10, 1314 }, { 9, 10, 610 }, { 10, 10, 718 },
+ { 11, 10, 601 }, { 11, 10, 819 }, { 11, 10, 946 }, { 12, 10, 536 },
+ { 10, 10, 149 }, { 11, 10, 280 }, { 14, 10, 336 }, { 4, 11, 738 },
+ { 7, 10, 1946 }, { 5, 0, 195 }, { 7, 0, 1685 }, { 7, 0, 1997 },
+ { 8, 0, 730 }, { 11, 0, 1006 }, { 23, 11, 17 }, { 5, 11, 866 },
+ { 14, 0, 463 }, { 14, 0, 470 }, { 22, 0, 61 }, { 5, 0, 751 },
+ { 8, 0, 266 }, { 11, 0, 578 }, { 4, 10, 392 }, { 7, 10, 1597 },
+ { 5, 10, 433 }, { 9, 10, 633 }, { 11, 10, 629 }, { 7, 0, 821 },
+ { 6, 0, 715 }, { 6, 0, 1325 }, { 5, 11, 116 }, { 6, 0, 868 },
+ { 4, 11, 457 }, { 6, 0, 959 }, { 6, 10, 234 }, { 10, 11, 199 },
+ { 7, 0, 1053 }, { 7, 10, 1950 }, { 8, 10, 680 }, { 11, 10, 817 },
+ { 19, 10, 88 }, { 7, 10, 1222 }, { 10, 10, 386 }, { 5, 0, 950 },
+ { 5, 0, 994 }, { 6, 0, 351 }, { 6, 0, 1124 }, { 6, 0, 1081 },
+ { 7, 0, 1595 }, { 6, 10, 5 }, { 11, 10, 249 }, { 12, 10, 313 },
+ { 16, 10, 66 }, { 17, 10, 26 }, { 20, 0, 59 }, { 5, 11, 527 },
+ { 6, 11, 189 }, { 7, 11, 859 }, { 5, 10, 963 }, { 6, 10, 1773 },
+ { 11, 11, 104 }, { 11, 11, 554 }, { 15, 11, 60 }, { 15, 11, 125 },
+ { 7, 0, 47 }, { 9, 0, 684 }, { 6, 11, 116 }, { 6, 0, 1606 },
+ { 6, 0, 777 }, { 7, 0, 1020 }, { 8, 10, 509 }, { 8, 10, 792 },
+ { 7, 0, 1094 }, { 4, 0, 350 }, { 5, 11, 487 }, { 4, 11, 86 },
+ { 5, 11, 667 }, { 5, 11, 753 }, { 6, 11, 316 }, { 6, 11, 455 },
+ { 7, 11, 946 }, { 7, 0, 1812 }, { 13, 0, 259 }, { 13, 0, 356 },
+ { 14, 0, 242 }, { 19, 0, 114 }, { 4, 10, 931 }, { 5, 0, 967 },
+ { 4, 0, 473 }, { 7, 0, 623 }, { 8, 0, 808 }, { 9, 0, 871 },
+ { 9, 0, 893 }, { 11, 0, 38 }, { 11, 0, 431 }, { 12, 0, 112 },
+ { 12, 0, 217 }, { 12, 0, 243 }, { 12, 0, 562 }, { 12, 0, 663 },
+ { 12, 0, 683 }, { 13, 0, 141 }, { 13, 0, 197 }, { 13, 0, 227 },
+ { 13, 0, 406 }, { 13, 0, 487 }, { 14, 0, 156 }, { 14, 0, 203 },
+ { 14, 0, 224 }, { 14, 0, 256 }, { 18, 0, 58 }, { 22, 0, 0 },
+ { 10, 0, 286 }, { 7, 10, 943 }, { 11, 10, 614 }, { 7, 10, 1837 },
+ { 22, 11, 45 }, { 4, 0, 798 }, { 4, 0, 222 }, { 7, 0, 286 },
+ { 8, 0, 629 }, { 4, 11, 79 }, { 7, 11, 1773 }, { 10, 11, 450 },
+ { 11, 11, 589 }, { 13, 11, 332 }, { 13, 11, 493 }, { 14, 11, 183 },
+ { 14, 11, 334 }, { 14, 11, 362 }, { 14, 11, 368 }, { 14, 11, 376 },
+ { 14, 11, 379 }, { 19, 11, 90 }, { 19, 11, 103 }, { 19, 11, 127 },
+ { 20, 11, 90 }, { 5, 0, 337 }, { 11, 0, 513 }, { 11, 0, 889 },
+ { 11, 0, 961 }, { 12, 0, 461 }, { 13, 0, 79 }, { 15, 0, 121 },
+ { 4, 10, 90 }, { 5, 10, 545 }, { 7, 10, 754 }, { 9, 10, 186 },
+ { 10, 10, 72 }, { 10, 10, 782 }, { 11, 10, 577 }, { 11, 10, 610 },
+ { 12, 10, 354 }, { 12, 10, 362 }, { 12, 10, 595 }, { 13, 0, 306 },
+ { 8, 0, 146 }, { 7, 0, 1646 }, { 9, 10, 329 }, { 11, 10, 254 },
+ { 13, 11, 124 }, { 4, 0, 465 }, { 7, 0, 1663 }, { 4, 0, 525 },
+ { 5, 11, 663 }, { 10, 0, 299 }, { 18, 0, 74 }, { 9, 10, 187 },
+ { 11, 10, 1016 }, { 17, 10, 44 }, { 7, 0, 165 }, { 7, 0, 919 },
+ { 4, 10, 506 }, { 8, 10, 517 }, { 5, 10, 295 }, { 7, 10, 1680 },
+ { 5, 11, 846 }, { 6, 0, 1064 }, { 5, 11, 378 }, { 7, 11, 1402 },
+ { 7, 11, 1414 }, { 8, 11, 465 }, { 9, 11, 286 }, { 10, 11, 185 },
+ { 10, 11, 562 }, { 10, 11, 635 }, { 11, 11, 31 }, { 11, 11, 393 },
+ { 12, 11, 456 }, { 13, 11, 312 }, { 18, 11, 65 }, { 18, 11, 96 },
+ { 19, 11, 89 }, { 4, 0, 596 }, { 7, 10, 987 }, { 9, 10, 688 },
+ { 10, 10, 522 }, { 11, 10, 788 }, { 12, 10, 566 }, { 6, 0, 82 },
+ { 7, 0, 138 }, { 7, 0, 517 }, { 7, 0, 1741 }, { 11, 0, 238 },
+ { 4, 11, 648 }, { 6, 10, 1775 }, { 7, 0, 1233 }, { 7, 10, 700 },
+ { 7, 10, 940 }, { 8, 10, 514 }, { 9, 10, 116 }, { 9, 10, 535 },
+ { 10, 10, 118 }, { 11, 10, 107 }, { 11, 10, 148 }, { 11, 10, 922 },
+ { 12, 10, 254 }, { 12, 10, 421 }, { 14, 10, 238 }, { 4, 0, 962 },
+ { 6, 0, 1824 }, { 8, 0, 894 }, { 12, 0, 708 }, { 12, 0, 725 },
+ { 14, 0, 451 }, { 20, 0, 94 }, { 22, 0, 59 }, { 22, 0, 62 },
+ { 5, 11, 945 }, { 6, 11, 1656 }, { 6, 11, 1787 }, { 7, 11, 167 },
+ { 8, 11, 824 }, { 9, 11, 391 }, { 10, 11, 375 }, { 11, 11, 185 },
+ { 5, 0, 495 }, { 7, 0, 834 }, { 9, 0, 733 }, { 11, 0, 378 },
+ { 4, 10, 743 }, { 7, 11, 1273 }, { 6, 0, 1204 }, { 7, 11, 1645 },
+ { 8, 11, 352 }, { 9, 11, 249 }, { 11, 10, 292 }, { 5, 0, 559 },
+ { 4, 11, 152 }, { 9, 0, 499 }, { 10, 0, 341 }, { 15, 0, 144 },
+ { 19, 0, 49 }, { 7, 10, 1283 }, { 9, 10, 227 }, { 11, 10, 325 },
+ { 11, 10, 408 }, { 14, 10, 180 }, { 18, 10, 47 }, { 6, 0, 21 },
+ { 6, 0, 1737 }, { 7, 0, 1444 }, { 8, 0, 224 }, { 5, 11, 1006 },
+ { 7, 0, 1446 }, { 9, 0, 97 }, { 17, 0, 15 }, { 5, 10, 81 },
+ { 7, 10, 146 }, { 7, 10, 1342 }, { 8, 10, 53 }, { 8, 10, 561 },
+ { 8, 10, 694 }, { 8, 10, 754 }, { 9, 10, 115 }, { 9, 10, 894 },
+ { 10, 10, 462 }, { 10, 10, 813 }, { 11, 10, 230 }, { 11, 10, 657 },
+ { 11, 10, 699 }, { 11, 10, 748 }, { 12, 10, 119 }, { 12, 10, 200 },
+ { 12, 10, 283 }, { 14, 10, 273 }, { 5, 10, 408 }, { 9, 10, 747 },
+ { 7, 11, 431 }, { 7, 11, 832 }, { 6, 0, 729 }, { 6, 0, 953 },
+ { 4, 0, 727 }, { 8, 0, 565 }, { 5, 11, 351 }, { 7, 11, 264 },
+ { 8, 11, 565 }, { 6, 0, 1948 }, { 5, 0, 519 }, { 5, 11, 40 },
+ { 7, 11, 598 }, { 7, 11, 1638 }, { 8, 11, 78 }, { 9, 11, 166 },
+ { 9, 11, 640 }, { 9, 11, 685 }, { 9, 11, 773 }, { 11, 11, 215 },
+ { 13, 11, 65 }, { 14, 11, 172 }, { 14, 11, 317 }, { 17, 11, 6 },
+ { 8, 11, 60 }, { 9, 11, 343 }, { 11, 11, 769 }, { 9, 11, 455 },
+ { 6, 0, 1193 }, { 12, 0, 790 }, { 7, 11, 1951 }, { 8, 11, 765 },
+ { 8, 11, 772 }, { 12, 11, 671 }, { 7, 11, 108 }, { 8, 11, 219 },
+ { 8, 11, 388 }, { 9, 11, 639 }, { 9, 11, 775 }, { 11, 11, 275 },
+ { 12, 11, 464 }, { 4, 11, 468 }, { 7, 10, 30 }, { 8, 10, 86 },
+ { 8, 10, 315 }, { 8, 10, 700 }, { 9, 10, 576 }, { 9, 10, 858 },
+ { 11, 10, 310 }, { 11, 10, 888 }, { 11, 10, 904 }, { 12, 10, 361 },
+ { 13, 10, 248 }, { 5, 11, 15 }, { 6, 11, 56 }, { 7, 11, 1758 },
+ { 8, 11, 500 }, { 9, 11, 730 }, { 11, 11, 331 }, { 13, 11, 150 },
+ { 14, 11, 282 }, { 4, 0, 402 }, { 7, 0, 2 }, { 8, 0, 323 },
+ { 8, 0, 479 }, { 10, 10, 839 }, { 11, 0, 580 }, { 14, 0, 201 },
+ { 5, 0, 59 }, { 7, 0, 672 }, { 9, 10, 617 }, { 18, 0, 34 },
+ { 6, 11, 1886 }, { 4, 0, 961 }, { 8, 0, 896 }, { 6, 0, 1285 },
+ { 5, 11, 205 }, { 6, 11, 438 }, { 9, 11, 711 }, { 6, 10, 428 },
+ { 7, 10, 524 }, { 8, 10, 169 }, { 8, 10, 234 }, { 9, 10, 480 },
+ { 10, 10, 646 }, { 20, 0, 46 }, { 13, 0, 479 }, { 5, 11, 534 },
+ { 6, 0, 2019 }, { 6, 10, 1648 }, { 4, 0, 85 }, { 7, 0, 549 },
+ { 7, 10, 1205 }, { 10, 10, 637 }, { 4, 0, 663 }, { 5, 0, 94 },
+ { 7, 11, 235 }, { 7, 11, 1475 }, { 15, 11, 68 }, { 18, 11, 120 },
+ { 6, 11, 443 }, { 9, 11, 237 }, { 9, 11, 571 }, { 9, 11, 695 },
+ { 10, 11, 139 }, { 11, 11, 715 }, { 12, 11, 417 }, { 13, 11, 421 },
+ { 4, 0, 783 }, { 4, 0, 682 }, { 8, 0, 65 }, { 9, 10, 39 },
+ { 10, 10, 166 }, { 11, 10, 918 }, { 12, 10, 635 }, { 20, 10, 10 },
+ { 22, 10, 27 }, { 22, 10, 43 }, { 22, 10, 52 }, { 6, 0, 11 },
+ { 7, 0, 187 }, { 4, 0, 522 }, { 4, 0, 52 }, { 7, 0, 661 },
+ { 4, 0, 383 }, { 5, 0, 520 }, { 7, 11, 546 }, { 11, 0, 343 },
+ { 14, 0, 127 }, { 4, 11, 578 }, { 7, 10, 157 }, { 7, 11, 624 },
+ { 7, 11, 916 }, { 8, 10, 279 }, { 10, 11, 256 }, { 11, 11, 87 },
+ { 11, 11, 703 }, { 6, 10, 604 }, { 4, 0, 281 }, { 5, 0, 38 },
+ { 7, 0, 194 }, { 7, 0, 668 }, { 7, 0, 1893 }, { 9, 0, 397 },
+ { 7, 10, 945 }, { 11, 10, 713 }, { 11, 10, 744 }, { 11, 10, 1022 },
+ { 9, 0, 635 }, { 11, 0, 559 }, { 5, 11, 923 }, { 7, 11, 490 },
+ { 12, 11, 553 }, { 13, 11, 100 }, { 14, 11, 118 }, { 15, 11, 75 },
+ { 4, 0, 975 }, { 4, 10, 567 }, { 9, 10, 859 }, { 7, 10, 1846 },
+ { 7, 11, 1846 }, { 8, 10, 628 }, { 8, 11, 628 }, { 20, 0, 116 },
+ { 10, 11, 750 }, { 14, 0, 51 }, { 14, 11, 51 }, { 15, 11, 7 },
+ { 20, 11, 20 }, { 4, 0, 858 }, { 6, 0, 1075 }, { 4, 11, 924 },
+ { 5, 10, 762 }, { 8, 0, 535 }, { 5, 0, 448 }, { 10, 10, 784 },
+ { 13, 10, 191 }, { 5, 10, 298 }, { 7, 0, 610 }, { 7, 0, 1501 },
+ { 7, 10, 633 }, { 7, 10, 905 }, { 7, 10, 909 }, { 7, 10, 1538 },
+ { 9, 10, 767 }, { 12, 10, 636 }, { 4, 11, 265 }, { 7, 11, 807 },
+ { 7, 11, 950 }, { 5, 11, 93 }, { 12, 11, 267 }, { 16, 11, 26 },
+ { 8, 0, 191 }, { 11, 10, 301 }, { 7, 10, 1970 }, { 7, 0, 267 },
+ { 4, 0, 319 }, { 5, 0, 699 }, { 10, 0, 673 }, { 6, 0, 336 },
+ { 7, 0, 92 }, { 7, 0, 182 }, { 8, 0, 453 }, { 8, 0, 552 },
+ { 9, 0, 204 }, { 9, 0, 285 }, { 10, 0, 99 }, { 11, 0, 568 },
+ { 11, 0, 950 }, { 12, 0, 94 }, { 16, 0, 20 }, { 16, 0, 70 },
+ { 19, 0, 55 }, { 12, 10, 644 }, { 16, 10, 90 }, { 6, 0, 551 },
+ { 7, 0, 1308 }, { 7, 10, 845 }, { 7, 11, 994 }, { 8, 10, 160 },
+ { 9, 10, 318 }, { 19, 11, 1 }, { 19, 11, 26 }, { 22, 11, 9 },
+ { 7, 0, 1406 }, { 9, 0, 218 }, { 13, 0, 222 }, { 5, 0, 256 },
+ { 10, 0, 69 }, { 5, 11, 233 }, { 5, 11, 320 }, { 6, 11, 140 },
+ { 7, 11, 330 }, { 8, 11, 295 }, { 6, 0, 1980 }, { 8, 0, 952 },
+ { 4, 0, 833 }, { 9, 11, 678 }, { 5, 11, 978 }, { 4, 11, 905 },
+ { 6, 11, 1701 }, { 9, 11, 843 }, { 10, 10, 735 }, { 8, 10, 76 },
+ { 17, 0, 39 }, { 20, 0, 36 }, { 18, 0, 81 }, { 18, 11, 81 },
+ { 14, 0, 352 }, { 17, 0, 53 }, { 18, 0, 146 }, { 18, 0, 152 },
+ { 19, 0, 11 }, { 22, 0, 54 }, { 7, 0, 634 }, { 10, 10, 841 },
+ { 4, 0, 618 }, { 4, 0, 339 }, { 7, 0, 259 }, { 17, 0, 73 },
+ { 4, 11, 275 }, { 12, 11, 376 }, { 4, 11, 509 }, { 7, 11, 273 },
+ { 11, 11, 377 }, { 4, 0, 759 }, { 13, 0, 169 }, { 9, 10, 804 },
+ { 6, 10, 96 }, { 7, 10, 1426 }, { 4, 10, 651 }, { 5, 10, 289 },
+ { 7, 0, 1075 }, { 8, 10, 35 }, { 9, 10, 511 }, { 10, 10, 767 },
+ { 19, 10, 118 }, { 6, 0, 649 }, { 6, 0, 670 }, { 8, 0, 482 },
+ { 5, 0, 336 }, { 6, 0, 341 }, { 6, 0, 478 }, { 6, 0, 1763 },
+ { 8, 0, 386 }, { 5, 11, 802 }, { 7, 11, 2021 }, { 8, 11, 805 },
+ { 14, 11, 94 }, { 15, 11, 65 }, { 16, 11, 4 }, { 16, 11, 77 },
+ { 16, 11, 80 }, { 17, 11, 5 }, { 6, 0, 1035 }, { 5, 11, 167 },
+ { 5, 11, 899 }, { 6, 11, 410 }, { 9, 11, 777 }, { 6, 11, 1705 },
+ { 5, 0, 924 }, { 5, 0, 969 }, { 4, 10, 704 }, { 7, 0, 73 },
+ { 7, 11, 10 }, { 7, 10, 1078 }, { 5, 11, 11 }, { 6, 11, 117 },
+ { 6, 11, 485 }, { 7, 11, 1133 }, { 9, 11, 582 }, { 9, 11, 594 },
+ { 11, 11, 21 }, { 11, 11, 818 }, { 12, 11, 535 }, { 13, 11, 86 },
+ { 7, 0, 1971 }, { 4, 11, 264 }, { 7, 11, 1067 }, { 8, 11, 204 },
+ { 8, 11, 385 }, { 11, 11, 953 }, { 6, 0, 1458 }, { 7, 0, 1344 },
+ { 5, 0, 396 }, { 6, 0, 501 }, { 4, 10, 720 }, { 5, 10, 306 },
+ { 4, 0, 929 }, { 5, 0, 799 }, { 8, 0, 46 }, { 8, 0, 740 },
+ { 5, 10, 431 }, { 7, 11, 646 }, { 7, 11, 1730 }, { 11, 11, 446 },
+ { 13, 11, 178 }, { 7, 0, 276 }, { 5, 10, 464 }, { 6, 10, 236 },
+ { 7, 10, 696 }, { 7, 10, 914 }, { 7, 10, 1108 }, { 7, 10, 1448 },
+ { 9, 10, 15 }, { 9, 10, 564 }, { 10, 10, 14 }, { 12, 10, 565 },
+ { 13, 10, 449 }, { 14, 10, 53 }, { 15, 10, 13 }, { 16, 10, 64 },
+ { 17, 10, 41 }, { 4, 0, 892 }, { 5, 0, 770 }, { 6, 10, 1767 },
+ { 12, 10, 194 }, { 17, 10, 107 }, { 7, 0, 158 }, { 5, 10, 840 },
+ { 10, 11, 608 }, { 6, 0, 1432 }, { 10, 11, 250 }, { 8, 11, 794 },
+ { 9, 11, 400 }, { 10, 11, 298 }, { 14, 11, 228 }, { 23, 0, 25 },
+ { 7, 11, 1131 }, { 7, 11, 1468 }, { 7, 0, 2001 }, { 9, 10, 642 },
+ { 11, 10, 236 }, { 14, 10, 193 }, { 4, 10, 68 }, { 5, 10, 634 },
+ { 6, 10, 386 }, { 7, 10, 794 }, { 8, 10, 273 }, { 9, 10, 563 },
+ { 10, 10, 105 }, { 10, 10, 171 }, { 11, 10, 94 }, { 11, 10, 354 },
+ { 8, 11, 724 }, { 4, 0, 478 }, { 11, 11, 512 }, { 13, 11, 205 },
+ { 19, 11, 30 }, { 22, 11, 36 }, { 23, 11, 19 }, { 7, 0, 1461 },
+ { 12, 0, 91 }, { 6, 11, 190 }, { 7, 11, 768 }, { 7, 11, 1170 },
+ { 4, 0, 602 }, { 8, 0, 211 }, { 4, 10, 95 }, { 7, 10, 416 },
+ { 11, 10, 830 }, { 7, 10, 731 }, { 13, 10, 20 }, { 15, 10, 11 },
+ { 6, 0, 1068 }, { 7, 0, 1872 }, { 4, 0, 13 }, { 5, 0, 567 },
+ { 7, 0, 1498 }, { 9, 0, 124 }, { 11, 0, 521 }, { 12, 0, 405 },
+ { 7, 11, 1023 }, { 7, 0, 1006 }, { 4, 0, 735 }, { 10, 0, 812 },
+ { 4, 0, 170 }, { 7, 0, 323 }, { 6, 11, 137 }, { 9, 11, 75 },
+ { 9, 11, 253 }, { 10, 11, 194 }, { 10, 11, 444 }, { 5, 0, 304 },
+ { 7, 0, 1403 }, { 5, 10, 864 }, { 10, 10, 648 }, { 11, 10, 671 },
+ { 15, 10, 46 }, { 7, 11, 1180 }, { 5, 10, 928 }, { 4, 0, 148 },
+ { 5, 0, 742 }, { 11, 10, 986 }, { 12, 10, 682 }, { 5, 0, 523 },
+ { 7, 11, 1743 }, { 7, 0, 730 }, { 18, 0, 144 }, { 19, 0, 61 },
+ { 8, 10, 44 }, { 9, 10, 884 }, { 10, 10, 580 }, { 11, 10, 399 },
+ { 11, 10, 894 }, { 15, 10, 122 }, { 5, 11, 760 }, { 7, 11, 542 },
+ { 8, 11, 135 }, { 8, 11, 496 }, { 8, 0, 981 }, { 5, 0, 111 },
+ { 10, 0, 132 }, { 11, 0, 191 }, { 11, 0, 358 }, { 11, 0, 460 },
+ { 7, 11, 319 }, { 7, 11, 355 }, { 7, 11, 763 }, { 10, 11, 389 },
+ { 17, 11, 43 }, { 6, 0, 890 }, { 6, 0, 1420 }, { 8, 11, 557 },
+ { 5, 10, 518 }, { 5, 0, 444 }, { 7, 0, 1787 }, { 7, 10, 1852 },
+ { 8, 0, 123 }, { 15, 0, 6 }, { 16, 0, 7 }, { 6, 0, 2041 },
+ { 10, 11, 38 }, { 11, 11, 784 }, { 8, 0, 932 }, { 5, 0, 937 },
+ { 7, 0, 100 }, { 6, 0, 995 }, { 4, 11, 58 }, { 5, 11, 286 },
+ { 6, 11, 319 }, { 7, 11, 402 }, { 7, 11, 1254 }, { 7, 11, 1903 },
+ { 8, 11, 356 }, { 12, 11, 408 }, { 4, 11, 389 }, { 9, 11, 181 },
+ { 9, 11, 255 }, { 10, 11, 8 }, { 10, 11, 29 }, { 10, 11, 816 },
+ { 11, 11, 311 }, { 11, 11, 561 }, { 12, 11, 67 }, { 13, 11, 181 },
+ { 10, 0, 255 }, { 5, 0, 138 }, { 4, 10, 934 }, { 8, 10, 610 },
+ { 4, 0, 965 }, { 10, 0, 863 }, { 10, 0, 898 }, { 10, 10, 804 },
+ { 10, 10, 832 }, { 12, 0, 631 }, { 8, 10, 96 }, { 9, 10, 36 },
+ { 10, 10, 607 }, { 11, 10, 423 }, { 11, 10, 442 }, { 12, 10, 309 },
+ { 14, 10, 199 }, { 15, 10, 90 }, { 17, 10, 110 }, { 6, 0, 1394 },
+ { 4, 0, 652 }, { 8, 0, 320 }, { 22, 0, 6 }, { 22, 0, 16 },
+ { 9, 10, 13 }, { 9, 10, 398 }, { 9, 10, 727 }, { 10, 10, 75 },
+ { 10, 10, 184 }, { 10, 10, 230 }, { 10, 10, 564 }, { 10, 10, 569 },
+ { 11, 10, 973 }, { 12, 10, 70 }, { 12, 10, 189 }, { 13, 10, 57 },
+ { 13, 10, 257 }, { 6, 0, 897 }, { 6, 0, 1333 }, { 4, 0, 692 },
+ { 5, 0, 321 }, { 5, 11, 373 }, { 7, 0, 922 }, { 5, 0, 619 },
+ { 5, 0, 698 }, { 9, 10, 631 }, { 5, 10, 345 }, { 7, 10, 1016 },
+ { 9, 0, 957 }, { 9, 0, 1018 }, { 12, 0, 828 }, { 12, 0, 844 },
+ { 12, 0, 897 }, { 12, 0, 901 }, { 12, 0, 943 }, { 15, 0, 180 },
+ { 18, 0, 197 }, { 18, 0, 200 }, { 18, 0, 213 }, { 18, 0, 214 },
+ { 18, 0, 226 }, { 5, 0, 917 }, { 6, 0, 1659 }, { 7, 0, 1100 },
+ { 6, 0, 1173 }, { 6, 0, 1930 }, { 5, 0, 251 }, { 5, 0, 956 },
+ { 8, 0, 268 }, { 9, 0, 214 }, { 18, 0, 142 }, { 5, 10, 673 },
+ { 9, 10, 850 }, { 4, 10, 287 }, { 5, 10, 1018 }, { 4, 11, 672 },
+ { 5, 0, 346 }, { 5, 0, 711 }, { 8, 0, 390 }, { 11, 11, 752 },
+ { 11, 11, 885 }, { 5, 10, 34 }, { 10, 10, 724 }, { 12, 10, 444 },
+ { 13, 10, 354 }, { 18, 10, 32 }, { 23, 10, 24 }, { 23, 10, 31 },
+ { 24, 10, 5 }, { 4, 11, 710 }, { 6, 11, 606 }, { 6, 0, 744 },
+ { 6, 10, 382 }, { 5, 11, 145 }, { 4, 10, 329 }, { 7, 11, 884 },
+ { 12, 11, 124 }, { 4, 11, 467 }, { 5, 11, 405 }, { 6, 11, 544 },
+ { 9, 10, 846 }, { 10, 10, 827 }, { 5, 0, 624 }, { 9, 11, 372 },
+ { 15, 11, 2 }, { 19, 11, 10 }, { 19, 11, 18 }, { 4, 11, 387 },
+ { 7, 11, 1288 }, { 5, 0, 783 }, { 7, 0, 1998 }, { 7, 0, 2047 },
+ { 4, 10, 906 }, { 8, 10, 366 }, { 7, 11, 550 }, { 4, 10, 123 },
+ { 4, 10, 649 }, { 5, 10, 605 }, { 7, 10, 1509 }, { 8, 10, 36 },
+ { 6, 0, 1125 }, { 4, 0, 594 }, { 5, 10, 767 }, { 7, 11, 1227 },
+ { 8, 11, 467 }, { 4, 11, 576 }, { 7, 11, 1263 }, { 4, 0, 268 },
+ { 7, 0, 1534 }, { 7, 11, 1534 }, { 4, 10, 273 }, { 5, 10, 658 },
+ { 5, 11, 919 }, { 5, 10, 995 }, { 6, 11, 1673 }, { 5, 0, 563 },
+ { 6, 10, 72 }, { 7, 10, 1345 }, { 4, 11, 82 }, { 5, 11, 333 },
+ { 5, 11, 904 }, { 6, 11, 207 }, { 7, 11, 325 }, { 7, 11, 1726 },
+ { 8, 11, 101 }, { 10, 11, 778 }, { 11, 11, 220 }, { 5, 0, 37 },
+ { 6, 0, 39 }, { 6, 0, 451 }, { 7, 0, 218 }, { 7, 0, 667 },
+ { 7, 0, 1166 }, { 7, 0, 1687 }, { 8, 0, 662 }, { 16, 0, 2 },
+ { 5, 10, 589 }, { 6, 0, 1332 }, { 5, 11, 903 }, { 6, 0, 508 },
+ { 5, 10, 117 }, { 6, 10, 514 }, { 6, 10, 541 }, { 7, 10, 1164 },
+ { 7, 10, 1436 }, { 8, 10, 220 }, { 8, 10, 648 }, { 10, 10, 688 },
+ { 11, 10, 560 }, { 12, 11, 147 }, { 6, 11, 555 }, { 7, 11, 485 },
+ { 5, 10, 686 }, { 7, 0, 453 }, { 7, 0, 635 }, { 7, 0, 796 },
+ { 8, 0, 331 }, { 9, 0, 330 }, { 9, 0, 865 }, { 10, 0, 119 },
+ { 10, 0, 235 }, { 11, 0, 111 }, { 11, 0, 129 }, { 11, 0, 240 },
+ { 12, 0, 31 }, { 12, 0, 66 }, { 12, 0, 222 }, { 12, 0, 269 },
+ { 12, 0, 599 }, { 12, 0, 684 }, { 12, 0, 689 }, { 12, 0, 691 },
+ { 14, 0, 345 }, { 7, 0, 1834 }, { 4, 11, 705 }, { 7, 11, 615 },
+ { 10, 11, 251 }, { 8, 11, 345 }, { 9, 0, 527 }, { 6, 0, 98 },
+ { 7, 0, 702 }, { 7, 0, 991 }, { 11, 0, 576 }, { 14, 0, 74 },
+ { 7, 10, 196 }, { 10, 10, 765 }, { 11, 10, 347 }, { 11, 10, 552 },
+ { 11, 10, 790 }, { 12, 10, 263 }, { 13, 10, 246 }, { 13, 10, 270 },
+ { 13, 10, 395 }, { 14, 10, 176 }, { 14, 10, 190 }, { 14, 10, 398 },
+ { 14, 10, 412 }, { 15, 10, 32 }, { 15, 10, 63 }, { 16, 10, 88 },
+ { 19, 10, 105 }, { 6, 11, 90 }, { 13, 0, 84 }, { 13, 0, 122 },
+ { 6, 0, 37 }, { 7, 0, 299 }, { 7, 0, 1666 }, { 8, 0, 195 },
+ { 8, 0, 316 }, { 9, 0, 178 }, { 9, 0, 276 }, { 9, 0, 339 },
+ { 9, 0, 536 }, { 10, 0, 102 }, { 10, 0, 362 }, { 10, 0, 785 },
+ { 11, 0, 55 }, { 11, 0, 149 }, { 11, 0, 773 }, { 13, 0, 416 },
+ { 13, 0, 419 }, { 14, 0, 38 }, { 14, 0, 41 }, { 14, 0, 210 },
+ { 5, 10, 381 }, { 7, 10, 1792 }, { 7, 11, 813 }, { 12, 11, 497 },
+ { 13, 11, 56 }, { 7, 10, 616 }, { 10, 10, 413 }, { 5, 0, 645 },
+ { 6, 11, 125 }, { 7, 11, 1277 }, { 4, 0, 290 }, { 6, 0, 70 },
+ { 7, 0, 1292 }, { 10, 0, 762 }, { 11, 0, 288 }, { 6, 10, 120 },
+ { 7, 10, 1188 }, { 7, 10, 1710 }, { 8, 10, 286 }, { 9, 10, 667 },
+ { 11, 10, 592 }, { 11, 10, 730 }, { 7, 11, 1784 }, { 7, 0, 1315 },
+ { 7, 11, 1315 }, { 6, 0, 1955 }, { 7, 10, 1146 }, { 7, 0, 131 },
+ { 7, 0, 422 }, { 8, 0, 210 }, { 12, 0, 573 }, { 4, 10, 352 },
+ { 7, 10, 687 }, { 11, 0, 797 }, { 15, 0, 38 }, { 14, 0, 179 },
+ { 15, 0, 151 }, { 22, 0, 11 }, { 7, 0, 488 }, { 4, 10, 192 },
+ { 5, 10, 49 }, { 6, 10, 200 }, { 6, 10, 293 }, { 6, 10, 1696 },
+ { 4, 0, 936 }, { 7, 11, 703 }, { 6, 11, 160 }, { 7, 11, 1106 },
+ { 9, 11, 770 }, { 10, 11, 618 }, { 11, 11, 112 }, { 12, 11, 413 },
+ { 5, 0, 453 }, { 6, 0, 441 }, { 7, 0, 595 }, { 4, 10, 650 },
+ { 4, 10, 147 }, { 6, 0, 991 }, { 6, 0, 1182 }, { 12, 11, 271 },
+ { 17, 11, 109 }, { 5, 10, 934 }, { 12, 11, 221 }, { 4, 0, 653 },
+ { 7, 0, 505 }, { 7, 0, 523 }, { 6, 0, 903 }, { 7, 11, 479 },
+ { 7, 11, 304 }, { 9, 11, 646 }, { 9, 11, 862 }, { 10, 11, 262 },
+ { 11, 11, 696 }, { 12, 11, 208 }, { 15, 11, 79 }, { 19, 11, 108 },
+ { 18, 0, 80 }, { 7, 11, 981 }, { 14, 0, 432 }, { 4, 0, 314 },
+ { 9, 11, 152 }, { 7, 0, 1368 }, { 8, 0, 232 }, { 8, 0, 361 },
+ { 10, 0, 682 }, { 10, 0, 742 }, { 7, 11, 1586 }, { 9, 0, 534 },
+ { 4, 11, 434 }, { 11, 11, 663 }, { 12, 11, 210 }, { 13, 11, 166 },
+ { 13, 11, 310 }, { 14, 11, 373 }, { 19, 11, 43 }, { 7, 11, 1091 },
+ { 7, 11, 1765 }, { 6, 11, 550 }, { 7, 11, 652 }, { 9, 0, 27 },
+ { 14, 0, 12 }, { 4, 10, 637 }, { 5, 11, 553 }, { 7, 11, 766 },
+ { 10, 11, 824 }, { 7, 11, 737 }, { 8, 11, 298 }, { 8, 11, 452 },
+ { 7, 0, 736 }, { 11, 0, 264 }, { 6, 0, 1657 }, { 5, 11, 292 },
+ { 10, 11, 135 }, { 6, 0, 844 }, { 6, 0, 1117 }, { 7, 0, 127 },
+ { 9, 10, 867 }, { 10, 10, 837 }, { 6, 0, 1184 }, { 6, 0, 1208 },
+ { 6, 0, 1294 }, { 8, 0, 364 }, { 6, 0, 1415 }, { 7, 0, 1334 },
+ { 11, 0, 125 }, { 6, 10, 170 }, { 7, 11, 393 }, { 8, 10, 395 },
+ { 8, 10, 487 }, { 10, 11, 603 }, { 11, 11, 206 }, { 13, 10, 147 },
+ { 9, 11, 748 }, { 4, 11, 912 }, { 9, 11, 232 }, { 4, 10, 535 },
+ { 8, 10, 618 }, { 9, 0, 792 }, { 7, 11, 1973 }, { 8, 11, 716 },
+ { 7, 11, 98 }, { 5, 0, 909 }, { 9, 0, 849 }, { 10, 0, 805 },
+ { 4, 0, 630 }, { 4, 0, 699 }, { 5, 11, 733 }, { 14, 11, 103 },
+ { 22, 10, 23 }, { 12, 11, 158 }, { 18, 11, 8 }, { 19, 11, 62 },
+ { 20, 11, 6 }, { 22, 11, 4 }, { 23, 11, 2 }, { 23, 11, 9 },
+ { 4, 0, 968 }, { 4, 10, 778 }, { 4, 10, 46 }, { 5, 10, 811 },
+ { 6, 10, 1679 }, { 6, 10, 1714 }, { 7, 10, 2032 }, { 6, 0, 1446 },
+ { 7, 10, 1458 }, { 9, 10, 407 }, { 11, 10, 15 }, { 7, 0, 206 },
+ { 7, 0, 397 }, { 7, 0, 621 }, { 7, 0, 640 }, { 8, 0, 124 },
+ { 8, 0, 619 }, { 9, 0, 305 }, { 9, 0, 643 }, { 10, 0, 264 },
+ { 10, 0, 628 }, { 11, 0, 40 }, { 12, 0, 349 }, { 13, 0, 134 },
+ { 13, 0, 295 }, { 14, 0, 155 }, { 15, 0, 120 }, { 18, 0, 105 },
+ { 6, 10, 34 }, { 7, 10, 1089 }, { 8, 10, 708 }, { 8, 10, 721 },
+ { 9, 10, 363 }, { 20, 10, 98 }, { 4, 0, 262 }, { 5, 0, 641 },
+ { 7, 0, 342 }, { 9, 11, 72 }, { 4, 0, 99 }, { 6, 0, 250 },
+ { 6, 0, 346 }, { 8, 0, 127 }, { 10, 0, 81 }, { 4, 0, 915 },
+ { 5, 0, 75 }, { 9, 0, 517 }, { 10, 0, 470 }, { 12, 0, 155 },
+ { 13, 0, 224 }, { 4, 10, 462 }, { 11, 11, 600 }, { 11, 11, 670 },
+ { 13, 11, 245 }, { 14, 0, 83 }, { 5, 10, 73 }, { 6, 10, 23 },
+ { 6, 10, 338 }, { 6, 0, 1031 }, { 11, 11, 923 }, { 7, 11, 164 },
+ { 7, 11, 1571 }, { 9, 11, 107 }, { 12, 11, 225 }, { 6, 0, 1470 },
+ { 5, 0, 954 }, { 6, 0, 304 }, { 8, 0, 418 }, { 10, 0, 345 },
+ { 11, 0, 341 }, { 11, 0, 675 }, { 9, 0, 410 }, { 11, 0, 425 },
+ { 4, 11, 27 }, { 5, 11, 484 }, { 5, 11, 510 }, { 6, 11, 434 },
+ { 7, 11, 1000 }, { 7, 11, 1098 }, { 8, 11, 2 }, { 8, 11, 200 },
+ { 6, 0, 734 }, { 12, 11, 257 }, { 7, 10, 725 }, { 8, 10, 498 },
+ { 11, 10, 268 }, { 6, 0, 1822 }, { 7, 0, 1798 }, { 7, 10, 773 },
+ { 4, 11, 460 }, { 4, 11, 932 }, { 5, 11, 891 }, { 6, 0, 14 },
+ { 4, 10, 583 }, { 7, 10, 1462 }, { 8, 11, 625 }, { 11, 10, 659 },
+ { 5, 0, 113 }, { 6, 0, 243 }, { 6, 0, 1708 }, { 7, 0, 1865 },
+ { 11, 0, 161 }, { 16, 0, 37 }, { 17, 0, 99 }, { 5, 10, 220 },
+ { 6, 11, 76 }, { 5, 11, 461 }, { 7, 11, 1925 }, { 12, 0, 69 },
+ { 8, 11, 92 }, { 9, 11, 221 }, { 11, 10, 803 }, { 4, 10, 544 },
+ { 4, 0, 274 }, { 6, 0, 922 }, { 4, 0, 541 }, { 5, 0, 627 },
+ { 6, 10, 437 }, { 6, 10, 564 }, { 11, 10, 181 }, { 13, 10, 183 },
+ { 7, 10, 1192 }, { 7, 0, 166 }, { 4, 11, 763 }, { 5, 11, 253 },
+ { 6, 0, 849 }, { 9, 11, 73 }, { 10, 11, 110 }, { 14, 11, 185 },
+ { 17, 11, 119 }, { 5, 11, 212 }, { 12, 11, 35 }, { 13, 11, 382 },
+ { 5, 0, 717 }, { 9, 0, 304 }, { 8, 0, 600 }, { 5, 0, 654 },
+ { 6, 0, 273 }, { 10, 0, 188 }, { 13, 0, 377 }, { 18, 0, 77 },
+ { 4, 10, 790 }, { 5, 10, 273 }, { 6, 10, 394 }, { 4, 0, 543 },
+ { 7, 0, 410 }, { 11, 0, 98 }, { 11, 0, 524 }, { 13, 0, 87 },
+ { 4, 0, 941 }, { 7, 11, 1175 }, { 4, 0, 250 }, { 7, 0, 1612 },
+ { 11, 0, 186 }, { 12, 0, 133 }, { 6, 10, 127 }, { 7, 10, 1511 },
+ { 8, 10, 613 }, { 12, 10, 495 }, { 12, 10, 586 }, { 12, 10, 660 },
+ { 12, 10, 668 }, { 14, 10, 385 }, { 15, 10, 118 }, { 17, 10, 20 },
+ { 18, 10, 98 }, { 6, 0, 1785 }, { 5, 11, 816 }, { 6, 0, 1339 },
+ { 7, 0, 961 }, { 7, 0, 1085 }, { 7, 0, 1727 }, { 8, 0, 462 },
+ { 6, 10, 230 }, { 7, 11, 1727 }, { 9, 0, 636 }, { 7, 10, 1954 },
+ { 4, 0, 780 }, { 5, 11, 869 }, { 5, 11, 968 }, { 6, 11, 1626 },
+ { 8, 11, 734 }, { 8, 11, 784 }, { 4, 11, 542 }, { 6, 11, 1716 },
+ { 6, 11, 1727 }, { 7, 11, 1082 }, { 7, 11, 1545 }, { 8, 11, 56 },
+ { 8, 11, 118 }, { 8, 11, 412 }, { 8, 11, 564 }, { 9, 11, 888 },
+ { 9, 11, 908 }, { 10, 11, 50 }, { 10, 11, 423 }, { 11, 11, 685 },
+ { 11, 11, 697 }, { 11, 11, 933 }, { 12, 11, 299 }, { 13, 11, 126 },
+ { 13, 11, 136 }, { 13, 11, 170 }, { 13, 11, 190 }, { 6, 11, 226 },
+ { 4, 11, 232 }, { 9, 11, 202 }, { 10, 11, 474 }, { 12, 11, 433 },
+ { 9, 11, 500 }, { 5, 0, 529 }, { 8, 10, 68 }, { 4, 10, 654 },
+ { 4, 10, 156 }, { 7, 10, 998 }, { 7, 10, 1045 }, { 7, 10, 1860 },
+ { 9, 10, 48 }, { 9, 10, 692 }, { 11, 10, 419 }, { 11, 10, 602 },
+ { 7, 0, 1276 }, { 8, 0, 474 }, { 9, 0, 652 }, { 6, 11, 108 },
+ { 7, 11, 1003 }, { 7, 11, 1181 }, { 8, 11, 343 }, { 7, 11, 1264 },
+ { 7, 11, 1678 }, { 11, 11, 945 }, { 12, 11, 341 }, { 12, 11, 471 },
+ { 12, 11, 569 }, { 6, 11, 1712 }, { 5, 0, 948 }, { 12, 0, 468 },
+ { 19, 0, 96 }, { 20, 0, 24 }, { 4, 11, 133 }, { 7, 11, 711 },
+ { 7, 11, 1298 }, { 7, 11, 1585 }, { 7, 11, 1929 }, { 6, 0, 753 },
+ { 12, 0, 657 }, { 11, 0, 941 }, { 6, 11, 99 }, { 7, 11, 1808 },
+ { 17, 11, 57 }, { 6, 11, 574 }, { 7, 11, 428 }, { 7, 11, 1250 },
+ { 10, 11, 669 }, { 11, 11, 485 }, { 11, 11, 840 }, { 12, 11, 300 },
+ { 14, 11, 250 }, { 4, 0, 532 }, { 5, 0, 706 }, { 7, 0, 662 },
+ { 5, 0, 837 }, { 6, 0, 1651 }, { 11, 0, 985 }, { 7, 0, 1861 },
+ { 9, 10, 197 }, { 10, 10, 300 }, { 12, 10, 473 }, { 13, 10, 90 },
+ { 13, 10, 405 }, { 9, 11, 252 }, { 6, 11, 323 }, { 7, 11, 1564 },
+ { 4, 0, 330 }, { 4, 0, 863 }, { 7, 0, 933 }, { 7, 0, 2012 },
+ { 8, 0, 292 }, { 7, 11, 461 }, { 8, 11, 775 }, { 10, 11, 435 },
+ { 4, 10, 606 }, { 4, 11, 655 }, { 7, 11, 850 }, { 17, 11, 75 },
+ { 18, 11, 137 }, { 7, 0, 767 }, { 7, 10, 1978 }, { 8, 10, 676 },
+ { 4, 0, 641 }, { 7, 11, 1559 }, { 6, 0, 1233 }, { 9, 0, 242 },
+ { 17, 0, 114 }, { 4, 10, 361 }, { 5, 10, 315 }, { 9, 0, 883 },
+ { 4, 10, 461 }, { 10, 0, 274 }, { 6, 0, 2008 }, { 6, 0, 1794 },
+ { 4, 0, 703 }, { 7, 0, 207 }, { 12, 0, 285 }, { 4, 10, 472 },
+ { 4, 0, 571 }, { 5, 0, 873 }, { 5, 0, 960 }, { 8, 0, 823 },
+ { 9, 0, 881 }, { 8, 11, 577 }, { 7, 0, 617 }, { 10, 0, 498 },
+ { 11, 0, 501 }, { 12, 0, 16 }, { 12, 0, 150 }, { 10, 10, 747 },
+ { 4, 0, 431 }, { 5, 10, 155 }, { 11, 0, 283 }, { 11, 0, 567 },
+ { 7, 10, 163 }, { 8, 10, 319 }, { 9, 10, 402 }, { 10, 10, 24 },
+ { 10, 10, 681 }, { 11, 10, 200 }, { 12, 10, 253 }, { 12, 10, 410 },
+ { 14, 10, 219 }, { 4, 11, 413 }, { 5, 11, 677 }, { 8, 11, 432 },
+ { 12, 11, 280 }, { 9, 0, 401 }, { 5, 10, 475 }, { 7, 10, 1780 },
+ { 11, 10, 297 }, { 11, 10, 558 }, { 14, 10, 322 }, { 19, 10, 76 },
+ { 6, 0, 781 }, { 9, 0, 134 }, { 10, 0, 2 }, { 10, 0, 27 },
+ { 10, 0, 333 }, { 11, 0, 722 }, { 15, 0, 1 }, { 5, 0, 33 },
+ { 6, 0, 470 }, { 11, 0, 424 }, { 7, 0, 2006 }, { 12, 0, 783 },
+ { 7, 10, 1956 }, { 8, 0, 274 }, { 7, 0, 1882 }, { 4, 0, 794 },
+ { 7, 0, 1848 }, { 5, 10, 944 }, { 6, 10, 1769 }, { 6, 0, 47 },
+ { 7, 0, 90 }, { 7, 0, 664 }, { 7, 0, 830 }, { 7, 0, 1380 },
+ { 7, 0, 2025 }, { 8, 0, 448 }, { 8, 0, 828 }, { 4, 10, 144 },
+ { 6, 0, 1199 }, { 4, 11, 395 }, { 11, 11, 762 }, { 7, 11, 1504 },
+ { 9, 0, 417 }, { 9, 0, 493 }, { 9, 11, 174 }, { 10, 11, 164 },
+ { 11, 11, 440 }, { 11, 11, 841 }, { 15, 11, 98 }, { 6, 11, 426 },
+ { 11, 11, 1002 }, { 6, 0, 295 }, { 6, 0, 816 }, { 6, 10, 247 },
+ { 9, 10, 555 }, { 5, 0, 1019 }, { 4, 0, 620 }, { 5, 11, 476 },
+ { 10, 10, 280 }, { 10, 10, 797 }, { 11, 0, 464 }, { 5, 11, 76 },
+ { 6, 11, 458 }, { 6, 11, 497 }, { 7, 11, 764 }, { 7, 11, 868 },
+ { 9, 11, 658 }, { 10, 11, 594 }, { 11, 11, 173 }, { 11, 11, 566 },
+ { 12, 11, 20 }, { 12, 11, 338 }, { 13, 11, 200 }, { 6, 0, 208 },
+ { 4, 11, 526 }, { 7, 11, 1029 }, { 7, 11, 1054 }, { 4, 11, 636 },
+ { 6, 11, 233 }, { 7, 11, 660 }, { 7, 11, 1124 }, { 17, 11, 31 },
+ { 19, 11, 22 }, { 23, 11, 14 }, { 10, 0, 442 }, { 5, 10, 428 },
+ { 10, 0, 930 }, { 12, 0, 778 }, { 6, 0, 68 }, { 7, 0, 448 },
+ { 7, 0, 1629 }, { 7, 0, 1769 }, { 7, 0, 1813 }, { 8, 0, 442 },
+ { 8, 0, 516 }, { 9, 0, 710 }, { 10, 0, 282 }, { 10, 0, 722 },
+ { 7, 10, 1717 }, { 10, 10, 546 }, { 6, 0, 1128 }, { 11, 0, 844 },
+ { 12, 0, 104 }, { 12, 0, 625 }, { 4, 11, 432 }, { 7, 11, 824 },
+ { 10, 10, 189 }, { 5, 0, 787 }, { 5, 10, 99 }, { 4, 11, 279 },
+ { 7, 11, 301 }, { 9, 11, 362 }, { 8, 0, 491 }, { 4, 10, 397 },
+ { 8, 10, 555 }, { 4, 11, 178 }, { 5, 11, 399 }, { 6, 0, 711 },
+ { 16, 0, 9 }, { 4, 0, 403 }, { 5, 0, 441 }, { 7, 0, 450 },
+ { 10, 0, 840 }, { 11, 0, 101 }, { 12, 0, 193 }, { 13, 0, 430 },
+ { 7, 11, 1246 }, { 12, 10, 398 }, { 20, 10, 39 }, { 21, 10, 11 },
+ { 22, 10, 41 }, { 4, 10, 485 }, { 7, 10, 353 }, { 7, 10, 1523 },
+ { 6, 10, 366 }, { 7, 10, 1384 }, { 7, 10, 1601 }, { 7, 11, 1912 },
+ { 7, 0, 396 }, { 10, 0, 160 }, { 7, 11, 396 }, { 9, 10, 282 },
+ { 6, 11, 1692 }, { 4, 10, 157 }, { 5, 10, 471 }, { 6, 11, 202 },
+ { 10, 11, 448 }, { 11, 11, 208 }, { 12, 11, 360 }, { 17, 11, 117 },
+ { 17, 11, 118 }, { 18, 11, 27 }, { 20, 11, 67 }, { 5, 0, 679 },
+ { 9, 0, 326 }, { 8, 10, 116 }, { 7, 11, 872 }, { 10, 11, 516 },
+ { 11, 11, 167 }, { 4, 11, 224 }, { 5, 11, 546 }, { 7, 11, 35 },
+ { 8, 11, 11 }, { 8, 11, 12 }, { 9, 11, 315 }, { 9, 11, 533 },
+ { 10, 11, 802 }, { 11, 11, 166 }, { 12, 11, 525 }, { 14, 11, 243 },
+ { 7, 0, 1128 }, { 7, 11, 1920 }, { 5, 11, 241 }, { 8, 11, 242 },
+ { 9, 11, 451 }, { 10, 11, 667 }, { 11, 11, 598 }, { 12, 11, 429 },
+ { 6, 0, 737 }, { 5, 10, 160 }, { 7, 10, 363 }, { 7, 10, 589 },
+ { 10, 10, 170 }, { 13, 10, 55 }, { 7, 0, 1796 }, { 14, 11, 254 },
+ { 4, 0, 574 }, { 7, 0, 350 }, { 7, 0, 1024 }, { 8, 0, 338 },
+ { 9, 0, 677 }, { 10, 0, 808 }, { 6, 0, 1096 }, { 9, 11, 516 },
+ { 7, 0, 405 }, { 10, 0, 491 }, { 4, 10, 108 }, { 4, 11, 366 },
+ { 11, 10, 498 }, { 11, 11, 337 }, { 14, 11, 303 }, { 6, 11, 1736 },
+ { 7, 0, 1081 }, { 12, 11, 364 }, { 7, 10, 1005 }, { 12, 10, 609 },
+ { 7, 0, 1676 }, { 4, 10, 895 }, { 5, 10, 772 }, { 7, 0, 2037 },
+ { 6, 0, 1207 }, { 11, 11, 916 }, { 14, 11, 419 }, { 14, 11, 140 },
+ { 20, 11, 41 }, { 6, 11, 331 }, { 8, 11, 623 }, { 9, 0, 944 },
+ { 9, 0, 969 }, { 9, 0, 1022 }, { 12, 0, 913 }, { 12, 0, 936 },
+ { 15, 0, 177 }, { 15, 0, 193 }, { 4, 10, 926 }, { 5, 10, 983 },
+ { 5, 0, 354 }, { 7, 11, 506 }, { 8, 0, 598 }, { 9, 0, 664 },
+ { 10, 0, 441 }, { 4, 11, 640 }, { 5, 11, 513 }, { 9, 0, 297 },
+ { 4, 10, 538 }, { 6, 10, 294 }, { 7, 10, 1267 }, { 8, 10, 624 },
+ { 7, 0, 1772 }, { 7, 11, 1888 }, { 8, 11, 289 }, { 11, 11, 45 },
+ { 12, 11, 278 }, { 12, 11, 537 }, { 7, 10, 1325 }, { 10, 0, 751 },
+ { 13, 0, 37 }, { 6, 0, 1828 }, { 4, 10, 757 }, { 4, 11, 394 },
+ { 6, 0, 257 }, { 7, 0, 1522 }, { 4, 0, 582 }, { 9, 0, 191 },
+ { 7, 11, 1931 }, { 7, 11, 574 }, { 7, 11, 1719 }, { 9, 11, 145 },
+ { 4, 11, 658 }, { 10, 0, 790 }, { 4, 11, 369 }, { 9, 11, 781 },
+ { 10, 11, 144 }, { 11, 11, 385 }, { 13, 11, 161 }, { 13, 11, 228 },
+ { 13, 11, 268 }, { 20, 11, 107 }, { 8, 0, 469 }, { 10, 0, 47 },
+ { 8, 11, 374 }, { 6, 0, 306 }, { 7, 0, 1140 }, { 7, 0, 1340 },
+ { 8, 0, 133 }, { 10, 0, 449 }, { 11, 0, 1011 }, { 7, 10, 1875 },
+ { 11, 10, 124 }, { 4, 11, 344 }, { 6, 11, 498 }, { 11, 11, 323 },
+ { 9, 0, 299 }, { 4, 0, 837 }, { 5, 11, 906 }, { 5, 0, 329 },
+ { 8, 0, 260 }, { 10, 0, 10 }, { 6, 0, 1320 }, { 4, 0, 657 },
+ { 18, 0, 158 }, { 7, 0, 1191 }, { 24, 0, 7 }, { 6, 0, 1939 },
+ { 8, 0, 974 }, { 10, 0, 996 }, { 7, 0, 1665 }, { 11, 11, 126 },
+ { 11, 11, 287 }, { 15, 0, 8 }, { 14, 11, 149 }, { 14, 11, 399 },
+ { 15, 11, 57 }, { 5, 0, 66 }, { 7, 0, 1896 }, { 8, 0, 288 },
+ { 7, 0, 175 }, { 10, 0, 494 }, { 5, 10, 150 }, { 8, 10, 603 },
+ { 9, 10, 593 }, { 9, 10, 634 }, { 10, 10, 173 }, { 11, 10, 462 },
+ { 11, 10, 515 }, { 13, 10, 216 }, { 13, 10, 288 }, { 14, 10, 400 },
+ { 6, 0, 1643 }, { 8, 11, 21 }, { 4, 0, 21 }, { 5, 0, 91 },
+ { 5, 0, 648 }, { 5, 0, 750 }, { 5, 0, 781 }, { 6, 0, 54 },
+ { 6, 0, 112 }, { 6, 0, 402 }, { 6, 0, 1732 }, { 7, 0, 315 },
+ { 7, 0, 749 }, { 7, 0, 1427 }, { 7, 0, 1900 }, { 9, 0, 78 },
+ { 9, 0, 508 }, { 10, 0, 611 }, { 10, 0, 811 }, { 11, 0, 510 },
+ { 11, 0, 728 }, { 13, 0, 36 }, { 14, 0, 39 }, { 16, 0, 83 },
+ { 17, 0, 124 }, { 20, 0, 30 }, { 4, 0, 668 }, { 8, 0, 570 },
+ { 10, 0, 322 }, { 10, 0, 719 }, { 11, 0, 407 }, { 7, 11, 1381 },
+ { 8, 11, 193 }, { 12, 10, 108 }, { 13, 10, 291 }, { 4, 11, 616 },
+ { 8, 11, 692 }, { 8, 0, 125 }, { 8, 0, 369 }, { 8, 0, 524 },
+ { 10, 0, 486 }, { 11, 0, 13 }, { 11, 0, 381 }, { 11, 0, 736 },
+ { 11, 0, 766 }, { 11, 0, 845 }, { 13, 0, 114 }, { 13, 0, 292 },
+ { 14, 0, 47 }, { 6, 0, 1247 }, { 6, 0, 1684 }, { 6, 0, 1731 },
+ { 7, 0, 356 }, { 8, 0, 54 }, { 8, 0, 221 }, { 9, 0, 225 },
+ { 9, 0, 356 }, { 10, 0, 77 }, { 10, 0, 446 }, { 10, 0, 731 },
+ { 12, 0, 404 }, { 13, 0, 491 }, { 7, 10, 1777 }, { 4, 11, 305 },
+ { 4, 10, 493 }, { 16, 10, 55 }, { 4, 0, 951 }, { 6, 0, 1809 },
+ { 6, 0, 1849 }, { 8, 0, 846 }, { 8, 0, 866 }, { 8, 0, 899 },
+ { 10, 0, 896 }, { 12, 0, 694 }, { 14, 0, 468 }, { 5, 11, 214 },
+ { 7, 11, 603 }, { 8, 11, 611 }, { 9, 11, 686 }, { 10, 11, 88 },
+ { 11, 11, 459 }, { 11, 11, 496 }, { 12, 11, 463 }, { 12, 11, 590 },
+ { 13, 11, 0 }, { 14, 11, 214 }, { 4, 0, 411 }, { 4, 0, 80 },
+ { 5, 0, 44 }, { 12, 11, 74 }, { 15, 0, 31 }, { 7, 0, 669 },
+ { 6, 10, 568 }, { 7, 10, 1804 }, { 8, 10, 362 }, { 8, 10, 410 },
+ { 8, 10, 830 }, { 9, 10, 514 }, { 11, 10, 649 }, { 14, 10, 157 },
+ { 7, 0, 673 }, { 6, 11, 1703 }, { 4, 10, 625 }, { 6, 0, 1303 },
+ { 5, 0, 299 }, { 7, 0, 1083 }, { 10, 0, 704 }, { 6, 0, 275 },
+ { 7, 0, 408 }, { 6, 10, 158 }, { 7, 10, 129 }, { 7, 10, 181 },
+ { 8, 10, 276 }, { 8, 10, 377 }, { 10, 10, 523 }, { 11, 10, 816 },
+ { 12, 10, 455 }, { 13, 10, 303 }, { 14, 10, 135 }, { 4, 0, 219 },
+ { 7, 0, 367 }, { 7, 0, 1713 }, { 7, 0, 1761 }, { 9, 0, 86 },
+ { 9, 0, 537 }, { 10, 0, 165 }, { 12, 0, 219 }, { 12, 0, 561 },
+ { 8, 0, 216 }, { 4, 10, 1 }, { 4, 11, 737 }, { 6, 11, 317 },
+ { 7, 10, 1143 }, { 7, 10, 1463 }, { 9, 10, 207 }, { 9, 10, 390 },
+ { 9, 10, 467 }, { 10, 11, 98 }, { 11, 11, 294 }, { 11, 10, 836 },
+ { 12, 11, 60 }, { 12, 11, 437 }, { 13, 11, 64 }, { 13, 11, 380 },
+ { 14, 11, 430 }, { 6, 11, 1758 }, { 8, 11, 520 }, { 9, 11, 345 },
+ { 9, 11, 403 }, { 14, 11, 350 }, { 5, 11, 47 }, { 10, 11, 242 },
+ { 10, 11, 579 }, { 5, 11, 139 }, { 7, 11, 1168 }, { 10, 11, 539 },
+ { 7, 0, 1319 }, { 4, 10, 295 }, { 4, 10, 723 }, { 5, 10, 895 },
+ { 7, 10, 1031 }, { 8, 10, 199 }, { 8, 10, 340 }, { 9, 10, 153 },
+ { 9, 10, 215 }, { 10, 10, 21 }, { 10, 10, 59 }, { 10, 10, 80 },
+ { 10, 10, 224 }, { 10, 10, 838 }, { 11, 10, 229 }, { 11, 10, 652 },
+ { 12, 10, 192 }, { 13, 10, 146 }, { 14, 10, 91 }, { 12, 0, 428 },
+ { 9, 10, 51 }, { 5, 0, 514 }, { 5, 10, 309 }, { 12, 10, 211 },
+ { 6, 0, 1010 }, { 5, 10, 125 }, { 8, 10, 77 }, { 10, 10, 15 },
+ { 4, 0, 55 }, { 5, 0, 301 }, { 6, 0, 571 }, { 14, 0, 49 },
+ { 18, 0, 102 }, { 8, 11, 370 }, { 4, 11, 107 }, { 7, 11, 613 },
+ { 8, 11, 358 }, { 8, 11, 439 }, { 8, 11, 504 }, { 9, 11, 501 },
+ { 10, 11, 383 }, { 11, 11, 477 }, { 4, 11, 229 }, { 5, 0, 364 },
+ { 5, 10, 439 }, { 4, 11, 903 }, { 7, 11, 1816 }, { 11, 0, 379 },
+ { 12, 10, 76 }, { 4, 0, 76 }, { 4, 0, 971 }, { 7, 0, 1550 },
+ { 9, 0, 306 }, { 9, 0, 430 }, { 9, 0, 663 }, { 10, 0, 683 },
+ { 10, 0, 921 }, { 11, 0, 427 }, { 11, 0, 753 }, { 12, 0, 334 },
+ { 12, 0, 442 }, { 14, 0, 258 }, { 14, 0, 366 }, { 15, 0, 131 },
+ { 9, 0, 52 }, { 4, 11, 47 }, { 6, 11, 373 }, { 7, 11, 452 },
+ { 7, 11, 543 }, { 7, 11, 1714 }, { 7, 11, 1856 }, { 9, 11, 6 },
+ { 11, 11, 257 }, { 11, 11, 391 }, { 4, 10, 8 }, { 7, 10, 1152 },
+ { 7, 10, 1153 }, { 7, 10, 1715 }, { 9, 10, 374 }, { 10, 10, 478 },
+ { 11, 10, 648 }, { 4, 11, 785 }, { 5, 11, 368 }, { 7, 10, 1099 },
+ { 7, 11, 860 }, { 5, 11, 980 }, { 6, 11, 1754 }, { 6, 0, 1258 },
+ { 6, 0, 1058 }, { 6, 0, 1359 }, { 7, 11, 536 }, { 7, 11, 1331 },
+ { 8, 11, 143 }, { 4, 0, 656 }, { 7, 0, 779 }, { 8, 10, 87 },
+ { 5, 11, 19 }, { 6, 11, 533 }, { 18, 11, 126 }, { 7, 0, 144 },
+ { 10, 10, 438 }, { 5, 11, 395 }, { 5, 11, 951 }, { 6, 11, 1776 },
+ { 7, 0, 1373 }, { 7, 0, 554 }, { 7, 0, 605 }, { 13, 0, 10 },
+ { 4, 10, 69 }, { 5, 10, 122 }, { 9, 10, 656 }, { 10, 10, 464 },
+ { 5, 10, 849 }, { 6, 10, 1633 }, { 5, 0, 838 }, { 5, 0, 841 },
+ { 6, 0, 1649 }, { 5, 0, 1012 }, { 11, 10, 499 }, { 7, 10, 476 },
+ { 7, 10, 1592 }, { 10, 10, 87 }, { 6, 0, 251 }, { 7, 0, 365 },
+ { 7, 0, 1357 }, { 7, 0, 1497 }, { 8, 0, 154 }, { 13, 0, 281 },
+ { 4, 11, 441 }, { 4, 11, 695 }, { 7, 11, 497 }, { 9, 11, 387 },
+ { 19, 11, 81 }, { 5, 0, 340 }, { 14, 10, 283 }, { 14, 11, 283 },
+ { 6, 0, 810 }, { 7, 11, 1894 }, { 11, 0, 495 }, { 5, 11, 284 },
+ { 6, 11, 49 }, { 6, 11, 350 }, { 7, 11, 1 }, { 7, 11, 377 },
+ { 7, 11, 1693 }, { 8, 11, 18 }, { 8, 11, 678 }, { 9, 11, 161 },
+ { 9, 11, 585 }, { 9, 11, 671 }, { 9, 11, 839 }, { 11, 11, 912 },
+ { 13, 11, 427 }, { 5, 10, 859 }, { 7, 10, 1160 }, { 8, 10, 107 },
+ { 9, 10, 291 }, { 9, 10, 439 }, { 10, 10, 663 }, { 11, 10, 609 },
+ { 12, 10, 197 }, { 8, 0, 261 }, { 9, 0, 144 }, { 9, 0, 466 },
+ { 10, 0, 370 }, { 12, 0, 470 }, { 13, 0, 144 }, { 14, 0, 348 },
+ { 9, 0, 897 }, { 6, 0, 248 }, { 9, 0, 546 }, { 10, 0, 535 },
+ { 11, 0, 681 }, { 13, 0, 135 }, { 4, 0, 358 }, { 7, 0, 1496 },
+ { 6, 0, 567 }, { 8, 0, 445 }, { 4, 10, 117 }, { 6, 10, 372 },
+ { 7, 10, 1905 }, { 14, 10, 323 }, { 4, 10, 722 }, { 11, 10, 471 },
+ { 6, 0, 697 }, { 6, 0, 996 }, { 7, 11, 2007 }, { 9, 11, 101 },
+ { 9, 11, 450 }, { 10, 11, 66 }, { 10, 11, 842 }, { 11, 11, 536 },
+ { 12, 11, 587 }, { 4, 0, 577 }, { 6, 0, 1336 }, { 9, 10, 5 },
+ { 12, 10, 216 }, { 12, 10, 294 }, { 12, 10, 298 }, { 12, 10, 400 },
+ { 12, 10, 518 }, { 13, 10, 229 }, { 15, 10, 139 }, { 6, 0, 174 },
+ { 10, 0, 917 }, { 6, 10, 1774 }, { 5, 10, 12 }, { 7, 10, 375 },
+ { 9, 10, 88 }, { 9, 10, 438 }, { 11, 11, 62 }, { 11, 10, 270 },
+ { 6, 11, 1766 }, { 6, 11, 0 }, { 7, 11, 84 }, { 7, 10, 816 },
+ { 7, 10, 1241 }, { 9, 10, 283 }, { 9, 10, 520 }, { 10, 10, 213 },
+ { 10, 10, 307 }, { 10, 10, 463 }, { 10, 10, 671 }, { 10, 10, 746 },
+ { 11, 10, 401 }, { 11, 10, 794 }, { 11, 11, 895 }, { 12, 10, 517 },
+ { 17, 11, 11 }, { 18, 10, 107 }, { 19, 10, 115 }, { 5, 0, 878 },
+ { 5, 0, 972 }, { 6, 11, 1665 }, { 7, 11, 256 }, { 7, 11, 1388 },
+ { 10, 11, 499 }, { 4, 10, 258 }, { 8, 10, 639 }, { 4, 11, 22 },
+ { 5, 11, 10 }, { 6, 10, 22 }, { 7, 11, 848 }, { 7, 10, 903 },
+ { 7, 10, 1963 }, { 8, 11, 97 }, { 10, 10, 577 }, { 5, 10, 681 },
+ { 8, 10, 782 }, { 5, 11, 481 }, { 4, 0, 351 }, { 4, 10, 664 },
+ { 5, 10, 804 }, { 11, 10, 1013 }, { 6, 11, 134 }, { 7, 11, 437 },
+ { 7, 11, 959 }, { 9, 11, 37 }, { 14, 11, 285 }, { 14, 11, 371 },
+ { 16, 11, 60 }, { 7, 11, 486 }, { 8, 11, 155 }, { 11, 11, 93 },
+ { 12, 11, 164 }, { 4, 0, 286 }, { 7, 0, 438 }, { 7, 0, 627 },
+ { 7, 0, 1516 }, { 8, 0, 40 }, { 9, 0, 56 }, { 9, 0, 294 },
+ { 10, 0, 30 }, { 11, 0, 969 }, { 11, 0, 995 }, { 18, 0, 148 },
+ { 5, 11, 591 }, { 7, 11, 337 }, { 6, 0, 1950 }, { 5, 10, 32 },
+ { 10, 11, 500 }, { 5, 11, 380 }, { 5, 11, 650 }, { 8, 11, 310 },
+ { 4, 11, 364 }, { 7, 11, 1156 }, { 7, 11, 1187 }, { 9, 11, 409 },
+ { 4, 0, 738 }, { 6, 11, 482 }, { 4, 11, 781 }, { 6, 11, 487 },
+ { 7, 11, 926 }, { 8, 11, 263 }, { 11, 11, 500 }, { 7, 11, 418 },
+ { 6, 0, 2047 }, { 10, 0, 969 }, { 4, 10, 289 }, { 7, 10, 629 },
+ { 7, 10, 1698 }, { 7, 10, 1711 }, { 12, 10, 215 }, { 6, 10, 450 },
+ { 8, 10, 109 }, { 6, 0, 818 }, { 8, 10, 705 }, { 5, 0, 866 },
+ { 4, 11, 94 }, { 7, 11, 1265 }, { 4, 11, 417 }, { 6, 0, 1467 },
+ { 7, 10, 1238 }, { 4, 0, 972 }, { 6, 0, 1851 }, { 6, 0, 1857 },
+ { 6, 0, 355 }, { 5, 0, 116 }, { 4, 0, 457 }, { 7, 11, 1411 },
+ { 4, 11, 408 }, { 4, 11, 741 }, { 7, 11, 500 }, { 6, 10, 26 },
+ { 14, 11, 137 }, { 5, 0, 527 }, { 6, 0, 189 }, { 7, 0, 859 },
+ { 8, 0, 267 }, { 11, 0, 104 }, { 11, 0, 554 }, { 15, 0, 60 },
+ { 15, 0, 125 }, { 6, 0, 1613 }, { 4, 10, 414 }, { 5, 10, 467 },
+ { 9, 10, 654 }, { 10, 10, 451 }, { 12, 10, 59 }, { 13, 10, 375 },
+ { 7, 10, 17 }, { 6, 0, 116 }, { 7, 11, 541 }, { 7, 10, 955 },
+ { 6, 11, 73 }, { 7, 11, 177 }, { 5, 11, 576 }, { 6, 0, 886 },
+ { 5, 0, 487 }, { 4, 0, 86 }, { 5, 0, 667 }, { 5, 0, 753 },
+ { 6, 0, 316 }, { 6, 0, 455 }, { 7, 0, 946 }, { 14, 11, 231 },
+ { 22, 0, 45 }, { 6, 0, 863 }, { 6, 0, 1953 }, { 6, 10, 280 },
+ { 10, 10, 502 }, { 11, 10, 344 }, { 12, 10, 38 }, { 4, 0, 79 },
+ { 7, 0, 1773 }, { 10, 0, 450 }, { 11, 0, 589 }, { 13, 0, 332 },
+ { 13, 0, 493 }, { 14, 0, 183 }, { 14, 0, 334 }, { 14, 0, 362 },
+ { 14, 0, 368 }, { 14, 0, 376 }, { 14, 0, 379 }, { 19, 0, 90 },
+ { 19, 0, 103 }, { 19, 0, 127 }, { 20, 0, 90 }, { 5, 10, 45 },
+ { 7, 10, 1161 }, { 11, 10, 448 }, { 11, 10, 880 }, { 13, 10, 139 },
+ { 13, 10, 407 }, { 15, 10, 16 }, { 17, 10, 95 }, { 18, 10, 66 },
+ { 18, 10, 88 }, { 18, 10, 123 }, { 21, 10, 7 }, { 8, 10, 777 },
+ { 4, 10, 410 }, { 7, 10, 521 }, { 7, 10, 1778 }, { 7, 11, 538 },
+ { 14, 0, 381 }, { 5, 11, 413 }, { 6, 0, 1142 }, { 6, 0, 1189 },
+ { 8, 11, 495 }, { 5, 0, 663 }, { 6, 0, 1962 }, { 6, 0, 2003 },
+ { 7, 11, 54 }, { 8, 11, 312 }, { 10, 11, 191 }, { 10, 11, 614 },
+ { 12, 11, 567 }, { 4, 10, 436 }, { 5, 0, 846 }, { 10, 0, 528 },
+ { 11, 0, 504 }, { 7, 10, 1587 }, { 7, 10, 1707 }, { 5, 0, 378 },
+ { 8, 0, 465 }, { 9, 0, 286 }, { 10, 0, 185 }, { 10, 0, 562 },
+ { 10, 0, 635 }, { 11, 0, 31 }, { 11, 0, 393 }, { 13, 0, 312 },
+ { 18, 0, 65 }, { 18, 0, 96 }, { 19, 0, 89 }, { 7, 0, 899 },
+ { 14, 0, 325 }, { 6, 11, 468 }, { 7, 11, 567 }, { 7, 11, 1478 },
+ { 8, 11, 530 }, { 14, 11, 290 }, { 7, 0, 1880 }, { 9, 0, 680 },
+ { 11, 0, 798 }, { 6, 0, 1770 }, { 4, 0, 648 }, { 22, 11, 35 },
+ { 5, 0, 945 }, { 6, 0, 1656 }, { 6, 0, 1787 }, { 7, 0, 167 },
+ { 8, 0, 824 }, { 9, 0, 391 }, { 10, 0, 375 }, { 11, 0, 185 },
+ { 6, 11, 484 }, { 7, 11, 822 }, { 6, 0, 2046 }, { 7, 0, 1645 },
+ { 8, 0, 352 }, { 9, 0, 249 }, { 4, 0, 152 }, { 6, 0, 611 },
+ { 7, 0, 1733 }, { 6, 11, 1724 }, { 7, 11, 2022 }, { 5, 0, 1006 },
+ { 13, 11, 96 }, { 5, 0, 420 }, { 7, 0, 1449 }, { 18, 11, 149 },
+ { 7, 0, 832 }, { 7, 10, 663 }, { 5, 0, 351 }, { 5, 0, 40 },
+ { 7, 0, 598 }, { 7, 0, 1638 }, { 8, 0, 78 }, { 9, 0, 166 },
+ { 9, 0, 640 }, { 9, 0, 685 }, { 9, 0, 773 }, { 11, 0, 215 },
+ { 13, 0, 65 }, { 14, 0, 172 }, { 14, 0, 317 }, { 17, 0, 6 },
+ { 8, 0, 60 }, { 9, 0, 343 }, { 11, 0, 769 }, { 6, 0, 1354 },
+ { 4, 0, 724 }, { 9, 0, 745 }, { 4, 11, 474 }, { 7, 0, 1951 },
+ { 8, 0, 765 }, { 8, 0, 772 }, { 12, 0, 671 }, { 7, 0, 108 },
+ { 8, 0, 219 }, { 8, 0, 388 }, { 9, 0, 775 }, { 11, 0, 275 },
+ { 12, 0, 464 }, { 9, 0, 639 }, { 7, 10, 503 }, { 5, 11, 366 },
+ { 5, 0, 15 }, { 6, 0, 56 }, { 7, 0, 1758 }, { 8, 0, 500 },
+ { 9, 0, 730 }, { 11, 0, 331 }, { 13, 0, 150 }, { 14, 0, 282 },
+ { 5, 11, 305 }, { 9, 11, 560 }, { 13, 11, 208 }, { 4, 10, 113 },
+ { 5, 10, 163 }, { 5, 10, 735 }, { 7, 10, 1009 }, { 9, 10, 9 },
+ { 9, 10, 771 }, { 12, 10, 90 }, { 13, 10, 138 }, { 13, 10, 410 },
+ { 15, 10, 128 }, { 4, 10, 324 }, { 10, 10, 104 }, { 7, 11, 466 },
+ { 14, 11, 27 }, { 6, 0, 1886 }, { 5, 0, 205 }, { 6, 0, 438 },
+ { 9, 0, 711 }, { 4, 11, 480 }, { 6, 11, 167 }, { 6, 11, 302 },
+ { 6, 11, 1642 }, { 7, 11, 130 }, { 7, 11, 656 }, { 7, 11, 837 },
+ { 7, 11, 1547 }, { 7, 11, 1657 }, { 8, 11, 429 }, { 9, 11, 228 },
+ { 10, 11, 643 }, { 13, 11, 289 }, { 13, 11, 343 }, { 19, 11, 101 },
+ { 6, 0, 865 }, { 6, 0, 2025 }, { 8, 0, 965 }, { 7, 11, 278 },
+ { 10, 11, 739 }, { 11, 11, 708 }, { 13, 11, 348 }, { 5, 0, 534 },
+ { 7, 11, 1922 }, { 9, 0, 691 }, { 4, 10, 935 }, { 5, 10, 823 },
+ { 6, 0, 443 }, { 9, 0, 237 }, { 9, 0, 571 }, { 9, 0, 695 },
+ { 10, 0, 139 }, { 11, 0, 715 }, { 12, 0, 417 }, { 13, 0, 421 },
+ { 5, 10, 269 }, { 7, 10, 434 }, { 7, 10, 891 }, { 8, 10, 339 },
+ { 9, 10, 702 }, { 11, 10, 594 }, { 11, 10, 718 }, { 17, 10, 100 },
+ { 6, 0, 1555 }, { 7, 0, 878 }, { 9, 10, 485 }, { 13, 10, 264 },
+ { 6, 10, 1713 }, { 7, 10, 1810 }, { 11, 10, 866 }, { 12, 10, 103 },
+ { 13, 10, 495 }, { 7, 10, 900 }, { 6, 0, 1410 }, { 9, 11, 316 },
+ { 11, 11, 256 }, { 4, 0, 995 }, { 7, 0, 1033 }, { 4, 0, 578 },
+ { 10, 0, 881 }, { 12, 0, 740 }, { 12, 0, 743 }, { 12, 0, 759 },
+ { 4, 0, 822 }, { 5, 0, 923 }, { 14, 10, 143 }, { 7, 11, 1696 },
+ { 6, 11, 363 }, { 7, 11, 1955 }, { 8, 11, 725 }, { 4, 0, 924 },
+ { 5, 0, 665 }, { 7, 10, 2029 }, { 7, 0, 1901 }, { 4, 0, 265 },
+ { 6, 0, 1092 }, { 6, 0, 1417 }, { 7, 0, 807 }, { 7, 0, 950 },
+ { 5, 0, 93 }, { 12, 0, 267 }, { 13, 0, 498 }, { 7, 0, 1451 },
+ { 5, 11, 813 }, { 7, 11, 2046 }, { 5, 10, 625 }, { 7, 10, 1617 },
+ { 7, 0, 747 }, { 6, 0, 788 }, { 9, 0, 828 }, { 7, 0, 184 },
+ { 11, 0, 307 }, { 11, 0, 400 }, { 15, 0, 130 }, { 5, 11, 712 },
+ { 7, 11, 1855 }, { 8, 10, 425 }, { 8, 10, 693 }, { 9, 10, 720 },
+ { 10, 10, 380 }, { 10, 10, 638 }, { 11, 11, 17 }, { 11, 10, 473 },
+ { 12, 10, 61 }, { 13, 11, 321 }, { 16, 11, 67 }, { 7, 0, 198 },
+ { 6, 11, 320 }, { 7, 11, 781 }, { 7, 11, 1921 }, { 9, 11, 55 },
+ { 10, 11, 186 }, { 10, 11, 273 }, { 10, 11, 664 }, { 10, 11, 801 },
+ { 11, 11, 996 }, { 11, 11, 997 }, { 13, 11, 157 }, { 14, 11, 170 },
+ { 8, 11, 271 }, { 7, 0, 994 }, { 7, 11, 103 }, { 7, 11, 863 },
+ { 11, 11, 184 }, { 14, 11, 299 }, { 17, 11, 62 }, { 11, 10, 551 },
+ { 14, 10, 159 }, { 5, 0, 233 }, { 5, 0, 320 }, { 6, 0, 140 },
+ { 8, 0, 295 }, { 8, 0, 615 }, { 8, 11, 615 }, { 5, 0, 978 },
+ { 4, 0, 905 }, { 6, 0, 1701 }, { 9, 0, 843 }, { 4, 10, 168 },
+ { 4, 0, 974 }, { 8, 0, 850 }, { 12, 0, 709 }, { 12, 0, 768 },
+ { 12, 0, 786 }, { 7, 10, 91 }, { 24, 0, 6 }, { 10, 10, 532 },
+ { 7, 10, 1884 }, { 4, 0, 509 }, { 6, 0, 1307 }, { 7, 0, 273 },
+ { 5, 11, 77 }, { 7, 11, 1455 }, { 10, 11, 843 }, { 19, 11, 73 },
+ { 22, 11, 5 }, { 4, 11, 458 }, { 7, 11, 1420 }, { 6, 11, 109 },
+ { 10, 11, 382 }, { 6, 0, 201 }, { 6, 11, 330 }, { 7, 10, 70 },
+ { 7, 11, 1084 }, { 10, 10, 240 }, { 11, 11, 142 }, { 19, 10, 93 },
+ { 7, 0, 1041 }, { 12, 11, 328 }, { 5, 11, 354 }, { 6, 0, 1040 },
+ { 5, 0, 693 }, { 6, 0, 774 }, { 11, 0, 234 }, { 4, 0, 336 },
+ { 7, 0, 1399 }, { 11, 10, 392 }, { 20, 0, 22 }, { 20, 11, 22 },
+ { 5, 0, 802 }, { 7, 0, 2021 }, { 8, 0, 805 }, { 5, 0, 167 },
+ { 5, 0, 899 }, { 6, 0, 410 }, { 9, 0, 777 }, { 9, 0, 789 },
+ { 6, 0, 1705 }, { 7, 10, 655 }, { 7, 10, 1844 }, { 4, 10, 145 },
+ { 6, 10, 176 }, { 7, 10, 395 }, { 9, 10, 562 }, { 4, 10, 501 },
+ { 7, 0, 10 }, { 5, 0, 11 }, { 6, 0, 117 }, { 6, 0, 485 },
+ { 7, 0, 1133 }, { 9, 0, 582 }, { 9, 0, 594 }, { 10, 0, 82 },
+ { 11, 0, 21 }, { 11, 0, 818 }, { 12, 0, 535 }, { 13, 0, 86 },
+ { 20, 0, 91 }, { 23, 0, 13 }, { 6, 10, 509 }, { 4, 0, 264 },
+ { 7, 0, 1067 }, { 8, 0, 204 }, { 8, 0, 385 }, { 11, 0, 953 },
+ { 11, 11, 737 }, { 10, 0, 56 }, { 6, 0, 1917 }, { 5, 0, 470 },
+ { 10, 11, 657 }, { 14, 11, 297 }, { 14, 11, 361 }, { 7, 11, 412 },
+ { 7, 0, 1198 }, { 7, 11, 1198 }, { 8, 11, 556 }, { 14, 11, 123 },
+ { 14, 11, 192 }, { 15, 11, 27 }, { 7, 11, 1985 }, { 14, 11, 146 },
+ { 15, 11, 42 }, { 16, 11, 23 }, { 17, 11, 86 }, { 18, 11, 17 },
+ { 11, 0, 1015 }, { 8, 11, 122 }, { 4, 10, 114 }, { 9, 10, 492 },
+ { 13, 10, 462 }, { 14, 10, 215 }, { 4, 10, 77 }, { 5, 10, 361 },
+ { 6, 10, 139 }, { 6, 10, 401 }, { 6, 10, 404 }, { 7, 10, 413 },
+ { 7, 10, 715 }, { 7, 10, 1716 }, { 11, 10, 279 }, { 12, 10, 179 },
+ { 12, 10, 258 }, { 13, 10, 244 }, { 14, 10, 358 }, { 6, 10, 1717 },
+ { 7, 10, 1061 }, { 8, 10, 82 }, { 11, 10, 250 }, { 12, 10, 420 },
+ { 13, 10, 184 }, { 5, 0, 715 }, { 7, 10, 724 }, { 9, 0, 919 },
+ { 9, 0, 922 }, { 9, 0, 927 }, { 9, 0, 933 }, { 9, 0, 962 },
+ { 9, 0, 1000 }, { 9, 0, 1002 }, { 9, 0, 1021 }, { 12, 0, 890 },
+ { 12, 0, 907 }, { 12, 0, 930 }, { 15, 0, 207 }, { 15, 0, 228 },
+ { 15, 0, 238 }, { 21, 0, 61 }, { 8, 0, 794 }, { 9, 0, 400 },
+ { 10, 0, 298 }, { 14, 0, 228 }, { 5, 11, 430 }, { 5, 11, 932 },
+ { 6, 11, 131 }, { 7, 11, 417 }, { 9, 11, 522 }, { 11, 11, 314 },
+ { 13, 11, 390 }, { 4, 0, 867 }, { 8, 0, 724 }, { 4, 11, 507 },
+ { 9, 11, 261 }, { 4, 11, 343 }, { 5, 11, 511 }, { 6, 0, 190 },
+ { 7, 0, 768 }, { 7, 0, 1170 }, { 6, 10, 513 }, { 7, 10, 1052 },
+ { 7, 11, 455 }, { 10, 11, 591 }, { 6, 0, 1066 }, { 9, 10, 899 },
+ { 14, 0, 67 }, { 19, 0, 60 }, { 4, 0, 948 }, { 18, 0, 174 },
+ { 18, 0, 176 }, { 7, 0, 1023 }, { 7, 10, 1417 }, { 12, 10, 382 },
+ { 17, 10, 48 }, { 24, 10, 12 }, { 6, 11, 575 }, { 4, 0, 764 },
+ { 6, 10, 545 }, { 7, 10, 565 }, { 7, 10, 1669 }, { 10, 10, 114 },
+ { 11, 10, 642 }, { 12, 10, 618 }, { 6, 0, 137 }, { 9, 0, 75 },
+ { 9, 0, 253 }, { 10, 0, 194 }, { 10, 0, 444 }, { 4, 0, 756 },
+ { 5, 10, 5 }, { 8, 0, 1008 }, { 7, 10, 192 }, { 4, 0, 842 },
+ { 11, 0, 643 }, { 12, 0, 115 }, { 8, 10, 763 }, { 11, 0, 67 },
+ { 5, 10, 759 }, { 4, 0, 821 }, { 5, 0, 760 }, { 7, 0, 542 },
+ { 8, 0, 135 }, { 8, 0, 496 }, { 7, 11, 580 }, { 7, 10, 370 },
+ { 7, 10, 1007 }, { 7, 10, 1177 }, { 7, 10, 1565 }, { 7, 10, 1237 },
+ { 12, 0, 736 }, { 7, 0, 319 }, { 7, 0, 355 }, { 7, 0, 763 },
+ { 10, 0, 389 }, { 17, 0, 43 }, { 8, 11, 333 }, { 10, 11, 182 },
+ { 4, 10, 87 }, { 5, 10, 250 }, { 13, 10, 298 }, { 10, 0, 786 },
+ { 6, 0, 2044 }, { 8, 11, 330 }, { 12, 11, 477 }, { 7, 11, 1338 },
+ { 4, 11, 125 }, { 6, 0, 1030 }, { 6, 0, 1083 }, { 4, 11, 721 },
+ { 7, 10, 814 }, { 7, 11, 776 }, { 8, 11, 145 }, { 19, 11, 56 },
+ { 6, 0, 1226 }, { 4, 10, 57 }, { 7, 10, 1195 }, { 7, 10, 1438 },
+ { 7, 10, 1548 }, { 7, 10, 1835 }, { 7, 10, 1904 }, { 9, 10, 757 },
+ { 10, 10, 604 }, { 11, 10, 519 }, { 7, 11, 792 }, { 8, 11, 147 },
+ { 10, 11, 821 }, { 11, 11, 1021 }, { 9, 11, 797 }, { 4, 0, 58 },
+ { 5, 0, 286 }, { 6, 0, 319 }, { 7, 0, 402 }, { 7, 0, 1254 },
+ { 7, 0, 1903 }, { 8, 0, 356 }, { 12, 0, 408 }, { 4, 0, 389 },
+ { 4, 0, 815 }, { 9, 0, 181 }, { 9, 0, 255 }, { 10, 0, 8 },
+ { 10, 0, 29 }, { 10, 0, 816 }, { 11, 0, 311 }, { 11, 0, 561 },
+ { 12, 0, 67 }, { 13, 0, 181 }, { 7, 11, 1472 }, { 7, 11, 1554 },
+ { 7, 11, 1071 }, { 7, 11, 1541 }, { 7, 11, 1767 }, { 7, 11, 1806 },
+ { 7, 11, 1999 }, { 9, 11, 248 }, { 10, 11, 400 }, { 11, 11, 162 },
+ { 11, 11, 178 }, { 11, 11, 242 }, { 12, 11, 605 }, { 15, 11, 26 },
+ { 16, 11, 44 }, { 5, 11, 168 }, { 5, 11, 930 }, { 8, 11, 74 },
+ { 9, 11, 623 }, { 12, 11, 500 }, { 12, 11, 579 }, { 13, 11, 41 },
+ { 15, 11, 93 }, { 6, 11, 220 }, { 7, 11, 1101 }, { 13, 11, 105 },
+ { 5, 0, 474 }, { 7, 0, 507 }, { 4, 10, 209 }, { 7, 11, 507 },
+ { 7, 10, 902 }, { 4, 0, 427 }, { 6, 0, 413 }, { 7, 10, 335 },
+ { 7, 10, 1437 }, { 7, 10, 1668 }, { 8, 10, 553 }, { 8, 10, 652 },
+ { 8, 10, 656 }, { 9, 10, 558 }, { 11, 10, 743 }, { 21, 10, 18 },
+ { 4, 0, 730 }, { 6, 11, 19 }, { 7, 11, 1413 }, { 11, 11, 428 },
+ { 5, 0, 373 }, { 4, 10, 559 }, { 7, 11, 96 }, { 8, 11, 401 },
+ { 9, 11, 896 }, { 7, 0, 799 }, { 7, 0, 1972 }, { 5, 10, 1017 },
+ { 10, 10, 511 }, { 7, 0, 1793 }, { 7, 11, 1961 }, { 7, 11, 1965 },
+ { 8, 11, 702 }, { 8, 11, 750 }, { 8, 11, 150 }, { 8, 11, 737 },
+ { 12, 11, 366 }, { 4, 0, 322 }, { 5, 10, 709 }, { 8, 11, 800 },
+ { 9, 11, 148 }, { 9, 11, 872 }, { 9, 11, 890 }, { 11, 11, 309 },
+ { 11, 11, 1001 }, { 13, 11, 267 }, { 13, 11, 323 }, { 6, 10, 1745 },
+ { 7, 0, 290 }, { 8, 10, 206 }, { 7, 0, 1651 }, { 17, 0, 89 },
+ { 11, 0, 2 }, { 4, 0, 672 }, { 6, 0, 1860 }, { 8, 0, 905 },
+ { 10, 0, 844 }, { 10, 0, 846 }, { 10, 0, 858 }, { 12, 0, 699 },
+ { 12, 0, 746 }, { 12, 0, 772 }, { 7, 11, 424 }, { 5, 11, 547 },
+ { 5, 0, 737 }, { 5, 11, 490 }, { 6, 11, 615 }, { 6, 11, 620 },
+ { 7, 11, 683 }, { 6, 0, 746 }, { 6, 0, 1612 }, { 4, 10, 776 },
+ { 9, 11, 385 }, { 21, 11, 17 }, { 5, 0, 145 }, { 7, 10, 1272 },
+ { 7, 0, 884 }, { 12, 0, 124 }, { 4, 0, 387 }, { 7, 0, 1288 },
+ { 5, 11, 133 }, { 8, 10, 406 }, { 8, 11, 187 }, { 6, 0, 679 },
+ { 8, 11, 8 }, { 10, 11, 0 }, { 7, 0, 550 }, { 7, 11, 798 },
+ { 8, 11, 685 }, { 7, 11, 1086 }, { 17, 11, 46 }, { 8, 10, 175 },
+ { 10, 10, 168 }, { 10, 10, 573 }, { 7, 0, 1305 }, { 4, 0, 576 },
+ { 7, 0, 1263 }, { 6, 0, 686 }, { 6, 0, 1563 }, { 6, 0, 607 },
+ { 5, 0, 919 }, { 6, 0, 1673 }, { 20, 0, 37 }, { 8, 11, 774 },
+ { 10, 11, 670 }, { 12, 11, 51 }, { 5, 10, 784 }, { 11, 10, 882 },
+ { 4, 0, 82 }, { 5, 0, 333 }, { 5, 0, 904 }, { 6, 0, 207 },
+ { 7, 0, 325 }, { 7, 0, 1726 }, { 8, 0, 101 }, { 10, 0, 778 },
+ { 11, 0, 220 }, { 7, 11, 371 }, { 4, 0, 958 }, { 5, 0, 903 },
+ { 4, 11, 127 }, { 5, 11, 350 }, { 6, 11, 356 }, { 8, 11, 426 },
+ { 9, 11, 572 }, { 10, 11, 247 }, { 11, 11, 312 }, { 12, 0, 147 },
+ { 6, 11, 59 }, { 7, 11, 885 }, { 9, 11, 603 }, { 13, 11, 397 },
+ { 10, 0, 367 }, { 9, 10, 14 }, { 9, 10, 441 }, { 11, 10, 9 },
+ { 11, 10, 966 }, { 12, 10, 287 }, { 13, 10, 342 }, { 13, 10, 402 },
+ { 15, 10, 110 }, { 15, 10, 163 }, { 6, 0, 690 }, { 4, 0, 705 },
+ { 9, 0, 651 }, { 11, 0, 971 }, { 13, 0, 273 }, { 7, 10, 1428 },
+ { 7, 10, 1640 }, { 7, 10, 1867 }, { 9, 10, 169 }, { 9, 10, 182 },
+ { 9, 10, 367 }, { 9, 10, 478 }, { 9, 10, 506 }, { 9, 10, 551 },
+ { 9, 10, 557 }, { 9, 10, 648 }, { 9, 10, 697 }, { 9, 10, 705 },
+ { 9, 10, 725 }, { 9, 10, 787 }, { 9, 10, 794 }, { 10, 10, 198 },
+ { 10, 10, 214 }, { 10, 10, 267 }, { 10, 10, 275 }, { 10, 10, 456 },
+ { 10, 10, 551 }, { 10, 10, 561 }, { 10, 10, 613 }, { 10, 10, 627 },
+ { 10, 10, 668 }, { 10, 10, 675 }, { 10, 10, 691 }, { 10, 10, 695 },
+ { 10, 10, 707 }, { 10, 10, 715 }, { 11, 10, 183 }, { 11, 10, 201 },
+ { 11, 10, 262 }, { 11, 10, 352 }, { 11, 10, 439 }, { 11, 10, 493 },
+ { 11, 10, 572 }, { 11, 10, 591 }, { 11, 10, 608 }, { 11, 10, 611 },
+ { 11, 10, 646 }, { 11, 10, 674 }, { 11, 10, 711 }, { 11, 10, 751 },
+ { 11, 10, 761 }, { 11, 10, 776 }, { 11, 10, 785 }, { 11, 10, 850 },
+ { 11, 10, 853 }, { 11, 10, 862 }, { 11, 10, 865 }, { 11, 10, 868 },
+ { 11, 10, 875 }, { 11, 10, 898 }, { 11, 10, 902 }, { 11, 10, 903 },
+ { 11, 10, 910 }, { 11, 10, 932 }, { 11, 10, 942 }, { 11, 10, 957 },
+ { 11, 10, 967 }, { 11, 10, 972 }, { 12, 10, 148 }, { 12, 10, 195 },
+ { 12, 10, 220 }, { 12, 10, 237 }, { 12, 10, 318 }, { 12, 10, 339 },
+ { 12, 10, 393 }, { 12, 10, 445 }, { 12, 10, 450 }, { 12, 10, 474 },
+ { 12, 10, 505 }, { 12, 10, 509 }, { 12, 10, 533 }, { 12, 10, 591 },
+ { 12, 10, 594 }, { 12, 10, 597 }, { 12, 10, 621 }, { 12, 10, 633 },
+ { 12, 10, 642 }, { 13, 10, 59 }, { 13, 10, 60 }, { 13, 10, 145 },
+ { 13, 10, 239 }, { 13, 10, 250 }, { 13, 10, 329 }, { 13, 10, 344 },
+ { 13, 10, 365 }, { 13, 10, 372 }, { 13, 10, 387 }, { 13, 10, 403 },
+ { 13, 10, 414 }, { 13, 10, 456 }, { 13, 10, 470 }, { 13, 10, 478 },
+ { 13, 10, 483 }, { 13, 10, 489 }, { 14, 10, 55 }, { 14, 10, 57 },
+ { 14, 10, 81 }, { 14, 10, 90 }, { 14, 10, 148 }, { 14, 10, 239 },
+ { 14, 10, 266 }, { 14, 10, 321 }, { 14, 10, 326 }, { 14, 10, 327 },
+ { 14, 10, 330 }, { 14, 10, 347 }, { 14, 10, 355 }, { 14, 10, 401 },
+ { 14, 10, 404 }, { 14, 10, 411 }, { 14, 10, 414 }, { 14, 10, 416 },
+ { 14, 10, 420 }, { 15, 10, 61 }, { 15, 10, 74 }, { 15, 10, 87 },
+ { 15, 10, 88 }, { 15, 10, 94 }, { 15, 10, 96 }, { 15, 10, 116 },
+ { 15, 10, 149 }, { 15, 10, 154 }, { 16, 10, 50 }, { 16, 10, 63 },
+ { 16, 10, 73 }, { 17, 10, 2 }, { 17, 10, 66 }, { 17, 10, 92 },
+ { 17, 10, 103 }, { 17, 10, 112 }, { 17, 10, 120 }, { 18, 10, 50 },
+ { 18, 10, 54 }, { 18, 10, 82 }, { 18, 10, 86 }, { 18, 10, 90 },
+ { 18, 10, 111 }, { 18, 10, 115 }, { 18, 10, 156 }, { 19, 10, 40 },
+ { 19, 10, 79 }, { 20, 10, 78 }, { 21, 10, 22 }, { 7, 0, 887 },
+ { 5, 10, 161 }, { 7, 10, 839 }, { 14, 11, 98 }, { 6, 0, 90 },
+ { 10, 11, 356 }, { 7, 11, 441 }, { 6, 11, 111 }, { 7, 11, 4 },
+ { 8, 11, 163 }, { 8, 11, 776 }, { 10, 11, 566 }, { 6, 0, 908 },
+ { 6, 0, 1261 }, { 7, 0, 813 }, { 12, 0, 497 }, { 13, 0, 56 },
+ { 6, 0, 1235 }, { 7, 0, 429 }, { 7, 11, 1994 }, { 10, 0, 904 },
+ { 6, 0, 125 }, { 7, 0, 1277 }, { 9, 0, 772 }, { 23, 0, 12 },
+ { 4, 0, 841 }, { 5, 0, 386 }, { 5, 11, 386 }, { 5, 11, 297 },
+ { 7, 11, 1038 }, { 6, 0, 860 }, { 6, 0, 1069 }, { 7, 11, 309 },
+ { 8, 0, 946 }, { 7, 10, 1814 }, { 13, 11, 418 }, { 8, 11, 363 },
+ { 10, 0, 768 }, { 11, 0, 787 }, { 22, 11, 30 }, { 22, 11, 33 },
+ { 6, 0, 160 }, { 7, 0, 1106 }, { 9, 0, 770 }, { 11, 0, 112 },
+ { 12, 0, 413 }, { 11, 11, 216 }, { 11, 11, 340 }, { 8, 10, 139 },
+ { 7, 11, 1390 }, { 7, 11, 808 }, { 4, 11, 280 }, { 12, 0, 271 },
+ { 17, 0, 109 }, { 7, 10, 643 }, { 8, 10, 236 }, { 12, 11, 54 },
+ { 4, 11, 421 }, { 5, 11, 548 }, { 11, 0, 719 }, { 12, 0, 36 },
+ { 13, 0, 337 }, { 7, 0, 581 }, { 9, 0, 644 }, { 9, 0, 699 },
+ { 11, 11, 511 }, { 13, 11, 394 }, { 14, 11, 298 }, { 14, 11, 318 },
+ { 18, 11, 103 }, { 7, 0, 304 }, { 9, 0, 646 }, { 9, 0, 862 },
+ { 11, 0, 696 }, { 12, 0, 208 }, { 15, 0, 79 }, { 19, 0, 108 },
+ { 4, 0, 631 }, { 7, 0, 1126 }, { 7, 0, 1536 }, { 7, 11, 1527 },
+ { 8, 0, 880 }, { 10, 0, 869 }, { 10, 0, 913 }, { 7, 0, 1513 },
+ { 5, 10, 54 }, { 6, 11, 254 }, { 9, 11, 109 }, { 10, 11, 103 },
+ { 7, 0, 981 }, { 5, 11, 729 }, { 4, 10, 744 }, { 4, 0, 434 },
+ { 6, 0, 550 }, { 7, 0, 930 }, { 10, 0, 476 }, { 13, 0, 452 },
+ { 19, 0, 104 }, { 6, 11, 1630 }, { 10, 10, 402 }, { 18, 10, 55 },
+ { 5, 0, 553 }, { 10, 0, 824 }, { 8, 0, 452 }, { 8, 0, 151 },
+ { 9, 10, 624 }, { 4, 10, 572 }, { 4, 0, 772 }, { 5, 11, 671 },
+ { 5, 0, 292 }, { 10, 0, 135 }, { 4, 11, 889 }, { 12, 11, 207 },
+ { 9, 0, 504 }, { 6, 10, 43 }, { 7, 10, 38 }, { 8, 10, 248 },
+ { 10, 10, 513 }, { 6, 0, 1089 }, { 7, 11, 1910 }, { 4, 11, 627 },
+ { 5, 11, 775 }, { 7, 0, 783 }, { 5, 10, 766 }, { 5, 10, 363 },
+ { 7, 0, 387 }, { 7, 11, 387 }, { 7, 0, 393 }, { 10, 0, 603 },
+ { 11, 0, 206 }, { 7, 11, 202 }, { 11, 11, 362 }, { 11, 11, 948 },
+ { 12, 11, 388 }, { 6, 11, 507 }, { 7, 11, 451 }, { 8, 11, 389 },
+ { 12, 11, 490 }, { 13, 11, 16 }, { 13, 11, 215 }, { 13, 11, 351 },
+ { 18, 11, 132 }, { 19, 11, 125 }, { 4, 0, 912 }, { 9, 0, 232 },
+ { 7, 11, 841 }, { 6, 10, 258 }, { 12, 10, 409 }, { 5, 10, 249 },
+ { 20, 10, 82 }, { 8, 11, 566 }, { 6, 0, 977 }, { 7, 11, 1214 },
+ { 7, 0, 1973 }, { 8, 0, 716 }, { 7, 0, 98 }, { 5, 0, 733 },
+ { 5, 11, 912 }, { 6, 11, 1695 }, { 5, 10, 393 }, { 6, 10, 378 },
+ { 7, 10, 1981 }, { 9, 10, 32 }, { 9, 10, 591 }, { 10, 10, 685 },
+ { 10, 10, 741 }, { 14, 10, 382 }, { 5, 10, 788 }, { 10, 0, 19 },
+ { 11, 0, 911 }, { 7, 10, 1968 }, { 13, 10, 509 }, { 5, 0, 668 },
+ { 5, 11, 236 }, { 6, 11, 572 }, { 8, 11, 492 }, { 11, 11, 618 },
+ { 16, 11, 56 }, { 7, 11, 1789 }, { 4, 0, 360 }, { 5, 0, 635 },
+ { 5, 0, 700 }, { 5, 10, 58 }, { 5, 10, 171 }, { 5, 10, 683 },
+ { 6, 10, 291 }, { 6, 10, 566 }, { 7, 10, 1650 }, { 11, 10, 523 },
+ { 12, 10, 273 }, { 12, 10, 303 }, { 15, 10, 39 }, { 15, 10, 111 },
+ { 5, 0, 901 }, { 6, 10, 589 }, { 5, 11, 190 }, { 8, 11, 318 },
+ { 12, 0, 656 }, { 7, 0, 726 }, { 24, 0, 9 }, { 4, 10, 917 },
+ { 5, 10, 1005 }, { 7, 10, 1598 }, { 6, 11, 491 }, { 4, 10, 919 },
+ { 5, 11, 434 }, { 9, 0, 72 }, { 6, 0, 1269 }, { 6, 0, 1566 },
+ { 6, 0, 1621 }, { 9, 0, 463 }, { 10, 0, 595 }, { 4, 10, 255 },
+ { 5, 10, 302 }, { 6, 10, 132 }, { 7, 10, 128 }, { 7, 10, 283 },
+ { 7, 10, 1299 }, { 10, 10, 52 }, { 10, 10, 514 }, { 11, 10, 925 },
+ { 13, 10, 92 }, { 14, 10, 309 }, { 7, 0, 1454 }, { 6, 0, 1287 },
+ { 11, 0, 600 }, { 13, 0, 245 }, { 9, 10, 173 }, { 8, 0, 989 },
+ { 7, 0, 164 }, { 7, 0, 1571 }, { 9, 0, 107 }, { 12, 0, 225 },
+ { 6, 0, 1061 }, { 13, 10, 442 }, { 4, 0, 27 }, { 5, 0, 484 },
+ { 5, 0, 510 }, { 6, 0, 434 }, { 7, 0, 1000 }, { 7, 0, 1098 },
+ { 8, 0, 2 }, { 7, 11, 85 }, { 7, 11, 247 }, { 8, 11, 585 },
+ { 10, 11, 163 }, { 10, 11, 316 }, { 11, 11, 103 }, { 14, 11, 0 },
+ { 6, 0, 1127 }, { 4, 0, 460 }, { 6, 0, 852 }, { 6, 10, 210 },
+ { 4, 0, 932 }, { 5, 0, 891 }, { 6, 0, 588 }, { 19, 11, 83 },
+ { 8, 0, 625 }, { 4, 10, 284 }, { 6, 10, 223 }, { 6, 0, 76 },
+ { 8, 0, 92 }, { 9, 0, 221 }, { 4, 11, 124 }, { 10, 11, 457 },
+ { 11, 11, 121 }, { 11, 11, 169 }, { 11, 11, 422 }, { 11, 11, 870 },
+ { 12, 11, 214 }, { 13, 11, 389 }, { 14, 11, 187 }, { 15, 11, 77 },
+ { 9, 11, 618 }, { 10, 11, 482 }, { 4, 10, 218 }, { 7, 10, 526 },
+ { 15, 10, 137 }, { 13, 0, 9 }, { 14, 0, 104 }, { 14, 0, 311 },
+ { 4, 10, 270 }, { 5, 10, 192 }, { 6, 10, 332 }, { 7, 10, 1322 },
+ { 12, 10, 661 }, { 7, 11, 1193 }, { 6, 11, 107 }, { 7, 11, 638 },
+ { 7, 11, 1632 }, { 9, 11, 396 }, { 4, 0, 763 }, { 4, 0, 622 },
+ { 5, 11, 370 }, { 6, 11, 1756 }, { 5, 0, 253 }, { 7, 0, 546 },
+ { 9, 0, 73 }, { 10, 0, 110 }, { 14, 0, 185 }, { 17, 0, 119 },
+ { 5, 11, 204 }, { 7, 0, 624 }, { 7, 0, 916 }, { 10, 0, 256 },
+ { 11, 0, 87 }, { 7, 10, 379 }, { 8, 10, 481 }, { 9, 10, 377 },
+ { 5, 0, 212 }, { 12, 0, 35 }, { 13, 0, 382 }, { 5, 11, 970 },
+ { 6, 11, 1706 }, { 9, 0, 746 }, { 5, 10, 1003 }, { 6, 10, 149 },
+ { 10, 0, 150 }, { 11, 0, 849 }, { 13, 0, 330 }, { 8, 10, 262 },
+ { 9, 10, 627 }, { 11, 10, 214 }, { 11, 10, 404 }, { 11, 10, 457 },
+ { 11, 10, 780 }, { 11, 10, 913 }, { 13, 10, 401 }, { 14, 10, 200 },
+ { 6, 0, 1466 }, { 7, 11, 3 }, { 6, 0, 1299 }, { 4, 11, 35 },
+ { 5, 11, 121 }, { 5, 11, 483 }, { 5, 11, 685 }, { 6, 11, 489 },
+ { 7, 11, 1204 }, { 8, 11, 394 }, { 7, 10, 742 }, { 4, 10, 142 },
+ { 8, 10, 304 }, { 4, 11, 921 }, { 5, 11, 1007 }, { 6, 0, 1518 },
+ { 6, 0, 1229 }, { 7, 0, 1175 }, { 5, 0, 816 }, { 12, 0, 159 },
+ { 4, 10, 471 }, { 4, 11, 712 }, { 5, 10, 51 }, { 6, 10, 602 },
+ { 7, 10, 925 }, { 8, 10, 484 }, { 10, 10, 195 }, { 6, 11, 1629 },
+ { 5, 0, 869 }, { 5, 0, 968 }, { 6, 0, 1626 }, { 8, 0, 734 },
+ { 8, 0, 784 }, { 4, 0, 542 }, { 6, 0, 1716 }, { 6, 0, 1727 },
+ { 7, 0, 1082 }, { 7, 0, 1545 }, { 8, 0, 56 }, { 8, 0, 118 },
+ { 8, 0, 412 }, { 8, 0, 564 }, { 9, 0, 888 }, { 9, 0, 908 },
+ { 10, 0, 50 }, { 10, 0, 423 }, { 11, 0, 685 }, { 11, 0, 697 },
+ { 11, 0, 933 }, { 12, 0, 299 }, { 13, 0, 126 }, { 13, 0, 136 },
+ { 13, 0, 170 }, { 13, 0, 190 }, { 8, 10, 688 }, { 4, 10, 697 },
+ { 4, 0, 232 }, { 9, 0, 202 }, { 10, 0, 474 }, { 12, 0, 433 },
+ { 8, 0, 212 }, { 6, 0, 108 }, { 7, 0, 1003 }, { 7, 0, 1181 },
+ { 8, 0, 111 }, { 8, 0, 343 }, { 5, 10, 221 }, { 7, 11, 1255 },
+ { 5, 11, 485 }, { 6, 0, 1712 }, { 14, 0, 216 }, { 5, 0, 643 },
+ { 6, 0, 516 }, { 4, 11, 285 }, { 5, 11, 317 }, { 6, 11, 301 },
+ { 7, 11, 7 }, { 8, 11, 153 }, { 10, 11, 766 }, { 11, 11, 468 },
+ { 12, 11, 467 }, { 13, 11, 143 }, { 4, 0, 133 }, { 7, 0, 711 },
+ { 7, 0, 1298 }, { 7, 0, 1585 }, { 6, 0, 650 }, { 7, 11, 512 },
+ { 6, 0, 99 }, { 7, 0, 1808 }, { 17, 0, 57 }, { 6, 0, 246 },
+ { 6, 0, 574 }, { 7, 0, 428 }, { 9, 0, 793 }, { 10, 0, 669 },
+ { 11, 0, 485 }, { 11, 0, 840 }, { 12, 0, 300 }, { 14, 0, 250 },
+ { 17, 0, 55 }, { 4, 10, 132 }, { 5, 10, 69 }, { 7, 10, 1242 },
+ { 8, 0, 1023 }, { 7, 0, 302 }, { 4, 10, 111 }, { 7, 0, 1871 },
+ { 4, 0, 728 }, { 9, 0, 252 }, { 4, 10, 767 }, { 6, 0, 461 },
+ { 7, 0, 1590 }, { 7, 10, 1416 }, { 7, 10, 2005 }, { 8, 10, 131 },
+ { 8, 10, 466 }, { 9, 10, 672 }, { 13, 10, 252 }, { 20, 10, 103 },
+ { 6, 0, 323 }, { 7, 0, 1564 }, { 7, 0, 461 }, { 8, 0, 775 },
+ { 6, 10, 44 }, { 8, 10, 368 }, { 11, 0, 172 }, { 4, 0, 464 },
+ { 4, 10, 570 }, { 5, 10, 120 }, { 9, 11, 269 }, { 6, 10, 227 },
+ { 7, 10, 1589 }, { 6, 11, 1719 }, { 6, 11, 1735 }, { 7, 11, 2016 },
+ { 7, 11, 2020 }, { 8, 11, 837 }, { 9, 11, 852 }, { 7, 0, 727 },
+ { 18, 0, 73 }, { 4, 0, 1023 }, { 7, 11, 852 }, { 7, 10, 1529 },
+ { 8, 0, 577 }, { 10, 11, 568 }, { 6, 0, 1037 }, { 8, 11, 67 },
+ { 10, 11, 419 }, { 4, 0, 413 }, { 5, 0, 677 }, { 8, 0, 432 },
+ { 12, 0, 280 }, { 10, 0, 600 }, { 6, 10, 1667 }, { 7, 11, 967 },
+ { 7, 10, 2036 }, { 13, 11, 11 }, { 6, 10, 511 }, { 12, 10, 132 },
+ { 6, 0, 799 }, { 5, 10, 568 }, { 6, 10, 138 }, { 7, 10, 1293 },
+ { 8, 0, 159 }, { 4, 10, 565 }, { 8, 10, 827 }, { 7, 0, 646 },
+ { 7, 0, 1730 }, { 11, 0, 446 }, { 13, 0, 178 }, { 4, 10, 922 },
+ { 5, 10, 1023 }, { 7, 11, 11 }, { 4, 0, 395 }, { 11, 0, 145 },
+ { 7, 10, 1002 }, { 9, 0, 174 }, { 10, 0, 164 }, { 11, 0, 440 },
+ { 11, 0, 514 }, { 11, 0, 841 }, { 15, 0, 98 }, { 21, 0, 20 },
+ { 6, 0, 426 }, { 10, 0, 608 }, { 11, 0, 1002 }, { 7, 11, 320 },
+ { 8, 11, 51 }, { 12, 11, 481 }, { 12, 11, 570 }, { 20, 11, 106 },
+ { 9, 0, 977 }, { 9, 0, 983 }, { 4, 11, 445 }, { 10, 0, 250 },
+ { 11, 0, 100 }, { 6, 0, 1982 }, { 8, 10, 402 }, { 5, 11, 239 },
+ { 4, 10, 716 }, { 13, 10, 31 }, { 5, 0, 476 }, { 7, 11, 83 },
+ { 7, 11, 1990 }, { 8, 11, 130 }, { 11, 11, 720 }, { 8, 10, 691 },
+ { 8, 10, 731 }, { 5, 11, 123 }, { 6, 11, 530 }, { 7, 11, 348 },
+ { 7, 11, 1419 }, { 5, 0, 76 }, { 6, 0, 458 }, { 6, 0, 497 },
+ { 7, 0, 868 }, { 9, 0, 658 }, { 10, 0, 594 }, { 11, 0, 173 },
+ { 11, 0, 566 }, { 12, 0, 20 }, { 12, 0, 338 }, { 13, 0, 200 },
+ { 9, 11, 139 }, { 10, 11, 399 }, { 11, 11, 469 }, { 12, 11, 634 },
+ { 13, 11, 223 }, { 9, 10, 840 }, { 10, 10, 803 }, { 5, 10, 847 },
+ { 11, 11, 223 }, { 12, 11, 168 }, { 4, 11, 210 }, { 8, 0, 447 },
+ { 9, 10, 53 }, { 9, 10, 268 }, { 9, 10, 901 }, { 10, 10, 518 },
+ { 10, 10, 829 }, { 11, 10, 188 }, { 13, 10, 74 }, { 14, 10, 46 },
+ { 15, 10, 17 }, { 15, 10, 33 }, { 17, 10, 40 }, { 18, 10, 36 },
+ { 19, 10, 20 }, { 22, 10, 1 }, { 24, 10, 2 }, { 4, 0, 526 },
+ { 7, 0, 1029 }, { 7, 0, 1054 }, { 19, 11, 59 }, { 22, 11, 2 },
+ { 4, 0, 636 }, { 6, 0, 1875 }, { 6, 0, 1920 }, { 9, 0, 999 },
+ { 12, 0, 807 }, { 12, 0, 825 }, { 15, 0, 179 }, { 15, 0, 190 },
+ { 18, 0, 182 }, { 8, 10, 532 }, { 6, 0, 1699 }, { 7, 0, 660 },
+ { 7, 0, 1124 }, { 17, 0, 31 }, { 19, 0, 22 }, { 23, 0, 14 },
+ { 7, 10, 681 }, { 4, 11, 430 }, { 12, 10, 677 }, { 4, 10, 684 },
+ { 8, 10, 384 }, { 4, 11, 756 }, { 5, 11, 213 }, { 7, 0, 188 },
+ { 7, 10, 110 }, { 8, 10, 290 }, { 8, 10, 591 }, { 9, 10, 382 },
+ { 9, 10, 649 }, { 11, 10, 71 }, { 11, 10, 155 }, { 11, 10, 313 },
+ { 12, 10, 5 }, { 13, 10, 325 }, { 14, 10, 287 }, { 7, 10, 360 },
+ { 7, 10, 425 }, { 9, 10, 66 }, { 9, 10, 278 }, { 10, 10, 644 },
+ { 14, 11, 164 }, { 4, 0, 279 }, { 7, 0, 301 }, { 9, 0, 362 },
+ { 6, 11, 586 }, { 7, 0, 1743 }, { 4, 0, 178 }, { 5, 0, 399 },
+ { 4, 10, 900 }, { 5, 10, 861 }, { 5, 10, 254 }, { 7, 10, 985 },
+ { 8, 10, 73 }, { 5, 11, 108 }, { 7, 10, 1959 }, { 8, 10, 683 },
+ { 5, 11, 219 }, { 4, 11, 193 }, { 5, 11, 916 }, { 7, 11, 364 },
+ { 10, 11, 398 }, { 10, 11, 726 }, { 11, 11, 317 }, { 11, 11, 626 },
+ { 12, 11, 142 }, { 12, 11, 288 }, { 12, 11, 678 }, { 13, 11, 313 },
+ { 15, 11, 113 }, { 18, 11, 114 }, { 21, 11, 30 }, { 22, 11, 53 },
+ { 6, 11, 241 }, { 7, 11, 907 }, { 8, 11, 832 }, { 9, 11, 342 },
+ { 10, 11, 729 }, { 11, 11, 284 }, { 11, 11, 445 }, { 11, 11, 651 },
+ { 11, 11, 863 }, { 13, 11, 398 }, { 18, 11, 99 }, { 4, 0, 872 },
+ { 6, 0, 831 }, { 6, 0, 1692 }, { 6, 0, 202 }, { 6, 0, 1006 },
+ { 9, 0, 832 }, { 10, 0, 636 }, { 11, 0, 208 }, { 12, 0, 360 },
+ { 17, 0, 118 }, { 18, 0, 27 }, { 20, 0, 67 }, { 9, 11, 734 },
+ { 4, 10, 725 }, { 7, 11, 993 }, { 10, 11, 666 }, { 6, 0, 1954 },
+ { 6, 10, 196 }, { 7, 0, 872 }, { 10, 0, 516 }, { 11, 0, 167 },
+ { 5, 10, 831 }, { 4, 11, 562 }, { 9, 11, 254 }, { 11, 11, 879 },
+ { 9, 0, 313 }, { 4, 0, 224 }, { 4, 11, 786 }, { 11, 0, 24 },
+ { 12, 0, 170 }, { 8, 10, 723 }, { 5, 0, 546 }, { 7, 0, 35 },
+ { 8, 0, 11 }, { 8, 0, 12 }, { 9, 0, 315 }, { 9, 0, 533 },
+ { 10, 0, 802 }, { 11, 0, 166 }, { 12, 0, 525 }, { 14, 0, 243 },
+ { 7, 0, 1937 }, { 13, 10, 80 }, { 13, 10, 437 }, { 17, 10, 74 },
+ { 5, 0, 241 }, { 8, 0, 242 }, { 9, 0, 451 }, { 10, 0, 667 },
+ { 11, 0, 598 }, { 12, 0, 429 }, { 22, 0, 46 }, { 6, 0, 1273 },
+ { 9, 0, 830 }, { 5, 10, 848 }, { 6, 10, 66 }, { 8, 10, 764 },
+ { 6, 0, 825 }, { 6, 0, 993 }, { 4, 0, 1006 }, { 10, 0, 327 },
+ { 13, 0, 271 }, { 4, 10, 36 }, { 7, 10, 1387 }, { 11, 10, 755 },
+ { 6, 0, 1023 }, { 7, 0, 1580 }, { 4, 0, 366 }, { 9, 0, 516 },
+ { 4, 10, 887 }, { 6, 0, 1736 }, { 7, 0, 1891 }, { 6, 11, 216 },
+ { 7, 11, 901 }, { 7, 11, 1343 }, { 8, 11, 493 }, { 6, 10, 165 },
+ { 10, 10, 388 }, { 7, 11, 341 }, { 11, 11, 219 }, { 4, 10, 719 },
+ { 7, 10, 155 }, { 6, 0, 1935 }, { 4, 0, 826 }, { 6, 0, 331 },
+ { 6, 0, 1605 }, { 8, 0, 623 }, { 11, 0, 139 }, { 11, 0, 171 },
+ { 7, 11, 1734 }, { 10, 11, 115 }, { 11, 11, 420 }, { 12, 11, 154 },
+ { 13, 11, 404 }, { 14, 11, 346 }, { 15, 11, 54 }, { 15, 11, 112 },
+ { 7, 0, 288 }, { 4, 10, 353 }, { 6, 10, 146 }, { 6, 10, 1789 },
+ { 7, 10, 990 }, { 7, 10, 1348 }, { 9, 10, 665 }, { 9, 10, 898 },
+ { 11, 10, 893 }, { 14, 10, 212 }, { 6, 0, 916 }, { 6, 0, 1592 },
+ { 7, 0, 1888 }, { 4, 10, 45 }, { 7, 10, 1257 }, { 5, 11, 1011 },
+ { 8, 11, 701 }, { 11, 11, 596 }, { 4, 11, 54 }, { 5, 11, 666 },
+ { 7, 11, 1039 }, { 7, 11, 1130 }, { 9, 11, 195 }, { 10, 11, 302 },
+ { 6, 0, 1471 }, { 6, 0, 1570 }, { 4, 0, 394 }, { 12, 10, 65 },
+ { 8, 10, 816 }, { 7, 0, 1931 }, { 7, 0, 574 }, { 7, 0, 1719 },
+ { 6, 11, 467 }, { 4, 0, 658 }, { 9, 0, 781 }, { 10, 0, 144 },
+ { 11, 0, 385 }, { 13, 0, 161 }, { 13, 0, 228 }, { 13, 0, 268 },
+ { 20, 0, 107 }, { 6, 11, 1669 }, { 8, 0, 374 }, { 7, 0, 735 },
+ { 4, 0, 344 }, { 6, 0, 498 }, { 11, 0, 323 }, { 7, 0, 586 },
+ { 7, 0, 1063 }, { 6, 10, 559 }, { 6, 10, 1691 }, { 9, 0, 155 },
+ { 5, 0, 906 }, { 7, 11, 122 }, { 9, 11, 259 }, { 10, 11, 84 },
+ { 11, 11, 470 }, { 12, 11, 541 }, { 13, 11, 379 }, { 6, 0, 1139 },
+ { 10, 0, 108 }, { 11, 0, 116 }, { 6, 10, 456 }, { 5, 10, 925 },
+ { 5, 11, 82 }, { 5, 11, 131 }, { 7, 11, 1755 }, { 8, 11, 31 },
+ { 9, 11, 168 }, { 9, 11, 764 }, { 11, 11, 869 }, { 6, 11, 605 },
+ { 5, 11, 278 }, { 9, 11, 68 }, { 4, 11, 163 }, { 5, 11, 201 },
+ { 5, 11, 307 }, { 5, 11, 310 }, { 6, 11, 335 }, { 7, 11, 284 },
+ { 8, 11, 165 }, { 7, 11, 1660 }, { 6, 11, 33 }, { 7, 11, 1244 },
+ { 4, 0, 616 }, { 8, 11, 483 }, { 8, 0, 857 }, { 8, 0, 902 },
+ { 8, 0, 910 }, { 10, 0, 879 }, { 12, 0, 726 }, { 4, 11, 199 },
+ { 11, 11, 34 }, { 8, 0, 692 }, { 6, 10, 193 }, { 7, 10, 240 },
+ { 7, 10, 1682 }, { 10, 10, 51 }, { 10, 10, 640 }, { 11, 10, 410 },
+ { 13, 10, 82 }, { 14, 10, 247 }, { 14, 10, 331 }, { 14, 10, 377 },
+ { 6, 0, 823 }, { 6, 0, 983 }, { 11, 10, 411 }, { 4, 0, 305 },
+ { 8, 10, 633 }, { 10, 11, 203 }, { 6, 0, 681 }, { 6, 11, 326 },
+ { 7, 11, 677 }, { 9, 11, 425 }, { 5, 0, 214 }, { 7, 0, 603 },
+ { 8, 0, 611 }, { 9, 0, 686 }, { 10, 0, 88 }, { 11, 0, 459 },
+ { 11, 0, 496 }, { 12, 0, 463 }, { 12, 0, 590 }, { 13, 0, 0 },
+ { 8, 0, 1004 }, { 14, 0, 23 }, { 6, 0, 1703 }, { 19, 11, 8 },
+ { 17, 11, 56 }, { 7, 0, 1443 }, { 4, 10, 237 }, { 7, 10, 514 },
+ { 6, 0, 714 }, { 17, 0, 19 }, { 5, 11, 358 }, { 7, 11, 473 },
+ { 7, 11, 1184 }, { 10, 11, 662 }, { 13, 11, 212 }, { 13, 11, 304 },
+ { 13, 11, 333 }, { 17, 11, 98 }, { 4, 0, 737 }, { 10, 0, 98 },
+ { 11, 0, 294 }, { 12, 0, 60 }, { 12, 0, 437 }, { 13, 0, 64 },
+ { 13, 0, 380 }, { 14, 0, 430 }, { 6, 10, 392 }, { 7, 10, 65 },
+ { 7, 10, 2019 }, { 6, 0, 1758 }, { 8, 0, 520 }, { 9, 0, 345 },
+ { 9, 0, 403 }, { 14, 0, 350 }, { 5, 0, 47 }, { 10, 0, 242 },
+ { 10, 0, 579 }, { 5, 0, 139 }, { 7, 0, 1168 }, { 10, 0, 539 },
+ { 6, 0, 1459 }, { 13, 0, 388 }, { 13, 11, 388 }, { 6, 0, 253 },
+ { 7, 10, 1260 }, { 7, 10, 1790 }, { 10, 0, 252 }, { 9, 10, 222 },
+ { 11, 10, 900 }, { 12, 0, 745 }, { 5, 11, 946 }, { 4, 0, 107 },
+ { 7, 0, 613 }, { 8, 0, 439 }, { 8, 0, 504 }, { 9, 0, 501 },
+ { 10, 0, 383 }, { 11, 0, 477 }, { 7, 11, 1485 }, { 4, 0, 871 },
+ { 7, 11, 411 }, { 7, 11, 590 }, { 8, 11, 631 }, { 9, 11, 323 },
+ { 10, 11, 355 }, { 11, 11, 491 }, { 12, 11, 143 }, { 12, 11, 402 },
+ { 13, 11, 73 }, { 14, 11, 408 }, { 15, 11, 107 }, { 18, 11, 71 },
+ { 4, 0, 229 }, { 4, 0, 903 }, { 12, 0, 71 }, { 5, 0, 549 },
+ { 4, 0, 47 }, { 6, 0, 373 }, { 7, 0, 452 }, { 7, 0, 543 },
+ { 7, 0, 1828 }, { 7, 0, 1856 }, { 9, 0, 6 }, { 11, 0, 257 },
+ { 11, 0, 391 }, { 7, 11, 1467 }, { 8, 11, 328 }, { 10, 11, 544 },
+ { 11, 11, 955 }, { 13, 11, 320 }, { 17, 11, 83 }, { 5, 0, 980 },
+ { 6, 0, 1754 }, { 8, 0, 865 }, { 5, 0, 705 }, { 9, 0, 606 },
+ { 7, 0, 161 }, { 8, 10, 201 }, { 8, 10, 605 }, { 15, 11, 35 },
+ { 5, 11, 835 }, { 6, 11, 483 }, { 12, 10, 224 }, { 7, 0, 536 },
+ { 7, 0, 1331 }, { 8, 0, 143 }, { 6, 0, 1388 }, { 5, 0, 724 },
+ { 10, 0, 305 }, { 11, 0, 151 }, { 12, 0, 33 }, { 12, 0, 121 },
+ { 12, 0, 381 }, { 17, 0, 3 }, { 17, 0, 27 }, { 17, 0, 78 },
+ { 18, 0, 18 }, { 19, 0, 54 }, { 21, 0, 5 }, { 4, 10, 523 },
+ { 5, 10, 638 }, { 5, 0, 19 }, { 6, 0, 533 }, { 5, 0, 395 },
+ { 5, 0, 951 }, { 6, 0, 1776 }, { 7, 0, 1908 }, { 4, 0, 846 },
+ { 10, 0, 74 }, { 11, 0, 663 }, { 12, 0, 210 }, { 13, 0, 166 },
+ { 13, 0, 310 }, { 14, 0, 373 }, { 18, 0, 95 }, { 19, 0, 43 },
+ { 6, 10, 242 }, { 7, 10, 227 }, { 7, 10, 1581 }, { 8, 10, 104 },
+ { 9, 10, 113 }, { 9, 10, 220 }, { 9, 10, 427 }, { 10, 10, 239 },
+ { 11, 10, 579 }, { 11, 10, 1023 }, { 13, 10, 4 }, { 13, 10, 204 },
+ { 13, 10, 316 }, { 20, 10, 86 }, { 9, 11, 716 }, { 11, 11, 108 },
+ { 13, 11, 123 }, { 14, 11, 252 }, { 19, 11, 38 }, { 21, 11, 3 },
+ { 23, 11, 11 }, { 8, 0, 372 }, { 9, 0, 122 }, { 10, 0, 175 },
+ { 4, 11, 677 }, { 7, 11, 1374 }, { 8, 11, 540 }, { 7, 10, 861 },
+ { 4, 0, 695 }, { 7, 0, 497 }, { 9, 0, 387 }, { 19, 0, 81 },
+ { 8, 0, 937 }, { 6, 0, 718 }, { 7, 0, 1328 }, { 8, 10, 494 },
+ { 4, 11, 331 }, { 6, 0, 1581 }, { 5, 11, 747 }, { 5, 0, 284 },
+ { 6, 0, 49 }, { 6, 0, 350 }, { 7, 0, 1 }, { 7, 0, 377 },
+ { 7, 0, 1693 }, { 8, 0, 18 }, { 8, 0, 678 }, { 9, 0, 161 },
+ { 9, 0, 585 }, { 9, 0, 671 }, { 9, 0, 839 }, { 11, 0, 912 },
+ { 13, 0, 427 }, { 7, 10, 1306 }, { 8, 10, 505 }, { 9, 10, 482 },
+ { 10, 10, 126 }, { 11, 10, 225 }, { 12, 10, 347 }, { 12, 10, 449 },
+ { 13, 10, 19 }, { 14, 10, 218 }, { 14, 10, 435 }, { 10, 10, 764 },
+ { 12, 10, 120 }, { 13, 10, 39 }, { 17, 10, 127 }, { 4, 0, 597 },
+ { 5, 10, 268 }, { 6, 0, 1094 }, { 4, 0, 1008 }, { 6, 0, 1973 },
+ { 4, 0, 811 }, { 11, 0, 908 }, { 7, 0, 1471 }, { 5, 11, 326 },
+ { 4, 10, 384 }, { 7, 10, 1022 }, { 7, 0, 1935 }, { 8, 0, 324 },
+ { 12, 0, 42 }, { 4, 11, 691 }, { 7, 11, 1935 }, { 8, 11, 324 },
+ { 9, 11, 35 }, { 10, 11, 680 }, { 11, 11, 364 }, { 12, 11, 42 },
+ { 13, 11, 357 }, { 18, 11, 16 }, { 7, 0, 2014 }, { 7, 0, 2007 },
+ { 9, 0, 101 }, { 9, 0, 450 }, { 10, 0, 66 }, { 10, 0, 842 },
+ { 11, 0, 536 }, { 12, 0, 587 }, { 6, 11, 32 }, { 7, 11, 385 },
+ { 7, 11, 757 }, { 7, 11, 1916 }, { 8, 11, 37 }, { 8, 11, 94 },
+ { 8, 11, 711 }, { 9, 11, 541 }, { 10, 11, 162 }, { 10, 11, 795 },
+ { 11, 11, 989 }, { 11, 11, 1010 }, { 12, 11, 14 }, { 14, 11, 308 },
+ { 11, 0, 586 }, { 7, 10, 1703 }, { 7, 0, 1077 }, { 11, 0, 28 },
+ { 9, 10, 159 }, { 12, 10, 603 }, { 6, 0, 1221 }, { 8, 10, 583 },
+ { 6, 11, 152 }, { 6, 11, 349 }, { 6, 11, 1682 }, { 7, 11, 1252 },
+ { 8, 11, 112 }, { 9, 11, 435 }, { 9, 11, 668 }, { 10, 11, 290 },
+ { 10, 11, 319 }, { 10, 11, 815 }, { 11, 11, 180 }, { 11, 11, 837 },
+ { 12, 11, 240 }, { 13, 11, 152 }, { 13, 11, 219 }, { 14, 11, 158 },
+ { 11, 0, 62 }, { 4, 10, 515 }, { 8, 10, 632 }, { 8, 10, 697 },
+ { 9, 10, 854 }, { 6, 0, 1766 }, { 4, 11, 581 }, { 6, 11, 126 },
+ { 7, 11, 573 }, { 8, 11, 397 }, { 14, 11, 44 }, { 22, 0, 28 },
+ { 11, 0, 670 }, { 22, 0, 25 }, { 4, 10, 136 }, { 5, 10, 551 },
+ { 6, 0, 1665 }, { 7, 0, 256 }, { 7, 0, 1388 }, { 10, 0, 499 },
+ { 4, 0, 22 }, { 5, 0, 10 }, { 7, 0, 1576 }, { 8, 0, 97 },
+ { 6, 10, 1782 }, { 5, 0, 481 }, { 7, 10, 1287 }, { 9, 10, 44 },
+ { 10, 10, 552 }, { 10, 10, 642 }, { 11, 10, 839 }, { 12, 10, 274 },
+ { 12, 10, 275 }, { 12, 10, 372 }, { 13, 10, 91 }, { 14, 10, 125 },
+ { 5, 11, 926 }, { 7, 11, 1232 }, { 9, 11, 531 }, { 6, 0, 134 },
+ { 7, 0, 437 }, { 7, 0, 1824 }, { 9, 0, 37 }, { 14, 0, 285 },
+ { 14, 0, 371 }, { 7, 0, 486 }, { 8, 0, 155 }, { 11, 0, 93 },
+ { 12, 0, 164 }, { 6, 0, 1391 }, { 6, 0, 1442 }, { 5, 11, 670 },
+ { 5, 0, 591 }, { 6, 10, 147 }, { 7, 10, 886 }, { 7, 11, 1957 },
+ { 9, 10, 753 }, { 10, 10, 268 }, { 5, 0, 380 }, { 5, 0, 650 },
+ { 7, 0, 1173 }, { 8, 0, 310 }, { 4, 0, 364 }, { 7, 0, 1156 },
+ { 7, 0, 1187 }, { 9, 0, 409 }, { 7, 11, 1621 }, { 6, 0, 482 },
+ { 5, 11, 506 }, { 4, 0, 781 }, { 6, 0, 487 }, { 7, 0, 926 },
+ { 8, 0, 263 }, { 11, 0, 500 }, { 10, 10, 137 }, { 7, 11, 242 },
+ { 11, 11, 96 }, { 5, 10, 414 }, { 7, 10, 1762 }, { 6, 0, 804 },
+ { 5, 11, 834 }, { 7, 11, 1202 }, { 8, 11, 14 }, { 9, 11, 481 },
+ { 9, 11, 880 }, { 6, 10, 599 }, { 4, 0, 94 }, { 7, 0, 1265 },
+ { 4, 0, 415 }, { 4, 0, 417 }, { 5, 0, 348 }, { 6, 0, 522 },
+ { 6, 10, 1749 }, { 7, 11, 1526 }, { 10, 11, 465 }, { 6, 10, 1627 },
+ { 4, 0, 1012 }, { 4, 10, 488 }, { 4, 11, 357 }, { 6, 11, 172 },
+ { 7, 11, 143 }, { 9, 11, 413 }, { 4, 10, 83 }, { 4, 11, 590 },
+ { 18, 11, 76 }, { 12, 10, 676 }, { 7, 11, 287 }, { 8, 11, 355 },
+ { 9, 11, 293 }, { 9, 11, 743 }, { 6, 10, 278 }, { 6, 0, 1803 },
+ { 18, 0, 165 }, { 24, 0, 21 }, { 5, 11, 169 }, { 7, 11, 333 },
+ { 8, 11, 45 }, { 12, 10, 97 }, { 12, 11, 97 }, { 4, 0, 408 },
+ { 4, 0, 741 }, { 7, 0, 500 }, { 4, 11, 198 }, { 7, 10, 388 },
+ { 7, 10, 644 }, { 11, 10, 781 }, { 4, 11, 24 }, { 5, 11, 140 },
+ { 5, 11, 185 }, { 7, 11, 1500 }, { 11, 11, 565 }, { 11, 11, 838 },
+ { 6, 0, 1321 }, { 9, 0, 257 }, { 7, 10, 229 }, { 8, 10, 59 },
+ { 9, 10, 190 }, { 10, 10, 378 }, { 12, 10, 191 }, { 4, 11, 334 },
+ { 5, 11, 593 }, { 7, 11, 1885 }, { 6, 0, 1138 }, { 4, 0, 249 },
+ { 6, 0, 73 }, { 7, 0, 177 }, { 5, 0, 576 }, { 14, 0, 231 },
+ { 9, 0, 288 }, { 4, 10, 660 }, { 7, 10, 1035 }, { 10, 10, 737 },
+ { 7, 0, 1487 }, { 6, 0, 989 }, { 9, 0, 433 }, { 7, 10, 690 },
+ { 9, 10, 587 }, { 12, 10, 521 }, { 7, 0, 1264 }, { 7, 0, 1678 },
+ { 11, 0, 945 }, { 12, 0, 341 }, { 12, 0, 471 }, { 12, 0, 569 },
+ { 4, 11, 709 }, { 5, 11, 897 }, { 5, 11, 224 }, { 13, 11, 174 },
+ { 18, 11, 52 }, { 7, 11, 1840 }, { 6, 10, 1744 }, { 12, 0, 87 },
+ { 16, 0, 74 }, { 4, 10, 733 }, { 9, 10, 194 }, { 10, 10, 92 },
+ { 11, 10, 198 }, { 12, 10, 84 }, { 13, 10, 128 }, { 12, 0, 779 },
+ { 7, 0, 538 }, { 4, 11, 608 }, { 5, 11, 497 }, { 5, 0, 413 },
+ { 7, 11, 1375 }, { 7, 11, 1466 }, { 10, 11, 331 }, { 8, 0, 495 },
+ { 6, 11, 540 }, { 8, 11, 136 }, { 7, 0, 54 }, { 8, 0, 312 },
+ { 10, 0, 191 }, { 10, 0, 614 }, { 12, 0, 567 }, { 6, 0, 468 },
+ { 7, 0, 567 }, { 7, 0, 1478 }, { 8, 0, 530 }, { 14, 0, 290 },
+ { 5, 11, 999 }, { 4, 11, 299 }, { 7, 10, 306 }, { 7, 11, 1004 },
+ { 14, 11, 296 }, { 6, 0, 1484 }, { 5, 10, 979 }, { 6, 0, 609 },
+ { 9, 0, 815 }, { 12, 11, 137 }, { 14, 11, 9 }, { 14, 11, 24 },
+ { 14, 11, 64 }, { 5, 11, 456 }, { 6, 0, 484 }, { 7, 0, 822 },
+ { 5, 10, 178 }, { 8, 11, 180 }, { 4, 11, 755 }, { 9, 0, 900 },
+ { 7, 0, 1335 }, { 6, 0, 1724 }, { 7, 0, 2022 }, { 7, 11, 1139 },
+ { 5, 0, 640 }, { 4, 10, 390 }, { 6, 0, 1831 }, { 10, 11, 633 },
+ { 7, 11, 566 }, { 4, 11, 890 }, { 5, 11, 805 }, { 5, 11, 819 },
+ { 5, 11, 961 }, { 6, 11, 396 }, { 6, 11, 1631 }, { 6, 11, 1678 },
+ { 7, 11, 1967 }, { 7, 11, 2041 }, { 9, 11, 630 }, { 11, 11, 8 },
+ { 11, 11, 1019 }, { 12, 11, 176 }, { 13, 11, 225 }, { 14, 11, 292 },
+ { 21, 11, 24 }, { 4, 0, 474 }, { 6, 0, 1103 }, { 7, 0, 1504 },
+ { 6, 0, 1576 }, { 6, 0, 961 }, { 6, 0, 1034 }, { 12, 0, 655 },
+ { 11, 11, 514 }, { 21, 11, 20 }, { 5, 0, 305 }, { 7, 11, 1815 },
+ { 7, 11, 1505 }, { 10, 11, 190 }, { 10, 11, 634 }, { 11, 11, 792 },
+ { 12, 11, 358 }, { 12, 11, 447 }, { 5, 11, 0 }, { 6, 11, 536 },
+ { 7, 11, 604 }, { 13, 11, 445 }, { 17, 11, 126 }, { 7, 0, 1236 },
+ { 5, 10, 105 }, { 4, 0, 480 }, { 6, 0, 217 }, { 6, 0, 302 },
+ { 6, 0, 1642 }, { 7, 0, 130 }, { 7, 0, 837 }, { 7, 0, 1321 },
+ { 7, 0, 1547 }, { 7, 0, 1657 }, { 8, 0, 429 }, { 9, 0, 228 },
+ { 13, 0, 289 }, { 13, 0, 343 }, { 19, 0, 101 }, { 6, 11, 232 },
+ { 6, 11, 412 }, { 7, 11, 1074 }, { 8, 11, 9 }, { 8, 11, 157 },
+ { 8, 11, 786 }, { 9, 11, 196 }, { 9, 11, 352 }, { 9, 11, 457 },
+ { 10, 11, 337 }, { 11, 11, 232 }, { 11, 11, 877 }, { 12, 11, 480 },
+ { 12, 11, 546 }, { 5, 10, 438 }, { 7, 11, 958 }, { 9, 10, 694 },
+ { 12, 10, 627 }, { 13, 11, 38 }, { 13, 10, 210 }, { 4, 11, 382 },
+ { 8, 11, 579 }, { 7, 0, 278 }, { 10, 0, 739 }, { 11, 0, 708 },
+ { 13, 0, 348 }, { 4, 11, 212 }, { 7, 11, 1206 }, { 7, 11, 1898 },
+ { 6, 0, 708 }, { 6, 0, 1344 }, { 24, 10, 11 }, { 9, 11, 768 },
+ { 6, 0, 1840 }, { 12, 0, 233 }, { 8, 10, 25 }, { 10, 10, 826 },
+ { 6, 0, 2017 }, { 5, 11, 655 }, { 6, 0, 1488 }, { 11, 11, 290 },
+ { 4, 10, 308 }, { 6, 0, 1590 }, { 6, 0, 1800 }, { 6, 0, 1259 },
+ { 16, 0, 28 }, { 6, 11, 231 }, { 7, 11, 95 }, { 8, 11, 423 },
+ { 5, 11, 300 }, { 7, 10, 150 }, { 8, 10, 649 }, { 7, 11, 1874 },
+ { 9, 11, 641 }, { 6, 11, 237 }, { 7, 11, 611 }, { 8, 11, 100 },
+ { 9, 11, 416 }, { 11, 11, 335 }, { 12, 11, 173 }, { 18, 11, 101 },
+ { 9, 0, 45 }, { 6, 10, 521 }, { 17, 0, 36 }, { 14, 11, 26 },
+ { 18, 11, 150 }, { 7, 0, 1442 }, { 14, 0, 22 }, { 5, 10, 339 },
+ { 15, 10, 41 }, { 15, 10, 166 }, { 19, 10, 66 }, { 8, 0, 378 },
+ { 6, 11, 581 }, { 7, 11, 1119 }, { 6, 0, 1507 }, { 19, 11, 117 },
+ { 11, 0, 39 }, { 6, 0, 1054 }, { 6, 0, 363 }, { 7, 0, 1955 },
+ { 8, 0, 725 }, { 6, 0, 2036 }, { 5, 11, 199 }, { 6, 0, 1871 },
+ { 9, 0, 935 }, { 9, 0, 961 }, { 9, 0, 1004 }, { 9, 0, 1016 },
+ { 12, 0, 805 }, { 12, 0, 852 }, { 12, 0, 853 }, { 12, 0, 869 },
+ { 12, 0, 882 }, { 12, 0, 896 }, { 12, 0, 906 }, { 12, 0, 917 },
+ { 12, 0, 940 }, { 15, 0, 170 }, { 15, 0, 176 }, { 15, 0, 188 },
+ { 15, 0, 201 }, { 15, 0, 205 }, { 15, 0, 212 }, { 15, 0, 234 },
+ { 15, 0, 244 }, { 18, 0, 181 }, { 18, 0, 193 }, { 18, 0, 196 },
+ { 18, 0, 201 }, { 18, 0, 202 }, { 18, 0, 210 }, { 18, 0, 217 },
+ { 18, 0, 235 }, { 18, 0, 236 }, { 18, 0, 237 }, { 21, 0, 54 },
+ { 21, 0, 55 }, { 21, 0, 58 }, { 21, 0, 59 }, { 24, 0, 22 },
+ { 6, 10, 1628 }, { 9, 0, 805 }, { 5, 0, 813 }, { 7, 0, 2046 },
+ { 14, 11, 42 }, { 5, 0, 712 }, { 6, 0, 1240 }, { 11, 0, 17 },
+ { 13, 0, 321 }, { 16, 0, 67 }, { 4, 0, 617 }, { 7, 10, 829 },
+ { 6, 0, 320 }, { 7, 0, 781 }, { 7, 0, 1921 }, { 9, 0, 55 },
+ { 10, 0, 186 }, { 10, 0, 273 }, { 10, 0, 664 }, { 10, 0, 801 },
+ { 11, 0, 996 }, { 11, 0, 997 }, { 13, 0, 157 }, { 14, 0, 170 },
+ { 8, 0, 271 }, { 5, 10, 486 }, { 7, 10, 1349 }, { 18, 11, 91 },
+ { 19, 11, 70 }, { 10, 0, 445 }, { 7, 10, 1635 }, { 8, 10, 17 },
+ { 10, 10, 295 }, { 8, 11, 404 }, { 7, 0, 103 }, { 7, 0, 863 },
+ { 11, 0, 184 }, { 17, 0, 62 }, { 10, 10, 558 }, { 9, 0, 659 },
+ { 6, 11, 312 }, { 6, 11, 1715 }, { 10, 11, 584 }, { 11, 11, 546 },
+ { 11, 11, 692 }, { 12, 11, 259 }, { 12, 11, 295 }, { 13, 11, 46 },
+ { 13, 11, 154 }, { 6, 0, 676 }, { 4, 11, 588 }, { 4, 11, 231 },
+ { 5, 11, 61 }, { 6, 11, 104 }, { 7, 11, 729 }, { 7, 11, 964 },
+ { 7, 11, 1658 }, { 12, 11, 414 }, { 6, 11, 263 }, { 10, 11, 757 },
+ { 11, 0, 337 }, { 14, 0, 303 }, { 7, 11, 1363 }, { 4, 11, 320 },
+ { 12, 0, 506 }, { 6, 10, 447 }, { 5, 0, 77 }, { 7, 0, 1455 },
+ { 10, 0, 843 }, { 19, 0, 73 }, { 7, 10, 577 }, { 7, 10, 1432 },
+ { 9, 10, 475 }, { 9, 10, 505 }, { 9, 10, 526 }, { 9, 10, 609 },
+ { 9, 10, 689 }, { 9, 10, 726 }, { 9, 10, 735 }, { 9, 10, 738 },
+ { 10, 10, 556 }, { 10, 10, 674 }, { 10, 10, 684 }, { 11, 10, 89 },
+ { 11, 10, 202 }, { 11, 10, 272 }, { 11, 10, 380 }, { 11, 10, 415 },
+ { 11, 10, 505 }, { 11, 10, 537 }, { 11, 10, 550 }, { 11, 10, 562 },
+ { 11, 10, 640 }, { 11, 10, 667 }, { 11, 10, 688 }, { 11, 10, 847 },
+ { 11, 10, 927 }, { 11, 10, 930 }, { 11, 10, 940 }, { 12, 10, 144 },
+ { 12, 10, 325 }, { 12, 10, 329 }, { 12, 10, 389 }, { 12, 10, 403 },
+ { 12, 10, 451 }, { 12, 10, 515 }, { 12, 10, 604 }, { 12, 10, 616 },
+ { 12, 10, 626 }, { 13, 10, 66 }, { 13, 10, 131 }, { 13, 10, 167 },
+ { 13, 10, 236 }, { 13, 10, 368 }, { 13, 10, 411 }, { 13, 10, 434 },
+ { 13, 10, 453 }, { 13, 10, 461 }, { 13, 10, 474 }, { 14, 10, 59 },
+ { 14, 10, 60 }, { 14, 10, 139 }, { 14, 10, 152 }, { 14, 10, 276 },
+ { 14, 10, 353 }, { 14, 10, 402 }, { 15, 10, 28 }, { 15, 10, 81 },
+ { 15, 10, 123 }, { 15, 10, 152 }, { 18, 10, 136 }, { 20, 10, 88 },
+ { 4, 0, 458 }, { 7, 0, 1420 }, { 6, 0, 109 }, { 10, 0, 382 },
+ { 4, 11, 405 }, { 4, 10, 609 }, { 7, 10, 756 }, { 7, 11, 817 },
+ { 9, 10, 544 }, { 11, 10, 413 }, { 14, 11, 58 }, { 14, 10, 307 },
+ { 16, 10, 25 }, { 17, 11, 37 }, { 18, 11, 124 }, { 6, 0, 330 },
+ { 7, 0, 1084 }, { 11, 0, 142 }, { 5, 11, 974 }, { 4, 10, 930 },
+ { 5, 10, 947 }, { 5, 10, 939 }, { 14, 11, 394 }, { 16, 0, 91 },
+ { 17, 0, 87 }, { 5, 11, 235 }, { 5, 10, 962 }, { 7, 11, 1239 },
+ { 11, 11, 131 }, { 12, 11, 370 }, { 11, 0, 492 }, { 5, 10, 651 },
+ { 8, 10, 170 }, { 9, 10, 61 }, { 9, 10, 63 }, { 10, 10, 23 },
+ { 10, 10, 37 }, { 10, 10, 834 }, { 11, 10, 4 }, { 11, 10, 281 },
+ { 11, 10, 503 }, { 11, 10, 677 }, { 12, 10, 96 }, { 12, 10, 130 },
+ { 12, 10, 244 }, { 14, 10, 5 }, { 14, 10, 40 }, { 14, 10, 162 },
+ { 14, 10, 202 }, { 18, 10, 133 }, { 4, 10, 406 }, { 5, 10, 579 },
+ { 12, 10, 492 }, { 22, 10, 15 }, { 9, 11, 137 }, { 10, 11, 221 },
+ { 6, 0, 1239 }, { 11, 0, 211 }, { 12, 0, 145 }, { 7, 11, 390 },
+ { 10, 11, 140 }, { 7, 11, 1418 }, { 7, 11, 1144 }, { 6, 0, 1049 },
+ { 7, 0, 321 }, { 6, 10, 17 }, { 7, 10, 1001 }, { 7, 10, 1982 },
+ { 9, 10, 886 }, { 10, 10, 489 }, { 10, 10, 800 }, { 11, 10, 782 },
+ { 12, 10, 320 }, { 13, 10, 467 }, { 14, 10, 145 }, { 14, 10, 387 },
+ { 15, 10, 119 }, { 17, 10, 17 }, { 5, 11, 407 }, { 11, 11, 489 },
+ { 19, 11, 37 }, { 20, 11, 73 }, { 22, 11, 38 }, { 5, 10, 458 },
+ { 7, 0, 1985 }, { 7, 10, 1983 }, { 8, 10, 0 }, { 8, 10, 171 },
+ { 9, 10, 120 }, { 9, 10, 732 }, { 10, 10, 473 }, { 11, 10, 656 },
+ { 11, 10, 998 }, { 18, 10, 0 }, { 18, 10, 2 }, { 19, 10, 21 },
+ { 5, 11, 325 }, { 7, 11, 1483 }, { 8, 11, 5 }, { 8, 11, 227 },
+ { 9, 11, 105 }, { 10, 11, 585 }, { 12, 11, 614 }, { 8, 0, 122 },
+ { 4, 0, 234 }, { 7, 11, 1196 }, { 6, 0, 976 }, { 6, 0, 1098 },
+ { 6, 0, 1441 }, { 7, 0, 253 }, { 8, 0, 549 }, { 6, 11, 621 },
+ { 13, 11, 504 }, { 16, 11, 19 }, { 4, 10, 519 }, { 5, 0, 430 },
+ { 5, 0, 932 }, { 6, 0, 131 }, { 7, 0, 417 }, { 9, 0, 522 },
+ { 11, 0, 314 }, { 13, 0, 390 }, { 14, 0, 149 }, { 14, 0, 399 },
+ { 15, 0, 57 }, { 5, 10, 907 }, { 6, 10, 31 }, { 6, 11, 218 },
+ { 7, 10, 491 }, { 7, 10, 530 }, { 8, 10, 592 }, { 11, 10, 53 },
+ { 11, 10, 779 }, { 12, 10, 167 }, { 12, 10, 411 }, { 14, 10, 14 },
+ { 14, 10, 136 }, { 15, 10, 72 }, { 16, 10, 17 }, { 16, 10, 72 },
+ { 12, 11, 330 }, { 7, 11, 454 }, { 7, 11, 782 }, { 8, 11, 768 },
+ { 4, 0, 507 }, { 10, 11, 676 }, { 12, 11, 462 }, { 6, 0, 630 },
+ { 9, 0, 811 }, { 4, 10, 208 }, { 5, 10, 106 }, { 6, 10, 531 },
+ { 8, 10, 408 }, { 9, 10, 188 }, { 10, 10, 572 }, { 4, 0, 343 },
+ { 5, 0, 511 }, { 6, 10, 1693 }, { 6, 11, 164 }, { 4, 0, 448 },
+ { 7, 0, 455 }, { 10, 0, 591 }, { 7, 0, 1381 }, { 12, 10, 441 },
+ { 22, 11, 50 }, { 9, 10, 449 }, { 10, 10, 192 }, { 10, 10, 740 },
+ { 6, 0, 575 }, { 4, 10, 241 }, { 6, 0, 1175 }, { 6, 0, 653 },
+ { 6, 0, 1761 }, { 6, 0, 1198 }, { 4, 10, 259 }, { 6, 11, 343 },
+ { 7, 11, 195 }, { 9, 11, 226 }, { 10, 11, 197 }, { 10, 11, 575 },
+ { 11, 11, 502 }, { 11, 11, 899 }, { 7, 0, 1127 }, { 7, 0, 1572 },
+ { 10, 0, 297 }, { 10, 0, 422 }, { 11, 0, 764 }, { 11, 0, 810 },
+ { 12, 0, 264 }, { 13, 0, 102 }, { 13, 0, 300 }, { 13, 0, 484 },
+ { 14, 0, 147 }, { 14, 0, 229 }, { 17, 0, 71 }, { 18, 0, 118 },
+ { 19, 0, 120 }, { 7, 11, 666 }, { 4, 0, 678 }, { 4, 10, 173 },
+ { 5, 10, 312 }, { 5, 10, 512 }, { 7, 10, 1285 }, { 7, 10, 1603 },
+ { 7, 10, 1691 }, { 9, 10, 464 }, { 11, 10, 195 }, { 12, 10, 279 },
+ { 12, 10, 448 }, { 14, 10, 11 }, { 19, 10, 102 }, { 16, 0, 99 },
+ { 18, 0, 164 }, { 7, 11, 1125 }, { 9, 11, 143 }, { 11, 11, 61 },
+ { 14, 11, 405 }, { 22, 11, 21 }, { 9, 11, 260 }, { 4, 10, 452 },
+ { 5, 10, 583 }, { 5, 10, 817 }, { 6, 10, 433 }, { 7, 10, 593 },
+ { 7, 10, 720 }, { 7, 10, 1378 }, { 8, 10, 161 }, { 9, 10, 284 },
+ { 10, 10, 313 }, { 11, 10, 886 }, { 4, 10, 547 }, { 8, 10, 722 },
+ { 14, 0, 35 }, { 14, 0, 191 }, { 13, 0, 45 }, { 10, 0, 121 },
+ { 4, 0, 125 }, { 6, 0, 1622 }, { 5, 11, 959 }, { 8, 10, 420 },
+ { 11, 10, 193 }, { 4, 0, 721 }, { 7, 10, 409 }, { 8, 0, 145 },
+ { 7, 0, 792 }, { 8, 0, 147 }, { 10, 0, 821 }, { 11, 0, 970 },
+ { 11, 0, 1021 }, { 8, 11, 173 }, { 6, 11, 266 }, { 4, 0, 715 },
+ { 7, 0, 1999 }, { 10, 10, 308 }, { 5, 0, 531 }, { 5, 0, 168 },
+ { 5, 0, 930 }, { 8, 0, 74 }, { 9, 0, 623 }, { 12, 0, 500 },
+ { 12, 0, 579 }, { 16, 0, 65 }, { 10, 11, 246 }, { 6, 0, 220 },
+ { 7, 0, 1101 }, { 13, 0, 105 }, { 14, 11, 314 }, { 5, 10, 1002 },
+ { 8, 10, 745 }, { 6, 0, 960 }, { 20, 0, 0 }, { 20, 11, 0 },
+ { 4, 0, 1005 }, { 4, 10, 239 }, { 6, 10, 477 }, { 7, 10, 1607 },
+ { 11, 10, 68 }, { 11, 10, 617 }, { 6, 0, 19 }, { 7, 0, 1413 },
+ { 11, 0, 428 }, { 21, 10, 13 }, { 7, 0, 96 }, { 8, 0, 401 },
+ { 8, 0, 703 }, { 9, 0, 896 }, { 8, 11, 300 }, { 6, 0, 1595 },
+ { 17, 0, 116 }, { 8, 0, 1021 }, { 7, 0, 1961 }, { 7, 0, 1965 },
+ { 7, 0, 2030 }, { 8, 0, 150 }, { 8, 0, 702 }, { 8, 0, 737 },
+ { 8, 0, 750 }, { 12, 0, 366 }, { 11, 11, 75 }, { 14, 11, 267 },
+ { 4, 10, 367 }, { 8, 0, 800 }, { 9, 0, 148 }, { 9, 0, 872 },
+ { 9, 0, 890 }, { 11, 0, 309 }, { 11, 0, 1001 }, { 13, 0, 267 },
+ { 13, 0, 323 }, { 5, 11, 427 }, { 5, 11, 734 }, { 7, 11, 478 },
+ { 8, 11, 52 }, { 7, 11, 239 }, { 11, 11, 217 }, { 14, 11, 165 },
+ { 4, 11, 323 }, { 12, 11, 419 }, { 13, 0, 299 }, { 14, 0, 75 },
+ { 6, 11, 87 }, { 6, 11, 1734 }, { 7, 11, 20 }, { 7, 11, 1056 },
+ { 8, 11, 732 }, { 9, 11, 406 }, { 9, 11, 911 }, { 10, 11, 694 },
+ { 6, 0, 1383 }, { 4, 10, 694 }, { 5, 11, 613 }, { 9, 0, 779 },
+ { 4, 0, 598 }, { 12, 10, 687 }, { 6, 0, 970 }, { 7, 0, 424 },
+ { 5, 0, 547 }, { 7, 11, 32 }, { 7, 11, 984 }, { 8, 11, 85 },
+ { 8, 11, 709 }, { 9, 11, 579 }, { 9, 11, 847 }, { 9, 11, 856 },
+ { 10, 11, 799 }, { 11, 11, 258 }, { 11, 11, 1007 }, { 12, 11, 331 },
+ { 12, 11, 615 }, { 13, 11, 188 }, { 13, 11, 435 }, { 14, 11, 8 },
+ { 15, 11, 165 }, { 16, 11, 27 }, { 20, 11, 40 }, { 6, 0, 1222 },
+ { 6, 0, 1385 }, { 4, 0, 876 }, { 10, 11, 151 }, { 7, 10, 213 },
+ { 4, 11, 167 }, { 7, 11, 82 }, { 5, 0, 133 }, { 6, 11, 24 },
+ { 7, 11, 74 }, { 7, 11, 678 }, { 9, 11, 258 }, { 5, 11, 62 },
+ { 6, 11, 534 }, { 7, 11, 684 }, { 7, 11, 1043 }, { 7, 11, 1072 },
+ { 8, 11, 280 }, { 8, 11, 541 }, { 8, 11, 686 }, { 10, 11, 519 },
+ { 11, 11, 252 }, { 12, 11, 282 }, { 8, 0, 187 }, { 8, 0, 8 },
+ { 10, 0, 0 }, { 10, 0, 818 }, { 11, 0, 988 }, { 4, 11, 359 },
+ { 11, 0, 429 }, { 15, 0, 51 }, { 7, 10, 1672 }, { 8, 0, 685 },
+ { 5, 11, 211 }, { 7, 11, 88 }, { 8, 11, 627 }, { 6, 0, 472 },
+ { 8, 0, 132 }, { 6, 11, 145 }, { 13, 11, 336 }, { 4, 10, 751 },
+ { 11, 10, 390 }, { 12, 10, 32 }, { 6, 0, 938 }, { 6, 0, 1060 },
+ { 4, 11, 263 }, { 4, 10, 409 }, { 5, 10, 78 }, { 9, 0, 874 },
+ { 8, 0, 774 }, { 10, 0, 670 }, { 12, 0, 51 }, { 4, 11, 916 },
+ { 6, 10, 473 }, { 7, 10, 1602 }, { 10, 10, 698 }, { 12, 10, 212 },
+ { 13, 10, 307 }, { 17, 10, 105 }, { 18, 0, 92 }, { 15, 10, 156 },
+ { 4, 0, 830 }, { 9, 0, 701 }, { 4, 11, 599 }, { 6, 11, 1634 },
+ { 7, 11, 5 }, { 7, 11, 55 }, { 7, 11, 67 }, { 7, 11, 97 },
+ { 7, 11, 691 }, { 7, 11, 979 }, { 7, 11, 1697 }, { 8, 11, 207 },
+ { 8, 11, 214 }, { 8, 11, 231 }, { 8, 11, 294 }, { 8, 11, 336 },
+ { 8, 11, 428 }, { 8, 11, 451 }, { 8, 11, 460 }, { 8, 11, 471 },
+ { 8, 11, 622 }, { 8, 11, 626 }, { 8, 11, 679 }, { 8, 11, 759 },
+ { 8, 11, 829 }, { 9, 11, 11 }, { 9, 11, 246 }, { 9, 11, 484 },
+ { 9, 11, 573 }, { 9, 11, 706 }, { 9, 11, 762 }, { 9, 11, 798 },
+ { 9, 11, 855 }, { 9, 11, 870 }, { 9, 11, 912 }, { 10, 11, 303 },
+ { 10, 11, 335 }, { 10, 11, 424 }, { 10, 11, 461 }, { 10, 11, 543 },
+ { 10, 11, 759 }, { 10, 11, 814 }, { 11, 11, 59 }, { 11, 11, 199 },
+ { 11, 11, 235 }, { 11, 11, 475 }, { 11, 11, 590 }, { 11, 11, 929 },
+ { 11, 11, 963 }, { 12, 11, 114 }, { 12, 11, 182 }, { 12, 11, 226 },
+ { 12, 11, 332 }, { 12, 11, 439 }, { 12, 11, 575 }, { 12, 11, 598 },
+ { 13, 11, 8 }, { 13, 11, 125 }, { 13, 11, 194 }, { 13, 11, 287 },
+ { 14, 11, 197 }, { 14, 11, 383 }, { 15, 11, 53 }, { 17, 11, 63 },
+ { 19, 11, 46 }, { 19, 11, 98 }, { 19, 11, 106 }, { 20, 11, 85 },
+ { 4, 0, 127 }, { 5, 0, 350 }, { 6, 0, 356 }, { 8, 0, 426 },
+ { 9, 0, 572 }, { 10, 0, 247 }, { 11, 0, 312 }, { 6, 0, 1215 },
+ { 6, 0, 59 }, { 9, 0, 603 }, { 13, 0, 397 }, { 7, 11, 1853 },
+ { 10, 11, 437 }, { 6, 0, 1762 }, { 19, 11, 126 }, { 7, 10, 883 },
+ { 13, 0, 293 }, { 14, 0, 56 }, { 5, 10, 617 }, { 11, 10, 50 },
+ { 5, 11, 187 }, { 7, 10, 1518 }, { 11, 10, 694 }, { 7, 0, 441 },
+ { 6, 0, 111 }, { 7, 0, 4 }, { 8, 0, 163 }, { 8, 0, 776 },
+ { 10, 0, 566 }, { 4, 0, 806 }, { 4, 11, 215 }, { 9, 11, 38 },
+ { 10, 11, 3 }, { 11, 11, 23 }, { 11, 11, 127 }, { 11, 11, 796 },
+ { 14, 0, 233 }, { 4, 10, 546 }, { 7, 10, 2042 }, { 7, 0, 1994 },
+ { 6, 0, 1739 }, { 7, 11, 1530 }, { 8, 0, 393 }, { 5, 0, 297 },
+ { 7, 0, 1038 }, { 14, 0, 359 }, { 19, 0, 52 }, { 20, 0, 47 },
+ { 7, 0, 309 }, { 4, 10, 313 }, { 5, 10, 577 }, { 8, 10, 184 },
+ { 13, 10, 433 }, { 7, 10, 935 }, { 12, 10, 186 }, { 12, 10, 292 },
+ { 14, 10, 100 }, { 18, 10, 70 }, { 8, 0, 363 }, { 14, 0, 175 },
+ { 11, 10, 402 }, { 12, 10, 109 }, { 12, 10, 431 }, { 13, 10, 179 },
+ { 13, 10, 206 }, { 14, 10, 217 }, { 16, 10, 3 }, { 20, 10, 53 },
+ { 5, 10, 886 }, { 6, 10, 46 }, { 6, 10, 1790 }, { 7, 10, 14 },
+ { 7, 10, 732 }, { 7, 10, 1654 }, { 8, 10, 95 }, { 8, 10, 327 },
+ { 8, 10, 616 }, { 9, 10, 892 }, { 10, 10, 598 }, { 10, 10, 769 },
+ { 11, 10, 134 }, { 11, 10, 747 }, { 12, 10, 378 }, { 14, 10, 97 },
+ { 8, 0, 666 }, { 7, 0, 1675 }, { 6, 0, 655 }, { 6, 0, 1600 },
+ { 7, 0, 808 }, { 5, 10, 1021 }, { 4, 11, 28 }, { 5, 11, 440 },
+ { 7, 11, 248 }, { 11, 11, 833 }, { 12, 11, 344 }, { 6, 11, 1654 },
+ { 4, 0, 280 }, { 12, 0, 54 }, { 4, 0, 421 }, { 5, 0, 548 },
+ { 4, 10, 153 }, { 6, 11, 339 }, { 7, 11, 923 }, { 5, 11, 853 },
+ { 5, 10, 798 }, { 4, 10, 587 }, { 6, 11, 249 }, { 7, 11, 1234 },
+ { 11, 11, 573 }, { 6, 10, 598 }, { 7, 10, 42 }, { 8, 10, 695 },
+ { 10, 10, 212 }, { 11, 10, 158 }, { 14, 10, 196 }, { 17, 10, 85 },
+ { 7, 0, 249 }, { 5, 10, 957 }, { 5, 10, 1008 }, { 4, 10, 129 },
+ { 7, 10, 465 }, { 6, 0, 254 }, { 7, 0, 842 }, { 7, 0, 1659 },
+ { 9, 0, 109 }, { 10, 0, 103 }, { 7, 10, 908 }, { 7, 10, 1201 },
+ { 9, 10, 755 }, { 11, 10, 906 }, { 12, 10, 527 }, { 18, 10, 7 },
+ { 5, 0, 262 }, { 8, 10, 450 }, { 16, 0, 1 }, { 10, 11, 201 },
+ { 14, 11, 319 }, { 7, 11, 49 }, { 7, 11, 392 }, { 8, 11, 20 },
+ { 8, 11, 172 }, { 8, 11, 690 }, { 9, 11, 383 }, { 9, 11, 845 },
+ { 10, 11, 48 }, { 11, 11, 293 }, { 11, 11, 832 }, { 11, 11, 920 },
+ { 13, 11, 221 }, { 5, 11, 858 }, { 5, 11, 992 }, { 6, 0, 805 },
+ { 11, 10, 1003 }, { 6, 0, 1630 }, { 6, 11, 307 }, { 7, 11, 1512 },
+ { 7, 11, 1794 }, { 6, 11, 268 }, { 9, 11, 62 }, { 7, 10, 1868 },
+ { 5, 0, 671 }, { 4, 0, 989 }, { 8, 0, 972 }, { 8, 0, 998 },
+ { 4, 11, 423 }, { 4, 0, 889 }, { 7, 0, 1382 }, { 7, 0, 1910 },
+ { 7, 10, 965 }, { 7, 10, 1460 }, { 7, 10, 1604 }, { 4, 0, 627 },
+ { 5, 0, 775 }, { 10, 11, 106 }, { 6, 11, 348 }, { 7, 0, 202 },
+ { 11, 0, 362 }, { 11, 0, 948 }, { 12, 0, 388 }, { 10, 11, 771 },
+ { 6, 11, 613 }, { 8, 11, 223 }, { 6, 0, 560 }, { 7, 0, 451 },
+ { 8, 0, 389 }, { 12, 0, 490 }, { 13, 0, 16 }, { 13, 0, 215 },
+ { 13, 0, 351 }, { 18, 0, 132 }, { 19, 0, 125 }, { 7, 0, 841 },
+ { 8, 0, 566 }, { 8, 0, 938 }, { 4, 11, 670 }, { 5, 0, 912 },
+ { 6, 0, 1695 }, { 12, 11, 55 }, { 9, 11, 40 }, { 11, 11, 136 },
+ { 7, 0, 1361 }, { 7, 10, 982 }, { 10, 10, 32 }, { 15, 10, 56 },
+ { 11, 11, 259 }, { 12, 11, 270 }, { 5, 0, 236 }, { 6, 0, 572 },
+ { 8, 0, 492 }, { 11, 0, 618 }, { 16, 0, 56 }, { 8, 11, 572 },
+ { 9, 11, 310 }, { 9, 11, 682 }, { 9, 11, 698 }, { 6, 0, 1854 },
+ { 5, 0, 190 }, { 8, 0, 318 }, { 5, 10, 435 }, { 7, 0, 1376 },
+ { 4, 11, 296 }, { 6, 11, 352 }, { 7, 11, 401 }, { 7, 11, 1410 },
+ { 7, 11, 1594 }, { 7, 11, 1674 }, { 8, 11, 63 }, { 8, 11, 660 },
+ { 9, 11, 74 }, { 7, 0, 349 }, { 5, 10, 85 }, { 6, 10, 419 },
+ { 7, 10, 305 }, { 7, 10, 361 }, { 7, 10, 1337 }, { 8, 10, 71 },
+ { 12, 10, 519 }, { 4, 11, 139 }, { 4, 11, 388 }, { 12, 11, 188 },
+ { 6, 0, 1972 }, { 6, 0, 2013 }, { 8, 0, 951 }, { 10, 0, 947 },
+ { 10, 0, 974 }, { 10, 0, 1018 }, { 14, 0, 476 }, { 12, 10, 688 },
+ { 7, 10, 740 }, { 5, 10, 691 }, { 7, 10, 345 }, { 9, 10, 94 },
+ { 12, 10, 169 }, { 9, 0, 344 }, { 5, 10, 183 }, { 6, 10, 582 },
+ { 10, 10, 679 }, { 12, 10, 435 }, { 7, 10, 511 }, { 4, 0, 850 },
+ { 8, 11, 441 }, { 10, 11, 314 }, { 15, 11, 3 }, { 7, 10, 1993 },
+ { 8, 10, 684 }, { 4, 11, 747 }, { 6, 11, 290 }, { 6, 10, 583 },
+ { 7, 11, 649 }, { 7, 11, 1479 }, { 7, 11, 1583 }, { 5, 11, 232 },
+ { 5, 10, 704 }, { 6, 0, 910 }, { 4, 10, 179 }, { 5, 10, 198 },
+ { 5, 10, 697 }, { 7, 10, 347 }, { 7, 10, 971 }, { 8, 10, 181 },
+ { 10, 10, 711 }, { 8, 11, 525 }, { 14, 0, 19 }, { 14, 0, 28 },
+ { 16, 0, 29 }, { 7, 0, 85 }, { 7, 0, 247 }, { 8, 0, 585 },
+ { 10, 0, 163 }, { 4, 0, 487 }, { 7, 11, 472 }, { 7, 11, 1801 },
+ { 10, 11, 748 }, { 13, 11, 458 }, { 4, 10, 243 }, { 5, 10, 203 },
+ { 7, 10, 19 }, { 7, 10, 71 }, { 7, 10, 113 }, { 10, 10, 405 },
+ { 11, 10, 357 }, { 14, 10, 240 }, { 7, 10, 1450 }, { 11, 10, 99 },
+ { 4, 11, 425 }, { 10, 0, 145 }, { 19, 0, 83 }, { 6, 10, 492 },
+ { 9, 11, 247 }, { 4, 0, 1013 }, { 6, 0, 2033 }, { 5, 10, 134 },
+ { 6, 10, 408 }, { 6, 10, 495 }, { 7, 10, 1593 }, { 7, 0, 1922 },
+ { 6, 11, 1768 }, { 4, 0, 124 }, { 10, 0, 457 }, { 11, 0, 121 },
+ { 11, 0, 169 }, { 11, 0, 870 }, { 11, 0, 874 }, { 12, 0, 214 },
+ { 14, 0, 187 }, { 15, 0, 77 }, { 5, 0, 557 }, { 7, 0, 1457 },
+ { 11, 0, 66 }, { 5, 11, 943 }, { 6, 11, 1779 }, { 14, 10, 4 },
+ { 4, 10, 248 }, { 4, 10, 665 }, { 7, 10, 137 }, { 9, 10, 349 },
+ { 7, 0, 1193 }, { 5, 11, 245 }, { 6, 11, 576 }, { 7, 11, 582 },
+ { 8, 11, 225 }, { 16, 0, 82 }, { 7, 10, 1270 }, { 11, 10, 612 },
+ { 5, 0, 454 }, { 10, 0, 352 }, { 10, 11, 352 }, { 18, 0, 57 },
+ { 5, 10, 371 }, { 7, 10, 563 }, { 7, 0, 1333 }, { 6, 0, 107 },
+ { 7, 0, 638 }, { 7, 0, 1632 }, { 9, 0, 396 }, { 6, 11, 610 },
+ { 5, 0, 370 }, { 6, 0, 1756 }, { 4, 10, 374 }, { 7, 10, 547 },
+ { 7, 10, 1700 }, { 7, 10, 1833 }, { 11, 10, 858 }, { 5, 0, 204 },
+ { 6, 0, 1305 }, { 9, 10, 311 }, { 13, 10, 42 }, { 5, 0, 970 },
+ { 6, 0, 1706 }, { 6, 10, 1647 }, { 7, 10, 1552 }, { 7, 10, 2010 },
+ { 9, 10, 494 }, { 9, 10, 509 }, { 13, 11, 455 }, { 15, 11, 99 },
+ { 15, 11, 129 }, { 16, 11, 68 }, { 7, 0, 3 }, { 4, 0, 35 },
+ { 5, 0, 121 }, { 5, 0, 483 }, { 5, 0, 685 }, { 6, 0, 489 },
+ { 6, 0, 782 }, { 6, 0, 1032 }, { 7, 0, 1204 }, { 8, 0, 394 },
+ { 4, 0, 921 }, { 5, 0, 1007 }, { 8, 11, 360 }, { 10, 11, 63 },
+ { 7, 0, 1696 }, { 6, 0, 1519 }, { 4, 11, 443 }, { 7, 11, 944 },
+ { 6, 10, 123 }, { 7, 10, 214 }, { 9, 10, 728 }, { 10, 10, 157 },
+ { 11, 10, 346 }, { 11, 10, 662 }, { 15, 10, 106 }, { 9, 0, 981 },
+ { 7, 10, 1435 }, { 6, 0, 1072 }, { 4, 0, 712 }, { 6, 0, 1629 },
+ { 6, 0, 728 }, { 4, 11, 298 }, { 9, 11, 483 }, { 6, 0, 1177 },
+ { 6, 0, 1271 }, { 5, 11, 164 }, { 7, 11, 121 }, { 14, 11, 189 },
+ { 7, 0, 1608 }, { 4, 10, 707 }, { 5, 10, 588 }, { 6, 10, 393 },
+ { 13, 10, 106 }, { 18, 10, 49 }, { 19, 10, 41 }, { 23, 0, 16 },
+ { 23, 11, 16 }, { 6, 10, 211 }, { 7, 10, 1690 }, { 11, 10, 486 },
+ { 12, 10, 369 }, { 5, 0, 485 }, { 19, 11, 15 }, { 21, 11, 27 },
+ { 4, 11, 172 }, { 9, 11, 611 }, { 10, 11, 436 }, { 12, 11, 673 },
+ { 13, 11, 255 }, { 5, 11, 844 }, { 10, 11, 484 }, { 11, 11, 754 },
+ { 12, 11, 457 }, { 14, 11, 171 }, { 14, 11, 389 }, { 18, 11, 153 },
+ { 4, 0, 285 }, { 5, 0, 27 }, { 5, 0, 317 }, { 6, 0, 301 },
+ { 7, 0, 7 }, { 8, 0, 153 }, { 10, 0, 766 }, { 11, 0, 468 },
+ { 12, 0, 467 }, { 13, 0, 143 }, { 6, 0, 1462 }, { 9, 11, 263 },
+ { 10, 11, 147 }, { 10, 11, 492 }, { 5, 11, 537 }, { 6, 0, 1945 },
+ { 6, 0, 1986 }, { 6, 0, 1991 }, { 6, 0, 2038 }, { 6, 10, 219 },
+ { 9, 11, 842 }, { 14, 0, 52 }, { 17, 0, 50 }, { 5, 10, 582 },
+ { 6, 10, 1646 }, { 7, 10, 99 }, { 7, 10, 1962 }, { 7, 10, 1986 },
+ { 8, 10, 515 }, { 8, 10, 773 }, { 9, 10, 23 }, { 9, 10, 491 },
+ { 12, 10, 620 }, { 14, 10, 93 }, { 10, 11, 97 }, { 20, 0, 21 },
+ { 20, 0, 44 }, { 5, 10, 851 }, { 8, 0, 819 }, { 11, 0, 917 },
+ { 5, 11, 230 }, { 5, 11, 392 }, { 6, 11, 420 }, { 8, 10, 762 },
+ { 8, 10, 812 }, { 9, 11, 568 }, { 9, 10, 910 }, { 12, 11, 612 },
+ { 7, 0, 784 }, { 15, 0, 135 }, { 15, 11, 135 }, { 10, 0, 454 },
+ { 12, 0, 324 }, { 4, 11, 0 }, { 5, 11, 41 }, { 7, 11, 1459 },
+ { 7, 11, 1469 }, { 7, 11, 1618 }, { 7, 11, 1859 }, { 9, 11, 549 },
+ { 11, 11, 905 }, { 4, 10, 98 }, { 7, 10, 1365 }, { 9, 10, 422 },
+ { 9, 10, 670 }, { 10, 10, 775 }, { 11, 10, 210 }, { 13, 10, 26 },
+ { 13, 10, 457 }, { 13, 10, 476 }, { 6, 0, 1719 }, { 6, 0, 1735 },
+ { 7, 0, 2016 }, { 7, 0, 2020 }, { 8, 0, 837 }, { 9, 0, 852 },
+ { 5, 11, 696 }, { 7, 0, 852 }, { 4, 0, 952 }, { 6, 10, 1730 },
+ { 4, 11, 771 }, { 10, 0, 568 }, { 9, 0, 448 }, { 11, 0, 146 },
+ { 8, 0, 67 }, { 10, 0, 419 }, { 5, 11, 921 }, { 9, 10, 147 },
+ { 6, 0, 1826 }, { 10, 0, 657 }, { 14, 0, 297 }, { 14, 0, 361 },
+ { 6, 0, 666 }, { 6, 0, 767 }, { 6, 0, 1542 }, { 11, 0, 729 },
+ { 6, 11, 180 }, { 7, 11, 1137 }, { 8, 11, 751 }, { 11, 11, 805 },
+ { 4, 11, 183 }, { 7, 11, 271 }, { 11, 11, 824 }, { 11, 11, 952 },
+ { 13, 11, 278 }, { 13, 11, 339 }, { 13, 11, 482 }, { 14, 11, 424 },
+ { 20, 11, 99 }, { 4, 0, 669 }, { 5, 11, 477 }, { 5, 11, 596 },
+ { 6, 11, 505 }, { 7, 11, 1221 }, { 11, 11, 907 }, { 12, 11, 209 },
+ { 13, 11, 214 }, { 7, 11, 1215 }, { 5, 0, 402 }, { 6, 10, 30 },
+ { 11, 10, 56 }, { 11, 10, 305 }, { 7, 11, 564 }, { 14, 11, 168 },
+ { 11, 0, 152 }, { 7, 0, 912 }, { 7, 10, 1614 }, { 4, 10, 150 },
+ { 5, 10, 303 }, { 6, 10, 327 }, { 7, 0, 320 }, { 8, 0, 51 },
+ { 9, 0, 868 }, { 10, 0, 833 }, { 12, 0, 481 }, { 12, 0, 570 },
+ { 20, 0, 106 }, { 4, 0, 445 }, { 7, 11, 274 }, { 11, 11, 263 },
+ { 11, 11, 479 }, { 11, 11, 507 }, { 12, 11, 277 }, { 10, 0, 555 },
+ { 11, 0, 308 }, { 19, 0, 95 }, { 6, 11, 1645 }, { 8, 10, 192 },
+ { 10, 10, 78 }, { 13, 10, 359 }, { 7, 10, 786 }, { 6, 11, 92 },
+ { 6, 11, 188 }, { 7, 11, 1269 }, { 7, 11, 1524 }, { 7, 11, 1876 },
+ { 10, 11, 228 }, { 11, 11, 1020 }, { 4, 11, 459 }, { 5, 11, 966 },
+ { 11, 0, 386 }, { 6, 10, 1638 }, { 7, 10, 79 }, { 7, 10, 496 },
+ { 9, 10, 138 }, { 10, 10, 336 }, { 12, 10, 412 }, { 12, 10, 440 },
+ { 14, 10, 305 }, { 5, 0, 239 }, { 7, 0, 83 }, { 7, 0, 1990 },
+ { 8, 0, 130 }, { 11, 0, 720 }, { 10, 11, 709 }, { 4, 0, 143 },
+ { 5, 0, 550 }, { 5, 0, 752 }, { 5, 0, 123 }, { 6, 0, 530 },
+ { 7, 0, 348 }, { 7, 0, 1419 }, { 7, 0, 2024 }, { 6, 11, 18 },
+ { 7, 11, 179 }, { 7, 11, 721 }, { 7, 11, 932 }, { 8, 11, 548 },
+ { 8, 11, 757 }, { 9, 11, 54 }, { 9, 11, 65 }, { 9, 11, 532 },
+ { 9, 11, 844 }, { 10, 11, 113 }, { 10, 11, 117 }, { 10, 11, 236 },
+ { 10, 11, 315 }, { 10, 11, 430 }, { 10, 11, 798 }, { 11, 11, 153 },
+ { 11, 11, 351 }, { 11, 11, 375 }, { 12, 11, 78 }, { 12, 11, 151 },
+ { 12, 11, 392 }, { 14, 11, 248 }, { 15, 11, 23 }, { 7, 10, 204 },
+ { 7, 10, 415 }, { 8, 10, 42 }, { 10, 10, 85 }, { 11, 10, 564 },
+ { 6, 0, 958 }, { 5, 11, 965 }, { 4, 0, 210 }, { 7, 11, 1429 },
+ { 10, 11, 480 }, { 6, 11, 182 }, { 11, 11, 345 }, { 10, 11, 65 },
+ { 10, 11, 488 }, { 10, 11, 497 }, { 4, 10, 3 }, { 5, 10, 247 },
+ { 5, 10, 644 }, { 7, 10, 744 }, { 7, 10, 1207 }, { 7, 10, 1225 },
+ { 7, 10, 1909 }, { 18, 10, 147 }, { 4, 0, 430 }, { 5, 10, 285 },
+ { 9, 10, 67 }, { 13, 10, 473 }, { 15, 10, 82 }, { 16, 11, 16 },
+ { 7, 11, 1162 }, { 9, 11, 588 }, { 10, 11, 260 }, { 23, 10, 8 },
+ { 5, 0, 213 }, { 10, 0, 7 }, { 7, 0, 801 }, { 6, 11, 1786 },
+ { 7, 11, 308 }, { 6, 0, 936 }, { 6, 0, 1289 }, { 5, 0, 108 },
+ { 4, 0, 885 }, { 5, 0, 219 }, { 11, 0, 587 }, { 4, 0, 193 },
+ { 5, 0, 916 }, { 6, 0, 1041 }, { 7, 0, 364 }, { 10, 0, 398 },
+ { 10, 0, 726 }, { 11, 0, 317 }, { 11, 0, 626 }, { 12, 0, 142 },
+ { 12, 0, 288 }, { 12, 0, 678 }, { 13, 0, 313 }, { 15, 0, 113 },
+ { 18, 0, 114 }, { 7, 0, 1165 }, { 6, 0, 241 }, { 9, 0, 342 },
+ { 10, 0, 729 }, { 11, 0, 284 }, { 11, 0, 445 }, { 11, 0, 651 },
+ { 11, 0, 863 }, { 13, 0, 398 }, { 18, 0, 99 }, { 7, 0, 907 },
+ { 8, 0, 832 }, { 9, 0, 303 }, { 4, 10, 29 }, { 6, 10, 532 },
+ { 7, 10, 1628 }, { 7, 10, 1648 }, { 9, 10, 350 }, { 10, 10, 433 },
+ { 11, 10, 97 }, { 11, 10, 557 }, { 11, 10, 745 }, { 12, 10, 289 },
+ { 12, 10, 335 }, { 12, 10, 348 }, { 12, 10, 606 }, { 13, 10, 116 },
+ { 13, 10, 233 }, { 13, 10, 466 }, { 14, 10, 181 }, { 14, 10, 209 },
+ { 14, 10, 232 }, { 14, 10, 236 }, { 14, 10, 300 }, { 16, 10, 41 },
+ { 20, 10, 97 }, { 7, 11, 423 }, { 7, 10, 1692 }, { 8, 11, 588 },
+ { 6, 0, 931 }, { 6, 0, 1454 }, { 5, 10, 501 }, { 7, 10, 1704 },
+ { 9, 10, 553 }, { 11, 10, 520 }, { 12, 10, 557 }, { 13, 10, 249 },
+ { 8, 11, 287 }, { 4, 0, 562 }, { 9, 0, 254 }, { 11, 0, 879 },
+ { 4, 0, 786 }, { 14, 11, 32 }, { 18, 11, 85 }, { 20, 11, 2 },
+ { 24, 11, 16 }, { 7, 0, 1294 }, { 7, 11, 723 }, { 7, 11, 1135 },
+ { 6, 0, 216 }, { 7, 0, 901 }, { 7, 0, 1343 }, { 8, 0, 493 },
+ { 6, 11, 403 }, { 7, 11, 719 }, { 8, 11, 809 }, { 8, 11, 834 },
+ { 5, 11, 210 }, { 6, 11, 213 }, { 7, 11, 60 }, { 10, 11, 364 },
+ { 11, 11, 135 }, { 7, 0, 341 }, { 11, 0, 219 }, { 5, 11, 607 },
+ { 8, 11, 326 }, { 8, 11, 490 }, { 4, 11, 701 }, { 5, 11, 472 },
+ { 5, 11, 639 }, { 7, 11, 1249 }, { 9, 11, 758 }, { 11, 11, 896 },
+ { 7, 11, 380 }, { 7, 11, 1947 }, { 11, 0, 130 }, { 7, 0, 1734 },
+ { 10, 0, 115 }, { 11, 0, 420 }, { 12, 0, 154 }, { 13, 0, 404 },
+ { 14, 0, 346 }, { 15, 0, 54 }, { 6, 10, 129 }, { 4, 11, 386 },
+ { 7, 11, 41 }, { 8, 11, 405 }, { 9, 11, 497 }, { 11, 11, 110 },
+ { 11, 11, 360 }, { 15, 11, 37 }, { 16, 11, 84 }, { 13, 11, 282 },
+ { 5, 11, 46 }, { 7, 11, 1452 }, { 7, 11, 1480 }, { 8, 11, 634 },
+ { 12, 11, 472 }, { 4, 11, 524 }, { 8, 11, 810 }, { 10, 11, 238 },
+ { 13, 11, 33 }, { 5, 0, 604 }, { 5, 0, 1011 }, { 8, 0, 701 },
+ { 8, 0, 856 }, { 8, 0, 858 }, { 8, 0, 879 }, { 12, 0, 702 },
+ { 14, 0, 447 }, { 4, 0, 54 }, { 5, 0, 666 }, { 7, 0, 1039 },
+ { 7, 0, 1130 }, { 9, 0, 195 }, { 10, 0, 302 }, { 4, 10, 25 },
+ { 5, 10, 60 }, { 6, 10, 504 }, { 7, 10, 614 }, { 7, 10, 1155 },
+ { 12, 10, 0 }, { 7, 10, 1248 }, { 11, 10, 621 }, { 11, 10, 702 },
+ { 5, 11, 997 }, { 9, 10, 321 }, { 6, 0, 1669 }, { 6, 0, 1791 },
+ { 4, 10, 379 }, { 7, 10, 1397 }, { 10, 11, 372 }, { 5, 11, 782 },
+ { 5, 11, 829 }, { 6, 11, 1738 }, { 7, 0, 1228 }, { 4, 10, 118 },
+ { 6, 10, 274 }, { 6, 10, 361 }, { 7, 10, 75 }, { 13, 10, 441 },
+ { 4, 0, 623 }, { 9, 11, 279 }, { 10, 11, 407 }, { 14, 11, 84 },
+ { 22, 11, 18 }, { 9, 10, 841 }, { 7, 0, 798 }, { 12, 10, 693 },
+ { 5, 10, 314 }, { 6, 10, 221 }, { 7, 10, 419 }, { 10, 10, 650 },
+ { 11, 10, 396 }, { 12, 10, 156 }, { 13, 10, 369 }, { 14, 10, 333 },
+ { 17, 10, 47 }, { 7, 11, 1372 }, { 7, 0, 122 }, { 9, 0, 259 },
+ { 10, 0, 84 }, { 11, 0, 470 }, { 12, 0, 541 }, { 13, 0, 379 },
+ { 6, 0, 837 }, { 8, 0, 1013 }, { 4, 11, 78 }, { 5, 11, 96 },
+ { 5, 11, 182 }, { 7, 11, 1724 }, { 7, 11, 1825 }, { 10, 11, 394 },
+ { 10, 11, 471 }, { 11, 11, 532 }, { 14, 11, 340 }, { 17, 11, 88 },
+ { 6, 0, 577 }, { 7, 11, 1964 }, { 4, 10, 913 }, { 6, 0, 460 },
+ { 8, 0, 891 }, { 10, 0, 901 }, { 10, 0, 919 }, { 10, 0, 932 },
+ { 12, 0, 715 }, { 12, 0, 728 }, { 12, 0, 777 }, { 14, 0, 457 },
+ { 16, 0, 103 }, { 5, 0, 82 }, { 5, 0, 131 }, { 7, 0, 1755 },
+ { 8, 0, 31 }, { 9, 0, 168 }, { 9, 0, 764 }, { 11, 0, 869 },
+ { 8, 10, 475 }, { 6, 0, 605 }, { 5, 10, 1016 }, { 9, 11, 601 },
+ { 9, 11, 619 }, { 10, 11, 505 }, { 10, 11, 732 }, { 11, 11, 355 },
+ { 12, 11, 139 }, { 7, 10, 602 }, { 8, 10, 179 }, { 10, 10, 781 },
+ { 12, 10, 126 }, { 6, 0, 1246 }, { 6, 10, 329 }, { 10, 10, 111 },
+ { 6, 11, 215 }, { 7, 11, 1028 }, { 7, 11, 1473 }, { 7, 11, 1721 },
+ { 9, 11, 424 }, { 10, 11, 779 }, { 5, 0, 278 }, { 9, 0, 68 },
+ { 6, 0, 932 }, { 6, 0, 1084 }, { 16, 0, 86 }, { 4, 0, 163 },
+ { 5, 0, 201 }, { 5, 0, 307 }, { 5, 0, 310 }, { 6, 0, 335 },
+ { 7, 0, 284 }, { 7, 0, 1660 }, { 8, 0, 165 }, { 8, 0, 781 },
+ { 6, 0, 707 }, { 6, 0, 33 }, { 7, 0, 1244 }, { 5, 10, 821 },
+ { 6, 11, 67 }, { 6, 10, 1687 }, { 7, 11, 258 }, { 7, 11, 1630 },
+ { 9, 11, 354 }, { 9, 11, 675 }, { 10, 11, 830 }, { 14, 11, 80 },
+ { 17, 11, 80 }, { 6, 11, 141 }, { 7, 11, 225 }, { 9, 11, 59 },
+ { 9, 11, 607 }, { 10, 11, 312 }, { 11, 11, 687 }, { 12, 11, 555 },
+ { 13, 11, 373 }, { 13, 11, 494 }, { 20, 11, 58 }, { 6, 0, 1113 },
+ { 9, 0, 388 }, { 5, 10, 71 }, { 7, 10, 1407 }, { 9, 10, 704 },
+ { 10, 10, 261 }, { 10, 10, 619 }, { 11, 10, 547 }, { 11, 10, 619 },
+ { 15, 10, 157 }, { 7, 0, 1953 }, { 8, 0, 720 }, { 10, 0, 203 },
+ { 7, 10, 2008 }, { 9, 10, 337 }, { 10, 10, 517 }, { 6, 0, 326 },
+ { 7, 0, 677 }, { 9, 0, 425 }, { 11, 11, 81 }, { 7, 0, 1316 },
+ { 7, 0, 1412 }, { 7, 0, 1839 }, { 9, 0, 589 }, { 11, 0, 241 },
+ { 11, 0, 676 }, { 11, 0, 811 }, { 11, 0, 891 }, { 12, 0, 140 },
+ { 12, 0, 346 }, { 12, 0, 479 }, { 13, 0, 140 }, { 13, 0, 381 },
+ { 14, 0, 188 }, { 18, 0, 30 }, { 20, 0, 108 }, { 5, 0, 416 },
+ { 6, 10, 86 }, { 6, 10, 603 }, { 7, 10, 292 }, { 7, 10, 561 },
+ { 8, 10, 257 }, { 8, 10, 382 }, { 9, 10, 721 }, { 9, 10, 778 },
+ { 11, 10, 581 }, { 12, 10, 466 }, { 4, 10, 486 }, { 5, 10, 491 },
+ { 6, 0, 1300 }, { 4, 10, 72 }, { 7, 0, 847 }, { 6, 10, 265 },
+ { 7, 11, 430 }, { 11, 11, 46 }, { 5, 11, 602 }, { 6, 11, 106 },
+ { 7, 11, 1786 }, { 7, 11, 1821 }, { 7, 11, 2018 }, { 9, 11, 418 },
+ { 9, 11, 763 }, { 5, 0, 358 }, { 7, 0, 535 }, { 7, 0, 1184 },
+ { 10, 0, 662 }, { 13, 0, 212 }, { 13, 0, 304 }, { 13, 0, 333 },
+ { 17, 0, 98 }, { 5, 11, 65 }, { 6, 11, 416 }, { 7, 11, 1720 },
+ { 7, 11, 1924 }, { 8, 11, 677 }, { 10, 11, 109 }, { 11, 11, 14 },
+ { 11, 11, 70 }, { 11, 11, 569 }, { 11, 11, 735 }, { 15, 11, 153 },
+ { 20, 11, 80 }, { 6, 0, 1823 }, { 8, 0, 839 }, { 8, 0, 852 },
+ { 8, 0, 903 }, { 10, 0, 940 }, { 12, 0, 707 }, { 12, 0, 775 },
+ { 7, 11, 1229 }, { 6, 0, 1522 }, { 12, 0, 654 }, { 8, 11, 595 },
+ { 11, 0, 163 }, { 13, 0, 314 }, { 4, 0, 978 }, { 4, 0, 601 },
+ { 6, 0, 2035 }, { 9, 10, 234 }, { 5, 10, 815 }, { 6, 10, 1688 },
+ { 6, 10, 1755 }, { 5, 0, 946 }, { 8, 0, 434 }, { 6, 10, 197 },
+ { 8, 10, 205 }, { 7, 0, 411 }, { 7, 0, 590 }, { 8, 0, 631 },
+ { 9, 0, 323 }, { 10, 0, 355 }, { 11, 0, 491 }, { 12, 0, 143 },
+ { 12, 0, 402 }, { 13, 0, 73 }, { 14, 0, 408 }, { 15, 0, 107 },
+ { 18, 0, 71 }, { 7, 0, 1467 }, { 8, 0, 328 }, { 10, 0, 544 },
+ { 11, 0, 955 }, { 12, 0, 13 }, { 13, 0, 320 }, { 17, 0, 83 },
+ { 14, 0, 410 }, { 11, 0, 511 }, { 13, 0, 394 }, { 14, 0, 298 },
+ { 14, 0, 318 }, { 18, 0, 103 }, { 6, 10, 452 }, { 7, 10, 312 },
+ { 10, 10, 219 }, { 10, 10, 589 }, { 4, 10, 333 }, { 9, 10, 176 },
+ { 12, 10, 353 }, { 13, 10, 187 }, { 7, 11, 329 }, { 4, 11, 469 },
+ { 5, 0, 835 }, { 6, 0, 483 }, { 6, 11, 1743 }, { 5, 11, 929 },
+ { 6, 11, 340 }, { 8, 11, 376 }, { 8, 11, 807 }, { 6, 10, 1685 },
+ { 4, 0, 677 }, { 5, 11, 218 }, { 7, 11, 1610 }, { 10, 11, 83 },
+ { 5, 11, 571 }, { 7, 11, 1842 }, { 4, 11, 455 }, { 9, 0, 70 },
+ { 7, 0, 1405 }, { 7, 10, 135 }, { 8, 10, 7 }, { 8, 10, 62 },
+ { 9, 10, 243 }, { 10, 10, 658 }, { 10, 10, 697 }, { 11, 10, 456 },
+ { 11, 10, 756 }, { 9, 10, 395 }, { 10, 10, 79 }, { 9, 0, 108 },
+ { 6, 11, 161 }, { 7, 11, 372 }, { 9, 11, 597 }, { 4, 11, 349 },
+ { 4, 0, 777 }, { 4, 0, 331 }, { 7, 10, 631 }, { 5, 0, 747 },
+ { 6, 11, 432 }, { 6, 11, 608 }, { 11, 11, 322 }, { 10, 10, 835 },
+ { 5, 11, 468 }, { 7, 11, 1809 }, { 10, 11, 325 }, { 11, 11, 856 },
+ { 12, 11, 345 }, { 15, 11, 104 }, { 5, 11, 223 }, { 7, 10, 406 },
+ { 7, 10, 459 }, { 8, 10, 606 }, { 11, 10, 726 }, { 4, 11, 566 },
+ { 14, 0, 68 }, { 4, 11, 59 }, { 7, 11, 1394 }, { 6, 11, 436 },
+ { 11, 11, 481 }, { 4, 11, 48 }, { 5, 11, 271 }, { 7, 11, 953 },
+ { 11, 11, 170 }, { 5, 11, 610 }, { 8, 11, 457 }, { 5, 11, 755 },
+ { 7, 11, 1217 }, { 5, 10, 612 }, { 4, 11, 197 }, { 4, 0, 505 },
+ { 4, 10, 372 }, { 7, 10, 482 }, { 8, 10, 158 }, { 9, 10, 602 },
+ { 9, 10, 615 }, { 10, 10, 245 }, { 10, 10, 678 }, { 10, 10, 744 },
+ { 11, 10, 248 }, { 11, 10, 806 }, { 5, 0, 326 }, { 5, 10, 854 },
+ { 7, 10, 1991 }, { 4, 0, 691 }, { 18, 0, 16 }, { 6, 0, 628 },
+ { 9, 0, 35 }, { 10, 0, 680 }, { 10, 0, 793 }, { 11, 0, 364 },
+ { 13, 0, 357 }, { 15, 0, 164 }, { 10, 0, 654 }, { 6, 0, 32 },
+ { 7, 0, 385 }, { 7, 0, 757 }, { 7, 0, 1916 }, { 8, 0, 37 },
+ { 8, 0, 94 }, { 8, 0, 711 }, { 9, 0, 541 }, { 10, 0, 162 },
+ { 10, 0, 795 }, { 11, 0, 989 }, { 11, 0, 1010 }, { 12, 0, 14 },
+ { 14, 0, 308 }, { 5, 11, 217 }, { 6, 0, 152 }, { 6, 0, 349 },
+ { 6, 0, 1682 }, { 7, 0, 1252 }, { 8, 0, 112 }, { 9, 0, 435 },
+ { 9, 0, 668 }, { 10, 0, 290 }, { 10, 0, 319 }, { 10, 0, 815 },
+ { 11, 0, 180 }, { 11, 0, 837 }, { 12, 0, 240 }, { 13, 0, 152 },
+ { 13, 0, 219 }, { 14, 0, 158 }, { 4, 0, 581 }, { 6, 0, 726 },
+ { 5, 10, 195 }, { 7, 10, 1685 }, { 6, 0, 126 }, { 7, 0, 573 },
+ { 8, 0, 397 }, { 14, 0, 44 }, { 10, 0, 89 }, { 7, 10, 1997 },
+ { 8, 10, 730 }, { 11, 10, 1006 }, { 6, 0, 1531 }, { 6, 0, 1167 },
+ { 5, 0, 926 }, { 12, 0, 203 }, { 5, 10, 751 }, { 4, 11, 165 },
+ { 7, 11, 1398 }, { 7, 11, 1829 }, { 7, 0, 1232 }, { 9, 0, 531 },
+ { 7, 10, 821 }, { 6, 0, 943 }, { 5, 0, 670 }, { 4, 0, 880 },
+ { 11, 0, 231 }, { 6, 0, 1617 }, { 7, 0, 1957 }, { 5, 11, 9 },
+ { 7, 11, 297 }, { 7, 11, 966 }, { 12, 11, 306 }, { 6, 0, 975 },
+ { 6, 0, 985 }, { 5, 10, 950 }, { 5, 10, 994 }, { 6, 10, 351 },
+ { 12, 11, 21 }, { 23, 11, 7 }, { 5, 11, 146 }, { 6, 11, 411 },
+ { 10, 11, 721 }, { 7, 0, 242 }, { 7, 0, 1942 }, { 6, 11, 177 },
+ { 7, 11, 467 }, { 5, 0, 421 }, { 7, 10, 47 }, { 9, 10, 684 },
+ { 5, 0, 834 }, { 7, 0, 1202 }, { 8, 0, 14 }, { 9, 0, 481 },
+ { 9, 0, 880 }, { 10, 0, 465 }, { 6, 0, 688 }, { 9, 0, 834 },
+ { 4, 10, 350 }, { 4, 0, 855 }, { 4, 0, 357 }, { 6, 0, 172 },
+ { 7, 0, 143 }, { 9, 0, 413 }, { 5, 11, 200 }, { 4, 0, 590 },
+ { 7, 10, 1812 }, { 13, 10, 259 }, { 13, 10, 356 }, { 14, 10, 242 },
+ { 19, 10, 114 }, { 5, 10, 967 }, { 11, 0, 114 }, { 4, 10, 473 },
+ { 7, 10, 623 }, { 8, 10, 808 }, { 9, 10, 871 }, { 9, 10, 893 },
+ { 11, 10, 431 }, { 12, 10, 112 }, { 12, 10, 217 }, { 12, 10, 243 },
+ { 12, 10, 562 }, { 12, 10, 663 }, { 12, 10, 683 }, { 13, 10, 141 },
+ { 13, 10, 197 }, { 13, 10, 227 }, { 13, 10, 406 }, { 13, 10, 487 },
+ { 14, 10, 156 }, { 14, 10, 203 }, { 14, 10, 224 }, { 14, 10, 256 },
+ { 18, 10, 58 }, { 22, 10, 0 }, { 10, 10, 286 }, { 4, 10, 222 },
+ { 7, 10, 286 }, { 8, 10, 629 }, { 5, 0, 169 }, { 7, 0, 333 },
+ { 8, 0, 45 }, { 6, 11, 481 }, { 4, 0, 198 }, { 4, 0, 24 },
+ { 5, 0, 140 }, { 5, 0, 185 }, { 7, 0, 1500 }, { 11, 0, 565 },
+ { 11, 0, 838 }, { 4, 11, 84 }, { 7, 11, 1482 }, { 10, 11, 76 },
+ { 10, 11, 142 }, { 5, 0, 585 }, { 13, 10, 306 }, { 5, 11, 1015 },
+ { 4, 11, 315 }, { 5, 11, 507 }, { 7, 11, 1370 }, { 8, 10, 146 },
+ { 6, 0, 691 }, { 6, 0, 1503 }, { 4, 0, 334 }, { 5, 0, 593 },
+ { 4, 10, 465 }, { 7, 10, 1663 }, { 14, 11, 173 }, { 7, 0, 913 },
+ { 12, 0, 116 }, { 6, 11, 1722 }, { 6, 0, 1360 }, { 4, 0, 802 },
+ { 8, 11, 222 }, { 8, 11, 476 }, { 9, 11, 238 }, { 11, 11, 516 },
+ { 11, 11, 575 }, { 15, 11, 109 }, { 18, 11, 100 }, { 6, 0, 308 },
+ { 9, 0, 673 }, { 7, 10, 138 }, { 7, 10, 517 }, { 11, 10, 238 },
+ { 4, 0, 709 }, { 6, 0, 1876 }, { 6, 0, 1895 }, { 9, 0, 994 },
+ { 9, 0, 1006 }, { 12, 0, 829 }, { 12, 0, 888 }, { 12, 0, 891 },
+ { 18, 0, 185 }, { 20, 10, 94 }, { 4, 0, 228 }, { 5, 0, 897 },
+ { 7, 0, 1840 }, { 5, 10, 495 }, { 7, 10, 834 }, { 9, 10, 733 },
+ { 11, 10, 378 }, { 5, 10, 559 }, { 6, 10, 21 }, { 6, 10, 1737 },
+ { 7, 10, 1444 }, { 8, 10, 224 }, { 4, 0, 608 }, { 5, 0, 497 },
+ { 6, 11, 40 }, { 7, 11, 1781 }, { 6, 0, 1573 }, { 7, 0, 2039 },
+ { 6, 0, 540 }, { 8, 0, 136 }, { 4, 0, 897 }, { 5, 0, 786 },
+ { 5, 10, 519 }, { 6, 0, 1878 }, { 6, 0, 1884 }, { 9, 0, 938 },
+ { 9, 0, 948 }, { 9, 0, 955 }, { 9, 0, 973 }, { 9, 0, 1012 },
+ { 12, 0, 895 }, { 12, 0, 927 }, { 15, 0, 254 }, { 6, 0, 1469 },
+ { 5, 0, 999 }, { 4, 0, 299 }, { 7, 0, 1004 }, { 4, 0, 745 },
+ { 5, 0, 578 }, { 8, 11, 574 }, { 5, 0, 456 }, { 6, 0, 1457 },
+ { 7, 0, 1679 }, { 4, 10, 402 }, { 7, 0, 693 }, { 8, 0, 180 },
+ { 12, 0, 163 }, { 8, 10, 323 }, { 8, 10, 479 }, { 11, 10, 580 },
+ { 14, 10, 201 }, { 5, 10, 59 }, { 7, 10, 672 }, { 4, 11, 354 },
+ { 18, 10, 34 }, { 4, 0, 755 }, { 7, 11, 1558 }, { 7, 0, 1740 },
+ { 18, 0, 48 }, { 4, 10, 85 }, { 7, 10, 549 }, { 11, 0, 338 },
+ { 5, 10, 94 }, { 6, 0, 1091 }, { 7, 11, 469 }, { 12, 0, 695 },
+ { 12, 0, 704 }, { 20, 0, 113 }, { 5, 11, 830 }, { 14, 11, 338 },
+ { 20, 11, 81 }, { 7, 0, 1464 }, { 6, 10, 11 }, { 7, 10, 187 },
+ { 7, 0, 975 }, { 13, 0, 335 }, { 4, 10, 522 }, { 6, 0, 1979 },
+ { 5, 11, 496 }, { 7, 11, 203 }, { 4, 10, 52 }, { 7, 10, 661 },
+ { 7, 0, 1566 }, { 8, 0, 269 }, { 9, 0, 212 }, { 9, 0, 718 },
+ { 14, 0, 15 }, { 14, 0, 132 }, { 14, 0, 227 }, { 4, 0, 890 },
+ { 5, 0, 805 }, { 5, 0, 819 }, { 5, 0, 961 }, { 6, 0, 396 },
+ { 6, 0, 1631 }, { 6, 0, 1678 }, { 7, 0, 1967 }, { 7, 0, 2041 },
+ { 9, 0, 630 }, { 11, 0, 8 }, { 11, 0, 1019 }, { 12, 0, 176 },
+ { 13, 0, 225 }, { 14, 0, 292 }, { 21, 0, 24 }, { 4, 10, 383 },
+ { 5, 10, 520 }, { 6, 11, 547 }, { 7, 11, 1748 }, { 5, 11, 88 },
+ { 9, 11, 239 }, { 18, 11, 128 }, { 7, 11, 650 }, { 7, 11, 1310 },
+ { 4, 10, 281 }, { 5, 10, 38 }, { 7, 10, 194 }, { 7, 10, 668 },
+ { 7, 10, 1893 }, { 9, 10, 397 }, { 7, 0, 1815 }, { 9, 10, 635 },
+ { 11, 10, 559 }, { 7, 0, 1505 }, { 10, 0, 190 }, { 10, 0, 634 },
+ { 11, 0, 792 }, { 12, 0, 358 }, { 12, 0, 447 }, { 5, 0, 0 },
+ { 6, 0, 536 }, { 7, 0, 604 }, { 13, 0, 445 }, { 17, 0, 126 },
+ { 7, 11, 1076 }, { 9, 11, 80 }, { 11, 11, 78 }, { 11, 11, 421 },
+ { 11, 11, 534 }, { 12, 11, 545 }, { 8, 0, 966 }, { 10, 0, 1023 },
+ { 14, 11, 369 }, { 18, 11, 72 }, { 7, 11, 1641 }, { 6, 0, 232 },
+ { 6, 0, 412 }, { 7, 0, 1074 }, { 8, 0, 9 }, { 8, 0, 157 },
+ { 8, 0, 786 }, { 9, 0, 196 }, { 9, 0, 352 }, { 9, 0, 457 },
+ { 10, 0, 337 }, { 11, 0, 232 }, { 11, 0, 877 }, { 12, 0, 480 },
+ { 12, 0, 546 }, { 7, 0, 958 }, { 4, 0, 382 }, { 8, 0, 579 },
+ { 4, 0, 212 }, { 7, 0, 1206 }, { 4, 11, 497 }, { 5, 11, 657 },
+ { 7, 11, 1584 }, { 4, 0, 681 }, { 8, 0, 971 }, { 10, 0, 965 },
+ { 5, 10, 448 }, { 8, 10, 535 }, { 14, 0, 16 }, { 18, 0, 44 },
+ { 11, 0, 584 }, { 11, 0, 616 }, { 14, 0, 275 }, { 11, 11, 584 },
+ { 11, 11, 616 }, { 14, 11, 275 }, { 8, 11, 13 }, { 7, 10, 610 },
+ { 7, 10, 1501 }, { 7, 11, 642 }, { 8, 11, 250 }, { 11, 11, 123 },
+ { 11, 11, 137 }, { 13, 11, 48 }, { 14, 11, 95 }, { 5, 0, 655 },
+ { 17, 0, 67 }, { 19, 0, 74 }, { 6, 0, 751 }, { 6, 0, 1967 },
+ { 6, 0, 231 }, { 8, 0, 423 }, { 5, 0, 300 }, { 10, 0, 1016 },
+ { 4, 10, 319 }, { 5, 10, 699 }, { 10, 10, 673 }, { 6, 0, 237 },
+ { 7, 0, 611 }, { 8, 0, 100 }, { 9, 0, 416 }, { 11, 0, 335 },
+ { 12, 0, 173 }, { 18, 0, 101 }, { 6, 10, 336 }, { 8, 10, 552 },
+ { 9, 10, 285 }, { 10, 10, 99 }, { 11, 10, 568 }, { 6, 0, 1370 },
+ { 7, 10, 1406 }, { 9, 10, 218 }, { 13, 10, 222 }, { 5, 10, 256 },
+ { 7, 0, 1208 }, { 14, 11, 213 }, { 20, 11, 38 }, { 6, 0, 1219 },
+ { 7, 11, 1642 }, { 13, 0, 417 }, { 14, 0, 129 }, { 15, 0, 15 },
+ { 10, 11, 545 }, { 12, 11, 301 }, { 17, 10, 39 }, { 20, 10, 36 },
+ { 5, 0, 199 }, { 4, 11, 904 }, { 5, 11, 794 }, { 12, 0, 427 },
+ { 18, 0, 38 }, { 6, 0, 949 }, { 8, 0, 665 }, { 7, 10, 634 },
+ { 4, 10, 618 }, { 7, 10, 259 }, { 4, 10, 339 }, { 5, 11, 761 },
+ { 13, 10, 169 }, { 4, 10, 759 }, { 5, 0, 688 }, { 7, 0, 539 },
+ { 7, 0, 712 }, { 7, 11, 386 }, { 10, 11, 713 }, { 6, 0, 1186 },
+ { 6, 11, 7 }, { 6, 11, 35 }, { 7, 11, 147 }, { 7, 11, 1069 },
+ { 7, 11, 1568 }, { 7, 11, 1575 }, { 7, 11, 1917 }, { 8, 11, 43 },
+ { 8, 11, 208 }, { 9, 11, 128 }, { 9, 11, 866 }, { 10, 11, 20 },
+ { 11, 11, 981 }, { 19, 11, 33 }, { 7, 11, 893 }, { 8, 10, 482 },
+ { 13, 11, 424 }, { 6, 0, 312 }, { 6, 0, 1715 }, { 10, 0, 584 },
+ { 11, 0, 546 }, { 11, 0, 692 }, { 12, 0, 259 }, { 12, 0, 295 },
+ { 13, 0, 46 }, { 13, 0, 154 }, { 5, 10, 336 }, { 6, 10, 341 },
+ { 6, 10, 478 }, { 6, 10, 1763 }, { 8, 10, 386 }, { 9, 0, 151 },
+ { 4, 0, 588 }, { 24, 0, 4 }, { 6, 11, 322 }, { 9, 11, 552 },
+ { 11, 11, 274 }, { 13, 11, 209 }, { 13, 11, 499 }, { 14, 11, 85 },
+ { 15, 11, 126 }, { 17, 11, 70 }, { 7, 10, 73 }, { 4, 0, 231 },
+ { 5, 0, 61 }, { 6, 0, 104 }, { 7, 0, 729 }, { 7, 0, 964 },
+ { 7, 0, 1658 }, { 12, 0, 414 }, { 6, 0, 263 }, { 10, 0, 757 },
+ { 7, 10, 1971 }, { 4, 0, 612 }, { 5, 0, 561 }, { 4, 0, 320 },
+ { 7, 10, 1344 }, { 8, 11, 83 }, { 8, 11, 817 }, { 9, 11, 28 },
+ { 9, 11, 29 }, { 9, 11, 885 }, { 10, 11, 387 }, { 11, 11, 633 },
+ { 11, 11, 740 }, { 13, 11, 235 }, { 13, 11, 254 }, { 15, 11, 143 },
+ { 15, 11, 146 }, { 5, 10, 396 }, { 6, 10, 501 }, { 12, 11, 49 },
+ { 4, 0, 225 }, { 4, 10, 929 }, { 5, 10, 799 }, { 8, 10, 46 },
+ { 8, 10, 740 }, { 4, 0, 405 }, { 7, 0, 817 }, { 14, 0, 58 },
+ { 17, 0, 37 }, { 18, 0, 124 }, { 5, 0, 974 }, { 4, 11, 412 },
+ { 5, 11, 581 }, { 4, 10, 892 }, { 5, 10, 770 }, { 4, 0, 996 },
+ { 6, 0, 2026 }, { 4, 0, 527 }, { 5, 0, 235 }, { 7, 0, 1239 },
+ { 11, 0, 131 }, { 12, 0, 370 }, { 9, 0, 16 }, { 13, 0, 386 },
+ { 7, 11, 421 }, { 7, 0, 956 }, { 7, 0, 1157 }, { 7, 0, 1506 },
+ { 7, 0, 1606 }, { 7, 0, 1615 }, { 7, 0, 1619 }, { 7, 0, 1736 },
+ { 7, 0, 1775 }, { 8, 0, 590 }, { 9, 0, 324 }, { 9, 0, 736 },
+ { 9, 0, 774 }, { 9, 0, 776 }, { 9, 0, 784 }, { 10, 0, 567 },
+ { 10, 0, 708 }, { 11, 0, 518 }, { 11, 0, 613 }, { 11, 0, 695 },
+ { 11, 0, 716 }, { 11, 0, 739 }, { 11, 0, 770 }, { 11, 0, 771 },
+ { 11, 0, 848 }, { 11, 0, 857 }, { 11, 0, 931 }, { 11, 0, 947 },
+ { 12, 0, 326 }, { 12, 0, 387 }, { 12, 0, 484 }, { 12, 0, 528 },
+ { 12, 0, 552 }, { 12, 0, 613 }, { 13, 0, 189 }, { 13, 0, 256 },
+ { 13, 0, 340 }, { 13, 0, 432 }, { 13, 0, 436 }, { 13, 0, 440 },
+ { 13, 0, 454 }, { 14, 0, 174 }, { 14, 0, 220 }, { 14, 0, 284 },
+ { 14, 0, 390 }, { 17, 0, 121 }, { 7, 10, 158 }, { 9, 0, 137 },
+ { 10, 0, 221 }, { 4, 11, 110 }, { 10, 11, 415 }, { 10, 11, 597 },
+ { 14, 11, 206 }, { 13, 11, 496 }, { 7, 11, 205 }, { 23, 10, 25 },
+ { 7, 11, 778 }, { 7, 11, 1656 }, { 7, 10, 2001 }, { 9, 11, 369 },
+ { 10, 11, 338 }, { 10, 11, 490 }, { 11, 11, 154 }, { 11, 11, 545 },
+ { 11, 11, 775 }, { 13, 11, 77 }, { 13, 11, 274 }, { 4, 11, 444 },
+ { 10, 11, 146 }, { 12, 11, 9 }, { 7, 0, 390 }, { 10, 0, 140 },
+ { 7, 0, 1144 }, { 6, 0, 464 }, { 7, 10, 1461 }, { 12, 10, 91 },
+ { 4, 10, 602 }, { 4, 11, 283 }, { 7, 11, 1194 }, { 5, 0, 407 },
+ { 11, 0, 204 }, { 11, 0, 243 }, { 11, 0, 489 }, { 12, 0, 293 },
+ { 19, 0, 37 }, { 20, 0, 73 }, { 22, 0, 38 }, { 7, 0, 1218 },
+ { 8, 0, 303 }, { 5, 0, 325 }, { 8, 0, 5 }, { 8, 0, 227 },
+ { 9, 0, 105 }, { 10, 0, 585 }, { 12, 0, 614 }, { 4, 10, 13 },
+ { 5, 10, 567 }, { 7, 10, 1498 }, { 9, 10, 124 }, { 11, 10, 521 },
+ { 12, 10, 405 }, { 7, 10, 1006 }, { 7, 0, 800 }, { 10, 0, 12 },
+ { 6, 11, 1720 }, { 7, 0, 1783 }, { 4, 10, 735 }, { 10, 10, 812 },
+ { 4, 10, 170 }, { 7, 10, 323 }, { 6, 0, 621 }, { 13, 0, 504 },
+ { 16, 0, 89 }, { 5, 10, 304 }, { 7, 10, 1403 }, { 9, 11, 216 },
+ { 6, 0, 920 }, { 6, 0, 1104 }, { 9, 11, 183 }, { 11, 11, 286 },
+ { 4, 0, 376 }, { 5, 10, 742 }, { 6, 0, 218 }, { 8, 0, 641 },
+ { 11, 0, 388 }, { 12, 0, 580 }, { 7, 0, 454 }, { 7, 0, 782 },
+ { 8, 0, 768 }, { 12, 0, 686 }, { 9, 11, 33 }, { 5, 10, 111 },
+ { 16, 0, 0 }, { 10, 0, 676 }, { 12, 0, 462 }, { 6, 0, 164 },
+ { 8, 11, 735 }, { 5, 10, 444 }, { 22, 0, 50 }, { 7, 11, 1862 },
+ { 12, 11, 491 }, { 12, 11, 520 }, { 13, 11, 383 }, { 14, 11, 244 },
+ { 18, 11, 12 }, { 5, 11, 132 }, { 9, 11, 486 }, { 9, 11, 715 },
+ { 10, 11, 458 }, { 11, 11, 373 }, { 11, 11, 668 }, { 11, 11, 795 },
+ { 11, 11, 897 }, { 12, 11, 272 }, { 12, 11, 424 }, { 12, 11, 539 },
+ { 12, 11, 558 }, { 14, 11, 245 }, { 14, 11, 263 }, { 14, 11, 264 },
+ { 14, 11, 393 }, { 14, 11, 403 }, { 8, 10, 123 }, { 15, 10, 6 },
+ { 16, 10, 7 }, { 6, 0, 285 }, { 8, 0, 654 }, { 11, 0, 749 },
+ { 12, 0, 190 }, { 12, 0, 327 }, { 13, 0, 120 }, { 13, 0, 121 },
+ { 13, 0, 327 }, { 15, 0, 47 }, { 18, 0, 40 }, { 5, 11, 8 },
+ { 6, 11, 89 }, { 6, 11, 400 }, { 7, 11, 1569 }, { 7, 11, 1623 },
+ { 7, 11, 1850 }, { 8, 11, 218 }, { 8, 11, 422 }, { 9, 11, 570 },
+ { 10, 11, 626 }, { 6, 11, 387 }, { 7, 11, 882 }, { 13, 11, 111 },
+ { 6, 0, 343 }, { 7, 0, 195 }, { 9, 0, 226 }, { 10, 0, 197 },
+ { 10, 0, 575 }, { 11, 0, 502 }, { 11, 0, 899 }, { 6, 11, 224 },
+ { 7, 11, 877 }, { 9, 11, 647 }, { 5, 10, 937 }, { 7, 10, 100 },
+ { 7, 11, 790 }, { 22, 0, 29 }, { 19, 0, 8 }, { 6, 0, 1812 },
+ { 21, 0, 8 }, { 7, 11, 394 }, { 7, 0, 1125 }, { 9, 0, 143 },
+ { 11, 0, 61 }, { 14, 0, 405 }, { 22, 0, 21 }, { 10, 11, 755 },
+ { 19, 11, 29 }, { 9, 11, 378 }, { 13, 11, 162 }, { 7, 10, 922 },
+ { 5, 10, 619 }, { 5, 10, 698 }, { 6, 0, 1327 }, { 6, 0, 1598 },
+ { 9, 0, 575 }, { 9, 11, 569 }, { 12, 11, 12 }, { 12, 11, 81 },
+ { 12, 11, 319 }, { 13, 11, 69 }, { 14, 11, 259 }, { 16, 11, 87 },
+ { 17, 11, 1 }, { 17, 11, 21 }, { 17, 11, 24 }, { 18, 11, 15 },
+ { 18, 11, 56 }, { 18, 11, 59 }, { 18, 11, 127 }, { 18, 11, 154 },
+ { 19, 11, 19 }, { 20, 11, 31 }, { 6, 0, 895 }, { 7, 11, 1231 },
+ { 5, 0, 959 }, { 7, 11, 124 }, { 8, 11, 38 }, { 5, 11, 261 },
+ { 7, 11, 78 }, { 7, 11, 199 }, { 8, 11, 815 }, { 9, 11, 126 },
+ { 10, 11, 342 }, { 5, 10, 917 }, { 6, 10, 1659 }, { 7, 0, 1759 },
+ { 5, 11, 595 }, { 7, 11, 1863 }, { 8, 0, 173 }, { 6, 0, 266 },
+ { 14, 0, 261 }, { 4, 11, 628 }, { 5, 10, 251 }, { 5, 10, 956 },
+ { 8, 10, 268 }, { 9, 10, 214 }, { 18, 10, 142 }, { 7, 11, 266 },
+ { 8, 11, 804 }, { 7, 11, 208 }, { 6, 11, 79 }, { 7, 11, 1021 },
+ { 7, 11, 1519 }, { 11, 11, 704 }, { 13, 11, 396 }, { 5, 10, 346 },
+ { 5, 10, 711 }, { 8, 10, 390 }, { 8, 11, 741 }, { 6, 11, 376 },
+ { 6, 0, 1427 }, { 6, 0, 1033 }, { 6, 0, 1217 }, { 8, 0, 300 },
+ { 5, 10, 624 }, { 6, 11, 100 }, { 7, 11, 244 }, { 7, 11, 632 },
+ { 7, 11, 1609 }, { 8, 11, 178 }, { 8, 11, 638 }, { 13, 11, 58 },
+ { 6, 0, 584 }, { 5, 10, 783 }, { 7, 10, 1998 }, { 7, 10, 2047 },
+ { 5, 0, 427 }, { 5, 0, 734 }, { 7, 0, 478 }, { 8, 0, 52 },
+ { 7, 0, 239 }, { 11, 0, 217 }, { 14, 0, 165 }, { 6, 0, 1129 },
+ { 6, 0, 168 }, { 6, 0, 1734 }, { 7, 0, 20 }, { 7, 0, 1056 },
+ { 8, 0, 732 }, { 9, 0, 406 }, { 9, 0, 911 }, { 10, 0, 694 },
+ { 4, 10, 594 }, { 5, 11, 791 }, { 7, 11, 686 }, { 8, 11, 33 },
+ { 8, 11, 238 }, { 10, 11, 616 }, { 11, 11, 467 }, { 11, 11, 881 },
+ { 13, 11, 217 }, { 13, 11, 253 }, { 14, 11, 268 }, { 9, 11, 476 },
+ { 6, 0, 418 }, { 5, 0, 613 }, { 4, 0, 632 }, { 4, 11, 447 },
+ { 7, 0, 32 }, { 7, 0, 984 }, { 8, 0, 85 }, { 8, 0, 709 },
+ { 9, 0, 579 }, { 9, 0, 847 }, { 9, 0, 856 }, { 10, 0, 799 },
+ { 11, 0, 258 }, { 11, 0, 1007 }, { 12, 0, 331 }, { 12, 0, 615 },
+ { 13, 0, 188 }, { 13, 0, 435 }, { 14, 0, 8 }, { 15, 0, 165 },
+ { 16, 0, 27 }, { 20, 0, 40 }, { 16, 11, 35 }, { 4, 11, 128 },
+ { 5, 11, 415 }, { 6, 11, 462 }, { 7, 11, 294 }, { 7, 11, 578 },
+ { 10, 11, 710 }, { 11, 11, 86 }, { 5, 0, 694 }, { 8, 0, 909 },
+ { 7, 0, 1109 }, { 11, 0, 7 }, { 5, 10, 37 }, { 6, 10, 39 },
+ { 6, 10, 451 }, { 7, 10, 218 }, { 7, 10, 1166 }, { 7, 10, 1687 },
+ { 8, 10, 662 }, { 16, 10, 2 }, { 8, 11, 587 }, { 6, 11, 427 },
+ { 7, 11, 1018 }, { 10, 11, 692 }, { 4, 11, 195 }, { 6, 10, 508 },
+ { 7, 11, 802 }, { 4, 0, 167 }, { 7, 0, 82 }, { 5, 0, 62 },
+ { 6, 0, 24 }, { 6, 0, 534 }, { 7, 0, 74 }, { 7, 0, 678 },
+ { 7, 0, 684 }, { 7, 0, 1043 }, { 7, 0, 1072 }, { 8, 0, 280 },
+ { 8, 0, 541 }, { 8, 0, 686 }, { 9, 0, 258 }, { 10, 0, 519 },
+ { 11, 0, 252 }, { 12, 0, 282 }, { 10, 0, 33 }, { 4, 0, 359 },
+ { 5, 11, 738 }, { 7, 0, 980 }, { 9, 0, 328 }, { 13, 0, 186 },
+ { 13, 0, 364 }, { 7, 10, 635 }, { 7, 10, 796 }, { 8, 10, 331 },
+ { 9, 10, 330 }, { 9, 10, 865 }, { 10, 10, 119 }, { 10, 10, 235 },
+ { 11, 10, 111 }, { 11, 10, 129 }, { 11, 10, 240 }, { 12, 10, 31 },
+ { 12, 10, 66 }, { 12, 10, 222 }, { 12, 10, 269 }, { 12, 10, 599 },
+ { 12, 10, 684 }, { 12, 10, 689 }, { 12, 10, 691 }, { 14, 10, 345 },
+ { 9, 10, 527 }, { 6, 0, 596 }, { 7, 0, 585 }, { 7, 10, 702 },
+ { 6, 11, 1683 }, { 5, 0, 211 }, { 6, 0, 145 }, { 13, 0, 336 },
+ { 6, 0, 1130 }, { 7, 0, 873 }, { 6, 10, 37 }, { 7, 10, 1666 },
+ { 8, 10, 195 }, { 8, 10, 316 }, { 9, 10, 178 }, { 9, 10, 276 },
+ { 9, 10, 339 }, { 9, 10, 536 }, { 10, 10, 102 }, { 10, 10, 362 },
+ { 10, 10, 785 }, { 11, 10, 55 }, { 11, 10, 149 }, { 11, 10, 773 },
+ { 13, 10, 416 }, { 13, 10, 419 }, { 14, 10, 38 }, { 14, 10, 41 },
+ { 14, 10, 210 }, { 8, 0, 840 }, { 8, 0, 841 }, { 4, 0, 263 },
+ { 5, 11, 3 }, { 8, 11, 578 }, { 9, 11, 118 }, { 10, 11, 705 },
+ { 12, 11, 383 }, { 13, 11, 279 }, { 4, 0, 916 }, { 5, 11, 229 },
+ { 5, 10, 645 }, { 15, 0, 155 }, { 16, 0, 79 }, { 8, 11, 102 },
+ { 10, 11, 578 }, { 10, 11, 672 }, { 12, 11, 496 }, { 13, 11, 408 },
+ { 14, 11, 121 }, { 17, 11, 106 }, { 4, 0, 599 }, { 5, 0, 592 },
+ { 6, 0, 1634 }, { 7, 0, 5 }, { 7, 0, 55 }, { 7, 0, 67 },
+ { 7, 0, 97 }, { 7, 0, 691 }, { 7, 0, 979 }, { 7, 0, 1600 },
+ { 7, 0, 1697 }, { 8, 0, 207 }, { 8, 0, 214 }, { 8, 0, 231 },
+ { 8, 0, 294 }, { 8, 0, 336 }, { 8, 0, 428 }, { 8, 0, 471 },
+ { 8, 0, 622 }, { 8, 0, 626 }, { 8, 0, 679 }, { 8, 0, 759 },
+ { 8, 0, 829 }, { 9, 0, 11 }, { 9, 0, 246 }, { 9, 0, 484 },
+ { 9, 0, 573 }, { 9, 0, 706 }, { 9, 0, 762 }, { 9, 0, 798 },
+ { 9, 0, 855 }, { 9, 0, 870 }, { 9, 0, 912 }, { 10, 0, 303 },
+ { 10, 0, 335 }, { 10, 0, 424 }, { 10, 0, 461 }, { 10, 0, 543 },
+ { 10, 0, 759 }, { 10, 0, 814 }, { 11, 0, 59 }, { 11, 0, 199 },
+ { 11, 0, 235 }, { 11, 0, 590 }, { 11, 0, 631 }, { 11, 0, 929 },
+ { 11, 0, 963 }, { 11, 0, 987 }, { 12, 0, 114 }, { 12, 0, 182 },
+ { 12, 0, 226 }, { 12, 0, 332 }, { 12, 0, 439 }, { 12, 0, 575 },
+ { 12, 0, 598 }, { 12, 0, 675 }, { 13, 0, 8 }, { 13, 0, 125 },
+ { 13, 0, 194 }, { 13, 0, 287 }, { 14, 0, 197 }, { 14, 0, 383 },
+ { 15, 0, 53 }, { 17, 0, 63 }, { 19, 0, 46 }, { 19, 0, 98 },
+ { 19, 0, 106 }, { 20, 0, 85 }, { 7, 0, 1356 }, { 4, 10, 290 },
+ { 6, 10, 70 }, { 7, 10, 1292 }, { 10, 10, 762 }, { 11, 10, 288 },
+ { 22, 11, 55 }, { 4, 0, 593 }, { 8, 11, 115 }, { 8, 11, 350 },
+ { 9, 11, 489 }, { 10, 11, 128 }, { 11, 11, 306 }, { 12, 11, 373 },
+ { 14, 11, 30 }, { 17, 11, 79 }, { 19, 11, 80 }, { 7, 11, 1235 },
+ { 6, 0, 1392 }, { 4, 11, 230 }, { 5, 11, 702 }, { 19, 0, 126 },
+ { 7, 10, 131 }, { 7, 10, 422 }, { 8, 10, 210 }, { 12, 10, 573 },
+ { 6, 0, 1179 }, { 11, 11, 435 }, { 11, 10, 797 }, { 6, 11, 1728 },
+ { 4, 0, 162 }, { 18, 11, 26 }, { 19, 11, 42 }, { 20, 11, 43 },
+ { 21, 11, 0 }, { 23, 11, 27 }, { 24, 11, 14 }, { 4, 10, 936 },
+ { 6, 0, 765 }, { 5, 10, 453 }, { 6, 10, 441 }, { 5, 0, 187 },
+ { 7, 0, 1286 }, { 6, 0, 635 }, { 6, 0, 904 }, { 6, 0, 1210 },
+ { 6, 0, 1489 }, { 4, 0, 215 }, { 8, 0, 890 }, { 9, 0, 38 },
+ { 10, 0, 923 }, { 11, 0, 23 }, { 11, 0, 127 }, { 11, 0, 796 },
+ { 6, 0, 1165 }, { 6, 0, 1306 }, { 7, 0, 716 }, { 13, 0, 97 },
+ { 13, 0, 251 }, { 4, 10, 653 }, { 8, 0, 657 }, { 18, 10, 80 },
+ { 5, 11, 622 }, { 7, 11, 1032 }, { 11, 11, 26 }, { 11, 11, 213 },
+ { 11, 11, 707 }, { 12, 11, 380 }, { 13, 11, 226 }, { 13, 11, 355 },
+ { 6, 0, 299 }, { 5, 11, 70 }, { 6, 11, 334 }, { 9, 11, 171 },
+ { 11, 11, 637 }, { 12, 11, 202 }, { 14, 11, 222 }, { 17, 11, 42 },
+ { 14, 0, 134 }, { 4, 11, 23 }, { 5, 11, 313 }, { 5, 11, 1014 },
+ { 6, 11, 50 }, { 6, 11, 51 }, { 7, 11, 142 }, { 7, 11, 384 },
+ { 9, 11, 783 }, { 11, 11, 741 }, { 4, 11, 141 }, { 7, 11, 559 },
+ { 8, 11, 640 }, { 9, 11, 460 }, { 12, 11, 183 }, { 13, 11, 488 },
+ { 8, 11, 614 }, { 7, 10, 1368 }, { 8, 10, 232 }, { 8, 10, 361 },
+ { 10, 10, 682 }, { 10, 10, 742 }, { 9, 10, 534 }, { 6, 0, 1082 },
+ { 12, 0, 658 }, { 9, 10, 27 }, { 7, 0, 2002 }, { 14, 10, 12 },
+ { 4, 0, 28 }, { 5, 0, 440 }, { 7, 0, 248 }, { 11, 0, 833 },
+ { 12, 0, 344 }, { 7, 10, 736 }, { 11, 10, 264 }, { 6, 10, 1657 },
+ { 6, 0, 1654 }, { 10, 0, 531 }, { 5, 11, 222 }, { 9, 11, 140 },
+ { 10, 11, 534 }, { 6, 0, 634 }, { 6, 0, 798 }, { 6, 0, 840 },
+ { 10, 11, 503 }, { 7, 10, 127 }, { 5, 0, 853 }, { 5, 11, 154 },
+ { 7, 11, 1491 }, { 10, 11, 379 }, { 10, 11, 485 }, { 6, 0, 249 },
+ { 7, 0, 1234 }, { 11, 0, 573 }, { 5, 11, 716 }, { 7, 11, 1570 },
+ { 12, 11, 542 }, { 8, 10, 364 }, { 10, 0, 527 }, { 4, 11, 91 },
+ { 5, 11, 388 }, { 5, 11, 845 }, { 6, 11, 206 }, { 6, 11, 252 },
+ { 6, 11, 365 }, { 7, 11, 136 }, { 7, 11, 531 }, { 8, 11, 264 },
+ { 8, 11, 621 }, { 6, 0, 1419 }, { 7, 11, 1441 }, { 7, 0, 49 },
+ { 7, 0, 392 }, { 8, 0, 20 }, { 8, 0, 172 }, { 8, 0, 690 },
+ { 9, 0, 383 }, { 9, 0, 845 }, { 10, 0, 48 }, { 11, 0, 293 },
+ { 11, 0, 832 }, { 11, 0, 920 }, { 11, 0, 984 }, { 13, 0, 221 },
+ { 5, 0, 858 }, { 5, 0, 992 }, { 5, 0, 728 }, { 9, 10, 792 },
+ { 5, 10, 909 }, { 9, 10, 849 }, { 10, 10, 805 }, { 7, 0, 525 },
+ { 7, 0, 1579 }, { 8, 0, 497 }, { 8, 0, 573 }, { 6, 0, 268 },
+ { 9, 0, 62 }, { 7, 11, 576 }, { 6, 0, 1201 }, { 5, 11, 771 },
+ { 5, 11, 863 }, { 5, 11, 898 }, { 6, 11, 1632 }, { 6, 11, 1644 },
+ { 6, 11, 1780 }, { 5, 11, 331 }, { 7, 0, 193 }, { 7, 0, 1105 },
+ { 10, 0, 495 }, { 7, 10, 397 }, { 8, 10, 124 }, { 8, 10, 619 },
+ { 9, 10, 305 }, { 11, 10, 40 }, { 12, 10, 349 }, { 13, 10, 134 },
+ { 13, 10, 295 }, { 14, 10, 155 }, { 15, 10, 120 }, { 18, 10, 105 },
+ { 10, 0, 106 }, { 6, 0, 859 }, { 5, 11, 107 }, { 7, 11, 201 },
+ { 8, 11, 518 }, { 6, 11, 446 }, { 7, 11, 1817 }, { 13, 0, 23 },
+ { 4, 10, 262 }, { 7, 10, 342 }, { 5, 10, 641 }, { 9, 11, 851 },
+ { 6, 0, 925 }, { 9, 0, 813 }, { 4, 11, 504 }, { 6, 0, 613 },
+ { 8, 0, 223 }, { 4, 10, 99 }, { 6, 10, 250 }, { 6, 10, 346 },
+ { 8, 10, 127 }, { 10, 10, 81 }, { 8, 0, 953 }, { 4, 10, 915 },
+ { 11, 11, 892 }, { 5, 10, 75 }, { 9, 10, 517 }, { 10, 10, 470 },
+ { 12, 10, 155 }, { 13, 10, 224 }, { 4, 0, 666 }, { 7, 0, 1017 },
+ { 7, 11, 996 }, { 10, 11, 390 }, { 5, 11, 883 }, { 5, 11, 975 },
+ { 14, 10, 83 }, { 14, 11, 83 }, { 4, 0, 670 }, { 5, 11, 922 },
+ { 6, 11, 1707 }, { 7, 0, 216 }, { 9, 0, 40 }, { 11, 0, 136 },
+ { 7, 11, 787 }, { 5, 10, 954 }, { 5, 11, 993 }, { 7, 11, 515 },
+ { 9, 11, 91 }, { 11, 0, 259 }, { 7, 0, 1114 }, { 9, 0, 310 },
+ { 9, 0, 682 }, { 10, 0, 440 }, { 13, 0, 40 }, { 6, 10, 304 },
+ { 8, 10, 418 }, { 11, 10, 341 }, { 11, 10, 675 }, { 14, 0, 296 },
+ { 9, 10, 410 }, { 11, 10, 425 }, { 10, 11, 377 }, { 12, 11, 363 },
+ { 13, 11, 68 }, { 13, 11, 94 }, { 14, 11, 108 }, { 14, 11, 306 },
+ { 7, 0, 1401 }, { 7, 0, 1476 }, { 4, 0, 296 }, { 6, 0, 475 },
+ { 7, 0, 401 }, { 7, 0, 1410 }, { 7, 0, 1594 }, { 7, 0, 1674 },
+ { 8, 0, 63 }, { 8, 0, 660 }, { 9, 0, 74 }, { 4, 0, 139 },
+ { 4, 0, 388 }, { 12, 0, 188 }, { 4, 0, 797 }, { 4, 11, 766 },
+ { 5, 11, 103 }, { 7, 11, 921 }, { 8, 11, 580 }, { 8, 11, 593 },
+ { 8, 11, 630 }, { 10, 11, 28 }, { 4, 11, 911 }, { 5, 11, 867 },
+ { 5, 11, 1013 }, { 6, 10, 14 }, { 6, 0, 1572 }, { 6, 10, 1708 },
+ { 21, 0, 39 }, { 5, 10, 113 }, { 6, 10, 243 }, { 7, 10, 1865 },
+ { 11, 10, 161 }, { 16, 10, 37 }, { 17, 10, 99 }, { 7, 11, 1563 },
+ { 13, 11, 182 }, { 5, 11, 135 }, { 6, 11, 519 }, { 7, 11, 1722 },
+ { 10, 11, 271 }, { 11, 11, 261 }, { 17, 11, 54 }, { 4, 10, 274 },
+ { 6, 0, 1594 }, { 4, 11, 300 }, { 5, 11, 436 }, { 7, 11, 484 },
+ { 4, 0, 747 }, { 6, 0, 290 }, { 7, 0, 649 }, { 7, 0, 1479 },
+ { 7, 0, 1583 }, { 5, 11, 535 }, { 19, 11, 82 }, { 5, 0, 232 },
+ { 9, 0, 887 }, { 7, 10, 166 }, { 8, 0, 521 }, { 4, 0, 14 },
+ { 7, 0, 472 }, { 7, 0, 1801 }, { 10, 0, 748 }, { 13, 0, 458 },
+ { 6, 0, 741 }, { 6, 0, 992 }, { 16, 0, 111 }, { 9, 10, 304 },
+ { 4, 0, 425 }, { 5, 11, 387 }, { 7, 11, 557 }, { 12, 11, 547 },
+ { 14, 11, 86 }, { 7, 11, 1747 }, { 5, 10, 654 }, { 7, 11, 1489 },
+ { 7, 0, 789 }, { 4, 11, 6 }, { 5, 11, 708 }, { 8, 11, 75 },
+ { 6, 10, 273 }, { 10, 10, 188 }, { 13, 10, 377 }, { 18, 10, 77 },
+ { 6, 0, 1593 }, { 4, 11, 303 }, { 7, 11, 619 }, { 10, 11, 547 },
+ { 10, 11, 687 }, { 11, 11, 122 }, { 12, 11, 601 }, { 6, 0, 1768 },
+ { 7, 10, 410 }, { 10, 11, 772 }, { 11, 0, 233 }, { 11, 10, 524 },
+ { 5, 0, 943 }, { 6, 0, 1779 }, { 6, 10, 1785 }, { 8, 11, 529 },
+ { 4, 0, 955 }, { 5, 0, 245 }, { 6, 0, 576 }, { 7, 0, 582 },
+ { 8, 0, 225 }, { 4, 10, 780 }, { 14, 0, 241 }, { 6, 0, 1943 },
+ { 4, 11, 106 }, { 7, 11, 310 }, { 7, 11, 1785 }, { 10, 11, 690 },
+ { 11, 11, 717 }, { 6, 0, 1284 }, { 5, 11, 890 }, { 5, 11, 988 },
+ { 6, 11, 626 }, { 14, 11, 431 }, { 10, 11, 706 }, { 17, 11, 32 },
+ { 9, 11, 332 }, { 4, 11, 698 }, { 7, 0, 709 }, { 5, 10, 948 },
+ { 10, 11, 17 }, { 8, 0, 554 }, { 6, 0, 1564 }, { 11, 10, 941 },
+ { 4, 0, 443 }, { 6, 0, 909 }, { 6, 11, 84 }, { 14, 0, 280 },
+ { 4, 10, 532 }, { 5, 10, 706 }, { 7, 10, 662 }, { 4, 0, 729 },
+ { 5, 10, 837 }, { 6, 10, 1651 }, { 11, 10, 985 }, { 7, 10, 1861 },
+ { 4, 0, 348 }, { 24, 11, 3 }, { 5, 11, 986 }, { 6, 11, 130 },
+ { 7, 11, 1582 }, { 8, 11, 458 }, { 10, 11, 101 }, { 10, 11, 318 },
+ { 10, 11, 823 }, { 6, 0, 758 }, { 4, 0, 298 }, { 9, 0, 848 },
+ { 4, 10, 330 }, { 7, 10, 933 }, { 7, 10, 2012 }, { 8, 10, 292 },
+ { 7, 11, 1644 }, { 9, 11, 129 }, { 6, 0, 1422 }, { 9, 0, 829 },
+ { 7, 10, 767 }, { 5, 0, 164 }, { 7, 0, 121 }, { 14, 0, 189 },
+ { 7, 0, 812 }, { 7, 0, 1261 }, { 7, 0, 1360 }, { 9, 0, 632 },
+ { 12, 0, 352 }, { 7, 11, 1788 }, { 11, 0, 556 }, { 7, 11, 997 },
+ { 17, 10, 114 }, { 4, 0, 172 }, { 9, 0, 611 }, { 10, 0, 436 },
+ { 12, 0, 673 }, { 13, 0, 255 }, { 9, 10, 883 }, { 11, 0, 530 },
+ { 10, 10, 274 }, { 5, 0, 844 }, { 6, 0, 984 }, { 13, 0, 232 },
+ { 18, 0, 35 }, { 4, 10, 703 }, { 7, 10, 207 }, { 4, 10, 571 },
+ { 9, 0, 263 }, { 10, 0, 147 }, { 10, 0, 492 }, { 7, 11, 1756 },
+ { 9, 11, 98 }, { 5, 10, 873 }, { 5, 10, 960 }, { 8, 10, 823 },
+ { 9, 10, 881 }, { 5, 0, 537 }, { 4, 0, 859 }, { 7, 11, 1046 },
+ { 11, 11, 160 }, { 9, 0, 842 }, { 11, 10, 283 }, { 5, 10, 33 },
+ { 6, 10, 470 }, { 11, 10, 424 }, { 6, 11, 45 }, { 7, 11, 433 },
+ { 8, 11, 129 }, { 9, 11, 21 }, { 10, 11, 392 }, { 11, 11, 79 },
+ { 12, 11, 499 }, { 13, 11, 199 }, { 13, 11, 451 }, { 7, 0, 1291 },
+ { 7, 10, 1882 }, { 7, 11, 558 }, { 8, 11, 353 }, { 6, 0, 1482 },
+ { 5, 0, 230 }, { 5, 0, 392 }, { 6, 0, 420 }, { 9, 0, 568 },
+ { 12, 0, 612 }, { 6, 0, 262 }, { 7, 10, 90 }, { 7, 10, 664 },
+ { 7, 10, 830 }, { 7, 10, 1380 }, { 7, 10, 2025 }, { 8, 11, 81 },
+ { 8, 10, 448 }, { 8, 10, 828 }, { 9, 11, 189 }, { 9, 11, 201 },
+ { 11, 11, 478 }, { 11, 11, 712 }, { 13, 11, 338 }, { 14, 0, 31 },
+ { 5, 11, 353 }, { 23, 11, 26 }, { 4, 0, 753 }, { 4, 0, 0 },
+ { 5, 0, 41 }, { 7, 0, 1459 }, { 7, 0, 1469 }, { 7, 0, 1859 },
+ { 9, 0, 549 }, { 11, 0, 905 }, { 9, 10, 417 }, { 9, 10, 493 },
+ { 7, 11, 1113 }, { 5, 0, 696 }, { 13, 11, 448 }, { 6, 10, 295 },
+ { 4, 0, 834 }, { 4, 0, 771 }, { 5, 10, 1019 }, { 6, 11, 25 },
+ { 7, 11, 855 }, { 7, 11, 1258 }, { 16, 11, 32 }, { 6, 0, 1076 },
+ { 5, 0, 921 }, { 5, 0, 674 }, { 4, 11, 4 }, { 7, 11, 1118 },
+ { 7, 11, 1320 }, { 7, 11, 1706 }, { 8, 11, 277 }, { 9, 11, 622 },
+ { 10, 11, 9 }, { 11, 11, 724 }, { 12, 11, 350 }, { 12, 11, 397 },
+ { 13, 11, 28 }, { 13, 11, 159 }, { 15, 11, 89 }, { 18, 11, 5 },
+ { 19, 11, 9 }, { 20, 11, 34 }, { 22, 11, 47 }, { 6, 10, 208 },
+ { 6, 0, 444 }, { 8, 0, 308 }, { 6, 0, 180 }, { 7, 0, 1137 },
+ { 8, 0, 751 }, { 11, 0, 805 }, { 4, 0, 183 }, { 7, 0, 271 },
+ { 11, 0, 824 }, { 11, 0, 952 }, { 13, 0, 278 }, { 13, 0, 339 },
+ { 13, 0, 482 }, { 14, 0, 424 }, { 20, 0, 99 }, { 7, 11, 317 },
+ { 7, 11, 569 }, { 4, 0, 19 }, { 5, 0, 477 }, { 5, 0, 596 },
+ { 6, 0, 505 }, { 7, 0, 1221 }, { 11, 0, 907 }, { 12, 0, 209 },
+ { 13, 0, 214 }, { 7, 0, 1215 }, { 6, 0, 271 }, { 7, 0, 398 },
+ { 8, 0, 387 }, { 10, 0, 344 }, { 7, 10, 448 }, { 7, 10, 1629 },
+ { 7, 10, 1813 }, { 8, 10, 442 }, { 9, 10, 710 }, { 10, 10, 282 },
+ { 10, 10, 722 }, { 11, 10, 844 }, { 12, 10, 104 }, { 12, 10, 625 },
+ { 6, 11, 255 }, { 5, 10, 787 }, { 6, 0, 1645 }, { 11, 11, 956 },
+ { 23, 11, 3 }, { 6, 0, 92 }, { 6, 0, 188 }, { 7, 0, 209 },
+ { 7, 0, 1269 }, { 7, 0, 1524 }, { 7, 0, 1876 }, { 8, 0, 661 },
+ { 10, 0, 42 }, { 10, 0, 228 }, { 11, 0, 58 }, { 11, 0, 1020 },
+ { 12, 0, 58 }, { 12, 0, 118 }, { 13, 0, 32 }, { 4, 0, 459 },
+ { 5, 0, 966 }, { 4, 11, 536 }, { 7, 11, 1141 }, { 10, 11, 723 },
+ { 11, 11, 371 }, { 12, 0, 330 }, { 6, 0, 1557 }, { 7, 11, 285 },
+ { 7, 11, 876 }, { 8, 10, 491 }, { 7, 11, 560 }, { 6, 0, 18 },
+ { 7, 0, 179 }, { 7, 0, 932 }, { 8, 0, 548 }, { 8, 0, 757 },
+ { 9, 0, 54 }, { 9, 0, 65 }, { 9, 0, 532 }, { 9, 0, 844 },
+ { 10, 0, 113 }, { 10, 0, 117 }, { 10, 0, 315 }, { 10, 0, 560 },
+ { 10, 0, 622 }, { 10, 0, 798 }, { 11, 0, 153 }, { 11, 0, 351 },
+ { 11, 0, 375 }, { 12, 0, 78 }, { 12, 0, 151 }, { 12, 0, 392 },
+ { 12, 0, 666 }, { 14, 0, 248 }, { 15, 0, 23 }, { 6, 0, 1742 },
+ { 4, 11, 690 }, { 4, 10, 403 }, { 5, 10, 441 }, { 7, 10, 450 },
+ { 10, 10, 840 }, { 11, 10, 101 }, { 12, 10, 193 }, { 13, 10, 430 },
+ { 5, 0, 965 }, { 6, 0, 182 }, { 10, 0, 65 }, { 10, 0, 488 },
+ { 10, 0, 497 }, { 7, 11, 1346 }, { 6, 0, 973 }, { 6, 0, 1158 },
+ { 10, 11, 200 }, { 19, 11, 2 }, { 23, 11, 22 }, { 4, 11, 190 },
+ { 5, 11, 554 }, { 5, 10, 679 }, { 7, 0, 328 }, { 9, 10, 326 },
+ { 5, 11, 1001 }, { 9, 0, 588 }, { 10, 0, 260 }, { 5, 11, 446 },
+ { 7, 10, 1128 }, { 7, 10, 1796 }, { 19, 11, 119 }, { 6, 0, 1786 },
+ { 6, 0, 1328 }, { 6, 0, 1985 }, { 8, 0, 962 }, { 10, 0, 1017 },
+ { 7, 0, 308 }, { 11, 0, 508 }, { 4, 10, 574 }, { 7, 10, 350 },
+ { 7, 10, 1024 }, { 8, 10, 338 }, { 9, 10, 677 }, { 10, 10, 808 },
+ { 10, 11, 752 }, { 7, 10, 1081 }, { 9, 11, 96 }, { 7, 10, 1676 },
+ { 7, 10, 2037 }, { 8, 0, 588 }, { 4, 11, 304 }, { 5, 0, 614 },
+ { 12, 0, 793 }, { 8, 0, 287 }, { 9, 10, 297 }, { 13, 10, 37 },
+ { 6, 11, 53 }, { 6, 11, 199 }, { 7, 11, 1408 }, { 8, 11, 32 },
+ { 8, 11, 93 }, { 9, 11, 437 }, { 10, 11, 397 }, { 10, 11, 629 },
+ { 11, 11, 593 }, { 11, 11, 763 }, { 13, 11, 326 }, { 17, 11, 35 },
+ { 6, 11, 105 }, { 9, 11, 320 }, { 10, 11, 506 }, { 10, 11, 794 },
+ { 5, 11, 114 }, { 5, 11, 255 }, { 13, 11, 285 }, { 12, 0, 290 },
+ { 7, 11, 2035 }, { 8, 11, 19 }, { 9, 11, 89 }, { 10, 11, 831 },
+ { 6, 0, 1136 }, { 7, 0, 719 }, { 8, 0, 796 }, { 8, 0, 809 },
+ { 8, 0, 834 }, { 6, 10, 306 }, { 7, 10, 1140 }, { 7, 10, 1340 },
+ { 8, 10, 133 }, { 10, 10, 449 }, { 11, 10, 1011 }, { 5, 0, 210 },
+ { 6, 0, 213 }, { 7, 0, 60 }, { 10, 0, 364 }, { 11, 0, 135 },
+ { 5, 0, 607 }, { 8, 0, 326 }, { 8, 0, 490 }, { 10, 11, 176 },
+ { 4, 0, 701 }, { 5, 0, 472 }, { 7, 0, 380 }, { 9, 0, 758 },
+ { 7, 0, 1947 }, { 6, 0, 1079 }, { 10, 0, 278 }, { 10, 11, 391 },
+ { 5, 10, 329 }, { 8, 10, 260 }, { 11, 11, 156 }, { 4, 0, 386 },
+ { 7, 0, 41 }, { 8, 0, 405 }, { 8, 0, 728 }, { 9, 0, 497 },
+ { 11, 0, 110 }, { 11, 0, 360 }, { 15, 0, 37 }, { 16, 0, 84 },
+ { 5, 0, 46 }, { 7, 0, 1452 }, { 7, 0, 1480 }, { 8, 0, 634 },
+ { 12, 0, 472 }, { 8, 0, 961 }, { 4, 0, 524 }, { 8, 0, 810 },
+ { 10, 0, 238 }, { 13, 0, 33 }, { 4, 10, 657 }, { 24, 10, 7 },
+ { 5, 0, 532 }, { 5, 0, 997 }, { 7, 10, 1665 }, { 7, 11, 594 },
+ { 7, 11, 851 }, { 7, 11, 1858 }, { 9, 11, 411 }, { 9, 11, 574 },
+ { 9, 11, 666 }, { 9, 11, 737 }, { 10, 11, 346 }, { 10, 11, 712 },
+ { 11, 11, 246 }, { 11, 11, 432 }, { 11, 11, 517 }, { 11, 11, 647 },
+ { 11, 11, 679 }, { 11, 11, 727 }, { 12, 11, 304 }, { 12, 11, 305 },
+ { 12, 11, 323 }, { 12, 11, 483 }, { 12, 11, 572 }, { 12, 11, 593 },
+ { 12, 11, 602 }, { 13, 11, 95 }, { 13, 11, 101 }, { 13, 11, 171 },
+ { 13, 11, 315 }, { 13, 11, 378 }, { 13, 11, 425 }, { 13, 11, 475 },
+ { 14, 11, 63 }, { 14, 11, 380 }, { 14, 11, 384 }, { 15, 11, 133 },
+ { 18, 11, 112 }, { 20, 11, 72 }, { 5, 11, 955 }, { 8, 11, 814 },
+ { 6, 0, 1301 }, { 5, 10, 66 }, { 7, 10, 1896 }, { 8, 10, 288 },
+ { 5, 11, 56 }, { 6, 10, 1643 }, { 6, 0, 1298 }, { 20, 11, 100 },
+ { 5, 0, 782 }, { 5, 0, 829 }, { 6, 0, 671 }, { 6, 0, 1156 },
+ { 6, 0, 1738 }, { 9, 11, 621 }, { 4, 0, 306 }, { 5, 0, 570 },
+ { 7, 0, 1347 }, { 5, 10, 91 }, { 5, 10, 648 }, { 5, 10, 750 },
+ { 5, 10, 781 }, { 6, 10, 54 }, { 6, 10, 112 }, { 6, 10, 402 },
+ { 6, 10, 1732 }, { 7, 10, 315 }, { 7, 10, 749 }, { 7, 10, 1900 },
+ { 9, 10, 78 }, { 9, 10, 508 }, { 10, 10, 611 }, { 10, 10, 811 },
+ { 11, 10, 510 }, { 11, 10, 728 }, { 13, 10, 36 }, { 14, 10, 39 },
+ { 16, 10, 83 }, { 17, 10, 124 }, { 20, 10, 30 }, { 8, 10, 570 },
+ { 9, 11, 477 }, { 13, 11, 78 }, { 4, 11, 639 }, { 10, 11, 4 },
+ { 10, 10, 322 }, { 10, 10, 719 }, { 11, 10, 407 }, { 11, 11, 638 },
+ { 12, 11, 177 }, { 20, 11, 57 }, { 7, 0, 1823 }, { 11, 0, 693 },
+ { 7, 0, 759 }, { 5, 11, 758 }, { 8, 10, 125 }, { 8, 10, 369 },
+ { 8, 10, 524 }, { 10, 10, 486 }, { 11, 10, 13 }, { 11, 10, 381 },
+ { 11, 10, 736 }, { 11, 10, 766 }, { 11, 10, 845 }, { 13, 10, 114 },
+ { 13, 10, 292 }, { 14, 10, 47 }, { 7, 0, 1932 }, { 6, 10, 1684 },
+ { 6, 10, 1731 }, { 7, 10, 356 }, { 8, 10, 54 }, { 8, 10, 221 },
+ { 9, 10, 225 }, { 9, 10, 356 }, { 10, 10, 77 }, { 10, 10, 446 },
+ { 10, 10, 731 }, { 12, 10, 404 }, { 13, 10, 491 }, { 7, 11, 552 },
+ { 7, 11, 1112 }, { 4, 0, 78 }, { 5, 0, 96 }, { 5, 0, 182 },
+ { 6, 0, 1257 }, { 7, 0, 1724 }, { 7, 0, 1825 }, { 10, 0, 394 },
+ { 10, 0, 471 }, { 11, 0, 532 }, { 14, 0, 340 }, { 17, 0, 88 },
+ { 11, 11, 328 }, { 7, 0, 1964 }, { 4, 10, 411 }, { 4, 10, 80 },
+ { 5, 10, 44 }, { 9, 11, 133 }, { 5, 11, 110 }, { 6, 11, 169 },
+ { 6, 11, 1702 }, { 7, 11, 400 }, { 8, 11, 538 }, { 9, 11, 184 },
+ { 9, 11, 524 }, { 12, 11, 218 }, { 4, 0, 521 }, { 5, 10, 299 },
+ { 7, 10, 1083 }, { 12, 11, 554 }, { 6, 11, 133 }, { 9, 11, 353 },
+ { 12, 11, 628 }, { 18, 11, 79 }, { 6, 0, 215 }, { 7, 0, 584 },
+ { 7, 0, 1028 }, { 7, 0, 1473 }, { 7, 0, 1721 }, { 9, 0, 424 },
+ { 10, 0, 779 }, { 7, 0, 857 }, { 7, 0, 1209 }, { 7, 10, 1713 },
+ { 9, 10, 537 }, { 10, 10, 165 }, { 12, 10, 219 }, { 12, 10, 561 },
+ { 4, 10, 219 }, { 6, 11, 93 }, { 7, 11, 1422 }, { 7, 10, 1761 },
+ { 7, 11, 1851 }, { 8, 11, 673 }, { 9, 10, 86 }, { 9, 11, 529 },
+ { 12, 11, 43 }, { 9, 11, 371 }, { 8, 0, 671 }, { 5, 0, 328 },
+ { 7, 0, 918 }, { 4, 0, 529 }, { 9, 11, 25 }, { 10, 11, 467 },
+ { 10, 11, 559 }, { 4, 11, 335 }, { 7, 11, 942 }, { 6, 0, 716 },
+ { 6, 0, 1509 }, { 6, 0, 67 }, { 7, 0, 258 }, { 7, 0, 1630 },
+ { 9, 0, 354 }, { 9, 0, 675 }, { 10, 0, 830 }, { 14, 0, 80 },
+ { 17, 0, 80 }, { 12, 10, 428 }, { 6, 0, 1112 }, { 6, 0, 141 },
+ { 7, 0, 225 }, { 9, 0, 59 }, { 9, 0, 607 }, { 10, 0, 312 },
+ { 11, 0, 687 }, { 12, 0, 555 }, { 13, 0, 373 }, { 13, 0, 494 },
+ { 20, 0, 58 }, { 5, 10, 514 }, { 8, 11, 39 }, { 10, 11, 773 },
+ { 11, 11, 84 }, { 12, 11, 205 }, { 14, 11, 1 }, { 8, 0, 783 },
+ { 5, 11, 601 }, { 5, 11, 870 }, { 8, 11, 594 }, { 4, 10, 55 },
+ { 5, 10, 301 }, { 6, 10, 571 }, { 14, 10, 49 }, { 18, 10, 102 },
+ { 4, 11, 181 }, { 6, 11, 1652 }, { 5, 10, 364 }, { 4, 11, 97 },
+ { 5, 11, 147 }, { 6, 11, 286 }, { 7, 11, 1362 }, { 13, 11, 176 },
+ { 4, 10, 76 }, { 7, 10, 1550 }, { 9, 10, 306 }, { 9, 10, 430 },
+ { 9, 10, 663 }, { 10, 10, 683 }, { 11, 10, 427 }, { 11, 10, 753 },
+ { 12, 10, 334 }, { 12, 10, 442 }, { 14, 10, 258 }, { 14, 10, 366 },
+ { 15, 10, 131 }, { 9, 10, 52 }, { 6, 0, 955 }, { 6, 0, 1498 },
+ { 6, 11, 375 }, { 7, 11, 169 }, { 7, 11, 254 }, { 8, 11, 780 },
+ { 7, 0, 430 }, { 11, 0, 46 }, { 14, 0, 343 }, { 14, 11, 343 },
+ { 7, 0, 1183 }, { 5, 0, 602 }, { 7, 0, 2018 }, { 9, 0, 418 },
+ { 9, 0, 803 }, { 7, 11, 1447 }, { 8, 0, 677 }, { 7, 11, 1044 },
+ { 11, 11, 285 }, { 4, 10, 656 }, { 7, 10, 779 }, { 7, 10, 144 },
+ { 5, 11, 629 }, { 7, 11, 1549 }, { 7, 10, 1373 }, { 10, 11, 209 },
+ { 7, 10, 554 }, { 7, 10, 605 }, { 13, 10, 10 }, { 5, 10, 838 },
+ { 5, 10, 841 }, { 6, 10, 1649 }, { 5, 10, 1012 }, { 6, 0, 1357 },
+ { 6, 0, 1380 }, { 16, 0, 53 }, { 6, 0, 590 }, { 7, 10, 365 },
+ { 7, 10, 1357 }, { 7, 10, 1497 }, { 8, 10, 154 }, { 13, 10, 281 },
+ { 5, 10, 340 }, { 4, 11, 420 }, { 7, 0, 329 }, { 19, 11, 32 },
+ { 4, 0, 469 }, { 10, 11, 429 }, { 11, 10, 495 }, { 8, 10, 261 },
+ { 9, 10, 144 }, { 9, 10, 466 }, { 10, 10, 370 }, { 12, 10, 470 },
+ { 13, 10, 144 }, { 14, 10, 348 }, { 14, 0, 460 }, { 4, 11, 325 },
+ { 9, 10, 897 }, { 10, 11, 125 }, { 6, 0, 1743 }, { 6, 10, 248 },
+ { 9, 10, 546 }, { 10, 10, 535 }, { 11, 10, 681 }, { 13, 10, 135 },
+ { 4, 0, 990 }, { 5, 0, 929 }, { 6, 0, 340 }, { 8, 0, 376 },
+ { 8, 0, 807 }, { 8, 0, 963 }, { 8, 0, 980 }, { 10, 0, 1007 },
+ { 6, 0, 1603 }, { 12, 0, 250 }, { 4, 11, 714 }, { 5, 11, 469 },
+ { 6, 10, 567 }, { 8, 10, 445 }, { 5, 0, 218 }, { 7, 0, 1610 },
+ { 8, 0, 646 }, { 10, 0, 83 }, { 11, 11, 138 }, { 12, 11, 40 },
+ { 7, 0, 1512 }, { 7, 0, 1794 }, { 7, 11, 1216 }, { 11, 0, 0 },
+ { 16, 0, 78 }, { 4, 11, 718 }, { 5, 0, 571 }, { 4, 0, 455 },
+ { 6, 0, 1012 }, { 5, 11, 124 }, { 5, 11, 144 }, { 6, 11, 548 },
+ { 7, 11, 15 }, { 7, 11, 153 }, { 9, 11, 629 }, { 14, 11, 10 },
+ { 6, 11, 75 }, { 7, 11, 1531 }, { 8, 11, 416 }, { 9, 11, 240 },
+ { 9, 11, 275 }, { 10, 11, 100 }, { 11, 11, 658 }, { 11, 11, 979 },
+ { 12, 11, 86 }, { 13, 11, 468 }, { 14, 11, 66 }, { 14, 11, 207 },
+ { 15, 11, 20 }, { 15, 11, 25 }, { 16, 11, 58 }, { 4, 10, 577 },
+ { 5, 11, 141 }, { 5, 11, 915 }, { 6, 11, 1783 }, { 7, 11, 211 },
+ { 7, 11, 698 }, { 7, 11, 1353 }, { 9, 11, 83 }, { 9, 11, 281 },
+ { 10, 11, 376 }, { 10, 11, 431 }, { 11, 11, 543 }, { 12, 11, 664 },
+ { 13, 11, 280 }, { 13, 11, 428 }, { 14, 11, 61 }, { 14, 11, 128 },
+ { 17, 11, 52 }, { 17, 11, 81 }, { 6, 0, 161 }, { 7, 0, 372 },
+ { 9, 0, 597 }, { 4, 0, 349 }, { 10, 11, 702 }, { 11, 11, 245 },
+ { 6, 0, 524 }, { 6, 10, 174 }, { 6, 0, 432 }, { 9, 0, 751 },
+ { 11, 0, 322 }, { 19, 11, 94 }, { 4, 11, 338 }, { 5, 11, 400 },
+ { 5, 0, 468 }, { 10, 0, 325 }, { 11, 0, 856 }, { 12, 0, 345 },
+ { 15, 0, 104 }, { 5, 0, 223 }, { 4, 0, 566 }, { 4, 11, 221 },
+ { 5, 11, 659 }, { 5, 11, 989 }, { 7, 11, 697 }, { 7, 11, 1211 },
+ { 10, 11, 284 }, { 7, 11, 1070 }, { 4, 0, 59 }, { 7, 0, 1394 },
+ { 6, 0, 436 }, { 11, 0, 481 }, { 5, 10, 878 }, { 5, 10, 972 },
+ { 4, 0, 48 }, { 5, 0, 271 }, { 7, 0, 953 }, { 5, 0, 610 },
+ { 8, 0, 457 }, { 4, 0, 773 }, { 5, 0, 618 }, { 9, 0, 756 },
+ { 5, 0, 755 }, { 7, 0, 1217 }, { 10, 11, 507 }, { 4, 10, 351 },
+ { 4, 0, 197 }, { 15, 11, 78 }, { 4, 11, 188 }, { 7, 11, 805 },
+ { 11, 11, 276 }, { 14, 11, 293 }, { 5, 11, 884 }, { 11, 11, 991 },
+ { 4, 10, 286 }, { 10, 0, 259 }, { 10, 0, 428 }, { 7, 10, 438 },
+ { 7, 10, 627 }, { 7, 10, 1516 }, { 8, 10, 40 }, { 9, 10, 56 },
+ { 9, 10, 294 }, { 11, 10, 969 }, { 11, 10, 995 }, { 18, 10, 148 },
+ { 4, 0, 356 }, { 5, 0, 217 }, { 5, 0, 492 }, { 5, 0, 656 },
+ { 8, 0, 544 }, { 8, 11, 544 }, { 5, 0, 259 }, { 6, 0, 1230 },
+ { 7, 0, 414 }, { 7, 0, 854 }, { 14, 0, 107 }, { 4, 0, 1007 },
+ { 15, 0, 14 }, { 16, 0, 5 }, { 6, 0, 1580 }, { 4, 10, 738 },
+ { 4, 11, 596 }, { 4, 0, 673 }, { 5, 10, 866 }, { 6, 0, 1843 },
+ { 7, 11, 1847 }, { 4, 0, 165 }, { 7, 0, 1398 }, { 7, 0, 1829 },
+ { 7, 11, 1634 }, { 19, 11, 65 }, { 6, 0, 885 }, { 6, 0, 1009 },
+ { 9, 0, 809 }, { 5, 10, 116 }, { 4, 10, 457 }, { 8, 11, 770 },
+ { 9, 0, 498 }, { 12, 0, 181 }, { 10, 11, 361 }, { 14, 11, 316 },
+ { 6, 11, 595 }, { 5, 0, 9 }, { 7, 0, 297 }, { 7, 0, 966 },
+ { 12, 0, 306 }, { 4, 11, 89 }, { 5, 11, 489 }, { 6, 11, 315 },
+ { 7, 11, 553 }, { 7, 11, 1745 }, { 10, 11, 243 }, { 6, 0, 1487 },
+ { 4, 0, 437 }, { 5, 0, 146 }, { 6, 0, 411 }, { 10, 0, 721 },
+ { 5, 10, 527 }, { 6, 10, 189 }, { 7, 10, 859 }, { 11, 10, 104 },
+ { 11, 10, 554 }, { 15, 10, 60 }, { 15, 10, 125 }, { 6, 11, 1658 },
+ { 9, 11, 3 }, { 10, 11, 154 }, { 11, 11, 641 }, { 13, 11, 85 },
+ { 13, 11, 201 }, { 13, 11, 346 }, { 6, 0, 177 }, { 7, 0, 467 },
+ { 6, 0, 1377 }, { 6, 10, 116 }, { 8, 11, 645 }, { 4, 11, 166 },
+ { 5, 11, 505 }, { 6, 11, 1670 }, { 9, 11, 110 }, { 5, 10, 487 },
+ { 4, 10, 86 }, { 5, 10, 667 }, { 5, 10, 753 }, { 6, 10, 316 },
+ { 6, 10, 455 }, { 7, 10, 946 }, { 5, 0, 200 }, { 4, 0, 959 },
+ { 6, 0, 1928 }, { 6, 0, 1957 }, { 11, 11, 203 }, { 22, 10, 45 },
+ { 4, 10, 79 }, { 7, 10, 1773 }, { 10, 10, 450 }, { 11, 10, 589 },
+ { 13, 10, 332 }, { 13, 10, 493 }, { 14, 10, 183 }, { 14, 10, 334 },
+ { 14, 10, 362 }, { 14, 10, 368 }, { 14, 10, 376 }, { 14, 10, 379 },
+ { 19, 10, 90 }, { 19, 10, 103 }, { 19, 10, 127 }, { 20, 10, 90 },
+ { 6, 0, 1435 }, { 7, 11, 1275 }, { 6, 0, 481 }, { 7, 11, 445 },
+ { 8, 11, 307 }, { 8, 11, 704 }, { 10, 11, 41 }, { 10, 11, 439 },
+ { 11, 11, 237 }, { 11, 11, 622 }, { 12, 11, 201 }, { 7, 11, 869 },
+ { 4, 0, 84 }, { 7, 0, 1482 }, { 10, 0, 76 }, { 10, 0, 142 },
+ { 11, 11, 277 }, { 16, 11, 14 }, { 7, 11, 1977 }, { 4, 11, 189 },
+ { 5, 11, 713 }, { 8, 11, 57 }, { 5, 0, 1015 }, { 10, 11, 371 },
+ { 4, 0, 315 }, { 5, 0, 507 }, { 7, 0, 1370 }, { 4, 11, 552 },
+ { 14, 10, 381 }, { 9, 0, 759 }, { 16, 0, 31 }, { 16, 0, 39 },
+ { 16, 0, 75 }, { 18, 0, 24 }, { 20, 0, 42 }, { 24, 0, 1 },
+ { 6, 0, 712 }, { 6, 0, 1722 }, { 5, 10, 663 }, { 5, 10, 846 },
+ { 8, 0, 222 }, { 8, 0, 476 }, { 9, 0, 238 }, { 11, 0, 516 },
+ { 11, 0, 575 }, { 15, 0, 109 }, { 18, 0, 100 }, { 7, 0, 1402 },
+ { 7, 0, 1414 }, { 12, 0, 456 }, { 5, 10, 378 }, { 8, 10, 465 },
+ { 9, 10, 286 }, { 10, 10, 185 }, { 10, 10, 562 }, { 10, 10, 635 },
+ { 11, 10, 31 }, { 11, 10, 393 }, { 13, 10, 312 }, { 18, 10, 65 },
+ { 18, 10, 96 }, { 19, 10, 89 }, { 4, 0, 986 }, { 6, 0, 1958 },
+ { 6, 0, 2032 }, { 8, 0, 934 }, { 10, 0, 985 }, { 7, 10, 1880 },
+ { 9, 10, 680 }, { 11, 10, 798 }, { 6, 10, 1770 }, { 17, 11, 49 },
+ { 4, 11, 614 }, { 4, 10, 648 }, { 5, 10, 945 }, { 6, 10, 1656 },
+ { 6, 10, 1787 }, { 7, 10, 167 }, { 8, 10, 824 }, { 9, 10, 391 },
+ { 10, 10, 375 }, { 11, 10, 185 }, { 10, 11, 661 }, { 7, 0, 1273 },
+ { 7, 11, 1945 }, { 7, 0, 706 }, { 7, 0, 1058 }, { 10, 0, 538 },
+ { 7, 10, 1645 }, { 8, 10, 352 }, { 9, 10, 249 }, { 4, 10, 152 },
+ { 11, 0, 92 }, { 11, 0, 196 }, { 11, 0, 409 }, { 11, 0, 450 },
+ { 11, 0, 666 }, { 11, 0, 777 }, { 12, 0, 262 }, { 13, 0, 385 },
+ { 13, 0, 393 }, { 15, 0, 115 }, { 16, 0, 45 }, { 17, 0, 82 },
+ { 5, 10, 1006 }, { 6, 0, 40 }, { 7, 0, 1781 }, { 9, 11, 614 },
+ { 11, 11, 327 }, { 5, 10, 420 }, { 7, 10, 1449 }, { 7, 0, 431 },
+ { 10, 0, 97 }, { 7, 10, 832 }, { 6, 0, 423 }, { 7, 0, 665 },
+ { 7, 0, 1210 }, { 7, 0, 237 }, { 8, 0, 664 }, { 9, 0, 42 },
+ { 9, 0, 266 }, { 9, 0, 380 }, { 9, 0, 645 }, { 10, 0, 177 },
+ { 10, 0, 276 }, { 7, 0, 264 }, { 5, 10, 351 }, { 8, 0, 213 },
+ { 5, 10, 40 }, { 7, 10, 598 }, { 7, 10, 1638 }, { 9, 10, 166 },
+ { 9, 10, 640 }, { 9, 10, 685 }, { 9, 10, 773 }, { 11, 10, 215 },
+ { 13, 10, 65 }, { 14, 10, 172 }, { 14, 10, 317 }, { 17, 10, 6 },
+ { 5, 11, 84 }, { 6, 11, 163 }, { 8, 10, 60 }, { 9, 10, 343 },
+ { 11, 10, 769 }, { 9, 0, 455 }, { 5, 11, 410 }, { 8, 0, 906 },
+ { 12, 0, 700 }, { 12, 0, 706 }, { 12, 0, 729 }, { 21, 11, 33 },
+ { 22, 11, 40 }, { 7, 10, 1951 }, { 8, 10, 765 }, { 8, 10, 772 },
+ { 12, 10, 671 }, { 7, 10, 108 }, { 8, 10, 219 }, { 8, 10, 388 },
+ { 9, 10, 639 }, { 9, 10, 775 }, { 11, 10, 275 }, { 12, 10, 464 },
+ { 5, 11, 322 }, { 7, 11, 1941 }, { 8, 11, 186 }, { 9, 11, 262 },
+ { 10, 11, 187 }, { 14, 11, 208 }, { 18, 11, 130 }, { 11, 0, 624 },
+ { 8, 0, 574 }, { 5, 11, 227 }, { 12, 11, 29 }, { 7, 11, 1546 },
+ { 11, 11, 299 }, { 14, 11, 407 }, { 5, 10, 15 }, { 6, 10, 56 },
+ { 7, 10, 1758 }, { 8, 10, 500 }, { 9, 10, 730 }, { 11, 10, 331 },
+ { 13, 10, 150 }, { 14, 10, 282 }, { 7, 11, 1395 }, { 8, 11, 486 },
+ { 9, 11, 236 }, { 9, 11, 878 }, { 10, 11, 218 }, { 11, 11, 95 },
+ { 19, 11, 17 }, { 19, 11, 31 }, { 7, 11, 2043 }, { 4, 0, 354 },
+ { 18, 11, 4 }, { 12, 11, 80 }, { 7, 0, 1558 }, { 6, 10, 1886 },
+ { 5, 10, 205 }, { 6, 10, 438 }, { 9, 10, 711 }, { 5, 11, 522 },
+ { 5, 10, 534 }, { 7, 0, 235 }, { 7, 0, 1475 }, { 15, 0, 68 },
+ { 18, 0, 120 }, { 9, 10, 691 }, { 4, 0, 942 }, { 6, 0, 1813 },
+ { 8, 0, 917 }, { 10, 0, 884 }, { 12, 0, 696 }, { 12, 0, 717 },
+ { 12, 0, 723 }, { 12, 0, 738 }, { 12, 0, 749 }, { 12, 0, 780 },
+ { 16, 0, 97 }, { 18, 0, 169 }, { 6, 10, 443 }, { 8, 11, 562 },
+ { 9, 10, 237 }, { 9, 10, 571 }, { 9, 10, 695 }, { 10, 10, 139 },
+ { 11, 10, 715 }, { 12, 10, 417 }, { 13, 10, 421 }, { 7, 0, 957 },
+ { 5, 0, 830 }, { 6, 11, 1771 }, { 18, 0, 23 }, { 5, 0, 496 },
+ { 6, 0, 694 }, { 7, 0, 203 }, { 7, 11, 1190 }, { 9, 11, 620 },
+ { 9, 11, 132 }, { 6, 0, 547 }, { 6, 0, 1549 }, { 8, 11, 258 },
+ { 9, 11, 208 }, { 9, 11, 359 }, { 4, 0, 864 }, { 5, 0, 88 },
+ { 9, 0, 239 }, { 7, 11, 493 }, { 4, 11, 317 }, { 7, 11, 1279 },
+ { 4, 11, 477 }, { 4, 10, 578 }, { 5, 11, 63 }, { 5, 11, 509 },
+ { 7, 0, 650 }, { 7, 0, 1310 }, { 7, 0, 1076 }, { 9, 0, 80 },
+ { 11, 0, 78 }, { 11, 0, 421 }, { 11, 0, 534 }, { 12, 0, 545 },
+ { 4, 11, 288 }, { 12, 0, 553 }, { 14, 0, 118 }, { 5, 10, 923 },
+ { 7, 0, 274 }, { 11, 0, 479 }, { 11, 0, 507 }, { 8, 11, 89 },
+ { 8, 11, 620 }, { 9, 11, 49 }, { 10, 11, 774 }, { 11, 11, 628 },
+ { 12, 11, 322 }, { 15, 11, 124 }, { 4, 0, 497 }, { 7, 0, 1584 },
+ { 7, 0, 261 }, { 7, 0, 1115 }, { 7, 0, 1354 }, { 7, 0, 1404 },
+ { 7, 0, 1588 }, { 7, 0, 1705 }, { 7, 0, 1902 }, { 9, 0, 465 },
+ { 10, 0, 248 }, { 10, 0, 349 }, { 10, 0, 647 }, { 11, 0, 527 },
+ { 11, 0, 660 }, { 11, 0, 669 }, { 12, 0, 529 }, { 13, 0, 305 },
+ { 4, 10, 924 }, { 5, 10, 665 }, { 8, 0, 13 }, { 6, 0, 791 },
+ { 10, 11, 120 }, { 7, 0, 642 }, { 8, 0, 250 }, { 11, 0, 123 },
+ { 11, 0, 137 }, { 13, 0, 48 }, { 14, 0, 95 }, { 4, 10, 265 },
+ { 7, 10, 807 }, { 7, 10, 950 }, { 5, 10, 93 }, { 12, 10, 267 },
+ { 7, 0, 1429 }, { 4, 0, 949 }, { 10, 0, 885 }, { 10, 0, 891 },
+ { 10, 0, 900 }, { 10, 0, 939 }, { 12, 0, 760 }, { 14, 0, 449 },
+ { 11, 11, 366 }, { 4, 0, 818 }, { 6, 11, 85 }, { 7, 10, 994 },
+ { 7, 0, 330 }, { 5, 10, 233 }, { 5, 10, 320 }, { 6, 10, 140 },
+ { 8, 10, 295 }, { 4, 0, 1004 }, { 8, 0, 982 }, { 8, 0, 993 },
+ { 5, 10, 978 }, { 4, 10, 905 }, { 6, 10, 1701 }, { 9, 10, 843 },
+ { 10, 0, 545 }, { 12, 0, 301 }, { 6, 0, 947 }, { 6, 0, 1062 },
+ { 6, 0, 1188 }, { 4, 0, 904 }, { 5, 0, 794 }, { 24, 10, 6 },
+ { 6, 0, 1372 }, { 7, 11, 608 }, { 5, 11, 279 }, { 6, 11, 235 },
+ { 7, 11, 468 }, { 8, 11, 446 }, { 9, 11, 637 }, { 10, 11, 717 },
+ { 11, 11, 738 }, { 12, 11, 514 }, { 4, 10, 509 }, { 5, 11, 17 },
+ { 6, 11, 371 }, { 9, 11, 528 }, { 4, 0, 693 }, { 4, 11, 115 },
+ { 5, 11, 669 }, { 6, 11, 407 }, { 8, 11, 311 }, { 11, 11, 10 },
+ { 13, 11, 5 }, { 11, 0, 377 }, { 7, 10, 273 }, { 9, 11, 381 },
+ { 7, 0, 695 }, { 7, 0, 386 }, { 10, 0, 713 }, { 7, 10, 1041 },
+ { 6, 0, 1291 }, { 6, 0, 7 }, { 6, 0, 35 }, { 7, 0, 147 },
+ { 7, 0, 1069 }, { 7, 0, 1568 }, { 7, 0, 1575 }, { 7, 0, 1917 },
+ { 8, 0, 43 }, { 8, 0, 208 }, { 9, 0, 128 }, { 9, 0, 866 },
+ { 10, 0, 20 }, { 11, 0, 981 }, { 19, 0, 33 }, { 7, 0, 893 },
+ { 13, 0, 424 }, { 11, 10, 234 }, { 22, 11, 56 }, { 5, 11, 779 },
+ { 5, 11, 807 }, { 6, 11, 1655 }, { 6, 11, 1676 }, { 5, 10, 802 },
+ { 7, 10, 2021 }, { 8, 10, 805 }, { 4, 11, 196 }, { 5, 10, 167 },
+ { 5, 11, 558 }, { 5, 10, 899 }, { 5, 11, 949 }, { 6, 10, 410 },
+ { 9, 10, 777 }, { 9, 10, 789 }, { 6, 10, 1705 }, { 8, 0, 904 },
+ { 12, 0, 787 }, { 6, 0, 322 }, { 9, 0, 552 }, { 11, 0, 274 },
+ { 13, 0, 209 }, { 13, 0, 499 }, { 14, 0, 85 }, { 15, 0, 126 },
+ { 17, 0, 70 }, { 7, 10, 10 }, { 5, 10, 11 }, { 6, 10, 117 },
+ { 6, 10, 485 }, { 7, 10, 1133 }, { 9, 10, 582 }, { 9, 10, 594 },
+ { 11, 10, 21 }, { 11, 10, 818 }, { 12, 10, 535 }, { 13, 10, 86 },
+ { 4, 10, 264 }, { 7, 10, 1067 }, { 8, 10, 204 }, { 8, 10, 385 },
+ { 11, 10, 953 }, { 4, 11, 752 }, { 10, 10, 56 }, { 5, 10, 470 },
+ { 6, 0, 1808 }, { 8, 0, 83 }, { 8, 0, 742 }, { 8, 0, 817 },
+ { 9, 0, 28 }, { 9, 0, 29 }, { 9, 0, 885 }, { 10, 0, 387 },
+ { 11, 0, 633 }, { 11, 0, 740 }, { 13, 0, 235 }, { 13, 0, 254 },
+ { 15, 0, 143 }, { 15, 0, 146 }, { 12, 0, 49 }, { 6, 0, 1832 },
+ { 4, 11, 227 }, { 5, 11, 159 }, { 5, 11, 409 }, { 7, 11, 80 },
+ { 10, 11, 294 }, { 10, 11, 479 }, { 12, 11, 418 }, { 14, 11, 50 },
+ { 14, 11, 249 }, { 14, 11, 295 }, { 7, 11, 1470 }, { 8, 11, 66 },
+ { 8, 11, 137 }, { 8, 11, 761 }, { 9, 11, 638 }, { 11, 11, 80 },
+ { 11, 11, 212 }, { 11, 11, 368 }, { 11, 11, 418 }, { 12, 11, 8 },
+ { 13, 11, 15 }, { 16, 11, 61 }, { 17, 11, 59 }, { 19, 11, 28 },
+ { 20, 11, 84 }, { 11, 10, 1015 }, { 10, 11, 468 }, { 7, 0, 421 },
+ { 6, 0, 415 }, { 7, 0, 1049 }, { 9, 0, 442 }, { 6, 11, 38 },
+ { 7, 11, 1220 }, { 8, 11, 185 }, { 8, 11, 256 }, { 9, 11, 22 },
+ { 9, 11, 331 }, { 10, 11, 738 }, { 11, 11, 205 }, { 11, 11, 540 },
+ { 11, 11, 746 }, { 13, 11, 399 }, { 13, 11, 465 }, { 14, 11, 88 },
+ { 14, 11, 194 }, { 11, 0, 289 }, { 5, 10, 715 }, { 4, 0, 110 },
+ { 10, 0, 415 }, { 10, 0, 597 }, { 14, 0, 206 }, { 4, 11, 159 },
+ { 6, 11, 115 }, { 7, 11, 252 }, { 7, 11, 257 }, { 7, 11, 1928 },
+ { 8, 11, 69 }, { 9, 11, 384 }, { 10, 11, 91 }, { 10, 11, 615 },
+ { 12, 11, 375 }, { 14, 11, 235 }, { 18, 11, 117 }, { 19, 11, 123 },
+ { 5, 11, 911 }, { 8, 11, 278 }, { 7, 0, 205 }, { 7, 0, 2000 },
+ { 8, 10, 794 }, { 9, 10, 400 }, { 10, 10, 298 }, { 14, 10, 228 },
+ { 7, 11, 1774 }, { 4, 11, 151 }, { 7, 11, 1567 }, { 8, 11, 351 },
+ { 9, 11, 322 }, { 8, 10, 724 }, { 5, 11, 990 }, { 7, 0, 1539 },
+ { 11, 0, 512 }, { 13, 0, 205 }, { 19, 0, 30 }, { 22, 0, 36 },
+ { 23, 0, 19 }, { 7, 11, 1539 }, { 5, 11, 194 }, { 7, 11, 1662 },
+ { 9, 11, 90 }, { 12, 11, 180 }, { 6, 10, 190 }, { 7, 10, 768 },
+ { 7, 10, 1170 }, { 6, 0, 1340 }, { 4, 0, 283 }, { 7, 0, 1194 },
+ { 5, 11, 425 }, { 5, 11, 971 }, { 12, 0, 549 }, { 14, 10, 67 },
+ { 19, 10, 60 }, { 7, 10, 1023 }, { 6, 0, 1720 }, { 10, 11, 587 },
+ { 5, 11, 72 }, { 6, 11, 264 }, { 7, 11, 21 }, { 7, 11, 46 },
+ { 7, 11, 2013 }, { 8, 11, 215 }, { 8, 11, 513 }, { 10, 11, 266 },
+ { 11, 11, 22 }, { 5, 0, 319 }, { 7, 0, 534 }, { 6, 10, 137 },
+ { 9, 10, 75 }, { 9, 10, 253 }, { 10, 10, 194 }, { 10, 10, 444 },
+ { 7, 0, 1180 }, { 20, 0, 112 }, { 6, 11, 239 }, { 7, 11, 118 },
+ { 10, 11, 95 }, { 11, 11, 603 }, { 13, 11, 443 }, { 14, 11, 160 },
+ { 15, 11, 4 }, { 6, 11, 431 }, { 5, 11, 874 }, { 6, 11, 1677 },
+ { 11, 10, 643 }, { 12, 10, 115 }, { 15, 11, 0 }, { 6, 0, 967 },
+ { 6, 11, 65 }, { 7, 11, 939 }, { 7, 11, 1172 }, { 7, 11, 1671 },
+ { 9, 11, 540 }, { 10, 11, 696 }, { 11, 11, 265 }, { 11, 11, 732 },
+ { 11, 11, 928 }, { 11, 11, 937 }, { 12, 11, 399 }, { 13, 11, 438 },
+ { 21, 11, 19 }, { 9, 11, 200 }, { 7, 0, 1940 }, { 5, 10, 760 },
+ { 7, 10, 542 }, { 8, 10, 135 }, { 8, 10, 496 }, { 12, 11, 44 },
+ { 7, 11, 1655 }, { 8, 11, 305 }, { 7, 10, 319 }, { 7, 10, 355 },
+ { 7, 10, 763 }, { 10, 10, 389 }, { 17, 10, 43 }, { 8, 0, 735 },
+ { 10, 10, 786 }, { 9, 11, 19 }, { 4, 11, 696 }, { 5, 0, 132 },
+ { 9, 0, 486 }, { 9, 0, 715 }, { 10, 0, 458 }, { 11, 0, 373 },
+ { 11, 0, 668 }, { 11, 0, 795 }, { 11, 0, 897 }, { 12, 0, 272 },
+ { 12, 0, 424 }, { 12, 0, 539 }, { 12, 0, 558 }, { 14, 0, 245 },
+ { 14, 0, 263 }, { 14, 0, 264 }, { 14, 0, 393 }, { 14, 0, 403 },
+ { 10, 0, 38 }, { 11, 0, 784 }, { 4, 0, 838 }, { 4, 11, 302 },
+ { 7, 11, 1766 }, { 5, 0, 379 }, { 5, 0, 8 }, { 6, 0, 89 },
+ { 6, 0, 400 }, { 7, 0, 1569 }, { 7, 0, 1623 }, { 7, 0, 1850 },
+ { 8, 0, 218 }, { 8, 0, 422 }, { 9, 0, 570 }, { 10, 0, 626 },
+ { 4, 11, 726 }, { 5, 11, 630 }, { 4, 0, 1017 }, { 10, 0, 660 },
+ { 6, 0, 387 }, { 7, 0, 882 }, { 13, 0, 111 }, { 6, 0, 224 },
+ { 7, 0, 877 }, { 9, 0, 647 }, { 4, 10, 58 }, { 5, 10, 286 },
+ { 6, 10, 319 }, { 7, 10, 402 }, { 7, 10, 1254 }, { 7, 10, 1903 },
+ { 8, 10, 356 }, { 12, 10, 408 }, { 7, 0, 790 }, { 9, 0, 510 },
+ { 10, 0, 53 }, { 4, 10, 389 }, { 9, 10, 181 }, { 10, 10, 29 },
+ { 10, 10, 816 }, { 11, 10, 311 }, { 11, 10, 561 }, { 12, 10, 67 },
+ { 13, 10, 181 }, { 14, 0, 458 }, { 6, 11, 118 }, { 7, 11, 215 },
+ { 7, 11, 1521 }, { 12, 11, 11 }, { 6, 0, 954 }, { 7, 0, 394 },
+ { 6, 0, 1367 }, { 5, 11, 225 }, { 5, 10, 373 }, { 4, 0, 882 },
+ { 7, 0, 1409 }, { 7, 10, 1972 }, { 7, 10, 1793 }, { 4, 11, 370 },
+ { 5, 11, 756 }, { 7, 11, 1326 }, { 22, 11, 13 }, { 7, 11, 354 },
+ { 10, 11, 410 }, { 11, 11, 815 }, { 6, 11, 1662 }, { 7, 11, 48 },
+ { 8, 11, 771 }, { 10, 11, 116 }, { 13, 11, 104 }, { 14, 11, 105 },
+ { 14, 11, 184 }, { 15, 11, 168 }, { 19, 11, 92 }, { 20, 11, 68 },
+ { 7, 0, 124 }, { 8, 0, 38 }, { 5, 0, 261 }, { 7, 0, 78 },
+ { 7, 0, 199 }, { 8, 0, 815 }, { 9, 0, 126 }, { 10, 0, 342 },
+ { 12, 0, 647 }, { 4, 0, 628 }, { 12, 0, 724 }, { 7, 0, 266 },
+ { 8, 0, 804 }, { 7, 10, 1651 }, { 17, 10, 89 }, { 7, 0, 208 },
+ { 6, 0, 1178 }, { 6, 0, 79 }, { 7, 0, 1519 }, { 4, 10, 672 },
+ { 5, 10, 737 }, { 8, 0, 741 }, { 4, 11, 120 }, { 4, 0, 710 },
+ { 6, 0, 376 }, { 6, 0, 606 }, { 6, 0, 1347 }, { 6, 0, 1494 },
+ { 6, 0, 850 }, { 6, 0, 1553 }, { 9, 0, 821 }, { 5, 10, 145 },
+ { 6, 11, 593 }, { 7, 0, 1311 }, { 12, 0, 135 }, { 4, 0, 467 },
+ { 5, 0, 405 }, { 6, 0, 544 }, { 5, 11, 820 }, { 7, 11, 931 },
+ { 6, 0, 100 }, { 7, 0, 244 }, { 7, 0, 632 }, { 7, 0, 1609 },
+ { 8, 0, 178 }, { 8, 0, 638 }, { 13, 0, 58 }, { 4, 10, 387 },
+ { 7, 10, 1288 }, { 6, 11, 151 }, { 6, 11, 1675 }, { 7, 11, 383 },
+ { 23, 11, 10 }, { 4, 0, 481 }, { 7, 10, 550 }, { 6, 0, 1378 },
+ { 6, 11, 1624 }, { 11, 11, 11 }, { 12, 11, 422 }, { 13, 11, 262 },
+ { 14, 11, 360 }, { 5, 0, 791 }, { 4, 11, 43 }, { 5, 11, 344 },
+ { 5, 11, 357 }, { 7, 0, 1227 }, { 12, 0, 978 }, { 7, 0, 686 },
+ { 8, 0, 33 }, { 8, 0, 238 }, { 10, 0, 616 }, { 11, 0, 467 },
+ { 11, 0, 881 }, { 13, 0, 217 }, { 13, 0, 253 }, { 14, 0, 268 },
+ { 9, 0, 857 }, { 8, 0, 467 }, { 8, 0, 1006 }, { 7, 11, 148 },
+ { 8, 11, 284 }, { 13, 11, 63 }, { 4, 10, 576 }, { 7, 10, 1263 },
+ { 5, 11, 888 }, { 5, 10, 919 }, { 6, 10, 1673 }, { 20, 10, 37 },
+ { 20, 11, 37 }, { 4, 0, 447 }, { 4, 11, 711 }, { 4, 0, 128 },
+ { 5, 0, 415 }, { 6, 0, 462 }, { 7, 0, 294 }, { 7, 0, 578 },
+ { 10, 0, 710 }, { 11, 0, 86 }, { 4, 10, 82 }, { 5, 10, 333 },
+ { 5, 10, 904 }, { 6, 10, 207 }, { 7, 10, 325 }, { 7, 10, 1726 },
+ { 8, 10, 101 }, { 10, 10, 778 }, { 11, 10, 220 }, { 8, 0, 587 },
+ { 9, 11, 440 }, { 5, 10, 903 }, { 6, 0, 427 }, { 7, 0, 1018 },
+ { 10, 0, 692 }, { 4, 0, 195 }, { 7, 0, 802 }, { 12, 10, 147 },
+ { 6, 0, 1546 }, { 6, 0, 684 }, { 4, 10, 705 }, { 8, 0, 345 },
+ { 11, 11, 678 }, { 12, 11, 307 }, { 5, 0, 365 }, { 6, 0, 1683 },
+ { 4, 11, 65 }, { 5, 11, 479 }, { 5, 11, 1004 }, { 7, 11, 1913 },
+ { 8, 11, 317 }, { 9, 11, 302 }, { 10, 11, 612 }, { 13, 11, 22 },
+ { 10, 0, 472 }, { 4, 11, 261 }, { 7, 11, 510 }, { 6, 10, 90 },
+ { 14, 0, 433 }, { 23, 0, 28 }, { 4, 11, 291 }, { 7, 11, 101 },
+ { 9, 11, 515 }, { 12, 11, 152 }, { 12, 11, 443 }, { 13, 11, 392 },
+ { 14, 11, 357 }, { 12, 0, 997 }, { 5, 0, 3 }, { 8, 0, 578 },
+ { 9, 0, 118 }, { 10, 0, 705 }, { 13, 0, 279 }, { 7, 11, 1266 },
+ { 7, 10, 813 }, { 12, 10, 497 }, { 13, 10, 56 }, { 5, 0, 229 },
+ { 6, 10, 125 }, { 7, 10, 1277 }, { 8, 0, 102 }, { 10, 0, 578 },
+ { 10, 0, 672 }, { 12, 0, 496 }, { 13, 0, 408 }, { 14, 0, 121 },
+ { 17, 0, 106 }, { 23, 10, 12 }, { 6, 0, 866 }, { 6, 0, 1080 },
+ { 8, 0, 1022 }, { 4, 11, 130 }, { 7, 11, 843 }, { 5, 11, 42 },
+ { 5, 11, 879 }, { 7, 11, 245 }, { 7, 11, 324 }, { 7, 11, 1532 },
+ { 11, 11, 463 }, { 11, 11, 472 }, { 13, 11, 363 }, { 16, 11, 52 },
+ { 22, 0, 55 }, { 8, 0, 115 }, { 8, 0, 350 }, { 9, 0, 489 },
+ { 10, 0, 128 }, { 11, 0, 306 }, { 12, 0, 373 }, { 14, 0, 30 },
+ { 17, 0, 79 }, { 19, 0, 80 }, { 4, 11, 134 }, { 5, 11, 372 },
+ { 6, 0, 657 }, { 6, 0, 933 }, { 7, 11, 1147 }, { 4, 0, 230 },
+ { 5, 0, 702 }, { 6, 0, 1728 }, { 4, 0, 484 }, { 18, 0, 26 },
+ { 19, 0, 42 }, { 20, 0, 43 }, { 21, 0, 0 }, { 23, 0, 27 },
+ { 24, 0, 14 }, { 7, 0, 185 }, { 7, 0, 703 }, { 6, 0, 417 },
+ { 10, 0, 618 }, { 7, 10, 1106 }, { 9, 10, 770 }, { 11, 10, 112 },
+ { 12, 10, 413 }, { 6, 0, 803 }, { 4, 11, 644 }, { 6, 0, 1262 },
+ { 7, 11, 540 }, { 12, 10, 271 }, { 17, 10, 109 }, { 7, 11, 123 },
+ { 4, 0, 633 }, { 6, 11, 623 }, { 4, 11, 908 }, { 5, 11, 359 },
+ { 5, 11, 508 }, { 6, 11, 1723 }, { 7, 11, 343 }, { 7, 11, 1996 },
+ { 7, 11, 2026 }, { 7, 0, 479 }, { 10, 0, 262 }, { 7, 10, 304 },
+ { 9, 10, 646 }, { 9, 10, 862 }, { 11, 10, 696 }, { 12, 10, 208 },
+ { 15, 10, 79 }, { 19, 10, 108 }, { 4, 11, 341 }, { 7, 11, 480 },
+ { 6, 0, 830 }, { 5, 0, 70 }, { 5, 0, 622 }, { 6, 0, 334 },
+ { 7, 0, 1032 }, { 9, 0, 171 }, { 11, 0, 26 }, { 11, 0, 213 },
+ { 11, 0, 637 }, { 11, 0, 707 }, { 12, 0, 202 }, { 12, 0, 380 },
+ { 13, 0, 226 }, { 13, 0, 355 }, { 14, 0, 222 }, { 17, 0, 42 },
+ { 7, 10, 981 }, { 15, 0, 217 }, { 9, 11, 114 }, { 4, 0, 23 },
+ { 4, 0, 141 }, { 5, 0, 313 }, { 5, 0, 1014 }, { 6, 0, 50 },
+ { 6, 0, 51 }, { 7, 0, 142 }, { 7, 0, 384 }, { 7, 0, 559 },
+ { 8, 0, 640 }, { 9, 0, 460 }, { 9, 0, 783 }, { 11, 0, 741 },
+ { 12, 0, 183 }, { 13, 0, 488 }, { 13, 0, 360 }, { 7, 0, 1586 },
+ { 7, 11, 1995 }, { 8, 11, 299 }, { 11, 11, 890 }, { 12, 11, 674 },
+ { 4, 10, 434 }, { 7, 0, 652 }, { 6, 10, 550 }, { 7, 0, 766 },
+ { 5, 10, 553 }, { 10, 10, 824 }, { 7, 0, 737 }, { 8, 0, 298 },
+ { 8, 10, 452 }, { 4, 11, 238 }, { 5, 11, 503 }, { 6, 11, 179 },
+ { 7, 11, 2003 }, { 8, 11, 381 }, { 8, 11, 473 }, { 9, 11, 149 },
+ { 10, 11, 183 }, { 15, 11, 45 }, { 15, 11, 86 }, { 5, 10, 292 },
+ { 5, 0, 222 }, { 9, 0, 655 }, { 10, 0, 534 }, { 10, 10, 135 },
+ { 4, 11, 121 }, { 5, 11, 156 }, { 5, 11, 349 }, { 9, 11, 136 },
+ { 10, 11, 605 }, { 14, 11, 342 }, { 19, 11, 107 }, { 9, 0, 906 },
+ { 6, 0, 1013 }, { 6, 0, 1250 }, { 6, 0, 1956 }, { 6, 0, 2009 },
+ { 8, 0, 991 }, { 16, 0, 120 }, { 7, 11, 1192 }, { 10, 0, 503 },
+ { 5, 0, 154 }, { 7, 0, 1491 }, { 10, 0, 379 }, { 10, 0, 485 },
+ { 6, 0, 1867 }, { 6, 0, 1914 }, { 6, 0, 1925 }, { 9, 0, 917 },
+ { 9, 0, 925 }, { 9, 0, 932 }, { 9, 0, 951 }, { 9, 0, 1007 },
+ { 9, 0, 1013 }, { 12, 0, 806 }, { 12, 0, 810 }, { 12, 0, 814 },
+ { 12, 0, 816 }, { 12, 0, 824 }, { 12, 0, 832 }, { 12, 0, 837 },
+ { 12, 0, 863 }, { 12, 0, 868 }, { 12, 0, 870 }, { 12, 0, 889 },
+ { 12, 0, 892 }, { 12, 0, 900 }, { 12, 0, 902 }, { 12, 0, 908 },
+ { 12, 0, 933 }, { 12, 0, 942 }, { 12, 0, 949 }, { 12, 0, 954 },
+ { 15, 0, 175 }, { 15, 0, 203 }, { 15, 0, 213 }, { 15, 0, 218 },
+ { 15, 0, 225 }, { 15, 0, 231 }, { 15, 0, 239 }, { 15, 0, 248 },
+ { 15, 0, 252 }, { 18, 0, 190 }, { 18, 0, 204 }, { 18, 0, 215 },
+ { 18, 0, 216 }, { 18, 0, 222 }, { 18, 0, 225 }, { 18, 0, 230 },
+ { 18, 0, 239 }, { 18, 0, 241 }, { 21, 0, 42 }, { 21, 0, 43 },
+ { 21, 0, 44 }, { 21, 0, 45 }, { 21, 0, 46 }, { 21, 0, 53 },
+ { 24, 0, 27 }, { 24, 0, 31 }, { 5, 0, 716 }, { 7, 0, 844 },
+ { 4, 0, 91 }, { 5, 0, 388 }, { 5, 0, 845 }, { 6, 0, 206 },
+ { 6, 0, 252 }, { 6, 0, 365 }, { 7, 0, 136 }, { 7, 0, 531 },
+ { 8, 0, 621 }, { 7, 10, 393 }, { 10, 10, 603 }, { 11, 10, 206 },
+ { 6, 11, 80 }, { 6, 11, 1694 }, { 7, 11, 173 }, { 7, 11, 1974 },
+ { 9, 11, 547 }, { 10, 11, 730 }, { 14, 11, 18 }, { 22, 11, 39 },
+ { 9, 0, 748 }, { 4, 11, 923 }, { 6, 11, 1711 }, { 4, 10, 912 },
+ { 9, 10, 232 }, { 7, 10, 98 }, { 7, 10, 1973 }, { 8, 10, 716 },
+ { 14, 0, 103 }, { 5, 10, 733 }, { 4, 11, 595 }, { 12, 0, 158 },
+ { 18, 0, 8 }, { 19, 0, 62 }, { 20, 0, 6 }, { 22, 0, 4 },
+ { 23, 0, 2 }, { 23, 0, 9 }, { 5, 11, 240 }, { 6, 11, 459 },
+ { 7, 11, 12 }, { 7, 11, 114 }, { 7, 11, 502 }, { 7, 11, 1751 },
+ { 7, 11, 1753 }, { 7, 11, 1805 }, { 8, 11, 658 }, { 9, 11, 1 },
+ { 11, 11, 959 }, { 13, 11, 446 }, { 14, 11, 211 }, { 7, 0, 576 },
+ { 5, 0, 771 }, { 5, 0, 863 }, { 5, 0, 898 }, { 6, 0, 648 },
+ { 6, 0, 1632 }, { 6, 0, 1644 }, { 6, 0, 1780 }, { 5, 0, 331 },
+ { 7, 11, 633 }, { 7, 11, 905 }, { 7, 11, 909 }, { 7, 11, 1538 },
+ { 9, 11, 767 }, { 12, 11, 636 }, { 12, 0, 632 }, { 5, 0, 107 },
+ { 7, 0, 201 }, { 8, 0, 518 }, { 6, 0, 446 }, { 7, 0, 1817 },
+ { 6, 11, 490 }, { 9, 0, 851 }, { 13, 0, 510 }, { 7, 11, 250 },
+ { 8, 11, 506 }, { 8, 11, 507 }, { 4, 0, 504 }, { 9, 10, 72 },
+ { 4, 11, 158 }, { 4, 11, 140 }, { 7, 11, 362 }, { 8, 11, 209 },
+ { 9, 11, 10 }, { 9, 11, 160 }, { 9, 11, 503 }, { 10, 11, 689 },
+ { 11, 11, 350 }, { 11, 11, 553 }, { 11, 11, 725 }, { 12, 11, 252 },
+ { 12, 11, 583 }, { 13, 11, 192 }, { 13, 11, 352 }, { 14, 11, 269 },
+ { 14, 11, 356 }, { 20, 11, 50 }, { 6, 11, 597 }, { 7, 11, 1318 },
+ { 7, 10, 1454 }, { 5, 0, 883 }, { 5, 0, 975 }, { 8, 0, 392 },
+ { 20, 0, 7 }, { 6, 11, 228 }, { 7, 11, 1341 }, { 9, 11, 408 },
+ { 10, 11, 343 }, { 11, 11, 348 }, { 11, 10, 600 }, { 12, 11, 99 },
+ { 13, 10, 245 }, { 18, 11, 1 }, { 18, 11, 11 }, { 19, 11, 4 },
+ { 6, 11, 296 }, { 5, 0, 922 }, { 6, 0, 1707 }, { 4, 11, 557 },
+ { 4, 11, 548 }, { 7, 10, 164 }, { 7, 10, 1571 }, { 9, 10, 107 },
+ { 12, 10, 225 }, { 7, 11, 197 }, { 8, 11, 142 }, { 8, 11, 325 },
+ { 9, 11, 150 }, { 9, 11, 596 }, { 10, 11, 350 }, { 10, 11, 353 },
+ { 11, 11, 74 }, { 11, 11, 315 }, { 14, 11, 423 }, { 15, 11, 141 },
+ { 5, 0, 993 }, { 7, 0, 515 }, { 9, 0, 91 }, { 4, 0, 131 },
+ { 8, 0, 200 }, { 5, 10, 484 }, { 5, 10, 510 }, { 6, 10, 434 },
+ { 7, 10, 1000 }, { 7, 10, 1098 }, { 8, 10, 2 }, { 24, 0, 10 },
+ { 4, 11, 62 }, { 5, 11, 83 }, { 6, 11, 399 }, { 6, 11, 579 },
+ { 7, 11, 692 }, { 7, 11, 846 }, { 7, 11, 1015 }, { 7, 11, 1799 },
+ { 8, 11, 403 }, { 9, 11, 394 }, { 10, 11, 133 }, { 12, 11, 4 },
+ { 12, 11, 297 }, { 12, 11, 452 }, { 16, 11, 81 }, { 18, 11, 19 },
+ { 18, 11, 25 }, { 21, 11, 14 }, { 22, 11, 12 }, { 23, 11, 18 },
+ { 12, 11, 459 }, { 4, 11, 177 }, { 7, 0, 1433 }, { 9, 0, 365 },
+ { 9, 11, 365 }, { 4, 10, 460 }, { 5, 0, 103 }, { 6, 0, 2004 },
+ { 7, 0, 921 }, { 8, 0, 580 }, { 8, 0, 593 }, { 8, 0, 630 },
+ { 10, 0, 28 }, { 5, 11, 411 }, { 7, 11, 653 }, { 4, 10, 932 },
+ { 5, 10, 891 }, { 4, 0, 911 }, { 5, 0, 867 }, { 5, 0, 1013 },
+ { 7, 0, 2034 }, { 8, 0, 798 }, { 8, 0, 813 }, { 7, 11, 439 },
+ { 10, 11, 727 }, { 11, 11, 260 }, { 11, 11, 684 }, { 8, 10, 625 },
+ { 5, 11, 208 }, { 7, 11, 753 }, { 7, 11, 1528 }, { 5, 0, 461 },
+ { 7, 0, 1925 }, { 12, 0, 39 }, { 13, 0, 265 }, { 13, 0, 439 },
+ { 6, 10, 76 }, { 6, 0, 853 }, { 8, 10, 92 }, { 9, 10, 221 },
+ { 5, 0, 135 }, { 6, 0, 519 }, { 7, 0, 1722 }, { 10, 0, 271 },
+ { 11, 0, 261 }, { 17, 0, 54 }, { 11, 11, 814 }, { 14, 0, 338 },
+ { 20, 0, 81 }, { 4, 0, 300 }, { 5, 0, 436 }, { 5, 0, 419 },
+ { 5, 0, 687 }, { 7, 0, 864 }, { 9, 0, 470 }, { 7, 11, 864 },
+ { 9, 0, 836 }, { 5, 11, 242 }, { 6, 0, 1937 }, { 4, 10, 763 },
+ { 5, 11, 953 }, { 4, 10, 622 }, { 4, 0, 393 }, { 5, 10, 253 },
+ { 8, 0, 357 }, { 10, 0, 745 }, { 14, 0, 426 }, { 17, 0, 94 },
+ { 19, 0, 57 }, { 7, 10, 546 }, { 5, 11, 615 }, { 18, 11, 37 },
+ { 9, 10, 73 }, { 10, 10, 110 }, { 14, 10, 185 }, { 17, 10, 119 },
+ { 11, 0, 703 }, { 7, 10, 624 }, { 7, 10, 916 }, { 10, 10, 256 },
+ { 11, 10, 87 }, { 5, 11, 290 }, { 5, 10, 212 }, { 12, 10, 35 },
+ { 13, 10, 382 }, { 4, 11, 380 }, { 5, 11, 52 }, { 7, 11, 277 },
+ { 9, 11, 368 }, { 11, 11, 791 }, { 5, 0, 387 }, { 10, 11, 138 },
+ { 11, 11, 476 }, { 4, 0, 6 }, { 5, 0, 708 }, { 8, 0, 75 },
+ { 7, 0, 1351 }, { 9, 0, 581 }, { 10, 0, 639 }, { 11, 0, 453 },
+ { 12, 0, 584 }, { 4, 0, 303 }, { 10, 0, 772 }, { 7, 10, 1175 },
+ { 4, 0, 749 }, { 5, 10, 816 }, { 6, 11, 256 }, { 7, 11, 307 },
+ { 7, 11, 999 }, { 7, 11, 1481 }, { 7, 11, 1732 }, { 7, 11, 1738 },
+ { 8, 11, 265 }, { 9, 11, 414 }, { 11, 11, 316 }, { 12, 11, 52 },
+ { 13, 11, 420 }, { 19, 11, 100 }, { 7, 11, 1296 }, { 6, 0, 1065 },
+ { 5, 10, 869 }, { 5, 10, 968 }, { 6, 10, 1626 }, { 8, 10, 734 },
+ { 8, 10, 784 }, { 4, 10, 542 }, { 6, 10, 1716 }, { 6, 10, 1727 },
+ { 7, 10, 1082 }, { 7, 10, 1545 }, { 8, 10, 56 }, { 8, 10, 118 },
+ { 8, 10, 412 }, { 8, 10, 564 }, { 9, 10, 888 }, { 9, 10, 908 },
+ { 10, 10, 50 }, { 10, 10, 423 }, { 11, 10, 685 }, { 11, 10, 697 },
+ { 11, 10, 933 }, { 12, 10, 299 }, { 13, 10, 126 }, { 13, 10, 136 },
+ { 13, 10, 170 }, { 13, 10, 190 }, { 6, 0, 226 }, { 4, 0, 106 },
+ { 7, 0, 310 }, { 11, 0, 717 }, { 5, 11, 723 }, { 5, 0, 890 },
+ { 5, 0, 988 }, { 4, 10, 232 }, { 9, 10, 202 }, { 10, 10, 474 },
+ { 12, 10, 433 }, { 6, 0, 626 }, { 14, 0, 431 }, { 10, 0, 706 },
+ { 22, 0, 44 }, { 13, 0, 51 }, { 6, 10, 108 }, { 7, 10, 1003 },
+ { 7, 10, 1181 }, { 8, 10, 111 }, { 8, 10, 343 }, { 4, 0, 698 },
+ { 5, 11, 109 }, { 6, 11, 1784 }, { 7, 11, 1895 }, { 12, 11, 296 },
+ { 12, 11, 302 }, { 6, 0, 828 }, { 6, 10, 1712 }, { 10, 0, 17 },
+ { 7, 0, 1929 }, { 4, 10, 133 }, { 5, 11, 216 }, { 7, 10, 711 },
+ { 7, 10, 1298 }, { 7, 10, 1585 }, { 7, 11, 1879 }, { 9, 11, 141 },
+ { 9, 11, 270 }, { 9, 11, 679 }, { 10, 11, 159 }, { 10, 11, 553 },
+ { 11, 11, 197 }, { 11, 11, 438 }, { 12, 11, 538 }, { 12, 11, 559 },
+ { 13, 11, 193 }, { 13, 11, 423 }, { 14, 11, 144 }, { 14, 11, 166 },
+ { 14, 11, 167 }, { 15, 11, 67 }, { 19, 11, 84 }, { 13, 11, 127 },
+ { 7, 11, 1872 }, { 9, 11, 81 }, { 6, 10, 99 }, { 7, 10, 1808 },
+ { 17, 10, 57 }, { 6, 11, 391 }, { 5, 0, 689 }, { 6, 0, 84 },
+ { 7, 0, 1250 }, { 6, 10, 574 }, { 7, 10, 428 }, { 10, 10, 669 },
+ { 11, 10, 485 }, { 11, 10, 840 }, { 12, 10, 300 }, { 14, 10, 250 },
+ { 7, 11, 322 }, { 8, 11, 249 }, { 7, 11, 432 }, { 7, 11, 1649 },
+ { 7, 10, 1871 }, { 9, 10, 252 }, { 6, 11, 155 }, { 12, 11, 234 },
+ { 7, 0, 871 }, { 19, 0, 27 }, { 19, 11, 27 }, { 12, 0, 498 },
+ { 5, 0, 986 }, { 6, 0, 130 }, { 10, 0, 823 }, { 6, 0, 1793 },
+ { 7, 0, 1582 }, { 8, 0, 458 }, { 10, 0, 101 }, { 10, 0, 318 },
+ { 10, 0, 945 }, { 12, 0, 734 }, { 16, 0, 104 }, { 18, 0, 177 },
+ { 6, 10, 323 }, { 7, 10, 1564 }, { 5, 11, 632 }, { 10, 11, 526 },
+ { 10, 0, 435 }, { 7, 10, 461 }, { 8, 10, 775 }, { 6, 11, 144 },
+ { 7, 11, 948 }, { 7, 11, 1042 }, { 7, 11, 1857 }, { 8, 11, 235 },
+ { 8, 11, 461 }, { 9, 11, 453 }, { 9, 11, 530 }, { 10, 11, 354 },
+ { 17, 11, 77 }, { 19, 11, 99 }, { 20, 11, 79 }, { 10, 0, 966 },
+ { 7, 0, 1644 }, { 9, 0, 129 }, { 7, 0, 997 }, { 8, 0, 502 },
+ { 5, 11, 196 }, { 6, 11, 486 }, { 7, 11, 212 }, { 8, 11, 309 },
+ { 8, 11, 346 }, { 7, 10, 727 }, { 18, 10, 73 }, { 4, 0, 823 },
+ { 4, 11, 686 }, { 7, 0, 1927 }, { 4, 0, 762 }, { 7, 0, 1756 },
+ { 9, 0, 98 }, { 8, 10, 577 }, { 24, 0, 8 }, { 4, 11, 30 },
+ { 5, 11, 43 }, { 24, 11, 8 }, { 7, 0, 1046 }, { 11, 0, 160 },
+ { 7, 0, 492 }, { 4, 10, 413 }, { 5, 10, 677 }, { 7, 11, 492 },
+ { 8, 10, 432 }, { 12, 10, 280 }, { 6, 0, 45 }, { 7, 0, 433 },
+ { 8, 0, 129 }, { 9, 0, 21 }, { 10, 0, 392 }, { 11, 0, 79 },
+ { 12, 0, 499 }, { 13, 0, 199 }, { 13, 0, 451 }, { 7, 0, 558 },
+ { 8, 0, 353 }, { 4, 11, 220 }, { 7, 11, 1535 }, { 9, 11, 93 },
+ { 11, 11, 474 }, { 7, 10, 646 }, { 7, 10, 1730 }, { 11, 10, 446 },
+ { 13, 10, 178 }, { 5, 0, 785 }, { 6, 0, 1145 }, { 8, 0, 81 },
+ { 9, 0, 189 }, { 9, 0, 201 }, { 11, 0, 478 }, { 11, 0, 712 },
+ { 13, 0, 338 }, { 5, 0, 353 }, { 23, 0, 26 }, { 11, 0, 762 },
+ { 4, 10, 395 }, { 6, 0, 2024 }, { 4, 0, 611 }, { 5, 0, 606 },
+ { 9, 10, 174 }, { 10, 10, 164 }, { 11, 10, 440 }, { 11, 10, 841 },
+ { 15, 10, 98 }, { 6, 10, 426 }, { 10, 10, 608 }, { 11, 10, 1002 },
+ { 10, 10, 250 }, { 6, 0, 25 }, { 7, 0, 855 }, { 7, 0, 1258 },
+ { 16, 0, 32 }, { 7, 11, 1725 }, { 10, 11, 393 }, { 5, 11, 263 },
+ { 6, 11, 414 }, { 6, 0, 2011 }, { 5, 10, 476 }, { 4, 0, 4 },
+ { 7, 0, 1118 }, { 7, 0, 1320 }, { 7, 0, 1706 }, { 8, 0, 277 },
+ { 9, 0, 622 }, { 10, 0, 9 }, { 11, 0, 724 }, { 12, 0, 350 },
+ { 12, 0, 397 }, { 13, 0, 28 }, { 13, 0, 159 }, { 15, 0, 89 },
+ { 18, 0, 5 }, { 19, 0, 9 }, { 20, 0, 34 }, { 22, 0, 47 },
+ { 6, 11, 178 }, { 6, 11, 1750 }, { 8, 11, 251 }, { 9, 11, 690 },
+ { 10, 11, 155 }, { 10, 11, 196 }, { 10, 11, 373 }, { 11, 11, 698 },
+ { 13, 11, 155 }, { 20, 11, 93 }, { 5, 11, 97 }, { 9, 11, 393 },
+ { 7, 0, 764 }, { 11, 0, 461 }, { 12, 0, 172 }, { 5, 10, 76 },
+ { 6, 10, 458 }, { 6, 10, 497 }, { 7, 10, 868 }, { 9, 10, 658 },
+ { 10, 10, 594 }, { 11, 10, 566 }, { 12, 10, 338 }, { 13, 10, 200 },
+ { 6, 0, 1449 }, { 10, 11, 40 }, { 6, 11, 1639 }, { 6, 0, 1445 },
+ { 6, 0, 1168 }, { 4, 10, 526 }, { 7, 10, 1029 }, { 7, 10, 1054 },
+ { 4, 11, 191 }, { 7, 11, 934 }, { 8, 11, 647 }, { 17, 11, 97 },
+ { 4, 10, 636 }, { 6, 0, 233 }, { 7, 10, 660 }, { 7, 10, 1124 },
+ { 17, 10, 31 }, { 19, 10, 22 }, { 23, 10, 14 }, { 6, 10, 1699 },
+ { 8, 11, 110 }, { 12, 11, 246 }, { 15, 11, 162 }, { 19, 11, 64 },
+ { 20, 11, 8 }, { 20, 11, 95 }, { 22, 11, 24 }, { 24, 11, 17 },
+ { 5, 11, 165 }, { 9, 11, 346 }, { 10, 11, 655 }, { 5, 11, 319 },
+ { 7, 11, 534 }, { 6, 0, 255 }, { 9, 0, 216 }, { 8, 11, 128 },
+ { 11, 11, 179 }, { 9, 0, 183 }, { 11, 0, 286 }, { 11, 0, 956 },
+ { 23, 0, 3 }, { 4, 0, 536 }, { 7, 0, 1141 }, { 10, 0, 723 },
+ { 11, 0, 371 }, { 4, 10, 279 }, { 7, 10, 301 }, { 9, 10, 362 },
+ { 7, 0, 285 }, { 5, 11, 57 }, { 6, 11, 101 }, { 6, 11, 1663 },
+ { 7, 11, 132 }, { 7, 11, 1048 }, { 7, 11, 1154 }, { 7, 11, 1415 },
+ { 7, 11, 1507 }, { 12, 11, 493 }, { 15, 11, 105 }, { 23, 11, 15 },
+ { 5, 11, 459 }, { 7, 11, 1073 }, { 7, 10, 1743 }, { 8, 11, 241 },
+ { 8, 11, 334 }, { 4, 10, 178 }, { 5, 10, 399 }, { 7, 0, 560 },
+ { 4, 0, 690 }, { 7, 0, 1246 }, { 18, 0, 157 }, { 19, 0, 63 },
+ { 10, 0, 599 }, { 11, 0, 33 }, { 12, 0, 571 }, { 21, 0, 1 },
+ { 6, 11, 324 }, { 6, 11, 520 }, { 7, 11, 338 }, { 7, 11, 1616 },
+ { 7, 11, 1729 }, { 8, 11, 228 }, { 9, 11, 69 }, { 11, 11, 750 },
+ { 7, 0, 1862 }, { 12, 0, 491 }, { 12, 0, 520 }, { 13, 0, 383 },
+ { 14, 0, 244 }, { 7, 11, 734 }, { 6, 10, 1692 }, { 10, 0, 448 },
+ { 11, 0, 630 }, { 17, 0, 117 }, { 6, 10, 202 }, { 7, 11, 705 },
+ { 12, 10, 360 }, { 17, 10, 118 }, { 18, 10, 27 }, { 20, 10, 67 },
+ { 4, 11, 73 }, { 6, 11, 612 }, { 7, 11, 927 }, { 7, 11, 1822 },
+ { 8, 11, 217 }, { 9, 11, 472 }, { 9, 11, 765 }, { 9, 11, 766 },
+ { 10, 11, 408 }, { 11, 11, 51 }, { 11, 11, 793 }, { 12, 11, 266 },
+ { 15, 11, 158 }, { 20, 11, 89 }, { 22, 11, 32 }, { 4, 0, 190 },
+ { 5, 0, 554 }, { 5, 0, 1001 }, { 5, 11, 389 }, { 8, 11, 636 },
+ { 9, 11, 229 }, { 5, 0, 446 }, { 7, 10, 872 }, { 10, 10, 516 },
+ { 11, 10, 167 }, { 9, 10, 313 }, { 4, 10, 224 }, { 6, 0, 1313 },
+ { 5, 10, 546 }, { 7, 10, 35 }, { 8, 10, 11 }, { 8, 10, 12 },
+ { 9, 10, 315 }, { 9, 10, 533 }, { 10, 10, 802 }, { 11, 10, 166 },
+ { 12, 10, 525 }, { 14, 10, 243 }, { 6, 0, 636 }, { 9, 0, 837 },
+ { 5, 10, 241 }, { 8, 10, 242 }, { 9, 10, 451 }, { 10, 10, 667 },
+ { 11, 10, 598 }, { 12, 10, 429 }, { 22, 10, 46 }, { 22, 11, 46 },
+ { 8, 11, 472 }, { 11, 0, 278 }, { 14, 0, 73 }, { 13, 11, 185 },
+ { 4, 0, 868 }, { 6, 0, 972 }, { 4, 10, 366 }, { 9, 10, 516 },
+ { 10, 0, 1010 }, { 5, 11, 189 }, { 6, 10, 1736 }, { 7, 11, 442 },
+ { 7, 11, 443 }, { 8, 11, 281 }, { 12, 11, 174 }, { 13, 11, 83 },
+ { 13, 11, 261 }, { 11, 11, 384 }, { 6, 11, 2 }, { 7, 11, 191 },
+ { 7, 11, 446 }, { 7, 11, 758 }, { 7, 11, 1262 }, { 7, 11, 1737 },
+ { 8, 11, 22 }, { 8, 11, 270 }, { 8, 11, 612 }, { 9, 11, 4 },
+ { 9, 11, 167 }, { 9, 11, 312 }, { 9, 11, 436 }, { 10, 11, 156 },
+ { 10, 11, 216 }, { 10, 11, 311 }, { 10, 11, 623 }, { 11, 11, 72 },
+ { 11, 11, 330 }, { 11, 11, 455 }, { 12, 11, 101 }, { 12, 11, 321 },
+ { 12, 11, 504 }, { 12, 11, 530 }, { 12, 11, 543 }, { 13, 11, 17 },
+ { 13, 11, 156 }, { 13, 11, 334 }, { 14, 11, 48 }, { 15, 11, 70 },
+ { 17, 11, 60 }, { 20, 11, 64 }, { 6, 10, 331 }, { 8, 10, 623 },
+ { 7, 0, 1231 }, { 4, 0, 304 }, { 6, 11, 60 }, { 7, 11, 670 },
+ { 7, 11, 1327 }, { 8, 11, 411 }, { 8, 11, 435 }, { 9, 11, 653 },
+ { 9, 11, 740 }, { 10, 11, 385 }, { 11, 11, 222 }, { 11, 11, 324 },
+ { 11, 11, 829 }, { 12, 11, 611 }, { 7, 0, 506 }, { 6, 11, 166 },
+ { 7, 11, 374 }, { 7, 11, 1174 }, { 14, 11, 43 }, { 18, 11, 21 },
+ { 7, 11, 1694 }, { 7, 10, 1888 }, { 5, 11, 206 }, { 6, 11, 398 },
+ { 7, 11, 50 }, { 22, 0, 26 }, { 6, 0, 53 }, { 6, 0, 199 },
+ { 7, 0, 1408 }, { 8, 0, 32 }, { 8, 0, 93 }, { 10, 0, 397 },
+ { 10, 0, 629 }, { 11, 0, 593 }, { 11, 0, 763 }, { 13, 0, 326 },
+ { 17, 0, 35 }, { 6, 0, 105 }, { 4, 10, 394 }, { 4, 0, 843 },
+ { 10, 0, 794 }, { 11, 0, 704 }, { 13, 0, 396 }, { 5, 0, 114 },
+ { 5, 0, 255 }, { 13, 0, 285 }, { 6, 0, 619 }, { 7, 0, 898 },
+ { 7, 0, 1092 }, { 8, 0, 485 }, { 18, 0, 28 }, { 19, 0, 116 },
+ { 7, 10, 1931 }, { 9, 0, 145 }, { 7, 10, 574 }, { 7, 10, 1719 },
+ { 7, 0, 2035 }, { 8, 0, 19 }, { 9, 0, 89 }, { 10, 0, 831 },
+ { 4, 10, 658 }, { 6, 11, 517 }, { 7, 11, 1159 }, { 10, 11, 621 },
+ { 11, 11, 192 }, { 7, 0, 1933 }, { 7, 11, 1933 }, { 9, 10, 781 },
+ { 10, 10, 144 }, { 11, 10, 385 }, { 13, 10, 161 }, { 13, 10, 228 },
+ { 13, 10, 268 }, { 20, 10, 107 }, { 8, 10, 374 }, { 10, 11, 223 },
+ { 11, 11, 645 }, { 7, 0, 1728 }, { 7, 11, 64 }, { 7, 11, 289 },
+ { 8, 11, 245 }, { 4, 10, 344 }, { 6, 10, 498 }, { 11, 10, 323 },
+ { 8, 0, 746 }, { 7, 10, 1063 }, { 9, 10, 155 }, { 4, 0, 987 },
+ { 6, 0, 1964 }, { 6, 0, 1974 }, { 6, 0, 1990 }, { 8, 0, 995 },
+ { 5, 11, 609 }, { 5, 10, 906 }, { 6, 0, 1550 }, { 6, 0, 874 },
+ { 5, 11, 129 }, { 6, 11, 61 }, { 7, 11, 947 }, { 4, 0, 1018 },
+ { 6, 0, 1938 }, { 6, 0, 2021 }, { 6, 0, 2039 }, { 4, 0, 814 },
+ { 11, 0, 126 }, { 11, 0, 287 }, { 6, 0, 1264 }, { 5, 0, 955 },
+ { 8, 0, 814 }, { 13, 11, 506 }, { 4, 11, 314 }, { 6, 0, 981 },
+ { 11, 11, 1000 }, { 5, 0, 56 }, { 8, 0, 892 }, { 8, 0, 915 },
+ { 12, 0, 776 }, { 20, 0, 100 }, { 10, 0, 4 }, { 10, 0, 13 },
+ { 11, 0, 638 }, { 20, 0, 57 }, { 20, 11, 74 }, { 5, 0, 738 },
+ { 4, 10, 616 }, { 5, 11, 637 }, { 8, 10, 692 }, { 5, 0, 758 },
+ { 4, 10, 305 }, { 9, 11, 590 }, { 5, 11, 280 }, { 7, 11, 1226 },
+ { 6, 11, 494 }, { 7, 0, 1112 }, { 5, 11, 281 }, { 13, 0, 44 },
+ { 14, 0, 214 }, { 5, 10, 214 }, { 7, 10, 603 }, { 8, 10, 611 },
+ { 9, 10, 686 }, { 10, 10, 88 }, { 11, 10, 459 }, { 11, 10, 496 },
+ { 12, 10, 463 }, { 12, 10, 590 }, { 11, 0, 328 }, { 7, 11, 1064 },
+ { 9, 0, 133 }, { 7, 0, 168 }, { 13, 0, 196 }, { 13, 0, 237 },
+ { 6, 10, 1703 }, { 6, 0, 1152 }, { 7, 0, 1245 }, { 5, 0, 110 },
+ { 6, 0, 169 }, { 6, 0, 1702 }, { 7, 0, 400 }, { 8, 0, 538 },
+ { 9, 0, 184 }, { 9, 0, 524 }, { 12, 0, 218 }, { 6, 0, 1816 },
+ { 10, 0, 871 }, { 12, 0, 769 }, { 12, 0, 785 }, { 4, 11, 630 },
+ { 7, 11, 33 }, { 7, 11, 120 }, { 8, 11, 489 }, { 9, 11, 319 },
+ { 10, 11, 820 }, { 11, 11, 1004 }, { 12, 11, 379 }, { 13, 11, 117 },
+ { 13, 11, 412 }, { 14, 11, 25 }, { 15, 11, 52 }, { 15, 11, 161 },
+ { 16, 11, 47 }, { 21, 11, 2 }, { 6, 0, 133 }, { 8, 0, 413 },
+ { 9, 0, 353 }, { 11, 0, 993 }, { 17, 10, 19 }, { 4, 11, 937 },
+ { 5, 11, 801 }, { 6, 0, 978 }, { 6, 0, 93 }, { 6, 0, 1508 },
+ { 7, 0, 1422 }, { 7, 0, 1851 }, { 8, 0, 673 }, { 9, 0, 529 },
+ { 12, 0, 43 }, { 6, 0, 317 }, { 10, 0, 512 }, { 4, 10, 737 },
+ { 11, 10, 294 }, { 12, 10, 60 }, { 12, 10, 437 }, { 13, 10, 64 },
+ { 13, 10, 380 }, { 14, 10, 430 }, { 9, 0, 371 }, { 7, 11, 1591 },
+ { 16, 11, 43 }, { 6, 10, 1758 }, { 8, 10, 520 }, { 9, 10, 345 },
+ { 9, 10, 403 }, { 14, 10, 350 }, { 5, 0, 526 }, { 10, 10, 242 },
+ { 10, 10, 579 }, { 9, 0, 25 }, { 10, 0, 467 }, { 10, 0, 559 },
+ { 5, 10, 139 }, { 7, 10, 1168 }, { 10, 10, 539 }, { 4, 0, 335 },
+ { 7, 0, 942 }, { 12, 0, 754 }, { 4, 11, 365 }, { 11, 0, 182 },
+ { 14, 0, 195 }, { 14, 11, 29 }, { 5, 11, 7 }, { 11, 11, 774 },
+ { 4, 11, 746 }, { 7, 11, 1090 }, { 8, 0, 39 }, { 10, 0, 773 },
+ { 11, 0, 84 }, { 12, 0, 205 }, { 14, 0, 1 }, { 5, 0, 601 },
+ { 5, 0, 870 }, { 5, 11, 360 }, { 8, 11, 237 }, { 4, 0, 181 },
+ { 8, 0, 370 }, { 6, 0, 1652 }, { 8, 0, 358 }, { 4, 10, 107 },
+ { 7, 10, 613 }, { 8, 10, 439 }, { 8, 10, 504 }, { 9, 10, 501 },
+ { 10, 10, 383 }, { 11, 10, 477 }, { 4, 10, 229 }, { 9, 11, 785 },
+ { 4, 0, 97 }, { 5, 0, 147 }, { 6, 0, 286 }, { 7, 0, 1362 },
+ { 13, 0, 176 }, { 6, 0, 537 }, { 7, 0, 788 }, { 7, 0, 1816 },
+ { 4, 10, 903 }, { 12, 10, 71 }, { 6, 0, 743 }, { 6, 0, 1223 },
+ { 6, 0, 375 }, { 7, 0, 169 }, { 7, 0, 254 }, { 8, 0, 780 },
+ { 7, 11, 1493 }, { 7, 0, 1714 }, { 4, 10, 47 }, { 6, 10, 373 },
+ { 7, 10, 452 }, { 7, 10, 543 }, { 7, 10, 1856 }, { 9, 10, 6 },
+ { 11, 10, 257 }, { 11, 10, 391 }, { 6, 0, 896 }, { 8, 0, 1003 },
+ { 7, 0, 1447 }, { 9, 11, 341 }, { 5, 10, 980 }, { 6, 10, 1754 },
+ { 17, 11, 22 }, { 4, 11, 277 }, { 5, 11, 608 }, { 6, 11, 493 },
+ { 7, 11, 457 }, { 12, 11, 384 }, { 7, 10, 536 }, { 7, 10, 1331 },
+ { 8, 10, 143 }, { 12, 0, 744 }, { 7, 11, 27 }, { 7, 11, 316 },
+ { 18, 0, 126 }, { 5, 10, 19 }, { 6, 10, 533 }, { 4, 0, 788 },
+ { 11, 0, 41 }, { 5, 11, 552 }, { 5, 11, 586 }, { 5, 11, 676 },
+ { 6, 11, 448 }, { 8, 11, 244 }, { 11, 11, 1 }, { 11, 11, 41 },
+ { 13, 11, 3 }, { 16, 11, 54 }, { 17, 11, 4 }, { 18, 11, 13 },
+ { 4, 0, 985 }, { 6, 0, 1801 }, { 4, 11, 401 }, { 9, 11, 264 },
+ { 5, 10, 395 }, { 5, 10, 951 }, { 6, 10, 1776 }, { 5, 0, 629 },
+ { 7, 0, 1549 }, { 11, 10, 663 }, { 12, 10, 210 }, { 13, 10, 166 },
+ { 13, 10, 310 }, { 14, 10, 373 }, { 19, 10, 43 }, { 9, 11, 543 },
+ { 10, 11, 524 }, { 11, 11, 30 }, { 12, 11, 524 }, { 14, 11, 315 },
+ { 16, 11, 18 }, { 20, 11, 26 }, { 20, 11, 65 }, { 4, 11, 205 },
+ { 5, 11, 623 }, { 7, 11, 104 }, { 8, 11, 519 }, { 5, 0, 293 },
+ { 6, 0, 601 }, { 7, 11, 579 }, { 9, 11, 41 }, { 9, 11, 244 },
+ { 9, 11, 669 }, { 10, 11, 5 }, { 11, 11, 861 }, { 11, 11, 951 },
+ { 11, 11, 980 }, { 4, 11, 717 }, { 4, 10, 695 }, { 7, 10, 497 },
+ { 9, 10, 387 }, { 19, 10, 81 }, { 4, 0, 420 }, { 14, 0, 37 },
+ { 6, 0, 1134 }, { 6, 0, 1900 }, { 12, 0, 830 }, { 12, 0, 878 },
+ { 12, 0, 894 }, { 15, 0, 221 }, { 15, 0, 245 }, { 4, 11, 489 },
+ { 7, 0, 1570 }, { 12, 0, 542 }, { 8, 0, 933 }, { 8, 0, 957 },
+ { 6, 0, 1371 }, { 7, 0, 31 }, { 8, 0, 373 }, { 5, 10, 284 },
+ { 6, 10, 49 }, { 6, 10, 350 }, { 7, 10, 377 }, { 7, 10, 1693 },
+ { 8, 10, 678 }, { 9, 10, 161 }, { 9, 10, 585 }, { 9, 10, 671 },
+ { 9, 10, 839 }, { 11, 10, 912 }, { 13, 10, 427 }, { 7, 11, 892 },
+ { 4, 0, 325 }, { 10, 0, 125 }, { 11, 11, 47 }, { 4, 10, 597 },
+ { 10, 0, 323 }, { 6, 0, 1547 }, { 7, 11, 1605 }, { 9, 11, 473 },
+ { 11, 11, 962 }, { 18, 11, 139 }, { 11, 10, 908 }, { 7, 11, 819 },
+ { 9, 11, 26 }, { 9, 11, 392 }, { 10, 11, 152 }, { 10, 11, 226 },
+ { 11, 11, 19 }, { 12, 11, 276 }, { 12, 11, 426 }, { 12, 11, 589 },
+ { 13, 11, 460 }, { 15, 11, 97 }, { 19, 11, 48 }, { 20, 11, 104 },
+ { 7, 11, 51 }, { 4, 0, 718 }, { 7, 0, 1216 }, { 6, 0, 1896 },
+ { 6, 0, 1905 }, { 6, 0, 1912 }, { 9, 0, 947 }, { 9, 0, 974 },
+ { 12, 0, 809 }, { 12, 0, 850 }, { 12, 0, 858 }, { 12, 0, 874 },
+ { 12, 0, 887 }, { 12, 0, 904 }, { 12, 0, 929 }, { 12, 0, 948 },
+ { 12, 0, 952 }, { 15, 0, 198 }, { 15, 0, 206 }, { 15, 0, 220 },
+ { 15, 0, 227 }, { 15, 0, 247 }, { 18, 0, 188 }, { 21, 0, 48 },
+ { 21, 0, 50 }, { 24, 0, 25 }, { 24, 0, 29 }, { 7, 11, 761 },
+ { 7, 11, 1051 }, { 9, 11, 545 }, { 5, 0, 124 }, { 5, 0, 144 },
+ { 6, 0, 548 }, { 7, 0, 15 }, { 7, 0, 153 }, { 9, 0, 629 },
+ { 7, 11, 606 }, { 7, 10, 2014 }, { 7, 10, 2007 }, { 9, 11, 46 },
+ { 9, 10, 101 }, { 9, 10, 450 }, { 10, 10, 66 }, { 10, 10, 842 },
+ { 11, 10, 536 }, { 12, 10, 587 }, { 6, 0, 75 }, { 7, 0, 1531 },
+ { 8, 0, 416 }, { 9, 0, 240 }, { 9, 0, 275 }, { 10, 0, 100 },
+ { 11, 0, 658 }, { 11, 0, 979 }, { 12, 0, 86 }, { 14, 0, 207 },
+ { 15, 0, 20 }, { 15, 0, 25 }, { 5, 0, 141 }, { 5, 0, 915 },
+ { 6, 0, 1783 }, { 7, 0, 211 }, { 7, 0, 698 }, { 7, 0, 1353 },
+ { 9, 0, 83 }, { 9, 0, 281 }, { 10, 0, 376 }, { 10, 0, 431 },
+ { 11, 0, 543 }, { 12, 0, 664 }, { 13, 0, 280 }, { 13, 0, 428 },
+ { 14, 0, 61 }, { 14, 0, 128 }, { 17, 0, 52 }, { 17, 0, 81 },
+ { 4, 11, 674 }, { 7, 0, 533 }, { 21, 0, 6 }, { 4, 11, 770 },
+ { 5, 0, 538 }, { 5, 11, 79 }, { 7, 11, 1027 }, { 7, 11, 1477 },
+ { 11, 11, 52 }, { 11, 10, 62 }, { 4, 0, 338 }, { 5, 0, 400 },
+ { 5, 11, 789 }, { 6, 11, 195 }, { 4, 11, 251 }, { 4, 11, 688 },
+ { 7, 11, 513 }, { 7, 11, 1284 }, { 9, 11, 87 }, { 10, 11, 365 },
+ { 6, 10, 1766 }, { 6, 0, 0 }, { 7, 0, 84 }, { 11, 0, 895 },
+ { 17, 0, 11 }, { 11, 0, 892 }, { 4, 0, 221 }, { 5, 0, 659 },
+ { 7, 0, 697 }, { 7, 0, 1211 }, { 10, 0, 284 }, { 5, 0, 989 },
+ { 5, 11, 889 }, { 4, 11, 160 }, { 5, 11, 330 }, { 7, 11, 1434 },
+ { 8, 11, 174 }, { 6, 10, 1665 }, { 7, 10, 256 }, { 7, 10, 1388 },
+ { 10, 10, 499 }, { 11, 10, 670 }, { 7, 0, 848 }, { 4, 10, 22 },
+ { 5, 10, 10 }, { 8, 10, 97 }, { 10, 0, 507 }, { 5, 10, 481 },
+ { 4, 0, 188 }, { 7, 0, 805 }, { 5, 0, 884 }, { 6, 0, 732 },
+ { 11, 0, 991 }, { 7, 11, 968 }, { 11, 11, 636 }, { 15, 11, 145 },
+ { 17, 11, 34 }, { 19, 11, 50 }, { 23, 11, 20 }, { 7, 0, 959 },
+ { 16, 0, 60 }, { 6, 10, 134 }, { 7, 10, 437 }, { 9, 10, 37 },
+ { 14, 10, 285 }, { 14, 10, 371 }, { 7, 10, 486 }, { 8, 10, 155 },
+ { 11, 10, 93 }, { 12, 10, 164 }, { 6, 0, 1653 }, { 7, 0, 337 },
+ { 5, 10, 591 }, { 6, 0, 1989 }, { 8, 0, 922 }, { 8, 0, 978 },
+ { 5, 11, 374 }, { 4, 0, 638 }, { 10, 0, 500 }, { 5, 11, 731 },
+ { 5, 10, 380 }, { 5, 10, 650 }, { 8, 10, 310 }, { 10, 11, 381 },
+ { 4, 10, 364 }, { 7, 10, 1156 }, { 7, 10, 1187 }, { 9, 10, 409 },
+ { 9, 11, 224 }, { 12, 0, 166 }, { 6, 10, 482 }, { 4, 11, 626 },
+ { 5, 11, 642 }, { 6, 11, 425 }, { 10, 11, 202 }, { 11, 11, 141 },
+ { 4, 10, 781 }, { 6, 10, 487 }, { 7, 10, 926 }, { 8, 10, 263 },
+ { 11, 10, 500 }, { 7, 0, 418 }, { 4, 10, 94 }, { 7, 10, 1265 },
+ { 8, 0, 760 }, { 4, 10, 417 }, { 8, 11, 835 }, { 5, 10, 348 },
+ { 6, 10, 522 }, { 6, 0, 1277 }, { 6, 0, 1538 }, { 11, 11, 541 },
+ { 7, 11, 1597 }, { 5, 11, 384 }, { 8, 11, 455 }, { 12, 11, 48 },
+ { 8, 0, 770 }, { 5, 11, 264 }, { 6, 11, 184 }, { 4, 0, 89 },
+ { 5, 0, 489 }, { 6, 0, 315 }, { 7, 0, 553 }, { 7, 0, 1745 },
+ { 10, 0, 243 }, { 4, 10, 408 }, { 4, 10, 741 }, { 7, 10, 500 },
+ { 6, 0, 1396 }, { 5, 0, 560 }, { 6, 0, 1658 }, { 9, 0, 3 },
+ { 10, 0, 154 }, { 11, 0, 641 }, { 13, 0, 85 }, { 13, 0, 201 },
+ { 13, 0, 346 }, { 7, 11, 1595 }, { 5, 11, 633 }, { 6, 11, 28 },
+ { 7, 11, 219 }, { 7, 11, 1323 }, { 9, 11, 769 }, { 12, 11, 185 },
+ { 7, 11, 785 }, { 7, 11, 359 }, { 8, 11, 243 }, { 12, 11, 175 },
+ { 10, 0, 586 }, { 7, 0, 1271 }, { 6, 10, 73 }, { 4, 11, 105 },
+ { 4, 0, 166 }, { 5, 0, 505 }, { 6, 0, 1670 }, { 5, 10, 576 },
+ { 4, 11, 324 }, { 10, 11, 104 }, { 14, 10, 231 }, { 6, 0, 637 },
+ { 7, 10, 1264 }, { 7, 10, 1678 }, { 11, 10, 945 }, { 12, 10, 341 },
+ { 12, 10, 471 }, { 12, 10, 569 }, { 23, 11, 21 }, { 23, 11, 23 },
+ { 8, 11, 559 }, { 13, 11, 109 }, { 6, 0, 1947 }, { 7, 0, 445 },
+ { 8, 0, 307 }, { 8, 0, 704 }, { 10, 0, 41 }, { 10, 0, 439 },
+ { 11, 0, 237 }, { 11, 0, 622 }, { 12, 0, 201 }, { 7, 11, 963 },
+ { 7, 0, 1977 }, { 4, 0, 189 }, { 5, 0, 713 }, { 8, 0, 57 },
+ { 10, 0, 371 }, { 7, 10, 538 }, { 4, 0, 552 }, { 6, 0, 883 },
+ { 5, 10, 413 }, { 6, 0, 923 }, { 4, 11, 758 }, { 10, 11, 215 },
+ { 8, 10, 495 }, { 7, 10, 54 }, { 8, 10, 312 }, { 10, 10, 191 },
+ { 10, 10, 614 }, { 12, 10, 567 }, { 7, 11, 351 }, { 11, 11, 128 },
+ { 7, 0, 875 }, { 6, 10, 468 }, { 7, 10, 1478 }, { 8, 10, 530 },
+ { 14, 10, 290 }, { 7, 0, 1788 }, { 17, 0, 49 }, { 5, 11, 918 },
+ { 12, 11, 398 }, { 20, 11, 39 }, { 21, 11, 11 }, { 22, 11, 41 },
+ { 10, 0, 661 }, { 6, 10, 484 }, { 7, 10, 822 }, { 7, 0, 1945 },
+ { 6, 0, 794 }, { 9, 10, 900 }, { 7, 10, 1335 }, { 6, 10, 1724 },
+ { 7, 10, 2022 }, { 4, 11, 340 }, { 6, 0, 1135 }, { 4, 0, 784 },
+ { 5, 0, 745 }, { 5, 0, 84 }, { 6, 0, 163 }, { 5, 0, 410 },
+ { 4, 0, 976 }, { 5, 11, 985 }, { 7, 11, 509 }, { 7, 11, 529 },
+ { 17, 11, 96 }, { 4, 10, 474 }, { 6, 0, 703 }, { 7, 11, 1919 },
+ { 5, 0, 322 }, { 8, 0, 186 }, { 9, 0, 262 }, { 10, 0, 187 },
+ { 14, 0, 208 }, { 7, 10, 1504 }, { 5, 0, 227 }, { 9, 0, 560 },
+ { 13, 0, 208 }, { 5, 10, 305 }, { 4, 11, 247 }, { 7, 0, 1395 },
+ { 8, 0, 486 }, { 9, 0, 236 }, { 9, 0, 878 }, { 10, 0, 218 },
+ { 11, 0, 95 }, { 19, 0, 17 }, { 19, 0, 31 }, { 7, 0, 2043 },
+ { 8, 0, 672 }, { 13, 0, 448 }, { 4, 11, 184 }, { 5, 11, 390 },
+ { 6, 11, 337 }, { 7, 11, 23 }, { 7, 11, 494 }, { 7, 11, 618 },
+ { 7, 11, 1456 }, { 8, 11, 27 }, { 8, 11, 599 }, { 10, 11, 153 },
+ { 11, 11, 710 }, { 7, 0, 466 }, { 7, 10, 1236 }, { 6, 0, 167 },
+ { 7, 0, 186 }, { 7, 0, 656 }, { 10, 0, 643 }, { 4, 10, 480 },
+ { 6, 10, 302 }, { 6, 10, 1642 }, { 7, 10, 837 }, { 7, 10, 1547 },
+ { 7, 10, 1657 }, { 8, 10, 429 }, { 9, 10, 228 }, { 13, 10, 289 },
+ { 13, 10, 343 }, { 19, 10, 101 }, { 6, 0, 1428 }, { 6, 0, 1440 },
+ { 5, 0, 412 }, { 7, 10, 278 }, { 10, 10, 739 }, { 11, 10, 708 },
+ { 13, 10, 348 }, { 6, 0, 1118 }, { 8, 0, 562 }, { 20, 11, 46 },
+ { 9, 0, 316 }, { 11, 0, 256 }, { 6, 0, 1771 }, { 7, 0, 1190 },
+ { 9, 0, 132 }, { 10, 11, 227 }, { 11, 11, 497 }, { 11, 11, 709 },
+ { 12, 11, 415 }, { 15, 0, 66 }, { 6, 11, 360 }, { 7, 11, 1664 },
+ { 8, 11, 478 }, { 16, 10, 28 }, { 4, 0, 317 }, { 7, 0, 1279 },
+ { 5, 0, 63 }, { 5, 0, 509 }, { 8, 11, 699 }, { 17, 10, 36 },
+ { 6, 0, 1475 }, { 11, 11, 343 }, { 14, 11, 127 }, { 4, 11, 739 },
+ { 4, 0, 288 }, { 7, 11, 1757 }, { 8, 0, 89 }, { 8, 0, 620 },
+ { 9, 0, 608 }, { 11, 0, 628 }, { 12, 0, 322 }, { 15, 0, 124 },
+ { 6, 0, 1225 }, { 7, 0, 1189 }, { 4, 11, 67 }, { 5, 11, 422 },
+ { 6, 10, 363 }, { 7, 11, 1037 }, { 7, 11, 1289 }, { 7, 11, 1555 },
+ { 7, 10, 1955 }, { 8, 10, 725 }, { 9, 11, 741 }, { 17, 11, 108 },
+ { 6, 0, 1468 }, { 6, 0, 689 }, { 6, 0, 1451 }, { 10, 0, 120 },
+ { 23, 0, 1 }, { 9, 10, 805 }, { 14, 0, 329 }, { 5, 10, 813 },
+ { 7, 10, 2046 }, { 7, 0, 226 }, { 10, 11, 96 }, { 7, 0, 1855 },
+ { 5, 10, 712 }, { 11, 10, 17 }, { 13, 10, 321 }, { 16, 10, 67 },
+ { 9, 0, 461 }, { 6, 10, 320 }, { 7, 10, 781 }, { 7, 10, 1921 },
+ { 9, 10, 55 }, { 10, 10, 186 }, { 10, 10, 273 }, { 10, 10, 664 },
+ { 10, 10, 801 }, { 11, 10, 996 }, { 11, 10, 997 }, { 13, 10, 157 },
+ { 14, 10, 170 }, { 8, 11, 203 }, { 8, 10, 271 }, { 11, 11, 823 },
+ { 11, 11, 846 }, { 12, 11, 482 }, { 13, 11, 133 }, { 13, 11, 277 },
+ { 13, 11, 302 }, { 13, 11, 464 }, { 14, 11, 205 }, { 14, 11, 221 },
+ { 7, 0, 1346 }, { 4, 11, 449 }, { 5, 11, 718 }, { 6, 0, 85 },
+ { 14, 0, 299 }, { 7, 10, 103 }, { 7, 10, 863 }, { 11, 10, 184 },
+ { 17, 10, 62 }, { 4, 11, 355 }, { 6, 11, 311 }, { 9, 11, 256 },
+ { 10, 11, 404 }, { 9, 10, 659 }, { 10, 11, 758 }, { 5, 11, 827 },
+ { 5, 11, 64 }, { 12, 11, 581 }, { 6, 0, 1171 }, { 4, 11, 442 },
+ { 7, 11, 1047 }, { 7, 11, 1352 }, { 7, 11, 1643 }, { 4, 0, 980 },
+ { 5, 11, 977 }, { 6, 11, 288 }, { 7, 11, 528 }, { 7, 11, 1065 },
+ { 5, 0, 279 }, { 6, 0, 235 }, { 7, 0, 468 }, { 8, 0, 446 },
+ { 9, 0, 637 }, { 10, 0, 717 }, { 11, 0, 738 }, { 12, 0, 514 },
+ { 4, 0, 293 }, { 11, 10, 337 }, { 14, 10, 303 }, { 8, 11, 285 },
+ { 5, 0, 17 }, { 6, 0, 371 }, { 9, 0, 528 }, { 12, 0, 364 },
+ { 4, 11, 254 }, { 5, 10, 77 }, { 7, 10, 1455 }, { 10, 10, 843 },
+ { 19, 10, 73 }, { 22, 0, 5 }, { 4, 10, 458 }, { 6, 11, 12 },
+ { 7, 11, 1219 }, { 17, 11, 73 }, { 7, 10, 1420 }, { 6, 10, 109 },
+ { 10, 10, 382 }, { 7, 11, 125 }, { 6, 10, 330 }, { 7, 10, 1084 },
+ { 11, 10, 142 }, { 6, 11, 369 }, { 6, 11, 502 }, { 7, 11, 1036 },
+ { 8, 11, 348 }, { 9, 11, 452 }, { 10, 11, 26 }, { 11, 11, 224 },
+ { 11, 11, 387 }, { 11, 11, 772 }, { 12, 11, 95 }, { 12, 11, 629 },
+ { 13, 11, 195 }, { 13, 11, 207 }, { 13, 11, 241 }, { 14, 11, 260 },
+ { 14, 11, 270 }, { 15, 11, 140 }, { 4, 11, 269 }, { 5, 11, 480 },
+ { 7, 11, 532 }, { 7, 11, 1197 }, { 7, 11, 1358 }, { 8, 11, 291 },
+ { 11, 11, 349 }, { 14, 11, 396 }, { 22, 0, 48 }, { 10, 0, 601 },
+ { 13, 0, 353 }, { 13, 0, 376 }, { 5, 0, 779 }, { 5, 0, 807 },
+ { 6, 0, 1655 }, { 6, 0, 1676 }, { 14, 11, 223 }, { 4, 0, 196 },
+ { 5, 0, 558 }, { 5, 0, 949 }, { 20, 11, 15 }, { 7, 11, 1764 },
+ { 6, 0, 1322 }, { 4, 0, 752 }, { 11, 0, 737 }, { 7, 11, 657 },
+ { 8, 11, 533 }, { 7, 0, 412 }, { 4, 0, 227 }, { 5, 0, 159 },
+ { 5, 0, 409 }, { 7, 0, 80 }, { 8, 0, 556 }, { 10, 0, 479 },
+ { 12, 0, 418 }, { 14, 0, 50 }, { 14, 0, 123 }, { 14, 0, 192 },
+ { 14, 0, 249 }, { 14, 0, 295 }, { 15, 0, 27 }, { 7, 0, 1470 },
+ { 8, 0, 66 }, { 8, 0, 137 }, { 8, 0, 761 }, { 9, 0, 638 },
+ { 11, 0, 80 }, { 11, 0, 212 }, { 11, 0, 368 }, { 11, 0, 418 },
+ { 12, 0, 8 }, { 13, 0, 15 }, { 16, 0, 61 }, { 17, 0, 59 },
+ { 19, 0, 28 }, { 20, 0, 84 }, { 7, 10, 1985 }, { 4, 11, 211 },
+ { 4, 11, 332 }, { 5, 11, 335 }, { 6, 11, 238 }, { 7, 11, 269 },
+ { 7, 11, 811 }, { 7, 11, 1797 }, { 8, 10, 122 }, { 8, 11, 836 },
+ { 9, 11, 507 }, { 13, 11, 242 }, { 6, 0, 683 }, { 6, 0, 1252 },
+ { 4, 0, 873 }, { 4, 10, 234 }, { 6, 0, 835 }, { 6, 0, 38 },
+ { 7, 0, 1220 }, { 8, 0, 185 }, { 8, 0, 256 }, { 9, 0, 22 },
+ { 9, 0, 331 }, { 10, 0, 738 }, { 11, 0, 205 }, { 11, 0, 540 },
+ { 11, 0, 746 }, { 13, 0, 465 }, { 14, 0, 88 }, { 14, 0, 194 },
+ { 10, 0, 986 }, { 5, 11, 1009 }, { 12, 11, 582 }, { 18, 11, 131 },
+ { 4, 0, 159 }, { 6, 0, 115 }, { 7, 0, 252 }, { 7, 0, 257 },
+ { 7, 0, 1928 }, { 8, 0, 69 }, { 9, 0, 384 }, { 10, 0, 91 },
+ { 10, 0, 615 }, { 12, 0, 375 }, { 14, 0, 235 }, { 18, 0, 117 },
+ { 19, 0, 123 }, { 5, 0, 911 }, { 8, 0, 278 }, { 5, 10, 430 },
+ { 5, 10, 932 }, { 6, 10, 131 }, { 7, 10, 417 }, { 9, 10, 522 },
+ { 11, 10, 314 }, { 13, 10, 390 }, { 14, 10, 149 }, { 14, 10, 399 },
+ { 15, 10, 57 }, { 4, 0, 151 }, { 7, 0, 1567 }, { 8, 0, 749 },
+ { 5, 11, 228 }, { 6, 11, 203 }, { 7, 11, 156 }, { 8, 11, 347 },
+ { 9, 11, 265 }, { 4, 10, 507 }, { 10, 0, 989 }, { 12, 0, 956 },
+ { 5, 0, 990 }, { 5, 0, 194 }, { 6, 0, 927 }, { 7, 0, 1662 },
+ { 9, 0, 90 }, { 12, 0, 564 }, { 4, 10, 343 }, { 5, 10, 511 },
+ { 5, 0, 425 }, { 7, 10, 455 }, { 10, 10, 591 }, { 4, 0, 774 },
+ { 7, 11, 476 }, { 7, 11, 1592 }, { 10, 11, 87 }, { 5, 0, 971 },
+ { 7, 10, 1381 }, { 5, 11, 318 }, { 19, 11, 121 }, { 5, 11, 291 },
+ { 7, 11, 765 }, { 9, 11, 389 }, { 12, 11, 548 }, { 6, 10, 575 },
+ { 4, 0, 827 }, { 12, 0, 646 }, { 12, 0, 705 }, { 12, 0, 712 },
+ { 12, 0, 714 }, { 11, 0, 752 }, { 9, 0, 662 }, { 5, 0, 72 },
+ { 6, 0, 264 }, { 7, 0, 21 }, { 7, 0, 46 }, { 7, 0, 2013 },
+ { 8, 0, 215 }, { 8, 0, 513 }, { 10, 0, 266 }, { 11, 0, 22 },
+ { 11, 11, 522 }, { 6, 0, 239 }, { 7, 0, 118 }, { 10, 0, 95 },
+ { 11, 0, 603 }, { 13, 0, 443 }, { 14, 0, 160 }, { 15, 0, 4 },
+ { 6, 0, 431 }, { 6, 0, 669 }, { 7, 10, 1127 }, { 7, 10, 1572 },
+ { 10, 10, 297 }, { 10, 10, 422 }, { 11, 10, 764 }, { 11, 10, 810 },
+ { 12, 10, 264 }, { 13, 10, 102 }, { 13, 10, 300 }, { 13, 10, 484 },
+ { 14, 10, 147 }, { 14, 10, 229 }, { 17, 10, 71 }, { 18, 10, 118 },
+ { 19, 10, 120 }, { 5, 0, 874 }, { 6, 0, 1677 }, { 15, 0, 0 },
+ { 10, 11, 525 }, { 11, 11, 82 }, { 6, 0, 65 }, { 7, 0, 939 },
+ { 7, 0, 1172 }, { 7, 0, 1671 }, { 9, 0, 540 }, { 10, 0, 696 },
+ { 11, 0, 265 }, { 11, 0, 732 }, { 11, 0, 928 }, { 11, 0, 937 },
+ { 13, 0, 438 }, { 6, 0, 1350 }, { 8, 11, 547 }, { 4, 11, 422 },
+ { 5, 11, 355 }, { 17, 11, 0 }, { 9, 11, 905 }, { 5, 0, 682 },
+ { 7, 0, 1887 }, { 4, 0, 809 }, { 4, 0, 696 }, { 5, 11, 865 },
+ { 6, 0, 1074 }, { 6, 0, 1472 }, { 14, 10, 35 }, { 14, 10, 191 },
+ { 5, 11, 914 }, { 6, 11, 1625 }, { 5, 11, 234 }, { 7, 11, 1383 },
+ { 9, 11, 780 }, { 4, 10, 125 }, { 4, 0, 726 }, { 5, 0, 630 },
+ { 8, 0, 802 }, { 8, 0, 838 }, { 4, 10, 721 }, { 6, 0, 1337 },
+ { 7, 0, 776 }, { 19, 0, 56 }, { 8, 10, 145 }, { 4, 0, 970 },
+ { 7, 10, 792 }, { 8, 10, 147 }, { 10, 10, 821 }, { 11, 10, 1021 },
+ { 11, 10, 970 }, { 8, 0, 940 }, { 9, 0, 797 }, { 7, 11, 1312 },
+ { 9, 0, 248 }, { 10, 0, 400 }, { 7, 11, 816 }, { 7, 11, 1241 },
+ { 7, 10, 1999 }, { 9, 11, 283 }, { 9, 11, 520 }, { 10, 11, 213 },
+ { 10, 11, 307 }, { 10, 11, 463 }, { 10, 11, 671 }, { 10, 11, 746 },
+ { 11, 11, 401 }, { 11, 11, 794 }, { 12, 11, 517 }, { 18, 11, 107 },
+ { 19, 11, 115 }, { 6, 0, 1951 }, { 6, 0, 2040 }, { 7, 11, 339 },
+ { 13, 0, 41 }, { 15, 0, 93 }, { 5, 10, 168 }, { 5, 10, 930 },
+ { 8, 10, 74 }, { 9, 10, 623 }, { 12, 10, 500 }, { 12, 10, 579 },
+ { 6, 0, 118 }, { 7, 0, 215 }, { 7, 0, 1521 }, { 12, 0, 11 },
+ { 6, 10, 220 }, { 7, 10, 1101 }, { 13, 10, 105 }, { 6, 11, 421 },
+ { 7, 11, 61 }, { 7, 11, 1540 }, { 10, 11, 11 }, { 10, 11, 501 },
+ { 7, 0, 615 }, { 10, 0, 251 }, { 12, 11, 631 }, { 7, 0, 1044 },
+ { 6, 10, 19 }, { 7, 10, 1413 }, { 11, 10, 428 }, { 5, 0, 225 },
+ { 7, 10, 96 }, { 8, 10, 401 }, { 8, 10, 703 }, { 9, 10, 896 },
+ { 17, 10, 116 }, { 6, 11, 102 }, { 7, 11, 72 }, { 15, 11, 142 },
+ { 19, 11, 67 }, { 7, 10, 1961 }, { 7, 10, 1965 }, { 8, 10, 702 },
+ { 8, 10, 750 }, { 7, 10, 2030 }, { 8, 10, 150 }, { 8, 10, 737 },
+ { 12, 10, 366 }, { 23, 11, 30 }, { 4, 0, 370 }, { 5, 0, 756 },
+ { 7, 0, 1326 }, { 7, 11, 823 }, { 8, 10, 800 }, { 9, 10, 148 },
+ { 9, 10, 872 }, { 9, 10, 890 }, { 11, 10, 309 }, { 11, 10, 1001 },
+ { 13, 10, 267 }, { 13, 10, 323 }, { 6, 0, 1662 }, { 7, 0, 48 },
+ { 8, 0, 771 }, { 10, 0, 116 }, { 13, 0, 104 }, { 14, 0, 105 },
+ { 14, 0, 184 }, { 15, 0, 168 }, { 19, 0, 92 }, { 20, 0, 68 },
+ { 10, 0, 209 }, { 7, 11, 1870 }, { 7, 11, 68 }, { 8, 11, 48 },
+ { 8, 11, 88 }, { 8, 11, 582 }, { 8, 11, 681 }, { 9, 11, 373 },
+ { 9, 11, 864 }, { 11, 11, 157 }, { 11, 11, 336 }, { 11, 11, 843 },
+ { 20, 11, 27 }, { 6, 0, 930 }, { 4, 11, 88 }, { 5, 11, 137 },
+ { 5, 11, 174 }, { 5, 11, 777 }, { 6, 11, 1664 }, { 6, 11, 1725 },
+ { 7, 11, 77 }, { 7, 11, 426 }, { 7, 11, 1317 }, { 7, 11, 1355 },
+ { 8, 11, 126 }, { 8, 11, 563 }, { 9, 11, 523 }, { 9, 11, 750 },
+ { 10, 11, 310 }, { 10, 11, 836 }, { 11, 11, 42 }, { 11, 11, 318 },
+ { 11, 11, 731 }, { 12, 11, 68 }, { 12, 11, 92 }, { 12, 11, 507 },
+ { 12, 11, 692 }, { 13, 11, 81 }, { 13, 11, 238 }, { 13, 11, 374 },
+ { 18, 11, 138 }, { 19, 11, 78 }, { 19, 11, 111 }, { 20, 11, 55 },
+ { 20, 11, 77 }, { 20, 11, 92 }, { 4, 11, 938 }, { 7, 11, 1831 },
+ { 5, 10, 547 }, { 7, 10, 424 }, { 8, 11, 617 }, { 10, 11, 351 },
+ { 6, 0, 1286 }, { 6, 11, 1668 }, { 7, 11, 1499 }, { 8, 11, 117 },
+ { 9, 11, 314 }, { 10, 11, 174 }, { 6, 0, 759 }, { 6, 0, 894 },
+ { 7, 11, 707 }, { 11, 11, 563 }, { 4, 0, 120 }, { 7, 0, 1894 },
+ { 9, 0, 385 }, { 21, 0, 17 }, { 10, 0, 429 }, { 5, 11, 403 },
+ { 5, 0, 820 }, { 7, 0, 931 }, { 10, 0, 199 }, { 5, 10, 133 },
+ { 6, 0, 151 }, { 6, 0, 1675 }, { 7, 0, 383 }, { 23, 0, 10 },
+ { 6, 0, 761 }, { 8, 10, 187 }, { 8, 0, 365 }, { 10, 10, 0 },
+ { 10, 10, 818 }, { 11, 10, 988 }, { 4, 11, 44 }, { 5, 11, 311 },
+ { 6, 11, 156 }, { 7, 11, 639 }, { 7, 11, 762 }, { 7, 11, 1827 },
+ { 9, 11, 8 }, { 9, 11, 462 }, { 20, 11, 83 }, { 4, 11, 346 },
+ { 7, 11, 115 }, { 9, 11, 180 }, { 9, 11, 456 }, { 10, 11, 363 },
+ { 8, 10, 685 }, { 7, 0, 1086 }, { 17, 0, 46 }, { 6, 0, 1624 },
+ { 11, 0, 11 }, { 12, 0, 422 }, { 13, 0, 444 }, { 14, 0, 360 },
+ { 6, 0, 1020 }, { 6, 0, 1260 }, { 6, 0, 1589 }, { 4, 0, 43 },
+ { 5, 0, 344 }, { 5, 0, 357 }, { 14, 0, 472 }, { 22, 0, 58 },
+ { 6, 0, 1864 }, { 6, 0, 1866 }, { 6, 0, 1868 }, { 6, 0, 1869 },
+ { 6, 0, 1874 }, { 6, 0, 1877 }, { 6, 0, 1903 }, { 6, 0, 1911 },
+ { 9, 0, 920 }, { 9, 0, 921 }, { 9, 0, 924 }, { 9, 0, 946 },
+ { 9, 0, 959 }, { 9, 0, 963 }, { 9, 0, 970 }, { 9, 0, 997 },
+ { 9, 0, 1008 }, { 9, 0, 1017 }, { 12, 0, 795 }, { 12, 0, 797 },
+ { 12, 0, 798 }, { 12, 0, 800 }, { 12, 0, 803 }, { 12, 0, 811 },
+ { 12, 0, 820 }, { 12, 0, 821 }, { 12, 0, 839 }, { 12, 0, 841 },
+ { 12, 0, 848 }, { 12, 0, 911 }, { 12, 0, 921 }, { 12, 0, 922 },
+ { 12, 0, 925 }, { 12, 0, 937 }, { 12, 0, 944 }, { 12, 0, 945 },
+ { 12, 0, 953 }, { 15, 0, 184 }, { 15, 0, 191 }, { 15, 0, 199 },
+ { 15, 0, 237 }, { 15, 0, 240 }, { 15, 0, 243 }, { 15, 0, 246 },
+ { 18, 0, 203 }, { 21, 0, 40 }, { 21, 0, 52 }, { 21, 0, 57 },
+ { 24, 0, 23 }, { 24, 0, 28 }, { 24, 0, 30 }, { 6, 0, 725 },
+ { 17, 11, 58 }, { 5, 0, 888 }, { 9, 10, 874 }, { 4, 0, 711 },
+ { 8, 10, 774 }, { 10, 10, 670 }, { 12, 10, 51 }, { 16, 11, 40 },
+ { 6, 11, 185 }, { 7, 11, 1899 }, { 11, 11, 673 }, { 9, 10, 701 },
+ { 9, 0, 440 }, { 4, 11, 327 }, { 5, 11, 478 }, { 7, 11, 1332 },
+ { 8, 11, 753 }, { 12, 11, 227 }, { 4, 10, 127 }, { 5, 10, 350 },
+ { 6, 10, 356 }, { 8, 10, 426 }, { 9, 10, 572 }, { 10, 10, 247 },
+ { 11, 10, 312 }, { 5, 11, 1020 }, { 5, 11, 1022 }, { 4, 11, 103 },
+ { 5, 11, 401 }, { 6, 0, 1913 }, { 6, 0, 1926 }, { 6, 0, 1959 },
+ { 9, 0, 914 }, { 9, 0, 939 }, { 9, 0, 952 }, { 9, 0, 979 },
+ { 9, 0, 990 }, { 9, 0, 998 }, { 9, 0, 1003 }, { 9, 0, 1023 },
+ { 12, 0, 827 }, { 12, 0, 834 }, { 12, 0, 845 }, { 12, 0, 912 },
+ { 12, 0, 935 }, { 12, 0, 951 }, { 15, 0, 172 }, { 15, 0, 174 },
+ { 18, 0, 198 }, { 21, 0, 63 }, { 5, 0, 958 }, { 5, 0, 987 },
+ { 4, 11, 499 }, { 7, 11, 1421 }, { 7, 0, 885 }, { 6, 10, 59 },
+ { 6, 10, 1762 }, { 9, 10, 603 }, { 13, 10, 397 }, { 10, 11, 62 },
+ { 13, 11, 164 }, { 4, 0, 847 }, { 7, 0, 326 }, { 11, 0, 276 },
+ { 14, 0, 293 }, { 4, 0, 65 }, { 5, 0, 479 }, { 5, 0, 1004 },
+ { 7, 0, 1913 }, { 8, 0, 317 }, { 9, 0, 302 }, { 10, 0, 612 },
+ { 13, 0, 22 }, { 4, 11, 96 }, { 4, 0, 261 }, { 7, 0, 510 },
+ { 7, 0, 1514 }, { 6, 10, 111 }, { 7, 10, 4 }, { 8, 10, 163 },
+ { 8, 10, 776 }, { 10, 10, 566 }, { 4, 0, 291 }, { 9, 0, 515 },
+ { 12, 0, 152 }, { 12, 0, 443 }, { 13, 0, 392 }, { 14, 0, 357 },
+ { 7, 11, 399 }, { 7, 11, 1492 }, { 4, 0, 589 }, { 11, 0, 282 },
+ { 6, 11, 563 }, { 7, 10, 1994 }, { 5, 10, 297 }, { 7, 10, 1038 },
+ { 4, 0, 130 }, { 7, 0, 843 }, { 7, 0, 1562 }, { 5, 0, 42 },
+ { 5, 0, 879 }, { 7, 0, 245 }, { 7, 0, 324 }, { 7, 0, 1532 },
+ { 11, 0, 463 }, { 11, 0, 472 }, { 13, 0, 363 }, { 16, 0, 52 },
+ { 4, 0, 134 }, { 5, 0, 372 }, { 5, 0, 680 }, { 8, 10, 363 },
+ { 6, 0, 1997 }, { 8, 0, 935 }, { 8, 0, 977 }, { 4, 0, 810 },
+ { 7, 0, 1634 }, { 7, 10, 1675 }, { 7, 0, 1390 }, { 4, 11, 910 },
+ { 5, 11, 832 }, { 7, 10, 808 }, { 8, 11, 266 }, { 11, 11, 578 },
+ { 4, 0, 644 }, { 4, 0, 982 }, { 10, 0, 867 }, { 4, 10, 280 },
+ { 7, 0, 540 }, { 12, 10, 54 }, { 7, 0, 123 }, { 6, 0, 1978 },
+ { 4, 10, 421 }, { 5, 10, 548 }, { 6, 0, 623 }, { 8, 0, 789 },
+ { 4, 0, 908 }, { 5, 0, 359 }, { 5, 0, 508 }, { 6, 0, 1723 },
+ { 7, 0, 343 }, { 7, 0, 1996 }, { 7, 0, 2026 }, { 6, 0, 1220 },
+ { 4, 0, 341 }, { 7, 0, 480 }, { 6, 10, 254 }, { 9, 10, 109 },
+ { 10, 10, 103 }, { 6, 0, 888 }, { 8, 11, 528 }, { 9, 11, 348 },
+ { 7, 0, 1995 }, { 8, 0, 299 }, { 11, 0, 890 }, { 12, 0, 674 },
+ { 4, 11, 20 }, { 5, 11, 616 }, { 7, 11, 1094 }, { 6, 10, 1630 },
+ { 4, 0, 238 }, { 5, 0, 503 }, { 6, 0, 179 }, { 7, 0, 2003 },
+ { 8, 0, 381 }, { 8, 0, 473 }, { 9, 0, 149 }, { 10, 0, 788 },
+ { 15, 0, 45 }, { 15, 0, 86 }, { 20, 0, 110 }, { 22, 0, 57 },
+ { 5, 10, 671 }, { 4, 11, 26 }, { 5, 11, 429 }, { 6, 11, 245 },
+ { 7, 11, 704 }, { 7, 11, 1379 }, { 7, 11, 1474 }, { 4, 0, 121 },
+ { 5, 0, 156 }, { 5, 0, 349 }, { 9, 0, 431 }, { 10, 0, 605 },
+ { 14, 0, 342 }, { 7, 11, 943 }, { 11, 11, 614 }, { 4, 10, 889 },
+ { 4, 11, 621 }, { 7, 10, 1382 }, { 7, 11, 1382 }, { 7, 10, 1910 },
+ { 4, 10, 627 }, { 5, 10, 775 }, { 5, 11, 542 }, { 5, 11, 868 },
+ { 8, 11, 433 }, { 6, 0, 1373 }, { 7, 0, 1011 }, { 11, 10, 362 },
+ { 11, 10, 948 }, { 12, 10, 388 }, { 6, 0, 80 }, { 7, 0, 173 },
+ { 9, 0, 547 }, { 10, 0, 730 }, { 14, 0, 18 }, { 22, 0, 39 },
+ { 7, 11, 1495 }, { 6, 0, 1694 }, { 7, 0, 1974 }, { 12, 0, 196 },
+ { 4, 0, 923 }, { 6, 0, 507 }, { 6, 0, 1711 }, { 7, 10, 451 },
+ { 8, 10, 389 }, { 12, 10, 490 }, { 13, 10, 16 }, { 13, 10, 215 },
+ { 13, 10, 351 }, { 18, 10, 132 }, { 19, 10, 125 }, { 6, 0, 646 },
+ { 6, 0, 1047 }, { 7, 10, 841 }, { 8, 10, 566 }, { 6, 0, 1611 },
+ { 7, 0, 1214 }, { 11, 0, 926 }, { 4, 11, 525 }, { 4, 0, 595 },
+ { 5, 0, 240 }, { 6, 0, 459 }, { 7, 0, 12 }, { 7, 0, 114 },
+ { 7, 0, 949 }, { 7, 0, 1753 }, { 7, 0, 1805 }, { 8, 0, 658 },
+ { 9, 0, 1 }, { 11, 0, 959 }, { 13, 0, 446 }, { 5, 10, 912 },
+ { 6, 10, 1695 }, { 4, 0, 446 }, { 7, 11, 62 }, { 12, 11, 45 },
+ { 19, 11, 112 }, { 5, 10, 236 }, { 6, 10, 572 }, { 8, 10, 492 },
+ { 11, 10, 618 }, { 16, 10, 56 }, { 5, 10, 190 }, { 8, 10, 318 },
+ { 7, 10, 1376 }, { 4, 11, 223 }, { 6, 11, 359 }, { 11, 11, 3 },
+ { 13, 11, 108 }, { 14, 11, 89 }, { 16, 11, 22 }, { 4, 11, 647 },
+ { 6, 0, 490 }, { 6, 0, 491 }, { 6, 0, 1584 }, { 7, 11, 685 },
+ { 10, 11, 220 }, { 7, 0, 250 }, { 8, 0, 507 }, { 4, 0, 158 },
+ { 4, 0, 140 }, { 7, 0, 362 }, { 8, 0, 209 }, { 9, 0, 10 },
+ { 9, 0, 160 }, { 9, 0, 503 }, { 9, 0, 614 }, { 10, 0, 689 },
+ { 11, 0, 327 }, { 11, 0, 553 }, { 11, 0, 725 }, { 11, 0, 767 },
+ { 12, 0, 252 }, { 12, 0, 583 }, { 13, 0, 192 }, { 14, 0, 269 },
+ { 14, 0, 356 }, { 20, 0, 50 }, { 19, 0, 1 }, { 19, 0, 26 },
+ { 22, 0, 9 }, { 4, 11, 109 }, { 6, 0, 228 }, { 7, 0, 1341 },
+ { 9, 0, 408 }, { 10, 0, 343 }, { 4, 0, 373 }, { 5, 0, 283 },
+ { 6, 0, 480 }, { 7, 0, 609 }, { 10, 0, 860 }, { 10, 0, 878 },
+ { 6, 0, 779 }, { 6, 0, 1209 }, { 4, 0, 557 }, { 7, 11, 263 },
+ { 7, 11, 628 }, { 8, 11, 349 }, { 4, 0, 548 }, { 7, 0, 197 },
+ { 8, 0, 142 }, { 8, 0, 325 }, { 9, 0, 150 }, { 9, 0, 596 },
+ { 10, 0, 350 }, { 10, 0, 353 }, { 11, 0, 74 }, { 11, 0, 315 },
+ { 12, 0, 662 }, { 12, 0, 681 }, { 14, 0, 423 }, { 15, 0, 141 },
+ { 4, 11, 40 }, { 10, 11, 67 }, { 11, 11, 117 }, { 11, 11, 768 },
+ { 11, 11, 935 }, { 7, 11, 992 }, { 8, 11, 301 }, { 9, 11, 722 },
+ { 12, 11, 63 }, { 13, 11, 29 }, { 14, 11, 161 }, { 15, 11, 18 },
+ { 6, 0, 1490 }, { 10, 11, 532 }, { 5, 0, 580 }, { 7, 0, 378 },
+ { 7, 0, 674 }, { 7, 0, 1424 }, { 15, 0, 83 }, { 16, 0, 11 },
+ { 15, 11, 83 }, { 16, 11, 11 }, { 6, 0, 1057 }, { 6, 0, 1335 },
+ { 10, 0, 316 }, { 7, 10, 85 }, { 7, 10, 247 }, { 8, 10, 585 },
+ { 10, 10, 163 }, { 4, 0, 169 }, { 5, 0, 83 }, { 6, 0, 399 },
+ { 6, 0, 579 }, { 6, 0, 1513 }, { 7, 0, 692 }, { 7, 0, 846 },
+ { 7, 0, 1015 }, { 7, 0, 1799 }, { 8, 0, 403 }, { 9, 0, 394 },
+ { 10, 0, 133 }, { 12, 0, 4 }, { 12, 0, 297 }, { 12, 0, 452 },
+ { 16, 0, 81 }, { 18, 0, 25 }, { 21, 0, 14 }, { 22, 0, 12 },
+ { 23, 0, 18 }, { 6, 0, 1106 }, { 7, 0, 1546 }, { 11, 0, 299 },
+ { 14, 0, 407 }, { 6, 0, 1192 }, { 4, 0, 177 }, { 5, 0, 411 },
+ { 7, 0, 653 }, { 7, 0, 439 }, { 10, 0, 727 }, { 11, 0, 260 },
+ { 11, 0, 684 }, { 10, 10, 145 }, { 19, 10, 83 }, { 5, 0, 208 },
+ { 7, 0, 753 }, { 7, 0, 1528 }, { 9, 11, 617 }, { 7, 10, 1922 },
+ { 7, 11, 825 }, { 11, 0, 422 }, { 13, 0, 389 }, { 4, 10, 124 },
+ { 10, 10, 457 }, { 11, 10, 121 }, { 11, 10, 169 }, { 11, 10, 870 },
+ { 12, 10, 214 }, { 14, 10, 187 }, { 15, 10, 77 }, { 11, 0, 615 },
+ { 15, 0, 58 }, { 11, 11, 615 }, { 15, 11, 58 }, { 9, 0, 618 },
+ { 10, 0, 482 }, { 6, 0, 1952 }, { 6, 0, 1970 }, { 14, 0, 505 },
+ { 7, 10, 1193 }, { 7, 11, 1838 }, { 5, 0, 242 }, { 7, 10, 1333 },
+ { 6, 10, 107 }, { 7, 10, 638 }, { 7, 10, 1632 }, { 9, 10, 396 },
+ { 5, 0, 953 }, { 5, 10, 370 }, { 6, 10, 1756 }, { 5, 11, 28 },
+ { 6, 11, 204 }, { 10, 11, 320 }, { 10, 11, 583 }, { 13, 11, 502 },
+ { 14, 11, 72 }, { 14, 11, 274 }, { 14, 11, 312 }, { 14, 11, 344 },
+ { 15, 11, 159 }, { 16, 11, 62 }, { 16, 11, 69 }, { 17, 11, 30 },
+ { 18, 11, 42 }, { 18, 11, 53 }, { 18, 11, 84 }, { 18, 11, 140 },
+ { 19, 11, 68 }, { 19, 11, 85 }, { 20, 11, 5 }, { 20, 11, 45 },
+ { 20, 11, 101 }, { 22, 11, 7 }, { 22, 11, 20 }, { 4, 11, 558 },
+ { 6, 11, 390 }, { 7, 11, 162 }, { 7, 11, 689 }, { 9, 11, 360 },
+ { 10, 11, 653 }, { 11, 0, 802 }, { 13, 0, 67 }, { 5, 10, 204 },
+ { 5, 0, 290 }, { 5, 10, 970 }, { 6, 10, 1706 }, { 4, 0, 380 },
+ { 5, 0, 52 }, { 7, 0, 277 }, { 9, 0, 368 }, { 11, 0, 791 },
+ { 5, 11, 856 }, { 6, 11, 1672 }, { 6, 11, 1757 }, { 6, 11, 1781 },
+ { 7, 11, 1150 }, { 7, 11, 1425 }, { 7, 11, 1453 }, { 12, 11, 513 },
+ { 5, 11, 92 }, { 7, 10, 3 }, { 10, 11, 736 }, { 12, 11, 102 },
+ { 4, 0, 112 }, { 5, 0, 653 }, { 5, 10, 483 }, { 5, 10, 685 },
+ { 6, 10, 489 }, { 7, 10, 1204 }, { 8, 10, 394 }, { 4, 10, 921 },
+ { 6, 0, 1028 }, { 5, 10, 1007 }, { 5, 11, 590 }, { 9, 11, 213 },
+ { 17, 11, 91 }, { 7, 10, 1696 }, { 10, 0, 138 }, { 11, 0, 476 },
+ { 5, 0, 725 }, { 5, 0, 727 }, { 7, 0, 1811 }, { 4, 0, 979 },
+ { 6, 0, 1821 }, { 6, 0, 1838 }, { 8, 0, 876 }, { 8, 0, 883 },
+ { 8, 0, 889 }, { 8, 0, 893 }, { 8, 0, 895 }, { 10, 0, 934 },
+ { 12, 0, 720 }, { 14, 0, 459 }, { 20, 0, 123 }, { 7, 11, 551 },
+ { 4, 0, 38 }, { 6, 0, 435 }, { 7, 0, 307 }, { 7, 0, 999 },
+ { 7, 0, 1481 }, { 7, 0, 1732 }, { 7, 0, 1738 }, { 8, 0, 371 },
+ { 9, 0, 414 }, { 11, 0, 316 }, { 12, 0, 52 }, { 13, 0, 420 },
+ { 19, 0, 100 }, { 7, 0, 1296 }, { 4, 10, 712 }, { 6, 10, 1629 },
+ { 5, 0, 723 }, { 6, 0, 651 }, { 8, 11, 191 }, { 9, 11, 791 },
+ { 10, 11, 93 }, { 11, 11, 301 }, { 16, 11, 13 }, { 17, 11, 23 },
+ { 18, 11, 135 }, { 19, 11, 12 }, { 20, 11, 1 }, { 20, 11, 12 },
+ { 20, 11, 14 }, { 8, 11, 503 }, { 6, 11, 466 }, { 7, 11, 671 },
+ { 6, 0, 1200 }, { 6, 0, 1330 }, { 7, 0, 1255 }, { 6, 0, 986 },
+ { 5, 0, 109 }, { 6, 0, 1784 }, { 7, 0, 1895 }, { 12, 0, 296 },
+ { 12, 0, 302 }, { 7, 11, 983 }, { 5, 10, 485 }, { 6, 0, 660 },
+ { 6, 0, 800 }, { 5, 0, 216 }, { 5, 0, 294 }, { 6, 0, 591 },
+ { 7, 0, 1879 }, { 9, 0, 141 }, { 9, 0, 270 }, { 9, 0, 679 },
+ { 10, 0, 159 }, { 11, 0, 197 }, { 11, 0, 438 }, { 12, 0, 538 },
+ { 12, 0, 559 }, { 14, 0, 144 }, { 14, 0, 167 }, { 15, 0, 67 },
+ { 4, 10, 285 }, { 5, 10, 317 }, { 6, 10, 301 }, { 7, 10, 7 },
+ { 8, 10, 153 }, { 10, 10, 766 }, { 11, 10, 468 }, { 12, 10, 467 },
+ { 13, 10, 143 }, { 8, 0, 945 }, { 6, 0, 1090 }, { 9, 0, 81 },
+ { 12, 11, 468 }, { 19, 11, 96 }, { 20, 11, 24 }, { 6, 0, 391 },
+ { 10, 11, 241 }, { 7, 0, 322 }, { 8, 0, 249 }, { 6, 0, 1412 },
+ { 7, 11, 795 }, { 5, 0, 632 }, { 10, 0, 526 }, { 8, 10, 819 },
+ { 6, 0, 144 }, { 7, 0, 948 }, { 7, 0, 1042 }, { 8, 0, 235 },
+ { 8, 0, 461 }, { 9, 0, 453 }, { 9, 0, 796 }, { 10, 0, 354 },
+ { 17, 0, 77 }, { 7, 11, 954 }, { 11, 10, 917 }, { 6, 0, 940 },
+ { 6, 0, 1228 }, { 4, 0, 362 }, { 7, 0, 52 }, { 7, 0, 303 },
+ { 6, 11, 549 }, { 8, 11, 34 }, { 8, 11, 283 }, { 9, 11, 165 },
+ { 10, 11, 475 }, { 7, 11, 370 }, { 7, 11, 1007 }, { 7, 11, 1177 },
+ { 7, 11, 1565 }, { 5, 11, 652 }, { 5, 11, 701 }, { 7, 11, 449 },
+ { 5, 0, 196 }, { 6, 0, 486 }, { 7, 0, 212 }, { 8, 0, 309 },
+ { 8, 0, 346 }, { 6, 10, 1719 }, { 6, 10, 1735 }, { 7, 10, 2016 },
+ { 7, 10, 2020 }, { 8, 10, 837 }, { 9, 10, 852 }, { 6, 11, 159 },
+ { 6, 11, 364 }, { 7, 11, 516 }, { 7, 11, 1439 }, { 9, 11, 518 },
+ { 7, 0, 1912 }, { 7, 0, 1290 }, { 4, 0, 686 }, { 13, 11, 151 },
+ { 10, 0, 625 }, { 8, 0, 706 }, { 10, 10, 568 }, { 11, 0, 412 },
+ { 4, 0, 30 }, { 5, 0, 43 }, { 8, 10, 67 }, { 10, 10, 419 },
+ { 7, 0, 967 }, { 13, 0, 11 }, { 12, 0, 758 }, { 14, 0, 441 },
+ { 14, 0, 462 }, { 10, 10, 657 }, { 14, 10, 297 }, { 14, 10, 361 },
+ { 11, 10, 729 }, { 4, 0, 220 }, { 7, 0, 1535 }, { 7, 11, 501 },
+ { 9, 11, 111 }, { 10, 11, 141 }, { 11, 11, 332 }, { 13, 11, 43 },
+ { 13, 11, 429 }, { 14, 11, 130 }, { 14, 11, 415 }, { 17, 11, 102 },
+ { 4, 0, 950 }, { 6, 0, 1859 }, { 7, 0, 11 }, { 8, 0, 873 },
+ { 12, 0, 710 }, { 12, 0, 718 }, { 12, 0, 748 }, { 12, 0, 765 },
+ { 20, 0, 124 }, { 5, 11, 149 }, { 5, 11, 935 }, { 8, 11, 233 },
+ { 14, 11, 291 }, { 6, 0, 1579 }, { 7, 0, 890 }, { 8, 10, 51 },
+ { 9, 10, 868 }, { 10, 10, 833 }, { 12, 10, 481 }, { 12, 10, 570 },
+ { 20, 10, 106 }, { 13, 0, 2 }, { 4, 10, 445 }, { 8, 11, 801 },
+ { 7, 0, 1774 }, { 7, 0, 1725 }, { 10, 0, 393 }, { 5, 0, 263 },
+ { 6, 0, 414 }, { 4, 11, 322 }, { 5, 10, 239 }, { 7, 0, 456 },
+ { 7, 10, 1990 }, { 8, 10, 130 }, { 11, 10, 720 }, { 9, 0, 818 },
+ { 5, 10, 123 }, { 6, 10, 530 }, { 7, 10, 348 }, { 7, 10, 1419 },
+ { 7, 10, 2024 }, { 6, 0, 178 }, { 6, 0, 1750 }, { 8, 0, 251 },
+ { 9, 0, 690 }, { 10, 0, 155 }, { 10, 0, 196 }, { 10, 0, 373 },
+ { 11, 0, 698 }, { 13, 0, 155 }, { 20, 0, 93 }, { 5, 0, 97 },
+ { 9, 0, 393 }, { 6, 0, 674 }, { 11, 0, 223 }, { 12, 0, 168 },
+ { 4, 10, 210 }, { 11, 11, 464 }, { 6, 0, 1639 }, { 18, 0, 159 },
+ { 11, 11, 2 }, { 7, 0, 934 }, { 8, 0, 647 }, { 17, 0, 97 },
+ { 19, 0, 59 }, { 22, 0, 2 }, { 4, 0, 191 }, { 5, 0, 165 },
+ { 9, 0, 346 }, { 10, 0, 655 }, { 11, 0, 885 }, { 4, 10, 430 },
+ { 7, 11, 357 }, { 5, 0, 877 }, { 5, 10, 213 }, { 5, 11, 406 },
+ { 8, 0, 128 }, { 11, 0, 179 }, { 6, 11, 69 }, { 7, 11, 117 },
+ { 7, 0, 1297 }, { 11, 11, 43 }, { 13, 11, 72 }, { 13, 11, 142 },
+ { 7, 11, 1830 }, { 14, 0, 164 }, { 5, 0, 57 }, { 6, 0, 101 },
+ { 6, 0, 586 }, { 6, 0, 1663 }, { 7, 0, 132 }, { 7, 0, 1154 },
+ { 7, 0, 1415 }, { 7, 0, 1507 }, { 12, 0, 493 }, { 15, 0, 105 },
+ { 23, 0, 15 }, { 5, 0, 459 }, { 7, 0, 1073 }, { 8, 0, 241 },
+ { 8, 0, 334 }, { 5, 11, 826 }, { 5, 10, 108 }, { 5, 10, 219 },
+ { 10, 11, 132 }, { 11, 11, 191 }, { 11, 11, 358 }, { 11, 11, 460 },
+ { 6, 0, 324 }, { 6, 0, 520 }, { 7, 0, 338 }, { 7, 0, 1729 },
+ { 8, 0, 228 }, { 11, 0, 750 }, { 21, 0, 30 }, { 22, 0, 53 },
+ { 4, 10, 193 }, { 5, 10, 916 }, { 7, 10, 364 }, { 10, 10, 398 },
+ { 10, 10, 726 }, { 11, 10, 317 }, { 11, 10, 626 }, { 12, 10, 142 },
+ { 12, 10, 288 }, { 12, 10, 678 }, { 13, 10, 313 }, { 15, 10, 113 },
+ { 18, 10, 114 }, { 6, 11, 110 }, { 7, 11, 1681 }, { 7, 0, 910 },
+ { 6, 10, 241 }, { 7, 10, 907 }, { 8, 10, 832 }, { 9, 10, 342 },
+ { 10, 10, 729 }, { 11, 10, 284 }, { 11, 10, 445 }, { 11, 10, 651 },
+ { 11, 10, 863 }, { 13, 10, 398 }, { 18, 10, 99 }, { 7, 0, 705 },
+ { 9, 0, 734 }, { 5, 11, 1000 }, { 7, 11, 733 }, { 9, 11, 583 },
+ { 4, 0, 73 }, { 6, 0, 612 }, { 7, 0, 927 }, { 7, 0, 1822 },
+ { 8, 0, 217 }, { 9, 0, 765 }, { 9, 0, 766 }, { 10, 0, 408 },
+ { 11, 0, 51 }, { 11, 0, 793 }, { 12, 0, 266 }, { 15, 0, 158 },
+ { 20, 0, 89 }, { 22, 0, 32 }, { 7, 0, 1330 }, { 4, 11, 297 },
+ { 6, 11, 529 }, { 7, 11, 152 }, { 7, 11, 713 }, { 7, 11, 1845 },
+ { 8, 11, 710 }, { 8, 11, 717 }, { 12, 11, 639 }, { 5, 0, 389 },
+ { 8, 0, 636 }, { 6, 0, 1409 }, { 4, 10, 562 }, { 9, 10, 254 },
+ { 11, 10, 879 }, { 6, 0, 893 }, { 4, 10, 786 }, { 4, 11, 520 },
+ { 7, 11, 575 }, { 8, 0, 21 }, { 12, 0, 721 }, { 8, 0, 959 },
+ { 7, 11, 1428 }, { 7, 11, 1640 }, { 9, 11, 169 }, { 9, 11, 182 },
+ { 9, 11, 367 }, { 9, 11, 478 }, { 9, 11, 506 }, { 9, 11, 551 },
+ { 9, 11, 648 }, { 9, 11, 651 }, { 9, 11, 697 }, { 9, 11, 705 },
+ { 9, 11, 725 }, { 9, 11, 787 }, { 9, 11, 794 }, { 10, 11, 198 },
+ { 10, 11, 214 }, { 10, 11, 267 }, { 10, 11, 275 }, { 10, 11, 456 },
+ { 10, 11, 551 }, { 10, 11, 561 }, { 10, 11, 613 }, { 10, 11, 627 },
+ { 10, 11, 668 }, { 10, 11, 675 }, { 10, 11, 691 }, { 10, 11, 695 },
+ { 10, 11, 707 }, { 10, 11, 715 }, { 11, 11, 183 }, { 11, 11, 201 },
+ { 11, 11, 244 }, { 11, 11, 262 }, { 11, 11, 352 }, { 11, 11, 439 },
+ { 11, 11, 493 }, { 11, 11, 572 }, { 11, 11, 591 }, { 11, 11, 608 },
+ { 11, 11, 611 }, { 11, 11, 646 }, { 11, 11, 674 }, { 11, 11, 711 },
+ { 11, 11, 751 }, { 11, 11, 761 }, { 11, 11, 776 }, { 11, 11, 785 },
+ { 11, 11, 850 }, { 11, 11, 853 }, { 11, 11, 862 }, { 11, 11, 865 },
+ { 11, 11, 868 }, { 11, 11, 898 }, { 11, 11, 902 }, { 11, 11, 903 },
+ { 11, 11, 910 }, { 11, 11, 932 }, { 11, 11, 942 }, { 11, 11, 957 },
+ { 11, 11, 967 }, { 11, 11, 972 }, { 12, 11, 148 }, { 12, 11, 195 },
+ { 12, 11, 220 }, { 12, 11, 237 }, { 12, 11, 318 }, { 12, 11, 339 },
+ { 12, 11, 393 }, { 12, 11, 445 }, { 12, 11, 450 }, { 12, 11, 474 },
+ { 12, 11, 509 }, { 12, 11, 533 }, { 12, 11, 591 }, { 12, 11, 594 },
+ { 12, 11, 597 }, { 12, 11, 621 }, { 12, 11, 633 }, { 12, 11, 642 },
+ { 13, 11, 59 }, { 13, 11, 60 }, { 13, 11, 145 }, { 13, 11, 239 },
+ { 13, 11, 250 }, { 13, 11, 273 }, { 13, 11, 329 }, { 13, 11, 344 },
+ { 13, 11, 365 }, { 13, 11, 372 }, { 13, 11, 387 }, { 13, 11, 403 },
+ { 13, 11, 414 }, { 13, 11, 456 }, { 13, 11, 478 }, { 13, 11, 483 },
+ { 13, 11, 489 }, { 14, 11, 55 }, { 14, 11, 57 }, { 14, 11, 81 },
+ { 14, 11, 90 }, { 14, 11, 148 }, { 14, 11, 239 }, { 14, 11, 266 },
+ { 14, 11, 321 }, { 14, 11, 326 }, { 14, 11, 327 }, { 14, 11, 330 },
+ { 14, 11, 347 }, { 14, 11, 355 }, { 14, 11, 401 }, { 14, 11, 411 },
+ { 14, 11, 414 }, { 14, 11, 416 }, { 14, 11, 420 }, { 15, 11, 61 },
+ { 15, 11, 74 }, { 15, 11, 87 }, { 15, 11, 88 }, { 15, 11, 94 },
+ { 15, 11, 96 }, { 15, 11, 116 }, { 15, 11, 149 }, { 15, 11, 154 },
+ { 16, 11, 50 }, { 16, 11, 63 }, { 16, 11, 73 }, { 17, 11, 2 },
+ { 17, 11, 66 }, { 17, 11, 92 }, { 17, 11, 103 }, { 17, 11, 112 },
+ { 18, 11, 50 }, { 18, 11, 54 }, { 18, 11, 82 }, { 18, 11, 86 },
+ { 18, 11, 90 }, { 18, 11, 111 }, { 18, 11, 115 }, { 18, 11, 156 },
+ { 19, 11, 40 }, { 19, 11, 79 }, { 20, 11, 78 }, { 21, 11, 22 },
+ { 9, 11, 170 }, { 6, 0, 1433 }, { 7, 11, 1307 }, { 11, 11, 411 },
+ { 5, 0, 189 }, { 7, 0, 442 }, { 7, 0, 443 }, { 8, 0, 281 },
+ { 12, 0, 174 }, { 13, 0, 261 }, { 6, 10, 216 }, { 7, 10, 901 },
+ { 7, 10, 1343 }, { 8, 10, 493 }, { 5, 11, 397 }, { 6, 11, 154 },
+ { 7, 10, 341 }, { 7, 11, 676 }, { 8, 11, 443 }, { 8, 11, 609 },
+ { 9, 11, 24 }, { 9, 11, 325 }, { 10, 11, 35 }, { 11, 10, 219 },
+ { 11, 11, 535 }, { 11, 11, 672 }, { 11, 11, 1018 }, { 12, 11, 637 },
+ { 16, 11, 30 }, { 6, 0, 2 }, { 7, 0, 191 }, { 7, 0, 446 },
+ { 7, 0, 1262 }, { 7, 0, 1737 }, { 8, 0, 22 }, { 8, 0, 270 },
+ { 8, 0, 612 }, { 9, 0, 4 }, { 9, 0, 312 }, { 9, 0, 436 },
+ { 9, 0, 626 }, { 10, 0, 216 }, { 10, 0, 311 }, { 10, 0, 521 },
+ { 10, 0, 623 }, { 11, 0, 72 }, { 11, 0, 330 }, { 11, 0, 455 },
+ { 12, 0, 321 }, { 12, 0, 504 }, { 12, 0, 530 }, { 12, 0, 543 },
+ { 13, 0, 17 }, { 13, 0, 156 }, { 13, 0, 334 }, { 14, 0, 131 },
+ { 17, 0, 60 }, { 20, 0, 64 }, { 7, 0, 354 }, { 10, 0, 410 },
+ { 11, 0, 815 }, { 11, 10, 130 }, { 7, 10, 1734 }, { 9, 11, 631 },
+ { 12, 0, 425 }, { 15, 0, 112 }, { 10, 10, 115 }, { 11, 10, 420 },
+ { 13, 10, 404 }, { 14, 10, 346 }, { 15, 10, 54 }, { 6, 0, 60 },
+ { 6, 0, 166 }, { 7, 0, 374 }, { 7, 0, 670 }, { 7, 0, 1327 },
+ { 8, 0, 411 }, { 8, 0, 435 }, { 9, 0, 653 }, { 9, 0, 740 },
+ { 10, 0, 385 }, { 11, 0, 222 }, { 11, 0, 324 }, { 11, 0, 829 },
+ { 12, 0, 611 }, { 7, 0, 1611 }, { 13, 0, 14 }, { 15, 0, 44 },
+ { 19, 0, 13 }, { 20, 0, 76 }, { 5, 11, 981 }, { 4, 11, 56 },
+ { 7, 11, 1791 }, { 8, 11, 607 }, { 8, 11, 651 }, { 11, 11, 465 },
+ { 11, 11, 835 }, { 12, 11, 337 }, { 13, 11, 480 }, { 6, 0, 1478 },
+ { 5, 10, 1011 }, { 8, 10, 701 }, { 11, 0, 596 }, { 5, 0, 206 },
+ { 6, 0, 398 }, { 4, 10, 54 }, { 5, 10, 666 }, { 7, 10, 1039 },
+ { 7, 10, 1130 }, { 9, 10, 195 }, { 10, 10, 302 }, { 7, 0, 50 },
+ { 9, 11, 158 }, { 10, 11, 411 }, { 7, 11, 1120 }, { 6, 0, 517 },
+ { 7, 0, 1159 }, { 10, 0, 621 }, { 11, 0, 192 }, { 6, 10, 1669 },
+ { 4, 0, 592 }, { 6, 0, 600 }, { 7, 0, 1653 }, { 10, 0, 223 },
+ { 11, 0, 645 }, { 8, 11, 139 }, { 7, 0, 64 }, { 8, 0, 245 },
+ { 14, 0, 278 }, { 6, 11, 622 }, { 7, 11, 1030 }, { 8, 0, 604 },
+ { 6, 0, 1502 }, { 10, 0, 265 }, { 13, 11, 168 }, { 7, 0, 1763 },
+ { 12, 0, 310 }, { 7, 10, 798 }, { 11, 11, 719 }, { 7, 11, 160 },
+ { 10, 11, 624 }, { 14, 11, 279 }, { 4, 11, 363 }, { 7, 10, 122 },
+ { 9, 10, 259 }, { 10, 10, 84 }, { 11, 10, 470 }, { 12, 10, 541 },
+ { 13, 10, 379 }, { 5, 0, 129 }, { 6, 0, 61 }, { 7, 0, 947 },
+ { 6, 0, 1356 }, { 7, 11, 1191 }, { 13, 0, 505 }, { 13, 0, 506 },
+ { 11, 0, 1000 }, { 5, 10, 82 }, { 5, 10, 131 }, { 7, 10, 1755 },
+ { 8, 10, 31 }, { 9, 10, 168 }, { 9, 10, 764 }, { 11, 10, 869 },
+ { 6, 0, 966 }, { 6, 10, 605 }, { 6, 11, 292 }, { 5, 11, 177 },
+ { 6, 11, 616 }, { 7, 11, 827 }, { 9, 11, 525 }, { 10, 11, 656 },
+ { 7, 11, 1486 }, { 10, 11, 31 }, { 5, 10, 278 }, { 9, 10, 68 },
+ { 4, 10, 163 }, { 5, 10, 201 }, { 5, 10, 307 }, { 5, 10, 310 },
+ { 6, 10, 335 }, { 7, 10, 284 }, { 8, 10, 165 }, { 6, 0, 839 },
+ { 7, 10, 1660 }, { 8, 10, 781 }, { 6, 10, 33 }, { 7, 10, 1244 },
+ { 5, 0, 637 }, { 4, 11, 161 }, { 5, 11, 631 }, { 9, 0, 590 },
+ { 7, 10, 1953 }, { 8, 10, 720 }, { 5, 0, 280 }, { 7, 0, 1226 },
+ { 10, 10, 203 }, { 6, 0, 1386 }, { 5, 0, 281 }, { 6, 0, 1026 },
+ { 6, 10, 326 }, { 7, 10, 677 }, { 9, 10, 425 }, { 7, 11, 1557 },
+ { 7, 11, 1684 }, { 7, 0, 1064 }, { 9, 11, 469 }, { 9, 11, 709 },
+ { 12, 11, 512 }, { 14, 11, 65 }, { 17, 11, 12 }, { 6, 0, 917 },
+ { 10, 11, 229 }, { 11, 11, 73 }, { 11, 11, 376 }, { 11, 11, 433 },
+ { 7, 0, 555 }, { 9, 0, 192 }, { 13, 0, 30 }, { 13, 0, 49 },
+ { 15, 0, 150 }, { 16, 0, 76 }, { 20, 0, 52 }, { 7, 10, 1316 },
+ { 7, 10, 1412 }, { 7, 10, 1839 }, { 9, 10, 589 }, { 11, 10, 241 },
+ { 11, 10, 676 }, { 11, 10, 811 }, { 11, 10, 891 }, { 12, 10, 140 },
+ { 12, 10, 346 }, { 12, 10, 479 }, { 13, 10, 381 }, { 14, 10, 188 },
+ { 18, 10, 30 }, { 21, 0, 15 }, { 6, 0, 1882 }, { 6, 0, 1883 },
+ { 6, 0, 1897 }, { 9, 0, 945 }, { 9, 0, 1014 }, { 9, 0, 1020 },
+ { 12, 0, 823 }, { 12, 0, 842 }, { 12, 0, 866 }, { 12, 0, 934 },
+ { 15, 0, 242 }, { 18, 0, 208 }, { 6, 0, 965 }, { 6, 0, 1499 },
+ { 7, 0, 33 }, { 7, 0, 120 }, { 8, 0, 489 }, { 9, 0, 319 },
+ { 10, 0, 820 }, { 11, 0, 1004 }, { 12, 0, 379 }, { 12, 0, 679 },
+ { 13, 0, 117 }, { 13, 0, 412 }, { 14, 0, 25 }, { 15, 0, 52 },
+ { 15, 0, 161 }, { 16, 0, 47 }, { 21, 0, 2 }, { 6, 11, 558 },
+ { 7, 11, 651 }, { 8, 11, 421 }, { 9, 11, 0 }, { 10, 11, 34 },
+ { 4, 0, 937 }, { 5, 0, 801 }, { 7, 0, 473 }, { 5, 10, 358 },
+ { 7, 10, 1184 }, { 10, 10, 662 }, { 13, 10, 212 }, { 13, 10, 304 },
+ { 13, 10, 333 }, { 17, 10, 98 }, { 4, 0, 877 }, { 6, 0, 693 },
+ { 6, 0, 824 }, { 4, 0, 365 }, { 7, 11, 1832 }, { 10, 11, 374 },
+ { 5, 0, 7 }, { 11, 0, 774 }, { 4, 0, 734 }, { 5, 0, 662 },
+ { 6, 0, 430 }, { 4, 0, 746 }, { 7, 0, 1090 }, { 5, 0, 360 },
+ { 8, 0, 237 }, { 10, 0, 231 }, { 19, 0, 124 }, { 10, 11, 348 },
+ { 6, 11, 6 }, { 7, 11, 81 }, { 7, 11, 771 }, { 7, 11, 1731 },
+ { 9, 11, 405 }, { 10, 11, 421 }, { 6, 0, 740 }, { 9, 0, 822 },
+ { 5, 10, 946 }, { 7, 0, 1485 }, { 8, 0, 929 }, { 7, 10, 411 },
+ { 8, 10, 631 }, { 9, 10, 323 }, { 10, 10, 355 }, { 11, 10, 491 },
+ { 12, 10, 143 }, { 12, 10, 402 }, { 13, 10, 73 }, { 14, 10, 408 },
+ { 15, 10, 107 }, { 18, 10, 71 }, { 7, 10, 590 }, { 5, 11, 881 },
+ { 5, 11, 885 }, { 22, 11, 25 }, { 4, 0, 852 }, { 5, 11, 142 },
+ { 6, 11, 546 }, { 7, 10, 1467 }, { 8, 10, 328 }, { 10, 10, 544 },
+ { 11, 10, 955 }, { 13, 10, 320 }, { 17, 10, 83 }, { 9, 0, 17 },
+ { 10, 0, 291 }, { 11, 10, 511 }, { 13, 10, 394 }, { 14, 10, 298 },
+ { 14, 10, 318 }, { 18, 10, 103 }, { 5, 11, 466 }, { 11, 11, 571 },
+ { 12, 11, 198 }, { 13, 11, 283 }, { 14, 11, 186 }, { 15, 11, 21 },
+ { 15, 11, 103 }, { 6, 0, 1001 }, { 4, 11, 185 }, { 5, 11, 257 },
+ { 5, 11, 839 }, { 5, 11, 936 }, { 7, 11, 171 }, { 9, 11, 399 },
+ { 10, 11, 258 }, { 10, 11, 395 }, { 10, 11, 734 }, { 11, 11, 1014 },
+ { 12, 11, 23 }, { 13, 11, 350 }, { 14, 11, 150 }, { 19, 11, 6 },
+ { 15, 0, 35 }, { 4, 0, 831 }, { 5, 10, 835 }, { 6, 10, 483 },
+ { 4, 0, 277 }, { 5, 0, 608 }, { 6, 0, 493 }, { 7, 0, 457 },
+ { 12, 0, 384 }, { 7, 11, 404 }, { 7, 11, 1377 }, { 7, 11, 1430 },
+ { 7, 11, 2017 }, { 8, 11, 149 }, { 8, 11, 239 }, { 8, 11, 512 },
+ { 8, 11, 793 }, { 8, 11, 818 }, { 9, 11, 474 }, { 9, 11, 595 },
+ { 10, 11, 122 }, { 10, 11, 565 }, { 10, 11, 649 }, { 10, 11, 783 },
+ { 11, 11, 239 }, { 11, 11, 295 }, { 11, 11, 447 }, { 11, 11, 528 },
+ { 11, 11, 639 }, { 11, 11, 800 }, { 11, 11, 936 }, { 12, 11, 25 },
+ { 12, 11, 73 }, { 12, 11, 77 }, { 12, 11, 157 }, { 12, 11, 316 },
+ { 12, 11, 390 }, { 12, 11, 391 }, { 12, 11, 394 }, { 12, 11, 395 },
+ { 12, 11, 478 }, { 12, 11, 503 }, { 12, 11, 592 }, { 12, 11, 680 },
+ { 13, 11, 50 }, { 13, 11, 53 }, { 13, 11, 132 }, { 13, 11, 198 },
+ { 13, 11, 275 }, { 13, 11, 322 }, { 13, 11, 415 }, { 14, 11, 71 },
+ { 14, 11, 257 }, { 14, 11, 395 }, { 15, 11, 71 }, { 15, 11, 136 },
+ { 17, 11, 123 }, { 18, 11, 93 }, { 19, 11, 58 }, { 6, 0, 1351 },
+ { 7, 0, 27 }, { 7, 0, 316 }, { 8, 11, 712 }, { 8, 0, 984 },
+ { 5, 0, 552 }, { 9, 0, 264 }, { 4, 0, 401 }, { 6, 0, 710 },
+ { 6, 0, 1111 }, { 6, 0, 1343 }, { 6, 0, 1211 }, { 9, 0, 543 },
+ { 10, 0, 524 }, { 11, 0, 108 }, { 11, 0, 653 }, { 12, 0, 524 },
+ { 13, 0, 123 }, { 14, 0, 252 }, { 16, 0, 18 }, { 19, 0, 38 },
+ { 20, 0, 26 }, { 20, 0, 65 }, { 21, 0, 3 }, { 23, 0, 11 },
+ { 4, 0, 205 }, { 5, 0, 623 }, { 7, 0, 104 }, { 8, 0, 519 },
+ { 9, 0, 716 }, { 4, 10, 677 }, { 4, 11, 377 }, { 24, 11, 13 },
+ { 7, 11, 1673 }, { 7, 0, 579 }, { 9, 0, 41 }, { 9, 0, 244 },
+ { 9, 0, 669 }, { 10, 0, 5 }, { 11, 0, 861 }, { 11, 0, 951 },
+ { 11, 0, 980 }, { 4, 0, 717 }, { 8, 0, 1011 }, { 4, 0, 805 },
+ { 4, 11, 180 }, { 7, 11, 1906 }, { 4, 10, 777 }, { 4, 10, 331 },
+ { 4, 0, 489 }, { 6, 0, 1024 }, { 4, 11, 491 }, { 5, 10, 747 },
+ { 7, 11, 1182 }, { 4, 11, 171 }, { 10, 11, 234 }, { 4, 11, 586 },
+ { 7, 11, 1186 }, { 10, 11, 631 }, { 7, 0, 892 }, { 7, 11, 336 },
+ { 9, 11, 931 }, { 10, 11, 334 }, { 20, 11, 71 }, { 9, 0, 473 },
+ { 6, 0, 864 }, { 12, 0, 659 }, { 11, 11, 926 }, { 7, 0, 819 },
+ { 9, 0, 26 }, { 9, 0, 392 }, { 10, 0, 152 }, { 10, 0, 226 },
+ { 11, 0, 19 }, { 12, 0, 276 }, { 12, 0, 426 }, { 12, 0, 589 },
+ { 13, 0, 460 }, { 15, 0, 97 }, { 19, 0, 48 }, { 20, 0, 104 },
+ { 7, 0, 51 }, { 5, 10, 326 }, { 4, 10, 691 }, { 18, 10, 16 },
+ { 9, 0, 130 }, { 11, 0, 765 }, { 10, 10, 680 }, { 10, 10, 793 },
+ { 13, 10, 357 }, { 5, 11, 765 }, { 8, 0, 229 }, { 6, 10, 32 },
+ { 7, 10, 385 }, { 7, 10, 757 }, { 7, 10, 1916 }, { 8, 10, 94 },
+ { 8, 10, 711 }, { 9, 10, 541 }, { 10, 10, 162 }, { 10, 10, 795 },
+ { 11, 10, 989 }, { 11, 10, 1010 }, { 12, 10, 14 }, { 14, 10, 308 },
+ { 7, 11, 474 }, { 9, 11, 578 }, { 4, 0, 674 }, { 4, 0, 770 },
+ { 5, 0, 79 }, { 7, 0, 1027 }, { 7, 0, 1477 }, { 11, 0, 52 },
+ { 5, 11, 424 }, { 6, 0, 1666 }, { 6, 0, 409 }, { 6, 10, 349 },
+ { 6, 10, 1682 }, { 7, 10, 1252 }, { 8, 10, 112 }, { 8, 11, 714 },
+ { 9, 10, 435 }, { 9, 10, 668 }, { 10, 10, 290 }, { 10, 10, 319 },
+ { 10, 10, 815 }, { 11, 10, 180 }, { 11, 10, 837 }, { 12, 10, 240 },
+ { 13, 10, 152 }, { 13, 10, 219 }, { 14, 10, 158 }, { 5, 0, 789 },
+ { 6, 0, 195 }, { 4, 0, 251 }, { 4, 0, 688 }, { 7, 0, 513 },
+ { 7, 0, 1284 }, { 4, 10, 581 }, { 9, 11, 420 }, { 10, 11, 269 },
+ { 10, 11, 285 }, { 10, 11, 576 }, { 11, 11, 397 }, { 13, 11, 175 },
+ { 17, 11, 90 }, { 6, 10, 126 }, { 7, 10, 573 }, { 8, 10, 397 },
+ { 14, 10, 44 }, { 4, 11, 429 }, { 5, 0, 889 }, { 4, 0, 160 },
+ { 5, 0, 330 }, { 7, 0, 1434 }, { 8, 0, 174 }, { 7, 11, 18 },
+ { 7, 11, 699 }, { 7, 11, 1966 }, { 8, 11, 752 }, { 9, 11, 273 },
+ { 9, 11, 412 }, { 9, 11, 703 }, { 10, 11, 71 }, { 10, 11, 427 },
+ { 10, 11, 508 }, { 18, 11, 97 }, { 6, 0, 872 }, { 6, 0, 899 },
+ { 5, 10, 926 }, { 6, 0, 1126 }, { 6, 0, 918 }, { 4, 11, 53 },
+ { 5, 11, 186 }, { 7, 11, 752 }, { 7, 0, 268 }, { 8, 0, 569 },
+ { 6, 0, 1224 }, { 6, 0, 1361 }, { 7, 10, 1232 }, { 9, 10, 531 },
+ { 8, 11, 575 }, { 10, 11, 289 }, { 11, 11, 319 }, { 5, 10, 670 },
+ { 4, 11, 675 }, { 5, 0, 374 }, { 7, 10, 1957 }, { 5, 0, 731 },
+ { 11, 0, 190 }, { 15, 0, 49 }, { 11, 11, 190 }, { 15, 11, 49 },
+ { 4, 0, 626 }, { 5, 0, 506 }, { 5, 0, 642 }, { 6, 0, 425 },
+ { 10, 0, 202 }, { 11, 0, 141 }, { 9, 0, 444 }, { 7, 10, 242 },
+ { 7, 10, 1942 }, { 6, 11, 209 }, { 8, 11, 468 }, { 9, 11, 210 },
+ { 11, 11, 36 }, { 12, 11, 28 }, { 12, 11, 630 }, { 13, 11, 21 },
+ { 13, 11, 349 }, { 14, 11, 7 }, { 17, 11, 13 }, { 4, 11, 342 },
+ { 7, 11, 1179 }, { 5, 10, 834 }, { 7, 10, 1202 }, { 8, 10, 14 },
+ { 9, 10, 481 }, { 9, 10, 880 }, { 4, 11, 928 }, { 5, 11, 910 },
+ { 4, 11, 318 }, { 4, 11, 496 }, { 7, 11, 856 }, { 11, 11, 654 },
+ { 8, 0, 835 }, { 7, 0, 1526 }, { 10, 10, 465 }, { 23, 0, 17 },
+ { 7, 0, 477 }, { 4, 10, 357 }, { 6, 10, 172 }, { 7, 10, 143 },
+ { 9, 10, 413 }, { 6, 0, 1374 }, { 10, 0, 994 }, { 18, 0, 76 },
+ { 4, 10, 590 }, { 7, 0, 287 }, { 8, 0, 355 }, { 9, 0, 293 },
+ { 9, 0, 743 }, { 6, 0, 1389 }, { 7, 11, 915 }, { 8, 11, 247 },
+ { 19, 11, 0 }, { 4, 11, 202 }, { 5, 11, 382 }, { 6, 11, 454 },
+ { 7, 11, 936 }, { 7, 11, 1803 }, { 8, 11, 758 }, { 9, 11, 375 },
+ { 9, 11, 895 }, { 10, 11, 743 }, { 10, 11, 792 }, { 11, 11, 978 },
+ { 11, 11, 1012 }, { 14, 11, 109 }, { 5, 0, 384 }, { 8, 0, 455 },
+ { 12, 0, 48 }, { 4, 11, 390 }, { 5, 10, 169 }, { 7, 10, 333 },
+ { 8, 10, 45 }, { 5, 0, 264 }, { 6, 0, 184 }, { 10, 11, 791 },
+ { 5, 11, 717 }, { 4, 10, 198 }, { 6, 11, 445 }, { 7, 11, 332 },
+ { 9, 11, 909 }, { 8, 0, 1001 }, { 4, 10, 24 }, { 5, 10, 140 },
+ { 5, 10, 185 }, { 7, 10, 1500 }, { 11, 10, 565 }, { 11, 10, 838 },
+ { 6, 11, 578 }, { 5, 0, 633 }, { 6, 0, 28 }, { 7, 0, 1323 },
+ { 4, 0, 851 }, { 8, 11, 267 }, { 7, 0, 359 }, { 8, 0, 243 },
+ { 12, 0, 175 }, { 4, 10, 334 }, { 5, 10, 593 }, { 13, 11, 87 },
+ { 8, 11, 766 }, { 10, 0, 287 }, { 12, 0, 138 }, { 10, 11, 287 },
+ { 12, 11, 138 }, { 4, 0, 105 }, { 4, 0, 740 }, { 12, 10, 116 },
+ { 6, 0, 857 }, { 7, 11, 1841 }, { 6, 0, 1402 }, { 9, 0, 819 },
+ { 4, 11, 584 }, { 4, 10, 709 }, { 5, 10, 897 }, { 5, 0, 224 },
+ { 13, 0, 174 }, { 18, 0, 52 }, { 7, 10, 1840 }, { 4, 10, 608 },
+ { 5, 10, 497 }, { 11, 11, 60 }, { 4, 0, 758 }, { 7, 0, 1649 },
+ { 4, 11, 226 }, { 4, 11, 326 }, { 7, 11, 1770 }, { 5, 11, 426 },
+ { 8, 11, 30 }, { 9, 11, 2 }, { 11, 11, 549 }, { 19, 11, 122 },
+ { 7, 10, 2039 }, { 6, 10, 540 }, { 8, 10, 136 }, { 4, 0, 573 },
+ { 8, 0, 655 }, { 4, 10, 897 }, { 5, 10, 786 }, { 7, 0, 351 },
+ { 11, 0, 128 }, { 5, 10, 999 }, { 4, 10, 299 }, { 7, 10, 1004 },
+ { 5, 0, 918 }, { 4, 11, 345 }, { 4, 11, 385 }, { 7, 11, 265 },
+ { 7, 11, 587 }, { 5, 10, 456 }, { 8, 10, 180 }, { 6, 0, 687 },
+ { 6, 0, 1537 }, { 4, 11, 347 }, { 5, 11, 423 }, { 5, 11, 996 },
+ { 7, 11, 1329 }, { 4, 10, 755 }, { 7, 11, 1259 }, { 9, 11, 125 },
+ { 11, 11, 65 }, { 12, 11, 285 }, { 5, 11, 136 }, { 6, 11, 136 },
+ { 8, 11, 644 }, { 6, 0, 1525 }, { 4, 0, 1009 }, { 7, 0, 1139 },
+ { 11, 10, 338 }, { 4, 0, 340 }, { 7, 10, 1464 }, { 8, 0, 847 },
+ { 10, 0, 861 }, { 10, 0, 876 }, { 10, 0, 889 }, { 10, 0, 922 },
+ { 10, 0, 929 }, { 10, 0, 933 }, { 12, 0, 784 }, { 12, 0, 791 },
+ { 11, 0, 176 }, { 9, 11, 134 }, { 10, 11, 2 }, { 10, 11, 27 },
+ { 10, 11, 333 }, { 11, 11, 722 }, { 15, 11, 1 }, { 4, 11, 433 },
+ { 5, 11, 719 }, { 5, 0, 985 }, { 7, 0, 509 }, { 7, 0, 529 },
+ { 17, 0, 96 }, { 4, 0, 615 }, { 4, 10, 890 }, { 5, 10, 805 },
+ { 5, 10, 819 }, { 5, 10, 961 }, { 6, 10, 396 }, { 6, 10, 1631 },
+ { 6, 10, 1678 }, { 7, 10, 1967 }, { 7, 10, 2041 }, { 9, 10, 630 },
+ { 11, 10, 8 }, { 11, 10, 1019 }, { 12, 10, 176 }, { 13, 10, 225 },
+ { 14, 10, 292 }, { 21, 10, 24 }, { 7, 0, 1919 }, { 6, 0, 1131 },
+ { 16, 11, 21 }, { 16, 11, 51 }, { 7, 10, 1815 }, { 4, 0, 247 },
+ { 7, 10, 1505 }, { 10, 10, 190 }, { 10, 10, 634 }, { 11, 10, 792 },
+ { 12, 10, 358 }, { 12, 10, 447 }, { 5, 10, 0 }, { 6, 10, 536 },
+ { 7, 10, 604 }, { 13, 10, 445 }, { 17, 10, 126 }, { 4, 0, 184 },
+ { 5, 0, 390 }, { 6, 0, 337 }, { 7, 0, 23 }, { 7, 0, 494 },
+ { 7, 0, 618 }, { 7, 0, 1456 }, { 8, 0, 27 }, { 8, 0, 599 },
+ { 10, 0, 153 }, { 11, 0, 710 }, { 6, 10, 232 }, { 6, 10, 412 },
+ { 7, 10, 1074 }, { 8, 10, 9 }, { 8, 10, 157 }, { 8, 10, 786 },
+ { 9, 10, 196 }, { 9, 10, 352 }, { 9, 10, 457 }, { 10, 10, 337 },
+ { 11, 10, 232 }, { 11, 10, 877 }, { 12, 10, 480 }, { 12, 10, 546 },
+ { 13, 0, 38 }, { 7, 10, 958 }, { 4, 10, 382 }, { 8, 10, 579 },
+ { 4, 10, 212 }, { 7, 10, 1206 }, { 4, 11, 555 }, { 8, 11, 536 },
+ { 10, 11, 288 }, { 11, 11, 139 }, { 11, 11, 171 }, { 9, 11, 370 },
+ { 10, 11, 90 }, { 4, 0, 1015 }, { 6, 0, 1088 }, { 5, 10, 655 },
+ { 7, 11, 977 }, { 6, 0, 1585 }, { 17, 10, 67 }, { 19, 10, 74 },
+ { 10, 0, 227 }, { 11, 0, 497 }, { 11, 0, 709 }, { 12, 0, 415 },
+ { 6, 0, 360 }, { 7, 0, 1664 }, { 8, 0, 478 }, { 7, 0, 95 },
+ { 6, 10, 231 }, { 8, 10, 423 }, { 12, 11, 65 }, { 4, 11, 257 },
+ { 7, 11, 2031 }, { 7, 11, 1768 }, { 5, 10, 300 }, { 11, 11, 211 },
+ { 8, 0, 699 }, { 6, 10, 237 }, { 7, 10, 611 }, { 8, 10, 100 },
+ { 9, 10, 416 }, { 11, 10, 335 }, { 12, 10, 173 }, { 18, 10, 101 },
+ { 14, 0, 26 }, { 18, 0, 150 }, { 6, 0, 581 }, { 7, 0, 1119 },
+ { 7, 10, 1208 }, { 4, 0, 739 }, { 6, 11, 83 }, { 6, 11, 1733 },
+ { 7, 11, 1389 }, { 9, 0, 869 }, { 4, 0, 67 }, { 5, 0, 422 },
+ { 7, 0, 1037 }, { 7, 0, 1289 }, { 7, 0, 1555 }, { 9, 0, 741 },
+ { 17, 0, 108 }, { 5, 10, 199 }, { 12, 10, 427 }, { 18, 10, 38 },
+ { 8, 0, 464 }, { 14, 0, 42 }, { 10, 0, 96 }, { 8, 11, 501 },
+ { 9, 11, 696 }, { 6, 11, 592 }, { 4, 0, 512 }, { 4, 0, 966 },
+ { 5, 0, 342 }, { 6, 0, 1855 }, { 8, 0, 869 }, { 8, 0, 875 },
+ { 8, 0, 901 }, { 16, 0, 26 }, { 8, 0, 203 }, { 11, 0, 823 },
+ { 11, 0, 846 }, { 12, 0, 482 }, { 13, 0, 277 }, { 13, 0, 302 },
+ { 13, 0, 464 }, { 14, 0, 205 }, { 14, 0, 221 }, { 4, 0, 449 },
+ { 5, 0, 718 }, { 7, 11, 1718 }, { 9, 11, 95 }, { 9, 11, 274 },
+ { 10, 11, 279 }, { 10, 11, 317 }, { 10, 11, 420 }, { 11, 11, 303 },
+ { 11, 11, 808 }, { 12, 11, 134 }, { 12, 11, 367 }, { 13, 11, 149 },
+ { 13, 11, 347 }, { 14, 11, 349 }, { 14, 11, 406 }, { 18, 11, 22 },
+ { 18, 11, 89 }, { 18, 11, 122 }, { 19, 11, 47 }, { 5, 11, 26 },
+ { 4, 0, 355 }, { 6, 0, 311 }, { 9, 0, 256 }, { 10, 0, 404 },
+ { 4, 11, 550 }, { 10, 0, 758 }, { 6, 10, 312 }, { 6, 10, 1715 },
+ { 10, 10, 584 }, { 11, 10, 546 }, { 11, 10, 692 }, { 12, 10, 259 },
+ { 12, 10, 295 }, { 13, 10, 46 }, { 13, 10, 154 }, { 8, 11, 822 },
+ { 5, 0, 827 }, { 4, 11, 902 }, { 5, 11, 809 }, { 6, 11, 122 },
+ { 7, 11, 896 }, { 5, 0, 64 }, { 12, 0, 581 }, { 4, 0, 442 },
+ { 6, 0, 739 }, { 7, 0, 1047 }, { 7, 0, 1352 }, { 7, 0, 1643 },
+ { 7, 11, 1911 }, { 9, 11, 449 }, { 10, 11, 192 }, { 10, 11, 740 },
+ { 7, 11, 262 }, { 4, 10, 588 }, { 5, 11, 620 }, { 5, 0, 977 },
+ { 6, 0, 288 }, { 7, 0, 528 }, { 4, 11, 34 }, { 5, 11, 574 },
+ { 7, 11, 279 }, { 7, 11, 1624 }, { 8, 11, 601 }, { 6, 0, 1375 },
+ { 4, 10, 231 }, { 5, 10, 61 }, { 6, 10, 104 }, { 7, 10, 729 },
+ { 7, 10, 964 }, { 7, 10, 1658 }, { 12, 10, 414 }, { 6, 10, 263 },
+ { 10, 10, 757 }, { 4, 10, 320 }, { 4, 0, 254 }, { 7, 0, 1309 },
+ { 5, 11, 332 }, { 7, 11, 1309 }, { 6, 11, 261 }, { 8, 11, 182 },
+ { 11, 11, 943 }, { 4, 10, 225 }, { 6, 0, 12 }, { 7, 0, 1219 },
+ { 4, 0, 275 }, { 12, 0, 376 }, { 6, 11, 1721 }, { 13, 11, 490 },
+ { 4, 11, 933 }, { 5, 11, 880 }, { 6, 0, 951 }, { 6, 0, 1109 },
+ { 6, 0, 1181 }, { 7, 0, 154 }, { 4, 10, 405 }, { 7, 10, 817 },
+ { 14, 10, 58 }, { 17, 10, 37 }, { 18, 10, 124 }, { 6, 0, 1520 },
+ { 5, 10, 974 }, { 6, 0, 1753 }, { 6, 0, 369 }, { 6, 0, 502 },
+ { 7, 0, 1036 }, { 8, 0, 348 }, { 9, 0, 452 }, { 10, 0, 26 },
+ { 11, 0, 224 }, { 11, 0, 387 }, { 11, 0, 772 }, { 12, 0, 95 },
+ { 12, 0, 629 }, { 13, 0, 195 }, { 13, 0, 207 }, { 13, 0, 241 },
+ { 14, 0, 260 }, { 14, 0, 270 }, { 15, 0, 140 }, { 4, 0, 269 },
+ { 5, 0, 480 }, { 7, 0, 532 }, { 7, 0, 1197 }, { 7, 0, 1358 },
+ { 8, 0, 291 }, { 11, 0, 349 }, { 14, 0, 396 }, { 5, 10, 235 },
+ { 7, 10, 1239 }, { 11, 10, 131 }, { 12, 10, 370 }, { 7, 10, 956 },
+ { 7, 10, 1157 }, { 7, 10, 1506 }, { 7, 10, 1606 }, { 7, 10, 1615 },
+ { 7, 10, 1619 }, { 7, 10, 1736 }, { 7, 10, 1775 }, { 8, 10, 590 },
+ { 9, 10, 324 }, { 9, 10, 736 }, { 9, 10, 774 }, { 9, 10, 776 },
+ { 9, 10, 784 }, { 10, 10, 567 }, { 10, 10, 708 }, { 11, 10, 518 },
+ { 11, 10, 613 }, { 11, 10, 695 }, { 11, 10, 716 }, { 11, 10, 739 },
+ { 11, 10, 770 }, { 11, 10, 771 }, { 11, 10, 848 }, { 11, 10, 857 },
+ { 11, 10, 931 }, { 11, 10, 947 }, { 12, 10, 326 }, { 12, 10, 387 },
+ { 12, 10, 484 }, { 12, 10, 528 }, { 12, 10, 552 }, { 12, 10, 613 },
+ { 13, 10, 189 }, { 13, 10, 256 }, { 13, 10, 340 }, { 13, 10, 432 },
+ { 13, 10, 436 }, { 13, 10, 440 }, { 13, 10, 454 }, { 14, 10, 174 },
+ { 14, 10, 220 }, { 14, 10, 284 }, { 14, 10, 390 }, { 17, 10, 121 },
+ { 8, 11, 598 }, { 9, 11, 664 }, { 10, 11, 441 }, { 9, 10, 137 },
+ { 10, 10, 221 }, { 5, 11, 812 }, { 20, 0, 15 }, { 6, 0, 1341 },
+ { 6, 0, 1017 }, { 4, 11, 137 }, { 7, 11, 1178 }, { 7, 11, 1520 },
+ { 7, 10, 390 }, { 10, 10, 140 }, { 7, 11, 1260 }, { 7, 11, 1790 },
+ { 9, 11, 191 }, { 7, 10, 1144 }, { 6, 0, 1810 }, { 7, 0, 657 },
+ { 8, 0, 886 }, { 10, 0, 857 }, { 14, 0, 440 }, { 16, 0, 96 },
+ { 8, 0, 533 }, { 6, 11, 1661 }, { 7, 11, 1975 }, { 7, 11, 2009 },
+ { 7, 11, 2011 }, { 6, 0, 1453 }, { 6, 10, 464 }, { 4, 11, 715 },
+ { 5, 10, 407 }, { 11, 10, 204 }, { 11, 10, 243 }, { 11, 10, 489 },
+ { 12, 10, 293 }, { 19, 10, 37 }, { 20, 10, 73 }, { 22, 10, 38 },
+ { 5, 11, 703 }, { 4, 0, 211 }, { 7, 0, 1483 }, { 5, 10, 325 },
+ { 8, 10, 5 }, { 8, 10, 227 }, { 9, 10, 105 }, { 10, 10, 585 },
+ { 12, 10, 614 }, { 4, 0, 332 }, { 5, 0, 335 }, { 6, 0, 238 },
+ { 7, 0, 269 }, { 7, 0, 811 }, { 7, 0, 1797 }, { 8, 0, 836 },
+ { 9, 0, 507 }, { 13, 0, 242 }, { 5, 11, 89 }, { 7, 11, 1915 },
+ { 9, 11, 185 }, { 9, 11, 235 }, { 9, 11, 496 }, { 10, 11, 64 },
+ { 10, 11, 270 }, { 10, 11, 403 }, { 10, 11, 469 }, { 10, 11, 529 },
+ { 10, 11, 590 }, { 11, 11, 140 }, { 11, 11, 860 }, { 13, 11, 1 },
+ { 13, 11, 422 }, { 14, 11, 341 }, { 14, 11, 364 }, { 17, 11, 93 },
+ { 18, 11, 113 }, { 19, 11, 97 }, { 19, 11, 113 }, { 5, 11, 695 },
+ { 16, 0, 19 }, { 5, 11, 6 }, { 6, 11, 183 }, { 6, 10, 621 },
+ { 7, 11, 680 }, { 7, 11, 978 }, { 7, 11, 1013 }, { 7, 11, 1055 },
+ { 12, 11, 230 }, { 13, 11, 172 }, { 13, 10, 504 }, { 18, 11, 29 },
+ { 8, 0, 156 }, { 5, 0, 1009 }, { 6, 11, 29 }, { 11, 11, 63 },
+ { 6, 0, 820 }, { 6, 10, 218 }, { 7, 10, 454 }, { 7, 10, 782 },
+ { 8, 10, 768 }, { 12, 10, 686 }, { 5, 0, 228 }, { 6, 0, 203 },
+ { 7, 0, 156 }, { 8, 0, 347 }, { 9, 0, 265 }, { 18, 0, 39 },
+ { 20, 0, 54 }, { 21, 0, 31 }, { 22, 0, 3 }, { 23, 0, 0 },
+ { 15, 11, 8 }, { 18, 11, 39 }, { 20, 11, 54 }, { 21, 11, 31 },
+ { 22, 11, 3 }, { 23, 11, 0 }, { 7, 0, 1131 }, { 7, 0, 1468 },
+ { 16, 10, 0 }, { 6, 0, 1276 }, { 10, 10, 676 }, { 12, 10, 462 },
+ { 4, 11, 311 }, { 6, 11, 1740 }, { 7, 11, 170 }, { 8, 11, 90 },
+ { 8, 11, 177 }, { 8, 11, 415 }, { 11, 11, 714 }, { 14, 11, 281 },
+ { 6, 10, 164 }, { 6, 0, 1792 }, { 10, 0, 849 }, { 22, 10, 50 },
+ { 5, 0, 291 }, { 5, 0, 318 }, { 7, 0, 765 }, { 9, 0, 389 },
+ { 12, 0, 548 }, { 8, 11, 522 }, { 14, 11, 328 }, { 11, 11, 91 },
+ { 13, 11, 129 }, { 15, 11, 101 }, { 17, 11, 125 }, { 4, 11, 494 },
+ { 6, 11, 74 }, { 7, 11, 44 }, { 7, 11, 407 }, { 8, 11, 551 },
+ { 12, 11, 17 }, { 15, 11, 5 }, { 20, 11, 11 }, { 4, 11, 276 },
+ { 5, 11, 296 }, { 6, 10, 343 }, { 7, 10, 195 }, { 7, 11, 1777 },
+ { 9, 10, 226 }, { 10, 10, 197 }, { 10, 10, 575 }, { 11, 10, 502 },
+ { 11, 10, 899 }, { 10, 0, 525 }, { 11, 0, 82 }, { 14, 0, 453 },
+ { 4, 11, 7 }, { 5, 11, 90 }, { 5, 11, 158 }, { 6, 11, 542 },
+ { 7, 11, 221 }, { 7, 11, 1574 }, { 9, 11, 490 }, { 10, 11, 540 },
+ { 11, 11, 443 }, { 11, 11, 757 }, { 7, 0, 666 }, { 22, 10, 29 },
+ { 22, 11, 29 }, { 4, 0, 422 }, { 19, 10, 8 }, { 5, 0, 355 },
+ { 17, 0, 0 }, { 6, 0, 1873 }, { 9, 0, 918 }, { 7, 11, 588 },
+ { 9, 11, 175 }, { 10, 11, 530 }, { 15, 11, 31 }, { 11, 0, 165 },
+ { 7, 10, 1125 }, { 9, 10, 143 }, { 14, 10, 405 }, { 22, 10, 21 },
+ { 9, 0, 260 }, { 9, 0, 905 }, { 5, 11, 872 }, { 6, 11, 57 },
+ { 6, 11, 479 }, { 6, 11, 562 }, { 7, 11, 471 }, { 7, 11, 1060 },
+ { 9, 11, 447 }, { 9, 11, 454 }, { 13, 11, 6 }, { 10, 11, 704 },
+ { 5, 0, 865 }, { 5, 0, 914 }, { 6, 0, 1625 }, { 5, 0, 234 },
+ { 7, 0, 1383 }, { 5, 11, 31 }, { 6, 11, 614 }, { 17, 11, 61 },
+ { 7, 11, 1200 }, { 10, 11, 460 }, { 6, 11, 424 }, { 7, 11, 1866 },
+ { 8, 0, 306 }, { 5, 10, 959 }, { 12, 11, 30 }, { 13, 11, 148 },
+ { 14, 11, 87 }, { 14, 11, 182 }, { 16, 11, 42 }, { 18, 11, 92 },
+ { 20, 11, 70 }, { 6, 0, 1919 }, { 6, 0, 1921 }, { 9, 0, 923 },
+ { 9, 0, 930 }, { 9, 0, 941 }, { 9, 0, 949 }, { 9, 0, 987 },
+ { 9, 0, 988 }, { 9, 0, 992 }, { 12, 0, 802 }, { 12, 0, 815 },
+ { 12, 0, 856 }, { 12, 0, 885 }, { 12, 0, 893 }, { 12, 0, 898 },
+ { 12, 0, 919 }, { 12, 0, 920 }, { 12, 0, 941 }, { 12, 0, 947 },
+ { 15, 0, 183 }, { 15, 0, 185 }, { 15, 0, 189 }, { 15, 0, 197 },
+ { 15, 0, 202 }, { 15, 0, 233 }, { 18, 0, 218 }, { 18, 0, 219 },
+ { 18, 0, 233 }, { 15, 11, 156 }, { 7, 10, 1759 }, { 8, 10, 173 },
+ { 13, 0, 163 }, { 13, 0, 180 }, { 18, 0, 78 }, { 20, 0, 35 },
+ { 5, 11, 13 }, { 6, 11, 142 }, { 6, 10, 266 }, { 6, 11, 97 },
+ { 7, 11, 116 }, { 8, 11, 322 }, { 8, 11, 755 }, { 9, 11, 548 },
+ { 10, 11, 714 }, { 11, 11, 884 }, { 13, 11, 324 }, { 7, 0, 1312 },
+ { 9, 0, 814 }, { 9, 11, 676 }, { 5, 0, 707 }, { 7, 0, 1493 },
+ { 6, 0, 421 }, { 7, 0, 61 }, { 7, 0, 1540 }, { 10, 0, 11 },
+ { 10, 0, 501 }, { 12, 0, 733 }, { 12, 0, 766 }, { 7, 11, 866 },
+ { 7, 11, 1163 }, { 9, 0, 341 }, { 14, 0, 98 }, { 17, 11, 115 },
+ { 7, 11, 1111 }, { 8, 10, 300 }, { 8, 0, 1014 }, { 8, 11, 1 },
+ { 9, 11, 112 }, { 10, 11, 326 }, { 4, 11, 730 }, { 5, 11, 488 },
+ { 6, 11, 527 }, { 7, 11, 489 }, { 7, 11, 1636 }, { 8, 11, 121 },
+ { 8, 11, 144 }, { 8, 11, 359 }, { 9, 11, 193 }, { 9, 11, 241 },
+ { 9, 11, 336 }, { 9, 11, 882 }, { 11, 11, 266 }, { 11, 11, 372 },
+ { 11, 11, 944 }, { 12, 11, 401 }, { 12, 11, 641 }, { 6, 0, 971 },
+ { 6, 0, 1121 }, { 6, 0, 102 }, { 7, 0, 72 }, { 15, 0, 142 },
+ { 19, 0, 67 }, { 23, 0, 30 }, { 7, 0, 823 }, { 6, 0, 1045 },
+ { 5, 10, 427 }, { 5, 10, 734 }, { 7, 10, 478 }, { 8, 10, 52 },
+ { 7, 0, 1930 }, { 11, 10, 217 }, { 14, 10, 165 }, { 6, 0, 1512 },
+ { 7, 0, 1870 }, { 9, 11, 31 }, { 10, 11, 244 }, { 10, 11, 699 },
+ { 12, 11, 149 }, { 13, 11, 497 }, { 5, 11, 377 }, { 17, 11, 101 },
+ { 10, 11, 158 }, { 13, 11, 13 }, { 13, 11, 137 }, { 13, 11, 258 },
+ { 14, 11, 111 }, { 14, 11, 225 }, { 14, 11, 253 }, { 14, 11, 304 },
+ { 14, 11, 339 }, { 14, 11, 417 }, { 18, 11, 33 }, { 6, 0, 87 },
+ { 6, 10, 1734 }, { 7, 10, 20 }, { 7, 10, 1056 }, { 8, 10, 732 },
+ { 9, 10, 406 }, { 9, 10, 911 }, { 10, 10, 694 }, { 6, 0, 1243 },
+ { 9, 0, 245 }, { 7, 0, 68 }, { 8, 0, 48 }, { 8, 0, 88 },
+ { 8, 0, 582 }, { 8, 0, 681 }, { 9, 0, 373 }, { 9, 0, 864 },
+ { 11, 0, 157 }, { 11, 0, 336 }, { 11, 0, 843 }, { 20, 0, 27 },
+ { 8, 11, 663 }, { 16, 11, 8 }, { 5, 10, 613 }, { 4, 0, 88 },
+ { 5, 0, 137 }, { 5, 0, 174 }, { 5, 0, 777 }, { 6, 0, 1664 },
+ { 6, 0, 1725 }, { 7, 0, 77 }, { 7, 0, 426 }, { 7, 0, 1317 },
+ { 7, 0, 1355 }, { 8, 0, 126 }, { 8, 0, 563 }, { 9, 0, 523 },
+ { 9, 0, 750 }, { 10, 0, 310 }, { 10, 0, 836 }, { 11, 0, 42 },
+ { 11, 0, 318 }, { 11, 0, 731 }, { 12, 0, 68 }, { 12, 0, 92 },
+ { 12, 0, 507 }, { 12, 0, 692 }, { 13, 0, 81 }, { 13, 0, 238 },
+ { 13, 0, 374 }, { 14, 0, 436 }, { 18, 0, 138 }, { 19, 0, 78 },
+ { 19, 0, 111 }, { 20, 0, 55 }, { 20, 0, 77 }, { 20, 0, 92 },
+ { 13, 0, 418 }, { 4, 0, 938 }, { 9, 0, 625 }, { 10, 0, 351 },
+ { 5, 11, 843 }, { 7, 10, 32 }, { 7, 10, 984 }, { 8, 10, 85 },
+ { 8, 10, 709 }, { 9, 10, 579 }, { 9, 10, 847 }, { 9, 10, 856 },
+ { 10, 10, 799 }, { 11, 10, 258 }, { 11, 10, 1007 }, { 12, 10, 331 },
+ { 12, 10, 615 }, { 13, 10, 188 }, { 13, 10, 435 }, { 14, 10, 8 },
+ { 15, 10, 165 }, { 16, 10, 27 }, { 20, 10, 40 }, { 6, 0, 1668 },
+ { 7, 0, 1499 }, { 8, 0, 117 }, { 9, 0, 314 }, { 10, 0, 174 },
+ { 7, 0, 707 }, { 4, 11, 554 }, { 5, 11, 536 }, { 5, 0, 403 },
+ { 5, 11, 207 }, { 9, 11, 79 }, { 11, 11, 625 }, { 17, 11, 7 },
+ { 4, 11, 424 }, { 8, 11, 785 }, { 4, 10, 167 }, { 7, 10, 82 },
+ { 9, 0, 7 }, { 23, 0, 6 }, { 9, 11, 7 }, { 23, 11, 6 },
+ { 6, 0, 282 }, { 5, 10, 62 }, { 6, 10, 534 }, { 7, 10, 74 },
+ { 7, 10, 678 }, { 7, 10, 684 }, { 7, 10, 1043 }, { 7, 10, 1072 },
+ { 8, 10, 280 }, { 8, 10, 541 }, { 8, 10, 686 }, { 9, 10, 258 },
+ { 10, 10, 519 }, { 11, 10, 252 }, { 12, 10, 282 }, { 10, 10, 33 },
+ { 4, 10, 359 }, { 4, 0, 44 }, { 5, 0, 311 }, { 6, 0, 156 },
+ { 7, 0, 639 }, { 7, 0, 762 }, { 7, 0, 1827 }, { 9, 0, 8 },
+ { 9, 0, 462 }, { 20, 0, 83 }, { 7, 11, 769 }, { 9, 11, 18 },
+ { 10, 11, 358 }, { 4, 0, 346 }, { 7, 0, 115 }, { 9, 0, 180 },
+ { 9, 0, 456 }, { 10, 0, 363 }, { 4, 11, 896 }, { 6, 11, 1777 },
+ { 5, 10, 211 }, { 7, 0, 761 }, { 7, 0, 1051 }, { 9, 0, 545 },
+ { 6, 10, 145 }, { 13, 10, 336 }, { 7, 11, 750 }, { 9, 11, 223 },
+ { 11, 11, 27 }, { 11, 11, 466 }, { 12, 11, 624 }, { 14, 11, 265 },
+ { 18, 11, 61 }, { 6, 0, 752 }, { 6, 0, 768 }, { 6, 0, 1195 },
+ { 6, 0, 1254 }, { 6, 0, 1619 }, { 9, 0, 835 }, { 6, 0, 1936 },
+ { 8, 0, 930 }, { 8, 0, 960 }, { 4, 10, 263 }, { 4, 11, 249 },
+ { 12, 0, 653 }, { 4, 10, 916 }, { 4, 11, 603 }, { 5, 11, 661 },
+ { 8, 0, 344 }, { 4, 11, 11 }, { 6, 11, 128 }, { 7, 11, 231 },
+ { 7, 11, 1533 }, { 10, 11, 725 }, { 6, 0, 1483 }, { 6, 0, 875 },
+ { 6, 0, 185 }, { 7, 0, 1899 }, { 9, 0, 875 }, { 11, 0, 673 },
+ { 15, 10, 155 }, { 16, 10, 79 }, { 7, 0, 93 }, { 7, 0, 210 },
+ { 7, 0, 1223 }, { 8, 0, 451 }, { 8, 0, 460 }, { 11, 0, 353 },
+ { 11, 0, 475 }, { 4, 10, 599 }, { 6, 10, 1634 }, { 7, 10, 67 },
+ { 7, 10, 691 }, { 7, 10, 979 }, { 7, 10, 1697 }, { 8, 10, 207 },
+ { 8, 10, 214 }, { 8, 10, 231 }, { 8, 10, 294 }, { 8, 10, 336 },
+ { 8, 10, 428 }, { 8, 10, 471 }, { 8, 10, 622 }, { 8, 10, 626 },
+ { 8, 10, 679 }, { 8, 10, 759 }, { 8, 10, 829 }, { 9, 10, 11 },
+ { 9, 10, 246 }, { 9, 10, 484 }, { 9, 10, 573 }, { 9, 10, 706 },
+ { 9, 10, 762 }, { 9, 10, 798 }, { 9, 10, 855 }, { 9, 10, 870 },
+ { 9, 10, 912 }, { 10, 10, 303 }, { 10, 10, 335 }, { 10, 10, 424 },
+ { 10, 10, 461 }, { 10, 10, 543 }, { 10, 10, 759 }, { 10, 10, 814 },
+ { 11, 10, 59 }, { 11, 10, 235 }, { 11, 10, 590 }, { 11, 10, 929 },
+ { 11, 10, 963 }, { 11, 10, 987 }, { 12, 10, 114 }, { 12, 10, 182 },
+ { 12, 10, 226 }, { 12, 10, 332 }, { 12, 10, 439 }, { 12, 10, 575 },
+ { 12, 10, 598 }, { 12, 10, 675 }, { 13, 10, 8 }, { 13, 10, 125 },
+ { 13, 10, 194 }, { 13, 10, 287 }, { 14, 10, 197 }, { 14, 10, 383 },
+ { 15, 10, 53 }, { 17, 10, 63 }, { 19, 10, 46 }, { 19, 10, 98 },
+ { 19, 10, 106 }, { 20, 10, 85 }, { 4, 11, 476 }, { 4, 0, 327 },
+ { 5, 0, 478 }, { 7, 0, 1332 }, { 8, 0, 753 }, { 5, 0, 1020 },
+ { 5, 0, 1022 }, { 7, 11, 1807 }, { 4, 0, 103 }, { 5, 0, 401 },
+ { 4, 0, 499 }, { 7, 0, 1421 }, { 10, 0, 207 }, { 13, 0, 164 },
+ { 19, 10, 126 }, { 9, 11, 20 }, { 10, 11, 324 }, { 11, 11, 488 },
+ { 4, 0, 96 }, { 9, 11, 280 }, { 10, 11, 134 }, { 7, 0, 968 },
+ { 5, 10, 187 }, { 7, 10, 1286 }, { 5, 11, 112 }, { 6, 11, 103 },
+ { 6, 11, 150 }, { 8, 0, 914 }, { 10, 0, 3 }, { 4, 10, 215 },
+ { 9, 10, 38 }, { 11, 10, 23 }, { 11, 10, 127 }, { 11, 10, 796 },
+ { 7, 0, 399 }, { 6, 0, 563 }, { 9, 0, 224 }, { 6, 0, 704 },
+ { 6, 0, 1214 }, { 4, 11, 708 }, { 8, 11, 15 }, { 9, 11, 50 },
+ { 9, 11, 386 }, { 11, 11, 18 }, { 11, 11, 529 }, { 12, 11, 228 },
+ { 4, 11, 563 }, { 7, 11, 109 }, { 7, 11, 592 }, { 7, 11, 637 },
+ { 7, 11, 770 }, { 7, 11, 1701 }, { 8, 11, 436 }, { 8, 11, 463 },
+ { 9, 11, 60 }, { 9, 11, 335 }, { 9, 11, 904 }, { 10, 11, 73 },
+ { 11, 11, 434 }, { 12, 11, 585 }, { 13, 11, 331 }, { 18, 11, 110 },
+ { 20, 11, 60 }, { 6, 0, 1559 }, { 4, 11, 502 }, { 6, 11, 347 },
+ { 10, 11, 161 }, { 4, 11, 33 }, { 5, 11, 102 }, { 5, 11, 500 },
+ { 6, 11, 284 }, { 7, 11, 1079 }, { 7, 11, 1423 }, { 7, 11, 1702 },
+ { 8, 11, 470 }, { 9, 11, 554 }, { 9, 11, 723 }, { 11, 11, 333 },
+ { 7, 11, 246 }, { 7, 11, 840 }, { 6, 11, 10 }, { 8, 11, 571 },
+ { 9, 11, 739 }, { 15, 11, 91 }, { 8, 0, 861 }, { 10, 0, 905 },
+ { 12, 0, 730 }, { 12, 0, 789 }, { 5, 11, 626 }, { 6, 0, 946 },
+ { 5, 0, 746 }, { 12, 0, 333 }, { 14, 0, 332 }, { 12, 11, 333 },
+ { 14, 11, 332 }, { 5, 11, 18 }, { 6, 11, 526 }, { 13, 11, 24 },
+ { 13, 11, 110 }, { 19, 11, 5 }, { 19, 11, 44 }, { 4, 0, 910 },
+ { 5, 0, 832 }, { 7, 10, 2002 }, { 10, 11, 768 }, { 11, 11, 787 },
+ { 4, 11, 309 }, { 5, 11, 462 }, { 7, 11, 970 }, { 7, 11, 1097 },
+ { 4, 10, 28 }, { 5, 10, 440 }, { 7, 10, 248 }, { 11, 10, 833 },
+ { 12, 10, 344 }, { 6, 10, 1654 }, { 6, 0, 632 }, { 6, 0, 652 },
+ { 6, 0, 1272 }, { 6, 0, 1384 }, { 6, 0, 1560 }, { 6, 11, 1704 },
+ { 6, 0, 1393 }, { 5, 10, 853 }, { 6, 10, 249 }, { 7, 10, 1234 },
+ { 11, 10, 573 }, { 5, 11, 86 }, { 7, 11, 743 }, { 9, 11, 85 },
+ { 10, 11, 281 }, { 10, 11, 432 }, { 11, 11, 490 }, { 12, 11, 251 },
+ { 13, 11, 118 }, { 14, 11, 378 }, { 18, 11, 143 }, { 5, 11, 524 },
+ { 5, 11, 744 }, { 6, 0, 1514 }, { 10, 0, 201 }, { 14, 0, 319 },
+ { 7, 0, 717 }, { 10, 0, 510 }, { 7, 10, 392 }, { 8, 10, 20 },
+ { 8, 10, 172 }, { 8, 10, 690 }, { 9, 10, 383 }, { 9, 10, 845 },
+ { 11, 10, 293 }, { 11, 10, 832 }, { 11, 10, 920 }, { 11, 10, 984 },
+ { 13, 10, 221 }, { 6, 0, 1381 }, { 5, 10, 858 }, { 5, 10, 992 },
+ { 8, 0, 528 }, { 9, 0, 348 }, { 10, 11, 107 }, { 12, 11, 436 },
+ { 4, 0, 20 }, { 5, 0, 616 }, { 6, 0, 1251 }, { 4, 11, 927 },
+ { 10, 11, 123 }, { 12, 11, 670 }, { 13, 11, 371 }, { 14, 11, 142 },
+ { 18, 11, 94 }, { 6, 0, 1163 }, { 7, 11, 1149 }, { 9, 11, 156 },
+ { 6, 0, 307 }, { 5, 11, 778 }, { 7, 0, 1091 }, { 7, 0, 1765 },
+ { 5, 11, 502 }, { 6, 10, 268 }, { 9, 10, 62 }, { 8, 11, 196 },
+ { 10, 11, 283 }, { 11, 11, 406 }, { 4, 0, 26 }, { 5, 0, 429 },
+ { 6, 0, 245 }, { 7, 0, 704 }, { 7, 0, 1379 }, { 7, 0, 1474 },
+ { 5, 11, 855 }, { 4, 0, 881 }, { 4, 0, 621 }, { 7, 11, 1596 },
+ { 7, 11, 1400 }, { 9, 11, 446 }, { 10, 11, 45 }, { 6, 0, 736 },
+ { 10, 10, 106 }, { 5, 0, 542 }, { 6, 0, 348 }, { 5, 0, 868 },
+ { 8, 0, 433 }, { 7, 0, 1495 }, { 10, 0, 771 }, { 6, 10, 613 },
+ { 8, 10, 223 }, { 10, 0, 215 }, { 13, 0, 124 }, { 8, 11, 391 },
+ { 7, 11, 172 }, { 4, 10, 670 }, { 12, 0, 55 }, { 9, 10, 40 },
+ { 11, 10, 136 }, { 7, 0, 62 }, { 19, 0, 112 }, { 4, 0, 856 },
+ { 4, 11, 568 }, { 12, 0, 270 }, { 11, 10, 259 }, { 8, 0, 572 },
+ { 9, 0, 698 }, { 4, 11, 732 }, { 9, 10, 310 }, { 9, 10, 682 },
+ { 14, 10, 296 }, { 6, 0, 939 }, { 8, 11, 733 }, { 7, 11, 1435 },
+ { 7, 10, 1401 }, { 7, 10, 1476 }, { 6, 0, 352 }, { 4, 10, 296 },
+ { 7, 10, 401 }, { 7, 10, 1410 }, { 7, 10, 1594 }, { 7, 10, 1674 },
+ { 8, 10, 63 }, { 8, 10, 660 }, { 9, 10, 74 }, { 4, 11, 428 },
+ { 5, 11, 668 }, { 4, 10, 139 }, { 4, 10, 388 }, { 12, 10, 188 },
+ { 7, 11, 2015 }, { 12, 11, 665 }, { 4, 0, 647 }, { 18, 0, 10 },
+ { 10, 0, 220 }, { 14, 0, 464 }, { 4, 0, 109 }, { 6, 0, 1746 },
+ { 6, 0, 515 }, { 4, 10, 747 }, { 6, 11, 1623 }, { 6, 11, 1681 },
+ { 7, 10, 649 }, { 7, 10, 1479 }, { 7, 10, 1583 }, { 5, 10, 232 },
+ { 7, 0, 566 }, { 9, 10, 887 }, { 4, 0, 40 }, { 10, 0, 67 },
+ { 11, 0, 117 }, { 11, 0, 768 }, { 11, 0, 935 }, { 4, 0, 801 },
+ { 7, 0, 992 }, { 8, 0, 301 }, { 9, 0, 722 }, { 12, 0, 63 },
+ { 13, 0, 29 }, { 14, 0, 161 }, { 15, 0, 18 }, { 11, 0, 923 },
+ { 6, 11, 1748 }, { 8, 11, 715 }, { 9, 11, 802 }, { 10, 11, 46 },
+ { 10, 11, 819 }, { 13, 11, 308 }, { 14, 11, 351 }, { 14, 11, 363 },
+ { 18, 11, 67 }, { 9, 11, 745 }, { 7, 0, 1145 }, { 4, 10, 14 },
+ { 7, 10, 1801 }, { 10, 10, 748 }, { 13, 10, 458 }, { 4, 11, 63 },
+ { 5, 11, 347 }, { 6, 11, 474 }, { 7, 0, 568 }, { 4, 10, 425 },
+ { 7, 11, 577 }, { 7, 11, 1432 }, { 9, 11, 475 }, { 9, 11, 505 },
+ { 9, 11, 526 }, { 9, 11, 609 }, { 9, 11, 689 }, { 9, 11, 726 },
+ { 9, 11, 735 }, { 9, 11, 738 }, { 10, 11, 556 }, { 10, 11, 674 },
+ { 10, 11, 684 }, { 11, 11, 89 }, { 11, 11, 202 }, { 11, 11, 272 },
+ { 11, 11, 380 }, { 11, 11, 415 }, { 11, 11, 505 }, { 11, 11, 537 },
+ { 11, 11, 550 }, { 11, 11, 562 }, { 11, 11, 640 }, { 11, 11, 667 },
+ { 11, 11, 688 }, { 11, 11, 847 }, { 11, 11, 927 }, { 11, 11, 930 },
+ { 11, 11, 940 }, { 12, 11, 144 }, { 12, 11, 325 }, { 12, 11, 329 },
+ { 12, 11, 389 }, { 12, 11, 403 }, { 12, 11, 451 }, { 12, 11, 515 },
+ { 12, 11, 604 }, { 12, 11, 616 }, { 12, 11, 626 }, { 13, 11, 66 },
+ { 13, 11, 131 }, { 13, 11, 167 }, { 13, 11, 236 }, { 13, 11, 368 },
+ { 13, 11, 411 }, { 13, 11, 434 }, { 13, 11, 453 }, { 13, 11, 461 },
+ { 13, 11, 474 }, { 14, 11, 59 }, { 14, 11, 60 }, { 14, 11, 139 },
+ { 14, 11, 152 }, { 14, 11, 276 }, { 14, 11, 353 }, { 14, 11, 402 },
+ { 15, 11, 28 }, { 15, 11, 81 }, { 15, 11, 123 }, { 15, 11, 152 },
+ { 18, 11, 136 }, { 20, 11, 88 }, { 9, 0, 247 }, { 7, 11, 1622 },
+ { 9, 11, 544 }, { 11, 11, 413 }, { 16, 11, 25 }, { 4, 0, 645 },
+ { 7, 0, 825 }, { 6, 10, 1768 }, { 7, 11, 89 }, { 12, 0, 328 },
+ { 5, 10, 943 }, { 6, 10, 1779 }, { 6, 0, 1363 }, { 5, 10, 245 },
+ { 6, 10, 576 }, { 7, 10, 582 }, { 8, 10, 225 }, { 6, 0, 1280 },
+ { 5, 11, 824 }, { 5, 11, 941 }, { 7, 11, 440 }, { 8, 11, 230 },
+ { 11, 11, 106 }, { 5, 0, 28 }, { 6, 0, 204 }, { 10, 0, 320 },
+ { 10, 0, 583 }, { 13, 0, 502 }, { 14, 0, 72 }, { 14, 0, 274 },
+ { 14, 0, 312 }, { 14, 0, 344 }, { 15, 0, 159 }, { 16, 0, 62 },
+ { 16, 0, 69 }, { 17, 0, 30 }, { 18, 0, 42 }, { 18, 0, 53 },
+ { 18, 0, 84 }, { 18, 0, 140 }, { 19, 0, 68 }, { 19, 0, 85 },
+ { 20, 0, 5 }, { 20, 0, 45 }, { 20, 0, 101 }, { 22, 0, 7 },
+ { 22, 0, 20 }, { 4, 0, 558 }, { 6, 0, 390 }, { 7, 0, 162 },
+ { 7, 0, 689 }, { 9, 0, 360 }, { 10, 0, 653 }, { 6, 0, 764 },
+ { 6, 0, 862 }, { 9, 0, 833 }, { 5, 0, 856 }, { 6, 0, 1672 },
+ { 6, 0, 1757 }, { 6, 0, 1781 }, { 5, 0, 92 }, { 10, 0, 736 },
+ { 12, 0, 102 }, { 6, 0, 1927 }, { 6, 0, 1944 }, { 8, 0, 924 },
+ { 8, 0, 948 }, { 10, 0, 967 }, { 10, 0, 978 }, { 6, 0, 1479 },
+ { 5, 0, 590 }, { 8, 0, 360 }, { 9, 0, 213 }, { 10, 0, 63 },
+ { 6, 0, 1521 }, { 6, 0, 709 }, { 6, 0, 891 }, { 4, 10, 443 },
+ { 13, 0, 477 }, { 14, 0, 120 }, { 20, 0, 61 }, { 4, 11, 914 },
+ { 5, 11, 800 }, { 5, 11, 852 }, { 10, 11, 54 }, { 13, 11, 115 },
+ { 4, 11, 918 }, { 5, 11, 876 }, { 11, 11, 152 }, { 4, 11, 92 },
+ { 5, 11, 274 }, { 7, 11, 1901 }, { 9, 11, 800 }, { 10, 11, 693 },
+ { 11, 11, 482 }, { 11, 11, 734 }, { 11, 11, 789 }, { 9, 0, 483 },
+ { 4, 10, 298 }, { 6, 0, 1213 }, { 13, 11, 498 }, { 7, 11, 1451 },
+ { 5, 11, 743 }, { 4, 0, 1022 }, { 10, 0, 1000 }, { 12, 0, 957 },
+ { 12, 0, 980 }, { 12, 0, 1013 }, { 14, 0, 481 }, { 16, 0, 116 },
+ { 8, 0, 503 }, { 17, 0, 29 }, { 4, 11, 49 }, { 7, 11, 280 },
+ { 7, 11, 1633 }, { 7, 0, 1712 }, { 6, 0, 466 }, { 8, 11, 47 },
+ { 5, 10, 164 }, { 7, 10, 121 }, { 14, 10, 189 }, { 7, 10, 812 },
+ { 7, 10, 1261 }, { 7, 10, 1360 }, { 9, 10, 632 }, { 12, 10, 352 },
+ { 11, 10, 556 }, { 4, 0, 731 }, { 5, 11, 272 }, { 5, 11, 908 },
+ { 5, 11, 942 }, { 7, 11, 1008 }, { 7, 11, 1560 }, { 8, 11, 197 },
+ { 9, 11, 47 }, { 11, 11, 538 }, { 11, 11, 742 }, { 4, 10, 172 },
+ { 9, 10, 611 }, { 10, 10, 436 }, { 12, 10, 673 }, { 13, 10, 255 },
+ { 5, 10, 844 }, { 10, 0, 484 }, { 11, 0, 754 }, { 12, 0, 457 },
+ { 14, 0, 171 }, { 14, 0, 389 }, { 18, 0, 153 }, { 9, 10, 263 },
+ { 10, 10, 147 }, { 10, 10, 492 }, { 9, 11, 891 }, { 10, 0, 241 },
+ { 5, 10, 537 }, { 6, 0, 2005 }, { 8, 0, 964 }, { 9, 10, 842 },
+ { 23, 11, 8 }, { 4, 11, 407 }, { 4, 11, 560 }, { 7, 11, 1884 },
+ { 6, 0, 1100 }, { 6, 0, 1242 }, { 7, 0, 954 }, { 5, 10, 230 },
+ { 5, 10, 392 }, { 6, 10, 420 }, { 9, 10, 568 }, { 12, 10, 612 },
+ { 4, 11, 475 }, { 11, 11, 35 }, { 11, 11, 90 }, { 13, 11, 7 },
+ { 13, 11, 71 }, { 13, 11, 177 }, { 14, 11, 422 }, { 8, 11, 332 },
+ { 7, 0, 1958 }, { 6, 0, 549 }, { 8, 0, 34 }, { 8, 0, 283 },
+ { 9, 0, 165 }, { 10, 0, 475 }, { 10, 0, 952 }, { 12, 0, 966 },
+ { 12, 0, 994 }, { 5, 0, 652 }, { 5, 0, 701 }, { 7, 0, 449 },
+ { 4, 0, 655 }, { 7, 0, 850 }, { 17, 0, 75 }, { 18, 0, 137 },
+ { 4, 0, 146 }, { 7, 0, 1618 }, { 8, 0, 670 }, { 5, 10, 41 },
+ { 7, 10, 1459 }, { 7, 10, 1469 }, { 7, 10, 1859 }, { 9, 10, 549 },
+ { 11, 10, 905 }, { 5, 10, 696 }, { 6, 0, 159 }, { 6, 0, 364 },
+ { 7, 0, 516 }, { 9, 0, 518 }, { 7, 0, 1439 }, { 6, 11, 222 },
+ { 7, 11, 636 }, { 7, 11, 1620 }, { 8, 11, 409 }, { 9, 11, 693 },
+ { 11, 11, 77 }, { 13, 0, 151 }, { 13, 11, 45 }, { 6, 0, 1027 },
+ { 4, 11, 336 }, { 4, 10, 771 }, { 11, 11, 392 }, { 10, 11, 121 },
+ { 11, 11, 175 }, { 21, 11, 16 }, { 8, 0, 950 }, { 10, 0, 983 },
+ { 5, 10, 921 }, { 7, 0, 993 }, { 6, 10, 180 }, { 7, 10, 1137 },
+ { 8, 10, 751 }, { 11, 10, 805 }, { 7, 0, 501 }, { 9, 0, 111 },
+ { 10, 0, 141 }, { 11, 0, 332 }, { 13, 0, 43 }, { 13, 0, 429 },
+ { 14, 0, 130 }, { 14, 0, 415 }, { 17, 0, 102 }, { 4, 10, 183 },
+ { 5, 11, 882 }, { 7, 10, 271 }, { 11, 10, 824 }, { 11, 10, 952 },
+ { 13, 10, 278 }, { 13, 10, 339 }, { 13, 10, 482 }, { 14, 10, 424 },
+ { 20, 10, 99 }, { 4, 10, 19 }, { 5, 10, 477 }, { 5, 10, 596 },
+ { 6, 10, 505 }, { 7, 10, 1221 }, { 11, 10, 907 }, { 12, 10, 209 },
+ { 13, 10, 214 }, { 7, 10, 1215 }, { 5, 0, 452 }, { 4, 11, 426 },
+ { 5, 0, 149 }, { 8, 0, 233 }, { 5, 0, 935 }, { 6, 11, 58 },
+ { 7, 11, 654 }, { 7, 11, 745 }, { 7, 11, 1969 }, { 8, 11, 240 },
+ { 8, 11, 675 }, { 9, 11, 479 }, { 9, 11, 731 }, { 10, 11, 330 },
+ { 10, 11, 593 }, { 10, 11, 817 }, { 11, 11, 32 }, { 11, 11, 133 },
+ { 11, 11, 221 }, { 17, 11, 68 }, { 12, 0, 582 }, { 18, 0, 131 },
+ { 7, 11, 102 }, { 9, 11, 538 }, { 8, 0, 801 }, { 6, 10, 1645 },
+ { 4, 0, 70 }, { 6, 10, 92 }, { 6, 10, 188 }, { 7, 10, 1269 },
+ { 7, 10, 1524 }, { 7, 10, 1876 }, { 10, 10, 228 }, { 11, 10, 1020 },
+ { 4, 10, 459 }, { 5, 10, 966 }, { 10, 0, 369 }, { 16, 0, 36 },
+ { 12, 10, 330 }, { 13, 11, 366 }, { 7, 0, 721 }, { 10, 0, 236 },
+ { 12, 0, 204 }, { 6, 10, 18 }, { 7, 10, 932 }, { 8, 10, 757 },
+ { 9, 10, 54 }, { 9, 10, 65 }, { 9, 10, 844 }, { 10, 10, 113 },
+ { 10, 10, 315 }, { 10, 10, 798 }, { 11, 10, 153 }, { 12, 10, 151 },
+ { 12, 10, 392 }, { 12, 10, 666 }, { 14, 10, 248 }, { 7, 0, 241 },
+ { 10, 0, 430 }, { 8, 10, 548 }, { 9, 10, 532 }, { 10, 10, 117 },
+ { 11, 10, 351 }, { 11, 10, 375 }, { 15, 10, 23 }, { 6, 10, 1742 },
+ { 5, 10, 965 }, { 5, 11, 566 }, { 6, 11, 48 }, { 7, 11, 63 },
+ { 6, 10, 182 }, { 10, 10, 65 }, { 10, 10, 488 }, { 10, 10, 497 },
+ { 6, 11, 114 }, { 7, 11, 1224 }, { 7, 11, 1556 }, { 8, 11, 3 },
+ { 6, 0, 1817 }, { 8, 11, 576 }, { 9, 11, 267 }, { 6, 0, 1078 },
+ { 16, 0, 16 }, { 9, 10, 588 }, { 10, 10, 260 }, { 10, 0, 1021 },
+ { 5, 0, 406 }, { 6, 0, 2022 }, { 5, 11, 933 }, { 6, 0, 69 },
+ { 7, 0, 117 }, { 7, 0, 1830 }, { 8, 11, 427 }, { 4, 0, 432 },
+ { 7, 0, 824 }, { 6, 10, 1786 }, { 5, 0, 826 }, { 11, 11, 67 },
+ { 5, 11, 759 }, { 7, 10, 308 }, { 9, 0, 816 }, { 5, 0, 1000 },
+ { 4, 0, 297 }, { 6, 0, 529 }, { 7, 0, 152 }, { 7, 0, 713 },
+ { 7, 0, 1845 }, { 8, 0, 710 }, { 8, 0, 717 }, { 12, 0, 639 },
+ { 12, 0, 685 }, { 7, 0, 423 }, { 8, 10, 588 }, { 8, 10, 287 },
+ { 8, 0, 510 }, { 6, 0, 1048 }, { 6, 0, 618 }, { 7, 11, 56 },
+ { 7, 11, 1989 }, { 8, 11, 337 }, { 8, 11, 738 }, { 9, 11, 600 },
+ { 10, 11, 483 }, { 12, 11, 37 }, { 13, 11, 447 }, { 14, 11, 92 },
+ { 4, 0, 520 }, { 7, 0, 575 }, { 8, 0, 990 }, { 10, 0, 977 },
+ { 7, 11, 774 }, { 9, 11, 347 }, { 11, 11, 24 }, { 12, 11, 170 },
+ { 8, 11, 379 }, { 12, 10, 290 }, { 4, 11, 328 }, { 4, 0, 321 },
+ { 6, 0, 569 }, { 4, 11, 101 }, { 7, 11, 1171 }, { 7, 0, 723 },
+ { 7, 0, 1135 }, { 5, 11, 833 }, { 8, 11, 744 }, { 7, 10, 719 },
+ { 8, 10, 809 }, { 8, 10, 834 }, { 8, 0, 921 }, { 8, 10, 796 },
+ { 5, 10, 210 }, { 6, 10, 213 }, { 7, 10, 60 }, { 10, 10, 364 },
+ { 11, 10, 135 }, { 5, 0, 397 }, { 6, 0, 154 }, { 7, 0, 676 },
+ { 8, 0, 443 }, { 8, 0, 609 }, { 9, 0, 24 }, { 9, 0, 325 },
+ { 10, 0, 35 }, { 11, 0, 535 }, { 11, 0, 672 }, { 11, 0, 1018 },
+ { 12, 0, 637 }, { 16, 0, 30 }, { 5, 10, 607 }, { 8, 10, 326 },
+ { 8, 10, 490 }, { 4, 10, 701 }, { 5, 10, 472 }, { 6, 11, 9 },
+ { 6, 11, 397 }, { 7, 11, 53 }, { 7, 11, 1742 }, { 9, 10, 758 },
+ { 10, 11, 632 }, { 11, 11, 828 }, { 12, 11, 146 }, { 7, 10, 380 },
+ { 7, 10, 1947 }, { 20, 11, 109 }, { 10, 10, 278 }, { 10, 11, 278 },
+ { 6, 0, 856 }, { 7, 0, 139 }, { 4, 10, 386 }, { 8, 10, 405 },
+ { 8, 10, 728 }, { 9, 10, 497 }, { 11, 10, 110 }, { 11, 10, 360 },
+ { 15, 10, 37 }, { 16, 10, 84 }, { 13, 0, 282 }, { 5, 0, 981 },
+ { 5, 0, 288 }, { 7, 10, 1452 }, { 7, 10, 1480 }, { 8, 10, 634 },
+ { 12, 10, 472 }, { 7, 0, 1890 }, { 8, 11, 367 }, { 10, 11, 760 },
+ { 14, 11, 79 }, { 20, 11, 17 }, { 24, 11, 0 }, { 4, 10, 524 },
+ { 8, 10, 810 }, { 4, 0, 56 }, { 7, 0, 1791 }, { 8, 0, 607 },
+ { 8, 0, 651 }, { 11, 0, 465 }, { 11, 0, 835 }, { 12, 0, 337 },
+ { 13, 0, 480 }, { 10, 10, 238 }, { 13, 10, 33 }, { 11, 11, 417 },
+ { 12, 11, 223 }, { 12, 11, 265 }, { 9, 0, 158 }, { 10, 0, 411 },
+ { 12, 0, 261 }, { 5, 10, 532 }, { 5, 10, 997 }, { 12, 11, 186 },
+ { 12, 11, 292 }, { 14, 11, 100 }, { 18, 11, 70 }, { 6, 0, 1403 },
+ { 8, 0, 617 }, { 6, 0, 1205 }, { 11, 0, 563 }, { 4, 0, 242 },
+ { 6, 0, 333 }, { 4, 11, 186 }, { 5, 11, 157 }, { 8, 11, 168 },
+ { 10, 11, 6 }, { 4, 0, 369 }, { 5, 11, 875 }, { 5, 10, 782 },
+ { 5, 10, 829 }, { 6, 10, 1738 }, { 6, 0, 622 }, { 7, 11, 1272 },
+ { 6, 0, 1407 }, { 7, 11, 111 }, { 8, 11, 581 }, { 7, 10, 1823 },
+ { 11, 10, 693 }, { 7, 0, 160 }, { 10, 0, 624 }, { 14, 0, 279 },
+ { 4, 0, 363 }, { 10, 11, 589 }, { 12, 11, 111 }, { 13, 11, 260 },
+ { 14, 11, 82 }, { 18, 11, 63 }, { 19, 11, 45 }, { 7, 11, 1364 },
+ { 7, 11, 1907 }, { 13, 11, 158 }, { 4, 11, 404 }, { 4, 11, 659 },
+ { 7, 11, 675 }, { 13, 11, 211 }, { 14, 11, 133 }, { 14, 11, 204 },
+ { 15, 11, 64 }, { 15, 11, 69 }, { 15, 11, 114 }, { 16, 11, 10 },
+ { 19, 11, 23 }, { 19, 11, 35 }, { 19, 11, 39 }, { 19, 11, 51 },
+ { 19, 11, 71 }, { 19, 11, 75 }, { 24, 11, 15 }, { 4, 10, 78 },
+ { 5, 10, 96 }, { 5, 10, 182 }, { 7, 10, 1724 }, { 7, 10, 1825 },
+ { 10, 10, 394 }, { 10, 10, 471 }, { 11, 10, 532 }, { 14, 10, 340 },
+ { 17, 10, 88 }, { 7, 10, 1964 }, { 5, 11, 391 }, { 11, 11, 887 },
+ { 14, 11, 365 }, { 14, 11, 375 }, { 5, 11, 540 }, { 6, 11, 1697 },
+ { 7, 11, 222 }, { 8, 11, 341 }, { 6, 11, 78 }, { 9, 0, 601 },
+ { 9, 0, 619 }, { 10, 0, 505 }, { 10, 0, 732 }, { 11, 0, 355 },
+ { 12, 0, 139 }, { 6, 0, 292 }, { 11, 0, 174 }, { 5, 0, 177 },
+ { 6, 0, 616 }, { 7, 0, 827 }, { 9, 0, 525 }, { 10, 0, 656 },
+ { 10, 0, 31 }, { 6, 10, 215 }, { 7, 10, 1028 }, { 7, 10, 1473 },
+ { 7, 10, 1721 }, { 9, 10, 424 }, { 10, 10, 779 }, { 7, 10, 584 },
+ { 8, 11, 293 }, { 6, 0, 685 }, { 7, 11, 1868 }, { 5, 11, 460 },
+ { 7, 0, 647 }, { 6, 10, 67 }, { 7, 10, 1630 }, { 9, 10, 354 },
+ { 9, 10, 675 }, { 10, 10, 830 }, { 14, 10, 80 }, { 17, 10, 80 },
+ { 4, 0, 161 }, { 5, 0, 631 }, { 6, 10, 141 }, { 7, 10, 225 },
+ { 9, 10, 59 }, { 9, 10, 607 }, { 10, 10, 312 }, { 11, 10, 687 },
+ { 12, 10, 555 }, { 13, 10, 373 }, { 13, 10, 494 }, { 20, 10, 58 },
+ { 7, 11, 965 }, { 7, 11, 1460 }, { 7, 11, 1604 }, { 8, 10, 783 },
+ { 6, 11, 388 }, { 6, 0, 722 }, { 6, 0, 1267 }, { 4, 11, 511 },
+ { 9, 11, 333 }, { 9, 11, 379 }, { 10, 11, 602 }, { 11, 11, 441 },
+ { 11, 11, 723 }, { 11, 11, 976 }, { 12, 11, 357 }, { 6, 0, 1797 },
+ { 7, 0, 1684 }, { 9, 0, 469 }, { 9, 0, 709 }, { 12, 0, 512 },
+ { 14, 0, 65 }, { 17, 0, 12 }, { 5, 11, 938 }, { 8, 11, 707 },
+ { 7, 0, 1230 }, { 8, 0, 531 }, { 10, 0, 229 }, { 11, 0, 73 },
+ { 11, 0, 376 }, { 11, 0, 433 }, { 12, 0, 268 }, { 12, 0, 640 },
+ { 14, 0, 119 }, { 7, 10, 430 }, { 11, 10, 46 }, { 6, 0, 558 },
+ { 7, 0, 651 }, { 8, 0, 421 }, { 9, 0, 0 }, { 10, 0, 34 },
+ { 11, 0, 1008 }, { 6, 0, 106 }, { 7, 0, 1786 }, { 7, 0, 1821 },
+ { 9, 0, 102 }, { 9, 0, 763 }, { 5, 10, 602 }, { 7, 10, 2018 },
+ { 9, 10, 418 }, { 5, 0, 65 }, { 6, 0, 416 }, { 7, 0, 1720 },
+ { 7, 0, 1924 }, { 10, 0, 109 }, { 11, 0, 14 }, { 11, 0, 70 },
+ { 11, 0, 569 }, { 11, 0, 735 }, { 15, 0, 153 }, { 20, 0, 80 },
+ { 8, 10, 677 }, { 7, 11, 1625 }, { 9, 11, 772 }, { 8, 0, 595 },
+ { 6, 11, 469 }, { 7, 11, 1709 }, { 10, 11, 515 }, { 7, 0, 1832 },
+ { 10, 0, 374 }, { 9, 0, 106 }, { 9, 0, 163 }, { 9, 0, 296 },
+ { 10, 0, 167 }, { 10, 0, 172 }, { 10, 0, 777 }, { 11, 0, 16 },
+ { 6, 0, 6 }, { 7, 0, 81 }, { 7, 0, 771 }, { 7, 0, 1731 },
+ { 9, 0, 405 }, { 10, 0, 421 }, { 4, 11, 500 }, { 7, 11, 938 },
+ { 5, 11, 68 }, { 6, 11, 383 }, { 5, 0, 881 }, { 5, 0, 885 },
+ { 6, 0, 854 }, { 6, 0, 1132 }, { 6, 0, 1495 }, { 6, 0, 1526 },
+ { 6, 0, 1533 }, { 6, 0, 1577 }, { 4, 11, 337 }, { 6, 11, 353 },
+ { 7, 11, 1934 }, { 8, 11, 488 }, { 9, 11, 429 }, { 7, 11, 236 },
+ { 7, 11, 1795 }, { 8, 11, 259 }, { 9, 11, 135 }, { 9, 11, 177 },
+ { 10, 11, 825 }, { 11, 11, 115 }, { 11, 11, 370 }, { 11, 11, 405 },
+ { 11, 11, 604 }, { 12, 11, 10 }, { 12, 11, 667 }, { 12, 11, 669 },
+ { 13, 11, 76 }, { 14, 11, 310 }, { 15, 11, 76 }, { 15, 11, 147 },
+ { 20, 11, 23 }, { 5, 0, 142 }, { 6, 0, 546 }, { 4, 11, 15 },
+ { 5, 11, 22 }, { 6, 11, 244 }, { 7, 11, 40 }, { 7, 11, 200 },
+ { 7, 11, 906 }, { 7, 11, 1199 }, { 9, 11, 616 }, { 10, 11, 716 },
+ { 11, 11, 635 }, { 11, 11, 801 }, { 12, 11, 458 }, { 5, 0, 466 },
+ { 11, 0, 571 }, { 12, 0, 198 }, { 13, 0, 283 }, { 14, 0, 186 },
+ { 15, 0, 21 }, { 15, 0, 103 }, { 7, 10, 329 }, { 4, 0, 185 },
+ { 5, 0, 257 }, { 5, 0, 839 }, { 5, 0, 936 }, { 9, 0, 399 },
+ { 10, 0, 258 }, { 10, 0, 395 }, { 10, 0, 734 }, { 11, 0, 1014 },
+ { 12, 0, 23 }, { 13, 0, 350 }, { 14, 0, 150 }, { 19, 0, 6 },
+ { 7, 11, 1735 }, { 12, 11, 36 }, { 13, 11, 337 }, { 5, 11, 598 },
+ { 7, 11, 791 }, { 8, 11, 108 }, { 9, 11, 123 }, { 4, 10, 469 },
+ { 7, 0, 404 }, { 7, 0, 1377 }, { 7, 0, 1430 }, { 7, 0, 2017 },
+ { 8, 0, 149 }, { 8, 0, 239 }, { 8, 0, 512 }, { 8, 0, 793 },
+ { 8, 0, 818 }, { 9, 0, 474 }, { 9, 0, 595 }, { 10, 0, 122 },
+ { 10, 0, 565 }, { 10, 0, 649 }, { 10, 0, 783 }, { 11, 0, 239 },
+ { 11, 0, 295 }, { 11, 0, 447 }, { 11, 0, 528 }, { 11, 0, 639 },
+ { 11, 0, 800 }, { 12, 0, 25 }, { 12, 0, 77 }, { 12, 0, 157 },
+ { 12, 0, 256 }, { 12, 0, 316 }, { 12, 0, 390 }, { 12, 0, 391 },
+ { 12, 0, 395 }, { 12, 0, 478 }, { 12, 0, 503 }, { 12, 0, 592 },
+ { 12, 0, 680 }, { 13, 0, 50 }, { 13, 0, 53 }, { 13, 0, 132 },
+ { 13, 0, 198 }, { 13, 0, 322 }, { 13, 0, 415 }, { 13, 0, 511 },
+ { 14, 0, 71 }, { 14, 0, 395 }, { 15, 0, 71 }, { 15, 0, 136 },
+ { 17, 0, 123 }, { 18, 0, 93 }, { 19, 0, 58 }, { 8, 0, 712 },
+ { 6, 10, 1743 }, { 5, 10, 929 }, { 6, 10, 340 }, { 8, 10, 376 },
+ { 8, 10, 807 }, { 6, 0, 1848 }, { 8, 0, 860 }, { 10, 0, 856 },
+ { 10, 0, 859 }, { 10, 0, 925 }, { 10, 0, 941 }, { 12, 0, 762 },
+ { 6, 0, 629 }, { 6, 0, 906 }, { 9, 0, 810 }, { 12, 0, 652 },
+ { 5, 10, 218 }, { 7, 10, 1610 }, { 10, 10, 83 }, { 7, 10, 1512 },
+ { 7, 10, 1794 }, { 4, 0, 377 }, { 24, 0, 13 }, { 4, 11, 155 },
+ { 7, 11, 1689 }, { 11, 10, 0 }, { 16, 10, 78 }, { 4, 11, 164 },
+ { 5, 11, 151 }, { 5, 11, 730 }, { 5, 11, 741 }, { 7, 11, 498 },
+ { 7, 11, 870 }, { 7, 11, 1542 }, { 12, 11, 213 }, { 14, 11, 36 },
+ { 14, 11, 391 }, { 17, 11, 111 }, { 18, 11, 6 }, { 18, 11, 46 },
+ { 18, 11, 151 }, { 19, 11, 36 }, { 20, 11, 32 }, { 20, 11, 56 },
+ { 20, 11, 69 }, { 20, 11, 102 }, { 21, 11, 4 }, { 22, 11, 8 },
+ { 22, 11, 10 }, { 22, 11, 14 }, { 22, 11, 31 }, { 7, 0, 1842 },
+ { 5, 10, 571 }, { 4, 10, 455 }, { 4, 11, 624 }, { 7, 11, 1752 },
+ { 6, 0, 1501 }, { 4, 11, 492 }, { 5, 11, 451 }, { 6, 10, 161 },
+ { 7, 10, 372 }, { 9, 10, 597 }, { 4, 10, 349 }, { 4, 0, 180 },
+ { 7, 0, 1906 }, { 7, 11, 835 }, { 13, 11, 70 }, { 4, 0, 491 },
+ { 9, 10, 751 }, { 6, 10, 432 }, { 11, 10, 322 }, { 4, 0, 171 },
+ { 10, 0, 234 }, { 6, 11, 113 }, { 7, 11, 436 }, { 4, 0, 586 },
+ { 7, 0, 1186 }, { 10, 0, 631 }, { 5, 10, 468 }, { 10, 10, 325 },
+ { 11, 10, 856 }, { 12, 10, 345 }, { 15, 10, 104 }, { 5, 10, 223 },
+ { 10, 11, 592 }, { 10, 11, 753 }, { 12, 11, 317 }, { 12, 11, 355 },
+ { 12, 11, 465 }, { 12, 11, 469 }, { 12, 11, 560 }, { 12, 11, 578 },
+ { 13, 11, 243 }, { 4, 10, 566 }, { 7, 11, 520 }, { 4, 10, 59 },
+ { 7, 10, 1394 }, { 6, 10, 436 }, { 11, 10, 481 }, { 9, 0, 931 },
+ { 10, 0, 334 }, { 20, 0, 71 }, { 4, 10, 48 }, { 5, 10, 271 },
+ { 7, 10, 953 }, { 7, 11, 1878 }, { 11, 0, 170 }, { 5, 10, 610 },
+ { 8, 10, 457 }, { 5, 10, 755 }, { 6, 0, 1587 }, { 7, 10, 1217 },
+ { 4, 10, 197 }, { 21, 11, 26 }, { 5, 11, 585 }, { 9, 11, 521 },
+ { 5, 0, 765 }, { 5, 10, 217 }, { 11, 11, 586 }, { 5, 0, 424 },
+ { 9, 11, 752 }, { 12, 11, 610 }, { 13, 11, 431 }, { 16, 11, 59 },
+ { 18, 11, 109 }, { 8, 0, 714 }, { 7, 0, 685 }, { 4, 11, 307 },
+ { 9, 0, 420 }, { 10, 0, 269 }, { 10, 0, 285 }, { 10, 0, 576 },
+ { 11, 0, 397 }, { 13, 0, 175 }, { 17, 0, 90 }, { 4, 0, 429 },
+ { 5, 11, 964 }, { 9, 11, 463 }, { 10, 11, 595 }, { 7, 0, 18 },
+ { 7, 0, 699 }, { 7, 0, 1966 }, { 8, 0, 752 }, { 9, 0, 273 },
+ { 9, 0, 412 }, { 9, 0, 703 }, { 10, 0, 71 }, { 10, 0, 427 },
+ { 10, 0, 508 }, { 4, 10, 165 }, { 7, 10, 1398 }, { 7, 10, 1829 },
+ { 4, 0, 53 }, { 5, 0, 186 }, { 7, 0, 752 }, { 7, 0, 828 },
+ { 14, 0, 116 }, { 8, 0, 575 }, { 10, 0, 289 }, { 11, 0, 319 },
+ { 4, 0, 675 }, { 6, 0, 1424 }, { 4, 11, 75 }, { 5, 11, 180 },
+ { 6, 11, 500 }, { 7, 11, 58 }, { 7, 11, 710 }, { 10, 11, 645 },
+ { 5, 11, 649 }, { 6, 11, 276 }, { 7, 11, 282 }, { 7, 11, 879 },
+ { 7, 11, 924 }, { 8, 11, 459 }, { 9, 11, 599 }, { 9, 11, 754 },
+ { 11, 11, 574 }, { 12, 11, 128 }, { 12, 11, 494 }, { 13, 11, 52 },
+ { 13, 11, 301 }, { 15, 11, 30 }, { 15, 11, 132 }, { 6, 0, 647 },
+ { 6, 0, 1095 }, { 5, 10, 9 }, { 7, 10, 297 }, { 7, 10, 966 },
+ { 12, 10, 306 }, { 4, 11, 200 }, { 6, 0, 1334 }, { 5, 10, 146 },
+ { 6, 10, 411 }, { 10, 10, 721 }, { 6, 0, 209 }, { 6, 0, 1141 },
+ { 6, 0, 1288 }, { 8, 0, 468 }, { 9, 0, 210 }, { 11, 0, 36 },
+ { 12, 0, 28 }, { 12, 0, 630 }, { 13, 0, 21 }, { 13, 0, 349 },
+ { 14, 0, 7 }, { 17, 0, 13 }, { 6, 10, 177 }, { 7, 10, 467 },
+ { 4, 0, 342 }, { 7, 0, 1179 }, { 10, 11, 454 }, { 12, 11, 324 },
+ { 4, 0, 928 }, { 5, 0, 910 }, { 7, 0, 1838 }, { 6, 11, 225 },
+ { 9, 11, 211 }, { 16, 0, 101 }, { 20, 0, 115 }, { 20, 0, 118 },
+ { 20, 0, 122 }, { 4, 0, 496 }, { 7, 0, 856 }, { 4, 0, 318 },
+ { 11, 0, 654 }, { 7, 11, 718 }, { 11, 11, 102 }, { 8, 11, 58 },
+ { 9, 11, 724 }, { 11, 11, 809 }, { 13, 11, 113 }, { 17, 11, 72 },
+ { 5, 10, 200 }, { 6, 11, 345 }, { 7, 11, 1247 }, { 8, 11, 767 },
+ { 8, 11, 803 }, { 9, 11, 301 }, { 9, 11, 903 }, { 7, 0, 915 },
+ { 8, 0, 247 }, { 19, 0, 0 }, { 7, 11, 1949 }, { 8, 11, 674 },
+ { 4, 0, 202 }, { 5, 0, 382 }, { 6, 0, 454 }, { 7, 0, 936 },
+ { 7, 0, 1803 }, { 8, 0, 758 }, { 9, 0, 375 }, { 9, 0, 895 },
+ { 10, 0, 743 }, { 10, 0, 792 }, { 11, 0, 978 }, { 11, 0, 1012 },
+ { 14, 0, 109 }, { 7, 0, 1150 }, { 7, 0, 1425 }, { 7, 0, 1453 },
+ { 12, 0, 513 }, { 6, 11, 259 }, { 10, 0, 791 }, { 11, 0, 821 },
+ { 12, 0, 110 }, { 12, 0, 153 }, { 18, 0, 41 }, { 22, 0, 19 },
+ { 6, 10, 481 }, { 4, 0, 796 }, { 6, 0, 445 }, { 9, 0, 909 },
+ { 8, 11, 254 }, { 10, 0, 776 }, { 13, 0, 345 }, { 14, 0, 425 },
+ { 4, 10, 84 }, { 7, 10, 1482 }, { 10, 10, 76 }, { 10, 10, 142 },
+ { 7, 11, 742 }, { 6, 0, 578 }, { 5, 10, 1015 }, { 6, 0, 1387 },
+ { 4, 10, 315 }, { 5, 10, 507 }, { 7, 10, 1370 }, { 4, 0, 438 },
+ { 5, 0, 555 }, { 8, 0, 766 }, { 5, 11, 248 }, { 6, 10, 1722 },
+ { 4, 11, 116 }, { 5, 11, 95 }, { 5, 11, 445 }, { 7, 11, 1688 },
+ { 8, 11, 29 }, { 9, 11, 272 }, { 11, 11, 509 }, { 11, 11, 915 },
+ { 7, 0, 541 }, { 5, 11, 543 }, { 8, 10, 222 }, { 8, 10, 476 },
+ { 9, 10, 238 }, { 11, 10, 516 }, { 11, 10, 575 }, { 15, 10, 109 },
+ { 18, 10, 100 }, { 6, 0, 880 }, { 6, 0, 1191 }, { 5, 11, 181 },
+ { 8, 11, 41 }, { 6, 0, 1506 }, { 4, 11, 681 }, { 7, 11, 25 },
+ { 8, 11, 202 }, { 10, 11, 536 }, { 11, 0, 983 }, { 9, 0, 768 },
+ { 4, 0, 584 }, { 9, 11, 423 }, { 12, 11, 89 }, { 8, 11, 113 },
+ { 9, 11, 877 }, { 10, 11, 554 }, { 11, 11, 83 }, { 12, 11, 136 },
+ { 19, 11, 109 }, { 7, 10, 706 }, { 7, 10, 1058 }, { 10, 10, 538 },
+ { 5, 11, 976 }, { 4, 11, 206 }, { 7, 11, 746 }, { 8, 11, 526 },
+ { 12, 0, 737 }, { 11, 10, 92 }, { 11, 10, 196 }, { 11, 10, 409 },
+ { 11, 10, 450 }, { 11, 10, 666 }, { 11, 10, 777 }, { 12, 10, 262 },
+ { 13, 10, 385 }, { 13, 10, 393 }, { 15, 10, 115 }, { 16, 10, 45 },
+ { 17, 10, 82 }, { 4, 0, 226 }, { 4, 0, 326 }, { 7, 0, 1770 },
+ { 4, 11, 319 }, { 5, 11, 699 }, { 10, 11, 673 }, { 6, 10, 40 },
+ { 7, 10, 1781 }, { 5, 0, 426 }, { 8, 0, 30 }, { 9, 0, 2 },
+ { 11, 0, 549 }, { 19, 0, 122 }, { 6, 0, 1161 }, { 6, 0, 1329 },
+ { 10, 10, 97 }, { 6, 10, 423 }, { 7, 10, 665 }, { 7, 10, 1210 },
+ { 7, 11, 13 }, { 8, 11, 226 }, { 10, 11, 537 }, { 11, 11, 570 },
+ { 11, 11, 605 }, { 11, 11, 799 }, { 11, 11, 804 }, { 12, 11, 85 },
+ { 12, 11, 516 }, { 12, 11, 623 }, { 13, 11, 112 }, { 13, 11, 361 },
+ { 14, 11, 77 }, { 14, 11, 78 }, { 17, 11, 28 }, { 19, 11, 110 },
+ { 4, 11, 769 }, { 4, 11, 551 }, { 4, 11, 728 }, { 19, 0, 117 },
+ { 9, 11, 57 }, { 9, 11, 459 }, { 10, 11, 425 }, { 11, 11, 119 },
+ { 12, 11, 184 }, { 12, 11, 371 }, { 13, 11, 358 }, { 17, 11, 51 },
+ { 5, 11, 188 }, { 5, 11, 814 }, { 8, 11, 10 }, { 9, 11, 421 },
+ { 9, 11, 729 }, { 10, 11, 609 }, { 11, 11, 689 }, { 6, 11, 624 },
+ { 7, 11, 298 }, { 7, 0, 462 }, { 4, 0, 345 }, { 11, 10, 624 },
+ { 8, 10, 574 }, { 4, 0, 385 }, { 7, 0, 265 }, { 7, 0, 587 },
+ { 6, 0, 808 }, { 4, 11, 528 }, { 5, 0, 398 }, { 4, 10, 354 },
+ { 4, 0, 347 }, { 5, 0, 423 }, { 5, 0, 996 }, { 7, 0, 1329 },
+ { 7, 10, 1558 }, { 7, 0, 1259 }, { 9, 0, 125 }, { 11, 0, 65 },
+ { 5, 0, 136 }, { 6, 0, 136 }, { 8, 0, 644 }, { 5, 11, 104 },
+ { 6, 11, 173 }, { 7, 11, 1631 }, { 7, 0, 469 }, { 5, 10, 830 },
+ { 4, 0, 278 }, { 5, 0, 465 }, { 7, 0, 1367 }, { 7, 11, 810 },
+ { 8, 11, 138 }, { 8, 11, 342 }, { 9, 11, 84 }, { 10, 11, 193 },
+ { 11, 11, 883 }, { 12, 11, 359 }, { 5, 10, 496 }, { 7, 10, 203 },
+ { 4, 0, 433 }, { 5, 0, 719 }, { 6, 11, 95 }, { 6, 10, 547 },
+ { 5, 10, 88 }, { 9, 10, 239 }, { 6, 11, 406 }, { 10, 11, 409 },
+ { 10, 11, 447 }, { 11, 11, 44 }, { 12, 11, 100 }, { 6, 0, 1423 },
+ { 7, 10, 650 }, { 7, 10, 1310 }, { 6, 0, 749 }, { 7, 11, 1243 },
+ { 7, 0, 1363 }, { 6, 0, 381 }, { 7, 0, 645 }, { 7, 0, 694 },
+ { 8, 0, 546 }, { 7, 10, 1076 }, { 9, 10, 80 }, { 11, 10, 78 },
+ { 11, 10, 421 }, { 11, 10, 534 }, { 12, 10, 545 }, { 6, 11, 1636 },
+ { 7, 11, 1344 }, { 12, 0, 277 }, { 7, 10, 274 }, { 11, 10, 479 },
+ { 11, 10, 507 }, { 6, 0, 705 }, { 6, 0, 783 }, { 6, 0, 1275 },
+ { 6, 0, 1481 }, { 4, 11, 282 }, { 7, 11, 1034 }, { 11, 11, 398 },
+ { 11, 11, 634 }, { 12, 11, 1 }, { 12, 11, 79 }, { 12, 11, 544 },
+ { 14, 11, 237 }, { 17, 11, 10 }, { 18, 11, 20 }, { 6, 0, 453 },
+ { 4, 0, 555 }, { 8, 0, 536 }, { 10, 0, 288 }, { 11, 0, 1005 },
+ { 4, 10, 497 }, { 7, 10, 1584 }, { 5, 11, 118 }, { 5, 11, 499 },
+ { 6, 11, 476 }, { 7, 11, 600 }, { 7, 11, 888 }, { 7, 11, 1096 },
+ { 10, 0, 987 }, { 7, 0, 1107 }, { 7, 10, 261 }, { 7, 10, 1115 },
+ { 7, 10, 1354 }, { 7, 10, 1588 }, { 7, 10, 1705 }, { 7, 10, 1902 },
+ { 9, 10, 465 }, { 10, 10, 248 }, { 10, 10, 349 }, { 10, 10, 647 },
+ { 11, 10, 527 }, { 11, 10, 660 }, { 11, 10, 669 }, { 12, 10, 529 },
+ { 13, 10, 305 }, { 7, 11, 296 }, { 7, 11, 596 }, { 8, 11, 560 },
+ { 8, 11, 586 }, { 9, 11, 612 }, { 11, 11, 100 }, { 11, 11, 304 },
+ { 12, 11, 46 }, { 13, 11, 89 }, { 14, 11, 112 }, { 17, 11, 122 },
+ { 9, 0, 370 }, { 10, 0, 90 }, { 8, 10, 13 }, { 4, 0, 860 },
+ { 7, 10, 642 }, { 8, 10, 250 }, { 11, 10, 123 }, { 11, 10, 137 },
+ { 13, 10, 48 }, { 14, 10, 95 }, { 7, 10, 1429 }, { 9, 11, 321 },
+ { 4, 0, 257 }, { 7, 0, 2031 }, { 7, 0, 1768 }, { 7, 11, 1599 },
+ { 7, 11, 1723 }, { 8, 11, 79 }, { 8, 11, 106 }, { 8, 11, 190 },
+ { 8, 11, 302 }, { 8, 11, 383 }, { 9, 11, 119 }, { 9, 11, 233 },
+ { 9, 11, 298 }, { 9, 11, 419 }, { 9, 11, 471 }, { 10, 11, 181 },
+ { 10, 11, 406 }, { 11, 11, 57 }, { 11, 11, 85 }, { 11, 11, 120 },
+ { 11, 11, 177 }, { 11, 11, 296 }, { 11, 11, 382 }, { 11, 11, 454 },
+ { 11, 11, 758 }, { 11, 11, 999 }, { 12, 11, 27 }, { 12, 11, 98 },
+ { 12, 11, 131 }, { 12, 11, 245 }, { 12, 11, 312 }, { 12, 11, 446 },
+ { 12, 11, 454 }, { 13, 11, 25 }, { 13, 11, 98 }, { 13, 11, 426 },
+ { 13, 11, 508 }, { 14, 11, 6 }, { 14, 11, 163 }, { 14, 11, 272 },
+ { 14, 11, 277 }, { 14, 11, 370 }, { 15, 11, 95 }, { 15, 11, 138 },
+ { 15, 11, 167 }, { 17, 11, 18 }, { 17, 11, 38 }, { 20, 11, 96 },
+ { 21, 11, 32 }, { 5, 11, 722 }, { 6, 11, 1759 }, { 17, 11, 16 },
+ { 6, 0, 1071 }, { 6, 0, 1561 }, { 10, 10, 545 }, { 12, 10, 301 },
+ { 6, 0, 83 }, { 6, 0, 1733 }, { 7, 0, 1389 }, { 4, 0, 835 },
+ { 7, 0, 1818 }, { 5, 11, 258 }, { 4, 10, 904 }, { 5, 10, 794 },
+ { 6, 0, 2006 }, { 5, 11, 30 }, { 7, 11, 495 }, { 8, 11, 134 },
+ { 9, 11, 788 }, { 12, 11, 438 }, { 7, 11, 2004 }, { 9, 0, 696 },
+ { 5, 11, 50 }, { 6, 11, 439 }, { 7, 11, 780 }, { 7, 11, 1040 },
+ { 7, 11, 772 }, { 7, 11, 1104 }, { 7, 11, 1647 }, { 11, 11, 269 },
+ { 11, 11, 539 }, { 11, 11, 607 }, { 11, 11, 627 }, { 11, 11, 706 },
+ { 11, 11, 975 }, { 12, 11, 248 }, { 12, 11, 311 }, { 12, 11, 434 },
+ { 12, 11, 600 }, { 12, 11, 622 }, { 13, 11, 297 }, { 13, 11, 367 },
+ { 13, 11, 485 }, { 14, 11, 69 }, { 14, 11, 409 }, { 15, 11, 108 },
+ { 5, 11, 1 }, { 6, 11, 81 }, { 10, 11, 520 }, { 7, 0, 1718 },
+ { 9, 0, 95 }, { 9, 0, 274 }, { 10, 0, 279 }, { 10, 0, 317 },
+ { 10, 0, 420 }, { 11, 0, 303 }, { 11, 0, 808 }, { 12, 0, 134 },
+ { 12, 0, 367 }, { 13, 0, 149 }, { 13, 0, 347 }, { 14, 0, 349 },
+ { 14, 0, 406 }, { 18, 0, 22 }, { 18, 0, 89 }, { 18, 0, 122 },
+ { 19, 0, 47 }, { 5, 11, 482 }, { 8, 11, 98 }, { 9, 11, 172 },
+ { 10, 11, 222 }, { 10, 11, 700 }, { 10, 11, 822 }, { 11, 11, 302 },
+ { 11, 11, 778 }, { 12, 11, 50 }, { 12, 11, 127 }, { 12, 11, 396 },
+ { 13, 11, 62 }, { 13, 11, 328 }, { 14, 11, 122 }, { 19, 11, 72 },
+ { 7, 10, 386 }, { 10, 10, 713 }, { 6, 10, 7 }, { 6, 10, 35 },
+ { 7, 10, 147 }, { 7, 10, 1069 }, { 7, 10, 1568 }, { 7, 10, 1575 },
+ { 7, 10, 1917 }, { 8, 10, 43 }, { 8, 10, 208 }, { 9, 10, 128 },
+ { 9, 10, 866 }, { 10, 10, 20 }, { 11, 10, 981 }, { 19, 10, 33 },
+ { 5, 0, 26 }, { 4, 0, 550 }, { 5, 11, 2 }, { 7, 11, 1494 },
+ { 8, 11, 589 }, { 6, 11, 512 }, { 7, 11, 797 }, { 8, 11, 253 },
+ { 9, 11, 77 }, { 10, 11, 1 }, { 10, 11, 129 }, { 10, 11, 225 },
+ { 11, 11, 118 }, { 11, 11, 226 }, { 11, 11, 251 }, { 11, 11, 430 },
+ { 11, 11, 701 }, { 11, 11, 974 }, { 11, 11, 982 }, { 12, 11, 64 },
+ { 12, 11, 260 }, { 12, 11, 488 }, { 12, 11, 690 }, { 7, 10, 893 },
+ { 13, 10, 424 }, { 6, 0, 901 }, { 8, 0, 822 }, { 4, 0, 902 },
+ { 5, 0, 809 }, { 6, 0, 122 }, { 6, 0, 807 }, { 6, 0, 1366 },
+ { 7, 0, 262 }, { 5, 11, 748 }, { 6, 11, 553 }, { 5, 0, 620 },
+ { 4, 0, 34 }, { 5, 0, 574 }, { 7, 0, 279 }, { 7, 0, 1624 },
+ { 8, 0, 601 }, { 9, 0, 170 }, { 6, 10, 322 }, { 9, 10, 552 },
+ { 11, 10, 274 }, { 13, 10, 209 }, { 13, 10, 499 }, { 14, 10, 85 },
+ { 15, 10, 126 }, { 17, 10, 70 }, { 4, 0, 537 }, { 4, 11, 12 },
+ { 7, 11, 420 }, { 7, 11, 522 }, { 7, 11, 809 }, { 8, 11, 797 },
+ { 13, 11, 88 }, { 5, 0, 332 }, { 8, 10, 83 }, { 8, 10, 742 },
+ { 8, 10, 817 }, { 9, 10, 28 }, { 9, 10, 29 }, { 9, 10, 885 },
+ { 10, 10, 387 }, { 11, 10, 633 }, { 11, 10, 740 }, { 13, 10, 235 },
+ { 13, 10, 254 }, { 15, 10, 143 }, { 15, 10, 146 }, { 6, 0, 1909 },
+ { 9, 0, 964 }, { 12, 0, 822 }, { 12, 0, 854 }, { 12, 0, 865 },
+ { 12, 0, 910 }, { 12, 0, 938 }, { 15, 0, 169 }, { 15, 0, 208 },
+ { 15, 0, 211 }, { 18, 0, 205 }, { 18, 0, 206 }, { 18, 0, 220 },
+ { 18, 0, 223 }, { 24, 0, 24 }, { 12, 10, 49 }, { 5, 11, 528 },
+ { 7, 11, 1580 }, { 6, 0, 261 }, { 8, 0, 182 }, { 11, 0, 943 },
+ { 6, 0, 1721 }, { 4, 0, 933 }, { 5, 0, 880 }, { 8, 11, 321 },
+ { 5, 11, 266 }, { 9, 11, 290 }, { 9, 11, 364 }, { 10, 11, 293 },
+ { 11, 11, 606 }, { 14, 11, 45 }, { 6, 0, 1609 }, { 4, 11, 50 },
+ { 6, 11, 510 }, { 6, 11, 594 }, { 9, 11, 121 }, { 10, 11, 49 },
+ { 10, 11, 412 }, { 11, 11, 834 }, { 7, 0, 895 }, { 8, 11, 748 },
+ { 4, 11, 466 }, { 4, 10, 110 }, { 10, 10, 415 }, { 10, 10, 597 },
+ { 14, 10, 206 }, { 5, 0, 812 }, { 7, 11, 281 }, { 6, 0, 1890 },
+ { 6, 0, 1902 }, { 6, 0, 1916 }, { 9, 0, 929 }, { 9, 0, 942 },
+ { 9, 0, 975 }, { 9, 0, 984 }, { 9, 0, 986 }, { 9, 0, 1011 },
+ { 9, 0, 1019 }, { 12, 0, 804 }, { 12, 0, 851 }, { 12, 0, 867 },
+ { 12, 0, 916 }, { 12, 0, 923 }, { 15, 0, 194 }, { 15, 0, 204 },
+ { 15, 0, 210 }, { 15, 0, 222 }, { 15, 0, 223 }, { 15, 0, 229 },
+ { 15, 0, 250 }, { 18, 0, 179 }, { 18, 0, 186 }, { 18, 0, 192 },
+ { 7, 10, 205 }, { 7, 10, 2000 }, { 4, 11, 667 }, { 7, 0, 778 },
+ { 4, 0, 137 }, { 7, 0, 1178 }, { 7, 0, 1520 }, { 6, 0, 1314 },
+ { 4, 11, 242 }, { 6, 11, 333 }, { 6, 0, 1661 }, { 7, 0, 1975 },
+ { 7, 0, 2009 }, { 7, 0, 2011 }, { 6, 0, 1591 }, { 4, 10, 283 },
+ { 7, 10, 1194 }, { 11, 0, 820 }, { 22, 0, 51 }, { 4, 11, 39 },
+ { 5, 11, 36 }, { 7, 11, 1843 }, { 8, 11, 407 }, { 11, 11, 144 },
+ { 12, 11, 523 }, { 6, 10, 1720 }, { 4, 11, 510 }, { 7, 11, 29 },
+ { 7, 11, 66 }, { 7, 11, 1980 }, { 10, 11, 487 }, { 10, 11, 809 },
+ { 18, 11, 9 }, { 5, 0, 89 }, { 7, 0, 1915 }, { 9, 0, 185 },
+ { 9, 0, 235 }, { 10, 0, 64 }, { 10, 0, 270 }, { 10, 0, 403 },
+ { 10, 0, 469 }, { 10, 0, 529 }, { 10, 0, 590 }, { 11, 0, 140 },
+ { 11, 0, 860 }, { 13, 0, 1 }, { 13, 0, 422 }, { 14, 0, 341 },
+ { 14, 0, 364 }, { 17, 0, 93 }, { 18, 0, 113 }, { 19, 0, 97 },
+ { 19, 0, 113 }, { 5, 0, 695 }, { 6, 0, 987 }, { 6, 0, 1160 },
+ { 5, 0, 6 }, { 6, 0, 183 }, { 7, 0, 680 }, { 7, 0, 978 },
+ { 7, 0, 1013 }, { 7, 0, 1055 }, { 12, 0, 230 }, { 13, 0, 172 },
+ { 18, 0, 29 }, { 6, 11, 570 }, { 4, 11, 787 }, { 6, 11, 518 },
+ { 6, 0, 29 }, { 11, 0, 63 }, { 4, 11, 516 }, { 8, 11, 821 },
+ { 4, 0, 311 }, { 6, 0, 1740 }, { 7, 0, 170 }, { 8, 0, 90 },
+ { 8, 0, 177 }, { 8, 0, 415 }, { 11, 0, 714 }, { 14, 0, 281 },
+ { 8, 10, 735 }, { 6, 0, 1961 }, { 7, 11, 1405 }, { 4, 11, 10 },
+ { 7, 11, 917 }, { 11, 11, 786 }, { 5, 10, 132 }, { 9, 10, 486 },
+ { 9, 10, 715 }, { 10, 10, 458 }, { 11, 10, 373 }, { 11, 10, 668 },
+ { 11, 10, 795 }, { 11, 10, 897 }, { 12, 10, 272 }, { 12, 10, 424 },
+ { 12, 10, 539 }, { 12, 10, 558 }, { 14, 10, 245 }, { 14, 10, 263 },
+ { 14, 10, 264 }, { 14, 10, 393 }, { 14, 10, 403 }, { 11, 0, 91 },
+ { 13, 0, 129 }, { 15, 0, 101 }, { 17, 0, 125 }, { 7, 0, 1132 },
+ { 4, 0, 494 }, { 6, 0, 74 }, { 7, 0, 44 }, { 7, 0, 407 },
+ { 12, 0, 17 }, { 15, 0, 5 }, { 20, 0, 11 }, { 5, 10, 379 },
+ { 5, 0, 270 }, { 5, 11, 684 }, { 6, 10, 89 }, { 6, 10, 400 },
+ { 7, 10, 1569 }, { 7, 10, 1623 }, { 7, 10, 1850 }, { 8, 10, 218 },
+ { 8, 10, 422 }, { 9, 10, 570 }, { 10, 10, 626 }, { 4, 0, 276 },
+ { 5, 0, 296 }, { 6, 0, 1523 }, { 6, 11, 27 }, { 6, 10, 387 },
+ { 7, 10, 882 }, { 13, 10, 111 }, { 6, 10, 224 }, { 7, 10, 877 },
+ { 9, 10, 647 }, { 7, 10, 790 }, { 4, 0, 7 }, { 5, 0, 90 },
+ { 5, 0, 158 }, { 6, 0, 542 }, { 7, 0, 221 }, { 7, 0, 1574 },
+ { 9, 0, 490 }, { 10, 0, 540 }, { 11, 0, 443 }, { 11, 0, 757 },
+ { 7, 0, 588 }, { 9, 0, 175 }, { 10, 0, 530 }, { 7, 10, 394 },
+ { 14, 11, 23 }, { 6, 0, 786 }, { 7, 0, 580 }, { 7, 0, 88 },
+ { 8, 0, 627 }, { 5, 0, 872 }, { 6, 0, 57 }, { 7, 0, 471 },
+ { 9, 0, 447 }, { 9, 0, 454 }, { 6, 11, 342 }, { 6, 11, 496 },
+ { 8, 11, 275 }, { 9, 11, 206 }, { 4, 11, 909 }, { 5, 11, 940 },
+ { 6, 0, 735 }, { 4, 11, 891 }, { 8, 0, 845 }, { 8, 0, 916 },
+ { 7, 10, 1409 }, { 5, 0, 31 }, { 6, 0, 614 }, { 11, 0, 458 },
+ { 12, 0, 15 }, { 12, 0, 432 }, { 8, 0, 330 }, { 12, 0, 477 },
+ { 4, 0, 530 }, { 5, 0, 521 }, { 7, 0, 1200 }, { 10, 0, 460 },
+ { 4, 11, 687 }, { 6, 0, 424 }, { 7, 0, 1866 }, { 9, 0, 569 },
+ { 12, 0, 12 }, { 12, 0, 81 }, { 12, 0, 319 }, { 13, 0, 69 },
+ { 14, 0, 259 }, { 16, 0, 87 }, { 17, 0, 1 }, { 17, 0, 21 },
+ { 17, 0, 24 }, { 18, 0, 15 }, { 18, 0, 56 }, { 18, 0, 59 },
+ { 18, 0, 127 }, { 18, 0, 154 }, { 19, 0, 19 }, { 20, 0, 31 },
+ { 7, 0, 1302 }, { 8, 10, 38 }, { 6, 11, 253 }, { 5, 10, 261 },
+ { 7, 10, 78 }, { 7, 10, 199 }, { 8, 10, 815 }, { 9, 10, 126 },
+ { 10, 10, 342 }, { 5, 0, 595 }, { 7, 0, 1863 }, { 6, 11, 41 },
+ { 13, 11, 160 }, { 5, 0, 13 }, { 6, 0, 142 }, { 6, 0, 97 },
+ { 7, 0, 116 }, { 8, 0, 322 }, { 8, 0, 755 }, { 9, 0, 548 },
+ { 10, 0, 714 }, { 11, 0, 884 }, { 13, 0, 324 }, { 7, 11, 1304 },
+ { 10, 11, 477 }, { 4, 10, 628 }, { 6, 11, 1718 }, { 7, 10, 266 },
+ { 8, 10, 804 }, { 7, 10, 208 }, { 7, 0, 1021 }, { 6, 10, 79 },
+ { 7, 10, 1519 }, { 7, 0, 1472 }, { 7, 0, 1554 }, { 6, 11, 362 },
+ { 18, 11, 51 }, { 7, 0, 1071 }, { 7, 0, 1541 }, { 7, 0, 1767 },
+ { 7, 0, 1806 }, { 11, 0, 162 }, { 11, 0, 242 }, { 11, 0, 452 },
+ { 12, 0, 605 }, { 15, 0, 26 }, { 16, 0, 44 }, { 8, 10, 741 },
+ { 5, 11, 115 }, { 17, 0, 115 }, { 6, 10, 376 }, { 6, 0, 1406 },
+ { 6, 0, 1543 }, { 5, 11, 193 }, { 12, 11, 178 }, { 13, 11, 130 },
+ { 17, 11, 84 }, { 7, 0, 1111 }, { 8, 0, 1 }, { 9, 0, 650 },
+ { 10, 0, 326 }, { 5, 11, 705 }, { 9, 11, 606 }, { 5, 0, 488 },
+ { 6, 0, 527 }, { 7, 0, 489 }, { 7, 0, 1636 }, { 8, 0, 121 },
+ { 8, 0, 144 }, { 8, 0, 359 }, { 9, 0, 193 }, { 9, 0, 241 },
+ { 9, 0, 336 }, { 9, 0, 882 }, { 11, 0, 266 }, { 11, 0, 372 },
+ { 11, 0, 944 }, { 12, 0, 401 }, { 12, 0, 641 }, { 7, 11, 174 },
+ { 6, 0, 267 }, { 7, 10, 244 }, { 7, 10, 632 }, { 7, 10, 1609 },
+ { 8, 10, 178 }, { 8, 10, 638 }, { 13, 10, 58 }, { 6, 0, 1983 },
+ { 6, 0, 1155 }, { 6, 0, 1575 }, { 6, 0, 1438 }, { 9, 0, 31 },
+ { 10, 0, 244 }, { 10, 0, 699 }, { 12, 0, 149 }, { 13, 0, 497 },
+ { 5, 0, 377 }, { 4, 11, 122 }, { 5, 11, 796 }, { 5, 11, 952 },
+ { 6, 11, 1660 }, { 6, 11, 1671 }, { 8, 11, 567 }, { 9, 11, 687 },
+ { 9, 11, 742 }, { 10, 11, 686 }, { 11, 11, 356 }, { 11, 11, 682 },
+ { 12, 11, 281 }, { 17, 0, 101 }, { 11, 11, 0 }, { 16, 11, 78 },
+ { 5, 11, 179 }, { 5, 10, 791 }, { 7, 11, 1095 }, { 7, 11, 1213 },
+ { 8, 11, 372 }, { 9, 11, 122 }, { 10, 11, 175 }, { 7, 10, 686 },
+ { 8, 10, 33 }, { 8, 10, 238 }, { 10, 10, 616 }, { 11, 10, 467 },
+ { 11, 10, 881 }, { 13, 10, 217 }, { 13, 10, 253 }, { 14, 10, 268 },
+ { 9, 0, 476 }, { 4, 11, 66 }, { 7, 11, 722 }, { 7, 11, 904 },
+ { 7, 11, 352 }, { 9, 11, 684 }, { 7, 0, 2023 }, { 7, 0, 1836 },
+ { 4, 10, 447 }, { 5, 0, 843 }, { 16, 0, 35 }, { 9, 11, 779 },
+ { 13, 11, 35 }, { 4, 10, 128 }, { 5, 10, 415 }, { 6, 10, 462 },
+ { 7, 10, 294 }, { 7, 10, 578 }, { 10, 10, 710 }, { 11, 10, 86 },
+ { 4, 0, 554 }, { 5, 0, 536 }, { 8, 10, 587 }, { 5, 0, 207 },
+ { 9, 0, 79 }, { 11, 0, 625 }, { 17, 0, 7 }, { 7, 0, 1371 },
+ { 6, 10, 427 }, { 10, 10, 692 }, { 4, 0, 424 }, { 4, 10, 195 },
+ { 7, 10, 802 }, { 8, 0, 785 }, { 5, 11, 564 }, { 7, 0, 336 },
+ { 4, 0, 896 }, { 6, 0, 1777 }, { 6, 11, 556 }, { 9, 11, 103 },
+ { 6, 10, 1683 }, { 7, 11, 544 }, { 8, 11, 719 }, { 10, 11, 61 },
+ { 10, 10, 472 }, { 4, 11, 5 }, { 5, 11, 498 }, { 8, 11, 637 },
+ { 7, 0, 750 }, { 9, 0, 223 }, { 11, 0, 27 }, { 11, 0, 466 },
+ { 12, 0, 624 }, { 14, 0, 265 }, { 18, 0, 61 }, { 12, 0, 238 },
+ { 18, 0, 155 }, { 12, 11, 238 }, { 18, 11, 155 }, { 23, 10, 28 },
+ { 5, 11, 927 }, { 12, 0, 383 }, { 5, 10, 3 }, { 8, 10, 578 },
+ { 9, 10, 118 }, { 10, 10, 705 }, { 13, 10, 279 }, { 4, 11, 893 },
+ { 5, 11, 780 }, { 5, 11, 893 }, { 4, 0, 603 }, { 5, 0, 661 },
+ { 4, 0, 11 }, { 6, 0, 128 }, { 7, 0, 231 }, { 7, 0, 1533 },
+ { 10, 0, 725 }, { 5, 10, 229 }, { 5, 11, 238 }, { 7, 11, 1350 },
+ { 8, 10, 102 }, { 10, 10, 578 }, { 10, 10, 672 }, { 12, 10, 496 },
+ { 13, 10, 408 }, { 14, 10, 121 }, { 17, 10, 106 }, { 4, 0, 476 },
+ { 6, 0, 1552 }, { 6, 11, 1729 }, { 8, 10, 115 }, { 8, 10, 350 },
+ { 9, 10, 489 }, { 10, 10, 128 }, { 11, 10, 306 }, { 12, 10, 373 },
+ { 14, 10, 30 }, { 17, 10, 79 }, { 19, 10, 80 }, { 22, 10, 55 },
+ { 7, 0, 1807 }, { 4, 0, 680 }, { 4, 11, 60 }, { 7, 11, 760 },
+ { 7, 11, 1800 }, { 8, 11, 314 }, { 9, 11, 700 }, { 11, 11, 487 },
+ { 4, 10, 230 }, { 5, 10, 702 }, { 20, 11, 94 }, { 4, 11, 228 },
+ { 11, 0, 435 }, { 9, 0, 20 }, { 10, 0, 324 }, { 10, 0, 807 },
+ { 11, 0, 488 }, { 6, 10, 1728 }, { 8, 11, 419 }, { 4, 10, 484 },
+ { 18, 10, 26 }, { 19, 10, 42 }, { 20, 10, 43 }, { 21, 10, 0 },
+ { 23, 10, 27 }, { 24, 10, 14 }, { 7, 0, 1431 }, { 5, 11, 828 },
+ { 5, 0, 112 }, { 6, 0, 103 }, { 6, 0, 150 }, { 7, 0, 1303 },
+ { 9, 0, 292 }, { 10, 0, 481 }, { 20, 0, 13 }, { 7, 11, 176 },
+ { 7, 11, 178 }, { 7, 11, 1110 }, { 10, 11, 481 }, { 20, 11, 13 },
+ { 10, 0, 356 }, { 4, 11, 51 }, { 5, 11, 39 }, { 6, 11, 4 },
+ { 7, 11, 591 }, { 7, 11, 849 }, { 7, 11, 951 }, { 7, 11, 1129 },
+ { 7, 11, 1613 }, { 7, 11, 1760 }, { 7, 11, 1988 }, { 9, 11, 434 },
+ { 10, 11, 754 }, { 11, 11, 25 }, { 11, 11, 37 }, { 11, 11, 414 },
+ { 6, 0, 1963 }, { 6, 0, 2000 }, { 4, 10, 633 }, { 6, 0, 1244 },
+ { 5, 11, 902 }, { 7, 11, 928 }, { 12, 0, 18 }, { 10, 0, 204 },
+ { 7, 11, 1173 }, { 6, 0, 867 }, { 4, 0, 708 }, { 8, 0, 15 },
+ { 9, 0, 50 }, { 9, 0, 386 }, { 11, 0, 18 }, { 11, 0, 529 },
+ { 12, 0, 228 }, { 6, 11, 270 }, { 4, 0, 563 }, { 7, 0, 109 },
+ { 7, 0, 592 }, { 7, 0, 637 }, { 7, 0, 770 }, { 8, 0, 463 },
+ { 9, 0, 60 }, { 9, 0, 335 }, { 9, 0, 904 }, { 10, 0, 73 },
+ { 11, 0, 434 }, { 12, 0, 585 }, { 13, 0, 331 }, { 18, 0, 110 },
+ { 20, 0, 60 }, { 4, 0, 502 }, { 14, 11, 359 }, { 19, 11, 52 },
+ { 20, 11, 47 }, { 6, 11, 377 }, { 7, 11, 1025 }, { 9, 11, 613 },
+ { 17, 11, 104 }, { 6, 0, 347 }, { 10, 0, 161 }, { 5, 10, 70 },
+ { 5, 10, 622 }, { 6, 10, 334 }, { 7, 10, 1032 }, { 9, 10, 171 },
+ { 11, 10, 26 }, { 11, 10, 213 }, { 11, 10, 637 }, { 11, 10, 707 },
+ { 12, 10, 202 }, { 12, 10, 380 }, { 13, 10, 226 }, { 13, 10, 355 },
+ { 14, 10, 222 }, { 17, 10, 42 }, { 4, 11, 416 }, { 4, 0, 33 },
+ { 5, 0, 102 }, { 6, 0, 284 }, { 7, 0, 1079 }, { 7, 0, 1423 },
+ { 7, 0, 1702 }, { 8, 0, 470 }, { 9, 0, 554 }, { 9, 0, 723 },
+ { 11, 0, 333 }, { 14, 11, 372 }, { 5, 11, 152 }, { 5, 11, 197 },
+ { 7, 11, 340 }, { 7, 11, 867 }, { 10, 11, 548 }, { 10, 11, 581 },
+ { 11, 11, 6 }, { 12, 11, 3 }, { 12, 11, 19 }, { 14, 11, 110 },
+ { 14, 11, 289 }, { 7, 0, 246 }, { 7, 0, 840 }, { 6, 0, 10 },
+ { 8, 0, 571 }, { 9, 0, 739 }, { 15, 0, 91 }, { 6, 0, 465 },
+ { 7, 0, 1465 }, { 4, 10, 23 }, { 4, 10, 141 }, { 5, 10, 313 },
+ { 5, 10, 1014 }, { 6, 10, 50 }, { 7, 10, 142 }, { 7, 10, 559 },
+ { 8, 10, 640 }, { 9, 10, 460 }, { 9, 10, 783 }, { 11, 10, 741 },
+ { 12, 10, 183 }, { 13, 10, 488 }, { 5, 0, 626 }, { 8, 0, 614 },
+ { 10, 0, 237 }, { 7, 11, 34 }, { 7, 11, 190 }, { 8, 11, 28 },
+ { 8, 11, 141 }, { 8, 11, 444 }, { 8, 11, 811 }, { 9, 11, 468 },
+ { 11, 11, 334 }, { 12, 11, 24 }, { 12, 11, 386 }, { 12, 11, 576 },
+ { 5, 11, 757 }, { 5, 0, 18 }, { 6, 0, 526 }, { 13, 0, 24 },
+ { 13, 0, 110 }, { 19, 0, 5 }, { 19, 0, 44 }, { 6, 0, 506 },
+ { 6, 11, 506 }, { 7, 11, 1553 }, { 4, 0, 309 }, { 5, 0, 462 },
+ { 7, 0, 970 }, { 7, 0, 1097 }, { 22, 0, 30 }, { 22, 0, 33 },
+ { 7, 11, 1385 }, { 11, 11, 582 }, { 11, 11, 650 }, { 11, 11, 901 },
+ { 11, 11, 949 }, { 12, 11, 232 }, { 12, 11, 236 }, { 13, 11, 413 },
+ { 13, 11, 501 }, { 18, 11, 116 }, { 9, 0, 140 }, { 5, 10, 222 },
+ { 10, 10, 534 }, { 6, 0, 1056 }, { 9, 10, 906 }, { 6, 0, 1704 },
+ { 10, 10, 503 }, { 6, 0, 1036 }, { 5, 10, 154 }, { 7, 10, 1491 },
+ { 10, 10, 379 }, { 10, 10, 485 }, { 4, 11, 383 }, { 5, 10, 716 },
+ { 6, 0, 1315 }, { 5, 0, 86 }, { 7, 0, 743 }, { 9, 0, 85 },
+ { 10, 0, 281 }, { 10, 0, 432 }, { 11, 0, 825 }, { 12, 0, 251 },
+ { 13, 0, 118 }, { 14, 0, 378 }, { 8, 0, 264 }, { 4, 10, 91 },
+ { 5, 10, 388 }, { 5, 10, 845 }, { 6, 10, 206 }, { 6, 10, 252 },
+ { 6, 10, 365 }, { 7, 10, 136 }, { 7, 10, 531 }, { 8, 10, 621 },
+ { 5, 0, 524 }, { 5, 0, 744 }, { 5, 11, 277 }, { 13, 11, 247 },
+ { 4, 11, 435 }, { 10, 0, 107 }, { 12, 0, 436 }, { 4, 0, 927 },
+ { 10, 0, 123 }, { 12, 0, 670 }, { 18, 0, 94 }, { 7, 0, 1149 },
+ { 9, 0, 156 }, { 10, 0, 957 }, { 5, 11, 265 }, { 6, 11, 212 },
+ { 7, 11, 28 }, { 5, 0, 778 }, { 5, 0, 502 }, { 8, 0, 196 },
+ { 10, 0, 283 }, { 11, 0, 406 }, { 7, 10, 576 }, { 8, 11, 535 },
+ { 6, 0, 1312 }, { 5, 10, 771 }, { 5, 10, 863 }, { 5, 10, 898 },
+ { 6, 10, 1632 }, { 6, 10, 1644 }, { 6, 10, 1780 }, { 5, 0, 855 },
+ { 5, 10, 331 }, { 7, 11, 1487 }, { 4, 11, 702 }, { 5, 11, 808 },
+ { 7, 11, 2045 }, { 7, 0, 1400 }, { 9, 0, 446 }, { 10, 0, 45 },
+ { 12, 10, 632 }, { 4, 0, 1003 }, { 5, 11, 166 }, { 8, 11, 739 },
+ { 12, 11, 511 }, { 5, 10, 107 }, { 7, 10, 201 }, { 8, 10, 518 },
+ { 6, 10, 446 }, { 7, 10, 1817 }, { 6, 0, 1532 }, { 6, 0, 1097 },
+ { 4, 11, 119 }, { 5, 11, 170 }, { 5, 11, 447 }, { 7, 11, 1708 },
+ { 7, 11, 1889 }, { 9, 11, 357 }, { 9, 11, 719 }, { 12, 11, 486 },
+ { 12, 11, 596 }, { 9, 10, 851 }, { 13, 10, 510 }, { 7, 0, 612 },
+ { 8, 0, 545 }, { 8, 0, 568 }, { 8, 0, 642 }, { 9, 0, 717 },
+ { 10, 0, 541 }, { 10, 0, 763 }, { 11, 0, 449 }, { 12, 0, 489 },
+ { 13, 0, 153 }, { 13, 0, 296 }, { 14, 0, 138 }, { 14, 0, 392 },
+ { 15, 0, 50 }, { 16, 0, 6 }, { 16, 0, 12 }, { 20, 0, 9 },
+ { 4, 10, 504 }, { 4, 11, 450 }, { 7, 11, 1158 }, { 11, 0, 54 },
+ { 13, 0, 173 }, { 13, 0, 294 }, { 5, 10, 883 }, { 5, 10, 975 },
+ { 8, 10, 392 }, { 20, 10, 7 }, { 13, 0, 455 }, { 15, 0, 99 },
+ { 15, 0, 129 }, { 16, 0, 68 }, { 7, 0, 172 }, { 4, 11, 754 },
+ { 5, 10, 922 }, { 6, 10, 1707 }, { 6, 0, 1029 }, { 17, 11, 39 },
+ { 20, 11, 36 }, { 4, 0, 568 }, { 5, 10, 993 }, { 7, 10, 515 },
+ { 9, 10, 91 }, { 4, 0, 732 }, { 10, 0, 617 }, { 10, 11, 617 },
+ { 6, 0, 974 }, { 7, 0, 989 }, { 10, 0, 377 }, { 12, 0, 363 },
+ { 13, 0, 68 }, { 13, 0, 94 }, { 14, 0, 108 }, { 14, 0, 306 },
+ { 8, 0, 733 }, { 4, 0, 428 }, { 7, 0, 1789 }, { 7, 11, 1062 },
+ { 7, 0, 2015 }, { 12, 0, 665 }, { 7, 10, 1433 }, { 5, 0, 287 },
+ { 7, 10, 921 }, { 8, 10, 580 }, { 8, 10, 593 }, { 8, 10, 630 },
+ { 10, 10, 28 }, { 10, 0, 806 }, { 4, 10, 911 }, { 5, 10, 867 },
+ { 5, 10, 1013 }, { 7, 10, 2034 }, { 8, 10, 798 }, { 8, 10, 813 },
+ { 6, 0, 1539 }, { 8, 11, 523 }, { 22, 11, 34 }, { 7, 11, 740 },
+ { 7, 11, 238 }, { 7, 11, 2033 }, { 8, 11, 120 }, { 8, 11, 188 },
+ { 8, 11, 659 }, { 9, 11, 598 }, { 10, 11, 466 }, { 12, 11, 342 },
+ { 12, 11, 588 }, { 13, 11, 503 }, { 14, 11, 246 }, { 15, 11, 92 },
+ { 7, 0, 1563 }, { 13, 0, 182 }, { 5, 10, 135 }, { 6, 10, 519 },
+ { 7, 10, 1722 }, { 10, 10, 271 }, { 11, 10, 261 }, { 17, 10, 54 },
+ { 14, 10, 338 }, { 20, 10, 81 }, { 7, 0, 484 }, { 4, 10, 300 },
+ { 5, 10, 436 }, { 17, 11, 114 }, { 6, 0, 1623 }, { 6, 0, 1681 },
+ { 5, 11, 640 }, { 4, 11, 201 }, { 7, 11, 1744 }, { 8, 11, 602 },
+ { 11, 11, 247 }, { 11, 11, 826 }, { 17, 11, 65 }, { 8, 11, 164 },
+ { 18, 11, 62 }, { 6, 0, 1833 }, { 6, 0, 1861 }, { 8, 0, 878 },
+ { 6, 0, 1569 }, { 8, 10, 357 }, { 10, 10, 745 }, { 14, 10, 426 },
+ { 17, 10, 94 }, { 19, 10, 57 }, { 12, 0, 93 }, { 12, 0, 501 },
+ { 13, 0, 362 }, { 14, 0, 151 }, { 15, 0, 40 }, { 15, 0, 59 },
+ { 16, 0, 46 }, { 17, 0, 25 }, { 18, 0, 14 }, { 18, 0, 134 },
+ { 19, 0, 25 }, { 19, 0, 69 }, { 20, 0, 16 }, { 20, 0, 19 },
+ { 20, 0, 66 }, { 21, 0, 23 }, { 21, 0, 25 }, { 22, 0, 42 },
+ { 6, 0, 1748 }, { 8, 0, 715 }, { 9, 0, 802 }, { 10, 0, 46 },
+ { 10, 0, 819 }, { 13, 0, 308 }, { 14, 0, 351 }, { 14, 0, 363 },
+ { 18, 0, 67 }, { 4, 0, 994 }, { 4, 0, 63 }, { 5, 0, 347 },
+ { 4, 0, 591 }, { 5, 0, 749 }, { 7, 11, 1577 }, { 10, 11, 304 },
+ { 10, 11, 549 }, { 11, 11, 424 }, { 12, 11, 365 }, { 13, 11, 220 },
+ { 13, 11, 240 }, { 14, 11, 33 }, { 5, 0, 366 }, { 7, 0, 557 },
+ { 12, 0, 547 }, { 14, 0, 86 }, { 5, 10, 387 }, { 7, 0, 1747 },
+ { 4, 11, 907 }, { 5, 11, 100 }, { 10, 11, 329 }, { 12, 11, 416 },
+ { 21, 11, 29 }, { 4, 10, 6 }, { 5, 10, 708 }, { 8, 10, 75 },
+ { 7, 10, 1351 }, { 9, 10, 581 }, { 10, 10, 639 }, { 11, 10, 453 },
+ { 12, 10, 584 }, { 7, 0, 89 }, { 4, 10, 303 }, { 10, 10, 772 },
+ { 4, 11, 176 }, { 5, 11, 636 }, { 5, 11, 998 }, { 8, 11, 26 },
+ { 9, 11, 358 }, { 7, 11, 9 }, { 7, 11, 1508 }, { 9, 11, 317 },
+ { 10, 11, 210 }, { 10, 11, 292 }, { 10, 11, 533 }, { 11, 11, 555 },
+ { 12, 11, 526 }, { 12, 11, 607 }, { 13, 11, 263 }, { 13, 11, 459 },
+ { 14, 11, 271 }, { 6, 0, 1463 }, { 6, 0, 772 }, { 6, 0, 1137 },
+ { 11, 11, 595 }, { 7, 0, 977 }, { 11, 11, 66 }, { 10, 0, 893 },
+ { 20, 0, 48 }, { 20, 11, 48 }, { 5, 0, 824 }, { 5, 0, 941 },
+ { 6, 11, 295 }, { 7, 0, 1543 }, { 7, 0, 1785 }, { 10, 0, 690 },
+ { 4, 10, 106 }, { 11, 10, 717 }, { 7, 0, 440 }, { 8, 0, 230 },
+ { 11, 0, 106 }, { 5, 10, 890 }, { 5, 10, 988 }, { 6, 10, 626 },
+ { 14, 10, 431 }, { 10, 11, 127 }, { 13, 11, 27 }, { 17, 0, 32 },
+ { 10, 10, 706 }, { 22, 10, 44 }, { 4, 0, 216 }, { 9, 0, 332 },
+ { 4, 10, 698 }, { 8, 11, 119 }, { 11, 11, 267 }, { 10, 10, 17 },
+ { 11, 11, 526 }, { 11, 11, 939 }, { 13, 11, 290 }, { 7, 11, 1167 },
+ { 11, 11, 934 }, { 13, 11, 391 }, { 17, 11, 76 }, { 11, 11, 39 },
+ { 6, 10, 84 }, { 4, 0, 914 }, { 5, 0, 800 }, { 5, 0, 852 },
+ { 10, 0, 416 }, { 13, 0, 115 }, { 7, 0, 564 }, { 14, 0, 168 },
+ { 4, 0, 918 }, { 5, 0, 876 }, { 6, 0, 1764 }, { 24, 0, 3 },
+ { 4, 0, 92 }, { 5, 0, 274 }, { 7, 11, 126 }, { 8, 11, 84 },
+ { 12, 10, 498 }, { 8, 11, 790 }, { 8, 0, 501 }, { 5, 10, 986 },
+ { 6, 10, 130 }, { 7, 10, 1582 }, { 8, 10, 458 }, { 10, 10, 101 },
+ { 10, 10, 318 }, { 10, 10, 823 }, { 6, 11, 64 }, { 12, 11, 377 },
+ { 13, 11, 309 }, { 5, 0, 743 }, { 10, 0, 851 }, { 4, 0, 49 },
+ { 7, 0, 280 }, { 7, 0, 1633 }, { 6, 0, 879 }, { 8, 0, 47 },
+ { 7, 10, 1644 }, { 9, 10, 129 }, { 4, 0, 865 }, { 6, 0, 1202 },
+ { 9, 11, 34 }, { 11, 11, 484 }, { 7, 10, 997 }, { 5, 0, 272 },
+ { 5, 0, 908 }, { 5, 0, 942 }, { 8, 0, 197 }, { 9, 0, 47 },
+ { 11, 0, 538 }, { 11, 0, 742 }, { 6, 11, 1700 }, { 7, 11, 26 },
+ { 7, 11, 293 }, { 7, 11, 382 }, { 7, 11, 1026 }, { 7, 11, 1087 },
+ { 7, 11, 2027 }, { 8, 11, 24 }, { 8, 11, 114 }, { 8, 11, 252 },
+ { 8, 11, 727 }, { 8, 11, 729 }, { 9, 11, 30 }, { 9, 11, 199 },
+ { 9, 11, 231 }, { 9, 11, 251 }, { 9, 11, 334 }, { 9, 11, 361 },
+ { 9, 11, 488 }, { 9, 11, 712 }, { 10, 11, 55 }, { 10, 11, 60 },
+ { 10, 11, 232 }, { 10, 11, 332 }, { 10, 11, 384 }, { 10, 11, 396 },
+ { 10, 11, 504 }, { 10, 11, 542 }, { 10, 11, 652 }, { 11, 11, 20 },
+ { 11, 11, 48 }, { 11, 11, 207 }, { 11, 11, 291 }, { 11, 11, 298 },
+ { 11, 11, 342 }, { 11, 11, 365 }, { 11, 11, 394 }, { 11, 11, 620 },
+ { 11, 11, 705 }, { 11, 11, 1017 }, { 12, 11, 123 }, { 12, 11, 340 },
+ { 12, 11, 406 }, { 12, 11, 643 }, { 13, 11, 61 }, { 13, 11, 269 },
+ { 13, 11, 311 }, { 13, 11, 319 }, { 13, 11, 486 }, { 14, 11, 234 },
+ { 15, 11, 62 }, { 15, 11, 85 }, { 16, 11, 71 }, { 18, 11, 119 },
+ { 20, 11, 105 }, { 6, 0, 1455 }, { 22, 11, 37 }, { 7, 10, 1927 },
+ { 7, 0, 1911 }, { 9, 0, 891 }, { 7, 10, 1756 }, { 9, 10, 98 },
+ { 7, 10, 1046 }, { 11, 10, 160 }, { 4, 0, 761 }, { 6, 11, 379 },
+ { 7, 11, 270 }, { 7, 11, 1116 }, { 8, 11, 176 }, { 8, 11, 183 },
+ { 9, 11, 432 }, { 9, 11, 661 }, { 12, 11, 247 }, { 12, 11, 617 },
+ { 18, 11, 125 }, { 6, 10, 45 }, { 7, 10, 433 }, { 8, 10, 129 },
+ { 9, 10, 21 }, { 10, 10, 392 }, { 11, 10, 79 }, { 12, 10, 499 },
+ { 13, 10, 199 }, { 13, 10, 451 }, { 4, 0, 407 }, { 5, 11, 792 },
+ { 5, 11, 900 }, { 4, 0, 560 }, { 7, 0, 183 }, { 13, 0, 490 },
+ { 7, 10, 558 }, { 8, 10, 353 }, { 4, 0, 475 }, { 6, 0, 731 },
+ { 11, 0, 35 }, { 13, 0, 71 }, { 13, 0, 177 }, { 14, 0, 422 },
+ { 5, 10, 785 }, { 8, 10, 81 }, { 9, 10, 189 }, { 9, 10, 201 },
+ { 11, 10, 478 }, { 11, 10, 712 }, { 13, 10, 338 }, { 4, 0, 418 },
+ { 4, 0, 819 }, { 5, 10, 353 }, { 23, 10, 26 }, { 4, 11, 901 },
+ { 5, 11, 776 }, { 4, 0, 575 }, { 7, 0, 818 }, { 16, 0, 92 },
+ { 17, 0, 14 }, { 17, 0, 45 }, { 18, 0, 75 }, { 20, 0, 18 },
+ { 6, 0, 222 }, { 7, 0, 636 }, { 7, 0, 1620 }, { 8, 0, 409 },
+ { 9, 0, 693 }, { 11, 0, 77 }, { 6, 10, 25 }, { 7, 10, 855 },
+ { 7, 10, 1258 }, { 16, 10, 32 }, { 6, 0, 1880 }, { 6, 0, 1887 },
+ { 6, 0, 1918 }, { 6, 0, 1924 }, { 9, 0, 967 }, { 9, 0, 995 },
+ { 9, 0, 1015 }, { 12, 0, 826 }, { 12, 0, 849 }, { 12, 0, 857 },
+ { 12, 0, 860 }, { 12, 0, 886 }, { 12, 0, 932 }, { 18, 0, 228 },
+ { 18, 0, 231 }, { 18, 0, 240 }, { 6, 0, 633 }, { 6, 0, 1308 },
+ { 4, 11, 37 }, { 5, 11, 334 }, { 7, 11, 1253 }, { 10, 0, 86 },
+ { 4, 10, 4 }, { 7, 10, 1118 }, { 7, 10, 1320 }, { 7, 10, 1706 },
+ { 8, 10, 277 }, { 9, 10, 622 }, { 11, 10, 724 }, { 12, 10, 350 },
+ { 12, 10, 397 }, { 13, 10, 28 }, { 13, 10, 159 }, { 15, 10, 89 },
+ { 18, 10, 5 }, { 19, 10, 9 }, { 20, 10, 34 }, { 22, 10, 47 },
+ { 4, 11, 508 }, { 9, 11, 448 }, { 12, 11, 107 }, { 18, 11, 31 },
+ { 4, 0, 817 }, { 6, 0, 663 }, { 5, 0, 882 }, { 6, 0, 914 },
+ { 4, 11, 540 }, { 4, 11, 533 }, { 8, 11, 608 }, { 8, 0, 885 },
+ { 10, 0, 865 }, { 4, 0, 426 }, { 6, 0, 58 }, { 7, 0, 745 },
+ { 7, 0, 1969 }, { 8, 0, 399 }, { 8, 0, 675 }, { 9, 0, 479 },
+ { 9, 0, 731 }, { 10, 0, 330 }, { 10, 0, 593 }, { 10, 0, 817 },
+ { 11, 0, 32 }, { 11, 0, 133 }, { 11, 0, 221 }, { 17, 0, 68 },
+ { 6, 10, 255 }, { 7, 0, 102 }, { 9, 0, 538 }, { 9, 10, 216 },
+ { 7, 11, 253 }, { 8, 11, 549 }, { 7, 11, 912 }, { 9, 10, 183 },
+ { 11, 10, 286 }, { 11, 10, 956 }, { 23, 10, 3 }, { 8, 11, 527 },
+ { 18, 11, 60 }, { 19, 11, 24 }, { 4, 10, 536 }, { 7, 10, 1141 },
+ { 10, 10, 723 }, { 11, 10, 371 }, { 5, 11, 920 }, { 7, 0, 876 },
+ { 7, 10, 285 }, { 7, 10, 560 }, { 4, 10, 690 }, { 14, 11, 126 },
+ { 11, 10, 33 }, { 12, 10, 571 }, { 21, 10, 1 }, { 5, 0, 566 },
+ { 9, 0, 139 }, { 10, 0, 399 }, { 11, 0, 469 }, { 12, 0, 634 },
+ { 13, 0, 223 }, { 4, 11, 483 }, { 6, 0, 48 }, { 7, 0, 63 },
+ { 18, 0, 12 }, { 7, 10, 1862 }, { 12, 10, 491 }, { 12, 10, 520 },
+ { 13, 10, 383 }, { 14, 10, 244 }, { 7, 11, 1665 }, { 4, 11, 448 },
+ { 9, 11, 495 }, { 18, 11, 104 }, { 6, 0, 114 }, { 7, 0, 1224 },
+ { 7, 0, 1556 }, { 8, 0, 3 }, { 4, 10, 190 }, { 5, 10, 554 },
+ { 8, 0, 576 }, { 9, 0, 267 }, { 5, 10, 1001 }, { 5, 10, 446 },
+ { 5, 0, 933 }, { 11, 11, 1009 }, { 8, 11, 653 }, { 13, 11, 93 },
+ { 19, 11, 14 }, { 6, 0, 692 }, { 6, 0, 821 }, { 6, 0, 1077 },
+ { 5, 11, 172 }, { 7, 11, 801 }, { 10, 0, 752 }, { 4, 0, 375 },
+ { 6, 0, 638 }, { 6, 0, 1011 }, { 12, 11, 540 }, { 9, 0, 96 },
+ { 5, 11, 260 }, { 11, 11, 587 }, { 7, 10, 1231 }, { 12, 0, 30 },
+ { 13, 0, 148 }, { 14, 0, 87 }, { 14, 0, 182 }, { 16, 0, 42 },
+ { 20, 0, 70 }, { 4, 10, 304 }, { 6, 0, 1398 }, { 7, 0, 56 },
+ { 7, 0, 1989 }, { 8, 0, 337 }, { 8, 0, 738 }, { 9, 0, 600 },
+ { 12, 0, 37 }, { 13, 0, 447 }, { 14, 0, 92 }, { 10, 0, 666 },
+ { 5, 0, 394 }, { 7, 0, 487 }, { 8, 0, 246 }, { 9, 0, 437 },
+ { 6, 10, 53 }, { 6, 10, 199 }, { 7, 10, 1408 }, { 8, 10, 32 },
+ { 8, 10, 93 }, { 10, 10, 397 }, { 10, 10, 629 }, { 11, 10, 593 },
+ { 11, 10, 763 }, { 13, 10, 326 }, { 17, 10, 35 }, { 6, 10, 105 },
+ { 9, 0, 320 }, { 10, 0, 506 }, { 10, 10, 794 }, { 7, 11, 57 },
+ { 8, 11, 167 }, { 8, 11, 375 }, { 9, 11, 82 }, { 9, 11, 561 },
+ { 10, 11, 620 }, { 10, 11, 770 }, { 11, 10, 704 }, { 13, 10, 396 },
+ { 6, 0, 1003 }, { 5, 10, 114 }, { 5, 10, 255 }, { 13, 10, 285 },
+ { 7, 0, 866 }, { 7, 0, 1163 }, { 5, 11, 531 }, { 4, 0, 328 },
+ { 7, 10, 2035 }, { 8, 10, 19 }, { 9, 10, 89 }, { 10, 10, 831 },
+ { 8, 11, 194 }, { 8, 11, 756 }, { 8, 0, 1000 }, { 5, 11, 453 },
+ { 6, 11, 441 }, { 4, 0, 101 }, { 5, 0, 833 }, { 7, 0, 1171 },
+ { 8, 0, 744 }, { 5, 0, 726 }, { 8, 10, 746 }, { 10, 0, 176 },
+ { 6, 0, 9 }, { 6, 0, 397 }, { 7, 0, 53 }, { 7, 0, 1742 },
+ { 10, 0, 632 }, { 11, 0, 828 }, { 12, 0, 146 }, { 7, 11, 22 },
+ { 17, 11, 64 }, { 4, 0, 839 }, { 11, 0, 417 }, { 12, 0, 223 },
+ { 12, 0, 265 }, { 4, 11, 102 }, { 7, 11, 815 }, { 7, 11, 1699 },
+ { 11, 11, 964 }, { 5, 10, 955 }, { 8, 10, 814 }, { 6, 0, 1931 },
+ { 6, 0, 2007 }, { 18, 0, 246 }, { 18, 0, 247 }, { 8, 0, 198 },
+ { 11, 0, 29 }, { 12, 0, 534 }, { 7, 0, 1771 }, { 6, 0, 846 },
+ { 7, 11, 1010 }, { 11, 11, 733 }, { 11, 11, 759 }, { 12, 11, 563 },
+ { 13, 11, 34 }, { 14, 11, 101 }, { 18, 11, 45 }, { 18, 11, 129 },
+ { 4, 0, 186 }, { 5, 0, 157 }, { 8, 0, 168 }, { 10, 0, 6 },
+ { 4, 11, 899 }, { 5, 10, 56 }, { 20, 10, 100 }, { 5, 0, 875 },
+ { 5, 0, 773 }, { 5, 0, 991 }, { 6, 0, 1635 }, { 6, 0, 1788 },
+ { 6, 0, 1274 }, { 9, 0, 477 }, { 13, 0, 78 }, { 4, 0, 639 },
+ { 7, 0, 111 }, { 8, 0, 581 }, { 12, 0, 177 }, { 6, 11, 52 },
+ { 9, 11, 104 }, { 9, 11, 559 }, { 10, 10, 4 }, { 10, 10, 13 },
+ { 11, 10, 638 }, { 12, 11, 308 }, { 19, 11, 87 }, { 20, 10, 57 },
+ { 4, 11, 604 }, { 4, 11, 301 }, { 5, 10, 738 }, { 5, 10, 758 },
+ { 6, 0, 1747 }, { 7, 11, 1440 }, { 11, 11, 854 }, { 11, 11, 872 },
+ { 11, 11, 921 }, { 12, 11, 551 }, { 13, 11, 472 }, { 14, 11, 367 },
+ { 7, 0, 1364 }, { 7, 0, 1907 }, { 13, 0, 158 }, { 6, 0, 873 },
+ { 4, 0, 404 }, { 4, 0, 659 }, { 7, 0, 552 }, { 7, 0, 675 },
+ { 7, 10, 1112 }, { 11, 10, 328 }, { 7, 11, 508 }, { 9, 10, 133 },
+ { 5, 0, 391 }, { 5, 10, 110 }, { 6, 10, 169 }, { 6, 10, 1702 },
+ { 7, 10, 400 }, { 8, 10, 538 }, { 9, 10, 184 }, { 9, 10, 524 },
+ { 12, 10, 218 }, { 6, 11, 310 }, { 7, 11, 1849 }, { 8, 11, 72 },
+ { 8, 11, 272 }, { 8, 11, 431 }, { 9, 11, 12 }, { 9, 11, 351 },
+ { 10, 11, 563 }, { 10, 11, 630 }, { 10, 11, 810 }, { 11, 11, 367 },
+ { 11, 11, 599 }, { 11, 11, 686 }, { 12, 11, 672 }, { 5, 0, 540 },
+ { 6, 0, 1697 }, { 8, 0, 668 }, { 4, 0, 883 }, { 6, 0, 78 },
+ { 12, 0, 628 }, { 18, 0, 79 }, { 6, 10, 133 }, { 9, 10, 353 },
+ { 11, 10, 993 }, { 6, 11, 181 }, { 7, 11, 537 }, { 8, 11, 64 },
+ { 9, 11, 127 }, { 10, 11, 496 }, { 12, 11, 510 }, { 13, 11, 384 },
+ { 6, 10, 93 }, { 7, 10, 1422 }, { 7, 10, 1851 }, { 8, 10, 673 },
+ { 9, 10, 529 }, { 12, 10, 43 }, { 9, 10, 371 }, { 6, 0, 1460 },
+ { 6, 0, 962 }, { 4, 11, 244 }, { 7, 11, 233 }, { 9, 10, 25 },
+ { 10, 10, 467 }, { 10, 10, 559 }, { 4, 10, 335 }, { 7, 10, 942 },
+ { 5, 0, 460 }, { 7, 11, 334 }, { 6, 11, 1650 }, { 4, 0, 199 },
+ { 11, 0, 34 }, { 5, 10, 601 }, { 8, 10, 39 }, { 10, 10, 773 },
+ { 11, 10, 84 }, { 12, 10, 205 }, { 14, 10, 1 }, { 5, 10, 870 },
+ { 6, 0, 388 }, { 14, 0, 474 }, { 20, 0, 120 }, { 5, 11, 369 },
+ { 11, 0, 271 }, { 4, 0, 511 }, { 9, 0, 333 }, { 9, 0, 379 },
+ { 10, 0, 602 }, { 11, 0, 441 }, { 11, 0, 723 }, { 11, 0, 976 },
+ { 12, 0, 357 }, { 4, 10, 181 }, { 6, 0, 608 }, { 6, 10, 1652 },
+ { 22, 0, 49 }, { 9, 11, 338 }, { 12, 0, 988 }, { 6, 0, 617 },
+ { 5, 0, 938 }, { 8, 0, 707 }, { 4, 10, 97 }, { 5, 10, 147 },
+ { 6, 10, 286 }, { 7, 10, 1362 }, { 13, 10, 176 }, { 6, 0, 756 },
+ { 6, 0, 1149 }, { 5, 11, 896 }, { 6, 10, 375 }, { 7, 10, 169 },
+ { 7, 10, 254 }, { 8, 10, 780 }, { 6, 0, 1583 }, { 7, 10, 1447 },
+ { 11, 0, 285 }, { 7, 11, 1117 }, { 8, 11, 393 }, { 8, 11, 539 },
+ { 7, 0, 344 }, { 6, 0, 469 }, { 7, 0, 1709 }, { 10, 0, 515 },
+ { 5, 10, 629 }, { 7, 10, 1549 }, { 5, 11, 4 }, { 5, 11, 810 },
+ { 6, 11, 13 }, { 6, 11, 538 }, { 6, 11, 1690 }, { 6, 11, 1726 },
+ { 7, 11, 499 }, { 7, 11, 1819 }, { 8, 11, 148 }, { 8, 11, 696 },
+ { 8, 11, 791 }, { 12, 11, 125 }, { 13, 11, 54 }, { 15, 11, 9 },
+ { 7, 11, 1268 }, { 9, 0, 404 }, { 4, 0, 500 }, { 5, 0, 68 },
+ { 6, 0, 383 }, { 11, 0, 216 }, { 11, 0, 340 }, { 4, 11, 925 },
+ { 5, 11, 803 }, { 8, 11, 698 }, { 10, 11, 828 }, { 4, 0, 337 },
+ { 6, 0, 353 }, { 7, 0, 1934 }, { 8, 0, 488 }, { 9, 0, 429 },
+ { 7, 0, 236 }, { 7, 0, 1795 }, { 8, 0, 259 }, { 9, 0, 135 },
+ { 9, 0, 177 }, { 9, 0, 860 }, { 10, 0, 825 }, { 11, 0, 115 },
+ { 11, 0, 370 }, { 11, 0, 405 }, { 11, 0, 604 }, { 12, 0, 10 },
+ { 12, 0, 667 }, { 12, 0, 669 }, { 13, 0, 76 }, { 14, 0, 310 },
+ { 15, 0, 76 }, { 15, 0, 147 }, { 20, 0, 23 }, { 4, 0, 15 },
+ { 4, 0, 490 }, { 5, 0, 22 }, { 6, 0, 244 }, { 7, 0, 40 },
+ { 7, 0, 200 }, { 7, 0, 906 }, { 7, 0, 1199 }, { 9, 0, 616 },
+ { 10, 0, 716 }, { 11, 0, 635 }, { 11, 0, 801 }, { 12, 0, 458 },
+ { 12, 0, 756 }, { 4, 10, 420 }, { 6, 0, 1504 }, { 6, 0, 757 },
+ { 5, 11, 383 }, { 6, 0, 1266 }, { 7, 0, 1735 }, { 5, 0, 598 },
+ { 7, 0, 791 }, { 8, 0, 108 }, { 9, 0, 123 }, { 7, 10, 1570 },
+ { 12, 10, 542 }, { 14, 11, 410 }, { 9, 11, 660 }, { 10, 11, 347 },
+};
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_DICTIONARY_LUT_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/streams.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/streams.cc
new file mode 100644
index 00000000000..17eda2d588a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/streams.cc
@@ -0,0 +1,114 @@
+/* Copyright 2009 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Convience routines to make Brotli I/O classes from some memory containers and
+// files.
+
+#include "./streams.h"
+
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+
+namespace brotli {
+
+BrotliMemOut::BrotliMemOut(void* buf, size_t len)
+ : buf_(buf),
+ len_(len),
+ pos_(0) {}
+
+void BrotliMemOut::Reset(void* buf, size_t len) {
+ buf_ = buf;
+ len_ = len;
+ pos_ = 0;
+}
+
+// Brotli output routine: copy n bytes to the output buffer.
+bool BrotliMemOut::Write(const void *buf, size_t n) {
+ if (n + pos_ > len_)
+ return false;
+ char* p = reinterpret_cast<char*>(buf_) + pos_;
+ memcpy(p, buf, n);
+ pos_ += n;
+ return true;
+}
+
+BrotliStringOut::BrotliStringOut(std::string* buf, size_t max_size)
+ : buf_(buf),
+ max_size_(max_size) {
+ assert(buf->empty());
+}
+
+void BrotliStringOut::Reset(std::string* buf, size_t max_size) {
+ buf_ = buf;
+ max_size_ = max_size;
+}
+
+// Brotli output routine: add n bytes to a string.
+bool BrotliStringOut::Write(const void *buf, size_t n) {
+ if (buf_->size() + n > max_size_)
+ return false;
+ buf_->append(static_cast<const char*>(buf), n);
+ return true;
+}
+
+BrotliMemIn::BrotliMemIn(const void* buf, size_t len)
+ : buf_(buf),
+ len_(len),
+ pos_(0) {}
+
+void BrotliMemIn::Reset(const void* buf, size_t len) {
+ buf_ = buf;
+ len_ = len;
+ pos_ = 0;
+}
+
+// Brotli input routine: read the next chunk of memory.
+const void* BrotliMemIn::Read(size_t n, size_t* output) {
+ if (pos_ == len_) {
+ return NULL;
+ }
+ if (n > len_ - pos_)
+ n = len_ - pos_;
+ const char* p = reinterpret_cast<const char*>(buf_) + pos_;
+ pos_ += n;
+ *output = n;
+ return p;
+}
+
+BrotliFileIn::BrotliFileIn(FILE* f, size_t max_read_size)
+ : f_(f),
+ buf_(new char[max_read_size]),
+ buf_size_(max_read_size) { }
+
+BrotliFileIn::~BrotliFileIn(void) {
+ delete[] buf_;
+}
+
+const void* BrotliFileIn::Read(size_t n, size_t* bytes_read) {
+ if (n > buf_size_) {
+ n = buf_size_;
+ } else if (n == 0) {
+ return feof(f_) ? NULL : buf_;
+ }
+ *bytes_read = fread(buf_, 1, n, f_);
+ if (*bytes_read == 0) {
+ return NULL;
+ } else {
+ return buf_;
+ }
+}
+
+BrotliFileOut::BrotliFileOut(FILE* f) : f_(f) {}
+
+bool BrotliFileOut::Write(const void* buf, size_t n) {
+ if (fwrite(buf, n, 1, f_) != 1) {
+ return false;
+ }
+ return true;
+}
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/streams.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/streams.h
new file mode 100644
index 00000000000..7fb28092ea0
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/streams.h
@@ -0,0 +1,121 @@
+/* Copyright 2009 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Input and output classes for streaming brotli compression.
+
+#ifndef BROTLI_ENC_STREAMS_H_
+#define BROTLI_ENC_STREAMS_H_
+
+#include <stdio.h>
+#include <string>
+#include "./port.h"
+#include "./types.h"
+
+namespace brotli {
+
+// Input interface for the compression routines.
+class BrotliIn {
+ public:
+ virtual ~BrotliIn(void) {}
+
+ // Return a pointer to the next block of input of at most n bytes.
+ // Return the actual length in *nread.
+ // At end of data, return NULL. Don't return NULL if there is more data
+ // to read, even if called with n == 0.
+ // Read will only be called if some of its bytes are needed.
+ virtual const void* Read(size_t n, size_t* nread) = 0;
+};
+
+// Output interface for the compression routines.
+class BrotliOut {
+ public:
+ virtual ~BrotliOut(void) {}
+
+ // Write n bytes of data from buf.
+ // Return true if all written, false otherwise.
+ virtual bool Write(const void *buf, size_t n) = 0;
+};
+
+// Adapter class to make BrotliIn objects from raw memory.
+class BrotliMemIn : public BrotliIn {
+ public:
+ BrotliMemIn(const void* buf, size_t len);
+
+ void Reset(const void* buf, size_t len);
+
+ // returns the amount of data consumed
+ size_t position(void) const { return pos_; }
+
+ const void* Read(size_t n, size_t* OUTPUT);
+
+ private:
+ const void* buf_; // start of input buffer
+ size_t len_; // length of input
+ size_t pos_; // current read position within input
+};
+
+// Adapter class to make BrotliOut objects from raw memory.
+class BrotliMemOut : public BrotliOut {
+ public:
+ BrotliMemOut(void* buf, size_t len);
+
+ void Reset(void* buf, size_t len);
+
+ // returns the amount of data written
+ size_t position(void) const { return pos_; }
+
+ bool Write(const void* buf, size_t n);
+
+ private:
+ void* buf_; // start of output buffer
+ size_t len_; // length of output
+ size_t pos_; // current write position within output
+};
+
+// Adapter class to make BrotliOut objects from a string.
+class BrotliStringOut : public BrotliOut {
+ public:
+ // Create a writer that appends its data to buf.
+ // buf->size() will grow to at most max_size
+ // buf is expected to be empty when constructing BrotliStringOut.
+ BrotliStringOut(std::string* buf, size_t max_size);
+
+ void Reset(std::string* buf, size_t max_len);
+
+ bool Write(const void* buf, size_t n);
+
+ private:
+ std::string* buf_; // start of output buffer
+ size_t max_size_; // max length of output
+};
+
+// Adapter class to make BrotliIn object from a file.
+class BrotliFileIn : public BrotliIn {
+ public:
+ BrotliFileIn(FILE* f, size_t max_read_size);
+ ~BrotliFileIn(void);
+
+ const void* Read(size_t n, size_t* bytes_read);
+
+ private:
+ FILE* f_;
+ char* buf_;
+ size_t buf_size_;
+};
+
+// Adapter class to make BrotliOut object from a file.
+class BrotliFileOut : public BrotliOut {
+ public:
+ explicit BrotliFileOut(FILE* f);
+
+ bool Write(const void* buf, size_t n);
+ private:
+ FILE* f_;
+};
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_STREAMS_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/transform.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/transform.h
new file mode 100644
index 00000000000..1ec3849dd6f
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/transform.h
@@ -0,0 +1,248 @@
+/* Copyright 2010 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Transformations on dictionary words.
+
+#ifndef BROTLI_ENC_TRANSFORM_H_
+#define BROTLI_ENC_TRANSFORM_H_
+
+#include <string>
+
+#include "./dictionary.h"
+
+namespace brotli {
+
+enum WordTransformType {
+ kIdentity = 0,
+ kOmitLast1 = 1,
+ kOmitLast2 = 2,
+ kOmitLast3 = 3,
+ kOmitLast4 = 4,
+ kOmitLast5 = 5,
+ kOmitLast6 = 6,
+ kOmitLast7 = 7,
+ kOmitLast8 = 8,
+ kOmitLast9 = 9,
+ kUppercaseFirst = 10,
+ kUppercaseAll = 11,
+ kOmitFirst1 = 12,
+ kOmitFirst2 = 13,
+ kOmitFirst3 = 14,
+ kOmitFirst4 = 15,
+ kOmitFirst5 = 16,
+ kOmitFirst6 = 17,
+ kOmitFirst7 = 18,
+ kOmitFirst8 = 19,
+ kOmitFirst9 = 20
+};
+
+struct Transform {
+ const char* prefix;
+ WordTransformType word_transform;
+ const char* suffix;
+};
+
+static const Transform kTransforms[] = {
+ { "", kIdentity, "" },
+ { "", kIdentity, " " },
+ { " ", kIdentity, " " },
+ { "", kOmitFirst1, "" },
+ { "", kUppercaseFirst, " " },
+ { "", kIdentity, " the " },
+ { " ", kIdentity, "" },
+ { "s ", kIdentity, " " },
+ { "", kIdentity, " of " },
+ { "", kUppercaseFirst, "" },
+ { "", kIdentity, " and " },
+ { "", kOmitFirst2, "" },
+ { "", kOmitLast1, "" },
+ { ", ", kIdentity, " " },
+ { "", kIdentity, ", " },
+ { " ", kUppercaseFirst, " " },
+ { "", kIdentity, " in " },
+ { "", kIdentity, " to " },
+ { "e ", kIdentity, " " },
+ { "", kIdentity, "\"" },
+ { "", kIdentity, "." },
+ { "", kIdentity, "\">" },
+ { "", kIdentity, "\n" },
+ { "", kOmitLast3, "" },
+ { "", kIdentity, "]" },
+ { "", kIdentity, " for " },
+ { "", kOmitFirst3, "" },
+ { "", kOmitLast2, "" },
+ { "", kIdentity, " a " },
+ { "", kIdentity, " that " },
+ { " ", kUppercaseFirst, "" },
+ { "", kIdentity, ". " },
+ { ".", kIdentity, "" },
+ { " ", kIdentity, ", " },
+ { "", kOmitFirst4, "" },
+ { "", kIdentity, " with " },
+ { "", kIdentity, "'" },
+ { "", kIdentity, " from " },
+ { "", kIdentity, " by " },
+ { "", kOmitFirst5, "" },
+ { "", kOmitFirst6, "" },
+ { " the ", kIdentity, "" },
+ { "", kOmitLast4, "" },
+ { "", kIdentity, ". The " },
+ { "", kUppercaseAll, "" },
+ { "", kIdentity, " on " },
+ { "", kIdentity, " as " },
+ { "", kIdentity, " is " },
+ { "", kOmitLast7, "" },
+ { "", kOmitLast1, "ing " },
+ { "", kIdentity, "\n\t" },
+ { "", kIdentity, ":" },
+ { " ", kIdentity, ". " },
+ { "", kIdentity, "ed " },
+ { "", kOmitFirst9, "" },
+ { "", kOmitFirst7, "" },
+ { "", kOmitLast6, "" },
+ { "", kIdentity, "(" },
+ { "", kUppercaseFirst, ", " },
+ { "", kOmitLast8, "" },
+ { "", kIdentity, " at " },
+ { "", kIdentity, "ly " },
+ { " the ", kIdentity, " of " },
+ { "", kOmitLast5, "" },
+ { "", kOmitLast9, "" },
+ { " ", kUppercaseFirst, ", " },
+ { "", kUppercaseFirst, "\"" },
+ { ".", kIdentity, "(" },
+ { "", kUppercaseAll, " " },
+ { "", kUppercaseFirst, "\">" },
+ { "", kIdentity, "=\"" },
+ { " ", kIdentity, "." },
+ { ".com/", kIdentity, "" },
+ { " the ", kIdentity, " of the " },
+ { "", kUppercaseFirst, "'" },
+ { "", kIdentity, ". This " },
+ { "", kIdentity, "," },
+ { ".", kIdentity, " " },
+ { "", kUppercaseFirst, "(" },
+ { "", kUppercaseFirst, "." },
+ { "", kIdentity, " not " },
+ { " ", kIdentity, "=\"" },
+ { "", kIdentity, "er " },
+ { " ", kUppercaseAll, " " },
+ { "", kIdentity, "al " },
+ { " ", kUppercaseAll, "" },
+ { "", kIdentity, "='" },
+ { "", kUppercaseAll, "\"" },
+ { "", kUppercaseFirst, ". " },
+ { " ", kIdentity, "(" },
+ { "", kIdentity, "ful " },
+ { " ", kUppercaseFirst, ". " },
+ { "", kIdentity, "ive " },
+ { "", kIdentity, "less " },
+ { "", kUppercaseAll, "'" },
+ { "", kIdentity, "est " },
+ { " ", kUppercaseFirst, "." },
+ { "", kUppercaseAll, "\">" },
+ { " ", kIdentity, "='" },
+ { "", kUppercaseFirst, "," },
+ { "", kIdentity, "ize " },
+ { "", kUppercaseAll, "." },
+ { "\xc2\xa0", kIdentity, "" },
+ { " ", kIdentity, "," },
+ { "", kUppercaseFirst, "=\"" },
+ { "", kUppercaseAll, "=\"" },
+ { "", kIdentity, "ous " },
+ { "", kUppercaseAll, ", " },
+ { "", kUppercaseFirst, "='" },
+ { " ", kUppercaseFirst, "," },
+ { " ", kUppercaseAll, "=\"" },
+ { " ", kUppercaseAll, ", " },
+ { "", kUppercaseAll, "," },
+ { "", kUppercaseAll, "(" },
+ { "", kUppercaseAll, ". " },
+ { " ", kUppercaseAll, "." },
+ { "", kUppercaseAll, "='" },
+ { " ", kUppercaseAll, ". " },
+ { " ", kUppercaseFirst, "=\"" },
+ { " ", kUppercaseAll, "='" },
+ { " ", kUppercaseFirst, "='" },
+};
+
+static const size_t kNumTransforms =
+ sizeof(kTransforms) / sizeof(kTransforms[0]);
+
+static const size_t kOmitLastNTransforms[10] = {
+ 0, 12, 27, 23, 42, 63, 56, 48, 59, 64,
+};
+
+static size_t ToUpperCase(uint8_t *p, size_t len) {
+ if (len == 1 || p[0] < 0xc0) {
+ if (p[0] >= 'a' && p[0] <= 'z') {
+ p[0] ^= 32;
+ }
+ return 1;
+ }
+ if (p[0] < 0xe0) {
+ p[1] ^= 32;
+ return 2;
+ }
+ if (len == 2) {
+ return 2;
+ }
+ p[2] ^= 5;
+ return 3;
+}
+
+inline std::string TransformWord(
+ WordTransformType transform_type, const uint8_t* word, size_t len) {
+ if (transform_type <= kOmitLast9) {
+ if (len <= static_cast<size_t>(transform_type)) {
+ return std::string();
+ }
+ return std::string(word, word + len - transform_type);
+ }
+
+ if (transform_type >= kOmitFirst1) {
+ const size_t skip = transform_type - (kOmitFirst1 - 1);
+ if (len <= skip) {
+ return std::string();
+ }
+ return std::string(word + skip, word + len);
+ }
+
+ std::string ret = std::string(word, word + len);
+ uint8_t *uppercase = reinterpret_cast<uint8_t*>(&ret[0]);
+ if (transform_type == kUppercaseFirst) {
+ ToUpperCase(uppercase, len);
+ } else if (transform_type == kUppercaseAll) {
+ size_t position = 0;
+ while (position < len) {
+ size_t step = ToUpperCase(uppercase, len - position);
+ uppercase += step;
+ position += step;
+ }
+ }
+ return ret;
+}
+
+inline std::string ApplyTransform(
+ const Transform& t, const uint8_t* word, size_t len) {
+ return std::string(t.prefix) +
+ TransformWord(t.word_transform, word, len) + std::string(t.suffix);
+}
+
+inline std::string GetTransformedDictionaryWord(size_t len_code,
+ size_t word_id) {
+ size_t num_words = 1u << kBrotliDictionarySizeBitsByLength[len_code];
+ size_t offset = kBrotliDictionaryOffsetsByLength[len_code];
+ size_t t = word_id / num_words;
+ size_t word_idx = word_id % num_words;
+ offset += len_code * word_idx;
+ const uint8_t* word = &kBrotliDictionary[offset];
+ return ApplyTransform(kTransforms[t], word, len_code);
+}
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_TRANSFORM_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/types.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/types.h
new file mode 100644
index 00000000000..266a9cd3852
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/types.h
@@ -0,0 +1,29 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Common types */
+
+#ifndef BROTLI_ENC_TYPES_H_
+#define BROTLI_ENC_TYPES_H_
+
+#include <stddef.h> /* for size_t */
+
+#if defined(_MSC_VER) && (_MSC_VER < 1600)
+typedef __int8 int8_t;
+typedef unsigned __int8 uint8_t;
+typedef __int16 int16_t;
+typedef unsigned __int16 uint16_t;
+typedef __int32 int32_t;
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int64 uint64_t;
+typedef __int64 int64_t;
+#else
+#include <stdint.h>
+#endif /* defined(_MSC_VER) && (_MSC_VER < 1600) */
+
+#define MAKE_UINT64_T(high, low) ((((uint64_t)(high)) << 32) | low)
+
+#endif /* BROTLI_ENC_TYPES_H_ */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/utf8_util.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/utf8_util.cc
new file mode 100644
index 00000000000..a2b5c3a6776
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/utf8_util.cc
@@ -0,0 +1,83 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Heuristics for deciding about the UTF8-ness of strings.
+
+#include "./utf8_util.h"
+
+#include "./types.h"
+
+namespace brotli {
+
+namespace {
+
+size_t ParseAsUTF8(int* symbol, const uint8_t* input, size_t size) {
+ // ASCII
+ if ((input[0] & 0x80) == 0) {
+ *symbol = input[0];
+ if (*symbol > 0) {
+ return 1;
+ }
+ }
+ // 2-byte UTF8
+ if (size > 1u &&
+ (input[0] & 0xe0) == 0xc0 &&
+ (input[1] & 0xc0) == 0x80) {
+ *symbol = (((input[0] & 0x1f) << 6) |
+ (input[1] & 0x3f));
+ if (*symbol > 0x7f) {
+ return 2;
+ }
+ }
+ // 3-byte UFT8
+ if (size > 2u &&
+ (input[0] & 0xf0) == 0xe0 &&
+ (input[1] & 0xc0) == 0x80 &&
+ (input[2] & 0xc0) == 0x80) {
+ *symbol = (((input[0] & 0x0f) << 12) |
+ ((input[1] & 0x3f) << 6) |
+ (input[2] & 0x3f));
+ if (*symbol > 0x7ff) {
+ return 3;
+ }
+ }
+ // 4-byte UFT8
+ if (size > 3u &&
+ (input[0] & 0xf8) == 0xf0 &&
+ (input[1] & 0xc0) == 0x80 &&
+ (input[2] & 0xc0) == 0x80 &&
+ (input[3] & 0xc0) == 0x80) {
+ *symbol = (((input[0] & 0x07) << 18) |
+ ((input[1] & 0x3f) << 12) |
+ ((input[2] & 0x3f) << 6) |
+ (input[3] & 0x3f));
+ if (*symbol > 0xffff && *symbol <= 0x10ffff) {
+ return 4;
+ }
+ }
+ // Not UTF8, emit a special symbol above the UTF8-code space
+ *symbol = 0x110000 | input[0];
+ return 1;
+}
+
+} // namespace
+
+// Returns true if at least min_fraction of the data is UTF8-encoded.
+bool IsMostlyUTF8(const uint8_t* data, const size_t pos, const size_t mask,
+ const size_t length, const double min_fraction) {
+ size_t size_utf8 = 0;
+ size_t i = 0;
+ while (i < length) {
+ int symbol;
+ size_t bytes_read = ParseAsUTF8(
+ &symbol, &data[(pos + i) & mask], length - i);
+ i += bytes_read;
+ if (symbol < 0x110000) size_utf8 += bytes_read;
+ }
+ return size_utf8 > min_fraction * static_cast<double>(length);
+}
+
+} // namespace brotli
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/utf8_util.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/utf8_util.h
new file mode 100644
index 00000000000..74f22b6a7f6
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/utf8_util.h
@@ -0,0 +1,25 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Heuristics for deciding about the UTF8-ness of strings.
+
+#ifndef BROTLI_ENC_UTF8_UTIL_H_
+#define BROTLI_ENC_UTF8_UTIL_H_
+
+#include "./types.h"
+
+namespace brotli {
+
+static const double kMinUTF8Ratio = 0.75;
+
+// Returns true if at least min_fraction of the bytes between pos and
+// pos + length in the (data, mask) ringbuffer is UTF8-encoded.
+bool IsMostlyUTF8(const uint8_t* data, const size_t pos, const size_t mask,
+ const size_t length, const double min_fraction);
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_UTF8_UTIL_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/write_bits.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/write_bits.h
new file mode 100644
index 00000000000..b605203a361
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/brotli/enc/write_bits.h
@@ -0,0 +1,84 @@
+/* Copyright 2010 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Write bits into a byte array.
+
+#ifndef BROTLI_ENC_WRITE_BITS_H_
+#define BROTLI_ENC_WRITE_BITS_H_
+
+#include <assert.h>
+#include <stdio.h>
+
+#include "./port.h"
+#include "./types.h"
+
+namespace brotli {
+
+//#define BIT_WRITER_DEBUG
+
+// This function writes bits into bytes in increasing addresses, and within
+// a byte least-significant-bit first.
+//
+// The function can write up to 56 bits in one go with WriteBits
+// Example: let's assume that 3 bits (Rs below) have been written already:
+//
+// BYTE-0 BYTE+1 BYTE+2
+//
+// 0000 0RRR 0000 0000 0000 0000
+//
+// Now, we could write 5 or less bits in MSB by just sifting by 3
+// and OR'ing to BYTE-0.
+//
+// For n bits, we take the last 5 bits, OR that with high bits in BYTE-0,
+// and locate the rest in BYTE+1, BYTE+2, etc.
+inline void WriteBits(size_t n_bits,
+ uint64_t bits,
+ size_t * __restrict pos,
+ uint8_t * __restrict array) {
+#ifdef BIT_WRITER_DEBUG
+ printf("WriteBits %2d 0x%016llx %10d\n", n_bits, bits, *pos);
+#endif
+ assert((bits >> n_bits) == 0);
+ assert(n_bits <= 56);
+#ifdef IS_LITTLE_ENDIAN
+ // This branch of the code can write up to 56 bits at a time,
+ // 7 bits are lost by being perhaps already in *p and at least
+ // 1 bit is needed to initialize the bit-stream ahead (i.e. if 7
+ // bits are in *p and we write 57 bits, then the next write will
+ // access a byte that was never initialized).
+ uint8_t *p = &array[*pos >> 3];
+ uint64_t v = *p;
+ v |= bits << (*pos & 7);
+ BROTLI_UNALIGNED_STORE64(p, v); // Set some bits.
+ *pos += n_bits;
+#else
+ // implicit & 0xff is assumed for uint8_t arithmetics
+ uint8_t *array_pos = &array[*pos >> 3];
+ const size_t bits_reserved_in_first_byte = (*pos & 7);
+ bits <<= bits_reserved_in_first_byte;
+ *array_pos++ |= static_cast<uint8_t>(bits);
+ for (size_t bits_left_to_write = n_bits + bits_reserved_in_first_byte;
+ bits_left_to_write >= 9;
+ bits_left_to_write -= 8) {
+ bits >>= 8;
+ *array_pos++ = static_cast<uint8_t>(bits);
+ }
+ *array_pos = 0;
+ *pos += n_bits;
+#endif
+}
+
+inline void WriteBitsPrepareStorage(size_t pos, uint8_t *array) {
+#ifdef BIT_WRITER_DEBUG
+ printf("WriteBitsPrepareStorage %10d\n", pos);
+#endif
+ assert((pos & 7) == 0);
+ array[pos >> 3] = 0;
+}
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_WRITE_BITS_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/buffer.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/buffer.h
new file mode 100644
index 00000000000..588ac0d3399
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/buffer.h
@@ -0,0 +1,172 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// The parts of ots.h & opentype-sanitiser.h that we need, taken from the
+// https://code.google.com/p/ots/ project.
+
+#ifndef WOFF2_BUFFER_H_
+#define WOFF2_BUFFER_H_
+
+#if defined(_WIN32)
+#include <stdlib.h>
+typedef signed char int8_t;
+typedef unsigned char uint8_t;
+typedef short int16_t;
+typedef unsigned short uint16_t;
+typedef int int32_t;
+typedef unsigned int uint32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#define ntohl(x) _byteswap_ulong (x)
+#define ntohs(x) _byteswap_ushort (x)
+#define htonl(x) _byteswap_ulong (x)
+#define htons(x) _byteswap_ushort (x)
+#else
+#include <arpa/inet.h>
+#include <stdint.h>
+#endif
+
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <limits>
+
+namespace woff2 {
+
+#if defined(_MSC_VER) || !defined(FONT_COMPRESSION_DEBUG)
+#define FONT_COMPRESSION_FAILURE() false
+#else
+#define FONT_COMPRESSION_FAILURE() \
+ woff2::Failure(__FILE__, __LINE__, __PRETTY_FUNCTION__)
+inline bool Failure(const char *f, int l, const char *fn) {
+ fprintf(stderr, "ERROR at %s:%d (%s)\n", f, l, fn);
+ fflush(stderr);
+ return false;
+}
+#endif
+
+// -----------------------------------------------------------------------------
+// Buffer helper class
+//
+// This class perform some trival buffer operations while checking for
+// out-of-bounds errors. As a family they return false if anything is amiss,
+// updating the current offset otherwise.
+// -----------------------------------------------------------------------------
+class Buffer {
+ public:
+ Buffer(const uint8_t *buffer, size_t len)
+ : buffer_(buffer),
+ length_(len),
+ offset_(0) { }
+
+ bool Skip(size_t n_bytes) {
+ return Read(NULL, n_bytes);
+ }
+
+ bool Read(uint8_t *buffer, size_t n_bytes) {
+ if (n_bytes > 1024 * 1024 * 1024) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if ((offset_ + n_bytes > length_) ||
+ (offset_ > length_ - n_bytes)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if (buffer) {
+ std::memcpy(buffer, buffer_ + offset_, n_bytes);
+ }
+ offset_ += n_bytes;
+ return true;
+ }
+
+ inline bool ReadU8(uint8_t *value) {
+ if (offset_ + 1 > length_) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ *value = buffer_[offset_];
+ ++offset_;
+ return true;
+ }
+
+ bool ReadU16(uint16_t *value) {
+ if (offset_ + 2 > length_) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ std::memcpy(value, buffer_ + offset_, sizeof(uint16_t));
+ *value = ntohs(*value);
+ offset_ += 2;
+ return true;
+ }
+
+ bool ReadS16(int16_t *value) {
+ return ReadU16(reinterpret_cast<uint16_t*>(value));
+ }
+
+ bool ReadU24(uint32_t *value) {
+ if (offset_ + 3 > length_) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ *value = static_cast<uint32_t>(buffer_[offset_]) << 16 |
+ static_cast<uint32_t>(buffer_[offset_ + 1]) << 8 |
+ static_cast<uint32_t>(buffer_[offset_ + 2]);
+ offset_ += 3;
+ return true;
+ }
+
+ bool ReadU32(uint32_t *value) {
+ if (offset_ + 4 > length_) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ std::memcpy(value, buffer_ + offset_, sizeof(uint32_t));
+ *value = ntohl(*value);
+ offset_ += 4;
+ return true;
+ }
+
+ bool ReadS32(int32_t *value) {
+ return ReadU32(reinterpret_cast<uint32_t*>(value));
+ }
+
+ bool ReadTag(uint32_t *value) {
+ if (offset_ + 4 > length_) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ std::memcpy(value, buffer_ + offset_, sizeof(uint32_t));
+ offset_ += 4;
+ return true;
+ }
+
+ bool ReadR64(uint64_t *value) {
+ if (offset_ + 8 > length_) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ std::memcpy(value, buffer_ + offset_, sizeof(uint64_t));
+ offset_ += 8;
+ return true;
+ }
+
+ const uint8_t *buffer() const { return buffer_; }
+ size_t offset() const { return offset_; }
+ size_t length() const { return length_; }
+
+ void set_offset(size_t newoffset) { offset_ = newoffset; }
+
+ private:
+ const uint8_t * const buffer_;
+ const size_t length_;
+ size_t offset_;
+};
+
+} // namespace woff2
+
+#endif // WOFF2_BUFFER_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/file.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/file.h
new file mode 100644
index 00000000000..7afcb315fe8
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/file.h
@@ -0,0 +1,42 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// File IO helpers.
+
+#ifndef WOFF2_FILE_H_
+#define WOFF2_FILE_H_
+
+#include <fstream>
+#include <iterator>
+
+namespace woff2 {
+
+using std::string;
+
+
+inline string GetFileContent(string filename) {
+ std::ifstream ifs(filename.c_str(), std::ios::binary);
+ return string(
+ std::istreambuf_iterator<char>(ifs.rdbuf()),
+ std::istreambuf_iterator<char>());
+}
+
+inline void SetFileContents(string filename, string::iterator start,
+ string::iterator end) {
+ std::ofstream ofs(filename.c_str(), std::ios::binary);
+ std::copy(start, end, std::ostream_iterator<char>(ofs));
+}
+
+} // namespace woff2
+#endif // WOFF2_FILE_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/font.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/font.cc
new file mode 100644
index 00000000000..06067300524
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/font.cc
@@ -0,0 +1,396 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Font management utilities
+
+#include "./font.h"
+
+#include <algorithm>
+
+#include "./buffer.h"
+#include "./port.h"
+#include "./store_bytes.h"
+#include "./table_tags.h"
+#include "./woff2_common.h"
+
+namespace woff2 {
+
+Font::Table* Font::FindTable(uint32_t tag) {
+ std::map<uint32_t, Font::Table>::iterator it = tables.find(tag);
+ return it == tables.end() ? 0 : &it->second;
+}
+
+const Font::Table* Font::FindTable(uint32_t tag) const {
+ std::map<uint32_t, Font::Table>::const_iterator it = tables.find(tag);
+ return it == tables.end() ? 0 : &it->second;
+}
+
+std::vector<uint32_t> Font::OutputOrderedTags() const {
+ std::vector<uint32_t> output_order;
+
+ for (const auto& i : tables) {
+ const Font::Table& table = i.second;
+ // This is a transformed table, we will write it together with the
+ // original version.
+ if (table.tag & 0x80808080) {
+ continue;
+ }
+ output_order.push_back(table.tag);
+ }
+
+ // Alphabetize then put loca immediately after glyf
+ auto glyf_loc = std::find(output_order.begin(), output_order.end(),
+ kGlyfTableTag);
+ auto loca_loc = std::find(output_order.begin(), output_order.end(),
+ kLocaTableTag);
+ if (glyf_loc != output_order.end() && loca_loc != output_order.end()) {
+ output_order.erase(loca_loc);
+ output_order.insert(std::find(output_order.begin(), output_order.end(),
+ kGlyfTableTag) + 1, kLocaTableTag);
+ }
+
+ return output_order;
+}
+
+bool ReadTrueTypeFont(Buffer* file, const uint8_t* data, size_t len,
+ Font* font) {
+ // We don't care about the search_range, entry_selector and range_shift
+ // fields, they will always be computed upon writing the font.
+ if (!file->ReadU16(&font->num_tables) ||
+ !file->Skip(6)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ std::map<uint32_t, uint32_t> intervals;
+ for (uint16_t i = 0; i < font->num_tables; ++i) {
+ Font::Table table;
+ table.flag_byte = 0;
+ table.reuse_of = NULL;
+ if (!file->ReadU32(&table.tag) ||
+ !file->ReadU32(&table.checksum) ||
+ !file->ReadU32(&table.offset) ||
+ !file->ReadU32(&table.length)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if ((table.offset & 3) != 0 ||
+ table.length > len ||
+ len - table.length < table.offset) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ intervals[table.offset] = table.length;
+ table.data = data + table.offset;
+ if (font->tables.find(table.tag) != font->tables.end()) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ font->tables[table.tag] = table;
+ }
+
+ // Check that tables are non-overlapping.
+ uint32_t last_offset = 12UL + 16UL * font->num_tables;
+ for (const auto& i : intervals) {
+ if (i.first < last_offset || i.first + i.second < i.first) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ last_offset = i.first + i.second;
+ }
+
+ return true;
+}
+
+bool ReadCollectionFont(Buffer* file, const uint8_t* data, size_t len,
+ Font* font,
+ std::map<uint32_t, Font::Table*>* all_tables) {
+ if (!file->ReadU32(&font->flavor)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if (!ReadTrueTypeFont(file, data, len, font)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ for (auto& entry : font->tables) {
+ Font::Table& table = entry.second;
+
+ if (all_tables->find(table.offset) == all_tables->end()) {
+ (*all_tables)[table.offset] = font->FindTable(table.tag);
+ } else {
+ table.reuse_of = (*all_tables)[table.offset];
+ }
+
+ }
+ return true;
+}
+
+bool ReadTrueTypeCollection(Buffer* file, const uint8_t* data, size_t len,
+ FontCollection* font_collection) {
+ uint32_t num_fonts;
+
+ if (!file->ReadU32(&font_collection->header_version) ||
+ !file->ReadU32(&num_fonts)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ std::vector<uint32_t> offsets;
+ for (size_t i = 0; i < num_fonts; i++) {
+ uint32_t offset;
+ if (!file->ReadU32(&offset)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ offsets.push_back(offset);
+ }
+
+ font_collection->fonts.resize(offsets.size());
+ std::vector<Font>::iterator font_it = font_collection->fonts.begin();
+
+ std::map<uint32_t, Font::Table*> all_tables;
+ for (const auto offset : offsets) {
+ file->set_offset(offset);
+ Font& font = *font_it++;
+ if (!ReadCollectionFont(file, data, len, &font, &all_tables)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ }
+
+ return true;
+}
+
+bool ReadFont(const uint8_t* data, size_t len, Font* font) {
+ Buffer file(data, len);
+
+ if (!file.ReadU32(&font->flavor)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ if (font->flavor == kTtcFontFlavor) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ return ReadTrueTypeFont(&file, data, len, font);
+}
+
+bool ReadFontCollection(const uint8_t* data, size_t len,
+ FontCollection* font_collection) {
+ Buffer file(data, len);
+
+ if (!file.ReadU32(&font_collection->flavor)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ if (font_collection->flavor != kTtcFontFlavor) {
+ font_collection->fonts.resize(1);
+ Font& font = font_collection->fonts[0];
+ font.flavor = font_collection->flavor;
+ return ReadTrueTypeFont(&file, data, len, &font);
+ }
+ return ReadTrueTypeCollection(&file, data, len, font_collection);
+}
+
+size_t FontFileSize(const Font& font) {
+ size_t max_offset = 12ULL + 16ULL * font.num_tables;
+ for (const auto& i : font.tables) {
+ const Font::Table& table = i.second;
+ size_t padding_size = (4 - (table.length & 3)) & 3;
+ size_t end_offset = (padding_size + table.offset) + table.length;
+ max_offset = std::max(max_offset, end_offset);
+ }
+ return max_offset;
+}
+
+size_t FontCollectionFileSize(const FontCollection& font_collection) {
+ size_t max_offset = 0;
+ for (auto& font : font_collection.fonts) {
+ // font file size actually just finds max offset
+ max_offset = std::max(max_offset, FontFileSize(font));
+ }
+ return max_offset;
+}
+
+bool WriteFont(const Font& font, uint8_t* dst, size_t dst_size) {
+ size_t offset = 0;
+ return WriteFont(font, &offset, dst, dst_size);
+}
+
+bool WriteTableRecord(const Font::Table* table, size_t* offset, uint8_t* dst,
+ size_t dst_size) {
+ if (dst_size < *offset + kSfntEntrySize) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if (table->IsReused()) {
+ table = table->reuse_of;
+ }
+ StoreU32(table->tag, offset, dst);
+ StoreU32(table->checksum, offset, dst);
+ StoreU32(table->offset, offset, dst);
+ StoreU32(table->length, offset, dst);
+ return true;
+}
+
+bool WriteTable(const Font::Table& table, size_t* offset, uint8_t* dst,
+ size_t dst_size) {
+ if (!WriteTableRecord(&table, offset, dst, dst_size)) {
+ return false;
+ }
+
+ // Write the actual table data if it's the first time we've seen it
+ if (!table.IsReused()) {
+ if (table.offset + table.length < table.offset ||
+ dst_size < table.offset + table.length) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ memcpy(dst + table.offset, table.data, table.length);
+ size_t padding_size = (4 - (table.length & 3)) & 3;
+ if (table.offset + table.length + padding_size < padding_size ||
+ dst_size < table.offset + table.length + padding_size) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ memset(dst + table.offset + table.length, 0, padding_size);
+ }
+ return true;
+}
+
+bool WriteFont(const Font& font, size_t* offset, uint8_t* dst,
+ size_t dst_size) {
+ if (dst_size < 12ULL + 16ULL * font.num_tables) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ StoreU32(font.flavor, offset, dst);
+ Store16(font.num_tables, offset, dst);
+ uint16_t max_pow2 = font.num_tables ? Log2Floor(font.num_tables) : 0;
+ uint16_t search_range = max_pow2 ? 1 << (max_pow2 + 4) : 0;
+ uint16_t range_shift = (font.num_tables << 4) - search_range;
+ Store16(search_range, offset, dst);
+ Store16(max_pow2, offset, dst);
+ Store16(range_shift, offset, dst);
+
+ for (const auto& i : font.tables) {
+ if (!WriteTable(i.second, offset, dst, dst_size)) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool WriteFontCollection(const FontCollection& font_collection, uint8_t* dst,
+ size_t dst_size) {
+ size_t offset = 0;
+
+ // It's simpler if this just a simple sfnt
+ if (font_collection.flavor != kTtcFontFlavor) {
+ return WriteFont(font_collection.fonts[0], &offset, dst, dst_size);
+ }
+
+ // Write TTC header
+ StoreU32(kTtcFontFlavor, &offset, dst);
+ StoreU32(font_collection.header_version, &offset, dst);
+ StoreU32(font_collection.fonts.size(), &offset, dst);
+
+ // Offset Table, zeroed for now
+ size_t offset_table = offset; // where to write offsets later
+ for (size_t i = 0; i < font_collection.fonts.size(); i++) {
+ StoreU32(0, &offset, dst);
+ }
+
+ if (font_collection.header_version == 0x00020000) {
+ StoreU32(0, &offset, dst); // ulDsigTag
+ StoreU32(0, &offset, dst); // ulDsigLength
+ StoreU32(0, &offset, dst); // ulDsigOffset
+ }
+
+ // Write fonts and their offsets.
+ for (size_t i = 0; i < font_collection.fonts.size(); i++) {
+ const auto& font = font_collection.fonts[i];
+ StoreU32(offset, &offset_table, dst);
+ if (!WriteFont(font, &offset, dst, dst_size)) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+int NumGlyphs(const Font& font) {
+ const Font::Table* head_table = font.FindTable(kHeadTableTag);
+ const Font::Table* loca_table = font.FindTable(kLocaTableTag);
+ if (head_table == NULL || loca_table == NULL || head_table->length < 52) {
+ return 0;
+ }
+ int index_fmt = IndexFormat(font);
+ int num_glyphs = (loca_table->length / (index_fmt == 0 ? 2 : 4)) - 1;
+ return num_glyphs;
+}
+
+int IndexFormat(const Font& font) {
+ const Font::Table* head_table = font.FindTable(kHeadTableTag);
+ if (head_table == NULL) {
+ return 0;
+ }
+ return head_table->data[51];
+}
+
+bool Font::Table::IsReused() const {
+ return this->reuse_of != NULL;
+}
+
+bool GetGlyphData(const Font& font, int glyph_index,
+ const uint8_t** glyph_data, size_t* glyph_size) {
+ if (glyph_index < 0) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ const Font::Table* head_table = font.FindTable(kHeadTableTag);
+ const Font::Table* loca_table = font.FindTable(kLocaTableTag);
+ const Font::Table* glyf_table = font.FindTable(kGlyfTableTag);
+ if (head_table == NULL || loca_table == NULL || glyf_table == NULL ||
+ head_table->length < 52) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ int index_fmt = IndexFormat(font);
+
+ Buffer loca_buf(loca_table->data, loca_table->length);
+ if (index_fmt == 0) {
+ uint16_t offset1, offset2;
+ if (!loca_buf.Skip(2 * glyph_index) ||
+ !loca_buf.ReadU16(&offset1) ||
+ !loca_buf.ReadU16(&offset2) ||
+ offset2 < offset1 ||
+ 2 * offset2 > glyf_table->length) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ *glyph_data = glyf_table->data + 2 * offset1;
+ *glyph_size = 2 * (offset2 - offset1);
+ } else {
+ uint32_t offset1, offset2;
+ if (!loca_buf.Skip(4 * glyph_index) ||
+ !loca_buf.ReadU32(&offset1) ||
+ !loca_buf.ReadU32(&offset2) ||
+ offset2 < offset1 ||
+ offset2 > glyf_table->length) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ *glyph_data = glyf_table->data + offset1;
+ *glyph_size = offset2 - offset1;
+ }
+ return true;
+}
+
+bool RemoveDigitalSignature(Font* font) {
+ std::map<uint32_t, Font::Table>::iterator it =
+ font->tables.find(kDsigTableTag);
+ if (it != font->tables.end()) {
+ font->tables.erase(it);
+ font->num_tables = font->tables.size();
+ }
+ return true;
+}
+
+} // namespace woff2
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/font.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/font.h
new file mode 100644
index 00000000000..93806e6b5ee
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/font.h
@@ -0,0 +1,113 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Data model for a font file in sfnt format, reading and writing functions and
+// accessors for the glyph data.
+
+#ifndef WOFF2_FONT_H_
+#define WOFF2_FONT_H_
+
+#include <stddef.h>
+#include <inttypes.h>
+#include <map>
+#include <vector>
+
+namespace woff2 {
+
+// Represents an sfnt font file. Only the table directory is parsed, for the
+// table data we only store a raw pointer, therefore a font object is valid only
+// as long the data from which it was parsed is around.
+struct Font {
+ uint32_t flavor;
+ uint16_t num_tables;
+
+ struct Table {
+ uint32_t tag;
+ uint32_t checksum;
+ uint32_t offset;
+ uint32_t length;
+ const uint8_t* data;
+
+ // Buffer used to mutate the data before writing out.
+ std::vector<uint8_t> buffer;
+
+ // If we've seen this tag/offset before, pointer to the first time we saw it
+ // If this is the first time we've seen this table, NULL
+ // Intended use is to bypass re-processing tables
+ Font::Table* reuse_of;
+
+ uint8_t flag_byte;
+
+ // Is this table reused by a TTC
+ bool IsReused() const;
+ };
+ std::map<uint32_t, Table> tables;
+ std::vector<uint32_t> OutputOrderedTags() const;
+
+ Table* FindTable(uint32_t tag);
+ const Table* FindTable(uint32_t tag) const;
+};
+
+// Accomodates both singular (OTF, TTF) and collection (TTC) fonts
+struct FontCollection {
+ uint32_t flavor;
+ uint32_t header_version;
+ // (offset, first use of table*) pairs
+ std::map<uint32_t, Font::Table*> tables;
+ std::vector<Font> fonts;
+};
+
+// Parses the font from the given data. Returns false on parsing failure or
+// buffer overflow. The font is valid only so long the input data pointer is
+// valid. Does NOT support collections.
+bool ReadFont(const uint8_t* data, size_t len, Font* font);
+
+// Parses the font from the given data. Returns false on parsing failure or
+// buffer overflow. The font is valid only so long the input data pointer is
+// valid. Supports collections.
+bool ReadFontCollection(const uint8_t* data, size_t len, FontCollection* fonts);
+
+// Returns the file size of the font.
+size_t FontFileSize(const Font& font);
+size_t FontCollectionFileSize(const FontCollection& font);
+
+// Writes the font into the specified dst buffer. The dst_size should be the
+// same as returned by FontFileSize(). Returns false upon buffer overflow (which
+// should not happen if dst_size was computed by FontFileSize()).
+bool WriteFont(const Font& font, uint8_t* dst, size_t dst_size);
+// Write the font at a specific offset
+bool WriteFont(const Font& font, size_t* offset, uint8_t* dst, size_t dst_size);
+
+bool WriteFontCollection(const FontCollection& font_collection, uint8_t* dst,
+ size_t dst_size);
+
+// Returns the number of glyphs in the font.
+// NOTE: Currently this works only for TrueType-flavored fonts, will return
+// zero for CFF-flavored fonts.
+int NumGlyphs(const Font& font);
+
+// Returns the index format of the font
+int IndexFormat(const Font& font);
+
+// Sets *glyph_data and *glyph_size to point to the location of the glyph data
+// with the given index. Returns false if the glyph is not found.
+bool GetGlyphData(const Font& font, int glyph_index,
+ const uint8_t** glyph_data, size_t* glyph_size);
+
+// Removes the digital signature (DSIG) table
+bool RemoveDigitalSignature(Font* font);
+
+} // namespace woff2
+
+#endif // WOFF2_FONT_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/glyph.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/glyph.cc
new file mode 100644
index 00000000000..1dadafcb700
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/glyph.cc
@@ -0,0 +1,380 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Glyph manipulation
+
+#include "./glyph.h"
+
+#include <stdlib.h>
+#include <limits>
+#include "./buffer.h"
+#include "./store_bytes.h"
+
+namespace woff2 {
+
+static const int32_t kFLAG_ONCURVE = 1;
+static const int32_t kFLAG_XSHORT = 1 << 1;
+static const int32_t kFLAG_YSHORT = 1 << 2;
+static const int32_t kFLAG_REPEAT = 1 << 3;
+static const int32_t kFLAG_XREPEATSIGN = 1 << 4;
+static const int32_t kFLAG_YREPEATSIGN = 1 << 5;
+static const int32_t kFLAG_ARG_1_AND_2_ARE_WORDS = 1 << 0;
+static const int32_t kFLAG_WE_HAVE_A_SCALE = 1 << 3;
+static const int32_t kFLAG_MORE_COMPONENTS = 1 << 5;
+static const int32_t kFLAG_WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;
+static const int32_t kFLAG_WE_HAVE_A_TWO_BY_TWO = 1 << 7;
+static const int32_t kFLAG_WE_HAVE_INSTRUCTIONS = 1 << 8;
+
+bool ReadCompositeGlyphData(Buffer* buffer, Glyph* glyph) {
+ glyph->have_instructions = false;
+ glyph->composite_data = buffer->buffer() + buffer->offset();
+ size_t start_offset = buffer->offset();
+ uint16_t flags = kFLAG_MORE_COMPONENTS;
+ while (flags & kFLAG_MORE_COMPONENTS) {
+ if (!buffer->ReadU16(&flags)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ glyph->have_instructions |= (flags & kFLAG_WE_HAVE_INSTRUCTIONS) != 0;
+ size_t arg_size = 2; // glyph index
+ if (flags & kFLAG_ARG_1_AND_2_ARE_WORDS) {
+ arg_size += 4;
+ } else {
+ arg_size += 2;
+ }
+ if (flags & kFLAG_WE_HAVE_A_SCALE) {
+ arg_size += 2;
+ } else if (flags & kFLAG_WE_HAVE_AN_X_AND_Y_SCALE) {
+ arg_size += 4;
+ } else if (flags & kFLAG_WE_HAVE_A_TWO_BY_TWO) {
+ arg_size += 8;
+ }
+ if (!buffer->Skip(arg_size)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ }
+ if (buffer->offset() - start_offset > std::numeric_limits<uint32_t>::max()) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ glyph->composite_data_size = buffer->offset() - start_offset;
+ return true;
+}
+
+bool ReadGlyph(const uint8_t* data, size_t len, Glyph* glyph) {
+ Buffer buffer(data, len);
+
+ int16_t num_contours;
+ if (!buffer.ReadS16(&num_contours)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ // Read the bounding box.
+ if (!buffer.ReadS16(&glyph->x_min) ||
+ !buffer.ReadS16(&glyph->y_min) ||
+ !buffer.ReadS16(&glyph->x_max) ||
+ !buffer.ReadS16(&glyph->y_max)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ if (num_contours == 0) {
+ // Empty glyph.
+ return true;
+ }
+
+ if (num_contours > 0) {
+ // Simple glyph.
+ glyph->contours.resize(num_contours);
+
+ // Read the number of points per contour.
+ uint16_t last_point_index = 0;
+ for (int i = 0; i < num_contours; ++i) {
+ uint16_t point_index;
+ if (!buffer.ReadU16(&point_index)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ uint16_t num_points = point_index - last_point_index + (i == 0 ? 1 : 0);
+ glyph->contours[i].resize(num_points);
+ last_point_index = point_index;
+ }
+
+ // Read the instructions.
+ if (!buffer.ReadU16(&glyph->instructions_size)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ glyph->instructions_data = data + buffer.offset();
+ if (!buffer.Skip(glyph->instructions_size)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ // Read the run-length coded flags.
+ std::vector<std::vector<uint8_t> > flags(num_contours);
+ uint8_t flag = 0;
+ uint8_t flag_repeat = 0;
+ for (int i = 0; i < num_contours; ++i) {
+ flags[i].resize(glyph->contours[i].size());
+ for (size_t j = 0; j < glyph->contours[i].size(); ++j) {
+ if (flag_repeat == 0) {
+ if (!buffer.ReadU8(&flag)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if (flag & kFLAG_REPEAT) {
+ if (!buffer.ReadU8(&flag_repeat)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ }
+ } else {
+ flag_repeat--;
+ }
+ flags[i][j] = flag;
+ glyph->contours[i][j].on_curve = flag & kFLAG_ONCURVE;
+ }
+ }
+
+ // Read the x coordinates.
+ int prev_x = 0;
+ for (int i = 0; i < num_contours; ++i) {
+ for (size_t j = 0; j < glyph->contours[i].size(); ++j) {
+ uint8_t flag = flags[i][j];
+ if (flag & kFLAG_XSHORT) {
+ // single byte x-delta coord value
+ uint8_t x_delta;
+ if (!buffer.ReadU8(&x_delta)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ int sign = (flag & kFLAG_XREPEATSIGN) ? 1 : -1;
+ glyph->contours[i][j].x = prev_x + sign * x_delta;
+ } else {
+ // double byte x-delta coord value
+ int16_t x_delta = 0;
+ if (!(flag & kFLAG_XREPEATSIGN)) {
+ if (!buffer.ReadS16(&x_delta)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ }
+ glyph->contours[i][j].x = prev_x + x_delta;
+ }
+ prev_x = glyph->contours[i][j].x;
+ }
+ }
+
+ // Read the y coordinates.
+ int prev_y = 0;
+ for (int i = 0; i < num_contours; ++i) {
+ for (size_t j = 0; j < glyph->contours[i].size(); ++j) {
+ uint8_t flag = flags[i][j];
+ if (flag & kFLAG_YSHORT) {
+ // single byte y-delta coord value
+ uint8_t y_delta;
+ if (!buffer.ReadU8(&y_delta)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ int sign = (flag & kFLAG_YREPEATSIGN) ? 1 : -1;
+ glyph->contours[i][j].y = prev_y + sign * y_delta;
+ } else {
+ // double byte y-delta coord value
+ int16_t y_delta = 0;
+ if (!(flag & kFLAG_YREPEATSIGN)) {
+ if (!buffer.ReadS16(&y_delta)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ }
+ glyph->contours[i][j].y = prev_y + y_delta;
+ }
+ prev_y = glyph->contours[i][j].y;
+ }
+ }
+ } else if (num_contours == -1) {
+ // Composite glyph.
+ if (!ReadCompositeGlyphData(&buffer, glyph)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ // Read the instructions.
+ if (glyph->have_instructions) {
+ if (!buffer.ReadU16(&glyph->instructions_size)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ glyph->instructions_data = data + buffer.offset();
+ if (!buffer.Skip(glyph->instructions_size)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ } else {
+ glyph->instructions_size = 0;
+ }
+ } else {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ return true;
+}
+
+namespace {
+
+void StoreBbox(const Glyph& glyph, size_t* offset, uint8_t* dst) {
+ Store16(glyph.x_min, offset, dst);
+ Store16(glyph.y_min, offset, dst);
+ Store16(glyph.x_max, offset, dst);
+ Store16(glyph.y_max, offset, dst);
+}
+
+void StoreInstructions(const Glyph& glyph, size_t* offset, uint8_t* dst) {
+ Store16(glyph.instructions_size, offset, dst);
+ StoreBytes(glyph.instructions_data, glyph.instructions_size, offset, dst);
+}
+
+bool StoreEndPtsOfContours(const Glyph& glyph, size_t* offset, uint8_t* dst) {
+ int end_point = -1;
+ for (const auto& contour : glyph.contours) {
+ end_point += contour.size();
+ if (contour.size() > std::numeric_limits<uint16_t>::max() ||
+ end_point > std::numeric_limits<uint16_t>::max()) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ Store16(end_point, offset, dst);
+ }
+ return true;
+}
+
+bool StorePoints(const Glyph& glyph, size_t* offset,
+ uint8_t* dst, size_t dst_size) {
+ int last_flag = -1;
+ int repeat_count = 0;
+ int last_x = 0;
+ int last_y = 0;
+ size_t x_bytes = 0;
+ size_t y_bytes = 0;
+
+ // Store the flags and calculate the total size of the x and y coordinates.
+ for (const auto& contour : glyph.contours) {
+ for (const auto& point : contour) {
+ int flag = point.on_curve ? kFLAG_ONCURVE : 0;
+ int dx = point.x - last_x;
+ int dy = point.y - last_y;
+ if (dx == 0) {
+ flag |= kFLAG_XREPEATSIGN;
+ } else if (dx > -256 && dx < 256) {
+ flag |= kFLAG_XSHORT | (dx > 0 ? kFLAG_XREPEATSIGN : 0);
+ x_bytes += 1;
+ } else {
+ x_bytes += 2;
+ }
+ if (dy == 0) {
+ flag |= kFLAG_YREPEATSIGN;
+ } else if (dy > -256 && dy < 256) {
+ flag |= kFLAG_YSHORT | (dy > 0 ? kFLAG_YREPEATSIGN : 0);
+ y_bytes += 1;
+ } else {
+ y_bytes += 2;
+ }
+ if (flag == last_flag && repeat_count != 255) {
+ dst[*offset - 1] |= kFLAG_REPEAT;
+ repeat_count++;
+ } else {
+ if (repeat_count != 0) {
+ if (*offset >= dst_size) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ dst[(*offset)++] = repeat_count;
+ }
+ if (*offset >= dst_size) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ dst[(*offset)++] = flag;
+ repeat_count = 0;
+ }
+ last_x = point.x;
+ last_y = point.y;
+ last_flag = flag;
+ }
+ }
+ if (repeat_count != 0) {
+ if (*offset >= dst_size) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ dst[(*offset)++] = repeat_count;
+ }
+
+ if (*offset + x_bytes + y_bytes > dst_size) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ // Store the x and y coordinates.
+ size_t x_offset = *offset;
+ size_t y_offset = *offset + x_bytes;
+ last_x = 0;
+ last_y = 0;
+ for (const auto& contour : glyph.contours) {
+ for (const auto& point : contour) {
+ int dx = point.x - last_x;
+ int dy = point.y - last_y;
+ if (dx == 0) {
+ // pass
+ } else if (dx > -256 && dx < 256) {
+ dst[x_offset++] = std::abs(dx);
+ } else {
+ Store16(dx, &x_offset, dst);
+ }
+ if (dy == 0) {
+ // pass
+ } else if (dy > -256 && dy < 256) {
+ dst[y_offset++] = std::abs(dy);
+ } else {
+ Store16(dy, &y_offset, dst);
+ }
+ last_x += dx;
+ last_y += dy;
+ }
+ }
+ *offset = y_offset;
+ return true;
+}
+
+} // namespace
+
+bool StoreGlyph(const Glyph& glyph, uint8_t* dst, size_t* dst_size) {
+ size_t offset = 0;
+ if (glyph.composite_data_size > 0) {
+ // Composite glyph.
+ if (*dst_size < ((10ULL + glyph.composite_data_size) +
+ ((glyph.have_instructions ? 2ULL : 0) +
+ glyph.instructions_size))) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ Store16(-1, &offset, dst);
+ StoreBbox(glyph, &offset, dst);
+ StoreBytes(glyph.composite_data, glyph.composite_data_size, &offset, dst);
+ if (glyph.have_instructions) {
+ StoreInstructions(glyph, &offset, dst);
+ }
+ } else if (glyph.contours.size() > 0) {
+ // Simple glyph.
+ if (glyph.contours.size() > std::numeric_limits<int16_t>::max()) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if (*dst_size < ((12ULL + 2 * glyph.contours.size()) +
+ glyph.instructions_size)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ Store16(glyph.contours.size(), &offset, dst);
+ StoreBbox(glyph, &offset, dst);
+ if (!StoreEndPtsOfContours(glyph, &offset, dst)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ StoreInstructions(glyph, &offset, dst);
+ if (!StorePoints(glyph, &offset, dst, *dst_size)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ }
+ *dst_size = offset;
+ return true;
+}
+
+} // namespace woff2
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/glyph.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/glyph.h
new file mode 100644
index 00000000000..0ee755c2f5a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/glyph.h
@@ -0,0 +1,71 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Data model and I/O for glyph data within sfnt format files for the purpose of
+// performing the preprocessing step of the WOFF 2.0 conversion.
+
+#ifndef WOFF2_GLYPH_H_
+#define WOFF2_GLYPH_H_
+
+#include <stddef.h>
+#include <inttypes.h>
+#include <vector>
+
+namespace woff2 {
+
+// Represents a parsed simple or composite glyph. The composite glyph data and
+// instructions are un-parsed and we keep only pointers to the raw data,
+// therefore the glyph is valid only so long the data from which it was parsed
+// is around.
+class Glyph {
+ public:
+ Glyph() : instructions_size(0), composite_data_size(0) {}
+
+ // Bounding box.
+ int16_t x_min;
+ int16_t x_max;
+ int16_t y_min;
+ int16_t y_max;
+
+ // Instructions.
+ uint16_t instructions_size;
+ const uint8_t* instructions_data;
+
+ // Data model for simple glyphs.
+ struct Point {
+ int x;
+ int y;
+ bool on_curve;
+ };
+ std::vector<std::vector<Point> > contours;
+
+ // Data for composite glyphs.
+ const uint8_t* composite_data;
+ uint32_t composite_data_size;
+ bool have_instructions;
+};
+
+// Parses the glyph from the given data. Returns false on parsing failure or
+// buffer overflow. The glyph is valid only so long the input data pointer is
+// valid.
+bool ReadGlyph(const uint8_t* data, size_t len, Glyph* glyph);
+
+// Stores the glyph into the specified dst buffer. The *dst_size is the buffer
+// size on entry and is set to the actual (unpadded) stored size on exit.
+// Returns false on buffer overflow.
+bool StoreGlyph(const Glyph& glyph, uint8_t* dst, size_t* dst_size);
+
+} // namespace woff2
+
+#endif // WOFF2_GLYPH_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/normalize.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/normalize.cc
new file mode 100644
index 00000000000..b538b91a89f
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/normalize.cc
@@ -0,0 +1,322 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Glyph normalization
+
+#include "./normalize.h"
+
+#include <inttypes.h>
+#include <stddef.h>
+
+#include "./buffer.h"
+#include "./port.h"
+#include "./font.h"
+#include "./glyph.h"
+#include "./round.h"
+#include "./store_bytes.h"
+#include "./table_tags.h"
+#include "./woff2_common.h"
+
+namespace woff2 {
+
+namespace {
+
+void StoreLoca(int index_fmt, uint32_t value, size_t* offset, uint8_t* dst) {
+ if (index_fmt == 0) {
+ Store16(value >> 1, offset, dst);
+ } else {
+ StoreU32(value, offset, dst);
+ }
+}
+
+} // namespace
+
+namespace {
+
+bool WriteNormalizedLoca(int index_fmt, int num_glyphs, Font* font) {
+ Font::Table* glyf_table = font->FindTable(kGlyfTableTag);
+ Font::Table* loca_table = font->FindTable(kLocaTableTag);
+
+ int glyph_sz = index_fmt == 0 ? 2 : 4;
+ loca_table->buffer.resize(Round4(num_glyphs + 1) * glyph_sz);
+ loca_table->length = (num_glyphs + 1) * glyph_sz;
+
+ uint8_t* glyf_dst = &glyf_table->buffer[0];
+ uint8_t* loca_dst = &loca_table->buffer[0];
+ uint32_t glyf_offset = 0;
+ size_t loca_offset = 0;
+
+ for (int i = 0; i < num_glyphs; ++i) {
+ StoreLoca(index_fmt, glyf_offset, &loca_offset, loca_dst);
+ Glyph glyph;
+ const uint8_t* glyph_data;
+ size_t glyph_size;
+ if (!GetGlyphData(*font, i, &glyph_data, &glyph_size) ||
+ (glyph_size > 0 && !ReadGlyph(glyph_data, glyph_size, &glyph))) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ size_t glyf_dst_size = glyf_table->buffer.size() - glyf_offset;
+ if (!StoreGlyph(glyph, glyf_dst + glyf_offset, &glyf_dst_size)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ glyf_dst_size = Round4(glyf_dst_size);
+ if (glyf_dst_size > std::numeric_limits<uint32_t>::max() ||
+ glyf_offset + static_cast<uint32_t>(glyf_dst_size) < glyf_offset ||
+ (index_fmt == 0 && glyf_offset + glyf_dst_size >= (1UL << 17))) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ glyf_offset += glyf_dst_size;
+ }
+ if (glyf_offset == 0) {
+ return false;
+ }
+
+ StoreLoca(index_fmt, glyf_offset, &loca_offset, loca_dst);
+
+ glyf_table->buffer.resize(glyf_offset);
+ glyf_table->data = &glyf_table->buffer[0];
+ glyf_table->length = glyf_offset;
+ loca_table->data = &loca_table->buffer[0];
+
+ return true;
+}
+
+} // namespace
+
+namespace {
+
+bool MakeEditableBuffer(Font* font, int tableTag) {
+ Font::Table* table = font->FindTable(tableTag);
+ if (table == NULL) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if (table->IsReused()) {
+ return true;
+ }
+ int sz = Round4(table->length);
+ table->buffer.resize(sz);
+ uint8_t* buf = &table->buffer[0];
+ memcpy(buf, table->data, sz);
+ table->data = buf;
+ return true;
+}
+
+} // namespace
+
+bool NormalizeGlyphs(Font* font) {
+ Font::Table* head_table = font->FindTable(kHeadTableTag);
+ Font::Table* glyf_table = font->FindTable(kGlyfTableTag);
+ Font::Table* loca_table = font->FindTable(kLocaTableTag);
+ if (head_table == NULL) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ // If you don't have glyf/loca this transform isn't very interesting
+ if (loca_table == NULL && glyf_table == NULL) {
+ return true;
+ }
+ // It would be best if you didn't have just one of glyf/loca
+ if ((glyf_table == NULL) != (loca_table == NULL)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ // Must share neither or both loca & glyf
+ if (loca_table->IsReused() != glyf_table->IsReused()) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if (loca_table->IsReused()) {
+ return true;
+ }
+
+ int index_fmt = head_table->data[51];
+ int num_glyphs = NumGlyphs(*font);
+
+ // We need to allocate a bit more than its original length for the normalized
+ // glyf table, since it can happen that the glyphs in the original table are
+ // 2-byte aligned, while in the normalized table they are 4-byte aligned.
+ // That gives a maximum of 2 bytes increase per glyph. However, there is no
+ // theoretical guarantee that the total size of the flags plus the coordinates
+ // is the smallest possible in the normalized version, so we have to allow
+ // some general overhead.
+ // TODO(user) Figure out some more precise upper bound on the size of
+ // the overhead.
+ size_t max_normalized_glyf_size = 1.1 * glyf_table->length + 2 * num_glyphs;
+
+ glyf_table->buffer.resize(max_normalized_glyf_size);
+
+ // if we can't write a loca using short's (index_fmt 0)
+ // try again using longs (index_fmt 1)
+ if (!WriteNormalizedLoca(index_fmt, num_glyphs, font)) {
+ if (index_fmt != 0) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ // Rewrite loca with 4-byte entries & update head to match
+ index_fmt = 1;
+ if (!WriteNormalizedLoca(index_fmt, num_glyphs, font)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ head_table->buffer[51] = 1;
+ }
+
+ return true;
+}
+
+bool NormalizeOffsets(Font* font) {
+ uint32_t offset = 12 + 16 * font->num_tables;
+ for (auto tag : font->OutputOrderedTags()) {
+ auto& table = font->tables[tag];
+ table.offset = offset;
+ offset += Round4(table.length);
+ }
+ return true;
+}
+
+namespace {
+
+uint32_t ComputeHeaderChecksum(const Font& font) {
+ uint32_t checksum = font.flavor;
+ uint16_t max_pow2 = font.num_tables ? Log2Floor(font.num_tables) : 0;
+ uint16_t search_range = max_pow2 ? 1 << (max_pow2 + 4) : 0;
+ uint16_t range_shift = (font.num_tables << 4) - search_range;
+ checksum += (font.num_tables << 16 | search_range);
+ checksum += (max_pow2 << 16 | range_shift);
+ for (const auto& i : font.tables) {
+ const Font::Table* table = &i.second;
+ if (table->IsReused()) {
+ table = table->reuse_of;
+ }
+ checksum += table->tag;
+ checksum += table->checksum;
+ checksum += table->offset;
+ checksum += table->length;
+ }
+ return checksum;
+}
+
+} // namespace
+
+bool FixChecksums(Font* font) {
+ Font::Table* head_table = font->FindTable(kHeadTableTag);
+ if (head_table == NULL) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if (head_table->reuse_of != NULL) {
+ head_table = head_table->reuse_of;
+ }
+ if (head_table->length < 12) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ uint8_t* head_buf = &head_table->buffer[0];
+ size_t offset = 8;
+ StoreU32(0, &offset, head_buf);
+ uint32_t file_checksum = 0;
+ uint32_t head_checksum = 0;
+ for (auto& i : font->tables) {
+ Font::Table* table = &i.second;
+ if (table->IsReused()) {
+ table = table->reuse_of;
+ }
+ table->checksum = ComputeULongSum(table->data, table->length);
+ file_checksum += table->checksum;
+
+ if (table->tag == kHeadTableTag) {
+ head_checksum = table->checksum;
+ }
+ }
+
+ file_checksum += ComputeHeaderChecksum(*font);
+ offset = 8;
+ StoreU32(0xb1b0afba - file_checksum, &offset, head_buf);
+
+ return true;
+}
+
+namespace {
+bool MarkTransformed(Font* font) {
+ Font::Table* head_table = font->FindTable(kHeadTableTag);
+ if (head_table == NULL) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if (head_table->reuse_of != NULL) {
+ head_table = head_table->reuse_of;
+ }
+ if (head_table->length < 17) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ // set bit 11 of head table 'flags' to indicate that font has undergone
+ // lossless modifying transform
+ int head_flags = head_table->data[16];
+ head_table->buffer[16] = head_flags | 0x08;
+ return true;
+}
+} // namespace
+
+
+bool NormalizeWithoutFixingChecksums(Font* font) {
+ return (MakeEditableBuffer(font, kHeadTableTag) &&
+ RemoveDigitalSignature(font) &&
+ MarkTransformed(font) &&
+ NormalizeGlyphs(font) &&
+ NormalizeOffsets(font));
+}
+
+bool NormalizeFont(Font* font) {
+ return (NormalizeWithoutFixingChecksums(font) &&
+ FixChecksums(font));
+}
+
+bool NormalizeFontCollection(FontCollection* font_collection) {
+ if (font_collection->fonts.size() == 1) {
+ return NormalizeFont(&font_collection->fonts[0]);
+ }
+
+ uint32_t offset = CollectionHeaderSize(font_collection->header_version,
+ font_collection->fonts.size());
+ for (auto& font : font_collection->fonts) {
+ if (!NormalizeWithoutFixingChecksums(&font)) {
+#ifdef FONT_COMPRESSION_BIN
+ fprintf(stderr, "Font normalization failed.\n");
+#endif
+ return FONT_COMPRESSION_FAILURE();
+ }
+ offset += kSfntHeaderSize + kSfntEntrySize * font.num_tables;
+ }
+
+ // Start table offsets after TTC Header and Sfnt Headers
+ for (auto& font : font_collection->fonts) {
+ for (auto tag : font.OutputOrderedTags()) {
+ Font::Table& table = font.tables[tag];
+ if (table.IsReused()) {
+ table.offset = table.reuse_of->offset;
+ } else {
+ table.offset = offset;
+ offset += Round4(table.length);
+ }
+ }
+ }
+
+ // Now we can fix the checksums
+ for (auto& font : font_collection->fonts) {
+ if (!FixChecksums(&font)) {
+#ifdef FONT_COMPRESSION_BIN
+ fprintf(stderr, "Failed to fix checksums\n");
+#endif
+ return FONT_COMPRESSION_FAILURE();
+ }
+ }
+
+ return true;
+}
+
+} // namespace woff2
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/normalize.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/normalize.h
new file mode 100644
index 00000000000..e0153488ed3
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/normalize.h
@@ -0,0 +1,47 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Functions for normalizing fonts. Since the WOFF 2.0 decoder creates font
+// files in normalized form, the WOFF 2.0 conversion is guaranteed to be
+// lossless (in a bitwise sense) only for normalized font files.
+
+#ifndef WOFF2_NORMALIZE_H_
+#define WOFF2_NORMALIZE_H_
+
+namespace woff2 {
+
+struct Font;
+struct FontCollection;
+
+// Changes the offset fields of the table headers so that the data for the
+// tables will be written in order of increasing tag values, without any gaps
+// other than the 4-byte padding.
+bool NormalizeOffsets(Font* font);
+
+// Changes the checksum fields of the table headers and the checksum field of
+// the head table so that it matches the current data.
+bool FixChecksums(Font* font);
+
+// Parses each of the glyphs in the font and writes them again to the glyf
+// table in normalized form, as defined by the StoreGlyph() function. Changes
+// the loca table accordigly.
+bool NormalizeGlyphs(Font* font);
+
+// Performs all of the normalization steps above.
+bool NormalizeFont(Font* font);
+bool NormalizeFontCollection(FontCollection* font_collection);
+
+} // namespace woff2
+
+#endif // WOFF2_NORMALIZE_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/port.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/port.h
new file mode 100644
index 00000000000..bac47a93a61
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/port.h
@@ -0,0 +1,63 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Helper function for bit twiddling and macros for branch prediction.
+
+#ifndef WOFF2_PORT_H_
+#define WOFF2_PORT_H_
+
+#include <assert.h>
+
+namespace woff2 {
+
+typedef unsigned int uint32;
+
+inline int Log2Floor(uint32 n) {
+#if defined(__GNUC__)
+ return n == 0 ? -1 : 31 ^ __builtin_clz(n);
+#else
+ if (n == 0)
+ return -1;
+ int log = 0;
+ uint32 value = n;
+ for (int i = 4; i >= 0; --i) {
+ int shift = (1 << i);
+ uint32 x = value >> shift;
+ if (x != 0) {
+ value = x;
+ log += shift;
+ }
+ }
+ assert(value == 1);
+ return log;
+#endif
+}
+
+} // namespace woff2
+
+/* Compatibility with non-clang compilers. */
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
+
+#if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ > 95) || \
+ (defined(__llvm__) && __has_builtin(__builtin_expect))
+#define PREDICT_FALSE(x) (__builtin_expect(x, 0))
+#define PREDICT_TRUE(x) (__builtin_expect(!!(x), 1))
+#else
+#define PREDICT_FALSE(x) (x)
+#define PREDICT_TRUE(x) (x)
+#endif
+
+#endif // WOFF2_PORT_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/round.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/round.h
new file mode 100644
index 00000000000..abb81f8235d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/round.h
@@ -0,0 +1,35 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Helper for rounding
+
+#ifndef WOFF2_ROUND_H_
+#define WOFF2_ROUND_H_
+
+#include <limits>
+
+namespace woff2 {
+
+// Round a value up to the nearest multiple of 4. Don't round the value in the
+// case that rounding up overflows.
+template<typename T> T Round4(T value) {
+ if (std::numeric_limits<T>::max() - value < 3) {
+ return value;
+ }
+ return (value + 3) & ~3;
+}
+
+} // namespace woff2
+
+#endif // WOFF2_ROUND_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/store_bytes.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/store_bytes.h
new file mode 100644
index 00000000000..74b279c4277
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/store_bytes.h
@@ -0,0 +1,77 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Helper functions for storing integer values into byte streams.
+// No bounds checking is performed, that is the responsibility of the caller.
+
+#ifndef WOFF2_STORE_BYTES_H_
+#define WOFF2_STORE_BYTES_H_
+
+#include <inttypes.h>
+#include <stddef.h>
+#include <string.h>
+
+namespace woff2 {
+
+inline size_t StoreU32(uint8_t* dst, size_t offset, uint32_t x) {
+ dst[offset] = x >> 24;
+ dst[offset + 1] = x >> 16;
+ dst[offset + 2] = x >> 8;
+ dst[offset + 3] = x;
+ return offset + 4;
+}
+
+inline size_t Store16(uint8_t* dst, size_t offset, int x) {
+#if (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__))
+ *reinterpret_cast<uint16_t*>(dst + offset) =
+ ((x & 0xFF) << 8) | ((x & 0xFF00) >> 8);
+#elif (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__))
+ *reinterpret_cast<uint16_t*>(dst + offset) = static_cast<uint16_t>(x);
+#else
+ dst[offset] = x >> 8;
+ dst[offset + 1] = x;
+#endif
+ return offset + 2;
+}
+
+inline void StoreU32(uint32_t val, size_t* offset, uint8_t* dst) {
+ dst[(*offset)++] = val >> 24;
+ dst[(*offset)++] = val >> 16;
+ dst[(*offset)++] = val >> 8;
+ dst[(*offset)++] = val;
+}
+
+inline void Store16(int val, size_t* offset, uint8_t* dst) {
+#if (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__))
+ *reinterpret_cast<uint16_t*>(dst + *offset) =
+ ((val & 0xFF) << 8) | ((val & 0xFF00) >> 8);
+ *offset += 2;
+#elif (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__))
+ *reinterpret_cast<uint16_t*>(dst + *offset) = static_cast<uint16_t>(val);
+ *offset += 2;
+#else
+ dst[(*offset)++] = val >> 8;
+ dst[(*offset)++] = val;
+#endif
+}
+
+inline void StoreBytes(const uint8_t* data, size_t len,
+ size_t* offset, uint8_t* dst) {
+ memcpy(&dst[*offset], data, len);
+ *offset += len;
+}
+
+} // namespace woff2
+
+#endif // WOFF2_STORE_BYTES_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/table_tags.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/table_tags.cc
new file mode 100644
index 00000000000..0071e00b00c
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/table_tags.cc
@@ -0,0 +1,90 @@
+// Copyright 2014 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Font table tags
+
+#include "./table_tags.h"
+
+namespace woff2 {
+
+// Note that the byte order is big-endian, not the same as ots.cc
+#define TAG(a, b, c, d) ((a << 24) | (b << 16) | (c << 8) | d)
+
+const uint32_t kKnownTags[63] = {
+ TAG('c', 'm', 'a', 'p'), // 0
+ TAG('h', 'e', 'a', 'd'), // 1
+ TAG('h', 'h', 'e', 'a'), // 2
+ TAG('h', 'm', 't', 'x'), // 3
+ TAG('m', 'a', 'x', 'p'), // 4
+ TAG('n', 'a', 'm', 'e'), // 5
+ TAG('O', 'S', '/', '2'), // 6
+ TAG('p', 'o', 's', 't'), // 7
+ TAG('c', 'v', 't', ' '), // 8
+ TAG('f', 'p', 'g', 'm'), // 9
+ TAG('g', 'l', 'y', 'f'), // 10
+ TAG('l', 'o', 'c', 'a'), // 11
+ TAG('p', 'r', 'e', 'p'), // 12
+ TAG('C', 'F', 'F', ' '), // 13
+ TAG('V', 'O', 'R', 'G'), // 14
+ TAG('E', 'B', 'D', 'T'), // 15
+ TAG('E', 'B', 'L', 'C'), // 16
+ TAG('g', 'a', 's', 'p'), // 17
+ TAG('h', 'd', 'm', 'x'), // 18
+ TAG('k', 'e', 'r', 'n'), // 19
+ TAG('L', 'T', 'S', 'H'), // 20
+ TAG('P', 'C', 'L', 'T'), // 21
+ TAG('V', 'D', 'M', 'X'), // 22
+ TAG('v', 'h', 'e', 'a'), // 23
+ TAG('v', 'm', 't', 'x'), // 24
+ TAG('B', 'A', 'S', 'E'), // 25
+ TAG('G', 'D', 'E', 'F'), // 26
+ TAG('G', 'P', 'O', 'S'), // 27
+ TAG('G', 'S', 'U', 'B'), // 28
+ TAG('E', 'B', 'S', 'C'), // 29
+ TAG('J', 'S', 'T', 'F'), // 30
+ TAG('M', 'A', 'T', 'H'), // 31
+ TAG('C', 'B', 'D', 'T'), // 32
+ TAG('C', 'B', 'L', 'C'), // 33
+ TAG('C', 'O', 'L', 'R'), // 34
+ TAG('C', 'P', 'A', 'L'), // 35
+ TAG('S', 'V', 'G', ' '), // 36
+ TAG('s', 'b', 'i', 'x'), // 37
+ TAG('a', 'c', 'n', 't'), // 38
+ TAG('a', 'v', 'a', 'r'), // 39
+ TAG('b', 'd', 'a', 't'), // 40
+ TAG('b', 'l', 'o', 'c'), // 41
+ TAG('b', 's', 'l', 'n'), // 42
+ TAG('c', 'v', 'a', 'r'), // 43
+ TAG('f', 'd', 's', 'c'), // 44
+ TAG('f', 'e', 'a', 't'), // 45
+ TAG('f', 'm', 't', 'x'), // 46
+ TAG('f', 'v', 'a', 'r'), // 47
+ TAG('g', 'v', 'a', 'r'), // 48
+ TAG('h', 's', 't', 'y'), // 49
+ TAG('j', 'u', 's', 't'), // 50
+ TAG('l', 'c', 'a', 'r'), // 51
+ TAG('m', 'o', 'r', 't'), // 52
+ TAG('m', 'o', 'r', 'x'), // 53
+ TAG('o', 'p', 'b', 'd'), // 54
+ TAG('p', 'r', 'o', 'p'), // 55
+ TAG('t', 'r', 'a', 'k'), // 56
+ TAG('Z', 'a', 'p', 'f'), // 57
+ TAG('S', 'i', 'l', 'f'), // 58
+ TAG('G', 'l', 'a', 't'), // 59
+ TAG('G', 'l', 'o', 'c'), // 60
+ TAG('F', 'e', 'a', 't'), // 61
+ TAG('S', 'i', 'l', 'l'), // 62
+};
+
+} // namespace woff2
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/table_tags.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/table_tags.h
new file mode 100644
index 00000000000..daa5d9215de
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/table_tags.h
@@ -0,0 +1,38 @@
+// Copyright 2014 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Font table tags
+
+#ifndef WOFF2_TABLE_TAGS_H_
+#define WOFF2_TABLE_TAGS_H_
+
+#include <inttypes.h>
+
+namespace woff2 {
+
+// Tags of popular tables.
+static const uint32_t kGlyfTableTag = 0x676c7966;
+static const uint32_t kHeadTableTag = 0x68656164;
+static const uint32_t kLocaTableTag = 0x6c6f6361;
+static const uint32_t kDsigTableTag = 0x44534947;
+static const uint32_t kCffTableTag = 0x43464620;
+static const uint32_t kHmtxTableTag = 0x686d7478;
+static const uint32_t kHheaTableTag = 0x68686561;
+static const uint32_t kMaxpTableTag = 0x6d617870;
+
+extern const uint32_t kKnownTags[];
+
+} // namespace woff2
+
+#endif // WOFF2_TABLE_TAGS_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/transform.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/transform.cc
new file mode 100644
index 00000000000..2ad8b163c3c
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/transform.cc
@@ -0,0 +1,420 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Library for preprocessing fonts as part of the WOFF 2.0 conversion.
+
+#include "./transform.h"
+
+#include <complex> // for std::abs
+
+#include "./buffer.h"
+#include "./font.h"
+#include "./glyph.h"
+#include "./table_tags.h"
+#include "./variable_length.h"
+
+namespace woff2 {
+
+namespace {
+
+const int FLAG_ARG_1_AND_2_ARE_WORDS = 1 << 0;
+const int FLAG_WE_HAVE_INSTRUCTIONS = 1 << 8;
+
+void WriteBytes(std::vector<uint8_t>* out, const uint8_t* data, size_t len) {
+ if (len == 0) return;
+ size_t offset = out->size();
+ out->resize(offset + len);
+ memcpy(&(*out)[offset], data, len);
+}
+
+void WriteBytes(std::vector<uint8_t>* out, const std::vector<uint8_t>& in) {
+ for (size_t i = 0; i < in.size(); ++i) {
+ out->push_back(in[i]);
+ }
+}
+
+void WriteUShort(std::vector<uint8_t>* out, int value) {
+ out->push_back(value >> 8);
+ out->push_back(value & 255);
+}
+
+void WriteLong(std::vector<uint8_t>* out, int value) {
+ out->push_back((value >> 24) & 255);
+ out->push_back((value >> 16) & 255);
+ out->push_back((value >> 8) & 255);
+ out->push_back(value & 255);
+}
+
+// Glyf table preprocessing, based on
+// GlyfEncoder.java
+class GlyfEncoder {
+ public:
+ explicit GlyfEncoder(int num_glyphs)
+ : n_glyphs_(num_glyphs) {
+ bbox_bitmap_.resize(((num_glyphs + 31) >> 5) << 2);
+ }
+
+ bool Encode(int glyph_id, const Glyph& glyph) {
+ if (glyph.composite_data_size > 0) {
+ WriteCompositeGlyph(glyph_id, glyph);
+ } else if (glyph.contours.size() > 0) {
+ WriteSimpleGlyph(glyph_id, glyph);
+ } else {
+ WriteUShort(&n_contour_stream_, 0);
+ }
+ return true;
+ }
+
+ void GetTransformedGlyfBytes(std::vector<uint8_t>* result) {
+ WriteLong(result, 0); // version
+ WriteUShort(result, n_glyphs_);
+ WriteUShort(result, 0); // index_format, will be set later
+ WriteLong(result, n_contour_stream_.size());
+ WriteLong(result, n_points_stream_.size());
+ WriteLong(result, flag_byte_stream_.size());
+ WriteLong(result, glyph_stream_.size());
+ WriteLong(result, composite_stream_.size());
+ WriteLong(result, bbox_bitmap_.size() + bbox_stream_.size());
+ WriteLong(result, instruction_stream_.size());
+ WriteBytes(result, n_contour_stream_);
+ WriteBytes(result, n_points_stream_);
+ WriteBytes(result, flag_byte_stream_);
+ WriteBytes(result, glyph_stream_);
+ WriteBytes(result, composite_stream_);
+ WriteBytes(result, bbox_bitmap_);
+ WriteBytes(result, bbox_stream_);
+ WriteBytes(result, instruction_stream_);
+ }
+
+ private:
+ void WriteInstructions(const Glyph& glyph) {
+ Write255UShort(&glyph_stream_, glyph.instructions_size);
+ WriteBytes(&instruction_stream_,
+ glyph.instructions_data, glyph.instructions_size);
+ }
+
+ bool ShouldWriteSimpleGlyphBbox(const Glyph& glyph) {
+ if (glyph.contours.empty() || glyph.contours[0].empty()) {
+ return glyph.x_min || glyph.y_min || glyph.x_max || glyph.y_max;
+ }
+
+ int16_t x_min = glyph.contours[0][0].x;
+ int16_t y_min = glyph.contours[0][0].y;
+ int16_t x_max = x_min;
+ int16_t y_max = y_min;
+ for (const auto& contour : glyph.contours) {
+ for (const auto& point : contour) {
+ if (point.x < x_min) x_min = point.x;
+ if (point.x > x_max) x_max = point.x;
+ if (point.y < y_min) y_min = point.y;
+ if (point.y > y_max) y_max = point.y;
+ }
+ }
+
+ if (glyph.x_min != x_min)
+ return true;
+ if (glyph.y_min != y_min)
+ return true;
+ if (glyph.x_max != x_max)
+ return true;
+ if (glyph.y_max != y_max)
+ return true;
+
+ return false;
+ }
+
+ void WriteSimpleGlyph(int glyph_id, const Glyph& glyph) {
+ int num_contours = glyph.contours.size();
+ WriteUShort(&n_contour_stream_, num_contours);
+ if (ShouldWriteSimpleGlyphBbox(glyph)) {
+ WriteBbox(glyph_id, glyph);
+ }
+ for (int i = 0; i < num_contours; i++) {
+ Write255UShort(&n_points_stream_, glyph.contours[i].size());
+ }
+ int lastX = 0;
+ int lastY = 0;
+ for (int i = 0; i < num_contours; i++) {
+ int num_points = glyph.contours[i].size();
+ for (int j = 0; j < num_points; j++) {
+ int x = glyph.contours[i][j].x;
+ int y = glyph.contours[i][j].y;
+ int dx = x - lastX;
+ int dy = y - lastY;
+ WriteTriplet(glyph.contours[i][j].on_curve, dx, dy);
+ lastX = x;
+ lastY = y;
+ }
+ }
+ if (num_contours > 0) {
+ WriteInstructions(glyph);
+ }
+ }
+
+ void WriteCompositeGlyph(int glyph_id, const Glyph& glyph) {
+ WriteUShort(&n_contour_stream_, -1);
+ WriteBbox(glyph_id, glyph);
+ WriteBytes(&composite_stream_,
+ glyph.composite_data,
+ glyph.composite_data_size);
+ if (glyph.have_instructions) {
+ WriteInstructions(glyph);
+ }
+ }
+
+ void WriteBbox(int glyph_id, const Glyph& glyph) {
+ bbox_bitmap_[glyph_id >> 3] |= 0x80 >> (glyph_id & 7);
+ WriteUShort(&bbox_stream_, glyph.x_min);
+ WriteUShort(&bbox_stream_, glyph.y_min);
+ WriteUShort(&bbox_stream_, glyph.x_max);
+ WriteUShort(&bbox_stream_, glyph.y_max);
+ }
+
+ void WriteTriplet(bool on_curve, int x, int y) {
+ int abs_x = std::abs(x);
+ int abs_y = std::abs(y);
+ int on_curve_bit = on_curve ? 0 : 128;
+ int x_sign_bit = (x < 0) ? 0 : 1;
+ int y_sign_bit = (y < 0) ? 0 : 1;
+ int xy_sign_bits = x_sign_bit + 2 * y_sign_bit;
+ if (x == 0 && abs_y < 1280) {
+ flag_byte_stream_.push_back(on_curve_bit +
+ ((abs_y & 0xf00) >> 7) + y_sign_bit);
+ glyph_stream_.push_back(abs_y & 0xff);
+ } else if (y == 0 && abs_x < 1280) {
+ flag_byte_stream_.push_back(on_curve_bit + 10 +
+ ((abs_x & 0xf00) >> 7) + x_sign_bit);
+ glyph_stream_.push_back(abs_x & 0xff);
+ } else if (abs_x < 65 && abs_y < 65) {
+ flag_byte_stream_.push_back(on_curve_bit + 20 +
+ ((abs_x - 1) & 0x30) +
+ (((abs_y - 1) & 0x30) >> 2) +
+ xy_sign_bits);
+ glyph_stream_.push_back((((abs_x - 1) & 0xf) << 4) | ((abs_y - 1) & 0xf));
+ } else if (abs_x < 769 && abs_y < 769) {
+ flag_byte_stream_.push_back(on_curve_bit + 84 +
+ 12 * (((abs_x - 1) & 0x300) >> 8) +
+ (((abs_y - 1) & 0x300) >> 6) + xy_sign_bits);
+ glyph_stream_.push_back((abs_x - 1) & 0xff);
+ glyph_stream_.push_back((abs_y - 1) & 0xff);
+ } else if (abs_x < 4096 && abs_y < 4096) {
+ flag_byte_stream_.push_back(on_curve_bit + 120 + xy_sign_bits);
+ glyph_stream_.push_back(abs_x >> 4);
+ glyph_stream_.push_back(((abs_x & 0xf) << 4) | (abs_y >> 8));
+ glyph_stream_.push_back(abs_y & 0xff);
+ } else {
+ flag_byte_stream_.push_back(on_curve_bit + 124 + xy_sign_bits);
+ glyph_stream_.push_back(abs_x >> 8);
+ glyph_stream_.push_back(abs_x & 0xff);
+ glyph_stream_.push_back(abs_y >> 8);
+ glyph_stream_.push_back(abs_y & 0xff);
+ }
+ }
+
+ std::vector<uint8_t> n_contour_stream_;
+ std::vector<uint8_t> n_points_stream_;
+ std::vector<uint8_t> flag_byte_stream_;
+ std::vector<uint8_t> composite_stream_;
+ std::vector<uint8_t> bbox_bitmap_;
+ std::vector<uint8_t> bbox_stream_;
+ std::vector<uint8_t> glyph_stream_;
+ std::vector<uint8_t> instruction_stream_;
+ int n_glyphs_;
+};
+
+} // namespace
+
+bool TransformGlyfAndLocaTables(Font* font) {
+ // no transform for CFF
+ const Font::Table* glyf_table = font->FindTable(kGlyfTableTag);
+ const Font::Table* loca_table = font->FindTable(kLocaTableTag);
+
+ // If you don't have glyf/loca this transform isn't very interesting
+ if (loca_table == NULL && glyf_table == NULL) {
+ return true;
+ }
+ // It would be best if you didn't have just one of glyf/loca
+ if ((glyf_table == NULL) != (loca_table == NULL)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ // Must share neither or both loca & glyf
+ if (loca_table->IsReused() != glyf_table->IsReused()) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if (loca_table->IsReused()) {
+ return true;
+ }
+
+ Font::Table* transformed_glyf = &font->tables[kGlyfTableTag ^ 0x80808080];
+ Font::Table* transformed_loca = &font->tables[kLocaTableTag ^ 0x80808080];
+
+ int num_glyphs = NumGlyphs(*font);
+ GlyfEncoder encoder(num_glyphs);
+ for (int i = 0; i < num_glyphs; ++i) {
+ Glyph glyph;
+ const uint8_t* glyph_data;
+ size_t glyph_size;
+ if (!GetGlyphData(*font, i, &glyph_data, &glyph_size) ||
+ (glyph_size > 0 && !ReadGlyph(glyph_data, glyph_size, &glyph))) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ encoder.Encode(i, glyph);
+ }
+ encoder.GetTransformedGlyfBytes(&transformed_glyf->buffer);
+
+ const Font::Table* head_table = font->FindTable(kHeadTableTag);
+ if (head_table == NULL || head_table->length < 52) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ transformed_glyf->buffer[7] = head_table->data[51]; // index_format
+
+ transformed_glyf->tag = kGlyfTableTag ^ 0x80808080;
+ transformed_glyf->length = transformed_glyf->buffer.size();
+ transformed_glyf->data = transformed_glyf->buffer.data();
+
+ transformed_loca->tag = kLocaTableTag ^ 0x80808080;
+ transformed_loca->length = 0;
+ transformed_loca->data = NULL;
+
+ return true;
+}
+
+// See https://www.microsoft.com/typography/otspec/hmtx.htm
+// See WOFF2 spec, 5.4. Transformed hmtx table format
+bool TransformHmtxTable(Font* font) {
+ const Font::Table* glyf_table = font->FindTable(kGlyfTableTag);
+ const Font::Table* hmtx_table = font->FindTable(kHmtxTableTag);
+ const Font::Table* hhea_table = font->FindTable(kHheaTableTag);
+
+ // If you don't have hmtx or a glyf not much is going to happen here
+ if (hmtx_table == NULL || glyf_table == NULL) {
+ return true;
+ }
+
+ // hmtx without hhea doesn't make sense
+ if (hhea_table == NULL) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ // Skip 34 to reach 'hhea' numberOfHMetrics
+ Buffer hhea_buf(hhea_table->data, hhea_table->length);
+ uint16_t num_hmetrics;
+ if (!hhea_buf.Skip(34) || !hhea_buf.ReadU16(&num_hmetrics)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ // Must have at least one hMetric
+ if (num_hmetrics < 1) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ int num_glyphs = NumGlyphs(*font);
+
+ // Most fonts can be transformed; assume it's a go until proven otherwise
+ std::vector<uint16_t> advance_widths;
+ std::vector<int16_t> proportional_lsbs;
+ std::vector<int16_t> monospace_lsbs;
+
+ bool remove_proportional_lsb = true;
+ bool remove_monospace_lsb = (num_glyphs - num_hmetrics) > 0;
+
+ Buffer hmtx_buf(hmtx_table->data, hmtx_table->length);
+ for (int i = 0; i < num_glyphs; i++) {
+ Glyph glyph;
+ const uint8_t* glyph_data;
+ size_t glyph_size;
+ if (!GetGlyphData(*font, i, &glyph_data, &glyph_size) ||
+ (glyph_size > 0 && !ReadGlyph(glyph_data, glyph_size, &glyph))) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ uint16_t advance_width = 0;
+ int16_t lsb = 0;
+
+ if (i < num_hmetrics) {
+ // [0, num_hmetrics) are proportional hMetrics
+ if (!hmtx_buf.ReadU16(&advance_width)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ if (!hmtx_buf.ReadS16(&lsb)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ if (glyph_size > 0 && glyph.x_min != lsb) {
+ remove_proportional_lsb = false;
+ }
+
+ advance_widths.push_back(advance_width);
+ proportional_lsbs.push_back(lsb);
+ } else {
+ // [num_hmetrics, num_glyphs) are monospace leftSideBearing's
+ if (!hmtx_buf.ReadS16(&lsb)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if (glyph_size > 0 && glyph.x_min != lsb) {
+ remove_monospace_lsb = false;
+ }
+ monospace_lsbs.push_back(lsb);
+ }
+
+ // If we know we can't optimize, bail out completely
+ if (!remove_proportional_lsb && !remove_monospace_lsb) {
+ return true;
+ }
+ }
+
+ Font::Table* transformed_hmtx = &font->tables[kHmtxTableTag ^ 0x80808080];
+
+ uint8_t flags = 0;
+ size_t transformed_size = 1 + 2 * advance_widths.size();
+ if (remove_proportional_lsb) {
+ flags |= 1;
+ } else {
+ transformed_size += 2 * proportional_lsbs.size();
+ }
+ if (remove_monospace_lsb) {
+ flags |= 1 << 1;
+ } else {
+ transformed_size += 2 * monospace_lsbs.size();
+ }
+
+ transformed_hmtx->buffer.reserve(transformed_size);
+ std::vector<uint8_t>* out = &transformed_hmtx->buffer;
+ WriteBytes(out, &flags, 1);
+ for (uint16_t advance_width : advance_widths) {
+ WriteUShort(out, advance_width);
+ }
+
+ if (!remove_proportional_lsb) {
+ for (int16_t lsb : proportional_lsbs) {
+ WriteUShort(out, lsb);
+ }
+ }
+ if (!remove_monospace_lsb) {
+ for (int16_t lsb : monospace_lsbs) {
+ WriteUShort(out, lsb);
+ }
+ }
+
+ transformed_hmtx->tag = kHmtxTableTag ^ 0x80808080;
+ transformed_hmtx->flag_byte = 1 << 6;
+ transformed_hmtx->length = transformed_hmtx->buffer.size();
+ transformed_hmtx->data = transformed_hmtx->buffer.data();
+
+
+ return true;
+}
+
+} // namespace woff2
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/transform.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/transform.h
new file mode 100644
index 00000000000..e9d1b0d3dc4
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/transform.h
@@ -0,0 +1,34 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Library for preprocessing fonts as part of the WOFF 2.0 conversion.
+
+#ifndef WOFF2_TRANSFORM_H_
+#define WOFF2_TRANSFORM_H_
+
+#include "./font.h"
+
+namespace woff2 {
+
+// Adds the transformed versions of the glyf and loca tables to the font. The
+// transformed loca table has zero length. The tag of the transformed tables is
+// derived from the original tag by flipping the MSBs of every byte.
+bool TransformGlyfAndLocaTables(Font* font);
+
+// Apply transformation to hmtx table if applicable for this font.
+bool TransformHmtxTable(Font* font);
+
+} // namespace woff2
+
+#endif // WOFF2_TRANSFORM_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/variable_length.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/variable_length.cc
new file mode 100644
index 00000000000..944a17f2e28
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/variable_length.cc
@@ -0,0 +1,137 @@
+// Copyright 2015 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Helper functions for woff2 variable length types: 255UInt16 and UIntBase128
+
+#include "./variable_length.h"
+
+namespace woff2 {
+
+size_t Size255UShort(uint16_t value) {
+ size_t result = 3;
+ if (value < 253) {
+ result = 1;
+ } else if (value < 762) {
+ result = 2;
+ } else {
+ result = 3;
+ }
+ return result;
+}
+
+void Write255UShort(std::vector<uint8_t>* out, int value) {
+ if (value < 253) {
+ out->push_back(value);
+ } else if (value < 506) {
+ out->push_back(255);
+ out->push_back(value - 253);
+ } else if (value < 762) {
+ out->push_back(254);
+ out->push_back(value - 506);
+ } else {
+ out->push_back(253);
+ out->push_back(value >> 8);
+ out->push_back(value & 0xff);
+ }
+}
+
+void Store255UShort(int val, size_t* offset, uint8_t* dst) {
+ std::vector<uint8_t> packed;
+ Write255UShort(&packed, val);
+ for (uint8_t val : packed) {
+ dst[(*offset)++] = val;
+ }
+}
+
+// Based on section 6.1.1 of MicroType Express draft spec
+bool Read255UShort(Buffer* buf, unsigned int* value) {
+ static const int kWordCode = 253;
+ static const int kOneMoreByteCode2 = 254;
+ static const int kOneMoreByteCode1 = 255;
+ static const int kLowestUCode = 253;
+ uint8_t code = 0;
+ if (!buf->ReadU8(&code)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ if (code == kWordCode) {
+ uint16_t result = 0;
+ if (!buf->ReadU16(&result)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ *value = result;
+ return true;
+ } else if (code == kOneMoreByteCode1) {
+ uint8_t result = 0;
+ if (!buf->ReadU8(&result)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ *value = result + kLowestUCode;
+ return true;
+ } else if (code == kOneMoreByteCode2) {
+ uint8_t result = 0;
+ if (!buf->ReadU8(&result)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ *value = result + kLowestUCode * 2;
+ return true;
+ } else {
+ *value = code;
+ return true;
+ }
+}
+
+bool ReadBase128(Buffer* buf, uint32_t* value) {
+ uint32_t result = 0;
+ for (size_t i = 0; i < 5; ++i) {
+ uint8_t code = 0;
+ if (!buf->ReadU8(&code)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ // Leading zeros are invalid.
+ if (i == 0 && code == 0x80) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ // If any of the top seven bits are set then we're about to overflow.
+ if (result & 0xfe000000) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+ result = (result << 7) | (code & 0x7f);
+ if ((code & 0x80) == 0) {
+ *value = result;
+ return true;
+ }
+ }
+ // Make sure not to exceed the size bound
+ return FONT_COMPRESSION_FAILURE();
+}
+
+size_t Base128Size(size_t n) {
+ size_t size = 1;
+ for (; n >= 128; n >>= 7) ++size;
+ return size;
+}
+
+void StoreBase128(size_t len, size_t* offset, uint8_t* dst) {
+ size_t size = Base128Size(len);
+ for (size_t i = 0; i < size; ++i) {
+ int b = static_cast<int>((len >> (7 * (size - i - 1))) & 0x7f);
+ if (i < size - 1) {
+ b |= 0x80;
+ }
+ dst[(*offset)++] = b;
+ }
+}
+
+} // namespace woff2
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/variable_length.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/variable_length.h
new file mode 100644
index 00000000000..2816ae23a20
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/variable_length.h
@@ -0,0 +1,38 @@
+// Copyright 2015 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Helper functions for woff2 variable length types: 255UInt16 and UIntBase128
+
+#ifndef WOFF2_VARIABLE_LENGTH_H_
+#define WOFF2_VARIABLE_LENGTH_H_
+
+#include <inttypes.h>
+#include <vector>
+#include "./buffer.h"
+
+namespace woff2 {
+
+size_t Size255UShort(uint16_t value);
+bool Read255UShort(Buffer* buf, unsigned int* value);
+void Write255UShort(std::vector<uint8_t>* out, int value);
+void Store255UShort(int val, size_t* offset, uint8_t* dst);
+
+size_t Base128Size(size_t n);
+bool ReadBase128(Buffer* buf, uint32_t* value);
+void StoreBase128(size_t len, size_t* offset, uint8_t* dst);
+
+} // namespace woff2
+
+#endif // WOFF2_VARIABLE_LENGTH_H_
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_common.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_common.cc
new file mode 100644
index 00000000000..eba6a46e213
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_common.cc
@@ -0,0 +1,64 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Helpers common across multiple parts of woff2
+
+#include <algorithm>
+
+#include "./woff2_common.h"
+
+namespace woff2 {
+
+
+uint32_t ComputeULongSum(const uint8_t* buf, size_t size) {
+ uint32_t checksum = 0;
+ size_t aligned_size = size & ~3;
+ for (size_t i = 0; i < aligned_size; i += 4) {
+#if (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__))
+ uint32_t v = *reinterpret_cast<const uint32_t*>(buf + i);
+ checksum += (((v & 0xFF) << 24) | ((v & 0xFF00) << 8) |
+ ((v & 0xFF0000) >> 8) | ((v & 0xFF000000) >> 24));
+#elif (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__))
+ checksum += *reinterpret_cast<const uint32_t*>(buf + i);
+#else
+ checksum += (buf[i] << 24) | (buf[i + 1] << 16) |
+ (buf[i + 2] << 8) | buf[i + 3];
+#endif
+ }
+
+ // treat size not aligned on 4 as if it were padded to 4 with 0's
+ if (size != aligned_size) {
+ uint32_t v = 0;
+ for (size_t i = aligned_size; i < size; ++i) {
+ v |= buf[i] << (24 - 8 * (i & 3));
+ }
+ checksum += v;
+ }
+
+ return checksum;
+}
+
+size_t CollectionHeaderSize(uint32_t header_version, uint32_t num_fonts) {
+ size_t size = 0;
+ if (header_version == 0x00020000) {
+ size += 12; // ulDsig{Tag,Length,Offset}
+ }
+ if (header_version == 0x00010000 || header_version == 0x00020000) {
+ size += 12 // TTCTag, Version, numFonts
+ + 4 * num_fonts; // OffsetTable[numFonts]
+ }
+ return size;
+}
+
+} // namespace woff2
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_common.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_common.h
new file mode 100644
index 00000000000..a8c45af80e1
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_common.h
@@ -0,0 +1,72 @@
+// Copyright 2014 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Common definition for WOFF2 encoding/decoding
+
+#ifndef WOFF2_WOFF2_COMMON_H_
+#define WOFF2_WOFF2_COMMON_H_
+
+#include <stddef.h>
+#include <inttypes.h>
+
+#include <string>
+
+namespace woff2 {
+
+static const uint32_t kWoff2Signature = 0x774f4632; // "wOF2"
+
+// Leave the first byte open to store flag_byte
+const unsigned int kWoff2FlagsTransform = 1 << 8;
+
+// TrueType Collection ID string: 'ttcf'
+static const uint32_t kTtcFontFlavor = 0x74746366;
+
+static const size_t kSfntHeaderSize = 12;
+static const size_t kSfntEntrySize = 16;
+
+struct Point {
+ int x;
+ int y;
+ bool on_curve;
+};
+
+struct Table {
+ uint32_t tag;
+ uint32_t flags;
+ uint32_t src_offset;
+ uint32_t src_length;
+
+ uint32_t transform_length;
+
+ uint32_t dst_offset;
+ uint32_t dst_length;
+ const uint8_t* dst_data;
+
+ bool operator<(const Table& other) const {
+ return tag < other.tag;
+ }
+};
+
+
+// Size of the collection header. 0 if version indicates this isn't a
+// collection. Ref http://www.microsoft.com/typography/otspec/otff.htm,
+// True Type Collections
+size_t CollectionHeaderSize(uint32_t header_version, uint32_t num_fonts);
+
+// Compute checksum over size bytes of buf
+uint32_t ComputeULongSum(const uint8_t* buf, size_t size);
+
+} // namespace woff2
+
+#endif // WOFF2_WOFF2_COMMON_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_dec.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_dec.h
new file mode 100644
index 00000000000..98fec074d02
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_dec.h
@@ -0,0 +1,42 @@
+// Copyright 2014 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Library for converting WOFF2 format font files to their TTF versions.
+
+#ifndef WOFF2_WOFF2_DEC_H_
+#define WOFF2_WOFF2_DEC_H_
+
+#include <stddef.h>
+#include <inttypes.h>
+#include "./woff2_out.h"
+
+namespace woff2 {
+
+// Compute the size of the final uncompressed font, or 0 on error.
+size_t ComputeWOFF2FinalSize(const uint8_t *data, size_t length);
+
+// Decompresses the font into the target buffer. The result_length should
+// be the same as determined by ComputeFinalSize(). Returns true on successful
+// decompression.
+bool ConvertWOFF2ToTTF(uint8_t *result, size_t result_length,
+ const uint8_t *data, size_t length);
+
+// Decompresses the font into out. Returns true on success.
+// Works even if WOFF2Header totalSfntSize is wrong.
+bool ConvertWOFF2ToTTF(const uint8_t *data, size_t length,
+ WOFF2Out* out);
+
+} // namespace woff2
+
+#endif // WOFF2_WOFF2_DEC_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_enc.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_enc.cc
new file mode 100644
index 00000000000..d100ad51b73
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_enc.cc
@@ -0,0 +1,471 @@
+// Copyright 2014 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Library for converting TTF format font files to their WOFF2 versions.
+
+#include "./woff2_enc.h"
+
+#include <stdlib.h>
+#include <complex>
+#include <cstring>
+#include <limits>
+#include <string>
+#include <vector>
+
+#include "./compressor.h"
+#include "./buffer.h"
+#include "./font.h"
+#include "./normalize.h"
+#include "./round.h"
+#include "./store_bytes.h"
+#include "./table_tags.h"
+#include "./transform.h"
+#include "./variable_length.h"
+#include "./woff2_common.h"
+
+
+namespace woff2 {
+
+namespace {
+
+
+using std::string;
+using std::vector;
+
+
+const size_t kWoff2HeaderSize = 48;
+const size_t kWoff2EntrySize = 20;
+
+
+bool Compress(const uint8_t* data, const size_t len,
+ uint8_t* result, uint32_t* result_len,
+ brotli::BrotliParams::Mode mode, int quality) {
+ size_t compressed_len = *result_len;
+ brotli::BrotliParams params;
+ params.mode = mode;
+ params.quality = quality;
+ if (brotli::BrotliCompressBuffer(params, len, data, &compressed_len, result)
+ == 0) {
+ return false;
+ }
+ *result_len = compressed_len;
+ return true;
+}
+
+bool Woff2Compress(const uint8_t* data, const size_t len,
+ uint8_t* result, uint32_t* result_len,
+ int quality) {
+ return Compress(data, len, result, result_len,
+ brotli::BrotliParams::MODE_FONT, quality);
+}
+
+bool TextCompress(const uint8_t* data, const size_t len,
+ uint8_t* result, uint32_t* result_len,
+ int quality) {
+ return Compress(data, len, result, result_len,
+ brotli::BrotliParams::MODE_TEXT, quality);
+}
+
+int KnownTableIndex(uint32_t tag) {
+ for (int i = 0; i < 63; ++i) {
+ if (tag == kKnownTags[i]) return i;
+ }
+ return 63;
+}
+
+void StoreTableEntry(const Table& table, size_t* offset, uint8_t* dst) {
+ uint8_t flag_byte = (table.flags & 0xC0) | KnownTableIndex(table.tag);
+ dst[(*offset)++] = flag_byte;
+ // The index here is treated as a set of flag bytes because
+ // bits 6 and 7 of the byte are reserved for future use as flags.
+ // 0x3f or 63 means an arbitrary table tag.
+ if ((flag_byte & 0x3f) == 0x3f) {
+ StoreU32(table.tag, offset, dst);
+ }
+ StoreBase128(table.src_length, offset, dst);
+ if ((table.flags & kWoff2FlagsTransform) != 0) {
+ StoreBase128(table.transform_length, offset, dst);
+ }
+}
+
+size_t TableEntrySize(const Table& table) {
+ uint8_t flag_byte = KnownTableIndex(table.tag);
+ size_t size = ((flag_byte & 0x3f) != 0x3f) ? 1 : 5;
+ size += Base128Size(table.src_length);
+ if ((table.flags & kWoff2FlagsTransform) != 0) {
+ size += Base128Size(table.transform_length);
+ }
+ return size;
+}
+
+size_t ComputeWoff2Length(const FontCollection& font_collection,
+ const std::vector<Table>& tables,
+ std::map<uint32_t, uint16_t> index_by_offset,
+ size_t compressed_data_length,
+ size_t extended_metadata_length) {
+ size_t size = kWoff2HeaderSize;
+
+ for (const auto& table : tables) {
+ size += TableEntrySize(table);
+ }
+
+ // for collections only, collection tables
+ if (font_collection.flavor == kTtcFontFlavor) {
+ size += 4; // UInt32 Version of TTC Header
+ size += Size255UShort(font_collection.fonts.size()); // 255UInt16 numFonts
+
+ size += 4 * font_collection.fonts.size(); // UInt32 flavor for each
+
+ for (const auto& font : font_collection.fonts) {
+ size += Size255UShort(font.tables.size()); // 255UInt16 numTables
+ for (const auto& entry : font.tables) {
+ const Font::Table& table = entry.second;
+ // no collection entry for xform table
+ if (table.tag & 0x80808080) continue;
+
+ uint16_t table_index = index_by_offset[table.offset];
+ size += Size255UShort(table_index); // 255UInt16 index entry
+ }
+ }
+ }
+
+ // compressed data
+ size += compressed_data_length;
+ size = Round4(size);
+
+ size += extended_metadata_length;
+ return size;
+}
+
+size_t ComputeUncompressedLength(const Font& font) {
+ // sfnt header + offset table
+ size_t size = 12 + 16 * font.num_tables;
+ for (const auto& entry : font.tables) {
+ const Font::Table& table = entry.second;
+ if (table.tag & 0x80808080) continue; // xform tables don't stay
+ if (table.IsReused()) continue; // don't have to pay twice
+ size += Round4(table.length);
+ }
+ return size;
+}
+
+size_t ComputeUncompressedLength(const FontCollection& font_collection) {
+ if (font_collection.flavor != kTtcFontFlavor) {
+ return ComputeUncompressedLength(font_collection.fonts[0]);
+ }
+ size_t size = CollectionHeaderSize(font_collection.header_version,
+ font_collection.fonts.size());
+ for (const auto& font : font_collection.fonts) {
+ size += ComputeUncompressedLength(font);
+ }
+ return size;
+}
+
+size_t ComputeTotalTransformLength(const Font& font) {
+ size_t total = 0;
+ for (const auto& i : font.tables) {
+ const Font::Table& table = i.second;
+ if (table.IsReused()) {
+ continue;
+ }
+ if (table.tag & 0x80808080 || !font.FindTable(table.tag ^ 0x80808080)) {
+ // Count transformed tables and non-transformed tables that do not have
+ // transformed versions.
+ total += table.length;
+ }
+ }
+ return total;
+}
+
+} // namespace
+
+size_t MaxWOFF2CompressedSize(const uint8_t* data, size_t length) {
+ return MaxWOFF2CompressedSize(data, length, "");
+}
+
+size_t MaxWOFF2CompressedSize(const uint8_t* data, size_t length,
+ const string& extended_metadata) {
+ // Except for the header size, which is 32 bytes larger in woff2 format,
+ // all other parts should be smaller (table header in short format,
+ // transformations and compression). Just to be sure, we will give some
+ // headroom anyway.
+ return length + 1024 + extended_metadata.length();
+}
+
+uint32_t CompressedBufferSize(uint32_t original_size) {
+ return 1.2 * original_size + 10240;
+}
+
+bool TransformFontCollection(FontCollection* font_collection) {
+ for (auto& font : font_collection->fonts) {
+ if (!TransformGlyfAndLocaTables(&font)) {
+#ifdef FONT_COMPRESSION_BIN
+ fprintf(stderr, "glyf/loca transformation failed.\n");
+#endif
+ return FONT_COMPRESSION_FAILURE();
+ }
+ }
+
+ return true;
+}
+
+bool ConvertTTFToWOFF2(const uint8_t *data, size_t length,
+ uint8_t *result, size_t *result_length) {
+ WOFF2Params params;
+ return ConvertTTFToWOFF2(data, length, result, result_length,
+ params);
+}
+
+bool ConvertTTFToWOFF2(const uint8_t *data, size_t length,
+ uint8_t *result, size_t *result_length,
+ const WOFF2Params& params) {
+ FontCollection font_collection;
+ if (!ReadFontCollection(data, length, &font_collection)) {
+#ifdef FONT_COMPRESSION_BIN
+ fprintf(stderr, "Parsing of the input font failed.\n");
+#endif
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ if (!NormalizeFontCollection(&font_collection)) {
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+ if (params.allow_transforms && !TransformFontCollection(&font_collection)) {
+ return FONT_COMPRESSION_FAILURE();
+ } else {
+ // glyf/loca use 11 to flag "not transformed"
+ for (auto& font : font_collection.fonts) {
+ Font::Table* glyf_table = font.FindTable(kGlyfTableTag);
+ Font::Table* loca_table = font.FindTable(kLocaTableTag);
+ if (glyf_table) {
+ glyf_table->flag_byte |= 0xc0;
+ }
+ if (loca_table) {
+ loca_table->flag_byte |= 0xc0;
+ }
+ }
+ }
+
+ // Although the compressed size of each table in the final woff2 file won't
+ // be larger than its transform_length, we have to allocate a large enough
+ // buffer for the compressor, since the compressor can potentially increase
+ // the size. If the compressor overflows this, it should return false and
+ // then this function will also return false.
+
+ size_t total_transform_length = 0;
+ for (const auto& font : font_collection.fonts) {
+ total_transform_length += ComputeTotalTransformLength(font);
+ }
+ size_t compression_buffer_size = CompressedBufferSize(total_transform_length);
+ std::vector<uint8_t> compression_buf(compression_buffer_size);
+ uint32_t total_compressed_length = compression_buffer_size;
+
+ // Collect all transformed data into one place in output order.
+ std::vector<uint8_t> transform_buf(total_transform_length);
+ size_t transform_offset = 0;
+ for (const auto& font : font_collection.fonts) {
+ for (const auto tag : font.OutputOrderedTags()) {
+ const Font::Table& original = font.tables.at(tag);
+ if (original.IsReused()) continue;
+ if (tag & 0x80808080) continue;
+ const Font::Table* table_to_store = font.FindTable(tag ^ 0x80808080);
+ if (table_to_store == NULL) table_to_store = &original;
+
+ StoreBytes(table_to_store->data, table_to_store->length,
+ &transform_offset, &transform_buf[0]);
+ }
+ }
+
+ // Compress all transformed data in one stream.
+ if (!Woff2Compress(transform_buf.data(), total_transform_length,
+ &compression_buf[0],
+ &total_compressed_length,
+ params.brotli_quality)) {
+#ifdef FONT_COMPRESSION_BIN
+ fprintf(stderr, "Compression of combined table failed.\n");
+#endif
+ return FONT_COMPRESSION_FAILURE();
+ }
+
+#ifdef FONT_COMPRESSION_BIN
+ fprintf(stderr, "Compressed %zu to %u.\n", total_transform_length,
+ total_compressed_length);
+#endif
+
+ // Compress the extended metadata
+ // TODO(user): how does this apply to collections
+ uint32_t compressed_metadata_buf_length =
+ CompressedBufferSize(params.extended_metadata.length());
+ std::vector<uint8_t> compressed_metadata_buf(compressed_metadata_buf_length);
+
+ if (params.extended_metadata.length() > 0) {
+ if (!TextCompress((const uint8_t*)params.extended_metadata.data(),
+ params.extended_metadata.length(),
+ compressed_metadata_buf.data(),
+ &compressed_metadata_buf_length,
+ params.brotli_quality)) {
+#ifdef FONT_COMPRESSION_BIN
+ fprintf(stderr, "Compression of extended metadata failed.\n");
+#endif
+ return FONT_COMPRESSION_FAILURE();
+ }
+ } else {
+ compressed_metadata_buf_length = 0;
+ }
+
+ std::vector<Table> tables;
+ std::map<uint32_t, uint16_t> index_by_offset;
+
+ for (const auto& font : font_collection.fonts) {
+
+ for (const auto tag : font.OutputOrderedTags()) {
+ const Font::Table& src_table = font.tables.at(tag);
+ if (src_table.IsReused()) {
+ continue;
+ }
+
+ if (index_by_offset.find(src_table.offset) == index_by_offset.end()) {
+ index_by_offset[src_table.offset] = tables.size();
+ } else {
+ return false;
+ }
+
+ Table table;
+ table.tag = src_table.tag;
+ table.flags = src_table.flag_byte;
+ table.src_length = src_table.length;
+ table.transform_length = src_table.length;
+ const uint8_t* transformed_data = src_table.data;
+ const Font::Table* transformed_table =
+ font.FindTable(src_table.tag ^ 0x80808080);
+ if (transformed_table != NULL) {
+ table.flags = transformed_table->flag_byte;
+ table.flags |= kWoff2FlagsTransform;
+ table.transform_length = transformed_table->length;
+ transformed_data = transformed_table->data;
+
+ }
+ tables.push_back(table);
+ }
+ }
+
+ size_t woff2_length = ComputeWoff2Length(font_collection, tables,
+ index_by_offset, total_compressed_length, compressed_metadata_buf_length);
+ if (woff2_length > *result_length) {
+#ifdef FONT_COMPRESSION_BIN
+ fprintf(stderr, "Result allocation was too small (%zd vs %zd bytes).\n",
+ *result_length, woff2_length);
+#endif
+ return FONT_COMPRESSION_FAILURE();
+ }
+ *result_length = woff2_length;
+
+ size_t offset = 0;
+
+ // start of woff2 header (http://www.w3.org/TR/WOFF2/#woff20Header)
+ StoreU32(kWoff2Signature, &offset, result);
+ if (font_collection.flavor != kTtcFontFlavor) {
+ StoreU32(font_collection.fonts[0].flavor, &offset, result);
+ } else {
+ StoreU32(kTtcFontFlavor, &offset, result);
+ }
+ StoreU32(woff2_length, &offset, result);
+ Store16(tables.size(), &offset, result);
+ Store16(0, &offset, result); // reserved
+ // totalSfntSize
+ StoreU32(ComputeUncompressedLength(font_collection), &offset, result);
+ StoreU32(total_compressed_length, &offset, result); // totalCompressedSize
+
+ // Let's just all be v1.0
+ Store16(1, &offset, result); // majorVersion
+ Store16(0, &offset, result); // minorVersion
+ if (compressed_metadata_buf_length > 0) {
+ StoreU32(woff2_length - compressed_metadata_buf_length,
+ &offset, result); // metaOffset
+ StoreU32(compressed_metadata_buf_length, &offset, result); // metaLength
+ StoreU32(params.extended_metadata.length(),
+ &offset, result); // metaOrigLength
+ } else {
+ StoreU32(0, &offset, result); // metaOffset
+ StoreU32(0, &offset, result); // metaLength
+ StoreU32(0, &offset, result); // metaOrigLength
+ }
+ StoreU32(0, &offset, result); // privOffset
+ StoreU32(0, &offset, result); // privLength
+ // end of woff2 header
+
+ // table directory (http://www.w3.org/TR/WOFF2/#table_dir_format)
+ for (const auto& table : tables) {
+ StoreTableEntry(table, &offset, result);
+ }
+
+ // for collections only, collection table directory
+ if (font_collection.flavor == kTtcFontFlavor) {
+ StoreU32(font_collection.header_version, &offset, result);
+ Store255UShort(font_collection.fonts.size(), &offset, result);
+ for (const Font& font : font_collection.fonts) {
+
+ uint16_t num_tables = 0;
+ for (const auto& entry : font.tables) {
+ const Font::Table& table = entry.second;
+ if (table.tag & 0x80808080) continue; // don't write xform tables
+ num_tables++;
+ }
+ Store255UShort(num_tables, &offset, result);
+
+ StoreU32(font.flavor, &offset, result);
+ for (const auto& entry : font.tables) {
+ const Font::Table& table = entry.second;
+ if (table.tag & 0x80808080) continue; // don't write xform tables
+
+ // for reused tables, only the original has an updated offset
+ uint32_t table_offset =
+ table.IsReused() ? table.reuse_of->offset : table.offset;
+ uint32_t table_length =
+ table.IsReused() ? table.reuse_of->length : table.length;
+ if (index_by_offset.find(table_offset) == index_by_offset.end()) {
+#ifdef FONT_COMPRESSION_BIN
+ fprintf(stderr, "Missing table index for offset 0x%08x\n",
+ table_offset);
+#endif
+ return FONT_COMPRESSION_FAILURE();
+ }
+ uint16_t index = index_by_offset[table_offset];
+ Store255UShort(index, &offset, result);
+
+ }
+
+ }
+ }
+
+ // compressed data format (http://www.w3.org/TR/WOFF2/#table_format)
+
+ StoreBytes(&compression_buf[0], total_compressed_length, &offset, result);
+ offset = Round4(offset);
+
+ StoreBytes(compressed_metadata_buf.data(), compressed_metadata_buf_length,
+ &offset, result);
+
+ if (*result_length != offset) {
+#ifdef FONT_COMPRESSION_BIN
+ fprintf(stderr, "Mismatch between computed and actual length "
+ "(%zd vs %zd)\n", *result_length, offset);
+#endif
+ return FONT_COMPRESSION_FAILURE();
+ }
+ return true;
+}
+
+} // namespace woff2
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_enc.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_enc.h
new file mode 100644
index 00000000000..3ac8c3ab1bd
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_enc.h
@@ -0,0 +1,54 @@
+// Copyright 2014 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Library for converting WOFF2 format font files to their TTF versions.
+
+#ifndef WOFF2_WOFF2_ENC_H_
+#define WOFF2_WOFF2_ENC_H_
+
+#include <stddef.h>
+#include <inttypes.h>
+#include <string>
+
+using std::string;
+
+
+namespace woff2 {
+
+struct WOFF2Params {
+ WOFF2Params() : extended_metadata(""), brotli_quality(11),
+ allow_transforms(true) {}
+
+ string extended_metadata;
+ int brotli_quality;
+ bool allow_transforms;
+};
+
+// Returns an upper bound on the size of the compressed file.
+size_t MaxWOFF2CompressedSize(const uint8_t* data, size_t length);
+size_t MaxWOFF2CompressedSize(const uint8_t* data, size_t length,
+ const string& extended_metadata);
+
+// Compresses the font into the target buffer. *result_length should be at least
+// the value returned by MaxWOFF2CompressedSize(), upon return, it is set to the
+// actual compressed size. Returns true on successful compression.
+bool ConvertTTFToWOFF2(const uint8_t *data, size_t length,
+ uint8_t *result, size_t *result_length);
+bool ConvertTTFToWOFF2(const uint8_t *data, size_t length,
+ uint8_t *result, size_t *result_length,
+ const WOFF2Params& params);
+
+} // namespace woff2
+
+#endif // WOFF2_WOFF2_ENC_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_out.cc b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_out.cc
new file mode 100644
index 00000000000..8882306445b
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_out.cc
@@ -0,0 +1,73 @@
+// Copyright 2014 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Output buffer for WOFF2 decompression.
+
+#include "./woff2_out.h"
+
+namespace woff2 {
+
+WOFF2StringOut::WOFF2StringOut(string* buf)
+ : buf_(buf),
+ max_size_(kDefaultMaxSize),
+ offset_(0) {}
+
+bool WOFF2StringOut::Write(const void *buf, size_t n) {
+ return Write(buf, offset_, n);
+}
+
+bool WOFF2StringOut::Write(const void *buf, size_t offset, size_t n) {
+ if (offset > max_size_ || n > max_size_ - offset) {
+ return false;
+ }
+ if (offset == buf_->size()) {
+ buf_->append(static_cast<const char*>(buf), n);
+ } else {
+ if (offset + n > buf_->size()) {
+ buf_->append(offset + n - buf_->size(), 0);
+ }
+ buf_->replace(offset, n, static_cast<const char*>(buf), n);
+ }
+ offset_ = std::max(offset_, offset + n);
+
+ return true;
+}
+
+void WOFF2StringOut::SetMaxSize(size_t max_size) {
+ max_size_ = max_size;
+ if (offset_ > max_size_) {
+ offset_ = max_size_;
+ }
+}
+
+WOFF2MemoryOut::WOFF2MemoryOut(uint8_t* buf, size_t buf_size)
+ : buf_(buf),
+ buf_size_(buf_size),
+ offset_(0) {}
+
+bool WOFF2MemoryOut::Write(const void *buf, size_t n) {
+ return Write(buf, offset_, n);
+}
+
+bool WOFF2MemoryOut::Write(const void *buf, size_t offset, size_t n) {
+ if (offset > buf_size_ || n > buf_size_ - offset) {
+ return false;
+ }
+ std::memcpy(buf_ + offset, buf, n);
+ offset_ = std::max(offset_, offset + n);
+
+ return true;
+}
+
+} // namespace woff2
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_out.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_out.h
new file mode 100644
index 00000000000..c956afa0e2a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/woff2/src/woff2_out.h
@@ -0,0 +1,114 @@
+// Copyright 2016 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Output buffer for WOFF2 decompression.
+
+// Copyright 2016 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Output buffer for WOFF2 decompression.
+
+#ifndef WOFF2_WOFF2_OUT_H_
+#define WOFF2_WOFF2_OUT_H_
+
+#include <algorithm>
+#include <cstring>
+#include <memory>
+#include <string>
+#include "./port.h"
+
+namespace woff2 {
+
+// Suggested max size for output.
+const size_t kDefaultMaxSize = 30 * 1024 * 1024;
+
+using std::string;
+
+
+/**
+ * Output interface for the woff2 decoding.
+ *
+ * Writes to arbitrary offsets are supported to facilitate updating offset
+ * table and checksums after tables are ready. Reading the current size is
+ * supported so a 'loca' table can be built up while writing glyphs.
+ *
+ * By default limits size to kDefaultMaxSize.
+ */
+class WOFF2Out {
+ public:
+ virtual ~WOFF2Out(void) {}
+
+ // Append n bytes of data from buf.
+ // Return true if all written, false otherwise.
+ virtual bool Write(const void *buf, size_t n) = 0;
+
+ // Write n bytes of data from buf at offset.
+ // Return true if all written, false otherwise.
+ virtual bool Write(const void *buf, size_t offset, size_t n) = 0;
+
+ virtual size_t Size() = 0;
+};
+
+/**
+ * Expanding memory block for woff2 out. By default limited to kDefaultMaxSize.
+ */
+class WOFF2StringOut : public WOFF2Out {
+ public:
+ // Create a writer that writes its data to buf.
+ // buf->size() will grow to at most max_size
+ // buf may be sized (e.g. using EstimateWOFF2FinalSize) or empty.
+ explicit WOFF2StringOut(string* buf);
+
+ bool Write(const void *buf, size_t n) override;
+ bool Write(const void *buf, size_t offset, size_t n) override;
+ size_t Size() override { return offset_; }
+ size_t MaxSize() { return max_size_; }
+ void SetMaxSize(size_t max_size);
+ private:
+ string* buf_;
+ size_t max_size_;
+ size_t offset_;
+};
+
+/**
+ * Fixed memory block for woff2 out.
+ */
+class WOFF2MemoryOut : public WOFF2Out {
+ public:
+ // Create a writer that writes its data to buf.
+ WOFF2MemoryOut(uint8_t* buf, size_t buf_size);
+
+ bool Write(const void *buf, size_t n) override;
+ bool Write(const void *buf, size_t offset, size_t n) override;
+ size_t Size() override { return offset_; }
+ private:
+ uint8_t* buf_;
+ size_t buf_size_;
+ size_t offset_;
+};
+
+} // namespace woff2
+
+#endif // WOFF2_WOFF2_OUT_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/xxHash/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/Makefile.am
index df0a4c53238..df0a4c53238 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/xxHash/Makefile.am
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/Makefile.am
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/Makefile.in
new file mode 100644
index 00000000000..a131b725e87
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/Makefile.in
@@ -0,0 +1,572 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = libs/xxHash
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libxxhash_a_AR = $(AR) $(ARFLAGS)
+libxxhash_a_LIBADD =
+am_libxxhash_a_OBJECTS = xxhash.$(OBJEXT)
+libxxhash_a_OBJECTS = $(am_libxxhash_a_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libxxhash_a_SOURCES)
+DIST_SOURCES = $(libxxhash_a_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GCOV = @GCOV@
+GENHTML = @GENHTML@
+GREP = @GREP@
+HAVE_CXX11 = @HAVE_CXX11@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCOV = @LCOV@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ZLIB_CFLAGS = @ZLIB_CFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_LIBRARIES = libxxhash.a
+libxxhash_a_SOURCES = xxhash.c xxhash.h
+AM_CXXFLAGS = -Wall
+CLEANFILES = *.gcda *.gcno
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libs/xxHash/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu libs/xxHash/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+libxxhash.a: $(libxxhash_a_OBJECTS) $(libxxhash_a_DEPENDENCIES) $(EXTRA_libxxhash_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libxxhash.a
+ $(AM_V_AR)$(libxxhash_a_AR) libxxhash.a $(libxxhash_a_OBJECTS) $(libxxhash_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libxxhash.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xxhash.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am
+
+.PRECIOUS: Makefile
+
+
+xxhash.c: xxhash.h
+
+@CODE_COVERAGE_RULES@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/xxHash/xxhash.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.c
index 9238b159624..4546c54dbea 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/xxHash/xxhash.c
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.c
@@ -131,45 +131,37 @@ static void* XXH_memcpy(void* dest, const void* src, size_t size) { return memcp
* Basic Types
***************************************/
#ifndef MEM_MODULE
-# define MEM_MODULE
-# if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
+# if !defined (__VMS) && (defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) )
# include <stdint.h>
typedef uint8_t BYTE;
typedef uint16_t U16;
typedef uint32_t U32;
typedef int32_t S32;
- typedef uint64_t U64;
-# else
+# else
typedef unsigned char BYTE;
typedef unsigned short U16;
typedef unsigned int U32;
typedef signed int S32;
- typedef unsigned long long U64;
-# endif
+# endif
#endif
-
#if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==2))
/* Force direct memory access. Only works on CPU which support unaligned memory access in hardware */
static U32 XXH_read32(const void* memPtr) { return *(const U32*) memPtr; }
-static U64 XXH_read64(const void* memPtr) { return *(const U64*) memPtr; }
#elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==1))
/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */
/* currently only defined for gcc and icc */
-typedef union { U32 u32; U64 u64; } __attribute__((packed)) unalign;
-
+typedef union { U32 u32; } __attribute__((packed)) unalign;
static U32 XXH_read32(const void* ptr) { return ((const unalign*)ptr)->u32; }
-static U64 XXH_read64(const void* ptr) { return ((const unalign*)ptr)->u64; }
#else
/* portable and safe solution. Generally efficient.
* see : http://stackoverflow.com/a/32095106/646947
*/
-
static U32 XXH_read32(const void* memPtr)
{
U32 val;
@@ -177,13 +169,6 @@ static U32 XXH_read32(const void* memPtr)
return val;
}
-static U64 XXH_read64(const void* memPtr)
-{
- U64 val;
- memcpy(&val, memPtr, sizeof(val));
- return val;
-}
-
#endif /* XXH_FORCE_DIRECT_MEMORY_ACCESS */
@@ -203,10 +188,8 @@ static U64 XXH_read64(const void* memPtr)
#if defined(_MSC_VER) /* Visual Studio */
# define XXH_swap32 _byteswap_ulong
-# define XXH_swap64 _byteswap_uint64
#elif GCC_VERSION >= 403
# define XXH_swap32 __builtin_bswap32
-# define XXH_swap64 __builtin_bswap64
#else
static U32 XXH_swap32 (U32 x)
{
@@ -215,17 +198,6 @@ static U32 XXH_swap32 (U32 x)
((x >> 8) & 0x0000ff00 ) |
((x >> 24) & 0x000000ff );
}
-static U64 XXH_swap64 (U64 x)
-{
- return ((x << 56) & 0xff00000000000000ULL) |
- ((x << 40) & 0x00ff000000000000ULL) |
- ((x << 24) & 0x0000ff0000000000ULL) |
- ((x << 8) & 0x000000ff00000000ULL) |
- ((x >> 8) & 0x00000000ff000000ULL) |
- ((x >> 24) & 0x0000000000ff0000ULL) |
- ((x >> 40) & 0x000000000000ff00ULL) |
- ((x >> 56) & 0x00000000000000ffULL);
-}
#endif
@@ -264,67 +236,23 @@ static U32 XXH_readBE32(const void* ptr)
return XXH_CPU_LITTLE_ENDIAN ? XXH_swap32(XXH_read32(ptr)) : XXH_read32(ptr);
}
-FORCE_INLINE U64 XXH_readLE64_align(const void* ptr, XXH_endianess endian, XXH_alignment align)
-{
- if (align==XXH_unaligned)
- return endian==XXH_littleEndian ? XXH_read64(ptr) : XXH_swap64(XXH_read64(ptr));
- else
- return endian==XXH_littleEndian ? *(const U64*)ptr : XXH_swap64(*(const U64*)ptr);
-}
-
-FORCE_INLINE U64 XXH_readLE64(const void* ptr, XXH_endianess endian)
-{
- return XXH_readLE64_align(ptr, endian, XXH_unaligned);
-}
-
-static U64 XXH_readBE64(const void* ptr)
-{
- return XXH_CPU_LITTLE_ENDIAN ? XXH_swap64(XXH_read64(ptr)) : XXH_read64(ptr);
-}
-
/* *************************************
* Macros
***************************************/
#define XXH_STATIC_ASSERT(c) { enum { XXH_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */
+XXH_PUBLIC_API unsigned XXH_versionNumber (void) { return XXH_VERSION_NUMBER; }
-/* *************************************
-* Constants
-***************************************/
+/* *******************************************************************
+* 32-bits hash functions
+*********************************************************************/
static const U32 PRIME32_1 = 2654435761U;
static const U32 PRIME32_2 = 2246822519U;
static const U32 PRIME32_3 = 3266489917U;
static const U32 PRIME32_4 = 668265263U;
static const U32 PRIME32_5 = 374761393U;
-static const U64 PRIME64_1 = 11400714785074694791ULL;
-static const U64 PRIME64_2 = 14029467366897019727ULL;
-static const U64 PRIME64_3 = 1609587929392839161ULL;
-static const U64 PRIME64_4 = 9650029242287828579ULL;
-static const U64 PRIME64_5 = 2870177450012600261ULL;
-
-XXH_PUBLIC_API unsigned XXH_versionNumber (void) { return XXH_VERSION_NUMBER; }
-
-
-/* **************************
-* Utils
-****************************/
-XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* restrict dstState, const XXH32_state_t* restrict srcState)
-{
- memcpy(dstState, srcState, sizeof(*dstState));
-}
-
-XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* restrict dstState, const XXH64_state_t* restrict srcState)
-{
- memcpy(dstState, srcState, sizeof(*dstState));
-}
-
-
-/* ***************************
-* Simple Hash Functions
-*****************************/
-
static U32 XXH32_round(U32 seed, U32 input)
{
seed += input * PRIME32_2;
@@ -417,121 +345,8 @@ XXH_PUBLIC_API unsigned int XXH32 (const void* input, size_t len, unsigned int s
}
-static U64 XXH64_round(U64 acc, U64 input)
-{
- acc += input * PRIME64_2;
- acc = XXH_rotl64(acc, 31);
- acc *= PRIME64_1;
- return acc;
-}
-
-static U64 XXH64_mergeRound(U64 acc, U64 val)
-{
- val = XXH64_round(0, val);
- acc ^= val;
- acc = acc * PRIME64_1 + PRIME64_4;
- return acc;
-}
-
-FORCE_INLINE U64 XXH64_endian_align(const void* input, size_t len, U64 seed, XXH_endianess endian, XXH_alignment align)
-{
- const BYTE* p = (const BYTE*)input;
- const BYTE* const bEnd = p + len;
- U64 h64;
-#define XXH_get64bits(p) XXH_readLE64_align(p, endian, align)
-
-#ifdef XXH_ACCEPT_NULL_INPUT_POINTER
- if (p==NULL) {
- len=0;
- bEnd=p=(const BYTE*)(size_t)32;
- }
-#endif
- if (len>=32) {
- const BYTE* const limit = bEnd - 32;
- U64 v1 = seed + PRIME64_1 + PRIME64_2;
- U64 v2 = seed + PRIME64_2;
- U64 v3 = seed + 0;
- U64 v4 = seed - PRIME64_1;
-
- do {
- v1 = XXH64_round(v1, XXH_get64bits(p)); p+=8;
- v2 = XXH64_round(v2, XXH_get64bits(p)); p+=8;
- v3 = XXH64_round(v3, XXH_get64bits(p)); p+=8;
- v4 = XXH64_round(v4, XXH_get64bits(p)); p+=8;
- } while (p<=limit);
-
- h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
- h64 = XXH64_mergeRound(h64, v1);
- h64 = XXH64_mergeRound(h64, v2);
- h64 = XXH64_mergeRound(h64, v3);
- h64 = XXH64_mergeRound(h64, v4);
-
- } else {
- h64 = seed + PRIME64_5;
- }
-
- h64 += (U64) len;
-
- while (p+8<=bEnd) {
- U64 const k1 = XXH64_round(0, XXH_get64bits(p));
- h64 ^= k1;
- h64 = XXH_rotl64(h64,27) * PRIME64_1 + PRIME64_4;
- p+=8;
- }
-
- if (p+4<=bEnd) {
- h64 ^= (U64)(XXH_get32bits(p)) * PRIME64_1;
- h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3;
- p+=4;
- }
-
- while (p<bEnd) {
- h64 ^= (*p) * PRIME64_5;
- h64 = XXH_rotl64(h64, 11) * PRIME64_1;
- p++;
- }
-
- h64 ^= h64 >> 33;
- h64 *= PRIME64_2;
- h64 ^= h64 >> 29;
- h64 *= PRIME64_3;
- h64 ^= h64 >> 32;
-
- return h64;
-}
-
-
-XXH_PUBLIC_API unsigned long long XXH64 (const void* input, size_t len, unsigned long long seed)
-{
-#if 0
- /* Simple version, good for code maintenance, but unfortunately slow for small inputs */
- XXH64_CREATESTATE_STATIC(state);
- XXH64_reset(state, seed);
- XXH64_update(state, input, len);
- return XXH64_digest(state);
-#else
- XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
-
- if (XXH_FORCE_ALIGN_CHECK) {
- if ((((size_t)input) & 7)==0) { /* Input is aligned, let's leverage the speed advantage */
- if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
- return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned);
- else
- return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned);
- } }
-
- if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
- return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_unaligned);
- else
- return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned);
-#endif
-}
-
-
-/* **************************************************
-* Advanced Hash Functions
-****************************************************/
+/*====== Hash streaming ======*/
XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void)
{
@@ -543,24 +358,15 @@ XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr)
return XXH_OK;
}
-XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void)
-{
- return (XXH64_state_t*)XXH_malloc(sizeof(XXH64_state_t));
-}
-XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr)
+XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* restrict dstState, const XXH32_state_t* restrict srcState)
{
- XXH_free(statePtr);
- return XXH_OK;
+ memcpy(dstState, srcState, sizeof(*dstState));
}
-
-/*** Hash feed ***/
-
XXH_PUBLIC_API XXH_errorcode XXH32_reset(XXH32_state_t* statePtr, unsigned int seed)
{
XXH32_state_t state; /* using a local state to memcpy() in order to avoid strict-aliasing warnings */
- memset(&state, 0, sizeof(state));
- state.seed = seed;
+ memset(&state, 0, sizeof(state)-4); /* do not write into reserved, for future removal */
state.v1 = seed + PRIME32_1 + PRIME32_2;
state.v2 = seed + PRIME32_2;
state.v3 = seed + 0;
@@ -570,20 +376,6 @@ XXH_PUBLIC_API XXH_errorcode XXH32_reset(XXH32_state_t* statePtr, unsigned int s
}
-XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t* statePtr, unsigned long long seed)
-{
- XXH64_state_t state; /* using a local state to memcpy() in order to avoid strict-aliasing warnings */
- memset(&state, 0, sizeof(state));
- state.seed = seed;
- state.v1 = seed + PRIME64_1 + PRIME64_2;
- state.v2 = seed + PRIME64_2;
- state.v3 = seed + 0;
- state.v4 = seed - PRIME64_1;
- memcpy(statePtr, &state, sizeof(state));
- return XXH_OK;
-}
-
-
FORCE_INLINE XXH_errorcode XXH32_update_endian (XXH32_state_t* state, const void* input, size_t len, XXH_endianess endian)
{
const BYTE* p = (const BYTE*)input;
@@ -593,11 +385,12 @@ FORCE_INLINE XXH_errorcode XXH32_update_endian (XXH32_state_t* state, const void
if (input==NULL) return XXH_ERROR;
#endif
- state->total_len += len;
+ state->total_len_32 += (unsigned)len;
+ state->large_len |= (len>=16) | (state->total_len_32>=16);
if (state->memsize + len < 16) { /* fill in tmp buffer */
XXH_memcpy((BYTE*)(state->mem32) + state->memsize, input, len);
- state->memsize += (U32)len;
+ state->memsize += (unsigned)len;
return XXH_OK;
}
@@ -634,8 +427,8 @@ FORCE_INLINE XXH_errorcode XXH32_update_endian (XXH32_state_t* state, const void
}
if (p < bEnd) {
- XXH_memcpy(state->mem32, p, bEnd-p);
- state->memsize = (int)(bEnd-p);
+ XXH_memcpy(state->mem32, p, (size_t)(bEnd-p));
+ state->memsize = (unsigned)(bEnd-p);
}
return XXH_OK;
@@ -659,13 +452,13 @@ FORCE_INLINE U32 XXH32_digest_endian (const XXH32_state_t* state, XXH_endianess
const BYTE* const bEnd = (const BYTE*)(state->mem32) + state->memsize;
U32 h32;
- if (state->total_len >= 16) {
+ if (state->large_len) {
h32 = XXH_rotl32(state->v1, 1) + XXH_rotl32(state->v2, 7) + XXH_rotl32(state->v3, 12) + XXH_rotl32(state->v4, 18);
} else {
- h32 = state->seed + PRIME32_5;
+ h32 = state->v3 /* == seed */ + PRIME32_5;
}
- h32 += (U32) state->total_len;
+ h32 += state->total_len_32;
while (p+4<=bEnd) {
h32 += XXH_readLE32(p, endian) * PRIME32_3;
@@ -700,8 +493,258 @@ XXH_PUBLIC_API unsigned int XXH32_digest (const XXH32_state_t* state_in)
}
+/*====== Canonical representation ======*/
+
+/*! Default XXH result types are basic unsigned 32 and 64 bits.
+* The canonical representation follows human-readable write convention, aka big-endian (large digits first).
+* These functions allow transformation of hash result into and from its canonical format.
+* This way, hash values can be written into a file or buffer, and remain comparable across different systems and programs.
+*/
+
+XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash)
+{
+ XXH_STATIC_ASSERT(sizeof(XXH32_canonical_t) == sizeof(XXH32_hash_t));
+ if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap32(hash);
+ memcpy(dst, &hash, sizeof(*dst));
+}
+
+XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src)
+{
+ return XXH_readBE32(src);
+}
+
+
+#ifndef XXH_NO_LONG_LONG
+
+/* *******************************************************************
+* 64-bits hash functions
+*********************************************************************/
+
+/*====== Memory access ======*/
+
+#ifndef MEM_MODULE
+# define MEM_MODULE
+# if !defined (__VMS) && (defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) )
+# include <stdint.h>
+ typedef uint64_t U64;
+# else
+ typedef unsigned long long U64; /* if your compiler doesn't support unsigned long long, replace by another 64-bit type here. Note that xxhash.h will also need to be updated. */
+# endif
+#endif
+
+
+#if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==2))
+
+/* Force direct memory access. Only works on CPU which support unaligned memory access in hardware */
+static U64 XXH_read64(const void* memPtr) { return *(const U64*) memPtr; }
+
+#elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==1))
+
+/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */
+/* currently only defined for gcc and icc */
+typedef union { U32 u32; U64 u64; } __attribute__((packed)) unalign64;
+
+static U64 XXH_read64(const void* ptr) { return ((const unalign64*)ptr)->u64; }
+
+#else
+
+/* portable and safe solution. Generally efficient.
+ * see : http://stackoverflow.com/a/32095106/646947
+ */
+
+static U64 XXH_read64(const void* memPtr)
+{
+ U64 val;
+ memcpy(&val, memPtr, sizeof(val));
+ return val;
+}
+
+#endif /* XXH_FORCE_DIRECT_MEMORY_ACCESS */
+
+#if defined(_MSC_VER) /* Visual Studio */
+# define XXH_swap64 _byteswap_uint64
+#elif GCC_VERSION >= 403
+# define XXH_swap64 __builtin_bswap64
+#else
+static U64 XXH_swap64 (U64 x)
+{
+ return ((x << 56) & 0xff00000000000000ULL) |
+ ((x << 40) & 0x00ff000000000000ULL) |
+ ((x << 24) & 0x0000ff0000000000ULL) |
+ ((x << 8) & 0x000000ff00000000ULL) |
+ ((x >> 8) & 0x00000000ff000000ULL) |
+ ((x >> 24) & 0x0000000000ff0000ULL) |
+ ((x >> 40) & 0x000000000000ff00ULL) |
+ ((x >> 56) & 0x00000000000000ffULL);
+}
+#endif
+
+FORCE_INLINE U64 XXH_readLE64_align(const void* ptr, XXH_endianess endian, XXH_alignment align)
+{
+ if (align==XXH_unaligned)
+ return endian==XXH_littleEndian ? XXH_read64(ptr) : XXH_swap64(XXH_read64(ptr));
+ else
+ return endian==XXH_littleEndian ? *(const U64*)ptr : XXH_swap64(*(const U64*)ptr);
+}
-/* **** XXH64 **** */
+FORCE_INLINE U64 XXH_readLE64(const void* ptr, XXH_endianess endian)
+{
+ return XXH_readLE64_align(ptr, endian, XXH_unaligned);
+}
+
+static U64 XXH_readBE64(const void* ptr)
+{
+ return XXH_CPU_LITTLE_ENDIAN ? XXH_swap64(XXH_read64(ptr)) : XXH_read64(ptr);
+}
+
+
+/*====== xxh64 ======*/
+
+static const U64 PRIME64_1 = 11400714785074694791ULL;
+static const U64 PRIME64_2 = 14029467366897019727ULL;
+static const U64 PRIME64_3 = 1609587929392839161ULL;
+static const U64 PRIME64_4 = 9650029242287828579ULL;
+static const U64 PRIME64_5 = 2870177450012600261ULL;
+
+static U64 XXH64_round(U64 acc, U64 input)
+{
+ acc += input * PRIME64_2;
+ acc = XXH_rotl64(acc, 31);
+ acc *= PRIME64_1;
+ return acc;
+}
+
+static U64 XXH64_mergeRound(U64 acc, U64 val)
+{
+ val = XXH64_round(0, val);
+ acc ^= val;
+ acc = acc * PRIME64_1 + PRIME64_4;
+ return acc;
+}
+
+FORCE_INLINE U64 XXH64_endian_align(const void* input, size_t len, U64 seed, XXH_endianess endian, XXH_alignment align)
+{
+ const BYTE* p = (const BYTE*)input;
+ const BYTE* const bEnd = p + len;
+ U64 h64;
+#define XXH_get64bits(p) XXH_readLE64_align(p, endian, align)
+
+#ifdef XXH_ACCEPT_NULL_INPUT_POINTER
+ if (p==NULL) {
+ len=0;
+ bEnd=p=(const BYTE*)(size_t)32;
+ }
+#endif
+
+ if (len>=32) {
+ const BYTE* const limit = bEnd - 32;
+ U64 v1 = seed + PRIME64_1 + PRIME64_2;
+ U64 v2 = seed + PRIME64_2;
+ U64 v3 = seed + 0;
+ U64 v4 = seed - PRIME64_1;
+
+ do {
+ v1 = XXH64_round(v1, XXH_get64bits(p)); p+=8;
+ v2 = XXH64_round(v2, XXH_get64bits(p)); p+=8;
+ v3 = XXH64_round(v3, XXH_get64bits(p)); p+=8;
+ v4 = XXH64_round(v4, XXH_get64bits(p)); p+=8;
+ } while (p<=limit);
+
+ h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
+ h64 = XXH64_mergeRound(h64, v1);
+ h64 = XXH64_mergeRound(h64, v2);
+ h64 = XXH64_mergeRound(h64, v3);
+ h64 = XXH64_mergeRound(h64, v4);
+
+ } else {
+ h64 = seed + PRIME64_5;
+ }
+
+ h64 += (U64) len;
+
+ while (p+8<=bEnd) {
+ U64 const k1 = XXH64_round(0, XXH_get64bits(p));
+ h64 ^= k1;
+ h64 = XXH_rotl64(h64,27) * PRIME64_1 + PRIME64_4;
+ p+=8;
+ }
+
+ if (p+4<=bEnd) {
+ h64 ^= (U64)(XXH_get32bits(p)) * PRIME64_1;
+ h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3;
+ p+=4;
+ }
+
+ while (p<bEnd) {
+ h64 ^= (*p) * PRIME64_5;
+ h64 = XXH_rotl64(h64, 11) * PRIME64_1;
+ p++;
+ }
+
+ h64 ^= h64 >> 33;
+ h64 *= PRIME64_2;
+ h64 ^= h64 >> 29;
+ h64 *= PRIME64_3;
+ h64 ^= h64 >> 32;
+
+ return h64;
+}
+
+
+XXH_PUBLIC_API unsigned long long XXH64 (const void* input, size_t len, unsigned long long seed)
+{
+#if 0
+ /* Simple version, good for code maintenance, but unfortunately slow for small inputs */
+ XXH64_CREATESTATE_STATIC(state);
+ XXH64_reset(state, seed);
+ XXH64_update(state, input, len);
+ return XXH64_digest(state);
+#else
+ XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
+
+ if (XXH_FORCE_ALIGN_CHECK) {
+ if ((((size_t)input) & 7)==0) { /* Input is aligned, let's leverage the speed advantage */
+ if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+ return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned);
+ else
+ return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned);
+ } }
+
+ if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+ return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_unaligned);
+ else
+ return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned);
+#endif
+}
+
+/*====== Hash Streaming ======*/
+
+XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void)
+{
+ return (XXH64_state_t*)XXH_malloc(sizeof(XXH64_state_t));
+}
+XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr)
+{
+ XXH_free(statePtr);
+ return XXH_OK;
+}
+
+XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* restrict dstState, const XXH64_state_t* restrict srcState)
+{
+ memcpy(dstState, srcState, sizeof(*dstState));
+}
+
+XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t* statePtr, unsigned long long seed)
+{
+ XXH64_state_t state; /* using a local state to memcpy() in order to avoid strict-aliasing warnings */
+ memset(&state, 0, sizeof(state)-8); /* do not write into reserved, for future removal */
+ state.v1 = seed + PRIME64_1 + PRIME64_2;
+ state.v2 = seed + PRIME64_2;
+ state.v3 = seed + 0;
+ state.v4 = seed - PRIME64_1;
+ memcpy(statePtr, &state, sizeof(state));
+ return XXH_OK;
+}
FORCE_INLINE XXH_errorcode XXH64_update_endian (XXH64_state_t* state, const void* input, size_t len, XXH_endianess endian)
{
@@ -751,8 +794,8 @@ FORCE_INLINE XXH_errorcode XXH64_update_endian (XXH64_state_t* state, const void
}
if (p < bEnd) {
- XXH_memcpy(state->mem64, p, bEnd-p);
- state->memsize = (int)(bEnd-p);
+ XXH_memcpy(state->mem64, p, (size_t)(bEnd-p));
+ state->memsize = (unsigned)(bEnd-p);
}
return XXH_OK;
@@ -768,8 +811,6 @@ XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* state_in, const void*
return XXH64_update_endian(state_in, input, len, XXH_bigEndian);
}
-
-
FORCE_INLINE U64 XXH64_digest_endian (const XXH64_state_t* state, XXH_endianess endian)
{
const BYTE * p = (const BYTE*)state->mem64;
@@ -788,7 +829,7 @@ FORCE_INLINE U64 XXH64_digest_endian (const XXH64_state_t* state, XXH_endianess
h64 = XXH64_mergeRound(h64, v3);
h64 = XXH64_mergeRound(h64, v4);
} else {
- h64 = state->seed + PRIME64_5;
+ h64 = state->v3 + PRIME64_5;
}
h64 += (U64) state->total_len;
@@ -821,7 +862,6 @@ FORCE_INLINE U64 XXH64_digest_endian (const XXH64_state_t* state, XXH_endianess
return h64;
}
-
XXH_PUBLIC_API unsigned long long XXH64_digest (const XXH64_state_t* state_in)
{
XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
@@ -833,22 +873,7 @@ XXH_PUBLIC_API unsigned long long XXH64_digest (const XXH64_state_t* state_in)
}
-/* **************************
-* Canonical representation
-****************************/
-
-/*! Default XXH result types are basic unsigned 32 and 64 bits.
-* The canonical representation follows human-readable write convention, aka big-endian (large digits first).
-* These functions allow transformation of hash result into and from its canonical format.
-* This way, hash values can be written into a file or buffer, and remain comparable across different systems and programs.
-*/
-
-XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash)
-{
- XXH_STATIC_ASSERT(sizeof(XXH32_canonical_t) == sizeof(XXH32_hash_t));
- if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap32(hash);
- memcpy(dst, &hash, sizeof(*dst));
-}
+/*====== Canonical representation ======*/
XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash)
{
@@ -857,12 +882,9 @@ XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t
memcpy(dst, &hash, sizeof(*dst));
}
-XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src)
-{
- return XXH_readBE32(src);
-}
-
XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src)
{
return XXH_readBE64(src);
}
+
+#endif /* XXH_NO_LONG_LONG */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/xxHash/xxhash.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.h
index 4d7feffcd84..947567397bd 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/xxHash/xxhash.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.h
@@ -73,6 +73,14 @@ extern "C" {
/* ****************************
+* Compiler specifics
+******************************/
+#if !(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) /* ! C99 */
+# define restrict /* disable restrict */
+#endif
+
+
+/* ****************************
* Definitions
******************************/
#include <stddef.h> /* size_t */
@@ -83,20 +91,20 @@ typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode;
* API modifier
******************************/
/** XXH_PRIVATE_API
-* This is useful if you want to include xxhash functions in `static` mode
+* This is useful to include xxhash functions in `static` mode
* in order to inline them, and remove their symbol from the public list.
* Methodology :
* #define XXH_PRIVATE_API
* #include "xxhash.h"
-* `xxhash.c` is automatically included, so the file is still needed,
-* but it's not useful to compile and link it anymore.
+* `xxhash.c` is automatically included.
+* It's not useful to compile and link it as a separate module.
*/
#ifdef XXH_PRIVATE_API
# ifndef XXH_STATIC_LINKING_ONLY
# define XXH_STATIC_LINKING_ONLY
# endif
# if defined(__GNUC__)
-# define XXH_PUBLIC_API static __attribute__((unused))
+# define XXH_PUBLIC_API static __inline __attribute__((unused))
# elif defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
# define XXH_PUBLIC_API static inline
# elif defined(_MSC_VER)
@@ -111,10 +119,10 @@ typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode;
/*!XXH_NAMESPACE, aka Namespace Emulation :
If you want to include _and expose_ xxHash functions from within your own library,
-but also want to avoid symbol collisions with another library which also includes xxHash,
+but also want to avoid symbol collisions with other libraries which may also include xxHash,
you can use XXH_NAMESPACE, to automatically prefix any public symbol from xxhash library
-with the value of XXH_NAMESPACE (so avoid to keep it NULL and avoid numeric values).
+with the value of XXH_NAMESPACE (therefore, avoid NULL and numeric values).
Note that no change is required within the calling program as long as it includes `xxhash.h` :
regular symbol name will be automatically translated by this header.
@@ -122,21 +130,25 @@ regular symbol name will be automatically translated by this header.
#ifdef XXH_NAMESPACE
# define XXH_CAT(A,B) A##B
# define XXH_NAME2(A,B) XXH_CAT(A,B)
-# define XXH32 XXH_NAME2(XXH_NAMESPACE, XXH32)
-# define XXH64 XXH_NAME2(XXH_NAMESPACE, XXH64)
# define XXH_versionNumber XXH_NAME2(XXH_NAMESPACE, XXH_versionNumber)
+# define XXH32 XXH_NAME2(XXH_NAMESPACE, XXH32)
# define XXH32_createState XXH_NAME2(XXH_NAMESPACE, XXH32_createState)
-# define XXH64_createState XXH_NAME2(XXH_NAMESPACE, XXH64_createState)
# define XXH32_freeState XXH_NAME2(XXH_NAMESPACE, XXH32_freeState)
-# define XXH64_freeState XXH_NAME2(XXH_NAMESPACE, XXH64_freeState)
# define XXH32_reset XXH_NAME2(XXH_NAMESPACE, XXH32_reset)
-# define XXH64_reset XXH_NAME2(XXH_NAMESPACE, XXH64_reset)
# define XXH32_update XXH_NAME2(XXH_NAMESPACE, XXH32_update)
-# define XXH64_update XXH_NAME2(XXH_NAMESPACE, XXH64_update)
# define XXH32_digest XXH_NAME2(XXH_NAMESPACE, XXH32_digest)
-# define XXH64_digest XXH_NAME2(XXH_NAMESPACE, XXH64_digest)
# define XXH32_copyState XXH_NAME2(XXH_NAMESPACE, XXH32_copyState)
+# define XXH32_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH32_canonicalFromHash)
+# define XXH32_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH32_hashFromCanonical)
+# define XXH64 XXH_NAME2(XXH_NAMESPACE, XXH64)
+# define XXH64_createState XXH_NAME2(XXH_NAMESPACE, XXH64_createState)
+# define XXH64_freeState XXH_NAME2(XXH_NAMESPACE, XXH64_freeState)
+# define XXH64_reset XXH_NAME2(XXH_NAMESPACE, XXH64_reset)
+# define XXH64_update XXH_NAME2(XXH_NAMESPACE, XXH64_update)
+# define XXH64_digest XXH_NAME2(XXH_NAMESPACE, XXH64_digest)
# define XXH64_copyState XXH_NAME2(XXH_NAMESPACE, XXH64_copyState)
+# define XXH64_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH64_canonicalFromHash)
+# define XXH64_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH64_hashFromCanonical)
#endif
@@ -145,58 +157,33 @@ regular symbol name will be automatically translated by this header.
***************************************/
#define XXH_VERSION_MAJOR 0
#define XXH_VERSION_MINOR 6
-#define XXH_VERSION_RELEASE 1
+#define XXH_VERSION_RELEASE 2
#define XXH_VERSION_NUMBER (XXH_VERSION_MAJOR *100*100 + XXH_VERSION_MINOR *100 + XXH_VERSION_RELEASE)
XXH_PUBLIC_API unsigned XXH_versionNumber (void);
-/* ****************************
-* Simple Hash Functions
-******************************/
+/*-**********************************************************************
+* 32-bits hash
+************************************************************************/
typedef unsigned int XXH32_hash_t;
-typedef unsigned long long XXH64_hash_t;
-
-XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t length, unsigned int seed);
-XXH_PUBLIC_API XXH64_hash_t XXH64 (const void* input, size_t length, unsigned long long seed);
-/*!
-XXH32() :
+/*! XXH32() :
Calculate the 32-bits hash of sequence "length" bytes stored at memory address "input".
The memory between input & input+length must be valid (allocated and read-accessible).
"seed" can be used to alter the result predictably.
- Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s
-XXH64() :
- Calculate the 64-bits hash of sequence of length "len" stored at memory address "input".
- "seed" can be used to alter the result predictably.
- This function runs 2x faster on 64-bits systems, but slower on 32-bits systems (see benchmark).
-*/
-
+ Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s */
+XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t length, unsigned int seed);
-/* ****************************
-* Streaming Hash Functions
-******************************/
+/*====== Streaming ======*/
typedef struct XXH32_state_s XXH32_state_t; /* incomplete type */
-typedef struct XXH64_state_s XXH64_state_t; /* incomplete type */
-
-/*! State allocation, compatible with dynamic libraries */
-
XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void);
XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr);
-
-XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void);
-XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr);
-
-
-/* hash streaming */
+XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* restrict dst_state, const XXH32_state_t* restrict src_state);
XXH_PUBLIC_API XXH_errorcode XXH32_reset (XXH32_state_t* statePtr, unsigned int seed);
XXH_PUBLIC_API XXH_errorcode XXH32_update (XXH32_state_t* statePtr, const void* input, size_t length);
XXH_PUBLIC_API XXH32_hash_t XXH32_digest (const XXH32_state_t* statePtr);
-XXH_PUBLIC_API XXH_errorcode XXH64_reset (XXH64_state_t* statePtr, unsigned long long seed);
-XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* statePtr, const void* input, size_t length);
-XXH_PUBLIC_API XXH64_hash_t XXH64_digest (const XXH64_state_t* statePtr);
-
/*
These functions generate the xxHash of an input provided in multiple segments.
Note that, for small input, they are slower than single-call functions, due to state management.
@@ -219,29 +206,11 @@ and generate some new hashes later on, by calling again XXH*_digest().
When done, free XXH state space if it was allocated dynamically.
*/
+/*====== Canonical representation ======*/
-/* **************************
-* Utils
-****************************/
-#if !(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) /* ! C99 */
-# define restrict /* disable restrict */
-#endif
-
-XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* restrict dst_state, const XXH32_state_t* restrict src_state);
-XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* restrict dst_state, const XXH64_state_t* restrict src_state);
-
-
-/* **************************
-* Canonical representation
-****************************/
typedef struct { unsigned char digest[4]; } XXH32_canonical_t;
-typedef struct { unsigned char digest[8]; } XXH64_canonical_t;
-
XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash);
-XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash);
-
XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src);
-XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src);
/* Default result type for XXH functions are primitive unsigned 32 and 64 bits.
* The canonical representation uses human-readable write convention, aka big-endian (large digits first).
@@ -250,41 +219,76 @@ XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src
*/
+#ifndef XXH_NO_LONG_LONG
+/*-**********************************************************************
+* 64-bits hash
+************************************************************************/
+typedef unsigned long long XXH64_hash_t;
+
+/*! XXH64() :
+ Calculate the 64-bits hash of sequence of length "len" stored at memory address "input".
+ "seed" can be used to alter the result predictably.
+ This function runs faster on 64-bits systems, but slower on 32-bits systems (see benchmark).
+*/
+XXH_PUBLIC_API XXH64_hash_t XXH64 (const void* input, size_t length, unsigned long long seed);
+
+/*====== Streaming ======*/
+typedef struct XXH64_state_s XXH64_state_t; /* incomplete type */
+XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void);
+XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr);
+XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* restrict dst_state, const XXH64_state_t* restrict src_state);
+
+XXH_PUBLIC_API XXH_errorcode XXH64_reset (XXH64_state_t* statePtr, unsigned long long seed);
+XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* statePtr, const void* input, size_t length);
+XXH_PUBLIC_API XXH64_hash_t XXH64_digest (const XXH64_state_t* statePtr);
+
+/*====== Canonical representation ======*/
+typedef struct { unsigned char digest[8]; } XXH64_canonical_t;
+XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash);
+XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src);
+#endif /* XXH_NO_LONG_LONG */
+
+
#ifdef XXH_STATIC_LINKING_ONLY
/* ================================================================================================
This section contains definitions which are not guaranteed to remain stable.
- They could change in a future version, becoming incompatible with a different version of the library.
+ They may change in future versions, becoming incompatible with a different version of the library.
They shall only be used with static linking.
+ Never use these definitions in association with dynamic linking !
=================================================================================================== */
-/* These definitions allow allocating XXH state statically (on stack) */
+/* These definitions are only meant to allow allocation of XXH state
+ statically, on stack, or in a struct for example.
+ Do not use members directly. */
struct XXH32_state_s {
- unsigned long long total_len;
- unsigned seed;
+ unsigned total_len_32;
+ unsigned large_len;
unsigned v1;
unsigned v2;
unsigned v3;
unsigned v4;
unsigned mem32[4]; /* buffer defined as U32 for alignment */
unsigned memsize;
+ unsigned reserved; /* never read nor write, will be removed in a future version */
}; /* typedef'd to XXH32_state_t */
+#ifndef XXH_NO_LONG_LONG
struct XXH64_state_s {
unsigned long long total_len;
- unsigned long long seed;
unsigned long long v1;
unsigned long long v2;
unsigned long long v3;
unsigned long long v4;
unsigned long long mem64[4]; /* buffer defined as U64 for alignment */
unsigned memsize;
+ unsigned reserved[2]; /* never read nor write, will be removed in a future version */
}; /* typedef'd to XXH64_state_t */
-
+#endif
# ifdef XXH_PRIVATE_API
-# include "xxhash.c" /* include xxhash functions as `static`, for inlining */
+# include "xxhash.c" /* include xxhash function bodies as `static`, for inlining */
# endif
#endif /* XXH_STATIC_LINKING_ONLY */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/AGLTable.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/AGLTable.hpp
index 42b7fff26cd..fe4e6466ac2 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/AGLTable.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/AGLTable.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** AGLTable.h **
+** AGLTable.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,16 +18,22 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
+
/* The following table provides a compact mapping from PostScript character names
* to Unicode points. Instead of using the character names directly it maps the
* hash values (xxhash32) of the names to the corresponding code points.
* The character mapping is derived from the Adobe Glyph List (AGL):
* https://github.com/adobe-type-tools/agl-aglfn
* http://tug.ctan.org/macros/latex/contrib/pdfx/glyphtounicode-cmr.tex */
-static struct Hash2Unicode {
- UInt32 hash;
- UInt32 codepoint;
-} hash2unicode[] = {
+
+#include <array>
+
+struct HashCodepointPair {
+ uint32_t hash;
+ uint32_t codepoint;
+};
+
+std::array<HashCodepointPair, 4048> hash2unicode = {{
{0x001cf4a9, 0x0118}, // Eogonek
{0x003b11fb, 0x055f}, // abbreviationmarkarmenian
{0x0050a316, 0x0444}, // afii10086
@@ -51,17 +57,13 @@ static struct Hash2Unicode {
{0x012d44bc, 0x05d6}, // afii57670
{0x013044fb, 0x2205}, // emptyset
{0x01422ce1, 0x0486}, // psilipneumatacyrilliccmb
- {0x01532d0f, 0x002f}, // slashBig
{0x01571757, 0xfe6b}, // atsmall
{0x01678eeb, 0x066b}, // decimalseparatorpersian
{0x018643fe, 0x091a}, // cadeva
{0x019e6772, 0x3148}, // cieuckorean
{0x019fa822, 0x05de}, // mem
- {0x01a69c0c, 0x221a}, // radicalbigg
{0x01cfa7b3, 0x0a3e}, // aamatragurmukhi
{0x01d7c979, 0x3007}, // ideographiczero
- {0x02057d9e, 0x05e8}, // reshhatafsegol
- {0x0209914d, 0xf7fe}, // Thornsmall
{0x020d70ad, 0x278b}, // twocircleinversesansserif
{0x0239eab1, 0x3131}, // kiyeokkorean
{0x023b0c79, 0xff87}, // nukatakanahalfwidth
@@ -84,15 +86,12 @@ static struct Hash2Unicode {
{0x02dab625, 0x310c}, // lbopomofo
{0x02df8edf, 0x30e7}, // yosmallkatakana
{0x02e3dfc8, 0x3062}, // dihiragana
- {0x02f13fd7, 0x0029}, // parenrightbig
- {0x02f32b9b, 0x002f}, // slashbigg
{0x0306380d, 0xff35}, // Umonospace
{0x03170204, 0x0495}, // ghemiddlehookcyrillic
{0x03182c9f, 0x25b4}, // blackuppointingsmalltriangle
{0x0319d343, 0x329e}, // ideographicprintcircle
{0x031ad266, 0x331e}, // kooposquare
{0x03274b72, 0x0018}, // controlCAN
- {0x032ef9aa, 0xf7f6}, // Odieresissmall
{0x0334c4d5, 0x0aa7}, // dhagujarati
{0x03396436, 0x1ed0}, // Ocircumflexacute
{0x033b64c4, 0x047f}, // otcyrillic
@@ -105,7 +104,6 @@ static struct Hash2Unicode {
{0x03c2a8d8, 0x1eb3}, // abrevehookabove
{0x03d234c7, 0xfea7}, // khahinitialarabic
{0x03f4da1a, 0x05b8}, // qamatsnarrowhebrew
- {0x040b8001, 0x230a}, // floorleftBig
{0x0410b525, 0x0138}, // kgreenlandic
{0x0433eb22, 0x014e}, // Obreve
{0x043f3fc5, 0x040a}, // afii10059
@@ -121,7 +119,6 @@ static struct Hash2Unicode {
{0x04c8ee7d, 0x042d}, // Ereversedcyrillic
{0x04de1db0, 0x0950}, // omdeva
{0x04f4d676, 0x0027}, // quotesingle
- {0x04fb1584, 0xf6c4}, // afii10063
{0x0500f909, 0x0407}, // Yicyrillic
{0x0503fcb5, 0x00b1}, // plusminus
{0x05116c6a, 0x30fc}, // prolongedkana
@@ -136,7 +133,6 @@ static struct Hash2Unicode {
{0x05a47299, 0x320d}, // hieuhparenkorean
{0x05a53e96, 0x0282}, // shook
{0x05b0f8c3, 0x02b5}, // rhookturnedsuperior
- {0x05c5a128, 0xf76b}, // Ksmall
{0x05cee53c, 0x201d}, // quotedblright
{0x05de47fd, 0x1e7f}, // vdotbelow
{0x05e340f3, 0x1e70}, // Tcircumflexbelow
@@ -144,10 +140,7 @@ static struct Hash2Unicode {
{0x05ec5d36, 0x2471}, // eighteencircle
{0x05f03fff, 0x0ae0}, // rrvocalicgujarati
{0x060beb03, 0x0175}, // wcircumflex
- {0x0618af48, 0x005c}, // backslashBig
{0x061ad8fc, 0x24ca}, // Ucircle
- {0x061f0bd8, 0x2a00}, // circledotdisplay
- {0x062d146d, 0xf88b}, // maieklowrightthai
{0x0642035b, 0x0010}, // controlDLE
{0x0646584a, 0x003d}, // equal
{0x064874b1, 0x05d3}, // afii57667
@@ -158,7 +151,6 @@ static struct Hash2Unicode {
{0x06b00ffc, 0x0101}, // amacron
{0x06b72f51, 0x27e8}, // angbracketleftbig
{0x06be8647, 0x0442}, // afii10084
- {0x06e56a17, 0x05dc}, // lamedholamdagesh
{0x06ec3366, 0xfe42}, // cornerbracketrightvertical
{0x0700a693, 0x0475}, // izhitsacyrillic
{0x07019244, 0xfb02}, // fl
@@ -178,7 +170,6 @@ static struct Hash2Unicode {
{0x0793d50d, 0x30bb}, // sekatakana
{0x07a1ce35, 0x0906}, // aadeva
{0x07ab20a8, 0x0ab3}, // llagujarati
- {0x07b2b22c, 0x02c6}, // hatwidest
{0x07e20c30, 0x017b}, // Zdot
{0x07e38c67, 0x33bb}, // nwsquare
{0x081dd122, 0x0a38}, // sagurmukhi
@@ -189,8 +180,6 @@ static struct Hash2Unicode {
{0x085499c4, 0x0925}, // thadeva
{0x086a99d9, 0x01af}, // Uhorn
{0x087038eb, 0xfb20}, // ayinaltonehebrew
- {0x08729ac0, 0xed18}, // bracehtipdownright
- {0x08905fd6, 0x230b}, // floorrightbigg
{0x089d739a, 0x005a}, // Z
{0x08a131c8, 0x096d}, // sevendeva
{0x08a6b099, 0x02a6}, // ts
@@ -205,16 +194,13 @@ static struct Hash2Unicode {
{0x09751504, 0x038c}, // Omicrontonos
{0x09790f28, 0x33be}, // kwsquare
{0x09853aa3, 0x01c1}, // clicklateral
- {0x099430b2, 0xf7f5}, // Otildesmall
{0x09a03740, 0xfe5b}, // braceleftsmall
{0x09a4b050, 0x0ae8}, // twogujarati
- {0x09adf253, 0xf721}, // exclamsmall
{0x09d4b5eb, 0x3388}, // calsquare
{0x09f2217d, 0x00a9}, // copyright
{0x09f9df24, 0x1e0c}, // Ddotbelow
{0x0a040d76, 0x098a}, // uubengali
{0x0a1d800c, 0x0291}, // zcurl
- {0x0a3a2809, 0xf767}, // Gsmall
{0x0a3b8eb5, 0x044b}, // yericyrillic
{0x0a46f2f1, 0x0284}, // dotlessjstrokehook
{0x0a5cb3b1, 0x30d6}, // bukatakana
@@ -225,12 +211,9 @@ static struct Hash2Unicode {
{0x0a9b47dd, 0x306f}, // hahiragana
{0x0aa2156d, 0xfc0c}, // tehhahisolatedarabic
{0x0abb4ec1, 0x0441}, // afii10083
- {0x0ac66fc0, 0x005b}, // bracketleftBigg
{0x0adbba15, 0x21c0}, // harpoonrightbarbup
{0x0ae79191, 0x01e1}, // adotmacron
- {0x0aecd30e, 0x05e8}, // reshpatahhebrew
{0x0af77d49, 0x09ea}, // fourbengali
- {0x0b1d2d0d, 0xf6f3}, // tsuperior
{0x0b367d7a, 0x0421}, // Escyrillic
{0x0b4b7082, 0xff62}, // cornerbracketlefthalfwidth
{0x0b6abf22, 0x20aa}, // sheqel
@@ -263,7 +246,6 @@ static struct Hash2Unicode {
{0x0cf04968, 0x02be}, // ringhalfright
{0x0d0eb2f0, 0x315d}, // weokorean
{0x0d21bb72, 0x2550}, // SF430000
- {0x0d3a66b8, 0x2309}, // ceilingrightbigg
{0x0d47308f, 0x05d4}, // he
{0x0d747cfe, 0x04c3}, // Kahookcyrillic
{0x0d932b5b, 0x30d2}, // hikatakana
@@ -294,7 +276,6 @@ static struct Hash2Unicode {
{0x0efc1459, 0x09b6}, // shabengali
{0x0f02712c, 0x00ea}, // ecircumflex
{0x0f066e82, 0x33b3}, // mssquare
- {0x0f13ed93, 0xf7f8}, // Oslashsmall
{0x0f1a6991, 0x24c4}, // Ocircle
{0x0f2768b1, 0x05b1}, // hatafsegolwidehebrew
{0x0f332d5e, 0x002e}, // period
@@ -359,26 +340,20 @@ static struct Hash2Unicode {
{0x12bdd9c7, 0x21a6}, // mapsto
{0x12d3e8f7, 0x30c0}, // dakatakana
{0x12def4bb, 0xfeba}, // sadfinalarabic
- {0x12e14144, 0xf726}, // ampersandsmall
{0x12e22bb8, 0x33c2}, // amsquare
{0x1329e467, 0x0311}, // breveinvertedcmb
{0x132b7bd0, 0x2a04}, // unionmultitext
{0x132e0697, 0x01b3}, // Yhook
- {0x13402162, 0xf6be}, // dotlessj
{0x134d9c31, 0x304c}, // gahiragana
{0x13597fb3, 0x04d9}, // afii10846
{0x135d6341, 0x33c8}, // dbsquare
{0x13635045, 0x0300}, // gravecmb
- {0x1367bcdf, 0xf88a}, // maiekupperleftthai
{0x1369554a, 0x207f}, // nsuperior
- {0x136e8d95, 0xf885}, // saraileftthai
{0x1376f153, 0x0403}, // afii10052
{0x1384d3da, 0x05b4}, // hiriqnarrowhebrew
{0x13868087, 0x0636}, // afii57430
- {0x138b1601, 0x0621}, // hamzafathatanarabic
{0x138fca68, 0x0a30}, // ragurmukhi
{0x13a69297, 0x0917}, // gadeva
- {0x13bc5cc6, 0xf88d}, // maithoupperleftthai
{0x13bcc567, 0x25d1}, // circlewithrighthalfblack
{0x13ccaf5f, 0x3061}, // tihiragana
{0x13dc1f9e, 0x05b1}, // hatafsegol
@@ -387,7 +362,6 @@ static struct Hash2Unicode {
{0x14117f5a, 0x1e77}, // ucircumflexbelow
{0x141d63ad, 0x1eda}, // Ohornacute
{0x142c024d, 0x013a}, // lacute
- {0x142c46b3, 0x2a06}, // unionsqdisplay
{0x143d707c, 0x05a6}, // merkhakefulalefthebrew
{0x146c75cf, 0x3275}, // ieungacirclekorean
{0x146f18bb, 0xfb36}, // zayindagesh
@@ -398,12 +372,10 @@ static struct Hash2Unicode {
{0x14c795cf, 0x0051}, // Q
{0x14d1cd4b, 0x2284}, // notsubset
{0x14d2cd8a, 0x012f}, // iogonek
- {0x14eb6d31, 0x02dc}, // tildewider
{0x14f2bc91, 0x1eab}, // acircumflextilde
{0x15045632, 0x05d1}, // bet
{0x1505dc02, 0x3083}, // yasmallhiragana
{0x152785c0, 0x30a1}, // asmallkatakana
- {0x1532a7b6, 0x05e7}, // qofsegolhebrew
{0x15642935, 0x23a9}, // braceleftbt
{0x1564e3f1, 0x05b9}, // holam26
{0x15771621, 0x042c}, // Softsigncyrillic
@@ -415,10 +387,8 @@ static struct Hash2Unicode {
{0x15f8ec13, 0x037e}, // questiongreek
{0x1602acd3, 0xff38}, // Xmonospace
{0x1610c2ad, 0x3181}, // yesieungkorean
- {0x161db4d0, 0xf76c}, // Lsmall
{0x16393f6d, 0xfef6}, // lamalefmaddaabovefinalarabic
{0x164a5cd1, 0x0058}, // X
- {0x164b6531, 0xf7eb}, // Edieresissmall
{0x165341dd, 0x02e0}, // gammasuperior
{0x167b1fac, 0xfebc}, // sadmedialarabic
{0x168b9d05, 0x04d5}, // aiecyrillic
@@ -432,7 +402,6 @@ static struct Hash2Unicode {
{0x170fc75c, 0x306c}, // nuhiragana
{0x171b516a, 0x0a39}, // hagurmukhi
{0x17301afd, 0x3023}, // threehangzhou
- {0x17314b3c, 0xf7a8}, // Dieresissmall
{0x173c8456, 0x338b}, // nfsquare
{0x178d45ae, 0x337e}, // meizierasquare
{0x17a9e49b, 0x322a}, // ideographicmoonparen
@@ -453,10 +422,7 @@ static struct Hash2Unicode {
{0x185b816d, 0x0146}, // ncommaaccent
{0x187ab455, 0x0e42}, // saraothai
{0x1885706c, 0x3157}, // okorean
- {0x18905b85, 0x05e8}, // reshsegol
{0x18923bff, 0x2135}, // aleph
- {0x1892a13e, 0x005d}, // bracketrightbigg
- {0x18a1a8e1, 0x02c2}, // a40
{0x18a5c10a, 0x2584}, // dnblock
{0x18a72a69, 0xfb3a}, // finalkafdageshhebrew
{0x18b82c53, 0x045c}, // afii10109
@@ -467,10 +433,8 @@ static struct Hash2Unicode {
{0x18ea53c7, 0x0663}, // afii57395
{0x18ec3f78, 0x05e8}, // afii57688
{0x18f0d507, 0xfe9f}, // jeeminitialarabic
- {0x18fb8128, 0x25c1}, // a1
{0x190a56aa, 0xfe5a}, // parenrightsmall
{0x1920c2c2, 0xff65}, // middledotkatakanahalfwidth
- {0x1925bd4b, 0xf6f9}, // Lslashsmall
{0x192c8826, 0x2283}, // superset
{0x1940b4fd, 0x2251}, // geometricallyequal
{0x19427103, 0x2a01}, // circleplustext
@@ -478,7 +442,6 @@ static struct Hash2Unicode {
{0x194ec3dd, 0xfb38}, // tetdageshhebrew
{0x195fdeed, 0x3013}, // getamark
{0x197f461f, 0x1e03}, // bdotaccent
- {0x1991ce27, 0x007b}, // braceleftBigg
{0x1994a487, 0x0481}, // koppacyrillic
{0x19985117, 0x339a}, // nmsquare
{0x19a1a98b, 0x00ad}, // sfthyphen
@@ -493,7 +456,6 @@ static struct Hash2Unicode {
{0x1a00d3da, 0x032b}, // dblarchinvertedbelowcmb
{0x1a260946, 0x0447}, // checyrillic
{0x1a287ed9, 0x0922}, // ddhadeva
- {0x1a28dcc1, 0x005b}, // bracketleftBig
{0x1a3b33cb, 0xfed7}, // qafinitialarabic
{0x1a3bf649, 0x05b2}, // hatafpatahhebrew
{0x1a4f3484, 0x0913}, // odeva
@@ -517,7 +479,6 @@ static struct Hash2Unicode {
{0x1c16ebae, 0x0126}, // Hbar
{0x1c2631dd, 0x3385}, // KBsquare
{0x1c56e166, 0xfd3f}, // parenrightaltonearabic
- {0x1c70f0f3, 0xf7e7}, // Ccedillasmall
{0x1c94529b, 0x21b5}, // carriagereturn
{0x1cb10674, 0x0a27}, // dhagurmukhi
{0x1cb5367a, 0x0532}, // Benarmenian
@@ -529,7 +490,6 @@ static struct Hash2Unicode {
{0x1d2559c8, 0x03b9}, // iota
{0x1d25e3ef, 0x043c}, // emcyrillic
{0x1d420ccb, 0x0430}, // afii10065
- {0x1d91efe5, 0xf6d8}, // dieresisgrave
{0x1d954d85, 0x09a4}, // tabengali
{0x1da7ae8c, 0x00d7}, // multiply
{0x1db92094, 0x053d}, // Xeharmenian
@@ -541,7 +501,6 @@ static struct Hash2Unicode {
{0x1df7638a, 0x00e4}, // adieresis
{0x1dfc2837, 0x217a}, // elevenroman
{0x1e0312fa, 0x0290}, // zretroflexhook
- {0x1e065c3a, 0xf7f1}, // Ntildesmall
{0x1e1332fd, 0x0287}, // tturned
{0x1e25355a, 0x0461}, // omegacyrillic
{0x1e38c8d8, 0x012a}, // Imacron
@@ -558,12 +517,9 @@ static struct Hash2Unicode {
{0x1edf9913, 0x1e16}, // Emacronacute
{0x1ef123d5, 0x0413}, // Gecyrillic
{0x1f06ae25, 0xfb31}, // betdageshhebrew
- {0x1f0c6a2a, 0x0651}, // shaddafathatanarabic
{0x1f1df6d1, 0x3381}, // nasquare
{0x1f2383d4, 0x0004}, // controlEOT
{0x1f2a4214, 0xfdfa}, // sallallahoualayhewasallamarabic
- {0x1f5314ee, 0xf6fc}, // Ringsmall
- {0x1f5dc79d, 0xf7b4}, // Acutesmall
{0x1f60dad4, 0x05e8}, // reshhebrew
{0x1f686fbe, 0xff2c}, // Lmonospace
{0x1f90aeb4, 0xff7b}, // sakatakanahalfwidth
@@ -577,16 +533,13 @@ static struct Hash2Unicode {
{0x1feea4ab, 0x0623}, // afii57411
{0x20061138, 0x1e02}, // Bdotaccent
{0x200e9513, 0x030f}, // dblgravecmb
- {0x2012c16a, 0xf6d4}, // cyrbreve
{0x201a6676, 0x2310}, // logicalnotreversed
{0x201e3ee9, 0x0310}, // candrabinducmb
{0x2024cfd1, 0x0475}, // afii10196
{0x2038e6d5, 0x307a}, // pehiragana
{0x205d0ec7, 0x03a0}, // Pi
- {0x206a255a, 0xf775}, // Usmall
{0x207bf81e, 0xff84}, // tokatakanahalfwidth
{0x2086c569, 0x00d2}, // Ograve
- {0x2086fb87, 0xf772}, // Rsmall
{0x208b3b40, 0xfed0}, // ghainmedialarabic
{0x209bfca6, 0x24d5}, // fcircle
{0x20a31ebd, 0x2489}, // twoperiod
@@ -624,13 +577,11 @@ static struct Hash2Unicode {
{0x2274db8f, 0xff08}, // parenleftmonospace
{0x2282e86d, 0x00fa}, // uacute
{0x22a883d2, 0x25c7}, // whitediamond
- {0x22b082b8, 0x005c}, // backslashBigg
{0x22c93a2b, 0x338d}, // mugsquare
{0x22e3ac9e, 0xff4c}, // lmonospace
{0x2320c842, 0x0277}, // omegalatinclosed
{0x2324e69c, 0x2665}, // heart
{0x2351e945, 0x0a8a}, // uugujarati
- {0x2352b38c, 0xf6d7}, // dieresisacute
{0x2356706f, 0x0541}, // Jaarmenian
{0x23679572, 0x1ef1}, // uhorndotbelow
{0x236d79e4, 0x301e}, // quotedblprime
@@ -648,7 +599,6 @@ static struct Hash2Unicode {
{0x2415f58f, 0x3069}, // dohiragana
{0x2419b09a, 0x038f}, // Omegatonos
{0x241b0583, 0x0a9e}, // nyagujarati
- {0x241cc39b, 0x007b}, // braceleftbigg
{0x241f6494, 0x3105}, // bbopomofo
{0x2459d6f7, 0x0aea}, // fourgujarati
{0x24688db0, 0x02c1}, // glottalstopreversedmod
@@ -664,11 +614,9 @@ static struct Hash2Unicode {
{0x24f5be18, 0x0308}, // dieresiscmb
{0x2527d2da, 0x300c}, // cornerbracketleft
{0x252ef6ac, 0x01de}, // Adieresismacron
- {0x2533ec5c, 0x05e8}, // reshtsere
{0x253f33be, 0x006e}, // n
{0x2543ce81, 0x05c1}, // shindothebrew
{0x254b8857, 0x0929}, // nnnadeva
- {0x2556a01a, 0x005c}, // backslashbigg
{0x25725d01, 0x0496}, // Zhedescendercyrillic
{0x2592eb8c, 0x1e39}, // ldotbelowmacron
{0x25a29a9e, 0x000a}, // controlLF
@@ -697,11 +645,10 @@ static struct Hash2Unicode {
{0x26b9c1d9, 0x0e30}, // saraathai
{0x26c43ea8, 0x0911}, // ocandradeva
{0x26caa803, 0x21d4}, // arrowdblboth
- {0x26cb382e, 0xf8fc}, // bracerighttp
+ {0x26cb382e, 0x23ab}, // bracerighttp
{0x26f6f992, 0x04e4}, // Idieresiscyrillic
{0x26fb496b, 0x3351}, // rittorusquare
{0x27075678, 0x012e}, // Iogonek
- {0x271cd3fa, 0x27e8}, // angbracketleftBig
{0x2731451f, 0x0408}, // afii10057
{0x273977ae, 0x0435}, // afii10070
{0x27487450, 0x007e}, // asciitilde
@@ -719,25 +666,20 @@ static struct Hash2Unicode {
{0x283f3216, 0x2075}, // fivesuperior
{0x28898020, 0x0281}, // Rsmallinverted
{0x288edd59, 0x24cc}, // Wcircle
- {0x2892f3ea, 0x2a02}, // circlemultiplydisplay
{0x28d9fe2f, 0x0e41}, // saraaethai
{0x28dd4931, 0x3234}, // ideographicnameparen
{0x28e31924, 0x0a6c}, // sixgurmukhi
{0x28e4057d, 0xfc58}, // yehmeemisolatedarabic
{0x28f71acd, 0x0633}, // afii57427
{0x290ed42e, 0x1e18}, // Ecircumflexbelow
- {0x2916bf1f, 0xf7ef}, // Idieresissmall
{0x29287ce1, 0x03d2}, // Upsilon1
{0x29346ac3, 0x2021}, // daggerdbl
{0x29371ded, 0x1e8f}, // ydotaccent
- {0x2951ba53, 0xf6e2}, // commasuperior
{0x29734fd7, 0x092d}, // bhadeva
{0x298e1b46, 0x01ea}, // Oogonek
{0x29958ce9, 0x0005}, // controlENQ
{0x29a8f130, 0x04d4}, // Aiecyrillic
{0x29ab0eda, 0x0146}, // ncedilla
- {0x29b0158e, 0x05e7}, // qofshevahebrew
- {0x29be1625, 0x0028}, // parenleftbig
{0x29c07bd0, 0x305e}, // zohiragana
{0x29d0597d, 0x262f}, // yinyang
{0x29d51dd2, 0x06d1}, // yehthreedotsbelowarabic
@@ -756,14 +698,11 @@ static struct Hash2Unicode {
{0x2a8e7779, 0x0ad0}, // omgujarati
{0x2ac0e180, 0x33a6}, // kmcubedsquare
{0x2ac17d0f, 0x00f3}, // oacute
- {0x2acd450a, 0x002f}, // slashbig
- {0x2ad04347, 0xed12}, // arrowvertexdbl
{0x2ae749c7, 0x00e1}, // aacute
{0x2ae8215f, 0x001d}, // controlGS
{0x2ae8c5a6, 0x21c4}, // arrowrightoverleft
{0x2aedcd2c, 0x09fa}, // issharbengali
{0x2afb134c, 0xfb03}, // ffi
- {0x2b2385f1, 0xf760}, // Gravesmall
{0x2b27655e, 0x261c}, // pointingindexleftwhite
{0x2b3ff353, 0x2557}, // SF250000
{0x2b42ad49, 0xfe55}, // colonsmall
@@ -774,7 +713,6 @@ static struct Hash2Unicode {
{0x2b9750e3, 0x2200}, // universal
{0x2b9c968a, 0x0315}, // commaaboverightcmb
{0x2bb5189c, 0x25e3}, // blacklowerlefttriangle
- {0x2bb9b9bf, 0x0621}, // hamzafathaarabic
{0x2bd253b1, 0x09bf}, // ivowelsignbengali
{0x2be6415c, 0x05b3}, // hatafqamatshebrew
{0x2beb7c62, 0x013c}, // lcommaaccent
@@ -789,7 +727,6 @@ static struct Hash2Unicode {
{0x2cdfcd2a, 0x30cb}, // nikatakana
{0x2cf9daf5, 0x3228}, // nineideographicparen
{0x2d2e3883, 0x2190}, // arrowleft
- {0x2d317780, 0xf778}, // Xsmall
{0x2d329c65, 0xfb3c}, // lameddageshhebrew
{0x2d39ea69, 0x019e}, // nlegrightlong
{0x2d3b565d, 0x05ea}, // afii57690
@@ -803,11 +740,9 @@ static struct Hash2Unicode {
{0x2d9b14ff, 0xfb6d}, // vehmedialarabic
{0x2da2ea79, 0x313d}, // rieulsioskorean
{0x2daa1b6f, 0x090a}, // uudeva
- {0x2db9bc28, 0xf7e3}, // Atildesmall
{0x2e04353d, 0x1ea9}, // acircumflexhookabove
{0x2e043b05, 0xff0a}, // asteriskmonospace
{0x2e10a2b1, 0x0374}, // numeralsigngreek
- {0x2e1b300e, 0x05e8}, // reshpatah
{0x2e1eaa7d, 0xfb49}, // shindagesh
{0x2e2c25c0, 0x0392}, // Beta
{0x2e356485, 0x09c2}, // uuvowelsignbengali
@@ -816,7 +751,6 @@ static struct Hash2Unicode {
{0x2e647759, 0x33d6}, // molsquare
{0x2e7c6436, 0x3048}, // ehiragana
{0x2e915a9d, 0xfe3b}, // blacklenticularbracketleftvertical
- {0x2e9d6cac, 0xf7f0}, // Ethsmall
{0x2e9e14a6, 0x0454}, // ecyrillic
{0x2e9ef541, 0x0192}, // florin
{0x2ea8b970, 0x327a}, // phieuphacirclekorean
@@ -830,7 +764,6 @@ static struct Hash2Unicode {
{0x2f06c380, 0x0a91}, // ocandragujarati
{0x2f0e722f, 0x0021}, // exclam
{0x2f14e4ad, 0x0183}, // btopbar
- {0x2f1fd59c, 0xf6d1}, // cyrBreve
{0x2f22b335, 0x305f}, // tahiragana
{0x2f247a45, 0x00b5}, // mu
{0x2f42e9c9, 0x0405}, // afii10054
@@ -863,7 +796,6 @@ static struct Hash2Unicode {
{0x30c9bc6e, 0x0a1e}, // nyagurmukhi
{0x30cd38cb, 0x33d8}, // pmsquare
{0x30d25d42, 0x2089}, // nineinferior
- {0x30e6287a, 0x05e7}, // qofhatafpatah
{0x30eada85, 0x2219}, // bulletoperator
{0x30f64fef, 0x20aa}, // sheqelhebrew
{0x310a4774, 0x337f}, // corporationsquare
@@ -877,7 +809,6 @@ static struct Hash2Unicode {
{0x31f928de, 0x05df}, // finalnun
{0x31fab77d, 0x1eea}, // Uhorngrave
{0x3207407e, 0x046b}, // yusbigcyrillic
- {0x3225e9b9, 0x05dc}, // lamedholamhebrew
{0x3238fa28, 0x3004}, // jis
{0x323ea229, 0x33ac}, // gpasquare
{0x324496b3, 0x33bf}, // mwmegasquare
@@ -885,7 +816,6 @@ static struct Hash2Unicode {
{0x324bc39e, 0x22da}, // lessequalorgreater
{0x3266451e, 0x30f2}, // wokatakana
{0x326ca1fd, 0x013f}, // Ldot
- {0x328fa9de, 0x230b}, // floorrightBigg
{0x32930f95, 0x046f}, // ksicyrillic
{0x329a975f, 0x0a0a}, // uugurmukhi
{0x329ed55c, 0x04e1}, // dzeabkhasiancyrillic
@@ -896,8 +826,6 @@ static struct Hash2Unicode {
{0x330263f2, 0x3136}, // nieunhieuhkorean
{0x3303dbcb, 0x04b2}, // Hadescendercyrillic
{0x33042de7, 0x1e90}, // Zcircumflex
- {0x33231bf5, 0x27e8}, // angbracketleftbigg
- {0x335a816e, 0xf739}, // nineoldstyle
{0x335e3259, 0x3022}, // twohangzhou
{0x336106b8, 0x05d7}, // afii57671
{0x33821f87, 0x05e2}, // ayinhebrew
@@ -909,7 +837,6 @@ static struct Hash2Unicode {
{0x33ea63c8, 0x24df}, // pcircle
{0x33f59002, 0x0285}, // eshsquatreversed
{0x340746a2, 0xff4a}, // jmonospace
- {0x340dcbd1, 0x21d1}, // arrowdbltp
{0x3425ba3a, 0x056d}, // xeharmenian
{0x342d52b5, 0x25cb}, // whitecircle
{0x34399add, 0x0034}, // four
@@ -920,7 +847,6 @@ static struct Hash2Unicode {
{0x345791f2, 0x027c}, // rlongleg
{0x346086da, 0x2286}, // reflexsubset
{0x3463147c, 0x1e69}, // sdotbelowdotaccent
- {0x3471790f, 0xf6f7}, // Dotaccentsmall
{0x3490ad97, 0x047a}, // Omegaroundcyrillic
{0x34a7b989, 0x006f}, // o
{0x34a88183, 0x2640}, // female
@@ -928,7 +854,6 @@ static struct Hash2Unicode {
{0x34bab99c, 0x24e0}, // qcircle
{0x34c88fb4, 0x2312}, // arc
{0x34c908a5, 0x1eb4}, // Abrevetilde
- {0x34d1f962, 0x05e8}, // reshholamhebrew
{0x34df3d1c, 0x00a1}, // exclamdown
{0x34e969fb, 0x05a0}, // telishagedolahebrew
{0x34f9cd37, 0x010b}, // cdot
@@ -940,7 +865,6 @@ static struct Hash2Unicode {
{0x35440d94, 0x040c}, // Kjecyrillic
{0x354dad21, 0x0129}, // itilde
{0x35514624, 0x00d6}, // Odieresis
- {0x357c478e, 0xf736}, // sixoldstyle
{0x3596098d, 0xfb9f}, // noonghunnafinalarabic
{0x359e9c03, 0x0418}, // Iicyrillic
{0x359f6846, 0x1ebc}, // Etilde
@@ -953,10 +877,8 @@ static struct Hash2Unicode {
{0x361cb4c9, 0xfb6b}, // vehfinalarabic
{0x361e70b8, 0x0043}, // C
{0x362459fb, 0xfe97}, // tehinitialarabic
- {0x362bfa3a, 0xf732}, // twooldstyle
{0x362c9d3a, 0x02b0}, // hsuperior
{0x36678fdf, 0x2326}, // deleteright
- {0x3673a47b, 0x05e7}, // qofqamatshebrew
{0x3676afc0, 0x0ac9}, // ocandravowelsigngujarati
{0x368bf72e, 0x0038}, // eight
{0x36aaad0e, 0x307b}, // hohiragana
@@ -965,8 +887,6 @@ static struct Hash2Unicode {
{0x37117bac, 0x059b}, // tevirlefthebrew
{0x372986de, 0x05f3}, // gereshhebrew
{0x373e5e3f, 0xff27}, // Gmonospace
- {0x37497fde, 0x25b7}, // a3
- {0x3781d925, 0xf6ed}, // isuperior
{0x37866f5c, 0x00df}, // germandbls
{0x37a73b5a, 0xfee0}, // lammedialarabic
{0x37a77cc1, 0x030b}, // hungarumlautcmb
@@ -978,7 +898,6 @@ static struct Hash2Unicode {
{0x37e460db, 0x308d}, // rohiragana
{0x37e5061e, 0x04a3}, // endescendercyrillic
{0x37f67ca7, 0x029a}, // eopenclosed
- {0x380974a8, 0xf735}, // fiveoldstyle
{0x381040c4, 0x310d}, // gbopomofo
{0x381640e0, 0xffe3}, // macronmonospace
{0x381c7e4d, 0x1ece}, // Ohookabove
@@ -990,7 +909,6 @@ static struct Hash2Unicode {
{0x38746563, 0x01b0}, // uhorn
{0x38880d1d, 0x0198}, // Khook
{0x38885f68, 0x091d}, // jhadeva
- {0x3889a61f, 0x005b}, // bracketleftbigg
{0x388ccfdd, 0x30e3}, // yasmallkatakana
{0x3896be1c, 0x0025}, // percent
{0x38a80af1, 0x306d}, // nehiragana
@@ -1002,7 +920,6 @@ static struct Hash2Unicode {
{0x38de4662, 0x1e7c}, // Vtilde
{0x38e73ed2, 0x01c0}, // clickdental
{0x38efc9e4, 0x04a6}, // Pemiddlehookcyrillic
- {0x391bc4d9, 0xf6d3}, // dblGrave
{0x391e728b, 0x099a}, // cabengali
{0x392c00af, 0x3305}, // intisquare
{0x3934b5de, 0x0e43}, // saraaimaimuanthai
@@ -1056,7 +973,6 @@ static struct Hash2Unicode {
{0x3c89c6b7, 0x2192}, // arrowright
{0x3c9425ca, 0x0666}, // sixhackarabic
{0x3c9b6897, 0xff0e}, // periodmonospace
- {0x3c9bce6c, 0xf7ee}, // Icircumflexsmall
{0x3ca31461, 0x01d1}, // Ocaron
{0x3ca4227b, 0x0120}, // Gdot
{0x3ca9c5ab, 0x0345}, // ypogegrammenigreekcmb
@@ -1076,7 +992,6 @@ static struct Hash2Unicode {
{0x3d4a2f11, 0x0187}, // Chook
{0x3d50ceda, 0x21a8}, // arrowupdnbse
{0x3d59a63c, 0x30e2}, // mokatakana
- {0x3d64f67d, 0xf6cd}, // DieresisGrave
{0x3d6d45f8, 0x0688}, // ddalarabic
{0x3d794ead, 0x04c8}, // enhookcyrillic
{0x3d888246, 0x300d}, // cornerbracketright
@@ -1087,13 +1002,10 @@ static struct Hash2Unicode {
{0x3da45134, 0xff3d}, // bracketrightmonospace
{0x3dac6cb7, 0x212e}, // estimated
{0x3db24f7f, 0x04eb}, // obarreddieresiscyrillic
- {0x3dc500c0, 0xf6ca}, // Caron
{0x3ddbfa17, 0xfe64}, // lesssmall
- {0x3de34107, 0xf6d2}, // cyrFlex
{0x3de84dee, 0x3387}, // GBsquare
{0x3de8cd4d, 0x02c9}, // firsttonechinese
{0x3deb36dc, 0x0570}, // hoarmenian
- {0x3dee4810, 0xf7a2}, // centoldstyle
{0x3e08b864, 0x1e1c}, // Ecedillabreve
{0x3e2966c3, 0x25a7}, // squareupperlefttolowerrightfill
{0x3e2ad069, 0x0125}, // hcircumflex
@@ -1105,27 +1017,20 @@ static struct Hash2Unicode {
{0x3e7bef16, 0x063a}, // ghainarabic
{0x3e9c0cab, 0x0e0d}, // yoyingthai
{0x3ea9e6c5, 0x044e}, // afii10096
- {0x3eb04aa9, 0xf7f2}, // Ogravesmall
{0x3ec30c4d, 0x0168}, // Utilde
- {0x3ed009a2, 0x05e8}, // reshhiriq
{0x3ed6d505, 0x3108}, // fbopomofo
{0x3edc9801, 0x031e}, // downtackbelowcmb
{0x3edf2653, 0x04ba}, // Shhacyrillic
{0x3edfbd48, 0x0959}, // khhadeva
{0x3ee5a28f, 0x0342}, // perispomenigreekcmb
- {0x3ef03dd0, 0xf7e5}, // Aringsmall
{0x3ef2c5ca, 0x05df}, // finalnunhebrew
- {0x3efcba10, 0x05d3}, // daletpatahhebrew
{0x3efcef55, 0x09a7}, // dhabengali
{0x3f19d4d4, 0x30e5}, // yusmallkatakana
{0x3f35ecb4, 0x0a0f}, // eegurmukhi
{0x3f36dce9, 0x061b}, // afii57403
- {0x3f3b739c, 0x05e7}, // qofpatahhebrew
- {0x3f4e4960, 0xf76a}, // Jsmall
{0x3f5ead94, 0x0456}, // icyrillic
{0x3f61f37a, 0x1ea3}, // ahookabove
{0x3f76f3d1, 0x0214}, // Udblgrave
- {0x3f77d74f, 0x05e8}, // reshqubuts
{0x3f817391, 0x314b}, // khieukhkorean
{0x3f8b0c34, 0x30c7}, // dekatakana
{0x3fa4349b, 0x0e1d}, // fofathai
@@ -1136,7 +1041,6 @@ static struct Hash2Unicode {
{0x3fe534eb, 0x0e12}, // thophuthaothai
{0x4016947c, 0x246b}, // twelvecircle
{0x401a74d3, 0x06f3}, // threepersian
- {0x402ddc95, 0xed1a}, // bracehtipupright
{0x40663d0c, 0xfeb2}, // seenfinalarabic
{0x4069b3b1, 0x24ab}, // pparen
{0x407a7b83, 0x0531}, // Aybarmenian
@@ -1227,7 +1131,6 @@ static struct Hash2Unicode {
{0x44a78c72, 0x1eef}, // uhorntilde
{0x44b414b4, 0xff0c}, // commamonospace
{0x44d687fa, 0x1e06}, // Blinebelow
- {0x450fad6c, 0xf6fd}, // Scaronsmall
{0x45116064, 0x2592}, // shade
{0x453aa0af, 0x09f0}, // ramiddlediagonalbengali
{0x4546a724, 0x05d0}, // afii57664
@@ -1251,10 +1154,8 @@ static struct Hash2Unicode {
{0x4611c6d0, 0x000b}, // controlVT
{0x461bc854, 0x0194}, // Gammaafrican
{0x46271982, 0x23ac}, // bracerightmid
- {0x46375ba2, 0x23d0}, // arrowvertex
{0x4652be4f, 0x1e6d}, // tdotbelow
{0x46541398, 0x0111}, // dmacron
- {0x46577172, 0x22c3}, // uniondisplay
{0x465ea2f8, 0x3202}, // tikeutparenkorean
{0x46611d40, 0x05bb}, // qubuts31
{0x466452b7, 0x321b}, // hieuhaparenkorean
@@ -1273,15 +1174,12 @@ static struct Hash2Unicode {
{0x470d662e, 0x042e}, // IUcyrillic
{0x470da4b8, 0x0453}, // gjecyrillic
{0x471d219d, 0x00f4}, // ocircumflex
- {0x47246853, 0xf890}, // maitriupperleftthai
{0x472c971d, 0x1e4d}, // otildeacute
{0x47542f2d, 0x0107}, // cacute
{0x47849b51, 0x05e5}, // finaltsadi
{0x478eb915, 0x014f}, // obreve
- {0x47a8409c, 0x05e8}, // reshqubutshebrew
{0x47b12f1d, 0x3009}, // anglebracketright
{0x47b78334, 0x09a5}, // thabengali
- {0x47dfd2f2, 0xf7a1}, // exclamdownsmall
{0x47ee62a0, 0x04f1}, // udieresiscyrillic
{0x480265ce, 0x06f2}, // twopersian
{0x48175191, 0x0130}, // Idotaccent
@@ -1298,7 +1196,6 @@ static struct Hash2Unicode {
{0x48b11825, 0x1e3f}, // macute
{0x48b31eb3, 0x02a3}, // dzaltone
{0x48bbab6b, 0x1e68}, // Sdotbelowdotaccent
- {0x48cf810a, 0x27e8}, // angbracketleftBigg
{0x48d0cd97, 0x0460}, // Omegacyrillic
{0x48ed1289, 0x3180}, // ssangieungkorean
{0x48f1ea86, 0x007c}, // verticalbar
@@ -1316,27 +1213,22 @@ static struct Hash2Unicode {
{0x49c941c8, 0x0630}, // thalarabic
{0x49cf949f, 0x0011}, // controlDC1
{0x49d53679, 0x053e}, // Caarmenian
- {0x49de9093, 0x0029}, // parenrightBig
{0x49e41b40, 0x0117}, // edotaccent
{0x4a059748, 0x2329}, // angleleft
{0x4a0a939e, 0x02dc}, // ilde
{0x4a0dc7cd, 0x0273}, // nhookretroflex
{0x4a1b8688, 0x0a8f}, // egujarati
- {0x4a26a1e2, 0xf88c}, // maieklowleftthai
{0x4a67a4cd, 0x33c6}, // coverkgsquare
{0x4a6dc3e0, 0x017c}, // zdotaccent
{0x4a8f25d9, 0x0134}, // Jcircumflex
{0x4a911686, 0x042a}, // Hardsigncyrillic
{0x4aa9a643, 0x220c}, // notcontains
- {0x4ab184ff, 0x221a}, // radicalbt
{0x4ab871b2, 0x05a9}, // telishaqetanahebrew
{0x4ad4b644, 0x066c}, // thousandsseparatorpersian
- {0x4ad593e8, 0x05e7}, // qofpatah
{0x4adaae02, 0x30bc}, // zekatakana
{0x4b13bfc7, 0x261f}, // pointingindexdownwhite
{0x4b146e46, 0x0076}, // v
{0x4b1cfc1b, 0x0052}, // R
- {0x4b214add, 0x05e8}, // reshhatafsegolhebrew
{0x4b69c8eb, 0x3200}, // kiyeokparenkorean
{0x4b7a4380, 0x326b}, // thieuthcirclekorean
{0x4b8cb1d3, 0x315a}, // oekorean
@@ -1355,7 +1247,6 @@ static struct Hash2Unicode {
{0x4ca2293a, 0x0549}, // Chaarmenian
{0x4ca721bb, 0x24d9}, // jcircle
{0x4cbb6976, 0x054c}, // Raarmenian
- {0x4cbfbcf5, 0xf6cb}, // Dieresis
{0x4cc2766b, 0x0474}, // Izhitsacyrillic
{0x4ccaa98f, 0x0292}, // ezh
{0x4cda32dd, 0x2592}, // shademedium
@@ -1367,12 +1258,10 @@ static struct Hash2Unicode {
{0x4d66ad61, 0x0259}, // schwa
{0x4d6f0f44, 0x03b6}, // zeta
{0x4d76cbca, 0x0939}, // hadeva
- {0x4d773822, 0x007d}, // bracerightbig
{0x4da2ea17, 0x30f7}, // vakatakana
{0x4dad3b1f, 0xff47}, // gmonospace
{0x4db4092d, 0x05b2}, // hatafpatahquarterhebrew
{0x4dc635ef, 0x03c2}, // sigmafinal
- {0x4dccadbd, 0xf6ea}, // bsuperior
{0x4dd49001, 0x04ae}, // Ustraightcyrillic
{0x4dd4e51e, 0x05e3}, // finalpe
{0x4ddb0ff8, 0x3014}, // tortoiseshellbracketleft
@@ -1407,15 +1296,12 @@ static struct Hash2Unicode {
{0x4fb92256, 0x216b}, // Twelveroman
{0x4fdd1a2b, 0x300a}, // dblanglebracketleft
{0x4feaecfe, 0x22c3}, // uniontext
- {0x4fef28fa, 0xf6c3}, // commaaccent
{0x5004c9ab, 0x09ed}, // sevenbengali
{0x50166be8, 0x049a}, // Kadescendercyrillic
{0x501dd48e, 0x2229}, // intersection
{0x5024fa7b, 0x260f}, // whitetelephone
- {0x5026482c, 0x228f}, // a60
{0x502bdceb, 0x3290}, // ideographsuncircle
{0x503133b5, 0x0009}, // controlHT
- {0x50604a35, 0x05e7}, // qofqubuts
{0x507713d7, 0x2a02}, // circlemultiplytext
{0x50794cf3, 0x255d}, // SF260000
{0x508090a0, 0xff82}, // tukatakanahalfwidth
@@ -1434,7 +1320,6 @@ static struct Hash2Unicode {
{0x51439af3, 0x064e}, // afii57454
{0x5147986a, 0xff5b}, // braceleftmonospace
{0x514d7298, 0x3238}, // ideographiclaborparen
- {0x5153d63f, 0xf895}, // maichattawalowleftthai
{0x515692ea, 0x0414}, // Decyrillic
{0x51616742, 0x328c}, // ideographwatercircle
{0x51817d65, 0xfca1}, // tehjeeminitialarabic
@@ -1442,7 +1327,6 @@ static struct Hash2Unicode {
{0x51ca7ab6, 0x00f6}, // odieresis
{0x51cbc424, 0x014d}, // omacron
{0x51d34569, 0x00e9}, // eacute
- {0x51e4f41a, 0xf6db}, // trademarkserif
{0x51e6847c, 0x05b2}, // hatafpatah16
{0x51ed3cb2, 0x00af}, // macron
{0x51f006ea, 0x24af}, // tparen
@@ -1465,16 +1349,12 @@ static struct Hash2Unicode {
{0x532f469f, 0x093d}, // avagrahadeva
{0x533e9388, 0x02bc}, // afii57929
{0x537b0d36, 0x0466}, // Yuslittlecyrillic
- {0x5382e913, 0x002f}, // slashBigg
- {0x5396a4ab, 0x2a04}, // unionmultidisplay
{0x53b3b784, 0xfb4a}, // tavdagesh
{0x53ca8524, 0x099d}, // jhabengali
- {0x53d60270, 0x05d3}, // dalethiriqhebrew
{0x53d8dfb9, 0x3115}, // shbopomofo
{0x53e66e1a, 0x0476}, // Izhitsadblgravecyrillic
{0x53f49c2a, 0x066c}, // thousandsseparatorarabic
{0x53f951b5, 0x056f}, // kenarmenian
- {0x53febc17, 0x05e8}, // reshqamatshebrew
{0x540493c8, 0x03b1}, // alpha
{0x540c5f40, 0x0552}, // Yiwnarmenian
{0x542576f9, 0x0a07}, // igurmukhi
@@ -1484,17 +1364,13 @@ static struct Hash2Unicode {
{0x548a6dde, 0x0451}, // iocyrillic
{0x5494ff15, 0x053c}, // Liwnarmenian
{0x54cc0e6b, 0x0212}, // Rinvertedbreve
- {0x54d729fd, 0xf6bf}, // LL
{0x54dfda54, 0xfe44}, // whitecornerbracketrightvertical
{0x54f8c0f2, 0x1e78}, // Utildeacute
{0x55003750, 0x05b0}, // shevanarrowhebrew
{0x55021a5a, 0x0644}, // lamarabic
- {0x5509dd21, 0xf7bf}, // questiondownsmall
{0x550a9f23, 0x0452}, // djecyrillic
{0x550d7456, 0x0061}, // a
{0x5512ec97, 0x0067}, // g
- {0x55164cbd, 0xf7fb}, // Ucircumflexsmall
- {0x552705b9, 0xf7e1}, // Aacutesmall
{0x552e72ea, 0x1e8d}, // xdieresis
{0x5532b75e, 0x3044}, // ihiragana
{0x554f67fa, 0x1e4e}, // Otildedieresis
@@ -1504,9 +1380,8 @@ static struct Hash2Unicode {
{0x558d2385, 0x0318}, // lefttackbelowcmb
{0x55aa99d5, 0xfe3f}, // anglebracketleftvertical
{0x55b44317, 0x1ef2}, // Ygrave
- {0x55b8ceec, 0xed6b}, // radicalvertex
{0x55c6e8cd, 0x0aac}, // bagujarati
- {0x55e74cbe, 0xf8fb}, // bracketrightbt
+ {0x55e74cbe, 0x23a6}, // bracketrightbt
{0x55e81ebb, 0x3124}, // angbopomofo
{0x56000715, 0x33b0}, // pssquare
{0x560f90ad, 0x25e4}, // blackupperlefttriangle
@@ -1515,24 +1390,19 @@ static struct Hash2Unicode {
{0x56362764, 0x24d0}, // acircle
{0x565aa859, 0x30a8}, // ekatakana
{0x565d95fc, 0x3109}, // dbopomofo
- {0x566af414, 0xed6a}, // radicaltp
- {0x567e8709, 0xf6f4}, // Brevesmall
- {0x569f0bdc, 0x05e7}, // qofqamats
{0x56a0101f, 0x04ac}, // Tedescendercyrillic
{0x56d036b9, 0x000f}, // controlSI
{0x56deae12, 0x0102}, // Abreve
{0x57050efe, 0x0145}, // Ncommaaccent
{0x5708e98e, 0x3154}, // ekorean
- {0x570da3d3, 0xf8e9}, // copyrightsans
{0x5713d355, 0x2790}, // sevencircleinversesansserif
- {0x575226bc, 0xf8f7}, // parenrightex
+ {0x575226bc, 0x239f}, // parenrightex
{0x57687403, 0x0e08}, // chochanthai
{0x576959da, 0x04b7}, // chedescendercyrillic
{0x577fdcc5, 0x033a}, // bridgeinvertedbelowcmb
{0x578594f4, 0x0e47}, // maitaikhuthai
{0x579e8de2, 0x2074}, // foursuperior
{0x57a10bfe, 0x0435}, // iecyrillic
- {0x57a26403, 0xf6eb}, // dsuperior
{0x57c4d153, 0xfb1f}, // yodyodpatahhebrew
{0x57c8c90f, 0x313b}, // rieulmieumkorean
{0x57cea503, 0xff17}, // sevenmonospace
@@ -1550,14 +1420,12 @@ static struct Hash2Unicode {
{0x587d22eb, 0x208d}, // parenleftinferior
{0x58a61c85, 0x1e9a}, // arighthalfring
{0x58ab0a67, 0x0544}, // Menarmenian
- {0x58ae8d36, 0x05e8}, // reshhatafpatah
{0x58ba15a9, 0x24c9}, // Tcircle
{0x58c52193, 0x221a}, // radical
{0x58df0572, 0x0301}, // acutecmb
{0x58dfd388, 0x3187}, // yoyakorean
{0x58e61a1f, 0x05e8}, // resh
{0x58ea1dd9, 0x0650}, // afii57456
- {0x59322213, 0xf7e8}, // Egravesmall
{0x593b3f38, 0x0aa1}, // ddagujarati
{0x5951351c, 0x0109}, // ccircumflex
{0x59664498, 0xff21}, // Amonospace
@@ -1581,7 +1449,6 @@ static struct Hash2Unicode {
{0x5a8d2a4a, 0x09c3}, // rvocalicvowelsignbengali
{0x5a963c7c, 0x0e02}, // khokhaithai
{0x5acd345c, 0x339c}, // squaremm
- {0x5ad6e1c9, 0x05e7}, // qofsegol
{0x5af634c5, 0x059e}, // gershayimaccenthebrew
{0x5b041347, 0x0581}, // coarmenian
{0x5b0fd985, 0x0360}, // tildedoublecmb
@@ -1593,7 +1460,6 @@ static struct Hash2Unicode {
{0x5b46f9e7, 0x2080}, // zeroinferior
{0x5b54a5c3, 0x05e1}, // afii57681
{0x5b5f52e7, 0x0421}, // afii10035
- {0x5b68b5ed, 0xf892}, // maitrilowleftthai
{0x5b6ab184, 0x25ef}, // largecircle
{0x5b6f6c30, 0x0003}, // controlETX
{0x5b720455, 0x014c}, // Omacron
@@ -1616,11 +1482,9 @@ static struct Hash2Unicode {
{0x5c4a060e, 0x0e29}, // sorusithai
{0x5c6b0ced, 0x05b8}, // qamats33
{0x5c71c76c, 0x24b8}, // Ccircle
- {0x5c738b36, 0xf776}, // Vsmall
{0x5c7f4966, 0x01b8}, // Ezhreversed
{0x5c97be88, 0x0a2a}, // pagurmukhi
{0x5c9a7487, 0x30ec}, // rekatakana
- {0x5c9f86aa, 0x05e8}, // reshshevahebrew
{0x5ca0edc2, 0x01e7}, // gcaron
{0x5cad2e17, 0x0679}, // tteharabic
{0x5cb64e9e, 0x0150}, // Ohungarumlaut
@@ -1639,7 +1503,6 @@ static struct Hash2Unicode {
{0x5d32256c, 0x25c6}, // blackdiamond
{0x5d333915, 0x2234}, // therefore
{0x5d42ce05, 0x30c2}, // dikatakana
- {0x5d4fa82e, 0xf724}, // dollaroldstyle
{0x5d590cb1, 0x05bb}, // qubutsnarrowhebrew
{0x5d71a05b, 0x0017}, // controlETB
{0x5d85b369, 0x05b8}, // qamats29
@@ -1648,7 +1511,6 @@ static struct Hash2Unicode {
{0x5dba07ed, 0x22a5}, // perpendicular
{0x5dbeec87, 0x01cd}, // Acaron
{0x5de3b63c, 0x09cb}, // ovowelsignbengali
- {0x5df717ca, 0x05e8}, // reshtserehebrew
{0x5e0aac56, 0x0200}, // Adblgrave
{0x5e1c8dfa, 0x05b0}, // sheva2e
{0x5e27fa57, 0xff6d}, // yusmallkatakanahalfwidth
@@ -1666,7 +1528,6 @@ static struct Hash2Unicode {
{0x5f4a5f07, 0x0abe}, // aavowelsigngujarati
{0x5f5c5d5f, 0x041b}, // Elcyrillic
{0x5f63748c, 0x03e6}, // Kheicoptic
- {0x5f6ca553, 0x230a}, // floorleftbigg
{0x5f7dc76d, 0x033b}, // squarebelowcmb
{0x5f881d5c, 0x3160}, // yukorean
{0x5f8f63e2, 0x24a0}, // eparen
@@ -1674,7 +1535,6 @@ static struct Hash2Unicode {
{0x5fa5f5cc, 0xfefa}, // lamalefhamzabelowfinalarabic
{0x5fb56903, 0x095d}, // rhadeva
{0x5fbeac33, 0x028b}, // vhook
- {0x5fd46519, 0xf6ef}, // msuperior
{0x5fe9065e, 0x042e}, // afii10048
{0x6037ae88, 0x1ef3}, // ygrave
{0x603b5882, 0x2287}, // reflexsuperset
@@ -1699,7 +1559,6 @@ static struct Hash2Unicode {
{0x61503571, 0x027b}, // rhookturned
{0x6154bc05, 0x043b}, // afii10077
{0x617c687c, 0x01a2}, // Oi
- {0x618467d6, 0xf7f3}, // Oacutesmall
{0x6198a771, 0xfef3}, // alefmaksurainitialarabic
{0x61a21109, 0x01c9}, // lj
{0x61a2d0df, 0x258c}, // lfblock
@@ -1714,14 +1573,12 @@ static struct Hash2Unicode {
{0x61f36361, 0x06f8}, // eightpersian
{0x61fe712f, 0x20a4}, // afii08941
{0x621057dd, 0x1ef5}, // ydotbelow
- {0x62106755, 0xf6e5}, // hypheninferior
{0x62127977, 0x266a}, // musicalnote
{0x62161c15, 0x05da}, // finalkafhebrew
{0x6229838d, 0x05d0}, // alef
{0x62447ae3, 0x0314}, // commareversedabovecmb
{0x6248b5e6, 0x33dd}, // wbsquare
{0x625320aa, 0x30b2}, // gekatakana
- {0x6259e0bf, 0xf6f1}, // rsuperior
{0x6260c6fc, 0x0589}, // periodarmenian
{0x6265e881, 0x2266}, // lessoverequal
{0x626cbaa4, 0x01bf}, // wynn
@@ -1729,7 +1586,7 @@ static struct Hash2Unicode {
{0x62896f4a, 0x05f2}, // yodyodhebrew
{0x628a5951, 0xff56}, // vmonospace
{0x62a11b25, 0x1e87}, // wdotaccent
- {0x62accaf5, 0xf8ed}, // parenleftbt
+ {0x62accaf5, 0x239d}, // parenleftbt
{0x62b2cd2d, 0x00c2}, // Acircumflex
{0x62b6e7ac, 0x01a5}, // phook
{0x62c361d5, 0x05e2}, // afii57682
@@ -1750,7 +1607,6 @@ static struct Hash2Unicode {
{0x637d3539, 0x00bc}, // onequarter
{0x6389d9bb, 0x0641}, // afii57441
{0x63a82931, 0x0297}, // cstretched
- {0x63ab7e3b, 0xf6dd}, // rupiah
{0x63d84bb6, 0x2281}, // notsucceeds
{0x63dfed74, 0x311f}, // eibopomofo
{0x63e274d2, 0xfc0b}, // tehjeemisolatedarabic
@@ -1762,12 +1618,9 @@ static struct Hash2Unicode {
{0x64468e36, 0x0e18}, // thothongthai
{0x64517fe8, 0x004b}, // K
{0x6453c78e, 0x064e}, // fathalowarabic
- {0x6454154f, 0xf6ec}, // esuperior
{0x6460d798, 0x3025}, // fivehangzhou
- {0x64699e37, 0x2309}, // ceilingrightBigg
{0x646b157e, 0x3242}, // ideographicselfparen
{0x646c5c19, 0x0ab5}, // vagujarati
- {0x64755597, 0x05e7}, // qofholamhebrew
{0x647eca4f, 0x09ae}, // mabengali
{0x64a1b76b, 0x30fa}, // vokatakana
{0x64d00b32, 0x0114}, // Ebreve
@@ -1784,13 +1637,12 @@ static struct Hash2Unicode {
{0x6543f12c, 0x01d5}, // Udieresismacron
{0x654d08a0, 0x0e3a}, // phinthuthai
{0x657ffabd, 0x22ee}, // ellipsisvertical
- {0x6594aba1, 0x02c3}, // a41
{0x6598fbfe, 0x3112}, // xbopomofo
{0x65a5bd1b, 0x24e1}, // rcircle
{0x65be15d1, 0x0a08}, // iigurmukhi
{0x65c095c5, 0x200e}, // afii299
{0x65cc1f56, 0x0545}, // Yiarmenian
- {0x662a6586, 0xf8f8}, // parenrightbt
+ {0x662a6586, 0x23a0}, // parenrightbt
{0x662a831c, 0x1eeb}, // uhorngrave
{0x663a2c1a, 0x3300}, // apaatosquare
{0x6642f834, 0x0361}, // breveinverteddoublecmb
@@ -1801,11 +1653,8 @@ static struct Hash2Unicode {
{0x666faf51, 0xfba5}, // hehhamzaabovefinalarabic
{0x6689dbc7, 0x33cb}, // HPsquare
{0x668e9764, 0x30a2}, // akatakana
- {0x669881eb, 0xf8e5}, // radicalex
- {0x66b92e17, 0x05e8}, // reshholam
{0x66bb979c, 0x246c}, // thirteencircle
{0x66c590a5, 0x2236}, // ratio
- {0x66e750ef, 0xf7ec}, // Igravesmall
{0x66e9c5c7, 0x3084}, // yahiragana
{0x66ef8fdf, 0x040f}, // afii10145
{0x66fb9b49, 0x33c9}, // gysquare
@@ -1819,7 +1668,6 @@ static struct Hash2Unicode {
{0x6776a85a, 0x0ac7}, // evowelsigngujarati
{0x6779be95, 0x3113}, // zhbopomofo
{0x6785194b, 0x221f}, // rightangle
- {0x67949ab4, 0xf891}, // maitrilowrightthai
{0x679d9205, 0x02c5}, // arrowheaddownmod
{0x679dcadd, 0x0e54}, // fourthai
{0x679ffc49, 0x2024}, // onedotenleader
@@ -1834,13 +1682,10 @@ static struct Hash2Unicode {
{0x6811e3e1, 0x0404}, // Ecyrillic
{0x6814026d, 0x02c8}, // verticallinemod
{0x682b08dd, 0x01ac}, // Thook
- {0x683090d6, 0xf6f0}, // osuperior
{0x6853e235, 0x0652}, // sukunarabic
{0x685932be, 0xfe36}, // parenrightvertical
- {0x68744fba, 0x220f}, // producttext
{0x68a76955, 0x00c7}, // Ccedilla
{0x68b3215e, 0x0339}, // ringhalfrightbelowcmb
- {0x68b3ae0f, 0x222e}, // contintegraldisplay
{0x68b98a65, 0x0679}, // afii57511
{0x68ccd1d8, 0x3212}, // mieumaparenkorean
{0x68eb418e, 0x3011}, // blacklenticularbracketright
@@ -1877,14 +1722,11 @@ static struct Hash2Unicode {
{0x6b83db74, 0x2295}, // circleplus
{0x6b85cd6e, 0x00a4}, // currency
{0x6b8b924f, 0x30d8}, // hekatakana
- {0x6b8f0a54, 0xf6df}, // centinferior
{0x6b908b1b, 0x09e7}, // onebengali
{0x6b98f18c, 0x212b}, // angstrom
{0x6b9adcc4, 0x25cf}, // blackcircle
{0x6b9f4fbe, 0x0940}, // iivowelsigndeva
- {0x6ba8c1e2, 0xf6ce}, // Grave
{0x6baa5ba4, 0x03ce}, // omegatonos
- {0x6bb62dc9, 0xf77a}, // Zsmall
{0x6bbd76c8, 0x0936}, // shadeva
{0x6bca6ff5, 0xfe4a}, // overlinecenterline
{0x6bd59d12, 0x0915}, // kadeva
@@ -1892,10 +1734,8 @@ static struct Hash2Unicode {
{0x6be13af7, 0x2199}, // arrowdownleft
{0x6bf10a81, 0x2015}, // horizontalbar
{0x6c0e37b1, 0x30ce}, // nokatakana
- {0x6c0f6861, 0x05e7}, // qofhatafsegolhebrew
{0x6c11086e, 0x0a1c}, // jagurmukhi
{0x6c180b9f, 0x0462}, // Yatcyrillic
- {0x6c23928a, 0x222e}, // contintegraltext
{0x6c429460, 0xfb40}, // nundageshhebrew
{0x6c5c9da6, 0x0457}, // yicyrillic
{0x6c781e8a, 0x25bd}, // whitedownpointingtriangle
@@ -1908,7 +1748,6 @@ static struct Hash2Unicode {
{0x6d02864a, 0x049c}, // Kaverticalstrokecyrillic
{0x6d1b554b, 0x0982}, // anusvarabengali
{0x6d3fc0d7, 0x040f}, // Dzhecyrillic
- {0x6d4379b8, 0x220f}, // productdisplay
{0x6d519305, 0x2169}, // Tenroman
{0x6d63a915, 0x02bc}, // apostrophemod
{0x6d6c6ece, 0x307f}, // mihiragana
@@ -1955,10 +1794,7 @@ static struct Hash2Unicode {
{0x6fae2151, 0x0aef}, // ninegujarati
{0x6fbeef2a, 0x044d}, // ereversedcyrillic
{0x6fc01d9f, 0x00f8}, // oslash
- {0x6fdfa2dc, 0xf6e7}, // periodinferior
- {0x70068cb8, 0xf7ea}, // Ecircumflexsmall
{0x702ecc19, 0x3054}, // gohiragana
- {0x70300d95, 0xf761}, // Asmall
{0x70534c83, 0x05a4}, // mahapakhlefthebrew
{0x7061d5ad, 0x255a}, // SF380000
{0x707057b4, 0xfb2e}, // alefpatahhebrew
@@ -1966,7 +1802,6 @@ static struct Hash2Unicode {
{0x7077f8df, 0x0163}, // tcommaaccent
{0x708cf64a, 0x0944}, // rrvocalicvowelsigndeva
{0x709b2bbe, 0x0056}, // V
- {0x709b801f, 0x05da}, // finalkafshevahebrew
{0x70a0d365, 0xfeee}, // wawfinalarabic
{0x70a7b34b, 0x05b5}, // tsere12
{0x70c1bcae, 0x1ede}, // Ohornhookabove
@@ -2001,7 +1836,6 @@ static struct Hash2Unicode {
{0x7278753d, 0x04d7}, // iebrevecyrillic
{0x728cf068, 0x020f}, // oinvertedbreve
{0x728f761b, 0x3111}, // qbopomofo
- {0x72ad941b, 0xf733}, // threeoldstyle
{0x72b3c6a8, 0x00b4}, // acute
{0x72ba7ff6, 0x3093}, // nhiragana
{0x72c6f1c4, 0xff5c}, // barmonospace
@@ -2011,8 +1845,6 @@ static struct Hash2Unicode {
{0x72fc7974, 0x2111}, // Ifraktur
{0x72fd959a, 0x002a}, // asterisk
{0x73032cb1, 0x3268}, // cieuccirclekorean
- {0x731486cf, 0xf6e1}, // commainferior
- {0x731a7d35, 0xf6fb}, // Ogoneksmall
{0x731be3b3, 0x3140}, // rieulhieuhkorean
{0x73200dbd, 0x0e20}, // phosamphaothai
{0x7322d42e, 0x24b9}, // Dcircle
@@ -2028,10 +1860,7 @@ static struct Hash2Unicode {
{0x73b2bbd4, 0xfe63}, // hyphensmall
{0x73b70a88, 0x05d8}, // afii57672
{0x73b7c451, 0x095a}, // ghhadeva
- {0x73c3073f, 0xf6ee}, // lsuperior
{0x73c5e60b, 0x004e}, // N
- {0x73e1033a, 0x22b4}, // a2
- {0x73e5498e, 0xf7fd}, // Yacutesmall
{0x73ee6902, 0x0965}, // dbldanda
{0x73f5578c, 0x093f}, // ivowelsigndeva
{0x74030714, 0x311c}, // ebopomofo
@@ -2055,12 +1884,10 @@ static struct Hash2Unicode {
{0x74f1fca9, 0x01db}, // Udieresisgrave
{0x7506e8c8, 0x24d1}, // bcircle
{0x751253a5, 0x2168}, // Nineroman
- {0x7542c0c4, 0xf8e8}, // registersans
{0x7544678b, 0x307d}, // pohiragana
{0x754982de, 0x06a4}, // veharabic
{0x755a250b, 0x09dd}, // rhabengali
{0x755f707c, 0x1ebf}, // ecircumflexacute
- {0x75811646, 0xf6e9}, // asuperior
{0x75841530, 0x2002}, // enspace
{0x75907eb0, 0x322c}, // ideographicwaterparen
{0x759ddc3d, 0x3068}, // tohiragana
@@ -2088,7 +1915,6 @@ static struct Hash2Unicode {
{0x76af2566, 0x05c1}, // afii57804
{0x76b279b9, 0x1e76}, // Ucircumflexbelow
{0x76be5e67, 0x0389}, // Etatonos
- {0x76e8986c, 0x27e9}, // angbracketrightBigg
{0x76ec167e, 0x3128}, // ubopomofo
{0x76ee8ef9, 0x326a}, // khieukhcirclekorean
{0x76fa92ba, 0x2225}, // parallel
@@ -2096,9 +1922,8 @@ static struct Hash2Unicode {
{0x772d6b37, 0x3294}, // ideographnamecircle
{0x774eb078, 0x0328}, // ogonekcmb
{0x774fe771, 0x064d}, // kasratanarabic
- {0x7752bcc4, 0xf8f6}, // parenrighttp
+ {0x7752bcc4, 0x239e}, // parenrighttp
{0x775a46a9, 0xffe0}, // centmonospace
- {0x77617e4f, 0xf762}, // Bsmall
{0x77651620, 0x007b}, // braceleft
{0x776629fd, 0x044a}, // hardsigncyrillic
{0x7766a0eb, 0x041e}, // Ocyrillic
@@ -2115,7 +1940,6 @@ static struct Hash2Unicode {
{0x77ee824a, 0xfba7}, // hehfinalaltonearabic
{0x77f415ae, 0x03eb}, // gangiacoptic
{0x77f608a5, 0x00ec}, // igrave
- {0x78075c57, 0x007d}, // bracerightBig
{0x78151b28, 0x04f8}, // Yerudieresiscyrillic
{0x781b1710, 0x3175}, // pieupsiostikeutkorean
{0x782f5323, 0x2297}, // circlemultiply
@@ -2128,7 +1952,6 @@ static struct Hash2Unicode {
{0x7878b2f0, 0x323c}, // ideographicsuperviseparen
{0x788e7d3e, 0x05b3}, // hatafqamats
{0x78965447, 0x0593}, // shalshelethebrew
- {0x78a67a97, 0xf8ea}, // trademarksans
{0x78d4db12, 0x032e}, // brevebelowcmb
{0x78da6d23, 0x046e}, // Ksicyrillic
{0x78f4df25, 0x04d9}, // schwacyrillic
@@ -2168,11 +1991,9 @@ static struct Hash2Unicode {
{0x7ad78099, 0x05b5}, // afii57794
{0x7b074f4f, 0x062c}, // jeemarabic
{0x7b0aca00, 0x3315}, // kiroguramusquare
- {0x7b3db32a, 0x221a}, // radicalBig
{0x7b443626, 0x3331}, // birusquare
{0x7b5e0418, 0xff10}, // zeromonospace
{0x7b7b9d4d, 0x0424}, // afii10038
- {0x7b7fbb65, 0xf7b8}, // Cedillasmall
{0x7b80aee5, 0x05bb}, // qubutsquarterhebrew
{0x7b8c3862, 0x02b8}, // ysuperior
{0x7bac8f33, 0x0016}, // controlSYN
@@ -2180,8 +2001,6 @@ static struct Hash2Unicode {
{0x7bd5ca88, 0x33ca}, // hasquare
{0x7bd8b82b, 0x3005}, // ideographiciterationmark
{0x7c301325, 0x0472}, // Fitacyrillic
- {0x7c35d223, 0x05dc}, // lamedholam
- {0x7c3e1570, 0x0028}, // parenleftbigg
{0x7c3f4566, 0x00e7}, // ccedilla
{0x7c4777ca, 0xfcc9}, // lamjeeminitialarabic
{0x7c4f7ece, 0x0ab2}, // lagujarati
@@ -2195,7 +2014,6 @@ static struct Hash2Unicode {
{0x7cf2e5f4, 0x0029}, // parenright
{0x7cf2ebbd, 0xff96}, // yokatakanahalfwidth
{0x7cf8ce2e, 0x3394}, // thzsquare
- {0x7d1ff070, 0xf896}, // thanthakhatupperleftthai
{0x7d32ca29, 0x0127}, // hbar
{0x7d44a576, 0x24b1}, // vparen
{0x7d4ddd33, 0x2554}, // SF390000
@@ -2213,15 +2031,10 @@ static struct Hash2Unicode {
{0x7e46df3d, 0x30d7}, // pukatakana
{0x7e4f805e, 0x3067}, // dehiragana
{0x7e5c9fda, 0x042f}, // IAcyrillic
- {0x7e60a480, 0x0029}, // parenrightbigg
{0x7e701b6d, 0xff0d}, // hyphenmonospace
{0x7e739224, 0x3046}, // uhiragana
- {0x7e7d09ba, 0xf6e4}, // dollarsuperior
- {0x7e947543, 0xf773}, // Ssmall
{0x7ebf5260, 0x0031}, // one
{0x7eddac19, 0x09f4}, // onenumeratorbengali
- {0x7eefb1cf, 0x05d3}, // daletshevahebrew
- {0x7f0a4f83, 0x0631}, // rehyehaleflamarabic
{0x7f43cdd7, 0x0ab0}, // ragujarati
{0x7f56c599, 0x0141}, // Lslash
{0x7f5b3579, 0x1e74}, // Utildebelow
@@ -2232,7 +2045,6 @@ static struct Hash2Unicode {
{0x7f92fe37, 0x066d}, // asteriskarabic
{0x7f97f320, 0x301c}, // wavedash
{0x7f99701f, 0xfb2a}, // shinshindothebrew
- {0x7fad7e30, 0xf737}, // sevenoldstyle
{0x7fbd4335, 0x2309}, // ceilingrightbig
{0x7ff2087d, 0x01df}, // adieresismacron
{0x7ffdad4c, 0x326e}, // kiyeokacirclekorean
@@ -2242,12 +2054,10 @@ static struct Hash2Unicode {
{0x8029e67d, 0x049b}, // kadescendercyrillic
{0x803a882f, 0x0a8b}, // rvocalicgujarati
{0x80417827, 0x33a9}, // pasquare
- {0x80461d8b, 0xf6c7}, // afii10831
{0x8048e51c, 0x24e6}, // wcircle
{0x80690312, 0x0155}, // racute
{0x8076b638, 0xfedf}, // laminitialarabic
{0x80792dfa, 0x0478}, // Ukcyrillic
- {0x807bd424, 0xf886}, // saraiileftthai
{0x8082c40e, 0x251c}, // SF080000
{0x8086d5c5, 0x0490}, // afii10050
{0x80890e42, 0x0316}, // gravebelowcmb
@@ -2264,12 +2074,10 @@ static struct Hash2Unicode {
{0x8140027d, 0x24d3}, // dcircle
{0x815134d6, 0x00cd}, // Iacute
{0x81589a47, 0x2220}, // angle
- {0x816211ee, 0x05dc}, // lamedholamdageshhebrew
{0x81658581, 0x0207}, // einvertedbreve
{0x816871c9, 0x1ec2}, // Ecircumflexhookabove
{0x8169da43, 0x0483}, // titlocyrilliccmb
{0x8170d563, 0x256b}, // SF530000
- {0x81796466, 0xf6f2}, // ssuperior
{0x817f112a, 0x1e37}, // ldotbelow
{0x817f9471, 0x1e92}, // Zdotbelow
{0x81806da2, 0x328d}, // ideographwoodcircle
@@ -2306,8 +2114,6 @@ static struct Hash2Unicode {
{0x832d9a03, 0x263b}, // invsmileface
{0x83393d74, 0xfef7}, // lamalefhamzaaboveisolatedarabic
{0x83589346, 0x1eb0}, // Abrevegrave
- {0x836fd101, 0x25c7}, // a51
- {0x83736e7a, 0x2308}, // ceilingleftBig
{0x837601e2, 0x0ae7}, // onegujarati
{0x8377c3f2, 0x026b}, // lmiddletilde
{0x837a2830, 0x2113}, // lsquare
@@ -2344,17 +2150,14 @@ static struct Hash2Unicode {
{0x84e0b580, 0x04ef}, // umacroncyrillic
{0x8501599a, 0x30f6}, // kesmallkatakana
{0x85103d59, 0xfb39}, // yoddagesh
- {0x851a3968, 0xf6da}, // registerserif
{0x853a4f53, 0x217b}, // twelveroman
{0x855c805d, 0xff1a}, // colonmonospace
{0x856013c8, 0x248a}, // threeperiod
{0x8567c154, 0x01bc}, // Tonefive
- {0x856bfeb5, 0x0029}, // parenrightBigg
{0x85a6c8bc, 0x310a}, // tbopomofo
{0x85b41716, 0x201a}, // quotesinglbase
{0x85b6b018, 0x2228}, // logicalor
{0x85c83eb6, 0xff77}, // kikatakanahalfwidth
- {0x85cde6eb, 0xf8e7}, // arrowhorizex
{0x85ce16f4, 0x05da}, // afii57674
{0x85e92466, 0x2282}, // propersubset
{0x85ee23d7, 0x311b}, // obopomofo
@@ -2364,7 +2167,6 @@ static struct Hash2Unicode {
{0x86129c18, 0x2209}, // notelementof
{0x861e8048, 0xff54}, // tmonospace
{0x861ef200, 0x1e75}, // utildebelow
- {0x864008ae, 0x05d3}, // daletqubutshebrew
{0x8654695b, 0x0020}, // spacehackarabic
{0x865c7659, 0x0312}, // commaturnedabovecmb
{0x8665f7ab, 0x201b}, // quotereversed
@@ -2416,12 +2218,10 @@ static struct Hash2Unicode {
{0x88e4df33, 0x1e1b}, // etildebelow
{0x88e6eee8, 0x3119}, // sbopomofo
{0x88ea0124, 0x0949}, // ocandravowelsigndeva
- {0x88ea9631, 0xf7af}, // Macronsmall
{0x88f38eed, 0x21d0}, // arrowdblleft
{0x88f62270, 0x314f}, // akorean
{0x88fdc1bb, 0x308e}, // wasmallhiragana
{0x88fdcf2e, 0x039e}, // Xi
- {0x89098ea4, 0x2211}, // summationdisplay
{0x893a8f13, 0x09b9}, // habengali
{0x89468742, 0x0e1f}, // fofanthai
{0x897340ea, 0x3207}, // ieungparenkorean
@@ -2445,7 +2245,6 @@ static struct Hash2Unicode {
{0x8ab11ede, 0x0907}, // ideva
{0x8ab50af4, 0xfedb}, // kafinitialarabic
{0x8ac9c3df, 0x00cb}, // Edieresis
- {0x8ad52e55, 0x05d3}, // dalethatafsegolhebrew
{0x8ae82e18, 0x05c2}, // sindothebrew
{0x8aebef01, 0x064f}, // afii57455
{0x8af00e69, 0x3396}, // mlsquare
@@ -2474,23 +2273,18 @@ static struct Hash2Unicode {
{0x8c169f16, 0x0a4c}, // aumatragurmukhi
{0x8c1a91ec, 0x1ed2}, // Ocircumflexgrave
{0x8c21575a, 0x2175}, // sixroman
- {0x8c31d770, 0x007d}, // bracerightBigg
- {0x8c382c45, 0xf6c5}, // afii10064
{0x8c3dc32f, 0x0632}, // afii57426
{0x8c5fd3c7, 0x05dd}, // afii57677
- {0x8c6ceb51, 0xeb61}, // suppress
{0x8c7614fd, 0x0046}, // F
{0x8c789c98, 0x0255}, // ccurl
{0x8c7eba77, 0x3114}, // chbopomofo
{0x8c941f03, 0x0639}, // afii57433
{0x8c9c3f66, 0x0e37}, // saraueethai
- {0x8c9d6579, 0x2308}, // ceilingleftBigg
{0x8cb6cb59, 0xfb6c}, // vehinitialarabic
{0x8cbe2a76, 0x0951}, // udattadeva
{0x8cc838c1, 0x099f}, // ttabengali
{0x8ccab94e, 0x311d}, // ehbopomofo
{0x8cd2ceac, 0x322f}, // ideographicearthparen
- {0x8cd87862, 0x2a01}, // circleplusdisplay
{0x8cdd7a5e, 0xfefb}, // lamalefisolatedarabic
{0x8cfeaaad, 0x04b4}, // Tetsecyrillic
{0x8d0e3bcc, 0x0162}, // Tcommaaccent
@@ -2506,7 +2300,6 @@ static struct Hash2Unicode {
{0x8d5ae6d4, 0x0440}, // ercyrillic
{0x8d62c566, 0x21e0}, // arrowdashleft
{0x8d7f2614, 0x2164}, // Fiveroman
- {0x8d983a6e, 0x22b5}, // a4
{0x8db3e76c, 0x1e97}, // tdieresis
{0x8dbd6f57, 0xffe1}, // sterlingmonospace
{0x8dc41abc, 0x1e33}, // kdotbelow
@@ -2517,7 +2310,6 @@ static struct Hash2Unicode {
{0x8e325301, 0x0133}, // ij
{0x8e3386c6, 0x0439}, // iishortcyrillic
{0x8e360b54, 0x027d}, // rhook
- {0x8e38f2c0, 0x005d}, // bracketrightbig
{0x8e40b292, 0x01fb}, // aringacute
{0x8e467ab5, 0x1ecc}, // Odotbelow
{0x8e474342, 0x1e2a}, // Hbrevebelow
@@ -2529,7 +2321,6 @@ static struct Hash2Unicode {
{0x8e7aa1b5, 0x207c}, // equalsuperior
{0x8e8e0711, 0x042f}, // afii10049
{0x8e91af6c, 0x3000}, // ideographicspace
- {0x8ec625f1, 0x2304}, // a43
{0x8ec9ea4f, 0xfb40}, // nundagesh
{0x8eca9ee8, 0x045c}, // kjecyrillic
{0x8ed1765d, 0xff36}, // Vmonospace
@@ -2538,7 +2329,6 @@ static struct Hash2Unicode {
{0x8f19bc84, 0x0e4a}, // maitrithai
{0x8f289d06, 0x0444}, // efcyrillic
{0x8f28eae1, 0x013f}, // Ldotaccent
- {0x8f3d926c, 0xf7e2}, // Acircumflexsmall
{0x8f4b9c51, 0x0404}, // afii10053
{0x8f505863, 0x04f2}, // Uhungarumlautcyrillic
{0x8f52df2f, 0x0256}, // dtail
@@ -2546,7 +2336,6 @@ static struct Hash2Unicode {
{0x8f760fbe, 0x25e5}, // blackupperrighttriangle
{0x8f7f3f67, 0x0645}, // afii57445
{0x8f89b56f, 0x05b8}, // qamatsqatanhebrew
- {0x8f9b61ad, 0x22c0}, // logicalanddisplay
{0x8fa69b6c, 0x0331}, // macronbelowcmb
{0x8fbba331, 0x0205}, // edblgrave
{0x8fc968d8, 0x01b9}, // ezhreversed
@@ -2571,22 +2360,17 @@ static struct Hash2Unicode {
{0x90b86ad8, 0x30dd}, // pokatakana
{0x90b9c076, 0xff0f}, // slashmonospace
{0x90c2be85, 0x0268}, // istroke
- {0x90d8e15f, 0xf6e8}, // periodsuperior
- {0x91032be8, 0x02c6}, // hatwide
{0x910a1b16, 0x03f1}, // rhosymbolgreek
- {0x91306ea5, 0x2127}, // a48
{0x9132f814, 0xff22}, // Bmonospace
{0x9134ebbc, 0x01cb}, // Nj
{0x913ff5ff, 0x3125}, // engbopomofo
{0x9141d43c, 0x2126}, // Ohm
- {0x914548fb, 0xf7f9}, // Ugravesmall
{0x914ce494, 0x05e6}, // afii57686
{0x9166eec8, 0x33ba}, // pwsquare
{0x916cdeb8, 0xfed2}, // fehfinalarabic
{0x917f2f3f, 0x0438}, // afii10074
{0x9181b388, 0x01eb}, // oogonek
{0x9184e24f, 0x30ab}, // kakatakana
- {0x919c9ad4, 0xf898}, // thanthakhatlowleftthai
{0x919f5679, 0x00ca}, // Ecircumflex
{0x91acc220, 0xff91}, // mukatakanahalfwidth
{0x91accd4b, 0x0937}, // ssadeva
@@ -2594,9 +2378,7 @@ static struct Hash2Unicode {
{0x91d99037, 0x1eb9}, // edotbelow
{0x91de3939, 0x064f}, // dammalowarabic
{0x91e65480, 0x0abf}, // ivowelsigngujarati
- {0x91ea8b93, 0x2303}, // a42
{0x91eaac20, 0x3214}, // siosaparenkorean
- {0x920233a7, 0xf6de}, // threequartersemdash
{0x920dae79, 0x039f}, // Omicron
{0x9215b042, 0x3147}, // ieungkorean
{0x9220d7f0, 0xff69}, // usmallkatakanahalfwidth
@@ -2606,7 +2388,6 @@ static struct Hash2Unicode {
{0x926b691e, 0x0100}, // Amacron
{0x92aa52d3, 0x30fb}, // dotkatakana
{0x92e2ffd9, 0x21e8}, // arrowrightwhite
- {0x92e50e35, 0xf88e}, // maitholowrightthai
{0x92f283dc, 0x25d8}, // bulletinverse
{0x92f96dbe, 0x1e56}, // Pdotaccent
{0x930724f6, 0x06ba}, // noonghunnaarabic
@@ -2634,9 +2415,7 @@ static struct Hash2Unicode {
{0x94b7f6ea, 0x0463}, // yatcyrillic
{0x94c36e74, 0x3261}, // nieuncirclekorean
{0x94c9571f, 0x25ac}, // blackrectangle
- {0x94ca16e5, 0xf893}, // maichattawaupperleftthai
{0x94d13d1c, 0xfe39}, // tortoiseshellbracketleftvertical
- {0x94d44c33, 0x007b}, // braceleftbig
{0x94d74b96, 0x1e64}, // Sacutedotaccent
{0x94e6f584, 0x3058}, // zihiragana
{0x94ee5ae7, 0x2792}, // ninecircleinversesansserif
@@ -2646,9 +2425,7 @@ static struct Hash2Unicode {
{0x951ae869, 0x09dc}, // rrabengali
{0x952cce64, 0x04ee}, // Umacroncyrillic
{0x952ec009, 0x0988}, // iibengali
- {0x95394a64, 0x05da}, // finalkafsheva
{0x953a0a51, 0x2211}, // summation
- {0x954920d5, 0xf769}, // Ismall
{0x954a8776, 0x03d1}, // thetasymbolgreek
{0x95526ac8, 0x2500}, // SF100000
{0x9559e176, 0x05b7}, // patah2a
@@ -2671,7 +2448,6 @@ static struct Hash2Unicode {
{0x9638605a, 0x0669}, // ninearabic
{0x967b01ac, 0x05b9}, // holamhebrew
{0x967d0326, 0x3134}, // nieunkorean
- {0x968e4cb7, 0xf899}, // nikhahitleftthai
{0x96a5e022, 0x25d9}, // invcircle
{0x96b677d5, 0x0153}, // oe
{0x96c05d98, 0x01f2}, // Dz
@@ -2704,14 +2480,11 @@ static struct Hash2Unicode {
{0x987e6d13, 0x0411}, // Becyrillic
{0x9896e370, 0x0402}, // afii10051
{0x98b02dc0, 0x0a48}, // aimatragurmukhi
- {0x98bf4a1b, 0xf6d0}, // Macron
- {0x98c60f17, 0xf6d9}, // copyrightserif
{0x98d74b1c, 0x01c8}, // Lj
{0x98d9aba5, 0x03ae}, // etatonos
{0x98eba766, 0x018b}, // Dtopbar
{0x98f4783f, 0x24ac}, // qparen
{0x98f4b751, 0x0651}, // afii57457
- {0x98ffb065, 0x02c6}, // hatwider
{0x99104281, 0x02e5}, // tonebarextrahighmod
{0x99235205, 0x05dc}, // lamedhebrew
{0x994ebac3, 0x05c0}, // afii57842
@@ -2734,10 +2507,8 @@ static struct Hash2Unicode {
{0x9a50ec2e, 0x05b6}, // segolquarterhebrew
{0x9a7aab21, 0x05c3}, // sofpasuqhebrew
{0x9ac6c137, 0x0e0f}, // topatakthai
- {0x9ae2a69d, 0xf6c0}, // ll
{0x9aea680b, 0x3029}, // ninehangzhou
{0x9af6d63b, 0x054a}, // Peharmenian
- {0x9b064cf1, 0xfedf}, // lammeemjeeminitialarabic
{0x9b09b61d, 0x0a10}, // aigurmukhi
{0x9b0db21d, 0x0402}, // Djecyrillic
{0x9b100042, 0x0e21}, // momathai
@@ -2755,7 +2526,6 @@ static struct Hash2Unicode {
{0x9bcccde6, 0x0e4e}, // yamakkanthai
{0x9bd59a36, 0x300e}, // whitecornerbracketleft
{0x9bdb98a4, 0x1e5e}, // Rlinebelow
- {0x9bdfdedf, 0x05d3}, // daletsheva
{0x9be54046, 0x0e0a}, // chochangthai
{0x9bfe067d, 0x0405}, // Dzecyrillic
{0x9c14c866, 0x0484}, // palatalizationcyrilliccmb
@@ -2793,8 +2563,6 @@ static struct Hash2Unicode {
{0x9e1247f8, 0x0033}, // three
{0x9e248728, 0x3053}, // kohiragana
{0x9e2d5a68, 0x053f}, // Kenarmenian
- {0x9e37413a, 0x22c2}, // intersectiondisplay
- {0x9e4de0cc, 0x221a}, // radicalBigg
{0x9e5de325, 0x222e}, // contourintegral
{0x9e65e800, 0x248b}, // fourperiod
{0x9e98d52c, 0x2483}, // sixteenparen
@@ -2804,9 +2572,7 @@ static struct Hash2Unicode {
{0x9eb5aea3, 0x3142}, // pieupkorean
{0x9ebea1a0, 0x3150}, // aekorean
{0x9ee7bbd1, 0x094b}, // ovowelsigndeva
- {0x9eeac84b, 0xfee7}, // noonhehinitialarabic
{0x9eedaba9, 0x0113}, // emacron
- {0x9ef0c911, 0xf765}, // Esmall
{0x9f023815, 0x20ac}, // euro
{0x9f30fc87, 0xfec2}, // tahfinalarabic
{0x9f37894c, 0x040e}, // afii10062
@@ -2816,11 +2582,9 @@ static struct Hash2Unicode {
{0x9f6f9105, 0x0433}, // gecyrillic
{0x9f739695, 0x04f9}, // yerudieresiscyrillic
{0x9f79f6eb, 0xfb33}, // daletdageshhebrew
- {0x9f7f5e1f, 0xf897}, // thanthakhatlowrightthai
{0x9f8cff14, 0x003e}, // greater
{0x9f94b2e4, 0x04a1}, // kabashkircyrillic
{0x9fa5f7ad, 0x0e49}, // maithothai
- {0x9fa872ec, 0x02dc}, // tildewidest
{0x9fc7ffac, 0x05b4}, // hiriqhebrew
{0x9fd406b1, 0xfed8}, // qafmedialarabic
{0x9fd7c50e, 0x05bb}, // afii57796
@@ -2834,9 +2598,7 @@ static struct Hash2Unicode {
{0xa05ccf71, 0x05e1}, // samekhhebrew
{0xa069fd2d, 0x012b}, // imacron
{0xa08ca5a7, 0x2491}, // tenperiod
- {0xa09c7d02, 0x05e8}, // reshhatafpatahhebrew
{0xa0a317f9, 0x0574}, // menarmenian
- {0xa0adde45, 0xf884}, // maihanakatleftthai
{0xa0c2ffe3, 0x247a}, // sevenparen
{0xa0e40fac, 0x337b}, // heiseierasquare
{0xa0e487b8, 0x33cd}, // KKsquare
@@ -2848,7 +2610,6 @@ static struct Hash2Unicode {
{0xa12d2230, 0x05b5}, // tsere2b
{0xa134a191, 0xff11}, // onemonospace
{0xa14f5367, 0x05b0}, // sheva15
- {0xa14fd78e, 0x2193}, // arrowbt
{0xa157c7c6, 0x0643}, // kafarabic
{0xa15811a3, 0x061f}, // questionarabic
{0xa1697005, 0x0015}, // controlNAK
@@ -2860,7 +2621,6 @@ static struct Hash2Unicode {
{0xa20cadbf, 0x0062}, // b
{0xa20ea9da, 0x24aa}, // oparen
{0xa212ed2d, 0x0e38}, // sarauthai
- {0xa23bb3ad, 0x222b}, // integraltext
{0xa2448aa1, 0x01e6}, // Gcaron
{0xa2543878, 0x326f}, // nieunacirclekorean
{0xa254ebdd, 0xfb3e}, // memdagesh
@@ -2894,7 +2654,6 @@ static struct Hash2Unicode {
{0xa3fe88d1, 0x0104}, // Aogonek
{0xa40369ed, 0x32a9}, // ideographicmedicinecircle
{0xa4259ac9, 0xff76}, // kakatakanahalfwidth
- {0xa43a91b7, 0x005b}, // bracketleftbig
{0xa43cdc2e, 0xfb44}, // pedageshhebrew
{0xa446d45f, 0x3224}, // fiveideographicparen
{0xa450f946, 0x0454}, // afii10101
@@ -2910,7 +2669,6 @@ static struct Hash2Unicode {
{0xa4aa8935, 0xff58}, // xmonospace
{0xa4af8f73, 0x2282}, // subset
{0xa4decb10, 0x0a72}, // irigurmukhi
- {0xa4ebd5d8, 0x05e7}, // qofhiriqhebrew
{0xa50a3a99, 0x0630}, // afii57424
{0xa50cf621, 0xff7e}, // sekatakanahalfwidth
{0xa512e58d, 0xff83}, // tekatakanahalfwidth
@@ -2927,7 +2685,6 @@ static struct Hash2Unicode {
{0xa60745ee, 0x2250}, // approaches
{0xa6281f81, 0x0142}, // lslash
{0xa62afc92, 0x0534}, // Daarmenian
- {0xa63a8cce, 0xf7f4}, // Ocircumflexsmall
{0xa6454b66, 0x2498}, // seventeenperiod
{0xa64723d6, 0x30af}, // kukatakana
{0xa6522894, 0x24da}, // kcircle
@@ -2947,7 +2704,6 @@ static struct Hash2Unicode {
{0xa6e68e9f, 0x0966}, // zerodeva
{0xa6f16c03, 0x03c2}, // sigma1
{0xa6f2df0d, 0x0a32}, // lagurmukhi
- {0xa6f3cb6a, 0x21d3}, // arrowdblbt
{0xa716a470, 0x2464}, // fivecircle
{0xa71dfe13, 0x1ea2}, // Ahookabove
{0xa73026ce, 0x007a}, // z
@@ -2978,7 +2734,6 @@ static struct Hash2Unicode {
{0xa8547bdd, 0x0455}, // afii10102
{0xa8665e8d, 0x05b1}, // afii57801
{0xa877e561, 0x2642}, // male
- {0xa87899cd, 0xf6e6}, // hyphensuperior
{0xa8982f3b, 0x09b2}, // labengali
{0xa8a24959, 0x00d0}, // Eth
{0xa8b6c7f5, 0x0a2e}, // magurmukhi
@@ -3000,10 +2755,7 @@ static struct Hash2Unicode {
{0xa9a0932f, 0x2077}, // sevensuperior
{0xa9af18f2, 0x30b4}, // gokatakana
{0xa9c0b182, 0x2264}, // lessequal
- {0xa9dc390a, 0x05da}, // finalkafqamatshebrew
- {0xa9e88297, 0x2053}, // a58
{0xaa13efde, 0x007d}, // braceright
- {0xaa245bb8, 0x0028}, // parenleftBig
{0xaa4e278b, 0x0967}, // onedeva
{0xaa51d75f, 0x2476}, // threeparen
{0xaa69d0f1, 0x256c}, // SF440000
@@ -3024,7 +2776,6 @@ static struct Hash2Unicode {
{0xab24577f, 0x0667}, // sevenarabic
{0xab2b4200, 0x2105}, // careof
{0xab3b4b27, 0x24e2}, // scircle
- {0xab52e61f, 0x05d3}, // dalethatafpatah
{0xab808d1e, 0x2087}, // seveninferior
{0xab8a6656, 0x01d0}, // icaron
{0xaba55a59, 0xfb32}, // gimeldageshhebrew
@@ -3039,7 +2790,6 @@ static struct Hash2Unicode {
{0xac50a082, 0x33a3}, // mmcubedsquare
{0xac5faca7, 0x230b}, // floorrightbig
{0xac67aca2, 0x045b}, // tshecyrillic
- {0xacac7818, 0x219d}, // a59
{0xacb92bab, 0x0691}, // rreharabic
{0xacd00f05, 0x21c6}, // arrowleftoverright
{0xacd11e18, 0x2010}, // hyphentwo
@@ -3051,7 +2801,6 @@ static struct Hash2Unicode {
{0xad33f4b3, 0x04c1}, // Zhebrevecyrillic
{0xad37f8e0, 0x0a24}, // tagurmukhi
{0xad38bc31, 0x2194}, // arrowboth
- {0xad45a65c, 0xf6cc}, // DieresisAcute
{0xad5fe438, 0x0924}, // tadeva
{0xad781e89, 0x200c}, // afii61664
{0xad8ff38a, 0x0a21}, // ddagurmukhi
@@ -3062,27 +2811,22 @@ static struct Hash2Unicode {
{0xadf402a9, 0x0989}, // ubengali
{0xadf4d422, 0x0625}, // alefhamzabelowarabic
{0xae04e5ad, 0x0a15}, // kagurmukhi
- {0xae06976c, 0xf6d5}, // cyrflex
{0xae1f7b0a, 0x2076}, // sixsuperior
{0xae23dd7b, 0x1eaf}, // abreveacute
{0xae30147f, 0x0908}, // iideva
- {0xae346d0d, 0x05e8}, // reshsheva
{0xae56317c, 0x24ae}, // sparen
{0xae6f7e74, 0x031b}, // horncmb
{0xae7c975f, 0x249a}, // nineteenperiod
{0xae8f4e4c, 0x0406}, // afii10055
- {0xaeac4f55, 0xf7e9}, // Eacutesmall
{0xaeb06274, 0x0423}, // Ucyrillic
{0xaec173e8, 0x03b8}, // theta
{0xaee16fb6, 0xfe4f}, // underscorewavy
{0xaef4b475, 0x1edf}, // ohornhookabove
{0xaef8393d, 0x0664}, // fourarabic
{0xaf01f370, 0x278e}, // fivecircleinversesansserif
- {0xaf0ebb84, 0xf6d6}, // dblgrave
{0xaf2073fd, 0x2103}, // centigrade
{0xaf3552ce, 0x3072}, // hihiragana
{0xaf36c6b1, 0x30cd}, // nekatakana
- {0xaf499180, 0x2309}, // ceilingrightBig
{0xaf4df0df, 0xfc0e}, // tehmeemisolatedarabic
{0xaf5710c9, 0x00c0}, // Agrave
{0xaf5b123d, 0x032d}, // circumflexbelowcmb
@@ -3097,7 +2841,6 @@ static struct Hash2Unicode {
{0xafbbfcac, 0xff71}, // akatakanahalfwidth
{0xafbd0738, 0x305d}, // sohiragana
{0xafc9b657, 0x0e17}, // thothahanthai
- {0xaff892ca, 0x05d3}, // dalettserehebrew
{0xb000150a, 0xfe96}, // tehfinalarabic
{0xb01f8020, 0x0666}, // sixarabic
{0xb026a3ef, 0x30b3}, // kokatakana
@@ -3139,12 +2882,8 @@ static struct Hash2Unicode {
{0xb2d7f27b, 0x0652}, // afii57458
{0xb2d95c63, 0x2518}, // SF040000
{0xb2f3aff0, 0x0946}, // eshortvowelsigndeva
- {0xb311c284, 0x05e7}, // qoftsere
{0xb3178333, 0x00da}, // Uacute
{0xb321fe9c, 0x21e3}, // arrowdashdown
- {0xb327a481, 0x2290}, // a61
- {0xb32daf91, 0xf6c6}, // afii10192
- {0xb32e268f, 0xf6fe}, // Tildesmall
{0xb3329e90, 0x313e}, // rieulthieuthkorean
{0xb33c41bc, 0x018c}, // dtopbar
{0xb340e2fe, 0x04a5}, // enghecyrillic
@@ -3160,7 +2899,6 @@ static struct Hash2Unicode {
{0xb3ed41be, 0x328f}, // ideographearthcircle
{0xb40169ac, 0x05b0}, // sheva22
{0xb405e3e3, 0x0439}, // afii10075
- {0xb40aff3d, 0xf730}, // zerooldstyle
{0xb41baecc, 0x2487}, // twentyparen
{0xb427632e, 0x05b3}, // hatafqamats1b
{0xb4344c30, 0x090f}, // edeva
@@ -3168,7 +2906,6 @@ static struct Hash2Unicode {
{0xb448d464, 0x0391}, // Alpha
{0xb45a5763, 0x201b}, // quoteleftreversed
{0xb45ef9b7, 0x03c0}, // pi
- {0xb47a6410, 0x230a}, // floorleftBigg
{0xb497903a, 0x01dd}, // eturned
{0xb4a55071, 0x1e7d}, // vtilde
{0xb4a6b289, 0x2235}, // because
@@ -3179,13 +2916,11 @@ static struct Hash2Unicode {
{0xb4c667bc, 0xff61}, // periodhalfwidth
{0xb4c72b2a, 0x0215}, // udblgrave
{0xb4e21f31, 0x2198}, // arrowdownright
- {0xb4fef2ed, 0x05d3}, // dalettsere
{0xb500deca, 0x1e41}, // mdotaccent
{0xb510d684, 0x1e80}, // Wgrave
{0xb526b685, 0x22bf}, // righttriangle
{0xb52e7c1d, 0x091e}, // nyadeva
{0xb53ca7e2, 0x326c}, // phieuphcirclekorean
- {0xb5866d85, 0x005c}, // backslashbig
{0xb58e59d7, 0x24ad}, // rparen
{0xb5af274f, 0x064a}, // afii57450
{0xb5b94593, 0x010d}, // ccaron
@@ -3202,7 +2937,6 @@ static struct Hash2Unicode {
{0xb66bf9b9, 0x33dc}, // svsquare
{0xb673fbb5, 0x038e}, // Upsilontonos
{0xb67e35c8, 0x0121}, // gdotaccent
- {0xb6951f83, 0x2210}, // coproductdisplay
{0xb6bb2a6b, 0x0116}, // Edot
{0xb6d45c54, 0xff7a}, // kokatakanahalfwidth
{0xb6f322b3, 0x05e5}, // afii57685
@@ -3211,7 +2945,6 @@ static struct Hash2Unicode {
{0xb6fea9e7, 0xff3f}, // underscoremonospace
{0xb70f3f60, 0xff4e}, // nmonospace
{0xb711b601, 0x039d}, // Nu
- {0xb7124c93, 0xf770}, // Psmall
{0xb719922a, 0x067e}, // afii57506
{0xb71d84e2, 0x3167}, // nieunsioskorean
{0xb726c42e, 0xfb49}, // shindageshhebrew
@@ -3255,13 +2988,11 @@ static struct Hash2Unicode {
{0xb9dbedd2, 0x317b}, // siosnieunkorean
{0xb9e5ea71, 0x314c}, // thieuthkorean
{0xb9e8b13e, 0x25a0}, // filledbox
- {0xb9ebf396, 0xf764}, // Dsmall
{0xb9f42560, 0x0964}, // danda
{0xb9f5b462, 0x0990}, // aibengali
{0xba1bcecd, 0x0176}, // Ycircumflex
{0xba1f80d6, 0x21e1}, // arrowdashup
{0xba21ad27, 0xfb3a}, // finalkafdagesh
- {0xba3aaf1e, 0x27e9}, // angbracketrightBig
{0xba4eb5f9, 0x0055}, // U
{0xba544632, 0x05db}, // afii57675
{0xba5871eb, 0x033e}, // tildeverticalcmb
@@ -3270,31 +3001,24 @@ static struct Hash2Unicode {
{0xba8d69d2, 0x232a}, // angleright
{0xbaa24d97, 0x05e0}, // afii57680
{0xbaa7aa4c, 0xfedc}, // kafmedialarabic
- {0xbab8d5ec, 0xf771}, // Qsmall
- {0xbabbf0c0, 0x05e8}, // reshhiriqhebrew
{0xbac7de75, 0x1ed3}, // ocircumflexgrave
{0xbad44ddc, 0x004f}, // O
{0xbad7d685, 0x04b8}, // Cheverticalstrokecyrillic
{0xbad97612, 0x03af}, // iotatonos
{0xbadf80e2, 0x06f5}, // fivepersian
- {0xbae37657, 0x0621}, // hamzalowkasratanarabic
{0xbafeb301, 0x0422}, // Tecyrillic
{0xbb28e2ea, 0x1eb2}, // Abrevehookabove
{0xbb30f37e, 0x0218}, // Scommaaccent
{0xbb6353b2, 0x0332}, // lowlinecmb
- {0xbb66e953, 0x22c8}, // a49
{0xbb72d76e, 0x0139}, // Lacute
- {0xbb89235d, 0xf6e0}, // centsuperior
{0xbb906e01, 0x3266}, // sioscirclekorean
{0xbb970588, 0x266f}, // musicsharpsign
{0xbba252f7, 0x0106}, // Cacute
- {0xbba2c6f4, 0x27e9}, // angbracketrightbigg
{0xbbae7b40, 0x3172}, // pieupkiyeokkorean
{0xbbb9d0f4, 0x0934}, // llladeva
{0xbbd8677b, 0x330d}, // karoriisquare
{0xbbdbcb55, 0x0a6f}, // ninegurmukhi
{0xbbdc86be, 0xfb2b}, // shinsindot
- {0xbc041d93, 0x05da}, // finalkafqamats
{0xbc0d2781, 0x0a1f}, // ttagurmukhi
{0xbc1b1166, 0x2558}, // SF500000
{0xbc280da2, 0x1e79}, // utildeacute
@@ -3303,7 +3027,6 @@ static struct Hash2Unicode {
{0xbc75336c, 0x21a9}, // arrowhookright
{0xbc78e14f, 0x24b0}, // uparen
{0xbcd2c61b, 0x064c}, // dammatanarabic
- {0xbcf16b16, 0x0621}, // hamzadammatanarabic
{0xbd0f6f71, 0x004c}, // L
{0xbd1a9441, 0x3235}, // ideographicspecialparen
{0xbd1abdb6, 0x0184}, // Tonesix
@@ -3321,14 +3044,12 @@ static struct Hash2Unicode {
{0xbdc1280a, 0x24be}, // Icircle
{0xbdd372da, 0x318b}, // yuyekorean
{0xbde8281d, 0x3276}, // cieucacirclekorean
- {0xbe1bc796, 0xfb7c}, // tchehmeeminitialarabic
{0xbe3e45cf, 0xfb58}, // pehinitialarabic
{0xbe663ca6, 0x2470}, // seventeencircle
{0xbe7a58ae, 0x3203}, // rieulparenkorean
{0xbea937fd, 0x25bc}, // blackdownpointingtriangle
{0xbec6916e, 0x011c}, // Gcircumflex
{0xbedd6640, 0x00d9}, // Ugrave
- {0xbee1ad99, 0xed79}, // vextenddouble
{0xbf12496a, 0x0985}, // abengali
{0xbf156070, 0x04e2}, // Imacroncyrillic
{0xbf26dc61, 0x041d}, // Encyrillic
@@ -3345,7 +3066,6 @@ static struct Hash2Unicode {
{0xbf9c1926, 0x0627}, // alefarabic
{0xbfc69ab7, 0xff18}, // eightmonospace
{0xbfd3ede4, 0x0396}, // Zeta
- {0xbfe44580, 0x05d3}, // dalethiriq
{0xbffa52a3, 0x33c7}, // cosquare
{0xc006a810, 0x062a}, // teharabic
{0xc008508a, 0xff1c}, // lessmonospace
@@ -3359,7 +3079,6 @@ static struct Hash2Unicode {
{0xc092fb91, 0x1e95}, // zlinebelow
{0xc09823db, 0x016f}, // uring
{0xc09889a1, 0x1e11}, // dcedilla
- {0xc09e394d, 0x2211}, // summationtext
{0xc0a2bc69, 0x2564}, // SF470000
{0xc0a93f4f, 0x0e2c}, // lochulathai
{0xc0bd9f90, 0x094a}, // oshortvowelsigndeva
@@ -3369,7 +3088,6 @@ static struct Hash2Unicode {
{0xc0d444a4, 0x3220}, // oneideographicparen
{0xc0dcb90f, 0x062e}, // khaharabic
{0xc0efe98c, 0x2191}, // arrowup
- {0xc0f7b81d, 0xf888}, // saraueeleftthai
{0xc0fb3832, 0x25ab}, // H18551
{0xc131664b, 0x30e4}, // yakatakana
{0xc1425417, 0x317a}, // sioskiyeokkorean
@@ -3382,7 +3100,6 @@ static struct Hash2Unicode {
{0xc1e02cdd, 0x0594}, // zaqefqatanhebrew
{0xc1e3fd2d, 0x05d5}, // vav
{0xc1e4c743, 0x3057}, // sihiragana
- {0xc1e7aebd, 0xf779}, // Ysmall
{0xc1ec1451, 0x03c3}, // sigma
{0xc1f9ede7, 0x05a3}, // munahhebrew
{0xc2089a04, 0x05b7}, // patah1d
@@ -3399,15 +3116,13 @@ static struct Hash2Unicode {
{0xc2c391b3, 0x25b2}, // triagup
{0xc2d0d165, 0x0137}, // kcommaaccent
{0xc2db7e0f, 0x04a0}, // Kabashkircyrillic
- {0xc327f9ff, 0xf8eb}, // parenlefttp
+ {0xc327f9ff, 0x239b}, // parenlefttp
{0xc32ea721, 0x061f}, // afii57407
- {0xc347a5d5, 0x22c1}, // logicalordisplay
{0xc36634d0, 0x09f9}, // sixteencurrencydenominatorbengali
{0xc3722d19, 0x23ad}, // bracerightbt
{0xc3751bae, 0x25ab}, // whitesmallsquare
{0xc375a046, 0x05b0}, // shevahebrew
{0xc391e9a8, 0xfe50}, // commasmall
- {0xc3a63833, 0x0621}, // hamzasukunarabic
{0xc3c94bba, 0x306a}, // nahiragana
{0xc3d9dd70, 0xfe43}, // whitecornerbracketleftvertical
{0xc3df4586, 0x0903}, // visargadeva
@@ -3454,17 +3169,15 @@ static struct Hash2Unicode {
{0xc6649ea6, 0x263b}, // blacksmilingface
{0xc6730a47, 0x3230}, // ideographicsunparen
{0xc6a18663, 0x2173}, // fourroman
- {0xc6a33bcf, 0xf8f9}, // bracketrighttp
+ {0xc6a33bcf, 0x23a4}, // bracketrighttp
{0xc6bb9cde, 0x03c1}, // rho
{0xc6c2ca67, 0x0537}, // Eharmenian
{0xc6db1db1, 0x0a94}, // augujarati
{0xc6ddc5a6, 0x0334}, // tildeoverlaycmb
{0xc6e9fa39, 0x064a}, // yeharabic
{0xc6fbfdac, 0x025a}, // schwahook
- {0xc6fedf58, 0xf731}, // oneoldstyle
{0xc703d8e7, 0x33b8}, // kvsquare
- {0xc7199c26, 0xf763}, // Csmall
- {0xc71e49b3, 0xf8fa}, // bracketrightex
+ {0xc71e49b3, 0x23a5}, // bracketrightex
{0xc74688aa, 0x24dc}, // mcircle
{0xc74a8cc7, 0x05b5}, // tserequarterhebrew
{0xc74f4c99, 0x0298}, // bilabialclick
@@ -3476,7 +3189,6 @@ static struct Hash2Unicode {
{0xc76c439e, 0x0115}, // ebreve
{0xc76ec8b2, 0x0e1c}, // phophungthai
{0xc77c2828, 0x2206}, // Delta
- {0xc7855795, 0xf894}, // maichattawalowrightthai
{0xc786ef31, 0x095b}, // zadeva
{0xc78887c7, 0x1e08}, // Ccedillaacute
{0xc78fe323, 0x0698}, // afii57508
@@ -3488,7 +3200,6 @@ static struct Hash2Unicode {
{0xc7f07bcf, 0x248f}, // eightperiod
{0xc7f0b4c8, 0x0406}, // Icyrillic
{0xc7fb5fe5, 0x05b2}, // afii57800
- {0xc808d8ed, 0xf8f5}, // integralex
{0xc812d1b7, 0x041b}, // afii10029
{0xc82c0a32, 0x026f}, // mturned
{0xc834804d, 0x2475}, // twoparen
@@ -3506,8 +3217,6 @@ static struct Hash2Unicode {
{0xc8cf912e, 0xfe59}, // parenleftsmall
{0xc8fcce82, 0x0424}, // Efcyrillic
{0xc8fdfe4b, 0x0914}, // audeva
- {0xc9033cb3, 0x05e7}, // qofhatafpatahhebrew
- {0xc905dac2, 0xf7e0}, // Agravesmall
{0xc9315b90, 0x0338}, // soliduslongoverlaycmb
{0xc93304ec, 0x2176}, // sevenroman
{0xc9366418, 0x1e7e}, // Vdotbelow
@@ -3526,7 +3235,6 @@ static struct Hash2Unicode {
{0xc9eb1227, 0x321c}, // cieucuparenkorean
{0xca07e9ca, 0x02dd}, // hungarumlaut
{0xca0b3331, 0x1e5f}, // rlinebelow
- {0xca0f9f38, 0xf887}, // saraueleftthai
{0xca2dd9fa, 0x2590}, // rtblock
{0xca5ed753, 0x0269}, // iotalatin
{0xca65e972, 0x0646}, // noonarabic
@@ -3554,9 +3262,7 @@ static struct Hash2Unicode {
{0xcbada403, 0x0429}, // Shchacyrillic
{0xcc11d7b0, 0x000c}, // controlFF
{0xcc261604, 0x04a2}, // Endescendercyrillic
- {0xcc2b60a5, 0x05e7}, // qofhiriq
{0xcc3139de, 0x33d1}, // squareln
- {0xcc334bff, 0xf766}, // Fsmall
{0xcc3accb9, 0x05d8}, // tethebrew
{0xcc3b7b5c, 0x0649}, // alefmaksuraarabic
{0xcc447b1d, 0x0296}, // glottalstopinverted
@@ -3581,7 +3287,6 @@ static struct Hash2Unicode {
{0xcd9d27ad, 0x24c7}, // Rcircle
{0xcd9f5a2c, 0x0028}, // parenleft
{0xcda0c667, 0x2018}, // quoteleft
- {0xcdab3631, 0xf7ff}, // Ydieresissmall
{0xcdae6ea2, 0xff59}, // ymonospace
{0xcdbb64f4, 0x2105}, // afii61248
{0xcdd2cfab, 0x24b4}, // yparen
@@ -3592,14 +3297,12 @@ static struct Hash2Unicode {
{0xcdfd40ec, 0x0180}, // bstroke
{0xce074882, 0x0668}, // afii57400
{0xce4d2d1e, 0x2563}, // SF230000
- {0xce63250d, 0x005d}, // bracketrightBigg
{0xce6d06c6, 0x0aab}, // phagujarati
{0xce6f0d59, 0x3272}, // mieumacirclekorean
{0xce79a056, 0x3339}, // herutusquare
{0xce8dac39, 0x25a8}, // squareupperrighttolowerleftfill
{0xce942ad9, 0x09a6}, // dabengali
{0xcea39f20, 0x02d5}, // downtackmod
- {0xced82ba6, 0xed19}, // bracehtipupleft
{0xcedf2a68, 0x0157}, // rcedilla
{0xcee9759d, 0x043a}, // afii10076
{0xcef01870, 0x0171}, // udblacute
@@ -3620,7 +3323,6 @@ static struct Hash2Unicode {
{0xcfe519cb, 0x309b}, // voicedmarkkana
{0xcfe64e44, 0x0668}, // eighthackarabic
{0xcff88b7d, 0x05b8}, // qamatsqatannarrowhebrew
- {0xd009507e, 0x05d3}, // daletqamatshebrew
{0xd0096386, 0x25b3}, // whiteuppointingtriangle
{0xd0227bd1, 0x0199}, // khook
{0xd02a9cfe, 0x0105}, // aogonek
@@ -3634,7 +3336,6 @@ static struct Hash2Unicode {
{0xd056aca3, 0xff9a}, // rekatakanahalfwidth
{0xd06b6bb7, 0x096a}, // fourdeva
{0xd07a803b, 0x09aa}, // pabengali
- {0xd07f3aad, 0xf768}, // Hsmall
{0xd0847e20, 0x05c4}, // upperdothebrew
{0xd087e60f, 0x0158}, // Rcaron
{0xd0897bb6, 0x0579}, // chaarmenian
@@ -3648,9 +3349,7 @@ static struct Hash2Unicode {
{0xd13faec5, 0x05e1}, // samekh
{0xd14fc185, 0x045b}, // afii10108
{0xd17987dd, 0x0543}, // Cheharmenian
- {0xd180d934, 0x0621}, // hamzalowkasraarabic
{0xd18447d8, 0x0663}, // threearabic
- {0xd18961af, 0xf7fa}, // Uacutesmall
{0xd18966b1, 0x0a82}, // anusvaragujarati
{0xd18d83de, 0x0aa3}, // nnagujarati
{0xd190d310, 0x0a35}, // vagurmukhi
@@ -3659,7 +3358,6 @@ static struct Hash2Unicode {
{0xd1d7231f, 0x04bc}, // Cheabkhasiancyrillic
{0xd1d9da71, 0x30ea}, // rikatakana
{0xd2337241, 0x05b6}, // segol1f
- {0xd24297bf, 0xf889}, // maitaikhuleftthai
{0xd247ef8b, 0x3243}, // ideographicreachparen
{0xd254c368, 0x0443}, // ucyrillic
{0xd2658bcb, 0x05b9}, // holamquarterhebrew
@@ -3676,7 +3374,6 @@ static struct Hash2Unicode {
{0xd2f3cdf3, 0x1e0e}, // Dlinebelow
{0xd304784a, 0x05d3}, // dalet
{0xd308b167, 0x1e5b}, // rdotbelow
- {0xd310b973, 0x25a1}, // a50
{0xd310fcc1, 0x04e9}, // obarredcyrillic
{0xd3145153, 0xfeec}, // hehmedialarabic
{0xd326ec6d, 0x2237}, // proportion
@@ -3684,7 +3381,6 @@ static struct Hash2Unicode {
{0xd33cb244, 0x02cd}, // macronlowmod
{0xd35ba6fb, 0x04be}, // Chedescenderabkhasiancyrillic
{0xd3730282, 0xff64}, // ideographiccommaleft
- {0xd3777d75, 0x05d3}, // daletsegolhebrew
{0xd3797e0f, 0x24db}, // lcircle
{0xd37b4bcb, 0x041c}, // afii10030
{0xd3a5ba29, 0x062e}, // afii57422
@@ -3697,11 +3393,9 @@ static struct Hash2Unicode {
{0xd44f2d4c, 0xff9b}, // rokatakanahalfwidth
{0xd45c6c89, 0x3079}, // behiragana
{0xd467b0a3, 0x0131}, // dotlessi
- {0xd46989dc, 0x05e7}, // qofholam
{0xd48c064b, 0x0599}, // pashtahebrew
{0xd48dad4d, 0x01e2}, // AEmacron
{0xd4b2bb68, 0x0145}, // Ncedilla
- {0xd4ce7b9e, 0x0621}, // hamzadammaarabic
{0xd4d3eb56, 0x255e}, // SF360000
{0xd4e86e58, 0x1ef7}, // yhookabove
{0xd4e92fa8, 0x0623}, // alefhamzaabovearabic
@@ -3715,7 +3409,6 @@ static struct Hash2Unicode {
{0xd5b6f4bf, 0x3163}, // ikorean
{0xd5b7a706, 0x1e13}, // dcircumflexbelow
{0xd5da03ab, 0x0123}, // gcommaaccent
- {0xd5da183e, 0xf76e}, // Nsmall
{0xd5dc1f0e, 0x24a5}, // jparen
{0xd5e6a2b4, 0x200f}, // afii300
{0xd6067104, 0x05bd}, // siluqlefthebrew
@@ -3736,17 +3429,14 @@ static struct Hash2Unicode {
{0xd6df6252, 0xfef4}, // yehmedialarabic
{0xd6e234de, 0x044d}, // afii10095
{0xd7151c8a, 0x040b}, // afii10060
- {0xd71970f6, 0x05d3}, // daletsegol
{0xd71af0cf, 0x00af}, // overscore
{0xd72c6112, 0x0036}, // six
- {0xd7363d15, 0x05d3}, // daletholamhebrew
{0xd73b3901, 0x02da}, // ring
{0xd7425de1, 0x0a1d}, // jhagurmukhi
{0xd771b953, 0x3107}, // mbopomofo
{0xd7a40cc3, 0x315c}, // ukorean
{0xd7b7f8a3, 0x3094}, // vuhiragana
{0xd7b8c7af, 0x05b8}, // qamatsquarterhebrew
- {0xd7bc737d, 0x230b}, // floorrightBig
{0xd7bf0d2a, 0x308b}, // ruhiragana
{0xd7cebade, 0x01b1}, // Upsilonafrican
{0xd7d268b5, 0x314e}, // hieuhkorean
@@ -3756,7 +3446,6 @@ static struct Hash2Unicode {
{0xd8171429, 0x013e}, // lcaron
{0xd817c39d, 0x0664}, // fourhackarabic
{0xd824acfb, 0x05de}, // memhebrew
- {0xd82c0976, 0x05e8}, // reshsegolhebrew
{0xd849e14d, 0x3052}, // gehiragana
{0xd84afb0a, 0x00d1}, // Ntilde
{0xd85534fc, 0x02ca}, // secondtonechinese
@@ -3780,7 +3469,6 @@ static struct Hash2Unicode {
{0xd95c2f59, 0x04bd}, // cheabkhasiancyrillic
{0xd9697a13, 0x328b}, // ideographfirecircle
{0xd98cc91f, 0x0307}, // dotaccentcmb
- {0xd98dcef9, 0xf8ff}, // apple
{0xd991004f, 0x0e4f}, // fongmanthai
{0xd99e3976, 0x249f}, // dparen
{0xd9ba695c, 0xff70}, // katahiraprolongmarkhalfwidth
@@ -3790,7 +3478,6 @@ static struct Hash2Unicode {
{0xda15411c, 0x0304}, // macroncmb
{0xda2037e1, 0x1e01}, // aringbelow
{0xda3670ae, 0x3347}, // mansyonsquare
- {0xda38804a, 0xf738}, // eightoldstyle
{0xda39b9df, 0x013d}, // Lcaron
{0xda48ff7e, 0x00bb}, // guillemotright
{0xda4e1891, 0x228b}, // supersetnotequal
@@ -3801,11 +3488,9 @@ static struct Hash2Unicode {
{0xda94576a, 0x0999}, // ngabengali
{0xda94a677, 0x0634}, // afii57428
{0xda99b3d7, 0x30d1}, // pakatakana
- {0xda9d5f69, 0xf6c8}, // afii10832
{0xdab46527, 0x21e9}, // arrowdownwhite
{0xdac4a95a, 0x002f}, // slash
{0xdac8670b, 0x011e}, // Gbreve
- {0xdace8a4c, 0xed17}, // bracehtipdownleft
{0xdad5813e, 0x24bf}, // Jcircle
{0xdaf9ae21, 0x03e7}, // kheicoptic
{0xdb00acb2, 0x04dc}, // Zhedieresiscyrillic
@@ -3813,15 +3498,12 @@ static struct Hash2Unicode {
{0xdb15243d, 0xfb38}, // tetdagesh
{0xdb180684, 0x059d}, // gereshmuqdamhebrew
{0xdb19f222, 0x1e30}, // Kacute
- {0xdb215045, 0xf76f}, // Osmall
{0xdb36c0cb, 0x00c1}, // Aacute
{0xdb46a061, 0x044f}, // afii10097
{0xdb4843d8, 0x0140}, // ldotaccent
{0xdb491e12, 0x3201}, // nieunparenkorean
{0xdb4ecb82, 0x06a4}, // afii57505
{0xdb5fdfb2, 0x09cd}, // viramabengali
- {0xdb7c2cdb, 0xf88f}, // maitholowleftthai
- {0xdb8ff30c, 0xf6f5}, // Caronsmall
{0xdb9c2f74, 0x3063}, // tusmallhiragana
{0xdb9dda85, 0xfb3b}, // kafdageshhebrew
{0xdba170e8, 0x0998}, // ghabengali
@@ -3833,7 +3515,6 @@ static struct Hash2Unicode {
{0xdbf12380, 0x2460}, // onecircle
{0xdc0071a3, 0xfb46}, // tsadidageshhebrew
{0xdc05ec50, 0x30f5}, // kasmallkatakana
- {0xdc0ac9c6, 0x0028}, // parenleftBigg
{0xdc0ad3ae, 0x012d}, // ibreve
{0xdc0c240d, 0xff9e}, // voicedmarkkanahalfwidth
{0xdc0c9e85, 0xff9f}, // semivoicedmarkkanahalfwidth
@@ -3841,7 +3522,6 @@ static struct Hash2Unicode {
{0xdc41d3b3, 0x05ab}, // olehebrew
{0xdc54447c, 0x307c}, // bohiragana
{0xdc6ca9b3, 0x0584}, // keharmenian
- {0xdc7650d9, 0xf73f}, // questionsmall
{0xdc7756d1, 0x0077}, // w
{0xdc7d1de8, 0xfba9}, // hehmedialaltonearabic
{0xdc7f6ca5, 0x0624}, // wawhamzaabovearabic
@@ -3888,33 +3568,25 @@ static struct Hash2Unicode {
{0xdf1ee74b, 0xff81}, // tikatakanahalfwidth
{0xdf243dad, 0x044c}, // softsigncyrillic
{0xdf46fba9, 0x01a4}, // Phook
- {0xdf5e1052, 0x221a}, // radicalbig
{0xdf80589a, 0x3217}, // chieuchaparenkorean
{0xdf8c6402, 0x0e45}, // lakkhangyaothai
- {0xdf8fbdeb, 0x05e7}, // qofsheva
{0xdf9eaf7a, 0x33bc}, // muwsquare
{0xdfad5d93, 0x22c0}, // logicalandtext
{0xdfaf476d, 0x0167}, // tbar
{0xdfb9632c, 0x3144}, // pieupsioskorean
- {0xdfe8c3dc, 0xf7fc}, // Udieresissmall
{0xdff819d0, 0xfe8c}, // yehhamzaabovemedialarabic
{0xdffe3761, 0x1e14}, // Emacrongrave
- {0xe0061dae, 0x05d3}, // daletpatah
{0xe0130535, 0x316c}, // rieulpansioskorean
{0xe019189f, 0x0994}, // aubengali
{0xe0197d92, 0x0a4b}, // oomatragurmukhi
- {0xe02aebf6, 0xf6e3}, // dollarinferior
{0xe0343a59, 0x0323}, // dotbelowcomb
{0xe03a2368, 0x019f}, // Ocenteredtilde
{0xe0489c79, 0x017f}, // longs
- {0xe0513bea, 0xf6ff}, // Zcaronsmall
{0xe0560cdf, 0x1e19}, // ecircumflexbelow
{0xe065671a, 0x1e0a}, // Ddotaccent
{0xe07dfee5, 0x04f4}, // Chedieresiscyrillic
{0xe0800244, 0xfb69}, // ttehmedialarabic
- {0xe0831234, 0x007b}, // braceleftBig
{0xe0987417, 0x24dd}, // ncircle
- {0xe0ab68f9, 0xf6dc}, // onefitted
{0xe0ac4869, 0x3225}, // sixideographicparen
{0xe0c42e1f, 0x3357}, // wattosquare
{0xe0cf3aca, 0x1e1d}, // ecedillabreve
@@ -3933,9 +3605,7 @@ static struct Hash2Unicode {
{0xe20234a2, 0x012c}, // Ibreve
{0xe20c937f, 0x041a}, // Kacyrillic
{0xe20deadd, 0x047c}, // Omegatitlocyrillic
- {0xe222a727, 0x02dc}, // tildewide
{0xe2234dec, 0xff52}, // rmonospace
- {0xe2256c16, 0x05d3}, // daletqamats
{0xe22682ea, 0x3260}, // kiyeokcirclekorean
{0xe22a6510, 0x1e8e}, // Ydotaccent
{0xe23968a4, 0x04b3}, // hadescendercyrillic
@@ -3946,7 +3616,6 @@ static struct Hash2Unicode {
{0xe28a564c, 0x044f}, // iacyrillic
{0xe28eea2e, 0x1e51}, // omacrongrave
{0xe2924f7e, 0x0a67}, // onegurmukhi
- {0xe2948e05, 0xf6f6}, // Circumflexsmall
{0xe2a7b092, 0x3213}, // pieupaparenkorean
{0xe2b99909, 0x0e14}, // dodekthai
{0xe2cfeeb5, 0x0301}, // acutecomb
@@ -3966,7 +3635,6 @@ static struct Hash2Unicode {
{0xe3a00fb0, 0x0aa2}, // ddhagujarati
{0xe3a0394c, 0x05b3}, // afii57802
{0xe3bf40b5, 0x21c5}, // arrowupleftofdown
- {0xe3c68591, 0x005d}, // bracketrightBig
{0xe3cbb73f, 0x0459}, // afii10106
{0xe3cddac1, 0x0621}, // hamzalowarabic
{0xe3d5ad06, 0x1ec0}, // Ecircumflexgrave
@@ -3989,7 +3657,6 @@ static struct Hash2Unicode {
{0xe4a8920f, 0x0014}, // controlDC4
{0xe4c6b94a, 0x0550}, // Reharmenian
{0xe4c91eec, 0x1ea7}, // acircumflexgrave
- {0xe4ce70c5, 0xfedf}, // lammeemkhahinitialarabic
{0xe4d0a5c5, 0x2171}, // tworoman
{0xe4de0824, 0x090b}, // rvocalicdeva
{0xe4e78bbf, 0x0e33}, // saraamthai
@@ -4022,7 +3689,6 @@ static struct Hash2Unicode {
{0xe61a323e, 0x21d2}, // arrowdblright
{0xe61dad29, 0x017b}, // Zdotaccent
{0xe62fb889, 0x2524}, // SF090000
- {0xe65602bc, 0x05d3}, // daletqubuts
{0xe6699f03, 0x025d}, // eopenreversedhook
{0xe6743f55, 0x011a}, // Ecaron
{0xe6861695, 0x018a}, // Dhook
@@ -4041,7 +3707,6 @@ static struct Hash2Unicode {
{0xe72762a6, 0x3127}, // ibopomofo
{0xe74e8d5b, 0x02d0}, // colontriangularmod
{0xe75de72d, 0x0a4d}, // halantgurmukhi
- {0xe79030f9, 0xf6cf}, // Hungarumlaut
{0xe796e6c1, 0x032f}, // breveinvertedbelowcmb
{0xe7a9201c, 0x24e5}, // vcircle
{0xe7abb869, 0x05b0}, // sheva115
@@ -4073,7 +3738,6 @@ static struct Hash2Unicode {
{0xe927829f, 0x0953}, // gravedeva
{0xe92a9522, 0x0060}, // grave
{0xe93b2c93, 0x09c8}, // aivowelsignbengali
- {0xe9544ae6, 0x2308}, // ceilingleftbigg
{0xe9598c36, 0x018e}, // Ereversed
{0xe96c43a5, 0x00d4}, // Ocircumflex
{0xe977a63b, 0x0591}, // etnahtalefthebrew
@@ -4108,7 +3772,6 @@ static struct Hash2Unicode {
{0xeb4a0523, 0x056a}, // zhearmenian
{0xeb4fdea3, 0xfc08}, // behmeemisolatedarabic
{0xeb576d94, 0x21de}, // pageup
- {0xeb6b92be, 0x2191}, // arrowtp
{0xeb701704, 0x2014}, // emdash
{0xeb71d801, 0x30f3}, // nkatakana
{0xebeccb02, 0x00dd}, // Yacute
@@ -4131,7 +3794,6 @@ static struct Hash2Unicode {
{0xed1afc7c, 0x05b2}, // hatafpatah2f
{0xed2b4a43, 0x00aa}, // ordfeminine
{0xed4bb321, 0x313f}, // rieulphieuphkorean
- {0xed65d1e6, 0x05e7}, // qofqubutshebrew
{0xed65e3bb, 0x057a}, // peharmenian
{0xed729d82, 0x049e}, // Kastrokecyrillic
{0xed796a9e, 0x0407}, // afii10056
@@ -4159,7 +3821,6 @@ static struct Hash2Unicode {
{0xef33d78e, 0x25a1}, // H22073
{0xef3a179c, 0x020a}, // Iinvertedbreve
{0xef636ee0, 0x05da}, // finalkaf
- {0xef7afe15, 0x007d}, // bracerightbigg
{0xefa03eab, 0x00c6}, // AE
{0xefc57067, 0x0260}, // ghook
{0xefd65ddd, 0x2033}, // second
@@ -4181,7 +3842,6 @@ static struct Hash2Unicode {
{0xf064a013, 0x047e}, // Otcyrillic
{0xf0673e49, 0x096f}, // ninedeva
{0xf0757f39, 0x030a}, // ringcmb
- {0xf08334d5, 0x05d3}, // dalethatafpatahhebrew
{0xf08a28a9, 0xfe4e}, // lowlinecenterline
{0xf09092b0, 0x3185}, // ssanghieuhkorean
{0xf091911a, 0x223d}, // reversedtilde
@@ -4210,7 +3870,6 @@ static struct Hash2Unicode {
{0xf1ddaa7d, 0x0995}, // kabengali
{0xf1e94d64, 0x064e}, // fathaarabic
{0xf1eb4f66, 0x0116}, // Edotaccent
- {0xf1f2ec50, 0x05e7}, // qofhatafsegol
{0xf1f78ce7, 0x226a}, // muchless
{0xf2118c6c, 0x0635}, // sadarabic
{0xf232181a, 0x2640}, // venus
@@ -4227,19 +3886,15 @@ static struct Hash2Unicode {
{0xf2dd8deb, 0x248d}, // sixperiod
{0xf2e23a0c, 0xfb57}, // pehfinalarabic
{0xf2e7f536, 0x0329}, // verticallinebelowcmb
- {0xf2efdad2, 0x05e8}, // reshqamats
{0xf2f52e6c, 0x00ce}, // Icircumflex
{0xf2f6e905, 0x24cd}, // Xcircle
{0xf3086f4b, 0x2030}, // perthousand
{0xf311fe21, 0xfece}, // ghainfinalarabic
{0xf315dbae, 0xfe3c}, // blacklenticularbracketrightvertical
- {0xf31fc2c2, 0xf76d}, // Msmall
{0xf336d994, 0xfef3}, // yehinitialarabic
{0xf3527249, 0xfb67}, // ttehfinalarabic
- {0xf365ee1e, 0xf6f8}, // Hungarumlautsmall
{0xf3935843, 0xff26}, // Fmonospace
{0xf399cd14, 0x0074}, // t
- {0xf3ab1b0a, 0x05d3}, // dalethatafsegol
{0xf3c08521, 0x0431}, // afii10066
{0xf3ce4ef0, 0x014a}, // Eng
{0xf3cfe996, 0x05b8}, // qamatsde
@@ -4252,9 +3907,7 @@ static struct Hash2Unicode {
{0xf4728f62, 0x06f9}, // ninepersian
{0xf47778a3, 0x0958}, // qadeva
{0xf47c7f06, 0x05a5}, // merkhalefthebrew
- {0xf4970a5b, 0x222b}, // integraldisplay
{0xf498c20b, 0xfb2c}, // shindageshshindothebrew
- {0xf4a0d900, 0xf7e6}, // AEsmall
{0xf4a2e6c9, 0xff8e}, // hokatakanahalfwidth
{0xf4c721dd, 0x0415}, // afii10022
{0xf4d1afd1, 0x015b}, // sacute
@@ -4264,7 +3917,6 @@ static struct Hash2Unicode {
{0xf4f5b85f, 0x05bd}, // afii57839
{0xf4fec4c5, 0x2026}, // ellipsis
{0xf4fecbee, 0x3152}, // yaekorean
- {0xf521dc0d, 0xf777}, // Wsmall
{0xf526b2bc, 0x09f5}, // twonumeratorbengali
{0xf53d898f, 0x0122}, // Gcedilla
{0xf54df907, 0x02e8}, // tonebarlowmod
@@ -4287,7 +3939,6 @@ static struct Hash2Unicode {
{0xf6228c58, 0x20a3}, // franc
{0xf6271ec7, 0x0429}, // afii10043
{0xf630815e, 0x0577}, // shaarmenian
- {0xf643d64b, 0xf774}, // Tsmall
{0xf64f0a5d, 0x30f9}, // vekatakana
{0xf64f6666, 0xff44}, // dmonospace
{0xf6545660, 0x3333}, // huiitosquare
@@ -4298,10 +3949,8 @@ static struct Hash2Unicode {
{0xf68c8679, 0x3043}, // ismallhiragana
{0xf68fb68d, 0x215b}, // oneeighth
{0xf6909b76, 0x24a1}, // fparen
- {0xf69fb673, 0xf7e4}, // Adieresissmall
{0xf6b386e5, 0x1e3c}, // Lcircumflexbelow
{0xf6c0ec85, 0x1e5c}, // Rdotbelowmacron
- {0xf6ea45f8, 0xf6fa}, // OEsmall
{0xf6f2a8b6, 0x0289}, // ubar
{0xf7114d7b, 0x2502}, // SF110000
{0xf7440454, 0x045e}, // afii10110
@@ -4323,7 +3972,6 @@ static struct Hash2Unicode {
{0xf885c738, 0x30d3}, // bikatakana
{0xf8868f94, 0xff8c}, // hukatakanahalfwidth
{0xf8892150, 0x04a8}, // Haabkhasiancyrillic
- {0xf89a4fca, 0x05d3}, // daletholam
{0xf89be814, 0x0abc}, // nuktagujarati
{0xf8e483f7, 0x1eb5}, // abrevetilde
{0xf8ef289b, 0x21df}, // pagedown
@@ -4372,7 +4020,6 @@ static struct Hash2Unicode {
{0xfb4678bc, 0xfe90}, // behfinalarabic
{0xfb5bf4b4, 0x02cf}, // acutelowmod
{0xfb5cfdc8, 0x095c}, // dddhadeva
- {0xfb6edad4, 0xf6c9}, // Acute
{0xfb764dd2, 0x21d3}, // arrowdbldown
{0xfb7c1fd7, 0x0485}, // dasiapneumatacyrilliccmb
{0xfbcf44c4, 0x018d}, // deltaturned
@@ -4391,7 +4038,6 @@ static struct Hash2Unicode {
{0xfc8020b6, 0xfb39}, // yoddageshhebrew
{0xfc828b2d, 0x1ee4}, // Udotbelow
{0xfc9cf271, 0x020d}, // odblgrave
- {0xfcd52169, 0xf7ed}, // Iacutesmall
{0xfce47bc6, 0x05b7}, // patah
{0xfce8ddc1, 0x1e0f}, // dlinebelow
{0xfce9ddb5, 0x05aa}, // yerahbenyomohebrew
@@ -4407,7 +4053,7 @@ static struct Hash2Unicode {
{0xfd891a4c, 0x0948}, // aivowelsigndeva
{0xfd8944f5, 0x0309}, // hookabovecomb
{0xfd89977d, 0x0e50}, // zerothai
- {0xfd93a170, 0xf8ec}, // parenleftex
+ {0xfd93a170, 0x239c}, // parenleftex
{0xfd99bb06, 0xfb3c}, // lameddagesh
{0xfdb6c57c, 0x2215}, // divisionslash
{0xfdbbbec8, 0x090d}, // ecandradeva
@@ -4429,14 +4075,11 @@ static struct Hash2Unicode {
{0xfee9d86c, 0x2295}, // pluscircle
{0xfef651f8, 0x0688}, // afii57512
{0xff5dadf4, 0x0193}, // Ghook
- {0xff7d5e86, 0x05e7}, // qoftserehebrew
{0xff81c116, 0x21cd}, // arrowleftdblstroke
{0xff8c00d8, 0x3386}, // MBsquare
{0xff8f2931, 0x30ae}, // gikatakana
{0xff90fc92, 0x0923}, // nnadeva
{0xff94689d, 0x04c0}, // palochkacyrillic
- {0xffce1162, 0xf734}, // fouroldstyle
{0xffe38169, 0x043f}, // pecyrillic
{0xfffadc30, 0x2568}, // SF460000
-};
-
+}};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.cpp
index fa506dbd994..88eeefdb69e 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.cpp
@@ -2,7 +2,7 @@
** BasicDVIReader.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,7 +21,7 @@
#include <config.h>
#include <algorithm>
#include <sstream>
-#include "BasicDVIReader.h"
+#include "BasicDVIReader.hpp"
using namespace std;
@@ -87,27 +87,27 @@ int BasicDVIReader::evalCommand (CommandHandler &handler, int &param) {
int num_param_bytes = 0;
param = -1;
- if (opcode >= 0 && opcode <= 127) {
+ if (opcode >= OP_SETCHAR0 && opcode <= OP_SETCHAR127) {
handler = &BasicDVIReader::cmdSetChar0;
param = opcode;
}
- else if (opcode >= 171 && opcode <= 234) {
+ else if (opcode >= OP_FNTNUM0 && opcode <= OP_FNTNUM63) {
handler = &BasicDVIReader::cmdFontNum0;
- param = opcode-171;
+ param = opcode-OP_FNTNUM0;
}
else if (evalXDVOpcode(opcode, handler))
num_param_bytes = 0;
- else if (_dviVersion == DVI_PTEX && opcode == 255) { // direction command set by pTeX?
+ else if (_dviVersion == DVI_PTEX && opcode == OP_DIR) { // direction command set by pTeX?
handler = &BasicDVIReader::cmdDir;
num_param_bytes = 1;
}
- else if (opcode >= 250) {
+ else if (opcode > OP_POSTPOST) {
ostringstream oss;
oss << "undefined DVI command (opcode " << opcode << ')';
throw DVIException(oss.str());
}
else {
- const int offset = opcode <= 170 ? 128 : 235-(170-128+1);
+ const int offset = opcode < OP_FNTNUM0 ? OP_SET1 : (OP_FNTNUM63+1)-(OP_FNTNUM0-OP_SET1);
handler = commands[opcode-offset].handler;
num_param_bytes = commands[opcode-offset].length;
}
@@ -133,11 +133,11 @@ bool BasicDVIReader::evalXDVOpcode (int op, CommandHandler &handler) const {
return false;
static const CommandHandler handlers[] = {
- &BasicDVIReader::cmdXPic,
- &BasicDVIReader::cmdXFontDef,
- &BasicDVIReader::cmdXGlyphArray,
- &BasicDVIReader::cmdXTextAndGlyphs,
- &BasicDVIReader::cmdXGlyphString
+ &BasicDVIReader::cmdXPic, // 251 (XDV5 only)
+ &BasicDVIReader::cmdXFontDef, // 252
+ &BasicDVIReader::cmdXGlyphArray, // 253
+ &BasicDVIReader::cmdXTextAndGlyphs, // 254 (XDV7 only)
+ &BasicDVIReader::cmdXGlyphString // 254 (XDV5 only)
};
index = op-251;
if (_dviVersion == DVI_XDV5 && op == 254)
@@ -166,7 +166,7 @@ void BasicDVIReader::executePostPost () {
seek(-1, ios::end); // stream pointer to last byte
int count=0;
- while (peek() == 223) { // count trailing fill bytes
+ while (peek() == DVI_FILL) { // count trailing fill bytes
seek(-1, ios::cur);
count++;
}
@@ -179,9 +179,9 @@ void BasicDVIReader::executePostPost () {
void BasicDVIReader::executeAllPages () {
if (_dviVersion == DVI_NONE)
- executePostPost(); // get version ID from post_post
- seek(0); // go to preamble
- while (executeCommand() != 248); // execute all commands until postamble is reached
+ executePostPost(); // get version ID from post_post
+ seek(0); // go to preamble
+ while (executeCommand() != OP_POST); // execute all commands until postamble is reached
}
@@ -207,9 +207,9 @@ void BasicDVIReader::setDVIVersion (DVIVersion version) {
* Format: pre i[1] num[4] den[4] mag[4] k[1] x[k] */
void BasicDVIReader::cmdPre (int) {
setDVIVersion((DVIVersion)readUnsigned(1)); // identification number
- seek(12, ios::cur); // skip numerator, denominator, and mag factor
- UInt32 k = readUnsigned(1); // length of following comment
- seek(k, ios::cur); // skip comment
+ seek(12, ios::cur); // skip numerator, denominator, and mag factor
+ uint32_t k = readUnsigned(1); // length of following comment
+ seek(k, ios::cur); // skip comment
}
@@ -225,7 +225,7 @@ void BasicDVIReader::cmdPost (int) {
void BasicDVIReader::cmdPostPost (int) {
seek(4, ios::cur);
setDVIVersion((DVIVersion)readUnsigned(1)); // identification byte
- while (readUnsigned(1) == 223); // skip fill bytes (223), eof bit should be set now
+ while (readUnsigned(1) == DVI_FILL); // skip fill bytes (223), eof bit should be set now
}
@@ -261,9 +261,9 @@ void BasicDVIReader::cmdXXX (int len) {seek(readUnsigned(len), ios::cur);}
* Format: fontdef k[len] c[4] s[4] d[4] a[1] l[1] n[a+l]
* @param[in] len size of font number variable (in bytes) */
void BasicDVIReader::cmdFontDef (int len) {
- seek(len+12, ios::cur); // skip font number
- UInt32 pathlen = readUnsigned(1); // length of font path
- UInt32 namelen = readUnsigned(1); // length of font name
+ seek(len+12, ios::cur); // skip font number
+ uint32_t pathlen = readUnsigned(1); // length of font path
+ uint32_t namelen = readUnsigned(1); // length of font name
seek(pathlen+namelen, ios::cur);
}
@@ -272,15 +272,15 @@ void BasicDVIReader::cmdFontDef (int len) {
* parameters: box[1] matrix[4][6] p[2] len[2] path[l] */
void BasicDVIReader::cmdXPic (int) {
seek(1+24+2, ios::cur);
- UInt16 len = readUnsigned(2);
+ uint16_t len = readUnsigned(2);
seek(len, ios::cur);
}
void BasicDVIReader::cmdXFontDef (int) {
seek(4+4, ios::cur);
- UInt16 flags = readUnsigned(2);
- UInt8 len = readUnsigned(1);
+ uint16_t flags = readUnsigned(2);
+ uint8_t len = readUnsigned(1);
if (_dviVersion == DVI_XDV5)
len += readUnsigned(1)+readUnsigned(1);
seek(len, ios::cur);
@@ -295,7 +295,7 @@ void BasicDVIReader::cmdXFontDef (int) {
if (flags & 0x4000) // embolden?
seek(4, ios::cur);
if ((flags & 0x0800) && (_dviVersion == DVI_XDV5)) { // variations?
- UInt16 num_variations = readSigned(2);
+ uint16_t num_variations = readSigned(2);
seek(4*num_variations, ios::cur);
}
}
@@ -306,7 +306,7 @@ void BasicDVIReader::cmdXFontDef (int) {
* parameters: w[4] n[2] xy[(4+4)n] g[2n] */
void BasicDVIReader::cmdXGlyphArray (int) {
seek(4, ios::cur);
- UInt16 num_glyphs = readUnsigned(2);
+ uint16_t num_glyphs = readUnsigned(2);
seek(10*num_glyphs, ios::cur);
}
@@ -316,7 +316,7 @@ void BasicDVIReader::cmdXGlyphArray (int) {
* parameters: w[4] n[2] x[4n] y[4] g[2n] */
void BasicDVIReader::cmdXGlyphString (int) {
seek(4, ios::cur);
- UInt16 num_glyphs = readUnsigned(2);
+ uint16_t num_glyphs = readUnsigned(2);
seek(6*num_glyphs, ios::cur);
}
@@ -328,7 +328,7 @@ void BasicDVIReader::cmdXGlyphString (int) {
* introduced with XeTeX 0.99995 and can be triggered by <tt>\\XeTeXgenerateactualtext1</tt>.
* parameters: l[2] t[2l] w[4] n[2] xy[8n] g[2n] */
void BasicDVIReader::cmdXTextAndGlyphs (int) {
- UInt16 l = readUnsigned(2);
+ uint16_t l = readUnsigned(2);
seek(2*l, ios::cur);
cmdXGlyphArray(0);
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.hpp
index e96df470b06..cf2d8194e04 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** BasicDVIReader.h **
+** BasicDVIReader.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,11 +18,11 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_BASICDVIREADER_H
-#define DVISVGM_BASICDVIREADER_H
+#ifndef BASICDVIREADER_HPP
+#define BASICDVIREADER_HPP
-#include "MessageException.h"
-#include "StreamReader.h"
+#include "MessageException.hpp"
+#include "StreamReader.hpp"
struct DVIException : public MessageException
{
@@ -49,10 +49,12 @@ class BasicDVIReader : public StreamReader
protected:
typedef void (BasicDVIReader::*CommandHandler)(int);
enum DVIVersion {DVI_NONE=0, DVI_STANDARD=2, DVI_PTEX=3, DVI_XDV5=5, DVI_XDV6=6, DVI_XDV7=7};
+ const uint8_t OP_SETCHAR0=0, OP_SETCHAR127=127, OP_SET1=128, OP_EOP=140, OP_FNTNUM0=171, OP_FNTNUM63=234,
+ OP_PRE=247, OP_POST=248, OP_POSTPOST=249, OP_DIR=255, DVI_FILL=223;
public:
explicit BasicDVIReader (std::istream &is);
- virtual ~BasicDVIReader () {}
+ virtual ~BasicDVIReader () =default;
virtual void executeAllPages ();
virtual double getXPos () const {return 0;}
virtual double getYPos () const {return 0;}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Bezier.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Bezier.cpp
index f7710ac7518..5a342fbb111 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Bezier.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Bezier.cpp
@@ -2,7 +2,7 @@
** Bezier.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,7 +20,7 @@
#include <algorithm>
#include <utility>
-#include "Bezier.h"
+#include "Bezier.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Bezier.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Bezier.hpp
index d95794c27fe..a4f227c014f 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Bezier.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Bezier.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Bezier.h **
+** Bezier.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,12 +18,12 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_BEZIER_H
-#define DVISVGM_BEZIER_H
+#ifndef BEZIER_HPP
+#define BEZIER_HPP
#include <vector>
-#include "BoundingBox.h"
-#include "Pair.h"
+#include "BoundingBox.hpp"
+#include "Pair.hpp"
class Bezier
{
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.cpp
index 46902a2d567..d8a7efb39ee 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.cpp
@@ -2,7 +2,7 @@
** BgColorSpecialHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,9 +20,9 @@
#include <config.h>
#include <algorithm>
-#include "BgColorSpecialHandler.h"
-#include "ColorSpecialHandler.h"
-#include "SpecialActions.h"
+#include "BgColorSpecialHandler.hpp"
+#include "ColorSpecialHandler.hpp"
+#include "SpecialActions.hpp"
using namespace std;
@@ -37,7 +37,7 @@ void BgColorSpecialHandler::preprocess (const char*, std::istream &is, SpecialAc
if (!_pageColors.empty() && _pageColors.back().first == pageno)
_pageColors.back().second = color;
else
- _pageColors.push_back(PageColor(pageno, color));
+ _pageColors.emplace_back(PageColor(pageno, color));
}
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.hpp
index b6af8147658..d83fb1c7ddc 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** BgColorSpecialHandler.h **
+** BgColorSpecialHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,25 +18,25 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_BGCOLORSPECIALHANDLER_H
-#define DVISVGM_BGCOLORSPECIALHANDLER_H
+#ifndef BGCOLORSPECIALHANDLER_HPP
+#define BGCOLORSPECIALHANDLER_HPP
#include <vector>
-#include "Color.h"
-#include "SpecialHandler.h"
+#include "Color.hpp"
+#include "SpecialHandler.hpp"
class BgColorSpecialHandler : public SpecialHandler, public DVIBeginPageListener
{
public:
- void preprocess (const char *prefix, std::istream &is, SpecialActions &actions);
- bool process (const char *prefix, std::istream &is, SpecialActions &actions);
- const char* info () const {return "background color special";}
- const char* name () const {return "bgcolor";}
- const char** prefixes () const;
+ void preprocess (const char *prefix, std::istream &is, SpecialActions &actions) override;
+ bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+ const char* info () const override {return "background color special";}
+ const char* name () const override {return "bgcolor";}
+ const char** prefixes () const override;
protected:
- void dviBeginPage (unsigned pageno, SpecialActions &actions);
+ void dviBeginPage (unsigned pageno, SpecialActions &actions) override;
private:
typedef std::pair<unsigned,Color> PageColor; // page number and color
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Bitmap.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Bitmap.cpp
index ad8a915c318..40f5c1b5f8b 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Bitmap.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Bitmap.cpp
@@ -2,7 +2,7 @@
** Bitmap.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -22,8 +22,7 @@
#include <algorithm>
#include <cstdlib>
#include <limits>
-#include "Bitmap.h"
-#include "macros.h"
+#include "Bitmap.hpp"
using namespace std;
@@ -50,8 +49,8 @@ void Bitmap::resize (int minx, int maxx, int miny , int maxy) {
_yshift = miny;
_bpr = _cols/8 + (_cols % 8 ? 1 : 0); // bytes per row
_bytes.resize(_rows*_bpr);
- FORALL(_bytes, vector<UInt8>::iterator, it)
- *it = 0;
+ for (uint8_t &byte : _bytes)
+ byte = 0;
}
@@ -62,16 +61,16 @@ void Bitmap::resize (int minx, int maxx, int miny , int maxy) {
void Bitmap::setBits (int row, int col, int n) {
row -= _yshift;
col -= _xshift;
- UInt8 *byte = &_bytes[row*_bpr + col/8];
+ uint8_t *byte = &_bytes[row*_bpr + col/8];
if (byte < &_bytes[0])
return;
- const UInt8 *maxptr = &_bytes[0]+_bytes.size()-1;
+ const uint8_t *maxptr = &_bytes[0]+_bytes.size()-1;
while (n > 0 && byte <= maxptr) {
int b = 7 - col%8; // number of leftmost bit in current byte to be set
int m = min(n, b+1); // number of bits to be set in current byte
int bitseq = (1 << m)-1; // sequence of n set bits (bits 0..n-1 are set)
bitseq <<= b-m+1; // move bit sequence so that bit b is the leftmost set bit
- *byte |= UInt8(bitseq); // apply bit sequence to current byte
+ *byte |= uint8_t(bitseq); // apply bit sequence to current byte
byte++;
n -= m;
col += m;
@@ -82,7 +81,7 @@ void Bitmap::setBits (int row, int col, int n) {
void Bitmap::forAllPixels (Callback &data) const {
for (int row=0; row < _rows ; row++) {
for (int col=0; col < _bpr; col++) {
- UInt8 byte = _bytes[row*_bpr+col];
+ uint8_t byte = _bytes[row*_bpr+col];
int x;
for (int b=7; (b >= 0) && ((x = 8*col+(7-b)) < _cols); b--)
data.pixel(x, row, bool(byte & (1 << b)), *this);
@@ -102,7 +101,7 @@ class BBoxCallback : public Bitmap::Callback
int maxy () const {return _maxy;}
bool empty () const {return !_changed;}
- void pixel (int x, int y, bool set, const Bitmap&) {
+ void pixel (int x, int y, bool set, const Bitmap&) override {
if (set) {
_minx = min(_minx, x);
_miny = min(_miny, y);
@@ -112,7 +111,7 @@ class BBoxCallback : public Bitmap::Callback
}
}
- void finish () {
+ void finish () override {
if (empty())
_minx = _miny = 0;
}
@@ -151,7 +150,7 @@ void Bitmap::getExtent (int &w, int &h) const {
ostream& Bitmap::write (ostream &os) const {
for (int r=_rows-1; r >= 0 ; r--) {
for (int c=0; c < _bpr; c++) {
- UInt8 byte = _bytes[r*_bpr+c];
+ uint8_t byte = _bytes[r*_bpr+c];
for (int b=128; b; b>>=1)
os << (byte & b ? '*' : '-');
os << ' ';
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Bitmap.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Bitmap.hpp
index c4e8e3d1a4b..30c29cf5f16 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Bitmap.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Bitmap.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Bitmap.h **
+** Bitmap.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,19 +18,18 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_BITMAP_H
-#define DVISVGM_BITMAP_H
+#ifndef BITMAP_HPP
+#define BITMAP_HPP
#include <ostream>
#include <vector>
-#include "types.h"
class Bitmap
{
public:
struct Callback {
- virtual ~Callback() {}
+ virtual ~Callback() =default;
virtual void pixel (int x, int y, bool set, Bitmap &bm) {}
virtual void pixel (int x, int y, bool set, const Bitmap &bm) {}
virtual void finish () {}
@@ -41,7 +40,7 @@ class Bitmap
Bitmap (int minx, int maxx, int miny , int maxy);
void resize (int minx, int maxx, int miny , int maxy);
void setBits(int row, int col, int n);
- const UInt8* rowPtr (int row) const {return &_bytes[row*_bpr];}
+ const uint8_t* rowPtr (int row) const {return &_bytes[row*_bpr];}
int height () const {return _rows;}
int width () const {return _cols;}
int xshift () const {return _xshift;}
@@ -64,7 +63,7 @@ class Bitmap
int _rows, _cols; ///< number of rows, columns
int _xshift, _yshift; ///< horizontal/vertical shift
int _bpr; ///< number of bytes per row
- std::vector<UInt8> _bytes;
+ std::vector<uint8_t> _bytes;
};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.cpp
index f4fc6f7ca71..f45b17e966d 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.cpp
@@ -2,7 +2,7 @@
** BoundingBox.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,10 +21,11 @@
#include <config.h>
#include <algorithm>
#include <sstream>
-#include "BoundingBox.h"
-#include "Matrix.h"
-#include "XMLNode.h"
-#include "XMLString.h"
+#include "BoundingBox.hpp"
+#include "Matrix.hpp"
+#include "utility.hpp"
+#include "XMLNode.hpp"
+#include "XMLString.hpp"
using namespace std;
@@ -66,27 +67,13 @@ BoundingBox::BoundingBox (const string &boxstr)
}
-/** Removes leading and trailing whitespace from the given string. */
-static string& strip (string &str) {
- size_t n=0;
- while (n < str.length() && isspace(str[n]))
- ++n;
- str.erase(0, n);
- n=str.length()-1;
- while (n > 0 && isspace(str[n]))
- --n;
- str.erase(n+1);
- return str;
-}
-
-
/** Extracts a sequence of length values from a given string.
* @param[in] boxstr whitespace and/or comma separated string of lengths.
* @param[out] the extracted lengths */
void BoundingBox::extractLengths (string boxstr, vector<Length> &lengths) {
const size_t len = boxstr.length();
size_t l=0;
- strip(boxstr);
+ boxstr = util::trim(boxstr);
string lenstr;
do {
while (l < len && isspace(boxstr[l]))
@@ -96,7 +83,7 @@ void BoundingBox::extractLengths (string boxstr, vector<Length> &lengths) {
r++;
lenstr = boxstr.substr(l, r-l);
if (!lenstr.empty()) {
- lengths.push_back(Length(lenstr));
+ lengths.emplace_back(Length(lenstr));
if (boxstr[r] == ',')
r++;
l = r;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.hpp
index 9d7dff1b888..963484ad9d0 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** BoundingBox.h **
+** BoundingBox.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,17 +18,15 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_BOUNDINGBOX_H
-#define DVISVGM_BOUNDINGBOX_H
+#ifndef BOUNDINGBOX_HPP
+#define BOUNDINGBOX_HPP
#include <ostream>
#include <string>
#include <vector>
-#include "Length.h"
-#include "MessageException.h"
-#include "Pair.h"
-#include "macros.h"
-#include "types.h"
+#include "Length.hpp"
+#include "MessageException.hpp"
+#include "Pair.hpp"
class Matrix;
@@ -90,6 +88,9 @@ class BoundingBox
bool _locked : 1; ///< if true, the box data is read-only
};
-IMPLEMENT_OUTPUT_OPERATOR(BoundingBox)
+
+inline std::ostream& operator << (std::ostream &os, const BoundingBox &bbox) {
+ return bbox.write(os);
+}
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp
new file mode 100644
index 00000000000..6cd0a87d573
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp
@@ -0,0 +1,233 @@
+/*************************************************************************
+** CLCommandLine.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <algorithm>
+#include <cstring>
+#include <map>
+#include "CLCommandLine.hpp"
+#include "version.hpp"
+
+using namespace CL;
+using namespace std;
+
+
+CommandLine::CommandLine (const char *summary, const char *usage, const char *copyright)
+ : _summary(summary), _usage(usage), _copyright(copyright)
+{
+}
+
+
+void CommandLine::parse (int argc, char **argv) {
+ bool filesOnly = false;
+ for (int i=1; i < argc; i++) {
+ istringstream iss(argv[i]);
+ if (filesOnly || iss.peek() != '-')
+ _files.push_back(argv[i]);
+ else {
+ iss.get(); // skip dash
+ if (iss.peek() != '-')
+ parseShortOption(iss, argc, argv, i);
+ else {
+ iss.get(); // skip dash
+ if (iss.peek() == EOF) // "--" only, no following option name?
+ filesOnly = true; // treat all following options as filenames
+ else
+ parseLongOption(iss);
+ }
+ }
+ }
+}
+
+
+static void error (const Option &option, bool shortname, const string &msg) {
+ ostringstream oss;
+ oss << "option ";
+ if (shortname)
+ oss << '-' << option.shortName();
+ else
+ oss << "--" << option.longName();
+ oss << ": " << msg;
+ throw CommandLineException(oss.str());
+}
+
+
+static void type_error (const Option &option, bool shortname) {
+ ostringstream oss;
+ switch (option.argMode()) {
+ case Option::ArgMode::NONE:
+ error(option, shortname, "no argument expected");
+ break;
+ case Option::ArgMode::OPTIONAL:
+ oss << "optional argument ";
+ if (!option.argName().empty())
+ oss << "'" << option.argName() << "' ";
+ oss << "must be of "+option.typeString()+" type";
+ error(option, shortname, oss.str());
+ break;
+ default:
+ oss << option.typeString()+" argument ";
+ if (!option.argName().empty())
+ oss << "'" << option.argName() << "' ";
+ oss << "expected";
+ error(option, shortname, oss.str());
+ }
+}
+
+
+void CommandLine::parseShortOption (istringstream &iss, int argc, char **argv, int &argn) {
+ bool combined = false;
+ do {
+ char shortname = static_cast<char>(iss.get());
+ if (!isalnum(shortname))
+ throw CommandLineException(string("syntax error: -")+shortname);
+ if (Option *option = lookupOption(shortname)) {
+ if (!combined || option->argMode() == Option::ArgMode::NONE) {
+ if (option->argMode() == Option::ArgMode::REQUIRED && strlen(argv[argn]) == 2) { // required argument separated by whitespace?
+ if (argn+1 < argc && argv[argn+1][0] != '-')
+ iss.str(argv[++argn]); // continue parsing with next command-line field
+ }
+ if (!option->parse(iss, false))
+ type_error(*option, true);
+ if (option->argMode() == Option::ArgMode::NONE)
+ combined = true;
+ }
+ else
+ throw CommandLineException(string("option -")+ shortname + " must be given separately");
+ }
+ else
+ throw CommandLineException(string("unknown option -")+shortname);
+ }
+ while (combined && !iss.eof());
+}
+
+
+void CommandLine::parseLongOption (istream &is) {
+ string optname;
+ while (isalnum(is.peek()) || (!optname.empty() && is.peek() == '-'))
+ optname += char(is.get());
+ if (optname.empty())
+ throw CommandLineException("unexpected character '" + string(1, is.peek()) + "' after '--'");
+ vector<Option*> options = lookupOption(optname);
+ if (options.empty())
+ throw CommandLineException("unknown option --"+optname);
+ else if (options.size() == 1) {
+ if (!options[0]->parse(is, true))
+ type_error(*options[0], false);
+ }
+ else { // is partially given option ambiguous?
+ sort(options.begin(), options.end(), [](const Option *opt1, const Option *opt2) {
+ return opt1->longName() < opt2->longName();
+ });
+ string msg = "option --" + optname + " is ambiguous (";
+ for (const Option *opt : options) {
+ if (opt != options[0])
+ msg += ", ";
+ msg += opt->longName();
+ }
+ msg += ')';
+ throw CommandLineException(msg);
+ }
+}
+
+
+/** Returns all options that match the given long name. */
+vector<Option*> CommandLine::lookupOption (const string &optname) const {
+ vector<Option*> matches;
+ int len = optname.length();
+ for (OptSectPair optsect : options()) {
+ if (optsect.first->longName() == optname) { // exact match?
+ matches.clear();
+ matches.push_back(optsect.first);
+ break;
+ }
+ if (optsect.first->longName().substr(0, len) == optname) // partial match?
+ matches.push_back(optsect.first);
+ }
+ return matches;
+}
+
+
+/** Returns the option that match the given short name. */
+Option* CommandLine::lookupOption (char optchar) const {
+ auto it = find_if(options().begin(), options().end(), [=](const OptSectPair &optsect) {
+ return optsect.first->shortName() == optchar;
+ });
+ return (it != options().end()) ? it->first : nullptr;
+}
+
+
+/** Prints help text including summary of options.
+ * @param[in] os output stream the help text is printed to
+ * @param[in] mode output mode (0=section, 1=sorted by short options, 2=sorted by long options) */
+void CommandLine::help (ostream &os, int mode) const {
+ os << PROGRAM_NAME << ' '<< PROGRAM_VERSION << "\n\n";
+ os << _summary << "\n\n";
+ // print usage info
+ size_t start=0, pos=0;
+ string usage = _usage;
+ while ((pos = usage.find('\n', start)) != string::npos || start < usage.length()) {
+ os << (start == 0 ? "Usage: " : " ") << PROGRAM_NAME << ' ' << usage.substr(start, pos) << '\n';
+ start = (pos != string::npos ? pos+1 : string::npos);
+ }
+ if (mode > 0)
+ os << '\n';
+
+ // compute width of first column of help output
+ map<Option*, pair<string,string>> linecols;
+ size_t col1width=0;
+ for (const OptSectPair &ospair : options()) {
+ string line = ospair.first->helpline();
+ if ((pos = line.find('\t')) != string::npos) {
+ linecols.emplace(ospair.first, pair<string,string>(line.substr(0, pos), line.substr(pos+1)));
+ col1width = max(col1width, pos);
+ }
+ }
+ if (mode > 0) {
+ bool (*isless)(const OptSectPair&, const OptSectPair&) = [](const OptSectPair &p1, const OptSectPair &p2) {
+ return p1.first->longName() < p2.first->longName();
+ };
+ if (mode == 1) {
+ isless = [](const OptSectPair &p1, const OptSectPair &p2) {
+ char c1 = p1.first->shortName(), c2 = p2.first->shortName();
+ if (c1 == c2)
+ return p1.first->longName() < p2.first->longName();
+ if (tolower(c1) == tolower(c2))
+ return c1 > c2; // lower case before upper case letters
+ return tolower(c1) < tolower(c2);
+ };
+ }
+ sort(options().begin(), options().end(), isless);
+ }
+
+ // print summary of options
+ col1width += 2;
+ int sectno=-1;
+ for (const OptSectPair &ospair : options()) {
+ if (mode == 0 && ospair.second != sectno) { // first option in current section?
+ sectno = ospair.second;
+ if (section(sectno))
+ os << '\n' << section(sectno) << ":\n";
+ }
+ Option *opt = ospair.first;
+ os << " " << setw(col1width) << left << linecols[opt].first;
+ os << setw(0) << linecols[opt].second << '\n';
+ }
+ os << '\n' << _copyright << '\n';
+} \ No newline at end of file
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.hpp
new file mode 100644
index 00000000000..549bfa80c32
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.hpp
@@ -0,0 +1,67 @@
+/*************************************************************************
+** CLCommandLine.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef CL_COMMANDLINE_HPP
+#define CL_COMMANDLINE_HPP
+
+#include <array>
+#include <ostream>
+#include <string>
+#include <sstream>
+#include <vector>
+#include "CLOption.hpp"
+#include "MessageException.hpp"
+
+namespace CL {
+
+class CommandLine {
+ public:
+ CommandLine (const char *summary, const char *usage, const char *copyright);
+ virtual ~CommandLine () =default;
+ void parse (int argc, char **argv);
+ void help (std::ostream &os, int mode=0) const;
+ const std::vector<std::string>& filenames () const {return _files;}
+
+ protected:
+ typedef std::pair<Option*,int> OptSectPair;
+ void parseShortOption (std::istringstream &is, int argc, char **argv, int &argn);
+ void parseLongOption (std::istream &is);
+ virtual std::vector<OptSectPair>& options () const =0;
+ virtual const char* section (size_t n) const {return nullptr;}
+ Option* lookupOption (char optchar) const;
+ std::vector<Option*> lookupOption (const std::string &optname) const;
+
+ private:
+ const char *_summary;
+ const char *_usage;
+ const char *_copyright;
+ std::vector<std::string> _files;
+};
+
+
+struct CommandLineException : public MessageException
+{
+ CommandLineException (const std::string &msg) : MessageException(msg) {}
+};
+
+} // namespace CL
+
+#endif
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CLOption.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CLOption.hpp
new file mode 100644
index 00000000000..3e1efe84043
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CLOption.hpp
@@ -0,0 +1,198 @@
+/*************************************************************************
+** CLOption.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef CL_OPTION_HPP
+#define CL_OPTION_HPP
+
+#include <iomanip>
+#include <sstream>
+#include <string>
+
+namespace CL {
+
+class Option
+{
+ friend class CommandLine;
+ public:
+ enum class ArgMode {NONE, OPTIONAL, REQUIRED};
+
+ public:
+ Option (const char *longname, char shortname, const char *summary)
+ : _shortName(shortname), _longName(longname), _summary(summary), _given(false) {}
+
+ virtual ~Option () = default;
+ virtual std::string typeString () const {return "";}
+ virtual ArgMode argMode () const {return ArgMode::NONE;}
+ virtual bool given () const {return _given;}
+ virtual char shortName () const {return _shortName;}
+ virtual std::string longName () const {return _longName;}
+ virtual std::string summary () const {return _summary;}
+ virtual std::string argName () const {return "";}
+ virtual std::string valueString () const {return "";}
+
+ virtual std::string helpline () const {
+ std::string line;
+ if (_shortName != '\0')
+ line = std::string("-") + _shortName + ", ";
+ else
+ line = " ";
+ line += "--" + std::string(_longName);
+ if (!argName().empty()) {
+ if (argMode() == ArgMode::OPTIONAL)
+ line += '[';
+ line += '=';
+ line += argName();
+ if (argMode() == ArgMode::OPTIONAL)
+ line += ']';
+ }
+ if (_summary) {
+ line += '\t';
+ line += _summary;
+ }
+ if (argMode() != ArgMode::NONE && !valueString().empty())
+ line += std::string(" [") + valueString() + "]";
+ return line;
+ }
+
+ protected:
+ virtual bool parse (std::istream &is, bool longopt) {
+ if (is.eof())
+ return given(argMode() != ArgMode::REQUIRED);
+ if (argMode() == ArgMode::OPTIONAL && is.peek() == ' ')
+ return given(false);
+ if (longopt && is.get() != '=')
+ return given(false);
+ return given(parseValue(is));
+ }
+
+ virtual bool parseValue (std::istream &is) {
+ return is.peek() == EOF || argMode() == ArgMode::NONE;
+ }
+
+ bool given (bool val) {return _given = val;}
+
+ private:
+ char _shortName;
+ const char *_longName;
+ const char*_summary;
+ bool _given;
+};
+
+
+template <typename T>
+constexpr const char* typeString () {return "unknown";}
+
+template<> constexpr const char* typeString<bool> () {return "boolean";}
+template<> constexpr const char* typeString<int> () {return "integer";}
+template<> constexpr const char* typeString<unsigned> () {return "non-negative integer";}
+template<> constexpr const char* typeString<double> () {return "floating point";}
+template<> constexpr const char* typeString<std::string> () {return "string";}
+
+template <typename T>
+inline T parseValue (std::istream &is) {
+ T value;
+ is >> value;
+ return value;
+}
+
+template<>
+inline std::string parseValue (std::istream &is) {
+ is >> std::ws;
+ std::string str;
+ std::getline(is, str);
+ return str;
+}
+
+
+template <typename T, Option::ArgMode mode>
+class TypedOption : public Option
+{
+ public:
+ TypedOption (const char *longName, char shortName, const char *argName, T val, const char *summary)
+ : Option(longName, shortName, summary), _argName(argName), _value(val) {}
+
+ TypedOption (const char *longName, char shortName, const char *argName, const char *summary)
+ : Option(longName, shortName, summary), _argName(argName), _value() {}
+
+ T value () const {return _value;}
+ std::string typeString () const override {return CL::typeString<T>();}
+ std::string argName() const override {return _argName ? _argName : "";}
+
+ std::string valueString () const override {
+ std::ostringstream oss;
+ oss << _value;
+ return oss.str();
+ }
+
+ ArgMode argMode () const override {return mode;}
+
+ protected:
+ bool parseValue (std::istream &is) override {
+ T value = CL::parseValue<T>(is);
+ if (!is.fail())
+ _value = std::move(value);
+ return !is.fail() || (argMode() == ArgMode::OPTIONAL && is.eof());
+ }
+
+ private:
+ const char *_argName;
+ T _value;
+};
+
+
+template <Option::ArgMode mode>
+class TypedOption<bool, mode> : public Option
+{
+ public:
+ TypedOption (const char *longName, char shortName, const char *argName, bool val, const char *summary)
+ : Option(longName, shortName, summary), _argName(argName), _value(val) {}
+
+ TypedOption (const char *longName, char shortName, const char *argName, const char *summary)
+ : Option(longName, shortName, summary), _argName(argName), _value(false) {}
+
+ bool value () const {return _value;}
+ std::string valueString () const override {return _value ? "yes" : "no";}
+ ArgMode argMode () const override {return mode;}
+ std::string typeString () const override {return CL::typeString<bool>();}
+ std::string argName() const override {return _argName ? _argName : "";}
+
+ protected:
+ bool parseValue (std::istream &is) override {
+ std::string str;
+ is >> str;
+ if (is.fail())
+ return argMode() != ArgMode::REQUIRED;
+ if (str == "yes" || str == "y" || str == "true" || str == "1")
+ _value = true;
+ else if (str == "no" || str == "n" || str == "false" || str == "0")
+ _value = false;
+ else
+ return false;
+ return true;
+ }
+
+ private:
+ const char *_argName;
+ bool _value;
+};
+
+} // namespace CL
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CMap.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CMap.cpp
index ba536de75d7..857d6b0947f 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CMap.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CMap.cpp
@@ -2,7 +2,7 @@
** CMap.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,15 +21,15 @@
#include <config.h>
#include <algorithm>
#include <sstream>
-#include "CMap.h"
-#include "CMapManager.h"
-#include "FileFinder.h"
+#include "CMap.hpp"
+#include "CMapManager.hpp"
+#include "FileFinder.hpp"
using namespace std;
const char* CMap::path () const {
- return FileFinder::lookup(name(), "cmap", false);
+ return FileFinder::instance().lookup(name(), "cmap", false);
}
@@ -48,7 +48,7 @@ string SegmentedCMap::getROString() const {
/** Returns the CID for a given character code. */
-UInt32 SegmentedCMap::cid (UInt32 c) const {
+uint32_t SegmentedCMap::cid (uint32_t c) const {
if (_cidranges.valueExists(c))
return _cidranges.valueAt(c);
if (_basemap)
@@ -58,7 +58,7 @@ UInt32 SegmentedCMap::cid (UInt32 c) const {
/** Returns the character code of a base font for a given CID. */
-UInt32 SegmentedCMap::bfcode (UInt32 cid) const {
+uint32_t SegmentedCMap::bfcode (uint32_t cid) const {
if (_bfranges.valueExists(cid))
return _bfranges.valueAt(cid);
if (_basemap)
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CMap.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/CMap.hpp
index c6a3e2c0c3b..31adbaac038 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CMap.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CMap.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** CMap.h **
+** CMap.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,30 +18,29 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_CMAP_H
-#define DVISVGM_CMAP_H
+#ifndef CMAP_HPP
+#define CMAP_HPP
#include <algorithm>
#include <ostream>
#include <vector>
-#include "FontEncoding.h"
-#include "RangeMap.h"
-#include "types.h"
+#include "FontEncoding.hpp"
+#include "RangeMap.hpp"
struct CMap : public NamedFontEncoding
{
- virtual ~CMap () {}
+ virtual ~CMap () =default;
virtual bool vertical () const =0;
virtual bool mapsToCID () const =0;
- virtual const char* path () const;
- virtual UInt32 cid (UInt32 c) const =0;
- virtual UInt32 bfcode (UInt32 cid) const =0;
+ virtual uint32_t cid (uint32_t c) const =0;
+ virtual uint32_t bfcode (uint32_t cid) const =0;
virtual std::string getROString () const =0;
- virtual const FontEncoding* findCompatibleBaseFontMap (const PhysicalFont *font, CharMapID &charmapID) const;
- virtual bool mapsToCharIndex () const {return mapsToCID();}
+ const char* path () const override;
+ const FontEncoding* findCompatibleBaseFontMap (const PhysicalFont *font, CharMapID &charmapID) const override;
+ bool mapsToCharIndex () const override {return mapsToCID();}
- Character decode (UInt32 c) const {
+ Character decode (uint32_t c) const override {
if (mapsToCID())
return Character(Character::INDEX, cid(c));
return Character(Character::CHRCODE, bfcode(c));
@@ -51,36 +50,36 @@ struct CMap : public NamedFontEncoding
struct IdentityCMap : public CMap
{
- UInt32 cid (UInt32 c) const {return c;}
- UInt32 bfcode (UInt32 cid) const {return 0;}
- std::string getROString () const {return "Adobe-Identity";}
- bool mapsToCID() const {return true;}
+ uint32_t cid (uint32_t c) const override {return c;}
+ uint32_t bfcode (uint32_t cid) const override {return 0;}
+ std::string getROString () const override {return "Adobe-Identity";}
+ bool mapsToCID() const override {return true;}
};
struct IdentityHCMap : public IdentityCMap
{
- bool vertical () const {return false;}
- const char* name () const {return "Identity-H";}
+ bool vertical () const override {return false;}
+ const char* name () const override {return "Identity-H";}
};
struct IdentityVCMap : public IdentityCMap
{
- bool vertical () const {return true;}
- const char* name () const {return "Identity-V";}
+ bool vertical () const override {return true;}
+ const char* name () const override {return "Identity-V";}
};
struct UnicodeCMap : public CMap
{
- bool vertical () const {return false;}
- const char* name () const {return "unicode";}
- bool mapsToCID () const {return false;}
- const char* path () const {return 0;}
- UInt32 cid (UInt32 c) const {return c;}
- UInt32 bfcode (UInt32 cid) const {return cid;}
- std::string getROString () const {return "";}
+ bool vertical () const override {return false;}
+ const char* name () const override {return "unicode";}
+ bool mapsToCID () const override {return false;}
+ const char* path () const override {return 0;}
+ uint32_t cid (uint32_t c) const override {return c;}
+ uint32_t bfcode (uint32_t cid) const override {return cid;}
+ std::string getROString () const override {return "";}
};
@@ -90,17 +89,17 @@ class SegmentedCMap : public CMap
public:
SegmentedCMap (const std::string &fname) : _filename(fname), _basemap(0), _vertical(false), _mapsToCID(true) {}
- const char* name () const {return _filename.c_str();}
- UInt32 cid (UInt32 c) const;
- UInt32 bfcode (UInt32 cid) const;
- void addCIDRange (UInt32 first, UInt32 last, UInt32 cid) {_cidranges.addRange(first, last, cid);}
- void addBFRange (UInt32 first, UInt32 last, UInt32 chrcode) {_bfranges.addRange(first, last, chrcode);}
+ const char* name () const override {return _filename.c_str();}
+ uint32_t cid (uint32_t c) const override;
+ uint32_t bfcode (uint32_t cid) const override;
+ void addCIDRange (uint32_t first, uint32_t last, uint32_t cid) {_cidranges.addRange(first, last, cid);}
+ void addBFRange (uint32_t first, uint32_t last, uint32_t chrcode) {_bfranges.addRange(first, last, chrcode);}
void write (std::ostream &os) const;
- bool vertical () const {return _vertical;}
- bool mapsToCID () const {return _mapsToCID;}
- size_t numCIDRanges () const {return _cidranges.size();}
- size_t numBFRanges () const {return _bfranges.size();}
- std::string getROString () const;
+ bool vertical () const override {return _vertical;}
+ bool mapsToCID () const override {return _mapsToCID;}
+ size_t numCIDRanges () const {return _cidranges.size();}
+ size_t numBFRanges () const {return _bfranges.size();}
+ std::string getROString () const override;
private:
std::string _filename;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapManager.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapManager.cpp
index b10e7c0c9da..5881a8f8af6 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapManager.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapManager.cpp
@@ -2,7 +2,7 @@
** CMapManager.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,22 +20,16 @@
#include <config.h>
#include <sstream>
-#include "CMap.h"
-#include "CMapManager.h"
-#include "CMapReader.h"
-#include "FileFinder.h"
-#include "Font.h"
-#include "Message.h"
+#include "CMap.hpp"
+#include "CMapManager.hpp"
+#include "CMapReader.hpp"
+#include "FileFinder.hpp"
+#include "Font.hpp"
+#include "Message.hpp"
using namespace std;
-CMapManager::~CMapManager () {
- for (CMaps::iterator it=_cmaps.begin(); it != _cmaps.end(); ++it)
- delete it->second;
-}
-
-
CMapManager& CMapManager::instance () {
static CMapManager cmm;
return cmm;
@@ -46,7 +40,7 @@ CMapManager& CMapManager::instance () {
CMap* CMapManager::lookup (const string &name) {
CMaps::iterator it = _cmaps.find(name);
if (it != _cmaps.end())
- return it->second;
+ return it->second.get();
if (_includedCMaps.find(name) != _includedCMaps.end()) {
_level = 0;
@@ -63,7 +57,7 @@ CMap* CMapManager::lookup (const string &name) {
else if (name == "unicode")
cmap = new UnicodeCMap;
if (cmap) {
- _cmaps[name] = cmap;
+ _cmaps[name].reset(cmap);
return cmap;
}
// Load cmap data of file <name> and also process all cmaps referenced by operator "usecmap".
@@ -78,7 +72,7 @@ CMap* CMapManager::lookup (const string &name) {
_level = 1;
Message::wstream(true) << "CMap file '" << name << "' not found\n";
}
- _cmaps[name] = cmap;
+ _cmaps[name].reset(cmap);
}
catch (const CMapReaderException &e) {
Message::estream(true) << "CMap file " << name << ": " << e.what() << "\n";
@@ -130,7 +124,7 @@ const CMap* CMapManager::findCompatibleBaseFontMap (const PhysicalFont *font, co
for (size_t i=0; i < charmapIDs.size(); i++) {
if (enc->id == charmapIDs[i]) {
string cmapname = ro+"-"+enc->encname;
- if (is_unicode_map || FileFinder::lookup(cmapname, "cmap", false)) {
+ if (is_unicode_map || FileFinder::instance().lookup(cmapname, "cmap", false)) {
charmapID = enc->id;
return is_unicode_map ? cmap : lookup(cmapname);
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapManager.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapManager.hpp
index 8b226a47a9c..994d5dc2155 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapManager.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapManager.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** CMapManager.h **
+** CMapManager.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,14 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_CMAPMANAGER_H
-#define DVISVGM_CMAPMANAGER_H
+#ifndef CMAPMANAGER_HPP
+#define CMAPMANAGER_HPP
#include <map>
+#include <memory>
#include <set>
#include <string>
-#include "CharMapID.h"
+#include "CharMapID.hpp"
struct CMap;
struct FontEncoding;
@@ -33,9 +34,8 @@ class PhysicalFont;
class CMapManager
{
- typedef std::map<std::string, CMap*> CMaps;
+ typedef std::map<std::string, std::unique_ptr<CMap>> CMaps;
public:
- ~CMapManager ();
CMap* lookup (const std::string &name);
const CMap* findCompatibleBaseFontMap (const PhysicalFont *font, const CMap *cmap, CharMapID &charmapID);
static CMapManager& instance ();
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapReader.cpp
index e9c49c573b6..0006da83fdd 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapReader.cpp
@@ -2,7 +2,7 @@
** CMapReader.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,13 +19,15 @@
*************************************************************************/
#include <config.h>
+#include <algorithm>
+#include <array>
#include <fstream>
#include <sstream>
-#include "CMap.h"
-#include "CMapManager.h"
-#include "CMapReader.h"
-#include "FileFinder.h"
-#include "InputReader.h"
+#include "CMap.hpp"
+#include "CMapManager.hpp"
+#include "CMapReader.hpp"
+#include "FileFinder.hpp"
+#include "InputReader.hpp"
using namespace std;
@@ -39,7 +41,7 @@ CMapReader::CMapReader () : _cmap(0), _inCMap(false)
* @param fname[in] name/path of cmap file
* @return CMap object representing the read data, or 0 if file could not be read */
CMap* CMapReader::read (const string &fname) {
- if (const char *path = FileFinder::lookup(fname.c_str(), "cmap", false)) {
+ if (const char *path = FileFinder::instance().lookup(fname.c_str(), "cmap", false)) {
ifstream ifs(path);
if (ifs)
return read(ifs, fname);
@@ -60,15 +62,15 @@ CMap* CMapReader::read (std::istream& is, const string &name) {
try {
while (ir) {
Token token(ir);
- if (token.type() == Token::TT_EOF)
+ if (token.type() == Token::Type::END)
break;
if (_inCMap) {
- if (token.type() == Token::TT_OPERATOR)
+ if (token.type() == Token::Type::OPERATOR)
executeOperator(token.strvalue(), ir);
else
_tokens.push_back(token);
}
- else if (token.type() == Token::TT_OPERATOR && token.strvalue() == "begincmap")
+ else if (token.type() == Token::Type::OPERATOR && token.strvalue() == "begincmap")
_inCMap = true;
}
}
@@ -81,25 +83,27 @@ CMap* CMapReader::read (std::istream& is, const string &name) {
}
-void CMapReader::executeOperator (const string &op, InputReader &ir) {
- const struct Operator {
+/** Executes a PS operator from the CMap file.
+ * @param[in] opname name of operator to execute
+ * @param[in] ir reader object used to read the CMap stream */
+void CMapReader::executeOperator (const string &opname, InputReader &ir) {
+ struct Operator {
const char *name;
void (CMapReader::*handler)(InputReader&);
- } operators[] = {
+ };
+ array<Operator, 6> operators = {{
{"beginbfchar", &CMapReader::op_beginbfchar},
{"beginbfrange", &CMapReader::op_beginbfrange},
{"begincidrange", &CMapReader::op_begincidrange},
{"def", &CMapReader::op_def},
{"endcmap", &CMapReader::op_endcmap},
{"usecmap", &CMapReader::op_usecmap},
- };
-
- for (size_t i=0; i < sizeof(operators)/sizeof(Operator); i++) {
- if (operators[i].name == op) {
- (this->*operators[i].handler)(ir);
- break;
- }
- }
+ }};
+ auto it = find_if(operators.begin(), operators.end(), [&](const Operator &op) {
+ return op.name == opname;
+ });
+ if (it != operators.end())
+ (this->*it->handler)(ir);
_tokens.clear();
}
@@ -139,7 +143,7 @@ void CMapReader::op_usecmap (InputReader &) {
}
-static UInt32 parse_hexentry (InputReader &ir) {
+static uint32_t parse_hexentry (InputReader &ir) {
ir.skipSpace();
if (ir.get() != '<')
throw CMapReaderException("invalid range entry ('<' expected)");
@@ -148,18 +152,18 @@ static UInt32 parse_hexentry (InputReader &ir) {
throw CMapReaderException("invalid range entry (hexadecimal value expected)");
if (ir.get() != '>')
throw CMapReaderException("invalid range entry ('>' expected)");
- return UInt32(val);
+ return uint32_t(val);
}
void CMapReader::op_begincidrange (InputReader &ir) {
- if (!_tokens.empty() && _tokens.back().type() == Token::TT_NUMBER) {
+ if (!_tokens.empty() && _tokens.back().type() == Token::Type::NUMBER) {
ir.skipSpace();
int num_entries = static_cast<int>(popToken().numvalue());
while (num_entries > 0 && ir.peek() == '<') {
- UInt32 first = parse_hexentry(ir);
- UInt32 last = parse_hexentry(ir);
- UInt32 cid;
+ uint32_t first = parse_hexentry(ir);
+ uint32_t last = parse_hexentry(ir);
+ uint32_t cid;
ir.skipSpace();
if (!ir.parseUInt(cid))
throw CMapReaderException("invalid range entry (decimal value expected)");
@@ -171,13 +175,13 @@ void CMapReader::op_begincidrange (InputReader &ir) {
void CMapReader::op_beginbfrange (InputReader &ir) {
- if (!_tokens.empty() && _tokens.back().type() == Token::TT_NUMBER) {
+ if (!_tokens.empty() && _tokens.back().type() == Token::Type::NUMBER) {
ir.skipSpace();
int num_entries = static_cast<int>(popToken().numvalue());
while (num_entries > 0 && ir.peek() == '<') {
- UInt32 first = parse_hexentry(ir);
- UInt32 last = parse_hexentry(ir);
- UInt32 chrcode = parse_hexentry(ir);
+ uint32_t first = parse_hexentry(ir);
+ uint32_t last = parse_hexentry(ir);
+ uint32_t chrcode = parse_hexentry(ir);
_cmap->addBFRange(first, last, chrcode);
ir.skipSpace();
}
@@ -187,15 +191,15 @@ void CMapReader::op_beginbfrange (InputReader &ir) {
void CMapReader::op_beginbfchar (InputReader &ir) {
- if (!_tokens.empty() && _tokens.back().type() == Token::TT_NUMBER) {
+ if (!_tokens.empty() && _tokens.back().type() == Token::Type::NUMBER) {
ir.skipSpace();
int num_entries = static_cast<int>(popToken().numvalue());
while (num_entries > 0 && ir.peek() == '<') {
- UInt32 cid = parse_hexentry(ir);
+ uint32_t cid = parse_hexentry(ir);
ir.skipSpace();
if (ir.peek() == '/')
throw CMapReaderException("mapping of named characters is not supported");
- UInt32 chrcode = parse_hexentry(ir);
+ uint32_t chrcode = parse_hexentry(ir);
_cmap->addBFRange(cid, cid, chrcode);
ir.skipSpace();
}
@@ -220,12 +224,12 @@ void CMapReader::Token::scan (InputReader &ir) {
}
ir.skipSpace();
if (ir.eof())
- _type = TT_EOF;
+ _type = Type::END;
else if (ir.peek() == '/') { // PS name?
ir.get();
while (!strchr("[]{}<>", ir.peek()) && !isspace(ir.peek()))
_value += ir.get();
- _type = TT_NAME;
+ _type = Type::NAME;
}
else if (ir.peek() == '(') { // string?
ir.get();
@@ -238,11 +242,11 @@ void CMapReader::Token::scan (InputReader &ir) {
_value += ir.get();
}
ir.get(); // skip ')'
- _type = TT_STRING;
+ _type = Type::STRING;
}
else if (strchr("[]{}<>", ir.peek())) { // PS delimiter
_value = ir.get();
- _type = TT_DELIM;
+ _type = Type::DELIM;
}
else if (isdigit(ir.peek())) { // number?
double val;
@@ -250,12 +254,12 @@ void CMapReader::Token::scan (InputReader &ir) {
ostringstream oss;
oss << val;
_value = oss.str();
- _type = TT_NUMBER;
+ _type = Type::NUMBER;
}
}
else {
while (!strchr("[]{}<>", ir.peek()) && !isspace(ir.peek()))
_value += ir.get();
- _type = TT_OPERATOR;
+ _type = Type::OPERATOR;
}
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapReader.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapReader.hpp
index dc993fa8f6c..7c6662d2b17 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapReader.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CMapReader.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** CMapReader.h **
+** CMapReader.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,14 +18,14 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_CMAPREADER_H
-#define DVISVGM_CMAPREADER_H
+#ifndef CMAPREADER_HPP
+#define CMAPREADER_HPP
#include <cstdlib>
#include <istream>
#include <string>
#include <vector>
-#include "MessageException.h"
+#include "MessageException.hpp"
struct CMap;
@@ -36,7 +36,7 @@ class CMapReader
class Token
{
public:
- enum Type {TT_UNKNOWN, TT_EOF, TT_DELIM, TT_NUMBER, TT_STRING, TT_NAME, TT_OPERATOR};
+ enum class Type {UNKNOWN, END, DELIM, NUMBER, STRING, NAME, OPERATOR};
public:
Token (InputReader &ir);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CRC32.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CRC32.cpp
index 8b9eb9e4a95..1a4b56eb740 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CRC32.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CRC32.cpp
@@ -2,7 +2,7 @@
** CRC32.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,16 +20,16 @@
#include <config.h>
#include <cstring>
-#include "CRC32.h"
+#include "CRC32.hpp"
using namespace std;
CRC32::CRC32 () : _crc32(0xFFFFFFFF)
{
- const UInt32 poly = 0xEDB88320;
+ const uint32_t poly = 0xEDB88320;
for (int i = 0; i < 256; i++) {
- UInt32 crc=i;
+ uint32_t crc=i;
for (int j=8; j > 0; j--) {
if (crc & 1)
crc = (crc >> 1) ^ poly;
@@ -50,16 +50,16 @@ void CRC32::reset () {
/** Appends string bytes to the previous data and computes the resulting checksum.
* @param[in] data string to update the checksum with */
void CRC32::update (const char *data) {
- update((const UInt8*)data, strlen(data));
+ update((const uint8_t*)data, strlen(data));
}
/** Appends a single value to the previous data and computes the resulting checksum.
* @param[in] n value to update the checksum with
* @param[in] bytes number of bytes to consider (0-4) */
-void CRC32::update (UInt32 n, int bytes) {
+void CRC32::update (uint32_t n, int bytes) {
for (int i=bytes-1; i >= 0; --i) {
- UInt8 byte = UInt8((n >> (8*i)) & 0xff);
+ uint8_t byte = uint8_t((n >> (8*i)) & 0xff);
update(&byte, 1);
}
}
@@ -68,7 +68,7 @@ void CRC32::update (UInt32 n, int bytes) {
/** Appends a sequence of bytes to the previous data and computes the resulting checksum.
* @param[in] bytes pointer to array of bytes
* @param[in] len number of bytes in array */
-void CRC32::update (const UInt8 *bytes, size_t len) {
+void CRC32::update (const uint8_t *bytes, size_t len) {
for (size_t i=0; i < len; ++i)
_crc32 = ((_crc32 >> 8) & 0x00FFFFFF) ^ _tab[(_crc32 ^ *bytes++) & 0xFF];
}
@@ -78,13 +78,13 @@ void CRC32::update (istream &is) {
char buf [4096];
while (is) {
is.read(buf, 4096);
- update((UInt8*)buf, is.gcount());
+ update((uint8_t*)buf, is.gcount());
}
}
/** Returns the checksum computed from values added with the update functions. */
-UInt32 CRC32::get () const {
+uint32_t CRC32::get () const {
return _crc32 ^ 0xFFFFFFFF;
}
@@ -93,7 +93,7 @@ UInt32 CRC32::get () const {
* @param[in] bytes pointer to array of bytes
* @param[in] len number of bytes in array
* @return CRC32 checksum */
-UInt32 CRC32::compute (const UInt8 *bytes, size_t len) {
+uint32_t CRC32::compute (const uint8_t *bytes, size_t len) {
CRC32 crc32;
crc32.update(bytes, len);
return crc32.get();
@@ -101,12 +101,12 @@ UInt32 CRC32::compute (const UInt8 *bytes, size_t len) {
/** Computes the CRC32 checksum of a string. */
-UInt32 CRC32::compute (const char *str) {
- return compute((const UInt8*)str, strlen(str));
+uint32_t CRC32::compute (const char *str) {
+ return compute((const uint8_t*)str, strlen(str));
}
-UInt32 CRC32::compute (istream &is) {
+uint32_t CRC32::compute (istream &is) {
CRC32 crc32;
crc32.update(is);
return crc32.get();
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CRC32.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/CRC32.hpp
index 77853e1bff4..f91de71a41b 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CRC32.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CRC32.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** CRC32.h **
+** CRC32.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,33 +18,32 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef CRC32_H
-#define CRC32_H
+#ifndef CRC32_HPP
+#define CRC32_HPP
#include <cstdlib>
#include <istream>
-#include "types.h"
class CRC32
{
public:
CRC32 ();
- void update (const UInt8 *bytes, size_t len);
- void update (UInt32 n, int bytes=4);
+ void update (const uint8_t *bytes, size_t len);
+ void update (uint32_t n, int bytes=4);
void update (const char *str);
void update (std::istream &is);
- UInt32 get () const;
+ uint32_t get () const;
void reset ();
- static UInt32 compute (const UInt8 *bytes, size_t len);
- static UInt32 compute (const char *str);
- static UInt32 compute (std::istream &is);
+ static uint32_t compute (const uint8_t *bytes, size_t len);
+ static uint32_t compute (const char *str);
+ static uint32_t compute (std::istream &is);
protected:
CRC32 (const CRC32 &crc32) {}
private:
- UInt32 _crc32;
- UInt32 _tab[256];
+ uint32_t _crc32;
+ uint32_t _tab[256];
};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp
index 2aad6ec7e1a..2baadcf9ec8 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp
@@ -2,7 +2,7 @@
** Calculator.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,7 +21,7 @@
#include <config.h>
#include <cmath>
#include <sstream>
-#include "Calculator.h"
+#include "Calculator.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.hpp
index 7930e63a76c..2c117bb0456 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Calculator.h **
+** Calculator.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,13 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_CALCULATOR_H
-#define DVISVGM_CALCULATOR_H
+#ifndef CALCULATOR_HPP
+#define CALCULATOR_HPP
#include <istream>
#include <map>
#include <string>
-#include "MessageException.h"
+#include "MessageException.hpp"
struct CalculatorException : public MessageException
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.cpp
index 98040c8be14..5084081d0c9 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.cpp
@@ -2,7 +2,7 @@
** CharMapID.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,7 +18,7 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include "CharMapID.h"
+#include "CharMapID.hpp"
const CharMapID CharMapID::NONE(0, 0);
const CharMapID CharMapID::WIN_SYMBOL(3, 0);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.hpp
index 19f3d893463..ca1d47be9b7 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CharMapID.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** CharMapID.h **
+** CharMapID.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,15 +18,15 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_CHARMAPID_H
-#define DVISVGM_CHARMAPID_H
+#ifndef CHARMAPID_HPP
+#define CHARMAPID_HPP
-#include "types.h"
+#include <cstdint>
/** Represents a character map of a font. */
struct CharMapID {
CharMapID () : platform_id(0), encoding_id(0) {}
- CharMapID (UInt8 plf_id, UInt8 enc_id) : platform_id(plf_id), encoding_id(enc_id) {}
+ CharMapID (uint8_t plf_id, uint8_t enc_id) : platform_id(plf_id), encoding_id(enc_id) {}
bool operator == (const CharMapID &ids) const {
return platform_id == ids.platform_id && encoding_id == ids.encoding_id;
@@ -52,8 +52,8 @@ struct CharMapID {
static const CharMapID MAC_SIMPLCHINESE;
static const CharMapID MAC_KOREAN;
- UInt8 platform_id;
- UInt8 encoding_id;
+ uint8_t platform_id;
+ uint8_t encoding_id;
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Character.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Character.hpp
index da55476c5c3..ebb4c3476cb 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Character.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Character.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Character.h **
+** Character.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,26 +18,25 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_CHARACTER_H
-#define DVISVGM_CHARACTER_H
+#ifndef CHARACTER_HPP
+#define CHARACTER_HPP
-#include "types.h"
class Character
{
public:
enum Type {CHRCODE, INDEX, NAME};
Character (const char *name) : _type(NAME), _name(name) {}
- Character (Type type, UInt32 val) : _type(type), _number(val) {}
+ Character (Type type, uint32_t val) : _type(type), _number(val) {}
Character (Type type, const Character &c) : _type(type), _number(c.type() != NAME ? c._number : 0) {}
Type type () const {return _type;}
- const char* name () const {return _name;}
- UInt32 number () const {return _number;}
+ const char* name () const {return _name;}
+ uint32_t number () const {return _number;}
private:
Type _type;
union {
- UInt32 _number;
+ uint32_t _number;
const char *_name;
};
};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CmdLineParserBase.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CmdLineParserBase.cpp
deleted file mode 100644
index e6d11c102a4..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CmdLineParserBase.cpp
+++ /dev/null
@@ -1,381 +0,0 @@
-/*************************************************************************
-** CmdLineParserBase.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program 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 General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <algorithm>
-#include <cstdio>
-#include <cstring>
-#include "CmdLineParserBase.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "Message.h"
-
-using namespace std;
-
-void CmdLineParserBase::init () {
- _error = false;
- _files.clear();
-}
-
-
-/** Parses all options given on the command line.
- * @param[in] argc number of command-line arguments
- * @param[in] argv array providing the command-line arguments
- * @param[in] printErrors enable/disable printing of error messages */
-void CmdLineParserBase::parse (int argc, char **argv, bool printErrors) {
- init();
- _printErrors = printErrors;
- bool filesOnly = false; //
- for (int i=1; i < argc; i++) {
- CharInputBuffer ib(argv[i], strlen(argv[i]));
- BufferInputReader ir(ib);
- if (filesOnly || ir.peek() != '-')
- _files.push_back(argv[i]);
- else {
- ir.get();
- if (ir.peek() == '-') {
- // scan long option
- ir.get();
- if (ir.eof()) // "--" only
- filesOnly = true; // treat all following options as filenames
- else {
- string longname;
- while (isalnum(ir.peek()) || ir.peek() == '-')
- longname += char(ir.get());
- if (const Option *opt = option(longname))
- (*opt->handler)(this, ir, *opt, true);
- else if (!_error) {
- if (printErrors)
- Message::estream(false) << "unknown option --" << longname << '\n';
- _error = true;
- }
- }
- }
- else {
- // scan short option(s)
- bool combined = false; // multiple short options combined, e.g -abc
- do {
- int shortname = ir.get();
- if (const Option *opt = option(shortname)) {
- if (!combined || opt->argmode == ARG_NONE) {
- if (opt->argmode == ARG_REQUIRED && strlen(argv[i]) == 2) { // required argument separated by whitespace?
- if (i+1 < argc && argv[i+1][0] != '-')
- ib.assign(argv[++i]);
- }
- (*opt->handler)(this, ir, *opt, false);
- if (opt->argmode == ARG_NONE)
- combined = true;
- }
- else {
- if (printErrors)
- Message::estream(false) << "option -" << char(shortname) << " must be given separately\n";
- _error = true;
- }
- }
- else if (shortname > 0) {
- if (printErrors)
- Message::estream(false) << "unknown option -" << char(shortname) << '\n';
- _error = true;
- }
- }
- while (!_error && combined && !ir.eof());
- }
- }
- }
-}
-
-
-/** Prints an error message to stdout.
- * @param[in] opt error occurred in this option
- * @param[in] longopt the long option name was scanned
- * @param[in] msg message to be printed */
-void CmdLineParserBase::error (const Option &opt, bool longopt, const char *msg) const {
- if (_printErrors) {
- Message::estream(false) << "option ";
- if (longopt)
- Message::estream(false) << "--" << opt.longname;
- else
- Message::estream(false) << '-' << opt.shortname;
- Message::estream(false) << ": " << msg << '\n';
- }
- _error = true;
-}
-
-
-#if 0
-#include <iostream>
-
-/** Lists the scanned filenames. Just for debugging purposes. */
-void CmdLineParserBase::status () const {
- cout << "file names:\n";
- for (size_t i=0; i < _files.size(); i++)
- cout << " " << _files[i] << endl;
- cout << endl;
-}
-#endif
-
-
-/** Returns the option information of a given short option name.
- * If the option name can't be found 0 is returned.
- * @param[in] shortname short version of the option without leading hyphen (e.g. p, not -p) */
-const CmdLineParserBase::Option* CmdLineParserBase::option (char shortname) const {
- size_t numopts; // number of available options
- for (const Option *opts = options(&numopts); numopts > 0; ++opts) {
- if (opts->shortname == shortname)
- return opts;
- numopts--;
- }
- return 0;
-}
-
-
-/** Returns the option information of a given long option name.
- * Parameter 'longname' hasn't to be the complete long option name. The function looks up
- * all options that start with 'longname'. If a unique or an exact match was found, it's returned.
- * Otherwise, the return value is 0.
- * @param[in] longname long version of the option without leading hyphens (e.g. param, not --param) */
-const CmdLineParserBase::Option* CmdLineParserBase::option (const string &longname) const {
- vector<const Option*> matches; // all matching options
- size_t len = longname.length();
- size_t numopts; // number of available options
- for (const Option *opts = options(&numopts); numopts > 0; ++opts) {
- if (string(opts->longname, len) == longname) {
- if (len == strlen(opts->longname)) // exact match?
- return opts;
- matches.push_back(opts);
- }
- numopts--;
- }
- switch (matches.size()) {
- default:
- if (_printErrors) {
- Message::estream(false) << "option --" << longname << " is ambiguous (";
- for (size_t i=0; i < matches.size(); i++) {
- if (i > 0)
- Message::estream(false) << ", ";
- Message::estream(false) << matches[i]->longname;
- }
- Message::estream(false) << ")\n";
- }
- _error = true;
-
- case 0 : return 0;
- case 1 : return matches[0];
- }
-}
-
-
-/** Returns true if a valid separator between option and argument was found.
- * Arguments of long options are preceded by a '='. The argument of a short option
- * directly follows the option without a separation character.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given */
-bool CmdLineParserBase::checkArgPrefix (InputReader &ir, const Option &opt, bool longopt) const {
- if (longopt) {
- if (ir.peek() == '=')
- ir.get();
- else {
- error(opt, longopt, "'=' expected");
- return false;
- }
- }
- return true;
-}
-
-
-/** Returns true if a given option has no argument, .e.g. -p or --param.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given */
-bool CmdLineParserBase::checkNoArg (InputReader &ir, const Option &opt, bool longopt) const {
- if (ir.eof())
- return true;
- error(opt, longopt, "no argument expected");
- return false;
-}
-
-
-/** Gets an integer argument of a given option, e.g. -p5 or --param=5.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given
- * @param[out] arg the scanned option argument
- * @return true if argument could be scanned without errors */
-bool CmdLineParserBase::getIntArg (InputReader &ir, const Option &opt, bool longopt, int &arg) const {
- if (checkArgPrefix(ir, opt, longopt)) {
- if (ir.parseInt(arg) && ir.eof())
- return true;
- error(opt, longopt, "integer value expected");
- }
- return false;
-}
-
-
-/** Gets an unsigned integer argument of a given option, e.g. -p5 or --param=5.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given
- * @param[out] arg the scanned option argument
- * @return true if argument could be scanned without errors */
-bool CmdLineParserBase::getUIntArg (InputReader &ir, const Option &opt, bool longopt, unsigned &arg) const {
- if (checkArgPrefix(ir, opt, longopt)) {
- if (ir.parseUInt(arg) && ir.eof())
- return true;
- error(opt, longopt, "unsigned integer value expected");
- }
- return false;
-}
-
-
-/** Gets a double (floating point) argument of a given option, e.g. -p2.5 or --param=2.5.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given
- * @param[out] arg the scanned option argument
- * @return true if argument could be scanned without errors */
-bool CmdLineParserBase::getDoubleArg (InputReader &ir, const Option &opt, bool longopt, double &arg) const {
- if (checkArgPrefix(ir, opt, longopt)) {
- if (ir.parseDouble(arg) != 0 && ir.eof())
- return true;
- error(opt, longopt, "floating point value expected");
- }
- return false;
-}
-
-
-/** Gets a string argument of a given option, e.g. -pstr or --param=str.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given
- * @param[out] arg the scanned option argument
- * @return true if argument could be scanned without errors */
-bool CmdLineParserBase::getStringArg (InputReader &ir, const Option &opt, bool longopt, string &arg) const {
- if (checkArgPrefix(ir, opt, longopt)) {
- arg.clear();
- while (!ir.eof())
- arg += char(ir.get());
- if (!arg.empty())
- return true;
- error(opt, longopt, "string argument expected");
- }
- return false;
-}
-
-
-/** Gets a boolean argument of a given option, e.g. -pyes or --param=yes.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given
- * @param[out] arg the scanned option argument
- * @return true if argument could be scanned without errors */
-bool CmdLineParserBase::getBoolArg (InputReader &ir, const Option &opt, bool longopt, bool &arg) const {
- if (checkArgPrefix(ir, opt, longopt)) {
- string str;
- while (!ir.eof())
- str += char(ir.get());
- if (str == "yes" || str == "y" || str == "true" || str == "1") {
- arg = true;
- return true;
- }
- else if (str == "no" || str == "n" || str == "false" || str == "0") {
- arg = false;
- return true;
- }
- error(opt, longopt, "boolean argument expected (yes, no, true, false, 0, 1)");
- }
- return false;
-}
-
-
-/** Gets a (single) character argument of a given option, e.g. -pc or --param=c.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given
- * @param[out] arg the scanned option argument
- * @return true if argument could be scanned without errors */
-bool CmdLineParserBase::getCharArg (InputReader &ir, const Option &opt, bool longopt, char &arg) const {
- if (checkArgPrefix(ir, opt, longopt)) {
- arg = char(ir.get());
- if (arg >= 0 && ir.eof())
- return true;
- error(opt, longopt, "character argument expected");
- }
- return false;
-}
-
-
-/** Compares the short option characters of two help lines.
- * @return true if line1 should appear before line2 */
-static bool cmp_short (const char *line1, const char *line2) {
- if (*line1 != 'o' || *line2 != 'o' || (line1[1] == ' ' && line2[1] == ' '))
- return strcmp(line1, line2) < 0;
- char lopt1 = tolower(line1[2]);
- char lopt2 = tolower(line2[2]);
- if (lopt1 == lopt2) // same character but different case?
- return line1[2] > line2[2]; // line with lower-case letter first
- return lopt1 < lopt2;
-}
-
-
-/** Compares the long option names of two help lines.
- * @return true if line1 should appear before line2 */
-static bool cmp_long (const char *line1, const char *line2) {
- if (*line1 != 'o' || *line2 != 'o')
- return strcmp(line1, line2) < 0;
- return strcmp(line1+6, line2+6) < 0;
-}
-
-
-static void write_line (const char *str) {
- fputs(str, stdout);
-}
-
-
-/** Prints the help text to stdout.
- * @param[in] mode format of help text */
-void CmdLineParserBase::help (int mode, void (*out)(const char*)) const {
- size_t numlines;
- const char **lines = helplines(&numlines);
- if (out == 0)
- out = write_line;
- if (mode == 0) { // list options with section headers
- for (size_t i=0; i < numlines; i++) {
- switch (*lines[i]) {
- case 's': out("\n"); break; // section header
- case 'o': out(" "); break; // option info
- }
- out(lines[i]+1);
- out("\n");
- }
- }
- else {
- vector<const char*> linevec(lines, lines+numlines);
- sort(linevec.begin(), linevec.end(), mode == 1 ? cmp_short : cmp_long);
- for (vector<const char*>::iterator it=linevec.begin(); it != linevec.end(); ++it) {
- if (**it != 's') { // skip section headers
- out(*it+1);
- out("\n");
- if (**it == 'd')
- out("\nOptions:\n");
- }
- }
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CmdLineParserBase.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/CmdLineParserBase.h
deleted file mode 100644
index 0052f3423ac..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CmdLineParserBase.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*************************************************************************
-** CmdLineParserBase.h **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program 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 General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_CMDLINEPARSERBASE_H
-#define DVISVGM_CMDLINEPARSERBASE_H
-
-#include <string>
-#include <vector>
-
-class InputReader;
-
-class CmdLineParserBase
-{
- protected:
- struct Option;
-
- struct OptionHandler {
- virtual ~OptionHandler () {}
- virtual void operator () (CmdLineParserBase *obj, InputReader &ir, const Option &opt, bool longopt) const=0;
- };
-
- template <typename T>
- class OptionHandlerImpl : public OptionHandler {
- protected:
- typedef void (T::*LocalHandler)(InputReader &ir, const Option &opt, bool longopt);
-
- public:
- OptionHandlerImpl (LocalHandler handler) : _handler(handler) {}
-
- void operator () (CmdLineParserBase *obj, InputReader &ir, const Option &opt, bool longopt) const {
- if (T *tobj = dynamic_cast<T*>(obj))
- (tobj->*_handler)(ir, opt, longopt);
- }
-
- private:
- LocalHandler _handler;
- };
-
- enum ArgMode {ARG_NONE, ARG_OPTIONAL, ARG_REQUIRED};
-
- struct Option {
- ~Option () {delete handler;}
- char shortname;
- const char *longname;
- ArgMode argmode; // mode of option argument
- const OptionHandler *handler;
- };
-
- public:
- virtual void parse (int argc, char **argv, bool printErrors=true);
- virtual void help (int mode=0, void (*out)(const char*)=0) const;
- virtual int numFiles () const {return _files.size();}
- virtual const char* file (size_t n) {return n < _files.size() ? _files[n].c_str() : 0;}
-// virtual void status () const;
- virtual bool error () const {return _error;}
-
- protected:
- CmdLineParserBase () : _printErrors(true), _error(false) {}
- CmdLineParserBase (const CmdLineParserBase &cmd) : _printErrors(true), _error(false) {}
- virtual ~CmdLineParserBase () {}
- virtual void init ();
- virtual void error (const Option &opt, bool longopt, const char *msg) const;
- virtual const Option* options (size_t *numopts) const =0;
- virtual const char** helplines (size_t *numlines) const =0;
- bool checkArgPrefix (InputReader &ir, const Option &opt, bool longopt) const;
- bool checkNoArg (InputReader &ir, const Option &opt, bool longopt) const;
- bool getIntArg (InputReader &ir, const Option &opt, bool longopt, int &arg) const;
- bool getUIntArg (InputReader &ir, const Option &opt, bool longopt, unsigned &arg) const;
- bool getDoubleArg (InputReader &ir, const Option &opt, bool longopt, double &arg) const;
- bool getStringArg (InputReader &ir, const Option &opt, bool longopt, std::string &arg) const;
- bool getBoolArg (InputReader &ir, const Option &opt, bool longopt, bool &arg) const;
- bool getCharArg (InputReader &ir, const Option &opt, bool longopt, char &arg) const;
- const Option* option (char shortname) const;
- const Option* option (const std::string &longname) const;
-
- private:
- bool _printErrors; ///< if true, print error messages
- mutable bool _error; ///< error occured while parsing options
- std::vector<std::string> _files; ///< filename parameters
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Color.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Color.cpp
index e72968cbdd2..24989755be4 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Color.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Color.cpp
@@ -2,7 +2,7 @@
** Color.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,6 +20,7 @@
#define _USE_MATH_DEFINES
#include <config.h>
+#include <array>
#include <algorithm>
#include <cctype>
#include <cmath>
@@ -27,38 +28,33 @@
#include <cstring>
#include <iomanip>
#include <sstream>
-#include "Color.h"
+#include "Color.hpp"
+#include "utility.hpp"
using namespace std;
bool Color::SUPPRESS_COLOR_NAMES = true;
-const Color Color::BLACK(UInt32(0));
-const Color Color::WHITE(UInt8(255), UInt8(255), UInt8(255));
-const Color Color::TRANSPARENT(UInt32(0xff000000));
+const Color Color::BLACK(uint32_t(0));
+const Color Color::WHITE(uint8_t(255), uint8_t(255), uint8_t(255));
+const Color Color::TRANSPARENT(uint32_t(0xff000000));
-static inline UInt8 double_to_byte (double v) {
+static inline uint8_t double_to_byte (double v) {
v = max(0.0, min(1.0, v));
- return UInt8(floor(255*v+0.5));
-}
-
-
-static void tolower (string &str) {
- for (size_t i=0; i < str.length(); i++)
- str[i] = tolower(str[i]);
+ return uint8_t(floor(255*v+0.5));
}
Color::Color (const char *psname) {
if (!setPSName(psname, false))
- setGray(UInt8(0));
+ setGray(uint8_t(0));
}
Color::Color (const string &psname) {
if (!setPSName(psname, false))
- setGray(UInt8(0));
+ setGray(uint8_t(0));
}
@@ -74,17 +70,18 @@ void Color::setRGB (double r, double g, double b) {
bool Color::setPSName (string name, bool case_sensitive) {
if (name[0] == '#') {
char *p=0;
- _rgb = UInt32(strtol(name.c_str()+1, &p, 16));
+ _rgb = uint32_t(strtol(name.c_str()+1, &p, 16));
while (isspace(*p))
p++;
return (*p == 0 && _rgb <= 0xFFFFFF);
}
- // converted color constants from color.pro
- static const struct ColorConstant {
+
+ struct ColorConstant {
const char *name;
- const UInt32 rgb;
- }
- constants[] = {
+ const uint32_t rgb;
+ };
+ // converted color constants from color.pro
+ static const array<ColorConstant, 68> constants = {{
{"Apricot", 0xFFAD7A},
{"Aquamarine", 0x2DFFB2},
{"Bittersweet", 0xC10200},
@@ -153,31 +150,28 @@ bool Color::setPSName (string name, bool case_sensitive) {
{"Yellow", 0xFFFF00},
{"YellowGreen", 0x8EFF42},
{"YellowOrange", 0xFF9300},
- };
- if (!case_sensitive) {
- tolower(name);
- for (size_t i=0; i < sizeof(constants)/sizeof(ColorConstant); i++) {
- string cmpname = constants[i].name;
- tolower(cmpname);
- if (name == cmpname) {
- _rgb = constants[i].rgb;
- return true;
+ }};
+ if (case_sensitive) {
+ const ColorConstant cmppair = {name.c_str(), 0};
+ auto it = lower_bound(constants.begin(), constants.end(), cmppair,
+ [](const ColorConstant &c1, const ColorConstant &c2) {
+ return strcmp(c1.name, c2.name) < 0;
}
+ );
+ if (it != constants.end() && it->name == name) {
+ _rgb = it->rgb;
+ return true;
}
- return false;
}
-
- // binary search
- int first=0, last=sizeof(constants)/sizeof(ColorConstant)-1;
- while (first <= last) {
- int mid = first+(last-first)/2;
- int cmp = strcmp(constants[mid].name, name.c_str());
- if (cmp > 0)
- last = mid-1;
- else if (cmp < 0)
- first = mid+1;
- else {
- _rgb = constants[mid].rgb;
+ else {
+ util::tolower(name);
+ auto it = find_if(constants.begin(), constants.end(), [&](const ColorConstant &cc) {
+ string cmpname = cc.name;
+ util::tolower(cmpname);
+ return name == cmpname;
+ });
+ if (it != constants.end()) {
+ _rgb = it->rgb;
return true;
}
}
@@ -215,18 +209,18 @@ void Color::setCMYK (const std::valarray<double> &cmyk) {
void Color::set (ColorSpace colorSpace, VectorIterator<double> &it) {
switch (colorSpace) {
- case GRAY_SPACE: setGray(*it++); break;
- case RGB_SPACE : setRGB(*it, *(it+1), *(it+2)); it+=3; break;
- case LAB_SPACE : setLab(*it, *(it+1), *(it+2)); it+=3; break;
- case CMYK_SPACE: setCMYK(*it, *(it+1), *(it+2), *(it+3)); it+=4; break;
+ case ColorSpace::GRAY: setGray(*it++); break;
+ case ColorSpace::RGB : setRGB(*it, *(it+1), *(it+2)); it+=3; break;
+ case ColorSpace::LAB : setLab(*it, *(it+1), *(it+2)); it+=3; break;
+ case ColorSpace::CMYK: setCMYK(*it, *(it+1), *(it+2), *(it+3)); it+=4; break;
}
}
void Color::operator *= (double c) {
- UInt32 rgb=0;
+ uint32_t rgb=0;
for (int i=0; i < 3; i++) {
- rgb |= UInt32(floor((_rgb & 0xff)*c+0.5)) << (8*i);
+ rgb |= uint32_t(floor((_rgb & 0xff)*c+0.5)) << (8*i);
_rgb >>= 8;
}
_rgb = rgb;
@@ -250,10 +244,11 @@ string Color::rgbString () const {
* define a name for the current color. */
string Color::svgColorString (bool rgbonly) const {
if (!rgbonly) {
- static const struct ColorName {
- UInt32 rgb;
+ struct ColorName {
+ uint32_t rgb;
const char *name;
- } colornames[] = {
+ };
+ static const array<ColorName, 138> colornames = {{
{0x000000, "black"},
{0x000080, "navy"},
{0x00008b, "darkblue"},
@@ -392,18 +387,13 @@ string Color::svgColorString (bool rgbonly) const {
{0xffffe0, "lightyellow"},
{0xfffff0, "ivory"},
{0xffffff, "white"}
- };
- int left=0;
- int right=sizeof(colornames)/sizeof(ColorName)-1;
- while (left <= right) {
- int mid = left+(right-left)/2;
- if (colornames[mid].rgb == _rgb)
- return colornames[mid].name;
- if (colornames[mid].rgb > _rgb)
- right = mid-1;
- else
- left = mid+1;
- }
+ }};
+ ColorName cmppair = {_rgb, 0};
+ auto it = lower_bound(colornames.begin(), colornames.end(), cmppair, [](const ColorName &c1, const ColorName &c2) {
+ return c1.rgb < c2.rgb;
+ });
+ if (it != colornames.end() && it->rgb == _rgb)
+ return it->name;
}
return rgbString();
}
@@ -670,10 +660,10 @@ double Color::deltaE (const Color &c) const {
int Color::numComponents (ColorSpace colorSpace) {
switch (colorSpace) {
- case GRAY_SPACE: return 1;
- case LAB_SPACE:
- case RGB_SPACE: return 3;
- case CMYK_SPACE: return 4;
+ case ColorSpace::GRAY: return 1;
+ case ColorSpace::LAB:
+ case ColorSpace::RGB: return 3;
+ case ColorSpace::CMYK: return 4;
}
return 0;
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Color.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Color.hpp
index 40aa1f12be7..e587cc6a8dc 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Color.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Color.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Color.h **
+** Color.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,14 +18,13 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_COLOR_H
-#define DVISVGM_COLOR_H
+#ifndef COLOR_HPP
+#define COLOR_HPP
#include <string>
#include <valarray>
#include <vector>
-#include "types.h"
-#include "VectorIterator.h"
+#include "VectorIterator.hpp"
#ifdef TRANSPARENT
#undef TRANSPARENT
@@ -39,25 +38,24 @@ class Color
static const Color WHITE;
static const Color TRANSPARENT;
- enum ColorSpace {GRAY_SPACE, RGB_SPACE, CMYK_SPACE, LAB_SPACE};
+ enum class ColorSpace {GRAY, RGB, CMYK, LAB};
public:
Color () : _rgb(0) {}
- Color (UInt32 rgb) : _rgb(rgb) {}
- Color (UInt8 r, UInt8 g, UInt8 b) {setRGB(r,g,b);}
+ Color (uint32_t rgb) : _rgb(rgb) {}
+ Color (uint8_t r, uint8_t g, uint8_t b) {setRGB(r,g,b);}
Color (double r, double g, double b) {setRGB(r,g,b);}
Color (const std::valarray<double> &rgb) {setRGB(rgb);}
Color (const char *name);
Color (const std::string &name);
-// Color (ColorSpace colorSpace, std::vector<double>::const_iterator &it) {set(colorSpace, it);}
- operator UInt32 () const {return _rgb;}
- bool operator == (const Color &c) const {return _rgb == c._rgb;}
- bool operator != (const Color &c) const {return _rgb != c._rgb;}
- void setRGB (UInt8 r, UInt8 g, UInt8 b) {_rgb = (r << 16) | (g << 8) | b;}
+ operator uint32_t () const {return _rgb;}
+ bool operator == (const Color &c) const {return _rgb == c._rgb;}
+ bool operator != (const Color &c) const {return _rgb != c._rgb;}
+ void setRGB (uint8_t r, uint8_t g, uint8_t b) {_rgb = (r << 16) | (g << 8) | b;}
void setRGB (double r, double g, double b);
void setRGB (const std::valarray<double> &rgb) {setRGB(rgb[0], rgb[1], rgb[2]);}
bool setPSName (std::string name, bool case_sensitive=true);
- void setGray (UInt8 g) {setRGB(g,g,g);}
+ void setGray (uint8_t g) {setRGB(g,g,g);}
void setGray (double g) {setRGB(g,g,g);}
void setGray (const std::valarray<double> &gray) {setRGB(gray[0], gray[0], gray[0]);}
void setHSB (double h, double s, double b);
@@ -92,7 +90,7 @@ class Color
static int numComponents (ColorSpace colorSpace);
private:
- UInt32 _rgb;
+ uint32_t _rgb;
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.cpp
index 07426645cbe..1bc7067c23a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.cpp
@@ -2,7 +2,7 @@
** ColorSpecialHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -22,8 +22,8 @@
#include <cstring>
#include <sstream>
#include <vector>
-#include "ColorSpecialHandler.h"
-#include "SpecialActions.h"
+#include "ColorSpecialHandler.hpp"
+#include "SpecialActions.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.hpp
index bec15f6c53a..079618f73ca 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** ColorSpecialHandler.h **
+** ColorSpecialHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,25 +18,25 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_COLORSPECIALHANDLER_H
-#define DVISVGM_COLORSPECIALHANDLER_H
+#ifndef COLORSPECIALHANDLER_HPP
+#define COLORSPECIALHANDLER_HPP
#include <stack>
#include <string>
#include <vector>
-#include "Color.h"
-#include "SpecialHandler.h"
+#include "Color.hpp"
+#include "SpecialHandler.hpp"
class ColorSpecialHandler : public SpecialHandler
{
public:
- bool process (const char *prefix, std::istream &is, SpecialActions &actions);
+ bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
static Color readColor (std::istream &is);
static Color readColor (const std::string &model, std::istream &is);
- const char* name () const {return "color";}
- const char* info () const {return "complete support of color specials";}
- const char** prefixes () const;
+ const char* name () const override {return "color";}
+ const char* info () const override {return "complete support of color specials";}
+ const char** prefixes () const override;
private:
std::stack<Color> _colorStack;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.cpp
deleted file mode 100644
index 5618d1fa3cf..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.cpp
+++ /dev/null
@@ -1,410 +0,0 @@
-// This file was automatically generated by opt2cpp.
-// It is part of the dvisvgm package and published under the terms
-// of the GNU General Public License version 3, or (at your option) any later version.
-// See file COPYING for further details.
-// (C) 2009-2016 Martin Gieseking <martin.gieseking@uos.de>
-
-#include <config.h>
-#include <cstdio>
-#include "InputReader.h"
-#include "CommandLine.h"
-
-using namespace std;
-
-const CmdLineParserBase::Option CommandLine::_options[] = {
- {'b', "bbox", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_bbox)},
- {'C', "cache", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_cache)},
-#if !defined(DISABLE_GS)
- {'j', "clipjoin", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_clipjoin)},
-#endif
- {'\0', "color", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_color)},
- {'\0', "colornames", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_colornames)},
- {'\0', "comments", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_comments)},
-#if !defined(DISABLE_GS)
- {'E', "eps", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_eps)},
-#endif
- {'e', "exact", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_exact)},
- {'m', "fontmap", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_fontmap)},
-#if !defined(DISABLE_GS)
- {'\0', "grad-overlap", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_grad_overlap)},
-#endif
-#if !defined(DISABLE_GS)
- {'\0', "grad-segments", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_grad_segments)},
-#endif
-#if !defined(DISABLE_GS)
- {'\0', "grad-simplify", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_grad_simplify)},
-#endif
- {'h', "help", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_help)},
- {'\0', "keep", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_keep)},
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- {'\0', "libgs", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_libgs)},
-#endif
- {'L', "linkmark", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_linkmark)},
- {'l', "list-specials", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_list_specials)},
- {'M', "mag", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_mag)},
- {'n', "no-fonts", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_no_fonts)},
- {'\0', "no-merge", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_no_merge)},
- {'\0', "no-mktexmf", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_no_mktexmf)},
- {'S', "no-specials", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_no_specials)},
- {'\0', "no-styles", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_no_styles)},
- {'o', "output", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_output)},
- {'p', "page", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_page)},
- {'d', "precision", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_precision)},
- {'P', "progress", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_progress)},
- {'R', "relative", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_relative)},
- {'r', "rotate", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_rotate)},
- {'c', "scale", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_scale)},
- {'s', "stdout", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_stdout)},
- {'a', "trace-all", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_trace_all)},
- {'T', "transform", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_transform)},
- {'t', "translate", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_translate)},
- {'v', "verbosity", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_verbosity)},
- {'V', "version", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_version)},
- {'z', "zip", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_zip)},
- {'Z', "zoom", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_zoom)},
-};
-
-const CmdLineParserBase::Option* CommandLine::options (size_t *numopts) const {
- *numopts = sizeof(_options)/sizeof(CmdLineParserBase::Option);
- return _options;
-}
-
-void CommandLine::init () {
- CmdLineParserBase::init();
-
- // disable all options by default
- _bbox_given = false;
- _cache_given = false;
-#if !defined(DISABLE_GS)
- _clipjoin_given = false;
-#endif
- _color_given = false;
- _colornames_given = false;
- _comments_given = false;
-#if !defined(DISABLE_GS)
- _eps_given = false;
-#endif
- _exact_given = false;
- _fontmap_given = false;
-#if !defined(DISABLE_GS)
- _grad_overlap_given = false;
-#endif
-#if !defined(DISABLE_GS)
- _grad_segments_given = false;
-#endif
-#if !defined(DISABLE_GS)
- _grad_simplify_given = false;
-#endif
- _help_given = false;
- _keep_given = false;
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- _libgs_given = false;
-#endif
- _linkmark_given = false;
- _list_specials_given = false;
- _mag_given = false;
- _no_fonts_given = false;
- _no_merge_given = false;
- _no_mktexmf_given = false;
- _no_specials_given = false;
- _no_styles_given = false;
- _output_given = false;
- _page_given = false;
- _precision_given = false;
- _progress_given = false;
- _relative_given = false;
- _rotate_given = false;
- _scale_given = false;
- _stdout_given = false;
- _trace_all_given = false;
- _transform_given = false;
- _translate_given = false;
- _verbosity_given = false;
- _version_given = false;
- _zip_given = false;
- _zoom_given = false;
-
- // set default option values
- _bbox_arg = "min";
- _cache_arg.clear();
- _fontmap_arg.clear();
-#if !defined(DISABLE_GS)
- _grad_segments_arg = 20;
-#endif
-#if !defined(DISABLE_GS)
- _grad_simplify_arg = 0.05;
-#endif
- _help_arg = 0;
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- _libgs_arg.clear();
-#endif
- _linkmark_arg = "box";
- _mag_arg = 4;
- _no_fonts_arg = 0;
- _no_specials_arg.clear();
- _output_arg.clear();
- _page_arg = "1";
- _precision_arg = 0;
- _progress_arg = 0.5;
- _rotate_arg = 0;
- _scale_arg.clear();
- _trace_all_arg = false;
- _transform_arg.clear();
- _translate_arg.clear();
- _verbosity_arg = 7;
- _version_arg = false;
- _zip_arg = 9;
- _zoom_arg = 1.0;
-}
-
-const char** CommandLine::helplines (size_t *numlines) const {
- static const char *lines[] = {
- "dThis program converts DVI files, as created by TeX/LaTeX, to\nthe XML-based scalable vector graphics format SVG.\n\nUsage: dvisvgm [options] dvifile\n dvisvgm -E [options] epsfile",
- "sInput options:",
- "o-p, --page=ranges choose pages to convert [1]",
- "o-m, --fontmap=filenames evaluate (additional) font map files",
-#if !defined(DISABLE_GS)
- "o-E, --eps convert an EPS file to SVG",
-#endif
- "sSVG output options:",
- "o-b, --bbox=size set size of bounding box [min]",
-#if !defined(DISABLE_GS)
- "o-j, --clipjoin compute intersection of clipping paths",
-#endif
- "o --colornames prefer color names to RGB values if possible",
- "o --comments add comments with additional information",
-#if !defined(DISABLE_GS)
- "o --grad-overlap create operlapping color gradient segments",
-#endif
-#if !defined(DISABLE_GS)
- "o --grad-segments=number number of color gradient segments per row [20]",
-#endif
-#if !defined(DISABLE_GS)
- "o --grad-simplify=delta reduce level of detail for small segments [0.05]",
-#endif
- "o-L, --linkmark=style select how to mark hyperlinked areas [box]",
- "o-o, --output=pattern set name pattern of output files",
- "o-d, --precision=number set number of decimal points (0-6) [0]",
- "o-R, --relative create relative path commands",
- "o-s, --stdout write SVG output to stdout",
- "o-n, --no-fonts[=variant] draw glyphs by using path elements [0]",
- "o --no-merge don't merge adjacent text elements",
- "o --no-styles don't use styles to reference fonts",
- "o-z, --zip[=level] create compressed .svgz file [9]",
- "sSVG transformations:",
- "o-r, --rotate=angle rotate page content clockwise",
- "o-c, --scale=sx[,sy] scale page content",
- "o-t, --translate=tx[,ty] shift page content",
- "o-T, --transform=commands transform page content",
- "o-Z, --zoom=factor zoom page content [1.0]",
- "sProcessing options:",
- "o-C, --cache[=dir] set/print path of cache directory",
- "o-e, --exact compute exact glyph boxes",
- "o --keep keep temporary files",
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- "o --libgs=filename set name of Ghostscript shared library",
-#endif
- "o-M, --mag=factor magnification of Metafont output [4]",
- "o --no-mktexmf don't try to create missing fonts",
- "o-S, --no-specials[=prefixes] don't process [selected] specials",
- "o-a, --trace-all[=retrace] trace all glyphs of bitmap fonts [no]",
- "sMessage options:",
- "o --color colorize messages",
- "o-h, --help[=mode] print this summary of options and exit [0]",
- "o-l, --list-specials print supported special sets and exit",
- "o-P, --progress[=delay] enable progess indicator [0.5]",
- "o-v, --verbosity=level set verbosity level (0-7) [7]",
- "o-V, --version[=extended] print version and exit [no]",
- };
- *numlines = sizeof(lines)/sizeof(char*);
- return lines;
-}
-
-void CommandLine::handle_bbox (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _bbox_arg))
- _bbox_given = true;
-}
-
-void CommandLine::handle_cache (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getStringArg(ir, opt, longopt, _cache_arg))
- _cache_given = true;
-}
-
-#if !defined(DISABLE_GS)
-void CommandLine::handle_clipjoin (InputReader &ir, const Option &opt, bool longopt) {
- _clipjoin_given = true;
-}
-#endif
-
-void CommandLine::handle_color (InputReader &ir, const Option &opt, bool longopt) {
- _color_given = true;
-}
-
-void CommandLine::handle_colornames (InputReader &ir, const Option &opt, bool longopt) {
- _colornames_given = true;
-}
-
-void CommandLine::handle_comments (InputReader &ir, const Option &opt, bool longopt) {
- _comments_given = true;
-}
-
-#if !defined(DISABLE_GS)
-void CommandLine::handle_eps (InputReader &ir, const Option &opt, bool longopt) {
- _eps_given = true;
-}
-#endif
-
-void CommandLine::handle_exact (InputReader &ir, const Option &opt, bool longopt) {
- _exact_given = true;
-}
-
-void CommandLine::handle_fontmap (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _fontmap_arg))
- _fontmap_given = true;
-}
-
-#if !defined(DISABLE_GS)
-void CommandLine::handle_grad_overlap (InputReader &ir, const Option &opt, bool longopt) {
- _grad_overlap_given = true;
-}
-#endif
-
-#if !defined(DISABLE_GS)
-void CommandLine::handle_grad_segments (InputReader &ir, const Option &opt, bool longopt) {
- if (getIntArg(ir, opt, longopt, _grad_segments_arg))
- _grad_segments_given = true;
-}
-#endif
-
-#if !defined(DISABLE_GS)
-void CommandLine::handle_grad_simplify (InputReader &ir, const Option &opt, bool longopt) {
- if (getDoubleArg(ir, opt, longopt, _grad_simplify_arg))
- _grad_simplify_given = true;
-}
-#endif
-
-void CommandLine::handle_help (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getIntArg(ir, opt, longopt, _help_arg))
- _help_given = true;
-}
-
-void CommandLine::handle_keep (InputReader &ir, const Option &opt, bool longopt) {
- _keep_given = true;
-}
-
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
-void CommandLine::handle_libgs (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _libgs_arg))
- _libgs_given = true;
-}
-#endif
-
-void CommandLine::handle_linkmark (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _linkmark_arg))
- _linkmark_given = true;
-}
-
-void CommandLine::handle_list_specials (InputReader &ir, const Option &opt, bool longopt) {
- _list_specials_given = true;
-}
-
-void CommandLine::handle_mag (InputReader &ir, const Option &opt, bool longopt) {
- if (getDoubleArg(ir, opt, longopt, _mag_arg))
- _mag_given = true;
-}
-
-void CommandLine::handle_no_fonts (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getIntArg(ir, opt, longopt, _no_fonts_arg))
- _no_fonts_given = true;
-}
-
-void CommandLine::handle_no_merge (InputReader &ir, const Option &opt, bool longopt) {
- _no_merge_given = true;
-}
-
-void CommandLine::handle_no_mktexmf (InputReader &ir, const Option &opt, bool longopt) {
- _no_mktexmf_given = true;
-}
-
-void CommandLine::handle_no_specials (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getStringArg(ir, opt, longopt, _no_specials_arg))
- _no_specials_given = true;
-}
-
-void CommandLine::handle_no_styles (InputReader &ir, const Option &opt, bool longopt) {
- _no_styles_given = true;
-}
-
-void CommandLine::handle_output (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _output_arg))
- _output_given = true;
-}
-
-void CommandLine::handle_page (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _page_arg))
- _page_given = true;
-}
-
-void CommandLine::handle_precision (InputReader &ir, const Option &opt, bool longopt) {
- if (getIntArg(ir, opt, longopt, _precision_arg))
- _precision_given = true;
-}
-
-void CommandLine::handle_progress (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getDoubleArg(ir, opt, longopt, _progress_arg))
- _progress_given = true;
-}
-
-void CommandLine::handle_relative (InputReader &ir, const Option &opt, bool longopt) {
- _relative_given = true;
-}
-
-void CommandLine::handle_rotate (InputReader &ir, const Option &opt, bool longopt) {
- if (getDoubleArg(ir, opt, longopt, _rotate_arg))
- _rotate_given = true;
-}
-
-void CommandLine::handle_scale (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _scale_arg))
- _scale_given = true;
-}
-
-void CommandLine::handle_stdout (InputReader &ir, const Option &opt, bool longopt) {
- _stdout_given = true;
-}
-
-void CommandLine::handle_trace_all (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getBoolArg(ir, opt, longopt, _trace_all_arg))
- _trace_all_given = true;
-}
-
-void CommandLine::handle_transform (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _transform_arg))
- _transform_given = true;
-}
-
-void CommandLine::handle_translate (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _translate_arg))
- _translate_given = true;
-}
-
-void CommandLine::handle_verbosity (InputReader &ir, const Option &opt, bool longopt) {
- if (getUIntArg(ir, opt, longopt, _verbosity_arg))
- _verbosity_given = true;
-}
-
-void CommandLine::handle_version (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getBoolArg(ir, opt, longopt, _version_arg))
- _version_given = true;
-}
-
-void CommandLine::handle_zip (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getIntArg(ir, opt, longopt, _zip_arg))
- _zip_given = true;
-}
-
-void CommandLine::handle_zoom (InputReader &ir, const Option &opt, bool longopt) {
- if (getDoubleArg(ir, opt, longopt, _zoom_arg))
- _zoom_given = true;
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.h
deleted file mode 100644
index 68ea640a942..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.h
+++ /dev/null
@@ -1,225 +0,0 @@
-// This file was automatically generated by opt2cpp.
-// It is part of the dvisvgm package and published under the terms
-// of the GNU General Public License version 3, or (at your option) any later version.
-// See file COPYING for further details.
-// (C) 2009-2016 Martin Gieseking <martin.gieseking@uos.de>
-
-#ifndef COMMANDLINE_H
-#define COMMANDLINE_H
-
-#include <config.h>
-#include "CmdLineParserBase.h"
-
-class CommandLine : public CmdLineParserBase
-{
- public:
- CommandLine () {init();}
- CommandLine (int argc, char **argv, bool printErrors) {parse(argc, argv, printErrors);}
- bool bbox_given () const {return _bbox_given;}
- const std::string& bbox_arg () const {return _bbox_arg;}
- bool cache_given () const {return _cache_given;}
- const std::string& cache_arg () const {return _cache_arg;}
-#if !defined(DISABLE_GS)
- bool clipjoin_given () const {return _clipjoin_given;}
-#endif
- bool color_given () const {return _color_given;}
- bool colornames_given () const {return _colornames_given;}
- bool comments_given () const {return _comments_given;}
-#if !defined(DISABLE_GS)
- bool eps_given () const {return _eps_given;}
-#endif
- bool exact_given () const {return _exact_given;}
- bool fontmap_given () const {return _fontmap_given;}
- const std::string& fontmap_arg () const {return _fontmap_arg;}
-#if !defined(DISABLE_GS)
- bool grad_overlap_given () const {return _grad_overlap_given;}
-#endif
-#if !defined(DISABLE_GS)
- bool grad_segments_given () const {return _grad_segments_given;}
- int grad_segments_arg () const {return _grad_segments_arg;}
-#endif
-#if !defined(DISABLE_GS)
- bool grad_simplify_given () const {return _grad_simplify_given;}
- double grad_simplify_arg () const {return _grad_simplify_arg;}
-#endif
- bool help_given () const {return _help_given;}
- int help_arg () const {return _help_arg;}
- bool keep_given () const {return _keep_given;}
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- bool libgs_given () const {return _libgs_given;}
- const std::string& libgs_arg () const {return _libgs_arg;}
-#endif
- bool linkmark_given () const {return _linkmark_given;}
- const std::string& linkmark_arg () const {return _linkmark_arg;}
- bool list_specials_given () const {return _list_specials_given;}
- bool mag_given () const {return _mag_given;}
- double mag_arg () const {return _mag_arg;}
- bool no_fonts_given () const {return _no_fonts_given;}
- int no_fonts_arg () const {return _no_fonts_arg;}
- bool no_merge_given () const {return _no_merge_given;}
- bool no_mktexmf_given () const {return _no_mktexmf_given;}
- bool no_specials_given () const {return _no_specials_given;}
- const std::string& no_specials_arg () const {return _no_specials_arg;}
- bool no_styles_given () const {return _no_styles_given;}
- bool output_given () const {return _output_given;}
- const std::string& output_arg () const {return _output_arg;}
- bool page_given () const {return _page_given;}
- const std::string& page_arg () const {return _page_arg;}
- bool precision_given () const {return _precision_given;}
- int precision_arg () const {return _precision_arg;}
- bool progress_given () const {return _progress_given;}
- double progress_arg () const {return _progress_arg;}
- bool relative_given () const {return _relative_given;}
- bool rotate_given () const {return _rotate_given;}
- double rotate_arg () const {return _rotate_arg;}
- bool scale_given () const {return _scale_given;}
- const std::string& scale_arg () const {return _scale_arg;}
- bool stdout_given () const {return _stdout_given;}
- bool trace_all_given () const {return _trace_all_given;}
- bool trace_all_arg () const {return _trace_all_arg;}
- bool transform_given () const {return _transform_given;}
- const std::string& transform_arg () const {return _transform_arg;}
- bool translate_given () const {return _translate_given;}
- const std::string& translate_arg () const {return _translate_arg;}
- bool verbosity_given () const {return _verbosity_given;}
- unsigned verbosity_arg () const {return _verbosity_arg;}
- bool version_given () const {return _version_given;}
- bool version_arg () const {return _version_arg;}
- bool zip_given () const {return _zip_given;}
- int zip_arg () const {return _zip_arg;}
- bool zoom_given () const {return _zoom_given;}
- double zoom_arg () const {return _zoom_arg;}
- protected:
- void init ();
- const CmdLineParserBase::Option* options (size_t *numopts) const;
- const char** helplines (size_t *numlines) const;
- void handle_bbox (InputReader &ir, const Option &opt, bool longopt);
- void handle_cache (InputReader &ir, const Option &opt, bool longopt);
-#if !defined(DISABLE_GS)
- void handle_clipjoin (InputReader &ir, const Option &opt, bool longopt);
-#endif
- void handle_color (InputReader &ir, const Option &opt, bool longopt);
- void handle_colornames (InputReader &ir, const Option &opt, bool longopt);
- void handle_comments (InputReader &ir, const Option &opt, bool longopt);
-#if !defined(DISABLE_GS)
- void handle_eps (InputReader &ir, const Option &opt, bool longopt);
-#endif
- void handle_exact (InputReader &ir, const Option &opt, bool longopt);
- void handle_fontmap (InputReader &ir, const Option &opt, bool longopt);
-#if !defined(DISABLE_GS)
- void handle_grad_overlap (InputReader &ir, const Option &opt, bool longopt);
-#endif
-#if !defined(DISABLE_GS)
- void handle_grad_segments (InputReader &ir, const Option &opt, bool longopt);
-#endif
-#if !defined(DISABLE_GS)
- void handle_grad_simplify (InputReader &ir, const Option &opt, bool longopt);
-#endif
- void handle_help (InputReader &ir, const Option &opt, bool longopt);
- void handle_keep (InputReader &ir, const Option &opt, bool longopt);
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- void handle_libgs (InputReader &ir, const Option &opt, bool longopt);
-#endif
- void handle_linkmark (InputReader &ir, const Option &opt, bool longopt);
- void handle_list_specials (InputReader &ir, const Option &opt, bool longopt);
- void handle_mag (InputReader &ir, const Option &opt, bool longopt);
- void handle_no_fonts (InputReader &ir, const Option &opt, bool longopt);
- void handle_no_merge (InputReader &ir, const Option &opt, bool longopt);
- void handle_no_mktexmf (InputReader &ir, const Option &opt, bool longopt);
- void handle_no_specials (InputReader &ir, const Option &opt, bool longopt);
- void handle_no_styles (InputReader &ir, const Option &opt, bool longopt);
- void handle_output (InputReader &ir, const Option &opt, bool longopt);
- void handle_page (InputReader &ir, const Option &opt, bool longopt);
- void handle_precision (InputReader &ir, const Option &opt, bool longopt);
- void handle_progress (InputReader &ir, const Option &opt, bool longopt);
- void handle_relative (InputReader &ir, const Option &opt, bool longopt);
- void handle_rotate (InputReader &ir, const Option &opt, bool longopt);
- void handle_scale (InputReader &ir, const Option &opt, bool longopt);
- void handle_stdout (InputReader &ir, const Option &opt, bool longopt);
- void handle_trace_all (InputReader &ir, const Option &opt, bool longopt);
- void handle_transform (InputReader &ir, const Option &opt, bool longopt);
- void handle_translate (InputReader &ir, const Option &opt, bool longopt);
- void handle_verbosity (InputReader &ir, const Option &opt, bool longopt);
- void handle_version (InputReader &ir, const Option &opt, bool longopt);
- void handle_zip (InputReader &ir, const Option &opt, bool longopt);
- void handle_zoom (InputReader &ir, const Option &opt, bool longopt);
-
- private:
- static const CmdLineParserBase::Option _options[];
- bool _bbox_given;
- std::string _bbox_arg;
- bool _cache_given;
- std::string _cache_arg;
-#if !defined(DISABLE_GS)
- bool _clipjoin_given;
-#endif
- bool _color_given;
- bool _colornames_given;
- bool _comments_given;
-#if !defined(DISABLE_GS)
- bool _eps_given;
-#endif
- bool _exact_given;
- bool _fontmap_given;
- std::string _fontmap_arg;
-#if !defined(DISABLE_GS)
- bool _grad_overlap_given;
-#endif
-#if !defined(DISABLE_GS)
- bool _grad_segments_given;
- int _grad_segments_arg;
-#endif
-#if !defined(DISABLE_GS)
- bool _grad_simplify_given;
- double _grad_simplify_arg;
-#endif
- bool _help_given;
- int _help_arg;
- bool _keep_given;
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- bool _libgs_given;
- std::string _libgs_arg;
-#endif
- bool _linkmark_given;
- std::string _linkmark_arg;
- bool _list_specials_given;
- bool _mag_given;
- double _mag_arg;
- bool _no_fonts_given;
- int _no_fonts_arg;
- bool _no_merge_given;
- bool _no_mktexmf_given;
- bool _no_specials_given;
- std::string _no_specials_arg;
- bool _no_styles_given;
- bool _output_given;
- std::string _output_arg;
- bool _page_given;
- std::string _page_arg;
- bool _precision_given;
- int _precision_arg;
- bool _progress_given;
- double _progress_arg;
- bool _relative_given;
- bool _rotate_given;
- double _rotate_arg;
- bool _scale_given;
- std::string _scale_arg;
- bool _stdout_given;
- bool _trace_all_given;
- bool _trace_all_arg;
- bool _transform_given;
- std::string _transform_arg;
- bool _translate_given;
- std::string _translate_arg;
- bool _verbosity_given;
- unsigned _verbosity_arg;
- bool _version_given;
- bool _version_arg;
- bool _zip_given;
- int _zip_arg;
- bool _zoom_given;
- double _zoom_arg;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.hpp
new file mode 100644
index 00000000000..f412aa2927d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.hpp
@@ -0,0 +1,145 @@
+// This file was automatically generated by opt2cpp.
+// It is part of the dvisvgm package and published under the terms
+// of the GNU General Public License version 3, or (at your option) any later version.
+// See file COPYING for further details.
+// Copyright (C) 2016-2017 Martin Gieseking <martin.gieseking@uos.de>
+
+#ifndef COMMANDLINE_HPP
+#define COMMANDLINE_HPP
+
+#include <config.h>
+#include <array>
+#include <vector>
+#include "CLCommandLine.hpp"
+
+using CL::Option;
+using CL::TypedOption;
+
+class CommandLine : public CL::CommandLine
+{
+ public:
+ CommandLine () : CL::CommandLine(
+ "This program converts DVI files, as created by TeX/LaTeX, to\nthe XML-based scalable vector graphics format SVG.",
+ "[options] dvifile\n-E [options] epsfile",
+ "Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de>"
+ ) {}
+
+ CommandLine (int argc, char **argv) : CommandLine() {
+ parse(argc, argv);
+ }
+
+ // option variables
+ TypedOption<std::string, Option::ArgMode::REQUIRED> bboxOpt {"bbox", 'b', "size", "min", "set size of bounding box"};
+ TypedOption<std::string, Option::ArgMode::OPTIONAL> cacheOpt {"cache", 'C', "dir", "set/print path of cache directory"};
+ Option clipjoinOpt {"clipjoin", 'j', "compute intersection of clipping paths"};
+ Option colorOpt {"color", '\0', "colorize messages"};
+ Option colornamesOpt {"colornames", '\0', "prefer color names to RGB values if possible"};
+ Option commentsOpt {"comments", '\0', "add comments with additional information"};
+ Option epsOpt {"eps", 'E', "convert an EPS file to SVG"};
+ Option exactOpt {"exact", 'e', "compute exact glyph boxes"};
+ TypedOption<std::string, Option::ArgMode::REQUIRED> fontFormatOpt {"font-format", 'f', "format", "svg", "select file format of embedded fonts"};
+ TypedOption<std::string, Option::ArgMode::REQUIRED> fontmapOpt {"fontmap", 'm', "filenames", "evaluate (additional) font map files"};
+ Option gradOverlapOpt {"grad-overlap", '\0', "create overlapping color gradient segments"};
+ TypedOption<int, Option::ArgMode::REQUIRED> gradSegmentsOpt {"grad-segments", '\0', "number", 20, "number of color gradient segments per row"};
+ TypedOption<double, Option::ArgMode::REQUIRED> gradSimplifyOpt {"grad-simplify", '\0', "delta", 0.05, "reduce level of detail for small segments"};
+ TypedOption<int, Option::ArgMode::OPTIONAL> helpOpt {"help", 'h', "mode", 0, "print this summary of options and exit"};
+ Option keepOpt {"keep", '\0', "keep temporary files"};
+ TypedOption<std::string, Option::ArgMode::REQUIRED> libgsOpt {"libgs", '\0', "filename", "set name of Ghostscript shared library"};
+ TypedOption<std::string, Option::ArgMode::REQUIRED> linkmarkOpt {"linkmark", 'L', "style", "box", "select how to mark hyperlinked areas"};
+ Option listSpecialsOpt {"list-specials", 'l', "print supported special sets and exit"};
+ TypedOption<double, Option::ArgMode::REQUIRED> magOpt {"mag", 'M', "factor", 4, "magnification of Metafont output"};
+ TypedOption<int, Option::ArgMode::OPTIONAL> noFontsOpt {"no-fonts", 'n', "variant", 0, "draw glyphs by using path elements"};
+ Option noMergeOpt {"no-merge", '\0', "don't merge adjacent text elements"};
+ Option noMktexmfOpt {"no-mktexmf", '\0', "don't try to create missing fonts"};
+ TypedOption<std::string, Option::ArgMode::OPTIONAL> noSpecialsOpt {"no-specials", 'S', "prefixes", "don't process [selected] specials"};
+ Option noStylesOpt {"no-styles", '\0', "don't use CSS styles to reference fonts"};
+ TypedOption<std::string, Option::ArgMode::REQUIRED> outputOpt {"output", 'o', "pattern", "set name pattern of output files"};
+ TypedOption<std::string, Option::ArgMode::REQUIRED> pageOpt {"page", 'p', "ranges", "1", "choose page(s) to convert"};
+ TypedOption<int, Option::ArgMode::REQUIRED> precisionOpt {"precision", 'd', "number", 0, "set number of decimal points (0-6)"};
+ TypedOption<double, Option::ArgMode::OPTIONAL> progressOpt {"progress", 'P', "delay", 0.5, "enable progress indicator"};
+ Option relativeOpt {"relative", 'R', "create relative path commands"};
+ TypedOption<double, Option::ArgMode::REQUIRED> rotateOpt {"rotate", 'r', "angle", "rotate page content clockwise"};
+ TypedOption<std::string, Option::ArgMode::REQUIRED> scaleOpt {"scale", 'c', "sx[,sy]", "scale page content"};
+ Option stdoutOpt {"stdout", 's', "write SVG output to stdout"};
+ TypedOption<std::string, Option::ArgMode::OPTIONAL> tmpdirOpt {"tmpdir", '\0', "path", "set/print the directory for temporary files"};
+ TypedOption<bool, Option::ArgMode::OPTIONAL> traceAllOpt {"trace-all", 'a', "retrace", false, "trace all glyphs of bitmap fonts"};
+ TypedOption<std::string, Option::ArgMode::REQUIRED> transformOpt {"transform", 'T', "commands", "transform page content"};
+ TypedOption<std::string, Option::ArgMode::REQUIRED> translateOpt {"translate", 't', "tx[,ty]", "shift page content"};
+ TypedOption<unsigned, Option::ArgMode::REQUIRED> verbosityOpt {"verbosity", 'v', "level", 7, "set verbosity level (0-7)"};
+ TypedOption<bool, Option::ArgMode::OPTIONAL> versionOpt {"version", 'V', "extended", false, "print version and exit"};
+ TypedOption<int, Option::ArgMode::OPTIONAL> zipOpt {"zip", 'z', "level", 9, "create compressed .svgz file"};
+ TypedOption<double, Option::ArgMode::REQUIRED> zoomOpt {"zoom", 'Z', "factor", 1.0, "zoom page content"};
+
+ protected:
+ std::vector<OptSectPair>& options () const override {return _options;}
+ const char* section (size_t n) const override {return n < _sections.size() ? _sections[n] : nullptr;}
+
+ private:
+ std::array<const char*, 5> _sections = {{
+ "Input options",
+ "SVG output options",
+ "SVG transformations",
+ "Processing options",
+ "Message options",
+ }};
+
+ mutable std::vector<OptSectPair> _options = {
+ {&pageOpt, 0},
+ {&fontmapOpt, 0},
+#if !defined(DISABLE_GS)
+ {&epsOpt, 0},
+#endif
+ {&bboxOpt, 1},
+#if !defined(DISABLE_GS)
+ {&clipjoinOpt, 1},
+#endif
+ {&colornamesOpt, 1},
+ {&commentsOpt, 1},
+#if !defined(DISABLE_WOFF)
+ {&fontFormatOpt, 1},
+#endif
+#if !defined(DISABLE_GS)
+ {&gradOverlapOpt, 1},
+#endif
+#if !defined(DISABLE_GS)
+ {&gradSegmentsOpt, 1},
+#endif
+#if !defined(DISABLE_GS)
+ {&gradSimplifyOpt, 1},
+#endif
+ {&linkmarkOpt, 1},
+ {&outputOpt, 1},
+ {&precisionOpt, 1},
+ {&relativeOpt, 1},
+ {&stdoutOpt, 1},
+ {&tmpdirOpt, 1},
+ {&noFontsOpt, 1},
+ {&noMergeOpt, 1},
+ {&noStylesOpt, 1},
+ {&zipOpt, 1},
+ {&rotateOpt, 2},
+ {&scaleOpt, 2},
+ {&translateOpt, 2},
+ {&transformOpt, 2},
+ {&zoomOpt, 2},
+ {&cacheOpt, 3},
+ {&exactOpt, 3},
+ {&keepOpt, 3},
+#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
+ {&libgsOpt, 3},
+#endif
+ {&magOpt, 3},
+ {&noMktexmfOpt, 3},
+ {&noSpecialsOpt, 3},
+ {&traceAllOpt, 3},
+ {&colorOpt, 4},
+ {&helpOpt, 4},
+ {&listSpecialsOpt, 4},
+ {&progressOpt, 4},
+ {&verbosityOpt, 4},
+ {&versionOpt, 4},
+ };
+};
+
+#endif
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DLLoader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/DLLoader.cpp
index e679e7469da..b0bd0bd1f49 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DLLoader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DLLoader.cpp
@@ -2,7 +2,7 @@
** DLLoader.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,7 +19,7 @@
*************************************************************************/
#include <config.h>
-#include "DLLoader.h"
+#include "DLLoader.hpp"
DLLoader::DLLoader (const char *dlname) : _handle(0)
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DLLoader.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/DLLoader.hpp
index 5a5b27271d9..6cedd193abc 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DLLoader.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DLLoader.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** DLLoader.h **
+** DLLoader.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_DLLOADER_H
-#define DVISVGM_DLLOADER_H
+#ifndef DLLOADER_HPP
+#define DLLOADER_HPP
#ifdef _WIN32
#include <windows.h>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIActions.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIActions.hpp
index 5e3254656bf..fa3228d1473 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIActions.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIActions.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** DVIActions.h **
+** DVIActions.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,12 +18,11 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_DVIACTIONS_H
-#define DVISVGM_DVIACTIONS_H
+#ifndef DVIACTIONS_HPP
+#define DVIACTIONS_HPP
#include <string>
#include <vector>
-#include "types.h"
class BoundingBox;
class Font;
@@ -31,7 +30,7 @@ class Font;
struct DVIActions
{
- virtual ~DVIActions () {}
+ virtual ~DVIActions () =default;
virtual void setChar (double x, double y, unsigned c, bool vertical, const Font &f) {}
virtual void setRule (double x, double y, double height, double width) {}
virtual void setTextOrientation (bool vertical) {}
@@ -39,7 +38,7 @@ struct DVIActions
virtual void moveToY (double y) {}
virtual void setFont (int num, const Font &font) {}
virtual void special (const std::string &s, double dvi2bp, bool preprocessing=false) {}
- virtual void beginPage (unsigned pageno, const std::vector<Int32> &c) {}
+ virtual void beginPage (unsigned pageno, const std::vector<int32_t> &c) {}
virtual void endPage (unsigned pageno) {}
virtual BoundingBox& bbox () =0;
virtual void progress (size_t current, size_t total, const char *id=0) {}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.cpp
index 3c6c2c1d284..4c94d3edf7a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.cpp
@@ -2,7 +2,7 @@
** DVIReader.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -23,12 +23,12 @@
#include <cstdarg>
#include <fstream>
#include <sstream>
-#include "Color.h"
-#include "DVIActions.h"
-#include "DVIReader.h"
-#include "Font.h"
-#include "FontManager.h"
-#include "VectorStream.h"
+#include "Color.hpp"
+#include "DVIActions.hpp"
+#include "DVIReader.hpp"
+#include "Font.hpp"
+#include "FontManager.hpp"
+#include "VectorStream.hpp"
using namespace std;
@@ -47,7 +47,6 @@ DVIReader::DVIReader (istream &is) : BasicDVIReader(is)
int DVIReader::executeCommand () {
- _prevDviState = _currDviState;
int opcode = BasicDVIReader::executeCommand();
return opcode;
}
@@ -79,10 +78,10 @@ bool DVIReader::executePage (unsigned n) {
if (n < 1 || n > numberOfPages())
return false;
- seek(_bopOffsets[n-1]); // goto bop of n-th page
- _inPostamble = false; // not in postamble
+ seek(_bopOffsets[n-1]); // goto bop of n-th page
+ _inPostamble = false; // not in postamble
_currPageNum = n;
- while (executeCommand() != 140); // 140 == eop
+ while (executeCommand() != OP_EOP);
return true;
}
@@ -91,7 +90,7 @@ void DVIReader::executePreamble () {
clearStream();
if (isStreamValid()) {
seek(0);
- if (readByte() == 247) {
+ if (readByte() == OP_PRE) {
cmdPre(0);
return;
}
@@ -101,42 +100,42 @@ void DVIReader::executePreamble () {
/** Moves stream pointer to begin of postamble */
-static void to_postamble (StreamReader &reader) {
- reader.clearStream();
- if (!reader.isStreamValid())
+void DVIReader::goToPostamble () {
+ clearStream();
+ if (!isStreamValid())
throw DVIException("invalid DVI file");
- reader.seek(-1, ios::end); // stream pointer to last byte
+ seek(-1, ios::end); // stream pointer to last byte
int count=0;
- while (reader.peek() == 223) {
- reader.seek(-1, ios::cur); // skip fill bytes
+ while (peek() == DVI_FILL) { // skip fill bytes
+ seek(-1, ios::cur);
count++;
}
if (count < 4) // the standard requires at least 4 trailing fill bytes
throw DVIException("missing fill bytes at end of file");
- reader.seek(-4, ios::cur); // now on first byte of q (pointer to begin of postamble)
- UInt32 q = reader.readUnsigned(4); // pointer to begin of postamble
- reader.seek(q); // now on begin of postamble
+ seek(-4, ios::cur); // now at first byte of q (pointer to begin of postamble)
+ uint32_t q = readUnsigned(4); // pointer to begin of postamble
+ seek(q); // now at begin of postamble
}
/** Reads and executes the commands of the postamble. */
void DVIReader::executePostamble () {
- to_postamble(*this);
- while (executeCommand() != 249); // executes all commands until post_post (= 249) is reached
+ goToPostamble();
+ while (executeCommand() != OP_POSTPOST); // executes all commands until post_post (= 249) is reached
}
/** Collects and records the file offsets of all bop commands. */
void DVIReader::collectBopOffsets () {
- to_postamble(*this);
- _bopOffsets.push_back(tell()); // also add offset of postamble
- readByte(); // skip post command
- UInt32 offset = readUnsigned(4); // offset of final bop
- while ((Int32)offset > 0) { // not yet on first bop?
- _bopOffsets.push_back(offset); // record offset
- seek(offset+41); // skip bop command and the 10 \count values => now on offset of previous bop
+ goToPostamble();
+ _bopOffsets.push_back(tell()); // also add offset of postamble
+ readByte(); // skip post command
+ uint32_t offset = readUnsigned(4); // offset of final bop
+ while ((int32_t)offset > 0) { // not yet on first bop?
+ _bopOffsets.push_back(offset); // record offset
+ seek(offset+41); // skip bop command and the 10 \count values => now on offset of previous bop
offset = readUnsigned(4);
}
reverse(_bopOffsets.begin(), _bopOffsets.end());
@@ -147,14 +146,14 @@ void DVIReader::collectBopOffsets () {
/** Reads and executes DVI preamble command.
* Format: pre ver[1] num[4] den[4] mag[4] cmtlen[1] cmt[cmtlen] */
void DVIReader::cmdPre (int) {
- UInt8 id = readUnsigned(1);
- setDVIVersion(DVIVersion(id)); // identification number
- UInt32 numer = readUnsigned(4); // numerator units of measurement
- UInt32 denom = readUnsigned(4); // denominator units of measurement
+ uint8_t id = readUnsigned(1);
+ setDVIVersion(DVIVersion(id)); // identification number
+ uint32_t numer = readUnsigned(4); // numerator units of measurement
+ uint32_t denom = readUnsigned(4); // denominator units of measurement
if (denom == 0)
throw DVIException("denominator of measurement unit is zero");
_mag = readUnsigned(4); // magnification
- UInt32 k = readUnsigned(1); // length of following comment
+ uint32_t k = readUnsigned(1); // length of following comment
string comment = readString(k);
// 1 dviunit * num/den == multiples of 0.0000001m
// 1 dviunit * _dvibp: length of 1 dviunit in PS points * _mag/1000
@@ -166,16 +165,16 @@ void DVIReader::cmdPre (int) {
/** Reads and executes DVI postamble command.
* Format: post p[4] num[4] den[4] mag[4] ph[4] pw[4] sd[2] np[2] */
void DVIReader::cmdPost (int) {
- UInt32 prevBopOffset = readUnsigned(4);
- UInt32 numer = readUnsigned(4);
- UInt32 denom = readUnsigned(4);
+ uint32_t prevBopOffset = readUnsigned(4);
+ uint32_t numer = readUnsigned(4);
+ uint32_t denom = readUnsigned(4);
if (denom == 0)
throw DVIException("denominator of measurement unit is zero");
_mag = readUnsigned(4);
- UInt32 pageHeight = readUnsigned(4); // height of tallest page in dvi units
- UInt32 pageWidth = readUnsigned(4); // width of widest page in dvi units
- UInt16 stackDepth = readUnsigned(2); // max. stack depth required
- UInt16 numPages = readUnsigned(2);
+ uint32_t pageHeight = readUnsigned(4); // height of tallest page in dvi units
+ uint32_t pageWidth = readUnsigned(4); // width of widest page in dvi units
+ uint16_t stackDepth = readUnsigned(2); // max. stack depth required
+ uint16_t numPages = readUnsigned(2);
if (numPages != numberOfPages())
throw DVIException("page count in postamble doesn't match actual number of pages");
@@ -191,10 +190,10 @@ void DVIReader::cmdPost (int) {
* Format: post_post q[4] i[1] 223[>=4] */
void DVIReader::cmdPostPost (int) {
_inPostamble = false;
- UInt32 postOffset = readUnsigned(4); // pointer to begin of postamble
- UInt8 id = readUnsigned(1);
- setDVIVersion(DVIVersion(id)); // identification byte
- while (readUnsigned(1) == 223); // skip fill bytes (223), eof bit should be set now
+ uint32_t postOffset = readUnsigned(4); // pointer to begin of postamble
+ uint8_t id = readUnsigned(1);
+ setDVIVersion(DVIVersion(id)); // identification byte
+ while (readUnsigned(1) == DVI_FILL); // skip fill bytes (223), eof bit should be set now
dviPostPost(DVIVersion(id), postOffset);
}
@@ -202,11 +201,11 @@ void DVIReader::cmdPostPost (int) {
/** Reads and executes Begin-Of-Page command.
* Format: bop c0[+4] ... c9[+4] p[+4] */
void DVIReader::cmdBop (int) {
- vector<Int32> c(10);
+ vector<int32_t> c(10);
for (int i=0; i < 10; i++)
c[i] = readSigned(4);
- Int32 prevBopOffset = readSigned(4); // pointer to peceeding bop (-1 in case of first page)
- _currDviState.reset(); // set all DVI registers to 0
+ int32_t prevBopOffset = readSigned(4); // pointer to peceeding bop (-1 in case of first page)
+ _dviState.reset(); // set all DVI registers to 0
while (!_stateStack.empty())
_stateStack.pop();
_currFontNum = 0;
@@ -226,7 +225,7 @@ void DVIReader::cmdEop (int) {
/** Reads and executes push command. */
void DVIReader::cmdPush (int) {
- _stateStack.push(_currDviState);
+ _stateStack.push(_dviState);
dviPush();
}
@@ -235,7 +234,7 @@ void DVIReader::cmdPush (int) {
void DVIReader::cmdPop (int) {
if (_stateStack.empty())
throw DVIException("stack empty at pop command");
- _currDviState = _stateStack.top();
+ _dviState = _stateStack.top();
_stateStack.pop();
dviPop();
}
@@ -245,19 +244,19 @@ void DVIReader::cmdPop (int) {
* It is called by the cmdSetChar and cmdPutChar methods.
* @param[in] font current font (corresponding to _currFontNum)
* @param[in] c character to typeset */
-void DVIReader::putVFChar (Font *font, UInt32 c) {
+void DVIReader::putVFChar (Font *font, uint32_t c) {
if (VirtualFont *vf = dynamic_cast<VirtualFont*>(font)) { // is current font a virtual font?
- if (const vector<UInt8> *dvi = vf->getDVI(c)) { // try to get DVI snippet that represents character c
+ if (const vector<uint8_t> *dvi = vf->getDVI(c)) { // try to get DVI snippet that represents character c
FontManager &fm = FontManager::instance();
- DVIState pos = _currDviState; // save current cursor position
- _currDviState.x = _currDviState.y = _currDviState.w = _currDviState.z = 0;
+ DVIState savedState = _dviState; // save current cursor position
+ _dviState.x = _dviState.y = _dviState.w = _dviState.z = 0;
int savedFontNum = _currFontNum; // save current font number
fm.enterVF(vf); // enter VF font number context
- setFont(fm.vfFirstFontNum(vf), VF_ENTER);
+ setFont(fm.vfFirstFontNum(vf), SetFontMode::VF_ENTER);
double savedScale = _dvi2bp;
// DVI units in virtual fonts are multiples of 1^(-20) times the scaled size of the VF
_dvi2bp = vf->scaledSize()/(1 << 20);
- VectorInputStream<UInt8> vis(*dvi);
+ VectorInputStream<uint8_t> vis(*dvi);
istream &is = replaceStream(vis);
try {
executeAll(); // execute DVI fragment
@@ -265,11 +264,11 @@ void DVIReader::putVFChar (Font *font, UInt32 c) {
catch (const DVIException &e) {
// Message::estream(true) << "invalid dvi in vf: " << e.getMessage() << endl; // @@
}
- replaceStream(is); // restore previous input stream
- _dvi2bp = savedScale; // restore previous scale factor
- fm.leaveVF(); // restore previous font number context
- setFont(savedFontNum, VF_LEAVE); // restore previous font number
- _currDviState = pos; // restore previous cursor position
+ replaceStream(is); // restore previous input stream
+ _dvi2bp = savedScale; // restore previous scale factor
+ fm.leaveVF(); // restore previous font number context
+ setFont(savedFontNum, SetFontMode::VF_LEAVE); // restore previous font number
+ _dviState = savedState; // restore previous cursor position
}
}
}
@@ -283,9 +282,9 @@ void DVIReader::cmdSetChar0 (int c) {
if (!_inPage)
throw DVIException("setchar outside of page");
Font *font = FontManager::instance().getFont(_currFontNum);
+ dviSetChar0(c, font); // template method that may trigger further actions
+ putVFChar(font, c); // further character processing if current font is a virtual font
moveRight(font->charWidth(c)*font->scaleFactor()*_mag/1000.0);
- dviSetChar0(c, font);
- putVFChar(font, c);
}
@@ -298,11 +297,11 @@ void DVIReader::cmdSetChar (int len) {
throw DVIException("setchar outside of page");
// According to the dvi specification all character codes are unsigned
// except len == 4. At the moment all char codes are treated as unsigned...
- UInt32 c = readUnsigned(len); // if len == 4 c may be signed
+ uint32_t c = readUnsigned(len); // if len == 4 c may be signed
Font *font = FontManager::instance().getFont(_currFontNum);
+ dviSetChar(c, font); // template method that may trigger further actions
+ putVFChar(font, c); // further character processing if current font is a virtual font
moveRight(font->charWidth(c)*font->scaleFactor()*_mag/1000.0);
- dviSetChar(c, font);
- putVFChar(font, c);
}
@@ -315,7 +314,7 @@ void DVIReader::cmdPutChar (int len) {
throw DVIException("putchar outside of page");
// According to the dvi specification all character codes are unsigned
// except len == 4. At the moment all char codes are treated as unsigned...
- Int32 c = readUnsigned(len);
+ int32_t c = readUnsigned(len);
Font *font = FontManager::instance().getFont(_currFontNum);
dviPutChar(c, font);
putVFChar(font, c);
@@ -331,8 +330,8 @@ void DVIReader::cmdSetRule (int) {
throw DVIException("set_rule outside of page");
double height = _dvi2bp*readSigned(4);
double width = _dvi2bp*readSigned(4);
- moveRight(width);
dviSetRule(height, width);
+ moveRight(width);
}
@@ -350,71 +349,71 @@ void DVIReader::cmdPutRule (int) {
void DVIReader::moveRight (double dx) {
- switch (_currDviState.d) {
- case WMODE_LR: _currDviState.h += dx; break;
- case WMODE_TB: _currDviState.v += dx; break;
- case WMODE_BT: _currDviState.v -= dx; break;
+ switch (_dviState.d) {
+ case WritingMode::LR: _dviState.h += dx; break;
+ case WritingMode::TB: _dviState.v += dx; break;
+ case WritingMode::BT: _dviState.v -= dx; break;
}
}
void DVIReader::moveDown (double dy) {
- switch (_currDviState.d) {
- case WMODE_LR: _currDviState.v += dy; break;
- case WMODE_TB: _currDviState.h -= dy; break;
- case WMODE_BT: _currDviState.h += dy; break;
+ switch (_dviState.d) {
+ case WritingMode::LR: _dviState.v += dy; break;
+ case WritingMode::TB: _dviState.h -= dy; break;
+ case WritingMode::BT: _dviState.h += dy; break;
}
}
void DVIReader::cmdRight (int len) {
- Int32 dx = _dvi2bp*readSigned(len);
+ double dx = _dvi2bp*readSigned(len);
moveRight(dx);
dviRight(dx);
}
void DVIReader::cmdDown (int len) {
- Int32 dy = _dvi2bp*readSigned(len);
+ double dy = _dvi2bp*readSigned(len);
moveDown(dy);
dviDown(dy);
}
-void DVIReader::cmdNop (int) {}
-void DVIReader::cmdX0 (int) {moveRight(_currDviState.x); dviX0();}
-void DVIReader::cmdY0 (int) {moveDown(_currDviState.y); dviY0();}
-void DVIReader::cmdW0 (int) {moveRight(_currDviState.w); dviW0();}
-void DVIReader::cmdZ0 (int) {moveDown(_currDviState.z); dviZ0();}
+void DVIReader::cmdNop (int) {dviNop();}
+void DVIReader::cmdX0 (int) {moveRight(_dviState.x); dviX0();}
+void DVIReader::cmdY0 (int) {moveDown(_dviState.y); dviY0();}
+void DVIReader::cmdW0 (int) {moveRight(_dviState.w); dviW0();}
+void DVIReader::cmdZ0 (int) {moveDown(_dviState.z); dviZ0();}
void DVIReader::cmdX (int len) {
- Int32 dx = _dvi2bp*readSigned(len);
- _currDviState.x = dx;
+ double dx = _dvi2bp*readSigned(len);
+ _dviState.x = dx;
moveRight(dx);
dviX(dx);
}
void DVIReader::cmdY (int len) {
- Int32 dy = _dvi2bp*readSigned(len);
- _currDviState.y = dy;
+ double dy = _dvi2bp*readSigned(len);
+ _dviState.y = dy;
moveDown(dy);
dviY(dy);
}
void DVIReader::cmdW (int len) {
- Int32 dx = _dvi2bp*readSigned(len);
- _currDviState.w = dx;
+ double dx = _dvi2bp*readSigned(len);
+ _dviState.w = dx;
moveRight(dx);
dviW(dx);
}
void DVIReader::cmdZ (int len) {
- Int32 dy = _dvi2bp*readSigned(len);
- _currDviState.z = dy;
+ double dy = _dvi2bp*readSigned(len);
+ _dviState.z = dy;
moveDown(dy);
dviZ(dy);
}
@@ -423,7 +422,7 @@ void DVIReader::cmdZ (int len) {
/** Sets the text orientation (horizontal, vertical).
* This command is only available in DVI version 3 (created by pTeX) */
void DVIReader::cmdDir (int) {
- UInt8 wmode = readUnsigned(1);
+ uint8_t wmode = readUnsigned(1);
if (wmode == 4) // yoko mode (4) equals default LR mode (0)
wmode = 0;
if (wmode == 2 || wmode > 3) {
@@ -431,15 +430,15 @@ void DVIReader::cmdDir (int) {
oss << "invalid writing mode value " << wmode << " (0, 1, 3, or 4 expected)";
throw DVIException(oss.str());
}
- _currDviState.d = (WritingMode)wmode;
- dviDir(_currDviState.d);
+ _dviState.d = (WritingMode)wmode;
+ dviDir(_dviState.d);
}
void DVIReader::cmdXXX (int len) {
if (!_inPage)
throw DVIException("special outside of page");
- UInt32 numBytes = readUnsigned(len);
+ uint32_t numBytes = readUnsigned(len);
string str = readString(numBytes);
dviXXX(str);
}
@@ -452,7 +451,7 @@ void DVIReader::cmdXXX (int len) {
void DVIReader::setFont (int fontnum, SetFontMode mode) {
if (const Font *font = FontManager::instance().getFont(fontnum)) {
_currFontNum = fontnum;
- dviFontNum(UInt32(fontnum), mode, font);
+ dviFontNum(uint32_t(fontnum), mode, font);
}
else {
ostringstream oss;
@@ -466,7 +465,7 @@ void DVIReader::setFont (int fontnum, SetFontMode mode) {
* @param[in] fontnum font number
* @throw DVIException if font number is undefined */
void DVIReader::cmdFontNum0 (int fontnum) {
- setFont(fontnum, SF_SHORT);
+ setFont(fontnum, SetFontMode::SF_SHORT);
}
@@ -474,8 +473,8 @@ void DVIReader::cmdFontNum0 (int fontnum) {
* @param[in] len size of font number variable (in bytes)
* @throw DVIException if font number is undefined */
void DVIReader::cmdFontNum (int len) {
- UInt32 fontnum = readUnsigned(len);
- setFont(fontnum, SF_LONG);
+ uint32_t fontnum = readUnsigned(len);
+ setFont(fontnum, SetFontMode::SF_LONG);
}
@@ -485,7 +484,7 @@ void DVIReader::cmdFontNum (int len) {
* @param[in] cs checksum to be compared with TFM checksum
* @param[in] ds design size in PS point units
* @param[in] ss scaled size in PS point units */
-const Font* DVIReader::defineFont (UInt32 fontnum, const string &name, UInt32 cs, double ds, double ss) {
+const Font* DVIReader::defineFont (uint32_t fontnum, const string &name, uint32_t cs, double ds, double ss) {
FontManager &fm = FontManager::instance();
Font *font = fm.getFont(fontnum);
if (!font) {
@@ -508,15 +507,15 @@ const Font* DVIReader::defineFont (UInt32 fontnum, const string &name, UInt32 cs
/** Defines a new font.
* @param[in] len size of font number variable (in bytes) */
void DVIReader::cmdFontDef (int len) {
- UInt32 fontnum = readUnsigned(len); // font number
- UInt32 checksum = readUnsigned(4); // font checksum (to be compared with corresponding TFM checksum)
- UInt32 ssize = readUnsigned(4); // scaled size of font in DVI units
- UInt32 dsize = readUnsigned(4); // design size of font in DVI units
- UInt32 pathlen = readUnsigned(1); // length of font path
- UInt32 namelen = readUnsigned(1); // length of font name
- string path = readString(pathlen); // path to font file
- string fontname = readString(namelen);
- const Font *font = defineFont(fontnum, fontname, checksum, dsize*_dvi2bp, ssize*_dvi2bp);
+ uint32_t fontnum = readUnsigned(len); // font number
+ uint32_t checksum = readUnsigned(4); // font checksum (to be compared with corresponding TFM checksum)
+ uint32_t ssize = readUnsigned(4); // scaled size of font in DVI units
+ uint32_t dsize = readUnsigned(4); // design size of font in DVI units
+ uint32_t pathlen = readUnsigned(1); // length of font path
+ uint32_t namelen = readUnsigned(1); // length of font name
+ string path = readString(pathlen); // path to font file
+ string fontname = readString(namelen);
+ const Font *font = defineFont(fontnum, fontname, checksum, dsize*_dvi2bp, ssize*_dvi2bp);
dviFontDef(fontnum, checksum, font);
}
@@ -528,7 +527,7 @@ void DVIReader::cmdFontDef (int len) {
* @param[in] checksum checksum to be compared with TFM checksum
* @param[in] dsize design size in PS point units
* @param[in] ssize scaled size in PS point units */
-void DVIReader::defineVFFont (UInt32 fontnum, string path, string name, UInt32 checksum, double dsize, double ssize) {
+void DVIReader::defineVFFont (uint32_t fontnum, const string &path, const string &name, uint32_t checksum, double dsize, double ssize) {
if (const VirtualFont *vf = FontManager::instance().getVF())
defineFont(fontnum, name, checksum, dsize, ssize * vf->scaleFactor());
}
@@ -537,20 +536,20 @@ void DVIReader::defineVFFont (UInt32 fontnum, string path, string name, UInt32 c
/** This template method is called by the VFReader after reading a character definition from a VF file.
* @param[in] c character number
* @param[in] dvi DVI fragment describing the character */
-void DVIReader::defineVFChar (UInt32 c, vector<UInt8> *dvi) {
- FontManager::instance().assignVfChar(c, dvi);
+void DVIReader::defineVFChar (uint32_t c, vector<uint8_t> &&dvi) {
+ FontManager::instance().assignVFChar(c, std::move(dvi));
}
/** XDV extension: includes image or pdf file.
* parameters: box[1] matrix[4][6] p[2] len[2] path[l] */
void DVIReader::cmdXPic (int) {
- UInt8 box = readUnsigned(1); // box
- vector<Int32> matrix(6);
+ uint8_t box = readUnsigned(1); // box
+ vector<int32_t> matrix(6);
for (int i=0; i < 6; i++) // matrix
matrix[i] = readSigned(4);
- Int16 page = readSigned(2); // page number
- UInt16 len = readUnsigned(2);
+ int16_t page = readSigned(2); // page number
+ uint16_t len = readUnsigned(2);
string path = readString(len); // path to image/pdf file
dviXPic(box, matrix, page, path);
}
@@ -558,14 +557,14 @@ void DVIReader::cmdXPic (int) {
/** XDV extension: defines a native font */
void DVIReader::cmdXFontDef (int) {
- Int32 fontnum = readSigned(4);
+ int32_t fontnum = readSigned(4);
double ptsize = _dvi2bp*readUnsigned(4);
- UInt16 flags = readUnsigned(2);
- UInt8 psname_len = readUnsigned(1);
- UInt8 fmname_len = getDVIVersion() == DVI_XDV5 ? readUnsigned(1) : 0; // length of family name
- UInt8 stname_len = getDVIVersion() == DVI_XDV5 ? readUnsigned(1) : 0; // length of style name
+ uint16_t flags = readUnsigned(2);
+ uint8_t psname_len = readUnsigned(1);
+ uint8_t fmname_len = getDVIVersion() == DVI_XDV5 ? readUnsigned(1) : 0; // length of family name
+ uint8_t stname_len = getDVIVersion() == DVI_XDV5 ? readUnsigned(1) : 0; // length of style name
string fontname = readString(psname_len);
- UInt32 fontIndex=0;
+ uint32_t fontIndex=0;
if (getDVIVersion() == DVI_XDV5)
seek(fmname_len+stname_len, ios::cur);
else
@@ -578,8 +577,8 @@ void DVIReader::cmdXFontDef (int) {
// The font color must not interfere with color specials. If the font color is not black,
// all color specials should be ignored, i.e. glyphs of a non-black fonts have a fixed color
// that can't be changed by color specials.
- UInt32 rgba = readUnsigned(4);
- color.setRGB(UInt8(rgba >> 24), UInt8((rgba >> 16) & 0xff), UInt8((rgba >> 8) & 0xff));
+ uint32_t rgba = readUnsigned(4);
+ color.setRGB(uint8_t(rgba >> 24), uint8_t((rgba >> 16) & 0xff), uint8_t((rgba >> 8) & 0xff));
}
if (flags & 0x1000) // extend?
style.extend = _dvi2bp*readSigned(4);
@@ -588,7 +587,7 @@ void DVIReader::cmdXFontDef (int) {
if (flags & 0x4000) // embolden?
style.bold = _dvi2bp*readSigned(4);
if ((flags & 0x0800) && (getDVIVersion() == DVI_XDV5)) { // variations?
- UInt16 num_variations = readSigned(2);
+ uint16_t num_variations = readSigned(2);
for (int i=0; i < num_variations; i++)
readUnsigned(4);
}
@@ -606,12 +605,13 @@ void DVIReader::cmdXFontDef (int) {
* parameters: w[4] n[2] (dx,dy)[(4+4)n] glyphs[2n] */
void DVIReader::cmdXGlyphArray (int) {
vector<double> dx, dy;
- vector<UInt16> glyphs;
- putGlyphArray(false, dx, dy, glyphs);
+ vector<uint16_t> glyphs;
+ double width = putGlyphArray(false, dx, dy, glyphs);
if (Font *font = FontManager::instance().getFont(_currFontNum))
dviXGlyphArray(dx, dy, glyphs, *font);
else
throw DVIException("missing setfont prior to xglypharray");
+ moveRight(width);
}
@@ -620,12 +620,13 @@ void DVIReader::cmdXGlyphArray (int) {
* parameters: w[4] n[2] dx[4n] dy[4] glyphs[2n] */
void DVIReader::cmdXGlyphString (int) {
vector<double> dx, dy;
- vector<UInt16> glyphs;
- putGlyphArray(true, dx, dy, glyphs);
+ vector<uint16_t> glyphs;
+ double width = putGlyphArray(true, dx, dy, glyphs);
if (Font *font = FontManager::instance().getFont(_currFontNum))
dviXGlyphString(dx, glyphs, *font);
else
throw DVIException("missing setfont prior to xglyphstring");
+ moveRight(width);
}
@@ -636,17 +637,18 @@ void DVIReader::cmdXGlyphString (int) {
* introduced with XeTeX 0.99995 and can be triggered by <tt>\\XeTeXgenerateactualtext1</tt>.
* parameters: l[2] chars[2l] w[4] n[2] (dx,dy)[8n] glyphs[2n] */
void DVIReader::cmdXTextAndGlyphs (int) {
- UInt16 l = readUnsigned(2); // number of chars
- vector<UInt16> chars(l);
+ uint16_t l = readUnsigned(2); // number of chars
+ vector<uint16_t> chars(l);
for (int i=0; i < l; i++)
chars[i] = readUnsigned(2);
vector<double> x, y;
- vector<UInt16> glyphs;
- putGlyphArray(false, x, y, glyphs);
+ vector<uint16_t> glyphs;
+ double width = putGlyphArray(false, x, y, glyphs);
if (Font *font = FontManager::instance().getFont(_currFontNum))
dviXTextAndGlyphs(x, y, chars, glyphs, *font);
else
throw DVIException("missing setfont prior to xtextandglyphs");
+ moveRight(width);
}
@@ -654,10 +656,11 @@ void DVIReader::cmdXTextAndGlyphs (int) {
* @param[in] xonly indicates if the characters share a single y coordinate (xonly==true)
* @param[out] dx relative horizontal positions of each glyph
* @param[out] dy relative vertical positions of each glyph
- * @param[out] glyphs FreeType indices of the glyphs to typeset */
-void DVIReader::putGlyphArray (bool xonly, vector<double> &dx, vector<double> &dy, vector<UInt16> &glyphs) {
+ * @param[out] glyphs FreeType indices of the glyphs to typeset
+ * @return total width of the glyph array */
+double DVIReader::putGlyphArray (bool xonly, vector<double> &dx, vector<double> &dy, vector<uint16_t> &glyphs) {
double strwidth = _dvi2bp*readSigned(4);
- UInt16 num_glyphs = readUnsigned(2);
+ uint16_t num_glyphs = readUnsigned(2);
dx.resize(num_glyphs);
dy.resize(num_glyphs);
glyphs.resize(num_glyphs);
@@ -667,5 +670,5 @@ void DVIReader::putGlyphArray (bool xonly, vector<double> &dx, vector<double> &d
}
for (int i=0; i < num_glyphs; i++)
glyphs[i] = readUnsigned(2);
- moveRight(strwidth);
+ return strwidth;
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp
index 97d297adc55..cd66c0e5681 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** DVIReader.h **
+** DVIReader.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,17 +18,16 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_DVIREADER_H
-#define DVISVGM_DVIREADER_H
+#ifndef DVIREADER_HPP
+#define DVIREADER_HPP
#include <limits>
#include <map>
#include <stack>
#include <string>
-#include "BasicDVIReader.h"
-#include "Color.h"
-#include "VFActions.h"
-#include "types.h"
+#include "BasicDVIReader.hpp"
+#include "Color.hpp"
+#include "VFActions.hpp"
class Font;
class FontStyle;
@@ -38,8 +37,8 @@ class VirtualFont;
class DVIReader : public BasicDVIReader, public VFActions
{
protected:
- enum WritingMode {WMODE_LR=0, WMODE_TB=1, WMODE_BT=3};
- enum SetFontMode {SF_SHORT, SF_LONG, VF_ENTER, VF_LEAVE};
+ enum class WritingMode {LR=0, TB=1, BT=3};
+ enum class SetFontMode {SF_SHORT, SF_LONG, VF_ENTER, VF_LEAVE};
struct DVIState
{
@@ -47,7 +46,7 @@ class DVIReader : public BasicDVIReader, public VFActions
double x, w, y, z; ///< additional registers to store horizontal (x, w) and vertical (y, z) positions
WritingMode d; ///< direction: 0: horizontal, 1: vertical(top->bottom), 3: vertical (bottom->top)
DVIState () {reset();}
- void reset () {h = v = x = w = y = z = 0.0; d=WMODE_LR;}
+ void reset () {h = v = x = w = y = z = 0.0; d=WritingMode::LR;}
};
public:
@@ -57,46 +56,46 @@ class DVIReader : public BasicDVIReader, public VFActions
void executePreamble ();
void executePostamble ();
bool executePage (unsigned n);
- bool inPostamble () const {return _inPostamble;}
- double getXPos () const {return _currDviState.h;}
- double getYPos () const {return _currDviState.v;}
- int stackDepth () const {return _stateStack.size();}
- int currentFontNumber () const {return _currFontNum;}
- unsigned currentPageNumber () const {return _currPageNum;}
- unsigned numberOfPages () const {return _bopOffsets.empty() ? 0 : _bopOffsets.size()-1;}
+ bool inPostamble () const {return _inPostamble;}
+ double getXPos () const override {return _dviState.h;}
+ double getYPos () const override {return _dviState.v;}
+ int stackDepth () const override {return _stateStack.size();}
+ int currentFontNumber () const {return _currFontNum;}
+ unsigned currentPageNumber () const override {return _currPageNum;}
+ unsigned numberOfPages () const {return _bopOffsets.empty() ? 0 : _bopOffsets.size()-1;}
protected:
- int executeCommand ();
+ int executeCommand () override;
void collectBopOffsets ();
size_t numberOfPageBytes (int n) const {return _bopOffsets.size() > 1 ? _bopOffsets[n+1]-_bopOffsets[n] : 0;}
+ void goToPostamble ();
virtual void moveRight (double dx);
virtual void moveDown (double dy);
- void putVFChar (Font *font, UInt32 c);
- void putGlyphArray (bool xonly, std::vector<double> &dx, std::vector<double> &dy, std::vector<UInt16> &glyphs);
- const Font* defineFont (UInt32 fontnum, const std::string &name, UInt32 cs, double ds, double ss);
+ void putVFChar (Font *font, uint32_t c);
+ double putGlyphArray (bool xonly, std::vector<double> &dx, std::vector<double> &dy, std::vector<uint16_t> &glyphs);
+ const Font* defineFont (uint32_t fontnum, const std::string &name, uint32_t cs, double ds, double ss);
void setFont (int num, SetFontMode mode);
- const DVIState& currState() const {return _currDviState;}
- const DVIState& prevState() const {return _prevDviState;}
+ const DVIState& dviState() const {return _dviState;}
double dvi2bp () const {return _dvi2bp;}
bool inPage () const {return _inPage;}
// VFAction methods
- void defineVFFont (UInt32 fontnum, std::string path, std::string name, UInt32 checksum, double dsize, double ssize);
- void defineVFChar (UInt32 c, std::vector<UInt8> *dvi);
+ void defineVFFont (uint32_t fontnum, const std::string &path, const std::string &name, uint32_t checksum, double dsize, double ssize) override;
+ void defineVFChar (uint32_t c, std::vector<uint8_t> &&dvi) override;
// The following template methods provide higher-level access to the DVI commands.
// In contrast to their cmdXXX pendants, they don't require any handling of the input stream.
// All command arguments are delivered as function parameters. These methods are called after
// the DVI registers have been updated, i.e. currState() represents the state after executing
// the command. If the previous register state is required, prevState() can be used.
- virtual void dviPre (UInt8 id, UInt32 numer, UInt32 denom, UInt32 mag, const std::string &comment) {}
- virtual void dviPost (UInt16 stdepth, UInt16 pages, UInt32 pw, UInt32 ph, UInt32 mag, UInt32 num, UInt32 den, UInt32 lbopofs) {}
- virtual void dviPostPost (UInt8 id, UInt32 postOffset) {}
- virtual void dviBop (const std::vector<Int32> &c, Int32 prevBopOffset) {}
+ virtual void dviPre (uint8_t id, uint32_t numer, uint32_t denom, uint32_t mag, const std::string &comment) {}
+ virtual void dviPost (uint16_t stdepth, uint16_t pages, uint32_t pw, uint32_t ph, uint32_t mag, uint32_t num, uint32_t den, uint32_t lbopofs) {}
+ virtual void dviPostPost (uint8_t id, uint32_t postOffset) {}
+ virtual void dviBop (const std::vector<int32_t> &c, int32_t prevBopOffset) {}
virtual void dviEop () {}
- virtual void dviSetChar0 (UInt32 c, const Font *font) {}
- virtual void dviSetChar (UInt32 c, const Font *font) {}
- virtual void dviPutChar (UInt32 c, const Font *font) {}
+ virtual void dviSetChar0 (uint32_t c, const Font *font) {}
+ virtual void dviSetChar (uint32_t c, const Font *font) {}
+ virtual void dviPutChar (uint32_t c, const Font *font) {}
virtual void dviSetRule (double h, double w) {}
virtual void dviPutRule (double h, double w) {}
virtual void dviNop () {}
@@ -112,64 +111,63 @@ class DVIReader : public BasicDVIReader, public VFActions
virtual void dviY (double y) {}
virtual void dviW (double w) {}
virtual void dviZ (double z) {}
- virtual void dviFontDef (UInt32 fontnum, UInt32 checksum, const Font *font) {}
- virtual void dviFontNum (UInt32 fontnum, SetFontMode mode, const Font *font) {}
+ virtual void dviFontDef (uint32_t fontnum, uint32_t checksum, const Font *font) {}
+ virtual void dviFontNum (uint32_t fontnum, SetFontMode mode, const Font *font) {}
virtual void dviDir (WritingMode dir) {}
virtual void dviXXX (const std::string &str) {}
- virtual void dviXPic (UInt8 box, const std::vector<Int32> &matrix, Int16 page, const std::string &path) {}
- virtual void dviXFontDef (UInt32 fontnum, const NativeFont *font) {}
- virtual void dviXGlyphArray (std::vector<double> &dx, std::vector<double> &dy, std::vector<UInt16> &glyphs, const Font &font) {}
- virtual void dviXGlyphString (std::vector<double> &dx, std::vector<UInt16> &glyphs, const Font &font) {}
- virtual void dviXTextAndGlyphs (std::vector<double> &dx, std::vector<double> &dy, std::vector<UInt16> &chars, std::vector<UInt16> &glyphs, const Font &font) {}
+ virtual void dviXPic (uint8_t box, const std::vector<int32_t> &matrix, int16_t page, const std::string &path) {}
+ virtual void dviXFontDef (uint32_t fontnum, const NativeFont *font) {}
+ virtual void dviXGlyphArray (std::vector<double> &dx, std::vector<double> &dy, std::vector<uint16_t> &glyphs, const Font &font) {}
+ virtual void dviXGlyphString (std::vector<double> &dx, std::vector<uint16_t> &glyphs, const Font &font) {}
+ virtual void dviXTextAndGlyphs (std::vector<double> &dx, std::vector<double> &dy, std::vector<uint16_t> &chars, std::vector<uint16_t> &glyphs, const Font &font) {}
private:
// The following low-level methods evaluate the DVI commands read from
// the input stream and call the corresponding dviXXX methods.
- void cmdSetChar0 (int c);
- void cmdSetChar (int len);
- void cmdPutChar (int len);
- void cmdSetRule (int len);
- void cmdPutRule (int len);
- void cmdNop (int len);
- void cmdBop (int len);
- void cmdEop (int len);
- void cmdPush (int len);
- void cmdPop (int len);
- void cmdDir (int len);
- void cmdRight (int len);
- void cmdDown (int len);
- void cmdX0 (int len);
- void cmdY0 (int len);
- void cmdW0 (int len);
- void cmdZ0 (int len);
- void cmdX (int len);
- void cmdY (int len);
- void cmdW (int len);
- void cmdZ (int len);
- void cmdFontDef (int len);
- void cmdFontNum0 (int n);
- void cmdFontNum (int len);
- void cmdXXX (int len);
- void cmdPre (int len);
- void cmdPost (int len);
- void cmdPostPost (int len);
- void cmdXPic (int len);
- void cmdXFontDef (int len);
- void cmdXGlyphArray (int len);
- void cmdXGlyphString (int len);
- void cmdXTextAndGlyphs (int len);
+ void cmdSetChar0 (int c) override;
+ void cmdSetChar (int len) override;
+ void cmdPutChar (int len) override;
+ void cmdSetRule (int len) override;
+ void cmdPutRule (int len) override;
+ void cmdNop (int len) override;
+ void cmdBop (int len) override;
+ void cmdEop (int len) override;
+ void cmdPush (int len) override;
+ void cmdPop (int len) override;
+ void cmdDir (int len) override;
+ void cmdRight (int len) override;
+ void cmdDown (int len) override;
+ void cmdX0 (int len) override;
+ void cmdY0 (int len) override;
+ void cmdW0 (int len) override;
+ void cmdZ0 (int len) override;
+ void cmdX (int len) override;
+ void cmdY (int len) override;
+ void cmdW (int len) override;
+ void cmdZ (int len) override;
+ void cmdFontDef (int len) override;
+ void cmdFontNum0 (int n) override;
+ void cmdFontNum (int len) override;
+ void cmdXXX (int len) override;
+ void cmdPre (int len) override;
+ void cmdPost (int len) override;
+ void cmdPostPost (int len) override;
+ void cmdXPic (int len) override;
+ void cmdXFontDef (int len) override;
+ void cmdXGlyphArray (int len) override;
+ void cmdXGlyphString (int len) override;
+ void cmdXTextAndGlyphs (int len) override;
private:
bool _inPage; ///< true if stream pointer is between bop and eop
unsigned _currPageNum; ///< current page number (1 is first page)
int _currFontNum; ///< current font number
double _dvi2bp; ///< factor to convert dvi units to PS points
- UInt32 _mag; ///< magnification factor * 1000
+ uint32_t _mag; ///< magnification factor * 1000
bool _inPostamble; ///< true if stream pointer is inside the postamble
- DVIState _currDviState; ///< current state of the DVI registers
- DVIState _prevDviState; ///< previous state of the DVI registers
+ DVIState _dviState; ///< current state of the DVI registers
std::stack<DVIState> _stateStack;
- std::vector<UInt32> _bopOffsets;
+ std::vector<uint32_t> _bopOffsets;
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.cpp
index ed292354485..64a0e183b4a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.cpp
@@ -2,7 +2,7 @@
** DVIToSVG.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -24,37 +24,38 @@
#include <fstream>
#include <set>
#include <sstream>
-#include "Calculator.h"
-#include "DVIToSVG.h"
-#include "DVIToSVGActions.h"
-#include "Font.h"
-#include "FontManager.h"
-#include "GlyphTracerMessages.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "PageRanges.h"
-#include "PageSize.h"
-#include "PreScanDVIReader.h"
-#include "SignalHandler.h"
-#include "SVGOutput.h"
+#include "Calculator.hpp"
+#include "DVIToSVG.hpp"
+#include "DVIToSVGActions.hpp"
+#include "Font.hpp"
+#include "FontManager.hpp"
+#include "GlyphTracerMessages.hpp"
+#include "InputBuffer.hpp"
+#include "InputReader.hpp"
+#include "PageRanges.hpp"
+#include "PageSize.hpp"
+#include "PreScanDVIReader.hpp"
+#include "SignalHandler.hpp"
+#include "SVGOutput.hpp"
+#include "version.hpp"
///////////////////////////////////
// special handlers
-#include "BgColorSpecialHandler.h"
-#include "ColorSpecialHandler.h"
-#include "DvisvgmSpecialHandler.h"
-#include "EmSpecialHandler.h"
-#include "HtmlSpecialHandler.h"
-#include "PapersizeSpecialHandler.h"
-#include "PdfSpecialHandler.h"
+#include "BgColorSpecialHandler.hpp"
+#include "ColorSpecialHandler.hpp"
+#include "DvisvgmSpecialHandler.hpp"
+#include "EmSpecialHandler.hpp"
+#include "HtmlSpecialHandler.hpp"
+#include "PapersizeSpecialHandler.hpp"
+#include "PdfSpecialHandler.hpp"
#ifndef HAVE_LIBGS
- #include "NoPsSpecialHandler.h"
+ #include "NoPsSpecialHandler.hpp"
#endif
#ifndef DISABLE_GS
- #include "PsSpecialHandler.h"
+ #include "PsSpecialHandler.hpp"
#endif
-#include "TpicSpecialHandler.h"
+#include "TpicSpecialHandler.hpp"
///////////////////////////////////
@@ -72,7 +73,8 @@ DVIToSVG::DVIToSVG (istream &is, SVGOutputBase &out) : DVIReader(is), _out(out)
_pageHeight = _pageWidth = 0;
_tx = _ty = 0; // no cursor translation
_pageByte = 0;
- _prevYPos = numeric_limits<double>::min();
+ _prevXPos = _prevYPos = numeric_limits<double>::min();
+ _prevWritingMode = WritingMode::LR;
_actions = new DVIToSVGActions(*this, _svg);
}
@@ -97,14 +99,18 @@ void DVIToSVG::convert (unsigned first, unsigned last, pair<int,int> *pageinfo)
throw DVIException(oss.str());
}
last = min(last, numberOfPages());
-
for (unsigned i=first; i <= last; ++i) {
executePage(i);
_svg.removeRedundantElements();
embedFonts(_svg.rootNode());
- _svg.write(_out.getPageStream(currentPageNumber(), numberOfPages()));
+ bool success = _svg.write(_out.getPageStream(currentPageNumber(), numberOfPages()));
string fname = _out.filename(i, numberOfPages());
- Message::mstream(false, Message::MC_PAGE_WRITTEN) << "\noutput written to " << (fname.empty() ? "<stdout>" : fname) << '\n';
+ if (fname.empty())
+ fname = "<stdout>";
+ if (success)
+ Message::mstream(false, Message::MC_PAGE_WRITTEN) << "\noutput written to " << fname << '\n';
+ else
+ Message::wstream(true) << "failed to write output to " << fname << '\n';
_svg.reset();
static_cast<DVIToSVGActions*>(_actions)->reset();
}
@@ -132,8 +138,8 @@ void DVIToSVG::convert (const string &rangestr, pair<int,int> *pageinfo) {
SpecialManager::instance().notifyPreprocessingFinished();
}
- FORALL(ranges, PageRanges::ConstIterator, it)
- convert(it->first, it->second);
+ for (const auto &range : ranges)
+ convert(range.first, range.second);
if (pageinfo) {
pageinfo->first = ranges.numberOfPages();
pageinfo->second = numberOfPages();
@@ -145,10 +151,12 @@ int DVIToSVG::executeCommand () {
SignalHandler::instance().check();
const streampos cmdpos = tell();
int opcode = DVIReader::executeCommand();
- if (currState().v+_ty != _prevYPos) {
+ if (dviState().v+_ty != _prevYPos) {
_tx = _ty = 0;
- _prevYPos = currState().v;
+ _prevYPos = dviState().v;
}
+ _prevXPos = dviState().h+_tx;
+ _prevWritingMode = dviState().d;
if (COMPUTE_PROGRESS && inPage() && _actions) {
size_t pagelen = numberOfPageBytes(currentPageNumber()-1);
_pageByte += tell()-cmdpos;
@@ -162,14 +170,14 @@ int DVIToSVG::executeCommand () {
* executing the BOP actions.
* @param[in] pageno physical page number (1 = first page)
* @param[in] c contains information about the page (page number etc.) */
-void DVIToSVG::enterBeginPage (unsigned pageno, const vector<Int32> &c) {
+void DVIToSVG::enterBeginPage (unsigned pageno, const vector<int32_t> &c) {
if (dynamic_cast<DVIToSVGActions*>(_actions)) {
Message::mstream().indent(0);
Message::mstream(false, Message::MC_PAGE_NUMBER) << "processing page " << pageno;
if (pageno != (unsigned)c[0]) // Does page number shown on page differ from physical page number?
Message::mstream(false) << " [" << c[0] << ']';
Message::mstream().indent(1);
- _svg.appendToDoc(new XMLCommentNode(" This file was generated by dvisvgm " VERSION " "));
+ _svg.appendToDoc(new XMLCommentNode(" This file was generated by dvisvgm " + string(PROGRAM_VERSION) + " "));
}
}
@@ -261,12 +269,11 @@ void DVIToSVG::getPageTransformation(Matrix &matrix) const {
}
-static void collect_chars (map<const Font*, set<int> > &fm) {
- typedef const map<const Font*, set<int> > UsedCharsMap;
- FORALL(fm, UsedCharsMap::const_iterator, it) {
- if (it->first->uniqueFont() != it->first) {
- FORALL(it->second, set<int>::const_iterator, cit)
- fm[it->first->uniqueFont()].insert(*cit);
+static void collect_chars (map<const Font*, set<int>> &fontmap) {
+ for (const auto &entry : fontmap) {
+ if (entry.first->uniqueFont() != entry.first) {
+ for (int c : entry.second)
+ fontmap[entry.first->uniqueFont()].insert(c);
}
}
}
@@ -280,16 +287,15 @@ void DVIToSVG::embedFonts (XMLElementNode *svgElement) {
if (!_actions) // no dvi actions => no chars written => no fonts to embed
return;
- typedef map<const Font*, set<int> > UsedCharsMap;
const DVIToSVGActions *svgActions = static_cast<DVIToSVGActions*>(_actions);
- UsedCharsMap &usedChars = svgActions->getUsedChars();
+ map<const Font*,set<int>> &usedCharsMap = svgActions->getUsedChars();
- collect_chars(usedChars);
+ collect_chars(usedCharsMap);
GlyphTracerMessages messages;
set<const Font*> tracedFonts; // collect unique fonts already traced
- FORALL(usedChars, UsedCharsMap::const_iterator, it) {
- const Font *font = it->first;
+ for (const auto &fontchar : usedCharsMap) {
+ const Font *font = fontchar.first;
if (const PhysicalFont *ph_font = dynamic_cast<const PhysicalFont*>(font)) {
// Check if glyphs should be traced. Only trace the glyphs of unique fonts, i.e.
// avoid retracing the same glyphs again if they are referenced in various sizes.
@@ -298,7 +304,7 @@ void DVIToSVG::embedFonts (XMLElementNode *svgElement) {
tracedFonts.insert(ph_font->uniqueFont());
}
if (font->path()) // does font file exist?
- _svg.append(*ph_font, it->second, &messages);
+ _svg.append(*ph_font, fontchar.second, &messages);
else
Message::wstream(true) << "can't embed font '" << font->name() << "'\n";
}
@@ -367,10 +373,10 @@ string DVIToSVG::getSVGFilename (unsigned pageno) const {
void DVIToSVG::moveRight (double dx) {
DVIReader::moveRight(dx);
if (_actions) {
- if (currState().d == WMODE_LR)
- _actions->moveToX(currState().h+_tx);
+ if (dviState().d == WritingMode::LR)
+ _actions->moveToX(dviState().h+_tx);
else
- _actions->moveToY(currState().v+_ty);
+ _actions->moveToY(dviState().v+_ty);
}
}
@@ -378,21 +384,21 @@ void DVIToSVG::moveRight (double dx) {
void DVIToSVG::moveDown (double dy) {
DVIReader::moveDown(dy);
if (_actions) {
- if (currState().d == WMODE_LR)
- _actions->moveToY(currState().v+_ty);
+ if (dviState().d == WritingMode::LR)
+ _actions->moveToY(dviState().v+_ty);
else
- _actions->moveToX(currState().h+_tx);
+ _actions->moveToX(dviState().h+_tx);
}
}
-void DVIToSVG::dviPost (UInt16, UInt16 pages, UInt32 pw, UInt32 ph, UInt32, UInt32, UInt32, UInt32) {
+void DVIToSVG::dviPost (uint16_t, uint16_t pages, uint32_t pw, uint32_t ph, uint32_t, uint32_t, uint32_t, uint32_t) {
_pageHeight = ph; // height of tallest page in dvi units
_pageWidth = pw; // width of widest page in dvi units
}
-void DVIToSVG::dviBop (const std::vector<Int32> &c, Int32) {
+void DVIToSVG::dviBop (const std::vector<int32_t> &c, int32_t) {
_pageByte = 0;
enterBeginPage(currentPageNumber(), c);
if (_actions) {
@@ -412,25 +418,25 @@ void DVIToSVG::dviEop () {
}
-void DVIToSVG::dviSetChar0 (UInt32 c, const Font *font) {
+void DVIToSVG::dviSetChar0 (uint32_t c, const Font *font) {
if (_actions && !dynamic_cast<const VirtualFont*>(font))
- _actions->setChar(prevState().h+_tx, prevState().v+_ty, c, prevState().d != WMODE_LR, *font);
+ _actions->setChar(dviState().h+_tx, dviState().v+_ty, c, dviState().d != WritingMode::LR, *font);
}
-void DVIToSVG::dviSetChar (UInt32 c, const Font *font) {
+void DVIToSVG::dviSetChar (uint32_t c, const Font *font) {
dviSetChar0(c, font);
}
-void DVIToSVG::dviPutChar (UInt32 c, const Font *font) {
+void DVIToSVG::dviPutChar (uint32_t c, const Font *font) {
dviSetChar0(c, font);
}
void DVIToSVG::dviSetRule (double height, double width) {
if (_actions && height > 0 && width > 0)
- _actions->setRule(currState().h+_tx, currState().v+_ty, height, width);
+ _actions->setRule(dviState().h+_tx, dviState().v+_ty, height, width);
}
@@ -441,17 +447,17 @@ void DVIToSVG::dviPutRule (double height, double width) {
void DVIToSVG::dviPop () {
if (_actions) {
- if (prevState().h != currState().h)
- _actions->moveToX(currState().h + _tx);
- if (prevState().v != currState().v)
- _actions->moveToY(currState().v + _ty);
- if (prevState().d != currState().d)
- _actions->setTextOrientation(currState().d != WMODE_LR);
+ if (_prevXPos != dviState().h+_tx)
+ _actions->moveToX(dviState().h + _tx);
+ if (_prevYPos != dviState().v+_ty)
+ _actions->moveToY(dviState().v + _ty);
+ if (_prevWritingMode != dviState().d)
+ _actions->setTextOrientation(dviState().d != WritingMode::LR);
}
}
-void DVIToSVG::dviFontNum (UInt32 fontnum, SetFontMode, const Font *font) {
+void DVIToSVG::dviFontNum (uint32_t fontnum, SetFontMode, const Font *font) {
if (_actions && font && !dynamic_cast<const VirtualFont*>(font))
_actions->setFont(FontManager::instance().fontID(fontnum), *font); // all fonts get a recomputed ID
}
@@ -459,7 +465,7 @@ void DVIToSVG::dviFontNum (UInt32 fontnum, SetFontMode, const Font *font) {
void DVIToSVG::dviDir (WritingMode dir) {
if (_actions)
- _actions->setTextOrientation(dir != WMODE_LR);
+ _actions->setTextOrientation(dir != WritingMode::LR);
}
@@ -469,24 +475,22 @@ void DVIToSVG::dviXXX (const std::string &str) {
}
-void DVIToSVG::dviXGlyphArray (std::vector<double> &dx, vector<double> &dy, vector<UInt16> &glyphs, const Font &font) {
+void DVIToSVG::dviXGlyphArray (std::vector<double> &dx, vector<double> &dy, vector<uint16_t> &glyphs, const Font &font) {
if (_actions) {
for (size_t i=0; i < glyphs.size(); i++)
- _actions->setChar(prevState().h+dx[i]+_tx, prevState().v+dy[i]+_ty, glyphs[i], false, font);
+ _actions->setChar(dviState().h+dx[i]+_tx, dviState().v+dy[i]+_ty, glyphs[i], false, font);
}
}
-void DVIToSVG::dviXGlyphString (vector<double> &dx, vector<UInt16> &glyphs, const Font &font) {
+void DVIToSVG::dviXGlyphString (vector<double> &dx, vector<uint16_t> &glyphs, const Font &font) {
if (_actions) {
for (size_t i=0; i < glyphs.size(); i++)
- _actions->setChar(prevState().h+dx[i]+_tx, prevState().v+_ty, glyphs[i], false, font);
+ _actions->setChar(dviState().h+dx[i]+_tx, dviState().v+_ty, glyphs[i], false, font);
}
}
-void DVIToSVG::dviXTextAndGlyphs (vector<double> &dx, vector<double> &dy, vector<UInt16>&, vector<UInt16> &glyphs, const Font &font) {
+void DVIToSVG::dviXTextAndGlyphs (vector<double> &dx, vector<double> &dy, vector<uint16_t>&, vector<uint16_t> &glyphs, const Font &font) {
dviXGlyphArray(dx, dy, glyphs, font);
}
-
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.hpp
index 623056ae0ea..6e1aafd699e 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** DVIToSVG.h **
+** DVIToSVG.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,13 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_DVITOSVG_H
-#define DVISVGM_DVITOSVG_H
+#ifndef DVITOSVG_HPP
+#define DVITOSVG_HPP
#include <string>
#include <utility>
-#include "DVIReader.h"
-#include "SVGTree.h"
+#include "DVIReader.hpp"
+#include "SVGTree.hpp"
struct DVIActions;
class Matrix;
@@ -38,12 +38,12 @@ class DVIToSVG : public DVIReader
void convert (const std::string &range, std::pair<int,int> *pageinfo=0);
void setPageSize (const std::string &format) {_bboxFormatString = format;}
void setPageTransformation (const std::string &cmds) {_transCmds = cmds;}
- void getPageTransformation (Matrix &matrix) const;
- void translateToX (double x) {_tx = x-currState().h-_tx;}
- void translateToY (double y) {_ty = y-currState().v-_ty;}
- double getXPos() const {return currState().h+_tx;}
- double getYPos() const {return currState().v+_ty;}
- void finishLine () {_prevYPos = std::numeric_limits<double>::min();}
+ void getPageTransformation (Matrix &matrix) const override;
+ void translateToX (double x) override {_tx = x-dviState().h-_tx;}
+ void translateToY (double y) override {_ty = y-dviState().v-_ty;}
+ double getXPos() const override {return dviState().h+_tx;}
+ double getYPos() const override {return dviState().v+_ty;}
+ void finishLine () override {_prevYPos = std::numeric_limits<double>::min();}
std::string getSVGFilename (unsigned pageno) const;
std::string getUserBBoxString () const {return _bboxFormatString;}
@@ -56,28 +56,28 @@ class DVIToSVG : public DVIReader
protected:
DVIToSVG (const DVIToSVG&);
void convert (unsigned firstPage, unsigned lastPage, std::pair<int,int> *pageinfo=0);
- int executeCommand ();
- void enterBeginPage (unsigned pageno, const std::vector<Int32> &c);
+ int executeCommand () override;
+ void enterBeginPage (unsigned pageno, const std::vector<int32_t> &c);
void leaveEndPage (unsigned pageno);
void embedFonts (XMLElementNode *svgElement);
- void moveRight (double dx);
- void moveDown (double dy);
+ void moveRight (double dx) override;
+ void moveDown (double dy) override;
- void dviPost (UInt16 stdepth, UInt16 pages, UInt32 pw, UInt32 ph, UInt32 mag, UInt32 num, UInt32 den, UInt32 lbopofs);
- void dviBop (const std::vector<Int32> &c, Int32 prevBopOffset);
- void dviEop ();
- void dviSetChar0 (UInt32 c, const Font *font);
- void dviSetChar (UInt32 c, const Font *font);
- void dviPutChar (UInt32 c, const Font *font);
- void dviSetRule (double h, double w);
- void dviPutRule (double h, double w);
- void dviPop ();
- void dviFontNum (UInt32 fontnum, SetFontMode mode, const Font *font);
- void dviDir (WritingMode dir);
- void dviXXX (const std::string &str);
- void dviXGlyphArray (std::vector<double> &dx, std::vector<double> &dy, std::vector<UInt16> &glyphs, const Font &font);
- void dviXGlyphString (std::vector<double> &dx, std::vector<UInt16> &glyphs, const Font &font);
- void dviXTextAndGlyphs (std::vector<double> &dx, std::vector<double> &dy, std::vector<UInt16> &chars, std::vector<UInt16> &glyphs, const Font &font);
+ void dviPost (uint16_t stdepth, uint16_t pages, uint32_t pw, uint32_t ph, uint32_t mag, uint32_t num, uint32_t den, uint32_t lbopofs) override;
+ void dviBop (const std::vector<int32_t> &c, int32_t prevBopOffset) override;
+ void dviEop () override;
+ void dviSetChar0 (uint32_t c, const Font *font) override;
+ void dviSetChar (uint32_t c, const Font *font) override;
+ void dviPutChar (uint32_t c, const Font *font) override;
+ void dviSetRule (double h, double w) override;
+ void dviPutRule (double h, double w) override;
+ void dviPop () override;
+ void dviFontNum (uint32_t fontnum, SetFontMode mode, const Font *font) override;
+ void dviDir (WritingMode dir) override;
+ void dviXXX (const std::string &str) override;
+ void dviXGlyphArray (std::vector<double> &dx, std::vector<double> &dy, std::vector<uint16_t> &glyphs, const Font &font) override;
+ void dviXGlyphString (std::vector<double> &dx, std::vector<uint16_t> &glyphs, const Font &font) override;
+ void dviXTextAndGlyphs (std::vector<double> &dx, std::vector<double> &dy, std::vector<uint16_t> &chars, std::vector<uint16_t> &glyphs, const Font &font) override;
private:
SVGTree _svg;
@@ -87,7 +87,8 @@ class DVIToSVG : public DVIReader
std::string _transCmds; ///< page transformation commands set by the user
double _pageHeight, _pageWidth; ///< global page height and width stored in the postamble
double _tx, _ty; ///< translation of cursor position
- double _prevYPos; ///< previous vertical cursor position
+ double _prevXPos, _prevYPos; ///< previous cursor position
+ WritingMode _prevWritingMode; ///< previous writing mode
std::streampos _pageByte; ///< position of the stream pointer relative to the preceding bop (in bytes)
};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.cpp
index 2b774ca80d0..c1f35ef0115 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.cpp
@@ -2,7 +2,7 @@
** DVIToSVGActions.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,34 +18,28 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include <config.h>
#include <cstring>
#include <ctime>
-#include "BoundingBox.h"
-#include "DVIToSVG.h"
-#include "DVIToSVGActions.h"
-#include "Font.h"
-#include "FontManager.h"
-#include "GlyphTracerMessages.h"
-#include "System.h"
-
+#include "BoundingBox.hpp"
+#include "DVIToSVG.hpp"
+#include "DVIToSVGActions.hpp"
+#include "Font.hpp"
+#include "FontManager.hpp"
+#include "GlyphTracerMessages.hpp"
+#include "System.hpp"
+#include "utility.hpp"
using namespace std;
DVIToSVGActions::DVIToSVGActions (DVIToSVG &dvisvg, SVGTree &svg)
- : _svg(svg), _dvireader(&dvisvg), _bgcolor(Color::TRANSPARENT), _boxes(0)
+ : _svg(svg), _dvireader(&dvisvg), _bgcolor(Color::TRANSPARENT)
{
_currentFontNum = -1;
_pageCount = 0;
}
-DVIToSVGActions::~DVIToSVGActions () {
- delete _boxes;
-}
-
-
void DVIToSVGActions::reset() {
_usedChars.clear();
_usedFonts.clear();
@@ -215,12 +209,11 @@ void DVIToSVGActions::special (const string &spc, double dvi2bp, bool preprocess
* @param[in] pageno physical page number
* @param[in] c array with 10 components representing \\count0 ... \\count9. c[0] contains the
* current (printed) page number (may differ from page count) */
-void DVIToSVGActions::beginPage (unsigned pageno, const vector<Int32>&) {
+void DVIToSVGActions::beginPage (unsigned pageno, const vector<int32_t>&) {
SpecialManager::instance().notifyBeginPage(pageno, *this);
_svg.newPage(++_pageCount);
_bbox = BoundingBox(); // clear bounding box
- if (_boxes)
- _boxes->clear();
+ _boxes.clear();
}
@@ -248,12 +241,10 @@ void DVIToSVGActions::setBgColor (const Color &color) {
}
-void DVIToSVGActions::embed(const BoundingBox& bbox) {
+void DVIToSVGActions::embed(const BoundingBox &bbox) {
_bbox.embed(bbox);
- if (_boxes) {
- FORALL(*_boxes, BoxMap::iterator, it)
- it->second.embed(bbox);
- }
+ for (auto &strboxpair : _boxes)
+ strboxpair.second.embed(bbox);
}
@@ -262,16 +253,13 @@ void DVIToSVGActions::embed(const DPair& p, double r) {
_bbox.embed(p);
else
_bbox.embed(p, r);
- if (_boxes)
- FORALL(*_boxes, BoxMap::iterator, it)
- it->second.embed(p, r);
+ for (auto &strboxpair : _boxes)
+ strboxpair.second.embed(p, r);
}
BoundingBox& DVIToSVGActions::bbox(const string& name, bool reset) {
- if (!_boxes)
- _boxes = new BoxMap;
- BoundingBox &box = (*_boxes)[name];
+ BoundingBox &box = _boxes[name];
if (reset)
box = BoundingBox();
return box;
@@ -299,8 +287,8 @@ static int digits (int n) {
if (n == 0)
return 1;
if (n > 0)
- return int(log10(double(n))+1);
- return int(log10(double(-n))+2);
+ return util::ilog10(n)+1;
+ return util::ilog10(-n)+2;
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.h
deleted file mode 100644
index fb2ca03f29b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*************************************************************************
-** DVIToSVGActions.h **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program 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 General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_DVITOSVGACTIONS_H
-#define DVISVGM_DVITOSVGACTIONS_H
-
-#include <map>
-#include <set>
-#include "BoundingBox.h"
-#include "DVIActions.h"
-#include "Matrix.h"
-#include "SpecialActions.h"
-#include "SpecialManager.h"
-#include "SVGTree.h"
-
-
-class DVIToSVG;
-struct FileFinder;
-class Font;
-class XMLNode;
-
-class DVIToSVGActions : public DVIActions, public SpecialActions
-{
- typedef std::map<const Font*, std::set<int> > CharMap;
- typedef std::set<const Font*> FontSet;
- typedef std::map<std::string,BoundingBox> BoxMap;
-
- public:
- DVIToSVGActions (DVIToSVG &dvisvg, SVGTree &svg);
- ~DVIToSVGActions ();
- void reset ();
- void setChar (double x, double y, unsigned c, bool vertical, const Font &f);
- void setRule (double x, double y, double height, double width);
- void setBgColor (const Color &color);
- void setColor (const Color &color) {_svg.setColor(color);}
- void setMatrix (const Matrix &m) {_svg.setMatrix(m);}
- const Matrix& getMatrix () const {return _svg.getMatrix();}
- void getPageTransform (Matrix &matrix) const {_dvireader->getPageTransformation(matrix);}
- Color getColor () const {return _svg.getColor();}
- int getDVIStackDepth() const {return _dvireader->stackDepth();}
- unsigned getCurrentPageNumber() const {return _dvireader->currentPageNumber();}
- void appendToPage (XMLNode *node) {_svg.appendToPage(node);}
- void appendToDefs (XMLNode *node) {_svg.appendToDefs(node);}
- void prependToPage (XMLNode *node) {_svg.prependToPage(node);}
- void pushContextElement (XMLElementNode *node) {_svg.pushContextElement(node);}
- void popContextElement () {_svg.popContextElement();}
- void setTextOrientation(bool vertical) {_svg.setVertical(vertical);}
- void moveToX (double x);
- void moveToY (double y);
- void setFont (int num, const Font &font);
- void special (const std::string &spc, double dvi2bp, bool preprocessing=false);
- void beginPage (unsigned pageno, const std::vector<Int32> &c);
- void endPage (unsigned pageno);
- void progress (size_t current, size_t total, const char *id=0);
- void progress (const char *id);
- CharMap& getUsedChars () const {return _usedChars;}
- const FontSet& getUsedFonts () const {return _usedFonts;}
- void setDVIReader (BasicDVIReader &r) {_dvireader = &r;}
- double getX() const {return _dvireader->getXPos();}
- double getY() const {return _dvireader->getYPos();}
- void setX (double x) {_dvireader->translateToX(x); _svg.setX(x);}
- void setY (double y) {_dvireader->translateToY(y); _svg.setY(y);}
- void finishLine () {_dvireader->finishLine();}
- BoundingBox& bbox () {return _bbox;}
- BoundingBox& bbox (const std::string &name, bool reset=false);
- void embed (const BoundingBox &bbox);
- void embed (const DPair &p, double r=0);
- std::string getSVGFilename (unsigned pageno) const;
- std::string getBBoxFormatString () const;
-
- private:
- SVGTree &_svg;
- BasicDVIReader *_dvireader;
- BoundingBox _bbox;
- int _pageCount;
- int _currentFontNum;
- mutable CharMap _usedChars;
- FontSet _usedFonts;
- Color _bgcolor;
- BoxMap *_boxes;
-};
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.hpp
new file mode 100644
index 00000000000..613315346e1
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVGActions.hpp
@@ -0,0 +1,100 @@
+/*************************************************************************
+** DVIToSVGActions.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef DVITOSVGACTIONS_HPP
+#define DVITOSVGACTIONS_HPP
+
+#include <map>
+#include <set>
+#include "BoundingBox.hpp"
+#include "DVIActions.hpp"
+#include "Matrix.hpp"
+#include "SpecialActions.hpp"
+#include "SpecialManager.hpp"
+#include "SVGTree.hpp"
+
+
+class DVIToSVG;
+class FileFinder;
+class Font;
+class XMLNode;
+
+class DVIToSVGActions : public DVIActions, public SpecialActions
+{
+ typedef std::map<const Font*, std::set<int>> CharMap;
+ typedef std::set<const Font*> FontSet;
+ typedef std::map<std::string,BoundingBox> BoxMap;
+
+ public:
+ DVIToSVGActions (DVIToSVG &dvisvg, SVGTree &svg);
+ void reset ();
+ void setChar (double x, double y, unsigned c, bool vertical, const Font &f) override;
+ void setRule (double x, double y, double height, double width) override;
+ void setBgColor (const Color &color) override;
+ void setColor (const Color &color) override {_svg.setColor(color);}
+ void setMatrix (const Matrix &m) override {_svg.setMatrix(m);}
+ const Matrix& getMatrix () const override {return _svg.getMatrix();}
+ void getPageTransform (Matrix &matrix) const override {_dvireader->getPageTransformation(matrix);}
+ Color getColor () const override {return _svg.getColor();}
+ int getDVIStackDepth() const override {return _dvireader->stackDepth();}
+ unsigned getCurrentPageNumber() const override {return _dvireader->currentPageNumber();}
+ void appendToPage (XMLNode *node) override {_svg.appendToPage(node);}
+ void appendToDefs (XMLNode *node) override {_svg.appendToDefs(node);}
+ void prependToPage (XMLNode *node) override {_svg.prependToPage(node);}
+ void pushContextElement (XMLElementNode *node) override {_svg.pushContextElement(node);}
+ void popContextElement () override {_svg.popContextElement();}
+ void setTextOrientation(bool vertical) override {_svg.setVertical(vertical);}
+ void moveToX (double x) override;
+ void moveToY (double y) override;
+ void setFont (int num, const Font &font) override;
+ void special (const std::string &spc, double dvi2bp, bool preprocessing=false) override;
+ void beginPage (unsigned pageno, const std::vector<int32_t> &c) override;
+ void endPage (unsigned pageno) override;
+ void progress (size_t current, size_t total, const char *id=0) override;
+ void progress (const char *id) override;
+ double getX() const override {return _dvireader->getXPos();}
+ double getY() const override {return _dvireader->getYPos();}
+ void setX (double x) override {_dvireader->translateToX(x); _svg.setX(x);}
+ void setY (double y) override {_dvireader->translateToY(y); _svg.setY(y);}
+ void finishLine () override {_dvireader->finishLine();}
+ BoundingBox& bbox () override {return _bbox;}
+ BoundingBox& bbox (const std::string &name, bool reset=false) override;
+ void embed (const BoundingBox &bbox) override;
+ void embed (const DPair &p, double r=0) override;
+ std::string getSVGFilename (unsigned pageno) const override;
+ std::string getBBoxFormatString () const override;
+ CharMap& getUsedChars () const {return _usedChars;}
+ const FontSet& getUsedFonts () const {return _usedFonts;}
+ void setDVIReader (BasicDVIReader &r) {_dvireader = &r;}
+
+ private:
+ SVGTree &_svg;
+ BasicDVIReader *_dvireader;
+ BoundingBox _bbox;
+ int _pageCount;
+ int _currentFontNum;
+ mutable CharMap _usedChars;
+ FontSet _usedFonts;
+ Color _bgcolor;
+ BoxMap _boxes;
+};
+
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DependencyGraph.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/DependencyGraph.hpp
index b2d35a7152e..52dd46ac17b 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DependencyGraph.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DependencyGraph.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** DependencyGraph.h **
+** DependencyGraph.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,9 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-
-#ifndef DEPENDENCYGRAPH_H
-#define DEPENDENCYGRAPH_H
+#ifndef DEPENDENCYGRAPH_HPP
+#define DEPENDENCYGRAPH_HPP
#include <map>
#include <vector>
@@ -30,7 +29,6 @@ class DependencyGraph
{
struct GraphNode {
typedef typename std::vector<GraphNode*> Dependees;
- typedef typename Dependees::iterator Iterator;
GraphNode (const T &k) : key(k), dependent(0) {}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.cpp
index 6bb48bb343f..9dbfd0877fc 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.cpp
@@ -2,7 +2,7 @@
** Directory.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,7 +19,7 @@
*************************************************************************/
#include <config.h>
-#include "Directory.h"
+#include "Directory.hpp"
using namespace std;
@@ -33,9 +33,9 @@ using namespace std;
Directory::Directory () {
#if _WIN32
- handle = INVALID_HANDLE_VALUE;
- firstread = true;
- memset(&fileData, 0, sizeof(WIN32_FIND_DATA));
+ _handle = INVALID_HANDLE_VALUE;
+ _firstread = true;
+ memset(&_fileData, 0, sizeof(WIN32_FIND_DATA));
#else
_dir = 0;
_dirent = 0;
@@ -43,11 +43,11 @@ Directory::Directory () {
}
-Directory::Directory (string dirname) {
+Directory::Directory (const string &dirname) {
#if _WIN32
- handle = INVALID_HANDLE_VALUE;
- firstread = true;
- memset(&fileData, 0, sizeof(WIN32_FIND_DATA));
+ _handle = INVALID_HANDLE_VALUE;
+ _firstread = true;
+ memset(&_fileData, 0, sizeof(WIN32_FIND_DATA));
#else
_dir = 0;
_dirent = 0;
@@ -61,15 +61,15 @@ Directory::~Directory () {
}
-bool Directory::open (string dname) {
- _dirname = dname;
+bool Directory::open (string dirname) {
+ _dirname = dirname;
#ifdef _WIN32
- firstread = true;
- if (dname[dname.length()-1] == '/' || dname[dname.length()-1] == '\\')
- dname = dname.substr(0, dname.length()-1);
- dname += "\\*";
- handle = FindFirstFile(dname.c_str(), &fileData);
- return handle != INVALID_HANDLE_VALUE;
+ _firstread = true;
+ if (dirname[dirname.length()-1] == '/' || dirname[dirname.length()-1] == '\\')
+ dirname = dirname.substr(0, dirname.length()-1);
+ dirname += "\\*";
+ _handle = FindFirstFile(dirname.c_str(), &_fileData);
+ return _handle != INVALID_HANDLE_VALUE;
#else
_dir = opendir(_dirname.c_str());
return bool(_dir);
@@ -79,7 +79,7 @@ bool Directory::open (string dname) {
void Directory::close () {
#ifdef _WIN32
- FindClose(handle);
+ FindClose(_handle);
#else
closedir(_dir);
#endif
@@ -91,19 +91,19 @@ void Directory::close () {
* @return name of entry */
const char* Directory::read (EntryType type) {
#ifdef _WIN32
- if (handle == INVALID_HANDLE_VALUE)
+ if (_handle == INVALID_HANDLE_VALUE)
return 0;
- while (firstread || FindNextFile(handle, &fileData)) {
- firstread = false;
- if (fileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
+ while (_firstread || FindNextFile(_handle, &_fileData)) {
+ _firstread = false;
+ if (_fileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if (type == ET_FILE_OR_DIR || type == ET_DIR)
- return fileData.cFileName;
+ return _fileData.cFileName;
}
else if (type == ET_FILE_OR_DIR || type == ET_FILE)
- return fileData.cFileName;
+ return _fileData.cFileName;
}
- FindClose(handle);
- handle = INVALID_HANDLE_VALUE;
+ FindClose(_handle);
+ _handle = INVALID_HANDLE_VALUE;
return 0;
#else
if (!_dir)
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.hpp
index 0356e4951b4..fa0e2543abb 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Directory.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Directory.h **
+** Directory.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_DIRECTORY_H
-#define DVISVGM_DIRECTORY_H
+#ifndef DIRECTORY_HPP
+#define DIRECTORY_HPP
#include <string>
#ifdef _WIN32
@@ -35,7 +35,7 @@ class Directory
public:
Directory ();
- Directory (std::string path);
+ Directory (const std::string &path);
~Directory ();
bool open (std::string path);
void close ();
@@ -44,9 +44,9 @@ class Directory
private:
std::string _dirname;
#ifdef _WIN32
- bool firstread;
- HANDLE handle;
- WIN32_FIND_DATA fileData;
+ bool _firstread;
+ HANDLE _handle;
+ WIN32_FIND_DATA _fileData;
#else
DIR *_dir;
struct dirent *_dirent;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp
index 34efddfac4e..ad09f800d7e 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp
@@ -2,7 +2,7 @@
** DvisvgmSpecialHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,13 +21,13 @@
#include <config.h>
#include <cstring>
#include <utility>
-#include "DvisvgmSpecialHandler.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "Length.h"
-#include "SpecialActions.h"
-#include "XMLNode.h"
-#include "XMLString.h"
+#include "DvisvgmSpecialHandler.hpp"
+#include "InputBuffer.hpp"
+#include "InputReader.hpp"
+#include "Length.hpp"
+#include "SpecialActions.hpp"
+#include "XMLNode.hpp"
+#include "XMLString.hpp"
using namespace std;
@@ -76,7 +76,7 @@ void DvisvgmSpecialHandler::preprocessRawSet (InputReader &ir) {
throw SpecialException("redefinition of SVG fragment '" + id + "'");
}
pair<string, StringVector> entry(id, StringVector());
- pair<MacroMap::iterator, bool> state = _macros.insert(entry);
+ pair<MacroMap::iterator, bool> state = _macros.emplace(move(entry));
_currentMacro = state.first;
}
@@ -92,7 +92,7 @@ void DvisvgmSpecialHandler::preprocessRaw (InputReader &ir) {
return;
string str = ir.getLine();
if (!str.empty())
- _currentMacro->second.push_back(string("P")+str);
+ _currentMacro->second.emplace_back(string("P")+str);
}
@@ -101,7 +101,7 @@ void DvisvgmSpecialHandler::preprocessRawDef (InputReader &ir) {
return;
string str = ir.getLine();
if (!str.empty())
- _currentMacro->second.push_back(string("D")+str);
+ _currentMacro->second.emplace_back(string("D")+str);
}
@@ -225,10 +225,10 @@ void DvisvgmSpecialHandler::processRawPut (InputReader &ir, SpecialActions &acti
if (it == _macros.end())
throw SpecialException("undefined SVG fragment '" + id + "' referenced");
- StringVector &defs = it->second;
- for (StringVector::iterator defs_it=defs.begin(); defs_it != defs.end(); ++defs_it) {
- char &type = defs_it->at(0);
- string def = defs_it->substr(1);
+ StringVector &defvector = it->second;
+ for (string &defstr : defvector) {
+ char &type = defstr[0];
+ string def = defstr.substr(1);
if ((type == 'P' || type == 'D') && !def.empty()) {
expand_constants(def, actions);
if (type == 'P')
@@ -331,12 +331,12 @@ void DvisvgmSpecialHandler::dviPreprocessingFinished () {
void DvisvgmSpecialHandler::dviEndPage (unsigned, SpecialActions&) {
- for (MacroMap::iterator map_it=_macros.begin(); map_it != _macros.end(); ++map_it) {
- StringVector &vec = map_it->second;
- for (StringVector::iterator str_it=vec.begin(); str_it != vec.end(); ++str_it) {
+ for (auto &strvecpair : _macros) {
+ StringVector &vec = strvecpair.second;
+ for (string &str : vec) {
// activate locked parts of a pattern again
- if (str_it->at(0) == 'L')
- str_it->at(0) = 'D';
+ if (str[0] == 'L')
+ str[0] = 'D';
}
}
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.hpp
index d02f6057eb7..5282f546bc1 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** DvisvgmSpecialHandler.h **
+** DvisvgmSpecialHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,13 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_DVISVGMSPECIALHANDLER_H
-#define DVISVGM_DVISVGMSPECIALHANDLER_H
+#ifndef DVISVGMSPECIALHANDLER_HPP
+#define DVISVGMSPECIALHANDLER_HPP
#include <map>
#include <string>
#include <vector>
-#include "SpecialHandler.h"
+#include "SpecialHandler.hpp"
class InputReader;
class SpecialActions;
@@ -36,11 +36,11 @@ class DvisvgmSpecialHandler : public SpecialHandler, public DVIPreprocessingList
public:
DvisvgmSpecialHandler ();
- const char* name () const {return "dvisvgm";}
- const char* info () const {return "special set for embedding raw SVG snippets";}
- const char** prefixes () const;
- void preprocess (const char *prefix, std::istream &is, SpecialActions &actions);
- bool process (const char *prefix, std::istream &is, SpecialActions &actions);
+ const char* name () const override {return "dvisvgm";}
+ const char* info () const override {return "special set for embedding raw SVG snippets";}
+ const char** prefixes () const override;
+ void preprocess (const char *prefix, std::istream &is, SpecialActions &actions) override;
+ bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
protected:
void preprocessRaw (InputReader &ir);
@@ -55,8 +55,8 @@ class DvisvgmSpecialHandler : public SpecialHandler, public DVIPreprocessingList
void processRawPut (InputReader &ir, SpecialActions &actions);
void processBBox (InputReader &ir, SpecialActions &actions);
void processImg (InputReader &ir, SpecialActions &actions);
- void dviPreprocessingFinished ();
- void dviEndPage (unsigned pageno, SpecialActions &actions);
+ void dviPreprocessingFinished () override;
+ void dviEndPage (unsigned pageno, SpecialActions &actions) override;
private:
MacroMap _macros;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.cpp
index a4a9af21457..516590e84aa 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.cpp
@@ -2,7 +2,7 @@
** EPSFile.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -22,16 +22,16 @@
#include <cstring>
#include <istream>
#include <limits>
-#include "EPSFile.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
+#include "EPSFile.hpp"
+#include "InputBuffer.hpp"
+#include "InputReader.hpp"
using namespace std;
/** Reads a little-endian 32-bit integer from the given input stream. */
-static UInt32 getUInt32 (istream &is) {
- UInt32 value=0;
+static uint32_t getUInt32 (istream &is) {
+ uint32_t value=0;
char buf[4];
is.read(buf, 4);
for (int i=0; i < 4; i++)
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.hpp
index f330bde7a08..b4139090d13 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** EPSFile.h **
+** EPSFile.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,12 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_EPSFILE_H
-#define DVISVGM_EPSFILE_H
+#ifndef EPSFILE_HPP
+#define EPSFILE_HPP
#include <fstream>
#include <string>
-#include "BoundingBox.h"
-#include "types.h"
+#include "BoundingBox.hpp"
class EPSFile
{
@@ -33,14 +32,13 @@ class EPSFile
std::istream& istream () const;
bool hasValidHeader () const {return _headerValid;}
bool bbox (BoundingBox &box) const;
- UInt32 pslength () const {return _pslength;}
+ uint32_t pslength () const {return _pslength;}
private:
mutable std::ifstream _ifs;
- bool _headerValid; ///< true if file has a valid header
- UInt32 _offset; ///< stream offset where ASCII part of the file begins
- UInt32 _pslength; ///< length of PS section (in bytes)
+ bool _headerValid; ///< true if file has a valid header
+ uint32_t _offset; ///< stream offset where ASCII part of the file begins
+ uint32_t _pslength; ///< length of PS section (in bytes)
};
#endif
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.cpp
index 0fb638b6667..ec50c21c487 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.cpp
@@ -2,7 +2,7 @@
** EPSToSVG.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,17 +18,16 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include <config.h>
#include <fstream>
#include <sstream>
-#include "EPSFile.h"
-#include "EPSToSVG.h"
-#include "Message.h"
-#include "MessageException.h"
-#include "PsSpecialHandler.h"
-#include "SVGOutput.h"
-#include "System.h"
-
+#include "EPSFile.hpp"
+#include "EPSToSVG.hpp"
+#include "Message.hpp"
+#include "MessageException.hpp"
+#include "PsSpecialHandler.hpp"
+#include "SVGOutput.hpp"
+#include "System.hpp"
+#include "version.hpp"
using namespace std;
@@ -67,16 +66,22 @@ void EPSToSVG::convert () {
progress(0);
// output SVG file
_svg.setBBox(_bbox);
- _svg.appendToDoc(new XMLCommentNode(" This file was generated by dvisvgm " VERSION " "));
- _svg.write(_out.getPageStream(1, 1));
+ _svg.appendToDoc(new XMLCommentNode(" This file was generated by dvisvgm " + string(PROGRAM_VERSION) + " "));
+ bool success = _svg.write(_out.getPageStream(1, 1));
string svgfname = _out.filename(1, 1);
- const double bp2pt = 72.27/72;
- const double bp2mm = 25.4/72;
- Message::mstream(false, Message::MC_PAGE_SIZE) << "graphic size: " << XMLString(bbox.width()*bp2pt) << "pt"
- " x " << XMLString(bbox.height()*bp2pt) << "pt"
- " (" << XMLString(bbox.width()*bp2mm) << "mm"
- " x " << XMLString(bbox.height()*bp2mm) << "mm)\n";
- Message::mstream(false, Message::MC_PAGE_WRITTEN) << "output written to " << (svgfname.empty() ? "<stdout>" : svgfname) << '\n';
+ if (svgfname.empty())
+ svgfname = "<stdout>";
+ if (!success)
+ Message::wstream() << "failed to write output to " << svgfname << '\n';
+ else {
+ const double bp2pt = 72.27/72;
+ const double bp2mm = 25.4/72;
+ Message::mstream(false, Message::MC_PAGE_SIZE) << "graphic size: " << XMLString(bbox.width()*bp2pt) << "pt"
+ " x " << XMLString(bbox.height()*bp2pt) << "pt"
+ " (" << XMLString(bbox.width()*bp2mm) << "mm"
+ " x " << XMLString(bbox.height()*bp2mm) << "mm)\n";
+ Message::mstream(false, Message::MC_PAGE_WRITTEN) << "output written to " << svgfname << '\n';
+ }
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.h
deleted file mode 100644
index 5d24edd2a56..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*************************************************************************
-** EPSToSVG.h **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program 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 General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_EPSTOSVG_H
-#define DVISVGM_EPSTOSVG_H
-
-#include <string>
-#include "SpecialActions.h"
-#include "SVGTree.h"
-
-struct SVGOutputBase;
-
-class EPSToSVG : protected SpecialActions
-{
- public:
- EPSToSVG (const std::string &fname, SVGOutputBase &out) : _fname(fname), _out(out), _x(0), _y(0) {}
- void convert ();
- void setTransformation (const Matrix &m);
- void setPageSize (const std::string &name);
-
- protected:
- // implement abstract base class SpecialActions
- double getX () const {return _x;}
- double getY () const {return _y;}
- void setX (double x) {_x = x; _svg.setX(x);}
- void setY (double y) {_y = y; _svg.setY(y);}
- void finishLine () {}
- void setColor (const Color &color) {_svg.setColor(color);}
- Color getColor () const {return _svg.getColor();}
- void setMatrix (const Matrix &m) {_svg.setMatrix(m);}
- const Matrix& getMatrix () const {return _svg.getMatrix();}
- void getPageTransform (Matrix &matrix) const {}
- void setBgColor (const Color &color) {}
- void appendToPage (XMLNode *node) {_svg.appendToPage(node);}
- void appendToDefs (XMLNode *node) {_svg.appendToDefs(node);}
- void prependToPage (XMLNode *node) {_svg.prependToPage(node);}
- void pushContextElement (XMLElementNode *node) {_svg.pushContextElement(node);}
- void popContextElement () {_svg.popContextElement();}
- void embed (const BoundingBox &bbox) {_bbox.embed(bbox);}
- void embed (const DPair &p, double r=0) {if (r==0) _bbox.embed(p); else _bbox.embed(p, r);}
- void progress (const char *id);
- unsigned getCurrentPageNumber() const {return 0;}
- BoundingBox& bbox () {return _bbox;}
- BoundingBox& bbox (const std::string &name, bool reset=false) {return _bbox;}
- std::string getSVGFilename (unsigned pageno) const;
- std::string getBBoxFormatString () const {return "";}
-
- private:
- std::string _fname; ///< name of EPS file
- SVGTree _svg;
- SVGOutputBase &_out;
- double _x, _y;
- BoundingBox _bbox;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.hpp
new file mode 100644
index 00000000000..5d3172d2911
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.hpp
@@ -0,0 +1,73 @@
+/*************************************************************************
+** EPSToSVG.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef EPSTOSVG_HPP
+#define EPSTOSVG_HPP
+
+#include <string>
+#include "SpecialActions.hpp"
+#include "SVGTree.hpp"
+
+struct SVGOutputBase;
+
+class EPSToSVG : protected SpecialActions
+{
+ public:
+ EPSToSVG (const std::string &fname, SVGOutputBase &out) : _fname(fname), _out(out), _x(0), _y(0) {}
+ void convert ();
+ void setTransformation (const Matrix &m);
+ void setPageSize (const std::string &name);
+
+ protected:
+ // implement abstract base class SpecialActions
+ double getX () const override {return _x;}
+ double getY () const override {return _y;}
+ void setX (double x) override {_x = x; _svg.setX(x);}
+ void setY (double y) override {_y = y; _svg.setY(y);}
+ void finishLine () override {}
+ void setColor (const Color &color) override {_svg.setColor(color);}
+ Color getColor () const override {return _svg.getColor();}
+ void setMatrix (const Matrix &m) override {_svg.setMatrix(m);}
+ const Matrix& getMatrix () const override {return _svg.getMatrix();}
+ void getPageTransform (Matrix &matrix) const override {}
+ void setBgColor (const Color &color) override {}
+ void appendToPage (XMLNode *node) override {_svg.appendToPage(node);}
+ void appendToDefs (XMLNode *node) override {_svg.appendToDefs(node);}
+ void prependToPage (XMLNode *node) override {_svg.prependToPage(node);}
+ void pushContextElement (XMLElementNode *node) override {_svg.pushContextElement(node);}
+ void popContextElement () override {_svg.popContextElement();}
+ void embed (const BoundingBox &bbox) override {_bbox.embed(bbox);}
+ void embed (const DPair &p, double r=0) override {if (r==0) _bbox.embed(p); else _bbox.embed(p, r);}
+ void progress (const char *id) override;
+ unsigned getCurrentPageNumber() const override {return 0;}
+ BoundingBox& bbox () override {return _bbox;}
+ BoundingBox& bbox (const std::string &name, bool reset=false) override {return _bbox;}
+ std::string getSVGFilename (unsigned pageno) const override;
+ std::string getBBoxFormatString () const override {return "";}
+
+ private:
+ std::string _fname; ///< name of EPS file
+ SVGTree _svg;
+ SVGOutputBase &_out;
+ double _x, _y;
+ BoundingBox _bbox;
+};
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.cpp
index bdd4b12670a..d7fc27bce98 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.cpp
@@ -2,7 +2,7 @@
** EmSpecialHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,13 +20,13 @@
#include <config.h>
#include <sstream>
-#include "EmSpecialHandler.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "Length.h"
-#include "SpecialActions.h"
-#include "XMLNode.h"
-#include "XMLString.h"
+#include "EmSpecialHandler.hpp"
+#include "InputBuffer.hpp"
+#include "InputReader.hpp"
+#include "Length.hpp"
+#include "SpecialActions.hpp"
+#include "XMLNode.hpp"
+#include "XMLString.hpp"
using namespace std;
@@ -129,7 +129,7 @@ static double read_length (InputReader &in) {
string unitstr;
if (isalpha(in.peek())) unitstr += in.get();
if (isalpha(in.peek())) unitstr += in.get();
- Length::Unit unit = Length::PT;
+ Length::Unit unit = Length::Unit::PT;
try {
unit = Length::stringToUnit(unitstr);
}
@@ -238,7 +238,7 @@ void EmSpecialHandler::line (InputReader &ir, SpecialActions& actions) {
// Line endpoints don't necessarily have to be defined before
// a line definition. If a point isn't defined yet, we put the line
// in a wait list and process the lines at the end of the page.
- _lines.push_back(Line(pointnum1, pointnum2, char(cut1), char(cut2), linewidth));
+ _lines.emplace_back(Line(pointnum1, pointnum2, char(cut1), char(cut2), linewidth));
}
}
@@ -246,11 +246,11 @@ void EmSpecialHandler::line (InputReader &ir, SpecialActions& actions) {
/** This method is called at the end of a DVI page. Here we have to draw all pending
* lines that are still in the line list. All line endpoints must be defined until here. */
void EmSpecialHandler::dviEndPage (unsigned pageno, SpecialActions &actions) {
- FORALL(_lines, list<Line>::iterator, it) {
- map<int,DPair>::iterator pit1=_points.find(it->p1);
- map<int,DPair>::iterator pit2=_points.find(it->p2);
+ for (const Line &line : _lines) {
+ auto pit1=_points.find(line.p1);
+ auto pit2=_points.find(line.p2);
if (pit1 != _points.end() && pit2 != _points.end())
- create_line(pit1->second, pit2->second, it->c1, it->c2, it->width, actions);
+ create_line(pit1->second, pit2->second, line.c1, line.c2, line.width, actions);
// all lines with still undefined points are ignored
}
// line and point definitions are local to a page
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp
index 689ea5a39b8..c9febab3425 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** EmSpecialHandler.h **
+** EmSpecialHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,13 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_EMSPECIALHANDLER_H
-#define DVISVGM_EMSPECIALHANDLER_H
+#ifndef EMSPECIALHANDLER_HPP
+#define EMSPECIALHANDLER_HPP
#include <list>
#include <map>
-#include "Pair.h"
-#include "SpecialHandler.h"
+#include "Pair.hpp"
+#include "SpecialHandler.hpp"
class InputReader;
class SpecialActions;
@@ -40,13 +40,13 @@ class EmSpecialHandler : public SpecialHandler, public DVIEndPageListener
public:
EmSpecialHandler ();
- const char* name () const {return "em";}
- const char* info () const {return "line drawing statements of the emTeX special set";}
- const char** prefixes () const;
- bool process (const char *prefix, std::istream &in, SpecialActions &actions);
+ const char* name () const override {return "em";}
+ const char* info () const override {return "line drawing statements of the emTeX special set";}
+ const char** prefixes () const override;
+ bool process (const char *prefix, std::istream &in, SpecialActions &actions) override;
protected:
- void dviEndPage (unsigned pageno, SpecialActions &actions);
+ void dviEndPage (unsigned pageno, SpecialActions &actions) override;
void linewidth (InputReader &ir, SpecialActions &actions);
void moveto (InputReader &ir, SpecialActions &actions);
void lineto (InputReader &ir, SpecialActions &actions);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/EncFile.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/EncFile.cpp
index 705230a016c..2dc2ab8e7d2 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/EncFile.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/EncFile.cpp
@@ -2,7 +2,7 @@
** EncFile.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,12 +20,12 @@
#include <config.h>
#include <fstream>
-#include "Font.h"
-#include "EncFile.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "FileFinder.h"
-#include "Message.h"
+#include "Font.hpp"
+#include "EncFile.hpp"
+#include "InputBuffer.hpp"
+#include "InputReader.hpp"
+#include "FileFinder.hpp"
+#include "Message.hpp"
using namespace std;
@@ -40,7 +40,7 @@ EncFile::EncFile (const string &encname) : _encname(encname)
const char* EncFile::path () const {
- return FileFinder::lookup(_encname+".enc", false);
+ return FileFinder::instance().lookup(_encname+".enc", false);
}
@@ -126,7 +126,7 @@ static bool valid_name_char (int c) {
/** Returns an entry of the encoding table.
* @param[in] c character code
* @return character name assigned to character code c*/
-const char* EncFile::charName (UInt32 c) const {
+const char* EncFile::charName (uint32_t c) const {
if (c < _table.size())
return !_table[c].empty() ? _table[c].c_str() : 0;
return 0;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/EncFile.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/EncFile.hpp
index 30422cd4412..6296104e0b1 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/EncFile.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/EncFile.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** EncFile.h **
+** EncFile.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,15 +18,14 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_ENCFILE_H
-#define DVISVGM_ENCFILE_H
+#ifndef ENCFILE_HPP
+#define ENCFILE_HPP
#include <istream>
#include <map>
#include <string>
#include <vector>
-#include "FontEncoding.h"
-#include "types.h"
+#include "FontEncoding.hpp"
class EncFile : public NamedFontEncoding
@@ -35,12 +34,12 @@ class EncFile : public NamedFontEncoding
EncFile (const std::string &name);
void read ();
void read (std::istream &is);
- int size () const {return _table.size();}
- const char* name () const {return _encname.c_str();}
- const char* charName (UInt32 c) const;
- Character decode (UInt32 c) const {return Character(charName(c));}
- bool mapsToCharIndex () const {return false;}
- const char* path () const;
+ int size () const {return _table.size();}
+ const char* name () const override {return _encname.c_str();}
+ const char* charName (uint32_t c) const;
+ Character decode (uint32_t c) const override {return Character(charName(c));}
+ bool mapsToCharIndex () const override {return false;}
+ const char* path () const override;
private:
std::string _encname;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp
index 8caae75275a..591da5e6fe9 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp
@@ -2,7 +2,7 @@
** FileFinder.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,14 +21,12 @@
#include <config.h>
#ifdef MIKTEX
- #include "MessageException.h"
- #include "MiKTeXCom.h"
- static MiKTeXCom *miktex=0;
+ #include "MiKTeXCom.hpp"
#else
#ifdef KPSE_CXX_UNSAFE
extern "C" {
#endif
- #include <kpathsea/kpathsea.h>
+ #include <kpathsea/kpathsea.h>
#ifdef KPSE_CXX_UNSAFE
}
#endif
@@ -38,40 +36,30 @@
#include <fstream>
#include <map>
#include <set>
-#include "FileFinder.h"
-#include "FileSystem.h"
-#include "FontMap.h"
-#include "Message.h"
-#include "Process.h"
+#include "FileFinder.hpp"
+#include "FileSystem.hpp"
+#include "FontMap.hpp"
+#include "Message.hpp"
+#include "MessageException.hpp"
+#include "Process.hpp"
-// ---------------------------------------------------
+const char *FileFinder::_argv0 = nullptr;
+std::string FileFinder::_progname;
+bool FileFinder::_enableMktex = false;
-static bool _initialized = false;
-static bool _mktex_enabled = false;
-static std::set<std::string> _additional_dirs;
-// ---------------------------------------------------
-
-static const char* find_file (const std::string &fname, const char *ftype);
-static const char* find_mapped_file (std::string fname);
-static const char* mktex (const std::string &fname);
-
-
-/** Initializes the file finder. This function must be called before any other
- * FileFinder function.
+/** Constructs a new file finder.
* @param[in] argv0 argv[0] of main() function
* @param[in] progname name of application using the FileFinder
* @param[in] enable_mktexmf if true, tfm and mf file generation is activated */
-void FileFinder::init (const char *argv0, const char *progname, bool enable_mktexmf) {
- if (_initialized)
- return;
-
- _mktex_enabled = enable_mktexmf;
+FileFinder::FileFinder () {
addLookupDir("."); // always lookup files in the current working directory
#ifdef MIKTEX
- miktex = new MiKTeXCom;
+ _miktex.reset(new MiKTeXCom);
#else
- kpse_set_program_name(argv0, progname);
+ if (_argv0 == nullptr)
+ _argv0 = "";
+ kpse_set_program_name(_argv0, _progname.c_str());
// enable tfm and mf generation (actually invoked by calls of kpse_make_tex)
kpse_set_program_enabled(kpse_tfm_format, 1, kpse_src_env);
kpse_set_program_enabled(kpse_mf_format, 1, kpse_src_env);
@@ -80,41 +68,26 @@ void FileFinder::init (const char *argv0, const char *progname, bool enable_mkte
texlive_gs_init();
#endif
#endif
- _initialized = true;
}
-/** Cleans up the FileFinder. This function must be called before leaving the
- * application's main() function. */
-void FileFinder::finish () {
-#ifdef MIKTEX
- if (miktex) {
- delete miktex;
- miktex = 0;
- }
-#endif
- _initialized = false;
+void FileFinder::init (const char *argv0, const char *progname, bool enable_mktexmf) {
+ _argv0 = argv0;
+ _progname = progname;
+ _enableMktex = enable_mktexmf;
+}
+
+
+FileFinder& FileFinder::instance () {
+ static FileFinder instance;
+ return instance;
}
/** Returns the version string of the underlying file searching library (kpathsea, MiKTeX) */
-std::string FileFinder::version () {
+std::string FileFinder::version () const {
#ifdef MIKTEX
- bool autoinit=false;
- try {
- if (!_initialized) {
- init("", "", false);
- autoinit = true;
- }
- std::string ret = miktex->getVersion();
- if (autoinit)
- finish();
- return ret;
- }
- catch (MessageException &e) {
- if (autoinit)
- finish();
- }
+ return _miktex->getVersion();
#else
if (const char *v = strrchr(KPSEVERSION, ' '))
return (std::string(KPSEVERSION).substr(0, 9) == "kpathsea ") ? v+1 : KPSEVERSION;
@@ -126,7 +99,7 @@ std::string FileFinder::version () {
void FileFinder::addLookupDir (const std::string &path) {
- _additional_dirs.insert(path);
+ _additionalDirs.insert(path);
}
@@ -135,18 +108,18 @@ void FileFinder::addLookupDir (const std::string &path) {
* @param[in] fname name of file to look up
* @param[in] ftype expected file format of file fname; if 0, it's derived from the filename suffix
* @return file path on success, 0 otherwise */
-static const char* find_file (const std::string &fname, const char *ftype) {
- if (!_initialized || fname.empty())
+const char* FileFinder::findFile (const std::string &fname, const char *ftype) const {
+ if (fname.empty())
return 0;
static std::string buf;
// try to lookup the file in the additionally specified directories
- for (std::set<std::string>::iterator it=_additional_dirs.begin(); it != _additional_dirs.end(); ++it) {
- if (it->at(0) == '/')
+ for (const std::string &dir : _additionalDirs) {
+ if (dir[0] == '/')
buf.clear();
else
buf = FileSystem::getcwd()+"/";
- buf += (*it) + "/" + fname;
+ buf += dir + "/" + fname;
if (FileSystem::exists(buf))
return buf.c_str();
}
@@ -164,7 +137,7 @@ static const char* find_file (const std::string &fname, const char *ftype) {
#ifdef MIKTEX
if (ext == "dll" || ext == "exe") {
// lookup dll and exe files in the MiKTeX bin directory first
- buf = miktex->getBinDir() + "/" + fname;
+ buf = _miktex->getBinDir() + "/" + fname;
if (FileSystem::exists(buf))
return buf.c_str();
}
@@ -177,7 +150,7 @@ static const char* find_file (const std::string &fname, const char *ftype) {
return buf.empty() ? 0 : buf.c_str();
}
try {
- return miktex->findFile(fname.c_str());
+ return _miktex->findFile(fname.c_str());
}
catch (const MessageException &e) {
return 0;
@@ -193,23 +166,22 @@ static const char* find_file (const std::string &fname, const char *ftype) {
return 0;
}
#endif
- static std::map<std::string, kpse_file_format_type> types;
- if (types.empty()) {
- types["tfm"] = kpse_tfm_format;
- types["pfb"] = kpse_type1_format;
- types["vf"] = kpse_vf_format;
- types["mf"] = kpse_mf_format;
- types["ttc"] = kpse_truetype_format;
- types["ttf"] = kpse_truetype_format;
- types["otf"] = kpse_opentype_format;
- types["map"] = kpse_fontmap_format;
- types["cmap"] = kpse_cmap_format;
- types["sty"] = kpse_tex_format;
- types["enc"] = kpse_enc_format;
- types["pro"] = kpse_tex_ps_header_format;
- types["sfd"] = kpse_sfd_format;
- }
- std::map<std::string, kpse_file_format_type>::iterator it = types.find(ext.c_str());
+ static std::map<std::string, kpse_file_format_type> types = {
+ {"tfm", kpse_tfm_format},
+ {"pfb", kpse_type1_format},
+ {"vf", kpse_vf_format},
+ {"mf", kpse_mf_format},
+ {"ttc", kpse_truetype_format},
+ {"ttf", kpse_truetype_format},
+ {"otf", kpse_opentype_format},
+ {"map", kpse_fontmap_format},
+ {"cmap", kpse_cmap_format},
+ {"sty", kpse_tex_format},
+ {"enc", kpse_enc_format},
+ {"pro", kpse_tex_ps_header_format},
+ {"sfd", kpse_sfd_format},
+ };
+ auto it = types.find(ext.c_str());
if (it == types.end())
return 0;
@@ -230,7 +202,7 @@ static const char* find_file (const std::string &fname, const char *ftype) {
* file can be found under this name.
* @param[in] fname name of file to look up
* @return file path on success, 0 otherwise */
-static const char* find_mapped_file (std::string fname) {
+const char* FileFinder::findMappedFile (std::string fname) const {
size_t pos = fname.rfind('.');
if (pos == std::string::npos)
return 0;
@@ -239,10 +211,10 @@ static const char* find_mapped_file (std::string fname) {
if (const FontMap::Entry *entry = FontMap::instance().lookup(base)) {
const char *path=0;
if (entry->fontname.find('.') != std::string::npos) // does the mapped filename has an extension?
- path = find_file(entry->fontname, 0); // look for that file
+ path = findFile(entry->fontname, 0); // look for that file
else { // otherwise, use extension of unmapped file
fname = entry->fontname + "." + ext;
- (path = find_file(fname, 0)) || (path = mktex(fname));
+ (path = findFile(fname, 0)) || (path = mktex(fname));
}
return path;
}
@@ -253,12 +225,9 @@ static const char* find_mapped_file (std::string fname) {
/** Runs external mktexFOO tool to create missing tfm or mf file.
* @param[in] fname name of file to build
* @return file path on success, 0 otherwise */
-static const char* mktex (const std::string &fname) {
- if (!_initialized)
- return 0;
-
+const char* FileFinder::mktex (const std::string &fname) const {
size_t pos = fname.rfind('.');
- if (!_mktex_enabled || pos == std::string::npos)
+ if (!_enableMktex || pos == std::string::npos)
return 0;
std::string ext = fname.substr(pos+1); // file extension
@@ -270,7 +239,7 @@ static const char* mktex (const std::string &fname) {
// maketfm and makemf are located in miktex/bin which is in the search PATH
std::string toolname = (ext == "tfm" ? "miktex-maketfm" : "miktex-makemf");
system((toolname+".exe "+fname).c_str());
- path = find_file(fname, 0);
+ path = findFile(fname, 0);
#else
kpse_file_format_type type = (ext == "tfm" ? kpse_tfm_format : kpse_mf_format);
path = kpse_make_tex(type, fname.c_str());
@@ -290,9 +259,9 @@ static const char* mktex (const std::string &fname) {
* @param[in] ftype type/format of file to look up
* @param[in] extended if true, use fontmap lookup and mktexFOO calls
* @return path to file on success, 0 otherwise */
-const char* FileFinder::lookup (const std::string &fname, const char *ftype, bool extended) {
+const char* FileFinder::lookup (const std::string &fname, const char *ftype, bool extended) const {
const char *path;
- if ((path = find_file(fname, ftype)) || (extended && ((path = find_mapped_file(fname)) || (path = mktex(fname)))))
+ if ((path = findFile(fname, ftype)) || (extended && ((path = findMappedFile(fname)) || (path = mktex(fname)))))
return path;
return 0;
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.h
deleted file mode 100644
index ec9cc1f549d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*************************************************************************
-** FileFinder.h **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program 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 General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_KPSFILEFINDER_H
-#define DVISVGM_KPSFILEFINDER_H
-
-#include <string>
-
-struct FileFinder
-{
- static void init (const char *argv0, const char *progname, bool enable_mktexmf);
- static void finish ();
- static std::string version ();
- static void addLookupDir (const std::string &path);
- static const char* lookup (const std::string &fname, const char *ftype, bool extended=true);
- static const char* lookup (const std::string &fname, bool extended=true) {return lookup(fname, 0, extended);}
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.hpp
new file mode 100644
index 00000000000..cc88e52d57f
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.hpp
@@ -0,0 +1,56 @@
+/*************************************************************************
+** FileFinder.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef FILEFINDER_HPP
+#define FILEFINDER_HPP
+
+#include <memory>
+#include <set>
+#include <string>
+
+class MiKTeXCom;
+
+class FileFinder
+{
+ public:
+ static void init (const char *argv0, const char *progname, bool enable_mktexmf);
+ static FileFinder& instance ();
+ std::string version () const;
+ void addLookupDir (const std::string &path);
+ const char* lookup (const std::string &fname, const char *ftype, bool extended=true) const;
+ const char* lookup (const std::string &fname, bool extended=true) const {return lookup(fname, 0, extended);}
+
+ protected:
+ FileFinder ();
+ const char* findFile (const std::string &fname, const char *ftype) const;
+ const char* findMappedFile (std::string fname) const;
+ const char* mktex (const std::string &fname) const;
+
+ private:
+ static const char *_argv0;
+ static std::string _progname;
+ static bool _enableMktex;
+ std::set<std::string> _additionalDirs;
+#ifdef MIKTEX
+ std::unique_ptr<MiKTeXCom> _miktex;
+#endif
+};
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.cpp
index 30b32f81d1f..9f9b295ad62 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.cpp
@@ -2,7 +2,7 @@
** FilePath.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,10 +20,10 @@
#include <config.h>
#include <cctype>
-#include "FilePath.h"
-#include "FileSystem.h"
-#include "MessageException.h"
-#include "macros.h"
+#include "FilePath.hpp"
+#include "FileSystem.hpp"
+#include "MessageException.hpp"
+#include "utility.hpp"
using namespace std;
@@ -41,7 +41,7 @@ static string& single_slashes (string &str) {
static char strip_drive_letter (string &path) {
char letter = 0;
if (path.length() >= 2 && path[1] == ':' && isalpha(path[0])) {
- letter = tolower(path[0]);
+ letter = path[0];
path.erase(0, 2);
}
return letter;
@@ -66,12 +66,19 @@ static char adapt_current_path (string &path, char target_drive) {
return target_drive;
}
+#endif
-static void tolower (string &str) {
- for (size_t i=0; i < str.length(); ++i)
- str[i] = tolower(str[i]);
-}
+
+bool FilePath::Directory::operator == (const Directory &dir) const {
+ string dirstr1 = _dirstr;
+ string dirstr2 = dir._dirstr;
+#ifdef _WIN32
+ // letter case is not significant on Windows systems
+ util::tolower(dirstr1);
+ util::tolower(dirstr2);
#endif
+ return dirstr1 == dirstr2;
+}
/** Constructs a FilePath object from a given path. Relative paths are
@@ -86,7 +93,7 @@ FilePath::FilePath (const string &path) {
* @param[in] path absolute or relative path to a file or directory
* @param[in] isfile true if 'path' references a file, false if a directory is referenced
* @param[in] current_dir if 'path' is a relative path expression it will be related to 'current_dir' */
-FilePath::FilePath (const string &path, bool isfile, string current_dir) {
+FilePath::FilePath (const string &path, bool isfile, const string &current_dir) {
init(path, isfile, current_dir);
}
@@ -99,7 +106,6 @@ void FilePath::init (string path, bool isfile, string current_dir) {
single_slashes(path);
single_slashes(current_dir);
#ifdef _WIN32
- tolower(path);
path = FileSystem::adaptPathSeperators(path);
_drive = strip_drive_letter(path);
#endif
@@ -114,7 +120,6 @@ void FilePath::init (string path, bool isfile, string current_dir) {
if (current_dir.empty())
current_dir = FileSystem::getcwd();
#ifdef _WIN32
- tolower(current_dir);
_drive = adapt_current_path(current_dir, _drive);
#endif
if (!path.empty()) {
@@ -132,13 +137,13 @@ void FilePath::init (string path, bool isfile, string current_dir) {
}
path.insert(0, current_dir + "/");
string elem;
- FORALL (path, string::const_iterator, it) {
- if (*it == '/') {
+ for (char c : path) {
+ if (c != '/')
+ elem += c;
+ else {
add(elem);
elem.clear();
}
- else
- elem += *it;
}
add(elem);
}
@@ -200,9 +205,8 @@ string FilePath::basename () const {
* @return the absolute path string */
string FilePath::absolute (bool with_filename) const {
string path;
- FORALL (_dirs, ConstIterator, it) {
- path += "/" + *it;
- }
+ for (const Directory &dir : _dirs)
+ path += "/" + string(dir);
if (path.empty())
path = "/";
if (with_filename && !_fname.empty())
@@ -233,17 +237,17 @@ string FilePath::relative (string reldir, bool with_filename) const {
FilePath rel(reldir, false);
string path;
#ifdef _WIN32
- if (rel._drive && _drive && rel._drive != _drive)
+ if (rel._drive && _drive && tolower(rel._drive) != tolower(_drive))
path += string(1, _drive) + ":";
#endif
- ConstIterator i = _dirs.begin();
- ConstIterator j = rel._dirs.begin();
- while (i != _dirs.end() && j != rel._dirs.end() && *i == *j)
- ++i, ++j;
- for (; j != rel._dirs.end(); ++j)
+ auto it1 = _dirs.begin();
+ auto it2 = rel._dirs.begin();
+ while (it1 != _dirs.end() && it2 != rel._dirs.end() && *it1 == *it2)
+ ++it1, ++it2;
+ for (; it2 != rel._dirs.end(); ++it2)
path += "../";
- for (; i != _dirs.end(); ++i)
- path += *i + "/";
+ for (; it1 != _dirs.end(); ++it1)
+ path += string(*it1) + "/";
if (!path.empty())
path.erase(path.length()-1, 1); // remove trailing slash
if (with_filename && !_fname.empty()) {
@@ -255,4 +259,3 @@ string FilePath::relative (string reldir, bool with_filename) const {
path = ".";
return single_slashes(path);
}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.hpp
index 368c92585fa..4f73324a27a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FilePath.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** FilePath.h **
+** FilePath.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,20 +18,32 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_FILEPATH_H
-#define DVISVGM_FILEPATH_H
+#ifndef FILEPATH_HPP
+#define FILEPATH_HPP
#include <string>
+#include <utility>
#include <vector>
class FilePath
{
- typedef std::vector<std::string> Directories;
- typedef Directories::iterator Iterator;
- typedef Directories::const_iterator ConstIterator;
+ class Directory {
+ public:
+ Directory (const std::string &dir) : _dirstr(dir) {}
+ Directory (std::string &&dir) : _dirstr(std::move(dir)) {}
+ bool operator == (const Directory &dir) const;
+ bool operator != (const Directory &dir) const {return !(*this == dir);}
+ explicit operator std::string () const {return _dirstr;}
+
+ private:
+ std::string _dirstr;
+ };
+
+ typedef std::vector<Directory> Directories;
public:
FilePath (const std::string &path);
- FilePath (const std::string &path, bool isfile, std::string current_dir="");
+ FilePath (const std::string &path, bool isfile) : FilePath(path, isfile, "") {}
+ FilePath (const std::string &path, bool isfile, const std::string &current_dir);
std::string absolute (bool with_filename=true) const;
std::string relative (std::string reldir="", bool with_filename=true) const;
std::string basename () const;
@@ -55,5 +67,4 @@ class FilePath
#endif
};
-
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp
index a78eeaa0776..8c5386ac8d5 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp
@@ -2,7 +2,7 @@
** FileSystem.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,11 +19,13 @@
*************************************************************************/
#include <config.h>
+#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <fstream>
-#include "FileSystem.h"
-#include "macros.h"
+#include "FileSystem.hpp"
+#include "utility.hpp"
+#include "version.hpp"
#ifdef HAVE_UNISTD_H
#include <unistd.h>
@@ -48,6 +50,43 @@ using namespace std;
#endif
+FileSystem FileSystem::_fs;
+string FileSystem::TMPDIR;
+const char *FileSystem::TMPSUBDIR = nullptr;
+
+
+/** Private wrapper function for mkdir: creates a single folder.
+ * @param[in] dir folder name
+ * @return true on success */
+static bool s_mkdir (const string &dirname) {
+ bool success = true;
+ if (!FileSystem::exists(dirname)) {
+#ifdef _WIN32
+ success = (_mkdir(dirname.c_str()) == 0);
+#else
+ success = (::mkdir(dirname.c_str(), 0775) == 0);
+#endif
+ }
+ return success;
+}
+
+
+static bool inline s_rmdir (const string &dirname) {
+#ifdef _WIN32
+ return (_rmdir(dirname.c_str()) == 0);
+#else
+ return (::rmdir(dirname.c_str()) == 0);
+#endif
+}
+
+
+FileSystem::~FileSystem () {
+ // remove the subdirectory from the system's temp folder (if empty)
+ if (TMPSUBDIR)
+ s_rmdir(tmpdir());
+}
+
+
bool FileSystem::remove (const string &fname) {
return unlink(fname.c_str()) == 0;
}
@@ -80,13 +119,13 @@ bool FileSystem::rename (const string &oldname, const string &newname) {
}
-UInt64 FileSystem::filesize (const string &fname) {
+uint64_t FileSystem::filesize (const string &fname) {
#ifdef _WIN32
// unfortunately, stat doesn't work properly under Windows
// so we have to use this freaky code
WIN32_FILE_ATTRIBUTE_DATA attr;
GetFileAttributesExA(fname.c_str(), GetFileExInfoStandard, &attr);
- return (static_cast<UInt64>(attr.nFileSizeHigh) << (8*sizeof(attr.nFileSizeLow))) | attr.nFileSizeLow;
+ return (static_cast<uint64_t>(attr.nFileSizeHigh) << (8*sizeof(attr.nFileSizeLow))) | attr.nFileSizeLow;
#else
struct stat attr;
return (stat(fname.c_str(), &attr) == 0) ? attr.st_size : 0;
@@ -95,9 +134,7 @@ UInt64 FileSystem::filesize (const string &fname) {
string FileSystem::adaptPathSeperators (string path) {
- for (size_t i=0; i < path.length(); i++)
- if (path[i] == PATHSEP)
- path[i] = '/';
+ std::replace(path.begin(), path.end(), PATHSEP, '/');
return path;
}
@@ -121,7 +158,7 @@ bool FileSystem::chdir (const std::string &dirname) {
#ifdef _WIN32
success = (_chdir(cdirname) == 0);
#else
- success = (chdir(cdirname) == 0);
+ success = (::chdir(cdirname) == 0);
#endif
}
return success;
@@ -152,39 +189,38 @@ const char* FileSystem::userdir () {
}
-/** Private wrapper function for mkdir: creates a single folder.
- * @param[in] dir folder name
- * @return true on success */
-static bool s_mkdir (const string &dirname) {
- bool success = true;
- if (!FileSystem::exists(dirname)) {
+/** Returns the path of the temporary folder. */
+string FileSystem::tmpdir () {
+ string ret;
+ if (!TMPDIR.empty())
+ ret = TMPDIR;
+ else {
#ifdef _WIN32
- success = (_mkdir(dirname.c_str()) == 0);
+ char buf[MAX_PATH];
+ if (GetTempPath(MAX_PATH, buf))
+ ret = adaptPathSeperators(buf);
+ else
+ ret = ".";
#else
- success = (mkdir(dirname.c_str(), 0775) == 0);
+ if (const char *path = getenv("TMPDIR"))
+ ret = path;
+ else
+ ret = "/tmp";
#endif
+ if (ret.back() == '/')
+ ret.pop_back();
+ static bool initialized=false;
+ if (!initialized && ret != ".") {
+ TMPSUBDIR = PROGRAM_NAME;
+ s_mkdir(ret + "/" + TMPSUBDIR);
+ initialized = true;
+ }
+ if (TMPSUBDIR)
+ ret += string("/") + TMPSUBDIR;
}
- return success;
-}
-
-
-static bool inline s_rmdir (const string &dirname) {
-#ifdef _WIN32
- return (_rmdir(dirname.c_str()) == 0);
-#else
- return (rmdir(dirname.c_str()) == 0);
-#endif
-}
-
-
-/** Removes leading and trailing whitespace from a string. */
-static string trim (const string &str) {
- int first=0, last=str.length()-1;
- while (isspace(str[first]))
- first++;
- while (isspace(str[last]))
- last--;
- return str.substr(first, last-first+1);
+ if (!ret.empty() && ret.back() != '/')
+ ret += '/';
+ return ret;
}
@@ -196,7 +232,7 @@ bool FileSystem::mkdir (const string &dirname) {
bool success = false;
if (const char *cdirname = dirname.c_str()) {
success = true;
- const string dirstr = adaptPathSeperators(trim(cdirname));
+ const string dirstr = adaptPathSeperators(util::trim(cdirname));
for (size_t pos=1; success && (pos = dirstr.find('/', pos)) != string::npos; pos++)
success &= s_mkdir(dirstr.substr(0, pos));
success &= s_mkdir(dirstr);
@@ -311,7 +347,7 @@ int FileSystem::collect (const char *dirname, vector<string> &entries) {
string path = string(dirname)+"/"+fname;
string typechar = isFile(path) ? "f" : isDirectory(path) ? "d" : "?";
if (fname != "." && fname != "..")
- entries.push_back(typechar+fname);
+ entries.emplace_back(typechar+fname);
ready = !FindNextFile(h, &data);
}
FindClose(h);
@@ -323,12 +359,10 @@ int FileSystem::collect (const char *dirname, vector<string> &entries) {
string path = string(dirname)+"/"+fname;
string typechar = isFile(path) ? "f" : isDirectory(path) ? "d" : "?";
if (fname != "." && fname != "..")
- entries.push_back(typechar+fname);
+ entries.emplace_back(typechar+fname);
}
closedir(dir);
}
#endif
return entries.size();
}
-
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.h
deleted file mode 100644
index 4e36653f1fd..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*************************************************************************
-** FileSystem.h **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program 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 General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_FILESYSTEM_H
-#define DVISVGM_FILESYSTEM_H
-
-#include <string>
-#include <vector>
-#include "types.h"
-
-struct FileSystem
-{
- static bool remove (const std::string &fname);
- static bool rename (const std::string &oldname, const std::string &newname);
- static bool copy (const std::string &src, const std::string &dest, bool remove_src=false);
- static UInt64 filesize (const std::string &fname);
- static std::string adaptPathSeperators (std::string path);
- static std::string getcwd ();
- static bool chdir (const std::string &dir);
- static bool exists (const std::string &fname);
- static bool mkdir (const std::string &dirname);
- static bool rmdir (const std::string &dirname);
- static int collect (const char *dirname, std::vector<std::string> &entries);
- static bool isDirectory (const std::string &fname);
- static bool isFile (const std::string &fname);
- static const char* userdir ();
- static const char* DEVNULL;
- static const char PATHSEP;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.hpp
new file mode 100644
index 00000000000..798ca982e74
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.hpp
@@ -0,0 +1,59 @@
+/*************************************************************************
+** FileSystem.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef FILESYSTEM_HPP
+#define FILESYSTEM_HPP
+
+#include <string>
+#include <vector>
+
+class FileSystem
+{
+ public:
+ ~FileSystem ();
+ static bool remove (const std::string &fname);
+ static bool rename (const std::string &oldname, const std::string &newname);
+ static bool copy (const std::string &src, const std::string &dest, bool remove_src=false);
+ static uint64_t filesize (const std::string &fname);
+ static std::string adaptPathSeperators (std::string path);
+ static std::string getcwd ();
+ static std::string tmpdir ();
+ static bool chdir (const std::string &dir);
+ static bool exists (const std::string &fname);
+ static bool mkdir (const std::string &dirname);
+ static bool rmdir (const std::string &dirname);
+ static int collect (const char *dirname, std::vector<std::string> &entries);
+ static bool isDirectory (const std::string &fname);
+ static bool isFile (const std::string &fname);
+ static const char* userdir ();
+ static const char* DEVNULL; ///< name of NULL device
+ static const char PATHSEP; ///< character used to separate folders/files in a path
+ static std::string TMPDIR; ///< set path to temporary folder
+
+ protected:
+ FileSystem () =default;
+ bool system_tmpdir_available ();
+ static const char* TMPSUBDIR; ///< subdirectory of the system's temporary folder
+
+ private:
+ static FileSystem _fs;
+};
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FixWord.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FixWord.hpp
new file mode 100644
index 00000000000..7f6a5ebd298
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FixWord.hpp
@@ -0,0 +1,38 @@
+/*************************************************************************
+** FixWord.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef FIXWORD_HPP
+#define FIXWORD_HPP
+
+#include <cstdint>
+
+class FixWord {
+ public:
+ FixWord () : _value(0) {}
+ FixWord (int32_t fw) : _value(fw) {}
+ explicit operator double () const {return double(_value)/(1 << 20);}
+ bool operator < (FixWord fw) const {return _value < fw._value;}
+ bool operator == (FixWord fw) const {return _value == fw._value;}
+
+ private:
+ int32_t _value;
+};
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.cpp
index 062f1a640bb..9f371036f53 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.cpp
@@ -2,7 +2,7 @@
** Font.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -22,22 +22,22 @@
#include <cstdlib>
#include <fstream>
#include <sstream>
-#include "CMap.h"
-#include "FileFinder.h"
-#include "FileSystem.h"
-#include "Font.h"
-#include "FontEngine.h"
-#include "Message.h"
-#include "MetafontWrapper.h"
-#include "SignalHandler.h"
-#include "Subfont.h"
-#include "Unicode.h"
+#include "CMap.hpp"
+#include "FileFinder.hpp"
+#include "FileSystem.hpp"
+#include "Font.hpp"
+#include "FontEngine.hpp"
+#include "Message.hpp"
+#include "MetafontWrapper.hpp"
+#include "SignalHandler.hpp"
+#include "Subfont.hpp"
+#include "Unicode.hpp"
using namespace std;
-UInt32 Font::unicode (UInt32 c) const {
+uint32_t Font::unicode (uint32_t c) const {
return Unicode::charToCodepoint(c);
}
@@ -98,34 +98,29 @@ const char* Font::filename () const {
///////////////////////////////////////////////////////////////////////////////////////
-TFMFont::TFMFont (string name, UInt32 cs, double ds, double ss)
- : _metrics(0), _fontname(name), _checksum(cs), _dsize(ds), _ssize(ss)
+TFMFont::TFMFont (const string &name, uint32_t cs, double ds, double ss)
+ : _fontname(name), _checksum(cs), _dsize(ds), _ssize(ss)
{
}
-TFMFont::~TFMFont () {
- delete _metrics;
-}
-
-
/** Returns a font metrics object for the current font.
* @throw FontException if TFM file can't be found */
const FontMetrics* TFMFont::getMetrics () const {
if (!_metrics) {
try {
- _metrics = FontMetrics::read(_fontname.c_str());
+ _metrics.reset(FontMetrics::read(_fontname.c_str()));
if (!_metrics) {
- _metrics = new NullFontMetric;
+ _metrics.reset(new NullFontMetric);
Message::wstream(true) << "can't find "+_fontname+".tfm\n";
}
}
catch (FontMetricException &e) {
- _metrics = new NullFontMetric;
+ _metrics.reset(new NullFontMetric);
Message::wstream(true) << e.what() << " in " << _fontname << ".tfm\n";
}
}
- return _metrics;
+ return _metrics.get();
}
@@ -168,35 +163,35 @@ double PhysicalFont::METAFONT_MAG = 4;
FontCache PhysicalFont::_cache;
-Font* PhysicalFont::create (string name, UInt32 checksum, double dsize, double ssize, PhysicalFont::Type type) {
+Font* PhysicalFont::create (const string &name, uint32_t checksum, double dsize, double ssize, PhysicalFont::Type type) {
return new PhysicalFontImpl(name, 0, checksum, dsize, ssize, type);
}
-Font* PhysicalFont::create (string name, int fontindex, UInt32 checksum, double dsize, double ssize) {
- return new PhysicalFontImpl(name, fontindex, checksum, dsize, ssize, PhysicalFont::TTC);
+Font* PhysicalFont::create (const string &name, int fontindex, uint32_t checksum, double dsize, double ssize) {
+ return new PhysicalFontImpl(name, fontindex, checksum, dsize, ssize, PhysicalFont::Type::TTC);
}
const char* PhysicalFont::path () const {
const char *ext=0;
switch (type()) {
- case OTF: ext = "otf"; break;
- case PFB: ext = "pfb"; break;
- case TTC: ext = "ttc"; break;
- case TTF: ext = "ttf"; break;
- case MF : ext = "mf"; break;
+ case Type::OTF: ext = "otf"; break;
+ case Type::PFB: ext = "pfb"; break;
+ case Type::TTC: ext = "ttc"; break;
+ case Type::TTF: ext = "ttf"; break;
+ case Type::MF : ext = "mf"; break;
default : ext = 0;
}
if (ext)
- return FileFinder::lookup(name()+"."+ext);
- return FileFinder::lookup(name());
+ return FileFinder::instance().lookup(name()+"."+ext);
+ return FileFinder::instance().lookup(name());
}
/** Returns true if this font is CID-based. */
bool PhysicalFont::isCIDFont () const {
- if (type() == MF)
+ if (type() == Type::MF)
return false;
FontEngine::instance().setFont(*this);
return FontEngine::instance().isCIDFont();
@@ -207,7 +202,7 @@ bool PhysicalFont::isCIDFont () const {
* @param[out] charMapIDs IDs of the found character maps
* @return number of found character maps */
int PhysicalFont::collectCharMapIDs (std::vector<CharMapID> &charMapIDs) const {
- if (type() == MF)
+ if (type() == Type::MF)
return 0;
FontEngine::instance().setFont(*this);
return FontEngine::instance().getCharMapIDs(charMapIDs);
@@ -218,7 +213,7 @@ int PhysicalFont::collectCharMapIDs (std::vector<CharMapID> &charMapIDs) const {
* address the correct character in the font.
* @param[in] c DVI character to decode
* @return target character code or name */
-Character PhysicalFont::decodeChar (UInt32 c) const {
+Character PhysicalFont::decodeChar (uint32_t c) const {
if (const FontEncoding *enc = encoding())
return enc->decode(c);
return Character(Character::CHRCODE, c);
@@ -230,7 +225,7 @@ Character PhysicalFont::decodeChar (UInt32 c) const {
* lower left corner of this square, while the upper right corner is located at (m,m), where m
* is an integer value defined with the font, and returned by this function. */
int PhysicalFont::unitsPerEm() const {
- if (type() == MF)
+ if (type() == Type::MF)
return 1000;
FontEngine::instance().setFont(*this);
return FontEngine::instance().getUnitsPerEM();
@@ -238,7 +233,7 @@ int PhysicalFont::unitsPerEm() const {
int PhysicalFont::hAdvance () const {
- if (type() == MF)
+ if (type() == Type::MF)
return 0;
FontEngine::instance().setFont(*this);
return FontEngine::instance().getHAdvance();
@@ -246,7 +241,7 @@ int PhysicalFont::hAdvance () const {
double PhysicalFont::hAdvance (int c) const {
- if (type() == MF)
+ if (type() == Type::MF)
return unitsPerEm()*charWidth(c)/designSize();
FontEngine::instance().setFont(*this);
if (const FontMap::Entry *entry = fontMapEntry())
@@ -257,7 +252,7 @@ double PhysicalFont::hAdvance (int c) const {
double PhysicalFont::vAdvance (int c) const {
- if (type() == MF)
+ if (type() == Type::MF)
return unitsPerEm()*charWidth(c)/designSize();
FontEngine::instance().setFont(*this);
if (const FontMap::Entry *entry = fontMapEntry())
@@ -268,7 +263,7 @@ double PhysicalFont::vAdvance (int c) const {
string PhysicalFont::glyphName (int c) const {
- if (type() == MF)
+ if (type() == Type::MF)
return "";
FontEngine::instance().setFont(*this);
if (const FontMap::Entry *entry = fontMapEntry())
@@ -283,24 +278,26 @@ double PhysicalFont::scaledAscent() const {
}
+/** Returns the unscaled ascender of the font in design units. */
int PhysicalFont::ascent () const {
- if (type() == MF)
- return 0;
+ if (type() == Type::MF)
+ return getMetrics() ? getMetrics()->getAscent()*unitsPerEm()/getMetrics()->getQuad() : 0;
FontEngine::instance().setFont(*this);
return FontEngine::instance().getAscender();
}
+/** Returns the unscaled descender of the font in design units. */
int PhysicalFont::descent () const {
- if (type() == MF)
- return 0;
+ if (type() == Type::MF)
+ return getMetrics() ? getMetrics()->getDescent()*unitsPerEm()/getMetrics()->getQuad() : 0;
FontEngine::instance().setFont(*this);
return FontEngine::instance().getDescender();
}
std::string PhysicalFont::familyName () const {
- if (type() == MF)
+ if (type() == Type::MF)
return "";
FontEngine::instance().setFont(*this);
const char *family = FontEngine::instance().getFamilyName();
@@ -309,7 +306,7 @@ std::string PhysicalFont::familyName () const {
std::string PhysicalFont::styleName () const {
- if (type() == MF)
+ if (type() == Type::MF)
return "";
FontEngine::instance().setFont(*this);
const char *style = FontEngine::instance().getStyleName();
@@ -323,8 +320,8 @@ std::string PhysicalFont::styleName () const {
* @param[out] glyph path segments of the glyph outline
* @param[in] cb optional callback object for tracer class
* @return true if outline could be computed */
-bool PhysicalFont::getGlyph (int c, GraphicsPath<Int32> &glyph, GFGlyphTracer::Callback *cb) const {
- if (type() == MF) {
+bool PhysicalFont::getGlyph (int c, GraphicsPath<int32_t> &glyph, GFGlyphTracer::Callback *cb) const {
+ if (type() == Type::MF) {
const Glyph *cached_glyph=0;
if (CACHE_PATH) {
_cache.write(CACHE_PATH);
@@ -376,8 +373,8 @@ bool PhysicalFont::getGlyph (int c, GraphicsPath<Int32> &glyph, GFGlyphTracer::C
* @return true on success */
bool PhysicalFont::createGF (string &gfname) const {
SignalHandler::instance().check();
- gfname = name()+".gf";
- MetafontWrapper mf(name());
+ gfname = FileSystem::tmpdir()+name()+".gf";
+ MetafontWrapper mf(name(), FileSystem::tmpdir());
bool ok = mf.make("ljfour", METAFONT_MAG); // call Metafont if necessary
return ok && mf.success() && getMetrics();
}
@@ -389,7 +386,7 @@ bool PhysicalFont::createGF (string &gfname) const {
* @return number of glyphs traced */
int PhysicalFont::traceAllGlyphs (bool includeCached, GFGlyphTracer::Callback *cb) const {
int count = 0;
- if (type() == MF && CACHE_PATH) {
+ if (type() == Type::MF && CACHE_PATH) {
if (const FontMetrics *metrics = getMetrics()) {
int fchar = metrics->firstChar();
int lchar = metrics->lastChar();
@@ -460,7 +457,7 @@ bool PhysicalFont::getExactGlyphBox (int c, GlyphMetrics &metrics, bool vertical
}
-Font* VirtualFont::create (string name, UInt32 checksum, double dsize, double ssize) {
+Font* VirtualFont::create (const string &name, uint32_t checksum, double dsize, double ssize) {
return new VirtualFontImpl(name, checksum, dsize, ssize);
}
@@ -468,7 +465,7 @@ Font* VirtualFont::create (string name, UInt32 checksum, double dsize, double ss
//////////////////////////////////////////////////////////////////////////////
-PhysicalFontImpl::PhysicalFontImpl (string name, int fontindex, UInt32 cs, double ds, double ss, PhysicalFont::Type type)
+PhysicalFontImpl::PhysicalFontImpl (const string &name, int fontindex, uint32_t cs, double ds, double ss, PhysicalFont::Type type)
: TFMFont(name, cs, ds, ss),
_filetype(type), _fontIndex(fontindex), _fontMapEntry(Font::fontMapEntry()), _encodingPair(Font::encoding()), _localCharMap(0)
{
@@ -501,7 +498,7 @@ bool PhysicalFontImpl::findAndAssignBaseFontMap () {
else
return false;
}
- else if (type() != MF) {
+ else if (type() != Type::MF) {
FontEngine::instance().setFont(*this);
if ((_localCharMap = FontEngine::instance().createCustomToUnicodeMap()) != 0)
_charmapID = FontEngine::instance().setCustomCharMap();
@@ -513,14 +510,14 @@ bool PhysicalFontImpl::findAndAssignBaseFontMap () {
/** Returns the Unicode point for a given DVI character. */
-UInt32 PhysicalFontImpl::unicode (UInt32 c) const {
- if (type() == MF)
+uint32_t PhysicalFontImpl::unicode (uint32_t c) const {
+ if (type() == Type::MF)
return Font::unicode(c);
Character chr = decodeChar(c);
- if (type() == PFB) {
+ if (type() == Type::PFB) {
// try to get the Unicode point from the character name
string glyphname = glyphName(c);
- UInt32 codepoint;
+ uint32_t codepoint;
if (!glyphname.empty() && (codepoint = Unicode::aglNameToCodepoint(glyphname)) != 0)
return codepoint;
if (c <= 0x1900) // does character code c fit into Private Use Zone U+E000?
@@ -534,7 +531,7 @@ UInt32 PhysicalFontImpl::unicode (UInt32 c) const {
return Unicode::charToCodepoint(chr.number());
if (_localCharMap) {
- if (UInt32 mapped_char = _localCharMap->valueAt(chr.number()))
+ if (uint32_t mapped_char = _localCharMap->valueAt(chr.number()))
return mapped_char;
}
// No Unicode equivalent found in the font file.
@@ -546,11 +543,12 @@ UInt32 PhysicalFontImpl::unicode (UInt32 c) const {
/** Delete all temporary font files created by Metafont. */
void PhysicalFontImpl::tidy () const {
- if (type() == MF) {
+ if (type() == Type::MF) {
const char *ext[] = {"gf", "tfm", "log", 0};
+ string fname = FileSystem::tmpdir()+name();
for (const char **p=ext; *p; ++p) {
- if (FileSystem::exists(name()+"."+(*p)))
- FileSystem::remove(name()+"."+(*p));
+ if (FileSystem::exists(fname+"."+(*p)))
+ FileSystem::remove(fname+"."+(*p));
}
}
}
@@ -583,14 +581,14 @@ PhysicalFont::Type NativeFont::type () const {
if (const char *p =strrchr(filepath, '.')) {
string ext = p+1;
if (ext == "otf")
- return PhysicalFont::OTF;
+ return PhysicalFont::Type::OTF;
if (ext == "ttf")
- return PhysicalFont::TTF;
+ return PhysicalFont::Type::TTF;
if (ext == "pfb")
- return PhysicalFont::PFB;
+ return PhysicalFont::Type::PFB;
}
}
- return PhysicalFont::UNKNOWN;
+ return PhysicalFont::Type::UNKNOWN;
}
@@ -613,7 +611,7 @@ double NativeFont::charHeight (int c) const {
double NativeFont::charDepth (int c) const {
FontEngine::instance().setFont(*this);
int upem = FontEngine::instance().getUnitsPerEM();
- return upem ? (-scaledSize()*FontEngine::instance().getDescender()/upem) : 0;
+ return upem ? (scaledSize()*FontEngine::instance().getDescender()/upem) : 0;
}
@@ -628,48 +626,39 @@ bool NativeFontImpl::findAndAssignBaseFontMap () {
}
-Character NativeFontImpl::decodeChar (UInt32 c) const {
+Character NativeFontImpl::decodeChar (uint32_t c) const {
return Character(Character::INDEX, c);
}
-UInt32 NativeFontImpl::unicode (UInt32 c) const {
- UInt32 ucode = _toUnicodeMap.valueAt(c);
+uint32_t NativeFontImpl::unicode (uint32_t c) const {
+ uint32_t ucode = _toUnicodeMap.valueAt(c);
return Unicode::charToCodepoint(ucode);
}
//////////////////////////////////////////////////////////////////////////////
-VirtualFontImpl::VirtualFontImpl (string name, UInt32 cs, double ds, double ss)
+VirtualFontImpl::VirtualFontImpl (const string &name, uint32_t cs, double ds, double ss)
: TFMFont(name, cs, ds, ss)
{
}
-VirtualFontImpl::~VirtualFontImpl () {
- // delete dvi vectors received by VFReaderAction
- for (map<UInt32, DVIVector*>::iterator i=_charDefs.begin(); i != _charDefs.end(); ++i)
- delete i->second;
-}
-
-
const char* VirtualFontImpl::path () const {
- return FileFinder::lookup(name()+".vf");
+ return FileFinder::instance().lookup(name()+".vf");
}
-void VirtualFontImpl::assignChar (UInt32 c, DVIVector *dvi) {
- if (dvi) {
- if (_charDefs.find(c) == _charDefs.end())
- _charDefs[c] = dvi;
- else
- delete dvi;
- }
+void VirtualFontImpl::assignChar (uint32_t c, DVIVector &&dvi) {
+ _charDefs.emplace(c, std::move(dvi));
}
-const vector<UInt8>* VirtualFontImpl::getDVI (int c) const {
- map<UInt32,DVIVector*>::const_iterator it = _charDefs.find(c);
- return (it == _charDefs.end() ? 0 : it->second);
+/** Returns the DVI sippet that describes a given character of the virtual font.
+ * @param[in] c character code
+ * @return pointer to vector of DVI commands, or 0 if character doesn't exist */
+const vector<uint8_t>* VirtualFontImpl::getDVI (int c) const {
+ auto it = _charDefs.find(c);
+ return (it == _charDefs.end() ? 0 : &it->second);
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.h
deleted file mode 100644
index 0a1c707cda6..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.h
+++ /dev/null
@@ -1,385 +0,0 @@
-/*************************************************************************
-** Font.h **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program 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 General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_FONT_H
-#define DVISVGM_FONT_H
-
-#include <map>
-#include <string>
-#include <vector>
-#include "Character.h"
-#include "CharMapID.h"
-#include "Color.h"
-#include "FontCache.h"
-#include "FontEncoding.h"
-#include "FontMap.h"
-#include "FontMetrics.h"
-#include "GFGlyphTracer.h"
-#include "Glyph.h"
-#include "GraphicsPath.h"
-#include "MessageException.h"
-#include "RangeMap.h"
-#include "ToUnicodeMap.h"
-#include "VFActions.h"
-#include "VFReader.h"
-#include "types.h"
-
-
-struct FontStyle;
-
-
-struct GlyphMetrics
-{
- GlyphMetrics () : wl(0), wr(0), h(0), d(0) {}
- GlyphMetrics (double wwl, double wwr, double hh, double dd) : wl(wwl), wr(wwr), h(hh), d(dd) {}
- double wl, wr, h, d;
-};
-
-
-/** Abstract base for all font classes. */
-class Font {
- public:
- virtual ~Font () {}
- virtual Font* clone (double ds, double sc) const =0;
- virtual const Font* uniqueFont () const =0;
- virtual std::string name () const =0;
- virtual double designSize () const =0;
- virtual double scaledSize () const =0;
- virtual double scaleFactor () const {return scaledSize()/designSize();}
- virtual double charWidth (int c) const =0;
- virtual double charDepth (int c) const =0;
- virtual double charHeight (int c) const =0;
- virtual double italicCorr (int c) const =0;
- virtual const FontMetrics* getMetrics () const =0;
- virtual const char* path () const =0;
- virtual const char* filename () const;
- virtual const FontEncoding* encoding () const;
- virtual bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback *cb=0) const =0;
- virtual void getGlyphMetrics (int c, bool vertical, GlyphMetrics &metrics) const;
- virtual UInt32 unicode (UInt32 c) const;
- virtual void tidy () const {}
- virtual bool findAndAssignBaseFontMap () {return true;}
- virtual bool verticalLayout () const {return getMetrics() ? getMetrics()->verticalLayout() : false;}
- virtual bool verifyChecksums () const {return true;}
- virtual int fontIndex () const {return 0;}
- virtual const FontStyle* style () const {return 0;}
- virtual Color color () const {return Color::BLACK;}
- virtual const FontMap::Entry* fontMapEntry () const;
-};
-
-
-/** Empty font without any glyphs. Instances of this class are used
- * if no physical or virtual font file can be found.
- * The metric values returned by the member functions are based on cmr10. */
-class EmptyFont : public Font {
- public:
- EmptyFont (std::string name) : _fontname(name) {}
- Font* clone (double ds, double sc) const {return new EmptyFont(*this);}
- const Font* uniqueFont () const {return this;}
- std::string name () const {return _fontname;}
- double designSize () const {return 10;} // cmr10 design size in pt
- double scaledSize () const {return 10;} // cmr10 scaled size in pt
- double charWidth (int c) const {return 9.164;} // width of cmr10's 'M' in pt
- double charHeight (int c) const {return 6.833;} // height of cmr10's 'M' in pt
- double charDepth (int c) const {return 0;}
- double italicCorr (int c) const {return 0;}
- const FontMetrics* getMetrics () const {return 0;}
- const char* path () const {return 0;}
- bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback *cb=0) const {return false;}
-
- private:
- std::string _fontname;
-};
-
-
-/** Interface for all physical fonts. */
-class PhysicalFont : public virtual Font {
- public:
- enum Type {MF, OTF, PFB, TTC, TTF, UNKNOWN};
-
- static Font* create (std::string name, UInt32 checksum, double dsize, double ssize, PhysicalFont::Type type);
- static Font* create (std::string name, int fontindex, UInt32 checksum, double dsize, double ssize);
- virtual Type type () const =0;
- virtual bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback *cb=0) const;
- virtual bool getExactGlyphBox (int c, BoundingBox &bbox, GFGlyphTracer::Callback *cb=0) const;
- virtual bool getExactGlyphBox (int c, GlyphMetrics &metrics, bool vertical, GFGlyphTracer::Callback *cb=0) const;
- virtual bool isCIDFont () const;
- virtual int hAdvance () const;
- virtual std::string familyName () const;
- virtual std::string styleName () const;
- virtual double hAdvance (int c) const;
- virtual double vAdvance (int c) const;
- std::string glyphName (int c) const;
- virtual int unitsPerEm () const;
- virtual double scaledAscent () const;
- virtual int ascent () const;
- virtual int descent () const;
- virtual int traceAllGlyphs (bool includeCached, GFGlyphTracer::Callback *cb=0) const;
- virtual int collectCharMapIDs (std::vector<CharMapID> &charmapIDs) const;
- virtual CharMapID getCharMapID () const =0;
- virtual void setCharMapID (const CharMapID &id) {}
- virtual Character decodeChar (UInt32 c) const;
- const char* path () const;
-
- protected:
- bool createGF (std::string &gfname) const;
-
- public:
- static bool EXACT_BBOX;
- static bool KEEP_TEMP_FILES;
- static const char *CACHE_PATH; ///< path to cache directory (0 if caching is disabled)
- static double METAFONT_MAG; ///< magnification factor for Metafont calls
-
- protected:
- static FontCache _cache;
-};
-
-
-/** Interface for all virtual fonts. */
-class VirtualFont : public virtual Font {
- friend class FontManager;
- public:
- typedef std::vector<UInt8> DVIVector;
-
- public:
- static Font* create (std::string name, UInt32 checksum, double dsize, double ssize);
- virtual const DVIVector* getDVI (int c) const =0;
- bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback *cb=0) const {return false;}
-
- protected:
- virtual void assignChar (UInt32 c, DVIVector *dvi) =0;
-};
-
-
-class TFMFont : public virtual Font {
- public:
- TFMFont (std::string name, UInt32 checksum, double dsize, double ssize);
- ~TFMFont ();
- const FontMetrics* getMetrics () const;
- std::string name () const {return _fontname;}
- double designSize () const {return _dsize;}
- double scaledSize () const {return _ssize;}
- double charWidth (int c) const;
- double charDepth (int c) const;
- double charHeight (int c) const;
- double italicCorr (int c) const;
- bool verifyChecksums () const;
-
- private:
- mutable FontMetrics *_metrics;
- std::string _fontname;
- UInt32 _checksum; ///< cheksum to be compared with TFM checksum
- double _dsize; ///< design size in PS point units
- double _ssize; ///< scaled size in PS point units
-};
-
-
-class PhysicalFontProxy : public PhysicalFont {
- friend class PhysicalFontImpl;
- public:
- Font* clone (double ds, double sc) const {return new PhysicalFontProxy(*this, ds, sc);}
- const Font* uniqueFont () const {return _pf;}
- std::string name () const {return _pf->name();}
- double designSize () const {return _dsize;}
- double scaledSize () const {return _ssize;}
- double charWidth (int c) const {return _pf->charWidth(c);}
- double charDepth (int c) const {return _pf->charDepth(c);}
- double charHeight (int c) const {return _pf->charHeight(c);}
- double italicCorr (int c) const {return _pf->italicCorr(c);}
- const FontMetrics* getMetrics () const {return _pf->getMetrics();}
- Type type () const {return _pf->type();}
- UInt32 unicode (UInt32 c) const {return _pf->unicode(c);}
- int fontIndex () const {return _pf->fontIndex();}
- const FontStyle* style () const {return _pf->style();}
- const FontMap::Entry* fontMapEntry () const {return _pf->fontMapEntry();}
- const FontEncoding* encoding () const {return _pf->encoding();}
- CharMapID getCharMapID () const {return _pf->getCharMapID();}
- int collectCharMapIDs (std::vector<CharMapID> &charmapIDs) const {return _pf->collectCharMapIDs(charmapIDs);}
-
- protected:
- PhysicalFontProxy (const PhysicalFont *font, double ds, double ss) : _pf(font), _dsize(ds), _ssize(ss) {}
- PhysicalFontProxy (const PhysicalFontProxy &proxy, double ds, double ss) : _pf(proxy._pf), _dsize(ds), _ssize(ss) {}
-
- private:
- const PhysicalFont *_pf;
- double _dsize; ///< design size in PS point units
- double _ssize; ///< scaled size in PS point units
-};
-
-
-class PhysicalFontImpl : public PhysicalFont, public TFMFont {
- friend class PhysicalFont;
- public:
- ~PhysicalFontImpl();
- Font* clone (double ds, double ss) const {return new PhysicalFontProxy(this, ds, ss);}
- const Font* uniqueFont () const {return this;}
- Type type () const {return _filetype;}
- int fontIndex() const {return _fontIndex;}
- const FontStyle* style () const {return _fontMapEntry ? &_fontMapEntry->style : 0;}
- const FontMap::Entry* fontMapEntry () const {return _fontMapEntry;}
- const FontEncoding* encoding () const;
- UInt32 unicode (UInt32 c) const;
- bool findAndAssignBaseFontMap ();
- void tidy () const;
- CharMapID getCharMapID () const {return _charmapID;}
-
- protected:
- PhysicalFontImpl (std::string name, int fontindex, UInt32 checksum, double dsize, double ssize, PhysicalFont::Type type);
-
- private:
- Type _filetype;
- int _fontIndex;
- const FontMap::Entry *_fontMapEntry;
- FontEncodingPair _encodingPair;
- CharMapID _charmapID; ///< ID of the font's charmap to use
- const RangeMap *_localCharMap;
-};
-
-
-class NativeFont : public PhysicalFont {
- public:
- virtual NativeFont* clone (double ptsize, const FontStyle &style, Color color) const =0;
- virtual Font* clone (double ds, double sc) const =0;
- std::string name () const;
- Type type () const;
- double designSize () const {return _ptsize;}
- double scaledSize () const {return _ptsize;}
- double charWidth (int c) const;
- double charDepth (int c) const;
- double charHeight (int c) const;
- double italicCorr (int c) const {return 0;}
- const FontMetrics* getMetrics () const {return 0;}
- const FontStyle* style () const {return &_style;}
- Color color () const {return _color;}
- const FontMap::Entry* fontMapEntry () const {return 0;}
- static std::string uniqueName (const std::string &path, const FontStyle &style);
-
- protected:
- NativeFont (double ptsize, const FontStyle &style, Color color) : _ptsize(ptsize), _style(style), _color(color) {}
-
- private:
- double _ptsize; ///< font size in PS point units
- FontStyle _style;
- Color _color;
-};
-
-
-class NativeFontProxy : public NativeFont {
- friend class NativeFontImpl;
- public:
- NativeFont* clone (double ptsize, const FontStyle &style, Color color) const {
- return new NativeFontProxy(this, ptsize, style, color);
- }
-
- Font* clone (double ds, double sc) const {return new NativeFontProxy(this , sc, *style(), color());}
- const Font* uniqueFont () const {return _nfont;}
- const char* path () const {return _nfont->path();}
- int fontIndex () const {return _nfont->fontIndex();}
- Character decodeChar (UInt32 c) const {return _nfont->decodeChar(c);}
- UInt32 unicode (UInt32 c) const {return _nfont->unicode(c);}
- CharMapID getCharMapID () const {return _nfont->getCharMapID();}
-
- protected:
- NativeFontProxy (const NativeFont *nfont, double ptsize, const FontStyle &style, Color color)
- : NativeFont(ptsize, style, color), _nfont(nfont) {}
-
- private:
- const NativeFont *_nfont;
-};
-
-
-class NativeFontImpl : public NativeFont {
- public:
- NativeFontImpl (const std::string &fname, int fontIndex, double ptsize, const FontStyle &style, Color color)
- : NativeFont(ptsize, style, color), _path(fname), _fontIndex(fontIndex) {}
-
- NativeFont* clone (double ptsize, const FontStyle &style, Color color) const {
- return new NativeFontProxy(this, ptsize, style, color);
- }
-
- Font* clone (double ds, double sc) const {return new NativeFontProxy(this , sc, *style(), color());}
- const Font* uniqueFont () const {return this;}
- const char* path () const {return _path.c_str();}
- int fontIndex() const {return _fontIndex;}
- std::string fontFamily () const;
- bool findAndAssignBaseFontMap ();
- CharMapID getCharMapID () const {return CharMapID::NONE;}
- Character decodeChar (UInt32 c) const;
- UInt32 unicode (UInt32 c) const;
-
- private:
- std::string _path;
- int _fontIndex;
- ToUnicodeMap _toUnicodeMap; ///< maps from char indexes to unicode points
-};
-
-
-class VirtualFontProxy : public VirtualFont {
- friend class VirtualFontImpl;
- public:
- Font* clone (double ds, double ss) const {return new VirtualFontProxy(*this, ds, ss);}
- const Font* uniqueFont () const {return _vf;}
- std::string name () const {return _vf->name();}
- const DVIVector* getDVI (int c) const {return _vf->getDVI(c);}
- double designSize () const {return _dsize;}
- double scaledSize () const {return _ssize;}
- double charWidth (int c) const {return _vf->charWidth(c);}
- double charDepth (int c) const {return _vf->charDepth(c);}
- double charHeight (int c) const {return _vf->charHeight(c);}
- double italicCorr (int c) const {return _vf->italicCorr(c);}
- const FontMetrics* getMetrics () const {return _vf->getMetrics();}
- const char* path () const {return _vf->path();}
-
- protected:
- VirtualFontProxy (const VirtualFont *font, double ds, double ss) : _vf(font), _dsize(ds), _ssize(ss) {}
- VirtualFontProxy (const VirtualFontProxy &proxy, double ds, double ss) : _vf(proxy._vf), _dsize(ds), _ssize(ss) {}
- void assignChar (UInt32 c, DVIVector *dvi) {delete dvi;}
-
- private:
- const VirtualFont *_vf;
- double _dsize; ///< design size in PS point units
- double _ssize; ///< scaled size in PS point units
-};
-
-
-class VirtualFontImpl : public VirtualFont, public TFMFont {
- friend class VirtualFont;
- public:
- ~VirtualFontImpl ();
- Font* clone (double ds, double ss) const {return new VirtualFontProxy(this, ds, ss);}
- const Font* uniqueFont () const {return this;}
- const DVIVector* getDVI (int c) const;
- const char* path () const;
-
- protected:
- VirtualFontImpl (std::string name, UInt32 checksum, double dsize, double ssize);
- void assignChar (UInt32 c, DVIVector *dvi);
-
- private:
- std::map<UInt32, DVIVector*> _charDefs; ///< dvi subroutines defining the characters
-};
-
-
-struct FontException : public MessageException
-{
- FontException (std::string msg) : MessageException(msg) {}
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.hpp
new file mode 100644
index 00000000000..3e2f3038a74
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.hpp
@@ -0,0 +1,383 @@
+/*************************************************************************
+** Font.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef FONT_HPP
+#define FONT_HPP
+
+#include <map>
+#include <memory>
+#include <string>
+#include <vector>
+#include "Character.hpp"
+#include "CharMapID.hpp"
+#include "Color.hpp"
+#include "FontCache.hpp"
+#include "FontEncoding.hpp"
+#include "FontMap.hpp"
+#include "FontMetrics.hpp"
+#include "GFGlyphTracer.hpp"
+#include "Glyph.hpp"
+#include "GraphicsPath.hpp"
+#include "MessageException.hpp"
+#include "RangeMap.hpp"
+#include "ToUnicodeMap.hpp"
+#include "VFActions.hpp"
+#include "VFReader.hpp"
+
+
+struct FontStyle;
+
+
+struct GlyphMetrics
+{
+ GlyphMetrics () : wl(0), wr(0), h(0), d(0) {}
+ GlyphMetrics (double wwl, double wwr, double hh, double dd) : wl(wwl), wr(wwr), h(hh), d(dd) {}
+ double wl, wr, h, d;
+};
+
+
+/** Abstract base for all font classes. */
+class Font {
+ public:
+ virtual ~Font () =default;
+ virtual Font* clone (double ds, double sc) const =0;
+ virtual const Font* uniqueFont () const =0;
+ virtual std::string name () const =0;
+ virtual double designSize () const =0;
+ virtual double scaledSize () const =0;
+ virtual double scaleFactor () const {return scaledSize()/designSize();}
+ virtual double charWidth (int c) const =0;
+ virtual double charDepth (int c) const =0;
+ virtual double charHeight (int c) const =0;
+ virtual double italicCorr (int c) const =0;
+ virtual const FontMetrics* getMetrics () const =0;
+ virtual const char* path () const =0;
+ virtual const char* filename () const;
+ virtual const FontEncoding* encoding () const;
+ virtual bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback *cb=0) const =0;
+ virtual void getGlyphMetrics (int c, bool vertical, GlyphMetrics &metrics) const;
+ virtual uint32_t unicode (uint32_t c) const;
+ virtual void tidy () const {}
+ virtual bool findAndAssignBaseFontMap () {return true;}
+ virtual bool verticalLayout () const {return getMetrics() ? getMetrics()->verticalLayout() : false;}
+ virtual bool verifyChecksums () const {return true;}
+ virtual int fontIndex () const {return 0;}
+ virtual const FontStyle* style () const {return 0;}
+ virtual Color color () const {return Color::BLACK;}
+ virtual const FontMap::Entry* fontMapEntry () const;
+};
+
+
+/** Empty font without any glyphs. Instances of this class are used
+ * if no physical or virtual font file can be found.
+ * The metric values returned by the member functions are based on cmr10. */
+class EmptyFont : public Font {
+ public:
+ EmptyFont (const std::string &name) : _fontname(name) {}
+ Font* clone (double ds, double sc) const override {return new EmptyFont(*this);}
+ const Font* uniqueFont () const override {return this;}
+ std::string name () const override {return _fontname;}
+ double designSize () const override {return 10;} // cmr10 design size in pt
+ double scaledSize () const override {return 10;} // cmr10 scaled size in pt
+ double charWidth (int c) const override {return 9.164;} // width of cmr10's 'M' in pt
+ double charHeight (int c) const override {return 6.833;} // height of cmr10's 'M' in pt
+ double charDepth (int c) const override {return 0;}
+ double italicCorr (int c) const override {return 0;}
+ const FontMetrics* getMetrics () const override {return 0;}
+ const char* path () const override {return 0;}
+ bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback *cb=0) const override {return false;}
+
+ private:
+ std::string _fontname;
+};
+
+
+/** Interface for all physical fonts. */
+class PhysicalFont : public virtual Font {
+ public:
+ enum class Type {MF, OTF, PFB, TTC, TTF, UNKNOWN};
+
+ static Font* create (const std::string &name, uint32_t checksum, double dsize, double ssize, PhysicalFont::Type type);
+ static Font* create (const std::string &name, int fontindex, uint32_t checksum, double dsize, double ssize);
+ virtual Type type () const =0;
+ virtual bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback *cb=0) const override;
+ virtual bool getExactGlyphBox (int c, BoundingBox &bbox, GFGlyphTracer::Callback *cb=0) const;
+ virtual bool getExactGlyphBox (int c, GlyphMetrics &metrics, bool vertical, GFGlyphTracer::Callback *cb=0) const;
+ virtual bool isCIDFont () const;
+ virtual int hAdvance () const;
+ virtual std::string familyName () const;
+ virtual std::string styleName () const;
+ virtual double hAdvance (int c) const;
+ virtual double vAdvance (int c) const;
+ std::string glyphName (int c) const;
+ virtual int unitsPerEm () const;
+ virtual double scaledAscent () const;
+ virtual int ascent () const;
+ virtual int descent () const;
+ virtual int traceAllGlyphs (bool includeCached, GFGlyphTracer::Callback *cb=0) const;
+ virtual int collectCharMapIDs (std::vector<CharMapID> &charmapIDs) const;
+ virtual CharMapID getCharMapID () const =0;
+ virtual void setCharMapID (const CharMapID &id) {}
+ virtual Character decodeChar (uint32_t c) const;
+ const char* path () const override;
+
+ protected:
+ bool createGF (std::string &gfname) const;
+
+ public:
+ static bool EXACT_BBOX;
+ static bool KEEP_TEMP_FILES;
+ static const char *CACHE_PATH; ///< path to cache directory (0 if caching is disabled)
+ static double METAFONT_MAG; ///< magnification factor for Metafont calls
+
+ protected:
+ static FontCache _cache;
+};
+
+
+/** Interface for all virtual fonts. */
+class VirtualFont : public virtual Font {
+ friend class FontManager;
+ public:
+ typedef std::vector<uint8_t> DVIVector;
+
+ public:
+ static Font* create (const std::string &name, uint32_t checksum, double dsize, double ssize);
+ virtual const DVIVector* getDVI (int c) const =0;
+ bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback *cb=0) const override {return false;}
+
+ protected:
+ virtual void assignChar (uint32_t c, DVIVector &&dvi) =0;
+};
+
+
+class TFMFont : public virtual Font {
+ public:
+ TFMFont (const std::string &name, uint32_t checksum, double dsize, double ssize);
+ const FontMetrics* getMetrics () const override;
+ std::string name () const override {return _fontname;}
+ double designSize () const override {return _dsize;}
+ double scaledSize () const override {return _ssize;}
+ double charWidth (int c) const override;
+ double charDepth (int c) const override;
+ double charHeight (int c) const override;
+ double italicCorr (int c) const override;
+ bool verifyChecksums () const override;
+
+ private:
+ mutable std::unique_ptr<FontMetrics> _metrics;
+ std::string _fontname;
+ uint32_t _checksum; ///< cheksum to be compared with TFM checksum
+ double _dsize; ///< design size in PS point units
+ double _ssize; ///< scaled size in PS point units
+};
+
+
+class PhysicalFontProxy : public PhysicalFont {
+ friend class PhysicalFontImpl;
+ public:
+ Font* clone (double ds, double sc) const override {return new PhysicalFontProxy(*this, ds, sc);}
+ const Font* uniqueFont () const override {return _pf;}
+ std::string name () const override {return _pf->name();}
+ double designSize () const override {return _dsize;}
+ double scaledSize () const override {return _ssize;}
+ double charWidth (int c) const override {return _pf->charWidth(c);}
+ double charDepth (int c) const override {return _pf->charDepth(c);}
+ double charHeight (int c) const override {return _pf->charHeight(c);}
+ double italicCorr (int c) const override {return _pf->italicCorr(c);}
+ const FontMetrics* getMetrics () const override {return _pf->getMetrics();}
+ Type type () const override {return _pf->type();}
+ uint32_t unicode (uint32_t c) const override {return _pf->unicode(c);}
+ int fontIndex () const override {return _pf->fontIndex();}
+ const FontStyle* style () const override {return _pf->style();}
+ const FontMap::Entry* fontMapEntry () const override {return _pf->fontMapEntry();}
+ const FontEncoding* encoding () const override {return _pf->encoding();}
+ CharMapID getCharMapID () const override {return _pf->getCharMapID();}
+ int collectCharMapIDs (std::vector<CharMapID> &charmapIDs) const override {return _pf->collectCharMapIDs(charmapIDs);}
+
+ protected:
+ PhysicalFontProxy (const PhysicalFont *font, double ds, double ss) : _pf(font), _dsize(ds), _ssize(ss) {}
+ PhysicalFontProxy (const PhysicalFontProxy &proxy, double ds, double ss) : _pf(proxy._pf), _dsize(ds), _ssize(ss) {}
+
+ private:
+ const PhysicalFont *_pf;
+ double _dsize; ///< design size in PS point units
+ double _ssize; ///< scaled size in PS point units
+};
+
+
+class PhysicalFontImpl : public PhysicalFont, public TFMFont {
+ friend class PhysicalFont;
+ public:
+ ~PhysicalFontImpl();
+ Font* clone (double ds, double ss) const override {return new PhysicalFontProxy(this, ds, ss);}
+ const Font* uniqueFont () const override {return this;}
+ Type type () const override {return _filetype;}
+ int fontIndex() const override {return _fontIndex;}
+ const FontStyle* style () const override {return _fontMapEntry ? &_fontMapEntry->style : 0;}
+ const FontMap::Entry* fontMapEntry () const override {return _fontMapEntry;}
+ const FontEncoding* encoding () const override;
+ uint32_t unicode (uint32_t c) const override;
+ bool findAndAssignBaseFontMap () override;
+ void tidy () const override;
+ CharMapID getCharMapID () const override {return _charmapID;}
+
+ protected:
+ PhysicalFontImpl (const std::string &name, int fontindex, uint32_t checksum, double dsize, double ssize, PhysicalFont::Type type);
+
+ private:
+ Type _filetype;
+ int _fontIndex;
+ const FontMap::Entry *_fontMapEntry;
+ FontEncodingPair _encodingPair;
+ CharMapID _charmapID; ///< ID of the font's charmap to use
+ const RangeMap *_localCharMap;
+};
+
+
+class NativeFont : public PhysicalFont {
+ public:
+ virtual NativeFont* clone (double ptsize, const FontStyle &style, Color color) const =0;
+ virtual Font* clone (double ds, double sc) const override =0;
+ std::string name () const override;
+ Type type () const override;
+ double designSize () const override {return _ptsize;}
+ double scaledSize () const override {return _ptsize;}
+ double charWidth (int c) const override;
+ double charDepth (int c) const override;
+ double charHeight (int c) const override;
+ double italicCorr (int c) const override {return 0;}
+ const FontMetrics* getMetrics () const override {return 0;}
+ const FontStyle* style () const override {return &_style;}
+ Color color () const override {return _color;}
+ const FontMap::Entry* fontMapEntry () const override {return 0;}
+ static std::string uniqueName (const std::string &path, const FontStyle &style);
+
+ protected:
+ NativeFont (double ptsize, const FontStyle &style, Color color) : _ptsize(ptsize), _style(style), _color(color) {}
+
+ private:
+ double _ptsize; ///< font size in PS point units
+ FontStyle _style;
+ Color _color;
+};
+
+
+class NativeFontProxy : public NativeFont {
+ friend class NativeFontImpl;
+ public:
+ NativeFont* clone (double ptsize, const FontStyle &style, Color color) const override {
+ return new NativeFontProxy(this, ptsize, style, color);
+ }
+
+ Font* clone (double ds, double sc) const override {return new NativeFontProxy(this , sc, *style(), color());}
+ const Font* uniqueFont () const override {return _nfont;}
+ const char* path () const override {return _nfont->path();}
+ int fontIndex () const override {return _nfont->fontIndex();}
+ Character decodeChar (uint32_t c) const override {return _nfont->decodeChar(c);}
+ uint32_t unicode (uint32_t c) const override {return _nfont->unicode(c);}
+ CharMapID getCharMapID () const override {return _nfont->getCharMapID();}
+
+ protected:
+ NativeFontProxy (const NativeFont *nfont, double ptsize, const FontStyle &style, Color color)
+ : NativeFont(ptsize, style, color), _nfont(nfont) {}
+
+ private:
+ const NativeFont *_nfont;
+};
+
+
+class NativeFontImpl : public NativeFont {
+ public:
+ NativeFontImpl (const std::string &fname, int fontIndex, double ptsize, const FontStyle &style, Color color)
+ : NativeFont(ptsize, style, color), _path(fname), _fontIndex(fontIndex) {}
+
+ NativeFont* clone (double ptsize, const FontStyle &style, Color color) const override {
+ return new NativeFontProxy(this, ptsize, style, color);
+ }
+
+ Font* clone (double ds, double sc) const override {return new NativeFontProxy(this , sc, *style(), color());}
+ const Font* uniqueFont () const override {return this;}
+ const char* path () const override {return _path.c_str();}
+ int fontIndex() const override {return _fontIndex;}
+ std::string fontFamily () const;
+ bool findAndAssignBaseFontMap () override;
+ CharMapID getCharMapID () const override {return CharMapID::NONE;}
+ Character decodeChar (uint32_t c) const override;
+ uint32_t unicode (uint32_t c) const override;
+
+ private:
+ std::string _path;
+ int _fontIndex;
+ ToUnicodeMap _toUnicodeMap; ///< maps from char indexes to unicode points
+};
+
+
+class VirtualFontProxy : public VirtualFont {
+ friend class VirtualFontImpl;
+ public:
+ Font* clone (double ds, double ss) const override {return new VirtualFontProxy(*this, ds, ss);}
+ const Font* uniqueFont () const override {return _vf;}
+ std::string name () const override {return _vf->name();}
+ const DVIVector* getDVI (int c) const override {return _vf->getDVI(c);}
+ double designSize () const override {return _dsize;}
+ double scaledSize () const override {return _ssize;}
+ double charWidth (int c) const override {return _vf->charWidth(c);}
+ double charDepth (int c) const override {return _vf->charDepth(c);}
+ double charHeight (int c) const override {return _vf->charHeight(c);}
+ double italicCorr (int c) const override {return _vf->italicCorr(c);}
+ const FontMetrics* getMetrics () const override {return _vf->getMetrics();}
+ const char* path () const override {return _vf->path();}
+
+ protected:
+ VirtualFontProxy (const VirtualFont *font, double ds, double ss) : _vf(font), _dsize(ds), _ssize(ss) {}
+ VirtualFontProxy (const VirtualFontProxy &proxy, double ds, double ss) : _vf(proxy._vf), _dsize(ds), _ssize(ss) {}
+ void assignChar (uint32_t c, DVIVector &&dvi) override {}
+
+ private:
+ const VirtualFont *_vf;
+ double _dsize; ///< design size in PS point units
+ double _ssize; ///< scaled size in PS point units
+};
+
+
+class VirtualFontImpl : public VirtualFont, public TFMFont {
+ friend class VirtualFont;
+ public:
+ Font* clone (double ds, double ss) const override {return new VirtualFontProxy(this, ds, ss);}
+ const Font* uniqueFont () const override {return this;}
+ const DVIVector* getDVI (int c) const override;
+ const char* path () const override;
+
+ protected:
+ VirtualFontImpl (const std::string &name, uint32_t checksum, double dsize, double ssize);
+ void assignChar (uint32_t c, DVIVector &&dvi) override;
+
+ private:
+ std::map<uint32_t, DVIVector> _charDefs; ///< dvi subroutines defining the characters
+};
+
+
+struct FontException : public MessageException
+{
+ FontException (const std::string &msg) : MessageException(msg) {}
+};
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontCache.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontCache.cpp
index 30e5043b58e..85114471946 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontCache.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontCache.cpp
@@ -2,7 +2,7 @@
** FontCache.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -25,23 +25,22 @@
#include <fstream>
#include <iomanip>
#include <sstream>
-#include "CRC32.h"
-#include "FileSystem.h"
-#include "FontCache.h"
-#include "Glyph.h"
-#include "Pair.h"
-#include "StreamReader.h"
-#include "StreamWriter.h"
-#include "types.h"
+#include "CRC32.hpp"
+#include "FileSystem.hpp"
+#include "FontCache.hpp"
+#include "Glyph.hpp"
+#include "Pair.hpp"
+#include "StreamReader.hpp"
+#include "StreamWriter.hpp"
using namespace std;
-const UInt8 FontCache::FORMAT_VERSION = 5;
+const uint8_t FontCache::FORMAT_VERSION = 5;
static Pair32 read_pair (int bytes, StreamReader &sr) {
- Int32 x = sr.readSigned(bytes);
- Int32 y = sr.readSigned(bytes);
+ int32_t x = sr.readSigned(bytes);
+ int32_t y = sr.readSigned(bytes);
return Pair32(x, y);
}
@@ -107,8 +106,8 @@ bool FontCache::write (const char* dir) const {
/** Returns the minimal number of bytes needed to store the given value. */
-static int max_int_size (Int32 value) {
- Int32 limit = 0x7f;
+static int max_int_size (int32_t value) {
+ int32_t limit = 0x7f;
for (int i=1; i <= 4; i++) {
if ((value < 0 && -value <= limit+1) || (value >= 0 && value <= limit))
return i;
@@ -120,7 +119,7 @@ static int max_int_size (Int32 value) {
/** Returns the minimal number of bytes needed to store the biggest
* pair component of the given vector. */
-static int max_int_size (const Pair<Int32> *pairs, size_t n) {
+static int max_int_size (const Pair<int32_t> *pairs, size_t n) {
int ret=0;
for (size_t i=0; i < n; i++) {
ret = max(ret, max_int_size(pairs[i].x()));
@@ -147,7 +146,7 @@ bool FontCache::write (const char *fontname, ostream &os) const {
struct WriteActions : Glyph::Actions {
WriteActions (StreamWriter &sw, CRC32 &crc32) : _sw(sw), _crc32(crc32) {}
- void draw (char cmd, const Glyph::Point *points, int n) {
+ void draw (char cmd, const Glyph::Point *points, int n) override {
int bytes = max_int_size(points, n);
int cmdchar = (bytes << 5) | (cmd - 'A');
_sw.writeUnsigned(cmdchar, 1, _crc32);
@@ -164,9 +163,9 @@ bool FontCache::write (const char *fontname, ostream &os) const {
sw.writeUnsigned(0, 4); // space for checksum
sw.writeString(fontname, crc32, true);
sw.writeUnsigned(_glyphs.size(), 4, crc32);
- FORALL(_glyphs, GlyphMap::const_iterator, it) {
- const Glyph &glyph = it->second;
- sw.writeUnsigned(it->first, 4, crc32);
+ for (const auto &charglyphpair : _glyphs) {
+ const Glyph &glyph = charglyphpair.second;
+ sw.writeUnsigned(charglyphpair.first, 4, crc32);
sw.writeUnsigned(glyph.size(), 2, crc32);
glyph.iterate(actions, false);
}
@@ -212,7 +211,7 @@ bool FontCache::read (const char *fontname, istream &is) {
if (sr.readUnsigned(1, crc32) != FORMAT_VERSION)
return false;
- UInt32 crc32_cmp = sr.readUnsigned(4);
+ uint32_t crc32_cmp = sr.readUnsigned(4);
crc32.update(is);
if (crc32.get() != crc32_cmp)
return false;
@@ -224,14 +223,14 @@ bool FontCache::read (const char *fontname, istream &is) {
if (fname != fontname)
return false;
- UInt32 num_glyphs = sr.readUnsigned(4);
+ uint32_t num_glyphs = sr.readUnsigned(4);
while (num_glyphs-- > 0) {
- UInt32 c = sr.readUnsigned(4); // character code
- UInt16 s = sr.readUnsigned(2); // number of path commands
+ uint32_t c = sr.readUnsigned(4); // character code
+ uint16_t s = sr.readUnsigned(2); // number of path commands
Glyph &glyph = _glyphs[c];
while (s-- > 0) {
- UInt8 cmdval = sr.readUnsigned(1);
- UInt8 cmdchar = (cmdval & 0x1f) + 'A';
+ uint8_t cmdval = sr.readUnsigned(1);
+ uint8_t cmdchar = (cmdval & 0x1f) + 'A';
int bytes = cmdval >> 5;
switch (cmdchar) {
case 'C': {
@@ -274,15 +273,15 @@ bool FontCache::fontinfo (const char *dirname, vector<FontInfo> &infos, vector<s
if (dirname) {
vector<string> fnames;
FileSystem::collect(dirname, fnames);
- FORALL(fnames, vector<string>::iterator, it) {
- if ((*it)[0] == 'f' && it->length() > 5 && it->substr(it->length()-4) == ".fgd") {
+ for (const string &fname : fnames) {
+ if (fname[0] == 'f' && fname.length() > 5 && fname.substr(fname.length()-4) == ".fgd") {
FontInfo info;
- string path = string(dirname)+"/"+(it->substr(1));
+ string path = string(dirname)+"/"+(fname.substr(1));
ifstream ifs(path.c_str(), ios::binary);
if (fontinfo(ifs, info))
- infos.push_back(info);
+ infos.emplace_back(move(info));
else
- invalid.push_back(it->substr(1));
+ invalid.emplace_back(fname.substr(1));
}
}
}
@@ -316,12 +315,12 @@ bool FontCache::fontinfo (std::istream &is, FontInfo &info) {
info.name = sr.readString();
info.numchars = sr.readUnsigned(4);
- for (UInt32 i=0; i < info.numchars; i++) {
+ for (uint32_t i=0; i < info.numchars; i++) {
sr.readUnsigned(4); // character code
- UInt16 s = sr.readUnsigned(2); // number of path commands
+ uint16_t s = sr.readUnsigned(2); // number of path commands
while (s-- > 0) {
- UInt8 cmdval = sr.readUnsigned(1);
- UInt8 cmdchar = (cmdval & 0x1f) + 'A';
+ uint8_t cmdval = sr.readUnsigned(1);
+ uint8_t cmdchar = (cmdval & 0x1f) + 'A';
int bytes = cmdval >> 5;
int bc = 0;
switch (cmdchar) {
@@ -361,29 +360,27 @@ void FontCache::fontinfo (const char *dirname, ostream &os, bool purge) {
ios::fmtflags osflags(os.flags());
vector<FontInfo> infos;
vector<string> invalid_files;
- if (fontinfo(dirname, infos, invalid_files)) {
+ if (!fontinfo(dirname, infos, invalid_files))
+ os << "cache is empty\n";
+ else {
os << "cache format version " << infos[0].version << endl;
- typedef map<string,FontInfo*> SortMap;
- SortMap sortmap;
- FORALL(infos, vector<FontInfo>::iterator, it)
- sortmap[it->name] = &(*it);
-
- FORALL(sortmap, SortMap::iterator, it) {
+ map<string, const FontInfo*> sortmap;
+ for (const FontInfo &info : infos)
+ sortmap[info.name] = &info;
+ for (const auto &strinfopair : sortmap) {
os << dec << setfill(' ') << left
- << setw(10) << left << it->second->name
- << setw(5) << right << it->second->numchars << " glyph" << (it->second->numchars == 1 ? ' ':'s')
- << setw(10) << right << it->second->numcmds << " cmd" << (it->second->numcmds == 1 ? ' ':'s')
- << setw(12) << right << it->second->numbytes << " byte" << (it->second->numbytes == 1 ? ' ':'s')
- << setw(6) << "crc:" << setw(8) << hex << right << setfill('0') << it->second->checksum
+ << setw(10) << left << strinfopair.second->name
+ << setw(5) << right << strinfopair.second->numchars << " glyph" << (strinfopair.second->numchars == 1 ? ' ':'s')
+ << setw(10) << right << strinfopair.second->numcmds << " cmd" << (strinfopair.second->numcmds == 1 ? ' ':'s')
+ << setw(12) << right << strinfopair.second->numbytes << " byte" << (strinfopair.second->numbytes == 1 ? ' ':'s')
+ << setw(6) << "crc:" << setw(8) << hex << right << setfill('0') << strinfopair.second->checksum
<< endl;
}
}
- else
- os << "cache is empty\n";
- FORALL(invalid_files, vector<string>::iterator, it) {
- string path=string(dirname)+"/"+(*it);
+ for (const string &str : invalid_files) {
+ string path=string(dirname)+"/"+str;
if (FileSystem::remove(path))
- os << "invalid cache file " << (*it) << " removed\n";
+ os << "invalid cache file " << str << " removed\n";
}
os.flags(osflags); // restore format flags
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontCache.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontCache.hpp
index 3fea7db79af..f58997ae036 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontCache.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontCache.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** FontCache.h **
+** FontCache.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,12 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_FONTCACHE_H
-#define DVISVGM_FONTCACHE_H
+#ifndef FONTCACHE_HPP
+#define FONTCACHE_HPP
#include <string>
#include <map>
-#include "types.h"
-#include "Glyph.h"
+#include "Glyph.hpp"
class FontCache
@@ -34,12 +33,12 @@ class FontCache
public:
struct FontInfo
{
- std::string name; // fontname
- UInt16 version; // file format version
- UInt32 checksum; // CRC32 checksum of file data
- UInt32 numchars; // number of characters
- UInt32 numbytes; // number of bytes
- UInt32 numcmds; // number of path commands
+ std::string name; // fontname
+ uint16_t version; // file format version
+ uint32_t checksum; // CRC32 checksum of file data
+ uint32_t numchars; // number of characters
+ uint32_t numbytes; // number of bytes
+ uint32_t numcmds; // number of path commands
};
public:
@@ -60,7 +59,7 @@ class FontCache
static void fontinfo (const char *dirname, std::ostream &os, bool purge=false);
private:
- static const UInt8 FORMAT_VERSION;
+ static const uint8_t FORMAT_VERSION;
std::string _fontname;
GlyphMap _glyphs;
bool _changed;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEncoding.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEncoding.cpp
index 8c5382d6b9c..886ab0ec6c6 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEncoding.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEncoding.cpp
@@ -2,7 +2,7 @@
** FontEncoding.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,11 +19,11 @@
*************************************************************************/
#include <config.h>
-#include "CMap.h"
-#include "CMapManager.h"
-#include "EncFile.h"
-#include "FileFinder.h"
-#include "FontEncoding.h"
+#include "CMap.hpp"
+#include "CMapManager.hpp"
+#include "EncFile.hpp"
+#include "FileFinder.hpp"
+#include "FontEncoding.hpp"
using namespace std;
@@ -31,8 +31,8 @@ using namespace std;
struct EncodingMap : public map<string, EncFile*>
{
~EncodingMap () {
- for (EncodingMap::iterator it=begin(); it != end(); ++it)
- delete it->second;
+ for (auto &entry : *this)
+ delete entry.second;
}
};
@@ -48,7 +48,7 @@ FontEncoding* FontEncoding::encoding (const string &encname) {
EncodingMap::const_iterator it = encmap.find(encname);
if (it != encmap.end())
return it->second;
- if (FileFinder::lookup(encname + ".enc", false)) {
+ if (FileFinder::instance().lookup(encname + ".enc", false)) {
EncFile *enc = new EncFile(encname);
encmap[encname] = enc;
return enc;
@@ -61,7 +61,7 @@ FontEncoding* FontEncoding::encoding (const string &encname) {
/////////////////////////////////////////////////////////////////////////
-Character FontEncodingPair::decode (UInt32 c) const {
+Character FontEncodingPair::decode (uint32_t c) const {
if (_enc1) {
Character chr = _enc1->decode(c);
if (_enc2 && chr.type() != Character::NAME)
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEncoding.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEncoding.hpp
index fe0efc27f55..ea0f15e4beb 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEncoding.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEncoding.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** FontEncoding.h **
+** FontEncoding.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,12 +18,11 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_FONTENCODING_H
-#define DVISVGM_FONTENCODING_H
+#ifndef FONTENCODING_HPP
+#define FONTENCODING_HPP
#include <string>
-#include "Character.h"
-#include "types.h"
+#include "Character.hpp"
struct CharMapID;
@@ -31,8 +30,8 @@ class PhysicalFont;
struct FontEncoding
{
- virtual ~FontEncoding () {}
- virtual Character decode (UInt32 c) const =0;
+ virtual ~FontEncoding () =default;
+ virtual Character decode (uint32_t c) const =0;
virtual bool mapsToCharIndex () const =0;
virtual const FontEncoding* findCompatibleBaseFontMap (const PhysicalFont *font, CharMapID &charmapID) const {return 0;}
static FontEncoding* encoding (const std::string &encname);
@@ -51,9 +50,9 @@ class FontEncodingPair : public FontEncoding
public:
FontEncodingPair (const FontEncoding *enc1) : _enc1(enc1), _enc2(0) {}
FontEncodingPair (const FontEncoding *enc1, const FontEncoding *enc2) : _enc1(enc1), _enc2(enc2) {}
- Character decode (UInt32 c) const;
- bool mapsToCharIndex () const;
- const FontEncoding* findCompatibleBaseFontMap (const PhysicalFont *font, CharMapID &charmapID) const;
+ Character decode (uint32_t c) const override;
+ bool mapsToCharIndex () const override;
+ const FontEncoding* findCompatibleBaseFontMap (const PhysicalFont *font, CharMapID &charmapID) const override;
const FontEncoding* enc1 () const {return _enc1;}
const FontEncoding* enc2 () const {return _enc2;}
void assign (const FontEncoding *enc);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEngine.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEngine.cpp
index 1e446a6b811..61128964655 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEngine.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEngine.cpp
@@ -2,7 +2,7 @@
** FontEngine.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -26,10 +26,10 @@
#include FT_OUTLINE_H
#include FT_TRUETYPE_TABLES_H
#include FT_TYPES_H
-#include "Font.h"
-#include "FontEngine.h"
-#include "FontStyle.h"
-#include "Message.h"
+#include "Font.hpp"
+#include "FontEngine.hpp"
+#include "FontStyle.hpp"
+#include "Message.hpp"
using namespace std;
@@ -133,7 +133,7 @@ bool FontEngine::setCharMap (const CharMapID &charMapID) {
void FontEngine::buildCharMap (RangeMap &charmap) {
charmap.clear();
FT_UInt glyph_index;
- UInt32 charcode = FT_Get_First_Char(_currentFace, &glyph_index);
+ uint32_t charcode = FT_Get_First_Char(_currentFace, &glyph_index);
while (glyph_index) {
charmap.addRange(glyph_index, glyph_index, charcode);
charcode = FT_Get_Next_Char(_currentFace, charcode, &glyph_index);
@@ -153,9 +153,9 @@ const RangeMap* FontEngine::createCustomToUnicodeMap () {
return 0;
RangeMap *charmap = new RangeMap;
FT_UInt glyph_index;
- UInt32 unicode_point = FT_Get_First_Char(_currentFace, &glyph_index);
+ uint32_t unicode_point = FT_Get_First_Char(_currentFace, &glyph_index);
while (glyph_index) {
- UInt32 custom_charcode = index_to_source_chrcode.valueAt(glyph_index);
+ uint32_t custom_charcode = index_to_source_chrcode.valueAt(glyph_index);
charmap->addRange(custom_charcode, custom_charcode, unicode_point);
unicode_point = FT_Get_Next_Char(_currentFace, unicode_point, &glyph_index);
}
@@ -179,15 +179,19 @@ int FontEngine::getUnitsPerEM () const {
}
-/** Returns the ascender of the current font in font units. */
+/** Returns the ascender of the current font in font units.
+ * The (usually) positive value denotes the maximum height
+ * (extent above the baseline) of the font. */
int FontEngine::getAscender () const {
return _currentFace ? _currentFace->ascender : 0;
}
-/** Returns the descender of the current font in font units. */
+/** Returns the descender of the current font in font units.
+ * The (usually) positive value denotes the maximum depth
+ * (extent below the baseline) of the font. */
int FontEngine::getDescender () const {
- return _currentFace ? _currentFace->descender : 0;
+ return _currentFace ? -_currentFace->descender : 0;
}
@@ -299,7 +303,7 @@ int FontEngine::getCharMapIDs (vector<CharMapID> &charmapIDs) const {
if (_currentFace) {
for (int i=0; i < _currentFace->num_charmaps; i++) {
FT_CharMap charmap = _currentFace->charmaps[i];
- charmapIDs.push_back(CharMapID(charmap->platform_id, charmap->encoding_id));
+ charmapIDs.emplace_back(CharMapID(charmap->platform_id, charmap->encoding_id));
}
}
return charmapIDs.size();
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEngine.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEngine.hpp
index 499c0c7450a..a2ec3947c2b 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEngine.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontEngine.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** FontEngine.h **
+** FontEngine.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_FONTENGINE_H
-#define DVISVGM_FONTENGINE_H
+#ifndef FONTENGINE_HPP
+#define FONTENGINE_HPP
#include <ft2build.h>
#include FT_FREETYPE_H
@@ -27,11 +27,10 @@
#include <map>
#include <string>
#include <vector>
-#include "Character.h"
-#include "CharMapID.h"
-#include "Glyph.h"
-#include "RangeMap.h"
-#include "types.h"
+#include "Character.hpp"
+#include "CharMapID.hpp"
+#include "Glyph.hpp"
+#include "RangeMap.hpp"
class Font;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp
index 546d5ca646d..885a596b7cd 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp
@@ -2,7 +2,7 @@
** FontManager.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -23,22 +23,16 @@
#include <cstdlib>
#include <fstream>
#include <set>
-#include "CMap.h"
-#include "Font.h"
-#include "FontManager.h"
-#include "FileFinder.h"
-#include "FileSystem.h"
-#include "Message.h"
+#include "CMap.hpp"
+#include "Font.hpp"
+#include "FontManager.hpp"
+#include "FileFinder.hpp"
+#include "FileSystem.hpp"
+#include "Message.hpp"
using namespace std;
-FontManager::~FontManager () {
- FORALL(_fonts, vector<Font*>::iterator, i)
- delete *i;
-}
-
-
/** Returns the singleton instance */
FontManager& FontManager::instance () {
static FontManager fm;
@@ -51,14 +45,14 @@ FontManager& FontManager::instance () {
* @return non-negative font ID if font was found, -1 otherwise */
int FontManager::fontID (int n) const {
if (_vfStack.empty()) {
- Num2IdMap::const_iterator it = _num2id.find(n);
+ auto it = _num2id.find(n);
return (it == _num2id.end()) ? -1 : it->second;
}
VfNum2IdMap::const_iterator vit = _vfnum2id.find(_vfStack.top());
if (vit == _vfnum2id.end())
return -1;
const Num2IdMap &num2id = vit->second;
- Num2IdMap::const_iterator it = num2id.find(n);
+ auto it = num2id.find(n);
return (it == num2id.end()) ? -1 : it->second;
}
@@ -70,7 +64,7 @@ int FontManager::fontID (int n) const {
* @return non-negative font ID if font was found, -1 otherwise */
int FontManager::fontID (const Font *font) const {
for (size_t i=0; i < _fonts.size(); i++)
- if (_fonts[i] == font)
+ if (_fonts[i].get() == font)
return i;
return -1;
}
@@ -80,7 +74,7 @@ int FontManager::fontID (const Font *font) const {
* @param[in] name name of font to be identified, e.g. cmr10
* @return non-negative font ID if font was found, -1 otherwise */
int FontManager::fontID (const string &name) const {
- map<string,int>::const_iterator it = _name2id.find(name);
+ auto it = _name2id.find(name);
if (it == _name2id.end())
return -1;
return it->second;
@@ -91,18 +85,17 @@ int FontManager::fontnum (int id) const {
if (id < 0 || size_t(id) > _fonts.size())
return -1;
if (_vfStack.empty()) {
- FORALL(_num2id, Num2IdMap::const_iterator, i)
- if (i->second == id)
- return i->first;
+ for (const auto &entry : _num2id)
+ if (entry.second == id)
+ return entry.first;
}
else {
- VfNum2IdMap::const_iterator it = _vfnum2id.find(_vfStack.top());
+ auto it = _vfnum2id.find(_vfStack.top());
if (it == _vfnum2id.end())
return -1;
- const Num2IdMap &num2id = it->second;
- FORALL(num2id, Num2IdMap::const_iterator, i)
- if (i->second == id)
- return i->first;
+ for (const auto &entry : it->second)
+ if (entry.second == id)
+ return entry.first;
}
return -1;
}
@@ -119,7 +112,7 @@ int FontManager::vfFirstFontNum (const VirtualFont *vf) const {
* @return pointer to font if font was found, 0 otherwise */
Font* FontManager::getFont (int n) const {
int id = fontID(n);
- return (id < 0) ? 0 : _fonts[id];
+ return (id < 0) ? 0 : _fonts[id].get();
}
@@ -127,14 +120,14 @@ Font* FontManager::getFont (const string &name) const {
int id = fontID(name);
if (id < 0)
return 0;
- return _fonts[id];
+ return _fonts[id].get();
}
Font* FontManager::getFontById (int id) const {
if (id < 0 || size_t(id) >= _fonts.size())
return 0;
- return _fonts[id];
+ return _fonts[id].get();
}
@@ -144,23 +137,23 @@ const VirtualFont* FontManager::getVF () const {
}
-static Font* create_font (const string &filename, const string &fontname, int fontindex, UInt32 checksum, double dsize, double ssize) {
+static Font* create_font (const string &filename, const string &fontname, int fontindex, uint32_t checksum, double dsize, double ssize) {
string ext;
if (const char *dot = strrchr(filename.c_str(), '.'))
ext = dot+1;
- if (!ext.empty() && FileFinder::lookup(filename)) {
+ if (!ext.empty() && FileFinder::instance().lookup(filename)) {
if (ext == "pfb")
- return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::PFB);
+ return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::Type::PFB);
if (ext == "otf")
- return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::OTF);
+ return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::Type::OTF);
if (ext == "ttf")
- return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::TTF);
+ return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::Type::TTF);
if (ext == "ttc")
return PhysicalFont::create(fontname, fontindex, checksum, dsize, ssize);
if (ext == "vf")
return VirtualFont::create(fontname, checksum, dsize, ssize);
if (ext == "mf")
- return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::MF);
+ return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::Type::MF);
}
return 0;
}
@@ -174,17 +167,17 @@ static Font* create_font (const string &filename, const string &fontname, int fo
* @param[in] dsize design size in PS point units
* @param[in] ssize scaled size in PS point units
* @return id of registered font */
-int FontManager::registerFont (UInt32 fontnum, string name, UInt32 checksum, double dsize, double ssize) {
+int FontManager::registerFont (uint32_t fontnum, const string &name, uint32_t checksum, double dsize, double ssize) {
int id = fontID(fontnum);
if (id >= 0)
return id;
- Font *newfont = 0;
+ unique_ptr<Font> newfont;
const int newid = _fonts.size(); // the new font gets this ID
Name2IdMap::iterator it = _name2id.find(name);
if (it != _name2id.end()) { // font with same name already registered?
- Font *font = _fonts[it->second];
- newfont = font->clone(dsize, ssize);
+ const auto &font = _fonts[it->second];
+ newfont.reset(font->clone(dsize, ssize));
}
else {
string filename = name;
@@ -196,12 +189,12 @@ int FontManager::registerFont (UInt32 fontnum, string name, UInt32 checksum, dou
}
// try to find font file with the exact given name
if (filename.rfind(".") != string::npos)
- newfont = create_font(filename, name, fontindex, checksum, dsize, ssize);
+ newfont.reset(create_font(filename, name, fontindex, checksum, dsize, ssize));
else {
// try various font file formats if the given file has no extension
const char *exts[] = {"pfb", "otf", "ttc", "ttf", "vf", "mf", 0};
for (const char **p = exts; *p && !newfont; ++p)
- newfont = create_font(filename+"."+*p, name, fontindex, checksum, dsize, ssize);
+ newfont.reset(create_font(filename+"."+*p, name, fontindex, checksum, dsize, ssize));
}
if (newfont) {
if (!newfont->findAndAssignBaseFontMap())
@@ -211,7 +204,7 @@ int FontManager::registerFont (UInt32 fontnum, string name, UInt32 checksum, dou
}
else {
// create dummy font as a placeholder if the proper font is not available
- newfont = new EmptyFont(name);
+ newfont.reset(new EmptyFont(name));
if (filename.rfind(".") == string::npos)
filename += ".mf";
// print warning message about missing font file (only once for each filename)
@@ -223,11 +216,11 @@ int FontManager::registerFont (UInt32 fontnum, string name, UInt32 checksum, dou
}
_name2id[name] = newid;
}
- _fonts.push_back(newfont);
+ _fonts.emplace_back(std::move(newfont));
if (_vfStack.empty()) // register font referenced in dvi file?
_num2id[fontnum] = newid;
else { // register font referenced in vf file
- VirtualFont *vf = const_cast<VirtualFont*>(_vfStack.top());
+ const VirtualFont *vf = _vfStack.top();
_vfnum2id[vf][fontnum] = newid;
if (_vfFirstFontMap.find(vf) == _vfFirstFontMap.end()) // first fontdef of VF?
_vfFirstFontMap[vf] = fontnum;
@@ -244,7 +237,7 @@ int FontManager::registerFont (UInt32 fontnum, string name, UInt32 checksum, dou
* @param[in] style font style parameters
* @param[in] color global font color
* @return global font id */
-int FontManager::registerFont (UInt32 fontnum, string filename, double ptsize, const FontStyle &style, Color color) {
+int FontManager::registerFont (uint32_t fontnum, const string &filename, double ptsize, const FontStyle &style, Color color) {
return registerFont(fontnum, filename, 0, ptsize, style, color);
}
@@ -258,7 +251,7 @@ int FontManager::registerFont (UInt32 fontnum, string filename, double ptsize, c
* @param[in] style font style parameters
* @param[in] color global font color
* @return global font id */
-int FontManager::registerFont (UInt32 fontnum, string filename, int fontIndex, double ptsize, const FontStyle &style, Color color) {
+int FontManager::registerFont (uint32_t fontnum, string filename, int fontIndex, double ptsize, const FontStyle &style, Color color) {
int id = fontID(fontnum);
if (id >= 0)
return id;
@@ -267,23 +260,23 @@ int FontManager::registerFont (UInt32 fontnum, string filename, int fontIndex, d
filename = filename.substr(1, filename.size()-2);
string fontname = NativeFont::uniqueName(filename, style);
const char *path = filename.c_str();
- Font *newfont=0;
+ unique_ptr<Font> newfont;
const int newid = _fonts.size(); // the new font gets this ID
Name2IdMap::iterator it = _name2id.find(fontname);
if (it != _name2id.end()) { // font with same name already registered?
- if (NativeFont *font = dynamic_cast<NativeFont*>(_fonts[it->second]))
- newfont = font->clone(ptsize, style, color);
+ if (NativeFont *font = dynamic_cast<NativeFont*>(_fonts[it->second].get()))
+ newfont.reset(font->clone(ptsize, style, color));
}
else {
if (!FileSystem::exists(path))
- path = FileFinder::lookup(filename, false);
+ path = FileFinder::instance().lookup(filename, false);
if (path) {
- newfont = new NativeFontImpl(path, fontIndex, ptsize, style, color);
+ newfont.reset(new NativeFontImpl(path, fontIndex, ptsize, style, color));
newfont->findAndAssignBaseFontMap();
}
if (!newfont) {
// create dummy font as a placeholder if the proper font is not available
- newfont = new EmptyFont(filename);
+ newfont.reset(new EmptyFont(filename));
// print warning message about missing font file (only once for each filename)
static set<string> missing_fonts;
if (missing_fonts.find(filename) == missing_fonts.end()) {
@@ -293,7 +286,7 @@ int FontManager::registerFont (UInt32 fontnum, string filename, int fontIndex, d
}
_name2id[fontname] = newid;
}
- _fonts.push_back(newfont);
+ _fonts.emplace_back(std::move(newfont));
_num2id[fontnum] = newid;
return newid;
}
@@ -317,10 +310,10 @@ void FontManager::leaveVF () {
/** Assigns a sequence of DVI commands to a char code.
* @param[in] c character code
- * @param[in] dvi points to vector with DVI commands */
-void FontManager::assignVfChar (int c, vector<UInt8> *dvi) {
- if (!_vfStack.empty() && dvi)
- _vfStack.top()->assignChar(c, dvi);
+ * @param[in] dvi DVI commands that describe character c */
+void FontManager::assignVFChar (int c, vector<uint8_t> &&dvi) {
+ if (!_vfStack.empty())
+ _vfStack.top()->assignChar(c, std::move(dvi));
}
@@ -328,8 +321,8 @@ ostream& FontManager::write (ostream &os, Font *font, int level) {
#if 0
if (font) {
int id = -1;
- for (int i=0; i < fonts.size() && id < 0; i++)
- if (fonts[i] == font)
+ for (int i=0; i < _fonts.size() && id < 0; i++)
+ if (_fonts[i] == font)
id = i;
VirtualFont *vf = dynamic_cast<VirtualFont*>(font);
@@ -343,20 +336,19 @@ ostream& FontManager::write (ostream &os, Font *font, int level) {
if (vf) {
enterVF(vf);
- const Num2IdMap &num2id = vfnum2id.find(vf)->second;
- FORALL(num2id, Num2IdMap::const_iterator, i) {
- Font *font = fonts[i->second];
+ const Num2IdMap &num2id = _vfnum2id.find(vf)->second;
+ for (const auto &entry : num2id) {
+ Font *font = _fonts[entry.second];
write(os, font, level+1);
}
leaveVF();
}
}
else {
- for (int i=0; i < fonts.size(); i++)
- write(os, fonts[i], level);
+ for (int i=0; i < _fonts.size(); i++)
+ write(os, _fonts[i], level);
os << endl;
}
#endif
return os;
}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp
index 7e249a9b9da..ade32bec26c 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** FontManager.h **
+** FontManager.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,23 +18,23 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_FONTMANAGER_H
-#define DVISVGM_FONTMANAGER_H
+#ifndef FONTMANAGER_HPP
+#define FONTMANAGER_HPP
#include <map>
+#include <memory>
#include <ostream>
#include <set>
#include <string>
#include <stack>
#include <vector>
-#include "Color.h"
-#include "FontStyle.h"
-#include "types.h"
+#include "Color.hpp"
+#include "FontStyle.hpp"
-struct FileFinder;
+class FileFinder;
class Font;
-class VirtualFont;
+class VirtualFont;
/** This class provides methods for easy DVI font handling.
* DVI and VF files use local font numbers to reference fonts. For SVG output
@@ -43,18 +43,17 @@ class VirtualFont;
* appear anywhere in the output. */
class FontManager
{
- typedef std::map<UInt32,int> Num2IdMap;
+ typedef std::map<uint32_t,int> Num2IdMap;
typedef std::map<std::string,int> Name2IdMap;
typedef std::map<const VirtualFont*,Num2IdMap> VfNum2IdMap;
- typedef std::map<const VirtualFont*, UInt32> VfFirstFontMap;
+ typedef std::map<const VirtualFont*, uint32_t> VfFirstFontMap;
typedef std::stack<VirtualFont*> VfStack;
public:
- ~FontManager ();
static FontManager& instance ();
- int registerFont (UInt32 fontnum, std::string fontname, UInt32 checksum, double dsize, double scale);
- int registerFont (UInt32 fontnum, std::string fname, double ptsize, const FontStyle &style, Color color);
- int registerFont (UInt32 fontnum, std::string fname, int fontIndex, double ptsize, const FontStyle &style, Color color);
+ int registerFont (uint32_t fontnum, const std::string &fontname, uint32_t checksum, double dsize, double scale);
+ int registerFont (uint32_t fontnum, const std::string &fname, double ptsize, const FontStyle &style, Color color);
+ int registerFont (uint32_t fontnum, std::string fname, int fontIndex, double ptsize, const FontStyle &style, Color color);
Font* getFont (int n) const;
Font* getFont (const std::string &name) const;
Font* getFontById (int id) const;
@@ -66,15 +65,14 @@ class FontManager
int vfFirstFontNum (const VirtualFont *vf) const;
void enterVF (VirtualFont *vf);
void leaveVF ();
- void assignVfChar (int c, std::vector<UInt8> *dvi);
- const std::vector<Font*>& getFonts () const {return _fonts;}
+ void assignVFChar (int c, std::vector<uint8_t> &&dvi);
std::ostream& write (std::ostream &os, Font *font=0, int level=0);
protected:
- FontManager () {}
+ FontManager () =default;
private:
- std::vector<Font*> _fonts; ///< all registered Fonts
+ std::vector<std::unique_ptr<Font>> _fonts; ///< all registered Fonts
Num2IdMap _num2id; ///< DVI font number -> fontID
Name2IdMap _name2id; ///< fontname -> fontID
VfNum2IdMap _vfnum2id;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMap.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMap.cpp
index 0698e71121f..e91d9c7eaa6 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMap.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMap.cpp
@@ -2,7 +2,7 @@
** FontMap.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,28 +19,22 @@
*************************************************************************/
#include <config.h>
+#include <algorithm>
#include <cstring>
#include <fstream>
#include <limits>
#include <vector>
-#include "CMap.h"
-#include "Directory.h"
-#include "FileFinder.h"
-#include "FontManager.h"
-#include "FontMap.h"
-#include "MapLine.h"
-#include "Message.h"
-#include "Subfont.h"
+#include "CMap.hpp"
+#include "Directory.hpp"
+#include "FileFinder.hpp"
+#include "FontManager.hpp"
+#include "FontMap.hpp"
+#include "MapLine.hpp"
+#include "Message.hpp"
+#include "Subfont.hpp"
using namespace std;
-
-FontMap::~FontMap () {
- for (Iterator it=_entries.begin(); it != _entries.end(); ++it)
- delete it->second;
-}
-
-
/** Returns the singleton instance. */
FontMap& FontMap::instance() {
static FontMap fontmap;
@@ -86,9 +80,9 @@ bool FontMap::read (const string &fname, FontMap::Mode mode) {
bool FontMap::read (const string &fname, char modechar) {
Mode mode;
switch (modechar) {
- case '=': mode = FM_REPLACE; break;
- case '-': mode = FM_REMOVE; break;
- default : mode = FM_APPEND;
+ case '=': mode = Mode::REPLACE; break;
+ case '-': mode = Mode::REMOVE; break;
+ default : mode = Mode::APPEND;
}
return read(fname, mode);
}
@@ -100,9 +94,9 @@ bool FontMap::read (const string &fname, char modechar) {
* @return true in case of success */
bool FontMap::apply (const MapLine& mapline, FontMap::Mode mode) {
switch (mode) {
- case FM_APPEND:
+ case Mode::APPEND:
return append(mapline);
- case FM_REMOVE:
+ case Mode::REMOVE:
return remove(mapline);
default:
return replace(mapline);
@@ -117,9 +111,9 @@ bool FontMap::apply (const MapLine& mapline, FontMap::Mode mode) {
bool FontMap::apply (const MapLine& mapline, char modechar) {
Mode mode;
switch (modechar) {
- case '=': mode = FM_REPLACE; break;
- case '-': mode = FM_REMOVE; break;
- default : mode = FM_APPEND;
+ case '=': mode = Mode::REPLACE; break;
+ case '-': mode = Mode::REMOVE; break;
+ default : mode = Mode::APPEND;
}
return apply(mapline, mode);
}
@@ -146,7 +140,7 @@ bool FontMap::read (const string &fname_seq) {
}
if (!fname.empty()) {
if (!read(fname, modechar)) {
- if (const char *path = FileFinder::lookup(fname, false))
+ if (const char *path = FileFinder::instance().lookup(fname, false))
found = found || read(path, modechar);
else
Message::wstream(true) << "map file " << fname << " not found\n";
@@ -163,7 +157,7 @@ bool FontMap::read (const string &fname_seq) {
* @param[in] mapline parsed font data
* @return true if data has been appended */
bool FontMap::append (const MapLine &mapline) {
- bool ret = false;
+ bool appended = false;
if (!mapline.texname().empty()) {
if (!mapline.fontfname().empty() || !mapline.encname().empty()) {
vector<Subfont*> subfonts;
@@ -171,17 +165,17 @@ bool FontMap::append (const MapLine &mapline) {
mapline.sfd()->subfonts(subfonts);
else
subfonts.push_back(0);
- for (size_t i=0; i < subfonts.size(); i++) {
- string fontname = mapline.texname()+(subfonts[i] ? subfonts[i]->id() : "");
- Iterator it = _entries.find(fontname);
+ for (Subfont *subfont : subfonts) {
+ string fontname = mapline.texname()+(subfont ? subfont->id() : "");
+ auto it = _entries.find(fontname);
if (it == _entries.end()) {
- _entries[fontname] = new Entry(mapline, subfonts[i]);
- ret = true;
+ _entries[fontname].reset(new Entry(mapline, subfont));
+ appended = true;
}
}
}
}
- return ret;
+ return appended;
}
@@ -200,13 +194,13 @@ bool FontMap::replace (const MapLine &mapline) {
mapline.sfd()->subfonts(subfonts);
else
subfonts.push_back(0);
- for (size_t i=0; i < subfonts.size(); i++) {
- string fontname = mapline.texname()+(subfonts[i] ? subfonts[i]->id() : "");
- Iterator it = _entries.find(fontname);
+ for (Subfont *subfont : subfonts) {
+ string fontname = mapline.texname()+(subfont ? subfont->id() : "");
+ auto it = _entries.find(fontname);
if (it == _entries.end())
- _entries[fontname] = new Entry(mapline, subfonts[i]);
+ _entries[fontname].reset(new Entry(mapline, subfont));
else if (!it->second->locked)
- *it->second = Entry(mapline, subfonts[i]);
+ *it->second = Entry(mapline, subfont);
}
return true;
}
@@ -217,29 +211,29 @@ bool FontMap::replace (const MapLine &mapline) {
* @param[in] mapline parsed font data
* @return true if entry has been removed */
bool FontMap::remove (const MapLine &mapline) {
- bool ret = false;
+ bool removed = false;
if (!mapline.texname().empty()) {
vector<Subfont*> subfonts;
if (mapline.sfd())
mapline.sfd()->subfonts(subfonts);
else
subfonts.push_back(0);
- for (size_t i=0; i < subfonts.size(); i++) {
- string fontname = mapline.texname()+(subfonts[i] ? subfonts[i]->id() : "");
- Iterator it = _entries.find(fontname);
+ for (const Subfont *subfont : subfonts) {
+ string fontname = mapline.texname()+(subfont ? subfont->id() : "");
+ auto it = _entries.find(fontname);
if (it != _entries.end() && !it->second->locked) {
_entries.erase(it);
- ret = true;
+ removed = true;
}
}
}
- return ret;
+ return removed;
}
ostream& FontMap::write (ostream &os) const {
- for (ConstIterator it=_entries.begin(); it != _entries.end(); ++it)
- os << it->first << " -> " << it->second->fontname << " [" << it->second->encname << "]\n";
+ for (const auto &entry : _entries)
+ os << entry.first << " -> " << entry.second->fontname << " [" << entry.second->encname << "]\n";
return os;
}
@@ -261,17 +255,17 @@ void FontMap::readdir (const string &dirname) {
* @param[in] fontname name of font whose mapped name is retrieved
* @returns name of mapped font */
const FontMap::Entry* FontMap::lookup (const string &fontname) const {
- ConstIterator it = _entries.find(fontname);
+ auto it = _entries.find(fontname);
if (it == _entries.end())
return 0;
- return it->second;
+ return it->second.get();
}
/** Sets the lock flag for the given font in order to avoid changing the map data of this font.
* @param[in] fontname name of font to be locked */
void FontMap::lockFont (const string& fontname) {
- Iterator it = _entries.find(fontname);
+ auto it = _entries.find(fontname);
if (it != _entries.end())
it->second->locked = true;
}
@@ -283,14 +277,12 @@ void FontMap::clear (bool unlocked_only) {
if (!unlocked_only)
_entries.clear();
else {
- Iterator it=_entries.begin();
+ auto it=_entries.begin();
while (it != _entries.end()) {
if (it->second->locked)
++it;
- else {
- delete it->second;
- _entries.erase(it++);
- }
+ else
+ it = _entries.erase(it);
}
}
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMap.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMap.hpp
index 4a4c7e0374a..103bb6aa89a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMap.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMap.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** FontMap.h **
+** FontMap.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,14 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_FONTMAP_H
-#define DVISVGM_FONTMAP_H
+#ifndef FONTMAP_HPP
+#define FONTMAP_HPP
#include <map>
+#include <memory>
#include <ostream>
#include <string>
-#include "FontStyle.h"
+#include "FontStyle.hpp"
struct FontEncoding;
@@ -37,6 +38,9 @@ class FontMap
struct Entry
{
Entry (const MapLine &mapline, Subfont *subfont=0);
+ Entry (const Entry &entry) =delete;
+ Entry (Entry &&entry) =default;
+ Entry& operator = (Entry &&entry) =default;
std::string fontname; ///< target font name
std::string encname; ///< name of font encoding
Subfont *subfont;
@@ -45,14 +49,9 @@ class FontMap
FontStyle style;
};
- protected:
- typedef std::map<std::string,Entry*>::iterator Iterator;
- typedef std::map<std::string,Entry*>::const_iterator ConstIterator;
-
public:
- enum Mode {FM_APPEND, FM_REMOVE, FM_REPLACE};
+ enum class Mode {APPEND, REMOVE, REPLACE};
- ~FontMap ();
static FontMap& instance ();
bool read (const std::string &fname, Mode mode);
bool read (const std::string &fname, char modechar);
@@ -66,13 +65,13 @@ class FontMap
void lockFont (const std::string &fontname);
void clear (bool unlocked_only=false);
std::ostream& write (std::ostream &os) const;
- const Entry* lookup(const std::string &fontname) const;
+ const Entry* lookup (const std::string &fontname) const;
protected:
- FontMap () {}
+ FontMap () =default;
private:
- std::map<std::string,Entry*> _entries;
+ std::map<std::string,std::unique_ptr<Entry>> _entries;
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMetrics.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMetrics.cpp
index c50d010802c..375062f7f0a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMetrics.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMetrics.cpp
@@ -2,7 +2,7 @@
** FontMetrics.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,19 +20,19 @@
#include <config.h>
#include <fstream>
-#include "FileFinder.h"
-#include "FontMetrics.h"
-#include "JFM.h"
+#include "FileFinder.hpp"
+#include "FontMetrics.hpp"
+#include "JFM.hpp"
using namespace std;
FontMetrics* FontMetrics::read (const char *fontname) {
- const char *path = FileFinder::lookup(string(fontname) + ".tfm");
+ const char *path = FileFinder::instance().lookup(string(fontname) + ".tfm");
ifstream ifs(path, ios::binary);
if (!ifs)
return 0;
- UInt16 id = 256*ifs.get();
+ uint16_t id = 256*ifs.get();
id += ifs.get();
if (id == 9 || id == 11) // Japanese font metric file?
return new JFM(ifs);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMetrics.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMetrics.hpp
index 07c4d7e69cb..cdf462a5a20 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMetrics.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontMetrics.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** FontMetrics.h **
+** FontMetrics.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,16 +18,15 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_FONTMETRICS_H
-#define DVISVGM_FONTMETRICS_H
+#ifndef FONTMETRICS_HPP
+#define FONTMETRICS_HPP
#include <istream>
-#include "MessageException.h"
-#include "types.h"
+#include "MessageException.hpp"
struct FontMetrics
{
- virtual ~FontMetrics () {}
+ virtual ~FontMetrics () =default;
virtual double getDesignSize () const =0;
virtual double getCharWidth (int c) const =0;
virtual double getCharHeight (int c) const =0;
@@ -37,29 +36,33 @@ struct FontMetrics
virtual double getSpaceStretch () const =0;
virtual double getSpaceShrink () const =0;
virtual double getQuad () const =0;
+ virtual double getAscent () const =0;
+ virtual double getDescent () const =0;
virtual bool verticalLayout () const =0;
- virtual UInt32 getChecksum () const =0;
- virtual UInt16 firstChar () const =0;
- virtual UInt16 lastChar () const =0;
+ virtual uint32_t getChecksum () const =0;
+ virtual uint16_t firstChar () const =0;
+ virtual uint16_t lastChar () const =0;
static FontMetrics* read (const char *fontname);
};
struct NullFontMetric : public FontMetrics
{
- double getDesignSize () const {return 1;}
- double getCharWidth (int c) const {return 0;}
- double getCharHeight (int c) const {return 0;}
- double getCharDepth (int c) const {return 0;}
- double getItalicCorr (int c) const {return 0;}
- double getSpace () const {return 0;}
- double getSpaceStretch () const {return 0;}
- double getSpaceShrink () const {return 0;}
- double getQuad () const {return 0;}
- bool verticalLayout () const {return false;}
- UInt32 getChecksum () const {return 0;}
- UInt16 firstChar () const {return 0;}
- UInt16 lastChar () const {return 0;}
+ double getDesignSize () const override {return 1;}
+ double getCharWidth (int c) const override {return 0;}
+ double getCharHeight (int c) const override {return 0;}
+ double getCharDepth (int c) const override {return 0;}
+ double getItalicCorr (int c) const override {return 0;}
+ double getSpace () const override {return 0;}
+ double getSpaceStretch () const override {return 0;}
+ double getSpaceShrink () const override {return 0;}
+ double getQuad () const override {return 0;}
+ double getAscent () const override {return 0;}
+ double getDescent () const override {return 0;}
+ bool verticalLayout () const override {return false;}
+ uint32_t getChecksum () const override {return 0;}
+ uint16_t firstChar () const override {return 0;}
+ uint16_t lastChar () const override {return 0;}
};
@@ -68,5 +71,4 @@ struct FontMetricException : public MessageException
FontMetricException (const std::string &msg) : MessageException(msg) {}
};
-
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontStyle.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontStyle.hpp
index 4594986a2dc..fc2a952142a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontStyle.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontStyle.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** FontStyle.h **
+** FontStyle.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontWriter.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontWriter.cpp
new file mode 100644
index 00000000000..86a822db976
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontWriter.cpp
@@ -0,0 +1,258 @@
+/*************************************************************************
+** FontWriter.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <config.h>
+#include <algorithm>
+#include <array>
+#include "FontWriter.hpp"
+#include "utility.hpp"
+
+using namespace std;
+
+bool FontWriter::AUTOHINT_FONTS = false;
+
+const array<FontWriter::FontFormatInfo, 4> FontWriter::_formatInfos = {{
+ {FontWriter::FontFormat::SVG, "image/svg+xml", "svg", "svg"},
+ {FontWriter::FontFormat::TTF, "application/x-font-ttf", "ttf", "truetype"},
+ {FontWriter::FontFormat::WOFF, "application/x-font-woff", "woff", "woff"},
+ {FontWriter::FontFormat::WOFF2, "application/x-font-woff2", "woff2", "woff2"},
+}};
+
+
+/** Returns the corresponding FontFormat for a given format name (e.g. "svg", "woff" etc.). */
+FontWriter::FontFormat FontWriter::toFontFormat (string formatstr) {
+ util::tolower(formatstr);
+ for (const FontFormatInfo &info : _formatInfos) {
+ if (formatstr == info.formatstr_short)
+ return info.format;
+ }
+ return FontFormat::UNKNOWN;
+}
+
+
+/** Returns the corresponding FontFormatInfo for a given FontFormat. */
+const FontWriter::FontFormatInfo* FontWriter::fontFormatInfo (FontFormat format) {
+ for (const FontFormatInfo &info : _formatInfos) {
+ if (format == info.format)
+ return &info;
+ }
+ return nullptr;
+}
+
+
+/** Returns the names of all supported font formats. */
+vector<string> FontWriter::supportedFormats () {
+ vector<string> formats;
+ for (const FontFormatInfo &info : _formatInfos)
+ formats.emplace_back(info.formatstr_short);
+ return formats;
+}
+
+
+#ifdef DISABLE_WOFF
+// dummy functions used if WOFF support is disabled
+FontWriter::FontWriter (const PhysicalFont &font) : _font(font) {}
+std::string FontWriter::createFontFile (FontFormat format, const set<int> &charcodes, GFGlyphTracer::Callback *cb) const {return "";}
+bool FontWriter::writeCSSFontFace (FontFormat format, const set<int> &charcodes, ostream &os, GFGlyphTracer::Callback *cb) const {return false;}
+#else
+#include <cmath>
+#include <fstream>
+#include <iomanip>
+#include <sstream>
+#include <woff2_enc.h>
+#include <file.h>
+#include "ffwrapper.h"
+#include "Bezier.hpp"
+#include "FileSystem.hpp"
+#include "Font.hpp"
+#include "Glyph.hpp"
+#include "utility.hpp"
+
+
+FontWriter::FontWriter (const PhysicalFont &font) : _font(font) {
+ static bool initialized=false;
+ if (!initialized) {
+ ff_init();
+ initialized = true;
+ }
+}
+
+
+struct SFDActions : Glyph::Actions {
+ SFDActions (ostream &os) : _os(os) {}
+ void draw (char cmd, const Glyph::Point *points, int n) override {
+ if (cmd == 'Q') {
+ // convert quadratic Bézier curve to cubic one
+ DPair p0(_currentPoint.x(), _currentPoint.y());
+ DPair p1(points[0].x(), points[0].y());
+ DPair p2(points[1].x(), points[1].y());
+ Bezier bezier(p0, p1, p2);
+ for (int i=1; i < 4; i++)
+ _os << lround(bezier.point(i).x()) << ' ' << lround(bezier.point(i).y()) << ' ';
+ _os << 'c';
+ }
+ else {
+ for (int i=0; i < n; i++)
+ _os << points[i].x() << ' ' << points[i].y() << ' ';
+ switch (cmd) {
+ case 'M': _os << 'm'; _startPoint = points[0]; break;
+ case 'L': _os << 'l'; break;
+ case 'C': _os << 'c'; break;
+ case 'Z': _os << _startPoint.x() << ' ' << _startPoint.y() << " l"; _currentPoint = _startPoint; break;
+ }
+ }
+ if (n > 0)
+ _currentPoint = points[n-1];
+ _os << " 0\n";
+ }
+ ostream &_os;
+ Glyph::Point _startPoint, _currentPoint;
+};
+
+
+/** Creates a Spline Font Database (SFD) file describing the font and its glyphs.
+ * https://fontforge.github.io/sfdformat.html */
+static void writeSFD (const string &sfdname, const PhysicalFont &font, const set<int> &charcodes, GFGlyphTracer::Callback *cb) {
+ ofstream sfd(sfdname);
+ if (!sfd)
+ throw FontWriterException("failed writing SFD file "+sfdname);
+
+ sfd <<
+ "SplineFontDB: 3.0\n"
+ "FontName: " << font.name() << '\n';
+
+ // ensure that the sum of the SFD's Ascent and Descent values equals the font's units per EM
+ double yext = font.ascent()+font.descent();
+ double scale = double(font.unitsPerEm())/(yext != 0 ? yext : fabs(font.ascent()));
+ sfd <<
+ "Ascent: " << font.ascent()*scale << "\n"
+ "Descent: " << font.descent()*scale << "\n"
+ "LayerCount: 2\n" // number of layers must be 2 at least
+ "Layer: 0 0 \"Back\" 1\n" // layer 0: background layer with cubic splines
+ "Layer: 1 0 \"Fore\" 0\n" // layer 1: foreground layer with cubic splines
+ "Encoding: UnicodeFull\n" // character codes can use the full Unicode range
+ "BeginChars: 1114112 " << charcodes.size() << '\n';
+
+ double extend = font.style() ? font.style()->extend : 1;
+ for (int c : charcodes) {
+ string name = font.glyphName(c);
+ if (name.empty()) {
+ // if the font doesn't provide glyph names, use AGL name uFOO
+ ostringstream oss;
+ oss << 'u' << hex << uppercase << setw(4) << setfill('0') << c;
+ name = oss.str();
+ }
+ uint32_t codepoint = font.unicode(c);
+ sfd <<
+ "StartChar: " << name << "\n"
+ "Encoding: " << codepoint << ' ' << codepoint << " 0\n"
+ "Width: " << font.hAdvance(c)*extend << "\n"
+ "VWidth: " << font.vAdvance(c) << "\n"
+ "Fore\n"
+ "SplineSet\n";
+ Glyph glyph;
+ if (font.getGlyph(c, glyph, cb)) {
+ SFDActions actions(sfd);
+ glyph.iterate(actions, false);
+ }
+ sfd <<
+ "EndSplineSet\n"
+ "EndChar\n";
+ }
+ sfd.flush();
+ sfd.close();
+ if (sfd.fail())
+ throw FontWriterException("failed writing SFD file "+sfdname);
+}
+
+
+/** Creates a font file containing a given set of glyphs mapped to their Unicode points.
+ * @param[in] format target font format
+ * @param[in] charcodes character codes of the glyphs to be considered
+ * @param[in] cb callback object that allows to react to events triggered by the glyph tracer
+ * @return name of the created font file */
+string FontWriter::createFontFile (FontFormat format, const set<int> &charcodes, GFGlyphTracer::Callback *cb) const {
+ string tmpdir = FileSystem::tmpdir();
+ string sfdname = tmpdir+_font.name()+"-tmp.sfd";
+ writeSFD(sfdname, _font, charcodes, cb);
+ bool ok = false;
+ string targetname = tmpdir+_font.name()+"-tmp."+fontFormatInfo(format)->formatstr_short;
+ switch (format) {
+ case FontFormat::TTF:
+ ok = ff_sfd_to_ttf(sfdname.c_str(), targetname.c_str(), AUTOHINT_FONTS);
+ break;
+ case FontFormat::WOFF:
+ ok = ff_sfd_to_woff(sfdname.c_str(), targetname.c_str(), AUTOHINT_FONTS);
+ break;
+ case FontFormat::WOFF2: {
+ string ttfname = tmpdir+_font.name()+".ttf";
+ if (ff_sfd_to_ttf(sfdname.c_str(), ttfname.c_str(), AUTOHINT_FONTS)) {
+ string input = woff2::GetFileContent(ttfname);
+ const uint8_t* input_data = reinterpret_cast<const uint8_t*>(input.data());
+ size_t output_size = woff2::MaxWOFF2CompressedSize(input_data, input.size());
+ string output(output_size, 0);
+ uint8_t* output_data = reinterpret_cast<uint8_t*>(&output[0]);
+ woff2::WOFF2Params params;
+ if (woff2::ConvertTTFToWOFF2(input_data, input.size(), output_data, &output_size, params)) {
+ output.resize(output_size);
+ woff2::SetFileContents(targetname, output.begin(), output.end());
+ ok = true;
+ }
+ if (!PhysicalFont::KEEP_TEMP_FILES)
+ FileSystem::remove(ttfname);
+ }
+ break;
+ }
+ default:;
+ }
+ if (!PhysicalFont::KEEP_TEMP_FILES)
+ FileSystem::remove(sfdname);
+ if (!ok)
+ throw FontWriterException("failed writing "+string(fontFormatInfo(format)->formatstr_short)+ " file " + targetname);
+ return targetname;
+}
+
+
+/** Writes a CSS font-face rule to an output stream that references or contains the WOFF/TTF font data.
+ * @param[in] format target font format
+ * @param[in] charcodes character codes of the glyphs to be considered
+ * @param[in] os stream the CSS data is written to
+ * @param[in] cb callback object that allows to react to events triggered by the glyph tracer
+ * @return true on success */
+bool FontWriter::writeCSSFontFace (FontFormat format, const set<int> &charcodes, ostream &os, GFGlyphTracer::Callback *cb) const {
+ if (const FontFormatInfo *info = fontFormatInfo(format)) {
+ string filename = createFontFile(format, charcodes, cb);
+ ifstream ifs(filename, ios::binary);
+ if (ifs) {
+ os << "@font-face{"
+ << "font-family:" << _font.name() << ';'
+ << "src:url(data:" << info->mimetype << ";base64,";
+ util::base64_copy(istreambuf_iterator<char>(ifs), istreambuf_iterator<char>(), ostreambuf_iterator<char>(os));
+ os << ") format('" << info->formatstr_long << "');}\n";
+ ifs.close();
+ if (!PhysicalFont::KEEP_TEMP_FILES)
+ FileSystem::remove(filename);
+ return true;
+ }
+ }
+ return false;
+}
+
+#endif // !DISABLE_WOFF
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontWriter.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontWriter.hpp
new file mode 100644
index 00000000000..05995200383
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontWriter.hpp
@@ -0,0 +1,66 @@
+/*************************************************************************
+** FontWriter.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef FONTWRITER_HPP
+#define FONTWRITER_HPP
+
+#include <ostream>
+#include <set>
+#include <string>
+#include <vector>
+#include "GFGlyphTracer.hpp"
+#include "MessageException.hpp"
+
+class PhysicalFont;
+
+class FontWriter {
+ public:
+ enum class FontFormat {UNKNOWN, SVG, TTF, WOFF, WOFF2};
+ static bool AUTOHINT_FONTS;
+
+ public:
+ FontWriter (const PhysicalFont &font);
+ std::string createFontFile (FontFormat format, const std::set<int> &charcodes, GFGlyphTracer::Callback *cb=0) const;
+ bool writeCSSFontFace (FontFormat format, const std::set<int> &charcodes, std::ostream &os, GFGlyphTracer::Callback *cb=0) const;
+ static FontFormat toFontFormat (std::string formatstr);
+ static std::vector<std::string> supportedFormats ();
+
+ protected:
+ struct FontFormatInfo {
+ FontWriter::FontFormat format;
+ const char *mimetype;
+ const char *formatstr_short;
+ const char *formatstr_long;
+ };
+
+ static const FontFormatInfo* fontFormatInfo (FontFormat format);
+
+ private:
+ const PhysicalFont &_font;
+ static const std::array<FontFormatInfo, 4> _formatInfos;
+};
+
+
+struct FontWriterException : MessageException {
+ FontWriterException (const std::string &msg) : MessageException(msg) {}
+};
+
+#endif
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.cpp
index 6e70e55327a..79b3d085782 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.cpp
@@ -2,7 +2,7 @@
** GFGlyphTracer.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,7 +19,7 @@
*************************************************************************/
#include <config.h>
-#include "GFGlyphTracer.h"
+#include "GFGlyphTracer.hpp"
using namespace std;
@@ -49,7 +49,7 @@ void GFGlyphTracer::reset (string &fname, double upp) {
}
-bool GFGlyphTracer::executeChar (UInt8 c) {
+bool GFGlyphTracer::executeChar (uint8_t c) {
if (!_glyph)
return false;
@@ -86,7 +86,7 @@ void GFGlyphTracer::closePath () {
}
-void GFGlyphTracer::endChar (UInt32 c) {
+void GFGlyphTracer::endChar (uint32_t c) {
_glyph->clear();
GFTracer::endChar(c);
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.hpp
index 99a19dcb6d7..4ccad3fd19e 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFGlyphTracer.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** GFGlyphTracer.h **
+** GFGlyphTracer.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,23 +18,23 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_GFGLYPHTRACER_H
-#define DVISVGM_GFGLYPHTRACER_H
+#ifndef GFGLYPHTRACER_HPP
+#define GFGLYPHTRACER_HPP
#include <fstream>
#include <string>
-#include "GFTracer.h"
-#include "Glyph.h"
+#include "GFTracer.hpp"
+#include "Glyph.hpp"
class GFGlyphTracer : public GFTracer
{
public:
struct Callback {
- virtual ~Callback () {}
+ virtual ~Callback () =default;
virtual void setFont (const std::string &fontname) {}
- virtual void beginChar (UInt8 c) {}
- virtual void endChar (UInt8 c) {}
- virtual void emptyChar (UInt8 c) {}
+ virtual void beginChar (uint8_t c) {}
+ virtual void endChar (uint8_t c) {}
+ virtual void emptyChar (uint8_t c) {}
};
public:
@@ -42,12 +42,12 @@ class GFGlyphTracer : public GFTracer
GFGlyphTracer (std::string &fname, double upp, Callback *cb=0);
void reset (std::string &fname, double upp);
void setCallback (Callback *cb) {_callback = cb;}
- bool executeChar (UInt8 c);
- void moveTo (double x, double y);
- void lineTo (double x, double y);
- void curveTo (double c1x, double c1y, double c2x, double c2y, double x, double y);
- void closePath ();
- void endChar (UInt32 c);
+ bool executeChar (uint8_t c) override;
+ void moveTo (double x, double y) override;
+ void lineTo (double x, double y) override;
+ void curveTo (double c1x, double c1y, double c2x, double c2y, double x, double y) override;
+ void closePath () override;
+ void endChar (uint32_t c) override;
void setGlyph (Glyph &glyph) {_glyph = &glyph;}
const Glyph& getGlyph () const {return *_glyph;}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp
index e44b3548b67..2321ad85d04 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp
@@ -2,7 +2,7 @@
** GFReader.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,11 +20,14 @@
#include <config.h>
#include <sstream>
-#include "GFReader.h"
-#include "SignalHandler.h"
+#include "FixWord.hpp"
+#include "GFReader.hpp"
+#include "Length.hpp"
+#include "SignalHandler.hpp"
using namespace std;
+
struct GFCommand
{
void (GFReader::*method)(int);
@@ -32,13 +35,8 @@ struct GFCommand
};
-/** Converts a fix point length to double (PS point units) */
-static inline double fix2double (Int32 fix) {
- return double(fix)/(1 << 20)*72/72.27;
-}
-
-
-static inline double scaled2double (Int32 scaled) {
+/** Converts a scaled value to double */
+static inline double scaled2double (int32_t scaled) {
return double(scaled)/(1 << 16);
}
@@ -53,18 +51,18 @@ GFReader::GFReader (istream &is) : _in(is), _insideCharDef(false), _penDown(fals
}
-UInt32 GFReader::readUnsigned (int bytes) {
- UInt32 ret = 0;
+uint32_t GFReader::readUnsigned (int bytes) {
+ uint32_t ret = 0;
for (int i=bytes-1; i >= 0 && !_in.eof(); i--) {
- UInt32 b = _in.get();
+ uint32_t b = _in.get();
ret |= b << (8*i);
}
return ret;
}
-Int32 GFReader::readSigned (int bytes) {
- Int32 ret = _in.get();
+int32_t GFReader::readSigned (int bytes) {
+ int32_t ret = _in.get();
if (ret & 128) // negative value?
ret |= 0xffffff00;
for (int i=bytes-2; i >= 0 && !_in.eof(); i--)
@@ -126,12 +124,12 @@ int GFReader::executeCommand () {
}
-bool GFReader::executeChar (UInt8 c) {
+bool GFReader::executeChar (uint8_t c) {
_in.clear();
if (_charInfoMap.empty())
executePostamble(); // read character info
_in.clear();
- Iterator it = _charInfoMap.find(c);
+ auto it = _charInfoMap.find(c);
if (_in && it != _charInfoMap.end()) {
_in.seekg(it->second.location);
while (executeCommand() != 69); // execute all commands until eoc is reached
@@ -177,31 +175,16 @@ bool GFReader::executePostamble () {
_in.seekg(-5, ios::cur); // now on postpost
if (_in.get() != 249)
throw GFException("invalid GF file");
- UInt32 q = readUnsigned(4); // pointer to begin of postamble
+ uint32_t q = readUnsigned(4); // pointer to begin of postamble
_in.seekg(q); // now on begin of postamble
while (executeCommand() != 249); // execute all commands until postpost is reached
return true;
}
-/** Returns the design size of this font in PS point units. */
-double GFReader::getDesignSize () const {
- return fix2double(_designSize);
-}
-
-/** Returns the number of horizontal pixels per point. */
-double GFReader::getHPixelsPerPoint () const {
- return scaled2double(_hppp)*72/72.27;
-}
-
-/** Returns the number of vertical pixels per point. */
-double GFReader::getVPixelsPerPoint () const {
- return scaled2double(_vppp)*72/72.27;
-}
-
/** Returns the width of character c in PS point units */
-double GFReader::getCharWidth (UInt32 c) const {
- ConstIterator it = _charInfoMap.find(c%256);
+double GFReader::getCharWidth (uint32_t c) const {
+ auto it = _charInfoMap.find(c%256);
return it == _charInfoMap.end() ? 0 : it->second.width*getDesignSize()/(1<<24);
}
@@ -210,11 +193,11 @@ double GFReader::getCharWidth (UInt32 c) const {
/** Reads the preamble. */
void GFReader::cmdPre (int) {
- UInt32 i = readUnsigned(1);
+ uint32_t i = readUnsigned(1);
if (i != 131)
throw GFException("invalid identification byte in preamble");
else {
- UInt32 k = readUnsigned(1);
+ uint32_t k = readUnsigned(1);
string s = readString(k);
preamble(s);
}
@@ -224,10 +207,10 @@ void GFReader::cmdPre (int) {
/** Reads the postamble. */
void GFReader::cmdPost (int) {
readUnsigned(4); // pointer to byte after final eoc
- _designSize = readUnsigned(4); // design size of font in points
+ _designSize = double(FixWord(readUnsigned(4)))*Length::pt2bp; // design size of font in points
_checksum = readUnsigned(4); // checksum
- _hppp = readUnsigned(4); // horizontal pixels per point (scaled int)
- _vppp = readUnsigned(4); // vertical pixels per point (scaled int)
+ _hppp = scaled2double(readUnsigned(4))/Length::pt2bp; // horizontal pixels per PS point
+ _vppp = scaled2double(readUnsigned(4))/Length::pt2bp; // vertical pixels per PS point
_in.seekg(16, ios::cur); // skip x and y bounds
postamble();
}
@@ -236,7 +219,7 @@ void GFReader::cmdPost (int) {
/** Reads trailing bytes at end of stream. */
void GFReader::cmdPostPost (int) {
readUnsigned(4); // pointer to begin of postamble
- UInt32 i = readUnsigned(1);
+ uint32_t i = readUnsigned(1);
if (i != 131)
throw GFException("invalid identification byte in postpost");
while (readUnsigned(1) == 223); // skip fill bytes
@@ -249,10 +232,10 @@ void GFReader::cmdPostPost (int) {
void GFReader::cmdPaint0 (int n) {
if (!_insideCharDef)
throw GFException("character-related command outside BOC and EOC");
- if (_penDown) // set pixels?
+ if (_penDown) // set pixels?
_bitmap.setBits(_y, _x, n);
_x += n;
- _penDown = !_penDown; // inverse pen state
+ _penDown = !_penDown; // invert pen state
}
@@ -261,7 +244,7 @@ void GFReader::cmdPaint0 (int n) {
* the input stream.
* @param[in] len size of n in bytes */
void GFReader::cmdPaint (int len) {
- UInt32 pixels = readUnsigned(len);
+ uint32_t pixels = readUnsigned(len);
cmdPaint0(pixels);
}
@@ -286,10 +269,10 @@ void GFReader::cmdBoc (int) {
/** Beginning of character (compact format). */
void GFReader::cmdBoc1 (int) {
_currentChar = readUnsigned(1);
- UInt32 dx = readUnsigned(1);
+ uint32_t dx = readUnsigned(1);
_maxX = readUnsigned(1);
_minX = _maxX - dx;
- UInt32 dy = readUnsigned(1);
+ uint32_t dy = readUnsigned(1);
_maxY = readUnsigned(1);
_minY = _maxY - dy;
_x = _minX;
@@ -339,14 +322,14 @@ void GFReader::cmdNewRow (int col) {
void GFReader::cmdXXX (int len) {
- UInt32 n = readUnsigned(len);
+ uint32_t n = readUnsigned(len);
string str = readString(n);
special(str);
}
void GFReader::cmdYYY (int) {
- Int32 y = readSigned(4);
+ int32_t y = readSigned(4);
numspecial(y);
}
@@ -358,22 +341,22 @@ void GFReader::cmdNop (int) {
/** Reads character locator (part of postamble) */
void GFReader::cmdCharLoc0 (int) {
- UInt8 c = readUnsigned(1); // character code mod 256
- UInt8 dm = readUnsigned(1); //
- Int32 w = readSigned(4); // (1<<24)*characterWidth/designSize
- Int32 p = readSigned(4); // pointer to begin of (last) character data
- Int32 dx = 65536*dm;
- Int32 dy = 0;
+ uint8_t c = readUnsigned(1); // character code mod 256
+ uint8_t dm = readUnsigned(1); //
+ int32_t w = readSigned(4); // (1<<24)*characterWidth/designSize
+ int32_t p = readSigned(4); // pointer to begin of (last) character data
+ int32_t dx = 65536*dm;
+ int32_t dy = 0;
_charInfoMap[c] = CharInfo(dx, dy, w, p);
}
/** Reads character locator (part of postamble) */
void GFReader::cmdCharLoc (int) {
- UInt32 c = readUnsigned(1); // character code mod 256
- Int32 dx = readSigned(4); // horizontal escapement (scaled pixel units)
- Int32 dy = readSigned(4); // vertical escapement (scaled pixel units)
- Int32 w = readSigned(4); // (1<<24)*characterWidth/designSize
- Int32 p = readSigned(4); // pointer to begin of (last) character data
+ uint32_t c = readUnsigned(1); // character code mod 256
+ int32_t dx = readSigned(4); // horizontal escapement (scaled pixel units)
+ int32_t dy = readSigned(4); // vertical escapement (scaled pixel units)
+ int32_t w = readSigned(4); // (1<<24)*characterWidth/designSize
+ int32_t p = readSigned(4); // pointer to begin of (last) character data
_charInfoMap[c] = CharInfo(dx, dy, w, p);
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.hpp
index ce8ee53b7a5..6ca0dc3fca1 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** GFReader.h **
+** GFReader.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,15 +18,14 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_GFREADER_H
-#define DVISVGM_GFREADER_H
+#ifndef GFREADER_HPP
+#define GFREADER_HPP
#include <istream>
#include <map>
#include <string>
-#include "Bitmap.h"
-#include "MessageException.h"
-#include "types.h"
+#include "Bitmap.hpp"
+#include "MessageException.hpp"
class CharInfo;
@@ -43,38 +42,36 @@ class GFReader
struct CharInfo
{
CharInfo () : dx(0), dy(0), width(0), location(0) {}
- CharInfo (Int32 dxx, Int32 dyy, Int32 w, UInt32 p) : dx(dxx), dy(dyy), width(w), location(p) {}
+ CharInfo (int32_t dxx, int32_t dyy, int32_t w, uint32_t p) : dx(dxx), dy(dyy), width(w), location(p) {}
- Int32 dx, dy;
- Int32 width; // 2^24 * (true width)/(design size)
- UInt32 location;
+ int32_t dx, dy;
+ int32_t width; // 2^24 * (true width)/(design size)
+ uint32_t location;
};
- typedef std::map<UInt8,CharInfo>::iterator Iterator;
- typedef std::map<UInt8,CharInfo>::const_iterator ConstIterator;
public:
- GFReader (std::istream &is);
- virtual ~GFReader () {}
- bool executeChar (UInt8 c);
- bool executeAllChars ();
+ explicit GFReader (std::istream &is);
+ virtual ~GFReader () =default;
+ virtual bool executeChar (uint8_t c);
+ virtual bool executeAllChars ();
bool executePreamble ();
bool executePostamble ();
virtual void preamble (const std::string &str) {}
virtual void postamble () {}
- virtual void beginChar (UInt32 c) {}
- virtual void endChar (UInt32 c) {}
- virtual void special (std::string str) {}
- virtual void numspecial (Int32 y) {}
- const Bitmap& getBitmap () const {return _bitmap;}
- double getDesignSize () const;
- double getHPixelsPerPoint () const;
- double getVPixelsPerPoint () const;
- double getCharWidth (UInt32 c) const;
- UInt32 getChecksum () const {return _checksum;}
+ virtual void beginChar (uint32_t c) {}
+ virtual void endChar (uint32_t c) {}
+ virtual void special (const std::string &str) {}
+ virtual void numspecial (int32_t y) {}
+ const Bitmap& getBitmap () const {return _bitmap;}
+ double getDesignSize () const {return _designSize;}
+ double getHPixelsPerPoint () const {return _hppp;}
+ double getVPixelsPerPoint () const {return _vppp;};
+ double getCharWidth (uint32_t c) const;
+ uint32_t getChecksum () const {return _checksum;}
protected:
- Int32 readSigned (int bytes);
- UInt32 readUnsigned (int bytes);
+ int32_t readSigned (int bytes);
+ uint32_t readUnsigned (int bytes);
std::string readString (int len);
int executeCommand ();
std::istream& getInputStream () const {return _in;}
@@ -97,15 +94,15 @@ class GFReader
private:
std::istream &_in;
- Int32 _minX, _maxX, _minY, _maxY;
- Int32 _x, _y; ///< current pen location (pixel units)
- Int32 _currentChar;
- Bitmap _bitmap; ///< bitmap of current char
- FixWord _designSize; ///< designSize
- ScaledInt _hppp, _vppp; ///< horizontal and vertical pixel per point
- UInt32 _checksum;
- std::map<UInt8,CharInfo> _charInfoMap;
- bool _insideCharDef; ///< true if inside a character definition (between BOC and EOC)
+ int32_t _minX, _maxX, _minY, _maxY;
+ int32_t _x, _y; ///< current pen location (pixel units)
+ int32_t _currentChar;
+ Bitmap _bitmap; ///< bitmap of current char
+ double _designSize; ///< designSize in PS points
+ double _hppp, _vppp; ///< horizontal and vertical pixel per point
+ uint32_t _checksum;
+ std::map<uint8_t,CharInfo> _charInfoMap;
+ bool _insideCharDef; ///< true if inside a character definition (between BOC and EOC)
bool _penDown;
};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.cpp
index 87518f872c8..66f16f05bff 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.cpp
@@ -2,7 +2,7 @@
** GFTracer.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,9 +21,9 @@
#include <config.h>
#include <fstream>
#include <potracelib.h>
-#include "GFTracer.h"
-#include "Glyph.h"
-#include "Message.h"
+#include "GFTracer.hpp"
+#include "Glyph.hpp"
+#include "Message.hpp"
using namespace std;
@@ -43,11 +43,11 @@ GFTracer::GFTracer (istream &is, double upp)
}
-void GFTracer::beginChar (UInt32 c) {
+void GFTracer::beginChar (uint32_t c) {
}
-void GFTracer::endChar (UInt32 c) {
+void GFTracer::endChar (uint32_t c) {
const Bitmap &bitmap = getBitmap();
if (bitmap.empty())
return;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.hpp
index a282e253b81..229ef2593fe 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFTracer.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** GFTracer.h **
+** GFTracer.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,24 +18,24 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_GFTRACER_H
-#define DVISVGM_GFTRACER_H
+#ifndef GFTRACER_HPP
+#define GFTRACER_HPP
#include <istream>
-#include "GFReader.h"
+#include "GFReader.hpp"
class GFTracer : public GFReader
{
public:
GFTracer (std::istream &is);
GFTracer (std::istream &is, double upp);
- virtual ~GFTracer () {}
+ virtual ~GFTracer () =default;
virtual void moveTo (double x, double y) =0;
virtual void lineTo (double x, double y) =0;
virtual void curveTo (double c1x, double c1y, double c2x, double c2y, double x, double y) =0;
virtual void closePath () =0;
- void beginChar (UInt32 c);
- void endChar (UInt32 c);
+ void beginChar (uint32_t c) override;
+ void endChar (uint32_t c) override;
protected:
void unitsPerPoint(double upp) {_unitsPerPoint = upp;}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.cpp
index 2388f737bb2..1798f35a1b5 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.cpp
@@ -2,7 +2,7 @@
** Ghostscript.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,7 +19,7 @@
*************************************************************************/
#include <config.h>
-#include "Ghostscript.h"
+#include "Ghostscript.hpp"
#if !defined(DISABLE_GS)
#include <cstring>
#include <iomanip>
@@ -28,7 +28,7 @@
#include <ghostscript/ierrors.h>
#else
#include "ierrors.h"
- #include "FileFinder.h"
+ #include "FileFinder.hpp"
#endif
using namespace std;
@@ -45,7 +45,7 @@ static string get_path_from_registry () {
#ifdef RRF_RT_REG_SZ // RegGetValueA and RRF_RT_REG_SZ may not be defined for some oldish MinGW
REGSAM mode = KEY_READ|KEY_QUERY_VALUE;
#ifdef KEY_WOW64_64KEY
-#ifdef __WIN64__
+#ifdef _WIN64
mode |= KEY_WOW64_64KEY;
#else
mode |= KEY_WOW64_32KEY;
@@ -89,13 +89,13 @@ static string get_libgs (const string &fname) {
if (!fname.empty())
return fname;
#ifdef MIKTEX
-#if defined(__WIN64__)
+#if defined(_WIN64)
const char *gsdll = "mgsdll64.dll";
#else
const char *gsdll = "mgsdll32.dll";
#endif
// try to look up the Ghostscript DLL coming with MiKTeX
- if (const char *gsdll_path = FileFinder::lookup(gsdll))
+ if (const char *gsdll_path = FileFinder::instance().lookup(gsdll))
return gsdll_path;
#endif // MIKTEX
#if defined(_WIN32)
@@ -104,7 +104,7 @@ static string get_libgs (const string &fname) {
if (!gsdll_path.empty())
return gsdll_path;
#endif
-#if defined(__WIN64__)
+#if defined(_WIN64)
return "gsdll64.dll";
#elif defined(_WIN32)
return "gsdll32.dll";
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.hpp
index 82522489104..01f4b3abea2 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Ghostscript.h **
+** Ghostscript.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_GHOSTSCRIPT_H
-#define DVISVGM_GHOSTSCRIPT_H
+#ifndef GHOSTSCRIPT_HPP
+#define GHOSTSCRIPT_HPP
#include <config.h>
#include <string>
@@ -29,7 +29,7 @@
#elif defined(HAVE_LIBGS)
#include <ghostscript/iapi.h>
#else
- #include "DLLoader.h"
+ #include "DLLoader.hpp"
#include "iapi.h"
#endif
@@ -74,6 +74,7 @@ class Ghostscript
public:
Ghostscript ();
Ghostscript (int argc, const char **argv, void *caller=0);
+ Ghostscript (const Ghostscript &gs) =delete;
~Ghostscript ();
bool init (int argc, const char **argv, void *caller=0);
bool available ();
@@ -89,7 +90,6 @@ class Ghostscript
static std::string LIBGS_NAME;
protected:
- Ghostscript (const Ghostscript &gs) : _inst(0) {}
int init_with_args (int argc, char **argv);
int new_instance (void **psinst, void *caller);
void delete_instance ();
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Glyph.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Glyph.hpp
index 98eccbf2fe5..cc593a269aa 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Glyph.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Glyph.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Glyph.h **
+** Glyph.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,11 +18,11 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_GLYPH_H
-#define DVISVGM_GLYPH_H
+#ifndef GLYPH_HPP
+#define GLYPH_HPP
-#include "GraphicsPath.h"
+#include "GraphicsPath.hpp"
-typedef GraphicsPath<Int32> Glyph;
+typedef GraphicsPath<int32_t> Glyph;
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GlyphTracerMessages.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/GlyphTracerMessages.hpp
index 0eeaab478c2..b77a582796b 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GlyphTracerMessages.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GlyphTracerMessages.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** GlyphTracerMessages.h **
+** GlyphTracerMessages.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,12 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_GLYPHTRACERMESSAGES_H
-#define DVISVGM_GLYPHTRACERMESSAGES_H
+#ifndef GLYPHTRACERMESSAGES_HPP
+#define GLYPHTRACERMESSAGES_HPP
#include <sstream>
-#include "GFGlyphTracer.h"
-#include "Message.h"
-#include "types.h"
+#include "GFGlyphTracer.hpp"
+#include "Message.hpp"
class GlyphTracerMessages : public GFGlyphTracer::Callback
{
@@ -36,17 +35,24 @@ class GlyphTracerMessages : public GFGlyphTracer::Callback
Message::mstream() << '\n';
}
- void beginChar (UInt8 c) {
+ void beginChar (uint8_t c) override {
if (!_traced) {
if (!_fname.empty())
Message::mstream() << '\n';
+ // extract font name from file path
+ std::string fontname = _fname;
+ size_t pos;
+ if ((pos = fontname.rfind('/')) != std::string::npos)
+ fontname = fontname.substr(pos+1);
+ if ((pos = fontname.rfind('.')) != std::string::npos)
+ fontname = fontname.substr(0, pos);
Message::mstream(false, Message::MC_STATE)
- << "tracing glyphs of " << _fname.substr(0, _fname.length()-3) << '\n';
+ << "tracing glyphs of " << fontname << '\n';
_traced = true;
}
}
- void endChar (UInt8 c) {
+ void endChar (uint8_t c) override {
std::ostringstream oss;
oss << '[';
if (isprint(c))
@@ -57,7 +63,7 @@ class GlyphTracerMessages : public GFGlyphTracer::Callback
Message::mstream(false, Message::MC_TRACING) << oss.str();
}
- void setFont (const std::string &fname) {
+ void setFont (const std::string &fname) override {
if (_sfmsg && fname != _fname) {
_fname = fname;
_traced = false;
@@ -70,5 +76,4 @@ class GlyphTracerMessages : public GFGlyphTracer::Callback
bool _traced; ///< true if a glyph of the current font has already been traced?
};
-
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GraphicsPath.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/GraphicsPath.hpp
index 2919b793724..010302a2257 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GraphicsPath.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GraphicsPath.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** GraphicsPath.h **
+** GraphicsPath.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,17 +18,16 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_GRAPHICPATH_H
-#define DVISVGM_GRAPHICPATH_H
+#ifndef GRAPHICSPATH_HPP
+#define GRAPHICSPATH_HPP
#include <cctype>
-#include <list>
#include <ostream>
#include <vector>
-#include "BoundingBox.h"
-#include "Matrix.h"
-#include "Pair.h"
-#include "XMLString.h"
+#include "BoundingBox.hpp"
+#include "Matrix.hpp"
+#include "Pair.hpp"
+#include "XMLString.hpp"
template <typename T>
@@ -36,11 +35,11 @@ class GraphicsPath
{
friend class PathClipper;
public:
- enum WindingRule {WR_EVEN_ODD, WR_NON_ZERO};
+ enum class WindingRule {EVEN_ODD, NON_ZERO};
typedef Pair<T> Point;
struct Command {
- enum Type {MOVETO, LINETO, CONICTO, CUBICTO, CLOSEPATH};
+ enum class Type {MOVETO, LINETO, CONICTO, CUBICTO, CLOSEPATH};
Command (Type t) : type(t) {}
@@ -61,11 +60,11 @@ class GraphicsPath
int numParams () const {
switch (type) {
- case CLOSEPATH : return 0;
- case MOVETO :
- case LINETO : return 1;
- case CONICTO : return 2;
- case CUBICTO : return 3;
+ case Type::CLOSEPATH : return 0;
+ case Type::MOVETO :
+ case Type::LINETO : return 1;
+ case Type::CONICTO : return 2;
+ case Type::CUBICTO : return 3;
}
return 0;
}
@@ -79,9 +78,8 @@ class GraphicsPath
Point params[3];
};
- struct Actions
- {
- virtual ~Actions () {}
+ struct Actions {
+ virtual ~Actions () =default;
virtual void moveto (const Point &p) {}
virtual void lineto (const Point &p) {}
virtual void hlineto (const T &y) {}
@@ -96,12 +94,8 @@ class GraphicsPath
virtual void finished () {}
};
- typedef typename std::vector<Command>::iterator Iterator;
- typedef typename std::vector<Command>::const_iterator ConstIterator;
- typedef typename std::vector<Command>::const_reverse_iterator ConstRevIterator;
-
public:
- GraphicsPath (WindingRule wr=WR_NON_ZERO) : _windingRule(wr) {}
+ GraphicsPath (WindingRule wr=WindingRule::NON_ZERO) : _windingRule(wr) {}
void setWindingRule (WindingRule wr) {_windingRule = wr;}
WindingRule windingRule () const {return _windingRule;}
@@ -131,8 +125,8 @@ class GraphicsPath
void moveto (const Point &p) {
// avoid sequences of several MOVETOs; always use latest
- if (_commands.empty() || _commands.back().type != Command::MOVETO)
- _commands.push_back(Command(Command::MOVETO, p));
+ if (_commands.empty() || _commands.back().type != Command::Type::MOVETO)
+ _commands.emplace_back(Command(Command::Type::MOVETO, p));
else
_commands.back().params[0] = p;
}
@@ -142,7 +136,7 @@ class GraphicsPath
}
void lineto (const Point &p) {
- _commands.push_back(Command(Command::LINETO, p));
+ _commands.emplace_back(Command(Command::Type::LINETO, p));
}
void conicto (const T &x1, const T &y1, const T &x2, const T &y2) {
@@ -150,7 +144,7 @@ class GraphicsPath
}
void conicto (const Point &p1, const Point &p2) {
- _commands.push_back(Command(Command::CONICTO, p1, p2));
+ _commands.emplace_back(Command(Command::Type::CONICTO, p1, p2));
}
void cubicto (const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3) {
@@ -158,14 +152,13 @@ class GraphicsPath
}
void cubicto (const Point &p1, const Point &p2, const Point &p3) {
- _commands.push_back(Command(Command::CUBICTO, p1, p2, p3));
+ _commands.emplace_back(Command(Command::Type::CUBICTO, p1, p2, p3));
}
void closepath () {
- _commands.push_back(Command(Command::CLOSEPATH));
+ _commands.emplace_back(Command(Command::Type::CLOSEPATH));
}
-
const std::vector<Command>& commands () const {
return _commands;
}
@@ -177,16 +170,15 @@ class GraphicsPath
* This method detects all open paths and adds the missing closePath statement. */
void closeOpenSubPaths () {
Command *prevCommand=0;
- FORALL(_commands, Iterator, it) {
- if (it->type == Command::MOVETO && prevCommand && prevCommand->type != Command::CLOSEPATH) {
+ for (auto it=_commands.begin(); it != _commands.end(); ++it) {
+ if (it->type == Command::Type::MOVETO && prevCommand && prevCommand->type != Command::Type::CLOSEPATH) {
prevCommand = &(*it);
- it = _commands.insert(it, Command(Command::CLOSEPATH))+1;
-// ++it; // skip inserted closePath command in next iteration step
+ it = _commands.insert(it, Command(Command::Type::CLOSEPATH))+1;
}
else
prevCommand = &(*it);
}
- if (!_commands.empty() && _commands.back().type != Command::CLOSEPATH)
+ if (!_commands.empty() && _commands.back().type != Command::Type::CLOSEPATH)
closepath();
}
@@ -194,15 +186,15 @@ class GraphicsPath
/** Removes redundant path commands commands. Currently, it only removes movetos. */
void removeRedundantCommands () {
// remove trailing moveto commands
- while (!_commands.empty() && _commands.back().type == Command::MOVETO)
+ while (!_commands.empty() && _commands.back().type == Command::Type::MOVETO)
_commands.pop_back();
// resolve intermediate sequences of moveto commands
- Iterator it=_commands.begin();
+ auto it=_commands.begin();
if (it == _commands.end())
return;
- Iterator prev = it++;
+ auto prev = it++;
while (it != _commands.end()) {
- if (prev->type != Command::MOVETO || it->type != Command::MOVETO)
+ if (prev->type != Command::Type::MOVETO || it->type != Command::Type::MOVETO)
prev = it++;
else {
prev = _commands.erase(prev); // remove leading MOVETO and advance 'prev' to 'it'
@@ -224,7 +216,7 @@ class GraphicsPath
WriteActions (std::ostream &os, bool relative, double sx, double sy, double dx, double dy)
: _os(os), _relative(relative), _sx(sx), _sy(sy), _dx(dx), _dy(dy) {}
- void draw (char cmd, const Point *points, int n) {
+ void draw (char cmd, const Point *points, int n) override {
if (_relative)
cmd = tolower(cmd);
_os << cmd;
@@ -288,10 +280,10 @@ class GraphicsPath
void computeBBox (BoundingBox &bbox) const {
struct BBoxActions : Actions {
BBoxActions (BoundingBox &bb) : bbox(bb) {}
- void moveto (const Point &p) {bbox.embed(p);}
- void lineto (const Point &p) {bbox.embed(p);}
- void conicto (const Point &p1, const Point &p2) {bbox.embed(p1); bbox.embed(p2);}
- void cubicto (const Point &p1, const Point &p2, const Point &p3) {bbox.embed(p1); bbox.embed(p2); bbox.embed(p3);}
+ void moveto (const Point &p) override {bbox.embed(p);}
+ void lineto (const Point &p) override {bbox.embed(p);}
+ void conicto (const Point &p1, const Point &p2) override {bbox.embed(p1); bbox.embed(p2);}
+ void cubicto (const Point &p1, const Point &p2, const Point &p3) override {bbox.embed(p1); bbox.embed(p2); bbox.embed(p3);}
BoundingBox &bbox;
} actions(bbox);
iterate(actions, false);
@@ -304,11 +296,11 @@ class GraphicsPath
bool isDot (Point &p) const {
struct DotActions : Actions {
DotActions () : differs(false) {}
- void moveto (const Point &p) {point = p;}
- void lineto (const Point &p) {differs = (p != point);}
- void conicto (const Point &p1, const Point &p2) {differs = (point != p1 || point != p2);}
- void cubicto (const Point &p1, const Point &p2, const Point &p3) {differs = (point != p1 || point != p2 || point != p3);}
- bool quit () {return differs;}
+ void moveto (const Point &p) override {point = p;}
+ void lineto (const Point &p) override {differs = (p != point);}
+ void conicto (const Point &p1, const Point &p2) override {differs = (point != p1 || point != p2);}
+ void cubicto (const Point &p1, const Point &p2, const Point &p3) override {differs = (point != p1 || point != p2 || point != p3);}
+ bool quit () override {return differs;}
Point point;
bool differs;
} actions;
@@ -321,8 +313,8 @@ class GraphicsPath
/** Transforms the path according to a given Matrix.
* @param[in] matrix Matrix describing the affine transformation */
void transform (const Matrix &matrix) {
- FORALL(_commands, Iterator, it)
- it->transform(matrix);
+ for (Command &command : _commands)
+ command.transform(matrix);
}
void iterate (Actions &actions, bool optimize) const;
@@ -342,19 +334,19 @@ class GraphicsPath
* @param[in] optimize if true, shorthand drawing commands (hlineto, vlineto,...) are considered */
template <typename T>
void GraphicsPath<T>::iterate (Actions &actions, bool optimize) const {
- ConstIterator prev = _commands.end(); // pointer to preceding command
+ auto prev = _commands.end(); // pointer to preceding command
Point fp; // first point of current path
Point cp; // current point
Point pstore[2];
- for (ConstIterator it=_commands.begin(); it != _commands.end() && !actions.quit(); ++it) {
+ for (auto it=_commands.begin(); it != _commands.end() && !actions.quit(); ++it) {
const Point *params = it->params;
switch (it->type) {
- case Command::MOVETO:
+ case Command::Type::MOVETO:
actions.moveto(params[0]);
actions.draw('M', params, 1);
fp = params[0];
break;
- case Command::LINETO:
+ case Command::Type::LINETO:
if (optimize) {
if (cp.x() == params[0].x()) {
actions.vlineto(params[0].y());
@@ -374,8 +366,8 @@ void GraphicsPath<T>::iterate (Actions &actions, bool optimize) const {
actions.draw('L', params, 1);
}
break;
- case Command::CONICTO:
- if (optimize && prev != _commands.end() && prev->type == Command::CONICTO && params[0] == pstore[1]*T(2)-pstore[0]) {
+ case Command::Type::CONICTO:
+ if (optimize && prev != _commands.end() && prev->type == Command::Type::CONICTO && params[0] == pstore[1]*T(2)-pstore[0]) {
actions.conicto(params[1]);
actions.draw('T', params+1, 1);
}
@@ -386,9 +378,9 @@ void GraphicsPath<T>::iterate (Actions &actions, bool optimize) const {
pstore[0] = params[0]; // store control point and
pstore[1] = params[1]; // curve endpoint
break;
- case Command::CUBICTO:
+ case Command::Type::CUBICTO:
// is first control point reflection of preceding second control point?
- if (optimize && prev != _commands.end() && prev->type == Command::CUBICTO && params[0] == pstore[1]*T(2)-pstore[0]) {
+ if (optimize && prev != _commands.end() && prev->type == Command::Type::CUBICTO && params[0] == pstore[1]*T(2)-pstore[0]) {
actions.cubicto(params[1], params[2]);
actions.draw('S', params+1, 2);
}
@@ -399,7 +391,7 @@ void GraphicsPath<T>::iterate (Actions &actions, bool optimize) const {
pstore[0] = params[1]; // store second control point and
pstore[1] = params[2]; // curve endpoint
break;
- case Command::CLOSEPATH:
+ case Command::Type::CLOSEPATH:
actions.closepath();
actions.draw('Z', params, 0);
cp = fp;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.cpp
index a58e08bca5c..e8b11bcb434 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.cpp
@@ -2,7 +2,7 @@
** HtmlSpecialHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,16 +21,16 @@
#include <config.h>
#include <cassert>
#include <sstream>
-#include "HtmlSpecialHandler.h"
-#include "InputReader.h"
-#include "Message.h"
-#include "SpecialActions.h"
-#include "SVGTree.h"
+#include "HtmlSpecialHandler.hpp"
+#include "InputReader.hpp"
+#include "Message.hpp"
+#include "SpecialActions.hpp"
+#include "SVGTree.hpp"
using namespace std;
// variable to select the link marker variant (none, underlined, boxed, or colored background)
-HtmlSpecialHandler::MarkerType HtmlSpecialHandler::MARKER_TYPE = HtmlSpecialHandler::MT_LINE;
+HtmlSpecialHandler::MarkerType HtmlSpecialHandler::MARKER_TYPE = HtmlSpecialHandler::MarkerType::LINE;
Color HtmlSpecialHandler::LINK_BGCOLOR;
Color HtmlSpecialHandler::LINK_LINECOLOR;
bool HtmlSpecialHandler::USE_LINECOLOR = false;
@@ -135,7 +135,7 @@ void HtmlSpecialHandler::processHrefAnchor (string uri, SpecialActions &actions)
actions.pushContextElement(anchor);
actions.bbox("{anchor}", true); // start computing the bounding box of the linked area
_depthThreshold = actions.getDVIStackDepth();
- _anchorType = AT_HREF;
+ _anchorType = AnchorType::HREF;
}
@@ -146,18 +146,18 @@ void HtmlSpecialHandler::processNameAnchor (const string &name, SpecialActions &
NamedAnchors::iterator it = _namedAnchors.find(name);
assert(it != _namedAnchors.end());
it->second.pos = actions.getY();
- _anchorType = AT_NAME;
+ _anchorType = AnchorType::NAME;
}
/** Handles the closing tag (</a> of the current anchor element. */
void HtmlSpecialHandler::closeAnchor (SpecialActions &actions) {
- if (_anchorType == AT_HREF) {
+ if (_anchorType == AnchorType::HREF) {
markLinkedBox(actions);
actions.popContextElement();
_depthThreshold = 0;
}
- _anchorType = AT_NONE;
+ _anchorType = AnchorType::NONE;
}
@@ -168,7 +168,7 @@ void HtmlSpecialHandler::closeAnchor (SpecialActions &actions) {
void HtmlSpecialHandler::markLinkedBox (SpecialActions &actions) {
const BoundingBox &bbox = actions.bbox("{anchor}");
if (bbox.width() > 0 && bbox.height() > 0) { // does the bounding box extend in both dimensions?
- if (MARKER_TYPE != MT_NONE) {
+ if (MARKER_TYPE != MarkerType::NONE) {
const double linewidth = min(0.5, bbox.height()/15);
XMLElementNode *rect = new XMLElementNode("rect");
double x = bbox.minX();
@@ -176,14 +176,14 @@ void HtmlSpecialHandler::markLinkedBox (SpecialActions &actions) {
double w = bbox.width();
double h = linewidth;
const Color &linecolor = USE_LINECOLOR ? LINK_LINECOLOR : actions.getColor();
- if (MARKER_TYPE == MT_LINE)
+ if (MARKER_TYPE == MarkerType::LINE)
rect->addAttribute("fill", linecolor.svgColorString());
else {
x -= linewidth;
y = bbox.minY()-linewidth;
w += 2*linewidth;
h += bbox.height()+linewidth;
- if (MARKER_TYPE == MT_BGCOLOR) {
+ if (MARKER_TYPE == MarkerType::BGCOLOR) {
rect->addAttribute("fill", LINK_BGCOLOR.svgColorString());
if (USE_LINECOLOR) {
rect->addAttribute("stroke", linecolor.svgColorString());
@@ -201,7 +201,7 @@ void HtmlSpecialHandler::markLinkedBox (SpecialActions &actions) {
rect->addAttribute("width", w);
rect->addAttribute("height", h);
actions.prependToPage(rect);
- if (MARKER_TYPE == MT_BOX || MARKER_TYPE == MT_BGCOLOR) {
+ if (MARKER_TYPE == MarkerType::BOX || MARKER_TYPE == MarkerType::BGCOLOR) {
// slightly enlarge the boxed area
x -= linewidth;
y -= linewidth;
@@ -228,7 +228,7 @@ void HtmlSpecialHandler::markLinkedBox (SpecialActions &actions) {
/** This method is called every time the DVI position changes. */
void HtmlSpecialHandler::dviMovedTo (double x, double y, SpecialActions &actions) {
- if (_active && _anchorType != AT_NONE) {
+ if (_active && _anchorType != AnchorType::NONE) {
// Start a new box if the current depth of the DVI stack underruns
// the initial threshold which indicates a line break.
if (actions.getDVIStackDepth() < _depthThreshold) {
@@ -244,13 +244,13 @@ void HtmlSpecialHandler::dviEndPage (unsigned pageno, SpecialActions &actions) {
if (_active) {
// create views for all collected named anchors defined on the recent page
const BoundingBox &pagebox = actions.bbox();
- for (NamedAnchors::iterator it=_namedAnchors.begin(); it != _namedAnchors.end(); ++it) {
- if (it->second.pageno == pageno && it->second.referenced) { // current anchor referenced?
+ for (auto &stranchorpair : _namedAnchors) {
+ if (stranchorpair.second.pageno == pageno && stranchorpair.second.referenced) { // current anchor referenced?
ostringstream oss;
- oss << pagebox.minX() << ' ' << it->second.pos << ' '
+ oss << pagebox.minX() << ' ' << stranchorpair.second.pos << ' '
<< pagebox.width() << ' ' << pagebox.height();
XMLElementNode *view = new XMLElementNode("view");
- view->addAttribute("id", "loc"+XMLString(it->second.id));
+ view->addAttribute("id", "loc"+XMLString(stranchorpair.second.id));
view->addAttribute("viewBox", oss.str());
actions.appendToDefs(view);
}
@@ -275,18 +275,18 @@ bool HtmlSpecialHandler::setLinkMarker (const string &marker) {
color = marker.substr(seppos+1);
}
if (type.empty() || type == "none")
- MARKER_TYPE = MT_NONE;
+ MARKER_TYPE = MarkerType::NONE;
else if (type == "line")
- MARKER_TYPE = MT_LINE;
+ MARKER_TYPE = MarkerType::LINE;
else if (type == "box")
- MARKER_TYPE = MT_BOX;
+ MARKER_TYPE = MarkerType::BOX;
else {
if (!LINK_BGCOLOR.setPSName(type, false))
return false;
- MARKER_TYPE = MT_BGCOLOR;
+ MARKER_TYPE = MarkerType::BGCOLOR;
}
USE_LINECOLOR = false;
- if (MARKER_TYPE != MT_NONE && !color.empty()) {
+ if (MARKER_TYPE != MarkerType::NONE && !color.empty()) {
if (!LINK_LINECOLOR.setPSName(color, false))
return false;
USE_LINECOLOR = true;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.hpp
index 6c17f4541ca..6d64a93b879 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** HtmlSpecialHandler.h **
+** HtmlSpecialHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,13 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_HTMLSPECIALHANDLER_H
-#define DVISVGM_HTMLSPECIALHANDLER_H
+#ifndef HTMLSPECIALHANDLER_HPP
+#define HTMLSPECIALHANDLER_HPP
#include <map>
#include <string>
-#include "Color.h"
-#include "SpecialHandler.h"
+#include "Color.hpp"
+#include "SpecialHandler.hpp"
class SpecialActions;
@@ -39,16 +39,16 @@ class HtmlSpecialHandler : public SpecialHandler, public DVIEndPageListener, pub
bool referenced; ///< true if a reference to this anchor exists
};
- enum AnchorType {AT_NONE, AT_HREF, AT_NAME};
+ enum class AnchorType {NONE, HREF, NAME};
typedef std::map<std::string, NamedAnchor> NamedAnchors;
public:
- HtmlSpecialHandler () : _active(false), _anchorType(AT_NONE), _depthThreshold(0) {}
- void preprocess (const char *prefix, std::istream &is, SpecialActions &actions);
- bool process (const char *prefix, std::istream &is, SpecialActions &actions);
- const char* name () const {return "html";}
- const char* info () const {return "hyperref specials";}
- const char** prefixes () const;
+ HtmlSpecialHandler () : _active(false), _anchorType(AnchorType::NONE), _depthThreshold(0) {}
+ void preprocess (const char *prefix, std::istream &is, SpecialActions &actions) override;
+ bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+ const char* name () const override {return "html";}
+ const char* info () const override {return "hyperref specials";}
+ const char** prefixes () const override;
static bool setLinkMarker (const std::string &marker);
@@ -57,12 +57,12 @@ class HtmlSpecialHandler : public SpecialHandler, public DVIEndPageListener, pub
void preprocessNameAnchor (const std::string &name, SpecialActions &actions);
void processHrefAnchor (std::string uri, SpecialActions &actions);
void processNameAnchor (const std::string &name, SpecialActions &actions);
- void dviEndPage (unsigned pageno, SpecialActions &actions);
- void dviMovedTo (double x, double y, SpecialActions &actions);
+ void dviEndPage (unsigned pageno, SpecialActions &actions) override;
+ void dviMovedTo (double x, double y, SpecialActions &actions) override;
void closeAnchor (SpecialActions &actions);
void markLinkedBox (SpecialActions &actions);
- enum MarkerType {MT_NONE, MT_LINE, MT_BOX, MT_BGCOLOR};
+ enum class MarkerType {NONE, LINE, BOX, BGCOLOR};
static MarkerType MARKER_TYPE; ///< selects how to mark linked areas
static Color LINK_BGCOLOR; ///< background color if linkmark type == LT_BGCOLOR
static Color LINK_LINECOLOR; ///< line color if linkmark type is LM_LINE or LM_BOX
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/InputBuffer.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/InputBuffer.cpp
index b290c28d628..53d7eeee9d0 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/InputBuffer.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/InputBuffer.cpp
@@ -2,7 +2,7 @@
** InputBuffer.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,13 +21,13 @@
#include <config.h>
#include <cmath>
#include <cstring>
-#include "InputBuffer.h"
+#include "InputBuffer.hpp"
using namespace std;
StreamInputBuffer::StreamInputBuffer (istream &is, size_t bufsize)
- : _is(is), _bufsize(bufsize), _buf1(new UInt8[_bufsize]), _buf2(new UInt8[_bufsize]), _bufptr(_buf1)
+ : _is(is), _bufsize(bufsize), _buf1(new uint8_t[_bufsize]), _buf2(new uint8_t[_bufsize]), _bufptr(_buf1)
{
_size1 = fillBuffer(_buf1);
_size2 = fillBuffer(_buf2);
@@ -49,7 +49,7 @@ int StreamInputBuffer::get () {
_bufptr = _buf1;
_size2 = fillBuffer(_buf2);
}
- UInt8 c = *_bufptr++;
+ uint8_t c = *_bufptr++;
return c;
}
@@ -77,7 +77,7 @@ int StreamInputBuffer::peek (size_t n) const {
* input stream.
* @param[in] buf pointer to character buffer to be filled
* @return number of characters read */
-int StreamInputBuffer::fillBuffer (UInt8 *buf) {
+int StreamInputBuffer::fillBuffer (uint8_t *buf) {
if (_is && !_is.eof()) {
_is.read((char*)buf, _bufsize);
return _is.gcount();
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/InputBuffer.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/InputBuffer.hpp
index c6f9d58bb48..2509997d05c 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/InputBuffer.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/InputBuffer.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** InputBuffer.h **
+** InputBuffer.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,19 +18,18 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_INPUTBUFFER_H
-#define DVISVGM_INPUTBUFFER_H
+#ifndef INPUTBUFFER_HPP
+#define INPUTBUFFER_HPP
#include <algorithm>
#include <cstring>
#include <istream>
#include <string>
#include <ostream>
-#include "types.h"
struct InputBuffer
{
- virtual ~InputBuffer () {}
+ virtual ~InputBuffer () =default;
virtual int get () =0;
virtual int peek () const =0;
virtual int peek (size_t n) const =0;
@@ -44,24 +43,24 @@ class StreamInputBuffer : public InputBuffer
public:
StreamInputBuffer (std::istream &is, size_t bufsize=1024);
~StreamInputBuffer ();
- int get ();
- int peek () const;
- int peek (size_t n) const;
- bool eof () const {return pos() == _size1 && _size2 == 0;}
- void invalidate () {_bufptr = _buf1+_size1; _size2 = 0;}
+ int get () override;
+ int peek () const override;
+ int peek (size_t n) const override;
+ bool eof () const override {return pos() == _size1 && _size2 == 0;}
+ void invalidate () override {_bufptr = _buf1+_size1; _size2 = 0;}
protected:
- int fillBuffer (UInt8 *buf);
+ int fillBuffer (uint8_t *buf);
size_t pos () const {return _bufptr-_buf1;}
private:
std::istream &_is;
const size_t _bufsize; ///< maximal number of bytes each buffer can hold
- UInt8 *_buf1; ///< pointer to first buffer
- UInt8 *_buf2; ///< pointer to second buffer
- size_t _size1; ///< number of bytes in buffer 1
- size_t _size2; ///< number of bytes in buffer 2
- UInt8 *_bufptr; ///< pointer to next byte to read
+ uint8_t *_buf1; ///< pointer to first buffer
+ uint8_t *_buf2; ///< pointer to second buffer
+ size_t _size1; ///< number of bytes in buffer 1
+ size_t _size2; ///< number of bytes in buffer 2
+ uint8_t *_bufptr; ///< pointer to next byte to read
};
@@ -69,11 +68,11 @@ class StringInputBuffer : public InputBuffer
{
public:
StringInputBuffer (const std::string &str) : _str(str), _pos(0) {}
- int get () {return _pos < _str.length() ? _str[_pos++] : -1;}
- int peek () const {return _pos < _str.length() ? _str[_pos] : -1;}
- int peek (size_t n) const {return _pos+n < _str.length() ? _str[_pos+n] : -1;}
- bool eof () const {return _pos >= _str.length();}
- void invalidate () {_pos = _str.length();}
+ int get () override {return _pos < _str.length() ? _str[_pos++] : -1;}
+ int peek () const override {return _pos < _str.length() ? _str[_pos] : -1;}
+ int peek (size_t n) const override {return _pos+n < _str.length() ? _str[_pos+n] : -1;}
+ bool eof () const override {return _pos >= _str.length();}
+ void invalidate () override {_pos = _str.length();}
private:
const std::string &_str;
@@ -86,7 +85,7 @@ class CharInputBuffer : public InputBuffer
public:
CharInputBuffer (const char *buf, size_t size) : _pos(buf), _size(buf ? size : 0) {}
- int get () {
+ int get () override {
if (_size == 0)
return -1;
else {
@@ -101,11 +100,11 @@ class CharInputBuffer : public InputBuffer
_size = size;
}
- void assign (const char *buf) {assign(buf, std::strlen(buf));}
- int peek () const {return _size > 0 ? *_pos : -1;}
- int peek (size_t n) const {return _size >= n ? _pos[n] : -1;}
- bool eof () const {return _size == 0;}
- void invalidate () {_size = 0;}
+ void assign (const char *buf) {assign(buf, std::strlen(buf));}
+ int peek () const override {return _size > 0 ? *_pos : -1;}
+ int peek (size_t n) const override {return _size >= n ? _pos[n] : -1;}
+ bool eof () const override {return _size == 0;}
+ void invalidate () override {_size = 0;}
private:
const char *_pos;
@@ -117,11 +116,11 @@ class SplittedCharInputBuffer : public InputBuffer
{
public:
SplittedCharInputBuffer (const char *buf1, size_t s1, const char *buf2, size_t s2);
- int get ();
- int peek () const;
- int peek (size_t n) const;
- bool eof () const {return _size[_index] == 0;}
- void invalidate () {_size[_index] = 0;}
+ int get () override;
+ int peek () const override;
+ int peek (size_t n) const override;
+ bool eof () const override {return _size[_index] == 0;}
+ void invalidate () override {_size[_index] = 0;}
private:
const char *_buf[2];
@@ -134,7 +133,7 @@ class TextStreamInputBuffer : public StreamInputBuffer
{
public:
TextStreamInputBuffer (std::istream &is) : StreamInputBuffer(is), _line(1), _col(1) {}
- int get ();
+ int get () override;
int line () const {return _line;}
int col () const {return _col;}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/InputReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/InputReader.cpp
index 46107532f68..66b3981fb18 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/InputReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/InputReader.cpp
@@ -2,7 +2,7 @@
** InputReader.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -22,7 +22,7 @@
#include <cmath>
#include <functional>
#include <vector>
-#include "InputReader.h"
+#include "InputReader.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/InputReader.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/InputReader.hpp
index 55eb63702d3..0134f19a7f8 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/InputReader.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/InputReader.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** InputReader.h **
+** InputReader.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,19 +18,19 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_INPUTREADER_H
-#define DVISVGM_INPUTREADER_H
+#ifndef INPUTREADER_HPP
+#define INPUTREADER_HPP
#include <istream>
#include <map>
#include <string>
-#include "InputBuffer.h"
+#include "InputBuffer.hpp"
class InputReader
{
public:
- virtual ~InputReader() {}
+ virtual ~InputReader() =default;
virtual int get () =0;
virtual int peek () const =0;
virtual int peek (size_t n) const =0;
@@ -63,10 +63,10 @@ class StreamInputReader : public InputReader
{
public:
StreamInputReader (std::istream &is) : _is(is) {}
- int get () {return _is.get();}
- int peek () const {return _is.peek();}
- int peek (size_t n) const;
- bool eof () const {return !_is || _is.eof();}
+ int get () override {return _is.get();}
+ int peek () const override {return _is.peek();}
+ int peek (size_t n) const override;
+ bool eof () const override {return !_is || _is.eof();}
private:
std::istream &_is;
@@ -78,10 +78,10 @@ class BufferInputReader : public InputReader
public:
BufferInputReader (InputBuffer &ib) : _ib(&ib) {}
void assign (InputBuffer &ib) {_ib = &ib;}
- int get () {return _ib->get();}
- int peek () const {return _ib->peek();}
- int peek (size_t n) const {return _ib->peek(n);}
- bool eof () const {return _ib->eof();}
+ int get () override {return _ib->get();}
+ int peek () const override {return _ib->peek();}
+ int peek (size_t n) const override {return _ib->peek(n);}
+ bool eof () const override {return _ib->eof();}
private:
InputBuffer *_ib;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/JFM.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/JFM.cpp
index d6f97eb0377..9946e7cc26a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/JFM.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/JFM.cpp
@@ -2,7 +2,7 @@
** JFM.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -23,8 +23,8 @@
#include <cstring>
#include <fstream>
#include <sstream>
-#include "JFM.h"
-#include "StreamReader.h"
+#include "JFM.hpp"
+#include "StreamReader.hpp"
using namespace std;
@@ -32,26 +32,26 @@ using namespace std;
JFM::JFM (istream &is) {
is.seekg(0);
StreamReader reader(is);
- UInt16 id = UInt16(reader.readUnsigned(2)); // JFM ID (9 or 11)
+ uint16_t id = uint16_t(reader.readUnsigned(2)); // JFM ID (9 or 11)
if (id != 9 && id != 11) {
ostringstream oss;
oss << "invalid JFM identifier " << id << " (9 or 11 expected)";
throw FontMetricException(oss.str());
}
_vertical = (id == 9);
- UInt16 nt = UInt16(reader.readUnsigned(2)); // length of character type table
- UInt16 lf = UInt16(reader.readUnsigned(2)); // length of entire file in 4 byte words
- UInt16 lh = UInt16(reader.readUnsigned(2)); // length of header in 4 byte words
- UInt16 bc = UInt16(reader.readUnsigned(2)); // smallest character code in font
- UInt16 ec = UInt16(reader.readUnsigned(2)); // largest character code in font
- UInt16 nw = UInt16(reader.readUnsigned(2)); // number of words in width table
- UInt16 nh = UInt16(reader.readUnsigned(2)); // number of words in height table
- UInt16 nd = UInt16(reader.readUnsigned(2)); // number of words in depth table
- UInt16 ni = UInt16(reader.readUnsigned(2)); // number of words in italic corr. table
- UInt16 nl = UInt16(reader.readUnsigned(2)); // number of words in glue/kern table
- UInt16 nk = UInt16(reader.readUnsigned(2)); // number of words in kern table
- UInt16 ng = UInt16(reader.readUnsigned(2)); // number of words in glue table
- UInt16 np = UInt16(reader.readUnsigned(2)); // number of font parameter words
+ uint16_t nt = uint16_t(reader.readUnsigned(2)); // length of character type table
+ uint16_t lf = uint16_t(reader.readUnsigned(2)); // length of entire file in 4 byte words
+ uint16_t lh = uint16_t(reader.readUnsigned(2)); // length of header in 4 byte words
+ uint16_t bc = uint16_t(reader.readUnsigned(2)); // smallest character code in font
+ uint16_t ec = uint16_t(reader.readUnsigned(2)); // largest character code in font
+ uint16_t nw = uint16_t(reader.readUnsigned(2)); // number of words in width table
+ uint16_t nh = uint16_t(reader.readUnsigned(2)); // number of words in height table
+ uint16_t nd = uint16_t(reader.readUnsigned(2)); // number of words in depth table
+ uint16_t ni = uint16_t(reader.readUnsigned(2)); // number of words in italic corr. table
+ uint16_t nl = uint16_t(reader.readUnsigned(2)); // number of words in glue/kern table
+ uint16_t nk = uint16_t(reader.readUnsigned(2)); // number of words in kern table
+ uint16_t ng = uint16_t(reader.readUnsigned(2)); // number of words in glue table
+ uint16_t np = uint16_t(reader.readUnsigned(2)); // number of font parameter words
if (7+nt+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ng+np != lf)
throw FontMetricException("inconsistent length values");
@@ -67,10 +67,10 @@ JFM::JFM (istream &is) {
void JFM::readTables (StreamReader &reader, int nt, int nw, int nh, int nd, int ni) {
// determine smallest charcode with chartype > 0
- UInt16 minchar=0xFFFF, maxchar=0;
+ uint16_t minchar=0xFFFF, maxchar=0;
for (int i=0; i < nt; i++) {
- UInt16 c = (UInt16)reader.readUnsigned(2);
- UInt16 t = (UInt16)reader.readUnsigned(2);
+ uint16_t c = (uint16_t)reader.readUnsigned(2);
+ uint16_t t = (uint16_t)reader.readUnsigned(2);
if (t > 0) {
minchar = min(minchar, c);
maxchar = max(maxchar, c);
@@ -80,11 +80,11 @@ void JFM::readTables (StreamReader &reader, int nt, int nw, int nh, int nd, int
if (minchar <= maxchar) {
_minchar = minchar;
_charTypeTable.resize(maxchar-minchar+1);
- memset(&_charTypeTable[0], 0, nt*sizeof(UInt16));
+ memset(&_charTypeTable[0], 0, nt*sizeof(uint16_t));
reader.seek(-nt*4, ios::cur);
for (int i=0; i < nt; i++) {
- UInt16 c = (UInt16)reader.readUnsigned(2);
- UInt16 t = (UInt16)reader.readUnsigned(2);
+ uint16_t c = (uint16_t)reader.readUnsigned(2);
+ uint16_t t = (uint16_t)reader.readUnsigned(2);
if (c >= minchar)
_charTypeTable[c-minchar] = t;
}
@@ -94,7 +94,7 @@ void JFM::readTables (StreamReader &reader, int nt, int nw, int nh, int nd, int
int JFM::charIndex (int c) const {
- UInt16 chartype = 0;
+ uint16_t chartype = 0;
if (!_charTypeTable.empty() && c >= _minchar && size_t(c) < _minchar+_charTypeTable.size())
chartype = _charTypeTable[c-_minchar];
return TFM::charIndex(chartype);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/JFM.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/JFM.hpp
index 0046fad0557..e267b29def3 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/JFM.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/JFM.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** JFM.h **
+** JFM.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,29 +18,29 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_JFM_H
-#define DVISVGM_JFM_H
+#ifndef JFM_HPP
+#define JFM_HPP
#include <istream>
-#include "TFM.h"
+#include "TFM.hpp"
class JFM : public TFM
{
public:
JFM (std::istream &is);
- bool verticalLayout () const {return _vertical;}
- UInt16 minChar () const {return _minchar;}
- UInt16 maxChar () const {return static_cast<UInt16>(_minchar+_charTypeTable.size()-1);}
+ bool verticalLayout () const override {return _vertical;}
+ uint16_t minChar () const {return _minchar;}
+ uint16_t maxChar () const {return static_cast<uint16_t>(_minchar+_charTypeTable.size()-1);}
protected:
void readTables (StreamReader &reader, int nt, int nw, int nh, int nd, int ni);
- int charIndex (int c) const;
+ int charIndex (int c) const override;
private:
- UInt16 _minchar; ///< character code of first entry in character type table
- bool _vertical; ///< true if metrics refer to vertical text layout
- std::vector<UInt16> _charTypeTable;
+ uint16_t _minchar; ///< character code of first entry in character type table
+ bool _vertical; ///< true if metrics refer to vertical text layout
+ std::vector<uint16_t> _charTypeTable;
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Length.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Length.cpp
index 8ab8120daab..7b8b84814fd 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Length.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Length.cpp
@@ -2,7 +2,7 @@
** Length.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,21 +19,11 @@
*************************************************************************/
#include <sstream>
-#include "InputReader.h"
-#include "Length.h"
+#include "InputReader.hpp"
+#include "Length.hpp"
using namespace std;
-const double Length::pt2in = 1.0/72.27;
-const double Length::pt2bp = pt2in*72;
-const double Length::pt2cm = pt2in*2.54;
-const double Length::pt2mm = pt2cm*10;
-const double Length::pt2pc = 1.0/12;
-const double Length::pt2dd = 1157.0/1238;
-const double Length::pt2cc = pt2dd/12;
-const double Length::pt2sp = 65536.0;
-
-
void Length::set (const string &lenstr) {
switch (lenstr.length()) {
case 0:
@@ -59,19 +49,19 @@ void Length::set (const string &lenstr) {
void Length::set (double val, Unit unit) {
switch (unit) {
- case PT: _pt = val; break;
- case BP: _pt = val/pt2bp; break;
- case IN: _pt = val/pt2in; break;
- case CM: _pt = val/pt2cm; break;
- case MM: _pt = val/pt2mm; break;
- case PC: _pt = val/pt2pc; break;
- case DD: _pt = val/pt2dd; break;
- case CC: _pt = val/pt2cc; break;
- case SP: _pt = val/pt2sp; break;
+ case Unit::PT: _pt = val; break;
+ case Unit::BP: _pt = val/pt2bp; break;
+ case Unit::IN: _pt = val/pt2in; break;
+ case Unit::CM: _pt = val/pt2cm; break;
+ case Unit::MM: _pt = val/pt2mm; break;
+ case Unit::PC: _pt = val/pt2pc; break;
+ case Unit::DD: _pt = val/pt2dd; break;
+ case Unit::CC: _pt = val/pt2cc; break;
+ case Unit::SP: _pt = val/pt2sp; break;
default:
// this isn't supposed to happen
ostringstream oss;
- oss << "invalid length unit: (" << unit << ")";
+ oss << "invalid length unit: (" << static_cast<int>(unit) << ")";
throw UnitException(oss.str());
}
}
@@ -79,19 +69,19 @@ void Length::set (double val, Unit unit) {
double Length::get (Unit unit) const {
switch (unit) {
- case PT: return pt();
- case BP: return bp();
- case IN: return in();
- case CM: return cm();
- case MM: return mm();
- case PC: return pc();
- case DD: return dd();
- case CC: return cc();
- case SP: return sp();
+ case Unit::PT: return pt();
+ case Unit::BP: return bp();
+ case Unit::IN: return in();
+ case Unit::CM: return cm();
+ case Unit::MM: return mm();
+ case Unit::PC: return pc();
+ case Unit::DD: return dd();
+ case Unit::CC: return cc();
+ case Unit::SP: return sp();
}
// this isn't supposed to happen
ostringstream oss;
- oss << "invalid length unit: (" << unit << ")";
+ oss << "invalid length unit: (" << static_cast<int>(unit) << ")";
throw UnitException(oss.str());
}
@@ -103,20 +93,22 @@ string Length::toString (Unit unit) const {
}
-#define UNIT(c1, c2) ((c1 << 8)|c2)
+static constexpr int unit_id (int c1, int c2) {
+ return (c1 << 8) | c2;
+}
Length::Unit Length::stringToUnit (const std::string &unitstr) {
if (unitstr.length() == 2) {
- switch (UNIT(unitstr[0], unitstr[1])) {
- case UNIT('p','t'): return PT;
- case UNIT('b','p'): return BP;
- case UNIT('i','n'): return IN;
- case UNIT('c','m'): return CM;
- case UNIT('m','m'): return MM;
- case UNIT('p','c'): return PC;
- case UNIT('d','d'): return DD;
- case UNIT('c','c'): return CC;
- case UNIT('s','p'): return SP;
+ switch (unit_id(unitstr[0], unitstr[1])) {
+ case unit_id('p','t'): return Unit::PT;
+ case unit_id('b','p'): return Unit::BP;
+ case unit_id('i','n'): return Unit::IN;
+ case unit_id('c','m'): return Unit::CM;
+ case unit_id('m','m'): return Unit::MM;
+ case unit_id('p','c'): return Unit::PC;
+ case unit_id('d','d'): return Unit::DD;
+ case unit_id('c','c'): return Unit::CC;
+ case unit_id('s','p'): return Unit::SP;
}
}
throw UnitException(string("invalid length unit: ")+unitstr);
@@ -125,15 +117,15 @@ Length::Unit Length::stringToUnit (const std::string &unitstr) {
string Length::unitToString (Unit unit) {
switch (unit) {
- case PT: return "pt";
- case BP: return "bp";
- case IN: return "in";
- case CM: return "cm";
- case MM: return "mm";
- case PC: return "pc";
- case DD: return "dd";
- case CC: return "cc";
- case SP: return "sp";
+ case Unit::PT: return "pt";
+ case Unit::BP: return "bp";
+ case Unit::IN: return "in";
+ case Unit::CM: return "cm";
+ case Unit::MM: return "mm";
+ case Unit::PC: return "pc";
+ case Unit::DD: return "dd";
+ case Unit::CC: return "cc";
+ case Unit::SP: return "sp";
}
// this isn't supposed to happen
return "??";
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Length.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Length.hpp
index e9cd5aca788..8c05ae49834 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Length.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Length.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Length.h **
+** Length.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,11 +18,11 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_LENGTH_H
-#define DVISVGM_LENGTH_H
+#ifndef LENGTH_HPP
+#define LENGTH_HPP
#include <string>
-#include "MessageException.h"
+#include "MessageException.hpp"
#ifdef IN
#undef IN
@@ -37,11 +37,11 @@ struct UnitException : MessageException
class Length
{
public:
- enum Unit {PT, BP, CM, MM, IN, PC, DD, CC, SP};
+ enum class Unit {PT, BP, CM, MM, IN, PC, DD, CC, SP};
public:
Length () : _pt(0) {}
- Length (double val, Unit unit=PT) {set(val, unit);}
+ Length (double val, Unit unit=Unit::PT) {set(val, unit);}
Length (double val, const std::string &unitstr) {set(val, unitstr);}
Length (const std::string &lenstr) {set(lenstr);}
void set (double val, Unit unit);
@@ -63,14 +63,14 @@ class Length
static std::string unitToString (Unit unit);
public:
- static const double pt2bp;
- static const double pt2in;
- static const double pt2cm;
- static const double pt2mm;
- static const double pt2pc;
- static const double pt2dd;
- static const double pt2cc;
- static const double pt2sp;
+ static constexpr double pt2in = 1.0/72.27;
+ static constexpr double pt2bp = pt2in*72;
+ static constexpr double pt2cm = pt2in*2.54;
+ static constexpr double pt2mm = pt2cm*10;
+ static constexpr double pt2pc = 1.0/12;
+ static constexpr double pt2dd = 1157.0/1238;
+ static constexpr double pt2cc = pt2dd/12;
+ static constexpr double pt2sp = 65536.0;
private:
double _pt; // length in TeX point units (72.27pt = 1in)
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am
index 90ef96d98c5..d2eb2009576 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am
@@ -1,237 +1,263 @@
:## This file is part of dvisvgm
-## Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de>
+## Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de>
##
## Process this file with automake.
bin_PROGRAMS = dvisvgm
noinst_LIBRARIES = libdvisvgm.a
-dvisvgm_SOURCES = gzstream.h \
- dvisvgm.cpp gzstream.cpp
+dvisvgm_SOURCES = dvisvgm.cpp
dvisvgm_LDADD = \
$(noinst_LIBRARIES) \
- ../clipper/libclipper.a \
- ../xxHash/libxxhash.a \
+ ../libs/clipper/libclipper.a \
+ ../libs/xxHash/libxxhash.a \
$(FREETYPE_LIBS) \
+ $(FONTFORGE_LIBS) \
$(ZLIB_LIBS)
+if ENABLE_WOFF
+dvisvgm_LDADD += \
+ ../libs/ff-woff/libfontforge.a \
+ ../libs/woff2/libwoff2.a \
+ ../libs/woff2/brotli/libbrotli.a
+endif
+
dvisvgm_DEPENDENCIES = $(noinst_LIBRARIES)
libdvisvgm_a_SOURCES = \
- AGLTable.h \
+ AGLTable.hpp \
BasicDVIReader.cpp \
- BasicDVIReader.h \
+ BasicDVIReader.hpp \
Bezier.cpp \
- Bezier.h \
+ Bezier.hpp \
BgColorSpecialHandler.cpp \
- BgColorSpecialHandler.h \
+ BgColorSpecialHandler.hpp \
Bitmap.cpp \
- Bitmap.h \
+ Bitmap.hpp \
BoundingBox.cpp \
- BoundingBox.h \
+ BoundingBox.hpp \
Calculator.cpp \
- Calculator.h \
- Character.h \
+ Calculator.hpp \
+ Character.hpp \
CharMapID.cpp \
- CharMapID.h \
+ CharMapID.hpp \
+ CLCommandLine.cpp \
+ CLCommandLine.hpp \
+ CLOption.hpp \
CMap.cpp \
- CMap.h \
+ CMap.hpp \
CMapManager.cpp \
- CMapManager.h \
+ CMapManager.hpp \
CMapReader.cpp \
- CMapReader.h \
- CmdLineParserBase.cpp \
- CmdLineParserBase.h \
+ CMapReader.hpp \
Color.cpp \
- Color.h \
+ Color.hpp \
ColorSpecialHandler.cpp \
- ColorSpecialHandler.h \
- CommandLine.cpp \
- CommandLine.h \
+ ColorSpecialHandler.hpp \
+ CommandLine.hpp \
CRC32.cpp \
- CRC32.h \
- DependencyGraph.h \
+ CRC32.hpp \
+ DependencyGraph.hpp \
Directory.cpp \
- Directory.h \
+ Directory.hpp \
DLLoader.cpp \
- DLLoader.h \
- DVIActions.h \
+ DLLoader.hpp \
+ DVIActions.hpp \
DVIReader.cpp \
- DVIReader.h \
+ DVIReader.hpp \
DvisvgmSpecialHandler.cpp \
- DvisvgmSpecialHandler.h \
+ DvisvgmSpecialHandler.hpp \
DVIToSVG.cpp \
- DVIToSVG.h \
+ DVIToSVG.hpp \
DVIToSVGActions.cpp \
- DVIToSVGActions.h \
+ DVIToSVGActions.hpp \
EmSpecialHandler.cpp \
- EmSpecialHandler.h \
+ EmSpecialHandler.hpp \
EncFile.cpp \
- EncFile.h \
+ EncFile.hpp \
EPSFile.cpp \
- EPSFile.h \
+ EPSFile.hpp \
EPSToSVG.cpp \
- EPSToSVG.h \
+ EPSToSVG.hpp \
FileFinder.cpp \
- FileFinder.h \
+ FileFinder.hpp \
FilePath.cpp \
- FilePath.h \
+ FilePath.hpp \
FileSystem.cpp \
- FileSystem.h \
+ FileSystem.hpp \
+ FixWord.hpp \
Font.cpp \
- Font.h \
+ Font.hpp \
FontCache.cpp \
- FontCache.h \
+ FontCache.hpp \
FontEncoding.cpp \
- FontEncoding.h \
+ FontEncoding.hpp \
FontEngine.cpp \
- FontEngine.h \
+ FontEngine.hpp \
FontManager.cpp \
- FontManager.h \
+ FontManager.hpp \
FontMap.cpp \
- FontMap.h \
+ FontMap.hpp \
FontMetrics.cpp \
- FontMetrics.h \
- FontStyle.h \
+ FontMetrics.hpp \
+ FontStyle.hpp \
+ FontWriter.cpp \
+ FontWriter.hpp \
GFGlyphTracer.cpp \
- GFGlyphTracer.h \
+ GFGlyphTracer.hpp \
GFReader.cpp \
- GFReader.h \
+ GFReader.hpp \
GFTracer.cpp \
- GFTracer.h \
+ GFTracer.hpp \
Ghostscript.cpp \
- Ghostscript.h \
- Glyph.h \
- GlyphTracerMessages.h \
- GraphicsPath.h \
+ Ghostscript.hpp \
+ Glyph.hpp \
+ GlyphTracerMessages.hpp \
+ GraphicsPath.hpp \
HtmlSpecialHandler.cpp \
- HtmlSpecialHandler.h \
+ HtmlSpecialHandler.hpp \
InputBuffer.cpp \
- InputBuffer.h \
+ InputBuffer.hpp \
InputReader.cpp \
- InputReader.h \
+ InputReader.hpp \
JFM.cpp \
- JFM.h \
+ JFM.hpp \
Length.cpp \
- Length.h \
- macros.h \
+ Length.hpp \
+ macros.hpp \
MapLine.cpp \
- MapLine.h \
+ MapLine.hpp \
Matrix.cpp \
- Matrix.h \
+ Matrix.hpp \
Message.cpp \
- Message.h \
- MessageException.h \
+ Message.hpp \
+ MessageException.hpp \
MetafontWrapper.cpp \
- MetafontWrapper.h \
+ MetafontWrapper.hpp \
NoPsSpecialHandler.cpp \
- NoPsSpecialHandler.h \
- NumericRanges.h \
+ NoPsSpecialHandler.hpp \
+ NumericRanges.hpp \
PageRanges.cpp \
- PageRanges.h \
+ PageRanges.hpp \
PageSize.cpp \
- PageSize.h \
- Pair.h \
+ PageSize.hpp \
+ Pair.hpp \
PapersizeSpecialHandler.cpp \
- PapersizeSpecialHandler.h \
+ PapersizeSpecialHandler.hpp \
PathClipper.cpp \
- PathClipper.h \
+ PathClipper.hpp \
PdfSpecialHandler.cpp \
- PdfSpecialHandler.h \
+ PdfSpecialHandler.hpp \
PreScanDVIReader.cpp \
- PreScanDVIReader.h \
+ PreScanDVIReader.hpp \
Process.cpp \
- Process.h \
+ Process.hpp \
psdefs.cpp \
- PSFilter.h \
+ PSFilter.hpp \
PSInterpreter.cpp \
- PSInterpreter.h \
+ PSInterpreter.hpp \
PSPattern.cpp \
- PSPattern.h \
+ PSPattern.hpp \
PSPreviewFilter.cpp \
- PSPreviewFilter.h \
+ PSPreviewFilter.hpp \
PsSpecialHandler.cpp \
- PsSpecialHandler.h \
+ PsSpecialHandler.hpp \
RangeMap.cpp \
- RangeMap.h \
+ RangeMap.hpp \
ShadingPatch.cpp \
- ShadingPatch.h \
+ ShadingPatch.hpp \
SignalHandler.cpp \
- SignalHandler.h \
- SpecialActions.h \
- SpecialHandler.h \
+ SignalHandler.hpp \
+ SpecialActions.hpp \
+ SpecialHandler.hpp \
SpecialManager.cpp \
- SpecialManager.h \
+ SpecialManager.hpp \
StreamReader.cpp \
- StreamReader.h \
+ StreamReader.hpp \
StreamWriter.cpp \
- StreamWriter.h \
+ StreamWriter.hpp \
Subfont.cpp \
- Subfont.h \
+ Subfont.hpp \
SVGCharHandler.cpp \
- SVGCharHandler.h \
+ SVGCharHandler.hpp \
SVGCharHandlerFactory.cpp \
- SVGCharHandlerFactory.h \
+ SVGCharHandlerFactory.hpp \
SVGCharPathHandler.cpp \
- SVGCharPathHandler.h \
+ SVGCharPathHandler.hpp \
SVGCharTspanTextHandler.cpp \
- SVGCharTspanTextHandler.h \
+ SVGCharTspanTextHandler.hpp \
SVGOutput.cpp \
- SVGOutput.h \
+ SVGOutput.hpp \
SVGSingleCharTextHandler.cpp \
- SVGSingleCharTextHandler.h \
+ SVGSingleCharTextHandler.hpp \
SVGTree.cpp \
- SVGTree.h \
+ SVGTree.hpp \
System.cpp \
- System.h \
+ System.hpp \
TensorProductPatch.cpp \
- TensorProductPatch.h \
+ TensorProductPatch.hpp \
Terminal.cpp \
- Terminal.h \
+ Terminal.hpp \
TFM.cpp \
- TFM.h \
+ TFM.hpp \
ToUnicodeMap.cpp \
- ToUnicodeMap.h \
+ ToUnicodeMap.hpp \
TpicSpecialHandler.cpp \
- TpicSpecialHandler.h \
+ TpicSpecialHandler.hpp \
TriangularPatch.cpp \
- TriangularPatch.h \
- types.h \
+ TriangularPatch.hpp \
Unicode.cpp \
- Unicode.h \
- VectorIterator.h \
- VectorStream.h \
- VFActions.h \
+ Unicode.hpp \
+ utility.hpp \
+ utility.cpp \
+ VectorIterator.hpp \
+ VectorStream.hpp \
+ version.hpp \
+ VFActions.hpp \
VFReader.cpp \
- VFReader.h \
+ VFReader.hpp \
XMLDocument.cpp \
- XMLDocument.h \
+ XMLDocument.hpp \
XMLNode.cpp \
- XMLNode.h \
+ XMLNode.hpp \
XMLString.cpp \
- XMLString.h
+ XMLString.hpp \
+ ZLibOutputStream.hpp
+
+if ENABLE_WOFF
+libdvisvgm_a_SOURCES += ffwrapper.c ffwrapper.h
+endif
-EXTRA_DIST = options.xml options.dtd iapi.h ierrors.h MiKTeXCom.h MiKTeXCom.cpp
+EXTRA_DIST = options.xml options.dtd iapi.h ierrors.h MiKTeXCom.hpp MiKTeXCom.cpp
+
+AM_CFLAGS = -Wall \
+ $(ZLIB_CFLAGS) \
+ $(CODE_COVERAGE_CFLAGS)
AM_CXXFLAGS = -Wall -Wnon-virtual-dtor \
- -I$(top_srcdir)/clipper \
- -I$(top_srcdir)/xxHash \
+ -I$(top_srcdir)/libs/clipper \
+ -I$(top_srcdir)/libs/xxHash \
$(FREETYPE_CFLAGS) \
$(ZLIB_CFLAGS) \
$(CODE_COVERAGE_CFLAGS)
+if ENABLE_WOFF
+AM_CFLAGS += \
+ -I$(top_srcdir)/libs/ff-woff/fontforge \
+ -I$(top_srcdir)/libs/ff-woff/inc
+
+AM_CXXFLAGS += \
+ -I$(top_srcdir)/libs/woff2/brotli/enc \
+ -I$(top_srcdir)/libs/woff2/src
+endif
+
AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
-# the command-line parser is generated from options.xml by opt2cpp
-$(srcdir)/CommandLine.cpp: options.xml
- if test -f opt2cpp.xsl; then \
- rm -f $@ $*.h; \
- xsltproc opt2cpp.xsl $<; \
- elif test -f $(srcdir)/opt2cpp.py; then \
- rm -f $@ $*.h; \
- python2 $(srcdir)/opt2cpp.py $< $@ $*.h; \
- fi
+# the command-line parser class is generated from options.xml by opt2cpp
+$(srcdir)/CommandLine.hpp: options.xml
+ rm -f $@ $*.hpp
+ python $(srcdir)/opt2cpp.py $< >$@
# Create a C string definition containing the PostScript routines psdefs.ps needed by class PSInterpreter
$(srcdir)/psdefs.cpp: psdefs.ps
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in
new file mode 100644
index 00000000000..8518606edb9
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in
@@ -0,0 +1,942 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+bin_PROGRAMS = dvisvgm$(EXEEXT)
+@ENABLE_WOFF_TRUE@am__append_1 = \
+@ENABLE_WOFF_TRUE@ ../libs/ff-woff/libfontforge.a \
+@ENABLE_WOFF_TRUE@ ../libs/woff2/libwoff2.a \
+@ENABLE_WOFF_TRUE@ ../libs/woff2/brotli/libbrotli.a
+
+@ENABLE_WOFF_TRUE@am__append_2 = ffwrapper.c ffwrapper.h
+@ENABLE_WOFF_TRUE@am__append_3 = \
+@ENABLE_WOFF_TRUE@ -I$(top_srcdir)/libs/ff-woff/fontforge \
+@ENABLE_WOFF_TRUE@ -I$(top_srcdir)/libs/ff-woff/inc
+
+@ENABLE_WOFF_TRUE@am__append_4 = \
+@ENABLE_WOFF_TRUE@ -I$(top_srcdir)/libs/woff2/brotli/enc \
+@ENABLE_WOFF_TRUE@ -I$(top_srcdir)/libs/woff2/src
+
+subdir = src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = version.hpp
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libdvisvgm_a_AR = $(AR) $(ARFLAGS)
+libdvisvgm_a_LIBADD =
+am__libdvisvgm_a_SOURCES_DIST = AGLTable.hpp BasicDVIReader.cpp \
+ BasicDVIReader.hpp Bezier.cpp Bezier.hpp \
+ BgColorSpecialHandler.cpp BgColorSpecialHandler.hpp Bitmap.cpp \
+ Bitmap.hpp BoundingBox.cpp BoundingBox.hpp Calculator.cpp \
+ Calculator.hpp Character.hpp CharMapID.cpp CharMapID.hpp \
+ CLCommandLine.cpp CLCommandLine.hpp CLOption.hpp CMap.cpp \
+ CMap.hpp CMapManager.cpp CMapManager.hpp CMapReader.cpp \
+ CMapReader.hpp Color.cpp Color.hpp ColorSpecialHandler.cpp \
+ ColorSpecialHandler.hpp CommandLine.hpp CRC32.cpp CRC32.hpp \
+ DependencyGraph.hpp Directory.cpp Directory.hpp DLLoader.cpp \
+ DLLoader.hpp DVIActions.hpp DVIReader.cpp DVIReader.hpp \
+ DvisvgmSpecialHandler.cpp DvisvgmSpecialHandler.hpp \
+ DVIToSVG.cpp DVIToSVG.hpp DVIToSVGActions.cpp \
+ DVIToSVGActions.hpp EmSpecialHandler.cpp EmSpecialHandler.hpp \
+ EncFile.cpp EncFile.hpp EPSFile.cpp EPSFile.hpp EPSToSVG.cpp \
+ EPSToSVG.hpp FileFinder.cpp FileFinder.hpp FilePath.cpp \
+ FilePath.hpp FileSystem.cpp FileSystem.hpp FixWord.hpp \
+ Font.cpp Font.hpp FontCache.cpp FontCache.hpp FontEncoding.cpp \
+ FontEncoding.hpp FontEngine.cpp FontEngine.hpp FontManager.cpp \
+ FontManager.hpp FontMap.cpp FontMap.hpp FontMetrics.cpp \
+ FontMetrics.hpp FontStyle.hpp FontWriter.cpp FontWriter.hpp \
+ GFGlyphTracer.cpp GFGlyphTracer.hpp GFReader.cpp GFReader.hpp \
+ GFTracer.cpp GFTracer.hpp Ghostscript.cpp Ghostscript.hpp \
+ Glyph.hpp GlyphTracerMessages.hpp GraphicsPath.hpp \
+ HtmlSpecialHandler.cpp HtmlSpecialHandler.hpp InputBuffer.cpp \
+ InputBuffer.hpp InputReader.cpp InputReader.hpp JFM.cpp \
+ JFM.hpp Length.cpp Length.hpp macros.hpp MapLine.cpp \
+ MapLine.hpp Matrix.cpp Matrix.hpp Message.cpp Message.hpp \
+ MessageException.hpp MetafontWrapper.cpp MetafontWrapper.hpp \
+ NoPsSpecialHandler.cpp NoPsSpecialHandler.hpp \
+ NumericRanges.hpp PageRanges.cpp PageRanges.hpp PageSize.cpp \
+ PageSize.hpp Pair.hpp PapersizeSpecialHandler.cpp \
+ PapersizeSpecialHandler.hpp PathClipper.cpp PathClipper.hpp \
+ PdfSpecialHandler.cpp PdfSpecialHandler.hpp \
+ PreScanDVIReader.cpp PreScanDVIReader.hpp Process.cpp \
+ Process.hpp psdefs.cpp PSFilter.hpp PSInterpreter.cpp \
+ PSInterpreter.hpp PSPattern.cpp PSPattern.hpp \
+ PSPreviewFilter.cpp PSPreviewFilter.hpp PsSpecialHandler.cpp \
+ PsSpecialHandler.hpp RangeMap.cpp RangeMap.hpp \
+ ShadingPatch.cpp ShadingPatch.hpp SignalHandler.cpp \
+ SignalHandler.hpp SpecialActions.hpp SpecialHandler.hpp \
+ SpecialManager.cpp SpecialManager.hpp StreamReader.cpp \
+ StreamReader.hpp StreamWriter.cpp StreamWriter.hpp Subfont.cpp \
+ Subfont.hpp SVGCharHandler.cpp SVGCharHandler.hpp \
+ SVGCharHandlerFactory.cpp SVGCharHandlerFactory.hpp \
+ SVGCharPathHandler.cpp SVGCharPathHandler.hpp \
+ SVGCharTspanTextHandler.cpp SVGCharTspanTextHandler.hpp \
+ SVGOutput.cpp SVGOutput.hpp SVGSingleCharTextHandler.cpp \
+ SVGSingleCharTextHandler.hpp SVGTree.cpp SVGTree.hpp \
+ System.cpp System.hpp TensorProductPatch.cpp \
+ TensorProductPatch.hpp Terminal.cpp Terminal.hpp TFM.cpp \
+ TFM.hpp ToUnicodeMap.cpp ToUnicodeMap.hpp \
+ TpicSpecialHandler.cpp TpicSpecialHandler.hpp \
+ TriangularPatch.cpp TriangularPatch.hpp Unicode.cpp \
+ Unicode.hpp utility.hpp utility.cpp VectorIterator.hpp \
+ VectorStream.hpp version.hpp VFActions.hpp VFReader.cpp \
+ VFReader.hpp XMLDocument.cpp XMLDocument.hpp XMLNode.cpp \
+ XMLNode.hpp XMLString.cpp XMLString.hpp ZLibOutputStream.hpp \
+ ffwrapper.c ffwrapper.h
+@ENABLE_WOFF_TRUE@am__objects_1 = ffwrapper.$(OBJEXT)
+am_libdvisvgm_a_OBJECTS = BasicDVIReader.$(OBJEXT) Bezier.$(OBJEXT) \
+ BgColorSpecialHandler.$(OBJEXT) Bitmap.$(OBJEXT) \
+ BoundingBox.$(OBJEXT) Calculator.$(OBJEXT) CharMapID.$(OBJEXT) \
+ CLCommandLine.$(OBJEXT) CMap.$(OBJEXT) CMapManager.$(OBJEXT) \
+ CMapReader.$(OBJEXT) Color.$(OBJEXT) \
+ ColorSpecialHandler.$(OBJEXT) CRC32.$(OBJEXT) \
+ Directory.$(OBJEXT) DLLoader.$(OBJEXT) DVIReader.$(OBJEXT) \
+ DvisvgmSpecialHandler.$(OBJEXT) DVIToSVG.$(OBJEXT) \
+ DVIToSVGActions.$(OBJEXT) EmSpecialHandler.$(OBJEXT) \
+ EncFile.$(OBJEXT) EPSFile.$(OBJEXT) EPSToSVG.$(OBJEXT) \
+ FileFinder.$(OBJEXT) FilePath.$(OBJEXT) FileSystem.$(OBJEXT) \
+ Font.$(OBJEXT) FontCache.$(OBJEXT) FontEncoding.$(OBJEXT) \
+ FontEngine.$(OBJEXT) FontManager.$(OBJEXT) FontMap.$(OBJEXT) \
+ FontMetrics.$(OBJEXT) FontWriter.$(OBJEXT) \
+ GFGlyphTracer.$(OBJEXT) GFReader.$(OBJEXT) GFTracer.$(OBJEXT) \
+ Ghostscript.$(OBJEXT) HtmlSpecialHandler.$(OBJEXT) \
+ InputBuffer.$(OBJEXT) InputReader.$(OBJEXT) JFM.$(OBJEXT) \
+ Length.$(OBJEXT) MapLine.$(OBJEXT) Matrix.$(OBJEXT) \
+ Message.$(OBJEXT) MetafontWrapper.$(OBJEXT) \
+ NoPsSpecialHandler.$(OBJEXT) PageRanges.$(OBJEXT) \
+ PageSize.$(OBJEXT) PapersizeSpecialHandler.$(OBJEXT) \
+ PathClipper.$(OBJEXT) PdfSpecialHandler.$(OBJEXT) \
+ PreScanDVIReader.$(OBJEXT) Process.$(OBJEXT) psdefs.$(OBJEXT) \
+ PSInterpreter.$(OBJEXT) PSPattern.$(OBJEXT) \
+ PSPreviewFilter.$(OBJEXT) PsSpecialHandler.$(OBJEXT) \
+ RangeMap.$(OBJEXT) ShadingPatch.$(OBJEXT) \
+ SignalHandler.$(OBJEXT) SpecialManager.$(OBJEXT) \
+ StreamReader.$(OBJEXT) StreamWriter.$(OBJEXT) \
+ Subfont.$(OBJEXT) SVGCharHandler.$(OBJEXT) \
+ SVGCharHandlerFactory.$(OBJEXT) SVGCharPathHandler.$(OBJEXT) \
+ SVGCharTspanTextHandler.$(OBJEXT) SVGOutput.$(OBJEXT) \
+ SVGSingleCharTextHandler.$(OBJEXT) SVGTree.$(OBJEXT) \
+ System.$(OBJEXT) TensorProductPatch.$(OBJEXT) \
+ Terminal.$(OBJEXT) TFM.$(OBJEXT) ToUnicodeMap.$(OBJEXT) \
+ TpicSpecialHandler.$(OBJEXT) TriangularPatch.$(OBJEXT) \
+ Unicode.$(OBJEXT) utility.$(OBJEXT) VFReader.$(OBJEXT) \
+ XMLDocument.$(OBJEXT) XMLNode.$(OBJEXT) XMLString.$(OBJEXT) \
+ $(am__objects_1)
+libdvisvgm_a_OBJECTS = $(am_libdvisvgm_a_OBJECTS)
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_dvisvgm_OBJECTS = dvisvgm.$(OBJEXT)
+dvisvgm_OBJECTS = $(am_dvisvgm_OBJECTS)
+am__DEPENDENCIES_1 =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo " CXX " $@;
+am__v_CXX_1 =
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo " CXXLD " $@;
+am__v_CXXLD_1 =
+SOURCES = $(libdvisvgm_a_SOURCES) $(dvisvgm_SOURCES)
+DIST_SOURCES = $(am__libdvisvgm_a_SOURCES_DIST) $(dvisvgm_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/version.hpp.in \
+ $(top_srcdir)/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GCOV = @GCOV@
+GENHTML = @GENHTML@
+GREP = @GREP@
+HAVE_CXX11 = @HAVE_CXX11@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCOV = @LCOV@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ZLIB_CFLAGS = @ZLIB_CFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+noinst_LIBRARIES = libdvisvgm.a
+dvisvgm_SOURCES = dvisvgm.cpp
+dvisvgm_LDADD = $(noinst_LIBRARIES) ../libs/clipper/libclipper.a \
+ ../libs/xxHash/libxxhash.a $(FREETYPE_LIBS) $(FONTFORGE_LIBS) \
+ $(ZLIB_LIBS) $(am__append_1)
+dvisvgm_DEPENDENCIES = $(noinst_LIBRARIES)
+libdvisvgm_a_SOURCES = AGLTable.hpp BasicDVIReader.cpp \
+ BasicDVIReader.hpp Bezier.cpp Bezier.hpp \
+ BgColorSpecialHandler.cpp BgColorSpecialHandler.hpp Bitmap.cpp \
+ Bitmap.hpp BoundingBox.cpp BoundingBox.hpp Calculator.cpp \
+ Calculator.hpp Character.hpp CharMapID.cpp CharMapID.hpp \
+ CLCommandLine.cpp CLCommandLine.hpp CLOption.hpp CMap.cpp \
+ CMap.hpp CMapManager.cpp CMapManager.hpp CMapReader.cpp \
+ CMapReader.hpp Color.cpp Color.hpp ColorSpecialHandler.cpp \
+ ColorSpecialHandler.hpp CommandLine.hpp CRC32.cpp CRC32.hpp \
+ DependencyGraph.hpp Directory.cpp Directory.hpp DLLoader.cpp \
+ DLLoader.hpp DVIActions.hpp DVIReader.cpp DVIReader.hpp \
+ DvisvgmSpecialHandler.cpp DvisvgmSpecialHandler.hpp \
+ DVIToSVG.cpp DVIToSVG.hpp DVIToSVGActions.cpp \
+ DVIToSVGActions.hpp EmSpecialHandler.cpp EmSpecialHandler.hpp \
+ EncFile.cpp EncFile.hpp EPSFile.cpp EPSFile.hpp EPSToSVG.cpp \
+ EPSToSVG.hpp FileFinder.cpp FileFinder.hpp FilePath.cpp \
+ FilePath.hpp FileSystem.cpp FileSystem.hpp FixWord.hpp \
+ Font.cpp Font.hpp FontCache.cpp FontCache.hpp FontEncoding.cpp \
+ FontEncoding.hpp FontEngine.cpp FontEngine.hpp FontManager.cpp \
+ FontManager.hpp FontMap.cpp FontMap.hpp FontMetrics.cpp \
+ FontMetrics.hpp FontStyle.hpp FontWriter.cpp FontWriter.hpp \
+ GFGlyphTracer.cpp GFGlyphTracer.hpp GFReader.cpp GFReader.hpp \
+ GFTracer.cpp GFTracer.hpp Ghostscript.cpp Ghostscript.hpp \
+ Glyph.hpp GlyphTracerMessages.hpp GraphicsPath.hpp \
+ HtmlSpecialHandler.cpp HtmlSpecialHandler.hpp InputBuffer.cpp \
+ InputBuffer.hpp InputReader.cpp InputReader.hpp JFM.cpp \
+ JFM.hpp Length.cpp Length.hpp macros.hpp MapLine.cpp \
+ MapLine.hpp Matrix.cpp Matrix.hpp Message.cpp Message.hpp \
+ MessageException.hpp MetafontWrapper.cpp MetafontWrapper.hpp \
+ NoPsSpecialHandler.cpp NoPsSpecialHandler.hpp \
+ NumericRanges.hpp PageRanges.cpp PageRanges.hpp PageSize.cpp \
+ PageSize.hpp Pair.hpp PapersizeSpecialHandler.cpp \
+ PapersizeSpecialHandler.hpp PathClipper.cpp PathClipper.hpp \
+ PdfSpecialHandler.cpp PdfSpecialHandler.hpp \
+ PreScanDVIReader.cpp PreScanDVIReader.hpp Process.cpp \
+ Process.hpp psdefs.cpp PSFilter.hpp PSInterpreter.cpp \
+ PSInterpreter.hpp PSPattern.cpp PSPattern.hpp \
+ PSPreviewFilter.cpp PSPreviewFilter.hpp PsSpecialHandler.cpp \
+ PsSpecialHandler.hpp RangeMap.cpp RangeMap.hpp \
+ ShadingPatch.cpp ShadingPatch.hpp SignalHandler.cpp \
+ SignalHandler.hpp SpecialActions.hpp SpecialHandler.hpp \
+ SpecialManager.cpp SpecialManager.hpp StreamReader.cpp \
+ StreamReader.hpp StreamWriter.cpp StreamWriter.hpp Subfont.cpp \
+ Subfont.hpp SVGCharHandler.cpp SVGCharHandler.hpp \
+ SVGCharHandlerFactory.cpp SVGCharHandlerFactory.hpp \
+ SVGCharPathHandler.cpp SVGCharPathHandler.hpp \
+ SVGCharTspanTextHandler.cpp SVGCharTspanTextHandler.hpp \
+ SVGOutput.cpp SVGOutput.hpp SVGSingleCharTextHandler.cpp \
+ SVGSingleCharTextHandler.hpp SVGTree.cpp SVGTree.hpp \
+ System.cpp System.hpp TensorProductPatch.cpp \
+ TensorProductPatch.hpp Terminal.cpp Terminal.hpp TFM.cpp \
+ TFM.hpp ToUnicodeMap.cpp ToUnicodeMap.hpp \
+ TpicSpecialHandler.cpp TpicSpecialHandler.hpp \
+ TriangularPatch.cpp TriangularPatch.hpp Unicode.cpp \
+ Unicode.hpp utility.hpp utility.cpp VectorIterator.hpp \
+ VectorStream.hpp version.hpp VFActions.hpp VFReader.cpp \
+ VFReader.hpp XMLDocument.cpp XMLDocument.hpp XMLNode.cpp \
+ XMLNode.hpp XMLString.cpp XMLString.hpp ZLibOutputStream.hpp \
+ $(am__append_2)
+EXTRA_DIST = options.xml options.dtd iapi.h ierrors.h MiKTeXCom.hpp MiKTeXCom.cpp
+AM_CFLAGS = -Wall $(ZLIB_CFLAGS) $(CODE_COVERAGE_CFLAGS) \
+ $(am__append_3)
+AM_CXXFLAGS = -Wall -Wnon-virtual-dtor -I$(top_srcdir)/libs/clipper \
+ -I$(top_srcdir)/libs/xxHash $(FREETYPE_CFLAGS) $(ZLIB_CFLAGS) \
+ $(CODE_COVERAGE_CFLAGS) $(am__append_4)
+CLEANFILES = *.gcda *.gcno
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .cpp .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+version.hpp: $(top_builddir)/config.status $(srcdir)/version.hpp.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+libdvisvgm.a: $(libdvisvgm_a_OBJECTS) $(libdvisvgm_a_DEPENDENCIES) $(EXTRA_libdvisvgm_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libdvisvgm.a
+ $(AM_V_AR)$(libdvisvgm_a_AR) libdvisvgm.a $(libdvisvgm_a_OBJECTS) $(libdvisvgm_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libdvisvgm.a
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+dvisvgm$(EXEEXT): $(dvisvgm_OBJECTS) $(dvisvgm_DEPENDENCIES) $(EXTRA_dvisvgm_DEPENDENCIES)
+ @rm -f dvisvgm$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(dvisvgm_OBJECTS) $(dvisvgm_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BasicDVIReader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Bezier.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BgColorSpecialHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Bitmap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BoundingBox.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CLCommandLine.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CMap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CMapManager.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CMapReader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CRC32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Calculator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CharMapID.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Color.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ColorSpecialHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DLLoader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DVIReader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DVIToSVG.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DVIToSVGActions.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Directory.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DvisvgmSpecialHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EPSFile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EPSToSVG.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EmSpecialHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EncFile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileFinder.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FilePath.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileSystem.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Font.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontCache.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontEncoding.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontEngine.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontManager.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontMap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontMetrics.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontWriter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GFGlyphTracer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GFReader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GFTracer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ghostscript.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HtmlSpecialHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/InputBuffer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/InputReader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/JFM.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Length.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MapLine.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Matrix.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Message.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MetafontWrapper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NoPsSpecialHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PSInterpreter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PSPattern.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PSPreviewFilter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PageRanges.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PageSize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PapersizeSpecialHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PathClipper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PdfSpecialHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PreScanDVIReader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Process.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PsSpecialHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RangeMap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SVGCharHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SVGCharHandlerFactory.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SVGCharPathHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SVGCharTspanTextHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SVGOutput.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SVGSingleCharTextHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SVGTree.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShadingPatch.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SignalHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SpecialManager.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StreamReader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StreamWriter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Subfont.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/System.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TFM.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TensorProductPatch.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Terminal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ToUnicodeMap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TpicSpecialHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TriangularPatch.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Unicode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VFReader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XMLDocument.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XMLNode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XMLString.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dvisvgm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffwrapper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psdefs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utility.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES) $(PROGRAMS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+ clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-binPROGRAMS \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-binPROGRAMS
+
+.PRECIOUS: Makefile
+
+:## This file is part of dvisvgm
+
+# the command-line parser class is generated from options.xml by opt2cpp
+$(srcdir)/CommandLine.hpp: options.xml
+ rm -f $@ $*.hpp
+ python $(srcdir)/opt2cpp.py $< >$@
+
+# Create a C string definition containing the PostScript routines psdefs.ps needed by class PSInterpreter
+$(srcdir)/psdefs.cpp: psdefs.ps
+ if test -f $<; then \
+ ps2c PSInterpreter::PSDEFS $< >$@; \
+ fi
+
+psdefs.ps: ;
+
+@CODE_COVERAGE_RULES@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/MapLine.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/MapLine.cpp
index e972dd55ad3..49809861199 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/MapLine.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/MapLine.cpp
@@ -2,7 +2,7 @@
** MapLine.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,10 +21,10 @@
#include <config.h>
#include <cstring>
#include <sstream>
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "MapLine.h"
-#include "Subfont.h"
+#include "InputBuffer.hpp"
+#include "InputReader.hpp"
+#include "MapLine.hpp"
+#include "Subfont.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/MapLine.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/MapLine.hpp
index e2e7afc426e..9dcb568792a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/MapLine.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/MapLine.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** MapLine.h **
+** MapLine.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,12 +18,12 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_MAPLINE_H
-#define DVISVGM_MAPLINE_H
+#ifndef MAPLINE_HPP
+#define MAPLINE_HPP
#include <istream>
#include <string>
-#include "MessageException.h"
+#include "MessageException.hpp"
class InputReader;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp
index 90bb4c29a47..83ef1ccfbb5 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp
@@ -2,7 +2,7 @@
** Matrix.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -24,9 +24,9 @@
#include <cmath>
#include <limits>
#include <sstream>
-#include "Calculator.h"
-#include "Matrix.h"
-#include "XMLString.h"
+#include "Calculator.hpp"
+#include "Matrix.hpp"
+#include "XMLString.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.hpp
index 9c84ec18990..0d8917f56ae 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Matrix.h **
+** Matrix.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,14 +18,14 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_MATRIX_H
-#define DVISVGM_MATRIX_H
+#ifndef MATRIX_HPP
+#define MATRIX_HPP
#include <istream>
#include <string>
#include <vector>
-#include "MessageException.h"
-#include "Pair.h"
+#include "MessageException.hpp"
+#include "Pair.hpp"
struct ParserException : public MessageException
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Message.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Message.cpp
index 40b0909f173..7e60ad3b9fa 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Message.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Message.cpp
@@ -2,7 +2,7 @@
** Message.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -24,8 +24,8 @@
#include <cstring>
#include <iostream>
#include <map>
-#include "Message.h"
-#include "Terminal.h"
+#include "Message.hpp"
+#include "Terminal.hpp"
using namespace std;
@@ -234,15 +234,16 @@ void Message::init () {
_classColors[MC_PROGRESS] = Color(Terminal::MAGENTA);
if (const char *color_str = getenv("DVISVGM_COLORS")) {
- map<string, MessageClass> classes;
- classes["er"] = MC_ERROR;
- classes["wn"] = MC_WARNING;
- classes["pn"] = MC_PAGE_NUMBER;
- classes["ps"] = MC_PAGE_SIZE;
- classes["fw"] = MC_PAGE_WRITTEN;
- classes["sm"] = MC_STATE;
- classes["tr"] = MC_TRACING;
- classes["pi"] = MC_PROGRESS;
+ map<string, MessageClass> classes = {
+ {"er", MC_ERROR},
+ {"wn", MC_WARNING},
+ {"pn", MC_PAGE_NUMBER},
+ {"ps", MC_PAGE_SIZE},
+ {"fw", MC_PAGE_WRITTEN},
+ {"sm", MC_STATE},
+ {"tr", MC_TRACING},
+ {"pi", MC_PROGRESS},
+ };
const char *p=color_str;
// skip leading whitespace
@@ -251,7 +252,7 @@ void Message::init () {
// iterate over color assignments
while (strlen(p) >= 5) {
- map<string, MessageClass>::iterator it = classes.find(string(p, 2));
+ auto it = classes.find(string(p, 2));
if (it != classes.end() && p[2] == '=') {
int bgcolor, fgcolor;
if (colorchar2int(p[3], &bgcolor) && colorchar2int(p[4], &fgcolor)) {
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Message.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Message.hpp
index 42ec15955f2..f05eb6aa0ed 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Message.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Message.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Message.h **
+** Message.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,15 +18,15 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_MESSAGE_H
-#define DVISVGM_MESSAGE_H
+#ifndef MESSAGE_HPP
+#define MESSAGE_HPP
#include <algorithm>
+#include <cstdint>
#include <string>
#include <ostream>
#include <sstream>
-#include "Terminal.h"
-#include "types.h"
+#include "Terminal.hpp"
class Message;
@@ -73,11 +73,11 @@ class Message
{
struct Color {
Color () : foreground(-1), background(-1) {}
- Color (Int8 fgcolor) : foreground(fgcolor), background(-1) {}
- Color (Int8 fgcolor, bool light) : foreground(fgcolor + (light ? 8 : 0)), background(-1) {}
- Color (Int8 fgcolor, Int8 bgcolor) : foreground(fgcolor), background(bgcolor) {}
- Int8 foreground;
- Int8 background;
+ Color (int8_t fgcolor) : foreground(fgcolor), background(-1) {}
+ Color (int8_t fgcolor, bool light) : foreground(fgcolor + (light ? 8 : 0)), background(-1) {}
+ Color (int8_t fgcolor, int8_t bgcolor) : foreground(fgcolor), background(bgcolor) {}
+ int8_t foreground;
+ int8_t background;
};
public:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/MessageException.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/MessageException.hpp
index f5c35cae046..d94a1feab8a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/MessageException.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/MessageException.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** MessageException.h **
+** MessageException.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_MESSAGEEXCEPTION_H
-#define DVISVGM_MESSAGEEXCEPTION_H
+#ifndef MESSAGEEXCEPTION_HPP
+#define MESSAGEEXCEPTION_HPP
#include <exception>
#include <string>
@@ -29,8 +29,8 @@ class MessageException : public std::exception
{
public:
MessageException (const std::string &msg) : _message(msg) {}
- virtual ~MessageException () throw() {}
- const char* what () const throw() {return _message.c_str();}
+ virtual ~MessageException () throw() =default;
+ const char* what () const throw() override {return _message.c_str();}
private:
std::string _message;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.cpp
index 26f43984679..dd2a6cf2941 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.cpp
@@ -2,7 +2,7 @@
** MetafontWrapper.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -23,18 +23,23 @@
#include <cctype>
#include <fstream>
#include <sstream>
-#include "FileSystem.h"
-#include "FileFinder.h"
-#include "Message.h"
-#include "MetafontWrapper.h"
-#include "Process.h"
-#include "XMLString.h"
+#include "FileSystem.hpp"
+#include "FileFinder.hpp"
+#include "Message.hpp"
+#include "MetafontWrapper.hpp"
+#include "Process.hpp"
+#include "XMLString.hpp"
using namespace std;
-MetafontWrapper::MetafontWrapper (const string &fname) : _fontname(fname)
+MetafontWrapper::MetafontWrapper (const string &fname, const string &dir) : _fontname(fname), _dir(dir)
{
+ // ensure that folder paths ends with slash
+ if (_dir.empty())
+ _dir = "./";
+ else if (_dir != "/" && dir[dir.length()-1] != '/')
+ _dir += '/';
}
@@ -45,7 +50,7 @@ MetafontWrapper::MetafontWrapper (const string &fname) : _fontname(fname)
* @param[in] mag magnification factor
* @return true on success */
bool MetafontWrapper::call (const string &mode, double mag) {
- if (!FileFinder::lookup(_fontname+".mf"))
+ if (!FileFinder::instance().lookup(_fontname+".mf"))
return false; // mf file not available => no need to call the "slow" Metafont
FileSystem::remove(_fontname+".gf");
@@ -55,7 +60,7 @@ bool MetafontWrapper::call (const string &mode, double mag) {
#else
const char *mfname = "mf.exe";
#endif
- const char *cmd = FileFinder::lookup(mfname, false);
+ const char *cmd = FileFinder::instance().lookup(mfname, false);
if (!cmd) {
Message::estream(true) << "can't run Metafont (" << mfname << " not found)\n";
return false;
@@ -73,7 +78,7 @@ bool MetafontWrapper::call (const string &mode, double mag) {
Message::mstream(false, Message::MC_STATE) << "\nrunning Metafont for " << _fontname << '\n';
Process mf_process(cmd, oss.str().c_str());
string mf_messages;
- mf_process.run(&mf_messages);
+ mf_process.run(_dir, &mf_messages);
// get resolution value from stdout created by above MF command
char buf[256];
@@ -88,12 +93,12 @@ bool MetafontWrapper::call (const string &mode, double mag) {
}
}
// compose expected name of GF file (see Metafont Book, p. 324)
- string gfname = _fontname + ".";
+ string gfname = _dir + _fontname + ".";
if (resolution > 0)
gfname += XMLString(resolution);
gfname += "gf";
- FileSystem::rename(gfname, _fontname+".gf"); // remove resolution from filename
- return FileSystem::exists(_fontname+".gf");
+ FileSystem::rename(gfname, _dir+_fontname+".gf"); // remove resolution value from filename
+ return FileSystem::exists(_dir+_fontname+".gf");
}
@@ -102,8 +107,8 @@ bool MetafontWrapper::call (const string &mode, double mag) {
* @param[in] mag magnification factor
* @return true on success */
bool MetafontWrapper::make (const string &mode, double mag) {
- ifstream tfm((_fontname+".tfm").c_str());
- ifstream gf((_fontname+".gf").c_str());
+ ifstream tfm((_dir+_fontname+".tfm").c_str());
+ ifstream gf((_dir+_fontname+".gf").c_str());
if (gf && tfm) // @@ distinguish between gf and tfm
return true;
return call(mode, mag);
@@ -111,24 +116,7 @@ bool MetafontWrapper::make (const string &mode, double mag) {
bool MetafontWrapper::success () const {
- ifstream tfm((_fontname+".tfm").c_str());
- ifstream gf((_fontname+".gf").c_str());
+ ifstream tfm((_dir+_fontname+".tfm").c_str());
+ ifstream gf((_dir+_fontname+".gf").c_str());
return tfm && gf;
}
-
-
-/** Remove all files created by a Metafont call (tfm, gf, log).
- * @param[in] keepGF if true, GF files won't be removed */
-void MetafontWrapper::removeOutputFiles (bool keepGF) {
- removeOutputFiles(_fontname, keepGF);
-}
-
-
-/** Remove all files created by a Metafont call for a given font (tfm, gf, log).
- * @param[in] fontname name of font whose temporary files should be removed
- * @param[in] keepGF if true, GF files will be kept */
-void MetafontWrapper::removeOutputFiles (const string &fontname, bool keepGF) {
- const char *ext[] = {"gf", "tfm", "log", 0};
- for (const char **p = keepGF ? ext+2 : ext; *p; ++p)
- FileSystem::remove(fontname + "." + *p);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.hpp
index bf035b374ab..3bda79c5683 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/MetafontWrapper.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** MetafontWrapper.h **
+** MetafontWrapper.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,26 +18,25 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_METAFONTWRAPPER_H
-#define DVISVGM_METAFONTWRAPPER_H
+#ifndef METAFONTWRAPPER_HPP
+#define METAFONTWRAPPER_HPP
#include <string>
-struct FileFinder;
+class FileFinder;
class MetafontWrapper
{
public:
- MetafontWrapper (const std::string &fontname);
+ MetafontWrapper (const std::string &fontname, const std::string &dir);
bool call (const std::string &mode, double mag);
bool make (const std::string &mode, double mag);
bool success () const;
- void removeOutputFiles (bool keepGF=false);
- static void removeOutputFiles (const std::string &fontname, bool keepGF=false);
private:
std::string _fontname;
+ std::string _dir;
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp
index 8927ebbf834..bdb0cc89073 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp
@@ -2,7 +2,7 @@
** MiKTeXCom.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -22,9 +22,8 @@
#include <stdio.h>
#include <comdef.h>
#include <string>
-#include "MessageException.h"
-#include "MiKTeXCom.h"
-#include "macros.h"
+#include "MessageException.hpp"
+#include "MiKTeXCom.hpp"
using namespace std;
@@ -36,7 +35,7 @@ MiKTeXCom::MiKTeXCom () : _session(0) {
// try to initialize the MiKTeX session object
#ifdef _MSC_VER
HRESULT hres = _session.CreateInstance(L"MiKTeX.Session");
-#elif defined(__WIN64__)
+#elif defined(_WIN64)
HRESULT hres = CoCreateInstance(CLSID_MiKTeXSession2_9, 0, CLSCTX_LOCAL_SERVER, IID_ISession2, (void**)&_session);
#else
HRESULT hres = CoCreateInstance(CLSID_MiKTeXSession2_9, 0, CLSCTX_INPROC_SERVER, IID_ISession2, (void**)&_session);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.hpp
index 834a7f4d905..a87a8488c7c 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** MiKTeXCom.h **
+** MiKTeXCom.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_MIKTEXCOM_H
-#define DVISVGM_MIKTEXCOM_H
+#ifndef MIKTEXCOM_HPP
+#define MIKTEXCOM_HPP
#include <string>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp
index fd85cc0ffac..a5b2a680ebc 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp
@@ -2,7 +2,7 @@
** NoPsSpecialHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,8 +19,8 @@
*************************************************************************/
#include <config.h>
-#include "Message.h"
-#include "NoPsSpecialHandler.h"
+#include "Message.hpp"
+#include "NoPsSpecialHandler.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.hpp
index 777656e8ad3..bec66478864 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** NoPsSpecialHandler.h **
+** NoPsSpecialHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,22 +18,22 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_NOPSSPECIALHANDLER_H
-#define DVISVGM_NOPSSPECIALHANDLER_H
+#ifndef NOPSSPECIALHANDLER_HPP
+#define NOPSSPECIALHANDLER_HPP
-#include "SpecialHandler.h"
+#include "SpecialHandler.hpp"
class NoPsSpecialHandler : public SpecialHandler, public DVIEndPageListener
{
public:
NoPsSpecialHandler () : _count(0) {}
- bool process (const char *prefix, std::istream &is, SpecialActions &actions);
- const char* name () const {return 0;}
- const char* info () const {return 0;}
- const char** prefixes () const;
+ bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+ const char* name () const override {return 0;}
+ const char* info () const override {return 0;}
+ const char** prefixes () const override;
protected:
- void dviEndPage (unsigned pageno, SpecialActions &actions);
+ void dviEndPage (unsigned pageno, SpecialActions &actions) override;
private:
unsigned _count; // number of PS specials skipped
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/NumericRanges.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/NumericRanges.hpp
index 486213887de..c87eddf054f 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/NumericRanges.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/NumericRanges.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** NumericRanges.h **
+** NumericRanges.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_NUMERICRANGES_H
-#define DVISVGM_NUMERICRANGES_H
+#ifndef NUMERICRANGES_HPP
+#define NUMERICRANGES_HPP
#include <algorithm>
#include <list>
@@ -31,7 +31,6 @@ class NumericRanges
public:
typedef std::pair<T,T> Range;
typedef std::list<Range> Container;
- typedef typename Container::iterator Iterator;
typedef typename Container::const_iterator ConstIterator;
public:
@@ -43,9 +42,6 @@ class NumericRanges
ConstIterator end () const {return _ranges.end();}
const Container& ranges () const {return _ranges;}
- protected:
- static bool isLess (const Range &r1, const Range &r2) {return r1.first < r2.first;}
-
private:
Container _ranges;
};
@@ -102,7 +98,10 @@ void NumericRanges<T>::addRange (T first, T last) {
template <class T>
bool NumericRanges<T>::valueExists (T value) const {
- ConstIterator it = std::lower_bound(_ranges.begin(), _ranges.end(), Range(value, 0), &isLess);
+ ConstIterator it = std::lower_bound(_ranges.begin(), _ranges.end(), Range(value, 0),
+ [](const Range &r1, const Range &r2) {
+ return r1.first < r2.first;
+ });
return (it != _ranges.end() && it->first <= value && it->second >= value);
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSFilter.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSFilter.hpp
index c3d6c87ad7c..61adb5af36e 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSFilter.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSFilter.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** PSFilter.h **
+** PSFilter.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,16 +18,16 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_PSFILTER_H
-#define DVISVGM_PSFILTER_H
+#ifndef PSFILTER_HPP
+#define PSFILTER_HPP
class PSInterpreter;
class PSFilter
{
public:
- PSFilter (PSInterpreter &psi) : _psi(psi) {}
- virtual ~PSFilter () {}
+ explicit PSFilter (PSInterpreter &psi) : _psi(psi) {}
+ virtual ~PSFilter () =default;
virtual void execute (const char *code, size_t len) =0;
virtual bool active () const =0;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp
index 77da4520bec..407f0eb32e7 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp
@@ -2,7 +2,7 @@
** PSInterpreter.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -22,12 +22,12 @@
#include <cstring>
#include <fstream>
#include <sstream>
-#include "FileFinder.h"
-#include "InputReader.h"
-#include "Message.h"
-#include "PSFilter.h"
-#include "PSInterpreter.h"
-#include "SignalHandler.h"
+#include "FileFinder.hpp"
+#include "InputReader.hpp"
+#include "Message.hpp"
+#include "PSFilter.hpp"
+#include "PSInterpreter.hpp"
+#include "SignalHandler.hpp"
using namespace std;
@@ -314,7 +314,7 @@ void PSInterpreter::callActions (InputReader &in) {
_rawData.clear();
in.skipSpace();
while (!in.eof()) {
- _rawData.push_back(in.getString());
+ _rawData.emplace_back(in.getString());
in.skipSpace();
}
}
@@ -325,14 +325,14 @@ void PSInterpreter::callActions (InputReader &in) {
if (pcount < 0) { // variable number of parameters?
in.skipSpace();
while (!in.eof()) { // read all available parameters
- params.push_back(in.getString());
+ params.emplace_back(in.getString());
in.skipSpace();
}
}
else { // fix number of parameters
for (int i=0; i < pcount; i++) {
in.skipSpace();
- params.push_back(in.getString());
+ params.emplace_back(in.getString());
}
}
vector<double> v(params.size());
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp
index b257068a416..d3ae0733b54 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** PSInterpreter.h **
+** PSInterpreter.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,16 +18,16 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_PSINTERPRETER_H
-#define DVISVGM_PSINTERPRETER_H
+#ifndef PSINTERPRETER_HPP
+#define PSINTERPRETER_HPP
#include <cstring>
#include <istream>
#include <string>
#include <vector>
-#include "Ghostscript.h"
-#include "InputReader.h"
-#include "MessageException.h"
+#include "Ghostscript.hpp"
+#include "InputReader.hpp"
+#include "MessageException.hpp"
struct PSException : public MessageException
@@ -40,7 +40,7 @@ struct PSException : public MessageException
* Each method corresponds to a PostScript operator of the same name. */
struct PSActions
{
- virtual ~PSActions () {}
+ virtual ~PSActions () =default;
virtual void applyscalevals (std::vector<double> &p) =0;
virtual void clip (std::vector<double> &p) =0;
virtual void clippath (std::vector<double> &p) =0;
@@ -89,7 +89,8 @@ class PSInterpreter
enum Mode {PS_NONE, PS_RUNNING, PS_QUIT};
public:
- PSInterpreter (PSActions *actions=0);
+ explicit PSInterpreter (PSActions *actions=0);
+ PSInterpreter (const PSInterpreter &psi) =delete;
bool execute (const char *str, size_t len, bool flush=true);
bool execute (const char *str, bool flush=true) {return execute(str, std::strlen(str), flush);}
bool execute (const std::string &str, bool flush=true) {return execute(str.c_str(), flush);}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPattern.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPattern.cpp
index 47e151dd90a..cbcd7f1e10a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPattern.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPattern.cpp
@@ -2,7 +2,7 @@
** PSPattern.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,11 +21,11 @@
#include <config.h>
#include <sstream>
#include <vector>
-#include "BoundingBox.h"
-#include "PSPattern.h"
-#include "SpecialActions.h"
-#include "SVGTree.h"
-#include "XMLNode.h"
+#include "BoundingBox.hpp"
+#include "PSPattern.hpp"
+#include "SpecialActions.hpp"
+#include "SVGTree.hpp"
+#include "XMLNode.hpp"
using namespace std;
@@ -155,9 +155,9 @@ void PSUncoloredTilingPattern::apply (SpecialActions &actions) {
const char *attribs[] = {"fill", "stroke"};
for (int i=0; i < 2; i++) {
getGroupNode()->getDescendants(0, attribs[i], colored_elems);
- for (vector<XMLElementNode*>::iterator it=colored_elems.begin(); it != colored_elems.end(); ++it)
- if (string((*it)->getAttributeValue(attribs[i])) != "none")
- (*it)->addAttribute(attribs[i], _currentColor.svgColorString());
+ for (XMLElementNode *elem : colored_elems)
+ if (string(elem->getAttributeValue(attribs[i])) != "none")
+ elem->addAttribute(attribs[i], _currentColor.svgColorString());
colored_elems.clear();
}
PSPattern::apply(actions);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPattern.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPattern.hpp
index 594e819049c..122ae590f82 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPattern.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPattern.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** PSPattern.h **
+** PSPattern.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,14 +18,14 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_PSPATTERN_H
-#define DVISVGM_PSPATTERN_H
+#ifndef PSPATTERN_HPP
+#define PSPATTERN_HPP
#include <set>
#include <string>
-#include "BoundingBox.h"
-#include "Color.h"
-#include "Matrix.h"
+#include "BoundingBox.hpp"
+#include "Color.hpp"
+#include "Matrix.hpp"
class SpecialActions;
@@ -35,7 +35,7 @@ class XMLElementNode;
class PSPattern
{
public:
- virtual ~PSPattern () {}
+ virtual ~PSPattern () =default;
virtual int psID () const {return _id;}
virtual std::string svgID () const;
virtual void apply (SpecialActions &actions);
@@ -54,11 +54,11 @@ class PSTilingPattern : public PSPattern
public:
~PSTilingPattern ();
virtual XMLElementNode* getContainerNode () {return _groupNode;}
- void apply (SpecialActions &actions);
+ void apply (SpecialActions &actions) override;
protected:
PSTilingPattern (int id, BoundingBox &bbox, Matrix &matrix, double xstep, double ystep);
- XMLElementNode* createPatternNode () const;
+ XMLElementNode* createPatternNode () const override;
virtual XMLElementNode* createClipNode () const;
virtual XMLElementNode* createGroupNode () const;
virtual XMLElementNode* getGroupNode () const {return _groupNode;}
@@ -84,12 +84,12 @@ class PSUncoloredTilingPattern : public PSTilingPattern
public:
PSUncoloredTilingPattern (int id, BoundingBox &bbox, Matrix &matrix, double xstep, double ystep);
~PSUncoloredTilingPattern ();
- std::string svgID () const;
+ std::string svgID () const override;
void setColor (Color color) {_currentColor = color;}
- void apply (SpecialActions &actions);
+ void apply (SpecialActions &actions) override;
protected:
- XMLElementNode* createClipNode () const;
+ XMLElementNode* createClipNode () const override;
private:
std::set<Color> _colors; ///< colors this pattern has already been drawn with
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.cpp
index 78cdbb9a1ed..7ad11c04d6a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.cpp
@@ -2,7 +2,7 @@
** PSPreviewFilter.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,11 +20,11 @@
#include <config.h>
#include <vector>
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "PSInterpreter.h"
-#include "PSPreviewFilter.h"
-#include "SpecialActions.h"
+#include "InputBuffer.hpp"
+#include "InputReader.hpp"
+#include "PSInterpreter.hpp"
+#include "PSPreviewFilter.hpp"
+#include "SpecialActions.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.hpp
index 89470250821..0479120391c 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSPreviewFilter.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** PSPreviewFilter.h **
+** PSPreviewFilter.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,13 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_PSPREVIEWFILTER_H
-#define DVISVGM_PSPREVIEWFILTER_H
+#ifndef PSPREVIEWFILTER_HPP
+#define PSPREVIEWFILTER_HPP
#include <string>
#include <vector>
-#include "BoundingBox.h"
-#include "PSFilter.h"
+#include "BoundingBox.hpp"
+#include "PSFilter.hpp"
class SpecialActions;
@@ -33,8 +33,8 @@ class PSPreviewFilter : public PSFilter
public:
PSPreviewFilter (PSInterpreter &psi);
void activate ();
- void execute (const char *code, size_t len);
- bool active () const {return _active;}
+ void execute (const char *code, size_t len) override;
+ bool active () const override {return _active;}
std::string version () const {return _version;}
bool tightpage () const {return _tightpage;}
void setDviScaleFactor (double dvi2bp) {_dvi2bp = dvi2bp;}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.cpp
index 557a3cb441e..c2f3b4f3ad5 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.cpp
@@ -2,7 +2,7 @@
** PageRanges.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,11 +20,9 @@
#include <config.h>
#include <sstream>
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "PageRanges.h"
-
-#include "macros.h"
+#include "InputBuffer.hpp"
+#include "InputReader.hpp"
+#include "PageRanges.hpp"
using namespace std;
@@ -34,7 +32,7 @@ using namespace std;
* @param[in] str string to parse
* @param[in] max_page greatest allowed value
* @return true on success; false denotes a syntax error */
-bool PageRanges::parse (string str, int max_page) {
+bool PageRanges::parse (const string &str, int max_page) {
StringInputBuffer ib(str);
BufferInputReader ir(ib);
while (ir) {
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.hpp
index 130d354284a..61f04f7225a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** PageRanges.h **
+** PageRanges.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,18 +18,18 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_PAGERANGES_H
-#define DVISVGM_PAGERANGES_H
+#ifndef PAGERANGES_HPP
+#define PAGERANGES_HPP
#include <list>
#include <string>
#include <utility>
-#include "NumericRanges.h"
+#include "NumericRanges.hpp"
class PageRanges : public NumericRanges<int>
{
public:
- bool parse (std::string str, int max_page=0);
+ bool parse (const std::string &str, int max_page=0);
size_t numberOfPages () const;
};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PageSize.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PageSize.cpp
index a05209c8c17..a1a5dd41ce8 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PageSize.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PageSize.cpp
@@ -2,7 +2,7 @@
** PageSize.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -23,16 +23,11 @@
#include <cctype>
#include <cmath>
#include <sstream>
-#include "PageSize.h"
+#include "PageSize.hpp"
+#include "utility.hpp"
using namespace std;
-// make sure tolower is a function (and not a macro)
-// so that 'transform' can be applied
-static int my_tolower (int c) {
- return tolower(c);
-}
-
/** Computes width and height of ISO/DIN An in millimeters.
* @param[in] n the A level (e.g. n=4 => DIN A4)
@@ -86,7 +81,7 @@ static void computeDSize (int n, double &width, double &height) {
/** Constructs a PageSize object of given size.
* @param[in] name specifies the page size, e.g. "A4" or "letter" */
-PageSize::PageSize (string name) : _width(0), _height(0) {
+PageSize::PageSize (const string &name) : _width(0), _height(0) {
resize(name);
}
@@ -100,7 +95,7 @@ void PageSize::resize (string name) {
if (name.length() < 2)
throw PageSizeException("unknown page format: "+name);
- transform(name.begin(), name.end(), name.begin(), my_tolower);
+ util::tolower(name);
// extract optional suffix
size_t pos = name.rfind("-");
bool landscape = false;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PageSize.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/PageSize.hpp
index 9ad113e4701..9c0dced9491 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PageSize.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PageSize.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** PageSize.h **
+** PageSize.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,10 +18,10 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_PAGESIZE_H
-#define DVISVGM_PAGESIZE_H
+#ifndef PAGESIZE_HPP
+#define PAGESIZE_HPP
-#include "MessageException.h"
+#include "MessageException.hpp"
struct PageSizeException : public MessageException
{
@@ -32,7 +32,7 @@ class PageSize
{
public:
PageSize (double w=0, double h=0) : _width(w), _height(h) {}
- PageSize (std::string name);
+ PageSize (const std::string &name);
void resize (std:: string name);
void resize (double w, double h);
double widthInBP () const {return _width;}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Pair.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Pair.hpp
index 7e235f28f31..c9058a3ff69 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Pair.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Pair.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Pair.h **
+** Pair.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,12 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_PAIR_H
-#define DVISVGM_PAIR_H
+#ifndef PAIR_HPP
+#define PAIR_HPP
#include <cmath>
#include <ostream>
-#include "macros.h"
-#include "types.h"
+#include "macros.hpp"
template <typename T>
class Pair
@@ -50,12 +49,11 @@ class Pair
};
-struct Pair32 : public Pair<Int32>
+struct Pair32 : public Pair<int32_t>
{
- Pair32 (Int32 x=0, Int32 y=0) : Pair<Int32>(x, y) {}
- explicit Pair32 (double x, double y) : Pair<Int32>(Int32(x+0.5), Int32(y+0.5)) {}
- Pair32 (const Pair<Int32> &p) : Pair<Int32>(p) {}
-// operator Pair<Int32> () {return *this;}
+ Pair32 (int32_t x=0, int32_t y=0) : Pair<int32_t>(x, y) {}
+ explicit Pair32 (double x, double y) : Pair<int32_t>(int32_t(x+0.5), int32_t(y+0.5)) {}
+ Pair32 (const Pair<int32_t> &p) : Pair<int32_t>(p) {}
};
typedef Pair<double> DPair;
@@ -75,5 +73,5 @@ IMPLEMENT_ARITHMETIC_OPERATOR2(Pair<T>, T, /)
template <typename T>
IMPLEMENT_OUTPUT_OPERATOR(Pair<T>)
-IMPLEMENT_ARITHMETIC_OPERATOR2(Pair32, Int32, *)
+IMPLEMENT_ARITHMETIC_OPERATOR2(Pair32, int32_t, *)
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.cpp
index 23462182e6a..5777d1bb113 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.cpp
@@ -1,7 +1,27 @@
-#include "Length.h"
-#include "Message.h"
-#include "PapersizeSpecialHandler.h"
-#include "SpecialActions.h"
+/*************************************************************************
+** PapersizeSpecialHandler.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include "Length.hpp"
+#include "Message.hpp"
+#include "PapersizeSpecialHandler.hpp"
+#include "SpecialActions.hpp"
using namespace std;
@@ -24,7 +44,7 @@ void PapersizeSpecialHandler::preprocess (const char*, std::istream &is, Special
if (!_pageSizes.empty() && _pageSizes.back().first == pageno)
_pageSizes.back().second = whpair;
else
- _pageSizes.push_back(PageSize(pageno, whpair));
+ _pageSizes.emplace_back(PageSize(pageno, whpair));
}
}
@@ -34,19 +54,17 @@ bool PapersizeSpecialHandler::process (const char *, std::istream &, SpecialActi
}
-bool PapersizeSpecialHandler::isLess (const PageSize &ps1, const PageSize &ps2) {
- // order PageSize objects by page number
- return ps1.first < ps2.first;
-}
-
-
void PapersizeSpecialHandler::dviEndPage (unsigned pageno, SpecialActions &actions) {
if (actions.getBBoxFormatString() != "papersize")
return;
// find number of page with size change not lower than the current one
typedef vector<PageSize>::iterator Iterator;
- Iterator lb_it = lower_bound(_pageSizes.begin(), _pageSizes.end(), PageSize(pageno, DoublePair()), isLess);
+ Iterator lb_it = lower_bound(_pageSizes.begin(), _pageSizes.end(), PageSize(pageno, DoublePair()),
+ [](const PageSize &ps1, const PageSize &ps2) {
+ // order PageSize objects by page number
+ return ps1.first < ps2.first;
+ });
Iterator it = _pageSizes.end();
if (lb_it != _pageSizes.end() && lb_it->first == pageno)
it = lb_it;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.h
deleted file mode 100644
index e22f1612237..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef PAPERSIZESPECIALHANDLER_H
-#define PAPERSIZESPECIALHANDLER_H
-
-#include <utility>
-#include <vector>
-#include "SpecialHandler.h"
-
-class PapersizeSpecialHandler : public SpecialHandler, public DVIEndPageListener {
- typedef std::pair<double,double> DoublePair;
- typedef std::pair<unsigned,DoublePair> PageSize;
-
- public:
- void preprocess (const char *prefix, std::istream &is, SpecialActions &actions);
- bool process (const char *prefix, std::istream &is, SpecialActions &actions);
- const char* info () const {return "special to set the page size";}
- const char* name () const {return "papersize";}
- const char** prefixes () const;
-
- protected:
- void dviEndPage (unsigned pageno, SpecialActions &actions);
- static bool isLess (const PageSize &ps1, const PageSize &ps2);
-
- private:
- std::vector<PageSize> _pageSizes;
-};
-
-#endif
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.hpp
new file mode 100644
index 00000000000..d43a404e841
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.hpp
@@ -0,0 +1,48 @@
+/*************************************************************************
+** PapersizeSpecialHandler.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef PAPERSIZESPECIALHANDLER_HPP
+#define PAPERSIZESPECIALHANDLER_HPP
+
+#include <utility>
+#include <vector>
+#include "SpecialHandler.hpp"
+
+class PapersizeSpecialHandler : public SpecialHandler, public DVIEndPageListener {
+ typedef std::pair<double,double> DoublePair;
+ typedef std::pair<unsigned,DoublePair> PageSize;
+
+ public:
+ void preprocess (const char *prefix, std::istream &is, SpecialActions &actions) override;
+ bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+ const char* info () const override {return "special to set the page size";}
+ const char* name () const override {return "papersize";}
+ const char** prefixes () const override;
+
+ protected:
+ void dviEndPage (unsigned pageno, SpecialActions &actions) override;
+ static bool isLess (const PageSize &ps1, const PageSize &ps2);
+
+ private:
+ std::vector<PageSize> _pageSizes;
+};
+
+#endif
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.cpp
index bd7e3dd5ac3..7fa21855b23 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.cpp
@@ -2,7 +2,7 @@
** PathClipper.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,9 +19,8 @@
*************************************************************************/
#include <config.h>
-#include "Bezier.h"
-#include "PathClipper.h"
-#include "types.h"
+#include "Bezier.hpp"
+#include "PathClipper.hpp"
using namespace std;
using namespace ClipperLib;
@@ -57,36 +56,36 @@ class FlattenActions : public CurvedPath::Actions {
FlattenActions (vector<Bezier> &curves, Polygons &polygons, int &numLines)
: _polygons(polygons), _curves(curves), _numLines(numLines) {}
- void moveto (const CurvedPath::Point &p) {
+ void moveto (const CurvedPath::Point &p) override {
if (p == _currentPoint && !_currentPoly.empty())
return;
closepath();
- _currentPoly.push_back(IntPoint(to_cInt(p.x()), to_cInt(p.y()), 0));
+ _currentPoly.emplace_back(IntPoint(to_cInt(p.x()), to_cInt(p.y()), 0));
_currentPoint = _startPoint = p;
}
- void lineto (const CurvedPath::Point &p) {
+ void lineto (const CurvedPath::Point &p) override {
if (p == _currentPoint && !_currentPoly.empty())
return;
if (_currentPoly.empty()) // this shouldn't happen but in case it does...
- _currentPoly.push_back(IntPoint(0, 0, 0)); // ...add a start point first
+ _currentPoly.emplace_back(IntPoint(0, 0, 0)); // ...add a start point first
_numLines--;
_currentPoly.back().Z.label2 = _numLines;
- _currentPoly.push_back(IntPoint(to_cInt(p.x()), to_cInt(p.y()), ZType(_numLines, 0)));
+ _currentPoly.emplace_back(IntPoint(to_cInt(p.x()), to_cInt(p.y()), ZType(_numLines, 0)));
_currentPoint = p;
}
- void conicto (const CurvedPath::Point &p1, const CurvedPath::Point &p2) {
+ void conicto (const CurvedPath::Point &p1, const CurvedPath::Point &p2) override {
Bezier bezier(_currentPoint, p1, p2);
addCurvePoints(bezier);
}
- void cubicto (const CurvedPath::Point &p1, const CurvedPath::Point &p2, const CurvedPath::Point &p3) {
+ void cubicto (const CurvedPath::Point &p1, const CurvedPath::Point &p2, const CurvedPath::Point &p3) override {
Bezier bezier(_currentPoint, p1, p2, p3);
addCurvePoints(bezier);
}
- void closepath () {
+ void closepath () override {
if (_currentPoly.empty())
return;
_numLines--;
@@ -96,14 +95,14 @@ class FlattenActions : public CurvedPath::Actions {
_currentPoly.clear();
}
- void finished () {
+ void finished () override {
closepath();
}
protected:
void addCurvePoints (const Bezier &bezier) {
if (_currentPoly.empty()) // this shouldn't happen but in case it does, ...
- _currentPoly.push_back(IntPoint(0, 0, 0)); // ...add a start point first
+ _currentPoly.emplace_back(IntPoint(0, 0, 0)); // ...add a start point first
vector<DPair> points; // points of flattened curve
vector<double> t; // corresponding 'time' parameters
bezier.approximate(0.01, points, &t);
@@ -116,7 +115,7 @@ class FlattenActions : public CurvedPath::Actions {
continue;
_currentPoly.back().Z.label2 = ZLabel(_curves.size(), t[i-1]);
ZLabel label(_curves.size(), t[i]);
- _currentPoly.push_back(IntPoint(to_cInt(p.x()), to_cInt(p.y()), ZType(label, label)));
+ _currentPoly.emplace_back(IntPoint(to_cInt(p.x()), to_cInt(p.y()), ZType(label, label)));
_currentPoint = p;
}
}
@@ -177,10 +176,10 @@ void PathClipper::flatten (const CurvedPath &curvedPath, Polygons &polygons) {
* edge belongs to.
* @param[in] p1 first of two adjacent vertices
* @param[in] p2 second of two adjacent vertices
- * @param[out] t1 time paramater of p1
- * @param[out] t2 time paramater of p2
+ * @param[out] t1 time parameter of p1
+ * @param[out] t2 time parameter of p2
* @return id of edge between p1 and p2, or 0 if it's not possible to identify the segment */
-static Int32 segment_id (const IntPoint &p1, const IntPoint &p2, double &t1, double &t2) {
+static int32_t segment_id (const IntPoint &p1, const IntPoint &p2, double &t1, double &t2) {
const ZType &z1=p1.Z, &z2=p2.Z;
if (z1 == z2 && z1.minLabel().id < 0) return z1.minLabel().id;
if (z1.label1 == z2.label2) {t1=z1.label1.t; t2=z2.label2.t; return z1.label1.id;}
@@ -193,13 +192,13 @@ static Int32 segment_id (const IntPoint &p1, const IntPoint &p2, double &t1, dou
}
-inline Int32 edge_id (const IntPoint &p1, const IntPoint &p2) {
- double t;
+inline int32_t edge_id (const IntPoint &p1, const IntPoint &p2) {
+ double t=0;
return segment_id(p1, p2, t, t);
}
-/** This function expects 3 colinear points p1, p2, and q where q lies between p1 and p2,
+/** This function expects 3 colinear points p1, p2, and q, where q lies between p1 and p2,
* i.e. q divides the line \f$ \overline{p_1 p_2} \f$ somewhere. The function returns
* the corresponding division ratio. */
static double division_ratio (const IntPoint &p1, const IntPoint &p2, const IntPoint &q) {
@@ -217,7 +216,7 @@ static double division_ratio (const IntPoint &p1, const IntPoint &p2, const IntP
inline ZLabel division_label (const IntPoint &p1, const IntPoint &p2, const IntPoint &q) {
double t1, t2;
double s=0;
- Int32 id = segment_id(p1, p2, t1, t2);
+ int32_t id = segment_id(p1, p2, t1, t2);
if (id > 0)
s = t1+(t2-t1)*division_ratio(p1, p2, q);
return ZLabel(id, s);
@@ -251,9 +250,9 @@ static size_t find_segment_endpoint (const Polygon &polygon, size_t start, ZLabe
const size_t num_points = polygon.size();
int i = start%num_points;
- double t1, t2; // time parameters of start and endpoint of current edge
- Int32 id1 = segment_id(polygon[i], polygon[(i+1)%num_points], t1, t2);
- Int32 id2 = id1;
+ double t1=0, t2=0; // time parameters of start and endpoint of current edge
+ int32_t id1 = segment_id(polygon[i], polygon[(i+1)%num_points], t1, t2);
+ int32_t id2 = id1;
double t = t2; // time parameter of resulting endpoint
for (size_t j=1; id1 == id2 && j < num_points; j++) {
t = t2;
@@ -275,8 +274,8 @@ static size_t find_segment_endpoint (const Polygon &polygon, size_t start, ZLabe
* @param[in] polygons set of polygons to reconstruct
* @param[out] path the reconstructed curved path */
void PathClipper::reconstruct (const Polygons &polygons, CurvedPath &path) {
- for (size_t i=0; i < polygons.size(); i++)
- reconstruct(polygons[i], path);
+ for (const Polygon &polygon : polygons)
+ reconstruct(polygon, path);
}
@@ -315,11 +314,11 @@ void PathClipper::reconstruct (const Polygon &polygon, CurvedPath &path) {
inline PolyFillType polyFillType (CurvedPath::WindingRule wr) {
- return (wr == CurvedPath::WR_NON_ZERO) ? pftNonZero : pftEvenOdd;
+ return (wr == CurvedPath::WindingRule::NON_ZERO) ? pftNonZero : pftEvenOdd;
}
-/** Computes the intersection of to curved path.
+/** Computes the intersection of to curved paths.
* @param[in] p1 first curved path
* @param[in] p2 second curved path
* @param[out] result intersection of p1 and p2 */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.hpp
index d04373c9415..b265c9de0cf 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PathClipper.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** PathClipper.h **
+** PathClipper.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,15 +18,15 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_PATHCLIPPER_H
-#define DVISVGM_PATHCLIPPER_H
+#ifndef PATHCLIPPER_HPP
+#define PATHCLIPPER_HPP
#include <clipper.hpp>
#include <string>
#include <vector>
-#include "Bezier.h"
-#include "GraphicsPath.h"
-#include "MessageException.h"
+#include "Bezier.hpp"
+#include "GraphicsPath.hpp"
+#include "MessageException.hpp"
using ClipperLib::IntPoint;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.cpp
index d55e95a9247..f5e6026bc99 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.cpp
@@ -2,7 +2,7 @@
** PdfSpecialHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,11 +20,11 @@
#include <config.h>
#include <cstring>
-#include "InputReader.h"
-#include "MapLine.h"
-#include "PdfSpecialHandler.h"
-#include "FontMap.h"
-#include "Message.h"
+#include "InputReader.hpp"
+#include "MapLine.hpp"
+#include "PdfSpecialHandler.hpp"
+#include "FontMap.hpp"
+#include "Message.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.hpp
index 0608f347a89..cca0d07fc83 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** PdfSpecialHandler.h **
+** PdfSpecialHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,19 +18,19 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_PDFSPECIALHANDLER_H
-#define DVISVGM_PDFSPECIALHANDLER_H
+#ifndef PDFSPECIALHANDLER_HPP
+#define PDFSPECIALHANDLER_HPP
-#include "SpecialHandler.h"
+#include "SpecialHandler.hpp"
class PdfSpecialHandler : public SpecialHandler
{
public:
PdfSpecialHandler ();
- const char* info () const {return "pdfTeX font map specials";}
- const char* name () const {return "pdf";}
- const char** prefixes () const;
- bool process (const char *prefix, std::istream &is, SpecialActions &actions);
+ const char* info () const override {return "pdfTeX font map specials";}
+ const char* name () const override {return "pdf";}
+ const char** prefixes () const override;
+ bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
private:
bool _maplineProcessed; ///< true if a mapline or mapfile special has already been processed
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.cpp
index f3a6e6aeb17..0f831439c60 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.cpp
@@ -2,7 +2,7 @@
** PreScanDVIReader.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include "DVIActions.h"
-#include "PreScanDVIReader.h"
+#include "DVIActions.hpp"
+#include "PreScanDVIReader.hpp"
using namespace std;
@@ -37,7 +37,7 @@ void PreScanDVIReader::cmdBop (int) {
void PreScanDVIReader::cmdXXX (int len) {
- UInt32 numBytes = readUnsigned(len);
+ uint32_t numBytes = readUnsigned(len);
string s = readString(numBytes);
if (_actions)
_actions->special(s, 0, true); // pre-process special
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.hpp
index c54cbe10fe9..b543490c8a4 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PreScanDVIReader.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** PreScanDVIReader.h **
+** PreScanDVIReader.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,10 +18,10 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef PRESCANDVIREADER_H
-#define PRESCANDVIREADER_H
+#ifndef PRESCANDVIREADER_HPP
+#define PRESCANDVIREADER_HPP
-#include "BasicDVIReader.h"
+#include "BasicDVIReader.hpp"
struct DVIActions;
@@ -29,11 +29,11 @@ class PreScanDVIReader : public BasicDVIReader
{
public:
PreScanDVIReader (std::istream &is, DVIActions *actions);
- unsigned currentPageNumber () const {return _currentPageNumber;}
+ unsigned currentPageNumber () const override {return _currentPageNumber;}
protected:
- void cmdBop (int);
- void cmdXXX (int len);
+ void cmdBop (int) override;
+ void cmdXXX (int len) override;
private:
DVIActions *_actions;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp
index 753ebfec253..16c2d41b3c4 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp
@@ -2,7 +2,7 @@
** Process.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -30,10 +30,9 @@
#endif
#include <cstdlib>
-#include "FileSystem.h"
-#include "Process.h"
-#include "SignalHandler.h"
-#include "macros.h"
+#include "FileSystem.hpp"
+#include "Process.hpp"
+#include "SignalHandler.hpp"
using namespace std;
@@ -201,3 +200,18 @@ bool Process::run (string *out) {
#endif
}
+
+/** Runs the process in the given working directory and waits until it's finished.
+ * @param[in] dir working directory
+ * @param[out] out takes the output written to stdout by the executed process
+ * @return true if process terminated properly
+ * @throw SignalException if CTRL-C was pressed during execution */
+bool Process::run (const string &dir, string *out) {
+ bool ret = false;
+ string cwd = FileSystem::getcwd();
+ if (FileSystem::chdir(dir)) {
+ ret = run(out);
+ ret &= FileSystem::chdir(cwd);
+ }
+ return ret;
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.hpp
index 4cb4c757c00..b45bdfe1fe4 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Process.h **
+** Process.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_PROCESS_H
-#define DVISVGM_PROCESS_H
+#ifndef PROCESS_HPP
+#define PROCESS_HPP
#include <string>
@@ -28,9 +28,10 @@ class Process
public:
Process (const std::string &cmd, const std::string &paramstr);
bool run (std::string *out=0);
+ bool run (const std::string &dir, std::string *out=0);
protected:
- Process (const Process& orig) {}
+ Process (const Process &orig) =default;
private:
std::string _cmd;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp
index d4bee4a600b..9c60546bc0f 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp
@@ -2,7 +2,7 @@
** PsSpecialHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -23,17 +23,17 @@
#include <fstream>
#include <memory>
#include <sstream>
-#include "EPSFile.h"
-#include "FileFinder.h"
-#include "Message.h"
-#include "PathClipper.h"
-#include "PSPattern.h"
-#include "PSPreviewFilter.h"
-#include "PsSpecialHandler.h"
-#include "SpecialActions.h"
-#include "SVGTree.h"
-#include "TensorProductPatch.h"
-#include "TriangularPatch.h"
+#include "EPSFile.hpp"
+#include "FileFinder.hpp"
+#include "Message.hpp"
+#include "PathClipper.hpp"
+#include "PSPattern.hpp"
+#include "PSPreviewFilter.hpp"
+#include "PsSpecialHandler.hpp"
+#include "SpecialActions.hpp"
+#include "SVGTree.hpp"
+#include "TensorProductPatch.hpp"
+#include "TriangularPatch.hpp"
using namespace std;
@@ -60,8 +60,8 @@ PsSpecialHandler::PsSpecialHandler () : _psi(this), _actions(0), _previewFilter(
PsSpecialHandler::~PsSpecialHandler () {
_psi.setActions(0); // ensure no further PS actions are performed
- for (map<int, PSPattern*>::iterator it=_patterns.begin(); it != _patterns.end(); ++it)
- delete it->second;
+ for (auto &entry : _patterns)
+ delete entry.second;
}
@@ -76,7 +76,7 @@ void PsSpecialHandler::initialize () {
for (const char **p=headers; *p; ++p)
processHeaderFile(*p);
// disable bop/eop operators to prevent side-effects by
- // unexpected bobs/eops present in PS specials
+ // unexpected bops/eops present in PS specials
_psi.execute("\nTeXDict begin /bop{pop pop}def /eop{}def end ");
_psSection = PS_HEADERS; // allow to process header specials now
}
@@ -101,7 +101,7 @@ void PsSpecialHandler::initgraphics () {
void PsSpecialHandler::processHeaderFile (const char *name) {
- if (const char *path = FileFinder::lookup(name, false)) {
+ if (const char *path = FileFinder::instance().lookup(name, false)) {
ifstream ifs(path);
_psi.execute(string("%%BeginProcSet: ")+name+" 0 0\n", false);
_psi.execute(ifs, false);
@@ -772,7 +772,7 @@ void PsSpecialHandler::clip (Path &path, bool evenodd) {
if (path.empty() || !_actions)
return;
- Path::WindingRule windingRule = evenodd ? Path::WR_EVEN_ODD : Path::WR_NON_ZERO;
+ Path::WindingRule windingRule = evenodd ? Path::WindingRule::EVEN_ODD : Path::WindingRule::NON_ZERO;
path.setWindingRule(windingRule);
if (!_actions->getMatrix().isIdentity())
@@ -824,11 +824,11 @@ void PsSpecialHandler::shfill (vector<double> &params) {
// collect common data relevant for all shading types
int shadingTypeID = static_cast<int>(params[0]);
- ColorSpace colorSpace = Color::RGB_SPACE;
+ ColorSpace colorSpace = Color::ColorSpace::RGB;
switch (static_cast<int>(params[1])) {
- case 1: colorSpace = Color::GRAY_SPACE; break;
- case 3: colorSpace = Color::RGB_SPACE; break;
- case 4: colorSpace = Color::CMYK_SPACE; break;
+ case 1: colorSpace = Color::ColorSpace::GRAY; break;
+ case 3: colorSpace = Color::ColorSpace::RGB; break;
+ case 4: colorSpace = Color::ColorSpace::CMYK; break;
}
VectorIterator<double> it = params;
it += 2; // skip shading type and color space
@@ -928,7 +928,7 @@ class ShadingCallback : public ShadingPatch::Callback {
_group->addAttribute("clip-path", XMLString("url(#clip")+XMLString(clippathID)+")");
}
- void patchSegment (GraphicsPath<double> &path, const Color &color) {
+ void patchSegment (GraphicsPath<double> &path, const Color &color) override {
if (!_actions.getMatrix().isIdentity())
path.transform(_actions.getMatrix());
@@ -950,14 +950,14 @@ class ShadingCallback : public ShadingPatch::Callback {
/** Handle all patch meshes whose patches and their connections can be processed sequentially.
* This comprises free-form triangular, Coons, and tensor-product patch meshes. */
void PsSpecialHandler::processSequentialPatchMesh (int shadingTypeID, ColorSpace colorSpace, VectorIterator<double> &it) {
- auto_ptr<ShadingPatch> previousPatch;
+ unique_ptr<ShadingPatch> previousPatch;
while (it.valid()) {
int edgeflag = static_cast<int>(*it++);
vector<DPair> points;
vector<Color> colors;
- auto_ptr<ShadingPatch> patch;
+ unique_ptr<ShadingPatch> patch;
- patch = auto_ptr<ShadingPatch>(ShadingPatch::create(shadingTypeID, colorSpace));
+ patch = unique_ptr<ShadingPatch>(ShadingPatch::create(shadingTypeID, colorSpace));
read_patch_data(*patch, edgeflag, it, points, colors);
patch->setPoints(points, edgeflag, previousPatch.get());
patch->setColors(colors, edgeflag, previousPatch.get());
@@ -978,7 +978,7 @@ void PsSpecialHandler::processSequentialPatchMesh (int shadingTypeID, ColorSpace
bbox.transform(_actions->getMatrix());
_actions->embed(bbox);
}
- previousPatch = patch;
+ previousPatch = std::move(patch);
}
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp
index 7c2f79009be..fe95443215b 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** PsSpecialHandler.h **
+** PsSpecialHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,18 +18,18 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_PSSPECIALHANDLER_H
-#define DVISVGM_PSSPECIALHANDLER_H
+#ifndef PSSPECIALHANDLER_HPP
+#define PSSPECIALHANDLER_HPP
#include <set>
#include <stack>
#include <string>
#include <vector>
-#include "GraphicsPath.h"
-#include "PSInterpreter.h"
-#include "SpecialHandler.h"
-#include "PSPattern.h"
-#include "PSPreviewFilter.h"
+#include "GraphicsPath.hpp"
+#include "PSInterpreter.hpp"
+#include "SpecialHandler.hpp"
+#include "PSPattern.hpp"
+#include "PSPreviewFilter.hpp"
class PSPattern;
@@ -55,7 +55,7 @@ class PsSpecialHandler : public SpecialHandler, public DVIEndPageListener, prote
void setClippathLoaded (bool loaded);
const Path* top () const;
Path* getPath (size_t id);
- int topID () const {return _stack.empty() ? 0 : _stack.top().pathID;}
+ int topID () const {return _stack.empty() ? 0 : _stack.top().pathID;}
private:
struct Entry {
@@ -73,12 +73,12 @@ class PsSpecialHandler : public SpecialHandler, public DVIEndPageListener, prote
public:
PsSpecialHandler ();
~PsSpecialHandler ();
- const char* name () const {return "ps";}
- const char* info () const {return "dvips PostScript specials";}
- const char** prefixes () const;
- void preprocess (const char *prefix, std::istream &is, SpecialActions &actions);
- bool process (const char *prefix, std::istream &is, SpecialActions &actions);
- void setDviScaleFactor (double dvi2bp) {_previewFilter.setDviScaleFactor(dvi2bp);}
+ const char* name () const override {return "ps";}
+ const char* info () const override {return "dvips PostScript specials";}
+ const char** prefixes () const override;
+ void preprocess (const char *prefix, std::istream &is, SpecialActions &actions) override;
+ bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+ void setDviScaleFactor (double dvi2bp) override {_previewFilter.setDviScaleFactor(dvi2bp);}
void enterBodySection ();
public:
@@ -94,7 +94,7 @@ class PsSpecialHandler : public SpecialHandler, public DVIEndPageListener, prote
void executeAndSync (std::istream &is, bool updatePos);
void processHeaderFile (const char *fname);
void psfile (const std::string &fname, const std::map<std::string,std::string> &attr);
- void dviEndPage (unsigned pageno, SpecialActions &actions);
+ void dviEndPage (unsigned pageno, SpecialActions &actions) override;
void clip (Path &path, bool evenodd);
void processSequentialPatchMesh (int shadingTypeID, ColorSpace cspace, VectorIterator<double> &it);
void processLatticeTriangularPatchMesh (ColorSpace colorSpace, VectorIterator<double> &it);
@@ -102,45 +102,45 @@ class PsSpecialHandler : public SpecialHandler, public DVIEndPageListener, prote
/// scale given value by current PS scale factors
double scale (double v) const {return v*(_sx*_cos*_cos + _sy*(1-_cos*_cos));}
- void applyscalevals (std::vector<double> &p) {_sx = p[0]; _sy = p[1]; _cos = p[2];}
- void clip (std::vector<double> &p) {clip(p, false);}
+ void applyscalevals (std::vector<double> &p) override {_sx = p[0]; _sy = p[1]; _cos = p[2];}
+ void clip (std::vector<double> &p) override {clip(p, false);}
void clip (std::vector<double> &p, bool evenodd);
- void clippath (std::vector<double> &p);
- void closepath (std::vector<double> &p);
- void curveto (std::vector<double> &p);
- void eoclip (std::vector<double> &p) {clip(p, true);}
- void eofill (std::vector<double> &p) {fill(p, true);}
+ void clippath (std::vector<double> &p) override;
+ void closepath (std::vector<double> &p) override;
+ void curveto (std::vector<double> &p) override;
+ void eoclip (std::vector<double> &p) override {clip(p, true);}
+ void eofill (std::vector<double> &p) override {fill(p, true);}
void fill (std::vector<double> &p, bool evenodd);
- void fill (std::vector<double> &p) {fill(p, false);}
- void grestore (std::vector<double> &p);
- void grestoreall (std::vector<double> &p);
- void gsave (std::vector<double> &p);
- void initclip (std::vector<double> &p);
- void lineto (std::vector<double> &p);
- void makepattern (std::vector<double> &p);
- void moveto (std::vector<double> &p);
- void newpath (std::vector<double> &p);
- void querypos (std::vector<double> &p) {_currentpoint = DPair(p[0], p[1]);}
- void restore (std::vector<double> &p);
- void rotate (std::vector<double> &p);
- void save (std::vector<double> &p);
- void scale (std::vector<double> &p);
- void setcmykcolor (std::vector<double> &cmyk);
- void setdash (std::vector<double> &p);
- void setgray (std::vector<double> &p);
- void sethsbcolor (std::vector<double> &hsb);
- void setlinecap (std::vector<double> &p) {_linecap = UInt8(p[0]);}
- void setlinejoin (std::vector<double> &p) {_linejoin = UInt8(p[0]);}
- void setlinewidth (std::vector<double> &p) {_linewidth = p[0] ? scale(p[0])*1.00375 : 0.5;}
- void setmatrix (std::vector<double> &p);
- void setmiterlimit (std::vector<double> &p) {_miterlimit = p[0]*1.00375;}
- void setopacityalpha (std::vector<double> &p){_opacityalpha = p[0];}
- void setpattern (std::vector<double> &p);
- void setrgbcolor (std::vector<double> &rgb);
- void shfill (std::vector<double> &p);
- void stroke (std::vector<double> &p);
- void translate (std::vector<double> &p);
- void executed ();
+ void fill (std::vector<double> &p) override {fill(p, false);}
+ void grestore (std::vector<double> &p) override;
+ void grestoreall (std::vector<double> &p) override;
+ void gsave (std::vector<double> &p) override;
+ void initclip (std::vector<double> &p) override;
+ void lineto (std::vector<double> &p) override;
+ void makepattern (std::vector<double> &p) override;
+ void moveto (std::vector<double> &p) override;
+ void newpath (std::vector<double> &p) override;
+ void querypos (std::vector<double> &p) override {_currentpoint = DPair(p[0], p[1]);}
+ void restore (std::vector<double> &p) override;
+ void rotate (std::vector<double> &p) override;
+ void save (std::vector<double> &p) override;
+ void scale (std::vector<double> &p) override;
+ void setcmykcolor (std::vector<double> &cmyk) override;
+ void setdash (std::vector<double> &p) override;
+ void setgray (std::vector<double> &p) override;
+ void sethsbcolor (std::vector<double> &hsb) override;
+ void setlinecap (std::vector<double> &p) override {_linecap = uint8_t(p[0]);}
+ void setlinejoin (std::vector<double> &p) override {_linejoin = uint8_t(p[0]);}
+ void setlinewidth (std::vector<double> &p) override {_linewidth = p[0] ? scale(p[0])*1.00375 : 0.5;}
+ void setmatrix (std::vector<double> &p) override;
+ void setmiterlimit (std::vector<double> &p) override {_miterlimit = p[0]*1.00375;}
+ void setopacityalpha (std::vector<double> &p) override {_opacityalpha = p[0];}
+ void setpattern (std::vector<double> &p) override;
+ void setrgbcolor (std::vector<double> &rgb) override;
+ void shfill (std::vector<double> &p) override;
+ void stroke (std::vector<double> &p) override;
+ void translate (std::vector<double> &p) override;
+ void executed () override;
private:
PSInterpreter _psi;
@@ -158,8 +158,8 @@ class PsSpecialHandler : public SpecialHandler, public DVIEndPageListener, prote
double _linewidth; ///< current linewidth
double _miterlimit; ///< current miter limit
double _opacityalpha; ///< opacity level (0=fully transparent, ..., 1=opaque)
- UInt8 _linecap : 2; ///< current line cap (0=butt, 1=round, 2=projecting square)
- UInt8 _linejoin : 2; ///< current line join (0=miter, 1=round, 2=bevel)
+ uint8_t _linecap : 2; ///< current line cap (0=butt, 1=round, 2=projecting square)
+ uint8_t _linejoin : 2; ///< current line join (0=miter, 1=round, 2=bevel)
double _dashoffset; ///< current dash offset
std::vector<double> _dashpattern;
ClippingStack _clipStack;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp
index 7066e62bef1..ac2097624f7 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp
@@ -2,7 +2,7 @@
** RangeMap.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,7 +18,7 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include "RangeMap.h"
+#include "RangeMap.hpp"
using namespace std;
@@ -75,24 +75,24 @@ bool RangeMap::Range::join (const Range &r) {
* @param[in] cmin smallest number in the range
* @param[in] cmax largest number in the range
* @param[in] vmin map value of cmin */
-void RangeMap::addRange (UInt32 cmin, UInt32 cmax, UInt32 vmin) {
+void RangeMap::addRange (uint32_t cmin, uint32_t cmax, uint32_t vmin) {
if (cmin > cmax)
swap(cmin, cmax);
Range range(cmin, cmax, vmin);
if (_ranges.empty())
- _ranges.push_back(range);
+ _ranges.emplace_back(std::move(range));
else {
// check for simple cases that can be handled pretty fast
Range &lrange = *_ranges.begin();
Range &rrange = *_ranges.rbegin();
if (cmin > rrange.max()) { // non-overlapping range at end of vector?
if (!rrange.join(range))
- _ranges.push_back(range);
+ _ranges.emplace_back(std::move(range));
}
else if (cmax < lrange.min()) { // non-overlapping range at begin of vector?
if (!lrange.join(range))
- _ranges.insert(_ranges.begin(), range);
+ _ranges.emplace(_ranges.begin(), std::move(range));
}
else {
// ranges overlap and/or must be inserted somewhere inside the vector
@@ -103,13 +103,13 @@ void RangeMap::addRange (UInt32 cmin, UInt32 cmax, UInt32 vmin) {
if (!it->join(range) && (it == _ranges.begin() || !(it-1)->join(range))) {
if (it->min() < cmin && it->max() > cmax) { // new range completely inside an existing range?
//split existing range
- UInt32 itmax = it->max();
+ uint32_t itmax = it->max();
it->max(cmin-1);
- it = _ranges.insert(it+1, Range(cmax+1, itmax, it->valueAt(cmax+1)));
+ it = _ranges.emplace(it+1, Range(cmax+1, itmax, it->valueAt(cmax+1)));
}
else if (at_end) // does new range overlap right side of last range in vector?
it = _ranges.end(); // => append new range at end of vector
- it = _ranges.insert(it, range);
+ it = _ranges.emplace(it, std::move(range));
}
adaptNeighbors(it); // resolve overlaps
}
@@ -125,11 +125,11 @@ void RangeMap::addRange (UInt32 cmin, UInt32 cmax, UInt32 vmin) {
void RangeMap::adaptNeighbors (Ranges::iterator it) {
if (it != _ranges.end()) {
// adapt left neighbor
- Ranges::iterator lit = it-1; // points to left neighbor
- if (it != _ranges.begin() && it->min() <= lit->max()) {
+ if (it != _ranges.begin() && it->min() <= (it-1)->max()) {
+ Ranges::iterator lit = it-1; // points to left neighbor
bool left_neighbor_valid = (it->min() > 0 && it->min()-1 >= lit->min());
- if (left_neighbor_valid) // is adapted left neighbor valid?
- lit->max(it->min()-1); // => assign new max value
+ if (left_neighbor_valid) // is adapted left neighbor valid?
+ lit->max(it->min()-1); // => assign new max value
if (!left_neighbor_valid || it->join(*lit))
it = _ranges.erase(lit);
}
@@ -154,7 +154,7 @@ void RangeMap::adaptNeighbors (Ranges::iterator it) {
/** Finds the index of the range that contains a given value c.
* @param[in] c find range that contains this value
* @return index of the range found, or -1 if range was not found */
-int RangeMap::lookup (UInt32 c) const {
+int RangeMap::lookup (uint32_t c) const {
// simple binary search
int left=0, right=_ranges.size()-1;
while (left <= right) {
@@ -170,7 +170,7 @@ int RangeMap::lookup (UInt32 c) const {
}
-UInt32 RangeMap::valueAt (UInt32 c) const {
+uint32_t RangeMap::valueAt (uint32_t c) const {
int pos = lookup(c);
return pos < 0 ? 0 : _ranges[pos].valueAt(c);
}
@@ -185,4 +185,4 @@ ostream& RangeMap::write (ostream& os) const {
for (size_t i=0; i < _ranges.size(); i++)
_ranges[i].write(os) << '\n';
return os;
-} \ No newline at end of file
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.hpp
index 03d31951492..6170a2aa5dc 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** RangeMap.h **
+** RangeMap.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,12 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_RANGEMAP_H
-#define DVISVGM_RANGEMAP_H
+#ifndef RANGEMAP_HPP
+#define RANGEMAP_HPP
#include <algorithm>
#include <ostream>
#include <vector>
-#include "types.h"
class RangeMap {
@@ -35,45 +34,45 @@ class RangeMap {
public:
Range () : _min(0), _max(0), _minval(0) {}
- Range (UInt32 min, UInt32 max, UInt32 minval) : _min(min), _max(max), _minval(minval) {
+ Range (uint32_t min, uint32_t max, uint32_t minval) : _min(min), _max(max), _minval(minval) {
if (_min > _max)
std::swap(_min, _max);
}
- UInt32 min () const {return _min;}
- UInt32 max () const {return _max;}
- UInt32 minval () const {return _minval;}
- UInt32 maxval () const {return valueAt(_max);}
- UInt32 valueAt (UInt32 c) const {return c-_min+_minval;}
+ uint32_t min () const {return _min;}
+ uint32_t max () const {return _max;}
+ uint32_t minval () const {return _minval;}
+ uint32_t maxval () const {return valueAt(_max);}
+ uint32_t valueAt (uint32_t c) const {return c-_min+_minval;}
bool operator < (const Range &r) const {return _min < r._min;}
std::ostream& write (std::ostream &os) const;
protected:
- void min (UInt32 m) {_min = m;}
- void max (UInt32 m) {_max = m;}
- void setMinAndAdaptValue (UInt32 c) {_minval = valueAt(c); _min = c;}
+ void min (uint32_t m) {_min = m;}
+ void max (uint32_t m) {_max = m;}
+ void setMinAndAdaptValue (uint32_t c) {_minval = valueAt(c); _min = c;}
bool join (const Range &r);
private:
- UInt32 _min, _max;
- UInt32 _minval;
+ uint32_t _min, _max;
+ uint32_t _minval;
};
typedef std::vector<Range> Ranges;
public:
- void addRange (UInt32 first, UInt32 last, UInt32 cid);
- bool valueExists (UInt32 c) const {return lookup(c) >= 0;}
- UInt32 valueAt (UInt32 c) const;
- size_t size () const {return _ranges.size();}
- bool empty () const {return _ranges.empty();}
- void clear () {_ranges.clear();}
+ void addRange (uint32_t first, uint32_t last, uint32_t cid);
+ bool valueExists (uint32_t c) const {return lookup(c) >= 0;}
+ uint32_t valueAt (uint32_t c) const;
+ size_t size () const {return _ranges.size();}
+ bool empty () const {return _ranges.empty();}
+ void clear () {_ranges.clear();}
std::ostream& write (std::ostream &os) const;
protected:
void adaptNeighbors (Ranges::iterator it);
- int lookup (UInt32 c) const;
- const Range& rangeAt (size_t n) const {return _ranges[n];}
+ int lookup (uint32_t c) const;
+ const Range& rangeAt (size_t n) const {return _ranges[n];}
private:
Ranges _ranges;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.cpp
index 98fd59f1523..50215d936dc 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.cpp
@@ -2,7 +2,7 @@
** SVGCharHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include "SVGCharHandler.h"
-#include "XMLNode.h"
+#include "SVGCharHandler.hpp"
+#include "XMLNode.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.hpp
index 9b222f7c10d..5bcd92a685a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** SVGCharHandler.h **
+** SVGCharHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,14 +18,13 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef SVGCHARHANDLER_H
-#define SVGCHARHANDLER_H
+#ifndef SVGCHARHANDLER_HPP
+#define SVGCHARHANDLER_HPP
#include <stack>
-#include "Color.h"
-#include "Font.h"
-#include "Matrix.h"
-#include "types.h"
+#include "Color.hpp"
+#include "Font.hpp"
+#include "Matrix.hpp"
template <typename T>
@@ -59,9 +58,9 @@ class XMLElementNode;
class SVGCharHandler {
public:
SVGCharHandler () : _color(Color::BLACK), _font(0), _fontnum(0), _matrix(1), _vertical(false), _initialContextNode(0) {}
- virtual ~SVGCharHandler() {}
+ virtual ~SVGCharHandler() =default;
virtual void setInitialContextNode (XMLElementNode *node);
- virtual void appendChar (UInt32 c, double x, double y) =0;
+ virtual void appendChar (uint32_t c, double x, double y) =0;
virtual void notifyXAdjusted () {}
virtual void notifyYAdjusted () {}
void setColor (const Color &color) {_color.set(color);}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandlerFactory.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandlerFactory.cpp
index 2f7b8b219e6..820850a161c 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandlerFactory.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandlerFactory.cpp
@@ -2,7 +2,7 @@
** SVGCharHandlerFactory.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,11 +18,11 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include "SVGCharHandlerFactory.h"
-#include "SVGCharPathHandler.h"
-#include "SVGSingleCharTextHandler.h"
-#include "SVGCharTspanTextHandler.h"
-#include "SVGTree.h"
+#include "SVGCharHandlerFactory.hpp"
+#include "SVGCharPathHandler.hpp"
+#include "SVGSingleCharTextHandler.hpp"
+#include "SVGCharTspanTextHandler.hpp"
+#include "SVGTree.hpp"
SVGCharHandler* SVGCharHandlerFactory::createHandler () {
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandlerFactory.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandlerFactory.hpp
index 9fc3199b185..4000bd76634 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandlerFactory.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandlerFactory.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** SVGCharHandlerFactory.h **
+** SVGCharHandlerFactory.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,10 +18,10 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef SVGCHARHANDLERFACTORY_H
-#define SVGCHARHANDLERFACTORY_H
+#ifndef SVGCHARHANDLERFACTORY_HPP
+#define SVGCHARHANDLERFACTORY_HPP
-#include "SVGCharHandler.h"
+#include "SVGCharHandler.hpp"
struct SVGCharHandlerFactory
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharPathHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharPathHandler.cpp
index 5793cf389bc..db6c2aba999 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharPathHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharPathHandler.cpp
@@ -2,7 +2,7 @@
** SVGCharPathHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,10 +19,10 @@
*************************************************************************/
#include <sstream>
-#include "Font.h"
-#include "FontManager.h"
-#include "SVGCharPathHandler.h"
-#include "XMLNode.h"
+#include "Font.hpp"
+#include "FontManager.hpp"
+#include "SVGCharPathHandler.hpp"
+#include "XMLNode.hpp"
using namespace std;
@@ -49,7 +49,7 @@ void SVGCharPathHandler::resetContextNode () {
* @param[in] c code of the character to be appended
* @param[in] x horizontal position of the character (in bp units)
* @param[in] y vertical position of the character (in bp units) */
-void SVGCharPathHandler::appendChar (UInt32 c, double x, double y) {
+void SVGCharPathHandler::appendChar (uint32_t c, double x, double y) {
if (_font.changed()) {
_fontColor.set(_font.get()->color());
if (_fontColor.changed() && _fontColor.get() != Color::BLACK)
@@ -107,7 +107,7 @@ void SVGCharPathHandler::appendChar (UInt32 c, double x, double y) {
}
-void SVGCharPathHandler::appendUseElement (UInt32 c, double x, double y, const Matrix &matrix) {
+void SVGCharPathHandler::appendUseElement (uint32_t c, double x, double y, const Matrix &matrix) {
ostringstream oss;
oss << "#g" << FontManager::instance().fontID(_font) << '-' << c;
XMLElementNode *useNode = new XMLElementNode("use");
@@ -120,7 +120,7 @@ void SVGCharPathHandler::appendUseElement (UInt32 c, double x, double y, const M
}
-void SVGCharPathHandler::appendPathElement (UInt32 c, double x, double y, const Matrix &matrix) {
+void SVGCharPathHandler::appendPathElement (uint32_t c, double x, double y, const Matrix &matrix) {
Glyph glyph;
const PhysicalFont *pf = dynamic_cast<const PhysicalFont*>(_font.get());
if (pf && pf->getGlyph(c, glyph)) {
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharPathHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharPathHandler.hpp
index 0acd9693a1f..2031c6c472f 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharPathHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharPathHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** SVGCharPathHandler.h **
+** SVGCharPathHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,23 +18,23 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef SVGCHARPATHHANDLER_H
-#define SVGCHARPATHHANDLER_H
+#ifndef SVGCHARPATHHANDLER_HPP
+#define SVGCHARPATHHANDLER_HPP
-#include "SVGCharHandler.h"
+#include "SVGCharHandler.hpp"
/** Creates SVG path elements for all characters. */
class SVGCharPathHandler : public SVGCharHandler {
- typedef void (SVGCharPathHandler::*AppendMethod)(UInt32 c, double x, double y, const Matrix &matrix);
+ typedef void (SVGCharPathHandler::*AppendMethod)(uint32_t c, double x, double y, const Matrix &matrix);
public:
SVGCharPathHandler (bool createUseElements, bool relativePathsCommands);
- void appendChar (UInt32 c, double x, double y);
+ void appendChar (uint32_t c, double x, double y) override;
protected:
- void appendUseElement (UInt32 c, double x, double y, const Matrix &matrix);
- void appendPathElement (UInt32 c, double x, double y, const Matrix &matrix);
- void resetContextNode ();
+ void appendUseElement (uint32_t c, double x, double y, const Matrix &matrix);
+ void appendPathElement (uint32_t c, double x, double y, const Matrix &matrix);
+ void resetContextNode () override;
private:
AppendMethod _appendChar; ///< method called to append a single character
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharTspanTextHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharTspanTextHandler.cpp
index 0153bacd05d..d9432971180 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharTspanTextHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharTspanTextHandler.cpp
@@ -2,7 +2,7 @@
** SVGCharTspanTextHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include "SVGCharTspanTextHandler.h"
-#include "XMLNode.h"
+#include "SVGCharTspanTextHandler.hpp"
+#include "XMLNode.hpp"
using namespace std;
@@ -30,7 +30,7 @@ SVGCharTspanTextHandler::SVGCharTspanTextHandler (bool selectFontByClass)
}
-void SVGCharTspanTextHandler::appendChar (UInt32 c, double x, double y) {
+void SVGCharTspanTextHandler::appendChar (uint32_t c, double x, double y) {
// changes of fonts and transformations require a new text element
if (!_textNode || _font.changed() || _matrix.changed() || _vertical.changed()) {
resetContextNode();
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharTspanTextHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharTspanTextHandler.hpp
index 19825036e02..868a90626e9 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharTspanTextHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharTspanTextHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** SVGCharTspanTextHandler.h **
+** SVGCharTspanTextHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,21 +18,21 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef SVGCHARTSPANTEXTHANDLER_H
-#define SVGCHARTSPANTEXTHANDLER_H
+#ifndef SVGCHARTSPANTEXTHANDLER_HPP
+#define SVGCHARTSPANTEXTHANDLER_HPP
-#include "SVGCharHandler.h"
+#include "SVGCharHandler.hpp"
class SVGCharTspanTextHandler : public SVGCharTextHandler {
public:
SVGCharTspanTextHandler (bool selectFontByClass);
- void notifyXAdjusted () {_xchanged = true;}
- void notifyYAdjusted() {_ychanged = true;}
- void appendChar (UInt32 c, double x, double y);
- void setInitialContextNode (XMLElementNode *node);
+ void notifyXAdjusted () override {_xchanged = true;}
+ void notifyYAdjusted() override {_ychanged = true;}
+ void appendChar (uint32_t c, double x, double y) override;
+ void setInitialContextNode (XMLElementNode *node) override;
protected:
- void resetContextNode ();
+ void resetContextNode () override;
private:
bool _xchanged, _ychanged;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp
index 2b6e2387558..84c66d82ac1 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp
@@ -2,7 +2,7 @@
** SVGOutput.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,25 +20,21 @@
#include <algorithm>
#include <cmath>
+#include <fstream>
#include <iomanip>
#include <iostream>
#include <sstream>
-#include "gzstream.h"
-#include "Calculator.h"
-#include "FileSystem.h"
-#include "Message.h"
-#include "SVGOutput.h"
-
+#include "Calculator.hpp"
+#include "FileSystem.hpp"
+#include "Message.hpp"
+#include "SVGOutput.hpp"
+#include "utility.hpp"
+#include "ZLibOutputStream.hpp"
using namespace std;
-SVGOutput::SVGOutput (const char *base, string pattern, int zipLevel)
- : _path(base ? base : ""),
- _pattern(pattern),
- _stdout(base == 0),
- _zipLevel(zipLevel),
- _page(-1),
- _os(0)
+SVGOutput::SVGOutput (const char *base, const string &pattern, int zipLevel)
+ : _path(base ? base : ""), _pattern(pattern), _stdout(base == 0), _zipLevel(zipLevel), _page(-1)
{
}
@@ -50,25 +46,20 @@ SVGOutput::SVGOutput (const char *base, string pattern, int zipLevel)
ostream& SVGOutput::getPageStream (int page, int numPages) const {
string fname = filename(page, numPages);
if (fname.empty()) {
- delete _os;
- _os = 0;
+ _osptr.reset();
return cout;
}
if (page == _page)
- return *_os;
+ return *_osptr;
_page = page;
- delete _os;
if (_zipLevel > 0)
- _os = new ogzstream(fname.c_str(), _zipLevel);
+ _osptr.reset(new ZLibOutputStream(fname, _zipLevel));
else
- _os = new ofstream(fname.c_str());
- if (!_os || !*_os) {
- delete _os;
- _os = 0;
+ _osptr.reset(new ofstream(fname.c_str()));
+ if (!_osptr)
throw MessageException("can't open file "+fname+" for writing");
- }
- return *_os;
+ return *_osptr;
}
@@ -78,20 +69,12 @@ ostream& SVGOutput::getPageStream (int page, int numPages) const {
string SVGOutput::filename (int page, int numPages) const {
if (_stdout)
return "";
- string pattern = _pattern;
- expandFormatString(pattern, page, numPages);
- // remove leading and trailing whitespace
- stringstream trim;
- trim << pattern;
- pattern.clear();
- trim >> pattern;
+ string expanded_pattern = util::trim(expandFormatString(_pattern, page, numPages));
// set and expand default pattern if necessary
- if (pattern.empty()) {
- pattern = numPages > 1 ? "%f-%p" : "%f";
- expandFormatString(pattern, page, numPages);
- }
+ if (expanded_pattern.empty())
+ expanded_pattern = expandFormatString(numPages > 1 ? "%f-%p" : "%f", page, numPages);
// append suffix if necessary
- FilePath outpath(pattern, true);
+ FilePath outpath(expanded_pattern, true);
if (outpath.suffix().empty())
outpath.suffix(_zipLevel > 0 ? "svgz" : "svg");
string abspath = outpath.absolute();
@@ -100,23 +83,28 @@ string SVGOutput::filename (int page, int numPages) const {
}
-static int ilog10 (int n) {
- int result = 0;
- while (n >= 10) {
- result++;
- n /= 10;
- }
- return result;
+#if 0
+string SVGOutput::outpath (int page, int numPages) const {
+ string path = filename(page, numPages);
+ if (path.empty())
+ return "";
+ size_t pos = path.rfind('/');
+ if (pos == string::npos)
+ return ".";
+ if (pos == 0)
+ return "/";
+ return path.substr(0, pos);
}
+#endif
-/** Replace expressions in a given string by the corresponing values.
+/** Replaces expressions in a given string by the corresponding values and returns the result.
* Supported constructs:
* %f: basename of the current file (filename without suffix)
* %[0-9]?p: current page number
* %[0-9]?P: number of pages in DVI file
* %[0-9]?(expr): arithmetic expression */
-void SVGOutput::expandFormatString (string &str, int page, int numPages) const {
+string SVGOutput::expandFormatString (string str, int page, int numPages) const {
string result;
while (!str.empty()) {
size_t pos = str.find('%');
@@ -134,7 +122,7 @@ void SVGOutput::expandFormatString (string &str, int page, int numPages) const {
pos++;
}
else {
- oss << setw(ilog10(numPages)+1) << setfill('0');
+ oss << setw(util::ilog10(numPages)+1) << setfill('0');
}
switch (str[pos]) {
case 'f':
@@ -170,5 +158,5 @@ void SVGOutput::expandFormatString (string &str, int page, int numPages) const {
str = str.substr(pos+1);
}
}
- str = result;
+ return result;
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.hpp
index 283acd16442..d5edebf7865 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** SVGOutput.h **
+** SVGOutput.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,31 +18,36 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_SVGOUTPUT_H
-#define DVISVGM_SVGOUTPUT_H
+#ifndef SVGOUTPUT_HPP
+#define SVGOUTPUT_HPP
+#include <memory>
#include <ostream>
#include <string>
-#include "FilePath.h"
+#include "FilePath.hpp"
struct SVGOutputBase {
- virtual ~SVGOutputBase () {}
+ virtual ~SVGOutputBase () =default;
virtual std::ostream& getPageStream (int page, int numPages) const =0;
virtual std::string filename (int page, int numPages) const =0;
+// virtual std::string outpath (int page, int numPages) const =0;
};
class SVGOutput : public SVGOutputBase
{
public:
- SVGOutput (const char *base=0, std::string pattern="", int zipLevel=0);
- ~SVGOutput () {delete _os;}
- std::ostream& getPageStream (int page, int numPages) const;
- std::string filename (int page, int numPages) const;
+ SVGOutput () : SVGOutput(0, "", 0) {}
+ SVGOutput (const char *base) : SVGOutput(base, "", 0) {}
+ SVGOutput (const char *base, const std::string &pattern) : SVGOutput(base, pattern, 0) {}
+ SVGOutput (const char *base, const std::string &pattern, int zipLevel);
+ std::ostream& getPageStream (int page, int numPages) const override;
+ std::string filename (int page, int numPages) const override;
+// std::string outpath (int page, int numPages) const override;
protected:
- void expandFormatString (std::string &str, int page, int numPages) const;
+ std::string expandFormatString (std::string str, int page, int numPages) const;
private:
FilePath _path;
@@ -50,7 +55,7 @@ class SVGOutput : public SVGOutputBase
bool _stdout; ///< write to STDOUT?
int _zipLevel; ///< compression level
mutable int _page; ///< number of current page being written
- mutable std::ostream *_os;
+ mutable std::unique_ptr<std::ostream> _osptr;
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGSingleCharTextHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGSingleCharTextHandler.cpp
index 8d5a26ddb9b..af99de0dacb 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGSingleCharTextHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGSingleCharTextHandler.cpp
@@ -2,7 +2,7 @@
** SVGSingleCharTextHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,12 +18,12 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include "SVGSingleCharTextHandler.h"
-#include "XMLNode.h"
+#include "SVGSingleCharTextHandler.hpp"
+#include "XMLNode.hpp"
using namespace std;
-void SVGSingleCharTextHandler::appendChar (UInt32 c, double x, double y) {
+void SVGSingleCharTextHandler::appendChar (uint32_t c, double x, double y) {
const Font *font = _font.get();
XMLElementNode *textNode = createTextNode(x, y);
textNode->append(XMLString(font->unicode(c), false));
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGSingleCharTextHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGSingleCharTextHandler.hpp
index 0c4a26a4048..f2525dcbce0 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGSingleCharTextHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGSingleCharTextHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** SVGSingleCharTextHandler.h **
+** SVGSingleCharTextHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,17 +18,17 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef SVGSINGLECHARTEXTHANDLER_H
-#define SVGSINGLECHARTEXTHANDLER_H
+#ifndef SVGSINGLECHARTEXTHANDLER_HPP
+#define SVGSINGLECHARTEXTHANDLER_HPP
-#include "SVGCharHandler.h"
+#include "SVGCharHandler.hpp"
class SVGSingleCharTextHandler : public SVGCharTextHandler
{
public:
SVGSingleCharTextHandler (bool createStyleElements) : SVGCharTextHandler(createStyleElements) {}
- void appendChar (UInt32 c, double x, double y);
+ void appendChar (uint32_t c, double x, double y) override;
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGTree.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGTree.cpp
index 2e4ac726ded..5a88650b864 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGTree.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGTree.cpp
@@ -2,7 +2,7 @@
** SVGTree.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,17 +20,20 @@
#include <config.h>
#include <algorithm>
+#include <array>
#include <sstream>
-#include "BoundingBox.h"
-#include "DependencyGraph.h"
-#include "DVIToSVG.h"
-#include "Font.h"
-#include "FontManager.h"
-#include "SVGCharHandlerFactory.h"
-#include "SVGTree.h"
-#include "XMLDocument.h"
-#include "XMLNode.h"
-#include "XMLString.h"
+#include "BoundingBox.hpp"
+#include "DependencyGraph.hpp"
+#include "DVIToSVG.hpp"
+#include "FileSystem.hpp"
+#include "Font.hpp"
+#include "FontManager.hpp"
+#include "FontWriter.hpp"
+#include "SVGCharHandlerFactory.hpp"
+#include "SVGTree.hpp"
+#include "XMLDocument.hpp"
+#include "XMLNode.hpp"
+#include "XMLString.hpp"
using namespace std;
@@ -38,6 +41,7 @@ using namespace std;
// static class variables
bool SVGTree::CREATE_CSS=true;
bool SVGTree::USE_FONTS=true;
+FontWriter::FontFormat SVGTree::FONT_FORMAT = FontWriter::FontFormat::SVG;
bool SVGTree::CREATE_USE_ELEMENTS=false;
bool SVGTree::RELATIVE_PATH_CMDS=false;
bool SVGTree::MERGE_CHARS=true;
@@ -46,16 +50,11 @@ double SVGTree::ZOOM_FACTOR=1.0;
SVGTree::SVGTree () {
- _charHandler = SVGCharHandlerFactory::createHandler();
+ _charHandler.reset(SVGCharHandlerFactory::createHandler());
reset();
}
-SVGTree::~SVGTree () {
- delete _charHandler;
-}
-
-
/** Clears the SVG tree and initializes the root element. */
void SVGTree::reset () {
_doc.clear();
@@ -64,7 +63,8 @@ void SVGTree::reset () {
_root->addAttribute("xmlns", "http://www.w3.org/2000/svg");
_root->addAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink");
_doc.setRootNode(_root);
- _page = _defs = 0;
+ _page = _defs = nullptr;
+ _styleCDataNode = nullptr;
}
@@ -94,6 +94,22 @@ void SVGTree::setFont (int num, const Font &font) {
}
+bool SVGTree::setFontFormat (string formatstr) {
+ size_t pos = formatstr.find(',');
+ string opt;
+ if (pos != string::npos) {
+ opt = formatstr.substr(pos+1);
+ formatstr = formatstr.substr(0, pos);
+ }
+ FontWriter::FontFormat format = FontWriter::toFontFormat(formatstr);
+ if (format == FontWriter::FontFormat::UNKNOWN)
+ return false;
+ FONT_FORMAT = format;
+ FontWriter::AUTOHINT_FONTS = (opt == "autohint" || opt == "ah");
+ return true;
+}
+
+
/** Starts a new page.
* @param[in] pageno number of new page */
void SVGTree::newPage (int pageno) {
@@ -193,33 +209,30 @@ static string font_info (const Font &font) {
void SVGTree::appendFontStyles (const set<const Font*> &fonts) {
- if (CREATE_CSS && USE_FONTS && !fonts.empty() && _defs) {
- XMLElementNode *styleNode = new XMLElementNode("style");
- styleNode->addAttribute("type", "text/css");
- _root->insertAfter(styleNode, _defs);
- typedef map<int, const Font*> SortMap;
- SortMap sortmap;
- FORALL(fonts, set<const Font*>::const_iterator, it)
- if (!dynamic_cast<const VirtualFont*>(*it)) // skip virtual fonts
- sortmap[FontManager::instance().fontID(*it)] = *it;
+ if (CREATE_CSS && USE_FONTS && !fonts.empty() && _page) {
+ map<int, const Font*> sortmap;
+ for (const Font *font : fonts)
+ if (!dynamic_cast<const VirtualFont*>(font)) // skip virtual fonts
+ sortmap[FontManager::instance().fontID(font)] = font;
ostringstream style;
// add font style definitions in ascending order
- FORALL(sortmap, SortMap::const_iterator, it) {
- style << "text.f" << it->first << ' '
- << "{font-family:" << it->second->name()
- << ";font-size:" << XMLString(it->second->scaledSize()) << "px";
- if (it->second->color() != Color::BLACK)
- style << ";fill:" << it->second->color().svgColorString();
- style << '}';
- if (ADD_COMMENTS) {
- string info = font_info(*it->second);
- if (!info.empty())
- style << " /* " << info << " */";
+ for (auto &idfontpair : sortmap) {
+ if (CREATE_CSS) {
+ style << "text.f" << idfontpair.first << ' '
+ << "{font-family:" << idfontpair.second->name()
+ << ";font-size:" << XMLString(idfontpair.second->scaledSize()) << "px";
+ if (idfontpair.second->color() != Color::BLACK)
+ style << ";fill:" << idfontpair.second->color().svgColorString();
+ style << '}';
+ if (ADD_COMMENTS) {
+ string info = font_info(*idfontpair.second);
+ if (!info.empty())
+ style << " /* " << info << " */";
+ }
+ style << '\n';
}
- style << '\n';
}
- XMLCDataNode *cdata = new XMLCDataNode(style.str());
- styleNode->append(cdata);
+ styleCDataNode()->append(style.str());
}
}
@@ -227,46 +240,54 @@ void SVGTree::appendFontStyles (const set<const Font*> &fonts) {
/** Appends glyph definitions of a given font to the defs section of the SVG tree.
* @param[in] font font to be appended
* @param[in] chars codes of the characters whose glyph outlines should be appended
- * @param[in] cb pointer to callback object for sending feedback to the glyph tracer (may be 0) */
-void SVGTree::append (const PhysicalFont &font, const set<int> &chars, GFGlyphTracer::Callback *cb) {
+ * @param[in] callback pointer to callback object for sending feedback to the glyph tracer (may be 0) */
+void SVGTree::append (const PhysicalFont &font, const set<int> &chars, GFGlyphTracer::Callback *callback) {
if (chars.empty())
return;
if (USE_FONTS) {
- if (ADD_COMMENTS) {
- string info = font_info(font);
- if (!info.empty())
- appendToDefs(new XMLCommentNode(string(" font: ")+info+" "));
+ if (FONT_FORMAT != FontWriter::FontFormat::SVG) {
+ ostringstream style;
+ FontWriter fontWriter(font);
+ if (fontWriter.writeCSSFontFace(FONT_FORMAT, chars, style, callback))
+ styleCDataNode()->append(style.str());
}
- XMLElementNode *fontNode = new XMLElementNode("font");
- string fontname = font.name();
- fontNode->addAttribute("id", fontname);
- fontNode->addAttribute("horiz-adv-x", XMLString(font.hAdvance()));
- appendToDefs(fontNode);
-
- XMLElementNode *faceNode = new XMLElementNode("font-face");
- faceNode->addAttribute("font-family", fontname);
- faceNode->addAttribute("units-per-em", XMLString(font.unitsPerEm()));
- if (font.type() != PhysicalFont::MF && !font.verticalLayout()) {
- faceNode->addAttribute("ascent", XMLString(font.ascent()));
- faceNode->addAttribute("descent", XMLString(font.descent()));
+ else {
+ if (ADD_COMMENTS) {
+ string info = font_info(font);
+ if (!info.empty())
+ appendToDefs(new XMLCommentNode(string(" font: ")+info+" "));
+ }
+ XMLElementNode *fontNode = new XMLElementNode("font");
+ string fontname = font.name();
+ fontNode->addAttribute("id", fontname);
+ fontNode->addAttribute("horiz-adv-x", XMLString(font.hAdvance()));
+ appendToDefs(fontNode);
+
+ XMLElementNode *faceNode = new XMLElementNode("font-face");
+ faceNode->addAttribute("font-family", fontname);
+ faceNode->addAttribute("units-per-em", XMLString(font.unitsPerEm()));
+ if (!font.verticalLayout()) {
+ faceNode->addAttribute("ascent", XMLString(font.ascent()));
+ faceNode->addAttribute("descent", XMLString(font.descent()));
+ }
+ fontNode->append(faceNode);
+ for (int c : chars)
+ fontNode->append(createGlyphNode(c, font, callback));
}
- fontNode->append(faceNode);
- FORALL(chars, set<int>::const_iterator, i)
- fontNode->append(createGlyphNode(*i, font, cb));
}
else if (CREATE_USE_ELEMENTS && &font != font.uniqueFont()) {
// If the same character is used in various sizes, we don't want to embed the complete (lengthy) path
// descriptions multiple times. Because they would only differ by a scale factor, it's better to
// reference the already embedded path together with a transformation attribute and let the SVG renderer
// scale the glyphs properly. This is only necessary if we don't want to use font but path elements.
- FORALL(chars, set<int>::const_iterator, it) {
+ for (int c : chars) {
ostringstream oss;
XMLElementNode *use = new XMLElementNode("use");
- oss << 'g' << FontManager::instance().fontID(&font) << '-' << *it;
+ oss << 'g' << FontManager::instance().fontID(&font) << '-' << c;
use->addAttribute("id", oss.str());
oss.str("");
- oss << "#g" << FontManager::instance().fontID(font.uniqueFont()) << '-' << *it;
+ oss << "#g" << FontManager::instance().fontID(font.uniqueFont()) << '-' << c;
use->addAttribute("xlink:href", oss.str());
double scale = font.scaledSize()/font.uniqueFont()->scaledSize();
if (scale != 1.0) {
@@ -278,8 +299,8 @@ void SVGTree::append (const PhysicalFont &font, const set<int> &chars, GFGlyphTr
}
}
else {
- FORALL(chars, set<int>::const_iterator, i)
- appendToDefs(createGlyphNode(*i, font, cb));
+ for (int c : chars)
+ appendToDefs(createGlyphNode(c, font, callback));
}
}
@@ -318,9 +339,9 @@ void SVGTree::removeRedundantElements () {
// collect dependencies between clipPath elements in the defs section of the SVG tree
DependencyGraph<string> idTree;
- for (vector<XMLElementNode*>::iterator it=clipElements.begin(); it != clipElements.end(); ++it) {
- if (const char *id = (*it)->getAttributeValue("id")) {
- if (const char *url = (*it)->getAttributeValue("clip-path"))
+ for (const XMLElementNode *clip : clipElements) {
+ if (const char *id = clip->getAttributeValue("id")) {
+ if (const char *url = clip->getAttributeValue("clip-path"))
idTree.insert(extract_id_from_url(url), id);
else
idTree.insert(id);
@@ -330,15 +351,27 @@ void SVGTree::removeRedundantElements () {
vector<XMLElementNode*> descendants;
_page->getDescendants(0, "clip-path", descendants);
// remove referenced IDs and their dependencies from the dependency graph
- for (vector<XMLElementNode*>::iterator it=descendants.begin(); it != descendants.end(); ++it) {
- string idref = extract_id_from_url((*it)->getAttributeValue("clip-path"));
+ for (const XMLElementNode *elem : descendants) {
+ string idref = extract_id_from_url(elem->getAttributeValue("clip-path"));
idTree.removeDependencyPath(idref);
}
descendants.clear();
vector<string> ids;
idTree.getKeys(ids);
- for (vector<string>::iterator it=ids.begin(); it != ids.end(); ++it) {
- XMLElementNode *node = _defs->getFirstDescendant("clipPath", "id", it->c_str());
+ for (const string &str : ids) {
+ XMLElementNode *node = _defs->getFirstDescendant("clipPath", "id", str.c_str());
_defs->remove(node);
}
}
+
+
+XMLCDataNode* SVGTree::styleCDataNode () {
+ if (!_styleCDataNode) {
+ XMLElementNode *styleNode = new XMLElementNode("style");
+ styleNode->addAttribute("type", "text/css");
+ _root->insertBefore(styleNode, _page);
+ _styleCDataNode = new XMLCDataNode;
+ styleNode->append(_styleCDataNode);
+ }
+ return _styleCDataNode;
+} \ No newline at end of file
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGTree.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGTree.hpp
index 278d386e254..82ccc8332dc 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGTree.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGTree.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** SVGTree.h **
+** SVGTree.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,31 +18,32 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_SVGTREE_H
-#define DVISVGM_SVGTREE_H
+#ifndef SVGTREE_HPP
+#define SVGTREE_HPP
#include <map>
+#include <memory>
#include <set>
#include <stack>
-#include "Color.h"
-#include "GFGlyphTracer.h"
-#include "Matrix.h"
-#include "SVGCharHandler.h"
-#include "XMLDocument.h"
-#include "XMLNode.h"
+#include "Color.hpp"
+#include "FontWriter.hpp"
+#include "GFGlyphTracer.hpp"
+#include "Matrix.hpp"
+#include "SVGCharHandler.hpp"
+#include "XMLDocument.hpp"
+#include "XMLNode.hpp"
-class BoundingBox;
-class Color;
+class BoundingBox;
+class Color;
class Font;
-class Matrix;
-class PhysicalFont;
+class Matrix;
+class PhysicalFont;
class SVGTree {
public:
SVGTree ();
- ~SVGTree ();
void reset ();
- void write (std::ostream &os) const {_doc.write(os);}
+ bool write (std::ostream &os) const {return bool(_doc.write(os));}
void newPage (int pageno);
void appendToDefs (XMLNode *node);
void appendToPage (XMLNode *node);
@@ -51,12 +52,13 @@ class SVGTree {
void appendToRoot (XMLNode *node) {_root->append(node);}
void appendChar (int c, double x, double y) {_charHandler->appendChar(c, x, y);}
void appendFontStyles (const std::set<const Font*> &fonts);
- void append (const PhysicalFont &font, const std::set<int> &chars, GFGlyphTracer::Callback *cb=0);
+ void append (const PhysicalFont &font, const std::set<int> &chars, GFGlyphTracer::Callback *callback=0);
void pushContextElement (XMLElementNode *node);
void popContextElement ();
void removeRedundantElements ();
void setBBox (const BoundingBox &bbox);
void setFont (int id, const Font &font);
+ static bool setFontFormat (std::string formatstr);
void setX (double x) {_charHandler->notifyXAdjusted();}
void setY (double y) {_charHandler->notifyYAdjusted();}
void setMatrix (const Matrix &m) {_charHandler->setMatrix(m);}
@@ -67,10 +69,14 @@ class SVGTree {
const Matrix& getMatrix () const {return _charHandler->getMatrix();}
XMLElementNode* rootNode () const {return _root;}
+ protected:
+ XMLCDataNode* styleCDataNode ();
+
public:
static bool USE_FONTS; ///< if true, create font references and don't draw paths directly
static bool CREATE_CSS; ///< define and use CSS classes to reference fonts?
static bool CREATE_USE_ELEMENTS; ///< allow generation of <use/> elements?
+ static FontWriter::FontFormat FONT_FORMAT; ///< format of fonts to be embedded
static bool RELATIVE_PATH_CMDS; ///< relative path commands rather than absolute ones?
static bool MERGE_CHARS; ///< whether to merge chars with common properties into the same <text> tag
static bool ADD_COMMENTS; ///< add comments with additional information
@@ -79,7 +85,8 @@ class SVGTree {
private:
XMLDocument _doc;
XMLElementNode *_root, *_page, *_defs;
- SVGCharHandler *_charHandler;
+ XMLCDataNode *_styleCDataNode;
+ std::unique_ptr<SVGCharHandler> _charHandler;
std::stack<XMLElementNode*> _contextElementStack;
};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/ShadingPatch.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/ShadingPatch.cpp
index 999bddecd38..97a567fd20d 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/ShadingPatch.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/ShadingPatch.cpp
@@ -2,7 +2,7 @@
** ShadingPatch.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,28 +19,28 @@
*************************************************************************/
#include <sstream>
-#include "ShadingPatch.h"
-#include "TensorProductPatch.h"
-#include "TriangularPatch.h"
+#include "ShadingPatch.hpp"
+#include "TensorProductPatch.hpp"
+#include "TriangularPatch.hpp"
using namespace std;
/** Get functions to get/set the current color depending on the assigned color space. */
void ShadingPatch::colorQueryFuncs (ColorGetter &getter, ColorSetter &setter) const {
switch (_colorspace) {
- case Color::CMYK_SPACE:
+ case Color::ColorSpace::CMYK:
getter = &Color::getCMYK;
setter = &Color::setCMYK;
break;
- case Color::LAB_SPACE:
+ case Color::ColorSpace::LAB:
getter = &Color::getLab;
setter = &Color::setLab;
break;
- case Color::RGB_SPACE:
+ case Color::ColorSpace::RGB:
getter = &Color::getRGB;
setter = &Color::setRGB;
break;
- case Color::GRAY_SPACE:
+ case Color::ColorSpace::GRAY:
getter = &Color::getGray;
setter = &Color::setGray;
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/ShadingPatch.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/ShadingPatch.hpp
index 89c9ece24e7..25d88d0ac49 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/ShadingPatch.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/ShadingPatch.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** ShadingPatch.h **
+** ShadingPatch.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,19 +18,19 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_SHADINGPATCH_H
-#define DVISVGM_SHADINGPATCH_H
+#ifndef SHADINGPATCH_HPP
+#define SHADINGPATCH_HPP
-#include "Color.h"
-#include "GraphicsPath.h"
-#include "MessageException.h"
+#include "Color.hpp"
+#include "GraphicsPath.hpp"
+#include "MessageException.hpp"
class ShadingPatch
{
public:
struct Callback {
- virtual ~Callback () {}
+ virtual ~Callback () =default;
virtual void patchSegment (GraphicsPath<double> &path, const Color &color) =0;
};
@@ -39,7 +39,7 @@ class ShadingPatch
public:
ShadingPatch (Color::ColorSpace colorSpace) : _colorspace(colorSpace) {}
- virtual ~ShadingPatch () {}
+ virtual ~ShadingPatch () =default;
virtual int psShadingType () const =0;
virtual void approximate (int gridsize, bool overlap, double delta, Callback &callback) const =0;
virtual void getBBox (BoundingBox &bbox) const =0;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.cpp
index 5924022400f..696c99ac18d 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.cpp
@@ -2,7 +2,7 @@
** SignalHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -22,7 +22,7 @@
#include <cerrno>
#include <csignal>
#include <cstdlib>
-#include "SignalHandler.h"
+#include "SignalHandler.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.hpp
index 08171fb6785..c1c48346d43 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SignalHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** SignalHandler.h **
+** SignalHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_SIGNALHANDLER_H
-#define DVISVGM_SIGNALHANDLER_H
+#ifndef SIGNALHANDLER_HPP
+#define SIGNALHANDLER_HPP
#include <exception>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialActions.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialActions.hpp
index 23548a2370f..5dfaaa17b08 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialActions.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialActions.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** SpecialActions.h **
+** SpecialActions.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,13 +18,13 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_SPECIALACTIONS_H
-#define DVISVGM_SPECIALACTIONS_H
+#ifndef SPECIALACTIONS_HPP
+#define SPECIALACTIONS_HPP
#include <string>
-#include "BoundingBox.h"
-#include "Color.h"
-#include "Matrix.h"
+#include "BoundingBox.hpp"
+#include "Color.hpp"
+#include "Matrix.hpp"
class XMLNode;
class XMLElementNode;
@@ -32,7 +32,7 @@ class XMLElementNode;
class SpecialActions
{
public:
- virtual ~SpecialActions () {}
+ virtual ~SpecialActions () =default;
virtual double getX () const =0;
virtual double getY () const =0;
virtual void setX (double x) =0;
@@ -66,29 +66,29 @@ class SpecialActions
class EmptySpecialActions : public SpecialActions
{
public:
- double getX () const {return 0;}
- double getY () const {return 0;}
- void setX (double x) {}
- void setY (double y) {}
- void finishLine () {}
- void setColor (const Color &color) {}
- void setBgColor (const Color &color) {}
- Color getColor () const {return Color::BLACK;}
- void setMatrix (const Matrix &m) {}
- const Matrix& getMatrix () const {return _matrix;}
- void getPageTransform (Matrix &matrix) const {}
- void appendToPage (XMLNode *node) {}
- void appendToDefs (XMLNode *node) {}
- void prependToPage (XMLNode *node) {}
- void pushContextElement (XMLElementNode *node) {}
- void popContextElement () {}
- BoundingBox& bbox () {return _bbox;}
- BoundingBox& bbox (const std::string &name, bool reset=false) {return _bbox;}
- void embed (const BoundingBox &bbox) {}
- void embed (const DPair &p, double r=0) {}
- unsigned getCurrentPageNumber() const {return 0;}
- std::string getSVGFilename (unsigned pageno) const {return "";}
- std::string getBBoxFormatString () const {return "";}
+ double getX () const override {return 0;}
+ double getY () const override {return 0;}
+ void setX (double x) override {}
+ void setY (double y) override {}
+ void finishLine () override {}
+ void setColor (const Color &color) override {}
+ void setBgColor (const Color &color) override {}
+ Color getColor () const override {return Color::BLACK;}
+ void setMatrix (const Matrix &m) override {}
+ const Matrix& getMatrix () const override {return _matrix;}
+ void getPageTransform (Matrix &matrix) const override {}
+ void appendToPage (XMLNode *node) override {}
+ void appendToDefs (XMLNode *node) override {}
+ void prependToPage (XMLNode *node) override {}
+ void pushContextElement (XMLElementNode *node) override {}
+ void popContextElement () override {}
+ BoundingBox& bbox () override {return _bbox;}
+ BoundingBox& bbox (const std::string &name, bool reset=false) override {return _bbox;}
+ void embed (const BoundingBox &bbox) override {}
+ void embed (const DPair &p, double r=0) override {}
+ unsigned getCurrentPageNumber() const override {return 0;}
+ std::string getSVGFilename (unsigned pageno) const override {return "";}
+ std::string getBBoxFormatString () const override {return "";}
private:
BoundingBox _bbox;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialHandler.hpp
index a55a865a117..1822181ad4c 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** SpecialHandler.h **
+** SpecialHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,12 +18,12 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_SPECIALHANDLER_H
-#define DVISVGM_SPECIALHANDLER_H
+#ifndef SPECIALHANDLER_HPP
+#define SPECIALHANDLER_HPP
#include <istream>
#include <list>
-#include "MessageException.h"
+#include "MessageException.hpp"
class SpecialActions;
@@ -38,28 +38,28 @@ struct SpecialException : public MessageException
struct DVIPreprocessingListener
{
- virtual ~DVIPreprocessingListener () {}
+ virtual ~DVIPreprocessingListener () =default;
virtual void dviPreprocessingFinished () =0;
};
struct DVIBeginPageListener
{
- virtual ~DVIBeginPageListener () {}
+ virtual ~DVIBeginPageListener () =default;
virtual void dviBeginPage (unsigned pageno, SpecialActions &actions) =0;
};
struct DVIEndPageListener
{
- virtual ~DVIEndPageListener () {}
+ virtual ~DVIEndPageListener () =default;
virtual void dviEndPage (unsigned pageno, SpecialActions &actions) =0;
};
struct DVIPositionListener
{
- virtual ~DVIPositionListener () {}
+ virtual ~DVIPositionListener () =default;
virtual void dviMovedTo (double x, double y, SpecialActions &actions) =0;
};
@@ -68,7 +68,7 @@ class SpecialHandler
{
friend class SpecialManager;
public:
- virtual ~SpecialHandler () {}
+ virtual ~SpecialHandler () =default;
virtual const char** prefixes () const=0;
virtual const char* info () const=0;
virtual const char* name () const=0;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp
index db4bd42b3d0..9a2027cb8f7 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp
@@ -2,7 +2,7 @@
** SpecialManager.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,10 +21,10 @@
#include <config.h>
#include <iomanip>
#include <sstream>
-#include "SpecialActions.h"
-#include "SpecialHandler.h"
-#include "SpecialManager.h"
-#include "PsSpecialHandler.h"
+#include "SpecialActions.hpp"
+#include "SpecialHandler.hpp"
+#include "SpecialManager.hpp"
+#include "PsSpecialHandler.hpp"
using namespace std;
@@ -44,8 +44,8 @@ SpecialManager& SpecialManager::instance() {
/** Remove all registered handlers. */
void SpecialManager::unregisterHandlers () {
- FORALL(_pool, vector<SpecialHandler*>::iterator, it)
- delete *it;
+ for (SpecialHandler *handler : _pool)
+ delete handler;
_pool.clear();
_handlers.clear();
_endPageListeners.clear();
@@ -82,14 +82,14 @@ void SpecialManager::registerHandler (SpecialHandler *handler) {
* @param[in] ignorelist list of special names to be ignored */
void SpecialManager::registerHandlers (SpecialHandler **handlers, const char *ignorelist) {
if (handlers) {
- string ign = ignorelist ? ignorelist : "";
- FORALL(ign, string::iterator, it)
- if (!isalnum(*it))
- *it = '%';
- ign = "%"+ign+"%";
+ string ignorestr = ignorelist ? ignorelist : "";
+ for (char &c : ignorestr)
+ if (!isalnum(c))
+ c = '%';
+ ignorestr = "%"+ignorestr+"%";
for (; *handlers; handlers++) {
- if (!(*handlers)->name() || ign.find("%"+string((*handlers)->name())+"%") == string::npos)
+ if (!(*handlers)->name() || ignorestr.find("%"+string((*handlers)->name())+"%") == string::npos)
registerHandler(*handlers);
else
delete *handlers;
@@ -102,7 +102,7 @@ void SpecialManager::registerHandlers (SpecialHandler **handlers, const char *ig
* @param[in] prefix the special prefix, e.g. "color" or "em"
* @return in case of success: pointer to handler, 0 otherwise */
SpecialHandler* SpecialManager::findHandler (const string &prefix) const {
- ConstIterator it = _handlers.find(prefix);
+ auto it = _handlers.find(prefix);
if (it != _handlers.end())
return it->second;
return 0;
@@ -149,40 +149,39 @@ bool SpecialManager::process (const string &special, double dvi2bp, SpecialActio
void SpecialManager::notifyPreprocessingFinished () const {
- FORALL(_preprocListeners, vector<DVIPreprocessingListener*>::const_iterator, it)
- (*it)->dviPreprocessingFinished();
+ for (DVIPreprocessingListener *listener : _preprocListeners)
+ listener->dviPreprocessingFinished();
}
void SpecialManager::notifyBeginPage (unsigned pageno, SpecialActions &actions) const {
- FORALL(_beginPageListeners, vector<DVIBeginPageListener*>::const_iterator, it)
- (*it)->dviBeginPage(pageno, actions);
+ for (DVIBeginPageListener *listener : _beginPageListeners)
+ listener->dviBeginPage(pageno, actions);
}
void SpecialManager::notifyEndPage (unsigned pageno, SpecialActions &actions) const {
- FORALL(_endPageListeners, vector<DVIEndPageListener*>::const_iterator, it)
- (*it)->dviEndPage(pageno, actions);
+ for (DVIEndPageListener *listener : _endPageListeners)
+ listener->dviEndPage(pageno, actions);
}
void SpecialManager::notifyPositionChange (double x, double y, SpecialActions &actions) const {
- FORALL(_positionListeners, vector<DVIPositionListener*>::const_iterator, it)
- (*it)->dviMovedTo(x, y, actions);
+ for (DVIPositionListener *listener : _positionListeners)
+ listener->dviMovedTo(x, y, actions);
}
void SpecialManager::writeHandlerInfo (ostream &os) const {
ios::fmtflags osflags(os.flags());
- typedef map<string, SpecialHandler*> SortMap;
- SortMap m;
- FORALL(_handlers, ConstIterator, it)
- if (it->second->name())
- m[it->second->name()] = it->second;
- FORALL(m, SortMap::iterator, it) {
- os << setw(10) << left << it->second->name() << ' ';
- if (it->second->info())
- os << it->second->info();
+ HandlerMap sortmap;
+ for (const auto &strhandlerpair : _handlers)
+ if (strhandlerpair.second->name())
+ sortmap[strhandlerpair.second->name()] = strhandlerpair.second;
+ for (auto &strhandlerpair : sortmap) {
+ os << setw(10) << left << strhandlerpair.second->name() << ' ';
+ if (strhandlerpair.second->info())
+ os << strhandlerpair.second->info();
os << endl;
}
os.flags(osflags); // restore format flags
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp
index a06ea5899e3..919881811a4 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** SpecialManager.h **
+** SpecialManager.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,14 +18,14 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_SPECIALMANAGER_H
-#define DVISVGM_SPECIALMANAGER_H
+#ifndef SPECIALMANAGER_HPP
+#define SPECIALMANAGER_HPP
#include <map>
#include <ostream>
#include <string>
#include <vector>
-#include "SpecialHandler.h"
+#include "SpecialHandler.hpp"
class SpecialActions;
@@ -34,8 +34,6 @@ class SpecialManager
private:
typedef std::vector<SpecialHandler*> HandlerPool;
typedef std::map<std::string,SpecialHandler*> HandlerMap;
- typedef HandlerMap::iterator Iterator;
- typedef HandlerMap::const_iterator ConstIterator;
public:
~SpecialManager ();
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.cpp
index f15023f58da..d31a92bcb84 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.cpp
@@ -2,7 +2,7 @@
** StreamReader.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,9 +19,8 @@
*************************************************************************/
#include <config.h>
-#include "CRC32.h"
-#include "StreamReader.h"
-#include "macros.h"
+#include "CRC32.hpp"
+#include "StreamReader.hpp"
using namespace std;
@@ -36,10 +35,10 @@ istream& StreamReader::replaceStream (istream &in) {
/** Reads an unsigned integer from assigned input stream.
* @param[in] bytes number of bytes to read (max. 4)
* @return read integer */
-UInt32 StreamReader::readUnsigned (int bytes) {
- UInt32 ret = 0;
+uint32_t StreamReader::readUnsigned (int bytes) {
+ uint32_t ret = 0;
for (bytes--; bytes >= 0 && !_is->eof(); bytes--) {
- UInt32 b = UInt32(_is->get());
+ uint32_t b = uint32_t(_is->get());
ret |= b << (8*bytes);
}
return ret;
@@ -50,8 +49,8 @@ UInt32 StreamReader::readUnsigned (int bytes) {
* @param[in] bytes number of bytes to read (max. 4)
* @param[in,out] crc32 checksum to be updated
* @return read integer */
-UInt32 StreamReader::readUnsigned (int bytes, CRC32 &crc32) {
- UInt32 ret = readUnsigned(bytes);
+uint32_t StreamReader::readUnsigned (int bytes, CRC32 &crc32) {
+ uint32_t ret = readUnsigned(bytes);
crc32.update(ret, bytes);
return ret;
}
@@ -60,8 +59,8 @@ UInt32 StreamReader::readUnsigned (int bytes, CRC32 &crc32) {
/** Reads an signed integer from assigned input stream.
* @param[in] bytes number of bytes to read (max. 4)
* @return read integer */
-Int32 StreamReader::readSigned (int bytes) {
- Int32 ret = Int32(_is->get());
+int32_t StreamReader::readSigned (int bytes) {
+ int32_t ret = int32_t(_is->get());
if (ret & 128) // negative value?
ret |= 0xffffff00;
for (bytes-=2; bytes >= 0 && !_is->eof(); bytes--)
@@ -74,9 +73,9 @@ Int32 StreamReader::readSigned (int bytes) {
* @param[in] bytes number of bytes to read (max. 4)
* @param[in,out] crc32 checksum to be updated
* @return read integer */
-Int32 StreamReader::readSigned (int bytes, CRC32 &crc32) {
- Int32 ret = readSigned(bytes);
- crc32.update(UInt32(ret), bytes);
+int32_t StreamReader::readSigned (int bytes, CRC32 &crc32) {
+ int32_t ret = readSigned(bytes);
+ crc32.update(uint32_t(ret), bytes);
return ret;
}
@@ -99,7 +98,7 @@ string StreamReader::readString () {
* @return the string read */
string StreamReader::readString (CRC32 &crc32, bool finalZero) {
string ret = readString();
- crc32.update((const UInt8*)ret.c_str(), ret.length());
+ crc32.update((const uint8_t*)ret.c_str(), ret.length());
if (finalZero)
crc32.update(0, 1);
return ret;
@@ -136,14 +135,14 @@ string StreamReader::readString (int length, CRC32 &crc32) {
}
-vector<UInt8>& StreamReader::readBytes (int n, vector<UInt8> &bytes) {
+vector<uint8_t>& StreamReader::readBytes (int n, vector<uint8_t> &bytes) {
if (n > 0)
_is->read((char*)&bytes[0], n);
return bytes;
}
-vector<UInt8>& StreamReader::readBytes (int n, vector<UInt8> &bytes, CRC32 &crc32) {
+vector<uint8_t>& StreamReader::readBytes (int n, vector<uint8_t> &bytes, CRC32 &crc32) {
readBytes(n, bytes);
crc32.update(&bytes[0], bytes.size());
return bytes;
@@ -153,7 +152,7 @@ vector<UInt8>& StreamReader::readBytes (int n, vector<UInt8> &bytes, CRC32 &crc3
int StreamReader::readByte (CRC32 &crc32) {
int ret = readByte();
if (ret >= 0) {
- const UInt8 c = UInt8(ret & 0xff);
+ const uint8_t c = uint8_t(ret & 0xff);
crc32.update(&c, 1);
}
return ret;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.hpp
index b8111afc9ca..45cafe73423 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** StreamReader.h **
+** StreamReader.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,14 +18,13 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_STREAMREADER_H
-#define DVISVGM_STREAMREADER_H
+#ifndef STREAMREADER_HPP
+#define STREAMREADER_HPP
#include <istream>
#include <string>
#include <vector>
-#include "MessageException.h"
-#include "types.h"
+#include "MessageException.hpp"
class CRC32;
@@ -33,21 +32,21 @@ class StreamReader
{
public:
StreamReader (std::istream &is) : _is(&is) {}
- virtual ~StreamReader () {}
+ virtual ~StreamReader () =default;
bool isStreamValid () const {return _is;}
bool eof () const {return _is->eof();}
void clearStream () {_is->clear();}
std::istream& replaceStream (std::istream &s);
- UInt32 readUnsigned (int n);
- UInt32 readUnsigned (int n, CRC32 &crc32);
- Int32 readSigned (int n);
- Int32 readSigned (int n, CRC32 &crc32);
+ uint32_t readUnsigned (int n);
+ uint32_t readUnsigned (int n, CRC32 &crc32);
+ int32_t readSigned (int n);
+ int32_t readSigned (int n, CRC32 &crc32);
std::string readString ();
std::string readString (CRC32 &crc32, bool finalZero=false);
std::string readString (int length);
std::string readString (int length, CRC32 &crc32);
- std::vector<UInt8>& readBytes (int n, std::vector<UInt8> &bytes);
- std::vector<UInt8>& readBytes (int n, std::vector<UInt8> &bytes, CRC32 &crc32);
+ std::vector<uint8_t>& readBytes (int n, std::vector<uint8_t> &bytes);
+ std::vector<uint8_t>& readBytes (int n, std::vector<uint8_t> &bytes, CRC32 &crc32);
int readByte () {return _is->get();}
int readByte (CRC32 &crc32);
void seek (std::streampos pos, std::ios::seekdir dir) {_is->seekg(pos, dir);}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamWriter.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamWriter.cpp
index 5b50b33673a..16bd13c82ce 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamWriter.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamWriter.cpp
@@ -2,7 +2,7 @@
** StreamWriter.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,8 +19,8 @@
*************************************************************************/
#include <config.h>
-#include "CRC32.h"
-#include "StreamWriter.h"
+#include "CRC32.hpp"
+#include "StreamWriter.hpp"
using namespace std;
@@ -28,7 +28,7 @@ using namespace std;
/** Writes an unsigned integer to the output stream.
* @param[in] val the value to write
* @param[in] n number of bytes to be considered */
-void StreamWriter::writeUnsigned (UInt32 val, int n) {
+void StreamWriter::writeUnsigned (uint32_t val, int n) {
for (n--; n >= 0; n--)
_os.put(char((val >> (8*n)) & 0xff));
}
@@ -37,8 +37,8 @@ void StreamWriter::writeUnsigned (UInt32 val, int n) {
/** Writes a signed integer to the output stream.
* @param[in] val the value to write
* @param[in] n number of bytes to be considered */
-void StreamWriter::writeSigned (Int32 val, int n) {
- writeUnsigned((UInt32)val, n);
+void StreamWriter::writeSigned (int32_t val, int n) {
+ writeUnsigned((uint32_t)val, n);
}
@@ -57,7 +57,7 @@ void StreamWriter::writeString (const string &str, bool finalZero) {
* @param[in] val the value to write
* @param[in] n number of bytes to be considered
* @param[in,out] crc32 checksum to be updated */
-void StreamWriter::writeUnsigned (UInt32 val, int n, CRC32 &crc32) {
+void StreamWriter::writeUnsigned (uint32_t val, int n, CRC32 &crc32) {
writeUnsigned(val, n);
crc32.update(val, n);
}
@@ -67,8 +67,8 @@ void StreamWriter::writeUnsigned (UInt32 val, int n, CRC32 &crc32) {
* @param[in] val the value to write
* @param[in] n number of bytes to be considered
* @param[in,out] crc32 checksum to be updated */
-void StreamWriter::writeSigned (Int32 val, int n, CRC32 &crc32) {
- writeUnsigned((UInt32)val, n, crc32);
+void StreamWriter::writeSigned (int32_t val, int n, CRC32 &crc32) {
+ writeUnsigned((uint32_t)val, n, crc32);
}
@@ -78,5 +78,5 @@ void StreamWriter::writeSigned (Int32 val, int n, CRC32 &crc32) {
* @param[in] finalZero if true, a final 0-byte is appended */
void StreamWriter::writeString (const std::string &str, CRC32 &crc32, bool finalZero) {
writeString(str, finalZero);
- crc32.update((const UInt8*)str.c_str(), str.length() + (finalZero ? 1 : 0));
+ crc32.update((const uint8_t*)str.c_str(), str.length() + (finalZero ? 1 : 0));
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamWriter.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamWriter.hpp
index ed10770643a..bc6e504348a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamWriter.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamWriter.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** StreamWriter.h **
+** StreamWriter.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,11 +18,10 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_STREAMWRITER_H
-#define DVISVGM_STREAMWRITER_H
+#ifndef STREAMWRITER_HPP
+#define STREAMWRITER_HPP
#include <ostream>
-#include "types.h"
class CRC32;
@@ -31,12 +30,12 @@ class StreamWriter
{
public:
StreamWriter (std::ostream &os) : _os(os) {}
- virtual ~StreamWriter () {}
- void writeUnsigned (UInt32 val, int n);
- void writeSigned (Int32 val, int n);
+ virtual ~StreamWriter () =default;
+ void writeUnsigned (uint32_t val, int n);
+ void writeSigned (int32_t val, int n);
void writeString (const std::string &str, bool finalZero=false);
- void writeUnsigned (UInt32 val, int n, CRC32 &crc32);
- void writeSigned (Int32 val, int n, CRC32 &crc32);
+ void writeUnsigned (uint32_t val, int n, CRC32 &crc32);
+ void writeSigned (int32_t val, int n, CRC32 &crc32);
void writeString (const std::string &str, CRC32 &crc32, bool finalZero=false);
private:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Subfont.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Subfont.cpp
index 8b125ac5ef9..9d8c76eff77 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Subfont.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Subfont.cpp
@@ -2,7 +2,7 @@
** Subfont.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -23,9 +23,9 @@
#include <cstring>
#include <fstream>
#include <limits>
-#include "FileFinder.h"
-#include "Message.h"
-#include "Subfont.h"
+#include "FileFinder.hpp"
+#include "Message.hpp"
+#include "Subfont.hpp"
using namespace std;
@@ -33,7 +33,7 @@ using namespace std;
// helper functions
static int skip_mapping_data (istream &is);
-static bool scan_line (const char *line, int lineno, UInt16 *mapping, const string &fname, long &pos);
+static bool scan_line (const char *line, int lineno, uint16_t *mapping, const string &fname, long &pos);
/** Constructs a new SubfontDefinition object.
@@ -52,7 +52,7 @@ SubfontDefinition::SubfontDefinition (const string &name, const char *fpath) : _
while (is && !isspace(is.peek()))
id += is.get();
if (!id.empty()) {
- pair<Iterator, bool> state = _subfonts.insert(pair<string,Subfont*>(id, (Subfont*)0));
+ auto state = _subfonts.emplace(pair<string,Subfont*>(id, (Subfont*)0));
if (state.second) // id was not present in map already
state.first->second = new Subfont(*this, state.first->first);
skip_mapping_data(is);
@@ -63,8 +63,8 @@ SubfontDefinition::SubfontDefinition (const string &name, const char *fpath) : _
SubfontDefinition::~SubfontDefinition () {
- for (Iterator it=_subfonts.begin(); it != _subfonts.end(); ++it)
- delete it->second;
+ for (auto &entry : _subfonts)
+ delete entry.second;
}
@@ -79,7 +79,7 @@ SubfontDefinition* SubfontDefinition::lookup (const std::string &name) {
if (it != sfdMap.end())
return it->second;
SubfontDefinition *sfd=0;
- if (const char *path = FileFinder::lookup(name+".sfd", false)) {
+ if (const char *path = FileFinder::instance().lookup(name+".sfd", false)) {
sfd = new SubfontDefinition(name, path);
sfdMap[name] = sfd;
}
@@ -89,13 +89,13 @@ SubfontDefinition* SubfontDefinition::lookup (const std::string &name) {
/** Returns the full path to the corresponding .sfd file or 0 if it can't be found. */
const char* SubfontDefinition::path () const {
- return FileFinder::lookup(filename(), false);
+ return FileFinder::instance().lookup(filename(), false);
}
/** Returns the subfont with the given ID, or 0 if it doesn't exist. */
Subfont* SubfontDefinition::subfont (const string &id) const {
- ConstIterator it = _subfonts.find(id);
+ auto it = _subfonts.find(id);
if (it != _subfonts.end())
return it->second;
return 0;
@@ -104,8 +104,8 @@ Subfont* SubfontDefinition::subfont (const string &id) const {
/** Returns all subfonts defined in this SFD. */
int SubfontDefinition::subfonts (vector<Subfont*> &sfs) const {
- for (ConstIterator it=_subfonts.begin(); it != _subfonts.end(); ++it)
- sfs.push_back(it->second);
+ for (const auto &strsfpair : _subfonts)
+ sfs.push_back(strsfpair.second);
return int(sfs.size());
}
@@ -152,8 +152,8 @@ bool Subfont::read () {
lineno += skip_mapping_data(is);
else {
// build mapping array
- _mapping = new UInt16[256];
- memset(_mapping, 0, 256*sizeof(UInt16));
+ _mapping = new uint16_t[256];
+ memset(_mapping, 0, 256*sizeof(uint16_t));
long pos=0;
char buf[1024];
bool complete=false;
@@ -174,7 +174,7 @@ bool Subfont::read () {
* (local) character code of the subfont.
* @param[in] c local character code relative to the subfont
* @return character code of the target font */
-UInt16 Subfont::decode (unsigned char c) {
+uint16_t Subfont::decode (unsigned char c) {
if (!_mapping && !read())
return 0;
return _mapping[c];
@@ -211,7 +211,7 @@ static int skip_mapping_data (istream &is) {
* @param[in] fname name of the mapfile being scanned
* @param[in,out] offset position/index of next mapping value
* @return true if the line is the last one the current mapping sequence, i.e. the line doesn't end with a backslash */
-static bool scan_line (const char *line, int lineno, UInt16 *mapping, const string &fname, long &offset) {
+static bool scan_line (const char *line, int lineno, uint16_t *mapping, const string &fname, long &offset) {
const char *p=line;
char *q;
for (; *p && isspace(*p); p++);
@@ -256,7 +256,7 @@ static bool scan_line (const char *line, int lineno, UInt16 *mapping, const stri
for (long v=val1; v <= val2; v++) {
if (mapping[offset])
throw SubfontException(oss << "mapping of character " << offset << " already defined", fname, lineno);
- mapping[offset++] = static_cast<UInt16>(v);
+ mapping[offset++] = static_cast<uint16_t>(v);
}
}
for (p=q; *p && isspace(*p); p++);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Subfont.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Subfont.hpp
index e0887589d67..46c322a4c08 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Subfont.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Subfont.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Subfont.h **
+** Subfont.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,16 +18,15 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_SUBFONT_H
-#define DVISVGM_SUBFONT_H
+#ifndef SUBFONT_HPP
+#define SUBFONT_HPP
#include <istream>
#include <map>
#include <sstream>
#include <string>
#include <vector>
-#include "MessageException.h"
-#include "types.h"
+#include "MessageException.hpp"
class Subfont;
@@ -38,8 +37,6 @@ class Subfont;
class SubfontDefinition
{
typedef std::map<std::string, Subfont*> Subfonts;
- typedef Subfonts::iterator Iterator;
- typedef Subfonts::const_iterator ConstIterator;
public:
~SubfontDefinition ();
static SubfontDefinition* lookup (const std::string &name);
@@ -67,7 +64,7 @@ class Subfont
public:
~Subfont();
const std::string& id () const {return _id;}
- UInt16 decode (unsigned char c);
+ uint16_t decode (unsigned char c);
protected:
Subfont (SubfontDefinition &sfd, const std::string &id) : _sfd(sfd), _id(id), _mapping(0) {}
@@ -76,7 +73,7 @@ class Subfont
private:
SubfontDefinition &_sfd; ///< SubfontDefinition where this Subfont belongs to
const std::string &_id; ///< id of this subfont as specified in the .sfd file
- UInt16 *_mapping; ///< the character mapping table with 256 entries
+ uint16_t *_mapping; ///< the character mapping table with 256 entries
};
@@ -84,12 +81,12 @@ class SubfontException : public MessageException
{
public:
SubfontException (const std::string &msg, const std::string &fname, int lineno=0)
- : MessageException(msg), _fname(fname), _lineno(lineno) {}
+ : MessageException(msg), _fname(fname), _lineno(lineno) {}
SubfontException (const std::ostream &oss, const std::string &fname, int lineno=0)
- : MessageException(dynamic_cast<const std::ostringstream&>(oss).str()), _fname(fname), _lineno(lineno) {}
+ : MessageException(dynamic_cast<const std::ostringstream&>(oss).str()), _fname(fname), _lineno(lineno) {}
- virtual ~SubfontException () throw() {}
+ virtual ~SubfontException () throw() =default;
const char* filename () const {return _fname.c_str();}
int lineno () const {return _lineno;}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/System.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/System.cpp
index dfb7d7ed04d..30af5e0aa00 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/System.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/System.cpp
@@ -2,7 +2,7 @@
** System.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,7 +20,7 @@
#include <config.h>
#include <ctime>
-#include "System.h"
+#include "System.hpp"
#if defined (HAVE_SYS_TIME_H)
#include <sys/time.h>
@@ -47,4 +47,3 @@ double System::time () {
return double(myclock)/CLOCKS_PER_SEC;
#endif
}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/System.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/System.hpp
index 2556e44ed95..19f89f7074f 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/System.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/System.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** System.h **
+** System.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_SYSTEM_H
-#define DVISVGM_SYSTEM_H
+#ifndef SYSTEM_HPP
+#define SYSTEM_HPP
namespace System
{
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.cpp
index 66042f70263..94901437c7a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.cpp
@@ -2,7 +2,7 @@
** TFM.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -21,11 +21,11 @@
#include <config.h>
#include <fstream>
#include <vector>
-#include "FileFinder.h"
-#include "Length.h"
-#include "Message.h"
-#include "StreamReader.h"
-#include "TFM.h"
+#include "FileFinder.hpp"
+#include "Length.hpp"
+#include "Message.hpp"
+#include "StreamReader.hpp"
+#include "TFM.hpp"
using namespace std;
@@ -43,29 +43,23 @@ static void read_words (StreamReader &reader, vector<T> &v, unsigned n) {
}
-/** Converts a TFM fix point value to double. */
-static inline double fix2double (FixWord fix) {
- return double(fix)/(1 << 20);
-}
-
-
-TFM::TFM (istream &is) : _checksum(0), _firstChar(0), _lastChar(0), _designSize(0) {
+TFM::TFM (istream &is) : _checksum(0), _firstChar(0), _lastChar(0), _designSize(0), _ascent(0), _descent(0) {
if (!is)
return;
is.seekg(0);
StreamReader reader(is);
- UInt16 lf = UInt16(reader.readUnsigned(2)); // length of entire file in 4 byte words
- UInt16 lh = UInt16(reader.readUnsigned(2)); // length of header in 4 byte words
- _firstChar= UInt16(reader.readUnsigned(2)); // smallest character code in font
- _lastChar = UInt16(reader.readUnsigned(2)); // largest character code in font
- UInt16 nw = UInt16(reader.readUnsigned(2)); // number of words in width table
- UInt16 nh = UInt16(reader.readUnsigned(2)); // number of words in height table
- UInt16 nd = UInt16(reader.readUnsigned(2)); // number of words in depth table
- UInt16 ni = UInt16(reader.readUnsigned(2)); // number of words in italic corr. table
- UInt16 nl = UInt16(reader.readUnsigned(2)); // number of words in lig/kern table
- UInt16 nk = UInt16(reader.readUnsigned(2)); // number of words in kern table
- UInt16 ne = UInt16(reader.readUnsigned(2)); // number of words in ext. char table
- UInt16 np = UInt16(reader.readUnsigned(2)); // number of font parameter words
+ uint16_t lf = uint16_t(reader.readUnsigned(2)); // length of entire file in 4 byte words
+ uint16_t lh = uint16_t(reader.readUnsigned(2)); // length of header in 4 byte words
+ _firstChar= uint16_t(reader.readUnsigned(2)); // smallest character code in font
+ _lastChar = uint16_t(reader.readUnsigned(2)); // largest character code in font
+ uint16_t nw = uint16_t(reader.readUnsigned(2)); // number of words in width table
+ uint16_t nh = uint16_t(reader.readUnsigned(2)); // number of words in height table
+ uint16_t nd = uint16_t(reader.readUnsigned(2)); // number of words in depth table
+ uint16_t ni = uint16_t(reader.readUnsigned(2)); // number of words in italic corr. table
+ uint16_t nl = uint16_t(reader.readUnsigned(2)); // number of words in lig/kern table
+ uint16_t nk = uint16_t(reader.readUnsigned(2)); // number of words in kern table
+ uint16_t ne = uint16_t(reader.readUnsigned(2)); // number of words in ext. char table
+ uint16_t np = uint16_t(reader.readUnsigned(2)); // number of font parameter words
if (6+lh+(_lastChar-_firstChar+1)+nw+nh+nd+ni+nl+nk+ne+np != lf)
throw FontMetricException("inconsistent length values");
@@ -82,7 +76,7 @@ TFM::TFM (istream &is) : _checksum(0), _firstChar(0), _lastChar(0), _designSize(
void TFM::readHeader (StreamReader &reader) {
_checksum = reader.readUnsigned(4);
- _designSize = fix2double(reader.readUnsigned(4))*Length::pt2bp;
+ _designSize = double(FixWord(reader.readUnsigned(4)))*Length::pt2bp;
}
@@ -92,6 +86,10 @@ void TFM::readTables (StreamReader &reader, int nw, int nh, int nd, int ni) {
read_words(reader, _heightTable, nh);
read_words(reader, _depthTable, nd);
read_words(reader, _italicTable, ni);
+ for (FixWord h : _heightTable)
+ _ascent = max(_ascent, h);
+ for (FixWord d : _depthTable)
+ _descent = max(_descent, d);
}
@@ -110,25 +108,27 @@ void TFM::readParameters (StreamReader &reader, int np) {
/** Returns the optimal space width between words (in PS point units). */
double TFM::getSpace () const {
- return _params.empty() ? 0 : fix2double(_params[1])*_designSize;
+ return _params.empty() ? 0 : double(_params[1])*_designSize;
}
/** Returns the amount of glue stretching between words (in PS point units). */
double TFM::getSpaceStretch () const {
- return _params.empty() ? 0 : fix2double(_params[2])*_designSize;
+ return _params.empty() ? 0 : double(_params[2])*_designSize;
}
/** Returns the amount of glue shrinking between words (in PS point units). */
double TFM::getSpaceShrink () const {
- return _params.empty() ? 0 : fix2double(_params[3])*_designSize;
+ return _params.empty() ? 0 : double(_params[3])*_designSize;
}
/** Returns the size of one EM unit (in PS point units). */
double TFM::getQuad () const {
- return _params.empty() ? 0 : fix2double(_params[5])*_designSize;
+ if (_params.empty() || _params[5] == 0)
+ return _designSize;
+ return double(_params[5])*_designSize;
}
@@ -156,7 +156,7 @@ double TFM::getCharWidth (int c) const {
if (index < 0)
return 0;
index = (_charInfoTable[index] >> 24) & 0xFF;
- return fix2double(_widthTable[index]) * _designSize;
+ return double(_widthTable[index]) * _designSize;
}
@@ -166,7 +166,7 @@ double TFM::getCharHeight (int c) const {
if (index < 0)
return 0;
index = (_charInfoTable[index] >> 20) & 0x0F;
- return fix2double(_heightTable[index]) * _designSize;
+ return double(_heightTable[index]) * _designSize;
}
@@ -176,7 +176,7 @@ double TFM::getCharDepth (int c) const {
if (index < 0)
return 0;
index = (_charInfoTable[index] >> 16) & 0x0F;
- return fix2double(_depthTable[index]) * _designSize;
+ return double(_depthTable[index]) * _designSize;
}
@@ -186,5 +186,5 @@ double TFM::getItalicCorr (int c) const {
if (index < 0)
return 0;
index = (_charInfoTable[index] >> 10) & 0x3F;
- return fix2double(_italicTable[index]) * _designSize;
+ return double(_italicTable[index]) * _designSize;
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.hpp
index d4136f20d17..495b051eb89 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/TFM.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** TFM.h **
+** TFM.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,15 +18,15 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_TFM_H
-#define DVISVGM_TFM_H
+#ifndef TFM_HPP
+#define TFM_HPP
#include <istream>
#include <string>
#include <vector>
-#include "FontMetrics.h"
-#include "types.h"
-#include "StreamReader.h"
+#include "FixWord.hpp"
+#include "FontMetrics.hpp"
+#include "StreamReader.hpp"
class StreamReader;
@@ -34,19 +34,21 @@ class TFM : public FontMetrics
{
public:
TFM (std::istream &is);
- double getCharWidth (int c) const;
- double getCharHeight (int c) const;
- double getCharDepth (int c) const;
- double getItalicCorr (int c) const;
- double getDesignSize () const {return _designSize;}
- double getSpace () const;
- double getSpaceStretch () const;
- double getSpaceShrink () const;
- double getQuad () const;
- bool verticalLayout () const {return false;}
- UInt32 getChecksum () const {return _checksum;}
- UInt16 firstChar () const {return _firstChar;}
- UInt16 lastChar () const {return _lastChar;}
+ double getCharWidth (int c) const override;
+ double getCharHeight (int c) const override;
+ double getCharDepth (int c) const override;
+ double getItalicCorr (int c) const override;
+ double getDesignSize () const override {return _designSize;}
+ double getSpace () const override;
+ double getSpaceStretch () const override;
+ double getSpaceShrink () const override;
+ double getQuad () const override;
+ double getAscent () const override {return double(_ascent)*_designSize;}
+ double getDescent () const override {return double(_descent)*_designSize;}
+ bool verticalLayout () const override {return false;}
+ uint32_t getChecksum () const override {return _checksum;}
+ uint16_t firstChar () const override {return _firstChar;}
+ uint16_t lastChar () const override {return _lastChar;}
protected:
TFM () : _checksum(0), _firstChar(0), _lastChar(0), _designSize(0), _params(7) {}
@@ -57,15 +59,16 @@ class TFM : public FontMetrics
void setCharRange (int firstchar, int lastchar) {_firstChar=firstchar; _lastChar=lastchar;}
private:
- UInt32 _checksum;
- UInt16 _firstChar, _lastChar;
+ uint32_t _checksum;
+ uint16_t _firstChar, _lastChar;
double _designSize; ///< design size of the font in PS points (72bp = 1in)
- std::vector<UInt32> _charInfoTable;
+ std::vector<uint32_t> _charInfoTable;
std::vector<FixWord> _widthTable; ///< character widths in design size units
std::vector<FixWord> _heightTable; ///< character height in design size units
std::vector<FixWord> _depthTable; ///< character depth in design size units
std::vector<FixWord> _italicTable; ///< italic corrections in design size units
std::vector<FixWord> _params; ///< values of the TFM's param section
+ FixWord _ascent, _descent; ///< max. height and depth
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/TensorProductPatch.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/TensorProductPatch.cpp
index e3eb030d58d..89ee6174233 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/TensorProductPatch.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/TensorProductPatch.cpp
@@ -2,7 +2,7 @@
** TensorProductPatch.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,7 +19,7 @@
*************************************************************************/
#include <valarray>
-#include "TensorProductPatch.h"
+#include "TensorProductPatch.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/TensorProductPatch.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/TensorProductPatch.hpp
index 6b766dae0e7..c9d2818fc25 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/TensorProductPatch.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/TensorProductPatch.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** TensorProductPatch.h **
+** TensorProductPatch.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,17 +18,17 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef TENSORPRODUCTPATCH_H
-#define TENSORPRODUCTPATCH_H
+#ifndef TENSORPRODUCTPATCH_HPP
+#define TENSORPRODUCTPATCH_HPP
#include <map>
#include <ostream>
#include <vector>
-#include "Bezier.h"
-#include "Color.h"
-#include "MessageException.h"
-#include "Pair.h"
-#include "ShadingPatch.h"
+#include "Bezier.hpp"
+#include "Color.hpp"
+#include "MessageException.hpp"
+#include "Pair.hpp"
+#include "ShadingPatch.hpp"
/** This class represents a single tensor product patch P which is defined by 16 control points
@@ -41,26 +41,26 @@ class TensorProductPatch : public ShadingPatch
friend class CoonsPatch;
public:
- TensorProductPatch () : ShadingPatch(Color::RGB_SPACE) {}
+ TensorProductPatch () : ShadingPatch(Color::ColorSpace::RGB) {}
TensorProductPatch (Color::ColorSpace cspace) : ShadingPatch(cspace) {}
TensorProductPatch (const PointVec &points, const ColorVec &colors, Color::ColorSpace cspace, int edgeflag, TensorProductPatch *patch);
- int psShadingType() const {return 7;}
+ int psShadingType() const override {return 7;}
void setPoints (const DPair points[4][4], int edgeflag, TensorProductPatch *patch);
- void setPoints (const PointVec &points, int edgeflag, ShadingPatch *patch);
- void setColors (const ColorVec &colors, int edgeflag, ShadingPatch *patch);
+ void setPoints (const PointVec &points, int edgeflag, ShadingPatch *patch) override;
+ void setColors (const ColorVec &colors, int edgeflag, ShadingPatch *patch) override;
virtual DPair valueAt (double u, double v) const;
Color colorAt (double u, double v) const;
- Color averageColor () const;
+ Color averageColor () const override;
void horizontalCurve (double v, Bezier &bezier) const;
void verticalCurve (double u, Bezier &bezier) const;
- void getBoundaryPath (GraphicsPath<double> &path) const;
+ void getBoundaryPath (GraphicsPath<double> &path) const override;
void subpatch (double u1, double u2, double v1, double v2, TensorProductPatch &patch) const;
DPair blossomValue (double u1, double u2, double u3, double v1, double v2, double v3) const;
DPair blossomValue (double u[3], double v[3]) const {return blossomValue(u[0], u[1], u[2], v[0], v[1], v[2]);}
- void approximate (int gridsize, bool overlap, double delta, Callback &callback) const;
- void getBBox (BoundingBox &bbox) const;
- int numPoints (int edgeflag) const {return edgeflag == 0 ? 16 : 12;}
- int numColors (int edgeflag) const {return edgeflag == 0 ? 4 : 2;}
+ void approximate (int gridsize, bool overlap, double delta, Callback &callback) const override;
+ void getBBox (BoundingBox &bbox) const override;
+ int numPoints (int edgeflag) const override {return edgeflag == 0 ? 16 : 12;}
+ int numColors (int edgeflag) const override {return edgeflag == 0 ? 4 : 2;}
protected:
Color averageColor (const Color &c1, const Color &c2, const Color &c3, const Color &c4) const;
@@ -84,12 +84,12 @@ class CoonsPatch : public TensorProductPatch
CoonsPatch () {}
CoonsPatch (Color::ColorSpace cspace) : TensorProductPatch(cspace) {}
CoonsPatch (const PointVec &points, const ColorVec &colors, Color::ColorSpace cspace, int edgeflag, CoonsPatch *patch);
- int psShadingType() const {return 6;}
- virtual void setPoints (const PointVec &points, int edgeflag, ShadingPatch *patch);
- virtual void setColors (const ColorVec &colors, int edgeflag, ShadingPatch *patch);
- virtual DPair valueAt (double u, double v) const;
- int numPoints (int edgeflag) const {return edgeflag == 0 ? 12 : 8;}
- int numColors (int edgeflag) const {return edgeflag == 0 ? 4 : 2;}
+ int psShadingType() const override {return 6;}
+ virtual void setPoints (const PointVec &points, int edgeflag, ShadingPatch *patch) override;
+ virtual void setColors (const ColorVec &colors, int edgeflag, ShadingPatch *patch) override;
+ virtual DPair valueAt (double u, double v) const override;
+ int numPoints (int edgeflag) const override {return edgeflag == 0 ? 12 : 8;}
+ int numColors (int edgeflag) const override {return edgeflag == 0 ? 4 : 2;}
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Terminal.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Terminal.cpp
index c3527046585..32ebf3a35f8 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Terminal.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Terminal.cpp
@@ -2,7 +2,7 @@
** Terminal.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,7 +19,7 @@
*************************************************************************/
#include <config.h>
-#include "Terminal.h"
+#include "Terminal.hpp"
#ifdef HAVE_TERMIOS_H
#include <termios.h>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Terminal.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Terminal.hpp
index 1beeb6f1558..ea8f67e42d1 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Terminal.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Terminal.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Terminal.h **
+** Terminal.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_TERMINAL_H
-#define DVISVGM_TERMINAL_H
+#ifndef TERMINAL_HPP
+#define TERMINAL_HPP
#include <ostream>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/ToUnicodeMap.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/ToUnicodeMap.cpp
index 3e8a80fc7a0..752b8517fa0 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/ToUnicodeMap.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/ToUnicodeMap.cpp
@@ -2,7 +2,7 @@
** ToUnicodeMap.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,8 +19,8 @@
*************************************************************************/
#include <limits>
-#include "ToUnicodeMap.h"
-#include "Unicode.h"
+#include "ToUnicodeMap.hpp"
+#include "Unicode.hpp"
using namespace std;
@@ -32,10 +32,10 @@ using namespace std;
* characters are numbered from 1 to maxIndex.
* @param[in] maxIndex largest character index to consider
* @return true on success */
-bool ToUnicodeMap::addMissingMappings (UInt32 maxIndex) {
+bool ToUnicodeMap::addMissingMappings (uint32_t maxIndex) {
bool success=true;
// collect Unicode points already in assigned
- NumericRanges<UInt32> codepoints;
+ NumericRanges<uint32_t> codepoints;
for (size_t i=0; i < size() && success; i++)
codepoints.addRange(rangeAt(i).minval(), rangeAt(i).maxval());
// fill unmapped ranges
@@ -57,13 +57,13 @@ bool ToUnicodeMap::addMissingMappings (UInt32 maxIndex) {
* @param[in] used_codepoints codepoints already in use
* @param[in] ascending if true, increase ucp to look for valid/unused codepoints
* @return true on success */
-static bool fix_codepoint (UInt32 &ucp, const NumericRanges<UInt32> &used_codepoints, bool ascending) {
- UInt32 start = ucp;
+static bool fix_codepoint (uint32_t &ucp, const NumericRanges<uint32_t> &used_codepoints, bool ascending) {
+ uint32_t start = ucp;
while (!Unicode::isValidCodepoint(ucp) && used_codepoints.valueExists(ucp)) {
if (ascending)
- ucp = (ucp == numeric_limits<UInt32>::max()) ? 0 : ucp+1;
+ ucp = (ucp == numeric_limits<uint32_t>::max()) ? 0 : ucp+1;
else
- ucp = (ucp == 0) ? numeric_limits<UInt32>::max() : ucp-1;
+ ucp = (ucp == 0) ? numeric_limits<uint32_t>::max() : ucp-1;
if (ucp == start) // no free Unicode point found
return false;
}
@@ -71,8 +71,8 @@ static bool fix_codepoint (UInt32 &ucp, const NumericRanges<UInt32> &used_codepo
}
-static bool is_less_or_equal (UInt32 a, UInt32 b) {return a <= b;}
-static bool is_greater_or_equal (UInt32 a, UInt32 b) {return a >= b;}
+static bool is_less_or_equal (uint32_t a, uint32_t b) {return a <= b;}
+static bool is_greater_or_equal (uint32_t a, uint32_t b) {return a >= b;}
/** Adds index to Unicode mappings for a given range of character indexes.
@@ -82,17 +82,17 @@ static bool is_greater_or_equal (UInt32 a, UInt32 b) {return a >= b;}
* @param[in,out] used_ucps Unicode points already in use
* @param[in] ascending if true, fill range from lower to upper bound
* @return true on success */
-bool ToUnicodeMap::fillRange (UInt32 minIndex, UInt32 maxIndex, UInt32 ucp, NumericRanges<UInt32> &used_ucps, bool ascending) {
+bool ToUnicodeMap::fillRange (uint32_t minIndex, uint32_t maxIndex, uint32_t ucp, NumericRanges<uint32_t> &used_ucps, bool ascending) {
if (minIndex <= maxIndex) {
- UInt32 first=minIndex, last=maxIndex;
+ uint32_t first=minIndex, last=maxIndex;
int inc=1;
- bool (*cmp)(UInt32, UInt32) = is_less_or_equal;
+ bool (*cmp)(uint32_t, uint32_t) = is_less_or_equal;
if (!ascending) {
swap(first, last);
inc = -1;
cmp = is_greater_or_equal;
}
- for (UInt32 i=first; cmp(i, last); i += inc) {
+ for (uint32_t i=first; cmp(i, last); i += inc) {
if (!fix_codepoint(ucp, used_ucps, ascending))
return false;
else {
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/ToUnicodeMap.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/ToUnicodeMap.hpp
index dd8b5f8d67f..f8ffe3bace9 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/ToUnicodeMap.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/ToUnicodeMap.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** ToUnicodeMap.h **
+** ToUnicodeMap.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,21 +18,21 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef TOUNICODEMAP_H
-#define TOUNICODEMAP_H
+#ifndef TOUNICODEMAP_HPP
+#define TOUNICODEMAP_HPP
-#include "NumericRanges.h"
-#include "RangeMap.h"
+#include "NumericRanges.hpp"
+#include "RangeMap.hpp"
/** Represents a mapping from character indexes to unicode points. */
class ToUnicodeMap : public RangeMap
{
public:
- bool addMissingMappings (UInt32 maxIndex);
+ bool addMissingMappings (uint32_t maxIndex);
protected:
- bool fillRange (UInt32 minIndex, UInt32 maxIndex, UInt32 ucp, NumericRanges<UInt32> &used_ucps, bool ascending);
+ bool fillRange (uint32_t minIndex, uint32_t maxIndex, uint32_t ucp, NumericRanges<uint32_t> &used_ucps, bool ascending);
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.cpp
index 60d877df45a..6e1fcb62940 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.cpp
@@ -2,7 +2,7 @@
** TpicSpecialHandler.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -23,13 +23,13 @@
#include <cmath>
#include <cstring>
#include <sstream>
-#include "Color.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "GraphicsPath.h"
-#include "SpecialActions.h"
-#include "SVGTree.h"
-#include "TpicSpecialHandler.h"
+#include "Color.hpp"
+#include "InputBuffer.hpp"
+#include "InputReader.hpp"
+#include "GraphicsPath.hpp"
+#include "SpecialActions.hpp"
+#include "SVGTree.hpp"
+#include "TpicSpecialHandler.hpp"
using namespace std;
@@ -86,7 +86,7 @@ void TpicSpecialHandler::drawLines (bool stroke, bool fill, double ddist, Specia
elem->addAttribute("fill", fill ? color.svgColorString() : "none");
}
ostringstream oss;
- FORALL(_points, vector<DPair>::iterator, it) {
+ for (auto it=_points.begin(); it != _points.end(); ++it) {
if (it != _points.begin())
oss << ' ';
double x = it->x()+actions.getX();
@@ -240,7 +240,9 @@ void TpicSpecialHandler::drawArc (double cx, double cy, double rx, double ry, do
}
-#define cmd_id(c1,c2) ((c1 << 8) | c2)
+static constexpr int cmd_id (int a, int b) {
+ return (a << 8) | b;
+};
bool TpicSpecialHandler::process (const char *prefix, istream &is, SpecialActions &actions) {
if (!prefix || strlen(prefix) != 2)
@@ -248,10 +250,10 @@ bool TpicSpecialHandler::process (const char *prefix, istream &is, SpecialAction
const double mi2bp=0.072; // factor for milli-inch to PS points
StreamInputBuffer ib(is);
- BufferInputReader in(ib);
+ BufferInputReader ir(ib);
switch (cmd_id(prefix[0], prefix[1])) {
case cmd_id('p','n'): // set pen width in milli-inches
- _penwidth = in.getDouble()*mi2bp;
+ _penwidth = ir.getDouble()*mi2bp;
break;
case cmd_id('b','k'): // set fill color to black
_fill = 0;
@@ -260,15 +262,15 @@ bool TpicSpecialHandler::process (const char *prefix, istream &is, SpecialAction
_fill = 1;
break;
case cmd_id('s','h'): // set fill color to given gray level
- in.skipSpace();
- _fill = in.eof() ? 0.5 : max(0.0, min(1.0, in.getDouble()));
+ ir.skipSpace();
+ _fill = ir.eof() ? 0.5 : max(0.0, min(1.0, ir.getDouble()));
break;
case cmd_id('t','x'): // set fill pattern
break;
case cmd_id('p','a'): { // add point to path
- double x = in.getDouble()*mi2bp;
- double y = in.getDouble()*mi2bp;
- _points.push_back(DPair(x,y));
+ double x = ir.getDouble()*mi2bp;
+ double y = ir.getDouble()*mi2bp;
+ _points.emplace_back(DPair(x,y));
break;
}
case cmd_id('f','p'): // draw solid lines through recorded points; close and fill path if fill color was defined
@@ -278,33 +280,33 @@ bool TpicSpecialHandler::process (const char *prefix, istream &is, SpecialAction
drawLines(false, true, 0, actions);
break;
case cmd_id('d','a'): // as fp but draw dashed lines
- drawLines(true, _fill >= 0, in.getDouble()*72, actions);
+ drawLines(true, _fill >= 0, ir.getDouble()*72, actions);
break;
case cmd_id('d','t'): // as fp but draw dotted lines
- drawLines(true, _fill >= 0, -in.getDouble()*72, actions);
+ drawLines(true, _fill >= 0, -ir.getDouble()*72, actions);
break;
case cmd_id('s','p'): { // draw quadratic splines through recorded points
- double ddist = in.getDouble();
+ double ddist = ir.getDouble();
drawSplines(ddist, actions);
break;
}
case cmd_id('a','r'): { // draw elliptical arc
- double cx = in.getDouble()*mi2bp;
- double cy = in.getDouble()*mi2bp;
- double rx = in.getDouble()*mi2bp;
- double ry = in.getDouble()*mi2bp;
- double a1 = in.getDouble();
- double a2 = in.getDouble();
+ double cx = ir.getDouble()*mi2bp;
+ double cy = ir.getDouble()*mi2bp;
+ double rx = ir.getDouble()*mi2bp;
+ double ry = ir.getDouble()*mi2bp;
+ double a1 = ir.getDouble();
+ double a2 = ir.getDouble();
drawArc(cx, cy, rx, ry, a1, a2, actions);
break;
}
case cmd_id('i','a'): { // fill elliptical arc
- double cx = in.getDouble()*mi2bp;
- double cy = in.getDouble()*mi2bp;
- double rx = in.getDouble()*mi2bp;
- double ry = in.getDouble()*mi2bp;
- double a1 = in.getDouble();
- double a2 = in.getDouble();
+ double cx = ir.getDouble()*mi2bp;
+ double cy = ir.getDouble()*mi2bp;
+ double rx = ir.getDouble()*mi2bp;
+ double ry = ir.getDouble()*mi2bp;
+ double a1 = ir.getDouble();
+ double a2 = ir.getDouble();
if (_fill < 0)
_fill = 1;
drawArc(cx, cy, rx, ry, a1, a2, actions);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.hpp
index a9896cfdb07..ec2ff5d4cde 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** TpicSpecialHandler.h **
+** TpicSpecialHandler.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,24 +18,24 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_TPICSPECIALHANDLER_H
-#define DVISVGM_TPICSPECIALHANDLER_H
+#ifndef TPICSPECIALHANDLER_HPP
+#define TPICSPECIALHANDLER_HPP
#include <list>
-#include "Pair.h"
-#include "SpecialHandler.h"
+#include "Pair.hpp"
+#include "SpecialHandler.hpp"
class TpicSpecialHandler : public SpecialHandler, public DVIEndPageListener
{
public:
TpicSpecialHandler ();
- const char* info () const {return "TPIC specials";}
- const char* name () const {return "tpic";}
- const char** prefixes () const;
- bool process (const char *prefix, std::istream &is, SpecialActions &actions);
+ const char* info () const override {return "TPIC specials";}
+ const char* name () const override {return "tpic";}
+ const char** prefixes () const override;
+ bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
protected:
- void dviEndPage (unsigned pageno, SpecialActions &actions);
+ void dviEndPage (unsigned pageno, SpecialActions &actions) override;
void reset ();
void drawLines (bool stroke, bool fill, double ddist, SpecialActions &actions);
void drawSplines (double ddist, SpecialActions &actions);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/TriangularPatch.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/TriangularPatch.cpp
index 75bb69a27d6..7d38a5edfc8 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/TriangularPatch.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/TriangularPatch.cpp
@@ -2,7 +2,7 @@
** TriangularPatch.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,7 +18,7 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include "TriangularPatch.h"
+#include "TriangularPatch.hpp"
using namespace std;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/TriangularPatch.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/TriangularPatch.hpp
index e63c5cdfd41..c37f94d0f11 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/TriangularPatch.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/TriangularPatch.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** TriangularPatch.h **
+** TriangularPatch.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,12 +18,12 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_TRIANGULARPATCH_H
-#define DVISVGM_TRIANGULARPATCH_H
+#ifndef TRIANGULARPATCH_HPP
+#define TRIANGULARPATCH_HPP
-#include "Color.h"
-#include "Pair.h"
-#include "ShadingPatch.h"
+#include "Color.hpp"
+#include "Pair.hpp"
+#include "ShadingPatch.hpp"
class TriangularPatch : public ShadingPatch
{
@@ -31,19 +31,19 @@ class TriangularPatch : public ShadingPatch
TriangularPatch ();
TriangularPatch (Color::ColorSpace cspace) : ShadingPatch(cspace) {}
TriangularPatch (const PointVec &points, const ColorVec &colors, Color::ColorSpace cspace, int edgeflag, TriangularPatch *patch);
- int psShadingType() const {return 4;}
+ int psShadingType() const override {return 4;}
DPair valueAt (double u, double v) const;
Color colorAt (double u, double v) const;
- Color averageColor() const;
- void setPoints (const PointVec &points, int edgeflag, ShadingPatch *patch);
+ Color averageColor() const override;
+ void setPoints (const PointVec &points, int edgeflag, ShadingPatch *patch) override;
void setPoints (const DPair &p1, const DPair &p2, const DPair &p3);
- void setColors (const ColorVec &colors, int edgeflag, ShadingPatch *patch);
+ void setColors (const ColorVec &colors, int edgeflag, ShadingPatch *patch) override;
void setColors (const Color &c1, const Color &c2, const Color &c3);
- void approximate (int gridsize, bool overlap, double delta, Callback &listener) const;
- void getBBox (BoundingBox &bbox) const;
- void getBoundaryPath(GraphicsPath<double> &path) const;
- int numPoints (int edgeflag) const {return edgeflag == 0 ? 3 : 1;}
- int numColors (int edgeflag) const {return edgeflag == 0 ? 3 : 1;}
+ void approximate (int gridsize, bool overlap, double delta, Callback &listener) const override;
+ void getBBox (BoundingBox &bbox) const override;
+ void getBoundaryPath(GraphicsPath<double> &path) const override;
+ int numPoints (int edgeflag) const override {return edgeflag == 0 ? 3 : 1;}
+ int numColors (int edgeflag) const override {return edgeflag == 0 ? 3 : 1;}
protected:
Color averageColor (const Color &c1, const Color &c2, const Color &c3) const;
@@ -58,7 +58,7 @@ class LatticeTriangularPatch : public TriangularPatch
{
public:
LatticeTriangularPatch (Color::ColorSpace cspace) : TriangularPatch(cspace) {}
- int psShadingType() const {return 5;}
+ int psShadingType() const override {return 5;}
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Unicode.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Unicode.cpp
index 6a55fa2e246..efb6122e2a7 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Unicode.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Unicode.cpp
@@ -2,7 +2,7 @@
** Unicode.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,12 +18,13 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include <xxhash.h>
+#include <algorithm>
#include <cctype>
#include <cstddef>
#include <iomanip>
#include <sstream>
-#include "Unicode.h"
+#include <xxhash.h>
+#include "Unicode.hpp"
using namespace std;
@@ -31,18 +32,18 @@ using namespace std;
/** Returns true if c is a valid Unicode point in XML documents.
* XML version 1.0 doesn't allow various Unicode character references
* (&#1; for example). */
-bool Unicode::isValidCodepoint (UInt32 c) {
+bool Unicode::isValidCodepoint (uint32_t c) {
if ((c & 0xffff) == 0xfffe || (c & 0xffff) == 0xffff)
return false;
- UInt32 ranges[] = {
+ uint32_t ranges[] = {
0x0000, 0x0020, // basic control characters + space
0x007f, 0x009f, // use of control characters is discouraged by the XML standard
0x202a, 0x202e, // bidi control characters
0xd800, 0xdfff, // High Surrogates are not allowed in XML
0xfdd0, 0xfdef, // non-characters for internal use by applications
};
- for (size_t i=0; i < sizeof(ranges)/sizeof(UInt32) && c >= ranges[i]; i+=2)
+ for (size_t i=0; i < sizeof(ranges)/sizeof(uint32_t) && c >= ranges[i]; i+=2)
if (c <= ranges[i+1])
return false;
return true;
@@ -52,8 +53,8 @@ bool Unicode::isValidCodepoint (UInt32 c) {
/** Returns a valid Unicode point for the given character code. Character codes
* that are invalid code points because the XML standard forbids or discourages
* their usage, are mapped to the Private Use Zone U+E000-U+F8FF. */
-UInt32 Unicode::charToCodepoint (UInt32 c) {
- UInt32 ranges[] = {
+uint32_t Unicode::charToCodepoint (uint32_t c) {
+ uint32_t ranges[] = {
0x0000, 0x0020, 0xe000, // basic control characters + space
0x007f, 0x009f, 0xe021, // use of control characters is discouraged by the XML standard
0x202a, 0x202e, 0xe042, // bidi control characters
@@ -87,7 +88,7 @@ UInt32 Unicode::charToCodepoint (UInt32 c) {
/** Converts a Unicode point to a UTF-8 byte sequence.
* @param[in] cp code point
* @return utf8 sequence consisting of 1-4 bytes */
-string Unicode::utf8 (Int32 cp) {
+string Unicode::utf8 (int32_t cp) {
string utf8;
if (cp >= 0) {
if (cp < 0x80)
@@ -112,20 +113,16 @@ string Unicode::utf8 (Int32 cp) {
return utf8;
}
-#include "AGLTable.h"
-
-static inline bool is_hex_digit (char c) {
- return isdigit(c) || (c >= 'A' && c <= 'F');
-}
-
+#include "AGLTable.hpp"
/** Tries to extract the codepoint from AGL character names like "uni1234" or "u1234".
* Returns 0 if the given name doesn't satisfy the constraints.
* https://github.com/adobe-type-tools/agl-specification
* @param[in] name AGL character name
* @return the extracted codepoint or 0 on failure */
-static Int32 extract_codepoint_from_name (const string &name) {
+static int32_t extract_codepoint_from_name (const string &name) {
size_t offset=1;
+ auto is_hex_digit = [](char c) {return isdigit(c) || (c >= 'A' && c <= 'F');};
if (name.substr(0, 3) == "uni" && is_hex_digit(name[4]) && name.length() >= 7)
offset = 3;
else if (name[0] != 'u' || !is_hex_digit(name[1]) || name.length() < 5)
@@ -142,7 +139,7 @@ static Int32 extract_codepoint_from_name (const string &name) {
return 0;
if (offset == 3)
hexstr = hexstr.substr(0, 4);
- Int32 codepoint;
+ int32_t codepoint;
istringstream iss(hexstr);
iss >> hex >> codepoint;
if (!iss.fail() && (codepoint <= 0xD7FF || (codepoint >= 0xE000 && codepoint <= 0x10FFFF)))
@@ -172,21 +169,18 @@ static const char* get_suffix (const string &name) {
/** Returns the Unicode point for a given AGL character name.
* @param name AGL name of the character to look up
* @return codepoint of the character */
-Int32 Unicode::aglNameToCodepoint (const string &name) {
- if (Int32 cp = extract_codepoint_from_name(name))
+int32_t Unicode::aglNameToCodepoint (const string &name) {
+ if (int32_t cp = extract_codepoint_from_name(name))
return cp;
- UInt32 hash = XXH32(&name[0], name.length(), 0);
- int left=0;
- int right=sizeof(hash2unicode)/sizeof(Hash2Unicode)-1;
- while (left <= right) {
- int mid = left+(right-left)/2;
- if (hash == hash2unicode[mid].hash)
- return hash2unicode[mid].codepoint;
- if (hash < hash2unicode[mid].hash)
- right = mid-1;
- else
- left = mid+1;
- }
+ uint32_t hash = XXH32(&name[0], name.length(), 0);
+ const HashCodepointPair cmppair = {hash, 0};
+ auto it = lower_bound(hash2unicode.begin(), hash2unicode.end(), cmppair,
+ [](const HashCodepointPair &p1, const HashCodepointPair &p2) {
+ return p1.hash < p2.hash;
+ }
+ );
+ if (it != hash2unicode.end() && it->hash == hash)
+ return it->codepoint;
return 0;
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Unicode.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/Unicode.hpp
index 8b25b4193c1..b44ed6e1a67 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Unicode.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Unicode.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** Unicode.h **
+** Unicode.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,18 +18,17 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_UNICODE_H
-#define DVISVGM_UNICODE_H
+#ifndef UNICODE_HPP
+#define UNICODE_HPP
#include <string>
-#include "types.h"
struct Unicode
{
- static bool isValidCodepoint (UInt32 code);
- static UInt32 charToCodepoint (UInt32 c);
- static std::string utf8 (Int32 c);
- static Int32 aglNameToCodepoint (const std::string &name);
+ static bool isValidCodepoint (uint32_t code);
+ static uint32_t charToCodepoint (uint32_t c);
+ static std::string utf8 (int32_t c);
+ static int32_t aglNameToCodepoint (const std::string &name);
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFActions.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFActions.hpp
index 13add6d2e0d..d9816a12aa5 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFActions.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFActions.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** VFActions.h **
+** VFActions.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,21 +18,20 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_VFACTIONS_H
-#define DVISVGM_VFACTIONS_H
+#ifndef VFACTIONS_HPP
+#define VFACTIONS_HPP
#include <string>
#include <vector>
-#include "types.h"
struct VFActions
{
- virtual ~VFActions () {}
- virtual void preamble (std::string comment, UInt32 checksum, double dsize) {}
- virtual void postamble () {}
- virtual void defineVFFont (UInt32 fontnum, std::string path, std::string name, UInt32 checksum, double dsize, double ssize) {}
- virtual void defineVFChar (UInt32 c, std::vector<UInt8> *dvi) {}
+ virtual ~VFActions () =default;
+ virtual void vfPreamble (const std::string &comment, uint32_t checksum, double dsize) {}
+ virtual void vfPostamble () {}
+ virtual void defineVFFont (uint32_t fontnum, const std::string &path, const std::string &name, uint32_t checksum, double dsize, double ssize) {}
+ virtual void defineVFChar (uint32_t c, std::vector<uint8_t> &&dvi) {}
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp
index 3998b7146a1..f8a93932316 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp
@@ -2,7 +2,7 @@
** VFReader.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -20,20 +20,15 @@
#include <config.h>
#include <sstream>
-#include "Font.h"
-#include "Length.h"
-#include "VFActions.h"
-#include "VFReader.h"
+#include "FixWord.hpp"
+#include "Font.hpp"
+#include "Length.hpp"
+#include "VFActions.hpp"
+#include "VFReader.hpp"
using namespace std;
-/** Converts a TFM fix point value to double (PS point units). */
-static inline double fix2double (FixWord fix) {
- return double(fix)/(1 << 20)*Length::pt2bp;
-}
-
-
VFReader::VFReader (istream &is)
: StreamReader(is), _actions(0), _designSize(0) {
}
@@ -97,16 +92,12 @@ bool VFReader::executeAll () {
}
-/// Returns true if op indicates the preamble or a font definition
-static bool is_pre_or_fontdef (int op) {return op > 242;}
-static bool is_chardef (int op) {return op < 243;}
-
-
bool VFReader::executePreambleAndFontDefs () {
clearStream();
if (!isStreamValid())
return false;
seek(0); // move file pointer to first byte of the input stream
+ auto is_pre_or_fontdef = [](int op) {return op > 242;};
while (!eof() && executeCommand(is_pre_or_fontdef) > 242); // stop reading after last font definition
return true;
}
@@ -117,6 +108,7 @@ bool VFReader::executeCharDefs () {
if (!isStreamValid())
return false;
seek(0);
+ auto is_chardef = [](int op) {return op < 243;};
while (!eof() && executeCommand(is_chardef) < 243); // stop reading after last char definition
return true;
}
@@ -125,36 +117,36 @@ bool VFReader::executeCharDefs () {
/** Reads and executes DVI preamble command. */
void VFReader::cmdPre () {
- UInt32 i = readUnsigned(1); // identification number (should be 2)
- UInt32 k = readUnsigned(1); // length of following comment
+ uint32_t i = readUnsigned(1); // identification number (should be 2)
+ uint32_t k = readUnsigned(1); // length of following comment
string cmt = readString(k); // comment
- UInt32 cs = readUnsigned(4); // check sum to be compared with TFM cecksum
- UInt32 ds = readUnsigned(4); // design size (same as TFM design size) (fix_word)
- _designSize = fix2double(ds);
+ uint32_t cs = readUnsigned(4); // check sum to be compared with TFM cecksum
+ int32_t ds = readUnsigned(4); // design size (same as TFM design size) (fix_word)
+ _designSize = double(FixWord(ds))*Length::pt2bp;
if (i != 202)
throw VFException("invalid identification value in preamble");
if (_actions)
- _actions->preamble(cmt, cs, ds);
+ _actions->vfPreamble(cmt, cs, ds);
}
void VFReader::cmdPost () {
while ((readUnsigned(1)) == 248); // skip fill bytes
if (_actions)
- _actions->postamble();
+ _actions->vfPostamble();
}
void VFReader::cmdLongChar () {
- UInt32 pl = readUnsigned(4); // packet length (length of DVI subroutine)
+ uint32_t pl = readUnsigned(4); // packet length (length of DVI subroutine)
if (!_actions)
seek(8+pl, ios::cur); // skip remaining char definition bytes
else {
- UInt32 cc = readUnsigned(4); // character code
- readUnsigned(4); // character width from corresponding TFM file
- vector<UInt8> *dvi = new vector<UInt8>(pl); // DVI subroutine
- readBytes(pl, *dvi);
- _actions->defineVFChar(cc, dvi); // call template method for user actions
+ uint32_t cc = readUnsigned(4); // character code
+ readUnsigned(4); // equals character width from corresponding TFM file
+ vector<uint8_t> dvi(pl); // DVI subroutine
+ readBytes(pl, dvi);
+ _actions->defineVFChar(cc, std::move(dvi)); // call template method for user actions
}
}
@@ -163,29 +155,29 @@ void VFReader::cmdLongChar () {
* @param[in] pl packet length (length of DVI subroutine) */
void VFReader::cmdShortChar (int pl) {
if (!_actions)
- seek(4+pl, ios::cur); // skip char definition bytes
+ seek(4+pl, ios::cur); // skip char definition bytes
else {
- UInt32 cc = readUnsigned(1); // character code
+ uint32_t cc = readUnsigned(1); // character code
readUnsigned(3); // character width from corresponding TFM file
- vector<UInt8> *dvi = new vector<UInt8>(pl); // DVI subroutine
- readBytes(pl, *dvi);
- _actions->defineVFChar(cc, dvi); // call template method for user actions
+ vector<uint8_t> dvi(pl); // DVI subroutine
+ readBytes(pl, dvi);
+ _actions->defineVFChar(cc, std::move(dvi)); // call template method for user actions
}
}
void VFReader::cmdFontDef (int len) {
- UInt32 fontnum = readUnsigned(len); // font number
- UInt32 checksum = readUnsigned(4); // font checksum (to be compared with corresponding TFM checksum)
- UInt32 ssize = readUnsigned(4); // scaled size of font relative to design size (fix_word)
- UInt32 dsize = readUnsigned(4); // design size of font (same as TFM design size) (fix_word)
- UInt32 pathlen = readUnsigned(1); // length of font path
- UInt32 namelen = readUnsigned(1); // length of font name
+ uint32_t fontnum = readUnsigned(len); // font number
+ uint32_t checksum = readUnsigned(4); // font checksum (to be compared with corresponding TFM checksum)
+ uint32_t ssize = readUnsigned(4); // scaled size of font relative to design size (fix_word)
+ uint32_t dsize = readUnsigned(4); // design size of font (same as TFM design size) (fix_word)
+ uint32_t pathlen = readUnsigned(1); // length of font path
+ uint32_t namelen = readUnsigned(1); // length of font name
string fontpath = readString(pathlen);
string fontname = readString(namelen);
if (_actions) {
- double ss = fix2double(ssize);
- double ds = fix2double(dsize);
+ double ss = double(FixWord(ssize))*Length::pt2bp;
+ double ds = double(FixWord(dsize))*Length::pt2bp;
_actions->defineVFFont(fontnum, fontpath, fontname, checksum, ds, ss*_designSize);
}
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.hpp
index 2300493bc64..69664c43474 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** VFReader.h **
+** VFReader.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,12 +18,11 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_VFREADER_H
-#define DVISVGM_VFREADER_H
+#ifndef VFREADER_HPP
+#define VFREADER_HPP
-#include "MessageException.h"
-#include "StreamReader.h"
-#include "types.h"
+#include "MessageException.hpp"
+#include "StreamReader.hpp"
struct VFException : public MessageException
@@ -59,7 +58,7 @@ class VFReader : public StreamReader
private:
VFActions *_actions; ///< actions to execute when reading a VF command
- double _designSize; ///< design size of currently read VF
+ double _designSize; ///< design size of currently read VF in PS points
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorIterator.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorIterator.hpp
index 864fddf31bf..41837e90be3 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorIterator.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorIterator.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** VectorIterator.h **
+** VectorIterator.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,11 +18,11 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef VECTORITERATOR_H
-#define VECTORITERATOR_H
+#ifndef VECTORITERATOR_HPP
+#define VECTORITERATOR_HPP
#include <vector>
-#include "MessageException.h"
+#include "MessageException.hpp"
struct IteratorException : public MessageException
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.hpp
index a6bfeed562d..5b5512e59bf 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** VectorStream.h **
+** VectorStream.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_VECTORSTREAM_H
-#define DVISVGM_VECTORSTREAM_H
+#ifndef VECTORSTREAM_HPP
+#define VECTORSTREAM_HPP
#include <istream>
#include <vector>
@@ -31,17 +31,17 @@ class VectorStreamBuffer : public std::streambuf
VectorStreamBuffer (const std::vector<T> &v) : _begin(&v[0]), _end(&v[0]+v.size()), _curr(&v[0]) {}
protected:
- int_type underflow () {return _curr == _end ? traits_type::eof() : traits_type::to_int_type(*_curr);}
- int_type uflow() {return _curr == _end ? traits_type::eof() : traits_type::to_int_type(*_curr++);}
- std::streamsize showmanyc () {return _end-_curr;}
+ int_type underflow () override {return _curr == _end ? traits_type::eof() : traits_type::to_int_type(*_curr);}
+ int_type uflow() override {return _curr == _end ? traits_type::eof() : traits_type::to_int_type(*_curr++);}
+ std::streamsize showmanyc () override {return _end-_curr;}
- int_type pbackfail (int_type c) {
+ int_type pbackfail (int_type c) override {
if (_curr == _begin || (c != traits_type::eof() && c != _curr[-1]))
return traits_type::eof();
return traits_type::to_int_type(*--_curr);
}
- pos_type seekoff (off_type off, std::ios_base::seekdir dir, std::ios_base::openmode which=std::ios_base::in) {
+ pos_type seekoff (off_type off, std::ios_base::seekdir dir, std::ios_base::openmode which=std::ios_base::in) override {
switch (dir) {
case std::ios_base::cur:
_curr += off; break;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.cpp
index 6b43d717090..2b539924025 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.cpp
@@ -2,7 +2,7 @@
** XMLDocument.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -19,8 +19,7 @@
*************************************************************************/
#include <config.h>
-#include "macros.h"
-#include "XMLDocument.h"
+#include "XMLDocument.hpp"
using namespace std;
@@ -30,44 +29,32 @@ XMLDocument::XMLDocument (XMLElementNode *root)
}
-XMLDocument::~XMLDocument () {
- clear();
-}
-
-
void XMLDocument::clear () {
- delete _rootElement;
- _rootElement = 0;
- FORALL(_nodes, list<XMLNode*>::iterator, i)
- delete *i;
+ _rootElement.reset();
_nodes.clear();
}
void XMLDocument::append (XMLNode *node) {
- if (!node)
- return;
- if (XMLElementNode *newRoot = dynamic_cast<XMLElementNode*>(node)) {
- // there can only be one root element node in the document
- delete _rootElement; // so if there is already one...
- _rootElement = newRoot; // ...we replace it
+ if (node) {
+ if (XMLElementNode *newRoot = dynamic_cast<XMLElementNode*>(node))
+ _rootElement.reset(newRoot);
+ else
+ _nodes.emplace_back(unique_ptr<XMLNode>(node));
}
- else
- _nodes.push_back(node);
}
void XMLDocument::setRootNode (XMLElementNode *root) {
- delete _rootElement;
- _rootElement = root;
+ _rootElement.reset(root);
}
ostream& XMLDocument::write (ostream &os) const {
if (_rootElement) { // no root element => no output
os << "<?xml version='1.0' encoding='UTF-8'?>\n";
- FORALL(_nodes, list<XMLNode*>::const_iterator, i) {
- (*i)->write(os);
+ for (const auto &node : _nodes) {
+ node->write(os);
os << '\n';
}
_rootElement->write(os);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.hpp
index f31505ccd6c..d8590b8b35f 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** XMLDocument.h **
+** XMLDocument.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,25 +18,25 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_XMLDOCUMENT_H
-#define DVISVGM_XMLDOCUMENT_H
+#ifndef XMLDOCUMENT_HPP
+#define XMLDOCUMENT_HPP
-#include "XMLNode.h"
+#include <memory>
+#include "XMLNode.hpp"
class XMLDocument
{
public:
XMLDocument (XMLElementNode *root=0);
- ~XMLDocument ();
void clear ();
void append (XMLNode *node);
void setRootNode (XMLElementNode *root);
- const XMLElementNode* getRootElement () const {return _rootElement;}
+ const XMLElementNode* getRootElement () const {return _rootElement.get();}
std::ostream& write (std::ostream &os) const;
private:
- std::list<XMLNode*> _nodes;
- XMLElementNode *_rootElement;
+ std::list<std::unique_ptr<XMLNode>> _nodes;
+ std::unique_ptr<XMLElementNode> _rootElement;
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp
index ed12f9e1814..8e9b8a76469 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp
@@ -2,7 +2,7 @@
** XMLNode.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -22,9 +22,8 @@
#include <map>
#include <list>
#include <sstream>
-#include "macros.h"
-#include "XMLNode.h"
-#include "XMLString.h"
+#include "XMLNode.hpp"
+#include "XMLString.hpp"
using namespace std;
@@ -36,25 +35,14 @@ XMLElementNode::XMLElementNode (const string &n) : _name(n) {
XMLElementNode::XMLElementNode (const XMLElementNode &node)
: _name(node._name), _attributes(node._attributes)
{
- FORALL(node._children, ChildList::const_iterator, it)
- _children.push_back((*it)->clone());
-}
-
-
-XMLElementNode::~XMLElementNode () {
- while (!_children.empty()) {
- delete _children.back();
- _children.pop_back();
- }
+ for (const auto &child : node._children)
+ _children.emplace_back(unique_ptr<XMLNode>(child->clone()));
}
void XMLElementNode::clear () {
_attributes.clear();
- while (!_children.empty()) {
- delete _children.back();
- _children.pop_back();
- }
+ _children.clear();
}
@@ -73,21 +61,21 @@ void XMLElementNode::append (XMLNode *child) {
return;
XMLTextNode *textNode1 = dynamic_cast<XMLTextNode*>(child);
if (!textNode1 || _children.empty())
- _children.push_back(child);
+ _children.emplace_back(unique_ptr<XMLNode>(child));
else {
- if (XMLTextNode *textNode2 = dynamic_cast<XMLTextNode*>(_children.back()))
+ if (XMLTextNode *textNode2 = dynamic_cast<XMLTextNode*>(_children.back().get()))
textNode2->append(textNode1); // merge two consecutive text nodes
else
- _children.push_back(child);
+ _children.emplace_back(unique_ptr<XMLNode>(child));
}
}
void XMLElementNode::append (const string &str) {
- if (_children.empty() || !dynamic_cast<XMLTextNode*>(_children.back()))
- _children.push_back(new XMLTextNode(str));
+ if (_children.empty() || !dynamic_cast<XMLTextNode*>(_children.back().get()))
+ _children.emplace_back(unique_ptr<XMLNode>(new XMLTextNode(str)));
else
- static_cast<XMLTextNode*>(_children.back())->append(str);
+ static_cast<XMLTextNode*>(_children.back().get())->append(str);
}
@@ -96,12 +84,12 @@ void XMLElementNode::prepend (XMLNode *child) {
return;
XMLTextNode *textNode1 = dynamic_cast<XMLTextNode*>(child);
if (!textNode1 || _children.empty())
- _children.push_front(child);
+ _children.emplace_front(unique_ptr<XMLNode>(child));
else {
- if (XMLTextNode *textNode2 = dynamic_cast<XMLTextNode*>(_children.front()))
+ if (XMLTextNode *textNode2 = dynamic_cast<XMLTextNode*>(_children.front().get()))
textNode2->prepend(textNode1); // merge two consecutive text nodes
else
- _children.push_front(child);
+ _children.emplace_front(unique_ptr<XMLNode>(child));
}
}
@@ -114,11 +102,11 @@ void XMLElementNode::prepend (XMLNode *child) {
* @return true on success */
bool XMLElementNode::insertBefore (XMLNode *child, XMLNode *sibling) {
ChildList::iterator it = _children.begin();
- while (it != _children.end() && *it != sibling)
+ while (it != _children.end() && it->get() != sibling)
++it;
if (it == _children.end())
return false;
- _children.insert(it, child);
+ _children.emplace(it, unique_ptr<XMLNode>(child));
return true;
}
@@ -131,23 +119,31 @@ bool XMLElementNode::insertBefore (XMLNode *child, XMLNode *sibling) {
* @return true on success */
bool XMLElementNode::insertAfter (XMLNode *child, XMLNode *sibling) {
ChildList::iterator it = _children.begin();
- while (it != _children.end() && *it != sibling)
+ while (it != _children.end() && it->get() != sibling)
++it;
if (it == _children.end())
return false;
- _children.insert(++it, child);
+ _children.emplace(++it, unique_ptr<XMLNode>(child));
return true;
}
+/** Removes a given child from the element. */
+void XMLElementNode::remove (const XMLNode *child) {
+ _children.remove_if([=](const unique_ptr<XMLNode> &ptr) {
+ return ptr.get() == child;
+ });
+}
+
+
/** Gets all descendant elements with a given name and given attribute.
* @param[in] name name of elements to find
* @param[in] attrName name of attribute to find
* @param[out] descendants all elements found
* @return true if at least one element was found */
bool XMLElementNode::getDescendants (const char *name, const char *attrName, vector<XMLElementNode*> &descendants) const {
- FORALL(_children, ChildList::const_iterator, it) {
- if (XMLElementNode *elem = dynamic_cast<XMLElementNode*>(*it)) {
+ for (auto &child : _children) {
+ if (XMLElementNode *elem = dynamic_cast<XMLElementNode*>(child.get())) {
if ((!name || elem->getName() == name) && (!attrName || elem->hasAttribute(attrName)))
descendants.push_back(elem);
elem->getDescendants(name, attrName, descendants);
@@ -163,8 +159,8 @@ bool XMLElementNode::getDescendants (const char *name, const char *attrName, vec
* @param[in] attrValue if not 0, only elements with attribute attrName="attrValue" are considered
* @return pointer to the found element or 0 */
XMLElementNode* XMLElementNode::getFirstDescendant (const char *name, const char *attrName, const char *attrValue) const {
- FORALL(_children, ChildList::const_iterator, it) {
- if (XMLElementNode *elem = dynamic_cast<XMLElementNode*>(*it)) {
+ for (auto &child : _children) {
+ if (XMLElementNode *elem = dynamic_cast<XMLElementNode*>(child.get())) {
if (!name || elem->getName() == name) {
const char *value;
if (!attrName || (((value = elem->getAttributeValue(attrName)) != 0) && (!attrValue || string(value) == attrValue)))
@@ -180,21 +176,21 @@ XMLElementNode* XMLElementNode::getFirstDescendant (const char *name, const char
ostream& XMLElementNode::write (ostream &os) const {
os << '<' << _name;
- FORALL(_attributes, AttribMap::const_iterator, it)
- os << ' ' << it->first << "='" << it->second << '\'';
+ for (const auto &attrib : _attributes)
+ os << ' ' << attrib.first << "='" << attrib.second << '\'';
if (_children.empty())
os << "/>";
else {
os << '>';
// Insert newlines around children except text nodes. According to the
// SVG specification, pure whitespace nodes are ignored by the SVG renderer.
- if (!dynamic_cast<XMLTextNode*>(_children.front()))
+ if (!dynamic_cast<XMLTextNode*>(_children.front().get()))
os << '\n';
- FORALL(_children, ChildList::const_iterator, it) {
+ for (auto it=_children.begin(); it != _children.end(); ++it) {
(*it)->write(os);
- if (!dynamic_cast<XMLTextNode*>(*it)) {
- ChildList::const_iterator next=it;
- if (++next == _children.end() || !dynamic_cast<XMLTextNode*>(*next))
+ if (!dynamic_cast<XMLTextNode*>(it->get())) {
+ auto next=it;
+ if (++next == _children.end() || !dynamic_cast<XMLTextNode*>(next->get()))
os << '\n';
}
}
@@ -268,3 +264,9 @@ ostream& XMLCDataNode::write (ostream &os) const {
}
+void XMLCDataNode::append (string &&str) {
+ if (_data.empty())
+ _data = move(str);
+ else
+ _data += str;
+} \ No newline at end of file
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.hpp
index db45152dde9..698b4b43205 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** XMLNode.h **
+** XMLNode.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,11 +18,12 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_XMLNODE_H
-#define DVISVGM_XMLNODE_H
+#ifndef XMLNODE_HPP
+#define XMLNODE_HPP
#include <list>
#include <map>
+#include <memory>
#include <ostream>
#include <string>
#include <vector>
@@ -31,7 +32,7 @@
class XMLNode
{
public:
- virtual ~XMLNode () {}
+ virtual ~XMLNode () =default;
virtual XMLNode* clone () const =0;
virtual void clear () =0;
virtual std::ostream& write (std::ostream &os) const =0;
@@ -40,30 +41,31 @@ class XMLNode
class XMLElementNode : public XMLNode
{
- typedef std::map<std::string,std::string> AttribMap;
- typedef std::list<XMLNode*> ChildList;
+ public:
+ typedef std::map<std::string,std::string> AttribMap;
+ typedef std::list<std::unique_ptr<XMLNode>> ChildList;
+
public:
XMLElementNode (const std::string &name);
XMLElementNode (const XMLElementNode &node);
- ~XMLElementNode ();
- XMLElementNode* clone () const {return new XMLElementNode(*this);}
- void clear ();
+ XMLElementNode* clone () const override {return new XMLElementNode(*this);}
+ void clear () override;
void addAttribute (const std::string &name, const std::string &value);
void addAttribute (const std::string &name, double value);
void append (XMLNode *child);
void append (const std::string &str);
void prepend (XMLNode *child);
- void remove (XMLNode *child) {_children.remove(child);}
+ void remove (const XMLNode *child);
bool insertAfter (XMLNode *child, XMLNode *sibling);
bool insertBefore (XMLNode *child, XMLNode *sibling);
bool hasAttribute (const std::string &name) const;
const char* getAttributeValue (const std::string &name) const;
bool getDescendants (const char *name, const char *attrName, std::vector<XMLElementNode*> &descendants) const;
XMLElementNode* getFirstDescendant (const char *name, const char *attrName, const char *attrValue) const;
- std::ostream& write (std::ostream &os) const;
- bool empty () const {return _children.empty();}
- const std::list<XMLNode*>& children () const {return _children;}
- const std::string& getName () const {return _name;}
+ std::ostream& write (std::ostream &os) const override;
+ bool empty () const {return _children.empty();}
+ const ChildList& children () const {return _children;}
+ const std::string& getName () const {return _name;}
private:
std::string _name; // element name (<name a1="v1" .. an="vn">...</name>)
@@ -76,13 +78,14 @@ class XMLTextNode : public XMLNode
{
public:
XMLTextNode (const std::string &str) : _text(str) {}
- XMLTextNode* clone () const {return new XMLTextNode(*this);}
- void clear () {_text.clear();}
+ XMLTextNode (std::string &&str) : _text(std::move(str)) {}
+ XMLTextNode* clone () const override {return new XMLTextNode(*this);}
+ void clear () override {_text.clear();}
void append (XMLNode *node);
void append (XMLTextNode *node);
void append (const std::string &str);
void prepend (XMLNode *child);
- std::ostream& write (std::ostream &os) const {return os << _text;}
+ std::ostream& write (std::ostream &os) const override {return os << _text;}
const std::string& getText () const {return _text;}
private:
@@ -94,9 +97,10 @@ class XMLCommentNode : public XMLNode
{
public:
XMLCommentNode (const std::string &str) : _text(str) {}
- XMLCommentNode* clone () const {return new XMLCommentNode(*this);}
- void clear () {_text.clear();}
- std::ostream& write (std::ostream &os) const {return os << "<!--" << _text << "-->";}
+ XMLCommentNode (std::string &&str) : _text(std::move(str)) {}
+ XMLCommentNode* clone () const override {return new XMLCommentNode(*this);}
+ void clear () override {_text.clear();}
+ std::ostream& write (std::ostream &os) const override {return os << "<!--" << _text << "-->";}
private:
std::string _text;
@@ -106,10 +110,13 @@ class XMLCommentNode : public XMLNode
class XMLCDataNode : public XMLNode
{
public:
+ XMLCDataNode () {}
XMLCDataNode (const std::string &d) : _data(d) {}
- XMLCDataNode* clone () const {return new XMLCDataNode(*this);}
- void clear () {_data.clear();}
- std::ostream& write (std::ostream &os) const;
+ XMLCDataNode (std::string &&d) : _data(std::move(d)) {}
+ XMLCDataNode* clone () const override {return new XMLCDataNode(*this);}
+ void clear () override {_data.clear();}
+ void append (std::string &&str);
+ std::ostream& write (std::ostream &os) const override;
private:
std::string _data;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLString.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLString.cpp
index f6fc05dd04a..ed4e3f7e6a9 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLString.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLString.cpp
@@ -2,7 +2,7 @@
** XMLString.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -23,17 +23,15 @@
#include <cstdlib>
#include <iomanip>
#include <sstream>
-#include "macros.h"
-#include "types.h"
-#include "Unicode.h"
-#include "XMLString.h"
+#include "Unicode.hpp"
+#include "XMLString.hpp"
using namespace std;
int XMLString::DECIMAL_PLACES = 0;
-static string translate (UInt32 c) {
+static string translate (uint32_t c) {
switch (c) {
case '<' : return "&lt;";
case '&' : return "&amp;";
@@ -48,8 +46,8 @@ XMLString::XMLString (const string &str, bool plain) {
if (plain)
assign(str);
else {
- FORALL(str, string::const_iterator, i)
- *this += translate(*i);
+ for (char c : str)
+ *this += translate(c);
}
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLString.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLString.hpp
index 1828116e7c3..905d5413952 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLString.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLString.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** XMLString.h **
+** XMLString.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,8 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_XMLSTRING_H
-#define DVISVGM_XMLSTRING_H
+#ifndef XMLSTRING_HPP
+#define XMLSTRING_HPP
#include <string>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/ZLibOutputStream.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/ZLibOutputStream.hpp
new file mode 100644
index 00000000000..3f321625f3e
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/ZLibOutputStream.hpp
@@ -0,0 +1,120 @@
+/*************************************************************************
+** ZLibOutputStream.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef ZLIBOUTPUTSTREAM_HPP
+#define ZLIBOUTPUTSTREAM_HPP
+
+#include <ostream>
+#include <zlib.h>
+
+class ZLibOutputStream;
+
+class ZLibOutputBuffer : public std::streambuf
+{
+ friend class ZLibOutputStream;
+ public:
+ ~ZLibOutputBuffer () {close();}
+
+ /** Opens the buffer object for writing.
+ * @param[in] fname name of gzip file
+ * @param[in] zipLevel compression level (1-9)
+ * @return true on success */
+ bool open (const char *fname, int zipLevel) {
+ if (_opened)
+ return false;
+ zipLevel = std::max(1, std::min(9, zipLevel));
+ std::string modestr = "wb0";
+ modestr[2] += zipLevel;
+ _gzfile = gzopen(fname, modestr.c_str());
+ return _opened = (_gzfile != nullptr);
+ }
+
+ /** Closes the buffer object. */
+ bool close () {
+ if (!_opened)
+ return false;
+ sync();
+ _opened = false;
+ return gzclose(_gzfile) == Z_OK;
+ }
+
+ int overflow (int c) override {
+ if (!_opened)
+ return EOF;
+ if (c != EOF) {
+ *pptr() = c;
+ pbump(1);
+ }
+ return (flush() == EOF) ? EOF : c;
+ }
+
+ int sync () override {
+ return (pptr() && pptr() > pbase() && flush() == EOF) ? -1 : 0;
+ }
+
+ protected:
+ ZLibOutputBuffer () : _gzfile(nullptr), _opened(false) {
+ setp(_buffer, _buffer+SIZE-1);
+ }
+
+ /** Forces to write the buffer data to the output file. */
+ int flush () {
+ int w = pptr()-pbase();
+ if (gzwrite(_gzfile, pbase(), w) != w)
+ return EOF;
+ pbump(-w);
+ return w;
+ }
+
+ private:
+ static constexpr int SIZE = 512;
+ gzFile _gzfile;
+ char _buffer[SIZE];
+ bool _opened;
+};
+
+
+class ZLibOutputStream : public virtual std::ios, public std::ostream
+{
+ public:
+ ZLibOutputStream () : std::ostream(&_buf) {init(&_buf);}
+ ZLibOutputStream (const char *fname, int zipLevel) : ZLibOutputStream() {open(fname, zipLevel);}
+ ZLibOutputStream (const std::string &fname, int zipLevel) : ZLibOutputStream(fname.c_str(), zipLevel) {}
+ ~ZLibOutputStream () {close();}
+ ZLibOutputBuffer* rdbuf() {return &_buf;}
+
+ /** Opens the output stream for writing.
+ * @param[in] fname name of gzip file
+ * @param[in] zipLevel compression level (1-9) */
+ void open (const char *name, int zipLevel) {
+ if (!_buf.open(name, zipLevel))
+ clear(rdstate()|std::ios::badbit);
+ }
+
+ void close () {
+ if (!_buf.close())
+ clear(rdstate()|std::ios::badbit);
+ }
+
+ private:
+ ZLibOutputBuffer _buf;
+};
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp
index 03d6463cf33..3502a0f1004 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp
@@ -2,7 +2,7 @@
** dvisvgm.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,44 +18,40 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include <config.h>
#include <clipper.hpp>
#include <fstream>
#include <iostream>
#include <potracelib.h>
#include <sstream>
#include <xxhash.h>
-#include "gzstream.h"
-#include "CommandLine.h"
-#include "DVIToSVG.h"
-#include "DVIToSVGActions.h"
-#include "EPSToSVG.h"
-#include "FileFinder.h"
-#include "FileSystem.h"
-#include "Font.h"
-#include "FontEngine.h"
-#include "Ghostscript.h"
-#include "HtmlSpecialHandler.h"
-#include "Message.h"
-#include "PageSize.h"
-#include "PSInterpreter.h"
-#include "PsSpecialHandler.h"
-#include "SignalHandler.h"
-#include "SVGOutput.h"
-#include "System.h"
+#include <zlib.h>
+#include "CommandLine.hpp"
+#include "DVIToSVG.hpp"
+#include "DVIToSVGActions.hpp"
+#include "EPSToSVG.hpp"
+#include "FileFinder.hpp"
+#include "FileSystem.hpp"
+#include "Font.hpp"
+#include "FontEngine.hpp"
+#include "Ghostscript.hpp"
+#include "HtmlSpecialHandler.hpp"
+#include "Message.hpp"
+#include "PageSize.hpp"
+#include "PSInterpreter.hpp"
+#include "PsSpecialHandler.hpp"
+#include "SignalHandler.hpp"
+#include "SVGOutput.hpp"
+#include "System.hpp"
+#include "version.hpp"
+
+#ifndef DISABLE_WOFF
+#include "ffwrapper.h"
+#endif
using namespace std;
-
////////////////////////////////////////////////////////////////////////////////
-static void show_help (const CommandLine &cmd) {
- cout << PACKAGE_STRING "\n\n";
- cmd.help(cmd.help_arg());
- cout << "\nCopyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> \n\n";
-}
-
-
static string remove_path (string fname) {
fname = FileSystem::adaptPathSeperators(fname);
size_t slashpos = fname.rfind('/');
@@ -75,22 +71,22 @@ static string ensure_suffix (string fname, bool eps) {
static string get_transformation_string (const CommandLine &args) {
ostringstream oss;
- if (args.rotate_given())
- oss << 'R' << args.rotate_arg() << ",w/2,h/2";
- if (args.translate_given())
- oss << 'T' << args.translate_arg();
- if (args.scale_given())
- oss << 'S' << args.scale_arg();
- if (args.transform_given())
- oss << args.transform_arg();
+ if (args.rotateOpt.given())
+ oss << 'R' << args.rotateOpt.value() << ",w/2,h/2";
+ if (args.translateOpt.given())
+ oss << 'T' << args.translateOpt.value();
+ if (args.scaleOpt.given())
+ oss << 'S' << args.scaleOpt.value();
+ if (args.transformOpt.given())
+ oss << args.transformOpt.value();
return oss.str();
}
static void set_libgs (CommandLine &args) {
#if !defined(DISABLE_GS) && !defined(HAVE_LIBGS)
- if (args.libgs_given())
- Ghostscript::LIBGS_NAME = args.libgs_arg();
+ if (args.libgsOpt.given())
+ Ghostscript::LIBGS_NAME = args.libgsOpt.value();
else if (getenv("LIBGS"))
Ghostscript::LIBGS_NAME = getenv("LIBGS");
#endif
@@ -98,13 +94,13 @@ static void set_libgs (CommandLine &args) {
static bool set_cache_dir (const CommandLine &args) {
- if (args.cache_given() && !args.cache_arg().empty()) {
- if (args.cache_arg() == "none")
+ if (args.cacheOpt.given() && !args.cacheOpt.value().empty()) {
+ if (args.cacheOpt.value() == "none")
PhysicalFont::CACHE_PATH = 0;
- else if (FileSystem::exists(args.cache_arg()))
- PhysicalFont::CACHE_PATH = args.cache_arg().c_str();
+ else if (FileSystem::exists(args.cacheOpt.value()))
+ PhysicalFont::CACHE_PATH = args.cacheOpt.value().c_str();
else
- Message::wstream(true) << "cache directory '" << args.cache_arg() << "' does not exist (caching disabled)\n";
+ Message::wstream(true) << "cache directory '" << args.cacheOpt.value() << "' does not exist (caching disabled)\n";
}
else if (const char *userdir = FileSystem::userdir()) {
static string cachepath = userdir + string("/.dvisvgm/cache");
@@ -112,13 +108,13 @@ static bool set_cache_dir (const CommandLine &args) {
FileSystem::mkdir(cachepath);
PhysicalFont::CACHE_PATH = cachepath.c_str();
}
- if (args.cache_given() && args.cache_arg().empty()) {
+ if (args.cacheOpt.given() && args.cacheOpt.value().empty()) {
cout << "cache directory: " << (PhysicalFont::CACHE_PATH ? PhysicalFont::CACHE_PATH : "(none)") << '\n';
try {
FontCache::fontinfo(PhysicalFont::CACHE_PATH, cout, true);
}
catch (StreamReaderException &e) {
- Message::wstream(true) << "failed reading cache data";
+ Message::wstream(true) << "failed reading cache data\n";
}
return false;
}
@@ -126,6 +122,19 @@ static bool set_cache_dir (const CommandLine &args) {
}
+static bool set_temp_dir (const CommandLine &args) {
+ if (args.tmpdirOpt.given()) {
+ if (!args.tmpdirOpt.value().empty())
+ FileSystem::TMPDIR = args.tmpdirOpt.value().c_str();
+ else {
+ cout << "temporary folder: " << FileSystem::tmpdir() << '\n';
+ return false;
+ }
+ }
+ return true;
+}
+
+
static bool check_bbox (const string &bboxstr) {
const char *formats[] = {"none", "min", "preview", "papersize", "dvi", 0};
for (const char **p=formats; *p; ++p)
@@ -156,14 +165,17 @@ static bool check_bbox (const string &bboxstr) {
static void print_version (bool extended) {
ostringstream oss;
- oss << PACKAGE_STRING;
+ oss << "dvisvgm " << PROGRAM_VERSION;
if (extended) {
if (strlen(TARGET_SYSTEM) > 0)
oss << " (" TARGET_SYSTEM ")";
int len = oss.str().length();
oss << "\n" << string(len, '-') << "\n"
- "clipper: " << CLIPPER_VERSION "\n"
- "freetype: " << FontEngine::version() << "\n";
+ "clipper: " << CLIPPER_VERSION "\n";
+#ifndef DISABLE_WOFF
+ oss << "fontforge: " << ff_version() << '\n';
+#endif
+ oss << "freetype: " << FontEngine::version() << "\n";
Ghostscript gs;
string gsver = gs.revision(true);
@@ -172,9 +184,9 @@ static void print_version (bool extended) {
const unsigned xxh_ver = XXH_versionNumber();
oss <<
#ifdef MIKTEX
- "MiKTeX: " << FileFinder::version() << "\n"
+ "MiKTeX: " << FileFinder::instance().version() << "\n"
#else
- "kpathsea: " << FileFinder::version() << "\n"
+ "kpathsea: " << FileFinder::instance().version() << "\n"
#endif
"potrace: " << (strchr(potrace_version(), ' ') ? strchr(potrace_version(), ' ')+1 : "unknown") << "\n"
"xxhash: " << xxh_ver/10000 << '.' << (xxh_ver/100)%100 << '.' << xxh_ver%100 << "\n"
@@ -184,8 +196,8 @@ static void print_version (bool extended) {
}
-static void init_fontmap (const CommandLine &args) {
- const char *mapseq = args.fontmap_given() ? args.fontmap_arg().c_str() : 0;
+static void init_fontmap (const CommandLine &cmdline) {
+ const char *mapseq = cmdline.fontmapOpt.given() ? cmdline.fontmapOpt.value().c_str() : 0;
bool additional = mapseq && strchr("+-=", *mapseq);
if (!mapseq || additional) {
const char *mapfiles[] = {"ps2pk.map", "dvipdfm.map", "psfonts.map", 0};
@@ -193,119 +205,119 @@ static void init_fontmap (const CommandLine &args) {
for (const char **p=mapfiles; *p && !found; p++)
found = FontMap::instance().read(*p);
if (!found)
- Message::wstream(true) << "none of the default map files could be found";
+ Message::wstream(true) << "none of the default map files could be found\n";
}
if (mapseq)
FontMap::instance().read(mapseq);
}
-int main (int argc, char *argv[]) {
- CommandLine args;
- args.parse(argc, argv);
- if (args.error())
- return 1;
-
- if (argc == 1 || args.help_given()) {
- show_help(args);
- return 0;
+static void set_variables (const CommandLine &cmdline) {
+ Message::COLORIZE = cmdline.colorOpt.given();
+ if (cmdline.progressOpt.given()) {
+ DVIToSVG::COMPUTE_PROGRESS = true;
+ SpecialActions::PROGRESSBAR_DELAY = cmdline.progressOpt.value();
+ }
+ Color::SUPPRESS_COLOR_NAMES = !cmdline.colornamesOpt.given();
+ SVGTree::CREATE_CSS = !cmdline.noStylesOpt.given();
+ SVGTree::USE_FONTS = !cmdline.noFontsOpt.given();
+ if (!SVGTree::setFontFormat(cmdline.fontFormatOpt.value())) {
+ string msg = "unknown font format '"+cmdline.fontFormatOpt.value()+"' (supported formats: ";
+ ostringstream oss;
+ for (const string &format : FontWriter::supportedFormats())
+ oss << ", " << format;
+ msg += oss.str().substr(2) + ')';
+ throw CL::CommandLineException(msg);
}
+ SVGTree::CREATE_USE_ELEMENTS = cmdline.noFontsOpt.value() < 1;
+ SVGTree::ZOOM_FACTOR = cmdline.zoomOpt.value();
+ SVGTree::RELATIVE_PATH_CMDS = cmdline.relativeOpt.given();
+ SVGTree::MERGE_CHARS = !cmdline.noMergeOpt.given();
+ SVGTree::ADD_COMMENTS = cmdline.commentsOpt.given();
+ DVIToSVG::TRACE_MODE = cmdline.traceAllOpt.given() ? (cmdline.traceAllOpt.value() ? 'a' : 'm') : 0;
+ Message::LEVEL = cmdline.verbosityOpt.value();
+ PhysicalFont::EXACT_BBOX = cmdline.exactOpt.given();
+ PhysicalFont::KEEP_TEMP_FILES = cmdline.keepOpt.given();
+ PhysicalFont::METAFONT_MAG = max(1.0, cmdline.magOpt.value());
+ XMLString::DECIMAL_PLACES = max(0, min(6, cmdline.precisionOpt.value()));
+ PsSpecialHandler::COMPUTE_CLIPPATHS_INTERSECTIONS = cmdline.clipjoinOpt.given();
+ PsSpecialHandler::SHADING_SEGMENT_OVERLAP = cmdline.gradOverlapOpt.given();
+ PsSpecialHandler::SHADING_SEGMENT_SIZE = max(1, cmdline.gradSegmentsOpt.value());
+ PsSpecialHandler::SHADING_SIMPLIFY_DELTA = cmdline.gradSimplifyOpt.value();
+}
- Message::COLORIZE = args.color_given();
+int main (int argc, char *argv[]) {
+ CommandLine cmdline;
try {
- FileFinder::init(argv[0], "dvisvgm", !args.no_mktexmf_given());
+ cmdline.parse(argc, argv);
+ if (argc == 1 || cmdline.helpOpt.given()) {
+ cmdline.help(cout, cmdline.helpOpt.value());
+ return 0;
+ }
+ FileFinder::init(argv[0], "dvisvgm", !cmdline.noMktexmfOpt.given());
+ set_libgs(cmdline);
+ if (cmdline.versionOpt.given()) {
+ print_version(cmdline.versionOpt.value());
+ return 0;
+ }
+ if (cmdline.listSpecialsOpt.given()) {
+ DVIToSVG::setProcessSpecials();
+ SpecialManager::instance().writeHandlerInfo(cout);
+ return 0;
+ }
+ if (!set_cache_dir(cmdline) || !set_temp_dir(cmdline))
+ return 0;
+ if (cmdline.stdoutOpt.given() && cmdline.zipOpt.given()) {
+ Message::estream(true) << "writing SVGZ files to stdout is not supported\n";
+ return 1;
+ }
+ if (!check_bbox(cmdline.bboxOpt.value()))
+ return 1;
+ if (!HtmlSpecialHandler::setLinkMarker(cmdline.linkmarkOpt.value()))
+ Message::wstream(true) << "invalid argument '"+cmdline.linkmarkOpt.value()+"' supplied for option --linkmark\n";
+ if (argc > 1 && cmdline.filenames().size() < 1) {
+ Message::estream(true) << "no input file given\n";
+ return 1;
+ }
}
catch (MessageException &e) {
- Message::estream(true) << e.what() << '\n';
- return 0;
- }
-
- set_libgs(args);
- if (args.version_given()) {
- print_version(args.version_arg());
- return 0;
- }
- if (args.list_specials_given()) {
- DVIToSVG::setProcessSpecials();
- SpecialManager::instance().writeHandlerInfo(cout);
- return 0;
- }
-
- if (!set_cache_dir(args))
- return 0;
-
- if (argc > 1 && args.numFiles() < 1) {
- Message::estream(true) << "no input file given\n";
- return 1;
- }
-
- if (args.stdout_given() && args.zip_given()) {
- Message::estream(true) << "writing SVGZ files to stdout is not supported\n";
+ Message::estream() << e.what() << '\n';
return 1;
}
- if (!check_bbox(args.bbox_arg()))
- return 1;
-
- if (args.progress_given()) {
- DVIToSVG::COMPUTE_PROGRESS = args.progress_given();
- SpecialActions::PROGRESSBAR_DELAY = args.progress_arg();
- }
- Color::SUPPRESS_COLOR_NAMES = !args.colornames_given();
- SVGTree::CREATE_CSS = !args.no_styles_given();
- SVGTree::USE_FONTS = !args.no_fonts_given();
- SVGTree::CREATE_USE_ELEMENTS = args.no_fonts_arg() < 1;
- SVGTree::ZOOM_FACTOR = args.zoom_arg();
- SVGTree::RELATIVE_PATH_CMDS = args.relative_given();
- SVGTree::MERGE_CHARS = !args.no_merge_given();
- SVGTree::ADD_COMMENTS = args.comments_given();
- DVIToSVG::TRACE_MODE = args.trace_all_given() ? (args.trace_all_arg() ? 'a' : 'm') : 0;
- Message::LEVEL = args.verbosity_arg();
- PhysicalFont::EXACT_BBOX = args.exact_given();
- PhysicalFont::KEEP_TEMP_FILES = args.keep_given();
- PhysicalFont::METAFONT_MAG = max(1.0, args.mag_arg());
- XMLString::DECIMAL_PLACES = max(0, min(6, args.precision_arg()));
- if (!HtmlSpecialHandler::setLinkMarker(args.linkmark_arg()))
- Message::wstream(true) << "invalid argument '"+args.linkmark_arg()+"' supplied for option --linkmark\n";
- double start_time = System::time();
- bool eps_given=false;
-#ifndef DISABLE_GS
- eps_given = args.eps_given();
- PsSpecialHandler::COMPUTE_CLIPPATHS_INTERSECTIONS = args.clipjoin_given();
- PsSpecialHandler::SHADING_SEGMENT_OVERLAP = args.grad_overlap_given();
- PsSpecialHandler::SHADING_SEGMENT_SIZE = max(1, args.grad_segments_arg());
- PsSpecialHandler::SHADING_SIMPLIFY_DELTA = args.grad_simplify_arg();
-#endif
- string inputfile = ensure_suffix(args.file(0), eps_given);
+ bool eps_given = cmdline.epsOpt.given();
+ string inputfile = ensure_suffix(cmdline.filenames()[0], eps_given);
ifstream ifs(inputfile.c_str(), ios::binary|ios::in);
if (!ifs) {
Message::estream(true) << "can't open file '" << inputfile << "' for reading\n";
return 0;
}
try {
- SVGOutput out(args.stdout_given() ? 0 : inputfile.c_str(), args.output_arg(), args.zip_given() ? args.zip_arg() : 0);
+ double start_time = System::time();
+ set_variables(cmdline);
+ SVGOutput out(cmdline.stdoutOpt.given() ? nullptr : inputfile.c_str(),
+ cmdline.outputOpt.value(),
+ cmdline.zipOpt.given() ? cmdline.zipOpt.value() : 0);
SignalHandler::instance().start();
-#ifndef DISABLE_GS
- if (args.eps_given()) {
+ if (cmdline.epsOpt.given()) {
EPSToSVG eps2svg(inputfile, out);
eps2svg.convert();
Message::mstream().indent(0);
- Message::mstream(false, Message::MC_PAGE_NUMBER)
- << "file converted in " << (System::time()-start_time) << " seconds\n";
+ Message::mstream(false, Message::MC_PAGE_NUMBER) << "file converted in " << (System::time()-start_time) << " seconds\n";
}
- else
-#endif
- {
- init_fontmap(args);
+ else {
+ init_fontmap(cmdline);
DVIToSVG dvi2svg(ifs, out);
- const char *ignore_specials = args.no_specials_given() ? (args.no_specials_arg().empty() ? "*" : args.no_specials_arg().c_str()) : 0;
+ const char *ignore_specials=nullptr;
+ if (cmdline.noSpecialsOpt.given())
+ ignore_specials = cmdline.noSpecialsOpt.value().empty() ? "*" : cmdline.noSpecialsOpt.value().c_str();
dvi2svg.setProcessSpecials(ignore_specials, true);
- dvi2svg.setPageTransformation(get_transformation_string(args));
- dvi2svg.setPageSize(args.bbox_arg());
+ dvi2svg.setPageTransformation(get_transformation_string(cmdline));
+ dvi2svg.setPageSize(cmdline.bboxOpt.value());
pair<int,int> pageinfo;
- dvi2svg.convert(args.page_arg(), &pageinfo);
+ dvi2svg.convert(cmdline.pageOpt.value(), &pageinfo);
Message::mstream().indent(0);
Message::mstream(false, Message::MC_PAGE_NUMBER) << "\n" << pageinfo.first << " of " << pageinfo.second << " page";
if (pageinfo.second > 1)
@@ -326,7 +338,5 @@ int main (int argc, char *argv[]) {
catch (MessageException &e) {
Message::estream(true) << e.what() << '\n';
}
- FileFinder::finish();
return 0;
}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/ffwrapper.c b/Build/source/texk/dvisvgm/dvisvgm-src/src/ffwrapper.c
new file mode 100644
index 00000000000..e74d4d6e8ec
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/ffwrapper.c
@@ -0,0 +1,101 @@
+/*************************************************************************
+** ffwrapper.c **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <fontforge.h>
+#include "ffwrapper.h"
+
+#ifdef _NDEBUG
+static void no_post_error (const char *title, const char *error, ...) {}
+static void no_warning (const char *format, ...) {}
+#endif
+
+
+/** Initializes the FontForge library. */
+void ff_init () {
+ InitSimpleStuff();
+#ifdef _NDEBUG
+ ui_interface.post_error = &no_post_error;
+ ui_interface.logwarning = &no_warning;
+#endif
+}
+
+
+int ff_version () {
+ return FONTFORGE_VERSIONDATE_RAW;
+}
+
+
+/** Runs the autohinter for all glyphs in a given font.
+ * @param[in,out] sf the font to be autohinted
+ * @param[in] order2 if != 0, target font requires quadratic rather than cubic splines */
+static void ff_autohint (SplineFont *sf, int order2) {
+ BlueData bd;
+ GlobalInstrCt gic;
+ if (order2)
+ SFConvertToOrder2(sf);
+ QuickBlues(sf, ly_fore, &bd);
+ if (order2)
+ InitGlobalInstrCt(&gic, sf, ly_fore, &bd);
+ for (int i=0; i < sf->glyphcnt; i++) {
+ SplineChar *sc = sf->glyphs[i];
+ if (sc != NULL) {
+ SplineChar *sc = sf->glyphs[i];
+ SplineCharAutoHint(sc, ly_fore, &bd); // generate hints
+ if (order2)
+ NowakowskiSCAutoInstr(&gic, sc); // generate TTF instructions
+ }
+ }
+ if (order2)
+ FreeGlobalInstrCt(&gic);
+}
+
+
+/** Creates a TrueType font from a FontForge SFD file.
+ * @param[in] sfdname name of SFD file
+ * @param[in] ttfname name of TrueType file
+ * @param[in] autohint run the autohinter if != 0 */
+int ff_sfd_to_ttf (const char *sfdname, const char *ttfname, int autohint) {
+ int ret=0;
+ SplineFont *sf = SFDRead((char*)sfdname);
+ if (sf) {
+ if (autohint)
+ ff_autohint(sf, true);
+ ret = WriteTTFFont((char*)ttfname, sf, ff_ttf, 0, 0, 0, sf->map, ly_fore);
+ SplineFontFree(sf);
+ }
+ return ret;
+}
+
+
+/** Creates a WOFF font from a FontForge SFD file.
+ * @param[in] sfdname name of SFD file
+ * @param[in] woffname name of WOFF file
+ * @param[in] autohint run the autohinter if != 0 */
+int ff_sfd_to_woff (const char *sfdname, const char *woffname, int autohint) {
+ int ret=0;
+ SplineFont *sf = SFDRead((char*)sfdname);
+ if (sf) {
+ if (autohint)
+ ff_autohint(sf, false);
+ ret = WriteWOFFFont((char*)woffname, sf, ff_woff, 0, 0, 0, sf->map, ly_fore);
+ SplineFontFree(sf);
+ }
+ return ret;
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/ffwrapper.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/ffwrapper.h
new file mode 100644
index 00000000000..763d122e56a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/ffwrapper.h
@@ -0,0 +1,38 @@
+/*************************************************************************
+** ffwrapper.h **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef FFWRAPPER_H
+#define FFWRAPPER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void ff_init ();
+int ff_version ();
+int ff_sfd_to_ttf (const char *sfdname, const char *ttfname, int autohint);
+int ff_sfd_to_woff (const char *sfdname, const char *woffname, int autohint);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/gzstream.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/gzstream.cpp
deleted file mode 100644
index 2893c299891..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/gzstream.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-// ============================================================================
-// gzstream, C++ iostream classes wrapping the zlib compression library.
-// Copyright (C) 2001 Deepak Bandyopadhyay, Lutz Kettner
-//
-// 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
-// ============================================================================
-//
-// File : gzstream.C
-// Revision : $Revision: 1.3 $
-// Revision_date : $Date: 2006/01/05 16:22:35 $
-// Author(s) : Deepak Bandyopadhyay, Lutz Kettner
-//
-// Standard streambuf implementation following Nicolai Josuttis, "The
-// Standard C++ Library".
-// ============================================================================
-
-#include "gzstream.h"
-#include <iostream>
-#include <string.h> // for memcpy
-
-#ifdef GZSTREAM_NAMESPACE
-namespace GZSTREAM_NAMESPACE {
-#endif
-
-const int gzstreambuf::bufferSize = 47+256; // size of data buff
-
-// ----------------------------------------------------------------------------
-// Internal classes to implement gzstream. See header file for user classes.
-// ----------------------------------------------------------------------------
-
-// --------------------------------------
-// class gzstreambuf:
-// --------------------------------------
-
-gzstreambuf* gzstreambuf::open(const char* name, int compression_level, int open_mode) {
- if ( is_open())
- return (gzstreambuf*)0;
- mode = open_mode;
- // no append nor read/write mode
- if ((mode & std::ios::ate) || (mode & std::ios::app)
- || ((mode & std::ios::in) && (mode & std::ios::out)))
- return (gzstreambuf*)0;
- if (compression_level < 1)
- compression_level = 1;
- else if (compression_level > 9)
- compression_level = 9;
- char fmode[10];
- char* fmodeptr = fmode;
- if ( mode & std::ios::in)
- *fmodeptr++ = 'r';
- else if ( mode & std::ios::out)
- *fmodeptr++ = 'w';
- *fmodeptr++ = 'b';
- *fmodeptr++ = '0'+compression_level;
- *fmodeptr = '\0';
- file = gzopen( name, fmode);
- if (file == 0)
- return (gzstreambuf*)0;
- opened = 1;
- return this;
-}
-
-gzstreambuf * gzstreambuf::close() {
- if ( is_open()) {
- sync();
- opened = 0;
- if ( gzclose( file) == Z_OK)
- return this;
- }
- return (gzstreambuf*)0;
-}
-
-int gzstreambuf::underflow() { // used for input buffer only
- if ( gptr() && ( gptr() < egptr()))
- return * reinterpret_cast<unsigned char *>( gptr());
-
- if ( ! (mode & std::ios::in) || ! opened)
- return EOF;
- // Josuttis' implementation of inbuf
- int n_putback = gptr() - eback();
- if ( n_putback > 4)
- n_putback = 4;
- memcpy( buffer + (4 - n_putback), gptr() - n_putback, n_putback);
-
- int num = gzread( file, buffer+4, bufferSize-4);
- if (num <= 0) // ERROR or EOF
- return EOF;
-
- // reset buffer pointers
- setg( buffer + (4 - n_putback), // beginning of putback area
- buffer + 4, // read position
- buffer + 4 + num); // end of buffer
-
- // return next character
- return * reinterpret_cast<unsigned char *>( gptr());
-}
-
-int gzstreambuf::flush_buffer() {
- // Separate the writing of the buffer from overflow() and
- // sync() operation.
- int w = pptr() - pbase();
- if ( gzwrite( file, pbase(), w) != w)
- return EOF;
- pbump( -w);
- return w;
-}
-
-int gzstreambuf::overflow( int c) { // used for output buffer only
- if ( ! ( mode & std::ios::out) || ! opened)
- return EOF;
- if (c != EOF) {
- *pptr() = c;
- pbump(1);
- }
- if ( flush_buffer() == EOF)
- return EOF;
- return c;
-}
-
-int gzstreambuf::sync() {
- // Changed to use flush_buffer() instead of overflow( EOF)
- // which caused improper behavior with std::endl and flush(),
- // bug reported by Vincent Ricard.
- if ( pptr() && pptr() > pbase()) {
- if ( flush_buffer() == EOF)
- return -1;
- }
- return 0;
-}
-
-// --------------------------------------
-// class gzstreambase:
-// --------------------------------------
-
-gzstreambase::gzstreambase( const char* name, int compression_level, int mode) {
- init( &buf);
- open( name, compression_level, mode);
-}
-
-gzstreambase::~gzstreambase() {
- buf.close();
-}
-
-void gzstreambase::open( const char* name, int compression_level, int open_mode) {
- if ( ! buf.open( name, compression_level, open_mode))
- clear( rdstate() | std::ios::badbit);
-}
-
-void gzstreambase::close() {
- if ( buf.is_open())
- if ( ! buf.close())
- clear( rdstate() | std::ios::badbit);
-}
-
-#ifdef GZSTREAM_NAMESPACE
-} // namespace GZSTREAM_NAMESPACE
-#endif
-
-// ============================================================================
-// EOF //
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/gzstream.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/gzstream.h
deleted file mode 100644
index 60f38c4fac7..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/gzstream.h
+++ /dev/null
@@ -1,121 +0,0 @@
-// ============================================================================
-// gzstream, C++ iostream classes wrapping the zlib compression library.
-// Copyright (C) 2001 Deepak Bandyopadhyay, Lutz Kettner
-//
-// 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
-// ============================================================================
-//
-// File : gzstream.h
-// Revision : $Revision: 1.3 $
-// Revision_date : $Date: 2006/01/05 16:22:35 $
-// Author(s) : Deepak Bandyopadhyay, Lutz Kettner
-//
-// Standard streambuf implementation following Nicolai Josuttis, "The
-// Standard C++ Library".
-// ============================================================================
-
-#ifndef GZSTREAM_H
-#define GZSTREAM_H 1
-
-// standard C++ with new header file names and std:: namespace
-#include <iostream>
-#include <fstream>
-#include <zlib.h>
-
-#ifdef GZSTREAM_NAMESPACE
-namespace GZSTREAM_NAMESPACE {
-#endif
-
-// ----------------------------------------------------------------------------
-// Internal classes to implement gzstream. See below for user classes.
-// ----------------------------------------------------------------------------
-
-class gzstreambuf : public std::streambuf {
-private:
- static const int bufferSize; // size of data buff
- // totals 512 bytes under g++ for igzstream at the end.
-
- gzFile file; // file handle for compressed file
- char buffer[47+256]; // data buffer
- char opened; // open/close state of stream
- int mode; // I/O mode
-
- int flush_buffer();
-public:
- gzstreambuf() : opened(0) {
- setp( buffer, buffer + (bufferSize-1));
- setg( buffer + 4, // beginning of putback area
- buffer + 4, // read position
- buffer + 4); // end position
- // ASSERT: both input & output capabilities will not be used together
- }
- int is_open() { return opened; }
- gzstreambuf* open(const char* name, int compression_level, int open_mode);
- gzstreambuf* close();
- ~gzstreambuf() { close(); }
-
- virtual int overflow( int c = EOF);
- virtual int underflow();
- virtual int sync();
-};
-
-class gzstreambase : virtual public std::ios {
-protected:
- gzstreambuf buf;
-public:
- gzstreambase() { init(&buf); }
- gzstreambase( const char* name, int compression_level, int open_mode);
- ~gzstreambase();
- void open( const char* name, int compression_level, int open_mode);
- void close();
- gzstreambuf* rdbuf() { return &buf; }
-};
-
-// ----------------------------------------------------------------------------
-// User classes. Use igzstream and ogzstream analogously to ifstream and
-// ofstream respectively. They read and write files based on the gz*
-// function interface of the zlib. Files are compatible with gzip compression.
-// ----------------------------------------------------------------------------
-
-class igzstream : public gzstreambase, public std::istream {
-public:
- igzstream() : std::istream( &buf) {}
- igzstream( const char* name, int compression_level, int open_mode = std::ios::in)
- : gzstreambase(name, compression_level, open_mode), std::istream( &buf) {}
- gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); }
- void open( const char* name, int compression_level, int open_mode = std::ios::in) {
- gzstreambase::open( name, compression_level, open_mode);
- }
-};
-
-class ogzstream : public gzstreambase, public std::ostream {
-public:
- ogzstream() : std::ostream( &buf) {}
- ogzstream( const char* name, int compression_level, int mode = std::ios::out)
- : gzstreambase(name, compression_level, mode), std::ostream( &buf) {}
- gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); }
- void open( const char* name, int compression_level, int open_mode = std::ios::out) {
- gzstreambase::open(name, compression_level, open_mode);
- }
-};
-
-#ifdef GZSTREAM_NAMESPACE
-} // namespace GZSTREAM_NAMESPACE
-#endif
-
-#endif // GZSTREAM_H
-// ============================================================================
-// EOF //
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/macros.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/macros.hpp
index 787f2ad10ca..1966d31e17b 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/macros.h
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/macros.hpp
@@ -1,8 +1,8 @@
/*************************************************************************
-** macros.h **
+** macros.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,11 +18,8 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#ifndef DVISVGM_MACROS_H
-#define DVISVGM_MACROS_H
-
-#define FORALL(container, itertype, itervar) \
- for (itertype itervar=(container).begin(); itervar != (container).end(); ++itervar)
+#ifndef MACROS_HPP
+#define MACROS_HPP
#define IMPLEMENT_ARITHMETIC_OPERATOR(class, op) \
inline class operator op (class a, const class &b) { \
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/options.dtd b/Build/source/texk/dvisvgm/dvisvgm-src/src/options.dtd
index af340a2a9eb..ff016a33990 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/options.dtd
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/options.dtd
@@ -3,7 +3,7 @@
** options.dtd **
** **
** This file is part of dvisvgm - a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -23,13 +23,11 @@
<!ATTLIST cmdline
class NMTOKEN #REQUIRED>
-<!ELEMENT program (name,usage+,description)>
-
+<!ELEMENT program (usage+,description,copyright)>
<!ELEMENT options (section)+>
-
<!ELEMENT name (#PCDATA)>
-
<!ELEMENT usage (#PCDATA)>
+<!ELEMENT copyright (#PCDATA)>
<!ELEMENT section (option)+>
<!ATTLIST section
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml b/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml
index ecc4b08d8c5..cf1e0346e21 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml
@@ -3,7 +3,7 @@
** options.xml **
** **
** This file is part of dvisvgm - a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -22,16 +22,16 @@
<cmdline class="CommandLine">
<program>
- <name>dvisvgm</name>
<usage>[options] dvifile</usage>
<usage>-E [options] epsfile</usage>
<description>This program converts DVI files, as created by TeX/LaTeX, to\nthe XML-based scalable vector graphics format SVG.</description>
+ <copyright>Copyright (C) 2005-2017 Martin Gieseking &lt;martin.gieseking@uos.de></copyright>
</program>
<options>
<section title="Input options">
<option long="page" short="p">
<arg type="string" name="ranges" default="1"/>
- <description>choose pages to convert</description>
+ <description>choose page(s) to convert</description>
</option>
<option long="fontmap" short="m">
<arg type="string" name="filenames"/>
@@ -55,8 +55,12 @@
<option long="comments">
<description>add comments with additional information</description>
</option>
+ <option long="font-format" short="f" if="!defined(DISABLE_WOFF)">
+ <arg type="string" name="format" default="svg"/>
+ <description>select file format of embedded fonts</description>
+ </option>
<option long="grad-overlap" if="!defined(DISABLE_GS)">
- <description>create operlapping color gradient segments</description>
+ <description>create overlapping color gradient segments</description>
</option>
<option long="grad-segments" if="!defined(DISABLE_GS)">
<arg type="int" name="number" default="20"/>
@@ -84,6 +88,10 @@
<option long="stdout" short="s">
<description>write SVG output to stdout</description>
</option>
+ <option long="tmpdir">
+ <arg type="string" name="path" optional="yes"/>
+ <description>set/print the directory for temporary files</description>
+ </option>
<option long="no-fonts" short="n">
<arg type="int" name="variant" default="0" optional="yes"/>
<description>draw glyphs by using path elements</description>
@@ -92,7 +100,7 @@
<description>don't merge adjacent text elements</description>
</option>
<option long="no-styles">
- <description>don't use styles to reference fonts</description>
+ <description>don't use CSS styles to reference fonts</description>
</option>
<option long="zip" short="z">
<arg type="int" name="level" default="9" optional="yes"/>
@@ -148,7 +156,7 @@
<description>don't process [selected] specials</description>
</option>
<option long="trace-all" short="a">
- <arg name="retrace" type="bool" optional="yes" default="no"/>
+ <arg name="retrace" type="bool" optional="yes" default="false"/>
<description>trace all glyphs of bitmap fonts</description>
</option>
</section>
@@ -165,17 +173,16 @@
</option>
<option long="progress" short="P">
<arg name="delay" type="double" optional="yes" default="0.5"/>
- <description>enable progess indicator</description>
+ <description>enable progress indicator</description>
</option>
<option long="verbosity" short="v">
<arg type="unsigned" name="level" default="7"/>
<description>set verbosity level (0-7)</description>
</option>
<option long="version" short="V">
- <arg type="bool" name="extended" optional="yes" default="no"/>
+ <arg type="bool" name="extended" optional="yes" default="false"/>
<description>print version and exit</description>
</option>
</section>
</options>
</cmdline>
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp
index dee64606f8f..eafc838749e 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp
@@ -2,7 +2,7 @@
** psdefs.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -18,7 +18,7 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include "PSInterpreter.h"
+#include "PSInterpreter.hpp"
const char *PSInterpreter::PSDEFS =
"<</Install{matrix setmatrix}/HWResolution[72 72]/PageSize[10000 10000]/Imaging"
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/types.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/types.h
deleted file mode 100644
index 049fc440b79..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/types.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*************************************************************************
-** types.h **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program 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 General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_TYPES_H
-#define DVISVGM_TYPES_H
-
-namespace internal {
- template<unsigned BYTES>
- class ERROR_inttype_not_available
- {
- ERROR_inttype_not_available();
- };
-
- template<bool FIRST, typename A, typename B>
- struct select
- {
- typedef A T;
- };
-
- template<typename A, typename B>
- struct select<false, A, B>
- {
- typedef B T;
- };
-}
-
-
-// Retrieves a signed integer type with sizeof(T) == BYTES
-template<unsigned BYTES, bool SIGNED>
-struct int_t
-{
- typedef typename internal::select<sizeof(signed char) == BYTES, signed char,
- typename internal::select<sizeof(signed short) == BYTES, signed short,
- typename internal::select<sizeof(signed int) == BYTES, signed int,
- typename internal::select<sizeof(signed long) == BYTES, signed long,
- typename internal::select<sizeof(signed long long) == BYTES, signed long long,
- internal::ERROR_inttype_not_available<BYTES> >::T>::T>::T>::T>::T T;
-};
-
-
-// Retrieves an unsigned integer type with sizeof(T) == BYTES
-template<unsigned BYTES>
-struct int_t<BYTES, false>
-{
- typedef typename internal::select<sizeof(unsigned char) == BYTES, unsigned char,
- typename internal::select<sizeof(unsigned short) == BYTES, unsigned short,
- typename internal::select<sizeof(unsigned int) == BYTES, unsigned int,
- typename internal::select<sizeof(unsigned long) == BYTES, unsigned long,
- typename internal::select<sizeof(unsigned long long) == BYTES, unsigned long long,
- internal::ERROR_inttype_not_available<BYTES> >::T>::T>::T>::T>::T T;
-};
-
-
-// Machine independent definition of sized integer types
-typedef int_t<1, true>::T Int8;
-typedef int_t<2, true>::T Int16;
-typedef int_t<4, true>::T Int32;
-typedef int_t<8, true>::T Int64;
-typedef int_t<1, false>::T UInt8;
-typedef int_t<2, false>::T UInt16;
-typedef int_t<4, false>::T UInt32;
-typedef int_t<8, false>::T UInt64;
-
-typedef Int32 FixWord;
-typedef UInt32 ScaledInt;
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/utility.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/utility.cpp
new file mode 100644
index 00000000000..c6b9ea63fe9
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/utility.cpp
@@ -0,0 +1,74 @@
+/*************************************************************************
+** utility.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <algorithm>
+#include <cctype>
+#include <functional>
+#include "utility.hpp"
+
+using namespace std;
+
+
+/** Returns a given string with leading and trailing whitespace removed.
+ * @param[in] str the string to process
+ * @param[in] ws characters treated as whitespace
+ * @return the trimmed string */
+string util::trim (const std::string &str, const char *ws) {
+ size_t first = str.find_first_not_of(ws);
+ if (first == string::npos)
+ return "";
+ size_t last = str.find_last_not_of(ws);
+ return str.substr(first, last-first+1);
+}
+
+
+/** Removes leading and trailing whitespace from a given string, and replaces
+ * all other whitespace sequences by single spaces.
+ * @param[in] str the string to process
+ * @param[in] ws characters treated as whitespace
+ * @return the normalized string */
+string util::normalize_space (string str, const char *ws) {
+ str = trim(str);
+ size_t first = str.find_first_of(ws);
+ while (first != string::npos) {
+ size_t last = str.find_first_not_of(ws, first);
+ str.replace(first, last-first, " ");
+ first = str.find_first_of(ws, first+1);
+ }
+ return str;
+}
+
+
+string& util::tolower (string &str) {
+ transform(str.begin(), str.end(), str.begin(), ::tolower);
+ return str;
+}
+
+
+/** Returns the integer part of log10 of a given integer \f$n>0\f$.
+ * If \f$n<0\f$, the result is 0. */
+int util::ilog10 (int n) {
+ int result = 0;
+ while (n >= 10) {
+ result++;
+ n /= 10;
+ }
+ return result;
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/utility.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/utility.hpp
new file mode 100644
index 00000000000..63d12087e71
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/utility.hpp
@@ -0,0 +1,66 @@
+/*************************************************************************
+** utility.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef UTILITY_HPP
+#define UTILITY_HPP
+
+#include <string>
+
+namespace util {
+
+std::string trim (const std::string &str, const char *ws=" \t\n\r\f");
+std::string normalize_space (std::string str, const char *ws=" \t\n\r\f");
+std::string& tolower (std::string &str);
+int ilog10 (int n);
+
+
+/** Encodes the bytes in the half-open range [first,last) to Base64 and writes
+ * the result to the range starting at 'dest'.
+ * @param[in] first initial position of the range to be encoded
+ * @param[in] last final position of the range to be encoded
+ * @param[in] dest first position of the destination range */
+template <typename InputIterator, typename OutputIterator>
+void base64_copy (InputIterator first, InputIterator last, OutputIterator dest) {
+ static const char *base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ while (first != last) {
+ int padding = 0;
+ unsigned char c0 = *first++, c1=0, c2=0;
+ if (first == last)
+ padding = 2;
+ else {
+ c1 = *first++;
+ if (first == last)
+ padding = 1;
+ else
+ c2 = *first++;
+ }
+ uint32_t n = (c0 << 16) | (c1 << 8) | c2;
+ for (int i=0; i <= 3-padding; i++) {
+ *dest++ = base64_chars[(n >> 18) & 0x3f];
+ n <<= 6;
+ }
+ while (padding--)
+ *dest++ = '=';
+ }
+}
+
+} // namespace util
+
+#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp
new file mode 100644
index 00000000000..a25832a7f9e
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp
@@ -0,0 +1,28 @@
+/*************************************************************************
+** version.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef VERSION_HPP
+#define VERSION_HPP
+
+constexpr const char *PROGRAM_NAME = "dvisvgm";
+constexpr const char *PROGRAM_VERSION = "2.1";
+
+#endif
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp.in b/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp.in
new file mode 100644
index 00000000000..40477d7360f
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp.in
@@ -0,0 +1,28 @@
+/*************************************************************************
+** version.hpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#ifndef VERSION_HPP
+#define VERSION_HPP
+
+constexpr const char *PROGRAM_NAME = "dvisvgm";
+constexpr const char *PROGRAM_VERSION = "@VERSION@";
+
+#endif
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/BezierTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/BezierTest.cpp
new file mode 100644
index 00000000000..26ba7f98666
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/BezierTest.cpp
@@ -0,0 +1,164 @@
+/*************************************************************************
+** BezierTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "Bezier.hpp"
+
+using namespace std;
+
+const double EPS = 0.001;
+
+#define EXPECT_PAIR_EQ(p1,p2) {EXPECT_DOUBLE_EQ(p1.x(), p2.x()); EXPECT_DOUBLE_EQ(p1.y(), p2.y());}
+#define EXPECT_PAIR_NEAR(p1,p2) {EXPECT_NEAR(p1.x(), p2.x(), EPS); EXPECT_NEAR(p1.y(), p2.y(), EPS);}
+#define EXPECT_BBOX_NEAR(b1,b2) { \
+ EXPECT_NEAR(b1.minX(), b2.minX(), EPS); EXPECT_NEAR(b1.maxX(), b2.maxX(), EPS); \
+ EXPECT_NEAR(b1.minY(), b2.minY(), EPS); EXPECT_NEAR(b1.maxY(), b2.maxY(), EPS);}
+
+
+TEST(BezierTest, construct) {
+ // quadratic Bézier curve
+ Bezier bezier1(DPair(0,0), DPair(12,12), DPair(24,6));
+ EXPECT_EQ(bezier1.point(0), DPair(0,0));
+ EXPECT_EQ(bezier1.point(1), DPair(8,8));
+ EXPECT_EQ(bezier1.point(2), DPair(16,10));
+ EXPECT_EQ(bezier1.point(3), DPair(24,6));
+
+ // cubic Bézier curve
+ Bezier bezier2(DPair(0,0), DPair(12,12), DPair(24,6), DPair(19,-4));
+ EXPECT_EQ(bezier2.point(0), DPair(0,0));
+ EXPECT_EQ(bezier2.point(1), DPair(12,12));
+ EXPECT_EQ(bezier2.point(2), DPair(24,6));
+ EXPECT_EQ(bezier2.point(3), DPair(19,-4));
+}
+
+
+TEST(BezierTest, subcurve) {
+ Bezier bezier1(DPair(0,0), DPair(12,12), DPair(24,6), DPair(19,-4));
+ {
+ Bezier subcurve(bezier1, 0, 1);
+ EXPECT_EQ(subcurve.point(0), DPair(0,0));
+ EXPECT_EQ(subcurve.point(1), DPair(12,12));
+ EXPECT_EQ(subcurve.point(2), DPair(24,6));
+ EXPECT_EQ(subcurve.point(3), DPair(19,-4));
+ }
+ {
+ Bezier subcurve(bezier1, 0, 0.5);
+ EXPECT_EQ(subcurve.point(0), DPair(0,0));
+ EXPECT_EQ(subcurve.point(1), DPair(6,6));
+ EXPECT_EQ(subcurve.point(2), DPair(12,7.5));
+ EXPECT_EQ(subcurve.point(3), DPair(15.875,6.25));
+ }
+ {
+ Bezier subcurve(bezier1, 1, 0.5);
+ EXPECT_EQ(subcurve.point(0), DPair(15.875,6.25));
+ EXPECT_EQ(subcurve.point(1), DPair(19.75,5));
+ EXPECT_EQ(subcurve.point(2), DPair(21.5,1));
+ EXPECT_EQ(subcurve.point(3), DPair(19,-4));
+ }
+ {
+ Bezier subcurve(bezier1, 0.2, 0.8);
+ EXPECT_PAIR_NEAR(subcurve.point(0), DPair(7.064,5.152));
+ EXPECT_PAIR_NEAR(subcurve.point(1), DPair(13.856,8.368));
+ EXPECT_PAIR_NEAR(subcurve.point(2), DPair(19.424,6.112));
+ EXPECT_PAIR_NEAR(subcurve.point(3), DPair(20.096,1.408));
+ }
+ {
+ Bezier subcurve(bezier1, 0, 0);
+ EXPECT_EQ(subcurve.point(0), DPair(0,0));
+ EXPECT_EQ(subcurve.point(1), DPair(0,0));
+ EXPECT_EQ(subcurve.point(2), DPair(0,0));
+ EXPECT_EQ(subcurve.point(3), DPair(0,0));
+ }
+ {
+ Bezier subcurve(bezier1, 1, 1);
+ EXPECT_EQ(subcurve.point(0), DPair(19,-4));
+ EXPECT_EQ(subcurve.point(1), DPair(19,-4));
+ EXPECT_EQ(subcurve.point(2), DPair(19,-4));
+ EXPECT_EQ(subcurve.point(3), DPair(19,-4));
+ }
+}
+
+
+TEST(BezierTest, reverse) {
+ Bezier bezier(DPair(0,0), DPair(12,12), DPair(24,6), DPair(19,-4));
+ bezier.reverse();
+ EXPECT_EQ(bezier.point(0), DPair(19,-4));
+ EXPECT_EQ(bezier.point(1), DPair(24,6));
+ EXPECT_EQ(bezier.point(2), DPair(12,12));
+ EXPECT_EQ(bezier.point(3), DPair(0,0));
+}
+
+
+TEST(BezierTest, bbox) {
+ Bezier bezier(DPair(0,0), DPair(12,12), DPair(24,6), DPair(30,-5));
+ BoundingBox bbox;
+ bezier.getBBox(bbox);
+ EXPECT_BBOX_NEAR(bbox, BoundingBox(0, -5, 30, 6.598));
+}
+
+
+TEST(BezierTest, approximate) {
+ vector<DPair> points;
+ vector<double> times;
+ Bezier bezier(DPair(0,0), DPair(12,12), DPair(24,6), DPair(30,-5));
+ int size = bezier.approximate(0.1, points, &times);
+ double t[] = {0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 1};
+ DPair p[] = {
+ DPair(0,0), DPair(4.488,3.681), DPair(8.906,5.828), DPair(13.183,6.591),
+ DPair(17.25,6.125), DPair(21.035,4.580), DPair(24.468,2.109), DPair(30,-5)
+ };
+ EXPECT_EQ(size, sizeof(t)/sizeof(double));
+ EXPECT_EQ(points.size(), size);
+ EXPECT_EQ(times.size(), size);
+ for (int i=0; i < size; i++) {
+ EXPECT_EQ(times[i], t[i]);
+ EXPECT_PAIR_NEAR(points[i], p[i]);
+ }
+}
+
+
+TEST(BezierTest, reduceDegree) {
+ vector<DPair> points;
+ Bezier bezier(DPair(0,0), DPair(5,10), DPair(10,5));
+ int degree = bezier.reduceDegree(0.1, points);
+ EXPECT_EQ(degree, 2);
+ EXPECT_EQ(points[0], DPair(0,0));
+ EXPECT_EQ(points[1], DPair(5,10));
+ EXPECT_EQ(points[2], DPair(10,5));
+
+ bezier.setPoints(DPair(3,8), DPair(3,8), DPair(3,8), DPair(3,8));
+ degree = bezier.reduceDegree(0.1, points);
+ EXPECT_EQ(degree, 0);
+ EXPECT_EQ(points[0], DPair(3,8));
+
+ bezier.setPoints(DPair(0,0), DPair(5,5), DPair(8,8), DPair(10,10));
+ degree = bezier.reduceDegree(0.1, points);
+ EXPECT_EQ(degree, 1);
+ EXPECT_EQ(points[0], DPair(0,0));
+ EXPECT_EQ(points[1], DPair(10,10));
+
+ bezier.setPoints(DPair(0,0), DPair(5,10), DPair(10,5), DPair(15,10));
+ degree = bezier.reduceDegree(0.1, points);
+ EXPECT_EQ(degree, 3);
+ EXPECT_EQ(points[0], DPair(0,0));
+ EXPECT_EQ(points[1], DPair(5,10));
+ EXPECT_EQ(points[2], DPair(10,5));
+ EXPECT_EQ(points[3], DPair(15,10));
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/BitmapTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/BitmapTest.cpp
new file mode 100644
index 00000000000..c1d6859fc3d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/BitmapTest.cpp
@@ -0,0 +1,78 @@
+/*************************************************************************
+** BitmapTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "Bitmap.hpp"
+
+using namespace std;
+
+
+TEST(BitmapTest, bbox) {
+ Bitmap bitmap(-4, 10, 3, 10);
+ EXPECT_EQ(bitmap.width(), 15);
+ EXPECT_EQ(bitmap.height(), 8);
+ EXPECT_EQ(bitmap.xshift(), -4);
+ EXPECT_EQ(bitmap.yshift(), 3);
+ EXPECT_EQ(bitmap.bytesPerRow(), 2);
+ EXPECT_EQ(bitmap.empty(), false);
+}
+
+
+TEST(BitmapTest, setBits) {
+ int w, h;
+ Bitmap bitmap(-4, 10, 3, 10);
+ bitmap.getExtent(w, h);
+ EXPECT_EQ(w, 0);
+ EXPECT_EQ(h, 0);
+ bitmap.setBits(3, 5, 5);
+ bitmap.getExtent(w, h);
+ EXPECT_EQ(w, 5);
+ EXPECT_EQ(h, 1);
+
+ EXPECT_EQ(bitmap.rowPtr(3-3)[0], 0);
+ EXPECT_EQ(bitmap.rowPtr(3-3)[1], 0x7c);
+
+ EXPECT_EQ(bitmap.rowPtr(10-3)[0], 0);
+ EXPECT_EQ(bitmap.rowPtr(10-3)[1], 0);
+ bitmap.setBits(10, -3, 10);
+ bitmap.getExtent(w, h);
+ EXPECT_EQ(w, 13);
+ EXPECT_EQ(h, 8);
+
+ EXPECT_EQ(bitmap.rowPtr(10-3)[0], 0x7f);
+ EXPECT_EQ(bitmap.rowPtr(10-3)[1], 0xe0);
+}
+
+
+TEST(BitmapTest, copy) {
+ Bitmap bitmap(-4, 10, 3, 10);
+ vector<uint16_t> target;
+ bitmap.setBits(4, 5, 5);
+ bitmap.copy(target, false);
+ EXPECT_EQ(target.size(), 8);
+ EXPECT_EQ(target[0], 0);
+ EXPECT_EQ(target[1], 124);
+ EXPECT_EQ(target[2], 0);
+ bitmap.copy(target, true);
+ EXPECT_EQ(target.size(), 8);
+ EXPECT_EQ(target[5], 0);
+ EXPECT_EQ(target[6], 124);
+ EXPECT_EQ(target[7], 0);
+} \ No newline at end of file
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/BoundingBoxTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/BoundingBoxTest.cpp
new file mode 100644
index 00000000000..30d646256cc
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/BoundingBoxTest.cpp
@@ -0,0 +1,200 @@
+/*************************************************************************
+** BoundingBoxTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#define _USE_MATH_DEFINES
+#include <gtest/gtest.h>
+#include <cmath>
+#include <sstream>
+#include "BoundingBox.hpp"
+#include "Length.hpp"
+#include "Matrix.hpp"
+#include "XMLNode.hpp"
+
+using namespace std;
+
+TEST(BoundingBoxTest, construct) {
+ BoundingBox bbox1;
+ EXPECT_FALSE(bbox1.valid());
+ EXPECT_FALSE(bbox1.locked());
+
+ BoundingBox bbox2(50, 20, 5, 2);
+ EXPECT_TRUE(bbox2.valid());
+ EXPECT_FALSE(bbox2.locked());
+ EXPECT_DOUBLE_EQ(bbox2.minX(), 5);
+ EXPECT_DOUBLE_EQ(bbox2.maxX(), 50);
+ EXPECT_DOUBLE_EQ(bbox2.minY(), 2);
+ EXPECT_DOUBLE_EQ(bbox2.maxY(), 20);
+ EXPECT_EQ(bbox2, BoundingBox(DPair(50, 20), DPair(5, 2)));
+
+ BoundingBox bbox3(" 1bp 2bp 3bp 4bp ");
+ EXPECT_TRUE(bbox2.valid());
+ EXPECT_FALSE(bbox2.locked());
+ EXPECT_DOUBLE_EQ(bbox3.minX(), 1);
+ EXPECT_DOUBLE_EQ(bbox3.minY(), 2);
+ EXPECT_DOUBLE_EQ(bbox3.maxX(), 3);
+ EXPECT_DOUBLE_EQ(bbox3.maxY(), 4);
+
+ Length len(2, Length::Unit::CM);
+ double bp = len.bp();
+ BoundingBox bbox4(len, len, len, len);
+ EXPECT_DOUBLE_EQ(bbox4.minX(), bp);
+ EXPECT_DOUBLE_EQ(bbox4.minY(), bp);
+ EXPECT_DOUBLE_EQ(bbox4.maxX(), bp);
+ EXPECT_DOUBLE_EQ(bbox4.maxY(), bp);
+}
+
+
+TEST(BoundingBoxTest, extent) {
+ BoundingBox bbox(5, 10, 30, 30);
+ EXPECT_DOUBLE_EQ(bbox.width(), 25);
+ EXPECT_DOUBLE_EQ(bbox.height(), 20);
+}
+
+
+TEST(BoundingBoxTest, set) {
+ BoundingBox bbox;
+ bbox.set("1bp 2bp 3bp 4bp");
+ EXPECT_EQ(bbox, BoundingBox(1, 2, 3, 4));
+
+ bbox.set("4bp 3bp 2bp 1bp");
+ EXPECT_EQ(bbox, BoundingBox(2, 1, 4, 3));
+
+ bbox.set("1bp");
+ EXPECT_EQ(bbox, BoundingBox(1, 0, 5, 4));
+
+ bbox.set("2bp 3bp");
+ EXPECT_EQ(bbox, BoundingBox(-1, -3, 7, 7));
+
+ EXPECT_THROW(bbox.set(""), BoundingBoxException);
+ EXPECT_THROW(bbox.set("1bp 2bp 3bp"), BoundingBoxException);
+}
+
+
+TEST(BoundingBoxTest, embed) {
+ BoundingBox bbox1(3, 4, 10, 15);
+ BoundingBox bbox2(3, 4, 10, 15);
+ EXPECT_EQ(bbox1, bbox2);
+
+ bbox1.embed(6, 6);
+ EXPECT_EQ(bbox1, bbox2);
+
+ bbox1.embed(11, 14);
+ EXPECT_EQ(bbox1, BoundingBox(3, 4, 11, 15));
+
+ bbox2.embed(DPair(11, 14));
+ EXPECT_EQ(bbox1, bbox2);
+
+ bbox1.embed(Pair<int>(0, 0));
+ EXPECT_EQ(bbox1, BoundingBox(0, 0, 11, 15));
+ EXPECT_NE(bbox1, bbox2);
+
+ bbox2.embed(bbox1);
+ EXPECT_EQ(bbox1, bbox2);
+
+ bbox1 = BoundingBox(5, 5, 5, 5);
+ bbox1.embed(DPair(5, 5), 2);
+ EXPECT_EQ(bbox1, BoundingBox(3, 3, 7, 7));
+
+ EXPECT_NE(bbox1, bbox2);
+ bbox1.invalidate();
+ bbox1.embed(bbox2);
+ EXPECT_EQ(bbox1, bbox2);
+}
+
+
+TEST(BoundingBoxTest, expand) {
+ BoundingBox bbox(4, 5, 6, 7);
+ bbox.expand(3);
+ EXPECT_EQ(bbox, BoundingBox(1, 2, 9, 10));
+}
+
+
+TEST(BoundingBoxTest, lock) {
+ BoundingBox bbox(4, 5, 6, 7);
+ bbox.lock();
+ bbox.expand(3);
+ EXPECT_EQ(bbox, BoundingBox(4, 5, 6, 7));
+}
+
+
+TEST(BoundingBoxTest, scale) {
+ BoundingBox bbox(4, 5, 6, 7);
+ bbox.scale(2, 2);
+ EXPECT_EQ(bbox, BoundingBox(8, 10, 12, 14));
+ bbox.scale(-2, -2);
+ EXPECT_EQ(bbox, BoundingBox(-24, -28, -16, -20));
+}
+
+
+TEST(BoundingBoxTest, inc) {
+ BoundingBox bbox(4, 5, 6, 7);
+ bbox += BoundingBox(8, 9, 10, 11);
+ EXPECT_EQ(bbox, BoundingBox(12, 14, 16, 18));
+}
+
+
+TEST(BoundingBoxTest, intersect) {
+ BoundingBox bbox(4, 5, 16, 17);
+ bbox.intersect(BoundingBox(10, 18, 20, 25));
+ EXPECT_EQ(bbox, BoundingBox(4, 5, 16, 17));
+
+ bbox.intersect(BoundingBox(10, 10, 20, 25));
+ EXPECT_EQ(bbox, BoundingBox(10, 10, 16, 17));
+}
+
+
+TEST(BoundingBoxTest, transform) {
+ BoundingBox bbox(-5, -5, 5, 5);
+ Matrix matrix(1);
+ matrix.rotate(M_PI/4);
+ bbox.transform(matrix);
+ EXPECT_NEAR(bbox.minX(), -5.068, 0.001);
+ EXPECT_NEAR(bbox.minY(), -5.068, 0.001);
+ EXPECT_NEAR(bbox.maxX(), 5.068, 0.001);
+ EXPECT_NEAR(bbox.maxY(), 5.068, 0.001);
+
+ matrix.rotate(-M_PI/4).translate(2, 3);
+ bbox.transform(matrix);
+ EXPECT_NEAR(bbox.minX(), -3.068, 0.001);
+ EXPECT_NEAR(bbox.minY(), -2.068, 0.001);
+ EXPECT_NEAR(bbox.maxX(), 7.068, 0.001);
+ EXPECT_NEAR(bbox.maxY(), 8.068, 0.001);
+}
+
+
+TEST(BoundingBoxTest, svgViewBox) {
+ BoundingBox bbox(4, 5, 6, 7);
+ ostringstream oss;
+ oss << bbox.toSVGViewBox();
+ EXPECT_EQ(oss.str(), "4 5 2 2");
+}
+
+
+TEST(BoundingBoxTest, svgRectElement) {
+ BoundingBox bbox(4, 5, 6, 7);
+ XMLElementNode *rect = bbox.createSVGRect();
+ EXPECT_TRUE(rect != 0);
+ EXPECT_EQ(rect->getName(), "rect");
+ EXPECT_EQ(string(rect->getAttributeValue("x")), "4");
+ EXPECT_EQ(string(rect->getAttributeValue("y")), "5");
+ EXPECT_EQ(string(rect->getAttributeValue("width")), "2");
+ EXPECT_EQ(string(rect->getAttributeValue("height")), "2");
+ delete rect;
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapManagerTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapManagerTest.cpp
new file mode 100644
index 00000000000..995eec45e9e
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapManagerTest.cpp
@@ -0,0 +1,85 @@
+/*************************************************************************
+** CMapReaderTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <fstream>
+#include "CMap.hpp"
+#include "CMapManager.hpp"
+#include "FileFinder.hpp"
+#include "Message.hpp"
+
+#ifndef SRCDIR
+#define SRCDIR "."
+#endif
+
+
+class CMapManagerTest : public ::testing::Test
+{
+ protected:
+ void SetUp () {
+ FileFinder::init("CMapManagerTest", "CMapManagerTest", false);
+ FileFinder::instance().addLookupDir(SRCDIR"/data");
+ }
+};
+
+
+TEST_F(CMapManagerTest, lookup_buildin) {
+ CMapManager &manager = CMapManager::instance();
+ CMap *cmap=0;
+ EXPECT_TRUE((cmap = manager.lookup("Identity-H")) != 0);
+ EXPECT_STREQ(cmap->name(), "Identity-H");
+ EXPECT_EQ(cmap->getROString(), "Adobe-Identity");
+ EXPECT_TRUE(cmap->mapsToCID());
+
+ EXPECT_TRUE((cmap = manager.lookup("Identity-V")) != 0);
+ EXPECT_STREQ(cmap->name(), "Identity-V");
+ EXPECT_EQ(cmap->getROString(), "Adobe-Identity");
+ EXPECT_TRUE(cmap->mapsToCID());
+
+ EXPECT_TRUE((cmap = manager.lookup("unicode")) != 0);
+ EXPECT_STREQ(cmap->name(), "unicode");
+ EXPECT_EQ(cmap->getROString(), "");
+ EXPECT_FALSE(cmap->mapsToCID());
+ EXPECT_TRUE(cmap->path() == 0);
+}
+
+
+TEST_F(CMapManagerTest, lookup_file) {
+ CMapManager &manager = CMapManager::instance();
+ CMap *cmap = manager.lookup("ot1.cmap");
+ EXPECT_TRUE(cmap != 0);
+ EXPECT_STREQ(cmap->name(), "ot1.cmap");
+ EXPECT_EQ(cmap->getROString(), "");
+ EXPECT_FALSE(cmap->mapsToCID());
+ EXPECT_EQ(cmap->bfcode(0x00), 0x0393);
+ EXPECT_EQ(cmap->bfcode(0x01), 0x0394);
+ EXPECT_EQ(cmap->bfcode(0x02), 0x0398);
+ EXPECT_EQ(cmap->bfcode(0x7c), 0x2014);
+ EXPECT_EQ(cmap->bfcode(0x7d), 0x02dd);
+ EXPECT_EQ(cmap->bfcode(0x7f), 0x00a8);
+ EXPECT_EQ(cmap->bfcode(0x80), 0);
+}
+
+
+TEST_F(CMapManagerTest, lookup_fail) {
+ Message::LEVEL = 0; // avoid warning messages
+ CMapManager &manager = CMapManager::instance();
+ EXPECT_TRUE(manager.lookup("does-not-exists") == 0);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapReaderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapReaderTest.cpp
new file mode 100644
index 00000000000..2b05429a3ac
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapReaderTest.cpp
@@ -0,0 +1,121 @@
+/*************************************************************************
+** CMapreaderTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "CMap.hpp"
+#include "CMapReader.hpp"
+
+using namespace std;
+
+
+class CMapReaderTest : public ::testing::Test
+{
+ protected:
+ void SetUp () {
+ istringstream iss(cmapsrc);
+ CMapReader reader;
+ cmap = reader.read(iss, "Test-Map");
+ }
+
+ static const char *cmapsrc;
+ CMap *cmap;
+};
+
+
+const char *CMapReaderTest::cmapsrc =
+"% This is a comment line\n"
+"/CIDInit /ProcSet findresource begin\n"
+"12 dict begin\n"
+"begincmap\n"
+"/CIDSystemInfo 3 dict dup begin\n"
+" /Registry (Adobe) def\n"
+" /Ordering (Adobe_Japan1_UCS2) def\n"
+" /Supplement 6 def\n"
+"end def\n"
+"/CMapName /Test-Map def\n"
+"/CMapVersion 8.002 def\n"
+"/CMapType 2 def\n"
+"/XUID [1 10 25335 1212] def\n"
+"/WMode 0 def\n"
+"1 begincodespacerange\n"
+" <0000> <FFFF>\n"
+"endcodespacerange\n"
+"4 beginbfchar\n"
+"<0000> <fffd>\n"
+"<003d> <00a5>\n"
+"<005d> <00a6>\n"
+"<005e> <007d>\n"
+"endbfchar\n"
+"2 beginbfchar\n"
+"<005f> <0303>\n"
+"<0060> <2019>\n"
+"endbfchar\n"
+"3 beginbfrange\n"
+"<5830> <5831> <8c75>\n"
+"<5833> <5834> <8c86>\n"
+"<5837> <5838> <8c9b>\n"
+"endbfrange\n"
+"2 begincidrange\n"
+"<1234> <1240> 100\n"
+"<1300> <1302> 200\n"
+"endcidrange\n"
+"endcmap\n"
+"CMapName currentdict /CMap defineresource pop\n";
+
+
+TEST_F(CMapReaderTest, rostring) {
+ ASSERT_TRUE(cmap != 0);
+ ASSERT_EQ(cmap->getROString(), "Adobe-Adobe_Japan1_UCS2");
+ ASSERT_FALSE(cmap->vertical());
+}
+
+
+TEST_F(CMapReaderTest, bfcode) {
+ ASSERT_TRUE(cmap != 0);
+ ASSERT_EQ(cmap->getROString(), "Adobe-Adobe_Japan1_UCS2");
+ ASSERT_FALSE(cmap->vertical());
+ ASSERT_EQ(cmap->bfcode(0), 0xfffd);
+ ASSERT_EQ(cmap->bfcode(0x3d), 0xa5);
+ ASSERT_EQ(cmap->bfcode(0x5d), 0xa6);
+ ASSERT_EQ(cmap->bfcode(0x5e), 0x7d);
+ ASSERT_EQ(cmap->bfcode(0x5f), 0x303);
+ ASSERT_EQ(cmap->bfcode(0x60), 0x2019);
+ ASSERT_EQ(cmap->bfcode(0x5830), 0x8c75);
+ ASSERT_EQ(cmap->bfcode(0x5831), 0x8c76);
+ ASSERT_EQ(cmap->bfcode(0x5833), 0x8c86);
+ ASSERT_EQ(cmap->bfcode(0x5838), 0x8c9c);
+ ASSERT_EQ(cmap->bfcode(0x5839), 0);
+}
+
+TEST_F(CMapReaderTest, cid) {
+ SegmentedCMap *seg_cmap = dynamic_cast<SegmentedCMap*>(cmap);
+ ASSERT_TRUE(seg_cmap != 0);
+ ASSERT_EQ(seg_cmap->numBFRanges(), 9);
+ ASSERT_EQ(seg_cmap->numCIDRanges(), 2);
+ ASSERT_EQ(seg_cmap->cid(0x1233), 0);
+ ASSERT_EQ(seg_cmap->cid(0x1234), 100);
+ ASSERT_EQ(seg_cmap->cid(0x1240), 112);
+ ASSERT_EQ(seg_cmap->cid(0x1241), 0);
+ ASSERT_EQ(seg_cmap->cid(0x12FF), 0);
+ ASSERT_EQ(seg_cmap->cid(0x1300), 200);
+ ASSERT_EQ(seg_cmap->cid(0x1301), 201);
+ ASSERT_EQ(seg_cmap->cid(0x1302), 202);
+ ASSERT_EQ(seg_cmap->cid(0x1303), 0);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapTest.cpp
new file mode 100644
index 00000000000..969bd835ea1
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapTest.cpp
@@ -0,0 +1,147 @@
+/*************************************************************************
+** CMapTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "CMap.hpp"
+
+using namespace std;
+
+
+static void check_range (const SegmentedCMap &cmap, int min, int max, int cid_min) {
+ for (int i=min; i <= max; i++)
+ ASSERT_EQ(cmap.cid(i), cid_min+(i-min));
+}
+
+
+static void check_zero (const SegmentedCMap &cmap, int min, int max) {
+ for (int i=min; i <= max; i++)
+ ASSERT_EQ(cmap.cid(i), 0);
+}
+
+
+TEST(SegmentedCMapTest, disjoint_ranges) {
+ SegmentedCMap cmap("test");
+ cmap.addCIDRange(5, 8, 1);
+ ASSERT_EQ(cmap.numCIDRanges(), 1);
+ check_range(cmap, 5, 8, 1);
+ check_zero(cmap, 0, 4);
+ check_zero(cmap, 9, 20);
+
+ cmap.addCIDRange(10, 15, 5);
+ ASSERT_EQ(cmap.numCIDRanges(), 2);
+ check_range(cmap, 5, 8, 1);
+ check_range(cmap, 10, 15, 5);
+ check_zero(cmap, 0, 4);
+ check_zero(cmap, 9, 9);
+ check_zero(cmap, 16, 20);
+
+ cmap.addCIDRange(0, 3, 50);
+ ASSERT_EQ(cmap.numCIDRanges(), 3);
+ check_range(cmap, 0, 3, 50);
+ check_range(cmap, 5, 8, 1);
+ check_range(cmap, 10, 15, 5);
+ check_zero(cmap, 4, 4);
+ check_zero(cmap, 9, 9);
+ check_zero(cmap, 16, 20);
+
+ cmap.addCIDRange(16, 20, 1);
+ ASSERT_EQ(cmap.numCIDRanges(), 4);
+ check_range(cmap, 5, 8, 1);
+ check_range(cmap, 10, 15, 5);
+ check_range(cmap, 0, 3, 50);
+ check_range(cmap, 16, 20, 1);
+}
+
+
+TEST(SegmentedCMapTest, touching_ranges) {
+ SegmentedCMap cmap("test");
+ cmap.addCIDRange(5, 8, 10);
+ ASSERT_EQ(cmap.numCIDRanges(), 1);
+ check_range(cmap, 5, 8, 10);
+
+ cmap.addCIDRange(9, 15, 14);
+ ASSERT_EQ(cmap.numCIDRanges(), 1);
+ check_range(cmap, 5, 15, 10);
+
+ cmap.addCIDRange(1, 4, 5);
+ ASSERT_EQ(cmap.numCIDRanges(), 2);
+ check_range(cmap, 1, 4, 5);
+ check_range(cmap, 5, 15, 10);
+
+ cmap.addCIDRange(1, 4, 6);
+ ASSERT_EQ(cmap.numCIDRanges(), 1);
+ check_range(cmap, 1, 15, 6);
+}
+
+
+TEST(SegmentedCMapTest, overlapping_ranges) {
+ SegmentedCMap cmap("test");
+ cmap.addCIDRange(5, 8, 10);
+ cmap.addCIDRange(7, 15, 12);
+ ASSERT_EQ(cmap.numCIDRanges(), 1);
+ check_range(cmap, 5, 15, 10);
+
+ cmap.addCIDRange(10, 20, 1);
+ ASSERT_EQ(cmap.numCIDRanges(), 2);
+ check_range(cmap, 5, 9, 10);
+ check_range(cmap, 10, 20, 1);
+
+ cmap.addCIDRange(2, 7, 7);
+ ASSERT_EQ(cmap.numCIDRanges(), 2);
+ check_range(cmap, 2, 9, 7);
+ check_range(cmap, 10, 20, 1);
+
+ cmap.addCIDRange(1, 12, 100);
+ ASSERT_EQ(cmap.numCIDRanges(), 2);
+ check_range(cmap, 1, 12, 100);
+ check_range(cmap, 13, 20, 4);
+
+ cmap.addCIDRange(0, 30, 1);
+ ASSERT_EQ(cmap.numCIDRanges(), 1);
+ check_range(cmap, 0, 30, 1);
+}
+
+
+TEST(SegmentedCMapTest, inner_ranges) {
+ SegmentedCMap cmap("test");
+ cmap.addCIDRange(5, 20, 1);
+ cmap.addCIDRange(10, 15, 6);
+ ASSERT_EQ(cmap.numCIDRanges(), 1);
+ check_range(cmap, 5, 20, 1);
+
+ cmap.addCIDRange(10, 15, 100);
+ ASSERT_EQ(cmap.numCIDRanges(), 3);
+ check_range(cmap, 5, 9, 1);
+ check_range(cmap, 10, 15, 100);
+ check_range(cmap, 16, 20, 12);
+
+ cmap.addCIDRange(15, 15, 50);
+ ASSERT_EQ(cmap.numCIDRanges(), 4);
+ check_range(cmap, 5, 9, 1);
+ check_range(cmap, 10, 14, 100);
+ check_range(cmap, 15, 15, 50);
+ check_range(cmap, 16, 20, 12);
+
+ cmap.addCIDRange(6, 19, 1);
+ ASSERT_EQ(cmap.numCIDRanges(), 3);
+ check_range(cmap, 5, 5, 1);
+ check_range(cmap, 6, 19, 1);
+ check_range(cmap, 20, 20, 16);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CRC32Test.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CRC32Test.cpp
new file mode 100644
index 00000000000..44a0758d255
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CRC32Test.cpp
@@ -0,0 +1,79 @@
+/*************************************************************************
+** CRC32Test.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <string>
+#include "CRC32.hpp"
+
+using namespace std;
+
+TEST(CRC32Test, init) {
+ CRC32 crc;
+ EXPECT_EQ(crc.get(), 0);
+ crc.reset();
+ EXPECT_EQ(crc.get(), 0);
+}
+
+
+TEST(CRC32Test, update_numbers) {
+ CRC32 crc;
+ const uint32_t comp[]={0xf8923be6, 0x4dcd2866, 0x4fdbb57a, 0xcb40f3bf, 0xf1a33887, 0x3422c816, 0x3a8b92a4, 0xedafc4ce, 0x4f5d17ec, 0x4a9f2f68};
+ for (int i=-5; i < 5; ++i) {
+ crc.update(i);
+ EXPECT_EQ(crc.get(), comp[i+5]);
+ }
+ crc.reset();
+ EXPECT_EQ(crc.get(), 0);
+ // add 32 bit values
+ for (int i=0; i < 256; ++i)
+ crc.update(i);
+ EXPECT_EQ(crc.get(), 0xd4c2968b);
+ for (int i=256; i < 10000; ++i)
+ crc.update(i);
+ EXPECT_EQ(crc.get(), 0x6de9e841);
+}
+
+
+TEST(CRC32Test, update_array) {
+ CRC32 crc;
+ uint8_t vals[256];
+ // add 8 bit values
+ for (int i=0; i < 256; ++i)
+ vals[i] = i;
+ crc.update(vals, 256);
+ EXPECT_EQ(crc.get(), 0x29058c73);
+}
+
+
+TEST(CRC32Test, update_string) {
+ CRC32 crc;
+ crc.update("dvisvgm converts DVI files to SVG.");
+ EXPECT_EQ(crc.get(), 0x7c4ef359);
+ crc.update("It is published under the GNU General Public License.");
+ EXPECT_EQ(crc.get(), 0xa732081b);
+}
+
+
+TEST(CRC32Test, compute) {
+ EXPECT_EQ(CRC32::compute("dvisvgm converts DVI files to SVG."), 0x7c4ef359);
+ istringstream iss;
+ iss.str("It is published under the GNU General Public License.");
+ EXPECT_EQ(CRC32::compute(iss), 0xbc02ba40);
+} \ No newline at end of file
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CalculatorTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CalculatorTest.cpp
new file mode 100644
index 00000000000..59c9666660b
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CalculatorTest.cpp
@@ -0,0 +1,60 @@
+/*************************************************************************
+** CalculatorTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "Calculator.hpp"
+
+TEST(CalculatorTest, eval) {
+ Calculator calc;
+ EXPECT_EQ(calc.eval("2+3+4"), 9);
+ EXPECT_EQ(calc.eval("2*3+4"), 10);
+ EXPECT_EQ(calc.eval("2+3*4"), 14);
+ EXPECT_EQ(calc.eval("(2+3)*4"), 20);
+ EXPECT_EQ(calc.eval("2*(3+4)"), 14);
+ EXPECT_EQ(calc.eval("-2+3+4"), 5);
+ EXPECT_EQ(calc.eval("3/2"), 1.5);
+ EXPECT_EQ(calc.eval("3%2"), 1);
+}
+
+
+TEST(CalculatorTest, variables) {
+ Calculator calc;
+ calc.setVariable("a", 1);
+ EXPECT_EQ(calc.getVariable("a"), 1);
+
+ calc.setVariable("a", 2);
+ EXPECT_EQ(calc.getVariable("a"), 2);
+
+ calc.setVariable("b", 3);
+ EXPECT_EQ(calc.eval("a+b"), 5);
+ EXPECT_EQ(calc.eval("2a+2b"), 10);
+}
+
+
+TEST(CalculatorTest, exceptions) {
+ Calculator calc;
+ ASSERT_THROW(calc.eval("2++3"), CalculatorException);
+ ASSERT_THROW(calc.eval("c"), CalculatorException);
+ ASSERT_THROW(calc.eval("1/0"), CalculatorException);
+ ASSERT_THROW(calc.eval("1%0"), CalculatorException);
+ ASSERT_THROW(calc.eval("2*(3+4"), CalculatorException);
+ ASSERT_THROW(calc.eval("2*(3+4))"), CalculatorException);
+}
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorSpecialTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorSpecialTest.cpp
new file mode 100644
index 00000000000..30e0d3dbece
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorSpecialTest.cpp
@@ -0,0 +1,106 @@
+/*************************************************************************
+** ColorSpecialTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <sstream>
+#include "ColorSpecialHandler.hpp"
+#include "SpecialActions.hpp"
+
+class ColorSpecialTest : public ::testing::Test
+{
+ protected:
+ struct SetColor : EmptySpecialActions
+ {
+ SetColor () : color(0) {}
+ void setColor (const Color &c) {color = c;}
+ bool equals (uint32_t c) {return color == c;}
+ uint32_t color;
+ };
+ ColorSpecialHandler handler;
+ SetColor actions;
+};
+
+
+TEST_F(ColorSpecialTest, readColor) {
+ std::istringstream iss("rgb 1 0 1");
+ EXPECT_EQ(ColorSpecialHandler::readColor(iss).rgbString(), "#ff00ff");
+ iss.clear();
+ iss.str("hsb 1 0.5 1");
+ EXPECT_EQ(ColorSpecialHandler::readColor(iss).rgbString(), "#ff8080");
+ iss.clear();
+ iss.str("0 1 0");
+ EXPECT_EQ(ColorSpecialHandler::readColor("rgb", iss).rgbString(), "#00ff00");
+ iss.clear();
+ iss.str("1 0.5 1");
+ EXPECT_EQ(ColorSpecialHandler::readColor("hsb", iss).rgbString(), "#ff8080");
+}
+
+
+TEST_F(ColorSpecialTest, rgb) {
+ std::istringstream iss("rgb 1 0 1");
+ handler.process(0, iss, actions);
+ EXPECT_TRUE(actions.equals(0xff00ff));
+}
+
+
+TEST_F(ColorSpecialTest, hsb) {
+ std::istringstream iss("hsb 1 0.5 1");
+ handler.process(0, iss, actions);
+ EXPECT_TRUE(actions.equals(0xff8080));
+}
+
+
+TEST_F(ColorSpecialTest, cmyk) {
+ std::istringstream iss("cmyk 0.1 0.2 0.4 0.6");
+ handler.process(0, iss, actions);
+ EXPECT_TRUE(actions.equals(0x5c523d));
+}
+
+
+TEST_F(ColorSpecialTest, stack) {
+ std::istringstream iss("push rgb 1 0 0");
+ handler.process(0, iss, actions);
+ EXPECT_TRUE(actions.equals(0xff0000));
+ iss.clear();
+ iss.str("push Blue");
+ handler.process(0, iss, actions);
+ EXPECT_TRUE(actions.equals(0x0000ff));
+ iss.clear();
+ iss.str("pop");
+ handler.process(0, iss, actions);
+ EXPECT_TRUE(actions.equals(0xff0000));
+}
+
+
+TEST_F(ColorSpecialTest, constant) {
+ std::istringstream iss("RedViolet");
+ handler.process(0, iss, actions);
+ EXPECT_TRUE(actions.equals(0x9600a8));
+}
+
+
+TEST_F(ColorSpecialTest, errors) {
+ std::istringstream iss("UnknownColor");
+ EXPECT_THROW(handler.process(0, iss, actions), SpecialException);
+ iss.clear();
+ iss.str("blue");
+ EXPECT_THROW(handler.process(0, iss, actions), SpecialException);
+}
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorTest.cpp
new file mode 100644
index 00000000000..07946422bab
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorTest.cpp
@@ -0,0 +1,158 @@
+/*************************************************************************
+** ColorTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "Color.hpp"
+
+using namespace std;
+
+TEST(ColorTest, construct) {
+ Color c1(uint8_t(1), uint8_t(2), uint8_t(3));
+ EXPECT_EQ(c1.rgbString(), "#010203");
+ Color c2(1.0/255, 2.0/255, 3.0/255);
+ EXPECT_EQ(c2.rgbString(), "#010203");
+ Color c3 = "Blue";
+ EXPECT_EQ(c3.rgbString(), "#0000ff");
+ Color c4 = "blue";
+ EXPECT_EQ(c4.rgbString(), "#0000ff");
+}
+
+
+TEST(ColorTest, gray) {
+ Color c;
+ c.setGray(10.0/255);
+ EXPECT_EQ(c.rgbString(), "#0a0a0a");
+ c.setGray(uint8_t(15));
+ EXPECT_EQ(c.rgbString(), "#0f0f0f");
+}
+
+
+TEST(ColorTest, hsb) {
+ Color c;
+ c.setHSB(0.0, 1.0, 1.0);
+ EXPECT_EQ(c.rgbString(), "#ff0000");
+ c.setHSB(120.0/360, 1.0, 1.0);
+ EXPECT_EQ(c.rgbString(), "#00ff00");
+ c.setHSB(20.0/360, 0.75, 0.8);
+ EXPECT_EQ(c.rgbString(), "#cc6633");
+}
+
+
+TEST(ColorTest, cmyk) {
+ Color c;
+ c.setCMYK(0.5, 0.4, 0.6, 0.2);
+ EXPECT_EQ(c.rgbString(), "#667a52");
+}
+
+
+TEST(ColorTest, name) {
+ Color c;
+ EXPECT_TRUE(c.setPSName("Magenta"));
+ EXPECT_EQ(c.rgbString(), "#ff00ff");
+ EXPECT_FALSE(c.setPSName("mulberry"));
+ EXPECT_TRUE(c.setPSName("mulberry", false));
+ EXPECT_EQ(c.rgbString(), "#a314f9");
+
+ EXPECT_FALSE(c.setPSName("#Magenta"));
+ EXPECT_FALSE(c.setPSName("#bcdefg"));
+ EXPECT_TRUE(c.setPSName("#abcdef"));
+ EXPECT_EQ(c.rgbString(), "#abcdef");
+ EXPECT_TRUE(c.setPSName("#89A"));
+ EXPECT_EQ(c.rgbString(), "#00089a");
+}
+
+
+TEST(ColorTest, getXYZ) {
+ Color c;
+ double x, y, z;
+ c.setRGB(1.0, 0, 0);
+ c.getXYZ(x, y, z);
+ EXPECT_NEAR(x, 0.412456, 0.000001);
+ EXPECT_NEAR(y, 0.212673, 0.000001);
+ EXPECT_NEAR(z, 0.019334, 0.000001);
+
+ c.setRGB(0, 1.0, 0);
+ c.getXYZ(x, y, z);
+ EXPECT_NEAR(x, 0.357576, 0.000001);
+ EXPECT_NEAR(y, 0.715152, 0.000001);
+ EXPECT_NEAR(z, 0.119192, 0.000001);
+
+ c.setRGB(0, 0, 1.0);
+ c.getXYZ(x, y, z);
+ EXPECT_NEAR(x, 0.180437, 0.000001);
+ EXPECT_NEAR(y, 0.072175, 0.000001);
+ EXPECT_NEAR(z, 0.950304, 0.000001);
+
+ valarray<double> rgb(3), xyz(3);
+ rgb[0] = 0.2;
+ rgb[1] = 0.75;
+ rgb[2] = 0.9;
+ Color::RGB2XYZ(rgb, xyz);
+ EXPECT_NEAR(xyz[0], 0.342574, 0.000001);
+ EXPECT_NEAR(xyz[1], 0.437554, 0.000001);
+ EXPECT_NEAR(xyz[2], 0.811202, 0.000001);
+}
+
+
+TEST(ColorTest, getLab) {
+ Color c;
+ double l, a, b;
+ c.setRGB(1.0, 0, 0);
+ c.getLab(l, a, b);
+ EXPECT_NEAR(l, 53.2408, 0.0001);
+ EXPECT_NEAR(a, 80.0925, 0.0001);
+ EXPECT_NEAR(b, 67.2032, 0.0001);
+
+ c.setRGB(0, 1.0, 0);
+ c.getLab(l, a, b);
+ EXPECT_NEAR(l, 87.7347, 0.0001);
+ EXPECT_NEAR(a, -86.1827, 0.0001);
+ EXPECT_NEAR(b, 83.1793, 0.0001);
+
+ c.setRGB(0, 0, 1.0);
+ c.getLab(l, a, b);
+ EXPECT_NEAR(l, 32.2970, 0.0001);
+ EXPECT_NEAR(a, 79.1875, 0.0001);
+ EXPECT_NEAR(b, -107.8602, 0.0001);
+
+ valarray<double> rgb(3), lab(3);
+ rgb[0] = 0.2;
+ rgb[1] = 0.75;
+ rgb[2] = 0.9;
+ Color::RGB2Lab(rgb, lab);
+ EXPECT_NEAR(lab[0], 72.0647, 0.0001);
+ EXPECT_NEAR(lab[1], -23.7597, 0.0001);
+ EXPECT_NEAR(lab[2], -29.4733, 0.0001);
+}
+
+
+TEST(ColorTest, svgColorString) {
+ EXPECT_EQ(Color(uint32_t(0x000000)).svgColorString(false), "black");
+ EXPECT_EQ(Color(uint32_t(0xffffff)).svgColorString(false), "white");
+ EXPECT_EQ(Color(uint32_t(0xff0000)).svgColorString(false), "red");
+ EXPECT_EQ(Color(uint32_t(0x9400d3)).svgColorString(false), "darkviolet");
+ EXPECT_EQ(Color(uint32_t(0x000001)).svgColorString(false), "#000001");
+
+ EXPECT_EQ(Color(uint32_t(0x000000)).svgColorString(true), "#000000");
+ EXPECT_EQ(Color(uint32_t(0xffffff)).svgColorString(true), "#ffffff");
+ EXPECT_EQ(Color(uint32_t(0xff0000)).svgColorString(true), "#ff0000");
+ EXPECT_EQ(Color(uint32_t(0x9400d3)).svgColorString(true), "#9400d3");
+ EXPECT_EQ(Color(uint32_t(0x000001)).svgColorString(true), "#000001");
+} \ No newline at end of file
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CommandLineTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CommandLineTest.cpp
new file mode 100644
index 00000000000..4efd95bf2ef
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CommandLineTest.cpp
@@ -0,0 +1,245 @@
+/*************************************************************************
+** CommandLineTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <sstream>
+#include "CommandLine.hpp"
+
+using namespace std;
+
+TEST(CommandLineTest, noarg_short) {
+ CommandLine cmd;
+ const char *args[] = {"progname", "-s", "-n", "-h"};
+ char **argv = const_cast<char**>(args);
+ cmd.parse(4, argv);
+
+ EXPECT_TRUE(cmd.stdoutOpt.given());
+ EXPECT_TRUE(cmd.noFontsOpt.given());
+ EXPECT_TRUE(cmd.helpOpt.given());
+ EXPECT_FALSE(cmd.listSpecialsOpt.given());
+ EXPECT_FALSE(cmd.verbosityOpt.given());
+ EXPECT_EQ(cmd.verbosityOpt.value(), 7);
+ EXPECT_EQ(cmd.filenames().size(), 0);
+}
+
+
+TEST(CommandLineTest, noarg_long) {
+ CommandLine cmd;
+ const char *args[] = {"progname", "--progress", "--no-fonts", "--stdout", "--help", "--verbosity=5"};
+ char **argv = const_cast<char**>(args);
+ cmd.parse(6, argv);
+
+ EXPECT_TRUE(cmd.progressOpt.given());
+ EXPECT_DOUBLE_EQ(cmd.progressOpt.value(), 0.5);
+ EXPECT_TRUE(cmd.stdoutOpt.given());
+ EXPECT_TRUE(cmd.noFontsOpt.given());
+ EXPECT_TRUE(cmd.helpOpt.given());
+ EXPECT_FALSE(cmd.listSpecialsOpt.given());
+ EXPECT_EQ(cmd.filenames().size(), 0);
+ EXPECT_TRUE(cmd.verbosityOpt.given());
+ EXPECT_EQ(cmd.verbosityOpt.value(), 5);
+}
+
+
+TEST(CommandLineTest, arg_short) {
+ CommandLine cmd;
+ const char *args[] = {"progname", "-P", "-p5", "-r45", "-omyfile.xyz", "-ayes", "-v3"};
+ char **argv = const_cast<char**>(args);
+ cmd.parse(7, argv);
+
+ EXPECT_TRUE(cmd.progressOpt.given());
+ EXPECT_DOUBLE_EQ(cmd.progressOpt.value(), 0.5);
+ EXPECT_TRUE(cmd.pageOpt.given());
+ EXPECT_EQ(cmd.pageOpt.value(), "5");
+ EXPECT_TRUE(cmd.rotateOpt.given());
+ EXPECT_EQ(cmd.rotateOpt.value(), 45);
+ EXPECT_TRUE(cmd.outputOpt.given());
+ EXPECT_EQ(cmd.outputOpt.value(), "myfile.xyz");
+ EXPECT_FALSE(cmd.bboxOpt.given());
+ EXPECT_EQ(cmd.bboxOpt.value(), "min");
+ EXPECT_EQ(cmd.filenames().size(), 0);
+ EXPECT_TRUE(cmd.traceAllOpt.given());
+ EXPECT_TRUE(cmd.traceAllOpt.value());
+ EXPECT_TRUE(cmd.verbosityOpt.given());
+ EXPECT_EQ(cmd.verbosityOpt.value(), 3);
+}
+
+
+TEST(CommandLineTest, arg_combined) {
+ CommandLine cmd;
+ const char *args1[] = {"progname", "-lse", "-p5", "-omyfile.xyz"};
+ char **argv = const_cast<char**>(args1);
+ cmd.parse(4, argv);
+ EXPECT_TRUE(cmd.pageOpt.given());
+ EXPECT_EQ(cmd.pageOpt.value(), "5");
+ EXPECT_TRUE(cmd.listSpecialsOpt.given());
+ EXPECT_TRUE(cmd.stdoutOpt.given());
+ EXPECT_TRUE(cmd.exactOpt.given());
+
+ // can't combine short options that accept optional parameters
+ const char *args2[] = {"progname", "-nls", "-p5", "-omyfile.xyz"};
+ argv = const_cast<char**>(args2);
+ EXPECT_THROW(cmd.parse(4, argv), CL::CommandLineException);
+}
+
+
+TEST(CommandLineTest, arg_separated) {
+ CommandLine cmd;
+ const char *args[] = {"progname", "-p", "5", "-r", "45", "myfile.xyz", "-afalse"};
+ char **argv = const_cast<char**>(args);
+ cmd.parse(7, argv);
+
+ EXPECT_TRUE(cmd.pageOpt.given());
+ EXPECT_EQ(cmd.pageOpt.value(), "5");
+ EXPECT_TRUE(cmd.rotateOpt.given());
+ EXPECT_EQ(cmd.rotateOpt.value(), 45);
+ EXPECT_EQ(cmd.filenames().size(), 1);
+ EXPECT_TRUE(cmd.traceAllOpt.given());
+ EXPECT_FALSE(cmd.traceAllOpt.value());
+}
+
+
+TEST(CommandLineTest, arg_long) {
+ CommandLine cmd;
+ const char *args[] = {"progname", "--page=9", "--rotate=-45.5", "--trace-all", "--output=myfile.zyx"};
+ char **argv = const_cast<char**>(args);
+ cmd.parse(5, argv);
+
+ EXPECT_TRUE(cmd.pageOpt.given());
+ EXPECT_EQ(cmd.pageOpt.value(), "9");
+ EXPECT_TRUE(cmd.rotateOpt.given());
+ EXPECT_EQ(cmd.rotateOpt.value(), -45.5);
+ EXPECT_TRUE(cmd.outputOpt.given());
+ EXPECT_EQ(cmd.outputOpt.value(), "myfile.zyx");
+ EXPECT_FALSE(cmd.bboxOpt.given());
+ EXPECT_EQ(cmd.bboxOpt.value(), "min");
+ EXPECT_EQ(cmd.filenames().size(), 0);
+ EXPECT_TRUE(cmd.traceAllOpt.given());
+ EXPECT_FALSE(cmd.traceAllOpt.value());
+}
+
+
+TEST(CommandLineTest, string_arg) {
+ CommandLine cmd;
+ const char *args[] = {"progname", "--page=9 - 10", "-m first second"};
+ char **argv = const_cast<char**>(args);
+ cmd.parse(3, argv);
+
+ EXPECT_TRUE(cmd.pageOpt.given());
+ EXPECT_EQ(cmd.pageOpt.value(), "9 - 10");
+ EXPECT_TRUE(cmd.fontmapOpt.given());
+ EXPECT_EQ(cmd.fontmapOpt.value(), "first second");
+}
+
+
+TEST(CommandLineTest, abbrev_long) {
+ CommandLine cmd;
+ const char *args[] = {"progname", "--pa=9", "--rot=-45.5", "--out=myfile.zyx", "--color"};
+ char **argv = const_cast<char**>(args);
+ cmd.parse(5, argv);
+
+ EXPECT_TRUE(cmd.pageOpt.given());
+ EXPECT_EQ(cmd.pageOpt.value(), "9");
+ EXPECT_TRUE(cmd.rotateOpt.given());
+ EXPECT_EQ(cmd.rotateOpt.value(), -45.5);
+ EXPECT_TRUE(cmd.outputOpt.given());
+ EXPECT_EQ(cmd.outputOpt.value(), "myfile.zyx");
+ EXPECT_FALSE(cmd.bboxOpt.given());
+ EXPECT_EQ(cmd.bboxOpt.value(), "min");
+ EXPECT_EQ(cmd.filenames().size(), 0);
+ EXPECT_TRUE(cmd.colorOpt.given());
+}
+
+
+TEST(CommandLineTest, error) {
+ CommandLine cmd;
+ // error on wrong argument type
+ const char *args1[] = {"progname", "--rotate=x"};
+ char **argv = const_cast<char**>(args1);
+
+ EXPECT_THROW(cmd.parse(2, argv), CL::CommandLineException);
+
+ // error on missing arguments
+ const char *args2[] = {"progname", "--page", "--zip"};
+ argv = const_cast<char**>(args2);
+ EXPECT_THROW(cmd.parse(3, argv), CL::CommandLineException);
+ EXPECT_FALSE(cmd.zipOpt.given());
+ EXPECT_EQ(cmd.zipOpt.value(), 9);
+ EXPECT_FALSE(cmd.pageOpt.given());
+ EXPECT_EQ(cmd.pageOpt.value(), "1");
+ EXPECT_FALSE(cmd.rotateOpt.given());
+ EXPECT_EQ(cmd.filenames().size(), 0);
+
+ // error on ambiguous abbreviation of long option
+ const char *args3[] = {"progname", "--no"};
+ argv = const_cast<char**>(args3);
+ EXPECT_THROW(cmd.parse(2, argv), CL::CommandLineException);
+
+ // incorrect boolean value
+ const char *args4[] = {"progname", "--trace-all=nope"};
+ argv = const_cast<char**>(args4);
+ EXPECT_THROW(cmd.parse(2, argv), CL::CommandLineException);
+ EXPECT_FALSE(cmd.traceAllOpt.given());
+}
+
+
+TEST(CommandLineTest, file) {
+ CommandLine cmd;
+ const char *args1[] = {"progname", "--page=3", "-z5", "myfile1", "-l", "myfile2"};
+ char **argv = const_cast<char**>(args1);
+ cmd.parse(6, argv);
+
+ EXPECT_TRUE(cmd.pageOpt.given());
+ EXPECT_EQ(cmd.pageOpt.value(), "3");
+ EXPECT_TRUE(cmd.zipOpt.given());
+ EXPECT_EQ(cmd.zipOpt.value(), 5);
+ EXPECT_TRUE(cmd.listSpecialsOpt.given());
+ EXPECT_EQ(cmd.filenames().size(), 2);
+ EXPECT_EQ(cmd.filenames()[0], "myfile1");
+ EXPECT_EQ(cmd.filenames()[1], "myfile2");
+}
+
+
+TEST(CommandLineTest, files_only) {
+ CommandLine cmd;
+ const char *args1[] = {"progname", "--page=3", "-z5", "--", "-l", "myfile"};
+ char **argv = const_cast<char**>(args1);
+ cmd.parse(6, argv);
+
+ EXPECT_TRUE(cmd.pageOpt.given());
+ EXPECT_EQ(cmd.pageOpt.value(), "3");
+ EXPECT_TRUE(cmd.zipOpt.given());
+ EXPECT_EQ(cmd.zipOpt.value(), 5);
+ EXPECT_EQ(cmd.filenames().size(), 2);
+ EXPECT_EQ(cmd.filenames()[0], "-l");
+ EXPECT_EQ(cmd.filenames()[1], "myfile");
+}
+
+
+static void out (const char *) {}
+
+TEST(CommandLineTest, help) {
+ // only check whether help() succeeds
+ CommandLine cmd;
+ ostringstream oss;
+ cmd.help(oss, 0);
+ cmd.help(oss, 1);
+ cmd.help(oss, 2);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/DependencyGraphTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/DependencyGraphTest.cpp
new file mode 100644
index 00000000000..79c702c76ec
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/DependencyGraphTest.cpp
@@ -0,0 +1,56 @@
+/*************************************************************************
+** DependencyGraphTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "DependencyGraph.hpp"
+
+static void populate (DependencyGraph<int> &tree) {
+ tree.insert(1);
+ tree.insert(2);
+ tree.insert(1, 3);
+ tree.insert(1, 4);
+ tree.insert(1, 5);
+ tree.insert(4, 6);
+ tree.insert(4, 7);
+}
+
+
+TEST(DependencyGraphTest, insert) {
+ DependencyGraph<int> graph;
+ populate(graph);
+ for (int i=1; i <= 7; i++)
+ ASSERT_TRUE(graph.contains(i));
+ ASSERT_FALSE(graph.contains(0));
+ ASSERT_FALSE(graph.contains(8));
+}
+
+
+TEST(DependencyGraphTest, removeDependencyPath) {
+ DependencyGraph<int> graph;
+ populate(graph);
+ graph.removeDependencyPath(4);
+ ASSERT_FALSE(graph.contains(1));
+ ASSERT_TRUE(graph.contains(2));
+ ASSERT_TRUE(graph.contains(3));
+ ASSERT_FALSE(graph.contains(4));
+ ASSERT_TRUE(graph.contains(5));
+ ASSERT_TRUE(graph.contains(6));
+ ASSERT_TRUE(graph.contains(7));
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/DirectoryTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/DirectoryTest.cpp
new file mode 100644
index 00000000000..0f916c97818
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/DirectoryTest.cpp
@@ -0,0 +1,65 @@
+/*************************************************************************
+** DirectoryTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <iostream>
+#include <set>
+#include <unistd.h>
+#include "Directory.hpp"
+#include "FileSystem.hpp"
+
+#ifndef SRCDIR
+#define SRCDIR "."
+#endif
+
+
+using namespace std;
+
+TEST(DirectoryTest, dirs) {
+ const char *dirs_to_find[] = {"doc", "src", 0};
+ set<string> found_dirs;
+ Directory dir("..");
+ while (const char *dname = dir.read(Directory::ET_DIR))
+ found_dirs.insert(dname);
+ for (const char **p=dirs_to_find; *p; ++p) {
+ EXPECT_TRUE(found_dirs.find(*p) != found_dirs.end());
+ }
+}
+
+
+TEST(DirectoryTest, file) {
+ const char *files_to_find[] = {
+ "Bitmap.cpp", "BoundingBox.cpp", "Calculator.cpp",
+ "Directory.cpp", "DVIReader.cpp", "DVIToSVG.cpp", "DVIToSVGActions.cpp",
+ "FileSystem.cpp", "Font.cpp", "FontEngine.cpp", "FontManager.cpp",
+ "FontMap.cpp", "GFReader.cpp", "GFTracer.cpp", "FileFinder.cpp", "Message.cpp",
+ "MetafontWrapper.cpp", "PageSize.cpp", "StreamReader.cpp",
+ "TFM.cpp", "VFReader.cpp", "XMLDocument.cpp", "XMLNode.cpp", "XMLString.cpp",
+ 0
+ };
+ set<string> found_files;
+ Directory dir(string(SRCDIR)+"/../src");
+ while (const char *fname = dir.read(Directory::ET_FILE))
+ found_files.insert(fname);
+ for (const char **p=files_to_find; *p; ++p) {
+ EXPECT_TRUE(found_files.find(*p) != found_files.end());
+ }
+ EXPECT_TRUE(found_files.find("tests") == found_files.end());
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp
new file mode 100644
index 00000000000..2c66dfe5d90
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp
@@ -0,0 +1,226 @@
+/*************************************************************************
+** DvisvgmSpecialTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <sstream>
+#include "DvisvgmSpecialHandler.hpp"
+#include "SpecialActions.hpp"
+#include "XMLNode.hpp"
+
+using namespace std;
+
+class MyDvisvgmSpecialHandler : public DvisvgmSpecialHandler
+{
+ public:
+ void finishPreprocessing () {dviPreprocessingFinished();}
+ void finishPage () {dviEndPage(0, emptyActions);}
+
+ protected:
+ EmptySpecialActions emptyActions;
+};
+
+
+class DvisvgmSpecialTest : public ::testing::Test
+{
+ protected:
+ class ActionsRecorder : public EmptySpecialActions
+ {
+ public:
+ ActionsRecorder () : defs(""), page("") {}
+ void appendToDefs (XMLNode *node) {defs.append(node);}
+ void appendToPage (XMLNode *node) {page.append(node);}
+ void embed (const BoundingBox &bb) {bbox.embed(bb);}
+ double getX () const {return 0;}
+ double getY () const {return 0;}
+ void clear () {defs.clear(); page.clear(); bbox=BoundingBox(0, 0, 0, 0);}
+ bool defsEquals (const string &str) const {return defs.getText() == str;}
+ bool pageEquals (const string &str) const {return page.getText() == str;}
+ bool bboxEquals (const string &str) const {return bbox.toSVGViewBox() == str;}
+ const Matrix& getMatrix () const {static Matrix m(1); return m;}
+
+ void write (ostream &os) const {
+ os << "defs: " << defs.getText() << '\n'
+ << "page: " << page.getText() << '\n'
+ << "bbox: " << bbox.toSVGViewBox() << '\n';
+ }
+
+ private:
+ XMLTextNode defs, page;
+ BoundingBox bbox;
+ };
+
+ void SetUp () {
+ recorder.clear();
+ }
+
+ protected:
+ MyDvisvgmSpecialHandler handler;
+ ActionsRecorder recorder;
+};
+
+
+TEST_F(DvisvgmSpecialTest, basic) {
+ EXPECT_EQ(handler.name(), "dvisvgm");
+}
+
+
+TEST_F(DvisvgmSpecialTest, raw) {
+ istringstream iss("raw first{?nl}");
+ handler.process(0, iss, recorder);
+ EXPECT_TRUE(recorder.defsEquals(""));
+ EXPECT_TRUE(recorder.pageEquals("first\n"));
+
+ iss.clear(); iss.str("raw \t second {?bbox dummy} \t");
+ handler.process(0, iss, recorder);
+ EXPECT_TRUE(recorder.defsEquals(""));
+ EXPECT_TRUE(recorder.pageEquals("first\nsecond 0 0 0 0"));
+}
+
+
+TEST_F(DvisvgmSpecialTest, rawdef) {
+ std::istringstream iss("rawdef first");
+ handler.process(0, iss, recorder);
+ EXPECT_TRUE(recorder.defsEquals("first"));
+ EXPECT_TRUE(recorder.pageEquals(""));
+
+ iss.clear(); iss.str("rawdef \t second \t");
+ handler.process(0, iss, recorder);
+ EXPECT_TRUE(recorder.defsEquals("firstsecond"));
+ EXPECT_TRUE(recorder.pageEquals(""));
+}
+
+
+TEST_F(DvisvgmSpecialTest, pattern1) {
+ const char *cmds[] = {
+ "rawset pat1",
+ "raw text1",
+ "raw text2",
+ "endrawset",
+ "raw first",
+ "rawput pat1",
+ "rawput pat1",
+ };
+ for (size_t i=0; i < sizeof(cmds)/sizeof(char*); i++) {
+ std::istringstream iss(cmds[i]);
+ handler.preprocess(0, iss, recorder);
+ }
+ handler.finishPreprocessing();
+ for (size_t i=0; i < sizeof(cmds)/sizeof(char*); i++) {
+ std::istringstream iss(cmds[i]);
+ handler.process(0, iss, recorder);
+ }
+ handler.finishPage();
+ EXPECT_TRUE(recorder.defsEquals(""));
+ EXPECT_TRUE(recorder.pageEquals("firsttext1text2text1text2"));
+}
+
+
+TEST_F(DvisvgmSpecialTest, pattern2) {
+ const char *cmds[] = {
+ "rawset pat2",
+ "rawdef text1",
+ "rawdef text2",
+ "endrawset",
+ "rawdef first",
+ "rawput pat2",
+ "rawput pat2",
+ };
+ for (size_t i=0; i < sizeof(cmds)/sizeof(char*); i++) {
+ std::istringstream iss(cmds[i]);
+ handler.preprocess(0, iss, recorder);
+ }
+ handler.finishPreprocessing();
+ for (size_t i=0; i < sizeof(cmds)/sizeof(char*); i++) {
+ std::istringstream iss(cmds[i]);
+ handler.process(0, iss, recorder);
+ }
+ handler.finishPage();
+ EXPECT_TRUE(recorder.defsEquals("firsttext1text2"));
+ EXPECT_TRUE(recorder.pageEquals(""));
+}
+
+
+TEST_F(DvisvgmSpecialTest, pattern3) {
+ const char *cmds[] = {
+ "rawset pat3",
+ "raw text1",
+ "rawdef text2",
+ "endrawset",
+ "rawdef first",
+ "raw second",
+ "rawput pat3",
+ "rawput pat3",
+ };
+ for (size_t i=0; i < sizeof(cmds)/sizeof(char*); i++) {
+ std::istringstream iss(cmds[i]);
+ handler.preprocess(0, iss, recorder);
+ }
+ handler.finishPreprocessing();
+ for (size_t i=0; i < sizeof(cmds)/sizeof(char*); i++) {
+ std::istringstream iss(cmds[i]);
+ handler.process(0, iss, recorder);
+ }
+ EXPECT_TRUE(recorder.defsEquals("firsttext2"));
+ EXPECT_TRUE(recorder.pageEquals("secondtext1text1"));
+ handler.finishPage();
+}
+
+
+TEST_F(DvisvgmSpecialTest, fail1) {
+ std::istringstream iss("rawset"); // pattern name missing
+ EXPECT_THROW(handler.preprocess(0, iss, recorder), SpecialException);
+ handler.finishPreprocessing();
+}
+
+
+TEST_F(DvisvgmSpecialTest, fail2) {
+ std::istringstream iss("rawset pat"); // endrawset missing
+ handler.preprocess(0, iss, recorder);
+ EXPECT_THROW(handler.finishPreprocessing(), SpecialException);
+}
+
+
+TEST_F(DvisvgmSpecialTest, processImg) {
+ std::istringstream iss("img 72.27 72.27 test.png");
+ handler.process(0, iss, recorder);
+ EXPECT_TRUE(recorder.defsEquals(""));
+ EXPECT_TRUE(recorder.pageEquals("&lt;image height=&apos;72&apos; width=&apos;72&apos; x=&apos;0&apos; xlink:href=&apos;test.png&apos; y=&apos;0&apos;/>"));
+}
+
+
+TEST_F(DvisvgmSpecialTest, processBBox) {
+ std::istringstream iss("bbox abs 0 0 72.27 72.27");
+ handler.process(0, iss, recorder);
+ EXPECT_TRUE(recorder.defsEquals(""));
+ EXPECT_TRUE(recorder.pageEquals(""));
+ EXPECT_TRUE(recorder.bboxEquals("0 0 72 72"));
+
+ recorder.clear();
+ iss.clear();
+ iss.str("bbox 72.27 72.27");
+ handler.process(0, iss, recorder);
+ EXPECT_TRUE(recorder.bboxEquals("0 -72 72 72"));
+
+ recorder.clear();
+ iss.clear();
+ iss.str("bbox new name");
+ handler.process(0, iss, recorder);
+ EXPECT_TRUE(recorder.bboxEquals("0 0 0 0"));
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/EmSpecialTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/EmSpecialTest.cpp
new file mode 100644
index 00000000000..7d885f1b7e2
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/EmSpecialTest.cpp
@@ -0,0 +1,202 @@
+/*************************************************************************
+** EmSpecialTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <sstream>
+#include "EmSpecialHandler.hpp"
+#include "SpecialActions.hpp"
+#include "XMLNode.hpp"
+#include "XMLString.hpp"
+
+using namespace std;
+
+
+class EmSpecialTest : public ::testing::Test
+{
+ protected:
+ class ActionsRecorder : public EmptySpecialActions
+ {
+ public:
+ ActionsRecorder () : page("page") {}
+ void appendToPage (XMLNode *node) {page.append(node);}
+ void embed (const BoundingBox &bb) {bbox.embed(bb);}
+ void setX (double xx) {x = xx;}
+ void setY (double yy) {x = yy;}
+ double getX () const {return x;}
+ double getY () const {return y;}
+ Color getColor () const {return color;}
+ void setColor (const Color &c) {color = c;}
+ void clear () {page.clear(); bbox=BoundingBox(0, 0, 0, 0);}
+ string getPageXML () const {ostringstream oss; oss << page; return oss.str();}
+ const Matrix& getMatrix () const {static Matrix m(1); return m;}
+
+ void write (ostream &os) const {
+ os << "page: " << page << '\n'
+ << "bbox: " << bbox.toSVGViewBox() << '\n';
+ }
+
+ private:
+ double x, y;
+ Color color;
+ XMLElementNode page;
+ BoundingBox bbox;
+ };
+
+
+ class MyEmSpecialHandler : public EmSpecialHandler
+ {
+ public:
+ MyEmSpecialHandler (SpecialActions &a) : actions(a) {}
+ void finishPage () {dviEndPage(0, actions);}
+ void processSpecial (const string &str) {stringstream ss; ss << str; process("em", ss, actions);}
+
+ protected:
+ SpecialActions &actions;
+ };
+
+ public:
+ EmSpecialTest () : handler(recorder) {}
+
+ void SetUp () {
+ recorder.clear();
+ }
+
+
+ protected:
+ ActionsRecorder recorder;
+ MyEmSpecialHandler handler;
+};
+
+
+TEST_F(EmSpecialTest, basic) {
+ EXPECT_EQ(handler.name(), "em");
+}
+
+
+TEST_F(EmSpecialTest, lines1) {
+ DPair p[] = {DPair(0,0), DPair(0,10), DPair(10,10), DPair(10,0)};
+ int n = sizeof(p)/sizeof(DPair);
+ for (int i=0; i < n; i++) {
+ recorder.setX(p[i].x());
+ recorder.setY(p[i].y());
+ handler.processSpecial(string("point ")+XMLString(i));
+ }
+ EXPECT_EQ(recorder.getPageXML(), "<page/>");
+ handler.processSpecial("linewidth 2bp");
+ for (int i=0; i < n; i++)
+ handler.processSpecial(string("line ")+XMLString(i)+", "+XMLString((i+1)%n));
+ EXPECT_EQ(recorder.getPageXML(),
+ "<page>\n"
+ "<line stroke='#000000' stroke-width='2' x1='0' x2='10' y1='0' y2='0'/>\n"
+ "<line stroke='#000000' stroke-width='2' x1='10' x2='10' y1='0' y2='0'/>\n"
+ "<line stroke='#000000' stroke-width='2' x1='10' x2='0' y1='0' y2='0'/>\n"
+ "<line stroke='#000000' stroke-width='2' x1='0' x2='0' y1='0' y2='0'/>\n"
+ "</page>"
+ );
+}
+
+
+TEST_F(EmSpecialTest, lines2) {
+ DPair p[] = {DPair(0,0), DPair(0,10), DPair(10,10), DPair(10,0)};
+ int n = sizeof(p)/sizeof(DPair);
+ handler.processSpecial("linewidth 2bp");
+ // define lines prior to the points
+ for (int i=0; i < n; i++)
+ handler.processSpecial(string("line ")+XMLString(i)+", "+XMLString((i+1)%n));
+ // define points
+ for (int i=0; i < n; i++) {
+ recorder.setX(p[i].x());
+ recorder.setY(p[i].y());
+ handler.processSpecial(string("point ")+XMLString(i));
+ }
+ handler.finishPage();
+ EXPECT_EQ(recorder.getPageXML(),
+ "<page>\n"
+ "<line stroke='#000000' stroke-width='2' x1='0' x2='10' y1='0' y2='0'/>\n"
+ "<line stroke='#000000' stroke-width='2' x1='10' x2='10' y1='0' y2='0'/>\n"
+ "<line stroke='#000000' stroke-width='2' x1='10' x2='0' y1='0' y2='0'/>\n"
+ "<line stroke='#000000' stroke-width='2' x1='0' x2='0' y1='0' y2='0'/>\n"
+ "</page>"
+ );
+}
+
+
+TEST_F(EmSpecialTest, pline) {
+ handler.processSpecial("point 1, 10, 10");
+ handler.processSpecial("point 2, 100, 100");
+ handler.processSpecial("line 1, 2, 10bp");
+ EXPECT_EQ(recorder.getPageXML(), "<page>\n<line stroke='#000000' stroke-width='10' x1='10' x2='100' y1='10' y2='100'/>\n</page>");
+}
+
+
+TEST_F(EmSpecialTest, vline) {
+ XMLString::DECIMAL_PLACES=2;
+ handler.processSpecial("point 1, 10, 10");
+ handler.processSpecial("point 2, 100, 100");
+ handler.processSpecial("line 1v, 2v, 10bp"); // cut line ends vertically
+ EXPECT_EQ(recorder.getPageXML(), "<page>\n<polygon points='10,17.07 10,2.93 100,92.93 100,107.07'/>\n</page>");
+}
+
+
+TEST_F(EmSpecialTest, hline) {
+ XMLString::DECIMAL_PLACES=2;
+ handler.processSpecial("point 1, 10, 10");
+ handler.processSpecial("point 2, 100, 100");
+ handler.processSpecial("line 1h, 2h, 10bp"); // cut line ends horizontally
+ EXPECT_EQ(recorder.getPageXML(), "<page>\n<polygon points='2.93,10 17.07,10 107.07,100 92.93,100'/>\n</page>");
+}
+
+
+TEST_F(EmSpecialTest, hvline) {
+ XMLString::DECIMAL_PLACES=2;
+ handler.processSpecial("point 1, 10, 10");
+ handler.processSpecial("point 2, 100, 100");
+ handler.processSpecial("line 1h, 2v, 10bp"); // cut line ends horizontally
+ EXPECT_EQ(recorder.getPageXML(), "<page>\n<polygon points='2.93,10 17.07,10 100,92.93 100,107.07'/>\n</page>");
+
+ recorder.clear();
+ recorder.setColor(Color(0.0, 0.0, 1.0));
+ handler.processSpecial("point 1, 10, 10");
+ handler.processSpecial("point 2, 100, 100");
+ handler.processSpecial("line 1v, 2h, 10bp"); // cut line ends horizontally
+ EXPECT_EQ(recorder.getPageXML(), "<page>\n<polygon fill='#0000ff' points='10,17.07 10,2.93 107.07,100 92.93,100'/>\n</page>");
+}
+
+
+TEST_F(EmSpecialTest, lineto) {
+ DPair p[] = {DPair(0,0), DPair(0,10), DPair(10,10), DPair(10,0)};
+ int n = sizeof(p)/sizeof(DPair);
+ recorder.setColor(Color(1.0, 0.0, 0.0));
+ for (int i=0; i <= n; i++) {
+ recorder.setX(p[i%n].x());
+ recorder.setY(p[i%n].y());
+ handler.processSpecial("linewidth "+XMLString(2*i)+"bp");
+ handler.processSpecial(i == 0 ? "moveto" : "lineto");
+ }
+ EXPECT_EQ(recorder.getPageXML(),
+ "<page>\n"
+ "<line stroke='#ff0000' stroke-width='2' x1='0' x2='10' y1='0' y2='0'/>\n"
+ "<line stroke='#ff0000' stroke-width='4' x1='10' x2='10' y1='0' y2='0'/>\n"
+ "<line stroke='#ff0000' stroke-width='6' x1='10' x2='0' y1='0' y2='0'/>\n"
+ "<line stroke='#ff0000' stroke-width='8' x1='0' x2='0' y1='0' y2='0'/>\n"
+ "</page>"
+ );
+}
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FileFinderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FileFinderTest.cpp
new file mode 100644
index 00000000000..07775b989f8
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FileFinderTest.cpp
@@ -0,0 +1,89 @@
+/*************************************************************************
+** FileFinderTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <fstream>
+#include "FileFinder.hpp"
+
+#ifndef SRCDIR
+#define SRCDIR "."
+#endif
+
+using std::ifstream;
+
+
+class FileFinderTest : public ::testing::Test
+{
+ protected:
+ void SetUp () {
+ FileFinder::init("FileFinderTest", "FileFinderTest", false);
+ FileFinder::instance().addLookupDir(SRCDIR"/data");
+ }
+};
+
+
+TEST_F(FileFinderTest, find_base_file) {
+ const char *path = FileFinder::instance().lookup(SRCDIR"/FileFinderTest.cpp");
+ EXPECT_TRUE(path);
+ path = FileFinder::instance().lookup("Does-not-exist");
+ EXPECT_FALSE(path);
+ path = FileFinder::instance().lookup("frktest.dvi");
+ EXPECT_TRUE(path);
+ path = FileFinder::instance().lookup("cmr10.tfm");
+ EXPECT_TRUE(path);
+ ifstream ifs(path);
+ EXPECT_TRUE(bool(ifs));
+}
+
+
+TEST_F(FileFinderTest, find_mapped_file) {
+ // mapped base tfm file => should be resolved by kpathsea
+ // circle10.tfm is usually mapped to lcircle.tfm
+ if (const char *path = FileFinder::instance().lookup("circle10.tfm")) {
+ EXPECT_TRUE(path);
+ ifstream ifs(path);
+ EXPECT_TRUE(bool(ifs));
+ }
+
+ // mapped lm font => should be resolved using dvisvgm's FontMap
+ // cork-lmr10 is usually mapped to lmr10
+ bool have_lmodern = FileFinder::instance().lookup("lmodern.sty");
+ if (have_lmodern) { // package lmodern installed?
+ if (const char *path = FileFinder::instance().lookup("cork-lmr10.pfb")) {
+ ifstream ifs(path);
+ EXPECT_TRUE(bool(ifs));
+ }
+ }
+}
+
+
+TEST_F(FileFinderTest, mktexmf) {
+ // ensure availability of ec font => call mktexmf if necessary
+ if (const char *path = FileFinder::instance().lookup("ecrm2000.mf")) {
+ ifstream ifs(path);
+ EXPECT_TRUE(bool(ifs));
+ }
+}
+
+
+TEST_F(FileFinderTest, find_unavailable_file) {
+ const char *path = FileFinder::instance().lookup("not-available.xyz");
+ EXPECT_FALSE(path);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FilePathTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FilePathTest.cpp
new file mode 100644
index 00000000000..31ec08f980a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FilePathTest.cpp
@@ -0,0 +1,89 @@
+/*************************************************************************
+** FilePathTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <string>
+#include "FilePath.hpp"
+#include "FileSystem.hpp"
+
+using namespace std;
+
+
+TEST(FilePathTest, dir1) {
+ FilePath fp("a/b/c/d", false, "/");
+ ASSERT_EQ(fp.absolute(), "/a/b/c/d");
+ ASSERT_EQ(fp.relative("/"), "a/b/c/d");
+ ASSERT_EQ(fp.relative("/a/b"), "c/d");
+ ASSERT_EQ(fp.relative("/a/b/c"), "d");
+ ASSERT_EQ(fp.relative("/a/b/c/d"), ".");
+ ASSERT_EQ(fp.relative("/a/b/x"), "../c/d");
+ ASSERT_EQ(fp.relative("/a/b/x/y"), "../../c/d");
+}
+
+
+TEST(FilePathTest, dir2) {
+ FilePath fp("a/b/c/d", false, "/x/y");
+ ASSERT_EQ(fp.absolute(), "/x/y/a/b/c/d");
+ ASSERT_EQ(fp.relative("/"), "x/y/a/b/c/d");
+ ASSERT_EQ(fp.relative("/x/y/a/b"), "c/d");
+ ASSERT_EQ(fp.relative("/x/y/a/b/c"), "d");
+ ASSERT_EQ(fp.relative("/x/y/a/b/c/d"), ".");
+ ASSERT_EQ(fp.relative("/x/y/a/b/x"), "../c/d");
+ ASSERT_EQ(fp.relative("/x/y/a/b/x/y"), "../../c/d");
+}
+
+
+TEST(FilePathTest, file1) {
+ FilePath fp("a/b/c/d/f.ext", true, "/");
+ ASSERT_EQ(fp.absolute(), "/a/b/c/d/f.ext");
+ ASSERT_EQ(fp.relative("/"), "a/b/c/d/f.ext");
+ ASSERT_EQ(fp.relative("/a/b"), "c/d/f.ext");
+ ASSERT_EQ(fp.relative("/a/b/c"), "d/f.ext");
+ ASSERT_EQ(fp.relative("/a/b/c/d"), "f.ext");
+ ASSERT_EQ(fp.relative("/a/b/x"), "../c/d/f.ext");
+ ASSERT_EQ(fp.relative("/a/b/x/y"), "../../c/d/f.ext");
+ ASSERT_EQ(fp.basename(), "f");
+ ASSERT_EQ(fp.suffix(), "ext");
+ fp.suffix("new");
+ ASSERT_EQ(fp.suffix(), "new");
+ ASSERT_EQ(fp.relative("/a/b/x/y"), "../../c/d/f.new");
+}
+
+
+TEST(FilePathTest, file2) {
+ FilePath fp("/f.ext", true, "/");
+ ASSERT_EQ(fp.absolute(), "/f.ext");
+ ASSERT_EQ(fp.relative("/a/b"), "../../f.ext");
+}
+
+
+TEST(FilePathTest, autodetect) {
+ FilePath fp1("FilePathTest.cpp");
+ ASSERT_TRUE(fp1.isFile());
+ ASSERT_FALSE(fp1.empty());
+ string cwd = FileSystem::getcwd();
+ ASSERT_EQ(fp1.absolute(), cwd + "/FilePathTest.cpp");
+
+ FilePath fp2("");
+ ASSERT_FALSE(fp2.isFile());
+ ASSERT_FALSE(fp2.empty());
+ ASSERT_EQ(fp2.absolute(), FileSystem::getcwd());
+}
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FileSystemTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FileSystemTest.cpp
new file mode 100644
index 00000000000..4fd098636f7
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FileSystemTest.cpp
@@ -0,0 +1,121 @@
+/*************************************************************************
+** FileSystemTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <fstream>
+#include "FileSystem.hpp"
+
+#ifndef SRCDIR
+#define SRCDIR "."
+#endif
+
+using namespace std;
+
+
+TEST(FileSystemTest, exists) {
+ EXPECT_TRUE(FileSystem::exists(SRCDIR"/FileSystemTest.cpp"));
+ EXPECT_FALSE(FileSystem::exists(SRCDIR"/FileSystemTest.cxx"));
+}
+
+
+TEST(FileSystemTest, filetype) {
+ EXPECT_TRUE(FileSystem::isFile(SRCDIR"/FileSystemTest.cpp"));
+ EXPECT_FALSE(FileSystem::isDirectory(SRCDIR"/FileSystemTest.cpp"));
+ EXPECT_TRUE(FileSystem::isDirectory("../tests"));
+ EXPECT_FALSE(FileSystem::isFile("../tests"));
+}
+
+
+TEST(FileSystemTest, remove) {
+ const char *tmpfile = "out.tmp";
+ ofstream ofs(tmpfile);
+ ofs << "FileSystemTest::remove\n";
+ ofs.close();
+ EXPECT_TRUE(FileSystem::exists(tmpfile));
+ FileSystem::remove(tmpfile);
+ EXPECT_FALSE(FileSystem::exists(tmpfile));
+}
+
+
+TEST(FileSystemTest, rename) {
+ const char *tmpfile1 = "out.tmp";
+ const char *tmpfile2 = "out-new.tmp";
+ ofstream ofs(tmpfile1);
+ ofs << "FileSystemTest::remove\n";
+ ofs.close();
+ EXPECT_TRUE(FileSystem::exists(tmpfile1));
+ FileSystem::rename(tmpfile1, tmpfile2);
+#ifndef __WIN32__
+ EXPECT_FALSE(FileSystem::exists(tmpfile1));
+#endif
+ EXPECT_TRUE(FileSystem::exists(tmpfile2));
+ FileSystem::remove(tmpfile2);
+ EXPECT_FALSE(FileSystem::exists(tmpfile2));
+}
+
+
+TEST(FileSystemTest, filesize) {
+ const char *tmpfile = "out.tmp";
+ ofstream ofs(tmpfile, ios::binary);
+ for (int i=0; i < 123; ++i)
+ ofs.put(i);
+ ofs.close();
+ EXPECT_EQ(FileSystem::filesize(tmpfile), 123);
+ FileSystem::remove(tmpfile);
+}
+
+
+TEST(FileSystemTest, copy) {
+ const char *tmpfile1 = "out.tmp";
+ const char *tmpfile2 = "out-new.tmp";
+ ofstream ofs(tmpfile1);
+ ofs << "FileSystemTest::copy\n";
+ ofs.close();
+ FileSystem::copy(tmpfile1, tmpfile2);
+ ifstream ifs1(tmpfile1);
+ ifstream ifs2(tmpfile2);
+ EXPECT_TRUE(ifs1 && ifs2);
+ while (!ifs1.eof()) {
+ EXPECT_EQ(ifs1.get(), ifs2.get());
+ }
+ EXPECT_TRUE(ifs2.eof());
+ FileSystem::remove(tmpfile1);
+ FileSystem::remove(tmpfile2);
+}
+
+
+TEST(FileSystemTest, move) {
+ const char *tmpfile1 = "out.tmp";
+ const char *tmpfile2 = "out-new.tmp";
+ ofstream ofs(tmpfile1);
+ const char *str = "FileSystemTest::copy\n";
+ ofs << str;
+ ofs.close();
+ FileSystem::copy(tmpfile1, tmpfile2, true);
+ ifstream ifs1(tmpfile1);
+ ifstream ifs2(tmpfile2);
+ EXPECT_TRUE(!ifs1 && ifs2);
+ while (*str) {
+ EXPECT_EQ(*str++, ifs2.get());
+ }
+ ifs2.get();
+ EXPECT_TRUE(ifs2.eof());
+ FileSystem::remove(tmpfile2);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontManagerTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontManagerTest.cpp
new file mode 100644
index 00000000000..6dd18fb6baa
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontManagerTest.cpp
@@ -0,0 +1,76 @@
+/*************************************************************************
+** FontManagerTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <sstream>
+#include "Font.hpp"
+#include "FontManager.hpp"
+#include "FileFinder.hpp"
+
+class FontManagerTest : public ::testing::Test
+{
+ protected:
+ void SetUp () {
+ FileFinder::init("FontManagerTest", "FontManagerTest", false);
+ FontManager &fm = FontManager::instance();
+ fm.registerFont(10, "cmr10", 1274110073, 10, 10);
+ fm.registerFont(11, "cmr10", 1274110073, 10, 12);
+ fm.registerFont( 9, "cmr10", 1274110073, 10, 14);
+ }
+};
+
+
+TEST_F(FontManagerTest, fontID1) {
+ FontManager &fm = FontManager::instance();
+ EXPECT_EQ(fm.fontID(10), 0);
+ EXPECT_EQ(fm.fontID(11), 1);
+ EXPECT_EQ(fm.fontID(9), 2);
+ EXPECT_EQ(fm.fontID(1), -1);
+}
+
+
+TEST_F(FontManagerTest, font_ID2) {
+ FontManager &fm = FontManager::instance();
+ EXPECT_EQ(fm.fontID("cmr10"), 0);
+}
+
+
+TEST_F(FontManagerTest, getFont) {
+ FontManager &fm = FontManager::instance();
+ const Font *f1 = fm.getFont(10);
+ EXPECT_TRUE(f1);
+ EXPECT_EQ(f1->name(), "cmr10");
+ EXPECT_TRUE(dynamic_cast<const PhysicalFontImpl*>(f1));
+
+ const Font *f2 = fm.getFont(11);
+ EXPECT_TRUE(f2);
+ EXPECT_NE(f1, f2);
+ EXPECT_EQ(f2->name(), "cmr10");
+ EXPECT_TRUE(dynamic_cast<const PhysicalFontProxy*>(f2));
+ EXPECT_EQ(f2->uniqueFont(), f1);
+}
+
+
+TEST_F(FontManagerTest, getFontById) {
+ FontManager &fm = FontManager::instance();
+ EXPECT_EQ(fm.getFont(10), fm.getFontById(0));
+ EXPECT_EQ(fm.getFont("cmr10"), fm.getFontById(0));
+}
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontMapTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontMapTest.cpp
new file mode 100644
index 00000000000..5007acad2ff
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontMapTest.cpp
@@ -0,0 +1,70 @@
+/*************************************************************************
+** FontMapTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <fstream>
+#include "FontMap.hpp"
+
+using std::ifstream;
+
+TEST(FontMapTest, pdf_map) {
+ const char *fname = "tests/dvipdfm_test.map";
+ ifstream ifs(fname);
+ if (ifs) {
+ FontMap &fm = FontMap::instance();
+ fm.read(fname);
+ const FontMap::Entry *entry;
+ ASSERT_TRUE((entry = fm.lookup("MyriadPro-Bold-8t")) != 0);
+ EXPECT_EQ(entry->fontname, "MyriadPro-Bold");
+ EXPECT_EQ(entry->encname, "my-lf-t1");
+ ASSERT_TRUE((entry = fm.lookup("cmbsy8")) != 0);
+ EXPECT_EQ(entry->fontname, "cmbsy7");
+ EXPECT_EQ(entry->encname, "");
+
+ // entry without mapped name
+ EXPECT_TRUE(fm.lookup("msam10") == 0);
+ EXPECT_TRUE(fm.lookup("msbm10") == 0);
+ EXPECT_TRUE(fm.lookup("msbm10") == 0);
+ EXPECT_TRUE(fm.lookup("i don't exist") == 0);
+ }
+}
+
+
+TEST(FontMapTest, ps_map) {
+ const char *fname = "tests/dvips_test.map";
+ ifstream ifs(fname);
+ if (ifs) {
+ FontMap &fm = FontMap::instance();
+ fm.read(fname);
+ const FontMap::Entry *entry;
+ ASSERT_TRUE((entry = fm.lookup("MyriadPro-Bold-8t")) != 0);
+ EXPECT_EQ(entry->fontname, "MyriadPro-Bold");
+ EXPECT_EQ(entry->encname, "my-lf-t1");
+ ASSERT_TRUE((entry = fm.lookup("cmbsy8")) != 0);
+ EXPECT_EQ(entry->fontname, "cmbsy7");
+ EXPECT_EQ(entry->encname, "");
+
+ // entry without mapped name
+ EXPECT_TRUE(fm.lookup("msam10") == 0);
+ EXPECT_TRUE(fm.lookup("msbm10") == 0);
+ EXPECT_TRUE(fm.lookup("msbm10") == 0);
+ EXPECT_TRUE(fm.lookup("i don't exist") == 0);
+ }
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/GFGlyphTracerTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/GFGlyphTracerTest.cpp
new file mode 100644
index 00000000000..313696d0237
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/GFGlyphTracerTest.cpp
@@ -0,0 +1,123 @@
+/*************************************************************************
+** GFGlyphTracerTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <string>
+#include "GFGlyphTracer.hpp"
+
+#ifndef SRCDIR
+#define SRCDIR "."
+#endif
+
+using namespace std;
+
+class Callback : public GFGlyphTracer::Callback {
+ public:
+ void beginChar (uint8_t c) {_oss << "begin(" << int(c) << ")";}
+ void endChar (uint8_t c) {_oss << "end(" << int(c) << ")";}
+ void emptyChar (uint8_t c) {_oss << "empty(" << int(c) << ")";}
+ string getLog () const {return _oss.str();}
+ void reset () {_oss.str("");}
+
+ private:
+ ostringstream _oss;
+};
+
+
+// Returns an SVG path string with scaled values.
+static string scaled_pathstr (const Glyph &glyph) {
+ ostringstream oss;
+ glyph.writeSVG(oss, false);
+ istringstream iss(oss.str());
+ ostringstream resultstream;
+ XMLString::DECIMAL_PLACES = 1;
+ while (iss.peek() > 0) {
+ if (isalpha(iss.peek()) || isspace(iss.peek()))
+ resultstream << char(iss.get());
+ else {
+ int num;
+ iss >> num;
+ resultstream << XMLString(double(num)/10000);
+ }
+ }
+ return resultstream.str();
+}
+
+
+TEST(GFGlyphTracerTest, executeChar) {
+ string gfname = string(SRCDIR)+"/data/cmr10.600gf";
+ Callback callback;
+ GFGlyphTracer tracer(gfname, 10000, &callback);
+ Glyph glyph;
+ tracer.setGlyph(glyph);
+ EXPECT_FALSE(tracer.executeChar(128));
+ EXPECT_EQ(callback.getLog(), "begin(128)empty(128)");
+
+ callback.reset();
+ EXPECT_TRUE(tracer.executeChar('g'));
+ ostringstream oss;
+ glyph.closeOpenSubPaths();
+ EXPECT_EQ(scaled_pathstr(glyph),
+ "M3.5 4.3C3.2 4.1 3.1 4.1 2.9 4.3C1.9 4.8 0.6 4 0.6 3C0.6 2.8 0.7 2.4 0.8 2.3C0.9 2.1 1 2 0.9 1.7"
+ "C0.7 1.3 0.7 0.8 0.9 0.5C1 0.3 1 0.3 0.6 -0.1C-0 -0.7 0.1 -1.4 1.1 -1.9C1.7 -2.2 3.3 -2.2 3.8 -1.9"
+ "C4.4 -1.6 4.7 -1.2 4.7 -0.8C4.7 0.2 3.9 0.7 2.4 0.7C1.3 0.7 1 0.9 1.1 1.4C1.1 1.7 1.2 1.7 1.4 1.7"
+ "C1.5 1.7 1.8 1.6 2 1.6C3.2 1.4 4.2 2.8 3.5 3.7C3.4 3.9 3.4 4 3.6 4.1C4 4.4 4.3 4.4 4.2 4.1"
+ "C4.2 3.9 4.4 3.7 4.6 3.8C4.7 3.8 4.8 4 4.8 4.1C4.8 4.6 4.2 4.7 3.5 4.3Z"
+ "M2.7 3.9C2.9 3.8 2.9 3.5 2.9 3C2.9 2.2 2.7 1.8 2.2 1.8C1.6 1.8 1.4 2.2 1.4 3C1.4 3.8 1.6 4.2 2.2 4.2C2.3 4.2 2.6 4.1 2.7 3.9Z"
+ "M3.5 -0.1C4 -0.2 4.2 -0.7 4 -1.1C3.6 -2 1.7 -2.2 1.1 -1.4C0.8 -1 0.8 -0.6 1.1 -0.2C1.3 0.1 1.4 0.1 2.2 0.1C2.7 0.1 3.3 0 3.5 -0.1Z");
+ EXPECT_EQ(callback.getLog(), "begin(103)end(103)");
+
+ tracer.reset(gfname, 1000);
+ glyph.clear();
+ callback.reset();
+ EXPECT_TRUE(tracer.executeChar('I'));
+ glyph.closeOpenSubPaths();
+ oss.str("");
+ EXPECT_EQ(scaled_pathstr(glyph),
+ "M0 0.7C0 0.7 0 0.6 0.1 0.6L0.1 0.6V0.3V0L0.1 0C0 0 0 0 0 0C0 0 0.1 0 0.2 0C0.3 0 0.3 0 0.3 0"
+ "C0.3 0 0.3 0 0.3 0L0.2 0V0.3V0.6L0.3 0.6C0.3 0.6 0.3 0.7 0.3 0.7C0.3 0.7 0.3 0.7 0.2 0.7C0.1 0.7 0 0.7 0 0.7Z");
+ EXPECT_EQ(callback.getLog(), "begin(73)end(73)");
+}
+
+
+TEST(GFGlyphTracerTest, defaultCallback) {
+ string gfname = string(SRCDIR)+"/data/cmr10.600gf";
+ GFGlyphTracer::Callback callback;
+ GFGlyphTracer tracer(gfname, 1000, &callback);
+ Glyph glyph;
+ tracer.setGlyph(glyph);
+ tracer.closePath();
+ EXPECT_FALSE(tracer.executeChar(128));
+ EXPECT_TRUE(tracer.executeChar('g'));
+}
+
+
+TEST(GFGlyphTracerTest, fail) {
+ GFGlyphTracer tracer;
+ EXPECT_FALSE(tracer.executeChar('M'));
+
+ Glyph glyph;
+ tracer.setGlyph(glyph);
+ EXPECT_THROW(tracer.executeChar('M'), GFException);
+
+ string gfname = string(SRCDIR)+"/data/cmr10.600gf";
+ tracer.reset(gfname, 1000);
+ EXPECT_TRUE(tracer.executeChar('M'));
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/GFReaderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/GFReaderTest.cpp
new file mode 100644
index 00000000000..9625da36685
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/GFReaderTest.cpp
@@ -0,0 +1,296 @@
+/*************************************************************************
+** GFReaderTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <cstdlib>
+#include <fstream>
+#include <string>
+#include <vector>
+#include "GFReader.hpp"
+
+#ifndef SRCDIR
+#define SRCDIR "."
+#endif
+
+using namespace std;
+
+
+struct PixelActions : public Bitmap::Callback
+{
+ void pixel (int x, int y, bool set, const Bitmap &bm) {
+ if (charmap.size() == 0) {
+ charmap.resize(bm.height());
+ for (int i=0; i < bm.height(); i++)
+ charmap[i] = string(bm.width(), ' ');
+ }
+ ASSERT_GE(x, 0);
+ ASSERT_LT(x, bm.width());
+ ASSERT_GE(y, 0);
+ ASSERT_LT(y, bm.height());
+ charmap[y][x] = (set ? '*' : '-');
+ }
+
+ vector<string> charmap;
+};
+
+
+const char *letter_a[] = {
+ "-----------********--------------------",
+ "--------**************-----------------",
+ "------*****-------******---------------",
+ "-----***------------*****--------------",
+ "----*****------------******------------",
+ "---*******------------******-----------",
+ "---********-----------******-----------",
+ "---********------------******----------",
+ "---********------------******----------",
+ "---********-------------******---------",
+ "----******--------------******---------",
+ "-----****---------------******---------",
+ "------------------------******---------",
+ "------------------------******---------",
+ "------------------------******---------",
+ "------------------------******---------",
+ "-----------------*************---------",
+ "-------------*****************---------",
+ "----------*********-----******---------",
+ "--------*******---------******---------",
+ "------*******-----------******---------",
+ "----********------------******---------",
+ "---*******--------------******---------",
+ "--********--------------******---------",
+ "-********---------------******---------",
+ "-*******----------------******---------",
+ "-*******----------------******------**-",
+ "*******-----------------******------**-",
+ "*******-----------------******------**-",
+ "*******-----------------******------**-",
+ "*******----------------*******------**-",
+ "*******----------------*******------**-",
+ "********--------------********------**-",
+ "-*******-------------***-*****------**-",
+ "-********------------**---*****----**--",
+ "--********---------****---*****----**--",
+ "----*******------****------*********---",
+ "------**************--------*******----",
+ "---------********------------*****-----",
+};
+
+
+const char *letter_g[] = {
+ "------------------------------******---",
+ "------------********--------*********--",
+ "----------************----****----****-",
+ "--------*****------*****-***-----*****-",
+ "-------*****--------*******------*****-",
+ "------*****----------*****-------*****-",
+ "-----*****------------*****--------*---",
+ "----******------------******-----------",
+ "----******------------******-----------",
+ "---******--------------******----------",
+ "---******--------------******----------",
+ "---******--------------******----------",
+ "---******--------------******----------",
+ "---******--------------******----------",
+ "---******--------------******----------",
+ "---******--------------******----------",
+ "---******--------------******----------",
+ "----******------------******-----------",
+ "----******------------******-----------",
+ "-----*****------------*****------------",
+ "------*****----------*****-------------",
+ "------******--------*****--------------",
+ "------*******------*****---------------",
+ "-----***--************-----------------",
+ "-----**-----********-------------------",
+ "----***--------------------------------",
+ "----***--------------------------------",
+ "----***--------------------------------",
+ "----***--------------------------------",
+ "----****-------------------------------",
+ "----****-------------------------------",
+ "----******-----------------------------",
+ "-----*********************-------------",
+ "-----************************----------",
+ "------*************************--------",
+ "-------**************************------",
+ "------****************************-----",
+ "----*****----------------**********----",
+ "---*****--------------------********---",
+ "--*****-----------------------******---",
+ "-*****-------------------------*****---",
+ "-*****-------------------------******--",
+ "*****---------------------------*****--",
+ "*****---------------------------*****--",
+ "*****---------------------------*****--",
+ "*****---------------------------*****--",
+ "*****---------------------------*****--",
+ "******-------------------------******--",
+ "-*****-------------------------*****---",
+ "--*****-----------------------*****----",
+ "--******---------------------******----",
+ "----*****-------------------*****------",
+ "-----******---------------******-------",
+ "-------*******---------*******---------",
+ "---------*******************-----------",
+ "-------------***********---------------",
+};
+
+
+const char *letter_M[] = {
+ "****************-------------------------------------****************-",
+ "*****************-----------------------------------*****************-",
+ "*****************-----------------------------------*****************-",
+ "-------**********-----------------------------------**********--------",
+ "--------**-*******---------------------------------**-*******---------",
+ "--------**-*******---------------------------------**-*******---------",
+ "--------**--*******-------------------------------**--*******---------",
+ "--------**--*******-------------------------------**--*******---------",
+ "--------**--*******-------------------------------**--*******---------",
+ "--------**---*******-----------------------------**---*******---------",
+ "--------**---*******-----------------------------**---*******---------",
+ "--------**---*******-----------------------------**---*******---------",
+ "--------**----*******---------------------------**----*******---------",
+ "--------**----*******---------------------------**----*******---------",
+ "--------**-----*******-------------------------**-----*******---------",
+ "--------**-----*******-------------------------**-----*******---------",
+ "--------**-----*******-------------------------**-----*******---------",
+ "--------**------*******-----------------------**------*******---------",
+ "--------**------*******-----------------------**------*******---------",
+ "--------**-------*******---------------------**-------*******---------",
+ "--------**-------*******---------------------**-------*******---------",
+ "--------**-------*******---------------------**-------*******---------",
+ "--------**--------*******-------------------**--------*******---------",
+ "--------**--------*******-------------------**--------*******---------",
+ "--------**--------*******-------------------**--------*******---------",
+ "--------**---------*******-----------------**---------*******---------",
+ "--------**---------*******-----------------**---------*******---------",
+ "--------**----------*******---------------**----------*******---------",
+ "--------**----------*******---------------**----------*******---------",
+ "--------**----------*******---------------**----------*******---------",
+ "--------**-----------*******-------------**-----------*******---------",
+ "--------**-----------*******-------------**-----------*******---------",
+ "--------**------------*******-----------**------------*******---------",
+ "--------**------------*******-----------**------------*******---------",
+ "--------**------------*******-----------**------------*******---------",
+ "--------**-------------*******---------**-------------*******---------",
+ "--------**-------------*******---------**-------------*******---------",
+ "--------**-------------*******---------**-------------*******---------",
+ "--------**--------------*******-------**--------------*******---------",
+ "--------**--------------*******-------**--------------*******---------",
+ "--------**---------------*******-----**---------------*******---------",
+ "--------**---------------*******-----**---------------*******---------",
+ "--------**---------------*******-----**---------------*******---------",
+ "--------**----------------*******---**----------------*******---------",
+ "--------**----------------*******---**----------------*******---------",
+ "--------**-----------------*******-**-----------------*******---------",
+ "--------**-----------------*******-**-----------------*******---------",
+ "--------**-----------------*******-**-----------------*******---------",
+ "--------**------------------********------------------*******---------",
+ "--------**------------------********------------------*******---------",
+ "--------**------------------********------------------*******---------",
+ "-------****------------------******-------------------*******---------",
+ "------******-----------------******-------------------*******---------",
+ "----**********----------------****-------------------*********--------",
+ "******************------------****------------***********************-",
+ "******************------------****------------***********************-",
+ "******************-------------**-------------***********************-",
+};
+
+
+static void check_letter (const char **lettermap, const vector<string> &charmap) {
+ for (size_t i=0; i < charmap.size(); i++)
+ ASSERT_EQ(lettermap[i], charmap[charmap.size()-i-1]);
+}
+
+
+class LoggingGFReader : public GFReader {
+ public:
+ LoggingGFReader (istream &is) : GFReader(is) {}
+ void preamble (const string &str) {_info = str;}
+ string getInfo () const {return _info;}
+
+ private:
+ string _info;
+};
+
+
+TEST(GFReaderTest, preamble) {
+ string gf = string(SRCDIR)+"/data/cmr10.600gf";
+ ifstream ifs(gf.c_str(), ios::binary);
+ ASSERT_TRUE(bool(ifs));
+ LoggingGFReader gfReader(ifs);
+ gfReader.executePreamble();
+ ASSERT_EQ(gfReader.getInfo(), " METAFONT output 2010.06.18:1911");
+}
+
+
+TEST(GFReaderTest, postamble) {
+ string gf = string(SRCDIR)+"/data/cmr10.600gf";
+ ifstream ifs(gf.c_str(), ios::binary);
+ ASSERT_TRUE(bool(ifs));
+ GFReader gfReader(ifs);
+ gfReader.executePostamble();
+ const double bp2pt = 72.27/72.0;
+ ASSERT_DOUBLE_EQ(gfReader.getDesignSize()*bp2pt, 10);
+ ASSERT_NEAR(gfReader.getHPixelsPerPoint(), 8.333, 0.001);
+ ASSERT_NEAR(gfReader.getVPixelsPerPoint(), 8.333, 0.001);
+}
+
+
+TEST(GFReaderTest, executeChar) {
+ string gf = string(SRCDIR)+"/data/cmr10.600gf";
+ ifstream ifs(gf.c_str(), ios::binary);
+ ASSERT_TRUE(bool(ifs));
+ GFReader gfReader(ifs);
+ PixelActions actions;
+
+ gfReader.executeChar('a');
+ ASSERT_EQ(gfReader.getBitmap().width(), 39);
+ ASSERT_EQ(gfReader.getBitmap().height(), 39);
+ gfReader.getBitmap().forAllPixels(actions);
+ check_letter(letter_a, actions.charmap);
+
+ actions.charmap.clear();
+ gfReader.executeChar('g');
+ ASSERT_EQ(gfReader.getBitmap().width(), 39);
+ ASSERT_EQ(gfReader.getBitmap().height(), 56);
+ gfReader.getBitmap().forAllPixels(actions);
+ check_letter(letter_g, actions.charmap);
+
+ actions.charmap.clear();
+ gfReader.executeChar('M');
+ ASSERT_EQ(gfReader.getBitmap().width(), 70);
+ ASSERT_EQ(gfReader.getBitmap().height(), 57);
+ gfReader.getBitmap().forAllPixels(actions);
+ check_letter(letter_M, actions.charmap);
+}
+
+
+TEST(GFReaderTest, executeAllChars) {
+ string gf = string(SRCDIR)+"/data/cmr10.600gf";
+ ifstream ifs(gf.c_str(), ios::binary);
+ ASSERT_TRUE(bool(ifs));
+ GFReader gfReader(ifs);
+ gfReader.executeAllChars();
+ const double bp2pt = 72.27/72.0;
+ ASSERT_NEAR(gfReader.getCharWidth('M')*bp2pt, 0.573, 0.001);
+ ASSERT_NEAR(gfReader.getCharWidth('g')*bp2pt, 0.313, 0.001);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/GhostscriptTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/GhostscriptTest.cpp
new file mode 100644
index 00000000000..545c4cf6c2c
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/GhostscriptTest.cpp
@@ -0,0 +1,31 @@
+#include <gtest/gtest.h>
+#include "Ghostscript.hpp"
+
+
+TEST(GhostscriptTest, available1) {
+ const char *args[] = {"test", "-q", "-dNODISPLAY"};
+ Ghostscript gs(3, args);
+ ASSERT_TRUE(gs.available());
+}
+
+
+TEST(GhostscriptTest, available2) {
+ Ghostscript gs;
+ ASSERT_TRUE(gs.available());
+}
+
+
+TEST(GhostscriptTest, revision) {
+ Ghostscript gs;
+ ASSERT_FALSE(gs.revision(true).empty());
+ ASSERT_FALSE(gs.revision(false).empty());
+}
+
+
+TEST(Ghostscript, error_name) {
+ Ghostscript gs;
+ ASSERT_EQ(gs.error_name(0), (const char*)0);
+ ASSERT_STREQ(gs.error_name(-1), "unknownerror");
+ ASSERT_STREQ(gs.error_name(1), "unknownerror");
+ ASSERT_STREQ(gs.error_name(2), "dictfull");
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/GraphicsPathTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/GraphicsPathTest.cpp
new file mode 100644
index 00000000000..bef0cde0e28
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/GraphicsPathTest.cpp
@@ -0,0 +1,134 @@
+/*************************************************************************
+** GraphicsPathTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <sstream>
+#include "GraphicsPath.hpp"
+
+using std::ostringstream;
+
+TEST(GraphicsPathTest, svg) {
+ GraphicsPath<int> path;
+ path.moveto(0,0);
+ path.lineto(10,10);
+ path.cubicto(20,20,30,30,40,40);
+ path.closepath();
+ EXPECT_FALSE(path.empty());
+ EXPECT_EQ(path.size(), 4);
+ ostringstream oss;
+ path.writeSVG(oss, false);
+ EXPECT_EQ(oss.str(), "M0 0L10 10C20 20 30 30 40 40Z");
+ path.clear();
+ EXPECT_TRUE(path.empty());
+}
+
+
+TEST(GraphicsPathTest, optimize) {
+ GraphicsPath<int> path;
+ path.moveto(0,0);
+ path.lineto(10,0);
+ path.lineto(10,20);
+ ostringstream oss;
+ path.writeSVG(oss, false);
+ EXPECT_EQ(oss.str(), "M0 0H10V20");
+}
+
+
+TEST(GraphicsPathTest, transform) {
+ GraphicsPath<double> path;
+ path.moveto(0,0);
+ path.lineto(1,0);
+ path.lineto(1,1);
+ path.lineto(0,1);
+ path.closepath();
+ Matrix m(1);
+ m.scale(2,2);
+ m.translate(10, 100);
+ m.rotate(90);
+ path.transform(m);
+ ostringstream oss;
+ path.writeSVG(oss, false);
+ EXPECT_EQ(oss.str(), "M-100 10V12H-102V10Z");
+}
+
+
+TEST(GraphicsPathTest, closeOpenSubPaths) {
+ GraphicsPath<double> path;
+ path.moveto(0,0);
+ path.lineto(1,0);
+ path.lineto(1,1);
+ path.lineto(0,1);
+ path.moveto(10,10);
+ path.lineto(11,10);
+ path.lineto(11,11);
+ path.lineto(10,11);
+ path.closeOpenSubPaths();
+ ostringstream oss;
+ path.writeSVG(oss, false);
+ EXPECT_EQ(oss.str(), "M0 0H1V1H0ZM10 10H11V11H10Z");
+}
+
+
+TEST(GraphicsPathTest, relative1) {
+ GraphicsPath<int> path;
+ path.moveto(0,0);
+ path.lineto(10,10);
+ path.lineto(10,20);
+ path.cubicto(20,20,30,30,40,40);
+ path.conicto(50, 50, 60, 60);
+ path.lineto(100,60);
+ path.closepath();
+ ostringstream oss;
+ path.writeSVG(oss, true);
+ EXPECT_EQ(oss.str(), "m0 0l10 10v10c10 0 20 10 30 20q10 10 20 20h40z");
+}
+
+
+TEST(GraphicsPathTest, computeBBox) {
+ GraphicsPath<int> path;
+ path.moveto(10,10);
+ path.lineto(100,10);
+ path.conicto(10,100,40,80);
+ path.cubicto(5,5,30,10,90,70);
+ path.lineto(20,30);
+ path.closepath();
+ BoundingBox bbox;
+ path.computeBBox(bbox);
+ EXPECT_EQ(bbox, BoundingBox(5, 5, 100, 100));
+}
+
+
+TEST(GraphicsPathTest, removeRedundantCommands) {
+ GraphicsPath<int> path;
+ path.moveto(10,10);
+ path.lineto(100,10);
+ path.conicto(10,100,40,80);
+ path.cubicto(5,5,30,10,90,70);
+ path.moveto(10,10);
+ path.moveto(15,10);
+ path.moveto(20,20);
+ path.lineto(20,30);
+ path.moveto(10,10);
+ path.moveto(20,20);
+ path.removeRedundantCommands();
+ ostringstream oss;
+ path.writeSVG(oss, false);
+ EXPECT_EQ(oss.str(), "M10 10H100Q10 100 40 80C5 5 30 10 90 70M20 20V30");
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/JFMReaderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/JFMReaderTest.cpp
new file mode 100644
index 00000000000..1a3d30ae34c
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/JFMReaderTest.cpp
@@ -0,0 +1,116 @@
+/*************************************************************************
+** JFMReaderTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <cstdlib>
+#include <fstream>
+#include <string>
+#include <vector>
+#include "JFM.hpp"
+
+#ifndef SRCDIR
+#define SRCDIR "."
+#endif
+
+using namespace std;
+
+
+class JFMReaderTest : public ::testing::Test
+{
+ public:
+ JFMReaderTest () : jfm(0) {}
+
+ void SetUp () {
+ string fname = string(SRCDIR)+"/data/cidjmgr0-h.tfm";
+ ifstream ifs(fname.c_str(), ios::binary);
+ ASSERT_TRUE(ifs.is_open()) << "failed opening " << fname;
+ jfm = new JFM(ifs);
+ }
+
+ void TearDown () {
+ delete jfm;
+ }
+
+ protected:
+ JFM *jfm;
+};
+
+
+TEST_F(JFMReaderTest, properties) {
+ ASSERT_EQ(jfm->getChecksum(), 0);
+ ASSERT_FALSE(jfm->verticalLayout());
+ ASSERT_EQ(jfm->firstChar(), 0);
+ ASSERT_EQ(jfm->lastChar(), 1);
+ ASSERT_EQ(jfm->minChar(), 13143);
+ ASSERT_EQ(jfm->maxChar(), 14696);
+ ASSERT_DOUBLE_EQ(jfm->getDesignSize(), 10.0*72.0/72.27);
+}
+
+
+TEST_F(JFMReaderTest, charWidth) {
+ uint16_t minchar = jfm->minChar();
+ uint16_t maxchar = jfm->maxChar();
+ ASSERT_NEAR(jfm->getCharWidth(0), 9.963, 0.001);
+ ASSERT_NEAR(jfm->getCharWidth(minchar), 4.981, 0.001);
+ ASSERT_NEAR(jfm->getCharWidth(minchar+1), 4.981, 0.001);
+ ASSERT_NEAR(jfm->getCharWidth(maxchar), 4.981, 0.001);
+ ASSERT_NEAR(jfm->getCharWidth(maxchar+1), 9.963, 0.001);
+}
+
+
+TEST_F(JFMReaderTest, charHeight) {
+ uint16_t minchar = jfm->minChar();
+ uint16_t maxchar = jfm->maxChar();
+ ASSERT_NEAR(jfm->getCharHeight(0), 8.767, 0.001);
+ ASSERT_NEAR(jfm->getCharHeight(minchar), 8.767, 0.001);
+ ASSERT_NEAR(jfm->getCharHeight(minchar+1), 8.767, 0.001);
+ ASSERT_NEAR(jfm->getCharHeight(maxchar), 8.767, 0.001);
+ ASSERT_NEAR(jfm->getCharHeight(maxchar+1), 8.767, 0.001);
+}
+
+
+TEST_F(JFMReaderTest, charDepth) {
+ uint16_t minchar = jfm->minChar();
+ uint16_t maxchar = jfm->maxChar();
+ ASSERT_NEAR(jfm->getCharDepth(0), 1.195, 0.001);
+ ASSERT_NEAR(jfm->getCharDepth(minchar), 1.195, 0.001);
+ ASSERT_NEAR(jfm->getCharDepth(minchar+1), 1.195, 0.001);
+ ASSERT_NEAR(jfm->getCharDepth(maxchar), 1.195, 0.001);
+ ASSERT_NEAR(jfm->getCharDepth(maxchar+1), 1.195, 0.001);
+}
+
+
+TEST_F(JFMReaderTest, italicCorr) {
+ uint16_t minchar = jfm->minChar();
+ uint16_t maxchar = jfm->maxChar();
+ ASSERT_DOUBLE_EQ(jfm->getItalicCorr(0), 0);
+ ASSERT_DOUBLE_EQ(jfm->getItalicCorr(minchar), 0);
+ ASSERT_DOUBLE_EQ(jfm->getItalicCorr(minchar+1), 0);
+ ASSERT_DOUBLE_EQ(jfm->getItalicCorr(maxchar), 0);
+ ASSERT_DOUBLE_EQ(jfm->getItalicCorr(maxchar+1), 0);
+}
+
+
+TEST_F(JFMReaderTest, params) {
+ ASSERT_DOUBLE_EQ(jfm->getSpace(), 0);
+ ASSERT_DOUBLE_EQ(jfm->getSpaceShrink(), 0.);
+ ASSERT_NEAR(jfm->getSpaceStretch(), 0.996, 0.001);
+ ASSERT_NEAR(jfm->getQuad(), 9.963, 0.001);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/LengthTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/LengthTest.cpp
new file mode 100644
index 00000000000..efc12548cbe
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/LengthTest.cpp
@@ -0,0 +1,182 @@
+/*************************************************************************
+** LengthTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <string>
+#include "Length.hpp"
+
+using namespace std;
+
+TEST(LengthTest, set1) {
+ Length len;
+ len.set(1, Length::Unit::PT);
+ EXPECT_DOUBLE_EQ(len.pt(), 1);
+
+ len.set(72, Length::Unit::BP);
+ EXPECT_DOUBLE_EQ(len.pt(), 72.27);
+ EXPECT_DOUBLE_EQ(len.bp(), 72);
+ EXPECT_DOUBLE_EQ(len.in(), 1);
+
+ len.set(1, Length::Unit::IN);
+ EXPECT_DOUBLE_EQ(len.pt(), 72.27);
+
+ len.set(1, Length::Unit::PC);
+ EXPECT_DOUBLE_EQ(len.pt(), 12);
+
+ len.set(2.54, Length::Unit::CM);
+ EXPECT_DOUBLE_EQ(len.pt(), 72.27);
+ EXPECT_DOUBLE_EQ(len.cm(), 2.54);
+ EXPECT_DOUBLE_EQ(len.mm(), 25.4);
+
+ len.set(25.4, Length::Unit::MM);
+ EXPECT_DOUBLE_EQ(len.pt(), 72.27);
+ EXPECT_DOUBLE_EQ(len.cm(), 2.54);
+ EXPECT_DOUBLE_EQ(len.mm(), 25.4);
+
+ len.set(1, Length::Unit::DD);
+ EXPECT_DOUBLE_EQ(len.pt(), 1238.0/1157);
+
+ len.set(1, Length::Unit::CC);
+ EXPECT_DOUBLE_EQ(len.dd(), 12.0);
+
+ len.set(1, Length::Unit::SP);
+ EXPECT_DOUBLE_EQ(len.pt(), 1.0/65536);
+}
+
+
+TEST(LengthTest, set2) {
+ Length len;
+ len.set(1, "pt");
+ EXPECT_DOUBLE_EQ(len.pt(), 1);
+
+ len.set(72, "bp");
+ EXPECT_DOUBLE_EQ(len.pt(), 72.27);
+ EXPECT_DOUBLE_EQ(len.bp(), 72);
+ EXPECT_DOUBLE_EQ(len.in(), 1);
+
+ len.set(1, "in");
+ EXPECT_DOUBLE_EQ(len.pt(), 72.27);
+
+ len.set(1, "pc");
+ EXPECT_DOUBLE_EQ(len.pt(), 12);
+ EXPECT_DOUBLE_EQ(len.pc(), 1);
+
+ len.set(2.54, "cm");
+ EXPECT_DOUBLE_EQ(len.pt(), 72.27);
+ EXPECT_DOUBLE_EQ(len.cm(), 2.54);
+ EXPECT_DOUBLE_EQ(len.mm(), 25.4);
+
+ len.set(10, "mm");
+ EXPECT_DOUBLE_EQ(len.cm(), 1);
+ EXPECT_DOUBLE_EQ(len.mm(), 10);
+
+ len.set(1, "dd");
+ EXPECT_DOUBLE_EQ(len.pt(), 1238.0/1157);
+
+ len.set(1, "cc");
+ EXPECT_DOUBLE_EQ(len.dd(), 12.0);
+
+ len.set(1, "sp");
+ EXPECT_DOUBLE_EQ(len.pt(), 1.0/65536);
+
+ len.set(1, "");
+ EXPECT_DOUBLE_EQ(len.pt(), 1);
+
+ ASSERT_THROW(len.set(1, "xy"), UnitException);
+}
+
+TEST(LengthTest, set3) {
+ Length len;
+ len.set("1pt");
+ EXPECT_DOUBLE_EQ(len.pt(), 1);
+
+ len.set("72bp");
+ EXPECT_DOUBLE_EQ(len.pt(), 72.27);
+ EXPECT_DOUBLE_EQ(len.bp(), 72);
+ EXPECT_DOUBLE_EQ(len.in(), 1);
+
+ len.set("1in");
+ EXPECT_DOUBLE_EQ(len.pt(), 72.27);
+
+ len.set("1pc");
+ EXPECT_DOUBLE_EQ(len.pt(), 12);
+ EXPECT_DOUBLE_EQ(len.pc(), 1);
+
+ len.set("2.54cm");
+ EXPECT_DOUBLE_EQ(len.pt(), 72.27);
+ EXPECT_DOUBLE_EQ(len.cm(), 2.54);
+ EXPECT_DOUBLE_EQ(len.mm(), 25.4);
+
+ len.set("10mm");
+ EXPECT_DOUBLE_EQ(len.cm(), 1);
+ EXPECT_DOUBLE_EQ(len.mm(), 10);
+
+ len.set("10dd");
+ EXPECT_DOUBLE_EQ(len.pt(), 12380.0/1157);
+
+ len.set("10cc");
+ EXPECT_DOUBLE_EQ(len.dd(), 120.0);
+
+ len.set("10sp");
+ EXPECT_DOUBLE_EQ(len.pt(), 10.0/65536);
+
+
+ len.set("1");
+ EXPECT_DOUBLE_EQ(len.pt(), 1);
+
+ len.set("10");
+ EXPECT_DOUBLE_EQ(len.pt(), 10);
+
+ ASSERT_THROW(len.set("1xy"), UnitException);
+ ASSERT_THROW(len.set("pt"), UnitException);
+}
+
+
+TEST(LengthTest, str2unit) {
+ EXPECT_EQ(Length::stringToUnit("pt"), Length::Unit::PT);
+ EXPECT_EQ(Length::stringToUnit("bp"), Length::Unit::BP);
+ EXPECT_EQ(Length::stringToUnit("in"), Length::Unit::IN);
+ EXPECT_EQ(Length::stringToUnit("cm"), Length::Unit::CM);
+ EXPECT_EQ(Length::stringToUnit("mm"), Length::Unit::MM);
+ EXPECT_EQ(Length::stringToUnit("pc"), Length::Unit::PC);
+ EXPECT_EQ(Length::stringToUnit("cc"), Length::Unit::CC);
+ EXPECT_EQ(Length::stringToUnit("dd"), Length::Unit::DD);
+ EXPECT_EQ(Length::stringToUnit("sp"), Length::Unit::SP);
+
+ ASSERT_THROW(Length::stringToUnit(""), UnitException);
+ ASSERT_THROW(Length::stringToUnit("CM"), UnitException);
+ ASSERT_THROW(Length::stringToUnit("pta"), UnitException);
+}
+
+
+TEST(LengthTest, unit2str) {
+ EXPECT_EQ(Length::unitToString(Length::Unit::PT), string("pt"));
+ EXPECT_EQ(Length::unitToString(Length::Unit::BP), string("bp"));
+ EXPECT_EQ(Length::unitToString(Length::Unit::IN), string("in"));
+ EXPECT_EQ(Length::unitToString(Length::Unit::CM), string("cm"));
+ EXPECT_EQ(Length::unitToString(Length::Unit::MM), string("mm"));
+ EXPECT_EQ(Length::unitToString(Length::Unit::PC), string("pc"));
+ EXPECT_EQ(Length::unitToString(Length::Unit::CC), string("cc"));
+ EXPECT_EQ(Length::unitToString(Length::Unit::DD), string("dd"));
+ EXPECT_EQ(Length::unitToString(Length::Unit::SP), string("sp"));
+
+ EXPECT_EQ(Length::unitToString(Length::Unit(300)), string("??"));
+}
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am
new file mode 100644
index 00000000000..2440d1eef10
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am
@@ -0,0 +1,278 @@
+## This file is part of dvisvgm
+## Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de>
+##
+## Process this file with automake.
+
+SUBDIRS = data
+
+AM_CXXFLAGS = -I$(top_srcdir)/src -Wall -DSRCDIR='"$(srcdir)"' $(CODE_COVERAGE_CFLAGS)
+
+TESTS = hashcheck
+check_PROGRAMS = hashcheck
+nodist_hashcheck_SOURCES = hashcheck.cpp
+hashcheck_LDADD = ../libs/xxHash/libxxhash.a
+hashcheck_CPPFLAGS = -I$(top_srcdir)/libs/xxHash
+hashcheck.cpp: genhashcheck.py $(top_srcdir)/src/AGLTable.hpp $(top_srcdir)/libs/xxHash/xxhash.h
+ python $^ >$@
+
+TESTS += BezierTest
+check_PROGRAMS += BezierTest
+BezierTest_SOURCES = BezierTest.cpp
+BezierTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += BitmapTest
+check_PROGRAMS += BitmapTest
+BitmapTest_SOURCES = BitmapTest.cpp
+BitmapTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += BoundingBoxTest
+check_PROGRAMS += BoundingBoxTest
+BoundingBoxTest_SOURCES = BoundingBoxTest.cpp
+BoundingBoxTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += CalculatorTest
+check_PROGRAMS += CalculatorTest
+CalculatorTest_SOURCES = CalculatorTest.cpp
+CalculatorTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += CMapManagerTest
+check_PROGRAMS += CMapManagerTest
+CMapManagerTest_SOURCES = CMapManagerTest.cpp
+CMapManagerTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += CMapReaderTest
+check_PROGRAMS += CMapReaderTest
+CMapReaderTest_SOURCES = CMapReaderTest.cpp
+CMapReaderTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += CMapTest
+check_PROGRAMS += CMapTest
+CMapTest_SOURCES = CMapTest.cpp
+CMapTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += ColorSpecialTest
+check_PROGRAMS += ColorSpecialTest
+ColorSpecialTest_SOURCES = ColorSpecialTest.cpp
+ColorSpecialTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += ColorTest
+check_PROGRAMS += ColorTest
+ColorTest_SOURCES = ColorTest.cpp
+ColorTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += CommandLineTest
+check_PROGRAMS += CommandLineTest
+CommandLineTest_SOURCES = CommandLineTest.cpp
+CommandLineTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += CRC32Test
+check_PROGRAMS += CRC32Test
+CRC32Test_SOURCES = CRC32Test.cpp
+CRC32Test_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += DependencyGraphTest
+check_PROGRAMS += DependencyGraphTest
+DependencyGraphTest_SOURCES = DependencyGraphTest.cpp
+DependencyGraphTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += DirectoryTest
+check_PROGRAMS += DirectoryTest
+DirectoryTest_SOURCES = DirectoryTest.cpp
+DirectoryTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += DvisvgmSpecialTest
+check_PROGRAMS += DvisvgmSpecialTest
+DvisvgmSpecialTest_SOURCES = DvisvgmSpecialTest.cpp
+DvisvgmSpecialTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += EmSpecialTest
+check_PROGRAMS += EmSpecialTest
+EmSpecialTest_SOURCES = EmSpecialTest.cpp
+EmSpecialTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += FileFinderTest
+check_PROGRAMS += FileFinderTest
+FileFinderTest_SOURCES = FileFinderTest.cpp
+FileFinderTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += FilePathTest
+check_PROGRAMS += FilePathTest
+FilePathTest_SOURCES = FilePathTest.cpp
+FilePathTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += FileSystemTest
+check_PROGRAMS += FileSystemTest
+FileSystemTest_SOURCES = FileSystemTest.cpp
+FileSystemTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += FontManagerTest
+check_PROGRAMS += FontManagerTest
+FontManagerTest_SOURCES = FontManagerTest.cpp
+FontManagerTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += FontMapTest
+check_PROGRAMS += FontMapTest
+FontMapTest_SOURCES = FontMapTest.cpp
+FontMapTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += GFGlyphTracerTest
+check_PROGRAMS += GFGlyphTracerTest
+GFGlyphTracerTest_SOURCES = GFGlyphTracerTest.cpp
+GFGlyphTracerTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += GFReaderTest
+check_PROGRAMS += GFReaderTest
+GFReaderTest_SOURCES = GFReaderTest.cpp
+GFReaderTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += GhostscriptTest
+check_PROGRAMS += GhostscriptTest
+GhostscriptTest_SOURCES = GhostscriptTest.cpp
+GhostscriptTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += GraphicsPathTest
+check_PROGRAMS += GraphicsPathTest
+GraphicsPathTest_SOURCES = GraphicsPathTest.cpp
+GraphicsPathTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += JFMReaderTest
+check_PROGRAMS += JFMReaderTest
+JFMReaderTest_SOURCES = JFMReaderTest.cpp
+JFMReaderTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += LengthTest
+check_PROGRAMS += LengthTest
+LengthTest_SOURCES = LengthTest.cpp
+LengthTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += MapLineTest
+check_PROGRAMS += MapLineTest
+MapLineTest_SOURCES = MapLineTest.cpp
+MapLineTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += MatrixTest
+check_PROGRAMS += MatrixTest
+MatrixTest_SOURCES = MatrixTest.cpp
+MatrixTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += MessageExceptionTest
+check_PROGRAMS += MessageExceptionTest
+MessageExceptionTest_SOURCES = MessageExceptionTest.cpp
+MessageExceptionTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += PageRagesTest
+check_PROGRAMS += PageRagesTest
+PageRagesTest_SOURCES = PageRagesTest.cpp
+PageRagesTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += PageSizeTest
+check_PROGRAMS += PageSizeTest
+PageSizeTest_SOURCES = PageSizeTest.cpp
+PageSizeTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += PairTest
+check_PROGRAMS += PairTest
+PairTest_SOURCES = PairTest.cpp
+PairTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += PSInterpreterTest
+check_PROGRAMS += PSInterpreterTest
+PSInterpreterTest_SOURCES = PSInterpreterTest.cpp
+PSInterpreterTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += RangeMapTest
+check_PROGRAMS += RangeMapTest
+RangeMapTest_SOURCES = RangeMapTest.cpp
+RangeMapTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += ShadingPatchTest
+check_PROGRAMS += ShadingPatchTest
+ShadingPatchTest_SOURCES = ShadingPatchTest.cpp
+ShadingPatchTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += SplittedCharInputBufferTest
+check_PROGRAMS += SplittedCharInputBufferTest
+SplittedCharInputBufferTest_SOURCES = SplittedCharInputBufferTest.cpp
+SplittedCharInputBufferTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += StreamInputBufferTest
+check_PROGRAMS += StreamInputBufferTest
+StreamInputBufferTest_SOURCES = StreamInputBufferTest.cpp
+StreamInputBufferTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += StreamReaderTest
+check_PROGRAMS += StreamReaderTest
+StreamReaderTest_SOURCES = StreamReaderTest.cpp
+StreamReaderTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += StreamWriterTest
+check_PROGRAMS += StreamWriterTest
+StreamWriterTest_SOURCES = StreamWriterTest.cpp
+StreamWriterTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += SubfontTest
+check_PROGRAMS += SubfontTest
+SubfontTest_SOURCES = SubfontTest.cpp
+SubfontTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += SVGOutputTest
+check_PROGRAMS += SVGOutputTest
+SVGOutputTest_SOURCES = SVGOutputTest.cpp
+SVGOutputTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += TensorProductPatchTest
+check_PROGRAMS += TensorProductPatchTest
+TensorProductPatchTest_SOURCES = TensorProductPatchTest.cpp
+TensorProductPatchTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += TFMReaderTest
+check_PROGRAMS += TFMReaderTest
+TFMReaderTest_SOURCES = TFMReaderTest.cpp
+TFMReaderTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += ToUnicodeMapTest
+check_PROGRAMS += ToUnicodeMapTest
+ToUnicodeMapTest_SOURCES = ToUnicodeMapTest.cpp
+ToUnicodeMapTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += TriangularPatchTest
+check_PROGRAMS += TriangularPatchTest
+TriangularPatchTest_SOURCES = TriangularPatchTest.cpp
+TriangularPatchTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += UnicodeTest
+check_PROGRAMS += UnicodeTest
+UnicodeTest_SOURCES = UnicodeTest.cpp
+UnicodeTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += UtilityTest
+check_PROGRAMS += UtilityTest
+UtilityTest_SOURCES = UtilityTest.cpp
+UtilityTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += VectorIteratorTest
+check_PROGRAMS += VectorIteratorTest
+VectorIteratorTest_SOURCES = VectorIteratorTest.cpp
+VectorIteratorTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += VectorStreamTest
+check_PROGRAMS += VectorStreamTest
+VectorStreamTest_SOURCES = VectorStreamTest.cpp
+VectorStreamTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += XMLNodeTest
+check_PROGRAMS += XMLNodeTest
+XMLNodeTest_SOURCES = XMLNodeTest.cpp
+XMLNodeTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+TESTS += XMLStringTest
+check_PROGRAMS += XMLStringTest
+XMLStringTest_SOURCES = XMLStringTest.cpp
+XMLStringTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+
+EXTRA_DIST = check-conv genhashcheck.py normalize.xsl
+TESTS += check-conv
+
+@CODE_COVERAGE_RULES@
+
+CLEANFILES = *.gcda *.gcno hashcheck.cpp
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in
new file mode 100644
index 00000000000..df076e94e8f
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in
@@ -0,0 +1,2102 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+TESTS = hashcheck$(EXEEXT) BezierTest$(EXEEXT) BitmapTest$(EXEEXT) \
+ BoundingBoxTest$(EXEEXT) CalculatorTest$(EXEEXT) \
+ CMapManagerTest$(EXEEXT) CMapReaderTest$(EXEEXT) \
+ CMapTest$(EXEEXT) ColorSpecialTest$(EXEEXT) ColorTest$(EXEEXT) \
+ CommandLineTest$(EXEEXT) CRC32Test$(EXEEXT) \
+ DependencyGraphTest$(EXEEXT) DirectoryTest$(EXEEXT) \
+ DvisvgmSpecialTest$(EXEEXT) EmSpecialTest$(EXEEXT) \
+ FileFinderTest$(EXEEXT) FilePathTest$(EXEEXT) \
+ FileSystemTest$(EXEEXT) FontManagerTest$(EXEEXT) \
+ FontMapTest$(EXEEXT) GFGlyphTracerTest$(EXEEXT) \
+ GFReaderTest$(EXEEXT) GhostscriptTest$(EXEEXT) \
+ GraphicsPathTest$(EXEEXT) JFMReaderTest$(EXEEXT) \
+ LengthTest$(EXEEXT) MapLineTest$(EXEEXT) MatrixTest$(EXEEXT) \
+ MessageExceptionTest$(EXEEXT) PageRagesTest$(EXEEXT) \
+ PageSizeTest$(EXEEXT) PairTest$(EXEEXT) \
+ PSInterpreterTest$(EXEEXT) RangeMapTest$(EXEEXT) \
+ ShadingPatchTest$(EXEEXT) SplittedCharInputBufferTest$(EXEEXT) \
+ StreamInputBufferTest$(EXEEXT) StreamReaderTest$(EXEEXT) \
+ StreamWriterTest$(EXEEXT) SubfontTest$(EXEEXT) \
+ SVGOutputTest$(EXEEXT) TensorProductPatchTest$(EXEEXT) \
+ TFMReaderTest$(EXEEXT) ToUnicodeMapTest$(EXEEXT) \
+ TriangularPatchTest$(EXEEXT) UnicodeTest$(EXEEXT) \
+ UtilityTest$(EXEEXT) VectorIteratorTest$(EXEEXT) \
+ VectorStreamTest$(EXEEXT) XMLNodeTest$(EXEEXT) \
+ XMLStringTest$(EXEEXT) check-conv
+check_PROGRAMS = hashcheck$(EXEEXT) BezierTest$(EXEEXT) \
+ BitmapTest$(EXEEXT) BoundingBoxTest$(EXEEXT) \
+ CalculatorTest$(EXEEXT) CMapManagerTest$(EXEEXT) \
+ CMapReaderTest$(EXEEXT) CMapTest$(EXEEXT) \
+ ColorSpecialTest$(EXEEXT) ColorTest$(EXEEXT) \
+ CommandLineTest$(EXEEXT) CRC32Test$(EXEEXT) \
+ DependencyGraphTest$(EXEEXT) DirectoryTest$(EXEEXT) \
+ DvisvgmSpecialTest$(EXEEXT) EmSpecialTest$(EXEEXT) \
+ FileFinderTest$(EXEEXT) FilePathTest$(EXEEXT) \
+ FileSystemTest$(EXEEXT) FontManagerTest$(EXEEXT) \
+ FontMapTest$(EXEEXT) GFGlyphTracerTest$(EXEEXT) \
+ GFReaderTest$(EXEEXT) GhostscriptTest$(EXEEXT) \
+ GraphicsPathTest$(EXEEXT) JFMReaderTest$(EXEEXT) \
+ LengthTest$(EXEEXT) MapLineTest$(EXEEXT) MatrixTest$(EXEEXT) \
+ MessageExceptionTest$(EXEEXT) PageRagesTest$(EXEEXT) \
+ PageSizeTest$(EXEEXT) PairTest$(EXEEXT) \
+ PSInterpreterTest$(EXEEXT) RangeMapTest$(EXEEXT) \
+ ShadingPatchTest$(EXEEXT) SplittedCharInputBufferTest$(EXEEXT) \
+ StreamInputBufferTest$(EXEEXT) StreamReaderTest$(EXEEXT) \
+ StreamWriterTest$(EXEEXT) SubfontTest$(EXEEXT) \
+ SVGOutputTest$(EXEEXT) TensorProductPatchTest$(EXEEXT) \
+ TFMReaderTest$(EXEEXT) ToUnicodeMapTest$(EXEEXT) \
+ TriangularPatchTest$(EXEEXT) UnicodeTest$(EXEEXT) \
+ UtilityTest$(EXEEXT) VectorIteratorTest$(EXEEXT) \
+ VectorStreamTest$(EXEEXT) XMLNodeTest$(EXEEXT) \
+ XMLStringTest$(EXEEXT)
+subdir = tests
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am_BezierTest_OBJECTS = BezierTest.$(OBJEXT)
+BezierTest_OBJECTS = $(am_BezierTest_OBJECTS)
+am__DEPENDENCIES_1 =
+BezierTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_BitmapTest_OBJECTS = BitmapTest.$(OBJEXT)
+BitmapTest_OBJECTS = $(am_BitmapTest_OBJECTS)
+BitmapTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_BoundingBoxTest_OBJECTS = BoundingBoxTest.$(OBJEXT)
+BoundingBoxTest_OBJECTS = $(am_BoundingBoxTest_OBJECTS)
+BoundingBoxTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_CMapManagerTest_OBJECTS = CMapManagerTest.$(OBJEXT)
+CMapManagerTest_OBJECTS = $(am_CMapManagerTest_OBJECTS)
+CMapManagerTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_CMapReaderTest_OBJECTS = CMapReaderTest.$(OBJEXT)
+CMapReaderTest_OBJECTS = $(am_CMapReaderTest_OBJECTS)
+CMapReaderTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_CMapTest_OBJECTS = CMapTest.$(OBJEXT)
+CMapTest_OBJECTS = $(am_CMapTest_OBJECTS)
+CMapTest_DEPENDENCIES = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a \
+ $(am__DEPENDENCIES_1)
+am_CRC32Test_OBJECTS = CRC32Test.$(OBJEXT)
+CRC32Test_OBJECTS = $(am_CRC32Test_OBJECTS)
+CRC32Test_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_CalculatorTest_OBJECTS = CalculatorTest.$(OBJEXT)
+CalculatorTest_OBJECTS = $(am_CalculatorTest_OBJECTS)
+CalculatorTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_ColorSpecialTest_OBJECTS = ColorSpecialTest.$(OBJEXT)
+ColorSpecialTest_OBJECTS = $(am_ColorSpecialTest_OBJECTS)
+ColorSpecialTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_ColorTest_OBJECTS = ColorTest.$(OBJEXT)
+ColorTest_OBJECTS = $(am_ColorTest_OBJECTS)
+ColorTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_CommandLineTest_OBJECTS = CommandLineTest.$(OBJEXT)
+CommandLineTest_OBJECTS = $(am_CommandLineTest_OBJECTS)
+CommandLineTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_DependencyGraphTest_OBJECTS = DependencyGraphTest.$(OBJEXT)
+DependencyGraphTest_OBJECTS = $(am_DependencyGraphTest_OBJECTS)
+DependencyGraphTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_DirectoryTest_OBJECTS = DirectoryTest.$(OBJEXT)
+DirectoryTest_OBJECTS = $(am_DirectoryTest_OBJECTS)
+DirectoryTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_DvisvgmSpecialTest_OBJECTS = DvisvgmSpecialTest.$(OBJEXT)
+DvisvgmSpecialTest_OBJECTS = $(am_DvisvgmSpecialTest_OBJECTS)
+DvisvgmSpecialTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_EmSpecialTest_OBJECTS = EmSpecialTest.$(OBJEXT)
+EmSpecialTest_OBJECTS = $(am_EmSpecialTest_OBJECTS)
+EmSpecialTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_FileFinderTest_OBJECTS = FileFinderTest.$(OBJEXT)
+FileFinderTest_OBJECTS = $(am_FileFinderTest_OBJECTS)
+FileFinderTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_FilePathTest_OBJECTS = FilePathTest.$(OBJEXT)
+FilePathTest_OBJECTS = $(am_FilePathTest_OBJECTS)
+FilePathTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_FileSystemTest_OBJECTS = FileSystemTest.$(OBJEXT)
+FileSystemTest_OBJECTS = $(am_FileSystemTest_OBJECTS)
+FileSystemTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_FontManagerTest_OBJECTS = FontManagerTest.$(OBJEXT)
+FontManagerTest_OBJECTS = $(am_FontManagerTest_OBJECTS)
+FontManagerTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_FontMapTest_OBJECTS = FontMapTest.$(OBJEXT)
+FontMapTest_OBJECTS = $(am_FontMapTest_OBJECTS)
+FontMapTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_GFGlyphTracerTest_OBJECTS = GFGlyphTracerTest.$(OBJEXT)
+GFGlyphTracerTest_OBJECTS = $(am_GFGlyphTracerTest_OBJECTS)
+GFGlyphTracerTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_GFReaderTest_OBJECTS = GFReaderTest.$(OBJEXT)
+GFReaderTest_OBJECTS = $(am_GFReaderTest_OBJECTS)
+GFReaderTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_GhostscriptTest_OBJECTS = GhostscriptTest.$(OBJEXT)
+GhostscriptTest_OBJECTS = $(am_GhostscriptTest_OBJECTS)
+GhostscriptTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_GraphicsPathTest_OBJECTS = GraphicsPathTest.$(OBJEXT)
+GraphicsPathTest_OBJECTS = $(am_GraphicsPathTest_OBJECTS)
+GraphicsPathTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_JFMReaderTest_OBJECTS = JFMReaderTest.$(OBJEXT)
+JFMReaderTest_OBJECTS = $(am_JFMReaderTest_OBJECTS)
+JFMReaderTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_LengthTest_OBJECTS = LengthTest.$(OBJEXT)
+LengthTest_OBJECTS = $(am_LengthTest_OBJECTS)
+LengthTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_MapLineTest_OBJECTS = MapLineTest.$(OBJEXT)
+MapLineTest_OBJECTS = $(am_MapLineTest_OBJECTS)
+MapLineTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_MatrixTest_OBJECTS = MatrixTest.$(OBJEXT)
+MatrixTest_OBJECTS = $(am_MatrixTest_OBJECTS)
+MatrixTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_MessageExceptionTest_OBJECTS = MessageExceptionTest.$(OBJEXT)
+MessageExceptionTest_OBJECTS = $(am_MessageExceptionTest_OBJECTS)
+MessageExceptionTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_PSInterpreterTest_OBJECTS = PSInterpreterTest.$(OBJEXT)
+PSInterpreterTest_OBJECTS = $(am_PSInterpreterTest_OBJECTS)
+PSInterpreterTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_PageRagesTest_OBJECTS = PageRagesTest.$(OBJEXT)
+PageRagesTest_OBJECTS = $(am_PageRagesTest_OBJECTS)
+PageRagesTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_PageSizeTest_OBJECTS = PageSizeTest.$(OBJEXT)
+PageSizeTest_OBJECTS = $(am_PageSizeTest_OBJECTS)
+PageSizeTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_PairTest_OBJECTS = PairTest.$(OBJEXT)
+PairTest_OBJECTS = $(am_PairTest_OBJECTS)
+PairTest_DEPENDENCIES = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a \
+ $(am__DEPENDENCIES_1)
+am_RangeMapTest_OBJECTS = RangeMapTest.$(OBJEXT)
+RangeMapTest_OBJECTS = $(am_RangeMapTest_OBJECTS)
+RangeMapTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_SVGOutputTest_OBJECTS = SVGOutputTest.$(OBJEXT)
+SVGOutputTest_OBJECTS = $(am_SVGOutputTest_OBJECTS)
+SVGOutputTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_ShadingPatchTest_OBJECTS = ShadingPatchTest.$(OBJEXT)
+ShadingPatchTest_OBJECTS = $(am_ShadingPatchTest_OBJECTS)
+ShadingPatchTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_SplittedCharInputBufferTest_OBJECTS = \
+ SplittedCharInputBufferTest.$(OBJEXT)
+SplittedCharInputBufferTest_OBJECTS = \
+ $(am_SplittedCharInputBufferTest_OBJECTS)
+SplittedCharInputBufferTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_StreamInputBufferTest_OBJECTS = StreamInputBufferTest.$(OBJEXT)
+StreamInputBufferTest_OBJECTS = $(am_StreamInputBufferTest_OBJECTS)
+StreamInputBufferTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_StreamReaderTest_OBJECTS = StreamReaderTest.$(OBJEXT)
+StreamReaderTest_OBJECTS = $(am_StreamReaderTest_OBJECTS)
+StreamReaderTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_StreamWriterTest_OBJECTS = StreamWriterTest.$(OBJEXT)
+StreamWriterTest_OBJECTS = $(am_StreamWriterTest_OBJECTS)
+StreamWriterTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_SubfontTest_OBJECTS = SubfontTest.$(OBJEXT)
+SubfontTest_OBJECTS = $(am_SubfontTest_OBJECTS)
+SubfontTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_TFMReaderTest_OBJECTS = TFMReaderTest.$(OBJEXT)
+TFMReaderTest_OBJECTS = $(am_TFMReaderTest_OBJECTS)
+TFMReaderTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_TensorProductPatchTest_OBJECTS = TensorProductPatchTest.$(OBJEXT)
+TensorProductPatchTest_OBJECTS = $(am_TensorProductPatchTest_OBJECTS)
+TensorProductPatchTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_ToUnicodeMapTest_OBJECTS = ToUnicodeMapTest.$(OBJEXT)
+ToUnicodeMapTest_OBJECTS = $(am_ToUnicodeMapTest_OBJECTS)
+ToUnicodeMapTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_TriangularPatchTest_OBJECTS = TriangularPatchTest.$(OBJEXT)
+TriangularPatchTest_OBJECTS = $(am_TriangularPatchTest_OBJECTS)
+TriangularPatchTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_UnicodeTest_OBJECTS = UnicodeTest.$(OBJEXT)
+UnicodeTest_OBJECTS = $(am_UnicodeTest_OBJECTS)
+UnicodeTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_UtilityTest_OBJECTS = UtilityTest.$(OBJEXT)
+UtilityTest_OBJECTS = $(am_UtilityTest_OBJECTS)
+UtilityTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_VectorIteratorTest_OBJECTS = VectorIteratorTest.$(OBJEXT)
+VectorIteratorTest_OBJECTS = $(am_VectorIteratorTest_OBJECTS)
+VectorIteratorTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_VectorStreamTest_OBJECTS = VectorStreamTest.$(OBJEXT)
+VectorStreamTest_OBJECTS = $(am_VectorStreamTest_OBJECTS)
+VectorStreamTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_XMLNodeTest_OBJECTS = XMLNodeTest.$(OBJEXT)
+XMLNodeTest_OBJECTS = $(am_XMLNodeTest_OBJECTS)
+XMLNodeTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+am_XMLStringTest_OBJECTS = XMLStringTest.$(OBJEXT)
+XMLStringTest_OBJECTS = $(am_XMLStringTest_OBJECTS)
+XMLStringTest_DEPENDENCIES = ../src/libdvisvgm.a \
+ ../libs/xxHash/libxxhash.a $(am__DEPENDENCIES_1)
+nodist_hashcheck_OBJECTS = hashcheck-hashcheck.$(OBJEXT)
+hashcheck_OBJECTS = $(nodist_hashcheck_OBJECTS)
+hashcheck_DEPENDENCIES = ../libs/xxHash/libxxhash.a
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo " CXX " $@;
+am__v_CXX_1 =
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo " CXXLD " $@;
+am__v_CXXLD_1 =
+SOURCES = $(BezierTest_SOURCES) $(BitmapTest_SOURCES) \
+ $(BoundingBoxTest_SOURCES) $(CMapManagerTest_SOURCES) \
+ $(CMapReaderTest_SOURCES) $(CMapTest_SOURCES) \
+ $(CRC32Test_SOURCES) $(CalculatorTest_SOURCES) \
+ $(ColorSpecialTest_SOURCES) $(ColorTest_SOURCES) \
+ $(CommandLineTest_SOURCES) $(DependencyGraphTest_SOURCES) \
+ $(DirectoryTest_SOURCES) $(DvisvgmSpecialTest_SOURCES) \
+ $(EmSpecialTest_SOURCES) $(FileFinderTest_SOURCES) \
+ $(FilePathTest_SOURCES) $(FileSystemTest_SOURCES) \
+ $(FontManagerTest_SOURCES) $(FontMapTest_SOURCES) \
+ $(GFGlyphTracerTest_SOURCES) $(GFReaderTest_SOURCES) \
+ $(GhostscriptTest_SOURCES) $(GraphicsPathTest_SOURCES) \
+ $(JFMReaderTest_SOURCES) $(LengthTest_SOURCES) \
+ $(MapLineTest_SOURCES) $(MatrixTest_SOURCES) \
+ $(MessageExceptionTest_SOURCES) $(PSInterpreterTest_SOURCES) \
+ $(PageRagesTest_SOURCES) $(PageSizeTest_SOURCES) \
+ $(PairTest_SOURCES) $(RangeMapTest_SOURCES) \
+ $(SVGOutputTest_SOURCES) $(ShadingPatchTest_SOURCES) \
+ $(SplittedCharInputBufferTest_SOURCES) \
+ $(StreamInputBufferTest_SOURCES) $(StreamReaderTest_SOURCES) \
+ $(StreamWriterTest_SOURCES) $(SubfontTest_SOURCES) \
+ $(TFMReaderTest_SOURCES) $(TensorProductPatchTest_SOURCES) \
+ $(ToUnicodeMapTest_SOURCES) $(TriangularPatchTest_SOURCES) \
+ $(UnicodeTest_SOURCES) $(UtilityTest_SOURCES) \
+ $(VectorIteratorTest_SOURCES) $(VectorStreamTest_SOURCES) \
+ $(XMLNodeTest_SOURCES) $(XMLStringTest_SOURCES) \
+ $(nodist_hashcheck_SOURCES)
+DIST_SOURCES = $(BezierTest_SOURCES) $(BitmapTest_SOURCES) \
+ $(BoundingBoxTest_SOURCES) $(CMapManagerTest_SOURCES) \
+ $(CMapReaderTest_SOURCES) $(CMapTest_SOURCES) \
+ $(CRC32Test_SOURCES) $(CalculatorTest_SOURCES) \
+ $(ColorSpecialTest_SOURCES) $(ColorTest_SOURCES) \
+ $(CommandLineTest_SOURCES) $(DependencyGraphTest_SOURCES) \
+ $(DirectoryTest_SOURCES) $(DvisvgmSpecialTest_SOURCES) \
+ $(EmSpecialTest_SOURCES) $(FileFinderTest_SOURCES) \
+ $(FilePathTest_SOURCES) $(FileSystemTest_SOURCES) \
+ $(FontManagerTest_SOURCES) $(FontMapTest_SOURCES) \
+ $(GFGlyphTracerTest_SOURCES) $(GFReaderTest_SOURCES) \
+ $(GhostscriptTest_SOURCES) $(GraphicsPathTest_SOURCES) \
+ $(JFMReaderTest_SOURCES) $(LengthTest_SOURCES) \
+ $(MapLineTest_SOURCES) $(MatrixTest_SOURCES) \
+ $(MessageExceptionTest_SOURCES) $(PSInterpreterTest_SOURCES) \
+ $(PageRagesTest_SOURCES) $(PageSizeTest_SOURCES) \
+ $(PairTest_SOURCES) $(RangeMapTest_SOURCES) \
+ $(SVGOutputTest_SOURCES) $(ShadingPatchTest_SOURCES) \
+ $(SplittedCharInputBufferTest_SOURCES) \
+ $(StreamInputBufferTest_SOURCES) $(StreamReaderTest_SOURCES) \
+ $(StreamWriterTest_SOURCES) $(SubfontTest_SOURCES) \
+ $(TFMReaderTest_SOURCES) $(TensorProductPatchTest_SOURCES) \
+ $(ToUnicodeMapTest_SOURCES) $(TriangularPatchTest_SOURCES) \
+ $(UnicodeTest_SOURCES) $(UtilityTest_SOURCES) \
+ $(VectorIteratorTest_SOURCES) $(VectorStreamTest_SOURCES) \
+ $(XMLNodeTest_SOURCES) $(XMLStringTest_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GCOV = @GCOV@
+GENHTML = @GENHTML@
+GREP = @GREP@
+HAVE_CXX11 = @HAVE_CXX11@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCOV = @LCOV@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ZLIB_CFLAGS = @ZLIB_CFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = data
+AM_CXXFLAGS = -I$(top_srcdir)/src -Wall -DSRCDIR='"$(srcdir)"' $(CODE_COVERAGE_CFLAGS)
+nodist_hashcheck_SOURCES = hashcheck.cpp
+hashcheck_LDADD = ../libs/xxHash/libxxhash.a
+hashcheck_CPPFLAGS = -I$(top_srcdir)/libs/xxHash
+BezierTest_SOURCES = BezierTest.cpp
+BezierTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+BitmapTest_SOURCES = BitmapTest.cpp
+BitmapTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+BoundingBoxTest_SOURCES = BoundingBoxTest.cpp
+BoundingBoxTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+CalculatorTest_SOURCES = CalculatorTest.cpp
+CalculatorTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+CMapManagerTest_SOURCES = CMapManagerTest.cpp
+CMapManagerTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+CMapReaderTest_SOURCES = CMapReaderTest.cpp
+CMapReaderTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+CMapTest_SOURCES = CMapTest.cpp
+CMapTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+ColorSpecialTest_SOURCES = ColorSpecialTest.cpp
+ColorSpecialTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+ColorTest_SOURCES = ColorTest.cpp
+ColorTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+CommandLineTest_SOURCES = CommandLineTest.cpp
+CommandLineTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+CRC32Test_SOURCES = CRC32Test.cpp
+CRC32Test_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+DependencyGraphTest_SOURCES = DependencyGraphTest.cpp
+DependencyGraphTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+DirectoryTest_SOURCES = DirectoryTest.cpp
+DirectoryTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+DvisvgmSpecialTest_SOURCES = DvisvgmSpecialTest.cpp
+DvisvgmSpecialTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+EmSpecialTest_SOURCES = EmSpecialTest.cpp
+EmSpecialTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+FileFinderTest_SOURCES = FileFinderTest.cpp
+FileFinderTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+FilePathTest_SOURCES = FilePathTest.cpp
+FilePathTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+FileSystemTest_SOURCES = FileSystemTest.cpp
+FileSystemTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+FontManagerTest_SOURCES = FontManagerTest.cpp
+FontManagerTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+FontMapTest_SOURCES = FontMapTest.cpp
+FontMapTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+GFGlyphTracerTest_SOURCES = GFGlyphTracerTest.cpp
+GFGlyphTracerTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+GFReaderTest_SOURCES = GFReaderTest.cpp
+GFReaderTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+GhostscriptTest_SOURCES = GhostscriptTest.cpp
+GhostscriptTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+GraphicsPathTest_SOURCES = GraphicsPathTest.cpp
+GraphicsPathTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+JFMReaderTest_SOURCES = JFMReaderTest.cpp
+JFMReaderTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+LengthTest_SOURCES = LengthTest.cpp
+LengthTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+MapLineTest_SOURCES = MapLineTest.cpp
+MapLineTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+MatrixTest_SOURCES = MatrixTest.cpp
+MatrixTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+MessageExceptionTest_SOURCES = MessageExceptionTest.cpp
+MessageExceptionTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+PageRagesTest_SOURCES = PageRagesTest.cpp
+PageRagesTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+PageSizeTest_SOURCES = PageSizeTest.cpp
+PageSizeTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+PairTest_SOURCES = PairTest.cpp
+PairTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+PSInterpreterTest_SOURCES = PSInterpreterTest.cpp
+PSInterpreterTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+RangeMapTest_SOURCES = RangeMapTest.cpp
+RangeMapTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+ShadingPatchTest_SOURCES = ShadingPatchTest.cpp
+ShadingPatchTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+SplittedCharInputBufferTest_SOURCES = SplittedCharInputBufferTest.cpp
+SplittedCharInputBufferTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+StreamInputBufferTest_SOURCES = StreamInputBufferTest.cpp
+StreamInputBufferTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+StreamReaderTest_SOURCES = StreamReaderTest.cpp
+StreamReaderTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+StreamWriterTest_SOURCES = StreamWriterTest.cpp
+StreamWriterTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+SubfontTest_SOURCES = SubfontTest.cpp
+SubfontTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+SVGOutputTest_SOURCES = SVGOutputTest.cpp
+SVGOutputTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+TensorProductPatchTest_SOURCES = TensorProductPatchTest.cpp
+TensorProductPatchTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+TFMReaderTest_SOURCES = TFMReaderTest.cpp
+TFMReaderTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+ToUnicodeMapTest_SOURCES = ToUnicodeMapTest.cpp
+ToUnicodeMapTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+TriangularPatchTest_SOURCES = TriangularPatchTest.cpp
+TriangularPatchTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+UnicodeTest_SOURCES = UnicodeTest.cpp
+UnicodeTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+UtilityTest_SOURCES = UtilityTest.cpp
+UtilityTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+VectorIteratorTest_SOURCES = VectorIteratorTest.cpp
+VectorIteratorTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+VectorStreamTest_SOURCES = VectorStreamTest.cpp
+VectorStreamTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+XMLNodeTest_SOURCES = XMLNodeTest.cpp
+XMLNodeTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+XMLStringTest_SOURCES = XMLStringTest.cpp
+XMLStringTest_LDADD = ../src/libdvisvgm.a ../libs/xxHash/libxxhash.a -L../potracelib -lpotrace -lfreetype -lgtest -lgtest_main -lpthread $(CODE_COVERAGE_LDFLAGS)
+EXTRA_DIST = check-conv genhashcheck.py normalize.xsl
+CLEANFILES = *.gcda *.gcno hashcheck.cpp
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cpp .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+
+BezierTest$(EXEEXT): $(BezierTest_OBJECTS) $(BezierTest_DEPENDENCIES) $(EXTRA_BezierTest_DEPENDENCIES)
+ @rm -f BezierTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(BezierTest_OBJECTS) $(BezierTest_LDADD) $(LIBS)
+
+BitmapTest$(EXEEXT): $(BitmapTest_OBJECTS) $(BitmapTest_DEPENDENCIES) $(EXTRA_BitmapTest_DEPENDENCIES)
+ @rm -f BitmapTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(BitmapTest_OBJECTS) $(BitmapTest_LDADD) $(LIBS)
+
+BoundingBoxTest$(EXEEXT): $(BoundingBoxTest_OBJECTS) $(BoundingBoxTest_DEPENDENCIES) $(EXTRA_BoundingBoxTest_DEPENDENCIES)
+ @rm -f BoundingBoxTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(BoundingBoxTest_OBJECTS) $(BoundingBoxTest_LDADD) $(LIBS)
+
+CMapManagerTest$(EXEEXT): $(CMapManagerTest_OBJECTS) $(CMapManagerTest_DEPENDENCIES) $(EXTRA_CMapManagerTest_DEPENDENCIES)
+ @rm -f CMapManagerTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(CMapManagerTest_OBJECTS) $(CMapManagerTest_LDADD) $(LIBS)
+
+CMapReaderTest$(EXEEXT): $(CMapReaderTest_OBJECTS) $(CMapReaderTest_DEPENDENCIES) $(EXTRA_CMapReaderTest_DEPENDENCIES)
+ @rm -f CMapReaderTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(CMapReaderTest_OBJECTS) $(CMapReaderTest_LDADD) $(LIBS)
+
+CMapTest$(EXEEXT): $(CMapTest_OBJECTS) $(CMapTest_DEPENDENCIES) $(EXTRA_CMapTest_DEPENDENCIES)
+ @rm -f CMapTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(CMapTest_OBJECTS) $(CMapTest_LDADD) $(LIBS)
+
+CRC32Test$(EXEEXT): $(CRC32Test_OBJECTS) $(CRC32Test_DEPENDENCIES) $(EXTRA_CRC32Test_DEPENDENCIES)
+ @rm -f CRC32Test$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(CRC32Test_OBJECTS) $(CRC32Test_LDADD) $(LIBS)
+
+CalculatorTest$(EXEEXT): $(CalculatorTest_OBJECTS) $(CalculatorTest_DEPENDENCIES) $(EXTRA_CalculatorTest_DEPENDENCIES)
+ @rm -f CalculatorTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(CalculatorTest_OBJECTS) $(CalculatorTest_LDADD) $(LIBS)
+
+ColorSpecialTest$(EXEEXT): $(ColorSpecialTest_OBJECTS) $(ColorSpecialTest_DEPENDENCIES) $(EXTRA_ColorSpecialTest_DEPENDENCIES)
+ @rm -f ColorSpecialTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(ColorSpecialTest_OBJECTS) $(ColorSpecialTest_LDADD) $(LIBS)
+
+ColorTest$(EXEEXT): $(ColorTest_OBJECTS) $(ColorTest_DEPENDENCIES) $(EXTRA_ColorTest_DEPENDENCIES)
+ @rm -f ColorTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(ColorTest_OBJECTS) $(ColorTest_LDADD) $(LIBS)
+
+CommandLineTest$(EXEEXT): $(CommandLineTest_OBJECTS) $(CommandLineTest_DEPENDENCIES) $(EXTRA_CommandLineTest_DEPENDENCIES)
+ @rm -f CommandLineTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(CommandLineTest_OBJECTS) $(CommandLineTest_LDADD) $(LIBS)
+
+DependencyGraphTest$(EXEEXT): $(DependencyGraphTest_OBJECTS) $(DependencyGraphTest_DEPENDENCIES) $(EXTRA_DependencyGraphTest_DEPENDENCIES)
+ @rm -f DependencyGraphTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(DependencyGraphTest_OBJECTS) $(DependencyGraphTest_LDADD) $(LIBS)
+
+DirectoryTest$(EXEEXT): $(DirectoryTest_OBJECTS) $(DirectoryTest_DEPENDENCIES) $(EXTRA_DirectoryTest_DEPENDENCIES)
+ @rm -f DirectoryTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(DirectoryTest_OBJECTS) $(DirectoryTest_LDADD) $(LIBS)
+
+DvisvgmSpecialTest$(EXEEXT): $(DvisvgmSpecialTest_OBJECTS) $(DvisvgmSpecialTest_DEPENDENCIES) $(EXTRA_DvisvgmSpecialTest_DEPENDENCIES)
+ @rm -f DvisvgmSpecialTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(DvisvgmSpecialTest_OBJECTS) $(DvisvgmSpecialTest_LDADD) $(LIBS)
+
+EmSpecialTest$(EXEEXT): $(EmSpecialTest_OBJECTS) $(EmSpecialTest_DEPENDENCIES) $(EXTRA_EmSpecialTest_DEPENDENCIES)
+ @rm -f EmSpecialTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(EmSpecialTest_OBJECTS) $(EmSpecialTest_LDADD) $(LIBS)
+
+FileFinderTest$(EXEEXT): $(FileFinderTest_OBJECTS) $(FileFinderTest_DEPENDENCIES) $(EXTRA_FileFinderTest_DEPENDENCIES)
+ @rm -f FileFinderTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(FileFinderTest_OBJECTS) $(FileFinderTest_LDADD) $(LIBS)
+
+FilePathTest$(EXEEXT): $(FilePathTest_OBJECTS) $(FilePathTest_DEPENDENCIES) $(EXTRA_FilePathTest_DEPENDENCIES)
+ @rm -f FilePathTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(FilePathTest_OBJECTS) $(FilePathTest_LDADD) $(LIBS)
+
+FileSystemTest$(EXEEXT): $(FileSystemTest_OBJECTS) $(FileSystemTest_DEPENDENCIES) $(EXTRA_FileSystemTest_DEPENDENCIES)
+ @rm -f FileSystemTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(FileSystemTest_OBJECTS) $(FileSystemTest_LDADD) $(LIBS)
+
+FontManagerTest$(EXEEXT): $(FontManagerTest_OBJECTS) $(FontManagerTest_DEPENDENCIES) $(EXTRA_FontManagerTest_DEPENDENCIES)
+ @rm -f FontManagerTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(FontManagerTest_OBJECTS) $(FontManagerTest_LDADD) $(LIBS)
+
+FontMapTest$(EXEEXT): $(FontMapTest_OBJECTS) $(FontMapTest_DEPENDENCIES) $(EXTRA_FontMapTest_DEPENDENCIES)
+ @rm -f FontMapTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(FontMapTest_OBJECTS) $(FontMapTest_LDADD) $(LIBS)
+
+GFGlyphTracerTest$(EXEEXT): $(GFGlyphTracerTest_OBJECTS) $(GFGlyphTracerTest_DEPENDENCIES) $(EXTRA_GFGlyphTracerTest_DEPENDENCIES)
+ @rm -f GFGlyphTracerTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(GFGlyphTracerTest_OBJECTS) $(GFGlyphTracerTest_LDADD) $(LIBS)
+
+GFReaderTest$(EXEEXT): $(GFReaderTest_OBJECTS) $(GFReaderTest_DEPENDENCIES) $(EXTRA_GFReaderTest_DEPENDENCIES)
+ @rm -f GFReaderTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(GFReaderTest_OBJECTS) $(GFReaderTest_LDADD) $(LIBS)
+
+GhostscriptTest$(EXEEXT): $(GhostscriptTest_OBJECTS) $(GhostscriptTest_DEPENDENCIES) $(EXTRA_GhostscriptTest_DEPENDENCIES)
+ @rm -f GhostscriptTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(GhostscriptTest_OBJECTS) $(GhostscriptTest_LDADD) $(LIBS)
+
+GraphicsPathTest$(EXEEXT): $(GraphicsPathTest_OBJECTS) $(GraphicsPathTest_DEPENDENCIES) $(EXTRA_GraphicsPathTest_DEPENDENCIES)
+ @rm -f GraphicsPathTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(GraphicsPathTest_OBJECTS) $(GraphicsPathTest_LDADD) $(LIBS)
+
+JFMReaderTest$(EXEEXT): $(JFMReaderTest_OBJECTS) $(JFMReaderTest_DEPENDENCIES) $(EXTRA_JFMReaderTest_DEPENDENCIES)
+ @rm -f JFMReaderTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(JFMReaderTest_OBJECTS) $(JFMReaderTest_LDADD) $(LIBS)
+
+LengthTest$(EXEEXT): $(LengthTest_OBJECTS) $(LengthTest_DEPENDENCIES) $(EXTRA_LengthTest_DEPENDENCIES)
+ @rm -f LengthTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(LengthTest_OBJECTS) $(LengthTest_LDADD) $(LIBS)
+
+MapLineTest$(EXEEXT): $(MapLineTest_OBJECTS) $(MapLineTest_DEPENDENCIES) $(EXTRA_MapLineTest_DEPENDENCIES)
+ @rm -f MapLineTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(MapLineTest_OBJECTS) $(MapLineTest_LDADD) $(LIBS)
+
+MatrixTest$(EXEEXT): $(MatrixTest_OBJECTS) $(MatrixTest_DEPENDENCIES) $(EXTRA_MatrixTest_DEPENDENCIES)
+ @rm -f MatrixTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(MatrixTest_OBJECTS) $(MatrixTest_LDADD) $(LIBS)
+
+MessageExceptionTest$(EXEEXT): $(MessageExceptionTest_OBJECTS) $(MessageExceptionTest_DEPENDENCIES) $(EXTRA_MessageExceptionTest_DEPENDENCIES)
+ @rm -f MessageExceptionTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(MessageExceptionTest_OBJECTS) $(MessageExceptionTest_LDADD) $(LIBS)
+
+PSInterpreterTest$(EXEEXT): $(PSInterpreterTest_OBJECTS) $(PSInterpreterTest_DEPENDENCIES) $(EXTRA_PSInterpreterTest_DEPENDENCIES)
+ @rm -f PSInterpreterTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(PSInterpreterTest_OBJECTS) $(PSInterpreterTest_LDADD) $(LIBS)
+
+PageRagesTest$(EXEEXT): $(PageRagesTest_OBJECTS) $(PageRagesTest_DEPENDENCIES) $(EXTRA_PageRagesTest_DEPENDENCIES)
+ @rm -f PageRagesTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(PageRagesTest_OBJECTS) $(PageRagesTest_LDADD) $(LIBS)
+
+PageSizeTest$(EXEEXT): $(PageSizeTest_OBJECTS) $(PageSizeTest_DEPENDENCIES) $(EXTRA_PageSizeTest_DEPENDENCIES)
+ @rm -f PageSizeTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(PageSizeTest_OBJECTS) $(PageSizeTest_LDADD) $(LIBS)
+
+PairTest$(EXEEXT): $(PairTest_OBJECTS) $(PairTest_DEPENDENCIES) $(EXTRA_PairTest_DEPENDENCIES)
+ @rm -f PairTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(PairTest_OBJECTS) $(PairTest_LDADD) $(LIBS)
+
+RangeMapTest$(EXEEXT): $(RangeMapTest_OBJECTS) $(RangeMapTest_DEPENDENCIES) $(EXTRA_RangeMapTest_DEPENDENCIES)
+ @rm -f RangeMapTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(RangeMapTest_OBJECTS) $(RangeMapTest_LDADD) $(LIBS)
+
+SVGOutputTest$(EXEEXT): $(SVGOutputTest_OBJECTS) $(SVGOutputTest_DEPENDENCIES) $(EXTRA_SVGOutputTest_DEPENDENCIES)
+ @rm -f SVGOutputTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(SVGOutputTest_OBJECTS) $(SVGOutputTest_LDADD) $(LIBS)
+
+ShadingPatchTest$(EXEEXT): $(ShadingPatchTest_OBJECTS) $(ShadingPatchTest_DEPENDENCIES) $(EXTRA_ShadingPatchTest_DEPENDENCIES)
+ @rm -f ShadingPatchTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(ShadingPatchTest_OBJECTS) $(ShadingPatchTest_LDADD) $(LIBS)
+
+SplittedCharInputBufferTest$(EXEEXT): $(SplittedCharInputBufferTest_OBJECTS) $(SplittedCharInputBufferTest_DEPENDENCIES) $(EXTRA_SplittedCharInputBufferTest_DEPENDENCIES)
+ @rm -f SplittedCharInputBufferTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(SplittedCharInputBufferTest_OBJECTS) $(SplittedCharInputBufferTest_LDADD) $(LIBS)
+
+StreamInputBufferTest$(EXEEXT): $(StreamInputBufferTest_OBJECTS) $(StreamInputBufferTest_DEPENDENCIES) $(EXTRA_StreamInputBufferTest_DEPENDENCIES)
+ @rm -f StreamInputBufferTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(StreamInputBufferTest_OBJECTS) $(StreamInputBufferTest_LDADD) $(LIBS)
+
+StreamReaderTest$(EXEEXT): $(StreamReaderTest_OBJECTS) $(StreamReaderTest_DEPENDENCIES) $(EXTRA_StreamReaderTest_DEPENDENCIES)
+ @rm -f StreamReaderTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(StreamReaderTest_OBJECTS) $(StreamReaderTest_LDADD) $(LIBS)
+
+StreamWriterTest$(EXEEXT): $(StreamWriterTest_OBJECTS) $(StreamWriterTest_DEPENDENCIES) $(EXTRA_StreamWriterTest_DEPENDENCIES)
+ @rm -f StreamWriterTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(StreamWriterTest_OBJECTS) $(StreamWriterTest_LDADD) $(LIBS)
+
+SubfontTest$(EXEEXT): $(SubfontTest_OBJECTS) $(SubfontTest_DEPENDENCIES) $(EXTRA_SubfontTest_DEPENDENCIES)
+ @rm -f SubfontTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(SubfontTest_OBJECTS) $(SubfontTest_LDADD) $(LIBS)
+
+TFMReaderTest$(EXEEXT): $(TFMReaderTest_OBJECTS) $(TFMReaderTest_DEPENDENCIES) $(EXTRA_TFMReaderTest_DEPENDENCIES)
+ @rm -f TFMReaderTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(TFMReaderTest_OBJECTS) $(TFMReaderTest_LDADD) $(LIBS)
+
+TensorProductPatchTest$(EXEEXT): $(TensorProductPatchTest_OBJECTS) $(TensorProductPatchTest_DEPENDENCIES) $(EXTRA_TensorProductPatchTest_DEPENDENCIES)
+ @rm -f TensorProductPatchTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(TensorProductPatchTest_OBJECTS) $(TensorProductPatchTest_LDADD) $(LIBS)
+
+ToUnicodeMapTest$(EXEEXT): $(ToUnicodeMapTest_OBJECTS) $(ToUnicodeMapTest_DEPENDENCIES) $(EXTRA_ToUnicodeMapTest_DEPENDENCIES)
+ @rm -f ToUnicodeMapTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(ToUnicodeMapTest_OBJECTS) $(ToUnicodeMapTest_LDADD) $(LIBS)
+
+TriangularPatchTest$(EXEEXT): $(TriangularPatchTest_OBJECTS) $(TriangularPatchTest_DEPENDENCIES) $(EXTRA_TriangularPatchTest_DEPENDENCIES)
+ @rm -f TriangularPatchTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(TriangularPatchTest_OBJECTS) $(TriangularPatchTest_LDADD) $(LIBS)
+
+UnicodeTest$(EXEEXT): $(UnicodeTest_OBJECTS) $(UnicodeTest_DEPENDENCIES) $(EXTRA_UnicodeTest_DEPENDENCIES)
+ @rm -f UnicodeTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(UnicodeTest_OBJECTS) $(UnicodeTest_LDADD) $(LIBS)
+
+UtilityTest$(EXEEXT): $(UtilityTest_OBJECTS) $(UtilityTest_DEPENDENCIES) $(EXTRA_UtilityTest_DEPENDENCIES)
+ @rm -f UtilityTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(UtilityTest_OBJECTS) $(UtilityTest_LDADD) $(LIBS)
+
+VectorIteratorTest$(EXEEXT): $(VectorIteratorTest_OBJECTS) $(VectorIteratorTest_DEPENDENCIES) $(EXTRA_VectorIteratorTest_DEPENDENCIES)
+ @rm -f VectorIteratorTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(VectorIteratorTest_OBJECTS) $(VectorIteratorTest_LDADD) $(LIBS)
+
+VectorStreamTest$(EXEEXT): $(VectorStreamTest_OBJECTS) $(VectorStreamTest_DEPENDENCIES) $(EXTRA_VectorStreamTest_DEPENDENCIES)
+ @rm -f VectorStreamTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(VectorStreamTest_OBJECTS) $(VectorStreamTest_LDADD) $(LIBS)
+
+XMLNodeTest$(EXEEXT): $(XMLNodeTest_OBJECTS) $(XMLNodeTest_DEPENDENCIES) $(EXTRA_XMLNodeTest_DEPENDENCIES)
+ @rm -f XMLNodeTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(XMLNodeTest_OBJECTS) $(XMLNodeTest_LDADD) $(LIBS)
+
+XMLStringTest$(EXEEXT): $(XMLStringTest_OBJECTS) $(XMLStringTest_DEPENDENCIES) $(EXTRA_XMLStringTest_DEPENDENCIES)
+ @rm -f XMLStringTest$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(XMLStringTest_OBJECTS) $(XMLStringTest_LDADD) $(LIBS)
+
+hashcheck$(EXEEXT): $(hashcheck_OBJECTS) $(hashcheck_DEPENDENCIES) $(EXTRA_hashcheck_DEPENDENCIES)
+ @rm -f hashcheck$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(hashcheck_OBJECTS) $(hashcheck_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BezierTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BitmapTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BoundingBoxTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CMapManagerTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CMapReaderTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CMapTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CRC32Test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CalculatorTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ColorSpecialTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ColorTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CommandLineTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DependencyGraphTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DirectoryTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DvisvgmSpecialTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EmSpecialTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileFinderTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FilePathTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileSystemTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontManagerTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontMapTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GFGlyphTracerTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GFReaderTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GhostscriptTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GraphicsPathTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/JFMReaderTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LengthTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MapLineTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatrixTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MessageExceptionTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PSInterpreterTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PageRagesTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PageSizeTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PairTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RangeMapTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SVGOutputTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShadingPatchTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SplittedCharInputBufferTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StreamInputBufferTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StreamReaderTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StreamWriterTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SubfontTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TFMReaderTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TensorProductPatchTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ToUnicodeMapTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TriangularPatchTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnicodeTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UtilityTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorIteratorTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorStreamTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XMLNodeTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XMLStringTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hashcheck-hashcheck.Po@am__quote@
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+hashcheck-hashcheck.o: hashcheck.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashcheck_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT hashcheck-hashcheck.o -MD -MP -MF $(DEPDIR)/hashcheck-hashcheck.Tpo -c -o hashcheck-hashcheck.o `test -f 'hashcheck.cpp' || echo '$(srcdir)/'`hashcheck.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hashcheck-hashcheck.Tpo $(DEPDIR)/hashcheck-hashcheck.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hashcheck.cpp' object='hashcheck-hashcheck.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashcheck_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hashcheck-hashcheck.o `test -f 'hashcheck.cpp' || echo '$(srcdir)/'`hashcheck.cpp
+
+hashcheck-hashcheck.obj: hashcheck.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashcheck_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT hashcheck-hashcheck.obj -MD -MP -MF $(DEPDIR)/hashcheck-hashcheck.Tpo -c -o hashcheck-hashcheck.obj `if test -f 'hashcheck.cpp'; then $(CYGPATH_W) 'hashcheck.cpp'; else $(CYGPATH_W) '$(srcdir)/hashcheck.cpp'; fi`
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hashcheck-hashcheck.Tpo $(DEPDIR)/hashcheck-hashcheck.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hashcheck.cpp' object='hashcheck-hashcheck.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashcheck_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hashcheck-hashcheck.obj `if test -f 'hashcheck.cpp'; then $(CYGPATH_W) 'hashcheck.cpp'; else $(CYGPATH_W) '$(srcdir)/hashcheck.cpp'; fi`
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_PROGRAMS)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+hashcheck.log: hashcheck$(EXEEXT)
+ @p='hashcheck$(EXEEXT)'; \
+ b='hashcheck'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+BezierTest.log: BezierTest$(EXEEXT)
+ @p='BezierTest$(EXEEXT)'; \
+ b='BezierTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+BitmapTest.log: BitmapTest$(EXEEXT)
+ @p='BitmapTest$(EXEEXT)'; \
+ b='BitmapTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+BoundingBoxTest.log: BoundingBoxTest$(EXEEXT)
+ @p='BoundingBoxTest$(EXEEXT)'; \
+ b='BoundingBoxTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+CalculatorTest.log: CalculatorTest$(EXEEXT)
+ @p='CalculatorTest$(EXEEXT)'; \
+ b='CalculatorTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+CMapManagerTest.log: CMapManagerTest$(EXEEXT)
+ @p='CMapManagerTest$(EXEEXT)'; \
+ b='CMapManagerTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+CMapReaderTest.log: CMapReaderTest$(EXEEXT)
+ @p='CMapReaderTest$(EXEEXT)'; \
+ b='CMapReaderTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+CMapTest.log: CMapTest$(EXEEXT)
+ @p='CMapTest$(EXEEXT)'; \
+ b='CMapTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ColorSpecialTest.log: ColorSpecialTest$(EXEEXT)
+ @p='ColorSpecialTest$(EXEEXT)'; \
+ b='ColorSpecialTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ColorTest.log: ColorTest$(EXEEXT)
+ @p='ColorTest$(EXEEXT)'; \
+ b='ColorTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+CommandLineTest.log: CommandLineTest$(EXEEXT)
+ @p='CommandLineTest$(EXEEXT)'; \
+ b='CommandLineTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+CRC32Test.log: CRC32Test$(EXEEXT)
+ @p='CRC32Test$(EXEEXT)'; \
+ b='CRC32Test'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+DependencyGraphTest.log: DependencyGraphTest$(EXEEXT)
+ @p='DependencyGraphTest$(EXEEXT)'; \
+ b='DependencyGraphTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+DirectoryTest.log: DirectoryTest$(EXEEXT)
+ @p='DirectoryTest$(EXEEXT)'; \
+ b='DirectoryTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+DvisvgmSpecialTest.log: DvisvgmSpecialTest$(EXEEXT)
+ @p='DvisvgmSpecialTest$(EXEEXT)'; \
+ b='DvisvgmSpecialTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+EmSpecialTest.log: EmSpecialTest$(EXEEXT)
+ @p='EmSpecialTest$(EXEEXT)'; \
+ b='EmSpecialTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+FileFinderTest.log: FileFinderTest$(EXEEXT)
+ @p='FileFinderTest$(EXEEXT)'; \
+ b='FileFinderTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+FilePathTest.log: FilePathTest$(EXEEXT)
+ @p='FilePathTest$(EXEEXT)'; \
+ b='FilePathTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+FileSystemTest.log: FileSystemTest$(EXEEXT)
+ @p='FileSystemTest$(EXEEXT)'; \
+ b='FileSystemTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+FontManagerTest.log: FontManagerTest$(EXEEXT)
+ @p='FontManagerTest$(EXEEXT)'; \
+ b='FontManagerTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+FontMapTest.log: FontMapTest$(EXEEXT)
+ @p='FontMapTest$(EXEEXT)'; \
+ b='FontMapTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+GFGlyphTracerTest.log: GFGlyphTracerTest$(EXEEXT)
+ @p='GFGlyphTracerTest$(EXEEXT)'; \
+ b='GFGlyphTracerTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+GFReaderTest.log: GFReaderTest$(EXEEXT)
+ @p='GFReaderTest$(EXEEXT)'; \
+ b='GFReaderTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+GhostscriptTest.log: GhostscriptTest$(EXEEXT)
+ @p='GhostscriptTest$(EXEEXT)'; \
+ b='GhostscriptTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+GraphicsPathTest.log: GraphicsPathTest$(EXEEXT)
+ @p='GraphicsPathTest$(EXEEXT)'; \
+ b='GraphicsPathTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+JFMReaderTest.log: JFMReaderTest$(EXEEXT)
+ @p='JFMReaderTest$(EXEEXT)'; \
+ b='JFMReaderTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+LengthTest.log: LengthTest$(EXEEXT)
+ @p='LengthTest$(EXEEXT)'; \
+ b='LengthTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+MapLineTest.log: MapLineTest$(EXEEXT)
+ @p='MapLineTest$(EXEEXT)'; \
+ b='MapLineTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+MatrixTest.log: MatrixTest$(EXEEXT)
+ @p='MatrixTest$(EXEEXT)'; \
+ b='MatrixTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+MessageExceptionTest.log: MessageExceptionTest$(EXEEXT)
+ @p='MessageExceptionTest$(EXEEXT)'; \
+ b='MessageExceptionTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+PageRagesTest.log: PageRagesTest$(EXEEXT)
+ @p='PageRagesTest$(EXEEXT)'; \
+ b='PageRagesTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+PageSizeTest.log: PageSizeTest$(EXEEXT)
+ @p='PageSizeTest$(EXEEXT)'; \
+ b='PageSizeTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+PairTest.log: PairTest$(EXEEXT)
+ @p='PairTest$(EXEEXT)'; \
+ b='PairTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+PSInterpreterTest.log: PSInterpreterTest$(EXEEXT)
+ @p='PSInterpreterTest$(EXEEXT)'; \
+ b='PSInterpreterTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+RangeMapTest.log: RangeMapTest$(EXEEXT)
+ @p='RangeMapTest$(EXEEXT)'; \
+ b='RangeMapTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ShadingPatchTest.log: ShadingPatchTest$(EXEEXT)
+ @p='ShadingPatchTest$(EXEEXT)'; \
+ b='ShadingPatchTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+SplittedCharInputBufferTest.log: SplittedCharInputBufferTest$(EXEEXT)
+ @p='SplittedCharInputBufferTest$(EXEEXT)'; \
+ b='SplittedCharInputBufferTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+StreamInputBufferTest.log: StreamInputBufferTest$(EXEEXT)
+ @p='StreamInputBufferTest$(EXEEXT)'; \
+ b='StreamInputBufferTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+StreamReaderTest.log: StreamReaderTest$(EXEEXT)
+ @p='StreamReaderTest$(EXEEXT)'; \
+ b='StreamReaderTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+StreamWriterTest.log: StreamWriterTest$(EXEEXT)
+ @p='StreamWriterTest$(EXEEXT)'; \
+ b='StreamWriterTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+SubfontTest.log: SubfontTest$(EXEEXT)
+ @p='SubfontTest$(EXEEXT)'; \
+ b='SubfontTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+SVGOutputTest.log: SVGOutputTest$(EXEEXT)
+ @p='SVGOutputTest$(EXEEXT)'; \
+ b='SVGOutputTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+TensorProductPatchTest.log: TensorProductPatchTest$(EXEEXT)
+ @p='TensorProductPatchTest$(EXEEXT)'; \
+ b='TensorProductPatchTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+TFMReaderTest.log: TFMReaderTest$(EXEEXT)
+ @p='TFMReaderTest$(EXEEXT)'; \
+ b='TFMReaderTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ToUnicodeMapTest.log: ToUnicodeMapTest$(EXEEXT)
+ @p='ToUnicodeMapTest$(EXEEXT)'; \
+ b='ToUnicodeMapTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+TriangularPatchTest.log: TriangularPatchTest$(EXEEXT)
+ @p='TriangularPatchTest$(EXEEXT)'; \
+ b='TriangularPatchTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+UnicodeTest.log: UnicodeTest$(EXEEXT)
+ @p='UnicodeTest$(EXEEXT)'; \
+ b='UnicodeTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+UtilityTest.log: UtilityTest$(EXEEXT)
+ @p='UtilityTest$(EXEEXT)'; \
+ b='UtilityTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+VectorIteratorTest.log: VectorIteratorTest$(EXEEXT)
+ @p='VectorIteratorTest$(EXEEXT)'; \
+ b='VectorIteratorTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+VectorStreamTest.log: VectorStreamTest$(EXEEXT)
+ @p='VectorStreamTest$(EXEEXT)'; \
+ b='VectorStreamTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+XMLNodeTest.log: XMLNodeTest$(EXEEXT)
+ @p='XMLNodeTest$(EXEEXT)'; \
+ b='XMLNodeTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+XMLStringTest.log: XMLStringTest$(EXEEXT)
+ @p='XMLStringTest$(EXEEXT)'; \
+ b='XMLStringTest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+check-conv.log: check-conv
+ @p='check-conv'; \
+ b='check-conv'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@ @p='$<'; \
+@am__EXEEXT_TRUE@ $(am__set_b); \
+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-checkPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-TESTS check-am clean clean-checkPROGRAMS clean-generic \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \
+ uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+hashcheck.cpp: genhashcheck.py $(top_srcdir)/src/AGLTable.hpp $(top_srcdir)/libs/xxHash/xxhash.h
+ python $^ >$@
+
+@CODE_COVERAGE_RULES@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/MapLineTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/MapLineTest.cpp
new file mode 100644
index 00000000000..c4879935d53
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/MapLineTest.cpp
@@ -0,0 +1,127 @@
+/*************************************************************************
+** MapLineTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <sstream>
+#include "FileFinder.hpp"
+#include "MapLine.hpp"
+#include "Subfont.hpp"
+
+using namespace std;
+
+
+class MapLineTest : public ::testing::Test
+{
+ protected:
+ void SetUp () {
+ FileFinder::init("MapLineTest", "MapLineTest", false);
+ }
+};
+
+
+TEST_F(MapLineTest, psline1) {
+ istringstream iss("texname0 TEXNAME0 <texname.pfb <encname.enc");
+ MapLine mapline(iss);
+ EXPECT_EQ(mapline.texname(), "texname0");
+ EXPECT_EQ(mapline.psname(), "TEXNAME0");
+ EXPECT_EQ(mapline.fontfname(), "texname.pfb");
+ EXPECT_EQ(mapline.encname(), "encname");
+ EXPECT_DOUBLE_EQ(mapline.slant(), 0);
+ EXPECT_DOUBLE_EQ(mapline.extend(), 1);
+ EXPECT_DOUBLE_EQ(mapline.bold(), 0);
+}
+
+TEST_F(MapLineTest, psline2) {
+ istringstream iss("texname0 TEXNAME0 \".123 SlantFont .456 ExtendFont\" <encname.enc <[texname.ttf");
+ MapLine mapline(iss);
+ EXPECT_EQ(mapline.texname(), "texname0");
+ EXPECT_EQ(mapline.psname(), "TEXNAME0");
+ EXPECT_EQ(mapline.fontfname(), "texname.ttf");
+ EXPECT_EQ(mapline.encname(), "encname");
+ EXPECT_DOUBLE_EQ(mapline.slant(), 0.123);
+ EXPECT_DOUBLE_EQ(mapline.extend(), 0.456);
+ EXPECT_DOUBLE_EQ(mapline.bold(), 0);
+}
+
+TEST_F(MapLineTest, psline3) {
+ istringstream iss("texname0 TEXNAME0 <encname.enc \".123 SlantFont IgnoreMe .456 ExtendFont\" <texname.ttf");
+ MapLine mapline(iss);
+ EXPECT_EQ(mapline.texname(), "texname0");
+ EXPECT_EQ(mapline.psname(), "TEXNAME0");
+ EXPECT_EQ(mapline.fontfname(), "texname.ttf");
+ EXPECT_EQ(mapline.encname(), "encname");
+ EXPECT_DOUBLE_EQ(mapline.slant(), 0.123);
+ EXPECT_DOUBLE_EQ(mapline.extend(), 0.456);
+ EXPECT_DOUBLE_EQ(mapline.bold(), 0);
+}
+
+TEST_F(MapLineTest, pdfline1) {
+ istringstream iss("texname");
+ MapLine mapline(iss);
+ EXPECT_EQ(mapline.texname(), "texname");
+ EXPECT_EQ(mapline.psname(), "");
+ EXPECT_EQ(mapline.encname(), "");
+ EXPECT_EQ(mapline.fontfname(), "");
+}
+
+TEST_F(MapLineTest, pdfline2) {
+ istringstream iss("gbk unicode simsun.ttc");
+ MapLine mapline(iss);
+ EXPECT_EQ(mapline.texname(), "gbk");
+ EXPECT_EQ(mapline.psname(), "");
+ EXPECT_EQ(mapline.encname(), "unicode");
+ EXPECT_EQ(mapline.fontfname(), "simsun.ttc");
+ EXPECT_EQ(mapline.fontindex(), 0);
+ EXPECT_TRUE(mapline.sfd() == 0);
+ EXPECT_EQ(mapline.fontindex(), 0);
+ EXPECT_DOUBLE_EQ(mapline.slant(), 0);
+ EXPECT_DOUBLE_EQ(mapline.extend(), 1);
+}
+
+TEST_F(MapLineTest, pdfline3) {
+ istringstream iss("gbk@UGBK@10 unicode simsun.ttc -v 50 -r -s .123 -b 1 -e 0.456");
+ MapLine mapline(iss);
+ EXPECT_EQ(mapline.texname(), "gbk10");
+ EXPECT_EQ(mapline.psname(), "");
+ EXPECT_EQ(mapline.encname(), "unicode");
+ EXPECT_EQ(mapline.fontfname(), "simsun.ttc");
+ if (mapline.sfd() != 0) { // if UGBK.sfd is installed do some more checks
+ EXPECT_EQ(mapline.sfd()->name(), "UGBK");
+ EXPECT_EQ(mapline.fontindex(), 0);
+ EXPECT_DOUBLE_EQ(mapline.slant(), 0.123);
+ EXPECT_DOUBLE_EQ(mapline.extend(), 0.456);
+ EXPECT_DOUBLE_EQ(mapline.bold(), 1);
+ }
+}
+
+TEST_F(MapLineTest, pdfline4) {
+ istringstream iss("gbk@UGBK@ default :1:!simsun.ttc/UCS,Bold -e.345");
+ MapLine mapline(iss);
+ EXPECT_EQ(mapline.texname(), "gbk");
+ EXPECT_EQ(mapline.psname(), "");
+ EXPECT_EQ(mapline.encname(), ""); // encodings "default" and "none" are replaced with ""
+ EXPECT_EQ(mapline.fontfname(), "simsun.ttc");
+ if (mapline.sfd() != 0) { // if UGBK.sfd is installed do some more checks
+ EXPECT_EQ(mapline.sfd()->name(), "UGBK");
+ EXPECT_EQ(mapline.fontindex(), 1);
+ EXPECT_DOUBLE_EQ(mapline.slant(), 0);
+ EXPECT_DOUBLE_EQ(mapline.extend(), 0.345);
+ }
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp
new file mode 100644
index 00000000000..060030f1183
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp
@@ -0,0 +1,151 @@
+/*************************************************************************
+** MatrixTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <sstream>
+#include <vector>
+#include "Matrix.hpp"
+
+using namespace std;
+
+
+TEST(MatrixTest, svg) {
+ double v1[] = {1,2,3,4,5,6,7,8,9};
+ Matrix m1(v1);
+ ostringstream oss;
+ m1.write(oss);
+ EXPECT_EQ(oss.str(), "((1,2,3),(4,5,6),(7,8,9))");
+ EXPECT_EQ(m1.getSVG(), "matrix(1 4 2 5 3 6)");
+
+ double v2[] = {1,2};
+ Matrix m2(v2, 2);
+ oss.str("");
+ m2.write(oss);
+ EXPECT_EQ(oss.str(), "((1,2,0),(0,1,0),(0,0,1))");
+ EXPECT_EQ(m2.getSVG(), "matrix(1 0 2 1 0 0)");
+}
+
+
+TEST(MatrixTest, transpose) {
+ double v[] = {1,2,3,4,5,6,7,8,9};
+ Matrix m(v);
+ m.transpose();
+ ostringstream oss;
+ m.write(oss);
+ EXPECT_EQ(oss.str(), "((1,4,7),(2,5,8),(3,6,9))");
+ EXPECT_EQ(m.getSVG(), "matrix(1 2 4 5 7 8)");
+}
+
+
+TEST(MatrixTest, scale) {
+ ScalingMatrix m(2,2);
+ DPair p = m*DPair(3,3);
+ EXPECT_DOUBLE_EQ(p.x(), 6);
+ EXPECT_DOUBLE_EQ(p.y(), 6);
+
+ m = ScalingMatrix(-2,-2);
+ p = m*DPair(3,3);
+ EXPECT_DOUBLE_EQ(p.x(), -6);
+ EXPECT_DOUBLE_EQ(p.y(), -6);
+}
+
+
+TEST(MatrixTest, rotate) {
+ RotationMatrix m(90);
+ DPair p = m*DPair(2,0);
+ EXPECT_NEAR(p.x(), 0, 0.0000000001);
+ EXPECT_NEAR(p.y(), 2, 0.0000000001);
+
+ p = m*p;
+ EXPECT_NEAR(p.x(), -2, 0.0000000001);
+ EXPECT_NEAR(p.y(), 0, 0.0000000001);
+}
+
+
+TEST(MatrixTest, checks) {
+ Matrix m(1);
+ EXPECT_TRUE(m.isIdentity());
+ double tx, ty;
+ EXPECT_TRUE(m.isTranslation(tx, ty));
+ EXPECT_EQ(tx, 0);
+ EXPECT_EQ(ty, 0);
+ m.translate(1,2);
+ EXPECT_TRUE(m.isTranslation(tx, ty));
+ EXPECT_EQ(tx, 1);
+ EXPECT_EQ(ty, 2);
+ m.scale(2, 2);
+ EXPECT_FALSE(m.isTranslation(tx, ty));
+}
+
+
+TEST(MatrixTest, vec) {
+ vector<double> v;
+ for (int i=1; i <= 15; ++i)
+ v.push_back(i);
+ Matrix m(v);
+ ostringstream oss;
+ m.write(oss);
+ EXPECT_EQ(oss.str(), "((1,2,3),(4,5,6),(7,8,9))");
+ oss.str("");
+
+ m.set(v, 2);
+ m.write(oss);
+ EXPECT_EQ(oss.str(), "((3,4,5),(6,7,8),(9,10,11))");
+}
+
+
+TEST(MatrixTest, det) {
+ Matrix m1(1);
+ EXPECT_EQ(det(m1), 1);
+
+ double v2[] = {1,2,3, 4,5,6, 7,8,9};
+ Matrix m2(v2);
+ EXPECT_EQ(det(m2), 1*5*9 + 2*6*7 + 3*4*8 - 3*5*7 - 2*4*9 - 1*6*8);
+
+ EXPECT_EQ(det(m2, 0, 0), 5*9-6*8);
+ EXPECT_EQ(det(m2, 0, 1), 4*9-6*7);
+ EXPECT_EQ(det(m2, 0, 2), 4*8-5*7);
+ EXPECT_EQ(det(m2, 1, 0), 2*9-3*8);
+
+ double v3[] = {1,1,1, 2,2,2, 3,3,3};
+ Matrix m3(v3);
+ EXPECT_EQ(det(m2), 0);
+ m3.transpose();
+ EXPECT_EQ(det(m2), 0);
+}
+
+
+TEST(MatrixTest, invert) {
+ Matrix m1(1);
+ EXPECT_EQ(m1.invert(), m1);
+
+ double v2[] = {1,2,3, 2,3,1, 3,1,2};
+ Matrix m2(v2);
+ EXPECT_EQ(det(m2), -18);
+
+ double v3[] = {5,-1,-7, -1,-7,5, -7,5,-1};
+ Matrix m3(v3);
+
+ m3 *= 1.0/det(m2);
+ m2.invert();
+ for (int i=0; i < 3; ++i)
+ for (int j=0; j < 3; ++j)
+ EXPECT_DOUBLE_EQ(m2.get(i,j), m3.get(i,j));
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/MessageExceptionTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/MessageExceptionTest.cpp
new file mode 100644
index 00000000000..360c2f1e55a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/MessageExceptionTest.cpp
@@ -0,0 +1,77 @@
+/*************************************************************************
+** BoundingBoxTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <string>
+#include "MessageException.hpp"
+
+using namespace std;
+
+static void throw_exception (const string &msg) {
+ throw MessageException(msg);
+}
+
+
+TEST(MessageExceptionTest, catch_direct) {
+ bool caught=false;
+ try {
+ throw_exception("test message");
+ FAIL();
+ }
+ catch (MessageException &e) {
+ ASSERT_STREQ(e.what(), "test message");
+ caught = true;
+ }
+ catch (...) {
+ FAIL();
+ }
+ ASSERT_TRUE(caught);
+}
+
+
+TEST(MessageExceptionTest, catch_indirect1) {
+ bool caught=false;
+ try {
+ throw_exception("test message");
+ FAIL();
+ }
+ catch (exception &e) {
+ ASSERT_STREQ(e.what(), "test message");
+ caught = true;
+ }
+ catch (...) {
+ FAIL();
+ }
+ ASSERT_TRUE(caught);
+}
+
+
+TEST(MessageExceptionTest, catch_indirect2) {
+ bool caught=false;
+ try {
+ throw_exception("test message");
+ FAIL();
+ }
+ catch (...) {
+ caught = true;
+ }
+ ASSERT_TRUE(caught);
+}
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp
new file mode 100644
index 00000000000..35e036f63c2
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp
@@ -0,0 +1,182 @@
+/*************************************************************************
+** PSInterpreterTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "PSInterpreter.hpp"
+
+#include <sstream>
+#include <vector>
+
+using namespace std;
+
+class PSTestActions : public PSActions
+{
+ public:
+ void applyscalevals (vector<double> &p) {print("applyscalevals", p);}
+ void clip (vector<double> &p) {print("clip", p);}
+ void clippath (vector<double> &p) {print("clippath", p);}
+ void closepath (vector<double> &p) {print("closepath", p);}
+ void curveto (vector<double> &p) {print("curveto", p);}
+ void eoclip (vector<double> &p) {print("eoclip", p);}
+ void eofill (vector<double> &p) {print("eofill", p);}
+ void fill (vector<double> &p) {print("fill", p);}
+ void gsave (vector<double> &p) {print("gsave", p);}
+ void grestore (vector<double> &p) {print("grestore", p);}
+ void grestoreall(std::vector<double> &p) {print("grestoreall", p);}
+ void initclip (vector<double> &p) {print("initclip", p);}
+ void lineto (vector<double> &p) {print("lineto", p);}
+ void moveto (vector<double> &p) {print("moveto", p);}
+ void makepattern (vector<double> &p) {print("makepattern", p);}
+ void setpattern (vector<double> &p) {print("setpattern", p);}
+ void newpath (vector<double> &p) {print("newpath", p);}
+ void querypos (vector<double> &p) {print("querypos", p);}
+ void restore(std::vector<double> &p) {print("restore", p);}
+ void rotate (vector<double> &p) {print("rotate", p);}
+ void save(std::vector<double> &p) {print("save", p);}
+ void scale (vector<double> &p) {print("scale", p);}
+ void setcmykcolor (vector<double> &p) {print("setcmykcolor", p);}
+ void setdash (vector<double> &p) {print("setdash", p);}
+ void setgray (vector<double> &p) {print("setgray", p);}
+ void sethsbcolor (vector<double> &p) {print("sethsbcolor", p);}
+ void setlinecap (vector<double> &p) {print("setlinecap", p);}
+ void setlinejoin (vector<double> &p) {print("setlinejoin", p);}
+ void setlinewidth (vector<double> &p) {print("setlinewidth", p);}
+ void setmatrix (vector<double> &p) {print("setmatrix", p);}
+ void setmiterlimit (vector<double> &p) {print("setmiterlimit", p);}
+ void setopacityalpha (vector<double> &p) {print("setopacityalpha", p);}
+ void setrgbcolor (vector<double> &p) {print("setrgbcolor", p);}
+ void shfill (vector<double> &p) {print("shfill", p);}
+ void stroke (vector<double> &p) {print("stroke", p);}
+ void translate (vector<double> &p) {print("translate", p);}
+
+
+ string result () const {return _oss.str();}
+ void clear () {_oss.str("");}
+
+ protected:
+ void print (const char *op, const vector<double> &p) {
+ _oss << op;
+ for (size_t i=0; i < p.size(); ++i)
+ _oss << ' ' << p[i];
+ _oss << ';';
+ }
+
+ private:
+ ostringstream _oss;
+};
+
+
+TEST(PSInterpreterTest, init) {
+ PSTestActions actions;
+ PSInterpreter psi(&actions);
+ ASSERT_TRUE(psi.active());
+ ASSERT_EQ(actions.result(), "");
+}
+
+
+TEST(PSInterpreterTest, gsave_grestore) {
+ PSTestActions actions;
+ PSInterpreter psi(&actions);
+ psi.execute("gsave ");
+ ASSERT_EQ(actions.result(), "gsave;");
+ actions.clear();
+
+ psi.execute("grestore ");
+ ASSERT_EQ(actions.result(), "setlinewidth 1;setlinecap 0;setlinejoin 0;setmiterlimit 10;setrgbcolor 0 0 0;setmatrix 1 0 0 1 0 0;setdash 0;grestore;");
+ actions.clear();
+
+ psi.execute("1 setlinecap 5 setmiterlimit 0 1 0 setrgbcolor gsave 0 setlinecap 10 setmiterlimit ");
+ ASSERT_EQ(actions.result(), "setlinecap 1;setmiterlimit 5;setrgbcolor 0 1 0;gsave;setlinecap 0;setmiterlimit 10;");
+ actions.clear();
+
+ psi.execute("grestore ");
+ ASSERT_EQ(actions.result(), "setlinewidth 1;setlinecap 1;setlinejoin 0;setmiterlimit 5;setrgbcolor 0 1 0;setmatrix 1 0 0 1 0 0;setdash 0;grestore;");
+}
+
+
+TEST(PSInterpreterTest, stroke_fill) {
+ PSTestActions actions;
+ PSInterpreter psi(&actions);
+ psi.execute("0 0 moveto 10 10 lineto 0 10 lineto closepath stroke ");
+ ASSERT_EQ(actions.result(), "newpath 1;moveto 0 0;lineto 10 10;lineto 0 10;closepath;stroke;");
+ actions.clear();
+
+ psi.execute("0 0 moveto 10 10 lineto 0 10 lineto closepath fill ");
+ ASSERT_EQ(actions.result(), "newpath 1;moveto 0 0;lineto 10 10;lineto 0 10;closepath;fill;");
+}
+
+
+TEST(PSInterpreterTest, clip) {
+ PSTestActions actions;
+ PSInterpreter psi(&actions);
+ psi.execute("initclip ");
+ ASSERT_EQ(actions.result(), "initclip;");
+ actions.clear();
+
+ psi.execute("0 0 moveto 10 10 lineto 0 10 lineto closepath clip ");
+ ASSERT_EQ(actions.result(), "newpath 0;moveto 0 0;lineto 10 10;lineto 0 10;closepath;clip;");
+}
+
+
+TEST(PSInterpreterTest, transform) {
+ PSTestActions actions;
+ PSInterpreter psi(&actions);
+ psi.execute("10 10 scale 90 rotate 100 -100 translate ");
+ ASSERT_EQ(actions.result(), "scale 10 10;rotate 90;translate 100 -100;");
+}
+
+
+TEST(PSInterpreterTest, calculate) {
+ PSTestActions actions;
+ PSInterpreter psi(&actions);
+ psi.execute("2 3 add 4 mul 5 div rotate ");
+ ASSERT_EQ(actions.result(), "rotate 4;");
+}
+
+
+TEST(PSInterpreterTest, setlinewidth) {
+ PSTestActions actions;
+ PSInterpreter psi(&actions);
+ psi.execute("10 setlinewidth ");
+ ASSERT_EQ(actions.result(), "applyscalevals 1 1 1;setlinewidth 10;");
+ actions.clear();
+
+ psi.execute("5 5 scale 10 setlinewidth ");
+ ASSERT_EQ(actions.result(), "scale 5 5;applyscalevals 5 5 1;setlinewidth 10;");
+ actions.clear();
+
+ psi.execute("90 rotate 10 setlinewidth ");
+ ASSERT_EQ(actions.result(), "rotate 90;applyscalevals 5 5 0;setlinewidth 10;");
+ actions.clear();
+
+ psi.execute("-30 rotate 10 setlinewidth ");
+ ASSERT_EQ(actions.result(), "rotate -30;applyscalevals 5 5 0.5;setlinewidth 10;");
+}
+
+
+TEST(PSInterpreterTest, matrix) {
+ PSTestActions actions;
+ PSInterpreter psi(&actions);
+ psi.execute("matrix setmatrix ");
+ ASSERT_EQ(actions.result(), "setmatrix 1 0 0 1 0 0;");
+ actions.clear();
+ psi.execute("10 100 translate 30 rotate matrix currentmatrix setmatrix ");
+ ASSERT_EQ(actions.result(), "translate 10 100;rotate 30;setmatrix 0.866025 0.5 -0.5 0.866025 10 100;");
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PageRagesTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PageRagesTest.cpp
new file mode 100644
index 00000000000..fbe3a365510
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PageRagesTest.cpp
@@ -0,0 +1,163 @@
+/*************************************************************************
+** PageRagesTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <ostream>
+#include "PageRanges.hpp"
+
+using namespace std;
+
+
+struct Range
+{
+ int l, r;
+};
+
+
+static bool is_equal (const PageRanges &pr, const Range *r) {
+ int i=0;
+ for (PageRanges::ConstIterator it=pr.begin(); it != pr.end(); ++it) {
+ if (it->first != r[i].l || it->second != r[i].r)
+ return false;
+ ++i;
+ }
+ return true;
+}
+
+
+TEST(PageRangesTest, single) {
+ PageRanges pr;
+ ASSERT_TRUE(pr.parse("123"));
+ ASSERT_FALSE(pr.ranges().empty());
+ ASSERT_EQ(pr.ranges().front(), PageRanges::Range(123,123));
+ ASSERT_EQ(pr.numberOfPages(), 1);
+}
+
+
+TEST(PageRangesTest, single_range) {
+ PageRanges pr;
+ ASSERT_TRUE(pr.parse("3-19"));
+ ASSERT_FALSE(pr.ranges().empty());
+ ASSERT_EQ(pr.ranges().front(), PageRanges::Range(3,19));
+ ASSERT_EQ(pr.numberOfPages(), 17);
+}
+
+
+TEST(PageRangesTest, single_range_inv) {
+ PageRanges pr;
+ ASSERT_TRUE(pr.parse("19-3"));
+ ASSERT_FALSE(pr.ranges().empty());
+ ASSERT_EQ(pr.ranges().front(), PageRanges::Range(3,19));
+ ASSERT_EQ(pr.numberOfPages(), 17);
+}
+
+
+TEST(PageRangesTest, single_range_lopen) {
+ PageRanges pr;
+ ASSERT_TRUE(pr.parse("-19"));
+ ASSERT_FALSE(pr.ranges().empty());
+ ASSERT_EQ(pr.ranges().front(), PageRanges::Range(1,19));
+ ASSERT_EQ(pr.numberOfPages(), 19);
+}
+
+
+TEST(PageRangesTest, single_range_ropen) {
+ PageRanges pr;
+ ASSERT_TRUE(pr.parse("4-", 100));
+ ASSERT_FALSE(pr.ranges().empty());
+ ASSERT_EQ(pr.ranges().front(), PageRanges::Range(4,100));
+ ASSERT_EQ(pr.numberOfPages(), 97);
+}
+
+
+TEST(PageRangesTest, multiple1) {
+ PageRanges pr;
+ ASSERT_TRUE(pr.parse("11,6,9,1,75,6,3"));
+ ASSERT_EQ(pr.size(), 6);
+ Range cmp[] = {{1,1},{3,3},{6,6},{9,9},{11,11},{75,75}};
+ ASSERT_TRUE(is_equal(pr, cmp));
+ ASSERT_EQ(pr.numberOfPages(), 6);
+}
+
+
+TEST(PageRangesTest, multiple2) {
+ PageRanges pr;
+ ASSERT_TRUE(pr.parse("2,6,9,1,75,6,3"));
+ ASSERT_EQ(pr.size(), 4);
+ Range cmp[] = {{1,3},{6,6},{9,9},{75,75}};
+ ASSERT_TRUE(is_equal(pr, cmp));
+}
+
+
+TEST(PageRangesTest, multiple3) {
+ PageRanges pr;
+ ASSERT_TRUE(pr.parse("2,6,9-11,1,25-,19-13,6,3", 100));
+ ASSERT_EQ(pr.size(), 5);
+ Range cmp[] = {{1,3},{6,6},{9,11},{13,19},{25,100}};
+ ASSERT_TRUE(is_equal(pr, cmp));
+}
+
+
+TEST(PageRangesTest, overlap1) {
+ PageRanges pr;
+ ASSERT_TRUE(pr.parse("5-11, 8-15"));
+ ASSERT_EQ(pr.size(), 1);
+ Range cmp[] = {{5,15}};
+ ASSERT_TRUE(is_equal(pr, cmp));
+}
+
+
+TEST(PageRangesTest, overlap2) {
+ PageRanges pr;
+ ASSERT_TRUE(pr.parse("23-30, 5-11, 17-23, 12-19"));
+ ASSERT_EQ(pr.size(), 1);
+ Range cmp[] = {{5,30}};
+ ASSERT_TRUE(is_equal(pr, cmp));
+}
+
+
+TEST(PageRangesTest, overlap3) {
+ PageRanges pr;
+ ASSERT_TRUE(pr.parse("22-30, 5-11, 21-23, 12-19"));
+ ASSERT_EQ(pr.size(), 2);
+ Range cmp[] = {{5,19},{21,30}};
+ ASSERT_TRUE(is_equal(pr, cmp));
+}
+
+
+TEST(PageRangesTest, overlap4) {
+ PageRanges pr;
+ ASSERT_TRUE(pr.parse("-15, 20-, 8, 12-16, 18-19", 100));
+ ASSERT_EQ(pr.size(), 2);
+ Range cmp[] = {{1,16},{18,100}};
+ ASSERT_TRUE(is_equal(pr, cmp));
+ ASSERT_TRUE(pr.parse("17"));
+ ASSERT_EQ(pr.size(), 1);
+ ASSERT_EQ(pr.ranges().front(), PageRanges::Range(1,100));
+}
+
+
+TEST(PageRangesTest, error) {
+ PageRanges pr;
+ ASSERT_FALSE(pr.parse("x"));
+ ASSERT_FALSE(pr.parse("5-x"));
+ ASSERT_FALSE(pr.parse("5 6"));
+ ASSERT_FALSE(pr.parse("5,"));
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PageSizeTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PageSizeTest.cpp
new file mode 100644
index 00000000000..d80aa16caf3
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PageSizeTest.cpp
@@ -0,0 +1,73 @@
+/*************************************************************************
+** PageSizeTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <limits>
+#include "PageSize.hpp"
+
+
+class PageSizeTest : public ::testing::Test
+{
+ protected:
+ struct PageData
+ {
+ const char *id;
+ double width, height;
+ };
+
+ static const PageData pageData[];
+
+ PageSize ps;
+};
+
+
+const PageSizeTest::PageData PageSizeTest::pageData[] = {
+ {"A4", 210, 297},
+ {"a4", 210, 297},
+ {"a4-p", 210, 297},
+ {"a4-portrait", 210, 297},
+ {"a4-l", 297, 210},
+ {"a4-landscape", 297, 210},
+ {"a5", 148, 210},
+ {"c10", 28, 40},
+ {"letter", 216, 279},
+ {0, 0, 0}
+};
+
+
+TEST_F(PageSizeTest, resize) {
+ EXPECT_FALSE(ps.valid());
+
+ for (const PageData *p = pageData; p && p->id; p++) {
+ ps.resize(p->id);
+ EXPECT_DOUBLE_EQ(ps.widthInMM(), p->width);
+ EXPECT_DOUBLE_EQ(ps.heightInMM(), p->height);
+ }
+}
+
+
+TEST_F(PageSizeTest, exceptions) {
+ EXPECT_THROW(ps.resize("a"), PageSizeException);
+ EXPECT_THROW(ps.resize("e4"), PageSizeException);
+ EXPECT_THROW(ps.resize("a4-unknown"), PageSizeException);
+}
+
+
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PairTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PairTest.cpp
new file mode 100644
index 00000000000..0ed2aa65d37
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PairTest.cpp
@@ -0,0 +1,125 @@
+/*************************************************************************
+** PairTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <sstream>
+#include "Pair.hpp"
+
+using namespace std;
+
+TEST(PairTest, constructor) {
+ DPair p(-1.5, 2);
+ ASSERT_EQ(p.x(), -1.5);
+ ASSERT_EQ(p.y(), 2);
+ DPair q = p;
+ ASSERT_EQ(q.x(), -1.5);
+ ASSERT_EQ(q.y(), 2);
+}
+
+
+TEST(PairTest, setter) {
+ DPair p(1,2);
+ ASSERT_EQ(p, DPair(1,2));
+ p.x(3);
+ ASSERT_EQ(p, DPair(3,2));
+ p.y(5);
+ ASSERT_EQ(p, DPair(3,5));
+}
+
+
+TEST(PairTest, length) {
+ ASSERT_EQ(DPair(0,0).length(), 0);
+ ASSERT_EQ(DPair(1,0).length(), 1);
+ ASSERT_EQ(DPair(0,1).length(), 1);
+ ASSERT_EQ(DPair(-1,0).length(), 1);
+ ASSERT_EQ(DPair(0,-1).length(), 1);
+
+ // check some Pythagorean triples
+ for (int i=1; i < 10; ++i) {
+ for (int j=i+1; j <= 10; ++j) {
+ int a = j*j-i*i;
+ int b = 2*i*j;
+ int c = j*j+i*i;
+ ASSERT_EQ(DPair(a, b).length(), c);
+ ASSERT_EQ(DPair(b, a).length(), c);
+ ASSERT_EQ(DPair(-a, b).length(), c);
+ ASSERT_EQ(DPair(-b, a).length(), c);
+ ASSERT_EQ(DPair(-a, -b).length(), c);
+ }
+ }
+}
+
+
+TEST(PairTest, add) {
+ ASSERT_EQ(DPair(2,3)+DPair(0,0), DPair(2,3));
+ ASSERT_EQ(DPair(2,3)+DPair(4,5), DPair(6,8));
+ ASSERT_EQ(DPair(2,3)+DPair(-4,-5), DPair(-2,-2));
+}
+
+
+TEST(PairTest, sub) {
+ ASSERT_EQ(DPair(2,3)-DPair(0,0), DPair(2,3));
+ ASSERT_EQ(DPair(2,3)-DPair(4,5), DPair(-2,-2));
+ ASSERT_EQ(DPair(2,3)-DPair(-4,-5), DPair(6,8));
+}
+
+
+TEST(PairTest, mul) {
+ ASSERT_EQ(DPair(2,3)*0.0, DPair(0,0));
+ ASSERT_EQ(DPair(2,3)*1.0, DPair(2,3));
+ ASSERT_EQ(DPair(2,3)*2.0, DPair(4,6));
+ ASSERT_EQ(DPair(2,3)*(-2.0), DPair(-4,-6));
+}
+
+
+TEST(PairTest, div) {
+ ASSERT_EQ(DPair(2,3)/1.0, DPair(2,3));
+ ASSERT_EQ(DPair(2,3)/2.0, DPair(1,1.5));
+ ASSERT_EQ(DPair(2,3)/(-2.0), DPair(-1,-1.5));
+}
+
+
+TEST(PairTest, equality) {
+ ASSERT_TRUE(DPair(2,3) == DPair(2,3));
+ ASSERT_FALSE(DPair(2,3) == DPair(-2,-3));
+ ASSERT_TRUE(DPair(2,3)+DPair(4,5) == DPair(6,8));
+ ASSERT_FALSE(DPair(2,3)+DPair(4,5) != DPair(6,8));
+}
+
+
+TEST(PairTest, ortho) {
+ ASSERT_EQ(DPair(0,0).ortho(), DPair(0,0));
+ ASSERT_EQ(DPair(1,0).ortho(), DPair(0,1));
+ ASSERT_EQ(DPair(0,1).ortho(), DPair(-1,0));
+ ASSERT_EQ(DPair(-1,0).ortho(), DPair(0,-1));
+ ASSERT_EQ(DPair(0,-1).ortho(), DPair(1,0));
+}
+
+
+TEST(PairTest, write) {
+ ostringstream oss;
+ DPair p(3,4);
+ oss << p;
+ ASSERT_EQ(oss.str(), "(3,4)");
+ p *= 2;
+ oss.str("");
+ oss << p;
+ ASSERT_EQ(oss.str(), "(6,8)");
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/RangeMapTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/RangeMapTest.cpp
new file mode 100644
index 00000000000..83f2f9fe2d1
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/RangeMapTest.cpp
@@ -0,0 +1,165 @@
+/*************************************************************************
+** RangeMapTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "RangeMap.hpp"
+
+using namespace std;
+
+
+static void check_range (const RangeMap &rangemap, int min, int max, int minval) {
+ for (int i=min; i <= max; i++)
+ ASSERT_EQ(rangemap.valueAt(i), minval+(i-min));
+}
+
+
+static void check_zero (const RangeMap &rangemap, int min, int max) {
+ for (int i=min; i <= max; i++)
+ ASSERT_EQ(rangemap.valueAt(i), 0);
+}
+
+
+TEST(RangeMapTest, disjoint_ranges) {
+ RangeMap rangemap;
+ rangemap.addRange(5, 8, 1);
+ ASSERT_EQ(rangemap.size(), 1);
+ check_range(rangemap, 5, 8, 1);
+ check_zero(rangemap, 0, 4);
+ check_zero(rangemap, 9, 20);
+
+ rangemap.addRange(10, 15, 5);
+ ASSERT_EQ(rangemap.size(), 2);
+ check_range(rangemap, 5, 8, 1);
+ check_range(rangemap, 10, 15, 5);
+ check_zero(rangemap, 0, 4);
+ check_zero(rangemap, 9, 9);
+ check_zero(rangemap, 16, 20);
+
+ rangemap.addRange(0, 3, 50);
+ ASSERT_EQ(rangemap.size(), 3);
+ check_range(rangemap, 0, 3, 50);
+ check_range(rangemap, 5, 8, 1);
+ check_range(rangemap, 10, 15, 5);
+ check_zero(rangemap, 4, 4);
+ check_zero(rangemap, 9, 9);
+ check_zero(rangemap, 16, 20);
+
+ rangemap.addRange(16, 20, 1);
+ ASSERT_EQ(rangemap.size(), 4);
+ check_range(rangemap, 5, 8, 1);
+ check_range(rangemap, 10, 15, 5);
+ check_range(rangemap, 0, 3, 50);
+ check_range(rangemap, 16, 20, 1);
+}
+
+
+TEST(RangeMapTest, touching_ranges1) {
+ RangeMap rangemap;
+ rangemap.addRange(5, 8, 10);
+ ASSERT_EQ(rangemap.size(), 1);
+ check_range(rangemap, 5, 8, 10);
+
+ rangemap.addRange(9, 15, 14);
+ ASSERT_EQ(rangemap.size(), 1);
+ check_range(rangemap, 5, 15, 10);
+
+ rangemap.addRange(1, 4, 5);
+ ASSERT_EQ(rangemap.size(), 2);
+ check_range(rangemap, 1, 4, 5);
+ check_range(rangemap, 5, 15, 10);
+
+ rangemap.addRange(1, 4, 6);
+ ASSERT_EQ(rangemap.size(), 1);
+ check_range(rangemap, 1, 15, 6);
+}
+
+
+TEST(RangeMapTest, touching_ranges2) {
+ RangeMap rangemap;
+ rangemap.addRange(7, 8, 10);
+ ASSERT_EQ(rangemap.size(), 1);
+ check_range(rangemap, 7, 8, 10);
+
+ rangemap.addRange(2, 3, 1);
+ ASSERT_EQ(rangemap.size(), 2);
+ check_range(rangemap, 2, 3, 1);
+ check_range(rangemap, 7, 8, 10);
+
+ rangemap.addRange(4, 4, 3);
+ ASSERT_EQ(rangemap.size(), 2);
+ check_range(rangemap, 2, 4, 1);
+ check_range(rangemap, 7, 8, 10);
+}
+
+
+TEST(RangeMapTest, overlapping_ranges) {
+ RangeMap rangemap;
+ rangemap.addRange(5, 8, 10);
+ rangemap.addRange(7, 15, 12);
+ ASSERT_EQ(rangemap.size(), 1);
+ check_range(rangemap, 5, 15, 10);
+
+ rangemap.addRange(10, 20, 1);
+ ASSERT_EQ(rangemap.size(), 2);
+ check_range(rangemap, 5, 9, 10);
+ check_range(rangemap, 10, 20, 1);
+
+ rangemap.addRange(2, 7, 7);
+ ASSERT_EQ(rangemap.size(), 2);
+ check_range(rangemap, 2, 9, 7);
+ check_range(rangemap, 10, 20, 1);
+
+ rangemap.addRange(1, 12, 100);
+ ASSERT_EQ(rangemap.size(), 2);
+ check_range(rangemap, 1, 12, 100);
+ check_range(rangemap, 13, 20, 4);
+
+ rangemap.addRange(0, 30, 1);
+ ASSERT_EQ(rangemap.size(), 1);
+ check_range(rangemap, 0, 30, 1);
+}
+
+
+TEST(RangeMapTest, inner_ranges) {
+ RangeMap rangemap;
+ rangemap.addRange(5, 20, 1);
+ rangemap.addRange(10, 15, 6);
+ ASSERT_EQ(rangemap.size(), 1);
+ check_range(rangemap, 5, 20, 1);
+
+ rangemap.addRange(10, 15, 100);
+ ASSERT_EQ(rangemap.size(), 3);
+ check_range(rangemap, 5, 9, 1);
+ check_range(rangemap, 10, 15, 100);
+ check_range(rangemap, 16, 20, 12);
+
+ rangemap.addRange(15, 15, 50);
+ ASSERT_EQ(rangemap.size(), 4);
+ check_range(rangemap, 5, 9, 1);
+ check_range(rangemap, 10, 14, 100);
+ check_range(rangemap, 15, 15, 50);
+ check_range(rangemap, 16, 20, 12);
+
+ rangemap.addRange(6, 19, 1);
+ ASSERT_EQ(rangemap.size(), 3);
+ check_range(rangemap, 5, 5, 1);
+ check_range(rangemap, 6, 19, 1);
+ check_range(rangemap, 20, 20, 16);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/SVGOutputTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/SVGOutputTest.cpp
new file mode 100644
index 00000000000..4d6c27611b1
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/SVGOutputTest.cpp
@@ -0,0 +1,120 @@
+/*************************************************************************
+** SVGOutputTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <fstream>
+#include "FileSystem.hpp"
+#include "MessageException.hpp"
+#include "SVGOutput.hpp"
+#include "ZLibOutputStream.hpp"
+
+using namespace std;
+
+
+TEST(SVGOutputTest, defaults) {
+ SVGOutput out("SVGOutputTest.cpp", "");
+ EXPECT_EQ(out.filename(1, 1), "SVGOutputTest.svg");
+ EXPECT_EQ(out.filename(5, 9), "SVGOutputTest-5.svg");
+ EXPECT_EQ(out.filename(5, 10), "SVGOutputTest-05.svg");
+ EXPECT_EQ(out.filename(5, 256), "SVGOutputTest-005.svg");
+}
+
+
+TEST(SVGOutputTest, widthSpecifier) {
+ {
+ SVGOutput out("SVGOutputTest.cpp", "%f--%3p");
+ EXPECT_EQ(out.filename(5, 9), "SVGOutputTest--005.svg");
+ EXPECT_EQ(out.filename(54, 65), "SVGOutputTest--054.svg");
+ EXPECT_EQ(out.filename(543, 654), "SVGOutputTest--543.svg");
+ }{
+ SVGOutput out("SVGOutputTest.cpp", "%f--%3p--%P");
+ EXPECT_EQ(out.filename(5, 9), "SVGOutputTest--005--9.svg");
+ EXPECT_EQ(out.filename(54, 65), "SVGOutputTest--054--65.svg");
+ EXPECT_EQ(out.filename(543, 654), "SVGOutputTest--543--654.svg");
+ }{
+ SVGOutput out("SVGOutputTest.cpp", "%f--%3p--%3P");
+ EXPECT_EQ(out.filename(5, 9), "SVGOutputTest--005--009.svg");
+ EXPECT_EQ(out.filename(54, 65), "SVGOutputTest--054--065.svg");
+ EXPECT_EQ(out.filename(543, 654), "SVGOutputTest--543--654.svg");
+ }{
+ SVGOutput out("SVGOutputTest.cpp", "%5f--%3p--%3P");
+ EXPECT_EQ(out.filename(5, 9), "SVGOutputTest--005--009.svg");
+ EXPECT_EQ(out.filename(54, 65), "SVGOutputTest--054--065.svg");
+ EXPECT_EQ(out.filename(543, 654), "SVGOutputTest--543--654.svg");
+ }
+}
+
+
+TEST(SVGOutputTest, expressions) {
+ {
+ SVGOutput out("SVGOutputTest.cpp", "no-macro");
+ EXPECT_EQ(out.filename(5, 9), "no-macro.svg");
+ EXPECT_EQ(out.filename(54, 65), "no-macro.svg");
+ EXPECT_EQ(out.filename(543, 654), "no-macro.svg");
+ }{
+ SVGOutput out("SVGOutputTest.cpp", "%f--%(p-1)");
+ EXPECT_EQ(out.filename(5, 9), "SVGOutputTest--4.svg");
+ EXPECT_EQ(out.filename(54, 65), "SVGOutputTest--53.svg");
+ EXPECT_EQ(out.filename(543, 654), "SVGOutputTest--542.svg");
+ }{
+ SVGOutput out("SVGOutputTest.cpp", "%f--%3(p-1)");
+ EXPECT_EQ(out.filename(5, 9), "SVGOutputTest--004.svg");
+ EXPECT_EQ(out.filename(54, 65), "SVGOutputTest--053.svg");
+ EXPECT_EQ(out.filename(543, 654), "SVGOutputTest--542.svg");
+ }{
+ SVGOutput out("SVGOutputTest.cpp", "%f--%3(P+2p)");
+ EXPECT_EQ(out.filename(5, 9), "SVGOutputTest--019.svg");
+ EXPECT_EQ(out.filename(54, 65), "SVGOutputTest--173.svg");
+ EXPECT_EQ(out.filename(543, 654), "SVGOutputTest--1740.svg");
+ }
+}
+
+
+TEST(SVGOutputTest, getPageStream) {
+ {
+ SVGOutput out(0, "");
+ ostream &os = out.getPageStream(1, 10);
+ EXPECT_EQ(&os, &cout);
+ }{
+ SVGOutput out("SVGOutputTest.cpp", "%f-%p");
+ ostream *os1 = &out.getPageStream(1, 10);
+ EXPECT_TRUE(dynamic_cast<ofstream*>(os1));
+ ostream *os2 = &out.getPageStream(1, 10);
+ EXPECT_EQ(os1, os2);
+ FileSystem::remove("SVGOutputTest-01.svg");
+ }{
+ SVGOutput out("SVGOutputTest.cpp", "%f-%p", 9);
+ ostream *os = &out.getPageStream(1, 10);
+ EXPECT_TRUE(dynamic_cast<ZLibOutputStream*>(os));
+ FileSystem::remove("SVGOutputTest-01.svgz");
+ }
+}
+
+
+TEST(SVGOutputTest, ignore) {
+ SVGOutput out("SVGOutputTest.cpp", "%x %y");
+ EXPECT_EQ(out.filename(5, 9), "SVGOutputTest-5.svg");
+}
+
+
+TEST(SVGOutputTest, error) {
+ SVGOutput out("SVGOutputTest.cpp", "%(p/0)");
+ EXPECT_THROW(out.filename(5, 9), MessageException);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/ShadingPatchTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/ShadingPatchTest.cpp
new file mode 100644
index 00000000000..55eb05207d7
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/ShadingPatchTest.cpp
@@ -0,0 +1,87 @@
+/*************************************************************************
+** ShadingPatch.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "ShadingPatch.hpp"
+#include "TensorProductPatch.hpp"
+#include "TriangularPatch.hpp"
+
+using namespace std;
+
+
+TEST(ShadingPatchTest, create) {
+ ShadingPatch *patch=0;
+ patch = ShadingPatch::create(4, Color::ColorSpace::RGB);
+ EXPECT_TRUE(dynamic_cast<TriangularPatch*>(patch));
+ delete patch;
+ patch = ShadingPatch::create(5, Color::ColorSpace::RGB);
+ EXPECT_TRUE(dynamic_cast<LatticeTriangularPatch*>(patch));
+ delete patch;
+ patch = ShadingPatch::create(6, Color::ColorSpace::RGB);
+ EXPECT_TRUE(dynamic_cast<CoonsPatch*>(patch));
+ delete patch;
+ patch = ShadingPatch::create(7, Color::ColorSpace::RGB);
+ EXPECT_TRUE(dynamic_cast<TensorProductPatch*>(patch));
+ delete patch;
+}
+
+
+TEST(ShadingPatchTest, fail) {
+ for (int i=0; i < 4; i++) {
+ EXPECT_THROW(ShadingPatch::create(i, Color::ColorSpace::RGB), ShadingException);
+ }
+}
+
+
+TEST(ShadingPatchTest, colorQueryFuncs) {
+ vector<DPair> points(3);
+ vector<Color> colors(3);
+ colors[0].setRGB(1.0, 0.0, 0.0);
+ colors[1].setRGB(0.0, 1.0, 0.0);
+ colors[2].setRGB(0.0, 0.0, 1.0);
+ TriangularPatch tp1(points, colors, Color::ColorSpace::RGB, 0, 0);
+ EXPECT_EQ(tp1.colorAt(0, 0).rgbString(), "#ff0000");
+ EXPECT_EQ(tp1.colorAt(1, 0).rgbString(), "#00ff00");
+ EXPECT_EQ(tp1.colorAt(0, 1).rgbString(), "#0000ff");
+
+ colors[0].setGray(0.2);
+ colors[1].setGray(0.4);
+ colors[2].setGray(0.6);
+ TriangularPatch tp2(points, colors, Color::ColorSpace::GRAY, 0, 0);
+ EXPECT_EQ(tp2.colorAt(0, 0).rgbString(), "#333333");
+ EXPECT_EQ(tp2.colorAt(1, 0).rgbString(), "#666666");
+ EXPECT_EQ(tp2.colorAt(0, 1).rgbString(), "#999999");
+
+ colors[0].setCMYK(1.0, 0.0, 0.0, 0.2);
+ colors[1].setCMYK(0.0, 1.0, 0.0, 0.4);
+ colors[2].setCMYK(0.0, 0.0, 1.0, 0.6);
+ TriangularPatch tp3(points, colors, Color::ColorSpace::CMYK, 0, 0);
+ EXPECT_EQ(tp3.colorAt(0, 0).rgbString(), "#29cccc");
+ EXPECT_EQ(tp3.colorAt(1, 0).rgbString(), "#993d99");
+ EXPECT_EQ(tp3.colorAt(0, 1).rgbString(), "#66663d");
+
+ colors[0].setLab(55, 80, 68);
+ colors[1].setLab(30, 62, -108);
+ colors[2].setLab(85, -72, 61);
+ TriangularPatch tp4(points, colors, Color::ColorSpace::LAB, 0, 0);
+ EXPECT_EQ(tp4.colorAt(0, 0).rgbString(), "#ff1402");
+ EXPECT_EQ(tp4.colorAt(1, 0).rgbString(), "#002bf8");
+ EXPECT_EQ(tp4.colorAt(0, 1).rgbString(), "#4af356");
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/SplittedCharInputBufferTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/SplittedCharInputBufferTest.cpp
new file mode 100644
index 00000000000..652d71dbc0c
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/SplittedCharInputBufferTest.cpp
@@ -0,0 +1,181 @@
+/*************************************************************************
+** SplittedCharInputBufferTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <cstring>
+#include <sstream>
+#include "InputBuffer.hpp"
+#include "InputReader.hpp"
+
+using std::istringstream;
+
+TEST(SplittedCharInputBufferTest, get) {
+ const char *buf1 = "abcdef";
+ const char *buf2 = "ghijklmnopqrstuvwxyz";
+ SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
+ BufferInputReader in(buffer);
+ bool ok=true;
+ for (int i=0; !in.eof() && ok; i++) {
+ EXPECT_LT(i, 26);
+ EXPECT_EQ(in.get(), 'a'+i);
+ ok = (i < 26);
+ }
+}
+
+
+TEST(SplittedCharInputBufferTest, peek) {
+ const char *buf1 = "abcdef";
+ const char *buf2 = "ghijklmnopqrstuvwxyz";
+ SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
+ BufferInputReader in(buffer);
+ EXPECT_EQ(in.peek(), 'a');
+ for (int i=0; i < 26; i++)
+ EXPECT_EQ(in.peek(i), 'a'+i);
+ EXPECT_EQ(in.peek(26), -1);
+}
+
+
+TEST(SplittedCharInputBufferTest, check) {
+ const char *buf1 = "abcde";
+ const char *buf2 = "fghijklmnopqrstuvwxyz";
+ SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
+ BufferInputReader in(buffer);
+ EXPECT_TRUE(in.check("abc", false));
+ EXPECT_TRUE(in.check("abc", true));
+ EXPECT_TRUE(in.check("def", true));
+ EXPECT_TRUE(in.check("ghi", true));
+ EXPECT_TRUE(in.check("jkl", true));
+ EXPECT_TRUE(in.check("mnopqrst", false));
+ EXPECT_TRUE(in.check("mnopqrst", true));
+ EXPECT_TRUE(in.check("uvwxyz", true));
+ EXPECT_EQ(in.get(), -1);
+}
+
+
+TEST(SplittedCharInputBufferTest, skip) {
+ const char *buf1 = "abcde";
+ const char *buf2 = "fghijklmnopqrstuvwxyz";
+ SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
+ BufferInputReader in(buffer);
+ in.skip(3);
+ EXPECT_EQ(in.peek(), 'd');
+ in.skipUntil("ijk", false);
+ EXPECT_EQ(in.peek(), 'i');
+ in.skipUntil("ijk", true);
+ EXPECT_EQ(in.peek(), 'l');
+ in.skipUntil("z", true);
+ EXPECT_TRUE(in.eof());
+}
+
+
+TEST(SplittedCharInputBufferTest, parseInt) {
+ const char *buf1 = "1234,-";
+ const char *buf2 = "5,+6,10.-";
+ SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
+ BufferInputReader in(buffer);
+ int n;
+ EXPECT_TRUE(in.parseInt(n));
+ EXPECT_EQ(n, 1234);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_TRUE(in.parseInt(n));
+ EXPECT_EQ(n, -5);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_TRUE(in.parseInt(n));
+ EXPECT_EQ(n, 6);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_TRUE(in.parseInt(n));
+ EXPECT_EQ(n, 10);
+ EXPECT_EQ(in.get(), '.');
+
+ EXPECT_FALSE(in.parseInt(n));
+ EXPECT_EQ(in.get(), '-');
+}
+
+
+TEST(SplittedCharInputBufferTest, parseInt_base) {
+ const char *buf1 = "1234,-5,10,1a";
+ const char *buf2 = "bc,1234a";
+ SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
+ BufferInputReader in(buffer);
+ int n;
+ EXPECT_TRUE(in.parseInt(10, n));
+ EXPECT_EQ(n, 1234);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_FALSE(in.parseInt(10, n));
+ in.get();
+ EXPECT_TRUE(in.parseInt(10, n));
+ EXPECT_EQ(n, 5);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_TRUE(in.parseInt(16, n));
+ EXPECT_EQ(n, 16);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_TRUE(in.parseInt(16, n));
+ EXPECT_EQ(n, 0x1abc);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_TRUE(in.parseInt(8, n));
+ EXPECT_EQ(n, 01234);
+ EXPECT_EQ(in.get(), 'a');
+}
+
+
+TEST(SplittedCharInputBufferTest, parseDouble) {
+ const char *buf1 = "1234,-5,6.12,-3";
+ const char *buf2 = ".1415,-.1,12e2,10.-";
+ SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
+ BufferInputReader in(buffer);
+ double d;
+ EXPECT_EQ(in.parseDouble(d), 'i');
+ EXPECT_EQ(d, 1234.0);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'i');
+ EXPECT_EQ(d, -5.0);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'f');
+ EXPECT_EQ(d, 6.12);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'f');
+ EXPECT_EQ(d, -3.1415);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'f');
+ EXPECT_EQ(d, -0.1);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'f');
+ EXPECT_EQ(d, 1200);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'f');
+ EXPECT_EQ(d, 10.0);
+ EXPECT_EQ(in.peek(), '-');
+
+ EXPECT_FALSE(in.parseDouble(d));
+ EXPECT_EQ(in.get(), '-');
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp
new file mode 100644
index 00000000000..6bff0c5dad3
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp
@@ -0,0 +1,230 @@
+/*************************************************************************
+** StreamInputBufferTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <map>
+#include <sstream>
+#include <string>
+#include "InputBuffer.hpp"
+#include "InputReader.hpp"
+
+using std::istringstream;
+using std::map;
+using std::string;
+
+TEST(StreamInputBufferTest, get) {
+ istringstream iss("abcdefghijklmnopqrstuvwxyz");
+ StreamInputBuffer buffer(iss, 10);
+ BufferInputReader in(buffer);
+ bool ok=true;
+ for (int i=0; !in.eof() && ok; i++) {
+ EXPECT_LT(i, 26);
+ EXPECT_EQ(in.get(), 'a'+i);
+ ok = (i < 26);
+ }
+}
+
+
+TEST(StreamInputBufferTest, peek) {
+ istringstream iss("abcdefghijklmnopqrstuvwxyz");
+ StreamInputBuffer buffer(iss, 10);
+ BufferInputReader in(buffer);
+ EXPECT_EQ(in.peek(), 'a');
+ for (int i=0; i < 20; i++)
+ EXPECT_EQ(in.peek(i), 'a'+i);
+ // we can't look forward more than BUFSIZE characters (10 in this case)
+ for (int i=21; i < 26; i++)
+ EXPECT_EQ(in.peek(i), -1);
+}
+
+
+TEST(StreamInputBufferTest, check) {
+ istringstream iss("abcdefghijklmnopqrstuvwxyz");
+ StreamInputBuffer buffer(iss, 10);
+ BufferInputReader in(buffer);
+ EXPECT_TRUE(in.check("abc", false));
+ EXPECT_TRUE(in.check("abc", true));
+ EXPECT_TRUE(in.check("def", true));
+ EXPECT_TRUE(in.check("ghi", true));
+ EXPECT_TRUE(in.check("jkl", true));
+ EXPECT_TRUE(in.check("mnopqrst", false));
+ EXPECT_TRUE(in.check("mnopqrst", true));
+ EXPECT_TRUE(in.check("uvwxyz", true));
+}
+
+
+TEST(StreamInputBufferTest, skip) {
+ istringstream iss("abcdefghijklmnopqrstuvwxyz");
+ StreamInputBuffer buffer(iss, 10);
+ BufferInputReader in(buffer);
+ in.skip(3);
+ EXPECT_EQ(in.peek(), 'd');
+ in.skipUntil("ijk", false);
+ EXPECT_EQ(in.peek(), 'i');
+ in.skipUntil("ijk", true);
+ EXPECT_EQ(in.peek(), 'l');
+ in.skipUntil("z", true);
+ EXPECT_TRUE(in.eof());
+}
+
+
+TEST(StreamInputBufferTest, parseInt) {
+ istringstream iss("1234,-5,+6,10.-");
+ StreamInputBuffer buffer(iss, 10);
+ BufferInputReader in(buffer);
+ int n;
+ EXPECT_TRUE(in.parseInt(n));
+ EXPECT_EQ(n, 1234);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_TRUE(in.parseInt(n));
+ EXPECT_EQ(n, -5);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_TRUE(in.parseInt(n));
+ EXPECT_EQ(n, 6);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_TRUE(in.parseInt(n));
+ EXPECT_EQ(n, 10);
+ EXPECT_EQ(in.get(), '.');
+
+ EXPECT_FALSE(in.parseInt(n));
+ EXPECT_EQ(in.get(), '-');
+}
+
+
+TEST(StreamInputBufferTest, parseInt_base) {
+ istringstream iss("1234,-5,10,1abc,1234a");
+ StreamInputBuffer buffer(iss, 10);
+ BufferInputReader in(buffer);
+ int n;
+ EXPECT_TRUE(in.parseInt(10, n));
+ EXPECT_EQ(n, 1234);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_FALSE(in.parseInt(10, n));
+ in.get();
+ EXPECT_TRUE(in.parseInt(10, n));
+ EXPECT_EQ(n, 5);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_TRUE(in.parseInt(16, n));
+ EXPECT_EQ(n, 16);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_TRUE(in.parseInt(16, n));
+ EXPECT_EQ(n, 0x1abc);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_TRUE(in.parseInt(8, n));
+ EXPECT_EQ(n, 01234);
+ EXPECT_EQ(in.get(), 'a');
+}
+
+
+TEST(StreamInputBufferTest, parseDouble) {
+ istringstream iss("1234,-5,6.12,-3.1415,-0.5,-.1,12e2,10.-");
+ StreamInputBuffer buffer(iss, 10);
+ BufferInputReader in(buffer);
+ double d;
+ EXPECT_EQ(in.parseDouble(d), 'i');
+ EXPECT_EQ(d, 1234.0);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'i');
+ EXPECT_EQ(d, -5.0);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'f');
+ EXPECT_EQ(d, 6.12);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'f');
+ EXPECT_EQ(d, -3.1415);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'f');
+ EXPECT_EQ(d, -0.5);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'f');
+ EXPECT_EQ(d, -0.1);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'f');
+ EXPECT_EQ(d, 1200);
+ EXPECT_EQ(in.get(), ',');
+
+ EXPECT_EQ(in.parseDouble(d), 'f');
+ EXPECT_EQ(d, 10.0);
+ EXPECT_EQ(in.peek(), '-');
+
+ EXPECT_FALSE(in.parseDouble(d));
+ EXPECT_EQ(in.get(), '-');
+}
+
+
+TEST(StreamInputBufferTest, attribs) {
+ istringstream iss("aaa=1 bbb=2 ccc=3 d e");
+ StreamInputBuffer buffer(iss, 10);
+ BufferInputReader in(buffer);
+ map<string,string> attr;
+ int s = in.parseAttributes(attr);
+ EXPECT_EQ(s, 3);
+ EXPECT_EQ(attr["aaa"], "1");
+ EXPECT_EQ(attr["bbb"], "2");
+ EXPECT_EQ(attr["ccc"], "3");
+}
+
+
+TEST(StreamInputBufferTest, invalidate) {
+ istringstream iss("aaa=1 bbb=2 ccc=3 d e");
+ StreamInputBuffer buffer(iss, 10);
+ EXPECT_EQ(buffer.get(), 'a');
+ EXPECT_EQ(buffer.get(), 'a');
+ EXPECT_EQ(buffer.get(), 'a');
+ EXPECT_EQ(buffer.get(), '=');
+ buffer.invalidate();
+ EXPECT_TRUE(buffer.eof());
+}
+
+
+TEST(StreamInputBufferTest, find) {
+ istringstream iss("abcd efgh ijklmn abc");
+ StreamInputBuffer buffer(iss);
+ BufferInputReader reader(buffer);
+ EXPECT_EQ(reader.find('x'), -1);
+ EXPECT_EQ(reader.find('c'), 2);
+ EXPECT_EQ(reader.find(' '), 4);
+}
+
+
+TEST(StreamInputBufferTest, getString) {
+ istringstream iss("abcd efgh \"ijklm\"n abcdef 01234");
+ StreamInputBuffer buffer(iss);
+ BufferInputReader reader(buffer);
+ EXPECT_EQ(reader.getString(), "abcd");
+ EXPECT_EQ(reader.getString(), "efgh");
+ EXPECT_EQ(reader.getQuotedString('"'), "ijklm");
+ EXPECT_EQ(reader.getQuotedString('"'), "");
+ EXPECT_EQ(reader.getString(4), "n ab");
+ EXPECT_EQ(reader.getQuotedString(0), "cdef");
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamReaderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamReaderTest.cpp
new file mode 100644
index 00000000000..609384b74d1
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamReaderTest.cpp
@@ -0,0 +1,128 @@
+/*************************************************************************
+** StreamReaderTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <fstream>
+#include <sstream>
+#include <string>
+#include "CRC32.hpp"
+#include "StreamReader.hpp"
+
+using namespace std;
+
+TEST(StreamReaderTest, readString) {
+ string str1 = "dvisvgm converts DVI files to SVG.";
+ istringstream iss(str1);
+ StreamReader reader(iss);
+ string str2 = reader.readString(iss.str().length());
+ EXPECT_EQ(str1, str2);
+ iss.str(str1);
+ str2 = reader.readString();
+ EXPECT_EQ(str1, str2);
+}
+
+
+TEST(StreamReaderTest, readStringCRC) {
+ string str1 = "dvisvgm converts DVI files to SVG.";
+ istringstream iss(str1);
+ StreamReader reader(iss);
+ CRC32 crc;
+ string str2 = reader.readString(iss.str().length(), crc);
+ EXPECT_EQ(str1, str2);
+ EXPECT_EQ(crc.get(), 0x7c4ef359);
+ iss.str(str1);
+ crc.reset();
+ str2 = reader.readString(crc, false);
+ EXPECT_EQ(crc.get(), 0x7c4ef359);
+}
+
+
+TEST(StreamReaderTest, readUnsigned) {
+ string str = "\x01\x02\x03\x04";
+ istringstream iss(str);
+ StreamReader reader(iss);
+ uint32_t val = reader.readUnsigned(4);
+ EXPECT_EQ(val, 0x01020304);
+}
+
+
+TEST(StreamReaderTest, readUnsignedCRC) {
+ string str = "\x01\x02\x03\x04";
+ istringstream iss(str);
+ StreamReader reader(iss);
+ CRC32 crc;
+ uint32_t val = reader.readUnsigned(4, crc);
+ EXPECT_EQ(val, 0x01020304);
+ EXPECT_EQ(crc.get(), 0xb63cfbcd);
+}
+
+
+TEST(StreamReaderTest, readSigned) {
+ string str = "\xff\xee\xdd\xcc";
+ istringstream iss(str);
+ StreamReader reader(iss);
+ int32_t val = reader.readSigned(4);
+ EXPECT_EQ(val, 0xffeeddcc);
+}
+
+
+TEST(StreamReaderTest, readSignedCRC) {
+ string str = "\xff\xee\xdd\xcc";
+ istringstream iss(str);
+ StreamReader reader(iss);
+ CRC32 crc;
+ int32_t val = reader.readSigned(4, crc);
+ EXPECT_EQ(val, 0xffeeddcc);
+ EXPECT_EQ(crc.get(), 0xfa79118e);
+}
+
+
+TEST(StreamReaderTest, readBytes) {
+ string str = "\xff\xee\xdd\xcc";
+ istringstream iss(str);
+ StreamReader reader(iss);
+ vector<uint8_t> bytes(4);
+ memset(&bytes[0], 0, 4);
+ reader.readBytes(3, bytes);
+ EXPECT_EQ(bytes[0], 0xff);
+ EXPECT_EQ(bytes[1], 0xee);
+ EXPECT_EQ(bytes[2], 0xdd);
+ EXPECT_EQ(bytes[3], 0);
+}
+
+
+TEST(StreamReaderTest, readBytesCRC) {
+ string str = "\xff\xee\xdd\xcc";
+ istringstream iss(str);
+ StreamReader reader(iss);
+ vector<uint8_t> bytes(4);
+ memset(&bytes[0], 0, 4);
+ CRC32 crc;
+ reader.readBytes(3, bytes, crc);
+ EXPECT_EQ(bytes[0], 0xff);
+ EXPECT_EQ(bytes[1], 0xee);
+ EXPECT_EQ(bytes[2], 0xdd);
+ EXPECT_EQ(bytes[3], 0);
+ EXPECT_EQ(crc.get(), 0x68ab9f15);
+ int byte = reader.readByte(crc);
+ EXPECT_EQ(byte, 0xcc);
+ EXPECT_EQ(crc.get(), 0x2d652e62);
+}
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamWriterTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamWriterTest.cpp
new file mode 100644
index 00000000000..e06ff36dfa8
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamWriterTest.cpp
@@ -0,0 +1,106 @@
+/*************************************************************************
+** StreamWriterTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <sstream>
+#include <string>
+#include "CRC32.hpp"
+#include "StreamWriter.hpp"
+
+using namespace std;
+
+TEST(StreamWriterTest, writeString) {
+ ostringstream oss;
+ StreamWriter writer(oss);
+ string str = "dvisvgm converts DVI files to SVG.";
+ writer.writeString(str);
+ EXPECT_EQ(oss.str(), str);
+
+ oss.str("");
+ writer.writeString(str, true);
+ str.push_back('\0');
+ EXPECT_EQ(oss.str(), str);
+}
+
+
+TEST(StreamWriterTest, writeStringCRC) {
+ ostringstream oss;
+ StreamWriter writer(oss);
+ CRC32 crc;
+ string str = "dvisvgm converts DVI files to SVG.";
+ writer.writeString(str, crc);
+ EXPECT_EQ(oss.str(), str);
+ EXPECT_EQ(crc.get(), 0x7C4EF359);
+
+ oss.str("");
+ crc.reset();
+ writer.writeString(str, crc, true);
+ str.push_back('\0');
+ EXPECT_EQ(oss.str(), str);
+ EXPECT_EQ(crc.get(), 0xc0c9482e);
+}
+
+
+TEST(StreamWriterTest, writeUnsigned) {
+ ostringstream oss;
+ StreamWriter writer(oss);
+ writer.writeUnsigned(0x00010203, 4);
+ string str;
+ str.push_back('\x00');
+ str.push_back('\x01');
+ str.push_back('\x02');
+ str.push_back('\x03');
+ EXPECT_EQ(oss.str(), str);
+}
+
+
+TEST(StreamWriterTest, writeUnsignedCRC) {
+ ostringstream oss;
+ StreamWriter writer(oss);
+ CRC32 crc;
+ writer.writeUnsigned(0x00010203, 4, crc);
+ string str;
+ str.push_back('\x00');
+ str.push_back('\x01');
+ str.push_back('\x02');
+ str.push_back('\x03');
+ EXPECT_EQ(oss.str(), str);
+ EXPECT_EQ(crc.get(), 0x8bb98613);
+}
+
+
+TEST(StreamWriterTest, writeSigned) {
+ ostringstream oss;
+ StreamWriter writer(oss);
+ writer.writeSigned(0xffeeddcc, 4);
+ string str = "\xff\xee\xdd\xcc";
+ EXPECT_EQ(oss.str(), str);
+}
+
+
+TEST(StreamWriterTest, writeSignedCRC) {
+ ostringstream oss;
+ StreamWriter writer(oss);
+ CRC32 crc;
+ writer.writeSigned(0xffeeddcc, 4, crc);
+ string str = "\xff\xee\xdd\xcc";
+ EXPECT_EQ(oss.str(), str);
+ EXPECT_EQ(crc.get(), 0xfa79118e);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/SubfontTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/SubfontTest.cpp
new file mode 100644
index 00000000000..da983ab73c2
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/SubfontTest.cpp
@@ -0,0 +1,92 @@
+/*************************************************************************
+** SubfontTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "FileFinder.hpp"
+#include "Subfont.hpp"
+
+using namespace std;
+
+
+class SubfontTest : public ::testing::Test
+{
+ protected:
+ void SetUp () {
+ FileFinder::init("SubfontTest", "SubfontTest", false);
+ }
+};
+
+
+TEST_F(SubfontTest, collect_subfonts) {
+ try {
+ if (SubfontDefinition *sfd = SubfontDefinition::lookup("sample")) {
+ vector<Subfont*> subfonts;
+ const char *ids_cmp[] = {"00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "x1"};
+ int size = sizeof(ids_cmp)/sizeof(Subfont*);
+ EXPECT_EQ(sfd->subfonts(subfonts), size);
+ for (int i=0; i < size; i++) {
+ EXPECT_EQ(subfonts[i]->id(), ids_cmp[i]);
+ }
+ }
+ }
+ catch (SubfontException &e) {
+ FAIL() << e.what();
+ }
+}
+
+
+TEST_F(SubfontTest, read_table) {
+ try {
+ if (SubfontDefinition *sfd = SubfontDefinition::lookup("sample")) {
+ // check scanning of single value entries
+ Subfont *subfont = sfd->subfont("02");
+ ASSERT_TRUE(subfont != 0);
+ EXPECT_EQ(subfont->id(), "02");
+ EXPECT_EQ(subfont->decode(0), 0xff45);
+ EXPECT_EQ(subfont->decode(1), 0xff46);
+ EXPECT_EQ(subfont->decode(2), 0xff47);
+ EXPECT_EQ(subfont->decode(8), 0xff4d);
+ EXPECT_EQ(subfont->decode(32), 0x3047);
+ EXPECT_EQ(subfont->decode(255), 0x03ba);
+
+ // check scanning of ranges
+ subfont = sfd->subfont("x1");
+ ASSERT_TRUE(subfont != 0);
+ EXPECT_EQ(subfont->id(), "x1");
+ EXPECT_EQ(subfont->decode(0), 0x0010);
+ EXPECT_EQ(subfont->decode(1), 0x0011);
+ EXPECT_EQ(subfont->decode(2), 0x0012);
+ EXPECT_EQ(subfont->decode(0x20), 0x0030);
+ EXPECT_EQ(subfont->decode(0x21), 0x1010);
+ EXPECT_EQ(subfont->decode(0x41), 0x1030);
+ EXPECT_EQ(subfont->decode(0x42), 0xe000);
+ EXPECT_EQ(subfont->decode(0x43), 0);
+
+ //check scanning of offset values
+ EXPECT_EQ(subfont->decode(0x9f), 0);
+ EXPECT_EQ(subfont->decode(0xa0), 0x1000);
+ EXPECT_EQ(subfont->decode(0xa1), 0x2000);
+ EXPECT_EQ(subfont->decode(0xa2), 0);
+ }
+ }
+ catch (SubfontException &e) {
+ FAIL() << e.what() << " in line " << e.lineno();
+ }
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/TFMReaderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/TFMReaderTest.cpp
new file mode 100644
index 00000000000..aa174a3b8b7
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/TFMReaderTest.cpp
@@ -0,0 +1,104 @@
+/*************************************************************************
+** TFMReaderTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <cstdlib>
+#include <fstream>
+#include <string>
+#include <vector>
+#include "TFM.hpp"
+
+#ifndef SRCDIR
+#define SRCDIR "."
+#endif
+
+using namespace std;
+
+
+class TFMReaderTest : public ::testing::Test
+{
+ public:
+ TFMReaderTest () : tfm(0) {}
+
+ void SetUp () {
+ string fname = string(SRCDIR)+"/data/cmr10.tfm";
+ ifstream ifs(fname.c_str(), ios::binary);
+ ASSERT_TRUE(ifs.is_open()) << "failed opening " << fname;
+ tfm = new TFM(ifs);
+ }
+
+ void TearDown () {
+ delete tfm;
+ }
+
+ protected:
+ TFM *tfm;
+};
+
+
+TEST_F(TFMReaderTest, properties) {
+ ASSERT_TRUE(tfm != 0);
+ ASSERT_EQ(tfm->getChecksum(), 0x4BF16079);
+ ASSERT_FALSE(tfm->verticalLayout());
+ ASSERT_EQ(tfm->firstChar(), 0);
+ ASSERT_EQ(tfm->lastChar(), 127);
+ ASSERT_DOUBLE_EQ(tfm->getDesignSize(), 10.0*72.0/72.27);
+}
+
+
+TEST_F(TFMReaderTest, charWidth) {
+ ASSERT_TRUE(tfm != 0);
+ ASSERT_NEAR(tfm->getCharWidth('M'), 9.132, 0.001);
+ ASSERT_NEAR(tfm->getCharWidth('g'), 4.981, 0.001);
+ ASSERT_DOUBLE_EQ(tfm->getCharWidth(200), 0);
+}
+
+
+TEST_F(TFMReaderTest, charHeight) {
+ ASSERT_TRUE(tfm != 0);
+ ASSERT_NEAR(tfm->getCharHeight('M'), 6.808, 0.001);
+ ASSERT_NEAR(tfm->getCharHeight('g'), 4.289, 0.001);
+ ASSERT_DOUBLE_EQ(tfm->getCharHeight(200), 0);
+}
+
+
+TEST_F(TFMReaderTest, charDepth) {
+ ASSERT_TRUE(tfm != 0);
+ ASSERT_DOUBLE_EQ(tfm->getCharDepth('M'), 0);
+ ASSERT_NEAR(tfm->getCharDepth('g'), 1.937, 0.001);
+ ASSERT_DOUBLE_EQ(tfm->getCharDepth(200), 0);
+}
+
+
+TEST_F(TFMReaderTest, italicCorr) {
+ ASSERT_TRUE(tfm != 0);
+ ASSERT_DOUBLE_EQ(tfm->getItalicCorr('M'), 0);
+ ASSERT_NEAR(tfm->getItalicCorr('g'), 0.138, 0.001);
+ ASSERT_DOUBLE_EQ(tfm->getItalicCorr(200), 0);
+}
+
+
+TEST_F(TFMReaderTest, params) {
+ ASSERT_TRUE(tfm != 0);
+ ASSERT_NEAR(tfm->getSpace(), 3.321, 0.001);
+ ASSERT_NEAR(tfm->getSpaceShrink(), 1.107, 0.001);
+ ASSERT_NEAR(tfm->getSpaceStretch(), 1.66, 0.001);
+ ASSERT_NEAR(tfm->getQuad(), 9.963, 0.001);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/TensorProductPatchTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/TensorProductPatchTest.cpp
new file mode 100644
index 00000000000..c58791f8d09
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/TensorProductPatchTest.cpp
@@ -0,0 +1,334 @@
+/*************************************************************************
+** TensorProductPatchTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <vector>
+#include "Color.hpp"
+#include "TensorProductPatch.hpp"
+
+using namespace std;
+
+
+class TensorProductPatchTest : public ::testing::Test
+{
+ protected:
+ void SetUp () {
+ _points.resize(16);
+ _points[0] = DPair(10, 10);
+ _points[1] = DPair(0, 30);
+ _points[2] = DPair(20, 40);
+ _points[3] = DPair(10, 70);
+ _points[4] = DPair(20, 100);
+ _points[5] = DPair(70, 100);
+ _points[6] = DPair(100, 70);
+ _points[7] = DPair(90, 60);
+ _points[8] = DPair(80, 50);
+ _points[9] = DPair(70, 20);
+ _points[10] = DPair(50, 30);
+ _points[11] = DPair(20, 0);
+ _points[12] = DPair(30, 40);
+ _points[13] = DPair(40, 80);
+ _points[14] = DPair(60, 70);
+ _points[15] = DPair(40, 40);
+ _patch.setPoints(_points, 0, 0);
+
+ vector<Color> colors(4);
+ colors[0].setRGB(1.0, 0.0, 0.0);
+ colors[1].setRGB(1.0, 1.0, 0.0);
+ colors[2].setRGB(1.0, 0.0, 1.0);
+ colors[3].setRGB(0.0, 1.0, 0.0);
+ _patch.setColors(colors, 0, 0);
+ }
+
+ void checkBezierPoints (const Bezier &b, const DPair &p1, const DPair &p2, const DPair &p3, const DPair &p4) const {
+ EXPECT_EQ(b.point(0), p1);
+ EXPECT_EQ(b.point(1), p2);
+ EXPECT_EQ(b.point(2), p3);
+ EXPECT_EQ(b.point(3), p4);
+ }
+
+ void expectNear (const DPair &p1, const DPair &p2, double eps) const {
+ EXPECT_NEAR(p1.x(), p2.x(), eps);
+ EXPECT_NEAR(p1.y(), p2.y(), eps);
+ }
+
+ void expectEqual (const DPair &p1, const DPair &p2) const {
+ EXPECT_DOUBLE_EQ(p1.x(), p2.x());
+ EXPECT_DOUBLE_EQ(p1.y(), p2.y());
+ }
+
+ protected:
+ vector<DPair> _points;
+ TensorProductPatch _patch;
+};
+
+
+TEST_F(TensorProductPatchTest, construct) {
+ EXPECT_EQ(_patch.psShadingType(), 7);
+ EXPECT_EQ(_patch.numPoints(0), 16);
+ EXPECT_EQ(_patch.numColors(0), 4);
+ EXPECT_EQ(_patch.numPoints(1), 12);
+ EXPECT_EQ(_patch.numColors(1), 2);
+
+ CoonsPatch cp(Color::ColorSpace::RGB);
+ EXPECT_EQ(cp.psShadingType(), 6);
+ EXPECT_EQ(cp.numPoints(0), 12);
+ EXPECT_EQ(cp.numColors(0), 4);
+ EXPECT_EQ(cp.numPoints(1), 8);
+ EXPECT_EQ(cp.numColors(1), 2);
+}
+
+
+TEST_F(TensorProductPatchTest, valueAt) {
+ EXPECT_EQ(_patch.valueAt(0, 0), DPair(10, 10));
+ EXPECT_EQ(_patch.valueAt(1, 0), DPair(70, 20));
+ EXPECT_EQ(_patch.valueAt(0, 1), DPair(10, 70));
+ EXPECT_EQ(_patch.valueAt(1, 1), DPair(100, 70));
+
+ vector<DPair> points = _points;
+ vector<Color> colors(2);
+ points.resize(12);
+ TensorProductPatch tpp1(points, colors, Color::ColorSpace::RGB, 1, &_patch);
+ EXPECT_EQ(tpp1.valueAt(0, 0), DPair(10, 70));
+ EXPECT_EQ(tpp1.valueAt(0, 1), DPair(100, 70));
+ EXPECT_EQ(tpp1.valueAt(1, 0), DPair(70, 100));
+ EXPECT_EQ(tpp1.valueAt(1, 1), DPair(20, 40));
+
+ TensorProductPatch tpp2(points, colors, Color::ColorSpace::RGB, 2, &_patch);
+ EXPECT_EQ(tpp2.valueAt(0, 0), DPair(100, 70));
+ EXPECT_EQ(tpp2.valueAt(0, 1), DPair(70, 20));
+ EXPECT_EQ(tpp2.valueAt(1, 0), DPair(70, 100));
+ EXPECT_EQ(tpp2.valueAt(1, 1), DPair(20, 40));
+
+ TensorProductPatch tpp3(points, colors, Color::ColorSpace::RGB, 3, &_patch);
+ EXPECT_EQ(tpp3.valueAt(0, 0), DPair(70, 20));
+ EXPECT_EQ(tpp3.valueAt(0, 1), DPair(10, 10));
+ EXPECT_EQ(tpp3.valueAt(1, 0), DPair(70, 100));
+ EXPECT_EQ(tpp3.valueAt(1, 1), DPair(20, 40));
+
+ colors.resize(4);
+ CoonsPatch cp1(points, colors, Color::ColorSpace::RGB, 0, 0);
+ EXPECT_EQ(cp1.valueAt(0, 0), DPair(10, 70));
+ EXPECT_EQ(cp1.valueAt(0, 1), DPair(10, 10));
+ EXPECT_EQ(cp1.valueAt(1, 0), DPair(100, 70));
+ EXPECT_EQ(cp1.valueAt(1, 1), DPair(70, 20));
+
+ points.resize(8);
+ colors.resize(2);
+ CoonsPatch cp2(points, colors, Color::ColorSpace::RGB, 1, &cp1);
+ EXPECT_EQ(cp2.valueAt(0, 0), DPair(100, 70));
+ EXPECT_EQ(cp2.valueAt(0, 1), DPair(10, 70));
+ EXPECT_EQ(cp2.valueAt(1, 0), DPair(20, 40));
+ EXPECT_EQ(cp2.valueAt(1, 1), DPair(70, 100));
+
+ CoonsPatch cp3(points, colors, Color::ColorSpace::RGB, 2, &cp1);
+ EXPECT_EQ(cp3.valueAt(0, 0), DPair(70, 20));
+ EXPECT_EQ(cp3.valueAt(0, 1), DPair(100, 70));
+ EXPECT_EQ(cp3.valueAt(1, 0), DPair(20, 40));
+ EXPECT_EQ(cp3.valueAt(1, 1), DPair(70, 100));
+
+ CoonsPatch cp4(points, colors, Color::ColorSpace::RGB, 3, &cp1);
+ EXPECT_EQ(cp4.valueAt(0, 0), DPair(10, 10));
+ EXPECT_EQ(cp4.valueAt(0, 1), DPair(70, 20));
+ EXPECT_EQ(cp4.valueAt(1, 0), DPair(20, 40));
+ EXPECT_EQ(cp4.valueAt(1, 1), DPair(70, 100));
+}
+
+
+TEST_F(TensorProductPatchTest, averageColor) {
+ EXPECT_EQ(_patch.averageColor().rgbString(), "#bf8040");
+}
+
+
+
+TEST_F(TensorProductPatchTest, vertices) {
+ EXPECT_EQ(_patch.valueAt(0,0), DPair(10,10));
+ EXPECT_EQ(_patch.valueAt(0,1), DPair(10,70));
+ EXPECT_EQ(_patch.valueAt(1,1), DPair(100,70));
+ EXPECT_EQ(_patch.valueAt(1,0), DPair(70,20));
+
+ EXPECT_EQ(_patch.colorAt(0,0).rgbString(), "#ff0000");
+ EXPECT_EQ(_patch.colorAt(0,1).rgbString(), "#ffff00");
+ EXPECT_EQ(_patch.colorAt(1,1).rgbString(), "#ff00ff");
+ EXPECT_EQ(_patch.colorAt(1,0).rgbString(), "#00ff00");
+}
+
+
+TEST_F(TensorProductPatchTest, curves) {
+ Bezier bezier;
+ _patch.horizontalCurve(0, bezier);
+ checkBezierPoints(bezier, DPair(10, 10), DPair(20, 0), DPair(50, 30), DPair(70, 20));
+ _patch.horizontalCurve(1, bezier);
+ checkBezierPoints(bezier, DPair(10, 70), DPair(20, 100), DPair(70, 100), DPair(100, 70));
+ _patch.verticalCurve(0, bezier);
+ checkBezierPoints(bezier, DPair(10, 10), DPair(0, 30), DPair(20, 40), DPair(10, 70));
+ _patch.verticalCurve(1, bezier);
+ checkBezierPoints(bezier, DPair(70, 20), DPair(80, 50), DPair(90, 60), DPair(100, 70));
+}
+
+
+TEST_F(TensorProductPatchTest, blossom_outer) {
+ EXPECT_EQ(_patch.blossomValue(0,0,0,0,0,0), DPair(10, 10));
+ EXPECT_EQ(_patch.blossomValue(0,0,0,1,0,0), DPair(0, 30));
+ EXPECT_EQ(_patch.blossomValue(0,0,0,1,1,0), DPair(20, 40));
+ EXPECT_EQ(_patch.blossomValue(0,0,0,1,1,1), DPair(10, 70));
+
+ EXPECT_EQ(_patch.blossomValue(1,1,1,0,0,0), DPair(70, 20));
+ EXPECT_EQ(_patch.blossomValue(1,1,1,1,0,0), DPair(80, 50));
+ EXPECT_EQ(_patch.blossomValue(1,1,1,1,1,0), DPair(90, 60));
+ EXPECT_EQ(_patch.blossomValue(1,1,1,1,1,1), DPair(100, 70));
+
+ EXPECT_EQ(_patch.blossomValue(1,0,0,0,0,0), DPair(20, 0));
+ EXPECT_EQ(_patch.blossomValue(1,1,0,0,0,0), DPair(50, 30));
+ EXPECT_EQ(_patch.blossomValue(1,1,1,0,0,0), DPair(70, 20));
+
+ EXPECT_EQ(_patch.blossomValue(0,0,0,1,1,1), DPair(10, 70));
+ EXPECT_EQ(_patch.blossomValue(1,0,0,1,1,1), DPair(20, 100));
+ EXPECT_EQ(_patch.blossomValue(1,1,0,1,1,1), DPair(70, 100));
+}
+
+
+TEST_F(TensorProductPatchTest, blossom_inner) {
+ EXPECT_EQ(_patch.blossomValue(1,0,0,1,0,0), DPair(30, 40));
+ EXPECT_EQ(_patch.blossomValue(1,1,0,1,0,0), DPair(40, 40));
+ EXPECT_EQ(_patch.blossomValue(1,0,0,1,1,0), DPair(40, 80));
+ EXPECT_EQ(_patch.blossomValue(1,1,0,1,1,0), DPair(60, 70));
+}
+
+
+TEST_F(TensorProductPatchTest, values) {
+ expectEqual(_patch.valueAt(0.25, 0.5), _patch.blossomValue(0.25, 0.25, 0.25, 0.5, 0.5, 0.5));
+ expectNear(_patch.valueAt(0.25, 0.5), DPair(26.1133, 48.457), 0.0001);
+
+ expectEqual(_patch.valueAt(0.8, 0.2), _patch.blossomValue(0.8, 0.8, 0.8, 0.2, 0.2, 0.2));
+ expectNear(_patch.valueAt(0.8, 0.2), DPair(59.5974, 35.4502), 0.0001);
+}
+
+
+TEST_F(TensorProductPatchTest, boundaryPath) {
+ GraphicsPath<double> path;
+ _patch.getBoundaryPath(path);
+ ostringstream oss;
+ path.writeSVG(oss, false);
+ EXPECT_EQ(oss.str(), "M10 10C20 0 50 30 70 20C80 50 90 60 100 70C70 100 20 100 10 70C20 40 0 30 10 10Z");
+}
+
+
+TEST_F(TensorProductPatchTest, subpatch) {
+ TensorProductPatch tpp;
+ _patch.subpatch(0, 0.5, 0, 0.5, tpp);
+ GraphicsPath<double> path;
+ tpp.getBoundaryPath(path);
+ ostringstream oss;
+ path.writeSVG(oss, false);
+ EXPECT_EQ(oss.str(), "M10 10C5 20 7.5 27.5 10 36.25C20.625 46.875 31.25 52.1875 43.2812 54.2188C40 40.9375 36.25 27.5 36.25 15C25 10 15 5 10 10Z");
+ EXPECT_EQ(tpp.colorAt(0, 0).rgbString(), "#ff0000");
+ EXPECT_EQ(tpp.colorAt(0, 1).rgbString(), "#ff8000");
+ EXPECT_EQ(tpp.colorAt(1, 0).rgbString(), "#808000");
+ EXPECT_EQ(tpp.colorAt(1, 1).rgbString(), "#bf8040");
+}
+
+
+TEST_F(TensorProductPatchTest, bbox) {
+ BoundingBox bbox;
+ _patch.getBBox(bbox);
+ EXPECT_NEAR(bbox.minX(), 7.1132, 0.0001);
+ EXPECT_NEAR(bbox.minY(), 7.9289, 0.0001);
+ EXPECT_DOUBLE_EQ(bbox.maxX(), 100.0);
+ EXPECT_DOUBLE_EQ(bbox.maxY(), 92.5);
+}
+
+
+class Callback : public ShadingPatch::Callback {
+ public:
+ void patchSegment (GraphicsPath<double> &path, const Color &color) {
+ ostringstream oss;
+ path.writeSVG(oss, false);
+ _pathstr += oss.str();
+ _colorstr += color.rgbString();
+ }
+ string pathstr() const {return _pathstr;}
+ string colorstr() const {return _colorstr;}
+ void reset () {_pathstr.clear(); _colorstr.clear();}
+
+ private:
+ string _pathstr;
+ string _colorstr;
+};
+
+
+TEST_F(TensorProductPatchTest, approximate) {
+ Callback callback;
+ vector<Color> colors(4);
+ TensorProductPatch tpp(_points, colors, Color::ColorSpace::RGB, 0, 0);
+ tpp.approximate(2, false, 0.1, callback);
+ EXPECT_EQ(callback.pathstr(), "M10 10C20 0 50 30 70 20C80 50 90 60 100 70C70 100 20 100 10 70C20 40 0 30 10 10Z");
+ EXPECT_EQ(callback.colorstr(), "#000000");
+
+ callback.reset();
+ _patch.approximate(2, false, 0.1, callback);
+ EXPECT_EQ(
+ callback.pathstr(),
+ "M10 10C15 5 25 10 36.25 15C36.25 27.5 40 40.9375 43.2812 54.2188C31.25 52.1875 20.625 46.875 10 36.25C7.5 27.5 5 20 10 10Z"
+ "M36.25 15C47.5 20 60 25 70 20C75 35 80 45 85 52.5C68.75 55 55.3125 56.25 43.2812 54.2188C40 40.9375 36.25 27.5 36.25 15Z"
+ "M10 36.25C20.625 46.875 31.25 52.1875 43.2812 54.2188C46.5625 67.5 49.375 80.625 47.5 92.5C30 92.5 15 85 10 70C15 55 12.5 45 10 36.25Z"
+ "M43.2812 54.2188C55.3125 56.25 68.75 55 85 52.5C90 60 95 65 100 70C85 85 65 92.5 47.5 92.5C49.375 80.625 46.5625 67.5 43.2812 54.2188Z");
+ EXPECT_EQ(callback.colorstr(), "#cf6010#70a030#efa030#cf6090");
+}
+
+
+
+TEST_F(TensorProductPatchTest, fail) {
+ // edge flag == 0
+ vector<DPair> points(15);
+ EXPECT_THROW(_patch.setPoints(points, 0, 0), ShadingException);
+ points.resize(17); // too many points
+ EXPECT_THROW(_patch.setPoints(points, 0, 0), ShadingException);
+
+ vector<Color> colors(2); // too few colors
+ EXPECT_THROW(_patch.setColors(colors, 0, 0), ShadingException);
+ colors.resize(5); // too many colors
+ EXPECT_THROW(_patch.setColors(colors, 0, 0), ShadingException);
+
+ // edge flag > 0
+ points.resize(16);
+ EXPECT_THROW(_patch.setPoints(points, 1, 0), ShadingException);
+ points.resize(11); // too few points
+ EXPECT_THROW(_patch.setPoints(points, 1, &_patch), ShadingException);
+ points.resize(13); // too many points
+ EXPECT_THROW(_patch.setPoints(points, 1, &_patch), ShadingException);
+
+ colors.resize(4);
+ EXPECT_THROW(_patch.setColors(colors, 1, 0), ShadingException);
+ colors.resize(1); // too few colors
+ EXPECT_THROW(_patch.setColors(colors, 1, &_patch), ShadingException);
+ colors.resize(3); // too many colors
+ EXPECT_THROW(_patch.setColors(colors, 1, &_patch), ShadingException);
+
+ CoonsPatch cp;
+ points.resize(8);
+ EXPECT_THROW(cp.setPoints(points, 1, 0), ShadingException);
+ points.resize(11);
+ EXPECT_THROW(cp.setPoints(points, 0, 0), ShadingException);
+ colors.resize(2);
+ EXPECT_THROW(cp.setColors(colors, 1, 0), ShadingException);
+ colors.resize(5);
+ EXPECT_THROW(cp.setColors(colors, 0, 0), ShadingException);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/ToUnicodeMapTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/ToUnicodeMapTest.cpp
new file mode 100644
index 00000000000..8d04483d393
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/ToUnicodeMapTest.cpp
@@ -0,0 +1,60 @@
+/*************************************************************************
+** ToUnicodeMapTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "ToUnicodeMap.hpp"
+
+using namespace std;
+
+
+static void check_range (const ToUnicodeMap &ucmap, int min, int max, int minval) {
+ for (int i=min; i <= max; i++)
+ ASSERT_EQ(ucmap.valueAt(i), minval+(i-min));
+}
+
+
+TEST(ToUnicodeMapTest, addMissingMappings1) {
+ ToUnicodeMap ucmap;
+ bool success = ucmap.addMissingMappings(20);
+ ASSERT_TRUE(success);
+ ASSERT_EQ(ucmap.size(), 1);
+ check_range(ucmap, 1, 20, 1);
+}
+
+
+TEST(ToUnicodeMapTest, addMissingMappings2) {
+ ToUnicodeMap ucmap;
+ ucmap.addRange(5, 8, 40);
+ ASSERT_EQ(ucmap.size(), 1);
+ check_range(ucmap, 5, 8, 40);
+
+ ucmap.addRange(10, 15, 50);
+ ASSERT_EQ(ucmap.size(), 2);
+ check_range(ucmap, 5, 8, 40);
+ check_range(ucmap, 10, 15, 50);
+
+ bool success = ucmap.addMissingMappings(20);
+ ASSERT_TRUE(success);
+ ASSERT_EQ(ucmap.size(), 2);
+ check_range(ucmap, 1, 9, 36);
+ check_range(ucmap, 10, 20, 50);
+}
+
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/TriangularPatchTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/TriangularPatchTest.cpp
new file mode 100644
index 00000000000..49d975754bd
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/TriangularPatchTest.cpp
@@ -0,0 +1,199 @@
+/*************************************************************************
+** XMLStringTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "TriangularPatch.hpp"
+
+using namespace std;
+
+
+TEST(TriangularPatchTest, construct) {
+ TriangularPatch tp1(Color::ColorSpace::RGB);
+ EXPECT_EQ(tp1.psShadingType(), 4);
+ EXPECT_EQ(tp1.numPoints(0), 3);
+ EXPECT_EQ(tp1.numColors(0), 3);
+ EXPECT_EQ(tp1.numPoints(1), 1);
+ EXPECT_EQ(tp1.numColors(1), 1);
+
+ vector<DPair> points(1);
+ points[0] = DPair(10, 0);
+ vector<Color> colors(1);
+ TriangularPatch tp2(points, colors, Color::ColorSpace::RGB, 1, &tp1);
+ EXPECT_EQ(tp1.psShadingType(), 4);
+
+ LatticeTriangularPatch tp3(Color::ColorSpace::RGB);
+ EXPECT_EQ(tp3.psShadingType(), 5);
+}
+
+
+TEST(TriangularPatchTest, valueAt) {
+ vector<DPair> points(3);
+ points[0] = DPair(0, 0);
+ points[1] = DPair(10, 0);
+ points[2] = DPair(0, 10);
+ vector<Color> colors(3);
+ TriangularPatch tp1(points, colors, Color::ColorSpace::RGB, 0, 0);
+ EXPECT_EQ(tp1.valueAt(0, 0), DPair(0,0));
+ EXPECT_EQ(tp1.valueAt(1, 0), DPair(10,0));
+ EXPECT_EQ(tp1.valueAt(0, 1), DPair(0,10));
+
+ points.resize(1);
+ colors.resize(1);
+ points[0] = DPair(10, 10);
+ TriangularPatch tp2(points, colors, Color::ColorSpace::RGB, 1, &tp1);
+ EXPECT_EQ(tp2.valueAt(0, 0), DPair(10,10));
+ EXPECT_EQ(tp2.valueAt(1, 0), DPair(10,0));
+ EXPECT_EQ(tp2.valueAt(0, 1), DPair(0,10));
+
+ TriangularPatch tp3(points, colors, Color::ColorSpace::RGB, 2, &tp1);
+ EXPECT_EQ(tp3.valueAt(0, 0), DPair(10,10));
+ EXPECT_EQ(tp3.valueAt(1, 0), DPair(0,10));
+ EXPECT_EQ(tp3.valueAt(0, 1), DPair(0,0));
+
+ tp1.setPoints(DPair(20,20), DPair(20,40), DPair(40,20));
+ EXPECT_EQ(tp1.valueAt(0, 0), DPair(20,20));
+ EXPECT_EQ(tp1.valueAt(1, 0), DPair(20,40));
+ EXPECT_EQ(tp1.valueAt(0, 1), DPair(40,20));
+}
+
+
+TEST(TriangularPatchTest, colorAt) {
+ vector<DPair> points(3);
+ vector<Color> colors(3);
+ colors[0] = Color(1.0, 0.0, 0.0);
+ colors[1] = Color(0.0, 1.0, 0.0);
+ colors[2] = Color(0.0, 0.0, 1.0);
+ TriangularPatch tp1(points, colors, Color::ColorSpace::RGB, 0, 0);
+ EXPECT_EQ(tp1.colorAt(0, 0), Color(1.0, 0.0, 0.0));
+ EXPECT_EQ(tp1.colorAt(1, 0), Color(0.0, 1.0, 0.0));
+ EXPECT_EQ(tp1.colorAt(0, 1), Color(0.0, 0.0, 1.0));
+
+ points.resize(1);
+ colors.resize(1);
+ colors[0] = Color(1.0, 1.0, 0.0);
+ TriangularPatch tp2(points, colors, Color::ColorSpace::RGB, 1, &tp1);
+ EXPECT_EQ(tp2.colorAt(0, 0), Color(1.0, 1.0, 0.0));
+ EXPECT_EQ(tp2.colorAt(1, 0), Color(0.0, 1.0, 0.0));
+ EXPECT_EQ(tp2.colorAt(0, 1), Color(0.0, 0.0, 1.0));
+
+ TriangularPatch tp3(points, colors, Color::ColorSpace::RGB, 2, &tp1);
+ EXPECT_EQ(tp3.colorAt(0, 0), Color(1.0, 1.0, 0.0));
+ EXPECT_EQ(tp3.colorAt(1, 0), Color(0.0, 0.0, 1.0));
+ EXPECT_EQ(tp3.colorAt(0, 1), Color(1.0, 0.0, 0.0));
+
+ tp1.setColors(Color(1.0, 1.0, 0.0), Color(1.0, 0.0, 1.0), Color(0.0, 1.0, 1.0));
+ EXPECT_EQ(tp1.colorAt(0, 0), Color(1.0, 1.0, 0.0));
+ EXPECT_EQ(tp1.colorAt(1, 0), Color(1.0, 0.0, 1.0));
+ EXPECT_EQ(tp1.colorAt(0, 1), Color(0.0, 1.0, 1.0));
+}
+
+
+TEST(TriangularPatchTest, averageColor) {
+ vector<DPair> points(3);
+ vector<Color> colors(3);
+ colors[0] = Color(1.0, 0.0, 0.0);
+ colors[1] = Color(0.0, 1.0, 0.0);
+ colors[2] = Color(0.0, 0.0, 1.0);
+ TriangularPatch tp(points, colors, Color::ColorSpace::RGB, 0, 0);
+ EXPECT_EQ(tp.averageColor(), Color(uint8_t(85), uint8_t(85), uint8_t(85)));
+}
+
+
+TEST(TriangularPatchTest, bbox) {
+ vector<DPair> points(3);
+ points[0] = DPair(0, 0);
+ points[1] = DPair(10, 0);
+ points[2] = DPair(0, 10);
+ vector<Color> colors(3);
+ TriangularPatch tp(points, colors, Color::ColorSpace::RGB, 0, 0);
+ BoundingBox bbox;
+ tp.getBBox(bbox);
+ EXPECT_EQ(bbox, BoundingBox(0, 0, 10, 10));
+}
+
+
+TEST(TriangularPatchTest, boundaryPath) {
+ vector<DPair> points(3);
+ points[0] = DPair(0, 0);
+ points[1] = DPair(10, 0);
+ points[2] = DPair(0, 10);
+ vector<Color> colors(3);
+ TriangularPatch tp(points, colors, Color::ColorSpace::RGB, 0, 0);
+ GraphicsPath<double> path;
+ tp.getBoundaryPath(path);
+ ostringstream oss;
+ path.writeSVG(oss, false);
+ EXPECT_EQ(oss.str(), "M0 0H10L0 10Z");
+}
+
+
+class Callback : public ShadingPatch::Callback {
+ public:
+ void patchSegment (GraphicsPath<double> &path, const Color &color) {
+ ostringstream oss;
+ path.writeSVG(oss, false);
+ _pathstr += oss.str();
+ _colorstr += color.rgbString();
+ }
+ string pathstr() const {return _pathstr;}
+ string colorstr() const {return _colorstr;}
+ void reset () {_pathstr.clear(); _colorstr.clear();}
+
+ private:
+ string _pathstr;
+ string _colorstr;
+};
+
+
+TEST(TriangularPatchTest, approximate) {
+ vector<DPair> points(3);
+ points[0] = DPair(0, 0);
+ points[1] = DPair(10, 0);
+ points[2] = DPair(0, 10);
+ vector<Color> colors(3);
+ TriangularPatch tp(points, colors, Color::ColorSpace::RGB, 0, 0);
+ Callback callback;
+ tp.approximate(2, false, 0.1, callback);
+ EXPECT_EQ(callback.pathstr(), "M0 0H10L0 10Z");
+ EXPECT_EQ(callback.colorstr(), "#000000");
+
+ callback.reset();
+ tp.setColors(Color(1.0, 0.0, 0.0), Color(0.0, 1.0, 0.0), Color(0.0, 0.0, 1.0));
+ tp.approximate(2, false, 0.1, callback);
+ EXPECT_EQ(callback.pathstr(), "M0 0H5L0 5ZM0 5L5 0V5ZM0 5H5L0 10ZM5 0H10L5 5Z");
+ EXPECT_EQ(callback.colorstr(), "#aa2b2b#555555#2b2baa#2baa2b");
+}
+
+
+TEST(TriangularPatchTest, fail) {
+ vector<DPair> points(3);
+ vector<Color> colors(3);
+ TriangularPatch tp(points, colors, Color::ColorSpace::RGB, 0, 0);
+ EXPECT_THROW(tp.setColors(colors, 1, 0), ShadingException);
+
+ for (int i=1; i <= 3; i++) {
+ EXPECT_THROW(TriangularPatch(points, colors, Color::ColorSpace::RGB, i, 0), ShadingException);
+ }
+ points.resize(2);
+ EXPECT_THROW(TriangularPatch(points, colors, Color::ColorSpace::RGB, 0, 0), ShadingException);
+ points.resize(3);
+ colors.resize(2);
+ EXPECT_THROW(TriangularPatch(points, colors, Color::ColorSpace::RGB, 0, 0), ShadingException);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/UnicodeTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/UnicodeTest.cpp
new file mode 100644
index 00000000000..ec7ec07caec
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/UnicodeTest.cpp
@@ -0,0 +1,104 @@
+/*************************************************************************
+** UnicodeTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "Unicode.hpp"
+
+using namespace std;
+
+
+TEST(UnicodeTest, isValidCodepoint) {
+ for (uint32_t i=0; i <= 0x20; i++)
+ EXPECT_FALSE(Unicode::isValidCodepoint(i));
+ for (uint32_t i=0x21; i <= 0x7e; i++)
+ EXPECT_TRUE(Unicode::isValidCodepoint(i));
+ EXPECT_FALSE(Unicode::isValidCodepoint(0xfffe));
+ EXPECT_FALSE(Unicode::isValidCodepoint(0xffff));
+ EXPECT_TRUE(Unicode::isValidCodepoint(0x10000));
+}
+
+
+TEST(UnicodeTest, charToCodepoint) {
+ for (uint32_t i=0; i <= 0x20; i++)
+ EXPECT_EQ(Unicode::charToCodepoint(i), 0xe000+i);
+ for (uint32_t i=0x21; i <= 0x7e; i++)
+ EXPECT_EQ(Unicode::charToCodepoint(i), i);
+ for (uint32_t i=0x7f; i <= 0x9f; i++)
+ EXPECT_EQ(Unicode::charToCodepoint(i), 0xe021+i-0x7f);
+ EXPECT_EQ(Unicode::charToCodepoint(0x10fffd), 0x10fffd);
+ EXPECT_EQ(Unicode::charToCodepoint(0x10fffe), 0xe887);
+ EXPECT_EQ(Unicode::charToCodepoint(0x10ffff), 0xe888);
+}
+
+
+TEST(UnicodeTest, utf8) {
+ EXPECT_EQ(Unicode::utf8(0x1), string("\x01"));
+ EXPECT_EQ(Unicode::utf8(0x47), string("\x47"));
+ EXPECT_EQ(Unicode::utf8(0x7f), string("\x7f"));
+ EXPECT_EQ(Unicode::utf8(0x80), string("\xc2\x80"));
+ EXPECT_EQ(Unicode::utf8(0x07ff), string("\xdf\xbf"));
+ EXPECT_EQ(Unicode::utf8(0x0800), string("\xe0\xa0\x80"));
+ EXPECT_EQ(Unicode::utf8(0x7fff), string("\xe7\xbf\xbf"));
+ EXPECT_EQ(Unicode::utf8(0xfffe), string("\xef\xbf\xbe"));
+ EXPECT_EQ(Unicode::utf8(0xffff), string("\xef\xbf\xbf"));
+ EXPECT_EQ(Unicode::utf8(0x10000), string("\xf0\x90\x80\x80"));
+ EXPECT_EQ(Unicode::utf8(0x10ffff), string("\xf4\x8f\xbf\xbf"));
+ EXPECT_TRUE(Unicode::utf8(0x110000).empty());
+}
+
+
+TEST(UnicodeTest, aglNameToCodepoint1) {
+ EXPECT_EQ(Unicode::aglNameToCodepoint("does not exist"), 0);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("Eogonek"), 0x118);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("alpha"), 0x03b1);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("Alpha"), 0x0391);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("alphatonos"), 0x03ac);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("SF460000"), 0x2568);
+}
+
+
+TEST(UnicodeTest, aglNameToCodepoint2) {
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uni1234"), 0x1234);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uni1234.suffix"), 0x1234);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uni1234_part2"), 0x1234);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uni12345678"), 0x1234);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uni123"), 0);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uni12345"), 0);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uni1234567"), 0);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uni100000"), 0);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uni123E"), 0x123e);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uni123e"), 0);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uniD7FF"), 0xd7ff);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uniD800"), 0);
+
+ EXPECT_EQ(Unicode::aglNameToCodepoint("u1234"), 0x1234);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("u1234.suffix"), 0x1234);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("u1234_part2"), 0x1234);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("u12345678"), 0);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("u123.suffix"), 0);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("u123"), 0);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("u12345"), 0x12345);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("u1234567"), 0);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("u100000"), 0x100000);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("u123E"), 0x123e);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("u123e"), 0);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uD7FF"), 0xd7ff);
+ EXPECT_EQ(Unicode::aglNameToCodepoint("uD800"), 0);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/UtilityTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/UtilityTest.cpp
new file mode 100644
index 00000000000..3ed509bfb1d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/UtilityTest.cpp
@@ -0,0 +1,80 @@
+#include <gtest/gtest.h>
+#include <cmath>
+#include <limits>
+#include <sstream>
+#include "utility.hpp"
+
+using namespace util;
+using namespace std;
+
+
+TEST(UtilityTest, trim) {
+ ASSERT_EQ(trim(""), "");
+ ASSERT_EQ(trim(" "), "");
+ ASSERT_EQ(trim(" \n \t "), "");
+ ASSERT_EQ(trim("abcdefg"), "abcdefg");
+ ASSERT_EQ(trim(" abcdefg"), "abcdefg");
+ ASSERT_EQ(trim("abcdefg "), "abcdefg");
+ ASSERT_EQ(trim(" abcdefg "), "abcdefg");
+ ASSERT_EQ(trim(" abc defg "), "abc defg");
+ ASSERT_EQ(trim(" abc \n defg \n \r"), "abc \n defg");
+}
+
+
+TEST(UtilityTest, normalize_space) {
+ ASSERT_EQ(normalize_space(""), "");
+ ASSERT_EQ(normalize_space(" "), "");
+ ASSERT_EQ(normalize_space(" \n \t "), "");
+ ASSERT_EQ(normalize_space("abcdefg"), "abcdefg");
+ ASSERT_EQ(normalize_space(" abcdefg"), "abcdefg");
+ ASSERT_EQ(normalize_space("abcdefg "), "abcdefg");
+ ASSERT_EQ(normalize_space(" abcdefg "), "abcdefg");
+ ASSERT_EQ(normalize_space(" abc defg "), "abc defg");
+ ASSERT_EQ(normalize_space(" abc \n defg \n \r"), "abc defg");
+ ASSERT_EQ(normalize_space(" abc \n de\r\ffg \n \r"), "abc de fg");
+}
+
+
+TEST(UtilityTest, tolower) {
+ string str;
+ ASSERT_EQ(str, "");
+ ASSERT_EQ(tolower(str), "");
+ ASSERT_EQ(tolower(str="abcdefg"), "abcdefg");
+ ASSERT_EQ(tolower(str="ABCDEFG"), "abcdefg");
+ ASSERT_EQ(tolower(str="123XyZ456"), "123xyz456");
+ ASSERT_EQ(tolower(str="123\nXyZ 456"), "123\nxyz 456");
+ ASSERT_EQ(str, "123\nxyz 456");
+}
+
+
+TEST(UtilityTest, ilog10) {
+ ASSERT_EQ(ilog10(-10), 0);
+ ASSERT_EQ(ilog10(-1), 0);
+ ASSERT_EQ(ilog10(0), 0);
+ for (int i=1; i <= 1000; i++) {
+ ASSERT_EQ(ilog10(i), static_cast<int>(log10(i))) << "i=" << i;
+ }
+ for (int i=1000; i < numeric_limits<int>::max()/10; i*=10) {
+ ASSERT_EQ(ilog10(i-1), static_cast<int>(log10(i-1))) << "i=" << i;
+ ASSERT_EQ(ilog10(i), static_cast<int>(log10(i))) << "i=" << i;
+ ASSERT_EQ(ilog10(i+1), static_cast<int>(log10(i+1))) << "i=" << i;
+ }
+}
+
+
+static string base64 (const string &str) {
+ istringstream iss(str);
+ ostringstream oss;
+ base64_copy(istreambuf_iterator<char>(iss), istreambuf_iterator<char>(), ostreambuf_iterator<char>(oss));
+ return oss.str();
+}
+
+
+TEST(UtilityTest, base64_copy) {
+ ASSERT_EQ(base64(""), "");
+ ASSERT_EQ(base64("a"), "YQ==");
+ ASSERT_EQ(base64("ab"), "YWI=");
+ ASSERT_EQ(base64("abc"), "YWJj");
+ ASSERT_EQ(base64("abcd"), "YWJjZA==");
+ ASSERT_EQ(base64("aBcDe\nFgHiJ\n"), "YUJjRGUKRmdIaUoK");
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorIteratorTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorIteratorTest.cpp
new file mode 100644
index 00000000000..5fe715baf98
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorIteratorTest.cpp
@@ -0,0 +1,141 @@
+/*************************************************************************
+** VectorIteratorTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "VectorIterator.hpp"
+
+using namespace std;
+
+
+TEST(VectorIteratorTest, inc) {
+ int array[] = {4,3,2,9,8,7,10};
+ const int size = sizeof(array)/sizeof(int);
+ vector<int> vec(array, array+size);
+ VectorIterator<int> it(vec);
+ EXPECT_TRUE(it.valid());
+ EXPECT_EQ(*it++, 4);
+ EXPECT_EQ(*it, 3);
+ EXPECT_EQ(*++it, 2);
+ EXPECT_TRUE(it.valid());
+ for (int i=2; it.valid(); i++) {
+ EXPECT_LT(i, size);
+ EXPECT_EQ(*it, array[i]);
+ ++it;
+ }
+}
+
+
+TEST(VectorIteratorTest, addsub) {
+ int array[] = {4,3,2,9,8,7,10};
+ const int size = sizeof(array)/sizeof(int);
+ vector<int> vec(array, array+size);
+ VectorIterator<int> it(vec);
+ EXPECT_EQ(*(it += 4), 8);
+ EXPECT_EQ(*(it -= 3), 3);
+ EXPECT_EQ(*(it + 4), 7);
+ EXPECT_EQ(*(it - 1), 4);
+}
+
+
+TEST(VectorIteratorTest, dec) {
+ int array[] = {4,3,2,9,8,7,10};
+ const int size = sizeof(array)/sizeof(int);
+ vector<int> vec(array, array+size);
+ VectorIterator<int> it(vec);
+ it += 6;
+ EXPECT_EQ(*it, 10);
+ EXPECT_EQ(*it--, 10);
+ EXPECT_EQ(*it, 7);
+ EXPECT_EQ(*--it, 8);
+ EXPECT_TRUE(it.valid());
+ for (int i=4; it.valid(); i--) {
+ EXPECT_LT(i, size);
+ EXPECT_EQ(*it, array[i]);
+ --it;
+ }
+}
+
+
+TEST(VectorIteratorTest, invalidate) {
+ int array[] = {4,3,2,9,8,7,10};
+ const int size = sizeof(array)/sizeof(int);
+ vector<int> vec(array, array+size);
+ VectorIterator<int> it(vec);
+ --it;
+ EXPECT_FALSE(it.valid());
+ ++it;
+ EXPECT_TRUE(it.valid());
+ it += 10;
+ EXPECT_FALSE(it.valid());
+ it -= 10;
+ EXPECT_TRUE(it.valid());
+ it.invalidate();
+ EXPECT_FALSE(it.valid());
+}
+
+
+TEST(VectorIteratorTest, compare) {
+ int array[] = {4,3,2,9,8,7,10};
+ const int size = sizeof(array)/sizeof(int);
+ vector<int> vec(array, array+size);
+ VectorIterator<int> it1(vec);
+ VectorIterator<int> it2 = it1 + 1;
+ EXPECT_NE(it1, it2);
+ ++it1;
+ EXPECT_EQ(it1, it2);
+ EXPECT_LE(it1, it2);
+ EXPECT_GE(it1, it2);
+ ++it2;
+ EXPECT_LT(it1, it2);
+ EXPECT_GT(it2, it1);
+}
+
+
+struct MyPair {
+ int number;
+ const char *str;
+}
+mypair[] = {
+ {3, "text"},
+ {5, "string"}
+};
+
+TEST(VectorIteratorTest, deref) {
+ vector<MyPair> vec(mypair, mypair+2);
+ VectorIterator<MyPair> it(vec);
+ EXPECT_TRUE(it.valid());
+ EXPECT_EQ((*it).number, 3);
+ EXPECT_EQ((*it).str, mypair[0].str);
+ EXPECT_EQ(it->number, 3);
+ EXPECT_EQ(it->str, mypair[0].str);
+ ++it;
+ EXPECT_EQ(it->number, 5);
+ EXPECT_EQ(it->str, mypair[1].str);
+}
+
+
+TEST(VectorIteratorTest, fail) {
+ vector<MyPair> vec(mypair, mypair+2);
+ VectorIterator<MyPair> it(vec);
+ --it;
+ EXPECT_FALSE(it.valid());
+ EXPECT_THROW(*it, IteratorException);
+ EXPECT_THROW(it->number, IteratorException);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorStreamTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorStreamTest.cpp
new file mode 100644
index 00000000000..4d189feac09
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorStreamTest.cpp
@@ -0,0 +1,63 @@
+/*************************************************************************
+** VectorStreamTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <vector>
+#include "VectorStream.hpp"
+
+using std::string;
+using std::vector;
+
+TEST(VectorStreamTest, read1) {
+ const char *str = "abcdefghijklm\0nopqrstuvwxyz";
+ vector<char> vec(str, str+27);
+ VectorInputStream<char> vs(vec);
+ for (unsigned count = 0; vs; count++) {
+ int c = vs.get();
+ if (count < vec.size()) {
+ EXPECT_EQ(c, str[count]);
+ }
+ else {
+ EXPECT_EQ(c, -1);
+ }
+ }
+}
+
+
+TEST(VectorStreamTest, read2) {
+ vector<int> vec;
+ VectorInputStream<int> vs(vec);
+ EXPECT_EQ(vs.get(), -1);
+}
+
+
+TEST(VectorStreamTest, read3) {
+ vector<int> vec;
+ vec.push_back(-2);
+ vec.push_back(-1);
+ vec.push_back(0);
+ vec.push_back(1);
+ VectorInputStream<int> vs(vec);
+ EXPECT_EQ(vs.get(), 254);
+ EXPECT_EQ(vs.get(), 255);
+ EXPECT_EQ(vs.get(), 0);
+ EXPECT_EQ(vs.get(), 1);
+ EXPECT_EQ(vs.get(), -1);
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLNodeTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLNodeTest.cpp
new file mode 100644
index 00000000000..36d9519f905
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLNodeTest.cpp
@@ -0,0 +1,300 @@
+/*************************************************************************
+** XMLNodeTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include <algorithm>
+#include <cstring>
+#include "XMLNode.hpp"
+
+using namespace std;
+
+
+TEST(XMLNodeTest, appendElement) {
+ XMLElementNode root("root");
+ root.append(new XMLElementNode("child1"));
+ root.append(new XMLElementNode("child2"));
+ EXPECT_EQ(root.children().size(), 2);
+ EXPECT_FALSE(root.empty());
+ XMLElementNode *child1 = dynamic_cast<XMLElementNode*>(root.children().front().get());
+ XMLElementNode *child2 = dynamic_cast<XMLElementNode*>(root.children().back().get());
+ EXPECT_TRUE(child1 != 0);
+ EXPECT_TRUE(child2 != 0);
+ EXPECT_EQ(string(child1->getName()), "child1");
+ EXPECT_EQ(string(child2->getName()), "child2");
+ root.clear();
+ EXPECT_TRUE(root.empty());
+}
+
+
+TEST(XMLNodeTest, prependElement) {
+ XMLElementNode root("root");
+ root.prepend(new XMLElementNode("child1"));
+ root.prepend(new XMLElementNode("child2"));
+ EXPECT_EQ(root.children().size(), 2);
+ XMLElementNode *child1 = dynamic_cast<XMLElementNode*>(root.children().front().get());
+ XMLElementNode *child2 = dynamic_cast<XMLElementNode*>(root.children().back().get());
+ EXPECT_TRUE(child1 != 0);
+ EXPECT_TRUE(child2 != 0);
+ EXPECT_EQ(string(child1->getName()), "child2");
+ EXPECT_EQ(string(child2->getName()), "child1");
+}
+
+
+TEST(XMLNodeTest, appendText) {
+ XMLElementNode root("root");
+ root.append(new XMLTextNode("first string"));
+ EXPECT_EQ(root.children().size(), 1);
+ XMLTextNode *lastChild = dynamic_cast<XMLTextNode*>(root.children().back().get());
+ EXPECT_TRUE(lastChild != 0);
+ EXPECT_EQ(lastChild->getText(), "first string");
+
+ root.append(new XMLTextNode(",second string"));
+ EXPECT_EQ(root.children().size(), 1);
+ lastChild = dynamic_cast<XMLTextNode*>(root.children().back().get());
+ EXPECT_TRUE(lastChild != 0);
+ EXPECT_EQ(lastChild->getText(), "first string,second string");
+
+ root.append(",third string");
+ EXPECT_EQ(root.children().size(), 1);
+ lastChild = dynamic_cast<XMLTextNode*>(root.children().back().get());
+ EXPECT_TRUE(lastChild != 0);
+ EXPECT_EQ(lastChild->getText(), "first string,second string,third string");
+
+ root.append(new XMLElementNode("separator"));
+ root.append(",fourth string");
+ lastChild = dynamic_cast<XMLTextNode*>(root.children().back().get());
+ EXPECT_TRUE(lastChild != 0);
+ EXPECT_EQ(lastChild->getText(), ",fourth string");
+
+ root.append(new XMLElementNode("separator"));
+ root.append(new XMLTextNode(",fifth string"));
+ lastChild = dynamic_cast<XMLTextNode*>(root.children().back().get());
+ EXPECT_TRUE(lastChild != 0);
+ EXPECT_EQ(lastChild->getText(), ",fifth string");
+
+ root.clear();
+ EXPECT_TRUE(root.empty());
+}
+
+
+TEST(XMLNodeTest, prependText) {
+ XMLElementNode root("root");
+ root.prepend(new XMLTextNode("first string"));
+ EXPECT_EQ(root.children().size(), 1);
+ XMLTextNode *firstChild = dynamic_cast<XMLTextNode*>(root.children().front().get());
+ EXPECT_TRUE(firstChild != 0);
+ EXPECT_EQ(firstChild->getText(), "first string");
+
+ root.prepend(new XMLTextNode("second string,"));
+ EXPECT_EQ(root.children().size(), 1);
+ firstChild = dynamic_cast<XMLTextNode*>(root.children().front().get());
+ EXPECT_TRUE(firstChild != 0);
+ EXPECT_EQ(firstChild->getText(), "second string,first string");
+
+ root.prepend(new XMLElementNode("separator"));
+ root.prepend(new XMLTextNode("third string,"));
+ firstChild = dynamic_cast<XMLTextNode*>(root.children().front().get());
+ EXPECT_TRUE(firstChild != 0);
+ EXPECT_EQ(firstChild->getText(), "third string,");
+}
+
+
+TEST(XMLNodeTest, attributes) {
+ XMLElementNode root("root");
+ root.addAttribute("string", "text");
+ root.addAttribute("integer", 42);
+ root.addAttribute("double", 42.24);
+ EXPECT_TRUE(root.empty());
+ EXPECT_TRUE(root.hasAttribute("string"));
+ EXPECT_TRUE(root.hasAttribute("integer"));
+ EXPECT_TRUE(root.hasAttribute("double"));
+ EXPECT_FALSE(root.hasAttribute("noname "));
+ EXPECT_EQ(string(root.getAttributeValue("string")), "text");
+ EXPECT_EQ(string(root.getAttributeValue("integer")), "42");
+ EXPECT_EQ(string(root.getAttributeValue("double")), "42.24");
+ EXPECT_TRUE(root.getAttributeValue("none") == 0);
+}
+
+
+TEST(XMLNodeTest, clone) {
+ XMLElementNode root ("root");
+ root.addAttribute("string", "text");
+ root.addAttribute("integer", 42);
+ root.addAttribute("double", 42.24);
+ root.append("text");
+ XMLElementNode *clone = root.clone();
+ EXPECT_EQ(clone->children().size(), 1);
+ EXPECT_EQ(string(clone->getAttributeValue("string")), "text");
+ EXPECT_EQ(string(clone->getAttributeValue("integer")), "42");
+ EXPECT_EQ(string(clone->getAttributeValue("double")), "42.24");
+ delete clone;
+}
+
+
+TEST(XMLNodeTest, insertBefore) {
+ XMLElementNode root("root");
+ XMLElementNode *child1 = new XMLElementNode("child1");
+ XMLElementNode *child2 = new XMLElementNode("child2");
+ root.append(child1);
+ root.append(child2);
+ XMLElementNode *node = new XMLElementNode("node");
+ EXPECT_FALSE(root.insertBefore(child1, node));
+ delete node;
+ EXPECT_EQ(root.children().size(), 2);
+ EXPECT_TRUE(root.insertBefore(new XMLElementNode("child3"), child1));
+ EXPECT_EQ(root.children().size(), 3);
+ XMLElementNode *child = dynamic_cast<XMLElementNode*>(root.children().front().get());
+ EXPECT_EQ(string(child->getName()), "child3");
+ EXPECT_TRUE(root.insertBefore(new XMLElementNode("child4"), child2));
+ const char *names[] = {"child3", "child1", "child4", "child2"};
+ const char **p = names;
+ for (const auto &node : root.children())
+ EXPECT_EQ(dynamic_cast<XMLElementNode*>(node.get())->getName(), *p++);
+}
+
+
+TEST(XMLNodeTest, insertAfter) {
+ XMLElementNode root("root");
+ XMLElementNode *child1 = new XMLElementNode("child1");
+ XMLElementNode *child2 = new XMLElementNode("child2");
+ root.append(child1);
+ root.append(child2);
+ XMLElementNode *node = new XMLElementNode("node");
+ EXPECT_FALSE(root.insertAfter(child1, node));
+ delete node;
+ EXPECT_EQ(root.children().size(), 2);
+ EXPECT_TRUE(root.insertAfter(new XMLElementNode("child3"), child1));
+ EXPECT_TRUE(root.insertAfter(new XMLElementNode("child4"), child2));
+ EXPECT_EQ(root.children().size(), 4);
+ const char *names[] = {"child1", "child3", "child2", "child4"};
+ const char **p = names;
+ for (const auto &node : root.children())
+ EXPECT_EQ(dynamic_cast<XMLElementNode*>(node.get())->getName(), *p++);
+}
+
+
+TEST(XMLNodeTest, getDescendants) {
+ XMLElementNode root("root");
+ XMLElementNode *child1 = new XMLElementNode("child");
+ XMLElementNode *child2 = new XMLElementNode("childX");
+ XMLElementNode *child3 = new XMLElementNode("child");
+ XMLElementNode *child4 = new XMLElementNode("child");
+ root.append(child1);
+ child1->addAttribute("attr", "value");
+ child1->append(child2);
+ child2->addAttribute("attr", "value");
+ child2->append(child3);
+ child3->addAttribute("attr", "value");
+ child3->append("text");
+ root.append(child4);
+ vector<XMLElementNode*> elements;
+ root.getDescendants("child", 0, elements);
+ EXPECT_EQ(elements.size(), 3);
+ {
+ XMLElementNode *nodes[] = {child1, child3, child4};
+ XMLElementNode **p = nodes;
+ for (const XMLElementNode *elem : elements)
+ EXPECT_EQ(elem, *p++);
+ }{
+ elements.clear();
+ root.getDescendants("child", "attr", elements);
+ EXPECT_EQ(elements.size(), 2);
+ XMLElementNode *nodes[] = {child1, child3};
+ XMLElementNode **p = nodes;
+ for (const XMLElementNode *elem : elements)
+ EXPECT_EQ(elem, *p++);
+ }{
+ elements.clear();
+ root.getDescendants(0, "attr", elements);
+ EXPECT_EQ(elements.size(), 3);
+ XMLElementNode *nodes[] = {child1, child2, child3};
+ XMLElementNode **p = nodes;
+ for (const XMLElementNode *elem : elements)
+ EXPECT_EQ(elem, *p++);
+ }
+}
+
+
+TEST(XMLNodeTest, getFirstDescendant) {
+ XMLElementNode root("root");
+ XMLElementNode *child1 = new XMLElementNode("child");
+ XMLElementNode *child2 = new XMLElementNode("childX");
+ XMLElementNode *child3 = new XMLElementNode("child");
+ XMLElementNode *child4 = new XMLElementNode("child");
+ root.append(child1);
+ child1->addAttribute("attr", "valueX");
+ child1->append(child2);
+ child2->addAttribute("attr", "value");
+ child2->append(child3);
+ child3->addAttribute("attrX", "value");
+ child3->append("text");
+ root.append(child4);
+ EXPECT_EQ(root.getFirstDescendant("child", 0, 0), child1);
+ EXPECT_EQ(root.getFirstDescendant("child", "attr", 0), child1);
+ EXPECT_EQ(root.getFirstDescendant("child", "attrX", 0), child3);
+ EXPECT_EQ(root.getFirstDescendant("child", "attrX", "value"), child3);
+ EXPECT_EQ(root.getFirstDescendant(0, "attrX", "value"), child3);
+ EXPECT_EQ(root.getFirstDescendant(0, "attrX", 0), child3);
+ EXPECT_TRUE(root.getFirstDescendant("child", "attr", "value") == 0);
+}
+
+
+TEST(XMLNodeTest, write) {
+ XMLElementNode root("root");
+ XMLElementNode *child1 = new XMLElementNode("child");
+ XMLElementNode *child2 = new XMLElementNode("childX");
+ XMLElementNode *child3 = new XMLElementNode("child");
+ XMLElementNode *child4 = new XMLElementNode("child");
+ root.append(child1);
+ child1->addAttribute("attr", "valueX");
+ child1->append(child2);
+ child2->addAttribute("attr", "value");
+ child2->append(child3);
+ child3->addAttribute("attrX", "value");
+ child3->append("text");
+ root.append(child4);
+ ostringstream oss;
+ root.write(oss);
+ string str = oss.str();
+ str.erase(remove(str.begin(), str.end(), '\n'), str.end());
+ EXPECT_EQ(str, "<root><child attr='valueX'><childX attr='value'><child attrX='value'>text</child></childX></child><child/></root>");
+}
+
+
+TEST(XMLNodeTest, cdata) {
+ XMLElementNode root("root");
+ XMLCDataNode *cdataNode = new XMLCDataNode("text & <text>");
+ root.append(cdataNode);
+ root.append(new XMLElementNode("element"));
+ root.append(cdataNode->clone());
+ ostringstream oss;
+ root.write(oss);
+ string str = oss.str();
+ str.erase(remove(str.begin(), str.end(), '\n'), str.end());
+ EXPECT_EQ(str, "<root><![CDATA[text & <text>]]><element/><![CDATA[text & <text>]]></root>");
+
+ cdataNode->clear();
+ oss.str("");
+ root.write(oss);
+ str = oss.str();
+ str.erase(remove(str.begin(), str.end(), '\n'), str.end());
+ EXPECT_EQ(str, "<root><element/><![CDATA[text & <text>]]></root>");
+}
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLStringTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLStringTest.cpp
new file mode 100644
index 00000000000..74ce4332115
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLStringTest.cpp
@@ -0,0 +1,65 @@
+/*************************************************************************
+** XMLStringTest.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <gtest/gtest.h>
+#include "XMLString.hpp"
+
+using namespace std;
+
+
+TEST(XMLStringTest, stringcast) {
+ const char *cstr = "special characters: &\"'<>";
+ string str = cstr;
+ EXPECT_EQ(XMLString(cstr, true), string("special characters: &\"'<>"));
+ EXPECT_EQ(XMLString(cstr), string("special characters: &amp;&quot;&apos;&lt;>"));
+ EXPECT_EQ(XMLString(str, true), string("special characters: &\"'<>"));
+ EXPECT_EQ(XMLString(str), string("special characters: &amp;&quot;&apos;&lt;>"));
+}
+
+
+TEST(XMLStringTest, intcast) {
+ EXPECT_EQ(XMLString(65, true), string("65"));
+ EXPECT_EQ(XMLString(65, false), string("A"));
+ EXPECT_EQ(XMLString(1000, true), string("1000"));
+ EXPECT_EQ(XMLString(1000, false), string("\xCF\xA8")); // UTF-8
+}
+
+
+TEST(XMLStringTest, doublecast) {
+ EXPECT_EQ(XMLString(1.2345), string("1.2345"));
+ XMLString::DECIMAL_PLACES = 3;
+ EXPECT_EQ(XMLString(1.2345), string("1.235"));
+ XMLString::DECIMAL_PLACES = 2;
+ EXPECT_EQ(XMLString(1.2345), string("1.23"));
+ XMLString::DECIMAL_PLACES = 1;
+ EXPECT_EQ(XMLString(1.2345), string("1.2"));
+ XMLString::DECIMAL_PLACES = 0;
+ EXPECT_EQ(XMLString(1.2345), string("1.2345"));
+
+ EXPECT_EQ(XMLString(-1.2345), string("-1.2345"));
+ XMLString::DECIMAL_PLACES = 3;
+ EXPECT_EQ(XMLString(-1.2345), string("-1.235"));
+ XMLString::DECIMAL_PLACES = 2;
+ EXPECT_EQ(XMLString(-1.2345), string("-1.23"));
+ XMLString::DECIMAL_PLACES = 1;
+ EXPECT_EQ(XMLString(-1.2345), string("-1.2"));
+ XMLString::DECIMAL_PLACES = 0;
+ EXPECT_EQ(XMLString(-1.2345), string("-1.2345"));
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/check-conv b/Build/source/texk/dvisvgm/dvisvgm-src/tests/check-conv
new file mode 100755
index 00000000000..d1e1a445848
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/check-conv
@@ -0,0 +1,50 @@
+#!/bin/bash
+# This file is part of the dvisvgm package and published under the
+# terms of the GNU General Public License version 3 or later.
+# See file COPYING for further details.
+# Copyright (C) 2009-2017 Martin Gieseking <martin.gieseking@uos.de>
+
+
+files=(sample frktest)
+state=0
+
+BLUE="\E[0;34m"
+GREEN="\E[0;32m"
+RED="\E[0;31m"
+COLOR_OFF="\E[0m"
+
+if [ \! -e enable-check-conv ]; then
+ echo -e "${BLUE}conversion checks skipped${COLOR_OFF}"
+ exit 0
+fi
+
+for f in ${files[@]}; do
+ for m in "wf" "nf"; do
+ infile=${srcdir}/$f
+ outfile=$f-$m.svg
+ cmpfile=${srcdir}/$f-$m-cmp.svg
+ if [ $m = "wf" ]; then
+ ../src/dvisvgm -v0 -o$outfile $infile
+ else
+ ../src/dvisvgm -v0 -n -o$outfile $infile
+ fi
+ xsltproc --novalid ${srcdir}/normalize.xsl $outfile | xmllint --format - >tmp1.svg
+ xsltproc --novalid ${srcdir}/normalize.xsl $cmpfile | xmllint --format - >tmp2.svg
+ mv tmp1.svg $outfile
+
+ diff $outfile tmp2.svg >$f-$m.diff #>/dev/null
+ if [ $? -ne 0 ]; then
+ echo -en "${RED}FAILED $COLOR_OFF"
+ state=1
+ else
+ echo -en "${GREEN}PASSED $COLOR_OFF"
+ rm $outfile
+ fi
+ echo "converting $f.dvi (mode $m)"
+ if [ \! -s $f-$m.diff ]; then
+ rm $f-$m.diff
+ fi
+ rm tmp2.svg
+ done
+done
+exit $state
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am
new file mode 100644
index 00000000000..ce8e3c2da7d
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am
@@ -0,0 +1,20 @@
+## This file is part of dvisvgm
+## Copyright (C) 2016-2017 Martin Gieseking <martin.gieseking@uos.de>
+##
+## Process this file with automake.
+
+EXTRA_DIST = \
+ cidjmgr0-h.tfm \
+ cmr10.600gf \
+ cmr10.tfm \
+ dvipdfm_test.map \
+ dvips_test.map \
+ frktest.dvi \
+ frktest-nf-cmp.svg \
+ frktest-wf-cmp.svg \
+ sample.dvi \
+ sample-nf-cmp.svg \
+ sample.sfd \
+ sample-wf-cmp.svg \
+ ot1.cmap
+
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in
new file mode 100644
index 00000000000..0d3ef401063
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in
@@ -0,0 +1,448 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = tests/data
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GCOV = @GCOV@
+GENHTML = @GENHTML@
+GREP = @GREP@
+HAVE_CXX11 = @HAVE_CXX11@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCOV = @LCOV@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ZLIB_CFLAGS = @ZLIB_CFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ cidjmgr0-h.tfm \
+ cmr10.600gf \
+ cmr10.tfm \
+ dvipdfm_test.map \
+ dvips_test.map \
+ frktest.dvi \
+ frktest-nf-cmp.svg \
+ frktest-wf-cmp.svg \
+ sample.dvi \
+ sample-nf-cmp.svg \
+ sample.sfd \
+ sample-wf-cmp.svg \
+ ot1.cmap
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/data/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/data/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cidjmgr0-h.tfm b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cidjmgr0-h.tfm
new file mode 100644
index 00000000000..a5d95813590
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cidjmgr0-h.tfm
Binary files differ
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.600gf b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.600gf
new file mode 100644
index 00000000000..6dca421e21c
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.600gf
Binary files differ
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.tfm b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.tfm
new file mode 100644
index 00000000000..6594c9c4a7f
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.tfm
Binary files differ
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvipdfm_test.map b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvipdfm_test.map
new file mode 100644
index 00000000000..6e34d5f8f90
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvipdfm_test.map
@@ -0,0 +1,1010 @@
+% /var/lib/texmf/fonts/map/dvipdfm/updmap/dvipdfm_dl14.map: maintained by the script updmap.
+% Don't change this file directly. Edit texmf/web2c/updmap.cfg
+% and run updmap to recreate this file.
+% A log of the updmap run that has created this file is available here:
+% /var/lib/texmf/web2c/updmap.log
+bchbc8a
+bchbi8r 8r bchbi8a
+bchbi8v t5 bchbi8v
+bchbo8r 8r bchb8a -s .167
+bchbo8v t5 bchb8v -s 0.194
+bchr8r 8r bchr8a
+bchr8v t5 bchr8v
+bchrc8a
+bchri8r 8r bchri8a
+bchri8v t5 bchri8v
+bchro8r 8r bchr8a -s .167
+bchro8v t5 bchr8v -s 0.194
+cmb10 -r
+cmbsy10o default cmbsy10 -s .167 -r
+cmbsy10 -r
+cmbsy5 -r
+cmbsy6 default cmbsy7 -r
+cmbsy7 -r
+cmbsy8 default cmbsy7 -r
+cmbsy9 default cmbsy10 -r
+cmbx10 -r
+cmbx12 -r
+cmbx5 -r
+cmbx6 -r
+cmbx7 -r
+cmbx8 -r
+cmbx9 -r
+cmbxi10f default cmbxti10 -s -0.25 -r
+cmbxsl10 -r
+cmbxti10 -r
+cmbxti12 default cmbxti10 -r
+cmbxti7 default cmbxti10 -r
+cmcb10 -r
+cmcbx10 -r
+cmcbx12 -r
+cmcbx5 -r
+cmcbx6 -r
+cmcbx7 -r
+cmcbx8 -r
+cmcbx9 -r
+cmcbxsl10 default cmcbxsl1 -r
+cmcbxti10 default cmcbxti1 -r
+cmccsc10 -r
+cmccsc8 -r
+cmccsc9 -r
+cmcinch default cmcinch7 -r
+cmcitt10 -r
+cmcsc10 -r
+cmcsc8 default cmcsc10 -r
+cmcsc9 default cmcsc10 -r
+cmcsl10 -r
+cmcsl12 -r
+cmcsl8 -r
+cmcsl9 -r
+cmcsltt10 default cmcsltt1 -r
+cmcss10 -r
+cmcss12 -r
+cmcss17 -r
+cmcss8 -r
+cmcss9 -r
+cmcssbx10 default cmcssbx1 -r
+cmcssdc10 default cmcssdc1 -r
+cmcssi10 -r
+cmcssi12 -r
+cmcssi17 -r
+cmcssi8 -r
+cmcssi9 -r
+cmcssq8 -r
+cmcssqi8 -r
+cmcti10 -r
+cmcti12 -r
+cmcti7 -r
+cmcti8 -r
+cmcti9 -r
+cmctt10 -r
+cmctt12 -r
+cmctt8 -r
+cmctt9 -r
+cmcu10 -r
+cmcyr10 -r
+cmcyr12 -r
+cmcyr17 -r
+cmcyr5 -r
+cmcyr6 -r
+cmcyr7 -r
+cmcyr8 -r
+cmcyr9 -r
+cmdunh10 -r
+cmex10 -r
+cmex7 default fmex7
+cmex8 default fmex8
+cmex9 default fmex9
+cmff10 -r
+cmfi10 -r
+cmfib8 -r
+cminch -r
+cmitt10 -r
+cmitt12 default cmitt10 -r
+cmitt9 default cmitt10 -r
+cmmi10o default cmmi10 -s .167 -r
+cmmi10 -r
+cmmi12 -r
+cmmi5 -r
+cmmi6 -r
+cmmi7 -r
+cmmi8 -r
+cmmi9 -r
+cmmib10o default cmmib10 -s .167 -r
+cmmib10 -r
+cmmib5 -r
+cmmib6 default cmmib7 -r
+cmmib7 -r
+cmmib8 default cmmib7 -r
+cmmib9 default cmmib10 -r
+cmr10 -r
+cmr12 -r
+cmr17 -r
+cmr5 -r
+cmr6 -r
+cmr7 -r
+cmr8 -r
+cmr9 -r
+cmsl10 -r
+cmsl12 -r
+cmsl6 default cmsl8 -r
+cmsl8 -r
+cmsl9 -r
+cmsltt10 -r
+cmsltt9 default cmsltt10 -r
+cmss10 -r
+cmss12 -r
+cmss17 -r
+cmss8 -r
+cmss9 -r
+cmssbx10 -r
+cmssbxo10 default cmssbx10 -s .212 -r
+cmssdc10 -r
+cmssi10 -r
+cmssi12 -r
+cmssi17 -r
+cmssi8 -r
+cmssi9 -r
+cmssq8 -r
+cmssqi8 -r
+cmsy10o default cmsy10 -s .167 -r
+cmsy10 -r
+cmsy5 -r
+cmsy6 -r
+cmsy7 -r
+cmsy8 -r
+cmsy9 -r
+cmtcsc10 -r
+cmtex10 -r
+cmtex8 -r
+cmtex9 -r
+cmti10 -r
+cmti12 -r
+cmti7 -r
+cmti8 -r
+cmti9 -r
+cmtt10 -r
+cmtt12 -r
+cmtt8 -r
+cmtt9 -r
+cmu10 -r
+cmvtt10o default cmvtt10 -s .167 -r
+cmvtt10 -r
+comic8b 8b ComicSansMS8b
+comicbd8b 8b ComicSansMSBold8b
+comicbdo8b 8b ComicSansMSBoldItalic8b
+comico8b 8b ComicSansMSItalic8b
+csb10
+csbx10
+csbx12
+csbx5
+csbx6
+csbx7
+csbx8
+csbx9
+csbxsl10
+csbxti10
+cscsc10
+csdunh10
+csff10
+csfi10
+csfib8
+csinch
+csitt10
+csr10
+csr12
+csr17
+csr5
+csr6
+csr7
+csr8
+csr9
+cssl10
+cssl12
+cssl8
+cssl9
+cssltt10
+csss10
+csss12
+csss17
+csss8
+csss9
+csssbx10
+csssdc10
+csssi10
+csssi12
+csssi17
+csssi8
+csssi9
+csssq8
+csssqi8
+cstcsc10
+csti10
+csti12
+csti7
+csti8
+csti9
+cstt10
+cstt12
+cstt8
+cstt9
+csu10
+csvtt10
+dsrom10
+dsrom12
+dsrom8
+dsss10
+dsss12
+dsss8
+euex10 -r
+euex7 default euex10 -r
+euex8 default euex10 -r
+euex9 default euex10 -r
+eufb10 -r
+eufb5 -r
+eufb6 default eufb7 -r
+eufb7 -r
+eufb8 default eufb7 -r
+eufb9 default eufb10 -r
+eufm10 -r
+eufm5 -r
+eufm6 default eufm7 -r
+eufm7 -r
+eufm8 default eufm7 -r
+eufm9 default eufm10 -r
+eurb10 -r
+eurb5 -r
+eurb6 default eurb7 -r
+eurb7 -r
+eurb8 default eurb7 -r
+eurb9 default eurb10 -r
+eurm10 -r
+eurm5 -r
+eurm6 default eurm7 -r
+eurm7 -r
+eurm8 default eurm7 -r
+eurm9 default eurm10 -r
+eusb10 -r
+eusb5 -r
+eusb6 default eusb7 -r
+eusb7 -r
+eusb8 default eusb7 -r
+eusb9 default eusb10 -r
+eusm10 -r
+eusm5 -r
+eusm6 default eusm7 -r
+eusm7 -r
+eusm8 default eusm7 -r
+eusm9 default eusm10 -r
+ex-anttb antt-ex anttb
+ex-anttcb antt-ex anttcb
+ex-anttcl antt-ex anttcl
+ex-anttcm antt-ex anttcm
+ex-anttcr antt-ex anttcr
+ex-anttl antt-ex anttl
+ex-anttm antt-ex anttm
+ex-anttr antt-ex anttr
+exp-anttb antt-exp anttb
+exp-anttbi antt-exp anttbi
+exp-anttcb antt-exp anttcb
+exp-anttcbi antt-exp anttcbi
+exp-anttcl antt-exp anttcl
+exp-anttcli antt-exp anttcli
+exp-anttcm antt-exp anttcm
+exp-anttcmi antt-exp anttcmi
+exp-anttcr antt-exp anttcr
+exp-anttcri antt-exp anttcri
+exp-anttl antt-exp anttl
+exp-anttli antt-exp anttli
+exp-anttm antt-exp anttm
+exp-anttmi antt-exp anttmi
+exp-anttr antt-exp anttr
+exp-anttri antt-exp anttri
+favb8v t5 ArevSans-Bold-T5
+favbi8v t5 ArevSans-BoldOblique-T5
+favr8v t5 ArevSans-Roman-T5
+favri8v t5 ArevSans-Oblique-T5
+feybl10
+feybo10
+feybr10
+feyml10
+feymo10
+feymr10
+fplmb
+fplmbb
+fplmbi
+fplmr
+fplmri
+fplrc8v t5 fplrc8v
+Inuit
+Inuitb
+Inuitbo
+Inuito
+jthb8v t5d Tahoma-Bold
+jthr8v t5d Tahoma
+jvnb8v t5d Verdana-Bold
+jvnbi8v t5d Verdana-BoldItalic
+jvnr8v t5d Verdana
+jvnri8v t5d Verdana-Italic
+l7x-lmb10 lm-l7x lmb10
+l7x-lmbo10 lm-l7x lmbo10
+l7x-lmbx10 lm-l7x lmbx10
+l7x-lmbx12 lm-l7x lmbx12
+l7x-lmbx5 lm-l7x lmbx5
+l7x-lmbx6 lm-l7x lmbx6
+l7x-lmbx7 lm-l7x lmbx7
+l7x-lmbx8 lm-l7x lmbx8
+l7x-lmbx9 lm-l7x lmbx9
+l7x-lmbxi10 lm-l7x lmbxi10
+l7x-lmbxo10 lm-l7x lmbxo10
+l7x-lmcsc10 lm-l7x lmcsc10
+l7x-lmcsco10 lm-l7x lmcsco10
+l7x-lmdunh10 lm-l7x lmdunh10
+l7x-lmduno10 lm-l7x lmduno10
+l7x-lmr10 lm-l7x lmr10
+l7x-lmr12 lm-l7x lmr12
+l7x-lmr17 lm-l7x lmr17
+l7x-lmr5 lm-l7x lmr5
+l7x-lmr6 lm-l7x lmr6
+l7x-lmr7 lm-l7x lmr7
+l7x-lmr8 lm-l7x lmr8
+l7x-lmr9 lm-l7x lmr9
+l7x-lmri10 lm-l7x lmri10
+l7x-lmri12 lm-l7x lmri12
+l7x-lmri7 lm-l7x lmri7
+l7x-lmri8 lm-l7x lmri8
+l7x-lmri9 lm-l7x lmri9
+l7x-lmro10 lm-l7x lmro10
+l7x-lmro12 lm-l7x lmro12
+l7x-lmro17 lm-l7x lmro17
+l7x-lmro8 lm-l7x lmro8
+l7x-lmro9 lm-l7x lmro9
+l7x-lmss10 lm-l7x lmss10
+l7x-lmss12 lm-l7x lmss12
+l7x-lmss17 lm-l7x lmss17
+l7x-lmss8 lm-l7x lmss8
+l7x-lmss9 lm-l7x lmss9
+l7x-lmssbo10 lm-l7x lmssbo10
+l7x-lmssbx10 lm-l7x lmssbx10
+l7x-lmssdc10 lm-l7x lmssdc10
+l7x-lmssdo10 lm-l7x lmssdo10
+l7x-lmsso10 lm-l7x lmsso10
+l7x-lmsso12 lm-l7x lmsso12
+l7x-lmsso17 lm-l7x lmsso17
+l7x-lmsso8 lm-l7x lmsso8
+l7x-lmsso9 lm-l7x lmsso9
+l7x-lmssq8 lm-l7x lmssq8
+l7x-lmssqbo8 lm-l7x lmssqbo8
+l7x-lmssqbx8 lm-l7x lmssqbx8
+l7x-lmssqo8 lm-l7x lmssqo8
+l7x-lmtcsc10 lm-l7x lmtcsc10
+l7x-lmtcso10 lm-l7x lmtcso10
+l7x-lmtk10 lm-l7x lmtk10
+l7x-lmtko10 lm-l7x lmtko10
+l7x-lmtl10 lm-l7x lmtl10
+l7x-lmtlc10 lm-l7x lmtlc10
+l7x-lmtlco10 lm-l7x lmtlco10
+l7x-lmtlo10 lm-l7x lmtlo10
+l7x-lmtt10 lm-l7x lmtt10
+l7x-lmtt12 lm-l7x lmtt12
+l7x-lmtt8 lm-l7x lmtt8
+l7x-lmtt9 lm-l7x lmtt9
+l7x-lmtti10 lm-l7x lmtti10
+l7x-lmtto10 lm-l7x lmtto10
+l7x-lmu10 lm-l7x lmu10
+l7x-lmvtk10 lm-l7x lmvtk10
+l7x-lmvtko10 lm-l7x lmvtko10
+l7x-lmvtl10 lm-l7x lmvtl10
+l7x-lmvtlo10 lm-l7x lmvtlo10
+l7x-lmvtt10 lm-l7x lmvtt10
+l7x-lmvtto10 lm-l7x lmvtto10
+l7x-qbkbi q-l7x qbkbi
+l7x-qbkbi-sc q-l7x-sc qbkbi
+l7x-qbkb q-l7x qbkb
+l7x-qbkb-sc q-l7x-sc qbkb
+l7x-qbkri q-l7x qbkri
+l7x-qbkri-sc q-l7x-sc qbkri
+l7x-qbkr q-l7x qbkr
+l7x-qbkr-sc q-l7x-sc qbkr
+l7x-qcsbi q-l7x qcsbi
+l7x-qcsbi-sc q-l7x-sc qcsbi
+l7x-qcsb q-l7x qcsb
+l7x-qcsb-sc q-l7x-sc qcsb
+l7x-qcsri q-l7x qcsri
+l7x-qcsri-sc q-l7x-sc qcsri
+l7x-qcsr q-l7x qcsr
+l7x-qcsr-sc q-l7x-sc qcsr
+l7x-qplbi q-l7x qplbi
+l7x-qplbi-sc q-l7x-sc qplbi
+l7x-qplb q-l7x qplb
+l7x-qplb-sc q-l7x-sc qplb
+l7x-qplri q-l7x qplri
+l7x-qplri-sc q-l7x-sc qplri
+l7x-qplr q-l7x qplr
+l7x-qplr-sc q-l7x-sc qplr
+l7x-qtmbi q-l7x qtmbi
+l7x-qtmbi-sc q-l7x-sc qtmbi
+l7x-qtmb q-l7x qtmb
+l7x-qtmb-sc q-l7x-sc qtmb
+l7x-qtmri q-l7x qtmri
+l7x-qtmri-sc q-l7x-sc qtmri
+l7x-qtmr q-l7x qtmr
+l7x-qtmr-sc q-l7x-sc qtmr
+lasy10 -r
+lasy5 -r
+lasy6 -r
+lasy7 -r
+lasy8 -r
+lasy9 -r
+lasyb10 -r
+lcircle10 default lcircle1 -r
+lcirclew10 default lcirclew -r
+lcmss8 -r
+lcmssb8 -r
+lcmssi8 -r
+line10 -r
+linew10 -r
+lmbsy10 lm-mathsy lmbsy10
+lmbsy5 lm-mathsy lmbsy5
+lmbsy7 lm-mathsy lmbsy7
+lmex10 lm-mathex lmex10
+lmmi10 lm-mathit lmmi10
+lmmi12 lm-mathit lmmi12
+lmmi5 lm-mathit lmmi5
+lmmi6 lm-mathit lmmi6
+lmmi7 lm-mathit lmmi7
+lmmi8 lm-mathit lmmi8
+lmmi9 lm-mathit lmmi9
+lmmib10 lm-mathit lmmib10
+lmmib5 lm-mathit lmmib5
+lmmib7 lm-mathit lmmib7
+lmsy10 lm-mathsy lmsy10
+lmsy5 lm-mathsy lmsy5
+lmsy6 lm-mathsy lmsy6
+lmsy7 lm-mathsy lmsy7
+lmsy8 lm-mathsy lmsy8
+lmsy9 lm-mathsy lmsy9
+logo10
+logo8
+logo9
+logobf10
+logod10
+logosl10
+logosl8
+logosl9
+lprb8v t5uni PalatinoLinotype-Bold
+lprbi8v t5uni PalatinoLinotype-BoldItalic
+lprr8v t5uni PalatinoLinotype-Roman
+lprri8v t5uni PalatinoLinotype-Italic
+ma1b8v t5d Arial-BoldMT
+ma1bi8v t5d Arial-BoldItalicMT
+ma1r8v t5d ArialMT
+ma1ri8v t5d Arial-ItalicMT
+manfnt
+mcrb8v t5d CourierNewPS-BoldMT
+mcrbi8v t5d CourierNewPS-BoldItalicMT
+mcrr8v t5d CourierNewPSMT
+mcrri8v t5d CourierNewPS-ItalicMT
+mi-anttbi antt-mi anttbi
+mi-anttcbi antt-mi anttcbi
+mi-anttcli antt-mi anttcli
+mi-anttcmi antt-mi anttcmi
+mi-anttcri antt-mi anttcri
+mi-anttli antt-mi anttli
+mi-anttmi antt-mi anttmi
+mi-anttri antt-mi anttri
+mnsb8v t5d TimesNewRomanPS-BoldMT
+mnsbi8v t5d TimesNewRomanPS-BoldItalicMT
+mnsr8v t5d TimesNewRomanPSMT
+mnsri8v t5d TimesNewRomanPS-ItalicMT
+msam10 -r
+msam5 -r
+msam6 default msam7 -r
+msam7 -r
+msam8 default msam7 -r
+msam9 default msam10 -r
+msbm10
+msbm5
+msbm6 default msbm7
+msbm7
+msbm8 default msbm7
+msbm9 default msbm10
+mtex texmext blex
+mtsy default blsy
+MyriadPro-Bold-7m my-lf-oml MyriadPro-Bold
+MyriadPro-Bold-7t my-lf-ot1 MyriadPro-Bold
+MyriadPro-Bold-8c my-lf-ts1 MyriadPro-Bold
+MyriadPro-Bold-8t my-lf-t1 MyriadPro-Bold
+MyriadPro-BoldIt-7m my-lf-oml MyriadPro-BoldIt
+MyriadPro-BoldIt-7t my-lf-ot1 MyriadPro-BoldIt
+MyriadPro-BoldIt-8c my-lf-ts1 MyriadPro-BoldIt
+MyriadPro-BoldIt-8t my-lf-t1 MyriadPro-BoldIt
+MyriadPro-BoldIt-k my-lf-lgr MyriadPro-BoldIt
+MyriadPro-BoldIt-OSF-7m my-osf-oml MyriadPro-BoldIt
+MyriadPro-BoldIt-OSF-7t my-osf-ot1 MyriadPro-BoldIt
+MyriadPro-BoldIt-OSF-8c my-osf-ts1 MyriadPro-BoldIt
+MyriadPro-BoldIt-OSF-8t my-osf-t1 MyriadPro-BoldIt
+MyriadPro-Bold-k my-lf-lgr MyriadPro-Bold
+MyriadPro-Bold-OSF-7m my-osf-oml MyriadPro-Bold
+MyriadPro-Bold-OSF-7t my-osf-ot1 MyriadPro-Bold
+MyriadPro-Bold-OSF-8c my-osf-ts1 MyriadPro-Bold
+MyriadPro-Bold-OSF-8t my-osf-t1 MyriadPro-Bold
+MyriadPro-It-7m my-lf-oml MyriadPro-It
+MyriadPro-It-7t my-lf-ot1 MyriadPro-It
+MyriadPro-It-8c my-lf-ts1 MyriadPro-It
+MyriadPro-It-8t my-lf-t1 MyriadPro-It
+MyriadPro-It-k my-lf-lgr MyriadPro-It
+MyriadPro-It-OSF-7m my-osf-oml MyriadPro-It
+MyriadPro-It-OSF-7t my-osf-ot1 MyriadPro-It
+MyriadPro-It-OSF-8c my-osf-ts1 MyriadPro-It
+MyriadPro-It-OSF-8t my-osf-t1 MyriadPro-It
+MyriadPro-Regular-7m my-lf-oml MyriadPro-Regular
+MyriadPro-Regular-7t my-lf-ot1 MyriadPro-Regular
+MyriadPro-Regular-8c my-lf-ts1 MyriadPro-Regular
+MyriadPro-Regular-8t my-lf-t1 MyriadPro-Regular
+MyriadPro-Regular-k my-lf-lgr MyriadPro-Regular
+MyriadPro-Regular-OSF-7m my-osf-oml MyriadPro-Regular
+MyriadPro-Regular-OSF-7t my-osf-ot1 MyriadPro-Regular
+MyriadPro-Regular-OSF-8c my-osf-ts1 MyriadPro-Regular
+MyriadPro-Regular-OSF-8t my-osf-t1 MyriadPro-Regular
+omding
+omsea1
+omsea1b
+omsea2
+omsea2b
+omsea3
+omsea3b
+omseco
+omsecob
+omsecobi
+omsecoi
+omsecx
+omsecxb
+omsecxbi
+omsecxi
+omsecy
+omsecyb
+omsecybi
+omsecyi
+omsegr
+omsegrb
+omsegrbi
+omsegri
+omseha
+omsehab
+omsehe
+omseheb
+omseip
+omseipb
+omseipbi
+omseipi
+omsela
+omselab
+omselabi
+omselai
+omseti
+omsetib
+pagd8r 8r uagd8a
+pagdo8r 8r uagdo8a
+pagk8r 8r uagk8a
+pagko8r 8r uagko8a
+pbkd8r 8r ubkd8a
+pbkdi8r 8r ubkdi8a
+pbkdo8r 8r ubkd8a -s .167
+pbkl8r 8r ubkl8a
+pbkli8r 8r ubkli8a
+pbklo8r 8r ubkl8a -s .167
+pbsi8r 8r BrushScriptX-Italic
+pccsc10
+pcmi10
+pcr10
+pcr5
+pcr6
+pcr7
+pcr8
+pcr9
+pcrb8r 8r ucrb8a
+pcrbo8r 8r ucrbo8a
+pcrr8r 8r ucrr8a
+pcrr8rn 8r ucrr8a -e .85
+pcrro8r 8r ucrro8a
+pcsl10
+pcslc9
+pcti10
+phvb8r 8r uhvb8a
+phvb8rn 8r uhvb8ac
+phvbo8r 8r uhvbo8a
+phvbo8rn 8r uhvbo8ac
+phvr8r 8r uhvr8a
+phvr8rn 8r uhvr8ac
+phvro8r 8r uhvro8a
+phvro8rn 8r uhvro8ac
+plb10 plrm plb10
+plbsy10 plms plbsy10
+plbx10 plrm plbx10
+plbx12 plrm plbx12
+plbx5 plrm plbx5
+plbx6 plrm plbx6
+plbx7 plrm plbx7
+plbx8 plrm plbx8
+plbx9 plrm plbx9
+plbxsl10 plrm plbxsl10
+plbxti10 plit plbxti10
+plcsc10 plsc plcsc10
+pldunh10 plrm pldunh10
+plex10 plme plex10
+plex9 plme plex9
+plff10 plrm plff10
+plfi10 plit plfi10
+plfib8 plrm plfib8
+plinch plin plinch
+plitt10 plitt plitt10
+plmi10 plmi plmi10
+plmi12 plmi plmi12
+plmi5 plmi plmi5
+plmi6 plmi plmi6
+plmi7 plmi plmi7
+plmi8 plmi plmi8
+plmi9 plmi plmi9
+plmib10 plmi plmib10
+plr10 plrm plr10
+plr12 plrm plr12
+plr17 plrm plr17
+plr5 plsc plr5
+plr6 plrm plr6
+plr7 plrm plr7
+plr8 plrm plr8
+plr9 plrm plr9
+plsl10 plrm plsl10
+plsl12 plrm plsl12
+plsl8 plrm plsl8
+plsl9 plrm plsl9
+plsltt10 pltt plsltt10
+plss10 plrm plss10
+plss12 plrm plss12
+plss17 plrm plss17
+plss8 plrm plss8
+plss9 plrm plss9
+plssbi10 plrm plssbi10
+plssbx10 plrm plssbx10
+plssdc10 plrm plssdc10
+plssi10 plrm plssi10
+plssi12 plrm plssi12
+plssi17 plrm plssi17
+plssi8 plrm plssi8
+plssi9 plrm plssi9
+plssq8 plrm plssq8
+plssqi8 plrm plssqi8
+plsy10 plms plsy10
+plsy5 plms plsy5
+plsy6 plms plsy6
+plsy7 plms plsy7
+plsy8 plms plsy8
+plsy9 plms plsy9
+pltcsc10 pltt pltcsc10
+pltex10 plte pltex10
+pltex8 plte pltex8
+pltex9 plte pltex9
+plti10 plit plti10
+plti12 plit plti12
+plti7 plit plti7
+plti8 plit plti8
+plti9 plit plti9
+pltt10 pltt pltt10
+pltt12 pltt pltt12
+pltt8 pltt pltt8
+pltt9 pltt pltt9
+plu10 plit plu10
+plvtt10 plrm plvtt10
+pncb8r 8r uncb8a
+pncbi8r 8r uncbi8a
+pncbo8r 8r uncb8a -s .167
+pncr8r 8r uncr8a
+pncri8r 8r uncri8a
+pncro8r 8r uncr8a -s .167
+pplb8r 8r uplb8a
+pplbi8r 8r uplbi8a
+pplbij8r 8r fplbij8a
+pplbj8r 8r fplbj8a
+pplbo8r 8r uplb8a -s .167
+pplbu8r 8r uplbi8a -s -.1763
+pplr8r 8r uplr8a
+pplr8rn 8r uplr8a -e .82
+pplrc8r 8r fplrc8a
+pplri8r 8r uplri8a
+pplrij8r 8r fplrij8a
+pplro8r 8r uplr8a -s .167
+pplrr8re 8r uplr8a -e 1.2
+pplru8r 8r uplri8a -s -.1763
+psyr default usyr
+psyro default usyr -s .167
+ptmb8r 8r utmb8a
+ptmbi8r 8r utmbi8a
+ptmbo8r 8r utmb8a -s .167
+ptmr8r 8r utmr8a
+ptmr8rn 8r utmr8a -e .82
+ptmri8r 8r utmri8a
+ptmro8r 8r utmr8a -s .167
+ptmrr8re 8r utmr8a -e 1.2
+putb8r 8r putb8a
+putb8v t5 putb8v
+putb8x
+putbi8r 8r putbi8a
+putbi8v t5 putbi8v
+putbo8r 8r putb8a -s .167
+putbo8v t5 putb8v -s 0.194
+putr8r 8r putr8a
+putr8v t5 putr8v
+putr8x
+putri8r 8r putri8a
+putri8v t5 putri8v
+putro8r 8r putr8a -s .167
+putro8v t5 putr8v -s 0.194
+pxbex
+pxbexa
+pxbmia
+pxbsy
+pxbsya
+pxbsyb
+pxbsyc
+pxex
+pxexa
+pxmia
+pxsy
+pxsya
+pxsyb
+pxsyc
+pzcmi8r 8r uzcmi8a
+pzdr default uzdr
+qcrbi qcr qcrbi
+qcrb qcr qcrb
+qcrri qcr qcrri
+qcrr qcr qcrr
+qhvbi qhv qhvbi
+qhvb qhv qhvb
+qhvcbi qhv qhvcbi
+qhvcb qhv qhvcb
+qhvcri qhv qhvcri
+qhvcr qhv qhvcr
+qhvri qhv qhvri
+qhvr qhv qhvr
+qzcmi qzc qzcmi
+stmary10
+stmary5
+stmary6
+stmary7
+stmary8
+stmary9
+sy-anttbz antt-sy anttbi
+sy-anttcbz antt-sy anttcbi
+sy-anttclz antt-sy anttcli
+sy-anttcmz antt-sy anttcmi
+sy-anttcrz antt-sy anttcri
+sy-anttlz antt-sy anttli
+sy-anttmz antt-sy anttmi
+sy-anttrz antt-sy anttri
+sy default usyr
+t1xbtt
+t1xbttsc
+t1xbttsl default t1xbtt -s .167
+t1xtt
+t1xttsc
+t1xttsl default t1xtt -s .167
+tcxbtt
+tcxbttsl default tcxbtt -s .167
+tcxtt
+tcxttsl default tcxtt -s .167
+tmbi108r 8r utmbi8a
+tmbo108r 8r utmb8a -s .167
+tmbu108r 8r utmbi8a -s -.277
+tmrb108r 8r utmb8a
+tmri108r 8r utmri8a
+tmrm108r 8r utmr8a
+tmro108r 8r utmr8a -s .167
+tmui108r 8r utmri8a -s -.277
+txbex
+txbexa
+txbmia
+txbsy
+txbsya
+txbsyb
+txbsyc
+txbtt
+txbtt8v t5 txbtt8v
+txbttsc
+txbttsc8v t5 txbttsc8v
+txbttsl8v t5 txbtt8v -s 0.167
+txbttsl default txbtt -s .167
+txex
+txexa
+txmia
+txsy
+txsya
+txsyb
+txsyc
+txtt
+txtt8v t5 txtt8v
+txttsc
+txttsc8v t5 txttsc8v
+txttsl8v t5 txtt8v -s 0.167
+txttsl default txtt -s .167
+uagd8v t5 uagd8v
+uagdo8v t5 uagdo8v
+uagk8v t5 uagk8v
+uagko8v t5 uagko8v
+ubkd8v t5 ubkd8v
+ubkdi8v t5 ubkdi8v
+ubkdo8v t5 ubkd8v -s 0.277
+ubkl8v t5 ubkl8v
+ubkli8v t5 ubkli8v
+ubklo8v t5 ubkl8v -s 0.277
+ucrb8v t5 ucrb8v
+ucrbo8v t5 ucrbo8v
+ucrr8v t5 ucrr8v
+ucrro8v t5 ucrro8v
+ugqb8v t5 ugqb8v
+ugqbo8v t5 ugqb8v -s 0.194
+uhvb8v t5 uhvb8v
+uhvbo8v t5 uhvbo8v
+uhvr8v t5 uhvr8v
+uhvro8v t5 uhvro8v
+umvs default marvosym
+uncb8v t5 uncb8v
+uncbi8v t5 uncbi8v
+uncbo8v t5 uncb8v -s 0.277
+uncr8v t5 uncr8v
+uncri8v t5 uncri8v
+uncro8v t5 uncr8v -s 0.277
+uplb8v t5 uplb8v
+uplbi8v t5 uplbi8v
+uplbo8v t5 uplb8v -s 0.277
+uplr8v t5 uplr8v
+uplri8v t5 uplri8v
+uplro8v t5 uplr8v -s 0.277
+utmb8v t5 utmb8v
+utmbi8v t5 utmbi8v
+utmbo8v t5 utmb8v -s 0.277
+utmr8v t5 utmr8v
+utmri8v t5 utmri8v
+utmro8v t5 utmr8v -s 0.277
+uzcmi8v t5 uzcmi8v
+vnb10
+vnbx10
+vnbx12
+vnbx5
+vnbx6
+vnbx7
+vnbx8
+vnbx9
+vnbxsl10
+vnbxti10
+vncccsc10 t5 CMConcreteSmallCaps8v
+vnccr10 t5 CMConcrete8v
+vnccsl10 t5 CMConcreteSlanted8v
+vnccti10 t5 CMConcreteItalic8v
+vncmbr10 t5 vncmbr10
+vncmbr17 t5 vncmbr17
+vncmbr8 t5 vncmbr8
+vncmbr9 t5 vncmbr9
+vncmbrbx10 t5 vncmbrbx10
+vncmbrsl10 t5 vncmbrsl10
+vncmbrsl17 t5 vncmbrsl17
+vncmbrsl8 t5 vncmbrsl8
+vncmbrsl9 t5 vncmbrsl9
+vncmsltl10 t5 vncmsltl10
+vncmtl10 t5 vncmtl10
+vncsc10
+vndunh10
+vnff10
+vnfi10
+vnfib8
+vnitt10
+vnr10
+vnr12
+vnr17
+vnr5
+vnr6
+vnr7
+vnr8
+vnr9
+vnsl10
+vnsl12
+vnsl8
+vnsl9
+vnsltt10
+vnss10
+vnss12
+vnss17
+vnss8
+vnss9
+vnssbx10
+vnssdc10
+vnssi10
+vnssi12
+vnssi17
+vnssi8
+vnssi9
+vnssq8
+vnssqi8
+vntcsc10
+vnti10
+vnti12
+vnti7
+vnti8
+vnti9
+vntt10
+vntt12
+vntt8
+vntt9
+vnu10
+vnvtt10
+wasy10
+wasy5
+wasy6
+wasy7
+wasy8
+wasy9
+wasyb10
+wncy-anttb antt-wncy anttb
+wncy-anttbi antt-wncy anttbi
+wncy-anttcb antt-wncy anttcb
+wncy-anttcbi antt-wncy anttcbi
+wncy-anttcl antt-wncy anttcl
+wncy-anttcli antt-wncy anttcli
+wncy-anttcm antt-wncy anttcm
+wncy-anttcmi antt-wncy anttcmi
+wncy-anttcr antt-wncy anttcr
+wncy-anttcri antt-wncy anttcri
+wncy-anttl antt-wncy anttl
+wncy-anttli antt-wncy anttli
+wncy-anttm antt-wncy anttm
+wncy-anttmi antt-wncy anttmi
+wncy-anttr antt-wncy anttr
+wncy-anttri antt-wncy anttri
+wncyb10
+wncyb5 default wncyb10
+wncyb6 default wncyb10
+wncyb7 default wncyb10
+wncyb8 default wncyb10
+wncyb9 default wncyb10
+wncyi10
+wncyi5 default wncyi10
+wncyi6 default wncyi10
+wncyi7 default wncyi10
+wncyi8 default wncyi10
+wncyi9 default wncyi10
+wncyr10
+wncyr5 default wncyr10
+wncyr6 default wncyr10
+wncyr7 default wncyr10
+wncyr8 default wncyr10
+wncyr9 default wncyr10
+wncysc10
+wncyss10
+wncyss8 default wncyss10
+wncyss9 default wncyss10
+xyatip10 -r
+xyatip11 default xyatip10 -e 1.1 -r
+xyatip12 default xyatip10 -e 1.2 -r
+xybsql10 -r
+xybtip10 -r
+xybtip11 default xybtip10 -e 1.1 -r
+xybtip12 default xybtip10 -e 1.2 -r
+xycirc10 -r
+xycmat10 -r
+xycmat11 default xycmat10 -e 1.1 -r
+xycmat12 default xycmat10 -e 1.2 -r
+xycmbt10 -r
+xycmbt11 default xycmbt10 -e 1.1 -r
+xycmbt12 default xycmbt10 -e 1.2 -r
+xydash10 -r
+xyeuat10 -r
+xyeuat11 default xyeuat10 -e 1.1 -r
+xyeuat12 default xyeuat10 -e 1.2 -r
+xyeubt10 -r
+xyeubt11 default xyeubt10 -e 1.1 -r
+xyeubt12 default xyeubt10 -e 1.2 -r
+yfrak
+ygoth
+yswab
+zd default uzdr
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvips_test.map b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvips_test.map
new file mode 100644
index 00000000000..76e2766d590
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvips_test.map
@@ -0,0 +1,363 @@
+% /var/lib/texmf/fonts/map/dvips/updmap/ps2pk.map: maintained by the script updmap.
+% Don't change this file directly. Edit texmf/web2c/updmap.cfg
+% and run updmap to recreate this file.
+% A log of the updmap run that has created this file is available here:
+% /var/lib/texmf/web2c/updmap.log
+antpb AntykwaPoltawskiego-Bold "encantp ReEncodeFont" <antp.enc <antpb.pfb
+antpbi AntykwaPoltawskiego-BoldItalic "encantp ReEncodeFont" <antp.enc <antpbi.pfb
+antpr AntykwaPoltawskiego-Regular "encantp ReEncodeFont" <antp.enc <antpr.pfb
+antpri AntykwaPoltawskiego-Italic "encantp ReEncodeFont" <antp.enc <antpri.pfb
+bchb8r CharterBT-Bold "TeXBase1Encoding ReEncodeFont" <8r.enc <bchb8a.pfb
+bchb8v VnCharterBT-Bold "T5Encoding ReEncodeFont" <t5.enc <bchb8v.pfb
+bchb8y CharterBT-Bold "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <bchb8a.pfb
+bchbc8a CharterBT-BoldSmallCap <bchbc8a.pfb
+bchbi8r CharterBT-BoldItalic "TeXBase1Encoding ReEncodeFont" <8r.enc <bchbi8a.pfb
+bchbi8v VnCharterBT-BoldItalic "T5Encoding ReEncodeFont" <t5.enc <bchbi8v.pfb
+bchbi8y CharterBT-BoldItalic "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <bchbi8a.pfb
+bchbo8r CharterBT-Bold ".167 SlantFont TeXBase1Encoding ReEncodeFont" <8r.enc <bchb8a.pfb
+bchbo8v VnCharterBT-Bold "0.194 SlantFont T5Encoding ReEncodeFont" <t5.enc <bchb8v.pfb
+bchbo8y CharterBT-Bold "0.194 SlantFont TeXnANSIEncoding ReEncodeFont" <texnansi.enc <bchb8a.pfb
+bchr8r CharterBT-Roman "TeXBase1Encoding ReEncodeFont" <8r.enc <bchr8a.pfb
+bchr8v VnBitstreamCharter "T5Encoding ReEncodeFont" <t5.enc <bchr8v.pfb
+bchr8y CharterBT-Roman "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <bchr8a.pfb
+bchrc8a CharterBT-SmallCap <bchrc8a.pfb
+bchri8r CharterBT-Italic "TeXBase1Encoding ReEncodeFont" <8r.enc <bchri8a.pfb
+bchri8v VnCharterBT-Italic "T5Encoding ReEncodeFont" <t5.enc <bchri8v.pfb
+bchri8y CharterBT-Italic "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <bchri8a.pfb
+bchro8r CharterBT-Roman ".167 SlantFont TeXBase1Encoding ReEncodeFont" <8r.enc <bchr8a.pfb
+bchro8v VnBitstreamCharter "0.194 SlantFont T5Encoding ReEncodeFont" <t5.enc <bchr8v.pfb
+bchro8y CharterBT-Roman "0.194 SlantFont TeXnANSIEncoding ReEncodeFont" <texnansi.enc <bchr8a.pfb
+cmb10 CMB10 <cmb10.pfb
+cmbsy10 CMBSY10 <cmbsy10.pfb
+cmbsy10o CMBSY10 ".167 SlantFont" <cmbsy10.pfb
+cmbsy5 CMBSY5 <cmbsy5.pfb
+cmbsy6 CMBSY7 <cmbsy7.pfb
+cmbsy7 CMBSY7 <cmbsy7.pfb
+cmbsy8 CMBSY7 <cmbsy7.pfb
+cmbsy9 CMBSY10 <cmbsy10.pfb
+cmbx10 CMBX10 <cmbx10.pfb
+cmbx12 CMBX12 <cmbx12.pfb
+cmbx5 CMBX5 <cmbx5.pfb
+cmbx6 CMBX6 <cmbx6.pfb
+cmbx7 CMBX7 <cmbx7.pfb
+cmbx8 CMBX8 <cmbx8.pfb
+cmbx9 CMBX9 <cmbx9.pfb
+cmbxi10f CMBXTI10 "-0.25 SlantFont" <cmbxti10.pfb
+cmbxsl10 CMBXSL10 <cmbxsl10.pfb
+cmbxti10 CMBXTI10 <cmbxti10.pfb
+cmbxti12 CMBXTI10 <cmbxti10.pfb
+cmbxti7 CMBXTI10 <cmbxti10.pfb
+cmcb10 cmcb10 <cmcb10.pfb
+cmcbx10 cmcbx10 <cmcbx10.pfb
+cmcbx12 cmcbx12 <cmcbx12.pfb
+cmcbx5 cmcbx5 <cmcbx5.pfb
+cmcbx6 cmcbx6 <cmcbx6.pfb
+cmcbx7 cmcbx7 <cmcbx7.pfb
+cmcbx8 cmcbx8 <cmcbx8.pfb
+cmcbx9 cmcbx9 <cmcbx9.pfb
+cmcbxsl10 cmcbxsl10 <cmcbxsl1.pfb
+cmcbxti10 cmcbxti10 <cmcbxti1.pfb
+cmccsc10 cmccsc10 <cmccsc10.pfb
+cmccsc8 cmccsc8 <cmccsc8.pfb
+cmccsc9 cmccsc9 <cmccsc9.pfb
+cmcinch cmcinch72 <cmcinch7.pfb
+cmcitt10 cmcitt10 <cmcitt10.pfb
+cmcsc10 CMCSC10 <cmcsc10.pfb
+cmcsc8 CMCSC10 <cmcsc10.pfb
+cmcsc9 CMCSC10 <cmcsc10.pfb
+cmcsl10 cmcsl10 <cmcsl10.pfb
+cmcsl12 cmcsl12 <cmcsl12.pfb
+cmcsl8 cmcsl8 <cmcsl8.pfb
+cmcsl9 cmcsl9 <cmcsl9.pfb
+cmcsltt10 cmcsltt10 <cmcsltt1.pfb
+cmcss10 cmcss10 <cmcss10.pfb
+cmcss12 cmcss12 <cmcss12.pfb
+cmcss17 cmcss17 <cmcss17.pfb
+cmcss8 cmcss8 <cmcss8.pfb
+cmcss9 cmcss9 <cmcss9.pfb
+cmcssbx10 cmcssbx10 <cmcssbx1.pfb
+cmcssdc10 cmcssdc10 <cmcssdc1.pfb
+cmcssi10 cmcssi10 <cmcssi10.pfb
+cmcssi12 cmcssi12 <cmcssi12.pfb
+cmcssi17 cmcssi17 <cmcssi17.pfb
+cmcssi8 cmcssi8 <cmcssi8.pfb
+cmcssi9 cmcssi9 <cmcssi9.pfb
+cmcssq8 cmcssq8 <cmcssq8.pfb
+cmcssqi8 cmcssqi8 <cmcssqi8.pfb
+cmcti10 cmcti10 <cmcti10.pfb
+cmcti12 cmcti12 <cmcti12.pfb
+cmcti7 cmcti7 <cmcti7.pfb
+cmcti8 cmcti8 <cmcti8.pfb
+cmcti9 cmcti9 <cmcti9.pfb
+cmctt10 cmctt10 <cmctt10.pfb
+cmctt12 cmctt12 <cmctt12.pfb
+cmctt8 cmctt8 <cmctt8.pfb
+cmctt9 cmctt9 <cmctt9.pfb
+cmcu10 cmcu10 <cmcu10.pfb
+cmcyr10 cmcyr10 <cmcyr10.pfb
+cmcyr12 cmcyr12 <cmcyr12.pfb
+cmcyr17 cmcyr17 <cmcyr17.pfb
+cmcyr5 cmcyr5 <cmcyr5.pfb
+cmcyr6 cmcyr6 <cmcyr6.pfb
+cmcyr7 cmcyr7 <cmcyr7.pfb
+cmcyr8 cmcyr8 <cmcyr8.pfb
+cmcyr9 cmcyr9 <cmcyr9.pfb
+cmdunh10 CMDUNH10 <cmdunh10.pfb
+cmex10 CMEX10 <cmex10.pfb
+cmex7 TeX-cmex7 <fmex7.pfb
+cmex8 TeX-cmex8 <fmex8.pfb
+cmex9 TeX-cmex9 <fmex9.pfb
+cmff10 CMFF10 <cmff10.pfb
+cmfi10 CMFI10 <cmfi10.pfb
+cmfib8 CMFIB8 <cmfib8.pfb
+cminch CMINCH <cminch.pfb
+cmitt10 CMITT10 <cmitt10.pfb
+cmitt12 CMITT12 <cmitt10.pfb
+cmitt9 CMITT10 <cmitt10.pfb
+cmmi10 CMMI10 <cmmi10.pfb
+cmmi10o CMMI10 ".167 SlantFont" <cmmi10.pfb
+cmmi12 CMMI12 <cmmi12.pfb
+cmmi5 CMMI5 <cmmi5.pfb
+cmmi6 CMMI6 <cmmi6.pfb
+cmmi7 CMMI7 <cmmi7.pfb
+cmmi8 CMMI8 <cmmi8.pfb
+cmmi9 CMMI9 <cmmi9.pfb
+cmmib10 CMMIB10 <cmmib10.pfb
+cmmib10o CMMIB10 ".167 SlantFont" <cmmib10.pfb
+cmmib5 CMMIB5 <cmmib5.pfb
+cmmib6 CMMIB7 <cmmib7.pfb
+cmmib7 CMMIB7 <cmmib7.pfb
+cmmib8 CMMIB7 <cmmib7.pfb
+cmmib9 CMMIB10 <cmmib10.pfb
+cmr10 CMR10 <cmr10.pfb
+cmr12 CMR12 <cmr12.pfb
+cmr17 CMR17 <cmr17.pfb
+cmr5 CMR5 <cmr5.pfb
+cmr6 CMR6 <cmr6.pfb
+cmr7 CMR7 <cmr7.pfb
+cmr8 CMR8 <cmr8.pfb
+cmr9 CMR9 <cmr9.pfb
+cmsl10 CMSL10 <cmsl10.pfb
+cmsl12 CMSL12 <cmsl12.pfb
+cmsl6 CMSL8 <cmsl8.pfb
+cmsl8 CMSL8 <cmsl8.pfb
+cmsl9 CMSL9 <cmsl9.pfb
+cmsltt10 CMSLTT10 <cmsltt10.pfb
+cmsltt9 CMSLTT10 <cmsltt10.pfb
+cmss10 CMSS10 <cmss10.pfb
+cmss12 CMSS12 <cmss12.pfb
+cmss17 CMSS17 <cmss17.pfb
+cmss8 CMSS8 <cmss8.pfb
+cmss9 CMSS9 <cmss9.pfb
+cmssbx10 CMSSBX10 <cmssbx10.pfb
+cmssbxo10 CMSSBX10 ".212 SlantFont" <cmssbx10.pfb
+cmssdc10 CMSSDC10 <cmssdc10.pfb
+cmssi10 CMSSI10 <cmssi10.pfb
+cmssi12 CMSSI12 <cmssi12.pfb
+cmssi17 CMSSI17 <cmssi17.pfb
+cmssi8 CMSSI8 <cmssi8.pfb
+cmssi9 CMSSI9 <cmssi9.pfb
+cmssq8 CMSSQ8 <cmssq8.pfb
+cmssqi8 CMSSQI8 <cmssqi8.pfb
+cmsy10 CMSY10 <cmsy10.pfb
+cmsy10o CMSY10 ".167 SlantFont" <cmsy10.pfb
+cmsy5 CMSY5 <cmsy5.pfb
+cmsy6 CMSY6 <cmsy6.pfb
+cmsy7 CMSY7 <cmsy7.pfb
+cmsy8 CMSY8 <cmsy8.pfb
+cmsy9 CMSY9 <cmsy9.pfb
+cmtcsc10 CMTCSC10 <cmtcsc10.pfb
+cmtex10 CMTEX10 <cmtex10.pfb
+cmtex8 CMTEX8 <cmtex8.pfb
+cmtex9 CMTEX9 <cmtex9.pfb
+cmti10 CMTI10 <cmti10.pfb
+cmti12 CMTI12 <cmti12.pfb
+cmti7 CMTI7 <cmti7.pfb
+cmti8 CMTI8 <cmti8.pfb
+cmti9 CMTI9 <cmti9.pfb
+cmtt10 CMTT10 <cmtt10.pfb
+cmtt12 CMTT12 <cmtt12.pfb
+cmtt8 CMTT8 <cmtt8.pfb
+cmtt9 CMTT9 <cmtt9.pfb
+cmu10 CMU10 <cmu10.pfb
+cmvtt10 CMVTT10 <cmvtt10.pfb
+cmvtt10o CMVTT10 ".167 SlantFont" <cmvtt10.pfb
+cob NimbusMonL-Bold "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <ucrb8a.pfb
+cobo NimbusMonL-BoldObli "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <ucrbo8a.pfb
+comic8b ComicSansMS8b <8b.enc <ComicSansMS8b.pfb "fontinst-autoenc-8b ReEncodeFont"
+comicbd8b ComicSansMS8b-Bold <8b.enc <ComicSansMSBold8b.pfb "fontinst-autoenc-8b ReEncodeFont"
+comicbdo8b ComicSansMS8b-BoldItalic <8b.enc <ComicSansMSBoldItalic8b.pfb "fontinst-autoenc-8b ReEncodeFont"
+comico8b ComicSansMS8b-Italic <8b.enc <ComicSansMSItalic8b.pfb "fontinst-autoenc-8b ReEncodeFont"
+com NimbusMonL-Regu "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <ucrr8a.pfb
+coo NimbusMonL-ReguObli "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <ucrro8a.pfb
+csb10 csb10 <csb10.pfb
+csbx10 csbx10 <csbx10.pfb
+csbx12 csbx12 <csbx12.pfb
+csbx5 csbx5 <csbx5.pfb
+csbx6 csbx6 <csbx6.pfb
+csbx7 csbx7 <csbx7.pfb
+csbx8 csbx8 <csbx8.pfb
+csbx9 csbx9 <csbx9.pfb
+csbxsl10 csbxsl10 <csbxsl10.pfb
+csbxti10 csbxti10 <csbxti10.pfb
+cscsc10 cscsc10 <cscsc10.pfb
+csdunh10 csdunh10 <csdunh10.pfb
+csff10 csff10 <csff10.pfb
+csfi10 csfi10 <csfi10.pfb
+csfib8 csfib8 <csfib8.pfb
+csinch csinch <csinch.pfb
+csitt10 csitt10 <csitt10.pfb
+csr10 csr10 <csr10.pfb
+csr12 csr12 <csr12.pfb
+csr17 csr17 <csr17.pfb
+csr5 csr5 <csr5.pfb
+csr6 csr6 <csr6.pfb
+csr7 csr7 <csr7.pfb
+csr8 csr8 <csr8.pfb
+csr9 csr9 <csr9.pfb
+cssl10 cssl10 <cssl10.pfb
+cssl12 cssl12 <cssl12.pfb
+cssl8 cssl8 <cssl8.pfb
+cssl9 cssl9 <cssl9.pfb
+cssltt10 cssltt10 <cssltt10.pfb
+csss10 csss10 <csss10.pfb
+csss12 csss12 <csss12.pfb
+csss17 csss17 <csss17.pfb
+csss8 csss8 <csss8.pfb
+csss9 csss9 <csss9.pfb
+csssbx10 csssbx10 <csssbx10.pfb
+csssdc10 csssdc10 <csssdc10.pfb
+csssi10 csssi10 <csssi10.pfb
+csssi12 csssi12 <csssi12.pfb
+csssi17 csssi17 <csssi17.pfb
+csssi8 csssi8 <csssi8.pfb
+csssi9 csssi9 <csssi9.pfb
+csssq8 csssq8 <csssq8.pfb
+csssqi8 csssqi8 <csssqi8.pfb
+cstcsc10 cstcsc10 <cstcsc10.pfb
+csti10 csti10 <csti10.pfb
+csti12 csti12 <csti12.pfb
+csti7 csti7 <csti7.pfb
+csti8 csti8 <csti8.pfb
+csti9 csti9 <csti9.pfb
+cstt10 cstt10 <cstt10.pfb
+cstt12 cstt12 <cstt12.pfb
+cstt8 cstt8 <cstt8.pfb
+cstt9 cstt9 <cstt9.pfb
+csu10 csu10 <csu10.pfb
+csvtt10 csvtt10 <csvtt10.pfb
+dsrom10 dsrom10 <dsrom10.pfb
+dsrom12 dsrom12 <dsrom12.pfb
+dsrom8 dsrom8 <dsrom8.pfb
+dsss10 dsss10 <dsss10.pfb
+dsss12 dsss12 <dsss12.pfb
+dsss8 dsss8 <dsss8.pfb
+euex10 EUEX10 <euex10.pfb
+euex7 EUEX10 <euex10.pfb
+euex8 EUEX10 <euex10.pfb
+euex9 EUEX10 <euex10.pfb
+eufb10 EUFB10 <eufb10.pfb
+eufb5 EUFB5 <eufb5.pfb
+eufb6 EUFB7 <eufb7.pfb
+eufb7 EUFB7 <eufb7.pfb
+eufb8 EUFB7 <eufb7.pfb
+eufb9 EUFB10 <eufb10.pfb
+eufm10 EUFM10 <eufm10.pfb
+eufm5 EUFM5 <eufm5.pfb
+eufm6 EUFM7 <eufm7.pfb
+eufm7 EUFM7 <eufm7.pfb
+eufm8 EUFM7 <eufm7.pfb
+eufm9 EUFM10 <eufm10.pfb
+eurb10 EURB10 <eurb10.pfb
+eurb5 EURB5 <eurb5.pfb
+eurb6 EURB7 <eurb7.pfb
+eurb7 EURB7 <eurb7.pfb
+eurb8 EURB7 <eurb7.pfb
+eurb9 EURB10 <eurb10.pfb
+eurm10 EURM10 <eurm10.pfb
+eurm5 EURM5 <eurm5.pfb
+eurm6 EURM7 <eurm7.pfb
+eurm7 EURM7 <eurm7.pfb
+eurm8 EURM7 <eurm7.pfb
+eurm9 EURM10 <eurm10.pfb
+eusb10 EUSB10 <eusb10.pfb
+eusb5 EUSB5 <eusb5.pfb
+eusb6 EUSB7 <eusb7.pfb
+eusb7 EUSB7 <eusb7.pfb
+eusb8 EUSB7 <eusb7.pfb
+eusb9 EUSB10 <eusb10.pfb
+eusm10 EUSM10 <eusm10.pfb
+eusm5 EUSM5 <eusm5.pfb
+eusm6 EUSM7 <eusm7.pfb
+eusm7 EUSM7 <eusm7.pfb
+eusm8 EUSM7 <eusm7.pfb
+eusm9 EUSM10 <eusm10.pfb
+hvb NimbusSanL-Bold "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <uhvb8a.pfb
+hvbo NimbusSanL-BoldItal "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <uhvbo8a.pfb
+hv NimbusSanL-Regu "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <uhvr8a.pfb
+hvo NimbusSanL-ReguItal "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <uhvro8a.pfb
+Inuitb Inuit-Bold <Inuitb.pfb
+Inuitbo Inuit-Bold-Oblique <Inuitbo.pfb
+Inuit Inuit <Inuit.pfb
+Inuito Inuit-Oblique <Inuito.pfb
+jthb8v Tahoma-Bold "T5DEncoding ReEncodeFont" <t5d.enc <tahomabd.ttf
+jthr8v Tahoma "T5DEncoding ReEncodeFont" <t5d.enc <tahoma.ttf
+jvnb8v Verdana-Bold "T5DEncoding ReEncodeFont" <t5d.enc <verdanab.ttf
+jvnbi8v Verdana-BoldItalic "T5DEncoding ReEncodeFont" <t5d.enc <verdanaz.ttf
+jvnr8v Verdana "T5DEncoding ReEncodeFont" <t5d.enc <verdana.ttf
+jvnri8v Verdana-Italic "T5DEncoding ReEncodeFont" <t5d.enc <verdanai.ttf
+MyriadPro-Bold-7m MyriadPro-Bold "MinionPro-OMLEncoding ReEncodeFont" <my-lf-oml.enc <MyriadPro-Bold.pfb
+MyriadPro-Bold-7t MyriadPro-Bold "MinionPro-OT1Encoding ReEncodeFont" <my-lf-ot1.enc <MyriadPro-Bold.pfb
+MyriadPro-Bold-8c MyriadPro-Bold "MinionPro-TS1Encoding ReEncodeFont" <my-lf-ts1.enc <MyriadPro-Bold.pfb
+MyriadPro-Bold-8t MyriadPro-Bold "MinionPro-T1Encoding ReEncodeFont" <my-lf-t1.enc <MyriadPro-Bold.pfb
+MyriadPro-BoldIt-7m MyriadPro-BoldIt "MinionPro-OMLEncoding ReEncodeFont" <my-lf-oml.enc <MyriadPro-BoldIt.pfb
+MyriadPro-BoldIt-7t MyriadPro-BoldIt "MinionPro-OT1Encoding ReEncodeFont" <my-lf-ot1.enc <MyriadPro-BoldIt.pfb
+MyriadPro-BoldIt-8c MyriadPro-BoldIt "MinionPro-TS1Encoding ReEncodeFont" <my-lf-ts1.enc <MyriadPro-BoldIt.pfb
+MyriadPro-BoldIt-8t MyriadPro-BoldIt "MinionPro-T1Encoding ReEncodeFont" <my-lf-t1.enc <MyriadPro-BoldIt.pfb
+MyriadPro-BoldIt-k MyriadPro-BoldIt "MinionPro-LGREncoding ReEncodeFont" <my-lf-lgr.enc <MyriadPro-BoldIt.pfb
+MyriadPro-BoldIt-OSF-7m MyriadPro-BoldIt "MinionPro-OSFOMLEncoding ReEncodeFont" <my-osf-oml.enc <MyriadPro-BoldIt.pfb
+MyriadPro-BoldIt-OSF-7t MyriadPro-BoldIt "MinionPro-OT1Encoding ReEncodeFont" <my-osf-ot1.enc <MyriadPro-BoldIt.pfb
+MyriadPro-BoldIt-OSF-8c MyriadPro-BoldIt "MinionPro-TS1Encoding ReEncodeFont" <my-osf-ts1.enc <MyriadPro-BoldIt.pfb
+MyriadPro-BoldIt-OSF-8t MyriadPro-BoldIt "MinionPro-OSFT1Encoding ReEncodeFont" <my-osf-t1.enc <MyriadPro-BoldIt.pfb
+MyriadPro-Bold-k MyriadPro-Bold "MinionPro-LGREncoding ReEncodeFont" <my-lf-lgr.enc <MyriadPro-Bold.pfb
+MyriadPro-Bold-OSF-7m MyriadPro-Bold "MinionPro-OSFOMLEncoding ReEncodeFont" <my-osf-oml.enc <MyriadPro-Bold.pfb
+MyriadPro-Bold-OSF-7t MyriadPro-Bold "MinionPro-OT1Encoding ReEncodeFont" <my-osf-ot1.enc <MyriadPro-Bold.pfb
+MyriadPro-Bold-OSF-8c MyriadPro-Bold "MinionPro-TS1Encoding ReEncodeFont" <my-osf-ts1.enc <MyriadPro-Bold.pfb
+MyriadPro-Bold-OSF-8t MyriadPro-Bold "MinionPro-OSFT1Encoding ReEncodeFont" <my-osf-t1.enc <MyriadPro-Bold.pfb
+MyriadPro-It-7m MyriadPro-It "MinionPro-OMLEncoding ReEncodeFont" <my-lf-oml.enc <MyriadPro-It.pfb
+MyriadPro-It-7t MyriadPro-It "MinionPro-OT1Encoding ReEncodeFont" <my-lf-ot1.enc <MyriadPro-It.pfb
+MyriadPro-It-8c MyriadPro-It "MinionPro-TS1Encoding ReEncodeFont" <my-lf-ts1.enc <MyriadPro-It.pfb
+MyriadPro-It-8t MyriadPro-It "MinionPro-T1Encoding ReEncodeFont" <my-lf-t1.enc <MyriadPro-It.pfb
+MyriadPro-It-k MyriadPro-It "MinionPro-LGREncoding ReEncodeFont" <my-lf-lgr.enc <MyriadPro-It.pfb
+MyriadPro-It-OSF-7m MyriadPro-It "MinionPro-OSFOMLEncoding ReEncodeFont" <my-osf-oml.enc <MyriadPro-It.pfb
+MyriadPro-It-OSF-7t MyriadPro-It "MinionPro-OT1Encoding ReEncodeFont" <my-osf-ot1.enc <MyriadPro-It.pfb
+MyriadPro-It-OSF-8c MyriadPro-It "MinionPro-TS1Encoding ReEncodeFont" <my-osf-ts1.enc <MyriadPro-It.pfb
+MyriadPro-It-OSF-8t MyriadPro-It "MinionPro-OSFT1Encoding ReEncodeFont" <my-osf-t1.enc <MyriadPro-It.pfb
+MyriadPro-Regular-7m MyriadPro-Regular "MinionPro-OMLEncoding ReEncodeFont" <my-lf-oml.enc <MyriadPro-Regular.pfb
+MyriadPro-Regular-7t MyriadPro-Regular "MinionPro-OT1Encoding ReEncodeFont" <my-lf-ot1.enc <MyriadPro-Regular.pfb
+MyriadPro-Regular-8c MyriadPro-Regular "MinionPro-TS1Encoding ReEncodeFont" <my-lf-ts1.enc <MyriadPro-Regular.pfb
+MyriadPro-Regular-8t MyriadPro-Regular "MinionPro-T1Encoding ReEncodeFont" <my-lf-t1.enc <MyriadPro-Regular.pfb
+MyriadPro-Regular-k MyriadPro-Regular "MinionPro-LGREncoding ReEncodeFont" <my-lf-lgr.enc <MyriadPro-Regular.pfb
+MyriadPro-Regular-OSF-7m MyriadPro-Regular "MinionPro-OSFOMLEncoding ReEncodeFont" <my-osf-oml.enc <MyriadPro-Regular.pfb
+MyriadPro-Regular-OSF-7t MyriadPro-Regular "MinionPro-OT1Encoding ReEncodeFont" <my-osf-ot1.enc <MyriadPro-Regular.pfb
+MyriadPro-Regular-OSF-8c MyriadPro-Regular "MinionPro-TS1Encoding ReEncodeFont" <my-osf-ts1.enc <MyriadPro-Regular.pfb
+MyriadPro-Regular-OSF-8t MyriadPro-Regular "MinionPro-OSFT1Encoding ReEncodeFont" <my-osf-t1.enc <MyriadPro-Regular.pfb
+stmary10 stmary10 <stmary10.pfb
+stmary5 stmary5 <stmary5.pfb
+stmary6 stmary6 <stmary6.pfb
+stmary7 stmary7 <stmary7.pfb
+stmary8 stmary8 <stmary8.pfb
+stmary9 stmary9 <stmary9.pfb
+sy-anttbz AntykwaTorunska-BoldItalic "encantt-sy ReEncodeFont" <antt-sy.enc <anttbi.pfb
+sy-anttcbz AntykwaTorunskaCond-BoldItalic "encantt-sy ReEncodeFont" <antt-sy.enc <anttcbi.pfb
+sy-anttclz AntykwaTorunskaCondLight-Italic "encantt-sy ReEncodeFont" <antt-sy.enc <anttcli.pfb
+sy-anttcmz AntykwaTorunskaCondMed-Italic "encantt-sy ReEncodeFont" <antt-sy.enc <anttcmi.pfb
+sy-anttcrz AntykwaTorunskaCond-Italic "encantt-sy ReEncodeFont" <antt-sy.enc <anttcri.pfb
+sy-anttlz AntykwaTorunskaLight-Italic "encantt-sy ReEncodeFont" <antt-sy.enc <anttli.pfb
+sy-anttmz AntykwaTorunskaMed-Italic "encantt-sy ReEncodeFont" <antt-sy.enc <anttmi.pfb
+sy-anttrz AntykwaTorunska-Italic "encantt-sy ReEncodeFont" <antt-sy.enc <anttri.pfb
+sy StandardSymL <usyr.pfb
+yfrak yfrak-Regular <yfrak.pfb
+ygoth ygoth-Regular <ygoth.pfb
+yswab yswab-Regular <yswab.pfb
+zd Dingbats <uzdr.pfb
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-nf-cmp.svg b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-nf-cmp.svg
new file mode 100644
index 00000000000..372662c6b95
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-nf-cmp.svg
@@ -0,0 +1,1223 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="440.209pt" version="1.1" viewBox="-13.4025 53.7983 396.851 440.209" width="396.851pt">
+ <defs>
+ <path id="g1" d="M0 -9.144C0.3744 -8.8704 0.7776 -8.5104 0.7776 -7.8912V-7.56V-2.1312C0.5472 -1.8144 0.3456 -1.4544 0.1584 -1.08C0.9648 -0.6336 1.6992 -0.1296 2.5488 0.2736L2.7072 0.216C3.1824 -0.0576 3.672 -0.3312 4.1328 -0.6192H4.1472L4.5072 -0.36C4.8528 -0.1584 5.1264 0.1152 5.5152 0.2736L5.6592 0.216C6.408 -0.2016 7.1424 -0.6192 7.848 -1.0656C7.8192 -1.1952 7.7616 -1.2816 7.7184 -1.3824C7.7184 -2.8224 7.704 -4.2768 7.7328 -5.688L7.8768 -6.0048L5.7456 -7.056C5.6016 -6.696 5.4 -6.3504 5.1264 -6.0624C5.0832 -6.0192 4.896 -5.8032 4.824 -5.8032C4.7664 -5.8032 4.7232 -5.8608 4.68 -5.904C4.5936 -5.976 3.2976 -7.128 3.2688 -7.128L1.9872 -5.616V-7.5888V-8.064C1.9872 -8.3088 2.0016 -8.5392 2.0736 -8.7696C2.16 -9.072 2.4192 -9.4464 2.8224 -9.4464C3.024 -9.4464 3.1392 -9.3312 3.1968 -9.1296C3.2544 -9.1728 3.3408 -9.2304 3.3408 -9.3312C3.3408 -9.5328 3.1104 -9.6336 2.9232 -9.6336C2.592 -9.6336 2.3472 -9.4608 2.1312 -9.3312L1.5696 -8.9712C1.4976 -8.928 1.1952 -8.6976 1.1232 -8.6976H1.1088C1.0224 -8.6976 0.936 -8.8128 0.864 -8.856L0.4032 -9.2304C0.36 -9.2736 0.288 -9.3456 0.216 -9.3456S0 -9.2016 0 -9.144ZM6.3936 -0.5616C5.9328 -0.8928 5.4144 -1.1664 4.9824 -1.5408L4.9536 -1.8144V-5.1408C5.1408 -5.3712 5.3568 -5.5728 5.616 -5.7456C5.9472 -5.6304 6.2208 -5.472 6.4944 -5.2992C6.4944 -5.2992 6.5088 -4.9968 6.5088 -4.9968C6.5088 -3.5424 6.5232 -2.0736 6.4944 -0.6624L6.3936 -0.5616ZM3.4272 -1.08C3.5568 -0.9936 3.5568 -0.9072 3.5568 -0.7632C3.5568 -0.6912 3.528 -0.6048 3.4416 -0.6048S3.096 -0.792 3.096 -0.792L2.3472 -1.224C2.2032 -1.3104 1.9872 -1.3536 1.9872 -1.5984V-1.7568V-4.824V-4.9536C1.9872 -5.2128 2.1456 -5.3136 2.2752 -5.4576L2.592 -5.8176C2.6208 -5.8608 2.6784 -5.9616 2.7504 -5.9616C2.8368 -5.9616 2.9088 -5.8608 2.9664 -5.8176L3.3984 -5.4288C3.4704 -5.3712 3.5424 -5.3136 3.5568 -5.2128V-1.8432C3.5568 -1.7424 3.5712 -1.6272 3.5712 -1.512C3.5712 -1.4544 3.5712 -1.4112 3.5568 -1.3536C3.528 -1.2528 3.456 -1.1808 3.4272 -1.08Z"/>
+ <path id="g2" d="M0.012 -4.488H0.432C0.432 -2.208 0.516 -0.984 0.732 1.236C0.768 1.524 0.828 1.824 0.84 2.124H1.092L1.176 0.876H1.188C1.392 1.356 1.98 1.728 2.532 1.728C2.748 1.728 2.952 1.68 3.144 1.584C3.888 1.212 4.236 0.216 4.236 -0.792C4.236 -0.996 4.224 -1.188 4.188 -1.38C4.044 -2.076 3.624 -2.724 3.036 -3.12C2.856 -3.252 2.652 -3.36 2.436 -3.432C2.76 -3.756 3.108 -4.14 3.108 -4.752C3.108 -5.304 2.832 -5.736 2.496 -6.048H2.484L1.824 -5.208L1.464 -4.728C1.428 -4.824 1.404 -4.932 1.368 -5.028S1.032 -5.832 1.032 -5.892C1.044 -5.94 1.068 -5.988 1.092 -6.024C1.272 -6.336 1.62 -6.612 2.04 -6.612C2.268 -6.612 2.472 -6.516 2.64 -6.444C2.676 -6.528 3.012 -7.332 3.012 -7.392C3.012 -7.5 2.892 -7.512 2.808 -7.524L2.784 -7.44C2.556 -7.548 2.328 -7.692 2.052 -7.692C1.704 -7.692 1.452 -7.464 1.296 -7.164C1.056 -6.648 0.852 -5.808 0.624 -5.34C0.48 -5.016 0.204 -4.776 0.012 -4.488ZM1.488 -2.904C1.512 -3.216 1.548 -3.54 1.548 -3.852C1.548 -3.936 1.536 -4.032 1.536 -4.116C1.536 -4.212 1.524 -4.296 1.512 -4.392C1.512 -4.416 1.512 -4.428 1.512 -4.452C1.512 -4.584 1.656 -4.632 1.776 -4.632C2.124 -4.632 2.316 -4.272 2.316 -3.996C2.316 -3.6 2.004 -3.312 1.716 -3.084C1.644 -3.024 1.572 -2.964 1.488 -2.904ZM2.88 1.092C2.688 1.272 2.424 1.38 2.16 1.38C1.596 1.38 1.236 0.78 1.236 0.216C1.236 0.096 1.428 -2.316 1.44 -2.376C1.452 -2.424 1.488 -2.448 1.536 -2.448C1.608 -2.448 1.692 -2.412 1.728 -2.4C2.676 -2.196 3.384 -1.212 3.384 -0.228C3.384 0.324 3.216 0.792 2.88 1.092Z"/>
+ <path id="g3" d="M0.012 -4.488H0.432C0.432 -2.232 0.564 -0.156 0.828 1.98C0.828 2.064 0.852 2.136 0.972 2.136C1.008 2.136 1.056 2.124 1.092 2.124C1.092 1.968 1.32 -0.84 1.416 -2.088C1.464 -2.652 1.548 -3.228 1.548 -3.792C1.548 -4.248 1.5 -4.704 1.332 -5.136C1.296 -5.22 1.044 -5.796 1.044 -5.88C1.044 -6 1.164 -6.144 1.212 -6.192C1.416 -6.432 1.728 -6.612 2.052 -6.612C2.232 -6.6 2.376 -6.528 2.544 -6.492C2.4 -6.06 2.256 -5.64 2.076 -5.244L1.512 -4.488H1.944C1.944 -4.416 1.932 -4.332 1.932 -4.26C1.932 -4.08 1.944 -3.912 1.944 -3.732C1.956 -2.472 2.004 -1.212 2.124 0.048C2.184 0.744 2.232 1.44 2.352 2.124H2.592C2.628 1.644 3.048 -3.696 3.048 -3.828C3.048 -4.284 3 -4.74 2.82 -5.16L2.604 -5.688C2.58 -5.748 2.544 -5.82 2.544 -5.88C2.544 -5.988 2.664 -6.132 2.7 -6.18C2.892 -6.42 3.216 -6.612 3.552 -6.612C3.768 -6.612 3.972 -6.504 4.152 -6.444L4.548 -7.44L4.32 -7.536L4.296 -7.44C4.056 -7.548 3.816 -7.692 3.54 -7.692C3.396 -7.692 3.276 -7.644 3.168 -7.584C3.12 -7.56 3.06 -7.488 3 -7.476C2.94 -7.476 2.868 -7.512 2.82 -7.536L2.784 -7.44C2.58 -7.548 2.304 -7.692 2.04 -7.692C1.344 -7.692 1.14 -6.756 0.96 -6.228C0.864 -5.928 0.756 -5.616 0.624 -5.328C0.48 -5.016 0.216 -4.764 0.012 -4.488Z"/>
+ <path id="g4" d="M0.012 -4.488H0.432C0.432 -2.376 0.516 -0.672 0.744 1.332C0.78 1.596 0.828 1.86 0.84 2.124H1.092C1.092 1.956 1.2 0.66 1.2 0.66L1.416 -2.112C1.464 -2.112 1.548 -3.804 1.548 -3.804S1.536 -4.488 1.5 -4.488H2.604V-5.088H1.488C1.452 -5.088 1.404 -5.088 1.356 -5.112C1.32 -5.136 1.308 -5.184 1.296 -5.22C1.236 -5.328 1.032 -5.844 1.032 -5.892C1.044 -5.952 1.08 -6.012 1.104 -6.06C1.296 -6.348 1.62 -6.612 2.052 -6.612C2.292 -6.612 2.46 -6.516 2.64 -6.444C2.772 -6.768 2.904 -7.104 3.036 -7.44L2.808 -7.524L2.784 -7.44C2.556 -7.548 2.328 -7.692 2.052 -7.692C1.32 -7.692 1.14 -6.756 0.948 -6.192C0.864 -5.904 0.744 -5.616 0.624 -5.34C0.48 -5.016 0.204 -4.776 0.012 -4.488Z"/>
+ <path id="g5" d="M0.012 -4.488H0.432C0.432 -2.4 0.516 -0.636 0.744 1.332C0.78 1.596 0.828 1.86 0.84 2.124H1.092C1.092 1.956 1.344 -1.236 1.428 -2.256C1.476 -2.256 1.536 -3.816 1.536 -3.816S1.524 -4.488 1.5 -4.488H1.932C1.932 -2.4 2.016 -0.636 2.244 1.332C2.28 1.596 2.328 1.86 2.34 2.124H2.592C2.592 1.956 2.844 -1.236 2.928 -2.256C2.976 -2.256 3.036 -3.816 3.036 -3.816S3.024 -4.488 3 -4.488H4.104V-5.088H2.976C2.94 -5.088 2.892 -5.088 2.856 -5.112S2.796 -5.196 2.784 -5.232C2.748 -5.34 2.532 -5.868 2.532 -5.88C2.532 -5.952 2.58 -6.012 2.616 -6.072C2.796 -6.336 3.12 -6.612 3.54 -6.612C3.78 -6.612 3.96 -6.516 4.14 -6.444L4.536 -7.44L4.308 -7.524L4.284 -7.44C4.044 -7.548 3.792 -7.692 3.516 -7.692C3.384 -7.692 3.264 -7.656 3.168 -7.596C3.108 -7.56 3.06 -7.488 2.988 -7.488C2.952 -7.488 2.808 -7.5 2.808 -7.524L2.784 -7.44C2.568 -7.536 2.316 -7.692 2.064 -7.692C1.332 -7.692 1.116 -6.744 0.948 -6.168C0.9 -6.024 0.828 -5.88 0.78 -5.736C0.72 -5.604 0.684 -5.46 0.624 -5.328C0.48 -5.004 0.204 -4.776 0.012 -4.488ZM2.544 -6.492C2.46 -6.24 2.376 -5.988 2.28 -5.736L2.136 -5.376C2.076 -5.244 2.028 -5.088 1.836 -5.088C1.788 -5.088 1.74 -5.088 1.704 -5.088H1.476C1.332 -5.088 1.308 -5.16 1.26 -5.292L1.104 -5.676C1.08 -5.736 1.032 -5.808 1.032 -5.88C1.032 -5.976 1.116 -6.072 1.164 -6.144C1.356 -6.396 1.656 -6.612 2.028 -6.612C2.256 -6.612 2.34 -6.552 2.544 -6.492Z"/>
+ <path id="g6" d="M0.012 -4.488H0.444C0.432 -4.44 0.432 -4.392 0.432 -4.344C0.432 -4.284 0.432 -4.236 0.432 -4.188C0.432 -4.02 0.432 -3.852 0.444 -3.684C0.444 -3.684 0.444 -3.072 0.444 -3.072C0.444 -2.208 0.624 0.036 0.66 0.444C0.708 1.008 0.756 1.572 0.852 2.124H1.092C1.116 1.596 1.176 1.08 1.212 0.552C1.272 -0.276 1.332 -1.092 1.404 -1.92C1.44 -2.328 1.548 -3.432 1.548 -3.792C1.548 -4.272 1.488 -4.728 1.308 -5.172C1.284 -5.22 1.044 -5.844 1.044 -5.892C1.044 -6 1.176 -6.156 1.212 -6.192C1.416 -6.456 1.728 -6.6 2.052 -6.6C2.304 -6.6 2.448 -6.504 2.652 -6.444C2.784 -6.768 2.916 -7.104 3.048 -7.44L2.82 -7.524L2.796 -7.44C2.568 -7.548 2.34 -7.692 2.064 -7.692C1.332 -7.692 1.128 -6.744 0.948 -6.18C0.864 -5.892 0.744 -5.616 0.624 -5.34C0.492 -5.016 0.216 -4.776 0.012 -4.488Z"/>
+ <path id="g7" d="M0.1152 -5.7312H0.72V-1.8864V-1.6704C0.72 -1.584 0.72 -1.512 0.6912 -1.4544C0.648 -1.3968 0.432 -1.1664 0.432 -1.08C0.4608 -0.9792 0.6336 -0.8064 0.6768 -0.7632L1.3104 -0.0144C1.3536 0.0288 1.512 0.2736 1.584 0.2736C1.6416 0.2736 1.7136 0.216 1.7712 0.1872L2.1744 -0.0432C2.304 -0.1152 3.6864 -0.9216 3.7584 -0.9504C3.7296 -1.0224 3.672 -1.1952 3.5568 -1.1952C3.528 -1.1952 3.4992 -1.1808 3.4704 -1.1664L2.4048 -0.5472C2.2464 -0.7488 2.088 -0.936 1.944 -1.152C1.9008 -2.6352 1.944 -4.2192 1.9296 -5.7312H3.1392V-6.6528H1.9296C1.9296 -7.2576 2.0016 -7.848 2.088 -8.4528L1.7856 -8.4384L1.6272 -8.2368L0.1152 -5.7312Z"/>
+ <path id="g8" d="M0.1584 -1.1088V-1.0944C0.72 -0.6768 1.2384 -0.2304 1.8144 0.1584L1.9728 0.0864C2.4624 -0.3024 2.9664 -0.6768 3.4272 -1.0944L3.456 -1.4112C3.2976 -1.296 3.024 -1.0944 2.7648 -1.0944C2.1888 -1.0944 2.1168 -1.7424 2.1024 -2.1888C2.1024 -2.2752 2.088 -2.3472 2.088 -2.4336V-4.3344V-8.1504C2.088 -8.2512 2.1024 -8.3376 2.1024 -8.4384C2.16 -8.9712 2.4336 -9.7344 3.1392 -9.7344V-10.0512C2.88 -9.9792 2.6208 -9.8928 2.3616 -9.8208L0.9216 -9.3744C0.7344 -9.3168 0.5616 -9.2736 0.3744 -9.216C0.2448 -9.1584 0.1584 -9.1872 0.1584 -8.9856C0.1584 -8.928 0.1584 -8.856 0.1872 -8.8272C0.2304 -8.7984 0.3024 -8.784 0.3456 -8.7552C0.6048 -8.64 0.72 -8.352 0.72 -8.0064V-7.8912V-2.9088V-2.6352C0.72 -2.0304 0.4608 -1.4688 0.1584 -1.1088Z"/>
+ <path id="g9" d="M0.1584 -1.5552V-0.7344H0.3744C0.432 -0.7344 0.5184 -0.7344 0.576 -0.72C0.7056 -0.6912 1.4688 -0.288 1.728 -0.144C1.8 -0.1008 2.2608 0.1728 2.3472 0.1728C2.4768 0.1728 2.6064 0.0144 2.664 -0.0288L3.1824 -0.3888L4.1184 -1.0368C4.608 -1.3968 5.2128 -1.8432 5.2128 -2.6496C5.2128 -3.1824 4.9248 -3.744 4.5216 -4.0752C4.2912 -4.2768 4.0032 -4.392 3.7152 -4.4784L5.112 -6.1488C5.0544 -6.2064 4.968 -6.3216 4.8816 -6.3216C4.8384 -6.3216 4.7952 -6.2928 4.7664 -6.2784C4.6656 -6.2064 4.536 -6.1488 4.3488 -6.1488C3.8592 -6.1488 3.4704 -6.4512 3.1968 -6.6528C3.1248 -6.696 2.9088 -6.8688 2.808 -6.8688C2.7216 -6.8688 2.2032 -6.4512 2.0304 -6.3216C1.4112 -5.832 0.1584 -5.1408 0.1584 -4.1184C0.1584 -4.0752 0.1584 -4.032 0.1728 -3.9888C0.2448 -3.5856 0.6336 -3.2688 0.9072 -2.9808C1.08 -2.7936 1.2672 -2.5632 1.2672 -2.2896C1.2672 -2.2032 1.2528 -2.1168 1.2096 -2.0448C1.008 -1.6272 0.576 -1.5552 0.1584 -1.5552ZM3.6288 -4.8816L2.7792 -3.8736C2.736 -3.816 2.52 -3.528 2.448 -3.528H2.4336C2.3904 -3.528 2.3472 -3.5712 2.304 -3.6C1.9008 -3.9024 1.1664 -4.2336 1.1664 -4.8528C1.1664 -5.2416 1.4688 -5.6448 1.9152 -5.6448C2.1312 -5.6448 2.3472 -5.5728 2.5344 -5.4864C2.7072 -5.4 3.4992 -4.9248 3.6288 -4.8816ZM1.512 -1.8432C1.7568 -2.1744 2.0304 -2.4768 2.304 -2.7936L2.5056 -3.0384C2.5632 -3.096 2.6208 -3.1824 2.736 -3.1824S3.24 -3.096 3.2544 -3.096C3.7584 -2.952 4.2912 -2.5488 4.3056 -1.9728C4.3056 -1.8432 4.2912 -1.7136 4.2192 -1.5984C4.0464 -1.3392 3.7296 -1.1376 3.312 -1.1376C2.8368 -1.1376 2.376 -1.3824 2.0592 -1.5552C1.8864 -1.656 1.6992 -1.7712 1.512 -1.8432Z"/>
+ <path id="g10" d="M0.1584 -5.1264H0.9648C1.0944 -2.4912 1.2816 0.0576 1.5552 2.5488H1.6416C1.6848 2.5488 1.728 2.5488 1.7568 2.52C1.7856 2.5056 1.8432 2.1888 1.8576 2.088C2.1456 0.3744 2.3904 -1.5408 2.5344 -3.312C2.5632 -3.6144 2.664 -4.8816 2.664 -5.1264H3.8448V-6.0336H2.9664H2.8368C2.6784 -6.0336 2.52 -6.048 2.376 -6.12C2.0736 -6.2784 1.8576 -6.8256 1.8576 -7.2288C1.8576 -7.5744 1.9872 -7.92 2.2896 -8.136C2.4048 -8.2224 2.5344 -8.2944 2.736 -8.2944C2.9664 -8.2944 3.168 -8.1936 3.384 -8.064C3.5568 -7.9488 3.7728 -7.7904 3.9744 -7.7904C4.1472 -7.7904 4.2192 -7.992 4.2912 -8.1072L4.7376 -8.7408C4.824 -8.856 4.9104 -8.9856 4.9824 -9.1152C4.9248 -9.1584 4.824 -9.2448 4.7376 -9.2448H4.7088C4.5792 -9.1872 4.5792 -8.9856 4.4208 -8.9856H4.3776C4.0176 -9.0576 3.8016 -9.4464 3.4128 -9.4608C1.9728 -9.4608 1.6416 -8.0928 1.2096 -7.1136C0.9648 -6.5232 0.7632 -6.0336 0.3168 -5.5872C0.2304 -5.5008 0.1584 -5.472 0.1584 -5.2704V-5.1264Z"/>
+ <path id="g11" d="M0.1584 -5.1264H0.9648C1.0944 -2.4912 1.2816 0.0576 1.5552 2.5488H1.6416C1.7568 2.5488 1.8 2.5056 1.8 2.376C2.1168 0.9648 2.4912 -2.6784 2.5632 -3.6576C2.592 -3.888 2.6784 -5.1408 2.6784 -5.3136C2.6784 -5.3856 2.6928 -5.4432 2.6928 -5.5152C2.6784 -5.616 2.6208 -5.688 2.5632 -5.76C2.2608 -6.1488 1.8576 -6.6672 1.8576 -7.2144S2.232 -8.2944 2.7504 -8.2944C2.9952 -8.2944 3.2256 -8.1648 3.4416 -8.0208C3.6 -7.9344 3.8016 -7.7904 3.9888 -7.7904H4.0176C4.1184 -7.8192 4.2624 -8.064 4.2912 -8.1072L4.7376 -8.7408C4.824 -8.856 4.9104 -8.9856 4.9824 -9.1152C4.9248 -9.1584 4.824 -9.2448 4.7376 -9.2448H4.7088C4.5792 -9.1872 4.5792 -8.9856 4.4208 -8.9856H4.3776C4.0176 -9.0576 3.8016 -9.4464 3.4128 -9.4608C1.9728 -9.4608 1.6416 -8.0928 1.2096 -7.1136C0.9648 -6.5232 0.7632 -6.0336 0.3168 -5.5872C0.2304 -5.5008 0.1584 -5.472 0.1584 -5.2704V-5.1264Z"/>
+ <path id="g12" d="M0.204 -0.696H0.468C0.48 -0.768 0.504 -0.828 0.552 -0.876L0.684 -0.924C0.684 -0.924 0.732 -0.924 0.732 -0.924C0.852 -0.912 0.96 -0.888 1.068 -0.84C1.428 -0.672 1.692 -0.372 1.992 -0.12C2.064 -0.06 2.304 0.144 2.412 0.144C2.472 0.144 2.544 0.108 2.592 0.072C3.216 -0.24 3.72 -0.744 4.056 -1.32C4.152 -1.488 4.26 -1.668 4.308 -1.86C4.26 -1.884 4.176 -1.932 4.104 -1.932S4.032 -1.872 4.008 -1.812C3.84 -1.416 3.696 -0.936 3.144 -0.936C2.952 -0.948 2.772 -1.032 2.616 -1.128C2.304 -1.344 1.788 -1.92 1.368 -1.98C1.812 -2.34 2.544 -2.592 2.544 -3.372C2.484 -4.632 1.176 -5.304 1.176 -6.492C1.176 -6.684 1.2 -6.852 1.26 -6.996C1.452 -7.524 1.932 -7.992 2.604 -7.992C3.156 -7.992 3.516 -7.548 3.516 -7.068C3.516 -6.468 2.976 -6.012 2.712 -5.496C2.628 -5.304 2.556 -5.112 2.556 -4.908C2.556 -4.788 2.58 -4.668 2.64 -4.548C2.796 -4.224 3.252 -3.816 3.6 -3.816C3.984 -3.816 4.14 -4.176 4.176 -4.512H3.9C3.9 -4.344 3.828 -4.092 3.6 -4.092C3.252 -4.092 3 -4.332 3 -4.644C3 -4.8 3.072 -4.944 3.18 -5.076C3.396 -5.328 3.696 -5.484 3.9 -5.748C4.008 -5.904 4.032 -6.048 4.032 -6.24C4.032 -6.504 3.972 -6.78 3.888 -7.032C3.672 -7.644 3.252 -8.46 2.388 -8.46C2.28 -8.46 2.16 -8.448 2.04 -8.424C1.26 -8.28 0.648 -7.704 0.372 -6.972C0.264 -6.708 0.204 -6.408 0.204 -6.108C0.204 -5.952 0.216 -5.784 0.264 -5.628C0.492 -4.656 1.584 -3.864 1.584 -2.844C1.584 -2.772 1.584 -2.688 1.56 -2.616C1.44 -2.256 1.032 -2.076 0.756 -1.848C0.42 -1.56 0.204 -1.14 0.204 -0.696Z"/>
+ <path id="g13" d="M0.204 -4.536H0.564V-1.692C0.564 -1.596 0.564 -1.5 0.564 -1.404C0.564 -1.032 0.492 -0.744 0.204 -0.564L0.384 -0.408C0.636 -0.312 0.864 -0.192 1.08 -0.06C1.176 0.012 1.26 0.084 1.38 0.132L1.5 0.024L2.604 -1.2V-1.212C2.556 -1.248 2.484 -1.32 2.424 -1.332C2.364 -1.332 2.316 -1.26 2.28 -1.224L2.076 -0.996C2.028 -0.948 1.992 -0.876 1.92 -0.876C1.872 -0.876 1.836 -0.912 1.8 -0.936C1.68 -1.008 1.536 -1.068 1.416 -1.152C1.368 -1.2 1.368 -1.26 1.368 -1.32C1.368 -1.344 1.368 -1.368 1.368 -1.392V-4.536H2.34V-5.148H1.38C1.416 -5.7 1.512 -6.18 1.608 -6.672L1.38 -6.66L1.284 -6.516L0.204 -4.536Z"/>
+ <path id="g14" d="M0.204 -4.536H0.564V-1.704C0.564 -1.596 0.576 -1.476 0.576 -1.356C0.576 -1.008 0.48 -0.732 0.204 -0.564C0.396 -0.36 0.672 -0.3 0.912 -0.168C1.032 -0.072 1.152 -0.06 1.152 0.156C1.176 0.252 1.2 0.336 1.236 0.42C1.428 0.84 1.824 1.188 2.412 1.188C2.556 1.188 2.688 1.176 2.82 1.14C3.612 0.924 4.116 0.096 4.116 -0.828C4.116 -1.692 3.684 -2.556 2.988 -3.072C2.784 -3.216 2.556 -3.36 2.304 -3.432V-3.444C2.436 -3.516 2.532 -3.66 2.628 -3.78C2.82 -4.044 2.988 -4.356 2.988 -4.764C2.988 -5.28 2.7 -5.832 2.352 -6.048C2.1 -5.712 1.884 -5.196 1.392 -5.148C1.392 -5.508 1.452 -5.88 1.524 -6.228C1.548 -6.372 1.596 -6.528 1.608 -6.672L1.38 -6.66L1.284 -6.516L0.204 -4.536ZM1.368 -2.904V-4.392C1.368 -4.56 1.464 -4.632 1.632 -4.632C2.004 -4.632 2.184 -4.272 2.184 -3.984C2.184 -3.492 1.704 -3.18 1.368 -2.904ZM1.368 -2.448C2.352 -2.316 3.036 -1.56 3.204 -0.684C3.24 -0.54 3.264 -0.396 3.264 -0.252C3.264 -0.036 3.204 0.168 3.072 0.36C2.856 0.624 2.52 0.852 2.1 0.852C1.92 0.852 1.74 0.792 1.608 0.648C1.524 0.552 1.404 0.324 1.404 0.192C1.404 0.18 1.404 0.18 1.404 0.168C1.428 0.072 1.596 -0.072 1.632 -0.12C1.716 -0.216 2.28 -0.792 2.28 -0.888C2.28 -0.936 2.172 -1.008 2.124 -1.008C2.052 -1.008 1.992 -0.888 1.956 -0.84C1.764 -0.948 1.56 -1.056 1.392 -1.188C1.32 -1.548 1.392 -2.04 1.368 -2.448Z"/>
+ <path id="g15" d="M0.216 -1.14V-1.116C0.504 -0.948 1.884 -0.096 2.088 0.048C2.124 0.084 2.172 0.132 2.232 0.132C2.232 0.132 2.244 0.132 2.244 0.132C2.28 0.12 2.868 -0.564 3.132 -0.984C3.624 -1.764 3.828 -2.712 3.828 -3.636C3.828 -4.488 3.66 -5.184 3.264 -5.808L1.176 -4.968L0.66 -4.752C0.54 -4.704 0.468 -4.716 0.468 -4.536C0.468 -4.488 0.468 -4.452 0.468 -4.416V-1.728C0.468 -1.704 0.468 -1.68 0.468 -1.656C0.468 -1.488 0.456 -1.332 0.324 -1.212L0.216 -1.14ZM2.712 -0.828C2.688 -0.792 2.652 -0.72 2.604 -0.72C2.568 -0.72 2.544 -0.732 2.52 -0.744C2.148 -0.984 2.028 -1.056 1.572 -1.332L1.38 -1.452C1.308 -1.5 1.26 -1.524 1.26 -1.644C1.26 -1.704 1.272 -1.764 1.272 -1.812V-3.936C1.272 -3.996 1.272 -4.68 1.272 -4.68C1.296 -4.776 1.44 -4.812 1.524 -4.836C1.776 -4.944 2.04 -5.04 2.292 -5.148C2.352 -5.172 2.448 -5.232 2.52 -5.232C2.556 -5.232 2.58 -5.22 2.604 -5.196C2.652 -5.112 2.688 -5.004 2.724 -4.908C2.988 -4.212 3.096 -3.312 3.096 -2.4C3.096 -1.824 2.976 -1.164 2.712 -0.828Z"/>
+ <path id="g16" d="M0.264 -7.02C0.252 -6.996 0.156 -6.612 0.156 -6.588C0.156 -6.48 0.264 -6.408 0.312 -6.348C0.468 -6.12 0.552 -5.868 0.552 -5.496C0.552 -5.352 0.54 -5.208 0.54 -5.064V-2.16C0.54 -2.076 0.54 -1.992 0.54 -1.908C0.54 -1.68 0.504 -1.524 0.372 -1.38C0.276 -1.284 0.204 -1.308 0.204 -1.104V-0.876C0.708 -0.792 1.212 -0.552 1.62 -0.264C1.704 -0.204 1.8 -0.144 1.86 -0.072C1.884 -0.036 1.872 0 1.896 0.036C1.92 0.096 2.016 0.132 2.076 0.156C2.364 -0.336 2.712 -0.792 3 -1.284C3.432 -2.004 3.78 -2.844 3.78 -3.696C3.78 -4.524 3.456 -5.148 3.048 -5.592C3.024 -5.616 2.832 -5.808 2.808 -5.808L1.356 -4.68C1.356 -4.896 1.344 -5.112 1.344 -5.328C1.344 -5.856 1.392 -6.384 1.728 -6.828C1.944 -7.116 2.304 -7.38 2.772 -7.38V-7.74C2.016 -7.74 1.404 -7.296 0.924 -6.864C0.876 -6.816 0.816 -6.72 0.744 -6.72C0.744 -6.72 0.732 -6.72 0.732 -6.72C0.672 -6.72 0.384 -6.96 0.264 -7.02ZM2.604 -1.104C2.196 -1.344 1.776 -1.572 1.38 -1.824L1.356 -2.016C1.368 -2.82 1.32 -3.636 1.38 -4.356C1.632 -4.596 1.92 -4.812 2.196 -5.028C2.724 -4.572 3.072 -3.936 3.072 -3.024C3.072 -2.568 3 -2.124 2.892 -1.752C2.82 -1.524 2.7 -1.32 2.604 -1.104Z"/>
+ <path id="g17" d="M0.3312 -5.6448L0.504 -5.3712C0.5472 -4.0896 0.5184 -2.7072 0.504 -1.44C0.4176 -1.1952 0.3024 -0.9792 0.2016 -0.7488L2.0736 0.144L1.5696 0.7344L0.1008 2.3904H0.3168C0.576 2.3904 0.6192 2.2752 0.7632 2.1312C0.9504 1.944 1.1808 1.7568 1.4976 1.7568C1.7136 1.7568 1.9584 1.8144 2.1744 1.8432C2.664 1.9008 4.3776 2.1456 4.4352 2.1456C4.464 2.1456 4.4784 2.1456 4.5072 2.1312C4.6224 2.088 4.7376 1.9296 4.824 1.8432L6.0192 0.648C6.0768 0.5904 6.2064 0.4896 6.2064 0.4032C6.2064 0.3312 5.9472 -0.072 5.8752 -0.216L5.2128 -1.368C5.0976 -1.5552 4.8816 -1.8 4.8816 -2.088V-2.2608V-5.184C4.968 -5.1552 5.3136 -5.112 5.3856 -5.112C5.7024 -5.112 5.7888 -5.3568 5.904 -5.5728C6.048 -5.8608 6.2064 -6.1488 6.336 -6.4368L6.0768 -6.2928L5.76 -6.3072L2.952 -6.7104L3.0384 -6.84C2.9808 -6.8688 2.5632 -7.0992 2.5056 -7.0992C2.4192 -7.0992 2.3472 -6.9696 2.304 -6.9264C1.8432 -6.4656 1.4544 -6.1488 0.792 -5.832C0.648 -5.76 0.4896 -5.7168 0.3312 -5.6448ZM1.728 -5.6448L3.672 -5.3568V-1.9728C3.672 -1.9152 3.6864 -1.8432 3.6864 -1.7712C3.6864 -1.584 3.5856 -1.5264 3.4848 -1.4112L3.1392 -1.0224C3.0816 -0.9648 2.9952 -0.8208 2.8944 -0.8208C2.808 -0.8208 2.6928 -0.8928 2.6352 -0.9216L2.0016 -1.224C1.872 -1.3104 1.728 -1.3104 1.728 -1.5408V-1.7136V-5.6448ZM2.1168 0.6192L3.8448 -1.3104C4.2768 -0.5184 4.7376 0.2448 5.184 1.0224C4.1616 0.8928 3.168 0.72 2.1168 0.6192Z"/>
+ <path id="g18" d="M0.3744 -1.1664V-1.152C0.4608 -1.0656 0.576 -1.0224 0.6912 -0.9648L1.08 -0.792L2.5488 -0.144L3.0528 0.0864C3.1104 0.1152 3.1968 0.1584 3.2544 0.1584H3.2832C3.3984 0.1584 3.5136 0.0144 3.6 -0.0576L4.3632 -0.648C5.4576 -1.4688 6.7824 -2.6496 6.7824 -4.176C6.7824 -5.112 6.3504 -6.0048 5.5728 -6.5232C5.4432 -6.6096 4.9824 -6.8832 4.8096 -6.8832C4.7952 -6.8832 4.7664 -6.8688 4.752 -6.8688C4.6656 -6.8544 4.0896 -6.4368 4.0896 -6.4368L2.592 -5.3856C2.5056 -5.832 2.1312 -6.3504 1.8864 -6.5952C1.8288 -6.6528 1.6416 -6.8688 1.5264 -6.8688C1.44 -6.8544 1.3536 -6.768 1.296 -6.7248L0.792 -6.336L0.36 -6.0192C0.3168 -5.976 0.216 -5.9328 0.2016 -5.8752C0.2016 -5.832 0.2304 -5.8032 0.2592 -5.7888C0.3312 -5.7168 0.4176 -5.6592 0.4896 -5.5872C1.0224 -5.112 1.4976 -4.32 1.4976 -3.384C1.4976 -2.9088 1.368 -2.4336 1.1232 -2.016C0.936 -1.6848 0.6624 -1.4112 0.3744 -1.1664ZM1.8144 -2.1312C1.9152 -2.304 2.0736 -2.4624 2.1744 -2.6352C2.5056 -3.1536 2.7216 -3.8016 2.7216 -4.5648V-4.6944C2.7216 -4.7808 2.7072 -4.8672 2.6928 -4.9536V-5.0544C2.6928 -5.1552 2.7648 -5.1984 2.8224 -5.256C3.0384 -5.4288 3.2688 -5.6016 3.6288 -5.6016C3.7008 -5.6016 3.7872 -5.6016 3.8592 -5.5872C4.7952 -5.4432 5.4432 -4.4352 5.4432 -3.384C5.4432 -2.5344 5.0256 -1.7712 4.5648 -1.2528C4.5216 -1.1808 4.4352 -1.0368 4.32 -1.0368C4.2624 -1.0368 3.6432 -1.3248 3.6432 -1.3248C3.0384 -1.584 2.4336 -1.8864 1.8144 -2.1312Z"/>
+ <path id="g19" d="M0.468 -3.888H0.204C0.204 -3.384 0.432 -2.76 1.056 -2.76C1.236 -2.76 1.404 -2.808 1.512 -2.868C1.908 -3.084 2.22 -3.528 2.22 -4.116C2.22 -4.512 2.016 -4.788 1.8 -5.004C1.416 -5.388 0.492 -5.712 0.468 -6.396C0.468 -6.516 0.492 -6.648 0.528 -6.768C0.648 -7.212 0.948 -7.548 1.488 -7.548C1.812 -7.548 2.136 -7.44 2.4 -7.236C3.06 -6.792 3.3 -5.7 3.384 -4.8C3.444 -4.2 3.468 -3.6 3.468 -3C3.468 -1.944 3.468 -0.672 2.832 -0.252C2.64 -0.144 2.592 -0.144 2.328 -0.108C2.328 -0.108 2.1 -0.12 2.1 -0.144C1.74 -0.252 1.476 -0.612 1.476 -0.984C1.476 -1.236 1.584 -1.488 1.764 -1.656C1.86 -1.74 1.968 -1.8 2.076 -1.848L1.908 -2.052C1.584 -1.86 1.32 -1.68 0.816 -1.656C0.672 -1.656 0.516 -1.668 0.372 -1.68C0.432 -1.524 0.468 -1.368 0.468 -1.212C0.468 -0.984 0.396 -0.78 0.3 -0.624C0.276 -0.588 0.228 -0.54 0.228 -0.492C0.228 -0.42 0.324 -0.3 0.396 -0.3C0.432 -0.3 0.48 -0.324 0.504 -0.348C0.6 -0.396 0.708 -0.432 0.816 -0.432C1.236 -0.432 1.572 -0.096 1.932 0.072C2.064 0.132 2.22 0.156 2.364 0.156C2.724 0.156 3.096 0 3.372 -0.216C4.152 -0.876 4.428 -2.148 4.428 -3.456C4.428 -3.6 4.416 -3.732 4.416 -3.864L4.38 -4.596C4.38 -4.692 4.356 -4.776 4.356 -4.872C4.368 -4.944 4.428 -4.968 4.488 -4.992C4.572 -5.04 4.692 -5.076 4.788 -5.076C4.824 -5.076 4.86 -5.076 4.896 -5.064C5.052 -5.016 5.064 -4.848 5.076 -4.704L5.4 -2.184C5.46 -1.296 5.736 -0.36 6.204 0.156C6.624 -0.42 7.068 -0.984 7.476 -1.584L7.248 -1.716C7.188 -1.62 7.104 -1.524 7.032 -1.428C6.996 -1.368 6.924 -1.272 6.828 -1.272C6.756 -1.272 6.684 -1.32 6.636 -1.368C6.312 -1.692 6.3 -2.268 6.24 -2.82C6.24 -2.82 5.964 -5.088 5.916 -5.388C5.916 -5.424 5.832 -5.736 5.832 -5.772S5.88 -5.832 5.916 -5.856L6.156 -6L6.6 -6.252C6.696 -6.312 6.804 -6.336 6.804 -6.48C6.804 -6.54 6.792 -6.6 6.792 -6.636C6.48 -6.684 6.564 -7.056 6.504 -7.332C6.456 -7.776 6.168 -8.148 5.844 -8.352C5.784 -8.388 5.724 -8.436 5.652 -8.436C5.652 -8.436 5.64 -8.436 5.64 -8.436C5.568 -8.436 5.532 -8.376 5.484 -8.34C5.388 -8.268 5.292 -8.208 5.184 -8.16C4.524 -7.836 4.212 -7.884 3.78 -7.248C3.492 -7.884 2.892 -8.46 2.004 -8.46C0.948 -8.46 0.324 -7.584 0.216 -6.696C0.204 -6.504 0.204 -6.312 0.204 -6.12V-5.352C0.204 -5.304 0.204 -5.244 0.204 -5.196C0.204 -5.04 0.216 -4.896 0.324 -4.764C0.528 -4.56 1.032 -4.452 1.272 -4.356C1.512 -4.272 1.68 -4.104 1.68 -3.804C1.68 -3.456 1.416 -3.024 1.032 -3.024C0.6 -3.024 0.468 -3.576 0.468 -3.888ZM4.32 -5.208C4.284 -5.616 4.2 -6.024 4.104 -6.408L3.996 -6.756C3.972 -6.756 3.948 -6.936 3.948 -6.936C4.02 -7.26 4.5 -7.548 4.788 -7.548C4.92 -7.548 5.04 -7.512 5.148 -7.416C5.412 -7.2 5.46 -6.78 5.52 -6.456C5.544 -6.348 5.604 -6.048 5.604 -6.012C5.604 -5.94 5.532 -5.916 5.484 -5.88L4.32 -5.208Z"/>
+ <path id="g20" d="M0.516 -5.796C0.504 -5.88 0.492 -5.964 0.492 -6.048C0.492 -6.9 0.876 -7.548 1.296 -8.028C1.344 -8.088 1.488 -8.196 1.488 -8.28C1.488 -8.34 1.44 -8.412 1.368 -8.412S1.224 -8.34 1.176 -8.292C0.648 -7.764 0.228 -7.02 0.228 -6.036C0.228 -5.772 0.276 -5.496 0.384 -5.256S0.72 -4.788 1.02 -4.788C1.176 -4.788 1.356 -4.836 1.488 -4.944C1.62 -5.064 1.68 -5.244 1.68 -5.424C1.68 -5.808 1.416 -6.072 1.032 -6.072C0.828 -6.072 0.612 -5.988 0.516 -5.796ZM2.856 -5.808C2.856 -5.904 2.844 -6.012 2.844 -6.108C2.88 -6.924 3.216 -7.596 3.708 -8.088C3.756 -8.136 3.852 -8.196 3.852 -8.28C3.852 -8.292 3.84 -8.304 3.84 -8.316C3.84 -8.364 3.756 -8.412 3.72 -8.412C3.66 -8.412 3.612 -8.376 3.564 -8.328C3.024 -7.824 2.58 -6.996 2.58 -6.084C2.58 -5.46 2.784 -4.788 3.396 -4.788C3.768 -4.788 4.032 -5.076 4.032 -5.424C4.032 -5.604 3.972 -5.772 3.852 -5.904C3.732 -6.012 3.564 -6.072 3.384 -6.072C3.132 -6.072 2.988 -5.952 2.856 -5.808Z"/>
+ <path id="g21" d="M0.6 -4.368C0.54 -4.332 0.432 -4.248 0.432 -4.176C0.432 -4.116 0.48 -4.068 0.516 -4.032C0.696 -3.804 1.008 -3.612 1.368 -3.612C1.92 -3.612 2.292 -4.104 2.292 -4.704S1.8 -5.64 1.416 -5.856C1.128 -6.012 0.492 -6.144 0.492 -6.6C0.492 -6.756 0.564 -6.912 0.624 -7.056C0.756 -7.344 0.924 -7.788 1.332 -7.788C1.68 -7.788 2.004 -7.572 2.184 -7.428C2.796 -6.876 3.24 -6.012 3.384 -5.088C3.42 -4.908 3.444 -4.704 3.444 -4.512C3.444 -3.804 3.144 -3.276 2.796 -2.844C2.7 -2.724 2.4 -2.316 2.232 -2.316C2.196 -2.316 2.148 -2.328 2.112 -2.328C2.088 -2.328 1.752 -2.34 1.752 -2.328C1.128 -2.292 0.564 -1.692 0.564 -1.008C0.564 -0.756 0.648 -0.588 0.768 -0.432C0.792 -0.396 0.84 -0.336 0.888 -0.336C0.888 -0.336 0.9 -0.336 0.9 -0.336C0.984 -0.336 1.056 -0.432 1.092 -0.492C0.948 -0.612 0.84 -0.804 0.84 -0.984C0.84 -1.296 1.164 -1.464 1.476 -1.464C1.56 -1.464 1.644 -1.464 1.716 -1.452C2.712 -1.332 3.552 -0.672 4.2 -0.072C4.236 -0.036 4.404 0.132 4.452 0.132C4.476 0.132 4.56 0.12 4.56 0.096L4.752 -0.012L5.532 -0.468C5.832 -0.636 6.168 -0.792 6.432 -1.02C6.792 -1.308 7.128 -1.8 7.128 -2.388C7.128 -2.904 6.828 -3.216 6.576 -3.504C6.264 -3.84 5.712 -4.272 5.712 -4.872C5.724 -5.076 5.892 -5.244 6.024 -5.388C6.336 -5.712 6.72 -6.012 7.128 -6.216C7.092 -6.288 7.068 -6.384 7.02 -6.432C6.972 -6.492 6.876 -6.492 6.816 -6.54C6.708 -6.612 6.612 -6.708 6.54 -6.828C6.192 -7.392 6.24 -8.46 5.376 -8.46C4.716 -8.46 4.224 -8.016 3.996 -7.596C3.912 -7.452 3.84 -7.296 3.804 -7.128L3.528 -7.56C3.192 -7.992 2.688 -8.46 1.968 -8.46C1.896 -8.46 1.824 -8.448 1.752 -8.448C0.828 -8.316 0.324 -7.332 0.228 -6.492C0.216 -6.384 0.204 -6.276 0.204 -6.168C0.204 -5.82 0.348 -5.58 0.456 -5.328C0.504 -5.148 0.66 -5.184 0.84 -5.136C1.2 -5.052 1.812 -4.92 1.812 -4.404C1.812 -4.152 1.656 -3.876 1.38 -3.876C1.02 -3.876 0.768 -4.128 0.6 -4.368ZM5.82 -5.556C5.472 -5.196 4.968 -4.836 4.968 -4.164C4.968 -4.08 4.968 -3.996 4.992 -3.912C5.136 -3.408 5.808 -3.084 6.12 -2.784C6.336 -2.568 6.48 -2.388 6.48 -2.028C6.48 -1.464 6.096 -0.864 5.448 -0.864C5.4 -0.864 5.352 -0.864 5.304 -0.876C4.824 -0.984 4.512 -1.428 4.176 -1.644C3.888 -1.848 3.564 -2.004 3.228 -2.124C3.06 -2.172 2.88 -2.208 2.712 -2.256C3.036 -2.484 3.36 -2.712 3.66 -2.964C4.056 -3.312 4.356 -3.672 4.356 -4.38C4.356 -5.196 4.248 -5.988 4.032 -6.6C4.008 -6.672 3.888 -6.924 3.888 -7.008C3.9 -7.092 3.948 -7.188 3.972 -7.272C4.116 -7.596 4.368 -7.86 4.74 -7.86C4.752 -7.86 4.752 -7.86 4.764 -7.86C5.112 -7.86 5.268 -7.56 5.316 -7.296C5.424 -6.72 5.244 -5.676 5.82 -5.556Z"/>
+ <path id="g22" d="M0.6048 -8.352C0.432 -8.0208 0.2016 -7.5312 0.2016 -7.1136C0.2016 -6.984 0.2448 -6.9408 0.3456 -6.912C0.6192 -6.7536 1.7856 -6.192 1.8288 -6.1776C1.584 -5.9328 1.3392 -5.7168 1.0944 -5.4864C0.9504 -5.3712 0.7776 -5.256 0.7776 -5.0112V-4.8672V-2.5056C0.7776 -2.4192 0.792 -1.656 0.7632 -1.656C0.7488 -1.584 0.4608 -1.1088 0.4608 -1.0944L1.9584 -0.0864C2.1456 0.0432 2.3184 0.1872 2.5488 0.2736L2.7648 0.1872L4.9104 -1.0512L4.7664 -1.3536C4.7232 -2.7648 4.752 -4.3056 4.7664 -5.7024L4.9104 -6.0048C3.5568 -6.6816 2.16 -7.3296 0.8352 -8.0352L0.6336 -8.352H0.6048ZM3.4272 -0.5616C2.9664 -0.8928 2.448 -1.1808 2.016 -1.5408L1.9872 -1.8C1.9872 -3.0816 1.9728 -4.3632 2.0016 -5.6016C2.0592 -5.7312 2.0736 -5.904 2.1888 -5.976C2.6496 -5.7744 3.096 -5.5584 3.5136 -5.3136L3.5424 -5.04C3.5424 -3.5712 3.5568 -2.088 3.528 -0.6624L3.4272 -0.5616Z"/>
+ <path id="g23" d="M0.6192 -8.3664C0.4176 -8.0352 0.2016 -7.56 0.2016 -7.1136C0.2016 -7.0704 0.2016 -7.0272 0.216 -6.9984C0.2736 -6.9264 0.6048 -6.7824 0.6336 -6.768L1.3968 -6.3936C1.5408 -6.3216 1.6848 -6.2352 1.8432 -6.1776C1.4976 -5.832 1.1232 -5.5296 0.792 -5.1696L0.7776 -4.9968V-1.6704L0.4752 -1.08C1.1808 -0.6336 1.8144 -0.144 2.5488 0.2736L2.7072 0.216C3.1824 -0.0576 3.672 -0.3312 4.1328 -0.6192H4.1472L4.5072 -0.36C4.8528 -0.1584 5.1264 0.1152 5.5152 0.2736L5.6592 0.216C6.408 -0.2016 7.1424 -0.6192 7.848 -1.0656C7.8192 -1.1952 7.7616 -1.2816 7.7184 -1.3824C7.7184 -2.8224 7.704 -4.2768 7.7328 -5.688L7.8768 -6.0048L5.7456 -7.056C5.5296 -6.5232 5.1984 -6.1056 4.7808 -5.7312L4.9248 -6.0048L3.744 -6.5808C2.7792 -7.0704 1.7856 -7.5312 0.8352 -8.0352L0.6192 -8.3664ZM3.4272 -1.08C3.5568 -0.9936 3.5568 -0.9072 3.5568 -0.7632C3.5568 -0.6768 3.5136 -0.6048 3.4272 -0.6048H3.4128C3.3552 -0.6048 3.024 -0.8352 3.024 -0.8352L2.3616 -1.2816C2.232 -1.3824 1.9872 -1.4544 1.9872 -1.6992V-1.7856V-4.9968V-5.2416C1.9872 -5.4144 1.9872 -5.5728 2.0304 -5.7312C2.0592 -5.8032 2.1024 -5.9616 2.2176 -5.9616C2.2464 -5.9616 2.2752 -5.9616 2.2896 -5.9472C2.3616 -5.9184 2.9952 -5.5872 3.2544 -5.472C3.4272 -5.3856 3.5712 -5.3856 3.5712 -5.1264C3.5712 -5.0544 3.5568 -4.9824 3.5568 -4.9104V-1.7136V-1.4688C3.5568 -1.2384 3.4992 -1.3104 3.4272 -1.08ZM6.3936 -0.5616C5.9328 -0.8928 5.4144 -1.1664 4.9824 -1.5408L4.9536 -1.8144V-5.1408C5.1408 -5.3712 5.3568 -5.5728 5.616 -5.7456C5.9472 -5.6304 6.2208 -5.472 6.4944 -5.2992C6.4944 -5.2992 6.5088 -4.9968 6.5088 -4.9968C6.5088 -3.5424 6.5232 -2.0736 6.4944 -0.6624L6.3936 -0.5616Z"/>
+ <path id="g24" d="M0.684 -4.692V-1.5C0.684 -1.44 0.684 -1.368 0.684 -1.296C0.684 -1.068 0.66 -0.816 0.42 -0.72V-0.468C0.6 -0.408 0.732 -0.264 0.828 -0.108C0.888 0 0.912 0.168 1.092 0.168C1.128 0.168 1.176 0.156 1.212 0.156C1.284 -0.12 1.464 -0.384 1.752 -0.468C1.752 -0.504 1.752 -0.54 1.752 -0.576C1.752 -0.624 1.752 -0.66 1.74 -0.696C1.716 -0.756 1.632 -0.792 1.596 -0.84C1.524 -0.936 1.5 -1.056 1.488 -1.176C1.476 -1.176 1.488 -2.832 1.488 -4.152C1.488 -4.224 1.476 -4.68 1.512 -4.68C1.536 -4.728 1.584 -4.752 1.632 -4.788L1.884 -4.98C1.92 -5.004 2.1 -5.148 2.16 -5.148C2.232 -5.148 2.328 -5.052 2.352 -5.028L2.664 -4.812C2.748 -4.74 2.856 -4.716 2.856 -4.56C2.856 -4.512 2.844 -4.452 2.844 -4.416V-1.452C2.844 -1.404 2.844 -1.368 2.844 -1.32C2.844 -1.14 2.832 -0.972 2.664 -0.852C2.616 -0.816 2.568 -0.804 2.52 -0.78C2.64 -0.684 2.784 -0.612 2.916 -0.528L3.636 -0.084C3.684 -0.048 3.96 0.132 4.02 0.132C4.104 0.132 4.176 0.012 4.212 -0.024C4.368 -0.18 4.512 -0.348 4.668 -0.504C5.328 -1.224 6 -2.148 6 -3.24C6 -3.432 5.988 -3.636 5.952 -3.828C5.772 -4.608 5.22 -5.196 4.74 -5.808H4.728C4.368 -5.556 4.044 -5.244 3.66 -5.016L3.552 -5.064C3.228 -5.304 2.88 -5.532 2.58 -5.808C2.316 -5.628 2.064 -5.424 1.812 -5.232C1.704 -5.16 1.548 -4.98 1.404 -4.98C1.08 -4.98 0.84 -5.268 0.84 -5.52C0.84 -5.628 0.888 -5.7 0.984 -5.76C1.044 -5.784 1.164 -5.832 1.164 -5.916C1.164 -5.988 1.08 -6.048 1.044 -6.096C0.924 -6.036 0.816 -5.964 0.696 -5.904C0.48 -5.796 0.204 -5.688 0.204 -5.376C0.204 -5.04 0.42 -4.752 0.684 -4.692ZM4.176 -5.088C4.692 -4.536 5.328 -3.72 5.388 -2.88C5.388 -2.88 5.376 -2.34 5.364 -2.34C5.232 -1.74 5.028 -1.344 4.692 -0.912C4.644 -0.852 4.536 -0.696 4.452 -0.696C4.38 -0.708 4.32 -0.768 4.26 -0.804L3.852 -1.056C3.756 -1.116 3.648 -1.14 3.648 -1.296C3.648 -1.356 3.66 -1.416 3.66 -1.464V-4.392C3.66 -4.44 3.66 -4.476 3.66 -4.524C3.66 -4.704 3.708 -4.716 3.828 -4.812C3.948 -4.896 4.08 -4.98 4.176 -5.088Z"/>
+ <path id="g25" d="M0.732 -3.324C0.756 -3.252 0.804 -3.084 0.912 -3.084C0.936 -3.084 0.984 -3.096 1.008 -3.108C1.644 -3.228 2.124 -3.792 2.124 -4.44C2.124 -5.016 1.668 -5.352 1.308 -5.556C0.948 -5.772 0.468 -6.012 0.468 -6.492C0.468 -6.948 0.588 -7.632 1.188 -7.632C1.26 -7.632 1.344 -7.62 1.416 -7.608C1.884 -7.488 2.232 -7.092 2.4 -6.66C2.544 -6.288 2.58 -5.892 2.58 -5.496C2.58 -5.292 2.568 -5.076 2.568 -4.872V-1.956L1.956 -2.208C1.788 -1.668 1.644 -1.224 1.332 -0.78C1.296 -0.744 1.224 -0.648 1.224 -0.588S1.356 -0.456 1.416 -0.42C1.608 -0.672 1.884 -0.912 2.208 -0.912C2.22 -0.912 2.22 -0.912 2.232 -0.912C2.376 -0.912 2.58 -0.864 2.58 -0.672C2.58 -0.624 2.568 -0.564 2.568 -0.528C2.568 0.348 2.664 0.912 2.784 1.764C2.82 1.764 2.88 1.776 2.928 1.776C3.084 1.776 3.084 1.704 3.144 1.584C3.36 1.056 3.564 0.372 3.588 -0.252C3.888 -0.084 4.2 0.072 4.512 0.228C4.596 0.084 4.668 -0.06 4.74 -0.216C4.788 -0.324 4.836 -0.456 4.908 -0.552C4.968 -0.624 5.052 -0.672 5.124 -0.732C5.256 -0.84 5.4 -0.96 5.52 -1.092C6.072 -1.704 6.564 -2.484 6.564 -3.42C6.564 -4.728 5.76 -5.46 5.76 -6.756C5.76 -7.008 5.784 -7.272 5.844 -7.524C5.892 -7.728 5.976 -7.92 6.036 -8.124C5.22 -8.1 4.416 -7.692 3.984 -7.26C3.804 -7.08 3.612 -6.852 3.528 -6.612C3.468 -6.792 3.42 -6.984 3.348 -7.164C3.072 -7.824 2.544 -8.46 1.596 -8.46C1.488 -8.46 1.38 -8.436 1.284 -8.4C0.504 -8.148 0.192 -7.224 0.192 -6.42C0.192 -5.892 0.396 -5.22 0.636 -4.836C0.684 -4.752 0.72 -4.68 0.852 -4.68C0.9 -4.68 0.96 -4.68 0.996 -4.68C1.044 -4.68 1.08 -4.668 1.128 -4.668C1.392 -4.656 1.788 -4.572 1.788 -4.224C1.788 -3.66 1.272 -3.312 0.852 -3.312C0.804 -3.312 0.768 -3.324 0.732 -3.324ZM4.836 -7.536C4.8 -7.152 4.752 -6.768 4.752 -6.372C4.752 -5.28 5.268 -4.632 5.556 -3.768C5.64 -3.492 5.712 -3.192 5.712 -2.904C5.712 -2.88 5.712 -2.868 5.712 -2.844C5.712 -2.136 5.376 -1.416 4.956 -0.996C4.908 -0.948 4.848 -0.876 4.788 -0.852C4.764 -0.852 4.68 -0.852 4.68 -0.888C4.62 -0.912 4.56 -0.948 4.5 -0.984L3.912 -1.308C3.78 -1.38 3.612 -1.392 3.612 -1.584V-5.58C3.612 -5.772 3.612 -5.964 3.648 -6.156C3.78 -6.768 4.272 -7.284 4.836 -7.536Z"/>
+ <path id="g26" d="M0.7344 -8.6688L0.216 -9.3744C0.144 -9.3312 0.0144 -9.2592 0.0144 -9.1584C0.0144 -9.072 0.1152 -9 0.144 -8.9568C0.3744 -8.5824 0.432 -8.1936 0.432 -7.6032V-7.3872V-1.8576V-1.7568C0.432 -1.6128 0.3168 -1.5408 0.2304 -1.4688L-0.2016 -1.1088L0.216 -0.5904L0.9648 0.3024H0.9792L1.8864 -0.4608L1.3824 -1.0944H1.6416V-7.8768V-8.1072C1.6416 -8.1936 1.6416 -8.2656 1.656 -8.3376C1.7136 -8.8272 2.1456 -9.1728 2.6928 -9.216V-9.432C2.1888 -9.432 1.6992 -9.3024 1.2672 -9.0432C1.08 -8.9424 0.9216 -8.784 0.7344 -8.6688Z"/>
+ <path id="g27" d="M0.7632 -9.072L0.4176 -8.6544C0.1728 -8.2944 -0.0144 -7.848 -0.0144 -7.4016C-0.0144 -7.2144 0.0144 -7.0128 0.1152 -6.8256C0.288 -6.4656 0.7056 -6.2352 0.7776 -5.8176V-2.1312C0.6768 -2.0736 0.6192 -1.9296 0.5616 -1.8288C0.432 -1.584 0.2736 -1.3392 0.144 -1.0944C0.3024 -0.9936 2.448 0.2736 2.5344 0.2736H2.5632C2.664 0.2736 2.952 0.072 2.9664 0.0576L3.8592 -0.4464C3.9456 -0.4896 4.2048 -0.6768 4.3056 -0.6768C4.3632 -0.6768 4.6944 -0.432 4.6944 -0.432L5.3568 0.0288C5.4288 0.0864 5.6448 0.288 5.7456 0.288C5.8032 0.288 5.8464 0.2448 5.8896 0.216C6.0048 0.1584 7.272 -0.576 7.272 -0.576C7.3584 -0.6336 7.4304 -0.6624 7.4304 -0.8208C7.4304 -0.864 7.416 -0.9216 7.416 -0.9648C7.1712 -0.8496 6.8976 -0.648 6.6096 -0.648C6.3936 -0.648 6.0912 -0.9504 6.0192 -0.9936L5.544 -1.3248C5.4288 -1.3968 5.2704 -1.4544 5.2704 -1.656C5.2704 -1.7136 5.2848 -1.7712 5.2848 -1.8144V-2.3616V-2.5056C5.2848 -2.6784 5.328 -2.7504 5.4288 -2.8512L5.7024 -3.1824L6.768 -4.4352L7.4736 -5.256C7.5168 -5.3136 7.704 -5.5008 7.704 -5.5728C7.704 -5.6304 7.6464 -5.6736 7.6032 -5.7168L6.192 -7.128H6.1776C5.8176 -6.7824 5.4 -6.48 4.968 -6.2208C4.896 -6.1632 4.6224 -5.9904 4.5216 -5.9904C4.392 -5.9904 4.2768 -6.12 4.2048 -6.1632C3.9888 -6.3072 3.7728 -6.4944 3.5424 -6.6096C3.6288 -6.696 3.7152 -6.7968 3.7872 -6.8976L3.6144 -7.128C3.0528 -6.6384 2.5344 -6.12 1.9872 -5.616C1.9872 -6.2064 1.8432 -6.5376 1.5696 -6.9408C1.2816 -7.344 0.7776 -7.6464 0.7776 -8.28C0.7776 -8.5248 0.8784 -8.712 1.008 -8.8416L0.7632 -9.072ZM5.2992 -3.1824H5.2848V-5.4288C5.2848 -5.544 5.2704 -5.6736 5.2704 -5.7888C5.2704 -5.9472 5.2848 -6.1056 5.4288 -6.1056H5.4432C5.4864 -6.1056 5.5152 -6.0768 5.544 -6.048L6.3648 -5.2272C6.48 -5.112 6.5952 -4.9824 6.7248 -4.8816C6.2496 -4.3056 5.7456 -3.7728 5.2992 -3.1824ZM1.9872 -1.5984V-1.6992V-4.8816V-5.0112C1.9872 -5.184 2.0448 -5.2416 2.16 -5.328C2.232 -5.3856 2.5488 -5.7312 2.6352 -5.7456C2.7216 -5.7456 2.808 -5.6592 2.8656 -5.616L3.2832 -5.328C3.4128 -5.2272 3.5424 -5.2128 3.5424 -4.9824V-4.8672V-0.936V-0.792C3.5424 -0.7056 3.528 -0.6048 3.4416 -0.6048C3.3408 -0.6048 3.2112 -0.72 3.1392 -0.7632L2.3328 -1.224L2.1168 -1.3536C2.016 -1.3824 1.9872 -1.4688 1.9872 -1.5984Z"/>
+ <path id="g28" d="M0.7632 -9.072L0.4176 -8.6544C0.1728 -8.2944 -0.0144 -7.848 -0.0144 -7.4016C-0.0144 -7.2144 0.0144 -7.0128 0.1152 -6.8256C0.288 -6.4656 0.7056 -6.2352 0.7776 -5.8176V-2.1312C0.6768 -2.0736 0.6192 -1.9296 0.5616 -1.8288C0.432 -1.584 0.2736 -1.3392 0.144 -1.0944L1.872 -0.0864C2.088 0.0432 2.2896 0.1872 2.5488 0.2736L2.7648 0.1872L4.9104 -1.0512L4.7664 -1.3536C4.7232 -2.6496 4.7664 -4.0464 4.752 -5.3712L4.9104 -5.688C4.4496 -5.9904 4.0176 -6.3216 3.5424 -6.6096C3.6288 -6.696 3.7152 -6.7968 3.7872 -6.8976L3.6144 -7.128C3.0528 -6.6384 2.5344 -6.12 1.9872 -5.616C1.9872 -6.2064 1.8432 -6.5376 1.5696 -6.9408C1.2816 -7.344 0.7776 -7.6464 0.7776 -8.28C0.7776 -8.5248 0.8784 -8.712 1.008 -8.8416L0.7632 -9.072ZM1.9872 -1.5984V-1.6992V-4.8816V-5.0112C1.9872 -5.184 2.0448 -5.2416 2.16 -5.328C2.232 -5.3856 2.5488 -5.7312 2.6352 -5.7456C2.7216 -5.7456 2.808 -5.6592 2.8656 -5.616L3.2832 -5.328C3.4128 -5.2272 3.5424 -5.2128 3.5424 -4.9824V-4.8672V-0.936V-0.792C3.5424 -0.7056 3.528 -0.6048 3.4416 -0.6048C3.3408 -0.6048 3.2112 -0.72 3.1392 -0.7632L2.3328 -1.224L2.1168 -1.3536C2.016 -1.3824 1.9872 -1.4688 1.9872 -1.5984Z"/>
+ <path id="g29" d="M0.768 -6.804H0.756C0.648 -6.936 0.528 -7.068 0.408 -7.2L0.36 -6.984L0.48 -6.744L0.564 -6.36C0.564 -5.952 0.564 -5.544 0.552 -5.16C0.444 -4.944 0.324 -4.74 0.204 -4.536H0.564V-1.692C0.564 -1.596 0.564 -1.5 0.564 -1.404C0.564 -1.032 0.492 -0.744 0.204 -0.564L0.384 -0.408C0.636 -0.312 0.864 -0.192 1.08 -0.06C1.176 0.012 1.26 0.084 1.38 0.132L1.476 0.048L2.364 -0.936V-0.948L2.16 -1.092C2.124 -1.044 2.016 -0.876 1.932 -0.876C1.884 -0.876 1.836 -0.912 1.788 -0.936L1.5 -1.104C1.392 -1.164 1.368 -1.2 1.368 -1.368C1.368 -1.452 1.368 -1.536 1.368 -1.62V-4.536H2.604V-5.148H2.448C2.604 -5.532 2.784 -6.108 2.784 -6.552C2.784 -6.66 2.76 -6.768 2.688 -6.864C2.556 -7.032 2.34 -7.032 2.148 -7.068L1.368 -6.228C1.368 -6.348 1.356 -6.468 1.356 -6.6C1.356 -7.092 1.584 -7.452 2.16 -7.452C2.208 -7.452 2.268 -7.452 2.328 -7.452V-7.692C2.256 -7.692 2.196 -7.692 2.124 -7.692C2.028 -7.692 1.932 -7.692 1.836 -7.668C1.488 -7.56 1.224 -7.296 0.984 -7.032C0.912 -6.96 0.828 -6.888 0.768 -6.804ZM1.368 -5.148V-5.592C1.368 -5.64 1.368 -5.688 1.368 -5.748C1.368 -5.928 1.476 -5.976 1.572 -6.084L1.74 -6.252C1.764 -6.288 1.824 -6.36 1.896 -6.36C1.956 -6.36 2.04 -6.336 2.088 -6.3C2.256 -6.216 2.376 -6.108 2.376 -5.856C2.376 -5.676 2.292 -5.412 2.244 -5.256C2.22 -5.184 2.184 -5.136 2.076 -5.136C2.04 -5.136 1.992 -5.148 1.956 -5.148H1.368Z"/>
+ <path id="g30" d="M0.768 -6.804H0.756C0.66 -6.936 0.54 -7.104 0.408 -7.2C0.396 -7.128 0.36 -7.056 0.36 -6.984C0.372 -6.936 0.408 -6.888 0.432 -6.84C0.54 -6.684 0.564 -6.444 0.564 -6.204C0.564 -6.144 0.564 -6.072 0.564 -6.012V-1.536C0.564 -1.488 0.564 -1.428 0.564 -1.38C0.564 -1.02 0.492 -0.744 0.204 -0.564C0.252 -0.516 0.312 -0.444 0.384 -0.42C0.42 -0.42 0.564 -0.42 0.564 -0.444C0.624 -0.456 0.672 -0.456 0.72 -0.456C1.02 -0.456 1.164 -0.36 1.404 -0.24C1.368 -0.204 1.212 -0.06 1.212 0C1.212 0 1.212 0 1.212 0.012C1.212 0.072 1.308 0.132 1.368 0.132C1.44 0.132 1.5 0.012 1.524 -0.012L1.74 -0.252C1.992 -0.528 2.232 -0.816 2.496 -1.08V-1.092L2.292 -1.236L1.956 -0.84C1.824 -0.924 1.692 -0.996 1.56 -1.068C1.452 -1.128 1.368 -1.152 1.368 -1.308C1.368 -1.344 1.368 -1.392 1.368 -1.428V-3.876C1.368 -3.924 1.368 -3.984 1.368 -4.032C1.368 -4.188 1.416 -4.224 1.512 -4.296L1.86 -4.596C1.908 -4.632 1.944 -4.668 1.98 -4.668C2.004 -4.668 2.028 -4.656 2.064 -4.632C2.256 -4.44 2.412 -4.188 2.544 -3.96C2.88 -3.372 3.048 -2.7 3.048 -2.028C3.048 -1.788 3.024 -1.548 2.988 -1.32C2.808 -0.396 2.376 0.396 1.896 1.056C1.824 1.164 1.74 1.26 1.668 1.368C1.632 1.404 1.572 1.452 1.572 1.512C1.572 1.596 1.752 1.692 1.776 1.704C2.712 0.492 3.864 -0.744 3.864 -2.808C3.864 -3.684 3.468 -4.548 2.988 -5.112C2.964 -5.136 2.808 -5.328 2.796 -5.352C2.796 -5.388 2.832 -5.424 2.856 -5.448S3.048 -5.604 3.048 -5.628C3.012 -5.676 2.952 -5.772 2.88 -5.772C2.88 -5.772 2.868 -5.772 2.868 -5.772C2.808 -5.76 2.424 -5.412 2.424 -5.412L1.368 -4.5V-6.588C1.368 -6.708 1.368 -6.828 1.392 -6.948C1.464 -7.26 1.752 -7.488 2.076 -7.5V-7.74C1.632 -7.74 1.32 -7.404 1.044 -7.104C0.948 -7.008 0.852 -6.912 0.768 -6.804Z"/>
+ <path id="g31" d="M0.768 -6.804H0.756L0.42 -7.212H0.408C0.396 -7.152 0.36 -7.08 0.36 -7.008S0.42 -6.864 0.444 -6.816C0.516 -6.672 0.552 -6.516 0.552 -6.312C0.552 -6.216 0.552 -6.12 0.552 -6.036V-1.512C0.552 -1.452 0.552 -1.404 0.552 -1.344C0.552 -1.008 0.492 -0.732 0.204 -0.564C0.384 -0.372 0.636 -0.312 0.864 -0.192C1.044 -0.084 1.2 0.06 1.38 0.156C1.596 -0.108 1.836 -0.348 2.052 -0.6C2.088 -0.636 2.268 -0.804 2.268 -0.876C2.268 -0.936 2.148 -0.996 2.124 -0.996C2.04 -0.996 2.004 -0.876 1.92 -0.876C1.872 -0.876 1.404 -1.14 1.368 -1.224C1.368 -1.224 1.368 -5.64 1.368 -5.64C1.368 -5.748 1.356 -6.864 1.38 -6.864C1.428 -7.26 1.848 -7.452 2.208 -7.452V-7.692C1.752 -7.692 1.368 -7.44 1.056 -7.128C0.948 -7.032 0.852 -6.924 0.768 -6.804Z"/>
+ <path id="g32" d="M0.7776 -9.072C0.36 -8.6544 -0.0288 -8.0208 -0.0288 -7.4016C-0.0288 -7.2 0.0144 -6.9984 0.1152 -6.8112C0.3024 -6.4656 0.7056 -6.2496 0.7776 -5.832V-2.1312C0.5328 -1.8144 0.3456 -1.44 0.1584 -1.08L1.8864 -0.0864C2.1024 0.0432 2.304 0.1872 2.5632 0.2736C2.9232 0.1008 3.2688 -0.1008 3.6144 -0.3024C3.7296 -0.36 3.888 -0.5328 4.0752 -0.432C4.4784 -0.1872 4.8816 0.0576 5.3136 0.2736L5.5296 0.1872L7.704 -1.0656L7.56 -1.368C7.5168 -2.6784 7.5456 -4.0896 7.56 -5.3712L7.704 -5.688L6.4944 -6.5232C6.3504 -6.6096 6.2208 -6.7248 6.048 -6.7824C5.6304 -6.4512 5.2992 -6.048 4.8672 -5.7456C4.4064 -6.0048 4.0176 -6.3504 3.5568 -6.6096C3.5856 -6.6528 3.8016 -6.8688 3.8016 -6.8976C3.8016 -6.984 3.6864 -7.0704 3.6288 -7.128H3.6144L1.9872 -5.616V-5.9472C1.9296 -6.2928 1.7856 -6.624 1.584 -6.912C1.3104 -7.3152 0.7776 -7.6464 0.7776 -8.2656C0.7776 -8.3808 0.8064 -8.496 0.8496 -8.5968C0.8784 -8.6832 1.008 -8.856 1.008 -8.856L0.7776 -9.072ZM3.4272 -1.9728C3.2544 -1.6848 3.0816 -1.3968 2.9376 -1.08L3.4416 -0.8064C3.4416 -1.1952 3.4416 -1.5984 3.4272 -1.9728ZM2.6352 -5.7888C2.8368 -5.6304 3.0528 -5.5008 3.2688 -5.3568C3.4128 -5.2416 3.5568 -5.2128 3.5568 -4.9824V-4.8672V-0.9504V-0.792C3.5568 -0.7056 3.5424 -0.6048 3.4416 -0.6048C3.3552 -0.6048 3.24 -0.6912 3.1824 -0.7344C2.9808 -0.8496 2.304 -1.2384 2.1312 -1.3536C2.016 -1.4112 1.9872 -1.4544 1.9872 -1.6128V-1.7424V-4.8384V-4.9968C1.9872 -5.0544 1.9872 -5.112 2.0016 -5.1552C2.0304 -5.2416 2.5056 -5.6304 2.6352 -5.7888ZM5.4144 -5.7888C5.616 -5.6304 5.832 -5.5008 6.048 -5.3568C6.192 -5.2416 6.336 -5.2128 6.336 -4.9824V-4.8672V-0.9504V-0.792C6.336 -0.7056 6.3216 -0.6048 6.2208 -0.6048C6.1344 -0.6048 6.0192 -0.6912 5.9616 -0.7344C5.76 -0.8496 5.0832 -1.2384 4.9104 -1.3536C4.7952 -1.4112 4.7664 -1.4544 4.7664 -1.6128V-1.7424V-4.8384V-4.9968C4.7664 -5.0544 4.7664 -5.112 4.7808 -5.1552C4.8096 -5.2416 5.2848 -5.6304 5.4144 -5.7888Z"/>
+ <path id="g33" d="M0.792 -4.284L1.5 -5.136C1.128 -5.436 0.912 -5.892 0.9 -6.372C0.9 -6.9 1.188 -7.5 1.716 -7.692C1.836 -7.728 1.956 -7.74 2.088 -7.74C2.412 -7.74 2.712 -7.56 2.964 -7.368C3.48 -6.936 3.996 -6.084 4.848 -6.084C5.52 -6.084 5.94 -6.696 5.94 -7.248C5.94 -7.416 5.868 -7.56 5.796 -7.716L5.556 -7.608C5.604 -7.488 5.664 -7.38 5.664 -7.26C5.664 -6.996 5.484 -6.792 5.22 -6.792C4.836 -6.792 4.596 -7.056 4.428 -7.26C4.068 -7.716 3.816 -8.46 3.036 -8.46C2.94 -8.46 2.856 -8.46 2.772 -8.448C1.656 -8.316 0.624 -7.56 0.312 -6.456C0.252 -6.264 0.204 -6.036 0.204 -5.832C0.204 -5.484 0.324 -5.28 0.456 -5.016C0.504 -4.92 0.552 -4.824 0.576 -4.716C0.6 -4.644 0.576 -4.548 0.6 -4.476C0.636 -4.392 0.72 -4.32 0.792 -4.284ZM0.744 1.536C0.804 1.512 0.96 1.476 0.96 1.392C0.936 1.248 0.864 1.092 0.864 0.936C0.864 0.696 1.068 0.588 1.32 0.588S1.776 0.708 1.968 0.864C2.292 1.14 2.556 1.548 2.988 1.656C3.072 1.668 3.144 1.668 3.228 1.668C3.984 1.668 4.572 1.02 4.92 0.552C5.376 -0.036 5.736 -0.78 5.736 -1.596C5.736 -1.776 5.724 -1.956 5.664 -2.136C5.46 -2.832 4.92 -3.36 4.608 -3.996C4.488 -4.248 4.38 -4.536 4.38 -4.824C4.38 -5.028 4.428 -5.22 4.524 -5.352C4.62 -5.448 4.68 -5.532 4.848 -5.532C4.992 -5.532 5.136 -5.436 5.244 -5.328C5.412 -5.136 5.472 -4.848 5.472 -4.596H5.736C5.736 -5.148 5.46 -5.796 4.788 -5.796C4.728 -5.796 4.656 -5.796 4.584 -5.784C3.96 -5.688 3.324 -5.22 3.324 -4.44C3.324 -4.08 3.444 -3.72 3.612 -3.408C4.104 -2.532 5.052 -1.836 5.052 -0.66C5.052 0.036 4.68 0.804 3.828 0.804C3.768 0.804 3.72 0.792 3.672 0.792C2.952 0.684 2.616 -0.156 1.896 -0.264C1.848 -0.264 1.8 -0.276 1.752 -0.276C1.056 -0.276 0.6 0.252 0.6 0.864C0.6 1.092 0.66 1.332 0.744 1.536Z"/>
+ <path id="g34" d="M0.864 -5.976C0.66 -5.664 0.36 -5.316 0.36 -4.872C0.36 -4.788 0.372 -4.716 0.408 -4.644C0.564 -4.38 0.924 -4.26 0.972 -3.936C0.984 -3.828 0.984 -3.732 0.984 -3.624V-1.584L0.708 -1.68L0.192 -0.852C0.468 -0.744 0.756 -0.648 1.02 -0.528L1.056 -0.312C1.116 0.552 1.188 1.404 1.26 2.256H1.512C1.584 1.404 1.644 0.552 1.716 -0.3L2.928 0.132C3 0 3.084 -0.12 3.168 -0.252C3.648 -1.02 4.368 -2.016 4.368 -3.072C4.368 -4.056 3.876 -4.824 3.456 -5.352C3.42 -5.4 3.288 -5.604 3.204 -5.604C3.156 -5.604 3.108 -5.568 3.072 -5.544L2.808 -5.352C2.46 -5.124 2.148 -4.86 1.788 -4.644C1.776 -4.764 1.656 -4.812 1.56 -4.872C1.356 -4.98 1.104 -5.04 0.96 -5.22C0.9 -5.292 0.852 -5.376 0.852 -5.472C0.852 -5.64 1.02 -5.784 1.092 -5.868L0.864 -5.976ZM3.216 -0.768C2.76 -0.96 2.244 -1.092 1.812 -1.308L1.788 -1.512C1.8 -2.472 1.752 -3.456 1.812 -4.332C2.04 -4.524 2.304 -4.692 2.556 -4.86C2.64 -4.704 2.772 -4.572 2.88 -4.44C3.288 -3.912 3.708 -3.192 3.708 -2.376C3.708 -1.872 3.564 -1.452 3.384 -1.068C3.324 -0.972 3.264 -0.876 3.216 -0.768Z"/>
+ <path id="g35" d="M0.888 -6.396L1.092 -6.264C1.38 -6.708 1.908 -7.008 2.448 -7.008C2.568 -7.008 2.7 -6.996 2.82 -6.96C3.228 -6.84 3.636 -6.516 3.636 -6.024C3.636 -5.916 3.6 -5.808 3.552 -5.724C3.408 -5.472 3.12 -5.388 2.844 -5.388C2.436 -5.388 1.98 -5.568 1.74 -5.712C1.704 -5.736 1.656 -5.772 1.608 -5.772C1.548 -5.772 1.512 -5.688 1.476 -5.652C1.056 -5.064 0.612 -4.488 0.204 -3.888C0.648 -3.564 1.176 -3.024 1.176 -2.304C1.176 -1.92 0.996 -1.716 0.816 -1.476C0.612 -1.188 0.384 -0.9 0.204 -0.588C0.288 -0.516 0.36 -0.456 0.504 -0.456C0.552 -0.456 0.588 -0.456 0.624 -0.456C1.26 -0.456 1.8 -0.18 2.184 0.048C2.232 0.084 2.28 0.132 2.34 0.132C2.34 0.132 2.352 0.132 2.352 0.132C2.4 0.12 2.592 -0.06 2.592 -0.06L3.144 -0.564C3.624 -0.996 4.176 -1.56 4.176 -2.256C4.176 -2.868 3.792 -3.228 3.456 -3.492C3.336 -3.588 2.952 -3.864 2.844 -3.924C3.096 -4.26 3.324 -4.608 3.564 -4.944C3.72 -5.16 3.936 -5.388 3.996 -5.652C4.008 -5.652 4.02 -5.832 4.02 -5.832S4.008 -6.084 3.984 -6.084C3.96 -6.228 3.9 -6.36 3.828 -6.492C3.6 -6.948 2.988 -7.248 2.436 -7.248C1.8 -7.248 1.152 -6.876 0.888 -6.396ZM1.008 -4.584C1.104 -4.716 1.2 -4.86 1.32 -4.98C1.872 -4.824 2.352 -4.584 2.88 -4.404L1.908 -3.024C1.884 -3.156 1.86 -3.3 1.824 -3.432C1.716 -3.744 1.548 -4.032 1.344 -4.272C1.236 -4.38 1.14 -4.512 1.008 -4.584ZM0.912 -1.176L2.256 -3.096C2.364 -3.036 2.46 -2.964 2.568 -2.892C2.976 -2.64 3.492 -2.304 3.492 -1.764C3.492 -1.452 3.348 -1.2 3.216 -1.032C3.168 -0.972 2.868 -0.6 2.784 -0.6C2.736 -0.6 2.676 -0.66 2.628 -0.684C2.088 -0.984 1.74 -1.116 0.912 -1.176Z"/>
+ <path id="g36" d="M0.984 -6.06C1.008 -6.06 1.044 -6.06 1.08 -6.06C1.26 -6.06 1.308 -6.132 1.38 -6.252C1.5 -6.444 1.608 -6.672 1.608 -6.936C1.608 -7.116 1.476 -7.2 1.296 -7.2C1.056 -7.2 0.96 -7.008 0.96 -6.756C0.96 -6.708 0.96 -6.648 0.96 -6.6C0.96 -6.42 0.984 -6.24 0.984 -6.06ZM0.204 -4.704V-4.692L0.372 -4.536H0.384L0.636 -4.8V-1.548C0.636 -1.476 0.636 -1.416 0.636 -1.344C0.636 -1.236 0.636 -1.128 0.66 -1.032C0.744 -0.564 0.996 -0.156 1.356 0.156H1.368C1.632 -0.168 1.884 -0.492 2.124 -0.84C2.076 -0.876 2.004 -0.948 1.944 -0.948C1.896 -0.948 1.788 -0.9 1.788 -0.9C1.668 -0.9 1.56 -1.008 1.5 -1.104C1.44 -1.236 1.44 -1.392 1.44 -1.536V-3.696C1.44 -3.828 1.44 -3.96 1.44 -4.092C1.44 -4.62 1.56 -4.908 1.848 -5.196C1.644 -5.388 1.464 -5.604 1.236 -5.772L1.128 -5.712C0.828 -5.364 0.516 -5.04 0.204 -4.704Z"/>
+ <path id="g37" d="M1.044 -3.696L1.164 -3.456C1.44 -3.54 1.716 -3.672 1.968 -3.816C2.16 -3.912 2.412 -4.104 2.412 -4.368C2.412 -4.488 2.376 -4.596 2.34 -4.728C2.256 -5.052 2.22 -5.448 1.98 -5.7C1.872 -5.796 1.728 -5.82 1.596 -5.82C1.512 -5.82 1.416 -5.808 1.332 -5.808C1.032 -5.808 0.792 -5.904 0.792 -6.204C0.792 -6.24 0.804 -6.288 0.804 -6.324C0.876 -6.912 1.392 -7.416 2.088 -7.416C2.628 -7.416 2.988 -7.104 3.252 -6.744C3.6 -6.24 3.72 -5.592 3.768 -4.992C3.768 -4.956 3.768 -4.908 3.768 -4.872C3.768 -4.788 3.768 -4.704 3.768 -4.62C3.768 -4.512 3.78 -4.392 3.78 -4.272C3.78 -4.02 3.756 -3.744 3.636 -3.516C3.42 -3.096 2.928 -2.892 2.424 -2.844C2.256 -2.832 2.088 -2.844 1.92 -2.832C1.152 -2.76 0.204 -2.316 0.204 -1.392C0.204 -1.104 0.312 -0.804 0.576 -0.804C0.792 -0.804 0.876 -1.02 0.876 -1.188C0.876 -1.332 0.828 -1.488 0.768 -1.572C0.756 -1.596 0.612 -1.776 0.612 -1.8C0.624 -1.836 0.648 -1.872 0.672 -1.896C0.828 -2.052 1.008 -2.172 1.296 -2.172C1.56 -2.172 1.848 -2.064 2.064 -1.92C2.724 -1.5 3.072 -0.756 3.66 -0.264C3.876 -0.084 4.104 0.06 4.38 0.12C4.392 0.12 4.668 0.18 4.668 0.156C4.8 0.144 4.92 0.06 5.04 0L5.772 -0.324C6.216 -0.516 6.684 -0.684 7.092 -0.936C7.848 -1.392 8.544 -2.184 8.544 -3.336C8.544 -4.38 7.968 -5.448 6.924 -5.748C6.744 -5.808 6.564 -5.832 6.372 -5.832V-5.844L7.644 -6.48L7.572 -6.648C7.536 -6.636 7.5 -6.624 7.464 -6.624C7.452 -6.624 7.452 -6.624 7.44 -6.624C7.296 -6.624 7.188 -6.768 7.116 -6.888C7.02 -7.044 6.996 -7.224 6.948 -7.404C6.792 -7.86 6.492 -8.292 5.916 -8.292C5.184 -8.292 4.764 -7.668 4.536 -7.164C4.488 -7.032 4.416 -6.9 4.392 -6.768C4.32 -6.936 4.248 -7.116 4.152 -7.284C3.816 -7.896 3.24 -8.46 2.316 -8.46C2.088 -8.46 1.944 -8.412 1.752 -8.352C0.936 -8.028 0.528 -7.056 0.528 -6.18C0.528 -5.688 0.66 -5.076 1.02 -4.896C1.224 -4.8 1.464 -4.824 1.68 -4.8C1.908 -4.764 2.16 -4.656 2.16 -4.368C2.16 -4.224 2.064 -4.116 1.944 -4.044C1.68 -3.876 1.344 -3.804 1.044 -3.696ZM6.168 -5.724L4.704 -4.992V-4.98C4.884 -4.98 5.076 -4.968 5.256 -4.944C6.324 -4.812 7.572 -4.236 7.692 -2.952C7.692 -2.808 7.692 -2.664 7.656 -2.52C7.548 -1.968 7.164 -1.536 6.78 -1.152C6.528 -0.9 6.216 -0.576 5.784 -0.576C5.736 -0.576 5.688 -0.588 5.64 -0.588C4.8 -0.696 4.248 -1.452 3.696 -2.004C3.564 -2.136 3.42 -2.268 3.276 -2.388C3.18 -2.46 3.072 -2.52 2.988 -2.604C3.216 -2.604 3.468 -2.664 3.684 -2.736C4.32 -2.952 4.704 -3.408 4.704 -4.26C4.704 -4.416 4.692 -4.572 4.692 -4.728C4.668 -5.256 4.68 -5.652 4.572 -6.144C4.548 -6.216 4.524 -6.3 4.524 -6.384C4.524 -6.396 4.524 -6.408 4.524 -6.42C4.524 -6.492 4.548 -6.552 4.572 -6.624C4.668 -6.96 4.884 -7.356 5.316 -7.356C5.472 -7.356 5.616 -7.296 5.724 -7.164C5.868 -6.996 5.904 -6.768 5.952 -6.564C6 -6.276 6.048 -6 6.168 -5.724Z"/>
+ <path id="g38" d="M1.044 -5.808C0.768 -5.46 0.48 -5.124 0.204 -4.764C0.264 -4.728 0.324 -4.692 0.384 -4.644C0.648 -4.392 0.648 -4.068 0.648 -3.732V-1.488C0.648 -1.08 0.612 -0.72 0.204 -0.564C0.252 -0.516 0.336 -0.42 0.408 -0.42C0.456 -0.42 0.516 -0.432 0.552 -0.444C0.648 -0.456 0.744 -0.468 0.84 -0.468C0.996 -0.444 1.128 -0.42 1.272 -0.36C1.344 -0.324 1.416 -0.276 1.488 -0.24C1.44 -0.192 1.296 -0.072 1.296 0C1.296 0.06 1.38 0.132 1.44 0.132C1.524 0.132 1.56 0.036 1.596 0L1.848 -0.276C2.136 -0.612 2.472 -0.924 2.736 -1.272C2.688 -1.308 2.616 -1.38 2.556 -1.38S2.436 -1.308 2.4 -1.26L2.16 -0.996C2.112 -0.948 2.076 -0.876 2.004 -0.876C1.956 -0.876 1.92 -0.912 1.884 -0.936C1.764 -1.008 1.608 -1.068 1.5 -1.152C1.452 -1.2 1.452 -1.248 1.452 -1.296C1.452 -1.32 1.452 -1.332 1.452 -1.356V-3.864C1.452 -3.888 1.452 -3.912 1.452 -3.948C1.452 -4.14 1.596 -4.176 1.716 -4.272C1.908 -4.428 2.136 -4.56 2.304 -4.74H2.316C2.412 -4.62 2.52 -4.512 2.616 -4.392C3.096 -3.828 3.456 -2.964 3.456 -2.04C3.456 -1.884 3.444 -1.728 3.42 -1.572C3.276 -0.588 2.7 0.264 2.184 0.936C2.1 1.032 1.764 1.452 1.716 1.536C1.776 1.572 1.86 1.68 1.932 1.68C1.98 1.68 2.028 1.596 2.064 1.56L2.364 1.2C2.76 0.72 3.156 0.216 3.48 -0.324C3.876 -0.984 4.272 -1.752 4.272 -2.712C4.272 -3.84 3.744 -4.728 3.108 -5.364C3.216 -5.448 3.348 -5.508 3.42 -5.628L3.3 -5.808L1.452 -4.38C1.452 -4.404 1.464 -4.92 1.452 -4.92C1.416 -5.244 1.284 -5.58 1.044 -5.808Z"/>
+ <path id="g39" d="M1.068 -5.808L0.204 -4.764C0.42 -4.668 0.588 -4.476 0.648 -4.236C0.672 -4.104 0.672 -3.972 0.672 -3.84V-2.076C0.672 -1.896 0.684 -1.716 0.684 -1.524C0.684 -1.272 0.672 -0.972 0.552 -0.828C0.492 -0.744 0.396 -0.756 0.396 -0.6C0.396 -0.564 0.408 -0.504 0.408 -0.468C0.6 -0.408 0.72 -0.264 0.816 -0.096C0.888 0.024 0.888 0.168 1.08 0.168C1.116 0.168 1.164 0.156 1.2 0.156C1.272 -0.12 1.452 -0.384 1.74 -0.468V-0.72C1.488 -0.828 1.476 -1.056 1.476 -1.392V-4.212C1.476 -4.248 1.476 -4.296 1.476 -4.332C1.476 -4.488 1.548 -4.524 1.656 -4.596S1.86 -4.74 1.968 -4.824C2.016 -4.86 2.076 -4.92 2.148 -4.92S2.304 -4.8 2.352 -4.74C2.484 -4.572 2.628 -4.416 2.76 -4.248C2.868 -4.14 2.964 -4.08 2.964 -3.876C2.964 -3.804 2.952 -3.72 2.952 -3.636V-1.704C2.952 -1.572 2.964 -1.416 2.964 -1.284C2.964 -1.068 2.952 -0.924 2.832 -0.804C2.772 -0.744 2.688 -0.732 2.688 -0.6C2.688 -0.564 2.7 -0.504 2.7 -0.468C2.88 -0.408 3 -0.276 3.096 -0.12L3.192 0.048C3.216 0.132 3.264 0.168 3.372 0.168C3.408 0.168 3.456 0.156 3.492 0.156C3.552 -0.12 3.756 -0.384 4.032 -0.468V-0.72C3.78 -0.816 3.768 -1.08 3.768 -1.32C3.768 -1.356 3.768 -1.392 3.768 -1.428V-4.104C3.768 -4.164 3.768 -4.248 3.768 -4.308C3.768 -4.476 3.792 -4.476 3.912 -4.572L4.284 -4.836C4.32 -4.872 4.38 -4.92 4.44 -4.92S4.536 -4.86 4.572 -4.824C4.632 -4.74 4.98 -4.332 5.088 -4.212C5.136 -4.152 5.208 -4.092 5.232 -4.02C5.244 -4.02 5.244 -3.936 5.244 -3.936V-1.152C5.244 -1.104 5.244 -1.032 5.244 -0.984C5.244 -0.816 5.268 -0.756 5.328 -0.636C5.364 -0.564 5.556 -0.204 5.556 -0.144C5.556 -0.048 5.472 -0.012 5.472 0.072C5.472 0.144 5.58 0.204 5.64 0.228L6.48 -1.02V-1.032L6.276 -1.176L6.18 -1.008C6.096 -1.092 6.06 -1.128 6.06 -1.308C6.06 -1.344 6.06 -1.38 6.06 -1.416V-4.548C6.06 -4.572 6.06 -4.608 6.06 -4.632C6.06 -4.812 6.168 -4.86 6.324 -4.884V-5.052C6.012 -5.052 5.724 -5.196 5.508 -5.412C5.436 -5.496 5.364 -5.58 5.292 -5.676C5.268 -5.712 5.244 -5.772 5.196 -5.772C5.184 -5.772 5.184 -5.772 5.172 -5.772C5.136 -5.772 5.112 -5.748 5.076 -5.724C4.848 -5.556 3.828 -4.812 3.792 -4.812C3.78 -4.812 3.78 -4.812 3.768 -4.812C3.744 -4.812 3.732 -4.824 3.708 -4.848C3.516 -5.1 3.3 -5.328 3.108 -5.568C3.06 -5.616 2.976 -5.772 2.892 -5.772C2.856 -5.772 2.832 -5.748 2.796 -5.736C2.712 -5.664 2.616 -5.604 2.532 -5.544C2.184 -5.292 1.836 -5.016 1.476 -4.776C1.476 -5.148 1.344 -5.544 1.068 -5.808Z"/>
+ <path id="g40" d="M1.1088 -8.6544H1.0944C1.0224 -8.7408 0.936 -8.7984 0.8496 -8.8704L0.4464 -9.1872C0.3888 -9.2448 0.3024 -9.3456 0.216 -9.3456H0.2016C0.1152 -9.3456 0.0288 -9.2304 -0.0288 -9.1584C0.4896 -8.8416 0.7776 -8.3376 0.7776 -7.5168V-7.0128V-2.1312C0.6768 -2.0736 0.6192 -1.9296 0.5616 -1.8288C0.432 -1.584 0.2736 -1.3392 0.144 -1.0944L1.872 -0.0864C2.088 0.0432 2.2896 0.1872 2.5488 0.2736L2.7648 0.1872L4.9104 -1.0512L4.7664 -1.3536C4.7232 -2.6496 4.7664 -4.0464 4.752 -5.3712L4.9104 -5.688L3.7296 -6.4944C3.5856 -6.5952 3.456 -6.7104 3.2688 -6.7824L3.1392 -6.696L1.9872 -5.616V-7.56V-8.0352C1.9872 -8.2656 2.0016 -8.496 2.0736 -8.7264C2.1744 -9.0432 2.448 -9.432 2.8512 -9.432C3.0384 -9.432 3.1392 -9.3168 3.1824 -9.1296C3.24 -9.1728 3.3408 -9.2448 3.3408 -9.3456C3.3408 -9.5328 3.0816 -9.6336 2.9088 -9.6336C2.4192 -9.6336 2.016 -9.2592 1.7424 -9.0864C1.5408 -8.9424 1.296 -8.8272 1.1088 -8.6544ZM1.9872 -1.5984V-1.6992V-4.8816V-5.0112C1.9872 -5.184 2.0448 -5.2416 2.16 -5.328C2.232 -5.3856 2.5488 -5.7312 2.6352 -5.7456C2.7216 -5.7456 2.808 -5.6592 2.8656 -5.616L3.2832 -5.328C3.4128 -5.2272 3.5424 -5.2128 3.5424 -4.9824V-4.8672V-0.936V-0.792C3.5424 -0.7056 3.528 -0.6048 3.4416 -0.6048C3.3408 -0.6048 3.2112 -0.72 3.1392 -0.7632L2.3328 -1.224L2.1168 -1.3536C2.016 -1.3824 1.9872 -1.4688 1.9872 -1.5984Z"/>
+ <path id="g41" d="M1.1664 -8.4096C1.5408 -8.4096 1.9296 -8.3664 2.2464 -8.3088C3.168 -8.1216 4.2336 -7.6032 4.4208 -6.5808C4.4352 -6.5808 4.4352 -6.1056 4.4352 -6.1056C4.4208 -5.8752 4.3632 -5.6448 4.2768 -5.4288C3.8016 -4.248 2.592 -3.6 1.3968 -3.2544C1.1232 -3.1824 0.288 -2.9952 0.1584 -2.952L0.2736 -2.6208C0.4896 -2.6496 0.6912 -2.7072 0.9072 -2.7504L1.9872 -2.9952C2.7072 -3.1536 3.4272 -3.2832 4.0896 -3.6432C4.6944 -3.9888 5.1408 -4.4352 5.544 -5.0112C5.6016 -5.1408 5.6304 -5.256 5.8176 -5.256C5.8896 -5.256 6.5664 -5.1696 6.84 -5.1264C8.1648 -4.896 9.9216 -4.2912 9.9216 -2.5488C9.9216 -2.1168 9.8064 -1.6848 9.5616 -1.3248C9.2592 -0.864 8.6256 -0.432 7.8912 -0.432C7.4592 -0.432 7.0416 -0.576 6.6528 -0.7632C5.8464 -1.1376 5.1408 -1.7136 4.4352 -2.2464L3.816 -2.6928C3.7152 -2.7648 3.5712 -2.9232 3.4272 -2.9232C3.3552 -2.9232 0.4176 -2.2608 0.4176 -2.2608C0.432 -2.1888 0.4608 -2.1024 0.4896 -2.0304C0.5328 -1.8864 0.6624 -1.9296 0.8496 -1.9008C1.6992 -1.8432 2.3184 -1.5696 2.9808 -1.2528C4.2048 -0.7056 5.4432 0.1872 7.0992 0.1872C7.3296 0.1872 7.56 0.1584 7.776 0.1152C8.5824 -0.1008 9.2592 -0.432 9.8208 -0.9216C10.5264 -1.5264 11.1888 -2.376 11.1888 -3.6C11.1888 -4.9248 10.3536 -6.2784 9.0864 -6.408V-6.4224L9.5328 -6.696C9.8784 -7.0128 10.3392 -7.2432 10.6128 -7.632L10.4544 -7.8336L8.3088 -10.0512H8.2944L5.976 -7.8048C5.688 -8.6688 4.9968 -9.3312 4.1904 -9.7344C4.0608 -9.792 3.5712 -10.0368 3.4272 -10.0368C3.312 -10.0224 3.1824 -9.9216 3.096 -9.864L2.3616 -9.4032L1.5408 -8.8848L1.3104 -8.7408C1.224 -8.6832 1.1664 -8.6544 1.1664 -8.5104V-8.4096ZM9.072 -6.8256C8.9136 -6.7392 8.7552 -6.6384 8.5968 -6.552C7.8336 -6.1056 6.8832 -5.8176 5.8608 -5.6592C6.0048 -6.0192 6.0768 -6.3936 6.1056 -6.7824V-7.1568C6.0912 -7.2 6.0912 -7.2432 6.0912 -7.2864C6.0912 -7.488 6.264 -7.5744 6.3648 -7.6608C6.5088 -7.7904 6.6384 -7.9344 6.7824 -8.064C6.8544 -8.1216 7.2432 -8.568 7.344 -8.568C7.416 -8.568 7.488 -8.4672 7.5168 -8.4384L9.072 -6.8256Z"/>
+ <path id="g42" d="M1.176 -5.808L0.204 -4.74C0.564 -4.668 0.768 -4.404 0.768 -3.96C0.768 -3.888 0.768 -3.816 0.768 -3.744V-1.728C0.768 -1.596 0.768 -1.452 0.768 -1.308C0.768 -1.236 0.768 -1.176 0.768 -1.104C0.744 -0.828 0.48 -0.576 0.204 -0.564C0.276 -0.468 0.36 -0.384 0.528 -0.384C0.804 -0.336 1.044 -0.216 1.248 -0.096C1.296 -0.072 1.524 0.132 1.572 0.132C1.644 0.132 1.692 0.048 1.728 0.012C1.812 -0.096 3.06 -1.476 3.06 -1.476V-1.488L2.88 -1.632H2.868C2.688 -1.452 2.532 -1.26 2.364 -1.068C2.304 -1.008 2.232 -0.888 2.148 -0.876C2.064 -0.876 1.956 -0.96 1.896 -0.996L1.704 -1.116C1.62 -1.14 1.584 -1.2 1.584 -1.308C1.584 -1.344 1.584 -1.392 1.584 -1.428V-4.176C1.584 -4.212 1.584 -4.248 1.584 -4.296C1.584 -4.476 1.668 -4.512 1.776 -4.62C1.896 -4.74 2.016 -4.872 2.148 -4.98C2.412 -4.62 2.688 -4.272 2.964 -3.924H2.976L3.588 -4.536V-4.548L2.964 -5.34C2.856 -5.484 2.712 -5.628 2.652 -5.808L1.584 -4.752C1.584 -5.136 1.44 -5.532 1.176 -5.808Z"/>
+ <path id="g43" d="M1.1808 -7.128L0.504 -6.552C0.4464 -6.5088 0.3024 -6.4368 0.3024 -6.3504V-6.336C0.3024 -6.264 0.3888 -6.192 0.432 -6.1488L0.7776 -5.7312H0.5184C0.504 -4.3776 0.5472 -2.9664 0.504 -1.656C0.3168 -1.4544 0.1008 -1.2816 -0.1152 -1.0944V-1.08L1.0512 0.3024H1.0656L1.7424 -0.2736C1.8 -0.3168 1.944 -0.3888 1.944 -0.4752V-0.4896C1.944 -0.5616 1.8576 -0.6336 1.8144 -0.6768L1.4688 -1.0944H1.728C1.7424 -2.3472 1.6992 -3.6576 1.7424 -4.8816C2.1888 -5.328 2.7072 -5.688 3.1824 -6.1056L3.4704 -5.7312H3.2256C3.2112 -4.3776 3.2544 -2.9664 3.2112 -1.656C3.024 -1.4544 2.808 -1.2816 2.592 -1.1088C2.9664 -0.6192 3.3696 -0.1584 3.7584 0.3024H3.7728L4.68 -0.4608C4.5216 -0.6768 4.3488 -0.8928 4.176 -1.0944H4.4352C4.464 -2.3472 4.3776 -3.7152 4.464 -4.896C4.896 -5.328 5.4 -5.688 5.8608 -6.1056H5.8752L6.1776 -5.7312H5.9184V-1.728C5.9184 -1.6272 5.8464 -1.5696 5.7744 -1.512L5.4864 -1.2672C5.4288 -1.224 5.328 -1.1664 5.328 -1.08C5.328 -1.008 5.4 -0.9504 5.4288 -0.9216L5.6448 -0.6624C5.9184 -0.3456 6.192 -0.0288 6.4512 0.3024H6.4656L7.1424 -0.2592C7.2 -0.3168 7.344 -0.3888 7.344 -0.4752V-0.4896C7.344 -0.5616 7.2576 -0.6336 7.2288 -0.6768L6.8688 -1.0944H7.128C7.1424 -2.448 7.0992 -3.8592 7.1424 -5.1696C7.3296 -5.3712 7.5456 -5.544 7.7616 -5.7168C7.3872 -6.2064 6.984 -6.6672 6.5952 -7.128H6.5808L4.4352 -5.328V-6.3504H4.536L3.9024 -7.128C3.1536 -6.552 2.4624 -5.9184 1.728 -5.3136V-6.3504H1.8288C1.6272 -6.624 1.4112 -6.8832 1.1808 -7.128Z"/>
+ <path id="g44" d="M1.1808 -7.128L0.504 -6.552C0.4464 -6.5088 0.3024 -6.4368 0.3024 -6.3504V-6.336C0.3024 -6.264 0.3888 -6.192 0.432 -6.1488L0.7776 -5.7312H0.5184C0.504 -4.3776 0.5472 -2.9664 0.504 -1.656C0.3168 -1.4544 0.1008 -1.2816 -0.1152 -1.0944V-1.08L1.0512 0.3024H1.0656L1.7424 -0.2736C1.8 -0.3168 1.944 -0.3888 1.944 -0.4752V-0.4896C1.944 -0.5616 1.8576 -0.6336 1.8144 -0.6768L1.4688 -1.0944H1.728C1.7424 -2.3472 1.6992 -3.6576 1.7424 -4.8816C2.1888 -5.328 2.7072 -5.688 3.1824 -6.1056L3.4704 -5.7312H3.2256C3.2112 -4.3776 3.2544 -2.9664 3.2112 -1.656C3.024 -1.4544 2.808 -1.2816 2.592 -1.1088C2.9664 -0.6192 3.3696 -0.1584 3.7584 0.3024H3.7728L4.68 -0.4608C4.5216 -0.6768 4.3488 -0.8928 4.176 -1.0944H4.4352V-4.6656V-4.968C4.4352 -5.1696 4.4496 -5.2128 4.5792 -5.3136L4.8816 -5.5728C4.9248 -5.616 5.0256 -5.6736 5.0256 -5.7456C5.0256 -5.8032 4.968 -5.8464 4.9392 -5.8896C4.68 -6.2064 4.0608 -6.912 3.9024 -7.128C3.1536 -6.552 2.4624 -5.9184 1.728 -5.3136V-6.3504H1.8288C1.6272 -6.624 1.4112 -6.8832 1.1808 -7.128Z"/>
+ <path id="g45" d="M1.1808 -7.128L0.504 -6.552C0.4464 -6.5088 0.3024 -6.4368 0.3024 -6.3504V-6.336C0.3024 -6.264 0.3888 -6.192 0.432 -6.1488L0.7776 -5.7312H0.5184C0.504 -4.3776 0.5472 -2.9664 0.504 -1.656C0.3168 -1.4544 0.1008 -1.2816 -0.1152 -1.0944V-1.08L1.0512 0.3024H1.0656L3.2256 -1.512C3.2256 -1.1088 3.2256 -0.7056 3.24 -0.3312C3.3984 -0.1008 3.5856 0.1008 3.7584 0.3024H3.7728L4.68 -0.4608C4.5216 -0.6768 4.3488 -0.8928 4.176 -1.0944H4.4352V-4.6656V-4.968C4.4352 -5.1696 4.4496 -5.2128 4.5792 -5.3136L4.8816 -5.5728C4.9248 -5.616 5.0256 -5.6736 5.0256 -5.7456C5.0256 -5.8032 4.968 -5.8464 4.9392 -5.8896C4.68 -6.2064 4.0608 -6.912 3.9024 -7.128C3.5856 -6.8832 3.2688 -6.624 2.9664 -6.3648L3.4704 -5.7312H3.2256C3.1968 -4.4784 3.2832 -3.1248 3.1968 -1.944C2.8512 -1.6272 2.4912 -1.3248 2.1312 -1.0224C2.016 -0.936 1.9296 -0.8208 1.7856 -0.7632C1.656 -0.8496 1.5696 -0.9792 1.4688 -1.0944H1.728C1.7424 -2.448 1.6992 -3.8592 1.7424 -5.1696C1.9296 -5.3712 2.1456 -5.544 2.3616 -5.7312V-5.7456L1.1808 -7.128Z"/>
+ <path id="g46" d="M1.1808 -7.128L0.504 -6.552C0.4464 -6.5088 0.3024 -6.4368 0.3024 -6.3504V-6.336C0.3024 -6.264 0.3888 -6.192 0.432 -6.1488L0.7776 -5.7312H0.5184V-1.5264C0.5184 -1.2096 0.5184 -0.9072 0.4608 -0.5904C0.3744 -0.0864 0.1872 0.432 0.1872 0.9504C0.1872 1.296 0.288 1.584 0.432 1.8432C0.6336 2.16 0.9648 2.4336 1.44 2.4336C1.9584 2.4336 2.4192 2.016 2.4192 1.4832C2.4192 1.1664 2.1888 0.8784 1.8288 0.8784C1.4832 0.8784 1.2096 1.1088 1.2096 1.4832C1.2096 1.6272 1.2528 1.7712 1.3536 1.8864C1.44 1.9872 1.5552 2.0304 1.6704 2.0736C1.5984 2.1024 1.512 2.1168 1.44 2.1168C0.8928 2.1168 0.5616 1.4976 0.5616 0.9072C0.5616 0.216 0.9792 -0.3744 1.4976 -0.648C1.7424 -0.7776 4.536 -1.656 4.536 -1.656C4.4784 -1.8576 4.4208 -1.9008 4.4208 -2.16C4.4208 -2.304 4.4352 -2.448 4.4352 -2.5776V-4.68V-4.9824C4.4352 -5.184 4.4496 -5.2128 4.5792 -5.3136L4.8816 -5.5728C4.9248 -5.616 5.0256 -5.6736 5.0256 -5.7456C5.0256 -5.8032 4.968 -5.8464 4.9392 -5.8896C4.68 -6.2064 4.0608 -6.912 3.9024 -7.128C3.1536 -6.552 2.4624 -5.9184 1.728 -5.3136V-6.3504H1.8288C1.6272 -6.624 1.4112 -6.8832 1.1808 -7.128ZM3.2256 -5.7312V-1.8864V-1.728C3.2256 -1.584 3.168 -1.5552 3.0528 -1.512C2.6928 -1.4112 1.9728 -1.1664 1.728 -1.08C1.7424 -2.3472 1.6992 -3.6576 1.7424 -4.8816C2.1888 -5.328 2.7072 -5.688 3.1824 -6.1056L3.4704 -5.7312H3.2256Z"/>
+ <path id="g47" d="M1.188 -5.808L0.204 -4.548V-4.536L0.384 -4.392H0.396C0.432 -4.44 0.588 -4.668 0.648 -4.668C0.744 -4.668 0.828 -4.488 0.852 -4.452C0.96 -4.248 0.972 -4.032 0.972 -3.804C0.972 -3.768 0.972 -3.72 0.972 -3.684V-1.368C0.972 -1.332 0.972 -1.284 0.972 -1.248C0.972 -0.936 0.744 -0.828 0.492 -0.756V-0.504C0.924 -0.504 1.296 -0.276 1.512 0.024C1.56 0.084 1.584 0.156 1.692 0.156C1.86 0.156 1.98 -0.036 2.088 -0.144L3.12 -1.176C3.24 -0.9 3.384 -0.624 3.516 -0.348C3.564 -0.252 3.648 -0.132 3.648 -0.024C3.648 0 3.636 0.012 3.636 0.036L3.84 0.156L4.776 -1.344L4.56 -1.464C4.524 -1.404 4.38 -1.14 4.332 -1.128C4.296 -1.128 4.272 -1.14 4.248 -1.164C4.056 -1.308 3.936 -1.536 3.936 -1.848C3.936 -1.92 3.936 -1.992 3.936 -2.052V-3.888C3.936 -4.092 3.936 -4.308 3.936 -4.524C3.936 -4.728 3.924 -4.968 4.02 -5.088C4.044 -5.136 4.116 -5.16 4.128 -5.208C4.14 -5.208 4.14 -5.352 4.14 -5.352C3.9 -5.4 3.684 -5.568 3.612 -5.808C3.588 -5.808 3.564 -5.808 3.54 -5.808C3.444 -5.808 3.432 -5.76 3.396 -5.7C3.312 -5.52 3.096 -5.4 2.916 -5.352C2.916 -5.328 2.916 -5.304 2.916 -5.28C2.916 -5.16 3.024 -5.112 3.06 -5.052C3.12 -4.92 3.12 -4.764 3.12 -4.584C3.12 -4.416 3.12 -4.248 3.12 -4.092V-1.932C3.12 -1.848 3.132 -1.764 3.132 -1.68C3.132 -1.488 3.06 -1.464 2.94 -1.344L2.52 -0.924C2.472 -0.876 2.388 -0.756 2.316 -0.756C2.256 -0.756 2.208 -0.816 2.172 -0.84L1.932 -1.056C1.848 -1.116 1.788 -1.164 1.788 -1.308V-3.54C1.788 -4.056 1.776 -4.536 1.608 -5.028C1.536 -5.256 1.332 -5.664 1.188 -5.808Z"/>
+ <path id="g48" d="M1.1952 -7.6608L1.4688 -7.5168C1.4544 -7.56 1.4544 -7.6176 1.4544 -7.6752C1.4544 -7.848 1.512 -8.0352 1.584 -8.1936C1.7712 -8.6544 2.2896 -9.0144 2.8512 -9.0144C3.0384 -9.0144 3.2112 -8.9856 3.384 -8.9136C3.7728 -8.7552 4.104 -8.4528 4.536 -8.4528C5.112 -8.4528 5.472 -8.856 5.8176 -9.2016C5.6448 -8.9712 5.4144 -8.784 5.2128 -8.568C4.6944 -8.0208 4.2048 -7.4736 3.9168 -6.768C3.8448 -6.5808 3.7728 -6.3792 3.744 -6.1776C3.4848 -6.3504 3.168 -6.4512 2.8656 -6.4512C2.3616 -6.4512 1.8144 -6.1488 1.6272 -5.7168C2.16 -5.7168 2.6928 -5.5296 3.1104 -5.184C3.2256 -5.0832 3.5568 -4.8096 3.5568 -4.608C3.5568 -4.5504 3.5424 -4.4928 3.5424 -4.4352C3.3408 -4.536 3.1104 -4.5936 2.88 -4.5936C2.4336 -4.5936 1.9872 -4.392 1.7856 -3.9456C2.3328 -3.9456 2.8224 -3.6 3.024 -3.096C3.0816 -2.9664 3.1248 -2.808 3.1248 -2.664C3.1248 -2.5056 2.9952 -2.3472 2.9376 -2.2608C2.5488 -1.656 1.9728 -1.1376 1.3536 -0.7776C1.152 -0.6624 0.9216 -0.576 0.7056 -0.4752C0.5184 -0.3744 0.3312 -0.2592 0.144 -0.1728L0.2592 0.1296C0.4176 0.0576 0.576 -0.0288 0.7344 -0.1008C1.7568 -0.5904 3.0384 -0.9648 4.3776 -0.9648C5.7456 -0.9648 6.9408 -0.5184 7.8336 0.3024H7.848L9.5184 -1.944V-1.9584L9.2736 -2.1456H9.2592C8.9856 -1.8288 8.6976 -1.656 8.136 -1.656C7.6032 -1.656 7.1712 -1.7712 6.6672 -1.8C6.5808 -1.8 5.7168 -1.8288 5.7168 -1.8C5.5152 -1.7856 5.328 -1.7568 5.1264 -1.7568V-1.7712C5.4144 -1.944 5.6736 -2.232 5.8896 -2.4912C6.5088 -3.2544 6.8976 -4.2048 6.8976 -5.256C6.8976 -5.688 6.8544 -6.1344 6.8256 -6.552C6.8112 -6.552 6.7824 -7.1568 6.7968 -7.1568C6.8112 -7.5168 6.8688 -7.8624 7.0272 -8.1936C7.344 -8.856 8.0496 -9.1584 8.7552 -9.1584V-9.4032H8.5536C8.0064 -9.4032 7.4592 -9.3888 6.9552 -9.1872C6.8112 -9.1152 6.6816 -9.0432 6.552 -8.9568C5.5584 -8.1792 5.6304 -6.6528 5.5728 -5.2848V-4.8816C5.544 -4.0896 5.472 -3.2688 5.0688 -2.5632C4.8816 -2.2464 4.5504 -1.8432 4.248 -1.6704C4.1472 -1.5984 4.032 -1.5984 3.9168 -1.5696C3.744 -1.5408 3.5568 -1.4976 3.384 -1.4544V-1.4688C3.816 -1.6704 4.3344 -2.1744 4.5648 -2.5488C4.968 -3.1392 5.0976 -3.888 5.0976 -4.824V-5.4864C5.0976 -5.8032 5.0976 -6.1056 5.1408 -6.4224C5.2848 -7.3008 5.688 -7.9632 6.1056 -8.6256C6.264 -8.9136 6.5808 -9.5472 6.7824 -9.7488C6.8256 -9.792 6.912 -9.8496 6.912 -9.9216C6.912 -10.008 6.8256 -10.0944 6.7824 -10.1664C6.3792 -9.936 6.1344 -9.36 5.5296 -9.36C5.2848 -9.36 5.0688 -9.432 4.8384 -9.5472C4.3488 -9.792 3.9744 -10.1664 3.312 -10.1664C2.5056 -10.152 2.0592 -9.36 1.728 -8.7264C1.6416 -8.568 1.1952 -7.6752 1.1952 -7.6608ZM6.1344 -9.5616C6.1344 -9.5616 6.0624 -9.4752 6.0624 -9.4752S6.1344 -9.5616 6.1344 -9.5616ZM5.9472 -9.3456L6.048 -9.4608L5.9472 -9.3456ZM5.8176 -9.2016L5.9472 -9.3456L5.8176 -9.2016Z"/>
+ <path id="g49" d="M1.284 -6.78C1.2 -6.696 1.116 -6.6 1.02 -6.516C0.66 -6.18 0.204 -5.784 0.204 -5.256C0.204 -5.004 0.432 -4.872 0.6 -4.728C0.732 -4.62 0.84 -4.476 0.924 -4.32C1.152 -3.888 1.164 -3.408 1.164 -2.928V-1.632C1.164 -1.548 1.164 -1.464 1.164 -1.38C1.164 -1.056 1.068 -0.816 0.744 -0.756V-0.516C0.936 -0.576 1.116 -0.672 1.332 -0.672C1.836 -0.672 2.316 -0.336 2.46 0.156C2.496 0.156 2.544 0.168 2.58 0.168C2.628 0.168 2.664 0.156 2.7 0.132C2.772 0.096 2.94 -0.192 2.952 -0.216L3.48 -1.08C3.912 -1.776 4.308 -2.544 4.308 -3.372C4.308 -4.248 3.876 -4.932 3.432 -5.316C3.372 -5.376 3.3 -5.436 3.228 -5.472C3.24 -5.508 3.3 -5.508 3.3 -5.556L3.12 -5.724L1.788 -4.344C1.728 -4.62 1.488 -4.992 1.344 -5.148C1.176 -5.328 0.888 -5.496 0.888 -5.76C0.888 -5.796 0.888 -5.82 0.9 -5.856C0.9 -5.916 0.924 -5.964 0.948 -6.012C1.056 -6.228 1.32 -6.456 1.464 -6.6V-6.612L1.284 -6.78ZM3.084 -0.852C2.724 -1.044 2.544 -1.236 1.98 -1.236C1.98 -1.692 1.98 -2.148 1.98 -2.592C1.98 -2.82 1.98 -3.048 1.98 -3.276C1.98 -3.456 1.956 -3.636 1.932 -3.804C1.92 -3.864 1.884 -3.948 1.884 -4.008C1.884 -4.128 1.992 -4.188 2.052 -4.248L2.436 -4.644C2.484 -4.692 2.568 -4.824 2.64 -4.824S2.796 -4.704 2.844 -4.656C3.288 -4.176 3.636 -3.492 3.636 -2.664C3.636 -2.052 3.468 -1.584 3.24 -1.128C3.18 -1.032 3.12 -0.948 3.084 -0.852Z"/>
+ <path id="g50" d="M1.32 2.7C1.572 2.172 1.788 1.62 2.028 1.092L2.508 -0.012L2.76 -0.576C2.82 -0.684 2.868 -0.792 2.868 -0.924C2.868 -0.936 2.868 -0.948 2.868 -0.96C2.808 -1.332 2.532 -1.584 2.124 -1.584C1.932 -1.584 1.74 -1.524 1.596 -1.392C1.38 -1.2 1.356 -0.912 1.308 -0.54C1.176 0.12 0.72 2.268 0.72 2.292C0.72 2.4 0.804 2.4 0.888 2.46C1.032 2.544 1.176 2.628 1.32 2.7Z"/>
+ <path id="g51" d="M1.332 -1.728L0.204 -1.524C0.276 -0.96 0.348 -0.408 0.408 0.156C0.528 0.108 0.636 0.036 0.756 -0.012C1.14 -0.18 1.56 -0.252 2.088 -0.252C2.7 -0.36 2.904 -1.032 2.952 -1.596C2.964 -1.596 2.964 -2.352 2.952 -2.352C2.916 -3.156 2.784 -3.792 2.448 -4.38L3.072 -4.5C3.12 -4.26 3.564 -3.144 3.576 -3.108C4.104 -1.656 4.248 -1.14 5.076 0.156C5.58 -0.336 6.084 -0.816 6.552 -1.332L6.564 -1.584C6.348 -1.416 6.096 -1.248 5.772 -1.248C5.412 -1.248 5.268 -1.632 5.172 -1.86C5.076 -2.1 4.152 -4.584 4.152 -4.68C4.152 -4.728 4.188 -4.752 4.236 -4.752C4.32 -4.776 4.932 -4.896 5.148 -4.944C5.22 -4.956 5.388 -4.968 5.388 -5.064C5.388 -5.076 5.388 -5.088 5.388 -5.1C5.376 -5.16 5.364 -5.208 5.352 -5.268C5.304 -5.256 5.232 -5.232 5.172 -5.232S5.088 -5.292 5.088 -5.352C5.064 -5.436 5.04 -5.532 5.028 -5.616L4.884 -6.288C4.86 -6.408 4.824 -6.528 4.812 -6.648L5.016 -6.708C5.04 -6.792 5.004 -6.876 4.992 -6.96C4.644 -6.888 4.26 -6.852 3.9 -6.852C3.792 -6.852 3.696 -6.852 3.588 -6.852C3.408 -6.852 3.228 -6.84 3.048 -6.792C2.376 -6.588 1.98 -5.88 1.98 -5.016C1.74 -5.28 1.452 -5.652 1.452 -6.084C1.452 -6.18 1.464 -6.288 1.488 -6.372C1.632 -7.356 2.604 -8.124 3.756 -8.124C5.028 -8.124 6.132 -7.164 6.132 -5.88C6.132 -5.076 5.736 -4.572 5.28 -4.176V-4.164L5.472 -3.996C6 -4.38 6.396 -5.1 6.396 -5.88C6.396 -6.492 6.168 -7.116 5.736 -7.596C5.208 -8.172 4.488 -8.46 3.732 -8.46C3.588 -8.46 3.444 -8.448 3.3 -8.424C1.98 -8.22 1.02 -7.092 0.684 -5.844C0.612 -5.604 0.54 -5.088 0.54 -4.824C0.54 -4.764 0.54 -4.716 0.564 -4.668C0.672 -4.488 1.128 -4.02 1.2 -3.948L1.608 -3.516C2.088 -3.012 2.676 -2.364 2.676 -1.56C2.676 -1.116 2.46 -0.516 1.98 -0.516C1.464 -0.516 1.332 -1.272 1.332 -1.728ZM4.032 -4.98C3.888 -4.968 2.448 -4.644 2.448 -4.644C2.424 -4.644 2.388 -4.632 2.364 -4.632S2.328 -4.632 2.316 -4.644C2.244 -4.68 2.232 -5.028 2.232 -5.088C2.232 -5.172 2.244 -5.256 2.256 -5.352C2.328 -5.832 2.616 -6.42 3.216 -6.42C3.444 -6.42 3.612 -6.3 3.708 -6.144C3.876 -5.856 3.984 -5.316 4.032 -4.98Z"/>
+ <path id="g52" d="M1.368 -6.3648C0.9936 -6.048 0.4752 -5.472 0.4752 -4.824V-4.7952C0.4752 -4.032 1.0224 -3.4416 1.6704 -3.1104C2.16 -2.8656 2.6928 -2.7792 3.2112 -2.7792C3.4992 -2.7792 3.7728 -2.808 4.0464 -2.8368L3.8592 -2.1888C2.6496 -2.1888 1.4976 -2.1024 0.7488 -1.5264C0.4464 -1.3248 0.1872 -0.9648 0.1872 -0.4896C0.1872 -0.2304 0.2736 0.0288 0.432 0.2304C0.7344 0.6192 1.2528 0.792 1.9008 0.792C3.1968 0.792 4.4352 0.5184 5.3424 0.0576C5.4144 0.0144 5.7024 -0.1584 5.7888 -0.1584S6.3936 0.1728 6.552 0.3024H6.5664C7.1712 -0.3024 8.0352 -1.0656 8.568 -1.6848C9.2592 -2.5344 10.008 -3.6432 10.008 -5.0544C10.008 -5.5008 9.8928 -5.9328 9.6192 -6.2928C9.1872 -6.84 8.6256 -7.1424 7.6176 -7.1424H7.416C7.0848 -7.1424 5.8032 -7.0704 5.5728 -7.0272L6.4512 -10.08L6.1344 -10.1664L5.9328 -9.432C5.7168 -9.504 3.2544 -10.152 3.2112 -10.152C3.0528 -10.152 2.9376 -9.9792 2.8656 -9.9216C2.6064 -9.6912 1.4976 -8.7552 1.368 -8.6544L1.1088 -8.424C0.9936 -8.3376 0.9216 -8.2944 0.9216 -8.1072V-7.8192C0.9216 -7.4304 0.9936 -7.056 1.1664 -6.7104C1.224 -6.5952 1.368 -6.3648 1.368 -6.3648ZM5.5008 -8.0064V-7.9776C5.5008 -7.9056 5.472 -7.8192 5.4576 -7.7616C5.4144 -7.632 5.2848 -7.0848 5.1984 -7.0272C5.112 -6.9552 4.2336 -6.9552 4.2192 -6.9552H3.7584H3.5424C3.1536 -6.9552 2.7648 -6.9696 2.4048 -7.0992C2.0304 -7.2288 1.6992 -7.5312 1.6992 -8.0352C1.6992 -8.4672 1.9584 -8.7408 2.4768 -8.7408H2.5776C3.1824 -8.7408 4.1472 -8.4528 4.5216 -8.3376L5.2704 -8.1216C5.3424 -8.1072 5.5008 -8.0928 5.5008 -8.0064ZM4.5072 -4.4352C3.9456 -4.4208 3.96 -4.3776 3.3408 -4.3776C2.8944 -4.3776 2.3616 -4.4064 2.0304 -4.5072C1.6704 -4.6224 1.3248 -4.896 1.296 -5.2992C1.296 -5.688 1.4112 -5.7888 1.5696 -6.0912C1.9872 -5.7312 2.4192 -5.4144 3.1968 -5.4144C3.2832 -5.4144 3.3552 -5.4288 3.4416 -5.4288C3.9024 -5.4432 4.3488 -5.472 4.8096 -5.5008L4.5072 -4.4352ZM4.8384 -4.464L5.0544 -5.2128C5.0832 -5.2992 5.0976 -5.4576 5.1696 -5.5152C5.2128 -5.5584 5.2992 -5.5584 5.3856 -5.5584H5.5008C5.8752 -5.6016 8.0352 -5.8032 8.0352 -5.7024C8.3808 -5.6592 8.712 -5.5008 8.9568 -5.256S9.4464 -4.5504 9.4464 -4.104C9.4464 -3.4272 9.0144 -2.7792 8.6112 -2.2608C8.4528 -2.0592 7.7904 -1.2672 7.6608 -1.2672H7.632C7.5888 -1.2672 7.3152 -1.44 7.2144 -1.4832C7.3728 -1.728 7.488 -1.9728 7.6032 -2.232C7.8192 -2.6208 8.1792 -3.312 8.1792 -3.7296C8.1792 -3.9168 8.1216 -4.104 7.9776 -4.2768C7.7616 -4.5216 7.4304 -4.5648 7.1136 -4.5648C6.5376 -4.5648 5.1408 -4.5072 4.8384 -4.464ZM6.8544 -1.6704C6.0048 -2.0016 5.0976 -2.1888 4.1904 -2.1888C4.2192 -2.304 4.3488 -2.8224 4.4208 -2.88C4.4784 -2.9088 4.5648 -2.9088 4.6368 -2.9232L5.112 -3.0096C5.2416 -3.024 5.3712 -3.0528 5.5008 -3.0672C5.5728 -3.0816 6.6528 -3.2112 6.6528 -3.1392C6.9264 -3.0816 7.1856 -2.808 7.1856 -2.4768C7.1856 -2.1744 6.9696 -1.944 6.8544 -1.6704ZM5.4 -0.3456C5.256 -0.288 5.1264 -0.2016 4.9968 -0.144C4.1904 0.2592 3.024 0.4896 1.9152 0.4896C1.5408 0.4896 1.1376 0.3744 0.9792 -0.0144C0.936 -0.0864 0.9216 -0.1584 0.9216 -0.2448C0.9216 -0.8352 1.5696 -1.0224 2.0736 -1.0224C2.4768 -1.0224 2.8656 -0.936 3.2544 -0.864C3.9744 -0.7488 4.7232 -0.6336 5.4 -0.3456Z"/>
+ <path id="g53" d="M1.392 -6.204C1.452 -6.168 1.524 -6.096 1.596 -6.096C1.632 -6.096 1.668 -6.132 1.704 -6.156C2.04 -6.396 2.268 -6.936 2.268 -7.428C2.268 -7.656 2.112 -7.812 1.896 -7.812C1.8 -7.812 1.704 -7.776 1.62 -7.716C1.416 -7.536 1.476 -7.296 1.428 -6.96C1.416 -6.96 1.416 -6.792 1.416 -6.684C1.416 -6.564 1.428 -6.204 1.392 -6.204ZM3.144 -7.416C3.12 -7.416 3.108 -7.2 3.108 -7.02C3.108 -6.888 3.12 -6.552 3.108 -6.552C3.096 -6.48 3.096 -6.42 3.084 -6.348C3.084 -6.324 3.084 -6.3 3.084 -6.264C3.084 -6.156 3.18 -6.096 3.276 -6.096C3.312 -6.096 3.348 -6.132 3.384 -6.156C3.708 -6.396 3.948 -6.996 3.948 -7.428C3.948 -7.644 3.792 -7.812 3.576 -7.812C3.324 -7.812 3.18 -7.632 3.144 -7.416ZM0.216 -1.14V-1.116C0.504 -0.948 1.884 -0.096 2.088 0.048C2.124 0.084 2.172 0.132 2.232 0.132C2.232 0.132 2.244 0.132 2.244 0.132C2.28 0.12 2.868 -0.564 3.132 -0.984C3.624 -1.764 3.828 -2.712 3.828 -3.636C3.828 -4.488 3.66 -5.184 3.264 -5.808L1.176 -4.968L0.66 -4.752C0.54 -4.704 0.468 -4.716 0.468 -4.536C0.468 -4.488 0.468 -4.452 0.468 -4.416V-1.728C0.468 -1.704 0.468 -1.68 0.468 -1.656C0.468 -1.488 0.456 -1.332 0.324 -1.212L0.216 -1.14ZM2.712 -0.828C2.688 -0.792 2.652 -0.72 2.604 -0.72C2.568 -0.72 2.544 -0.732 2.52 -0.744C2.148 -0.984 2.028 -1.056 1.572 -1.332L1.38 -1.452C1.308 -1.5 1.26 -1.524 1.26 -1.644C1.26 -1.704 1.272 -1.764 1.272 -1.812V-3.936C1.272 -3.996 1.272 -4.68 1.272 -4.68C1.296 -4.776 1.44 -4.812 1.524 -4.836C1.776 -4.944 2.04 -5.04 2.292 -5.148C2.352 -5.172 2.448 -5.232 2.52 -5.232C2.556 -5.232 2.58 -5.22 2.604 -5.196C2.652 -5.112 2.688 -5.004 2.724 -4.908C2.988 -4.212 3.096 -3.312 3.096 -2.4C3.096 -1.824 2.976 -1.164 2.712 -0.828Z"/>
+ <path id="g54" d="M1.428 -5.808C1.14 -5.364 0.828 -4.944 0.552 -4.488L0.54 -4.248C0.66 -4.344 0.792 -4.452 0.96 -4.452C1.392 -4.452 1.704 -3.96 1.704 -3.6C1.704 -2.988 1.104 -2.724 0.78 -2.448C0.696 -2.388 0.648 -2.328 0.648 -2.208C0.648 -2.16 0.648 -2.124 0.648 -2.088L1.14 -2.004C1.044 -1.884 0.936 -1.788 0.852 -1.668C0.492 -1.224 0.204 -0.576 0.204 0.168C0.204 0.78 0.408 1.392 0.912 1.776C1.116 1.92 1.428 2.064 1.752 2.064C1.92 2.064 2.1 2.028 2.22 1.98C2.916 1.692 3.276 0.864 3.276 -0.036C3.276 -0.588 3.12 -1.152 2.868 -1.632C2.712 -1.92 2.52 -2.16 2.304 -2.4C2.544 -2.496 2.808 -2.544 3.096 -2.592C3.072 -2.664 3.012 -2.796 2.904 -2.796C2.856 -2.796 2.46 -2.724 2.316 -2.676C2.268 -2.652 2.184 -2.616 2.124 -2.616C2.112 -2.616 2.112 -2.616 2.1 -2.616C2.04 -2.628 1.776 -2.844 1.68 -2.892C1.764 -2.988 1.86 -3.072 1.956 -3.156C2.232 -3.444 2.496 -3.792 2.496 -4.32C2.496 -5.04 2.004 -5.592 1.428 -5.808ZM0.564 0.324C0.564 0.228 0.576 0.12 0.576 0.024C0.6 -0.468 0.78 -0.972 1.056 -1.38C1.104 -1.452 1.368 -1.812 1.452 -1.812C1.5 -1.8 1.548 -1.752 1.584 -1.728C2.124 -1.248 2.424 -0.336 2.424 0.54C2.424 0.744 2.388 0.936 2.304 1.116C2.16 1.428 1.812 1.716 1.404 1.716C1.248 1.716 1.092 1.668 0.96 1.548C0.624 1.248 0.612 0.744 0.564 0.324Z"/>
+ <path id="g55" d="M1.44 -7.128C1.224 -6.9264 0.9936 -6.7536 0.7632 -6.552C0.7056 -6.5088 0.5616 -6.4368 0.5616 -6.3504V-6.336C0.5616 -6.264 0.648 -6.192 0.6912 -6.1488L1.0368 -5.7312H0.7776V-1.9728L0.432 -2.1456L-0.1728 -1.0944C0.0432 -0.9792 0.2592 -0.864 0.4752 -0.7632C0.6336 -0.6912 0.7776 -0.6624 0.7776 -0.432V-0.3312V0.2304V0.5904C0.7776 1.0656 0.7632 1.5408 0.576 1.9872C0.4752 2.2032 0.3456 2.376 0.2016 2.5632L0.4896 2.7072L1.0944 1.8288C1.3824 2.0304 1.6848 2.2176 1.9728 2.4048C2.232 2.5776 2.52 2.808 2.9088 2.808C3.096 2.808 3.3408 2.6928 3.3408 2.52C3.3408 2.4192 3.24 2.3472 3.1824 2.304C3.1392 2.4912 3.0528 2.6064 2.8368 2.6064C2.5056 2.6064 2.2608 2.2896 2.16 2.1024C1.9872 1.7856 1.9872 1.4256 1.9872 1.08V0.0144C2.1744 0.1152 2.3472 0.216 2.5488 0.288C3.1536 -0.0144 3.7008 -0.3744 4.3056 -0.6912L4.4496 -0.6336C4.8816 -0.3312 5.2992 -0.0144 5.7456 0.2736L5.9184 0.2304C6.4224 -0.072 6.9696 -0.3312 7.4304 -0.6768L7.4592 -0.9648C7.2144 -0.8496 6.9408 -0.648 6.6672 -0.648H6.6096C6.4368 -0.6768 6.12 -0.9504 6.0336 -1.008L5.5728 -1.3248C5.4576 -1.4112 5.2992 -1.44 5.2992 -1.6416C5.2992 -1.6992 5.3136 -1.7568 5.3136 -1.8V-2.3616V-2.5056C5.3136 -2.736 5.4144 -2.7936 5.544 -2.9376L6.0336 -3.5136L7.776 -5.5728V-5.5872L6.2352 -7.128H6.2208C5.832 -6.7824 5.4288 -6.4656 4.9824 -6.2064C4.968 -6.2064 4.5072 -5.9184 4.5072 -5.976C4.4064 -6.0048 4.3056 -6.1056 4.2192 -6.1632L3.816 -6.4368C3.7296 -6.4944 3.6432 -6.5664 3.5424 -6.6096C3.6288 -6.696 3.7152 -6.7968 3.7872 -6.8976L3.6144 -7.128L3.1968 -6.7536C2.9232 -6.5232 2.7216 -6.2208 2.3904 -6.048L2.2896 -6.1344C2.0016 -6.4656 1.7424 -6.8112 1.44 -7.128ZM2.6064 -5.76C2.7504 -5.7456 3.2832 -5.3136 3.2976 -5.3136C3.4272 -5.2416 3.5424 -5.1984 3.5424 -4.9824V-4.8384V-0.9648C3.5424 -0.9216 3.5568 -0.864 3.5568 -0.792S3.5424 -0.648 3.4848 -0.6192C3.456 -0.6192 3.3552 -0.6192 3.3552 -0.648C3.2832 -0.6768 2.5776 -1.0512 2.304 -1.1808C2.1456 -1.2528 1.9872 -1.2816 1.9872 -1.5264V-1.656V-4.8384V-4.9968C1.9872 -5.2128 2.0592 -5.256 2.1888 -5.3568C2.3328 -5.4864 2.4768 -5.6016 2.6208 -5.7168L2.6064 -5.76ZM5.3136 -3.1824V-5.7888V-5.9184C5.3136 -6.0336 5.3712 -6.1056 5.472 -6.1056C5.5296 -6.1056 5.5728 -6.0624 5.6016 -6.0336L6.408 -5.2272C6.5232 -5.112 6.6384 -4.9824 6.768 -4.8816L5.3136 -3.1824Z"/>
+ <path id="g56" d="M1.44 -7.128C1.224 -6.9264 0.9936 -6.7536 0.7632 -6.552C0.7056 -6.5088 0.5616 -6.4368 0.5616 -6.3504V-6.336C0.5616 -6.264 0.648 -6.192 0.6912 -6.1488L1.0368 -5.7312H0.7776V-1.9728L0.432 -2.1456L-0.1728 -1.0944C0.0432 -0.9792 0.2592 -0.864 0.4752 -0.7632C0.6336 -0.6912 0.7776 -0.6624 0.7776 -0.432V-0.3312V0.2304V0.5904C0.7776 1.0656 0.7632 1.5408 0.576 1.9872C0.4752 2.2032 0.3456 2.376 0.2016 2.5632L0.4896 2.7072L1.0944 1.8288C1.3824 2.0304 1.6848 2.2176 1.9728 2.4048C2.232 2.5776 2.52 2.808 2.9088 2.808C3.096 2.808 3.3408 2.6928 3.3408 2.52C3.3408 2.4192 3.24 2.3472 3.1824 2.304C3.1392 2.4912 3.0528 2.6064 2.8368 2.6064C2.5056 2.6064 2.2608 2.2896 2.16 2.1024C1.9872 1.7856 1.9872 1.4256 1.9872 1.08V0.0144C2.1744 0.1152 2.3472 0.216 2.5488 0.288C3.3696 -0.1296 4.1184 -0.6192 4.9104 -1.0512L4.7664 -1.3536C4.7232 -2.6496 4.7664 -4.0464 4.752 -5.3712L4.9104 -5.688C4.4496 -5.9904 4.0176 -6.3216 3.5424 -6.6096C3.6288 -6.696 3.7152 -6.7968 3.7872 -6.8976L3.6144 -7.128L3.1968 -6.7536C2.9232 -6.5232 2.7216 -6.2208 2.3904 -6.048L2.2896 -6.1344C2.0016 -6.4656 1.7424 -6.8112 1.44 -7.128ZM2.6064 -5.76C2.7504 -5.7456 3.2832 -5.3136 3.2976 -5.3136C3.4272 -5.2416 3.5424 -5.1984 3.5424 -4.9824V-4.8384V-0.9648C3.5424 -0.9216 3.5568 -0.864 3.5568 -0.792S3.5424 -0.648 3.4848 -0.6192C3.456 -0.6192 3.3552 -0.6192 3.3552 -0.648C3.2832 -0.6768 2.5776 -1.0512 2.304 -1.1808C2.1456 -1.2528 1.9872 -1.2816 1.9872 -1.5264V-1.656V-4.8384V-4.9968C1.9872 -5.2128 2.0592 -5.256 2.1888 -5.3568C2.3328 -5.4864 2.4768 -5.6016 2.6208 -5.7168L2.6064 -5.76Z"/>
+ <path id="g57" d="M1.44 -7.128L0.5328 -6.3648L1.0368 -5.7312H0.7776V-1.9728L0.432 -2.1456C0.2304 -1.8 0.0288 -1.4544 -0.1584 -1.08C0.0576 -0.9792 0.2736 -0.864 0.4896 -0.7488C0.6336 -0.6768 0.7776 -0.6624 0.7776 -0.4608V-0.36V0.216V0.6912C0.7776 1.1232 0.7632 1.5408 0.5904 1.944C0.4896 2.1744 0.3456 2.3616 0.2016 2.5632L0.4896 2.7072L1.0944 1.8288C1.4256 2.0304 1.7424 2.2608 2.0736 2.4624C2.2896 2.6064 2.5632 2.808 2.8944 2.808C3.1104 2.808 3.3552 2.7216 3.3552 2.52C3.3552 2.4048 3.2544 2.3472 3.1968 2.304C3.1536 2.4912 3.0672 2.6064 2.8656 2.6064C2.5344 2.6064 2.2752 2.3184 2.1744 2.1168C1.9872 1.8 1.9872 1.4256 1.9872 1.08V0.0144C2.1744 0.1008 2.3616 0.2016 2.5488 0.288C3.1248 0.0288 3.6144 -0.3168 4.1328 -0.6192H4.1472L4.5072 -0.36C4.8528 -0.1584 5.1264 0.1152 5.5152 0.2736L5.6592 0.216C6.408 -0.2016 7.1424 -0.6192 7.848 -1.0656C7.8192 -1.1952 7.7616 -1.2816 7.7184 -1.3824C7.7184 -2.8224 7.704 -4.2768 7.7328 -5.688L7.8768 -6.0048L5.7456 -7.056C5.6016 -6.6816 5.3856 -6.3216 5.0976 -6.0336C5.04 -5.976 4.896 -5.7888 4.7952 -5.7888C4.7088 -5.8176 4.464 -6.0048 4.4352 -6.0192L3.888 -6.3936C3.7728 -6.4656 3.6576 -6.552 3.5424 -6.624V-6.6384C3.6288 -6.7248 3.744 -6.7824 3.8016 -6.912L3.6288 -7.128H3.6144L2.7216 -6.3072C2.6208 -6.2208 2.5344 -6.1056 2.3904 -6.048L2.2896 -6.1344C2.016 -6.48 1.728 -6.8112 1.44 -7.128ZM2.6496 -5.7888C2.9376 -5.5728 3.24 -5.3712 3.528 -5.1408L3.5568 -4.824V-1.3536L3.4272 -1.08C3.5568 -1.008 3.5568 -0.9216 3.5568 -0.7776C3.5568 -0.7056 3.5424 -0.6192 3.456 -0.6192C3.3984 -0.6192 3.3552 -0.648 3.312 -0.6768C3.1104 -0.7632 2.3328 -1.1664 2.3184 -1.1808C2.1888 -1.2528 1.9872 -1.2816 1.9872 -1.512V-1.6704V-4.9104V-5.0112C1.9872 -5.2128 2.088 -5.2704 2.2032 -5.3712C2.3328 -5.4864 2.4768 -5.6016 2.6208 -5.7168C2.6352 -5.7312 2.6064 -5.7888 2.6496 -5.7888ZM6.3936 -0.5616C5.9328 -0.8928 5.4144 -1.1664 4.9824 -1.5408L4.9536 -1.8144V-5.1408C5.1408 -5.3712 5.3568 -5.5728 5.616 -5.7456C5.9472 -5.6304 6.2208 -5.472 6.4944 -5.2992C6.4944 -5.2992 6.5088 -4.9968 6.5088 -4.9968C6.5088 -3.5424 6.5232 -2.0736 6.4944 -0.6624L6.3936 -0.5616Z"/>
+ <path id="g58" d="M1.44 -7.128L0.5328 -6.3648L1.0368 -5.7312H0.7776V-1.9728L0.432 -2.1456C0.2304 -1.8 0.0288 -1.4544 -0.1584 -1.08C0.0576 -0.9792 0.2736 -0.864 0.4896 -0.7488C0.6336 -0.6768 0.7776 -0.6624 0.7776 -0.4608V-0.36V0.216V0.6912C0.7776 1.1232 0.7632 1.5408 0.5904 1.944C0.4896 2.1744 0.3456 2.3616 0.2016 2.5632L0.4896 2.7072L1.0944 1.8288C1.4256 2.0304 1.7424 2.2608 2.0736 2.4624C2.2896 2.6064 2.5632 2.808 2.8944 2.808C3.1104 2.808 3.3552 2.7216 3.3552 2.52C3.3552 2.4048 3.2544 2.3472 3.1968 2.304C3.1536 2.4912 3.0672 2.6064 2.8656 2.6064C2.5344 2.6064 2.2752 2.3184 2.1744 2.1168C1.9872 1.8 1.9872 1.4256 1.9872 1.08V0.0144C2.1744 0.1008 2.3616 0.2016 2.5488 0.288L2.6928 0.2304C3.1104 -0.0288 3.5424 -0.2592 3.96 -0.5184H3.9744C4.1904 -0.2448 4.4064 0.0288 4.6512 0.2736L4.7952 0.216C5.328 -0.1152 5.832 -0.4896 6.408 -0.792L6.5088 -0.72L7.3728 0.3024H7.3872L8.2944 -0.4608L7.7904 -1.0944H8.0496C8.064 -2.6496 8.0208 -4.2912 8.064 -5.76C8.1936 -5.9184 8.352 -6.048 8.496 -6.1776C7.9344 -6.48 7.4448 -6.84 6.8544 -7.0992L6.6816 -7.0128C6.0624 -6.5952 5.4576 -6.1632 4.8672 -5.7168H4.8528L3.5424 -6.624V-6.6384C3.6288 -6.7248 3.744 -6.7824 3.8016 -6.912L3.6288 -7.128H3.6144L2.7216 -6.3072C2.6208 -6.2208 2.5344 -6.1056 2.3904 -6.048L2.2896 -6.1344C2.016 -6.48 1.728 -6.8112 1.44 -7.128ZM2.6352 -5.7888H2.6496C2.8224 -5.616 3.0672 -5.4864 3.2688 -5.3424C3.4128 -5.2416 3.5568 -5.2272 3.5568 -4.9824V-4.8384V-1.4112V-1.3248C3.5568 -1.2528 3.5424 -1.1808 3.4848 -1.1088C3.5424 -0.9936 3.5568 -0.8928 3.5568 -0.7632C3.5568 -0.6912 3.5424 -0.6192 3.456 -0.6192C3.4128 -0.6192 3.1968 -0.7344 3.1248 -0.7632L2.3328 -1.1664C2.2032 -1.2528 1.9872 -1.2672 1.9872 -1.512V-1.6704V-4.9104V-5.0112C1.9872 -5.2128 2.088 -5.2704 2.2032 -5.3712C2.3328 -5.4864 2.4768 -5.6016 2.6208 -5.7168L2.6352 -5.7888ZM6.84 -3.312C6.6528 -3.312 6.4512 -3.2976 6.2496 -3.2976C5.7024 -3.2976 5.328 -3.4128 4.9824 -3.6864C4.8816 -3.7584 4.7664 -3.8448 4.7664 -4.032V-4.1472V-4.9968V-5.0832C4.7664 -5.2416 4.896 -5.328 4.9824 -5.4C5.1984 -5.5872 5.9184 -6.1488 6.1632 -6.1488C6.336 -6.1488 6.4656 -6.0192 6.5664 -5.9472C6.696 -5.8752 6.84 -5.8176 6.84 -5.616V-5.5296V-3.312ZM4.7664 -3.168V-3.4416L5.0544 -3.24L4.7664 -3.168ZM6.2064 -1.1088L6.2208 -1.0656C5.976 -0.9216 5.76 -0.7632 5.4864 -0.648C5.3136 -0.7632 5.1984 -0.936 5.0688 -1.0944H5.328V-2.2608C5.328 -2.6352 5.472 -2.9952 5.9328 -2.9952H6.0624H6.84C6.84 -2.5344 6.8544 -2.0592 6.8112 -1.6416C6.624 -1.44 6.408 -1.2816 6.2064 -1.1088Z"/>
+ <path id="g59" d="M1.4544 -3.24L0.2016 -2.9088L0.504 -2.2896C0.5184 -2.0592 0.5184 -1.8432 0.4896 -1.6272C0.3024 -1.44 0.0864 -1.2672 -0.1152 -1.0944V-1.08C0.288 -0.6336 0.6192 -0.1296 1.0512 0.2736L1.1952 0.216C1.728 -0.1152 2.232 -0.4896 2.808 -0.792L2.9088 -0.72L3.7728 0.3024H3.7872L4.6944 -0.4608L4.1904 -1.0944H4.4496C4.464 -2.6496 4.4208 -4.2912 4.464 -5.76C4.608 -5.904 4.7664 -6.0336 4.9104 -6.1776C4.608 -6.336 3.3408 -7.0992 3.2544 -7.0992C3.1248 -7.0992 2.9664 -6.9264 2.9088 -6.8976L2.2032 -6.408C1.8288 -6.1344 1.4112 -5.8896 1.08 -5.5584C0.792 -5.2704 0.6048 -5.04 0.6048 -4.4784C0.6048 -3.8592 1.0944 -3.4848 1.4544 -3.24ZM3.24 -3.312C3.0528 -3.312 2.8656 -3.2976 2.6784 -3.2976C2.4624 -3.2976 2.2464 -3.312 2.0304 -3.3696C1.4688 -3.5136 0.9072 -3.96 0.9072 -4.608C0.9072 -4.7376 0.936 -4.8672 1.008 -4.9968C1.1808 -5.2848 1.4976 -5.5152 1.7712 -5.7024C1.9152 -5.8176 2.3616 -6.1488 2.5632 -6.1488C2.736 -6.1488 2.8656 -6.0192 2.9808 -5.9472C3.0816 -5.8608 3.24 -5.832 3.24 -5.6448V-5.5584V-3.312ZM2.6064 -1.1088L2.6208 -1.0656C2.376 -0.9216 2.16 -0.7632 1.8864 -0.648C1.7136 -0.7632 1.5984 -0.936 1.4688 -1.0944H1.728V-1.9584V-2.2032C1.728 -2.664 1.8576 -2.9952 2.3472 -2.9952H2.4768H3.24C3.24 -2.5344 3.2544 -2.0592 3.2112 -1.6416C3.024 -1.44 2.808 -1.2816 2.6064 -1.1088Z"/>
+ <path id="g60" d="M1.4976 -6.8976L0.1584 -5.6448V-5.6304C0.4464 -5.3136 0.7488 -4.9968 1.008 -4.6512L1.0224 -4.464V0.1872L1.9872 -0.2448L2.2464 -0.36C2.3472 -0.3888 2.3904 -0.432 2.3904 -0.576V-0.72V-4.8528V-5.0112C2.3904 -5.0544 2.3904 -5.112 2.4192 -5.1552C2.4624 -5.2128 2.9664 -5.5152 3.1248 -5.6304C3.1968 -5.6736 3.2832 -5.76 3.3696 -5.76H3.384C3.4704 -5.7456 3.816 -5.4144 3.816 -5.4144C3.9024 -5.3424 4.0896 -5.2416 4.1184 -5.112C4.1328 -5.0544 4.1328 -4.9824 4.1328 -4.9248C4.1328 -4.7952 4.1184 -4.6656 4.1184 -4.536V0.1728C4.896 -0.3312 5.688 -0.8208 6.408 -1.3824L6.4224 -1.6848C6.336 -1.656 6.264 -1.6128 6.1776 -1.6128C5.8464 -1.6128 5.6016 -1.9296 5.5296 -2.2176C5.4864 -2.376 5.4864 -2.5344 5.4864 -2.6928V-3.0816V-4.608C5.4864 -4.9104 5.5872 -5.2416 5.8608 -5.3424C5.976 -5.3856 6.0192 -5.3856 6.0192 -5.544V-5.6448C6.0048 -5.7312 5.9184 -5.7888 5.8464 -5.8464C5.7024 -5.976 5.0256 -6.5376 4.8384 -6.696C4.7664 -6.7536 4.6656 -6.8688 4.5792 -6.8688C4.5072 -6.8688 4.464 -6.8112 4.4064 -6.7824C3.7296 -6.3216 3.0672 -5.9616 2.3904 -5.472C2.3904 -5.6304 2.3904 -5.7888 2.376 -5.9328C2.1024 -6.2784 1.8 -6.5808 1.4976 -6.8976Z"/>
+ <path id="g61" d="M1.4976 -6.8976L0.1584 -5.6448V-5.6304C0.4464 -5.3136 0.7488 -5.0112 1.008 -4.6656C1.0512 -3.7152 1.0368 -2.6208 0.9936 -1.7136C0.7344 -1.4976 0.4464 -1.3104 0.1728 -1.1088V-1.08L1.656 -0.1584L2.0304 0.0864C2.088 0.1152 2.1312 0.1584 2.1888 0.1584C2.3184 0.1584 2.448 0.0144 2.52 -0.0288L3.9312 -1.008C3.9888 -1.0512 4.1184 -1.1088 4.1184 -1.1952C4.1184 -1.296 4.032 -1.3968 3.96 -1.3968C3.8736 -1.3968 3.7872 -1.3104 3.744 -1.2816L3.4128 -1.0512C3.3552 -1.008 3.2832 -0.936 3.2112 -0.936C3.1536 -0.936 3.0816 -0.9792 3.0384 -1.008L2.7072 -1.224C2.6064 -1.2816 2.4336 -1.3536 2.3904 -1.4688V-4.7664C2.3904 -4.8528 2.376 -4.9536 2.376 -5.0544C2.376 -5.256 2.448 -5.2992 2.592 -5.3856L3.0816 -5.7312C3.1392 -5.7744 3.2112 -5.8464 3.2976 -5.8464C3.3984 -5.8464 3.4848 -5.7024 3.5424 -5.6448L4.1184 -5.0688H4.1328L4.7664 -5.7024C4.8672 -5.8032 4.968 -5.8752 4.968 -6.0192S4.8384 -6.2496 4.752 -6.336L4.1904 -6.8976H4.176L2.3904 -5.6448L2.376 -5.9328C2.1024 -6.2784 1.8 -6.5808 1.4976 -6.8976Z"/>
+ <path id="g62" d="M1.4976 -6.8976L0.1584 -5.6448V-5.6304C0.4464 -5.328 0.7344 -5.0112 0.9936 -4.68L1.0224 -4.4496C1.0224 -3.6144 1.0368 -2.7792 1.008 -1.9872C0.8064 -1.8144 0.5904 -1.656 0.3888 -1.4976L0.8352 -1.3104C0.9648 -1.2384 1.0224 -1.2672 1.0224 -1.0512V0.36C1.0368 1.08 1.2672 1.8144 1.6416 2.4336C1.7856 2.232 1.8864 1.9584 1.9872 1.728C2.2896 0.9648 2.3904 0.1728 2.3904 -0.648C2.4912 -0.6048 3.8592 -0.0288 3.888 -0.0288C3.9888 -0.0432 4.104 -0.1584 4.176 -0.216L4.824 -0.6912C5.1552 -0.936 5.4864 -1.1664 5.7744 -1.4832C6.336 -2.1312 6.6672 -3.0096 6.6672 -3.8736C6.6672 -3.9888 6.6672 -4.1184 6.6528 -4.2336C6.5088 -5.328 5.6016 -6.1632 4.8672 -6.8976H4.8528L2.3904 -4.4352C2.376 -4.9248 2.4048 -5.4576 2.376 -5.9184C2.1168 -6.2784 1.8144 -6.5952 1.4976 -6.8976ZM3.9168 -5.5152C4.4496 -4.9824 5.0256 -4.3344 5.2272 -3.5856C5.3136 -3.2688 5.328 -2.9232 5.328 -2.5776V-2.3328C5.328 -2.0016 5.3136 -1.6416 5.1264 -1.3536C5.0832 -1.2672 4.968 -1.0944 4.8384 -1.0944C4.7664 -1.0944 4.6512 -1.152 4.5936 -1.1952L2.5632 -2.0448C2.4624 -2.1168 2.3904 -2.088 2.3904 -2.2752V-3.8016C2.3904 -3.8592 2.3904 -3.9168 2.4048 -3.96C2.448 -4.0608 2.8224 -4.4064 2.8368 -4.4208C3.1968 -4.7952 3.5712 -5.1264 3.9168 -5.5152Z"/>
+ <path id="g63" d="M1.524 -5.196V-5.172C1.272 -5.04 1.056 -4.836 0.816 -4.68C0.756 -4.644 0.588 -4.524 0.552 -4.476C0.54 -4.476 0.54 -4.392 0.54 -4.392V-1.848C0.54 -1.776 0.552 -1.704 0.552 -1.644C0.552 -1.38 0.42 -1.248 0.204 -1.188C0.204 -1.152 0.192 -1.116 0.192 -1.068C0.192 -1.032 0.204 -0.984 0.228 -0.96C0.252 -0.912 0.336 -0.912 0.384 -0.888C0.888 -0.744 1.428 -0.468 1.812 -0.228C2.004 -0.108 2.172 0.036 2.364 0.156L2.796 -0.528C3.276 -1.296 3.756 -2.088 3.756 -3.252C3.756 -4.188 3.384 -4.98 2.856 -5.4C2.472 -5.736 2.004 -5.844 1.536 -5.988C1.068 -6.12 0.456 -6.312 0.456 -6.924C0.456 -7.164 0.612 -7.476 0.948 -7.476V-7.716C0.324 -7.716 -0.132 -7.212 -0.132 -6.624C-0.132 -5.904 0.576 -5.592 1.056 -5.388C1.212 -5.316 1.368 -5.244 1.524 -5.196ZM1.356 -1.176V-4.08C1.356 -4.176 1.344 -4.284 1.344 -4.392C1.344 -4.644 1.44 -4.812 1.596 -4.932C1.644 -4.98 1.716 -5.052 1.788 -5.052C1.872 -5.052 1.992 -4.98 2.052 -4.944C2.724 -4.584 3.348 -3.864 3.348 -2.892C3.348 -2.244 3.144 -1.656 2.916 -1.188C2.88 -1.128 2.82 -0.96 2.712 -0.96C2.688 -0.96 2.664 -0.96 2.652 -0.972L2.388 -1.008C2.04 -1.068 1.704 -1.128 1.356 -1.176Z"/>
+ <path id="g64" d="M1.5552 -9.3888L1.656 -7.3152L1.7856 -7.56C2.016 -8.1792 2.2752 -8.784 2.52 -9.3888H1.5552ZM1.656 -7.128L0.9792 -6.552C0.9216 -6.5088 0.7776 -6.4368 0.7776 -6.3504V-6.336C0.7776 -6.264 0.864 -6.192 0.9072 -6.1488L1.2528 -5.7312H0.9936C0.9792 -4.3776 1.0224 -2.9664 0.9792 -1.656C0.792 -1.4544 0.576 -1.2816 0.36 -1.0944V-1.08L1.5264 0.3024H1.5408L2.2176 -0.2736C2.2752 -0.3168 2.4192 -0.3888 2.4192 -0.4752V-0.4896C2.4192 -0.5616 2.3328 -0.6336 2.2896 -0.6768L1.944 -1.0944H2.2032C2.2176 -2.448 2.1744 -3.8592 2.2176 -5.1696C2.4048 -5.3712 2.6208 -5.544 2.8368 -5.7312V-5.7456L1.656 -7.128Z"/>
+ <path id="g65" d="M1.692 -7.428C1.656 -7.428 1.656 -7.164 1.656 -6.96C1.656 -6.84 1.668 -6.564 1.656 -6.564C1.656 -6.492 1.644 -6.42 1.632 -6.348C1.632 -6.324 1.632 -6.3 1.632 -6.264C1.632 -6.252 1.632 -6.228 1.632 -6.216C1.668 -6.168 1.752 -6.096 1.824 -6.096C1.92 -6.096 2.124 -6.348 2.136 -6.372C2.376 -6.66 2.496 -7.056 2.496 -7.428C2.496 -7.644 2.34 -7.812 2.124 -7.812C1.872 -7.812 1.728 -7.632 1.692 -7.428ZM3.288 -6.204C3.348 -6.168 3.42 -6.096 3.492 -6.096C3.528 -6.096 3.564 -6.132 3.6 -6.156C3.936 -6.396 4.164 -6.936 4.164 -7.428C4.164 -7.668 3.996 -7.812 3.78 -7.812C3.384 -7.812 3.324 -7.368 3.324 -6.972C3.312 -6.708 3.336 -6.456 3.288 -6.204ZM1.944 -5.808L1.62 -5.472C1.356 -5.208 1.092 -4.944 0.888 -4.632C0.456 -3.972 0.204 -3.048 0.204 -2.028C0.204 -1.896 0.216 -1.776 0.228 -1.644C0.312 -0.948 0.78 -0.3 1.356 -0.012L1.164 0.156L1.536 0.144C2.004 -0.192 2.4 -0.588 2.844 -0.936C2.88 -0.732 2.94 -0.528 3.012 -0.336C3.036 -0.3 3.156 -0.048 3.156 -0.024C3.156 0.036 3.084 0.108 3.048 0.156L3.348 0.144C3.6 -0.12 3.84 -0.396 4.056 -0.696L4.068 -1.044C4.044 -1.02 3.996 -0.984 3.948 -0.984C3.816 -0.984 3.696 -1.14 3.648 -1.236C3.624 -1.308 3.624 -1.392 3.624 -1.476V-3.048C3.624 -3.192 3.612 -3.348 3.612 -3.504C3.612 -3.936 3.708 -4.248 3.924 -4.512C3.96 -4.572 4.032 -4.62 4.032 -4.68C4.032 -4.764 3.9 -4.884 3.888 -4.908C3.78 -5.052 3.744 -5.064 3.504 -5.1C3.012 -5.232 2.688 -5.352 2.268 -5.592C2.16 -5.664 2.052 -5.748 1.944 -5.808ZM1.452 -4.968C1.608 -4.896 2.4 -4.416 2.424 -4.404L2.664 -4.26C2.76 -4.212 2.808 -4.164 2.808 -4.032C2.808 -3.996 2.808 -3.96 2.808 -3.936V-1.488C2.808 -1.452 2.808 -1.416 2.808 -1.368C2.808 -1.332 2.808 -1.296 2.796 -1.26C2.736 -1.092 2.304 -0.972 2.124 -0.972C1.644 -0.972 1.284 -1.392 1.164 -1.836C1.092 -2.076 1.08 -2.316 1.08 -2.556C1.08 -2.7 1.092 -2.856 1.092 -3C1.104 -3.552 1.092 -4.14 1.296 -4.668C1.332 -4.776 1.404 -4.872 1.452 -4.968Z"/>
+ <path id="g66" d="M1.848 -7.8C1.8 -7.8 1.752 -7.788 1.716 -7.764C1.464 -7.656 1.452 -7.344 1.452 -7.092C1.452 -7.056 1.452 -7.008 1.452 -6.972V-6.792C1.452 -6.708 1.44 -6.624 1.44 -6.54C1.44 -6.48 1.44 -6.408 1.428 -6.348C1.428 -6.324 1.428 -6.3 1.428 -6.264C1.428 -6.252 1.428 -6.228 1.428 -6.216C1.464 -6.168 1.548 -6.096 1.62 -6.096C1.656 -6.096 1.692 -6.132 1.728 -6.156C2.04 -6.42 2.28 -6.924 2.28 -7.392C2.28 -7.644 2.172 -7.812 1.92 -7.812C1.896 -7.812 1.872 -7.8 1.848 -7.8ZM3.084 -6.204C3.144 -6.168 3.216 -6.096 3.288 -6.096C3.336 -6.096 3.384 -6.144 3.408 -6.156C3.732 -6.48 3.96 -6.828 3.96 -7.428C3.96 -7.668 3.792 -7.812 3.576 -7.812C3.336 -7.812 3.204 -7.632 3.156 -7.428C3.108 -7.176 3.108 -6.36 3.084 -6.204ZM1.188 -5.808L0.204 -4.548V-4.536L0.384 -4.392H0.396C0.432 -4.44 0.588 -4.668 0.648 -4.668C0.744 -4.668 0.828 -4.488 0.852 -4.452C0.96 -4.248 0.972 -4.032 0.972 -3.804C0.972 -3.768 0.972 -3.72 0.972 -3.684V-1.368C0.972 -1.332 0.972 -1.284 0.972 -1.248C0.972 -0.936 0.744 -0.828 0.492 -0.756V-0.504C0.924 -0.504 1.296 -0.276 1.512 0.024C1.56 0.084 1.584 0.156 1.692 0.156C1.86 0.156 1.98 -0.036 2.088 -0.144L3.12 -1.176C3.24 -0.9 3.384 -0.624 3.516 -0.348C3.564 -0.252 3.648 -0.132 3.648 -0.024C3.648 0 3.636 0.012 3.636 0.036L3.84 0.156L4.776 -1.344L4.56 -1.464C4.524 -1.404 4.38 -1.14 4.332 -1.128C4.296 -1.128 4.272 -1.14 4.248 -1.164C4.056 -1.308 3.936 -1.536 3.936 -1.848C3.936 -1.92 3.936 -1.992 3.936 -2.052V-3.888C3.936 -4.092 3.936 -4.308 3.936 -4.524C3.936 -4.728 3.924 -4.968 4.02 -5.088C4.044 -5.136 4.116 -5.16 4.128 -5.208C4.14 -5.208 4.14 -5.352 4.14 -5.352C3.9 -5.4 3.684 -5.568 3.612 -5.808C3.588 -5.808 3.564 -5.808 3.54 -5.808C3.444 -5.808 3.432 -5.76 3.396 -5.7C3.312 -5.52 3.096 -5.4 2.916 -5.352C2.916 -5.328 2.916 -5.304 2.916 -5.28C2.916 -5.16 3.024 -5.112 3.06 -5.052C3.12 -4.92 3.12 -4.764 3.12 -4.584C3.12 -4.416 3.12 -4.248 3.12 -4.092V-1.932C3.12 -1.848 3.132 -1.764 3.132 -1.68C3.132 -1.488 3.06 -1.464 2.94 -1.344L2.52 -0.924C2.472 -0.876 2.388 -0.756 2.316 -0.756C2.256 -0.756 2.208 -0.816 2.172 -0.84L1.932 -1.056C1.848 -1.116 1.788 -1.164 1.788 -1.308V-3.54C1.788 -4.056 1.776 -4.536 1.608 -5.028C1.536 -5.256 1.332 -5.664 1.188 -5.808Z"/>
+ <path id="g67" d="M1.872 -5.808L1.152 -5.088C1.068 -5.004 0.972 -4.92 0.912 -4.812L0.972 -4.716L1.872 -3.816H1.884L2.604 -4.536C2.688 -4.62 2.784 -4.704 2.844 -4.812L2.784 -4.908L1.872 -5.808ZM0.888 1.812L1.104 1.92L2.712 -0.588C2.76 -0.648 2.844 -0.744 2.844 -0.816C2.844 -0.876 2.772 -0.936 2.736 -0.972L2.052 -1.656C2.004 -1.704 1.944 -1.788 1.884 -1.8C1.848 -1.8 1.812 -1.776 1.788 -1.752C1.728 -1.704 1.128 -1.092 1.128 -1.092C1.068 -1.032 0.948 -0.948 0.924 -0.864C0.912 -0.864 0.912 -0.828 0.912 -0.828S0.936 -0.756 0.948 -0.756L1.092 -0.576C1.26 -0.312 1.344 0 1.344 0.36C1.344 0.708 1.26 1.056 1.116 1.368C1.044 1.524 0.948 1.656 0.888 1.812Z"/>
+ <path id="g68" d="M1.872 0.156H1.884L2.868 -0.828C2.784 -0.924 2.688 -1.02 2.604 -1.104L2.16 -1.548C2.124 -1.584 1.92 -1.8 1.872 -1.8C1.8 -1.8 1.716 -1.68 1.668 -1.632L1.104 -1.068C1.068 -1.032 0.912 -0.912 0.912 -0.828C0.924 -0.792 0.96 -0.756 0.984 -0.732L1.872 0.156Z"/>
+ <path id="g69" d="M1.944 -5.808L1.62 -5.472C1.356 -5.208 1.092 -4.944 0.888 -4.632C0.456 -3.972 0.204 -3.048 0.204 -2.028C0.204 -1.896 0.216 -1.776 0.228 -1.644C0.312 -0.948 0.78 -0.3 1.356 -0.012L1.164 0.156L1.536 0.144C2.004 -0.192 2.4 -0.588 2.844 -0.936C2.88 -0.732 2.94 -0.528 3.012 -0.336C3.036 -0.3 3.156 -0.048 3.156 -0.024C3.156 0.036 3.084 0.108 3.048 0.156L3.348 0.144C3.6 -0.12 3.84 -0.396 4.056 -0.696L4.068 -1.044C4.044 -1.02 3.996 -0.984 3.948 -0.984C3.816 -0.984 3.696 -1.14 3.648 -1.236C3.624 -1.308 3.624 -1.392 3.624 -1.476V-3.048C3.624 -3.192 3.612 -3.348 3.612 -3.504C3.612 -3.936 3.708 -4.248 3.924 -4.512C3.96 -4.572 4.032 -4.62 4.032 -4.68C4.032 -4.764 3.9 -4.884 3.888 -4.908C3.78 -5.052 3.744 -5.064 3.504 -5.1C3.012 -5.232 2.688 -5.352 2.268 -5.592C2.16 -5.664 2.052 -5.748 1.944 -5.808ZM1.452 -4.968C1.608 -4.896 2.4 -4.416 2.424 -4.404L2.664 -4.26C2.76 -4.212 2.808 -4.164 2.808 -4.032C2.808 -3.996 2.808 -3.96 2.808 -3.936V-1.488C2.808 -1.452 2.808 -1.416 2.808 -1.368C2.808 -1.332 2.808 -1.296 2.796 -1.26C2.736 -1.092 2.304 -0.972 2.124 -0.972C1.644 -0.972 1.284 -1.392 1.164 -1.836C1.092 -2.076 1.08 -2.316 1.08 -2.556C1.08 -2.7 1.092 -2.856 1.092 -3C1.104 -3.552 1.092 -4.14 1.296 -4.668C1.332 -4.776 1.404 -4.872 1.452 -4.968Z"/>
+ <path id="g70" d="M1.9872 -7.128L1.1376 -6.2784V-6.264L1.9872 -5.4144H2.0016L2.8512 -6.264V-6.2784L1.9872 -7.128ZM1.9872 -1.4112L1.1376 -0.5616V-0.5472L1.9872 0.3024H2.0016L2.8512 -0.5472V-0.5616L1.9872 -1.4112Z"/>
+ <path id="g71" d="M17.489 -47.7353C17.0715 -47.5497 16.8396 -47.0858 16.886 -46.4364C16.9787 -45.4622 17.3035 -44.6736 17.9065 -44.0705C18.3704 -43.6066 18.8807 -43.3283 19.4374 -43.2819L19.623 -43.2355L19.4374 -43.1891C18.4168 -42.6788 17.489 -42.6788 16.3757 -43.1427C15.6334 -43.421 14.5665 -43.9777 13.4067 -44.72L12.8036 -45.0911V-45.2766C12.8036 -45.7405 12.3861 -46.0189 11.9686 -45.8333L11.8294 -45.7405L11.0872 -46.1117C10.345 -46.4828 9.60273 -46.7611 8.90688 -46.9003C6.81933 -47.3178 4.639 -46.7611 2.87618 -45.2766C1.80921 -44.3952 0.83502 -43.0035 0.37112 -41.6582C0.27834 -41.4263 0.27834 -41.4263 0.13917 -41.3799C-0.09278 -41.3335 -0.32473 -41.1015 -0.32473 -40.8232C-0.37112 -40.5912 -0.27834 -40.4057 -0.13917 -40.2665L0 -40.1737L-0.04639 -39.8954C-0.04639 -39.7098 -0.09278 -39.4315 -0.09278 -39.2459C-0.13917 -38.8748 -0.13917 -38.8748 -0.23195 -38.8284C-0.41751 -38.7356 -0.4639 -38.5965 -0.51029 -38.4573C-0.51029 -38.2254 -0.41751 -37.9934 -0.23195 -37.9006C-0.09278 -37.8542 -0.09278 -37.8078 -0.04639 -37.5759C-0.04639 -37.1584 0.09278 -36.4161 0.23195 -35.9522C0.55668 -34.6997 1.25253 -33.4472 2.08755 -32.4266L2.45867 -32.0555L2.3195 -31.9627C1.71643 -31.4988 1.29892 -30.9885 1.06697 -30.2927L0.9278 -29.9215V-29.3185C0.9278 -28.7154 0.9278 -28.669 1.02058 -28.3907C1.34531 -27.5557 1.8556 -27.0918 2.55145 -27.0454C2.69062 -27.0454 2.92257 -27.0454 3.01535 -27.0918C3.61842 -27.1845 4.1751 -27.6948 4.31427 -28.3443C4.49983 -28.9937 4.26788 -29.4576 3.61842 -29.6432C3.01535 -29.8288 2.41228 -29.6432 2.18033 -29.2257C1.99477 -28.8082 2.22672 -28.3907 2.64423 -28.3907C3.15452 -28.3907 3.34008 -28.9937 2.96896 -29.3185C2.87618 -29.3649 2.87618 -29.3649 2.96896 -29.4113C2.96896 -29.4113 3.15452 -29.4113 3.29369 -29.4113C3.57203 -29.4113 3.85037 -29.2721 3.98954 -29.0865S4.12871 -28.6226 4.03593 -28.3443C3.89676 -27.9268 3.61842 -27.602 3.2473 -27.4165C3.06174 -27.3701 2.96896 -27.3237 2.69062 -27.3237C2.22672 -27.3237 2.04116 -27.4165 1.76282 -27.6948C1.3917 -28.0659 1.20614 -28.6226 1.20614 -29.3185C1.20614 -30.2927 1.62365 -31.0813 2.41228 -31.6844L2.64423 -31.8699L2.92257 -31.5916C3.57203 -30.9885 4.49983 -30.3854 5.28846 -30.0143C7.56157 -28.9474 10.0202 -28.8546 12.4789 -29.6896C13.7778 -30.1535 14.8448 -30.7102 17.489 -32.3802C18.8807 -33.2616 20.1333 -34.0039 20.0405 -33.8647C19.9941 -33.8647 19.7621 -33.6327 19.4374 -33.4008C17.6746 -31.8699 15.7262 -29.9679 12.8964 -26.8598L12.7109 -26.6279L12.5717 -26.6742C12.2933 -26.767 12.1078 -26.9526 11.9686 -27.4629C11.8294 -27.8804 11.7367 -28.0196 11.5511 -28.1123S11.18 -28.2051 10.9944 -28.0659C10.8553 -27.9268 10.7161 -27.6948 10.4841 -27.0918C10.113 -26.0248 9.69551 -25.3289 9.23161 -24.865C8.53576 -24.2156 7.60796 -23.9836 6.9585 -24.4011C6.68016 -24.5403 6.26265 -25.0506 6.07709 -25.4217C5.79875 -25.8856 5.75236 -26.5351 5.89153 -26.9062L5.93792 -26.999L6.0307 -26.9526C6.21626 -26.767 6.40182 -26.7206 6.63377 -26.8598C6.9585 -27.0454 6.9585 -27.5093 6.63377 -27.7412C6.30904 -27.9268 5.93792 -27.6948 5.70597 -27.1381C5.5668 -26.9062 5.5668 -26.8598 5.5668 -26.4887C5.52041 -25.7001 5.79875 -25.0506 6.44821 -24.4475C6.9585 -23.8908 7.60796 -23.7517 8.39659 -24.03C9.46356 -24.4011 10.345 -25.4681 10.7625 -27.0454C10.948 -27.602 11.0408 -27.7876 11.18 -27.834C11.3655 -27.9732 11.6439 -27.834 11.7367 -27.6484C11.8294 -27.5093 11.7831 -27.3701 11.6903 -26.9526C11.5975 -26.4887 11.5975 -26.3495 11.7367 -26.2103C11.8294 -26.0712 11.9222 -26.0712 12.1542 -26.164L12.3397 -26.2103L12.247 -26.1176C12.2006 -26.0712 11.6439 -25.4217 11.0408 -24.7259C10.0202 -23.6125 9.88107 -23.4733 9.78829 -23.4733C9.78829 -23.5197 9.64912 -23.5197 9.55634 -23.5197C9.09244 -23.5197 8.8141 -23.0558 8.99966 -22.6383L9.04605 -22.4991L8.39659 -21.8497C7.79352 -21.2466 7.09767 -20.6435 7.00489 -20.6435C7.00489 -20.6435 6.91211 -20.6899 6.86572 -20.7827C6.40182 -21.525 5.42763 -22.128 4.59261 -22.2208H4.31427L4.45344 -22.3136C4.96373 -22.4991 5.33485 -23.0094 5.42763 -23.6125C5.52041 -24.1228 5.33485 -24.7259 4.91734 -25.1434C4.22149 -25.7928 3.20091 -25.932 2.3195 -25.4217C2.08755 -25.2362 1.71643 -24.865 1.53087 -24.5867C1.25253 -24.03 1.06697 -23.3342 1.15975 -22.6847C1.25253 -22.128 1.48448 -21.525 1.76282 -21.1074C1.76282 -21.0611 1.76282 -21.0147 1.62365 -20.8291C1.15975 -20.0405 1.02058 -18.9735 1.34531 -18.1849C1.48448 -17.9065 1.71643 -17.5354 1.8556 -17.3962C2.50506 -16.7932 3.43286 -16.7468 3.98954 -17.2571C4.26788 -17.489 4.36066 -17.721 4.36066 -18.0457C4.36066 -18.2777 4.36066 -18.3704 4.26788 -18.5096C4.08232 -18.8807 3.7112 -19.0663 3.29369 -19.0199C2.64423 -18.9735 2.22672 -18.4632 2.45867 -17.9993S3.34008 -17.6282 3.43286 -18.1849C3.47925 -18.324 3.34008 -18.6024 3.20091 -18.6488C3.10813 -18.6952 3.20091 -18.7416 3.38647 -18.7416C3.75759 -18.7416 4.03593 -18.5096 4.08232 -18.1849C4.12871 -17.8138 3.94315 -17.489 3.57203 -17.3035C3.38647 -17.2107 3.29369 -17.2107 3.06174 -17.2107C2.7834 -17.2107 2.73701 -17.2107 2.45867 -17.3499C1.62365 -17.7674 1.25253 -18.9271 1.57726 -19.9941C1.71643 -20.3188 1.90199 -20.7363 1.94838 -20.7827C1.99477 -20.7827 2.08755 -20.6899 2.22672 -20.5508C3.29369 -19.5766 4.87095 -19.2982 6.21626 -19.8549C6.35543 -19.9477 6.58738 -20.0405 6.68016 -20.0869C6.81933 -20.1796 6.91211 -20.226 6.91211 -20.1796C6.9585 -20.1333 7.14406 -19.5766 7.19045 -19.2982C7.28323 -18.8807 7.32962 -18.1385 7.23684 -17.6746C7.05128 -16.7468 6.54099 -15.7726 5.75236 -14.7984C5.61319 -14.6128 5.38124 -14.4273 5.33485 -14.3809C4.31427 -13.7314 3.85037 -13.4067 3.2473 -12.8036C1.94838 -11.5511 1.11336 -10.0202 0.78863 -8.39659C0.69585 -8.11825 0.69585 -8.07186 0.60307 -8.07186C0.4639 -8.02547 0.27834 -7.8863 0.23195 -7.79352C0.04639 -7.46879 0.18556 -7.00489 0.4639 -6.86572C0.60307 -6.81933 0.60307 -6.81933 0.60307 -6.4946C0.64946 -5.65958 0.74224 -5.14929 0.97419 -4.49983C1.11336 -3.98954 1.48448 -3.2473 1.71643 -2.87618C3.01535 -0.88141 5.1029 0.18556 7.32962 0.09278C7.8863 0.09278 8.25742 0 8.76771 -0.09278C10.0666 -0.51029 11.2264 -1.43809 11.8294 -2.55145C12.5253 -3.89676 12.5717 -5.47402 11.9222 -6.72655L11.7367 -7.09767L12.015 -7.00489C12.6181 -6.77294 12.85 -6.77294 13.685 -6.77294C14.4273 -6.77294 14.4737 -6.77294 14.8912 -6.86572L15.3551 -7.00489L15.4943 -6.86572C15.5406 -6.81933 15.819 -6.58738 16.0509 -6.35543C18.0457 -4.54622 20.4116 -3.15452 22.4528 -2.69062C22.6383 -2.64423 22.8239 -2.59784 22.8239 -2.59784C22.8703 -2.55145 22.2672 -1.80921 21.9425 -1.48448C21.293 -0.83502 20.4116 -0.37112 19.6694 -0.23195C19.5302 -0.23195 19.391 -0.18556 19.3446 -0.18556C19.2518 -0.13917 19.2518 -0.18556 19.391 -0.32473C19.5766 -0.51029 19.6694 -0.74224 19.6694 -1.02058C19.6694 -1.76282 19.0199 -2.27311 18.324 -2.04116C18.0457 -1.99477 17.721 -1.67004 17.6282 -1.3917C17.489 -1.02058 17.5818 -0.64946 17.8601 -0.32473L17.9993 -0.18556L17.7674 -0.23195C16.7004 -0.4639 15.819 -1.15975 15.3551 -2.04116C15.1231 -2.50506 14.984 -3.2473 15.0767 -3.61842V-3.75759L15.1695 -3.61842C15.3551 -3.43286 15.587 -3.38647 15.819 -3.52564C16.0045 -3.61842 16.0973 -3.75759 16.0973 -3.98954C16.0973 -4.26788 15.8654 -4.49983 15.587 -4.49983C15.2159 -4.49983 14.9376 -4.26788 14.7984 -3.85037C14.6592 -3.2473 14.8912 -2.22672 15.3551 -1.48448C15.8654 -0.74224 16.8396 -0.13917 17.7674 0.04639C18.1849 0.13917 19.1127 0.13917 19.5766 0.04639C20.226 -0.04639 20.8291 -0.32473 21.4322 -0.69585C21.8961 -1.02058 22.6383 -1.76282 22.9167 -2.18033L23.1486 -2.50506L23.5661 -2.45867C23.8908 -2.41228 24.262 -2.36589 24.865 -2.36589H25.7001L25.7928 -2.18033C26.1176 -1.53087 26.767 -0.9278 27.4629 -0.64946C27.9268 -0.4639 28.1587 -0.41751 28.669 -0.37112C29.0401 -0.37112 29.1329 -0.41751 29.2721 -0.4639C29.8752 -0.74224 30.0143 -1.34531 29.5504 -1.62365C29.4576 -1.71643 29.4113 -1.71643 29.2257 -1.71643C29.0865 -1.67004 29.0401 -1.67004 28.901 -1.53087C28.8082 -1.43809 28.8082 -1.3917 28.8082 -1.20614C28.8082 -0.97419 28.8082 -0.9278 28.901 -0.83502C28.9474 -0.78863 29.0401 -0.69585 29.0401 -0.69585C29.0401 -0.64946 28.4371 -0.64946 28.1587 -0.69585C27.5557 -0.83502 27.0454 -1.11336 26.5815 -1.57726C26.3031 -1.8556 26.0248 -2.27311 26.0248 -2.36589C26.0248 -2.41228 26.1176 -2.41228 26.2567 -2.45867C26.3495 -2.45867 26.6742 -2.50506 26.9062 -2.55145C28.3443 -2.82979 29.736 -3.43286 31.1741 -4.40705L31.638 -4.68539L31.6844 -4.49983C31.8235 -3.89676 32.241 -3.06174 32.6586 -2.45867C33.0297 -1.99477 33.6327 -1.43809 34.0966 -1.06697C34.6997 -0.64946 35.5347 -0.27834 36.277 -0.09278C36.9264 0.04639 37.2976 0.09278 38.0862 0.09278C38.7356 0.09278 38.8748 0.09278 39.2923 0C40.2665 -0.13917 41.1015 -0.55668 41.8902 -1.15975C42.0293 -1.25253 42.1685 -1.34531 42.1685 -1.34531C42.2149 -1.34531 42.3077 -1.20614 42.4005 -1.06697C42.8644 -0.51029 43.4674 -0.09278 44.1633 0.04639C44.3952 0.09278 44.5808 0.13917 44.9055 0.13917C45.4158 0.13917 45.7405 0.04639 46.1117 -0.09278C46.4364 -0.23195 46.7611 -0.60307 46.9003 -0.88141C46.9931 -1.06697 46.9931 -1.11336 46.9931 -1.43809S46.9931 -1.80921 46.9003 -1.99477S46.5756 -2.41228 46.39 -2.45867C46.158 -2.55145 45.6941 -2.50506 45.4622 -2.41228C45.2766 -2.3195 45.0447 -2.08755 44.9519 -1.94838C44.8591 -1.67004 44.9519 -1.34531 45.1839 -1.15975C45.323 -1.06697 45.6478 -1.06697 45.7869 -1.15975C46.0653 -1.34531 46.158 -1.67004 46.0189 -1.90199C45.9725 -1.99477 45.8797 -2.08755 45.8333 -2.08755C45.7405 -2.18033 45.7869 -2.22672 46.0189 -2.22672S46.2972 -2.18033 46.39 -2.13394C46.7611 -1.90199 46.8539 -1.3917 46.6219 -0.9278C46.4828 -0.69585 46.2044 -0.4639 45.9725 -0.32473C45.323 -0.04639 44.488 -0.04639 43.7922 -0.37112C43.3283 -0.55668 42.818 -0.97419 42.5396 -1.34531L42.4005 -1.57726L42.6788 -1.8556C43.5602 -2.7834 44.1633 -3.98954 44.488 -5.28846C44.5808 -5.75236 44.5808 -5.75236 44.6736 -5.75236C44.9055 -5.79875 45.1839 -6.21626 45.0911 -6.44821C45.0447 -6.68016 44.8591 -6.91211 44.72 -6.9585C44.6272 -7.00489 44.6272 -7.00489 44.6272 -7.23684C44.6272 -7.8863 44.4416 -8.8141 44.2097 -9.60273C43.8849 -10.4377 43.3283 -11.4583 42.7252 -12.1542C42.586 -12.3397 42.4932 -12.4325 42.4932 -12.4789C42.4932 -12.4789 42.6324 -12.4325 42.7716 -12.4325C43.2819 -12.3861 44.0241 -12.5253 44.488 -12.7572C45.4158 -13.2211 46.0189 -14.1489 45.9725 -15.0304C45.8797 -15.6798 45.6014 -16.2365 45.0911 -16.5612C44.3024 -17.0715 43.3746 -17.0251 42.7716 -16.4221C42.4932 -16.1901 42.3541 -16.0045 42.2613 -15.6798C42.0293 -14.8912 42.4932 -13.9634 43.2819 -13.7778C43.6994 -13.6387 44.3024 -13.7314 44.6272 -14.0098C44.8591 -14.2417 44.9055 -14.6592 44.7663 -14.8448C44.488 -15.2623 44.0241 -15.2623 43.7922 -14.8448C43.6066 -14.6128 43.6994 -14.2417 43.9313 -14.1026C44.0705 -14.0098 43.9777 -13.9634 43.653 -14.0098C43.2819 -14.0098 43.0499 -14.1026 42.818 -14.3809S42.5396 -14.7984 42.5396 -15.2159C42.5396 -15.5406 42.5396 -15.587 42.6324 -15.819C43.0963 -16.7004 44.3024 -16.886 45.0911 -16.1901C45.4622 -15.819 45.6478 -15.4479 45.6478 -14.8912C45.6478 -14.6128 45.6478 -14.5201 45.555 -14.3345C45.323 -13.5923 44.6736 -13.0356 43.8385 -12.8036C43.5138 -12.7109 42.7716 -12.6645 42.4468 -12.7572C42.1685 -12.8036 42.1685 -12.8036 41.8438 -13.082C41.4727 -13.4531 40.9624 -13.8242 40.4985 -14.1026C40.3129 -14.2417 40.1273 -14.3345 40.1273 -14.3809C40.081 -14.3809 40.2201 -14.6128 40.3593 -14.9376C41.3335 -16.7932 42.0293 -18.7416 42.4005 -20.5972C42.4932 -20.9219 42.5396 -21.2002 42.5396 -21.2466C42.5396 -21.2466 42.6788 -21.293 42.7716 -21.3394C44.6736 -21.9425 46.0653 -23.9372 46.4364 -26.5815C46.4828 -27.1381 46.4828 -28.1587 46.4364 -28.6226C46.1117 -30.7102 44.8591 -32.241 43.2819 -32.5658C42.9107 -32.6586 42.1685 -32.6586 41.5654 -32.5658C41.1943 -32.5194 41.1015 -32.5194 41.1015 -32.5658C41.0088 -32.8441 40.2665 -34.143 39.849 -34.7925L39.6171 -35.1636L39.9882 -35.7203C40.8232 -37.112 41.3799 -38.3645 41.6118 -39.5243C41.7046 -40.0346 41.751 -40.7768 41.7046 -41.1015V-41.4263L41.9829 -41.3799C43.2355 -41.2871 44.3952 -40.7768 45.2766 -39.9418C46.2508 -39.014 46.7147 -37.947 46.8075 -36.7409C46.8539 -35.5811 46.4828 -34.6069 45.7405 -33.9111C45.4622 -33.6327 45.1375 -33.4472 44.72 -33.308C44.3488 -33.1688 43.6994 -33.1225 43.3283 -33.2152C42.4932 -33.4472 41.8438 -33.9575 41.4727 -34.7461C41.3799 -34.8853 41.3335 -34.9781 41.3335 -35.0244C41.3335 -35.0244 41.4263 -35.0244 41.4727 -34.9781C41.6582 -34.8853 42.0293 -34.8853 42.2613 -35.0244C42.4468 -35.1636 42.586 -35.3956 42.586 -35.6275C42.6324 -35.9986 42.4468 -36.277 42.1685 -36.4161C41.8438 -36.5553 41.4727 -36.5089 41.2407 -36.2306L41.1015 -36.1378L41.1479 -36.3234C41.2407 -37.1584 41.6582 -37.8078 42.2613 -38.0862C42.4932 -38.2254 42.5396 -38.2254 42.9107 -38.2254C43.2355 -38.2254 43.2819 -38.2254 43.5138 -38.0862C43.9313 -37.9006 44.2097 -37.4831 44.3024 -36.9728L44.3488 -36.7409H44.488C44.6272 -36.7409 44.6272 -36.7409 44.6272 -36.8337C44.6272 -37.0192 44.5344 -37.4367 44.3952 -37.6223C43.8385 -38.6893 42.4468 -38.8284 41.6118 -37.947C40.2665 -36.6017 40.8232 -34.0503 42.6324 -33.1688C43.0499 -32.9833 43.421 -32.8905 43.8849 -32.8905C44.488 -32.8905 44.9983 -33.0297 45.4622 -33.3544C46.7611 -34.143 47.3642 -35.9059 46.9467 -37.5759C46.5292 -39.3851 45.1375 -40.8696 43.3283 -41.4263C43.1891 -41.4727 43.0963 -41.519 43.0963 -41.519S43.1891 -41.5654 43.3283 -41.5654C43.653 -41.6118 44.4416 -41.8438 44.8127 -41.9829C46.39 -42.586 47.3178 -43.5602 47.5034 -44.8591C47.6889 -45.9725 47.1322 -46.8539 46.39 -46.6683C45.8333 -46.4828 45.7405 -45.7869 46.158 -45.4158C46.2508 -45.3694 46.3436 -45.323 46.5292 -45.323S46.7611 -45.323 46.9003 -45.4158C46.9931 -45.4622 47.1322 -45.555 47.1322 -45.6014L47.225 -45.7405L47.2714 -45.555C47.2714 -45.323 47.2714 -44.8591 47.1786 -44.5808C47.0858 -44.2561 46.8075 -43.7458 46.6219 -43.4674C46.158 -42.9107 45.3694 -42.4468 44.4416 -42.1221C43.7458 -41.9366 42.9571 -41.7974 42.0293 -41.7046H41.6582V-41.8902C41.519 -42.6788 41.1015 -43.6066 40.5912 -44.2561C40.1737 -44.7663 39.5243 -45.1839 38.8748 -45.3694C38.4573 -45.4622 37.8078 -45.4622 37.3903 -45.3694C36.7873 -45.1839 36.2306 -44.9055 35.6739 -44.4416C35.0708 -43.8849 34.6533 -43.653 34.0039 -43.4674C33.7719 -43.3746 33.5864 -43.3746 33.2152 -43.3283C32.9369 -43.3283 32.7513 -43.3283 32.7513 -43.3283S32.7977 -43.421 32.8441 -43.4674C33.0297 -43.653 33.0761 -43.8385 32.9833 -44.0705C32.7513 -44.5344 32.0555 -44.4416 31.9627 -43.9313C31.9163 -43.653 32.1019 -43.3283 32.4266 -43.1427C32.7977 -43.0035 33.54 -43.0035 34.1894 -43.1891C34.4678 -43.2819 35.0244 -43.5602 35.1172 -43.6066C35.1636 -43.6994 35.21 -43.653 35.21 -43.3746C35.2564 -42.4468 36.1378 -41.7974 37.112 -41.9829C37.7151 -42.1221 38.0398 -42.4932 37.9934 -42.9571C37.9934 -43.2819 37.7615 -43.5138 37.3903 -43.5138C36.7409 -43.5138 36.5089 -42.6788 37.0656 -42.3541L37.1584 -42.3077L36.9728 -42.2613C36.2306 -42.1221 35.4883 -42.6788 35.4883 -43.421C35.4883 -43.7458 35.5347 -43.8849 35.8131 -44.1633C36.5553 -44.8591 37.6223 -45.2766 38.5037 -45.1375C39.7098 -44.9519 40.684 -44.0241 41.1479 -42.6324C41.2407 -42.3541 41.3799 -41.8902 41.3799 -41.751C41.3799 -41.7046 41.2407 -41.7046 40.9624 -41.7046C40.081 -41.6582 39.1068 -41.4263 38.3181 -41.1479S36.4625 -40.3129 35.7667 -39.7098L35.442 -39.4779L34.8853 -39.849C32.3338 -41.519 29.6896 -42.4468 26.6742 -42.6324C25.7001 -42.7252 24.7259 -42.6788 23.6125 -42.5396C21.2466 -42.2149 19.1127 -41.3799 13.8706 -38.6893C11.6439 -37.5295 10.9016 -37.2512 9.69551 -37.112C7.60796 -36.88 5.5668 -37.7151 4.639 -39.1995L4.49983 -39.4779L4.59261 -39.6171C4.77817 -39.849 5.14929 -40.2201 5.38124 -40.3593C5.61319 -40.5449 6.0307 -40.7304 6.35543 -40.8232C6.72655 -40.916 7.28323 -40.916 7.65435 -40.8232C8.62854 -40.5912 9.32439 -39.6634 9.09244 -38.8284C8.99966 -38.3181 8.62854 -37.947 8.16464 -37.947C7.93269 -37.9934 7.70074 -38.0398 7.56157 -38.2254C7.37601 -38.4109 7.28323 -38.782 7.32962 -39.0604V-39.1995L7.46879 -39.0604C7.83991 -38.6893 8.48937 -39.0604 8.3502 -39.5707C8.30381 -39.7562 8.07186 -39.9882 7.8863 -39.9882C7.56157 -39.9882 7.28323 -39.7562 7.14406 -39.4315C7.05128 -39.2459 7.05128 -39.1995 7.05128 -38.9212S7.05128 -38.5501 7.14406 -38.3645C7.32962 -37.947 7.70074 -37.7151 8.11825 -37.7151C8.39659 -37.7151 8.58215 -37.7615 8.76771 -37.9006C9.37078 -38.3181 9.55634 -39.2459 9.18522 -39.9882C9.04605 -40.2665 8.58215 -40.7304 8.25742 -40.8696C7.60796 -41.2407 6.81933 -41.2871 6.0307 -41.0088C5.47402 -40.8232 4.91734 -40.4521 4.54622 -39.9882L4.36066 -39.8026L4.31427 -39.9882C4.08232 -40.684 4.1751 -41.6118 4.49983 -42.2613C5.1029 -43.4674 6.4946 -44.1169 7.70074 -43.6994C8.3502 -43.4674 8.76771 -43.0963 9.37078 -42.1685C10.0202 -41.2407 10.345 -40.916 10.948 -40.7304C11.2264 -40.684 11.6903 -40.684 11.9686 -40.7304C12.6645 -40.916 13.2675 -41.519 13.4067 -42.1685C13.4067 -42.3077 13.4531 -42.4005 13.4995 -42.4005C13.5923 -42.4005 13.8242 -42.5396 13.917 -42.6788C14.4273 -43.2819 13.8242 -44.1633 13.082 -43.9313C12.6181 -43.7922 12.3861 -43.2819 12.5717 -42.8644C12.6645 -42.6788 12.85 -42.4932 12.9892 -42.4468C13.082 -42.4005 13.082 -42.4005 13.0356 -42.3077C13.0356 -42.2613 12.9428 -42.2149 12.85 -42.1685C12.4325 -41.9366 11.8758 -42.0757 11.4583 -42.5396C11.2264 -42.7716 11.1336 -42.9571 10.7625 -43.6066C10.3914 -44.3024 10.2058 -44.5808 9.92746 -44.8127C9.69551 -45.0911 9.46356 -45.2302 9.13883 -45.3694C8.76771 -45.555 8.48937 -45.6014 8.07186 -45.6478C7.00489 -45.6941 5.89153 -45.2302 5.05651 -44.3024C4.22149 -43.4674 3.75759 -42.4005 3.66481 -41.0551C3.61842 -40.4985 3.66481 -39.8954 3.75759 -39.2923L3.85037 -38.9212L3.75759 -38.5501C3.57203 -38.0862 3.57203 -37.8078 3.57203 -37.2512C3.57203 -35.5811 4.45344 -33.9575 6.07709 -32.8441L6.26265 -32.7049L6.07709 -32.7513C5.93792 -32.7513 5.52041 -32.7513 5.14929 -32.7513C4.54622 -32.7513 4.36066 -32.7513 4.08232 -32.6586C3.66481 -32.5658 3.15452 -32.4266 2.87618 -32.2874L2.73701 -32.1947L2.50506 -32.473C1.29892 -33.7719 0.4639 -35.5347 0.23195 -37.3439C0.13917 -37.8542 0.13917 -37.8542 0.27834 -37.947C0.41751 -37.9934 0.51029 -38.2717 0.51029 -38.4573C0.4639 -38.6429 0.37112 -38.7356 0.23195 -38.8284S0.09278 -38.9212 0.18556 -39.6171C0.23195 -39.8954 0.23195 -40.1273 0.27834 -40.1273C0.27834 -40.1273 0.37112 -40.1273 0.41751 -40.1273C0.41751 -40.1273 0.55668 -40.2201 0.60307 -40.2665C0.78863 -40.3593 0.88141 -40.5912 0.88141 -40.7768S0.78863 -41.1479 0.64946 -41.2871L0.55668 -41.3335L0.69585 -41.751C2.08755 -45.1839 5.28846 -47.225 8.53576 -46.6683C9.37078 -46.5292 10.0202 -46.3436 10.9944 -45.8333L11.6903 -45.5086L11.6439 -45.3694C11.6439 -45.1839 11.7367 -44.9055 11.9222 -44.8127C12.1078 -44.6736 12.2933 -44.6736 12.4789 -44.7663L12.6645 -44.8591L13.2211 -44.488C14.8912 -43.4674 16.1437 -42.8644 17.0715 -42.586C17.4426 -42.4932 18.0457 -42.4932 18.4632 -42.5396C19.1591 -42.6788 19.7621 -42.9571 21.1074 -43.7458C22.7775 -44.72 23.6589 -45.0447 24.6795 -45.1375C25.1434 -45.1839 25.4217 -45.1375 25.7464 -44.9983C26.0712 -44.8127 26.3031 -44.6272 26.9062 -44.0705S27.6948 -43.3746 28.0196 -43.1891C28.2979 -43.0499 28.3443 -43.0499 28.7154 -43.0499C29.1329 -43.0499 29.4113 -43.0963 29.7824 -43.2819C30.4318 -43.6066 30.8957 -44.2561 31.0349 -45.0447C31.0813 -45.6941 30.8493 -46.3436 30.3854 -46.5292C29.736 -46.8075 29.1793 -46.0653 29.6432 -45.5086C29.736 -45.3694 29.8752 -45.323 30.1071 -45.323S30.4782 -45.3694 30.6174 -45.555L30.7102 -45.6941L30.7566 -45.4622C30.7566 -45.2302 30.7102 -44.8591 30.6174 -44.5808C30.3854 -44.0241 29.7824 -43.5138 29.1793 -43.3746C29.0865 -43.3283 28.8546 -43.3283 28.669 -43.3283C28.3443 -43.3283 28.2979 -43.3746 28.0196 -43.4674C27.6948 -43.653 27.5093 -43.7922 26.9062 -44.3488S26.0712 -45.1375 25.7464 -45.2766S25.1434 -45.4622 24.6795 -45.4158C23.5661 -45.323 22.6383 -44.9519 20.8755 -43.9313C20.4116 -43.653 20.1796 -43.5602 19.7621 -43.5602C18.4632 -43.5602 17.3035 -44.8127 17.1643 -46.39C17.1643 -46.5292 17.1643 -46.7147 17.2107 -46.8075V-46.9931L17.3499 -46.8539C17.721 -46.39 18.4632 -46.7611 18.324 -47.3642C18.2313 -47.7353 17.8138 -47.9209 17.489 -47.7353ZM41.4263 -41.1943C41.4727 -40.916 41.4263 -40.2201 41.3335 -39.7562C41.1943 -38.782 40.7768 -37.6687 40.1737 -36.6017C39.9882 -36.2306 39.5243 -35.4883 39.4779 -35.442C39.4315 -35.442 39.2923 -35.5811 39.1532 -35.7667C38.2254 -37.0192 37.2512 -38.0398 35.8131 -39.1532L35.6739 -39.2923L35.8131 -39.4315C36.0914 -39.6171 36.6481 -40.0346 37.0656 -40.2665C38.2717 -40.9624 39.8026 -41.3799 41.1015 -41.4263H41.4263ZM4.54622 -37.2976C5.28846 -36.045 6.44821 -35.0244 7.83991 -34.3286C8.67493 -33.9111 9.50995 -33.6791 10.4377 -33.4936C10.948 -33.4472 12.5253 -33.4008 13.0356 -33.4936C14.0098 -33.6327 14.984 -33.9111 15.9118 -34.2358C16.654 -34.5605 17.1643 -34.7925 18.6952 -35.5347C21.1074 -36.6945 22.0816 -37.0656 23.2878 -37.3903C24.1692 -37.5759 24.6331 -37.6223 25.7928 -37.6223C26.7206 -37.6223 26.9526 -37.6223 27.3701 -37.5759C28.6226 -37.3439 29.736 -37.0192 30.8957 -36.4161C31.406 -36.1842 32.2874 -35.6275 32.4266 -35.5347C32.4266 -35.4883 32.4266 -35.3492 32.1947 -34.9317C32.0555 -34.6533 31.9163 -34.2822 31.8699 -34.1894L31.7771 -34.0039L31.406 -34.2358C30.2463 -35.0244 28.8546 -35.5347 27.4165 -35.7667C26.9062 -35.8595 25.6073 -35.8595 25.0506 -35.8131C24.5867 -35.7667 23.7981 -35.6275 23.3806 -35.5347L23.1022 -35.442L22.963 -35.5811C22.7311 -35.7667 22.4528 -35.7203 22.2208 -35.4883C22.1744 -35.442 22.128 -35.3492 22.0816 -35.2564C22.0816 -35.1636 22.0816 -35.1172 21.8961 -35.0708C21.4322 -34.9317 20.0869 -34.375 18.5096 -33.6791C17.6282 -33.2616 16.6076 -32.8441 16.2829 -32.7049C14.752 -32.1019 13.3139 -31.7308 12.247 -31.638L11.9686 -31.5916L11.8294 -31.7771C11.5975 -32.0555 11.1336 -32.0091 10.948 -31.638C10.9016 -31.5916 10.9016 -31.5916 10.3914 -31.638C8.39659 -31.7771 6.54099 -32.6122 5.33485 -33.8647C4.54622 -34.6533 4.08232 -35.4883 3.89676 -36.4625C3.80398 -36.9264 3.85037 -37.8078 3.94315 -38.179L3.98954 -38.4573L4.1751 -38.0398C4.26788 -37.8542 4.45344 -37.4831 4.54622 -37.2976ZM27.1381 -35.4883C28.669 -35.3028 30.0607 -34.7925 31.3596 -33.9575L31.6844 -33.7255L31.5916 -33.4936C31.1741 -32.4266 30.5246 -30.0607 30.3854 -29.0401C30.3391 -28.9474 30.3391 -28.901 30.2927 -28.901C29.6432 -29.1793 29.0865 -29.3649 28.4835 -29.4113C28.2979 -29.4576 27.7876 -29.4576 27.2773 -29.4576C24.7723 -29.4576 23.5197 -29.736 22.963 -30.4782C22.7775 -30.7102 22.7311 -30.9885 22.7311 -31.3596C22.7775 -32.1483 23.3806 -32.7049 24.1228 -32.6122H24.3084L24.2156 -32.5194C23.9836 -32.3802 23.8908 -32.0091 24.0764 -31.7771C24.2156 -31.5452 24.5867 -31.4988 24.8186 -31.6844C25.097 -31.9163 25.0506 -32.4266 24.7723 -32.6586C24.0764 -33.1688 23.0558 -32.8905 22.6847 -32.1483C22.4991 -31.8235 22.4528 -31.5916 22.4528 -31.3132C22.4528 -30.4782 22.9167 -29.8752 23.8908 -29.5504C24.262 -29.4113 24.9578 -29.2721 25.5145 -29.2257C25.7928 -29.2257 26.1176 -29.1793 26.2103 -29.1793H26.3495L26.0248 -28.9937C25.2362 -28.6226 24.5867 -27.9732 24.262 -27.3701C24.2156 -27.2309 24.1692 -27.1381 24.1692 -27.1381S23.8445 -27.4165 23.4269 -27.7412C22.0352 -28.8082 21.7105 -29.2721 21.5713 -30.0607C21.4322 -31.0349 21.9425 -32.1483 23.0558 -33.308C23.6125 -33.9111 24.2156 -34.2822 24.9114 -34.5142C25.1898 -34.6069 25.2825 -34.6069 25.7001 -34.6069C26.2567 -34.6069 26.3959 -34.5605 26.767 -34.375C27.2309 -34.1894 27.5093 -33.7719 27.5557 -33.308L27.602 -33.0761L27.0918 -32.2874C26.5815 -31.4988 26.4423 -31.3132 26.2567 -31.2669C26.164 -31.2669 25.9784 -31.3132 25.9784 -31.406C25.9784 -31.406 25.932 -31.4524 25.8392 -31.4524C25.7001 -31.4524 25.7001 -31.4524 25.7001 -31.3132C25.7001 -30.9885 26.0712 -30.4782 26.4887 -30.2927C27.5093 -29.8288 28.7618 -30.2927 29.2721 -31.3596C29.5968 -32.0555 29.5968 -32.7513 29.2257 -33.4936C28.9474 -34.0966 28.2979 -34.5605 27.5557 -34.7925C27.1845 -34.8853 26.2567 -34.8853 25.7464 -34.8389C24.7723 -34.6997 23.6589 -34.3286 22.5919 -33.7255C20.7827 -32.7049 19.7157 -31.7771 19.1591 -30.6638C18.8343 -30.0143 18.6952 -29.5504 18.6952 -28.8082C18.6952 -27.9732 18.8807 -27.3701 19.2982 -26.5351C19.7621 -25.5145 20.3652 -24.6331 21.7569 -23.0558C22.6383 -22.0352 23.0558 -21.4786 23.4269 -21.0147C24.3084 -19.8549 24.865 -18.8343 25.097 -17.8138C25.1898 -17.4426 25.2825 -16.7468 25.2362 -16.7004C25.2362 -16.7004 25.097 -16.7468 24.9578 -16.8396C24.03 -17.2107 23.0558 -17.8601 22.0352 -18.6488C21.293 -19.2518 21.293 -19.2982 21.1538 -19.623C21.0147 -20.0405 20.5972 -20.8755 20.3652 -21.2466C20.226 -21.4322 19.9941 -21.8033 19.7621 -22.0352C19.1127 -22.9167 18.7416 -23.5197 18.6488 -23.9836L18.556 -24.2156L18.1385 -23.7517C17.9065 -23.5197 17.6746 -23.3342 17.6746 -23.3342C17.6282 -23.3342 17.3499 -24.0764 17.2571 -24.6331C17.1643 -25.097 17.1643 -26.8598 17.2571 -27.5093C17.5818 -29.8752 18.4168 -31.8235 19.6694 -33.1225C20.1333 -33.5864 21.1074 -34.2822 21.8033 -34.6533L22.1744 -34.8389L22.2672 -34.7925C22.5455 -34.5142 23.0094 -34.6533 23.1486 -35.0244C23.195 -35.1636 23.195 -35.1636 23.3806 -35.21C23.6589 -35.3028 24.4939 -35.442 24.865 -35.4883C25.4217 -35.5811 26.6279 -35.5811 27.1381 -35.4883ZM33.1225 -34.9781C34.2822 -34.0503 35.3956 -32.8905 36.2306 -31.638L36.5553 -31.2205L36.045 -30.4782C35.7667 -30.0607 35.5347 -29.736 35.5347 -29.6896C35.4883 -29.6896 35.3956 -29.8288 35.2564 -30.0607C34.7461 -30.9885 34.0503 -31.9163 33.3544 -32.6122C32.9833 -33.0297 32.3802 -33.54 32.1019 -33.7255L32.0091 -33.8183L32.1483 -34.1894C32.241 -34.375 32.3802 -34.6997 32.5194 -34.9317C32.6586 -35.2564 32.7049 -35.3028 32.7513 -35.2564C32.7513 -35.2564 32.9369 -35.1172 33.1225 -34.9781ZM32.3802 -33.1688C32.8441 -32.7977 33.4936 -32.1019 33.8647 -31.5916C34.375 -30.9885 35.3028 -29.5504 35.3028 -29.4113C35.3028 -29.3649 35.2564 -29.2257 35.1636 -29.0865C34.6533 -28.3443 33.8647 -26.9526 33.4472 -26.1176L33.1688 -25.6537L32.9833 -26.0248C32.6586 -26.7206 32.2874 -27.2309 31.7308 -27.7876C31.4988 -28.0659 30.8957 -28.5298 30.6638 -28.669C30.6174 -28.7154 30.6174 -28.7154 30.6638 -29.1329C30.8957 -30.3391 31.2205 -31.5452 31.5916 -32.6122C31.9163 -33.6327 31.9163 -33.54 31.9627 -33.4936S32.1947 -33.308 32.3802 -33.1688ZM18.556 -33.4008C18.5096 -33.3544 16.7932 -32.2874 16.1437 -31.8235C13.685 -30.3391 11.9686 -29.6432 10.1594 -29.4576C9.23161 -29.3649 7.97908 -29.4576 7.05128 -29.6896C5.61319 -30.0607 4.22149 -30.803 3.15452 -31.7771L2.92257 -32.0091L3.2473 -32.1483C3.89676 -32.3802 4.40705 -32.473 5.19568 -32.473C6.07709 -32.473 6.77294 -32.3338 7.60796 -32.0091C8.16464 -31.7771 8.76771 -31.5916 9.278 -31.4988C9.69551 -31.406 10.4841 -31.3132 10.7625 -31.3132C10.9016 -31.3132 10.9016 -31.2669 10.9944 -31.1741C11.0872 -30.9885 11.2264 -30.9421 11.4583 -30.9421C11.6439 -30.9421 11.8294 -31.0349 11.9222 -31.2205C11.9686 -31.3132 11.9686 -31.3132 12.1078 -31.3132C12.1542 -31.3132 12.3861 -31.3596 12.6181 -31.406C14.1489 -31.5916 15.587 -32.1019 17.9065 -33.1225C18.5096 -33.4008 18.556 -33.4008 18.556 -33.4008ZM18.4168 -31.8699C17.4426 -30.2463 16.886 -28.1123 16.886 -25.9784C16.886 -24.865 17.0251 -24.03 17.3499 -23.3342C17.3962 -23.195 17.4426 -23.1022 17.4426 -23.1022C17.4426 -23.0558 16.7004 -22.4528 16.2365 -22.128C15.4015 -21.4786 14.1026 -20.6899 13.2675 -20.226C13.082 -20.0869 12.8964 -19.9941 12.8964 -19.9941C12.9428 -19.9941 13.0356 -20.0405 13.1284 -20.0405C14.2417 -20.3188 15.587 -20.1333 16.654 -19.5766S18.7416 -17.9993 19.2518 -16.886C19.6694 -16.0509 19.9013 -14.9376 19.9013 -14.0562V-13.8706L19.5766 -14.1026C18.9271 -14.4737 18.1849 -14.8912 17.3962 -15.1695C17.2107 -15.2623 17.2107 -15.2623 17.2107 -15.4015C17.2571 -15.6334 17.3035 -16.4684 17.2571 -16.654C17.1179 -17.2107 16.7468 -17.6746 16.1437 -17.9529C14.9376 -18.556 13.4067 -18.4168 11.7367 -17.5354C10.9944 -17.1643 10.113 -16.5612 9.7419 -16.0973C9.64912 -15.9582 9.60273 -15.9118 9.46356 -15.9118C8.67493 -15.7726 6.9585 -15.2159 6.26265 -14.8448L6.12348 -14.7984L6.21626 -14.9376C7.05128 -16.0509 7.46879 -16.9787 7.56157 -18.0457C7.65435 -18.7879 7.51518 -19.5302 7.19045 -20.226L7.14406 -20.3652L7.4224 -20.5972C7.60796 -20.6899 8.07186 -21.1538 8.48937 -21.5713C9.23161 -22.2672 9.278 -22.3136 9.37078 -22.3136C9.41717 -22.2672 9.50995 -22.2672 9.60273 -22.2672H9.7419V-22.0352C9.78829 -21.4786 10.2058 -20.9683 10.9016 -20.5508C11.3655 -20.2724 12.0614 -20.1333 12.5717 -20.1796C13.1748 -20.2724 13.8242 -20.7363 13.8242 -21.1074C13.8242 -21.3858 13.4995 -21.6641 13.2211 -21.6177C12.8036 -21.525 12.6645 -20.9683 12.9892 -20.6899C13.082 -20.6435 13.082 -20.6435 12.9892 -20.5972C12.9428 -20.5972 12.8036 -20.5508 12.7109 -20.5044C12.1542 -20.3652 11.3655 -20.5508 10.7625 -20.9683C10.2522 -21.3394 10.0666 -21.6641 10.0202 -22.1744C10.0202 -22.4064 10.0202 -22.4528 10.113 -22.5455C10.1594 -22.6383 10.1594 -22.7311 10.2058 -22.8703C10.2522 -23.195 10.3914 -23.4733 10.7625 -23.8445S11.5975 -24.5403 12.2006 -24.8186C12.4325 -24.9578 12.85 -25.1434 13.082 -25.2362C13.685 -25.5609 13.8706 -25.7928 13.7314 -26.164C13.6387 -26.3495 13.5459 -26.4423 13.2675 -26.4887C13.2211 -26.5351 13.1284 -26.5351 13.1284 -26.5815C13.082 -26.5815 13.2675 -26.767 13.4531 -27.0454C14.984 -28.669 16.3293 -30.0607 17.1643 -30.9421C17.5818 -31.3132 18.6488 -32.3338 18.6952 -32.3338C18.6952 -32.3338 18.556 -32.1483 18.4168 -31.8699ZM43.2355 -32.2874C43.8385 -32.1483 44.4416 -31.8235 44.8591 -31.3596C45.4158 -30.803 45.7869 -30.0607 46.0189 -29.1793C46.158 -28.669 46.2044 -28.2979 46.2044 -27.602C46.2044 -26.3495 45.9261 -25.1434 45.4158 -24.1228C44.7663 -22.8703 43.9313 -22.0816 42.818 -21.6641L42.586 -21.5713L42.6324 -21.6641C42.6324 -21.8497 42.7252 -22.5455 42.7716 -23.1022C42.8644 -23.7053 42.8644 -25.5609 42.7716 -26.2103C42.6788 -27.2309 42.4932 -28.4835 42.2613 -29.3649L42.1685 -29.6432H42.2613C42.4005 -29.6432 42.818 -29.5504 43.0963 -29.4576C44.0705 -29.1329 44.5808 -28.4835 44.5808 -27.6948C44.5808 -27.4629 44.5344 -27.3701 44.488 -27.5093C44.4416 -27.6948 43.9777 -27.7412 43.7922 -27.602C43.5602 -27.4629 43.4674 -27.1381 43.6066 -26.9062C43.7922 -26.6279 44.0705 -26.5815 44.3952 -26.7206C44.9055 -26.999 45.0447 -27.8804 44.6736 -28.5762C44.488 -28.901 44.0705 -29.3185 43.6994 -29.504S42.8644 -29.8288 42.4468 -29.9215C42.2613 -29.9215 42.0757 -29.9679 42.0757 -29.9679S42.0293 -30.1535 41.9366 -30.4318C41.7974 -30.8493 41.3799 -31.9163 41.2871 -32.1019L41.2407 -32.241L41.4727 -32.2874C41.8902 -32.3338 41.9366 -32.3338 42.4468 -32.3338C42.818 -32.3338 43.0963 -32.3338 43.2355 -32.2874ZM36.8337 -30.7102C37.0656 -30.3391 37.112 -30.3854 36.7409 -30.0143C36.5553 -29.8288 36.277 -29.5504 36.1378 -29.3649S35.9059 -29.0401 35.9059 -28.9937C35.8595 -28.9937 35.8131 -29.0401 35.7667 -29.1793L35.6739 -29.3649L35.7667 -29.504C35.9986 -29.8752 36.6945 -30.9421 36.6945 -30.9421S36.7873 -30.8493 36.8337 -30.7102ZM37.5759 -29.3649C38.3645 -27.8804 39.014 -26.0712 39.3387 -24.4475L39.4315 -23.9372L39.1995 -24.03C39.0604 -24.0764 38.8748 -24.1228 38.7356 -24.1228C38.5501 -24.1228 38.5037 -24.1228 38.4109 -23.9836C38.2254 -23.8445 38.179 -23.6589 38.179 -23.1486C38.1326 -22.7775 38.179 -22.7311 38.2254 -22.5455C38.3181 -22.4528 38.4573 -22.2208 38.6429 -22.0352C39.014 -21.6641 39.1068 -21.4786 39.1068 -21.293C39.1068 -21.1538 38.9676 -20.9219 38.8284 -20.8755C38.6893 -20.7827 38.5501 -20.8291 38.0862 -21.3394C37.6687 -21.7569 37.6687 -21.7569 37.6687 -21.9425S37.5759 -22.963 37.5295 -23.3806C37.2512 -25.1434 36.7873 -26.8598 36.1378 -28.3443L35.9986 -28.669L36.1378 -28.8546C36.3234 -29.1329 36.6945 -29.5504 36.9728 -29.8288C37.1584 -30.1071 37.2048 -30.1071 37.2512 -30.0607C37.2512 -30.0143 37.4367 -29.736 37.5759 -29.3649ZM28.4835 -29.1329C28.901 -29.0865 29.1793 -28.9937 29.5968 -28.8546C29.8288 -28.7618 30.2463 -28.6226 30.2927 -28.5762C30.2927 -28.5762 30.2463 -28.3907 30.1999 -28.1587C30.1535 -27.8804 30.1071 -27.4165 30.0607 -27.0454C30.0143 -26.7206 29.9679 -26.3959 29.9679 -26.3959C29.9215 -26.3959 29.8288 -26.4423 29.6896 -26.5351C29.2721 -26.8134 28.4835 -27.0454 27.9268 -27.0454H27.6948V-26.9062V-26.767L28.0196 -26.7206C28.669 -26.7206 29.2257 -26.4887 29.6896 -26.164L29.9215 -26.0248V-25.8392C29.8752 -25.4681 29.7824 -24.4011 29.736 -23.6125C29.736 -23.1022 29.6896 -22.5455 29.6896 -22.3136L29.6432 -21.9425L29.4576 -21.8497C29.2721 -21.7569 29.1329 -21.7569 28.8082 -21.7105C28.4371 -21.7105 27.834 -21.7569 27.6948 -21.8033C27.6948 -21.8497 27.5557 -22.0352 27.4629 -22.3136C26.8598 -23.8908 25.932 -25.3289 24.7723 -26.5351L24.4011 -26.9526L24.4939 -27.1381C24.7723 -27.7412 25.4217 -28.3907 26.1176 -28.7154C26.8134 -29.0865 27.6484 -29.2257 28.4835 -29.1329ZM35.5811 -28.901L35.6739 -28.7154L35.442 -28.3443C34.6997 -27.0918 34.0966 -25.4217 33.8647 -24.03C33.8183 -23.8445 33.8183 -23.7053 33.8183 -23.7053C33.8183 -23.7517 33.7255 -23.9372 33.6791 -24.2156C33.5864 -24.4939 33.4936 -24.8186 33.4472 -25.0042L33.3544 -25.2825L33.4936 -25.6537C33.8183 -26.2103 34.2358 -26.999 34.8853 -28.0659C35.21 -28.6226 35.4883 -29.0401 35.4883 -29.0401S35.5347 -28.9937 35.5811 -28.901ZM31.0349 -28.0659C31.5916 -27.602 32.1019 -26.999 32.5194 -26.3495C32.7049 -25.9784 32.9833 -25.4217 32.9833 -25.3289C32.9833 -25.2825 32.8905 -25.0042 32.7513 -24.7259C32.2874 -23.8445 31.4988 -21.8033 31.4988 -21.6641C31.4988 -21.6177 31.4524 -21.6177 31.3596 -21.6177C31.3132 -21.6641 30.9421 -21.6641 30.6174 -21.6641C30.2927 -21.7105 29.9679 -21.7105 29.9679 -21.7569C29.9679 -21.7569 30.0143 -21.8033 30.0607 -21.8033C30.1999 -21.9425 30.5246 -22.3136 30.6638 -22.5455C31.2669 -23.5661 31.1741 -24.9578 30.4318 -25.8856C30.2463 -26.1176 30.2463 -26.164 30.2463 -26.3031C30.2927 -26.6279 30.4782 -27.9268 30.5246 -28.1587L30.571 -28.3907L30.6638 -28.3443C30.7102 -28.2979 30.8957 -28.2051 31.0349 -28.0659ZM35.9986 -27.9732C36.6481 -26.3959 37.0656 -24.6795 37.2976 -22.7775C37.3903 -21.8961 37.3903 -21.8497 37.2512 -21.8033C37.1584 -21.7569 36.9728 -21.5713 36.7873 -21.3858C36.4161 -20.9683 36.2306 -20.8291 36.0914 -20.8291C35.9059 -20.8291 35.6739 -21.1538 35.7203 -21.3394S35.8595 -21.6177 36.1378 -21.9889C36.3234 -22.1744 36.5089 -22.4064 36.5553 -22.4991C36.6481 -22.6383 36.6481 -22.6847 36.6481 -23.1022C36.6481 -23.8445 36.5089 -24.1228 36.0914 -24.1228S35.3028 -23.9372 35.0244 -23.6589C34.8389 -23.4269 34.7461 -23.2878 34.7461 -23.0094C34.7461 -22.7775 34.7925 -22.6383 34.9781 -22.4991C35.1636 -22.4064 35.442 -22.4064 35.6275 -22.4991C36.0914 -22.7311 35.9986 -23.4733 35.442 -23.5661H35.3492L35.5347 -23.7053C35.6739 -23.7517 35.8131 -23.7981 35.9986 -23.7981L36.2306 -23.8445L36.3234 -23.7053C36.3698 -23.5661 36.3698 -23.4269 36.3698 -23.1022C36.3698 -22.5919 36.3698 -22.5455 35.9059 -22.0816C35.7203 -21.8961 35.5811 -21.6641 35.5347 -21.5713C35.442 -21.3394 35.442 -21.1074 35.5347 -20.9683C35.7667 -20.6435 35.9986 -20.5972 36.6481 -20.7827C36.88 -20.8755 37.1584 -20.9219 37.2512 -20.9683H37.3903V-20.226C37.3903 -18.7879 37.2048 -17.1643 36.88 -15.819C36.8337 -15.4943 36.7873 -15.4943 36.6945 -15.4943C36.6481 -15.4943 36.4161 -15.5406 36.1378 -15.5406C34.4678 -15.6798 32.6122 -15.3551 30.7566 -14.5665C30.0607 -14.2417 28.7154 -13.5459 28.1123 -13.1284C28.0196 -13.082 28.0659 -13.1748 28.2979 -13.4995C28.5298 -13.8706 28.669 -14.1489 29.3185 -15.4479L29.5504 -15.9582L29.9679 -16.0973C30.7566 -16.3757 31.4524 -16.7932 32.1019 -17.3962C32.473 -17.7674 32.8905 -18.324 33.0761 -18.6488C33.1688 -18.8343 33.2152 -18.8343 33.4008 -18.8807C34.4678 -19.2518 35.5347 -18.9271 35.7667 -18.2313C35.8131 -18.0457 35.8131 -17.7674 35.7667 -17.5818C35.6275 -17.3035 35.3028 -17.1643 35.0244 -17.2107H34.8389L34.9781 -17.3035C35.21 -17.5354 35.21 -17.9065 34.9781 -18.0921C34.7461 -18.324 34.4214 -18.2777 34.2358 -18.0457C33.7255 -17.489 34.6069 -16.7004 35.3956 -16.9323C35.6739 -17.0251 35.9522 -17.3035 36.045 -17.5818C36.277 -18.3704 35.7203 -19.1127 34.7461 -19.2982C34.375 -19.3446 33.7719 -19.2982 33.4008 -19.1591C33.3544 -19.1591 33.3544 -19.2055 33.4472 -19.391C33.7719 -20.0869 33.9575 -21.0611 33.9575 -22.0352C33.9575 -23.4733 34.2822 -25.1434 34.8389 -26.4887C35.1172 -27.2309 35.7667 -28.3907 35.8131 -28.3443C35.8131 -28.3443 35.9059 -28.1587 35.9986 -27.9732ZM13.3139 -26.3031C13.3603 -26.3031 13.4067 -26.2103 13.4531 -26.164C13.5923 -25.7928 13.3603 -25.6073 12.6645 -25.3753C12.2933 -25.2362 11.9686 -25.097 11.6903 -24.9114C11.4583 -24.8186 11.4583 -24.8186 12.1542 -25.5609C12.5253 -25.9784 12.8964 -26.3495 12.9428 -26.3959C13.0356 -26.4423 13.2211 -26.3959 13.3139 -26.3031ZM30.4782 -25.2362C30.7102 -24.865 30.7566 -24.5403 30.7566 -24.03C30.7566 -23.5661 30.7102 -23.2878 30.5246 -22.9167C30.4318 -22.6383 30.1535 -22.2672 30.0143 -22.1744C29.9679 -22.1744 29.9679 -22.1744 29.9679 -22.5919C30.0143 -23.5661 30.0607 -24.5403 30.1071 -25.097C30.1535 -25.4217 30.1999 -25.7001 30.1999 -25.7001C30.1999 -25.7928 30.3854 -25.5145 30.4782 -25.2362ZM3.89676 -25.3753C4.36066 -25.2825 4.82456 -24.9114 5.01012 -24.4939C5.33485 -23.7517 5.1029 -22.9167 4.45344 -22.5919C4.08232 -22.4528 3.66481 -22.4528 3.43286 -22.6847C3.34008 -22.7775 3.34008 -22.7775 3.34008 -23.0094V-23.2414L3.43286 -23.1486C3.66481 -22.8239 4.12871 -22.8703 4.31427 -23.195S4.26788 -23.9836 3.85037 -23.9836C3.61842 -23.9836 3.47925 -23.8908 3.29369 -23.7053C3.10813 -23.4733 3.06174 -23.2414 3.06174 -22.963C3.06174 -22.5919 3.15452 -22.4528 3.52564 -22.2672L3.7112 -22.2208L3.52564 -22.1744C3.06174 -22.0816 2.55145 -21.8033 2.18033 -21.4786C1.94838 -21.2466 1.99477 -21.2466 1.76282 -21.7105S1.43809 -22.5455 1.43809 -23.0558S1.53087 -23.9372 1.71643 -24.3547C1.90199 -24.6795 2.3195 -25.097 2.59784 -25.2362C3.01535 -25.4217 3.47925 -25.5145 3.89676 -25.3753ZM33.3544 -24.2156C33.5864 -23.4269 33.6327 -22.7775 33.6791 -21.9889C33.6791 -21.5713 33.6327 -21.2002 33.6327 -21.1074L33.5864 -20.9219L33.4936 -21.0147C33.2152 -21.2466 32.6586 -21.4322 32.1019 -21.525C31.9163 -21.5713 31.7771 -21.6177 31.7771 -21.6177C31.7771 -21.7569 32.5194 -23.6589 32.9369 -24.4939L33.1688 -24.9578L33.2152 -24.8186C33.2152 -24.7259 33.308 -24.4475 33.3544 -24.2156ZM39.1532 -23.7517C39.2923 -23.7053 39.3851 -23.6589 39.4315 -23.6125C39.5243 -23.5661 39.5243 -23.5661 39.3851 -23.5661C39.1532 -23.5661 38.9212 -23.2878 38.9212 -23.0094C38.9212 -22.6383 39.1068 -22.4528 39.4779 -22.4064C39.6634 -22.4064 39.6634 -22.4064 39.7098 -22.2672C39.8026 -21.5713 39.849 -19.5302 39.7562 -18.6024C39.7098 -17.8138 39.5707 -17.0715 39.4315 -16.4221C39.3387 -15.819 39.1068 -14.984 39.0604 -14.8912C39.0604 -14.8912 38.9676 -14.8912 38.782 -14.984C38.4109 -15.1231 37.8078 -15.2623 37.3903 -15.3551C37.2512 -15.4015 37.112 -15.4479 37.112 -15.4479C37.112 -15.4943 37.1584 -15.7726 37.2512 -16.0973C37.5295 -17.489 37.6687 -18.5096 37.6687 -19.9013C37.7151 -20.5972 37.7151 -20.9219 37.7615 -20.9219C37.7615 -20.9219 37.947 -20.8755 38.1326 -20.8291C38.782 -20.5972 39.0604 -20.6435 39.2923 -20.9219C39.3387 -21.0147 39.3851 -21.1074 39.3851 -21.2466C39.3851 -21.525 39.2923 -21.6641 38.9212 -22.0816C38.4573 -22.5455 38.4573 -22.6383 38.4573 -23.1486C38.4573 -23.7053 38.5501 -23.7981 38.7356 -23.7981C38.8284 -23.7981 39.014 -23.7981 39.1532 -23.7517ZM4.77817 -21.8961C5.19568 -21.8033 5.65958 -21.6177 6.07709 -21.2466C6.26265 -21.1074 6.72655 -20.5508 6.72655 -20.458C6.72655 -20.4116 6.07709 -20.0869 5.75236 -19.9941C5.01012 -19.7621 4.08232 -19.8085 3.34008 -20.1333C3.01535 -20.3188 2.59784 -20.5972 2.36589 -20.8291L2.18033 -21.0147L2.27311 -21.1538C2.3195 -21.2002 2.41228 -21.293 2.55145 -21.3858C3.20091 -21.8961 3.94315 -22.0352 4.77817 -21.8961ZM28.8082 -21.4322H29.6896V-20.7827C29.6896 -19.2982 29.504 -17.3962 29.2257 -16.5148L29.1793 -16.2829L28.9474 -16.2365C28.8082 -16.1901 28.6226 -16.1437 28.2515 -16.1437C27.7876 -16.0973 27.7412 -16.0973 27.7876 -16.1901C28.2051 -17.6746 28.2979 -18.9271 28.0659 -20.2724C27.9732 -20.6899 27.834 -21.293 27.7876 -21.4322C27.7412 -21.525 27.7412 -21.525 27.834 -21.4786C27.9268 -21.4786 28.3443 -21.4786 28.8082 -21.4322ZM31.3132 -21.3394C31.3596 -21.293 31.1277 -20.6435 30.571 -19.1127C30.1999 -18.1385 29.6432 -16.7468 29.5968 -16.7932C29.5968 -16.7932 29.5968 -16.886 29.6432 -16.9787C29.7824 -17.6746 29.9215 -19.0663 29.9679 -20.3652V-21.4322L30.6174 -21.3858C30.9885 -21.3858 31.3132 -21.3394 31.3132 -21.3394ZM32.3802 -21.1538C32.7977 -21.0611 33.0761 -20.9683 33.308 -20.7827C33.4472 -20.6899 33.4936 -20.6899 33.54 -20.7363C33.7255 -21.0147 33.3544 -19.7621 33.0761 -19.2055C32.9369 -18.9735 32.8905 -18.9271 32.7049 -18.8343C32.3802 -18.6024 32.0555 -18.3704 31.2669 -17.721C30.6174 -17.1643 30.0143 -16.654 29.8752 -16.654C29.8752 -16.6076 29.8288 -16.654 29.8752 -16.654C30.3391 -17.7674 31.1741 -19.9477 31.5452 -21.0147L31.638 -21.293H31.8235C31.9627 -21.2466 32.1947 -21.2002 32.3802 -21.1538ZM22.0816 -18.2313C23.0558 -17.489 24.1692 -16.8396 25.097 -16.4684L25.2825 -16.3757L25.2362 -15.9582C25.1898 -14.5665 24.5403 -12.9892 23.3806 -11.5511C23.0558 -11.18 22.7775 -10.9016 22.7775 -10.948C22.7775 -10.948 22.6383 -11.0872 22.5455 -11.2264C22.2208 -11.6903 21.8033 -12.247 21.3394 -12.6645L20.9219 -13.082L21.0611 -13.4067C21.525 -14.752 21.7569 -16.2829 21.6177 -17.5354C21.5713 -17.9529 21.4786 -18.6488 21.4322 -18.7879C21.3858 -18.8343 21.4786 -18.7416 21.6177 -18.6488S21.9425 -18.3704 22.0816 -18.2313ZM32.6586 -18.5096C32.6586 -18.4632 32.5194 -18.324 32.3802 -18.1849C31.8235 -17.4426 30.9885 -16.7932 30.1535 -16.4684C30.0143 -16.4221 30.0607 -16.4684 30.4318 -16.7468C30.571 -16.8396 30.8957 -17.1179 31.1741 -17.3499C31.9163 -17.9993 32.0091 -18.0921 32.3338 -18.324S32.7049 -18.556 32.6586 -18.5096ZM14.5201 -17.489C15.2159 -17.3035 15.6334 -16.886 15.6798 -16.3293C15.6798 -16.1437 15.6798 -16.0973 15.587 -16.0045C15.4479 -15.819 15.4015 -15.819 15.1231 -15.8654C14.6128 -15.9582 13.6387 -16.0973 12.9428 -16.1437C12.2006 -16.1901 11.0872 -16.1437 10.4841 -16.0509C10.345 -16.0509 10.2058 -16.0045 10.2058 -16.0045C10.2058 -16.0509 10.6233 -16.4221 10.948 -16.6076C11.6439 -17.0715 12.5717 -17.3962 13.4531 -17.5354C13.685 -17.5818 14.2881 -17.5354 14.5201 -17.489ZM29.0401 -15.7262C28.8546 -15.1695 28.6226 -14.6592 28.1123 -13.8706C27.7876 -13.4067 27.4629 -12.9892 27.1845 -12.6645C26.999 -12.4325 26.8134 -12.2933 25.9784 -11.6439C25.6537 -11.4119 25.0506 -10.948 24.6795 -10.6697C24.3084 -10.345 23.9836 -10.0666 23.9372 -10.0202C23.7981 -9.92746 23.3806 -9.7419 23.3806 -9.78829C23.3806 -9.78829 23.3342 -9.88107 23.2414 -10.0202L23.1486 -10.2522L23.6125 -10.6697C25.5145 -12.247 26.8134 -13.7778 27.5093 -15.4943L27.6484 -15.819H28.3443C28.7154 -15.8654 29.0401 -15.8654 29.0401 -15.8654C29.0865 -15.9118 29.0865 -15.9118 29.0401 -15.7262ZM13.685 -15.7726C13.9634 -15.7726 14.2417 -15.7262 14.3345 -15.7262L14.5665 -15.6798L14.2881 -15.5406C13.8242 -15.3087 13.5923 -14.8912 13.5923 -14.3809S13.8242 -13.4531 14.2881 -13.2211C14.4737 -13.082 14.5665 -13.082 14.8448 -13.082C15.4479 -13.0356 15.8654 -13.2211 16.3293 -13.685C16.654 -13.9634 16.8396 -14.2881 17.0251 -14.7056L17.1179 -14.984L17.6746 -14.752C18.4168 -14.4273 19.2518 -13.9634 19.7157 -13.6387C19.8549 -13.5459 19.9013 -13.4995 19.9013 -13.3603C19.9013 -12.9428 19.6694 -11.9222 19.391 -11.2728C19.2518 -10.948 18.9735 -10.2986 18.9271 -10.2522C18.9271 -10.2522 18.7416 -10.345 18.5096 -10.5305C16.9323 -11.7367 15.2159 -12.5717 13.4531 -12.9428C11.9686 -13.2675 10.2522 -13.2675 8.90688 -12.8964C8.53576 -12.8036 8.53576 -12.7572 8.62854 -13.2675C8.8141 -14.1026 9.23161 -14.984 9.7419 -15.4943L9.88107 -15.6798L10.345 -15.7262C10.5769 -15.7726 10.9944 -15.819 11.2264 -15.819C11.7831 -15.8654 13.1284 -15.8654 13.685 -15.7726ZM9.32439 -15.5406C9.278 -15.4943 9.23161 -15.4015 9.13883 -15.2623C8.72132 -14.5665 8.39659 -13.7314 8.30381 -12.9428L8.25742 -12.7109L7.93269 -12.5717C7.46879 -12.4325 6.77294 -12.0614 6.35543 -11.7831C4.77817 -10.7625 3.75759 -9.278 3.38647 -7.65435C3.29369 -7.14406 3.29369 -6.26265 3.34008 -5.75236C3.57203 -4.1751 4.54622 -2.87618 5.79875 -2.27311C6.44821 -1.99477 7.32962 -1.90199 7.97908 -2.04116C8.67493 -2.18033 9.23161 -2.45867 9.69551 -2.92257C10.6697 -3.89676 10.9016 -5.28846 10.2522 -5.98431C9.97385 -6.30904 9.50995 -6.44821 8.90688 -6.40182C8.3502 -6.35543 7.83991 -6.4946 7.65435 -6.77294S7.56157 -7.4224 7.83991 -7.51518C7.93269 -7.56157 7.97908 -7.60796 7.97908 -7.70074V-7.83991H7.79352C7.00489 -7.74713 6.54099 -6.86572 6.86572 -6.12348C7.09767 -5.65958 7.46879 -5.38124 8.16464 -5.1029C8.8141 -4.87095 8.95327 -4.73178 9.13883 -4.31427C9.23161 -4.12871 9.23161 -3.61842 9.13883 -3.38647C8.90688 -2.92257 8.48937 -2.55145 7.93269 -2.36589C7.65435 -2.27311 7.56157 -2.27311 7.09767 -2.27311C6.54099 -2.27311 6.21626 -2.36589 5.70597 -2.59784C4.73178 -3.06174 4.03593 -3.94315 3.7112 -5.1029C3.61842 -5.42763 3.61842 -5.47402 3.61842 -6.16987C3.61842 -6.81933 3.61842 -6.86572 3.7112 -7.28323C3.98954 -8.21103 4.54622 -9.09244 5.24207 -9.69551C5.98431 -10.345 6.81933 -10.7161 7.79352 -10.9016C8.30381 -10.9944 8.44298 -10.9944 8.44298 -10.9016C8.44298 -10.8553 8.48937 -10.6697 8.53576 -10.4841C8.67493 -10.0666 8.95327 -9.50995 9.13883 -9.23161C9.23161 -9.09244 9.278 -8.99966 9.278 -8.99966S9.18522 -8.99966 9.04605 -9.04605C7.05128 -9.55634 5.05651 -8.53576 4.68539 -6.86572C4.54622 -6.26265 4.68539 -5.5668 4.96373 -5.05651C5.14929 -4.73178 5.61319 -4.31427 5.98431 -4.12871C6.30904 -3.98954 6.72655 -3.85037 7.00489 -3.85037H7.14406V-3.98954V-4.12871H7.00489C6.58738 -4.12871 6.0307 -4.36066 5.65958 -4.68539C5.42763 -4.91734 5.14929 -5.33485 5.05651 -5.61319C4.91734 -5.93792 4.91734 -6.54099 4.96373 -6.81933C5.19568 -7.79352 6.0307 -8.53576 7.09767 -8.8141C7.60796 -8.90688 8.39659 -8.90688 8.90688 -8.76771C9.37078 -8.67493 9.64912 -8.53576 9.78829 -8.39659C9.92746 -8.21103 10.5769 -7.70074 10.9016 -7.51518S11.3655 -7.14406 11.5975 -6.72655C12.1078 -5.75236 12.247 -4.45344 11.8758 -3.34008C11.4119 -1.99477 10.2522 -0.88141 8.76771 -0.37112C8.25742 -0.23195 7.8863 -0.13917 7.32962 -0.13917C5.61319 -0.04639 4.03593 -0.69585 2.7834 -1.99477C1.67004 -3.15452 1.02058 -4.68539 0.88141 -6.44821V-6.77294L1.02058 -6.86572C1.48448 -7.05128 1.53087 -7.70074 1.11336 -7.97908C1.02058 -8.02547 1.02058 -8.07186 1.02058 -8.11825C1.06697 -8.44298 1.25253 -9.18522 1.3917 -9.50995C1.94838 -10.9944 2.96896 -12.3397 4.31427 -13.3603L4.49983 -13.4995L4.36066 -13.3139C4.26788 -13.2675 4.1751 -13.1748 4.1751 -13.1284C4.1751 -13.1284 4.22149 -13.082 4.26788 -13.0356L4.36066 -12.9428L5.01012 -13.5923C5.75236 -14.2881 5.79875 -14.3345 6.68016 -14.752C7.37601 -15.0304 8.30381 -15.3551 9.23161 -15.5406C9.278 -15.587 9.32439 -15.587 9.32439 -15.587S9.32439 -15.5406 9.32439 -15.5406ZM36.5089 -15.2159C36.6017 -15.2159 36.6945 -15.1695 36.6945 -15.1695C36.7409 -15.1695 36.3698 -14.1026 36.1378 -13.4995C35.9059 -12.85 35.4883 -12.0614 35.1636 -11.4583L34.8853 -10.9944L34.5142 -10.8089C33.4008 -10.2522 32.6122 -9.46356 32.1019 -8.39659C31.9627 -8.11825 31.8699 -7.93269 31.8699 -7.8863C31.8699 -7.74713 30.4318 -6.9585 29.6432 -6.68016L29.2721 -6.4946V-6.40182C29.3185 -6.30904 29.3649 -6.26265 29.3649 -6.26265C29.5504 -6.26265 30.7566 -6.81933 31.3132 -7.14406C31.5452 -7.28323 31.6844 -7.37601 31.6844 -7.37601S31.6844 -7.19045 31.638 -7.00489S31.5452 -6.4946 31.5452 -6.07709L31.4988 -5.52041L31.1741 -5.38124C29.4113 -4.639 27.6948 -4.49983 25.9784 -4.91734C25.5609 -5.01012 25.1434 -5.19568 24.6331 -5.61319L24.1692 -5.93792L24.1228 -6.44821C24.0764 -7.32962 23.9372 -8.16464 23.7053 -8.95327L23.5661 -9.32439L23.7517 -9.46356C23.8908 -9.64912 23.9836 -9.64912 24.3084 -9.78829C25.1898 -10.0202 25.8392 -10.113 26.7206 -10.113C27.1381 -10.113 27.5093 -10.0666 27.834 -10.0202C29.3185 -9.78829 29.9679 -9.278 29.9215 -8.3502V-8.21103L29.8288 -8.30381C29.6432 -8.53576 29.3649 -8.58215 29.1329 -8.44298C28.669 -8.11825 28.901 -7.46879 29.4113 -7.46879C30.0607 -7.46879 30.4318 -8.3502 30.1071 -9.09244C29.8752 -9.60273 29.2257 -9.97385 28.4371 -10.2058C27.4165 -10.4841 25.8856 -10.4841 24.8186 -10.2058C24.6795 -10.2058 24.5867 -10.1594 24.5867 -10.1594C24.5867 -10.2058 25.5609 -10.9944 26.164 -11.4583C26.9526 -12.0614 27.602 -12.4789 27.9268 -12.6645C28.5298 -12.9892 29.5504 -13.3139 30.2927 -13.4067C30.6638 -13.4531 31.3132 -13.4531 31.5916 -13.3603C32.1483 -13.2211 32.6122 -12.8964 32.7977 -12.4789C32.8905 -12.247 32.8905 -11.8294 32.7977 -11.5975C32.7049 -11.4119 32.473 -11.18 32.2874 -11.1336C32.1483 -11.0408 31.638 -11.0408 31.638 -11.0872S31.6844 -11.18 31.7308 -11.18C31.8235 -11.2728 31.9627 -11.5047 31.9627 -11.6903S31.8699 -12.015 31.7308 -12.1542C31.3132 -12.5253 30.6638 -12.247 30.6638 -11.6903C30.7102 -11.3655 30.8957 -11.0872 31.2669 -10.9016C31.5452 -10.7625 32.0555 -10.7161 32.3338 -10.8089C32.9833 -11.0408 33.3544 -11.8294 33.0761 -12.5253C32.7977 -13.2675 31.6844 -13.7778 30.5246 -13.7314C30.1999 -13.685 29.6896 -13.6387 29.4576 -13.5923C29.4113 -13.5459 29.6432 -13.685 30.0143 -13.8706C31.5452 -14.6592 33.0761 -15.1231 34.5605 -15.2623C34.7925 -15.3087 36.277 -15.2623 36.5089 -15.2159ZM37.4367 -15.0767C37.9934 -14.9376 38.9676 -14.6128 38.9676 -14.5665C38.9676 -14.4737 38.6429 -13.5459 38.4109 -13.0356C38.2254 -12.5717 37.6223 -11.3655 37.5759 -11.3192C37.5295 -11.3192 37.3439 -11.3192 37.1584 -11.3192C36.6945 -11.3655 36.0914 -11.3192 35.6275 -11.2264C35.442 -11.18 35.3028 -11.1336 35.3028 -11.1336C35.3028 -11.18 35.3956 -11.2728 35.4883 -11.4583C35.9986 -12.3397 36.5089 -13.4995 36.88 -14.7056C36.9728 -14.9376 37.0192 -15.1695 37.0192 -15.1695S37.2512 -15.1231 37.4367 -15.0767ZM40.2201 -13.9634C40.3593 -13.8706 40.4057 -13.8242 40.4057 -13.7778C40.4057 -13.685 40.7768 -13.3139 41.0551 -13.082C41.751 -12.5717 42.4005 -11.4119 42.6324 -10.2522C42.7252 -9.78829 42.7716 -8.8141 42.7252 -8.3502C42.6788 -7.97908 42.4932 -7.09767 42.4005 -6.91211L42.3541 -6.81933L42.2613 -6.86572C42.1221 -6.9585 41.8902 -7.05128 41.3799 -7.14406C41.1479 -7.19045 40.8232 -7.23684 40.7304 -7.23684C40.5449 -7.32962 40.5449 -7.32962 40.5912 -7.4224C40.6376 -7.65435 40.5912 -8.48937 40.5449 -8.72132C40.3129 -9.46356 39.849 -10.1594 39.1532 -10.6233C38.9212 -10.8089 38.3181 -11.0872 38.1326 -11.1336C38.0862 -11.1336 38.0398 -11.18 38.0398 -11.18S38.179 -11.4119 38.3645 -11.6439C38.7356 -12.1542 39.3387 -13.082 39.6634 -13.685C39.8026 -13.917 39.9418 -14.1026 39.9418 -14.1026C39.9882 -14.1026 40.081 -14.0562 40.2201 -13.9634ZM21.7569 -11.7831C22.0816 -11.4119 22.5455 -10.7161 22.5455 -10.6697C22.5455 -10.5769 20.5972 -8.90688 20.5044 -8.90688C20.458 -8.90688 19.2982 -9.92746 19.2982 -9.92746C19.2518 -9.97385 19.391 -10.113 19.4838 -10.2986C19.9477 -10.948 20.5508 -12.015 20.7827 -12.6181L20.8291 -12.7572L21.1538 -12.4789C21.3394 -12.2933 21.6177 -11.9686 21.7569 -11.7831ZM42.3541 -12.1542C43.5602 -10.8089 44.2561 -9.09244 44.3488 -7.4224V-7.00489L44.2097 -6.9585C43.7458 -6.72655 43.7458 -6.07709 44.1633 -5.84514C44.2097 -5.79875 44.2561 -5.75236 44.2561 -5.75236C44.2561 -5.70597 44.2097 -5.52041 44.1633 -5.28846C43.8849 -4.03593 43.3283 -3.01535 42.4468 -2.04116L42.2613 -1.80921L42.1221 -2.08755C42.0757 -2.22672 42.0293 -2.45867 41.9829 -2.55145L41.9366 -2.73701L42.1221 -2.92257C42.4932 -3.2473 42.586 -3.52564 42.4468 -3.80398C42.4005 -3.98954 42.1221 -4.22149 42.0293 -4.22149S41.9366 -4.31427 41.9829 -4.639C42.1221 -5.19568 42.2613 -5.75236 42.3541 -5.84514C42.4932 -5.98431 42.5396 -6.16987 42.5396 -6.30904S42.586 -6.72655 42.6788 -7.00489C43.1891 -8.58215 43.1891 -9.7419 42.7716 -11.0408C42.586 -11.5047 42.4005 -11.9222 42.1685 -12.2933C42.0757 -12.4325 41.9829 -12.5717 42.0293 -12.5717C42.0293 -12.5717 42.1685 -12.3861 42.3541 -12.1542ZM37.3439 -10.9944C37.3903 -10.9944 36.88 -10.2522 36.5089 -9.7419C35.5347 -8.44298 34.2822 -7.23684 33.0297 -6.35543C32.7049 -6.16987 31.8699 -5.70597 31.8235 -5.70597C31.8235 -5.70597 31.8235 -5.84514 31.8235 -6.16987C31.8235 -6.68016 31.9627 -7.28323 32.0555 -7.56157C32.1019 -7.60796 32.241 -7.79352 32.5194 -7.97908C33.308 -8.58215 34.1894 -9.50995 34.7925 -10.3914L35.0244 -10.7625L35.3028 -10.8089C35.5811 -10.9016 35.9986 -10.9944 36.3234 -11.0408C36.4625 -11.0872 37.3439 -11.0408 37.3439 -10.9944ZM9.55634 -10.9016C10.6697 -10.7161 11.9222 -9.97385 13.6387 -8.58215C14.1489 -8.11825 15.0767 -7.28323 15.1231 -7.23684C15.1231 -7.23684 15.0304 -7.19045 14.8912 -7.14406C14.4273 -7.05128 14.0562 -7.00489 13.4531 -7.05128C12.7572 -7.05128 12.3861 -7.14406 11.7831 -7.37601C11.4583 -7.51518 11.4119 -7.51518 11.1336 -7.83991C10.7625 -8.21103 10.5305 -8.39659 10.113 -8.62854C9.88107 -8.76771 9.7419 -8.86049 9.64912 -8.99966C9.278 -9.46356 8.90688 -10.1594 8.76771 -10.6697C8.72132 -10.7625 8.72132 -10.9016 8.67493 -10.9016C8.67493 -10.9944 9.18522 -10.9944 9.55634 -10.9016ZM38.2717 -10.7625C38.8284 -10.5769 39.2923 -10.2522 39.6634 -9.78829C39.9418 -9.50995 40.2201 -8.95327 40.2665 -8.58215C40.3129 -8.30381 40.3593 -7.79352 40.3129 -7.60796L40.2665 -7.46879L40.1737 -7.60796C40.081 -7.65435 39.8954 -7.8863 39.7562 -8.07186C39.2923 -8.62854 39.1068 -8.76771 38.7356 -8.76771C38.5037 -8.72132 38.3181 -8.58215 38.179 -8.3502C38.0862 -8.16464 38.0862 -8.07186 38.0862 -7.79352C38.0862 -7.60796 38.1326 -7.32962 38.1326 -7.14406C38.2717 -6.54099 38.2254 -5.98431 38.0398 -5.93792C37.9006 -5.89153 37.7151 -5.65958 37.6687 -5.52041L37.6223 -5.33485L37.4367 -5.38124C37.0192 -5.42763 36.4625 -5.65958 36.277 -5.89153L36.1842 -5.98431L36.3234 -5.93792C36.6017 -5.89153 36.9728 -6.12348 37.0656 -6.44821C37.1584 -6.68016 37.112 -6.9585 36.9728 -7.14406C36.6017 -7.56157 35.9986 -7.51518 35.7203 -7.05128C35.6739 -6.9585 35.6275 -6.91211 35.5811 -6.91211S35.5347 -6.86572 35.5347 -6.58738C35.5811 -6.0307 35.7203 -5.70597 36.045 -5.28846C36.277 -5.05651 36.7409 -4.73178 36.9264 -4.68539C37.0656 -4.639 37.3903 -4.73178 37.5759 -4.87095L37.7151 -5.01012L37.8542 -4.82456C38.2717 -4.40705 39.014 -4.68539 39.014 -5.28846C39.014 -5.42763 39.0604 -5.42763 39.2923 -5.5668C39.5707 -5.75236 39.9418 -6.07709 40.1273 -6.40182C40.2665 -6.58738 40.2665 -6.58738 40.4057 -6.58738C40.4521 -6.58738 40.7768 -6.63377 41.0551 -6.72655C41.7046 -6.91211 41.9366 -6.91211 42.0757 -6.77294C42.2613 -6.63377 42.2613 -6.4946 42.1685 -6.21626C42.0757 -5.84514 41.9366 -5.75236 41.1479 -5.47402C40.5449 -5.28846 40.3593 -5.19568 40.1273 -4.96373C39.9418 -4.77817 39.6634 -4.1751 39.5707 -3.85037C39.5243 -3.57203 39.5243 -3.29369 39.6634 -3.10813C39.7562 -2.96896 40.2201 -2.73701 40.5912 -2.64423C40.7768 -2.55145 41.1943 -2.55145 41.5654 -2.59784C41.6582 -2.59784 41.6582 -2.59784 41.751 -2.36589C41.7974 -2.22672 41.8438 -1.99477 41.9366 -1.8556L42.0293 -1.62365L41.8902 -1.48448C41.6582 -1.29892 41.1015 -0.9278 40.684 -0.74224C39.4315 -0.13917 38.0862 0 36.6017 -0.27834C34.7461 -0.69585 33.1688 -1.8556 32.3802 -3.47925C32.1947 -3.85037 31.9627 -4.49983 31.9163 -4.73178V-4.91734L32.1483 -5.05651C32.7977 -5.5668 33.5864 -6.21626 34.6069 -7.23684C35.7203 -8.3502 36.6017 -9.37078 37.4831 -10.4841C37.8078 -10.8553 37.8542 -10.9016 37.9006 -10.9016S38.1326 -10.8553 38.2717 -10.7625ZM34.4214 -10.345C33.8647 -9.60273 33.0297 -8.76771 32.3802 -8.25742C32.2874 -8.16464 32.2874 -8.16464 32.4266 -8.44298C32.8441 -9.18522 33.54 -9.92746 34.2822 -10.345C34.375 -10.4377 34.5142 -10.4841 34.5142 -10.4841S34.4678 -10.4377 34.4214 -10.345ZM23.0558 -9.69551C23.1022 -9.64912 23.0558 -9.60273 22.7775 -9.46356C22.4064 -9.278 21.8033 -8.86049 21.4322 -8.58215C21.293 -8.44298 21.1538 -8.3502 21.1538 -8.3502C21.1074 -8.3502 21.0611 -8.44298 20.9683 -8.48937L20.7827 -8.62854L21.4322 -9.04605C21.7569 -9.278 22.2208 -9.60273 22.4528 -9.78829L22.9167 -10.113L22.963 -9.92746C23.0094 -9.83468 23.0558 -9.7419 23.0558 -9.69551ZM22.8703 -9.13883C22.8239 -9.04605 22.4991 -8.76771 22.1744 -8.48937C21.5713 -8.02547 21.5713 -8.02547 21.4786 -8.07186C21.4322 -8.07186 21.3858 -8.11825 21.3858 -8.11825C21.3858 -8.16464 21.8497 -8.53576 22.1744 -8.76771C22.4064 -8.90688 22.963 -9.23161 23.0094 -9.23161C23.0094 -9.23161 22.963 -9.18522 22.8703 -9.13883ZM23.4269 -8.76771C23.6589 -8.11825 23.7981 -7.32962 23.8445 -6.54099C23.8445 -6.21626 23.8445 -6.12348 23.7981 -6.16987C23.7053 -6.26265 21.9425 -7.65435 21.8961 -7.74713L21.7569 -7.79352L21.8497 -7.8863C21.9425 -7.93269 22.2672 -8.21103 22.6383 -8.53576S23.2878 -9.09244 23.3342 -9.09244C23.3342 -9.09244 23.3806 -8.95327 23.4269 -8.76771ZM39.1532 -8.48937C39.3387 -8.3502 39.4315 -8.16464 39.5707 -7.56157C39.7098 -7.00489 39.8026 -6.77294 39.8954 -6.68016C39.9418 -6.68016 39.9418 -6.63377 39.849 -6.4946C39.7098 -6.26265 39.3851 -5.98431 39.1532 -5.79875L38.9676 -5.70597L38.8284 -5.79875C38.7356 -5.89153 38.6429 -5.93792 38.5501 -5.98431C38.4109 -6.0307 38.4109 -6.0307 38.4573 -6.16987S38.4573 -6.68016 38.4109 -7.14406C38.3181 -7.56157 38.3181 -8.02547 38.4109 -8.21103C38.4573 -8.3502 38.5037 -8.39659 38.6893 -8.44298C38.9212 -8.53576 39.014 -8.58215 39.1532 -8.48937ZM36.3698 -5.47402C36.5553 -5.33485 36.7873 -5.24207 37.112 -5.14929L37.4367 -5.05651L37.2976 -5.01012C37.0192 -4.91734 36.9264 -4.96373 36.5553 -5.24207C36.2306 -5.47402 36.0914 -5.65958 36.3698 -5.47402ZM41.8438 -5.01012C41.751 -4.73178 41.7046 -4.45344 41.7046 -4.40705C41.6582 -4.36066 41.6582 -4.31427 41.519 -4.26788C41.1479 -4.1751 40.916 -3.75759 41.0088 -3.38647C41.0551 -3.20091 41.2871 -2.96896 41.3799 -2.92257S41.4727 -2.87618 41.3799 -2.87618C41.1015 -2.73701 40.1737 -2.96896 39.8954 -3.29369C39.8026 -3.38647 39.8026 -3.38647 39.8026 -3.61842C39.8026 -3.80398 39.849 -3.89676 39.9882 -4.22149C40.3593 -4.87095 40.5449 -5.05651 41.3799 -5.33485C41.6118 -5.38124 41.8438 -5.47402 41.8902 -5.52041C41.8902 -5.52041 41.9366 -5.52041 41.9366 -5.52041S41.8902 -5.28846 41.8438 -5.01012ZM45.1375 -19.8549C44.6736 -19.7157 44.4416 -19.1591 44.72 -18.7879C44.8591 -18.6024 45.0911 -18.4632 45.2766 -18.4632S45.6941 -18.6024 45.8333 -18.7879S46.0189 -19.2055 45.8797 -19.4374C45.7869 -19.7621 45.4622 -19.9013 45.1375 -19.8549ZM32.0555 -31.406C31.8699 -31.3596 31.6844 -31.1277 31.6844 -30.8957C31.6844 -30.5246 32.0555 -30.2463 32.4266 -30.4318C33.0297 -30.7102 32.7049 -31.5916 32.0555 -31.406ZM25.7928 -8.30381C25.3289 -8.07186 25.2825 -7.4224 25.7001 -7.14406C25.932 -7.00489 26.2567 -7.00489 26.4423 -7.14406C26.6742 -7.28323 26.767 -7.4224 26.767 -7.70074C26.767 -7.8863 26.767 -7.97908 26.6742 -8.07186C26.4887 -8.39659 26.0712 -8.48937 25.7928 -8.30381Z"/>
+ <path id="g72" d="M2.016 -6.192C1.4976 -5.7456 0.9504 -5.328 0.4608 -4.8528C0.4464 -4.464 0.4464 -4.0608 0.4464 -3.6576C0.9792 -4.0896 1.512 -4.5072 2.0016 -4.9824C2.0448 -5.3568 2.0304 -5.8032 2.016 -6.192ZM2.016 -3.168C1.4976 -2.7216 0.9504 -2.304 0.4608 -1.8288C0.4464 -1.44 0.4464 -1.0368 0.4464 -0.6336C0.9792 -1.0656 1.512 -1.4832 2.0016 -1.9584C2.0448 -2.3328 2.0304 -2.7792 2.016 -3.168Z"/>
+ <path id="g73" d="M2.052 -4.356L2.112 -4.524C1.572 -4.776 1.02 -5.076 0.768 -5.64C0.696 -5.796 0.66 -5.964 0.66 -6.132C0.66 -6.624 0.936 -7.104 1.32 -7.404C1.572 -7.584 1.956 -7.74 2.28 -7.74C2.508 -7.74 2.712 -7.608 2.916 -7.5C3.216 -7.332 3.504 -7.14 3.78 -6.936C3.924 -6.84 4.056 -6.732 4.2 -6.648V-6.636C3.756 -6.444 3.264 -6.204 2.94 -5.832C2.736 -5.592 2.676 -5.328 2.676 -5.04C2.676 -4.548 2.832 -3.984 2.952 -3.636C3.312 -2.688 4.116 -1.248 4.116 -0.06C4.116 0.768 3.732 1.464 3.108 1.692C2.976 1.728 2.844 1.74 2.7 1.74C1.92 1.74 1.14 1.14 1.14 0.252C1.14 -0.504 1.668 -1.164 1.908 -1.764C2.004 -2.004 2.076 -2.28 2.076 -2.544C2.076 -3.252 1.584 -3.78 0.936 -3.78C0.468 -3.78 0.312 -3.216 0.204 -2.916L0.456 -2.82C0.54 -3.06 0.612 -3.516 0.948 -3.516C1.14 -3.516 1.344 -3.372 1.404 -3.192C1.416 -3.192 1.428 -3.048 1.428 -3.048S1.416 -2.904 1.416 -2.904C1.392 -2.676 1.332 -2.448 1.236 -2.232C0.96 -1.548 0.408 -0.852 0.408 -0.036C0.408 1.32 1.656 2.004 2.76 2.004C3.564 2.004 4.116 1.668 4.536 1.236C4.896 0.876 5.148 0.3 5.148 -0.372C5.148 -1.284 4.776 -2.16 4.524 -2.796C4.38 -3.144 4.224 -3.492 4.104 -3.852C4.08 -3.912 3.984 -4.164 3.984 -4.212C3.984 -4.224 3.984 -4.224 3.984 -4.236C4.008 -4.296 4.524 -4.776 4.572 -4.776C4.584 -4.776 4.584 -4.776 4.596 -4.776C4.656 -4.74 4.92 -4.452 4.92 -4.452C4.956 -4.416 5.004 -4.332 5.064 -4.332C5.136 -4.332 5.208 -4.428 5.256 -4.476C5.4 -4.62 5.556 -4.764 5.712 -4.896C5.676 -4.968 5.616 -5.028 5.556 -5.088L5.232 -5.436C5.196 -5.484 5.124 -5.592 5.052 -5.592C5.052 -5.592 5.04 -5.592 5.04 -5.592C4.992 -5.58 4.764 -5.364 4.692 -5.292C4.428 -5.04 4.164 -4.776 3.876 -4.536C3.792 -5.064 3.768 -4.836 3.72 -5.52C3.72 -5.58 3.708 -5.64 3.708 -5.7C3.732 -6.048 3.9 -6.312 4.116 -6.504C4.152 -6.54 4.188 -6.576 4.236 -6.576C4.236 -6.576 4.248 -6.576 4.248 -6.576C4.308 -6.576 4.38 -6.504 4.428 -6.468L4.836 -6.168C4.884 -6.132 4.968 -6.036 5.04 -6.036C5.1 -6.036 5.124 -6.096 5.148 -6.12C5.208 -6.192 5.928 -7.116 5.928 -7.116C5.892 -7.152 5.808 -7.26 5.736 -7.26C5.724 -7.26 5.712 -7.248 5.7 -7.248C5.616 -7.212 5.58 -7.056 5.496 -7.056C5.472 -7.056 5.46 -7.068 5.436 -7.08C5.292 -7.164 4.14 -8.052 4.14 -8.052L3.792 -8.316C3.684 -8.4 3.624 -8.46 3.432 -8.46C2.856 -8.46 2.136 -8.244 1.776 -8.076C1.068 -7.74 0.408 -7.116 0.408 -6.144C0.408 -5.916 0.456 -5.7 0.564 -5.496C0.852 -4.944 1.476 -4.572 2.052 -4.356Z"/>
+ <path id="g74" d="M2.1888 -5.5008C2.088 -5.472 2.0016 -5.4144 1.9008 -5.3712C1.2528 -4.9968 0.6912 -4.6224 0.3456 -3.9168C0.216 -3.6144 0.1584 -3.2976 0.1584 -2.9664C0.1584 -2.8944 0.1728 -2.808 0.1728 -2.736C0.288 -1.4688 1.1232 -0.4032 2.2176 0.0576C2.3184 0.1008 2.5056 0.1728 2.6208 0.1728C2.7216 0.1728 3.4416 -0.1584 3.7008 -0.2736C4.1616 -0.4608 4.6512 -0.6192 5.0256 -0.9504C5.6304 -1.4976 5.904 -2.4336 5.904 -3.2832C5.904 -3.456 5.8896 -3.6288 5.8608 -3.8016C5.6448 -4.8528 4.752 -5.6304 3.8736 -6.1632C3.2832 -6.5088 2.2032 -6.8832 2.2032 -7.8192C2.2032 -8.208 2.4048 -8.568 2.6352 -8.7984C2.7504 -8.8848 2.808 -8.9136 2.808 -9.1008V-9.2592C2.016 -9.2592 1.08 -8.8992 0.792 -8.1072C0.72 -7.92 0.7056 -7.7184 0.7056 -7.5168C0.7056 -6.7536 1.296 -6.1776 1.6992 -5.8608C1.8576 -5.7312 2.0304 -5.6304 2.1888 -5.5008ZM1.3968 -3.4416V-3.5856C1.3968 -4.1184 1.6848 -4.608 2.088 -4.9536C2.1744 -5.0256 2.4192 -5.256 2.5488 -5.256C2.6352 -5.2416 2.7072 -5.1696 2.7792 -5.1408C3.7008 -4.5216 4.8672 -3.8304 4.8672 -2.4048C4.8672 -2.2752 4.8672 -2.1456 4.8528 -2.0304C4.824 -1.6416 4.7952 -1.152 4.4064 -0.936C4.3632 -0.9216 4.3344 -0.9072 4.3056 -0.9072C4.248 -0.9072 3.9888 -0.9936 3.9168 -0.9936C3.7728 -1.0224 3.6144 -1.008 3.4704 -1.0368C3.1392 -1.08 2.8224 -1.224 2.5344 -1.4112C1.8432 -1.872 1.4832 -2.6352 1.3968 -3.4416Z"/>
+ <path id="g75" d="M2.1888 -7.128C2.088 -6.7392 1.8864 -6.336 1.6128 -6.0336C1.224 -5.616 0.72 -5.328 0.2016 -5.0976C0.3024 -4.9104 0.4176 -4.7376 0.504 -4.536C0.5472 -3.6144 0.5184 -2.5776 0.504 -1.656C0.4176 -1.4544 0.3024 -1.2816 0.2016 -1.0944C1.0224 -0.648 1.7856 -0.144 2.6208 0.288L2.7648 0.2304L3.9456 -0.4608C3.9168 -0.5328 3.8592 -0.7056 3.7584 -0.7056C3.672 -0.7056 3.6144 -0.6336 3.5424 -0.6048C3.4992 -0.6048 3.456 -0.6192 3.4128 -0.648C3.0528 -0.8352 2.6928 -1.0656 2.3328 -1.2672L1.9728 -1.4688C1.8576 -1.5552 1.728 -1.5552 1.728 -1.7856V-1.872V-5.4144V-5.5008C1.728 -5.6304 1.7424 -5.7312 1.8576 -5.8464C1.872 -5.8608 1.9008 -5.8608 1.9152 -5.8608C2.0016 -5.8608 2.088 -5.7744 2.16 -5.7456C2.3472 -5.6304 2.5488 -5.5296 2.736 -5.4144C2.808 -5.3712 2.9088 -5.2848 2.9952 -5.2848S3.1392 -5.4432 3.1824 -5.5152C3.3264 -5.7744 3.4992 -6.0336 3.6288 -6.3072L2.1888 -7.128Z"/>
+ <path id="g76" d="M2.1888 -9.2736C1.4688 -9.2736 1.1952 -8.4672 1.0656 -7.992C1.0368 -7.92 0.936 -7.5024 0.936 -7.4304V-7.4016C0.9792 -7.344 1.0944 -7.2288 1.1808 -7.2288C1.2384 -7.2288 1.296 -7.272 1.3392 -7.3008C1.8288 -7.632 2.4768 -7.8768 2.736 -8.424C2.7936 -8.5392 2.8368 -8.6832 2.8368 -8.8128C2.8368 -9.1296 2.5488 -9.2736 2.2752 -9.2736H2.1888ZM1.3392 -6.8976C0.9504 -6.4656 0.5472 -6.048 0.1728 -5.616L0.1584 -5.4576C0.5328 -5.4288 0.6624 -4.9968 0.6624 -4.68V-1.9152V-1.728C0.6624 -1.368 0.4608 -1.1232 0.1584 -1.0944L0.1872 -0.7776C0.6624 -0.4464 1.1232 -0.1152 1.656 0.1584C2.2608 -0.2016 2.7648 -0.6768 3.312 -1.0944L3.3408 -1.4112C3.1104 -1.2672 2.808 -1.0944 2.4912 -1.0944C2.1312 -1.0944 2.016 -1.4688 2.016 -1.8288C2.016 -1.9728 2.0304 -2.1168 2.0304 -2.232V-4.6512C2.0304 -4.9824 2.1456 -5.4144 2.5344 -5.4576L2.52 -5.616C2.1456 -6.0624 1.728 -6.4656 1.3392 -6.8976Z"/>
+ <path id="g77" d="M2.2176 -6.7536C2.1024 -6.5088 1.9728 -6.264 1.8 -6.0624C1.4112 -5.6304 0.8784 -5.3424 0.36 -5.0976C0.4608 -4.9104 0.576 -4.7376 0.6624 -4.536C0.7056 -3.6144 0.6768 -2.5776 0.6624 -1.656C0.576 -1.4544 0.4608 -1.2816 0.36 -1.0944C1.1808 -0.648 1.944 -0.144 2.7792 0.288L2.9232 0.2304L4.104 -0.4608L3.96 -0.7344L3.6432 -0.6048L3.4992 -0.6768C2.9808 -1.008 2.4048 -1.2672 1.9152 -1.6272L1.8864 -1.944C1.8864 -3.1968 1.872 -4.464 1.9008 -5.6736L2.0448 -5.904C2.4192 -5.688 2.808 -5.4576 3.1968 -5.256C3.3984 -5.6016 3.6 -5.9472 3.7872 -6.3072L2.8512 -6.84L2.5776 -6.9984C2.52 -7.0416 2.448 -7.0992 2.3472 -7.0992C2.16 -7.0848 2.1168 -7.0128 1.8864 -7.0128C1.3536 -7.0128 0.9792 -7.3584 0.8352 -7.848C0.8208 -7.848 0.8064 -8.0928 0.8064 -8.0928S0.8064 -8.2368 0.8208 -8.2368C0.936 -9.1296 1.7856 -9.5904 2.664 -9.5904C3.6 -9.5904 4.4352 -9.0432 4.9824 -8.4384C5.0544 -8.352 5.112 -8.2656 5.1984 -8.1936V-8.1792C4.6656 -7.3872 4.2048 -6.5376 3.7008 -5.7312H4.3056V-1.8864C4.3056 -1.8144 4.32 -1.7424 4.32 -1.6704C4.32 -1.584 4.3056 -1.512 4.2768 -1.4544C4.2336 -1.3968 4.0176 -1.1664 4.0176 -1.08C4.0464 -0.9792 4.2192 -0.8064 4.2624 -0.7632L4.896 -0.0144C4.9392 0.0288 5.0976 0.2736 5.1696 0.2736C5.2272 0.2736 5.2992 0.216 5.3568 0.1872L5.76 -0.0432C6.3072 -0.3312 6.7968 -0.648 7.344 -0.9504L7.2 -1.224C6.7824 -1.0224 6.3936 -0.7776 5.9904 -0.5472C5.832 -0.7488 5.6736 -0.936 5.5296 -1.152C5.4864 -2.6352 5.5296 -4.2192 5.5152 -5.7312H6.7248V-6.6528H5.5152C5.5152 -7.2576 5.5872 -7.848 5.6736 -8.4528H5.5296C5.472 -8.4528 5.4288 -8.4528 5.3856 -8.4672C5.2992 -8.5104 5.0832 -8.7984 5.0688 -8.8128C4.536 -9.3888 3.6576 -9.9072 2.6928 -9.9072C1.5408 -9.9072 0.504 -9.1872 0.504 -8.0928C0.504 -7.4304 0.9648 -6.7104 1.7856 -6.7104C1.9296 -6.7104 2.0736 -6.7248 2.2176 -6.7536Z"/>
+ <path id="g78" d="M2.376 -7.2L2.328 -6.984C2.412 -6.852 2.472 -6.672 2.52 -6.504C2.532 -6.048 2.532 -5.58 2.52 -5.124H2.508L2.244 -5.796C2.088 -5.76 1.944 -5.64 1.812 -5.568L0.984 -5.088C0.888 -5.028 0.792 -4.98 0.696 -4.92C0.516 -4.824 0.528 -4.74 0.444 -4.512C0.3 -4.032 0.204 -3.42 0.204 -2.82C0.204 -2.712 0.204 -2.616 0.204 -2.508C0.204 -1.836 0.252 -1.128 0.744 -0.612C0.936 -0.42 1.236 -0.216 1.548 -0.168L1.38 0.048L1.584 0.132L1.68 0.06L2.436 -0.744H2.448C2.604 -0.48 2.832 -0.24 3.072 -0.048C3.12 -0.012 3.264 0.132 3.336 0.132C3.396 0.132 3.552 -0.072 3.552 -0.072L4.116 -0.696C4.164 -0.756 4.308 -0.864 4.308 -0.96C4.296 -0.996 4.212 -1.056 4.152 -1.056C4.14 -1.056 4.14 -1.056 4.128 -1.056C4.044 -1.032 3.996 -0.876 3.9 -0.876C3.852 -0.876 3.576 -1.044 3.48 -1.104C3.396 -1.164 3.336 -1.164 3.336 -1.308C3.336 -1.368 3.348 -1.428 3.348 -1.476V-4.536H4.572V-5.148H4.428C4.548 -5.508 4.764 -6.108 4.764 -6.54C4.764 -6.588 4.764 -6.624 4.752 -6.672C4.728 -6.9 4.464 -7.068 4.212 -7.068C4.056 -7.068 3.96 -6.888 3.888 -6.816C3.708 -6.624 3.54 -6.432 3.348 -6.24V-6.672C3.348 -6.72 3.348 -6.756 3.348 -6.804C3.348 -7.236 3.72 -7.452 4.128 -7.452C4.188 -7.452 4.248 -7.452 4.296 -7.452V-7.692C4.224 -7.692 4.164 -7.692 4.104 -7.692C3.492 -7.692 3.204 -7.284 2.892 -6.972C2.856 -6.936 2.796 -6.84 2.736 -6.84C2.688 -6.84 2.652 -6.9 2.628 -6.936C2.544 -7.02 2.472 -7.14 2.376 -7.2ZM4.188 -5.148H3.348V-5.652C3.348 -5.676 3.348 -5.712 3.348 -5.736C3.348 -5.796 3.348 -5.844 3.384 -5.892C3.456 -6.012 3.576 -6.12 3.672 -6.216C3.732 -6.276 3.768 -6.36 3.876 -6.36C4.164 -6.36 4.356 -6.084 4.356 -5.856C4.356 -5.616 4.224 -5.388 4.188 -5.148ZM1.62 -5.172L1.932 -4.392L2.208 -4.524L2.532 -4.536V-1.428C2.532 -1.392 2.532 -1.356 2.532 -1.32C2.532 -1.128 2.424 -1.068 2.316 -0.96S2.112 -0.684 1.896 -0.684C1.728 -0.684 1.56 -0.804 1.452 -0.924C1.188 -1.224 1.128 -1.608 1.08 -1.992C1.056 -2.184 1.032 -2.364 1.02 -2.556C1.032 -2.952 0.984 -3.3 0.984 -3.696C0.984 -4.32 1.14 -4.872 1.62 -5.172Z"/>
+ <path id="g79" d="M2.4336 -8.4816L0.1584 -5.4288H1.08C1.0656 -4.1616 1.1088 -2.8512 1.0656 -1.6272C0.8784 -1.4688 0.6768 -1.3248 0.4752 -1.1808L2.088 -0.1584C2.2752 -0.0432 2.4336 0.0864 2.664 0.1584L2.8512 0.0576L4.6656 -1.2096L4.4928 -1.4832C4.2912 -1.368 4.1184 -1.224 3.9312 -1.0944C3.8592 -1.0512 3.744 -0.936 3.6576 -0.936C3.5568 -0.936 3.4416 -1.0368 3.3696 -1.08L2.7072 -1.4976C2.5632 -1.5696 2.4336 -1.6272 2.4336 -1.8432C2.4336 -1.9152 2.448 -1.9872 2.448 -2.0592V-5.4288H4.6656V-6.5664H2.448C2.4336 -7.2 2.4624 -7.8768 2.4336 -8.4816Z"/>
+ <path id="g80" d="M2.448 -4.9968H3.168C3.2112 -4.9968 3.2688 -5.0112 3.3264 -5.0112C3.4704 -5.0112 3.528 -4.9392 3.5856 -4.8384C3.6288 -4.752 3.6864 -4.68 3.744 -4.5936C4.7088 -3.2256 5.904 -2.0016 5.904 0.2592C5.904 0.6912 5.832 1.1376 5.5872 1.512C5.3712 1.8576 5.0256 2.1744 4.4928 2.1744C3.312 2.1744 2.7648 0.8784 2.52 0.0144C2.448 -0.2448 2.3616 -0.5184 2.3328 -0.792H0.1584V-0.5472C0.6336 -0.5184 0.7776 0.0864 0.9504 0.432C1.3824 1.4688 2.448 2.1888 3.5136 2.4192C3.816 2.4912 4.1328 2.5344 4.4352 2.5344S5.0256 2.4912 5.3136 2.4048C6.6672 1.9728 7.416 0.4464 7.416 -1.0512C7.416 -2.1024 7.0128 -3.096 6.5664 -3.8592C6.336 -4.2624 6.0624 -4.6224 5.7888 -4.9968C6.2928 -5.0256 6.8832 -4.9536 7.3296 -5.0256C7.5744 -5.3568 7.6896 -5.8176 7.8768 -6.2064H5.1984H5.0688C4.8672 -6.2064 4.8816 -6.2784 4.7808 -6.408C4.4784 -6.8832 4.1472 -7.6032 4.1472 -8.2944S4.5936 -9.6624 5.328 -9.6624C5.4864 -9.6624 5.6304 -9.6192 5.7744 -9.5328C6.192 -9.2448 6.3936 -8.6544 6.3936 -7.9776H8.0784V-9.6768C7.8336 -9.72 7.5744 -9.8208 7.3296 -9.864C6.8112 -9.9792 6.1632 -10.0512 5.616 -10.0512C4.9392 -10.0512 4.4208 -9.8064 4.0176 -9.432C3.3984 -8.856 2.9376 -7.9056 2.9376 -6.8112V-6.624C2.952 -6.48 3.0384 -5.9328 3.0384 -5.9328C3.0096 -5.7744 2.7072 -5.472 2.6496 -5.4144C2.5488 -5.3136 2.448 -5.2704 2.448 -5.0832V-4.9968Z"/>
+ <path id="g81" d="M2.448 -7.0416C2.1744 -6.264 1.512 -5.5872 0.72 -5.2704C0.5904 -5.2128 0.4464 -5.2272 0.4464 -5.0256C0.4464 -4.968 0.4608 -4.896 0.4608 -4.8528V-1.944V-1.8C0.4608 -1.7568 0.4608 -1.6992 0.4464 -1.656C0.432 -1.584 0.144 -1.1088 0.144 -1.0944L1.6416 -0.0864C1.8288 0.0432 2.0016 0.1872 2.232 0.2736L2.448 0.1872L4.5936 -1.0512L4.4496 -1.3536C4.4064 -2.7648 4.4352 -4.3056 4.4496 -5.7024L4.5936 -6.0048C3.888 -6.3504 3.1824 -6.7104 2.448 -7.0416ZM3.1104 -0.5616C2.6496 -0.8928 2.1312 -1.1808 1.6992 -1.5408L1.6704 -1.8288V-5.1264C1.8576 -5.3568 2.0736 -5.5728 2.3328 -5.7456C2.6496 -5.616 2.9376 -5.472 3.2112 -5.2992C3.2112 -5.2992 3.2256 -4.9968 3.2256 -4.9968C3.2256 -3.5424 3.24 -2.0736 3.2112 -0.6624L3.1104 -0.5616Z"/>
+ <path id="g82" d="M2.52 -7.0272C2.2032 -6.2928 1.5552 -5.616 0.792 -5.2848C0.6912 -5.2416 0.5328 -5.2128 0.5328 -5.0688V-4.9968V-1.9152V-1.7424V-1.6704C0.4896 -1.4544 0.288 -1.296 0.2304 -1.08L0.8352 -0.6768C1.3392 -0.3744 1.7712 0 2.3184 0.2736C2.664 0.1152 2.9808 -0.0864 3.312 -0.2736V1.008V1.1952C3.312 1.7568 3.1824 2.2464 2.7936 2.4768C2.736 2.52 2.664 2.5488 2.6064 2.5488C2.4624 2.5488 2.4336 2.4336 2.3904 2.304C2.3328 2.3472 2.232 2.4192 2.232 2.52C2.232 2.7072 2.4768 2.8368 2.6784 2.8368C3.0672 2.8368 3.3264 2.6352 3.5568 2.448S4.0176 2.0592 4.1904 1.8288H4.2048C4.3344 2.016 4.4928 2.1744 4.6512 2.3472C4.6944 2.4048 4.7664 2.52 4.8384 2.52C4.9248 2.52 5.0112 2.4048 5.0688 2.3472V2.3328C4.5648 1.9152 4.5216 1.2672 4.5216 0.648V0.1584V-5.184V-5.3136C4.5216 -5.3568 4.5216 -5.3856 4.536 -5.4288C4.5504 -5.5008 4.7808 -5.8752 4.8384 -6.0048C4.0608 -6.336 3.312 -6.696 2.52 -7.0272ZM1.7424 -1.6992V-1.8144V-4.8816V-5.0112C1.7424 -5.184 1.8 -5.2416 1.9152 -5.328C1.9872 -5.4 2.3184 -5.7456 2.4192 -5.7456C2.4768 -5.7456 3.0528 -5.472 3.168 -5.4288C3.2544 -5.3712 3.312 -5.3568 3.312 -5.2128V-5.0688V-0.9504V-0.792C3.312 -0.6912 3.2832 -0.6048 3.1968 -0.6048C3.096 -0.6048 2.9664 -0.72 2.8944 -0.7632L2.1024 -1.296C1.944 -1.3824 1.7424 -1.4544 1.7424 -1.6992Z"/>
+ <path id="g83" d="M2.6208 -7.128C1.9152 -6.48 1.0944 -5.9328 0.1008 -5.6016C0.144 -5.5152 0.2448 -5.3856 0.3456 -5.3856C0.4032 -5.3856 0.4608 -5.4144 0.5184 -5.4432C0.504 -4.1472 0.5472 -2.808 0.504 -1.5552C0.4176 -1.3968 0.3024 -1.2528 0.2016 -1.1088V-1.0944L1.656 -0.072C1.8288 0.0576 1.9872 0.1872 2.2032 0.2736C2.7792 0 3.2976 -0.3456 3.8304 -0.6624L3.8592 -0.9648C3.6288 -0.8496 3.3552 -0.648 3.0816 -0.648H3.024C2.8512 -0.6768 2.52 -0.9504 2.448 -0.9936L1.9872 -1.3248C1.872 -1.4256 1.728 -1.44 1.728 -1.656V-1.8144V-2.3616V-2.5056C1.728 -2.6928 1.7856 -2.7648 1.8864 -2.8656L2.16 -3.1968L3.2112 -4.4352L3.9168 -5.256C3.96 -5.3136 4.1472 -5.5008 4.1472 -5.5728C4.1472 -5.6304 4.0896 -5.6736 4.0464 -5.7168L3.0528 -6.7104C2.9088 -6.8544 2.7792 -6.9984 2.6208 -7.128ZM1.728 -3.1824V-5.8464V-5.904C1.728 -5.9904 1.7712 -6.1056 1.8864 -6.1056C1.9728 -6.1056 2.0592 -5.9904 2.1312 -5.9184L2.88 -5.1696C2.9376 -5.112 3.1248 -4.9536 3.1248 -4.8672C3.1248 -4.8096 3.0672 -4.7664 3.0384 -4.7232L1.728 -3.1824Z"/>
+ <path id="g84" d="M2.7216 -9.5616C2.6352 -9.4032 2.52 -9.2736 2.4048 -9.1296C1.9872 -8.6256 1.5552 -8.28 1.008 -7.9344C0.8784 -7.848 0.7488 -7.848 0.7488 -7.6176C0.7488 -7.5456 0.7632 -7.4592 0.7632 -7.4016V-6.5664C0.7632 -6.4512 0.7776 -6.336 0.7776 -6.2208C0.7776 -6.1344 0.7632 -6.048 0.7488 -5.9616C0.7344 -5.8464 0.5184 -5.1984 0.4464 -4.9968H0.7632V2.0304L0.9072 2.0016L1.0224 1.8432C1.3248 1.224 1.6704 0.6336 1.9584 -0.0144C2.0448 -2.6784 1.9152 -5.6016 1.9872 -8.2224L2.1888 -8.4528H2.2032C2.4624 -8.2224 2.736 -7.992 3.0096 -7.776L3.4416 -8.5104C3.4848 -8.5824 3.5856 -8.6976 3.5856 -8.7984S3.4416 -8.9712 3.384 -9.0288L2.9808 -9.36C2.8944 -9.432 2.8224 -9.504 2.7216 -9.5616ZM2.52 -5.7312H3.1248V-1.8576C3.1248 -1.7856 3.1392 -1.728 3.1392 -1.656S3.1248 -1.512 3.096 -1.4544C3.096 -1.4544 2.7648 -1.08 2.8368 -1.08C2.8368 -1.0368 3.024 -0.8352 3.0672 -0.7632L3.7008 -0.0144C3.7296 0.0288 3.9168 0.2736 3.9888 0.2736C4.0464 0.2736 4.1184 0.216 4.176 0.1872L4.5792 -0.0432C5.0976 -0.3456 5.6304 -0.6336 6.1488 -0.9504L6.0048 -1.224C5.6016 -1.0224 5.256 -0.7632 4.824 -0.5904C4.608 -0.72 4.5072 -0.9648 4.3488 -1.1376L4.3344 -1.368V-5.7312H5.544V-6.6528H4.3344C4.3488 -7.2864 4.3776 -7.9056 4.4784 -8.4528L4.1904 -8.4384L4.0464 -8.2512L2.9952 -6.5376L2.52 -5.7312Z"/>
+ <path id="g85" d="M2.724 -6.804C2.64 -6.948 2.508 -7.092 2.388 -7.2L2.34 -6.984C2.424 -6.84 2.484 -6.66 2.532 -6.48V-5.088H2.52L2.244 -5.808C2.112 -5.748 0.732 -4.944 0.732 -4.944C0.54 -4.824 0.528 -4.788 0.456 -4.524C0.3 -4.056 0.204 -3.408 0.204 -2.832C0.204 -2.736 0.204 -2.64 0.204 -2.556C0.204 -1.872 0.24 -1.116 0.756 -0.6C0.936 -0.42 1.272 -0.216 1.548 -0.168L1.38 0.048L1.584 0.132C1.908 -0.12 2.136 -0.468 2.46 -0.72C2.784 -0.576 3.048 -0.372 3.36 -0.228L3.156 0V0.012L3.36 0.156L4.476 -1.092V-1.104C4.428 -1.14 4.356 -1.212 4.296 -1.212C4.248 -1.212 4.212 -1.176 4.188 -1.14C4.152 -1.104 3.96 -0.876 3.912 -0.876S3.816 -0.912 3.768 -0.936L3.516 -1.08C3.432 -1.128 3.348 -1.176 3.348 -1.308C3.348 -1.332 3.348 -1.356 3.348 -1.38V-3.924C3.348 -3.96 3.348 -3.996 3.348 -4.032C3.348 -4.212 3.432 -4.248 3.54 -4.332C3.684 -4.452 3.852 -4.572 3.972 -4.716H3.984C4.08 -4.572 4.212 -4.44 4.32 -4.296C4.716 -3.708 5.04 -2.916 5.04 -2.004C5.016 -0.828 4.5 0.204 3.912 1.008C3.78 1.188 3.636 1.344 3.516 1.524L3.732 1.704H3.744C3.984 1.44 4.2 1.152 4.416 0.864C5.172 -0.144 5.856 -1.356 5.856 -2.652C5.856 -3.876 5.352 -4.74 4.74 -5.376L5.04 -5.616V-5.628L4.884 -5.808H4.872L3.348 -4.5V-6.648C3.348 -6.78 3.348 -6.9 3.384 -7.02C3.456 -7.224 3.624 -7.392 3.816 -7.464C3.888 -7.488 3.972 -7.5 4.056 -7.512V-7.752C3.696 -7.74 3.396 -7.524 3.156 -7.26C3.012 -7.104 2.892 -6.936 2.724 -6.804ZM1.632 -5.172C1.728 -4.908 1.836 -4.644 1.944 -4.392L2.532 -4.716V-1.428C2.532 -1.392 2.532 -1.344 2.532 -1.308C2.532 -1.116 2.436 -1.08 2.328 -0.972C2.208 -0.852 2.112 -0.684 1.896 -0.684C1.704 -0.684 1.512 -0.852 1.404 -0.996C1.056 -1.44 1.044 -2.208 1.02 -2.892C1.02 -3.024 1.008 -3.156 0.996 -3.288V-3.492C0.984 -3.576 0.984 -3.66 0.984 -3.744C0.984 -4.284 1.14 -4.908 1.632 -5.172Z"/>
+ <path id="g86" d="M2.76 -1.272C2.532 -1.128 2.448 -1.008 2.04 -1.008C1.704 -1.008 1.464 -1.164 1.296 -1.332C1.056 -1.596 1.008 -1.944 1.008 -2.292C1.008 -2.772 1.044 -3.24 1.044 -3.72C1.056 -4.008 0.984 -4.272 0.984 -4.548C0.984 -4.656 1.02 -4.824 1.128 -4.884C1.152 -4.884 1.272 -4.884 1.272 -4.86L1.548 -4.752C1.728 -4.668 2.52 -4.344 2.652 -4.308C2.82 -4.608 3 -4.92 3.156 -5.232C2.808 -5.364 2.46 -5.508 2.112 -5.652L1.848 -5.76C1.824 -5.772 1.776 -5.784 1.74 -5.784C1.68 -5.784 1.632 -5.736 1.596 -5.7C1.164 -5.34 0.924 -5.256 0.636 -4.644C0.348 -4.092 0.204 -3.456 0.204 -2.784C0.204 -1.86 0.288 -1.08 0.792 -0.504C0.984 -0.264 1.248 -0.072 1.536 0.048C1.608 0.084 1.716 0.144 1.8 0.144C1.812 0.144 1.824 0.144 1.836 0.144C1.896 0.132 2.1 -0.096 2.1 -0.096C2.172 -0.168 2.952 -0.948 2.964 -0.996C2.964 -1.08 2.772 -1.26 2.76 -1.272Z"/>
+ <path id="g87" d="M2.7792 -6.552C2.6208 -6.5808 2.4624 -6.6096 2.3184 -6.6096C2.0304 -6.6096 1.7424 -6.5376 1.4688 -6.4224C1.4112 -6.3936 1.0656 -6.2064 1.0656 -6.1488C1.1664 -6.1632 1.2672 -6.1632 1.3536 -6.1632C1.4544 -6.1632 1.5552 -6.1632 1.656 -6.1344C2.16 -6.0192 2.5776 -5.616 2.7216 -5.1264C2.6208 -5.1408 2.5344 -5.1408 2.4336 -5.1408C2.1024 -5.1408 1.7712 -5.0688 1.4688 -4.9248C1.4112 -4.896 1.0512 -4.68 1.0512 -4.6368C1.584 -4.6368 2.1024 -4.4064 2.4768 -4.0176C2.6352 -3.8592 2.7504 -3.672 2.88 -3.4848C2.7072 -3.4848 2.5344 -3.4848 2.3616 -3.456C1.8864 -3.3552 1.44 -3.0528 1.2096 -2.6208C1.4976 -2.7648 1.8432 -2.88 2.1888 -2.88C2.5056 -2.88 2.808 -2.7792 3.0528 -2.52C3.2112 -2.3328 3.2544 -2.16 3.2544 -1.8288C3.2112 -1.3536 2.8944 -0.9936 2.592 -0.7632C2.5056 -0.7056 2.4336 -0.6192 2.3328 -0.576S2.1168 -0.5184 2.016 -0.4896C1.0368 -0.2448 0.2016 0.576 0.2016 1.584H0.5184C0.5184 1.4976 0.5328 1.3968 0.5616 1.3104C0.72 0.9216 1.1808 0.864 1.5984 0.864C1.5984 0.864 2.6064 0.8928 2.6064 0.9072C2.6784 0.9072 3.3408 0.9504 3.3408 0.8928C4.4496 0.648 4.9248 -0.576 5.0112 -1.6848V-3.9312C5.0112 -3.9744 5.0112 -4.032 5.04 -4.0608C5.0688 -4.1472 5.4 -4.2336 5.4432 -4.248C5.7744 -4.3488 6.1344 -4.4064 6.48 -4.4064C7.0128 -4.4064 7.3872 -4.2624 7.8192 -4.1184C7.776 -3.9456 7.7616 -3.7584 7.7328 -3.5856C7.416 -2.1312 6.8976 -0.9504 6.1776 0.1584C6.048 0.3744 5.8752 0.576 5.76 0.792L6.0048 0.9648H6.0192C6.1632 0.792 6.3216 0.6192 6.4944 0.4752C6.8976 0.1728 7.4304 -0.0144 7.9488 -0.0144C8.28 -0.0144 8.6112 0.0576 8.856 0.1584C8.9136 0.1872 9.0864 0.2736 9.1584 0.2736C9.2016 0.2592 9.4896 -0.2448 9.4896 -0.2448C9.792 -0.7632 10.1232 -1.2672 10.4112 -1.7856L10.1376 -1.944L9.864 -1.4688C9.6336 -1.5408 9.4464 -1.5984 9.1584 -1.5984C8.6976 -1.5984 8.2512 -1.4544 7.848 -1.2384C7.6896 -1.152 7.5456 -1.0368 7.4016 -0.9504C7.6752 -1.2816 7.8912 -1.6704 8.1072 -2.0448C8.7696 -3.1392 9.3168 -4.4352 9.3168 -5.8752C9.3168 -6.2496 9.2736 -6.624 9.144 -6.984C8.8416 -7.8624 8.208 -8.5824 7.5024 -9.1584C7.2 -9.4176 6.8688 -9.6336 6.5376 -9.864C6.4656 -9.9072 6.1056 -10.1376 6.0336 -10.1376S5.904 -10.0944 5.8464 -10.0512L2.9952 -8.352C2.9376 -8.3088 2.8224 -8.28 2.7936 -8.208C2.7792 -8.208 2.7792 -8.1216 2.7792 -8.1216C2.7936 -7.8192 2.7792 -6.624 2.7792 -6.552ZM5.0112 -8.4816C6.1632 -8.3664 7.1424 -7.632 7.6176 -6.5664C7.1568 -6.3504 6.9264 -6.1488 6.2496 -6.1488C5.8608 -6.1488 5.4864 -6.2496 5.1984 -6.3792C5.0976 -6.4224 5.0112 -6.4656 5.0112 -6.6096V-6.6816V-8.4816ZM7.848 -4.4208C7.4304 -4.6224 6.9552 -4.7232 6.48 -4.7232C5.9184 -4.7232 5.4288 -4.5936 5.0112 -4.4064V-6.1632C5.3568 -5.9328 5.8032 -5.832 6.2352 -5.832C6.8832 -5.832 7.2864 -6.048 7.7184 -6.3216C7.8048 -6.0048 7.8768 -5.7024 7.8912 -5.3712C7.8912 -5.3712 7.8768 -4.4208 7.848 -4.4208ZM3.3696 -0.6624V-0.6768C3.7728 -0.864 4.104 -1.2528 4.1904 -1.6848C4.2192 -1.6848 4.2336 -2.1024 4.2336 -2.1024C4.2048 -3.4128 4.2192 -7.7472 4.2192 -8.2656V-8.3232C4.2192 -8.424 4.2768 -8.4672 4.3776 -8.4672C4.4784 -8.4816 4.5936 -8.4816 4.6944 -8.496V-2.4912V-2.088C4.6944 -1.9584 4.6944 -1.8144 4.6656 -1.6992C4.5072 -1.1088 3.9312 -0.7776 3.3696 -0.6624Z"/>
+ <path id="g88" d="M2.784 -7.44C2.568 -7.548 2.328 -7.692 2.052 -7.692C1.344 -7.692 1.128 -6.78 0.96 -6.204C0.9 -6.036 0.672 -5.448 0.624 -5.328C0.48 -5.004 0.204 -4.776 0.012 -4.488H0.432C0.432 -2.16 0.552 -0.24 0.828 1.98C0.828 2.064 0.852 2.136 0.972 2.136C1.008 2.136 1.056 2.124 1.092 2.124C1.092 1.752 1.152 1.368 1.176 0.996C1.248 -0.036 1.332 -1.056 1.416 -2.088C1.464 -2.664 1.536 -3.24 1.548 -3.816C1.548 -4.272 1.488 -4.728 1.32 -5.148L1.104 -5.676C1.08 -5.736 1.044 -5.808 1.044 -5.88C1.044 -6.024 1.2 -6.192 1.26 -6.252C1.464 -6.468 1.74 -6.6 2.04 -6.6C2.268 -6.6 2.472 -6.516 2.64 -6.444C2.772 -6.708 2.868 -6.996 2.976 -7.272C3.048 -7.428 3.096 -7.704 3.312 -7.704C3.42 -7.704 3.48 -7.584 3.48 -7.476C3.48 -7.152 3.288 -6.804 3.192 -6.636L2.436 -5.256C2.304 -5.016 2.16 -4.788 2.052 -4.536H2.412V-1.704C2.412 -1.596 2.424 -1.476 2.424 -1.356C2.424 -1.008 2.328 -0.732 2.052 -0.564C2.184 -0.42 2.34 -0.36 2.52 -0.288C2.664 -0.216 2.808 -0.144 2.94 -0.048C2.94 -0.048 3.24 0.204 3.24 0.12C3.276 0.108 3.312 0.072 3.336 0.036L3.516 -0.168C3.732 -0.408 4.152 -0.852 4.344 -1.092C4.38 -1.116 4.428 -1.164 4.428 -1.212S4.308 -1.368 4.26 -1.368C4.2 -1.296 3.864 -0.888 3.78 -0.876C3.744 -0.876 3.528 -0.996 3.456 -1.044C3.324 -1.116 3.204 -1.14 3.204 -1.344C3.204 -1.416 3.216 -1.476 3.216 -1.536V-4.536H4.044V-5.148H3.228C3.264 -5.316 3.264 -5.496 3.276 -5.676C3.312 -5.976 3.372 -6.276 3.432 -6.564C3.456 -6.672 3.516 -6.768 3.552 -6.876C3.612 -7.032 3.66 -7.212 3.66 -7.368C3.66 -7.68 3.528 -7.944 3.252 -7.944S2.856 -7.632 2.784 -7.44Z"/>
+ <path id="g89" d="M2.7936 -9.5616C2.7072 -9.4032 2.592 -9.2736 2.4768 -9.1296C2.0592 -8.6256 1.6272 -8.28 1.08 -7.9344C0.9504 -7.848 0.8208 -7.848 0.8208 -7.6176C0.8208 -7.5456 0.8352 -7.4592 0.8352 -7.4016V-6.5664C0.8352 -6.4512 0.8496 -6.336 0.8496 -6.2208C0.8496 -6.1344 0.8352 -6.048 0.8208 -5.9616C0.8064 -5.8464 0.5904 -5.1984 0.5184 -4.9968H0.8352V-1.6848C0.8352 -1.5408 0.8208 -1.4544 0.72 -1.3392C0.6624 -1.2816 0.5472 -1.1808 0.5472 -1.0944C0.5472 -0.9936 0.792 -0.7632 0.792 -0.7632L1.4256 -0.0144C1.4688 0.0288 1.6272 0.2736 1.6992 0.2736C1.7568 0.2736 1.8288 0.216 1.8864 0.1872L2.2896 -0.0432C2.4192 -0.1152 3.8016 -0.9216 3.8736 -0.9504C3.8448 -1.0224 3.7872 -1.1952 3.672 -1.1952C3.6432 -1.1952 3.6144 -1.1808 3.5856 -1.1664L2.52 -0.5472C2.3616 -0.7488 2.2032 -0.936 2.0592 -1.152C2.0592 -1.152 2.0448 -1.3392 2.0448 -1.3392C2.0448 -3.6432 2.016 -6.0048 2.0592 -8.2224L2.2608 -8.4528H2.2752L3.096 -7.7616L3.7008 -8.8272C3.3984 -9.072 3.1104 -9.3312 2.7936 -9.5616Z"/>
+ <path id="g90" d="M2.856 -0.648V-0.636C2.508 -0.372 2.22 -0.072 1.632 -0.072C1.332 -0.072 1.032 -0.168 0.792 -0.36C0.624 -0.492 0.468 -0.732 0.468 -0.96C0.468 -1.212 0.636 -1.356 0.864 -1.404C0.816 -1.32 0.792 -1.236 0.792 -1.152C0.792 -0.9 1.032 -0.672 1.296 -0.672C1.524 -0.672 1.68 -0.888 1.68 -1.116C1.68 -1.5 1.38 -1.74 1.008 -1.74C0.6 -1.74 0.204 -1.452 0.204 -0.972C0.204 -0.876 0.216 -0.78 0.24 -0.696C0.384 -0.204 0.9 0.156 1.512 0.156C2.052 0.156 2.508 -0.108 2.856 -0.384C2.904 -0.42 2.964 -0.492 3.036 -0.504C3.096 -0.504 3.18 -0.432 3.24 -0.396C3.732 -0.108 4.56 0.156 5.22 0.156C5.268 0.156 5.316 0.156 5.364 0.144C5.424 0.12 5.844 -0.336 5.844 -0.336L6.876 -1.404C6.936 -1.464 7.152 -1.644 7.152 -1.728C7.152 -1.8 7.068 -1.896 7.008 -1.896C6.924 -1.896 6.852 -1.776 6.816 -1.74C6.456 -1.38 5.976 -0.96 5.292 -0.96C4.944 -0.96 4.584 -1.044 4.284 -1.152L3.888 -1.332C3.96 -1.428 4.056 -1.512 4.14 -1.596C4.572 -2.028 5.028 -2.712 5.028 -3.396C5.028 -3.444 5.028 -3.48 5.028 -3.528C4.956 -4.296 4.44 -4.908 4.212 -5.628C4.152 -5.808 4.116 -6 4.116 -6.192C4.116 -6.696 4.44 -7.104 4.824 -7.272C4.872 -7.272 4.884 -6.84 4.884 -6.84S4.872 -6.444 4.836 -6.444C4.812 -6.348 4.776 -6.264 4.74 -6.18C4.728 -6.18 4.716 -6.036 4.728 -6.036C4.752 -6 4.848 -5.928 4.896 -5.928C4.932 -5.928 4.956 -5.976 4.98 -6.012C5.1 -6.228 5.196 -6.468 5.196 -6.792C5.196 -7.056 5.136 -7.152 5.088 -7.392L5.424 -7.464L5.82 -6.048L7.2 -6.444L7.128 -6.696L6.924 -6.648C6.804 -7.056 6.696 -7.452 6.588 -7.872L5.424 -7.728C5.328 -7.716 5.052 -7.656 5.016 -7.656C4.908 -7.656 4.86 -7.788 4.8 -7.848C4.512 -8.208 4.02 -8.46 3.444 -8.46C1.992 -8.46 1.308 -7.044 1.08 -5.976C0.984 -5.496 0.924 -4.992 0.924 -4.488C0.924 -4.32 0.936 -4.14 0.948 -3.96C1.044 -3.012 1.428 -2.1 2.052 -1.38C2.28 -1.104 2.556 -0.84 2.856 -0.648ZM3.612 -1.512C2.4 -2.34 1.86 -3.828 1.86 -5.244C1.86 -5.784 1.932 -6.288 2.076 -6.72C2.292 -7.392 2.748 -8.124 3.624 -8.124C4.104 -8.124 4.452 -7.86 4.692 -7.548C4.452 -7.5 4.2 -7.332 4.008 -7.176C3.624 -6.852 3.288 -6.42 3.288 -5.736C3.3 -4.608 4.092 -3.768 4.092 -2.736C4.092 -2.424 3.984 -2.124 3.84 -1.86C3.768 -1.74 3.684 -1.632 3.612 -1.512Z"/>
+ <path id="g91" d="M2.868 -4.668C1.992 -4.032 1.08 -3.444 0.216 -2.796C0.204 -2.676 0.204 -2.532 0.204 -2.4L0.492 -2.592C1.272 -3.156 2.1 -3.672 2.856 -4.272C2.892 -4.38 2.868 -4.536 2.868 -4.668ZM2.868 -3.456C1.992 -2.82 1.08 -2.22 0.216 -1.572C0.204 -1.452 0.204 -1.308 0.204 -1.176C1.092 -1.8 1.992 -2.4 2.856 -3.048C2.892 -3.168 2.88 -3.312 2.868 -3.456Z"/>
+ <path id="g92" d="M2.892 -5.808L1.476 -4.776C1.476 -5.052 1.392 -5.328 1.248 -5.568C1.224 -5.628 1.14 -5.772 1.056 -5.772C0.996 -5.748 0.828 -5.52 0.816 -5.508C0.612 -5.268 0.384 -5.028 0.204 -4.764C0.504 -4.62 0.66 -4.38 0.66 -3.984C0.66 -3.912 0.66 -3.84 0.66 -3.78V-2.004C0.66 -1.932 0.66 -1.092 0.66 -1.092C0.648 -0.996 0.612 -0.888 0.552 -0.816C0.492 -0.756 0.396 -0.732 0.396 -0.6C0.396 -0.564 0.408 -0.504 0.408 -0.468C0.576 -0.408 0.696 -0.288 0.792 -0.144L0.888 0.024C0.912 0.108 0.948 0.168 1.08 0.168C1.176 0.168 1.2 0.132 1.224 0.048C1.32 -0.192 1.512 -0.408 1.74 -0.468V-0.72C1.5 -0.804 1.464 -1.044 1.464 -1.284C1.464 -1.38 1.476 -1.488 1.476 -1.572V-4.152C1.476 -4.2 1.464 -4.26 1.464 -4.32C1.464 -4.488 1.56 -4.536 1.68 -4.608C1.836 -4.728 2.016 -4.824 2.148 -4.968H2.16C2.424 -4.656 2.688 -4.344 2.94 -4.008C2.988 -2.952 2.916 -1.812 2.964 -0.78L3.264 -0.144L3.144 0.096L3.324 0.228H3.336L4.176 -1.02V-1.032L3.996 -1.176H3.984L3.876 -1.008C3.804 -1.08 3.756 -1.14 3.756 -1.284C3.756 -1.32 3.756 -1.356 3.756 -1.392V-4.536C3.756 -4.56 3.756 -4.596 3.756 -4.632C3.756 -4.812 3.852 -4.86 4.02 -4.884V-5.052C3.696 -5.052 3.396 -5.22 3.18 -5.448C3.072 -5.556 3 -5.7 2.892 -5.808Z"/>
+ <path id="g93" d="M2.94 -0.912C2.976 -0.744 3.012 -0.576 3.06 -0.42C3.192 0.012 3.432 0.48 3.432 0.936C3.432 1.092 3.408 1.236 3.336 1.392C3.216 1.74 2.784 2.028 2.388 2.028C1.656 2.028 1.152 1.56 0.78 1.224C0.744 1.188 0.696 1.128 0.636 1.128C0.636 1.128 0.624 1.128 0.624 1.128C0.564 1.128 0.504 1.188 0.444 1.212C0.576 1.38 0.756 1.524 0.924 1.668C1.38 2.028 1.92 2.304 2.508 2.304C2.772 2.304 2.964 2.244 3.18 2.184C3.828 1.932 4.404 1.284 4.404 0.456C4.404 0.336 4.344 0.3 4.284 0.216C3.924 -0.288 3.768 -0.744 3.768 -1.644C3.768 -1.764 3.768 -1.884 3.768 -2.004C3.768 -2.964 3.9 -3.948 4.104 -4.764C3.828 -4.86 4.056 -4.8 3.684 -4.86C3.276 -4.92 2.892 -5.196 2.616 -5.352C2.52 -5.412 2.184 -5.616 2.076 -5.616S1.884 -5.448 1.848 -5.4L1.392 -4.86C0.816 -4.164 0.456 -3.264 0.456 -2.364C0.456 -1.524 0.792 -0.78 1.212 -0.3C1.26 -0.24 1.416 -0.036 1.512 -0.036C1.548 -0.036 1.884 -0.252 1.884 -0.252L2.94 -0.912ZM1.572 -4.716C1.884 -4.548 2.232 -4.428 2.556 -4.284L2.82 -4.176C2.892 -4.152 2.952 -4.104 2.952 -4.008C2.952 -3.96 2.94 -3.9 2.94 -3.852V-3.156C2.94 -2.712 2.928 -2.256 2.928 -1.812V-1.452C2.928 -1.416 2.94 -1.272 2.904 -1.272C2.88 -1.224 2.436 -0.96 2.436 -0.96C2.376 -0.924 2.136 -0.756 2.076 -0.744C1.992 -0.744 1.92 -0.864 1.872 -0.924C1.512 -1.368 1.26 -1.944 1.188 -2.628C1.176 -2.628 1.176 -3.276 1.188 -3.276C1.2 -3.588 1.2 -3.912 1.308 -4.212C1.416 -4.5 1.404 -4.428 1.572 -4.716Z"/>
+ <path id="g94" d="M2.964 -5.532C2.94 -5.58 2.892 -5.784 2.832 -5.784S2.7 -5.748 2.652 -5.724L2.268 -5.556C1.824 -5.364 1.368 -5.196 0.936 -4.956C0.816 -4.896 0.456 -4.74 0.42 -4.62C0.276 -4.248 0.204 -3.108 0.204 -2.82C0.204 -1.632 0.624 -0.792 1.188 -0.12C1.236 -0.06 1.356 0.132 1.464 0.132C1.5 0.132 1.776 -0.06 1.776 -0.06C1.884 -0.132 2.844 -0.756 2.88 -0.816C2.892 -0.828 2.88 -0.888 2.868 -0.888C2.832 -0.936 2.784 -1.032 2.724 -1.032C2.724 -1.032 2.712 -1.032 2.712 -1.032C2.496 -0.984 2.628 -0.936 2.328 -0.936C2.28 -0.936 2.244 -0.948 2.196 -0.948C1.452 -1.08 1.056 -1.884 1.02 -2.568C1.02 -2.604 1.008 -2.652 1.008 -2.7S1.02 -2.784 1.044 -2.82C1.08 -2.856 1.512 -3.036 1.512 -3.036L2.688 -3.528L3.06 -3.684C3.132 -3.72 3.192 -3.72 3.192 -3.804C3.192 -3.84 3.192 -3.876 3.18 -3.9C3.18 -3.9 2.928 -5.388 2.928 -5.448C2.928 -5.472 2.94 -5.508 2.964 -5.532ZM1.008 -3.144C1.008 -3.792 1.032 -4.452 1.416 -4.812C1.548 -4.932 1.704 -5.004 1.872 -5.064C1.968 -5.112 2.064 -5.16 2.16 -5.184L2.352 -3.696L1.008 -3.144Z"/>
+ <path id="g95" d="M27.6484 -48.1528C27.1845 -48.06 26.9062 -47.8281 26.767 -47.5034C26.6742 -47.2714 26.6742 -46.7147 26.767 -46.4364C26.8134 -46.2508 26.9062 -46.158 27.4165 -45.6478C28.0196 -45.0911 28.0196 -45.0447 28.0196 -44.9519C27.9732 -44.8591 27.9268 -44.7663 27.8804 -44.72C27.7876 -44.5808 27.6484 -44.6272 27.3237 -44.8591C27.1845 -44.9519 27.0454 -45.0447 26.9526 -45.0911C26.9062 -45.0911 26.8134 -45.2302 26.6742 -45.4622C26.3495 -45.9725 25.2825 -47.5961 25.1898 -47.7353C25.1434 -47.7353 25.0042 -47.6889 24.9578 -47.6889C24.9114 -47.6425 25.0042 -47.5034 25.2825 -47.0858L25.6537 -46.4828L25.4681 -46.6219C25.2362 -46.8539 25.0042 -46.9003 24.7723 -46.9003C24.3084 -46.8539 23.6589 -46.3436 23.4269 -45.9261C23.195 -45.4622 23.3342 -44.9055 23.6589 -44.8127C24.03 -44.7663 24.3084 -45.2302 24.03 -45.5086C23.9372 -45.6014 23.8908 -45.6014 23.7517 -45.6014H23.6125L23.6589 -45.7405C23.7981 -46.1117 24.4939 -46.6219 24.8186 -46.6219C25.1898 -46.6219 25.5609 -46.2508 25.7001 -45.7869C25.7464 -45.555 25.7464 -45.6014 25.6073 -44.6272C25.5609 -44.2097 25.6073 -44.0241 25.7464 -43.8385C25.7928 -43.7922 25.932 -43.6994 25.9784 -43.6994C26.1176 -43.653 26.3495 -43.7922 26.5815 -43.9777C26.8598 -44.2097 26.999 -44.3024 26.999 -44.3024C27.1845 -44.1633 28.901 -40.7768 28.901 -40.6376C28.901 -40.5912 28.7618 -40.4985 28.6226 -40.4057L28.3443 -40.2201L28.2515 -40.3593C26.999 -41.8902 25.7928 -43.0499 24.262 -43.9777C22.4991 -45.0447 20.5044 -45.7405 18.4632 -45.9261C17.5354 -46.0653 16.1437 -46.0189 15.1695 -45.8797C13.2675 -45.6478 11.2728 -44.8591 9.7419 -43.7458L9.41717 -43.5138V-43.8849C9.37078 -44.3024 9.278 -44.72 9.09244 -45.1375C8.95327 -45.4158 8.67493 -45.8797 8.62854 -45.8797S8.53576 -45.8797 8.48937 -45.8333L8.39659 -45.7405L8.48937 -45.6478C8.76771 -45.1839 8.90688 -44.72 8.90688 -44.3952C8.86049 -44.1169 8.8141 -43.9777 8.58215 -43.8849C8.30381 -43.7458 8.02547 -43.8849 7.4224 -44.4416C7.00489 -44.8591 6.68016 -45.0911 6.30904 -45.2302C5.01012 -45.7405 3.34008 -45.1375 2.3195 -43.7922C2.08755 -43.421 1.76282 -42.8644 1.62365 -42.4468C1.57726 -42.3077 1.53087 -42.1685 1.53087 -42.1685C1.48448 -42.1685 1.20614 -42.586 1.11336 -42.7716C0.78863 -43.5138 0.88141 -44.5808 1.43809 -45.323C1.57726 -45.555 1.99477 -45.9261 2.22672 -46.0189C2.55145 -46.2044 2.87618 -46.2508 3.15452 -46.2044C3.38647 -46.158 3.61842 -46.0189 3.75759 -45.9261C3.80398 -45.8797 3.80398 -45.9261 3.98954 -46.1117L4.12871 -46.2972L4.03593 -46.39C3.89676 -46.4828 3.61842 -46.6219 3.38647 -46.6683C2.36589 -46.8539 1.20614 -46.0189 0.78863 -44.8127C0.4639 -43.7458 0.64946 -42.7252 1.29892 -41.9829L1.48448 -41.7974L1.43809 -41.5654C1.29892 -40.6376 1.3917 -39.6171 1.71643 -38.5965C2.08755 -37.5295 2.73701 -36.5089 3.61842 -35.7203C3.94315 -35.442 4.54622 -35.0244 4.77817 -34.8853L4.87095 -34.8389L4.91734 -34.2358C4.91734 -33.54 4.96373 -33.1225 5.05651 -32.5194C5.38124 -30.6174 6.16987 -28.8082 7.23684 -27.3701C7.32962 -27.2309 7.4224 -27.1381 7.4224 -27.0918S6.44821 -26.5351 5.84514 -26.2103C4.22149 -25.3753 3.10813 -25.1898 2.59784 -25.6537C2.55145 -25.7464 2.41228 -25.8392 2.41228 -25.932C2.27311 -26.164 2.22672 -26.5815 2.27311 -26.999L2.3195 -27.1381L2.41228 -26.999C2.50506 -26.767 2.7834 -26.6279 3.06174 -26.6279C3.29369 -26.6279 3.57203 -26.8134 3.7112 -26.999C3.80398 -27.1381 3.80398 -27.1845 3.80398 -27.4165C3.80398 -27.6948 3.80398 -27.7412 3.7112 -27.8804C3.43286 -28.2979 2.82979 -28.3443 2.41228 -27.9732C2.04116 -27.5557 1.8556 -26.6742 2.04116 -26.0248C2.18033 -25.7001 2.45867 -25.4217 2.7834 -25.3289C3.52564 -25.097 4.82456 -25.4217 6.40182 -26.2103L6.77294 -26.3959L6.54099 -26.1176C6.30904 -25.7928 5.93792 -25.2825 5.75236 -24.9114C5.42763 -24.3547 4.639 -23.4269 4.08232 -23.0558C3.75759 -22.8239 3.38647 -22.6383 3.06174 -22.5919C2.82979 -22.4991 2.22672 -22.4991 2.18033 -22.5455C2.18033 -22.5455 2.22672 -22.5919 2.27311 -22.6847C2.50506 -22.963 2.22672 -23.4733 1.8556 -23.3342C1.48448 -23.2414 1.43809 -22.8239 1.71643 -22.4991C1.80921 -22.36 2.04116 -22.2672 2.22672 -22.2672C2.36589 -22.2208 2.36589 -22.2208 2.36589 -22.3136S2.36589 -22.4064 2.41228 -22.3136C2.50506 -22.2672 2.55145 -22.2672 2.7834 -22.2672C3.15452 -22.3136 3.43286 -22.4064 3.80398 -22.5919S4.54622 -23.0094 4.96373 -23.4733L5.28846 -23.7981L5.19568 -23.5197C4.91734 -22.1744 5.1029 -20.7827 5.79875 -19.6694C6.0307 -19.2982 6.58738 -18.7416 6.91211 -18.5096C7.05128 -18.4168 7.14406 -18.324 7.14406 -18.324S7.14406 -18.1849 7.09767 -17.9993C7.00489 -17.4426 7.00489 -16.7004 7.09767 -15.9118L7.14406 -15.7262L6.81933 -15.4943C6.63377 -15.3551 6.30904 -15.0767 6.07709 -14.8448C4.12871 -12.9428 3.06174 -10.4377 3.06174 -7.79352C3.06174 -6.58738 3.2473 -5.52041 3.66481 -4.49983C4.12871 -3.38647 5.01012 -2.27311 5.79875 -1.71643C5.93792 -1.57726 6.0307 -1.48448 6.0307 -1.48448C6.0307 -1.34531 5.47402 -0.74224 5.1029 -0.55668C4.59261 -0.23195 3.89676 -0.04639 3.38647 -0.13917L3.2473 -0.18556L3.38647 -0.27834C3.75759 -0.51029 3.80398 -1.06697 3.52564 -1.3917C3.29369 -1.57726 2.92257 -1.67004 2.64423 -1.53087C2.22672 -1.34531 2.08755 -0.78863 2.36589 -0.41751C2.50506 -0.23195 2.73701 -0.04639 3.06174 0C3.34008 0.13917 4.03593 0.13917 4.45344 0.04639C5.1029 -0.09278 5.70597 -0.4639 6.12348 -1.02058C6.26265 -1.15975 6.35543 -1.29892 6.35543 -1.29892C6.40182 -1.29892 6.4946 -1.25253 6.63377 -1.15975C8.02547 -0.4639 9.69551 -0.37112 10.9016 -0.97419C11.6903 -1.34531 12.247 -1.94838 12.4789 -2.69062C12.6181 -3.06174 12.6181 -3.61842 12.5253 -3.89676L12.4325 -4.12871L12.7109 -4.36066C12.85 -4.49983 13.2211 -4.96373 13.4995 -5.33485S14.1026 -6.07709 14.1953 -6.16987C14.752 -6.68016 15.6798 -6.68016 16.0973 -6.16987C16.2829 -5.98431 16.3293 -5.79875 16.3293 -5.47402S16.3293 -5.1029 16.1901 -5.28846C16.0973 -5.42763 15.819 -5.5668 15.587 -5.5668C15.4015 -5.5668 15.2159 -5.47402 15.0767 -5.33485C14.752 -4.96373 14.8448 -4.40705 15.2623 -4.1751C15.4015 -4.08232 15.4479 -4.08232 15.6798 -4.08232C15.9582 -4.12871 16.1437 -4.22149 16.3293 -4.49983C16.7004 -4.96373 16.7468 -5.89153 16.4221 -6.58738C16.1901 -7.23684 15.6334 -7.79352 14.984 -8.07186L14.7984 -8.11825L15.0304 -8.16464C15.4015 -8.21103 16.0973 -8.3502 16.6076 -8.53576L17.1179 -8.72132L17.3499 -8.30381C17.8601 -7.37601 18.0921 -6.54099 18.0921 -5.52041C18.0921 -3.43286 16.886 -1.76282 15.1695 -1.48448C14.8912 -1.43809 14.4737 -1.43809 14.3345 -1.48448C14.2417 -1.48448 14.2417 -1.48448 14.3345 -1.57726C14.5201 -1.67004 14.6128 -1.8556 14.6128 -2.08755C14.6128 -2.7834 13.6387 -2.96896 13.4067 -2.3195C13.2211 -1.90199 13.4995 -1.48448 14.0098 -1.25253C14.3345 -1.15975 15.0767 -1.15975 15.4943 -1.25253C16.9323 -1.67004 17.9993 -2.87618 18.324 -4.54622C18.4168 -4.96373 18.4168 -6.12348 18.324 -6.4946C18.2777 -6.68016 18.2777 -6.77294 18.2777 -6.77294C18.2777 -6.81933 18.3704 -6.68016 18.5096 -6.4946C19.1591 -5.5668 20.0405 -4.639 21.0147 -3.89676C23.0558 -2.22672 25.4217 -1.25253 28.0659 -0.9278C28.5762 -0.88141 30.1999 -0.88141 30.7102 -0.9278C32.1947 -1.11336 33.8183 -1.53087 35.1636 -2.04116C35.3956 -2.13394 35.5811 -2.22672 35.6275 -2.22672C35.6275 -2.22672 35.6739 -2.18033 35.7203 -2.18033C35.8131 -2.04116 36.045 -1.94838 36.2306 -1.94838C36.6017 -1.94838 36.8337 -2.22672 36.88 -2.59784L36.9264 -2.7834L37.3903 -3.01535C39.014 -3.7112 40.7304 -4.36066 41.8438 -4.639C42.818 -4.87095 43.3746 -4.91734 44.1633 -4.91734C44.5808 -4.91734 44.8591 -4.87095 44.9983 -4.82456C45.2302 -4.77817 45.6941 -4.54622 45.8333 -4.45344L45.9261 -4.40705L45.6941 -4.31427C45.1375 -4.03593 44.4416 -3.89676 43.5138 -3.85037C42.8644 -3.80398 42.6788 -3.75759 42.3541 -3.52564C41.9829 -3.2473 41.7046 -2.82979 41.6118 -2.41228C41.5654 -2.22672 41.6118 -1.71643 41.6582 -1.53087C41.6582 -1.43809 41.6582 -1.48448 41.3335 -1.62365C40.916 -1.8556 40.4985 -2.04116 40.081 -2.13394C39.8026 -2.22672 39.6634 -2.22672 39.2459 -2.22672C38.6893 -2.22672 38.4573 -2.18033 38.179 -1.99477S37.8078 -1.62365 37.7615 -1.34531C37.7615 -0.88141 38.0398 -0.60307 38.4573 -0.60307C39.1532 -0.60307 39.3851 -1.48448 38.782 -1.8556L38.6893 -1.90199L38.8748 -1.94838C39.2923 -1.99477 40.1273 -1.90199 40.6376 -1.67004C41.0088 -1.53087 41.4727 -1.25253 41.8438 -1.02058C43.4674 0 43.8385 0.13917 44.488 0.13917C45.2302 0.13917 45.7405 -0.04639 46.2972 -0.55668C46.5292 -0.83502 46.6219 -0.97419 46.7611 -1.20614C46.9931 -1.67004 47.0395 -1.94838 46.9931 -2.45867C46.9931 -3.15452 46.8075 -3.61842 46.4828 -4.08232C46.39 -4.22149 46.3436 -4.31427 46.3436 -4.31427C46.8075 -4.68539 47.1322 -4.96373 47.3178 -5.38124C47.8281 -6.40182 47.457 -7.65435 46.6219 -7.65435C46.3436 -7.65435 46.1117 -7.46879 46.0189 -7.19045C45.8797 -6.81933 46.2044 -6.35543 46.6219 -6.35543C46.8075 -6.35543 47.0395 -6.4946 47.1322 -6.63377L47.225 -6.77294V-6.54099C47.2714 -6.30904 47.225 -5.89153 47.1322 -5.65958C46.9931 -5.28846 46.7147 -4.91734 46.2972 -4.639L46.1117 -4.49983L45.8797 -4.639C44.9519 -5.24207 43.421 -5.24207 41.2871 -4.68539C40.8696 -4.59261 39.5707 -4.1751 39.1995 -4.03593C39.1532 -4.03593 39.3851 -4.1751 39.6634 -4.40705C40.9624 -5.24207 41.8902 -6.0307 42.9571 -7.09767C44.7663 -8.86049 45.8797 -10.4841 46.8075 -12.5717L46.9931 -13.0356H47.1786C47.4106 -13.082 47.5497 -13.1284 47.6889 -13.3139C47.8745 -13.4995 47.9209 -13.6387 47.9209 -13.8706C47.8745 -14.1489 47.7817 -14.3809 47.5961 -14.4737L47.5034 -14.5665L47.5497 -14.7984C48.06 -16.7004 48.1992 -19.3446 47.9673 -21.3394C47.8281 -22.6847 47.4106 -24.3084 46.9467 -25.4217L46.8539 -25.6073H46.9467C46.9931 -25.6073 47.1322 -25.6537 47.2714 -25.6537C47.6889 -25.7464 47.8745 -25.8856 47.9209 -26.164C47.9209 -26.3495 47.8281 -26.5815 47.6425 -26.7206C47.5497 -26.767 47.3178 -26.9062 47.0858 -26.9526C46.8075 -27.0918 46.6219 -27.1845 46.5292 -27.2773C46.3436 -27.4165 46.158 -27.834 46.1117 -28.0659C46.1117 -28.2979 46.158 -28.3443 46.4364 -28.4371C46.6683 -28.5298 47.1786 -28.5762 47.1786 -28.5298C47.1786 -28.5298 47.1322 -28.4835 47.0858 -28.3907C46.8075 -27.9732 47.1786 -27.4629 47.6425 -27.5557C48.06 -27.6948 48.1528 -28.1587 47.7817 -28.5298C47.5961 -28.7154 47.3178 -28.8082 46.9467 -28.8082C46.39 -28.8082 45.9261 -28.6226 45.8797 -28.2979C45.8333 -28.1123 45.8797 -27.7876 46.0189 -27.5093C46.2044 -27.1381 46.3436 -26.999 46.9003 -26.767C47.225 -26.6742 47.4106 -26.5351 47.5034 -26.4887C47.5961 -26.3495 47.6425 -26.3495 47.6425 -26.164C47.6425 -25.7928 47.457 -25.7001 46.9467 -25.9784L46.6683 -26.0712L46.4364 -26.5815C45.8333 -27.7412 45.1375 -28.7154 44.3024 -29.6432L43.9777 -29.9679H44.4416C44.9519 -29.9679 45.1839 -30.0607 45.6014 -30.2927C46.4828 -30.8957 46.7147 -32.1483 46.2044 -33.1688C46.0189 -33.54 45.5086 -34.0503 45.1375 -34.2358C44.1633 -34.7925 43.0499 -34.9317 41.8438 -34.6533C40.7768 -34.375 39.8026 -33.8183 39.014 -33.0297L38.782 -32.8441L38.4573 -32.8905C38.2254 -32.9369 37.8078 -32.9369 37.4367 -32.9369C36.7409 -32.9369 36.3234 -32.8905 35.7203 -32.7049C35.5347 -32.6586 35.3492 -32.6586 35.3492 -32.6586S35.3492 -32.7513 35.3956 -32.8441C35.3956 -32.9369 35.3956 -33.0297 35.3956 -33.0297C35.3492 -33.0297 35.1636 -33.0761 34.9781 -33.1225C34.6533 -33.1688 34.6069 -33.2152 34.6069 -33.2616C34.6069 -33.2616 34.6533 -33.4936 34.6997 -33.7255C34.6997 -33.9575 34.7461 -34.143 34.7925 -34.143C34.7925 -34.143 35.0708 -34.0503 35.3028 -33.9111C35.7203 -33.6791 35.8595 -33.6327 35.9986 -33.6327C36.3234 -33.6327 36.5089 -33.8647 36.5089 -34.2358C36.5089 -34.4214 36.4625 -34.5142 36.2306 -34.9781S35.9986 -35.5347 35.9986 -35.7203C35.9986 -36.1378 36.2306 -36.6017 36.5553 -36.6945C36.6481 -36.6945 36.7409 -36.6945 36.9264 -36.6481C37.2048 -36.6017 37.5295 -36.4161 37.7151 -36.277L37.8542 -36.1842L37.6687 -36.0914C37.4367 -36.045 37.3439 -35.9522 37.2976 -35.7203C37.2048 -35.3956 37.4367 -35.0708 37.8078 -35.0708C38.1326 -35.0708 38.3181 -35.3028 38.3181 -35.7203C38.2717 -35.8595 38.2717 -35.9986 38.2717 -35.9986S38.4109 -35.9059 38.5965 -35.8131C40.2665 -34.7925 42.7252 -34.9317 44.72 -36.1378C45.3694 -36.5553 46.158 -37.2976 46.5292 -37.8542C47.1322 -38.7356 47.3642 -39.6171 47.3178 -40.6376C47.3178 -41.3335 47.225 -41.751 46.9003 -42.3541C46.3436 -43.4674 45.4158 -44.1633 44.2561 -44.3488C42.818 -44.5344 41.519 -43.7458 41.1943 -42.4932C40.8696 -41.1943 41.7974 -39.9882 43.0963 -40.081C43.7922 -40.1737 44.2561 -40.3593 44.5344 -40.684C44.9519 -41.1015 44.9519 -41.6118 44.5808 -42.0293C44.2097 -42.4005 43.6066 -42.4468 43.2355 -42.1221C43.0499 -41.9829 42.9107 -41.7046 42.8644 -41.4727C42.818 -41.1479 43.0035 -40.7304 43.3283 -40.5449C43.5138 -40.4521 43.5138 -40.4057 43.0963 -40.4057C42.6324 -40.3593 42.2149 -40.4985 41.8902 -40.8232C41.2871 -41.4263 41.2407 -42.4005 41.7974 -43.1427C42.4468 -44.0241 43.653 -44.3024 44.8127 -43.8849C45.7405 -43.5602 46.4828 -42.6324 46.8075 -41.519C46.8539 -41.1943 46.9003 -41.1015 46.9003 -40.5449C46.9003 -39.9418 46.8539 -39.849 46.8075 -39.5243C46.6219 -38.8748 46.2972 -38.3181 45.8333 -37.8542C45.5086 -37.4831 45.0911 -37.2512 44.6736 -37.112C44.3952 -37.0192 44.3024 -36.9728 43.9313 -36.9728C43.3746 -36.9728 43.0963 -37.0192 42.6788 -37.2048C42.0757 -37.4831 41.9366 -37.6223 40.4985 -39.1532C39.1532 -40.5449 37.9934 -41.7974 37.6223 -42.1685L37.3903 -42.4005L37.6687 -42.818C38.3645 -43.8849 39.1995 -44.72 40.081 -45.2766C40.7304 -45.6478 41.4263 -45.9261 42.2149 -46.1117C42.6324 -46.2044 42.7252 -46.2044 43.5138 -46.2044S44.488 -46.2044 45.2302 -46.1117C45.8797 -46.0189 46.158 -45.9725 46.7147 -45.9725C47.457 -45.9725 47.6425 -46.0189 48.06 -46.2508C48.7095 -46.6219 48.7559 -47.457 48.1528 -47.8281C48.0136 -47.9209 47.9209 -47.9209 47.7353 -47.9209C47.5034 -47.9209 47.457 -47.9209 47.2714 -47.8281C46.9003 -47.5961 46.7611 -47.1322 46.9467 -46.7147C47.0395 -46.6219 47.1322 -46.4828 47.225 -46.39L47.3642 -46.2972L47.225 -46.2508C46.9931 -46.2044 45.9261 -46.2972 45.1839 -46.39C44.3024 -46.4828 43.2355 -46.5292 42.7252 -46.4828C41.1479 -46.2972 39.849 -45.6478 38.6893 -44.488C38.2254 -44.0241 37.9006 -43.653 37.4831 -43.0499L37.2048 -42.6324L37.0656 -42.6788C36.8337 -42.818 36.2306 -43.0035 35.8595 -43.0963C35.3956 -43.1891 34.5605 -43.1891 34.0966 -43.0963C32.7049 -42.8644 31.3132 -42.2613 29.6896 -41.1479L29.1793 -40.8232L29.1329 -41.1015C28.901 -42.4005 28.8082 -43.7458 28.9474 -44.6272C29.0865 -45.8797 29.6432 -46.9931 30.4318 -47.5034C30.7566 -47.7353 31.0349 -47.8281 31.4524 -47.8281C32.1019 -47.8745 32.473 -47.7353 32.9369 -47.2714C33.2616 -46.9467 33.4008 -46.7147 33.5864 -46.2508C33.7255 -46.0189 33.7255 -45.9261 33.7255 -45.6941C33.7255 -45.5086 33.7255 -45.4158 33.5864 -45.1839C33.3544 -44.6736 32.7977 -44.3024 32.2874 -44.2561C31.7308 -44.2561 31.4988 -44.488 31.5916 -44.9983V-45.2302L31.638 -45.0911C31.8235 -44.8127 32.241 -44.6736 32.5658 -44.8591C33.2152 -45.1839 32.9833 -46.158 32.241 -46.158C31.7771 -46.158 31.406 -45.6941 31.3132 -45.0447C31.2205 -44.6736 31.2669 -44.488 31.4988 -44.3024C31.9627 -43.8385 32.8905 -43.9777 33.54 -44.5808C33.7719 -44.8127 34.0039 -45.1839 34.0039 -45.3694C34.0039 -45.4622 34.0039 -45.4622 34.143 -45.323C34.9781 -44.5808 36.2306 -44.8127 36.3234 -45.7405C36.3698 -45.9725 36.3234 -46.39 36.1842 -46.6219C35.9059 -47.1786 35.3492 -47.4106 34.9317 -47.0395C34.7461 -46.9003 34.6997 -46.7611 34.6997 -46.5292S34.7461 -46.158 34.9317 -46.0189C35.2564 -45.7405 35.7203 -45.7869 35.9522 -46.158L36.045 -46.2508V-46.0653C36.045 -45.9261 36.045 -45.7869 36.045 -45.7405C35.9986 -45.2766 35.442 -44.9983 34.9317 -45.1375C34.5142 -45.2766 34.1894 -45.6014 33.9575 -46.1117C33.6327 -46.8075 33.4472 -47.1786 33.0297 -47.5497C32.7513 -47.8281 32.4266 -48.0136 32.0555 -48.06C31.7771 -48.1528 31.2669 -48.1528 30.9885 -48.06C29.8288 -47.7817 28.9474 -46.4828 28.669 -44.72C28.5762 -44.3024 28.5762 -42.7252 28.669 -42.1685C28.7154 -41.9366 28.7154 -41.7046 28.7154 -41.7046S28.5298 -42.1221 28.2515 -42.6324S27.6484 -43.7458 27.5557 -43.9777L27.2773 -44.3952L27.602 -44.4416C27.9732 -44.488 28.1123 -44.5344 28.2515 -44.72C28.3907 -44.9519 28.2515 -45.2302 27.8804 -45.6014C27.0918 -46.2972 26.999 -46.4364 26.9526 -46.9467C26.9526 -47.1786 26.9526 -47.225 27.0454 -47.4106C27.1381 -47.5497 27.2309 -47.6425 27.2773 -47.6889C27.602 -47.9209 28.2515 -48.0136 28.5762 -47.8745C28.7154 -47.8281 28.7154 -47.8281 28.6226 -47.7353C28.5298 -47.6889 28.4371 -47.5034 28.4371 -47.4106S28.5762 -47.1322 28.669 -47.0858C28.901 -46.9467 29.1793 -47.0858 29.2721 -47.3178C29.3185 -47.5961 28.9937 -48.06 28.6226 -48.1528C28.3907 -48.1992 27.9268 -48.1992 27.6484 -48.1528ZM26.2567 -45.555C26.4887 -45.2302 26.5815 -44.9983 26.5815 -44.9519S26.5351 -44.72 26.5351 -44.5344C26.4423 -44.1169 26.3959 -43.9777 26.2567 -43.9313C26.164 -43.8849 25.9784 -43.9777 25.8856 -44.0705C25.8392 -44.1633 25.8392 -44.3024 25.932 -44.9519C26.0248 -45.4622 26.0248 -45.8333 25.8856 -46.1117C25.8392 -46.2508 25.932 -46.1117 26.2567 -45.555ZM17.6746 -45.6941C19.623 -45.6014 21.2466 -45.1839 22.963 -44.3488C24.03 -43.8385 24.9114 -43.2819 25.7928 -42.4932C26.5351 -41.8902 27.3701 -41.0088 27.9268 -40.3129L28.1123 -40.0346L27.5557 -39.5707C27.2309 -39.3387 26.9062 -39.1068 26.8598 -39.0604L26.7206 -38.9212L26.6742 -39.014C26.4887 -39.3387 25.8392 -40.081 25.3753 -40.5449C24.4475 -41.519 23.4733 -42.1685 22.36 -42.7252C19.9013 -43.9313 17.3499 -44.0241 14.984 -43.0035C13.9634 -42.5396 13.082 -41.9366 11.0872 -40.4057C10.0202 -39.5707 9.55634 -39.1995 8.99966 -38.8284C7.79352 -38.0862 7.00489 -37.7151 6.0307 -37.5759C5.5668 -37.4831 5.5668 -37.4831 5.61319 -37.7151C6.0307 -39.014 6.77294 -40.4057 7.70074 -41.519C8.02547 -41.8438 8.02547 -41.8438 8.21103 -41.8902C8.62854 -41.9366 9.09244 -42.3541 9.278 -42.8644C9.37078 -43.0963 9.50995 -43.2355 10.1594 -43.653C12.015 -44.9055 14.1026 -45.6014 16.3757 -45.6941C16.654 -45.7405 16.9323 -45.7405 16.9787 -45.7405C16.9787 -45.7405 17.3035 -45.7405 17.6746 -45.6941ZM5.93792 -42.2149L6.77294 -41.9829L6.35543 -41.8438C5.84514 -41.5654 5.33485 -41.3799 4.87095 -41.2871C4.31427 -41.1479 3.57203 -41.1479 3.06174 -41.2871C2.87618 -41.3335 2.64423 -41.4263 2.50506 -41.4727C2.3195 -41.5654 2.3195 -41.5654 2.36589 -41.6582C2.59784 -41.8902 3.15452 -42.1685 3.57203 -42.3077C4.26788 -42.4932 4.77817 -42.4468 5.93792 -42.2149ZM7.51518 -41.8902L7.65435 -41.8438L7.32962 -41.519C6.4946 -40.4521 5.84514 -39.2459 5.42763 -37.9934C5.33485 -37.7151 5.24207 -37.5295 5.24207 -37.4831C5.19568 -37.4831 5.01012 -37.4831 4.77817 -37.5295C4.22149 -37.5759 3.75759 -37.6687 3.2473 -37.947C2.50506 -38.2717 2.04116 -38.782 1.8556 -39.4779C1.71643 -39.849 1.71643 -40.3593 1.8556 -40.7304C1.94838 -41.1015 2.08755 -41.3335 2.18033 -41.2871C2.22672 -41.2871 2.36589 -41.2407 2.55145 -41.1479C3.06174 -40.9624 3.38647 -40.916 3.94315 -40.916C4.77817 -40.916 5.5668 -41.1015 6.58738 -41.6118C7.14406 -41.8902 7.23684 -41.9366 7.51518 -41.8902ZM32.7513 -40.4521C33.6791 -40.3129 34.5142 -39.849 35.2564 -39.1532L35.5811 -38.8748L35.442 -38.4109C35.2564 -37.7615 34.9317 -36.3698 34.7461 -35.5811C34.6997 -35.2564 34.6069 -34.9781 34.6069 -34.9781S34.4678 -34.8389 34.3286 -34.6997C33.8183 -34.3286 33.6327 -34.2358 33.4936 -34.4214C33.2152 -34.6997 33.308 -34.9317 33.8647 -35.3956C34.0503 -35.5811 34.2358 -35.7667 34.2822 -35.8595C34.6069 -36.3234 34.4678 -37.2512 34.0503 -37.5295C33.8647 -37.6687 33.6327 -37.7151 33.2152 -37.7151C32.6122 -37.7151 32.1947 -37.5295 32.0091 -37.1584C31.7771 -36.7409 31.9163 -36.3234 32.3338 -36.277C32.8905 -36.1842 33.1688 -36.9728 32.7049 -37.2048C32.6122 -37.2512 32.5658 -37.2976 32.5658 -37.2976C32.5658 -37.3439 32.8905 -37.3903 33.1688 -37.3903C33.7255 -37.3903 33.9575 -37.2976 34.0966 -37.0192C34.143 -36.9264 34.1894 -36.8337 34.1894 -36.5553C34.1894 -36.0914 34.0966 -35.9986 33.6327 -35.5347C33.0761 -35.0708 32.9369 -34.7925 33.1225 -34.4678C33.2616 -34.1894 33.3544 -34.1894 33.9575 -34.1894H34.4678V-34.0966C34.4678 -34.0503 34.4214 -33.8647 34.375 -33.6327C34.3286 -33.4472 34.3286 -33.2616 34.3286 -33.2616S34.143 -33.2616 33.9575 -33.308C33.7255 -33.3544 33.54 -33.4008 33.54 -33.4008C33.54 -33.3544 33.308 -32.0091 33.308 -31.9627C33.308 -31.9627 33.3544 -31.9627 33.4472 -31.9163C33.7719 -31.8699 33.7719 -31.8699 33.4472 -31.638C33.0761 -31.3596 32.6586 -30.9885 32.3802 -30.7102L32.1947 -30.4782V-31.0813L32.1483 -31.6844H31.7771H31.3596V-32.1483C31.2205 -34.375 30.6638 -36.88 29.6896 -39.3851C29.5968 -39.6634 29.504 -39.9418 29.504 -39.9418C29.4576 -40.0346 30.2927 -40.3129 30.9421 -40.4521C31.406 -40.5449 32.2874 -40.5449 32.7513 -40.4521ZM29.2721 -39.1995C29.3649 -38.8284 29.4576 -38.5501 29.4576 -38.5037C29.504 -38.4573 29.4113 -38.6429 29.2721 -38.8284C29.1329 -39.0604 28.9474 -39.3387 28.901 -39.4315S28.7618 -39.6171 28.7618 -39.6171C28.7154 -39.6634 29.0401 -39.8954 29.0865 -39.849S29.1793 -39.5243 29.2721 -39.1995ZM28.669 -39.1995C29.4113 -38.0398 29.9679 -36.9264 30.2927 -35.8131C30.7102 -34.2822 30.9885 -33.0297 31.0813 -31.9627V-31.6844H30.7102H30.3391V-30.8957V-30.1071H30.7102H31.0813V-29.6432C31.0349 -29.0401 30.9421 -28.1123 30.8957 -27.7412C30.8493 -27.602 30.803 -27.2309 30.7566 -26.999C30.6638 -26.4423 30.5246 -25.7001 30.3391 -25.0042C29.504 -21.9889 28.0659 -19.0663 26.0248 -16.4221L25.7001 -15.9582L25.5609 -16.0973L25.3753 -16.2829L24.8186 -15.7262L24.2156 -15.1695L24.4011 -14.984L24.6331 -14.752L24.5403 -14.6592C24.4475 -14.4737 23.1486 -13.2211 22.6383 -12.7572L22.128 -12.2933L21.6641 -12.7572L21.2466 -13.1748L22.2208 -14.1953C23.195 -15.1231 23.6589 -15.6334 24.262 -16.3757C26.9526 -19.7157 28.6226 -23.4269 29.1793 -27.2773C29.3185 -28.3443 29.3649 -28.7618 29.3649 -30.0607C29.3649 -31.406 29.3185 -31.8699 29.1329 -32.9369C28.8082 -34.9317 28.0196 -37.0192 27.0454 -38.5501L26.9526 -38.6429L27.1845 -38.782C27.4629 -38.9676 28.4371 -39.5243 28.4371 -39.5243C28.4835 -39.5243 28.5762 -39.3851 28.669 -39.1995ZM36.3698 -37.947C36.6017 -37.6687 36.9264 -37.2976 37.0656 -37.112L37.3439 -36.8337L37.112 -36.9264C36.7873 -37.0192 36.5089 -37.0192 36.3234 -36.9264S35.9522 -36.6017 35.8131 -36.3234C35.7203 -36.1378 35.7203 -36.0914 35.7203 -35.8131V-35.4883L35.9986 -34.9317C36.1842 -34.5142 36.2306 -34.3286 36.2306 -34.2358C36.2306 -34.0503 36.1378 -33.9111 35.9986 -33.8647C35.7667 -33.7255 35.6275 -33.8647 35.3028 -34.5605C35.21 -34.7461 35.0708 -34.9317 35.0244 -34.9781L34.9317 -35.0244L35.0708 -35.7667C35.21 -36.4625 35.5811 -37.9006 35.7203 -38.3645C35.7667 -38.5501 35.8131 -38.5965 35.8595 -38.5501C35.8595 -38.5501 36.0914 -38.2717 36.3698 -37.947ZM18.556 -37.5759C19.4838 -37.3903 20.5044 -36.9728 21.3858 -36.3698C24.1228 -34.5142 25.7928 -31.2669 26.164 -27.3237C26.2567 -26.5351 26.2567 -25.0506 26.164 -24.262C25.8392 -20.7363 24.4011 -17.3499 22.0352 -14.5665C21.3394 -13.7778 21.3394 -13.7778 22.0816 -15.3087C23.195 -17.5354 23.8445 -19.1591 24.3084 -20.8755C25.3289 -24.6331 25.1434 -28.2051 23.7053 -30.8957C23.1486 -32.0091 22.5455 -32.7513 21.4786 -33.6791C21.2002 -33.9111 20.9683 -34.143 20.8755 -34.2358C20.7363 -34.4214 20.6435 -34.6533 20.6435 -34.7925C20.6435 -34.8389 20.5972 -34.8853 20.5508 -34.8853C20.3652 -34.9317 20.3188 -34.9317 20.226 -34.6997C20.0869 -34.5142 19.623 -33.9111 19.5302 -33.8647C19.4838 -33.8183 19.3446 -33.9575 19.2055 -34.0966C18.4632 -34.6997 17.6746 -35.1172 16.7932 -35.2564C13.917 -35.7203 11.3192 -33.4472 11.3192 -30.4782C11.3192 -29.8752 11.3192 -29.6896 11.5047 -29.2721C11.5975 -29.1329 11.6903 -28.9937 11.8294 -28.8546L12.015 -28.7154L11.7831 -28.669C11.6903 -28.669 11.4583 -28.669 11.3192 -28.6226C10.2522 -28.5762 9.13883 -28.1587 8.11825 -27.5557C7.93269 -27.4165 7.70074 -27.2773 7.70074 -27.2773C7.65435 -27.2773 7.09767 -28.0196 6.86572 -28.4371C6.58738 -28.9474 6.30904 -29.4576 6.07709 -30.0143C5.89153 -30.4782 5.70597 -30.9885 5.75236 -31.0349C5.75236 -31.0349 5.79875 -30.9421 5.89153 -30.8493C6.16987 -30.3854 6.72655 -29.9679 7.19045 -29.8288C7.51518 -29.6896 8.16464 -29.6896 8.44298 -29.7824C8.90688 -29.8752 9.23161 -30.1999 9.23161 -30.571C9.23161 -31.0813 8.8141 -31.3596 8.39659 -31.2205C7.93269 -31.0349 7.83991 -30.4782 8.21103 -30.1535C8.25742 -30.1071 8.30381 -30.0143 8.30381 -30.0143C8.30381 -29.9679 7.60796 -30.0143 7.4224 -30.0607C6.30904 -30.3391 5.52041 -31.5452 5.28846 -33.3544C5.19568 -33.7719 5.14929 -34.6533 5.19568 -34.6533C5.19568 -34.6533 5.33485 -34.6069 5.52041 -34.5142C7.09767 -33.8647 8.95327 -33.8183 10.5769 -34.4214C11.3192 -34.6997 11.7367 -34.9781 13.1748 -35.8595C13.685 -36.1842 14.2881 -36.5553 14.4737 -36.6945C15.4015 -37.2048 16.2365 -37.5295 17.0715 -37.6223C17.4426 -37.6687 18.1385 -37.6223 18.556 -37.5759ZM16.654 -34.9781C17.5354 -34.8389 18.5096 -34.375 19.0663 -33.7719C19.2518 -33.6327 19.2518 -33.6327 19.1591 -33.54C19.0199 -33.4008 18.2313 -32.7977 17.7674 -32.5194C17.2107 -32.1947 16.0973 -31.5916 15.3551 -31.2669C15.1231 -31.1741 14.8912 -31.0813 14.8912 -31.0349C14.8912 -31.0349 14.8912 -30.9885 14.8912 -30.8957L14.9376 -30.7566L15.2159 -30.803C15.587 -30.803 16.3293 -30.7566 16.7468 -30.6638C17.721 -30.4318 18.7416 -29.9215 19.5302 -29.3185C19.6694 -29.2257 19.9013 -28.9937 20.0869 -28.8082L20.3652 -28.5298L20.2724 -28.2515C20.0869 -27.602 19.5766 -26.767 19.0199 -26.2103L18.7416 -25.8856L18.4632 -26.164C17.1179 -27.4629 15.2159 -28.3443 13.2211 -28.6226C12.9892 -28.6226 12.8036 -28.669 12.8036 -28.669S12.8036 -28.7154 12.85 -28.7154S13.1748 -28.9474 13.2675 -29.1329S13.3603 -29.6896 13.2675 -29.8752S12.9428 -30.2463 12.7572 -30.2927C12.6181 -30.3854 12.2933 -30.3854 12.1078 -30.2927C11.9686 -30.2463 11.7367 -30.0143 11.6439 -29.8752C11.5975 -29.7824 11.5511 -30.2927 11.5975 -30.7102C11.7367 -32.4266 12.7572 -33.9575 14.2417 -34.6533L14.5201 -34.7461L14.4737 -34.6069C14.1953 -34.0503 14.5665 -33.4472 15.1695 -33.4472C15.6334 -33.4472 15.9582 -33.7719 15.9582 -34.2358C15.9582 -34.5142 15.8654 -34.6997 15.6334 -34.8853C15.4943 -34.9781 15.4943 -34.9781 15.5406 -34.9781C15.7262 -35.0244 16.3757 -35.0244 16.654 -34.9781ZM44.1169 -34.5142C45.0447 -34.3286 45.8333 -33.6791 46.0653 -32.8441C46.158 -32.5658 46.2044 -31.9627 46.158 -31.6844C45.9725 -30.8493 45.2766 -30.2463 44.4416 -30.2463C44.2097 -30.2463 43.7922 -30.2927 43.9313 -30.3391C44.0705 -30.3391 44.3488 -30.6174 44.3952 -30.7566C44.6272 -31.3596 44.2097 -31.9627 43.6066 -31.9627C43.1891 -31.9627 42.8644 -31.638 42.7716 -31.2205L42.7252 -31.0349L42.4468 -31.2669C41.9829 -31.5916 41.1015 -32.1019 40.6376 -32.2874C40.5449 -32.3338 40.4985 -32.3802 40.4985 -32.3802C40.4985 -32.4266 40.5449 -32.5194 40.5912 -32.6586C41.1943 -34.0039 42.7252 -34.8389 44.1169 -34.5142ZM38.1326 -32.7049C38.3645 -32.7049 38.5501 -32.6586 38.5501 -32.6586C38.5965 -32.6122 38.5037 -32.473 38.3645 -32.2874C37.5759 -31.2669 37.112 -30.0607 36.9264 -28.669C36.88 -28.4371 36.88 -28.1587 36.88 -28.0659V-27.834H36.3234C35.9059 -27.834 35.6739 -27.834 35.4883 -27.7876C34.4678 -27.5557 33.7255 -26.9062 33.4936 -25.932C33.4008 -25.6537 33.4008 -25.0506 33.4472 -24.7723C33.6791 -23.9836 34.2358 -23.4269 34.8853 -23.3342C35.6739 -23.195 36.3234 -23.6125 36.3234 -24.1692C36.3234 -24.3547 36.1842 -24.5867 36.045 -24.6331C35.8131 -24.8186 35.5347 -24.7723 35.3028 -24.5867C35.0708 -24.3084 35.1172 -23.9836 35.3492 -23.7517L35.4883 -23.6125H35.3028C35.21 -23.5661 35.0244 -23.5661 34.9317 -23.6125C33.6791 -23.7981 33.2152 -25.6073 34.143 -26.767C34.6533 -27.3237 35.5347 -27.6484 36.5089 -27.5557L36.8337 -27.5093V-27.3701C36.9264 -26.2103 37.1584 -25.2362 37.6223 -24.1228C37.9006 -23.5197 38.2717 -22.8239 38.9676 -21.525C39.2923 -21.0147 39.5243 -20.5044 39.5243 -20.5044C39.5243 -20.4116 38.8748 -19.7621 38.5501 -19.5302C38.0862 -19.2518 37.4367 -18.9735 37.0192 -18.8807H36.9264L36.88 -19.391C36.88 -20.0405 36.7873 -20.3652 36.5553 -20.8291C36.1842 -21.6177 35.5347 -22.1744 34.7925 -22.4528C34.375 -22.5919 33.9111 -22.6383 33.6327 -22.4991C33.4008 -22.4064 33.1688 -22.1744 33.1688 -21.9889C33.0761 -21.6641 33.2152 -21.1074 33.4472 -20.8291C33.6791 -20.5044 34.0966 -20.3652 34.4214 -20.5508C34.8853 -20.7363 34.9317 -21.4322 34.5142 -21.7105C34.1894 -21.8961 33.7719 -21.8497 33.54 -21.5713C33.4472 -21.3858 33.4472 -21.4322 33.4472 -21.7569C33.4472 -22.128 33.5864 -22.3136 34.0039 -22.3136C34.4678 -22.36 35.1636 -22.0352 35.6739 -21.4786C36.1378 -21.0147 36.4161 -20.5044 36.5553 -19.9013C36.6017 -19.623 36.6481 -18.8807 36.6017 -18.7879C36.6017 -18.7879 36.277 -18.7879 35.9522 -18.7879C35.2564 -18.7879 34.9781 -18.8343 34.4678 -19.0663C33.4936 -19.4838 32.5658 -20.4116 31.9627 -21.5713L31.7308 -21.9889L31.9163 -22.4991C32.9369 -25.0506 33.7255 -27.9268 34.2822 -31.1741C34.3286 -31.4524 34.375 -31.7308 34.375 -31.7308S34.5142 -31.7308 34.6997 -31.6844S35.0708 -31.638 35.1172 -31.638C35.1172 -31.638 35.1636 -31.8235 35.21 -32.0091L35.2564 -32.3802L35.5811 -32.473C36.4161 -32.7049 37.2512 -32.7977 38.1326 -32.7049ZM40.8232 -31.9163C41.6582 -31.5452 42.5396 -30.9421 42.9571 -30.571C43.0499 -30.4318 43.2355 -30.2927 43.3283 -30.2463C43.5602 -30.0607 44.3024 -29.3185 44.6736 -28.8546C45.2302 -28.1587 45.6478 -27.5093 46.0189 -26.7206L46.2972 -26.2567H46.158C45.9261 -26.3031 45.8333 -26.2103 45.6941 -25.7001S45.4622 -25.0506 45.323 -25.0042C45.2302 -24.9114 45.0447 -24.9578 44.9055 -25.1434C44.7663 -25.2825 44.7663 -25.5145 44.9055 -25.932C45.0447 -26.4423 44.9983 -26.5815 44.8591 -26.8598C44.6272 -27.3237 44.2561 -27.602 43.9777 -27.602C43.7922 -27.602 43.421 -27.4165 43.1891 -27.1845C42.818 -26.8598 42.7252 -26.4423 42.9107 -26.0712C43.0499 -25.7464 43.3746 -25.6537 43.653 -25.7928C44.1169 -26.0712 43.9313 -26.8134 43.3746 -26.767C43.2819 -26.767 43.2355 -26.767 43.2355 -26.767C43.2355 -26.8598 43.5138 -27.0918 43.6994 -27.2309C44.0705 -27.4165 44.2561 -27.3237 44.5344 -26.8598C44.7663 -26.5351 44.7663 -26.3959 44.6272 -25.932C44.5344 -25.4681 44.5344 -25.2362 44.6272 -25.0042C44.72 -24.865 44.9519 -24.7259 45.0911 -24.7259S45.555 -24.865 45.8797 -25.1434C46.158 -25.3753 46.4828 -25.5609 46.5756 -25.5609C46.5756 -25.5609 46.6219 -25.5145 46.6219 -25.5145C47.3642 -23.6589 47.6425 -22.2208 47.7817 -20.2724C47.8745 -18.6488 47.6889 -16.654 47.3178 -15.0304C47.225 -14.6592 47.225 -14.6592 47.1322 -14.6592C46.6683 -14.6592 46.2508 -14.1953 46.3436 -13.7314C46.39 -13.5459 46.5292 -13.3139 46.6219 -13.2211L46.7147 -13.1284L46.6219 -12.8036C46.2508 -12.015 45.7405 -11.0408 45.1839 -10.2058C43.3283 -7.4224 40.6376 -5.1029 37.3439 -3.34008L36.7873 -3.06174L36.6945 -3.10813C36.6017 -3.2473 36.3698 -3.34008 36.2306 -3.34008C36.045 -3.34008 35.8595 -3.2473 35.7667 -3.15452C35.5811 -3.01535 35.5347 -2.92257 35.5347 -2.69062L35.4883 -2.50506L35.21 -2.36589C34.2822 -1.99477 32.8441 -1.57726 31.8699 -1.3917C28.9937 -0.88141 26.2103 -1.25253 23.6589 -2.50506C21.2466 -3.7112 19.2055 -5.65958 17.8138 -8.11825C17.6746 -8.39659 17.489 -8.62854 17.4426 -8.72132L17.3962 -8.8141L17.721 -8.99966L18.0921 -9.13883L18.1849 -9.04605C18.2313 -8.95327 18.556 -8.58215 18.8807 -8.21103C20.1796 -6.68016 20.7827 -6.07709 21.4786 -5.5668C24.4475 -3.34008 28.3443 -2.69062 32.5658 -3.7112C35.3492 -4.40705 37.947 -5.75236 40.1737 -7.60796C40.7304 -8.02547 41.9366 -9.278 42.3541 -9.78829C43.5138 -11.1336 44.3488 -12.6181 44.8127 -14.1026C45.6941 -16.7932 45.5086 -19.4374 44.2561 -21.8961C43.9313 -22.5919 43.6066 -23.0558 42.7716 -24.4011C41.8902 -25.7464 41.7046 -25.9784 41.3799 -26.6279C40.4521 -28.2515 40.081 -29.6896 40.1737 -31.0813C40.2201 -31.5452 40.3593 -32.1483 40.4057 -32.1483C40.4057 -32.1483 40.6376 -32.0555 40.8232 -31.9163ZM33.9575 -31.1277C33.4472 -28.0659 32.6586 -25.1434 31.7308 -22.7775L31.5452 -22.36L31.4524 -22.6383C31.1277 -23.6589 30.9885 -24.5403 30.9421 -25.7001C30.9421 -26.3959 30.9885 -26.4887 31.0813 -27.1381C31.2205 -28.0659 31.2669 -28.2979 31.4524 -28.7618C31.8235 -29.6896 32.3802 -30.4782 33.1225 -31.1277C33.4008 -31.3596 34.0503 -31.8235 34.0503 -31.7771C34.0966 -31.7771 34.0503 -31.4988 33.9575 -31.1277ZM31.8235 -29.9215C31.7308 -29.8288 31.5916 -29.6432 31.4988 -29.4576L31.3132 -29.1329L31.3596 -29.3649C31.3596 -29.504 31.3596 -29.736 31.3596 -29.8752V-30.1071H31.638H31.9163ZM12.6645 -28.3907C13.8242 -28.2979 14.8912 -28.0196 16.0045 -27.4629C16.8396 -27.0454 17.6282 -26.5351 18.2313 -25.9784L18.5096 -25.7001L18.4168 -25.6073C18.1385 -25.4217 17.489 -25.0042 17.1179 -24.8186C16.5148 -24.4939 15.8654 -24.3084 15.1695 -24.2156L14.8912 -24.1692L15.0304 -24.3084C15.3087 -24.6331 15.2623 -25.1434 14.8912 -25.3753S14.1026 -25.4681 13.917 -25.097C13.7778 -24.865 13.8706 -24.4475 14.1489 -24.262L14.2417 -24.1692L14.0562 -24.1228C13.7314 -24.0764 12.85 -24.1692 12.1542 -24.3547C11.0408 -24.6331 9.97385 -25.1898 8.99966 -25.932C8.67493 -26.2103 7.93269 -26.9526 7.93269 -26.999C7.93269 -27.0918 8.39659 -27.4165 8.86049 -27.6484C9.83468 -28.1123 10.7161 -28.3443 12.015 -28.3907C12.0614 -28.3907 12.3861 -28.3907 12.6645 -28.3907ZM20.8291 -27.9268C21.8497 -26.5815 22.4528 -24.9114 22.7311 -22.9167C22.8239 -22.2208 22.8239 -20.7363 22.7311 -19.9941C22.4991 -18.1849 22.0352 -16.4684 21.2466 -14.6128C20.8291 -13.685 20.7827 -13.5459 20.7363 -13.5923C20.7363 -13.5923 20.5508 -13.7314 20.4116 -13.8242C20.226 -13.9634 19.9013 -14.1489 19.6694 -14.2881S19.2518 -14.5665 19.2518 -14.5665S19.391 -14.752 19.5302 -14.984C19.8549 -15.5406 20.4116 -16.7004 20.5972 -17.1643C21.4322 -19.4374 21.3394 -21.5713 20.3188 -23.6589C20.0405 -24.262 19.6694 -24.8186 19.2518 -25.3289L18.9271 -25.7001L19.2055 -25.9784C19.5302 -26.3495 19.8549 -26.7206 20.0869 -27.1381C20.2724 -27.4629 20.5044 -27.9268 20.5508 -28.1123C20.5508 -28.2051 20.5972 -28.2051 20.5972 -28.2051S20.7363 -28.1123 20.8291 -27.9268ZM8.86049 -25.7001C10.5769 -24.3084 12.7109 -23.6589 14.752 -23.8445C16.1437 -23.9836 17.5818 -24.5867 18.5096 -25.3289C18.6024 -25.4217 18.6952 -25.4681 18.6952 -25.4681C18.7879 -25.4681 19.391 -24.6795 19.7157 -24.2156C20.8291 -22.4064 21.1538 -20.3652 20.6435 -18.324C20.458 -17.6282 20.2724 -17.0251 19.9013 -16.2829L19.7157 -15.8654L19.0663 -16.1901C17.8138 -16.7932 16.886 -17.1179 15.819 -17.3962C13.4531 -17.9529 11.1336 -17.7674 8.95327 -16.7932C8.58215 -16.6076 7.83991 -16.2365 7.51518 -16.0045C7.46879 -15.9582 7.4224 -15.9582 7.4224 -15.9582C7.37601 -16.0509 7.28323 -16.886 7.32962 -17.2107C7.32962 -17.5354 7.46879 -18.0921 7.51518 -18.1385C7.51518 -18.1849 7.60796 -18.1385 7.70074 -18.1385C8.76771 -17.7674 9.97385 -18.0457 10.8089 -18.7879C11.4119 -19.2982 11.7367 -19.9941 11.8294 -20.8291C11.8294 -21.0147 11.8758 -21.1538 11.8758 -21.2002C11.9222 -21.2002 12.6181 -21.3394 13.0356 -21.3858C14.1953 -21.4786 15.4015 -21.293 16.2365 -20.8291C16.9787 -20.458 17.4426 -19.9013 17.6282 -19.2055C17.6746 -18.9271 17.721 -18.4168 17.6282 -18.2777C17.6282 -18.2313 17.6282 -18.2313 17.5818 -18.324S17.3499 -18.556 17.1643 -18.6024C16.6076 -18.7416 16.1437 -18.1849 16.3757 -17.6746C16.4684 -17.4426 16.7468 -17.2571 17.0251 -17.2571C17.1643 -17.2571 17.3962 -17.3499 17.5354 -17.489C17.9529 -17.9065 18.0921 -18.6952 17.8601 -19.623C17.721 -20.0405 17.4426 -20.6435 17.1643 -21.0147C16.4684 -21.9425 15.3087 -22.6383 14.0098 -22.8239C13.3139 -22.963 12.2933 -22.9167 11.6439 -22.7775L11.4583 -22.7311L11.3192 -22.9167C11.1336 -23.195 10.6697 -23.5661 10.3914 -23.7517C10.0202 -23.9836 9.64912 -24.0764 9.18522 -24.1228C8.76771 -24.1228 8.58215 -24.0764 8.25742 -23.9836C8.02547 -23.8908 7.74713 -23.6589 7.65435 -23.4733C7.37601 -22.963 7.70074 -22.36 8.30381 -22.36C8.67493 -22.36 9.04605 -22.6847 9.04605 -23.1022C9.04605 -23.3342 8.90688 -23.5661 8.67493 -23.7053L8.58215 -23.7981H8.72132C9.18522 -23.8908 9.83468 -23.7517 10.2522 -23.4733C10.5305 -23.3342 10.8553 -23.0094 11.0408 -22.7775L11.1336 -22.6383L11.0408 -22.5919C10.948 -22.5455 10.8553 -22.4991 10.8089 -22.4991S10.5305 -22.4064 10.345 -22.2672C8.95327 -21.5713 7.83991 -20.3652 7.37601 -18.9735C7.32962 -18.7879 7.23684 -18.6488 7.23684 -18.6488S6.86572 -18.8807 6.63377 -19.0663C6.21626 -19.4838 5.70597 -20.3188 5.52041 -20.9219C5.24207 -21.9889 5.28846 -23.1486 5.70597 -24.2156C5.84514 -24.4939 5.93792 -24.6795 6.21626 -25.0506C6.77294 -25.8392 7.05128 -26.164 7.37601 -26.4887L7.65435 -26.8134L8.11825 -26.3495C8.3502 -26.1176 8.67493 -25.8392 8.86049 -25.7001ZM30.7566 -24.5867C30.8493 -23.7517 30.9885 -23.1022 31.2669 -22.36L31.406 -21.9889L31.2669 -21.6641C30.3391 -19.4838 29.1329 -17.489 27.834 -15.819C27.3701 -15.2623 26.8598 -14.7056 26.8598 -14.7056C26.8598 -14.752 26.6279 -14.984 26.3495 -15.2623C25.9784 -15.6798 25.8856 -15.7726 25.932 -15.819C25.932 -15.819 26.164 -16.1437 26.3959 -16.4684C28.2979 -18.9271 29.7824 -21.8961 30.5246 -24.7259C30.6174 -24.9578 30.6638 -25.1434 30.6638 -25.097C30.6638 -25.097 30.7102 -24.865 30.7566 -24.5867ZM32.1483 -20.6435C32.4266 -20.226 33.0297 -19.623 33.4472 -19.2982C33.5864 -19.2055 33.9111 -19.0199 34.0966 -18.9271C34.7925 -18.556 35.3028 -18.4632 36.0914 -18.4632C36.4161 -18.5096 36.5553 -18.4632 36.5553 -18.4632C36.4625 -18.1385 36.3698 -17.8601 36.2306 -17.6282C36.0914 -17.3499 35.7667 -16.886 35.5811 -16.7004L35.442 -16.6076L35.1636 -16.7932C33.9111 -17.6282 32.2874 -17.9065 30.8493 -17.6282C30.2463 -17.489 29.5504 -17.2107 29.0865 -16.9323L28.901 -16.7932L29.1329 -17.1179C29.7824 -18.0921 30.3854 -19.1591 30.9421 -20.3188C31.1741 -20.7363 31.406 -21.2466 31.4524 -21.3858L31.5452 -21.6177L31.7771 -21.2466C31.8699 -21.0611 32.0555 -20.7827 32.1483 -20.6435ZM11.5511 -20.9219C11.4583 -19.7157 10.7161 -18.7879 9.60273 -18.4168C9.278 -18.2777 9.23161 -18.2777 8.72132 -18.2777C8.25742 -18.2777 8.16464 -18.2777 7.93269 -18.3704C7.74713 -18.4168 7.65435 -18.4632 7.65435 -18.4632S7.74713 -18.6488 7.83991 -18.8343C8.44298 -19.7621 9.60273 -20.5044 11.0872 -20.9683C11.3192 -21.0611 11.5047 -21.1074 11.5047 -21.1074C11.5511 -21.1074 11.5511 -21.0611 11.5511 -20.9219ZM40.0346 -19.623C40.7304 -18.1849 41.1015 -16.9787 41.2871 -15.4479C41.3799 -14.8912 41.3799 -13.3139 41.3335 -12.7109C40.9624 -9.78829 39.5243 -7.4224 37.2048 -6.07709C34.7461 -4.54622 31.5916 -4.49983 28.669 -5.93792C27.4165 -6.54099 26.4887 -7.23684 25.4681 -8.21103C24.865 -8.76771 24.4475 -9.278 23.7981 -10.1594L23.2414 -10.8553L23.6125 -11.1336C24.9114 -12.015 25.7928 -12.5253 26.4423 -12.6181C26.9526 -12.7109 27.2773 -12.5253 27.4165 -12.1078C27.5093 -11.9222 27.5557 -11.4583 27.5093 -11.2728V-11.1336L27.4165 -11.2264C27.1845 -11.5047 26.7206 -11.5047 26.5351 -11.18C26.3495 -10.8089 26.6279 -10.3914 27.0454 -10.3914C27.5093 -10.3914 27.8804 -10.9016 27.834 -11.5975C27.7876 -12.1542 27.6484 -12.4789 27.3237 -12.6645C27.1845 -12.7109 27.0918 -12.7572 26.8598 -12.7572C26.3031 -12.8036 25.7464 -12.6181 24.8186 -12.1078C24.5867 -12.015 24.4011 -11.8758 24.4011 -11.9222C24.8186 -12.247 25.2362 -12.6645 25.5609 -12.9428C25.7464 -13.1284 25.932 -13.3139 25.932 -13.3139C25.9784 -13.3139 26.0248 -13.2211 26.1176 -13.1748C26.164 -13.082 26.2103 -13.0356 26.2567 -13.0356S27.4165 -14.1026 27.4165 -14.1026S27.3237 -14.1953 27.2309 -14.3345L27.0454 -14.5201L27.2773 -14.752C27.4165 -14.8912 27.6948 -15.2159 27.8804 -15.4479C28.2515 -15.9118 28.6226 -16.2365 29.0401 -16.5612C30.4782 -17.489 32.241 -17.721 33.8647 -17.1179C34.375 -16.9323 35.21 -16.4684 35.21 -16.3757C35.21 -16.3293 34.7925 -16.0045 34.4678 -15.819C33.5864 -15.3551 32.7049 -15.1231 31.4988 -15.0304C31.0813 -15.0304 30.8493 -14.984 30.6638 -14.9376C29.3185 -14.4737 28.5298 -12.7572 28.901 -11.0408C29.0865 -10.0666 29.504 -9.278 30.1999 -8.58215C30.571 -8.21103 31.0349 -7.8863 31.4988 -7.65435L31.7771 -7.56157L31.5452 -7.32962C31.1741 -7.00489 30.9885 -6.58738 31.0349 -6.12348C31.0349 -5.79875 31.0813 -5.5668 31.2669 -5.33485C31.406 -5.14929 31.5916 -5.05651 31.8235 -5.05651C32.4266 -5.05651 32.5658 -5.84514 32.0091 -6.07709C31.8699 -6.12348 31.8235 -6.12348 31.6844 -6.07709C31.5916 -6.07709 31.4988 -5.98431 31.4524 -5.93792S31.3132 -5.84514 31.3132 -5.84514S31.3132 -5.98431 31.3132 -6.12348C31.3132 -6.54099 31.4988 -6.9585 31.8235 -7.19045C32.0555 -7.4224 32.1019 -7.4224 32.4266 -7.37601C32.8441 -7.28323 33.54 -7.28323 33.9575 -7.32962C36.277 -7.74713 37.9006 -10.113 37.6687 -12.6181C37.5295 -13.9634 36.9264 -15.1695 35.9986 -16.0973L35.6739 -16.4221L35.8595 -16.6076C36.277 -17.0715 36.6481 -17.7674 36.7873 -18.324C36.8337 -18.5096 36.8337 -18.556 36.9264 -18.556C37.9934 -18.7879 38.9676 -19.3446 39.5243 -19.9941C39.6171 -20.0869 39.7098 -20.1796 39.7098 -20.1796C39.7562 -20.1796 39.849 -19.9013 40.0346 -19.623ZM14.2417 -17.3499C15.7726 -17.2107 17.1643 -16.7932 18.8807 -15.9582L19.5766 -15.6334L19.391 -15.3551C19.0199 -14.752 19.0199 -14.6592 18.9735 -14.7056C18.9271 -14.7056 18.6952 -14.7984 18.4168 -14.9376C15.1231 -16.3293 11.2264 -15.9118 8.48937 -13.917C8.3502 -13.8242 8.21103 -13.7314 8.21103 -13.7314C8.16464 -13.7314 7.8863 -14.3809 7.74713 -14.7056C7.70074 -14.8448 7.60796 -15.1231 7.56157 -15.3087L7.46879 -15.6334L7.74713 -15.819C9.09244 -16.7004 10.8089 -17.2571 12.4325 -17.3962C12.8964 -17.4426 13.8242 -17.4426 14.2417 -17.3499ZM35.8595 -15.8654C36.6017 -15.0767 37.0656 -14.1953 37.2976 -13.1284C37.4367 -12.5717 37.4367 -11.6903 37.2976 -11.1336C37.112 -10.1594 36.6945 -9.41717 36.045 -8.76771C35.5347 -8.25742 34.8853 -7.8863 34.2358 -7.70074C33.7719 -7.60796 33.5864 -7.56157 33.4008 -7.65435C33.0761 -7.79352 32.7513 -7.83991 32.4266 -7.79352S32.1019 -7.74713 31.8699 -7.83991C30.6638 -8.30381 29.6896 -9.32439 29.3185 -10.6233C28.9937 -11.6439 29.0401 -12.6645 29.4576 -13.4995C29.736 -13.9634 30.1071 -14.3809 30.5246 -14.5665C30.8493 -14.7056 31.0813 -14.752 31.5452 -14.752C32.8441 -14.752 33.7719 -14.3345 34.0503 -13.685C34.0966 -13.4995 34.143 -13.4067 34.0966 -13.2211C34.0966 -12.8964 34.0503 -12.7572 33.8647 -12.5717C33.54 -12.2933 33.2616 -12.2933 32.6586 -12.6181C32.241 -12.8036 32.1947 -12.8036 31.9627 -12.8036C31.4988 -12.8036 31.1741 -12.6181 30.8957 -12.247C30.7102 -11.9222 30.6174 -11.5975 30.6174 -11.18C30.6174 -10.6697 30.803 -10.1594 31.1277 -9.69551L31.3132 -9.46356L31.406 -9.55634L31.4988 -9.64912L31.3596 -9.88107C31.1741 -10.2058 31.0813 -10.345 31.1277 -10.5769S31.406 -11.0872 31.638 -11.1336C31.9627 -11.2264 32.1483 -11.18 32.7513 -10.8553L33.3544 -10.5305H33.6791C33.9111 -10.5305 34.0039 -10.5769 34.143 -10.6233C34.6533 -10.8553 34.9317 -11.3655 34.9317 -12.0614S34.6069 -13.4067 34.0503 -13.9634C33.7255 -14.2881 33.4008 -14.4737 32.9833 -14.7056L32.6122 -14.8912L32.8441 -14.9376C33.6327 -15.0767 34.6533 -15.5406 35.2564 -16.0509C35.3492 -16.1437 35.442 -16.1901 35.4883 -16.1901C35.4883 -16.1901 35.6739 -16.0509 35.8595 -15.8654ZM7.28323 -15.1695C7.37601 -14.7984 7.56157 -14.3345 7.79352 -13.917L7.97908 -13.5459L7.60796 -13.2211C6.54099 -12.2006 5.84514 -10.948 5.5668 -9.50995C5.47402 -9.09244 5.47402 -8.99966 5.47402 -8.25742C5.42763 -7.60796 5.47402 -7.4224 5.52041 -7.14406C5.70597 -6.21626 6.0307 -5.5668 6.54099 -4.87095L6.77294 -4.54622V-4.08232C6.77294 -3.34008 6.63377 -2.73701 6.35543 -2.04116L6.26265 -1.76282L6.12348 -1.90199C5.19568 -2.55145 4.40705 -3.61842 3.89676 -4.82456C3.20091 -6.4946 3.15452 -8.58215 3.7112 -10.5305C4.1751 -11.9686 5.01012 -13.3603 6.07709 -14.4737C6.4946 -14.8912 7.19045 -15.4479 7.19045 -15.4015C7.23684 -15.4015 7.23684 -15.2623 7.28323 -15.1695ZM25.2825 -14.0098L25.7464 -13.5459L25.5609 -13.3603C25.1898 -12.9892 23.6589 -11.6439 23.195 -11.2728L23.0558 -11.1336L22.6847 -11.5975L22.3136 -12.0614L22.7775 -12.4789C23.0558 -12.7109 23.6125 -13.2675 24.03 -13.685C24.4475 -14.1489 24.8186 -14.4737 24.865 -14.4737C24.865 -14.4737 25.0506 -14.2881 25.2825 -14.0098ZM11.6903 -13.3603C12.5253 -13.3139 13.2675 -13.082 14.0562 -12.7109S15.4943 -11.8294 16.3757 -11.0408L16.7932 -10.6697L16.7004 -10.6233C16.6076 -10.5769 16.4684 -10.5305 16.3293 -10.4841L16.0509 -10.4377L15.7262 -10.7625C14.8448 -11.4583 13.8242 -11.9686 12.7572 -12.247C12.3861 -12.3397 11.8294 -12.3861 11.2728 -12.3861C10.6697 -12.3861 10.345 -12.3861 9.83468 -12.247L9.46356 -12.1542L9.37078 -12.247C9.23161 -12.3861 8.8141 -12.85 8.8141 -12.8964S9.37078 -13.1284 9.83468 -13.2675C10.4841 -13.4067 11.0408 -13.4531 11.6903 -13.3603ZM8.95327 -12.2933C9.04605 -12.1542 9.13883 -12.015 9.13883 -12.015C9.09244 -12.015 8.95327 -11.9222 8.8141 -11.8758C7.74713 -11.3192 7.05128 -10.5305 6.81933 -9.50995C6.77294 -9.278 6.77294 -9.13883 6.77294 -8.76771C6.77294 -8.48937 6.81933 -8.25742 6.86572 -8.16464C6.91211 -8.02547 6.91211 -7.97908 6.81933 -7.65435C6.77294 -7.37601 6.72655 -6.68016 6.68016 -6.21626V-6.0307L6.4946 -6.26265C6.12348 -6.72655 5.84514 -7.37601 5.75236 -7.97908C5.65958 -8.62854 5.75236 -9.55634 6.0307 -10.2058C6.40182 -11.18 7.19045 -12.0614 8.21103 -12.6181L8.48937 -12.8036L8.58215 -12.6645C8.62854 -12.5717 8.8141 -12.4325 8.95327 -12.2933ZM12.4789 -12.015C13.3139 -11.8294 14.1026 -11.5047 14.7984 -11.0408C15.1695 -10.8089 15.6334 -10.4377 15.6334 -10.3914S14.9376 -10.2522 14.3345 -10.2522C13.1748 -10.2522 12.0614 -10.5305 11.0408 -11.0408C10.7161 -11.2264 10.0202 -11.6439 9.83468 -11.8294L9.7419 -11.9222L9.97385 -11.9686C10.5305 -12.1078 10.6697 -12.1078 11.4119 -12.1078C11.9686 -12.1078 12.2006 -12.0614 12.4789 -12.015ZM9.64912 -11.5975C10.345 -11.0408 11.4583 -10.4841 12.4325 -10.2058C13.4531 -9.92746 14.6592 -9.88107 15.6798 -10.0666L15.9582 -10.113L16.0509 -10.0202C16.1901 -9.92746 16.6076 -9.41717 16.7932 -9.13883L16.9323 -8.95327L16.7932 -8.90688C16.1437 -8.62854 15.2159 -8.44298 14.5201 -8.39659C14.1489 -8.39659 14.1026 -8.39659 14.1026 -8.30381C14.1026 -8.25742 14.0562 -8.25742 13.8242 -8.25742C12.8964 -8.16464 12.1542 -7.70074 11.0872 -6.58738C10.5305 -5.98431 10.0202 -5.52041 9.7419 -5.38124C9.41717 -5.24207 8.99966 -5.14929 8.67493 -5.14929C8.11825 -5.14929 7.65435 -5.28846 7.19045 -5.61319L6.9585 -5.75236V-6.0307C6.91211 -6.44821 7.00489 -7.65435 7.05128 -7.65435C7.05128 -7.65435 7.09767 -7.56157 7.19045 -7.46879C7.28323 -7.28323 7.56157 -7.05128 7.79352 -6.91211C8.48937 -6.4946 9.37078 -6.68016 9.83468 -7.37601C10.345 -8.11825 10.113 -9.18522 9.32439 -9.60273C8.48937 -10.0202 7.65435 -9.7419 7.19045 -8.8141L7.05128 -8.53576V-8.86049C7.05128 -9.88107 7.60796 -10.7625 8.58215 -11.4119C8.86049 -11.5975 9.278 -11.7831 9.37078 -11.7831C9.41717 -11.7831 9.55634 -11.6903 9.64912 -11.5975ZM17.4426 -9.88107L17.9065 -9.37078L17.6282 -9.278C17.2107 -9.04605 17.2571 -9.04605 16.9787 -9.41717C16.8396 -9.55634 16.654 -9.83468 16.5148 -9.97385L16.2829 -10.2058L16.5148 -10.2522C16.6076 -10.2986 16.7468 -10.345 16.7932 -10.345S16.9323 -10.3914 16.9787 -10.3914S17.2107 -10.1594 17.4426 -9.88107ZM8.07186 -9.32439C7.79352 -9.04605 7.79352 -8.67493 8.07186 -8.39659C8.30381 -8.21103 8.62854 -8.21103 8.86049 -8.44298S9.09244 -8.99966 8.86049 -9.23161L8.72132 -9.41717H8.86049C9.04605 -9.46356 9.278 -9.32439 9.50995 -9.09244C9.7419 -8.8141 9.83468 -8.67493 9.83468 -8.21103C9.83468 -7.8863 9.83468 -7.83991 9.69551 -7.65435C9.46356 -7.23684 9.13883 -7.00489 8.67493 -7.00489C8.30381 -6.9585 8.07186 -7.05128 7.79352 -7.23684C7.60796 -7.37601 7.32962 -7.74713 7.23684 -7.97908C7.14406 -8.11825 7.14406 -8.16464 7.23684 -8.3502C7.37601 -8.8141 7.70074 -9.23161 7.97908 -9.41717C8.16464 -9.50995 8.21103 -9.50995 8.07186 -9.32439ZM7.79352 -3.75759C9.09244 -2.92257 10.8089 -2.96896 12.0614 -3.85037L12.247 -3.94315L12.2933 -3.80398C12.3397 -3.75759 12.3397 -3.52564 12.3397 -3.34008C12.3861 -2.73701 12.1542 -2.27311 11.6439 -1.76282C10.948 -1.11336 10.113 -0.83502 8.99966 -0.88141C8.16464 -0.9278 7.65435 -1.06697 6.91211 -1.3917L6.54099 -1.57726L6.63377 -1.80921C6.91211 -2.36589 7.09767 -3.20091 7.09767 -3.85037V-4.22149L7.32962 -4.03593C7.46879 -3.94315 7.70074 -3.80398 7.79352 -3.75759ZM46.2972 -3.94315C46.5756 -3.47925 46.7611 -2.82979 46.7147 -2.27311C46.6683 -1.34531 46.0653 -0.55668 45.1839 -0.23195C44.8591 -0.09278 44.2561 -0.09278 43.9313 -0.18556S43.0499 -0.55668 42.586 -0.88141C42.1685 -1.15975 42.1685 -1.15975 42.0293 -1.3917S41.8902 -1.67004 41.8902 -2.04116C41.8902 -2.36589 41.8902 -2.41228 42.0293 -2.64423C42.3077 -3.2473 42.7716 -3.57203 43.4674 -3.57203C43.8849 -3.57203 43.8849 -3.52564 43.7458 -3.38647C43.5602 -3.29369 43.421 -2.96896 43.421 -2.7834C43.421 -2.55145 43.4674 -2.36589 43.653 -2.22672C43.9313 -1.94838 44.2097 -1.90199 44.5808 -2.04116C45.1375 -2.36589 45.1375 -3.20091 44.5344 -3.57203L44.3952 -3.61842L44.72 -3.7112C45.0911 -3.75759 45.555 -3.94315 45.8333 -4.03593C45.9725 -4.12871 46.0653 -4.1751 46.1117 -4.1751S46.2508 -4.03593 46.2972 -3.94315ZM19.6694 -3.06174C18.9271 -2.73701 19.1591 -1.62365 19.9477 -1.62365C20.3652 -1.62365 20.6899 -1.99477 20.7363 -2.36589C20.7363 -2.50506 20.5972 -2.7834 20.5044 -2.87618C20.3188 -3.10813 19.9477 -3.20091 19.6694 -3.06174Z"/>
+ <path id="g96" d="M3.036 -7.464C2.916 -7.524 2.82 -7.608 2.7 -7.668C2.448 -7.8 2.136 -7.872 1.848 -7.872C1.14 -7.872 0.492 -7.524 0.276 -6.9C0.204 -6.696 0.204 -6.492 0.204 -6.288C0.204 -6.192 0.192 -6.084 0.192 -5.988C0.192 -5.688 0.192 -5.376 0.312 -5.088C0.48 -4.704 0.864 -4.572 1.212 -4.392C1.44 -4.284 1.68 -4.116 1.692 -3.84C1.692 -3.54 1.548 -3.288 1.26 -3.288C1.14 -3.288 1.02 -3.324 0.912 -3.396C0.828 -3.444 0.768 -3.528 0.684 -3.576C0.648 -3.516 0.576 -3.432 0.576 -3.36C0.588 -3.3 0.66 -3.252 0.708 -3.216C0.864 -3.084 1.056 -3.012 1.272 -3.012C1.788 -3.012 2.268 -3.336 2.268 -3.96C2.268 -4.56 1.956 -5.052 1.608 -5.34C1.26 -5.616 0.468 -5.904 0.468 -6.492C0.468 -6.924 0.828 -7.308 1.284 -7.308C1.368 -7.308 1.452 -7.296 1.536 -7.284C2.268 -7.164 2.736 -6.564 2.976 -5.904C3.288 -5.004 3.36 -3.924 3.36 -2.928C3.36 -2.184 3.168 -1.74 2.844 -1.236C2.748 -1.104 2.628 -0.984 2.544 -0.84H2.532C2.256 -1.092 1.968 -1.332 1.68 -1.56L0.708 -0.396V-0.384L0.9 -0.216H0.912L1.032 -0.372C1.26 -0.228 1.5 -0.108 1.74 0.012L1.908 0.108C1.932 0.12 1.956 0.132 1.98 0.132C1.992 0.132 1.992 0.132 2.004 0.132C2.052 0.132 2.088 0.084 2.112 0.048C2.964 -0.936 4.2 -2.064 4.272 -3.648C4.272 -3.648 4.272 -4.152 4.26 -4.152C4.212 -5.34 3.936 -6.468 3.324 -7.164C3.3 -7.2 3.228 -7.26 3.228 -7.308S3.252 -7.416 3.264 -7.452C3.36 -7.668 3.516 -7.896 3.828 -7.896C3.96 -7.896 4.092 -7.848 4.212 -7.812C4.824 -7.608 5.184 -7.008 5.364 -6.42C5.472 -6.048 5.52 -5.664 5.544 -5.268C5.556 -5.04 5.544 -4.8 5.556 -4.572C5.592 -4.056 5.652 -3.528 5.652 -3C5.652 -2.316 5.532 -1.632 5.208 -1.164C5.148 -1.068 5.076 -0.996 5.016 -0.9L4.164 -1.608L3.072 -0.288C3.12 -0.252 3.204 -0.156 3.276 -0.156C3.336 -0.156 3.372 -0.228 3.396 -0.276C3.588 -0.204 4.2 0.072 4.38 0.132C4.38 0.132 4.404 0.132 4.404 0.132C4.464 0.12 4.5 0.06 4.536 0.024L4.8 -0.264C5.532 -1.068 6.156 -1.8 6.456 -3.036C6.528 -3.384 6.54 -3.72 6.54 -4.068C6.54 -4.836 6.492 -5.544 6.348 -6.228C6.276 -6.612 6.228 -6.636 6.12 -7.032C6.312 -7.116 6.444 -7.212 6.696 -7.212C7.116 -7.212 7.548 -6.972 7.776 -6.624C7.944 -6.372 8.028 -6.084 8.1 -5.796C8.124 -5.664 8.232 -5.268 8.232 -5.208C8.232 -5.196 8.232 -5.196 8.232 -5.184C8.232 -5.148 8.196 -5.136 8.172 -5.124C7.992 -5.04 7.464 -4.86 7.356 -4.824C7.296 -4.8 7.164 -4.776 7.128 -4.704S7.092 -4.5 7.092 -4.416C7.032 -3.9 6.996 -3.348 6.996 -2.796C6.996 -2.76 6.984 -2.22 6.996 -2.22C7.032 -1.788 7.152 -1.38 7.248 -0.96C7.284 -0.768 7.368 -0.348 7.368 -0.168C7.368 -0.12 7.368 -0.072 7.38 -0.036S7.512 0.156 7.56 0.156L9.036 -1.272C9.084 -1.32 9.204 -1.392 9.204 -1.464C9.204 -1.548 9.096 -1.608 9.048 -1.656H9.036C8.976 -1.596 8.604 -1.212 8.544 -1.212C8.544 -1.212 8.532 -1.212 8.532 -1.212C8.448 -1.212 8.364 -1.32 8.328 -1.38C7.92 -1.848 7.956 -2.52 7.932 -3.312C7.932 -3.528 7.896 -3.756 7.896 -3.972C7.896 -4.224 7.932 -4.476 8.112 -4.692C8.184 -4.776 8.268 -4.836 8.352 -4.896L8.496 -4.608C8.712 -4.8 8.844 -5.076 9.036 -5.292C9.084 -5.352 9.192 -5.484 9.216 -5.556C9.216 -5.628 9.132 -5.724 9.096 -5.784C9.012 -5.94 8.952 -6.096 8.88 -6.264C8.58 -6.984 8.352 -7.752 7.548 -8.052C7.536 -8.052 7.152 -8.124 7.152 -8.1C6.864 -8.076 6.684 -7.884 6.504 -7.68C6.348 -7.512 6.204 -7.344 6.048 -7.188C5.904 -7.5 5.724 -7.812 5.46 -8.04C5.172 -8.292 4.752 -8.46 4.344 -8.46C4.116 -8.46 3.9 -8.412 3.708 -8.292C3.444 -8.136 3.132 -7.752 3.036 -7.464ZM2.616 -0.78C2.616 -0.78 2.568 -0.828 2.568 -0.828S2.616 -0.78 2.616 -0.78Z"/>
+ <path id="g97" d="M3.192 -0.276C3.192 -0.168 3.192 -0.06 3.192 0.048C3.192 0.9 2.784 1.56 2.34 2.004C2.292 2.052 2.196 2.112 2.196 2.196C2.196 2.208 2.208 2.22 2.208 2.232C2.208 2.28 2.292 2.328 2.328 2.328C2.388 2.328 2.436 2.292 2.484 2.244C3.024 1.74 3.468 0.912 3.468 0C3.468 -0.624 3.264 -1.296 2.652 -1.296C2.268 -1.296 2.016 -1.008 2.016 -0.648C2.016 -0.276 2.28 -0.012 2.652 -0.012C2.916 -0.012 3.06 -0.12 3.192 -0.276ZM5.544 -0.276C5.544 -0.168 5.544 -0.06 5.544 0.048C5.544 0.9 5.136 1.56 4.692 2.004C4.644 2.052 4.548 2.112 4.548 2.196C4.548 2.208 4.56 2.22 4.56 2.232C4.56 2.28 4.644 2.328 4.68 2.328C4.74 2.328 4.788 2.292 4.836 2.244C5.4 1.716 5.808 0.912 5.808 -0.072C5.808 -0.252 5.796 -0.432 5.748 -0.612C5.628 -0.96 5.448 -1.296 4.992 -1.296C4.608 -1.296 4.368 -0.996 4.368 -0.648C4.368 -0.48 4.428 -0.312 4.536 -0.192C4.656 -0.072 4.836 -0.012 5.004 -0.012C5.268 -0.012 5.412 -0.12 5.544 -0.276Z"/>
+ <path id="g98" d="M3.252 -8.46C3.252 -8.016 2.916 -7.692 2.604 -7.416C2.328 -7.176 2.052 -6.936 1.8 -6.684C1.524 -6.408 1.212 -6.048 1.212 -5.568C1.212 -5.544 1.212 -5.532 1.212 -5.508C1.212 -4.932 1.692 -4.512 2.016 -4.092C2.208 -3.84 2.388 -3.54 2.388 -3.216C2.388 -2.856 2.052 -2.604 1.788 -2.424C1.608 -2.292 1.416 -2.172 1.224 -2.064C1.104 -2.004 0.972 -1.968 0.852 -1.884C0.504 -1.68 0.204 -1.284 0.204 -0.768C0.204 -0.552 0.252 -0.336 0.372 -0.156C0.42 -0.084 0.576 0.132 0.672 0.132C0.672 0.132 0.684 0.132 0.684 0.132C0.768 0.132 0.84 0.036 0.876 -0.024C0.648 -0.168 0.468 -0.456 0.468 -0.732C0.468 -1.02 0.672 -1.236 0.936 -1.284C1.152 -1.284 1.74 -1.02 1.812 -0.984C2.46 -0.696 3.648 -0.096 4.344 0.072C4.428 0.108 4.548 0.144 4.632 0.144C4.644 0.144 4.656 0.144 4.668 0.144C4.728 0.144 4.776 0.108 4.824 0.084C5.76 -0.42 6.612 -1.08 7.308 -1.884C7.8 -2.448 8.28 -3.144 8.28 -4.08C8.28 -4.884 8.004 -5.7 7.692 -6.216C7.26 -6.924 6.54 -7.572 5.556 -7.692C5.124 -7.74 4.68 -7.692 4.248 -7.788C3.96 -7.848 3.588 -8.004 3.492 -8.292C3.444 -8.388 3.456 -8.46 3.324 -8.46C3.3 -8.46 3.276 -8.46 3.252 -8.46ZM1.644 -2.124C2.256 -2.472 3.24 -2.676 3.372 -3.504C3.372 -3.504 3.372 -3.828 3.36 -3.828C3.324 -4.128 3.168 -4.392 2.988 -4.632C2.676 -5.028 2.1 -5.592 2.1 -6.216C2.1 -6.36 2.136 -6.516 2.232 -6.66C2.268 -6.708 2.352 -6.864 2.424 -6.864C2.448 -6.864 2.484 -6.84 2.508 -6.828C2.784 -6.648 3.132 -6.516 3.528 -6.516C3.9 -6.516 4.248 -6.6 4.62 -6.612C4.668 -6.612 4.704 -6.612 4.752 -6.612C5.328 -6.612 5.892 -6.468 6.372 -6.12C7.056 -5.628 7.596 -4.812 7.596 -3.708C7.596 -3.012 7.356 -2.304 6.864 -1.812C6.504 -1.452 5.976 -1.212 5.292 -1.212C4.44 -1.212 3.672 -1.512 2.988 -1.764C2.544 -1.92 2.124 -2.124 1.644 -2.124Z"/>
+ <path id="g99" d="M3.252 -8.46C3.252 -8.016 2.916 -7.692 2.604 -7.416C2.388 -7.236 2.184 -7.044 1.98 -6.852C1.632 -6.528 1.212 -6.144 1.212 -5.532C1.224 -4.908 1.74 -4.488 2.076 -4.02C2.244 -3.78 2.388 -3.516 2.388 -3.216C2.388 -2.856 2.052 -2.604 1.788 -2.424C1.608 -2.292 1.416 -2.172 1.224 -2.064C1.104 -2.004 0.972 -1.968 0.852 -1.884C0.504 -1.68 0.204 -1.284 0.204 -0.768C0.204 -0.552 0.252 -0.336 0.372 -0.156C0.42 -0.084 0.576 0.132 0.672 0.132C0.672 0.132 0.684 0.132 0.684 0.132C0.768 0.132 0.84 0.036 0.876 -0.024C0.636 -0.18 0.468 -0.456 0.468 -0.756C0.468 -1.008 0.684 -1.272 0.948 -1.284C1.068 -1.284 1.176 -1.236 1.284 -1.2C2.148 -0.864 2.964 -0.42 3.828 -0.096C3.96 -0.048 4.476 0.144 4.632 0.144C4.632 0.144 4.644 0.144 4.656 0.144C4.716 0.144 4.776 0.108 4.824 0.084C5.364 -0.216 5.868 -0.492 6.348 -0.864C6.528 -0.468 6.876 -0.168 7.272 0.024C7.44 0.084 7.488 0.096 7.692 0.144C7.692 0.144 7.716 0.144 7.716 0.144C7.788 0.132 7.86 0.06 7.92 0.012C8.316 -0.288 8.724 -0.612 9.072 -0.96C9.12 -0.996 9.288 -1.128 9.288 -1.2S9.18 -1.344 9.132 -1.392C8.952 -1.248 8.796 -1.08 8.628 -0.936C8.556 -0.876 8.46 -0.756 8.352 -0.756S8.124 -0.828 8.052 -0.864C7.812 -0.984 7.608 -1.188 7.476 -1.428C7.44 -1.5 7.392 -1.596 7.392 -1.692C7.392 -1.776 7.476 -1.836 7.536 -1.896C7.692 -2.052 7.836 -2.22 7.968 -2.4C8.34 -2.904 8.592 -3.372 8.64 -4.152C8.64 -4.212 8.628 -4.26 8.628 -4.32C8.616 -4.524 8.604 -4.716 8.556 -4.908C8.304 -6.168 7.368 -7.224 6.12 -7.584C5.832 -7.668 5.52 -7.704 5.22 -7.716C4.44 -7.74 3.78 -7.716 3.48 -8.304C3.456 -8.388 3.444 -8.46 3.336 -8.46C3.312 -8.46 3.276 -8.46 3.252 -8.46ZM1.644 -2.124C2.256 -2.472 3.24 -2.676 3.372 -3.504C3.372 -3.504 3.372 -3.828 3.36 -3.828C3.24 -4.632 2.424 -5.088 2.16 -5.832C2.112 -5.952 2.1 -6.072 2.1 -6.204C2.1 -6.36 2.136 -6.504 2.22 -6.648C2.268 -6.708 2.34 -6.852 2.424 -6.852C2.46 -6.852 2.484 -6.828 2.52 -6.816C2.808 -6.624 3.228 -6.516 3.648 -6.516C3.972 -6.516 4.308 -6.6 4.632 -6.612C4.668 -6.612 4.716 -6.612 4.752 -6.612C5.556 -6.612 6.336 -6.384 6.96 -5.88C7.512 -5.448 7.944 -4.788 7.944 -3.924C7.944 -3.864 7.944 -3.816 7.944 -3.756C7.872 -2.316 6.876 -1.2 5.34 -1.2C4.62 -1.2 3.888 -1.44 3.216 -1.68C2.712 -1.86 2.196 -2.124 1.644 -2.124Z"/>
+ <path id="g100" d="M3.3264 -7.128L2.1744 -5.112H2.16C2.16 -5.4864 2.16 -5.8752 2.1456 -6.2352C1.9728 -6.4512 1.8432 -6.696 1.5984 -6.84C1.2816 -6.6096 0.9936 -6.3504 0.6912 -6.1056L1.2096 -5.472H0.9504C0.936 -4.3344 0.9792 -3.1536 0.936 -2.0448L0.3168 -1.1088V-1.0944C1.008 -0.648 1.656 -0.1584 2.3616 0.2736L2.5056 0.2304C2.9376 -0.0144 3.3984 -0.2448 3.7872 -0.5328C3.816 -0.648 3.8304 -0.7776 3.8304 -0.9072C3.6432 -0.8352 3.4272 -0.6768 3.2256 -0.6768C3.0816 -0.6768 3.0096 -0.7344 2.9232 -0.792C2.7648 -0.9072 2.448 -1.1088 2.304 -1.2096C2.2176 -1.296 2.1456 -1.296 2.1456 -1.4832C2.1456 -1.5552 2.16 -1.6272 2.16 -1.6848V-4.2912V-4.4208C2.16 -4.464 2.16 -4.4928 2.1744 -4.536C2.2176 -4.7088 2.592 -5.2704 2.6208 -5.3136C2.8224 -4.7232 3.0528 -4.1472 3.2688 -3.5712C3.5712 -4.0464 3.8592 -4.5216 4.1184 -5.04C3.8736 -5.76 3.5856 -6.4368 3.3264 -7.128Z"/>
+ <path id="g101" d="M3.3984 -6.8112C2.7792 -6.3072 1.9584 -5.9904 1.3392 -5.4864C0.6624 -4.9536 0.1584 -4.1616 0.1584 -3.2832V-3.1536C0.2448 -2.0016 1.1664 -1.1808 1.9728 -0.4608C2.1168 -0.3456 2.2608 -0.216 2.3904 -0.0864S2.6208 0.2016 2.8656 0.2016S3.168 0.0288 3.312 -0.1008C3.5424 -0.3024 3.8016 -0.504 4.0464 -0.6912C5.0256 -1.4256 6.4224 -2.2752 6.4224 -3.7584C6.4224 -3.888 6.408 -4.0176 6.3936 -4.1472C6.2496 -5.2128 5.3856 -6.0048 4.5504 -6.5808C4.4496 -6.6384 3.8304 -7.0704 3.7152 -7.0704C3.6576 -7.0704 3.456 -6.8688 3.3984 -6.8112ZM1.152 -4.248C1.152 -4.8672 1.5984 -5.472 2.1456 -5.616C2.2464 -5.6304 2.3328 -5.6304 2.4336 -5.6304C2.6784 -5.6304 2.9088 -5.5872 3.1392 -5.5296C4.3056 -5.1984 5.256 -4.1472 5.256 -2.8224C5.256 -2.664 5.2416 -2.5056 5.1984 -2.3472C5.04 -1.7568 4.536 -1.2672 3.8448 -1.2672C3.4848 -1.2672 3.1248 -1.368 2.808 -1.5264C2.1024 -1.872 1.584 -2.52 1.3392 -3.2544C1.2528 -3.4992 1.152 -3.9888 1.152 -4.248Z"/>
+ <path id="g102" d="M3.48 -6.84C3.372 -6.78 3.24 -6.732 3.156 -6.648C3.06 -6.552 3.108 -6.348 2.916 -6.348C2.82 -6.348 2.7 -6.396 2.628 -6.432C2.82 -6.66 3.06 -6.864 3.264 -7.08C3.3 -7.116 3.516 -7.32 3.516 -7.368C3.516 -7.548 3.144 -7.656 3.036 -7.656C2.82 -7.656 2.7 -7.572 2.532 -7.476C2.268 -7.32 1.992 -7.176 1.992 -6.756C1.992 -6.72 1.992 -6.672 2.004 -6.624C2.076 -6.348 2.316 -6.036 2.604 -6.036C2.844 -6.036 3.084 -6.192 3.276 -6.324C3.396 -6.396 3.528 -6.54 3.528 -6.696C3.528 -6.708 3.528 -6.708 3.528 -6.72C3.528 -6.768 3.504 -6.804 3.48 -6.84ZM2.46 -6.6C2.424 -6.696 2.412 -6.792 2.412 -6.888C2.412 -7.08 2.532 -7.344 2.736 -7.344C2.856 -7.344 2.976 -7.284 3.096 -7.236L2.46 -6.6ZM0.216 -1.14V-1.116C0.504 -0.948 1.884 -0.096 2.088 0.048C2.124 0.084 2.172 0.132 2.232 0.132C2.232 0.132 2.244 0.132 2.244 0.132C2.28 0.12 2.868 -0.564 3.132 -0.984C3.624 -1.764 3.828 -2.712 3.828 -3.636C3.828 -4.488 3.66 -5.184 3.264 -5.808L1.176 -4.968L0.66 -4.752C0.54 -4.704 0.468 -4.716 0.468 -4.536C0.468 -4.488 0.468 -4.452 0.468 -4.416V-1.728C0.468 -1.704 0.468 -1.68 0.468 -1.656C0.468 -1.488 0.456 -1.332 0.324 -1.212L0.216 -1.14ZM2.712 -0.828C2.688 -0.792 2.652 -0.72 2.604 -0.72C2.568 -0.72 2.544 -0.732 2.52 -0.744C2.148 -0.984 2.028 -1.056 1.572 -1.332L1.38 -1.452C1.308 -1.5 1.26 -1.524 1.26 -1.644C1.26 -1.704 1.272 -1.764 1.272 -1.812V-3.936C1.272 -3.996 1.272 -4.68 1.272 -4.68C1.296 -4.776 1.44 -4.812 1.524 -4.836C1.776 -4.944 2.04 -5.04 2.292 -5.148C2.352 -5.172 2.448 -5.232 2.52 -5.232C2.556 -5.232 2.58 -5.22 2.604 -5.196C2.652 -5.112 2.688 -5.004 2.724 -4.908C2.988 -4.212 3.096 -3.312 3.096 -2.4C3.096 -1.824 2.976 -1.164 2.712 -0.828Z"/>
+ <path id="g103" d="M3.504 -6.84C3.444 -6.804 3.192 -6.672 3.156 -6.624C3.072 -6.528 3.132 -6.348 2.928 -6.348C2.832 -6.348 2.724 -6.396 2.64 -6.432C2.832 -6.66 3.072 -6.864 3.276 -7.08C3.324 -7.128 3.528 -7.308 3.528 -7.38C3.528 -7.44 3.468 -7.488 3.432 -7.524C3.312 -7.62 3.168 -7.656 3.024 -7.656C2.832 -7.656 2.688 -7.56 2.568 -7.488C2.304 -7.344 2.016 -7.164 2.016 -6.768C2.016 -6.444 2.256 -6.036 2.64 -6.036C2.856 -6.036 3.048 -6.18 3.24 -6.288C3.384 -6.372 3.552 -6.516 3.552 -6.696C3.552 -6.756 3.516 -6.816 3.504 -6.84ZM2.472 -6.612C2.448 -6.708 2.436 -6.804 2.436 -6.888C2.436 -7.08 2.544 -7.356 2.76 -7.356C2.88 -7.356 3.012 -7.296 3.108 -7.236L2.472 -6.612ZM1.188 -5.808L0.204 -4.548V-4.536L0.384 -4.392H0.396C0.432 -4.44 0.588 -4.668 0.648 -4.668C0.744 -4.668 0.828 -4.488 0.852 -4.452C0.96 -4.248 0.972 -4.032 0.972 -3.804C0.972 -3.768 0.972 -3.72 0.972 -3.684V-1.368C0.972 -1.332 0.972 -1.284 0.972 -1.248C0.972 -0.936 0.744 -0.828 0.492 -0.756V-0.504C0.924 -0.504 1.296 -0.276 1.512 0.024C1.56 0.084 1.584 0.156 1.692 0.156C1.86 0.156 1.98 -0.036 2.088 -0.144L3.12 -1.176C3.24 -0.9 3.384 -0.624 3.516 -0.348C3.564 -0.252 3.648 -0.132 3.648 -0.024C3.648 0 3.636 0.012 3.636 0.036L3.84 0.156L4.776 -1.344L4.56 -1.464C4.524 -1.404 4.38 -1.14 4.332 -1.128C4.296 -1.128 4.272 -1.14 4.248 -1.164C4.056 -1.308 3.936 -1.536 3.936 -1.848C3.936 -1.92 3.936 -1.992 3.936 -2.052V-3.888C3.936 -4.092 3.936 -4.308 3.936 -4.524C3.936 -4.728 3.924 -4.968 4.02 -5.088C4.044 -5.136 4.116 -5.16 4.128 -5.208C4.14 -5.208 4.14 -5.352 4.14 -5.352C3.9 -5.4 3.684 -5.568 3.612 -5.808C3.588 -5.808 3.564 -5.808 3.54 -5.808C3.444 -5.808 3.432 -5.76 3.396 -5.7C3.312 -5.52 3.096 -5.4 2.916 -5.352C2.916 -5.328 2.916 -5.304 2.916 -5.28C2.916 -5.16 3.024 -5.112 3.06 -5.052C3.12 -4.92 3.12 -4.764 3.12 -4.584C3.12 -4.416 3.12 -4.248 3.12 -4.092V-1.932C3.12 -1.848 3.132 -1.764 3.132 -1.68C3.132 -1.488 3.06 -1.464 2.94 -1.344L2.52 -0.924C2.472 -0.876 2.388 -0.756 2.316 -0.756C2.256 -0.756 2.208 -0.816 2.172 -0.84L1.932 -1.056C1.848 -1.116 1.788 -1.164 1.788 -1.308V-3.54C1.788 -4.056 1.776 -4.536 1.608 -5.028C1.536 -5.256 1.332 -5.664 1.188 -5.808Z"/>
+ <path id="g104" d="M3.708 -6.84C3.636 -6.816 3.396 -6.672 3.36 -6.624C3.276 -6.528 3.324 -6.348 3.132 -6.348C3.024 -6.348 2.928 -6.408 2.844 -6.432C3.036 -6.66 3.276 -6.864 3.48 -7.08C3.528 -7.128 3.732 -7.308 3.732 -7.38C3.732 -7.572 3.324 -7.656 3.228 -7.656C3.048 -7.656 2.892 -7.548 2.772 -7.488C2.508 -7.32 2.22 -7.188 2.22 -6.768C2.22 -6.456 2.46 -6.036 2.832 -6.036C3.036 -6.036 3.228 -6.168 3.42 -6.276C3.564 -6.36 3.744 -6.504 3.744 -6.684C3.744 -6.696 3.744 -6.708 3.744 -6.72C3.744 -6.768 3.72 -6.804 3.708 -6.84ZM2.676 -6.612C2.652 -6.708 2.64 -6.804 2.64 -6.888C2.64 -7.092 2.748 -7.344 2.964 -7.344C3.084 -7.344 3.204 -7.296 3.312 -7.236L2.676 -6.612ZM1.944 -5.808L1.62 -5.472C1.356 -5.208 1.092 -4.944 0.888 -4.632C0.456 -3.972 0.204 -3.048 0.204 -2.028C0.204 -1.896 0.216 -1.776 0.228 -1.644C0.312 -0.948 0.78 -0.3 1.356 -0.012L1.164 0.156L1.536 0.144C2.004 -0.192 2.4 -0.588 2.844 -0.936C2.88 -0.732 2.94 -0.528 3.012 -0.336C3.036 -0.3 3.156 -0.048 3.156 -0.024C3.156 0.036 3.084 0.108 3.048 0.156L3.348 0.144C3.6 -0.12 3.84 -0.396 4.056 -0.696L4.068 -1.044C4.044 -1.02 3.996 -0.984 3.948 -0.984C3.816 -0.984 3.696 -1.14 3.648 -1.236C3.624 -1.308 3.624 -1.392 3.624 -1.476V-3.048C3.624 -3.192 3.612 -3.348 3.612 -3.504C3.612 -3.936 3.708 -4.248 3.924 -4.512C3.96 -4.572 4.032 -4.62 4.032 -4.68C4.032 -4.764 3.9 -4.884 3.888 -4.908C3.78 -5.052 3.744 -5.064 3.504 -5.1C3.012 -5.232 2.688 -5.352 2.268 -5.592C2.16 -5.664 2.052 -5.748 1.944 -5.808ZM1.452 -4.968C1.608 -4.896 2.4 -4.416 2.424 -4.404L2.664 -4.26C2.76 -4.212 2.808 -4.164 2.808 -4.032C2.808 -3.996 2.808 -3.96 2.808 -3.936V-1.488C2.808 -1.452 2.808 -1.416 2.808 -1.368C2.808 -1.332 2.808 -1.296 2.796 -1.26C2.736 -1.092 2.304 -0.972 2.124 -0.972C1.644 -0.972 1.284 -1.392 1.164 -1.836C1.092 -2.076 1.08 -2.316 1.08 -2.556C1.08 -2.7 1.092 -2.856 1.092 -3C1.104 -3.552 1.092 -4.14 1.296 -4.668C1.332 -4.776 1.404 -4.872 1.452 -4.968Z"/>
+ <path id="g105" d="M3.96 -6.0048C3.8448 -6.0768 2.6208 -6.8688 2.5344 -6.8688H2.52C2.4192 -6.8688 2.3184 -6.768 2.2464 -6.7104C2.016 -6.5664 1.8 -6.408 1.5696 -6.2496C1.2816 -6.0624 1.0224 -5.8608 0.8208 -5.5872C0.36 -4.9536 0.1584 -4.0896 0.1584 -3.1392C0.1584 -1.7712 0.7632 -0.6768 1.6128 0.0144C1.6848 0.0576 1.7712 0.1584 1.8576 0.1584C1.9728 0.1584 2.232 -0.0576 2.2608 -0.072L3.2256 -0.6912C3.2976 -0.7344 3.5136 -0.9072 3.6 -0.9072C3.6576 -0.9072 3.7008 -0.864 3.744 -0.8352C3.9888 -0.6336 5.0832 0.1728 5.0976 0.1872C5.6304 -0.2448 6.192 -0.648 6.696 -1.0944L6.7104 -1.3968C6.4512 -1.2816 6.3936 -1.0944 5.9904 -1.0944C5.5728 -1.0944 5.4288 -1.5264 5.3712 -1.8432C5.3424 -2.0304 5.328 -2.9088 5.328 -3.024V-3.7152V-4.2336V-4.3632C5.328 -4.5648 5.4432 -4.6224 5.5296 -4.7376L5.8752 -5.1408C5.9184 -5.1984 6.0336 -5.3712 6.1056 -5.3712S6.2352 -5.3136 6.2784 -5.2704L6.7536 -4.8672C7.4592 -4.2624 8.1648 -3.528 8.1648 -2.4336C8.1648 -0.432 6.264 1.2816 5.112 2.4336V2.448L5.328 2.664H5.3424C6.7824 1.224 8.9568 -0.2016 9.3888 -2.3328C9.4464 -2.592 9.4608 -2.8656 9.4608 -3.1248C9.4608 -4.6224 8.28 -5.7168 7.5744 -6.3504C7.5168 -6.408 6.9408 -6.8976 6.9264 -6.8976C6.3936 -6.264 5.8464 -5.6592 5.3424 -4.9968H5.328V-7.272C5.328 -7.488 5.3136 -7.704 5.3136 -7.92C5.3136 -8.1648 5.328 -8.4096 5.3856 -8.6544C5.4864 -9.1296 5.76 -9.7344 6.3792 -9.7344V-10.0512L4.1472 -9.3744L3.6 -9.2016C3.4992 -9.1728 3.3984 -9.1584 3.3984 -9.0144V-8.928C3.3984 -8.8416 3.456 -8.8128 3.5136 -8.784C3.5712 -8.7696 3.6288 -8.7408 3.6864 -8.6976C3.9024 -8.5392 3.96 -8.3664 3.96 -8.0064V-6.0048ZM3.4416 -4.8384L3.9456 -5.5296C3.96 -5.4432 3.9744 -5.3568 3.9744 -5.2704C3.9744 -5.1552 3.96 -5.04 3.96 -4.9248V-2.9376V-2.6784C3.96 -2.2464 3.8016 -1.5696 3.5856 -1.3968C3.4416 -1.2528 2.952 -1.1952 2.7216 -1.1952C2.5056 -1.1952 2.2896 -1.2384 2.1168 -1.3536C1.6128 -1.7136 1.4688 -2.6064 1.4688 -3.384C1.4688 -3.4416 1.4976 -4.3776 1.4688 -4.3776C1.4544 -4.5216 1.368 -5.256 1.368 -5.3136C1.368 -5.5584 1.4256 -5.8608 1.6272 -5.9184C1.6848 -5.9184 1.7424 -5.8896 1.7856 -5.8608L2.1168 -5.6448L2.9664 -5.112C3.1248 -5.0256 3.2688 -4.896 3.4416 -4.8384Z"/>
+ <path id="g106" d="M4.0032 -1.6272C3.5856 -1.4688 3.4416 -1.2816 2.8512 -1.2816C2.5632 -1.2816 2.2896 -1.368 2.0736 -1.584C1.8576 -1.8288 1.7712 -2.0592 1.6848 -2.4336C1.6704 -2.4912 1.5552 -3.1968 1.6272 -3.1968C1.6704 -3.2688 1.7712 -3.312 1.8432 -3.3696C2.016 -3.4848 4.176 -4.8816 4.2768 -4.9392C3.8736 -5.6016 3.4416 -6.2496 3.024 -6.8976C2.8656 -6.84 1.7568 -6.2928 1.3536 -6.0912C1.08 -5.9472 0.7632 -5.8464 0.5616 -5.5872C0.2736 -5.1984 0.216 -4.6512 0.1872 -4.176C0.1728 -3.888 0.144 -3.5712 0.144 -3.2832C0.144 -1.8864 0.5904 -0.936 1.2528 -0.1296C1.3536 -0.0288 1.44 0.1152 1.584 0.1584C1.584 0.1584 1.7424 0.1152 1.7424 0.0864C1.9008 0 3.4704 -0.9504 3.4704 -0.9504L3.8304 -1.1664C3.9312 -1.2384 4.0032 -1.2528 4.0032 -1.4544V-1.6272ZM1.584 -3.5856C1.5696 -3.7728 1.5696 -3.9744 1.5696 -4.1616C1.5696 -4.8672 1.7568 -5.3712 2.1168 -5.7888L2.5776 -5.0688L2.9664 -4.4928L1.584 -3.5856Z"/>
+ <path id="g107" d="M4.1904 -1.3392L4.032 -1.584C3.8736 -1.5408 3.744 -1.44 3.5856 -1.368C3.312 -1.2528 3.0096 -1.1952 2.7072 -1.1952H2.5488C1.5552 -1.296 1.4688 -2.6928 1.4688 -3.7008V-4.1328C1.4832 -4.536 1.3536 -4.9248 1.3536 -5.3424C1.3536 -5.544 1.4256 -5.8464 1.6272 -5.9184C1.6848 -5.9184 1.728 -5.8896 1.7712 -5.8608C1.8576 -5.8032 2.9664 -5.112 2.9664 -5.112C3.024 -5.0832 3.3264 -4.8672 3.384 -4.8672H3.3984C3.4992 -4.8672 3.5712 -5.0112 3.6144 -5.0832C3.8016 -5.3424 4.0176 -5.5872 4.1904 -5.8608C3.7872 -6.0912 3.3984 -6.3504 2.9952 -6.6096L2.6784 -6.7968C2.6352 -6.8256 2.5776 -6.8688 2.52 -6.8688C2.4192 -6.8688 2.304 -6.768 2.232 -6.7104C1.7424 -6.3504 1.1232 -6.0336 0.7776 -5.5584C0.36 -4.9536 0.1584 -4.0608 0.1584 -3.1392C0.1584 -1.8432 0.6768 -0.8352 1.4256 -0.144C1.4832 -0.0864 1.7568 0.1584 1.8576 0.1584C1.9296 0.1584 2.3472 -0.1296 2.4912 -0.216C2.6352 -0.3168 4.1904 -1.2816 4.1904 -1.3392Z"/>
+ <path id="g108" d="M4.248 -6.888C4.116 -7.032 4.02 -7.224 3.9 -7.368C3.504 -7.8 2.988 -8.112 2.268 -8.112C1.224 -8.112 0.204 -7.404 0.204 -6.156C0.204 -5.208 0.696 -4.416 1.38 -4.152C1.812 -3.996 2.616 -4.092 2.616 -3.54C2.616 -3.156 2.412 -2.772 2.04 -2.772C1.788 -2.772 1.536 -2.952 1.404 -3.168C1.344 -3.288 1.308 -3.42 1.308 -3.564C1.236 -3.528 1.068 -3.516 1.068 -3.396C1.068 -3.36 1.08 -3.312 1.08 -3.276C1.2 -2.856 1.56 -2.508 2.052 -2.508C2.604 -2.508 2.892 -3.06 2.892 -3.588C2.892 -3.924 2.796 -4.308 2.664 -4.536C2.472 -4.884 2.208 -5.004 1.8 -5.136C1.296 -5.328 0.48 -5.52 0.48 -6.24C0.48 -6.948 1.224 -7.344 1.884 -7.344C3.792 -7.344 4.02 -4.788 4.02 -3.036C4.02 -2.736 3.996 -1.932 3.948 -1.692C3.876 -1.056 3.66 -0.12 2.796 -0.12C2.436 -0.12 2.064 -0.336 2.064 -0.768C2.064 -0.828 2.076 -0.888 2.088 -0.936C2.112 -0.936 2.136 -1.08 2.136 -1.08C2.136 -1.14 2.04 -1.236 1.968 -1.236C1.872 -1.236 1.776 -1.176 1.692 -1.152C1.62 -1.128 1.536 -1.128 1.464 -1.128C1.344 -1.128 1.224 -1.152 1.092 -1.176C1.08 -1.14 1.068 -1.116 1.068 -1.08C1.068 -0.996 1.116 -0.9 1.128 -0.816C1.14 -0.816 1.14 -0.384 1.14 -0.384C1.116 -0.384 1.092 -0.132 1.092 -0.132C1.092 -0.072 1.176 0.048 1.26 0.048C1.32 0.048 1.38 -0.024 1.428 -0.048C1.5 -0.084 1.572 -0.108 1.644 -0.108C1.68 -0.108 1.716 -0.096 1.752 -0.096C2.112 -0.036 2.376 0.156 2.796 0.156C3.252 0.156 3.708 -0.048 4.02 -0.348C4.692 -1.008 4.956 -1.956 5.004 -2.868C5.004 -2.868 5.004 -3.588 4.992 -3.588C4.968 -4.536 4.812 -5.388 4.56 -6.18L4.452 -6.456C4.428 -6.516 4.392 -6.564 4.38 -6.624C4.38 -6.732 4.428 -6.864 4.464 -6.96C4.608 -7.344 4.932 -7.8 5.472 -7.8C5.844 -7.8 6.108 -7.524 6.276 -7.2C6.552 -6.648 6.576 -5.94 7.032 -5.484C7.152 -5.364 7.308 -5.232 7.476 -5.184V-5.172C6.984 -5.064 6.468 -4.92 6.108 -4.548C5.76 -4.176 5.712 -3.648 5.712 -3.06C5.712 -2.016 6.012 -0.936 6.396 -0.204C6.444 -0.12 6.492 -0.048 6.528 0.036C6.576 0.108 6.588 0.156 6.72 0.156C6.744 0.156 6.864 0.168 6.864 0.144C6.936 0.108 6.996 -0.036 7.044 -0.108L7.632 -1.044C7.656 -1.08 7.824 -1.356 7.824 -1.38C7.824 -1.488 7.68 -1.524 7.62 -1.548C7.56 -1.476 7.488 -1.368 7.368 -1.368C7.236 -1.368 7.116 -1.512 7.056 -1.632C6.84 -1.98 6.78 -2.412 6.744 -2.808C6.732 -2.988 6.744 -3.156 6.732 -3.336C6.72 -3.492 6.708 -3.648 6.708 -3.816C6.708 -4.032 6.732 -4.248 6.852 -4.428C7.068 -4.764 7.476 -4.896 7.884 -5.004C7.968 -5.028 8.028 -5.04 8.028 -5.16V-6.048C7.752 -6.06 7.644 -6.3 7.56 -6.528L7.38 -7.044C7.14 -7.656 6.78 -8.388 6.048 -8.46C5.976 -8.46 5.652 -8.472 5.652 -8.436C5.496 -8.4 5.352 -8.352 5.22 -8.28C4.776 -8.052 4.32 -7.44 4.248 -6.888Z"/>
+ <path id="g109" d="M4.512 -6.012L4.632 -6.252C4.248 -6.468 3.804 -6.696 3.36 -6.696C3.312 -6.696 3.276 -6.684 3.228 -6.684C2.52 -6.624 2.136 -5.868 2.136 -5.148C2.136 -5.088 2.136 -5.04 2.148 -4.98C2.232 -4.392 2.748 -4.044 3.228 -3.768C3.24 -3.756 3.732 -3.48 3.732 -3.54C3.828 -3.552 3.936 -3.624 4.032 -3.66L4.608 -3.924C5.136 -4.14 5.64 -4.464 6.348 -4.464C7.188 -4.464 8.1 -3.972 8.1 -3C8.1 -2.568 7.932 -2.136 7.656 -1.824C7.14 -1.2 6.312 -0.84 5.328 -0.84C4.236 -0.84 3.156 -1.308 2.4 -2.064C1.656 -2.808 1.188 -3.888 1.188 -4.944C1.188 -5.892 1.608 -6.792 2.268 -7.296C2.496 -7.476 2.784 -7.668 3.108 -7.668C3.468 -7.668 3.816 -7.476 4.116 -7.32L5.208 -6.756C5.544 -6.6 5.988 -6.372 6.3 -6.204C6.384 -6.156 6.504 -6.072 6.612 -6.072C6.684 -6.072 7.668 -6.516 8.04 -6.696C8.196 -6.756 8.364 -6.816 8.484 -6.936C8.736 -7.176 8.808 -7.548 8.808 -7.884L8.448 -7.74C8.448 -7.56 8.436 -7.368 8.34 -7.212C8.22 -7.032 7.992 -6.96 7.728 -6.96C7.296 -6.96 6.852 -7.236 6.576 -7.392L5.232 -8.076C5.076 -8.148 4.92 -8.22 4.776 -8.304C4.692 -8.34 4.548 -8.448 4.44 -8.448C4.356 -8.448 4.248 -8.412 4.164 -8.388C3.516 -8.196 2.844 -7.968 2.304 -7.668C1.176 -7.032 0.204 -5.832 0.204 -4.164C0.204 -3.444 0.396 -2.82 0.648 -2.34C1.356 -0.984 2.772 -0.108 4.26 0.096C4.5 0.132 4.752 0.156 4.992 0.156C5.496 0.156 6 0.072 6.468 -0.144C7.488 -0.612 8.364 -1.644 8.364 -3.012C8.364 -3.3 8.328 -3.6 8.232 -3.876C7.92 -4.764 7.212 -5.424 6.444 -5.88C6.432 -5.892 6.084 -6.096 6.084 -6.048C6.012 -6.036 5.412 -5.76 5.412 -5.76L3.936 -5.1C3.756 -5.028 3.612 -4.944 3.396 -4.944C3.024 -4.944 2.7 -5.268 2.7 -5.688C2.7 -6.096 2.952 -6.444 3.384 -6.444C3.804 -6.444 4.152 -6.168 4.512 -6.012Z"/>
+ <path id="g110" d="M4.6224 0.1872L5.4144 -0.6048C5.4576 -0.648 5.6736 -0.8352 5.6736 -0.9072S5.4864 -1.1664 5.472 -1.1808C5.04 -1.6848 4.5504 -2.3472 4.5504 -3.2256C4.5504 -3.5424 4.5792 -4.0608 4.6656 -4.248C4.7376 -4.392 5.6304 -5.4144 5.7024 -5.5296C5.2272 -5.8464 4.7808 -6.192 4.32 -6.5232L3.9744 -6.7824C3.9312 -6.8112 3.8592 -6.8688 3.8016 -6.8688C3.7152 -6.8688 3.4272 -6.6384 3.4272 -6.6384L2.4912 -5.976C1.4112 -5.2272 0.2592 -4.2192 0.1584 -2.808C0.1584 -2.808 0.1728 -2.1168 0.2016 -2.1168C0.2592 -1.8432 0.3312 -1.5696 0.4608 -1.3248C0.7632 -0.7056 1.2528 -0.1872 1.8864 0.1296C1.8864 0.1296 2.0592 0.1872 2.0592 0.144C2.1888 0.072 2.2896 -0.072 2.3904 -0.1728L3.0528 -0.8352C3.096 -0.8784 3.3552 -1.1664 3.4272 -1.1664C3.4704 -1.1664 3.4992 -1.1232 3.528 -1.0944C3.7296 -0.8496 4.5792 0.1872 4.6224 0.1872ZM4.4208 -4.5504C4.3344 -4.3344 3.7728 -2.3904 3.7008 -2.16C3.6432 -1.8 3.4848 -1.728 3.2544 -1.4976L2.8656 -1.1088C2.808 -1.0512 2.7504 -0.9792 2.6784 -0.9504C2.5776 -0.9504 2.3904 -1.0944 2.3472 -1.1232C1.7568 -1.5696 1.2528 -2.3184 1.2528 -3.2544C1.2528 -4.3056 1.9296 -5.0976 2.5056 -5.5584C2.5632 -5.6016 2.6496 -5.7024 2.736 -5.7024C2.7936 -5.7024 2.8512 -5.6448 2.8944 -5.616L3.2112 -5.3856C3.4704 -5.2128 3.7296 -5.0256 3.9888 -4.8384C4.1328 -4.7376 4.2624 -4.6224 4.4208 -4.5504Z"/>
+ <path id="g111" d="M4.6368 -5.832C4.392 -6.0048 4.1328 -6.1632 3.888 -6.3216C3.5856 -6.5232 3.312 -6.6384 3.312 -7.1136H3.2976C3.168 -6.8544 3.0096 -6.6096 2.808 -6.408C2.2752 -5.8896 1.4832 -5.7312 0.7632 -5.7312C0.7488 -5.112 0.792 -4.4352 0.7488 -3.8448C0.5472 -3.6 0.3456 -3.3696 0.1296 -3.1392V-3.1248L1.2096 -2.0592V-2.0448C0.9936 -1.872 0.8064 -1.6272 0.6192 -1.4112C0.1584 -0.9072 -0.4464 -0.288 -0.4464 0.4176C-0.4464 0.5472 -0.432 0.6768 -0.3888 0.8064L0.1296 0.3024V0.288C0.0576 0.216 0 0.1152 0 -0.0144C0 -0.216 0.144 -0.3888 0.2592 -0.5328C0.3024 -0.6048 0.4032 -0.7488 0.4896 -0.7488H0.504C0.5472 -0.7488 0.7488 -0.576 0.8208 -0.5184L1.5264 0.072C1.5984 0.144 1.7136 0.2736 1.8144 0.2736C1.9008 0.2736 2.5056 -0.1008 2.7216 -0.216C3.2256 -0.5184 4.824 -1.4256 5.0976 -1.5984L4.9104 -1.8576C4.896 -2.1168 4.896 -2.3904 4.896 -2.664C4.9968 -2.7072 5.0544 -2.8512 5.0976 -2.952C5.2416 -3.1968 5.4144 -3.4416 5.5296 -3.7008L4.0176 -4.68C4.2912 -4.9968 4.5936 -5.3136 4.8816 -5.6304C5.2416 -6.048 5.3856 -6.2064 5.3856 -6.9696V-7.1136C5.3856 -7.3008 5.3136 -7.4448 5.1264 -7.4448C5.0112 -7.4448 4.896 -7.3296 4.896 -7.2144C4.9248 -6.984 5.04 -6.7536 5.04 -6.5088C5.0256 -6.2064 4.7808 -6.0624 4.6368 -5.832ZM2.0304 -2.952L1.8432 -3.1248H1.9728V-5.5872L2.4912 -5.76L2.6352 -5.688C3.0096 -5.4288 3.4128 -5.184 3.8016 -4.9392L3.312 -4.392L2.0304 -2.952ZM1.3536 -1.6992C1.3536 -1.7568 1.4256 -1.8144 1.4544 -1.8576C1.5696 -1.9728 2.7504 -3.2832 2.7504 -3.2832L3.024 -3.5856C3.0672 -3.6288 3.1248 -3.744 3.1968 -3.744C3.2544 -3.744 3.312 -3.7008 3.3408 -3.672C3.456 -3.6 3.672 -3.5136 3.6864 -3.3552V-1.3248V-1.2672C3.6864 -1.2096 3.6864 -1.1664 3.6432 -1.1376C3.5856 -1.08 2.7504 -0.5904 2.664 -0.5904C2.5632 -0.5904 2.448 -0.7488 2.4048 -0.7776L1.9008 -1.1952C1.7568 -1.3248 1.6272 -1.44 1.4832 -1.5552C1.44 -1.584 1.3536 -1.6416 1.3536 -1.6992Z"/>
+ <path id="g112" d="M4.8528 -6.8976C4.752 -6.7824 4.2624 -6.1056 4.176 -6.048C4.1184 -6.0192 4.0464 -6.0192 3.9888 -6.0192H2.3616C2.1312 -6.0192 2.1312 -6.0768 2.0016 -6.2352L1.6704 -6.6672C1.6272 -6.7248 1.5552 -6.8544 1.4832 -6.8544C1.4256 -6.8544 1.3824 -6.7824 1.3536 -6.7392C1.296 -6.6528 1.008 -6.2928 0.936 -6.192C0.8496 -6.1056 0.7776 -6.0048 0.7776 -5.8464C0.7776 -5.7744 0.792 -5.7024 0.792 -5.6304V-2.0016V-1.8144C0.792 -1.7568 0.792 -1.6992 0.8064 -1.6416C0.8208 -1.5696 1.0224 -1.2096 1.0944 -1.08C1.2816 -0.72 1.4544 -0.36 1.656 -0.0144C1.8864 -0.1152 2.1168 -0.2448 2.3328 -0.3744C2.4624 -0.432 4.1184 -1.3248 4.1616 -1.3248C4.248 -1.296 4.3344 -1.152 4.3776 -1.08C4.7088 -0.6336 4.968 0 4.968 0.72C4.968 1.5984 4.032 2.0448 3.3552 2.0448C2.6208 2.0448 2.088 1.6272 1.5984 1.1952C1.4832 1.0944 1.0512 0.6912 0.936 0.648C0.6912 0.9792 0.4176 1.2672 0.1584 1.584C0.0432 1.728 -0.1296 1.8144 -0.1296 2.0736C-0.1296 2.3184 0.0576 2.3184 0.2448 2.4048C0.9072 2.6784 1.7136 2.88 2.6064 2.88C2.7648 2.88 2.9088 2.8656 3.0528 2.8368C3.7728 2.6784 4.392 2.2032 4.9104 1.6992C5.472 1.152 6.12 0.4176 6.12 -0.6048C6.12 -1.1088 5.9472 -1.5264 5.7168 -1.8576C5.6448 -1.9728 5.544 -2.0304 5.544 -2.2176V-2.4048V-4.6512C5.7744 -4.6512 6.0192 -4.6368 6.2208 -4.68L6.2928 -4.7952C6.408 -5.2128 6.552 -5.616 6.6816 -6.0192C6.2928 -6.0192 5.8896 -6.0048 5.544 -6.048C5.2992 -6.3072 5.0832 -6.6096 4.8528 -6.8976ZM2.16 -4.6512H4.176V-1.9872V-1.8864C4.176 -1.6992 4.104 -1.656 3.9456 -1.5984C3.7728 -1.4976 3.6144 -1.4112 3.4416 -1.3248L2.808 -0.9936C2.7648 -0.9648 2.6784 -0.8928 2.6208 -0.8928C2.5056 -0.8928 2.4624 -1.08 2.4336 -1.1376C2.3328 -1.3248 2.16 -1.5696 2.16 -1.8432V-4.6512Z"/>
+ <path id="g113" d="M4.896 -8.2944C4.8096 -8.2512 4.4352 -8.0496 4.3776 -7.992C4.2912 -7.9056 4.3344 -7.7472 4.1472 -7.7472C4.0608 -7.7472 3.96 -7.8192 3.8736 -7.848C4.0176 -7.992 4.9248 -8.8704 4.9392 -8.9568C4.9392 -9.1728 4.4928 -9.3024 4.3488 -9.3024C4.0896 -9.3024 3.8736 -9.1584 3.7008 -9.0432C3.3552 -8.856 2.9952 -8.6688 2.9952 -8.1648C2.9952 -7.9488 3.0672 -7.8336 3.1536 -7.6896C3.2688 -7.488 3.456 -7.2864 3.7584 -7.2864C4.0464 -7.2864 4.2912 -7.4736 4.536 -7.6176C4.7088 -7.7184 4.9536 -7.8912 4.9536 -8.1216V-8.136C4.9536 -8.1936 4.9248 -8.2512 4.896 -8.2944ZM3.6576 -8.0928C3.6432 -8.1936 3.6288 -8.2944 3.6288 -8.3808C3.6288 -8.5824 3.7152 -8.8416 3.9312 -8.8416C4.0608 -8.8416 4.1904 -8.784 4.2912 -8.7264L3.6576 -8.0928ZM0.1584 -5.6016C0.2592 -5.6448 0.3456 -5.688 0.4608 -5.7024C0.6768 -5.7024 0.9072 -5.5584 0.9792 -5.3424C1.008 -5.256 1.008 -5.1552 1.008 -5.0544V-1.872V-1.728C1.008 -1.5552 0.9504 -1.5264 0.8352 -1.44C0.72 -1.368 0.5904 -1.2816 0.4896 -1.1952C1.0944 -0.7632 1.6272 -0.2448 2.2608 0.1584L2.448 0.072L4.4784 -1.3536C4.4784 -0.8928 4.6368 -0.4608 4.9392 -0.1152C4.9968 -0.0432 5.1984 0.1584 5.3136 0.1584C5.3568 0.144 5.4 0.1152 5.4288 0.0864L5.6304 -0.1152C5.7168 -0.1872 6.4224 -0.8064 6.4224 -0.864C6.0192 -1.2816 5.832 -1.7568 5.832 -2.4912C5.832 -2.7072 5.8464 -2.9232 5.8464 -3.1392V-6.8976C5.5152 -6.768 5.1984 -6.6096 4.8672 -6.4656L4.6224 -6.3648C4.5216 -6.2928 4.464 -6.2928 4.464 -6.1344C4.464 -6.0768 4.4784 -6.0192 4.4784 -5.976V-2.088C4.4784 -2.0304 4.4928 -1.9584 4.4928 -1.9008C4.4928 -1.7136 4.3632 -1.656 4.2336 -1.584L3.7008 -1.2096C3.6288 -1.1664 3.528 -1.0512 3.4416 -1.0512S3.2544 -1.1808 3.1824 -1.2384L2.6208 -1.6704C2.4912 -1.7712 2.3616 -1.8144 2.3616 -2.0448C2.3616 -2.1168 2.376 -2.1888 2.376 -2.2464V-4.5504V-4.968C2.376 -5.1696 2.376 -5.3712 2.3472 -5.5728C2.2752 -6.0048 2.088 -6.4368 1.7856 -6.768C1.7568 -6.8112 1.7136 -6.8688 1.656 -6.8688S1.3248 -6.6816 1.224 -6.624L0.4896 -6.1344C0.3456 -6.048 0.144 -5.9904 0.144 -5.76C0.144 -5.7024 0.1584 -5.6448 0.1584 -5.6016Z"/>
+ <path id="g114" d="M5.22 -7.788C5.004 -7.944 4.824 -8.076 4.476 -8.076C4.08 -8.076 3.684 -7.836 3.54 -7.512C3.18 -7.896 2.82 -8.352 2.268 -8.436C2.268 -8.436 2.052 -8.46 2.052 -8.46S1.8 -8.448 1.8 -8.436C0.816 -8.292 0.204 -7.32 0.204 -6.372C0.204 -5.748 0.456 -5.184 0.888 -4.98C1.056 -4.908 1.224 -4.92 1.392 -4.884C1.596 -4.836 1.812 -4.632 1.812 -4.38C1.812 -4.104 1.62 -3.768 1.296 -3.768C1.044 -3.768 0.828 -3.924 0.696 -4.056C0.672 -4.092 0.6 -4.2 0.54 -4.2S0.36 -4.128 0.36 -4.068C0.36 -4.032 0.384 -4.008 0.396 -3.984C0.6 -3.72 0.936 -3.492 1.356 -3.492C1.992 -3.588 2.256 -4.128 2.256 -4.764C2.256 -4.788 2.256 -4.824 2.256 -4.848C2.232 -5.28 1.98 -5.76 1.548 -5.904C1.392 -5.952 1.236 -5.94 1.08 -5.964C0.804 -6.012 0.528 -6.18 0.456 -6.468C0.444 -6.468 0.444 -6.792 0.456 -6.792C0.516 -7.2 0.732 -7.74 1.272 -7.74C1.92 -7.74 2.352 -7.116 2.616 -6.792C2.76 -6.624 2.904 -6.456 3.012 -6.264C3.324 -5.7 3.348 -5.028 3.348 -4.392C3.348 -4.272 3.348 -4.152 3.348 -4.02C3.348 -3.288 3.084 -2.76 2.748 -2.352C2.688 -2.292 2.556 -2.112 2.46 -2.112C2.412 -2.112 2.376 -2.136 2.328 -2.148C2.244 -2.172 2.16 -2.184 2.076 -2.184C1.26 -2.184 0.588 -1.56 0.588 -0.804C0.588 -0.396 0.768 -0.144 0.984 0.084H0.996L1.176 -0.096V-0.108C0.996 -0.276 0.84 -0.468 0.84 -0.768C0.84 -1.056 1.032 -1.368 1.344 -1.368C1.344 -1.368 1.356 -1.368 1.356 -1.368C2.232 -1.308 2.76 -0.444 3.36 0C3.42 0.048 3.516 0.132 3.6 0.132C3.636 0.132 3.672 0.108 3.708 0.084L3.972 -0.132C4.332 -0.444 4.752 -0.696 5.088 -1.032L5.556 -0.708L6.348 -0.18C6.42 -0.132 6.78 0.132 6.852 0.132C6.864 0.132 6.864 0.132 6.876 0.132C6.948 0.132 7.044 0.072 7.116 0.036C7.572 -0.192 8.256 -0.504 8.604 -0.804C9.06 -1.212 9.348 -1.788 9.444 -2.388C9.468 -2.532 9.492 -2.688 9.492 -2.844C9.492 -2.88 9.492 -2.904 9.492 -2.94C9.432 -3.504 8.88 -3.756 8.496 -4.092C8.304 -4.26 8.124 -4.476 8.088 -4.74C8.088 -4.824 8.088 -4.908 8.1 -4.992C8.16 -5.256 8.292 -5.496 8.472 -5.64L8.556 -5.472C8.64 -5.52 8.7 -5.592 8.76 -5.664L9.132 -6.06C9.192 -6.132 9.3 -6.204 9.3 -6.3C9.3 -6.3 9.3 -6.312 9.3 -6.312L9.492 -6.432L9.36 -6.672C9.312 -6.648 9.24 -6.576 9.192 -6.576C9.132 -6.576 9.096 -6.66 9.084 -6.696L8.904 -6.996C8.532 -7.608 7.992 -8.46 7.056 -8.46C6.384 -8.46 5.988 -8.052 5.652 -7.692C5.736 -8.016 5.832 -8.328 5.94 -8.628C5.904 -8.628 5.856 -8.64 5.808 -8.64C5.628 -8.64 5.604 -8.52 5.532 -8.4C5.412 -8.208 5.292 -8.004 5.22 -7.788ZM2.772 -1.932C3.144 -2.124 3.468 -2.376 3.828 -2.58L4.104 -2.748C4.188 -2.808 4.248 -2.844 4.248 -2.988C4.248 -3.036 4.248 -3.084 4.248 -3.12C4.248 -3.324 4.272 -3.516 4.272 -3.72C4.284 -3.984 4.308 -4.236 4.32 -4.5C4.332 -4.5 4.332 -5.004 4.332 -5.004S4.32 -5.94 4.26 -5.94C4.188 -6.384 4.044 -6.792 3.828 -7.14C3.792 -7.188 3.732 -7.248 3.732 -7.32C3.732 -7.404 3.816 -7.476 3.864 -7.536C4.032 -7.704 4.26 -7.812 4.488 -7.812C4.596 -7.812 4.704 -7.788 4.812 -7.74C4.896 -7.692 5.088 -7.608 5.088 -7.488C5.088 -7.44 5.064 -7.392 5.04 -7.344C4.86 -6.804 4.752 -6.264 4.752 -5.568C4.752 -5.508 4.752 -5.46 4.752 -5.412C4.86 -4.536 5.616 -3.888 5.7 -3C5.7 -3 5.676 -2.496 5.652 -2.496C5.568 -2.04 5.34 -1.632 5.004 -1.308C4.824 -1.128 4.584 -0.96 4.308 -0.96C3.948 -0.96 3.648 -1.224 3.432 -1.392L2.772 -1.932ZM5.82 -1.872C6.108 -2.34 6.312 -2.844 6.504 -3.36C6.528 -3.432 6.672 -3.816 6.672 -3.9C6.672 -3.996 6.516 -4.188 6.504 -4.212L6.18 -4.74C5.832 -5.316 5.532 -5.94 5.532 -6.684C5.532 -6.78 5.544 -6.876 5.556 -6.972C5.556 -7.044 5.556 -7.116 5.592 -7.188C5.772 -7.5 6.048 -7.932 6.456 -7.932C7.236 -7.932 7.68 -7.176 7.932 -6.708L8.22 -6.12C8.256 -6.06 8.316 -5.976 8.316 -5.916C8.316 -5.832 8.184 -5.772 8.16 -5.748C7.764 -5.352 7.32 -4.824 7.32 -4.14C7.32 -3.732 7.512 -3.528 7.764 -3.312C8.148 -3 8.868 -2.7 8.868 -2.04C8.868 -1.5 8.532 -1.092 8.22 -0.852C8.148 -0.804 7.86 -0.6 7.764 -0.6C7.752 -0.6 7.752 -0.6 7.74 -0.6C7.68 -0.612 7.32 -0.864 7.2 -0.948L6.264 -1.584C6.12 -1.68 5.976 -1.788 5.82 -1.872Z"/>
+ <path id="g115" d="M5.4288 -10.0512L5.328 -9.7056L6.048 -9.504C6.0192 -9.3168 5.9472 -9.1296 5.8752 -8.9424C5.1696 -6.984 3.312 -5.7024 1.728 -4.752C1.3824 -4.5504 0.4896 -4.0464 0.1584 -3.888C0.4176 -3.4128 0.7776 -2.7936 1.0368 -2.3616C1.0512 -2.3184 1.08 -2.2608 1.1376 -2.232C1.152 -2.232 1.2672 -2.2176 1.2672 -2.2464C2.7072 -2.7216 4.3632 -3.3264 6.0768 -3.3264C6.4944 -3.3264 6.768 -3.2256 7.0272 -2.9952C7.5024 -2.592 7.6896 -1.9872 7.6896 -1.3824C7.6896 -1.2528 7.6752 -1.1088 7.6608 -0.9648C7.4736 0.216 6.6384 1.296 5.4432 1.584C5.2416 1.6272 5.0256 1.656 4.824 1.656C4.3776 1.6416 3.7728 1.368 3.7728 0.8064C3.7872 0.6192 3.888 0.4752 4.0176 0.3456C4.248 0.1152 4.5936 -0.0864 4.5936 -0.4464C4.5936 -0.4752 4.5792 -0.5184 4.5792 -0.5472C4.5792 -0.6192 4.5504 -0.6912 4.5216 -0.7632C4.3776 -1.0512 4.0752 -1.224 3.7728 -1.224C3.1248 -1.224 2.8368 -0.5616 2.8368 0C2.8368 0.144 2.8512 0.2736 2.88 0.4032C3.1104 1.5408 4.392 2.2464 5.7168 2.2464C6.1488 2.2464 6.5664 2.1744 6.9696 2.0448C8.1648 1.6272 9.1152 0.6048 9.4032 -0.6336C9.4752 -0.9072 9.504 -1.2096 9.504 -1.4976C9.504 -2.7792 8.928 -3.816 8.2656 -4.4784C8.1792 -4.5648 7.8048 -4.9392 7.6752 -4.9392C7.5312 -4.9392 7.2432 -4.7952 7.1856 -4.7664L6.192 -4.4064L3.9168 -3.5568C3.4992 -3.3984 3.0816 -3.2112 2.6496 -3.0816C2.4048 -3.5568 2.1312 -3.9888 1.8864 -4.4496C2.3184 -4.536 3.1968 -4.9248 3.4704 -5.0256C5.328 -5.832 7.0416 -6.9696 8.1936 -8.5968C8.3232 -8.7696 8.4672 -8.9568 8.5536 -9.1584L5.4288 -10.0512Z"/>
+ <path id="g116" d="M5.916 -1.38C5.424 -1.104 5.076 -0.876 4.296 -0.876C3.984 -0.876 3.66 -0.924 3.384 -1.008C2.268 -1.344 1.428 -2.292 1.14 -3.408C1.056 -3.72 1.032 -4.044 1.032 -4.356C1.032 -4.716 1.068 -5.328 1.104 -5.604L1.176 -6.048C1.32 -6.78 1.62 -7.68 2.376 -7.992C2.472 -8.028 2.568 -8.052 2.664 -8.076C2.676 -8.076 3.096 -8.124 3.096 -8.1C3.276 -8.076 3.444 -8.016 3.6 -7.944C3.696 -7.896 3.768 -7.836 3.864 -7.788V-7.764C3.672 -7.692 3.264 -7.428 3.144 -7.356C2.772 -7.08 2.292 -6.708 2.292 -6.096C2.292 -5.604 2.676 -5.244 2.976 -4.884C3.168 -4.668 3.324 -4.404 3.336 -4.104C3.336 -3.816 3.168 -3.456 2.856 -3.456C2.844 -3.456 2.832 -3.456 2.82 -3.456C2.712 -3.456 2.592 -3.528 2.532 -3.588C2.256 -3.828 2.22 -4.248 2.1 -4.572L1.848 -4.5C1.872 -4.368 1.92 -4.248 1.968 -4.128C2.172 -3.66 2.496 -3.084 3.156 -3.084C3.756 -3.084 4.188 -3.576 4.188 -4.188C4.188 -4.392 4.14 -4.596 4.056 -4.788C4.02 -4.836 3.888 -5.064 3.888 -5.124C3.888 -5.208 4.056 -5.268 4.116 -5.268C4.116 -5.268 4.128 -5.268 4.128 -5.268C4.164 -5.268 4.308 -5.124 4.356 -5.076L4.86 -4.596C4.908 -4.548 5.004 -4.428 5.076 -4.428C5.136 -4.428 5.184 -4.512 5.22 -4.548L5.592 -4.944C5.652 -5.016 5.724 -5.1 5.796 -5.172C5.832 -5.208 5.88 -5.244 5.88 -5.292C5.88 -5.292 5.88 -5.304 5.88 -5.304C5.88 -5.376 5.784 -5.448 5.736 -5.496L5.268 -6C5.22 -6.06 5.148 -6.168 5.064 -6.168C5.064 -6.168 5.052 -6.168 5.052 -6.168C5.004 -6.168 4.74 -6 4.74 -6C4.668 -5.964 3.756 -5.4 3.732 -5.388C3.696 -5.388 3.672 -5.436 3.648 -5.46C3.444 -5.748 3.156 -6.228 3.156 -6.6C3.156 -7.08 3.528 -7.308 3.828 -7.476C3.888 -7.5 3.984 -7.584 4.068 -7.584C4.164 -7.584 4.284 -7.452 4.32 -7.428L4.716 -7.128C4.788 -7.08 4.884 -6.972 4.968 -6.972C5.004 -6.972 5.04 -6.984 5.076 -7.008C5.136 -7.044 5.688 -7.356 5.904 -7.452V-7.476L5.112 -8.076C5.064 -8.124 4.884 -8.268 4.8 -8.268C4.74 -8.268 4.68 -8.22 4.632 -8.196C4.56 -8.16 4.188 -7.932 4.116 -7.932S3.972 -8.004 3.912 -8.052C3.636 -8.256 3.348 -8.46 2.88 -8.46C2.604 -8.46 2.316 -8.388 2.076 -8.28C1.26 -7.908 0.804 -7.092 0.528 -6.276C0.336 -5.676 0.24 -5.04 0.216 -4.416C0.204 -4.416 0.204 -3.624 0.216 -3.624C0.372 -1.896 1.44 -0.24 3.108 0.096C3.156 0.108 3.756 0.192 3.756 0.144C3.888 0.12 4.02 0.012 4.14 -0.06L4.884 -0.504L5.616 -0.936C5.748 -1.008 5.928 -1.044 5.928 -1.248C5.928 -1.296 5.916 -1.344 5.916 -1.38Z"/>
+ <path id="g117" d="M6.168 -8.46C6.168 -8.448 6.168 -8.448 6.168 -8.436C6.168 -8.376 6.12 -8.352 6.072 -8.316L5.736 -8.1L4.656 -7.404C4.536 -7.296 4.368 -7.248 4.272 -7.116V-1.824C4.272 -1.788 4.272 -1.752 4.272 -1.716C4.272 -1.596 4.188 -1.584 4.104 -1.548C3.948 -1.476 3.804 -1.392 3.648 -1.32L3 -1.008C2.964 -0.996 2.76 -0.888 2.724 -0.888C2.688 -0.9 2.652 -0.936 2.628 -0.96C2.568 -1.02 1.752 -1.908 1.752 -1.908C2.784 -2.244 3.84 -3.036 3.84 -4.416C3.84 -4.512 3.84 -4.608 3.84 -4.716C3.852 -4.716 3.864 -5.46 3.864 -5.46S3.852 -5.94 3.84 -5.94C3.804 -6.312 3.708 -6.696 3.504 -7.02C3.204 -7.476 2.664 -7.872 2.04 -7.872C1.044 -7.872 0.204 -7.128 0.204 -6.24C0.204 -5.784 0.36 -5.4 0.624 -5.196C1.044 -4.86 1.884 -5.112 1.884 -4.38C1.884 -4.068 1.728 -3.732 1.44 -3.732C1.224 -3.732 0.984 -3.924 0.744 -3.924C0.552 -3.924 0.372 -3.78 0.372 -3.552C0.372 -3.204 0.804 -3.048 1.152 -3.048C1.176 -3.048 1.2 -3.048 1.224 -3.048C1.884 -3.156 2.148 -3.78 2.148 -4.44C2.148 -4.956 2.028 -5.388 1.74 -5.628C1.536 -5.808 1.224 -5.784 0.984 -5.82C0.756 -5.844 0.528 -5.964 0.528 -6.252C0.528 -6.78 1.044 -7.128 1.452 -7.128C1.608 -7.128 1.764 -7.08 1.884 -7.032C2.76 -6.636 2.952 -5.592 2.952 -4.584C2.952 -4.5 2.952 -4.428 2.952 -4.344C2.952 -4.152 2.952 -3.96 2.904 -3.768C2.724 -3 2.208 -2.316 1.452 -2.052C1.056 -1.92 0.624 -1.908 0.204 -1.908C0.204 -1.86 0.192 -1.8 0.192 -1.752C0.192 -1.572 0.336 -1.5 0.444 -1.416L0.732 -1.14C0.9 -0.996 1.068 -0.852 1.068 -0.576C1.068 -0.48 1.056 -0.384 1.032 -0.3C1.02 -0.228 0.972 -0.132 0.972 -0.06C0.972 -0.024 0.984 0 1.008 0.024C1.068 0.06 1.152 0.132 1.224 0.144C1.296 0.144 2.1 -0.264 2.328 -0.384L4.284 -1.332C4.32 -1.224 4.38 -1.128 4.428 -1.032C4.5 -0.888 4.704 -0.54 4.74 -0.396C4.752 -0.396 4.752 -0.288 4.752 -0.288S4.752 -0.18 4.74 -0.18C4.716 -0.18 4.668 -0.036 4.68 -0.036C4.68 0.036 4.764 0.108 4.812 0.156H4.824L6.06 -0.84L6.408 -1.128C6.456 -1.164 6.564 -1.224 6.564 -1.284C6.564 -1.356 6.468 -1.452 6.432 -1.488C6.276 -1.416 6.168 -1.32 5.964 -1.32C5.616 -1.32 5.352 -1.56 5.352 -1.956C5.352 -2.04 5.352 -2.112 5.352 -2.196V-6.756C5.352 -6.84 5.352 -6.936 5.352 -7.02C5.352 -7.656 5.772 -7.764 6.156 -8.052C6.168 -7.968 6.24 -7.92 6.312 -7.92C6.42 -7.92 6.528 -8.016 6.528 -8.136C6.528 -8.316 6.36 -8.46 6.168 -8.46Z"/>
+ <path id="g118" d="M7.5168 -10.0512L5.5296 -7.9344V-10.0512C5.4 -10.008 5.2704 -9.936 5.1408 -9.8784L4.4784 -9.5616C3.6864 -9.2016 2.9088 -8.8416 2.2032 -8.3232C1.1376 -7.56 0.1584 -6.4656 0.1584 -4.8816C0.1584 -4.5648 0.1872 -4.2336 0.2448 -3.9312C0.5328 -2.4048 1.4976 -0.9936 2.9088 -0.288C3.4848 -0.0288 4.1472 0.2016 4.9248 0.2016C5.2272 0.2016 5.4576 0.144 5.7312 0.0864C6.7536 -0.216 7.5456 -1.0224 8.2368 -1.8C8.9136 -2.592 9.7776 -3.4992 10.0512 -4.536C10.1232 -4.7808 10.1664 -5.04 10.1664 -5.2992C10.1664 -5.3712 10.1664 -5.4576 10.152 -5.5296C10.0656 -6.0768 9.7488 -6.5808 9.4608 -7.0416C9.1728 -7.5168 8.8704 -7.9632 8.5392 -8.4096C8.1648 -8.9424 7.776 -9.4464 7.5168 -10.0512ZM3.8448 -8.8704V-5.688C3.8448 -5.4144 3.8592 -5.1264 3.8592 -4.8384C3.8592 -4.0464 3.744 -3.4128 3.4272 -2.8512C3.3408 -2.664 3.2256 -2.5056 3.1248 -2.3184C2.9808 -2.4048 2.8656 -2.5344 2.7504 -2.664C2.088 -3.3264 1.5552 -4.4928 1.5552 -5.5584C1.5552 -6.8832 2.3184 -7.8336 3.1248 -8.424C3.3552 -8.5968 3.6 -8.7264 3.8448 -8.8704ZM3.4416 -2.0448L5.5152 -4.464C5.5728 -5.4 5.4864 -6.4368 5.544 -7.3584C5.7744 -7.6608 6.0336 -7.9344 6.2928 -8.2224C6.624 -7.8912 6.8976 -7.5168 7.1712 -7.1424C7.5456 -6.624 8.3232 -5.544 8.5968 -4.9968C8.712 -4.7808 8.784 -4.6656 8.784 -4.3632C8.784 -4.176 8.7408 -3.9744 8.7264 -3.8016C8.568 -2.304 7.5456 -1.224 6.0192 -1.224C5.1408 -1.224 4.4064 -1.512 3.7296 -1.872C3.6288 -1.9296 3.5424 -2.0016 3.4416 -2.0448Z"/>
+ <path id="g119" d="M7.5312 -10.0512C7.0128 -9.7632 6.4512 -9.648 5.8896 -9.648C5.4864 -9.648 5.1408 -9.7056 4.8096 -9.7776C4.7232 -9.792 4.608 -9.8352 4.5072 -9.8352S4.3056 -9.7632 4.2336 -9.7344L3.7872 -9.504C3.384 -9.3024 2.5632 -8.9136 2.232 -8.6688C0.8928 -7.7328 0.1584 -6.0768 0.1584 -4.4352C0.1584 -2.6784 0.9936 -1.3536 2.0736 -0.576C2.6928 -0.1296 3.5424 0.2016 4.5216 0.2016C6.3936 0.2016 8.2656 -0.9216 8.2656 -2.7216C8.1504 -2.6352 8.0496 -2.52 7.9344 -2.4192C7.2432 -1.8288 6.2208 -1.368 5.1264 -1.368C4.3776 -1.368 3.7296 -1.5984 3.2112 -1.9008C3.0672 -1.9872 2.9376 -2.1024 2.7936 -2.1744V-2.2032C3.3552 -2.5632 3.9168 -2.9376 4.4496 -3.3264L4.4784 -3.7152V-8.1648C5.0256 -8.0496 5.9328 -7.8912 6.4944 -7.8912C6.696 -7.8912 6.912 -7.92 7.0848 -8.064C7.4304 -8.352 7.488 -8.8848 7.5168 -9.3024C7.5312 -9.4752 7.5456 -9.6336 7.5456 -9.8064C7.5456 -9.8928 7.5456 -9.9792 7.5312 -10.0512ZM2.7936 -8.5824V-3.2976V-3.0672C2.7936 -2.7504 2.6784 -2.6208 2.52 -2.4336C1.8 -3.1536 1.2384 -4.1328 1.2384 -5.4432C1.2384 -6.8256 1.872 -8.0928 2.7936 -8.5824Z"/>
+ <use id="g120" transform="scale(1.2)" xlink:href="#g2"/>
+ <use id="g121" transform="scale(1.2)" xlink:href="#g50"/>
+ <use id="g122" transform="scale(1.2)" xlink:href="#g68"/>
+ <use id="g123" transform="scale(1.2)" xlink:href="#g67"/>
+ <use id="g124" transform="scale(1.2)" xlink:href="#g117"/>
+ <use id="g125" transform="scale(1.2)" xlink:href="#g37"/>
+ <use id="g126" transform="scale(1.2)" xlink:href="#g90"/>
+ <use id="g127" transform="scale(1.2)" xlink:href="#g116"/>
+ <use id="g128" transform="scale(1.2)" xlink:href="#g109"/>
+ <use id="g129" transform="scale(1.2)" xlink:href="#g21"/>
+ <use id="g130" transform="scale(1.2)" xlink:href="#g69"/>
+ <use id="g131" transform="scale(1.2)" xlink:href="#g16"/>
+ <use id="g132" transform="scale(1.2)" xlink:href="#g86"/>
+ <use id="g133" transform="scale(1.2)" xlink:href="#g63"/>
+ <use id="g134" transform="scale(1.2)" xlink:href="#g94"/>
+ <use id="g135" transform="scale(1.2)" xlink:href="#g4"/>
+ <use id="g136" transform="scale(1.2)" xlink:href="#g93"/>
+ <use id="g137" transform="scale(1.2)" xlink:href="#g30"/>
+ <use id="g138" transform="scale(1.2)" xlink:href="#g36"/>
+ <use id="g139" transform="scale(1.2)" xlink:href="#g29"/>
+ <use id="g140" transform="scale(1.2)" xlink:href="#g31"/>
+ <use id="g141" transform="scale(1.2)" xlink:href="#g39"/>
+ <use id="g142" transform="scale(1.2)" xlink:href="#g92"/>
+ <use id="g143" transform="scale(1.2)" xlink:href="#g15"/>
+ <use id="g144" transform="scale(1.2)" xlink:href="#g34"/>
+ <use id="g145" transform="scale(1.2)" xlink:href="#g42"/>
+ <use id="g146" transform="scale(1.2)" xlink:href="#g6"/>
+ <use id="g147" transform="scale(1.2)" xlink:href="#g13"/>
+ <use id="g148" transform="scale(1.2)" xlink:href="#g47"/>
+ <use id="g149" transform="scale(1.2)" xlink:href="#g49"/>
+ <use id="g150" transform="scale(1.2)" xlink:href="#g24"/>
+ <use id="g151" transform="scale(1.2)" xlink:href="#g38"/>
+ <use id="g152" transform="scale(1.2)" xlink:href="#g54"/>
+ <use id="g153" transform="scale(1.2)" xlink:href="#g3"/>
+ <use id="g154" transform="scale(1.2)" xlink:href="#g88"/>
+ <use id="g155" transform="scale(1.2)" xlink:href="#g85"/>
+ <use id="g156" transform="scale(1.2)" xlink:href="#g104"/>
+ <use id="g157" transform="scale(1.2)" xlink:href="#g14"/>
+ <use id="g158" transform="scale(1.2)" xlink:href="#g35"/>
+ <use id="g159" transform="scale(1.2)" xlink:href="#g102"/>
+ <use id="g160" transform="scale(1.2)" xlink:href="#g103"/>
+ <use id="g161" transform="scale(1.20026)" xlink:href="#g71"/>
+ </defs>
+ <g id="page1" transform="matrix(0.996 0 0 0.996 0 0)">
+ <use x="-13.4527" xlink:href="#g87" y="63.84"/>
+ <use x="-2.82872" xlink:href="#g81" y="63.84"/>
+ <use x="2.30009" xlink:href="#g44" y="63.84"/>
+ <use x="7.26012" xlink:href="#g45" y="63.84"/>
+ <use x="12.2201" xlink:href="#g43" y="63.84"/>
+ <use x="19.8201" xlink:href="#g43" y="63.84"/>
+ <use x="27.4202" xlink:href="#g46" y="63.84"/>
+ <use x="36.7806" xlink:href="#g89" y="63.84"/>
+ <use x="39.8918" xlink:href="#g64" y="63.84"/>
+ <use x="42.523" xlink:href="#g22" y="63.84"/>
+ <use x="52.2923" xlink:href="#g89" y="63.84"/>
+ <use x="56.2035" xlink:href="#g83" y="63.84"/>
+ <use x="60.6082" xlink:href="#g43" y="63.84"/>
+ <use x="68.2083" xlink:href="#g55" y="63.84"/>
+ <use x="76.217" xlink:href="#g100" y="63.84"/>
+ <use x="85.0487" xlink:href="#g59" y="63.84"/>
+ <use x="90.2311" xlink:href="#g26" y="63.84"/>
+ <use x="93.2535" xlink:href="#g64" y="63.84"/>
+ <use x="95.8847" xlink:href="#g83" y="63.84"/>
+ <use x="100.289" xlink:href="#g44" y="63.84"/>
+ <use x="105.25" xlink:href="#g59" y="63.84"/>
+ <use x="114.912" xlink:href="#g59" y="63.84"/>
+ <use x="120.095" xlink:href="#g45" y="63.84"/>
+ <use x="125.055" xlink:href="#g22" y="63.84"/>
+ <use x="130.344" xlink:href="#g64" y="63.84"/>
+ <use x="132.975" xlink:href="#g7" y="63.84"/>
+ <use x="136.286" xlink:href="#g81" y="63.84"/>
+ <use x="141.415" xlink:href="#g100" y="63.84"/>
+ <use x="145.766" xlink:href="#g45" y="63.84"/>
+ <use x="150.726" xlink:href="#g43" y="63.84"/>
+ <use x="162.806" xlink:href="#g26" y="63.84"/>
+ <use x="165.829" xlink:href="#g81" y="63.84"/>
+ <use x="170.958" xlink:href="#g100" y="63.84"/>
+ <use x="175.309" xlink:href="#g83" y="63.84"/>
+ <use x="179.714" xlink:href="#g43" y="63.84"/>
+ <use x="191.794" xlink:href="#g64" y="63.84"/>
+ <use x="194.425" xlink:href="#g56" y="63.84"/>
+ <use x="199.714" xlink:href="#g89" y="63.84"/>
+ <use x="203.625" xlink:href="#g45" y="63.84"/>
+ <use x="208.585" xlink:href="#g43" y="63.84"/>
+ <use x="220.666" xlink:href="#g82" y="63.84"/>
+ <use x="225.715" xlink:href="#g45" y="63.84"/>
+ <use x="230.675" xlink:href="#g81" y="63.84"/>
+ <use x="235.803" xlink:href="#g22" y="63.84"/>
+ <use x="245.573" xlink:href="#g81" y="63.84"/>
+ <use x="250.701" xlink:href="#g43" y="63.84"/>
+ <use x="258.301" xlink:href="#g44" y="63.84"/>
+ <use x="263.262" xlink:href="#g64" y="63.84"/>
+ <use x="265.893" xlink:href="#g59" y="63.84"/>
+ <use x="-13.4527" xlink:href="#g89" y="77.6107"/>
+ <use x="-9.54154" xlink:href="#g45" y="77.6107"/>
+ <use x="-4.58152" xlink:href="#g44" y="77.6107"/>
+ <use x="0.378502" xlink:href="#g7" y="77.6107"/>
+ <use x="9.1006" xlink:href="#g55" y="77.6107"/>
+ <use x="17.1094" xlink:href="#g75" y="77.6107"/>
+ <use x="20.9542" xlink:href="#g75" y="77.6107"/>
+ <use x="24.799" xlink:href="#g59" y="77.6107"/>
+ <use x="29.9814" xlink:href="#g7" y="77.6107"/>
+ <use x="33.2926" xlink:href="#g81" y="77.6107"/>
+ <use x="38.4214" xlink:href="#g100" y="77.6107"/>
+ <use x="42.7726" xlink:href="#g83" y="77.6107"/>
+ <use x="47.1774" xlink:href="#g111" y="77.6107"/>
+ <use x="52.5374" xlink:href="#g70" y="77.6107"/>
+ <use x="61.9483" xlink:href="#g48" y="77.6107"/>
+ <use x="71.3643" xlink:href="#g81" y="77.6107"/>
+ <use x="76.4931" xlink:href="#g100" y="77.6107"/>
+ <use x="80.8443" xlink:href="#g83" y="77.6107"/>
+ <use x="85.2491" xlink:href="#g43" y="77.6107"/>
+ <use x="98.26" xlink:href="#g64" y="77.6107"/>
+ <use x="100.891" xlink:href="#g56" y="77.6107"/>
+ <use x="106.18" xlink:href="#g89" y="77.6107"/>
+ <use x="110.091" xlink:href="#g45" y="77.6107"/>
+ <use x="115.051" xlink:href="#g43" y="77.6107"/>
+ <use x="128.062" xlink:href="#g23" y="77.6107"/>
+ <use x="136.551" xlink:href="#g26" y="77.6107"/>
+ <use x="139.573" xlink:href="#g81" y="77.6107"/>
+ <use x="144.702" xlink:href="#g100" y="77.6107"/>
+ <use x="154.464" xlink:href="#g89" y="77.6107"/>
+ <use x="157.576" xlink:href="#g64" y="77.6107"/>
+ <use x="160.207" xlink:href="#g7" y="77.6107"/>
+ <use x="168.929" xlink:href="#g59" y="77.6107"/>
+ <use x="174.111" xlink:href="#g43" y="77.6107"/>
+ <use x="181.711" xlink:href="#g83" y="77.6107"/>
+ <use x="186.116" xlink:href="#g7" y="77.6107"/>
+ <use x="194.838" xlink:href="#g75" y="77.6107"/>
+ <use x="198.683" xlink:href="#g81" y="77.6107"/>
+ <use x="203.812" xlink:href="#g44" y="77.6107"/>
+ <use x="214.183" xlink:href="#g89" y="77.6107"/>
+ <use x="218.094" xlink:href="#g83" y="77.6107"/>
+ <use x="222.499" xlink:href="#g77" y="77.6107"/>
+ <use x="228.89" xlink:href="#g83" y="77.6107"/>
+ <use x="233.295" xlink:href="#g7" y="77.6107"/>
+ <use x="236.606" xlink:href="#g45" y="77.6107"/>
+ <use x="241.566" xlink:href="#g83" y="77.6107"/>
+ <use x="245.971" xlink:href="#g100" y="77.6107"/>
+ <use x="255.733" xlink:href="#g59" y="77.6107"/>
+ <use x="260.915" xlink:href="#g22" y="77.6107"/>
+ <use x="266.204" xlink:href="#g64" y="77.6107"/>
+ <use x="268.835" xlink:href="#g72" y="77.6107"/>
+ <use x="-13.4527" xlink:href="#g56" y="91.3815"/>
+ <use x="-8.16395" xlink:href="#g64" y="91.3815"/>
+ <use x="-5.53273" xlink:href="#g89" y="91.3815"/>
+ <use x="-1.62153" xlink:href="#g75" y="91.3815"/>
+ <use x="2.22327" xlink:href="#g64" y="91.3815"/>
+ <use x="4.8545" xlink:href="#g44" y="91.3815"/>
+ <use x="9.81452" xlink:href="#g17" y="91.3815"/>
+ <use x="20.5198" xlink:href="#g83" y="91.3815"/>
+ <use x="24.9246" xlink:href="#g26" y="91.3815"/>
+ <use x="27.947" xlink:href="#g64" y="91.3815"/>
+ <use x="30.5783" xlink:href="#g7" y="91.3815"/>
+ <use x="33.8895" xlink:href="#g70" y="91.3815"/>
+ <use x="42.39" xlink:href="#g52" y="91.3815"/>
+ <use x="52.614" xlink:href="#g83" y="91.3815"/>
+ <use x="57.0188" xlink:href="#g22" y="91.3815"/>
+ <use x="66.8081" xlink:href="#g22" y="91.3815"/>
+ <use x="72.0969" xlink:href="#g64" y="91.3815"/>
+ <use x="74.7281" xlink:href="#g59" y="91.3815"/>
+ <use x="79.9105" xlink:href="#g43" y="91.3815"/>
+ <use x="92.0111" xlink:href="#g7" y="91.3815"/>
+ <use x="95.3223" xlink:href="#g83" y="91.3815"/>
+ <use x="99.727" xlink:href="#g43" y="91.3815"/>
+ <use x="107.327" xlink:href="#g57" y="91.3815"/>
+ <use x="115.816" xlink:href="#g100" y="91.3815"/>
+ <use x="124.668" xlink:href="#g64" y="91.3815"/>
+ <use x="127.299" xlink:href="#g44" y="91.3815"/>
+ <use x="132.259" xlink:href="#g75" y="91.3815"/>
+ <use x="136.104" xlink:href="#g64" y="91.3815"/>
+ <use x="138.735" xlink:href="#g22" y="91.3815"/>
+ <use x="144.024" xlink:href="#g45" y="91.3815"/>
+ <use x="148.984" xlink:href="#g44" y="91.3815"/>
+ <use x="153.944" xlink:href="#g7" y="91.3815"/>
+ <use x="161.755" xlink:href="#g45" y="91.3815"/>
+ <use x="166.715" xlink:href="#g7" y="91.3815"/>
+ <use x="174.527" xlink:href="#g26" y="91.3815"/>
+ <use x="177.55" xlink:href="#g59" y="91.3815"/>
+ <use x="182.732" xlink:href="#g1" y="91.3815"/>
+ <use x="190.981" xlink:href="#g100" y="91.3815"/>
+ <use x="195.332" xlink:href="#g83" y="91.3815"/>
+ <use x="204.237" xlink:href="#g83" y="91.3815"/>
+ <use x="208.642" xlink:href="#g7" y="91.3815"/>
+ <use x="216.454" xlink:href="#g23" y="91.3815"/>
+ <use x="224.943" xlink:href="#g26" y="91.3815"/>
+ <use x="227.965" xlink:href="#g81" y="91.3815"/>
+ <use x="233.094" xlink:href="#g100" y="91.3815"/>
+ <use x="241.946" xlink:href="#g43" y="91.3815"/>
+ <use x="249.546" xlink:href="#g59" y="91.3815"/>
+ <use x="254.728" xlink:href="#g17" y="91.3815"/>
+ <use x="260.933" xlink:href="#g44" y="91.3815"/>
+ <use x="265.893" xlink:href="#g59" y="91.3815"/>
+ <use x="-13.4527" xlink:href="#g59" y="105.043"/>
+ <use x="-8.27034" xlink:href="#g26" y="105.043"/>
+ <use x="-5.24794" xlink:href="#g64" y="105.043"/>
+ <use x="-2.61671" xlink:href="#g82" y="105.043"/>
+ <use x="2.43208" xlink:href="#g45" y="105.043"/>
+ <use x="7.3921" xlink:href="#g59" y="105.043"/>
+ <use x="12.5745" xlink:href="#g43" y="105.043"/>
+ <use x="24.7919" xlink:href="#g83" y="105.043"/>
+ <use x="29.1967" xlink:href="#g100" y="105.043"/>
+ <use x="33.5479" xlink:href="#g59" y="105.043"/>
+ <use x="38.7303" xlink:href="#g7" y="105.043"/>
+ <use x="46.6589" xlink:href="#g28" y="105.043"/>
+ <use x="51.9477" xlink:href="#g81" y="105.043"/>
+ <use x="57.0765" xlink:href="#g26" y="105.043"/>
+ <use x="60.0989" xlink:href="#g45" y="105.043"/>
+ <use x="65.0589" xlink:href="#g58" y="105.043"/>
+ <use x="73.8677" xlink:href="#g7" y="105.043"/>
+ <use x="81.7963" xlink:href="#g45" y="105.043"/>
+ <use x="86.7563" xlink:href="#g7" y="105.043"/>
+ <use x="94.6849" xlink:href="#g32" y="105.043"/>
+ <use x="103.005" xlink:href="#g64" y="105.043"/>
+ <use x="105.636" xlink:href="#g89" y="105.043"/>
+ <use x="108.747" xlink:href="#g64" y="105.043"/>
+ <use x="115.996" xlink:href="#g83" y="105.043"/>
+ <use x="120.401" xlink:href="#g44" y="105.043"/>
+ <use x="125.361" xlink:href="#g64" y="105.043"/>
+ <use x="127.992" xlink:href="#g43" y="105.043"/>
+ <use x="140.209" xlink:href="#g59" y="105.043"/>
+ <use x="145.392" xlink:href="#g22" y="105.043"/>
+ <use x="155.298" xlink:href="#g43" y="105.043"/>
+ <use x="162.898" xlink:href="#g64" y="105.043"/>
+ <use x="165.529" xlink:href="#g44" y="105.043"/>
+ <use x="170.489" xlink:href="#g64" y="105.043"/>
+ <use x="173.12" xlink:href="#g43" y="105.043"/>
+ <use x="185.338" xlink:href="#g27" y="105.043"/>
+ <use x="193.347" xlink:href="#g44" y="105.043"/>
+ <use x="198.307" xlink:href="#g64" y="105.043"/>
+ <use x="200.938" xlink:href="#g59" y="105.043"/>
+ <use x="206.12" xlink:href="#g43" y="105.043"/>
+ <use x="218.338" xlink:href="#g82" y="105.043"/>
+ <use x="223.386" xlink:href="#g45" y="105.043"/>
+ <use x="228.346" xlink:href="#g64" y="105.043"/>
+ <use x="230.978" xlink:href="#g111" y="105.043"/>
+ <use x="240.955" xlink:href="#g44" y="105.043"/>
+ <use x="245.915" xlink:href="#g81" y="105.043"/>
+ <use x="251.044" xlink:href="#g84" y="105.043"/>
+ <use x="256.475" xlink:href="#g100" y="105.043"/>
+ <use x="260.826" xlink:href="#g45" y="105.043"/>
+ <use x="265.786" xlink:href="#g22" y="105.043"/>
+ <use x="-13.4527" xlink:href="#g81" y="118.705"/>
+ <use x="-8.32393" xlink:href="#g40" y="118.705"/>
+ <use x="-3.03514" xlink:href="#g26" y="118.705"/>
+ <use x="-0.0127346" xlink:href="#g59" y="118.705"/>
+ <use x="5.16967" xlink:href="#g7" y="118.705"/>
+ <use x="8.48086" xlink:href="#g64" y="118.705"/>
+ <use x="11.1121" xlink:href="#g81" y="118.705"/>
+ <use x="16.2409" xlink:href="#g44" y="118.705"/>
+ <use x="21.2009" xlink:href="#g83" y="118.705"/>
+ <use x="25.6057" xlink:href="#g43" y="118.705"/>
+ <use x="38.0057" xlink:href="#g75" y="118.705"/>
+ <use x="41.8505" xlink:href="#g81" y="118.705"/>
+ <use x="46.9793" xlink:href="#g100" y="118.705"/>
+ <use x="51.3305" xlink:href="#g57" y="118.705"/>
+ <use x="59.8193" xlink:href="#g100" y="118.705"/>
+ <use x="64.1705" xlink:href="#g83" y="118.705"/>
+ <use x="68.5753" xlink:href="#g43" y="118.705"/>
+ <use x="76.1753" xlink:href="#g82" y="118.705"/>
+ <use x="81.2241" xlink:href="#g45" y="118.705"/>
+ <use x="86.1842" xlink:href="#g83" y="118.705"/>
+ <use x="95.3889" xlink:href="#g89" y="118.705"/>
+ <use x="99.3001" xlink:href="#g45" y="118.705"/>
+ <use x="104.26" xlink:href="#g89" y="118.705"/>
+ <use x="108.171" xlink:href="#g75" y="118.705"/>
+ <use x="112.016" xlink:href="#g64" y="118.705"/>
+ <use x="114.647" xlink:href="#g56" y="118.705"/>
+ <use x="119.936" xlink:href="#g64" y="118.705"/>
+ <use x="122.567" xlink:href="#g7" y="118.705"/>
+ <use x="130.679" xlink:href="#g26" y="118.705"/>
+ <use x="133.701" xlink:href="#g59" y="118.705"/>
+ <use x="138.883" xlink:href="#g1" y="118.705"/>
+ <use x="147.132" xlink:href="#g100" y="118.705"/>
+ <use x="151.483" xlink:href="#g64" y="118.705"/>
+ <use x="154.115" xlink:href="#g111" y="118.705"/>
+ <use x="-13.4527" xlink:href="#g161" y="249.832"/>
+ <use x="47.1072" xlink:href="#g138" y="203.607"/>
+ <use x="50.0585" xlink:href="#g134" y="203.607"/>
+ <use x="59.8848" xlink:href="#g118" y="203.607"/>
+ <use x="70.3073" xlink:href="#g61" y="203.607"/>
+ <use x="75.5377" xlink:href="#g112" y="203.607"/>
+ <use x="82.4801" xlink:href="#g106" y="203.607"/>
+ <use x="87.0161" xlink:href="#g8" y="203.607"/>
+ <use x="90.7353" xlink:href="#g121" y="203.607"/>
+ <use x="100.968" xlink:href="#g133" y="203.607"/>
+ <use x="105.852" xlink:href="#g134" y="203.607"/>
+ <use x="110.086" xlink:href="#g145" y="203.607"/>
+ <use x="120.362" xlink:href="#g80" y="203.607"/>
+ <use x="128.702" xlink:href="#g8" y="203.607"/>
+ <use x="132.422" xlink:href="#g113" y="203.607"/>
+ <use x="139.101" xlink:href="#g112" y="203.607"/>
+ <use x="146.043" xlink:href="#g106" y="203.607"/>
+ <use x="150.579" xlink:href="#g8" y="203.607"/>
+ <use x="154.298" xlink:href="#g121" y="203.607"/>
+ <use x="164.531" xlink:href="#g133" y="203.607"/>
+ <use x="169.415" xlink:href="#g130" y="203.607"/>
+ <use x="174.677" xlink:href="#g158" y="203.607"/>
+ <use x="185.621" xlink:href="#g80" y="203.607"/>
+ <use x="193.961" xlink:href="#g101" y="203.607"/>
+ <use x="200.64" xlink:href="#g61" y="203.607"/>
+ <use x="205.871" xlink:href="#g79" y="203.607"/>
+ <use x="210.799" xlink:href="#g106" y="203.607"/>
+ <use x="215.335" xlink:href="#g62" y="203.607"/>
+ <use x="222.256" xlink:href="#g76" y="203.607"/>
+ <use x="225.856" xlink:href="#g110" y="203.607"/>
+ <use x="231.81" xlink:href="#g60" y="203.607"/>
+ <use x="238.55" xlink:href="#g101" y="203.607"/>
+ <use x="250.822" xlink:href="#g148" y="203.607"/>
+ <use x="256.911" xlink:href="#g142" y="203.607"/>
+ <use x="262.489" xlink:href="#g133" y="203.607"/>
+ <use x="272.965" xlink:href="#g133" y="203.607"/>
+ <use x="277.849" xlink:href="#g130" y="203.607"/>
+ <use x="283.112" xlink:href="#g158" y="203.607"/>
+ <use x="294.055" xlink:href="#g119" y="203.607"/>
+ <use x="302.576" xlink:href="#g8" y="203.607"/>
+ <use x="306.295" xlink:href="#g110" y="203.607"/>
+ <use x="312.25" xlink:href="#g18" y="203.607"/>
+ <use x="319.291" xlink:href="#g76" y="203.607"/>
+ <use x="322.892" xlink:href="#g107" y="203.607"/>
+ <use x="327.337" xlink:href="#g101" y="203.607"/>
+ <use x="334.016" xlink:href="#g61" y="203.607"/>
+ <use x="339.247" xlink:href="#g74" y="203.607"/>
+ <use x="351.006" xlink:href="#g146" y="203.607"/>
+ <use x="353.811" xlink:href="#g138" y="203.607"/>
+ <use x="356.763" xlink:href="#g142" y="203.607"/>
+ <use x="362.34" xlink:href="#g133" y="203.607"/>
+ <use x="372.817" xlink:href="#g133" y="203.607"/>
+ <use x="377.701" xlink:href="#g138" y="203.607"/>
+ <use x="380.652" xlink:href="#g134" y="203.607"/>
+ <use x="47.1072" xlink:href="#g136" y="219.015"/>
+ <use x="52.7516" xlink:href="#g134" y="219.015"/>
+ <use x="56.9855" xlink:href="#g131" y="219.015"/>
+ <use x="61.892" xlink:href="#g145" y="219.015"/>
+ <use x="66.576" xlink:href="#g156" y="219.015"/>
+ <use x="71.8383" xlink:href="#g148" y="219.015"/>
+ <use x="77.9274" xlink:href="#g155" y="219.015"/>
+ <use x="85.2962" xlink:href="#g140" y="219.015"/>
+ <use x="88.3362" xlink:href="#g138" y="219.015"/>
+ <use x="91.2875" xlink:href="#g155" y="219.015"/>
+ <use x="98.6563" xlink:href="#g154" y="219.015"/>
+ <use x="104.256" xlink:href="#g134" y="219.015"/>
+ <use x="108.49" xlink:href="#g142" y="219.015"/>
+ <use x="118.515" xlink:href="#g126" y="219.015"/>
+ <use x="127.48" xlink:href="#g140" y="219.015"/>
+ <use x="130.52" xlink:href="#g130" y="219.015"/>
+ <use x="135.782" xlink:href="#g149" y="219.015"/>
+ <use x="141.311" xlink:href="#g138" y="219.015"/>
+ <use x="144.262" xlink:href="#g134" y="219.015"/>
+ <use x="148.496" xlink:href="#g145" y="219.015"/>
+ <use x="153.18" xlink:href="#g138" y="219.015"/>
+ <use x="156.131" xlink:href="#g142" y="219.015"/>
+ <use x="161.709" xlink:href="#g154" y="219.015"/>
+ <use x="167.309" xlink:href="#g145" y="219.015"/>
+ <use x="171.993" xlink:href="#g148" y="219.015"/>
+ <use x="178.082" xlink:href="#g141" y="219.015"/>
+ <use x="186.388" xlink:href="#g134" y="219.015"/>
+ <use x="190.622" xlink:href="#g142" y="219.015"/>
+ <use x="196.2" xlink:href="#g147" y="219.015"/>
+ <use x="199.355" xlink:href="#g134" y="219.015"/>
+ <use x="208.036" xlink:href="#g152" y="219.015"/>
+ <use x="212.342" xlink:href="#g148" y="219.015"/>
+ <use x="218.431" xlink:href="#g141" y="219.015"/>
+ <use x="231.184" xlink:href="#g124" y="219.015"/>
+ <use x="239.441" xlink:href="#g132" y="219.015"/>
+ <use x="243.415" xlink:href="#g132" y="219.015"/>
+ <use x="247.388" xlink:href="#g143" y="219.015"/>
+ <use x="252.362" xlink:href="#g141" y="219.015"/>
+ <use x="260.668" xlink:href="#g144" y="219.015"/>
+ <use x="266.286" xlink:href="#g130" y="219.015"/>
+ <use x="271.548" xlink:href="#g136" y="219.015"/>
+ <use x="277.193" xlink:href="#g142" y="219.015"/>
+ <use x="282.771" xlink:href="#g134" y="219.015"/>
+ <use x="287.004" xlink:href="#g141" y="219.015"/>
+ <use x="295.31" xlink:href="#g134" y="219.015"/>
+ <use x="299.544" xlink:href="#g142" y="219.015"/>
+ <use x="305.122" xlink:href="#g147" y="219.015"/>
+ <use x="308.277" xlink:href="#g122" y="219.015"/>
+ <use x="317.364" xlink:href="#g127" y="219.015"/>
+ <use x="324.811" xlink:href="#g158" y="219.015"/>
+ <use x="334.609" xlink:href="#g138" y="219.015"/>
+ <use x="337.56" xlink:href="#g154" y="219.015"/>
+ <use x="347.607" xlink:href="#g128" y="219.015"/>
+ <use x="358.497" xlink:href="#g155" y="219.015"/>
+ <use x="365.866" xlink:href="#g130" y="219.015"/>
+ <use x="371.128" xlink:href="#g133" y="219.015"/>
+ <use x="376.012" xlink:href="#g134" y="219.015"/>
+ <use x="380.246" xlink:href="#g121" y="219.015"/>
+ <use x="47.1072" xlink:href="#g133" y="234.424"/>
+ <use x="51.9913" xlink:href="#g130" y="234.424"/>
+ <use x="57.2536" xlink:href="#g120" y="234.424"/>
+ <use x="68.1032" xlink:href="#g133" y="234.424"/>
+ <use x="72.9873" xlink:href="#g138" y="234.424"/>
+ <use x="75.9385" xlink:href="#g134" y="234.424"/>
+ <use x="85.8667" xlink:href="#g146" y="234.424"/>
+ <use x="88.3523" xlink:href="#g155" y="234.424"/>
+ <use x="95.7212" xlink:href="#g159" y="234.424"/>
+ <use x="100.695" xlink:href="#g142" y="234.424"/>
+ <use x="106.272" xlink:href="#g134" y="234.424"/>
+ <use x="116.201" xlink:href="#g127" y="234.424"/>
+ <use x="123.647" xlink:href="#g145" y="234.424"/>
+ <use x="128.331" xlink:href="#g135" y="234.424"/>
+ <use x="131.682" xlink:href="#g138" y="234.424"/>
+ <use x="134.634" xlink:href="#g142" y="234.424"/>
+ <use x="140.211" xlink:href="#g133" y="234.424"/>
+ <use x="145.095" xlink:href="#g148" y="234.424"/>
+ <use x="151.185" xlink:href="#g142" y="234.424"/>
+ <use x="156.762" xlink:href="#g136" y="234.424"/>
+ <use x="168.101" xlink:href="#g133" y="234.424"/>
+ <use x="172.985" xlink:href="#g134" y="234.424"/>
+ <use x="177.219" xlink:href="#g158" y="234.424"/>
+ <use x="188.265" xlink:href="#g115" y="234.424"/>
+ <use x="198.053" xlink:href="#g101" y="234.424"/>
+ <use x="204.733" xlink:href="#g8" y="234.424"/>
+ <use x="207.772" xlink:href="#g10" y="234.424"/>
+ <use x="212.106" xlink:href="#g106" y="234.424"/>
+ <use x="216.642" xlink:href="#g8" y="234.424"/>
+ <use x="220.361" xlink:href="#g74" y="234.424"/>
+ <use x="226.528" xlink:href="#g76" y="234.424"/>
+ <use x="230.128" xlink:href="#g11" y="234.424"/>
+ <use x="233.494" xlink:href="#g105" y="234.424"/>
+ <use x="243.208" xlink:href="#g106" y="234.424"/>
+ <use x="247.744" xlink:href="#g60" y="234.424"/>
+ <use x="260.178" xlink:href="#g41" y="234.424"/>
+ <use x="271.627" xlink:href="#g101" y="234.424"/>
+ <use x="278.306" xlink:href="#g112" y="234.424"/>
+ <use x="285.249" xlink:href="#g106" y="234.424"/>
+ <use x="289.785" xlink:href="#g60" y="234.424"/>
+ <use x="296.525" xlink:href="#g107" y="234.424"/>
+ <use x="300.971" xlink:href="#g8" y="234.424"/>
+ <use x="304.69" xlink:href="#g110" y="234.424"/>
+ <use x="310.644" xlink:href="#g18" y="234.424"/>
+ <use x="317.686" xlink:href="#g76" y="234.424"/>
+ <use x="321.286" xlink:href="#g106" y="234.424"/>
+ <use x="325.822" xlink:href="#g61" y="234.424"/>
+ <use x="331.052" xlink:href="#g9" y="234.424"/>
+ <use x="342.219" xlink:href="#g142" y="234.424"/>
+ <use x="347.796" xlink:href="#g143" y="234.424"/>
+ <use x="352.77" xlink:href="#g155" y="234.424"/>
+ <use x="365.833" xlink:href="#g142" y="234.424"/>
+ <use x="371.411" xlink:href="#g138" y="234.424"/>
+ <use x="374.362" xlink:href="#g155" y="234.424"/>
+ <use x="381.731" xlink:href="#g147" y="234.424"/>
+ <use x="47.1072" xlink:href="#g136" y="249.832"/>
+ <use x="52.7516" xlink:href="#g134" y="249.832"/>
+ <use x="56.9855" xlink:href="#g141" y="249.832"/>
+ <use x="65.2916" xlink:href="#g134" y="249.832"/>
+ <use x="69.5254" xlink:href="#g138" y="249.832"/>
+ <use x="72.4767" xlink:href="#g142" y="249.832"/>
+ <use x="78.0545" xlink:href="#g142" y="249.832"/>
+ <use x="83.6324" xlink:href="#g160" y="249.832"/>
+ <use x="89.7215" xlink:href="#g157" y="249.832"/>
+ <use x="94.9615" xlink:href="#g138" y="249.832"/>
+ <use x="97.9127" xlink:href="#g136" y="249.832"/>
+ <use x="110.524" xlink:href="#g136" y="249.832"/>
+ <use x="116.169" xlink:href="#g134" y="249.832"/>
+ <use x="120.403" xlink:href="#g150" y="249.832"/>
+ <use x="127.869" xlink:href="#g143" y="249.832"/>
+ <use x="132.843" xlink:href="#g145" y="249.832"/>
+ <use x="137.527" xlink:href="#g133" y="249.832"/>
+ <use x="142.411" xlink:href="#g134" y="249.832"/>
+ <use x="146.645" xlink:href="#g142" y="249.832"/>
+ <use x="159.19" xlink:href="#g138" y="249.832"/>
+ <use x="162.141" xlink:href="#g154" y="249.832"/>
+ <use x="167.741" xlink:href="#g123" y="249.832"/>
+ <use x="179.348" xlink:href="#g141" y="249.832"/>
+ <use x="187.654" xlink:href="#g130" y="249.832"/>
+ <use x="192.917" xlink:href="#g142" y="249.832"/>
+ <use x="205.462" xlink:href="#g139" y="249.832"/>
+ <use x="209.191" xlink:href="#g130" y="249.832"/>
+ <use x="214.453" xlink:href="#g142" y="249.832"/>
+ <use x="220.031" xlink:href="#g142" y="249.832"/>
+ <use x="232.576" xlink:href="#g133" y="249.832"/>
+ <use x="237.46" xlink:href="#g130" y="249.832"/>
+ <use x="242.722" xlink:href="#g137" y="249.832"/>
+ <use x="247.74" xlink:href="#g134" y="249.832"/>
+ <use x="251.974" xlink:href="#g145" y="249.832"/>
+ <use x="256.658" xlink:href="#g143" y="249.832"/>
+ <use x="268.599" xlink:href="#g133" y="249.832"/>
+ <use x="273.483" xlink:href="#g134" y="249.832"/>
+ <use x="277.717" xlink:href="#g153" y="249.832"/>
+ <use x="282.113" xlink:href="#g134" y="249.832"/>
+ <use x="286.347" xlink:href="#g142" y="249.832"/>
+ <use x="298.893" xlink:href="#g131" y="249.832"/>
+ <use x="303.799" xlink:href="#g134" y="249.832"/>
+ <use x="308.033" xlink:href="#g146" y="249.832"/>
+ <use x="310.519" xlink:href="#g143" y="249.832"/>
+ <use x="315.492" xlink:href="#g142" y="249.832"/>
+ <use x="321.07" xlink:href="#g133" y="249.832"/>
+ <use x="325.954" xlink:href="#g134" y="249.832"/>
+ <use x="330.188" xlink:href="#g145" y="249.832"/>
+ <use x="334.872" xlink:href="#g134" y="249.832"/>
+ <use x="346.073" xlink:href="#g129" y="249.832"/>
+ <use x="354.955" xlink:href="#g143" y="249.832"/>
+ <use x="359.929" xlink:href="#g145" y="249.832"/>
+ <use x="364.613" xlink:href="#g152" y="249.832"/>
+ <use x="368.919" xlink:href="#g160" y="249.832"/>
+ <use x="375.008" xlink:href="#g136" y="249.832"/>
+ <use x="380.652" xlink:href="#g134" y="249.832"/>
+ <use x="-13.4527" xlink:href="#g137" y="265.24"/>
+ <use x="-8.43511" xlink:href="#g138" y="265.24"/>
+ <use x="-5.48388" xlink:href="#g134" y="265.24"/>
+ <use x="-1.25" xlink:href="#g145" y="265.24"/>
+ <use x="3.43402" xlink:href="#g138" y="265.24"/>
+ <use x="6.38525" xlink:href="#g142" y="265.24"/>
+ <use x="11.9631" xlink:href="#g142" y="265.24"/>
+ <use x="17.541" xlink:href="#g134" y="265.24"/>
+ <use x="21.7749" xlink:href="#g142" y="265.24"/>
+ <use x="32.856" xlink:href="#g142" y="265.24"/>
+ <use x="38.4339" xlink:href="#g143" y="265.24"/>
+ <use x="43.4073" xlink:href="#g155" y="265.24"/>
+ <use x="56.2794" xlink:href="#g142" y="265.24"/>
+ <use x="61.8573" xlink:href="#g138" y="265.24"/>
+ <use x="64.8085" xlink:href="#g155" y="265.24"/>
+ <use x="72.1774" xlink:href="#g147" y="265.24"/>
+ <use x="80.8359" xlink:href="#g136" y="265.24"/>
+ <use x="86.4803" xlink:href="#g134" y="265.24"/>
+ <use x="90.7142" xlink:href="#g142" y="265.24"/>
+ <use x="96.2921" xlink:href="#g130" y="265.24"/>
+ <use x="101.554" xlink:href="#g148" y="265.24"/>
+ <use x="113.147" xlink:href="#g131" y="265.24"/>
+ <use x="118.053" xlink:href="#g134" y="265.24"/>
+ <use x="122.287" xlink:href="#g154" y="265.24"/>
+ <use x="127.887" xlink:href="#g138" y="265.24"/>
+ <use x="130.838" xlink:href="#g141" y="265.24"/>
+ <use x="139.144" xlink:href="#g141" y="265.24"/>
+ <use x="147.45" xlink:href="#g134" y="265.24"/>
+ <use x="151.684" xlink:href="#g142" y="265.24"/>
+ <use x="157.262" xlink:href="#g122" y="265.24"/>
+ <use x="167.406" xlink:href="#g127" y="265.24"/>
+ <use x="174.852" xlink:href="#g158" y="265.24"/>
+ <use x="185.707" xlink:href="#g138" y="265.24"/>
+ <use x="188.658" xlink:href="#g154" y="265.24"/>
+ <use x="199.761" xlink:href="#g136" y="265.24"/>
+ <use x="205.406" xlink:href="#g134" y="265.24"/>
+ <use x="209.639" xlink:href="#g150" y="265.24"/>
+ <use x="217.106" xlink:href="#g138" y="265.24"/>
+ <use x="220.057" xlink:href="#g120" y="265.24"/>
+ <use x="230.716" xlink:href="#g152" y="265.24"/>
+ <use x="235.022" xlink:href="#g148" y="265.24"/>
+ <use x="246.614" xlink:href="#g136" y="265.24"/>
+ <use x="252.259" xlink:href="#g140" y="265.24"/>
+ <use x="255.299" xlink:href="#g130" y="265.24"/>
+ <use x="260.561" xlink:href="#g148" y="265.24"/>
+ <use x="266.65" xlink:href="#g131" y="265.24"/>
+ <use x="271.557" xlink:href="#g134" y="265.24"/>
+ <use x="275.791" xlink:href="#g142" y="265.24"/>
+ <use x="281.368" xlink:href="#g121" y="265.24"/>
+ <use x="291.512" xlink:href="#g133" y="265.24"/>
+ <use x="296.396" xlink:href="#g130" y="265.24"/>
+ <use x="301.658" xlink:href="#g120" y="265.24"/>
+ <use x="312.317" xlink:href="#g134" y="265.24"/>
+ <use x="316.551" xlink:href="#g158" y="265.24"/>
+ <use x="327.405" xlink:href="#g146" y="265.24"/>
+ <use x="330.211" xlink:href="#g138" y="265.24"/>
+ <use x="333.162" xlink:href="#g155" y="265.24"/>
+ <use x="346.034" xlink:href="#g130" y="265.24"/>
+ <use x="351.296" xlink:href="#g148" y="265.24"/>
+ <use x="357.385" xlink:href="#g155" y="265.24"/>
+ <use x="370.258" xlink:href="#g131" y="265.24"/>
+ <use x="375.164" xlink:href="#g134" y="265.24"/>
+ <use x="379.398" xlink:href="#g151" y="265.24"/>
+ <use x="-13.4527" xlink:href="#g133" y="280.648"/>
+ <use x="-8.56866" xlink:href="#g134" y="280.648"/>
+ <use x="-4.33478" xlink:href="#g145" y="280.648"/>
+ <use x="5.14924" xlink:href="#g125" y="280.648"/>
+ <use x="15.7213" xlink:href="#g134" y="280.648"/>
+ <use x="19.9552" xlink:href="#g136" y="280.648"/>
+ <use x="25.5995" xlink:href="#g140" y="280.648"/>
+ <use x="28.6396" xlink:href="#g134" y="280.648"/>
+ <use x="32.8734" xlink:href="#g138" y="280.648"/>
+ <use x="35.8247" xlink:href="#g147" y="280.648"/>
+ <use x="38.9799" xlink:href="#g148" y="280.648"/>
+ <use x="45.069" xlink:href="#g142" y="280.648"/>
+ <use x="50.6468" xlink:href="#g136" y="280.648"/>
+ <use x="61.0912" xlink:href="#g136" y="280.648"/>
+ <use x="66.7356" xlink:href="#g148" y="280.648"/>
+ <use x="72.8246" xlink:href="#g147" y="280.648"/>
+ <use x="80.7799" xlink:href="#g130" y="280.648"/>
+ <use x="86.0422" xlink:href="#g148" y="280.648"/>
+ <use x="92.1312" xlink:href="#g158" y="280.648"/>
+ <use x="97.4825" xlink:href="#g142" y="280.648"/>
+ <use x="103.06" xlink:href="#g134" y="280.648"/>
+ <use x="107.294" xlink:href="#g137" y="280.648"/>
+ <use x="112.312" xlink:href="#g141" y="280.648"/>
+ <use x="120.618" xlink:href="#g134" y="280.648"/>
+ <use x="124.852" xlink:href="#g142" y="280.648"/>
+ <use x="135.23" xlink:href="#g150" y="280.648"/>
+ <use x="142.696" xlink:href="#g134" y="280.648"/>
+ <use x="146.93" xlink:href="#g145" y="280.648"/>
+ <use x="151.614" xlink:href="#g133" y="280.648"/>
+ <use x="156.498" xlink:href="#g134" y="280.648"/>
+ <use x="160.732" xlink:href="#g122" y="280.648"/>
+ <use x="-13.4527" xlink:href="#g95" y="416.504"/>
+ <use x="38.0278" xlink:href="#g15" y="377.984"/>
+ <use x="42.1722" xlink:href="#g92" y="377.984"/>
+ <use x="51.1086" xlink:href="#g63" y="377.984"/>
+ <use x="55.1787" xlink:href="#g94" y="377.984"/>
+ <use x="58.7069" xlink:href="#g39" y="377.984"/>
+ <use x="69.9168" xlink:href="#g88" y="377.984"/>
+ <use x="74.5835" xlink:href="#g69" y="377.984"/>
+ <use x="78.9687" xlink:href="#g13" y="377.984"/>
+ <use x="81.5981" xlink:href="#g13" y="377.984"/>
+ <use x="84.2275" xlink:href="#g31" y="377.984"/>
+ <use x="86.7608" xlink:href="#g36" y="377.984"/>
+ <use x="89.2202" xlink:href="#g85" y="377.984"/>
+ <use x="95.3609" xlink:href="#g94" y="377.984"/>
+ <use x="98.8891" xlink:href="#g92" y="377.984"/>
+ <use x="107.825" xlink:href="#g98" y="377.984"/>
+ <use x="116.366" xlink:href="#g42" y="377.984"/>
+ <use x="120.269" xlink:href="#g13" y="377.984"/>
+ <use x="122.898" xlink:href="#g94" y="377.984"/>
+ <use x="130.715" xlink:href="#g51" y="377.984"/>
+ <use x="137.567" xlink:href="#g36" y="377.984"/>
+ <use x="140.026" xlink:href="#g42" y="377.984"/>
+ <use x="143.929" xlink:href="#g85" y="377.984"/>
+ <use x="150.07" xlink:href="#g94" y="377.984"/>
+ <use x="153.598" xlink:href="#g30" y="377.984"/>
+ <use x="157.78" xlink:href="#g42" y="377.984"/>
+ <use x="161.683" xlink:href="#g94" y="377.984"/>
+ <use x="165.211" xlink:href="#g92" y="377.984"/>
+ <use x="169.859" xlink:href="#g16" y="377.984"/>
+ <use x="173.948" xlink:href="#g69" y="377.984"/>
+ <use x="178.333" xlink:href="#g85" y="377.984"/>
+ <use x="188.762" xlink:href="#g36" y="377.984"/>
+ <use x="191.222" xlink:href="#g92" y="377.984"/>
+ <use x="200.158" xlink:href="#g63" y="377.984"/>
+ <use x="204.228" xlink:href="#g94" y="377.984"/>
+ <use x="207.756" xlink:href="#g42" y="377.984"/>
+ <use x="215.948" xlink:href="#g73" y="377.984"/>
+ <use x="221.957" xlink:href="#g42" y="377.984"/>
+ <use x="225.86" xlink:href="#g65" y="377.984"/>
+ <use x="230.245" xlink:href="#g92" y="377.984"/>
+ <use x="234.893" xlink:href="#g29" y="377.984"/>
+ <use x="238.001" xlink:href="#g36" y="377.984"/>
+ <use x="240.46" xlink:href="#g6" y="377.984"/>
+ <use x="242.531" xlink:href="#g85" y="377.984"/>
+ <use x="248.672" xlink:href="#g94" y="377.984"/>
+ <use x="252.2" xlink:href="#g92" y="377.984"/>
+ <use x="38.0278" xlink:href="#g109" y="390.824"/>
+ <use x="47.1032" xlink:href="#g85" y="390.824"/>
+ <use x="53.2439" xlink:href="#g24" y="390.824"/>
+ <use x="59.466" xlink:href="#g94" y="390.824"/>
+ <use x="62.9942" xlink:href="#g36" y="390.824"/>
+ <use x="65.4536" xlink:href="#g54" y="390.824"/>
+ <use x="72.1763" xlink:href="#g4" y="390.824"/>
+ <use x="74.969" xlink:href="#g66" y="390.824"/>
+ <use x="80.0433" xlink:href="#g30" y="390.824"/>
+ <use x="84.2246" xlink:href="#g42" y="390.824"/>
+ <use x="88.128" xlink:href="#g13" y="390.824"/>
+ <use x="93.8915" xlink:href="#g94" y="390.824"/>
+ <use x="97.4198" xlink:href="#g36" y="390.824"/>
+ <use x="99.8791" xlink:href="#g92" y="390.824"/>
+ <use x="107.662" xlink:href="#g94" y="390.824"/>
+ <use x="111.19" xlink:href="#g36" y="390.824"/>
+ <use x="113.649" xlink:href="#g92" y="390.824"/>
+ <use x="118.297" xlink:href="#g6" y="390.824"/>
+ <use x="120.369" xlink:href="#g69" y="390.824"/>
+ <use x="124.754" xlink:href="#g39" y="390.824"/>
+ <use x="131.676" xlink:href="#g94" y="390.824"/>
+ <use x="135.204" xlink:href="#g35" y="390.824"/>
+ <use x="142.798" xlink:href="#g109" y="390.824"/>
+ <use x="151.873" xlink:href="#g13" y="390.824"/>
+ <use x="154.502" xlink:href="#g42" y="390.824"/>
+ <use x="158.406" xlink:href="#g65" y="390.824"/>
+ <use x="162.791" xlink:href="#g2" y="390.824"/>
+ <use x="167.087" xlink:href="#g85" y="390.824"/>
+ <use x="173.228" xlink:href="#g94" y="390.824"/>
+ <use x="176.756" xlink:href="#g92" y="390.824"/>
+ <use x="181.404" xlink:href="#g50" y="390.824"/>
+ <use x="188.405" xlink:href="#g69" y="390.824"/>
+ <use x="192.79" xlink:href="#g92" y="390.824"/>
+ <use x="200.573" xlink:href="#g63" y="390.824"/>
+ <use x="204.643" xlink:href="#g94" y="390.824"/>
+ <use x="208.171" xlink:href="#g42" y="390.824"/>
+ <use x="215.209" xlink:href="#g88" y="390.824"/>
+ <use x="219.875" xlink:href="#g94" y="390.824"/>
+ <use x="223.403" xlink:href="#g36" y="390.824"/>
+ <use x="225.863" xlink:href="#g31" y="390.824"/>
+ <use x="231.53" xlink:href="#g69" y="390.824"/>
+ <use x="235.916" xlink:href="#g16" y="390.824"/>
+ <use x="240.004" xlink:href="#g88" y="390.824"/>
+ <use x="244.671" xlink:href="#g66" y="390.824"/>
+ <use x="249.745" xlink:href="#g42" y="390.824"/>
+ <use x="253.649" xlink:href="#g91" y="390.824"/>
+ <use x="38.0278" xlink:href="#g54" y="403.664"/>
+ <use x="41.6163" xlink:href="#g94" y="403.664"/>
+ <use x="45.1445" xlink:href="#g92" y="403.664"/>
+ <use x="49.7928" xlink:href="#g63" y="403.664"/>
+ <use x="53.8628" xlink:href="#g94" y="403.664"/>
+ <use x="57.3911" xlink:href="#g92" y="403.664"/>
+ <use x="65.2089" xlink:href="#g37" y="403.664"/>
+ <use x="74.0189" xlink:href="#g42" y="403.664"/>
+ <use x="77.9223" xlink:href="#g94" y="403.664"/>
+ <use x="81.4505" xlink:href="#g36" y="403.664"/>
+ <use x="83.9099" xlink:href="#g13" y="403.664"/>
+ <use x="86.5392" xlink:href="#g6" y="403.664"/>
+ <use x="88.6106" xlink:href="#g94" y="403.664"/>
+ <use x="92.1388" xlink:href="#g36" y="403.664"/>
+ <use x="94.5982" xlink:href="#g13" y="403.664"/>
+ <use x="97.2275" xlink:href="#g94" y="403.664"/>
+ <use x="103.925" xlink:href="#g63" y="403.664"/>
+ <use x="107.995" xlink:href="#g94" y="403.664"/>
+ <use x="111.524" xlink:href="#g42" y="403.664"/>
+ <use x="118.597" xlink:href="#g116" y="403.664"/>
+ <use x="124.802" xlink:href="#g30" y="403.664"/>
+ <use x="128.983" xlink:href="#g42" y="403.664"/>
+ <use x="132.887" xlink:href="#g94" y="403.664"/>
+ <use x="136.415" xlink:href="#g92" y="403.664"/>
+ <use x="141.063" xlink:href="#g16" y="403.664"/>
+ <use x="145.152" xlink:href="#g66" y="403.664"/>
+ <use x="150.226" xlink:href="#g42" y="403.664"/>
+ <use x="154.13" xlink:href="#g93" y="403.664"/>
+ <use x="162.003" xlink:href="#g49" y="403.664"/>
+ <use x="166.61" xlink:href="#g15" y="403.664"/>
+ <use x="170.754" xlink:href="#g42" y="403.664"/>
+ <use x="174.658" xlink:href="#g66" y="403.664"/>
+ <use x="179.732" xlink:href="#g16" y="403.664"/>
+ <use x="183.821" xlink:href="#g94" y="403.664"/>
+ <use x="187.349" xlink:href="#g42" y="403.664"/>
+ <use x="191.252" xlink:href="#g50" y="403.664"/>
+ <use x="198.289" xlink:href="#g93" y="403.664"/>
+ <use x="202.992" xlink:href="#g94" y="403.664"/>
+ <use x="206.52" xlink:href="#g92" y="403.664"/>
+ <use x="214.338" xlink:href="#g12" y="403.664"/>
+ <use x="218.959" xlink:href="#g94" y="403.664"/>
+ <use x="222.487" xlink:href="#g47" y="403.664"/>
+ <use x="227.561" xlink:href="#g13" y="403.664"/>
+ <use x="230.191" xlink:href="#g94" y="403.664"/>
+ <use x="233.719" xlink:href="#g92" y="403.664"/>
+ <use x="238.367" xlink:href="#g16" y="403.664"/>
+ <use x="242.456" xlink:href="#g69" y="403.664"/>
+ <use x="246.841" xlink:href="#g85" y="403.664"/>
+ <use x="252.982" xlink:href="#g68" y="403.664"/>
+ <use x="38.0278" xlink:href="#g33" y="416.504"/>
+ <use x="44.2551" xlink:href="#g92" y="416.504"/>
+ <use x="51.6451" xlink:href="#g94" y="416.504"/>
+ <use x="55.1734" xlink:href="#g36" y="416.504"/>
+ <use x="57.6327" xlink:href="#g92" y="416.504"/>
+ <use x="62.281" xlink:href="#g94" y="416.504"/>
+ <use x="65.8092" xlink:href="#g42" y="416.504"/>
+ <use x="72.4543" xlink:href="#g30" y="416.504"/>
+ <use x="76.6357" xlink:href="#g69" y="416.504"/>
+ <use x="81.021" xlink:href="#g31" y="416.504"/>
+ <use x="83.5543" xlink:href="#g16" y="416.504"/>
+ <use x="87.6431" xlink:href="#g94" y="416.504"/>
+ <use x="91.1713" xlink:href="#g92" y="416.504"/>
+ <use x="98.5613" xlink:href="#g109" y="416.504"/>
+ <use x="107.637" xlink:href="#g13" y="416.504"/>
+ <use x="110.266" xlink:href="#g47" y="416.504"/>
+ <use x="115.34" xlink:href="#g92" y="416.504"/>
+ <use x="119.988" xlink:href="#g63" y="416.504"/>
+ <use x="124.059" xlink:href="#g94" y="416.504"/>
+ <use x="130.329" xlink:href="#g36" y="416.504"/>
+ <use x="132.788" xlink:href="#g88" y="416.504"/>
+ <use x="140.196" xlink:href="#g63" y="416.504"/>
+ <use x="144.266" xlink:href="#g69" y="416.504"/>
+ <use x="148.652" xlink:href="#g35" y="416.504"/>
+ <use x="155.853" xlink:href="#g6" y="416.504"/>
+ <use x="157.924" xlink:href="#g85" y="416.504"/>
+ <use x="164.065" xlink:href="#g39" y="416.504"/>
+ <use x="170.987" xlink:href="#g47" y="416.504"/>
+ <use x="176.061" xlink:href="#g78" y="416.504"/>
+ <use x="181.128" xlink:href="#g94" y="416.504"/>
+ <use x="187.398" xlink:href="#g25" y="416.504"/>
+ <use x="194.252" xlink:href="#g4" y="416.504"/>
+ <use x="197.045" xlink:href="#g69" y="416.504"/>
+ <use x="201.43" xlink:href="#g42" y="416.504"/>
+ <use x="205.334" xlink:href="#g42" y="416.504"/>
+ <use x="209.237" xlink:href="#g63" y="416.504"/>
+ <use x="213.307" xlink:href="#g15" y="416.504"/>
+ <use x="217.452" xlink:href="#g42" y="416.504"/>
+ <use x="221.355" xlink:href="#g4" y="416.504"/>
+ <use x="226.889" xlink:href="#g94" y="416.504"/>
+ <use x="230.418" xlink:href="#g42" y="416.504"/>
+ <use x="234.321" xlink:href="#g42" y="416.504"/>
+ <use x="238.224" xlink:href="#g94" y="416.504"/>
+ <use x="241.753" xlink:href="#g36" y="416.504"/>
+ <use x="244.212" xlink:href="#g85" y="416.504"/>
+ <use x="250.353" xlink:href="#g13" y="416.504"/>
+ <use x="252.982" xlink:href="#g68" y="416.504"/>
+ <use x="-13.4527" xlink:href="#g109" y="429.344"/>
+ <use x="-4.37736" xlink:href="#g66" y="429.344"/>
+ <use x="0.696857" xlink:href="#g63" y="429.344"/>
+ <use x="4.76693" xlink:href="#g53" y="429.344"/>
+ <use x="8.9114" xlink:href="#g88" y="429.344"/>
+ <use x="13.5781" xlink:href="#g31" y="429.344"/>
+ <use x="16.1115" xlink:href="#g36" y="429.344"/>
+ <use x="18.5708" xlink:href="#g85" y="429.344"/>
+ <use x="29.0311" xlink:href="#g63" y="429.344"/>
+ <use x="33.1012" xlink:href="#g94" y="429.344"/>
+ <use x="36.6294" xlink:href="#g35" y="429.344"/>
+ <use x="41.0888" xlink:href="#g6" y="429.344"/>
+ <use x="43.1601" xlink:href="#g94" y="429.344"/>
+ <use x="46.6884" xlink:href="#g31" y="429.344"/>
+ <use x="49.2217" xlink:href="#g16" y="429.344"/>
+ <use x="53.3105" xlink:href="#g94" y="429.344"/>
+ <use x="56.8387" xlink:href="#g92" y="429.344"/>
+ <use x="61.4869" xlink:href="#g50" y="429.344"/>
+ <use x="69.6732" xlink:href="#g29" y="429.344"/>
+ <use x="72.7806" xlink:href="#g69" y="429.344"/>
+ <use x="77.1658" xlink:href="#g47" y="429.344"/>
+ <use x="82.24" xlink:href="#g39" y="429.344"/>
+ <use x="93.4813" xlink:href="#g94" y="429.344"/>
+ <use x="97.0096" xlink:href="#g36" y="429.344"/>
+ <use x="99.4689" xlink:href="#g92" y="429.344"/>
+ <use x="104.117" xlink:href="#g94" y="429.344"/>
+ <use x="111.965" xlink:href="#g21" y="429.344"/>
+ <use x="119.367" xlink:href="#g36" y="429.344"/>
+ <use x="121.826" xlink:href="#g94" y="429.344"/>
+ <use x="125.355" xlink:href="#g42" y="429.344"/>
+ <use x="129.258" xlink:href="#g13" y="429.344"/>
+ <use x="131.887" xlink:href="#g94" y="429.344"/>
+ <use x="135.416" xlink:href="#g31" y="429.344"/>
+ <use x="137.949" xlink:href="#g88" y="429.344"/>
+ <use x="142.616" xlink:href="#g47" y="429.344"/>
+ <use x="147.69" xlink:href="#g92" y="429.344"/>
+ <use x="152.338" xlink:href="#g63" y="429.344"/>
+ <use x="156.408" xlink:href="#g94" y="429.344"/>
+ <use x="164.256" xlink:href="#g94" y="429.344"/>
+ <use x="167.784" xlink:href="#g92" y="429.344"/>
+ <use x="172.432" xlink:href="#g13" y="429.344"/>
+ <use x="175.062" xlink:href="#g4" y="429.344"/>
+ <use x="177.854" xlink:href="#g94" y="429.344"/>
+ <use x="181.383" xlink:href="#g42" y="429.344"/>
+ <use x="185.286" xlink:href="#g92" y="429.344"/>
+ <use x="189.934" xlink:href="#g13" y="429.344"/>
+ <use x="192.564" xlink:href="#g50" y="429.344"/>
+ <use x="200.75" xlink:href="#g13" y="429.344"/>
+ <use x="203.379" xlink:href="#g42" y="429.344"/>
+ <use x="207.283" xlink:href="#g94" y="429.344"/>
+ <use x="210.811" xlink:href="#g5" y="429.344"/>
+ <use x="215.196" xlink:href="#g94" y="429.344"/>
+ <use x="218.724" xlink:href="#g92" y="429.344"/>
+ <use x="227.692" xlink:href="#g24" y="429.344"/>
+ <use x="233.914" xlink:href="#g36" y="429.344"/>
+ <use x="236.374" xlink:href="#g42" y="429.344"/>
+ <use x="244.597" xlink:href="#g69" y="429.344"/>
+ <use x="248.982" xlink:href="#g47" y="429.344"/>
+ <use x="254.056" xlink:href="#g4" y="429.344"/>
+ <use x="-13.4527" xlink:href="#g63" y="442.184"/>
+ <use x="-9.38268" xlink:href="#g94" y="442.184"/>
+ <use x="-5.85444" xlink:href="#g39" y="442.184"/>
+ <use x="5.37513" xlink:href="#g114" y="442.184"/>
+ <use x="15.1165" xlink:href="#g94" y="442.184"/>
+ <use x="18.6447" xlink:href="#g93" y="442.184"/>
+ <use x="23.3484" xlink:href="#g94" y="442.184"/>
+ <use x="31.1845" xlink:href="#g92" y="442.184"/>
+ <use x="35.8327" xlink:href="#g69" y="442.184"/>
+ <use x="40.2179" xlink:href="#g85" y="442.184"/>
+ <use x="50.6665" xlink:href="#g98" y="442.184"/>
+ <use x="59.2066" xlink:href="#g42" y="442.184"/>
+ <use x="63.1099" xlink:href="#g13" y="442.184"/>
+ <use x="65.7393" xlink:href="#g6" y="442.184"/>
+ <use x="67.8106" xlink:href="#g34" y="442.184"/>
+ <use x="72.4925" xlink:href="#g36" y="442.184"/>
+ <use x="74.9518" xlink:href="#g14" y="442.184"/>
+ <use x="83.6264" xlink:href="#g36" y="442.184"/>
+ <use x="86.0857" xlink:href="#g92" y="442.184"/>
+ <use x="95.0418" xlink:href="#g94" y="442.184"/>
+ <use x="98.57" xlink:href="#g36" y="442.184"/>
+ <use x="101.029" xlink:href="#g92" y="442.184"/>
+ <use x="105.678" xlink:href="#g94" y="442.184"/>
+ <use x="109.206" xlink:href="#g39" y="442.184"/>
+ <use x="120.435" xlink:href="#g109" y="442.184"/>
+ <use x="129.511" xlink:href="#g94" y="442.184"/>
+ <use x="133.039" xlink:href="#g36" y="442.184"/>
+ <use x="135.498" xlink:href="#g13" y="442.184"/>
+ <use x="138.128" xlink:href="#g94" y="442.184"/>
+ <use x="141.656" xlink:href="#g92" y="442.184"/>
+ <use x="146.304" xlink:href="#g13" y="442.184"/>
+ <use x="148.934" xlink:href="#g65" y="442.184"/>
+ <use x="153.319" xlink:href="#g31" y="442.184"/>
+ <use x="155.852" xlink:href="#g85" y="442.184"/>
+ <use x="161.993" xlink:href="#g94" y="442.184"/>
+ <use x="165.521" xlink:href="#g92" y="442.184"/>
+ <use x="174.477" xlink:href="#g49" y="442.184"/>
+ <use x="179.084" xlink:href="#g15" y="442.184"/>
+ <use x="183.229" xlink:href="#g92" y="442.184"/>
+ <use x="192.185" xlink:href="#g47" y="442.184"/>
+ <use x="197.259" xlink:href="#g92" y="442.184"/>
+ <use x="201.907" xlink:href="#g16" y="442.184"/>
+ <use x="205.996" xlink:href="#g94" y="442.184"/>
+ <use x="209.524" xlink:href="#g42" y="442.184"/>
+ <use x="213.428" xlink:href="#g66" y="442.184"/>
+ <use x="218.502" xlink:href="#g30" y="442.184"/>
+ <use x="222.683" xlink:href="#g42" y="442.184"/>
+ <use x="226.587" xlink:href="#g13" y="442.184"/>
+ <use x="229.216" xlink:href="#g94" y="442.184"/>
+ <use x="232.744" xlink:href="#g42" y="442.184"/>
+ <use x="240.955" xlink:href="#g108" y="442.184"/>
+ <use x="249.263" xlink:href="#g69" y="442.184"/>
+ <use x="253.649" xlink:href="#g91" y="442.184"/>
+ <use x="-13.4527" xlink:href="#g13" y="455.025"/>
+ <use x="-10.8234" xlink:href="#g47" y="455.025"/>
+ <use x="-5.74916" xlink:href="#g42" y="455.025"/>
+ <use x="-1.84581" xlink:href="#g6" y="455.025"/>
+ <use x="0.225544" xlink:href="#g85" y="455.025"/>
+ <use x="6.36626" xlink:href="#g53" y="455.025"/>
+ <use x="10.5107" xlink:href="#g92" y="455.025"/>
+ <use x="15.159" xlink:href="#g30" y="455.025"/>
+ <use x="19.3403" xlink:href="#g94" y="455.025"/>
+ <use x="22.8686" xlink:href="#g36" y="455.025"/>
+ <use x="25.3279" xlink:href="#g13" y="455.025"/>
+ <use x="32.2841" xlink:href="#g63" y="455.025"/>
+ <use x="36.3541" xlink:href="#g69" y="455.025"/>
+ <use x="40.7394" xlink:href="#g35" y="455.025"/>
+ <use x="49.5255" xlink:href="#g47" y="455.025"/>
+ <use x="54.5998" xlink:href="#g42" y="455.025"/>
+ <use x="58.5031" xlink:href="#g69" y="455.025"/>
+ <use x="62.8884" xlink:href="#g31" y="455.025"/>
+ <use x="65.4217" xlink:href="#g13" y="455.025"/>
+ <use x="68.0511" xlink:href="#g94" y="455.025"/>
+ <use x="71.5793" xlink:href="#g50" y="455.025"/>
+ <use x="79.7728" xlink:href="#g94" y="455.025"/>
+ <use x="83.301" xlink:href="#g36" y="455.025"/>
+ <use x="85.7604" xlink:href="#g92" y="455.025"/>
+ <use x="90.4086" xlink:href="#g6" y="455.025"/>
+ <use x="92.4799" xlink:href="#g69" y="455.025"/>
+ <use x="96.8652" xlink:href="#g39" y="455.025"/>
+ <use x="103.787" xlink:href="#g94" y="455.025"/>
+ <use x="111.642" xlink:href="#g51" y="455.025"/>
+ <use x="118.494" xlink:href="#g36" y="455.025"/>
+ <use x="120.953" xlink:href="#g42" y="455.025"/>
+ <use x="124.857" xlink:href="#g85" y="455.025"/>
+ <use x="130.997" xlink:href="#g31" y="455.025"/>
+ <use x="133.531" xlink:href="#g94" y="455.025"/>
+ <use x="137.059" xlink:href="#g36" y="455.025"/>
+ <use x="139.518" xlink:href="#g92" y="455.025"/>
+ <use x="148.493" xlink:href="#g97" y="455.025"/>
+ <use x="154.493" xlink:href="#g109" y="455.025"/>
+ <use x="163.569" xlink:href="#g69" y="455.025"/>
+ <use x="167.954" xlink:href="#g92" y="455.025"/>
+ <use x="172.602" xlink:href="#g29" y="455.025"/>
+ <use x="175.71" xlink:href="#g13" y="455.025"/>
+ <use x="182.666" xlink:href="#g96" y="455.025"/>
+ <use x="192.154" xlink:href="#g15" y="455.025"/>
+ <use x="196.298" xlink:href="#g42" y="455.025"/>
+ <use x="200.202" xlink:href="#g36" y="455.025"/>
+ <use x="202.661" xlink:href="#g14" y="455.025"/>
+ <use x="207.028" xlink:href="#g20" y="455.025"/>
+ <use x="217.354" xlink:href="#g39" y="455.025"/>
+ <use x="224.276" xlink:href="#g36" y="455.025"/>
+ <use x="226.736" xlink:href="#g13" y="455.025"/>
+ <use x="233.692" xlink:href="#g6" y="455.025"/>
+ <use x="235.763" xlink:href="#g94" y="455.025"/>
+ <use x="239.291" xlink:href="#g36" y="455.025"/>
+ <use x="241.751" xlink:href="#g92" y="455.025"/>
+ <use x="246.399" xlink:href="#g94" y="455.025"/>
+ <use x="249.927" xlink:href="#g39" y="455.025"/>
+ <use x="-13.4527" xlink:href="#g88" y="467.865"/>
+ <use x="-8.78605" xlink:href="#g36" y="467.865"/>
+ <use x="-6.32669" xlink:href="#g31" y="467.865"/>
+ <use x="-3.79333" xlink:href="#g31" y="467.865"/>
+ <use x="-1.25998" xlink:href="#g94" y="467.865"/>
+ <use x="2.26826" xlink:href="#g92" y="467.865"/>
+ <use x="10.893" xlink:href="#g73" y="467.865"/>
+ <use x="16.9016" xlink:href="#g42" y="467.865"/>
+ <use x="20.805" xlink:href="#g36" y="467.865"/>
+ <use x="23.2644" xlink:href="#g94" y="467.865"/>
+ <use x="26.7926" xlink:href="#g63" y="467.865"/>
+ <use x="30.8627" xlink:href="#g30" y="467.865"/>
+ <use x="35.044" xlink:href="#g15" y="467.865"/>
+ <use x="39.1885" xlink:href="#g4" y="467.865"/>
+ <use x="41.9812" xlink:href="#g94" y="467.865"/>
+ <use x="45.5094" xlink:href="#g68" y="467.865"/>
+ <use x="53.3526" xlink:href="#g33" y="467.865"/>
+ <use x="59.58" xlink:href="#g92" y="467.865"/>
+ <use x="68.2047" xlink:href="#g63" y="467.865"/>
+ <use x="72.2747" xlink:href="#g94" y="467.865"/>
+ <use x="75.803" xlink:href="#g42" y="467.865"/>
+ <use x="83.6828" xlink:href="#g108" y="467.865"/>
+ <use x="91.9908" xlink:href="#g65" y="467.865"/>
+ <use x="96.3761" xlink:href="#g30" y="467.865"/>
+ <use x="100.557" xlink:href="#g94" y="467.865"/>
+ <use x="108.062" xlink:href="#g63" y="467.865"/>
+ <use x="112.132" xlink:href="#g94" y="467.865"/>
+ <use x="115.66" xlink:href="#g35" y="467.865"/>
+ <use x="124.096" xlink:href="#g51" y="467.865"/>
+ <use x="130.948" xlink:href="#g36" y="467.865"/>
+ <use x="133.408" xlink:href="#g42" y="467.865"/>
+ <use x="137.311" xlink:href="#g85" y="467.865"/>
+ <use x="143.452" xlink:href="#g31" y="467.865"/>
+ <use x="145.985" xlink:href="#g94" y="467.865"/>
+ <use x="149.513" xlink:href="#g36" y="467.865"/>
+ <use x="151.973" xlink:href="#g92" y="467.865"/>
+ <use x="156.621" xlink:href="#g35" y="467.865"/>
+ <use x="165.057" xlink:href="#g88" y="467.865"/>
+ <use x="169.723" xlink:href="#g94" y="467.865"/>
+ <use x="173.252" xlink:href="#g30" y="467.865"/>
+ <use x="177.433" xlink:href="#g13" y="467.865"/>
+ <use x="184.039" xlink:href="#g94" y="467.865"/>
+ <use x="187.567" xlink:href="#g36" y="467.865"/>
+ <use x="190.026" xlink:href="#g92" y="467.865"/>
+ <use x="198.651" xlink:href="#g92" y="467.865"/>
+ <use x="203.299" xlink:href="#g36" y="467.865"/>
+ <use x="205.759" xlink:href="#g94" y="467.865"/>
+ <use x="209.287" xlink:href="#g63" y="467.865"/>
+ <use x="213.357" xlink:href="#g42" y="467.865"/>
+ <use x="217.26" xlink:href="#g36" y="467.865"/>
+ <use x="219.72" xlink:href="#g93" y="467.865"/>
+ <use x="224.423" xlink:href="#g94" y="467.865"/>
+ <use x="227.952" xlink:href="#g35" y="467.865"/>
+ <use x="232.411" xlink:href="#g50" y="467.865"/>
+ <use x="240.254" xlink:href="#g66" y="467.865"/>
+ <use x="245.328" xlink:href="#g16" y="467.865"/>
+ <use x="249.417" xlink:href="#g94" y="467.865"/>
+ <use x="252.945" xlink:href="#g42" y="467.865"/>
+ <use x="-13.4527" xlink:href="#g94" y="480.705"/>
+ <use x="-9.92451" xlink:href="#g36" y="480.705"/>
+ <use x="-7.46515" xlink:href="#g92" y="480.705"/>
+ <use x="-2.81693" xlink:href="#g94" y="480.705"/>
+ <use x="3.96369" xlink:href="#g99" y="480.705"/>
+ <use x="13.5364" xlink:href="#g47" y="480.705"/>
+ <use x="18.6106" xlink:href="#g94" y="480.705"/>
+ <use x="22.1389" xlink:href="#g31" y="480.705"/>
+ <use x="24.6722" xlink:href="#g31" y="480.705"/>
+ <use x="27.2056" xlink:href="#g94" y="480.705"/>
+ <use x="33.9862" xlink:href="#g94" y="480.705"/>
+ <use x="37.5144" xlink:href="#g42" y="480.705"/>
+ <use x="41.4178" xlink:href="#g16" y="480.705"/>
+ <use x="45.5065" xlink:href="#g69" y="480.705"/>
+ <use x="49.8918" xlink:href="#g47" y="480.705"/>
+ <use x="54.966" xlink:href="#g13" y="480.705"/>
+ <use x="57.5954" xlink:href="#g94" y="480.705"/>
+ <use x="61.1236" xlink:href="#g35" y="480.705"/>
+ <use x="68.8353" xlink:href="#g73" y="480.705"/>
+ <use x="74.844" xlink:href="#g94" y="480.705"/>
+ <use x="78.3723" xlink:href="#g31" y="480.705"/>
+ <use x="80.9056" xlink:href="#g63" y="480.705"/>
+ <use x="84.9757" xlink:href="#g29" y="480.705"/>
+ <use x="88.0831" xlink:href="#g69" y="480.705"/>
+ <use x="92.4683" xlink:href="#g34" y="480.705"/>
+ <use x="97.1502" xlink:href="#g94" y="480.705"/>
+ <use x="100.678" xlink:href="#g31" y="480.705"/>
+ <use x="103.212" xlink:href="#g31" y="480.705"/>
+ <use x="105.745" xlink:href="#g85" y="480.705"/>
+ <use x="111.886" xlink:href="#g94" y="480.705"/>
+ <use x="115.414" xlink:href="#g92" y="480.705"/>
+ <use x="123.315" xlink:href="#g39" y="480.705"/>
+ <use x="130.236" xlink:href="#g36" y="480.705"/>
+ <use x="132.696" xlink:href="#g13" y="480.705"/>
+ <use x="138.577" xlink:href="#g63" y="480.705"/>
+ <use x="142.648" xlink:href="#g94" y="480.705"/>
+ <use x="146.176" xlink:href="#g42" y="480.705"/>
+ <use x="153.332" xlink:href="#g109" y="480.705"/>
+ <use x="162.407" xlink:href="#g13" y="480.705"/>
+ <use x="165.036" xlink:href="#g69" y="480.705"/>
+ <use x="169.421" xlink:href="#g13" y="480.705"/>
+ <use x="172.051" xlink:href="#g47" y="480.705"/>
+ <use x="177.125" xlink:href="#g94" y="480.705"/>
+ <use x="183.906" xlink:href="#g63" y="480.705"/>
+ <use x="187.976" xlink:href="#g94" y="480.705"/>
+ <use x="191.504" xlink:href="#g35" y="480.705"/>
+ <use x="199.216" xlink:href="#g30" y="480.705"/>
+ <use x="203.397" xlink:href="#g31" y="480.705"/>
+ <use x="205.93" xlink:href="#g68" y="480.705"/>
+ <use x="213.05" xlink:href="#g96" y="480.705"/>
+ <use x="222.538" xlink:href="#g69" y="480.705"/>
+ <use x="226.923" xlink:href="#g47" y="480.705"/>
+ <use x="231.997" xlink:href="#g42" y="480.705"/>
+ <use x="235.9" xlink:href="#g36" y="480.705"/>
+ <use x="238.36" xlink:href="#g13" y="480.705"/>
+ <use x="240.989" xlink:href="#g36" y="480.705"/>
+ <use x="243.448" xlink:href="#g47" y="480.705"/>
+ <use x="248.523" xlink:href="#g35" y="480.705"/>
+ <use x="252.982" xlink:href="#g50" y="480.705"/>
+ <use x="-13.4527" xlink:href="#g63" y="493.545"/>
+ <use x="-9.38268" xlink:href="#g69" y="493.545"/>
+ <use x="-4.99743" xlink:href="#g42" y="493.545"/>
+ <use x="-1.09407" xlink:href="#g93" y="493.545"/>
+ <use x="3.60957" xlink:href="#g94" y="493.545"/>
+ <use x="7.13781" xlink:href="#g88" y="493.545"/>
+ <use x="11.8045" xlink:href="#g94" y="493.545"/>
+ <use x="15.3327" xlink:href="#g31" y="493.545"/>
+ <use x="17.8661" xlink:href="#g31" y="493.545"/>
+ <use x="20.3995" xlink:href="#g13" y="493.545"/>
+ <use x="27.0288" xlink:href="#g69" y="493.545"/>
+ <use x="31.4141" xlink:href="#g31" y="493.545"/>
+ <use x="33.9474" xlink:href="#g35" y="493.545"/>
+ <use x="42.4068" xlink:href="#g19" y="493.545"/>
+ <use x="50.1355" xlink:href="#g36" y="493.545"/>
+ <use x="52.5948" xlink:href="#g13" y="493.545"/>
+ <use x="55.2242" xlink:href="#g13" y="493.545"/>
+ <use x="57.8536" xlink:href="#g94" y="493.545"/>
+ <use x="61.3818" xlink:href="#g42" y="493.545"/>
+ <use x="69.2852" xlink:href="#g36" y="493.545"/>
+ <use x="71.7445" xlink:href="#g92" y="493.545"/>
+ <use x="80.3927" xlink:href="#g49" y="493.545"/>
+ <use x="84.9999" xlink:href="#g15" y="493.545"/>
+ <use x="89.1443" xlink:href="#g31" y="493.545"/>
+ <use x="91.6777" xlink:href="#g31" y="493.545"/>
+ <use x="94.211" xlink:href="#g94" y="493.545"/>
+ <use x="97.7393" xlink:href="#g42" y="493.545"/>
+ <use x="105.643" xlink:href="#g114" y="493.545"/>
+ <use x="115.384" xlink:href="#g94" y="493.545"/>
+ <use x="118.912" xlink:href="#g30" y="493.545"/>
+ <use x="123.094" xlink:href="#g42" y="493.545"/>
+ <use x="126.997" xlink:href="#g68" y="493.545"/>
+ </g>
+</svg>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-wf-cmp.svg b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-wf-cmp.svg
new file mode 100644
index 00000000000..b8effca34a5
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-wf-cmp.svg
@@ -0,0 +1,348 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="440.209pt" version="1.1" viewBox="-13.4025 53.7983 396.851 440.209" width="396.851pt">
+ <defs>
+ <font horiz-adv-x="0" id="yfrak">
+ <font-face ascent="759" descent="-252" font-family="yfrak" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M1 374H36C36 184 43 82 61 -103C64 -127 69 -152 70 -177H91L98 -73H99C116 -113 165 -144 211 -144C229 -144 246 -140 262 -132C324 -101 353 -18 353 66C353 83 352 99 349 115C337 173 302 227 253 260C238 271 221 280 203 286C230 313 259 345 259 396C259 442 236 478 208 504H207L152 434L122 394C119 402 117 411 114 419S86 486 86 491C87 495 89 499 91 502C106 528 135 551 170 551C189 551 206 543 220 537C223 544 251 611 251 616C251 625 241 626 234 627L232 620C213 629 194 641 171 641C142 641 121 622 108 597C88 554 71 484 52 445C40 418 17 398 1 374ZM124 242C126 268 129 295 129 321C129 328 128 336 128 343C128 351 127 358 126 366C126 368 126 369 126 371C126 382 138 386 148 386C177 386 193 356 193 333C193 300 167 276 143 257C137 252 131 247 124 242ZM240 -91C224 -106 202 -115 180 -115C133 -115 103 -65 103 -18C103 -8 119 193 120 198C121 202 124 204 128 204C134 204 141 201 144 200C223 183 282 101 282 19C282 -27 268 -66 240 -91Z" glyph-name="dotlessj" horiz-adv-x="358" unicode="&#xF6BE;"/>
+ <glyph d="M43 483C42 490 41 497 41 504C41 575 73 629 108 669C112 674 124 683 124 690C124 695 120 701 114 701S102 695 98 691C54 647 19 585 19 503C19 481 23 458 32 438S60 399 85 399C98 399 113 403 124 412C135 422 140 437 140 452C140 484 118 506 86 506C69 506 51 499 43 483ZM238 484C238 492 237 501 237 509C240 577 268 633 309 674C313 678 321 683 321 690C321 691 320 692 320 693C320 697 313 701 310 701C305 701 301 698 297 694C252 652 215 583 215 507C215 455 232 399 283 399C314 399 336 423 336 452C336 467 331 481 321 492C311 501 297 506 282 506C261 506 249 496 238 484Z" glyph-name="quotedbl" horiz-adv-x="500" unicode="&quot;"/>
+ <glyph d="M110 -225C131 -181 149 -135 169 -91L209 1L230 48C235 57 239 66 239 77C239 78 239 79 239 80C234 111 211 132 177 132C161 132 145 127 133 116C115 100 113 76 109 45C98 -10 60 -189 60 -191C60 -200 67 -200 74 -205C86 -212 98 -219 110 -225Z" glyph-name="comma" horiz-adv-x="322" unicode=","/>
+ <glyph d="M239 389C166 336 90 287 18 233C17 223 17 211 17 200L41 216C106 263 175 306 238 356C241 365 239 378 239 389ZM239 288C166 235 90 185 18 131C17 121 17 109 17 98C91 150 166 200 238 254C241 264 240 276 239 288Z" glyph-name="hyphen" horiz-adv-x="267" unicode="-"/>
+ <glyph d="M156 -13H157L239 69C232 77 224 85 217 92L180 129C177 132 160 150 156 150C150 150 143 140 139 136L92 89C89 86 76 76 76 69C77 66 80 63 82 61L156 -13Z" glyph-name="period" horiz-adv-x="322" unicode="."/>
+ <glyph d="M156 484L96 424C89 417 81 410 76 401L81 393L156 318H157L217 378C224 385 232 392 237 401L232 409L156 484ZM74 -151L92 -160L226 49C230 54 237 62 237 68C237 73 231 78 228 81L171 138C167 142 162 149 157 150C154 150 151 148 149 146C144 142 94 91 94 91C89 86 79 79 77 72C76 72 76 69 76 69S78 63 79 63L91 48C105 26 112 0 112 -30C112 -59 105 -88 93 -114C87 -127 79 -138 74 -151Z" glyph-name="semicolon" horiz-adv-x="322" unicode=";"/>
+ <glyph d="M514 705C514 704 514 704 514 703C514 698 510 696 506 693L478 675L388 617C378 608 364 604 356 593V152C356 149 356 146 356 143C356 133 349 132 342 129C329 123 317 116 304 110L250 84C247 83 230 74 227 74C224 75 221 78 219 80C214 85 146 159 146 159C232 187 320 253 320 368C320 376 320 384 320 393C321 393 322 455 322 455S321 495 320 495C317 526 309 558 292 585C267 623 222 656 170 656C87 656 17 594 17 520C17 482 30 450 52 433C87 405 157 426 157 365C157 339 144 311 120 311C102 311 82 327 62 327C46 327 31 315 31 296C31 267 67 254 96 254C98 254 100 254 102 254C157 263 179 315 179 370C179 413 169 449 145 469C128 484 102 482 82 485C63 487 44 497 44 521C44 565 87 594 121 594C134 594 147 590 157 586C230 553 246 466 246 382C246 375 246 369 246 362C246 346 246 330 242 314C227 250 184 193 121 171C88 160 52 159 17 159C17 155 16 150 16 146C16 131 28 125 37 118L61 95C75 83 89 71 89 48C89 40 88 32 86 25C85 19 81 11 81 5C81 2 82 0 84 -2C89 -5 96 -11 102 -12C108 -12 175 22 194 32L357 111C360 102 365 94 369 86C375 74 392 45 395 33C396 33 396 24 396 24S396 15 395 15C393 15 389 3 390 3C390 -3 397 -9 401 -13H402L505 70L534 94C538 97 547 102 547 107C547 113 539 121 536 124C523 118 514 110 497 110C468 110 446 130 446 163C446 170 446 176 446 183V563C446 570 446 578 446 585C446 638 481 647 513 671C514 664 520 660 526 660C535 660 544 668 544 678C544 693 530 705 514 705Z" glyph-name="A" horiz-adv-x="573" unicode="A"/>
+ <glyph d="M87 308L97 288C120 295 143 306 164 318C180 326 201 342 201 364C201 374 198 383 195 394C188 421 185 454 165 475C156 483 144 485 133 485C126 485 118 484 111 484C86 484 66 492 66 517C66 520 67 524 67 527C73 576 116 618 174 618C219 618 249 592 271 562C300 520 310 466 314 416C314 413 314 409 314 406C314 399 314 392 314 385C314 376 315 366 315 356C315 335 313 312 303 293C285 258 244 241 202 237C188 236 174 237 160 236C96 230 17 193 17 116C17 92 26 67 48 67C66 67 73 85 73 99C73 111 69 124 64 131C63 133 51 148 51 150C52 153 54 156 56 158C69 171 84 181 108 181C130 181 154 172 172 160C227 125 256 63 305 22C323 7 342 -5 365 -10C366 -10 389 -15 389 -13C400 -12 410 -5 420 0L481 27C518 43 557 57 591 78C654 116 712 182 712 278C712 365 664 454 577 479C562 484 547 486 531 486V487L637 540L631 554C628 553 625 552 622 552C621 552 621 552 620 552C608 552 599 564 593 574C585 587 583 602 579 617C566 655 541 691 493 691C432 691 397 639 378 597C374 586 368 575 366 564C360 578 354 593 346 607C318 658 270 705 193 705C174 705 162 701 146 696C78 669 44 588 44 515C44 474 55 423 85 408C102 400 122 402 140 400C159 397 180 388 180 364C180 352 172 343 162 337C140 323 112 317 87 308ZM514 477L392 416V415C407 415 423 414 438 412C527 401 631 353 641 246C641 234 641 222 638 210C629 164 597 128 565 96C544 75 518 48 482 48C478 48 474 49 470 49C400 58 354 121 308 167C297 178 285 189 273 199C265 205 256 210 249 217C268 217 289 222 307 228C360 246 392 284 392 355C392 368 391 381 391 394C389 438 390 471 381 512C379 518 377 525 377 532C377 533 377 534 377 535C377 541 379 546 381 552C389 580 407 613 443 613C456 613 468 608 477 597C489 583 492 564 496 547C500 523 504 500 514 477Z" glyph-name="B" horiz-adv-x="734" unicode="B"/>
+ <glyph d="M238 54V53C209 31 185 6 136 6C111 6 86 14 66 30C52 41 39 61 39 80C39 101 53 113 72 117C68 110 66 103 66 96C66 75 86 56 108 56C127 56 140 74 140 93C140 125 115 145 84 145C50 145 17 121 17 81C17 73 18 65 20 58C32 17 75 -13 126 -13C171 -13 209 9 238 32C242 35 247 41 253 42C258 42 265 36 270 33C311 9 380 -13 435 -13C439 -13 443 -13 447 -12C452 -10 487 28 487 28L573 117C578 122 596 137 596 144C596 150 589 158 584 158C577 158 571 148 568 145C538 115 498 80 441 80C412 80 382 87 357 96L324 111C330 119 338 126 345 133C381 169 419 226 419 283C419 287 419 290 419 294C413 358 370 409 351 469C346 484 343 500 343 516C343 558 370 592 402 606C406 606 407 570 407 570S406 537 403 537C401 529 398 522 395 515C394 515 393 503 394 503C396 500 404 494 408 494C411 494 413 498 415 501C425 519 433 539 433 566C433 588 428 596 424 616L452 622L485 504L600 537L594 558L577 554C567 588 558 621 549 656L452 644C444 643 421 638 418 638C409 638 405 649 400 654C376 684 335 705 287 705C166 705 109 587 90 498C82 458 77 416 77 374C77 360 78 345 79 330C87 251 119 175 171 115C190 92 213 70 238 54ZM301 126C200 195 155 319 155 437C155 482 161 524 173 560C191 616 229 677 302 677C342 677 371 655 391 629C371 625 350 611 334 598C302 571 274 535 274 478C275 384 341 314 341 228C341 202 332 177 320 155C314 145 307 136 301 126Z" glyph-name="C" horiz-adv-x="623" unicode="C"/>
+ <glyph d="M493 115C452 92 423 73 358 73C332 73 305 77 282 84C189 112 119 191 95 284C88 310 86 337 86 363C86 393 89 444 92 467L98 504C110 565 135 640 198 666C206 669 214 671 222 673C223 673 258 677 258 675C273 673 287 668 300 662C308 658 314 653 322 649V647C306 641 272 619 262 613C231 590 191 559 191 508C191 467 223 437 248 407C264 389 277 367 278 342C278 318 264 288 238 288C237 288 236 288 235 288C226 288 216 294 211 299C188 319 185 354 175 381L154 375C156 364 160 354 164 344C181 305 208 257 263 257C313 257 349 298 349 349C349 366 345 383 338 399C335 403 324 422 324 427C324 434 338 439 343 439C343 439 344 439 344 439C347 439 359 427 363 423L405 383C409 379 417 369 423 369C428 369 432 376 435 379L466 412C471 418 477 425 483 431C486 434 490 437 490 441C490 441 490 442 490 442C490 448 482 454 478 458L439 500C435 505 429 514 422 514C422 514 421 514 421 514C417 514 395 500 395 500C389 497 313 450 311 449C308 449 306 453 304 455C287 479 263 519 263 550C263 590 294 609 319 623C324 625 332 632 339 632C347 632 357 621 360 619L393 594C399 590 407 581 414 581C417 581 420 582 423 584C428 587 474 613 492 621V623L426 673C422 677 407 689 400 689C395 689 390 685 386 683C380 680 349 661 343 661S331 667 326 671C303 688 279 705 240 705C217 705 193 699 173 690C105 659 67 591 44 523C28 473 20 420 18 368C17 368 17 302 18 302C31 158 120 20 259 -8C263 -9 313 -16 313 -12C324 -10 335 -1 345 5L407 42L468 78C479 84 494 87 494 104C494 108 493 112 493 115Z" glyph-name="E" horiz-adv-x="517" unicode="E"/>
+ <glyph d="M171 363L176 377C131 398 85 423 64 470C58 483 55 497 55 511C55 552 78 592 110 617C131 632 163 645 190 645C209 645 226 634 243 625C268 611 292 595 315 578C327 570 338 561 350 554V553C313 537 272 517 245 486C228 466 223 444 223 420C223 379 236 332 246 303C276 224 343 104 343 5C343 -64 311 -122 259 -141C248 -144 237 -145 225 -145C160 -145 95 -95 95 -21C95 42 139 97 159 147C167 167 173 190 173 212C173 271 132 315 78 315C39 315 26 268 17 243L38 235C45 255 51 293 79 293C95 293 112 281 117 266C118 266 119 254 119 254S118 242 118 242C116 223 111 204 103 186C80 129 34 71 34 3C34 -110 138 -167 230 -167C297 -167 343 -139 378 -103C408 -73 429 -25 429 31C429 107 398 180 377 233C365 262 352 291 342 321C340 326 332 347 332 351C332 352 332 352 332 353C334 358 377 398 381 398C382 398 382 398 383 398C388 395 410 371 410 371C413 368 417 361 422 361C428 361 434 369 438 373C450 385 463 397 476 408C473 414 468 419 463 424L436 453C433 457 427 466 421 466C421 466 420 466 420 466C416 465 397 447 391 441C369 420 347 398 323 378C316 422 314 403 310 460C310 465 309 470 309 475C311 504 325 526 343 542C346 545 349 548 353 548C353 548 354 548 354 548C359 548 365 542 369 539L403 514C407 511 414 503 420 503C425 503 427 508 429 510C434 516 494 593 494 593C491 596 484 605 478 605C477 605 476 604 475 604C468 601 465 588 458 588C456 588 455 589 453 590C441 597 345 671 345 671L316 693C307 700 302 705 286 705C238 705 178 687 148 673C89 645 34 593 34 512C34 493 38 475 47 458C71 412 123 381 171 363Z" glyph-name="F" horiz-adv-x="501" unicode="F"/>
+ <glyph d="M66 357L125 428C94 453 76 491 75 531C75 575 99 625 143 641C153 644 163 645 174 645C201 645 226 630 247 614C290 578 333 507 404 507C460 507 495 558 495 604C495 618 489 630 483 643L463 634C467 624 472 615 472 605C472 583 457 566 435 566C403 566 383 588 369 605C339 643 318 705 253 705C245 705 238 705 231 704C138 693 52 630 26 538C21 522 17 503 17 486C17 457 27 440 38 418C42 410 46 402 48 393C50 387 48 379 50 373C53 366 60 360 66 357ZM62 -128C67 -126 80 -123 80 -116C78 -104 72 -91 72 -78C72 -58 89 -49 110 -49S148 -59 164 -72C191 -95 213 -129 249 -138C256 -139 262 -139 269 -139C332 -139 381 -85 410 -46C448 3 478 65 478 133C478 148 477 163 472 178C455 236 410 280 384 333C374 354 365 378 365 402C365 419 369 435 377 446C385 454 390 461 404 461C416 461 428 453 437 444C451 428 456 404 456 383H478C478 429 455 483 399 483C394 483 388 483 382 482C330 474 277 435 277 370C277 340 287 310 301 284C342 211 421 153 421 55C421 -3 390 -67 319 -67C314 -67 310 -66 306 -66C246 -57 218 13 158 22C154 22 150 23 146 23C88 23 50 -21 50 -72C50 -91 55 -111 62 -128Z" glyph-name="I" horiz-adv-x="519" unicode="I"/>
+ <glyph d="M111 144L17 127C23 80 29 34 34 -13C44 -9 53 -3 63 1C95 15 130 21 174 21C225 30 242 86 246 133C247 133 247 196 246 196C243 263 232 316 204 365L256 375C260 355 297 262 298 259C342 138 354 95 423 -13C465 28 507 68 546 111L547 132C529 118 508 104 481 104C451 104 439 136 431 155C423 175 346 382 346 390C346 394 349 396 353 396C360 398 411 408 429 412C435 413 449 414 449 422C449 423 449 424 449 425C448 430 447 434 446 439C442 438 436 436 431 436S424 441 424 446C422 453 420 461 419 468L407 524C405 534 402 544 401 554L418 559C420 566 417 573 416 580C387 574 355 571 325 571C316 571 308 571 299 571C284 571 269 570 254 566C198 549 165 490 165 418C145 440 121 471 121 507C121 515 122 524 124 531C136 613 217 677 313 677C419 677 511 597 511 490C511 423 478 381 440 348V347L456 333C500 365 533 425 533 490C533 541 514 593 478 633C434 681 374 705 311 705C299 705 287 704 275 702C165 685 85 591 57 487C51 467 45 424 45 402C45 397 45 393 47 389C56 374 94 335 100 329L134 293C174 251 223 197 223 130C223 93 205 43 165 43C122 43 111 106 111 144ZM336 415C324 414 204 387 204 387C202 387 199 386 197 386S194 386 193 387C187 390 186 419 186 424C186 431 187 438 188 446C194 486 218 535 268 535C287 535 301 525 309 512C323 488 332 443 336 415Z" glyph-name="K" horiz-adv-x="571" unicode="K"/>
+ <glyph d="M17 58H39C40 64 42 69 46 73L57 77C57 77 61 77 61 77C71 76 80 74 89 70C119 56 141 31 166 10C172 5 192 -12 201 -12C206 -12 212 -9 216 -6C268 20 310 62 338 110C346 124 355 139 359 155C355 157 348 161 342 161S336 156 334 151C320 118 308 78 262 78C246 79 231 86 218 94C192 112 149 160 114 165C151 195 212 216 212 281C207 386 98 442 98 541C98 557 100 571 105 583C121 627 161 666 217 666C263 666 293 629 293 589C293 539 248 501 226 458C219 442 213 426 213 409C213 399 215 389 220 379C233 352 271 318 300 318C332 318 345 348 348 376H325C325 362 319 341 300 341C271 341 250 361 250 387C250 400 256 412 265 423C283 444 308 457 325 479C334 492 336 504 336 520C336 542 331 565 324 586C306 637 271 705 199 705C190 705 180 704 170 702C105 690 54 642 31 581C22 559 17 534 17 509C17 496 18 482 22 469C41 388 132 322 132 237C132 231 132 224 130 218C120 188 86 173 63 154C35 130 17 95 17 58Z" glyph-name="L" horiz-adv-x="385" unicode="L"/>
+ <glyph d="M253 622C243 627 235 634 225 639C204 650 178 656 154 656C95 656 41 627 23 575C17 558 17 541 17 524C17 516 16 507 16 499C16 474 16 448 26 424C40 392 72 381 101 366C120 357 140 343 141 320C141 295 129 274 105 274C95 274 85 277 76 283C69 287 64 294 57 298C54 293 48 286 48 280C49 275 55 271 59 268C72 257 88 251 106 251C149 251 189 278 189 330C189 380 163 421 134 445C105 468 39 492 39 541C39 577 69 609 107 609C114 609 121 608 128 607C189 597 228 547 248 492C274 417 280 327 280 244C280 182 264 145 237 103C229 92 219 82 212 70H211C188 91 164 111 140 130L59 33V32L75 18H76L86 31C105 19 125 9 145 -1L159 -9C161 -10 163 -11 165 -11C166 -11 166 -11 167 -11C171 -11 174 -7 176 -4C247 78 350 172 356 304C356 304 356 346 355 346C351 445 328 539 277 597C275 600 269 605 269 609S271 618 272 621C280 639 293 658 319 658C330 658 341 654 351 651C402 634 432 584 447 535C456 504 460 472 462 439C463 420 462 400 463 381C466 338 471 294 471 250C471 193 461 136 434 97C429 89 423 83 418 75L347 134L256 24C260 21 267 13 273 13C278 13 281 19 283 23C299 17 350 -6 365 -11C365 -11 367 -11 367 -11C372 -10 375 -5 378 -2L400 22C461 89 513 150 538 253C544 282 545 310 545 339C545 403 541 462 529 519C523 551 519 553 510 586C526 593 537 601 558 601C593 601 629 581 648 552C662 531 669 507 675 483C677 472 686 439 686 434C686 433 686 433 686 432C686 429 683 428 681 427C666 420 622 405 613 402C608 400 597 398 594 392S591 375 591 368C586 325 583 279 583 233C583 230 582 185 583 185C586 149 596 115 604 80C607 64 614 29 614 14C614 10 614 6 615 3S626 -13 630 -13L753 106C757 110 767 116 767 122C767 129 758 134 754 138H753C748 133 717 101 712 101C712 101 711 101 711 101C704 101 697 110 694 115C660 154 663 210 661 276C661 294 658 313 658 331C658 352 661 373 676 391C682 398 689 403 696 408L708 384C726 400 737 423 753 441C757 446 766 457 768 463C768 469 761 477 758 482C751 495 746 508 740 522C715 582 696 646 629 671C628 671 596 677 596 675C572 673 557 657 542 640C529 626 517 612 504 599C492 625 477 651 455 670C431 691 396 705 362 705C343 705 325 701 309 691C287 678 261 646 253 622ZM218 65C218 65 214 69 214 69S218 65 218 65Z" glyph-name="M" horiz-adv-x="791" unicode="M"/>
+ <glyph d="M354 574C343 586 335 602 325 614C292 650 249 676 189 676C102 676 17 617 17 513C17 434 58 368 115 346C151 333 218 341 218 295C218 263 201 231 170 231C149 231 128 246 117 264C112 274 109 285 109 297C103 294 89 293 89 283C89 280 90 276 90 273C100 238 130 209 171 209C217 209 241 255 241 299C241 327 233 359 222 378C206 407 184 417 150 428C108 444 40 460 40 520C40 579 102 612 157 612C316 612 335 399 335 253C335 228 333 161 329 141C323 88 305 10 233 10C203 10 172 28 172 64C172 69 173 74 174 78C176 78 178 90 178 90C178 95 170 103 164 103C156 103 148 98 141 96C135 94 128 94 122 94C112 94 102 96 91 98C90 95 89 93 89 90C89 83 93 75 94 68C95 68 95 32 95 32C93 32 91 11 91 11C91 6 98 -4 105 -4C110 -4 115 2 119 4C125 7 131 9 137 9C140 9 143 8 146 8C176 3 198 -13 233 -13C271 -13 309 4 335 29C391 84 413 163 417 239C417 239 417 299 416 299C414 378 401 449 380 515L371 538C369 543 366 547 365 552C365 561 369 572 372 580C384 612 411 650 456 650C487 650 509 627 523 600C546 554 548 495 586 457C596 447 609 436 623 432V431C582 422 539 410 509 379C480 348 476 304 476 255C476 168 501 78 533 17C537 10 541 4 544 -3C548 -9 549 -13 560 -13C562 -13 572 -14 572 -12C578 -9 583 3 587 9L636 87C638 90 652 113 652 115C652 124 640 127 635 129C630 123 624 114 614 114C603 114 593 126 588 136C570 165 565 201 562 234C561 249 562 263 561 278C560 291 559 304 559 318C559 336 561 354 571 369C589 397 623 408 657 417C664 419 669 420 669 430V504C646 505 637 525 630 544L615 587C595 638 565 699 504 705C498 705 471 706 471 703C458 700 446 696 435 690C398 671 360 620 354 574Z" glyph-name="N" horiz-adv-x="692" unicode="N"/>
+ <glyph d="M271 705C271 668 243 641 217 618C194 598 171 578 150 557C127 534 101 504 101 464C101 462 101 461 101 459C101 411 141 376 168 341C184 320 199 295 199 268C199 238 171 217 149 202C134 191 118 181 102 172C92 167 81 164 71 157C42 140 17 107 17 64C17 46 21 28 31 13C35 7 48 -11 56 -11C56 -11 57 -11 57 -11C64 -11 70 -3 73 2C54 14 39 38 39 61C39 85 56 103 78 107C96 107 145 85 151 82C205 58 304 8 362 -6C369 -9 379 -12 386 -12C387 -12 388 -12 389 -12C394 -12 398 -9 402 -7C480 35 551 90 609 157C650 204 690 262 690 340C690 407 667 475 641 518C605 577 545 631 463 641C427 645 390 641 354 649C330 654 299 667 291 691C287 699 288 705 277 705C275 705 273 705 271 705ZM137 177C188 206 270 223 281 292C281 292 281 319 280 319C277 344 264 366 249 386C223 419 175 466 175 518C175 530 178 543 186 555C189 559 196 572 202 572C204 572 207 570 209 569C232 554 261 543 294 543C325 543 354 550 385 551C389 551 392 551 396 551C444 551 491 539 531 510C588 469 633 401 633 309C633 251 613 192 572 151C542 121 498 101 441 101C370 101 306 126 249 147C212 160 177 177 137 177Z" glyph-name="O" horiz-adv-x="712" unicode="O"/>
+ <glyph d="M61 277C63 271 67 257 76 257C78 257 82 258 84 259C137 269 177 316 177 370C177 418 139 446 109 463C79 481 39 501 39 541C39 579 49 636 99 636C105 636 112 635 118 634C157 624 186 591 200 555C212 524 215 491 215 458C215 441 214 423 214 406V163L163 184C149 139 137 102 111 65C108 62 102 54 102 49S113 38 118 35C134 56 157 76 184 76C185 76 185 76 186 76C198 76 215 72 215 56C215 52 214 47 214 44C214 -29 222 -76 232 -147C235 -147 240 -148 244 -148C257 -148 257 -142 262 -132C280 -88 297 -31 299 21C324 7 350 -6 376 -19C383 -7 389 5 395 18C399 27 403 38 409 46C414 52 421 56 427 61C438 70 450 80 460 91C506 142 547 207 547 285C547 394 480 455 480 563C480 584 482 606 487 627C491 644 498 660 503 677C435 675 368 641 332 605C317 590 301 571 294 551C289 566 285 582 279 597C256 652 212 705 133 705C124 705 115 703 107 700C42 679 16 602 16 535C16 491 33 435 53 403C57 396 60 390 71 390C75 390 80 390 83 390C87 390 90 389 94 389C116 388 149 381 149 352C149 305 106 276 71 276C67 276 64 277 61 277ZM403 628C400 596 396 564 396 531C396 440 439 386 463 314C470 291 476 266 476 242C476 240 476 239 476 237C476 178 448 118 413 83C409 79 404 73 399 71C397 71 390 71 390 74C385 76 380 79 375 82L326 109C315 115 301 116 301 132V465C301 481 301 497 304 513C315 564 356 607 403 628Z" glyph-name="P" horiz-adv-x="571" unicode="P"/>
+ <glyph d="M271 705C271 668 243 641 217 618C199 603 182 587 165 571C136 544 101 512 101 461C102 409 145 374 173 335C187 315 199 293 199 268C199 238 171 217 149 202C134 191 118 181 102 172C92 167 81 164 71 157C42 140 17 107 17 64C17 46 21 28 31 13C35 7 48 -11 56 -11C56 -11 57 -11 57 -11C64 -11 70 -3 73 2C53 15 39 38 39 63C39 84 57 106 79 107C89 107 98 103 107 100C179 72 247 35 319 8C330 4 373 -12 386 -12C386 -12 387 -12 388 -12C393 -12 398 -9 402 -7C447 18 489 41 529 72C544 39 573 14 606 -2C620 -7 624 -8 641 -12C641 -12 643 -12 643 -12C649 -11 655 -5 660 -1C693 24 727 51 756 80C760 83 774 94 774 100S765 112 761 116C746 104 733 90 719 78C713 73 705 63 696 63S677 69 671 72C651 82 634 99 623 119C620 125 616 133 616 141C616 148 623 153 628 158C641 171 653 185 664 200C695 242 716 281 720 346C720 351 719 355 719 360C718 377 717 393 713 409C692 514 614 602 510 632C486 639 460 642 435 643C370 645 315 643 290 692C288 699 287 705 278 705C276 705 273 705 271 705ZM137 177C188 206 270 223 281 292C281 292 281 319 280 319C270 386 202 424 180 486C176 496 175 506 175 517C175 530 178 542 185 554C189 559 195 571 202 571C205 571 207 569 210 568C234 552 269 543 304 543C331 543 359 550 386 551C389 551 393 551 396 551C463 551 528 532 580 490C626 454 662 399 662 327C662 322 662 318 662 313C656 193 573 100 445 100C385 100 324 120 268 140C226 155 183 177 137 177Z" glyph-name="Q" horiz-adv-x="798" unicode="Q"/>
+ <glyph d="M39 324H17C17 282 36 230 88 230C103 230 117 234 126 239C159 257 185 294 185 343C185 376 168 399 150 417C118 449 41 476 39 533C39 543 41 554 44 564C54 601 79 629 124 629C151 629 178 620 200 603C255 566 275 475 282 400C287 350 289 300 289 250C289 162 289 56 236 21C220 12 216 12 194 9C194 9 175 10 175 12C145 21 123 51 123 82C123 103 132 124 147 138C155 145 164 150 173 154L159 171C132 155 110 140 68 138C56 138 43 139 31 140C36 127 39 114 39 101C39 82 33 65 25 52C23 49 19 45 19 41C19 35 27 25 33 25C36 25 40 27 42 29C50 33 59 36 68 36C103 36 131 8 161 -6C172 -11 185 -13 197 -13C227 -13 258 0 281 18C346 73 369 179 369 288C369 300 368 311 368 322L365 383C365 391 363 398 363 406C364 412 369 414 374 416C381 420 391 423 399 423C402 423 405 423 408 422C421 418 422 404 423 392L450 182C455 108 478 30 517 -13C552 35 589 82 623 132L604 143C599 135 592 127 586 119C583 114 577 106 569 106C563 106 557 110 553 114C526 141 525 189 520 235C520 235 497 424 493 449C493 452 486 478 486 481S490 486 493 488L513 500L550 521C558 526 567 528 567 540C567 545 566 550 566 553C540 557 547 588 542 611C538 648 514 679 487 696C482 699 477 703 471 703C471 703 470 703 470 703C464 703 461 698 457 695C449 689 441 684 432 680C377 653 351 657 315 604C291 657 241 705 167 705C79 705 27 632 18 558C17 542 17 526 17 510V446C17 442 17 437 17 433C17 420 18 408 27 397C44 380 86 371 106 363C126 356 140 342 140 317C140 288 118 252 86 252C50 252 39 298 39 324ZM360 434C357 468 350 502 342 534L333 563C331 563 329 578 329 578C335 605 375 629 399 629C410 629 420 626 429 618C451 600 455 565 460 538C462 529 467 504 467 501C467 495 461 493 457 490L360 434Z" glyph-name="R" horiz-adv-x="644" unicode="R"/>
+ <glyph d="M376 501L386 521C354 539 317 558 280 558C276 558 273 557 269 557C210 552 178 489 178 429C178 424 178 420 179 415C186 366 229 337 269 314C270 313 311 290 311 295C319 296 328 302 336 305L384 327C428 345 470 372 529 372C599 372 675 331 675 250C675 214 661 178 638 152C595 100 526 70 444 70C353 70 263 109 200 172C138 234 99 324 99 412C99 491 134 566 189 608C208 623 232 639 259 639C289 639 318 623 343 610L434 563C462 550 499 531 525 517C532 513 542 506 551 506C557 506 639 543 670 558C683 563 697 568 707 578C728 598 734 629 734 657L704 645C704 630 703 614 695 601C685 586 666 580 644 580C608 580 571 603 548 616L436 673C423 679 410 685 398 692C391 695 379 704 370 704C363 704 354 701 347 699C293 683 237 664 192 639C98 586 17 486 17 347C17 287 33 235 54 195C113 82 231 9 355 -8C375 -11 396 -13 416 -13C458 -13 500 -6 539 12C624 51 697 137 697 251C697 275 694 300 686 323C660 397 601 452 537 490C536 491 507 508 507 504C501 503 451 480 451 480L328 425C313 419 301 412 283 412C252 412 225 439 225 474C225 508 246 537 282 537C317 537 346 514 376 501Z" glyph-name="S" horiz-adv-x="756" unicode="S"/>
+ <glyph d="M50 364C45 361 36 354 36 348C36 343 40 339 43 336C58 317 84 301 114 301C160 301 191 342 191 392S150 470 118 488C94 501 41 512 41 550C41 563 47 576 52 588C63 612 77 649 111 649C140 649 167 631 182 619C233 573 270 501 282 424C285 409 287 392 287 376C287 317 262 273 233 237C225 227 200 193 186 193C183 193 179 194 176 194C174 194 146 195 146 194C94 191 47 141 47 84C47 63 54 49 64 36C66 33 70 28 74 28C74 28 75 28 75 28C82 28 88 36 91 41C79 51 70 67 70 82C70 108 97 122 123 122C130 122 137 122 143 121C226 111 296 56 350 6C353 3 367 -11 371 -11C373 -11 380 -10 380 -8L396 1L461 39C486 53 514 66 536 85C566 109 594 150 594 199C594 242 569 268 548 292C522 320 476 356 476 406C477 423 491 437 502 449C528 476 560 501 594 518C591 524 589 532 585 536C581 541 573 541 568 545C559 551 551 559 545 569C516 616 520 705 448 705C393 705 352 668 333 633C326 621 320 608 317 594L294 630C266 666 224 705 164 705C158 705 152 704 146 704C69 693 27 611 19 541C18 532 17 523 17 514C17 485 29 465 38 444C42 429 55 432 70 428C100 421 151 410 151 367C151 346 138 323 115 323C85 323 64 344 50 364ZM485 463C456 433 414 403 414 347C414 340 414 333 416 326C428 284 484 257 510 232C528 214 540 199 540 169C540 122 508 72 454 72C450 72 446 72 442 73C402 82 376 119 348 137C324 154 297 167 269 177C255 181 240 184 226 188C253 207 280 226 305 247C338 276 363 306 363 365C363 433 354 499 336 550C334 556 324 577 324 584C325 591 329 599 331 606C343 633 364 655 395 655C396 655 396 655 397 655C426 655 439 630 443 608C452 560 437 473 485 463Z" glyph-name="V" horiz-adv-x="617" unicode="V"/>
+ <glyph d="M435 649C417 662 402 673 373 673C340 673 307 653 295 626C265 658 235 696 189 703C189 703 171 705 171 705S150 704 150 703C68 691 17 610 17 531C17 479 38 432 74 415C88 409 102 410 116 407C133 403 151 386 151 365C151 342 135 314 108 314C87 314 69 327 58 338C56 341 50 350 45 350S30 344 30 339C30 336 32 334 33 332C50 310 78 291 113 291C166 299 188 344 188 397C188 399 188 402 188 404C186 440 165 480 129 492C116 496 103 495 90 497C67 501 44 515 38 539C37 539 37 566 38 566C43 600 61 645 106 645C160 645 196 593 218 566C230 552 242 538 251 522C277 475 279 419 279 366C279 356 279 346 279 335C279 274 257 230 229 196C224 191 213 176 205 176C201 176 198 178 194 179C187 181 180 182 173 182C105 182 49 130 49 67C49 33 64 12 82 -7H83L98 8V9C83 23 70 39 70 64C70 88 86 114 112 114C112 114 113 114 113 114C186 109 230 37 280 0C285 -4 293 -11 300 -11C303 -11 306 -9 309 -7L331 11C361 37 396 58 424 86L463 59L529 15C535 11 565 -11 571 -11C572 -11 572 -11 573 -11C579 -11 587 -6 593 -3C631 16 688 42 717 67C755 101 779 149 787 199C789 211 791 224 791 237C791 240 791 242 791 245C786 292 740 313 708 341C692 355 677 373 674 395C674 402 674 409 675 416C680 438 691 458 706 470L713 456C720 460 725 466 730 472L761 505C766 511 775 517 775 525C775 525 775 526 775 526L791 536L780 556C776 554 770 548 766 548C761 548 758 555 757 558L742 583C711 634 666 705 588 705C532 705 499 671 471 641C478 668 486 694 495 719C492 719 488 720 484 720C469 720 467 710 461 700C451 684 441 667 435 649ZM231 161C262 177 289 198 319 215L342 229C349 234 354 237 354 249C354 253 354 257 354 260C354 277 356 293 356 310C357 332 359 353 360 375C361 375 361 417 361 417S360 495 355 495C349 532 337 566 319 595C316 599 311 604 311 610C311 617 318 623 322 628C336 642 355 651 374 651C383 651 392 649 401 645C408 641 424 634 424 624C424 620 422 616 420 612C405 567 396 522 396 464C396 459 396 455 396 451C405 378 468 324 475 250C475 250 473 208 471 208C464 170 445 136 417 109C402 94 382 80 359 80C329 80 304 102 286 116L231 161ZM485 156C509 195 526 237 542 280C544 286 556 318 556 325C556 333 543 349 542 351L515 395C486 443 461 495 461 557C461 565 462 573 463 581C463 587 463 593 466 599C481 625 504 661 538 661C603 661 640 598 661 559L685 510C688 505 693 498 693 493C693 486 682 481 680 479C647 446 610 402 610 345C610 311 626 294 647 276C679 250 739 225 739 170C739 125 711 91 685 71C679 67 655 50 647 50C646 50 646 50 645 50C640 51 610 72 600 79L522 132C510 140 498 149 485 156Z" glyph-name="W" horiz-adv-x="812" unicode="W"/>
+ <glyph d="M266 23C266 14 266 5 266 -4C266 -75 232 -130 195 -167C191 -171 183 -176 183 -183C183 -184 184 -185 184 -186C184 -190 191 -194 194 -194C199 -194 203 -191 207 -187C252 -145 289 -76 289 0C289 52 272 108 221 108C189 108 168 84 168 54C168 23 190 1 221 1C243 1 255 10 266 23ZM462 23C462 14 462 5 462 -4C462 -75 428 -130 391 -167C387 -171 379 -176 379 -183C379 -184 380 -185 380 -186C380 -190 387 -194 390 -194C395 -194 399 -191 403 -187C450 -143 484 -76 484 6C484 21 483 36 479 51C469 80 454 108 416 108C384 108 364 83 364 54C364 40 369 26 378 16C388 6 403 1 417 1C439 1 451 10 462 23Z" glyph-name="backslash" horiz-adv-x="500" unicode="\"/>
+ <glyph d="M162 484L135 456C113 434 91 412 74 386C38 331 17 254 17 169C17 158 18 148 19 137C26 79 65 25 113 1L97 -13L128 -12C167 16 200 49 237 78C240 61 245 44 251 28C253 25 263 4 263 2C263 -3 257 -9 254 -13L279 -12C300 10 320 33 338 58L339 87C337 85 333 82 329 82C318 82 308 95 304 103C302 109 302 116 302 123V254C302 266 301 279 301 292C301 328 309 354 327 376C330 381 336 385 336 390C336 397 325 407 324 409C315 421 312 422 292 425C251 436 224 446 189 466C180 472 171 479 162 484ZM121 414C134 408 200 368 202 367L222 355C230 351 234 347 234 336C234 333 234 330 234 328V124C234 121 234 118 234 114C234 111 234 108 233 105C228 91 192 81 177 81C137 81 107 116 97 153C91 173 90 193 90 213C90 225 91 238 91 250C92 296 91 345 108 389C111 398 117 406 121 414Z" glyph-name="a" horiz-adv-x="365" unicode="a"/>
+ <glyph d="M22 585C21 583 13 551 13 549C13 540 22 534 26 529C39 510 46 489 46 458C46 446 45 434 45 422V180C45 173 45 166 45 159C45 140 42 127 31 115C23 107 17 109 17 92V73C59 66 101 46 135 22C142 17 150 12 155 6C157 3 156 0 158 -3C160 -8 168 -11 173 -13C197 28 226 66 250 107C286 167 315 237 315 308C315 377 288 429 254 466C252 468 236 484 234 484L113 390C113 408 112 426 112 444C112 488 116 532 144 569C162 593 192 615 231 615V645C168 645 117 608 77 572C73 568 68 560 62 560C62 560 61 560 61 560C56 560 32 580 22 585ZM217 92C183 112 148 131 115 152L113 168C114 235 110 303 115 363C136 383 160 401 183 419C227 381 256 328 256 252C256 214 250 177 241 146C235 127 225 110 217 92Z" glyph-name="b" horiz-adv-x="341" unicode="b"/>
+ <glyph d="M230 106C211 94 204 84 170 84C142 84 122 97 108 111C88 133 84 162 84 191C84 231 87 270 87 310C88 334 82 356 82 379C82 388 85 402 94 407C96 407 106 407 106 405L129 396C144 389 210 362 221 359C235 384 250 410 263 436C234 447 205 459 176 471L154 480C152 481 148 482 145 482C140 482 136 478 133 475C97 445 77 438 53 387C29 341 17 288 17 232C17 155 24 90 66 42C82 22 104 6 128 -4C134 -7 143 -12 150 -12C151 -12 152 -12 153 -12C158 -11 175 8 175 8C181 14 246 79 247 83C247 90 231 105 230 106Z" glyph-name="c" horiz-adv-x="276" unicode="c"/>
+ <glyph d="M127 433V431C106 420 88 403 68 390C63 387 49 377 46 373C45 373 45 366 45 366V154C45 148 46 142 46 137C46 115 35 104 17 99C17 96 16 93 16 89C16 86 17 82 19 80C21 76 28 76 32 74C74 62 119 39 151 19C167 9 181 -3 197 -13L233 44C273 108 313 174 313 271C313 349 282 415 238 450C206 478 167 487 128 499C89 510 38 526 38 577C38 597 51 623 79 623V643C27 643 -11 601 -11 552C-11 492 48 466 88 449C101 443 114 437 127 433ZM113 98V340C113 348 112 357 112 366C112 387 120 401 133 411C137 415 143 421 149 421C156 421 166 415 171 412C227 382 279 322 279 241C279 187 262 138 243 99C240 94 235 80 226 80C224 80 222 80 221 81L199 84C170 89 142 94 113 98Z" glyph-name="d" horiz-adv-x="339" unicode="d"/>
+ <glyph d="M247 461C245 465 241 482 236 482S225 479 221 477L189 463C152 447 114 433 78 413C68 408 38 395 35 385C23 354 17 259 17 235C17 136 52 66 99 10C103 5 113 -11 122 -11C125 -11 148 5 148 5C157 11 237 63 240 68C241 69 240 74 239 74C236 78 232 86 227 86C227 86 226 86 226 86C208 82 219 78 194 78C190 78 187 79 183 79C121 90 88 157 85 214C85 217 84 221 84 225S85 232 87 235C90 238 126 253 126 253L224 294L255 307C261 310 266 310 266 317C266 320 266 323 265 325C265 325 244 449 244 454C244 456 245 459 247 461ZM84 262C84 316 86 371 118 401C129 411 142 417 156 422C164 426 172 430 180 432L196 308L84 262Z" glyph-name="e" horiz-adv-x="294" unicode="e"/>
+ <glyph d="M1 374H36C36 198 43 56 62 -111C65 -133 69 -155 70 -177H91C91 -163 100 -55 100 -55L118 176C122 176 129 317 129 317S128 374 125 374H217V424H124C121 424 117 424 113 426C110 428 109 432 108 435C103 444 86 487 86 491C87 496 90 501 92 505C108 529 135 551 171 551C191 551 205 543 220 537C231 564 242 592 253 620L234 627L232 620C213 629 194 641 171 641C110 641 95 563 79 516C72 492 62 468 52 445C40 418 17 398 1 374Z" glyph-name="f" horiz-adv-x="233" unicode="f"/>
+ <glyph d="M245 76C248 62 251 48 255 35C266 -1 286 -40 286 -78C286 -91 284 -103 278 -116C268 -145 232 -169 199 -169C138 -169 96 -130 65 -102C62 -99 58 -94 53 -94C53 -94 52 -94 52 -94C47 -94 42 -99 37 -101C48 -115 63 -127 77 -139C115 -169 160 -192 209 -192C231 -192 247 -187 265 -182C319 -161 367 -107 367 -38C367 -28 362 -25 357 -18C327 24 314 62 314 137C314 147 314 157 314 167C314 247 325 329 342 397C319 405 338 400 307 405C273 410 241 433 218 446C210 451 182 468 173 468S157 454 154 450L116 405C68 347 38 272 38 197C38 127 66 65 101 25C105 20 118 3 126 3C129 3 157 21 157 21L245 76ZM131 393C157 379 186 369 213 357L235 348C241 346 246 342 246 334C246 330 245 325 245 321V263C245 226 244 188 244 151V121C244 118 245 106 242 106C240 102 203 80 203 80C198 77 178 63 173 62C166 62 160 72 156 77C126 114 105 162 99 219C98 219 98 273 99 273C100 299 100 326 109 351C118 375 117 369 131 393Z" glyph-name="g" horiz-adv-x="392" unicode="g"/>
+ <glyph d="M64 567H63C55 578 45 592 34 600C33 594 30 588 30 582C31 578 34 574 36 570C45 557 47 537 47 517C47 512 47 506 47 501V128C47 124 47 119 47 115C47 85 41 62 17 47C21 43 26 37 32 35C35 35 47 35 47 37C52 38 56 38 60 38C85 38 97 30 117 20C114 17 101 5 101 0C101 0 101 0 101 -1C101 -6 109 -11 114 -11C120 -11 125 -1 127 1L145 21C166 44 186 68 208 90V91L191 103L163 70C152 77 141 83 130 89C121 94 114 96 114 109C114 112 114 116 114 119V323C114 327 114 332 114 336C114 349 118 352 126 358L155 383C159 386 162 389 165 389C167 389 169 388 172 386C188 370 201 349 212 330C240 281 254 225 254 169C254 149 252 129 249 110C234 33 198 -33 158 -88C152 -97 145 -105 139 -114C136 -117 131 -121 131 -126C131 -133 146 -141 148 -142C226 -41 322 62 322 234C322 307 289 379 249 426C247 428 234 444 233 446C233 449 236 452 238 454S254 467 254 469C251 473 246 481 240 481C240 481 239 481 239 481C234 480 202 451 202 451L114 375V549C114 559 114 569 116 579C122 605 146 624 173 625V645C136 645 110 617 87 592C79 584 71 576 64 567Z" glyph-name="h" horiz-adv-x="348" unicode="h"/>
+ <glyph d="M82 505C84 505 87 505 90 505C105 505 109 511 115 521C125 537 134 556 134 578C134 593 123 600 108 600C88 600 80 584 80 563C80 559 80 554 80 550C80 535 82 520 82 505ZM17 392V391L31 378H32L53 400V129C53 123 53 118 53 112C53 103 53 94 55 86C62 47 83 13 113 -13H114C136 14 157 41 177 70C173 73 167 79 162 79C158 79 149 75 149 75C139 75 130 84 125 92C120 103 120 116 120 128V308C120 319 120 330 120 341C120 385 130 409 154 433C137 449 122 467 103 481L94 476C69 447 43 420 17 392Z" glyph-name="i" horiz-adv-x="205" unicode="i"/>
+ <glyph d="M64 567H63C54 578 44 589 34 600L30 582L40 562L47 530C47 496 47 462 46 430C37 412 27 395 17 378H47V141C47 133 47 125 47 117C47 86 41 62 17 47L32 34C53 26 72 16 90 5C98 -1 105 -7 115 -11L123 -4L197 78V79L180 91C177 87 168 73 161 73C157 73 153 76 149 78L125 92C116 97 114 100 114 114C114 121 114 128 114 135V378H217V429H204C217 461 232 509 232 546C232 555 230 564 224 572C213 586 195 586 179 589L114 519C114 529 113 539 113 550C113 591 132 621 180 621C184 621 189 621 194 621V641C188 641 183 641 177 641C169 641 161 641 153 639C124 630 102 608 82 586C76 580 69 574 64 567ZM114 429V466C114 470 114 474 114 479C114 494 123 498 131 507L145 521C147 524 152 530 158 530C163 530 170 528 174 525C188 518 198 509 198 488C198 473 191 451 187 438C185 432 182 428 173 428C170 428 166 429 163 429H114Z" glyph-name="k" horiz-adv-x="259" unicode="k"/>
+ <glyph d="M64 567H63L35 601H34C33 596 30 590 30 584S35 572 37 568C43 556 46 543 46 526C46 518 46 510 46 503V126C46 121 46 117 46 112C46 84 41 61 17 47C32 31 53 26 72 16C87 7 100 -5 115 -13C133 9 153 29 171 50C174 53 189 67 189 73C189 78 179 83 177 83C170 83 167 73 160 73C156 73 117 95 114 102C114 102 114 470 114 470C114 479 113 572 115 572C119 605 154 621 184 621V641C146 641 114 620 88 594C79 586 71 577 64 567Z" glyph-name="l" horiz-adv-x="211" unicode="l"/>
+ <glyph d="M89 484L17 397C35 389 49 373 54 353C56 342 56 331 56 320V173C56 158 57 143 57 127C57 106 56 81 46 69C41 62 33 63 33 50C33 47 34 42 34 39C50 34 60 22 68 8C74 -2 74 -14 90 -14C93 -14 97 -13 100 -13C106 10 121 32 145 39V60C124 69 123 88 123 116V351C123 354 123 358 123 361C123 374 129 377 138 383S155 395 164 402C168 405 173 410 179 410S192 400 196 395C207 381 219 368 230 354C239 345 247 340 247 323C247 317 246 310 246 303V142C246 131 247 118 247 107C247 89 246 77 236 67C231 62 224 61 224 50C224 47 225 42 225 39C240 34 250 23 258 10L266 -4C268 -11 272 -14 281 -14C284 -14 288 -13 291 -13C296 10 313 32 336 39V60C315 68 314 90 314 110C314 113 314 116 314 119V342C314 347 314 354 314 359C314 373 316 373 326 381L357 403C360 406 365 410 370 410S378 405 381 402C386 395 415 361 424 351C428 346 434 341 436 335C437 335 437 328 437 328V96C437 92 437 86 437 82C437 68 439 63 444 53C447 47 463 17 463 12C463 4 456 1 456 -6C456 -12 465 -17 470 -19L540 85V86L523 98L515 84C508 91 505 94 505 109C505 112 505 115 505 118V379C505 381 505 384 505 386C505 401 514 405 527 407V421C501 421 477 433 459 451C453 458 447 465 441 473C439 476 437 481 433 481C432 481 432 481 431 481C428 481 426 479 423 477C404 463 319 401 316 401C315 401 315 401 314 401C312 401 311 402 309 404C293 425 275 444 259 464C255 468 248 481 241 481C238 481 236 479 233 478C226 472 218 467 211 462C182 441 153 418 123 398C123 429 112 462 89 484Z" glyph-name="m" horiz-adv-x="577" unicode="m"/>
+ <glyph d="M241 484L123 398C123 421 116 444 104 464C102 469 95 481 88 481C83 479 69 460 68 459C51 439 32 419 17 397C42 385 55 365 55 332C55 326 55 320 55 315V167C55 161 55 91 55 91C54 83 51 74 46 68C41 63 33 61 33 50C33 47 34 42 34 39C48 34 58 24 66 12L74 -2C76 -9 79 -14 90 -14C98 -14 100 -11 102 -4C110 16 126 34 145 39V60C125 67 122 87 122 107C122 115 123 124 123 131V346C123 350 122 355 122 360C122 374 130 378 140 384C153 394 168 402 179 414H180C202 388 224 362 245 334C249 246 243 151 247 65L272 12L262 -8L277 -19H278L348 85V86L333 98H332L323 84C317 90 313 95 313 107C313 110 313 113 313 116V378C313 380 313 383 313 386C313 401 321 405 335 407V421C308 421 283 435 265 454C256 463 250 475 241 484Z" glyph-name="n" horiz-adv-x="387" unicode="n"/>
+ <glyph d="M18 95V93C42 79 157 8 174 -4C177 -7 181 -11 186 -11C186 -11 187 -11 187 -11C190 -10 239 47 261 82C302 147 319 226 319 303C319 374 305 432 272 484L98 414L55 396C45 392 39 393 39 378C39 374 39 371 39 368V144C39 142 39 140 39 138C39 124 38 111 27 101L18 95ZM226 69C224 66 221 60 217 60C214 60 212 61 210 62C179 82 169 88 131 111L115 121C109 125 105 127 105 137C105 142 106 147 106 151V328C106 333 106 390 106 390C108 398 120 401 127 403C148 412 170 420 191 429C196 431 204 436 210 436C213 436 215 435 217 433C221 426 224 417 227 409C249 351 258 276 258 200C258 152 248 97 226 69Z" glyph-name="o" horiz-adv-x="345" unicode="o"/>
+ <glyph d="M72 498C55 472 30 443 30 406C30 399 31 393 34 387C47 365 77 355 81 328C82 319 82 311 82 302V132L59 140L16 71C39 62 63 54 85 44L88 26C93 -46 99 -117 105 -188H126C132 -117 137 -46 143 25L244 -11C250 0 257 10 264 21C304 85 364 168 364 256C364 338 323 402 288 446C285 450 274 467 267 467C263 467 259 464 256 462L234 446C205 427 179 405 149 387C148 397 138 401 130 406C113 415 92 420 80 435C75 441 71 448 71 456C71 470 85 482 91 489L72 498ZM268 64C230 80 187 91 151 109L149 126C150 206 146 288 151 361C170 377 192 391 213 405C220 392 231 381 240 370C274 326 309 266 309 198C309 156 297 121 282 89C277 81 272 73 268 64Z" glyph-name="p" horiz-adv-x="390" unicode="p"/>
+ <glyph d="M98 484L17 395C47 389 64 367 64 330C64 324 64 318 64 312V144C64 133 64 121 64 109C64 103 64 98 64 92C62 69 40 48 17 47C23 39 30 32 44 32C67 28 87 18 104 8C108 6 127 -11 131 -11C137 -11 141 -4 144 -1C151 8 255 123 255 123V124L240 136H239C224 121 211 105 197 89C192 84 186 74 179 73C172 73 163 80 158 83L142 93C135 95 132 100 132 109C132 112 132 116 132 119V348C132 351 132 354 132 358C132 373 139 376 148 385C158 395 168 406 179 415C201 385 224 356 247 327H248L299 378V379L247 445C238 457 226 469 221 484L132 396C132 428 120 461 98 484Z" glyph-name="r" horiz-adv-x="325" unicode="r"/>
+ <glyph d="M1 374H37C36 370 36 366 36 362C36 357 36 353 36 349C36 335 36 321 37 307C37 307 37 256 37 256C37 184 52 -3 55 -37C59 -84 63 -131 71 -177H91C93 -133 98 -90 101 -46C106 23 111 91 117 160C120 194 129 286 129 316C129 356 124 394 109 431C107 435 87 487 87 491C87 500 98 513 101 516C118 538 144 550 171 550C192 550 204 542 221 537C232 564 243 592 254 620L235 627L233 620C214 629 195 641 172 641C111 641 94 562 79 515C72 491 62 468 52 445C41 418 18 398 1 374Z" glyph-name="s" horiz-adv-x="173" unicode="s"/>
+ <glyph d="M17 378H47V141C47 133 47 125 47 117C47 86 41 62 17 47L32 34C53 26 72 16 90 5C98 -1 105 -7 115 -11L125 -2L217 100V101C213 104 207 110 202 111C197 111 193 105 190 102L173 83C169 79 166 73 160 73C156 73 153 76 150 78C140 84 128 89 118 96C114 100 114 105 114 110C114 112 114 114 114 116V378H195V429H115C118 475 126 515 134 556L115 555L107 543L17 378Z" glyph-name="t" horiz-adv-x="219" unicode="t"/>
+ <glyph d="M99 484L17 379V378L32 366H33C36 370 49 389 54 389C62 389 69 374 71 371C80 354 81 336 81 317C81 314 81 310 81 307V114C81 111 81 107 81 104C81 78 62 69 41 63V42C77 42 108 23 126 -2C130 -7 132 -13 141 -13C155 -13 165 3 174 12L260 98C270 75 282 52 293 29C297 21 304 11 304 2C304 0 303 -1 303 -3L320 -13L398 112L380 122C377 117 365 95 361 94C358 94 356 95 354 97C338 109 328 128 328 154C328 160 328 166 328 171V324C328 341 328 359 328 377C328 394 327 414 335 424C337 428 343 430 344 434C345 434 345 446 345 446C325 450 307 464 301 484C299 484 297 484 295 484C287 484 286 480 283 475C276 460 258 450 243 446C243 444 243 442 243 440C243 430 252 426 255 421C260 410 260 397 260 382C260 368 260 354 260 341V161C260 154 261 147 261 140C261 124 255 122 245 112L210 77C206 73 199 63 193 63C188 63 184 68 181 70L161 88C154 93 149 97 149 109V295C149 338 148 378 134 419C128 438 111 472 99 484Z" glyph-name="u" horiz-adv-x="423" unicode="u"/>
+ <glyph d="M107 565C100 558 93 550 85 543C55 515 17 482 17 438C17 417 36 406 50 394C61 385 70 373 77 360C96 324 97 284 97 244V136C97 129 97 122 97 115C97 88 89 68 62 63V43C78 48 93 56 111 56C153 56 193 28 205 -13C208 -13 212 -14 215 -14C219 -14 222 -13 225 -11C231 -8 245 16 246 18L290 90C326 148 359 212 359 281C359 354 323 411 286 443C281 448 275 453 269 456C270 459 275 459 275 463L260 477L149 362C144 385 124 416 112 429C98 444 74 458 74 480C74 483 74 485 75 488C75 493 77 497 79 501C88 519 110 538 122 550V551L107 565ZM257 71C227 87 212 103 165 103C165 141 165 179 165 216C165 235 165 254 165 273C165 288 163 303 161 317C160 322 157 329 157 334C157 344 166 349 171 354L203 387C207 391 214 402 220 402S233 392 237 388C274 348 303 291 303 222C303 171 289 132 270 94C265 86 260 79 257 71Z" glyph-name="v" horiz-adv-x="384" unicode="v"/>
+ <glyph d="M57 391V125C57 120 57 114 57 108C57 89 55 68 35 60V39C50 34 61 22 69 9C74 0 76 -14 91 -14C94 -14 98 -13 101 -13C107 10 122 32 146 39C146 42 146 45 146 48C146 52 146 55 145 58C143 63 136 66 133 70C127 78 125 88 124 98C123 98 124 236 124 346C124 352 123 390 126 390C128 394 132 396 136 399L157 415C160 417 175 429 180 429C186 429 194 421 196 419L222 401C229 395 238 393 238 380C238 376 237 371 237 368V121C237 117 237 114 237 110C237 95 236 81 222 71C218 68 214 67 210 65C220 57 232 51 243 44L303 7C307 4 330 -11 335 -11C342 -11 348 -1 351 2C364 15 376 29 389 42C444 102 500 179 500 270C500 286 499 303 496 319C481 384 435 433 395 484H394C364 463 337 437 305 418L296 422C269 442 240 461 215 484C193 469 172 452 151 436C142 430 129 415 117 415C90 415 70 439 70 460C70 469 74 475 82 480C87 482 97 486 97 493C97 499 90 504 87 508C77 503 68 497 58 492C40 483 17 474 17 448C17 420 35 396 57 391ZM348 424C391 378 444 310 449 240C449 240 448 195 447 195C436 145 419 112 391 76C387 71 378 58 371 58C365 59 360 64 355 67L321 88C313 93 304 95 304 108C304 113 305 118 305 122V366C305 370 305 373 305 377C305 392 309 393 319 401C329 408 340 415 348 424Z" glyph-name="w" horiz-adv-x="519" unicode="w"/>
+ <glyph d="M87 484C64 455 40 427 17 397C22 394 27 391 32 387C54 366 54 339 54 311V124C54 90 51 60 17 47C21 43 28 35 34 35C38 35 43 36 46 37C54 38 62 39 70 39C83 37 94 35 106 30C112 27 118 23 124 20C120 16 108 6 108 0C108 -5 115 -11 120 -11C127 -11 130 -3 133 0L154 23C178 51 206 77 228 106C224 109 218 115 213 115S203 109 200 105L180 83C176 79 173 73 167 73C163 73 160 76 157 78C147 84 134 89 125 96C121 100 121 104 121 108C121 110 121 111 121 113V322C121 324 121 326 121 329C121 345 133 348 143 356C159 369 178 380 192 395H193C201 385 210 376 218 366C258 319 288 247 288 170C288 157 287 144 285 131C273 49 225 -22 182 -78C175 -86 147 -121 143 -128C148 -131 155 -140 161 -140C165 -140 169 -133 172 -130L197 -100C230 -60 263 -18 290 27C323 82 356 146 356 226C356 320 312 394 259 447C268 454 279 459 285 469L275 484L121 365C121 367 122 410 121 410C118 437 107 465 87 484Z" glyph-name="y" horiz-adv-x="381" unicode="y"/>
+ <glyph d="M119 484C95 447 69 412 46 374L45 354C55 362 66 371 80 371C116 371 142 330 142 300C142 249 92 227 65 204C58 199 54 194 54 184C54 180 54 177 54 174L95 167C87 157 78 149 71 139C41 102 17 48 17 -14C17 -65 34 -116 76 -148C93 -160 119 -172 146 -172C160 -172 175 -169 185 -165C243 -141 273 -72 273 3C273 49 260 96 239 136C226 160 210 180 192 200C212 208 234 212 258 216C256 222 251 233 242 233C238 233 205 227 193 223C189 221 182 218 177 218C176 218 176 218 175 218C170 219 148 237 140 241C147 249 155 256 163 263C186 287 208 316 208 360C208 420 167 466 119 484ZM47 -27C47 -19 48 -10 48 -2C50 39 65 81 88 115C92 121 114 151 121 151C125 150 129 146 132 144C177 104 202 28 202 -45C202 -62 199 -78 192 -93C180 -119 151 -143 117 -143C104 -143 91 -139 80 -129C52 -104 51 -62 47 -27Z" glyph-name="z" horiz-adv-x="299" unicode="z"/>
+ <glyph d="M1 374H36C36 186 47 13 69 -165C69 -172 71 -178 81 -178C84 -178 88 -177 91 -177C91 -164 110 70 118 174C122 221 129 269 129 316C129 354 125 392 111 428C108 435 87 483 87 490C87 500 97 512 101 516C118 536 144 551 171 551C186 550 198 544 212 541C200 505 188 470 173 437L126 374H162C162 368 161 361 161 355C161 340 162 326 162 311C163 206 167 101 177 -4C182 -62 186 -120 196 -177H216C219 -137 254 308 254 319C254 357 250 395 235 430L217 474C215 479 212 485 212 490C212 499 222 511 225 515C241 535 268 551 296 551C314 551 331 542 346 537L379 620L360 628L358 620C338 629 318 641 295 641C283 641 273 637 264 632C260 630 255 624 250 623C245 623 239 626 235 628L232 620C215 629 192 641 170 641C112 641 95 563 80 519C72 494 63 468 52 444C40 418 18 397 1 374Z" glyph-name="Aogonek" horiz-adv-x="305" unicode="&#x104;"/>
+ <glyph d="M232 620C214 629 194 641 171 641C112 641 94 565 80 517C75 503 56 454 52 444C40 417 17 398 1 374H36C36 180 46 20 69 -165C69 -172 71 -178 81 -178C84 -178 88 -177 91 -177C91 -146 96 -114 98 -83C104 3 111 88 118 174C122 222 128 270 129 318C129 356 124 394 110 429L92 473C90 478 87 484 87 490C87 502 100 516 105 521C122 539 145 550 170 550C189 550 206 543 220 537C231 559 239 583 248 606C254 619 258 642 276 642C285 642 290 632 290 623C290 596 274 567 266 553L203 438C192 418 180 399 171 378H201V142C201 133 202 123 202 113C202 84 194 61 171 47C182 35 195 30 210 24C222 18 234 12 245 4C245 4 270 -17 270 -10C273 -9 276 -6 278 -3L293 14C311 34 346 71 362 91C365 93 369 97 369 101S359 114 355 114C350 108 322 74 315 73C312 73 294 83 288 87C277 93 267 95 267 112C267 118 268 123 268 128V378H337V429H269C272 443 272 458 273 473C276 498 281 523 286 547C288 556 293 564 296 573C301 586 305 601 305 614C305 640 294 662 271 662S238 636 232 620Z" glyph-name="Cacute" horiz-adv-x="389" unicode="&#x106;"/>
+ <glyph d="M1 374H36C36 200 43 53 62 -111C65 -133 69 -155 70 -177H91C91 -163 112 103 119 188C123 188 128 318 128 318S127 374 125 374H161C161 200 168 53 187 -111C190 -133 194 -155 195 -177H216C216 -163 237 103 244 188C248 188 253 318 253 318S252 374 250 374H342V424H248C245 424 241 424 238 426S233 433 232 436C229 445 211 489 211 490C211 496 215 501 218 506C233 528 260 551 295 551C315 551 330 543 345 537L378 620L359 627L357 620C337 629 316 641 293 641C282 641 272 638 264 633C259 630 255 624 249 624C246 624 234 625 234 627L232 620C214 628 193 641 172 641C111 641 93 562 79 514C75 502 69 490 65 478C60 467 57 455 52 444C40 417 17 398 1 374ZM212 541C205 520 198 499 190 478L178 448C173 437 169 424 153 424C149 424 145 424 142 424H123C111 424 109 430 105 441L92 473C90 478 86 484 86 490C86 498 93 506 97 512C113 533 138 551 169 551C188 551 195 546 212 541Z" glyph-name="Dcaron" horiz-adv-x="365" unicode="&#x10E;"/>
+ <glyph d="M227 567C220 579 209 591 199 600L195 582C202 570 207 555 211 540V424H210L187 484C176 479 61 412 61 412C45 402 44 399 38 377C25 338 17 284 17 236C17 228 17 220 17 213C17 156 20 93 63 50C78 35 106 18 129 14L115 -4L132 -11C159 10 178 39 205 60C232 48 254 31 280 19L263 0V-1L280 -13L373 91V92C369 95 363 101 358 101C354 101 351 98 349 95C346 92 330 73 326 73S318 76 314 78L293 90C286 94 279 98 279 109C279 111 279 113 279 115V327C279 330 279 333 279 336C279 351 286 354 295 361C307 371 321 381 331 393H332C340 381 351 370 360 358C393 309 420 243 420 167C418 69 375 -17 326 -84C315 -99 303 -112 293 -127L311 -142H312C332 -120 350 -96 368 -72C431 12 488 113 488 221C488 323 446 395 395 448L420 468V469L407 484H406L279 375V554C279 565 279 575 282 585C288 602 302 616 318 622C324 624 331 625 338 626V646C308 645 283 627 263 605C251 592 241 578 227 567ZM136 431C144 409 153 387 162 366L211 393V119C211 116 211 112 211 109C211 93 203 90 194 81C184 71 176 57 158 57C142 57 126 71 117 83C88 120 87 184 85 241C85 252 84 263 83 274V291C82 298 82 305 82 312C82 357 95 409 136 431Z" glyph-name="Ecaron" horiz-adv-x="512" unicode="&#x11A;"/>
+ <glyph d="M198 600L194 582C201 571 206 556 210 542C211 504 211 465 210 427H209L187 483C174 480 162 470 151 464L82 424C74 419 66 415 58 410C43 402 44 395 37 376C25 336 17 285 17 235C17 226 17 218 17 209C17 153 21 94 62 51C78 35 103 18 129 14L115 -4L132 -11L140 -5L203 62H204C217 40 236 20 256 4C260 1 272 -11 278 -11C283 -11 296 6 296 6L343 58C347 63 359 72 359 80C358 83 351 88 346 88C345 88 345 88 344 88C337 86 333 73 325 73C321 73 298 87 290 92C283 97 278 97 278 109C278 114 279 119 279 123V378H381V429H369C379 459 397 509 397 545C397 549 397 552 396 556C394 575 372 589 351 589C338 589 330 574 324 568C309 552 295 536 279 520V556C279 560 279 563 279 567C279 603 310 621 344 621C349 621 354 621 358 621V641C352 641 347 641 342 641C291 641 267 607 241 581C238 578 233 570 228 570C224 570 221 575 219 578C212 585 206 595 198 600ZM349 429H279V471C279 473 279 476 279 478C279 483 279 487 282 491C288 501 298 510 306 518C311 523 314 530 323 530C347 530 363 507 363 488C363 468 352 449 349 429ZM135 431L161 366L184 377L211 378V119C211 116 211 113 211 110C211 94 202 89 193 80S176 57 158 57C144 57 130 67 121 77C99 102 94 134 90 166C88 182 86 197 85 213C86 246 82 275 82 308C82 360 95 406 135 431Z" glyph-name="Eogonek" horiz-adv-x="422" unicode="&#x118;"/>
+ <glyph d="M309 570C303 568 283 556 280 552C273 544 277 529 261 529C252 529 244 534 237 536C253 555 273 572 290 590C294 594 311 609 311 615C311 631 277 638 269 638C254 638 241 629 231 624C209 610 185 599 185 564C185 538 205 503 236 503C253 503 269 514 285 523C297 530 312 542 312 557C312 558 312 559 312 560C312 564 310 567 309 570ZM223 551C221 559 220 567 220 574C220 591 229 612 247 612C257 612 267 608 276 603L223 551ZM162 484L135 456C113 434 91 412 74 386C38 331 17 254 17 169C17 158 18 148 19 137C26 79 65 25 113 1L97 -13L128 -12C167 16 200 49 237 78C240 61 245 44 251 28C253 25 263 4 263 2C263 -3 257 -9 254 -13L279 -12C300 10 320 33 338 58L339 87C337 85 333 82 329 82C318 82 308 95 304 103C302 109 302 116 302 123V254C302 266 301 279 301 292C301 328 309 354 327 376C330 381 336 385 336 390C336 397 325 407 324 409C315 421 312 422 292 425C251 436 224 446 189 466C180 472 171 479 162 484ZM121 414C134 408 200 368 202 367L222 355C230 351 234 347 234 336C234 333 234 330 234 328V124C234 121 234 118 234 114C234 111 234 108 233 105C228 91 192 81 177 81C137 81 107 116 97 153C91 173 90 193 90 213C90 225 91 238 91 250C92 296 91 345 108 389C111 398 117 406 121 414Z" glyph-name="Lcaron" horiz-adv-x="365" unicode="&#x13D;"/>
+ <glyph d="M141 619C138 619 138 597 138 580C138 570 139 547 138 547C138 541 137 535 136 529C136 527 136 525 136 522C136 521 136 519 136 518C139 514 146 508 152 508C160 508 177 529 178 531C198 555 208 588 208 619C208 637 195 651 177 651C156 651 144 636 141 619ZM274 517C279 514 285 508 291 508C294 508 297 511 300 513C328 533 347 578 347 619C347 639 333 651 315 651C282 651 277 614 277 581C276 559 278 538 274 517ZM162 484L135 456C113 434 91 412 74 386C38 331 17 254 17 169C17 158 18 148 19 137C26 79 65 25 113 1L97 -13L128 -12C167 16 200 49 237 78C240 61 245 44 251 28C253 25 263 4 263 2C263 -3 257 -9 254 -13L279 -12C300 10 320 33 338 58L339 87C337 85 333 82 329 82C318 82 308 95 304 103C302 109 302 116 302 123V254C302 266 301 279 301 292C301 328 309 354 327 376C330 381 336 385 336 390C336 397 325 407 324 409C315 421 312 422 292 425C251 436 224 446 189 466C180 472 171 479 162 484ZM121 414C134 408 200 368 202 367L222 355C230 351 234 347 234 336C234 333 234 330 234 328V124C234 121 234 118 234 114C234 111 234 108 233 105C228 91 192 81 177 81C137 81 107 116 97 153C91 173 90 193 90 213C90 225 91 238 91 250C92 296 91 345 108 389C111 398 117 406 121 414Z" glyph-name="Lslash" horiz-adv-x="365" unicode="&#x141;"/>
+ <glyph d="M17 378H47V142C47 133 48 123 48 113C48 84 40 61 17 47C33 30 56 25 76 14C86 6 96 5 96 -13C98 -21 100 -28 103 -35C119 -70 152 -99 201 -99C213 -99 224 -98 235 -95C301 -77 343 -8 343 69C343 141 307 213 249 256C232 268 213 280 192 286V287C203 293 211 305 219 315C235 337 249 363 249 397C249 440 225 486 196 504C175 476 157 433 116 429C116 459 121 490 127 519C129 531 133 544 134 556L115 555L107 543L17 378ZM114 242V366C114 380 122 386 136 386C167 386 182 356 182 332C182 291 142 265 114 242ZM114 204C196 193 253 130 267 57C270 45 272 33 272 21C272 3 267 -14 256 -30C238 -52 210 -71 175 -71C160 -71 145 -66 134 -54C127 -46 117 -27 117 -16C117 -15 117 -15 117 -14C119 -6 133 6 136 10C143 18 190 66 190 74C190 78 181 84 177 84C171 84 166 74 163 70C147 79 130 88 116 99C110 129 116 170 114 204Z" glyph-name="Nacute" horiz-adv-x="364" unicode="&#x143;"/>
+ <glyph d="M74 533L91 522C115 559 159 584 204 584C214 584 225 583 235 580C269 570 303 543 303 502C303 493 300 484 296 477C284 456 260 449 237 449C203 449 165 464 145 476C142 478 138 481 134 481C129 481 126 474 123 471C88 422 51 374 17 324C54 297 98 252 98 192C98 160 83 143 68 123C51 99 32 75 17 49C24 43 30 38 42 38C46 38 49 38 52 38C105 38 150 15 182 -4C186 -7 190 -11 195 -11C195 -11 196 -11 196 -11C200 -10 216 5 216 5L262 47C302 83 348 130 348 188C348 239 316 269 288 291C278 299 246 322 237 327C258 355 277 384 297 412C310 430 328 449 333 471C334 471 335 486 335 486S334 507 332 507C330 519 325 530 319 541C300 579 249 604 203 604C150 604 96 573 74 533ZM84 382C92 393 100 405 110 415C156 402 196 382 240 367L159 252C157 263 155 275 152 286C143 312 129 336 112 356C103 365 95 376 84 382ZM76 98L188 258C197 253 205 247 214 241C248 220 291 192 291 147C291 121 279 100 268 86C264 81 239 50 232 50C228 50 223 55 219 57C174 82 145 93 76 98Z" glyph-name="Eng" horiz-adv-x="372" unicode="&#x14A;"/>
+ <glyph d="M290 570C281 565 270 561 263 554C255 546 259 529 243 529C235 529 225 533 219 536C235 555 255 572 272 590C275 593 293 610 293 614C293 629 262 638 253 638C235 638 225 631 211 623C189 610 166 598 166 563C166 560 166 556 167 552C173 529 193 503 217 503C237 503 257 516 273 527C283 533 294 545 294 558C294 559 294 559 294 560C294 564 292 567 290 570ZM205 550C202 558 201 566 201 574C201 590 211 612 228 612C238 612 248 607 258 603L205 550ZM18 95V93C42 79 157 8 174 -4C177 -7 181 -11 186 -11C186 -11 187 -11 187 -11C190 -10 239 47 261 82C302 147 319 226 319 303C319 374 305 432 272 484L98 414L55 396C45 392 39 393 39 378C39 374 39 371 39 368V144C39 142 39 140 39 138C39 124 38 111 27 101L18 95ZM226 69C224 66 221 60 217 60C214 60 212 61 210 62C179 82 169 88 131 111L115 121C109 125 105 127 105 137C105 142 106 147 106 151V328C106 333 106 390 106 390C108 398 120 401 127 403C148 412 170 420 191 429C196 431 204 436 210 436C213 436 215 435 217 433C221 426 224 417 227 409C249 351 258 276 258 200C258 152 248 97 226 69Z" glyph-name="Zacute" horiz-adv-x="345" unicode="&#x179;"/>
+ <glyph d="M116 517C121 514 127 508 133 508C136 508 139 511 142 513C170 533 189 578 189 619C189 638 176 651 158 651C150 651 142 648 135 643C118 628 123 608 119 580C118 580 118 566 118 557C118 547 119 517 116 517ZM262 618C260 618 259 600 259 585C259 574 260 546 259 546C258 540 258 535 257 529C257 527 257 525 257 522C257 513 265 508 273 508C276 508 279 511 282 513C309 533 329 583 329 619C329 637 316 651 298 651C277 651 265 636 262 618ZM18 95V93C42 79 157 8 174 -4C177 -7 181 -11 186 -11C186 -11 187 -11 187 -11C190 -10 239 47 261 82C302 147 319 226 319 303C319 374 305 432 272 484L98 414L55 396C45 392 39 393 39 378C39 374 39 371 39 368V144C39 142 39 140 39 138C39 124 38 111 27 101L18 95ZM226 69C224 66 221 60 217 60C214 60 212 61 210 62C179 82 169 88 131 111L115 121C109 125 105 127 105 137C105 142 106 147 106 151V328C106 333 106 390 106 390C108 398 120 401 127 403C148 412 170 420 191 429C196 431 204 436 210 436C213 436 215 435 217 433C221 426 224 417 227 409C249 351 258 276 258 200C258 152 248 97 226 69Z" glyph-name="Zcaron" horiz-adv-x="345" unicode="&#x17D;"/>
+ <glyph d="M292 570C287 567 266 556 263 552C256 544 261 529 244 529C236 529 227 533 220 536C236 555 256 572 273 590C277 594 294 609 294 615C294 620 289 624 286 627C276 635 264 638 252 638C236 638 224 630 214 624C192 612 168 597 168 564C168 537 188 503 220 503C238 503 254 515 270 524C282 531 296 543 296 558C296 563 293 568 292 570ZM206 551C204 559 203 567 203 574C203 590 212 613 230 613C240 613 251 608 259 603L206 551ZM99 484L17 379V378L32 366H33C36 370 49 389 54 389C62 389 69 374 71 371C80 354 81 336 81 317C81 314 81 310 81 307V114C81 111 81 107 81 104C81 78 62 69 41 63V42C77 42 108 23 126 -2C130 -7 132 -13 141 -13C155 -13 165 3 174 12L260 98C270 75 282 52 293 29C297 21 304 11 304 2C304 0 303 -1 303 -3L320 -13L398 112L380 122C377 117 365 95 361 94C358 94 356 95 354 97C338 109 328 128 328 154C328 160 328 166 328 171V324C328 341 328 359 328 377C328 394 327 414 335 424C337 428 343 430 344 434C345 434 345 446 345 446C325 450 307 464 301 484C299 484 297 484 295 484C287 484 286 480 283 475C276 460 258 450 243 446C243 444 243 442 243 440C243 430 252 426 255 421C260 410 260 397 260 382C260 368 260 354 260 341V161C260 154 261 147 261 140C261 124 255 122 245 112L210 77C206 73 199 63 193 63C188 63 184 68 181 70L161 88C154 93 149 97 149 109V295C149 338 148 378 134 419C128 438 111 472 99 484Z" glyph-name="dcroat" horiz-adv-x="423" unicode="&#x111;"/>
+ <glyph d="M154 650C150 650 146 649 143 647C122 638 121 612 121 591C121 588 121 584 121 581V566C121 559 120 552 120 545C120 540 120 534 119 529C119 527 119 525 119 522C119 521 119 519 119 518C122 514 129 508 135 508C138 508 141 511 144 513C170 535 190 577 190 616C190 637 181 651 160 651C158 651 156 650 154 650ZM257 517C262 514 268 508 274 508C278 508 282 512 284 513C311 540 330 569 330 619C330 639 316 651 298 651C278 651 267 636 263 619C259 598 259 530 257 517ZM99 484L17 379V378L32 366H33C36 370 49 389 54 389C62 389 69 374 71 371C80 354 81 336 81 317C81 314 81 310 81 307V114C81 111 81 107 81 104C81 78 62 69 41 63V42C77 42 108 23 126 -2C130 -7 132 -13 141 -13C155 -13 165 3 174 12L260 98C270 75 282 52 293 29C297 21 304 11 304 2C304 0 303 -1 303 -3L320 -13L398 112L380 122C377 117 365 95 361 94C358 94 356 95 354 97C338 109 328 128 328 154C328 160 328 166 328 171V324C328 341 328 359 328 377C328 394 327 414 335 424C337 428 343 430 344 434C345 434 345 446 345 446C325 450 307 464 301 484C299 484 297 484 295 484C287 484 286 480 283 475C276 460 258 450 243 446C243 444 243 442 243 440C243 430 252 426 255 421C260 410 260 397 260 382C260 368 260 354 260 341V161C260 154 261 147 261 140C261 124 255 122 245 112L210 77C206 73 199 63 193 63C188 63 184 68 181 70L161 88C154 93 149 97 149 109V295C149 338 148 378 134 419C128 438 111 472 99 484Z" glyph-name="section" horiz-adv-x="423" unicode="&#xA7;"/>
+ </font>
+ <font horiz-adv-x="0" id="ygoth">
+ <font-face ascent="751" descent="-249" font-family="ygoth" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M0 635C26 616 54 591 54 548V525V148C38 126 24 101 11 75C67 44 118 9 177 -19L188 -15C221 4 255 23 287 43H288L313 25C337 11 356 -8 383 -19L393 -15C445 14 496 43 545 74C543 83 539 89 536 96C536 196 535 297 537 395L547 417L399 490C389 465 375 441 356 421C353 418 340 403 335 403C331 403 328 407 325 410C319 415 229 495 227 495L138 390V527V560C138 577 139 593 144 609C150 630 168 656 196 656C210 656 218 648 222 634C226 637 232 641 232 648C232 662 216 669 203 669C180 669 163 657 148 648L109 623C104 620 83 604 78 604H77C71 604 65 612 60 615L28 641C25 644 20 649 15 649S0 639 0 635ZM444 39C412 62 376 81 346 107L344 126V357C357 373 372 387 390 399C413 391 432 380 451 368C451 368 452 347 452 347C452 246 453 144 451 46L444 39ZM238 75C247 69 247 63 247 53C247 48 245 42 239 42S215 55 215 55L163 85C153 91 138 94 138 111V122V335V344C138 362 149 369 158 379L180 404C182 407 186 414 191 414C197 414 202 407 206 404L236 377C241 373 246 369 247 362V128C247 121 248 113 248 105C248 101 248 98 247 94C245 87 240 82 238 75Z" glyph-name="circumflex" horiz-adv-x="573" unicode="&#x2C6;"/>
+ <glyph d="M154 469C146 452 137 435 125 421C98 391 61 371 25 354C32 341 40 329 46 315C49 251 47 179 46 115C40 101 32 89 25 76C82 45 135 10 193 -20L203 -16L285 32L275 51L253 42L243 47C207 70 167 88 133 113L131 135C131 222 130 310 132 394L142 410C168 395 195 379 222 365C236 389 250 413 263 438L198 475L179 486C175 489 170 493 163 493C150 492 147 487 131 487C94 487 68 511 58 545C57 545 56 562 56 562S56 572 57 572C65 634 124 666 185 666C250 666 308 628 346 586C351 580 355 574 361 569V568C324 513 292 454 257 398H299V131C299 126 300 121 300 116C300 110 299 105 297 101C294 97 279 81 279 75C281 68 293 56 296 53L340 1C343 -2 354 -19 359 -19C363 -19 368 -15 372 -13L400 3C438 23 472 45 510 66L500 85C471 71 444 54 416 38C405 52 394 65 384 80C381 183 384 293 383 398H467V462H383C383 504 388 545 394 587H384C380 587 377 587 374 588C368 591 353 611 352 612C315 652 254 688 187 688C107 688 35 638 35 562C35 516 67 466 124 466C134 466 144 467 154 469Z" glyph-name="hungarumlaut" horiz-adv-x="444" unicode="&#x2DD;"/>
+ <glyph d="M43 581C29 558 14 525 14 494C14 491 14 488 15 486C19 481 42 471 44 470L97 444C107 439 117 433 128 429C104 405 78 384 55 359L54 347V116L33 75C82 44 126 10 177 -19L188 -15C221 4 255 23 287 43H288L313 25C337 11 356 -8 383 -19L393 -15C445 14 496 43 545 74C543 83 539 89 536 96C536 196 535 297 537 395L547 417L399 490C384 453 361 424 332 398L342 417L260 457C193 491 124 523 58 558L43 581ZM238 75C247 69 247 63 247 53C247 47 244 42 238 42H237C233 42 210 58 210 58L164 89C155 96 138 101 138 118V124V347V364C138 376 138 387 141 398C143 403 146 414 154 414C156 414 158 414 159 413C164 411 208 388 226 380C238 374 248 374 248 356C248 351 247 346 247 341V119V102C247 86 243 91 238 75ZM444 39C412 62 376 81 346 107L344 126V357C357 373 372 387 390 399C413 391 432 380 451 368C451 368 452 347 452 347C452 246 453 144 451 46L444 39Z" glyph-name="breve" horiz-adv-x="590" unicode="&#x2D8;"/>
+ <glyph d="M100 495L37 442L72 398H54V137L30 149C16 125 2 101 -11 75C4 68 19 60 34 52C44 47 54 46 54 32V25V-15V-48C54 -78 53 -107 41 -135C34 -151 24 -164 14 -178L34 -188L76 -127C99 -141 121 -157 144 -171C159 -181 178 -195 201 -195C216 -195 233 -189 233 -175C233 -167 226 -163 222 -160C219 -173 213 -181 199 -181C176 -181 158 -161 151 -147C138 -125 138 -99 138 -75V-1C151 -7 164 -14 177 -20L187 -16C216 2 246 18 275 36H276C291 17 306 -2 323 -19L333 -15C370 8 405 34 445 55L452 50L512 -21H513L576 32L541 76H559C560 184 557 298 560 400C569 411 580 420 590 429C551 450 517 475 476 493L464 487C421 458 379 428 338 397H337L246 460V461C252 467 260 471 264 480L252 495H251L189 438C182 432 176 424 166 420L159 426C140 450 120 473 100 495ZM183 402H184C196 390 213 381 227 371C237 364 247 363 247 346V336V98V92C247 87 246 82 242 77C246 69 247 62 247 53C247 48 246 43 240 43C237 43 222 51 217 53L162 81C153 87 138 88 138 105V116V341V348C138 362 145 366 153 373C162 381 172 389 182 397L183 402ZM475 230C462 230 448 229 434 229C396 229 370 237 346 256C339 261 331 267 331 280V288V347V353C331 364 340 370 346 375C361 388 411 427 428 427C440 427 449 418 456 413C465 408 475 404 475 390V384V230ZM331 220V239L351 225L331 220ZM431 77L432 74C415 64 400 53 381 45C369 53 361 65 352 76H370V157C370 183 380 208 412 208H421H475C475 176 476 143 473 114C460 100 445 89 431 77Z" glyph-name="guillemotleft" horiz-adv-x="612" unicode="&#xAB;"/>
+ <glyph d="M100 495C85 481 69 469 53 455C49 452 39 447 39 441V440C39 435 45 430 48 427L72 398H54V137L30 149L-12 76C3 68 18 60 33 53C44 48 54 46 54 30V23V-16V-41C54 -74 53 -107 40 -138C33 -153 24 -165 14 -178L34 -188L76 -127C96 -141 117 -154 137 -167C155 -179 175 -195 202 -195C215 -195 232 -187 232 -175C232 -168 225 -163 221 -160C218 -173 212 -181 197 -181C174 -181 157 -159 150 -146C138 -124 138 -99 138 -75V-1C151 -8 163 -15 177 -20C219 1 257 26 299 48L309 44C339 23 368 1 399 -19L411 -16C446 5 484 23 516 47L518 67C501 59 482 45 463 45H459C447 47 425 66 419 70L387 92C379 98 368 100 368 114C368 118 369 122 369 125V164V174C369 190 376 194 385 204L419 244L540 387V388L433 495H432C405 471 377 449 346 431C345 431 313 411 313 415C306 417 299 424 293 428L265 447C259 451 253 456 246 459C252 465 258 472 263 479L251 495L222 469C203 453 189 432 166 420L159 426C139 449 121 473 100 495ZM181 400C191 399 228 369 229 369C238 364 246 361 246 346V336V67C246 64 247 60 247 55S246 45 242 43C240 43 233 43 233 45C228 47 179 73 160 82C149 87 138 89 138 106V115V336V347C138 362 143 365 152 372C162 381 172 389 182 397L181 400ZM369 221V402V411C369 419 373 424 380 424C384 424 387 421 389 419L445 363C453 355 461 346 470 339L369 221Z" glyph-name="guillemotright" horiz-adv-x="556" unicode="&#xBB;"/>
+ <glyph d="M100 495L37 442L72 398H54V137L30 149C16 125 2 101 -11 75C4 68 19 60 34 52C44 47 54 46 54 32V25V-15V-48C54 -78 53 -107 41 -135C34 -151 24 -164 14 -178L34 -188L76 -127C99 -141 121 -157 144 -171C159 -181 178 -195 201 -195C216 -195 233 -189 233 -175C233 -167 226 -163 222 -160C219 -173 213 -181 199 -181C176 -181 158 -161 151 -147C138 -125 138 -99 138 -75V-1C151 -7 164 -14 177 -20C217 -2 251 22 287 43H288L313 25C337 11 356 -8 383 -19L393 -15C445 14 496 43 545 74C543 83 539 89 536 96C536 196 535 297 537 395L547 417L399 490C389 464 374 439 354 419C350 415 340 402 333 402C327 404 310 417 308 418L270 444C262 449 254 455 246 460V461C252 467 260 471 264 480L252 495H251L189 438C182 432 176 424 166 420L159 426C140 450 120 473 100 495ZM184 402C204 387 225 373 245 357L247 335V94L238 75C247 70 247 64 247 54C247 49 246 43 240 43C236 43 233 45 230 47C216 53 162 81 161 82C152 87 138 89 138 105V116V341V348C138 362 145 366 153 373C162 381 172 389 182 397C183 398 181 402 184 402ZM444 39C412 62 376 81 346 107L344 126V357C357 373 372 387 390 399C413 391 432 380 451 368C451 368 452 347 452 347C452 246 453 144 451 46L444 39Z" glyph-name="endash" horiz-adv-x="590" unicode="&#x2013;"/>
+ <glyph d="M53 630L29 601C12 576 -1 545 -1 514C-1 501 1 487 8 474C20 449 49 433 54 404V148C47 144 43 134 39 127C30 110 19 93 10 76C21 69 170 -19 176 -19H178C185 -19 205 -5 206 -4L268 31C274 34 292 47 299 47C303 47 326 30 326 30L372 -2C377 -6 392 -20 399 -20C403 -20 406 -17 409 -15C417 -11 505 40 505 40C511 44 516 46 516 57C516 60 515 64 515 67C498 59 479 45 459 45C444 45 423 66 418 69L385 92C377 97 366 101 366 115C366 119 367 123 367 126V164V174C367 186 370 191 377 198L396 221L470 308L519 365C522 369 535 382 535 387C535 391 531 394 528 397L430 495H429C404 471 375 450 345 432C340 428 321 416 314 416C305 416 297 425 292 428C277 438 262 451 246 459C252 465 258 472 263 479L251 495C212 461 176 425 138 390C138 431 128 454 109 482C89 510 54 531 54 575C54 592 61 605 70 614L53 630ZM368 221H367V377C367 385 366 394 366 402C366 413 367 424 377 424H378C381 424 383 422 385 420L442 363C450 355 458 346 467 339C434 299 399 262 368 221ZM138 111V118V339V348C138 360 142 364 150 370C155 374 177 398 183 399C189 399 195 393 199 390L228 370C237 363 246 362 246 346V338V65V55C246 49 245 42 239 42C232 42 223 50 218 53L162 85L147 94C140 96 138 102 138 111Z" glyph-name="ffi" horiz-adv-x="556" unicode="&#xFB03;"/>
+ <glyph d="M140 430C104 399 66 370 32 337C31 310 31 282 31 254C68 284 105 313 139 346C142 372 141 403 140 430ZM140 220C104 189 66 160 32 127C31 100 31 72 31 44C68 74 105 103 139 136C142 162 141 193 140 220Z" glyph-name="hyphen" horiz-adv-x="156" unicode="-"/>
+ <glyph d="M138 495L79 436V435L138 376H139L198 435V436L138 495ZM138 98L79 39V38L138 -21H139L198 38V39L138 98Z" glyph-name="colon" horiz-adv-x="278" unicode=":"/>
+ <glyph d="M189 664C183 653 175 644 167 634C138 599 108 575 70 551C61 545 52 545 52 529C52 524 53 518 53 514V456C53 448 54 440 54 432C54 426 53 420 52 414C51 406 36 361 31 347H53V-141L63 -139L71 -128C92 -85 116 -44 136 1C142 186 133 389 138 571L152 587H153C171 571 190 555 209 540L239 591C242 596 249 604 249 611S239 623 235 627L207 650C201 655 196 660 189 664ZM175 398H217V129C217 124 218 120 218 115S217 105 215 101C215 101 192 75 197 75C197 72 210 58 213 53L257 1C259 -2 272 -19 277 -19C281 -19 286 -15 290 -13L318 3C354 24 391 44 427 66L417 85C389 71 365 53 335 41C320 50 313 67 302 79L301 95V398H385V462H301C302 506 304 549 311 587L291 586L281 573L208 454L175 398Z" glyph-name="less" horiz-adv-x="377" unicode="&lt;"/>
+ <glyph d="M83 532L102 522C101 525 101 529 101 533C101 545 105 558 110 569C123 601 159 626 198 626C211 626 223 624 235 619C262 608 285 587 315 587C355 587 380 615 404 639C392 623 376 610 362 595C326 557 292 519 272 470C267 457 262 443 260 429C242 441 220 448 199 448C164 448 126 427 113 397C150 397 187 384 216 360C224 353 247 334 247 320C247 316 246 312 246 308C232 315 216 319 200 319C169 319 138 305 124 274C162 274 196 250 210 215C214 206 217 195 217 185C217 174 208 163 204 157C177 115 137 79 94 54C80 46 64 40 49 33C36 26 23 18 10 12L18 -9C29 -4 40 2 51 7C122 41 211 67 304 67C399 67 482 36 544 -21H545L661 135V136L644 149H643C624 127 604 115 565 115C528 115 498 123 463 125C457 125 397 127 397 125C383 124 370 122 356 122V123C376 135 394 155 409 173C452 226 479 292 479 365C479 395 476 426 474 455C473 455 471 497 472 497C473 522 477 546 488 569C510 615 559 636 608 636V653H594C556 653 518 652 483 638C473 633 464 628 455 622C386 568 391 462 387 367V339C385 284 380 227 352 178C339 156 316 128 295 116C288 111 280 111 272 109C260 107 247 104 235 101V102C265 116 301 151 317 177C345 218 354 270 354 335V381C354 403 354 424 357 446C367 507 395 553 424 599C435 619 457 663 471 677C474 680 480 684 480 689C480 695 474 701 471 706C443 690 426 650 384 650C367 650 352 655 336 663C302 680 276 706 230 706C174 705 143 650 120 606C114 595 83 533 83 532ZM426 664C426 664 421 658 421 658S426 664 426 664ZM413 649L420 657L413 649ZM404 639L413 649L404 639Z" glyph-name="L" horiz-adv-x="654" unicode="L"/>
+ <glyph d="M193 455C182 457 171 459 161 459C141 459 121 454 102 446C98 444 74 431 74 427C81 428 88 428 94 428C101 428 108 428 115 426C150 418 179 390 189 356C182 357 176 357 169 357C146 357 123 352 102 342C98 340 73 325 73 322C110 322 146 306 172 279C183 268 191 255 200 242C188 242 176 242 164 240C131 233 100 212 84 182C104 192 128 200 152 200C174 200 195 193 212 175C223 162 226 150 226 127C223 94 201 69 180 53C174 49 169 43 162 40S147 36 140 34C72 17 14 -40 14 -110H36C36 -104 37 -97 39 -91C50 -64 82 -60 111 -60C111 -60 181 -62 181 -63C186 -63 232 -66 232 -62C309 -45 342 40 348 117V273C348 276 348 280 350 282C352 288 375 294 378 295C401 302 426 306 450 306C487 306 513 296 543 286C540 274 539 261 537 249C515 148 479 66 429 -11C420 -26 408 -40 400 -55L417 -67H418C428 -55 439 -43 451 -33C479 -12 516 1 552 1C575 1 598 -4 615 -11C619 -13 631 -19 636 -19C639 -18 659 17 659 17C680 53 703 88 723 124L704 135L685 102C669 107 656 111 636 111C604 111 573 101 545 86C534 80 524 72 514 66C533 89 548 116 563 142C609 218 647 308 647 408C647 434 644 460 635 485C614 546 570 596 521 636C500 654 477 669 454 685C449 688 424 704 419 704S410 701 406 698L208 580C204 577 196 575 194 570C193 570 193 564 193 564C194 543 193 460 193 455ZM348 589C428 581 496 530 529 456C497 441 481 427 434 427C407 427 381 434 361 443C354 446 348 449 348 459V464V589ZM545 307C516 321 483 328 450 328C411 328 377 319 348 306V428C372 412 403 405 433 405C478 405 506 420 536 439C542 417 547 396 548 373C548 373 547 307 545 307ZM234 46V47C262 60 285 87 291 117C293 117 294 146 294 146C292 237 293 538 293 574V578C293 585 297 588 304 588C311 589 319 589 326 590V173V145C326 136 326 126 324 118C313 77 273 54 234 46Z" glyph-name="N" horiz-adv-x="738" unicode="N"/>
+ <glyph d="M95 442C69 420 33 380 33 335V333C33 280 71 239 116 216C150 199 187 193 223 193C243 193 262 195 281 197L268 152C184 152 104 146 52 106C31 92 13 67 13 34C13 16 19 -2 30 -16C51 -43 87 -55 132 -55C222 -55 308 -36 371 -4C376 -1 396 11 402 11S444 -12 455 -21H456C498 21 558 74 595 117C643 176 695 253 695 351C695 382 687 412 668 437C638 475 599 496 529 496H515C492 496 403 491 387 488L448 700L426 706L412 655C397 660 226 705 223 705C212 705 204 693 199 689C181 673 104 608 95 601L77 585C69 579 64 576 64 563V543C64 516 69 490 81 466C85 458 95 442 95 442ZM382 556V554C382 549 380 543 379 539C376 530 367 492 361 488C355 483 294 483 293 483H261H246C219 483 192 484 167 493C141 502 118 523 118 558C118 588 136 607 172 607H179C221 607 288 587 314 579L366 564C371 563 382 562 382 556ZM313 308C274 307 275 304 232 304C201 304 164 306 141 313C116 321 92 340 90 368C90 395 98 402 109 423C138 398 168 376 222 376C228 376 233 377 239 377C271 378 302 380 334 382L313 308ZM336 310L351 362C353 368 354 379 359 383C362 386 368 386 374 386H382C408 389 558 403 558 396C582 393 605 382 622 365S656 316 656 285C656 238 626 193 598 157C587 143 541 88 532 88H530C527 88 508 100 501 103C512 120 520 137 528 155C543 182 568 230 568 259C568 272 564 285 554 297C539 314 516 317 494 317C454 317 357 313 336 310ZM476 116C417 139 354 152 291 152C293 160 302 196 307 200C311 202 317 202 322 203L355 209C364 210 373 212 382 213C387 214 462 223 462 218C481 214 499 195 499 172C499 151 484 135 476 116ZM375 24C365 20 356 14 347 10C291 -18 210 -34 133 -34C107 -34 79 -26 68 1C65 6 64 11 64 17C64 58 109 71 144 71C172 71 199 65 226 60C276 52 328 44 375 24Z" glyph-name="S" horiz-adv-x="710" unicode="S"/>
+ <glyph d="M322 405C305 417 287 428 270 439C249 453 230 461 230 494H229C220 476 209 459 195 445C158 409 103 398 53 398C52 355 55 308 52 267C38 250 24 234 9 218V217L84 143V142C69 130 56 113 43 98C11 63 -31 20 -31 -29C-31 -38 -30 -47 -27 -56L9 -21V-20C4 -15 0 -8 0 1C0 15 10 27 18 37C21 42 28 52 34 52H35C38 52 52 40 57 36L106 -5C111 -10 119 -19 126 -19C132 -19 174 7 189 15C224 36 335 99 354 111L341 129C340 147 340 166 340 185C347 188 351 198 354 205C364 222 376 239 384 257L279 325C298 347 319 369 339 391C364 420 374 431 374 484V494C374 507 369 517 356 517C348 517 340 509 340 501C342 485 350 469 350 452C349 431 332 421 322 405ZM141 205L128 217H137V388L173 400L183 395C209 377 237 360 264 343L230 305L141 205ZM94 118C94 122 99 126 101 129C109 137 191 228 191 228L210 249C213 252 217 260 222 260C226 260 230 257 232 255C240 250 255 244 256 233V92V88C256 84 256 81 253 79C249 75 191 41 185 41C178 41 170 52 167 54L132 83C122 92 113 100 103 108C100 110 94 114 94 118Z" glyph-name="quoteleft" horiz-adv-x="372" unicode="&#x2018;"/>
+ <glyph d="M101 225L14 202L35 159C36 143 36 128 34 113C21 100 6 88 -8 76V75C20 44 43 9 73 -19L83 -15C120 8 155 34 195 55L202 50L262 -21H263L326 32L291 76H309C310 184 307 298 310 400C320 410 331 419 341 429C320 440 232 493 226 493C217 493 206 481 202 479L153 445C127 426 98 409 75 386C55 366 42 350 42 311C42 268 76 242 101 225ZM225 230C212 230 199 229 186 229C171 229 156 230 141 234C102 244 63 275 63 320C63 329 65 338 70 347C82 367 104 383 123 396C133 404 164 427 178 427C190 427 199 418 207 413C214 407 225 405 225 392V386V230ZM181 77L182 74C165 64 150 53 131 45C119 53 111 65 102 76H120V136V153C120 185 129 208 163 208H172H225C225 176 226 143 223 114C210 100 195 89 181 77Z" glyph-name="a" horiz-adv-x="360" unicode="a"/>
+ <glyph d="M77 601H76C71 607 65 611 59 616L31 638C27 642 21 649 15 649H14C8 649 2 641 -2 636C34 614 54 579 54 522V487V148C47 144 43 134 39 127C30 110 19 93 10 76L130 6C145 -3 159 -13 177 -19L192 -13L341 73L331 94C328 184 331 281 330 373L341 395L259 451C249 458 240 466 227 471L218 465L138 390V525V558C138 574 139 590 144 606C151 628 170 655 198 655C211 655 218 647 221 634C225 637 232 642 232 649C232 662 214 669 202 669C168 669 140 643 121 631C107 621 90 613 77 601ZM138 111V118V339V348C138 360 142 364 150 370C155 374 177 398 183 399C189 399 195 393 199 390L228 370C237 363 246 362 246 346V338V65V55C246 49 245 42 239 42C232 42 223 50 218 53L162 85L147 94C140 96 138 102 138 111Z" glyph-name="b" horiz-adv-x="367" unicode="b"/>
+ <glyph d="M152 495C145 468 131 440 112 419C85 390 50 370 14 354C21 341 29 329 35 315C38 251 36 179 35 115C29 101 21 89 14 76C71 45 124 10 182 -20L192 -16L274 32C272 37 268 49 261 49C255 49 251 44 246 42C243 42 240 43 237 45C212 58 187 74 162 88L137 102C129 108 120 108 120 124V130V376V382C120 391 121 398 129 406C130 407 132 407 133 407C139 407 145 401 150 399C163 391 177 384 190 376C195 373 202 367 208 367S218 378 221 383C231 401 243 419 252 438L152 495Z" glyph-name="c" horiz-adv-x="267" unicode="c"/>
+ <glyph d="M42 580C30 557 14 523 14 494C14 485 17 482 24 480C43 469 124 430 127 429C110 412 93 397 76 381C66 373 54 365 54 348V338V174C54 168 55 115 53 115C52 110 32 77 32 76L136 6C149 -3 161 -13 177 -19L192 -13L341 73L331 94C328 192 330 299 331 396L341 417C247 464 150 509 58 558L44 580H42ZM238 39C206 62 170 82 140 107L138 125C138 214 137 303 139 389C143 398 144 410 152 415C184 401 215 386 244 369L246 350C246 248 247 145 245 46L238 39Z" glyph-name="d" horiz-adv-x="367" unicode="d"/>
+ <glyph d="M182 495C133 450 76 412 7 389C10 383 17 374 24 374C28 374 32 376 36 378C35 288 38 195 35 108C29 97 21 87 14 77V76L115 5C127 -4 138 -13 153 -19C193 0 229 24 266 46L268 67C252 59 233 45 214 45H210C198 47 175 66 170 69L138 92C130 99 120 100 120 115V126V164V174C120 187 124 192 131 199L150 222L223 308L272 365C275 369 288 382 288 387C288 391 284 394 281 397L212 466C202 476 193 486 182 495ZM120 221V406V410C120 416 123 424 131 424C137 424 143 416 148 411L200 359C204 355 217 344 217 338C217 334 213 331 211 328L120 221Z" glyph-name="e" horiz-adv-x="306" unicode="e"/>
+ <glyph d="M23 392L35 373C38 284 36 188 35 100C29 83 21 68 14 52L144 -10L109 -51L7 -166H22C40 -166 43 -158 53 -148C66 -135 82 -122 104 -122C119 -122 136 -126 151 -128C185 -132 304 -149 308 -149C310 -149 311 -149 313 -148C321 -145 329 -134 335 -128L418 -45C422 -41 431 -34 431 -28C431 -23 413 5 408 15L362 95C354 108 339 125 339 145V157V360C345 358 369 355 374 355C396 355 402 372 410 387C420 407 431 427 440 447L422 437L400 438L205 466L211 475C207 477 178 493 174 493C168 493 163 484 160 481C128 449 101 427 55 405C45 400 34 397 23 392ZM120 392L255 372V137C255 133 256 128 256 123C256 110 249 106 242 98L218 71C214 67 208 57 201 57C195 57 187 62 183 64L139 85C130 91 120 91 120 107V119V392ZM147 -43L267 91C297 36 329 -17 360 -71C289 -62 220 -50 147 -43Z" glyph-name="g" horiz-adv-x="431" unicode="g"/>
+ <glyph d="M108 652L115 508L124 525C140 568 158 610 175 652H108ZM115 495L68 455C64 452 54 447 54 441V440C54 435 60 430 63 427L87 398H69C68 304 71 206 68 115C55 101 40 89 25 76V75L106 -21H107L154 19C158 22 168 27 168 33V34C168 39 162 44 159 47L135 76H153C154 170 151 268 154 359C167 373 182 385 197 398V399L115 495Z" glyph-name="i" horiz-adv-x="183" unicode="i"/>
+ <glyph d="M51 602L15 651C10 648 1 643 1 636C1 630 8 625 10 622C26 596 30 569 30 528V513V129V122C30 112 22 107 16 102L-14 77L15 41L67 -21H68L131 32L96 76H114V547V563C114 569 114 574 115 579C119 613 149 637 187 640V655C152 655 118 646 88 628C75 621 64 610 51 602Z" glyph-name="l" horiz-adv-x="210" unicode="l"/>
+ <glyph d="M82 495L35 455C31 452 21 447 21 441V440C21 435 27 430 30 427L54 398H36C35 304 38 206 35 115C22 101 7 89 -8 76V75L73 -21H74L121 19C125 22 135 27 135 33V34C135 39 129 44 126 47L102 76H120C121 163 118 254 121 339C152 370 188 395 221 424L241 398H224C223 304 226 206 223 115C210 101 195 89 180 77C206 43 234 11 261 -21H262L325 32C314 47 302 62 290 76H308C310 163 304 258 310 340C340 370 375 395 407 424H408L429 398H411V120C411 113 406 109 401 105L381 88C377 85 370 81 370 75C370 70 375 66 377 64L392 46C411 24 430 2 448 -21H449L496 18C500 22 510 27 510 33V34C510 39 504 44 502 47L477 76H495C496 170 493 268 496 359C509 373 524 385 539 397C513 431 485 463 458 495H457L308 370V441H315L271 495C219 455 171 411 120 369V441H127C113 460 98 478 82 495Z" glyph-name="m" horiz-adv-x="528" unicode="m"/>
+ <glyph d="M82 495L35 455C31 452 21 447 21 441V440C21 435 27 430 30 427L54 398H36C35 304 38 206 35 115C22 101 7 89 -8 76V75L73 -21H74L121 19C125 22 135 27 135 33V34C135 39 129 44 126 47L102 76H120C121 163 118 254 121 339C152 370 188 395 221 424L241 398H224C223 304 226 206 223 115C210 101 195 89 180 77C206 43 234 11 261 -21H262L325 32C314 47 302 62 290 76H308V324V345C308 359 309 362 318 369L339 387C342 390 349 394 349 399C349 403 345 406 343 409C325 431 282 480 271 495C219 455 171 411 120 369V441H127C113 460 98 478 82 495Z" glyph-name="n" horiz-adv-x="344" unicode="n"/>
+ <glyph d="M170 489C151 435 105 388 50 366C41 362 31 363 31 349C31 345 32 340 32 337V135V125C32 122 32 118 31 115C30 110 10 77 10 76L114 6C127 -3 139 -13 155 -19L170 -13L319 73L309 94C306 192 308 299 309 396L319 417C270 441 221 466 170 489ZM216 39C184 62 148 82 118 107L116 127V356C129 372 144 387 162 399C184 390 204 380 223 368C223 368 224 347 224 347C224 246 225 144 223 46L216 39Z" glyph-name="o" horiz-adv-x="356" unicode="o"/>
+ <glyph d="M100 495C85 481 69 469 53 455C49 452 39 447 39 441V440C39 435 45 430 48 427L72 398H54V137L30 149L-12 76C3 68 18 60 33 53C44 48 54 46 54 30V23V-16V-41C54 -74 53 -107 40 -138C33 -153 24 -165 14 -178L34 -188L76 -127C96 -141 117 -154 137 -167C155 -179 175 -195 202 -195C215 -195 232 -187 232 -175C232 -168 225 -163 221 -160C218 -173 212 -181 197 -181C174 -181 157 -159 150 -146C138 -124 138 -99 138 -75V-1C151 -8 163 -15 177 -20C234 9 286 43 341 73L331 94C328 184 331 281 330 373L341 395C309 416 279 439 246 459C252 465 258 472 263 479L251 495L222 469C203 453 189 432 166 420L159 426C139 449 121 473 100 495ZM181 400C191 399 228 369 229 369C238 364 246 361 246 346V336V67C246 64 247 60 247 55S246 45 242 43C240 43 233 43 233 45C228 47 179 73 160 82C149 87 138 89 138 106V115V336V347C138 362 143 365 152 372C162 381 172 389 182 397L181 400Z" glyph-name="p" horiz-adv-x="367" unicode="p"/>
+ <glyph d="M175 488C153 437 108 390 55 367C48 364 37 362 37 352V347V133V121V116C34 101 20 90 16 75L58 47C93 26 123 0 161 -19C185 -8 207 6 230 19V-70V-83C230 -122 221 -156 194 -172C190 -175 185 -177 181 -177C171 -177 169 -169 166 -160C162 -163 155 -168 155 -175C155 -188 172 -197 186 -197C213 -197 231 -183 247 -170S279 -143 291 -127H292C301 -140 312 -151 323 -163C326 -167 331 -175 336 -175C342 -175 348 -167 352 -163V-162C317 -133 314 -88 314 -45V-11V360V369C314 372 314 374 315 377C316 382 332 408 336 417C282 440 230 465 175 488ZM121 118V126V339V348C121 360 125 364 133 370C138 375 161 399 168 399C172 399 212 380 220 377C226 373 230 372 230 362V352V66V55C230 48 228 42 222 42C215 42 206 50 201 53L146 90C135 96 121 101 121 118Z" glyph-name="q" horiz-adv-x="351" unicode="q"/>
+ <glyph d="M231 495L151 355H150C150 381 150 408 149 433C137 448 128 465 111 475C89 459 69 441 48 424L84 380H66C65 301 68 219 65 142L22 77V76C70 45 115 11 164 -19L174 -16C204 1 236 17 263 37C265 45 266 54 266 63C253 58 238 47 224 47C214 47 209 51 203 55C192 63 170 77 160 84C154 90 149 90 149 103C149 108 150 113 150 117V298V307C150 310 150 312 151 315C154 327 180 366 182 369C196 328 212 288 227 248C248 281 268 314 286 350C269 400 249 447 231 495Z" glyph-name="r" horiz-adv-x="302" unicode="r"/>
+ <glyph d="M194 664C188 653 180 644 172 634C143 599 113 575 75 551C66 545 57 545 57 529C57 524 58 518 58 514V456C58 448 59 440 59 432C59 426 58 420 57 414C56 406 41 361 36 347H58V117C58 107 57 101 50 93C46 89 38 82 38 76C38 69 55 53 55 53L99 1C102 -2 113 -19 118 -19C122 -19 127 -15 131 -13L159 3C168 8 264 64 269 66C267 71 263 83 255 83C253 83 251 82 249 81L175 38C164 52 153 65 143 80C143 80 142 93 142 93C142 253 140 417 143 571L157 587H158L215 539L257 613C236 630 216 648 194 664Z" glyph-name="s" horiz-adv-x="272" unicode="s"/>
+ <glyph d="M8 398H50V131V116C50 110 50 105 48 101C45 97 30 81 30 75C32 68 44 56 47 53L91 1C94 -2 105 -19 110 -19C114 -19 119 -15 123 -13L151 3C160 8 256 64 261 66C259 71 255 83 247 83C245 83 243 82 241 81L167 38C156 52 145 65 135 80C132 183 135 293 134 398H218V462H134C134 504 139 545 145 587L124 586L113 572L8 398Z" glyph-name="t" horiz-adv-x="230" unicode="t"/>
+ <glyph d="M82 495L35 455C31 452 21 447 21 441V440C21 435 27 430 30 427L54 398H36C35 304 38 206 35 115C22 101 7 89 -8 76V75L73 -21H74L224 105C224 77 224 49 225 23C236 7 249 -7 261 -21H262L325 32C314 47 302 62 290 76H308V324V345C308 359 309 362 318 369L339 387C342 390 349 394 349 399C349 403 345 406 343 409C325 431 282 480 271 495C249 478 227 460 206 442L241 398H224C222 311 228 217 222 135C198 113 173 92 148 71C140 65 134 57 124 53C115 59 109 68 102 76H120C121 170 118 268 121 359C134 373 149 385 164 398V399L82 495Z" glyph-name="u" horiz-adv-x="344" unicode="u"/>
+ <glyph d="M53 630L29 601C12 576 -1 545 -1 514C-1 501 1 487 8 474C20 449 49 433 54 404V148C47 144 43 134 39 127C30 110 19 93 10 76L130 6C145 -3 159 -13 177 -19L192 -13L341 73L331 94C328 184 331 281 330 373L341 395C309 416 279 439 246 459C252 465 258 472 263 479L251 495C212 461 176 425 138 390C138 431 128 454 109 482C89 510 54 531 54 575C54 592 61 605 70 614L53 630ZM138 111V118V339V348C138 360 142 364 150 370C155 374 177 398 183 399C189 399 195 393 199 390L228 370C237 363 246 362 246 346V338V65V55C246 49 245 42 239 42C232 42 223 50 218 53L162 85L147 94C140 96 138 102 138 111Z" glyph-name="v" horiz-adv-x="367" unicode="v"/>
+ <glyph d="M54 630C25 601 -2 557 -2 514C-2 500 1 486 8 473C21 449 49 434 54 405V148C37 126 24 100 11 75L131 6C146 -3 160 -13 178 -19C203 -7 227 7 251 21C259 25 270 37 283 30C311 13 339 -4 369 -19L384 -13L535 74L525 95C522 186 524 284 525 373L535 395L451 453C441 459 432 467 420 471C391 448 368 420 338 399C306 417 279 441 247 459C249 462 264 477 264 479C264 485 256 491 252 495H251L138 390V413C134 437 124 460 110 480C91 508 54 531 54 574C54 582 56 590 59 597C61 603 70 615 70 615L54 630ZM238 137C226 117 214 97 204 75L239 56C239 83 239 111 238 137ZM183 402C197 391 212 382 227 372C237 364 247 362 247 346V338V66V55C247 49 246 42 239 42C233 42 225 48 221 51C207 59 160 86 148 94C140 98 138 101 138 112V121V336V347C138 351 138 355 139 358C141 364 174 391 183 402ZM376 402C390 391 405 382 420 372C430 364 440 362 440 346V338V66V55C440 49 439 42 432 42C426 42 418 48 414 51C400 59 353 86 341 94C333 98 331 101 331 112V121V336V347C331 351 331 355 332 358C334 364 367 391 376 402Z" glyph-name="w" horiz-adv-x="578" unicode="w"/>
+ <glyph d="M82 495L35 455C31 452 21 447 21 441V440C21 435 27 430 30 427L54 398H36V106C36 84 36 63 32 41C26 6 13 -30 13 -66C13 -90 20 -110 30 -128C44 -150 67 -169 100 -169C136 -169 168 -140 168 -103C168 -81 152 -61 127 -61C103 -61 84 -77 84 -103C84 -113 87 -123 94 -131C100 -138 108 -141 116 -144C111 -146 105 -147 100 -147C62 -147 39 -104 39 -63C39 -15 68 26 104 45C121 54 315 115 315 115C311 129 307 132 307 150C307 160 308 170 308 179V325V346C308 360 309 362 318 369L339 387C342 390 349 394 349 399C349 403 345 406 343 409C325 431 282 480 271 495C219 455 171 411 120 369V441H127C113 460 98 478 82 495ZM224 398V131V120C224 110 220 108 212 105C187 98 137 81 120 75C121 163 118 254 121 339C152 370 188 395 221 424L241 398H224Z" glyph-name="y" horiz-adv-x="339" unicode="y"/>
+ </font>
+ <font horiz-adv-x="0" id="yinitas">
+ <font-face font-family="yinitas" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M377 1029C368 1025 363 1015 364 1001C366 980 373 963 386 950C396 940 407 934 419 933L423 932L419 931C397 920 377 920 353 930C337 936 314 948 289 964L276 972V976C276 986 267 992 258 988L255 986L239 994C223 1002 207 1008 192 1011C147 1020 100 1008 62 976C39 957 18 927 8 898C6 893 6 893 3 892C-2 891 -7 886 -7 880C-8 875 -6 871 -3 868L0 866L-1 860C-1 856 -2 850 -2 846C-3 838 -3 838 -5 837C-9 835 -10 832 -11 829C-11 824 -9 819 -5 817C-2 816 -2 815 -1 810C-1 801 2 785 5 775C12 748 27 721 45 699L53 691L50 689C37 679 28 668 23 653L20 645V632C20 619 20 618 22 612C29 594 40 584 55 583C58 583 63 583 65 584C78 586 90 597 93 611C97 625 92 635 78 639C65 643 52 639 47 630C43 621 48 612 57 612C68 612 72 625 64 632C62 633 62 633 64 634C64 634 68 634 71 634C77 634 83 631 86 627S89 617 87 611C84 602 78 595 70 591C66 590 64 589 58 589C48 589 44 591 38 597C30 605 26 617 26 632C26 653 35 670 52 683L57 687L63 681C77 668 97 655 114 647C163 624 216 622 269 640C297 650 320 662 377 698C407 717 434 733 432 730C431 730 426 725 419 720C381 687 339 646 278 579L274 574L271 575C265 577 261 581 258 592C255 601 253 604 249 606S241 608 237 605C234 602 231 597 226 584C218 561 209 546 199 536C184 522 164 517 150 526C144 529 135 540 131 548C125 558 124 572 127 580L128 582L130 581C134 577 138 576 143 579C150 583 150 593 143 598C136 602 128 597 123 585C120 580 120 579 120 571C119 554 125 540 139 527C150 515 164 512 181 518C204 526 223 549 232 583C236 595 238 599 241 600C245 603 251 600 253 596C255 593 254 590 252 581C250 571 250 568 253 565C255 562 257 562 262 564L266 565L264 563C263 562 251 548 238 533C216 509 213 506 211 506C211 507 208 507 206 507C196 507 190 497 194 488L195 485L181 471C168 458 153 445 151 445C151 445 149 446 148 448C138 464 117 477 99 479H93L96 481C107 485 115 496 117 509C119 520 115 533 106 542C91 556 69 559 50 548C45 544 37 536 33 530C27 518 23 503 25 489C27 477 32 464 38 455C38 454 38 453 35 449C25 432 22 409 29 392C32 386 37 378 40 375C54 362 74 361 86 372C92 377 94 382 94 389C94 394 94 396 92 399C88 407 80 411 71 410C57 409 48 398 53 388S72 380 74 392C75 395 72 401 69 402C67 403 69 404 73 404C81 404 87 399 88 392C89 384 85 377 77 373C73 371 71 371 66 371C60 371 59 371 53 374C35 383 27 408 34 431C37 438 41 447 42 448C43 448 45 446 48 443C71 422 105 416 134 428C137 430 142 432 144 433C147 435 149 436 149 435C150 434 154 422 155 416C157 407 158 391 156 381C152 361 141 340 124 319C121 315 116 311 115 310C93 296 83 289 70 276C42 249 24 216 17 181C15 175 15 174 13 174C10 173 6 170 5 168C1 161 4 151 10 148C13 147 13 147 13 140C14 122 16 111 21 97C24 86 32 70 37 62C65 19 110 -4 158 -2C170 -2 178 0 189 2C217 11 242 31 255 55C270 84 271 118 257 145L253 153L259 151C272 146 277 146 295 146C311 146 312 146 321 148L331 151L334 148C335 147 341 142 346 137C389 98 440 68 484 58C488 57 492 56 492 56C493 55 480 39 473 32C459 18 440 8 424 5C421 5 418 4 417 4C415 3 415 4 418 7C422 11 424 16 424 22C424 38 410 49 395 44C389 43 382 36 380 30C377 22 379 14 385 7L388 4L383 5C360 10 341 25 331 44C326 54 323 70 325 78V81L327 78C331 74 336 73 341 76C345 78 347 81 347 86C347 92 342 97 336 97C328 97 322 92 319 83C316 70 321 48 331 32C342 16 363 3 383 -1C392 -3 412 -3 422 -1C436 1 449 7 462 15C472 22 488 38 494 47L499 54L508 53C515 52 523 51 536 51H554L556 47C563 33 577 20 592 14C602 10 607 9 618 8C626 8 628 9 631 10C644 16 647 29 637 35C635 37 634 37 630 37C627 36 626 36 623 33C621 31 621 30 621 26C621 21 621 20 623 18C624 17 626 15 626 15C626 14 613 14 607 15C594 18 583 24 573 34C567 40 561 49 561 51C561 52 563 52 566 53C568 53 575 54 580 55C611 61 641 74 672 95L682 101L683 97C686 84 695 66 704 53C712 43 725 31 735 23C748 14 766 6 782 2C796 -1 804 -2 821 -2C835 -2 838 -2 847 0C868 3 886 12 903 25C906 27 909 29 909 29C910 29 912 26 914 23C924 11 937 2 952 -1C957 -2 961 -3 968 -3C979 -3 986 -1 994 2C1001 5 1008 13 1011 19C1013 23 1013 24 1013 31S1013 39 1011 43S1004 52 1000 53C995 55 985 54 980 52C976 50 971 45 969 42C967 36 969 29 974 25C977 23 984 23 987 25C993 29 995 36 992 41C991 43 989 45 988 45C986 47 987 48 992 48S998 47 1000 46C1008 41 1010 30 1005 20C1002 15 996 10 991 7C977 1 959 1 944 8C934 12 923 21 917 29L914 34L920 40C939 60 952 86 959 114C961 124 961 124 963 124C968 125 974 134 972 139C971 144 967 149 964 150C962 151 962 151 962 156C962 170 958 190 953 207C946 225 934 247 921 262C918 266 916 268 916 269C916 269 919 268 922 268C933 267 949 270 959 275C979 285 992 305 991 324C989 338 983 350 972 357C955 368 935 367 922 354C916 349 913 345 911 338C906 321 916 301 933 297C942 294 955 296 962 302C967 307 968 316 965 320C959 329 949 329 944 320C940 315 942 307 947 304C950 302 948 301 941 302C933 302 928 304 923 310S917 319 917 328C917 335 917 336 919 341C929 360 955 364 972 349C980 341 984 333 984 321C984 315 984 313 982 309C977 293 963 281 945 276C938 274 922 273 915 275C909 276 909 276 902 282C894 290 883 298 873 304C869 307 865 309 865 310C864 310 867 315 870 322C891 362 906 404 914 444C916 451 917 457 917 458C917 458 920 459 922 460C963 473 993 516 1001 573C1002 585 1002 607 1001 617C994 662 967 695 933 702C925 704 909 704 896 702C888 701 886 701 886 702C884 708 868 736 859 750L854 758L862 770C880 800 892 827 897 852C899 863 900 879 899 886V893L905 892C932 890 957 879 976 861C997 841 1007 818 1009 792C1010 767 1002 746 986 731C980 725 973 721 964 718C956 715 942 714 934 716C916 721 902 732 894 749C892 752 891 754 891 755C891 755 893 755 894 754C898 752 906 752 911 755C915 758 918 763 918 768C919 776 915 782 909 785C902 788 894 787 889 781L886 779L887 783C889 801 898 815 911 821C916 824 917 824 925 824C932 824 933 824 938 821C947 817 953 808 955 797L956 792H959C962 792 962 792 962 794C962 798 960 807 957 811C945 834 915 837 897 818C868 789 880 734 919 715C928 711 936 709 946 709C959 709 970 712 980 719C1008 736 1021 774 1012 810C1003 849 973 881 934 893C931 894 929 895 929 895S931 896 934 896C941 897 958 902 966 905C1000 918 1020 939 1024 967C1028 991 1016 1010 1000 1006C988 1002 986 987 995 979C997 978 999 977 1003 977S1008 977 1011 979C1013 980 1016 982 1016 983L1018 986L1019 982C1019 977 1019 967 1017 961C1015 954 1009 943 1005 937C995 925 978 915 958 908C943 904 926 901 906 899H898V903C895 920 886 940 875 954C866 965 852 974 838 978C829 980 815 980 806 978C793 974 781 968 769 958C756 946 747 941 733 937C728 935 724 935 716 934C710 934 706 934 706 934S707 936 708 937C712 941 713 945 711 950C706 960 691 958 689 947C688 941 692 934 699 930C707 927 723 927 737 931C743 933 755 939 757 940C758 942 759 941 759 935C760 915 779 901 800 905C813 908 820 916 819 926C819 933 814 938 806 938C792 938 787 920 799 913L801 912L797 911C781 908 765 920 765 936C765 943 766 946 772 952C788 967 811 976 830 973C856 969 877 949 887 919C889 913 892 903 892 900C892 899 889 899 883 899C864 898 843 893 826 887S786 869 771 856L764 851L752 859C697 895 640 915 575 919C554 921 533 920 509 917C458 910 412 892 299 834C251 809 235 803 209 800C164 795 120 813 100 845L97 851L99 854C103 859 111 867 116 870C121 874 130 878 137 880C145 882 157 882 165 880C186 875 201 855 196 837C194 826 186 818 176 818C171 819 166 820 163 824C159 828 157 836 158 842V845L161 842C169 834 183 842 180 853C179 857 174 862 170 862C163 862 157 857 154 850C152 846 152 845 152 839S152 831 154 827C158 818 166 813 175 813C181 813 185 814 189 817C202 826 206 846 198 862C195 868 185 878 178 881C164 889 147 890 130 884C118 880 106 872 98 862L94 858L93 862C88 877 90 897 97 911C110 937 140 951 166 942C180 937 189 929 202 909C216 889 223 882 236 878C242 877 252 877 258 878C273 882 286 895 289 909C289 912 290 914 291 914C293 914 298 917 300 920C311 933 298 952 282 947C272 944 267 933 271 924C273 920 277 916 280 915C282 914 282 914 281 912C281 911 279 910 277 909C268 904 256 907 247 917C242 922 240 926 232 940C224 955 220 961 214 966C209 972 204 975 197 978C189 982 183 983 174 984C151 985 127 975 109 955C91 937 81 914 79 885C78 873 79 860 81 847L83 839L81 831C77 821 77 815 77 803C77 767 96 732 131 708L135 705L131 706C128 706 119 706 111 706C98 706 94 706 88 704C79 702 68 699 62 696L59 694L54 700C28 728 10 766 5 805C3 816 3 816 6 818C9 819 11 825 11 829C10 833 8 835 5 837S2 839 4 854C5 860 5 865 6 865C6 865 8 865 9 865C9 865 12 867 13 868C17 870 19 875 19 879S17 887 14 890L12 891L15 900C45 974 114 1018 184 1006C202 1003 216 999 237 988L252 981L251 978C251 974 253 968 257 966C261 963 265 963 269 965L273 967L285 959C321 937 348 924 368 918C376 916 389 916 398 917C413 920 426 926 455 943C491 964 510 971 532 973C542 974 548 973 555 970C562 966 567 962 580 950S597 935 604 931C610 928 611 928 619 928C628 928 634 929 642 933C656 940 666 954 669 971C670 985 665 999 655 1003C641 1009 629 993 639 981C641 978 644 977 649 977S657 978 660 982L662 985L663 980C663 975 662 967 660 961C655 949 642 938 629 935C627 934 622 934 618 934C611 934 610 935 604 937C597 941 593 944 580 956S562 973 555 976S542 980 532 979C508 977 488 969 450 947C440 941 435 939 426 939C398 939 373 966 370 1000C370 1003 370 1007 371 1009V1013L374 1010C382 1000 398 1008 395 1021C393 1029 384 1033 377 1029ZM893 888C894 882 893 867 891 857C888 836 879 812 866 789C862 781 852 765 851 764C850 764 847 767 844 771C824 798 803 820 772 844L769 847L772 850C778 854 790 863 799 868C825 883 858 892 886 893H893ZM98 804C114 777 139 755 169 740C187 731 205 726 225 722C236 721 270 720 281 722C302 725 323 731 343 738C359 745 370 750 403 766C455 791 476 799 502 806C521 810 531 811 556 811C576 811 581 811 590 810C617 805 641 798 666 785C677 780 696 768 699 766C699 765 699 762 694 753C691 747 688 739 687 737L685 733L677 738C652 755 622 766 591 771C580 773 552 773 540 772C530 771 513 768 504 766L498 764L495 767C490 771 484 770 479 765C478 764 477 762 476 760C476 758 476 757 472 756C462 753 433 741 399 726C380 717 358 708 351 705C318 692 287 684 264 682L258 681L255 685C250 691 240 690 236 682C235 681 235 681 224 682C181 685 141 703 115 730C98 747 88 765 84 786C82 796 83 815 85 823L86 829L90 820C92 816 96 808 98 804ZM585 765C618 761 648 750 676 732L683 727L681 722C672 699 658 648 655 626C654 624 654 623 653 623C639 629 627 633 614 634C610 635 599 635 588 635C534 635 507 641 495 657C491 662 490 668 490 676C491 693 504 705 520 703H524L522 701C517 698 515 690 519 685C522 680 530 679 535 683C541 688 540 699 534 704C519 715 497 709 489 693C485 686 484 681 484 675C484 657 494 644 515 637C523 634 538 631 550 630C556 630 563 629 565 629H568L561 625C544 617 530 603 523 590C522 587 521 585 521 585S514 591 505 598C475 621 468 631 465 648C462 669 473 693 497 718C509 731 522 739 537 744C543 746 545 746 554 746C566 746 569 745 577 741C587 737 593 728 594 718L595 713L584 696C573 679 570 675 566 674C564 674 560 675 560 677C560 677 559 678 557 678C554 678 554 678 554 675C554 668 562 657 571 653C593 643 620 653 631 676C638 691 638 706 630 722C624 735 610 745 594 750C586 752 566 752 555 751C534 748 510 740 487 727C448 705 425 685 413 661C406 647 403 637 403 621C403 603 407 590 416 572C426 550 439 531 469 497C488 475 497 463 505 453C524 428 536 406 541 384C543 376 545 361 544 360C544 360 541 361 538 363C518 371 497 385 475 402C459 415 459 416 456 423C453 432 444 450 439 458C436 462 431 470 426 475C412 494 404 507 402 517L400 522L391 512C386 507 381 503 381 503C380 503 374 519 372 531C370 541 370 579 372 593C379 644 397 686 424 714C434 724 455 739 470 747L478 751L480 750C486 744 496 747 499 755C500 758 500 758 504 759C510 761 528 764 536 765C548 767 574 767 585 765ZM714 754C739 734 763 709 781 682L788 673L777 657C771 648 766 641 766 640C765 640 763 643 760 648C749 668 734 688 719 703C711 712 698 723 692 727L690 729L693 737C695 741 698 748 701 753C704 760 705 761 706 760C706 760 710 757 714 754ZM698 715C708 707 722 692 730 681C741 668 761 637 761 634C761 633 760 630 758 627C747 611 730 581 721 563L715 553L711 561C704 576 696 587 684 599C679 605 666 615 661 618C660 619 660 619 661 628C666 654 673 680 681 703C688 725 688 723 689 722S694 718 698 715ZM400 720C399 719 362 696 348 686C295 654 258 639 219 635C199 633 172 635 152 640C121 648 91 664 68 685L63 690L70 693C84 698 95 700 112 700C131 700 146 697 164 690C176 685 189 681 200 679C209 677 226 675 232 675C235 675 235 674 237 672C239 668 242 667 247 667C251 667 255 669 257 673C258 675 258 675 261 675C262 675 267 676 272 677C305 681 336 692 386 714C399 720 400 720 400 720ZM397 687C376 652 364 606 364 560C364 536 367 518 374 503C375 500 376 498 376 498C376 497 360 484 350 477C332 463 304 446 286 436C282 433 278 431 278 431C279 431 281 432 283 432C307 438 336 434 359 422S404 388 415 364C424 346 429 322 429 303V299L422 304C408 312 392 321 375 327C371 329 371 329 371 332C372 337 373 355 372 359C369 371 361 381 348 387C322 400 289 397 253 378C237 370 218 357 210 347C208 344 207 343 204 343C187 340 150 328 135 320L132 319L134 322C152 346 161 366 163 389C165 405 162 421 155 436L154 439L160 444C164 446 174 456 183 465C199 480 200 481 202 481C203 480 205 480 207 480H210V475C211 463 220 452 235 443C245 437 260 434 271 435C284 437 298 447 298 455C298 461 291 467 285 466C276 464 273 452 280 446C282 445 282 445 280 444C279 444 276 443 274 442C262 439 245 443 232 452C221 460 217 467 216 478C216 483 216 484 218 486C219 488 219 490 220 493C221 500 224 506 232 514S250 529 263 535C268 538 277 542 282 544C295 551 299 556 296 564C294 568 292 570 286 571C285 572 283 572 283 573C282 573 286 577 290 583C323 618 352 648 370 667C379 675 402 697 403 697C403 697 400 693 397 687ZM932 696C945 693 958 686 967 676C979 664 987 648 992 629C995 618 996 610 996 595C996 568 990 542 979 520C965 493 947 476 923 467L918 465L919 467C919 471 921 486 922 498C924 511 924 551 922 565C920 587 916 614 911 633L909 639H911C914 639 923 637 929 635C950 628 961 614 961 597C961 592 960 590 959 593C958 597 948 598 944 595C939 592 937 585 940 580C944 574 950 573 957 576C968 582 971 601 963 616C959 623 950 632 942 636S924 643 915 645C911 645 907 646 907 646S906 650 904 656C901 665 892 688 890 692L889 695L894 696C903 697 904 697 915 697C923 697 929 697 932 696ZM794 662C799 654 800 655 792 647C788 643 782 637 779 633S774 626 774 625C773 625 772 626 771 629L769 633L771 636C776 644 791 667 791 667S793 665 794 662ZM810 633C827 601 841 562 848 527L850 516L845 518C842 519 838 520 835 520C831 520 830 520 828 517C824 514 823 510 823 499C822 491 823 490 824 486C826 484 829 479 833 475C841 467 843 463 843 459C843 456 840 451 837 450C834 448 831 449 821 460C812 469 812 469 812 473S810 495 809 504C803 542 793 579 779 611L776 618L779 622C783 628 791 637 797 643C801 649 802 649 803 648C803 647 807 641 810 633ZM614 628C623 627 629 625 638 622C643 620 652 617 653 616C653 616 652 612 651 607C650 601 649 591 648 583C647 576 646 569 646 569C645 569 643 570 640 572C631 578 614 583 602 583H597V580V577L604 576C618 576 630 571 640 564L645 561V557C644 549 642 526 641 509C641 498 640 486 640 481L639 473L635 471C631 469 628 469 621 468C613 468 600 469 597 470C597 471 594 475 592 481C579 515 559 546 534 572L526 581L528 585C534 598 548 612 563 619C578 627 596 630 614 628ZM767 623L769 619L764 611C748 584 735 548 730 518C729 514 729 511 729 511C729 512 727 516 726 522C724 528 722 535 721 539L719 545L722 553C729 565 738 582 752 605C759 617 765 626 765 626S766 625 767 623ZM669 605C681 595 692 582 701 568C705 560 711 548 711 546C711 545 709 539 706 533C696 514 679 470 679 467C679 466 678 466 676 466C675 467 667 467 660 467C653 468 646 468 646 469C646 469 647 470 648 470C651 473 658 481 661 486C674 508 672 538 656 558C652 563 652 564 652 567C653 574 657 602 658 607L659 612L661 611C662 610 666 608 669 605ZM776 603C790 569 799 532 804 491C806 472 806 471 803 470C801 469 797 465 793 461C785 452 781 449 778 449C774 449 769 456 770 460S773 466 779 474C783 478 787 483 788 485C790 488 790 489 790 498C790 514 787 520 778 520S761 516 755 510C751 505 749 502 749 496C749 491 750 488 754 485C758 483 764 483 768 485C778 490 776 506 764 508H762L766 511C769 512 772 513 776 513L781 514L783 511C784 508 784 505 784 498C784 487 784 486 774 476C770 472 767 467 766 465C764 460 764 455 766 452C771 445 776 444 790 448C795 450 801 451 803 452H806V436C806 405 802 370 795 341C794 334 793 334 791 334C790 334 785 335 779 335C743 338 703 331 663 314C648 307 619 292 606 283C604 282 605 284 610 291C615 299 618 305 632 333L637 344L646 347C663 353 678 362 692 375C700 383 709 395 713 402C715 406 716 406 720 407C743 415 766 408 771 393C772 389 772 383 771 379C768 373 761 370 755 371H751L754 373C759 378 759 386 754 390C749 395 742 394 738 389C727 377 746 360 763 365C769 367 775 373 777 379C782 396 770 412 749 416C741 417 728 416 720 413C719 413 719 414 721 418C728 433 732 454 732 475C732 506 739 542 751 571C757 587 771 612 772 611C772 611 774 607 776 603ZM287 567C288 567 289 565 290 564C293 556 288 552 273 547C265 544 258 541 252 537C247 535 247 535 262 551C270 560 278 568 279 569C281 570 285 569 287 567ZM657 544C662 536 663 529 663 518C663 508 662 502 658 494C656 488 650 480 647 478C646 478 646 478 646 487C647 508 648 529 649 541C650 548 651 554 651 554C651 556 655 550 657 544ZM84 547C94 545 104 537 108 528C115 512 110 494 96 487C88 484 79 484 74 489C72 491 72 491 72 496V501L74 499C79 492 89 493 93 500S92 517 83 517C78 517 75 515 71 511C67 506 66 501 66 495C66 487 68 484 76 480L80 479L76 478C66 476 55 470 47 463C42 458 43 458 38 468S31 486 31 497S33 516 37 525C41 532 50 541 56 544C65 548 75 550 84 547ZM719 522C724 505 725 491 726 474C726 465 725 457 725 455L724 451L722 453C716 458 704 462 692 464C688 465 685 466 685 466C685 469 701 510 710 528L715 538L716 535C716 533 718 527 719 522ZM844 512C847 511 849 510 850 509C852 508 852 508 849 508C844 508 839 502 839 496C839 488 843 484 851 483C855 483 855 483 856 480C858 465 859 421 857 401C856 384 853 368 850 354C848 341 843 323 842 321C842 321 840 321 836 323C828 326 815 329 806 331C803 332 800 333 800 333C800 334 801 340 803 347C809 377 812 399 812 429C813 444 813 451 814 451C814 451 818 450 822 449C836 444 842 445 847 451C848 453 849 455 849 458C849 464 847 467 839 476C829 486 829 488 829 499C829 511 831 513 835 513C837 513 841 513 844 512ZM103 472C112 470 122 466 131 458C135 455 145 443 145 441C145 440 131 433 124 431C108 426 88 427 72 434C65 438 56 444 51 449L47 453L49 456C50 457 52 459 55 461C69 472 85 475 103 472ZM621 462H640V448C640 416 636 375 630 356L629 351L624 350C621 349 617 348 609 348C599 347 598 347 599 349C608 381 610 408 605 437C603 446 600 459 599 462C598 464 598 464 600 463C602 463 611 463 621 462ZM675 460C676 459 671 445 659 412C651 391 639 361 638 362C638 362 638 364 639 366C642 381 645 411 646 439V462L660 461C668 461 675 460 675 460ZM698 456C707 454 713 452 718 448C721 446 722 446 723 447C727 453 719 426 713 414C710 409 709 408 705 406C698 401 691 396 674 382C660 370 647 359 644 359C644 358 643 359 644 359C654 383 672 430 680 453L682 459H686C689 458 694 457 698 456ZM476 393C497 377 521 363 541 355L545 353L544 344C543 314 529 280 504 249C497 241 491 235 491 236C491 236 488 239 486 242C479 252 470 264 460 273L451 282L454 289C464 318 469 351 466 378C465 387 463 402 462 405C461 406 463 404 466 402S473 396 476 393ZM704 399C704 398 701 395 698 392C686 376 668 362 650 355C647 354 648 355 656 361C659 363 666 369 672 374C688 388 690 390 697 395S705 400 704 399ZM313 377C328 373 337 364 338 352C338 348 338 347 336 345C333 341 332 341 326 342C315 344 294 347 279 348C263 349 239 348 226 346C223 346 220 345 220 345C220 346 229 354 236 358C251 368 271 375 290 378C295 379 308 378 313 377ZM626 339C622 327 617 316 606 299C599 289 592 280 586 273C582 268 578 265 560 251C553 246 540 236 532 230C524 223 517 217 516 216C513 214 504 210 504 211C504 211 503 213 501 216L499 221L509 230C550 264 578 297 593 334L596 341H611C619 342 626 342 626 342C627 343 627 343 626 339ZM295 340C301 340 307 339 309 339L314 338L308 335C298 330 293 321 293 310S298 290 308 285C312 282 314 282 320 282C333 281 342 285 352 295C359 301 363 308 367 317L369 323L381 318C397 311 415 301 425 294C428 292 429 291 429 288C429 279 424 257 418 243C415 236 409 222 408 221C408 221 404 223 399 227C365 253 328 271 290 279C258 286 221 286 192 278C184 276 184 275 186 286C190 304 199 323 210 334L213 338L223 339C228 340 237 341 242 341C254 342 283 342 295 340ZM201 335C200 334 199 332 197 329C188 314 181 296 179 279L178 274L171 271C161 268 146 260 137 254C103 232 81 200 73 165C71 154 71 135 72 124C77 90 98 62 125 49C139 43 158 41 172 44C187 47 199 53 209 63C230 84 235 114 221 129C215 136 205 139 192 138C180 137 169 140 165 146S163 160 169 162C171 163 172 164 172 166V169H168C151 167 141 148 148 132C153 122 161 116 176 110C190 105 193 102 197 93C199 89 199 78 197 73C192 63 183 55 171 51C165 49 163 49 153 49C141 49 134 51 123 56C102 66 87 85 80 110C78 117 78 118 78 133C78 147 78 148 80 157C86 177 98 196 113 209C129 223 147 231 168 235C179 237 182 237 182 235C182 234 183 230 184 226C187 217 193 205 197 199C199 196 200 194 200 194S198 194 195 195C152 206 109 184 101 148C98 135 101 120 107 109C111 102 121 93 129 89C136 86 145 83 151 83H154V86V89H151C142 89 130 94 122 101C117 106 111 115 109 121C106 128 106 141 107 147C112 168 130 184 153 190C164 192 181 192 192 189C202 187 208 184 211 181C214 177 228 166 235 162S245 154 250 145C261 124 264 96 256 72C246 43 221 19 189 8C178 5 170 3 158 3C121 1 87 15 60 43C36 68 22 101 19 139V146L22 148C32 152 33 166 24 172C22 173 22 174 22 175C23 182 27 198 30 205C42 237 64 266 93 288L97 291L94 287C92 286 90 284 90 283C90 283 91 282 92 281L94 279L108 293C124 308 125 309 144 318C159 324 179 331 199 335C200 336 201 336 201 336S201 335 201 335ZM787 328C789 328 791 327 791 327C792 327 784 304 779 291C774 277 765 260 758 247L752 237L744 233C720 221 703 204 692 181C689 175 687 171 687 170C687 167 656 150 639 144L631 140V138C632 136 633 135 633 135C637 135 663 147 675 154C680 157 683 159 683 159S683 155 682 151S680 140 680 131L679 119L672 116C634 100 597 97 560 106C551 108 542 112 531 121L521 128L520 139C519 158 516 176 511 193L508 201L512 204C515 208 517 208 524 211C543 216 557 218 576 218C585 218 593 217 600 216C632 211 646 200 645 180V177L643 179C639 184 633 185 628 182C618 175 623 161 634 161C648 161 656 180 649 196C644 207 630 215 613 220C591 226 558 226 535 220C532 220 530 219 530 219C530 220 551 237 564 247C581 260 595 269 602 273C615 280 637 287 653 289C661 290 675 290 681 288C693 285 703 278 707 269C709 264 709 255 707 250C705 246 700 241 696 240C693 238 682 238 682 239S683 241 684 241C686 243 689 248 689 252S687 259 684 262C675 270 661 264 661 252C662 245 666 239 674 235C680 232 691 231 697 233C711 238 719 255 713 270C707 286 683 297 658 296C651 295 640 294 635 293C634 292 639 295 647 299C680 316 713 326 745 329C750 330 782 329 787 328ZM807 325C819 322 840 315 840 314C840 312 833 292 828 281C824 271 811 245 810 244C809 244 805 244 801 244C791 245 778 244 768 242C764 241 761 240 761 240C761 241 763 243 765 247C776 266 787 291 795 317C797 322 798 327 798 327S803 326 807 325ZM867 301C870 299 871 298 871 297C871 295 879 287 885 282C900 271 914 246 919 221C921 211 922 190 921 180C920 172 916 153 914 149L913 147L911 148C908 150 903 152 892 154C887 155 880 156 878 156C874 158 874 158 875 160C876 165 875 183 874 188C869 204 859 219 844 229C839 233 826 239 822 240C821 240 820 241 820 241S823 246 827 251C835 262 848 282 855 295C858 300 861 304 861 304C862 304 864 303 867 301ZM469 254C476 246 486 231 486 230C486 228 444 192 442 192C441 192 416 214 416 214C415 215 418 218 420 222C430 236 443 259 448 272L449 275L456 269C460 265 466 258 469 254ZM913 262C939 233 954 196 956 160V151L953 150C943 145 943 131 952 126C953 125 954 124 954 124C954 123 953 119 952 114C946 87 934 65 915 44L911 39L908 45C907 48 906 53 905 55L904 59L908 63C916 70 918 76 915 82C914 86 908 91 906 91S904 93 905 100C908 112 911 124 913 126C916 129 917 133 917 136S918 145 920 151C931 185 931 210 922 238C918 248 914 257 909 265C907 268 905 271 906 271C906 271 909 267 913 262ZM805 237C806 237 795 221 787 210C766 182 739 156 712 137C705 133 687 123 686 123C686 123 686 126 686 133C686 144 689 157 691 163C692 164 695 168 701 172C718 185 737 205 750 224L755 232L761 233C767 235 776 237 783 238C786 239 805 238 805 237ZM206 235C230 231 257 215 294 185C305 175 325 157 326 156C326 156 324 155 321 154C311 152 303 151 290 152C275 152 267 154 254 159C247 162 246 162 240 169C232 177 227 181 218 186C213 189 210 191 208 194C200 204 192 219 189 230C188 232 188 235 187 235C187 237 198 237 206 235ZM825 232C837 228 847 221 855 211C861 205 867 193 868 185C869 179 870 168 869 164L868 161L866 164C864 165 860 170 857 174C847 186 843 189 835 189C830 188 826 185 823 180C821 176 821 174 821 168C821 164 822 158 822 154C825 141 824 129 820 128C817 127 813 122 812 119L811 115L807 116C798 117 786 122 782 127L780 129L783 128C789 127 797 132 799 139C801 144 800 150 797 154C789 163 776 162 770 152C769 150 768 149 767 149S766 148 766 142C767 130 770 123 777 114C782 109 792 102 796 101C799 100 806 102 810 105L813 108L816 104C825 95 841 101 841 114C841 117 842 117 847 120C853 124 861 131 865 138C868 142 868 142 871 142C872 142 879 143 885 145C899 149 904 149 907 146C911 143 911 140 909 134C907 126 904 124 887 118C874 114 870 112 865 107C861 103 855 90 853 83C852 77 852 71 855 67C857 64 867 59 875 57C879 55 888 55 896 56C898 56 898 56 900 51C901 48 902 43 904 40L906 35L903 32C898 28 886 20 877 16C850 3 821 0 789 6C749 15 715 40 698 75C694 83 689 97 688 102V106L693 109C707 120 724 134 746 156C770 180 789 202 808 226C815 234 816 235 817 235S822 234 825 232ZM742 223C730 207 712 189 698 178C696 176 696 176 699 182C708 198 723 214 739 223C741 225 744 226 744 226S743 225 742 223ZM497 209C498 208 497 207 491 204C483 200 470 191 462 185C459 182 456 180 456 180C455 180 454 182 452 183L448 186L462 195C469 200 479 207 484 211L494 218L495 214C496 212 497 210 497 209ZM493 197C492 195 485 189 478 183C465 173 465 173 463 174C462 174 461 175 461 175C461 176 471 184 478 189C483 192 495 199 496 199C496 199 495 198 493 197ZM505 189C510 175 513 158 514 141C514 134 514 132 513 133C511 135 473 165 472 167L469 168L471 170C473 171 480 177 488 184S502 196 503 196C503 196 504 193 505 189ZM844 183C848 180 850 176 853 163C856 151 858 146 860 144C861 144 861 143 859 140C856 135 849 129 844 125L840 123L837 125C835 127 833 128 831 129C828 130 828 130 829 133S829 144 828 154C826 163 826 173 828 177C829 180 830 181 834 182C839 184 841 185 844 183ZM784 118C788 115 793 113 800 111L807 109L804 108C798 106 796 107 788 113C781 118 778 122 784 118ZM902 108C900 102 899 96 899 95C898 94 898 93 895 92C887 90 882 81 884 73C885 69 890 64 892 63S894 62 892 62C886 59 866 64 860 71C858 73 858 73 858 78C858 82 859 84 862 91C870 105 874 109 892 115C897 116 902 118 903 119C903 119 904 119 904 119S903 114 902 108ZM973 428C963 425 958 413 964 405C967 401 972 398 976 398S985 401 988 405S992 414 989 419C987 426 980 429 973 428ZM691 677C687 676 683 671 683 666C683 658 691 652 699 656C712 662 705 681 691 677ZM556 179C546 174 545 160 554 154C559 151 566 151 570 154C575 157 577 160 577 166C577 170 577 172 575 174C571 181 562 183 556 179Z" horiz-adv-x="1022.99" unicode="D"/>
+ <glyph d="M596 1038C586 1036 580 1031 577 1024C575 1019 575 1007 577 1001C578 997 580 995 591 984C604 972 604 971 604 969C603 967 602 965 601 964C599 961 596 962 589 967C586 969 583 971 581 972C580 972 578 975 575 980C568 991 545 1026 543 1029C542 1029 539 1028 538 1028C537 1027 539 1024 545 1015L553 1002L549 1005C544 1010 539 1011 534 1011C524 1010 510 999 505 990C500 980 503 968 510 966C518 965 524 975 518 981C516 983 515 983 512 983H509L510 986C513 994 528 1005 535 1005C543 1005 551 997 554 987C555 982 555 983 552 962C551 953 552 949 555 945C556 944 559 942 560 942C563 941 568 944 573 948C579 953 582 955 582 955C586 952 623 879 623 876C623 875 620 873 617 871L611 867L609 870C582 903 556 928 523 948C485 971 442 986 398 990C378 993 348 992 327 989C286 984 243 967 210 943L203 938V946C202 955 200 964 196 973C193 979 187 989 186 989S184 989 183 988L181 986L183 984C189 974 192 964 192 957C191 951 190 948 185 946C179 943 173 946 160 958C151 967 144 972 136 975C108 986 72 973 50 944C45 936 38 924 35 915C34 912 33 909 33 909C32 909 26 918 24 922C17 938 19 961 31 977C34 982 43 990 48 992C55 996 62 997 68 996C73 995 78 992 81 990C82 989 82 990 86 994L89 998L87 1000C84 1002 78 1005 73 1006C51 1010 26 992 17 966C10 943 14 921 28 905L32 901L31 896C28 876 30 854 37 832C45 809 59 787 78 770C85 764 98 755 103 752L105 751L106 738C106 723 107 714 109 701C116 660 133 621 156 590C158 587 160 585 160 584S139 572 126 565C91 547 67 543 56 553C55 555 52 557 52 559C49 564 48 573 49 582L50 585L52 582C54 577 60 574 66 574C71 574 77 578 80 582C82 585 82 586 82 591C82 597 82 598 80 601C74 610 61 611 52 603C44 594 40 575 44 561C47 554 53 548 60 546C76 541 104 548 138 565L146 569L141 563C136 556 128 545 124 537C117 525 100 505 88 497C81 492 73 488 66 487C61 485 48 485 47 486C47 486 48 487 49 489C54 495 48 506 40 503C32 501 31 492 37 485C39 482 44 480 48 480C51 479 51 479 51 481S51 483 52 481C54 480 55 480 60 480C68 481 74 483 82 487S98 496 107 506L114 513L112 507C106 478 110 448 125 424C130 416 142 404 149 399C152 397 154 395 154 395S154 392 153 388C151 376 151 360 153 343L154 339L147 334C143 331 136 325 131 320C89 279 66 225 66 168C66 142 70 119 79 97C89 73 108 49 125 37C128 34 130 32 130 32C130 29 118 16 110 12C99 5 84 1 73 3L70 4L73 6C81 11 82 23 76 30C71 34 63 36 57 33C48 29 45 17 51 9C54 5 59 1 66 0C72 -3 87 -3 96 -1C110 2 123 10 132 22C135 25 137 28 137 28C138 28 140 27 143 25C173 10 209 8 235 21C252 29 264 42 269 58C272 66 272 78 270 84L268 89L274 94C277 97 285 107 291 115S304 131 306 133C318 144 338 144 347 133C351 129 352 125 352 118S352 110 349 114C347 117 341 120 336 120C332 120 328 118 325 115C318 107 320 95 329 90C332 88 333 88 338 88C344 89 348 91 352 97C360 107 361 127 354 142C349 156 337 168 323 174L319 175L324 176C332 177 347 180 358 184L369 188L374 179C385 159 390 141 390 119C390 74 364 38 327 32C321 31 312 31 309 32C307 32 307 32 309 34C313 36 315 40 315 45C315 60 294 64 289 50C285 41 291 32 302 27C309 25 325 25 334 27C365 36 388 62 395 98C397 107 397 132 395 140C394 144 394 146 394 146C394 147 396 144 399 140C413 120 432 100 453 84C497 48 548 27 605 20C616 19 651 19 662 20C694 24 729 33 758 44C763 46 767 48 768 48C768 48 769 47 770 47C772 44 777 42 781 42C789 42 794 48 795 56L796 60L806 65C841 80 878 94 902 100C923 105 935 106 952 106C961 106 967 105 970 104C975 103 985 98 988 96L990 95L985 93C973 87 958 84 938 83C924 82 920 81 913 76C905 70 899 61 897 52C896 48 897 37 898 33C898 31 898 32 891 35C882 40 873 44 864 46C858 48 855 48 846 48C834 48 829 47 823 43S815 35 814 29C814 19 820 13 829 13C844 13 849 32 836 40L834 41L838 42C847 43 865 41 876 36C884 33 894 27 902 22C937 0 945 -3 959 -3C975 -3 986 1 998 12C1003 18 1005 21 1008 26C1013 36 1014 42 1013 53C1013 68 1009 78 1002 88C1000 91 999 93 999 93C1009 101 1016 107 1020 116C1031 138 1023 165 1005 165C999 165 994 161 992 155C989 147 996 137 1005 137C1009 137 1014 140 1016 143L1018 146V141C1019 136 1018 127 1016 122C1013 114 1007 106 998 100L994 97L989 100C969 113 936 113 890 101C881 99 853 90 845 87C844 87 849 90 855 95C883 113 903 130 926 153C965 191 989 226 1009 271L1013 281H1017C1022 282 1025 283 1028 287C1032 291 1033 294 1033 299C1032 305 1030 310 1026 312L1024 314L1025 319C1036 360 1039 417 1034 460C1031 489 1022 524 1012 548L1010 552H1012C1013 552 1016 553 1019 553C1028 555 1032 558 1033 564C1033 568 1031 573 1027 576C1025 577 1020 580 1015 581C1009 584 1005 586 1003 588C999 591 995 600 994 605C994 610 995 611 1001 613C1006 615 1017 616 1017 615C1017 615 1016 614 1015 612C1009 603 1017 592 1027 594C1036 597 1038 607 1030 615C1026 619 1020 621 1012 621C1000 621 990 617 989 610C988 606 989 599 992 593C996 585 999 582 1011 577C1018 575 1022 572 1024 571C1026 568 1027 568 1027 564C1027 556 1023 554 1012 560L1006 562L1001 573C988 598 973 619 955 639L948 646H958C969 646 974 648 983 653C1002 666 1007 693 996 715C992 723 981 734 973 738C952 750 928 753 902 747C879 741 858 729 841 712L836 708L829 709C824 710 815 710 807 710C792 710 783 709 770 705C766 704 762 704 762 704S762 706 763 708C763 710 763 712 763 712C762 712 758 713 754 714C747 715 746 716 746 717C746 717 747 722 748 727C748 732 749 736 750 736C750 736 756 734 761 731C770 726 773 725 776 725C783 725 787 730 787 738C787 742 786 744 781 754S776 766 776 770C776 779 781 789 788 791C790 791 792 791 796 790C802 789 809 785 813 782L816 780L812 778C807 777 805 775 804 770C802 763 807 756 815 756C822 756 826 761 826 770C825 773 825 776 825 776S828 774 832 772C868 750 921 753 964 779C978 788 995 804 1003 816C1016 835 1021 854 1020 876C1020 891 1018 900 1011 913C999 937 979 952 954 956C923 960 895 943 888 916C881 888 901 862 929 864C944 866 954 870 960 877C969 886 969 897 961 906C953 914 940 915 932 908C928 905 925 899 924 894C923 887 927 878 934 874C938 872 938 871 929 871C919 870 910 873 903 880C890 893 889 914 901 930C915 949 941 955 966 946C986 939 1002 919 1009 895C1010 888 1011 886 1011 874C1011 861 1010 859 1009 852C1005 838 998 826 988 816C981 808 972 803 963 800C957 798 955 797 947 797C935 797 929 798 920 802C907 808 904 811 873 844C844 874 819 901 811 909L806 914L812 923C827 946 845 964 864 976C878 984 893 990 910 994C919 996 921 996 938 996S959 996 975 994C989 992 995 991 1007 991C1023 991 1027 992 1036 997C1050 1005 1051 1023 1038 1031C1035 1033 1033 1033 1029 1033C1024 1033 1023 1033 1019 1031C1011 1026 1008 1016 1012 1007C1014 1005 1016 1002 1018 1000L1021 998L1018 997C1013 996 990 998 974 1000C955 1002 932 1003 921 1002C887 998 859 984 834 959C824 949 817 941 808 928L802 919L799 920C794 923 781 927 773 929C763 931 745 931 735 929C705 924 675 911 640 887L629 880L628 886C623 914 621 943 624 962C627 989 639 1013 656 1024C663 1029 669 1031 678 1031C692 1032 700 1029 710 1019C717 1012 720 1007 724 997C727 992 727 990 727 985C727 981 727 979 724 974C719 963 707 955 696 954C684 954 679 959 681 970V975L682 972C686 966 695 963 702 967C716 974 711 995 695 995C685 995 677 985 675 971C673 963 674 959 679 955C689 945 709 948 723 961C728 966 733 974 733 978C733 980 733 980 736 977C754 961 781 966 783 986C784 991 783 1000 780 1005C774 1017 762 1022 753 1014C749 1011 748 1008 748 1003S749 995 753 992C760 986 770 987 775 995L777 997V993C777 990 777 987 777 986C776 976 764 970 753 973C744 976 737 983 732 994C725 1009 721 1017 712 1025C706 1031 699 1035 691 1036C685 1038 674 1038 668 1036C643 1030 624 1002 618 964C616 955 616 921 618 909C619 904 619 899 619 899S615 908 609 919S596 943 594 948L588 957L595 958C603 959 606 960 609 964C612 969 609 975 601 983C584 998 582 1001 581 1012C581 1017 581 1018 583 1022C585 1025 587 1027 588 1028C595 1033 609 1035 616 1032C619 1031 619 1031 617 1029C615 1028 613 1024 613 1022S616 1016 618 1015C623 1012 629 1015 631 1020C632 1026 625 1036 617 1038C612 1039 602 1039 596 1038ZM566 982C571 975 573 970 573 969S572 964 572 960C570 951 569 948 566 947C564 946 560 948 558 950C557 952 557 955 559 969C561 980 561 988 558 994C557 997 559 994 566 982ZM381 985C423 983 458 974 495 956C518 945 537 933 556 916C572 903 590 884 602 869L606 863L594 853C587 848 580 843 579 842L576 839L575 841C571 848 557 864 547 874C527 895 506 909 482 921C429 947 374 949 323 927C301 917 282 904 239 871C216 853 206 845 194 837C168 821 151 813 130 810C120 808 120 808 121 813C130 841 146 871 166 895C173 902 173 902 177 903C186 904 196 913 200 924C202 929 205 932 219 941C259 968 304 983 353 985C359 986 365 986 366 986C366 986 373 986 381 985ZM128 910L146 905L137 902C126 896 115 892 105 890C93 887 77 887 66 890C62 891 57 893 54 894C50 896 50 896 51 898C56 903 68 909 77 912C92 916 103 915 128 910ZM162 903L165 902L158 895C140 872 126 846 117 819C115 813 113 809 113 808C112 808 108 808 103 809C91 810 81 812 70 818C54 825 44 836 40 851C37 859 37 870 40 878C42 886 45 891 47 890C48 890 51 889 55 887C66 883 73 882 85 882C103 882 120 886 142 897C154 903 156 904 162 903ZM706 872C726 869 744 859 760 844L767 838L764 828C760 814 753 784 749 767C748 760 746 754 746 754S743 751 740 748C729 740 725 738 722 742C716 748 718 753 730 763C734 767 738 771 739 773C746 783 743 803 734 809C730 812 725 813 716 813C703 813 694 809 690 801C685 792 688 783 697 782C709 780 715 797 705 802C703 803 702 804 702 804C702 805 709 806 715 806C727 806 732 804 735 798C736 796 737 794 737 788C737 778 735 776 725 766C713 756 710 750 714 743C717 737 719 737 732 737H743V735C743 734 742 730 741 725C740 721 740 717 740 717S736 717 732 718C727 719 723 720 723 720C723 719 718 690 718 689C718 689 719 689 721 688C728 687 728 687 721 682C713 676 704 668 698 662L694 657V670L693 683H685H676V693C673 741 661 795 640 849C638 855 636 861 636 861C635 863 653 869 667 872C677 874 696 874 706 872ZM631 845C633 837 635 831 635 830C636 829 634 833 631 837C628 842 624 848 623 850S620 854 620 854C619 855 626 860 627 859S629 852 631 845ZM618 845C634 820 646 796 653 772C662 739 668 712 670 689V683H662H654V666V649H662H670V639C669 626 667 606 666 598C665 595 664 587 663 582C661 570 658 554 654 539C636 474 605 411 561 354L554 344L551 347L547 351L535 339L522 327L526 323L531 318L529 316C527 312 499 285 488 275L477 265L467 275L458 284L479 306C500 326 510 337 523 353C581 425 617 505 629 588C632 611 633 620 633 648C633 677 632 687 628 710C621 753 604 798 583 831L581 833L586 836C592 840 613 852 613 852C614 852 616 849 618 845ZM784 818C789 812 796 804 799 800L805 794L800 796C793 798 787 798 783 796S775 789 772 783C770 779 770 778 770 772V765L776 753C780 744 781 740 781 738C781 734 779 731 776 730C771 727 768 730 761 745C759 749 756 753 755 754L753 755L756 771C759 786 767 817 770 827C771 831 772 832 773 831C773 831 778 825 784 818ZM400 810C420 806 442 797 461 784C520 744 556 674 564 589C566 572 566 540 564 523C557 447 526 374 475 314C460 297 460 297 476 330C500 378 514 413 524 450C546 531 542 608 511 666C499 690 486 706 463 726C457 731 452 736 450 738C447 742 445 747 445 750C445 751 444 752 443 752C439 753 438 753 436 748C433 744 423 731 421 730C420 729 417 732 414 735C398 748 381 757 362 760C300 770 244 721 244 657C244 644 244 640 248 631C250 628 252 625 255 622L259 619L254 618C252 618 247 618 244 617C221 616 197 607 175 594C171 591 166 588 166 588C165 588 153 604 148 613C142 624 136 635 131 647C127 657 123 668 124 669C124 669 125 667 127 665C133 655 145 646 155 643C162 640 176 640 182 642C192 644 199 651 199 659C199 670 190 676 181 673C171 669 169 657 177 650C178 649 179 647 179 647C179 646 164 647 160 648C136 654 119 680 114 719C112 728 111 747 112 747C112 747 115 746 119 744C153 730 193 729 228 742C244 748 253 754 284 773C295 780 308 788 312 791C332 802 350 809 368 811C376 812 391 811 400 810ZM359 754C378 751 399 741 411 728C415 725 415 725 413 723C410 720 393 707 383 701C371 694 347 681 331 674C326 672 321 670 321 669C321 669 321 668 321 666L322 663L328 664C336 664 352 663 361 661C382 656 404 645 421 632C424 630 429 625 433 621L439 615L437 609C433 595 422 577 410 565L404 558L398 564C369 592 328 611 285 617C280 617 276 618 276 618S276 619 277 619S284 624 286 628S288 640 286 644S279 652 275 653C272 655 265 655 261 653C258 652 253 647 251 644C250 642 249 653 250 662C253 699 275 732 307 747L313 749L312 746C306 734 314 721 327 721C337 721 344 728 344 738C344 744 342 748 337 752C334 754 334 754 335 754C339 755 353 755 359 754ZM951 744C971 740 988 726 993 708C995 702 996 689 995 683C991 665 976 652 958 652C953 652 944 653 947 654C950 654 956 660 957 663C962 676 953 689 940 689C931 689 924 682 922 673L921 669L915 674C905 681 886 692 876 696C874 697 873 698 873 698C873 699 874 701 875 704C888 733 921 751 951 744ZM822 705C827 705 831 704 831 704C832 703 830 700 827 696C810 674 800 648 796 618C795 613 795 607 795 605V600H783C774 600 769 600 765 599C743 594 727 580 722 559C720 553 720 540 721 534C726 517 738 505 752 503C769 500 783 509 783 521C783 525 780 530 777 531C772 535 766 534 761 530C756 524 757 517 762 512L765 509H761C759 508 755 508 753 509C726 513 716 552 736 577C747 589 766 596 787 594L794 593V590C796 565 801 544 811 520C817 507 825 492 840 464C847 453 852 442 852 442C852 440 838 426 831 421C821 415 807 409 798 407H796L795 418C795 432 793 439 788 449C780 466 766 478 750 484C741 487 731 488 725 485C720 483 715 478 715 474C713 467 716 455 721 449C726 442 735 439 742 443C752 447 753 462 744 468C737 472 728 471 723 465C721 461 721 462 721 469C721 477 724 481 733 481C743 482 758 475 769 463C779 453 785 442 788 429C789 423 790 407 789 405C789 405 782 405 775 405C760 405 754 406 743 411C722 420 702 440 689 465L684 474L688 485C710 540 727 602 739 672C740 678 741 684 741 684S744 684 748 683S756 682 757 682C757 682 758 686 759 690L760 698L767 700C785 705 803 707 822 705ZM880 688C898 680 917 667 926 659C928 656 932 653 934 652C939 648 955 632 963 622C975 607 984 593 992 576L998 566H995C990 567 988 565 985 554S980 540 977 539C975 537 971 538 968 542C965 545 965 550 968 559C971 570 970 573 967 579C962 589 954 595 948 595C944 595 936 591 931 586C923 579 921 570 925 562C928 555 935 553 941 556C951 562 947 578 935 577C933 577 932 577 932 577C932 579 938 584 942 587C950 591 954 589 960 579C965 572 965 569 962 559C960 549 960 544 962 539C964 536 969 533 972 533S982 536 989 542C995 547 1002 551 1004 551C1004 551 1005 550 1005 550C1021 510 1027 479 1030 437C1032 402 1028 359 1020 324C1018 316 1018 316 1016 316C1006 316 997 306 999 296C1000 292 1003 287 1005 285L1007 283L1005 276C997 259 986 238 974 220C934 160 876 110 805 72L793 66L791 67C789 70 784 72 781 72C777 72 773 70 771 68C767 65 766 63 766 58L765 54L759 51C739 43 708 34 687 30C625 19 565 27 510 54C458 80 414 122 384 175C381 181 377 186 376 188L375 190L382 194L390 197L392 195C393 193 400 185 407 177C435 144 448 131 463 120C527 72 611 58 702 80C762 95 818 124 866 164C878 173 904 200 913 211C938 240 956 272 966 304C985 362 981 419 954 472C947 487 940 497 922 526C903 555 899 560 892 574C872 609 864 640 866 670C867 680 870 693 871 693C871 693 876 691 880 688ZM732 671C721 605 704 542 684 491L680 482L678 488C671 510 668 529 667 554C667 569 668 571 670 585C673 605 674 610 678 620C686 640 698 657 714 671C720 676 734 686 734 685C735 685 734 679 732 671ZM686 645C684 643 681 639 679 635L675 628L676 633C676 636 676 641 676 644V649H682H688ZM273 612C298 610 321 604 345 592C363 583 380 572 393 560L399 554L397 552C391 548 377 539 369 535C356 528 342 524 327 522L321 521L324 524C330 531 329 542 321 547S304 549 300 541C297 536 299 527 305 523L307 521L303 520C296 519 277 521 262 525C238 531 215 543 194 559C187 565 171 581 171 582C171 584 181 591 191 596C212 606 231 611 259 612C260 612 267 612 273 612ZM449 602C471 573 484 537 490 494C492 479 492 447 490 431C485 392 475 355 458 315C449 295 448 292 447 293C447 293 443 296 440 298C436 301 429 305 424 308S415 314 415 314S418 318 421 323C428 335 440 360 444 370C462 419 460 465 438 510C432 523 424 535 415 546L408 554L414 560C421 568 428 576 433 585C437 592 442 602 443 606C443 608 444 608 444 608S447 606 449 602ZM191 554C228 524 274 510 318 514C348 517 379 530 399 546C401 548 403 549 403 549C405 549 418 532 425 522C449 483 456 439 445 395C441 380 437 367 429 351L425 342L411 349C384 362 364 369 341 375C290 387 240 383 193 362C185 358 169 350 162 345C161 344 160 344 160 344C159 346 157 364 158 371C158 378 161 390 162 391C162 392 164 391 166 391C189 383 215 389 233 405C246 416 253 431 255 449C255 453 256 456 256 457C257 457 272 460 281 461C306 463 332 459 350 449C366 441 376 429 380 414C381 408 382 397 380 394C380 393 380 393 379 395S374 400 370 401C358 404 348 392 353 381C355 376 361 372 367 372C370 372 375 374 378 377C387 386 390 403 385 423C382 432 376 445 370 453C355 473 330 488 302 492C287 495 265 494 251 491L247 490L244 494C240 500 230 508 224 512C216 517 208 519 198 520C189 520 185 519 178 517C173 515 167 510 165 506C159 495 166 482 179 482C187 482 195 489 195 498C195 503 192 508 187 511L185 513H188C198 515 212 512 221 506C227 503 234 496 238 491L240 488L238 487C236 486 234 485 233 485S227 483 223 480C193 465 169 439 159 409C158 405 156 402 156 402S148 407 143 411C134 420 123 438 119 451C113 474 114 499 123 522C126 528 128 532 134 540C146 557 152 564 159 571L165 578L175 568C180 563 187 557 191 554ZM663 530C665 512 668 498 674 482L677 474L674 467C654 420 628 377 600 341C590 329 579 317 579 317C579 318 574 323 568 329C560 338 558 340 559 341C559 341 564 348 569 355C610 408 642 472 658 533C660 538 661 542 661 541C661 541 662 536 663 530ZM693 445C699 436 712 423 721 416C724 414 731 410 735 408C750 400 761 398 778 398C785 399 788 398 788 398C786 391 784 385 781 380C778 374 771 364 767 360L764 358L758 362C731 380 696 386 665 380C652 377 637 371 627 365L623 362L628 369C642 390 655 413 667 438C672 447 677 458 678 461L680 466L685 458C687 454 691 448 693 445ZM249 451C247 425 231 405 207 397C200 394 199 394 188 394C178 394 176 394 171 396C167 397 165 398 165 398S167 402 169 406C182 426 207 442 239 452C244 454 248 455 248 455C249 455 249 454 249 451ZM863 423C878 392 886 366 890 333C892 321 892 287 891 274C883 211 852 160 802 131C749 98 681 97 618 128C591 141 571 156 549 177C536 189 527 200 513 219L501 234L509 240C537 259 556 270 570 272C581 274 588 270 591 261C593 257 594 247 593 243V240L591 242C586 248 576 248 572 241C568 233 574 224 583 224C593 224 601 235 600 250C599 262 596 269 589 273C586 274 584 275 579 275C567 276 555 272 535 261C530 259 526 256 526 257C535 264 544 273 551 279C555 283 559 287 559 287C560 287 561 285 563 284C564 282 565 281 566 281S591 304 591 304S589 306 587 309L583 313L588 318C591 321 597 328 601 333C609 343 617 350 626 357C657 377 695 382 730 369C741 365 759 355 759 353C759 352 750 345 743 341C724 331 705 326 679 324C670 324 665 323 661 322C632 312 615 275 623 238C627 217 636 200 651 185C659 177 669 170 679 165L685 163L680 158C672 151 668 142 669 132C669 125 670 120 674 115C677 111 681 109 686 109C699 109 702 126 690 131C687 132 686 132 683 131C681 131 679 129 678 128S675 126 675 126S675 129 675 132C675 141 679 150 686 155C691 160 692 160 699 159C708 157 723 157 732 158C782 167 817 218 812 272C809 301 796 327 776 347L769 354L773 358C782 368 790 383 793 395C794 399 794 400 796 400C819 405 840 417 852 431C854 433 856 435 856 435C857 435 859 429 863 423ZM307 374C340 371 370 362 407 344L422 337L418 331C410 318 410 316 409 317C408 317 403 319 397 322C326 352 242 343 183 300C180 298 177 296 177 296C176 296 170 310 167 317C166 320 164 326 163 330L161 337L167 341C196 360 233 372 268 375C278 376 298 376 307 374ZM773 342C789 325 799 306 804 283C807 271 807 252 804 240C800 219 791 203 777 189C766 178 752 170 738 166C728 164 724 163 720 165C713 168 706 169 699 168S692 167 687 169C661 179 640 201 632 229C625 251 626 273 635 291C641 301 649 310 658 314C665 317 670 318 680 318C708 318 728 309 734 295C735 291 736 289 735 285C735 278 734 275 730 271C723 265 717 265 704 272C695 276 694 276 689 276C679 276 672 272 666 264C662 257 660 250 660 241C660 230 664 219 671 209L675 204L677 206L679 208L676 213C672 220 670 223 671 228S677 239 682 240C689 242 693 241 706 234L719 227H726C731 227 733 228 736 229C747 234 753 245 753 260S746 289 734 301C727 308 720 312 711 317L703 321L708 322C725 325 747 335 760 346C762 348 764 349 765 349C765 349 769 346 773 342ZM157 327C159 319 163 309 168 300L172 292L164 285C141 263 126 236 120 205C118 196 118 194 118 178C117 164 118 160 119 154C123 134 130 120 141 105L146 98V88C146 72 143 59 137 44L135 38L132 41C112 55 95 78 84 104C69 140 68 185 80 227C90 258 108 288 131 312C140 321 155 333 155 332C156 332 156 329 157 327ZM545 302L555 292L551 288C543 280 510 251 500 243L497 240L489 250L481 260L491 269C497 274 509 286 518 295C527 305 535 312 536 312C536 312 540 308 545 302ZM252 288C270 287 286 282 303 274S334 255 353 238L362 230L360 229C358 228 355 227 352 226L346 225L339 232C320 247 298 258 275 264C267 266 255 267 243 267C230 267 223 267 212 264L204 262L202 264C199 267 190 277 190 278S202 283 212 286C226 289 238 290 252 288ZM193 265C195 262 197 259 197 259C196 259 193 257 190 256C167 244 152 227 147 205C146 200 146 197 146 189C146 183 147 178 148 176C149 173 149 172 147 165C146 159 145 144 144 134V130L140 135C132 145 126 159 124 172C122 186 124 206 130 220C138 241 155 260 177 272L183 276L185 273C186 271 190 268 193 265ZM269 259C287 255 304 248 319 238C327 233 337 225 337 224S322 221 309 221C284 221 260 227 238 238C231 242 216 251 212 255L210 257L215 258C227 261 230 261 246 261C258 261 263 260 269 259ZM208 250C223 238 247 226 268 220C290 214 316 213 338 217L344 218L346 216C349 214 358 203 362 197L365 193L362 192C348 186 328 182 313 181C305 181 304 181 304 179C304 178 303 178 298 178C278 176 262 166 239 142C227 129 216 119 210 116C203 113 194 111 187 111C175 111 165 114 155 121L150 124V130C149 139 151 165 152 165C152 165 153 163 155 161C157 157 163 152 168 149C183 140 202 144 212 159C223 175 218 198 201 207C183 216 165 210 155 190L152 184V191C152 213 164 232 185 246C191 250 200 254 202 254C203 254 206 252 208 250ZM376 213L386 202L380 200C371 195 372 195 366 203C363 206 359 212 356 215L351 220L356 221C358 222 361 223 362 223S365 224 366 224S371 219 376 213ZM174 201C168 195 168 187 174 181C179 177 186 177 191 182S196 194 191 199L188 203H191C195 204 200 201 205 196C210 190 212 187 212 177C212 170 212 169 209 165C204 156 197 151 187 151C179 150 174 152 168 156C164 159 158 167 156 172C154 175 154 176 156 180C159 190 166 199 172 203C176 205 177 205 174 201ZM168 81C196 63 233 64 260 83L264 85L265 82C266 81 266 76 266 72C267 59 262 49 251 38C236 24 218 18 194 19C176 20 165 23 149 30L141 34L143 39C149 51 153 69 153 83V91L158 87C161 85 166 82 168 81ZM998 85C1004 75 1008 61 1007 49C1006 29 993 12 974 5C967 2 954 2 947 4S928 12 918 19C909 25 909 25 906 30S903 36 903 44C903 51 903 52 906 57C912 70 922 77 937 77C946 77 946 76 943 73C939 71 936 64 936 60C936 55 937 51 941 48C947 42 953 41 961 44C973 51 973 69 960 77L957 78L964 80C972 81 982 85 988 87C991 89 993 90 994 90S997 87 998 85ZM424 66C408 59 413 35 430 35C439 35 446 43 447 51C447 54 444 60 442 62C438 67 430 69 424 66Z" horiz-adv-x="1045.06" unicode="V"/>
+ </font>
+ <font horiz-adv-x="0" id="yswab">
+ <font-face ascent="751" descent="-249" font-family="yswab" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M81 584C107 584 134 581 156 577C220 564 294 528 307 457C308 457 308 424 308 424C307 408 303 392 297 377C264 295 180 250 97 226C78 221 20 208 11 205L19 182C34 184 48 188 63 191L138 208C188 219 238 228 284 253C326 277 357 308 385 348C389 357 391 365 404 365C409 365 456 359 475 356C567 340 689 298 689 177C689 147 681 117 664 92C643 60 599 30 548 30C518 30 489 40 462 53C406 79 357 119 308 156L265 187C258 192 248 203 238 203C233 203 29 157 29 157C30 152 32 146 34 141C37 131 46 134 59 132C118 128 161 109 207 87C292 49 378 -13 493 -13C509 -13 525 -11 540 -8C596 7 643 30 682 64C731 106 777 165 777 250C777 342 719 436 631 445V446L662 465C686 487 718 503 737 530L726 544L577 698H576L415 542C395 602 347 648 291 676C282 680 248 697 238 697C230 696 221 689 215 685L164 653L107 617L91 607C85 603 81 601 81 591V584ZM630 474C619 468 608 461 597 455C544 424 478 404 407 393C417 418 422 444 424 471V497C423 500 423 503 423 506C423 520 435 526 442 532C452 541 461 551 471 560C476 564 503 595 510 595C515 595 520 588 522 586L630 474Z" glyph-name="B" horiz-adv-x="795" unicode="B"/>
+ <glyph d="M523 698C487 678 448 670 409 670C381 670 357 674 334 679C328 680 320 683 313 683S299 678 294 676L263 660C235 646 178 619 155 602C62 537 11 422 11 308C11 186 69 94 144 40C187 9 246 -14 314 -14C444 -14 574 64 574 189C566 183 559 175 551 168C503 127 432 95 356 95C304 95 259 111 223 132C213 138 204 146 194 151V153C233 178 272 204 309 231L311 258V567C349 559 412 548 451 548C465 548 480 550 492 560C516 580 520 617 522 646C523 658 524 669 524 681C524 687 524 693 523 698ZM194 596V229V213C194 191 186 182 175 169C125 219 86 287 86 378C86 474 130 562 194 596Z" glyph-name="C" horiz-adv-x="592" unicode="C"/>
+ <glyph d="M170 347H220C223 347 227 348 231 348C241 348 245 343 249 336C252 330 256 325 260 319C327 224 410 139 410 -18C410 -48 405 -79 388 -105C373 -129 349 -151 312 -151C230 -151 192 -61 175 -1C170 17 164 36 162 55H11V38C44 36 54 -6 66 -30C96 -102 170 -152 244 -168C265 -173 287 -176 308 -176S349 -173 369 -167C463 -137 515 -31 515 73C515 146 487 215 456 268C440 296 421 321 402 347C437 349 478 344 509 349C526 372 534 404 547 431H361H352C338 431 339 436 332 445C311 478 288 528 288 576S319 671 370 671C381 671 391 668 401 662C430 642 444 601 444 554H561V672C544 675 526 682 509 685C473 693 428 698 390 698C343 698 307 681 279 655C236 615 204 549 204 473V460C205 450 211 412 211 412C209 401 188 380 184 376C177 369 170 366 170 353V347Z" glyph-name="F" horiz-adv-x="579" unicode="F"/>
+ <glyph d="M377 698L370 674L420 660C418 647 413 634 408 621C359 485 230 396 120 330C96 316 34 281 11 270C29 237 54 194 72 164C73 161 75 157 79 155C80 155 88 154 88 156C188 189 303 231 422 231C451 231 470 224 488 208C521 180 534 138 534 96C534 87 533 77 532 67C519 -15 461 -90 378 -110C364 -113 349 -115 335 -115C304 -114 262 -95 262 -56C263 -43 270 -33 279 -24C295 -8 319 6 319 31C319 33 318 36 318 38C318 43 316 48 314 53C304 73 283 85 262 85C217 85 197 39 197 0C197 -10 198 -19 200 -28C216 -107 305 -156 397 -156C427 -156 456 -151 484 -142C567 -113 633 -42 653 44C658 63 660 84 660 104C660 193 620 265 574 311C568 317 542 343 533 343C523 343 503 333 499 331L430 306L272 247C243 236 214 223 184 214C167 247 148 277 131 309C161 315 222 342 241 349C370 405 489 484 569 597C578 609 588 622 594 636L377 698Z" glyph-name="H" horiz-adv-x="680" unicode="H"/>
+ <glyph d="M522 698L384 551V698C375 695 366 690 357 686L311 664C256 639 202 614 153 578C79 525 11 449 11 339C11 317 13 294 17 273C37 167 104 69 202 20C242 2 288 -14 342 -14C363 -14 379 -10 398 -6C469 15 524 71 572 125C619 180 679 243 698 315C703 332 706 350 706 368C706 373 706 379 705 384C699 422 677 457 657 489C637 522 616 553 593 584C567 621 540 656 522 698ZM267 616V395C267 376 268 356 268 336C268 281 260 237 238 198C232 185 224 174 217 161C207 167 199 176 191 185C145 231 108 312 108 386C108 478 161 544 217 585C233 597 250 606 267 616ZM239 142L383 310C387 375 381 447 385 511C401 532 419 551 437 571C460 548 479 522 498 496C524 460 578 385 597 347C605 332 610 324 610 303C610 290 607 276 606 264C595 160 524 85 418 85C357 85 306 105 259 130C252 134 246 139 239 142Z" glyph-name="O" horiz-adv-x="724" unicode="O"/>
+ <glyph d="M321 -13L376 42C379 45 394 58 394 63S381 81 380 82C350 117 316 163 316 224C316 246 318 282 324 295C329 305 391 376 396 384C363 406 332 430 300 453L276 471C273 473 268 477 264 477C258 477 238 461 238 461L173 415C98 363 18 293 11 195C11 195 12 147 14 147C18 128 23 109 32 92C53 49 87 13 131 -9C131 -9 143 -13 143 -10C152 -5 159 5 166 12L212 58C215 61 233 81 238 81C241 81 243 78 245 76C259 59 318 -13 321 -13ZM307 316C301 301 262 166 257 150C253 125 242 120 226 104L199 77C195 73 191 68 186 66C179 66 166 76 163 78C122 109 87 161 87 226C87 299 134 354 174 386C178 389 184 396 190 396C194 396 198 392 201 390L223 374C241 362 259 349 277 336C287 329 296 321 307 316Z" glyph-name="a" horiz-adv-x="414" unicode="a"/>
+ <glyph d="M291 93L280 110C269 107 260 100 249 95C230 87 209 83 188 83H177C108 90 102 187 102 257V287C103 315 94 342 94 371C94 385 99 406 113 411C117 411 120 409 123 407C129 403 206 355 206 355C210 353 231 338 235 338H236C243 338 248 348 251 353C264 371 279 388 291 407C263 423 236 441 208 459L186 472C183 474 179 477 175 477C168 477 160 470 155 466C121 441 78 419 54 386C25 344 11 282 11 218C11 128 47 58 99 10C103 6 122 -11 129 -11C134 -11 163 9 173 15C183 22 291 89 291 93Z" glyph-name="c" horiz-adv-x="309" unicode="c"/>
+ <glyph d="M152 382C145 380 139 376 132 373C87 347 48 321 24 272C15 251 11 229 11 206C11 201 12 195 12 190C20 102 78 28 154 -4C161 -7 174 -12 182 -12C189 -12 239 11 257 19C289 32 323 43 349 66C391 104 410 169 410 228C410 240 409 252 407 264C392 337 330 391 269 428C228 452 153 478 153 543C153 570 167 595 183 611C191 617 195 619 195 632V643C140 643 75 618 55 563C50 550 49 536 49 522C49 469 90 429 118 407C129 398 141 391 152 382ZM97 239V249C97 286 117 320 145 344C151 349 168 365 177 365C183 364 188 359 193 357C257 314 338 266 338 167C338 158 338 149 337 141C335 114 333 80 306 65C303 64 301 63 299 63C295 63 277 69 272 69C262 71 251 70 241 72C218 75 196 85 176 98C128 130 103 183 97 239Z" glyph-name="d" horiz-adv-x="428" unicode="d"/>
+ <glyph d="M278 113C249 102 239 89 198 89C178 89 159 95 144 110C129 127 123 143 117 169C116 173 108 222 113 222C116 227 123 230 128 234C140 242 290 339 297 343C269 389 239 434 210 479C199 475 122 437 94 423C75 413 53 406 39 388C19 361 15 323 13 290C12 270 10 248 10 228C10 131 41 65 87 9C94 2 100 -8 110 -11C110 -11 121 -8 121 -6C132 0 241 66 241 66L266 81C273 86 278 87 278 101V113ZM110 249C109 262 109 276 109 289C109 338 122 373 147 402L179 352L206 312L110 249Z" glyph-name="e" horiz-adv-x="315" unicode="e"/>
+ <glyph d="M11 356H67C76 173 89 -4 108 -177H114C117 -177 120 -177 122 -175C124 -174 128 -152 129 -145C149 -26 166 107 176 230C178 251 185 339 185 356H267V419H206H197C186 419 175 420 165 425C144 436 129 474 129 502C129 526 138 550 159 565C167 571 176 576 190 576C206 576 220 569 235 560C247 552 262 541 276 541C288 541 293 555 298 563L329 607C335 615 341 624 346 633C342 636 335 642 329 642H327C318 638 318 624 307 624H304C279 629 264 656 237 657C137 657 114 562 84 494C67 453 53 419 22 388C16 382 11 380 11 366V356Z" glyph-name="f" horiz-adv-x="301" unicode="f"/>
+ <glyph d="M337 479C330 471 296 424 290 420C286 418 281 418 277 418H164C148 418 148 422 139 433L116 463C113 467 108 476 103 476C99 476 96 471 94 468C90 462 70 437 65 430C59 424 54 417 54 406C54 401 55 396 55 391V139V126C55 122 55 118 56 114C57 109 71 84 76 75C89 50 101 25 115 1C131 8 147 17 162 26C171 30 286 92 289 92C295 90 301 80 304 75C327 44 345 0 345 -50C345 -111 280 -142 233 -142C182 -142 145 -113 111 -83C103 -76 73 -48 65 -45C48 -68 29 -88 11 -110C3 -120 -9 -126 -9 -144C-9 -161 4 -161 17 -167C63 -186 119 -200 181 -200C192 -200 202 -199 212 -197C262 -186 305 -153 341 -118C380 -80 425 -29 425 42C425 77 413 106 397 129C392 137 385 141 385 154V167V323C401 323 418 322 432 325L437 333C445 362 455 390 464 418C437 418 409 417 385 420C368 438 353 459 337 479ZM150 323H290V138V131C290 118 285 115 274 111C262 104 251 98 239 92L195 69C192 67 186 62 182 62C174 62 171 75 169 79C162 92 150 109 150 128V323Z" glyph-name="g" horiz-adv-x="482" unicode="g"/>
+ <glyph d="M152 644C102 644 83 588 74 555C72 550 65 521 65 516V514C68 510 76 502 82 502C86 502 90 505 93 507C127 530 172 547 190 585C194 593 197 603 197 612C197 634 177 644 158 644H152ZM93 479C66 449 38 420 12 390L11 379C37 377 46 347 46 325V133V120C46 95 32 78 11 76L13 54C46 31 78 8 115 -11C157 14 192 47 230 76L232 98C216 88 195 76 173 76C148 76 140 102 140 127C140 137 141 147 141 155V323C141 346 149 376 176 379L175 390C149 421 120 449 93 479Z" glyph-name="i" horiz-adv-x="250" unicode="i"/>
+ <glyph d="M11 77V76C50 47 86 16 126 -11L137 -6C171 21 206 47 238 76L240 98C229 90 210 76 192 76C152 76 147 121 146 152C146 158 145 163 145 169V301V566C145 573 146 579 146 586C150 623 169 676 218 676V698C200 693 182 687 164 682L64 651C51 647 39 644 26 640C17 636 11 638 11 624C11 620 11 615 13 613C16 611 21 610 24 608C42 600 50 580 50 556V548V202V183C50 141 32 102 11 77Z" glyph-name="l" horiz-adv-x="258" unicode="l"/>
+ <glyph d="M104 479L11 392V391C31 369 52 347 70 323L71 310V-13L138 17L156 25C163 27 166 30 166 40V50V337V348C166 351 166 355 168 358C171 362 206 383 217 391C222 394 228 400 234 400H235C241 399 265 376 265 376C271 371 284 364 286 355C287 351 287 346 287 342C287 333 286 324 286 315V-12C340 23 395 57 445 96L446 117C440 115 435 112 429 112C406 112 389 134 384 154C381 165 381 176 381 187V214V320C381 341 388 364 407 371C415 374 418 374 418 385V392C417 398 411 402 406 406C396 415 349 454 336 465C331 469 324 477 318 477C313 477 310 473 306 471C259 439 213 414 166 380C166 391 166 402 165 412C146 436 125 457 104 479Z" glyph-name="n" horiz-adv-x="468" unicode="n"/>
+ <glyph d="M236 473C193 438 136 416 93 381C46 344 11 289 11 228V219C17 139 81 82 137 32C147 24 157 15 166 6S182 -14 199 -14S220 -2 230 7C246 21 264 35 281 48C349 99 446 158 446 261C446 270 445 279 444 288C434 362 374 417 316 457C309 461 266 491 258 491C254 491 240 477 236 473ZM80 295C80 338 111 380 149 390C156 391 162 391 169 391C186 391 202 388 218 384C299 361 365 288 365 196C365 185 364 174 361 163C350 122 315 88 267 88C242 88 217 95 195 106C146 130 110 175 93 226C87 243 80 277 80 295Z" glyph-name="o" horiz-adv-x="464" unicode="o"/>
+ <glyph d="M104 479L11 392V391C31 370 51 348 69 325L71 309C71 251 72 193 70 138C56 126 41 115 27 104L58 91C67 86 71 88 71 73V-25C72 -75 88 -126 114 -169C124 -155 131 -136 138 -120C159 -67 166 -12 166 45C173 42 268 2 270 2C277 3 285 11 290 15L335 48C358 65 381 81 401 103C440 148 463 209 463 269C463 277 463 286 462 294C452 370 389 428 338 479H337L166 308C165 342 167 379 165 411C147 436 126 458 104 479ZM272 383C309 346 349 301 363 249C369 227 370 203 370 179V162C370 139 369 114 356 94C353 88 345 76 336 76C331 76 323 80 319 83L178 142C171 147 166 145 166 158V264C166 268 166 272 167 275C170 282 196 306 197 307C222 333 248 356 272 383Z" glyph-name="p" horiz-adv-x="481" unicode="p"/>
+ <glyph d="M104 479L11 392V391C31 369 52 348 70 324C73 258 72 182 69 119C51 104 31 91 12 77V75L115 11L141 -6C145 -8 148 -11 152 -11C161 -11 170 -1 175 2L273 70C277 73 286 77 286 83C286 90 280 97 275 97C269 97 263 91 260 89L237 73C233 70 228 65 223 65C219 65 214 68 211 70L188 85C181 89 169 94 166 102V331C166 337 165 344 165 351C165 365 170 368 180 374L214 398C218 401 223 406 229 406C236 406 242 396 246 392L286 352H287L331 396C338 403 345 408 345 418S336 434 330 440L291 479H290L166 392L165 412C146 436 125 457 104 479Z" glyph-name="r" horiz-adv-x="363" unicode="r"/>
+ <glyph d="M11 356H67C76 173 89 -4 108 -177H114C122 -177 125 -174 125 -165C147 -67 173 186 178 254C180 270 186 357 186 369C186 374 187 378 187 383C186 390 182 395 178 400C157 427 129 463 129 501S155 576 191 576C208 576 224 567 239 557C250 551 264 541 277 541H279C286 543 296 560 298 563L329 607C335 615 341 624 346 633C342 636 335 642 329 642H327C318 638 318 624 307 624H304C279 629 264 656 237 657C137 657 114 562 84 494C67 453 53 419 22 388C16 382 11 380 11 366V356Z" glyph-name="s" horiz-adv-x="234" unicode="s"/>
+ <glyph d="M169 589L11 377H75C74 289 77 198 74 113C61 102 47 92 33 82L145 11C158 3 169 -6 185 -11L198 -4L324 84L312 103C298 95 286 85 273 76C268 73 260 65 254 65C247 65 239 72 234 75L188 104C178 109 169 113 169 128C169 133 170 138 170 143V377H324V456H170C169 500 171 547 169 589Z" glyph-name="t" horiz-adv-x="342" unicode="t"/>
+ <glyph d="M26 81V80C32 74 40 71 48 67L75 55L177 10L212 -6C216 -8 222 -11 226 -11H228C236 -11 244 -1 250 4L303 45C379 102 471 184 471 290C471 355 441 417 387 453C378 459 346 478 334 478C333 478 331 477 330 477C324 476 284 447 284 447L180 374C174 405 148 441 131 458C127 462 114 477 106 477C100 476 94 470 90 467L55 440L25 418C22 415 15 412 14 408C14 405 16 403 18 402C23 397 29 393 34 388C71 355 104 300 104 235C104 202 95 169 78 140C65 117 46 98 26 81ZM126 148C133 160 144 171 151 183C174 219 189 264 189 317V326C189 332 188 338 187 344V351C187 358 192 361 196 365C211 377 227 389 252 389C257 389 263 389 268 388C333 378 378 308 378 235C378 176 349 123 317 87C314 82 308 72 300 72C296 72 253 92 253 92C211 110 169 131 126 148Z" glyph-name="v" horiz-adv-x="489" unicode="v"/>
+ <glyph d="M275 417C267 422 182 477 176 477H175C168 477 161 470 156 466C140 456 125 445 109 434C89 421 71 407 57 388C25 344 11 284 11 218C11 123 53 47 112 -1C117 -4 123 -11 129 -11C137 -11 155 4 157 5L224 48C229 51 244 63 250 63C254 63 257 60 260 58C277 44 353 -12 354 -13C391 17 430 45 465 76L466 97C448 89 444 76 416 76C387 76 377 106 373 128C371 141 370 202 370 210V258V294V303C370 317 378 321 384 329L408 357C411 361 419 373 424 373S433 369 436 366L469 338C518 296 567 245 567 169C567 30 435 -89 355 -169V-170L370 -185H371C471 -85 622 14 652 162C656 180 657 199 657 217C657 321 575 397 526 441C522 445 482 479 481 479C444 435 406 393 371 347H370V505C370 520 369 535 369 550C369 567 370 584 374 601C381 634 400 676 443 676V698L288 651L250 639C243 637 236 636 236 626V620C236 614 240 612 244 610C248 609 252 607 256 604C271 593 275 581 275 556V417ZM239 336L274 384C275 378 276 372 276 366C276 358 275 350 275 342V204V186C275 156 264 109 249 97C239 87 205 83 189 83C174 83 159 86 147 94C112 119 102 181 102 235C102 239 104 304 102 304C101 314 95 365 95 369C95 386 99 407 113 411C117 411 121 409 124 407L147 392L206 355C217 349 227 340 239 336Z" glyph-name="Ecaron" horiz-adv-x="675" unicode="&#x11A;"/>
+ <glyph d="M11 108V51H26C30 51 36 51 40 50C49 48 102 20 120 10C125 7 157 -12 163 -12C172 -12 181 -1 185 2L221 27L286 72C320 97 362 128 362 184C362 221 342 260 314 283C298 297 278 305 258 311L355 427C351 431 345 439 339 439C336 439 333 437 331 436C324 431 315 427 302 427C268 427 241 448 222 462C217 465 202 477 195 477C189 477 153 448 141 439C98 405 11 357 11 286C11 283 11 280 12 277C17 249 44 227 63 207C75 194 88 178 88 159C88 153 87 147 84 142C70 113 40 108 11 108ZM252 339L193 269C190 265 175 245 170 245H169C166 245 163 248 160 250C132 271 81 294 81 337C81 364 102 392 133 392C148 392 163 387 176 381C188 375 243 342 252 339ZM105 128C122 151 141 172 160 194L174 211C178 215 182 221 190 221S225 215 226 215C261 205 298 177 299 137C299 128 298 119 293 111C281 93 259 79 230 79C197 79 165 96 143 108C131 115 118 123 105 128Z" glyph-name="Eng" horiz-adv-x="380" unicode="&#x14A;"/>
+ <glyph d="M340 576C334 573 308 559 304 555C298 549 301 538 288 538C282 538 275 543 269 545C279 555 342 616 343 622C343 637 312 646 302 646C284 646 269 636 257 628C233 615 208 602 208 567C208 552 213 544 219 534C227 520 240 506 261 506C281 506 298 519 315 529C327 536 344 548 344 564V565C344 569 342 573 340 576ZM254 562C253 569 252 576 252 582C252 596 258 614 273 614C282 614 291 610 298 606L254 562ZM11 389C18 392 24 395 32 396C47 396 63 386 68 371C70 365 70 358 70 351V130V120C70 108 66 106 58 100C50 95 41 89 34 83C76 53 113 17 157 -11L170 -5L311 94C311 62 322 32 343 8C347 3 361 -11 369 -11C372 -10 375 -8 377 -6L391 8C397 13 446 56 446 60C418 89 405 122 405 173C405 188 406 203 406 218V479C383 470 361 459 338 449L321 442C314 437 310 437 310 426C310 422 311 418 311 415V145C311 141 312 136 312 132C312 119 303 115 294 110L257 84C252 81 245 73 239 73S226 82 221 86L182 116C173 123 164 126 164 142C164 147 165 152 165 156V316V345C165 359 165 373 163 387C158 417 145 447 124 470C122 473 119 477 115 477S92 464 85 460L34 426C24 420 10 416 10 400C10 396 11 392 11 389Z" glyph-name="dcroat" horiz-adv-x="464" unicode="&#x111;"/>
+ </font>
+ </defs>
+ <style type="text/css">text.f1 {font-family:yfrak;font-size:12}
+text.f2 {font-family:yfrak;font-size:14.4}
+text.f3 {font-family:ygoth;font-size:14.4}
+text.f4 {font-family:yinitas;font-size:46.39}
+text.f5 {font-family:yinitas;font-size:55.68}
+text.f6 {font-family:yswab;font-size:14.4}
+</style>
+ <g id="page1" transform="matrix(0.996 0 0 0.996 0 0)">
+ <text class="f3" x="-13.4527" y="63.84">Nonummy<tspan x="36.7806">s</tspan>
+<tspan x="39.8918">id</tspan>
+<tspan x="52.2923">sem&#xBB;r</tspan>
+<tspan x="85.0487">aliena</tspan>
+<tspan x="114.912">auditorum</tspan>
+<tspan x="162.806">lorem</tspan>
+<tspan x="191.794">ipsum</tspan>
+<tspan x="220.666">quod</tspan>
+<tspan x="245.573">omnia</tspan>
+<tspan x="-13.4527" y="77.6107">sunt</tspan>
+<tspan x="9.1006">&#xBB;ccatore&#x2018;:</tspan>
+<tspan x="61.9483">Lorem</tspan>
+<tspan x="98.26">ipsum</tspan>
+<tspan x="128.062">&#x2D8;lor</tspan>
+<tspan x="154.464">s</tspan>
+<tspan x="157.576">it</tspan>
+<tspan x="168.929">amet</tspan>
+<tspan x="194.838">con</tspan>
+<tspan x="214.183">se&#x2DD;etuer</tspan>
+<tspan x="255.733">adi-</tspan>
+<tspan x="-13.4527" y="91.3815">piscing</tspan>
+<tspan x="20.5198">elit:</tspan>
+<tspan x="42.39">Sed</tspan>
+<tspan x="66.8081">diam</tspan>
+<tspan x="92.0111">tem&#x2013;r</tspan>
+<tspan x="124.668">incidunt</tspan>
+<tspan x="161.755">ut</tspan>
+<tspan x="174.527">la&#x2C6;re</tspan>
+<tspan x="204.237">et</tspan>
+<tspan x="216.454">&#x2D8;lor</tspan>
+<tspan x="241.946">magna</tspan>
+<tspan x="-13.4527" y="105.043">aliquam</tspan>
+<tspan x="24.7919">erat</tspan>
+<tspan x="46.6589">volu&#xAB;t</tspan>
+<tspan x="81.7963">ut</tspan>
+<tspan x="94.6849">wis</tspan>
+<tspan x="108.747">i</tspan>
+<tspan x="115.996">enim</tspan>
+<tspan x="140.209">ad</tspan>
+<tspan x="155.298">minim</tspan>
+<tspan x="185.338">&#xFB03;niam</tspan>
+<tspan x="218.338">qui&#x2018;</tspan>
+<tspan x="240.955">no&lt;rud</tspan>
+<tspan x="-13.4527" y="118.705">oblationem</tspan>
+<tspan x="38.0057">cor&#x2013;remque</tspan>
+<tspan x="95.3889">suscipit</tspan>
+<tspan x="130.679">la&#x2C6;ri&#x2018;</tspan>
+</text>
+ <text class="f5" x="-13.4527" y="249.832">D</text>
+ <text class="f2" x="47.1072" y="203.607">ie</text>
+ <text class="f6" x="59.8848" y="203.607">Orgel</text>
+ <text class="f2" x="90.7353" y="203.607">,<tspan x="100.968">der</tspan>
+</text>
+ <text class="f6" x="120.362" y="203.607">Fl&#x111;gel</text>
+ <text class="f2" x="154.298" y="203.607">,<tspan x="164.531">da&#x14A;</tspan>
+</text>
+ <text class="f6" x="185.621" y="203.607">Fortepiano</text>
+ <text class="f2" x="250.822" y="203.607">und<tspan x="272.965">da&#x14A;</tspan>
+</text>
+ <text class="f6" x="294.055" y="203.607">Clavicord</text>
+ <text class="f2" x="351.006" y="203.607">s<tspan x="353.811">ind</tspan>
+<tspan x="372.817">die</tspan>
+<tspan x="47.1072" y="219.015">gebr&#x13D;u&#x11A;li&#x11A;&#x106;en</tspan>
+<tspan x="118.515">Clavierin&#x106;rumente</tspan>
+<tspan x="208.036">zum</tspan>
+<tspan x="231.184">Accompagnement.</tspan>
+<tspan x="317.364">E&#x14A;</tspan>
+<tspan x="334.609">i&#x106;</tspan>
+<tspan x="347.607">S&#x11A;ade,</tspan>
+<tspan x="47.1072" y="234.424">da&#xF6BE;</tspan>
+<tspan x="68.1032">die</tspan>
+<tspan x="85.8667">s&#x11A;&#x179;ne</tspan>
+<tspan x="116.201">Erfindung</tspan>
+<tspan x="168.101">de&#x14A;</tspan>
+</text>
+ <text class="f6" x="188.265" y="234.424">Hol<tspan x="207.772">feldis&#x11A;en</tspan>
+<tspan x="260.178">Bogenclavier&#x14A;</tspan>
+</text>
+ <text class="f2" x="342.219" y="234.424">no&#x11A;<tspan x="365.833">ni&#x11A;t</tspan>
+<tspan x="47.1072" y="249.832">gemeinn&#x111;&#x143;ig</tspan>
+<tspan x="110.524">geworden</tspan>
+<tspan x="159.19">i&#x106;;</tspan>
+<tspan x="179.348">man</tspan>
+<tspan x="205.462">kann</tspan>
+<tspan x="232.576">dahero</tspan>
+<tspan x="268.599">de&#x104;en</tspan>
+<tspan x="298.893">besondere</tspan>
+<tspan x="346.073">Vorz&#x111;ge</tspan>
+<tspan x="-13.4527" y="265.24">hierinnen</tspan>
+<tspan x="32.856">no&#x11A;</tspan>
+<tspan x="56.2794">ni&#x11A;t</tspan>
+<tspan x="80.8359">genau</tspan>
+<tspan x="113.147">be&#x106;immen.</tspan>
+<tspan x="167.406">E&#x14A;</tspan>
+<tspan x="185.707">i&#x106;</tspan>
+<tspan x="199.761">gewi&#xF6BE;</tspan>
+<tspan x="230.716">zu</tspan>
+<tspan x="246.614">glauben,</tspan>
+<tspan x="291.512">da&#xF6BE;</tspan>
+<tspan x="312.317">e&#x14A;</tspan>
+<tspan x="327.405">s</tspan>
+<tspan x="330.211">i&#x11A;</tspan>
+<tspan x="346.034">au&#x11A;</tspan>
+<tspan x="370.258">bey</tspan>
+<tspan x="-13.4527" y="280.648">der</tspan>
+<tspan x="5.14924">Begleitung</tspan>
+<tspan x="61.0912">gut</tspan>
+<tspan x="80.7799">au&#x14A;nehmen</tspan>
+<tspan x="135.23">werde.</tspan>
+</text>
+ <text class="f4" x="-13.4527" y="416.504">V</text>
+ <text class="f1" x="38.0278" y="377.984">on<tspan x="51.1086">dem</tspan>
+<tspan x="69.9168">&#x106;attli&#x11A;en</tspan>
+<tspan x="107.825">Orte</tspan>
+<tspan x="130.715">Kir&#x11A;ehrenba&#x11A;</tspan>
+<tspan x="188.762">in</tspan>
+<tspan x="200.158">der</tspan>
+<tspan x="215.948">Fr&#x141;nkis&#x11A;en</tspan>
+<tspan x="38.0278" y="390.824">S&#x11A;weiz</tspan>
+<tspan x="72.1763">f&#xA7;hrt</tspan>
+<tspan x="93.8915">ein</tspan>
+<tspan x="107.662">einsame&#x14A;</tspan>
+<tspan x="142.798">Str&#x141;&#xF6BE;&#x11A;en,</tspan>
+<tspan x="188.405">an</tspan>
+<tspan x="200.573">der</tspan>
+<tspan x="215.209">&#x106;eil</tspan>
+<tspan x="231.53">ab&#x106;&#xA7;r-</tspan>
+<tspan x="38.0278" y="403.664">zenden</tspan>
+<tspan x="65.2089">Breitseite</tspan>
+<tspan x="103.925">der</tspan>
+<tspan x="118.597">Ehrenb&#xA7;rg</tspan>
+<tspan x="162.003">vor&#xA7;ber,</tspan>
+<tspan x="198.289">gen</tspan>
+<tspan x="214.338">Leutenba&#x11A;.</tspan>
+<tspan x="38.0278" y="416.504">In</tspan>
+<tspan x="51.6451">einer</tspan>
+<tspan x="72.4543">halben</tspan>
+<tspan x="98.5613">Stunde</tspan>
+<tspan x="130.329">i&#x106;</tspan>
+<tspan x="140.196">da&#x14A;</tspan>
+<tspan x="155.853">s&#x11A;mu&#x118;e</tspan>
+<tspan x="187.398">Pfarrdorf</tspan>
+<tspan x="226.889">errei&#x11A;t.</tspan>
+<tspan x="-13.4527" y="429.344">S&#xA7;d&#x17D;&#x106;li&#x11A;</tspan>
+<tspan x="29.0311">de&#x14A;selben,</tspan>
+<tspan x="69.6732">kaum</tspan>
+<tspan x="93.4813">eine</tspan>
+<tspan x="111.965">Viertel&#x106;unde</tspan>
+<tspan x="164.256">entfernt,</tspan>
+<tspan x="200.75">tre&#x10E;en</tspan>
+<tspan x="227.692">wir</tspan>
+<tspan x="244.597">auf</tspan>
+<tspan x="-13.4527" y="442.184">dem</tspan>
+<tspan x="5.37513">Wege</tspan>
+<tspan x="31.1845">na&#x11A;</tspan>
+<tspan x="50.6665">Ortspi&#x143;</tspan>
+<tspan x="83.6264">in</tspan>
+<tspan x="95.0418">einem</tspan>
+<tspan x="120.435">Seitent&#x141;l&#x11A;en</tspan>
+<tspan x="174.477">von</tspan>
+<tspan x="192.185">unber&#xA7;hrter</tspan>
+<tspan x="240.955">Na-</tspan>
+<tspan x="-13.4527" y="455.025">turs&#x11A;&#x17D;nheit</tspan>
+<tspan x="32.2841">da&#x14A;</tspan>
+<tspan x="49.5255">uralte,</tspan>
+<tspan x="79.7728">einsame</tspan>
+<tspan x="111.642">Kir&#x11A;lein</tspan>
+<tspan x="148.493">\Sankt</tspan>
+<tspan x="182.666">Mori&#x143;"</tspan>
+<tspan x="217.354">mit</tspan>
+<tspan x="233.692">seinem</tspan>
+<tspan x="-13.4527" y="467.865">&#x106;illen</tspan>
+<tspan x="10.893">Friedhofe.</tspan>
+<tspan x="53.3526">In</tspan>
+<tspan x="68.2047">der</tspan>
+<tspan x="83.6828">N&#x141;he</tspan>
+<tspan x="108.062">de&#x14A;</tspan>
+<tspan x="124.096">Kir&#x11A;lein&#x14A;</tspan>
+<tspan x="165.057">&#x106;eht</tspan>
+<tspan x="184.039">ein</tspan>
+<tspan x="198.651">niedrige&#x14A;,</tspan>
+<tspan x="240.254">&#xA7;ber</tspan>
+<tspan x="-13.4527" y="480.705">eine</tspan>
+<tspan x="3.96369">Quelle</tspan>
+<tspan x="33.9862">erbaute&#x14A;</tspan>
+<tspan x="68.8353">Feldkapell&#x11A;en</tspan>
+<tspan x="123.315">mit</tspan>
+<tspan x="138.577">der</tspan>
+<tspan x="153.332">Statue</tspan>
+<tspan x="183.906">de&#x14A;</tspan>
+<tspan x="199.216">hl.</tspan>
+<tspan x="213.05">Mauritiu&#x14A;,</tspan>
+<tspan x="-13.4527" y="493.545">darge&#x106;ellt</tspan>
+<tspan x="27.0288">al&#x14A;</tspan>
+<tspan x="42.4068">Ritter</tspan>
+<tspan x="69.2852">in</tspan>
+<tspan x="80.3927">voller</tspan>
+<tspan x="105.643">Wehr.</tspan>
+</text>
+ </g>
+</svg>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/ot1.cmap b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/ot1.cmap
new file mode 100644
index 00000000000..6098cae7bab
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/ot1.cmap
@@ -0,0 +1,78 @@
+%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <02DC>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-nf-cmp.svg b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-nf-cmp.svg
new file mode 100644
index 00000000000..b448e6caa8a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-nf-cmp.svg
@@ -0,0 +1,204 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="574.732pt" version="1.1" viewBox="76.7123 55.9032 275.656 574.732" width="275.656pt">
+ <defs>
+ <path id="g1" d="M0.18 -4.14V-4H0.35C0.71 -4 0.86 -3.92 0.96 -3.67C1 -3.59 1.35 -2.74 1.75 -1.76L2.47 0L2.28 0.45C2.03 1.08 1.88 1.36 1.7 1.54C1.47 1.78 1.25 1.86 0.98 1.82C0.91 1.81 0.81 1.77 0.75 1.74L0.65 1.68L0.78 1.61C0.95 1.53 1.03 1.39 1.01 1.19C0.98 0.83 0.54 0.69 0.28 0.96C0.2 1.04 0.19 1.07 0.19 1.25C0.19 1.49 0.26 1.64 0.44 1.81S0.81 2.06 1.09 2.06C1.31 2.06 1.36 2.05 1.54 1.96C1.78 1.84 2.04 1.58 2.21 1.26C2.28 1.13 2.75 0.03 3.25 -1.18C3.75 -2.41 4.19 -3.47 4.23 -3.54C4.37 -3.79 4.61 -3.95 4.91 -3.99L5.05 -4.01V-4.15V-4.29H4.24H3.43V-4.15C3.43 -4.01 3.43 -4.01 3.56 -3.98C3.74 -3.93 3.85 -3.8 3.87 -3.62C3.88 -3.48 3.84 -3.37 3.36 -2.19C3.08 -1.48 2.83 -0.91 2.82 -0.92C2.79 -0.95 1.72 -3.58 1.69 -3.68C1.68 -3.72 1.69 -3.78 1.7 -3.82C1.72 -3.9 1.93 -4 2.1 -4H2.22V-4.14V-4.29H1.2H0.18Z"/>
+ <path id="g2" d="M0.33 -6.65V-6.51L0.71 -6.49C1.13 -6.47 1.24 -6.44 1.31 -6.31C1.37 -6.19 1.37 -0.61 1.31 -0.48C1.24 -0.35 1.13 -0.32 0.71 -0.3L0.33 -0.29V-0.15V-0.01H1.92H3.52V-0.15V-0.29L3.04 -0.3C2.51 -0.32 2.36 -0.36 2.29 -0.51C2.26 -0.56 2.25 -0.91 2.25 -1.92V-3.25L2.91 -3.24C3.65 -3.22 3.74 -3.2 3.93 -3.02C4.07 -2.87 4.12 -2.73 4.14 -2.35L4.16 -2.07H4.29H4.42V-3.4V-4.72H4.29H4.16L4.14 -4.44C4.12 -4.07 4.07 -3.92 3.93 -3.77C3.74 -3.59 3.65 -3.57 2.91 -3.56L2.25 -3.54V-4.91C2.25 -5.71 2.27 -6.32 2.28 -6.36C2.33 -6.49 2.45 -6.51 3.52 -6.49C4.55 -6.48 4.72 -6.46 5 -6.31C5.47 -6.08 5.66 -5.69 5.79 -4.69L5.81 -4.54H5.95H6.08L6.07 -4.65C6.06 -4.72 6 -5.17 5.94 -5.67S5.83 -6.63 5.82 -6.69L5.8 -6.8H3.06H0.33Z"/>
+ <path id="g3" d="M0.42 -5V-4.87H0.6C0.88 -4.87 1.04 -4.82 1.1 -4.72C1.16 -4.59 1.16 -0.55 1.1 -0.42C1.04 -0.32 0.88 -0.27 0.6 -0.27H0.42V-0.13V0H2.46H4.51L4.52 -0.14C4.53 -0.22 4.57 -0.59 4.6 -0.97C4.64 -1.35 4.67 -1.73 4.68 -1.81L4.7 -1.95H4.56H4.43L4.41 -1.78C4.34 -1.15 4.2 -0.81 3.93 -0.58C3.79 -0.46 3.5 -0.33 3.28 -0.3C3.17 -0.28 2.84 -0.27 2.55 -0.27C2.02 -0.27 2.01 -0.27 1.94 -0.34L1.86 -0.41V-2.52C1.86 -4.15 1.87 -4.63 1.9 -4.69C1.96 -4.81 2.08 -4.85 2.44 -4.87L2.77 -4.88V-5.01V-5.13H1.59H0.42Z"/>
+ <path id="g4" d="M0.45 -5.01V-4.87H0.63C0.91 -4.87 1.07 -4.82 1.13 -4.72C1.19 -4.59 1.19 -0.55 1.13 -0.42C1.07 -0.32 0.91 -0.27 0.63 -0.27H0.45V-0.14V-0.01H1.53H2.61V-0.14V-0.27H2.43C2.33 -0.27 2.19 -0.28 2.11 -0.3C1.89 -0.36 1.89 -0.36 1.89 -1.42V-2.34H2.7C3.41 -2.34 3.54 -2.35 3.75 -2.4C4.82 -2.68 5.33 -3.62 4.81 -4.38C4.61 -4.68 4.2 -4.95 3.77 -5.07C3.61 -5.12 3.41 -5.13 2.02 -5.14L0.45 -5.15ZM3.32 -4.84C3.56 -4.8 3.74 -4.71 3.89 -4.57C4.09 -4.39 4.14 -4.23 4.14 -3.73C4.14 -3.22 4.09 -3.07 3.89 -2.89C3.62 -2.64 3.39 -2.58 2.5 -2.58H1.86V-3.66V-4.73L1.94 -4.8C2.01 -4.87 2.01 -4.87 2.58 -4.87C2.89 -4.87 3.22 -4.86 3.32 -4.84Z"/>
+ <path id="g5" d="M0.48 -5.01V-4.87H0.66C0.94 -4.87 1.1 -4.82 1.16 -4.72C1.19 -4.65 1.2 -4.34 1.2 -2.71C1.2 -0.56 1.2 -0.59 1 -0.42C0.89 -0.33 0.7 -0.27 0.55 -0.27C0.48 -0.27 0.48 -0.26 0.48 -0.14V-0.01H1.35H2.22V-0.14C2.22 -0.26 2.22 -0.27 2.15 -0.27C2 -0.27 1.81 -0.33 1.7 -0.42C1.5 -0.59 1.5 -0.56 1.51 -2.76L1.52 -4.73L2.45 -2.41C2.96 -1.13 3.39 -0.06 3.42 -0.04C3.47 0 3.57 0.01 3.64 -0.02C3.66 -0.04 4.11 -1.12 4.64 -2.44L5.59 -4.83V-2.67C5.6 -0.83 5.59 -0.49 5.55 -0.42C5.5 -0.32 5.33 -0.27 5.06 -0.27H4.87V-0.14V-0.01H5.91H6.95V-0.14V-0.27H6.77C6.49 -0.27 6.32 -0.32 6.27 -0.42C6.21 -0.55 6.21 -4.59 6.27 -4.72C6.32 -4.82 6.49 -4.87 6.77 -4.87H6.95V-5.01V-5.14H6.23C5.51 -5.14 5.51 -5.14 5.46 -5.08C5.44 -5.04 5.04 -4.05 4.57 -2.89C4.11 -1.72 3.72 -0.76 3.72 -0.76C3.71 -0.75 3.32 -1.72 2.85 -2.91C2.37 -4.1 1.96 -5.09 1.95 -5.11C1.92 -5.13 1.7 -5.14 1.19 -5.14H0.48Z"/>
+ <path id="g6" d="M0.72 -6.38V-5.93H1.17H1.62V-6.38V-6.83H1.17H0.72ZM0.81 -2.22V0H1.18H1.56V-2.22V-4.45H1.18H0.81Z"/>
+ <path id="g7" d="M0.93 -4.36C0.62 -4.33 0.35 -4.3 0.32 -4.3C0.28 -4.3 0.27 -4.27 0.27 -4.15V-4.01L0.52 -3.99C0.82 -3.97 0.93 -3.93 1 -3.79C1.04 -3.69 1.05 -3.55 1.05 -2.11C1.05 -0.3 1.06 -0.38 0.81 -0.33C0.72 -0.31 0.57 -0.3 0.46 -0.3H0.27V-0.15V-0.01H1.47H2.68V-0.15V-0.29L2.32 -0.3C1.93 -0.32 1.81 -0.36 1.75 -0.48C1.69 -0.59 1.7 -2.48 1.76 -2.85C1.89 -3.65 2.25 -4.12 2.79 -4.17C2.96 -4.19 2.96 -4.19 2.89 -4.13C2.85 -4.11 2.8 -4.04 2.78 -3.98C2.7 -3.79 2.74 -3.61 2.9 -3.46C2.97 -3.39 3.01 -3.38 3.17 -3.38S3.37 -3.39 3.44 -3.46C3.67 -3.67 3.66 -3.98 3.41 -4.21C3.24 -4.37 3.13 -4.41 2.86 -4.41C2.63 -4.41 2.58 -4.4 2.4 -4.31C2.14 -4.18 1.93 -3.95 1.77 -3.63L1.65 -3.38V-3.9V-4.42H1.57C1.52 -4.42 1.23 -4.39 0.93 -4.36Z"/>
+ <path id="g8" d="M0.96 -6.89C0.64 -6.86 0.35 -6.83 0.32 -6.83C0.28 -6.83 0.27 -6.8 0.27 -6.68V-6.54L0.52 -6.52C0.82 -6.5 0.93 -6.46 1 -6.32C1.05 -6.22 1.05 -6 1.05 -3.1V0H1.18H1.32L1.43 -0.2C1.49 -0.31 1.57 -0.45 1.6 -0.5L1.66 -0.6L1.78 -0.46C2.21 0.03 2.72 0.2 3.39 0.07C4.04 -0.05 4.62 -0.51 4.93 -1.13C5.08 -1.43 5.14 -1.66 5.16 -2C5.21 -2.68 4.97 -3.33 4.5 -3.8C3.75 -4.56 2.62 -4.62 1.9 -3.96L1.71 -3.78V-5.37V-6.95H1.63C1.58 -6.94 1.28 -6.92 0.96 -6.89ZM3.51 -4.06C3.88 -3.88 4.12 -3.54 4.25 -3.05C4.31 -2.81 4.31 -2.71 4.31 -2.15C4.31 -1.6 4.3 -1.48 4.25 -1.28C4.08 -0.67 3.73 -0.29 3.22 -0.16C2.68 -0.02 2.13 -0.27 1.84 -0.78L1.74 -0.94V-2.17V-3.39L1.83 -3.52C2.21 -4.1 2.95 -4.33 3.51 -4.06Z"/>
+ <path id="g9" d="M0.97 -4.36C0.66 -4.33 0.38 -4.3 0.35 -4.3C0.31 -4.3 0.3 -4.27 0.3 -4.15V-4.01L0.55 -3.99C0.85 -3.97 0.96 -3.93 1.03 -3.79C1.07 -3.69 1.08 -3.55 1.08 -2.11C1.08 -0.3 1.09 -0.38 0.84 -0.33C0.75 -0.31 0.6 -0.3 0.49 -0.3H0.3V-0.15V-0.01H1.43H2.55V-0.15V-0.3H2.36C2.05 -0.3 1.87 -0.35 1.82 -0.45C1.75 -0.57 1.75 -2.71 1.82 -3.02C1.88 -3.3 2.01 -3.57 2.2 -3.77C2.6 -4.22 3.32 -4.31 3.62 -3.96C3.83 -3.72 3.83 -3.71 3.84 -2.04C3.85 -0.31 3.86 -0.38 3.61 -0.33C3.52 -0.31 3.37 -0.3 3.26 -0.3H3.07V-0.15V-0.01H4.2H5.32V-0.15V-0.3H5.13C4.85 -0.3 4.64 -0.35 4.59 -0.43C4.57 -0.48 4.55 -0.88 4.54 -1.98C4.53 -3.41 4.52 -3.48 4.46 -3.64C4.28 -4.13 3.92 -4.38 3.33 -4.41C3 -4.43 2.75 -4.39 2.48 -4.25C2.22 -4.11 1.94 -3.84 1.81 -3.59L1.71 -3.41V-3.92V-4.42H1.63C1.58 -4.42 1.29 -4.39 0.97 -4.36Z"/>
+ <path id="g10" d="M1 -4.36C0.67 -4.33 0.38 -4.3 0.35 -4.3C0.31 -4.3 0.3 -4.27 0.3 -4.15V-4H0.48C0.75 -3.99 0.93 -3.94 1 -3.84C1.06 -3.76 1.06 -3.72 1.08 -2.29C1.1 -0.84 1.1 -0.82 1.16 -0.65C1.31 -0.29 1.55 -0.08 1.93 0.03C2.11 0.09 2.22 0.1 2.54 0.1C2.92 0.1 2.94 0.1 3.13 0C3.38 -0.1 3.6 -0.3 3.76 -0.55L3.88 -0.73V-0.3C3.88 -0.07 3.89 0.12 3.9 0.11C3.91 0.11 4.23 0.09 4.6 0.06C4.97 0.02 5.29 0 5.3 0S5.32 -0.06 5.32 -0.14V-0.29L5.07 -0.3C4.77 -0.32 4.66 -0.37 4.59 -0.51C4.55 -0.6 4.54 -0.76 4.54 -2.52C4.54 -3.56 4.54 -4.42 4.53 -4.42C4.53 -4.42 4.21 -4.39 3.82 -4.36S3.1 -4.3 3.09 -4.3S3.07 -4.24 3.07 -4.15V-4.01L3.32 -3.99C3.62 -3.97 3.73 -3.93 3.8 -3.79C3.84 -3.69 3.85 -3.57 3.85 -2.55C3.85 -1.29 3.83 -1.15 3.66 -0.79C3.53 -0.53 3.33 -0.33 3.1 -0.21C2.95 -0.14 2.9 -0.13 2.61 -0.13S2.28 -0.14 2.12 -0.22C1.92 -0.32 1.85 -0.42 1.8 -0.69C1.78 -0.78 1.77 -1.55 1.77 -2.63V-4.42H1.69C1.64 -4.42 1.34 -4.39 1 -4.36Z"/>
+ <path id="g11" d="M1 -4.36C0.69 -4.33 0.41 -4.3 0.38 -4.3C0.34 -4.3 0.33 -4.27 0.33 -4.15V-4.01L0.58 -3.99C0.88 -3.97 0.99 -3.93 1.06 -3.79C1.1 -3.69 1.11 -3.55 1.11 -2.11C1.11 -0.3 1.12 -0.38 0.87 -0.33C0.78 -0.31 0.63 -0.3 0.52 -0.3H0.33V-0.15V-0.01H1.46H2.58V-0.15V-0.3H2.39C2.08 -0.3 1.9 -0.35 1.85 -0.45C1.78 -0.57 1.78 -2.71 1.85 -3.02C1.91 -3.3 2.04 -3.57 2.23 -3.77C2.63 -4.22 3.35 -4.31 3.65 -3.96C3.86 -3.72 3.86 -3.71 3.87 -2.04C3.88 -0.31 3.89 -0.38 3.64 -0.33C3.55 -0.31 3.4 -0.3 3.29 -0.3H3.1V-0.15V-0.01H4.23H5.36V-0.15V-0.3H5.16C4.85 -0.3 4.67 -0.35 4.62 -0.45C4.55 -0.57 4.55 -2.71 4.62 -3.02C4.68 -3.3 4.81 -3.57 5 -3.77C5.41 -4.22 6.12 -4.31 6.42 -3.96C6.63 -3.72 6.63 -3.71 6.64 -2.04C6.65 -0.31 6.66 -0.38 6.41 -0.33C6.32 -0.31 6.17 -0.3 6.06 -0.3H5.87V-0.15V-0.01H7H8.13V-0.15V-0.3H7.93C7.65 -0.3 7.44 -0.35 7.39 -0.43C7.37 -0.48 7.35 -0.88 7.34 -1.98C7.33 -3.41 7.32 -3.48 7.26 -3.64C7.13 -4 6.91 -4.22 6.57 -4.34C6.35 -4.41 5.93 -4.44 5.68 -4.39C5.28 -4.32 4.84 -3.99 4.64 -3.63C4.56 -3.5 4.54 -3.49 4.53 -3.53C4.38 -3.99 4.18 -4.2 3.8 -4.34C3.58 -4.41 3.16 -4.44 2.91 -4.39C2.5 -4.31 2.05 -3.98 1.84 -3.59L1.74 -3.41V-3.92V-4.42H1.66C1.61 -4.42 1.32 -4.39 1 -4.36Z"/>
+ <path id="g12" d="M1.02 -6.89C0.7 -6.86 0.41 -6.83 0.39 -6.83S0.36 -6.78 0.36 -6.68V-6.54L0.59 -6.52C0.88 -6.5 0.99 -6.46 1.06 -6.32C1.11 -6.22 1.11 -6.02 1.11 -3.37C1.11 -0.15 1.13 -0.38 0.87 -0.33C0.78 -0.31 0.63 -0.3 0.54 -0.3H0.36V-0.15V-0.01H1.44H2.52V-0.15V-0.3H2.35C2.05 -0.3 1.87 -0.35 1.82 -0.45C1.78 -0.52 1.77 -0.97 1.77 -3.74V-6.95H1.69C1.64 -6.94 1.34 -6.92 1.02 -6.89Z"/>
+ <path id="g13" d="M1.04 21.77C1.36 21.75 1.53 21.53 1.53 21.28C1.53 20.95 1.28 20.79 1.05 20.79C0.81 20.79 0.56 20.94 0.56 21.29C0.56 21.8 1.06 22.22 1.67 22.22C3.19 22.22 3.76 19.88 4.47 16.98C5.24 13.82 5.89 10.63 6.43 7.42C6.8 5.29 7.17 3.29 7.51 2C7.63 1.51 7.97 0.22 8.36 0.22C8.67 0.22 8.92 0.41 8.96 0.45C8.63 0.47 8.46 0.69 8.46 0.94C8.46 1.27 8.71 1.43 8.94 1.43C9.18 1.43 9.43 1.28 9.43 0.93C9.43 0.39 8.89 0 8.34 0C7.58 0 7.02 1.09 6.47 3.13C6.44 3.24 5.08 8.26 3.98 14.8C3.72 16.33 3.43 18 3.1 19.39C2.92 20.12 2.46 22 1.65 22C1.29 22 1.05 21.77 1.04 21.77Z"/>
+ <path id="g14" d="M1.15 -1.01C0.81 -0.85 0.73 -0.4 1.01 -0.14C1.21 0.04 1.51 0.05 1.7 -0.12L1.77 -0.19V-0.01C1.77 0.56 1.56 1.12 1.17 1.58C1.07 1.7 0.99 1.81 0.99 1.83C0.99 1.88 1.11 1.96 1.15 1.94C1.26 1.9 1.57 1.47 1.73 1.15C1.92 0.76 1.98 0.53 2 0.13C2.04 -0.55 1.81 -1.01 1.4 -1.04C1.31 -1.05 1.21 -1.03 1.15 -1.01Z"/>
+ <path id="g15" d="M1.15 -4.25C1.02 -4.18 0.96 -4.12 0.9 -3.99C0.77 -3.74 0.87 -3.44 1.15 -3.3C1.57 -3.09 2.05 -3.57 1.84 -3.99C1.7 -4.26 1.39 -4.38 1.15 -4.25ZM1.15 -1C1.02 -0.93 0.96 -0.87 0.9 -0.74C0.77 -0.49 0.87 -0.19 1.15 -0.05C1.57 0.16 2.05 -0.32 1.84 -0.74C1.7 -1.01 1.39 -1.12 1.15 -1Z"/>
+ <path id="g16" d="M1.17 -2.18C1.17 -3.81 1.99 -4.23 2.52 -4.23C2.61 -4.23 3.24 -4.22 3.59 -3.86C3.18 -3.83 3.12 -3.53 3.12 -3.4C3.12 -3.14 3.3 -2.94 3.58 -2.94C3.84 -2.94 4.04 -3.11 4.04 -3.41C4.04 -4.09 3.28 -4.48 2.51 -4.48C1.26 -4.48 0.34 -3.4 0.34 -2.16C0.34 -0.88 1.33 0.11 2.49 0.11C3.83 0.11 4.15 -1.09 4.15 -1.19S4.05 -1.29 4.02 -1.29C3.93 -1.29 3.91 -1.25 3.89 -1.19C3.6 -0.26 2.95 -0.14 2.58 -0.14C2.05 -0.14 1.17 -0.57 1.17 -2.18Z"/>
+ <path id="g17" d="M1.2 -6.9C0.84 -6.88 0.51 -6.86 0.45 -6.86H0.36V-6.62V-6.39L0.62 -6.37C0.93 -6.35 0.98 -6.33 1.02 -6.24C1.04 -6.19 1.05 -4.89 1.05 -3.08V0H1.29H1.52L1.74 -0.24C1.87 -0.38 1.98 -0.5 1.99 -0.52S2.05 -0.51 2.11 -0.46C2.28 -0.3 2.58 -0.12 2.83 -0.03C3.06 0.03 3.11 0.04 3.52 0.04C3.88 0.03 4 0.02 4.24 -0.03C4.92 -0.21 5.41 -0.58 5.69 -1.11C5.88 -1.49 5.94 -1.75 5.94 -2.24S5.9 -2.91 5.7 -3.33C5.43 -3.89 4.96 -4.25 4.25 -4.44C4.09 -4.48 3.94 -4.49 3.59 -4.49C3.18 -4.49 3.12 -4.48 2.89 -4.41C2.6 -4.31 2.45 -4.24 2.26 -4.11L2.13 -4.03V-5.49V-6.95H1.99C1.91 -6.94 1.56 -6.92 1.2 -6.9ZM3.97 -4.04C4.28 -3.9 4.49 -3.63 4.59 -3.24C4.65 -2.99 4.68 -1.94 4.64 -1.55C4.56 -0.93 4.32 -0.56 3.85 -0.38C3.72 -0.33 3.62 -0.31 3.37 -0.31C3.06 -0.31 3.04 -0.31 2.82 -0.42C2.64 -0.51 2.54 -0.59 2.39 -0.75L2.19 -0.97V-2.23V-3.49L2.27 -3.6C2.45 -3.83 2.83 -4.05 3.17 -4.12C3.4 -4.17 3.76 -4.14 3.97 -4.04Z"/>
+ <path id="g18" d="M1.27 -0.77L2.33 -1.8C3.89 -3.18 4.49 -3.72 4.49 -4.72C4.49 -5.86 3.59 -6.66 2.37 -6.66C1.24 -6.66 0.5 -5.74 0.5 -4.85C0.5 -4.29 1 -4.29 1.03 -4.29C1.2 -4.29 1.55 -4.41 1.55 -4.82C1.55 -5.08 1.37 -5.34 1.02 -5.34C0.94 -5.34 0.92 -5.34 0.89 -5.33C1.12 -5.98 1.66 -6.35 2.24 -6.35C3.15 -6.35 3.58 -5.54 3.58 -4.72C3.58 -3.92 3.08 -3.13 2.53 -2.51L0.61 -0.37C0.5 -0.26 0.5 -0.24 0.5 0H4.21L4.49 -1.74H4.24C4.19 -1.44 4.12 -1 4.02 -0.85C3.95 -0.77 3.29 -0.77 3.07 -0.77H1.27Z"/>
+ <path id="g19" d="M1.32 -6.9C0.96 -6.88 0.63 -6.86 0.57 -6.86H0.48V-6.62V-6.39L0.74 -6.37C1.05 -6.35 1.1 -6.33 1.14 -6.24C1.16 -6.19 1.17 -4.99 1.17 -3.32V-0.48H0.82H0.48V-0.24V-0.01H1.71H2.95V-0.24V-0.48H2.6H2.25V-3.71V-6.95H2.11C2.03 -6.94 1.68 -6.92 1.32 -6.9Z"/>
+ <path id="g20" d="M1.42 -5.81C1.33 -4.93 0.9 -4.33 0.32 -4.25C0.18 -4.23 0.18 -4.23 0.18 -4.12V-4H0.6H1.02V-2.51C1.02 -1.64 1.03 -0.96 1.05 -0.87C1.14 -0.37 1.49 -0.01 1.98 0.08C2.57 0.21 3 -0.03 3.22 -0.64C3.27 -0.79 3.29 -0.91 3.3 -1.31L3.31 -1.8H3.18H3.04L3.03 -1.33C3.01 -0.81 2.98 -0.64 2.83 -0.41C2.64 -0.11 2.24 -0.06 1.98 -0.31C1.73 -0.55 1.71 -0.68 1.71 -2.49V-4H2.42H3.13V-4.15V-4.3H2.42H1.71V-5.22V-6.14H1.58H1.45Z"/>
+ <path id="g21" d="M1.48 -4.45C1.11 -4.39 0.76 -4.2 0.59 -3.99C0.54 -3.93 0.47 -3.8 0.42 -3.71C0.31 -3.47 0.31 -3.07 0.41 -2.84C0.51 -2.63 0.66 -2.46 0.87 -2.32C1.12 -2.15 1.32 -2.08 1.9 -1.97C2.45 -1.85 2.65 -1.78 2.84 -1.6C3.06 -1.38 3.13 -1.12 3.07 -0.8C3 -0.47 2.75 -0.24 2.36 -0.16C1.46 0.02 0.9 -0.37 0.65 -1.38C0.58 -1.66 0.57 -1.67 0.49 -1.68C0.44 -1.68 0.38 -1.67 0.36 -1.64C0.33 -1.61 0.33 -1.37 0.33 -0.74L0.34 0.1L0.42 0.11C0.48 0.12 0.53 0.08 0.68 -0.1L0.88 -0.33L0.99 -0.22C1.27 0.02 1.65 0.14 2.13 0.11C2.48 0.08 2.76 0 2.99 -0.14C3.21 -0.28 3.31 -0.39 3.43 -0.63C3.69 -1.14 3.6 -1.74 3.21 -2.15C2.91 -2.47 2.69 -2.57 1.94 -2.72C1.37 -2.84 1.17 -2.92 0.99 -3.09C0.79 -3.29 0.76 -3.57 0.9 -3.85C1.02 -4.09 1.33 -4.24 1.79 -4.26C2.55 -4.31 2.98 -3.95 3.06 -3.19L3.08 -2.99H3.2H3.32V-3.73V-4.47L3.25 -4.48C3.2 -4.48 3.14 -4.45 3.02 -4.33L2.87 -4.18L2.75 -4.26C2.54 -4.4 2.33 -4.46 1.97 -4.47C1.79 -4.47 1.56 -4.47 1.48 -4.45Z"/>
+ <path id="g22" d="M1.51 -4.6C0.96 -4.5 0.58 -4.23 0.41 -3.8C0.36 -3.66 0.34 -3.56 0.34 -3.32C0.34 -3.06 0.35 -3 0.42 -2.85C0.58 -2.52 0.95 -2.2 1.33 -2.08C1.43 -2.04 1.69 -1.98 1.91 -1.94C2.48 -1.82 2.68 -1.71 2.8 -1.46C2.95 -1.13 2.8 -0.78 2.46 -0.62C2.32 -0.56 2.26 -0.55 1.91 -0.55C1.6 -0.56 1.46 -0.57 1.26 -0.62C0.99 -0.7 0.63 -0.85 0.48 -0.96L0.39 -1.02L0.36 -0.86C0.33 -0.7 0.27 -0.35 0.27 -0.34C0.27 -0.31 0.64 -0.14 0.87 -0.06C1.25 0.06 1.5 0.1 1.97 0.1C2.29 0.1 2.43 0.09 2.57 0.04C3.12 -0.11 3.45 -0.46 3.55 -0.98C3.64 -1.45 3.5 -1.88 3.15 -2.22C2.87 -2.48 2.63 -2.59 2.01 -2.72C1.73 -2.77 1.46 -2.85 1.39 -2.88C0.95 -3.1 0.94 -3.7 1.37 -3.91C1.5 -3.98 1.55 -3.98 1.97 -3.98C2.47 -3.98 2.7 -3.94 3.09 -3.76C3.23 -3.7 3.29 -3.68 3.31 -3.7C3.32 -3.72 3.35 -3.84 3.37 -3.97C3.39 -4.09 3.41 -4.22 3.42 -4.26C3.43 -4.31 3.4 -4.33 3.23 -4.4C2.87 -4.55 2.57 -4.6 2.1 -4.62C1.86 -4.62 1.6 -4.62 1.51 -4.6Z"/>
+ <path id="g23" d="M1.53 -2.09L1.92 -6.65C1.92 -6.98 1.65 -7.16 1.39 -7.16S0.86 -6.98 0.86 -6.65L1.25 -2.1C1.26 -1.95 1.27 -1.87 1.39 -1.87C1.49 -1.87 1.52 -1.92 1.53 -2.09ZM1.92 -0.53C1.92 -0.82 1.68 -1.06 1.39 -1.06S0.86 -0.82 0.86 -0.53S1.1 0 1.39 0S1.92 -0.24 1.92 -0.53Z"/>
+ <path id="g24" d="M1.58 -4.37C1.33 -4.25 1.15 -3.99 1 -3.55C0.85 -3.13 0.79 -2.86 0.84 -2.81C0.88 -2.76 1.03 -2.75 1.07 -2.8C1.09 -2.82 1.13 -2.95 1.17 -3.08C1.36 -3.82 1.54 -4.14 1.79 -4.17C2.02 -4.2 2.12 -4 2.07 -3.58C2.05 -3.46 1.86 -2.63 1.63 -1.74C1.41 -0.84 1.24 -0.08 1.25 -0.05C1.27 0.02 1.41 0.12 1.51 0.12C1.64 0.12 1.8 0.01 1.85 -0.1C1.87 -0.15 2.04 -0.8 2.22 -1.54C2.59 -3 2.62 -3.09 2.97 -3.54C3.28 -3.95 3.65 -4.16 4.07 -4.16C4.3 -4.17 4.31 -4.16 4.41 -4.06C4.53 -3.92 4.59 -3.68 4.56 -3.37C4.55 -3.25 4.37 -2.47 4.16 -1.64C3.96 -0.82 3.79 -0.12 3.79 -0.1C3.79 -0.01 3.96 0.12 4.07 0.12C4.2 0.12 4.36 0.01 4.41 -0.1C4.43 -0.16 4.6 -0.8 4.78 -1.53C4.99 -2.35 5.14 -2.92 5.19 -3.01C5.44 -3.5 5.78 -3.89 6.09 -4.04C6.3 -4.14 6.59 -4.2 6.74 -4.17C6.99 -4.12 7.12 -3.84 7.09 -3.41C7.07 -3.09 6.88 -2.36 6.63 -1.67C6.3 -0.73 6.29 -0.55 6.48 -0.23C6.65 0.04 7.02 0.18 7.33 0.09C7.74 -0.03 8.13 -0.54 8.34 -1.22C8.41 -1.47 8.39 -1.53 8.25 -1.53C8.14 -1.53 8.1 -1.49 8.03 -1.23C7.85 -0.57 7.49 -0.12 7.14 -0.12C6.98 -0.12 6.92 -0.2 6.92 -0.41C6.92 -0.61 6.98 -0.82 7.27 -1.64C7.38 -1.95 7.52 -2.39 7.58 -2.61C7.67 -2.97 7.69 -3.06 7.69 -3.37C7.69 -3.67 7.68 -3.74 7.62 -3.87C7.53 -4.06 7.34 -4.25 7.14 -4.34C6.93 -4.44 6.44 -4.43 6.16 -4.34C5.84 -4.23 5.53 -3.98 5.26 -3.64L5.18 -3.54L5.16 -3.63C5.11 -3.85 5.03 -3.99 4.89 -4.14C4.39 -4.64 3.39 -4.46 2.81 -3.76L2.68 -3.61L2.66 -3.71C2.61 -3.98 2.43 -4.22 2.21 -4.34C2.03 -4.43 1.73 -4.44 1.58 -4.37Z"/>
+ <path id="g25" d="M1.58 -4.37C1.33 -4.25 1.15 -3.99 1 -3.55C0.85 -3.13 0.79 -2.86 0.84 -2.81C0.88 -2.76 1.03 -2.75 1.07 -2.8C1.09 -2.82 1.13 -2.95 1.17 -3.08C1.36 -3.82 1.54 -4.14 1.79 -4.17C2.02 -4.2 2.13 -3.98 2.07 -3.59C2.03 -3.33 0.85 1.4 0.79 1.5C0.74 1.6 0.6 1.65 0.35 1.65C0.19 1.65 0.17 1.66 0.14 1.72C0.12 1.76 0.12 1.83 0.13 1.87L0.14 1.94H1.15H2.16L2.2 1.85C2.26 1.7 2.21 1.67 1.86 1.65C1.64 1.63 1.54 1.62 1.51 1.58C1.46 1.53 1.47 1.46 1.68 0.63C1.8 0.14 1.91 -0.3 1.93 -0.35L1.96 -0.45L2.02 -0.35C2.11 -0.2 2.28 -0.03 2.42 0.04C2.6 0.13 3.01 0.13 3.27 0.02C4 -0.27 4.61 -0.97 4.9 -1.85C5.28 -2.97 5.05 -3.96 4.33 -4.31C4.16 -4.4 4.11 -4.41 3.88 -4.41C3.64 -4.41 3.6 -4.4 3.38 -4.29C3.22 -4.21 3.08 -4.1 2.91 -3.95C2.78 -3.82 2.67 -3.73 2.67 -3.73C2.66 -3.74 2.64 -3.8 2.61 -3.87C2.56 -4.04 2.37 -4.25 2.21 -4.34C2.03 -4.43 1.73 -4.44 1.58 -4.37ZM4.04 -4.14C4.18 -4.08 4.28 -3.93 4.35 -3.72C4.39 -3.57 4.4 -3.46 4.38 -3.17C4.36 -2.57 4.02 -1.34 3.76 -0.88C3.52 -0.48 3.17 -0.17 2.9 -0.13C2.51 -0.07 2.21 -0.37 2.12 -0.93C2.1 -1.01 2.17 -1.32 2.37 -2.13C2.63 -3.15 2.65 -3.23 2.77 -3.4C3.16 -3.98 3.69 -4.29 4.04 -4.14Z"/>
+ <path id="g26" d="M1.67 -4.36C1.32 -4.33 1.04 -4.3 1.03 -4.29C1.02 -4.29 1.01 -4.22 1 -4.15L0.98 -4.01L1.22 -3.99C1.36 -3.98 1.5 -3.96 1.55 -3.94C1.72 -3.86 1.72 -3.85 1.43 -2.14C1.29 -1.27 1.15 -0.52 1.13 -0.48C1.08 -0.36 0.95 -0.32 0.64 -0.3C0.48 -0.29 0.36 -0.28 0.36 -0.27C0.35 -0.26 0.34 -0.2 0.33 -0.13L0.31 -0.01H1.43H2.55L2.57 -0.12C2.58 -0.17 2.58 -0.24 2.58 -0.25C2.58 -0.27 2.48 -0.29 2.31 -0.3C2.15 -0.31 2.01 -0.33 1.98 -0.34C1.85 -0.39 1.85 -0.47 2.05 -1.67C2.16 -2.3 2.28 -2.89 2.31 -2.99C2.52 -3.58 3.05 -4.06 3.61 -4.16C4.14 -4.25 4.39 -4.05 4.39 -3.52C4.39 -3.25 3.97 -0.62 3.9 -0.48C3.85 -0.36 3.72 -0.32 3.41 -0.3C3.25 -0.29 3.13 -0.28 3.13 -0.27C3.12 -0.26 3.11 -0.2 3.1 -0.13L3.08 -0.01H4.2H5.32L5.34 -0.12C5.35 -0.17 5.35 -0.24 5.35 -0.25C5.35 -0.27 5.25 -0.29 5.08 -0.3C4.92 -0.31 4.78 -0.33 4.75 -0.34C4.62 -0.39 4.62 -0.45 4.86 -1.87C5.05 -2.99 5.09 -3.27 5.08 -3.47C5.05 -4.07 4.7 -4.38 4.03 -4.41C3.68 -4.43 3.42 -4.38 3.12 -4.22C2.88 -4.09 2.52 -3.77 2.37 -3.55C2.3 -3.45 2.28 -3.43 2.3 -3.49C2.33 -3.64 2.43 -4.29 2.43 -4.36S2.51 -4.43 1.67 -4.36Z"/>
+ <path id="g27" d="M1.71 -5.26C1.46 -5.21 1.15 -5.04 0.94 -4.84C0.35 -4.24 0.36 -3.37 0.98 -2.8C1.24 -2.55 1.44 -2.46 2.2 -2.29C2.56 -2.2 2.91 -2.11 2.98 -2.07C3.15 -1.98 3.32 -1.81 3.42 -1.6C3.49 -1.45 3.5 -1.39 3.5 -1.15C3.5 -0.92 3.49 -0.86 3.42 -0.71C3.18 -0.23 2.72 -0.04 2.07 -0.15C1.27 -0.3 0.86 -0.72 0.78 -1.46C0.76 -1.66 0.76 -1.67 0.67 -1.68C0.62 -1.68 0.56 -1.67 0.54 -1.64S0.51 -1.36 0.51 -0.73L0.52 0.13H0.6C0.65 0.13 0.71 0.08 0.82 -0.06C0.9 -0.16 0.97 -0.27 0.99 -0.29C1.01 -0.33 1.04 -0.31 1.16 -0.23C1.46 -0.01 1.83 0.11 2.29 0.14C2.82 0.17 3.2 0.04 3.55 -0.3C4.19 -0.93 4.18 -1.94 3.53 -2.55C3.25 -2.81 3.06 -2.89 2.3 -3.07C1.86 -3.17 1.59 -3.24 1.51 -3.29C1.11 -3.53 0.93 -3.96 1.07 -4.38C1.11 -4.52 1.16 -4.6 1.3 -4.74C1.46 -4.9 1.52 -4.94 1.69 -4.99C2.18 -5.14 2.72 -5.01 3.07 -4.66C3.29 -4.44 3.43 -4.15 3.51 -3.76L3.57 -3.47H3.69H3.8V-4.38V-5.28H3.73C3.67 -5.28 3.62 -5.23 3.51 -5.08C3.43 -4.98 3.35 -4.87 3.34 -4.85C3.32 -4.81 3.28 -4.83 3.16 -4.93C2.78 -5.23 2.22 -5.36 1.71 -5.26Z"/>
+ <path id="g28" d="M1.73 -4.43C1.13 -4.3 0.73 -3.94 0.7 -3.47C0.68 -3.32 0.69 -3.28 0.75 -3.19C0.87 -3.02 0.97 -2.96 1.15 -2.96C1.71 -2.96 1.8 -3.73 1.26 -3.87L1.16 -3.9L1.27 -3.98C1.54 -4.19 2.16 -4.3 2.47 -4.2C2.79 -4.09 3.03 -3.85 3.16 -3.52C3.21 -3.39 3.23 -3.27 3.24 -2.99L3.25 -2.62L3.02 -2.6C2.3 -2.55 1.8 -2.43 1.37 -2.23C0.91 -2.01 0.59 -1.68 0.47 -1.28C0.29 -0.68 0.59 -0.2 1.3 0.01C1.6 0.11 2.04 0.14 2.29 0.09C2.66 0.01 3.11 -0.31 3.27 -0.61L3.33 -0.73L3.36 -0.58C3.42 -0.37 3.5 -0.22 3.64 -0.1C4.01 0.2 4.54 0.06 4.8 -0.39C4.88 -0.55 4.89 -0.57 4.9 -1L4.91 -1.44H4.77H4.63V-1.06C4.63 -0.85 4.62 -0.62 4.6 -0.55C4.51 -0.22 4.17 -0.16 4.01 -0.46C3.96 -0.54 3.95 -0.69 3.94 -1.94L3.92 -3.32L3.81 -3.55C3.48 -4.25 2.61 -4.62 1.73 -4.43ZM3.24 -1.7C3.23 -0.88 3.2 -0.79 2.89 -0.47C2.63 -0.21 2.44 -0.13 2.07 -0.13C1.85 -0.13 1.79 -0.15 1.66 -0.21C0.94 -0.59 1.1 -1.66 1.95 -2.09C2.25 -2.24 2.77 -2.36 3.11 -2.37H3.25Z"/>
+ <path id="g29" d="M1.743 -0.742C1.673 -0.504 1.442 -0.126 1.085 -0.126C1.064 -0.126 0.854 -0.126 0.707 -0.224C0.994 -0.315 1.015 -0.567 1.015 -0.609C1.015 -0.763 0.896 -0.868 0.735 -0.868C0.539 -0.868 0.336 -0.7 0.336 -0.441C0.336 -0.091 0.728 0.07 1.071 0.07C1.393 0.07 1.68 -0.133 1.855 -0.427C2.023 -0.056 2.408 0.07 2.688 0.07C3.493 0.07 3.92 -0.805 3.92 -1.001C3.92 -1.092 3.829 -1.092 3.808 -1.092C3.71 -1.092 3.703 -1.057 3.675 -0.973C3.528 -0.49 3.108 -0.126 2.716 -0.126C2.436 -0.126 2.289 -0.315 2.289 -0.581C2.289 -0.763 2.457 -1.4 2.653 -2.177C2.793 -2.716 3.108 -2.891 3.339 -2.891C3.353 -2.891 3.57 -2.891 3.717 -2.793C3.493 -2.73 3.409 -2.534 3.409 -2.408C3.409 -2.254 3.528 -2.149 3.689 -2.149S4.081 -2.282 4.081 -2.576C4.081 -2.968 3.633 -3.087 3.353 -3.087C3.003 -3.087 2.723 -2.856 2.569 -2.59C2.443 -2.877 2.121 -3.087 1.729 -3.087C0.945 -3.087 0.497 -2.226 0.497 -2.016C0.497 -1.925 0.595 -1.925 0.616 -1.925C0.707 -1.925 0.714 -1.953 0.749 -2.044C0.924 -2.59 1.365 -2.891 1.708 -2.891C1.939 -2.891 2.128 -2.765 2.128 -2.429C2.128 -2.289 2.044 -1.939 1.981 -1.701L1.743 -0.742Z"/>
+ <path id="g30" d="M1.94 -4.61C1.76 -4.59 1.42 -4.5 1.25 -4.43C1.01 -4.33 0.75 -4.18 0.75 -4.14C0.75 -4.05 0.81 -3.54 0.82 -3.53S0.88 -3.55 0.95 -3.59C1.34 -3.86 1.77 -4 2.24 -4.01C2.59 -4.01 2.71 -3.97 2.91 -3.74C3.11 -3.52 3.16 -3.33 3.18 -2.87L3.19 -2.47L2.85 -2.45C1.84 -2.39 1.07 -2.13 0.71 -1.74C0.49 -1.51 0.43 -1.33 0.46 -1.03C0.5 -0.5 0.82 -0.04 1.24 0.07C1.67 0.2 2.55 0.04 3.05 -0.25L3.22 -0.35V-0.17V0H3.59H3.97V-1.57C3.97 -3.3 3.96 -3.34 3.78 -3.73C3.66 -3.98 3.31 -4.35 3.07 -4.46C2.75 -4.61 2.36 -4.66 1.94 -4.61ZM3.19 -1.52C3.19 -1.2 3.17 -1.1 3.13 -1C2.93 -0.56 2.05 -0.36 1.51 -0.64C1.37 -0.71 1.21 -0.91 1.18 -1.03C1.13 -1.29 1.25 -1.48 1.53 -1.62C1.86 -1.79 2.46 -1.91 2.94 -1.92H3.19Z"/>
+ <path id="g31" d="M1.96 -4.59C1.37 -4.45 0.8 -3.94 0.54 -3.31C0.38 -2.93 0.34 -2.73 0.34 -2.27C0.34 -1.76 0.39 -1.56 0.6 -1.11C0.73 -0.84 0.79 -0.76 1.03 -0.52C1.33 -0.22 1.56 -0.07 1.91 0.02C2.5 0.21 3.29 0.09 3.88 -0.26L4.08 -0.38L4.07 -0.53C4.07 -0.61 4.06 -0.76 4.05 -0.86L4.03 -1.04L3.81 -0.91C3.28 -0.56 2.59 -0.42 2.14 -0.56C1.88 -0.64 1.72 -0.75 1.51 -0.97C1.25 -1.25 1.1 -1.59 1.03 -2.05L1.02 -2.19H2.57H4.12V-2.35C4.12 -2.77 3.99 -3.39 3.85 -3.68C3.55 -4.27 3.05 -4.6 2.42 -4.62C2.26 -4.63 2.07 -4.61 1.96 -4.59ZM2.84 -3.88C3.06 -3.77 3.24 -3.59 3.36 -3.35C3.44 -3.2 3.55 -2.86 3.55 -2.78C3.55 -2.77 2.99 -2.77 2.31 -2.77H1.07L1.1 -2.83C1.27 -3.41 1.62 -3.82 2.05 -3.96C2.26 -4.03 2.61 -3.99 2.84 -3.88Z"/>
+ <path id="g32" d="M12.66 14L13.87 10.8H13.62C13.23 11.84 12.17 12.52 11.02 12.82C10.81 12.87 9.83 13.13 7.91 13.13H1.88L6.97 7.16C7.04 7.08 7.06 7.05 7.06 7C7.06 6.98 7.06 6.95 6.99 6.85L2.33 0.48H7.81C9.15 0.48 10.06 0.62 10.15 0.64C10.69 0.72 11.56 0.89 12.35 1.39C12.6 1.55 13.28 2 13.62 2.81H13.87L12.66 0H0.84C0.61 0 0.6 0.01 0.57 0.07C0.56 0.1 0.56 0.29 0.56 0.4L5.85 7.64L0.67 13.71C0.57 13.83 0.57 13.88 0.57 13.89C0.57 14 0.66 14 0.84 14H12.66Z"/>
+ <path id="g33" d="M2.04 -4.46C1.88 -4.43 1.57 -4.32 1.39 -4.22C1 -4.01 0.6 -3.54 0.43 -3.08C-0.13 -1.57 0.84 0.02 2.37 0.11C3.13 0.15 3.83 -0.29 4.09 -0.98C4.17 -1.2 4.15 -1.29 4.02 -1.29C3.92 -1.29 3.91 -1.28 3.84 -1.08C3.66 -0.62 3.32 -0.31 2.87 -0.19C2.28 -0.03 1.64 -0.35 1.35 -0.94C1.2 -1.24 1.14 -1.5 1.12 -1.96L1.1 -2.31H2.61C4.29 -2.31 4.15 -2.29 4.15 -2.54C4.15 -2.97 4.02 -3.44 3.8 -3.77C3.63 -4.02 3.47 -4.16 3.2 -4.29C2.87 -4.45 2.39 -4.52 2.04 -4.46ZM2.76 -4.14C3.17 -3.93 3.4 -3.47 3.45 -2.82L3.47 -2.55H2.29H1.11L1.12 -2.62C1.13 -2.66 1.14 -2.77 1.16 -2.87C1.22 -3.42 1.51 -3.92 1.89 -4.12C2.16 -4.26 2.5 -4.27 2.76 -4.14Z"/>
+ <path id="g34" d="M2.05 -4.44C0.97 -4.19 0.21 -3.16 0.28 -2.01C0.3 -1.64 0.35 -1.43 0.53 -1.09C1.11 0.08 2.6 0.47 3.7 -0.25C4.12 -0.53 4.49 -1.05 4.62 -1.55C4.7 -1.84 4.71 -2.26 4.65 -2.57C4.44 -3.66 3.59 -4.44 2.55 -4.47C2.35 -4.48 2.17 -4.47 2.05 -4.44ZM2.95 -4.15C3.43 -3.96 3.74 -3.52 3.82 -2.89C3.86 -2.56 3.86 -1.8 3.81 -1.49C3.71 -0.87 3.48 -0.5 3.05 -0.28C2.48 0 1.77 -0.18 1.42 -0.71C1.18 -1.08 1.09 -1.56 1.12 -2.42C1.14 -3.01 1.17 -3.2 1.33 -3.52C1.49 -3.85 1.82 -4.12 2.18 -4.21C2.37 -4.26 2.76 -4.23 2.95 -4.15Z"/>
+ <path id="g35" d="M2.06 -4H3C3.2 -4 3.3 -4 3.3 -4.2C3.3 -4.31 3.2 -4.31 3.02 -4.31H2.14C2.5 -5.73 2.55 -5.93 2.55 -5.99C2.55 -6.16 2.43 -6.26 2.26 -6.26C2.23 -6.26 1.95 -6.25 1.86 -5.9L1.47 -4.31H0.53C0.33 -4.31 0.23 -4.31 0.23 -4.12C0.23 -4 0.31 -4 0.51 -4H1.39C0.67 -1.16 0.63 -0.99 0.63 -0.81C0.63 -0.27 1.01 0.11 1.55 0.11C2.57 0.11 3.14 -1.35 3.14 -1.43C3.14 -1.53 3.06 -1.53 3.02 -1.53C2.93 -1.53 2.92 -1.5 2.87 -1.39C2.44 -0.35 1.91 -0.11 1.57 -0.11C1.36 -0.11 1.26 -0.24 1.26 -0.57C1.26 -0.81 1.28 -0.88 1.32 -1.05L2.06 -4Z"/>
+ <path id="g36" d="M2.08 -1.94C2.3 -1.9 3.12 -1.74 3.12 -1.02C3.12 -0.51 2.77 -0.11 1.99 -0.11C1.15 -0.11 0.79 -0.68 0.6 -1.53C0.57 -1.66 0.56 -1.7 0.46 -1.7C0.33 -1.7 0.33 -1.63 0.33 -1.45V-0.13C0.33 0.04 0.33 0.11 0.44 0.11C0.49 0.11 0.5 0.1 0.69 -0.09C0.71 -0.11 0.71 -0.13 0.89 -0.32C1.33 0.1 1.78 0.11 1.99 0.11C3.14 0.11 3.6 -0.56 3.6 -1.28C3.6 -1.81 3.3 -2.11 3.18 -2.23C2.85 -2.55 2.46 -2.63 2.04 -2.71C1.48 -2.82 0.81 -2.95 0.81 -3.53C0.81 -3.88 1.07 -4.29 1.93 -4.29C3.03 -4.29 3.08 -3.39 3.1 -3.08C3.11 -2.99 3.2 -2.99 3.22 -2.99C3.35 -2.99 3.35 -3.04 3.35 -3.23V-4.24C3.35 -4.41 3.35 -4.48 3.24 -4.48C3.19 -4.48 3.17 -4.48 3.04 -4.36C3.01 -4.32 2.91 -4.23 2.87 -4.2C2.49 -4.48 2.08 -4.48 1.93 -4.48C0.71 -4.48 0.33 -3.81 0.33 -3.25C0.33 -2.9 0.49 -2.62 0.76 -2.4C1.08 -2.14 1.36 -2.08 2.08 -1.94Z"/>
+ <path id="g37" d="M2.12 -6.89C1.78 -6.86 1.49 -6.83 1.48 -6.82C1.48 -6.82 1.47 -6.75 1.46 -6.68L1.43 -6.54L1.68 -6.52C1.96 -6.5 2.08 -6.45 2.12 -6.34C2.16 -6.21 1.22 -0.53 1.13 -0.43C1.07 -0.35 0.86 -0.3 0.58 -0.3C0.4 -0.3 0.39 -0.3 0.38 -0.2C0.33 0 0.24 -0.01 1.46 -0.01C2.45 -0.01 2.55 -0.01 2.55 -0.06C2.55 -0.09 2.56 -0.15 2.57 -0.2L2.59 -0.29L2.31 -0.3C2.15 -0.31 2.01 -0.33 1.98 -0.34C1.84 -0.39 1.84 -0.35 2.39 -3.67C2.68 -5.41 2.92 -6.86 2.92 -6.89C2.92 -6.96 2.97 -6.96 2.12 -6.89Z"/>
+ <path id="g38" d="M2.19 -6.89C1.87 -6.85 1.59 -6.81 1.57 -6.79C1.54 -6.77 1.53 -6.72 1.54 -6.65L1.55 -6.54L1.83 -6.53C2.17 -6.5 2.25 -6.47 2.25 -6.36C2.25 -6.32 1.91 -4.91 1.49 -3.22C1.06 -1.53 0.72 -0.12 0.72 -0.1C0.72 -0.01 0.89 0.12 0.99 0.12C1.13 0.12 1.28 0.02 1.34 -0.09C1.36 -0.15 1.53 -0.79 1.71 -1.53C1.92 -2.34 2.07 -2.92 2.12 -3.02C2.36 -3.5 2.71 -3.89 3.02 -4.04C3.23 -4.14 3.52 -4.2 3.67 -4.17C3.92 -4.12 4.05 -3.84 4.02 -3.41C4 -3.09 3.81 -2.36 3.56 -1.67C3.45 -1.35 3.34 -1.01 3.32 -0.91C3.12 -0.1 3.93 0.42 4.58 -0.08C4.86 -0.3 5.12 -0.73 5.27 -1.22C5.34 -1.47 5.32 -1.53 5.17 -1.53C5.06 -1.53 5.03 -1.49 4.96 -1.23C4.78 -0.57 4.42 -0.12 4.07 -0.12C3.91 -0.12 3.85 -0.2 3.85 -0.41C3.85 -0.61 3.91 -0.82 4.19 -1.64C4.3 -1.95 4.44 -2.39 4.51 -2.61C4.6 -2.97 4.62 -3.06 4.62 -3.37C4.62 -3.67 4.61 -3.74 4.55 -3.87C4.46 -4.06 4.26 -4.25 4.07 -4.34C3.86 -4.44 3.37 -4.43 3.09 -4.34C2.87 -4.26 2.61 -4.09 2.41 -3.9C2.34 -3.83 2.28 -3.79 2.28 -3.8S2.45 -4.5 2.66 -5.34C3.07 -6.99 3.07 -6.95 2.87 -6.95C2.82 -6.95 2.52 -6.92 2.19 -6.89Z"/>
+ <path id="g39" d="M2.191 -4.648C2.198 -4.662 2.219 -4.753 2.219 -4.76C2.219 -4.795 2.191 -4.858 2.107 -4.858C1.967 -4.858 1.386 -4.802 1.211 -4.788C1.155 -4.781 1.057 -4.774 1.057 -4.627C1.057 -4.529 1.155 -4.529 1.239 -4.529C1.575 -4.529 1.575 -4.48 1.575 -4.424C1.575 -4.375 1.561 -4.333 1.547 -4.27L0.56 -0.308C0.525 -0.182 0.525 -0.168 0.525 -0.154C0.525 -0.049 0.609 0.07 0.763 0.07C0.952 0.07 1.043 -0.07 1.085 -0.224C1.099 -0.252 1.4 -1.484 1.428 -1.582C1.925 -1.533 2.324 -1.372 2.324 -1.008C2.324 -0.973 2.324 -0.938 2.31 -0.868C2.282 -0.763 2.282 -0.728 2.282 -0.651C2.282 -0.154 2.688 0.07 3.024 0.07C3.703 0.07 3.913 -0.994 3.913 -1.001C3.913 -1.092 3.822 -1.092 3.801 -1.092C3.703 -1.092 3.696 -1.057 3.661 -0.924C3.577 -0.623 3.388 -0.126 3.045 -0.126C2.856 -0.126 2.8 -0.301 2.8 -0.49C2.8 -0.609 2.8 -0.623 2.842 -0.805C2.849 -0.826 2.877 -0.945 2.877 -1.022C2.877 -1.645 2.037 -1.743 1.743 -1.764C1.946 -1.89 2.205 -2.121 2.324 -2.226C2.681 -2.562 3.031 -2.891 3.423 -2.891C3.507 -2.891 3.598 -2.87 3.654 -2.8C3.353 -2.751 3.29 -2.513 3.29 -2.408C3.29 -2.254 3.409 -2.149 3.57 -2.149C3.759 -2.149 3.969 -2.303 3.969 -2.597C3.969 -2.828 3.801 -3.087 3.43 -3.087C3.031 -3.087 2.667 -2.8 2.31 -2.471C2.016 -2.191 1.785 -1.974 1.498 -1.855L2.191 -4.648Z"/>
+ <path id="g40" d="M2.23 -7.29C1.81 -7.18 1.42 -6.84 1.2 -6.41C1.02 -6.04 0.99 -5.84 0.99 -5.09V-4.45H0.61H0.24V-4.15V-3.85H0.61H0.99V-1.92V0H1.37H1.74V-1.92V-3.85H2.28H2.83V-4.15V-4.45H2.27H1.71L1.72 -5.29C1.73 -6.04 1.73 -6.13 1.78 -6.24C1.98 -6.64 2.48 -6.8 3.05 -6.65C3.18 -6.62 3.32 -6.58 3.36 -6.57C3.43 -6.55 3.43 -6.55 3.43 -6.89V-7.22L3.3 -7.25C2.94 -7.35 2.5 -7.37 2.23 -7.29Z"/>
+ <path id="g41" d="M2.27 -4.46C1.44 -4.35 0.87 -3.78 0.87 -3.09C0.87 -2.9 0.88 -2.84 0.96 -2.68C1.15 -2.31 1.47 -2.13 2.24 -1.96C2.91 -1.82 3.06 -1.74 3.2 -1.46C3.29 -1.27 3.3 -1.12 3.22 -0.86C3.07 -0.4 2.61 -0.12 1.98 -0.12C1.3 -0.11 0.95 -0.52 0.88 -1.36C0.87 -1.5 0.85 -1.62 0.83 -1.64C0.8 -1.69 0.64 -1.69 0.62 -1.66C0.58 -1.6 0.32 0.03 0.34 0.07C0.38 0.17 0.49 0.12 0.72 -0.1L0.94 -0.32L1.1 -0.18C1.35 0.05 1.52 0.1 2.01 0.1C2.37 0.1 2.45 0.08 2.66 0.02C3.26 -0.17 3.65 -0.6 3.78 -1.21C3.86 -1.6 3.77 -1.93 3.5 -2.22C3.26 -2.48 3.03 -2.59 2.4 -2.72C1.86 -2.83 1.65 -2.91 1.52 -3.06C1.37 -3.25 1.35 -3.45 1.47 -3.71C1.62 -4.05 2.07 -4.27 2.63 -4.27C3.01 -4.27 3.3 -4.15 3.45 -3.93C3.55 -3.78 3.62 -3.48 3.6 -3.25C3.59 -3.13 3.59 -3.04 3.61 -3.02C3.65 -2.97 3.81 -2.96 3.83 -3C3.86 -3.05 4.06 -4.31 4.05 -4.39C4.04 -4.52 3.94 -4.5 3.75 -4.35C3.58 -4.21 3.51 -4.18 3.47 -4.24C3.44 -4.3 3.18 -4.41 3.01 -4.45C2.86 -4.48 2.46 -4.49 2.27 -4.46Z"/>
+ <path id="g42" d="M2.33 -7C1.59 -6.83 1.02 -6.32 0.8 -5.64C0.71 -5.34 0.71 -4.82 0.8 -4.54C0.97 -4.07 1.35 -3.63 1.81 -3.4C2.01 -3.3 2.21 -3.24 2.94 -3.07C3.48 -2.94 3.88 -2.83 3.99 -2.77C4.09 -2.73 4.24 -2.61 4.34 -2.52C4.89 -1.97 4.89 -1.06 4.33 -0.5C4.01 -0.19 3.67 -0.07 3.14 -0.1C2.73 -0.12 2.38 -0.2 2.04 -0.36C1.84 -0.46 1.74 -0.53 1.54 -0.73C1.19 -1.08 1.05 -1.42 1 -1.99L0.97 -2.24L0.88 -2.25C0.83 -2.25 0.77 -2.24 0.75 -2.21S0.72 -1.86 0.72 -0.99L0.73 0.19L0.81 0.2C0.88 0.21 0.91 0.17 1.12 -0.14L1.34 -0.51L1.46 -0.41C1.9 -0.03 2.45 0.16 3.16 0.2C3.48 0.21 3.57 0.21 3.79 0.15C4.19 0.05 4.46 -0.09 4.76 -0.39C4.97 -0.6 5.04 -0.69 5.16 -0.93C5.46 -1.56 5.46 -2.17 5.16 -2.79C5.04 -3.03 4.97 -3.13 4.77 -3.32C4.39 -3.7 4.17 -3.8 3.11 -4.05C2.18 -4.26 1.98 -4.34 1.75 -4.57C1.22 -5.08 1.22 -5.87 1.76 -6.38C2.06 -6.66 2.44 -6.79 2.9 -6.76C3.45 -6.73 3.81 -6.58 4.15 -6.23C4.5 -5.89 4.67 -5.52 4.78 -4.88L4.83 -4.59H4.95H5.07V-5.81V-7.03L4.99 -7.04C4.92 -7.04 4.89 -7.01 4.69 -6.69C4.57 -6.49 4.47 -6.33 4.47 -6.33C4.46 -6.32 4.39 -6.39 4.3 -6.47C4 -6.75 3.61 -6.94 3.18 -7.01C2.93 -7.05 2.55 -7.05 2.33 -7Z"/>
+ <path id="g43" d="M2.34 -4.38C2.14 -4.31 1.96 -4.18 1.81 -4.01C1.63 -3.82 1.45 -3.46 1.43 -3.31C1.43 -3.2 1.43 -3.2 1.55 -3.19C1.68 -3.18 1.68 -3.19 1.74 -3.31C1.86 -3.6 2.13 -3.77 2.48 -3.77C2.67 -3.77 2.72 -3.76 3 -3.63C3.18 -3.55 3.4 -3.46 3.5 -3.44L3.68 -3.4L2.57 -2.29C1.45 -1.18 1.1 -0.78 0.77 -0.28C0.57 0.02 0.56 0.1 0.72 0.11C0.83 0.12 0.84 0.11 0.98 -0.09C1.3 -0.56 1.62 -0.73 1.88 -0.57C1.93 -0.54 2.03 -0.45 2.09 -0.37C2.42 0.04 2.56 0.13 2.84 0.11C3.42 0.06 3.99 -0.47 4.24 -1.22C4.32 -1.45 4.3 -1.5 4.15 -1.5C4.05 -1.5 4.02 -1.49 4 -1.42C3.82 -0.99 3.63 -0.77 3.31 -0.62C3.14 -0.54 3.08 -0.52 2.89 -0.52C2.69 -0.52 2.63 -0.54 2.42 -0.64C2.08 -0.8 1.87 -0.87 1.7 -0.87H1.56L1.62 -0.96C1.66 -1.01 2.19 -1.56 2.81 -2.17C3.63 -2.99 3.99 -3.38 4.17 -3.61C4.45 -3.99 4.64 -4.3 4.63 -4.36C4.62 -4.39 4.57 -4.41 4.49 -4.42C4.37 -4.42 4.37 -4.42 4.26 -4.23C4.08 -3.93 3.95 -3.77 3.84 -3.72C3.63 -3.62 3.46 -3.68 3.26 -3.93C2.89 -4.4 2.68 -4.5 2.34 -4.38Z"/>
+ <path id="g44" d="M2.345 -4.452C2.345 -4.641 2.331 -4.648 2.135 -4.648C1.687 -4.207 1.05 -4.2 0.763 -4.2V-3.948C0.931 -3.948 1.393 -3.948 1.778 -4.144V-0.574C1.778 -0.343 1.778 -0.252 1.078 -0.252H0.812V0C0.938 -0.007 1.799 -0.028 2.058 -0.028C2.275 -0.028 3.157 -0.007 3.311 0V-0.252H3.045C2.345 -0.252 2.345 -0.343 2.345 -0.574V-4.452Z"/>
+ <path id="g45" d="M2.35 -4.51C2.07 -4.47 1.64 -4.32 1.41 -4.19C1.3 -4.13 1.1 -3.97 0.97 -3.83C0.76 -3.63 0.7 -3.54 0.59 -3.3C0.39 -2.89 0.34 -2.68 0.34 -2.19C0.34 -1.86 0.36 -1.74 0.41 -1.55C0.6 -0.89 1.05 -0.39 1.69 -0.14C2.09 0 2.31 0.04 2.86 0.04C3.4 0.04 3.62 0 4.02 -0.14C4.66 -0.39 5.11 -0.89 5.3 -1.55C5.36 -1.74 5.37 -1.86 5.37 -2.19C5.37 -2.68 5.32 -2.89 5.12 -3.3C5.01 -3.54 4.95 -3.63 4.74 -3.83C4.61 -3.97 4.41 -4.13 4.3 -4.19C3.8 -4.48 3.03 -4.6 2.35 -4.51ZM3.16 -4.15C3.39 -4.1 3.64 -3.96 3.77 -3.82C4.01 -3.55 4.06 -3.34 4.08 -2.49C4.1 -1.82 4.07 -1.36 3.98 -1.08C3.89 -0.77 3.67 -0.54 3.34 -0.41C3.2 -0.36 3.11 -0.34 2.86 -0.34C2.6 -0.34 2.51 -0.36 2.37 -0.41C1.75 -0.66 1.59 -1.1 1.63 -2.49C1.65 -3.34 1.7 -3.55 1.94 -3.82C2.2 -4.11 2.71 -4.24 3.16 -4.15Z"/>
+ <path id="g46" d="M2.4 -5.87C2.18 -4.98 1.63 -4.32 1.02 -4.25C0.89 -4.23 0.87 -4.22 0.87 -4.16C0.87 -4.13 0.86 -4.07 0.85 -4.05C0.83 -4.01 0.88 -4 1.26 -4C1.49 -4 1.68 -3.99 1.68 -3.98S1.57 -3.31 1.44 -2.52C1.16 -0.86 1.15 -0.71 1.3 -0.41C1.47 -0.06 1.78 0.09 2.25 0.1C2.51 0.1 2.56 0.09 2.71 0.02C3 -0.12 3.3 -0.49 3.43 -0.88C3.46 -0.98 3.51 -1.19 3.53 -1.35C3.56 -1.51 3.59 -1.67 3.6 -1.72C3.61 -1.8 3.61 -1.8 3.48 -1.8C3.4 -1.8 3.34 -1.8 3.34 -1.79S3.3 -1.59 3.26 -1.36C3.11 -0.53 2.76 -0.09 2.3 -0.16C2.14 -0.18 2.04 -0.26 1.96 -0.42C1.84 -0.66 1.86 -0.85 2.13 -2.5L2.38 -4H3.09H3.79L3.8 -4.07C3.81 -4.1 3.82 -4.17 3.83 -4.22L3.85 -4.3H3.14C2.75 -4.3 2.43 -4.31 2.43 -4.32C2.43 -4.34 2.7 -5.95 2.72 -6.06C2.74 -6.14 2.74 -6.14 2.61 -6.14H2.47Z"/>
+ <path id="g47" d="M2.46 -4.43C1.91 -4.32 1.51 -4.04 1.33 -3.66C1.19 -3.35 1.27 -3.07 1.52 -2.98C1.84 -2.87 2.19 -3.14 2.19 -3.49C2.19 -3.61 2.18 -3.66 2.1 -3.74C2.05 -3.79 1.97 -3.85 1.92 -3.87L1.82 -3.9L1.94 -3.98C2.1 -4.09 2.49 -4.21 2.77 -4.23C3.1 -4.26 3.31 -4.19 3.5 -3.99C3.76 -3.73 3.82 -3.38 3.72 -2.84L3.68 -2.63L3.5 -2.61C3.4 -2.6 3.18 -2.57 3 -2.56C2.5 -2.5 2.03 -2.37 1.63 -2.18C1.34 -2.04 1.25 -1.97 1.05 -1.78C0.75 -1.48 0.6 -1.19 0.57 -0.87C0.56 -0.68 0.57 -0.64 0.64 -0.49C0.82 -0.13 1.24 0.07 1.85 0.11C2.2 0.13 2.43 0.08 2.73 -0.06C2.94 -0.17 3.23 -0.42 3.37 -0.61L3.46 -0.73V-0.62C3.46 -0.33 3.64 -0.04 3.87 0.03C4.13 0.11 4.53 -0.01 4.75 -0.25C4.92 -0.44 5.01 -0.64 5.07 -0.99C5.09 -1.15 5.12 -1.31 5.13 -1.36C5.15 -1.44 5.15 -1.44 5.01 -1.44C4.86 -1.44 4.88 -1.48 4.8 -0.99C4.77 -0.83 4.72 -0.63 4.68 -0.55C4.56 -0.29 4.32 -0.19 4.17 -0.34C4.03 -0.47 4.04 -0.55 4.25 -1.86C4.49 -3.24 4.5 -3.4 4.35 -3.7C4.18 -4.05 3.78 -4.34 3.35 -4.44C3.09 -4.49 2.72 -4.49 2.46 -4.43ZM3.64 -2.37C3.64 -2.36 3.59 -2.08 3.53 -1.75C3.41 -1.01 3.34 -0.84 3.05 -0.55C2.73 -0.23 2.27 -0.06 1.9 -0.14C1.67 -0.19 1.52 -0.3 1.42 -0.5C1.35 -0.64 1.34 -0.69 1.36 -0.85C1.41 -1.48 1.93 -2.01 2.71 -2.23C3.02 -2.32 3.64 -2.41 3.64 -2.37Z"/>
+ <path id="g48" d="M2.57 -4.52C2.27 -4.45 2.02 -4.31 1.76 -4.06L1.53 -3.83V-4.17V-4.51H1.17H0.81V-2.25V0H1.2H1.59L1.6 -1.45C1.61 -2.66 1.62 -2.93 1.66 -3.06C1.83 -3.61 2.1 -3.9 2.5 -3.93C2.86 -3.97 3.24 -3.83 3.38 -3.61C3.54 -3.37 3.55 -3.28 3.55 -1.57V0H3.94H4.33V-1.63C4.33 -3.39 4.32 -3.57 4.17 -3.89C3.97 -4.33 3.53 -4.58 2.95 -4.57C2.84 -4.57 2.67 -4.55 2.57 -4.52Z"/>
+ <path id="g49" d="M2.59 -6.53C2.42 -6.37 2.03 -6.18 1.75 -6.11C1.62 -6.07 1.38 -6.04 1.21 -6.03L0.9 -6.01V-5.86V-5.72H1.09C1.42 -5.72 1.79 -5.8 2.14 -5.94C2.19 -5.96 2.19 -5.82 2.19 -3.27C2.19 -1.19 2.18 -0.57 2.15 -0.51C2.08 -0.36 1.94 -0.32 1.43 -0.3L0.96 -0.29V-0.15V-0.01H2.57H4.18V-0.15V-0.29L3.71 -0.3C3.2 -0.32 3.06 -0.36 2.98 -0.51C2.96 -0.57 2.95 -1.25 2.95 -3.57C2.95 -5.21 2.94 -6.58 2.93 -6.6C2.89 -6.69 2.73 -6.66 2.59 -6.53Z"/>
+ <path id="g50" d="M2.66 -4.44C2.23 -4.34 1.84 -4.13 1.5 -3.8C1.12 -3.43 0.85 -3 0.7 -2.5C0.63 -2.27 0.62 -2.19 0.62 -1.82C0.62 -1.44 0.62 -1.37 0.7 -1.15C0.91 -0.52 1.43 -0.05 2.06 0.07C2.94 0.26 3.84 -0.18 4.29 -1.03C4.36 -1.17 4.37 -1.2 4.33 -1.24C4.31 -1.27 4.25 -1.29 4.21 -1.29C4.14 -1.29 4.11 -1.27 4.05 -1.15C3.81 -0.67 3.38 -0.32 2.89 -0.19C2.39 -0.06 1.87 -0.25 1.63 -0.66C1.5 -0.88 1.44 -1.07 1.42 -1.38C1.4 -1.6 1.44 -2.04 1.49 -2.25L1.51 -2.31H3.01H4.51L4.55 -2.38C4.57 -2.43 4.58 -2.6 4.59 -2.89C4.59 -3.26 4.58 -3.35 4.52 -3.54C4.39 -3.95 4.09 -4.25 3.67 -4.39C3.42 -4.48 2.92 -4.5 2.66 -4.44ZM3.47 -4.14C3.66 -4.03 3.76 -3.91 3.84 -3.69C3.93 -3.44 3.95 -3.16 3.93 -2.81L3.9 -2.55H2.73C2.09 -2.55 1.56 -2.56 1.56 -2.57C1.56 -2.63 1.66 -2.96 1.73 -3.13C1.94 -3.66 2.4 -4.1 2.83 -4.21C3.01 -4.26 3.33 -4.22 3.47 -4.14Z"/>
+ <path id="g51" d="M2.72 -4.39C2.15 -4.27 1.67 -3.78 1.54 -3.16C1.49 -2.89 1.52 -2.69 1.64 -2.46C1.8 -2.17 1.99 -2.06 2.55 -1.93C2.99 -1.83 3.16 -1.74 3.27 -1.53C3.44 -1.2 3.28 -0.67 2.9 -0.38C2.66 -0.2 2.42 -0.13 2.03 -0.13C1.62 -0.13 1.41 -0.2 1.21 -0.4C1.08 -0.54 1.02 -0.66 1.1 -0.66C1.13 -0.66 1.21 -0.69 1.28 -0.72C1.5 -0.83 1.63 -1.14 1.53 -1.32C1.46 -1.46 1.19 -1.51 1.02 -1.43C0.72 -1.27 0.63 -0.85 0.81 -0.48C1.02 -0.06 1.49 0.14 2.14 0.11C2.86 0.07 3.42 -0.26 3.71 -0.85C3.99 -1.41 3.96 -1.89 3.63 -2.28C3.47 -2.45 3.16 -2.6 2.74 -2.69C2.33 -2.78 2.22 -2.84 2.13 -3.03C1.96 -3.37 2.21 -3.91 2.62 -4.09C2.75 -4.15 2.83 -4.16 3.07 -4.16C3.33 -4.17 3.37 -4.16 3.51 -4.08C3.67 -3.99 3.76 -3.89 3.8 -3.77C3.82 -3.71 3.81 -3.7 3.73 -3.68C3.68 -3.67 3.59 -3.61 3.53 -3.55C3.45 -3.45 3.43 -3.4 3.43 -3.29S3.44 -3.15 3.52 -3.08C3.69 -2.94 3.94 -3.01 4.07 -3.25C4.16 -3.4 4.16 -3.73 4.07 -3.89C3.98 -4.07 3.8 -4.23 3.6 -4.32C3.45 -4.38 3.36 -4.4 3.14 -4.41C2.99 -4.41 2.8 -4.4 2.72 -4.39Z"/>
+ <path id="g52" d="M2.72 -6.55C2.59 -6.49 2.44 -6.31 2.42 -6.18C2.39 -6.04 2.46 -5.89 2.59 -5.82C2.8 -5.71 3.08 -5.85 3.19 -6.1C3.25 -6.22 3.25 -6.25 3.22 -6.35C3.16 -6.56 2.94 -6.64 2.72 -6.55ZM1.83 -4.38C1.42 -4.24 1.05 -3.74 0.86 -3.09C0.79 -2.83 0.81 -2.77 0.96 -2.77C1.07 -2.77 1.09 -2.79 1.18 -3.11C1.4 -3.82 1.7 -4.18 2.07 -4.18C2.18 -4.18 2.22 -4.14 2.25 -4.02C2.31 -3.78 2.26 -3.63 1.67 -2.01C1.32 -1.08 1.28 -0.95 1.27 -0.73C1.26 -0.53 1.26 -0.46 1.32 -0.33C1.4 -0.15 1.6 0.03 1.77 0.08C2.34 0.25 2.91 -0.24 3.2 -1.18C3.29 -1.47 3.28 -1.53 3.13 -1.53C3.02 -1.53 2.98 -1.49 2.91 -1.23C2.82 -0.89 2.6 -0.46 2.45 -0.31C2.28 -0.14 2.03 -0.07 1.89 -0.15C1.81 -0.19 1.79 -0.39 1.84 -0.64C1.87 -0.76 2.09 -1.42 2.34 -2.1C2.85 -3.48 2.88 -3.61 2.78 -3.9C2.65 -4.3 2.22 -4.52 1.83 -4.38Z"/>
+ <path id="g53" d="M2.74 -4.51C2.31 -4.4 1.95 -4.17 1.67 -3.83L1.52 -3.64L1.51 -4.08L1.5 -4.51H1.15H0.81V-2.25V0H1.18H1.56L1.57 -1.27L1.58 -2.54L1.66 -2.74C1.83 -3.18 2.09 -3.5 2.45 -3.69C2.64 -3.79 2.95 -3.88 3.12 -3.88H3.22V-4.23V-4.57H3.09C3.02 -4.57 2.86 -4.54 2.74 -4.51Z"/>
+ <path id="g54" d="M2.87 -6.83C2.87 -6.84 2.87 -6.94 2.74 -6.94C2.51 -6.94 1.78 -6.86 1.52 -6.84C1.44 -6.83 1.33 -6.82 1.33 -6.64C1.33 -6.52 1.42 -6.52 1.57 -6.52C2.05 -6.52 2.07 -6.45 2.07 -6.35L2.04 -6.15L0.59 -0.39C0.55 -0.25 0.55 -0.23 0.55 -0.17C0.55 0.06 0.75 0.11 0.84 0.11C0.97 0.11 1.12 0.02 1.18 -0.1C1.23 -0.19 1.68 -2.04 1.74 -2.29C2.08 -2.26 2.9 -2.1 2.9 -1.44C2.9 -1.37 2.9 -1.33 2.87 -1.23C2.85 -1.11 2.83 -0.99 2.83 -0.88C2.83 -0.29 3.23 0.11 3.75 0.11C4.05 0.11 4.32 -0.05 4.54 -0.42C4.79 -0.86 4.9 -1.41 4.9 -1.43C4.9 -1.53 4.81 -1.53 4.78 -1.53C4.68 -1.53 4.67 -1.49 4.64 -1.35C4.44 -0.62 4.21 -0.11 3.77 -0.11C3.58 -0.11 3.45 -0.22 3.45 -0.58C3.45 -0.75 3.49 -0.98 3.53 -1.14C3.57 -1.31 3.57 -1.35 3.57 -1.45C3.57 -2.1 2.94 -2.39 2.09 -2.5C2.4 -2.68 2.72 -3 2.95 -3.24C3.43 -3.77 3.89 -4.2 4.38 -4.2C4.44 -4.2 4.45 -4.2 4.47 -4.19C4.59 -4.17 4.6 -4.17 4.68 -4.11C4.7 -4.1 4.7 -4.09 4.72 -4.07C4.24 -4.04 4.15 -3.65 4.15 -3.53C4.15 -3.37 4.26 -3.18 4.53 -3.18C4.79 -3.18 5.08 -3.4 5.08 -3.79C5.08 -4.09 4.85 -4.42 4.4 -4.42C4.12 -4.42 3.66 -4.34 2.94 -3.54C2.6 -3.16 2.21 -2.76 1.83 -2.61L2.87 -6.83Z"/>
+ <path id="g55" d="M2.89 -2.5C2.89 -3.28 2.78 -4.49 2.23 -5.62C1.63 -6.85 0.77 -7.5 0.67 -7.5C0.61 -7.5 0.57 -7.46 0.57 -7.4C0.57 -7.37 0.57 -7.35 0.76 -7.17C1.74 -6.18 2.31 -4.59 2.31 -2.5C2.31 -0.79 1.94 0.97 0.7 2.23C0.57 2.35 0.57 2.37 0.57 2.4C0.57 2.46 0.61 2.5 0.67 2.5C0.77 2.5 1.67 1.82 2.26 0.55C2.77 -0.55 2.89 -1.66 2.89 -2.5Z"/>
+ <path id="g56" d="M2.91 -5.27C2.88 -5.24 2.49 -4.24 2.03 -3.05S1.16 -0.82 1.12 -0.74C0.97 -0.48 0.65 -0.27 0.4 -0.27C0.33 -0.27 0.33 -0.25 0.33 -0.14V-0.01H1.11H1.89V-0.14C1.89 -0.24 1.88 -0.27 1.84 -0.27C1.75 -0.27 1.58 -0.37 1.53 -0.46C1.43 -0.62 1.45 -0.78 1.63 -1.25L1.79 -1.68L2.83 -1.67H3.86L4.07 -1.14C4.18 -0.85 4.27 -0.58 4.27 -0.54C4.27 -0.37 4.11 -0.27 3.86 -0.27C3.76 -0.27 3.76 -0.26 3.76 -0.14V-0.01H4.77H5.78V-0.13V-0.26L5.53 -0.27C5.25 -0.29 5.17 -0.34 5.06 -0.52C5.03 -0.59 4.6 -1.67 4.12 -2.93S3.22 -5.24 3.19 -5.27C3.17 -5.3 3.11 -5.32 3.05 -5.32C3 -5.32 2.94 -5.3 2.91 -5.27ZM3.3 -3.14L3.75 -1.95H2.82H1.89L1.95 -2.1C1.98 -2.17 2.19 -2.71 2.41 -3.28C2.63 -3.86 2.82 -4.33 2.83 -4.33C2.83 -4.33 3.05 -3.79 3.3 -3.14Z"/>
+ <path id="g57" d="M2.94 -6.4C2.94 -6.64 2.94 -6.66 2.71 -6.66C2.09 -6.02 1.21 -6.02 0.89 -6.02V-5.71C1.09 -5.71 1.68 -5.71 2.2 -5.97V-0.79C2.2 -0.43 2.17 -0.31 1.27 -0.31H0.95V0C1.3 -0.03 2.17 -0.03 2.57 -0.03S3.84 -0.03 4.19 0V-0.31H3.87C2.97 -0.31 2.94 -0.42 2.94 -0.79V-6.4Z"/>
+ <path id="g58" d="M3.01 -4.37C2.65 -4.28 2.33 -4.07 2 -3.72C1.4 -3.11 1.05 -2.25 1.05 -1.43C1.05 -0.88 1.19 -0.49 1.5 -0.19C1.75 0.03 1.9 0.1 2.24 0.1C2.5 0.1 2.53 0.09 2.74 0C2.9 -0.08 3.05 -0.19 3.22 -0.35C3.42 -0.54 3.46 -0.56 3.48 -0.52C3.59 -0.15 3.85 0.07 4.19 0.11C4.7 0.16 5.01 -0.22 5.26 -1.2C5.34 -1.48 5.32 -1.53 5.17 -1.53C5.06 -1.53 5.02 -1.47 4.92 -1.07C4.81 -0.66 4.63 -0.28 4.48 -0.18C4.2 0 4 -0.21 4.04 -0.64C4.06 -0.74 4.24 -1.53 4.45 -2.38C4.67 -3.24 4.84 -3.96 4.84 -3.99C4.84 -4.01 4.8 -4.07 4.76 -4.12C4.59 -4.29 4.3 -4.2 4.21 -3.95L4.16 -3.82L4.09 -3.96C3.89 -4.34 3.48 -4.5 3.01 -4.37ZM3.57 -4.12C3.76 -4.03 3.88 -3.86 3.97 -3.5L4.03 -3.27L3.76 -2.19C3.61 -1.59 3.47 -1.07 3.44 -1.02C3.37 -0.88 3.07 -0.53 2.92 -0.41C2.18 0.19 1.62 -0.2 1.74 -1.26C1.79 -1.65 2.08 -2.77 2.2 -3.07C2.57 -3.91 3.11 -4.33 3.57 -4.12Z"/>
+ <path id="g59" d="M3.241 -1.582H5.383C5.474 -1.582 5.642 -1.582 5.642 -1.75C5.642 -1.925 5.481 -1.925 5.383 -1.925H3.241V-4.074C3.241 -4.165 3.241 -4.333 3.073 -4.333C2.898 -4.333 2.898 -4.172 2.898 -4.074V-1.925H0.749C0.658 -1.925 0.49 -1.925 0.49 -1.757C0.49 -1.582 0.651 -1.582 0.749 -1.582H2.898V0.567C2.898 0.658 2.898 0.826 3.066 0.826C3.241 0.826 3.241 0.665 3.241 0.567V-1.582Z"/>
+ <path id="g60" d="M3.25 -4.39C2.74 -4.28 2.27 -4.02 1.88 -3.6C1.37 -3.07 1.14 -2.52 1.12 -1.74C1.1 -1.39 1.11 -1.29 1.17 -1.08C1.37 -0.26 1.9 0.15 2.66 0.11C3 0.08 3.26 0.02 3.57 -0.12C3.9 -0.27 4.13 -0.43 4.38 -0.69C4.66 -0.98 4.68 -1.02 4.6 -1.12C4.57 -1.16 4.52 -1.2 4.5 -1.2S4.39 -1.11 4.3 -1.01C3.93 -0.57 3.45 -0.27 2.92 -0.16C2.51 -0.07 2.28 -0.12 2.08 -0.31C1.78 -0.61 1.72 -1.24 1.91 -2.08L1.96 -2.28H2.14C2.46 -2.28 3.13 -2.34 3.36 -2.39C4 -2.52 4.4 -2.83 4.55 -3.28C4.61 -3.5 4.62 -3.61 4.56 -3.81C4.45 -4.17 4.1 -4.4 3.64 -4.41C3.5 -4.41 3.32 -4.41 3.25 -4.39ZM3.81 -4.15C4.09 -4.08 4.27 -3.78 4.23 -3.48C4.14 -2.91 3.67 -2.63 2.62 -2.55C2.38 -2.53 2.14 -2.52 2.1 -2.53L2.01 -2.54L2.11 -2.83C2.25 -3.23 2.41 -3.5 2.64 -3.73C3.02 -4.1 3.42 -4.24 3.81 -4.15Z"/>
+ <path id="g61" d="M3.31 2.4C3.31 2.37 3.31 2.35 3.14 2.18C1.89 0.92 1.57 -0.97 1.57 -2.5C1.57 -4.24 1.95 -5.98 3.18 -7.23C3.31 -7.35 3.31 -7.37 3.31 -7.4C3.31 -7.47 3.27 -7.5 3.21 -7.5C3.11 -7.5 2.21 -6.82 1.62 -5.55C1.11 -4.45 0.99 -3.34 0.99 -2.5C0.99 -1.72 1.1 -0.51 1.65 0.62C2.25 1.85 3.11 2.5 3.21 2.5C3.27 2.5 3.31 2.47 3.31 2.4Z"/>
+ <path id="g62" d="M3.34 -3.02C3.4 -3.28 3.63 -4.2 4.33 -4.2C4.38 -4.2 4.62 -4.2 4.83 -4.07C4.55 -4.02 4.35 -3.77 4.35 -3.53C4.35 -3.37 4.46 -3.18 4.73 -3.18C4.95 -3.18 5.27 -3.36 5.27 -3.76C5.27 -4.28 4.68 -4.42 4.34 -4.42C3.76 -4.42 3.41 -3.89 3.29 -3.66C3.04 -4.32 2.5 -4.42 2.21 -4.42C1.17 -4.42 0.6 -3.13 0.6 -2.88C0.6 -2.78 0.7 -2.78 0.72 -2.78C0.8 -2.78 0.83 -2.8 0.85 -2.89C1.19 -3.95 1.85 -4.2 2.19 -4.2C2.38 -4.2 2.73 -4.11 2.73 -3.53C2.73 -3.22 2.56 -2.55 2.19 -1.15C2.03 -0.53 1.68 -0.11 1.24 -0.11C1.18 -0.11 0.95 -0.11 0.74 -0.24C0.99 -0.29 1.21 -0.5 1.21 -0.78C1.21 -1.05 0.99 -1.13 0.84 -1.13C0.54 -1.13 0.29 -0.87 0.29 -0.55C0.29 -0.09 0.79 0.11 1.23 0.11C1.89 0.11 2.25 -0.59 2.28 -0.65C2.4 -0.28 2.76 0.11 3.36 0.11C4.39 0.11 4.96 -1.18 4.96 -1.43C4.96 -1.53 4.87 -1.53 4.84 -1.53C4.75 -1.53 4.73 -1.49 4.71 -1.42C4.38 -0.35 3.7 -0.11 3.38 -0.11C2.99 -0.11 2.83 -0.43 2.83 -0.77C2.83 -0.99 2.89 -1.21 3 -1.65L3.34 -3.02Z"/>
+ <path id="g63" d="M3.535 -1.274H3.297C3.276 -1.12 3.206 -0.707 3.115 -0.637C3.059 -0.595 2.52 -0.595 2.422 -0.595H1.134C1.869 -1.246 2.114 -1.442 2.534 -1.771C3.052 -2.184 3.535 -2.618 3.535 -3.283C3.535 -4.13 2.793 -4.648 1.897 -4.648C1.029 -4.648 0.441 -4.039 0.441 -3.395C0.441 -3.038 0.742 -3.003 0.812 -3.003C0.98 -3.003 1.183 -3.122 1.183 -3.374C1.183 -3.5 1.134 -3.745 0.77 -3.745C0.987 -4.242 1.463 -4.396 1.792 -4.396C2.492 -4.396 2.856 -3.85 2.856 -3.283C2.856 -2.674 2.422 -2.191 2.198 -1.939L0.511 -0.273C0.441 -0.21 0.441 -0.196 0.441 0H3.325L3.535 -1.274Z"/>
+ <path id="g64" d="M3.56 -7.01C3.3 -6.97 2.88 -6.84 2.62 -6.72C2.11 -6.49 1.55 -6.02 1.22 -5.56C0.43 -4.45 0.32 -2.95 0.94 -1.73C1.13 -1.37 1.32 -1.11 1.62 -0.81C2.6 0.16 4.08 0.48 5.15 -0.04C5.8 -0.37 6.27 -0.91 6.5 -1.57C6.6 -1.85 6.66 -2.19 6.64 -2.38L6.63 -2.51H6.51H6.39V-2.37C6.32 -1.3 5.7 -0.46 4.75 -0.17C4.43 -0.07 3.88 -0.07 3.53 -0.17C2.5 -0.46 1.86 -1.24 1.63 -2.47C1.56 -2.87 1.56 -3.96 1.63 -4.36C1.85 -5.53 2.44 -6.29 3.36 -6.6C4.5 -6.99 5.51 -6.52 6.05 -5.37C6.18 -5.08 6.25 -4.87 6.32 -4.48L6.37 -4.2H6.5H6.63V-5.61V-7.03L6.56 -7.04C6.49 -7.04 6.45 -7 6.18 -6.61L5.89 -6.17L5.7 -6.35C5.45 -6.58 5.29 -6.69 4.98 -6.83C4.57 -7.02 4.09 -7.08 3.56 -7.01Z"/>
+ <path id="g65" d="M3.612 -2.233C3.612 -3.003 3.521 -3.556 3.199 -4.046C2.982 -4.368 2.548 -4.648 1.988 -4.648C0.364 -4.648 0.364 -2.737 0.364 -2.233S0.364 0.14 1.988 0.14S3.612 -1.729 3.612 -2.233ZM1.988 -0.056C1.666 -0.056 1.239 -0.245 1.099 -0.819C1.001 -1.232 1.001 -1.806 1.001 -2.324C1.001 -2.835 1.001 -3.367 1.106 -3.752C1.253 -4.305 1.701 -4.452 1.988 -4.452C2.366 -4.452 2.73 -4.221 2.856 -3.815C2.968 -3.437 2.975 -2.933 2.975 -2.324C2.975 -1.806 2.975 -1.288 2.884 -0.847C2.744 -0.21 2.268 -0.056 1.988 -0.056Z"/>
+ <path id="g66" d="M3.7 -6.89C3.38 -6.86 3.09 -6.83 3.06 -6.83C3.02 -6.83 3.01 -6.8 3.01 -6.68V-6.54L3.26 -6.52C3.56 -6.5 3.67 -6.46 3.74 -6.32C3.78 -6.22 3.79 -6.1 3.79 -5.01V-3.81L3.66 -3.94C3.38 -4.22 3.02 -4.39 2.63 -4.41C1.79 -4.47 0.93 -3.94 0.56 -3.15C0.42 -2.85 0.36 -2.63 0.34 -2.29C0.27 -1.36 0.77 -0.47 1.57 -0.08C2.3 0.26 3.04 0.16 3.6 -0.37L3.76 -0.52V-0.2C3.76 -0.02 3.76 0.12 3.77 0.12C3.77 0.12 4.09 0.09 4.48 0.06C4.87 0.02 5.2 0 5.21 0S5.23 -0.06 5.23 -0.14V-0.29L4.98 -0.3C4.68 -0.32 4.57 -0.37 4.5 -0.51C4.46 -0.61 4.45 -0.82 4.45 -3.78V-6.95H4.37C4.32 -6.94 4.02 -6.92 3.7 -6.89ZM2.9 -4.13C3.22 -4.05 3.48 -3.85 3.67 -3.56L3.76 -3.42V-2.19V-0.97L3.64 -0.79C3.16 -0.04 2.23 0.09 1.66 -0.48C1.46 -0.67 1.34 -0.92 1.25 -1.25C1.19 -1.48 1.19 -1.59 1.19 -2.15C1.19 -2.84 1.23 -3.06 1.4 -3.41C1.68 -3.99 2.31 -4.29 2.9 -4.13Z"/>
+ <path id="g67" d="M3.83 -7C2.87 -6.84 2 -6.32 1.43 -5.55C1.21 -5.26 0.96 -4.74 0.86 -4.39C0.61 -3.52 0.69 -2.68 1.09 -1.85C1.7 -0.6 3 0.21 4.39 0.21C5.73 0.21 6.89 -0.75 7.1 -2.05C7.12 -2.17 7.13 -2.32 7.13 -2.39C7.12 -2.51 7.11 -2.51 7 -2.51H6.88L6.85 -2.27C6.8 -1.66 6.58 -1.19 6.17 -0.78C5.92 -0.52 5.67 -0.37 5.36 -0.25C4.69 0 3.98 -0.04 3.29 -0.39C2.48 -0.79 2 -1.48 1.81 -2.54C1.74 -2.92 1.74 -3.91 1.81 -4.29C2.02 -5.42 2.58 -6.18 3.49 -6.54C3.85 -6.68 4.07 -6.72 4.5 -6.72C4.84 -6.72 4.92 -6.71 5.13 -6.64C5.46 -6.53 5.72 -6.37 5.97 -6.12C6.42 -5.69 6.69 -5.13 6.81 -4.41L6.85 -4.2H6.98H7.12V-5.61V-7.03L7.04 -7.04C6.97 -7.04 6.93 -6.99 6.65 -6.59L6.34 -6.13L6.16 -6.31C5.84 -6.61 5.46 -6.83 5.05 -6.95C4.77 -7.03 4.18 -7.06 3.83 -7Z"/>
+ <path id="g68" d="M3.98 -4.47C3.78 -4.42 3.57 -4.32 3.4 -4.18C3.27 -4.08 3.25 -4.07 3.2 -4.11C3.09 -4.19 2.72 -4.35 2.56 -4.39C1.73 -4.56 0.84 -4.06 0.64 -3.29C0.53 -2.86 0.65 -2.39 0.95 -2.07L1.06 -1.96L0.95 -1.78C0.71 -1.4 0.68 -0.95 0.86 -0.59C0.92 -0.48 1 -0.35 1.06 -0.31L1.16 -0.22L0.95 -0.12C0.7 0 0.46 0.21 0.35 0.43C0.24 0.66 0.25 0.98 0.37 1.2C0.56 1.54 1.03 1.85 1.61 2C1.88 2.08 1.95 2.08 2.48 2.08C3 2.08 3.08 2.08 3.35 2C3.93 1.85 4.4 1.54 4.58 1.2C4.86 0.68 4.57 -0.1 3.98 -0.4C3.58 -0.6 3.18 -0.66 2.22 -0.66C1.63 -0.66 1.53 -0.67 1.42 -0.72C1.2 -0.82 1.07 -1.04 1.07 -1.34C1.07 -1.52 1.17 -1.82 1.23 -1.79C1.41 -1.69 1.73 -1.56 1.86 -1.53C2.39 -1.42 2.97 -1.58 3.35 -1.96C3.76 -2.34 3.9 -2.8 3.77 -3.29C3.72 -3.49 3.59 -3.75 3.49 -3.83C3.46 -3.86 3.43 -3.9 3.43 -3.91C3.43 -3.96 3.7 -4.13 3.86 -4.18C3.95 -4.21 4.09 -4.25 4.18 -4.26L4.34 -4.28L4.28 -4.2C4.2 -4.1 4.19 -4 4.26 -3.88C4.31 -3.77 4.39 -3.73 4.51 -3.73C4.56 -3.73 4.63 -3.74 4.66 -3.76C4.74 -3.8 4.81 -3.94 4.81 -4.04C4.81 -4.16 4.71 -4.35 4.6 -4.43C4.48 -4.51 4.21 -4.53 3.98 -4.47ZM2.56 -4.1C2.7 -4.03 2.87 -3.88 2.94 -3.75C3.11 -3.42 3.11 -2.5 2.94 -2.17C2.69 -1.71 2 -1.61 1.62 -1.99C1.41 -2.2 1.33 -2.54 1.36 -3.09C1.38 -3.61 1.48 -3.86 1.73 -4.03C1.96 -4.19 2.3 -4.21 2.56 -4.1ZM3.11 -0.02C3.62 0.04 3.91 0.19 4.06 0.45C4.17 0.65 4.17 0.95 4.04 1.17C3.89 1.44 3.55 1.66 3.09 1.79C2.82 1.87 2.14 1.87 1.86 1.79C1.4 1.66 1.06 1.44 0.91 1.17C0.84 1.03 0.82 0.97 0.82 0.79C0.82 0.41 1.03 0.11 1.39 0C1.52 -0.04 1.65 -0.05 2.21 -0.05C2.58 -0.05 2.99 -0.04 3.11 -0.02Z"/>
+ <path id="g69" d="M4.046 -1.918C3.675 -2.352 3.563 -2.471 3.297 -2.66C2.87 -2.968 2.422 -3.087 2.037 -3.087C1.169 -3.087 0.539 -2.345 0.539 -1.505C0.539 -0.686 1.141 0.07 2.016 0.07C2.989 0.07 3.668 -0.728 3.92 -1.099C4.291 -0.665 4.403 -0.546 4.669 -0.357C5.096 -0.049 5.544 0.07 5.929 0.07C6.797 0.07 7.427 -0.672 7.427 -1.512C7.427 -2.331 6.825 -3.087 5.95 -3.087C4.977 -3.087 4.298 -2.289 4.046 -1.918ZM4.27 -1.659C4.55 -2.114 5.159 -2.821 6.013 -2.821C6.734 -2.821 7.231 -2.184 7.231 -1.512S6.685 -0.315 6.041 -0.315C5.39 -0.315 4.942 -0.847 4.27 -1.659ZM3.696 -1.358C3.416 -0.903 2.807 -0.196 1.953 -0.196C1.232 -0.196 0.735 -0.833 0.735 -1.505S1.281 -2.702 1.925 -2.702C2.576 -2.702 3.024 -2.17 3.696 -1.358Z"/>
+ <path id="g70" d="M4.09 -2.3H6.88C7.02 -2.3 7.21 -2.3 7.21 -2.5S7.02 -2.7 6.88 -2.7H4.09V-5.5C4.09 -5.64 4.09 -5.83 3.89 -5.83S3.69 -5.64 3.69 -5.5V-2.7H0.89C0.75 -2.7 0.56 -2.7 0.56 -2.5S0.75 -2.3 0.89 -2.3H3.69V0.5C3.69 0.64 3.69 0.83 3.89 0.83S4.09 0.64 4.09 0.5V-2.3Z"/>
+ <path id="g71" d="M4.36 -6.9C4.01 -6.88 3.67 -6.86 3.62 -6.86H3.52V-6.62V-6.39L3.78 -6.37C4.09 -6.35 4.15 -6.33 4.18 -6.24C4.2 -6.2 4.21 -5.69 4.21 -5.11V-4.06L4.11 -4.13C3.97 -4.24 3.74 -4.35 3.49 -4.43C3.29 -4.49 3.2 -4.5 2.83 -4.49C2.35 -4.49 2.13 -4.45 1.78 -4.31C1.46 -4.18 1.23 -4.03 1 -3.81C0.35 -3.14 0.2 -2.03 0.64 -1.12C0.9 -0.59 1.34 -0.23 2 -0.04C2.23 0.02 2.32 0.03 2.71 0.04C3.09 0.04 3.17 0.03 3.37 -0.02C3.62 -0.1 3.83 -0.2 4.02 -0.33L4.15 -0.42V-0.17V0.06L4.62 0.04C4.89 0.03 5.3 0.02 5.54 0.01L5.99 0V-0.24V-0.47L5.72 -0.48C5.41 -0.5 5.36 -0.52 5.32 -0.62C5.31 -0.66 5.29 -1.98 5.29 -3.82V-6.95H5.15C5.07 -6.94 4.72 -6.92 4.36 -6.9ZM3.32 -4.11C3.58 -4.04 3.78 -3.92 3.98 -3.73L4.15 -3.55V-2.29V-1.03L4.03 -0.88C3.41 -0.1 2.26 -0.11 1.86 -0.89C1.72 -1.17 1.7 -1.37 1.7 -2.21C1.7 -2.86 1.71 -3.02 1.75 -3.18C1.89 -3.69 2.17 -3.98 2.62 -4.1C2.83 -4.16 3.1 -4.16 3.32 -4.11Z"/>
+ <path id="g72" d="M4.71 -2.14C4.71 -3.42 3.71 -4.48 2.5 -4.48C1.25 -4.48 0.28 -3.39 0.28 -2.14C0.28 -0.85 1.32 0.11 2.49 0.11C3.7 0.11 4.71 -0.87 4.71 -2.14ZM2.5 -0.14C2.07 -0.14 1.63 -0.35 1.36 -0.81C1.11 -1.25 1.11 -1.86 1.11 -2.22C1.11 -2.61 1.11 -3.15 1.35 -3.59C1.62 -4.05 2.09 -4.26 2.49 -4.26C2.93 -4.26 3.36 -4.04 3.62 -3.61S3.88 -2.6 3.88 -2.22C3.88 -1.86 3.88 -1.32 3.66 -0.88C3.44 -0.43 3 -0.14 2.5 -0.14Z"/>
+ <path id="g73" d="M4.72 -6.89C4.4 -6.85 4.12 -6.81 4.1 -6.79C4.07 -6.77 4.06 -6.72 4.07 -6.65L4.08 -6.54L4.36 -6.53C4.69 -6.5 4.78 -6.47 4.78 -6.37C4.78 -6.33 4.65 -5.75 4.48 -5.06L4.17 -3.82L4.09 -3.97C3.71 -4.62 2.86 -4.55 2.08 -3.81C1.44 -3.2 1.05 -2.29 1.05 -1.43C1.05 -0.88 1.19 -0.49 1.5 -0.19C1.75 0.03 1.9 0.1 2.24 0.1C2.5 0.1 2.53 0.09 2.74 0C2.9 -0.08 3.05 -0.19 3.22 -0.35C3.42 -0.54 3.46 -0.56 3.48 -0.52C3.59 -0.15 3.85 0.07 4.19 0.11C4.7 0.16 5.01 -0.22 5.26 -1.2C5.34 -1.48 5.32 -1.53 5.17 -1.53C5.06 -1.53 5.02 -1.47 4.92 -1.07C4.81 -0.66 4.63 -0.28 4.48 -0.18C4.2 0 4 -0.21 4.04 -0.64C4.06 -0.74 4.4 -2.18 4.82 -3.83C5.34 -5.91 5.56 -6.86 5.54 -6.89C5.5 -6.95 5.39 -6.95 4.72 -6.89ZM3.57 -4.12C3.76 -4.03 3.88 -3.86 3.97 -3.5L4.03 -3.27L3.76 -2.19C3.61 -1.59 3.47 -1.07 3.44 -1.02C3.37 -0.88 3.07 -0.53 2.92 -0.41C2.18 0.19 1.62 -0.2 1.74 -1.26C1.79 -1.65 2.08 -2.77 2.2 -3.07C2.57 -3.91 3.11 -4.33 3.57 -4.12Z"/>
+ <path id="g74" d="M4.8 -6.89C4.46 -6.86 4.17 -6.83 4.16 -6.82C4.16 -6.82 4.14 -6.75 4.13 -6.67L4.11 -6.54L4.35 -6.52C4.49 -6.51 4.63 -6.49 4.68 -6.46C4.84 -6.39 4.84 -6.35 4.64 -5.1C4.53 -4.47 4.44 -3.93 4.43 -3.89C4.42 -3.83 4.4 -3.84 4.26 -3.99C3.85 -4.42 3.25 -4.54 2.55 -4.3C2.1 -4.15 1.86 -4 1.49 -3.62C1.05 -3.18 0.81 -2.77 0.7 -2.25C0.56 -1.52 0.74 -0.85 1.2 -0.39C1.86 0.27 2.86 0.28 3.65 -0.35L3.84 -0.5L3.79 -0.19C3.76 -0.03 3.74 0.1 3.74 0.11C3.75 0.12 5.21 0 5.22 0C5.23 -0.01 5.24 -0.07 5.25 -0.15L5.27 -0.3H5.1C4.87 -0.3 4.67 -0.35 4.62 -0.43C4.59 -0.46 4.57 -0.53 4.57 -0.59C4.57 -0.64 4.8 -2.07 5.08 -3.76C5.37 -5.45 5.6 -6.86 5.6 -6.89C5.6 -6.96 5.65 -6.96 4.8 -6.89ZM3.65 -4.12C3.89 -4.04 4.1 -3.86 4.23 -3.62L4.33 -3.44L4.12 -2.22L3.92 -1L3.81 -0.84C3.37 -0.24 2.6 0.02 2.06 -0.21C1.53 -0.46 1.35 -1.07 1.53 -2.1C1.63 -2.72 1.75 -3.07 1.97 -3.4C2.37 -4.01 3.06 -4.3 3.65 -4.12Z"/>
+ <path id="g75" d="M5.376 -2.352C5.481 -2.352 5.642 -2.352 5.642 -2.527C5.642 -2.695 5.474 -2.695 5.383 -2.695H0.749C0.658 -2.695 0.49 -2.695 0.49 -2.527C0.49 -2.352 0.651 -2.352 0.756 -2.352H5.376ZM5.383 -0.812C5.474 -0.812 5.642 -0.812 5.642 -0.98C5.642 -1.155 5.481 -1.155 5.376 -1.155H0.756C0.651 -1.155 0.49 -1.155 0.49 -0.98C0.49 -0.812 0.658 -0.812 0.749 -0.812H5.383Z"/>
+ <path id="g76" d="M6.59 -2.3C6.76 -2.3 6.94 -2.3 6.94 -2.5S6.76 -2.7 6.59 -2.7H1.18C1.01 -2.7 0.83 -2.7 0.83 -2.5S1.01 -2.3 1.18 -2.3H6.59Z"/>
+ <path id="g77" d="M6.87 -3.27C7.02 -3.27 7.21 -3.27 7.21 -3.47S7.02 -3.67 6.88 -3.67H0.89C0.75 -3.67 0.56 -3.67 0.56 -3.47S0.75 -3.27 0.9 -3.27H6.87ZM6.88 -1.33C7.02 -1.33 7.21 -1.33 7.21 -1.53S7.02 -1.73 6.87 -1.73H0.9C0.75 -1.73 0.56 -1.73 0.56 -1.53S0.75 -1.33 0.89 -1.33H6.88Z"/>
+ </defs>
+ <g id="page1" transform="matrix(0.996 0 0 0.996 0 0)">
+ <use x="77" xlink:href="#g64" y="63"/>
+ <use x="84.2205" xlink:href="#g34" y="63"/>
+ <use x="89.2192" xlink:href="#g12" y="63"/>
+ <use x="91.9963" xlink:href="#g34" y="63"/>
+ <use x="96.9951" xlink:href="#g7" y="63"/>
+ <use x="104.243" xlink:href="#g20" y="63"/>
+ <use x="108.131" xlink:href="#g33" y="63"/>
+ <use x="112.575" xlink:href="#g21" y="63"/>
+ <use x="116.518" xlink:href="#g20" y="63"/>
+ <use x="120.406" xlink:href="#g15" y="63"/>
+ <g fill="#ff0000">
+ <use x="127.627" xlink:href="#g7" y="63"/>
+ <use x="131.542" xlink:href="#g33" y="63"/>
+ <use x="135.986" xlink:href="#g66" y="63"/>
+ </g>
+ <use x="141.54" xlink:href="#g14" y="63"/>
+ <g fill="#0000ff">
+ <use x="147.649" xlink:href="#g8" y="63"/>
+ <use x="153.204" xlink:href="#g12" y="63"/>
+ <use x="155.981" xlink:href="#g10" y="63"/>
+ <use x="161.535" xlink:href="#g33" y="63"/>
+ </g>
+ <use x="165.978" xlink:href="#g14" y="63"/>
+ <g fill="#ff00ff">
+ <use x="172.088" xlink:href="#g11" y="63"/>
+ <use x="180.419" xlink:href="#g28" y="63"/>
+ <use x="185.418" xlink:href="#g68" y="63"/>
+ <use x="190.417" xlink:href="#g33" y="63"/>
+ <use x="194.86" xlink:href="#g9" y="63"/>
+ <use x="200.137" xlink:href="#g20" y="63"/>
+ <use x="204.025" xlink:href="#g28" y="63"/>
+ </g>
+ <use x="164.374" xlink:href="#g13" y="78.8467"/>
+ <use x="174.374" xlink:href="#g29" y="81.3189"/>
+ <use x="169.929" xlink:href="#g65" y="101.569"/>
+ <use x="181.075" xlink:href="#g16" y="92.4579"/>
+ <use x="185.519" xlink:href="#g72" y="92.4579"/>
+ <use x="190.519" xlink:href="#g36" y="92.4579"/>
+ <use x="196.131" xlink:href="#g35" y="92.4579"/>
+ <use x="201.408" xlink:href="#g66" y="92.4579"/>
+ <use x="206.962" xlink:href="#g35" y="92.4579"/>
+ <use x="213.351" xlink:href="#g77" y="92.4579"/>
+ <use x="227.193" xlink:href="#g69" y="79.9579"/>
+ <use x="223.957" xlink:href="#g32" y="82.9578"/>
+ <use x="223.907" xlink:href="#g39" y="104.486"/>
+ <use x="228.327" xlink:href="#g75" y="104.486"/>
+ <use x="234.466" xlink:href="#g65" y="104.486"/>
+ <use x="238.452" xlink:href="#g61" y="92.4579"/>
+ <use x="242.341" xlink:href="#g76" y="92.4579"/>
+ <use x="250.119" xlink:href="#g57" y="92.4579"/>
+ <use x="255.119" xlink:href="#g55" y="92.4579"/>
+ <use x="259.008" xlink:href="#g39" y="88.329"/>
+ <use x="271.904" xlink:href="#g62" y="85.6928"/>
+ <use x="277.619" xlink:href="#g63" y="82.0639"/>
+ <use x="281.605" xlink:href="#g39" y="82.0639"/>
+ <use x="286.025" xlink:href="#g59" y="82.0639"/>
+ <use x="292.164" xlink:href="#g44" y="82.0639"/>
+ <rect height="0.399979" width="38.2986" x="265.128" y="89.7579"/>
+ <use x="265.128" xlink:href="#g61" y="99.3174"/>
+ <use x="269.017" xlink:href="#g18" y="99.3174"/>
+ <use x="274.017" xlink:href="#g54" y="99.3174"/>
+ <use x="281.76" xlink:href="#g70" y="99.3174"/>
+ <use x="291.76" xlink:href="#g57" y="99.3174"/>
+ <use x="296.76" xlink:href="#g55" y="99.3174"/>
+ <use x="300.649" xlink:href="#g23" y="99.3174"/>
+ <use x="77" xlink:href="#g2" y="123.706"/>
+ <use x="82.6931" xlink:href="#g34" y="123.706"/>
+ <use x="87.6918" xlink:href="#g9" y="123.706"/>
+ <use x="92.9683" xlink:href="#g20" y="123.706"/>
+ <use x="100.189" xlink:href="#g21" y="123.706"/>
+ <use x="104.132" xlink:href="#g20" y="123.706"/>
+ <use x="107.742" xlink:href="#g1" y="123.706"/>
+ <use x="113.019" xlink:href="#g12" y="123.706"/>
+ <use x="115.796" xlink:href="#g33" y="123.706"/>
+ <use x="120.239" xlink:href="#g21" y="123.706"/>
+ <use x="124.183" xlink:href="#g15" y="123.706"/>
+ <use x="131.403" xlink:href="#g17" y="123.706"/>
+ <use x="138.11" xlink:href="#g45" y="123.706"/>
+ <use x="143.859" xlink:href="#g19" y="123.706"/>
+ <use x="147.052" xlink:href="#g71" y="123.706"/>
+ <use x="153.44" xlink:href="#g14" y="123.706"/>
+ <use x="159.549" xlink:href="#g60" y="123.706"/>
+ <use x="164.148" xlink:href="#g24" y="123.706"/>
+ <use x="172.324" xlink:href="#g25" y="123.706"/>
+ <use x="177.434" xlink:href="#g38" y="123.706"/>
+ <use x="182.544" xlink:href="#g58" y="123.706"/>
+ <use x="187.654" xlink:href="#g51" y="123.706"/>
+ <use x="191.741" xlink:href="#g52" y="123.706"/>
+ <use x="194.807" xlink:href="#g43" y="123.706"/>
+ <use x="198.895" xlink:href="#g60" y="123.706"/>
+ <use x="202.983" xlink:href="#g73" y="123.706"/>
+ <use x="208.093" xlink:href="#g14" y="123.706"/>
+ <use x="214.203" xlink:href="#g22" y="123.706"/>
+ <use x="218.035" xlink:href="#g30" y="123.706"/>
+ <use x="222.839" xlink:href="#g48" y="123.706"/>
+ <use x="228.005" xlink:href="#g22" y="123.706"/>
+ <use x="235.17" xlink:href="#g22" y="123.706"/>
+ <use x="239.002" xlink:href="#g31" y="123.706"/>
+ <use x="243.445" xlink:href="#g53" y="123.706"/>
+ <use x="246.861" xlink:href="#g6" y="123.706"/>
+ <use x="249.25" xlink:href="#g40" y="123.706"/>
+ <use x="252.304" xlink:href="#g14" y="123.706"/>
+ <use x="258.414" xlink:href="#g42" y="123.706"/>
+ <use x="264.524" xlink:href="#g5" y="123.706"/>
+ <use x="271.988" xlink:href="#g56" y="123.706"/>
+ <use x="278.12" xlink:href="#g3" y="123.706"/>
+ <use x="283.252" xlink:href="#g3" y="123.706"/>
+ <use x="292.161" xlink:href="#g67" y="123.706"/>
+ <use x="300.021" xlink:href="#g56" y="123.706"/>
+ <use x="306.152" xlink:href="#g4" y="123.706"/>
+ <use x="311.729" xlink:href="#g27" y="123.706"/>
+ <use x="316.305" xlink:href="#g14" y="123.706"/>
+ <use x="322.415" xlink:href="#g41" y="123.706"/>
+ <use x="326.359" xlink:href="#g37" y="123.706"/>
+ <use x="329.136" xlink:href="#g47" y="123.706"/>
+ <use x="334.134" xlink:href="#g26" y="123.706"/>
+ <use x="339.411" xlink:href="#g46" y="123.706"/>
+ <use x="343.299" xlink:href="#g50" y="123.706"/>
+ <use x="347.742" xlink:href="#g74" y="123.706"/>
+ <use x="232.001" xlink:href="#g49" y="633"/>
+ </g>
+</svg>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-wf-cmp.svg b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-wf-cmp.svg
new file mode 100644
index 00000000000..d597c134c9a
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-wf-cmp.svg
@@ -0,0 +1,201 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="574.732pt" version="1.1" viewBox="76.7123 55.9032 275.656 574.732" width="275.656pt">
+ <defs>
+ <font horiz-adv-x="0" id="cmex10">
+ <font-face ascent="772" descent="-2960" font-family="cmex10" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M1266 -1400L1387 -1080H1362C1323 -1184 1217 -1252 1102 -1282C1081 -1287 983 -1313 791 -1313H188L697 -716C704 -708 706 -705 706 -700C706 -698 706 -695 699 -685L233 -48H781C915 -48 1006 -62 1015 -64C1069 -72 1156 -89 1235 -139C1260 -155 1328 -200 1362 -281H1387L1266 0H84C61 0 60 -1 57 -7C56 -10 56 -29 56 -40L585 -764L67 -1371C57 -1383 57 -1388 57 -1389C57 -1400 66 -1400 84 -1400H1266Z" glyph-name="summationdisplay" horiz-adv-x="1444" unicode="&#x3458;"/>
+ <glyph d="M104 -2177C136 -2175 153 -2153 153 -2128C153 -2095 128 -2079 105 -2079C81 -2079 56 -2094 56 -2129C56 -2180 106 -2222 167 -2222C319 -2222 376 -1988 447 -1698C524 -1382 589 -1063 643 -742C680 -529 717 -329 751 -200C763 -151 797 -22 836 -22C867 -22 892 -41 896 -45C863 -47 846 -69 846 -94C846 -127 871 -143 894 -143C918 -143 943 -128 943 -93C943 -39 889 0 834 0C758 0 702 -109 647 -313C644 -324 508 -826 398 -1480C372 -1633 343 -1800 310 -1939C292 -2012 246 -2200 165 -2200C129 -2200 105 -2177 104 -2177Z" glyph-name="integraldisplay" horiz-adv-x="555" unicode="&#x345A;"/>
+ </font>
+ <font horiz-adv-x="0" id="cmmi10">
+ <font-face ascent="750" descent="-250" font-family="cmmi10" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M287 683C287 684 287 694 274 694C251 694 178 686 152 684C144 683 133 682 133 664C133 652 142 652 157 652C205 652 207 645 207 635L204 615L59 39C55 25 55 23 55 17C55 -6 75 -11 84 -11C97 -11 112 -2 118 10C123 19 168 204 174 229C208 226 290 210 290 144C290 137 290 133 287 123C285 111 283 99 283 88C283 29 323 -11 375 -11C405 -11 432 5 454 42C479 86 490 141 490 143C490 153 481 153 478 153C468 153 467 149 464 135C444 62 421 11 377 11C358 11 345 22 345 58C345 75 349 98 353 114C357 131 357 135 357 145C357 210 294 239 209 250C240 268 272 300 295 324C343 377 389 420 438 420C444 420 445 420 447 419C459 417 460 417 468 411C470 410 470 409 472 407C424 404 415 365 415 353C415 337 426 318 453 318C479 318 508 340 508 379C508 409 485 442 440 442C412 442 366 434 294 354C260 316 221 276 183 261L287 683Z" glyph-name="k" horiz-adv-x="520" unicode="k"/>
+ <glyph d="M206 400H300C320 400 330 400 330 420C330 431 320 431 302 431H214C250 573 255 593 255 599C255 616 243 626 226 626C223 626 195 625 186 590L147 431H53C33 431 23 431 23 412C23 400 31 400 51 400H139C67 116 63 99 63 81C63 27 101 -11 155 -11C257 -11 314 135 314 143C314 153 306 153 302 153C293 153 292 150 287 139C244 35 191 11 157 11C136 11 126 24 126 57C126 81 128 88 132 105L206 400Z" glyph-name="t" horiz-adv-x="361" unicode="t"/>
+ <glyph d="M334 302C340 328 363 420 433 420C438 420 462 420 483 407C455 402 435 377 435 353C435 337 446 318 473 318C495 318 527 336 527 376C527 428 468 442 434 442C376 442 341 389 329 366C304 432 250 442 221 442C117 442 60 313 60 288C60 278 70 278 72 278C80 278 83 280 85 289C119 395 185 420 219 420C238 420 273 411 273 353C273 322 256 255 219 115C203 53 168 11 124 11C118 11 95 11 74 24C99 29 121 50 121 78C121 105 99 113 84 113C54 113 29 87 29 55C29 9 79 -11 123 -11C189 -11 225 59 228 65C240 28 276 -11 336 -11C439 -11 496 118 496 143C496 153 487 153 484 153C475 153 473 149 471 142C438 35 370 11 338 11C299 11 283 43 283 77C283 99 289 121 300 165L334 302Z" glyph-name="x" horiz-adv-x="571" unicode="x"/>
+ </font>
+ <font horiz-adv-x="0" id="cmmi7">
+ <font-face ascent="750" descent="-250" font-family="cmmi7" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M313 664C314 666 317 679 317 680C317 685 313 694 301 694C281 694 198 686 173 684C165 683 151 682 151 661C151 647 165 647 177 647C225 647 225 640 225 632C225 625 223 619 221 610L80 44C75 26 75 24 75 22C75 7 87 -10 109 -10C136 -10 149 10 155 32C157 36 200 212 204 226C275 219 332 196 332 144C332 139 332 134 330 124C326 109 326 104 326 93C326 22 384 -10 432 -10C529 -10 559 142 559 143C559 156 546 156 543 156C529 156 528 151 523 132C511 89 484 18 435 18C408 18 400 43 400 70C400 87 400 89 406 115C407 118 411 135 411 146C411 235 291 249 249 252C278 270 315 303 332 318C383 366 433 413 489 413C501 413 514 410 522 400C479 393 470 359 470 344C470 322 487 307 510 307C537 307 567 329 567 371C567 404 543 441 490 441C433 441 381 400 330 353C288 313 255 282 214 265L313 664Z" glyph-name="k" horiz-adv-x="607" unicode="k"/>
+ <glyph d="M249 106C239 72 206 18 155 18C152 18 122 18 101 32C142 45 145 81 145 87C145 109 128 124 105 124C77 124 48 100 48 63C48 13 104 -10 153 -10C199 -10 240 19 265 61C289 8 344 -10 384 -10C499 -10 560 115 560 143C560 156 547 156 544 156C530 156 529 151 525 139C504 70 444 18 388 18C348 18 327 45 327 83C327 109 351 200 379 311C399 388 444 413 477 413C479 413 510 413 531 399C499 390 487 362 487 344C487 322 504 307 527 307S583 326 583 368C583 424 519 441 479 441C429 441 389 408 367 370C349 411 303 441 247 441C135 441 71 318 71 288C71 275 85 275 88 275C101 275 102 279 107 292C132 370 195 413 244 413C277 413 304 395 304 347C304 327 292 277 283 243L249 106Z" glyph-name="x" horiz-adv-x="647" unicode="x"/>
+ </font>
+ <font horiz-adv-x="0" id="cmr10">
+ <font-face ascent="750" descent="-250" font-family="cmr10" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M153 209L192 665C192 698 165 716 139 716S86 698 86 665L125 210C126 195 127 187 139 187C149 187 152 192 153 209ZM192 53C192 82 168 106 139 106S86 82 86 53S110 0 139 0S192 24 192 53Z" glyph-name="exclam" horiz-adv-x="277" unicode="!"/>
+ <glyph d="M331 -240C331 -237 331 -235 314 -218C189 -92 157 97 157 250C157 424 195 598 318 723C331 735 331 737 331 740C331 747 327 750 321 750C311 750 221 682 162 555C111 445 99 334 99 250C99 172 110 51 165 -62C225 -185 311 -250 321 -250C327 -250 331 -247 331 -240Z" glyph-name="parenleft" horiz-adv-x="388" unicode="("/>
+ <glyph d="M289 250C289 328 278 449 223 562C163 685 77 750 67 750C61 750 57 746 57 740C57 737 57 735 76 717C174 618 231 459 231 250C231 79 194 -97 70 -223C57 -235 57 -237 57 -240C57 -246 61 -250 67 -250C77 -250 167 -182 226 -55C277 55 289 166 289 250Z" glyph-name="parenright" horiz-adv-x="388" unicode=")"/>
+ <glyph d="M409 230H688C702 230 721 230 721 250S702 270 688 270H409V550C409 564 409 583 389 583S369 564 369 550V270H89C75 270 56 270 56 250S75 230 89 230H369V-50C369 -64 369 -83 389 -83S409 -64 409 -50V230Z" glyph-name="plus" horiz-adv-x="777" unicode="+"/>
+ <glyph d="M294 640C294 664 294 666 271 666C209 602 121 602 89 602V571C109 571 168 571 220 597V79C220 43 217 31 127 31H95V0C130 3 217 3 257 3S384 3 419 0V31H387C297 31 294 42 294 79V640Z" glyph-name="one" horiz-adv-x="500" unicode="1"/>
+ <glyph d="M127 77L233 180C389 318 449 372 449 472C449 586 359 666 237 666C124 666 50 574 50 485C50 429 100 429 103 429C120 429 155 441 155 482C155 508 137 534 102 534C94 534 92 534 89 533C112 598 166 635 224 635C315 635 358 554 358 472C358 392 308 313 253 251L61 37C50 26 50 24 50 0H421L449 174H424C419 144 412 100 402 85C395 77 329 77 307 77H127Z" glyph-name="two" horiz-adv-x="500" unicode="2"/>
+ <glyph d="M687 327C702 327 721 327 721 347S702 367 688 367H89C75 367 56 367 56 347S75 327 90 327H687ZM688 133C702 133 721 133 721 153S702 173 687 173H90C75 173 56 173 56 153S75 133 89 133H688Z" glyph-name="equal" horiz-adv-x="777" unicode="="/>
+ <glyph d="M117 218C117 381 199 423 252 423C261 423 324 422 359 386C318 383 312 353 312 340C312 314 330 294 358 294C384 294 404 311 404 341C404 409 328 448 251 448C126 448 34 340 34 216C34 88 133 -11 249 -11C383 -11 415 109 415 119S405 129 402 129C393 129 391 125 389 119C360 26 295 14 258 14C205 14 117 57 117 218Z" glyph-name="c" horiz-adv-x="444" unicode="c"/>
+ <glyph d="M471 214C471 342 371 448 250 448C125 448 28 339 28 214C28 85 132 -11 249 -11C370 -11 471 87 471 214ZM250 14C207 14 163 35 136 81C111 125 111 186 111 222C111 261 111 315 135 359C162 405 209 426 249 426C293 426 336 404 362 361S388 260 388 222C388 186 388 132 366 88C344 43 300 14 250 14Z" glyph-name="o" horiz-adv-x="500" unicode="o"/>
+ <glyph d="M208 194C230 190 312 174 312 102C312 51 277 11 199 11C115 11 79 68 60 153C57 166 56 170 46 170C33 170 33 163 33 145V13C33 -4 33 -11 44 -11C49 -11 50 -10 69 9C71 11 71 13 89 32C133 -10 178 -11 199 -11C314 -11 360 56 360 128C360 181 330 211 318 223C285 255 246 263 204 271C148 282 81 295 81 353C81 388 107 429 193 429C303 429 308 339 310 308C311 299 320 299 322 299C335 299 335 304 335 323V424C335 441 335 448 324 448C319 448 317 448 304 436C301 432 291 423 287 420C249 448 208 448 193 448C71 448 33 381 33 325C33 290 49 262 76 240C108 214 136 208 208 194Z" glyph-name="s" horiz-adv-x="394" unicode="s"/>
+ </font>
+ <font horiz-adv-x="0" id="cmr7">
+ <font-face ascent="750" descent="-250" font-family="cmr7" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M463 226H769C782 226 806 226 806 250C806 275 783 275 769 275H463V582C463 595 463 619 439 619C414 619 414 596 414 582V275H107C94 275 70 275 70 251C70 226 93 226 107 226H414V-81C414 -94 414 -118 438 -118C463 -118 463 -95 463 -81V226Z" glyph-name="plus" horiz-adv-x="877" unicode="+"/>
+ <glyph d="M516 319C516 429 503 508 457 578C426 624 364 664 284 664C52 664 52 391 52 319S52 -20 284 -20S516 247 516 319ZM284 8C238 8 177 35 157 117C143 176 143 258 143 332C143 405 143 481 158 536C179 615 243 636 284 636C338 636 390 603 408 545C424 491 425 419 425 332C425 258 425 184 412 121C392 30 324 8 284 8Z" glyph-name="zero" horiz-adv-x="569" unicode="0"/>
+ <glyph d="M335 636C335 663 333 664 305 664C241 601 150 600 109 600V564C133 564 199 564 254 592V82C254 49 254 36 154 36H116V0C134 1 257 4 294 4C325 4 451 1 473 0V36H435C335 36 335 49 335 82V636Z" glyph-name="one" horiz-adv-x="569" unicode="1"/>
+ <glyph d="M505 182H471C468 160 458 101 445 91C437 85 360 85 346 85H162C267 178 302 206 362 253C436 312 505 374 505 469C505 590 399 664 271 664C147 664 63 577 63 485C63 434 106 429 116 429C140 429 169 446 169 482C169 500 162 535 110 535C141 606 209 628 256 628C356 628 408 550 408 469C408 382 346 313 314 277L73 39C63 30 63 28 63 0H475L505 182Z" glyph-name="two" horiz-adv-x="569" unicode="2"/>
+ <glyph d="M768 336C783 336 806 336 806 361C806 385 782 385 769 385H107C94 385 70 385 70 361C70 336 93 336 108 336H768ZM769 116C782 116 806 116 806 140C806 165 783 165 768 165H108C93 165 70 165 70 140C70 116 94 116 107 116H769Z" glyph-name="equal" horiz-adv-x="877" unicode="="/>
+ </font>
+ <font horiz-adv-x="0" id="cmsy10">
+ <font-face ascent="775" descent="-960" font-family="cmsy10" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M659 230C676 230 694 230 694 250S676 270 659 270H118C101 270 83 270 83 250S101 230 118 230H659Z" glyph-name="minus" horiz-adv-x="777" unicode="&#x3400;"/>
+ </font>
+ <font horiz-adv-x="0" id="cmsy7">
+ <font-face ascent="782" descent="-951" font-family="cmsy7" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M578 274C525 336 509 353 471 380C410 424 346 441 291 441C167 441 77 335 77 215C77 98 163 -10 288 -10C427 -10 524 104 560 157C613 95 629 78 667 51C728 7 792 -10 847 -10C971 -10 1061 96 1061 216C1061 333 975 441 850 441C711 441 614 327 578 274ZM610 237C650 302 737 403 859 403C962 403 1033 312 1033 216S955 45 863 45C770 45 706 121 610 237ZM528 194C488 129 401 28 279 28C176 28 105 119 105 215S183 386 275 386C368 386 432 310 528 194Z" glyph-name="infinity" horiz-adv-x="1138" unicode="&#x221E;"/>
+ </font>
+ <font horiz-adv-x="0" id="ecbx1000">
+ <font-face font-family="ecbx1000" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M120 690C84 688 51 686 45 686H36V662V639L62 637C93 635 98 633 102 624C104 619 105 489 105 308V0H129H152L174 24C187 38 198 50 199 52S205 51 211 46C228 30 258 12 283 3C306 -3 311 -4 352 -4C388 -3 400 -2 424 3C492 21 541 58 569 111C588 149 594 175 594 224S590 291 570 333C543 389 496 425 425 444C409 448 394 449 359 449C318 449 312 448 289 441C260 431 245 424 226 411L213 403V549V695H199C191 694 156 692 120 690ZM397 404C428 390 449 363 459 324C465 299 468 194 464 155C456 93 432 56 385 38C372 33 362 31 337 31C306 31 304 31 282 42C264 51 254 59 239 75L219 97V223V349L227 360C245 383 283 405 317 412C340 417 376 414 397 404Z" horiz-adv-x="638.733" unicode="b"/>
+ <glyph d="M436 690C401 688 367 686 362 686H352V662V639L378 637C409 635 415 633 418 624C420 620 421 569 421 511V406L411 413C397 424 374 435 349 443C329 449 320 450 283 449C235 449 213 445 178 431C146 418 123 403 100 381C35 314 20 203 64 112C90 59 134 23 200 4C223 -2 232 -3 271 -4C309 -4 317 -3 337 2C362 10 383 20 402 33L415 42V17V-6L462 -4C489 -3 530 -2 554 -1L599 0V24V47L572 48C541 50 536 52 532 62C531 66 529 198 529 382V695H515C507 694 472 692 436 690ZM332 411C358 404 378 392 398 373L415 355V229V103L403 88C341 10 226 11 186 89C172 117 170 137 170 221C170 286 171 302 175 318C189 369 217 398 262 410C283 416 310 416 332 411Z" horiz-adv-x="638.733" unicode="d"/>
+ <glyph d="M132 690C96 688 63 686 57 686H48V662V639L74 637C105 635 110 633 114 624C116 619 117 499 117 332V48H82H48V24V1H171H295V24V48H260H225V371V695H211C203 694 168 692 132 690Z" horiz-adv-x="319.366" unicode="l"/>
+ <glyph d="M235 451C207 447 164 432 141 419C130 413 110 397 97 383C76 363 70 354 59 330C39 289 34 268 34 219C34 186 36 174 41 155C60 89 105 39 169 14C209 0 231 -4 286 -4C340 -4 362 0 402 14C466 39 511 89 530 155C536 174 537 186 537 219C537 268 532 289 512 330C501 354 495 363 474 383C461 397 441 413 430 419C380 448 303 460 235 451ZM316 415C339 410 364 396 377 382C401 355 406 334 408 249C410 182 407 136 398 108C389 77 367 54 334 41C320 36 311 34 286 34C260 34 251 36 237 41C175 66 159 110 163 249C165 334 170 355 194 382C220 411 271 424 316 415Z" horiz-adv-x="574.86" unicode="o"/>
+ </font>
+ <font horiz-adv-x="0" id="eccc1000">
+ <font-face font-family="eccc1000" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M383 700C287 684 200 632 143 555C121 526 96 474 86 439C61 352 69 268 109 185C170 60 300 -21 439 -21C573 -21 689 75 710 205C712 217 713 232 713 239C712 251 711 251 700 251H688L685 227C680 166 658 119 617 78C592 52 567 37 536 25C469 0 398 4 329 39C248 79 200 148 181 254C174 292 174 391 181 429C202 542 258 618 349 654C385 668 407 672 450 672C484 672 492 671 513 664C546 653 572 637 597 612C642 569 669 513 681 441L685 420H698H712V561V703L704 704C697 704 693 699 665 659L634 613L616 631C584 661 546 683 505 695C477 703 418 706 383 700Z" horiz-adv-x="785.919" unicode="C"/>
+ <glyph d="M233 700C159 683 102 632 80 564C71 534 71 482 80 454C97 407 135 363 181 340C201 330 221 324 294 307C348 294 388 283 399 277C409 273 424 261 434 252C489 197 489 106 433 50C401 19 367 7 314 10C273 12 238 20 204 36C184 46 174 53 154 73C119 108 105 142 100 199L97 224L88 225C83 225 77 224 75 221S72 186 72 99L73 -19L81 -20C88 -21 91 -17 112 14L134 51L146 41C190 3 245 -16 316 -20C348 -21 357 -21 379 -15C419 -5 446 9 476 39C497 60 504 69 516 93C546 156 546 217 516 279C504 303 497 313 477 332C439 370 417 380 311 405C218 426 198 434 175 457C122 508 122 587 176 638C206 666 244 679 290 676C345 673 381 658 415 623C450 589 467 552 478 488L483 459H495H507V581V703L499 704C492 704 489 701 469 669C457 649 447 633 447 633C446 632 439 639 430 647C400 675 361 694 318 701C293 705 255 705 233 700Z" horiz-adv-x="610.962" unicode="S"/>
+ <glyph d="M291 527C288 524 249 424 203 305S116 82 112 74C97 48 65 27 40 27C33 27 33 25 33 14V1H111H189V14C189 24 188 27 184 27C175 27 158 37 153 46C143 62 145 78 163 125L179 168L283 167H386L407 114C418 85 427 58 427 54C427 37 411 27 386 27C376 27 376 26 376 14V1H477H578V13V26L553 27C525 29 517 34 506 52C503 59 460 167 412 293S322 524 319 527C317 530 311 532 305 532C300 532 294 530 291 527ZM330 314L375 195H282H189L195 210C198 217 219 271 241 328C263 386 282 433 283 433C283 433 305 379 330 314Z" horiz-adv-x="613.184" unicode="a"/>
+ <glyph d="M42 500V487H60C88 487 104 482 110 472C116 459 116 55 110 42C104 32 88 27 60 27H42V13V0H246H451L452 14C453 22 457 59 460 97C464 135 467 173 468 181L470 195H456H443L441 178C434 115 420 81 393 58C379 46 350 33 328 30C317 28 284 27 255 27C202 27 201 27 194 34L186 41V252C186 415 187 463 190 469C196 481 208 485 244 487L277 488V501V513H159H42Z" horiz-adv-x="513.208" unicode="l"/>
+ <glyph d="M48 501V487H66C94 487 110 482 116 472C119 465 120 434 120 271C120 56 120 59 100 42C89 33 70 27 55 27C48 27 48 26 48 14V1H135H222V14C222 26 222 27 215 27C200 27 181 33 170 42C150 59 150 56 151 276L152 473L245 241C296 113 339 6 342 4C347 0 357 -1 364 2C366 4 411 112 464 244L559 483V267C560 83 559 49 555 42C550 32 533 27 506 27H487V14V1H591H695V14V27H677C649 27 632 32 627 42C621 55 621 459 627 472C632 482 649 487 677 487H695V501V514H623C551 514 551 514 546 508C544 504 504 405 457 289C411 172 372 76 372 76C371 75 332 172 285 291C237 410 196 509 195 511C192 513 170 514 119 514H48Z" horiz-adv-x="746.485" unicode="m"/>
+ <glyph d="M45 501V487H63C91 487 107 482 113 472C119 459 119 55 113 42C107 32 91 27 63 27H45V14V1H153H261V14V27H243C233 27 219 28 211 30C189 36 189 36 189 142V234H270C341 234 354 235 375 240C482 268 533 362 481 438C461 468 420 495 377 507C361 512 341 513 202 514L45 515ZM332 484C356 480 374 471 389 457C409 439 414 423 414 373C414 322 409 307 389 289C362 264 339 258 250 258H186V366V473L194 480C201 487 201 487 258 487C289 487 322 486 332 484Z" horiz-adv-x="557.642" unicode="p"/>
+ <glyph d="M171 526C146 521 115 504 94 484C35 424 36 337 98 280C124 255 144 246 220 229C256 220 291 211 298 207C315 198 332 181 342 160C349 145 350 139 350 115C350 92 349 86 342 71C318 23 272 4 207 15C127 30 86 72 78 146C76 166 76 167 67 168C62 168 56 167 54 164S51 136 51 73L52 -13H60C65 -13 71 -8 82 6C90 16 97 27 99 29C101 33 104 31 116 23C146 1 183 -11 229 -14C282 -17 320 -4 355 30C419 93 418 194 353 255C325 281 306 289 230 307C186 317 159 324 151 329C111 353 93 396 107 438C111 452 116 460 130 474C146 490 152 494 169 499C218 514 272 501 307 466C329 444 343 415 351 376L357 347H369H380V438V528H373C367 528 362 523 351 508C343 498 335 487 334 485C332 481 328 483 316 493C278 523 222 536 171 526Z" horiz-adv-x="457.666" unicode="s"/>
+ </font>
+ <font horiz-adv-x="0" id="ecrm1000">
+ <font-face font-family="ecrm1000" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M115 101C81 85 73 40 101 14C121 -4 151 -5 170 12L177 19V1C177 -56 156 -112 117 -158C107 -170 99 -181 99 -183C99 -188 111 -196 115 -194C126 -190 157 -147 173 -115C192 -76 198 -53 200 -13C204 55 181 101 140 104C131 105 121 103 115 101Z" horiz-adv-x="277.71" unicode=","/>
+ <glyph d="M259 653C242 637 203 618 175 611C162 607 138 604 121 603L90 601V586V572H109C142 572 179 580 214 594C219 596 219 582 219 327C219 119 218 57 215 51C208 36 194 32 143 30L96 29V15V1H257H418V15V29L371 30C320 32 306 36 298 51C296 57 295 125 295 357C295 521 294 658 293 660C289 669 273 666 259 653Z" horiz-adv-x="499.878" unicode="1"/>
+ <glyph d="M115 425C102 418 96 412 90 399C77 374 87 344 115 330C157 309 205 357 184 399C170 426 139 438 115 425ZM115 100C102 93 96 87 90 74C77 49 87 19 115 5C157 -16 205 32 184 74C170 101 139 112 115 100Z" horiz-adv-x="277.71" unicode=":"/>
+ <glyph d="M356 701C330 697 288 684 262 672C211 649 155 602 122 556C43 445 32 295 94 173C113 137 132 111 162 81C260 -16 408 -48 515 4C580 37 627 91 650 157C660 185 666 219 664 238L663 251H651H639V237C632 130 570 46 475 17C443 7 388 7 353 17C250 46 186 124 163 247C156 287 156 396 163 436C185 553 244 629 336 660C450 699 551 652 605 537C618 508 625 487 632 448L637 420H650H663V561V703L656 704C649 704 645 700 618 661L589 617L570 635C545 658 529 669 498 683C457 702 409 708 356 701Z" horiz-adv-x="722.046" unicode="C"/>
+ <glyph d="M33 665V651L71 649C113 647 124 644 131 631C137 619 137 61 131 48C124 35 113 32 71 30L33 29V15V1H192H352V15V29L304 30C251 32 236 36 229 51C226 56 225 91 225 192V325L291 324C365 322 374 320 393 302C407 287 412 273 414 235L416 207H429H442V340V472H429H416L414 444C412 407 407 392 393 377C374 359 365 357 291 356L225 354V491C225 571 227 632 228 636C233 649 245 651 352 649C455 648 472 646 500 631C547 608 566 569 579 469L581 454H595H608L607 465C606 472 600 517 594 567S583 663 582 669L580 680H306H33Z" horiz-adv-x="652.618" unicode="F"/>
+ <glyph d="M173 443C113 430 73 394 70 347C68 332 69 328 75 319C87 302 97 296 115 296C171 296 180 373 126 387L116 390L127 398C154 419 216 430 247 420C279 409 303 385 316 352C321 339 323 327 324 299L325 262L302 260C230 255 180 243 137 223C91 201 59 168 47 128C29 68 59 20 130 -1C160 -11 204 -14 229 -9C266 -1 311 31 327 61L333 73L336 58C342 37 350 22 364 10C401 -20 454 -6 480 39C488 55 489 57 490 100L491 144H477H463V106C463 85 462 62 460 55C451 22 417 16 401 46C396 54 395 69 394 194L392 332L381 355C348 425 261 462 173 443ZM324 170C323 88 320 79 289 47C263 21 244 13 207 13C185 13 179 15 166 21C94 59 110 166 195 209C225 224 277 236 311 237H325Z" horiz-adv-x="499.878" unicode="a"/>
+ <glyph d="M96 689C64 686 35 683 32 683C28 683 27 680 27 668V654L52 652C82 650 93 646 100 632C105 622 105 600 105 310V0H118H132L143 20C149 31 157 45 160 50L166 60L178 46C221 -3 272 -20 339 -7C404 5 462 51 493 113C508 143 514 166 516 200C521 268 497 333 450 380C375 456 262 462 190 396L171 378V537V695H163C158 694 128 692 96 689ZM351 406C388 388 412 354 425 305C431 281 431 271 431 215C431 160 430 148 425 128C408 67 373 29 322 16C268 2 213 27 184 78L174 94V217V339L183 352C221 410 295 433 351 406Z" horiz-adv-x="555.42" unicode="b"/>
+ <glyph d="M370 689C338 686 309 683 306 683C302 683 301 680 301 668V654L326 652C356 650 367 646 374 632C378 622 379 610 379 501V381L366 394C338 422 302 439 263 441C179 447 93 394 56 315C42 285 36 263 34 229C27 136 77 47 157 8C230 -26 304 -16 360 37L376 52V20C376 2 376 -12 377 -12C377 -12 409 -9 448 -6C487 -2 520 0 521 0S523 6 523 14V29L498 30C468 32 457 37 450 51C446 61 445 82 445 378V695H437C432 694 402 692 370 689ZM290 413C322 405 348 385 367 356L376 342V219V97L364 79C316 4 223 -9 166 48C146 67 134 92 125 125C119 148 119 159 119 215C119 284 123 306 140 341C168 399 231 429 290 413Z" horiz-adv-x="555.42" unicode="d"/>
+ <glyph d="M204 446C188 443 157 432 139 422C100 401 60 354 43 308C-13 157 84 -2 237 -11C313 -15 383 29 409 98C417 120 415 129 402 129C392 129 391 128 384 108C366 62 332 31 287 19C228 3 164 35 135 94C120 124 114 150 112 196L110 231H261C429 231 415 229 415 254C415 297 402 344 380 377C363 402 347 416 320 429C287 445 239 452 204 446ZM276 414C317 393 340 347 345 282L347 255H229H111L112 262C113 266 114 277 116 287C122 342 151 392 189 412C216 426 250 427 276 414Z" horiz-adv-x="444.336" unicode="e"/>
+ <glyph d="M398 447C378 442 357 432 340 418C327 408 325 407 320 411C309 419 272 435 256 439C173 456 84 406 64 329C53 286 65 239 95 207L106 196L95 178C71 140 68 95 86 59C92 48 100 35 106 31L116 22L95 12C70 0 46 -21 35 -43C24 -66 25 -98 37 -120C56 -154 103 -185 161 -200C188 -208 195 -208 248 -208C300 -208 308 -208 335 -200C393 -185 440 -154 458 -120C486 -68 457 10 398 40C358 60 318 66 222 66C163 66 153 67 142 72C120 82 107 104 107 134C107 152 117 182 123 179C141 169 173 156 186 153C239 142 297 158 335 196C376 234 390 280 377 329C372 349 359 375 349 383C346 386 343 390 343 391C343 396 370 413 386 418C395 421 409 425 418 426L434 428L428 420C420 410 419 400 426 388C431 377 439 373 451 373C456 373 463 374 466 376C474 380 481 394 481 404C481 416 471 435 460 443C448 451 421 453 398 447ZM256 410C270 403 287 388 294 375C311 342 311 250 294 217C269 171 200 161 162 199C141 220 133 254 136 309C138 361 148 386 173 403C196 419 230 421 256 410ZM311 2C362 -4 391 -19 406 -45C417 -65 417 -95 404 -117C389 -144 355 -166 309 -179C282 -187 214 -187 186 -179C140 -166 106 -144 91 -117C84 -103 82 -97 82 -79C82 -41 103 -11 139 0C152 4 165 5 221 5C258 5 299 4 311 2Z" horiz-adv-x="499.878" unicode="g"/>
+ <glyph d="M102 689C70 686 41 683 39 683S36 678 36 668V654L59 652C88 650 99 646 106 632C111 622 111 602 111 337C111 15 113 38 87 33C78 31 63 30 54 30H36V15V1H144H252V15V30H235C205 30 187 35 182 45C178 52 177 97 177 374V695H169C164 694 134 692 102 689Z" horiz-adv-x="277.71" unicode="l"/>
+ <glyph d="M100 436C69 433 41 430 38 430C34 430 33 427 33 415V401L58 399C88 397 99 393 106 379C110 369 111 355 111 211C111 30 112 38 87 33C78 31 63 30 52 30H33V15V1H146H258V15V30H239C208 30 190 35 185 45C178 57 178 271 185 302C191 330 204 357 223 377C263 422 335 431 365 396C386 372 386 371 387 204C388 31 389 38 364 33C355 31 340 30 329 30H310V15V1H423H536V15V30H516C485 30 467 35 462 45C455 57 455 271 462 302C468 330 481 357 500 377C541 422 612 431 642 396C663 372 663 371 664 204C665 31 666 38 641 33C632 31 617 30 606 30H587V15V1H700H813V15V30H793C765 30 744 35 739 43C737 48 735 88 734 198C733 341 732 348 726 364C713 400 691 422 657 434C635 441 593 444 568 439C528 432 484 399 464 363C456 350 454 349 453 353C438 399 418 420 380 434C358 441 316 444 291 439C250 431 205 398 184 359L174 341V392V442H166C161 442 132 439 100 436Z" horiz-adv-x="833.13" unicode="m"/>
+ <glyph d="M97 436C66 433 38 430 35 430C31 430 30 427 30 415V401L55 399C85 397 96 393 103 379C107 369 108 355 108 211C108 30 109 38 84 33C75 31 60 30 49 30H30V15V1H143H255V15V30H236C205 30 187 35 182 45C175 57 175 271 182 302C188 330 201 357 220 377C260 422 332 431 362 396C383 372 383 371 384 204C385 31 386 38 361 33C352 31 337 30 326 30H307V15V1H420H532V15V30H513C485 30 464 35 459 43C457 48 455 88 454 198C453 341 452 348 446 364C428 413 392 438 333 441C300 443 275 439 248 425C222 411 194 384 181 359L171 341V392V442H163C158 442 129 439 97 436Z" horiz-adv-x="555.42" unicode="n"/>
+ <glyph d="M205 444C97 419 21 316 28 201C30 164 35 143 53 109C111 -8 260 -47 370 25C412 53 449 105 462 155C470 184 471 226 465 257C444 366 359 444 255 447C235 448 217 447 205 444ZM295 415C343 396 374 352 382 289C386 256 386 180 381 149C371 87 348 50 305 28C248 0 177 18 142 71C118 108 109 156 112 242C114 301 117 320 133 352C149 385 182 412 218 421C237 426 276 423 295 415Z" horiz-adv-x="499.878" unicode="o"/>
+ <glyph d="M93 436C62 433 35 430 32 430C28 430 27 427 27 415V401L52 399C82 397 93 393 100 379C104 369 105 355 105 211C105 30 106 38 81 33C72 31 57 30 46 30H27V15V1H147H268V15V29L232 30C193 32 181 36 175 48C169 59 170 248 176 285C189 365 225 412 279 417C296 419 296 419 289 413C285 411 280 404 278 398C270 379 274 361 290 346C297 339 301 338 317 338S337 339 344 346C367 367 366 398 341 421C324 437 313 441 286 441C263 441 258 440 240 431C214 418 193 395 177 363L165 338V390V442H157C152 442 123 439 93 436Z" horiz-adv-x="391.571" unicode="r"/>
+ <glyph d="M148 445C111 439 76 420 59 399C54 393 47 380 42 371C31 347 31 307 41 284C51 263 66 246 87 232C112 215 132 208 190 197C245 185 265 178 284 160C306 138 313 112 307 80C300 47 275 24 236 16C146 -2 90 37 65 138C58 166 57 167 49 168C44 168 38 167 36 164C33 161 33 137 33 74L34 -10L42 -11C48 -12 53 -8 68 10L88 33L99 22C127 -2 165 -14 213 -11C248 -8 276 0 299 14C321 28 331 39 343 63C369 114 360 174 321 215C291 247 269 257 194 272C137 284 117 292 99 309C79 329 76 357 90 385C102 409 133 424 179 426C255 431 298 395 306 319L308 299H320H332V373V447L325 448C320 448 314 445 302 433L287 418L275 426C254 440 233 446 197 447C179 447 156 447 148 445Z" horiz-adv-x="394.348" unicode="s"/>
+ <glyph d="M142 581C133 493 90 433 32 425C18 423 18 423 18 412V400H60H102V251C102 164 103 96 105 87C114 37 149 1 198 -8C257 -21 300 3 322 64C327 79 329 91 330 131L331 180H318H304L303 133C301 81 298 64 283 41C264 11 224 6 198 31C173 55 171 68 171 249V400H242H313V415V430H242H171V522V614H158H145Z" horiz-adv-x="388.794" unicode="t"/>
+ <glyph d="M100 436C67 433 38 430 35 430C31 430 30 427 30 415V400H48C75 399 93 394 100 384C106 376 106 372 108 229C110 84 110 82 116 65C131 29 155 8 193 -3C211 -9 222 -10 254 -10C292 -10 294 -10 313 0C338 10 360 30 376 55L388 73V30C388 7 389 -12 390 -11C391 -11 423 -9 460 -6C497 -2 529 0 530 0S532 6 532 14V29L507 30C477 32 466 37 459 51C455 60 454 76 454 252C454 356 454 442 453 442C453 442 421 439 382 436S310 430 309 430S307 424 307 415V401L332 399C362 397 373 393 380 379C384 369 385 357 385 255C385 129 383 115 366 79C353 53 333 33 310 21C295 14 290 13 261 13S228 14 212 22C192 32 185 42 180 69C178 78 177 155 177 263V442H169C164 442 134 439 100 436Z" horiz-adv-x="555.42" unicode="u"/>
+ <glyph d="M18 414V400H35C71 400 86 392 96 367C100 359 135 274 175 176L247 0L228 -45C203 -108 188 -136 170 -154C147 -178 125 -186 98 -182C91 -181 81 -177 75 -174L65 -168L78 -161C95 -153 103 -139 101 -119C98 -83 54 -69 28 -96C20 -104 19 -107 19 -125C19 -149 26 -164 44 -181S81 -206 109 -206C131 -206 136 -205 154 -196C178 -184 204 -158 221 -126C228 -113 275 -3 325 118C375 241 419 347 423 354C437 379 461 395 491 399L505 401V415V429H424H343V415C343 401 343 401 356 398C374 393 385 380 387 362C388 348 384 337 336 219C308 148 283 91 282 92C279 95 172 358 169 368C168 372 169 378 170 382C172 390 193 400 210 400H222V414V429H120H18Z" horiz-adv-x="527.649" unicode="y"/>
+ </font>
+ <font horiz-adv-x="0" id="ecsl1000">
+ <font-face font-family="ecsl1000" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M246 443C191 432 151 404 133 366C119 335 127 307 152 298C184 287 219 314 219 349C219 361 218 366 210 374C205 379 197 385 192 387L182 390L194 398C210 409 249 421 277 423C310 426 331 419 350 399C376 373 382 338 372 284L368 263L350 261C340 260 318 257 300 256C250 250 203 237 163 218C134 204 125 197 105 178C75 148 60 119 57 87C56 68 57 64 64 49C82 13 124 -7 185 -11C220 -13 243 -8 273 6C294 17 323 42 337 61L346 73V62C346 33 364 4 387 -3C413 -11 453 1 475 25C492 44 501 64 507 99C509 115 512 131 513 136C515 144 515 144 501 144C486 144 488 148 480 99C477 83 472 63 468 55C456 29 432 19 417 34C403 47 404 55 425 186C449 324 450 340 435 370C418 405 378 434 335 444C309 449 272 449 246 443ZM364 237C364 236 359 208 353 175C341 101 334 84 305 55C273 23 227 6 190 14C167 19 152 30 142 50C135 64 134 69 136 85C141 148 193 201 271 223C302 232 364 241 364 237Z" horiz-adv-x="499.878" unicode="a"/>
+ <glyph d="M480 689C446 686 417 683 416 682C416 682 414 675 413 667L411 654L435 652C449 651 463 649 468 646C484 639 484 635 464 510C453 447 444 393 443 389C442 383 440 384 426 399C385 442 325 454 255 430C210 415 186 400 149 362C105 318 81 277 70 225C56 152 74 85 120 39C186 -27 286 -28 365 35L384 50L379 19C376 3 374 -10 374 -11C375 -12 521 0 522 0C523 1 524 7 525 15L527 30H510C487 30 467 35 462 43C459 46 457 53 457 59C457 64 480 207 508 376C537 545 560 686 560 689C560 696 565 696 480 689ZM365 412C389 404 410 386 423 362L433 344L412 222L392 100L381 84C337 24 260 -2 206 21C153 46 135 107 153 210C163 272 175 307 197 340C237 401 306 430 365 412Z" horiz-adv-x="555.42" unicode="d"/>
+ <glyph d="M266 444C223 434 184 413 150 380C112 343 85 300 70 250C63 227 62 219 62 182C62 144 62 137 70 115C91 52 143 5 206 -7C294 -26 384 18 429 103C436 117 437 120 433 124C431 127 425 129 421 129C414 129 411 127 405 115C381 67 338 32 289 19C239 6 187 25 163 66C150 88 144 107 142 138C140 160 144 204 149 225L151 231H301H451L455 238C457 243 458 260 459 289C459 326 458 335 452 354C439 395 409 425 367 439C342 448 292 450 266 444ZM347 414C366 403 376 391 384 369C393 344 395 316 393 281L390 255H273C209 255 156 256 156 257C156 263 166 296 173 313C194 366 240 410 283 421C301 426 333 422 347 414Z" horiz-adv-x="444.336" unicode="e"/>
+ <glyph d="M212 689C178 686 149 683 148 682C148 682 147 675 146 668L143 654L168 652C196 650 208 645 212 634C216 621 122 53 113 43C107 35 86 30 58 30C40 30 39 30 38 20C33 0 24 1 146 1C245 1 255 1 255 6C255 9 256 15 257 20L259 29L231 30C215 31 201 33 198 34C184 39 184 35 239 367C268 541 292 686 292 689C292 696 297 696 212 689Z" horiz-adv-x="277.71" unicode="l"/>
+ <glyph d="M167 436C132 433 104 430 103 429C102 429 101 422 100 415L98 401L122 399C136 398 150 396 155 394C172 386 172 385 143 214C129 127 115 52 113 48C108 36 95 32 64 30C48 29 36 28 36 27C35 26 34 20 33 13L31 1H143H255L257 12C258 17 258 24 258 25C258 27 248 29 231 30C215 31 201 33 198 34C185 39 185 47 205 167C216 230 228 289 231 299C252 358 305 406 361 416C414 425 439 405 439 352C439 325 397 62 390 48C385 36 372 32 341 30C325 29 313 28 313 27C312 26 311 20 310 13L308 1H420H532L534 12C535 17 535 24 535 25C535 27 525 29 508 30C492 31 478 33 475 34C462 39 462 45 486 187C505 299 509 327 508 347C505 407 470 438 403 441C368 443 342 438 312 422C288 409 252 377 237 355C230 345 228 343 230 349C233 364 243 429 243 436S251 443 167 436Z" horiz-adv-x="555.42" unicode="n"/>
+ <glyph d="M227 446C144 435 87 378 87 309C87 290 88 284 96 268C115 231 147 213 224 196C291 182 306 174 320 146C329 127 330 112 322 86C307 40 261 12 198 12C130 11 95 52 88 136C87 150 85 162 83 164C80 169 64 169 62 166C58 160 32 -3 34 -7C38 -17 49 -12 72 10L94 32L110 18C135 -5 152 -10 201 -10C237 -10 245 -8 266 -2C326 17 365 60 378 121C386 160 377 193 350 222C326 248 303 259 240 272C186 283 165 291 152 306C137 325 135 345 147 371C162 405 207 427 263 427C301 427 330 415 345 393C355 378 362 348 360 325C359 313 359 304 361 302C365 297 381 296 383 300C386 305 406 431 405 439C404 452 394 450 375 435C358 421 351 418 347 424C344 430 318 441 301 445C286 448 246 449 227 446Z" horiz-adv-x="394.348" unicode="s"/>
+ <glyph d="M240 587C218 498 163 432 102 425C89 423 87 422 87 416C87 413 86 407 85 405C83 401 88 400 126 400C149 400 168 399 168 398S157 331 144 252C116 86 115 71 130 41C147 6 178 -9 225 -10C251 -10 256 -9 271 -2C300 12 330 49 343 88C346 98 351 119 353 135C356 151 359 167 360 172C361 180 361 180 348 180C340 180 334 180 334 179S330 159 326 136C311 53 276 9 230 16C214 18 204 26 196 42C184 66 186 85 213 250L238 400H309H379L380 407C381 410 382 417 383 422L385 430H314C275 430 243 431 243 432C243 434 270 595 272 606C274 614 274 614 261 614H247Z" horiz-adv-x="388.794" unicode="t"/>
+ </font>
+ <font horiz-adv-x="0" id="ecss1000">
+ <font-face font-family="ecss1000" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M194 461C176 459 142 450 125 443C101 433 75 418 75 414C75 405 81 354 82 353S88 355 95 359C134 386 177 400 224 401C259 401 271 397 291 374C311 352 316 333 318 287L319 247L285 245C184 239 107 213 71 174C49 151 43 133 46 103C50 50 82 4 124 -7C167 -20 255 -4 305 25L322 35V17V0H359H397V157C397 330 396 334 378 373C366 398 331 435 307 446C275 461 236 466 194 461ZM319 152C319 120 317 110 313 100C293 56 205 36 151 64C137 71 121 91 118 103C113 129 125 148 153 162C186 179 246 191 294 192H319Z" horiz-adv-x="480.438" unicode="a"/>
+ <glyph d="M196 459C137 445 80 394 54 331C38 293 34 273 34 227C34 176 39 156 60 111C73 84 79 76 103 52C133 22 156 7 191 -2C250 -21 329 -9 388 26L408 38L407 53C407 61 406 76 405 86L403 104L381 91C328 56 259 42 214 56C188 64 172 75 151 97C125 125 110 159 103 205L102 219H257H412V235C412 277 399 339 385 368C355 427 305 460 242 462C226 463 207 461 196 459ZM284 388C306 377 324 359 336 335C344 320 355 286 355 278C355 277 299 277 231 277H107L110 283C127 341 162 382 205 396C226 403 261 399 284 388Z" horiz-adv-x="444.336" unicode="e"/>
+ <glyph d="M223 729C181 718 142 684 120 641C102 604 99 584 99 509V445H61H24V415V385H61H99V192V0H137H174V192V385H228H283V415V445H227H171L172 529C173 604 173 613 178 624C198 664 248 680 305 665C318 662 332 658 336 657C343 655 343 655 343 689V722L330 725C294 735 250 737 223 729Z" horiz-adv-x="305.481" unicode="f"/>
+ <glyph d="M72 638V593H117H162V638V683H117H72ZM81 222V0H118H156V222V445H118H81Z" horiz-adv-x="238.831" unicode="i"/>
+ <glyph d="M257 452C227 445 202 431 176 406L153 383V417V451H117H81V225V0H120H159L160 145C161 266 162 293 166 306C183 361 210 390 250 393C286 397 324 383 338 361C354 337 355 328 355 157V0H394H433V163C433 339 432 357 417 389C397 433 353 458 295 457C284 457 267 455 257 452Z" horiz-adv-x="516.541" unicode="n"/>
+ <glyph d="M274 451C231 440 195 417 167 383L152 364L151 408L150 451H115H81V225V0H118H156L157 127L158 254L166 274C183 318 209 350 245 369C264 379 295 388 312 388H322V423V457H309C302 457 286 454 274 451Z" horiz-adv-x="341.583" unicode="r"/>
+ <glyph d="M151 460C96 450 58 423 41 380C36 366 34 356 34 332C34 306 35 300 42 285C58 252 95 220 133 208C143 204 169 198 191 194C248 182 268 171 280 146C295 113 280 78 246 62C232 56 226 55 191 55C160 56 146 57 126 62C99 70 63 85 48 96L39 102L36 86C33 70 27 35 27 34C27 31 64 14 87 6C125 -6 150 -10 197 -10C229 -10 243 -9 257 -4C312 11 345 46 355 98C364 145 350 188 315 222C287 248 263 259 201 272C173 277 146 285 139 288C95 310 94 370 137 391C150 398 155 398 197 398C247 398 270 394 309 376C323 370 329 368 331 370C332 372 335 384 337 397C339 409 341 422 342 426C343 431 340 433 323 440C287 455 257 460 210 462C186 462 160 462 151 460Z" horiz-adv-x="383.24" unicode="s"/>
+ </font>
+ <font horiz-adv-x="0" id="ecti1000">
+ <font-face font-family="ecti1000" units-per-em="1000"/>
+ <missing-glyph d=""/>
+ <glyph d="M301 437C265 428 233 407 200 372C140 311 105 225 105 143C105 88 119 49 150 19C175 -3 190 -10 224 -10C250 -10 253 -9 274 0C290 8 305 19 322 35C342 54 346 56 348 52C359 15 385 -7 419 -11C470 -16 501 22 526 120C534 148 532 153 517 153C506 153 502 147 492 107C481 66 463 28 448 18C420 0 400 21 404 64C406 74 424 153 445 238C467 324 484 396 484 399C484 401 480 407 476 412C459 429 430 420 421 395L416 382L409 396C389 434 348 450 301 437ZM357 412C376 403 388 386 397 350L403 327L376 219C361 159 347 107 344 102C337 88 307 53 292 41C218 -19 162 20 174 126C179 165 208 277 220 307C257 391 311 433 357 412Z" horiz-adv-x="510.986" unicode="a"/>
+ <glyph d="M472 689C440 685 412 681 410 679C407 677 406 672 407 665L408 654L436 653C469 650 478 647 478 637C478 633 465 575 448 506L417 382L409 397C371 462 286 455 208 381C144 320 105 229 105 143C105 88 119 49 150 19C175 -3 190 -10 224 -10C250 -10 253 -9 274 0C290 8 305 19 322 35C342 54 346 56 348 52C359 15 385 -7 419 -11C470 -16 501 22 526 120C534 148 532 153 517 153C506 153 502 147 492 107C481 66 463 28 448 18C420 0 400 21 404 64C406 74 440 218 482 383C534 591 556 686 554 689C550 695 539 695 472 689ZM357 412C376 403 388 386 397 350L403 327L376 219C361 159 347 107 344 102C337 88 307 53 292 41C218 -19 162 20 174 126C179 165 208 277 220 307C257 391 311 433 357 412Z" horiz-adv-x="510.986" unicode="d"/>
+ <glyph d="M325 439C274 428 227 402 188 360C137 307 114 252 112 174C110 139 111 129 117 108C137 26 190 -15 266 -11C300 -8 326 -2 357 12C390 27 413 43 438 69C466 98 468 102 460 112C457 116 452 120 450 120S439 111 430 101C393 57 345 27 292 16C251 7 228 12 208 31C178 61 172 124 191 208L196 228H214C246 228 313 234 336 239C400 252 440 283 455 328C461 350 462 361 456 381C445 417 410 440 364 441C350 441 332 441 325 439ZM381 415C409 408 427 378 423 348C414 291 367 263 262 255C238 253 214 252 210 253L201 254L211 283C225 323 241 350 264 373C302 410 342 424 381 415Z" horiz-adv-x="459.888" unicode="e"/>
+ <glyph d="M219 689C187 685 159 681 157 679C154 677 153 672 154 665L155 654L183 653C217 650 225 647 225 636C225 632 191 491 149 322C106 153 72 12 72 10C72 1 89 -12 99 -12C113 -12 128 -2 134 9C136 15 153 79 171 153C192 234 207 292 212 302C236 350 271 389 302 404C323 414 352 420 367 417C392 412 405 384 402 341C400 309 381 236 356 167C345 135 334 101 332 91C312 10 393 -42 458 8C486 30 512 73 527 122C534 147 532 153 517 153C506 153 503 149 496 123C478 57 442 12 407 12C391 12 385 20 385 41C385 61 391 82 419 164C430 195 444 239 451 261C460 297 462 306 462 337C462 367 461 374 455 387C446 406 426 425 407 434C386 444 337 443 309 434C287 426 261 409 241 390C234 383 228 379 228 380S245 450 266 534C307 699 307 695 287 695C282 695 252 692 219 689Z" horiz-adv-x="510.986" unicode="h"/>
+ <glyph d="M272 655C259 649 244 631 242 618C239 604 246 589 259 582C280 571 308 585 319 610C325 622 325 625 322 635C316 656 294 664 272 655ZM183 438C142 424 105 374 86 309C79 283 81 277 96 277C107 277 109 279 118 311C140 382 170 418 207 418C218 418 222 414 225 402C231 378 226 363 167 201C132 108 128 95 127 73C126 53 126 46 132 33C140 15 160 -3 177 -8C234 -25 291 24 320 118C329 147 328 153 313 153C302 153 298 149 291 123C282 89 260 46 245 31C228 14 203 7 189 15C181 19 179 39 184 64C187 76 209 142 234 210C285 348 288 361 278 390C265 430 222 452 183 438Z" horiz-adv-x="306.592" unicode="i"/>
+ <glyph d="M158 437C133 425 115 399 100 355C85 313 79 286 84 281C88 276 103 275 107 280C109 282 113 295 117 308C136 382 154 414 179 417C202 420 212 400 207 358C205 346 186 263 163 174C141 84 124 8 125 5C127 -2 141 -12 151 -12C164 -12 180 -1 185 10C187 15 204 80 222 154C259 300 262 309 297 354C328 395 365 416 407 416C430 417 431 416 441 406C453 392 459 368 456 337C455 325 437 247 416 164C396 82 379 12 379 10C379 1 396 -12 407 -12C420 -12 436 -1 441 10C443 16 460 80 478 153C499 235 514 292 519 301C544 350 578 389 609 404C630 414 659 420 674 417C699 412 712 384 709 341C707 309 688 236 663 167C630 73 629 55 648 23C665 -4 702 -18 733 -9C774 3 813 54 834 122C841 147 839 153 825 153C814 153 810 149 803 123C785 57 749 12 714 12C698 12 692 20 692 41C692 61 698 82 727 164C738 195 752 239 758 261C767 297 769 306 769 337C769 367 768 374 762 387C753 406 734 425 714 434C693 444 644 443 616 434C584 423 553 398 526 364L518 354L516 363C511 385 503 399 489 414C439 464 339 446 281 376L268 361L266 371C261 398 243 422 221 434C203 443 173 444 158 437Z" horiz-adv-x="817.578" unicode="m"/>
+ <glyph d="M158 437C133 425 115 399 100 355C85 313 79 286 84 281C88 276 103 275 107 280C109 282 113 295 117 308C136 382 154 414 179 417C202 420 213 398 207 359C203 333 85 -140 79 -150C74 -160 60 -165 35 -165C19 -165 17 -166 14 -172C12 -176 12 -183 13 -187L14 -194H115H216L220 -185C226 -170 221 -167 186 -165C164 -163 154 -162 151 -158C146 -153 147 -146 168 -63C180 -14 191 30 193 35L196 45L202 35C211 20 228 3 242 -4C260 -13 301 -13 327 -2C400 27 461 97 490 185C528 297 505 396 433 431C416 440 411 441 388 441C364 441 360 440 338 429C322 421 308 410 291 395C278 382 267 373 267 373C266 374 264 380 261 387C256 404 237 425 221 434C203 443 173 444 158 437ZM404 414C418 408 428 393 435 372C439 357 440 346 438 317C436 257 402 134 376 88C352 48 317 17 290 13C251 7 221 37 212 93C210 101 217 132 237 213C263 315 265 323 277 340C316 398 369 429 404 414Z" horiz-adv-x="510.986" unicode="p"/>
+ <glyph d="M272 439C215 427 167 378 154 316C149 289 152 269 164 246C180 217 199 206 255 193C299 183 316 174 327 153C344 120 328 67 290 38C266 20 242 13 203 13C162 13 141 20 121 40C108 54 102 66 110 66C113 66 121 69 128 72C150 83 163 114 153 132C146 146 119 151 102 143C72 127 63 85 81 48C102 6 149 -14 214 -11C286 -7 342 26 371 85C399 141 396 189 363 228C347 245 316 260 274 269C233 278 222 284 213 303C196 337 221 391 262 409C275 415 283 416 307 416C333 417 337 416 351 408C367 399 376 389 380 377C382 371 381 370 373 368C368 367 359 361 353 355C345 345 343 340 343 329S344 315 352 308C369 294 394 301 407 325C416 340 416 373 407 389C398 407 380 423 360 432C345 438 336 440 314 441C299 441 280 440 272 439Z" horiz-adv-x="408.789" unicode="s"/>
+ <glyph d="M234 438C214 431 196 418 181 401C163 382 145 346 143 331C143 320 143 320 155 319C168 318 168 319 174 331C186 360 213 377 248 377C267 377 272 376 300 363C318 355 340 346 350 344L368 340L257 229C145 118 110 78 77 28C57 -2 56 -10 72 -11C83 -12 84 -11 98 9C130 56 162 73 188 57C193 54 203 45 209 37C242 -4 256 -13 284 -11C342 -6 399 47 424 122C432 145 430 150 415 150C405 150 402 149 400 142C382 99 363 77 331 62C314 54 308 52 289 52C269 52 263 54 242 64C208 80 187 87 170 87H156L162 96C166 101 219 156 281 217C363 299 399 338 417 361C445 399 464 430 463 436C462 439 457 441 449 442C437 442 437 442 426 423C408 393 395 377 384 372C363 362 346 368 326 393C289 440 268 450 234 438Z" horiz-adv-x="408.789" unicode="z"/>
+ </font>
+ </defs>
+ <style type="text/css">text.f1 {font-family:cmex10;font-size:10}
+text.f2 {font-family:cmmi10;font-size:10}
+text.f3 {font-family:cmmi7;font-size:7}
+text.f4 {font-family:cmr10;font-size:10}
+text.f5 {font-family:cmr7;font-size:7}
+text.f6 {font-family:cmsy10;font-size:10}
+text.f7 {font-family:cmsy7;font-size:7}
+text.f8 {font-family:ecbx1000;font-size:10}
+text.f9 {font-family:eccc1000;font-size:10}
+text.f10 {font-family:ecrm1000;font-size:10}
+text.f11 {font-family:ecsl1000;font-size:10}
+text.f12 {font-family:ecss1000;font-size:10}
+text.f13 {font-family:ecti1000;font-size:10}
+</style>
+ <g id="page1" transform="matrix(0.996 0 0 0.996 0 0)">
+ <text class="f10" x="77" y="63">Color<tspan x="104.243">test:</tspan>
+<tspan fill="#ff0000" x="127.627">red,</tspan>
+<tspan fill="#0000ff" x="147.649">blue,</tspan>
+<tspan fill="#ff00ff" x="172.088">magen</tspan>
+<tspan fill="#ff00ff" x="200.137">ta</tspan>
+</text>
+ <text class="f1" x="164.374" y="78.8467">&#x345A;</text>
+ <text class="f3" x="174.374" y="81.3189">x</text>
+ <text class="f5" x="169.929" y="101.569">0</text>
+ <text class="f4" x="181.075" y="92.4579">cos</text>
+ <text class="f2" x="196.131" y="92.4579">t</text>
+ <text class="f10" x="201.408" y="92.4579">d</text>
+ <text class="f2" x="206.962" y="92.4579">t</text>
+ <text class="f4" x="213.351" y="92.4579">=</text>
+ <text class="f7" x="227.193" y="79.9579">&#x221E;</text>
+ <text class="f1" x="223.957" y="82.9578">&#x3458;</text>
+ <text class="f3" x="223.907" y="104.486">k</text>
+ <text class="f5" x="228.327" y="104.486">=0</text>
+ <text class="f4" x="238.452" y="92.4579">(</text>
+ <text class="f6" x="242.341" y="92.4579">&#x3400;</text>
+ <text class="f4" x="250.119" y="92.4579">1)</text>
+ <text class="f3" x="259.008" y="88.329">k</text>
+ <text class="f2" x="271.904" y="85.6928">x</text>
+ <text class="f5" x="277.619" y="82.0639">2</text>
+ <text class="f3" x="281.605" y="82.0639">k</text>
+ <text class="f5" x="286.025" y="82.0639">+1</text>
+ <rect height="0.399979" width="38.2986" x="265.128" y="89.7579"/>
+ <text class="f4" x="265.128" y="99.3174">(2</text>
+ <text class="f2" x="274.017" y="99.3174">k</text>
+ <text class="f4" x="281.76" y="99.3174">+<tspan x="291.76">1)!</tspan>
+</text>
+ <text class="f10" x="77" y="123.706">F<tspan x="82.6931">on</tspan>
+<tspan x="92.9683">t</tspan>
+<tspan x="100.189">st</tspan>
+<tspan x="107.742">yles:</tspan>
+</text>
+ <text class="f8" x="131.403" y="123.706">b<tspan x="138.11">old</tspan>
+</text>
+ <text class="f10" x="153.44" y="123.706">,</text>
+ <text class="f13" x="159.549" y="123.706">emphasize<tspan x="202.983">d</tspan>
+</text>
+ <text class="f10" x="208.093" y="123.706">,</text>
+ <text class="f12" x="214.203" y="123.706">sans<tspan x="235.17">serif</tspan>
+</text>
+ <text class="f10" x="252.304" y="123.706">,</text>
+ <text class="f9" x="258.414" y="123.706">Small<tspan x="292.161">Caps</tspan>
+</text>
+ <text class="f10" x="316.305" y="123.706">,</text>
+ <text class="f11" x="322.415" y="123.706">slan<tspan x="339.411">ted</tspan>
+</text>
+ <text class="f10" x="232.001" y="633">1</text>
+ </g>
+</svg>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample.sfd b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample.sfd
new file mode 100644
index 00000000000..e7c84c7b5e1
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample.sfd
@@ -0,0 +1,293 @@
+00 0x0000_0x00FF
+01 0x3000 0x3001 0x3002 0x00B7 0x02C9 0x02C7 0x00A8 0x3003 \
+ 0x3005 0x2014 0xFF5E 0x2016 0x2026 0x2018 0x2019 0x201C \
+ 0x201D 0x3014 0x3015 0x3008 0x3009 0x300A 0x300B 0x300C \
+ 0x300D 0x300E 0x300F 0x3016 0x3017 0x3010 0x3011 0x00B1 \
+ 0x00D7 0x00F7 0x2236 0x2227 0x2228 0x2211 0x220F 0x222A \
+ 0x2229 0x2208 0x2237 0x221A 0x22A5 0x2225 0x2220 0x2312 \
+ 0x2299 0x222B 0x222E 0x2261 0x224C 0x2248 0x223D 0x221D \
+ 0x2260 0x226E 0x226F 0x2264 0x2265 0x221E 0x2235 0x2234 \
+ 0x2642 0x2640 0x00B0 0x2032 0x2033 0x2103 0xFF04 0x00A4 \
+ 0xFFE0 0xFFE1 0x2030 0x00A7 0x2116 0x2606 0x2605 0x25CB \
+ 0x25CF 0x25CE 0x25C7 0x25C6 0x25A1 0x25A0 0x25B3 0x25B2 \
+ 0x203B 0x2192 0x2190 0x2191 0x2193 0x3013 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0x2488 0x2489 \
+ 0x248A 0x248B 0x248C 0x248D 0x248E 0x248F 0x2490 0x2491 \
+ 0x2492 0x2493 0x2494 0x2495 0x2496 0x2497 0x2498 0x2499 \
+ 0x249A 0x249B 0x2474 0x2475 0x2476 0x2477 0x2478 0x2479 \
+ 0x247A 0x247B 0x247C 0x247D 0x247E 0x247F 0x2480 0x2481 \
+ 0x2482 0x2483 0x2484 0x2485 0x2486 0x2487 0x2460 0x2461 \
+ 0x2462 0x2463 0x2464 0x2465 0x2466 0x2467 0x2468 0x2469 \
+ 0xFFFE 0xFFFE 0x3220 0x3221 0x3222 0x3223 0x3224 0x3225 \
+ 0x3226 0x3227 0x3228 0x3229 0xFFFE 0xFFFE 0x2160 0x2161 \
+ 0x2162 0x2163 0x2164 0x2165 0x2166 0x2167 0x2168 0x2169 \
+ 0x216A 0x216B 0xFFFE 0xFFFE 0xFF01 0xFF02 0xFF03 0xFFE5 \
+ 0xFF05 0xFF06 0xFF07 0xFF08 0xFF09 0xFF0A 0xFF0B 0xFF0C \
+ 0xFF0D 0xFF0E 0xFF0F 0xFF10 0xFF11 0xFF12 0xFF13 0xFF14 \
+ 0xFF15 0xFF16 0xFF17 0xFF18 0xFF19 0xFF1A 0xFF1B 0xFF1C \
+ 0xFF1D 0xFF1E 0xFF1F 0xFF20 0xFF21 0xFF22 0xFF23 0xFF24 \
+ 0xFF25 0xFF26 0xFF27 0xFF28 0xFF29 0xFF2A 0xFF2B 0xFF2C \
+ 0xFF2D 0xFF2E 0xFF2F 0xFF30 0xFF31 0xFF32 0xFF33 0xFF34 \
+ 0xFF35 0xFF36 0xFF37 0xFF38 0xFF39 0xFF3A 0xFF3B 0xFF3C \
+ 0xFF3D 0xFF3E 0xFF3F 0xFF40 0xFF41 0xFF42 0xFF43 0xFF44
+02 0xFF45 0xFF46 0xFF47 0xFF48 0xFF49 0xFF4A 0xFF4B 0xFF4C \
+ 0xFF4D 0xFF4E 0xFF4F 0xFF50 0xFF51 0xFF52 0xFF53 0xFF54 \
+ 0xFF55 0xFF56 0xFF57 0xFF58 0xFF59 0xFF5A 0xFF5B 0xFF5C \
+ 0xFF5D 0xFFE3 0x3041 0x3042 0x3043 0x3044 0x3045 0x3046 \
+ 0x3047 0x3048 0x3049 0x304A 0x304B 0x304C 0x304D 0x304E \
+ 0x304F 0x3050 0x3051 0x3052 0x3053 0x3054 0x3055 0x3056 \
+ 0x3057 0x3058 0x3059 0x305A 0x305B 0x305C 0x305D 0x305E \
+ 0x305F 0x3060 0x3061 0x3062 0x3063 0x3064 0x3065 0x3066 \
+ 0x3067 0x3068 0x3069 0x306A 0x306B 0x306C 0x306D 0x306E \
+ 0x306F 0x3070 0x3071 0x3072 0x3073 0x3074 0x3075 0x3076 \
+ 0x3077 0x3078 0x3079 0x307A 0x307B 0x307C 0x307D 0x307E \
+ 0x307F 0x3080 0x3081 0x3082 0x3083 0x3084 0x3085 0x3086 \
+ 0x3087 0x3088 0x3089 0x308A 0x308B 0x308C 0x308D 0x308E \
+ 0x308F 0x3090 0x3091 0x3092 0x3093 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0x30A1 0x30A2 0x30A3 0x30A4 0x30A5 0x30A6 0x30A7 0x30A8 \
+ 0x30A9 0x30AA 0x30AB 0x30AC 0x30AD 0x30AE 0x30AF 0x30B0 \
+ 0x30B1 0x30B2 0x30B3 0x30B4 0x30B5 0x30B6 0x30B7 0x30B8 \
+ 0x30B9 0x30BA 0x30BB 0x30BC 0x30BD 0x30BE 0x30BF 0x30C0 \
+ 0x30C1 0x30C2 0x30C3 0x30C4 0x30C5 0x30C6 0x30C7 0x30C8 \
+ 0x30C9 0x30CA 0x30CB 0x30CC 0x30CD 0x30CE 0x30CF 0x30D0 \
+ 0x30D1 0x30D2 0x30D3 0x30D4 0x30D5 0x30D6 0x30D7 0x30D8 \
+ 0x30D9 0x30DA 0x30DB 0x30DC 0x30DD 0x30DE 0x30DF 0x30E0 \
+ 0x30E1 0x30E2 0x30E3 0x30E4 0x30E5 0x30E6 0x30E7 0x30E8 \
+ 0x30E9 0x30EA 0x30EB 0x30EC 0x30ED 0x30EE 0x30EF 0x30F0 \
+ 0x30F1 0x30F2 0x30F3 0x30F4 0x30F5 0x30F6 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0x0391 0x0392 \
+ 0x0393 0x0394 0x0395 0x0396 0x0397 0x0398 0x0399 0x039A \
+ 0x039B 0x039C 0x039D 0x039E 0x039F 0x03A0 0x03A1 0x03A3 \
+ 0x03A4 0x03A5 0x03A6 0x03A7 0x03A8 0x03A9 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0x03B1 0x03B2 \
+ 0x03B3 0x03B4 0x03B5 0x03B6 0x03B7 0x03B8 0x03B9 0x03BA
+03 0x03BB 0x03BC 0x03BD 0x03BE 0x03BF 0x03C0 0x03C1 0x03C3 \
+ 0x03C4 0x03C5 0x03C6 0x03C7 0x03C8 0x03C9 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0x0410 0x0411 0x0412 0x0413 \
+ 0x0414 0x0415 0x0401 0x0416 0x0417 0x0418 0x0419 0x041A \
+ 0x041B 0x041C 0x041D 0x041E 0x041F 0x0420 0x0421 0x0422 \
+ 0x0423 0x0424 0x0425 0x0426 0x0427 0x0428 0x0429 0x042A \
+ 0x042B 0x042C 0x042D 0x042E 0x042F 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0x0430 0x0431 0x0432 0x0433 \
+ 0x0434 0x0435 0x0451 0x0436 0x0437 0x0438 0x0439 0x043A \
+ 0x043B 0x043C 0x043D 0x043E 0x043F 0x0440 0x0441 0x0442 \
+ 0x0443 0x0444 0x0445 0x0446 0x0447 0x0448 0x0449 0x044A \
+ 0x044B 0x044C 0x044D 0x044E 0x044F 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0x0101 0x00E1 0x01CE 0x00E0 0x0113 0x00E9 \
+ 0x011B 0x00E8 0x012B 0x00ED 0x01D0 0x00EC 0x014D 0x00F3 \
+ 0x01D2 0x00F2 0x016B 0x00FA 0x01D4 0x00F9 0x01D6 0x01D8 \
+ 0x01DA 0x01DC 0x00FC 0x00EA 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0x3105 0x3106 \
+ 0x3107 0x3108 0x3109 0x310A 0x310B 0x310C 0x310D 0x310E \
+ 0x310F 0x3110 0x3111 0x3112 0x3113 0x3114 0x3115 0x3116 \
+ 0x3117 0x3118 0x3119 0x311A 0x311B 0x311C 0x311D 0x311E \
+ 0x311F 0x3120 0x3121 0x3122 0x3123 0x3124 0x3125 0x3126 \
+ 0x3127 0x3128 0x3129 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0x2500 0x2501 0x2502 0x2503 0x2504 \
+ 0x2505 0x2506 0x2507 0x2508 0x2509 0x250A 0x250B 0x250C
+04 0x250D 0x250E 0x250F 0x2510 0x2511 0x2512 0x2513 0x2514 \
+ 0x2515 0x2516 0x2517 0x2518 0x2519 0x251A 0x251B 0x251C \
+ 0x251D 0x251E 0x251F 0x2520 0x2521 0x2522 0x2523 0x2524 \
+ 0x2525 0x2526 0x2527 0x2528 0x2529 0x252A 0x252B 0x252C \
+ 0x252D 0x252E 0x252F 0x2530 0x2531 0x2532 0x2533 0x2534 \
+ 0x2535 0x2536 0x2537 0x2538 0x2539 0x253A 0x253B 0x253C \
+ 0x253D 0x253E 0x253F 0x2540 0x2541 0x2542 0x2543 0x2544 \
+ 0x2545 0x2546 0x2547 0x2548 0x2549 0x254A 0x254B 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE
+05 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE
+06 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
+ 0xFFFE 0xFFFE 0x554A 0x963F 0x57C3 0x6328 0x54CE 0x5509 \
+ 0x54C0 0x7691 0x764C 0x853C 0x77EE 0x827E 0x788D 0x7231 \
+ 0x9698 0x978D 0x6C28 0x5B89 0x4FFA 0x6309 0x6697 0x5CB8 \
+ 0x80FA 0x6848 0x80AE 0x6602 0x76CE 0x51F9 0x6556 0x71AC \
+ 0x7FF1 0x8884 0x50B2 0x5965 0x61CA 0x6FB3 0x82AD 0x634C \
+ 0x6252 0x53ED 0x5427 0x7B06 0x516B 0x75A4 0x5DF4 0x62D4 \
+ 0x8DCB 0x9776 0x628A 0x8019 0x575D 0x9738 0x7F62 0x7238 \
+ 0x767D 0x67CF 0x767E 0x6446 0x4F70 0x8D25 0x62DC 0x7A17 \
+ 0x6591 0x73ED 0x642C 0x6273 0x822C 0x9881 0x677F 0x7248 \
+ 0x626E 0x62CC 0x4F34 0x74E3 0x534A 0x529E 0x7ECA 0x90A6 \
+ 0x5E2E 0x6886 0x699C 0x8180 0x7ED1 0x68D2 0x78C5 0x868C \
+ 0x9551 0x508D 0x8C24 0x82DE 0x80DE 0x5305 0x8912 0x5265 \
+ 0x8584 0x96F9 0x4FDD 0x5821 0x9971 0x5B9D 0x62B1 0x62A5 \
+ 0x66B4 0x8C79 0x9C8D 0x7206 0x676F 0x7891 0x60B2 0x5351 \
+ 0x5317 0x8F88 0x80CC 0x8D1D 0x94A1 0x500D 0x72C8 0x5907 \
+ 0x60EB 0x7119 0x88AB 0x5954 0x82EF 0x672C 0x7B28 0x5D29
+07 0x7EF7 0x752D 0x6CF5 0x8E66 0x8FF8 0x903C 0x9F3B 0x6BD4 \
+ 0x9119 0x7B14 0x5F7C 0x78A7 0x84D6 0x853D 0x6BD5 0x6BD9 \
+ 0x6BD6 0x5E01 0x5E87 0x75F9 0x95ED 0x655D 0x5F0A 0x5FC5 \
+ 0x8F9F 0x58C1 0x81C2 0x907F 0x965B 0x97AD 0x8FB9 0x7F16 \
+ 0x8D2C 0x6241 0x4FBF 0x53D8 0x535E 0x8FA8 0x8FA9 0x8FAB \
+ 0x904D 0x6807 0x5F6A 0x8198 0x8868 0x9CD6 0x618B 0x522B \
+ 0x762A 0x5F6C 0x658C 0x6FD2 0x6EE8 0x5BBE 0x6448 0x5175 \
+ 0x51B0 0x67C4 0x4E19 0x79C9 0x997C 0x70B3 0x75C5 0x5E76 \
+ 0x73BB 0x83E0 0x64AD 0x62E8 0x94B5 0x6CE2 0x535A 0x52C3 \
+ 0x640F 0x94C2 0x7B94 0x4F2F 0x5E1B 0x8236 0x8116 0x818A \
+ 0x6E24 0x6CCA 0x9A73 0x6355 0x535C 0x54FA 0x8865 0x57E0 \
+ 0x4E0D 0x5E03 0x6B65 0x7C3F 0x90E8 0x6016 0x64E6 0x731C \
+ 0x88C1 0x6750 0x624D 0x8D22 0x776C 0x8E29 0x91C7 0x5F69 \
+ 0x83DC 0x8521 0x9910 0x53C2 0x8695 0x6B8B 0x60ED 0x60E8 \
+ 0x707F 0x82CD 0x8231 0x4ED3 0x6CA7 0x85CF 0x64CD 0x7CD9 \
+ 0x69FD 0x66F9 0x8349 0x5395 0x7B56 0x4FA7 0x518C 0x6D4B \
+ 0x5C42 0x8E6D 0x63D2 0x53C9 0x832C 0x8336 0x67E5 0x78B4 \
+ 0x643D 0x5BDF 0x5C94 0x5DEE 0x8BE7 0x62C6 0x67F4 0x8C7A \
+ 0x6400 0x63BA 0x8749 0x998B 0x8C17 0x7F20 0x94F2 0x4EA7 \
+ 0x9610 0x98A4 0x660C 0x7316 0x573A 0x5C1D 0x5E38 0x957F \
+ 0x507F 0x80A0 0x5382 0x655E 0x7545 0x5531 0x5021 0x8D85 \
+ 0x6284 0x949E 0x671D 0x5632 0x6F6E 0x5DE2 0x5435 0x7092 \
+ 0x8F66 0x626F 0x64A4 0x63A3 0x5F7B 0x6F88 0x90F4 0x81E3 \
+ 0x8FB0 0x5C18 0x6668 0x5FF1 0x6C89 0x9648 0x8D81 0x886C \
+ 0x6491 0x79F0 0x57CE 0x6A59 0x6210 0x5448 0x4E58 0x7A0B \
+ 0x60E9 0x6F84 0x8BDA 0x627F 0x901E 0x9A8B 0x79E4 0x5403 \
+ 0x75F4 0x6301 0x5319 0x6C60 0x8FDF 0x5F1B 0x9A70 0x803B \
+ 0x9F7F 0x4F88 0x5C3A 0x8D64 0x7FC5 0x65A5 0x70BD 0x5145 \
+ 0x51B2 0x866B 0x5D07 0x5BA0 0x62BD 0x916C 0x7574 0x8E0C \
+ 0x7A20 0x6101 0x7B79 0x4EC7 0x7EF8 0x7785 0x4E11 0x81ED \
+ 0x521D 0x51FA 0x6A71 0x53A8 0x8E87 0x9504 0x96CF 0x6EC1 \
+ 0x9664 0x695A 0x7840 0x50A8 0x77D7 0x6410 0x89E6 0x5904
+08 0x63E3 0x5DDD 0x7A7F 0x693D 0x4F20 0x8239 0x5598 0x4E32 \
+ 0x75AE 0x7A97 0x5E62 0x5E8A 0x95EF 0x521B 0x5439 0x708A \
+ 0x6376 0x9524 0x5782 0x6625 0x693F 0x9187 0x5507 0x6DF3 \
+ 0x7EAF 0x8822 0x6233 0x7EF0 0x75B5 0x8328 0x78C1 0x96CC \
+ 0x8F9E 0x6148 0x74F7 0x8BCD 0x6B64 0x523A 0x8D50 0x6B21 \
+ 0x806A 0x8471 0x56F1 0x5306 0x4ECE 0x4E1B 0x51D1 0x7C97 \
+ 0x918B 0x7C07 0x4FC3 0x8E7F 0x7BE1 0x7A9C 0x6467 0x5D14 \
+ 0x50AC 0x8106 0x7601 0x7CB9 0x6DEC 0x7FE0 0x6751 0x5B58 \
+ 0x5BF8 0x78CB 0x64AE 0x6413 0x63AA 0x632B 0x9519 0x642D \
+ 0x8FBE 0x7B54 0x7629 0x6253 0x5927 0x5446 0x6B79 0x50A3 \
+ 0x6234 0x5E26 0x6B86 0x4EE3 0x8D37 0x888B 0x5F85 0x902E \
+ 0x6020 0x803D 0x62C5 0x4E39 0x5355 0x90F8 0x63B8 0x80C6 \
+ 0x65E6 0x6C2E 0x4F46 0x60EE 0x6DE1 0x8BDE 0x5F39 0x86CB \
+ 0x5F53 0x6321 0x515A 0x8361 0x6863 0x5200 0x6363 0x8E48 \
+ 0x5012 0x5C9B 0x7977 0x5BFC 0x5230 0x7A3B 0x60BC 0x9053 \
+ 0x76D7 0x5FB7 0x5F97 0x7684 0x8E6C 0x706F 0x767B 0x7B49 \
+ 0x77AA 0x51F3 0x9093 0x5824 0x4F4E 0x6EF4 0x8FEA 0x654C \
+ 0x7B1B 0x72C4 0x6DA4 0x7FDF 0x5AE1 0x62B5 0x5E95 0x5730 \
+ 0x8482 0x7B2C 0x5E1D 0x5F1F 0x9012 0x7F14 0x98A0 0x6382 \
+ 0x6EC7 0x7898 0x70B9 0x5178 0x975B 0x57AB 0x7535 0x4F43 \
+ 0x7538 0x5E97 0x60E6 0x5960 0x6DC0 0x6BBF 0x7889 0x53FC \
+ 0x96D5 0x51CB 0x5201 0x6389 0x540A 0x9493 0x8C03 0x8DCC \
+ 0x7239 0x789F 0x8776 0x8FED 0x8C0D 0x53E0 0x4E01 0x76EF \
+ 0x53EE 0x9489 0x9876 0x9F0E 0x952D 0x5B9A 0x8BA2 0x4E22 \
+ 0x4E1C 0x51AC 0x8463 0x61C2 0x52A8 0x680B 0x4F97 0x606B \
+ 0x51BB 0x6D1E 0x515C 0x6296 0x6597 0x9661 0x8C46 0x9017 \
+ 0x75D8 0x90FD 0x7763 0x6BD2 0x728A 0x72EC 0x8BFB 0x5835 \
+ 0x7779 0x8D4C 0x675C 0x9540 0x809A 0x5EA6 0x6E21 0x5992 \
+ 0x7AEF 0x77ED 0x953B 0x6BB5 0x65AD 0x7F0E 0x5806 0x5151 \
+ 0x961F 0x5BF9 0x58A9 0x5428 0x8E72 0x6566 0x987F 0x56E4 \
+ 0x949D 0x76FE 0x9041 0x6387 0x54C6 0x591A 0x593A 0x579B \
+ 0x8EB2 0x6735 0x8DFA 0x8235 0x5241 0x60F0 0x5815 0x86FE
+09 0x5CE8 0x9E45 0x4FC4 0x989D 0x8BB9 0x5A25 0x6076 0x5384 \
+ 0x627C 0x904F 0x9102 0x997F 0x6069 0x800C 0x513F 0x8033 \
+ 0x5C14 0x9975 0x6D31 0x4E8C 0x8D30 0x53D1 0x7F5A 0x7B4F \
+ 0x4F10 0x4E4F 0x9600 0x6CD5 0x73D0 0x85E9 0x5E06 0x756A \
+ 0x7FFB 0x6A0A 0x77FE 0x9492 0x7E41 0x51E1 0x70E6 0x53CD \
+ 0x8FD4 0x8303 0x8D29 0x72AF 0x996D 0x6CDB 0x574A 0x82B3 \
+ 0x65B9 0x80AA 0x623F 0x9632 0x59A8 0x4EFF 0x8BBF 0x7EBA \
+ 0x653E 0x83F2 0x975E 0x5561 0x98DE 0x80A5 0x532A 0x8BFD \
+ 0x5420 0x80BA 0x5E9F 0x6CB8 0x8D39 0x82AC 0x915A 0x5429 \
+ 0x6C1B 0x5206 0x7EB7 0x575F 0x711A 0x6C7E 0x7C89 0x594B \
+ 0x4EFD 0x5FFF 0x6124 0x7CAA 0x4E30 0x5C01 0x67AB 0x8702 \
+ 0x5CF0 0x950B 0x98CE 0x75AF 0x70FD 0x9022 0x51AF 0x7F1D \
+ 0x8BBD 0x5949 0x51E4 0x4F5B 0x5426 0x592B 0x6577 0x80A4 \
+ 0x5B75 0x6276 0x62C2 0x8F90 0x5E45 0x6C1F 0x7B26 0x4F0F \
+ 0x4FD8 0x670D 0x6D6E 0x6DAA 0x798F 0x88B1 0x5F17 0x752B \
+ 0x629A 0x8F85 0x4FEF 0x91DC 0x65A7 0x812F 0x8151 0x5E9C \
+ 0x8150 0x8D74 0x526F 0x8986 0x8D4B 0x590D 0x5085 0x4ED8 \
+ 0x961C 0x7236 0x8179 0x8D1F 0x5BCC 0x8BA3 0x9644 0x5987 \
+ 0x7F1A 0x5490 0x5676 0x560E 0x8BE5 0x6539 0x6982 0x9499 \
+ 0x76D6 0x6E89 0x5E72 0x7518 0x6746 0x67D1 0x7AFF 0x809D \
+ 0x8D76 0x611F 0x79C6 0x6562 0x8D63 0x5188 0x521A 0x94A2 \
+ 0x7F38 0x809B 0x7EB2 0x5C97 0x6E2F 0x6760 0x7BD9 0x768B \
+ 0x9AD8 0x818F 0x7F94 0x7CD5 0x641E 0x9550 0x7A3F 0x544A \
+ 0x54E5 0x6B4C 0x6401 0x6208 0x9E3D 0x80F3 0x7599 0x5272 \
+ 0x9769 0x845B 0x683C 0x86E4 0x9601 0x9694 0x94EC 0x4E2A \
+ 0x5404 0x7ED9 0x6839 0x8DDF 0x8015 0x66F4 0x5E9A 0x7FB9 \
+ 0x57C2 0x803F 0x6897 0x5DE5 0x653B 0x529F 0x606D 0x9F9A \
+ 0x4F9B 0x8EAC 0x516C 0x5BAB 0x5F13 0x5DE9 0x6C5E 0x62F1 \
+ 0x8D21 0x5171 0x94A9 0x52FE 0x6C9F 0x82DF 0x72D7 0x57A2 \
+ 0x6784 0x8D2D 0x591F 0x8F9C 0x83C7 0x5495 0x7B8D 0x4F30 \
+ 0x6CBD 0x5B64 0x59D1 0x9F13 0x53E4 0x86CA 0x9AA8 0x8C37 \
+ 0x80A1 0x6545 0x987E 0x56FA 0x96C7 0x522E 0x74DC 0x5250
+x1 0x0010_0x0030 0x1010_0x1030 0xe000 \
+ 0xA0: 0x1000 0x2000
+
+# eof
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/genhashcheck.py b/Build/source/texk/dvisvgm/dvisvgm-src/tests/genhashcheck.py
new file mode 100755
index 00000000000..bc93ef064f5
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/genhashcheck.py
@@ -0,0 +1,71 @@
+#!/usr/bin/python
+# This file is part of the dvisvgm package and published under the
+# terms of the GNU General Public License version 3 or later.
+# See file COPYING for further details.
+# Copyright (C) 2016-2017 Martin Gieseking <martin.gieseking@uos.de>
+
+import re
+import sys
+
+def extract_hashes (fname):
+ with open(fname) as f:
+ lines = f.readlines()
+ found = False
+ for line in lines:
+ if ' hash2unicode = {{\n' in line:
+ found = True
+ elif found:
+ match = re.search(r'^\s*{(0x[0-9a-f]{8}),\s*0x[0-9a-f]{4}}, //\s*(.+)\s*$', line)
+ if match:
+ print '\t{%s, "%s"},' % (match.group(1), match.group(2))
+ else:
+ found = False
+
+if (len(sys.argv) < 2):
+ sys.exit(1)
+
+print """\
+#include <xxhash.h>
+#include <iomanip>
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+struct NameHash {
+ unsigned hash;
+ string name;
+} nameHashes[] = {
+"""
+extract_hashes(sys.argv[1])
+print """\
+};
+
+int main () {
+ unsigned prev_hash=0;
+ size_t size = sizeof(nameHashes)/sizeof(NameHash);
+ if (size == 0) {
+ cout << "hash table is empty\\n";
+ return 1;
+ }
+ for (unsigned i=0; i < size; i++) {
+ const string &name = nameHashes[i].name;
+ const unsigned hash = nameHashes[i].hash;
+ if (XXH32(&name[0], name.length(), 0) != hash) {
+ cout << "hash of '" << name << "' doesn't match\\n";
+ return 1;
+ }
+ if (hash < prev_hash) {
+ cout << "misplaced hash value " << hex << setw(8) << setfill('0') << hash << "\\n";
+ return 1;
+ }
+ if (hash == prev_hash) {
+ cout << "colliding hash values " << hex << setw(8) << setfill('0') << hash << "\\n";
+ return 1;
+ }
+ prev_hash = hash;
+ }
+ cout << "hash check passed\\n";
+ return 0;
+}
+"""
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/normalize.xsl b/Build/source/texk/dvisvgm/dvisvgm-src/tests/normalize.xsl
new file mode 100644
index 00000000000..49f91791364
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/normalize.xsl
@@ -0,0 +1,135 @@
+<?xml version="1.0"?>
+<!-- *********************************************************************
+** Stylesheet to rearrange font-/path-elements in an SVG file. **
+** It's part of the dvisvgm package. **
+** Copyright (C) 2009-2017 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program 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 General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+** **
+** The code generated by this script is also licensed under the terms **
+** of the GNU general public license version 3 or later. **
+***********************************************************************-->
+<xsl:stylesheet version="1.0"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:str="http://exslt.org/strings"
+ xmlns:mg="my-namespace"
+ extension-element-prefixes="exsl str"
+ exclude-result-prefixes="svg xlink exsl str mg">
+
+ <xsl:key name="path-by-id" match="/svg:defs/svg:path" use="@id"/>
+
+
+ <xsl:variable name="styles-rtf">
+ <xsl:for-each select="str:tokenize(/*/svg:style[@type='text/css'], '&#10;')">
+ <xsl:sort select="substring-after(., ' ')"/>
+ <mg:style new-id="f{position()}" id="{substring-before(substring-after(., '.'), ' ')}">
+ <xsl:value-of select="substring-after(., ' ')"/>
+ </mg:style>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="styles" select="exsl:node-set($styles-rtf)/mg:style"/>
+
+ <xsl:variable name="num-paths" select="count(/*/svg:defs/svg:path)"/>
+
+ <xsl:variable name="defs-rtf">
+ <xsl:for-each select="/*/svg:defs/svg:path">
+ <xsl:sort select="@d"/>
+ <mg:path id="{@id}" new-id="g{position()}"/>
+ </xsl:for-each>
+ <xsl:for-each select="/*/svg:defs/svg:use">
+ <xsl:sort select="concat(key('path-by-id', substring(@xlink:href, 2))/@d, @transform)"/>
+ <mg:use id="{@id}" new-id="g{position()+$num-paths}"/>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="defs" select="exsl:node-set($defs-rtf)"/>
+
+
+ <xsl:template match="*|@*">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+
+
+ <xsl:template match="svg:defs[svg:path]">
+ <xsl:copy>
+ <xsl:apply-templates select="svg:path">
+ <xsl:sort select="@d"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="svg:use">
+ <xsl:sort select="$defs/mg:use[@id=current()/@id]/@new-id"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+ </xsl:template>
+
+
+ <xsl:template match="svg:defs[svg:font]">
+ <xsl:copy>
+ <xsl:apply-templates>
+ <xsl:sort select="@id"/>
+ </xsl:apply-templates>
+ </xsl:copy>
+ </xsl:template>
+
+
+ <xsl:template match="svg:defs/svg:path">
+ <path id="{$defs/mg:path[@id=current()/@id]/@new-id}" d="{@d}"/>
+ </xsl:template>
+
+
+ <xsl:template match="svg:defs/text()"/>
+
+
+ <xsl:template match="svg:use">
+ <xsl:variable name="href" select="substring(@xlink:href, 2)"/>
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:if test="ancestor::svg:defs">
+ <xsl:attribute name="id">
+ <xsl:value-of select="$defs/mg:use[@id=current()/@id]/@new-id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="xlink:href">
+ <xsl:value-of select="concat('#', $defs/*[@id=$href]/@new-id)"/>
+ </xsl:attribute>
+ </xsl:copy>
+ </xsl:template>
+
+
+ <xsl:template match="svg:style[@type='text/css']">
+ <style type="text/css">
+ <xsl:for-each select="$styles">
+ <xsl:value-of select="concat('text.f', position(), ' ', ., '&#10;')"/>
+ </xsl:for-each>
+ </style>
+ </xsl:template>
+
+
+ <xsl:template match="svg:text">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:attribute name="class">
+ <xsl:value-of select="$styles[@id=current()/@class]/@new-id"/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+</xsl:stylesheet>
+